Built motion from commit 0eeef7dd.|2.5.34
authorAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 2 Sep 2021 13:18:23 +0000 (15:18 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 2 Sep 2021 13:18:23 +0000 (15:18 +0200)
1252 files changed:
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/dashboards/i18n/en.json
public/app/main/apps/dashboards/i18n/it.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/cs.json
public/app/main/apps/staff/i18n/da.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/staff/i18n/en.json
public/app/main/apps/staff/i18n/es.json
public/app/main/apps/staff/i18n/et.json
public/app/main/apps/staff/i18n/fa.json
public/app/main/apps/staff/i18n/fi.json
public/app/main/apps/staff/i18n/fr.json
public/app/main/apps/staff/i18n/he.json
public/app/main/apps/staff/i18n/hi.json
public/app/main/apps/staff/i18n/id.json
public/app/main/apps/staff/i18n/it.json
public/app/main/apps/staff/i18n/ja.json
public/app/main/apps/staff/i18n/lt.json
public/app/main/apps/staff/i18n/lv.json
public/app/main/apps/staff/i18n/nl.json
public/app/main/apps/staff/i18n/no.json
public/app/main/apps/staff/i18n/pl.json
public/app/main/apps/staff/i18n/pt-BR.json
public/app/main/apps/staff/i18n/pt-PT.json
public/app/main/apps/staff/i18n/ru.json
public/app/main/apps/staff/i18n/sv.json
public/app/main/apps/staff/i18n/tr.json
public/app/main/apps/staff/i18n/zh-CN.json
public/app/main/apps/staff/i18n/zh-TW.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/de.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.e4446350.js [moved from public/scripts/app.091983fd.js with 52% similarity]
public/styles/app.0b303223.css [moved from public/styles/app.287b5956.css with 71% 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/realtime/realtime.model.js [deleted file]
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/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/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/seedDB/voiceExtensions.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.33.js
server/migrations/2.5.34.js [new file with mode: 0644]
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 7726625..1dda08c 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.33",
+  "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-01T07:24:18.811Z",
+    "time": "2021-09-02T13:12:15.106Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index ca3902a..2e0c7b5 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.33",
+  "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-01T07:24:18.811Z",
+    "time": "2021-09-02T13:12:15.106Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 2bfed03..225e85b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.33",
+  "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": {
@@ -35,7 +35,7 @@
   "license": "EULA",
   "scripts": {
     "start": "nodemon server/app.js",
-    "js-beautify": "js-beautify `node -p \"require('glob').sync('./**/*.{js,html}', { nodir: true, ignore: ['./node_modules/**', './client/bower_components/**', './bower_components/**', './client/assets/**', './snippet/**', './dist/**', './.tmp/**'] }).join('\\n')\"`",
+    "js-beautify": "js-beautify `node -p \"require('glob').sync('./**/*.{js,html}', { nodir: true, ignore: ['./node_modules/**', './client/bower_components/**', './bower_components/**', './client/assets/**', './snippet/**', './dist/**', './.tmp/**', './server/files/**'] }).join('\\n')\"`",
     "eslint:check": "eslint .",
     "eslint:fix": "eslint --fix .",
     "prettier:check": "prettier --check './**/*'",
@@ -56,8 +56,8 @@
     "connect-timeout": "1.9.0",
     "cookie-parser": "1.4.5",
     "cors": "2.8.5",
-    "crypto-js": "3.1.9-1",
     "cron-job-manager": "1.0.7",
+    "crypto-js": "3.1.9-1",
     "desk.js": "0.1.4",
     "dialogflow": "0.8.2",
     "ejs": "2.7.4",
index 53a27fb..5c4734e 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Ihr Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-mail Adresse",
+    "TITLE": "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 Kennworts wurde an Ihre Adresse gesendet!",
-    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
+    "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",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
+      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
+      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
     }
   }
 }
index c090dfa..bced170 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Melden Sie sich bei Ihrem Konto an",
+    "TITLE": "Bitte mit Ihrem Konto anmelden",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Erinnere Dich an Mich",
+    "REMEMBER_ME": "Anmeldedaten merken",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "LOG IN",
+    "LOG_IN": "ANMELDEN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Melden Sie sich mit Google",
-    "WITH_FACEBOOK": "Mit Facebook anmelden",
+    "WITH_GOOGLE": "Anmeldung mit Google",
+    "WITH_FACEBOOK": "Anmeldung mit Facebook",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
+    "CREATE_ACCOUNT": "Konto erstellen",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Stornieren",
-    "SELECT": "Wählen",
+    "CANCEL": "Abbrechen",
+    "SELECT": "Auswählen",
     "TELEPHONES": "Telefone"
   }
 }
index e60162b..e6b577a 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
+      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Betreiber",
+    "OPERATOR": "Operator",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
+    "LIMITED_RESULT": "Ergebins begrenzt",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Bestellung von",
+    "ORDER_BY": "Sortieren nach",
     "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": "Löschen extrahierte Berichte",
+    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
+    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 4bc9896..02f4f10 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl von Malen pro Interaktion",
+    "TIMES": "Anzahl der Zeiten pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
+    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
+    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Key",
+    "KEY": "Schlüssel",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtentaste überspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
-    "NONE": "Keine",
+    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
+    "NONE": "Nichts",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
+    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
     "SKIPUNMANAGED": "Nachricht überspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Website-Script",
+    "WEBSITESCRIPT": "Webseiten-Skript",
     "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": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
+    "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Nachricht schließen",
-    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
+    "CLOSINGMESSAGE": "Abschluss Nachricht",
+    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Echte Priorität",
+    "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "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",
+      "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}} ",
       "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": "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",
+      "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",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "KEY_REQUIRED": "Pflichtfeld",
-      "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",
+      "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}} ",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "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",
+      "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",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "TAG_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "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",
+    "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",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Maus über",
+    "MOUSEOVER": "Mouse-Over",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Wählschalter",
+    "SELECTOR": "Selektion",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_AGENT": "Agenten bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Bis",
-    "DOWN": "Unten",
-    "COLLAPSE": "Zusammenklappen",
-    "PROACTIVEACTIONS": "Proaktive Aktionen",
-    "DISPOSITIONS": "Dispositionen",
+    "UP": "Nach Oben",
+    "DOWN": "Nach Unten",
+    "COLLAPSE": "Einklappen",
+    "PROACTIVEACTIONS": "Proaktive Anfragen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Aussehen",
+    "APPEARANCE": "Darstellung",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Tastenfarbe",
+    "BUTTONCOLOR": "Buttonfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "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",
+    "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",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
-    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
+    "MESSAGE_TITLE": "Nachricht Titel",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
+    "ENQUIRY_BUTTON": "Anfrage-Button",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Bewertung Senden Tasten-Text",
-    "RATING_SKIP": "Bewertung Überspringen Tasten-Text",
+    "RATING_SEND": "Button Bewertung senden",
+    "RATING_SKIP": "Button Bewertung überspringen",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktive",
+    "PROACTIVE": "Proaktiv",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schliessen",
+    "CLOSE": "Schließen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbettung",
+    "EMBEDDING": "Einbetten",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "HELP": {
-      "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",
+      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
+      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
+      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
       "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": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
+      "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "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",
+      "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",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Repräsentiert die Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "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": "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"
+      "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
+      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Dispositionen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
-    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
+    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
-    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
+    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Abgerundet",
-    "SQUARED": "Quadratisch",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ROUNDED": "Rundes Design",
+    "SQUARED": "Eckiges Design",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "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": "Öffnen",
-    "OPEN": "Öffnen",
+    "OPENED": "Geöffnet",
+    "OPEN": "Offen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "ALL": "Alles",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Wählen Sie eine Website",
+    "SELECTED_WEBSITE": "Ausgewählte Webseite",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Wählen Sie eine Website",
+    "SELECT_WEBSITE": "Webseite auswählen",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Wartetitel",
-    "WAITINGMESSAGE": "Wartende Nachricht",
+    "WAITINGTITLE": "Titel während Warten",
+    "WAITINGMESSAGE": "Wartenachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Pausiert",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "WRITING": "Schreiben",
+    "WAITING": "Wartezustand",
+    "WRITING": "am Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Openchannel",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Interne",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "VOICE": "Sprache",
+    "IN_USE": "In Verwendung",
+    "VOICE": "Anrufe",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
+    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agent Avatar",
-    "SPYINTERACTION": "Spion",
+    "AGENTAVATAR": "Agenten-Avatar",
+    "SPYINTERACTION": "Mitlesen",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Frage schließen",
+    "CLOSINGQUESTION": "Abschlussfrage",
     "WEBSCRIPT": "Webskript",
-    "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",
+    "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",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Ton",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
+    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer in Warteschlange",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
+    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CHATCANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Bot-Name",
+    "BOTNAME": "Botname",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teams Verband",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "ENABLESENDBUTTON": "Sendetaste aktivieren",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
+    "ENABLESENDBUTTON": "Senden-Button aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Key",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
-    "SUBJECT": "Gegenstand",
+    "SUBJECT": "Betreff",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "NOTE": "Hinweis",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "NOTE": "Notiz",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index da8b00a..3c27f23 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "Sprachwarteschlange ID",
-    "CAMPAIGNID": "Kampagne ID",
-    "STATE": "Zustand",
+    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
+    "CAMPAIGNID": "Kampagnen-ID",
+    "STATE": "Status",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper Final",
-    "HISTORY": "Hopper Geschichte",
+    "FINAL": "Hopper final",
+    "HISTORY": "Hopper historisch",
     "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 verfügbaren Artikel",
+    "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
+      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositionen",
-    "VOICEDISPOSITIONS": "Sprachdispositionen",
-    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
+    "DISPOSITION": "Qualifizierung",
+    "DISPOSITIONS": "Qualifizierungen",
+    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
+    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts 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": "Alle Löschen",
+    "DELETE_ALL": "Alles Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Fertig",
-    "SUCCESS": "Erfolgreich",
+    "FINISH": "Beenden",
+    "SUCCESS": "Erfolg",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "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",
+    "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",
     "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 Info",
-    "NONE": "Keine",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "NONE": "Nichts",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "Duplikate prüfen",
+    "CHECK_DUPLICATES": "auf Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV",
+    "UPLOAD_CSV": "Hochladen von CSV-Datei",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "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",
+    "SELECT_LIST": "Liste auswählen",
+    "SELECT_COMPANY": "Unternehmen auswählen",
+    "SELECT_TAGS": "Tags auswählen",
     "HELP": {
-      "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"
+      "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"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler exportieren",
+    "EXPORT_ERRORS": "Fehler-Log exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei aussuchen",
+    "SELECT_FILE": "Datei auswählen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenreise",
-    "SELECT_TAG": "Wählen Sie Tags aus",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "SELECT_TAG": "Tag auswählen",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftage",
+    "EXPIREDAY": "Ablauftag",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Codice Fiscale / VAT",
-    "RECALLME": "Ruf mich zurück",
+    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
+    "RECALLME": "Rückruf anfordern",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Zur Aktion klicken"
+    "CLICKTOACTION": "Klicken für Aktion"
   }
 }
index df9fabe..dbfb7c7 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Home",
+    "HOME": "Startseite",
     "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
+    "MAIL": "E-Mail",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Name des Betriebssystems",
-    "OS_VERSION": "Version des Betriebssystems",
+    "OS_NAME": "Betriebssystem Name",
+    "OS_VERSION": "Betriebssystem Version",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Ruf mich zurück",
-    "DROP_RATE": "Abgebrochene Anrufrate",
+    "RECALLME": "Rückruf anfordern",
+    "DROP_RATE": "Abbruchrate Anrufe",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufnahmen",
-    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
+    "RECORDINGS": "Aufzeichnungen",
+    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Entsorgen",
+    "DISPOSE": "Qualifizieren",
     "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": "Keine",
+    "NONE": "Nichts",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Spezielle",
+    "SPECIAL": "Speziell",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Verschieben",
+    "RESCHEDULE": "erneut Planen",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobile",
+    "MOBILE": "Mobilnummer",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprache",
+    "VOICE": "Sprachanrufe",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
-    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
-    "WAITING": "Anrufe in der Warteschlange",
+    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
+    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
+    "WAITING": "Anrufe in Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen",
-    "OUTBOUND_ANSWERED": "Angenommen",
-    "ABANDONED": "Verlassen",
-    "TOTAL_OFFERED": "Insgesamt",
+    "INBOUND_ANSWERED": "Angenommen eingehend",
+    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
+    "ABANDONED": "Abgebrochen",
+    "TOTAL_OFFERED": "Gesamt angeboten",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "ABANDON_RATE": "Verlassene Anrufrate",
-    "UNMANAGED": "Nicht verwaltete",
-    "TOTAL": "Insgesamt",
+    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
+    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
+    "ABANDON_RATE": "Abbruchrate",
+    "UNMANAGED": "Nicht bearbeitet",
+    "TOTAL": "Gesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "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"
+      "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"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "WELCOME_TO_MOTION": "Willkommen bei Motion",
+    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
+    "WELCOME_TO_MOTION": "Willkommen zu Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Contact Manager",
+    "CONTACTMANAGER": "Kontaktmanager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
+    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu laden",
+    "RELOAD": "Neu Laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "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 ",
+    "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) ",
     "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": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
+    "OF": "von",
+    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
-    "DISPOSITIONS": "Dispositionen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
-    "ACCEPT": "Akzeptieren",
+    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
+    "DISPOSITIONS": "Qualifizierungen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
+    "ACCEPT": "Annehmen",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Info",
+    "INFO": "Information",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
+    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
     "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": "Wählen Sie die Webseite",
-    "ALL": "Alle",
+    "SELECT_WEBSITE": "Webseite auswählen",
+    "ALL": "Alles",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Begonnen am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Zeigen",
+    "SHOW": "Anzeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Wählen Sie einen Benutzer",
+    "SELECT_USER": "Benutzer auswählen",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Ende am",
+    "END_AT": "Beendet 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": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
+    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein 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": "Sprachwarteschlangen filtern",
-    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
+    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
+    "LOADING_INTERACTION": "Interaktion wird geladen",
     "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": "Anruf",
+    "CALL_NUMBER": "Anrufen",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf richtig gespeichert",
-    "CALL_DISPOSED": "Anruf richtig entsorgt",
-    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
+    "CALL_SAVED": "Anruf erfolgreich gespeichert",
+    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
+    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "Von",
+    "CHANNEL_FROM": "von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Wählen Sie den Agenten aus",
+    "SELECT_AGENT": "Agenten auswählen",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
+    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Verlassen",
-    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
+    "ABANDONAT": "Abgebrochen",
+    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
+    "SELECT_CAMPAIGN": "Warteschlange auswählen",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
+    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
-    "CUSTOMER_JOURNEY": "Kundenreise",
+    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "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",
+    "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",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "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",
+    "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",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Angenommene Rate",
+    "VOICE_ANSWER_RATE": "Antwortrate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
+    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive 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_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_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Privat",
+    "PRIVATE": "Persönlich",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
+    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
     "VISIBILITY": "Sichtbarkeit",
-    "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",
+    "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",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "Id",
+    "ID": "ID",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "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?",
+    "CANCEL": "Abbrechen",
+    "DRAFT": "Entwurf speichern",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
     "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": "Buchhaltung",
+    "ACCOUNTINGDOC": "Abrechnungsdokumente",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alle",
-    "ALL_STATUS": "Alle",
-    "ALL_STEP": "Alle",
+    "ALL_PRODUCTS": "Alles",
+    "ALL_STATUS": "Alles",
+    "ALL_STEP": "Alles",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "BALANCE",
+    "BALANCE": "SALDO",
     "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": "Insgesamt",
+    "INVOICETOTAL": "Gesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Insgesamt",
+    "QUOTATIONTOTAL": "Gesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Insgesamt",
+    "QUOTATIONTOTALS": "Gesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
+    "WORKFLOW": "Arbeitsablauf wählen",
     "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 unter",
-    "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 innerhalb",
+    "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": "Wählen",
+    "CHOOSE": "Auswählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
+    "SELECT_QUEUE": "Warteschlange auswählen",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Wählen",
+    "SELECT": "Auswählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
+    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung 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 überprüfe deine Internetverbindung.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
-    "AGENT_PRESENCE": "Agentenpräsenz",
-    "SELECT_TEAM": "Team auswählen",
-    "AVAILABLE": "Erhältlich"
+    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
+    "AGENT_PRESENCE": "Bereitschaftsstatus",
+    "SELECT_TEAM": "Team auswählen"
   }
 }
index f68d524..1851427 100644 (file)
     "NO_RESULTS_AVAILABLE": "No results available",
     "AVAILABLE": "Available",
     "AGENT_PRESENCE": "Agent Presence",
-    "SELECT_TEAM": "Select Team"
+    "SELECT_TEAM": "Select Team",
+    "NOTIFICATIONS": {
+      "TRANSFER_AGENT_EXECUTED": "Transfer to agent successfully executed",
+      "TRANSFER_QUEUE_EXECUTED": "Transfer to queue successfully executed"
+    }
   }
 }
index 99ed915..18bc3b7 100644 (file)
     "LOST_CONNECTION": "Problemi di connettività di rete. Per favore controlla la tua connessione internet.",
     "AVAILABLE": "Disponibili",
     "AGENT_PRESENCE": "Presenza Agente",
-    "SELECT_TEAM": "Seleziona Team"
+    "SELECT_TEAM": "Seleziona Team",
+    "NOTIFICATIONS": {
+      "TRANSFER_AGENT_EXECUTED": "Trasferimento all'agente completato correttamente",
+      "TRANSFER_QUEUE_EXECUTED": "Trasferimento alla coda completato correttamente"
+    }
   }
 }
index 4b2f44e..fd1c6a8 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "Zu",
+    "TO": "An",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "Cc",
-    "REPLY": "Antwort",
+    "CC": "CC",
+    "REPLY": "Antworten",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Vorwärts",
+    "FORWARD": "Weiterleiten",
     "SUBJECT": "Betreff",
-    "BCC": "Bcc",
+    "BCC": "BCC",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "SEARCH_FOR_ANYONE": "Suche",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "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",
+      "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",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "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",
+      "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}}",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "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_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_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-Konten löschen",
-    "DISPOSITIONS": "Bestimmungen",
+    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Unterschrift",
+    "SIGNATURE": "Signatur",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Hafen",
+    "PORT": "Port",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "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",
+    "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",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "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",
+      "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",
       "FONT_SIZE": "Standard Schriftgröße",
-      "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"
+      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
+    "OF": "von",
+    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "DISPOSITION": "Disposition",
-    "GOTOIF": "GotoIf",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "DISPOSITION": "Qualifizierung",
+    "GOTOIF": "GoToIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Wechselwirkungen",
-    "STARTEDAT": "Gestartet am",
+    "INTERACTIONS": "Interaktionen",
+    "STARTEDAT": "Startdatum",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sichere",
+    "SECURE": "Sicher",
     "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": "Öffnen",
+    "OPENED": "Geöffnet",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
-    "VOICE": "Voice",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Channel öffnen",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Voller Name",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "TOTAL": "Insgesamt",
-    "IN": "In",
-    "OUT": "Aus",
+    "WAITING": "Wartezustand",
+    "TOTAL": "Gesamt",
+    "IN": "Eingehend",
+    "OUT": "Ausgehend",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Nie verifiziert",
+    "NEVER_VERIFIED": "Noch nicht verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
+    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
-    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
-    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
+    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
+    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
-    "INFO": "Info",
+    "IN_USE": "In Verwendung",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "INFO": "Information",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Spy",
+    "SPYINTERACTION": "Mithören",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis",
+    "NOTE": "Notiz",
     "TAGS": "Tags",
-    "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",
+    "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",
     "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": "Unterstatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "Löschen",
-    "EDIT_MAILSUBSTATUS": "Bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
-    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
-    "SEND_AS": "Senden Als",
-    "COMMAND": "Befehl",
+    "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",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "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",
+    "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",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DOWNLOAD": "Herunterladen",
-    "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",
+    "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",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index 235afae..97c6fe2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index e80fbe2..312c4ab 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 3bd5ad2..495ea1e 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index f150ff2..054564e 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. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index e80fbe2..312c4ab 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index a85d3cb..56d6276 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. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index e80fbe2..312c4ab 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index bf299e5..0202268 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index be3860b..b934012 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. 2 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 4 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index edbcd90..bbf8e7b 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. 2 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 4 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index c3cb181..d5a9a13 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 1170227..043d58e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
index c4fbe7e..86fb87a 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. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 68e0c53..212fdff 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 3fd4f57..190c600 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index 29c0869..a3774d1 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index e80fbe2..312c4ab 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 154c0b7..aad4d13 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. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 4 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 361f77e..0ab1946 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index d49bd20..0fbd637 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 4MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index d694357..2bda13c 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. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 4 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index e80fbe2..312c4ab 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index ac5383c..e93ddba 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 4MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 39efe9f..534d51d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 171327a..4085544 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 4MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 4646459..0c17adc 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. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 4MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index 18246b8..ac2f84c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 2956f0d..98dc201 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index 0ef1225..d002733 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "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",
+      "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",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "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",
+      "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",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "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",
+      "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}}",
       "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",
-      "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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
+      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_NOOP": "Bearbeiten Noop",
-    "EDIT_GOTOIF": "Bearbeiten Gotoif",
+    "EDIT_AGENT": "Agenteb bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten",
+    "EDIT_NOOP": "Noop bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "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",
+    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
+    "PENALTY": "Verzögerung",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
+    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
     "MOTIONADDRESS": "Motion Adresse",
-    "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.",
+    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
     "API": "API",
-    "DISPOSITIONS": "Bestimmungen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "SELECTED": "Ausgewählte",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "SELECTED": "Ausgewählt",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
-    "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",
+    "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",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "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",
+      "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",
       "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": "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"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Startdatum",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Öffnen",
+    "OPENED": "Geöffnet",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Wechselwirkungen",
+    "INTERACTIONS": "Interaktionen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
-    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
+    "DISPOSITION": "Qualifizierung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "SELECT_ACCOUNT": "Konto auswählen",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "INFO": "Info",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "INFO": "Information",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
+    "IN_USE": "In Verwendung",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "VOICE": "Voice",
+    "WAITING": "Wartezustand",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "SPYINTERACTION": "Mithören",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
     "DELETE": "Löschen",
-    "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",
+    "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",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Fortgeschritten",
+    "ADVANCED": "Erweitert",
     "PROXY": "Proxy",
-    "TOKEN": "Zeichen",
+    "TOKEN": "Token",
     "EDIT_TAG": "Tag bearbeiten",
-    "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",
+    "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",
     "SEND": "Senden",
-    "TO": "Zu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TO": "An",
+    "AGENTTRANSFER": "Weiterleitung Agent",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
-    "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "QUEUETRANSFER": "Weiterleitung Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "TRANSFER": "Weiterleitung",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "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",
+    "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",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommen Messsage",
+    "WELCOMEMESSAGE": "Willkommensnachricht",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Bot-Name",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
-    "LEXREGION": "Region",
-    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "BOTNAME": "Botname",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "LEXREGION": "Lex Region",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis"
+    "NOTE": "Notiz"
   }
 }
index 6254c0c..a276dc9 100644 (file)
       "TRANSPORT": "Set the default transports in order of preference",
       "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
       "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 160",
+      "SIPEXPIRES": "Default: 120",
       "SIPPORT": "Default: 5060",
       "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
       "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
index 2b4b23f..b52970f 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Opsætter transporter. Rækkefølgen bestemmer den primære standard transport.",
       "HOST": "Find den client - IP eller hostname. Hvis du vil have telefonen til at registrere sig, skal du bruge nøgleordet dynamisk i stedet for en IP adresse.",
       "NAT": "Ændrer adfærden hos stjerne for klienter bag en firewall.Hvis en kommasepareret muligheder er 'nej', Stjerne vil ignorere alle indstillinger og sæt nat=no.",
-      "SIPEXPIRES": "Standard: 160",
+      "SIPEXPIRES": "Standard: 120",
       "SIPPORT": "Standard: 5160",
       "TYPE": "Bestemmer SIP rolle i stjerne. Bruger: bruges til at autentificere indgående - Peer: til udgående opkald - Ven: dækker både beskrivelse af ovenstående.",
       "CHATCAPACITY": "Nul betyder ubegrænset.",
index 2e7ca6a..ee88755 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Ring im Einsatz",
+    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Um sidenav",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "SELECTED": "Ausgewählte",
+    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählt",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger 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": "Bedienplatz löschen",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "DELETE_AGENT": "Agenten löschen",
+    "EDIT_AGENT": "Agenten 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": "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",
+      "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",
       "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 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
+      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Voice",
+    "VOICE": "Anrufe",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Infos",
+    "PERSONAL_INFO": "Persönliche Informationen",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern.",
+    "CHANGE_AVATAR": "Avatar ändern",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Interne",
-    "TRANSPORT": "Verkehr",
+    "INTERNAL": "Intern",
+    "TRANSPORT": "Transport",
     "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. 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.",
+      "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",
       "SIPPORT": "Standardeinstellung: 5160",
-      "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",
+      "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",
       "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 Modul Tools verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "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)",
+      "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)",
       "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 Kennwort",
+    "NEW_PASSWORD": "Neues Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Passwort ändern",
-    "CHANGEPASSWORD_USER": "Passwort ändern",
-    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
-    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
+    "CHANGEPASSWORD_AGENT": "Agent",
+    "CHANGEPASSWORD_USER": "Nutzer",
+    "CHANGEPASSWORD_TELEPHONE": "Telefon",
+    "LOGININPAUSE": "Pause nach Anmelden",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "ChanSpy",
+    "CHANSPY": "Listen-In",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Chat Kapazität",
-    "MAILCAPACITY": "E-Kapazität",
-    "FAXCAPACITY": "Fax Kapazität",
-    "SMSCAPACITY": "Sms-Kapazität",
-    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
+    "CHATCAPACITY": "Kapazität Chats",
+    "MAILCAPACITY": "Kapazität E-Mail",
+    "FAXCAPACITY": "Kapazität Fax",
+    "SMSCAPACITY": "Kapazität SMSW",
+    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "\"Autom. Antwort\"",
+    "AUTOANSWER": "Auto-Antwort",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "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",
+    "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",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP läuft [sec]",
+    "SIPEXPIRES": "SIP-Ablaufdatum",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Strafe",
+    "PENALTY": "Verzögerung",
     "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": "Hinzufügen von Agenten zu einer Gruppe",
-    "EDIT_TEAM": "Team bearbeiten.",
+    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
+    "EDIT_TEAM": "Team bearbeiten",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefone",
-    "CALLERID": "Die Anrufer-ID",
-    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
+    "TELEPHONES": "Telefonnummern",
+    "CALLERID": "Anrufer-ID",
+    "ENABLERECORDING": "Aufzeichnung aktiv",
     "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": "Melden Sie Warteschlange",
+    "JOIN_QUEUE": "In Warteschlange beitreten",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "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",
+    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
+    "TEAMADD_AGENT": "Zum Team hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenruf",
+    "CALLGROUP": "Gruppenanruf",
     "PICKUPGROUP": "Übernahmegruppe",
-    "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",
+    "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",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "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",
+    "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",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Anzeigen Web Control",
+    "SHOWWEBCONTROL": "WebControl anzeigen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Während der Pause nicht stören",
-    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
-    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
-    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
+    "DND": "Nicht stören",
+    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
+    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
+    "AUTOANSWERDELAY": "Automatische Antwort nach",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
-    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
+    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
-    "SIP_WEBRTC": "Schluck",
-    "SETTINGS_WEBRTC": "die Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
+    "SIP_WEBRTC": "SIP/WebRTC",
+    "SETTINGS_WEBRTC": "Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "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",
+    "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",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
+    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
+    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
     "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 Faxwarteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
     "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 Sprachwarteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
     "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": "Faxwarteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-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": "Sprachwarteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Heißer Schreibtisch",
+    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Wechselnder Arbeitsplatz",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "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": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
+    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
+    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
-    "VIDEOSUPPORT": "Video-Unterstützung",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
+    "VIDEOSUPPORT": "Unterstützt Video",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "(Regenerieren",
+    "GENERATE": "Erneut generieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Löschen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
-    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
-    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
+    "REMOVE": "Entfernen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
+    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
+    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Regenerieren",
+    "REGENERATE": "Erneut generieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten 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": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
+    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
+    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
-    "VOICE_RECORDINGS": "Sprachaufnahmen"
+    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
+    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
   }
 }
index a3335ad..556f7a7 100644 (file)
       "TRANSPORT": "Set the default transports in order of preference",
       "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
       "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 160",
+      "SIPEXPIRES": "Default: 120",
       "SIPPORT": "Default: 5160",
       "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
       "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
index dca2a2c..42b1c9b 100644 (file)
@@ -14,7 +14,7 @@
       "NAT": "Cambia el comportamiento de Asterisk para clientes detrás de un firewall. Si alguna de las opciones separadas por comas es 'no', Asterisk ignorará otras configuraciones y configurará nat = no",
       "OPENCHANNELCAPACITY": "Número máximo de interacciones de canal simultáneas por agente (0 = ilimitado)",
       "PICKUPGROUP": "Los grupos en los que el agente puede capturar llamadas",
-      "SIPEXPIRES": "Valor predeterminado: 160",
+      "SIPEXPIRES": "Valor predeterminado: 120",
       "SIPPORT": "Por defecto: 5160",
       "SMSCAPACITY": "Número máximo de interacciones de canal simultáneas por agente (0 = ilimitado)",
       "TRANSPORT": "Establezca los transportes predeterminados en orden de preferencia",
index cf46397..0c1d40c 100644 (file)
       "TRANSPORT": "Set the default transports in order of preference",
       "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
       "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 160",
+      "SIPEXPIRES": "Default: 120",
       "SIPPORT": "Default: 5060",
       "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
       "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
index c616098..3b58309 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "تنظیم پیش فرض را در خلسه است. نظام حمل و نقل پیش فرض اولیه را تعیین می کند.",
       "HOST": "چطور موکل - پيدا کردن IP یا نام میزبان است. اگر می خواهید شماره تلفن خود را ثبت کرده و برای استفاده از واژه كليدى به جای آدرس IP میزبان پویا.",
       "NAT": "تغییرات در رفتار Asterisk برای مراجعان در پشت یک دیوار آتش است.اگر یکی از گزینه ها از جمله جدا شده است خیر، Asterisk تنظیمات دیگری را ناديده گرفته خواهد شد و 3-1=تنظیم خیر.",
-      "SIPEXPIRES": "فرض: 160",
+      "SIPEXPIRES": "فرض: 120",
       "SIPPORT": "فرض: 5160",
       "TYPE": "نقش تعيين كننده در داخل نوشيدني asterisk است. کاربر تایید اعتبار ورودی استفاده می شود: - برای تماس های خروجی کمبودى: دوست: - هر دو خصوصیات پوشش بالاتر است.",
       "CHATCAPACITY": "صفر به معناى نامحدود است.",
index 1c436cd..69b363b 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Aseta oletusarvoinen kuljetukset. Järjestys määrittää ensisijaisen oletus kuljetuksen ajaksi.",
       "HOST": "Miten asiakas - IP-osoite tai isäntänimi. Jos haluat, että puhelin rekisteröivät itsensä, käytä avainsanaa dynaaminen sen sijaan ovat IP-osoite.",
       "NAT": "Muuttaa käyttäytymistä tähti asiakkaille palomuurin takana.Jos jokin pilkulla erotettuja valinnat on \"ei\", tähti ohittaa kaikki muut asetukset ja määritä nat=no.",
-      "SIPEXPIRES": "Oletus: 160",
+      "SIPEXPIRES": "Oletus: 120",
       "SIPPORT": "Oletus: 5160",
       "TYPE": "Määrittää SIP-asema tähdellä. Käyttäjä: varmentamisessa käytettävät saapuneet - Peer: lähtevät puhelut - ystävä: kattaa molemmat ominaisuudet.",
       "CHATCAPACITY": "Nolla tarkoittaa rajaton.",
index 9c81aa9..ca9fb29 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Définir la valeur par défaut de transports. L'ordre détermine le transport par défaut.",
       "HOST": "Comment trouver le client - IP ou nom d'hôte. Si vous voulez que le téléphone s'inscrire lui-même, utilisez le mot-clé au lieu d'adresse IP dynamique.",
       "NAT": "Change le comportement de Asterisk pour les clients derrière un pare-feu.Si l'une des options séparées par des virgules est 'non', l'astérisque permet de ne pas tenir compte des autres paramètres et définissez le nat =no.",
-      "SIPEXPIRES": "Par défaut : 160",
+      "SIPEXPIRES": "Par défaut : 120",
       "SIPPORT": "Par défaut : 5160",
       "TYPE": "Détermine le rôle SIP au sein de Asterisk. Utilisateur : utilisé pour authentifier les - : par les pairs pour les appels sortants - AMI : couvre à la fois les caractéristiques de la ci-dessus.",
       "CHATCAPACITY": "0 signifie illimité.",
index 3a844d2..d01f90d 100644 (file)
       "TRANSPORT": "הגדר העברות ברירת מחדל לפי סדר העדיפות",
       "HOST": "איתור כתובת IP או שם מארח של הלקוח: כדי שהטלפון ירשום את עצמו, השתמש במילת המפתח 'דינמית' במקום ב'כתובת ה-IP של המארח'",
       "NAT": "משנה את ההתנהגות של Asterisk עבור לקוחות מאחורי חומת אש. אם אחת מהאפשרויות המופרדות בפסיקים היא 'לא', Asterisk יתעלם מכל ההגדרות האחרות ויחיל nat=no.",
-      "SIPEXPIRES": "ברירת מחדל: 160",
+      "SIPEXPIRES": "ברירת מחדל: 120",
       "SIPPORT": "ברירת מחדל: 5160",
       "TYPE": "קובע את תפקיד ה-SIP בעזרת Asterisk. משתמש: לאישור שיחות נכנסות – עמית: לשיחות יוצאות – חבר: כולל מאפיינים של שיחות נכנסות וגם יוצאות.",
       "CHATCAPACITY": "המספר המרבי של אינטראקציות ערוץ מקבילות לנציג (0=בלתי מוגבל)",
index e6ff165..f21b5cf 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "डिफ़ॉल्ट केपरिवहन सेट करें क्रम निर्धारण की प्राथमिक डिफ़ॉल्ट परिवहन।",
       "HOST": "ग्राहक को कैसे - IP होस्ट नाम या है। यदि आप चाहते हैं कि फ़ोन रजिस्\200dटर करने का उपयोग करें. IP होस्ट के बजाय गतिशील कीवर्ड",
       "NAT": "ग्राहकों के लिए तारांकन के व्यवहार को पीछे फ़ायरवॉल.यदि कोई अलग-अल्पविराम की विकल्प है 'नहीं', तारांकन परटिप्प ाी और स ९सी अन्य सेटिंग्स सेट आइप गीतांजलिश्री का तिरोहित=सं.",
-      "SIPEXPIRES": "डिफ़ॉल्ट: 160",
+      "SIPEXPIRES": "डिफ़ॉल्ट: 120",
       "SIPPORT": "डिफ़ॉल्ट: 5160",
       "TYPE": "रखावके कमरंद की भूमिका के तारांक लगा। उपयोगकर्ता को प्रमाणित करने के लिए प्रयोग किया :------- मित्र आउटगोइंग कॉल के लिए पीयर इनकमिंग कार्यनिष्पादनके विशेषताओं के ऊपर है।",
       "CHATCAPACITY": "असीमित अर्थ शून्य",
index 5a06270..5efd94d 100644 (file)
@@ -54,7 +54,7 @@
       "NAT": "Mengubah perilaku Asterisk untuk klien di belakang firewall. Jika salah satu opsi yang dipisahkan koma adalah 'tidak', Asterisk akan mengabaikan pengaturan lain dan mengatur nat = no",
       "OPENCHANNELCAPACITY": "Jumlah maksimum interaksi saluran bersamaan per agen (0 = tidak terbatas)",
       "PICKUPGROUP": "Grup tempat agen dapat menjawab panggilan",
-      "SIPEXPIRES": "Default: 160",
+      "SIPEXPIRES": "Default: 120",
       "SIPPORT": "Default: 5160",
       "SMSCAPACITY": "Jumlah maksimum interaksi saluran bersamaan per agen (0 = tidak terbatas)",
       "TRANSPORT": "Setel transport default sesuai urutan preferensi",
index db88c9f..111b886 100644 (file)
       "TRANSPORT": "Imposta i protocolli di default (saranno gestiti nell'ordine)",
       "HOST": "Come trovare il client - IP o nome host. Se si vuole che il telefono si registri autonomamente, usare la stringa 'dynamic' invece dell' IP dell'Host",
       "NAT": "Cambia il comportamento di asterisk per i client dietro un firewall. Se almeno una delle opzioni separate da virgola è 'no', Asterisk ignorerà tutte le altre e imposterà nat=no",
-      "SIPEXPIRES": "Default: 160",
+      "SIPEXPIRES": "Default: 120",
       "SIPPORT": "Default: 5160",
       "TYPE": "Determina il ruolo del SIP all'interno di asterisk. User: usato per identificare le chiamate in arrivo - Peer: per le chiamate in uscita - Friend: copre entrambe le caratteristiche di User e Peer",
       "CHATCAPACITY": "Inserire il numero massimo di interazioni concorrenti per il canale (0=illimitato)",
index b29c39b..d3fcbbc 100644 (file)
@@ -54,7 +54,7 @@
       "NAT": "ファイアウォールの内側にあるクライアントのAsteriskの動作を変更します。 カンマ区切りのオプションのいずれかが 'no'の場合、Asteriskは他の設定を無視し、nat = noを設定します。",
       "OPENCHANNELCAPACITY": "エージェントあたりの同時チャネルインタラクションの最大数(0 =無制限)",
       "PICKUPGROUP": "エージェントがコールに応答できるグループ",
-      "SIPEXPIRES": "デフォルト:160",
+      "SIPEXPIRES": "デフォルト:120",
       "SIPPORT": "デフォルト:5160",
       "SMSCAPACITY": "エージェントあたりを同時チャネルインタラクションの最大数(0 =無制限)",
       "TRANSPORT": "優先順位でデフォルト転送を設定します",
index 3cebfea..3c7408d 100644 (file)
       "TRANSPORT": "Nustatykite numatytuosius pernešimus pirmenybės tvarka",
       "HOST": "Kaip rasti klientą - IP arba pagrindinio kompiuterio vardas. Jei norite, kad telefonas pats užsiregistruotų, vietoj pagrindinio IP naudokite raktinį žodį „dinaminis“",
       "NAT": "Keičia „Asterisk“ klientų elgesį už ugniasienės. Jei kuri nors iš kableliais atskirtų parinkčių yra „ne“, „Asterisk“ ignoruos kitus parametrus ir nustatys nat = ne",
-      "SIPEXPIRES": "Numatytas: 160",
+      "SIPEXPIRES": "Numatytas: 120",
       "SIPPORT": "Numatytas: 5160",
       "TYPE": "Nustato SIP vaidmenį „Asterisk'e“. Vartotojas: naudojamas atpažinti įeinantiems - bendraamžis: išeinantiems skambučiams - draugas: apima abi pirmiau nurodytas charakteristikas",
       "CHATCAPACITY": "Didžiausias vienu metu veikiančių kanalų sąveikų skaičius vienam agentui (0 = neribotas)",
index 5ed9d5a..404cf61 100644 (file)
@@ -48,7 +48,7 @@
       "TRANSPORT": "Iestatiet noklusējuma transportēšanu pēc izvēles",
       "HOST": "Kā atrast klientu – IP vai resursdatora nosaukums. Ja vēlaties, lai tālrunis tiktu reģistrēts, izmantojiet atslēgvārdu dinamiku, nevis resursdatora IP",
       "NAT": "Maina \"Asterisk\" darbību klientiem aiz ugunsmūra. Ja kāda no opcijām, kas ir atdalītas ar komatiem, ir \"Nē\", \"Asterisk\" ignorēs citus iestatījumus un iestatīs nat = no",
-      "SIPEXPIRES": "Noklusējums: 160",
+      "SIPEXPIRES": "Noklusējums: 120",
       "SIPPORT": "Noklusējums: 5160",
       "TYPE": "Nosaka SIP lomu \"Asterisk\" ietvaros Lietotājs: izmanto, lai autentificētu ienākošo – Biedrs: izejošajiem zvaniem – Draugs: iekļauj abas iepriekš minētās īpašības",
       "CHATCAPACITY": "Maksimālais vienlaicīgu kanālu mijiedarbību skaits vienam aģentam (0 = neierobežots)",
index 166013e..835f03f 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Stel de standaard transporteert. De volgorde bepaalt de primaire standaard transport.",
       "HOST": "Hoe vind ik de client - IP of hostnaam. Als u wilt dat de telefoon aan te melden, gebruik het trefwoord dynamische in plaats van Host IP.",
       "NAT": "Verandert het gedrag van Asterisk voor cliënten achter een firewall.Indien een van de comma-separated opties is 'nee', sterretje negeert andere instellingen en stel nat=no.",
-      "SIPEXPIRES": "Standaard: 160",
+      "SIPEXPIRES": "Standaard: 120",
       "SIPPORT": "Standaard: 5160",
       "TYPE": "Bepaalt de SIP-rol binnen asterisk. Gebruiker: gebruikt ter verificatie van binnenkomend - Peer: voor uitgaande gesprekken - vriend: zowel kenmerken van het bovenstaande.",
       "CHATCAPACITY": "Nul betekent onbeperkt.",
index d37fedf..1e918f6 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Angi standard transporterer. Rekkefølgen bestemmer den primære standard transport.",
       "HOST": "Hvordan finne klienten - IP eller vertsnavnet. Hvis du vil at telefonen skal registrere seg, bruk nøkkelord dynamisk i stedet for Host IP.",
       "NAT": "Endrer oppførselen til stjerne for klienter bak en brannmur.Hvis noen av kommaseparert alternativer er 'Nei', stjerne vil ignorere andre innstillinger og sette nat=Nei.",
-      "SIPEXPIRES": "Standard: 160",
+      "SIPEXPIRES": "Standard: 120",
       "SIPPORT": "Standard: 5160",
       "TYPE": "Bestemmer SIP rolle innen stjerne. Bruker: brukes til å autentisere innkommende - Peer: for utgående anrop - venn: dekker både egenskapene til ovenfor.",
       "CHATCAPACITY": "Null betyr ubegrenset.",
index c280fa7..6ed21f7 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Ustawianie domyślnego transporty w kolejności preferencji",
       "HOST": "Jak znaleźć klienta - adres IP lub nazwa hosta. Jeśli chcesz telefon aby zarejestrować się, należy użyć słowa kluczowego dynamiczne zamiast IP hosta",
       "NAT": "Zmiany zachowań gwiazdka dla klientów za zaporą ogniową. Jeżeli którykolwiek z oddzielonych przecinkami opcji 'no', gwiazdka będzie ignorował pozostałych ustawień i ustawić nat=no",
-      "SIPEXPIRES": "Domyślnie: 160",
+      "SIPEXPIRES": "Domyślnie: 120",
       "SIPPORT": "Wartość domyślna: 5160",
       "TYPE": "Ustala SIP roli w gwiazdki. Użytkownik: używane do uwierzytelniania przychodzące - Peer: dla połączeń wychodzących - przyjaciela: obejmuje zarówno charakterystyki powyżej",
       "CHATCAPACITY": "Maksymalna liczba jednoczesnych kanałów interakcji na agenta (0=nieograniczona)",
index e6c4f9e..bf2c9d3 100644 (file)
       "TRANSPORT": "Definir os transportes padrão em ordem de preferência",
       "HOST": "Como encontrar o cliente - IP ou nome do host. Se você deseja que o telefone se registre, use a palavra-chave dynamic em vez de Host IP",
       "NAT": "Altera o comportamento do Asterisk para clientes por trás de um firewall. Se qualquer uma das opções separadas por vírgulas for 'no', o Asterisk irá ignorar outras configurações e definir nat = no",
-      "SIPEXPIRES": "Padrão: 160",
+      "SIPEXPIRES": "Padrão: 120",
       "SIPPORT": "Padrão: 5160",
       "TYPE": "Determina o papel do SIP no asterisco. Usuário: usado para autenticar entrada - Peer: para chamadas de saída - Amigo: abrange ambas as características do acima",
       "CHATCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
index 3a02917..44742f9 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Defina o padrão de transportes. A ordem determina o transporte primário padrão.",
       "HOST": "Como encontrar o cliente - O IP ou o nome do host. Se desejar que o telefone para se registrar, use a palavra-chave dinâmica em vez do host IP.",
       "NAT": "Altera o comportamento do asterisco para clientes atrás de um firewall.Se qualquer uma das opções separadas por vírgula é \"não\", asterisco será ignorar quaisquer outras configurações e defina nat=n°",
-      "SIPEXPIRES": "Padrão: 160",
+      "SIPEXPIRES": "Padrão: 120",
       "SIPPORT": "Padrão: 5160",
       "TYPE": "Determina o papel SIP dentro de asterisco. Usuário: usado para autenticar - Ponto de entrada: para chamadas de saída - amigo: abrange tanto as características do acima.",
       "CHATCAPACITY": "Zero significa ilimitado.",
index 001f06c..283239e 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Установить значение по умолчанию для транспорта. Порядок определяет основной транспортом по умолчанию.",
       "HOST": "Как найти клиента - IP или имя хоста. Если Вы хотите телефон для самого Регистра, используйте ключевое слово Dynamic вместо IP-адрес хоста.",
       "NAT": "Изменяет поведение звездочка для клиентов за брандмауэром.Если любое из разделенных запятыми параметров 'Нет', звездочка будет игнорировать любые другие параметры и настройки NAT=no.",
-      "SIPEXPIRES": "По умолчанию: 160",
+      "SIPEXPIRES": "По умолчанию: 120",
       "SIPPORT": "По умолчанию: 5160",
       "TYPE": "Определяет роль SIP в Asterisk. Пользователь: используется для проверки подлинности входящих - Одноранговые сети: для исходящих вызовов - друга: охватывает как характеристики выше.",
       "CHATCAPACITY": "Ноль означает неограниченное количество.",
index 5e9d150..42ed1e8 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Ställ in standard transporter. Avgör det primära förvalda transporter.",
       "HOST": "Hur klienten - IP eller värdnamn. Om du vill att telefonen ska registrera sig, använda nyckelordet dynamisk istället för Host IP.",
       "NAT": "Förändringar i beteendet hos Asterisk för beställare bakom en firewall.Om någon av komma-avskilde alternativ är \"nej\", Asterisk kommer att ignorera alla andra inställningar och ställa in nat=no.",
-      "SIPEXPIRES": "Standard: 160",
+      "SIPEXPIRES": "Standard: 120",
       "SIPPORT": "Standard: 5160",
       "TYPE": "Bestämmer SIP roll inom asterisk. Användare: används för att autentisera inkommande - Kisa: för utgående samtal - vän: omfattar både egenskaper hos ovan.",
       "CHATCAPACITY": "Noll betyder obegränsade.",
index 7d1e1b6..0b27de9 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "Varsayılan geciktirir. Sipariş belirler, birincil varsayılan taşıma.",
       "HOST": "Nasıl istemci - IP veya ana bilgisayar adı. Istiyorsanız, telefon kendini, dinamik anahtar yerine, Ana IP.",
       "NAT": "Değişiklikler, davranış, Yıldız istemciler için bir güvenlik duvarının arkasında.Herhangi bir virgülle ayrılmış seçenekleri 'hayır', Yıldız yok diğer ayarları ve nat=no.",
-      "SIPEXPIRES": "Varsayılan: 160",
+      "SIPEXPIRES": "Varsayılan: 120",
       "SIPPORT": "Varsayılan: 5160",
       "TYPE": "Belirler, SIP içinde yıldız. Kullanıcı: kimliğini doğrulamak için kullanılan gelen - Eşler: aramaları - Arkadaş: kapakları hem özellikleri.",
       "CHATCAPACITY": "Sıfır anlamına gelir sınırsız.",
index 715d7b8..dc853d6 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "设置缺省的传输。 该顺序确定主要的默认的传输。",
       "HOST": "如何找到客户端-服务器的 IP 或主机名。 如果您想要的手机本身注册、使用关键字动态而不是主机的 IP。",
       "NAT": "改变行为的星号后面的客户端的防火墙。 如果任何的以逗号分隔的-选项是 “不”、星号将会忽略任何其他设置和设置 nat =否。",
-      "SIPEXPIRES": "默认值: 160",
+      "SIPEXPIRES": "默认值: 120",
       "SIPPORT": "缺省值: 5160",
       "TYPE": "确定了 SIP 的作用范围内的星号。 用户名: 用于验证传入-同行: 呼出电话-朋友: 涵盖了这两个特点。",
       "CHATCAPACITY": "0 意味着无限的。",
index 18eb399..0e215f0 100644 (file)
@@ -93,7 +93,7 @@
       "TRANSPORT": "設定預設的傳輸。 醫令會決定主要預設傳輸。",
       "HOST": "如何找到用戶端 - IP 或主機名稱。 如果您想要將電話轉接至自己登錄 , 使用關鍵字動態而非主機的 IP 。",
       "NAT": "改變行為之星號的用戶端防火牆後面。如果有任何逗點分隔選項為「否」 , 星號將會略過所有其他設定值和設定 NAT = No ( 否 ) 。",
-      "SIPEXPIRES": "預設值 : 160",
+      "SIPEXPIRES": "預設值 : 120",
       "SIPPORT": "預設值 : 5160",
       "TYPE": "決定 SIP 角色星號。 使用者 : 用於驗證傳入 - 點對點式 : 撥出電話 - 朋友 : 涵蓋了這兩個特徵的以上。",
       "CHATCAPACITY": "0 表示沒有限制。",
index 6207bf0..d62768d 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Amtsleitungen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TRUNKS": "Trunks",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "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",
+      "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",
       "MONTHDAY_REQUIRED": "Tag des Monats ist 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",
+      "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",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "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"
+      "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"
     },
     "HOST": "Host",
-    "SECRET": "Geheimnis",
-    "DEFAULTUSER": "Default User",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Standardnutzer",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Amtsleitung hinzufügen",
+    "ADD_TRUNK": "Trunk hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
       "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 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.",
+      "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.",
       "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 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.",
+      "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.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "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).",
+      "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.",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "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)",
+      "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)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
+      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
       "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": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
       "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 gesendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
+      "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."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Löschen Sie Trunk",
+    "DELETE_TRUNK": "Trunk löschen",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Die Anrufer-ID",
+    "CALLERID": "Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "Mfv-Modus",
+    "DTMFMODE": "DTMF-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direkte Medien",
+    "DIRECTMEDIA": "Direct Media",
     "CALLCOUNTER": "Anrufzähler",
-    "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",
+    "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",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Hafen",
-    "TRANSPORT": "Verkehr",
+    "PORT": "Port",
+    "TRANSPORT": "Transport",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TAGS": "Tags",
-    "ADD_TAG": "Variable hinzufügen",
-    "EDIT_TAG": "Variable bearbeiten",
-    "DELETE_TAG": "Variable löschen",
+    "ADD_TAG": "Tag hinzufügen",
+    "EDIT_TAG": "Tag bearbeiten",
+    "DELETE_TAG": "Tag löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
+    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_CANNEDANSWER": "Testvorlage löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Ton bearbeiten",
-    "DELETE_SOUND": "Sound löschen",
-    "FINISH": "Fertig stellen",
+    "SOUNDS": "Audiodateien",
+    "EDIT_SOUND": "Audiodatei bearbeiten",
+    "DELETE_SOUND": "Audiodatei löschen",
+    "FINISH": "Abschließen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Auslöser bearbeiten",
-    "DELETE_TRIGGER": "Auslöser löschen",
+    "EDIT_TRIGGER": "Trigger bearbeiten",
+    "DELETE_TRIGGER": "Trigger löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automatisierungen",
-    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
+    "AUTOMATIONS": "Automation",
+    "EDIT_AUTOMATION": "Automation bearbeiten",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall für Löschen.",
+    "DELETE_INTERVAL": "Intervall löschen",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "Id",
+    "ID": "ID",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Werkzeuge",
+    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
+    "UPLOAD_SOUND": "Audiodatei hochladen",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
-    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
-    "ACTIONS": "Aktionen:",
+    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
+    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
+    "ACTIONS": "Aktionen",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe beschränken",
-    "OTHERFIELDS": "Andere Felder",
+    "CALL_LIMIT": "Anrufe limitieren",
+    "OTHERFIELDS": "Weitere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
+    "NEW_CANNEDANSWER": "Neue Textvorlage",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neue Leitung",
-    "FROM": "Von",
-    "TO": "Zu",
-    "WEEKDAY": "Woche Tag",
-    "MONTHDAY": "Monat Tag",
+    "NEW_TRUNK": "Neuer Trunk",
+    "FROM": "von",
+    "TO": "an",
+    "WEEKDAY": "Wochentag",
+    "MONTHDAY": "Monatstag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "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",
+    "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",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgang",
+    "OUTPUT": "Ausgabe",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Berichtsbereich",
+    "REPORTRANGE": "Bereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
+    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Woche Tage",
+    "WEEKDAYS": "Wochentage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Voice",
+    "VOICE": "Sprachanrufe",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Maßnahme",
+    "NEW_ACTION": "Neue Aktion",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Abgehende Routen",
-    "EQUALS": "Ist gleich",
-    "NOT_EQUALS": "Nicht gleich",
-    "CONTACT_MANAGER": "Contacts Manager",
+    "OUTBOUNDROUTE": "Ausgehende Routen",
+    "EQUALS": "ist gleich",
+    "NOT_EQUALS": "ist nicht gleich",
+    "CONTACT_MANAGER": "Kontaktmanager",
     "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": "Keine",
+    "NO": "Nein",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Info",
+    "INFO": "Information",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Woche Tage",
-    "MONTH_DAYS": "Monat Tage",
+    "WEEK_DAYS": "Wochentage",
+    "MONTH_DAYS": "Monatstage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Armaturenbrett",
-    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
-    "EDIT_WIDGET": "Bearbeiten Widget",
-    "DELETE_WIDGET": "Löschen Widget",
-    "FLIP_WIDGET": "Flip Widget",
+    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
+    "EDIT_WIDGET": "Widget bearbeiten",
+    "DELETE_WIDGET": "Widget löschen",
+    "FLIP_WIDGET": "Widget drehen",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Licht",
+    "LIGHT": "Hell",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitale Datum Format",
+    "DIGITAL_FORMAT": "Digitales Datumsformat",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Wählen Sie",
+    "SELECT": "Auswählen",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
-    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
-    "CRON": "Cron",
+    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
+    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
+    "CRON": "CrOn",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Im 2.",
-    "HOUR_ON_MINUTE": "Stunde Minute",
-    "AND_SECOND": "Und 2.",
-    "DAY_AT": "Tag an",
+    "ON_SECOND": "Zur Sekunde",
+    "HOUR_ON_MINUTE": "Stunde zur Minute",
+    "AND_SECOND": "und Sekunde",
+    "DAY_AT": "Am Tag",
     "START_TIME": "Startzeit",
-    "ON_THE": "Auf der",
-    "OF_EVERY": "Jedes",
+    "ON_THE": "Am",
+    "OF_EVERY": "An jedem",
     "MONTH_AT": "Monat",
-    "AT": "An",
+    "AT": "Um",
     "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": "Auf",
+    "ON": "Am",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Abgehende Routen",
-    "EVENTVARIABLES": "Bei Variablen",
+    "OUTBOUND_ROUTE": "Ausgehende Routen",
+    "EVENTVARIABLES": "Event-Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
+    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
     "COLOR": "Farbe",
-    "LOCATION": "Lage",
-    "NEW_TAB": "Neue Registerkarte",
+    "LOCATION": "Standort",
+    "NEW_TAB": "Neuer Tab",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fenster Breite (px)",
+    "WINDOWWIDTH": "Fensterbreite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Verlassen",
+    "ABANDONED": "Abgebrochen",
     "WAITING": "Warten",
-    "TALKING": "Reden",
-    "ANSWERED": "Antwortete",
-    "UNMANAGED": "Nicht verwaltet",
+    "TALKING": "im Gespräch",
+    "ANSWERED": "Beantwortet",
+    "UNMANAGED": "Nicht bearbeitet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Anruf-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",
+    "NEXTCONTACT": "Nächster Kontakt",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "UPLOADING": "Hochladen",
-    "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",
+    "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",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner melden",
-    "PREVIOUSCONTACT": "Bisherige",
+    "REPORTSUBFOLDER": "Unterordner",
+    "PREVIOUSCONTACT": "Vorherigen Kontakt",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Info",
+    "SCRIPT_INFO": "Information",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globals",
+    "GLOBALS": "Globale Werte",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "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"
+    "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"
   }
 }
index b5e98b5..91d5165 100644 (file)
@@ -96,7 +96,8 @@
       "CALLER_ID": "التنسيق المدعوم: \"CallerId\" & lt؛ number & gt؛",
       "MANDATORYDISPOSITIONPAUSEID": "وقفة الوضع لتعيين أثناء التصرف الإلزامي",
       "SERVICELEVEL": "الإعدادات الثانية لمستوى الخدمة (الافتراضي = 0 ، بدون ترخيص اشتراك). تُستخدم لإحصاءات مستوى الخدمة (يتم الرد على المكالمات خلال الإطار الزمني لمستوى الخدمة)",
-      "MONITORFORMAT": "يحدد تنسيق ملف التسجيل. إذا تم ضبطه على \"غير نشط\" ، فلن يتم تسجيل المكالمات"
+      "MONITORFORMAT": "يحدد تنسيق ملف التسجيل. إذا تم ضبطه على \"غير نشط\" ، فلن يتم تسجيل المكالمات",
+      "SAVE_ROUTES": "تم تعديل التوجيه. تذكر أن تقوم بالحفظ إذا كنت لا تريد أن تفقد تغييراتك."
     },
     "ABANDONEDCALLS": "مكالمات Queue مهجورة",
     "ACCOUNTNAME": "أسم الحساب",
     "TRANSCRIPTANALYSIS": "النص والتحليل",
     "SERVICELEVEL": "مستوى الخدمة",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
-    "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث"
+    "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث",
+    "ALIAS": "الاسم المستعار"
   }
 }
index efa1f4a..5fe900e 100644 (file)
       "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Pozastavte stav, který chcete nastavit během povinné dispozice",
       "SERVICELEVEL": "Druhé nastavení pro úroveň služeb (výchozí = 0, bez SL). Používá se pro statistiku úrovně služeb (volání přijatá v časovém rámci úrovně služby)",
-      "MONITORFORMAT": "Určuje formát souboru záznamu. Pokud je nastaveno na „neaktivní“, hovory se nebudou nahrávat"
+      "MONITORFORMAT": "Určuje formát souboru záznamu. Pokud je nastaveno na „neaktivní“, hovory se nebudou nahrávat",
+      "SAVE_ROUTES": "Směrování bylo upraveno. Pokud o změny nechcete přijít, nezapomeňte je uložit."
     },
     "MUSICONHOLD": "Music On Hold",
     "ANNOUNCETOAGENT": "Announce To Agent",
     "WRONG_EXTENSION": "Soubor představuje nesprávnou příponu",
     "SERVICELEVEL": "Úroveň služby",
     "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně",
-    "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně"
+    "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně",
+    "ALIAS": "Alias"
   }
 }
index b0ebbf4..67570a2 100644 (file)
       "CALLER_ID": "Understøttet format: \"CallerId\" & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Pausestatus, der skal indstilles under obligatorisk disposition",
       "SERVICELEVEL": "Anden indstilling for serviceniveau (standard = 0, ingen SL). Bruges til statistik på serviceniveau (opkald besvaret inden for serviceniveau tidsramme)",
-      "MONITORFORMAT": "Angiver formatet på optagelsesfilen. Hvis den er indstillet til 'inaktiv', optages ikke opkald"
+      "MONITORFORMAT": "Angiver formatet på optagelsesfilen. Hvis den er indstillet til 'inaktiv', optages ikke opkald",
+      "SAVE_ROUTES": "Routingen er blevet ændret. Husk at gemme, hvis du ikke vil miste dine ændringer."
     },
     "MUSICONHOLD": "Musik ved parkeret opkald",
     "ANNOUNCETOAGENT": "Annoncere til agent",
     "TRANSCRIPTANALYSIS": "Transkript & analyse",
     "SERVICELEVEL": "Serviceniveau",
     "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition",
-    "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition"
+    "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition",
+    "ALIAS": "Alias"
   }
 }
index 0f34ef6..b21bd68 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Voice Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "VOICEQUEUES": "Anruf-Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "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",
+    "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",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
+    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
     "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": "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",
+      "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",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
+      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Versuchen Sie es erneut",
-    "WRAPUPTIME": "-Zeit",
-    "WEIGHT": "Gewicht",
-    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
-    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
+    "RETRY": "Bitte erneut versuchen",
+    "WRAPUPTIME": "Nacharbeit",
+    "WEIGHT": "Gewichtung",
+    "JOINWHENEMPTY": "Beitreten, wenn leer",
+    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "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)",
+      "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. ",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
+      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
       "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, 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"
+      "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"
     },
-    "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,",
+    "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",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Arbeit nach Anruf",
-    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
-    "RINGINUSE": "Ring in Verwendung",
-    "MEMBERDELAY": "Die Verzögerung",
-    "TIMEOUTRESTART": "Timeout starten",
+    "AFTERCALLWORK": "Nacharbeit",
+    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
+    "RINGINUSE": "Klingeln bei Besetzt",
+    "MEMBERDELAY": "Verzögerung",
+    "TIMEOUTRESTART": "Zeitüberschreitung",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
-    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
-    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
+    "SETINTERFACEVARIABLES": "Interface-Variablen",
+    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
+    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext",
+    "CONTEXT": "Kontext Austritt aus Warteschlange",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Ankommende Routen",
+    "INBOUNDROUTES": "Eingehende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
-    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
+    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
+    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Abgehende Routen",
-    "DESTINATIONPATTERN": "Ziel Muster",
+    "OUTBOUNDROUTES": "Ausgehende Routen",
+    "DESTINATIONPATTERN": "Ziel-Pattern",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
-    "CUTDIGITS": "Die Ziffern",
-    "RECORDING": "Aufnahme",
+    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
+    "CUTDIGITS": "Ziffern",
+    "RECORDING": "Aufzeichnung",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
+    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Routen löschen",
+    "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Rahmen hinzufügen",
+    "ADD_CONTEXT": "Kontext hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Löschen von Rahmen",
-    "VOICEMAILS": "Von Voicemails",
-    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
-    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
+    "DELETE_CONTEXT": "Kontext löschen",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Voicemail hinzufügen",
+    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Befestigen Sie",
+    "ATTACH": "Anhängen",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "In Sekunden",
+    "MAXSECONDS": "Max. Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "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",
+    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
+    "MUSICONHOLDS": "Wartemusik",
+    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
+    "DELETE_MUSICONHOLD": "Wartemusik löschen",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufnahmen",
-    "CHANSPY": "ChanSpy",
+    "RECORDINGS": "Aufzeichnungen",
+    "CHANSPY": "Listen-In",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Fügen Sie ChanSpy",
-    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
-    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
+    "AUTH": "Authentifizierung",
+    "ADD_CHANSPY": "Listen-In hinzufügen",
+    "EDIT_CHANSPY": "Listen-In bearbeiten",
+    "DELETE_CHANSPY": "Listen-In löschen",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
-    "QUEUE_PARAMETERS": "Queue Parameter",
+    "QUEUE_CALLS": "Anrufe in Warteschlange",
+    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Kurzwahl",
+    "DIAL": "Wählen",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interne Wahl",
-    "EXTERNALDIAL": "Externes Wählen",
-    "RINGGROUP": "Ring-Gruppe",
+    "INTERNALDIAL": "Interner Anruf",
+    "EXTERNALDIAL": "Externer Anruf",
+    "RINGGROUP": "Rufgruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Set",
+    "SET": "Einstellen",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefinierte",
+    "CUSTOM": "Benutzerdefiniert",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "Anwendung bearbeiten.",
+    "EDIT_APP": "App bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "Anwendung löschen",
+    "DELETE_APP": "App löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Amtsleitung",
+    "TRUNK": "Trunk",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
+    "ANNOUNCE_OVERRIDES": "Überschreibungen ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Erweiterung",
+    "EXTENSION": "Nebenstelle",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ursache auflegen",
-    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
-    "CALLER_ID": "Die Anrufer-ID",
+    "HANGUP_CAUSE": "Ablehnungsgrund",
+    "OUTBOUNDDIAL": "Extern wählen",
+    "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufnahmen",
-    "CHANSPIES": "Chan Spies",
-    "VOICE": "Voice",
+    "VOICERECORDINGS": "Sprachaufzeichnungen",
+    "CHANSPIES": "Listen-Ins",
+    "VOICE": "Anrufe",
     "REALTIME": "Echtzeit",
-    "ID": "Id",
+    "ID": "ID",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "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",
+    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
+    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
+    "DELETE_MOHSOUND": "Musik bei Halten löschen",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "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_VOICEQUEUE": "Neue Anruf-Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue eingehende Route",
+    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Route",
+    "NEW_CONTEXT": "Neuer Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "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.",
+    "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",
     "EDIT_AGI": "AGI 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",
+    "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",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Empfangen am",
+    "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "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)",
+    "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)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Anzahl geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
-    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
+    "HANGUPCAUSE_22": "22 = Nummer geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
+    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Random",
+    "RANDOM": "Zufall",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
-    "INTERNAL": "Interne",
+    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
+    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Gebrauch",
-    "INUSE": "Im Einsatz",
+    "NOT_INUSE": "Nicht in Verwendung",
+    "INUSE": "In Verwendung",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Auf Halten",
-    "RING": "Ring",
-    "UP": "Bis",
-    "INFO": "Info",
-    "TRUNKS": "Amtsleitungen",
+    "ONHOLD": "Halten",
+    "RING": "Klingeln",
+    "UP": "Nach Oben",
+    "INFO": "Information",
+    "TRUNKS": "Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine registry",
+    "NO_REGISTRY": "Keine Registrierung",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Warten",
-    "TALKING": "Sprechen",
-    "DID": "Haben",
+    "WAITING": "Wartezustand",
+    "TALKING": "Im Gespräch",
+    "DID": "DID",
     "CALLER": "Anrufer",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltete",
-    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
-    "AVG_DURATION": "Av-Dauer",
-    "AVG_BILLABLE": "Avg Fakturierbaren",
-    "SOURCE": "Quelle",
+    "UNMANAGED": "Nicht bearbeitet",
+    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "AVG_DURATION": "Durchschnittliche Dauer",
+    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
+    "SOURCE": "Ursprung",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Aufgerufen",
+    "CALLED": "Angerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard PAUSE",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard Pause",
     "PAUSE": "Pause",
-    "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",
+    "UNPAUSE": "Fortsetzen",
+    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
+    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
+    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
-    "NEW_MOHSOUND": "Neue Musik auf Halten",
-    "DOWNLOAD_MESSAGE": "Download",
+    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
+    "NEW_MOHSOUND": "Neue Wartemusik",
+    "DOWNLOAD_MESSAGE": "Herunterladen",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Insgesamt",
+    "TOTAL_OFFERED": "Gesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Teams",
     "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": "Bearbeiten ausgehenden DFÜ",
-    "ACCOUNTNAME": "Konto Name",
+    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
+    "ACCOUNTNAME": "Kontoname",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "DISPOSITION": "Disposition",
+    "OF": "von",
+    "DISPOSITION": "Qualifizierung",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilweise Pause",
+    "PARTIALPAUSE": "Teilpause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Bearbeiten Trunk",
+    "EDIT_TRUNK": "Trunk bearbeiten",
     "ACTIVE": "Aktiv",
-    "CLEAR": "klar",
+    "CLEAR": "Leeren",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Fing an bei",
-    "ENDEDAT": "Beendet bei",
-    "TAG": "Etikett",
-    "DETAILS": "Einzelheiten",
+    "STARTEDAT": "Startdatum",
+    "ENDEDAT": "Enddatum",
+    "TAG": "Tag",
+    "DETAILS": "Details",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet bei",
-    "NOTE": "Hinweis",
+    "ANSWEREDAT": "Beantwortet am",
+    "NOTE": "Notiz",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Wählen Sie Startdatum",
-    "SELECT_TYPE": "Art auswählen",
-    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
+    "SELECT_DATE": "Startdatum auswählen",
+    "SELECT_TYPE": "Typ auswählen",
+    "ABANDONEDCALLS": "Abgebrochene Anrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
+    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Vorgegebene Präfixe",
+    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehende",
+    "INBOUND": "Eingehend",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "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",
+    "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",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "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",
+    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
+    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
+    "SENTIMENT": "Sentiment",
+    "SENTIMENTANALYSIS": "Sentiment-Analyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
+    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene"
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene"
   }
 }
index 7405573..0e070f7 100644 (file)
@@ -17,6 +17,7 @@
     "PARTIALPAUSE": "Partial Pause",
     "STATUS": "Status",
     "TIMER": "Timer",
+    "ALIAS": "Alias",
     "ALL": "All",
     "IDLE": "Idle",
     "EDIT_TRUNK": "Edit Trunk",
       "CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
       "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
-      "SERVICELEVEL": "Second settings for service level (default=0, no SL). Used for service level statistics (calls answered within service level time frame)"
+      "SERVICELEVEL": "Second settings for service level (default=0, no SL). Used for service level statistics (calls answered within service level time frame)",
+      "SAVE_ROUTES": "The routing has been modified. Remember to save if you don't want to lose your changes."
+    },
+    "NOTIFICATIONS": {
+      "EXTENSION_CREATED_SUCCESS_TITLE": "Route successfully created",
+      "EXTENSION_SAVED_SUCCESS_TITLE": "Route successfully saved",
+      "EXTENSION_DELETE_TITLE": "Are you sure want to delete the route?",
+      "EXTENSION_DELETE_MESSAGE": "{{ name }} will be deleted",
+      "EXTENSION_DELETED_SUCCESS_TITLE": "Route successfully deleted",
+      "EXTENSIONS_DELETE_TITLE": "Are you sure want to delete the selected routes?",
+      "EXTENSIONS_DELETE_MESSAGE": "{{ total }} routes will be deleted",
+      "ROUTING_APPLICATION_DELETE_TITLE": "Are you sure want to delete the application?",
+      "ROUTING_APPLICATION_DELETE_MESSAGE": "{{ name }} will be deleted",
+      "ROUTING_APPLICATIONS_DELETE_TITLE": "Are you sure want to delete the selected applications?",
+      "ROUTING_APPLICATIONS_DELETE_MESSAGE": "{{ total }} applications will be deleted",
+      "CALLYSQUARE_PROJECTS_GET_ERROR": "Unable to retrieve any CallySquare project",
+      "TRUNKS_GET_ERROR": "Unable to retrieve any trunk",
+      "VOICE_CONTEXTS_GET_ERROR": "Unable to retrieve any voice context",
+      "QUEUES_GET_ERROR": "Unable to retrieve any queue",
+      "SOUNDS_GET_ERROR": "Unable to retrieve any sound",
+      "USERS_GET_ERROR": "Unable to retrieve any user",
+      "VARIABLES_GET_ERROR": "Unable to retrieve any variable",
+      "VOICEMAILS_GET_ERROR": "Unable to retrieve any voicemail",
+      "TAGS_GET_ERROR": "Unable to retrieve any tag",
+      "INTERVALS_GET_ERROR": "Unable to retrieve any interval"
     }
   }
 }
index 76e714a..90b1016 100644 (file)
@@ -48,7 +48,8 @@
       "CALLER_ID": "Formato admitido: \"CallerId\" & lt; número & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Estado de pausa para establecer durante el cierre obligatoriola tipificación obligatoria",
       "SERVICELEVEL": "Segundos ajustes para el nivel de servicio (predeterminado = 0, sin SL). Se utiliza para estadísticas de nivel de servicio (llamadas respondidas dentro del marco de tiempo del nivel de servicio)",
-      "MONITORFORMAT": "Especifica el formato del archivo de grabación. Si se establece en 'inactivo', las llamadas no se grabarán"
+      "MONITORFORMAT": "Especifica el formato del archivo de grabación. Si se establece en 'inactivo', las llamadas no se grabarán",
+      "SAVE_ROUTES": "Se ha modificado el enrutamiento. Recuerde guardar si no quiere perder sus cambios."
     },
     "ERRORS": {
       "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El valor debe ser mayor o igual que",
     "TRANSCRIPTANALYSIS": "Transcripción y análisis",
     "SERVICELEVEL": "Nivel de servicio",
     "SECOND_LEVEL_DISPOSITION": "Tipificación de segundo nivel",
-    "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel"
+    "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel",
+    "ALIAS": "Alias"
   }
 }
index a41ee9e..bd75c5e 100644 (file)
       "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
       "SERVICELEVEL": "Teised teenustaseme seaded (vaikeväärtus = 0, SL puudub). Kasutatakse teenustaseme statistika jaoks (kõnedele vastatakse teenustaseme ajalises raamistikus)",
-      "MONITORFORMAT": "Määrab salvestusfaili vormingu. Kui see on seatud passiivseks, siis kõnesid ei salvestata"
+      "MONITORFORMAT": "Määrab salvestusfaili vormingu. Kui see on seatud passiivseks, siis kõnesid ei salvestata",
+      "SAVE_ROUTES": "Marsruuti on muudetud. Ärge unustage salvestada, kui te ei soovi oma muudatusi kaotada."
     },
     "MUSICONHOLD": "Music On Hold",
     "ANNOUNCETOAGENT": "Announce To Agent",
     "WRONG_EXTENSION": "Failis on vale laiend",
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
-    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus"
+    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
+    "ALIAS": "Teise nimega"
   }
 }
index c5a5f6c..64fd7ba 100644 (file)
       "CALLER_ID": "فرمت پشتیبانی شده: \"CallerId\" & lt؛ number & gt؛",
       "MANDATORYDISPOSITIONPAUSEID": "وضعیت مکث را برای تنظیم در حین حالت اجباری تنظیم کنید",
       "SERVICELEVEL": "تنظیمات دوم برای سطح خدمات (پیش فرض = 0 ، بدون SL). مورد استفاده برای آمار سطح خدمات (پاسخگویی در چارچوب زمانی سطح سرویس)",
-      "MONITORFORMAT": "قالب پرونده ضبط را مشخص می کند. اگر روی \"غیرفعال\" تنظیم شود ، تماس ها ضبط نمی شوند"
+      "MONITORFORMAT": "قالب پرونده ضبط را مشخص می کند. اگر روی \"غیرفعال\" تنظیم شود ، تماس ها ضبط نمی شوند",
+      "SAVE_ROUTES": "مسیریابی اصلاح شده است. اگر نمی خواهید تغییرات خود را از دست بدهید ، ذخیره کنید."
     },
     "MUSICONHOLD": "موسيقي را نگه دارید",
     "ANNOUNCETOAGENT": "عامل را اعلام می کند",
     "TRANSCRIPTANALYSIS": "متن و آنالیز",
     "SERVICELEVEL": "سطح سرویس",
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
-    "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم"
+    "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم",
+    "ALIAS": "نام مستعار"
   }
 }
index 952d5ba..f1874d1 100644 (file)
       "CALLER_ID": "Tuettu muoto: \"CallerId\" & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Keskeytä tila asettaaksesi pakollisen hävityksen aikana",
       "SERVICELEVEL": "Toiset palvelutason asetukset (oletus = 0, ei SL). Käytetään palvelutasotilastoihin (puheluihin vastataan palvelutason aikataulussa)",
-      "MONITORFORMAT": "Määrittää tallennustiedoston muodon. Jos se on 'ei-aktiivinen', puheluja ei tallenneta"
+      "MONITORFORMAT": "Määrittää tallennustiedoston muodon. Jos se on 'ei-aktiivinen', puheluja ei tallenneta",
+      "SAVE_ROUTES": "Reittiä on muutettu. Muista tallentaa, jos et halua menettää tekemiäsi muutoksia."
     },
     "MUSICONHOLD": "Musiikkia puhelun ollessa pidossa",
     "ANNOUNCETOAGENT": "Ilmoittaa Agent",
     "TRANSCRIPTANALYSIS": "Teksti ja analyysi",
     "SERVICELEVEL": "Palvelutaso",
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
-    "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus"
+    "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus",
+    "ALIAS": "Alias"
   }
 }
index e425f87..ca6418d 100644 (file)
       "CALLER_ID": "Format pris en charge: \"CallerId\" & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Statut de pause à définir lors de la disposition obligatoire",
       "SERVICELEVEL": "Second paramétrage du niveau de service (par défaut = 0, pas de SL). Utilisé pour les statistiques de niveau de service (appels traités dans le délai de niveau de service)",
-      "MONITORFORMAT": "Spécifie le format du fichier d'enregistrement. S'il est défini sur « inactif », les appels ne seront pas enregistrés"
+      "MONITORFORMAT": "Spécifie le format du fichier d'enregistrement. S'il est défini sur « inactif », les appels ne seront pas enregistrés",
+      "SAVE_ROUTES": "Le routage a été modifié. N'oubliez pas de sauvegarder si vous ne voulez pas perdre vos modifications."
     },
     "MUSICONHOLD": "Musique d'attente",
     "ANNOUNCETOAGENT": "Annoncer un message à l'agent",
     "TRANSCRIPTANALYSIS": "Transcription et analyse",
     "SERVICELEVEL": "Niveau de service",
     "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau",
-    "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau"
+    "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau",
+    "ALIAS": "Alias"
   }
 }
index f420f88..2da30a3 100644 (file)
       "CALLER_ID": "התבנית הנתמכת: \"CallerId\" &lt;number&gt;",
       "MANDATORYDISPOSITIONPAUSEID": "סוג הפסקה במהלך סיכום שיחה",
       "SERVICELEVEL": "הגדרות שניות לרמת שירות (ברירת מחדל = 0, ללא SL). משמש לסטטיסטיקה של רמת השירות (שיחות נענות במסגרת הזמן של רמת השירות)",
-      "MONITORFORMAT": "מציין את הפורמט של קובץ ההקלטה. אם הוא מוגדר ל'לא פעיל ', שיחות לא יוקלטו"
+      "MONITORFORMAT": "מציין את הפורמט של קובץ ההקלטה. אם הוא מוגדר ל'לא פעיל ', שיחות לא יוקלטו",
+      "SAVE_ROUTES": "הניתוב השתנה. זכור לשמור אם אינך רוצה לאבד את השינויים שלך."
     },
     "MUSICONHOLD": "מוזיקה בהמתנה",
     "ANNOUNCETOAGENT": "הודעה לנציג",
     "TRANSCRIPTANALYSIS": "תמלול וניתוח",
     "SERVICELEVEL": "רמת שירות",
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
-    "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית"
+    "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית",
+    "ALIAS": "כינוי"
   }
 }
index cd39ac6..2fbd46a 100644 (file)
       "CALLER_ID": "समर्थित प्रारूप: \"कॉलर आईडी\" & lt; संख्या & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "अनिवार्य स्थिति के दौरान निर्धारित करने के लिए स्थिति को रोकें",
       "SERVICELEVEL": "सेवा स्तर के लिए दूसरी सेटिंग्स (डिफ़ॉल्ट = 0, कोई SL)। सेवा स्तर के आँकड़ों के लिए उपयोग किया जाता है (सेवा स्तर समय सीमा के भीतर उत्तर दिए गए कॉल)",
-      "MONITORFORMAT": "रिकॉर्डिंग फ़ाइल का प्रारूप निर्दिष्ट करता है। अगर इसे 'निष्क्रिय' पर सेट किया जाता है, तो कॉल रिकॉर्ड नहीं की जाएंगी"
+      "MONITORFORMAT": "रिकॉर्डिंग फ़ाइल का प्रारूप निर्दिष्ट करता है। अगर इसे 'निष्क्रिय' पर सेट किया जाता है, तो कॉल रिकॉर्ड नहीं की जाएंगी",
+      "SAVE_ROUTES": "रूटिंग में बदलाव किया गया है। यदि आप अपने परिवर्तनों को खोना नहीं चाहते हैं तो सहेजना याद रखें।"
     },
     "MUSICONHOLD": "संगीत पर रखें.",
     "ANNOUNCETOAGENT": "घोषणा के एजेंट",
     "TRANSCRIPTANALYSIS": "प्रतिलेख और विश्लेषण",
     "SERVICELEVEL": "सेवा का स्तर",
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
-    "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद"
+    "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद",
+    "ALIAS": "उपनाम"
   }
 }
index 6a10c2f..1fecba7 100644 (file)
@@ -96,7 +96,8 @@
       "CALLER_ID": "Format yang didukung: \"CallerId\" & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Jeda status untuk ditetapkan selama disposisi wajib",
       "SERVICELEVEL": "Pengaturan kedua untuk tingkat layanan (default = 0, tanpa SL). Digunakan untuk statistik tingkat layanan (panggilan dijawab dalam jangka waktu tingkat layanan)",
-      "MONITORFORMAT": "Menentukan format file rekaman. Jika disetel ke 'tidak aktif', panggilan tidak akan direkam"
+      "MONITORFORMAT": "Menentukan format file rekaman. Jika disetel ke 'tidak aktif', panggilan tidak akan direkam",
+      "SAVE_ROUTES": "Perutean telah dimodifikasi. Ingatlah untuk menyimpan jika Anda tidak ingin kehilangan perubahan Anda."
     },
     "ABANDONED": "Ditinggalkan",
     "ABANDONEDCALLS": "Panggilan Antrian yang Ditinggalkan",
     "TRANSCRIPTANALYSIS": "Transkrip & Analisis",
     "SERVICELEVEL": "Tingkat layanan",
     "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua",
-    "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga"
+    "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga",
+    "ALIAS": "Alias"
   }
 }
index 7ff9daa..3b739d4 100644 (file)
@@ -15,6 +15,7 @@
     "IDLE": "Inattivo",
     "EDIT_TRUNK": "Modifica Trunk",
     "NAME": "Nome",
+    "ALIAS": "Alias",
     "VOICEQUEUES": "Code Voce",
     "SEARCH_FOR_ANYONE": "Cerca",
     "BACK": "Indietro",
       "CALLERIDALL_MUST_VALID_PATTERN": "Formato errato",
       "CALLER_ID_MUST_VALID_PATTERN": "Formato errato",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obbligatorio",
-      "PENALTY_REQUIRED": "Specificare un valore per la penalità"
+      "PENALTY_REQUIRED": "Devi specificare un valore per la penalità"
     },
     "HELP": {
       "TIMEOUT": "Tempo (in secondi) in cui va fatto squillare il dispositivo dell'agente in coda",
       "CALLER_ID": "Formato supportato: \"CallerId\" &lt;number&gt;",
       "MANDATORYDISPOSITION": "",
       "MANDATORYDISPOSITIONPAUSEID": "Metti in pausa lo stato da impostare durante la disposizione obbligatoria",
-      "SERVICELEVEL": "Seconda impostazione per il livello di servizio (default = 0, no SL). Utilizzato per le statistiche sul livello di servizio (chiamate risposte entro il periodo di tempo del livello di servizio)"
+      "SERVICELEVEL": "Seconda impostazione per il livello di servizio (default = 0, no SL). Utilizzato per le statistiche sul livello di servizio (chiamate risposte entro il periodo di tempo del livello di servizio)",
+      "SAVE_ROUTES": "Il routing è stato modificato. Ricordati di salvare se non vuoi perdere le modifiche."
     },
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Scarica la trascrizione",
     "FAILUREREASON": "Motivo del fallimento",
     "SENTIMENT": "Sentimento",
     "TEXT": "Testo",
     "SECOND_LEVEL_DISPOSITION": "Disposizione di secondo livello",
-    "THIRD_LEVEL_DISPOSITION": "Disposizione di terzo livello"
+    "THIRD_LEVEL_DISPOSITION": "Disposizione di terzo livello",
+    "NOTIFICATIONS": {
+      "EXTENSION_CREATED_SUCCESS_TITLE": "Rotta creata con successo",
+      "EXTENSION_SAVED_SUCCESS_TITLE": "Rotta salvata con successo",
+      "EXTENSION_DELETE_TITLE": "Sei sicuro di voler eliminare la rotta?",
+      "EXTENSION_DELETE_MESSAGE": "{{ name }} verrà rimossa",
+      "EXTENSION_DELETED_SUCCESS_TITLE": "Rotta rimossa con successo",
+      "EXTENSIONS_DELETE_TITLE": "Sei sicuro di voler eliminare le rotte selezionate?",
+      "EXTENSIONS_DELETE_MESSAGE": "{{ total }} rotte verranno rimosse",
+      "ROUTING_APPLICATION_DELETE_TITLE": "Sei sicuro di voler eliminare l'applicazione?",
+      "ROUTING_APPLICATION_DELETE_MESSAGE": "{{ name }} verrà rimossa",
+      "ROUTING_APPLICATIONS_DELETE_TITLE": "Sei sicuro di voler eliminare le applicazioni selezionate?",
+      "ROUTING_APPLICATIONS_DELETE_MESSAGE": "{{ total }} applicazioni verranno rimosse",
+      "CALLYSQUARE_PROJECTS_GET_ERROR": "Impossibile recuperare i progetti CallySquare",
+      "TRUNKS_GET_ERROR": "Impossibile recuperare i trunks",
+      "VOICE_CONTEXTS_GET_ERROR": "Impossibile recuperare i contesti",
+      "QUEUES_GET_ERROR": "Impossibile recuperare le code",
+      "SOUNDS_GET_ERROR": "Impossibile recuperare i suoni",
+      "USERS_GET_ERROR": "Impossibile recuperare gli utenti",
+      "VARIABLES_GET_ERROR": "Impossibile recuperare le variabili",
+      "VOICEMAILS_GET_ERROR": "Impossibile recuperare le caselle vocali",
+      "TAGS_GET_ERROR": "Impossibile recuperare i tags",
+      "INTERVALS_GET_ERROR": "Impossibile recuperare gli intervalli"
+    }
   }
 }
index 8e8c511..c7d5d57 100644 (file)
@@ -96,7 +96,8 @@
       "CALLER_ID": "サポートされているフォーマット: \"CallerId\"&lt; number&gt;",
       "MANDATORYDISPOSITIONPAUSEID": "強制処分中に設定する一時停止ステータス",
       "SERVICELEVEL": "サービスレベルの2番目の設定(デフォルト= 0、SLなし)。サービスレベルの統計情報に使用されます(サービスレベルの時間枠内に応答された通話)",
-      "MONITORFORMAT": "記録ファイルの形式を指定します。 'inactive'に設定すると、通話は録音されません"
+      "MONITORFORMAT": "記録ファイルの形式を指定します。 'inactive'に設定すると、通話は録音されません",
+      "SAVE_ROUTES": "ルーティングが変更されました。変更を失いたくない場合は、忘れずに保存してください。"
     },
     "ABANDONED": "放棄",
     "ABANDONEDCALLS": "放棄されたキューコール",
     "TRANSCRIPTANALYSIS": "筆記録と分析",
     "SERVICELEVEL": "サービスレベル",
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
-    "THIRD_LEVEL_DISPOSITION": "第3レベルの気質"
+    "THIRD_LEVEL_DISPOSITION": "第3レベルの気質",
+    "ALIAS": "エイリアス"
   }
 }
index 1a7bd31..bc9ce6e 100644 (file)
       "CALLER_ID": "지원되는 형식 : \"CallerId\"& lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "강제 처분 중에 설정할 일시 중지 상태",
       "SERVICELEVEL": "서비스 수준에 대한 두 번째 설정 (기본값 = 0, SL 없음). 서비스 수준 통계에 사용 (서비스 수준 시간 범위 내에 응답 된 통화)",
-      "MONITORFORMAT": "녹음 파일의 형식을 지정합니다. '비활성'으로 설정하면 통화가 녹음되지 않습니다."
+      "MONITORFORMAT": "녹음 파일의 형식을 지정합니다. '비활성'으로 설정하면 통화가 녹음되지 않습니다.",
+      "SAVE_ROUTES": "라우팅이 수정되었습니다. 변경 사항을 잃지 않으려면 저장하는 것을 잊지 마십시오."
     },
     "MUSICONHOLD": "대기 중 음악",
     "ANNOUNCETOAGENT": "상담원 공지",
     "TRANSCRIPTANALYSIS": "성적표 및 분석",
     "SERVICELEVEL": "서비스 수준",
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
-    "THIRD_LEVEL_DISPOSITION": "3 단계 처리"
+    "THIRD_LEVEL_DISPOSITION": "3 단계 처리",
+    "ALIAS": "별명"
   }
 }
index 2e6a847..1a07f3d 100644 (file)
       "CALLER_ID": "Palaikomas formatas: \"Skambintojo ID\" <numeris>",
       "MANDATORYDISPOSITIONPAUSEID": "Nustatyti pauzės būseną privalomo išdėstymo metu",
       "SERVICELEVEL": "Antrieji paslaugos lygio nustatymai (numatytasis = 0, be SL). Naudojamas paslaugų lygio statistikai (į skambučius atsakoma per paslaugų lygio laikotarpį)",
-      "MONITORFORMAT": "Nurodo įrašymo failo formatą. Jei ji bus nustatyta kaip „neaktyvi“, skambučiai nebus įrašomi"
+      "MONITORFORMAT": "Nurodo įrašymo failo formatą. Jei ji bus nustatyta kaip „neaktyvi“, skambučiai nebus įrašomi",
+      "SAVE_ROUTES": "Maršrutas pakeistas. Nepamirškite išsaugoti, jei nenorite prarasti pakeitimų."
     },
     "MUSICONHOLD": "Muzika sulaikyta",
     "ANNOUNCETOAGENT": "Pranešti agentui",
     "TRANSCRIPTANALYSIS": "Nuorašas ir analizė",
     "SERVICELEVEL": "Aptarnavimo lygis",
     "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas",
-    "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas"
+    "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas",
+    "ALIAS": "Pseudonimas"
   }
 }
index 80b6208..3e683d8 100644 (file)
@@ -96,7 +96,8 @@
       "CALLER_ID": "Atbalstītais formāts: \"CallerId\" &lt;numurs>",
       "MANDATORYDISPOSITIONPAUSEID": "Pauzēt statusu, lai iestatītu obligātās izvietošanas laikā",
       "SERVICELEVEL": "Pakalpojuma līmeņa otrie iestatījumi (noklusējums = 0, bez SL). Izmanto pakalpojuma līmeņa statistikai (zvani tiek atbildēti pakalpojuma līmeņa laika posmā)",
-      "MONITORFORMAT": "Norāda ierakstīšanas faila formātu. Ja tā ir iestatīta uz “neaktīvs”, zvani netiks ierakstīti"
+      "MONITORFORMAT": "Norāda ierakstīšanas faila formātu. Ja tā ir iestatīta uz “neaktīvs”, zvani netiks ierakstīti",
+      "SAVE_ROUTES": "Maršruts ir mainīts. Atcerieties saglabāt, ja nevēlaties zaudēt izmaiņas."
     },
     "WAITING_FOR_AGENTS": "Gaida aģentus",
     "ACTIVE": "Aktīvs",
     "TRANSCRIPTANALYSIS": "Atraksts un analīze",
     "SERVICELEVEL": "Pakalpojuma līmenis",
     "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums",
-    "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums"
+    "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums",
+    "ALIAS": "Pseidonīms"
   }
 }
index 406277c..103a753 100644 (file)
       "CALLER_ID": "Ondersteunde indeling: 'CallerId' & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Pauzestatus in te stellen tijdens verplichte dispositie",
       "SERVICELEVEL": "Tweede instellingen voor serviceniveau (standaard = 0, geen SL). Gebruikt voor serviceniveaustatistieken (oproepen beantwoord binnen het serviceniveau)",
-      "MONITORFORMAT": "Specificeert het formaat van het opnamebestand. Als het is ingesteld op 'inactief', worden gesprekken niet opgenomen"
+      "MONITORFORMAT": "Specificeert het formaat van het opnamebestand. Als het is ingesteld op 'inactief', worden gesprekken niet opgenomen",
+      "SAVE_ROUTES": "De route is aangepast. Vergeet niet op te slaan als u uw wijzigingen niet wilt verliezen."
     },
     "MUSICONHOLD": "Wachtmuziek",
     "ANNOUNCETOAGENT": "Kondig Agent",
     "TRANSCRIPTANALYSIS": "Transcriptie en analyse",
     "SERVICELEVEL": "Service Level",
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
-    "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau"
+    "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau",
+    "ALIAS": "Alias"
   }
 }
index 27146a7..729522a 100644 (file)
       "CALLER_ID": "Støttet format: \"CallerId\" & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Pausestatus som skal angis under obligatorisk disposisjon",
       "SERVICELEVEL": "Andre innstillinger for servicenivå (standard = 0, ingen SL). Brukes for statistikk på servicenivå (samtaler besvart innen tidsramme for servicenivå)",
-      "MONITORFORMAT": "Spesifiserer formatet på opptaksfilen. Hvis den er satt til 'inaktiv', blir ikke anrop tatt opp"
+      "MONITORFORMAT": "Spesifiserer formatet på opptaksfilen. Hvis den er satt til 'inaktiv', blir ikke anrop tatt opp",
+      "SAVE_ROUTES": "Rutingen er endret. Husk å lagre hvis du ikke vil miste endringene."
     },
     "MUSICONHOLD": "Musikk på vent",
     "ANNOUNCETOAGENT": "Annonsere til agent",
     "TRANSCRIPTANALYSIS": "Transkripsjon og analyse",
     "SERVICELEVEL": "Service nivå",
     "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon",
-    "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon"
+    "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon",
+    "ALIAS": "Alias"
   }
 }
index 2316d9f..3988cbe 100644 (file)
       "CALLER_ID": "Obsługiwany format: \"CallerId\" & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Wstrzymaj status, aby ustawić podczas obowiązkowej dyspozycji",
       "SERVICELEVEL": "Drugie ustawienia poziomu serwisowego (domyślnie = 0, brak SL). Używane do statystyk poziomu usług (połączenia odebrane w ramach czasowych poziomu usług)",
-      "MONITORFORMAT": "Określa format pliku nagrania. Jeśli jest ustawiony na „nieaktywny”, połączenia nie będą nagrywane"
+      "MONITORFORMAT": "Określa format pliku nagrania. Jeśli jest ustawiony na „nieaktywny”, połączenia nie będą nagrywane",
+      "SAVE_ROUTES": "Trasa została zmodyfikowana. Pamiętaj, aby zapisać, jeśli nie chcesz utracić swoich zmian."
     },
     "MUSICONHOLD": "Music on Hold",
     "ANNOUNCETOAGENT": "Poinformowania agenta",
     "TRANSCRIPTANALYSIS": "Transkrypcja i analiza",
     "SERVICELEVEL": "Poziom usług",
     "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu",
-    "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu"
+    "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu",
+    "ALIAS": "Alias"
   }
 }
index bf909e6..5113530 100644 (file)
       "CALLER_ID": "Formato suportado: \\ \"CallerId \" <number>",
       "MANDATORYDISPOSITIONPAUSEID": "Pausar status para definir durante a disposição obrigatória",
       "SERVICELEVEL": "Segundos ajustes para o nível de serviço (padrão = 0, sem SL). Usado para estatísticas de nível de serviço (chamadas atendidas dentro do período de tempo de nível de serviço)",
-      "MONITORFORMAT": "Especifica o formato do arquivo de gravação. Se for definido como 'inativo', as chamadas não serão gravadas"
+      "MONITORFORMAT": "Especifica o formato do arquivo de gravação. Se for definido como 'inativo', as chamadas não serão gravadas",
+      "SAVE_ROUTES": "O roteamento foi modificado. Lembre-se de salvar se não quiser perder suas alterações."
     },
     "MUSICONHOLD": "Música em espera",
     "ANNOUNCETOAGENT": "Anunciar ao agente",
     "TRANSCRIPTANALYSIS": "Transcrição e Análise",
     "SERVICELEVEL": "Nível de serviço",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível"
+    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "ALIAS": "Pseudônimo"
   }
 }
index 889bfa9..a46bf2f 100644 (file)
       "CALLER_ID": "Formato suportado: \"CallerId\" & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Pausar status para definir durante a disposição obrigatória",
       "SERVICELEVEL": "Segundos ajustes para o nível de serviço (padrão = 0, sem SL). Usado para estatísticas de nível de serviço (chamadas atendidas dentro do período de tempo de nível de serviço)",
-      "MONITORFORMAT": "Especifica o formato do arquivo de gravação. Se for definido como 'inativo', as chamadas não serão gravadas"
+      "MONITORFORMAT": "Especifica o formato do arquivo de gravação. Se for definido como 'inativo', as chamadas não serão gravadas",
+      "SAVE_ROUTES": "O roteamento foi modificado. Lembre-se de salvar se não quiser perder suas alterações."
     },
     "MUSICONHOLD": "Música em espera",
     "ANNOUNCETOAGENT": "Anunciar para agente",
     "TRANSCRIPTANALYSIS": "Transcrição e Análise",
     "SERVICELEVEL": "Nível de serviço",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível"
+    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "ALIAS": "Pseudônimo"
   }
 }
index c0e1c26..672f53d 100644 (file)
       "CALLER_ID": "Поддерживаемый формат: \"CallerId\" & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Статус паузы, чтобы установить во время обязательного распоряжения",
       "SERVICELEVEL": "Вторые настройки уровня обслуживания (по умолчанию = 0, без SL). Используется для статистики уровня обслуживания (вызовы, отвеченные в течение периода времени уровня обслуживания)",
-      "MONITORFORMAT": "Задает формат файла записи. Если установлено значение «неактивно», звонки не будут записываться."
+      "MONITORFORMAT": "Задает формат файла записи. Если установлено значение «неактивно», звонки не будут записываться.",
+      "SAVE_ROUTES": "Маршрутизация была изменена. Не забудьте сохранить, если вы не хотите потерять свои изменения."
     },
     "MUSICONHOLD": "Музыка на удержании",
     "ANNOUNCETOAGENT": "Сообщить оператору",
     "TRANSCRIPTANALYSIS": "Расшифровка и анализ",
     "SERVICELEVEL": "Уровень обслуживания",
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
-    "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня"
+    "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня",
+    "ALIAS": "Псевдоним"
   }
 }
index 974e0bb..83c6c54 100644 (file)
       "CALLER_ID": "Stödformat: \"CallerId\" & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Pausstatus som ska vara aktiv under obligatorisk kategorisering",
       "SERVICELEVEL": "Andra inställningar för servicenivå (standard = 0, ingen SL). Används för statistik på servicenivå (samtal besvaras inom tidsramen för servicenivå)",
-      "MONITORFORMAT": "Anger inspelningsfilens format. Om den är inställd på 'inaktiv' kommer samtal inte att spelas in"
+      "MONITORFORMAT": "Anger inspelningsfilens format. Om den är inställd på 'inaktiv' kommer samtal inte att spelas in",
+      "SAVE_ROUTES": "Ruttningen har ändrats. Kom ihåg att spara om du inte vill förlora dina ändringar."
     },
     "MUSICONHOLD": "Musik i vänteläge",
     "ANNOUNCETOAGENT": "Meddela till agent",
     "TRANSCRIPTANALYSIS": "Transkript & analys",
     "SERVICELEVEL": "Servicenivå",
     "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition",
-    "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition"
+    "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition",
+    "ALIAS": "Alias"
   }
 }
index 40c0a86..6dd9d26 100644 (file)
       "CALLER_ID": "Desteklenen biçim: \"CallerId\" & lt; number & gt;",
       "MANDATORYDISPOSITIONPAUSEID": "Zorunlu kullanım sırasında ayarlamak için durumu duraklat",
       "SERVICELEVEL": "Servis seviyesi için ikinci ayarlar (varsayılan = 0, SL yok). Servis seviyesi istatistikleri için kullanılır (servis seviyesi zaman çerçevesi içinde cevaplanan aramalar)",
-      "MONITORFORMAT": "Kayıt dosyasının biçimini belirtir. 'Etkin değil' olarak ayarlanırsa aramalar kaydedilmez"
+      "MONITORFORMAT": "Kayıt dosyasının biçimini belirtir. 'Etkin değil' olarak ayarlanırsa aramalar kaydedilmez",
+      "SAVE_ROUTES": "Yönlendirme değiştirildi. Değişikliklerinizi kaybetmek istemiyorsanız kaydetmeyi unutmayın."
     },
     "MUSICONHOLD": "Bekletme Müziği",
     "ANNOUNCETOAGENT": "Duyurmak Agent",
     "TRANSCRIPTANALYSIS": "Transkript ve Analiz",
     "SERVICELEVEL": "Servis seviyesi",
     "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf",
-    "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf"
+    "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf",
+    "ALIAS": "takma ad"
   }
 }
index df8cdd6..2415dcc 100644 (file)
       "CALLER_ID": "支持的格式:“CallerId”&lt; number&gt;",
       "MANDATORYDISPOSITIONPAUSEID": "暂停在强制处置期间设置的状态",
       "SERVICELEVEL": "服务级别的第二个设置(默认= 0,无SL)。用于服务水平统计(在服务水平时间范围内应答的呼叫)",
-      "MONITORFORMAT": "指定录音文件的格式。如果设置为“非活动”,则不会记录通话"
+      "MONITORFORMAT": "指定录音文件的格式。如果设置为“非活动”,则不会记录通话",
+      "SAVE_ROUTES": "路由已修改。如果您不想丢失更改,请记住保存。"
     },
     "MUSICONHOLD": "音乐保留",
     "ANNOUNCETOAGENT": "宣布到座席",
     "TRANSCRIPTANALYSIS": "成绩单和分析",
     "SERVICELEVEL": "服务等级",
     "SECOND_LEVEL_DISPOSITION": "二级处置",
-    "THIRD_LEVEL_DISPOSITION": "第三级处置"
+    "THIRD_LEVEL_DISPOSITION": "第三级处置",
+    "ALIAS": "别名"
   }
 }
index 233b173..294b15a 100644 (file)
       "CALLER_ID": "支持的格式:“CallerId”&lt; number&gt;",
       "MANDATORYDISPOSITIONPAUSEID": "暫停在強制處置期間設置的狀態",
       "SERVICELEVEL": "服務級別的第二設置(默認= 0,無SL)。用於服務水平統計(在服務水平時間範圍內應答的呼叫)",
-      "MONITORFORMAT": "指定錄音文件的格式。如果設置為“非活動”,則不會記錄通話"
+      "MONITORFORMAT": "指定錄音文件的格式。如果設置為“非活動”,則不會記錄通話",
+      "SAVE_ROUTES": "路由已修改。如果您不想丟失更改,請記住保存。"
     },
     "MUSICONHOLD": "音樂保留通話",
     "ANNOUNCETOAGENT": "發佈至值機員",
     "TRANSCRIPTANALYSIS": "成績單和分析",
     "SERVICELEVEL": "服務等級",
     "SECOND_LEVEL_DISPOSITION": "二級處置",
-    "THIRD_LEVEL_DISPOSITION": "第三級處置"
+    "THIRD_LEVEL_DISPOSITION": "第三級處置",
+    "ALIAS": "別名"
   }
 }
index 80b51fd..c10b0a5 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "ACCOUNTSID_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": "Der Wert muss kleiner oder gleich sein",
+      "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_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": "Der Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "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": "Der Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "PRIORITY_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": "Der Wert muss kleiner oder gleich sein",
+      "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_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
       "TEXT_REQUIRED": "Pflichtfeld",
-      "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_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": "Pflichtfeld",
       "TIMES_REQUIRED": "Pflichtfeld",
       "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "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": "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_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_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
-      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
-      "MANDATORYDISPOSITION": "Obligatorische Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+      "LIST": "Liste für die Zuordnung von Kontakten",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
       "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, die an neue Interaktionen gesendet wird"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, welche bei einer neuen Interaktion gesendet wird"
     },
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-SID",
+    "ACCOUNTSID": "Konto-ID",
     "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Whatsapp Konto konzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Textvorlage hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Fortgeschrittene",
+    "ADVANCED": "Erweitert",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agenten zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
-    "AGENTTRANSFER": "Agententransfer",
-    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTTRANSFER": "Transfer Agent",
+    "AGENTTRANSFERTIMEOUT": "Timeout Agententransfer",
+    "AGENT_TIMEOUT": "Timeout Agent",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Bot Name",
+    "BOTNAME": "Botname",
     "BUSY": "Beschäftigt",
-    "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",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Suchen nach Textvorlagen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Hergestellt in",
-    "DEFAULT_PAUSE": "STANDARD PAUSE",
+    "CREATED_AT": "Erstellt am",
+    "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": "Vordefinierte Antwort löschen",
-    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
+    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
     "DIALOGFLOW": "DialogFlow",
-    "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",
+    "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",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
-    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
-    "EDIT_GOTOP": "Gotop bearbeiten",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "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": "Vordefinierte Antwort bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
-    "FALSEPRIORITY": "Falsche Priorität",
-    "GENERAL": "Allgemeines",
+    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Whatsapp-Warteschlange bearbeiten",
+    "FALSEPRIORITY": "Priorität falsch",
+    "GENERAL": "Allgemein",
     "GOTOIF": "Gotoif",
     "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
-    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
-    "ID": "Ich würde",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Zur Echtzeitansicht gehen",
+    "GO_TO_WHATSAPPACCOUNTS": "Zum Whatsapp-Konto gehen",
+    "ID": "ID",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Zu Interaktionen gehen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "Region",
-    "LIST": "Aufführen",
-    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
+    "LEXREGION": "LexRegion",
+    "LIST": "Liste",
+    "LOGGED_IN": "Eingeloggt (Verbunden mit SIP)",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern erforderlich",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
+    "MOTIONPROXY": "Proxy",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Quailifizierung",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
     "NOOP": "Noop",
-    "NOTE": "Hinweis",
+    "NOTE": "Anmerkung",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klang",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "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_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_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer an Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangentransfer",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL erhalten",
+    "RECEIVEURL": "URL für Erhalt",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Fernbedienung",
+    "REMOTE": "Remote",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "sparen",
+    "SAVE": "Speichern",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Wählen Sie Alle",
-    "SELECT_NONE": "Nichts ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "SEND": "Senden",
-    "SETTINGS": "die Einstellungen",
-    "SPYINTERACTION": "Spionage-Interaktion",
-    "STARTEDAT": "Fing an bei",
-    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
+    "SETTINGS": "Einstellungen",
+    "SPYINTERACTION": "Mitlesen",
+    "STARTEDAT": "Startdatum",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
     "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Etikett",
-    "TAGS": "Stichworte",
+    "TAG": "Tag",
+    "TAGS": "Tags",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Mannschaftsverband",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "TEXT": "Text",
-    "TIMEOUT": "Auszeit",
+    "TIMEOUT": "Zeitüberschreitung",
     "TIMER": "Timer",
-    "TIMES": "Mal",
-    "TO": "Zu",
-    "TOKEN": "Zeichen",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "TRANSFER": "Transfer",
+    "TIMES": "Zeiten",
+    "TO": "an",
+    "TOKEN": "Token",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TRANSFER": "Weiterleiten",
     "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Art",
+    "TYPE": "Typ",
     "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
     "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf den zugewiesenen Mitarbeiter warten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
-    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
+    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID"
   }
 }
index 3162f7a..fd8ccd9 100644 (file)
     "CHAT": "CHAT",
     "ACTIVITY": "Aktivität",
     "FRIENDS": "Freunde",
-    "APP_SERVERS": "Anwendungsserver",
-    "USER_STATS": "Benutzer Stats",
-    "EVENTS": "Veranstaltungen",
-    "NOTES": "Hinweise",
-    "QUICK_SETTINGS": "Schnelle Einstellungen",
+    "APP_SERVERS": "Server Anwendung",
+    "USER_STATS": "Benutzer Statistiken",
+    "EVENTS": "Ereignisse",
+    "NOTES": "Notizen",
+    "QUICK_SETTINGS": "Schnelleinstellungen",
     "NOTIFICATIONS": "Benachrichtigungen",
     "CLOUD_SYNC": "Cloud Synchronisieren",
-    "RETRO_THRUSTERS": "Retro Triebwerke",
-    "RECENT": "Die jüngsten",
+    "RETRO_THRUSTERS": "Retro Thrusters",
+    "RECENT": "Neuste",
     "START_NEW_CHAT": "Neuen Chat starten",
     "BACK": "Zurück",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "MORE": "Mehr",
     "SEND_MESSAGE": "Nachricht senden",
-    "REPLY_PLACEHOLDER": "Geben Sie ein, und drücken Sie die Eingabetaste, um Nachricht senden",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support",
+    "REPLY_PLACEHOLDER": "Nachricht eingeben und Enter drücken zum Senden",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Support kontaktieren",
     "EXPIRATION_DATE": "Ablaufdatum",
     "EXPIRATION_REASON": "Ablauf Grund",
     "LICENSE": "Lizenz",
-    "NEW_TOKEN": "Neue Token",
-    "OLD_TOKEN": "Alte Token",
+    "NEW_TOKEN": "Neuer Token",
+    "OLD_TOKEN": "Alter Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
     "TOKEN": "Token",
-    "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",
+    "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",
     "ERRORS": {
       "NAME_REQUIRED": "Pflichtfeld"
     },
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Grauzeit",
-    "NO_AVAILABLE_GROUPS": "Keine verfügbaren Gruppen",
-    "SAVE": "sparen",
-    "INFO": "Info",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Testphase",
+    "NO_AVAILABLE_GROUPS": "Keine Gruppen verfügbar",
+    "SAVE": "Speichern",
+    "INFO": "Information",
     "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. 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!",
+    "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",
     "WARNING": "Warnung"
   }
 }
index 1d7248b..6eb58fc 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Ihr Kennwort zurücksetzen",
-    "EMAIL_ADRESS": "E-mail Adresse",
-    "PASSWORD": "Kennwort",
-    "PASSWORD_CONFIRM": "Kennwort (bestätigen)",
-    "UPDATE_PASSWORD": "Kennwort zurücksetzen",
+    "TITLE": "Passwort zurücksetzen",
+    "EMAIL_ADRESS": "E-Mail Adresse",
+    "PASSWORD": "Passwort",
+    "PASSWORD_CONFIRM": "Passwort bestätigen",
+    "UPDATE_PASSWORD": "Passwort zurücksetzen",
     "GO_BACK": "Zurück zum Login",
-    "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",
+    "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",
     "ERRORS": {
-      "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.",
+      "EMAIL_REQUIRED": "E-Mail Adresse erfoderlich",
+      "EMAIL_MUST_VALID": "E-Mail Adresse ungültig",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, mit einem Minimum von 1 Kleinbuchstaben, Großbuchstaben, 1 numerisches und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
+      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, Minimum von 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index a399ee6..b6abdf2 100644 (file)
@@ -1,11 +1,11 @@
 {
   "TOOLBAR": {
-    "TOGGLE_NAVIGATION": "Navigation wechseln",
-    "TOGGLE_NAVIGATION_FOLD": "Navigation wechseln Fach",
-    "TOGGLE_NAVIGATION_MODE": "Navigation Modus umschalten",
+    "TOGGLE_NAVIGATION": "Navigation umschalten",
+    "TOGGLE_NAVIGATION_FOLD": "Navigation einklappen",
+    "TOGGLE_NAVIGATION_MODE": "Navigation Moduswechsel",
     "SEARCH": "Suche",
-    "USER_SETTINGS": "Benutzereinstellungen",
-    "TOGGLE_QUICK_PANEL": "Um schnelle Panel",
+    "USER_SETTINGS": "Nutzereinstellungen",
+    "TOGGLE_QUICK_PANEL": "Schnelles Panel umschalten",
     "ENGLISH": "Englisch",
     "ITALIAN": "Italienisch",
     "FRENCH": "Französisch",
     "CHINESESIMPLIFIED": "Vereinfachtes Chinesisch",
     "CHINESETRADITIONAL": "Traditionelles Chinesisch",
     "DUTCH": "Niederländisch",
-    "FINNISH": "Finnische",
+    "FINNISH": "Finnisch",
     "DANISH": "Dänisch",
     "PORTUGUESE": "Portugiesisch",
     "NORWEGIAN": "Norwegisch",
     "HINDI": "Hindi",
     "TURKISH": "Türkisch",
     "PERSIAN": "Persisch",
-    "LOGIN_TIME": "Login Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "PREVIEW": "Vorschau",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "NEW_PASSWORD": "Neues Passwort",
     "OLD_PASSWORD": "Altes Passwort",
     "SAVE": "Speichern",
     "TRIAL_VERSION": "Testversion",
-    "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?",
+    "SOMEONE_LOGGED_YOU_OUT": "Sie wurden von einem anderen Benutzer abgemeldet. Erneut anmelden?",
     "STAY_LOGGED": "Angemeldet bleiben",
     "WARNING": "Warnung",
     "PAUSE": "Pause",
-    "RESUME": "Lebenslauf",
-    "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung",
-    "LATVIAN": "Lettische",
+    "RESUME": "Fortsetzen",
+    "NO_PAUSES_AVAILABLE": "Keine Pausen verfügbar",
+    "LATVIAN": "Lettisch",
     "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 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden"
+      "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"
     },
     "RESETPASSWORD": "Passwort zurücksetzen",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bevor Ihr Passwort abläuft",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bis zum Ablauf des Passwortes",
     "BROWSER_COMPATIBILITY": "Browserkompatibilität [Chrome, Opera, Safari]",
     "RECORDING": "Aufzeichnung",
-    "INVALID_LICENSE": "Ungültige Lizenz",
+    "INVALID_LICENSE": "Lizenz ungültig",
     "BROWSER": "Browser",
     "OS": "Betriebssystem",
-    "REQUIREMENTS": "Bedarf",
+    "REQUIREMENTS": "Anforderungen",
     "LICENSE": "Lizenz",
     "HTTPS": "HTTPS",
     "WEBRTCSUPPORT": "WebRTC-Unterstützung",
-    "REGISTERED": "Eingetragen",
+    "REGISTERED": "Registriert",
     "NOT_REGISTERED": "Nicht registriert",
-    "WEBRTC_LICENSE_NOT_ENABELD": "Die WebRTC-Lizenz ist nicht aktiviert",
-    "ATTENDED_TRANSFER": "Begleiteter Tranfer",
+    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC-Lizenz ist nicht aktiviert",
+    "ATTENDED_TRANSFER": "Warmer Transfer",
     "TRANSFER": "Transfer",
     "TARGET": "Ziel",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "FILENAME": "Dateiname",
     "STATUS": "Status",
     "ACTIONS": "Aktionen",
-    "SPEAKER": "Redner",
-    "RINGING": "Klingelton",
+    "SPEAKER": "Lautsprecher",
+    "RINGING": "Klingeln",
     "MICROPHONE": "Mikrofon",
     "PROFILE": "Profil",
-    "SERVICES": "Dienstleistungen",
+    "SERVICES": "Dienste",
     "AUDIO": "Audio",
     "FULLNAME": "Vollständiger Name",
     "NAME": "Name",
     "INTERNAL": "Intern",
-    "RINGINGDEVICE": "Klingelgerät",
-    "SPEAKERDEVICE": "Lautsprechergerät",
-    "MICROPHONEDEVICE": "Mikrofon Gerät",
+    "RINGINGDEVICE": "Klingeln auf Gerät",
+    "SPEAKERDEVICE": "Verwendeter Lautsprecher",
+    "MICROPHONEDEVICE": "Verwendetes Mikrofon",
     "CHANGEPASSWORD": "Passwort ändern",
-    "SETTINGS": "die Einstellungen",
+    "SETTINGS": "Einstellungen",
     "AUTOANSWER": "Automatische Antwort",
     "INDONESIAN": "Indonesisch",
     "ARABIC": "Arabisch",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "PREFIXES": "Präfixe",
     "HEBREW": "Hebräisch",
-    "ESTONIAN": "estnisch",
+    "ESTONIAN": "Estnisch",
     "CZECH": "Tschechisch",
-    "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).",
+    "BRAZILIAN": "Brasilianisch",
+    "CONFERENCE": "Konferenz mit 2 aktiven Sitzungen",
+    "CHANGE_LANGUAGE_MESSAGE": "Bitte Seite aktualisieren, um Änderungen zu übernehmen",
     "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 3d81279..501c29a 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
-  <link rel="stylesheet" href="styles/app.287b5956.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.091983fd.js"></script>
+  <script src="scripts/app.e4446350.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.091983fd.js
rename to public/scripts/app.e4446350.js
index 77de572..9ae240e 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.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,t,a){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.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.hasRole("admin")?e.resolve("voiceExtension@get",{fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"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: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:"createdAt,updatedAt,id,appdata,type,exten,context,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:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).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.hasRole("admin")?e.resolve("voiceExtension@get",{fields:"createdAt,updatedAt,id,appdata,type,exten,context,recordingFormat,cutdigits,description",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"createdAt,updatedAt,id,appdata,type,exten,context,recordingFormat,cutdigits,description",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"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: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:"createdAt,updatedAt,id,appdata,type,exten,context,recordingFormat,cutdigits,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:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).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.hasRole("admin")?e.resolve("voiceExtension@get",{fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",type:"internal",sort:"-updatedAt",VoiceExtensionId:"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: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:"createdAt,updatedAt,id,appdata,type,exten,context,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:404})}]},authenticate:!0,permissionId:404,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","msApiProvider","msNavigationServiceProvider"],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.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 o(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=m(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=m(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(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 c(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&&c(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function m(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=o,this.deleteItem=d,this.sortByWeight=c,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:o,deleteItem:d,sort:c,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:function(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}(s(e))},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()}};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}}}).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 w(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function O(){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=w.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=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){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)&&(O(),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)&&O(),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.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";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){var n={baseUrl:"api/"};return n.auth=e(n.baseUrl+"auth/local",{},{local:{method:"post",url:n.baseUrl+"auth/local"},forgot:{method:"post",url:n.baseUrl+"auth/local/forgot"},reset:{method:"post",url:n.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:n.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:n.baseUrl+"auth/google"}}),n.jira=e(n.baseUrl+"jira"),n.rpc=e(n.baseUrl+"rpc",{},{startMonitor:{method:"get",url:n.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:n.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:n.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:n.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:n.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:n.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:n.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:n.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:n.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:n.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:n.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:n.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:n.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:n.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:n.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:n.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:n.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:n.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:n.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:n.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:n.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:n.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:n.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:n.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:n.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:n.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:n.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:n.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:n.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:n.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:n.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:n.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:n.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:n.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:n.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:n.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:n.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),n.version=e(n.baseUrl+"version",{},{fetch:{method:"get",url:n.baseUrl+"version/fetch"},reset:{method:"get",url:n.baseUrl+"version/reset"},pull:{method:"get",url:n.baseUrl+"version/pull"},restart:{method:"get",url:n.baseUrl+"version/restart"},migrations:{method:"get",url:n.baseUrl+"version/migrations"}}),n.system=e(n.baseUrl+"system",{},{killProcess:{method:"get",url:n.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),n.pm2=e(n.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),n.user=e(n.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"users/describe"},clone:{method:"post",url:n.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:n.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:n.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:n.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:n.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:n.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:n.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:n.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:n.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:n.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:n.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:n.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:n.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:n.baseUrl+"users/presence"}}),n.voiceChanSpy=e(n.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:n.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),n.voiceContext=e(n.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:n.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),n.voiceExtension=e(n.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:n.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:n.baseUrl+"voice/extensions/:id/applications"}}),n.voiceMusicOnHold=e(n.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:n.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:n.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:n.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:n.baseUrl+"voice/mohs/:id/sounds"}}),n.voiceQueue=e(n.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/queues/describe"},clone:{method:"post",url:n.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:n.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:n.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:n.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:n.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:n.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:n.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:n.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:n.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:n.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:n.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:n.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:n.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:n.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:n.baseUrl+"voice/queues/:id/blacklists"}}),n.voiceRecording=e(n.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:n.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:n.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:n.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:n.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:n.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}}}}),n.screenRecording=e(n.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:n.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:n.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}}}}),n.voiceMail=e(n.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/mails/describe"},clone:{method:"post",url:n.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:n.baseUrl+"voice/mails/:id/messages"}}),n.voiceMailMessage=e(n.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:n.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:n.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}}}}),n.voiceCallReport=e(n.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:n.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),n.voiceDialReport=e(n.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:n.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),n.voiceAgentReport=e(n.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:n.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),n.voiceQueueReport=e(n.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:n.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:n.baseUrl+"voice/queues/reports/index"}}),n.memberReport=e(n.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"members/reports/describe"},clone:{method:"post",url:n.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),n.trunk=e(n.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"trunks/describe"},clone:{method:"post",url:n.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),n.voiceTransferReport=e(n.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:n.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),n.mailServerOut=e(n.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:n.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),n.mailAccount=e(n.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:n.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:n.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:n.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:n.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:n.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:n.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:n.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:n.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:n.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:n.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:n.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:n.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:n.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:n.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:n.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:n.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:n.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:n.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:n.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:n.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"mail/accounts/:id/users"}}),n.mailQueue=e(n.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"mail/queues/describe"},clone:{method:"post",url:n.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:n.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:n.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:n.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:n.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"mail/queues/:id/users"}}),n.mailSubstatus=e(n.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:n.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),n.mailInteraction=e(n.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:n.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:n.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:n.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:n.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:n.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:n.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}}}}),n.mailMessage=e(n.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"mail/messages/describe"},clone:{method:"post",url:n.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:n.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:n.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:n.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}}}}),n.mailApplication=e(n.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"mail/applications/describe"},clone:{method:"post",url:n.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),n.mailQueueReport=e(n.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:n.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),n.dashboard=e(n.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"dashboards/describe"},clone:{method:"post",url:n.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:n.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:n.baseUrl+"dashboards/:id/items"}}),n.dashboardItem=e(n.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:n.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),n.faxAccount=e(n.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:n.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:n.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:n.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:n.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:n.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:n.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:n.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:n.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:n.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:n.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:n.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:n.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:n.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:n.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:n.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"fax/accounts/:id/users"}}),n.faxApplication=e(n.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"fax/applications/describe"},clone:{method:"post",url:n.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),n.faxInteraction=e(n.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:n.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:n.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:n.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:n.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:n.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:n.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}}}}),n.faxMessage=e(n.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"fax/messages/describe"},clone:{method:"post",url:n.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:n.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:n.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:n.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}}}}),n.faxQueue=e(n.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"fax/queues/describe"},clone:{method:"post",url:n.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:n.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:n.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:n.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:n.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"fax/queues/:id/users"}}),n.faxQueueReport=e(n.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:n.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),n.smsAccount=e(n.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:n.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:n.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:n.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:n.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:n.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:n.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:n.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:n.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:n.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:n.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:n.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:n.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:n.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:n.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"sms/accounts/:id/users"}}),n.smsApplication=e(n.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"sms/applications/describe"},clone:{method:"post",url:n.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),n.smsInteraction=e(n.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:n.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:n.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:n.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:n.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:n.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:n.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}}}}),n.smsMessage=e(n.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"sms/messages/describe"},clone:{method:"post",url:n.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:n.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:n.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:n.baseUrl+"sms/messages/:id/status"}}),n.smsQueue=e(n.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"sms/queues/describe"},clone:{method:"post",url:n.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:n.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:n.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:n.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:n.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"sms/queues/:id/users"}}),n.openchannelAccount=e(n.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:n.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:n.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:n.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:n.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:n.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:n.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:n.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:n.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:n.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:n.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:n.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:n.baseUrl+"openchannel/accounts/:id/send"}}),n.openchannelApplication=e(n.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:n.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),n.openchannelInteraction=e(n.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:n.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:n.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:n.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:n.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:n.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:n.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}}}}),n.openchannelMessage=e(n.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:n.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:n.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:n.baseUrl+"openchannel/messages/:id/reject"}}),n.openchannelQueue=e(n.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:n.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:n.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:n.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:n.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:n.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"openchannel/queues/:id/users"}}),n.chatWebsite=e(n.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"chat/websites/describe"},clone:{method:"post",url:n.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:n.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:n.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:n.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:n.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:n.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:n.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:n.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:n.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:n.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:n.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:n.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:n.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:n.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"chat/websites/:id/users"}}),n.openchannelQueueReport=e(n.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:n.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),n.chatApplication=e(n.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"chat/applications/describe"},clone:{method:"post",url:n.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),n.chatInteraction=e(n.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:n.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:n.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:n.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:n.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:n.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:n.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:n.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:n.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:n.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:n.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:n.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:n.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:n.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}}}}),n.chatMessage=e(n.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"chat/messages/describe"},clone:{method:"post",url:n.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:n.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:n.baseUrl+"chat/messages/:id/reject"}}),n.chatOfflineMessage=e(n.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:n.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),n.chatQueue=e(n.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"chat/queues/describe"},clone:{method:"post",url:n.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:n.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:n.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:n.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:n.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"chat/queues/:id/users"}}),n.chatGroup=e(n.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"chat/groups/describe"},clone:{method:"post",url:n.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:n.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:n.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:n.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:n.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:n.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:n.baseUrl+"chat/groups/:id/messages"}}),n.chatProactiveAction=e(n.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:n.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),n.cmCompany=e(n.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"cm/companies/describe"},clone:{method:"post",url:n.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:n.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:n.baseUrl+"cm/companies/:id/contacts"}}),n.cmContact=e(n.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:n.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:n.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:n.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:n.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:n.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:n.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:n.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:n.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:n.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:n.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:n.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:n.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:n.baseUrl+"cm/contacts/:id/journey"}}),n.cmHopper=e(n.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:n.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:n.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:n.baseUrl+"cm/hopper/opencontacts"}}),n.cmHopperBlack=e(n.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:n.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),n.cmHopperFinal=e(n.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:n.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:n.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:n.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:n.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:n.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:n.baseUrl+"cm/hopper_final/checkContactHopper"}}),n.cmHopperHistory=e(n.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:n.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),n.cmCustomField=e(n.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:n.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),n.action=e(n.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"actions/describe"},clone:{method:"post",url:n.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),n.automation=e(n.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"automations/describe"},clone:{method:"post",url:n.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:n.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:n.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:n.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:n.baseUrl+"automations/:id/actions"}}),n.cannedAnswer=e(n.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"canned_answers/describe"},clone:{method:"post",url:n.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),n.disposition=e(n.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"dispositions/describe"},clone:{method:"post",url:n.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),n.condition=e(n.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"conditions/describe"},clone:{method:"post",url:n.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),n.interval=e(n.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"intervals/describe"},clone:{method:"post",url:n.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:n.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:n.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:n.baseUrl+"intervals/:id/sub_intervals/create_many"}}),n.pause=e(n.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"pauses/describe"},clone:{method:"post",url:n.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),n.cdr=e(n.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"cdr/describe"},clone:{method:"post",url:n.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),n.voiceQueuesLog=e(n.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:n.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),n.schedule=e(n.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"schedules/describe"},clone:{method:"post",url:n.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:n.baseUrl+"schedules/:id/run"}}),n.sound=e(n.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"sounds/describe"},clone:{method:"post",url:n.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:n.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:n.baseUrl+"sounds/:id"}}),n.tag=e(n.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"tags/describe"},clone:{method:"post",url:n.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),n.template=e(n.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"templates/describe"},clone:{method:"post",url:n.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),n.trigger=e(n.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"triggers/describe"},clone:{method:"post",url:n.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:n.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:n.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:n.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:n.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:n.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:n.baseUrl+"triggers/:id/actions"}}),n.variable=e(n.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"variables/describe"},clone:{method:"post",url:n.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),n.integration=e(n.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/describe"},clone:{method:"post",url:n.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),n.integrationReport=e(n.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:n.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),n.analyticCustomReport=e(n.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:n.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:n.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:n.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:n.baseUrl+"analytics/custom_reports/:id/query"}}),n.analyticDefaultReport=e(n.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:n.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:n.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:n.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:n.baseUrl+"analytics/default_reports/:id/query"}}),n.analyticExtractedReport=e(n.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:n.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:n.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}}}}),n.analyticMetric=e(n.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:n.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),n.analyticFieldReport=e(n.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:n.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:n.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:n.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:n.baseUrl+"analytics/field_reports/:id/create_many"}}),n.analyticTreeReport=e(n.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:n.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),n.intSalesforceAccount=e(n.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:n.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:n.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:n.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),n.intSalesforceConfiguration=e(n.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:n.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:n.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:n.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),n.intSalesforceField=e(n.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:n.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),n.intSugarcrmAccount=e(n.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:n.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:n.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:n.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),n.intSugarcrmConfiguration=e(n.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:n.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:n.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:n.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),n.intSugarcrmField=e(n.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:n.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),n.intDeskAccount=e(n.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:n.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:n.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:n.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/desk/accounts/:id/fields"}}),n.intDeskConfiguration=e(n.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:n.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:n.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:n.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:n.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:n.baseUrl+"integrations/desk/configurations/:id/tags"}}),n.intDeskField=e(n.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:n.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),n.intZohoAccount=e(n.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:n.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:n.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:n.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/zoho/accounts/:id/fields"}}),n.intZohoConfiguration=e(n.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:n.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:n.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:n.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),n.intZohoField=e(n.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:n.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),n.intZendeskAccount=e(n.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:n.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:n.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:n.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),n.intZendeskConfiguration=e(n.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:n.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:n.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:n.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:n.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:n.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),n.intZendeskField=e(n.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:n.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),n.intFreshdeskAccount=e(n.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:n.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:n.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:n.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),n.intFreshdeskConfiguration=e(n.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:n.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:n.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:n.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:n.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:n.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),n.intFreshdeskField=e(n.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:n.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),n.intVtigerAccount=e(n.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:n.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:n.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:n.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),n.intVtigerConfiguration=e(n.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:n.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:n.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:n.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),n.intVtigerField=e(n.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:n.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),n.intServicenowAccount=e(n.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:n.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:n.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:n.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),n.intServicenowConfiguration=e(n.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:n.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:n.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:n.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),n.intServicenowField=e(n.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:n.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),n.intDynamics365Account=e(n.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:n.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:n.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:n.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),n.intDynamics365Configuration=e(n.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:n.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:n.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:n.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),n.intDynamics365Field=e(n.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:n.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),n.intFreshsalesAccount=e(n.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:n.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:n.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:n.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),n.intFreshsalesConfiguration=e(n.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:n.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:n.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:n.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:n.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),n.intFreshsalesField=e(n.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:n.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),n.network=e(n.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"networks/describe"},clone:{method:"post",url:n.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),n.chatQueueReport=e(n.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:n.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),n.chatInternalMessage=e(n.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:n.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:n.baseUrl+"chat/internal/messages/users"}}),n.jscriptyAnswerReport=e(n.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:n.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),n.jscriptyQuestionReport=e(n.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:n.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),n.jscriptySessionReport=e(n.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:n.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:n.baseUrl+"jscripty/sessions/reports/:id/questions"}}),n.smsQueueReport=e(n.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:n.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),n.squareReport=e(n.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"square/reports/describe"},clone:{method:"post",url:n.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),n.squareReportDetail=e(n.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:n.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),n.jscriptyProject=e(n.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:n.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:n.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:n.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:n.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}}}}),n.setting=e(n.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"settings/describe"},clone:{method:"post",url:n.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:n.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:n.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:n.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:n.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:n.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:n.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:n.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:n.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:n.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:n.baseUrl+"settings/now"}}),n.squareOdbc=e(n.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"square/odbc/describe"},clone:{method:"post",url:n.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:n.baseUrl+"square/odbc/:id/test"}}),n.squareProject=e(n.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"square/projects/describe"},clone:{method:"post",url:n.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:n.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:n.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:n.baseUrl+"square/projects/:id/users"}}),n.squareRecording=e(n.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"square/recordings/describe"},clone:{method:"post",url:n.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:n.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}}}}),n.squareMessage=e(n.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"square/messages/describe"},clone:{method:"post",url:n.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),n.team=e(n.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"teams/describe"},clone:{method:"post",url:n.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:n.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:n.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:n.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"teams/:id/users"}}),n.license=e(n.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"license/describe"},clone:{method:"post",url:n.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),n.campaign=e(n.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"campaigns/describe"},clone:{method:"post",url:n.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:n.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:n.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:n.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:n.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:n.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:n.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:n.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:n.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:n.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:n.baseUrl+"campaigns/:id/blacklists"}}),n.migration=e(n.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"migrations/describe"},clone:{method:"post",url:n.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),n.attachment=e(n.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"attachments/describe"},clone:{method:"post",url:n.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:n.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}}}}),n.plugin=e(n.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"plugins/describe"},clone:{method:"post",url:n.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:n.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:n.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:n.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:n.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:n.baseUrl+"plugins/webhook"}}),n.mailTransferReport=e(n.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:n.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),n.chatTransferReport=e(n.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:n.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),n.faxTransferReport=e(n.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:n.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),n.openchannelTransferReport=e(n.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:n.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),n.smsTransferReport=e(n.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:n.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),n.cmList=e(n.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"cm/lists/describe"},clone:{method:"post",url:n.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:n.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:n.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:n.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:n.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:n.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:n.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:n.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:n.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"cm/lists/:id/users"}}),n.voicePrefix=e(n.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:n.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"voice/prefixes/:id/users"}}),n.userProfile=e(n.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"userProfiles/describe"},clone:{method:"post",url:n.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:n.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:n.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:n.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:n.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:n.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:n.baseUrl+"userProfiles/:id/resources"}}),n.userProfileSection=e(n.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:n.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),n.userProfileResource=e(n.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:n.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),n.userNotification=e(n.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"userNotifications/describe"},clone:{method:"post",url:n.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:n.baseUrl+"userNotifications/"}}),n.whatsappAccount=e(n.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:n.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:n.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:n.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:n.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:n.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:n.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:n.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:n.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:n.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:n.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:n.baseUrl+"whatsapp/accounts/:id/send"}}),n.whatsappApplication=e(n.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:n.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),n.whatsappInteraction=e(n.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:n.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:n.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:n.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:n.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:n.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:n.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}}}}),n.whatsappMessage=e(n.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:n.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:n.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:n.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:n.baseUrl+"whatsapp/messages/:id/status"}}),n.whatsappQueueReport=e(n.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:n.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),n.whatsappTransferReport=e(n.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:n.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),n.whatsappQueue=e(n.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:n.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:n.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:n.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:n.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:n.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:n.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:n.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:n.baseUrl+"whatsapp/queues/:id/users"}}),n.cloudProvider=e(n.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:n.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:n.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),n.realtime=e(n.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:n.baseUrl+"realtime/queues"}}),n}e.$inject=["$resource"],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.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,w,O,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 X(){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 K(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(w,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,w.push(n),P.values.pause_id=U(w,"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(w,"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:O,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(w,"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":X();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":K()}}();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[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"am-ET",option:"Amharic (Ethiopia)"},{value:"hy-AM",option:"Armenian (Armenia)"},{value:"az-AZ",option:"Azerbaijani (Azerbaijan)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"bn-BD",option:"Bengali (Bangladesh)"},{value:"bn-IN",option:"Bengali (India)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"de-DE",option:"German (Germany)"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GH",option:"English (Ghana)"},{value:"en-GB",option:"English (United Kingdom)"},{value:"en-IN",option:"English (India)"},{value:"en-IE",option:"English (Ireland)"},{value:"en-KE",option:"English (Kenya)"},{value:"en-NZ",option:"English (New Zealand)"},{value:"en-NG",option:"English (Nigeria)"},{value:"en-PH",option:"English (Philippines)"},{value:"en-ZA",option:"English (South Africa)"},{value:"en-TZ",option:"English (Tanzania)"},{value:"en-US",option:"English (United States)"},{value:"es-AR",option:"Spanish (Argentina)"},{value:"es-BO",option:"Spanish (Bolivia)"},{value:"es-CL",option:"Spanish (Chile)"},{value:"es-CO",option:"Spanish (Colombia)"},{value:"es-CR",option:"Spanish (Costa Rica)"},{value:"es-EC",option:"Spanish (Ecuador)"},{value:"es-SV",option:"Spanish (El Salvador)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (United States)"},{value:"es-GT",option:"Spanish (Guatemala)"},{value:"es-HN",option:"Spanish (Honduras)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"es-NI",option:"Spanish (Nicaragua)"},{value:"es-PA",option:"Spanish (Panama)"},{value:"es-PY",option:"Spanish (Paraguay)"},{value:"es-PE",option:"Spanish (Peru)"},{value:"es-PR",option:"Spanish (Puerto Rico)"},{value:"es-DO",option:"Spanish (Dominican Republic)"},{value:"es-UY",option:"Spanish (Uruguay)"},{value:"es-VE",option:"Spanish (Venezuela)"},{value:"eu-ES",option:"Basque (Spain)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"gl-ES",option:"Galician (Spain)"},{value:"ka-GE",option:"Georgian (Georgia)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hr-HR",option:"Croatian (Croatia)"},{value:"zu-ZA",option:"Zulu (South Africa)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"it-IT",option:"Italian (Italy)"},{value:"jv-ID",option:"Javanese (Indonesia)"},{value:"kn-IN",option:"Kannada (India)"},{value:"km-KH",option:"Khmer (Cambodia)"},{value:"lo-LA",option:"Lao (Laos)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"lt-LT",option:"Lithuanian (Lithuania)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"mr-IN",option:"Marathi (India)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"ne-NP",option:"Nepali (Nepal)"},{value:"nb-NO",option:"Norwegian Bokmal (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:"si-LK",option:"Sinhala (Srilanka)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"sl-SI",option:"Slovenian (Slovenia)"},{value:"su-ID",option:"Sundanese (Indonesia)"},{value:"sw-TZ",option:"Swahili (Tanzania)"},{value:"sw-KE",option:"Swahili (Kenya)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"ta-SG",option:"Tamil (Singapore)"},{value:"ta-LK",option:"Tamil (Sri Lanka)"},{value:"ta-MY",option:"Tamil (Malaysia)"},{value:"te-IN",option:"Telugu (India)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"ur-PK",option:"Urdu (Pakistan)"},{value:"ur-IN",option:"Urdu (India)"},{value:"el-GR",option:"Greek (Greece)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Serbia)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"he-IL",option:"Hebrew (Israel)"},{value:"ar-IL",option:"Arabic (Israel)"},{value:"ar-JO",option:"Arabic (Jordan)"},{value:"ar-AE",option:"Arabic (United Arab Emirates)"},{value:"ar-BH",option:"Arabic (Bahrain)"},{value:"ar-DZ",option:"Arabic (Algeria)"},{value:"ar-SA",option:"Arabic (Saudi Arabia)"},{value:"ar-IQ",option:"Arabic (Iraq)"},{value:"ar-KW",option:"Arabic (Kuwait)"},{value:"ar-MA",option:"Arabic (Morocco)"},{value:"ar-TN",option:"Arabic (Tunisia)"},{value:"ar-OM",option:"Arabic (Oman)"},{value:"ar-PS",option:"Arabic (State of Palestine)"},{value:"ar-QA",option:"Arabic (Qatar)"},{value:"ar-LB",option:"Arabic (Lebanon)"},{value:"ar-EG",option:"Arabic (Egypt)"},{value:"fa-IR",option:"Persian (Iran)"},{value:"hi-IN",option:"Hindi (India)"},{value:"th-TH",option:"Thai (Thailand)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"cmn-Hant-TW",option:"Chinese, Mandarin (Traditional, Taiwan)"},{value:"yue-Hant-HK",option:"Chinese, Cantonese (Traditional, Hong Kong)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"cmn-Hans-HK",option:"Chinese, Mandarin (Simplified, Hong Kong)"},{value:"cmn-Hans-CN",option:"Chinese, Mandarin (Simplified, China)"}]}).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.table="projects",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)),O(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)),O(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=w,b.getAgentGlobalStatus=O,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)),O(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),O(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"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum"])))},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)),O(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 w(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 O(e){var n="unknown";n=_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"pause":_.some([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"*pause":_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(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 w(){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 O(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&&O()})},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=w,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=O,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(O(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),w())})}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 w(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 O(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=w,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(O(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){w(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(O(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",O),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)&&O({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+"/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/composeFax/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/composeMail/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/composeMail/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/composeOpenchannel/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/composeSms/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/composeWhatsapp/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,a,i,s,o,r,t,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var t=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,e=!h.tab.interaction.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(a.body),clickOutsideToClose:e,escapeToClose:e,onRemoving:function(e,n){h.user&&h.interaction.Account.mandatoryDisposition&&!t&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&i.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,s.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(a.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,i.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){console.error(e)}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(a.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 o.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+=" - "+t.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)for(var e=0;e<h.messages.rows.length;e+=1)"in"!==h.messages.rows[e].direction||h.messages.rows[e].read||(l[h.tab.channel+"Message"].accept({id:h.messages.rows[e].id,UserId:h.user.id}),h.acceptedMessages.push(h.messages.rows[e].id))}(),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&&i.$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 i.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return i.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return i.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return i.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return i.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return i.$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(){s.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(a.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){console.error(e),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",parent:angular.element(a.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!"}),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()})})})},h.composeSmsInteraction=function(e,n){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",parent:angular.element(a.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){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/dialog.html",parent:angular.element(a.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){s.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeChat/dialog.html",parent:angular.element(a.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){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",parent:angular.element(a.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?s.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel}}).then(function(e){h.tab.saved=Boolean(e),e&&i.$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:r.protocol()+"://"+r.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=o.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){console.error(e)})},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,i.$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=o.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 o(function(e,n){var t=h.journey.length;return e(I(t))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},i.$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,n){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){var l=this;function d(e){n.hide(e)}l.currentUser=t.getCurrentUser(),l.channel=s.toLowerCase(),l.message=o,l.account=r,l.transfer={id:0,type:l.account.queueTransfer?"queue":"agent"},l.agents=l.queues={count:0,rows:[]},l.queueMethod=l.channel+"Queue",l.queueNotifyMethod=l.channel+"QueueNotify",l.onTransfer=function(){d(!0),e(function(){return a.rpc["agent"===l.transfer.type?"agentNotify":l.queueNotifyMethod]({id:l.transfer.id,messageId:l.message.id,channel:l.channel}).$promise.then(function(e){i.success({title:"Trasfer properly done!",msg:"Transfer "+l.transfer.type+" has been done!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.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)},l.closeDialog=d,l.init=function(){return a.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:!0}).$promise.then(function(e){return l.agents=e||{count:0,rows:[]},a[l.queueMethod].get({fields:"id,name",sort:"name",nolimit:!0}).$promise}).then(function(e){l.queues=e||{count:0,rows:[]}}).catch(function(e){console.error(e)})},l.init()}e.$inject=["$mdDialog","$timeout","Auth","api","toasty","channel","message","account"],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 e&&(e=e.toString().replace(",",".")),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().$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)),O(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)),O(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=w,b.getAgentGlobalStatus=O,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)),O(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),O(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"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum"])))},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)),O(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 w(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 O(e){var n="unknown";n=_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"pause":_.some([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"*pause":_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(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)),O(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)),O(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=w,b.getAgentGlobalStatus=O,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)),O(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),O(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"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum"])))},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)),O(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 w(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 O(e){var n="unknown";n=_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"pause":_.some([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"*pause":_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(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)),O(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)),O(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=w,b.getAgentGlobalStatus=O,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)),O(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),O(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"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum"])))},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)),O(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 w(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 O(e){var n="unknown";n=_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"pause":_.some([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"*pause":_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(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)),O(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)),O(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=w,b.getAgentGlobalStatus=O,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)),O(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),O(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"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum"])))},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)),O(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 w(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 O(e){var n="unknown";n=_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"pause":_.some([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"*pause":_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(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)),O(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)),O(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=w,b.getAgentGlobalStatus=O,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)),O(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),O(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"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum"])))},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)),O(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 w(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 O(e){var n="unknown";n=_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"pause":_.some([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"*pause":_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(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,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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_INBOUNDROUTE",g.inboundroute=angular.copy(l),g.inboundroutes=r,g.newInboundRoute=!1,g.inboundroute||(g.inboundroute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},g.title="VOICE.NEW_INBOUNDROUTE",g.newInboundRoute=!0),g.addNewInboundRoute=function(){g.errors=[],d.voiceExtension.save(g.inboundroute).$promise.then(function(e){g.inboundroutes.unshift(e.toJSON()),o.success({title:"InboundRoute properly created",msg:g.inboundroute.name?g.inboundroute.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInboundRoute=function(){g.errors=[],d.voiceExtension.update({id:g.inboundroute.id},g.inboundroute).$promise.then(function(e){var n=_.find(g.inboundroutes,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"InboundRoute properly saved!",msg:g.inboundroute.name?g.inboundroute.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInboundRoute=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The inboundroute will be deleted.").ariaLabel("Delete InboundRoute").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceExtension.delete({id:g.inboundroute.id}).$promise.then(function(){_.remove(g.inboundroutes,{id:g.inboundroute.id}),o.success({title:"InboundRoute properly deleted!",msg:(g.inboundroute.name||"inboundroute")+" has been deleted!"}),v(g.inboundroute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.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.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.contexts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.contexts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.contexts,{id:e.resourceId})}),t=null;if(g.inboundroute&&(t=_.find(g.contexts,{name:g.inboundroute.context})),t&&!_.some(n,["id",t.id])){var a=_.find(g.contexts,{id:t.id});a.canSelect=!1,n.push(a)}g.contexts=n}):d.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){g.contexts=e.rows||[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","inboundroutes","inboundroute","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(m,i,a,s,e){var u=this;function n(e,n){if(u.inboundrouteApps.rows.length){var t=u.inboundrouteApps.rows[n]?u.inboundrouteApps.rows[n]:u.inboundrouteApps.rows[0];i.show({controller:"EditInboundApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundroutes/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundrouteApp:t,inboundroute:u.inboundroute,crudPermissions:u.crudPermissions}}).then(function(e){e&&(e.id?u.inboundrouteApps.rows[n]=e:u.inboundrouteApps.rows.splice(n,0,e),o())}).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 o(){var e=["queue","playback"],n=2,t=[];t.push({type:"inbound",app:"Set",appdata:"CDR(type)=inbound",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:n++,VoiceExtensionId:u.inboundroute.id}),t.push({type:"inbound",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:n++,VoiceExtensionId:u.inboundroute.id}),t.push({type:"inbound",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:n++,VoiceExtensionId:u.inboundroute.id}),t.push({type:"inbound",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:n++,VoiceExtensionId:u.inboundroute.id});for(var a=0,i=0;a<u.inboundrouteApps.rows.length;a++,i=0){var s=u.inboundrouteApps.rows[a],o=[],r=[];s.intervals="*,*,*,*"!==s.interval?[s.interval]:s.IntervalId?_.map(_.filter(u.intervals.rows,{IntervalId:s.IntervalId}),"interval"):[],s.context=u.inboundroute.context,s.exten=u.inboundroute.exten,s.type&&(s.type=s.type.toLowerCase()),s.hasOwnProperty("answer")&&e.includes(s.app.toLowerCase())&&"custom"!==s.appType&&(s.answer?(o.push({type:s.type.toLowerCase(),app:"ExecIf",appdata:"$[${XCALLY-MOTION-ANSWER}=0]?Answer",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:s.intervals.length+n+i++,VoiceExtensionId:u.inboundroute.id}),o.push({type:s.type.toLowerCase(),app:"Set",appdata:"XCALLY-MOTION-ANSWER=1",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:s.intervals.length+n+i++,VoiceExtensionId:u.inboundroute.id})):(o.push({type:s.type.toLowerCase(),app:"ExecIf",appdata:"$[${XCALLY-MOTION-PROGRESS}=0]?Progress",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:s.intervals.length+n+i++,VoiceExtensionId:u.inboundroute.id}),o.push({type:s.type.toLowerCase(),app:"Set",appdata:"XCALLY-MOTION-PROGRESS=1",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:s.intervals.length+n+i++,VoiceExtensionId:u.inboundroute.id})));for(var l=0;l<s.intervals.length;l++){var d=n+s.intervals.length,c=l===s.intervals.length-1?n+o.length+r.length+2:n+l+1;o.splice(l,0,{type:"inbound",app:"GotoIfTime",appdata:s.intervals[l]+"?"+u.inboundroute.context+",${EXTEN},"+d+":"+u.inboundroute.context+",${EXTEN},"+c,exten:u.inboundroute.exten,context:u.inboundroute.context,priority:n+l,VoiceExtensionId:u.inboundroute.id})}s.priority=o.length?_.last(o).priority+1:n,n=(r.length?_.last(r).priority:s.priority)+1,t=_.concat(t,o,[s],r)}t.push({type:"inbound",app:"Hangup",exten:u.inboundroute.exten,context:u.inboundroute.context,priority:n,VoiceExtensionId:u.inboundroute.id}),m.voiceExtension.addApplications({id:u.inboundroute.id},_.sortBy(t,"priority")).$promise.then(function(e){u.inboundrouteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){u.inboundrouteApps=e||{count:0,rows:[]}}u.currentUser=e.getCurrentUser(),u.inboundroute={},u.inboundrouteApps={count:0,rows:[]},u.selectedInboundRouteApps=[],u.crudPermissions,u.query={sort:"priority"},u.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"Queue",appType:"queue",context:"from-voip-provider",type:"Inbound",appdata:",xX,,,300,,,,,",icon:"icon-apps",options:"xX",interval:"*,*,*,*",answer:!0,isApp:!0,extraApi:[{name:"sounds",field:{name:"sound",key:"save_name",prefix:"/var/opt/motion2/server/files/sounds/converted/"},route:"sound",filters:{fields:"id,name,save_name",sort:"name",nolimit:!0},permissions:{section:1007}},{name:"queues",field:{name:"queue",key:"name"},route:"voiceQueue",filters:{type:"inbound",fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:401}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",required:!0,param:0},{title:"Options",name:"options",type:"text",param:1},{title:"Url",name:"URL",type:"text",param:2},{title:"Announce_Overrides",name:"sound",type:"apiselect",values:"sounds",value:"'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}'",option:"sound.name",defaultValues:[{value:"''",option:"None"}],param:3},{title:"Timeout",name:"timeout",type:"number",min:0,param:4},{title:"Agi",name:"agi",type:"text",param:5},{title:"Macro",name:"macro",type:"text",param:6},{title:"GoSub",name:"gosub",type:"text",param:7},{title:"Rule",name:"rule",type:"text",param:8},{title:"Position",name:"position",type:"number",min:0,param:9},{title:"Answer",name:"answer",type:"switch",general:!0}]},{app:"Playback",appType:"playback",context:"from-voip-provider",type:"Inbound",icon:"icon-apps",interval:"*,*,*,*",answer:!0,isApp:!0,extraApi:[{name:"sounds",field:{name:"sound",key:"save_name",prefix:"/var/opt/motion2/server/files/sounds/converted/"},route:"sound",filters:{fields:"id,name,save_name",sort:"name",nolimit:!0},permissions:{section:1007}}],fields:[{title:"Audio_Files",name:"appdata",type:"apiselect",values:"sounds",value:"'/var/opt/motion2/server/files/sounds/converted/{{appdata.save_name}}'",option:"appdata.name",required:!0,param:0},{title:"Options",name:"options",type:"text",param:1},{title:"Answer",name:"answer",type:"switch",general:!0}]},{app:"Dial",appType:"dial",context:"from-voip-provider",type:"Inbound",icon:"icon-apps",interval:"*,*,*,*",options:"xX",isApp:!0,fields:[{title:"Technology/Resource",name:"tech",type:"text",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",min:0,param:1},{title:"Options",name:"options",type:"text",param:2},{title:"Url",name:"url",type:"text",param:3}]},{app:"Dial",appType:"internalDial",context:"from-voip-provider",type:"Inbound",icon:"icon-apps",interval:"*,*,*,*",options:"xX",isApp:!0,extraApi:[{name:"users",field:{name:"user",key:"name",prefix:"SIP/"},route:"user",filters:{fields:"id,name,role",sort:"name",nolimit:!0},permissions:{sections:[{id:202,role:"agent"},{id:203,role:"telephone"}]}}],fields:[{title:"User",name:"user",type:"apiselect",values:"users",value:"'SIP/{{user.name}}'",option:"user.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",min:0,param:1},{title:"Options",name:"options",type:"text",param:2},{title:"Url",name:"url",type:"text",param:3}]},{app:"Dial",appType:"externalDial",context:"from-voip-provider",type:"inbound",icon:"icon-apps",interval:"*,*,*,*",options:"xX",isApp:!0,extraApi:[{name:"trunks",field:{name:"trunk",key:"name"},route:"trunk",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1011}}],fields:[{title:"Trunk",name:"trunk",type:"apiselect",values:"trunks",value:"trunk.name",option:"trunk.name",required:!0,param:0},{title:"Phone",name:"phone",required:!0,type:"text"},{title:"Timeout",name:"timeout",type:"number",min:0,param:1},{title:"Options",name:"options",type:"text",param:2},{title:"Url",name:"url",type:"text",param:3}]},{app:"Dial",appType:"ringGroup",context:"from-voip-provider",type:"inbound",icon:"icon-apps",interval:"*,*,*,*",options:"xX",isApp:!0,extraApi:[{name:"users",field:{name:"multipleUsers",key:"name",prefix:"SIP/"},route:"user",filters:{fields:"id,name,role",sort:"name",nolimit:!0},permissions:{sections:[{id:202,role:"agent"},{id:203,role:"telephone"}]}}],fields:[{title:"User",name:"multipleUsers",type:"apiselect",multiple:!0,values:"users",value:"'SIP/{{multipleUsers.name}}'",option:"multipleUsers.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",min:0,param:1},{title:"Options",name:"options",type:"text",param:2},{title:"Url",name:"url",type:"text",param:3}]},{app:"AGI",alias:"CallySquare",appType:"agi",context:"from-voip-provider",type:"inbound",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"projects",field:{name:"project",key:"name",prefix:"agi://127.0.0.1/square,"},route:"squareProject",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1103}}],fields:[{title:"Project",name:"project",type:"apiselect",values:"projects",value:"'agi://127.0.0.1/square,{{project.name}}'",option:"project.name",required:!0,param:0}]},{app:"goto",appType:"goTo",context:"from-voip-provider",type:"Inbound",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"contexts",field:{name:"context",key:"name"},route:"voiceContext",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:405}}],fields:[{title:"Context",name:"context",type:"apiselect",values:"contexts",value:"context.name",option:"context.name",required:!0,param:0},{title:"Extension",name:"extension",type:"text",required:!0,param:1},{title:"Priority",name:"priority",type:"text",required:!0,param:2}]},{app:"hangup",appType:"hangup",context:"from-voip-provider",type:"Inbound",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Hangup_Cause",name:"appdata",type:"select",param:0,values:[{option:"HANGUPCAUSE_1",value:"'1'"},{option:"HANGUPCAUSE_16",value:"'16'"},{option:"HANGUPCAUSE_17",value:"'17'"},{option:"HANGUPCAUSE_18",value:"'18'"},{option:"HANGUPCAUSE_21",value:"'21'"},{option:"HANGUPCAUSE_22",value:"'22'"},{option:"HANGUPCAUSE_27",value:"'27'"},{option:"HANGUPCAUSE_38",value:"'38'"},{option:"HANGUPCAUSE_41",value:"'41'"}],translate:!0,required:!0,general:!0}]},{app:"Set",appType:"set",context:"from-voip-provider",type:"Inbound",separator:"=",icon:"icon-apps",interval:"*,*,*,*",extraApi:[{name:"variables",field:{name:"name",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],isApp:!0,fields:[{title:"Variable",name:"name",type:"apiselect",values:"variables",value:"name.name",option:"name.name",required:!0,param:0},{title:"Value",name:"value",type:"text",required:!0,param:1}]},{app:null,appType:"custom",icon:"icon-apps",type:"Inbound",interval:"*,*,*,*",isApp:!0,fields:[{title:"Application_Name",name:"app",type:"text",required:!0,param:0},{title:"Arguments",name:"appdata",type:"text",param:1}]},{app:"Voicemail",appType:"voicemail",context:"from-voip-provider",icon:"icon-apps",type:"Inbound",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"voiceMails",field:{name:"voiceMail",key:"mailbox",suffix:"@from-voicemail"},route:"voiceMail",filters:{fields:"id,mailbox",sort:"mailbox",nolimit:!0},permissions:{section:406}}],fields:[{title:"Mailbox@Context",name:"voiceMail",type:"apiselect",values:"voiceMails",value:"'{{voiceMail.mailbox}}@from-voicemail'",option:"voiceMail.mailbox",required:!0,param:0},{title:"Options",name:"options",type:"text",param:1}]}],["app"]),{isApp:!1}),u.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},u.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){o()}},u.init=function(e,n){u.inboundroute=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.applications.disabled=!u.crudPermissions.canEdit,u.query.VoiceExtensionId=e.id,u.query.isApp=!0,u.query.nolimit=!0,u.getInboundRouteApps(),u.getIntervals()},u.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(){u.inboundrouteApps.rows.splice(n,1),o()},function(){console.log("CANCEL")})},u.getInboundRouteApps=function(){u.promise=m.voiceExtension.get(u.query,t).$promise},u.editInboundRouteApp=n,u.editInterval=function(e,n){if(u.inboundrouteApps.rows.length){var t=u.inboundrouteApps.rows[n]?u.inboundrouteApps.rows[n]:u.inboundrouteApps.rows[0];i.show({controller:"EditInboundAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundroutes/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:u.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,o())})}},u.deleteInboundRouteApp=function(e){_.remove(u.inboundrouteApps.rows,{id:e.id}),o(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},u.deleteSelectedInboundRouteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+u.selectedInboundRouteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){u.selectedInboundRouteApps.forEach(function(e){_.remove(u.inboundrouteApps.rows,{id:e.id})}),u.selectedInboundRouteApps=[],o()})},u.rewriteRouting=o,u.getIntervals=function(){return m.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){u.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.voice").controller("InboundRouteActionsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.agi=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agi.appdata)switch(l.agi.appType?l.agi.appType.toLowerCase():l.agi.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agi.appdata.split(",");l.agi.key=d[0],l.agi.language=d[1],l.agi.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agi.appdata.split(",");l.agi.projectId=d[0],l.agi.clientEmail=d[1],l.agi.privateKey=d[2],l.agi.language=d[3],l.agi.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agi.appdata.split(",");l.agi.accesskeyid=d[0],l.agi.secretaccesskey=d[1],l.agi.lexregion=d[2],l.agi.botname=d[3],l.agi.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agi.appdata.split(",");l.agi.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agi.text=d.slice(1,d.length).join(",");break;case"message":l.agi.text=l.agi.appdata;break;case"set":l.agi.name=l.agi.appdata.split("=")[0],l.agi.value=l.agi.appdata.split("=")[1];break;case"agi":l.agi.project=l.agi.appdata;break;default:var c=l.agi.appdata.split(",");l.agi.project=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.agi.type&&"outbound"===l.agi.type.toLowerCase()&&"outbounddial"===l.agi.appType.toLowerCase()&&(l.agi.prefix=l.agi.phone?l.agi.phone.split("$")[0]:void 0,l.agi.callerId=l.agi.callerID?"CALLERID(all)="+l.agi.callerID:void 0),l.saveInboundRouteApp=function(){l.errors=[];var e=[];l.agi.type&&"outbound"===l.agi.type.toLowerCase()&&"outboundDial"===l.agi.appType&&(l.agi.phone=i.cutdigits?(l.agi.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agi.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agi.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agi.options+="U(xcally-mixmonitor-context)"):l.agi.options=l.agi.options.replace("U(xcally-mixmonitor-context)",""));if(l.agi.appType&&"custom"===l.agi.appType);else switch((l.agi.app||l.agi.appType).toLowerCase()){case"set":l.agi.appdata=l.agi.name+"="+l.agi.value;break;case"custom":break;default:e[0]=l.agi.project,l.agi.appdata=e.join(",")}m(l.agi)},l.closeDialog=m,o.hasRole("admin")?s.squareProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.squareProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1103}).$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.projects,{id:e.resourceId})}),t=null;if(l.agi&&(t=_.find(l.projects,{name:l.agi.project})),t&&!_.some(n,["id",t.id])){var a=_.find(l.projects,{id:t.id});a.canSelect=!1,n.push(a)}l.projects=n})}else{var t=[],a=null;l.agi&&(a=_.find(l.projects,{name:l.agi.project}));for(var i=0;i<l.projects.length;i++)a&&l.projects[i].id===a.id&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundAppagiDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.custom=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.custom.appdata)switch(l.custom.appType?l.custom.appType.toLowerCase():l.custom.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.custom.appdata.split(",");l.custom.key=d[0],l.custom.language=d[1],l.custom.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.custom.appdata.split(",");l.custom.projectId=d[0],l.custom.clientEmail=d[1],l.custom.privateKey=d[2],l.custom.language=d[3],l.custom.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.custom.appdata.split(",");l.custom.accesskeyid=d[0],l.custom.secretaccesskey=d[1],l.custom.lexregion=d[2],l.custom.botname=d[3],l.custom.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.custom.appdata.split(",");l.custom.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.custom.text=d.slice(1,d.length).join(",");break;case"message":l.custom.text=l.custom.appdata;break;case"set":l.custom.name=l.custom.appdata.split("=")[0],l.custom.value=l.custom.appdata.split("=")[1];break;case"agi":l.custom.project=l.custom.appdata;break;default:var c=l.custom.appdata.split(",");l.custom.app=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.custom.appdata=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}function m(e){n.hide(e)}l.custom.type&&"outbound"===l.custom.type.toLowerCase()&&"outbounddial"===l.custom.appType.toLowerCase()&&(l.custom.prefix=l.custom.phone?l.custom.phone.split("$")[0]:void 0,l.custom.callerId=l.custom.callerID?"CALLERID(all)="+l.custom.callerID:void 0),l.saveInboundRouteApp=function(){l.errors=[];var e=[];l.custom.type&&"outbound"===l.custom.type.toLowerCase()&&"outboundDial"===l.custom.appType&&(l.custom.phone=i.cutdigits?(l.custom.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.custom.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.custom.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.custom.options+="U(xcally-mixmonitor-context)"):l.custom.options=l.custom.options.replace("U(xcally-mixmonitor-context)",""));if(l.custom.appType&&"custom"===l.custom.appType);else switch((l.custom.app||l.custom.appType).toLowerCase()){case"set":l.custom.appdata=l.custom.name+"="+l.custom.value;break;case"custom":break;default:e[0]=l.custom.app,e[1]=l.custom.appdata,l.custom.appdata=e.join(",")}m(l.custom)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundAppcustomDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.dial=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dial.appdata)switch(l.dial.appType?l.dial.appType.toLowerCase():l.dial.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dial.appdata.split(",");l.dial.key=d[0],l.dial.language=d[1],l.dial.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dial.appdata.split(",");l.dial.projectId=d[0],l.dial.clientEmail=d[1],l.dial.privateKey=d[2],l.dial.language=d[3],l.dial.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dial.appdata.split(",");l.dial.accesskeyid=d[0],l.dial.secretaccesskey=d[1],l.dial.lexregion=d[2],l.dial.botname=d[3],l.dial.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dial.appdata.split(",");l.dial.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dial.text=d.slice(1,d.length).join(",");break;case"message":l.dial.text=l.dial.appdata;break;case"set":l.dial.name=l.dial.appdata.split("=")[0],l.dial.value=l.dial.appdata.split("=")[1];break;case"agi":l.dial.project=l.dial.appdata;break;default:var c=l.dial.appdata.split(",");l.dial.tech=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dial.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dial.options=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dial.url=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10)}function m(e){n.hide(e)}l.dial.type&&"outbound"===l.dial.type.toLowerCase()&&"outbounddial"===l.dial.appType.toLowerCase()&&(l.dial.prefix=l.dial.phone?l.dial.phone.split("$")[0]:void 0,l.dial.callerId=l.dial.callerID?"CALLERID(all)="+l.dial.callerID:void 0),l.saveInboundRouteApp=function(){l.errors=[];var e=[];l.dial.type&&"outbound"===l.dial.type.toLowerCase()&&"outboundDial"===l.dial.appType&&(l.dial.phone=i.cutdigits?(l.dial.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dial.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dial.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dial.options+="U(xcally-mixmonitor-context)"):l.dial.options=l.dial.options.replace("U(xcally-mixmonitor-context)",""));if(l.dial.appType&&"custom"===l.dial.appType);else switch((l.dial.app||l.dial.appType).toLowerCase()){case"set":l.dial.appdata=l.dial.name+"="+l.dial.value;break;case"custom":break;default:e[0]=l.dial.tech,e[1]=l.dial.timeout,e[2]=l.dial.options,e[3]=l.dial.url,l.dial.appdata=e.join(",")}m(l.dial)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundAppdialDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.externaldial=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.externaldial.appdata)switch(l.externaldial.appType?l.externaldial.appType.toLowerCase():l.externaldial.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.externaldial.appdata.split(",");l.externaldial.key=d[0],l.externaldial.language=d[1],l.externaldial.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.externaldial.appdata.split(",");l.externaldial.projectId=d[0],l.externaldial.clientEmail=d[1],l.externaldial.privateKey=d[2],l.externaldial.language=d[3],l.externaldial.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.externaldial.appdata.split(",");l.externaldial.accesskeyid=d[0],l.externaldial.secretaccesskey=d[1],l.externaldial.lexregion=d[2],l.externaldial.botname=d[3],l.externaldial.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.externaldial.appdata.split(",");l.externaldial.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.externaldial.text=d.slice(1,d.length).join(",");break;case"message":l.externaldial.text=l.externaldial.appdata;break;case"set":l.externaldial.name=l.externaldial.appdata.split("=")[0],l.externaldial.value=l.externaldial.appdata.split("=")[1];break;case"agi":l.externaldial.project=l.externaldial.appdata;break;default:var c=l.externaldial.appdata.split(",");l.externaldial.trunk=c[0].split("/")[1],l.externaldial.phone=c[0].split("/")[2],l.externaldial.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.externaldial.options=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.externaldial.url=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10)}function m(e){n.hide(e)}l.externaldial.type&&"outbound"===l.externaldial.type.toLowerCase()&&"outbounddial"===l.externaldial.appType.toLowerCase()&&(l.externaldial.prefix=l.externaldial.phone?l.externaldial.phone.split("$")[0]:void 0,l.externaldial.callerId=l.externaldial.callerID?"CALLERID(all)="+l.externaldial.callerID:void 0),l.saveInboundRouteApp=function(){l.errors=[];var e=[];l.externaldial.type&&"outbound"===l.externaldial.type.toLowerCase()&&"outboundDial"===l.externaldial.appType&&(l.externaldial.phone=i.cutdigits?(l.externaldial.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.externaldial.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.externaldial.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.externaldial.options+="U(xcally-mixmonitor-context)"):l.externaldial.options=l.externaldial.options.replace("U(xcally-mixmonitor-context)",""));if(l.externaldial.appType&&"custom"===l.externaldial.appType);else switch((l.externaldial.app||l.externaldial.appType).toLowerCase()){case"set":l.externaldial.appdata=l.externaldial.name+"="+l.externaldial.value;break;case"custom":break;default:e[0]=["SIP",l.externaldial.trunk,l.externaldial.phone].join("/"),e[1]=l.externaldial.timeout,e[2]=l.externaldial.options,e[3]=l.externaldial.url,l.externaldial.appdata=e.join(",")}m(l.externaldial)},l.closeDialog=m,o.hasRole("admin")?s.trunk.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.trunks=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.trunk.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.trunks=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1011}).$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.trunks,{id:e.resourceId})}),t=null;if(l.externaldial&&(t=_.find(l.trunks,{name:l.externaldial.trunk})),t&&!_.some(n,["id",t.id])){var a=_.find(l.trunks,{id:t.id});a.canSelect=!1,n.push(a)}l.trunks=n})}else{var t=[],a=null;l.externaldial&&(a=_.find(l.trunks,{name:l.externaldial.trunk}));for(var i=0;i<l.trunks.length;i++)a&&l.trunks[i].id===a.id&&(l.trunks[i].canSelect=!1,t.push(l.trunks[i]));l.trunks=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundAppexternaldialDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.goto=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.goto.appdata)switch(l.goto.appType?l.goto.appType.toLowerCase():l.goto.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.goto.appdata.split(",");l.goto.key=d[0],l.goto.language=d[1],l.goto.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.goto.appdata.split(",");l.goto.projectId=d[0],l.goto.clientEmail=d[1],l.goto.privateKey=d[2],l.goto.language=d[3],l.goto.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.goto.appdata.split(",");l.goto.accesskeyid=d[0],l.goto.secretaccesskey=d[1],l.goto.lexregion=d[2],l.goto.botname=d[3],l.goto.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.goto.appdata.split(",");l.goto.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.goto.text=d.slice(1,d.length).join(",");break;case"message":l.goto.text=l.goto.appdata;break;case"set":l.goto.name=l.goto.appdata.split("=")[0],l.goto.value=l.goto.appdata.split("=")[1];break;case"agi":l.goto.project=l.goto.appdata;break;default:var c=l.goto.appdata.split(",");l.goto.context=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.goto.extension=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.goto.priority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.goto.type&&"outbound"===l.goto.type.toLowerCase()&&"outbounddial"===l.goto.appType.toLowerCase()&&(l.goto.prefix=l.goto.phone?l.goto.phone.split("$")[0]:void 0,l.goto.callerId=l.goto.callerID?"CALLERID(all)="+l.goto.callerID:void 0),l.saveInboundRouteApp=function(){l.errors=[];var e=[];l.goto.type&&"outbound"===l.goto.type.toLowerCase()&&"outboundDial"===l.goto.appType&&(l.goto.phone=i.cutdigits?(l.goto.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.goto.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.goto.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.goto.options+="U(xcally-mixmonitor-context)"):l.goto.options=l.goto.options.replace("U(xcally-mixmonitor-context)",""));if(l.goto.appType&&"custom"===l.goto.appType);else switch((l.goto.app||l.goto.appType).toLowerCase()){case"set":l.goto.appdata=l.goto.name+"="+l.goto.value;break;case"custom":break;default:e[0]=l.goto.context,e[1]=l.goto.extension,e[2]=l.goto.priority,l.goto.appdata=e.join(",")}m(l.goto)},l.closeDialog=m,o.hasRole("admin")?s.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.contexts=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.contexts=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.contexts,{id:e.resourceId})}),t=null;if(l.goto&&(t=_.find(l.contexts,{name:l.goto.context})),t&&!_.some(n,["id",t.id])){var a=_.find(l.contexts,{id:t.id});a.canSelect=!1,n.push(a)}l.contexts=n}):s.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){l.contexts=e.rows||[]})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundAppgotoDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.hangup=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.hangup.appdata)switch(l.hangup.appType?l.hangup.appType.toLowerCase():l.hangup.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.hangup.appdata.split(",");l.hangup.key=d[0],l.hangup.language=d[1],l.hangup.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.hangup.appdata.split(",");l.hangup.projectId=d[0],l.hangup.clientEmail=d[1],l.hangup.privateKey=d[2],l.hangup.language=d[3],l.hangup.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.hangup.appdata.split(",");l.hangup.accesskeyid=d[0],l.hangup.secretaccesskey=d[1],l.hangup.lexregion=d[2],l.hangup.botname=d[3],l.hangup.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.hangup.appdata.split(",");l.hangup.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.hangup.text=d.slice(1,d.length).join(",");break;case"message":l.hangup.text=l.hangup.appdata;break;case"set":l.hangup.name=l.hangup.appdata.split("=")[0],l.hangup.value=l.hangup.appdata.split("=")[1];break;case"agi":l.hangup.project=l.hangup.appdata;break;default:var c=l.hangup.appdata.split(",");l.hangup.appdata=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.hangup.type&&"outbound"===l.hangup.type.toLowerCase()&&"outbounddial"===l.hangup.appType.toLowerCase()&&(l.hangup.prefix=l.hangup.phone?l.hangup.phone.split("$")[0]:void 0,l.hangup.callerId=l.hangup.callerID?"CALLERID(all)="+l.hangup.callerID:void 0),l.saveInboundRouteApp=function(){l.errors=[];var e=[];l.hangup.type&&"outbound"===l.hangup.type.toLowerCase()&&"outboundDial"===l.hangup.appType&&(l.hangup.phone=i.cutdigits?(l.hangup.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.hangup.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.hangup.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.hangup.options+="U(xcally-mixmonitor-context)"):l.hangup.options=l.hangup.options.replace("U(xcally-mixmonitor-context)",""));if(l.hangup.appType&&"custom"===l.hangup.appType);else switch((l.hangup.app||l.hangup.appType).toLowerCase()){case"set":l.hangup.appdata=l.hangup.name+"="+l.hangup.value;break;case"custom":break;default:e[0]=l.hangup.appdata,l.hangup.appdata=e.join(",")}m(l.hangup)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundApphangupDialogController",e)}(),function(){"use strict";function e(n,o,t,e,a,r,i,s){var l=this;if(l.currentUser=i.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(e.appType||e.app).toUpperCase(),l.internaldial=angular.copy(e),l.crudPermissions=s,l.hasModulePermissions={},l.internaldial.appdata)switch(l.internaldial.appType?l.internaldial.appType.toLowerCase():l.internaldial.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.internaldial.appdata.split(",");l.internaldial.key=d[0],l.internaldial.language=d[1],l.internaldial.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.internaldial.appdata.split(",");l.internaldial.projectId=d[0],l.internaldial.clientEmail=d[1],l.internaldial.privateKey=d[2],l.internaldial.language=d[3],l.internaldial.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.internaldial.appdata.split(",");l.internaldial.accesskeyid=d[0],l.internaldial.secretaccesskey=d[1],l.internaldial.lexregion=d[2],l.internaldial.botname=d[3],l.internaldial.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.internaldial.appdata.split(",");l.internaldial.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.internaldial.text=d.slice(1,d.length).join(",");break;case"message":l.internaldial.text=l.internaldial.appdata;break;case"set":l.internaldial.name=l.internaldial.appdata.split("=")[0],l.internaldial.value=l.internaldial.appdata.split("=")[1];break;case"agi":l.internaldial.project=l.internaldial.appdata;break;default:var c=l.internaldial.appdata.split(",");l.internaldial.user=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.internaldial.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.internaldial.options=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.internaldial.url=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10)}l.internaldial.type&&"outbound"===l.internaldial.type.toLowerCase()&&"outbounddial"===l.internaldial.appType.toLowerCase()&&(l.internaldial.prefix=l.internaldial.phone?l.internaldial.phone.split("$")[0]:void 0,l.internaldial.callerId=l.internaldial.callerID?"CALLERID(all)="+l.internaldial.callerID:void 0),l.saveInboundRouteApp=function(){l.errors=[];var e=[];l.internaldial.type&&"outbound"===l.internaldial.type.toLowerCase()&&"outboundDial"===l.internaldial.appType&&(l.internaldial.phone=a.cutdigits?(l.internaldial.prefix||"")+"${EXTEN:"+a.cutdigits+"}":(l.internaldial.prefix||"")+"${EXTEN}","none"!==a.recordingFormat?l.internaldial.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.internaldial.options+="U(xcally-mixmonitor-context)"):l.internaldial.options=l.internaldial.options.replace("U(xcally-mixmonitor-context)",""));if(l.internaldial.appType&&"custom"===l.internaldial.appType);else switch((l.internaldial.app||l.internaldial.appType).toLowerCase()){case"set":l.internaldial.appdata=l.internaldial.name+"="+l.internaldial.value;break;case"custom":break;default:e[0]=l.internaldial.user,e[1]=l.internaldial.timeout,e[2]=l.internaldial.options,e[3]=l.internaldial.url,l.internaldial.appdata=e.join(",")}p(l.internaldial)},l.closeDialog=p;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}],u=null;function p(e){n.hide(e)}i.hasRole("admin")?r.user.get({fields:"id,name,role",sort:"name",nolimit:"true"}).$promise.then(function(e){l.users=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.user.get({fields:"id,name,role",sort:"name",nolimit:"true"}).$promise.then(function(e){u=e.rows||[]}).then(function(){for(var e=[],n=0;n<m.length;n++)e.push(r.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[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<m.length;a++){var i=_.find(n,["sectionId",m[a].id]);if(i)if(i.autoAssociation){var s=[];u.forEach(function(e){e.role===m[a].role&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(r.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;l.internaldial&&(t=_.find(u,{name:l.internaldial.user}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&u.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),l.users=n}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundAppinternaldialDialogController",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("EditInboundAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.playback=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.playback.appdata)switch(l.playback.appType?l.playback.appType.toLowerCase():l.playback.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.playback.appdata.split(",");l.playback.key=d[0],l.playback.language=d[1],l.playback.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.playback.appdata.split(",");l.playback.projectId=d[0],l.playback.clientEmail=d[1],l.playback.privateKey=d[2],l.playback.language=d[3],l.playback.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.playback.appdata.split(",");l.playback.accesskeyid=d[0],l.playback.secretaccesskey=d[1],l.playback.lexregion=d[2],l.playback.botname=d[3],l.playback.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.playback.appdata.split(",");l.playback.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.playback.text=d.slice(1,d.length).join(",");break;case"message":l.playback.text=l.playback.appdata;break;case"set":l.playback.name=l.playback.appdata.split("=")[0],l.playback.value=l.playback.appdata.split("=")[1];break;case"agi":l.playback.project=l.playback.appdata;break;default:var c=l.playback.appdata.split(",");l.playback.appdata=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.playback.options=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}function m(e){n.hide(e)}l.playback.type&&"outbound"===l.playback.type.toLowerCase()&&"outbounddial"===l.playback.appType.toLowerCase()&&(l.playback.prefix=l.playback.phone?l.playback.phone.split("$")[0]:void 0,l.playback.callerId=l.playback.callerID?"CALLERID(all)="+l.playback.callerID:void 0),l.saveInboundRouteApp=function(){l.errors=[];var e=[];l.playback.type&&"outbound"===l.playback.type.toLowerCase()&&"outboundDial"===l.playback.appType&&(l.playback.phone=i.cutdigits?(l.playback.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.playback.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.playback.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.playback.options+="U(xcally-mixmonitor-context)"):l.playback.options=l.playback.options.replace("U(xcally-mixmonitor-context)",""));if(l.playback.appType&&"custom"===l.playback.appType);else switch((l.playback.app||l.playback.appType).toLowerCase()){case"set":l.playback.appdata=l.playback.name+"="+l.playback.value;break;case"custom":break;default:e[0]=l.playback.appdata,e[1]=l.playback.options,l.playback.appdata=e.join(",")}m(l.playback)},l.closeDialog=m,o.hasRole("admin")?s.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.sounds=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.sounds=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$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.sounds,{id:e.resourceId})}),t=null;if(l.playback&&(t=_.find(l.sounds,{save_name:l.playback.sound})),t&&!_.some(n,["id",t.id])){var a=_.find(l.sounds,{id:t.id});a.canSelect=!1,n.push(a)}l.sounds=n})}else{var t=[],a=null;l.playback&&(a=_.find(l.sounds,{save_name:l.playback.sound}));for(var i=0;i<l.sounds.length;i++)a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,t.push(l.sounds[i]));l.sounds=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundAppplaybackDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.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.options=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.queue.URL=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.queue.sound=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.queue.timeout=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.queue.agi=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.queue.macro=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.queue.gosub=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.queue.rule=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.queue.position=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10)}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.saveInboundRouteApp=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)",""));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.options,e[2]=l.queue.URL,e[3]=l.queue.sound,e[4]=l.queue.timeout,e[5]=l.queue.agi,e[6]=l.queue.macro,e[7]=l.queue.gosub,e[8]=l.queue.rule,e[9]=l.queue.position,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.sounds=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.sounds=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$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.sounds,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.sounds,{save_name:l.queue.sound})),t&&!_.some(n,["id",t.id])){var a=_.find(l.sounds,{id:t.id});a.canSelect=!1,n.push(a)}l.sounds=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.sounds,{save_name:l.queue.sound}));for(var i=0;i<l.sounds.length;i++)a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,t.push(l.sounds[i]));l.sounds=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.hasRole("admin")?s.voiceQueue.get({type:"inbound",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.voiceQueue.get({type:"inbound",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:401}).$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","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundAppqueueDialogController",e)}(),function(){"use strict";function e(n,o,t,e,a,r,i,s){var l=this;if(l.currentUser=i.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(e.appType||e.app).toUpperCase(),l.ringgroup=angular.copy(e),l.crudPermissions=s,l.hasModulePermissions={},l.ringgroup.appdata)switch(l.ringgroup.appType?l.ringgroup.appType.toLowerCase():l.ringgroup.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.ringgroup.appdata.split(",");l.ringgroup.key=d[0],l.ringgroup.language=d[1],l.ringgroup.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.ringgroup.appdata.split(",");l.ringgroup.projectId=d[0],l.ringgroup.clientEmail=d[1],l.ringgroup.privateKey=d[2],l.ringgroup.language=d[3],l.ringgroup.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.ringgroup.appdata.split(",");l.ringgroup.accesskeyid=d[0],l.ringgroup.secretaccesskey=d[1],l.ringgroup.lexregion=d[2],l.ringgroup.botname=d[3],l.ringgroup.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.ringgroup.appdata.split(",");l.ringgroup.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.ringgroup.text=d.slice(1,d.length).join(",");break;case"message":l.ringgroup.text=l.ringgroup.appdata;break;case"set":l.ringgroup.name=l.ringgroup.appdata.split("=")[0],l.ringgroup.value=l.ringgroup.appdata.split("=")[1];break;case"agi":l.ringgroup.project=l.ringgroup.appdata;break;default:var c=l.ringgroup.appdata.split(",");l.ringgroup.multipleUsers=c[0].split("&"),l.ringgroup.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.ringgroup.options=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.ringgroup.url=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10)}l.ringgroup.type&&"outbound"===l.ringgroup.type.toLowerCase()&&"outbounddial"===l.ringgroup.appType.toLowerCase()&&(l.ringgroup.prefix=l.ringgroup.phone?l.ringgroup.phone.split("$")[0]:void 0,l.ringgroup.callerId=l.ringgroup.callerID?"CALLERID(all)="+l.ringgroup.callerID:void 0),l.saveInboundRouteApp=function(){l.errors=[];var e=[];l.ringgroup.type&&"outbound"===l.ringgroup.type.toLowerCase()&&"outboundDial"===l.ringgroup.appType&&(l.ringgroup.phone=a.cutdigits?(l.ringgroup.prefix||"")+"${EXTEN:"+a.cutdigits+"}":(l.ringgroup.prefix||"")+"${EXTEN}","none"!==a.recordingFormat?l.ringgroup.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.ringgroup.options+="U(xcally-mixmonitor-context)"):l.ringgroup.options=l.ringgroup.options.replace("U(xcally-mixmonitor-context)",""));if(l.ringgroup.appType&&"custom"===l.ringgroup.appType);else switch((l.ringgroup.app||l.ringgroup.appType).toLowerCase()){case"set":l.ringgroup.appdata=l.ringgroup.name+"="+l.ringgroup.value;break;case"custom":break;default:e[0]=l.ringgroup.multipleUsers.join("&"),e[1]=l.ringgroup.timeout,e[2]=l.ringgroup.options,e[3]=l.ringgroup.url,l.ringgroup.appdata=e.join(",")}p(l.ringgroup)},l.closeDialog=p;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}],u=null;function p(e){n.hide(e)}i.hasRole("admin")?r.user.get({fields:"id,name,role",sort:"name",nolimit:"true"}).$promise.then(function(e){l.users=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.user.get({fields:"id,name,role",sort:"name",nolimit:"true"}).$promise.then(function(e){u=e.rows||[]}).then(function(){for(var e=[],n=0;n<m.length;n++)e.push(r.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[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<m.length;a++){var i=_.find(n,["sectionId",m[a].id]);if(i)if(i.autoAssociation){var s=[];u.forEach(function(e){e.role===m[a].role&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(r.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;l.ringgroup&&(t=_.find(u,{name:l.ringgroup.multipleUsers}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&u.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),l.users=n}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundAppringgroupDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.set=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.set.appdata)switch(l.set.appType?l.set.appType.toLowerCase():l.set.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.set.appdata.split(",");l.set.key=d[0],l.set.language=d[1],l.set.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.set.appdata.split(",");l.set.projectId=d[0],l.set.clientEmail=d[1],l.set.privateKey=d[2],l.set.language=d[3],l.set.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.set.appdata.split(",");l.set.accesskeyid=d[0],l.set.secretaccesskey=d[1],l.set.lexregion=d[2],l.set.botname=d[3],l.set.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.set.appdata.split(",");l.set.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.set.text=d.slice(1,d.length).join(",");break;case"message":l.set.text=l.set.appdata;break;case"set":l.set.name=l.set.appdata.split("=")[0],l.set.value=l.set.appdata.split("=")[1];break;case"agi":l.set.project=l.set.appdata;break;default:var c=l.set.appdata.split("=");l.set.name=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.set.value=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}function m(e){n.hide(e)}l.set.type&&"outbound"===l.set.type.toLowerCase()&&"outbounddial"===l.set.appType.toLowerCase()&&(l.set.prefix=l.set.phone?l.set.phone.split("$")[0]:void 0,l.set.callerId=l.set.callerID?"CALLERID(all)="+l.set.callerID:void 0),l.saveInboundRouteApp=function(){l.errors=[];var e=[];l.set.type&&"outbound"===l.set.type.toLowerCase()&&"outboundDial"===l.set.appType&&(l.set.phone=i.cutdigits?(l.set.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.set.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.set.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.set.options+="U(xcally-mixmonitor-context)"):l.set.options=l.set.options.replace("U(xcally-mixmonitor-context)",""));if(l.set.appType&&"custom"===l.set.appType);else switch((l.set.app||l.set.appType).toLowerCase()){case"set":l.set.appdata=l.set.name+"="+l.set.value;break;case"custom":break;default:e[0]=l.set.name,e[1]=l.set.value,l.set.appdata=e.join("=")}m(l.set)},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.set&&(t=_.find(l.variables,{name:l.set.name})),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.set&&(a=_.find(l.variables,{name:l.set.name}));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","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundAppsetDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.voicemail=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.voicemail.appdata)switch(l.voicemail.appType?l.voicemail.appType.toLowerCase():l.voicemail.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.voicemail.appdata.split(",");l.voicemail.key=d[0],l.voicemail.language=d[1],l.voicemail.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.voicemail.appdata.split(",");l.voicemail.projectId=d[0],l.voicemail.clientEmail=d[1],l.voicemail.privateKey=d[2],l.voicemail.language=d[3],l.voicemail.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.voicemail.appdata.split(",");l.voicemail.accesskeyid=d[0],l.voicemail.secretaccesskey=d[1],l.voicemail.lexregion=d[2],l.voicemail.botname=d[3],l.voicemail.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.voicemail.appdata.split(",");l.voicemail.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.voicemail.text=d.slice(1,d.length).join(",");break;case"message":l.voicemail.text=l.voicemail.appdata;break;case"set":l.voicemail.name=l.voicemail.appdata.split("=")[0],l.voicemail.value=l.voicemail.appdata.split("=")[1];break;case"agi":l.voicemail.project=l.voicemail.appdata;break;default:var c=l.voicemail.appdata.split(",");l.voicemail.voiceMail=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.voicemail.options=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}function m(e){n.hide(e)}l.voicemail.type&&"outbound"===l.voicemail.type.toLowerCase()&&"outbounddial"===l.voicemail.appType.toLowerCase()&&(l.voicemail.prefix=l.voicemail.phone?l.voicemail.phone.split("$")[0]:void 0,l.voicemail.callerId=l.voicemail.callerID?"CALLERID(all)="+l.voicemail.callerID:void 0),l.saveInboundRouteApp=function(){l.errors=[];var e=[];l.voicemail.type&&"outbound"===l.voicemail.type.toLowerCase()&&"outboundDial"===l.voicemail.appType&&(l.voicemail.phone=i.cutdigits?(l.voicemail.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.voicemail.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.voicemail.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.voicemail.options+="U(xcally-mixmonitor-context)"):l.voicemail.options=l.voicemail.options.replace("U(xcally-mixmonitor-context)",""));if(l.voicemail.appType&&"custom"===l.voicemail.appType);else switch((l.voicemail.app||l.voicemail.appType).toLowerCase()){case"set":l.voicemail.appdata=l.voicemail.name+"="+l.voicemail.value;break;case"custom":break;default:e[0]=l.voicemail.voiceMail,e[1]=l.voicemail.options,l.voicemail.appdata=e.join(",")}m(l.voicemail)},l.closeDialog=m,o.hasRole("admin")?s.voiceMail.get({fields:"id,mailbox",sort:"mailbox",nolimit:"true"}).$promise.then(function(e){l.voiceMails=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEMAILS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceMail.get({fields:"id,mailbox",sort:"mailbox",nolimit:"true"}).$promise.then(function(e){l.voiceMails=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:406}).$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.voiceMails,{id:e.resourceId})}),t=null;if(l.voicemail&&(t=_.find(l.voiceMails,{mailbox:l.voicemail.voiceMail})),t&&!_.some(n,["id",t.id])){var a=_.find(l.voiceMails,{id:t.id});a.canSelect=!1,n.push(a)}l.voiceMails=n})}else{var t=[],a=null;l.voicemail&&(a=_.find(l.voiceMails,{mailbox:l.voicemail.voiceMail}));for(var i=0;i<l.voiceMails.length;i++)a&&l.voiceMails[i].id===a.id&&(l.voiceMails[i].canSelect=!1,t.push(l.voiceMails[i]));l.voiceMails=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMails",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","inboundrouteApp","inboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInboundAppvoicemailDialogController",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.inboundroute=c||e.params.inboundroute||{},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.gotoInboundRoutes=function(){e.go("app.voice.inboundroutes",{},{reload:"app.voice.inboundroutes"})},u.saveInboundRoute=function(){r.voiceExtension.update({id:u.inboundroute.id},u.inboundroute).$promise.then(function(){l.success({title:"InboundRoute updated!",msg:u.inboundroute.name?u.inboundroute.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$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",nolimit:"true"}).$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.inboundroute&&(t=_.find(u.contexts,{name:u.inboundroute.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",nolimit:"true",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","inboundroute","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",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.inboundroutes=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="inboundroutes",f.listOrder="",f.listOrderAsc=null,f.selectedInboundRoutes=[],f.query={fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.voice.inboundroutes.edit",{id:e.id,inboundroute:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("inboundroute")+"?").htmlContent("<b>"+(e.name||"inboundroute")+"</b> will be deleted.").ariaLabel("delete inboundroute").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getInboundRoutes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceExtension.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="InboundRoutes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInboundRoute=function(e,n){i.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundroutes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundroute:n,inboundroutes:f.inboundroutes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInboundRoute=y,f.exportSelectedInboundRoutes=function(){var e=angular.copy(f.selectedInboundRoutes);return f.selectedInboundRoutes=[],e},f.deleteSelectedInboundRoutes=function(e){var n=i.confirm().title("Are you sure want to delete the selected inboundroutes?").htmlContent("<b>"+f.selectedInboundRoutes.length+" selected</b> will be deleted.").ariaLabel("delete InboundRoutes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedInboundRoutes.forEach(function(e){y(e)}),f.selectedInboundRoutes=[]})},f.deselectInboundRoutes=function(){f.selectedInboundRoutes=[]},f.selectAllInboundRoutes=function(){f.selectedInboundRoutes=f.inboundroutes.rows},g.hasRole("admin")?m.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){f.contexts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){f.contexts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.contexts,{id:e.resourceId})}),t=null;if(f.inboundroute&&(t=_.find(f.contexts,{name:f.inboundroute.context})),t&&!_.some(n,["id",t.id])){var a=_.find(f.contexts,{id:t.id});a.canSelect=!1,n.push(a)}f.contexts=n}):m.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){f.contexts=e.rows||[]})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.inboundroutes=e||{count:0,rows:[]}}function y(e){m.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(f.inboundroutes.rows,{id:e.id}),f.inboundroutes.count-=1,f.inboundroutes.rows.length||f.getInboundRoutes(),p.success({title:_.startCase("InboundRoute")+" 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:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)p.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:DELETEvoiceExtension",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.getInboundRoutes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","inboundroutes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_INTERNALROUTE",g.internalroute=angular.copy(l),g.internalroutes=r,g.newInternalRoute=!1,g.internalroute||(g.internalroute={appdata:"Internal Call",type:"internal",context:"from-sip"},g.title="VOICE.NEW_INTERNALROUTE",g.newInternalRoute=!0),g.addNewInternalRoute=function(){g.errors=[],d.voiceExtension.save(g.internalroute).$promise.then(function(e){g.internalroutes.unshift(e.toJSON()),o.success({title:"InternalRoute properly created",msg:g.internalroute.name?g.internalroute.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInternalRoute=function(){g.errors=[],d.voiceExtension.update({id:g.internalroute.id},g.internalroute).$promise.then(function(e){var n=_.find(g.internalroutes,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"InternalRoute properly saved!",msg:g.internalroute.name?g.internalroute.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInternalRoute=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The internalroute will be deleted.").ariaLabel("Delete InternalRoute").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceExtension.delete({id:g.internalroute.id}).$promise.then(function(){_.remove(g.internalroutes,{id:g.internalroute.id}),o.success({title:"InternalRoute properly deleted!",msg:(g.internalroute.name||"internalroute")+" has been deleted!"}),v(g.internalroute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.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.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.contexts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.contexts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.contexts,{id:e.resourceId})}),t=null;if(g.internalroute&&(t=_.find(g.contexts,{name:g.internalroute.context})),t&&!_.some(n,["id",t.id])){var a=_.find(g.contexts,{id:t.id});a.canSelect=!1,n.push(a)}g.contexts=n}):d.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){g.contexts=e.rows||[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","internalroutes","internalroute","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(m,i,a,s,e){var u=this;function n(e,n){if(u.internalrouteApps.rows.length){var t=u.internalrouteApps.rows[n]?u.internalrouteApps.rows[n]:u.internalrouteApps.rows[0];i.show({controller:"EditInternalApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalroutes/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalrouteApp:t,internalroute:u.internalroute,crudPermissions:u.crudPermissions}}).then(function(e){e&&(e.id?u.internalrouteApps.rows[n]=e:u.internalrouteApps.rows.splice(n,0,e),o())}).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 o(){var e=["queue","playback"],n=2,t=[];t.push({type:"internal",app:"Set",appdata:"CDR(type)=internal",context:u.internalroute.context,exten:u.internalroute.exten,priority:n++,VoiceExtensionId:u.internalroute.id}),t.push({type:"internal",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:u.internalroute.context,exten:u.internalroute.exten,priority:n++,VoiceExtensionId:u.internalroute.id}),t.push({type:"internal",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:u.internalroute.context,exten:u.internalroute.exten,priority:n++,VoiceExtensionId:u.internalroute.id}),t.push({type:"internal",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:u.internalroute.context,exten:u.internalroute.exten,priority:n++,VoiceExtensionId:u.internalroute.id});for(var a=0,i=0;a<u.internalrouteApps.rows.length;a++,i=0){var s=u.internalrouteApps.rows[a],o=[],r=[];s.intervals="*,*,*,*"!==s.interval?[s.interval]:s.IntervalId?_.map(_.filter(u.intervals.rows,{IntervalId:s.IntervalId}),"interval"):[],s.context=u.internalroute.context,s.exten=u.internalroute.exten,s.type&&(s.type=s.type.toLowerCase()),s.hasOwnProperty("answer")&&e.includes(s.app.toLowerCase())&&"custom"!==s.appType&&(s.answer?(o.push({type:s.type.toLowerCase(),app:"ExecIf",appdata:"$[${XCALLY-MOTION-ANSWER}=0]?Answer",context:u.internalroute.context,exten:u.internalroute.exten,priority:s.intervals.length+n+i++,VoiceExtensionId:u.internalroute.id}),o.push({type:s.type.toLowerCase(),app:"Set",appdata:"XCALLY-MOTION-ANSWER=1",context:u.internalroute.context,exten:u.internalroute.exten,priority:s.intervals.length+n+i++,VoiceExtensionId:u.internalroute.id})):(o.push({type:s.type.toLowerCase(),app:"ExecIf",appdata:"$[${XCALLY-MOTION-PROGRESS}=0]?Progress",context:u.internalroute.context,exten:u.internalroute.exten,priority:s.intervals.length+n+i++,VoiceExtensionId:u.internalroute.id}),o.push({type:s.type.toLowerCase(),app:"Set",appdata:"XCALLY-MOTION-PROGRESS=1",context:u.internalroute.context,exten:u.internalroute.exten,priority:s.intervals.length+n+i++,VoiceExtensionId:u.internalroute.id})));for(var l=0;l<s.intervals.length;l++){var d=n+s.intervals.length,c=l===s.intervals.length-1?n+o.length+r.length+2:n+l+1;o.splice(l,0,{type:"internal",app:"GotoIfTime",appdata:s.intervals[l]+"?"+u.internalroute.context+",${EXTEN},"+d+":"+u.internalroute.context+",${EXTEN},"+c,exten:u.internalroute.exten,context:u.internalroute.context,priority:n+l,VoiceExtensionId:u.internalroute.id})}s.priority=o.length?_.last(o).priority+1:n,n=(r.length?_.last(r).priority:s.priority)+1,t=_.concat(t,o,[s],r)}t.push({type:"internal",app:"Hangup",exten:u.internalroute.exten,context:u.internalroute.context,priority:n,VoiceExtensionId:u.internalroute.id}),m.voiceExtension.addApplications({id:u.internalroute.id},_.sortBy(t,"priority")).$promise.then(function(e){u.internalrouteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){u.internalrouteApps=e||{count:0,rows:[]}}u.currentUser=e.getCurrentUser(),u.internalroute={},u.internalrouteApps={count:0,rows:[]},u.selectedInternalRouteApps=[],u.crudPermissions,u.query={sort:"priority"},u.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",type:"Internal",types:["always","custom","list"],fields:[],isApp:!1},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",icon:"icon-apps",interval:"*,*,*,*",answer:!0,isApp:!0,extraApi:[{name:"sounds",field:{name:"sound",key:"save_name",prefix:"/var/opt/motion2/server/files/sounds/converted/"},route:"sound",filters:{fields:"id,name,save_name",sort:"name",nolimit:!0},permissions:{section:1007}},{name:"queues",field:{name:"queue",key:"name"},route:"voiceQueue",filters:{type:"inbound",fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:401}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",required:!0,param:0},{title:"Options",name:"options",type:"text",param:1},{title:"Url",name:"URL",type:"text",param:2},{title:"Announce_Overrides",name:"sound",type:"apiselect",values:"sounds",value:"'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}'",option:"sound.name",defaultValues:[{value:"''",option:"None"}],param:3},{title:"Timeout",name:"timeout",type:"number",min:0,param:4},{title:"Agi",name:"agi",type:"text",param:5},{title:"Macro",name:"macro",type:"text",param:6},{title:"GoSub",name:"gosub",type:"text",param:7},{title:"Rule",name:"rule",type:"text",param:8},{title:"Position",name:"position",type:"number",min:0,param:9},{title:"Answer",name:"answer",type:"switch",general:!0}]},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",icon:"icon-apps",interval:"*,*,*,*",answer:!0,isApp:!0,extraApi:[{name:"sounds",field:{name:"appdata",key:"save_name",prefix:"/var/opt/motion2/server/files/sounds/converted/"},route:"sound",filters:{fields:"id,name,save_name",sort:"name",nolimit:!0},permissions:{section:1007}}],fields:[{title:"Audio_Files",name:"appdata",type:"apiselect",values:"sounds",value:"'/var/opt/motion2/server/files/sounds/converted/{{appdata.save_name}}'",option:"appdata.name",required:!0,param:0},{title:"Options",name:"options",type:"text",param:1},{title:"Answer",name:"answer",type:"switch",general:!0}]},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",icon:"icon-apps",options:"xX",interval:"*,*,*,*",isApp:!0,fields:[{title:"Technology/Resource",name:"tech",type:"text",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",min:0,param:1},{title:"Options",name:"options",type:"text",param:2},{title:"Url",name:"url",type:"text",param:3}]},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",icon:"icon-apps",options:"xX",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"users",field:{name:"user",key:"name",prefix:"SIP/"},route:"user",filters:{fields:"id,name,role",sort:"name",nolimit:!0},permissions:{sections:[{id:202,role:"agent"},{id:203,role:"telephone"}]}}],fields:[{title:"User",name:"user",type:"apiselect",values:"users",value:"'SIP/{{user.name}}'",option:"user.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",min:0,param:1},{title:"Options",name:"options",type:"text",param:2},{title:"Url",name:"url",type:"text",param:3}]},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",icon:"icon-apps",interval:"*,*,*,*",options:"xX",isApp:!0,extraApi:[{name:"trunks",field:{name:"trunk",key:"name"},route:"trunk",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1011}}],fields:[{title:"Trunk",name:"trunk",type:"apiselect",values:"trunks",value:"trunk.name",option:"trunk.name",required:!0,param:0},{title:"Phone",name:"phone",type:"text"},{title:"Timeout",name:"timeout",type:"number",min:0,param:1},{title:"Options",name:"options",type:"text",param:2},{title:"Url",name:"url",type:"text",param:3}]},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",icon:"icon-apps",interval:"*,*,*,*",options:"xX",isApp:!0,extraApi:[{name:"users",field:{name:"multipleUsers",key:"name",prefix:"SIP/"},route:"user",filters:{fields:"id,name,role",sort:"name",nolimit:!0},permissions:{sections:[{id:202,role:"agent"},{id:203,role:"telephone"}]}}],fields:[{title:"User",name:"multipleUsers",type:"apiselect",multiple:!0,values:"users",value:"'SIP/{{multipleUsers.name}}'",option:"multipleUsers.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",min:0,param:1},{title:"Options",name:"options",type:"text",param:2},{title:"Url",name:"url",type:"text",param:3}]},{app:"AGI",alias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"projects",field:{name:"project",key:"name",prefix:"agi://127.0.0.1/square,"},route:"squareProject",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1103}}],fields:[{title:"Project",name:"project",type:"apiselect",values:"projects",value:"'agi://127.0.0.1/square,{{project.name}}'",option:"project.name",required:!0,param:0}]},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"contexts",field:{name:"context",key:"name"},route:"voiceContext",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:405}}],fields:[{title:"Context",name:"context",type:"apiselect",values:"contexts",value:"context.name",option:"context.name",required:!0,param:0},{title:"Extension",name:"extension",type:"text",required:!0,param:1},{title:"Priority",name:"priority",type:"text",required:!0,param:2}]},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Hangup_Cause",name:"appdata",type:"select",param:0,values:[{option:"HANGUPCAUSE_1",value:"'1'"},{option:"HANGUPCAUSE_16",value:"'16'"},{option:"HANGUPCAUSE_17",value:"'17'"},{option:"HANGUPCAUSE_18",value:"'18'"},{option:"HANGUPCAUSE_21",value:"'21'"},{option:"HANGUPCAUSE_22",value:"'22'"},{option:"HANGUPCAUSE_27",value:"'27'"},{option:"HANGUPCAUSE_38",value:"'38'"},{option:"HANGUPCAUSE_41",value:"'41'"}],translate:!0,required:!0,general:!0}]},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",icon:"icon-apps",interval:"*,*,*,*",extraApi:[{name:"variables",field:{name:"name",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],isApp:!0,fields:[{title:"Variable",name:"name",type:"apiselect",values:"variables",value:"name.name",option:"name.name",required:!0,param:0},{title:"Value",name:"value",type:"text",required:!0,param:1}]},{app:null,appType:"custom",icon:"icon-apps",type:"Internal",interval:"*,*,*,*",isApp:!0,fields:[{title:"Application_Name",name:"app",type:"text",required:!0,param:0},{title:"Arguments",name:"appdata",type:"text",param:1}]},{app:"Voicemail",appType:"voicemail",context:"from-sip",icon:"icon-apps",type:"Internal",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"voiceMails",field:{name:"voiceMail",key:"mailbox",suffix:"@from-voicemail"},route:"voiceMail",filters:{fields:"id,mailbox",sort:"mailbox",nolimit:!0},permissions:{section:406}}],fields:[{title:"Mailbox@Context",name:"voiceMail",type:"apiselect",values:"voiceMails",value:"'{{voiceMail.mailbox}}@from-voicemail'",option:"voiceMail.mailbox",required:!0,param:0},{title:"Options",name:"options",type:"text",param:1}]}],["app"]),{isApp:!1}),u.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},u.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){o()}},u.init=function(e,n){u.internalroute=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.applications.disabled=!u.crudPermissions.canEdit,u.query.VoiceExtensionId=e.id,u.query.isApp=!0,u.query.nolimit=!0,u.getInternalRouteApps(),u.getIntervals()},u.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(){u.internalrouteApps.rows.splice(n,1),o()},function(){console.log("CANCEL")})},u.getInternalRouteApps=function(){u.promise=m.voiceExtension.get(u.query,t).$promise},u.editInternalRouteApp=n,u.editInterval=function(e,n){if(u.internalrouteApps.rows.length){var t=u.internalrouteApps.rows[n]?u.internalrouteApps.rows[n]:u.internalrouteApps.rows[0];i.show({controller:"EditInternalAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalroutes/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:u.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,o())})}},u.deleteInternalRouteApp=function(e){_.remove(u.internalrouteApps.rows,{id:e.id}),o(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},u.deleteSelectedInternalRouteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+u.selectedInternalRouteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){u.selectedInternalRouteApps.forEach(function(e){_.remove(u.internalrouteApps.rows,{id:e.id})}),u.selectedInternalRouteApps=[],o()})},u.rewriteRouting=o,u.getIntervals=function(){return m.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){u.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.voice").controller("InternalRouteActionsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.agi=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agi.appdata)switch(l.agi.appType?l.agi.appType.toLowerCase():l.agi.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agi.appdata.split(",");l.agi.key=d[0],l.agi.language=d[1],l.agi.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agi.appdata.split(",");l.agi.projectId=d[0],l.agi.clientEmail=d[1],l.agi.privateKey=d[2],l.agi.language=d[3],l.agi.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agi.appdata.split(",");l.agi.accesskeyid=d[0],l.agi.secretaccesskey=d[1],l.agi.lexregion=d[2],l.agi.botname=d[3],l.agi.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agi.appdata.split(",");l.agi.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agi.text=d.slice(1,d.length).join(",");break;case"message":l.agi.text=l.agi.appdata;break;case"set":l.agi.name=l.agi.appdata.split("=")[0],l.agi.value=l.agi.appdata.split("=")[1];break;case"agi":l.agi.project=l.agi.appdata;break;default:var c=l.agi.appdata.split(",");l.agi.project=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.agi.type&&"outbound"===l.agi.type.toLowerCase()&&"outbounddial"===l.agi.appType.toLowerCase()&&(l.agi.prefix=l.agi.phone?l.agi.phone.split("$")[0]:void 0,l.agi.callerId=l.agi.callerID?"CALLERID(all)="+l.agi.callerID:void 0),l.saveInternalRouteApp=function(){l.errors=[];var e=[];l.agi.type&&"outbound"===l.agi.type.toLowerCase()&&"outboundDial"===l.agi.appType&&(l.agi.phone=i.cutdigits?(l.agi.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agi.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agi.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agi.options+="U(xcally-mixmonitor-context)"):l.agi.options=l.agi.options.replace("U(xcally-mixmonitor-context)",""));if(l.agi.appType&&"custom"===l.agi.appType);else switch((l.agi.app||l.agi.appType).toLowerCase()){case"set":l.agi.appdata=l.agi.name+"="+l.agi.value;break;case"custom":break;default:e[0]=l.agi.project,l.agi.appdata=e.join(",")}m(l.agi)},l.closeDialog=m,o.hasRole("admin")?s.squareProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.squareProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1103}).$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.projects,{id:e.resourceId})}),t=null;if(l.agi&&(t=_.find(l.projects,{name:l.agi.project})),t&&!_.some(n,["id",t.id])){var a=_.find(l.projects,{id:t.id});a.canSelect=!1,n.push(a)}l.projects=n})}else{var t=[],a=null;l.agi&&(a=_.find(l.projects,{name:l.agi.project}));for(var i=0;i<l.projects.length;i++)a&&l.projects[i].id===a.id&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalAppagiDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.custom=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.custom.appdata)switch(l.custom.appType?l.custom.appType.toLowerCase():l.custom.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.custom.appdata.split(",");l.custom.key=d[0],l.custom.language=d[1],l.custom.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.custom.appdata.split(",");l.custom.projectId=d[0],l.custom.clientEmail=d[1],l.custom.privateKey=d[2],l.custom.language=d[3],l.custom.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.custom.appdata.split(",");l.custom.accesskeyid=d[0],l.custom.secretaccesskey=d[1],l.custom.lexregion=d[2],l.custom.botname=d[3],l.custom.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.custom.appdata.split(",");l.custom.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.custom.text=d.slice(1,d.length).join(",");break;case"message":l.custom.text=l.custom.appdata;break;case"set":l.custom.name=l.custom.appdata.split("=")[0],l.custom.value=l.custom.appdata.split("=")[1];break;case"agi":l.custom.project=l.custom.appdata;break;default:var c=l.custom.appdata.split(",");l.custom.app=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.custom.appdata=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}function m(e){n.hide(e)}l.custom.type&&"outbound"===l.custom.type.toLowerCase()&&"outbounddial"===l.custom.appType.toLowerCase()&&(l.custom.prefix=l.custom.phone?l.custom.phone.split("$")[0]:void 0,l.custom.callerId=l.custom.callerID?"CALLERID(all)="+l.custom.callerID:void 0),l.saveInternalRouteApp=function(){l.errors=[];var e=[];l.custom.type&&"outbound"===l.custom.type.toLowerCase()&&"outboundDial"===l.custom.appType&&(l.custom.phone=i.cutdigits?(l.custom.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.custom.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.custom.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.custom.options+="U(xcally-mixmonitor-context)"):l.custom.options=l.custom.options.replace("U(xcally-mixmonitor-context)",""));if(l.custom.appType&&"custom"===l.custom.appType);else switch((l.custom.app||l.custom.appType).toLowerCase()){case"set":l.custom.appdata=l.custom.name+"="+l.custom.value;break;case"custom":break;default:e[0]=l.custom.app,e[1]=l.custom.appdata,l.custom.appdata=e.join(",")}m(l.custom)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalAppcustomDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.dial=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dial.appdata)switch(l.dial.appType?l.dial.appType.toLowerCase():l.dial.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dial.appdata.split(",");l.dial.key=d[0],l.dial.language=d[1],l.dial.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dial.appdata.split(",");l.dial.projectId=d[0],l.dial.clientEmail=d[1],l.dial.privateKey=d[2],l.dial.language=d[3],l.dial.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dial.appdata.split(",");l.dial.accesskeyid=d[0],l.dial.secretaccesskey=d[1],l.dial.lexregion=d[2],l.dial.botname=d[3],l.dial.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dial.appdata.split(",");l.dial.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dial.text=d.slice(1,d.length).join(",");break;case"message":l.dial.text=l.dial.appdata;break;case"set":l.dial.name=l.dial.appdata.split("=")[0],l.dial.value=l.dial.appdata.split("=")[1];break;case"agi":l.dial.project=l.dial.appdata;break;default:var c=l.dial.appdata.split(",");l.dial.tech=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dial.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dial.options=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dial.url=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10)}function m(e){n.hide(e)}l.dial.type&&"outbound"===l.dial.type.toLowerCase()&&"outbounddial"===l.dial.appType.toLowerCase()&&(l.dial.prefix=l.dial.phone?l.dial.phone.split("$")[0]:void 0,l.dial.callerId=l.dial.callerID?"CALLERID(all)="+l.dial.callerID:void 0),l.saveInternalRouteApp=function(){l.errors=[];var e=[];l.dial.type&&"outbound"===l.dial.type.toLowerCase()&&"outboundDial"===l.dial.appType&&(l.dial.phone=i.cutdigits?(l.dial.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dial.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dial.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dial.options+="U(xcally-mixmonitor-context)"):l.dial.options=l.dial.options.replace("U(xcally-mixmonitor-context)",""));if(l.dial.appType&&"custom"===l.dial.appType);else switch((l.dial.app||l.dial.appType).toLowerCase()){case"set":l.dial.appdata=l.dial.name+"="+l.dial.value;break;case"custom":break;default:e[0]=l.dial.tech,e[1]=l.dial.timeout,e[2]=l.dial.options,e[3]=l.dial.url,l.dial.appdata=e.join(",")}m(l.dial)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalAppdialDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.externaldial=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.externaldial.appdata)switch(l.externaldial.appType?l.externaldial.appType.toLowerCase():l.externaldial.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.externaldial.appdata.split(",");l.externaldial.key=d[0],l.externaldial.language=d[1],l.externaldial.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.externaldial.appdata.split(",");l.externaldial.projectId=d[0],l.externaldial.clientEmail=d[1],l.externaldial.privateKey=d[2],l.externaldial.language=d[3],l.externaldial.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.externaldial.appdata.split(",");l.externaldial.accesskeyid=d[0],l.externaldial.secretaccesskey=d[1],l.externaldial.lexregion=d[2],l.externaldial.botname=d[3],l.externaldial.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.externaldial.appdata.split(",");l.externaldial.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.externaldial.text=d.slice(1,d.length).join(",");break;case"message":l.externaldial.text=l.externaldial.appdata;break;case"set":l.externaldial.name=l.externaldial.appdata.split("=")[0],l.externaldial.value=l.externaldial.appdata.split("=")[1];break;case"agi":l.externaldial.project=l.externaldial.appdata;break;default:var c=l.externaldial.appdata.split(",");l.externaldial.trunk=c[0].split("/")[1],l.externaldial.phone=c[0].split("/")[2],l.externaldial.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.externaldial.options=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.externaldial.url=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10)}function m(e){n.hide(e)}l.externaldial.type&&"outbound"===l.externaldial.type.toLowerCase()&&"outbounddial"===l.externaldial.appType.toLowerCase()&&(l.externaldial.prefix=l.externaldial.phone?l.externaldial.phone.split("$")[0]:void 0,l.externaldial.callerId=l.externaldial.callerID?"CALLERID(all)="+l.externaldial.callerID:void 0),l.saveInternalRouteApp=function(){l.errors=[];var e=[];l.externaldial.type&&"outbound"===l.externaldial.type.toLowerCase()&&"outboundDial"===l.externaldial.appType&&(l.externaldial.phone=i.cutdigits?(l.externaldial.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.externaldial.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.externaldial.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.externaldial.options+="U(xcally-mixmonitor-context)"):l.externaldial.options=l.externaldial.options.replace("U(xcally-mixmonitor-context)",""));if(l.externaldial.appType&&"custom"===l.externaldial.appType);else switch((l.externaldial.app||l.externaldial.appType).toLowerCase()){case"set":l.externaldial.appdata=l.externaldial.name+"="+l.externaldial.value;break;case"custom":break;default:e[0]=["SIP",l.externaldial.trunk,l.externaldial.phone].join("/"),e[1]=l.externaldial.timeout,e[2]=l.externaldial.options,e[3]=l.externaldial.url,l.externaldial.appdata=e.join(",")}m(l.externaldial)},l.closeDialog=m,o.hasRole("admin")?s.trunk.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.trunks=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.trunk.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.trunks=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1011}).$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.trunks,{id:e.resourceId})}),t=null;if(l.externaldial&&(t=_.find(l.trunks,{name:l.externaldial.trunk})),t&&!_.some(n,["id",t.id])){var a=_.find(l.trunks,{id:t.id});a.canSelect=!1,n.push(a)}l.trunks=n})}else{var t=[],a=null;l.externaldial&&(a=_.find(l.trunks,{name:l.externaldial.trunk}));for(var i=0;i<l.trunks.length;i++)a&&l.trunks[i].id===a.id&&(l.trunks[i].canSelect=!1,t.push(l.trunks[i]));l.trunks=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalAppexternaldialDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.goto=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.goto.appdata)switch(l.goto.appType?l.goto.appType.toLowerCase():l.goto.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.goto.appdata.split(",");l.goto.key=d[0],l.goto.language=d[1],l.goto.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.goto.appdata.split(",");l.goto.projectId=d[0],l.goto.clientEmail=d[1],l.goto.privateKey=d[2],l.goto.language=d[3],l.goto.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.goto.appdata.split(",");l.goto.accesskeyid=d[0],l.goto.secretaccesskey=d[1],l.goto.lexregion=d[2],l.goto.botname=d[3],l.goto.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.goto.appdata.split(",");l.goto.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.goto.text=d.slice(1,d.length).join(",");break;case"message":l.goto.text=l.goto.appdata;break;case"set":l.goto.name=l.goto.appdata.split("=")[0],l.goto.value=l.goto.appdata.split("=")[1];break;case"agi":l.goto.project=l.goto.appdata;break;default:var c=l.goto.appdata.split(",");l.goto.context=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.goto.extension=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.goto.priority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.goto.type&&"outbound"===l.goto.type.toLowerCase()&&"outbounddial"===l.goto.appType.toLowerCase()&&(l.goto.prefix=l.goto.phone?l.goto.phone.split("$")[0]:void 0,l.goto.callerId=l.goto.callerID?"CALLERID(all)="+l.goto.callerID:void 0),l.saveInternalRouteApp=function(){l.errors=[];var e=[];l.goto.type&&"outbound"===l.goto.type.toLowerCase()&&"outboundDial"===l.goto.appType&&(l.goto.phone=i.cutdigits?(l.goto.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.goto.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.goto.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.goto.options+="U(xcally-mixmonitor-context)"):l.goto.options=l.goto.options.replace("U(xcally-mixmonitor-context)",""));if(l.goto.appType&&"custom"===l.goto.appType);else switch((l.goto.app||l.goto.appType).toLowerCase()){case"set":l.goto.appdata=l.goto.name+"="+l.goto.value;break;case"custom":break;default:e[0]=l.goto.context,e[1]=l.goto.extension,e[2]=l.goto.priority,l.goto.appdata=e.join(",")}m(l.goto)},l.closeDialog=m,o.hasRole("admin")?s.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.contexts=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.contexts=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.contexts,{id:e.resourceId})}),t=null;if(l.goto&&(t=_.find(l.contexts,{name:l.goto.context})),t&&!_.some(n,["id",t.id])){var a=_.find(l.contexts,{id:t.id});a.canSelect=!1,n.push(a)}l.contexts=n}):s.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){l.contexts=e.rows||[]})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalAppgotoDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.hangup=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.hangup.appdata)switch(l.hangup.appType?l.hangup.appType.toLowerCase():l.hangup.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.hangup.appdata.split(",");l.hangup.key=d[0],l.hangup.language=d[1],l.hangup.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.hangup.appdata.split(",");l.hangup.projectId=d[0],l.hangup.clientEmail=d[1],l.hangup.privateKey=d[2],l.hangup.language=d[3],l.hangup.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.hangup.appdata.split(",");l.hangup.accesskeyid=d[0],l.hangup.secretaccesskey=d[1],l.hangup.lexregion=d[2],l.hangup.botname=d[3],l.hangup.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.hangup.appdata.split(",");l.hangup.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.hangup.text=d.slice(1,d.length).join(",");break;case"message":l.hangup.text=l.hangup.appdata;break;case"set":l.hangup.name=l.hangup.appdata.split("=")[0],l.hangup.value=l.hangup.appdata.split("=")[1];break;case"agi":l.hangup.project=l.hangup.appdata;break;default:var c=l.hangup.appdata.split(",");l.hangup.appdata=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.hangup.type&&"outbound"===l.hangup.type.toLowerCase()&&"outbounddial"===l.hangup.appType.toLowerCase()&&(l.hangup.prefix=l.hangup.phone?l.hangup.phone.split("$")[0]:void 0,l.hangup.callerId=l.hangup.callerID?"CALLERID(all)="+l.hangup.callerID:void 0),l.saveInternalRouteApp=function(){l.errors=[];var e=[];l.hangup.type&&"outbound"===l.hangup.type.toLowerCase()&&"outboundDial"===l.hangup.appType&&(l.hangup.phone=i.cutdigits?(l.hangup.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.hangup.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.hangup.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.hangup.options+="U(xcally-mixmonitor-context)"):l.hangup.options=l.hangup.options.replace("U(xcally-mixmonitor-context)",""));if(l.hangup.appType&&"custom"===l.hangup.appType);else switch((l.hangup.app||l.hangup.appType).toLowerCase()){case"set":l.hangup.appdata=l.hangup.name+"="+l.hangup.value;break;case"custom":break;default:e[0]=l.hangup.appdata,l.hangup.appdata=e.join(",")}m(l.hangup)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalApphangupDialogController",e)}(),function(){"use strict";function e(n,o,t,e,a,r,i,s){var l=this;if(l.currentUser=i.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(e.appType||e.app).toUpperCase(),l.internaldial=angular.copy(e),l.crudPermissions=s,l.hasModulePermissions={},l.internaldial.appdata)switch(l.internaldial.appType?l.internaldial.appType.toLowerCase():l.internaldial.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.internaldial.appdata.split(",");l.internaldial.key=d[0],l.internaldial.language=d[1],l.internaldial.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.internaldial.appdata.split(",");l.internaldial.projectId=d[0],l.internaldial.clientEmail=d[1],l.internaldial.privateKey=d[2],l.internaldial.language=d[3],l.internaldial.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.internaldial.appdata.split(",");l.internaldial.accesskeyid=d[0],l.internaldial.secretaccesskey=d[1],l.internaldial.lexregion=d[2],l.internaldial.botname=d[3],l.internaldial.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.internaldial.appdata.split(",");l.internaldial.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.internaldial.text=d.slice(1,d.length).join(",");break;case"message":l.internaldial.text=l.internaldial.appdata;break;case"set":l.internaldial.name=l.internaldial.appdata.split("=")[0],l.internaldial.value=l.internaldial.appdata.split("=")[1];break;case"agi":l.internaldial.project=l.internaldial.appdata;break;default:var c=l.internaldial.appdata.split(",");l.internaldial.user=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.internaldial.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.internaldial.options=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.internaldial.url=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10)}l.internaldial.type&&"outbound"===l.internaldial.type.toLowerCase()&&"outbounddial"===l.internaldial.appType.toLowerCase()&&(l.internaldial.prefix=l.internaldial.phone?l.internaldial.phone.split("$")[0]:void 0,l.internaldial.callerId=l.internaldial.callerID?"CALLERID(all)="+l.internaldial.callerID:void 0),l.saveInternalRouteApp=function(){l.errors=[];var e=[];l.internaldial.type&&"outbound"===l.internaldial.type.toLowerCase()&&"outboundDial"===l.internaldial.appType&&(l.internaldial.phone=a.cutdigits?(l.internaldial.prefix||"")+"${EXTEN:"+a.cutdigits+"}":(l.internaldial.prefix||"")+"${EXTEN}","none"!==a.recordingFormat?l.internaldial.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.internaldial.options+="U(xcally-mixmonitor-context)"):l.internaldial.options=l.internaldial.options.replace("U(xcally-mixmonitor-context)",""));if(l.internaldial.appType&&"custom"===l.internaldial.appType);else switch((l.internaldial.app||l.internaldial.appType).toLowerCase()){case"set":l.internaldial.appdata=l.internaldial.name+"="+l.internaldial.value;break;case"custom":break;default:e[0]=l.internaldial.user,e[1]=l.internaldial.timeout,e[2]=l.internaldial.options,e[3]=l.internaldial.url,l.internaldial.appdata=e.join(",")}p(l.internaldial)},l.closeDialog=p;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}],u=null;function p(e){n.hide(e)}i.hasRole("admin")?r.user.get({fields:"id,name,role",sort:"name",nolimit:"true"}).$promise.then(function(e){l.users=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.user.get({fields:"id,name,role",sort:"name",nolimit:"true"}).$promise.then(function(e){u=e.rows||[]}).then(function(){for(var e=[],n=0;n<m.length;n++)e.push(r.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[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<m.length;a++){var i=_.find(n,["sectionId",m[a].id]);if(i)if(i.autoAssociation){var s=[];u.forEach(function(e){e.role===m[a].role&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(r.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;l.internaldial&&(t=_.find(u,{name:l.internaldial.user}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&u.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),l.users=n}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalAppinternaldialDialogController",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("EditInternalAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.playback=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.playback.appdata)switch(l.playback.appType?l.playback.appType.toLowerCase():l.playback.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.playback.appdata.split(",");l.playback.key=d[0],l.playback.language=d[1],l.playback.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.playback.appdata.split(",");l.playback.projectId=d[0],l.playback.clientEmail=d[1],l.playback.privateKey=d[2],l.playback.language=d[3],l.playback.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.playback.appdata.split(",");l.playback.accesskeyid=d[0],l.playback.secretaccesskey=d[1],l.playback.lexregion=d[2],l.playback.botname=d[3],l.playback.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.playback.appdata.split(",");l.playback.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.playback.text=d.slice(1,d.length).join(",");break;case"message":l.playback.text=l.playback.appdata;break;case"set":l.playback.name=l.playback.appdata.split("=")[0],l.playback.value=l.playback.appdata.split("=")[1];break;case"agi":l.playback.project=l.playback.appdata;break;default:var c=l.playback.appdata.split(",");l.playback.appdata=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.playback.options=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}function m(e){n.hide(e)}l.playback.type&&"outbound"===l.playback.type.toLowerCase()&&"outbounddial"===l.playback.appType.toLowerCase()&&(l.playback.prefix=l.playback.phone?l.playback.phone.split("$")[0]:void 0,l.playback.callerId=l.playback.callerID?"CALLERID(all)="+l.playback.callerID:void 0),l.saveInternalRouteApp=function(){l.errors=[];var e=[];l.playback.type&&"outbound"===l.playback.type.toLowerCase()&&"outboundDial"===l.playback.appType&&(l.playback.phone=i.cutdigits?(l.playback.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.playback.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.playback.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.playback.options+="U(xcally-mixmonitor-context)"):l.playback.options=l.playback.options.replace("U(xcally-mixmonitor-context)",""));if(l.playback.appType&&"custom"===l.playback.appType);else switch((l.playback.app||l.playback.appType).toLowerCase()){case"set":l.playback.appdata=l.playback.name+"="+l.playback.value;break;case"custom":break;default:e[0]=l.playback.appdata,e[1]=l.playback.options,l.playback.appdata=e.join(",")}m(l.playback)},l.closeDialog=m,o.hasRole("admin")?s.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.sounds=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.sounds=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$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.sounds,{id:e.resourceId})}),t=null;if(l.playback&&(t=_.find(l.sounds,{save_name:l.playback.appdata})),t&&!_.some(n,["id",t.id])){var a=_.find(l.sounds,{id:t.id});a.canSelect=!1,n.push(a)}l.sounds=n})}else{var t=[],a=null;l.playback&&(a=_.find(l.sounds,{save_name:l.playback.appdata}));for(var i=0;i<l.sounds.length;i++)a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,t.push(l.sounds[i]));l.sounds=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalAppplaybackDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.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.options=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.queue.URL=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.queue.sound=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.queue.timeout=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.queue.agi=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.queue.macro=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.queue.gosub=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.queue.rule=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.queue.position=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10)}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.saveInternalRouteApp=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)",""));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.options,e[2]=l.queue.URL,e[3]=l.queue.sound,e[4]=l.queue.timeout,e[5]=l.queue.agi,e[6]=l.queue.macro,e[7]=l.queue.gosub,e[8]=l.queue.rule,e[9]=l.queue.position,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.sounds=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.sounds=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$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.sounds,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.sounds,{save_name:l.queue.sound})),t&&!_.some(n,["id",t.id])){var a=_.find(l.sounds,{id:t.id});a.canSelect=!1,n.push(a)}l.sounds=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.sounds,{save_name:l.queue.sound}));for(var i=0;i<l.sounds.length;i++)a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,t.push(l.sounds[i]));l.sounds=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.hasRole("admin")?s.voiceQueue.get({type:"inbound",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.voiceQueue.get({type:"inbound",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:401}).$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","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalAppqueueDialogController",e)}(),function(){"use strict";function e(n,o,t,e,a,r,i,s){var l=this;if(l.currentUser=i.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(e.appType||e.app).toUpperCase(),l.ringgroup=angular.copy(e),l.crudPermissions=s,l.hasModulePermissions={},l.ringgroup.appdata)switch(l.ringgroup.appType?l.ringgroup.appType.toLowerCase():l.ringgroup.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.ringgroup.appdata.split(",");l.ringgroup.key=d[0],l.ringgroup.language=d[1],l.ringgroup.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.ringgroup.appdata.split(",");l.ringgroup.projectId=d[0],l.ringgroup.clientEmail=d[1],l.ringgroup.privateKey=d[2],l.ringgroup.language=d[3],l.ringgroup.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.ringgroup.appdata.split(",");l.ringgroup.accesskeyid=d[0],l.ringgroup.secretaccesskey=d[1],l.ringgroup.lexregion=d[2],l.ringgroup.botname=d[3],l.ringgroup.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.ringgroup.appdata.split(",");l.ringgroup.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.ringgroup.text=d.slice(1,d.length).join(",");break;case"message":l.ringgroup.text=l.ringgroup.appdata;break;case"set":l.ringgroup.name=l.ringgroup.appdata.split("=")[0],l.ringgroup.value=l.ringgroup.appdata.split("=")[1];break;case"agi":l.ringgroup.project=l.ringgroup.appdata;break;default:var c=l.ringgroup.appdata.split(",");l.ringgroup.multipleUsers=c[0].split("&"),l.ringgroup.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.ringgroup.options=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.ringgroup.url=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10)}l.ringgroup.type&&"outbound"===l.ringgroup.type.toLowerCase()&&"outbounddial"===l.ringgroup.appType.toLowerCase()&&(l.ringgroup.prefix=l.ringgroup.phone?l.ringgroup.phone.split("$")[0]:void 0,l.ringgroup.callerId=l.ringgroup.callerID?"CALLERID(all)="+l.ringgroup.callerID:void 0),l.saveInternalRouteApp=function(){l.errors=[];var e=[];l.ringgroup.type&&"outbound"===l.ringgroup.type.toLowerCase()&&"outboundDial"===l.ringgroup.appType&&(l.ringgroup.phone=a.cutdigits?(l.ringgroup.prefix||"")+"${EXTEN:"+a.cutdigits+"}":(l.ringgroup.prefix||"")+"${EXTEN}","none"!==a.recordingFormat?l.ringgroup.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.ringgroup.options+="U(xcally-mixmonitor-context)"):l.ringgroup.options=l.ringgroup.options.replace("U(xcally-mixmonitor-context)",""));if(l.ringgroup.appType&&"custom"===l.ringgroup.appType);else switch((l.ringgroup.app||l.ringgroup.appType).toLowerCase()){case"set":l.ringgroup.appdata=l.ringgroup.name+"="+l.ringgroup.value;break;case"custom":break;default:e[0]=l.ringgroup.multipleUsers.join("&"),e[1]=l.ringgroup.timeout,e[2]=l.ringgroup.options,e[3]=l.ringgroup.url,l.ringgroup.appdata=e.join(",")}p(l.ringgroup)},l.closeDialog=p;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}],u=null;function p(e){n.hide(e)}i.hasRole("admin")?r.user.get({fields:"id,name,role",sort:"name",nolimit:"true"}).$promise.then(function(e){l.users=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.user.get({fields:"id,name,role",sort:"name",nolimit:"true"}).$promise.then(function(e){u=e.rows||[]}).then(function(){for(var e=[],n=0;n<m.length;n++)e.push(r.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[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<m.length;a++){var i=_.find(n,["sectionId",m[a].id]);if(i)if(i.autoAssociation){var s=[];u.forEach(function(e){e.role===m[a].role&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(r.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;l.ringgroup&&(t=_.find(u,{name:l.ringgroup.multipleUsers}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&u.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),l.users=n}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalAppringgroupDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.set=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.set.appdata)switch(l.set.appType?l.set.appType.toLowerCase():l.set.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.set.appdata.split(",");l.set.key=d[0],l.set.language=d[1],l.set.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.set.appdata.split(",");l.set.projectId=d[0],l.set.clientEmail=d[1],l.set.privateKey=d[2],l.set.language=d[3],l.set.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.set.appdata.split(",");l.set.accesskeyid=d[0],l.set.secretaccesskey=d[1],l.set.lexregion=d[2],l.set.botname=d[3],l.set.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.set.appdata.split(",");l.set.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.set.text=d.slice(1,d.length).join(",");break;case"message":l.set.text=l.set.appdata;break;case"set":l.set.name=l.set.appdata.split("=")[0],l.set.value=l.set.appdata.split("=")[1];break;case"agi":l.set.project=l.set.appdata;break;default:var c=l.set.appdata.split("=");l.set.name=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.set.value=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}function m(e){n.hide(e)}l.set.type&&"outbound"===l.set.type.toLowerCase()&&"outbounddial"===l.set.appType.toLowerCase()&&(l.set.prefix=l.set.phone?l.set.phone.split("$")[0]:void 0,l.set.callerId=l.set.callerID?"CALLERID(all)="+l.set.callerID:void 0),l.saveInternalRouteApp=function(){l.errors=[];var e=[];l.set.type&&"outbound"===l.set.type.toLowerCase()&&"outboundDial"===l.set.appType&&(l.set.phone=i.cutdigits?(l.set.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.set.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.set.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.set.options+="U(xcally-mixmonitor-context)"):l.set.options=l.set.options.replace("U(xcally-mixmonitor-context)",""));if(l.set.appType&&"custom"===l.set.appType);else switch((l.set.app||l.set.appType).toLowerCase()){case"set":l.set.appdata=l.set.name+"="+l.set.value;break;case"custom":break;default:e[0]=l.set.name,e[1]=l.set.value,l.set.appdata=e.join("=")}m(l.set)},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.set&&(t=_.find(l.variables,{name:l.set.name})),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.set&&(a=_.find(l.variables,{name:l.set.name}));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","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalAppsetDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.voicemail=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.voicemail.appdata)switch(l.voicemail.appType?l.voicemail.appType.toLowerCase():l.voicemail.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.voicemail.appdata.split(",");l.voicemail.key=d[0],l.voicemail.language=d[1],l.voicemail.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.voicemail.appdata.split(",");l.voicemail.projectId=d[0],l.voicemail.clientEmail=d[1],l.voicemail.privateKey=d[2],l.voicemail.language=d[3],l.voicemail.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.voicemail.appdata.split(",");l.voicemail.accesskeyid=d[0],l.voicemail.secretaccesskey=d[1],l.voicemail.lexregion=d[2],l.voicemail.botname=d[3],l.voicemail.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.voicemail.appdata.split(",");l.voicemail.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.voicemail.text=d.slice(1,d.length).join(",");break;case"message":l.voicemail.text=l.voicemail.appdata;break;case"set":l.voicemail.name=l.voicemail.appdata.split("=")[0],l.voicemail.value=l.voicemail.appdata.split("=")[1];break;case"agi":l.voicemail.project=l.voicemail.appdata;break;default:var c=l.voicemail.appdata.split(",");l.voicemail.voiceMail=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.voicemail.options=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}function m(e){n.hide(e)}l.voicemail.type&&"outbound"===l.voicemail.type.toLowerCase()&&"outbounddial"===l.voicemail.appType.toLowerCase()&&(l.voicemail.prefix=l.voicemail.phone?l.voicemail.phone.split("$")[0]:void 0,l.voicemail.callerId=l.voicemail.callerID?"CALLERID(all)="+l.voicemail.callerID:void 0),l.saveInternalRouteApp=function(){l.errors=[];var e=[];l.voicemail.type&&"outbound"===l.voicemail.type.toLowerCase()&&"outboundDial"===l.voicemail.appType&&(l.voicemail.phone=i.cutdigits?(l.voicemail.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.voicemail.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.voicemail.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.voicemail.options+="U(xcally-mixmonitor-context)"):l.voicemail.options=l.voicemail.options.replace("U(xcally-mixmonitor-context)",""));if(l.voicemail.appType&&"custom"===l.voicemail.appType);else switch((l.voicemail.app||l.voicemail.appType).toLowerCase()){case"set":l.voicemail.appdata=l.voicemail.name+"="+l.voicemail.value;break;case"custom":break;default:e[0]=l.voicemail.voiceMail,e[1]=l.voicemail.options,l.voicemail.appdata=e.join(",")}m(l.voicemail)},l.closeDialog=m,o.hasRole("admin")?s.voiceMail.get({fields:"id,mailbox",sort:"mailbox",nolimit:"true"}).$promise.then(function(e){l.voiceMails=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEMAILS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceMail.get({fields:"id,mailbox",sort:"mailbox",nolimit:"true"}).$promise.then(function(e){l.voiceMails=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:406}).$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.voiceMails,{id:e.resourceId})}),t=null;if(l.voicemail&&(t=_.find(l.voiceMails,{mailbox:l.voicemail.voiceMail})),t&&!_.some(n,["id",t.id])){var a=_.find(l.voiceMails,{id:t.id});a.canSelect=!1,n.push(a)}l.voiceMails=n})}else{var t=[],a=null;l.voicemail&&(a=_.find(l.voiceMails,{mailbox:l.voicemail.voiceMail}));for(var i=0;i<l.voiceMails.length;i++)a&&l.voiceMails[i].id===a.id&&(l.voiceMails[i].canSelect=!1,t.push(l.voiceMails[i]));l.voiceMails=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMails",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","internalrouteApp","internalroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditInternalAppvoicemailDialogController",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.internalroute=c||e.params.internalroute||{},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.gotoInternalRoutes=function(){e.go("app.voice.internalroutes",{},{reload:"app.voice.internalroutes"})},u.saveInternalRoute=function(){r.voiceExtension.update({id:u.internalroute.id},u.internalroute).$promise.then(function(){l.success({title:"InternalRoute updated!",msg:u.internalroute.name?u.internalroute.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$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",nolimit:"true"}).$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.internalroute&&(t=_.find(u.contexts,{name:u.internalroute.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",nolimit:"true",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","internalroute","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",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.internalroutes=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="internalroutes",f.listOrder="",f.listOrderAsc=null,f.selectedInternalRoutes=[],f.query={fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.voice.internalroutes.edit",{id:e.id,internalroute:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("internalroute")+"?").htmlContent("<b>"+(e.name||"internalroute")+"</b> will be deleted.").ariaLabel("delete internalroute").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getInternalRoutes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceExtension.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="InternalRoutes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInternalRoute=function(e,n){i.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalroutes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalroute:n,internalroutes:f.internalroutes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInternalRoute=y,f.exportSelectedInternalRoutes=function(){var e=angular.copy(f.selectedInternalRoutes);return f.selectedInternalRoutes=[],e},f.deleteSelectedInternalRoutes=function(e){var n=i.confirm().title("Are you sure want to delete the selected internalroutes?").htmlContent("<b>"+f.selectedInternalRoutes.length+" selected</b> will be deleted.").ariaLabel("delete InternalRoutes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedInternalRoutes.forEach(function(e){y(e)}),f.selectedInternalRoutes=[]})},f.deselectInternalRoutes=function(){f.selectedInternalRoutes=[]},f.selectAllInternalRoutes=function(){f.selectedInternalRoutes=f.internalroutes.rows},g.hasRole("admin")?m.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){f.contexts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){f.contexts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.contexts,{id:e.resourceId})}),t=null;if(f.internalroute&&(t=_.find(f.contexts,{name:f.internalroute.context})),t&&!_.some(n,["id",t.id])){var a=_.find(f.contexts,{id:t.id});a.canSelect=!1,n.push(a)}f.contexts=n}):m.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){f.contexts=e.rows||[]})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.internalroutes=e||{count:0,rows:[]}}function y(e){m.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(f.internalroutes.rows,{id:e.id}),f.internalroutes.count-=1,f.internalroutes.rows.length||f.getInternalRoutes(),p.success({title:_.startCase("InternalRoute")+" 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:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)p.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:DELETEvoiceExtension",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.getInternalRoutes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","internalroutes","userProfile","userProfileSection","api","msUtils","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(e,n,t,a,i,s,o,r,l,h,d,c,m,u){var f=this;function p(){var e=2,n=[];n.push({type:"outbound",app:"Set",appdata:"CDR(type)=outbound",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"CDR(destination)="+(f.outboundroute.cutdigits?"${EXTEN:"+f.outboundroute.cutdigits+"}":"${EXTEN}"),context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"outboundrouteid="+f.outboundroute.id,context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),f.outboundroute.hasOwnProperty("recordingFormat")&&"none"!==f.outboundroute.recordingFormat&&(n.push({type:"outbound",app:"Set",appdata:"_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"_XCALLY_MIXMONITOR_FORMAT="+f.outboundroute.recordingFormat||"wav",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}));for(var t=0,a=0;t<f.outboundrouteApps.rows.length;t++,a=0){var i=f.outboundrouteApps.rows[t],s=[],o=[];i.intervals="*,*,*,*"!==i.interval?[i.interval]:i.IntervalId?_.map(_.filter(f.intervals.rows,{IntervalId:i.IntervalId}),"interval"):[],i.context=f.outboundroute.context,i.exten=f.outboundroute.exten,i.type&&(i.type=i.type.toLowerCase()),i.hasOwnProperty("tag")&&i.tag&&"--"!==i.tag&&s.push({type:i.type.toLowerCase(),app:"Set",appdata:"CDR(tag)="+i.tag,context:f.outboundroute.context,exten:f.outboundroute.exten,priority:i.intervals.length+e+a++,VoiceExtensionId:f.outboundroute.id}),i.callerID?s.push({type:i.type.toLowerCase(),app:"ExecIf",appdata:"$[${LEN(${PREFIX-CALLERIDALL})} > 0]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)="+i.callerID+")",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:i.intervals.length+e+a++,VoiceExtensionId:f.outboundroute.id}):s.push({type:i.type.toLowerCase(),app:"ExecIf",appdata:"$[${LEN(${PREFIX-CALLERIDALL})} > 0]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No number available)",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:i.intervals.length+e+a++,VoiceExtensionId:f.outboundroute.id});for(var r=0;r<i.intervals.length;r++){var l=e+i.intervals.length,d=r===i.intervals.length-1?e+s.length+o.length+2:e+r+1;s.splice(r,0,{type:"outbound",app:"GotoIfTime",appdata:i.intervals[r]+"?"+f.outboundroute.context+",${EXTEN},"+l+":"+f.outboundroute.context+",${EXTEN},"+d,exten:f.outboundroute.exten,context:f.outboundroute.context,priority:e+r,VoiceExtensionId:f.outboundroute.id})}if("outboundDial"===i.appType){var c=_.find(f.apps,{appType:"outboundDial"});if(c&&c.fields){for(var m={},u=i.appdata.split(","),p=[],g=0,v=c.fields.length;g<v;g++)if(c.fields[g].hasOwnProperty("param"))switch(c.fields[g].name){case"trunk":m.trunk=u[c.fields[g].param].split("/")[1],m.phone=u[c.fields[g].param].split("/")[2],m.prefix=m.phone?m.phone.split("$")[0]:void 0,m.phone=f.outboundroute.cutdigits?(m.prefix||"")+"${EXTEN:"+f.outboundroute.cutdigits+"}":(m.prefix||"")+"${EXTEN}",p[c.fields[g].param]=["SIP",m.trunk,m.phone].join("/");break;case"options":m.options=u[c.fields[g].param],"none"!==f.outboundroute.recordingFormat?m.options.indexOf("U(xcally-mixmonitor-context)")<0&&(m.options+="U(xcally-mixmonitor-context)"):m.options=m.options.replace("U(xcally-mixmonitor-context)",""),p[c.fields[g].param]=m.options;break;default:p[c.fields[g].param]=u[c.fields[g].param]}i.appdata=p.join(",")}}i.priority=s.length?_.last(s).priority+1:e,e=(o.length?_.last(o).priority:i.priority)+1,n=_.concat(n,s,[i],o)}n.push({type:"outbound",app:"Hangup",exten:f.outboundroute.exten,context:f.outboundroute.context,priority:e,VoiceExtensionId:f.outboundroute.id}),h.voiceExtension.addApplications({id:f.outboundroute.id},_.sortBy(n,"priority")).$promise.then(function(e){f.outboundrouteApps.rows=e.rows}).catch(function(e){console.error(e)})}function g(e){a.hide(e)}f.currentUser=d.getCurrentUser(),f.errors=[],f.setting=m,f.license=c,f.crudPermissions=u,f.hasModulePermissions={},f.passwordPattern=f.setting&&f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.title="VOICE.EDIT_OUTBOUNDROUTE",f.outboundroute=angular.copy(l),f.outboundroutes=r,f.newOutboundRoute=!1,f.outboundrouteApps={count:0,rows:[]},f.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",type:"Outbound",types:["always","custom","list"],fields:[],isApp:!1},{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",icon:"icon-apps",interval:"*,*,*,*",options:"xX",isApp:!0,extraApi:[{name:"trunks",route:"trunk",filters:{fields:"name",sort:"name"}},{name:"tags",route:"tag",filters:{fields:"name",sort:"name",nolimit:!0}}],fields:[{title:"Trunk",name:"trunk",type:"apiselect",values:"trunks",value:"trunk.name",option:"trunk.name",required:!0,param:0},{title:"Caller_ID",name:"callerID",type:"text",ngPattern:"/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/",help:!0},{title:"Prefix",name:"prefix",type:"text"},{title:"Tags",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",defaultValues:[{value:"'--'",option:"None"}]},{title:"Timeout",name:"timeout",type:"number",min:0,param:1},{title:"Options",name:"options",type:"text",param:2},{title:"Url",name:"url",type:"text",param:3}]},{app:null,type:"Outbound",appType:"custom",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Application_Name",name:"app",type:"text",required:!0,param:0},{title:"Arguments",name:"appdata",type:"text",param:1}]}],["app"]),{isApp:!1}),f.outboundroute||(f.outboundroute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},f.title="VOICE.NEW_OUTBOUNDROUTE",f.newOutboundRoute=!0),f.addNewOutboundRoute=function(){f.errors=[],h.voiceExtension.save(f.outboundroute).$promise.then(function(e){f.outboundroutes.unshift(e.toJSON()),o.success({title:"OutboundRoute properly created",msg:f.outboundroute.name?f.outboundroute.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.saveOutboundRoute=function(){f.errors=[],h.voiceExtension.update({id:f.outboundroute.id},f.outboundroute).$promise.then(function(e){var n=_.find(f.outboundroutes,{id:e.id});n&&(_.merge(n,_.pick(e.toJSON(),_.keys(n))),h.voiceExtension.get({sort:"priority",VoiceExtensionId:n.id,isApp:!0,nolimit:!0}).$promise.then(function(e){f.outboundrouteApps=e,p()})),o.success({title:"OutboundRoute properly saved!",msg:f.outboundroute.name?f.outboundroute.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteOutboundRoute=function(t){h.voicePrefix.get({VoiceExtensionId:l.id}).$promise.then(function(e){if(e&&e.rows&&0<e.rows.length)return o.error({title:"Outbound route not deleted!",msg:"You can't remove an outbound route associated to an out prefix"});f.errors=[];var n=a.confirm().title("Are you sure?").content("The outboundroute will be deleted.").ariaLabel("Delete OutboundRoute").ok("Delete").cancel("Cancel").targetEvent(t);a.show(n).then(function(){h.voiceExtension.delete({id:f.outboundroute.id}).$promise.then(function(){_.remove(f.outboundroutes,{id:f.outboundroute.id}),o.success({title:"OutboundRoute properly deleted!",msg:(f.outboundroute.name||"outboundroute")+" has been deleted!"}),g(f.outboundroute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})})},f.getDateFromString=function(e){return null===e?void 0:new Date(e)},f.rewriteRouting=p,f.closeDialog=g,d.hasRole("admin")?h.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){f.contexts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):h.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){f.contexts=e.rows||[]}).then(function(){return h.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:h.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.contexts,{id:e.resourceId})}),t=null;if(f.outboundroute&&(t=_.find(f.contexts,{name:f.outboundroute.context})),t&&!_.some(n,["id",t.id])){var a=_.find(f.contexts,{id:t.id});a.canSelect=!1,n.push(a)}f.contexts=n}):h.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){f.contexts=e.rows||[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","outboundroutes","outboundroute","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(b,i,a,s,t,e,n){var A=this;function o(e,n){if(A.outboundrouteApps.rows.length){var t=A.outboundrouteApps.rows[n]?A.outboundrouteApps.rows[n]:A.outboundrouteApps.rows[0];i.show({controller:"EditoutboundApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundroutes/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundrouteApp:t,outboundroute:A.outboundroute,crudPermissions:A.crudPermissions}}).then(function(e){e&&(e.id?A.outboundrouteApps.rows[n]=e:A.outboundrouteApps.rows.splice(n,0,e),r())}).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 r(e){var n=2,t=[];t.push({type:"outbound",app:"Set",appdata:"CDR(type)=outbound",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:n++,VoiceExtensionId:A.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:"CDR(destination)="+(A.outboundroute.cutdigits?"${EXTEN:"+A.outboundroute.cutdigits+"}":"${EXTEN}"),context:A.outboundroute.context,exten:A.outboundroute.exten,priority:n++,VoiceExtensionId:A.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:"CDR(routeid)="+A.outboundroute.id,context:A.outboundroute.context,exten:A.outboundroute.exten,priority:n++,VoiceExtensionId:A.outboundroute.id});var a=n++;t.push({type:"outbound",app:"ExecIf",appdata:"$[${LEN(${CDR(prefix)})} > 0]?Goto("+(a+2)+"):Goto("+(a+1)+")",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:a,VoiceExtensionId:A.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:A.outboundroute.cutdigits?"CDR(prefix)=${EXTEN:0:"+A.outboundroute.cutdigits+"}":"CDR(prefix)=noprefix",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:n++,VoiceExtensionId:A.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:n++,VoiceExtensionId:A.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:n++,VoiceExtensionId:A.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:n++,VoiceExtensionId:A.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:"outboundrouteid="+A.outboundroute.id,context:A.outboundroute.context,exten:A.outboundroute.exten,priority:n++,VoiceExtensionId:A.outboundroute.id}),A.outboundroute.hasOwnProperty("recordingFormat")&&"none"!==A.outboundroute.recordingFormat&&(t.push({type:"outbound",app:"Set",appdata:"_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:n++,VoiceExtensionId:A.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:"_XCALLY_MIXMONITOR_FORMAT="+A.outboundroute.recordingFormat||"wav",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:n++,VoiceExtensionId:A.outboundroute.id}));for(var i=0,s=0;i<A.outboundrouteApps.rows.length;i++,s=0){var o=A.outboundrouteApps.rows[i],r=[],l=[];o.intervals="*,*,*,*"!==o.interval?[o.interval]:o.IntervalId?_.map(_.filter(A.intervals.rows,{IntervalId:o.IntervalId}),"interval"):[],o.context=A.outboundroute.context,o.exten=A.outboundroute.exten,o.type&&(o.type=o.type.toLowerCase()),o.hasOwnProperty("tag")&&o.tag&&"--"!==o.tag&&r.push({type:o.type.toLowerCase(),app:"Set",appdata:"CDR(tag)="+o.tag,context:A.outboundroute.context,exten:A.outboundroute.exten,priority:o.intervals.length+n+s++,VoiceExtensionId:A.outboundroute.id}),o.callerID?r.push({type:o.type.toLowerCase(),app:"ExecIf",appdata:"$[${LEN(${PREFIX-CALLERIDALL})} > 0]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)="+o.callerID+")",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:o.intervals.length+n+s++,VoiceExtensionId:A.outboundroute.id}):r.push({type:o.type.toLowerCase(),app:"ExecIf",appdata:"$[${LEN(${PREFIX-CALLERIDALL})} > 0]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No number available)",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:o.intervals.length+n+s++,VoiceExtensionId:A.outboundroute.id});for(var d=0;d<o.intervals.length;d++){var c=n+o.intervals.length,m=d===o.intervals.length-1?n+r.length+l.length+2:n+d+1;r.splice(d,0,{type:"outbound",app:"GotoIfTime",appdata:o.intervals[d]+"?"+A.outboundroute.context+",${EXTEN},"+c+":"+A.outboundroute.context+",${EXTEN},"+m,exten:A.outboundroute.exten,context:A.outboundroute.context,priority:n+d,VoiceExtensionId:A.outboundroute.id})}if(e&&"outboundDial"===o.appType){var u=_.find(A.apps,{appType:"outboundDial"});if(u&&u.fields){for(var p={},g=o.appdata.split(","),v=[],h=0,f=u.fields.length;h<f;h++)if(u.fields[h].hasOwnProperty("param"))switch(u.fields[h].name){case"trunk":p.trunk=g[u.fields[h].param].split("/")[1],p.phone=g[u.fields[h].param].split("/")[2],p.prefix=p.phone?p.phone.split("$")[0]:void 0,p.phone=A.outboundroute.cutdigits?(p.prefix||"")+"${EXTEN:"+A.outboundroute.cutdigits+"}":(p.prefix||"")+"${EXTEN}",v[u.fields[h].param]=["SIP",p.trunk,p.phone].join("/");break;case"options":p.options=g[u.fields[h].param],"none"!==A.outboundroute.recordingFormat?p.options.indexOf("U(xcally-mixmonitor-context)")<0&&(p.options+="U(xcally-mixmonitor-context)"):p.options=p.options.replace("U(xcally-mixmonitor-context)",""),v[u.fields[h].param]=p.options;break;default:v[u.fields[h].param]=g[u.fields[h].param]}o.appdata=v.join(",")}}o.priority=r.length?_.last(r).priority+1:n,n=(l.length?_.last(l).priority:o.priority)+1,t=_.concat(t,r,[o],l)}t.push({type:"outbound",app:"Hangup",exten:A.outboundroute.exten,context:A.outboundroute.context,priority:n,VoiceExtensionId:A.outboundroute.id}),b.voiceExtension.addApplications({id:A.outboundroute.id},_.sortBy(t,"priority")).$promise.then(function(e){A.outboundrouteApps.rows=e.rows}).catch(function(e){console.error(e)})}function l(e){A.outboundrouteApps=e||{count:0,rows:[]}}A.currentUser=n.getCurrentUser(),A.outboundroute={},A.outboundrouteApps={count:0,rows:[]},A.selectedOutboundRouteApps=[],A.crudPermissions,A.query={sort:"priority"},A.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",type:"Outbound",types:["always","custom","list"],fields:[],isApp:!1},{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",icon:"icon-apps",interval:"*,*,*,*",options:"xX",isApp:!0,extraApi:[{name:"trunks",field:{name:"trunk",key:"name"},route:"trunk",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1011}},{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Trunk",name:"trunk",type:"apiselect",values:"trunks",value:"trunk.name",option:"trunk.name",required:!0,param:0},{title:"Caller_ID",name:"callerID",type:"text",help:!0},{title:"Prefix",name:"prefix",type:"text"},{title:"Tags",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",defaultValues:[{value:"'--'",option:"None"}]},{title:"Timeout",name:"timeout",type:"number",min:0,param:1},{title:"Options",name:"options",type:"text",param:2},{title:"Url",name:"url",type:"text",param:3}]},{app:null,type:"Outbound",appType:"custom",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Application_Name",name:"app",type:"text",required:!0,param:0},{title:"Arguments",name:"appdata",type:"text",param:1}]}],["app"]),{isApp:!1}),A.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},A.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){o(e,e.newIndex)},onSort:function(e){r()}},A.init=function(e,n){A.outboundroute=e,A.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},A.applications.disabled=!A.crudPermissions.canEdit,t.on("voiceExtension:update",A.onVoiceExtensionUpdate),A.query.VoiceExtensionId=e.id,A.query.isApp=!0,A.query.nolimit=!0,A.getOutboundRouteApps(),A.getIntervals()},A.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(){A.outboundrouteApps.rows.splice(n,1),r()},function(){console.log("CANCEL")})},A.getOutboundRouteApps=function(){A.promise=b.voiceExtension.get(A.query,l).$promise},A.editOutboundRouteApp=o,A.editInterval=function(e,n){if(A.outboundrouteApps.rows.length){var t=A.outboundrouteApps.rows[n]?A.outboundrouteApps.rows[n]:A.outboundrouteApps.rows[0];i.show({controller:"EditoutboundAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundroutes/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:A.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,r())})}},A.deleteOutboundRouteApp=function(e){_.remove(A.outboundrouteApps.rows,{id:e.id}),r(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},A.deleteSelectedOutboundRouteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+A.selectedOutboundRouteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){A.selectedOutboundRouteApps.forEach(function(e){_.remove(A.outboundrouteApps.rows,{id:e.id})}),A.selectedOutboundRouteApps=[],r()})},A.rewriteRouting=r,A.getIntervals=function(){return b.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){A.intervals=e}).catch(function(e){console.error(e)})},A.onVoiceExtensionUpdate=function(e){e.VoiceExtensionId===A.outboundroute.id&&r(!0)},e.$on("$destroy",function(){t.removeAllListeners("voiceExtension:update")})}e.$inject=["api","$mdDialog","$document","toasty","socket","$scope","Auth"],angular.module("app.voice").controller("OutboundRouteActionsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.custom=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.custom.appdata)switch(l.custom.appType?l.custom.appType.toLowerCase():l.custom.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.custom.appdata.split(",");l.custom.key=d[0],l.custom.language=d[1],l.custom.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.custom.appdata.split(",");l.custom.projectId=d[0],l.custom.clientEmail=d[1],l.custom.privateKey=d[2],l.custom.language=d[3],l.custom.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.custom.appdata.split(",");l.custom.accesskeyid=d[0],l.custom.secretaccesskey=d[1],l.custom.lexregion=d[2],l.custom.botname=d[3],l.custom.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.custom.appdata.split(",");l.custom.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.custom.text=d.slice(1,d.length).join(",");break;case"message":l.custom.text=l.custom.appdata;break;case"set":l.custom.name=l.custom.appdata.split("=")[0],l.custom.value=l.custom.appdata.split("=")[1];break;case"agi":l.custom.project=l.custom.appdata;break;default:var c=l.custom.appdata.split(",");l.custom.app=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.custom.appdata=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}function m(e){n.hide(e)}l.custom.type&&"outbound"===l.custom.type.toLowerCase()&&"outbounddial"===l.custom.appType.toLowerCase()&&(l.custom.prefix=l.custom.phone?l.custom.phone.split("$")[0]:void 0,l.custom.callerId=l.custom.callerID?"CALLERID(all)="+l.custom.callerID:void 0),l.saveOutboundRouteApp=function(){l.errors=[];var e=[];l.custom.type&&"outbound"===l.custom.type.toLowerCase()&&"outboundDial"===l.custom.appType&&(l.custom.phone=i.cutdigits?(l.custom.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.custom.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.custom.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.custom.options+="U(xcally-mixmonitor-context)"):l.custom.options=l.custom.options.replace("U(xcally-mixmonitor-context)",""));if(l.custom.appType&&"custom"===l.custom.appType);else switch((l.custom.app||l.custom.appType).toLowerCase()){case"set":l.custom.appdata=l.custom.name+"="+l.custom.value;break;case"custom":break;default:e[0]=l.custom.app,e[1]=l.custom.appdata,l.custom.appdata=e.join(",")}m(l.custom)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","outboundrouteApp","outboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditoutboundAppcustomDialogController",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("EditoutboundAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="VOICE.EDIT_"+(a.appType||a.app).toUpperCase(),l.outbounddial=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.outbounddial.appdata)switch(l.outbounddial.appType?l.outbounddial.appType.toLowerCase():l.outbounddial.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.outbounddial.appdata.split(",");l.outbounddial.key=d[0],l.outbounddial.language=d[1],l.outbounddial.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.outbounddial.appdata.split(",");l.outbounddial.projectId=d[0],l.outbounddial.clientEmail=d[1],l.outbounddial.privateKey=d[2],l.outbounddial.language=d[3],l.outbounddial.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.outbounddial.appdata.split(",");l.outbounddial.accesskeyid=d[0],l.outbounddial.secretaccesskey=d[1],l.outbounddial.lexregion=d[2],l.outbounddial.botname=d[3],l.outbounddial.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.outbounddial.appdata.split(",");l.outbounddial.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.outbounddial.text=d.slice(1,d.length).join(",");break;case"message":l.outbounddial.text=l.outbounddial.appdata;break;case"set":l.outbounddial.name=l.outbounddial.appdata.split("=")[0],l.outbounddial.value=l.outbounddial.appdata.split("=")[1];break;case"agi":l.outbounddial.project=l.outbounddial.appdata;break;default:var c=l.outbounddial.appdata.split(",");l.outbounddial.trunk=c[0].split("/")[1],l.outbounddial.phone=c[0].split("/")[2],l.outbounddial.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.outbounddial.options=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.outbounddial.url=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10)}function m(e){n.hide(e)}l.outbounddial.type&&"outbound"===l.outbounddial.type.toLowerCase()&&"outbounddial"===l.outbounddial.appType.toLowerCase()&&(l.outbounddial.prefix=l.outbounddial.phone?l.outbounddial.phone.split("$")[0]:void 0,l.outbounddial.callerId=l.outbounddial.callerID?"CALLERID(all)="+l.outbounddial.callerID:void 0),l.saveOutboundRouteApp=function(){l.errors=[];var e=[];l.outbounddial.type&&"outbound"===l.outbounddial.type.toLowerCase()&&"outboundDial"===l.outbounddial.appType&&(l.outbounddial.phone=i.cutdigits?(l.outbounddial.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.outbounddial.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.outbounddial.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.outbounddial.options+="U(xcally-mixmonitor-context)"):l.outbounddial.options=l.outbounddial.options.replace("U(xcally-mixmonitor-context)",""));if(l.outbounddial.appType&&"custom"===l.outbounddial.appType);else switch((l.outbounddial.app||l.outbounddial.appType).toLowerCase()){case"set":l.outbounddial.appdata=l.outbounddial.name+"="+l.outbounddial.value;break;case"custom":break;default:e[0]=["SIP",l.outbounddial.trunk,l.outbounddial.phone].join("/"),e[1]=l.outbounddial.timeout,e[2]=l.outbounddial.options,e[3]=l.outbounddial.url,l.outbounddial.appdata=e.join(",")}m(l.outbounddial)},l.closeDialog=m,o.hasRole("admin")?s.trunk.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.trunks=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.trunk.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.trunks=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1011}).$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.trunks,{id:e.resourceId})}),t=null;if(l.outbounddial&&(t=_.find(l.trunks,{name:l.outbounddial.trunk})),t&&!_.some(n,["id",t.id])){var a=_.find(l.trunks,{id:t.id});a.canSelect=!1,n.push(a)}l.trunks=n})}else{var t=[],a=null;l.outbounddial&&(a=_.find(l.trunks,{name:l.outbounddial.trunk}));for(var i=0;i<l.trunks.length;i++)a&&l.trunks[i].id===a.id&&(l.trunks[i].canSelect=!1,t.push(l.trunks[i]));l.trunks=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),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.outbounddial&&(t=_.find(l.tags,{name:l.outbounddial.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.outbounddial&&(a=_.find(l.tags,{name:l.outbounddial.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","outboundrouteApp","outboundroute","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditoutboundAppoutbounddialDialogController",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.outboundroute=c||e.params.outboundroute||{},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.gotoOutboundRoutes=function(){e.go("app.voice.outboundroutes",{},{reload:"app.voice.outboundroutes"})},u.saveOutboundRoute=function(){r.voiceExtension.update({id:u.outboundroute.id},u.outboundroute).$promise.then(function(){l.success({title:"OutboundRoute updated!",msg:u.outboundroute.name?u.outboundroute.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$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",nolimit:"true"}).$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.outboundroute&&(t=_.find(u.contexts,{name:u.outboundroute.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",nolimit:"true",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","outboundroute","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",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.outboundroutes=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="outboundroutes",f.listOrder="",f.listOrderAsc=null,f.selectedOutboundRoutes=[],f.query={fields:"createdAt,updatedAt,id,appdata,type,exten,context,recordingFormat,cutdigits,description",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},f.arrayrecordingFormat=_.keyBy([{option:"none",value:"'none'"},{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.voice.outboundroutes.edit",{id:e.id,outboundroute:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("outboundroute")+"?").htmlContent("<b>"+(e.name||"outboundroute")+"</b> will be deleted.").ariaLabel("delete outboundroute").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOutboundRoutes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceExtension.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OutboundRoutes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOutboundRoute=function(e,n){i.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundroutes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundroute:n,outboundroutes:f.outboundroutes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOutboundRoute=y,f.exportSelectedOutboundRoutes=function(){var e=angular.copy(f.selectedOutboundRoutes);return f.selectedOutboundRoutes=[],e},f.deleteSelectedOutboundRoutes=function(e){var n=i.confirm().title("Are you sure want to delete the selected outboundroutes?").htmlContent("<b>"+f.selectedOutboundRoutes.length+" selected</b> will be deleted.").ariaLabel("delete OutboundRoutes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOutboundRoutes.forEach(function(e){y(e)}),f.selectedOutboundRoutes=[]})},f.deselectOutboundRoutes=function(){f.selectedOutboundRoutes=[]},f.selectAllOutboundRoutes=function(){f.selectedOutboundRoutes=f.outboundroutes.rows},g.hasRole("admin")?m.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){f.contexts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){f.contexts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.contexts,{id:e.resourceId})}),t=null;if(f.outboundroute&&(t=_.find(f.contexts,{name:f.outboundroute.context})),t&&!_.some(n,["id",t.id])){var a=_.find(f.contexts,{id:t.id});a.canSelect=!1,n.push(a)}f.contexts=n}):m.voiceContext.get({fields:"id,name",sort:"name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){f.contexts=e.rows||[]})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.outboundroutes=e||{count:0,rows:[]}}function y(n){m.voicePrefix.get({VoiceExtensionId:n.id}).$promise.then(function(e){if(e&&e.rows&&0<e.rows.length)return p.error({title:"Outbound route not deleted!",msg:"You can't remove an outbound route associated to an out prefix"});m.voiceExtension.delete({id:n.id}).$promise.then(function(){_.remove(f.outboundroutes.rows,{id:n.id}),f.outboundroutes.count-=1,f.outboundroutes.rows.length||f.getOutboundRoutes(),p.success({title:_.startCase("OutboundRoute")+" deleted!",msg:n.name?n.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:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)p.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:DELETEvoiceExtension",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.getOutboundRoutes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","outboundroutes","userProfile","userProfileSection","api","msUtils","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"],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)),O(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)),O(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=w,b.getAgentGlobalStatus=O,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)),O(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),O(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"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum"])))},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)),O(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 w(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 O(e){var n="unknown";n=_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"pause":_.some([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"*pause":_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(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)),O(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)),O(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=w,b.getAgentGlobalStatus=O,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)),O(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),O(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"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum"])))},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)),O(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 w(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 O(e){var n="unknown";n=_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"pause":_.some([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(e,"fax")],I)?"*pause":_.every([w(e,"voice"),w(e,"chat"),w(e,"mail"),w(e,"openchannel"),w(e,"sms"),w(e,"whatsapp"),w(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.inboundroutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundroutes",weight:1,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:1,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:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:1,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:1,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:1,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:1,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:1,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:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!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:1,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 w(){h.disconnect("logout")}function O(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,O).$promise}function x(e){return w(),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 w(),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;w();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" />\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>\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" 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.query.filter = 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 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="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 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="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="inboundroute-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.alias || a.appType) | uppercase}}">{{a.alias || 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 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}} <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)">\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/composeChat/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\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\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\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",'<md-dialog class="compose-dialog-fax" 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\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          \x3c!-- <input ng-model="vm.message.subject" type="text"> --\x3e\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\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\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n            \x3c!-- <md-icon md-font-icon="icon-close" class="s16"></md-icon> --\x3e\n          </md-button>\n        </div>\n      </div>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-style="{\n    \'max-width\':  {true: \'620px\', false: \'90%\'}[ vm.secret ],\n    \'width\': {true: \'620px\', false: \'100%\'}[ vm.secret ],\n    \'max-height\': {true: undefined, false: \'97%\'}[ vm.secret ]\n  }">\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\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\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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\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\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\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\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\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\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\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\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\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\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\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/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\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\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\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\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeSms/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\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\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\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\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/composeWhatsapp/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\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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\n      \x3c!-- msEmojyArea directive --\x3e\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n      \x3c!-- / msEmojyArea directive --\x3e\n\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\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\n\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\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\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\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" ng-if="vm.currentUser.id != agent.id">{{\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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    \x3c!-- <md-dialog-actions ng-if="!vm.interaction.closed || !vm.interaction.disposition" layout="row" layout-align="space-between center"> --\x3e\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="inboundroute-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.alias || a.appType) | uppercase}}">{{a.alias || 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 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="inboundroute-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.alias || a.appType) | uppercase}}">{{a.alias || 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 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 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="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 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="inboundroute-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.alias || a.appType) | uppercase}}">{{a.alias || 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 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 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="inboundroute-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.alias || a.appType) | uppercase}}">{{a.alias || 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 md-cell ng-if="disposition.userpic"><img class="avatar" alt="{{disposition.name}}" ng-src="api/users/{{disposition.id}}/avatar" /></td>\n                  <td md-cell ng-if="!disposition.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{disposition.name}}" ng-src="assets/images/avatars/profile.png" /></td>\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="inboundroute-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/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 class="inboundroute-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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\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" 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.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundroute.description">\n\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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" 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\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/apps/agi/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.PROJECT">Project</label>\n        <md-select name="project" ng-model="vm.agi.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" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteFormApp[\'project\'].$error" ng-show="inboundrouteFormApp[\'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>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/apps/custom/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.APPLICATION_NAME">Application_Name</label>\n        <input type="text" name="app" ng-model="vm.custom.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'app\'].$error" ng-show="inboundrouteFormApp[\'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.custom.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'appdata\'].$error" ng-show="inboundrouteFormApp[\'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>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/apps/dial/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n        <input type="text" name="tech" ng-model="vm.dial.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'tech\'].$error" ng-show="inboundrouteFormApp[\'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.dial.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'timeout\'].$error" ng-show="inboundrouteFormApp[\'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.OPTIONS">Options</label>\n        <input type="text" name="options" ng-model="vm.dial.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'options\'].$error" ng-show="inboundrouteFormApp[\'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.dial.url" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'url\'].$error" ng-show="inboundrouteFormApp[\'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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/apps/externaldial/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.TRUNK">Trunk</label>\n        <md-select name="trunk" ng-model="vm.externaldial.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks" ng-disabled="trunk.canSelect === false">{{ trunk.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteFormApp[\'trunk\'].$error" ng-show="inboundrouteFormApp[\'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.externaldial.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'phone\'].$error" ng-show="inboundrouteFormApp[\'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.externaldial.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'timeout\'].$error" ng-show="inboundrouteFormApp[\'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.OPTIONS">Options</label>\n        <input type="text" name="options" ng-model="vm.externaldial.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'options\'].$error" ng-show="inboundrouteFormApp[\'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.externaldial.url" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'url\'].$error" ng-show="inboundrouteFormApp[\'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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/apps/goto/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.goto.context" autofocus 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="inboundrouteFormApp[\'context\'].$error" ng-show="inboundrouteFormApp[\'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.goto.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'extension\'].$error" ng-show="inboundrouteFormApp[\'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.goto.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'priority\'].$error" ng-show="inboundrouteFormApp[\'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>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/apps/hangup/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.HANGUP_CAUSE">Hangup_Cause</label>\n        <md-select name="appdata" ng-model="vm.hangup.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n\n          <md-option ng-value="\'1\'"> {{ \'VOICE.HANGUPCAUSE_1\' | translate }} </md-option>\n\n          <md-option ng-value="\'16\'"> {{ \'VOICE.HANGUPCAUSE_16\' | translate }} </md-option>\n\n          <md-option ng-value="\'17\'"> {{ \'VOICE.HANGUPCAUSE_17\' | translate }} </md-option>\n\n          <md-option ng-value="\'18\'"> {{ \'VOICE.HANGUPCAUSE_18\' | translate }} </md-option>\n\n          <md-option ng-value="\'21\'"> {{ \'VOICE.HANGUPCAUSE_21\' | translate }} </md-option>\n\n          <md-option ng-value="\'22\'"> {{ \'VOICE.HANGUPCAUSE_22\' | translate }} </md-option>\n\n          <md-option ng-value="\'27\'"> {{ \'VOICE.HANGUPCAUSE_27\' | translate }} </md-option>\n\n          <md-option ng-value="\'38\'"> {{ \'VOICE.HANGUPCAUSE_38\' | translate }} </md-option>\n\n          <md-option ng-value="\'41\'"> {{ \'VOICE.HANGUPCAUSE_41\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="inboundrouteFormApp[\'appdata\'].$error" ng-show="inboundrouteFormApp[\'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>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/apps/internaldial/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.USER">User</label>\n        <md-select name="user" ng-model="vm.internaldial.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users" ng-disabled="user.canSelect === false">{{ user.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteFormApp[\'user\'].$error" ng-show="inboundrouteFormApp[\'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.internaldial.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'timeout\'].$error" ng-show="inboundrouteFormApp[\'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.OPTIONS">Options</label>\n        <input type="text" name="options" ng-model="vm.internaldial.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'options\'].$error" ng-show="inboundrouteFormApp[\'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.internaldial.url" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'url\'].$error" ng-show="inboundrouteFormApp[\'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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-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/voice/views/inboundroutes/edit/apps/playback/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.AUDIO_FILES">Audio_Files</label>\n        <md-select name="appdata" ng-model="vm.playback.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{appdata.save_name}}\'" ng-repeat="appdata in vm.sounds" ng-disabled="appdata.canSelect === false">{{ appdata.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteFormApp[\'appdata\'].$error" ng-show="inboundrouteFormApp[\'appdata\'].$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.playback.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'options\'].$error" ng-show="inboundrouteFormApp[\'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.playback.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</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      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/apps/queue/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.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="inboundrouteFormApp[\'queue\'].$error" ng-show="inboundrouteFormApp[\'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.queue.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'options\'].$error" ng-show="inboundrouteFormApp[\'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.queue.URL" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'URL\'].$error" ng-show="inboundrouteFormApp[\'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.queue.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" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteFormApp[\'sound\'].$error" ng-show="inboundrouteFormApp[\'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.queue.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'timeout\'].$error" ng-show="inboundrouteFormApp[\'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.AGI">Agi</label>\n        <input type="text" name="agi" ng-model="vm.queue.agi" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'agi\'].$error" ng-show="inboundrouteFormApp[\'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.queue.macro" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'macro\'].$error" ng-show="inboundrouteFormApp[\'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.queue.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'gosub\'].$error" ng-show="inboundrouteFormApp[\'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.queue.rule" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'rule\'].$error" ng-show="inboundrouteFormApp[\'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.queue.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'position\'].$error" ng-show="inboundrouteFormApp[\'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 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.queue.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</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      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/apps/ringgroup/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.USER">User</label>\n        <md-select name="multipleUsers" ng-model="vm.ringgroup.multipleUsers" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'SIP/{{multipleUsers.name}}\'" ng-repeat="multipleUsers in vm.users" ng-disabled="multipleUsers.canSelect === false">{{ multipleUsers.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteFormApp[\'multipleUsers\'].$error" ng-show="inboundrouteFormApp[\'multipleUsers\'].$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.ringgroup.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'timeout\'].$error" ng-show="inboundrouteFormApp[\'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.OPTIONS">Options</label>\n        <input type="text" name="options" ng-model="vm.ringgroup.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'options\'].$error" ng-show="inboundrouteFormApp[\'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.ringgroup.url" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'url\'].$error" ng-show="inboundrouteFormApp[\'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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/apps/set/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.VARIABLE">Variable</label>\n        <md-select name="name" ng-model="vm.set.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="name.name" ng-repeat="name in vm.variables" ng-disabled="name.canSelect === false">{{ name.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteFormApp[\'name\'].$error" ng-show="inboundrouteFormApp[\'name\'].$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.set.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'value\'].$error" ng-show="inboundrouteFormApp[\'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>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/apps/voicemail/dialog.html",'<md-dialog class="inboundroute-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.MAILBOX@CONTEXT">Mailbox@Context</label>\n        <md-select name="voiceMail" ng-model="vm.voicemail.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteFormApp[\'voiceMail\'].$error" ng-show="inboundrouteFormApp[\'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.voicemail.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="inboundrouteFormApp[\'options\'].$error" ng-show="inboundrouteFormApp[\'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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="inboundrouteFormApp.$invalid || inboundrouteFormApp.$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/views/inboundroutes/edit/view.html",'<div id="voice-inboundroute" 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-inboundroutes-button md-icon-button" aria-label="Go to inboundroutes" 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\n      <div layout="row" layout-align="start center">\n\n        <div class="inboundroute-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundroute.id}}\n            <span ng-if="vm.inboundroute.name">{{vm.inboundroute.name}}</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\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="inboundroute-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.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundroute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\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" 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.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundroute.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.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inboundroute-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="InboundRouteActionsController as vm_ac" ng-init="vm_ac.init(vm.inboundroute, 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="VOICE.{{(a.alias || a.appType) | uppercase}}">{{a.alias || 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.selectedInboundRouteApps.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.selectedInboundRouteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedInboundRouteApps.length}} {{vm_ac.selectedInboundRouteApps.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.deleteSelectedInboundRouteApps($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\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedInboundRouteApps">\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_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.inboundrouteApps.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.editInboundRouteApp($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.editInboundRouteApp($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.editInboundRouteApp($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.inboundrouteApps.rows.length">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps 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                \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-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/inboundroutes/inboundroutes.html",'<div id="inboundroutes" 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.INBOUNDROUTES">InboundRoutes</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.selectedInboundRoutes.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.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\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-inboundroutes-count">\n          <span>{{vm.selectedInboundRoutes.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.selectAllInboundRoutes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectInboundRoutes()" 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.exportSelectedInboundRoutes" csv-label="true" filename="inboundroutes.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  \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!-- INBOUNDROUTE TABLE --\x3e\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 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="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="inboundroute" md-select-id="id" ng-repeat="inboundroute in vm.inboundroutes.rows">\n                <td md-cell ng-if="inboundroute.userpic"><img class="avatar" alt="{{inboundroute.name}}" ng-src="api/users/{{inboundroute.id}}/avatar" /></td>\n                <td md-cell ng-if="!inboundroute.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{inboundroute.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(inboundroute, ev) : vm.createOrEditInboundRoute($event, inboundroute)" md-cell class="id ">{{inboundroute.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(inboundroute, ev) : vm.createOrEditInboundRoute($event, inboundroute)" md-cell class="exten ">{{inboundroute.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(inboundroute, ev) : vm.createOrEditInboundRoute($event, inboundroute)" md-cell class="description ">{{inboundroute.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.editstate(inboundroute, $event    )" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n\n                      </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(inboundroute, $event    )" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\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.inboundroutes.count}}" md-on-paginate="vm.getInboundRoutes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INBOUNDROUTE 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 INBOUNDROUTE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inboundroute-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inboundroute" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INBOUNDROUTE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalroutes/create/dialog.html",'<md-dialog class="internalroute-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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\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" 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.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalroute.description">\n\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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" 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\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/apps/agi/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.PROJECT">Project</label>\n        <md-select name="project" ng-model="vm.agi.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" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteFormApp[\'project\'].$error" ng-show="internalrouteFormApp[\'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>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/apps/custom/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.APPLICATION_NAME">Application_Name</label>\n        <input type="text" name="app" ng-model="vm.custom.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'app\'].$error" ng-show="internalrouteFormApp[\'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.custom.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'appdata\'].$error" ng-show="internalrouteFormApp[\'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>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/apps/dial/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n        <input type="text" name="tech" ng-model="vm.dial.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'tech\'].$error" ng-show="internalrouteFormApp[\'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.dial.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'timeout\'].$error" ng-show="internalrouteFormApp[\'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.OPTIONS">Options</label>\n        <input type="text" name="options" ng-model="vm.dial.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'options\'].$error" ng-show="internalrouteFormApp[\'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.dial.url" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'url\'].$error" ng-show="internalrouteFormApp[\'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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/apps/externaldial/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.TRUNK">Trunk</label>\n        <md-select name="trunk" ng-model="vm.externaldial.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks" ng-disabled="trunk.canSelect === false">{{ trunk.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteFormApp[\'trunk\'].$error" ng-show="internalrouteFormApp[\'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.externaldial.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'phone\'].$error" ng-show="internalrouteFormApp[\'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.externaldial.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'timeout\'].$error" ng-show="internalrouteFormApp[\'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.OPTIONS">Options</label>\n        <input type="text" name="options" ng-model="vm.externaldial.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'options\'].$error" ng-show="internalrouteFormApp[\'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.externaldial.url" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'url\'].$error" ng-show="internalrouteFormApp[\'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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/apps/goto/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.goto.context" autofocus 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="internalrouteFormApp[\'context\'].$error" ng-show="internalrouteFormApp[\'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.goto.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'extension\'].$error" ng-show="internalrouteFormApp[\'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.goto.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'priority\'].$error" ng-show="internalrouteFormApp[\'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>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/apps/hangup/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.HANGUP_CAUSE">Hangup_Cause</label>\n        <md-select name="appdata" ng-model="vm.hangup.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n\n          <md-option ng-value="\'1\'"> {{ \'VOICE.HANGUPCAUSE_1\' | translate }} </md-option>\n\n          <md-option ng-value="\'16\'"> {{ \'VOICE.HANGUPCAUSE_16\' | translate }} </md-option>\n\n          <md-option ng-value="\'17\'"> {{ \'VOICE.HANGUPCAUSE_17\' | translate }} </md-option>\n\n          <md-option ng-value="\'18\'"> {{ \'VOICE.HANGUPCAUSE_18\' | translate }} </md-option>\n\n          <md-option ng-value="\'21\'"> {{ \'VOICE.HANGUPCAUSE_21\' | translate }} </md-option>\n\n          <md-option ng-value="\'22\'"> {{ \'VOICE.HANGUPCAUSE_22\' | translate }} </md-option>\n\n          <md-option ng-value="\'27\'"> {{ \'VOICE.HANGUPCAUSE_27\' | translate }} </md-option>\n\n          <md-option ng-value="\'38\'"> {{ \'VOICE.HANGUPCAUSE_38\' | translate }} </md-option>\n\n          <md-option ng-value="\'41\'"> {{ \'VOICE.HANGUPCAUSE_41\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="internalrouteFormApp[\'appdata\'].$error" ng-show="internalrouteFormApp[\'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>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/apps/internaldial/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.USER">User</label>\n        <md-select name="user" ng-model="vm.internaldial.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users" ng-disabled="user.canSelect === false">{{ user.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteFormApp[\'user\'].$error" ng-show="internalrouteFormApp[\'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.internaldial.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'timeout\'].$error" ng-show="internalrouteFormApp[\'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.OPTIONS">Options</label>\n        <input type="text" name="options" ng-model="vm.internaldial.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'options\'].$error" ng-show="internalrouteFormApp[\'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.internaldial.url" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'url\'].$error" ng-show="internalrouteFormApp[\'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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-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/voice/views/internalroutes/edit/apps/playback/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.AUDIO_FILES">Audio_Files</label>\n        <md-select name="appdata" ng-model="vm.playback.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{appdata.save_name}}\'" ng-repeat="appdata in vm.sounds" ng-disabled="appdata.canSelect === false">{{ appdata.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteFormApp[\'appdata\'].$error" ng-show="internalrouteFormApp[\'appdata\'].$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.playback.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'options\'].$error" ng-show="internalrouteFormApp[\'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.playback.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</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      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/apps/queue/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.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="internalrouteFormApp[\'queue\'].$error" ng-show="internalrouteFormApp[\'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.queue.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'options\'].$error" ng-show="internalrouteFormApp[\'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.queue.URL" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'URL\'].$error" ng-show="internalrouteFormApp[\'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.queue.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" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteFormApp[\'sound\'].$error" ng-show="internalrouteFormApp[\'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.queue.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'timeout\'].$error" ng-show="internalrouteFormApp[\'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.AGI">Agi</label>\n        <input type="text" name="agi" ng-model="vm.queue.agi" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'agi\'].$error" ng-show="internalrouteFormApp[\'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.queue.macro" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'macro\'].$error" ng-show="internalrouteFormApp[\'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.queue.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'gosub\'].$error" ng-show="internalrouteFormApp[\'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.queue.rule" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'rule\'].$error" ng-show="internalrouteFormApp[\'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.queue.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'position\'].$error" ng-show="internalrouteFormApp[\'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 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.queue.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</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      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/apps/ringgroup/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.USER">User</label>\n        <md-select name="multipleUsers" ng-model="vm.ringgroup.multipleUsers" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'SIP/{{multipleUsers.name}}\'" ng-repeat="multipleUsers in vm.users" ng-disabled="multipleUsers.canSelect === false">{{ multipleUsers.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteFormApp[\'multipleUsers\'].$error" ng-show="internalrouteFormApp[\'multipleUsers\'].$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.ringgroup.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'timeout\'].$error" ng-show="internalrouteFormApp[\'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.OPTIONS">Options</label>\n        <input type="text" name="options" ng-model="vm.ringgroup.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'options\'].$error" ng-show="internalrouteFormApp[\'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.ringgroup.url" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'url\'].$error" ng-show="internalrouteFormApp[\'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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/apps/set/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.VARIABLE">Variable</label>\n        <md-select name="name" ng-model="vm.set.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="name.name" ng-repeat="name in vm.variables" ng-disabled="name.canSelect === false">{{ name.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteFormApp[\'name\'].$error" ng-show="internalrouteFormApp[\'name\'].$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.set.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'value\'].$error" ng-show="internalrouteFormApp[\'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>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/apps/voicemail/dialog.html",'<md-dialog class="internalroute-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.MAILBOX@CONTEXT">Mailbox@Context</label>\n        <md-select name="voiceMail" ng-model="vm.voicemail.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteFormApp[\'voiceMail\'].$error" ng-show="internalrouteFormApp[\'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.voicemail.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="internalrouteFormApp[\'options\'].$error" ng-show="internalrouteFormApp[\'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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveInternalRouteApp()" class="send-button md-accent md-raised" ng-disabled="internalrouteFormApp.$invalid || internalrouteFormApp.$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/views/internalroutes/edit/view.html",'<div id="voice-internalroute" 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-internalroutes-button md-icon-button" aria-label="Go to internalroutes" 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\n      <div layout="row" layout-align="start center">\n\n        <div class="internalroute-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalroute.id}}\n            <span ng-if="vm.internalroute.name">{{vm.internalroute.name}}</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\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="internalroute-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.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalroute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\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" 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.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalroute.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.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internalroute-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="InternalRouteActionsController as vm_ac" ng-init="vm_ac.init(vm.internalroute, 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="VOICE.{{(a.alias || a.appType) | uppercase}}">{{a.alias || 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.selectedInternalRouteApps.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.selectedInternalRouteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedInternalRouteApps.length}} {{vm_ac.selectedInternalRouteApps.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.deleteSelectedInternalRouteApps($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\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedInternalRouteApps">\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_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.internalrouteApps.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.editInternalRouteApp($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.editInternalRouteApp($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.editInternalRouteApp($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.internalrouteApps.rows.length">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps 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                \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-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/internalroutes/internalroutes.html",'<div id="internalroutes" 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.INTERNALROUTES">InternalRoutes</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.selectedInternalRoutes.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.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\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-internalroutes-count">\n          <span>{{vm.selectedInternalRoutes.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.selectAllInternalRoutes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectInternalRoutes()" 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.exportSelectedInternalRoutes" csv-label="true" filename="internalroutes.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  \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!-- INTERNALROUTE TABLE --\x3e\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 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="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="internalroute" md-select-id="id" ng-repeat="internalroute in vm.internalroutes.rows">\n                <td md-cell ng-if="internalroute.userpic"><img class="avatar" alt="{{internalroute.name}}" ng-src="api/users/{{internalroute.id}}/avatar" /></td>\n                <td md-cell ng-if="!internalroute.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{internalroute.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(internalroute, ev) : vm.createOrEditInternalRoute($event, internalroute)" md-cell class="id ">{{internalroute.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(internalroute, ev) : vm.createOrEditInternalRoute($event, internalroute)" md-cell class="exten ">{{internalroute.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(internalroute, ev) : vm.createOrEditInternalRoute($event, internalroute)" md-cell class="description ">{{internalroute.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.editstate(internalroute, $event    )" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n\n                      </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(internalroute, $event    )" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\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.internalroutes.count}}" md-on-paginate="vm.getInternalRoutes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERNALROUTE 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 INTERNALROUTE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internalroute-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internalroute" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERNALROUTE BUTTON --\x3e\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 class="outboundroute-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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\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" 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\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 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.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundroute.description">\n\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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" 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\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/apps/custom/dialog.html",'<md-dialog class="outboundroute-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.APPLICATION_NAME">Application_Name</label>\n        <input type="text" name="app" ng-model="vm.custom.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="outboundrouteFormApp[\'app\'].$error" ng-show="outboundrouteFormApp[\'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.custom.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="outboundrouteFormApp[\'appdata\'].$error" ng-show="outboundrouteFormApp[\'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>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOutboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="outboundrouteFormApp.$invalid || outboundrouteFormApp.$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/views/outboundroutes/edit/apps/interval/dialog.html",'<md-dialog class="inboundroute-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/voice/views/outboundroutes/edit/apps/outbounddial/dialog.html",'<md-dialog class="outboundroute-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.TRUNK">Trunk</label>\n        <md-select name="trunk" ng-model="vm.outbounddial.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks" ng-disabled="trunk.canSelect === false">{{ trunk.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteFormApp[\'trunk\'].$error" ng-show="outboundrouteFormApp[\'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.outbounddial.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n        <div ng-messages="outboundrouteFormApp[\'callerID\'].$error" ng-show="outboundrouteFormApp[\'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.outbounddial.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="outboundrouteFormApp[\'prefix\'].$error" ng-show="outboundrouteFormApp[\'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.outbounddial.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" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteFormApp[\'tag\'].$error" ng-show="outboundrouteFormApp[\'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.outbounddial.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="outboundrouteFormApp[\'timeout\'].$error" ng-show="outboundrouteFormApp[\'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.OPTIONS">Options</label>\n        <input type="text" name="options" ng-model="vm.outbounddial.options" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="outboundrouteFormApp[\'options\'].$error" ng-show="outboundrouteFormApp[\'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.outbounddial.url" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="outboundrouteFormApp[\'url\'].$error" ng-show="outboundrouteFormApp[\'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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOutboundRouteApp()" class="send-button md-accent md-raised" ng-disabled="outboundrouteFormApp.$invalid || outboundrouteFormApp.$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/views/outboundroutes/edit/view.html",'<div id="voice-outboundroute" 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-outboundroutes-button md-icon-button" aria-label="Go to outboundroutes" 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\n      <div layout="row" layout-align="start center">\n\n        <div class="outboundroute-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundroute.id}}\n            <span ng-if="vm.outboundroute.name">{{vm.outboundroute.name}}</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\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="outboundroute-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.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundroute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\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" 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 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.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundroute.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.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outboundroute-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OutboundRouteActionsController as vm_ac" ng-init="vm_ac.init(vm.outboundroute, 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="VOICE.{{(a.alias || a.appType) | uppercase}}">{{a.alias || 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.selectedOutboundRouteApps.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.selectedOutboundRouteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOutboundRouteApps.length}} {{vm_ac.selectedOutboundRouteApps.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.deleteSelectedOutboundRouteApps($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\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOutboundRouteApps">\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_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.outboundrouteApps.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.editOutboundRouteApp($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.editOutboundRouteApp($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.editOutboundRouteApp($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.outboundrouteApps.rows.length">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps 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                \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-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/outboundroutes/outboundroutes.html",'<div id="outboundroutes" 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.OUTBOUNDROUTES">OutboundRoutes</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.selectedOutboundRoutes.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.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\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-outboundroutes-count">\n          <span>{{vm.selectedOutboundRoutes.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.selectAllOutboundRoutes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOutboundRoutes()" 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.exportSelectedOutboundRoutes" csv-label="true" filename="outboundroutes.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  \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!-- OUTBOUNDROUTE TABLE --\x3e\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 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="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="outboundroute" md-select-id="id" ng-repeat="outboundroute in vm.outboundroutes.rows">\n                <td md-cell ng-if="outboundroute.userpic"><img class="avatar" alt="{{outboundroute.name}}" ng-src="api/users/{{outboundroute.id}}/avatar" /></td>\n                <td md-cell ng-if="!outboundroute.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{outboundroute.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(outboundroute, ev) : vm.createOrEditOutboundRoute($event, outboundroute)" md-cell class="id ">{{outboundroute.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(outboundroute, ev) : vm.createOrEditOutboundRoute($event, outboundroute)" md-cell class="exten ">{{outboundroute.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(outboundroute, ev) : vm.createOrEditOutboundRoute($event, outboundroute)" md-cell class="description ">{{outboundroute.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.editstate(outboundroute, $event    )" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n\n                      </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(outboundroute, $event    )" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\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.outboundroutes.count}}" md-on-paginate="vm.getOutboundRoutes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OUTBOUNDROUTE 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 OUTBOUNDROUTE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outboundroute-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outboundroute" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OUTBOUNDROUTE BUTTON --\x3e\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 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.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="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="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}} <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>\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.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="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 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            {{ \'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 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="inboundroute-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.alias || a.appType) | uppercase}}">{{a.alias || 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
+!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 o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(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("realtimeManager",function(){var a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){return!_.every([e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause],function(e){return e})}return{isPartialPause:s,updateQueue:function(e,n,t,a){!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?s(e)||!e[a+"Pause"]||t.paused?!e[a+"Pause"]&&t.paused&&(t.paused=!1,n.paused-=1,n.available+=1):(t.paused=!0,n.paused+=1,0<n.available&&(n.available-=1)):(t.online=!0,n.loggedInDb+=1,n.available+=1)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0)}}})}(),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().$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,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(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").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().$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,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(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,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(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,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.paused?e.paused-=1:0<e.available&&(e.available-=1))})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.paused?e.paused+=1:e.available+=1)})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(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,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(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,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(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,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.paused?e.paused-=1:0<e.available&&(e.available-=1))})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.paused?e.paused+=1:e.available+=1)})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(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,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(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" 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 71%
rename from public/styles/app.287b5956.css
rename to public/styles/app.0b303223.css
index 66d9e12..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}#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{height:100%;width:100%;max-width:70%;max-height:80%}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-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 .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{min-height:250px}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.compose-dialog-fax{max-width:720px;width:720px;max-height:450px;height:450px}md-dialog.compose-dialog-fax md-dialog-content{display:block;position:relative}md-dialog.compose-dialog-fax md-toolbar .title{font-size:17px}md-dialog.compose-dialog-fax md-chips md-chip{font-size:12px}md-dialog.compose-dialog-fax md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog-fax .to{position:relative}md-dialog.compose-dialog-fax .attachment-list{font-size:13px}md-dialog.compose-dialog-fax .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-fax .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog-fax .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog-fax .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog-fax .error-list{font-size:13px}md-dialog.compose-dialog-fax .error-list .error{background-color: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-fax .error-list .error .message{font-weight:500}md-dialog.compose-dialog-fax .error-list .error .md-button{margin:0}md-dialog.compose-dialog-fax .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog-fax 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.compose-dialog .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}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-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 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.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}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-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 .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{min-height:250px}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.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}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-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 .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{min-height:250px}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.compose-dialog{height:100%;width:100%;max-width:70%;max-height:80%}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-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 .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{min-height:250px}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}#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.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inboundroute-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inboundroute-dialog{max-width:720px;width:720px}md-dialog.inboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.inboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.inboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.inboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.inboundroute-dialog .error-list{font-size:13px}md-dialog.inboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.inboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.inboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@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-inboundroute .header{height:76px;min-height:76px;max-height:76px}#voice-inboundroute .header .goto-inboundroutes-button{margin-right:16px}#voice-inboundroute .header .inboundroute-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inboundroute .header .inboundroute-image img{height:100%;width:auto;max-width:none}#voice-inboundroute .header .subtitle{margin:6px 0 0 0}#voice-inboundroute .inboundroute-detail-form-container{padding:24px;margin-bottom:24px}#voice-inboundroute .inboundroute-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-inboundroute .inboundroute-detail-form-container .handle{cursor:move}#voice-inboundroute .inboundroute-detail-form-container md-input-container md-switch{margin:0!important}#voice-inboundroute .inboundroute-detail-form-container #inboundroute-image-uploader{position:relative}#voice-inboundroute .inboundroute-detail-form-container #inboundroute-image-uploader.dropping .drop-text{display:flex}#voice-inboundroute .inboundroute-detail-form-container #inboundroute-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-inboundroute .inboundroute-detail-form-container #inboundroute-image-uploader .upload-button{margin-bottom:16px}#voice-inboundroute .inboundroute-detail-form-container #inboundroute-image-uploader .inboundroute-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-inboundroute .inboundroute-detail-form-container #inboundroute-image-uploader .inboundroute-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-inboundroute .inboundroute-detail-form-container #inboundroute-image-uploader .inboundroute-image .media{max-height:100%}#voice-inboundroute md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inboundroute md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inboundroute md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inboundroute md-table-container.font-size-12 td.md-cell{font-size:12px!important}#inboundroutes{position:relative}#inboundroutes>.header{height:76px;min-height:76px;max-height:76px}#inboundroutes>.header .logo .logo-icon{margin:0 16px 0 0}#inboundroutes>.header .logo .logo-text{font-size:24px}#inboundroutes>.header md-icon{color:#fff}#inboundroutes>.header .search-input-wrapper{position:relative}#inboundroutes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inboundroutes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inboundroutes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inboundroutes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inboundroutes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inboundroutes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inboundroutes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inboundroutes>.header.selected-bar .close-button-wrapper{width:244px}#inboundroutes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inboundroutes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inboundroutes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inboundroutes #add-inboundroute-button{position:fixed;bottom:8px;right:8px;padding:0}#inboundroutes #upload-inboundroute-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internalroute-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.internalroute-dialog{max-width:720px;width:720px}md-dialog.internalroute-dialog md-dialog-content{display:block;position:relative}md-dialog.internalroute-dialog md-toolbar .title{font-size:17px}md-dialog.internalroute-dialog md-input-container textarea{min-height:150px}md-dialog.internalroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.internalroute-dialog .error-list{font-size:13px}md-dialog.internalroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internalroute-dialog .error-list .error .message{font-weight:500}md-dialog.internalroute-dialog .error-list .error .md-button{margin:0}md-dialog.internalroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internalroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@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-internalroute .header{height:76px;min-height:76px;max-height:76px}#voice-internalroute .header .goto-internalroutes-button{margin-right:16px}#voice-internalroute .header .internalroute-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internalroute .header .internalroute-image img{height:100%;width:auto;max-width:none}#voice-internalroute .header .subtitle{margin:6px 0 0 0}#voice-internalroute .internalroute-detail-form-container{padding:24px;margin-bottom:24px}#voice-internalroute .internalroute-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-internalroute .internalroute-detail-form-container .handle{cursor:move}#voice-internalroute .internalroute-detail-form-container md-input-container md-switch{margin:0!important}#voice-internalroute .internalroute-detail-form-container #internalroute-image-uploader{position:relative}#voice-internalroute .internalroute-detail-form-container #internalroute-image-uploader.dropping .drop-text{display:flex}#voice-internalroute .internalroute-detail-form-container #internalroute-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-internalroute .internalroute-detail-form-container #internalroute-image-uploader .upload-button{margin-bottom:16px}#voice-internalroute .internalroute-detail-form-container #internalroute-image-uploader .internalroute-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-internalroute .internalroute-detail-form-container #internalroute-image-uploader .internalroute-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-internalroute .internalroute-detail-form-container #internalroute-image-uploader .internalroute-image .media{max-height:100%}#voice-internalroute md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internalroute md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internalroute md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internalroute md-table-container.font-size-12 td.md-cell{font-size:12px!important}#internalroutes{position:relative}#internalroutes>.header{height:76px;min-height:76px;max-height:76px}#internalroutes>.header .logo .logo-icon{margin:0 16px 0 0}#internalroutes>.header .logo .logo-text{font-size:24px}#internalroutes>.header md-icon{color:#fff}#internalroutes>.header .search-input-wrapper{position:relative}#internalroutes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internalroutes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internalroutes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internalroutes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internalroutes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internalroutes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internalroutes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internalroutes>.header.selected-bar .close-button-wrapper{width:244px}#internalroutes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internalroutes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internalroutes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internalroutes #add-internalroute-button{position:fixed;bottom:8px;right:8px;padding:0}#internalroutes #upload-internalroute-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.outboundroute-dialog{max-width:720px;width:720px}md-dialog.outboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.outboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.outboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.outboundroute-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outboundroute-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.outboundroute-dialog .error-list{font-size:13px}md-dialog.outboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.outboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.outboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.outboundroute-dialog{max-width:720px;width:720px}md-dialog.outboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.outboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.outboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.outboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.outboundroute-dialog .error-list{font-size:13px}md-dialog.outboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.outboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.outboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.outboundroute-dialog{max-width:720px;width:720px}md-dialog.outboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.outboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.outboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.outboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.outboundroute-dialog .error-list{font-size:13px}md-dialog.outboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.outboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.outboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.outboundroute-dialog{max-width:720px;width:720px}md-dialog.outboundroute-dialog md-dialog-content{display:block;position:relative}md-dialog.outboundroute-dialog md-toolbar .title{font-size:17px}md-dialog.outboundroute-dialog md-input-container textarea{min-height:150px}md-dialog.outboundroute-dialog .date-container{padding:16px 0 24px 0}md-dialog.outboundroute-dialog .error-list{font-size:13px}md-dialog.outboundroute-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outboundroute-dialog .error-list .error .message{font-weight:500}md-dialog.outboundroute-dialog .error-list .error .md-button{margin:0}md-dialog.outboundroute-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outboundroute-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@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-outboundroute .header{height:76px;min-height:76px;max-height:76px}#voice-outboundroute .header .goto-outboundroutes-button{margin-right:16px}#voice-outboundroute .header .outboundroute-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outboundroute .header .outboundroute-image img{height:100%;width:auto;max-width:none}#voice-outboundroute .header .subtitle{margin:6px 0 0 0}#voice-outboundroute .outboundroute-detail-form-container{padding:24px;margin-bottom:24px}#voice-outboundroute .outboundroute-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-outboundroute .outboundroute-detail-form-container .handle{cursor:move}#voice-outboundroute .outboundroute-detail-form-container md-input-container md-switch{margin:0!important}#voice-outboundroute .outboundroute-detail-form-container #outboundroute-image-uploader{position:relative}#voice-outboundroute .outboundroute-detail-form-container #outboundroute-image-uploader.dropping .drop-text{display:flex}#voice-outboundroute .outboundroute-detail-form-container #outboundroute-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-outboundroute .outboundroute-detail-form-container #outboundroute-image-uploader .upload-button{margin-bottom:16px}#voice-outboundroute .outboundroute-detail-form-container #outboundroute-image-uploader .outboundroute-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-outboundroute .outboundroute-detail-form-container #outboundroute-image-uploader .outboundroute-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-outboundroute .outboundroute-detail-form-container #outboundroute-image-uploader .outboundroute-image .media{max-height:100%}#voice-outboundroute md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outboundroute md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outboundroute md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outboundroute md-table-container.font-size-12 td.md-cell{font-size:12px!important}#outboundroutes{position:relative}#outboundroutes>.header{height:76px;min-height:76px;max-height:76px}#outboundroutes>.header .logo .logo-icon{margin:0 16px 0 0}#outboundroutes>.header .logo .logo-text{font-size:24px}#outboundroutes>.header md-icon{color:#fff}#outboundroutes>.header .search-input-wrapper{position:relative}#outboundroutes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outboundroutes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outboundroutes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outboundroutes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outboundroutes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outboundroutes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outboundroutes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outboundroutes>.header.selected-bar .close-button-wrapper{width:244px}#outboundroutes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outboundroutes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outboundroutes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outboundroutes #add-outboundroute-button{position:fixed;bottom:8px;right:8px;padding:0}#outboundroutes #upload-outboundroute-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
+[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 9e96bb3..2005d69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9002=['integration','motionbar','jscripty','bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20urlForward[URL]','motionbar[NULL,NULL,WinAppArguments]','TEXT','sequelize','VIRTUAL','getDataValue','STRING','contactManager'];(function(_0x28e3d5,_0xe3971c){var _0x3b0327=function(_0x57bfc5){while(--_0x57bfc5){_0x28e3d5['push'](_0x28e3d5['shift']());}};_0x3b0327(++_0xe3971c);}(_0x9002,0x10c));var _0x2900=function(_0x249cbd,_0x2819f8){_0x249cbd=_0x249cbd-0x0;var _0x161d33=_0x9002[_0x249cbd];return _0x161d33;};'use strict';var Sequelize=require(_0x2900('0x0'));module['exports']={'name':{'type':Sequelize[_0x2900('0x1')],'get':function(_0xe048b1){return this[_0x2900('0x2')]('action');}},'action':{'type':Sequelize[_0x2900('0x3')],'allowNull':![],'validate':{'isIn':{'args':[[_0x2900('0x4'),_0x2900('0x5'),_0x2900('0x6'),_0x2900('0x7'),'urlForward','browser',_0x2900('0x8'),'script']],'msg':_0x2900('0x9')}},'comment':_0x2900('0x9')},'data1':{'type':Sequelize[_0x2900('0x3')](0x1000),'comment':'contactManager[ListId],\x20integration[intName(zendesk)],\x20motionbar[Popup(0),URL(1),WinApp(2)],\x20urlForward[GET,POST],\x20browser[TemplateId(0),URL(1)]'},'data2':{'type':Sequelize[_0x2900('0x3')](0x1000),'comment':_0x2900('0xa')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x2900('0xb')},'data4':{'type':Sequelize[_0x2900('0x3')](0x1000)},'data5':{'type':Sequelize[_0x2900('0x3')](0x1000)},'data6':{'type':Sequelize[_0x2900('0x3')]},'data7':{'type':Sequelize[_0x2900('0xc')]}};
\ No newline at end of file
+var _0xf69d=['TEXT','sequelize','exports','VIRTUAL','getDataValue','STRING','contactManager','integration','motionbar','jscripty','urlForward','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[timeout],\x20browser[windowWidth]','urlForward[headers],\x20browser[wsindowHeight]'];(function(_0x16024e,_0x161e55){var _0x52efa4=function(_0x49e8bf){while(--_0x49e8bf){_0x16024e['push'](_0x16024e['shift']());}};_0x52efa4(++_0x161e55);}(_0xf69d,0xd3));var _0xdf69=function(_0x92fec1,_0xdb433e){_0x92fec1=_0x92fec1-0x0;var _0x193171=_0xf69d[_0x92fec1];return _0x193171;};'use strict';var Sequelize=require(_0xdf69('0x0'));module[_0xdf69('0x1')]={'name':{'type':Sequelize[_0xdf69('0x2')],'get':function(_0xe063fc){return this[_0xdf69('0x3')]('action');}},'action':{'type':Sequelize[_0xdf69('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0xdf69('0x5'),_0xdf69('0x6'),_0xdf69('0x7'),_0xdf69('0x8'),_0xdf69('0x9'),_0xdf69('0xa'),_0xdf69('0xb'),_0xdf69('0xc')]],'msg':_0xdf69('0xd')}},'comment':_0xdf69('0xd')},'data1':{'type':Sequelize[_0xdf69('0x4')](0x1000),'comment':_0xdf69('0xe')},'data2':{'type':Sequelize[_0xdf69('0x4')](0x1000),'comment':_0xdf69('0xf')},'data3':{'type':Sequelize[_0xdf69('0x4')](0x1000),'comment':_0xdf69('0x10')},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0xdf69('0x11')},'data5':{'type':Sequelize[_0xdf69('0x4')](0x1000),'comments':_0xdf69('0x12')},'data6':{'type':Sequelize[_0xdf69('0x4')],'comments':_0xdf69('0x13')},'data7':{'type':Sequelize[_0xdf69('0x14')],'comments':'urlForward[body]'}};
\ No newline at end of file
index c88dae9..485025e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6a8=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','count','set','Content-Range','json','apply','reject','save','update','then','sendStatus','error','stack','name','send','body','find','catch','destroy','Action','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xc6a8,0x1b6));var _0x8c6a=function(_0xc37b4e,_0x255db1){_0xc37b4e=_0xc37b4e-0x0;var _0x1e1595=_0xc6a8[_0xc37b4e];return _0x1e1595;};'use strict';var emlformat=require(_0x8c6a('0x0'));var rimraf=require(_0x8c6a('0x1'));var zipdir=require(_0x8c6a('0x2'));var jsonpatch=require(_0x8c6a('0x3'));var rp=require(_0x8c6a('0x4'));var moment=require(_0x8c6a('0x5'));var BPromise=require(_0x8c6a('0x6'));var Mustache=require('mustache');var util=require(_0x8c6a('0x7'));var path=require(_0x8c6a('0x8'));var sox=require(_0x8c6a('0x9'));var csv=require('to-csv');var ejs=require(_0x8c6a('0xa'));var fs=require('fs');var fs_extra=require(_0x8c6a('0xb'));var _=require('lodash');var squel=require(_0x8c6a('0xc'));var crypto=require(_0x8c6a('0xd'));var jsforce=require(_0x8c6a('0xe'));var deskjs=require(_0x8c6a('0xf'));var toCsv=require(_0x8c6a('0x10'));var querystring=require(_0x8c6a('0x11'));var Papa=require('papaparse');var Redis=require(_0x8c6a('0x12'));var authService=require(_0x8c6a('0x13'));var qs=require(_0x8c6a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8c6a('0x15'));var logger=require(_0x8c6a('0x16'))(_0x8c6a('0x17'));var utils=require(_0x8c6a('0x18'));var config=require(_0x8c6a('0x19'));var licenseUtil=require(_0x8c6a('0x1a'));var db=require(_0x8c6a('0x1b'))['db'];function respondWithStatusCode(_0x2b7e0f,_0x2decbe){_0x2decbe=_0x2decbe||0xcc;return function(_0x541528){if(_0x541528){return _0x2b7e0f['sendStatus'](_0x2decbe);}return _0x2b7e0f[_0x8c6a('0x1c')](_0x2decbe)[_0x8c6a('0x1d')]();};}function respondWithResult(_0x177c72,_0x1387c7){_0x1387c7=_0x1387c7||0xc8;return function(_0x3fcfad){if(_0x3fcfad){return _0x177c72[_0x8c6a('0x1c')](_0x1387c7)['json'](_0x3fcfad);}};}function respondWithFilteredResult(_0x48ef1c,_0x1e9533){return function(_0x102820){if(_0x102820){var _0x499c65=typeof _0x1e9533[_0x8c6a('0x1e')]==='undefined'&&typeof _0x1e9533['limit']==='undefined';var _0x51bb31=_0x102820[_0x8c6a('0x1f')];var _0xe0df1e=_0x499c65?0x0:_0x1e9533['offset'];var _0x5d2369=_0x499c65?_0x102820[_0x8c6a('0x1f')]:_0x1e9533[_0x8c6a('0x1e')]+_0x1e9533['limit'];var _0x3562ce;if(_0x5d2369>=_0x51bb31){_0x5d2369=_0x51bb31;_0x3562ce=0xc8;}else{_0x3562ce=0xce;}_0x48ef1c[_0x8c6a('0x1c')](_0x3562ce);return _0x48ef1c[_0x8c6a('0x20')](_0x8c6a('0x21'),_0xe0df1e+'-'+_0x5d2369+'/'+_0x51bb31)[_0x8c6a('0x22')](_0x102820);}return null;};}function patchUpdates(_0xaa553){return function(_0x52a15a){try{jsonpatch[_0x8c6a('0x23')](_0x52a15a,_0xaa553,!![]);}catch(_0x272950){return BPromise[_0x8c6a('0x24')](_0x272950);}return _0x52a15a[_0x8c6a('0x25')]();};}function saveUpdates(_0x58b128,_0x230258){return function(_0x423728){if(_0x423728){return _0x423728[_0x8c6a('0x26')](_0x58b128)[_0x8c6a('0x27')](function(_0x56820c){return _0x56820c;});}return null;};}function removeEntity(_0x23ba2d,_0x40a47c){return function(_0x106dc0){if(_0x106dc0){return _0x106dc0['destroy']()[_0x8c6a('0x27')](function(){_0x23ba2d[_0x8c6a('0x1c')](0xcc)[_0x8c6a('0x1d')]();});}};}function handleEntityNotFound(_0xac7e0c,_0x10590b){return function(_0x104e7b){if(!_0x104e7b){_0xac7e0c[_0x8c6a('0x28')](0x194);}return _0x104e7b;};}function handleError(_0xa9f348,_0xe3d7e2){_0xe3d7e2=_0xe3d7e2||0x1f4;return function(_0x2e13b1){logger[_0x8c6a('0x29')](_0x2e13b1[_0x8c6a('0x2a')]);if(_0x2e13b1[_0x8c6a('0x2b')]){delete _0x2e13b1['name'];}_0xa9f348[_0x8c6a('0x1c')](_0xe3d7e2)[_0x8c6a('0x2c')](_0x2e13b1);};}exports[_0x8c6a('0x26')]=function(_0x2bf89d,_0x2c2da4){if(_0x2bf89d[_0x8c6a('0x2d')]['id']){delete _0x2bf89d[_0x8c6a('0x2d')]['id'];}return db['Action'][_0x8c6a('0x2e')]({'where':{'id':_0x2bf89d['params']['id']}})[_0x8c6a('0x27')](handleEntityNotFound(_0x2c2da4,null))['then'](saveUpdates(_0x2bf89d[_0x8c6a('0x2d')],null))[_0x8c6a('0x27')](respondWithResult(_0x2c2da4,null))[_0x8c6a('0x2f')](handleError(_0x2c2da4,null));};exports[_0x8c6a('0x30')]=function(_0x3e9110,_0x2a53da){return db[_0x8c6a('0x31')]['find']({'where':{'id':_0x3e9110[_0x8c6a('0x32')]['id']}})['then'](handleEntityNotFound(_0x2a53da,null))[_0x8c6a('0x27')](removeEntity(_0x2a53da,null))['catch'](handleError(_0x2a53da,null));};
\ No newline at end of file
+var _0xa1b9=['../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','end','error','name','send','update','body','Action','find','params','destroy','catch','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger'];(function(_0x41d028,_0x44c871){var _0x3d381d=function(_0x149326){while(--_0x149326){_0x41d028['push'](_0x41d028['shift']());}};_0x3d381d(++_0x44c871);}(_0xa1b9,0x9e));var _0x9a1b=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa1b9[_0x3c2a69];return _0x596bc8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9a1b('0x0'));var zipdir=require(_0x9a1b('0x1'));var jsonpatch=require(_0x9a1b('0x2'));var rp=require(_0x9a1b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9a1b('0x4'));var util=require('util');var path=require(_0x9a1b('0x5'));var sox=require('sox');var csv=require(_0x9a1b('0x6'));var ejs=require(_0x9a1b('0x7'));var fs=require('fs');var fs_extra=require(_0x9a1b('0x8'));var _=require(_0x9a1b('0x9'));var squel=require('squel');var crypto=require(_0x9a1b('0xa'));var jsforce=require(_0x9a1b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x9a1b('0x6'));var querystring=require(_0x9a1b('0xc'));var Papa=require(_0x9a1b('0xd'));var Redis=require(_0x9a1b('0xe'));var authService=require(_0x9a1b('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9a1b('0x10'));var logger=require(_0x9a1b('0x11'))('api');var utils=require(_0x9a1b('0x12'));var config=require(_0x9a1b('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x9a1b('0x14'))['db'];function respondWithStatusCode(_0x2cb822,_0x1ccc30){_0x1ccc30=_0x1ccc30||0xcc;return function(_0x289c6c){if(_0x289c6c){return _0x2cb822[_0x9a1b('0x15')](_0x1ccc30);}return _0x2cb822[_0x9a1b('0x16')](_0x1ccc30)['end']();};}function respondWithResult(_0x5f213c,_0x2a6170){_0x2a6170=_0x2a6170||0xc8;return function(_0x59c3f2){if(_0x59c3f2){return _0x5f213c[_0x9a1b('0x16')](_0x2a6170)[_0x9a1b('0x17')](_0x59c3f2);}};}function respondWithFilteredResult(_0x56cdc9,_0x1161b9){return function(_0x582d11){if(_0x582d11){var _0x51235f=typeof _0x1161b9[_0x9a1b('0x18')]===_0x9a1b('0x19')&&typeof _0x1161b9[_0x9a1b('0x1a')]===_0x9a1b('0x19');var _0x260132=_0x582d11[_0x9a1b('0x1b')];var _0x597ed6=_0x51235f?0x0:_0x1161b9[_0x9a1b('0x18')];var _0x5c812b=_0x51235f?_0x582d11[_0x9a1b('0x1b')]:_0x1161b9['offset']+_0x1161b9[_0x9a1b('0x1a')];var _0x4c6593;if(_0x5c812b>=_0x260132){_0x5c812b=_0x260132;_0x4c6593=0xc8;}else{_0x4c6593=0xce;}_0x56cdc9['status'](_0x4c6593);return _0x56cdc9[_0x9a1b('0x1c')](_0x9a1b('0x1d'),_0x597ed6+'-'+_0x5c812b+'/'+_0x260132)[_0x9a1b('0x17')](_0x582d11);}return null;};}function patchUpdates(_0x319b81){return function(_0x5e0ad1){try{jsonpatch['apply'](_0x5e0ad1,_0x319b81,!![]);}catch(_0xd8a230){return BPromise[_0x9a1b('0x1e')](_0xd8a230);}return _0x5e0ad1[_0x9a1b('0x1f')]();};}function saveUpdates(_0x1cb865,_0x147bb5){return function(_0x409946){if(_0x409946){return _0x409946['update'](_0x1cb865)[_0x9a1b('0x20')](function(_0x5e8e04){return _0x5e8e04;});}return null;};}function removeEntity(_0xfbdaf8,_0x1f4a58){return function(_0x3f92b){if(_0x3f92b){return _0x3f92b['destroy']()[_0x9a1b('0x20')](function(){_0xfbdaf8[_0x9a1b('0x16')](0xcc)[_0x9a1b('0x21')]();});}};}function handleEntityNotFound(_0x2da780,_0x54736e){return function(_0x5cf92c){if(!_0x5cf92c){_0x2da780['sendStatus'](0x194);}return _0x5cf92c;};}function handleError(_0x132dfe,_0xc7e126){_0xc7e126=_0xc7e126||0x1f4;return function(_0x226366){logger[_0x9a1b('0x22')](_0x226366['stack']);if(_0x226366['name']){delete _0x226366[_0x9a1b('0x23')];}_0x132dfe[_0x9a1b('0x16')](_0xc7e126)[_0x9a1b('0x24')](_0x226366);};}exports[_0x9a1b('0x25')]=function(_0x2c2cb4,_0xc888b1){if(_0x2c2cb4[_0x9a1b('0x26')]['id']){delete _0x2c2cb4[_0x9a1b('0x26')]['id'];}return db[_0x9a1b('0x27')][_0x9a1b('0x28')]({'where':{'id':_0x2c2cb4[_0x9a1b('0x29')]['id']}})['then'](handleEntityNotFound(_0xc888b1,null))[_0x9a1b('0x20')](saveUpdates(_0x2c2cb4['body'],null))['then'](respondWithResult(_0xc888b1,null))['catch'](handleError(_0xc888b1,null));};exports[_0x9a1b('0x2a')]=function(_0x2582de,_0x3e8ae6){return db[_0x9a1b('0x27')][_0x9a1b('0x28')]({'where':{'id':_0x2582de[_0x9a1b('0x29')]['id']}})[_0x9a1b('0x20')](handleEntityNotFound(_0x3e8ae6,null))[_0x9a1b('0x20')](removeEntity(_0x3e8ae6,null))[_0x9a1b('0x2b')](handleError(_0x3e8ae6,null));};
\ No newline at end of file
index ca8be26..dab8729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84be=['bluebird','request-promise','path','rimraf','./action.attributes','exports','tools_actions','lodash','util','../../config/logger','api','moment'];(function(_0x597db7,_0x29a65f){var _0x5a7ccb=function(_0x1f8407){while(--_0x1f8407){_0x597db7['push'](_0x597db7['shift']());}};_0x5a7ccb(++_0x29a65f);}(_0x84be,0xc7));var _0xe84b=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0x84be[_0xa1e3e3];return _0xc980e9;};'use strict';var _=require(_0xe84b('0x0'));var util=require(_0xe84b('0x1'));var logger=require(_0xe84b('0x2'))(_0xe84b('0x3'));var moment=require(_0xe84b('0x4'));var BPromise=require(_0xe84b('0x5'));var rp=require(_0xe84b('0x6'));var fs=require('fs');var path=require(_0xe84b('0x7'));var rimraf=require(_0xe84b('0x8'));var config=require('../../config/environment');var attributes=require(_0xe84b('0x9'));module[_0xe84b('0xa')]=function(_0x27b656,_0x4b60a8){return _0x27b656['define']('Action',attributes,{'tableName':_0xe84b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4b74=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./action.attributes','exports','define','Action','lodash'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x4b74,0x103));var _0x44b7=function(_0x1aec73,_0x51cbce){_0x1aec73=_0x1aec73-0x0;var _0x3113ce=_0x4b74[_0x1aec73];return _0x3113ce;};'use strict';var _=require(_0x44b7('0x0'));var util=require(_0x44b7('0x1'));var logger=require(_0x44b7('0x2'))('api');var moment=require(_0x44b7('0x3'));var BPromise=require(_0x44b7('0x4'));var rp=require(_0x44b7('0x5'));var fs=require('fs');var path=require(_0x44b7('0x6'));var rimraf=require(_0x44b7('0x7'));var config=require(_0x44b7('0x8'));var attributes=require(_0x44b7('0x9'));module[_0x44b7('0xa')]=function(_0x5ef96c,_0xdfcf5){return _0x5ef96c[_0x44b7('0xb')](_0x44b7('0xc'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0b86f95..3e36b8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x53ec,0x192));var _0xc53e=function(_0x104c9b,_0x56944d){_0x104c9b=_0x104c9b-0x0;var _0x39ba4d=_0x53ec[_0x104c9b];return _0x39ba4d;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a9e8,_0x2de88b,_0x5d3b28){return new BPromise(function(_0x1616ac,_0x1ac6c0){return client[_0xc53e('0xa')](_0x41a9e8,_0x5d3b28)[_0xc53e('0xb')](function(_0xd9612){logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));logger[_0xc53e('0xf')]('Action,\x20%s,\x20%s,\x20%s',_0x2de88b,'request\x20sent',JSON[_0xc53e('0x10')](_0xd9612));if(_0xd9612['error']){if(_0xd9612['error'][_0xc53e('0x11')]===0x1f4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')]['message']);return _0x1ac6c0(_0xd9612['error'][_0xc53e('0x13')]);}logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);return _0x1616ac(_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);}else{logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));_0x1616ac(_0xd9612['result'][_0xc53e('0x13')]);}})[_0xc53e('0x14')](function(_0x535cd4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0x535cd4);_0x1ac6c0(_0x535cd4);});});}
\ No newline at end of file
+var _0xf494=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','Action,\x20%s,\x20%s','request\x20sent','Action,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4cee4b,_0x1dfff3){var _0x4d891d=function(_0x3722ba){while(--_0x3722ba){_0x4cee4b['push'](_0x4cee4b['shift']());}};_0x4d891d(++_0x1dfff3);}(_0xf494,0x1c6));var _0x4f49=function(_0x4627ef,_0x3a385f){_0x4627ef=_0x4627ef-0x0;var _0x16ca04=_0xf494[_0x4627ef];return _0x16ca04;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var moment=require(_0x4f49('0x2'));var BPromise=require('bluebird');var rs=require(_0x4f49('0x3'));var fs=require('fs');var Redis=require(_0x4f49('0x4'));var db=require(_0x4f49('0x5'))['db'];var utils=require(_0x4f49('0x6'));var logger=require(_0x4f49('0x7'))(_0x4f49('0x8'));var config=require(_0x4f49('0x9'));var jayson=require(_0x4f49('0xa'));var client=jayson[_0x4f49('0xb')][_0x4f49('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x42b0e8,_0x5eb186,_0x58e9a0){return new BPromise(function(_0x169c95,_0x327bd5){return client[_0x4f49('0xd')](_0x42b0e8,_0x58e9a0)[_0x4f49('0xe')](function(_0x185174){logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,_0x4f49('0x11'));logger['debug'](_0x4f49('0x12'),_0x5eb186,_0x4f49('0x11'),JSON['stringify'](_0x185174));if(_0x185174[_0x4f49('0x13')]){if(_0x185174['error']['code']===0x1f4){logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174['error'][_0x4f49('0x14')]);return _0x327bd5(_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);}logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);return _0x169c95(_0x185174['error'][_0x4f49('0x14')]);}else{logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,'request\x20sent');_0x169c95(_0x185174['result'][_0x4f49('0x14')]);}})[_0x4f49('0x15')](function(_0x74886e){logger['error'](_0x4f49('0x10'),_0x5eb186,_0x74886e);_0x327bd5(_0x74886e);});});}
\ No newline at end of file
index 5f7a489..ffe4d12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e17=['../../components/interaction/service','./action.controller','put','/:id','isAuthenticated','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x5e17,0x7f));var _0x75e1=function(_0xfcceef,_0xf5d878){_0xfcceef=_0xfcceef-0x0;var _0x5a5360=_0x5e17[_0xfcceef];return _0x5a5360;};'use strict';var multer=require(_0x75e1('0x0'));var util=require(_0x75e1('0x1'));var path=require(_0x75e1('0x2'));var timeout=require(_0x75e1('0x3'));var express=require(_0x75e1('0x4'));var router=express[_0x75e1('0x5')]();var fs_extra=require(_0x75e1('0x6'));var auth=require(_0x75e1('0x7'));var interaction=require(_0x75e1('0x8'));var config=require('../../config/environment');var controller=require(_0x75e1('0x9'));router[_0x75e1('0xa')](_0x75e1('0xb'),auth[_0x75e1('0xc')](),controller['update']);router['delete'](_0x75e1('0xb'),auth[_0x75e1('0xc')](),controller[_0x75e1('0xd')]);module[_0x75e1('0xe')]=router;
\ No newline at end of file
+var _0x9937=['/:id','isAuthenticated','update','exports','multer','path','express','Router','fs-extra','../../components/auth/service','./action.controller','put'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x9937,0xe8));var _0x7993=function(_0x435da3,_0x3f66e8){_0x435da3=_0x435da3-0x0;var _0x16fc91=_0x9937[_0x435da3];return _0x16fc91;};'use strict';var multer=require(_0x7993('0x0'));var util=require('util');var path=require(_0x7993('0x1'));var timeout=require('connect-timeout');var express=require(_0x7993('0x2'));var router=express[_0x7993('0x3')]();var fs_extra=require(_0x7993('0x4'));var auth=require(_0x7993('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7993('0x6'));router[_0x7993('0x7')](_0x7993('0x8'),auth[_0x7993('0x9')](),controller[_0x7993('0xa')]);router['delete'](_0x7993('0x8'),auth[_0x7993('0x9')](),controller['destroy']);module[_0x7993('0xb')]=router;
\ No newline at end of file
index 0c94413..c3dbb8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['sequelize','STRING','TEXT'];(function(_0x5ba38a,_0x132834){var _0x28eebe=function(_0x56946a){while(--_0x56946a){_0x5ba38a['push'](_0x5ba38a['shift']());}};_0x28eebe(++_0x132834);}(_0x24ca,0x1bc));var _0xa24c=function(_0x72a33d,_0x5691da){_0x72a33d=_0x72a33d-0x0;var _0x2621d5=_0x24ca[_0x72a33d];return _0x2621d5;};'use strict';var Sequelize=require(_0xa24c('0x0'));module['exports']={'name':{'type':Sequelize[_0xa24c('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa24c('0x1')]},'parent':{'type':Sequelize[_0xa24c('0x1')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0xa24c('0x2')]},'joins':{'type':Sequelize[_0xa24c('0x2')]}};
\ No newline at end of file
+var _0x5fc3=['sequelize','exports','STRING','TEXT'];(function(_0xda4386,_0x58e521){var _0x3b1182=function(_0x88b32c){while(--_0x88b32c){_0xda4386['push'](_0xda4386['shift']());}};_0x3b1182(++_0x58e521);}(_0x5fc3,0xa8));var _0x35fc=function(_0x57add2,_0x4f2b7d){_0x57add2=_0x57add2-0x0;var _0x4e3670=_0x5fc3[_0x57add2];return _0x4e3670;};'use strict';var Sequelize=require(_0x35fc('0x0'));module[_0x35fc('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x35fc('0x2')]},'parent':{'type':Sequelize[_0x35fc('0x2')]},'table':{'type':Sequelize[_0x35fc('0x2')]},'conditions':{'type':Sequelize[_0x35fc('0x3')]},'joins':{'type':Sequelize[_0x35fc('0x3')]}};
\ No newline at end of file
index 404e19c..9e053f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63ef=['length','hasOwnProperty','nolimit','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','left_join','right_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','function','format','replace','groupBy','order','orderBy','DESC','alias','joins','parse','includes','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','table','foreignKey','conditions','Limited\x20Query:','sequelize','QueryTypes','SELECT','join','cross_join','ROUND(%s)','condition','value','metric','clone','output','web','%s-%s.%s','generate','csv','custom','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','toString','child_process','fork','../../components/export/','../../files/reports','savename','countTable','run','IS\x20NOT\x20NULL','debug','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','CustomReports','UserProfileResource','end','error','stack','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','name','query','keys','model','attributes','fields'];(function(_0xf5d71c,_0x2613a6){var _0x5af672=function(_0x191f52){while(--_0x191f52){_0xf5d71c['push'](_0xf5d71c['shift']());}};_0x5af672(++_0x2613a6);}(_0x63ef,0x11a));var _0xf63e=function(_0x5756f8,_0x22b6d5){_0x5756f8=_0x5756f8-0x0;var _0x3bb749=_0x63ef[_0x5756f8];return _0x3bb749;};'use strict';var emlformat=require(_0xf63e('0x0'));var rimraf=require(_0xf63e('0x1'));var zipdir=require(_0xf63e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf63e('0x3'));var moment=require(_0xf63e('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf63e('0x5'));var path=require(_0xf63e('0x6'));var sox=require('sox');var csv=require(_0xf63e('0x7'));var ejs=require(_0xf63e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf63e('0x9'));var squel=require(_0xf63e('0xa'));var crypto=require(_0xf63e('0xb'));var jsforce=require(_0xf63e('0xc'));var deskjs=require(_0xf63e('0xd'));var toCsv=require(_0xf63e('0x7'));var querystring=require(_0xf63e('0xe'));var Papa=require(_0xf63e('0xf'));var Redis=require(_0xf63e('0x10'));var authService=require(_0xf63e('0x11'));var qs=require(_0xf63e('0x12'));var as=require(_0xf63e('0x13'));var hardwareService=require(_0xf63e('0x14'));var logger=require(_0xf63e('0x15'))(_0xf63e('0x16'));var utils=require('../../config/utils');var config=require(_0xf63e('0x17'));var licenseUtil=require(_0xf63e('0x18'));var db=require(_0xf63e('0x19'))['db'];var dbH=require(_0xf63e('0x19'))[_0xf63e('0x1a')];function respondWithStatusCode(_0x1c2fe9,_0x536a8c){_0x536a8c=_0x536a8c||0xcc;return function(_0x32a98b){if(_0x32a98b){return _0x1c2fe9[_0xf63e('0x1b')](_0x536a8c);}return _0x1c2fe9[_0xf63e('0x1c')](_0x536a8c)['end']();};}function respondWithResult(_0x5e44a6,_0x5796c7){_0x5796c7=_0x5796c7||0xc8;return function(_0x19ede9){if(_0x19ede9){return _0x5e44a6['status'](_0x5796c7)[_0xf63e('0x1d')](_0x19ede9);}};}function respondWithFilteredResult(_0x1f5412,_0x13f9db){return function(_0x55fa84){if(_0x55fa84){var _0xeb8283=typeof _0x13f9db[_0xf63e('0x1e')]==='undefined'&&typeof _0x13f9db[_0xf63e('0x1f')]===_0xf63e('0x20');var _0xad867a=_0x55fa84['count'];var _0x3b25e3=_0xeb8283?0x0:_0x13f9db[_0xf63e('0x1e')];var _0x2a1726=_0xeb8283?_0x55fa84[_0xf63e('0x21')]:_0x13f9db[_0xf63e('0x1e')]+_0x13f9db[_0xf63e('0x1f')];var _0x71d83e;if(_0x2a1726>=_0xad867a){_0x2a1726=_0xad867a;_0x71d83e=0xc8;}else{_0x71d83e=0xce;}_0x1f5412[_0xf63e('0x1c')](_0x71d83e);return _0x1f5412[_0xf63e('0x22')](_0xf63e('0x23'),_0x3b25e3+'-'+_0x2a1726+'/'+_0xad867a)[_0xf63e('0x1d')](_0x55fa84);}return null;};}function patchUpdates(_0x5aacf7){return function(_0x43ab41){try{jsonpatch[_0xf63e('0x24')](_0x43ab41,_0x5aacf7,!![]);}catch(_0x11be6c){return BPromise[_0xf63e('0x25')](_0x11be6c);}return _0x43ab41['save']();};}function saveUpdates(_0x3b807d,_0x258f4c){return function(_0x27db54){if(_0x27db54){return _0x27db54[_0xf63e('0x26')](_0x3b807d)[_0xf63e('0x27')](function(_0x4ec299){return _0x4ec299;});}return null;};}function removeEntity(_0x299ca9,_0x595ef0){return function(_0x48c3c3){if(_0x48c3c3){return _0x48c3c3[_0xf63e('0x28')]()['then'](function(){var _0x56f34d=_0x48c3c3[_0xf63e('0x29')]({'plain':!![]});var _0x55c699=_0xf63e('0x2a');return db[_0xf63e('0x2b')]['destroy']({'where':{'type':_0x55c699,'resourceId':_0x56f34d['id']}})[_0xf63e('0x27')](function(){return _0x48c3c3;});})[_0xf63e('0x27')](function(){_0x299ca9[_0xf63e('0x1c')](0xcc)[_0xf63e('0x2c')]();});}};}function handleEntityNotFound(_0x305525,_0x366a93){return function(_0x210842){if(!_0x210842){_0x305525['sendStatus'](0x194);}return _0x210842;};}function handleError(_0x30f5a3,_0x21e080){_0x21e080=_0x21e080||0x1f4;return function(_0x363763){logger[_0xf63e('0x2d')](_0x363763[_0xf63e('0x2e')]);if(_0x363763['name']){delete _0x363763['name'];}_0x30f5a3[_0xf63e('0x1c')](_0x21e080)[_0xf63e('0x2f')](_0x363763);};}exports[_0xf63e('0x30')]=function(_0x3049e1,_0x30a397){var _0x5a48fc={},_0x10d007={},_0x45de39={'count':0x0,'rows':[]};var _0x51455f=_[_0xf63e('0x31')](db[_0xf63e('0x32')][_0xf63e('0x33')],function(_0x201cea){return{'name':_0x201cea[_0xf63e('0x34')],'type':_0x201cea[_0xf63e('0x35')]['key']};});_0x10d007['model']=_[_0xf63e('0x31')](_0x51455f,_0xf63e('0x36'));_0x10d007[_0xf63e('0x37')]=_[_0xf63e('0x38')](_0x3049e1[_0xf63e('0x37')]);_0x10d007['filters']=_['intersection'](_0x10d007[_0xf63e('0x39')],_0x10d007[_0xf63e('0x37')]);_0x5a48fc[_0xf63e('0x3a')]=_['intersection'](_0x10d007['model'],qs[_0xf63e('0x3b')](_0x3049e1['query'][_0xf63e('0x3b')]));_0x5a48fc[_0xf63e('0x3a')]=_0x5a48fc[_0xf63e('0x3a')][_0xf63e('0x3c')]?_0x5a48fc['attributes']:_0x10d007[_0xf63e('0x39')];if(!_0x3049e1['query'][_0xf63e('0x3d')](_0xf63e('0x3e'))){_0x5a48fc[_0xf63e('0x1f')]=qs['limit'](_0x3049e1[_0xf63e('0x37')][_0xf63e('0x1f')]);_0x5a48fc[_0xf63e('0x1e')]=qs[_0xf63e('0x1e')](_0x3049e1['query'][_0xf63e('0x1e')]);}_0x5a48fc['order']=qs['sort'](_0x3049e1[_0xf63e('0x37')]['sort']);_0x5a48fc[_0xf63e('0x3f')]=qs[_0xf63e('0x40')](_['pick'](_0x3049e1['query'],_0x10d007['filters']),_0x51455f);if(_0x3049e1[_0xf63e('0x37')][_0xf63e('0x41')]){_0x5a48fc[_0xf63e('0x3f')]=_[_0xf63e('0x42')](_0x5a48fc['where'],{'$or':_[_0xf63e('0x31')](_0x51455f,function(_0xf5199a){if(_0xf5199a[_0xf63e('0x35')]!==_0xf63e('0x43')){var _0x29cf49={};_0x29cf49[_0xf5199a[_0xf63e('0x36')]]={'$like':'%'+_0x3049e1[_0xf63e('0x37')][_0xf63e('0x41')]+'%'};return _0x29cf49;}})});}_0x5a48fc=_['merge']({},_0x5a48fc,_0x3049e1[_0xf63e('0x44')]);var _0x55837f={'where':_0x5a48fc[_0xf63e('0x3f')]};return db[_0xf63e('0x32')]['count'](_0x55837f)[_0xf63e('0x27')](function(_0x59765c){_0x45de39[_0xf63e('0x21')]=_0x59765c;if(_0x3049e1[_0xf63e('0x37')][_0xf63e('0x45')]){_0x5a48fc[_0xf63e('0x46')]=[{'all':!![]}];}return db[_0xf63e('0x32')][_0xf63e('0x47')](_0x5a48fc);})[_0xf63e('0x27')](function(_0x134663){_0x45de39[_0xf63e('0x48')]=_0x134663;return _0x45de39;})[_0xf63e('0x27')](respondWithFilteredResult(_0x30a397,_0x5a48fc))[_0xf63e('0x49')](handleError(_0x30a397,null));};exports[_0xf63e('0x4a')]=function(_0x34c9bc,_0x33dca){var _0x3d63a5={'raw':![],'where':{'id':_0x34c9bc[_0xf63e('0x4b')]['id']}},_0x41a449={};_0x41a449['model']=_['keys'](db[_0xf63e('0x32')]['rawAttributes']);_0x41a449[_0xf63e('0x37')]=_[_0xf63e('0x38')](_0x34c9bc[_0xf63e('0x37')]);_0x41a449[_0xf63e('0x40')]=_[_0xf63e('0x4c')](_0x41a449[_0xf63e('0x39')],_0x41a449[_0xf63e('0x37')]);_0x3d63a5[_0xf63e('0x3a')]=_['intersection'](_0x41a449[_0xf63e('0x39')],qs[_0xf63e('0x3b')](_0x34c9bc[_0xf63e('0x37')][_0xf63e('0x3b')]));_0x3d63a5[_0xf63e('0x3a')]=_0x3d63a5[_0xf63e('0x3a')][_0xf63e('0x3c')]?_0x3d63a5['attributes']:_0x41a449[_0xf63e('0x39')];if(_0x34c9bc[_0xf63e('0x37')][_0xf63e('0x45')]){_0x3d63a5[_0xf63e('0x46')]=[{'all':!![]}];}_0x3d63a5=_[_0xf63e('0x42')]({},_0x3d63a5,_0x34c9bc[_0xf63e('0x44')]);return db[_0xf63e('0x32')][_0xf63e('0x4d')](_0x3d63a5)[_0xf63e('0x27')](handleEntityNotFound(_0x33dca,null))[_0xf63e('0x27')](respondWithResult(_0x33dca,null))[_0xf63e('0x49')](handleError(_0x33dca,null));};exports['create']=function(_0x30d92b,_0x15fde9){return db[_0xf63e('0x32')][_0xf63e('0x4e')](_0x30d92b[_0xf63e('0x4f')],{})[_0xf63e('0x27')](function(_0x142ac8){var _0xb28009=_0x30d92b[_0xf63e('0x50')][_0xf63e('0x29')]({'plain':!![]});if(!_0xb28009)throw new Error(_0xf63e('0x51'));if(_0xb28009[_0xf63e('0x52')]===_0xf63e('0x50')){var _0x4f7738=_0x142ac8['get']({'plain':!![]});var _0x3489e3=_0xf63e('0x53');return db[_0xf63e('0x54')][_0xf63e('0x4d')]({'where':{'name':_0x3489e3,'userProfileId':_0xb28009[_0xf63e('0x55')]},'raw':!![]})[_0xf63e('0x27')](function(_0x3fabc4){if(_0x3fabc4&&_0x3fabc4[_0xf63e('0x56')]===0x0){return db[_0xf63e('0x2b')][_0xf63e('0x4e')]({'name':_0x4f7738[_0xf63e('0x36')],'resourceId':_0x4f7738['id'],'type':_0xf63e('0x2a'),'sectionId':_0x3fabc4['id']},{})['then'](function(){return _0x142ac8;});}else{return _0x142ac8;}})['catch'](function(_0x47f3b1){logger[_0xf63e('0x2d')](_0xf63e('0x57'),_0x47f3b1);throw _0x47f3b1;});}return _0x142ac8;})[_0xf63e('0x27')](respondWithResult(_0x15fde9,0xc9))['catch'](handleError(_0x15fde9,null));};exports['update']=function(_0x128a90,_0x141630){if(_0x128a90[_0xf63e('0x4f')]['id']){delete _0x128a90['body']['id'];}return db[_0xf63e('0x32')][_0xf63e('0x4d')]({'where':{'id':_0x128a90[_0xf63e('0x4b')]['id']}})[_0xf63e('0x27')](handleEntityNotFound(_0x141630,null))[_0xf63e('0x27')](saveUpdates(_0x128a90[_0xf63e('0x4f')],null))['then'](respondWithResult(_0x141630,null))[_0xf63e('0x49')](handleError(_0x141630,null));};exports['destroy']=function(_0x30cc9a,_0x2bd2a4){return db[_0xf63e('0x32')]['find']({'where':{'id':_0x30cc9a[_0xf63e('0x4b')]['id']}})[_0xf63e('0x27')](handleEntityNotFound(_0x2bd2a4,null))[_0xf63e('0x27')](removeEntity(_0x2bd2a4,null))[_0xf63e('0x49')](handleError(_0x2bd2a4,null));};exports[_0xf63e('0x58')]=function(_0xfc8b03,_0x160e48){var _0x1e3d23=0xa;var _0x56dd74=['join',_0xf63e('0x59'),_0xf63e('0x5a'),'cross_join'];var _0x35b880={'SUM':_0xf63e('0x5b'),'COUNT':_0xf63e('0x5c'),'COUNT DISTINCT':_0xf63e('0x5d'),'MAX':_0xf63e('0x5e'),'MIN':_0xf63e('0x5f'),'AVG':_0xf63e('0x60'),'GROUP_CONCAT':_0xf63e('0x61'),'GROUP_CONCAT ASC':_0xf63e('0x62'),'GROUP_CONCAT DESC':_0xf63e('0x63')};var _0x199b6c={'SEC_TO_TIME':_0xf63e('0x64'),'DATE':_0xf63e('0x65'),'HOUR':_0xf63e('0x66'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xf63e('0x67')};var _0x5232e6=function(_0xc306cd){return!_['includes']([_0xf63e('0x68'),'IS\x20NOT\x20NULL',_0xf63e('0x69'),_0xf63e('0x6a')],_0xc306cd);};var _0xe744aa=function(_0x2a5ade){if(!_0x2a5ade||!_0x2a5ade[_0xf63e('0x6b')][_0xf63e('0x3c')]){return'';}for(var _0x2eebd9='(',_0x6c38f0=0x0;_0x6c38f0<_0x2a5ade['rules'][_0xf63e('0x3c')];_0x6c38f0+=0x1){_0x6c38f0>0x0&&(_0x2eebd9+='\x20'+_0x2a5ade[_0xf63e('0x6c')]+'\x20');_0x2eebd9+=_0x2a5ade['rules'][_0x6c38f0][_0xf63e('0x6d')]?_0xe744aa(_0x2a5ade[_0xf63e('0x6b')][_0x6c38f0][_0xf63e('0x6d')]):_0x2a5ade[_0xf63e('0x6b')][_0x6c38f0][_0xf63e('0x6e')]+'\x20'+_0x2a5ade['rules'][_0x6c38f0]['condition']+(_0x5232e6(_0x2a5ade[_0xf63e('0x6b')][_0x6c38f0]['condition'])?'\x20'+_0x2a5ade['rules'][_0x6c38f0]['value']:'');}return _0x2eebd9+')';};var _0x1a47b5={'where':{'id':_0xfc8b03[_0xf63e('0x4b')]['id']}},_0x3a6591,_0x2fa775,_0x24daf5,_0x4e572c,_0x5d4fc4;_0x1a47b5=_[_0xf63e('0x42')]({},_0x1a47b5,_0xfc8b03[_0xf63e('0x44')]);return db[_0xf63e('0x32')][_0xf63e('0x4d')](_0x1a47b5)[_0xf63e('0x27')](function(_0x2daac2){if(_0x2daac2){_0x3a6591=_0x2daac2;return _0x2daac2[_0xf63e('0x6f')]();}return null;})['then'](function(_0x5ede33){if(_0x5ede33){if(!_0x5ede33[_0xf63e('0x3c')]){throw new db[(_0xf63e('0x70'))][(_0xf63e('0x71'))](_0xf63e('0x72'),0x193);}_0x2fa775=_0x5ede33;return db[_0xf63e('0x73')][_0xf63e('0x47')]({'raw':!![]});}return null;})[_0xf63e('0x27')](function(_0x216c33){if(_0x216c33){_0x24daf5=_[_0xf63e('0x74')](_0x216c33,'id');var _0x246701;var _0x4c8762=squel[_0xf63e('0x75')]();_0x4c8762[_0xf63e('0x76')](_0x3a6591['table']);for(var _0x541bc3=0x0;_0x541bc3<_0x2fa775[_0xf63e('0x3c')];_0x541bc3+=0x1){_0x246701=_0x2fa775[_0x541bc3]['MetricId']?_0x24daf5[_0x2fa775[_0x541bc3][_0xf63e('0x77')]]['metric']:_0x2fa775[_0x541bc3][_0xf63e('0x6e')];_0x246701=_0x2fa775[_0x541bc3][_0xf63e('0x78')]?_['replace'](_0x35b880[_0x2fa775[_0x541bc3]['function']],'%s',_0x246701):_0x246701;_0x246701=_0x2fa775[_0x541bc3][_0xf63e('0x79')]?_[_0xf63e('0x7a')](_0x199b6c[_0x2fa775[_0x541bc3][_0xf63e('0x79')]],'%s',_0x246701):_0x246701;if(_0x2fa775[_0x541bc3][_0xf63e('0x7b')]){_0x4c8762[_0xf63e('0x6d')](_0x246701);}_0x2fa775[_0x541bc3]['orderBy']&&_0x4c8762[_0xf63e('0x7c')](_0x246701,_0x2fa775[_0x541bc3][_0xf63e('0x7d')]===_0xf63e('0x7e')?![]:!![]);_0x4c8762[_0xf63e('0x6e')](_0x246701,_0x2fa775[_0x541bc3][_0xf63e('0x7f')]||_0x246701);}if(_0x3a6591[_0xf63e('0x80')]){_0x3a6591[_0xf63e('0x80')]=JSON[_0xf63e('0x81')](_0x3a6591[_0xf63e('0x80')]);for(var _0x1c4293=0x0;_0x1c4293<_0x3a6591[_0xf63e('0x80')][_0xf63e('0x3c')];_0x1c4293+=0x1){if(_0x3a6591[_0xf63e('0x80')][_0x1c4293][_0xf63e('0x35')]&&_[_0xf63e('0x82')](_0x56dd74,_0x3a6591[_0xf63e('0x80')][_0x1c4293][_0xf63e('0x35')])&&_0x3a6591[_0xf63e('0x80')][_0x1c4293][_0xf63e('0x83')]&&_0x3a6591[_0xf63e('0x80')][_0x1c4293][_0xf63e('0x84')]&&_0x3a6591[_0xf63e('0x80')][_0x1c4293]['foreignKey']){_0x4c8762[_0x3a6591[_0xf63e('0x80')][_0x1c4293][_0xf63e('0x35')]](_0x3a6591[_0xf63e('0x80')][_0x1c4293][_0xf63e('0x84')],null,util[_0xf63e('0x79')](_0xf63e('0x85'),_0x3a6591[_0xf63e('0x86')],_0x3a6591[_0xf63e('0x80')][_0x1c4293]['parentKey'],_0x3a6591['joins'][_0x1c4293]['foreignTable'],_0x3a6591[_0xf63e('0x80')][_0x1c4293][_0xf63e('0x87')]));}}}if(_0x3a6591['conditions']){_0x3a6591['conditions']=JSON['parse'](_0x3a6591[_0xf63e('0x88')]);_0x4c8762['where'](_0xe744aa(_0x3a6591[_0xf63e('0x88')][_0xf63e('0x6d')]));}_0x5d4fc4=_0x4c8762['clone']();_0x4c8762[_0xf63e('0x1f')](_0x1e3d23);_0x4c8762['offset'](0x0);logger['debug'](_0xf63e('0x89'),_0x4c8762['toString']());return dbH[_0xf63e('0x8a')][_0xf63e('0x37')](_0x4c8762['toString'](),{'type':dbH[_0xf63e('0x8a')][_0xf63e('0x8b')][_0xf63e('0x8c')]});}})[_0xf63e('0x27')](respondWithResult(_0x160e48,null))[_0xf63e('0x49')](handleError(_0x160e48,null));};function runReport(_0x5224fc,_0x1ead3f,_0x376c24){var _0x57e2a6=_0x1ead3f[_0xf63e('0x36')];var _0x487d26=0xa;var _0x4d5f7d=[_0xf63e('0x8d'),_0xf63e('0x59'),_0xf63e('0x5a'),_0xf63e('0x8e')];var _0x2df5f6={'SUM':'SUM(%s)','COUNT':_0xf63e('0x5c'),'COUNT DISTINCT':_0xf63e('0x5d'),'MAX':_0xf63e('0x5e'),'MIN':_0xf63e('0x5f'),'AVG':_0xf63e('0x60'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xf63e('0x62'),'GROUP_CONCAT DESC':_0xf63e('0x63')};var _0x9f888a={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0xf63e('0x66'),'ROUND':_0xf63e('0x8f'),'UNIX_TIMESTAMP':_0xf63e('0x67')};var _0x3f19cf=function(_0x3ea353){return!_['includes']([_0xf63e('0x68'),'IS\x20NOT\x20NULL',_0xf63e('0x69'),'IS\x20NOT\x20EMPTY'],_0x3ea353);};var _0x4cd9f0=function(_0xf2433e){if(!_0xf2433e||!_0xf2433e[_0xf63e('0x6b')][_0xf63e('0x3c')]){return'';}for(var _0x453b30='(',_0xa93bc4=0x0;_0xa93bc4<_0xf2433e['rules'][_0xf63e('0x3c')];_0xa93bc4+=0x1){_0xa93bc4>0x0&&(_0x453b30+='\x20'+_0xf2433e['operator']+'\x20');_0x453b30+=_0xf2433e[_0xf63e('0x6b')][_0xa93bc4][_0xf63e('0x6d')]?_0x4cd9f0(_0xf2433e[_0xf63e('0x6b')][_0xa93bc4][_0xf63e('0x6d')]):_0xf2433e['rules'][_0xa93bc4][_0xf63e('0x6e')]+'\x20'+_0xf2433e[_0xf63e('0x6b')][_0xa93bc4][_0xf63e('0x90')]+(_0x3f19cf(_0xf2433e[_0xf63e('0x6b')][_0xa93bc4]['condition'])?'\x20'+_0xf2433e[_0xf63e('0x6b')][_0xa93bc4][_0xf63e('0x91')]:'');}return _0x453b30+')';};var _0x34d34b={'where':{'id':_0x5224fc['id']}},_0x1fd043,_0x5236f0,_0x4b2e3f,_0x5a5f29,_0x238579;_0x34d34b=_[_0xf63e('0x42')]({},_0x34d34b,_0x376c24);return db['AnalyticCustomReport']['find'](_0x34d34b)[_0xf63e('0x27')](function(_0x546a74){if(_0x546a74){_0x1fd043=_0x546a74;return _0x546a74[_0xf63e('0x6f')]();}return null;})[_0xf63e('0x27')](function(_0x2ff2bd){if(_0x2ff2bd){if(!_0x2ff2bd['length']){throw new db[(_0xf63e('0x70'))][(_0xf63e('0x71'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x5236f0=_0x2ff2bd;return db[_0xf63e('0x73')][_0xf63e('0x47')]({'raw':!![]});}return null;})[_0xf63e('0x27')](function(_0x1ae087){if(_0x1ae087){_0x4b2e3f=_[_0xf63e('0x74')](_0x1ae087,'id');var _0x5182f5;var _0x13882d=squel['select']();_0x13882d['from'](_0x1fd043[_0xf63e('0x86')]);for(var _0x1a5350=0x0;_0x1a5350<_0x5236f0['length'];_0x1a5350+=0x1){_0x5182f5=_0x5236f0[_0x1a5350][_0xf63e('0x77')]?_0x4b2e3f[_0x5236f0[_0x1a5350]['MetricId']][_0xf63e('0x92')]:_0x5236f0[_0x1a5350][_0xf63e('0x6e')];_0x5182f5=_0x5236f0[_0x1a5350][_0xf63e('0x78')]?_[_0xf63e('0x7a')](_0x2df5f6[_0x5236f0[_0x1a5350][_0xf63e('0x78')]],'%s',_0x5182f5):_0x5182f5;_0x5182f5=_0x5236f0[_0x1a5350]['format']?_['replace'](_0x9f888a[_0x5236f0[_0x1a5350][_0xf63e('0x79')]],'%s',_0x5182f5):_0x5182f5;if(_0x5236f0[_0x1a5350][_0xf63e('0x7b')]){_0x13882d[_0xf63e('0x6d')](_0x5182f5);}_0x5236f0[_0x1a5350]['orderBy']&&_0x13882d[_0xf63e('0x7c')](_0x5182f5,_0x5236f0[_0x1a5350][_0xf63e('0x7d')]===_0xf63e('0x7e')?![]:!![]);_0x13882d['field'](_0x5182f5,_0x5236f0[_0x1a5350]['alias']||_0x5182f5);}if(_0x1fd043[_0xf63e('0x80')]){_0x1fd043['joins']=JSON[_0xf63e('0x81')](_0x1fd043['joins']);for(var _0x57f998=0x0;_0x57f998<_0x1fd043[_0xf63e('0x80')][_0xf63e('0x3c')];_0x57f998+=0x1){if(_0x1fd043[_0xf63e('0x80')][_0x57f998][_0xf63e('0x35')]&&_['includes'](_0x4d5f7d,_0x1fd043['joins'][_0x57f998][_0xf63e('0x35')])&&_0x1fd043[_0xf63e('0x80')][_0x57f998][_0xf63e('0x83')]&&_0x1fd043['joins'][_0x57f998][_0xf63e('0x84')]&&_0x1fd043['joins'][_0x57f998][_0xf63e('0x87')]){_0x13882d[_0x1fd043[_0xf63e('0x80')][_0x57f998][_0xf63e('0x35')]](_0x1fd043[_0xf63e('0x80')][_0x57f998][_0xf63e('0x84')],null,util['format'](_0xf63e('0x85'),_0x1fd043[_0xf63e('0x86')],_0x1fd043['joins'][_0x57f998][_0xf63e('0x83')],_0x1fd043[_0xf63e('0x80')][_0x57f998][_0xf63e('0x84')],_0x1fd043[_0xf63e('0x80')][_0x57f998]['foreignKey']));}}}if(_0x1fd043[_0xf63e('0x88')]){_0x1fd043['conditions']=JSON['parse'](_0x1fd043['conditions']);_0x13882d[_0xf63e('0x3f')](_0x4cd9f0(_0x1fd043['conditions']['group']));}_0x238579=_0x13882d[_0xf63e('0x93')]();_0x13882d[_0xf63e('0x1f')](_0x487d26);_0x13882d[_0xf63e('0x1e')](0x0);return;}})[_0xf63e('0x27')](function(){if(_0x1ead3f[_0xf63e('0x94')]===_0xf63e('0x95')){return null;}var _0x530158=_[_0xf63e('0x42')](_0x1ead3f,{'name':_0x1ead3f['fullPath']||_0x1ead3f['name']||_0x1fd043['name'],'basename':_0x57e2a6,'savename':util['format'](_0xf63e('0x96'),_0x1ead3f[_0xf63e('0x36')]||_0x1fd043['name'],require('randomstring')[_0xf63e('0x97')](0x4),_0x1ead3f[_0xf63e('0x94')]||_0xf63e('0x98')),'reportId':_0x1fd043['id'],'reportType':_0xf63e('0x99')});return db['AnalyticExtractedReport']['create'](_0x530158,{'raw':!![]});})[_0xf63e('0x27')](function(_0x592dfb){if(_0x1fd043['table']===_0xf63e('0x9a')){_0x238579['where'](_0x1fd043[_0xf63e('0x86')]+_0xf63e('0x9b'),_0x1ead3f[_0xf63e('0x9c')],_0x1ead3f[_0xf63e('0x9d')]);}else{_0x238579['where'](_0x1fd043[_0xf63e('0x86')]+_0xf63e('0x9e'),_0x1ead3f[_0xf63e('0x9c')],_0x1ead3f['endDate']);}if(_0x592dfb){logger[_0xf63e('0x9f')](_0xf63e('0xa0'),_0x238579[_0xf63e('0xa1')]());require(_0xf63e('0xa2'))[_0xf63e('0xa3')](path[_0xf63e('0x8d')](__dirname,_0xf63e('0xa4'),_0x592dfb[_0xf63e('0x94')]),[_0x592dfb['id'],_0x238579[_0xf63e('0xa1')](),path[_0xf63e('0x8d')](__dirname,_0xf63e('0xa5'),_0x592dfb[_0xf63e('0xa6')]),_0x57e2a6]);return _0x592dfb;}else{var _0xc02b05=squel[_0xf63e('0x75')]();_0xc02b05[_0xf63e('0x76')]('('+_0x238579['toString']()+')',_0xf63e('0xa7'));_0xc02b05[_0xf63e('0x6e')]('COUNT(*)',_0xf63e('0x21'));_0x238579['limit'](_0x1ead3f[_0xf63e('0x1f')]||_0x487d26);_0x238579['offset'](_0x1ead3f[_0xf63e('0x1e')]||0x0);return dbH[_0xf63e('0x8a')][_0xf63e('0x37')](_0xc02b05[_0xf63e('0xa1')](),{'type':dbH[_0xf63e('0x8a')][_0xf63e('0x8b')][_0xf63e('0x8c')]})['then'](function(_0x381788){if(!_0x381788[_0xf63e('0x3c')]){_0x5a5f29=0x0;}else{_0x5a5f29=_0x381788[0x0][_0xf63e('0x21')]||0x0;}return dbH[_0xf63e('0x8a')][_0xf63e('0x37')](_0x238579[_0xf63e('0xa1')](),{'type':dbH[_0xf63e('0x8a')][_0xf63e('0x8b')]['SELECT']});})[_0xf63e('0x27')](function(_0x498728){return{'rows':_0x498728||[],'count':_0x5a5f29};});}});}exports[_0xf63e('0xa8')]=function(_0x141185,_0x1db68a){return runReport(_0x141185[_0xf63e('0x4b')],_0x141185[_0xf63e('0x37')],_0x141185[_0xf63e('0x44')])[_0xf63e('0x27')](respondWithResult(_0x1db68a,null))['catch'](handleError(_0x1db68a,null));};exports['runReport']=runReport;exports[_0xf63e('0x37')]=function(_0x5e8944,_0x5c0db9){var _0xdb50f8=0xa;var _0x3e3efa=['join',_0xf63e('0x59'),_0xf63e('0x5a'),_0xf63e('0x8e')];var _0x5a04e7={'SUM':_0xf63e('0x5b'),'COUNT':_0xf63e('0x5c'),'COUNT DISTINCT':_0xf63e('0x5d'),'MAX':_0xf63e('0x5e'),'MIN':_0xf63e('0x5f'),'AVG':_0xf63e('0x60'),'GROUP_CONCAT':_0xf63e('0x61'),'GROUP_CONCAT ASC':_0xf63e('0x62'),'GROUP_CONCAT DESC':_0xf63e('0x63')};var _0x53a4c9={'SEC_TO_TIME':_0xf63e('0x64'),'DATE':_0xf63e('0x65'),'HOUR':_0xf63e('0x66'),'ROUND':_0xf63e('0x8f'),'UNIX_TIMESTAMP':_0xf63e('0x67')};var _0x37f765=function(_0x371b98){return!_[_0xf63e('0x82')]([_0xf63e('0x68'),_0xf63e('0xa9'),'IS\x20EMPTY',_0xf63e('0x6a')],_0x371b98);};var _0xa0986f=function(_0x68fb6d){if(!_0x68fb6d||!_0x68fb6d['rules']['length']){return'';}for(var _0x195d38='(',_0x3080ea=0x0;_0x3080ea<_0x68fb6d[_0xf63e('0x6b')][_0xf63e('0x3c')];_0x3080ea+=0x1){_0x3080ea>0x0&&(_0x195d38+='\x20'+_0x68fb6d[_0xf63e('0x6c')]+'\x20');_0x195d38+=_0x68fb6d['rules'][_0x3080ea][_0xf63e('0x6d')]?_0xa0986f(_0x68fb6d['rules'][_0x3080ea]['group']):_0x68fb6d[_0xf63e('0x6b')][_0x3080ea][_0xf63e('0x6e')]+'\x20'+_0x68fb6d['rules'][_0x3080ea][_0xf63e('0x90')]+(_0x37f765(_0x68fb6d[_0xf63e('0x6b')][_0x3080ea][_0xf63e('0x90')])?'\x20'+_0x68fb6d[_0xf63e('0x6b')][_0x3080ea]['value']:'');}return _0x195d38+')';};var _0x3e995e={'where':{'id':_0x5e8944[_0xf63e('0x4b')]['id']}},_0x4bdb15,_0x63d46b,_0x476d2b,_0x66fe15,_0x5c4069;_0x3e995e=_[_0xf63e('0x42')]({},_0x3e995e,_0x5e8944[_0xf63e('0x44')]);return db[_0xf63e('0x32')]['find'](_0x3e995e)[_0xf63e('0x27')](function(_0x53f81a){if(_0x53f81a){_0x4bdb15=_0x53f81a;return _0x53f81a['getFields']();}return null;})[_0xf63e('0x27')](function(_0x4891f6){if(_0x4891f6){if(!_0x4891f6[_0xf63e('0x3c')]){throw new db[(_0xf63e('0x70'))][(_0xf63e('0x71'))](_0xf63e('0x72'),0x193);}_0x63d46b=_0x4891f6;return db['AnalyticMetric'][_0xf63e('0x47')]({'raw':!![]});}return null;})[_0xf63e('0x27')](function(_0x55f220){if(_0x55f220){_0x476d2b=_[_0xf63e('0x74')](_0x55f220,'id');var _0x330c32;var _0x1eade8=squel[_0xf63e('0x75')]();_0x1eade8[_0xf63e('0x76')](_0x4bdb15[_0xf63e('0x86')]);for(var _0x21d051=0x0;_0x21d051<_0x63d46b[_0xf63e('0x3c')];_0x21d051+=0x1){_0x330c32=_0x63d46b[_0x21d051][_0xf63e('0x77')]?_0x476d2b[_0x63d46b[_0x21d051][_0xf63e('0x77')]][_0xf63e('0x92')]:_0x63d46b[_0x21d051][_0xf63e('0x6e')];_0x330c32=_0x63d46b[_0x21d051][_0xf63e('0x78')]?_['replace'](_0x5a04e7[_0x63d46b[_0x21d051]['function']],'%s',_0x330c32):_0x330c32;_0x330c32=_0x63d46b[_0x21d051][_0xf63e('0x79')]?_[_0xf63e('0x7a')](_0x53a4c9[_0x63d46b[_0x21d051][_0xf63e('0x79')]],'%s',_0x330c32):_0x330c32;if(_0x63d46b[_0x21d051][_0xf63e('0x7b')]){_0x1eade8['group'](_0x330c32);}_0x63d46b[_0x21d051]['orderBy']&&_0x1eade8['order'](_0x330c32,_0x63d46b[_0x21d051]['orderBy']==='DESC'?![]:!![]);_0x1eade8[_0xf63e('0x6e')](_0x330c32,_0x63d46b[_0x21d051][_0xf63e('0x7f')]||_0x330c32);}if(_0x4bdb15['joins']){_0x4bdb15[_0xf63e('0x80')]=JSON[_0xf63e('0x81')](_0x4bdb15['joins']);for(var _0x133a24=0x0;_0x133a24<_0x4bdb15[_0xf63e('0x80')][_0xf63e('0x3c')];_0x133a24+=0x1){if(_0x4bdb15[_0xf63e('0x80')][_0x133a24][_0xf63e('0x35')]&&_[_0xf63e('0x82')](_0x3e3efa,_0x4bdb15['joins'][_0x133a24]['type'])&&_0x4bdb15[_0xf63e('0x80')][_0x133a24][_0xf63e('0x83')]&&_0x4bdb15['joins'][_0x133a24][_0xf63e('0x84')]&&_0x4bdb15[_0xf63e('0x80')][_0x133a24]['foreignKey']){_0x1eade8[_0x4bdb15[_0xf63e('0x80')][_0x133a24][_0xf63e('0x35')]](_0x4bdb15[_0xf63e('0x80')][_0x133a24][_0xf63e('0x84')],null,util[_0xf63e('0x79')]('%s.%s\x20=\x20%s.%s',_0x4bdb15[_0xf63e('0x86')],_0x4bdb15['joins'][_0x133a24][_0xf63e('0x83')],_0x4bdb15['joins'][_0x133a24][_0xf63e('0x84')],_0x4bdb15['joins'][_0x133a24][_0xf63e('0x87')]));}}}if(_0x4bdb15[_0xf63e('0x88')]){_0x4bdb15[_0xf63e('0x88')]=JSON[_0xf63e('0x81')](_0x4bdb15[_0xf63e('0x88')]);_0x1eade8[_0xf63e('0x3f')](_0xa0986f(_0x4bdb15[_0xf63e('0x88')][_0xf63e('0x6d')]));}_0x5c4069=_0x1eade8[_0xf63e('0x93')]();_0x1eade8[_0xf63e('0x1f')](_0xdb50f8);_0x1eade8[_0xf63e('0x1e')](0x0);logger[_0xf63e('0xaa')](_0xf63e('0x89'),_0x1eade8[_0xf63e('0xa1')]());return dbH[_0xf63e('0x8a')][_0xf63e('0x37')](_0x1eade8['toString'](),{'type':dbH[_0xf63e('0x8a')]['QueryTypes'][_0xf63e('0x8c')]});}})[_0xf63e('0x27')](function(){return{'sql':_0x5c4069[_0xf63e('0xa1')]()};})[_0xf63e('0x27')](respondWithResult(_0x5c0db9,null))[_0xf63e('0x49')](handleError(_0x5c0db9,null));};
\ No newline at end of file
+var _0xabc4=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','preview','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','function','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','parse','clone','debug','sequelize','toString','QueryTypes','SELECT','join','left_join','AVG(%s)','GROUP_CONCAT(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','value','merge','Sequelize','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','runReport','getFields','Limited\x20Query:','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','dbH','status','end','json','offset','limit','undefined','Content-Range','apply','reject','save','update','then','destroy','get','CustomReports','sendStatus','error','stack','name','send','map','rawAttributes','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','where','type','VIRTUAL','options','count','include','AnalyticCustomReport','findAll','catch','show','params','find','create','body'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0xabc4,0xfd));var _0x4abc=function(_0x3e7b07,_0x19364a){_0x3e7b07=_0x3e7b07-0x0;var _0x33c396=_0xabc4[_0x3e7b07];return _0x33c396;};'use strict';var emlformat=require(_0x4abc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4abc('0x1'));var jsonpatch=require(_0x4abc('0x2'));var rp=require(_0x4abc('0x3'));var moment=require('moment');var BPromise=require(_0x4abc('0x4'));var Mustache=require(_0x4abc('0x5'));var util=require('util');var path=require(_0x4abc('0x6'));var sox=require(_0x4abc('0x7'));var csv=require(_0x4abc('0x8'));var ejs=require(_0x4abc('0x9'));var fs=require('fs');var fs_extra=require(_0x4abc('0xa'));var _=require(_0x4abc('0xb'));var squel=require(_0x4abc('0xc'));var crypto=require(_0x4abc('0xd'));var jsforce=require(_0x4abc('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4abc('0x8'));var querystring=require(_0x4abc('0xf'));var Papa=require(_0x4abc('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4abc('0x11'));var as=require(_0x4abc('0x12'));var hardwareService=require(_0x4abc('0x13'));var logger=require('../../config/logger')(_0x4abc('0x14'));var utils=require('../../config/utils');var config=require(_0x4abc('0x15'));var licenseUtil=require(_0x4abc('0x16'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x4abc('0x17')];function respondWithStatusCode(_0x2f0d61,_0x20f001){_0x20f001=_0x20f001||0xcc;return function(_0xd20c2e){if(_0xd20c2e){return _0x2f0d61['sendStatus'](_0x20f001);}return _0x2f0d61[_0x4abc('0x18')](_0x20f001)[_0x4abc('0x19')]();};}function respondWithResult(_0x107314,_0x47e324){_0x47e324=_0x47e324||0xc8;return function(_0x591504){if(_0x591504){return _0x107314[_0x4abc('0x18')](_0x47e324)[_0x4abc('0x1a')](_0x591504);}};}function respondWithFilteredResult(_0x2afb4c,_0x235f20){return function(_0x3bd460){if(_0x3bd460){var _0x1df2ec=typeof _0x235f20[_0x4abc('0x1b')]==='undefined'&&typeof _0x235f20[_0x4abc('0x1c')]===_0x4abc('0x1d');var _0x2b8cd0=_0x3bd460['count'];var _0x4029b7=_0x1df2ec?0x0:_0x235f20['offset'];var _0x3efae5=_0x1df2ec?_0x3bd460['count']:_0x235f20['offset']+_0x235f20['limit'];var _0x443c23;if(_0x3efae5>=_0x2b8cd0){_0x3efae5=_0x2b8cd0;_0x443c23=0xc8;}else{_0x443c23=0xce;}_0x2afb4c[_0x4abc('0x18')](_0x443c23);return _0x2afb4c['set'](_0x4abc('0x1e'),_0x4029b7+'-'+_0x3efae5+'/'+_0x2b8cd0)[_0x4abc('0x1a')](_0x3bd460);}return null;};}function patchUpdates(_0x1b2a3d){return function(_0x1819b4){try{jsonpatch[_0x4abc('0x1f')](_0x1819b4,_0x1b2a3d,!![]);}catch(_0x3d27a3){return BPromise[_0x4abc('0x20')](_0x3d27a3);}return _0x1819b4[_0x4abc('0x21')]();};}function saveUpdates(_0x35d694,_0x5df4e4){return function(_0x3d339b){if(_0x3d339b){return _0x3d339b[_0x4abc('0x22')](_0x35d694)[_0x4abc('0x23')](function(_0x1ffddb){return _0x1ffddb;});}return null;};}function removeEntity(_0x286349,_0x4a778e){return function(_0x10dfcd){if(_0x10dfcd){return _0x10dfcd[_0x4abc('0x24')]()['then'](function(){var _0x27c7c1=_0x10dfcd[_0x4abc('0x25')]({'plain':!![]});var _0x172b7a=_0x4abc('0x26');return db['UserProfileResource'][_0x4abc('0x24')]({'where':{'type':_0x172b7a,'resourceId':_0x27c7c1['id']}})[_0x4abc('0x23')](function(){return _0x10dfcd;});})[_0x4abc('0x23')](function(){_0x286349[_0x4abc('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xca91c1,_0x82aeb){return function(_0x3ae11d){if(!_0x3ae11d){_0xca91c1[_0x4abc('0x27')](0x194);}return _0x3ae11d;};}function handleError(_0x594dc2,_0x338032){_0x338032=_0x338032||0x1f4;return function(_0x3e9b5a){logger[_0x4abc('0x28')](_0x3e9b5a[_0x4abc('0x29')]);if(_0x3e9b5a[_0x4abc('0x2a')]){delete _0x3e9b5a['name'];}_0x594dc2[_0x4abc('0x18')](_0x338032)[_0x4abc('0x2b')](_0x3e9b5a);};}exports['index']=function(_0x88ce8e,_0x2afdaf){var _0xa05caf={},_0x474ff7={},_0x4d461c={'count':0x0,'rows':[]};var _0x5656f0=_[_0x4abc('0x2c')](db['AnalyticCustomReport'][_0x4abc('0x2d')],function(_0xc8413b){return{'name':_0xc8413b['fieldName'],'type':_0xc8413b['type'][_0x4abc('0x2e')]};});_0x474ff7['model']=_['map'](_0x5656f0,_0x4abc('0x2a'));_0x474ff7[_0x4abc('0x2f')]=_[_0x4abc('0x30')](_0x88ce8e[_0x4abc('0x2f')]);_0x474ff7['filters']=_[_0x4abc('0x31')](_0x474ff7[_0x4abc('0x32')],_0x474ff7[_0x4abc('0x2f')]);_0xa05caf[_0x4abc('0x33')]=_[_0x4abc('0x31')](_0x474ff7[_0x4abc('0x32')],qs['fields'](_0x88ce8e['query'][_0x4abc('0x34')]));_0xa05caf[_0x4abc('0x33')]=_0xa05caf[_0x4abc('0x33')][_0x4abc('0x35')]?_0xa05caf[_0x4abc('0x33')]:_0x474ff7[_0x4abc('0x32')];if(!_0x88ce8e[_0x4abc('0x2f')][_0x4abc('0x36')]('nolimit')){_0xa05caf[_0x4abc('0x1c')]=qs[_0x4abc('0x1c')](_0x88ce8e['query'][_0x4abc('0x1c')]);_0xa05caf[_0x4abc('0x1b')]=qs['offset'](_0x88ce8e[_0x4abc('0x2f')][_0x4abc('0x1b')]);}_0xa05caf[_0x4abc('0x37')]=qs[_0x4abc('0x38')](_0x88ce8e[_0x4abc('0x2f')][_0x4abc('0x38')]);_0xa05caf['where']=qs[_0x4abc('0x39')](_[_0x4abc('0x3a')](_0x88ce8e[_0x4abc('0x2f')],_0x474ff7[_0x4abc('0x39')]),_0x5656f0);if(_0x88ce8e[_0x4abc('0x2f')]['filter']){_0xa05caf[_0x4abc('0x3b')]=_['merge'](_0xa05caf[_0x4abc('0x3b')],{'$or':_[_0x4abc('0x2c')](_0x5656f0,function(_0xed8b3a){if(_0xed8b3a[_0x4abc('0x3c')]!==_0x4abc('0x3d')){var _0x334fc2={};_0x334fc2[_0xed8b3a[_0x4abc('0x2a')]]={'$like':'%'+_0x88ce8e[_0x4abc('0x2f')]['filter']+'%'};return _0x334fc2;}})});}_0xa05caf=_['merge']({},_0xa05caf,_0x88ce8e[_0x4abc('0x3e')]);var _0x4eb34b={'where':_0xa05caf[_0x4abc('0x3b')]};return db['AnalyticCustomReport'][_0x4abc('0x3f')](_0x4eb34b)[_0x4abc('0x23')](function(_0xec94ad){_0x4d461c[_0x4abc('0x3f')]=_0xec94ad;if(_0x88ce8e[_0x4abc('0x2f')]['includeAll']){_0xa05caf[_0x4abc('0x40')]=[{'all':!![]}];}return db[_0x4abc('0x41')][_0x4abc('0x42')](_0xa05caf);})[_0x4abc('0x23')](function(_0x14bf5f){_0x4d461c['rows']=_0x14bf5f;return _0x4d461c;})[_0x4abc('0x23')](respondWithFilteredResult(_0x2afdaf,_0xa05caf))[_0x4abc('0x43')](handleError(_0x2afdaf,null));};exports[_0x4abc('0x44')]=function(_0x58d1f4,_0xea4786){var _0x3a25e9={'raw':![],'where':{'id':_0x58d1f4[_0x4abc('0x45')]['id']}},_0x174da7={};_0x174da7[_0x4abc('0x32')]=_[_0x4abc('0x30')](db['AnalyticCustomReport'][_0x4abc('0x2d')]);_0x174da7[_0x4abc('0x2f')]=_[_0x4abc('0x30')](_0x58d1f4[_0x4abc('0x2f')]);_0x174da7[_0x4abc('0x39')]=_['intersection'](_0x174da7[_0x4abc('0x32')],_0x174da7[_0x4abc('0x2f')]);_0x3a25e9['attributes']=_[_0x4abc('0x31')](_0x174da7[_0x4abc('0x32')],qs['fields'](_0x58d1f4['query'][_0x4abc('0x34')]));_0x3a25e9[_0x4abc('0x33')]=_0x3a25e9[_0x4abc('0x33')][_0x4abc('0x35')]?_0x3a25e9[_0x4abc('0x33')]:_0x174da7[_0x4abc('0x32')];if(_0x58d1f4[_0x4abc('0x2f')]['includeAll']){_0x3a25e9[_0x4abc('0x40')]=[{'all':!![]}];}_0x3a25e9=_['merge']({},_0x3a25e9,_0x58d1f4[_0x4abc('0x3e')]);return db[_0x4abc('0x41')][_0x4abc('0x46')](_0x3a25e9)[_0x4abc('0x23')](handleEntityNotFound(_0xea4786,null))[_0x4abc('0x23')](respondWithResult(_0xea4786,null))['catch'](handleError(_0xea4786,null));};exports[_0x4abc('0x47')]=function(_0xf9246d,_0x3edb1c){return db[_0x4abc('0x41')][_0x4abc('0x47')](_0xf9246d[_0x4abc('0x48')],{})[_0x4abc('0x23')](function(_0xfb1543){var _0x2288af=_0xf9246d[_0x4abc('0x49')][_0x4abc('0x25')]({'plain':!![]});if(!_0x2288af)throw new Error(_0x4abc('0x4a'));if(_0x2288af[_0x4abc('0x4b')]===_0x4abc('0x49')){var _0x512df1=_0xfb1543['get']({'plain':!![]});var _0x37bf20=_0x4abc('0x4c');return db[_0x4abc('0x4d')]['find']({'where':{'name':_0x37bf20,'userProfileId':_0x2288af[_0x4abc('0x4e')]},'raw':!![]})[_0x4abc('0x23')](function(_0x34c637){if(_0x34c637&&_0x34c637[_0x4abc('0x4f')]===0x0){return db[_0x4abc('0x50')][_0x4abc('0x47')]({'name':_0x512df1[_0x4abc('0x2a')],'resourceId':_0x512df1['id'],'type':_0x4abc('0x26'),'sectionId':_0x34c637['id']},{})[_0x4abc('0x23')](function(){return _0xfb1543;});}else{return _0xfb1543;}})['catch'](function(_0x5a5cc0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5a5cc0);throw _0x5a5cc0;});}return _0xfb1543;})[_0x4abc('0x23')](respondWithResult(_0x3edb1c,0xc9))[_0x4abc('0x43')](handleError(_0x3edb1c,null));};exports['update']=function(_0x4fcac2,_0x53c6d7){if(_0x4fcac2[_0x4abc('0x48')]['id']){delete _0x4fcac2[_0x4abc('0x48')]['id'];}return db[_0x4abc('0x41')][_0x4abc('0x46')]({'where':{'id':_0x4fcac2[_0x4abc('0x45')]['id']}})[_0x4abc('0x23')](handleEntityNotFound(_0x53c6d7,null))[_0x4abc('0x23')](saveUpdates(_0x4fcac2[_0x4abc('0x48')],null))[_0x4abc('0x23')](respondWithResult(_0x53c6d7,null))['catch'](handleError(_0x53c6d7,null));};exports[_0x4abc('0x24')]=function(_0x2a3c3b,_0x545342){return db[_0x4abc('0x41')][_0x4abc('0x46')]({'where':{'id':_0x2a3c3b[_0x4abc('0x45')]['id']}})[_0x4abc('0x23')](handleEntityNotFound(_0x545342,null))[_0x4abc('0x23')](removeEntity(_0x545342,null))[_0x4abc('0x43')](handleError(_0x545342,null));};exports[_0x4abc('0x51')]=function(_0x212e7d,_0x45ed90){var _0x4ae913=0xa;var _0x2fe58e=['join','left_join',_0x4abc('0x52'),_0x4abc('0x53')];var _0x5849c5={'SUM':_0x4abc('0x54'),'COUNT':_0x4abc('0x55'),'COUNT DISTINCT':_0x4abc('0x56'),'MAX':_0x4abc('0x57'),'MIN':_0x4abc('0x58'),'AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x4abc('0x59'),'GROUP_CONCAT DESC':_0x4abc('0x5a')};var _0x143a66={'SEC_TO_TIME':_0x4abc('0x5b'),'DATE':'DATE(%s)','HOUR':_0x4abc('0x5c'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x593f86=function(_0x365dfa){return!_[_0x4abc('0x5d')]([_0x4abc('0x5e'),_0x4abc('0x5f'),_0x4abc('0x60'),_0x4abc('0x61')],_0x365dfa);};var _0x20b273=function(_0x5019ac){if(!_0x5019ac||!_0x5019ac[_0x4abc('0x62')][_0x4abc('0x35')]){return'';}for(var _0x6507d5='(',_0x12c22c=0x0;_0x12c22c<_0x5019ac[_0x4abc('0x62')][_0x4abc('0x35')];_0x12c22c+=0x1){_0x12c22c>0x0&&(_0x6507d5+='\x20'+_0x5019ac[_0x4abc('0x63')]+'\x20');_0x6507d5+=_0x5019ac[_0x4abc('0x62')][_0x12c22c]['group']?_0x20b273(_0x5019ac[_0x4abc('0x62')][_0x12c22c][_0x4abc('0x64')]):_0x5019ac['rules'][_0x12c22c][_0x4abc('0x65')]+'\x20'+_0x5019ac[_0x4abc('0x62')][_0x12c22c]['condition']+(_0x593f86(_0x5019ac[_0x4abc('0x62')][_0x12c22c][_0x4abc('0x66')])?'\x20'+_0x5019ac[_0x4abc('0x62')][_0x12c22c]['value']:'');}return _0x6507d5+')';};var _0x4c8692={'where':{'id':_0x212e7d[_0x4abc('0x45')]['id']}},_0x3c4ef5,_0x199640,_0x32727b,_0x36fb8f,_0x4d1b56;_0x4c8692=_['merge']({},_0x4c8692,_0x212e7d[_0x4abc('0x3e')]);return db[_0x4abc('0x41')][_0x4abc('0x46')](_0x4c8692)[_0x4abc('0x23')](function(_0x18d9b9){if(_0x18d9b9){_0x3c4ef5=_0x18d9b9;return _0x18d9b9['getFields']();}return null;})[_0x4abc('0x23')](function(_0x288b9d){if(_0x288b9d){if(!_0x288b9d[_0x4abc('0x35')]){throw new db['Sequelize']['ValidationErrorItem'](_0x4abc('0x67'),0x193);}_0x199640=_0x288b9d;return db[_0x4abc('0x68')]['findAll']({'raw':!![]});}return null;})[_0x4abc('0x23')](function(_0x3b5894){if(_0x3b5894){_0x32727b=_[_0x4abc('0x69')](_0x3b5894,'id');var _0x3c82ee;var _0x50a6a7=squel[_0x4abc('0x6a')]();_0x50a6a7[_0x4abc('0x6b')](_0x3c4ef5[_0x4abc('0x6c')]);for(var _0x5ae57f=0x0;_0x5ae57f<_0x199640[_0x4abc('0x35')];_0x5ae57f+=0x1){_0x3c82ee=_0x199640[_0x5ae57f][_0x4abc('0x6d')]?_0x32727b[_0x199640[_0x5ae57f]['MetricId']]['metric']:_0x199640[_0x5ae57f][_0x4abc('0x65')];_0x3c82ee=_0x199640[_0x5ae57f][_0x4abc('0x6e')]?_[_0x4abc('0x6f')](_0x5849c5[_0x199640[_0x5ae57f][_0x4abc('0x6e')]],'%s',_0x3c82ee):_0x3c82ee;_0x3c82ee=_0x199640[_0x5ae57f][_0x4abc('0x70')]?_[_0x4abc('0x6f')](_0x143a66[_0x199640[_0x5ae57f]['format']],'%s',_0x3c82ee):_0x3c82ee;if(_0x199640[_0x5ae57f][_0x4abc('0x71')]){_0x50a6a7[_0x4abc('0x64')](_0x3c82ee);}_0x199640[_0x5ae57f][_0x4abc('0x72')]&&_0x50a6a7[_0x4abc('0x37')](_0x3c82ee,_0x199640[_0x5ae57f]['orderBy']===_0x4abc('0x73')?![]:!![]);_0x50a6a7[_0x4abc('0x65')](_0x3c82ee,_0x199640[_0x5ae57f][_0x4abc('0x74')]||_0x3c82ee);}if(_0x3c4ef5[_0x4abc('0x75')]){_0x3c4ef5[_0x4abc('0x75')]=JSON['parse'](_0x3c4ef5[_0x4abc('0x75')]);for(var _0xc4fa9c=0x0;_0xc4fa9c<_0x3c4ef5['joins']['length'];_0xc4fa9c+=0x1){if(_0x3c4ef5[_0x4abc('0x75')][_0xc4fa9c][_0x4abc('0x3c')]&&_[_0x4abc('0x5d')](_0x2fe58e,_0x3c4ef5[_0x4abc('0x75')][_0xc4fa9c]['type'])&&_0x3c4ef5[_0x4abc('0x75')][_0xc4fa9c][_0x4abc('0x76')]&&_0x3c4ef5[_0x4abc('0x75')][_0xc4fa9c][_0x4abc('0x77')]&&_0x3c4ef5[_0x4abc('0x75')][_0xc4fa9c][_0x4abc('0x78')]){_0x50a6a7[_0x3c4ef5[_0x4abc('0x75')][_0xc4fa9c][_0x4abc('0x3c')]](_0x3c4ef5[_0x4abc('0x75')][_0xc4fa9c]['foreignTable'],null,util[_0x4abc('0x70')](_0x4abc('0x79'),_0x3c4ef5[_0x4abc('0x6c')],_0x3c4ef5['joins'][_0xc4fa9c]['parentKey'],_0x3c4ef5[_0x4abc('0x75')][_0xc4fa9c]['foreignTable'],_0x3c4ef5[_0x4abc('0x75')][_0xc4fa9c][_0x4abc('0x78')]));}}}if(_0x3c4ef5[_0x4abc('0x7a')]){_0x3c4ef5[_0x4abc('0x7a')]=JSON[_0x4abc('0x7b')](_0x3c4ef5[_0x4abc('0x7a')]);_0x50a6a7[_0x4abc('0x3b')](_0x20b273(_0x3c4ef5[_0x4abc('0x7a')][_0x4abc('0x64')]));}_0x4d1b56=_0x50a6a7[_0x4abc('0x7c')]();_0x50a6a7[_0x4abc('0x1c')](_0x4ae913);_0x50a6a7[_0x4abc('0x1b')](0x0);logger[_0x4abc('0x7d')]('Limited\x20Query:',_0x50a6a7['toString']());return dbH[_0x4abc('0x7e')][_0x4abc('0x2f')](_0x50a6a7[_0x4abc('0x7f')](),{'type':dbH[_0x4abc('0x7e')][_0x4abc('0x80')][_0x4abc('0x81')]});}})['then'](respondWithResult(_0x45ed90,null))[_0x4abc('0x43')](handleError(_0x45ed90,null));};function runReport(_0x19b1d1,_0x1d88cd,_0x31bab5){var _0x2a5e83=_0x1d88cd[_0x4abc('0x2a')];var _0x25aa39=0xa;var _0x47afb1=[_0x4abc('0x82'),_0x4abc('0x83'),_0x4abc('0x52'),_0x4abc('0x53')];var _0x35df00={'SUM':'SUM(%s)','COUNT':_0x4abc('0x55'),'COUNT DISTINCT':_0x4abc('0x56'),'MAX':_0x4abc('0x57'),'MIN':_0x4abc('0x58'),'AVG':_0x4abc('0x84'),'GROUP_CONCAT':_0x4abc('0x85'),'GROUP_CONCAT ASC':_0x4abc('0x59'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1cbfcf={'SEC_TO_TIME':_0x4abc('0x5b'),'DATE':'DATE(%s)','HOUR':_0x4abc('0x5c'),'ROUND':_0x4abc('0x86'),'UNIX_TIMESTAMP':_0x4abc('0x87')};var _0xa3e8fa=function(_0x5afc98){return!_[_0x4abc('0x5d')]([_0x4abc('0x5e'),_0x4abc('0x5f'),_0x4abc('0x60'),_0x4abc('0x61')],_0x5afc98);};var _0x529493=function(_0x46941){if(!_0x46941||!_0x46941[_0x4abc('0x62')][_0x4abc('0x35')]){return'';}for(var _0x10ad4d='(',_0x1cfec6=0x0;_0x1cfec6<_0x46941[_0x4abc('0x62')][_0x4abc('0x35')];_0x1cfec6+=0x1){_0x1cfec6>0x0&&(_0x10ad4d+='\x20'+_0x46941[_0x4abc('0x63')]+'\x20');_0x10ad4d+=_0x46941['rules'][_0x1cfec6][_0x4abc('0x64')]?_0x529493(_0x46941['rules'][_0x1cfec6][_0x4abc('0x64')]):_0x46941[_0x4abc('0x62')][_0x1cfec6][_0x4abc('0x65')]+'\x20'+_0x46941[_0x4abc('0x62')][_0x1cfec6][_0x4abc('0x66')]+(_0xa3e8fa(_0x46941[_0x4abc('0x62')][_0x1cfec6]['condition'])?'\x20'+_0x46941[_0x4abc('0x62')][_0x1cfec6][_0x4abc('0x88')]:'');}return _0x10ad4d+')';};var _0x3ea0b5={'where':{'id':_0x19b1d1['id']}},_0x3a38c6,_0x106b68,_0x21df67,_0x165c85,_0x115f97;_0x3ea0b5=_[_0x4abc('0x89')]({},_0x3ea0b5,_0x31bab5);return db[_0x4abc('0x41')][_0x4abc('0x46')](_0x3ea0b5)[_0x4abc('0x23')](function(_0x29d7e9){if(_0x29d7e9){_0x3a38c6=_0x29d7e9;return _0x29d7e9['getFields']();}return null;})[_0x4abc('0x23')](function(_0x4fc5eb){if(_0x4fc5eb){if(!_0x4fc5eb['length']){throw new db[(_0x4abc('0x8a'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x106b68=_0x4fc5eb;return db[_0x4abc('0x68')]['findAll']({'raw':!![]});}return null;})[_0x4abc('0x23')](function(_0x444c03){if(_0x444c03){_0x21df67=_['keyBy'](_0x444c03,'id');var _0x36c4e1;var _0x51b9d7=squel[_0x4abc('0x6a')]();_0x51b9d7[_0x4abc('0x6b')](_0x3a38c6[_0x4abc('0x6c')]);for(var _0xd43f11=0x0;_0xd43f11<_0x106b68[_0x4abc('0x35')];_0xd43f11+=0x1){_0x36c4e1=_0x106b68[_0xd43f11][_0x4abc('0x6d')]?_0x21df67[_0x106b68[_0xd43f11][_0x4abc('0x6d')]]['metric']:_0x106b68[_0xd43f11]['field'];_0x36c4e1=_0x106b68[_0xd43f11][_0x4abc('0x6e')]?_[_0x4abc('0x6f')](_0x35df00[_0x106b68[_0xd43f11][_0x4abc('0x6e')]],'%s',_0x36c4e1):_0x36c4e1;_0x36c4e1=_0x106b68[_0xd43f11][_0x4abc('0x70')]?_['replace'](_0x1cbfcf[_0x106b68[_0xd43f11][_0x4abc('0x70')]],'%s',_0x36c4e1):_0x36c4e1;if(_0x106b68[_0xd43f11][_0x4abc('0x71')]){_0x51b9d7['group'](_0x36c4e1);}_0x106b68[_0xd43f11][_0x4abc('0x72')]&&_0x51b9d7['order'](_0x36c4e1,_0x106b68[_0xd43f11][_0x4abc('0x72')]===_0x4abc('0x73')?![]:!![]);_0x51b9d7[_0x4abc('0x65')](_0x36c4e1,_0x106b68[_0xd43f11][_0x4abc('0x74')]||_0x36c4e1);}if(_0x3a38c6[_0x4abc('0x75')]){_0x3a38c6[_0x4abc('0x75')]=JSON[_0x4abc('0x7b')](_0x3a38c6[_0x4abc('0x75')]);for(var _0x56f531=0x0;_0x56f531<_0x3a38c6[_0x4abc('0x75')][_0x4abc('0x35')];_0x56f531+=0x1){if(_0x3a38c6['joins'][_0x56f531][_0x4abc('0x3c')]&&_['includes'](_0x47afb1,_0x3a38c6['joins'][_0x56f531][_0x4abc('0x3c')])&&_0x3a38c6[_0x4abc('0x75')][_0x56f531][_0x4abc('0x76')]&&_0x3a38c6[_0x4abc('0x75')][_0x56f531][_0x4abc('0x77')]&&_0x3a38c6[_0x4abc('0x75')][_0x56f531][_0x4abc('0x78')]){_0x51b9d7[_0x3a38c6[_0x4abc('0x75')][_0x56f531][_0x4abc('0x3c')]](_0x3a38c6[_0x4abc('0x75')][_0x56f531]['foreignTable'],null,util[_0x4abc('0x70')](_0x4abc('0x79'),_0x3a38c6['table'],_0x3a38c6[_0x4abc('0x75')][_0x56f531]['parentKey'],_0x3a38c6[_0x4abc('0x75')][_0x56f531]['foreignTable'],_0x3a38c6[_0x4abc('0x75')][_0x56f531][_0x4abc('0x78')]));}}}if(_0x3a38c6['conditions']){_0x3a38c6[_0x4abc('0x7a')]=JSON[_0x4abc('0x7b')](_0x3a38c6[_0x4abc('0x7a')]);_0x51b9d7['where'](_0x529493(_0x3a38c6['conditions'][_0x4abc('0x64')]));}_0x115f97=_0x51b9d7[_0x4abc('0x7c')]();_0x51b9d7[_0x4abc('0x1c')](_0x25aa39);_0x51b9d7[_0x4abc('0x1b')](0x0);return;}})[_0x4abc('0x23')](function(){if(_0x1d88cd[_0x4abc('0x8b')]===_0x4abc('0x8c')){return null;}var _0x57c643=_[_0x4abc('0x89')](_0x1d88cd,{'name':_0x1d88cd[_0x4abc('0x8d')]||_0x1d88cd[_0x4abc('0x2a')]||_0x3a38c6['name'],'basename':_0x2a5e83,'savename':util[_0x4abc('0x70')](_0x4abc('0x8e'),_0x1d88cd['name']||_0x3a38c6[_0x4abc('0x2a')],require(_0x4abc('0x8f'))[_0x4abc('0x90')](0x4),_0x1d88cd['output']||_0x4abc('0x91')),'reportId':_0x3a38c6['id'],'reportType':'custom'});return db[_0x4abc('0x92')][_0x4abc('0x47')](_0x57c643,{'raw':!![]});})[_0x4abc('0x23')](function(_0x8f63b2){if(_0x3a38c6[_0x4abc('0x6c')]==='cdr'){_0x115f97[_0x4abc('0x3b')](_0x3a38c6['table']+_0x4abc('0x93'),_0x1d88cd[_0x4abc('0x94')],_0x1d88cd[_0x4abc('0x95')]);}else{_0x115f97[_0x4abc('0x3b')](_0x3a38c6[_0x4abc('0x6c')]+_0x4abc('0x96'),_0x1d88cd['startDate'],_0x1d88cd[_0x4abc('0x95')]);}if(_0x8f63b2){logger[_0x4abc('0x97')]('Run\x20Query:',_0x115f97[_0x4abc('0x7f')]());require(_0x4abc('0x98'))[_0x4abc('0x99')](path['join'](__dirname,_0x4abc('0x9a'),_0x8f63b2[_0x4abc('0x8b')]),[_0x8f63b2['id'],_0x115f97[_0x4abc('0x7f')](),path[_0x4abc('0x82')](__dirname,_0x4abc('0x9b'),_0x8f63b2[_0x4abc('0x9c')]),_0x2a5e83]);return _0x8f63b2;}else{var _0x488da2=squel[_0x4abc('0x6a')]();_0x488da2[_0x4abc('0x6b')]('('+_0x115f97['toString']()+')',_0x4abc('0x9d'));_0x488da2[_0x4abc('0x65')](_0x4abc('0x9e'),_0x4abc('0x3f'));_0x115f97[_0x4abc('0x1c')](_0x1d88cd['limit']||_0x25aa39);_0x115f97[_0x4abc('0x1b')](_0x1d88cd['offset']||0x0);return dbH[_0x4abc('0x7e')][_0x4abc('0x2f')](_0x488da2[_0x4abc('0x7f')](),{'type':dbH[_0x4abc('0x7e')]['QueryTypes'][_0x4abc('0x81')]})[_0x4abc('0x23')](function(_0x1d74f5){if(!_0x1d74f5['length']){_0x165c85=0x0;}else{_0x165c85=_0x1d74f5[0x0][_0x4abc('0x3f')]||0x0;}return dbH[_0x4abc('0x7e')][_0x4abc('0x2f')](_0x115f97[_0x4abc('0x7f')](),{'type':dbH['sequelize'][_0x4abc('0x80')][_0x4abc('0x81')]});})[_0x4abc('0x23')](function(_0x29ca9e){return{'rows':_0x29ca9e||[],'count':_0x165c85};});}});}exports[_0x4abc('0x9f')]=function(_0x585832,_0x3db7f4){return runReport(_0x585832[_0x4abc('0x45')],_0x585832[_0x4abc('0x2f')],_0x585832['options'])[_0x4abc('0x23')](respondWithResult(_0x3db7f4,null))[_0x4abc('0x43')](handleError(_0x3db7f4,null));};exports[_0x4abc('0xa0')]=runReport;exports[_0x4abc('0x2f')]=function(_0x58ff81,_0x49d3af){var _0x19aff2=0xa;var _0x1a957f=[_0x4abc('0x82'),_0x4abc('0x83'),_0x4abc('0x52'),_0x4abc('0x53')];var _0x804aa6={'SUM':'SUM(%s)','COUNT':_0x4abc('0x55'),'COUNT DISTINCT':_0x4abc('0x56'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0x4abc('0x84'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x4abc('0x59'),'GROUP_CONCAT DESC':_0x4abc('0x5a')};var _0x477068={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x4abc('0x5c'),'ROUND':_0x4abc('0x86'),'UNIX_TIMESTAMP':_0x4abc('0x87')};var _0x50b3bb=function(_0x5630dc){return!_[_0x4abc('0x5d')]([_0x4abc('0x5e'),_0x4abc('0x5f'),_0x4abc('0x60'),_0x4abc('0x61')],_0x5630dc);};var _0x56d1b5=function(_0x50494c){if(!_0x50494c||!_0x50494c[_0x4abc('0x62')][_0x4abc('0x35')]){return'';}for(var _0x3a4a54='(',_0x3698a3=0x0;_0x3698a3<_0x50494c['rules']['length'];_0x3698a3+=0x1){_0x3698a3>0x0&&(_0x3a4a54+='\x20'+_0x50494c[_0x4abc('0x63')]+'\x20');_0x3a4a54+=_0x50494c[_0x4abc('0x62')][_0x3698a3][_0x4abc('0x64')]?_0x56d1b5(_0x50494c[_0x4abc('0x62')][_0x3698a3][_0x4abc('0x64')]):_0x50494c[_0x4abc('0x62')][_0x3698a3]['field']+'\x20'+_0x50494c[_0x4abc('0x62')][_0x3698a3]['condition']+(_0x50b3bb(_0x50494c[_0x4abc('0x62')][_0x3698a3]['condition'])?'\x20'+_0x50494c['rules'][_0x3698a3][_0x4abc('0x88')]:'');}return _0x3a4a54+')';};var _0x284770={'where':{'id':_0x58ff81[_0x4abc('0x45')]['id']}},_0x837a40,_0x71b27d,_0x56e993,_0x1f52bd,_0x339825;_0x284770=_[_0x4abc('0x89')]({},_0x284770,_0x58ff81[_0x4abc('0x3e')]);return db[_0x4abc('0x41')][_0x4abc('0x46')](_0x284770)['then'](function(_0x5c554c){if(_0x5c554c){_0x837a40=_0x5c554c;return _0x5c554c[_0x4abc('0xa1')]();}return null;})[_0x4abc('0x23')](function(_0x4cbc08){if(_0x4cbc08){if(!_0x4cbc08[_0x4abc('0x35')]){throw new db['Sequelize']['ValidationErrorItem'](_0x4abc('0x67'),0x193);}_0x71b27d=_0x4cbc08;return db[_0x4abc('0x68')][_0x4abc('0x42')]({'raw':!![]});}return null;})['then'](function(_0x16cef7){if(_0x16cef7){_0x56e993=_[_0x4abc('0x69')](_0x16cef7,'id');var _0xfd7b05;var _0x432945=squel[_0x4abc('0x6a')]();_0x432945[_0x4abc('0x6b')](_0x837a40[_0x4abc('0x6c')]);for(var _0x4a3e1e=0x0;_0x4a3e1e<_0x71b27d[_0x4abc('0x35')];_0x4a3e1e+=0x1){_0xfd7b05=_0x71b27d[_0x4a3e1e]['MetricId']?_0x56e993[_0x71b27d[_0x4a3e1e][_0x4abc('0x6d')]]['metric']:_0x71b27d[_0x4a3e1e]['field'];_0xfd7b05=_0x71b27d[_0x4a3e1e][_0x4abc('0x6e')]?_['replace'](_0x804aa6[_0x71b27d[_0x4a3e1e]['function']],'%s',_0xfd7b05):_0xfd7b05;_0xfd7b05=_0x71b27d[_0x4a3e1e][_0x4abc('0x70')]?_[_0x4abc('0x6f')](_0x477068[_0x71b27d[_0x4a3e1e][_0x4abc('0x70')]],'%s',_0xfd7b05):_0xfd7b05;if(_0x71b27d[_0x4a3e1e][_0x4abc('0x71')]){_0x432945[_0x4abc('0x64')](_0xfd7b05);}_0x71b27d[_0x4a3e1e][_0x4abc('0x72')]&&_0x432945[_0x4abc('0x37')](_0xfd7b05,_0x71b27d[_0x4a3e1e][_0x4abc('0x72')]==='DESC'?![]:!![]);_0x432945['field'](_0xfd7b05,_0x71b27d[_0x4a3e1e][_0x4abc('0x74')]||_0xfd7b05);}if(_0x837a40[_0x4abc('0x75')]){_0x837a40[_0x4abc('0x75')]=JSON[_0x4abc('0x7b')](_0x837a40['joins']);for(var _0x32d6e5=0x0;_0x32d6e5<_0x837a40[_0x4abc('0x75')][_0x4abc('0x35')];_0x32d6e5+=0x1){if(_0x837a40[_0x4abc('0x75')][_0x32d6e5][_0x4abc('0x3c')]&&_[_0x4abc('0x5d')](_0x1a957f,_0x837a40[_0x4abc('0x75')][_0x32d6e5][_0x4abc('0x3c')])&&_0x837a40[_0x4abc('0x75')][_0x32d6e5][_0x4abc('0x76')]&&_0x837a40[_0x4abc('0x75')][_0x32d6e5][_0x4abc('0x77')]&&_0x837a40[_0x4abc('0x75')][_0x32d6e5][_0x4abc('0x78')]){_0x432945[_0x837a40['joins'][_0x32d6e5][_0x4abc('0x3c')]](_0x837a40['joins'][_0x32d6e5][_0x4abc('0x77')],null,util[_0x4abc('0x70')](_0x4abc('0x79'),_0x837a40[_0x4abc('0x6c')],_0x837a40[_0x4abc('0x75')][_0x32d6e5][_0x4abc('0x76')],_0x837a40[_0x4abc('0x75')][_0x32d6e5][_0x4abc('0x77')],_0x837a40[_0x4abc('0x75')][_0x32d6e5]['foreignKey']));}}}if(_0x837a40[_0x4abc('0x7a')]){_0x837a40[_0x4abc('0x7a')]=JSON[_0x4abc('0x7b')](_0x837a40[_0x4abc('0x7a')]);_0x432945[_0x4abc('0x3b')](_0x56d1b5(_0x837a40[_0x4abc('0x7a')][_0x4abc('0x64')]));}_0x339825=_0x432945[_0x4abc('0x7c')]();_0x432945['limit'](_0x19aff2);_0x432945[_0x4abc('0x1b')](0x0);logger[_0x4abc('0x7d')](_0x4abc('0xa2'),_0x432945[_0x4abc('0x7f')]());return dbH['sequelize'][_0x4abc('0x2f')](_0x432945[_0x4abc('0x7f')](),{'type':dbH['sequelize'][_0x4abc('0x80')][_0x4abc('0x81')]});}})[_0x4abc('0x23')](function(){return{'sql':_0x339825[_0x4abc('0x7f')]()};})[_0x4abc('0x23')](respondWithResult(_0x49d3af,null))['catch'](handleError(_0x49d3af,null));};
\ No newline at end of file
index a7ea02a..c6cc38a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0e0=['lodash','util','api','moment','bluebird','path','rimraf','exports','define','AnalyticCustomReport','analytics_custom_reports'];(function(_0x5e473b,_0x471896){var _0x4b4253=function(_0x8697fc){while(--_0x8697fc){_0x5e473b['push'](_0x5e473b['shift']());}};_0x4b4253(++_0x471896);}(_0xa0e0,0xc6));var _0x0a0e=function(_0x3458ed,_0x28e88b){_0x3458ed=_0x3458ed-0x0;var _0x4b38e6=_0xa0e0[_0x3458ed];return _0x4b38e6;};'use strict';var _=require(_0x0a0e('0x0'));var util=require(_0x0a0e('0x1'));var logger=require('../../config/logger')(_0x0a0e('0x2'));var moment=require(_0x0a0e('0x3'));var BPromise=require(_0x0a0e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a0e('0x5'));var rimraf=require(_0x0a0e('0x6'));var config=require('../../config/environment');var attributes=require('./analyticCustomReport.attributes');module[_0x0a0e('0x7')]=function(_0x53db73,_0x5131a3){return _0x53db73[_0x0a0e('0x8')](_0x0a0e('0x9'),attributes,{'tableName':_0x0a0e('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfe94=['request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','AnalyticCustomReport','util','api','bluebird'];(function(_0x5c4336,_0x12ceec){var _0x418cf1=function(_0x23dc35){while(--_0x23dc35){_0x5c4336['push'](_0x5c4336['shift']());}};_0x418cf1(++_0x12ceec);}(_0xfe94,0xb1));var _0x4fe9=function(_0x5a20ee,_0xcb190e){_0x5a20ee=_0x5a20ee-0x0;var _0x12483e=_0xfe94[_0x5a20ee];return _0x12483e;};'use strict';var _=require('lodash');var util=require(_0x4fe9('0x0'));var logger=require('../../config/logger')(_0x4fe9('0x1'));var moment=require('moment');var BPromise=require(_0x4fe9('0x2'));var rp=require(_0x4fe9('0x3'));var fs=require('fs');var path=require(_0x4fe9('0x4'));var rimraf=require(_0x4fe9('0x5'));var config=require(_0x4fe9('0x6'));var attributes=require(_0x4fe9('0x7'));module[_0x4fe9('0x8')]=function(_0x10f1ff,_0x1dbc6d){return _0x10f1ff['define'](_0x4fe9('0x9'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9e3f45c..35a8e31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaec1=['http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client'];(function(_0x25c2e1,_0x3a031e){var _0x3f60c1=function(_0x512717){while(--_0x512717){_0x25c2e1['push'](_0x25c2e1['shift']());}};_0x3f60c1(++_0x3a031e);}(_0xaec1,0xd6));var _0x1aec=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xaec1[_0x3b0731];return _0x4204d7;};'use strict';var _=require(_0x1aec('0x0'));var util=require(_0x1aec('0x1'));var moment=require(_0x1aec('0x2'));var BPromise=require(_0x1aec('0x3'));var rs=require(_0x1aec('0x4'));var fs=require('fs');var Redis=require(_0x1aec('0x5'));var db=require(_0x1aec('0x6'))['db'];var utils=require(_0x1aec('0x7'));var logger=require('../../config/logger')(_0x1aec('0x8'));var config=require(_0x1aec('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x1aec('0xa')][_0x1aec('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35f449,_0x3dbe18,_0x170d6a){return new BPromise(function(_0x53e008,_0x2f1e68){return client[_0x1aec('0xc')](_0x35f449,_0x170d6a)[_0x1aec('0xd')](function(_0x4255be){logger[_0x1aec('0xe')](_0x1aec('0xf'),_0x3dbe18,_0x1aec('0x10'));logger[_0x1aec('0x11')](_0x1aec('0x12'),_0x3dbe18,_0x1aec('0x10'),JSON[_0x1aec('0x13')](_0x4255be));if(_0x4255be['error']){if(_0x4255be[_0x1aec('0x14')][_0x1aec('0x15')]===0x1f4){logger[_0x1aec('0x14')](_0x1aec('0xf'),_0x3dbe18,_0x4255be[_0x1aec('0x14')]['message']);return _0x2f1e68(_0x4255be['error'][_0x1aec('0x16')]);}logger[_0x1aec('0x14')](_0x1aec('0xf'),_0x3dbe18,_0x4255be[_0x1aec('0x14')][_0x1aec('0x16')]);return _0x53e008(_0x4255be[_0x1aec('0x14')][_0x1aec('0x16')]);}else{logger['info'](_0x1aec('0xf'),_0x3dbe18,_0x1aec('0x10'));_0x53e008(_0x4255be[_0x1aec('0x17')][_0x1aec('0x16')]);}})[_0x1aec('0x18')](function(_0x2e74b7){logger[_0x1aec('0x14')]('AnalyticCustomReport,\x20%s,\x20%s',_0x3dbe18,_0x2e74b7);_0x2f1e68(_0x2e74b7);});});}
\ No newline at end of file
+var _0x46c9=['error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','request','then','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2e0535,_0xe06952){var _0x3511e9=function(_0x3b71a4){while(--_0x3b71a4){_0x2e0535['push'](_0x2e0535['shift']());}};_0x3511e9(++_0xe06952);}(_0x46c9,0x154));var _0x946c=function(_0xbc4659,_0x578fba){_0xbc4659=_0xbc4659-0x0;var _0x5831f9=_0x46c9[_0xbc4659];return _0x5831f9;};'use strict';var _=require(_0x946c('0x0'));var util=require(_0x946c('0x1'));var moment=require(_0x946c('0x2'));var BPromise=require('bluebird');var rs=require(_0x946c('0x3'));var fs=require('fs');var Redis=require(_0x946c('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x946c('0x5'))(_0x946c('0x6'));var config=require('../../config/environment');var jayson=require(_0x946c('0x7'));var client=jayson[_0x946c('0x8')][_0x946c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xc091d0,_0x4a59ea,_0x5818e4){return new BPromise(function(_0xcaaf0f,_0x2866af){return client[_0x946c('0xa')](_0xc091d0,_0x5818e4)[_0x946c('0xb')](function(_0x27b125){logger['info'](_0x946c('0xc'),_0x4a59ea,_0x946c('0xd'));logger[_0x946c('0xe')](_0x946c('0xf'),_0x4a59ea,_0x946c('0xd'),JSON[_0x946c('0x10')](_0x27b125));if(_0x27b125[_0x946c('0x11')]){if(_0x27b125['error'][_0x946c('0x12')]===0x1f4){logger[_0x946c('0x11')]('AnalyticCustomReport,\x20%s,\x20%s',_0x4a59ea,_0x27b125[_0x946c('0x11')]['message']);return _0x2866af(_0x27b125['error']['message']);}logger[_0x946c('0x11')](_0x946c('0xc'),_0x4a59ea,_0x27b125[_0x946c('0x11')][_0x946c('0x13')]);return _0xcaaf0f(_0x27b125[_0x946c('0x11')][_0x946c('0x13')]);}else{logger['info'](_0x946c('0xc'),_0x4a59ea,'request\x20sent');_0xcaaf0f(_0x27b125['result'][_0x946c('0x13')]);}})[_0x946c('0x14')](function(_0x4f963f){logger['error'](_0x946c('0xc'),_0x4a59ea,_0x4f963f);_0x2866af(_0x4f963f);});});}
\ No newline at end of file
index 8209ad9..91ea1b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3ce=['fs-extra','../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller','get','isAuthenticated','index','/:id','show','/:id/query','post','create','update','delete','destroy','exports','connect-timeout','express','Router'];(function(_0x47faab,_0x2f0254){var _0x392a8b=function(_0xdbe4f5){while(--_0xdbe4f5){_0x47faab['push'](_0x47faab['shift']());}};_0x392a8b(++_0x2f0254);}(_0xe3ce,0xbb));var _0xee3c=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xe3ce[_0x1d1779];return _0x2377e9;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xee3c('0x0'));var express=require(_0xee3c('0x1'));var router=express[_0xee3c('0x2')]();var fs_extra=require(_0xee3c('0x3'));var auth=require(_0xee3c('0x4'));var interaction=require(_0xee3c('0x5'));var config=require('../../config/environment');var controller=require(_0xee3c('0x6'));router[_0xee3c('0x7')]('/',auth[_0xee3c('0x8')](),controller[_0xee3c('0x9')]);router[_0xee3c('0x7')](_0xee3c('0xa'),auth[_0xee3c('0x8')](),controller[_0xee3c('0xb')]);router[_0xee3c('0x7')]('/:id/preview',auth[_0xee3c('0x8')](),controller['preview']);router[_0xee3c('0x7')]('/:id/run',auth['isAuthenticated'](),controller['run']);router[_0xee3c('0x7')](_0xee3c('0xc'),auth[_0xee3c('0x8')](),controller['query']);router[_0xee3c('0xd')]('/',auth[_0xee3c('0x8')](),controller[_0xee3c('0xe')]);router['put'](_0xee3c('0xa'),auth[_0xee3c('0x8')](),controller[_0xee3c('0xf')]);router[_0xee3c('0x10')](_0xee3c('0xa'),auth[_0xee3c('0x8')](),controller[_0xee3c('0x11')]);module[_0xee3c('0x12')]=router;
\ No newline at end of file
+var _0x847b=['/:id','show','preview','/:id/run','run','/:id/query','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x19ee96,_0x48b7d5){var _0x57aaf0=function(_0x26f332){while(--_0x26f332){_0x19ee96['push'](_0x19ee96['shift']());}};_0x57aaf0(++_0x48b7d5);}(_0x847b,0x155));var _0xb847=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x847b[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0xb847('0x0'));var util=require(_0xb847('0x1'));var path=require(_0xb847('0x2'));var timeout=require('connect-timeout');var express=require(_0xb847('0x3'));var router=express[_0xb847('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb847('0x5'));var interaction=require(_0xb847('0x6'));var config=require(_0xb847('0x7'));var controller=require('./analyticCustomReport.controller');router['get']('/',auth[_0xb847('0x8')](),controller[_0xb847('0x9')]);router[_0xb847('0xa')](_0xb847('0xb'),auth[_0xb847('0x8')](),controller[_0xb847('0xc')]);router[_0xb847('0xa')]('/:id/preview',auth['isAuthenticated'](),controller[_0xb847('0xd')]);router[_0xb847('0xa')](_0xb847('0xe'),auth[_0xb847('0x8')](),controller[_0xb847('0xf')]);router[_0xb847('0xa')](_0xb847('0x10'),auth[_0xb847('0x8')](),controller['query']);router['post']('/',auth[_0xb847('0x8')](),controller['create']);router[_0xb847('0x11')](_0xb847('0xb'),auth[_0xb847('0x8')](),controller[_0xb847('0x12')]);router[_0xb847('0x13')]('/:id',auth[_0xb847('0x8')](),controller[_0xb847('0x14')]);module[_0xb847('0x15')]=router;
\ No newline at end of file
index fcf9b93..ba1c3e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['sequelize','exports','STRING','TEXT'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_0x46ed,0x168));var _0xd46e=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x46ed[_0x49b207];return _0x2dc8fa;};'use strict';var Sequelize=require(_0xd46e('0x0'));module[_0xd46e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xd46e('0x2')]},'parent':{'type':Sequelize[_0xd46e('0x2')]},'table':{'type':Sequelize[_0xd46e('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xd46e('0x3')]}};
\ No newline at end of file
+var _0xf494=['STRING','TEXT','sequelize','exports'];(function(_0x2baa5d,_0x42a1cb){var _0x88bf18=function(_0x45385f){while(--_0x45385f){_0x2baa5d['push'](_0x2baa5d['shift']());}};_0x88bf18(++_0x42a1cb);}(_0xf494,0x1c6));var _0x4f49=function(_0x2a98e2,_0x30a735){_0x2a98e2=_0x2a98e2-0x0;var _0x2a314b=_0xf494[_0x2a98e2];return _0x2a314b;};'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 ab73c2c..9079172 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['save','then','destroy','get','DefaultReports','UserProfileResource','error','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','show','params','find','create','body','user','role','UserProfileSection','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','toString','sequelize','SELECT','COUNT(%s)','AVG(%s)','IS\x20NOT\x20NULL','value','order','output','%s-%s.%s','randomstring','generate','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','fork','countTable','QueryTypes','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','ROUND(%s)','Please\x20insert\x20at\x20least\x20one\x20field','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject'];(function(_0x193461,_0x42ce71){var _0x4c237c=function(_0x544492){while(--_0x544492){_0x193461['push'](_0x193461['shift']());}};_0x4c237c(++_0x42ce71);}(_0xba34,0x119));var _0x4ba3=function(_0x4964c4,_0x32de6e){_0x4964c4=_0x4964c4-0x0;var _0x631caa=_0xba34[_0x4964c4];return _0x631caa;};'use strict';var emlformat=require(_0x4ba3('0x0'));var rimraf=require(_0x4ba3('0x1'));var zipdir=require(_0x4ba3('0x2'));var jsonpatch=require(_0x4ba3('0x3'));var rp=require(_0x4ba3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4ba3('0x5'));var path=require(_0x4ba3('0x6'));var sox=require(_0x4ba3('0x7'));var csv=require(_0x4ba3('0x8'));var ejs=require(_0x4ba3('0x9'));var fs=require('fs');var fs_extra=require(_0x4ba3('0xa'));var _=require(_0x4ba3('0xb'));var squel=require('squel');var crypto=require(_0x4ba3('0xc'));var jsforce=require(_0x4ba3('0xd'));var deskjs=require(_0x4ba3('0xe'));var toCsv=require(_0x4ba3('0x8'));var querystring=require(_0x4ba3('0xf'));var Papa=require(_0x4ba3('0x10'));var Redis=require(_0x4ba3('0x11'));var authService=require(_0x4ba3('0x12'));var qs=require(_0x4ba3('0x13'));var as=require(_0x4ba3('0x14'));var hardwareService=require(_0x4ba3('0x15'));var logger=require('../../config/logger')(_0x4ba3('0x16'));var utils=require(_0x4ba3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4ba3('0x18'));var db=require('../../mysqldb')['db'];var dbH=require(_0x4ba3('0x19'))['dbH'];function respondWithStatusCode(_0x256f02,_0x4419b4){_0x4419b4=_0x4419b4||0xcc;return function(_0x29e498){if(_0x29e498){return _0x256f02[_0x4ba3('0x1a')](_0x4419b4);}return _0x256f02[_0x4ba3('0x1b')](_0x4419b4)[_0x4ba3('0x1c')]();};}function respondWithResult(_0x3a74f7,_0x12ac90){_0x12ac90=_0x12ac90||0xc8;return function(_0x1dec48){if(_0x1dec48){return _0x3a74f7[_0x4ba3('0x1b')](_0x12ac90)[_0x4ba3('0x1d')](_0x1dec48);}};}function respondWithFilteredResult(_0x301359,_0x29a9d1){return function(_0x25f584){if(_0x25f584){var _0x40e75b=typeof _0x29a9d1[_0x4ba3('0x1e')]==='undefined'&&typeof _0x29a9d1[_0x4ba3('0x1f')]===_0x4ba3('0x20');var _0x5ff7ce=_0x25f584[_0x4ba3('0x21')];var _0x556290=_0x40e75b?0x0:_0x29a9d1[_0x4ba3('0x1e')];var _0xe4eff9=_0x40e75b?_0x25f584[_0x4ba3('0x21')]:_0x29a9d1[_0x4ba3('0x1e')]+_0x29a9d1[_0x4ba3('0x1f')];var _0x125944;if(_0xe4eff9>=_0x5ff7ce){_0xe4eff9=_0x5ff7ce;_0x125944=0xc8;}else{_0x125944=0xce;}_0x301359['status'](_0x125944);return _0x301359['set'](_0x4ba3('0x22'),_0x556290+'-'+_0xe4eff9+'/'+_0x5ff7ce)['json'](_0x25f584);}return null;};}function patchUpdates(_0x18dff5){return function(_0x163967){try{jsonpatch[_0x4ba3('0x23')](_0x163967,_0x18dff5,!![]);}catch(_0xbc7023){return BPromise[_0x4ba3('0x24')](_0xbc7023);}return _0x163967[_0x4ba3('0x25')]();};}function saveUpdates(_0x4a0823,_0x143c78){return function(_0x1f87e1){if(_0x1f87e1){return _0x1f87e1['update'](_0x4a0823)[_0x4ba3('0x26')](function(_0x4ffe39){return _0x4ffe39;});}return null;};}function removeEntity(_0x1ae4de,_0x18abb3){return function(_0x11a917){if(_0x11a917){return _0x11a917[_0x4ba3('0x27')]()[_0x4ba3('0x26')](function(){var _0xe29a49=_0x11a917[_0x4ba3('0x28')]({'plain':!![]});var _0xe1f7d2=_0x4ba3('0x29');return db[_0x4ba3('0x2a')]['destroy']({'where':{'type':_0xe1f7d2,'resourceId':_0xe29a49['id']}})[_0x4ba3('0x26')](function(){return _0x11a917;});})[_0x4ba3('0x26')](function(){_0x1ae4de[_0x4ba3('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x10537e,_0x1fe5e2){return function(_0x44d78c){if(!_0x44d78c){_0x10537e['sendStatus'](0x194);}return _0x44d78c;};}function handleError(_0x10cae6,_0x843276){_0x843276=_0x843276||0x1f4;return function(_0x34ecb4){logger[_0x4ba3('0x2b')](_0x34ecb4['stack']);if(_0x34ecb4['name']){delete _0x34ecb4[_0x4ba3('0x2c')];}_0x10cae6[_0x4ba3('0x1b')](_0x843276)[_0x4ba3('0x2d')](_0x34ecb4);};}exports[_0x4ba3('0x2e')]=function(_0x2cb5d5,_0x11f88f){var _0x48b3b7={},_0x27444b={},_0x28f36c={'count':0x0,'rows':[]};var _0x24d8fc=_[_0x4ba3('0x2f')](db[_0x4ba3('0x30')][_0x4ba3('0x31')],function(_0x457236){return{'name':_0x457236[_0x4ba3('0x32')],'type':_0x457236[_0x4ba3('0x33')][_0x4ba3('0x34')]};});_0x27444b['model']=_['map'](_0x24d8fc,'name');_0x27444b[_0x4ba3('0x35')]=_[_0x4ba3('0x36')](_0x2cb5d5[_0x4ba3('0x35')]);_0x27444b[_0x4ba3('0x37')]=_[_0x4ba3('0x38')](_0x27444b[_0x4ba3('0x39')],_0x27444b[_0x4ba3('0x35')]);_0x48b3b7[_0x4ba3('0x3a')]=_[_0x4ba3('0x38')](_0x27444b[_0x4ba3('0x39')],qs[_0x4ba3('0x3b')](_0x2cb5d5[_0x4ba3('0x35')]['fields']));_0x48b3b7[_0x4ba3('0x3a')]=_0x48b3b7[_0x4ba3('0x3a')][_0x4ba3('0x3c')]?_0x48b3b7['attributes']:_0x27444b[_0x4ba3('0x39')];if(!_0x2cb5d5['query'][_0x4ba3('0x3d')](_0x4ba3('0x3e'))){_0x48b3b7[_0x4ba3('0x1f')]=qs[_0x4ba3('0x1f')](_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x1f')]);_0x48b3b7['offset']=qs[_0x4ba3('0x1e')](_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x1e')]);}_0x48b3b7['order']=qs[_0x4ba3('0x3f')](_0x2cb5d5[_0x4ba3('0x35')]['sort']);_0x48b3b7[_0x4ba3('0x40')]=qs['filters'](_['pick'](_0x2cb5d5[_0x4ba3('0x35')],_0x27444b[_0x4ba3('0x37')]),_0x24d8fc);if(_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x41')]){_0x48b3b7[_0x4ba3('0x40')]=_['merge'](_0x48b3b7[_0x4ba3('0x40')],{'$or':_[_0x4ba3('0x2f')](_0x24d8fc,function(_0x46d2ca){if(_0x46d2ca[_0x4ba3('0x33')]!==_0x4ba3('0x42')){var _0x2acc92={};_0x2acc92[_0x46d2ca[_0x4ba3('0x2c')]]={'$like':'%'+_0x2cb5d5[_0x4ba3('0x35')]['filter']+'%'};return _0x2acc92;}})});}_0x48b3b7=_[_0x4ba3('0x43')]({},_0x48b3b7,_0x2cb5d5[_0x4ba3('0x44')]);var _0x3cb07f={'where':_0x48b3b7[_0x4ba3('0x40')]};return db[_0x4ba3('0x30')][_0x4ba3('0x21')](_0x3cb07f)[_0x4ba3('0x26')](function(_0xdcc2a2){_0x28f36c[_0x4ba3('0x21')]=_0xdcc2a2;if(_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x45')]){_0x48b3b7[_0x4ba3('0x46')]=[{'all':!![]}];}return db[_0x4ba3('0x30')][_0x4ba3('0x47')](_0x48b3b7);})['then'](function(_0x5af671){_0x28f36c['rows']=_0x5af671;return _0x28f36c;})['then'](respondWithFilteredResult(_0x11f88f,_0x48b3b7))['catch'](handleError(_0x11f88f,null));};exports[_0x4ba3('0x48')]=function(_0x5c4659,_0x29e74d){var _0x5567c7={'raw':!![],'where':{'id':_0x5c4659[_0x4ba3('0x49')]['id']}},_0x53d6eb={};_0x53d6eb[_0x4ba3('0x39')]=_[_0x4ba3('0x36')](db[_0x4ba3('0x30')]['rawAttributes']);_0x53d6eb[_0x4ba3('0x35')]=_['keys'](_0x5c4659[_0x4ba3('0x35')]);_0x53d6eb['filters']=_[_0x4ba3('0x38')](_0x53d6eb[_0x4ba3('0x39')],_0x53d6eb[_0x4ba3('0x35')]);_0x5567c7[_0x4ba3('0x3a')]=_[_0x4ba3('0x38')](_0x53d6eb[_0x4ba3('0x39')],qs[_0x4ba3('0x3b')](_0x5c4659['query'][_0x4ba3('0x3b')]));_0x5567c7[_0x4ba3('0x3a')]=_0x5567c7[_0x4ba3('0x3a')][_0x4ba3('0x3c')]?_0x5567c7[_0x4ba3('0x3a')]:_0x53d6eb['model'];if(_0x5c4659['query'][_0x4ba3('0x45')]){_0x5567c7[_0x4ba3('0x46')]=[{'all':!![]}];}_0x5567c7=_[_0x4ba3('0x43')]({},_0x5567c7,_0x5c4659['options']);return db[_0x4ba3('0x30')][_0x4ba3('0x4a')](_0x5567c7)[_0x4ba3('0x26')](handleEntityNotFound(_0x29e74d,null))['then'](respondWithResult(_0x29e74d,null))['catch'](handleError(_0x29e74d,null));};exports[_0x4ba3('0x4b')]=function(_0x482a83,_0x439acf){return db[_0x4ba3('0x30')][_0x4ba3('0x4b')](_0x482a83[_0x4ba3('0x4c')],{})[_0x4ba3('0x26')](function(_0x213eb0){var _0x590739=_0x482a83[_0x4ba3('0x4d')][_0x4ba3('0x28')]({'plain':!![]});if(!_0x590739)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x590739[_0x4ba3('0x4e')]===_0x4ba3('0x4d')){var _0x156c2d=_0x213eb0[_0x4ba3('0x28')]({'plain':!![]});var _0x360472='Reports';return db[_0x4ba3('0x4f')][_0x4ba3('0x4a')]({'where':{'name':_0x360472,'userProfileId':_0x590739['userProfileId']},'raw':!![]})[_0x4ba3('0x26')](function(_0x19d70f){if(_0x19d70f&&_0x19d70f[_0x4ba3('0x50')]===0x0){return db[_0x4ba3('0x2a')][_0x4ba3('0x4b')]({'name':_0x156c2d[_0x4ba3('0x2c')],'resourceId':_0x156c2d['id'],'type':_0x4ba3('0x29'),'sectionId':_0x19d70f['id']},{})[_0x4ba3('0x26')](function(){return _0x213eb0;});}else{return _0x213eb0;}})[_0x4ba3('0x51')](function(_0x428a27){logger[_0x4ba3('0x2b')](_0x4ba3('0x52'),_0x428a27);throw _0x428a27;});}return _0x213eb0;})[_0x4ba3('0x26')](respondWithResult(_0x439acf,0xc9))[_0x4ba3('0x51')](handleError(_0x439acf,null));};exports[_0x4ba3('0x53')]=function(_0x48a3d4,_0x5e7ed5){if(_0x48a3d4['body']['id']){delete _0x48a3d4[_0x4ba3('0x4c')]['id'];}return db[_0x4ba3('0x30')][_0x4ba3('0x4a')]({'where':{'id':_0x48a3d4[_0x4ba3('0x49')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x5e7ed5,null))['then'](saveUpdates(_0x48a3d4[_0x4ba3('0x4c')],null))[_0x4ba3('0x26')](respondWithResult(_0x5e7ed5,null))[_0x4ba3('0x51')](handleError(_0x5e7ed5,null));};exports[_0x4ba3('0x27')]=function(_0x5359d1,_0x1e83fb){return db[_0x4ba3('0x30')][_0x4ba3('0x4a')]({'where':{'id':_0x5359d1[_0x4ba3('0x49')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x1e83fb,null))[_0x4ba3('0x26')](removeEntity(_0x1e83fb,null))[_0x4ba3('0x51')](handleError(_0x1e83fb,null));};exports[_0x4ba3('0x54')]=function(_0x328314,_0x4fa64d){var _0x20c849=0xa;var _0x42bb4b=[_0x4ba3('0x55'),_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x40827a={'SUM':_0x4ba3('0x59'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':_0x4ba3('0x5b'),'MIN':_0x4ba3('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x4ba3('0x5e')};var _0x4cc10a={'SEC_TO_TIME':_0x4ba3('0x5f'),'DATE':_0x4ba3('0x60'),'HOUR':_0x4ba3('0x61'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x4ba3('0x62')};var _0xaef1b=function(_0x2a48fe){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),'IS\x20NOT\x20NULL',_0x4ba3('0x65'),_0x4ba3('0x66')],_0x2a48fe);};var _0x34cc21=function(_0x469ef0){if(!_0x469ef0||!_0x469ef0[_0x4ba3('0x67')][_0x4ba3('0x3c')]){return'';}for(var _0x3fdf7f='(',_0x38699e=0x0;_0x38699e<_0x469ef0[_0x4ba3('0x67')][_0x4ba3('0x3c')];_0x38699e+=0x1){_0x38699e>0x0&&(_0x3fdf7f+='\x20'+_0x469ef0[_0x4ba3('0x68')]+'\x20');_0x3fdf7f+=_0x469ef0['rules'][_0x38699e][_0x4ba3('0x69')]?_0x34cc21(_0x469ef0[_0x4ba3('0x67')][_0x38699e]['group']):_0x469ef0['rules'][_0x38699e][_0x4ba3('0x6a')]+'\x20'+_0x469ef0[_0x4ba3('0x67')][_0x38699e]['condition']+(_0xaef1b(_0x469ef0[_0x4ba3('0x67')][_0x38699e][_0x4ba3('0x6b')])?'\x20'+_0x469ef0[_0x4ba3('0x67')][_0x38699e]['value']:'');}return _0x3fdf7f+')';};var _0x1f5815={'where':{'id':_0x328314['params']['id']}},_0x46224,_0x1af489,_0x11209b,_0x24a75a,_0x3a4838;_0x1f5815=_[_0x4ba3('0x43')]({},_0x1f5815,_0x328314[_0x4ba3('0x44')]);return db[_0x4ba3('0x30')]['find'](_0x1f5815)[_0x4ba3('0x26')](function(_0x2f8bcc){if(_0x2f8bcc){_0x46224=_0x2f8bcc;return _0x2f8bcc[_0x4ba3('0x6c')]();}return null;})[_0x4ba3('0x26')](function(_0x21c8b1){if(_0x21c8b1){if(!_0x21c8b1[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1af489=_0x21c8b1;return db['AnalyticMetric'][_0x4ba3('0x47')]({'raw':!![]});}return null;})['then'](function(_0x13ee2c){if(_0x13ee2c){_0x11209b=_[_0x4ba3('0x6f')](_0x13ee2c,'id');var _0x442d66;var _0x5c7fc2=squel[_0x4ba3('0x70')]();_0x5c7fc2[_0x4ba3('0x71')](_0x46224[_0x4ba3('0x72')]);for(var _0x5baf26=0x0;_0x5baf26<_0x1af489[_0x4ba3('0x3c')];_0x5baf26+=0x1){_0x442d66=_0x1af489[_0x5baf26]['MetricId']?_0x11209b[_0x1af489[_0x5baf26][_0x4ba3('0x73')]][_0x4ba3('0x74')]:_0x1af489[_0x5baf26]['field'];_0x442d66=_0x1af489[_0x5baf26][_0x4ba3('0x75')]?_[_0x4ba3('0x76')](_0x40827a[_0x1af489[_0x5baf26][_0x4ba3('0x75')]],'%s',_0x442d66):_0x442d66;_0x442d66=_0x1af489[_0x5baf26][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x4cc10a[_0x1af489[_0x5baf26][_0x4ba3('0x77')]],'%s',_0x442d66):_0x442d66;if(_0x1af489[_0x5baf26][_0x4ba3('0x78')]){_0x5c7fc2[_0x4ba3('0x69')](_0x442d66);}_0x1af489[_0x5baf26][_0x4ba3('0x79')]&&_0x5c7fc2['order'](_0x442d66,_0x1af489[_0x5baf26][_0x4ba3('0x79')]===_0x4ba3('0x7a')?![]:!![]);_0x5c7fc2[_0x4ba3('0x6a')](_0x442d66,_0x1af489[_0x5baf26][_0x4ba3('0x7b')]||_0x442d66);}if(_0x46224[_0x4ba3('0x7c')]){_0x46224[_0x4ba3('0x7c')]=JSON[_0x4ba3('0x7d')](_0x46224[_0x4ba3('0x7c')]);for(var _0x365d94=0x0;_0x365d94<_0x46224[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x365d94+=0x1){if(_0x46224[_0x4ba3('0x7c')][_0x365d94]['type']&&_[_0x4ba3('0x63')](_0x42bb4b,_0x46224[_0x4ba3('0x7c')][_0x365d94]['type'])&&_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7e')]&&_0x46224['joins'][_0x365d94]['foreignTable']&&_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7f')]){_0x5c7fc2[_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x33')]](_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x80')],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x46224['table'],_0x46224[_0x4ba3('0x7c')][_0x365d94]['parentKey'],_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x80')],_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7f')]));}}}if(_0x46224[_0x4ba3('0x82')]){_0x46224[_0x4ba3('0x82')]=JSON[_0x4ba3('0x7d')](_0x46224[_0x4ba3('0x82')]);_0x5c7fc2['where'](_0x34cc21(_0x46224[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x3a4838=_0x5c7fc2[_0x4ba3('0x83')]();_0x5c7fc2['limit'](_0x20c849);_0x5c7fc2[_0x4ba3('0x1e')](0x0);logger[_0x4ba3('0x84')](_0x4ba3('0x85'),_0x5c7fc2[_0x4ba3('0x86')]());return dbH[_0x4ba3('0x87')][_0x4ba3('0x35')](_0x5c7fc2[_0x4ba3('0x86')](),{'type':dbH['sequelize']['QueryTypes'][_0x4ba3('0x88')]});}})['then'](respondWithResult(_0x4fa64d,null))[_0x4ba3('0x51')](handleError(_0x4fa64d,null));};function runReport(_0x15508f,_0x108679,_0x20f7db){var _0x5a3c63=_0x108679['name'];var _0x2d16e5=0xa;var _0x2b2132=['join',_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x1e8232={'SUM':_0x4ba3('0x59'),'COUNT':_0x4ba3('0x89'),'COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':'MAX(%s)','MIN':_0x4ba3('0x5c'),'AVG':_0x4ba3('0x8a'),'GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x4ba3('0x5e')};var _0x13dbc4={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x4ba3('0x60'),'HOUR':_0x4ba3('0x61'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5aa412=function(_0x4ec70e){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),_0x4ba3('0x8b'),_0x4ba3('0x65'),_0x4ba3('0x66')],_0x4ec70e);};var _0x333a97=function(_0x30d7a9){if(!_0x30d7a9||!_0x30d7a9['rules'][_0x4ba3('0x3c')]){return'';}for(var _0x4cd4a2='(',_0x31a725=0x0;_0x31a725<_0x30d7a9['rules'][_0x4ba3('0x3c')];_0x31a725+=0x1){_0x31a725>0x0&&(_0x4cd4a2+='\x20'+_0x30d7a9[_0x4ba3('0x68')]+'\x20');_0x4cd4a2+=_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x69')]?_0x333a97(_0x30d7a9[_0x4ba3('0x67')][_0x31a725]['group']):_0x30d7a9['rules'][_0x31a725][_0x4ba3('0x6a')]+'\x20'+_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x6b')]+(_0x5aa412(_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x6b')])?'\x20'+_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x8c')]:'');}return _0x4cd4a2+')';};var _0x3d8606={'where':{'id':_0x15508f['id']}},_0x2d00e3,_0x35441e,_0x217ea4,_0x40dcee,_0x5ea9d0;_0x3d8606=_[_0x4ba3('0x43')]({},_0x3d8606,_0x20f7db);return db['AnalyticDefaultReport'][_0x4ba3('0x4a')](_0x3d8606)[_0x4ba3('0x26')](function(_0x17b970){if(_0x17b970){_0x2d00e3=_0x17b970;return _0x17b970[_0x4ba3('0x6c')]();}return null;})['then'](function(_0x2a2dc2){if(_0x2a2dc2){if(!_0x2a2dc2[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x35441e=_0x2a2dc2;return db['AnalyticMetric'][_0x4ba3('0x47')]({'raw':!![]});}return null;})[_0x4ba3('0x26')](function(_0x3188c8){if(_0x3188c8){_0x217ea4=_['keyBy'](_0x3188c8,'id');var _0x2f793a;var _0x1194a5=squel[_0x4ba3('0x70')]();_0x1194a5[_0x4ba3('0x71')](_0x2d00e3[_0x4ba3('0x72')]);for(var _0x1e2134=0x0;_0x1e2134<_0x35441e['length'];_0x1e2134+=0x1){_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x73')]?_0x217ea4[_0x35441e[_0x1e2134]['MetricId']][_0x4ba3('0x74')]:_0x35441e[_0x1e2134][_0x4ba3('0x6a')];_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x75')]?_[_0x4ba3('0x76')](_0x1e8232[_0x35441e[_0x1e2134]['function']],'%s',_0x2f793a):_0x2f793a;_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x13dbc4[_0x35441e[_0x1e2134]['format']],'%s',_0x2f793a):_0x2f793a;if(_0x35441e[_0x1e2134][_0x4ba3('0x78')]){_0x1194a5['group'](_0x2f793a);}_0x35441e[_0x1e2134][_0x4ba3('0x79')]&&_0x1194a5[_0x4ba3('0x8d')](_0x2f793a,_0x35441e[_0x1e2134][_0x4ba3('0x79')]===_0x4ba3('0x7a')?![]:!![]);_0x1194a5[_0x4ba3('0x6a')](_0x2f793a,_0x35441e[_0x1e2134]['alias']||_0x2f793a);}if(_0x2d00e3['joins']){_0x2d00e3[_0x4ba3('0x7c')]=JSON[_0x4ba3('0x7d')](_0x2d00e3[_0x4ba3('0x7c')]);for(var _0x56244e=0x0;_0x56244e<_0x2d00e3[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x56244e+=0x1){if(_0x2d00e3['joins'][_0x56244e][_0x4ba3('0x33')]&&_[_0x4ba3('0x63')](_0x2b2132,_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x33')])&&_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x7e')]&&_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')]&&_0x2d00e3['joins'][_0x56244e][_0x4ba3('0x7f')]){_0x1194a5[_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x33')]](_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x2d00e3[_0x4ba3('0x72')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x7e')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e]['foreignKey']));}}}if(_0x2d00e3['conditions']){_0x2d00e3[_0x4ba3('0x82')]=JSON[_0x4ba3('0x7d')](_0x2d00e3[_0x4ba3('0x82')]);_0x1194a5[_0x4ba3('0x40')](_0x333a97(_0x2d00e3[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x5ea9d0=_0x1194a5[_0x4ba3('0x83')]();_0x1194a5['limit'](_0x2d16e5);_0x1194a5['offset'](0x0);return;}})[_0x4ba3('0x26')](function(){if(_0x108679[_0x4ba3('0x8e')]==='web'){return null;}var _0x4fb6b5=_['merge'](_0x108679,{'name':_0x108679['fullPath']||_0x108679[_0x4ba3('0x2c')]||_0x2d00e3[_0x4ba3('0x2c')],'basename':_0x5a3c63,'savename':util[_0x4ba3('0x77')](_0x4ba3('0x8f'),_0x108679[_0x4ba3('0x2c')]||_0x2d00e3['name'],require(_0x4ba3('0x90'))[_0x4ba3('0x91')](0x4),_0x108679[_0x4ba3('0x8e')]||'csv'),'reportId':_0x2d00e3['id'],'reportType':'default'});return db['AnalyticExtractedReport']['create'](_0x4fb6b5,{'raw':!![]});})[_0x4ba3('0x26')](function(_0x17d501){if(_0x2d00e3[_0x4ba3('0x72')]===_0x4ba3('0x92')){_0x5ea9d0[_0x4ba3('0x40')](_0x2d00e3['table']+_0x4ba3('0x93'),_0x108679['startDate'],_0x108679[_0x4ba3('0x94')]);}else{_0x5ea9d0[_0x4ba3('0x40')](_0x2d00e3[_0x4ba3('0x72')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x108679[_0x4ba3('0x95')],_0x108679[_0x4ba3('0x94')]);}if(_0x17d501){logger[_0x4ba3('0x96')](_0x4ba3('0x97'),_0x5ea9d0['toString']());require('child_process')[_0x4ba3('0x98')](path[_0x4ba3('0x55')](__dirname,'../../components/export/',_0x17d501[_0x4ba3('0x8e')]),[_0x17d501['id'],_0x5ea9d0['toString'](),path['join'](__dirname,'../../files/reports',_0x17d501['savename']),_0x5a3c63]);return _0x17d501;}else{var _0x2d2ca3=squel[_0x4ba3('0x70')]();_0x2d2ca3[_0x4ba3('0x71')]('('+_0x5ea9d0[_0x4ba3('0x86')]()+')',_0x4ba3('0x99'));_0x2d2ca3['field']('COUNT(*)',_0x4ba3('0x21'));_0x5ea9d0['limit'](_0x108679[_0x4ba3('0x1f')]||_0x2d16e5);_0x5ea9d0[_0x4ba3('0x1e')](_0x108679[_0x4ba3('0x1e')]||0x0);return dbH['sequelize'][_0x4ba3('0x35')](_0x2d2ca3[_0x4ba3('0x86')](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')][_0x4ba3('0x88')]})[_0x4ba3('0x26')](function(_0xc938c){if(!_0xc938c[_0x4ba3('0x3c')]){_0x40dcee=0x0;}else{_0x40dcee=_0xc938c[0x0][_0x4ba3('0x21')]||0x0;}return dbH['sequelize']['query'](_0x5ea9d0[_0x4ba3('0x86')](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')][_0x4ba3('0x88')]});})[_0x4ba3('0x26')](function(_0xd97c26){return{'rows':_0xd97c26||[],'count':_0x40dcee};});}});}exports['run']=function(_0x1fbdc7,_0x9e45ec){return runReport(_0x1fbdc7['params'],_0x1fbdc7[_0x4ba3('0x35')],_0x1fbdc7[_0x4ba3('0x44')])[_0x4ba3('0x26')](respondWithResult(_0x9e45ec,null))[_0x4ba3('0x51')](handleError(_0x9e45ec,null));};exports[_0x4ba3('0x9b')]=runReport;exports[_0x4ba3('0x35')]=function(_0xddfb0c,_0x41c531){var _0x25bf75=0xa;var _0x18bd77=[_0x4ba3('0x55'),_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x2e812b={'SUM':'SUM(%s)','COUNT':_0x4ba3('0x89'),'COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':'MAX(%s)','MIN':_0x4ba3('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':_0x4ba3('0x9c'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5dc74f={'SEC_TO_TIME':_0x4ba3('0x5f'),'DATE':'DATE(%s)','HOUR':_0x4ba3('0x61'),'ROUND':_0x4ba3('0x9d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1590f0=function(_0x5efab9){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),_0x4ba3('0x8b'),'IS\x20EMPTY',_0x4ba3('0x66')],_0x5efab9);};var _0x4d3262=function(_0x4ad4d3){if(!_0x4ad4d3||!_0x4ad4d3[_0x4ba3('0x67')]['length']){return'';}for(var _0x4529a3='(',_0x9b9c64=0x0;_0x9b9c64<_0x4ad4d3[_0x4ba3('0x67')]['length'];_0x9b9c64+=0x1){_0x9b9c64>0x0&&(_0x4529a3+='\x20'+_0x4ad4d3['operator']+'\x20');_0x4529a3+=_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x69')]?_0x4d3262(_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x69')]):_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64]['field']+'\x20'+_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x6b')]+(_0x1590f0(_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x6b')])?'\x20'+_0x4ad4d3['rules'][_0x9b9c64][_0x4ba3('0x8c')]:'');}return _0x4529a3+')';};var _0x3073c5={'where':{'id':_0xddfb0c[_0x4ba3('0x49')]['id']}},_0x3d1c11,_0xa41747,_0x25c92c,_0x422a8d,_0x225746;_0x3073c5=_[_0x4ba3('0x43')]({},_0x3073c5,_0xddfb0c[_0x4ba3('0x44')]);return db[_0x4ba3('0x30')]['find'](_0x3073c5)[_0x4ba3('0x26')](function(_0x3db4c2){if(_0x3db4c2){_0x3d1c11=_0x3db4c2;return _0x3db4c2['getFields']();}return null;})[_0x4ba3('0x26')](function(_0x4a8449){if(_0x4a8449){if(!_0x4a8449[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))](_0x4ba3('0x9e'),0x193);}_0xa41747=_0x4a8449;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x4ba3('0x26')](function(_0xfaf98a){if(_0xfaf98a){_0x25c92c=_['keyBy'](_0xfaf98a,'id');var _0x30c904;var _0x267801=squel[_0x4ba3('0x70')]();_0x267801[_0x4ba3('0x71')](_0x3d1c11['table']);for(var _0x1bae1b=0x0;_0x1bae1b<_0xa41747[_0x4ba3('0x3c')];_0x1bae1b+=0x1){_0x30c904=_0xa41747[_0x1bae1b][_0x4ba3('0x73')]?_0x25c92c[_0xa41747[_0x1bae1b][_0x4ba3('0x73')]]['metric']:_0xa41747[_0x1bae1b][_0x4ba3('0x6a')];_0x30c904=_0xa41747[_0x1bae1b]['function']?_[_0x4ba3('0x76')](_0x2e812b[_0xa41747[_0x1bae1b][_0x4ba3('0x75')]],'%s',_0x30c904):_0x30c904;_0x30c904=_0xa41747[_0x1bae1b][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x5dc74f[_0xa41747[_0x1bae1b]['format']],'%s',_0x30c904):_0x30c904;if(_0xa41747[_0x1bae1b]['groupBy']){_0x267801[_0x4ba3('0x69')](_0x30c904);}_0xa41747[_0x1bae1b][_0x4ba3('0x79')]&&_0x267801[_0x4ba3('0x8d')](_0x30c904,_0xa41747[_0x1bae1b]['orderBy']==='DESC'?![]:!![]);_0x267801[_0x4ba3('0x6a')](_0x30c904,_0xa41747[_0x1bae1b][_0x4ba3('0x7b')]||_0x30c904);}if(_0x3d1c11[_0x4ba3('0x7c')]){_0x3d1c11[_0x4ba3('0x7c')]=JSON['parse'](_0x3d1c11[_0x4ba3('0x7c')]);for(var _0x2f4966=0x0;_0x2f4966<_0x3d1c11[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x2f4966+=0x1){if(_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')]&&_[_0x4ba3('0x63')](_0x18bd77,_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')])&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7e')]&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x80')]&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7f')]){_0x267801[_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')]](_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966]['foreignTable'],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x3d1c11[_0x4ba3('0x72')],_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7e')],_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966]['foreignTable'],_0x3d1c11['joins'][_0x2f4966][_0x4ba3('0x7f')]));}}}if(_0x3d1c11[_0x4ba3('0x82')]){_0x3d1c11[_0x4ba3('0x82')]=JSON['parse'](_0x3d1c11[_0x4ba3('0x82')]);_0x267801[_0x4ba3('0x40')](_0x4d3262(_0x3d1c11[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x225746=_0x267801[_0x4ba3('0x83')]();_0x267801[_0x4ba3('0x1f')](_0x25bf75);_0x267801[_0x4ba3('0x1e')](0x0);logger[_0x4ba3('0x84')](_0x4ba3('0x85'),_0x267801['toString']());return dbH[_0x4ba3('0x87')]['query'](_0x267801['toString'](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')]['SELECT']});}})[_0x4ba3('0x26')](function(){return{'sql':_0x225746[_0x4ba3('0x86')]()};})[_0x4ba3('0x26')](respondWithResult(_0x41c531,null))[_0x4ba3('0x51')](handleError(_0x41c531,null));};
\ No newline at end of file
+var _0xba34=['save','then','destroy','get','DefaultReports','UserProfileResource','error','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','show','params','find','create','body','user','role','UserProfileSection','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','toString','sequelize','SELECT','COUNT(%s)','AVG(%s)','IS\x20NOT\x20NULL','value','order','output','%s-%s.%s','randomstring','generate','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','fork','countTable','QueryTypes','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','ROUND(%s)','Please\x20insert\x20at\x20least\x20one\x20field','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject'];(function(_0x531a19,_0x43e019){var _0x4845d2=function(_0x4c9b62){while(--_0x4c9b62){_0x531a19['push'](_0x531a19['shift']());}};_0x4845d2(++_0x43e019);}(_0xba34,0x119));var _0x4ba3=function(_0x5b0781,_0x2a814c){_0x5b0781=_0x5b0781-0x0;var _0x2ef25b=_0xba34[_0x5b0781];return _0x2ef25b;};'use strict';var emlformat=require(_0x4ba3('0x0'));var rimraf=require(_0x4ba3('0x1'));var zipdir=require(_0x4ba3('0x2'));var jsonpatch=require(_0x4ba3('0x3'));var rp=require(_0x4ba3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4ba3('0x5'));var path=require(_0x4ba3('0x6'));var sox=require(_0x4ba3('0x7'));var csv=require(_0x4ba3('0x8'));var ejs=require(_0x4ba3('0x9'));var fs=require('fs');var fs_extra=require(_0x4ba3('0xa'));var _=require(_0x4ba3('0xb'));var squel=require('squel');var crypto=require(_0x4ba3('0xc'));var jsforce=require(_0x4ba3('0xd'));var deskjs=require(_0x4ba3('0xe'));var toCsv=require(_0x4ba3('0x8'));var querystring=require(_0x4ba3('0xf'));var Papa=require(_0x4ba3('0x10'));var Redis=require(_0x4ba3('0x11'));var authService=require(_0x4ba3('0x12'));var qs=require(_0x4ba3('0x13'));var as=require(_0x4ba3('0x14'));var hardwareService=require(_0x4ba3('0x15'));var logger=require('../../config/logger')(_0x4ba3('0x16'));var utils=require(_0x4ba3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4ba3('0x18'));var db=require('../../mysqldb')['db'];var dbH=require(_0x4ba3('0x19'))['dbH'];function respondWithStatusCode(_0x256f02,_0x4419b4){_0x4419b4=_0x4419b4||0xcc;return function(_0x29e498){if(_0x29e498){return _0x256f02[_0x4ba3('0x1a')](_0x4419b4);}return _0x256f02[_0x4ba3('0x1b')](_0x4419b4)[_0x4ba3('0x1c')]();};}function respondWithResult(_0x3a74f7,_0x12ac90){_0x12ac90=_0x12ac90||0xc8;return function(_0x1dec48){if(_0x1dec48){return _0x3a74f7[_0x4ba3('0x1b')](_0x12ac90)[_0x4ba3('0x1d')](_0x1dec48);}};}function respondWithFilteredResult(_0x301359,_0x29a9d1){return function(_0x25f584){if(_0x25f584){var _0x40e75b=typeof _0x29a9d1[_0x4ba3('0x1e')]==='undefined'&&typeof _0x29a9d1[_0x4ba3('0x1f')]===_0x4ba3('0x20');var _0x5ff7ce=_0x25f584[_0x4ba3('0x21')];var _0x556290=_0x40e75b?0x0:_0x29a9d1[_0x4ba3('0x1e')];var _0xe4eff9=_0x40e75b?_0x25f584[_0x4ba3('0x21')]:_0x29a9d1[_0x4ba3('0x1e')]+_0x29a9d1[_0x4ba3('0x1f')];var _0x125944;if(_0xe4eff9>=_0x5ff7ce){_0xe4eff9=_0x5ff7ce;_0x125944=0xc8;}else{_0x125944=0xce;}_0x301359['status'](_0x125944);return _0x301359['set'](_0x4ba3('0x22'),_0x556290+'-'+_0xe4eff9+'/'+_0x5ff7ce)['json'](_0x25f584);}return null;};}function patchUpdates(_0x18dff5){return function(_0x163967){try{jsonpatch[_0x4ba3('0x23')](_0x163967,_0x18dff5,!![]);}catch(_0xbc7023){return BPromise[_0x4ba3('0x24')](_0xbc7023);}return _0x163967[_0x4ba3('0x25')]();};}function saveUpdates(_0x4a0823,_0x143c78){return function(_0x1f87e1){if(_0x1f87e1){return _0x1f87e1['update'](_0x4a0823)[_0x4ba3('0x26')](function(_0x4ffe39){return _0x4ffe39;});}return null;};}function removeEntity(_0x1ae4de,_0x18abb3){return function(_0x11a917){if(_0x11a917){return _0x11a917[_0x4ba3('0x27')]()[_0x4ba3('0x26')](function(){var _0xe29a49=_0x11a917[_0x4ba3('0x28')]({'plain':!![]});var _0xe1f7d2=_0x4ba3('0x29');return db[_0x4ba3('0x2a')]['destroy']({'where':{'type':_0xe1f7d2,'resourceId':_0xe29a49['id']}})[_0x4ba3('0x26')](function(){return _0x11a917;});})[_0x4ba3('0x26')](function(){_0x1ae4de[_0x4ba3('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x10537e,_0x1fe5e2){return function(_0x44d78c){if(!_0x44d78c){_0x10537e['sendStatus'](0x194);}return _0x44d78c;};}function handleError(_0x10cae6,_0x843276){_0x843276=_0x843276||0x1f4;return function(_0x34ecb4){logger[_0x4ba3('0x2b')](_0x34ecb4['stack']);if(_0x34ecb4['name']){delete _0x34ecb4[_0x4ba3('0x2c')];}_0x10cae6[_0x4ba3('0x1b')](_0x843276)[_0x4ba3('0x2d')](_0x34ecb4);};}exports[_0x4ba3('0x2e')]=function(_0x2cb5d5,_0x11f88f){var _0x48b3b7={},_0x27444b={},_0x28f36c={'count':0x0,'rows':[]};var _0x24d8fc=_[_0x4ba3('0x2f')](db[_0x4ba3('0x30')][_0x4ba3('0x31')],function(_0x457236){return{'name':_0x457236[_0x4ba3('0x32')],'type':_0x457236[_0x4ba3('0x33')][_0x4ba3('0x34')]};});_0x27444b['model']=_['map'](_0x24d8fc,'name');_0x27444b[_0x4ba3('0x35')]=_[_0x4ba3('0x36')](_0x2cb5d5[_0x4ba3('0x35')]);_0x27444b[_0x4ba3('0x37')]=_[_0x4ba3('0x38')](_0x27444b[_0x4ba3('0x39')],_0x27444b[_0x4ba3('0x35')]);_0x48b3b7[_0x4ba3('0x3a')]=_[_0x4ba3('0x38')](_0x27444b[_0x4ba3('0x39')],qs[_0x4ba3('0x3b')](_0x2cb5d5[_0x4ba3('0x35')]['fields']));_0x48b3b7[_0x4ba3('0x3a')]=_0x48b3b7[_0x4ba3('0x3a')][_0x4ba3('0x3c')]?_0x48b3b7['attributes']:_0x27444b[_0x4ba3('0x39')];if(!_0x2cb5d5['query'][_0x4ba3('0x3d')](_0x4ba3('0x3e'))){_0x48b3b7[_0x4ba3('0x1f')]=qs[_0x4ba3('0x1f')](_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x1f')]);_0x48b3b7['offset']=qs[_0x4ba3('0x1e')](_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x1e')]);}_0x48b3b7['order']=qs[_0x4ba3('0x3f')](_0x2cb5d5[_0x4ba3('0x35')]['sort']);_0x48b3b7[_0x4ba3('0x40')]=qs['filters'](_['pick'](_0x2cb5d5[_0x4ba3('0x35')],_0x27444b[_0x4ba3('0x37')]),_0x24d8fc);if(_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x41')]){_0x48b3b7[_0x4ba3('0x40')]=_['merge'](_0x48b3b7[_0x4ba3('0x40')],{'$or':_[_0x4ba3('0x2f')](_0x24d8fc,function(_0x46d2ca){if(_0x46d2ca[_0x4ba3('0x33')]!==_0x4ba3('0x42')){var _0x2acc92={};_0x2acc92[_0x46d2ca[_0x4ba3('0x2c')]]={'$like':'%'+_0x2cb5d5[_0x4ba3('0x35')]['filter']+'%'};return _0x2acc92;}})});}_0x48b3b7=_[_0x4ba3('0x43')]({},_0x48b3b7,_0x2cb5d5[_0x4ba3('0x44')]);var _0x3cb07f={'where':_0x48b3b7[_0x4ba3('0x40')]};return db[_0x4ba3('0x30')][_0x4ba3('0x21')](_0x3cb07f)[_0x4ba3('0x26')](function(_0xdcc2a2){_0x28f36c[_0x4ba3('0x21')]=_0xdcc2a2;if(_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x45')]){_0x48b3b7[_0x4ba3('0x46')]=[{'all':!![]}];}return db[_0x4ba3('0x30')][_0x4ba3('0x47')](_0x48b3b7);})['then'](function(_0x5af671){_0x28f36c['rows']=_0x5af671;return _0x28f36c;})['then'](respondWithFilteredResult(_0x11f88f,_0x48b3b7))['catch'](handleError(_0x11f88f,null));};exports[_0x4ba3('0x48')]=function(_0x5c4659,_0x29e74d){var _0x5567c7={'raw':!![],'where':{'id':_0x5c4659[_0x4ba3('0x49')]['id']}},_0x53d6eb={};_0x53d6eb[_0x4ba3('0x39')]=_[_0x4ba3('0x36')](db[_0x4ba3('0x30')]['rawAttributes']);_0x53d6eb[_0x4ba3('0x35')]=_['keys'](_0x5c4659[_0x4ba3('0x35')]);_0x53d6eb['filters']=_[_0x4ba3('0x38')](_0x53d6eb[_0x4ba3('0x39')],_0x53d6eb[_0x4ba3('0x35')]);_0x5567c7[_0x4ba3('0x3a')]=_[_0x4ba3('0x38')](_0x53d6eb[_0x4ba3('0x39')],qs[_0x4ba3('0x3b')](_0x5c4659['query'][_0x4ba3('0x3b')]));_0x5567c7[_0x4ba3('0x3a')]=_0x5567c7[_0x4ba3('0x3a')][_0x4ba3('0x3c')]?_0x5567c7[_0x4ba3('0x3a')]:_0x53d6eb['model'];if(_0x5c4659['query'][_0x4ba3('0x45')]){_0x5567c7[_0x4ba3('0x46')]=[{'all':!![]}];}_0x5567c7=_[_0x4ba3('0x43')]({},_0x5567c7,_0x5c4659['options']);return db[_0x4ba3('0x30')][_0x4ba3('0x4a')](_0x5567c7)[_0x4ba3('0x26')](handleEntityNotFound(_0x29e74d,null))['then'](respondWithResult(_0x29e74d,null))['catch'](handleError(_0x29e74d,null));};exports[_0x4ba3('0x4b')]=function(_0x482a83,_0x439acf){return db[_0x4ba3('0x30')][_0x4ba3('0x4b')](_0x482a83[_0x4ba3('0x4c')],{})[_0x4ba3('0x26')](function(_0x213eb0){var _0x590739=_0x482a83[_0x4ba3('0x4d')][_0x4ba3('0x28')]({'plain':!![]});if(!_0x590739)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x590739[_0x4ba3('0x4e')]===_0x4ba3('0x4d')){var _0x156c2d=_0x213eb0[_0x4ba3('0x28')]({'plain':!![]});var _0x360472='Reports';return db[_0x4ba3('0x4f')][_0x4ba3('0x4a')]({'where':{'name':_0x360472,'userProfileId':_0x590739['userProfileId']},'raw':!![]})[_0x4ba3('0x26')](function(_0x19d70f){if(_0x19d70f&&_0x19d70f[_0x4ba3('0x50')]===0x0){return db[_0x4ba3('0x2a')][_0x4ba3('0x4b')]({'name':_0x156c2d[_0x4ba3('0x2c')],'resourceId':_0x156c2d['id'],'type':_0x4ba3('0x29'),'sectionId':_0x19d70f['id']},{})[_0x4ba3('0x26')](function(){return _0x213eb0;});}else{return _0x213eb0;}})[_0x4ba3('0x51')](function(_0x428a27){logger[_0x4ba3('0x2b')](_0x4ba3('0x52'),_0x428a27);throw _0x428a27;});}return _0x213eb0;})[_0x4ba3('0x26')](respondWithResult(_0x439acf,0xc9))[_0x4ba3('0x51')](handleError(_0x439acf,null));};exports[_0x4ba3('0x53')]=function(_0x48a3d4,_0x5e7ed5){if(_0x48a3d4['body']['id']){delete _0x48a3d4[_0x4ba3('0x4c')]['id'];}return db[_0x4ba3('0x30')][_0x4ba3('0x4a')]({'where':{'id':_0x48a3d4[_0x4ba3('0x49')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x5e7ed5,null))['then'](saveUpdates(_0x48a3d4[_0x4ba3('0x4c')],null))[_0x4ba3('0x26')](respondWithResult(_0x5e7ed5,null))[_0x4ba3('0x51')](handleError(_0x5e7ed5,null));};exports[_0x4ba3('0x27')]=function(_0x5359d1,_0x1e83fb){return db[_0x4ba3('0x30')][_0x4ba3('0x4a')]({'where':{'id':_0x5359d1[_0x4ba3('0x49')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x1e83fb,null))[_0x4ba3('0x26')](removeEntity(_0x1e83fb,null))[_0x4ba3('0x51')](handleError(_0x1e83fb,null));};exports[_0x4ba3('0x54')]=function(_0x328314,_0x4fa64d){var _0x20c849=0xa;var _0x42bb4b=[_0x4ba3('0x55'),_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x40827a={'SUM':_0x4ba3('0x59'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':_0x4ba3('0x5b'),'MIN':_0x4ba3('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x4ba3('0x5e')};var _0x4cc10a={'SEC_TO_TIME':_0x4ba3('0x5f'),'DATE':_0x4ba3('0x60'),'HOUR':_0x4ba3('0x61'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x4ba3('0x62')};var _0xaef1b=function(_0x2a48fe){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),'IS\x20NOT\x20NULL',_0x4ba3('0x65'),_0x4ba3('0x66')],_0x2a48fe);};var _0x34cc21=function(_0x469ef0){if(!_0x469ef0||!_0x469ef0[_0x4ba3('0x67')][_0x4ba3('0x3c')]){return'';}for(var _0x3fdf7f='(',_0x38699e=0x0;_0x38699e<_0x469ef0[_0x4ba3('0x67')][_0x4ba3('0x3c')];_0x38699e+=0x1){_0x38699e>0x0&&(_0x3fdf7f+='\x20'+_0x469ef0[_0x4ba3('0x68')]+'\x20');_0x3fdf7f+=_0x469ef0['rules'][_0x38699e][_0x4ba3('0x69')]?_0x34cc21(_0x469ef0[_0x4ba3('0x67')][_0x38699e]['group']):_0x469ef0['rules'][_0x38699e][_0x4ba3('0x6a')]+'\x20'+_0x469ef0[_0x4ba3('0x67')][_0x38699e]['condition']+(_0xaef1b(_0x469ef0[_0x4ba3('0x67')][_0x38699e][_0x4ba3('0x6b')])?'\x20'+_0x469ef0[_0x4ba3('0x67')][_0x38699e]['value']:'');}return _0x3fdf7f+')';};var _0x1f5815={'where':{'id':_0x328314['params']['id']}},_0x46224,_0x1af489,_0x11209b,_0x24a75a,_0x3a4838;_0x1f5815=_[_0x4ba3('0x43')]({},_0x1f5815,_0x328314[_0x4ba3('0x44')]);return db[_0x4ba3('0x30')]['find'](_0x1f5815)[_0x4ba3('0x26')](function(_0x2f8bcc){if(_0x2f8bcc){_0x46224=_0x2f8bcc;return _0x2f8bcc[_0x4ba3('0x6c')]();}return null;})[_0x4ba3('0x26')](function(_0x21c8b1){if(_0x21c8b1){if(!_0x21c8b1[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1af489=_0x21c8b1;return db['AnalyticMetric'][_0x4ba3('0x47')]({'raw':!![]});}return null;})['then'](function(_0x13ee2c){if(_0x13ee2c){_0x11209b=_[_0x4ba3('0x6f')](_0x13ee2c,'id');var _0x442d66;var _0x5c7fc2=squel[_0x4ba3('0x70')]();_0x5c7fc2[_0x4ba3('0x71')](_0x46224[_0x4ba3('0x72')]);for(var _0x5baf26=0x0;_0x5baf26<_0x1af489[_0x4ba3('0x3c')];_0x5baf26+=0x1){_0x442d66=_0x1af489[_0x5baf26]['MetricId']?_0x11209b[_0x1af489[_0x5baf26][_0x4ba3('0x73')]][_0x4ba3('0x74')]:_0x1af489[_0x5baf26]['field'];_0x442d66=_0x1af489[_0x5baf26][_0x4ba3('0x75')]?_[_0x4ba3('0x76')](_0x40827a[_0x1af489[_0x5baf26][_0x4ba3('0x75')]],'%s',_0x442d66):_0x442d66;_0x442d66=_0x1af489[_0x5baf26][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x4cc10a[_0x1af489[_0x5baf26][_0x4ba3('0x77')]],'%s',_0x442d66):_0x442d66;if(_0x1af489[_0x5baf26][_0x4ba3('0x78')]){_0x5c7fc2[_0x4ba3('0x69')](_0x442d66);}_0x1af489[_0x5baf26][_0x4ba3('0x79')]&&_0x5c7fc2['order'](_0x442d66,_0x1af489[_0x5baf26][_0x4ba3('0x79')]===_0x4ba3('0x7a')?![]:!![]);_0x5c7fc2[_0x4ba3('0x6a')](_0x442d66,_0x1af489[_0x5baf26][_0x4ba3('0x7b')]||_0x442d66);}if(_0x46224[_0x4ba3('0x7c')]){_0x46224[_0x4ba3('0x7c')]=JSON[_0x4ba3('0x7d')](_0x46224[_0x4ba3('0x7c')]);for(var _0x365d94=0x0;_0x365d94<_0x46224[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x365d94+=0x1){if(_0x46224[_0x4ba3('0x7c')][_0x365d94]['type']&&_[_0x4ba3('0x63')](_0x42bb4b,_0x46224[_0x4ba3('0x7c')][_0x365d94]['type'])&&_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7e')]&&_0x46224['joins'][_0x365d94]['foreignTable']&&_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7f')]){_0x5c7fc2[_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x33')]](_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x80')],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x46224['table'],_0x46224[_0x4ba3('0x7c')][_0x365d94]['parentKey'],_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x80')],_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7f')]));}}}if(_0x46224[_0x4ba3('0x82')]){_0x46224[_0x4ba3('0x82')]=JSON[_0x4ba3('0x7d')](_0x46224[_0x4ba3('0x82')]);_0x5c7fc2['where'](_0x34cc21(_0x46224[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x3a4838=_0x5c7fc2[_0x4ba3('0x83')]();_0x5c7fc2['limit'](_0x20c849);_0x5c7fc2[_0x4ba3('0x1e')](0x0);logger[_0x4ba3('0x84')](_0x4ba3('0x85'),_0x5c7fc2[_0x4ba3('0x86')]());return dbH[_0x4ba3('0x87')][_0x4ba3('0x35')](_0x5c7fc2[_0x4ba3('0x86')](),{'type':dbH['sequelize']['QueryTypes'][_0x4ba3('0x88')]});}})['then'](respondWithResult(_0x4fa64d,null))[_0x4ba3('0x51')](handleError(_0x4fa64d,null));};function runReport(_0x15508f,_0x108679,_0x20f7db){var _0x5a3c63=_0x108679['name'];var _0x2d16e5=0xa;var _0x2b2132=['join',_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x1e8232={'SUM':_0x4ba3('0x59'),'COUNT':_0x4ba3('0x89'),'COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':'MAX(%s)','MIN':_0x4ba3('0x5c'),'AVG':_0x4ba3('0x8a'),'GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x4ba3('0x5e')};var _0x13dbc4={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x4ba3('0x60'),'HOUR':_0x4ba3('0x61'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5aa412=function(_0x4ec70e){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),_0x4ba3('0x8b'),_0x4ba3('0x65'),_0x4ba3('0x66')],_0x4ec70e);};var _0x333a97=function(_0x30d7a9){if(!_0x30d7a9||!_0x30d7a9['rules'][_0x4ba3('0x3c')]){return'';}for(var _0x4cd4a2='(',_0x31a725=0x0;_0x31a725<_0x30d7a9['rules'][_0x4ba3('0x3c')];_0x31a725+=0x1){_0x31a725>0x0&&(_0x4cd4a2+='\x20'+_0x30d7a9[_0x4ba3('0x68')]+'\x20');_0x4cd4a2+=_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x69')]?_0x333a97(_0x30d7a9[_0x4ba3('0x67')][_0x31a725]['group']):_0x30d7a9['rules'][_0x31a725][_0x4ba3('0x6a')]+'\x20'+_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x6b')]+(_0x5aa412(_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x6b')])?'\x20'+_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x8c')]:'');}return _0x4cd4a2+')';};var _0x3d8606={'where':{'id':_0x15508f['id']}},_0x2d00e3,_0x35441e,_0x217ea4,_0x40dcee,_0x5ea9d0;_0x3d8606=_[_0x4ba3('0x43')]({},_0x3d8606,_0x20f7db);return db['AnalyticDefaultReport'][_0x4ba3('0x4a')](_0x3d8606)[_0x4ba3('0x26')](function(_0x17b970){if(_0x17b970){_0x2d00e3=_0x17b970;return _0x17b970[_0x4ba3('0x6c')]();}return null;})['then'](function(_0x2a2dc2){if(_0x2a2dc2){if(!_0x2a2dc2[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x35441e=_0x2a2dc2;return db['AnalyticMetric'][_0x4ba3('0x47')]({'raw':!![]});}return null;})[_0x4ba3('0x26')](function(_0x3188c8){if(_0x3188c8){_0x217ea4=_['keyBy'](_0x3188c8,'id');var _0x2f793a;var _0x1194a5=squel[_0x4ba3('0x70')]();_0x1194a5[_0x4ba3('0x71')](_0x2d00e3[_0x4ba3('0x72')]);for(var _0x1e2134=0x0;_0x1e2134<_0x35441e['length'];_0x1e2134+=0x1){_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x73')]?_0x217ea4[_0x35441e[_0x1e2134]['MetricId']][_0x4ba3('0x74')]:_0x35441e[_0x1e2134][_0x4ba3('0x6a')];_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x75')]?_[_0x4ba3('0x76')](_0x1e8232[_0x35441e[_0x1e2134]['function']],'%s',_0x2f793a):_0x2f793a;_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x13dbc4[_0x35441e[_0x1e2134]['format']],'%s',_0x2f793a):_0x2f793a;if(_0x35441e[_0x1e2134][_0x4ba3('0x78')]){_0x1194a5['group'](_0x2f793a);}_0x35441e[_0x1e2134][_0x4ba3('0x79')]&&_0x1194a5[_0x4ba3('0x8d')](_0x2f793a,_0x35441e[_0x1e2134][_0x4ba3('0x79')]===_0x4ba3('0x7a')?![]:!![]);_0x1194a5[_0x4ba3('0x6a')](_0x2f793a,_0x35441e[_0x1e2134]['alias']||_0x2f793a);}if(_0x2d00e3['joins']){_0x2d00e3[_0x4ba3('0x7c')]=JSON[_0x4ba3('0x7d')](_0x2d00e3[_0x4ba3('0x7c')]);for(var _0x56244e=0x0;_0x56244e<_0x2d00e3[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x56244e+=0x1){if(_0x2d00e3['joins'][_0x56244e][_0x4ba3('0x33')]&&_[_0x4ba3('0x63')](_0x2b2132,_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x33')])&&_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x7e')]&&_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')]&&_0x2d00e3['joins'][_0x56244e][_0x4ba3('0x7f')]){_0x1194a5[_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x33')]](_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x2d00e3[_0x4ba3('0x72')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x7e')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e]['foreignKey']));}}}if(_0x2d00e3['conditions']){_0x2d00e3[_0x4ba3('0x82')]=JSON[_0x4ba3('0x7d')](_0x2d00e3[_0x4ba3('0x82')]);_0x1194a5[_0x4ba3('0x40')](_0x333a97(_0x2d00e3[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x5ea9d0=_0x1194a5[_0x4ba3('0x83')]();_0x1194a5['limit'](_0x2d16e5);_0x1194a5['offset'](0x0);return;}})[_0x4ba3('0x26')](function(){if(_0x108679[_0x4ba3('0x8e')]==='web'){return null;}var _0x4fb6b5=_['merge'](_0x108679,{'name':_0x108679['fullPath']||_0x108679[_0x4ba3('0x2c')]||_0x2d00e3[_0x4ba3('0x2c')],'basename':_0x5a3c63,'savename':util[_0x4ba3('0x77')](_0x4ba3('0x8f'),_0x108679[_0x4ba3('0x2c')]||_0x2d00e3['name'],require(_0x4ba3('0x90'))[_0x4ba3('0x91')](0x4),_0x108679[_0x4ba3('0x8e')]||'csv'),'reportId':_0x2d00e3['id'],'reportType':'default'});return db['AnalyticExtractedReport']['create'](_0x4fb6b5,{'raw':!![]});})[_0x4ba3('0x26')](function(_0x17d501){if(_0x2d00e3[_0x4ba3('0x72')]===_0x4ba3('0x92')){_0x5ea9d0[_0x4ba3('0x40')](_0x2d00e3['table']+_0x4ba3('0x93'),_0x108679['startDate'],_0x108679[_0x4ba3('0x94')]);}else{_0x5ea9d0[_0x4ba3('0x40')](_0x2d00e3[_0x4ba3('0x72')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x108679[_0x4ba3('0x95')],_0x108679[_0x4ba3('0x94')]);}if(_0x17d501){logger[_0x4ba3('0x96')](_0x4ba3('0x97'),_0x5ea9d0['toString']());require('child_process')[_0x4ba3('0x98')](path[_0x4ba3('0x55')](__dirname,'../../components/export/',_0x17d501[_0x4ba3('0x8e')]),[_0x17d501['id'],_0x5ea9d0['toString'](),path['join'](__dirname,'../../files/reports',_0x17d501['savename']),_0x5a3c63]);return _0x17d501;}else{var _0x2d2ca3=squel[_0x4ba3('0x70')]();_0x2d2ca3[_0x4ba3('0x71')]('('+_0x5ea9d0[_0x4ba3('0x86')]()+')',_0x4ba3('0x99'));_0x2d2ca3['field']('COUNT(*)',_0x4ba3('0x21'));_0x5ea9d0['limit'](_0x108679[_0x4ba3('0x1f')]||_0x2d16e5);_0x5ea9d0[_0x4ba3('0x1e')](_0x108679[_0x4ba3('0x1e')]||0x0);return dbH['sequelize'][_0x4ba3('0x35')](_0x2d2ca3[_0x4ba3('0x86')](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')][_0x4ba3('0x88')]})[_0x4ba3('0x26')](function(_0xc938c){if(!_0xc938c[_0x4ba3('0x3c')]){_0x40dcee=0x0;}else{_0x40dcee=_0xc938c[0x0][_0x4ba3('0x21')]||0x0;}return dbH['sequelize']['query'](_0x5ea9d0[_0x4ba3('0x86')](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')][_0x4ba3('0x88')]});})[_0x4ba3('0x26')](function(_0xd97c26){return{'rows':_0xd97c26||[],'count':_0x40dcee};});}});}exports['run']=function(_0x1fbdc7,_0x9e45ec){return runReport(_0x1fbdc7['params'],_0x1fbdc7[_0x4ba3('0x35')],_0x1fbdc7[_0x4ba3('0x44')])[_0x4ba3('0x26')](respondWithResult(_0x9e45ec,null))[_0x4ba3('0x51')](handleError(_0x9e45ec,null));};exports[_0x4ba3('0x9b')]=runReport;exports[_0x4ba3('0x35')]=function(_0xddfb0c,_0x41c531){var _0x25bf75=0xa;var _0x18bd77=[_0x4ba3('0x55'),_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x2e812b={'SUM':'SUM(%s)','COUNT':_0x4ba3('0x89'),'COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':'MAX(%s)','MIN':_0x4ba3('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':_0x4ba3('0x9c'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5dc74f={'SEC_TO_TIME':_0x4ba3('0x5f'),'DATE':'DATE(%s)','HOUR':_0x4ba3('0x61'),'ROUND':_0x4ba3('0x9d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1590f0=function(_0x5efab9){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),_0x4ba3('0x8b'),'IS\x20EMPTY',_0x4ba3('0x66')],_0x5efab9);};var _0x4d3262=function(_0x4ad4d3){if(!_0x4ad4d3||!_0x4ad4d3[_0x4ba3('0x67')]['length']){return'';}for(var _0x4529a3='(',_0x9b9c64=0x0;_0x9b9c64<_0x4ad4d3[_0x4ba3('0x67')]['length'];_0x9b9c64+=0x1){_0x9b9c64>0x0&&(_0x4529a3+='\x20'+_0x4ad4d3['operator']+'\x20');_0x4529a3+=_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x69')]?_0x4d3262(_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x69')]):_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64]['field']+'\x20'+_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x6b')]+(_0x1590f0(_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x6b')])?'\x20'+_0x4ad4d3['rules'][_0x9b9c64][_0x4ba3('0x8c')]:'');}return _0x4529a3+')';};var _0x3073c5={'where':{'id':_0xddfb0c[_0x4ba3('0x49')]['id']}},_0x3d1c11,_0xa41747,_0x25c92c,_0x422a8d,_0x225746;_0x3073c5=_[_0x4ba3('0x43')]({},_0x3073c5,_0xddfb0c[_0x4ba3('0x44')]);return db[_0x4ba3('0x30')]['find'](_0x3073c5)[_0x4ba3('0x26')](function(_0x3db4c2){if(_0x3db4c2){_0x3d1c11=_0x3db4c2;return _0x3db4c2['getFields']();}return null;})[_0x4ba3('0x26')](function(_0x4a8449){if(_0x4a8449){if(!_0x4a8449[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))](_0x4ba3('0x9e'),0x193);}_0xa41747=_0x4a8449;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x4ba3('0x26')](function(_0xfaf98a){if(_0xfaf98a){_0x25c92c=_['keyBy'](_0xfaf98a,'id');var _0x30c904;var _0x267801=squel[_0x4ba3('0x70')]();_0x267801[_0x4ba3('0x71')](_0x3d1c11['table']);for(var _0x1bae1b=0x0;_0x1bae1b<_0xa41747[_0x4ba3('0x3c')];_0x1bae1b+=0x1){_0x30c904=_0xa41747[_0x1bae1b][_0x4ba3('0x73')]?_0x25c92c[_0xa41747[_0x1bae1b][_0x4ba3('0x73')]]['metric']:_0xa41747[_0x1bae1b][_0x4ba3('0x6a')];_0x30c904=_0xa41747[_0x1bae1b]['function']?_[_0x4ba3('0x76')](_0x2e812b[_0xa41747[_0x1bae1b][_0x4ba3('0x75')]],'%s',_0x30c904):_0x30c904;_0x30c904=_0xa41747[_0x1bae1b][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x5dc74f[_0xa41747[_0x1bae1b]['format']],'%s',_0x30c904):_0x30c904;if(_0xa41747[_0x1bae1b]['groupBy']){_0x267801[_0x4ba3('0x69')](_0x30c904);}_0xa41747[_0x1bae1b][_0x4ba3('0x79')]&&_0x267801[_0x4ba3('0x8d')](_0x30c904,_0xa41747[_0x1bae1b]['orderBy']==='DESC'?![]:!![]);_0x267801[_0x4ba3('0x6a')](_0x30c904,_0xa41747[_0x1bae1b][_0x4ba3('0x7b')]||_0x30c904);}if(_0x3d1c11[_0x4ba3('0x7c')]){_0x3d1c11[_0x4ba3('0x7c')]=JSON['parse'](_0x3d1c11[_0x4ba3('0x7c')]);for(var _0x2f4966=0x0;_0x2f4966<_0x3d1c11[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x2f4966+=0x1){if(_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')]&&_[_0x4ba3('0x63')](_0x18bd77,_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')])&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7e')]&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x80')]&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7f')]){_0x267801[_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')]](_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966]['foreignTable'],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x3d1c11[_0x4ba3('0x72')],_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7e')],_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966]['foreignTable'],_0x3d1c11['joins'][_0x2f4966][_0x4ba3('0x7f')]));}}}if(_0x3d1c11[_0x4ba3('0x82')]){_0x3d1c11[_0x4ba3('0x82')]=JSON['parse'](_0x3d1c11[_0x4ba3('0x82')]);_0x267801[_0x4ba3('0x40')](_0x4d3262(_0x3d1c11[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x225746=_0x267801[_0x4ba3('0x83')]();_0x267801[_0x4ba3('0x1f')](_0x25bf75);_0x267801[_0x4ba3('0x1e')](0x0);logger[_0x4ba3('0x84')](_0x4ba3('0x85'),_0x267801['toString']());return dbH[_0x4ba3('0x87')]['query'](_0x267801['toString'](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')]['SELECT']});}})[_0x4ba3('0x26')](function(){return{'sql':_0x225746[_0x4ba3('0x86')]()};})[_0x4ba3('0x26')](respondWithResult(_0x41c531,null))[_0x4ba3('0x51')](handleError(_0x41c531,null));};
\ No newline at end of file
index 3be2e4a..fc22ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f93=['AnalyticDefaultReport','util','../../config/logger','api','moment','bluebird','request-promise','path','exports','define'];(function(_0x57aac9,_0x2e4bda){var _0x528913=function(_0x2dba48){while(--_0x2dba48){_0x57aac9['push'](_0x57aac9['shift']());}};_0x528913(++_0x2e4bda);}(_0x8f93,0x123));var _0x38f9=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x8f93[_0x2641f9];return _0x585741;};'use strict';var _=require('lodash');var util=require(_0x38f9('0x0'));var logger=require(_0x38f9('0x1'))(_0x38f9('0x2'));var moment=require(_0x38f9('0x3'));var BPromise=require(_0x38f9('0x4'));var rp=require(_0x38f9('0x5'));var fs=require('fs');var path=require(_0x38f9('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./analyticDefaultReport.attributes');module[_0x38f9('0x7')]=function(_0x210073,_0x4b2520){return _0x210073[_0x38f9('0x8')](_0x38f9('0x9'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6e3e=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','lodash','util','../../config/logger','api'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x6e3e,0x130));var _0xe6e3=function(_0x500225,_0x523a00){_0x500225=_0x500225-0x0;var _0xa4856c=_0x6e3e[_0x500225];return _0xa4856c;};'use strict';var _=require(_0xe6e3('0x0'));var util=require(_0xe6e3('0x1'));var logger=require(_0xe6e3('0x2'))(_0xe6e3('0x3'));var moment=require(_0xe6e3('0x4'));var BPromise=require(_0xe6e3('0x5'));var rp=require(_0xe6e3('0x6'));var fs=require('fs');var path=require(_0xe6e3('0x7'));var rimraf=require(_0xe6e3('0x8'));var config=require(_0xe6e3('0x9'));var attributes=require(_0xe6e3('0xa'));module[_0xe6e3('0xb')]=function(_0x39c057,_0x4f9128){return _0x39c057[_0xe6e3('0xc')](_0xe6e3('0xd'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 36e5ed7..aa1a3ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x051b=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','lodash','util','moment','bluebird'];(function(_0x3d4d50,_0x366b2e){var _0x533f58=function(_0x390004){while(--_0x390004){_0x3d4d50['push'](_0x3d4d50['shift']());}};_0x533f58(++_0x366b2e);}(_0x051b,0xbc));var _0xb051=function(_0x3e38e9,_0x4ebaed){_0x3e38e9=_0x3e38e9-0x0;var _0x32eb41=_0x051b[_0x3e38e9];return _0x32eb41;};'use strict';var _=require(_0xb051('0x0'));var util=require(_0xb051('0x1'));var moment=require(_0xb051('0x2'));var BPromise=require(_0xb051('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb051('0x4'));var db=require(_0xb051('0x5'))['db'];var utils=require(_0xb051('0x6'));var logger=require(_0xb051('0x7'))(_0xb051('0x8'));var config=require(_0xb051('0x9'));var jayson=require(_0xb051('0xa'));var client=jayson[_0xb051('0xb')][_0xb051('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x26ebc0,_0x13c782,_0x2ba2e9){return new BPromise(function(_0x39d032,_0x3ea51b){return client['request'](_0x26ebc0,_0x2ba2e9)[_0xb051('0xd')](function(_0x429437){logger[_0xb051('0xe')](_0xb051('0xf'),_0x13c782,_0xb051('0x10'));logger[_0xb051('0x11')](_0xb051('0x12'),_0x13c782,_0xb051('0x10'),JSON[_0xb051('0x13')](_0x429437));if(_0x429437['error']){if(_0x429437['error'][_0xb051('0x14')]===0x1f4){logger[_0xb051('0x15')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x13c782,_0x429437['error'][_0xb051('0x16')]);return _0x3ea51b(_0x429437[_0xb051('0x15')][_0xb051('0x16')]);}logger[_0xb051('0x15')](_0xb051('0xf'),_0x13c782,_0x429437[_0xb051('0x15')][_0xb051('0x16')]);return _0x39d032(_0x429437[_0xb051('0x15')][_0xb051('0x16')]);}else{logger[_0xb051('0xe')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x13c782,_0xb051('0x10'));_0x39d032(_0x429437[_0xb051('0x17')]['message']);}})['catch'](function(_0x2cc063){logger[_0xb051('0x15')](_0xb051('0xf'),_0x13c782,_0x2cc063);_0x3ea51b(_0x2cc063);});});}
\ No newline at end of file
+var _0x6a93=['error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x45483f,_0x55951f){var _0x969ad0=function(_0x1d436f){while(--_0x1d436f){_0x45483f['push'](_0x45483f['shift']());}};_0x969ad0(++_0x55951f);}(_0x6a93,0x1cd));var _0x36a9=function(_0x4ba7b9,_0x3483db){_0x4ba7b9=_0x4ba7b9-0x0;var _0x53b27a=_0x6a93[_0x4ba7b9];return _0x53b27a;};'use strict';var _=require(_0x36a9('0x0'));var util=require('util');var moment=require(_0x36a9('0x1'));var BPromise=require(_0x36a9('0x2'));var rs=require(_0x36a9('0x3'));var fs=require('fs');var Redis=require(_0x36a9('0x4'));var db=require(_0x36a9('0x5'))['db'];var utils=require(_0x36a9('0x6'));var logger=require(_0x36a9('0x7'))(_0x36a9('0x8'));var config=require(_0x36a9('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x36a9('0xa')][_0x36a9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c469f,_0x5a068b,_0x1a4173){return new BPromise(function(_0x23822d,_0x484333){return client[_0x36a9('0xc')](_0x3c469f,_0x1a4173)['then'](function(_0x492daf){logger[_0x36a9('0xd')](_0x36a9('0xe'),_0x5a068b,_0x36a9('0xf'));logger[_0x36a9('0x10')](_0x36a9('0x11'),_0x5a068b,_0x36a9('0xf'),JSON[_0x36a9('0x12')](_0x492daf));if(_0x492daf[_0x36a9('0x13')]){if(_0x492daf[_0x36a9('0x13')][_0x36a9('0x14')]===0x1f4){logger[_0x36a9('0x13')](_0x36a9('0xe'),_0x5a068b,_0x492daf['error']['message']);return _0x484333(_0x492daf[_0x36a9('0x13')][_0x36a9('0x15')]);}logger[_0x36a9('0x13')](_0x36a9('0xe'),_0x5a068b,_0x492daf[_0x36a9('0x13')]['message']);return _0x23822d(_0x492daf['error'][_0x36a9('0x15')]);}else{logger[_0x36a9('0xd')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x5a068b,_0x36a9('0xf'));_0x23822d(_0x492daf[_0x36a9('0x16')][_0x36a9('0x15')]);}})[_0x36a9('0x17')](function(_0x321bc5){logger['error'](_0x36a9('0xe'),_0x5a068b,_0x321bc5);_0x484333(_0x321bc5);});});}
\ No newline at end of file
index 3678f21..d3aec68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e6e=['/:id/run','run','/:id/query','post','create','put','delete','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','isAuthenticated','index','get','/:id','/:id/preview','preview'];(function(_0x42bbe2,_0x411e96){var _0xb9b096=function(_0x36ac87){while(--_0x36ac87){_0x42bbe2['push'](_0x42bbe2['shift']());}};_0xb9b096(++_0x411e96);}(_0x0e6e,0x14b));var _0xe0e6=function(_0x23140a,_0x35b799){_0x23140a=_0x23140a-0x0;var _0x2d743b=_0x0e6e[_0x23140a];return _0x2d743b;};'use strict';var multer=require(_0xe0e6('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xe0e6('0x1'));var router=express[_0xe0e6('0x2')]();var fs_extra=require(_0xe0e6('0x3'));var auth=require(_0xe0e6('0x4'));var interaction=require(_0xe0e6('0x5'));var config=require(_0xe0e6('0x6'));var controller=require(_0xe0e6('0x7'));router['get']('/',auth[_0xe0e6('0x8')](),controller[_0xe0e6('0x9')]);router[_0xe0e6('0xa')](_0xe0e6('0xb'),auth[_0xe0e6('0x8')](),controller['show']);router[_0xe0e6('0xa')](_0xe0e6('0xc'),auth[_0xe0e6('0x8')](),controller[_0xe0e6('0xd')]);router[_0xe0e6('0xa')](_0xe0e6('0xe'),auth[_0xe0e6('0x8')](),controller[_0xe0e6('0xf')]);router[_0xe0e6('0xa')](_0xe0e6('0x10'),auth[_0xe0e6('0x8')](),controller['query']);router[_0xe0e6('0x11')]('/',auth[_0xe0e6('0x8')](),controller[_0xe0e6('0x12')]);router[_0xe0e6('0x13')](_0xe0e6('0xb'),auth[_0xe0e6('0x8')](),controller['update']);router[_0xe0e6('0x14')](_0xe0e6('0xb'),auth[_0xe0e6('0x8')](),controller[_0xe0e6('0x15')]);module[_0xe0e6('0x16')]=router;
\ No newline at end of file
+var _0xd897=['/:id','update','destroy','exports','util','path','Router','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id/preview','preview','/:id/run','/:id/query','query','post'];(function(_0x581aae,_0x2b18ee){var _0x539df2=function(_0xbbcb64){while(--_0xbbcb64){_0x581aae['push'](_0x581aae['shift']());}};_0x539df2(++_0x2b18ee);}(_0xd897,0xd5));var _0x7d89=function(_0x3df2be,_0x57d576){_0x3df2be=_0x3df2be-0x0;var _0x2ccb02=_0xd897[_0x3df2be];return _0x2ccb02;};'use strict';var multer=require('multer');var util=require(_0x7d89('0x0'));var path=require(_0x7d89('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7d89('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x7d89('0x3'));var config=require(_0x7d89('0x4'));var controller=require(_0x7d89('0x5'));router[_0x7d89('0x6')]('/',auth[_0x7d89('0x7')](),controller[_0x7d89('0x8')]);router['get']('/:id',auth[_0x7d89('0x7')](),controller['show']);router[_0x7d89('0x6')](_0x7d89('0x9'),auth[_0x7d89('0x7')](),controller[_0x7d89('0xa')]);router['get'](_0x7d89('0xb'),auth[_0x7d89('0x7')](),controller['run']);router[_0x7d89('0x6')](_0x7d89('0xc'),auth['isAuthenticated'](),controller[_0x7d89('0xd')]);router[_0x7d89('0xe')]('/',auth[_0x7d89('0x7')](),controller['create']);router['put'](_0x7d89('0xf'),auth['isAuthenticated'](),controller[_0x7d89('0x10')]);router['delete'](_0x7d89('0xf'),auth[_0x7d89('0x7')](),controller[_0x7d89('0x11')]);module[_0x7d89('0x12')]=router;
\ No newline at end of file
index 7639ab0..f91d9c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6f8=['ENUM','manual','INTEGER','sequelize','moment','exports','STRING','csv','pdf','xlsx','DATE','Loading'];(function(_0x547af,_0x17abff){var _0x22f7f4=function(_0x5f0384){while(--_0x5f0384){_0x547af['push'](_0x547af['shift']());}};_0x22f7f4(++_0x17abff);}(_0xe6f8,0x16b));var _0x8e6f=function(_0x283a47,_0xa179ef){_0x283a47=_0x283a47-0x0;var _0x2cb0eb=_0xe6f8[_0x283a47];return _0x2cb0eb;};'use strict';var Sequelize=require(_0x8e6f('0x0'));var moment=require(_0x8e6f('0x1'));module[_0x8e6f('0x2')]={'name':{'type':Sequelize[_0x8e6f('0x3')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0x8e6f('0x4'),_0x8e6f('0x5'),_0x8e6f('0x6')),'allowNull':![],'defaultValue':_0x8e6f('0x4')},'savename':{'type':Sequelize[_0x8e6f('0x3')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0x8e6f('0x7')]},'status':{'type':Sequelize['STRING'],'defaultValue':_0x8e6f('0x8')},'type':{'type':Sequelize[_0x8e6f('0x9')](_0x8e6f('0xa'),'scheduled'),'allowNull':![],'defaultValue':_0x8e6f('0xa')},'reportId':{'type':Sequelize[_0x8e6f('0xb')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5cef=['STRING','ENUM','csv','pdf','xlsx','DATE','manual','INTEGER','UNSIGNED','sequelize','moment','exports'];(function(_0x18ae6d,_0x255d00){var _0x3deb94=function(_0x44b04c){while(--_0x44b04c){_0x18ae6d['push'](_0x18ae6d['shift']());}};_0x3deb94(++_0x255d00);}(_0x5cef,0x141));var _0xf5ce=function(_0x3ace35,_0x11dfa8){_0x3ace35=_0x3ace35-0x0;var _0x1af13d=_0x5cef[_0x3ace35];return _0x1af13d;};'use strict';var Sequelize=require(_0xf5ce('0x0'));var moment=require(_0xf5ce('0x1'));module[_0xf5ce('0x2')]={'name':{'type':Sequelize[_0xf5ce('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0xf5ce('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0xf5ce('0x4')](_0xf5ce('0x5'),_0xf5ce('0x6'),_0xf5ce('0x7')),'allowNull':![],'defaultValue':_0xf5ce('0x5')},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize[_0xf5ce('0x8')]},'endDate':{'type':Sequelize[_0xf5ce('0x8')]},'status':{'type':Sequelize[_0xf5ce('0x3')],'defaultValue':'Loading'},'type':{'type':Sequelize[_0xf5ce('0x4')](_0xf5ce('0x9'),'scheduled'),'allowNull':![],'defaultValue':_0xf5ce('0x9')},'reportId':{'type':Sequelize[_0xf5ce('0xa')](0xb)[_0xf5ce('0xb')]},'reportType':{'type':Sequelize[_0xf5ce('0x3')]}};
\ No newline at end of file
index 6c17e48..cd8a8cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaff=['sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','stack','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','keys','query','intersection','model','attributes','fields','nolimit','sort','where','filters','pick','filter','name','merge','options','include','findAll','rows','catch','show','params','length','includeAll','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','download','basename','savename','output','existsSync','join','root','server/files/reports','Sequelize','Report\x20not\x20found\x20or\x20empty','exists','sendStatus','format','%s.%s','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path'];(function(_0x2782db,_0x2a516f){var _0x4af4e4=function(_0x17316a){while(--_0x17316a){_0x2782db['push'](_0x2782db['shift']());}};_0x4af4e4(++_0x2a516f);}(_0xeaff,0x175));var _0xfeaf=function(_0x4022e5,_0x4075){_0x4022e5=_0x4022e5-0x0;var _0x591f67=_0xeaff[_0x4022e5];return _0x591f67;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfeaf('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfeaf('0x1'));var rp=require(_0xfeaf('0x2'));var moment=require('moment');var BPromise=require(_0xfeaf('0x3'));var Mustache=require(_0xfeaf('0x4'));var util=require(_0xfeaf('0x5'));var path=require(_0xfeaf('0x6'));var sox=require(_0xfeaf('0x7'));var csv=require(_0xfeaf('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfeaf('0x9'));var _=require(_0xfeaf('0xa'));var squel=require(_0xfeaf('0xb'));var crypto=require(_0xfeaf('0xc'));var jsforce=require(_0xfeaf('0xd'));var deskjs=require(_0xfeaf('0xe'));var toCsv=require(_0xfeaf('0x8'));var querystring=require(_0xfeaf('0xf'));var Papa=require('papaparse');var Redis=require(_0xfeaf('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xfeaf('0x11'));var as=require(_0xfeaf('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xfeaf('0x13'));var utils=require(_0xfeaf('0x14'));var config=require(_0xfeaf('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd9c0de,_0x3a485a){_0x3a485a=_0x3a485a||0xcc;return function(_0x517725){if(_0x517725){return _0xd9c0de['sendStatus'](_0x3a485a);}return _0xd9c0de[_0xfeaf('0x16')](_0x3a485a)[_0xfeaf('0x17')]();};}function respondWithResult(_0x422faa,_0x3b171){_0x3b171=_0x3b171||0xc8;return function(_0x457fc8){if(_0x457fc8){return _0x422faa[_0xfeaf('0x16')](_0x3b171)[_0xfeaf('0x18')](_0x457fc8);}};}function respondWithFilteredResult(_0x172f35,_0xb3e457){return function(_0x4dccc2){if(_0x4dccc2){var _0x1f7240=typeof _0xb3e457[_0xfeaf('0x19')]===_0xfeaf('0x1a')&&typeof _0xb3e457[_0xfeaf('0x1b')]==='undefined';var _0x5f059a=_0x4dccc2[_0xfeaf('0x1c')];var _0x3037aa=_0x1f7240?0x0:_0xb3e457['offset'];var _0x11c3a2=_0x1f7240?_0x4dccc2[_0xfeaf('0x1c')]:_0xb3e457[_0xfeaf('0x19')]+_0xb3e457['limit'];var _0x389ec0;if(_0x11c3a2>=_0x5f059a){_0x11c3a2=_0x5f059a;_0x389ec0=0xc8;}else{_0x389ec0=0xce;}_0x172f35[_0xfeaf('0x16')](_0x389ec0);return _0x172f35[_0xfeaf('0x1d')](_0xfeaf('0x1e'),_0x3037aa+'-'+_0x11c3a2+'/'+_0x5f059a)['json'](_0x4dccc2);}return null;};}function patchUpdates(_0x2f2109){return function(_0x1b1ae0){try{jsonpatch[_0xfeaf('0x1f')](_0x1b1ae0,_0x2f2109,!![]);}catch(_0xebdbf9){return BPromise[_0xfeaf('0x20')](_0xebdbf9);}return _0x1b1ae0[_0xfeaf('0x21')]();};}function saveUpdates(_0x211ba6,_0x3231cf){return function(_0x1f7848){if(_0x1f7848){return _0x1f7848[_0xfeaf('0x22')](_0x211ba6)[_0xfeaf('0x23')](function(_0x5921e4){return _0x5921e4;});}return null;};}function removeEntity(_0x495d16,_0x26a212){return function(_0x2970fd){if(_0x2970fd){return _0x2970fd[_0xfeaf('0x24')]()['then'](function(){var _0x1d0b09=_0x2970fd[_0xfeaf('0x25')]({'plain':!![]});var _0x107e41=_0xfeaf('0x26');return db[_0xfeaf('0x27')][_0xfeaf('0x24')]({'where':{'type':_0x107e41,'resourceId':_0x1d0b09['id']}})[_0xfeaf('0x23')](function(){return _0x2970fd;});})[_0xfeaf('0x23')](function(){_0x495d16[_0xfeaf('0x16')](0xcc)[_0xfeaf('0x17')]();});}};}function handleEntityNotFound(_0x4cec81,_0x5c7b3d){return function(_0xbef279){if(!_0xbef279){_0x4cec81['sendStatus'](0x194);}return _0xbef279;};}function handleError(_0x5a8877,_0x4a58c3){_0x4a58c3=_0x4a58c3||0x1f4;return function(_0x58e4fd){logger['error'](_0x58e4fd[_0xfeaf('0x28')]);if(_0x58e4fd['name']){delete _0x58e4fd['name'];}_0x5a8877[_0xfeaf('0x16')](_0x4a58c3)[_0xfeaf('0x29')](_0x58e4fd);};}exports[_0xfeaf('0x2a')]=function(_0x47c46c,_0x5828db){var _0x44aebc={},_0x180bd5={},_0x1d2695={'count':0x0,'rows':[]};var _0x29b9c2=_[_0xfeaf('0x2b')](db[_0xfeaf('0x2c')][_0xfeaf('0x2d')],function(_0x2bfe78){return{'name':_0x2bfe78[_0xfeaf('0x2e')],'type':_0x2bfe78[_0xfeaf('0x2f')][_0xfeaf('0x30')]};});_0x180bd5['model']=_[_0xfeaf('0x2b')](_0x29b9c2,'name');_0x180bd5['query']=_[_0xfeaf('0x31')](_0x47c46c[_0xfeaf('0x32')]);_0x180bd5['filters']=_[_0xfeaf('0x33')](_0x180bd5[_0xfeaf('0x34')],_0x180bd5[_0xfeaf('0x32')]);_0x44aebc[_0xfeaf('0x35')]=_[_0xfeaf('0x33')](_0x180bd5[_0xfeaf('0x34')],qs['fields'](_0x47c46c['query'][_0xfeaf('0x36')]));_0x44aebc[_0xfeaf('0x35')]=_0x44aebc['attributes']['length']?_0x44aebc['attributes']:_0x180bd5['model'];if(!_0x47c46c[_0xfeaf('0x32')]['hasOwnProperty'](_0xfeaf('0x37'))){_0x44aebc[_0xfeaf('0x1b')]=qs[_0xfeaf('0x1b')](_0x47c46c[_0xfeaf('0x32')][_0xfeaf('0x1b')]);_0x44aebc[_0xfeaf('0x19')]=qs[_0xfeaf('0x19')](_0x47c46c[_0xfeaf('0x32')]['offset']);}_0x44aebc['order']=qs[_0xfeaf('0x38')](_0x47c46c[_0xfeaf('0x32')][_0xfeaf('0x38')]);_0x44aebc[_0xfeaf('0x39')]=qs[_0xfeaf('0x3a')](_[_0xfeaf('0x3b')](_0x47c46c[_0xfeaf('0x32')],_0x180bd5[_0xfeaf('0x3a')]),_0x29b9c2);if(_0x47c46c[_0xfeaf('0x32')][_0xfeaf('0x3c')]){_0x44aebc[_0xfeaf('0x39')]=_['merge'](_0x44aebc[_0xfeaf('0x39')],{'$or':_[_0xfeaf('0x2b')](_0x29b9c2,function(_0xeae25d){if(_0xeae25d[_0xfeaf('0x2f')]!=='VIRTUAL'){var _0xaadf3a={};_0xaadf3a[_0xeae25d[_0xfeaf('0x3d')]]={'$like':'%'+_0x47c46c[_0xfeaf('0x32')][_0xfeaf('0x3c')]+'%'};return _0xaadf3a;}})});}_0x44aebc=_[_0xfeaf('0x3e')]({},_0x44aebc,_0x47c46c[_0xfeaf('0x3f')]);var _0x11afe8={'where':_0x44aebc[_0xfeaf('0x39')]};return db['AnalyticExtractedReport'][_0xfeaf('0x1c')](_0x11afe8)[_0xfeaf('0x23')](function(_0x4f27b1){_0x1d2695[_0xfeaf('0x1c')]=_0x4f27b1;if(_0x47c46c[_0xfeaf('0x32')]['includeAll']){_0x44aebc[_0xfeaf('0x40')]=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0xfeaf('0x41')](_0x44aebc);})[_0xfeaf('0x23')](function(_0x1f9841){_0x1d2695[_0xfeaf('0x42')]=_0x1f9841;return _0x1d2695;})[_0xfeaf('0x23')](respondWithFilteredResult(_0x5828db,_0x44aebc))[_0xfeaf('0x43')](handleError(_0x5828db,null));};exports[_0xfeaf('0x44')]=function(_0x2fa51a,_0x582d71){var _0x53ab60={'raw':!![],'where':{'id':_0x2fa51a[_0xfeaf('0x45')]['id']}},_0x555d65={};_0x555d65[_0xfeaf('0x34')]=_['keys'](db[_0xfeaf('0x2c')][_0xfeaf('0x2d')]);_0x555d65[_0xfeaf('0x32')]=_[_0xfeaf('0x31')](_0x2fa51a[_0xfeaf('0x32')]);_0x555d65[_0xfeaf('0x3a')]=_['intersection'](_0x555d65[_0xfeaf('0x34')],_0x555d65['query']);_0x53ab60[_0xfeaf('0x35')]=_[_0xfeaf('0x33')](_0x555d65[_0xfeaf('0x34')],qs['fields'](_0x2fa51a[_0xfeaf('0x32')][_0xfeaf('0x36')]));_0x53ab60[_0xfeaf('0x35')]=_0x53ab60[_0xfeaf('0x35')][_0xfeaf('0x46')]?_0x53ab60[_0xfeaf('0x35')]:_0x555d65[_0xfeaf('0x34')];if(_0x2fa51a[_0xfeaf('0x32')][_0xfeaf('0x47')]){_0x53ab60[_0xfeaf('0x40')]=[{'all':!![]}];}_0x53ab60=_[_0xfeaf('0x3e')]({},_0x53ab60,_0x2fa51a[_0xfeaf('0x3f')]);return db[_0xfeaf('0x2c')]['find'](_0x53ab60)[_0xfeaf('0x23')](handleEntityNotFound(_0x582d71,null))[_0xfeaf('0x23')](respondWithResult(_0x582d71,null))[_0xfeaf('0x43')](handleError(_0x582d71,null));};exports[_0xfeaf('0x48')]=function(_0x3fc780,_0x343dba){return db[_0xfeaf('0x2c')][_0xfeaf('0x48')](_0x3fc780['body'],{})[_0xfeaf('0x23')](function(_0x2be1c9){var _0x742d4e=_0x3fc780[_0xfeaf('0x49')][_0xfeaf('0x25')]({'plain':!![]});if(!_0x742d4e)throw new Error(_0xfeaf('0x4a'));if(_0x742d4e['role']===_0xfeaf('0x49')){var _0x509fb9=_0x2be1c9[_0xfeaf('0x25')]({'plain':!![]});var _0x189267=_0xfeaf('0x26');return db['UserProfileSection'][_0xfeaf('0x4b')]({'where':{'name':_0x189267,'userProfileId':_0x742d4e[_0xfeaf('0x4c')]},'raw':!![]})[_0xfeaf('0x23')](function(_0x2f77c0){if(_0x2f77c0&&_0x2f77c0[_0xfeaf('0x4d')]===0x0){return db[_0xfeaf('0x27')][_0xfeaf('0x48')]({'name':_0x509fb9[_0xfeaf('0x3d')],'resourceId':_0x509fb9['id'],'type':_0x2f77c0['name'],'sectionId':_0x2f77c0['id']},{})[_0xfeaf('0x23')](function(){return _0x2be1c9;});}else{return _0x2be1c9;}})[_0xfeaf('0x43')](function(_0x47bed9){logger[_0xfeaf('0x4e')](_0xfeaf('0x4f'),_0x47bed9);throw _0x47bed9;});}return _0x2be1c9;})[_0xfeaf('0x23')](respondWithResult(_0x343dba,0xc9))[_0xfeaf('0x43')](handleError(_0x343dba,null));};exports['update']=function(_0x4e1b73,_0x4cd766){if(_0x4e1b73[_0xfeaf('0x50')]['id']){delete _0x4e1b73[_0xfeaf('0x50')]['id'];}return db[_0xfeaf('0x2c')][_0xfeaf('0x4b')]({'where':{'id':_0x4e1b73[_0xfeaf('0x45')]['id']}})[_0xfeaf('0x23')](handleEntityNotFound(_0x4cd766,null))[_0xfeaf('0x23')](saveUpdates(_0x4e1b73['body'],null))['then'](respondWithResult(_0x4cd766,null))['catch'](handleError(_0x4cd766,null));};exports[_0xfeaf('0x24')]=function(_0x189f16,_0x4d19e0){return db[_0xfeaf('0x2c')]['find']({'where':{'id':_0x189f16[_0xfeaf('0x45')]['id']}})['then'](handleEntityNotFound(_0x4d19e0,null))[_0xfeaf('0x23')](removeEntity(_0x4d19e0,null))[_0xfeaf('0x43')](handleError(_0x4d19e0,null));};exports[_0xfeaf('0x51')]=function(_0x419ce5,_0x31ab42,_0x34aa99){return db[_0xfeaf('0x2c')]['find']({'where':{'id':_0x419ce5[_0xfeaf('0x45')]['id']},'attributes':[_0xfeaf('0x3d'),_0xfeaf('0x52'),_0xfeaf('0x53'),_0xfeaf('0x54')],'raw':!![]})['then'](handleEntityNotFound(_0x31ab42,null))['then'](function(_0x3353b9){if(_0x3353b9){if(!fs[_0xfeaf('0x55')](path[_0xfeaf('0x56')](config[_0xfeaf('0x57')],_0xfeaf('0x58'),_0x3353b9[_0xfeaf('0x53')]))){throw new db[(_0xfeaf('0x59'))]['ValidationError'](_0xfeaf('0x5a'));}if(_0x419ce5[_0xfeaf('0x32')][_0xfeaf('0x5b')]){return _0x31ab42[_0xfeaf('0x5c')](0xc8);}return _0x31ab42[_0xfeaf('0x51')](path[_0xfeaf('0x56')](config[_0xfeaf('0x57')],_0xfeaf('0x58'),_0x3353b9['savename']),util[_0xfeaf('0x5d')](_0xfeaf('0x5e'),_0x3353b9[_0xfeaf('0x52')]||_0x3353b9[_0xfeaf('0x3d')],_0x3353b9[_0xfeaf('0x54')]['toLowerCase']()));}})[_0xfeaf('0x43')](handleError(_0x31ab42,null));};
\ No newline at end of file
+var _0x01f5=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','limit','offset','status','set','Content-Range','apply','reject','save','then','destroy','get','ExtractedReports','error','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','model','fields','length','nolimit','where','filters','pick','filter','VIRTUAL','options','count','includeAll','findAll','rows','show','include','merge','find','catch','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','params','download','basename','savename','output','existsSync','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','join','root','server/files/reports','format','%s.%s','toLowerCase','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','crypto'];(function(_0x1eba87,_0x27f975){var _0x1522c7=function(_0x106b7f){while(--_0x106b7f){_0x1eba87['push'](_0x1eba87['shift']());}};_0x1522c7(++_0x27f975);}(_0x01f5,0xb8));var _0x501f=function(_0x54898a,_0x17f94b){_0x54898a=_0x54898a-0x0;var _0x5b7faf=_0x01f5[_0x54898a];return _0x5b7faf;};'use strict';var emlformat=require(_0x501f('0x0'));var rimraf=require(_0x501f('0x1'));var zipdir=require(_0x501f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x501f('0x3'));var moment=require(_0x501f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x501f('0x5'));var util=require(_0x501f('0x6'));var path=require(_0x501f('0x7'));var sox=require(_0x501f('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x501f('0x9'));var _=require(_0x501f('0xa'));var squel=require('squel');var crypto=require(_0x501f('0xb'));var jsforce=require(_0x501f('0xc'));var deskjs=require(_0x501f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x501f('0xe'));var Papa=require(_0x501f('0xf'));var Redis=require(_0x501f('0x10'));var authService=require(_0x501f('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x501f('0x12'));var hardwareService=require(_0x501f('0x13'));var logger=require(_0x501f('0x14'))(_0x501f('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x501f('0x16'));var db=require(_0x501f('0x17'))['db'];function respondWithStatusCode(_0x1a90e5,_0x389171){_0x389171=_0x389171||0xcc;return function(_0x1107ca){if(_0x1107ca){return _0x1a90e5[_0x501f('0x18')](_0x389171);}return _0x1a90e5['status'](_0x389171)[_0x501f('0x19')]();};}function respondWithResult(_0x54b2fa,_0x7c387e){_0x7c387e=_0x7c387e||0xc8;return function(_0x286ded){if(_0x286ded){return _0x54b2fa['status'](_0x7c387e)[_0x501f('0x1a')](_0x286ded);}};}function respondWithFilteredResult(_0x35dc01,_0x2ad8d3){return function(_0x3fe1ef){if(_0x3fe1ef){var _0x6e3f34=typeof _0x2ad8d3['offset']===_0x501f('0x1b')&&typeof _0x2ad8d3[_0x501f('0x1c')]===_0x501f('0x1b');var _0x3ed5d5=_0x3fe1ef['count'];var _0x1acfc8=_0x6e3f34?0x0:_0x2ad8d3[_0x501f('0x1d')];var _0x8d2d4f=_0x6e3f34?_0x3fe1ef['count']:_0x2ad8d3[_0x501f('0x1d')]+_0x2ad8d3[_0x501f('0x1c')];var _0x3e4eb4;if(_0x8d2d4f>=_0x3ed5d5){_0x8d2d4f=_0x3ed5d5;_0x3e4eb4=0xc8;}else{_0x3e4eb4=0xce;}_0x35dc01[_0x501f('0x1e')](_0x3e4eb4);return _0x35dc01[_0x501f('0x1f')](_0x501f('0x20'),_0x1acfc8+'-'+_0x8d2d4f+'/'+_0x3ed5d5)['json'](_0x3fe1ef);}return null;};}function patchUpdates(_0xc365a9){return function(_0xff5bc4){try{jsonpatch[_0x501f('0x21')](_0xff5bc4,_0xc365a9,!![]);}catch(_0x5043e0){return BPromise[_0x501f('0x22')](_0x5043e0);}return _0xff5bc4[_0x501f('0x23')]();};}function saveUpdates(_0x27b6d0,_0xc2adcc){return function(_0x336e5b){if(_0x336e5b){return _0x336e5b['update'](_0x27b6d0)[_0x501f('0x24')](function(_0x2d097c){return _0x2d097c;});}return null;};}function removeEntity(_0x398149,_0x5585f5){return function(_0x5957d4){if(_0x5957d4){return _0x5957d4[_0x501f('0x25')]()['then'](function(){var _0x26f4a2=_0x5957d4[_0x501f('0x26')]({'plain':!![]});var _0x18ae40=_0x501f('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x18ae40,'resourceId':_0x26f4a2['id']}})[_0x501f('0x24')](function(){return _0x5957d4;});})[_0x501f('0x24')](function(){_0x398149[_0x501f('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2000fc,_0x1f070d){return function(_0xcdccf2){if(!_0xcdccf2){_0x2000fc[_0x501f('0x18')](0x194);}return _0xcdccf2;};}function handleError(_0x47c61e,_0x476a07){_0x476a07=_0x476a07||0x1f4;return function(_0x7b118a){logger[_0x501f('0x28')](_0x7b118a['stack']);if(_0x7b118a[_0x501f('0x29')]){delete _0x7b118a['name'];}_0x47c61e[_0x501f('0x1e')](_0x476a07)[_0x501f('0x2a')](_0x7b118a);};}exports[_0x501f('0x2b')]=function(_0x3fe4e0,_0x1f2249){var _0x4e7028={},_0x10440c={},_0x37f8d0={'count':0x0,'rows':[]};var _0x5be599=_[_0x501f('0x2c')](db[_0x501f('0x2d')][_0x501f('0x2e')],function(_0x196bff){return{'name':_0x196bff[_0x501f('0x2f')],'type':_0x196bff[_0x501f('0x30')][_0x501f('0x31')]};});_0x10440c['model']=_[_0x501f('0x2c')](_0x5be599,_0x501f('0x29'));_0x10440c[_0x501f('0x32')]=_[_0x501f('0x33')](_0x3fe4e0[_0x501f('0x32')]);_0x10440c['filters']=_[_0x501f('0x34')](_0x10440c['model'],_0x10440c[_0x501f('0x32')]);_0x4e7028[_0x501f('0x35')]=_[_0x501f('0x34')](_0x10440c[_0x501f('0x36')],qs[_0x501f('0x37')](_0x3fe4e0[_0x501f('0x32')][_0x501f('0x37')]));_0x4e7028['attributes']=_0x4e7028[_0x501f('0x35')][_0x501f('0x38')]?_0x4e7028[_0x501f('0x35')]:_0x10440c[_0x501f('0x36')];if(!_0x3fe4e0[_0x501f('0x32')]['hasOwnProperty'](_0x501f('0x39'))){_0x4e7028[_0x501f('0x1c')]=qs['limit'](_0x3fe4e0['query'][_0x501f('0x1c')]);_0x4e7028['offset']=qs[_0x501f('0x1d')](_0x3fe4e0[_0x501f('0x32')][_0x501f('0x1d')]);}_0x4e7028['order']=qs['sort'](_0x3fe4e0[_0x501f('0x32')]['sort']);_0x4e7028[_0x501f('0x3a')]=qs[_0x501f('0x3b')](_[_0x501f('0x3c')](_0x3fe4e0[_0x501f('0x32')],_0x10440c['filters']),_0x5be599);if(_0x3fe4e0[_0x501f('0x32')][_0x501f('0x3d')]){_0x4e7028[_0x501f('0x3a')]=_['merge'](_0x4e7028['where'],{'$or':_[_0x501f('0x2c')](_0x5be599,function(_0x798153){if(_0x798153['type']!==_0x501f('0x3e')){var _0x118634={};_0x118634[_0x798153[_0x501f('0x29')]]={'$like':'%'+_0x3fe4e0['query'][_0x501f('0x3d')]+'%'};return _0x118634;}})});}_0x4e7028=_['merge']({},_0x4e7028,_0x3fe4e0[_0x501f('0x3f')]);var _0xadd7e0={'where':_0x4e7028[_0x501f('0x3a')]};return db[_0x501f('0x2d')]['count'](_0xadd7e0)[_0x501f('0x24')](function(_0x26d2c0){_0x37f8d0[_0x501f('0x40')]=_0x26d2c0;if(_0x3fe4e0[_0x501f('0x32')][_0x501f('0x41')]){_0x4e7028['include']=[{'all':!![]}];}return db[_0x501f('0x2d')][_0x501f('0x42')](_0x4e7028);})[_0x501f('0x24')](function(_0x4d920){_0x37f8d0[_0x501f('0x43')]=_0x4d920;return _0x37f8d0;})[_0x501f('0x24')](respondWithFilteredResult(_0x1f2249,_0x4e7028))['catch'](handleError(_0x1f2249,null));};exports[_0x501f('0x44')]=function(_0x28d972,_0x4da1a1){var _0x520563={'raw':!![],'where':{'id':_0x28d972['params']['id']}},_0x47ddc7={};_0x47ddc7[_0x501f('0x36')]=_[_0x501f('0x33')](db['AnalyticExtractedReport'][_0x501f('0x2e')]);_0x47ddc7[_0x501f('0x32')]=_[_0x501f('0x33')](_0x28d972[_0x501f('0x32')]);_0x47ddc7[_0x501f('0x3b')]=_[_0x501f('0x34')](_0x47ddc7[_0x501f('0x36')],_0x47ddc7[_0x501f('0x32')]);_0x520563['attributes']=_['intersection'](_0x47ddc7[_0x501f('0x36')],qs[_0x501f('0x37')](_0x28d972[_0x501f('0x32')][_0x501f('0x37')]));_0x520563[_0x501f('0x35')]=_0x520563[_0x501f('0x35')][_0x501f('0x38')]?_0x520563[_0x501f('0x35')]:_0x47ddc7[_0x501f('0x36')];if(_0x28d972['query']['includeAll']){_0x520563[_0x501f('0x45')]=[{'all':!![]}];}_0x520563=_[_0x501f('0x46')]({},_0x520563,_0x28d972[_0x501f('0x3f')]);return db['AnalyticExtractedReport'][_0x501f('0x47')](_0x520563)[_0x501f('0x24')](handleEntityNotFound(_0x4da1a1,null))['then'](respondWithResult(_0x4da1a1,null))[_0x501f('0x48')](handleError(_0x4da1a1,null));};exports[_0x501f('0x49')]=function(_0x488caa,_0x2fbad6){return db[_0x501f('0x2d')][_0x501f('0x49')](_0x488caa[_0x501f('0x4a')],{})[_0x501f('0x24')](function(_0x124d94){var _0x27d9e1=_0x488caa[_0x501f('0x4b')][_0x501f('0x26')]({'plain':!![]});if(!_0x27d9e1)throw new Error(_0x501f('0x4c'));if(_0x27d9e1[_0x501f('0x4d')]===_0x501f('0x4b')){var _0x4909b3=_0x124d94[_0x501f('0x26')]({'plain':!![]});var _0x3fe9f0=_0x501f('0x27');return db[_0x501f('0x4e')][_0x501f('0x47')]({'where':{'name':_0x3fe9f0,'userProfileId':_0x27d9e1[_0x501f('0x4f')]},'raw':!![]})[_0x501f('0x24')](function(_0x275c81){if(_0x275c81&&_0x275c81[_0x501f('0x50')]===0x0){return db['UserProfileResource'][_0x501f('0x49')]({'name':_0x4909b3[_0x501f('0x29')],'resourceId':_0x4909b3['id'],'type':_0x275c81['name'],'sectionId':_0x275c81['id']},{})[_0x501f('0x24')](function(){return _0x124d94;});}else{return _0x124d94;}})[_0x501f('0x48')](function(_0x405d04){logger['error'](_0x501f('0x51'),_0x405d04);throw _0x405d04;});}return _0x124d94;})[_0x501f('0x24')](respondWithResult(_0x2fbad6,0xc9))['catch'](handleError(_0x2fbad6,null));};exports[_0x501f('0x52')]=function(_0x493658,_0x57ff7b){if(_0x493658[_0x501f('0x4a')]['id']){delete _0x493658['body']['id'];}return db[_0x501f('0x2d')][_0x501f('0x47')]({'where':{'id':_0x493658[_0x501f('0x53')]['id']}})[_0x501f('0x24')](handleEntityNotFound(_0x57ff7b,null))[_0x501f('0x24')](saveUpdates(_0x493658['body'],null))[_0x501f('0x24')](respondWithResult(_0x57ff7b,null))[_0x501f('0x48')](handleError(_0x57ff7b,null));};exports[_0x501f('0x25')]=function(_0x2573be,_0x527db8){return db[_0x501f('0x2d')][_0x501f('0x47')]({'where':{'id':_0x2573be['params']['id']}})['then'](handleEntityNotFound(_0x527db8,null))[_0x501f('0x24')](removeEntity(_0x527db8,null))[_0x501f('0x48')](handleError(_0x527db8,null));};exports[_0x501f('0x54')]=function(_0x50f30d,_0x18207a,_0x487c61){return db[_0x501f('0x2d')][_0x501f('0x47')]({'where':{'id':_0x50f30d[_0x501f('0x53')]['id']},'attributes':[_0x501f('0x29'),_0x501f('0x55'),_0x501f('0x56'),_0x501f('0x57')],'raw':!![]})[_0x501f('0x24')](handleEntityNotFound(_0x18207a,null))[_0x501f('0x24')](function(_0x3dc1c2){if(_0x3dc1c2){if(!fs[_0x501f('0x58')](path['join'](config['root'],'server/files/reports',_0x3dc1c2[_0x501f('0x56')]))){throw new db[(_0x501f('0x59'))][(_0x501f('0x5a'))](_0x501f('0x5b'));}if(_0x50f30d[_0x501f('0x32')]['exists']){return _0x18207a[_0x501f('0x18')](0xc8);}return _0x18207a[_0x501f('0x54')](path[_0x501f('0x5c')](config[_0x501f('0x5d')],_0x501f('0x5e'),_0x3dc1c2[_0x501f('0x56')]),util[_0x501f('0x5f')](_0x501f('0x60'),_0x3dc1c2[_0x501f('0x55')]||_0x3dc1c2[_0x501f('0x29')],_0x3dc1c2[_0x501f('0x57')][_0x501f('0x61')]()));}})['catch'](handleError(_0x18207a,null));};
\ No newline at end of file
index 22f5555..87cff89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68bb=['define','analytics_extracted_reports','lodash','api','moment','rimraf'];(function(_0x305bbf,_0x5647b3){var _0x4ed772=function(_0x3315ed){while(--_0x3315ed){_0x305bbf['push'](_0x305bbf['shift']());}};_0x4ed772(++_0x5647b3);}(_0x68bb,0xc8));var _0xb68b=function(_0x8ac1d8,_0x29d866){_0x8ac1d8=_0x8ac1d8-0x0;var _0x594a9b=_0x68bb[_0x8ac1d8];return _0x594a9b;};'use strict';var _=require(_0xb68b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb68b('0x1'));var moment=require(_0xb68b('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb68b('0x3'));var config=require('../../config/environment');var attributes=require('./analyticExtractedReport.attributes');module['exports']=function(_0xb7b1a1,_0x5a1692){return _0xb7b1a1[_0xb68b('0x4')]('AnalyticExtractedReport',attributes,{'tableName':_0xb68b('0x5'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd43=['bluebird','request-promise','path','../../config/environment','./analyticExtractedReport.attributes','exports','define','util','../../config/logger','api','moment'];(function(_0x305b20,_0x5e57e9){var _0x26d64a=function(_0x2e17f0){while(--_0x2e17f0){_0x305b20['push'](_0x305b20['shift']());}};_0x26d64a(++_0x5e57e9);}(_0xbd43,0x80));var _0x3bd4=function(_0x112aa3,_0x4a5c35){_0x112aa3=_0x112aa3-0x0;var _0x266b8f=_0xbd43[_0x112aa3];return _0x266b8f;};'use strict';var _=require('lodash');var util=require(_0x3bd4('0x0'));var logger=require(_0x3bd4('0x1'))(_0x3bd4('0x2'));var moment=require(_0x3bd4('0x3'));var BPromise=require(_0x3bd4('0x4'));var rp=require(_0x3bd4('0x5'));var fs=require('fs');var path=require(_0x3bd4('0x6'));var rimraf=require('rimraf');var config=require(_0x3bd4('0x7'));var attributes=require(_0x3bd4('0x8'));module[_0x3bd4('0x9')]=function(_0x2eb130,_0xbfb46a){return _0x2eb130[_0x3bd4('0xa')]('AnalyticExtractedReport',attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df7af58..ce41805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1336=['randomstring','ioredis','../../mysqldb','rpc','client','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','moment','bluebird'];(function(_0x34ed07,_0x104791){var _0xda62ac=function(_0x5b0979){while(--_0x5b0979){_0x34ed07['push'](_0x34ed07['shift']());}};_0xda62ac(++_0x104791);}(_0x1336,0xe1));var _0x6133=function(_0x20094d,_0x38ba67){_0x20094d=_0x20094d-0x0;var _0x36b8c8=_0x1336[_0x20094d];return _0x36b8c8;};'use strict';var _=require(_0x6133('0x0'));var util=require('util');var moment=require(_0x6133('0x1'));var BPromise=require(_0x6133('0x2'));var rs=require(_0x6133('0x3'));var fs=require('fs');var Redis=require(_0x6133('0x4'));var db=require(_0x6133('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6133('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6133('0x7')][_0x6133('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3acdf7,_0x4ac9ae,_0x2870bd){return new BPromise(function(_0x1863f9,_0x519ab6){return client[_0x6133('0x9')](_0x3acdf7,_0x2870bd)[_0x6133('0xa')](function(_0xf18af5){logger[_0x6133('0xb')](_0x6133('0xc'),_0x4ac9ae,_0x6133('0xd'));logger['debug']('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x4ac9ae,_0x6133('0xd'),JSON[_0x6133('0xe')](_0xf18af5));if(_0xf18af5[_0x6133('0xf')]){if(_0xf18af5[_0x6133('0xf')][_0x6133('0x10')]===0x1f4){logger[_0x6133('0xf')](_0x6133('0xc'),_0x4ac9ae,_0xf18af5[_0x6133('0xf')][_0x6133('0x11')]);return _0x519ab6(_0xf18af5[_0x6133('0xf')][_0x6133('0x11')]);}logger['error'](_0x6133('0xc'),_0x4ac9ae,_0xf18af5['error'][_0x6133('0x11')]);return _0x1863f9(_0xf18af5['error'][_0x6133('0x11')]);}else{logger[_0x6133('0xb')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4ac9ae,_0x6133('0xd'));_0x1863f9(_0xf18af5['result']['message']);}})[_0x6133('0x12')](function(_0x5ed575){logger[_0x6133('0xf')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4ac9ae,_0x5ed575);_0x519ab6(_0x5ed575);});});}
\ No newline at end of file
+var _0xb940=['jayson/promise','client','http','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0xcd1812,_0x4fbd3c){var _0x1d407f=function(_0x4e6ad6){while(--_0x4e6ad6){_0xcd1812['push'](_0xcd1812['shift']());}};_0x1d407f(++_0x4fbd3c);}(_0xb940,0x1d9));var _0x0b94=function(_0x5216e0,_0x4f8cb9){_0x5216e0=_0x5216e0-0x0;var _0x5b3f40=_0xb940[_0x5216e0];return _0x5b3f40;};'use strict';var _=require(_0x0b94('0x0'));var util=require(_0x0b94('0x1'));var moment=require(_0x0b94('0x2'));var BPromise=require(_0x0b94('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0b94('0x4'));var db=require(_0x0b94('0x5'))['db'];var utils=require(_0x0b94('0x6'));var logger=require(_0x0b94('0x7'))(_0x0b94('0x8'));var config=require(_0x0b94('0x9'));var jayson=require(_0x0b94('0xa'));var client=jayson[_0x0b94('0xb')][_0x0b94('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x18810b,_0x55e9a1,_0x237b01){return new BPromise(function(_0x3abac3,_0x30e271){return client['request'](_0x18810b,_0x237b01)[_0x0b94('0xd')](function(_0x4498c1){logger[_0x0b94('0xe')](_0x0b94('0xf'),_0x55e9a1,_0x0b94('0x10'));logger[_0x0b94('0x11')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x55e9a1,'request\x20sent',JSON[_0x0b94('0x12')](_0x4498c1));if(_0x4498c1[_0x0b94('0x13')]){if(_0x4498c1[_0x0b94('0x13')][_0x0b94('0x14')]===0x1f4){logger['error'](_0x0b94('0xf'),_0x55e9a1,_0x4498c1[_0x0b94('0x13')][_0x0b94('0x15')]);return _0x30e271(_0x4498c1[_0x0b94('0x13')][_0x0b94('0x15')]);}logger[_0x0b94('0x13')](_0x0b94('0xf'),_0x55e9a1,_0x4498c1[_0x0b94('0x13')][_0x0b94('0x15')]);return _0x3abac3(_0x4498c1[_0x0b94('0x13')][_0x0b94('0x15')]);}else{logger[_0x0b94('0xe')](_0x0b94('0xf'),_0x55e9a1,'request\x20sent');_0x3abac3(_0x4498c1['result'][_0x0b94('0x15')]);}})[_0x0b94('0x16')](function(_0x4681e5){logger[_0x0b94('0x13')](_0x0b94('0xf'),_0x55e9a1,_0x4681e5);_0x30e271(_0x4681e5);});});}
\ No newline at end of file
index 8cc50b3..3f82c2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d20=['/:id/download','download','put','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/:id','show'];(function(_0x199a6b,_0x5a7c9f){var _0x139305=function(_0x4ff977){while(--_0x4ff977){_0x199a6b['push'](_0x199a6b['shift']());}};_0x139305(++_0x5a7c9f);}(_0x5d20,0x127));var _0x05d2=function(_0x40f0b4,_0x2d4c50){_0x40f0b4=_0x40f0b4-0x0;var _0x2dfe79=_0x5d20[_0x40f0b4];return _0x2dfe79;};'use strict';var multer=require('multer');var util=require(_0x05d2('0x0'));var path=require(_0x05d2('0x1'));var timeout=require(_0x05d2('0x2'));var express=require('express');var router=express[_0x05d2('0x3')]();var fs_extra=require(_0x05d2('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x05d2('0x5'));var config=require('../../config/environment');var controller=require('./analyticExtractedReport.controller');router[_0x05d2('0x6')]('/',auth[_0x05d2('0x7')](),controller[_0x05d2('0x8')]);router['get'](_0x05d2('0x9'),auth['isAuthenticated'](),controller[_0x05d2('0xa')]);router['get'](_0x05d2('0xb'),auth['isAuthenticated'](),controller[_0x05d2('0xc')]);router['post']('/',auth[_0x05d2('0x7')](),controller['create']);router[_0x05d2('0xd')]('/:id',auth[_0x05d2('0x7')](),controller[_0x05d2('0xe')]);router['delete'](_0x05d2('0x9'),auth[_0x05d2('0x7')](),controller[_0x05d2('0xf')]);module[_0x05d2('0x10')]=router;
\ No newline at end of file
+var _0x7c88=['../../config/environment','./analyticExtractedReport.controller','index','get','/:id','isAuthenticated','show','/:id/download','download','post','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x528e79,_0x26220b){var _0x572f6e=function(_0x1c8128){while(--_0x1c8128){_0x528e79['push'](_0x528e79['shift']());}};_0x572f6e(++_0x26220b);}(_0x7c88,0x1c5));var _0x87c8=function(_0x3c89a,_0x160ef1){_0x3c89a=_0x3c89a-0x0;var _0x4286dc=_0x7c88[_0x3c89a];return _0x4286dc;};'use strict';var multer=require(_0x87c8('0x0'));var util=require(_0x87c8('0x1'));var path=require(_0x87c8('0x2'));var timeout=require(_0x87c8('0x3'));var express=require(_0x87c8('0x4'));var router=express[_0x87c8('0x5')]();var fs_extra=require(_0x87c8('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x87c8('0x7'));var controller=require(_0x87c8('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x87c8('0x9')]);router[_0x87c8('0xa')](_0x87c8('0xb'),auth[_0x87c8('0xc')](),controller[_0x87c8('0xd')]);router['get'](_0x87c8('0xe'),auth[_0x87c8('0xc')](),controller[_0x87c8('0xf')]);router[_0x87c8('0x10')]('/',auth[_0x87c8('0xc')](),controller['create']);router[_0x87c8('0x11')](_0x87c8('0xb'),auth[_0x87c8('0xc')](),controller[_0x87c8('0x12')]);router[_0x87c8('0x13')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 3bd0de6..bb86e97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf8e=['sequelize','STRING','BOOLEAN'];(function(_0x319962,_0x29ecd1){var _0x1d9d57=function(_0x4fe2a7){while(--_0x4fe2a7){_0x319962['push'](_0x319962['shift']());}};_0x1d9d57(++_0x29ecd1);}(_0xcf8e,0x19e));var _0xecf8=function(_0x4202b2,_0x4c22e6){_0x4202b2=_0x4202b2-0x0;var _0x70d632=_0xcf8e[_0x4202b2];return _0x70d632;};'use strict';var Sequelize=require(_0xecf8('0x0'));module['exports']={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0xecf8('0x1')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0xecf8('0x2')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xecf8('0x1')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xd8f9=['STRING','BOOLEAN','sequelize','exports','TEXT'];(function(_0x52b7b9,_0x43ed4b){var _0x5b5d30=function(_0x4a5b9c){while(--_0x4a5b9c){_0x52b7b9['push'](_0x52b7b9['shift']());}};_0x5b5d30(++_0x43ed4b);}(_0xd8f9,0x7a));var _0x9d8f=function(_0x320346,_0xf19026){_0x320346=_0x320346-0x0;var _0x5e5a6a=_0xd8f9[_0x320346];return _0x5e5a6a;};'use strict';var Sequelize=require(_0x9d8f('0x0'));module[_0x9d8f('0x1')]={'field':{'type':Sequelize[_0x9d8f('0x2')]},'alias':{'type':Sequelize[_0x9d8f('0x3')]},'function':{'type':Sequelize[_0x9d8f('0x3')]},'format':{'type':Sequelize[_0x9d8f('0x3')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x9d8f('0x3')]},'custom':{'type':Sequelize[_0x9d8f('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 608d96e..6bf9bdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a39=['order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','rawAttributes','find','create','body','bulkCreate','update','destroy','bulkDestroy','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','findAll','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','AnalyticFieldReport','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','nolimit'];(function(_0x1d8aad,_0x1a9bf8){var _0x10751c=function(_0x438db4){while(--_0x438db4){_0x1d8aad['push'](_0x1d8aad['shift']());}};_0x10751c(++_0x1a9bf8);}(_0x4a39,0xd2));var _0x94a3=function(_0x38323c,_0x36f449){_0x38323c=_0x38323c-0x0;var _0x2cdf79=_0x4a39[_0x38323c];return _0x2cdf79;};'use strict';var emlformat=require(_0x94a3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x94a3('0x1'));var jsonpatch=require(_0x94a3('0x2'));var rp=require(_0x94a3('0x3'));var moment=require(_0x94a3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x94a3('0x5'));var util=require(_0x94a3('0x6'));var path=require(_0x94a3('0x7'));var sox=require(_0x94a3('0x8'));var csv=require(_0x94a3('0x9'));var ejs=require(_0x94a3('0xa'));var fs=require('fs');var fs_extra=require(_0x94a3('0xb'));var _=require('lodash');var squel=require(_0x94a3('0xc'));var crypto=require(_0x94a3('0xd'));var jsforce=require(_0x94a3('0xe'));var deskjs=require(_0x94a3('0xf'));var toCsv=require(_0x94a3('0x9'));var querystring=require(_0x94a3('0x10'));var Papa=require(_0x94a3('0x11'));var Redis=require(_0x94a3('0x12'));var authService=require(_0x94a3('0x13'));var qs=require(_0x94a3('0x14'));var as=require(_0x94a3('0x15'));var hardwareService=require(_0x94a3('0x16'));var logger=require(_0x94a3('0x17'))(_0x94a3('0x18'));var utils=require(_0x94a3('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x94a3('0x1a'));var db=require(_0x94a3('0x1b'))['db'];function respondWithStatusCode(_0x4acb8d,_0x4b2111){_0x4b2111=_0x4b2111||0xcc;return function(_0xa54a12){if(_0xa54a12){return _0x4acb8d[_0x94a3('0x1c')](_0x4b2111);}return _0x4acb8d[_0x94a3('0x1d')](_0x4b2111)[_0x94a3('0x1e')]();};}function respondWithResult(_0x5b82bf,_0x1614d0){_0x1614d0=_0x1614d0||0xc8;return function(_0x5d2beb){if(_0x5d2beb){return _0x5b82bf[_0x94a3('0x1d')](_0x1614d0)[_0x94a3('0x1f')](_0x5d2beb);}};}function respondWithFilteredResult(_0xee8890,_0x134863){return function(_0x49efa0){if(_0x49efa0){var _0x5cd6bb=typeof _0x134863[_0x94a3('0x20')]===_0x94a3('0x21')&&typeof _0x134863[_0x94a3('0x22')]==='undefined';var _0x5e7e84=_0x49efa0[_0x94a3('0x23')];var _0x1b21c9=_0x5cd6bb?0x0:_0x134863[_0x94a3('0x20')];var _0xdbd4b5=_0x5cd6bb?_0x49efa0['count']:_0x134863['offset']+_0x134863[_0x94a3('0x22')];var _0x438de5;if(_0xdbd4b5>=_0x5e7e84){_0xdbd4b5=_0x5e7e84;_0x438de5=0xc8;}else{_0x438de5=0xce;}_0xee8890[_0x94a3('0x1d')](_0x438de5);return _0xee8890[_0x94a3('0x24')](_0x94a3('0x25'),_0x1b21c9+'-'+_0xdbd4b5+'/'+_0x5e7e84)[_0x94a3('0x1f')](_0x49efa0);}return null;};}function patchUpdates(_0x5d66df){return function(_0x232280){try{jsonpatch[_0x94a3('0x26')](_0x232280,_0x5d66df,!![]);}catch(_0x3e1651){return BPromise[_0x94a3('0x27')](_0x3e1651);}return _0x232280[_0x94a3('0x28')]();};}function saveUpdates(_0x2529c1,_0x4c8017){return function(_0x4b93bd){if(_0x4b93bd){return _0x4b93bd['update'](_0x2529c1)[_0x94a3('0x29')](function(_0x3d4e28){return _0x3d4e28;});}return null;};}function removeEntity(_0x2d30af,_0x22c5d7){return function(_0x2e9f8b){if(_0x2e9f8b){return _0x2e9f8b['destroy']()[_0x94a3('0x29')](function(){_0x2d30af[_0x94a3('0x1d')](0xcc)[_0x94a3('0x1e')]();});}};}function handleEntityNotFound(_0x2028df,_0x30db2c){return function(_0x5c8582){if(!_0x5c8582){_0x2028df['sendStatus'](0x194);}return _0x5c8582;};}function handleError(_0x433d35,_0x1277f4){_0x1277f4=_0x1277f4||0x1f4;return function(_0x187042){logger[_0x94a3('0x2a')](_0x187042[_0x94a3('0x2b')]);if(_0x187042[_0x94a3('0x2c')]){delete _0x187042[_0x94a3('0x2c')];}_0x433d35[_0x94a3('0x1d')](_0x1277f4)[_0x94a3('0x2d')](_0x187042);};}exports[_0x94a3('0x2e')]=function(_0x24f8ce,_0x4fea49){var _0x5f1572={},_0x2b9425={},_0x48a9db={'count':0x0,'rows':[]};var _0xf88343=_['map'](db[_0x94a3('0x2f')]['rawAttributes'],function(_0x4e08c4){return{'name':_0x4e08c4[_0x94a3('0x30')],'type':_0x4e08c4[_0x94a3('0x31')][_0x94a3('0x32')]};});_0x2b9425[_0x94a3('0x33')]=_[_0x94a3('0x34')](_0xf88343,'name');_0x2b9425[_0x94a3('0x35')]=_['keys'](_0x24f8ce[_0x94a3('0x35')]);_0x2b9425[_0x94a3('0x36')]=_[_0x94a3('0x37')](_0x2b9425[_0x94a3('0x33')],_0x2b9425[_0x94a3('0x35')]);_0x5f1572[_0x94a3('0x38')]=_[_0x94a3('0x37')](_0x2b9425[_0x94a3('0x33')],qs[_0x94a3('0x39')](_0x24f8ce[_0x94a3('0x35')]['fields']));_0x5f1572[_0x94a3('0x38')]=_0x5f1572[_0x94a3('0x38')][_0x94a3('0x3a')]?_0x5f1572[_0x94a3('0x38')]:_0x2b9425[_0x94a3('0x33')];if(!_0x24f8ce['query']['hasOwnProperty'](_0x94a3('0x3b'))){_0x5f1572[_0x94a3('0x22')]=qs['limit'](_0x24f8ce[_0x94a3('0x35')][_0x94a3('0x22')]);_0x5f1572['offset']=qs[_0x94a3('0x20')](_0x24f8ce['query'][_0x94a3('0x20')]);}_0x5f1572[_0x94a3('0x3c')]=qs[_0x94a3('0x3d')](_0x24f8ce[_0x94a3('0x35')]['sort']);_0x5f1572[_0x94a3('0x3e')]=qs[_0x94a3('0x36')](_[_0x94a3('0x3f')](_0x24f8ce[_0x94a3('0x35')],_0x2b9425[_0x94a3('0x36')]),_0xf88343);if(_0x24f8ce[_0x94a3('0x35')][_0x94a3('0x40')]){_0x5f1572['where']=_[_0x94a3('0x41')](_0x5f1572[_0x94a3('0x3e')],{'$or':_[_0x94a3('0x34')](_0xf88343,function(_0x15681f){if(_0x15681f[_0x94a3('0x31')]!==_0x94a3('0x42')){var _0x196623={};_0x196623[_0x15681f[_0x94a3('0x2c')]]={'$like':'%'+_0x24f8ce[_0x94a3('0x35')][_0x94a3('0x40')]+'%'};return _0x196623;}})});}_0x5f1572=_['merge']({},_0x5f1572,_0x24f8ce[_0x94a3('0x43')]);var _0x56145c={'where':_0x5f1572[_0x94a3('0x3e')]};return db[_0x94a3('0x2f')][_0x94a3('0x23')](_0x56145c)[_0x94a3('0x29')](function(_0x40ca42){_0x48a9db[_0x94a3('0x23')]=_0x40ca42;if(_0x24f8ce[_0x94a3('0x35')][_0x94a3('0x44')]){_0x5f1572[_0x94a3('0x45')]=[{'all':!![]}];}return db['AnalyticFieldReport']['findAll'](_0x5f1572);})[_0x94a3('0x29')](function(_0x1e4d49){_0x48a9db[_0x94a3('0x46')]=_0x1e4d49;return _0x48a9db;})[_0x94a3('0x29')](respondWithFilteredResult(_0x4fea49,_0x5f1572))[_0x94a3('0x47')](handleError(_0x4fea49,null));};exports[_0x94a3('0x48')]=function(_0x2210b4,_0x233086){var _0x22a6b8={'raw':![],'where':{'id':_0x2210b4[_0x94a3('0x49')]['id']}},_0x45533e={};_0x45533e[_0x94a3('0x33')]=_[_0x94a3('0x4a')](db[_0x94a3('0x2f')][_0x94a3('0x4b')]);_0x45533e[_0x94a3('0x35')]=_[_0x94a3('0x4a')](_0x2210b4['query']);_0x45533e[_0x94a3('0x36')]=_[_0x94a3('0x37')](_0x45533e[_0x94a3('0x33')],_0x45533e[_0x94a3('0x35')]);_0x22a6b8['attributes']=_[_0x94a3('0x37')](_0x45533e['model'],qs[_0x94a3('0x39')](_0x2210b4[_0x94a3('0x35')][_0x94a3('0x39')]));_0x22a6b8[_0x94a3('0x38')]=_0x22a6b8['attributes'][_0x94a3('0x3a')]?_0x22a6b8['attributes']:_0x45533e[_0x94a3('0x33')];if(_0x2210b4[_0x94a3('0x35')][_0x94a3('0x44')]){_0x22a6b8[_0x94a3('0x45')]=[{'all':!![]}];}_0x22a6b8=_[_0x94a3('0x41')]({},_0x22a6b8,_0x2210b4[_0x94a3('0x43')]);return db[_0x94a3('0x2f')][_0x94a3('0x4c')](_0x22a6b8)[_0x94a3('0x29')](handleEntityNotFound(_0x233086,null))[_0x94a3('0x29')](respondWithResult(_0x233086,null))['catch'](handleError(_0x233086,null));};exports[_0x94a3('0x4d')]=function(_0x109d47,_0x43be51){return db[_0x94a3('0x2f')][_0x94a3('0x4d')](_0x109d47[_0x94a3('0x4e')],{})['then'](respondWithResult(_0x43be51,0xc9))[_0x94a3('0x47')](handleError(_0x43be51,null));};exports[_0x94a3('0x4f')]=function(_0x5c443e,_0x1a6fa7){return db[_0x94a3('0x2f')][_0x94a3('0x4f')](_0x5c443e[_0x94a3('0x4e')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x1a6fa7,0xc9))['catch'](handleError(_0x1a6fa7,null));};exports[_0x94a3('0x50')]=function(_0x4ab18e,_0x59400e){if(_0x4ab18e[_0x94a3('0x4e')]['id']){delete _0x4ab18e['body']['id'];}return db[_0x94a3('0x2f')][_0x94a3('0x4c')]({'where':{'id':_0x4ab18e['params']['id']}})[_0x94a3('0x29')](handleEntityNotFound(_0x59400e,null))['then'](saveUpdates(_0x4ab18e[_0x94a3('0x4e')],null))[_0x94a3('0x29')](respondWithResult(_0x59400e,null))[_0x94a3('0x47')](handleError(_0x59400e,null));};exports[_0x94a3('0x51')]=function(_0x2f4dc7,_0x838f75){return db[_0x94a3('0x2f')]['find']({'where':{'id':_0x2f4dc7[_0x94a3('0x49')]['id']}})[_0x94a3('0x29')](handleEntityNotFound(_0x838f75,null))[_0x94a3('0x29')](removeEntity(_0x838f75,null))['catch'](handleError(_0x838f75,null));};exports[_0x94a3('0x52')]=function(_0x5b530c,_0x3213a){return db[_0x94a3('0x2f')][_0x94a3('0x51')]({'where':{'id':_0x5b530c[_0x94a3('0x35')]['ids']||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x3213a,0xcc))['catch'](handleError(_0x3213a,null));};exports[_0x94a3('0x53')]=function(_0x43f569,_0x4a7022,_0x18ead9){return db[_0x94a3('0x54')][_0x94a3('0x55')]({'where':{'id':_0x43f569['params']['id']}})[_0x94a3('0x29')](handleEntityNotFound(_0x4a7022,null))[_0x94a3('0x29')](function(_0x4af9bd){if(_0x4af9bd){return db[_0x94a3('0x56')][_0x94a3('0x57')](function(_0x55a290){return db[_0x94a3('0x2f')]['destroy']({'where':{'CustomReportId':_0x43f569[_0x94a3('0x49')]['id']},'transaction':_0x55a290})[_0x94a3('0x29')](function(_0x417ac2){var _0x18fe38=_[_0x94a3('0x34')](_0x43f569[_0x94a3('0x4e')],function(_0x3b6511){delete _0x3b6511['id'];_0x3b6511[_0x94a3('0x58')]=_0x43f569[_0x94a3('0x49')]['id'];return _0x3b6511;});return db[_0x94a3('0x2f')][_0x94a3('0x4f')](_0x18fe38,{'transaction':_0x55a290});});})['then'](function(){return db[_0x94a3('0x2f')][_0x94a3('0x59')]({'where':{'CustomReportId':_0x43f569[_0x94a3('0x49')]['id']}});});}})[_0x94a3('0x29')](respondWithResult(_0x4a7022,null))[_0x94a3('0x47')](handleError(_0x4a7022,null));};
\ No newline at end of file
+var _0xe820=['offset','undefined','count','set','Content-Range','save','update','then','destroy','error','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','key','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','create','bulkCreate','body','find','catch','bulkDestroy','ids','params','sequelize','transaction','CustomReportId','rimraf','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xe820,0x1bb));var _0x0e82=function(_0x2a9f56,_0x311bc1){_0x2a9f56=_0x2a9f56-0x0;var _0x40bd5b=_0xe820[_0x2a9f56];return _0x40bd5b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0e82('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0e82('0x1'));var BPromise=require(_0x0e82('0x2'));var Mustache=require(_0x0e82('0x3'));var util=require('util');var path=require(_0x0e82('0x4'));var sox=require(_0x0e82('0x5'));var csv=require(_0x0e82('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0e82('0x7'));var _=require(_0x0e82('0x8'));var squel=require(_0x0e82('0x9'));var crypto=require(_0x0e82('0xa'));var jsforce=require(_0x0e82('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0e82('0xc'));var Papa=require(_0x0e82('0xd'));var Redis=require(_0x0e82('0xe'));var authService=require(_0x0e82('0xf'));var qs=require(_0x0e82('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x0e82('0x11'))('api');var utils=require(_0x0e82('0x12'));var config=require(_0x0e82('0x13'));var licenseUtil=require(_0x0e82('0x14'));var db=require(_0x0e82('0x15'))['db'];function respondWithStatusCode(_0xddc6e5,_0x52178d){_0x52178d=_0x52178d||0xcc;return function(_0xf7e054){if(_0xf7e054){return _0xddc6e5['sendStatus'](_0x52178d);}return _0xddc6e5[_0x0e82('0x16')](_0x52178d)[_0x0e82('0x17')]();};}function respondWithResult(_0x57bc82,_0x1c9822){_0x1c9822=_0x1c9822||0xc8;return function(_0x1c5084){if(_0x1c5084){return _0x57bc82['status'](_0x1c9822)[_0x0e82('0x18')](_0x1c5084);}};}function respondWithFilteredResult(_0x4b8bfd,_0x59b9fd){return function(_0x2e8468){if(_0x2e8468){var _0x56526f=typeof _0x59b9fd[_0x0e82('0x19')]===_0x0e82('0x1a')&&typeof _0x59b9fd['limit']===_0x0e82('0x1a');var _0xb752bb=_0x2e8468[_0x0e82('0x1b')];var _0x204108=_0x56526f?0x0:_0x59b9fd[_0x0e82('0x19')];var _0x4844a1=_0x56526f?_0x2e8468['count']:_0x59b9fd[_0x0e82('0x19')]+_0x59b9fd['limit'];var _0x3da3a5;if(_0x4844a1>=_0xb752bb){_0x4844a1=_0xb752bb;_0x3da3a5=0xc8;}else{_0x3da3a5=0xce;}_0x4b8bfd[_0x0e82('0x16')](_0x3da3a5);return _0x4b8bfd[_0x0e82('0x1c')](_0x0e82('0x1d'),_0x204108+'-'+_0x4844a1+'/'+_0xb752bb)['json'](_0x2e8468);}return null;};}function patchUpdates(_0x44baec){return function(_0x5405af){try{jsonpatch['apply'](_0x5405af,_0x44baec,!![]);}catch(_0x33450a){return BPromise['reject'](_0x33450a);}return _0x5405af[_0x0e82('0x1e')]();};}function saveUpdates(_0x5187d3,_0x1b6119){return function(_0x4bb087){if(_0x4bb087){return _0x4bb087[_0x0e82('0x1f')](_0x5187d3)[_0x0e82('0x20')](function(_0xac811f){return _0xac811f;});}return null;};}function removeEntity(_0x310300,_0x3c9941){return function(_0x40e334){if(_0x40e334){return _0x40e334[_0x0e82('0x21')]()[_0x0e82('0x20')](function(){_0x310300[_0x0e82('0x16')](0xcc)[_0x0e82('0x17')]();});}};}function handleEntityNotFound(_0x1d50ba,_0x4c92fb){return function(_0x39d036){if(!_0x39d036){_0x1d50ba['sendStatus'](0x194);}return _0x39d036;};}function handleError(_0x5e704c,_0xa60ba5){_0xa60ba5=_0xa60ba5||0x1f4;return function(_0xebbca){logger[_0x0e82('0x22')](_0xebbca[_0x0e82('0x23')]);if(_0xebbca['name']){delete _0xebbca[_0x0e82('0x24')];}_0x5e704c['status'](_0xa60ba5)[_0x0e82('0x25')](_0xebbca);};}exports[_0x0e82('0x26')]=function(_0x1d5a93,_0x5b6481){var _0x571474={},_0x1285a4={},_0x19ce90={'count':0x0,'rows':[]};var _0x46310a=_[_0x0e82('0x27')](db[_0x0e82('0x28')][_0x0e82('0x29')],function(_0x4b1bcf){return{'name':_0x4b1bcf['fieldName'],'type':_0x4b1bcf['type'][_0x0e82('0x2a')]};});_0x1285a4['model']=_[_0x0e82('0x27')](_0x46310a,_0x0e82('0x24'));_0x1285a4[_0x0e82('0x2b')]=_[_0x0e82('0x2c')](_0x1d5a93[_0x0e82('0x2b')]);_0x1285a4[_0x0e82('0x2d')]=_[_0x0e82('0x2e')](_0x1285a4['model'],_0x1285a4['query']);_0x571474[_0x0e82('0x2f')]=_[_0x0e82('0x2e')](_0x1285a4['model'],qs[_0x0e82('0x30')](_0x1d5a93[_0x0e82('0x2b')][_0x0e82('0x30')]));_0x571474['attributes']=_0x571474[_0x0e82('0x2f')][_0x0e82('0x31')]?_0x571474[_0x0e82('0x2f')]:_0x1285a4[_0x0e82('0x32')];if(!_0x1d5a93['query'][_0x0e82('0x33')](_0x0e82('0x34'))){_0x571474['limit']=qs[_0x0e82('0x35')](_0x1d5a93[_0x0e82('0x2b')]['limit']);_0x571474[_0x0e82('0x19')]=qs[_0x0e82('0x19')](_0x1d5a93[_0x0e82('0x2b')][_0x0e82('0x19')]);}_0x571474[_0x0e82('0x36')]=qs[_0x0e82('0x37')](_0x1d5a93[_0x0e82('0x2b')][_0x0e82('0x37')]);_0x571474[_0x0e82('0x38')]=qs[_0x0e82('0x2d')](_[_0x0e82('0x39')](_0x1d5a93[_0x0e82('0x2b')],_0x1285a4['filters']),_0x46310a);if(_0x1d5a93['query'][_0x0e82('0x3a')]){_0x571474['where']=_[_0x0e82('0x3b')](_0x571474['where'],{'$or':_[_0x0e82('0x27')](_0x46310a,function(_0x44dbda){if(_0x44dbda['type']!==_0x0e82('0x3c')){var _0x5294c7={};_0x5294c7[_0x44dbda[_0x0e82('0x24')]]={'$like':'%'+_0x1d5a93[_0x0e82('0x2b')]['filter']+'%'};return _0x5294c7;}})});}_0x571474=_[_0x0e82('0x3b')]({},_0x571474,_0x1d5a93[_0x0e82('0x3d')]);var _0x102264={'where':_0x571474[_0x0e82('0x38')]};return db[_0x0e82('0x28')][_0x0e82('0x1b')](_0x102264)[_0x0e82('0x20')](function(_0xd310f5){_0x19ce90['count']=_0xd310f5;if(_0x1d5a93['query'][_0x0e82('0x3e')]){_0x571474[_0x0e82('0x3f')]=[{'all':!![]}];}return db['AnalyticFieldReport'][_0x0e82('0x40')](_0x571474);})['then'](function(_0x289ad9){_0x19ce90[_0x0e82('0x41')]=_0x289ad9;return _0x19ce90;})['then'](respondWithFilteredResult(_0x5b6481,_0x571474))['catch'](handleError(_0x5b6481,null));};exports[_0x0e82('0x42')]=function(_0x3f9b4a,_0x33d821){var _0x475a89={'raw':![],'where':{'id':_0x3f9b4a['params']['id']}},_0x42bed8={};_0x42bed8[_0x0e82('0x32')]=_[_0x0e82('0x2c')](db['AnalyticFieldReport'][_0x0e82('0x29')]);_0x42bed8[_0x0e82('0x2b')]=_[_0x0e82('0x2c')](_0x3f9b4a[_0x0e82('0x2b')]);_0x42bed8[_0x0e82('0x2d')]=_['intersection'](_0x42bed8[_0x0e82('0x32')],_0x42bed8[_0x0e82('0x2b')]);_0x475a89['attributes']=_['intersection'](_0x42bed8[_0x0e82('0x32')],qs[_0x0e82('0x30')](_0x3f9b4a[_0x0e82('0x2b')][_0x0e82('0x30')]));_0x475a89[_0x0e82('0x2f')]=_0x475a89[_0x0e82('0x2f')][_0x0e82('0x31')]?_0x475a89[_0x0e82('0x2f')]:_0x42bed8[_0x0e82('0x32')];if(_0x3f9b4a['query'][_0x0e82('0x3e')]){_0x475a89[_0x0e82('0x3f')]=[{'all':!![]}];}_0x475a89=_[_0x0e82('0x3b')]({},_0x475a89,_0x3f9b4a[_0x0e82('0x3d')]);return db['AnalyticFieldReport']['find'](_0x475a89)['then'](handleEntityNotFound(_0x33d821,null))[_0x0e82('0x20')](respondWithResult(_0x33d821,null))['catch'](handleError(_0x33d821,null));};exports['create']=function(_0x46b9ec,_0x4a5c3d){return db['AnalyticFieldReport'][_0x0e82('0x43')](_0x46b9ec['body'],{})[_0x0e82('0x20')](respondWithResult(_0x4a5c3d,0xc9))['catch'](handleError(_0x4a5c3d,null));};exports['bulkCreate']=function(_0x556772,_0x3bb89f){return db[_0x0e82('0x28')][_0x0e82('0x44')](_0x556772[_0x0e82('0x45')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x3bb89f,0xc9))['catch'](handleError(_0x3bb89f,null));};exports['update']=function(_0x51c3c7,_0x4e5483){if(_0x51c3c7[_0x0e82('0x45')]['id']){delete _0x51c3c7[_0x0e82('0x45')]['id'];}return db[_0x0e82('0x28')][_0x0e82('0x46')]({'where':{'id':_0x51c3c7['params']['id']}})[_0x0e82('0x20')](handleEntityNotFound(_0x4e5483,null))[_0x0e82('0x20')](saveUpdates(_0x51c3c7[_0x0e82('0x45')],null))[_0x0e82('0x20')](respondWithResult(_0x4e5483,null))[_0x0e82('0x47')](handleError(_0x4e5483,null));};exports[_0x0e82('0x21')]=function(_0x575dcd,_0x49bf47){return db[_0x0e82('0x28')][_0x0e82('0x46')]({'where':{'id':_0x575dcd['params']['id']}})[_0x0e82('0x20')](handleEntityNotFound(_0x49bf47,null))[_0x0e82('0x20')](removeEntity(_0x49bf47,null))[_0x0e82('0x47')](handleError(_0x49bf47,null));};exports[_0x0e82('0x48')]=function(_0x4015ae,_0x3f5f9c){return db[_0x0e82('0x28')][_0x0e82('0x21')]({'where':{'id':_0x4015ae[_0x0e82('0x2b')][_0x0e82('0x49')]||[]},'raw':![],'individualHooks':!![]})[_0x0e82('0x20')](respondWithResult(_0x3f5f9c,0xcc))[_0x0e82('0x47')](handleError(_0x3f5f9c,null));};exports['addFields']=function(_0x558932,_0x522bed,_0x47a30b){return db['AnalyticCustomReport']['findOne']({'where':{'id':_0x558932[_0x0e82('0x4a')]['id']}})[_0x0e82('0x20')](handleEntityNotFound(_0x522bed,null))[_0x0e82('0x20')](function(_0x2634ba){if(_0x2634ba){return db[_0x0e82('0x4b')][_0x0e82('0x4c')](function(_0x3532e5){return db[_0x0e82('0x28')]['destroy']({'where':{'CustomReportId':_0x558932['params']['id']},'transaction':_0x3532e5})[_0x0e82('0x20')](function(_0x4037f7){var _0xe2a3d4=_['map'](_0x558932[_0x0e82('0x45')],function(_0xfff77d){delete _0xfff77d['id'];_0xfff77d[_0x0e82('0x4d')]=_0x558932[_0x0e82('0x4a')]['id'];return _0xfff77d;});return db['AnalyticFieldReport'][_0x0e82('0x44')](_0xe2a3d4,{'transaction':_0x3532e5});});})[_0x0e82('0x20')](function(){return db[_0x0e82('0x28')]['findAll']({'where':{'CustomReportId':_0x558932[_0x0e82('0x4a')]['id']}});});}})[_0x0e82('0x20')](respondWithResult(_0x522bed,null))[_0x0e82('0x47')](handleError(_0x522bed,null));};
\ No newline at end of file
index 75f7c97..1bcd557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedc0=['../../config/logger','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes','exports','AnalyticFieldReport','analytics_report_fields','lodash'];(function(_0xbdd78d,_0x4da511){var _0x1c4047=function(_0x21fb4e){while(--_0x21fb4e){_0xbdd78d['push'](_0xbdd78d['shift']());}};_0x1c4047(++_0x4da511);}(_0xedc0,0x1ad));var _0x0edc=function(_0x4b73a2,_0x40b5fe){_0x4b73a2=_0x4b73a2-0x0;var _0x383c66=_0xedc0[_0x4b73a2];return _0x383c66;};'use strict';var _=require(_0x0edc('0x0'));var util=require('util');var logger=require(_0x0edc('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0edc('0x2'));var fs=require('fs');var path=require(_0x0edc('0x3'));var rimraf=require(_0x0edc('0x4'));var config=require(_0x0edc('0x5'));var attributes=require(_0x0edc('0x6'));module[_0x0edc('0x7')]=function(_0x27f93f,_0x527933){return _0x27f93f['define'](_0x0edc('0x8'),attributes,{'tableName':_0x0edc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7fa2=['AnalyticFieldReport','analytics_report_fields','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x46d58b,_0x3ac96e){var _0x35f192=function(_0x1886f9){while(--_0x1886f9){_0x46d58b['push'](_0x46d58b['shift']());}};_0x35f192(++_0x3ac96e);}(_0x7fa2,0x84));var _0x27fa=function(_0x1b68ba,_0x23687a){_0x1b68ba=_0x1b68ba-0x0;var _0xf49b11=_0x7fa2[_0x1b68ba];return _0xf49b11;};'use strict';var _=require(_0x27fa('0x0'));var util=require(_0x27fa('0x1'));var logger=require('../../config/logger')(_0x27fa('0x2'));var moment=require(_0x27fa('0x3'));var BPromise=require(_0x27fa('0x4'));var rp=require(_0x27fa('0x5'));var fs=require('fs');var path=require(_0x27fa('0x6'));var rimraf=require(_0x27fa('0x7'));var config=require(_0x27fa('0x8'));var attributes=require('./analyticFieldReport.attributes');module[_0x27fa('0x9')]=function(_0xe2f269,_0x58db21){return _0xe2f269[_0x27fa('0xa')](_0x27fa('0xb'),attributes,{'tableName':_0x27fa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 36e58e6..9dda7fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6c0=['message','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x5606e8,_0x29416b){var _0x3d593d=function(_0x3d6d2b){while(--_0x3d6d2b){_0x5606e8['push'](_0x5606e8['shift']());}};_0x3d593d(++_0x29416b);}(_0xb6c0,0x1a7));var _0x0b6c=function(_0x33f25b,_0x383e27){_0x33f25b=_0x33f25b-0x0;var _0x36c5=_0xb6c0[_0x33f25b];return _0x36c5;};'use strict';var _=require(_0x0b6c('0x0'));var util=require(_0x0b6c('0x1'));var moment=require(_0x0b6c('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0b6c('0x3'))['db'];var utils=require(_0x0b6c('0x4'));var logger=require('../../config/logger')(_0x0b6c('0x5'));var config=require(_0x0b6c('0x6'));var jayson=require(_0x0b6c('0x7'));var client=jayson['client'][_0x0b6c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x12e698,_0x5ada05,_0x674523){return new BPromise(function(_0x5a2949,_0x5bc191){return client[_0x0b6c('0x9')](_0x12e698,_0x674523)['then'](function(_0x40c6fb){logger[_0x0b6c('0xa')](_0x0b6c('0xb'),_0x5ada05,_0x0b6c('0xc'));logger[_0x0b6c('0xd')](_0x0b6c('0xe'),_0x5ada05,_0x0b6c('0xc'),JSON[_0x0b6c('0xf')](_0x40c6fb));if(_0x40c6fb[_0x0b6c('0x10')]){if(_0x40c6fb[_0x0b6c('0x10')][_0x0b6c('0x11')]===0x1f4){logger[_0x0b6c('0x10')](_0x0b6c('0xb'),_0x5ada05,_0x40c6fb[_0x0b6c('0x10')][_0x0b6c('0x12')]);return _0x5bc191(_0x40c6fb[_0x0b6c('0x10')][_0x0b6c('0x12')]);}logger[_0x0b6c('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x5ada05,_0x40c6fb[_0x0b6c('0x10')][_0x0b6c('0x12')]);return _0x5a2949(_0x40c6fb[_0x0b6c('0x10')][_0x0b6c('0x12')]);}else{logger[_0x0b6c('0xa')]('AnalyticFieldReport,\x20%s,\x20%s',_0x5ada05,_0x0b6c('0xc'));_0x5a2949(_0x40c6fb[_0x0b6c('0x13')][_0x0b6c('0x12')]);}})[_0x0b6c('0x14')](function(_0x52d771){logger[_0x0b6c('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x5ada05,_0x52d771);_0x5bc191(_0x52d771);});});}
\ No newline at end of file
+var _0x856f=['util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash'];(function(_0x18c630,_0x11393d){var _0x263db5=function(_0x529d84){while(--_0x529d84){_0x18c630['push'](_0x18c630['shift']());}};_0x263db5(++_0x11393d);}(_0x856f,0x77));var _0xf856=function(_0x5efbc3,_0x25cf13){_0x5efbc3=_0x5efbc3-0x0;var _0xac2f5f=_0x856f[_0x5efbc3];return _0xac2f5f;};'use strict';var _=require(_0xf856('0x0'));var util=require(_0xf856('0x1'));var moment=require(_0xf856('0x2'));var BPromise=require('bluebird');var rs=require(_0xf856('0x3'));var fs=require('fs');var Redis=require(_0xf856('0x4'));var db=require(_0xf856('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf856('0x6'))(_0xf856('0x7'));var config=require(_0xf856('0x8'));var jayson=require(_0xf856('0x9'));var client=jayson[_0xf856('0xa')][_0xf856('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2ef733,_0xc1cd23,_0x2c4445){return new BPromise(function(_0x2d1713,_0x3f2e49){return client[_0xf856('0xc')](_0x2ef733,_0x2c4445)[_0xf856('0xd')](function(_0x1aac1a){logger[_0xf856('0xe')](_0xf856('0xf'),_0xc1cd23,'request\x20sent');logger['debug'](_0xf856('0x10'),_0xc1cd23,'request\x20sent',JSON[_0xf856('0x11')](_0x1aac1a));if(_0x1aac1a['error']){if(_0x1aac1a[_0xf856('0x12')][_0xf856('0x13')]===0x1f4){logger[_0xf856('0x12')](_0xf856('0xf'),_0xc1cd23,_0x1aac1a[_0xf856('0x12')][_0xf856('0x14')]);return _0x3f2e49(_0x1aac1a['error'][_0xf856('0x14')]);}logger[_0xf856('0x12')](_0xf856('0xf'),_0xc1cd23,_0x1aac1a[_0xf856('0x12')][_0xf856('0x14')]);return _0x2d1713(_0x1aac1a[_0xf856('0x12')]['message']);}else{logger[_0xf856('0xe')](_0xf856('0xf'),_0xc1cd23,_0xf856('0x15'));_0x2d1713(_0x1aac1a[_0xf856('0x16')]['message']);}})[_0xf856('0x17')](function(_0x22494a){logger[_0xf856('0x12')](_0xf856('0xf'),_0xc1cd23,_0x22494a);_0x3f2e49(_0x22494a);});});}
\ No newline at end of file
index 13ed381..2168755 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(_0x16dd69,_0x76c1d3){var _0x55e637=function(_0x5189e5){while(--_0x5189e5){_0x16dd69['push'](_0x16dd69['shift']());}};_0x55e637(++_0x76c1d3);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'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(_0x5cb2b9,_0x27d7e2){var _0x34c70b=function(_0x2bfc8b){while(--_0x2bfc8b){_0x5cb2b9['push'](_0x5cb2b9['shift']());}};_0x34c70b(++_0x27d7e2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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 1cf50ab..a0cd955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb910=['exports','STRING','name','TEXT','sequelize'];(function(_0x5d5ad6,_0x542852){var _0x2dfbca=function(_0x541f1f){while(--_0x541f1f){_0x5d5ad6['push'](_0x5d5ad6['shift']());}};_0x2dfbca(++_0x542852);}(_0xb910,0x12b));var _0x0b91=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0xb910[_0x4a3898];return _0x25ceb0;};'use strict';var Sequelize=require(_0x0b91('0x0'));module[_0x0b91('0x1')]={'name':{'type':Sequelize[_0x0b91('0x2')],'allowNull':![],'unique':_0x0b91('0x3')},'table':{'type':Sequelize[_0x0b91('0x2')]},'metric':{'type':Sequelize[_0x0b91('0x4')]},'description':{'type':Sequelize[_0x0b91('0x2')]}};
\ No newline at end of file
+var _0xd138=['exports','STRING','sequelize'];(function(_0x2c09cb,_0x46f313){var _0x33e31d=function(_0x7a56f8){while(--_0x7a56f8){_0x2c09cb['push'](_0x2c09cb['shift']());}};_0x33e31d(++_0x46f313);}(_0xd138,0x1dc));var _0x8d13=function(_0x3a1d7d,_0x11dfbd){_0x3a1d7d=_0x3a1d7d-0x0;var _0x2af564=_0xd138[_0x3a1d7d];return _0x2af564;};'use strict';var Sequelize=require(_0x8d13('0x0'));module[_0x8d13('0x1')]={'name':{'type':Sequelize[_0x8d13('0x2')],'allowNull':![],'unique':'name'},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0x8d13('0x2')]}};
\ No newline at end of file
index 317d705..5fca5d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','get','UserProfileResource','destroy','end','error','stack','name','send','index','AnalyticMetric','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','rows','show','params','create','body','role','user','Metrics','find','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x470a3a,_0x195cc3){var _0x4892b3=function(_0x4b0354){while(--_0x4b0354){_0x470a3a['push'](_0x470a3a['shift']());}};_0x4892b3(++_0x195cc3);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x48c1bf,_0x2e76bf){_0x48c1bf=_0x48c1bf-0x0;var _0x3172b7=_0x7fbe[_0x48c1bf];return _0x3172b7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe7fb('0x0'));var jsonpatch=require(_0xe7fb('0x1'));var rp=require(_0xe7fb('0x2'));var moment=require(_0xe7fb('0x3'));var BPromise=require(_0xe7fb('0x4'));var Mustache=require(_0xe7fb('0x5'));var util=require(_0xe7fb('0x6'));var path=require(_0xe7fb('0x7'));var sox=require(_0xe7fb('0x8'));var csv=require(_0xe7fb('0x9'));var ejs=require(_0xe7fb('0xa'));var fs=require('fs');var fs_extra=require(_0xe7fb('0xb'));var _=require(_0xe7fb('0xc'));var squel=require(_0xe7fb('0xd'));var crypto=require('crypto');var jsforce=require(_0xe7fb('0xe'));var deskjs=require(_0xe7fb('0xf'));var toCsv=require(_0xe7fb('0x9'));var querystring=require(_0xe7fb('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe7fb('0x11'));var qs=require(_0xe7fb('0x12'));var as=require(_0xe7fb('0x13'));var hardwareService=require(_0xe7fb('0x14'));var logger=require(_0xe7fb('0x15'))(_0xe7fb('0x16'));var utils=require(_0xe7fb('0x17'));var config=require(_0xe7fb('0x18'));var licenseUtil=require(_0xe7fb('0x19'));var db=require(_0xe7fb('0x1a'))['db'];function respondWithStatusCode(_0x2437d4,_0x188e1d){_0x188e1d=_0x188e1d||0xcc;return function(_0xdf9760){if(_0xdf9760){return _0x2437d4[_0xe7fb('0x1b')](_0x188e1d);}return _0x2437d4[_0xe7fb('0x1c')](_0x188e1d)['end']();};}function respondWithResult(_0x278b75,_0x2225e5){_0x2225e5=_0x2225e5||0xc8;return function(_0x5573ab){if(_0x5573ab){return _0x278b75[_0xe7fb('0x1c')](_0x2225e5)[_0xe7fb('0x1d')](_0x5573ab);}};}function respondWithFilteredResult(_0x482f7d,_0xa76acf){return function(_0x559129){if(_0x559129){var _0x12fff6=typeof _0xa76acf[_0xe7fb('0x1e')]===_0xe7fb('0x1f')&&typeof _0xa76acf[_0xe7fb('0x20')]==='undefined';var _0x892b0f=_0x559129['count'];var _0x293a47=_0x12fff6?0x0:_0xa76acf['offset'];var _0x1e77fd=_0x12fff6?_0x559129[_0xe7fb('0x21')]:_0xa76acf[_0xe7fb('0x1e')]+_0xa76acf[_0xe7fb('0x20')];var _0x5df1a1;if(_0x1e77fd>=_0x892b0f){_0x1e77fd=_0x892b0f;_0x5df1a1=0xc8;}else{_0x5df1a1=0xce;}_0x482f7d[_0xe7fb('0x1c')](_0x5df1a1);return _0x482f7d['set'](_0xe7fb('0x22'),_0x293a47+'-'+_0x1e77fd+'/'+_0x892b0f)['json'](_0x559129);}return null;};}function patchUpdates(_0x15f7a4){return function(_0x4ea664){try{jsonpatch[_0xe7fb('0x23')](_0x4ea664,_0x15f7a4,!![]);}catch(_0x135624){return BPromise['reject'](_0x135624);}return _0x4ea664[_0xe7fb('0x24')]();};}function saveUpdates(_0x4742bd,_0x3ae8f1){return function(_0x4dcb4b){if(_0x4dcb4b){return _0x4dcb4b[_0xe7fb('0x25')](_0x4742bd)[_0xe7fb('0x26')](function(_0x5da3d9){return _0x5da3d9;});}return null;};}function removeEntity(_0x5bea27,_0x52f08b){return function(_0x35e4db){if(_0x35e4db){return _0x35e4db['destroy']()['then'](function(){var _0x4026b1=_0x35e4db[_0xe7fb('0x27')]({'plain':!![]});var _0x2996ae='Metrics';return db[_0xe7fb('0x28')][_0xe7fb('0x29')]({'where':{'type':_0x2996ae,'resourceId':_0x4026b1['id']}})[_0xe7fb('0x26')](function(){return _0x35e4db;});})[_0xe7fb('0x26')](function(){_0x5bea27[_0xe7fb('0x1c')](0xcc)[_0xe7fb('0x2a')]();});}};}function handleEntityNotFound(_0x380130,_0x59e015){return function(_0x5df9f2){if(!_0x5df9f2){_0x380130[_0xe7fb('0x1b')](0x194);}return _0x5df9f2;};}function handleError(_0x3bdee9,_0xead63){_0xead63=_0xead63||0x1f4;return function(_0x4fd290){logger[_0xe7fb('0x2b')](_0x4fd290[_0xe7fb('0x2c')]);if(_0x4fd290[_0xe7fb('0x2d')]){delete _0x4fd290[_0xe7fb('0x2d')];}_0x3bdee9[_0xe7fb('0x1c')](_0xead63)[_0xe7fb('0x2e')](_0x4fd290);};}exports[_0xe7fb('0x2f')]=function(_0x3dd0be,_0x4ce993){var _0x3d1fb5={},_0x1742f3={},_0x29d1ca={'count':0x0,'rows':[]};var _0x547a04=_['map'](db[_0xe7fb('0x30')]['rawAttributes'],function(_0xac56b4){return{'name':_0xac56b4[_0xe7fb('0x31')],'type':_0xac56b4[_0xe7fb('0x32')][_0xe7fb('0x33')]};});_0x1742f3['model']=_[_0xe7fb('0x34')](_0x547a04,_0xe7fb('0x2d'));_0x1742f3[_0xe7fb('0x35')]=_[_0xe7fb('0x36')](_0x3dd0be[_0xe7fb('0x35')]);_0x1742f3['filters']=_[_0xe7fb('0x37')](_0x1742f3[_0xe7fb('0x38')],_0x1742f3[_0xe7fb('0x35')]);_0x3d1fb5[_0xe7fb('0x39')]=_[_0xe7fb('0x37')](_0x1742f3[_0xe7fb('0x38')],qs[_0xe7fb('0x3a')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x3a')]));_0x3d1fb5['attributes']=_0x3d1fb5[_0xe7fb('0x39')][_0xe7fb('0x3b')]?_0x3d1fb5[_0xe7fb('0x39')]:_0x1742f3['model'];if(!_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x3c')](_0xe7fb('0x3d'))){_0x3d1fb5[_0xe7fb('0x20')]=qs[_0xe7fb('0x20')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x20')]);_0x3d1fb5[_0xe7fb('0x1e')]=qs[_0xe7fb('0x1e')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x1e')]);}_0x3d1fb5[_0xe7fb('0x3e')]=qs[_0xe7fb('0x3f')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x3f')]);_0x3d1fb5[_0xe7fb('0x40')]=qs[_0xe7fb('0x41')](_[_0xe7fb('0x42')](_0x3dd0be[_0xe7fb('0x35')],_0x1742f3['filters']),_0x547a04);if(_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x43')]){_0x3d1fb5[_0xe7fb('0x40')]=_[_0xe7fb('0x44')](_0x3d1fb5['where'],{'$or':_[_0xe7fb('0x34')](_0x547a04,function(_0x186418){if(_0x186418[_0xe7fb('0x32')]!==_0xe7fb('0x45')){var _0x49fe9d={};_0x49fe9d[_0x186418[_0xe7fb('0x2d')]]={'$like':'%'+_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x43')]+'%'};return _0x49fe9d;}})});}_0x3d1fb5=_[_0xe7fb('0x44')]({},_0x3d1fb5,_0x3dd0be[_0xe7fb('0x46')]);var _0xb729fc={'where':_0x3d1fb5['where']};return db[_0xe7fb('0x30')][_0xe7fb('0x21')](_0xb729fc)[_0xe7fb('0x26')](function(_0x4b263d){_0x29d1ca[_0xe7fb('0x21')]=_0x4b263d;if(_0x3dd0be[_0xe7fb('0x35')]['includeAll']){_0x3d1fb5['include']=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x3d1fb5);})['then'](function(_0x900d67){_0x29d1ca[_0xe7fb('0x47')]=_0x900d67;return _0x29d1ca;})[_0xe7fb('0x26')](respondWithFilteredResult(_0x4ce993,_0x3d1fb5))['catch'](handleError(_0x4ce993,null));};exports[_0xe7fb('0x48')]=function(_0x58d743,_0x19277f){var _0x32cfa4={'raw':!![],'where':{'id':_0x58d743[_0xe7fb('0x49')]['id']}},_0x4d29d3={};_0x4d29d3[_0xe7fb('0x38')]=_[_0xe7fb('0x36')](db[_0xe7fb('0x30')]['rawAttributes']);_0x4d29d3[_0xe7fb('0x35')]=_[_0xe7fb('0x36')](_0x58d743[_0xe7fb('0x35')]);_0x4d29d3['filters']=_[_0xe7fb('0x37')](_0x4d29d3[_0xe7fb('0x38')],_0x4d29d3[_0xe7fb('0x35')]);_0x32cfa4[_0xe7fb('0x39')]=_[_0xe7fb('0x37')](_0x4d29d3['model'],qs[_0xe7fb('0x3a')](_0x58d743['query'][_0xe7fb('0x3a')]));_0x32cfa4[_0xe7fb('0x39')]=_0x32cfa4[_0xe7fb('0x39')][_0xe7fb('0x3b')]?_0x32cfa4[_0xe7fb('0x39')]:_0x4d29d3['model'];if(_0x58d743[_0xe7fb('0x35')]['includeAll']){_0x32cfa4['include']=[{'all':!![]}];}_0x32cfa4=_[_0xe7fb('0x44')]({},_0x32cfa4,_0x58d743[_0xe7fb('0x46')]);return db[_0xe7fb('0x30')]['find'](_0x32cfa4)[_0xe7fb('0x26')](handleEntityNotFound(_0x19277f,null))[_0xe7fb('0x26')](respondWithResult(_0x19277f,null))['catch'](handleError(_0x19277f,null));};exports['create']=function(_0x284bcb,_0x42270b){return db[_0xe7fb('0x30')][_0xe7fb('0x4a')](_0x284bcb[_0xe7fb('0x4b')],{})[_0xe7fb('0x26')](function(_0x18a590){var _0x347177=_0x284bcb['user'][_0xe7fb('0x27')]({'plain':!![]});if(!_0x347177)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x347177[_0xe7fb('0x4c')]===_0xe7fb('0x4d')){var _0x5cedfb=_0x18a590[_0xe7fb('0x27')]({'plain':!![]});var _0x5efd24=_0xe7fb('0x4e');return db['UserProfileSection'][_0xe7fb('0x4f')]({'where':{'name':_0x5efd24,'userProfileId':_0x347177['userProfileId']},'raw':!![]})[_0xe7fb('0x26')](function(_0x59158c){if(_0x59158c&&_0x59158c[_0xe7fb('0x50')]===0x0){return db[_0xe7fb('0x28')][_0xe7fb('0x4a')]({'name':_0x5cedfb[_0xe7fb('0x2d')],'resourceId':_0x5cedfb['id'],'type':_0x59158c[_0xe7fb('0x2d')],'sectionId':_0x59158c['id']},{})[_0xe7fb('0x26')](function(){return _0x18a590;});}else{return _0x18a590;}})[_0xe7fb('0x51')](function(_0x582a4a){logger['error'](_0xe7fb('0x52'),_0x582a4a);throw _0x582a4a;});}return _0x18a590;})['then'](respondWithResult(_0x42270b,0xc9))['catch'](handleError(_0x42270b,null));};exports['update']=function(_0x50b8df,_0x539252){if(_0x50b8df[_0xe7fb('0x4b')]['id']){delete _0x50b8df[_0xe7fb('0x4b')]['id'];}return db[_0xe7fb('0x30')][_0xe7fb('0x4f')]({'where':{'id':_0x50b8df['params']['id']}})[_0xe7fb('0x26')](handleEntityNotFound(_0x539252,null))[_0xe7fb('0x26')](saveUpdates(_0x50b8df[_0xe7fb('0x4b')],null))['then'](respondWithResult(_0x539252,null))['catch'](handleError(_0x539252,null));};exports[_0xe7fb('0x29')]=function(_0x377e5f,_0x300b8e){return db['AnalyticMetric'][_0xe7fb('0x4f')]({'where':{'id':_0x377e5f[_0xe7fb('0x49')]['id']}})[_0xe7fb('0x26')](handleEntityNotFound(_0x300b8e,null))[_0xe7fb('0x26')](removeEntity(_0x300b8e,null))['catch'](handleError(_0x300b8e,null));};
\ No newline at end of file
+var _0xabce=['includeAll','rows','show','params','intersection','length','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','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','get','Metrics','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','fieldName','type','model','keys','query','filters','attributes','fields','hasOwnProperty','nolimit','order','filter','merge','VIRTUAL','options'];(function(_0x288053,_0x1b9f51){var _0x27dc28=function(_0x4839b0){while(--_0x4839b0){_0x288053['push'](_0x288053['shift']());}};_0x27dc28(++_0x1b9f51);}(_0xabce,0x103));var _0xeabc=function(_0x20c9b2,_0x55d7b1){_0x20c9b2=_0x20c9b2-0x0;var _0x2c6030=_0xabce[_0x20c9b2];return _0x2c6030;};'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(){var _0x480440=_0x319119[_0xeabc('0x26')]({'plain':!![]});var _0x4d4e29=_0xeabc('0x27');return db[_0xeabc('0x28')][_0xeabc('0x29')]({'where':{'type':_0x4d4e29,'resourceId':_0x480440['id']}})[_0xeabc('0x25')](function(){return _0x319119;});})[_0xeabc('0x25')](function(){_0x3854d2[_0xeabc('0x1a')](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4c2693,_0x5b2934){return function(_0x459c8a){if(!_0x459c8a){_0x4c2693['sendStatus'](0x194);}return _0x459c8a;};}function handleError(_0x3c1b5b,_0x2b342c){_0x2b342c=_0x2b342c||0x1f4;return function(_0x48fb52){logger[_0xeabc('0x2a')](_0x48fb52[_0xeabc('0x2b')]);if(_0x48fb52[_0xeabc('0x2c')]){delete _0x48fb52[_0xeabc('0x2c')];}_0x3c1b5b[_0xeabc('0x1a')](_0x2b342c)[_0xeabc('0x2d')](_0x48fb52);};}exports[_0xeabc('0x2e')]=function(_0x38dc0a,_0x2915c1){var _0x5ebb86={},_0x5b34dd={},_0x5bb1f1={'count':0x0,'rows':[]};var _0x2f03e8=_[_0xeabc('0x2f')](db[_0xeabc('0x30')][_0xeabc('0x31')],function(_0x73c8d4){return{'name':_0x73c8d4[_0xeabc('0x32')],'type':_0x73c8d4[_0xeabc('0x33')]['key']};});_0x5b34dd[_0xeabc('0x34')]=_[_0xeabc('0x2f')](_0x2f03e8,_0xeabc('0x2c'));_0x5b34dd['query']=_[_0xeabc('0x35')](_0x38dc0a[_0xeabc('0x36')]);_0x5b34dd[_0xeabc('0x37')]=_['intersection'](_0x5b34dd[_0xeabc('0x34')],_0x5b34dd[_0xeabc('0x36')]);_0x5ebb86[_0xeabc('0x38')]=_['intersection'](_0x5b34dd[_0xeabc('0x34')],qs[_0xeabc('0x39')](_0x38dc0a['query']['fields']));_0x5ebb86[_0xeabc('0x38')]=_0x5ebb86[_0xeabc('0x38')]['length']?_0x5ebb86[_0xeabc('0x38')]:_0x5b34dd[_0xeabc('0x34')];if(!_0x38dc0a[_0xeabc('0x36')][_0xeabc('0x3a')](_0xeabc('0x3b'))){_0x5ebb86['limit']=qs[_0xeabc('0x1d')](_0x38dc0a['query'][_0xeabc('0x1d')]);_0x5ebb86[_0xeabc('0x1f')]=qs[_0xeabc('0x1f')](_0x38dc0a['query']['offset']);}_0x5ebb86[_0xeabc('0x3c')]=qs['sort'](_0x38dc0a[_0xeabc('0x36')]['sort']);_0x5ebb86['where']=qs['filters'](_['pick'](_0x38dc0a[_0xeabc('0x36')],_0x5b34dd['filters']),_0x2f03e8);if(_0x38dc0a[_0xeabc('0x36')][_0xeabc('0x3d')]){_0x5ebb86['where']=_[_0xeabc('0x3e')](_0x5ebb86['where'],{'$or':_[_0xeabc('0x2f')](_0x2f03e8,function(_0x58aafe){if(_0x58aafe[_0xeabc('0x33')]!==_0xeabc('0x3f')){var _0xeeef02={};_0xeeef02[_0x58aafe['name']]={'$like':'%'+_0x38dc0a['query']['filter']+'%'};return _0xeeef02;}})});}_0x5ebb86=_[_0xeabc('0x3e')]({},_0x5ebb86,_0x38dc0a[_0xeabc('0x40')]);var _0xafa59b={'where':_0x5ebb86['where']};return db['AnalyticMetric'][_0xeabc('0x1e')](_0xafa59b)[_0xeabc('0x25')](function(_0x5e9cb3){_0x5bb1f1[_0xeabc('0x1e')]=_0x5e9cb3;if(_0x38dc0a['query'][_0xeabc('0x41')]){_0x5ebb86['include']=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x5ebb86);})[_0xeabc('0x25')](function(_0x37c926){_0x5bb1f1[_0xeabc('0x42')]=_0x37c926;return _0x5bb1f1;})[_0xeabc('0x25')](respondWithFilteredResult(_0x2915c1,_0x5ebb86))['catch'](handleError(_0x2915c1,null));};exports[_0xeabc('0x43')]=function(_0x555d26,_0x7d5add){var _0x1a4bbe={'raw':!![],'where':{'id':_0x555d26[_0xeabc('0x44')]['id']}},_0x3a7807={};_0x3a7807[_0xeabc('0x34')]=_['keys'](db['AnalyticMetric'][_0xeabc('0x31')]);_0x3a7807['query']=_[_0xeabc('0x35')](_0x555d26[_0xeabc('0x36')]);_0x3a7807['filters']=_[_0xeabc('0x45')](_0x3a7807[_0xeabc('0x34')],_0x3a7807[_0xeabc('0x36')]);_0x1a4bbe[_0xeabc('0x38')]=_[_0xeabc('0x45')](_0x3a7807[_0xeabc('0x34')],qs[_0xeabc('0x39')](_0x555d26['query'][_0xeabc('0x39')]));_0x1a4bbe[_0xeabc('0x38')]=_0x1a4bbe[_0xeabc('0x38')][_0xeabc('0x46')]?_0x1a4bbe[_0xeabc('0x38')]:_0x3a7807[_0xeabc('0x34')];if(_0x555d26[_0xeabc('0x36')][_0xeabc('0x41')]){_0x1a4bbe[_0xeabc('0x47')]=[{'all':!![]}];}_0x1a4bbe=_[_0xeabc('0x3e')]({},_0x1a4bbe,_0x555d26['options']);return db[_0xeabc('0x30')][_0xeabc('0x48')](_0x1a4bbe)[_0xeabc('0x25')](handleEntityNotFound(_0x7d5add,null))[_0xeabc('0x25')](respondWithResult(_0x7d5add,null))[_0xeabc('0x49')](handleError(_0x7d5add,null));};exports[_0xeabc('0x4a')]=function(_0x268d95,_0x48df43){return db[_0xeabc('0x30')][_0xeabc('0x4a')](_0x268d95[_0xeabc('0x4b')],{})[_0xeabc('0x25')](function(_0x47440e){var _0x58e2c1=_0x268d95[_0xeabc('0x4c')][_0xeabc('0x26')]({'plain':!![]});if(!_0x58e2c1)throw new Error(_0xeabc('0x4d'));if(_0x58e2c1[_0xeabc('0x4e')]==='user'){var _0x400b82=_0x47440e[_0xeabc('0x26')]({'plain':!![]});var _0x568847=_0xeabc('0x27');return db['UserProfileSection'][_0xeabc('0x48')]({'where':{'name':_0x568847,'userProfileId':_0x58e2c1['userProfileId']},'raw':!![]})[_0xeabc('0x25')](function(_0x2ec94c){if(_0x2ec94c&&_0x2ec94c[_0xeabc('0x4f')]===0x0){return db[_0xeabc('0x28')][_0xeabc('0x4a')]({'name':_0x400b82[_0xeabc('0x2c')],'resourceId':_0x400b82['id'],'type':_0x2ec94c[_0xeabc('0x2c')],'sectionId':_0x2ec94c['id']},{})[_0xeabc('0x25')](function(){return _0x47440e;});}else{return _0x47440e;}})[_0xeabc('0x49')](function(_0x6423f3){logger['error'](_0xeabc('0x50'),_0x6423f3);throw _0x6423f3;});}return _0x47440e;})[_0xeabc('0x25')](respondWithResult(_0x48df43,0xc9))[_0xeabc('0x49')](handleError(_0x48df43,null));};exports[_0xeabc('0x24')]=function(_0x555d6b,_0x1cef45){if(_0x555d6b[_0xeabc('0x4b')]['id']){delete _0x555d6b[_0xeabc('0x4b')]['id'];}return db[_0xeabc('0x30')]['find']({'where':{'id':_0x555d6b[_0xeabc('0x44')]['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x1cef45,null))[_0xeabc('0x25')](saveUpdates(_0x555d6b[_0xeabc('0x4b')],null))[_0xeabc('0x25')](respondWithResult(_0x1cef45,null))[_0xeabc('0x49')](handleError(_0x1cef45,null));};exports[_0xeabc('0x29')]=function(_0x3ff38c,_0x17acf8){return db['AnalyticMetric'][_0xeabc('0x48')]({'where':{'id':_0x3ff38c['params']['id']}})['then'](handleEntityNotFound(_0x17acf8,null))['then'](removeEntity(_0x17acf8,null))[_0xeabc('0x49')](handleError(_0x17acf8,null));};
\ No newline at end of file
index 08c4c29..380c1e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c49=['analytics_metrics','lodash','util','moment','request-promise','path','./analyticMetric.attributes','exports','define','AnalyticMetric'];(function(_0x4a095e,_0x381cd5){var _0x10ef73=function(_0x1f6964){while(--_0x1f6964){_0x4a095e['push'](_0x4a095e['shift']());}};_0x10ef73(++_0x381cd5);}(_0x7c49,0x141));var _0x97c4=function(_0x1c9b04,_0x2f3641){_0x1c9b04=_0x1c9b04-0x0;var _0x132775=_0x7c49[_0x1c9b04];return _0x132775;};'use strict';var _=require(_0x97c4('0x0'));var util=require(_0x97c4('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x97c4('0x2'));var BPromise=require('bluebird');var rp=require(_0x97c4('0x3'));var fs=require('fs');var path=require(_0x97c4('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x97c4('0x5'));module[_0x97c4('0x6')]=function(_0x2f02ec,_0x538c14){return _0x2f02ec[_0x97c4('0x7')](_0x97c4('0x8'),attributes,{'tableName':_0x97c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfc9b=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./analyticMetric.attributes','exports','define','AnalyticMetric','analytics_metrics','lodash'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xfc9b,0x74));var _0xbfc9=function(_0x199484,_0x2f2838){_0x199484=_0x199484-0x0;var _0x555a87=_0xfc9b[_0x199484];return _0x555a87;};'use strict';var _=require(_0xbfc9('0x0'));var util=require(_0xbfc9('0x1'));var logger=require(_0xbfc9('0x2'))(_0xbfc9('0x3'));var moment=require(_0xbfc9('0x4'));var BPromise=require(_0xbfc9('0x5'));var rp=require(_0xbfc9('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbfc9('0x7'));var config=require('../../config/environment');var attributes=require(_0xbfc9('0x8'));module[_0xbfc9('0x9')]=function(_0x523ff1,_0x1dbece){return _0x523ff1[_0xbfc9('0xa')](_0xbfc9('0xb'),attributes,{'tableName':_0xbfc9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 74068ac..b736291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3231=['debug','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticMetric,\x20%s,\x20%s','request\x20sent'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x3231,0x1b7));var _0x1323=function(_0x2c778f,_0x436c94){_0x2c778f=_0x2c778f-0x0;var _0x43529e=_0x3231[_0x2c778f];return _0x43529e;};'use strict';var _=require(_0x1323('0x0'));var util=require(_0x1323('0x1'));var moment=require(_0x1323('0x2'));var BPromise=require(_0x1323('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1323('0x4'));var db=require(_0x1323('0x5'))['db'];var utils=require(_0x1323('0x6'));var logger=require(_0x1323('0x7'))(_0x1323('0x8'));var config=require(_0x1323('0x9'));var jayson=require(_0x1323('0xa'));var client=jayson[_0x1323('0xb')][_0x1323('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4abf66,_0x1d272a,_0xb1587f){return new BPromise(function(_0x3713a9,_0x57d8d9){return client[_0x1323('0xd')](_0x4abf66,_0xb1587f)[_0x1323('0xe')](function(_0x19c578){logger['info'](_0x1323('0xf'),_0x1d272a,_0x1323('0x10'));logger[_0x1323('0x11')]('AnalyticMetric,\x20%s,\x20%s,\x20%s',_0x1d272a,_0x1323('0x10'),JSON[_0x1323('0x12')](_0x19c578));if(_0x19c578[_0x1323('0x13')]){if(_0x19c578[_0x1323('0x13')]['code']===0x1f4){logger[_0x1323('0x13')](_0x1323('0xf'),_0x1d272a,_0x19c578[_0x1323('0x13')][_0x1323('0x14')]);return _0x57d8d9(_0x19c578['error']['message']);}logger[_0x1323('0x13')](_0x1323('0xf'),_0x1d272a,_0x19c578['error'][_0x1323('0x14')]);return _0x3713a9(_0x19c578[_0x1323('0x13')][_0x1323('0x14')]);}else{logger[_0x1323('0x15')](_0x1323('0xf'),_0x1d272a,_0x1323('0x10'));_0x3713a9(_0x19c578[_0x1323('0x16')][_0x1323('0x14')]);}})[_0x1323('0x17')](function(_0x50fc97){logger[_0x1323('0x13')]('AnalyticMetric,\x20%s,\x20%s',_0x1d272a,_0x50fc97);_0x57d8d9(_0x50fc97);});});}
\ No newline at end of file
+var _0xa67d=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticMetric,\x20%s,\x20%s','message','lodash'];(function(_0x3e95a8,_0xa7af87){var _0x1d8724=function(_0xd751a7){while(--_0xd751a7){_0x3e95a8['push'](_0x3e95a8['shift']());}};_0x1d8724(++_0xa7af87);}(_0xa67d,0x197));var _0xda67=function(_0x5cb1a5,_0x13016f){_0x5cb1a5=_0x5cb1a5-0x0;var _0x533f56=_0xa67d[_0x5cb1a5];return _0x533f56;};'use strict';var _=require(_0xda67('0x0'));var util=require(_0xda67('0x1'));var moment=require(_0xda67('0x2'));var BPromise=require(_0xda67('0x3'));var rs=require(_0xda67('0x4'));var fs=require('fs');var Redis=require(_0xda67('0x5'));var db=require(_0xda67('0x6'))['db'];var utils=require(_0xda67('0x7'));var logger=require(_0xda67('0x8'))(_0xda67('0x9'));var config=require(_0xda67('0xa'));var jayson=require(_0xda67('0xb'));var client=jayson['client'][_0xda67('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4176cc,_0x57178d,_0x17927c){return new BPromise(function(_0x39ad4e,_0x1e40d2){return client[_0xda67('0xd')](_0x4176cc,_0x17927c)[_0xda67('0xe')](function(_0x2a9149){logger[_0xda67('0xf')]('AnalyticMetric,\x20%s,\x20%s',_0x57178d,_0xda67('0x10'));logger[_0xda67('0x11')](_0xda67('0x12'),_0x57178d,'request\x20sent',JSON[_0xda67('0x13')](_0x2a9149));if(_0x2a9149[_0xda67('0x14')]){if(_0x2a9149[_0xda67('0x14')][_0xda67('0x15')]===0x1f4){logger[_0xda67('0x14')](_0xda67('0x16'),_0x57178d,_0x2a9149[_0xda67('0x14')][_0xda67('0x17')]);return _0x1e40d2(_0x2a9149[_0xda67('0x14')]['message']);}logger[_0xda67('0x14')](_0xda67('0x16'),_0x57178d,_0x2a9149[_0xda67('0x14')][_0xda67('0x17')]);return _0x39ad4e(_0x2a9149[_0xda67('0x14')][_0xda67('0x17')]);}else{logger[_0xda67('0xf')](_0xda67('0x16'),_0x57178d,_0xda67('0x10'));_0x39ad4e(_0x2a9149['result']['message']);}})['catch'](function(_0x1176d2){logger[_0xda67('0x14')](_0xda67('0x16'),_0x57178d,_0x1176d2);_0x1e40d2(_0x1176d2);});});}
\ No newline at end of file
index 5d5a307..a2eb00a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96e0=['multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','put','delete','exports'];(function(_0x1852e8,_0x4ed6ed){var _0x140fe2=function(_0x44b706){while(--_0x44b706){_0x1852e8['push'](_0x1852e8['shift']());}};_0x140fe2(++_0x4ed6ed);}(_0x96e0,0x7e));var _0x096e=function(_0x3c4a8b,_0x5978eb){_0x3c4a8b=_0x3c4a8b-0x0;var _0x5ea993=_0x96e0[_0x3c4a8b];return _0x5ea993;};'use strict';var multer=require(_0x096e('0x0'));var util=require('util');var path=require(_0x096e('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x096e('0x2')]();var fs_extra=require(_0x096e('0x3'));var auth=require(_0x096e('0x4'));var interaction=require(_0x096e('0x5'));var config=require('../../config/environment');var controller=require('./analyticMetric.controller');router['get']('/',auth[_0x096e('0x6')](),controller[_0x096e('0x7')]);router[_0x096e('0x8')](_0x096e('0x9'),auth[_0x096e('0x6')](),controller[_0x096e('0xa')]);router['post']('/',auth[_0x096e('0x6')](),controller['create']);router[_0x096e('0xb')](_0x096e('0x9'),auth[_0x096e('0x6')](),controller['update']);router[_0x096e('0xc')](_0x096e('0x9'),auth[_0x096e('0x6')](),controller['destroy']);module[_0x096e('0xd')]=router;
\ No newline at end of file
+var _0x3a0f=['destroy','exports','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','/:id','show','create','put','update','delete'];(function(_0x1a8207,_0x576621){var _0x4bc774=function(_0x228d2e){while(--_0x228d2e){_0x1a8207['push'](_0x1a8207['shift']());}};_0x4bc774(++_0x576621);}(_0x3a0f,0x145));var _0xf3a0=function(_0x5b3c28,_0xe10c9d){_0x5b3c28=_0x5b3c28-0x0;var _0x196e15=_0x3a0f[_0x5b3c28];return _0x196e15;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf3a0('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf3a0('0x1')]();var fs_extra=require(_0xf3a0('0x2'));var auth=require(_0xf3a0('0x3'));var interaction=require(_0xf3a0('0x4'));var config=require(_0xf3a0('0x5'));var controller=require(_0xf3a0('0x6'));router[_0xf3a0('0x7')]('/',auth[_0xf3a0('0x8')](),controller['index']);router[_0xf3a0('0x7')](_0xf3a0('0x9'),auth[_0xf3a0('0x8')](),controller[_0xf3a0('0xa')]);router['post']('/',auth[_0xf3a0('0x8')](),controller[_0xf3a0('0xb')]);router[_0xf3a0('0xc')](_0xf3a0('0x9'),auth[_0xf3a0('0x8')](),controller[_0xf3a0('0xd')]);router[_0xf3a0('0xe')](_0xf3a0('0x9'),auth['isAuthenticated'](),controller[_0xf3a0('0xf')]);module[_0xf3a0('0x10')]=router;
\ No newline at end of file
index 953eb36..3170ecf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c10=['exports'];(function(_0x158783,_0x3c08da){var _0x48de1c=function(_0x3e0715){while(--_0x3e0715){_0x158783['push'](_0x158783['shift']());}};_0x48de1c(++_0x3c08da);}(_0x3c10,0x134));var _0x03c1=function(_0x2769e9,_0x5f389c){_0x2769e9=_0x2769e9-0x0;var _0x3682d7=_0x3c10[_0x2769e9];return _0x3682d7;};'use strict';var Sequelize=require('sequelize');module[_0x03c1('0x0')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0x95d8=['sequelize','TEXT'];(function(_0x4946cb,_0xf13214){var _0x2cb394=function(_0x5182a0){while(--_0x5182a0){_0x4946cb['push'](_0x4946cb['shift']());}};_0x2cb394(++_0xf13214);}(_0x95d8,0x11e));var _0x895d=function(_0x4e98fb,_0x48f42e){_0x4e98fb=_0x4e98fb-0x0;var _0x4a57f0=_0x95d8[_0x4e98fb];return _0x4a57f0;};'use strict';var Sequelize=require(_0x895d('0x0'));module['exports']={'tree':{'type':Sequelize[_0x895d('0x1')],'allowNull':![]}};
\ No newline at end of file
index d1f87e0..1d6a279 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4117=['create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','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','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','index','map','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','count','includeAll','include','AnalyticTreeReport','findAll','rows','show','rawAttributes','find','catch'];(function(_0x41c613,_0xe0d83d){var _0x268d6c=function(_0x393404){while(--_0x393404){_0x41c613['push'](_0x41c613['shift']());}};_0x268d6c(++_0xe0d83d);}(_0x4117,0x1e3));var _0x7411=function(_0x3c0964,_0x48416f){_0x3c0964=_0x3c0964-0x0;var _0x44bb35=_0x4117[_0x3c0964];return _0x44bb35;};'use strict';var emlformat=require(_0x7411('0x0'));var rimraf=require(_0x7411('0x1'));var zipdir=require(_0x7411('0x2'));var jsonpatch=require(_0x7411('0x3'));var rp=require('request-promise');var moment=require(_0x7411('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7411('0x5'));var util=require(_0x7411('0x6'));var path=require(_0x7411('0x7'));var sox=require(_0x7411('0x8'));var csv=require(_0x7411('0x9'));var ejs=require(_0x7411('0xa'));var fs=require('fs');var fs_extra=require(_0x7411('0xb'));var _=require(_0x7411('0xc'));var squel=require('squel');var crypto=require(_0x7411('0xd'));var jsforce=require(_0x7411('0xe'));var deskjs=require(_0x7411('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7411('0x10'));var Redis=require('ioredis');var authService=require(_0x7411('0x11'));var qs=require(_0x7411('0x12'));var as=require(_0x7411('0x13'));var hardwareService=require(_0x7411('0x14'));var logger=require(_0x7411('0x15'))(_0x7411('0x16'));var utils=require(_0x7411('0x17'));var config=require(_0x7411('0x18'));var licenseUtil=require(_0x7411('0x19'));var db=require(_0x7411('0x1a'))['db'];function respondWithStatusCode(_0xa468bc,_0x3f6175){_0x3f6175=_0x3f6175||0xcc;return function(_0x42c161){if(_0x42c161){return _0xa468bc[_0x7411('0x1b')](_0x3f6175);}return _0xa468bc['status'](_0x3f6175)[_0x7411('0x1c')]();};}function respondWithResult(_0x31ffa4,_0x647694){_0x647694=_0x647694||0xc8;return function(_0x4fa8ea){if(_0x4fa8ea){return _0x31ffa4[_0x7411('0x1d')](_0x647694)[_0x7411('0x1e')](_0x4fa8ea);}};}function respondWithFilteredResult(_0x4885e5,_0x9f9811){return function(_0x5793f2){if(_0x5793f2){var _0x4cef7d=typeof _0x9f9811[_0x7411('0x1f')]===_0x7411('0x20')&&typeof _0x9f9811[_0x7411('0x21')]===_0x7411('0x20');var _0x3025ad=_0x5793f2['count'];var _0x488323=_0x4cef7d?0x0:_0x9f9811[_0x7411('0x1f')];var _0x222815=_0x4cef7d?_0x5793f2['count']:_0x9f9811[_0x7411('0x1f')]+_0x9f9811[_0x7411('0x21')];var _0x9efa8c;if(_0x222815>=_0x3025ad){_0x222815=_0x3025ad;_0x9efa8c=0xc8;}else{_0x9efa8c=0xce;}_0x4885e5[_0x7411('0x1d')](_0x9efa8c);return _0x4885e5[_0x7411('0x22')](_0x7411('0x23'),_0x488323+'-'+_0x222815+'/'+_0x3025ad)[_0x7411('0x1e')](_0x5793f2);}return null;};}function patchUpdates(_0x584d2f){return function(_0x1e6b06){try{jsonpatch[_0x7411('0x24')](_0x1e6b06,_0x584d2f,!![]);}catch(_0x16a0ac){return BPromise[_0x7411('0x25')](_0x16a0ac);}return _0x1e6b06[_0x7411('0x26')]();};}function saveUpdates(_0x3a06e2,_0x3a4fb7){return function(_0x43ad85){if(_0x43ad85){return _0x43ad85[_0x7411('0x27')](_0x3a06e2)['then'](function(_0x43df8a){return _0x43df8a;});}return null;};}function removeEntity(_0x3c574a,_0x2ab1e5){return function(_0x42c028){if(_0x42c028){return _0x42c028[_0x7411('0x28')]()[_0x7411('0x29')](function(){_0x3c574a[_0x7411('0x1d')](0xcc)[_0x7411('0x1c')]();});}};}function handleEntityNotFound(_0x52f14e,_0x308581){return function(_0x2d48af){if(!_0x2d48af){_0x52f14e[_0x7411('0x1b')](0x194);}return _0x2d48af;};}function handleError(_0x15bf80,_0x300d64){_0x300d64=_0x300d64||0x1f4;return function(_0x140b1f){logger[_0x7411('0x2a')](_0x140b1f[_0x7411('0x2b')]);if(_0x140b1f[_0x7411('0x2c')]){delete _0x140b1f[_0x7411('0x2c')];}_0x15bf80['status'](_0x300d64)['send'](_0x140b1f);};}exports[_0x7411('0x2d')]=function(_0xe78d23,_0x822891){var _0x50b466={},_0x356476={},_0x18f236={'count':0x0,'rows':[]};var _0x12fb31=_[_0x7411('0x2e')](db['AnalyticTreeReport']['rawAttributes'],function(_0x22a173){return{'name':_0x22a173[_0x7411('0x2f')],'type':_0x22a173[_0x7411('0x30')][_0x7411('0x31')]};});_0x356476[_0x7411('0x32')]=_[_0x7411('0x2e')](_0x12fb31,_0x7411('0x2c'));_0x356476[_0x7411('0x33')]=_[_0x7411('0x34')](_0xe78d23[_0x7411('0x33')]);_0x356476[_0x7411('0x35')]=_['intersection'](_0x356476[_0x7411('0x32')],_0x356476[_0x7411('0x33')]);_0x50b466['attributes']=_[_0x7411('0x36')](_0x356476[_0x7411('0x32')],qs[_0x7411('0x37')](_0xe78d23[_0x7411('0x33')][_0x7411('0x37')]));_0x50b466[_0x7411('0x38')]=_0x50b466[_0x7411('0x38')][_0x7411('0x39')]?_0x50b466['attributes']:_0x356476['model'];if(!_0xe78d23[_0x7411('0x33')][_0x7411('0x3a')](_0x7411('0x3b'))){_0x50b466['limit']=qs['limit'](_0xe78d23[_0x7411('0x33')]['limit']);_0x50b466[_0x7411('0x1f')]=qs['offset'](_0xe78d23[_0x7411('0x33')][_0x7411('0x1f')]);}_0x50b466[_0x7411('0x3c')]=qs['sort'](_0xe78d23[_0x7411('0x33')][_0x7411('0x3d')]);_0x50b466[_0x7411('0x3e')]=qs[_0x7411('0x35')](_[_0x7411('0x3f')](_0xe78d23[_0x7411('0x33')],_0x356476[_0x7411('0x35')]),_0x12fb31);if(_0xe78d23[_0x7411('0x33')][_0x7411('0x40')]){_0x50b466[_0x7411('0x3e')]=_['merge'](_0x50b466['where'],{'$or':_['map'](_0x12fb31,function(_0x5c0530){if(_0x5c0530['type']!=='VIRTUAL'){var _0x2f1487={};_0x2f1487[_0x5c0530[_0x7411('0x2c')]]={'$like':'%'+_0xe78d23[_0x7411('0x33')]['filter']+'%'};return _0x2f1487;}})});}_0x50b466=_[_0x7411('0x41')]({},_0x50b466,_0xe78d23[_0x7411('0x42')]);var _0x58027a={'where':_0x50b466[_0x7411('0x3e')]};return db['AnalyticTreeReport']['count'](_0x58027a)[_0x7411('0x29')](function(_0x55fb67){_0x18f236[_0x7411('0x43')]=_0x55fb67;if(_0xe78d23[_0x7411('0x33')][_0x7411('0x44')]){_0x50b466[_0x7411('0x45')]=[{'all':!![]}];}return db[_0x7411('0x46')][_0x7411('0x47')](_0x50b466);})['then'](function(_0x4e29e1){_0x18f236[_0x7411('0x48')]=_0x4e29e1;return _0x18f236;})[_0x7411('0x29')](respondWithFilteredResult(_0x822891,_0x50b466))['catch'](handleError(_0x822891,null));};exports[_0x7411('0x49')]=function(_0x4c2ae4,_0x4f95f6){var _0x2e9ddb={'raw':!![],'where':{'id':_0x4c2ae4['params']['id']}},_0x5767b6={};_0x5767b6[_0x7411('0x32')]=_[_0x7411('0x34')](db[_0x7411('0x46')][_0x7411('0x4a')]);_0x5767b6[_0x7411('0x33')]=_[_0x7411('0x34')](_0x4c2ae4['query']);_0x5767b6[_0x7411('0x35')]=_[_0x7411('0x36')](_0x5767b6[_0x7411('0x32')],_0x5767b6[_0x7411('0x33')]);_0x2e9ddb[_0x7411('0x38')]=_[_0x7411('0x36')](_0x5767b6[_0x7411('0x32')],qs['fields'](_0x4c2ae4['query']['fields']));_0x2e9ddb['attributes']=_0x2e9ddb[_0x7411('0x38')][_0x7411('0x39')]?_0x2e9ddb[_0x7411('0x38')]:_0x5767b6[_0x7411('0x32')];if(_0x4c2ae4[_0x7411('0x33')]['includeAll']){_0x2e9ddb[_0x7411('0x45')]=[{'all':!![]}];}_0x2e9ddb=_[_0x7411('0x41')]({},_0x2e9ddb,_0x4c2ae4['options']);return db[_0x7411('0x46')][_0x7411('0x4b')](_0x2e9ddb)[_0x7411('0x29')](handleEntityNotFound(_0x4f95f6,null))[_0x7411('0x29')](respondWithResult(_0x4f95f6,null))[_0x7411('0x4c')](handleError(_0x4f95f6,null));};exports[_0x7411('0x4d')]=function(_0x56ce6c,_0x67f03e){return db[_0x7411('0x46')][_0x7411('0x4d')](_0x56ce6c[_0x7411('0x4e')],{})[_0x7411('0x29')](respondWithResult(_0x67f03e,0xc9))[_0x7411('0x4c')](handleError(_0x67f03e,null));};exports[_0x7411('0x27')]=function(_0x1569f1,_0x2c0e65){if(_0x1569f1['body']['id']){delete _0x1569f1['body']['id'];}return db[_0x7411('0x46')][_0x7411('0x4b')]({'where':{'id':_0x1569f1[_0x7411('0x4f')]['id']}})[_0x7411('0x29')](handleEntityNotFound(_0x2c0e65,null))['then'](saveUpdates(_0x1569f1[_0x7411('0x4e')],null))[_0x7411('0x29')](respondWithResult(_0x2c0e65,null))[_0x7411('0x4c')](handleError(_0x2c0e65,null));};exports['destroy']=function(_0x1495b0,_0x21c606){return db[_0x7411('0x46')][_0x7411('0x4b')]({'where':{'id':_0x1495b0[_0x7411('0x4f')]['id']}})[_0x7411('0x29')](handleEntityNotFound(_0x21c606,null))['then'](removeEntity(_0x21c606,null))[_0x7411('0x4c')](handleError(_0x21c606,null));};
\ No newline at end of file
+var _0xe2ac=['update','then','destroy','stack','name','send','AnalyticTreeReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject'];(function(_0x2288e9,_0x15e163){var _0x24bec9=function(_0xf4dd47){while(--_0xf4dd47){_0x2288e9['push'](_0x2288e9['shift']());}};_0x24bec9(++_0x15e163);}(_0xe2ac,0x1a9));var _0xce2a=function(_0xd09668,_0x1435b2){_0xd09668=_0xd09668-0x0;var _0x68726=_0xe2ac[_0xd09668];return _0x68726;};'use strict';var emlformat=require(_0xce2a('0x0'));var rimraf=require(_0xce2a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xce2a('0x2'));var rp=require(_0xce2a('0x3'));var moment=require(_0xce2a('0x4'));var BPromise=require(_0xce2a('0x5'));var Mustache=require(_0xce2a('0x6'));var util=require(_0xce2a('0x7'));var path=require('path');var sox=require(_0xce2a('0x8'));var csv=require('to-csv');var ejs=require(_0xce2a('0x9'));var fs=require('fs');var fs_extra=require(_0xce2a('0xa'));var _=require(_0xce2a('0xb'));var squel=require(_0xce2a('0xc'));var crypto=require(_0xce2a('0xd'));var jsforce=require(_0xce2a('0xe'));var deskjs=require(_0xce2a('0xf'));var toCsv=require('to-csv');var querystring=require(_0xce2a('0x10'));var Papa=require(_0xce2a('0x11'));var Redis=require(_0xce2a('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xce2a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xce2a('0x14'))(_0xce2a('0x15'));var utils=require(_0xce2a('0x16'));var config=require(_0xce2a('0x17'));var licenseUtil=require(_0xce2a('0x18'));var db=require(_0xce2a('0x19'))['db'];function respondWithStatusCode(_0x183189,_0x32aff5){_0x32aff5=_0x32aff5||0xcc;return function(_0x1ae252){if(_0x1ae252){return _0x183189[_0xce2a('0x1a')](_0x32aff5);}return _0x183189[_0xce2a('0x1b')](_0x32aff5)[_0xce2a('0x1c')]();};}function respondWithResult(_0x2127f6,_0x3acde1){_0x3acde1=_0x3acde1||0xc8;return function(_0xf04de7){if(_0xf04de7){return _0x2127f6[_0xce2a('0x1b')](_0x3acde1)[_0xce2a('0x1d')](_0xf04de7);}};}function respondWithFilteredResult(_0x300724,_0x22e534){return function(_0xf8327d){if(_0xf8327d){var _0x1edf86=typeof _0x22e534[_0xce2a('0x1e')]===_0xce2a('0x1f')&&typeof _0x22e534[_0xce2a('0x20')]===_0xce2a('0x1f');var _0x527769=_0xf8327d[_0xce2a('0x21')];var _0x14a45b=_0x1edf86?0x0:_0x22e534[_0xce2a('0x1e')];var _0x5a0a50=_0x1edf86?_0xf8327d[_0xce2a('0x21')]:_0x22e534['offset']+_0x22e534[_0xce2a('0x20')];var _0x8ce7a2;if(_0x5a0a50>=_0x527769){_0x5a0a50=_0x527769;_0x8ce7a2=0xc8;}else{_0x8ce7a2=0xce;}_0x300724[_0xce2a('0x1b')](_0x8ce7a2);return _0x300724[_0xce2a('0x22')]('Content-Range',_0x14a45b+'-'+_0x5a0a50+'/'+_0x527769)['json'](_0xf8327d);}return null;};}function patchUpdates(_0x3d42b9){return function(_0x14c0ad){try{jsonpatch[_0xce2a('0x23')](_0x14c0ad,_0x3d42b9,!![]);}catch(_0x24ef35){return BPromise[_0xce2a('0x24')](_0x24ef35);}return _0x14c0ad['save']();};}function saveUpdates(_0x3784ab,_0x5c9ba7){return function(_0x2a1c59){if(_0x2a1c59){return _0x2a1c59[_0xce2a('0x25')](_0x3784ab)[_0xce2a('0x26')](function(_0x3a8c4f){return _0x3a8c4f;});}return null;};}function removeEntity(_0x394159,_0x4913db){return function(_0x38d189){if(_0x38d189){return _0x38d189[_0xce2a('0x27')]()[_0xce2a('0x26')](function(){_0x394159[_0xce2a('0x1b')](0xcc)[_0xce2a('0x1c')]();});}};}function handleEntityNotFound(_0x3365d0,_0x225db0){return function(_0x23a1da){if(!_0x23a1da){_0x3365d0[_0xce2a('0x1a')](0x194);}return _0x23a1da;};}function handleError(_0x460c3a,_0x1d4780){_0x1d4780=_0x1d4780||0x1f4;return function(_0x5e0916){logger['error'](_0x5e0916[_0xce2a('0x28')]);if(_0x5e0916['name']){delete _0x5e0916[_0xce2a('0x29')];}_0x460c3a[_0xce2a('0x1b')](_0x1d4780)[_0xce2a('0x2a')](_0x5e0916);};}exports['index']=function(_0x56aab7,_0xe10dea){var _0xb2a5f9={},_0x575b3c={},_0xb294c1={'count':0x0,'rows':[]};var _0x163fe8=_['map'](db[_0xce2a('0x2b')][_0xce2a('0x2c')],function(_0x36c7c5){return{'name':_0x36c7c5[_0xce2a('0x2d')],'type':_0x36c7c5[_0xce2a('0x2e')][_0xce2a('0x2f')]};});_0x575b3c[_0xce2a('0x30')]=_[_0xce2a('0x31')](_0x163fe8,_0xce2a('0x29'));_0x575b3c[_0xce2a('0x32')]=_[_0xce2a('0x33')](_0x56aab7[_0xce2a('0x32')]);_0x575b3c[_0xce2a('0x34')]=_['intersection'](_0x575b3c['model'],_0x575b3c[_0xce2a('0x32')]);_0xb2a5f9[_0xce2a('0x35')]=_['intersection'](_0x575b3c['model'],qs[_0xce2a('0x36')](_0x56aab7['query']['fields']));_0xb2a5f9['attributes']=_0xb2a5f9[_0xce2a('0x35')][_0xce2a('0x37')]?_0xb2a5f9['attributes']:_0x575b3c['model'];if(!_0x56aab7[_0xce2a('0x32')][_0xce2a('0x38')](_0xce2a('0x39'))){_0xb2a5f9[_0xce2a('0x20')]=qs[_0xce2a('0x20')](_0x56aab7['query'][_0xce2a('0x20')]);_0xb2a5f9[_0xce2a('0x1e')]=qs[_0xce2a('0x1e')](_0x56aab7[_0xce2a('0x32')][_0xce2a('0x1e')]);}_0xb2a5f9[_0xce2a('0x3a')]=qs['sort'](_0x56aab7[_0xce2a('0x32')][_0xce2a('0x3b')]);_0xb2a5f9[_0xce2a('0x3c')]=qs[_0xce2a('0x34')](_[_0xce2a('0x3d')](_0x56aab7[_0xce2a('0x32')],_0x575b3c[_0xce2a('0x34')]),_0x163fe8);if(_0x56aab7[_0xce2a('0x32')][_0xce2a('0x3e')]){_0xb2a5f9[_0xce2a('0x3c')]=_[_0xce2a('0x3f')](_0xb2a5f9[_0xce2a('0x3c')],{'$or':_[_0xce2a('0x31')](_0x163fe8,function(_0x4d99b5){if(_0x4d99b5[_0xce2a('0x2e')]!==_0xce2a('0x40')){var _0x25758e={};_0x25758e[_0x4d99b5[_0xce2a('0x29')]]={'$like':'%'+_0x56aab7[_0xce2a('0x32')]['filter']+'%'};return _0x25758e;}})});}_0xb2a5f9=_[_0xce2a('0x3f')]({},_0xb2a5f9,_0x56aab7[_0xce2a('0x41')]);var _0x1de1cc={'where':_0xb2a5f9['where']};return db[_0xce2a('0x2b')][_0xce2a('0x21')](_0x1de1cc)[_0xce2a('0x26')](function(_0x3f6184){_0xb294c1[_0xce2a('0x21')]=_0x3f6184;if(_0x56aab7['query'][_0xce2a('0x42')]){_0xb2a5f9[_0xce2a('0x43')]=[{'all':!![]}];}return db[_0xce2a('0x2b')][_0xce2a('0x44')](_0xb2a5f9);})[_0xce2a('0x26')](function(_0x162fc1){_0xb294c1[_0xce2a('0x45')]=_0x162fc1;return _0xb294c1;})[_0xce2a('0x26')](respondWithFilteredResult(_0xe10dea,_0xb2a5f9))[_0xce2a('0x46')](handleError(_0xe10dea,null));};exports[_0xce2a('0x47')]=function(_0x59a822,_0x3ed2e2){var _0x2312e0={'raw':!![],'where':{'id':_0x59a822[_0xce2a('0x48')]['id']}},_0x1ea024={};_0x1ea024['model']=_[_0xce2a('0x33')](db[_0xce2a('0x2b')][_0xce2a('0x2c')]);_0x1ea024[_0xce2a('0x32')]=_[_0xce2a('0x33')](_0x59a822[_0xce2a('0x32')]);_0x1ea024[_0xce2a('0x34')]=_[_0xce2a('0x49')](_0x1ea024['model'],_0x1ea024[_0xce2a('0x32')]);_0x2312e0['attributes']=_[_0xce2a('0x49')](_0x1ea024[_0xce2a('0x30')],qs[_0xce2a('0x36')](_0x59a822['query']['fields']));_0x2312e0[_0xce2a('0x35')]=_0x2312e0['attributes']['length']?_0x2312e0[_0xce2a('0x35')]:_0x1ea024[_0xce2a('0x30')];if(_0x59a822[_0xce2a('0x32')][_0xce2a('0x42')]){_0x2312e0['include']=[{'all':!![]}];}_0x2312e0=_[_0xce2a('0x3f')]({},_0x2312e0,_0x59a822[_0xce2a('0x41')]);return db[_0xce2a('0x2b')][_0xce2a('0x4a')](_0x2312e0)[_0xce2a('0x26')](handleEntityNotFound(_0x3ed2e2,null))[_0xce2a('0x26')](respondWithResult(_0x3ed2e2,null))[_0xce2a('0x46')](handleError(_0x3ed2e2,null));};exports['create']=function(_0xbe469f,_0x5817e2){return db[_0xce2a('0x2b')][_0xce2a('0x4b')](_0xbe469f['body'],{})['then'](respondWithResult(_0x5817e2,0xc9))[_0xce2a('0x46')](handleError(_0x5817e2,null));};exports[_0xce2a('0x25')]=function(_0x5d47ec,_0x47915e){if(_0x5d47ec[_0xce2a('0x4c')]['id']){delete _0x5d47ec['body']['id'];}return db[_0xce2a('0x2b')][_0xce2a('0x4a')]({'where':{'id':_0x5d47ec['params']['id']}})[_0xce2a('0x26')](handleEntityNotFound(_0x47915e,null))['then'](saveUpdates(_0x5d47ec[_0xce2a('0x4c')],null))[_0xce2a('0x26')](respondWithResult(_0x47915e,null))[_0xce2a('0x46')](handleError(_0x47915e,null));};exports[_0xce2a('0x27')]=function(_0x57b2e5,_0x278f32){return db['AnalyticTreeReport'][_0xce2a('0x4a')]({'where':{'id':_0x57b2e5['params']['id']}})[_0xce2a('0x26')](handleEntityNotFound(_0x278f32,null))['then'](removeEntity(_0x278f32,null))[_0xce2a('0x46')](handleError(_0x278f32,null));};
\ No newline at end of file
index 291f5cd..5b8d18a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2f5=['exports','define','AnalyticTreeReport','lodash','moment','request-promise','path','rimraf'];(function(_0x3ca4da,_0x3d9e46){var _0xdfcc96=function(_0x4acc19){while(--_0x4acc19){_0x3ca4da['push'](_0x3ca4da['shift']());}};_0xdfcc96(++_0x3d9e46);}(_0xc2f5,0xc3));var _0x5c2f=function(_0x12c589,_0x370e25){_0x12c589=_0x12c589-0x0;var _0x5e1e22=_0xc2f5[_0x12c589];return _0x5e1e22;};'use strict';var _=require(_0x5c2f('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x5c2f('0x1'));var BPromise=require('bluebird');var rp=require(_0x5c2f('0x2'));var fs=require('fs');var path=require(_0x5c2f('0x3'));var rimraf=require(_0x5c2f('0x4'));var config=require('../../config/environment');var attributes=require('./analyticTreeReport.attributes');module[_0x5c2f('0x5')]=function(_0xd8407,_0x1cca21){return _0xd8407[_0x5c2f('0x6')](_0x5c2f('0x7'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc572=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','lodash','util','../../config/logger','api'];(function(_0x24618a,_0x2cd0f4){var _0x2e3d64=function(_0x28c59c){while(--_0x28c59c){_0x24618a['push'](_0x24618a['shift']());}};_0x2e3d64(++_0x2cd0f4);}(_0xc572,0x15a));var _0x2c57=function(_0x42dcbf,_0x5c7d17){_0x42dcbf=_0x42dcbf-0x0;var _0x35e1d7=_0xc572[_0x42dcbf];return _0x35e1d7;};'use strict';var _=require(_0x2c57('0x0'));var util=require(_0x2c57('0x1'));var logger=require(_0x2c57('0x2'))(_0x2c57('0x3'));var moment=require(_0x2c57('0x4'));var BPromise=require(_0x2c57('0x5'));var rp=require(_0x2c57('0x6'));var fs=require('fs');var path=require(_0x2c57('0x7'));var rimraf=require(_0x2c57('0x8'));var config=require(_0x2c57('0x9'));var attributes=require(_0x2c57('0xa'));module[_0x2c57('0xb')]=function(_0x49c5d6,_0x5cafa5){return _0x49c5d6[_0x2c57('0xc')](_0x2c57('0xd'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3426fc9..6f858ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x32b09a,_0x426696){var _0x1a543e=function(_0xf8e0c){while(--_0xf8e0c){_0x32b09a['push'](_0x32b09a['shift']());}};_0x1a543e(++_0x426696);}(_0x2ef3,0xba));var _0x32ef=function(_0x962905,_0x3cb28d){_0x962905=_0x962905-0x0;var _0x27e3f6=_0x2ef3[_0x962905];return _0x27e3f6;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x5dd8a6,_0x271d66){var _0x2eb653=function(_0x13615d){while(--_0x13615d){_0x5dd8a6['push'](_0x5dd8a6['shift']());}};_0x2eb653(++_0x271d66);}(_0xadb5,0xad));var _0x5adb=function(_0x484e4f,_0x2a2e8e){_0x484e4f=_0x484e4f-0x0;var _0x288c64=_0xadb5[_0x484e4f];return _0x288c64;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
index 864691f..301eeab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c7a=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./analyticTreeReport.controller','get','index','/:id','isAuthenticated','show','post','put','delete'];(function(_0x257e64,_0x4f42ce){var _0x1c991d=function(_0x799b94){while(--_0x799b94){_0x257e64['push'](_0x257e64['shift']());}};_0x1c991d(++_0x4f42ce);}(_0x9c7a,0x158));var _0xa9c7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c7a[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xa9c7('0x0'));var util=require(_0xa9c7('0x1'));var path=require(_0xa9c7('0x2'));var timeout=require(_0xa9c7('0x3'));var express=require('express');var router=express[_0xa9c7('0x4')]();var fs_extra=require(_0xa9c7('0x5'));var auth=require(_0xa9c7('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa9c7('0x7'));router[_0xa9c7('0x8')]('/',auth['isAuthenticated'](),controller[_0xa9c7('0x9')]);router[_0xa9c7('0x8')](_0xa9c7('0xa'),auth[_0xa9c7('0xb')](),controller[_0xa9c7('0xc')]);router[_0xa9c7('0xd')]('/',auth[_0xa9c7('0xb')](),controller['create']);router[_0xa9c7('0xe')](_0xa9c7('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xa9c7('0xf')]('/:id',auth[_0xa9c7('0xb')](),controller[_0xa9c7('0x10')]);module[_0xa9c7('0x11')]=router;
\ No newline at end of file
+var _0xc4f6=['util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports','multer'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xc4f6,0x1c1));var _0x6c4f=function(_0x1d025c,_0x122e97){_0x1d025c=_0x1d025c-0x0;var _0x5a20a4=_0xc4f6[_0x1d025c];return _0x5a20a4;};'use strict';var multer=require(_0x6c4f('0x0'));var util=require(_0x6c4f('0x1'));var path=require(_0x6c4f('0x2'));var timeout=require(_0x6c4f('0x3'));var express=require(_0x6c4f('0x4'));var router=express[_0x6c4f('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6c4f('0x6'));var config=require(_0x6c4f('0x7'));var controller=require(_0x6c4f('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x6c4f('0x9'),auth[_0x6c4f('0xa')](),controller[_0x6c4f('0xb')]);router[_0x6c4f('0xc')]('/',auth[_0x6c4f('0xa')](),controller[_0x6c4f('0xd')]);router[_0x6c4f('0xe')]('/:id',auth[_0x6c4f('0xa')](),controller['update']);router[_0x6c4f('0xf')](_0x6c4f('0x9'),auth[_0x6c4f('0xa')](),controller[_0x6c4f('0x10')]);module[_0x6c4f('0x11')]=router;
\ No newline at end of file
index 488ba2b..1d80eaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['exports','STRING','sequelize'];(function(_0x65f5e8,_0x5b7c27){var _0x48c40a=function(_0x31570f){while(--_0x31570f){_0x65f5e8['push'](_0x65f5e8['shift']());}};_0x48c40a(++_0x5b7c27);}(_0xa41a,0x6b));var _0xaa41=function(_0x296d5a,_0x450ef2){_0x296d5a=_0x296d5a-0x0;var _0x5e859c=_0xa41a[_0x296d5a];return _0x5e859c;};'use strict';var Sequelize=require(_0xaa41('0x0'));module[_0xaa41('0x1')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize[_0xaa41('0x2')]},'type':{'type':Sequelize[_0xaa41('0x2')]}};
\ No newline at end of file
+var _0x1ae3=['STRING','sequelize','exports'];(function(_0x51b7b7,_0x16296e){var _0x40a675=function(_0x5a1e72){while(--_0x5a1e72){_0x51b7b7['push'](_0x51b7b7['shift']());}};_0x40a675(++_0x16296e);}(_0x1ae3,0x139));var _0x31ae=function(_0x333fd4,_0x3043ab){_0x333fd4=_0x333fd4-0x0;var _0x48488e=_0x1ae3[_0x333fd4];return _0x48488e;};'use strict';var Sequelize=require(_0x31ae('0x0'));module[_0x31ae('0x1')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize[_0x31ae('0x2')]},'type':{'type':Sequelize[_0x31ae('0x2')]}};
\ No newline at end of file
index d4e1a64..a3241d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4155=['omit','createdAt','updatedAt','body','includeAll','update','destroy','create','file','originalname','mimetype','ChatOfflineMessageId','join','root','basename','eml-format','rimraf','fast-json-patch','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','apply','reject','save','then','sendStatus','error','stack','name','send','index','map','Attachment','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','where','pick','merge','VIRTUAL','options','findAll','rows','catch','params','keys','include','find','clone','get'];(function(_0x1a58a0,_0x468ab9){var _0x1409e9=function(_0x1934ff){while(--_0x1934ff){_0x1a58a0['push'](_0x1a58a0['shift']());}};_0x1409e9(++_0x468ab9);}(_0x4155,0xc3));var _0x5415=function(_0x65fd2e,_0x13f345){_0x65fd2e=_0x65fd2e-0x0;var _0x19f91f=_0x4155[_0x65fd2e];return _0x19f91f;};'use strict';var emlformat=require(_0x5415('0x0'));var rimraf=require(_0x5415('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5415('0x2'));var rp=require(_0x5415('0x3'));var moment=require(_0x5415('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5415('0x5'));var util=require(_0x5415('0x6'));var path=require(_0x5415('0x7'));var sox=require(_0x5415('0x8'));var csv=require(_0x5415('0x9'));var ejs=require(_0x5415('0xa'));var fs=require('fs');var fs_extra=require(_0x5415('0xb'));var _=require(_0x5415('0xc'));var squel=require(_0x5415('0xd'));var crypto=require(_0x5415('0xe'));var jsforce=require(_0x5415('0xf'));var deskjs=require(_0x5415('0x10'));var toCsv=require(_0x5415('0x9'));var querystring=require(_0x5415('0x11'));var Papa=require(_0x5415('0x12'));var Redis=require(_0x5415('0x13'));var authService=require(_0x5415('0x14'));var qs=require(_0x5415('0x15'));var as=require(_0x5415('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5415('0x17'));var utils=require(_0x5415('0x18'));var config=require(_0x5415('0x19'));var licenseUtil=require(_0x5415('0x1a'));var db=require(_0x5415('0x1b'))['db'];function respondWithStatusCode(_0x16a103,_0x1a23d1){_0x1a23d1=_0x1a23d1||0xcc;return function(_0x558ab5){if(_0x558ab5){return _0x16a103['sendStatus'](_0x1a23d1);}return _0x16a103[_0x5415('0x1c')](_0x1a23d1)[_0x5415('0x1d')]();};}function respondWithResult(_0x1e53eb,_0x37de59){_0x37de59=_0x37de59||0xc8;return function(_0x3ffd75){if(_0x3ffd75){return _0x1e53eb[_0x5415('0x1c')](_0x37de59)[_0x5415('0x1e')](_0x3ffd75);}};}function respondWithFilteredResult(_0x21cd96,_0x3171a0){return function(_0x3fa47d){if(_0x3fa47d){var _0x4fa318=typeof _0x3171a0['offset']===_0x5415('0x1f')&&typeof _0x3171a0['limit']===_0x5415('0x1f');var _0x10f735=_0x3fa47d[_0x5415('0x20')];var _0x2360dc=_0x4fa318?0x0:_0x3171a0[_0x5415('0x21')];var _0xcc61ee=_0x4fa318?_0x3fa47d[_0x5415('0x20')]:_0x3171a0[_0x5415('0x21')]+_0x3171a0[_0x5415('0x22')];var _0x3c6585;if(_0xcc61ee>=_0x10f735){_0xcc61ee=_0x10f735;_0x3c6585=0xc8;}else{_0x3c6585=0xce;}_0x21cd96['status'](_0x3c6585);return _0x21cd96[_0x5415('0x23')]('Content-Range',_0x2360dc+'-'+_0xcc61ee+'/'+_0x10f735)[_0x5415('0x1e')](_0x3fa47d);}return null;};}function patchUpdates(_0x242b3a){return function(_0x1e93b7){try{jsonpatch[_0x5415('0x24')](_0x1e93b7,_0x242b3a,!![]);}catch(_0x3b1762){return BPromise[_0x5415('0x25')](_0x3b1762);}return _0x1e93b7[_0x5415('0x26')]();};}function saveUpdates(_0x210899,_0x471f31){return function(_0x363eaa){if(_0x363eaa){return _0x363eaa['update'](_0x210899)[_0x5415('0x27')](function(_0x51150e){return _0x51150e;});}return null;};}function removeEntity(_0x1f1870,_0x16d039){return function(_0x35f768){if(_0x35f768){return _0x35f768['destroy']()[_0x5415('0x27')](function(){_0x1f1870[_0x5415('0x1c')](0xcc)[_0x5415('0x1d')]();});}};}function handleEntityNotFound(_0x2327ff,_0x4a29aa){return function(_0x352b60){if(!_0x352b60){_0x2327ff[_0x5415('0x28')](0x194);}return _0x352b60;};}function handleError(_0x44c40c,_0x3b5865){_0x3b5865=_0x3b5865||0x1f4;return function(_0x4f4b45){logger[_0x5415('0x29')](_0x4f4b45[_0x5415('0x2a')]);if(_0x4f4b45[_0x5415('0x2b')]){delete _0x4f4b45[_0x5415('0x2b')];}_0x44c40c[_0x5415('0x1c')](_0x3b5865)[_0x5415('0x2c')](_0x4f4b45);};}exports[_0x5415('0x2d')]=function(_0x21768a,_0x4e0c79){var _0x42941c={},_0x2e8491={},_0x6e1bb={'count':0x0,'rows':[]};var _0x111d97=_[_0x5415('0x2e')](db[_0x5415('0x2f')][_0x5415('0x30')],function(_0x54fb8f){return{'name':_0x54fb8f[_0x5415('0x31')],'type':_0x54fb8f[_0x5415('0x32')][_0x5415('0x33')]};});_0x2e8491['model']=_['map'](_0x111d97,'name');_0x2e8491[_0x5415('0x34')]=_['keys'](_0x21768a[_0x5415('0x34')]);_0x2e8491[_0x5415('0x35')]=_[_0x5415('0x36')](_0x2e8491[_0x5415('0x37')],_0x2e8491[_0x5415('0x34')]);_0x42941c[_0x5415('0x38')]=_[_0x5415('0x36')](_0x2e8491[_0x5415('0x37')],qs[_0x5415('0x39')](_0x21768a['query'][_0x5415('0x39')]));_0x42941c['attributes']=_0x42941c[_0x5415('0x38')][_0x5415('0x3a')]?_0x42941c[_0x5415('0x38')]:_0x2e8491[_0x5415('0x37')];if(!_0x21768a['query'][_0x5415('0x3b')]('nolimit')){_0x42941c[_0x5415('0x22')]=qs[_0x5415('0x22')](_0x21768a[_0x5415('0x34')][_0x5415('0x22')]);_0x42941c['offset']=qs['offset'](_0x21768a['query']['offset']);}_0x42941c[_0x5415('0x3c')]=qs['sort'](_0x21768a[_0x5415('0x34')]['sort']);_0x42941c[_0x5415('0x3d')]=qs[_0x5415('0x35')](_[_0x5415('0x3e')](_0x21768a[_0x5415('0x34')],_0x2e8491['filters']),_0x111d97);if(_0x21768a[_0x5415('0x34')]['filter']){_0x42941c['where']=_[_0x5415('0x3f')](_0x42941c[_0x5415('0x3d')],{'$or':_['map'](_0x111d97,function(_0x51190a){if(_0x51190a[_0x5415('0x32')]!==_0x5415('0x40')){var _0x16c316={};_0x16c316[_0x51190a[_0x5415('0x2b')]]={'$like':'%'+_0x21768a[_0x5415('0x34')]['filter']+'%'};return _0x16c316;}})});}_0x42941c=_['merge']({},_0x42941c,_0x21768a[_0x5415('0x41')]);var _0x180824={'where':_0x42941c[_0x5415('0x3d')]};return db[_0x5415('0x2f')][_0x5415('0x20')](_0x180824)[_0x5415('0x27')](function(_0x5423e8){_0x6e1bb[_0x5415('0x20')]=_0x5423e8;if(_0x21768a[_0x5415('0x34')]['includeAll']){_0x42941c['include']=[{'all':!![]}];}return db[_0x5415('0x2f')][_0x5415('0x42')](_0x42941c);})['then'](function(_0x521e3f){_0x6e1bb[_0x5415('0x43')]=_0x521e3f;return _0x6e1bb;})['then'](respondWithFilteredResult(_0x4e0c79,_0x42941c))[_0x5415('0x44')](handleError(_0x4e0c79,null));};exports['show']=function(_0xb429f9,_0x28275f){var _0x35c1be={'raw':!![],'where':{'id':_0xb429f9[_0x5415('0x45')]['id']}},_0x3d05d0={};_0x3d05d0[_0x5415('0x37')]=_[_0x5415('0x46')](db[_0x5415('0x2f')][_0x5415('0x30')]);_0x3d05d0[_0x5415('0x34')]=_[_0x5415('0x46')](_0xb429f9['query']);_0x3d05d0['filters']=_[_0x5415('0x36')](_0x3d05d0[_0x5415('0x37')],_0x3d05d0[_0x5415('0x34')]);_0x35c1be[_0x5415('0x38')]=_[_0x5415('0x36')](_0x3d05d0[_0x5415('0x37')],qs[_0x5415('0x39')](_0xb429f9['query'][_0x5415('0x39')]));_0x35c1be[_0x5415('0x38')]=_0x35c1be[_0x5415('0x38')][_0x5415('0x3a')]?_0x35c1be[_0x5415('0x38')]:_0x3d05d0[_0x5415('0x37')];if(_0xb429f9[_0x5415('0x34')]['includeAll']){_0x35c1be[_0x5415('0x47')]=[{'all':!![]}];}_0x35c1be=_[_0x5415('0x3f')]({},_0x35c1be,_0xb429f9[_0x5415('0x41')]);return db[_0x5415('0x2f')][_0x5415('0x48')](_0x35c1be)[_0x5415('0x27')](handleEntityNotFound(_0x28275f,null))['then'](respondWithResult(_0x28275f,null))[_0x5415('0x44')](handleError(_0x28275f,null));};exports[_0x5415('0x49')]=function(_0x5d45fc,_0x21624a){var _0x5a76d3={'where':{'id':_0x5d45fc[_0x5415('0x45')]['id']}},_0x55522e={};_0x55522e[_0x5415('0x37')]=_[_0x5415('0x46')](db[_0x5415('0x2f')][_0x5415('0x30')]);_0x5a76d3['attributes']=_[_0x5415('0x36')](_0x55522e[_0x5415('0x37')],qs['fields'](_0x5d45fc[_0x5415('0x34')]['fields']));_0x5a76d3[_0x5415('0x38')]=_0x5a76d3[_0x5415('0x38')][_0x5415('0x3a')]?_0x5a76d3[_0x5415('0x38')]:_0x55522e[_0x5415('0x37')];if(_0x5d45fc[_0x5415('0x34')]['includeAll']){_0x5a76d3[_0x5415('0x47')]=[{'all':!![]}];}_0x5a76d3=_[_0x5415('0x3f')]({},_0x5a76d3,_0x5d45fc['options']);return db[_0x5415('0x2f')][_0x5415('0x48')](_0x5a76d3)[_0x5415('0x27')](handleEntityNotFound(_0x21624a,null))[_0x5415('0x27')](function(_0x68198d){if(_0x68198d){var _0x3f45d6=_0x68198d[_0x5415('0x4a')]({'plain':!![]});_0x3f45d6=qs[_0x5415('0x4b')](_0x3f45d6,['id',_0x5415('0x4c'),_0x5415('0x4d')]);_0x5d45fc['body']=_[_0x5415('0x4b')](_0x5d45fc['body'],['id',_0x5415('0x4c'),_0x5415('0x4d')]);return db[_0x5415('0x2f')]['create'](_[_0x5415('0x3f')](_0x3f45d6,_0x5d45fc[_0x5415('0x4e')]),{'include':_0x5d45fc[_0x5415('0x34')][_0x5415('0x4f')]?[{'all':!![]}]:undefined});}})[_0x5415('0x27')](respondWithResult(_0x21624a,0xc9))[_0x5415('0x44')](handleError(_0x21624a,null));};exports[_0x5415('0x50')]=function(_0x3706d7,_0x1e5097){if(_0x3706d7[_0x5415('0x4e')]['id']){delete _0x3706d7['body']['id'];}return db['Attachment']['find']({'where':{'id':_0x3706d7[_0x5415('0x45')]['id']}})['then'](handleEntityNotFound(_0x1e5097,null))[_0x5415('0x27')](saveUpdates(_0x3706d7[_0x5415('0x4e')],null))[_0x5415('0x27')](respondWithResult(_0x1e5097,null))[_0x5415('0x44')](handleError(_0x1e5097,null));};exports[_0x5415('0x51')]=function(_0x2d37fa,_0x5dfb67){return db['Attachment']['find']({'where':{'id':_0x2d37fa[_0x5415('0x45')]['id']}})[_0x5415('0x27')](handleEntityNotFound(_0x5dfb67,null))['then'](removeEntity(_0x5dfb67,null))[_0x5415('0x44')](handleError(_0x5dfb67,null));};exports[_0x5415('0x52')]=function(_0x42194c,_0x470a79,_0x4f671a){_0x42194c['body'][_0x5415('0x2b')]=_0x42194c[_0x5415('0x53')][_0x5415('0x54')];_0x42194c[_0x5415('0x4e')]['basename']=_0x42194c['file']['filename'];_0x42194c['body'][_0x5415('0x32')]=_0x42194c[_0x5415('0x53')][_0x5415('0x55')];return db[_0x5415('0x2f')][_0x5415('0x52')](_0x42194c[_0x5415('0x4e')])[_0x5415('0x27')](respondWithResult(_0x470a79,0xc9))[_0x5415('0x44')](handleError(_0x470a79,null));};exports['download']=function(_0x29f24f,_0x744589,_0xf1d798){return db[_0x5415('0x2f')]['findOne']({'where':{'id':_0x29f24f[_0x5415('0x45')]['id']},'raw':!![]})[_0x5415('0x27')](handleEntityNotFound(_0x744589,null))[_0x5415('0x27')](function(_0x3b6fd0){if(_0x3b6fd0){var _0x1fe52c=_0x3b6fd0[_0x5415('0x56')]!==null;var _0x46743a=path[_0x5415('0x57')](config[_0x5415('0x58')],'server/files/attachments/');if(_0x1fe52c){_0x46743a=path['join'](_0x46743a,'offline-chat/');}var _0x23e88b=path['join'](_0x46743a,_0x3b6fd0[_0x5415('0x59')]);return _0x744589['download'](_0x23e88b);}})['catch'](handleError(_0x744589,null));};
\ No newline at end of file
+var _0x70cc=['moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','count','set','Content-Range','json','apply','reject','save','destroy','then','error','stack','name','send','index','Attachment','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','includeAll','include','findAll','rows','catch','params','rawAttributes','options','find','get','createdAt','updatedAt','body','create','update','file','originalname','basename','filename','mimetype','download','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','zip-dir','fast-json-patch','request-promise'];(function(_0xfc40f3,_0x259a22){var _0x568641=function(_0x377f17){while(--_0x377f17){_0xfc40f3['push'](_0xfc40f3['shift']());}};_0x568641(++_0x259a22);}(_0x70cc,0xb4));var _0xc70c=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0x70cc[_0x7e2eb0];return _0xd92de4;};'use strict';var emlformat=require(_0xc70c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc70c('0x1'));var jsonpatch=require(_0xc70c('0x2'));var rp=require(_0xc70c('0x3'));var moment=require(_0xc70c('0x4'));var BPromise=require(_0xc70c('0x5'));var Mustache=require(_0xc70c('0x6'));var util=require(_0xc70c('0x7'));var path=require(_0xc70c('0x8'));var sox=require(_0xc70c('0x9'));var csv=require('to-csv');var ejs=require(_0xc70c('0xa'));var fs=require('fs');var fs_extra=require(_0xc70c('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc70c('0xc'));var jsforce=require(_0xc70c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc70c('0xe'));var querystring=require(_0xc70c('0xf'));var Papa=require(_0xc70c('0x10'));var Redis=require(_0xc70c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xc70c('0x12'));var as=require(_0xc70c('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc70c('0x14'))(_0xc70c('0x15'));var utils=require(_0xc70c('0x16'));var config=require(_0xc70c('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc70c('0x18'))['db'];function respondWithStatusCode(_0x47d694,_0x54294c){_0x54294c=_0x54294c||0xcc;return function(_0x261e81){if(_0x261e81){return _0x47d694[_0xc70c('0x19')](_0x54294c);}return _0x47d694[_0xc70c('0x1a')](_0x54294c)[_0xc70c('0x1b')]();};}function respondWithResult(_0x353a88,_0x1ac132){_0x1ac132=_0x1ac132||0xc8;return function(_0x465135){if(_0x465135){return _0x353a88[_0xc70c('0x1a')](_0x1ac132)['json'](_0x465135);}};}function respondWithFilteredResult(_0x1d43e4,_0x1d41e7){return function(_0x12dda1){if(_0x12dda1){var _0x5e94cd=typeof _0x1d41e7[_0xc70c('0x1c')]==='undefined'&&typeof _0x1d41e7[_0xc70c('0x1d')]==='undefined';var _0x26a874=_0x12dda1['count'];var _0xba276a=_0x5e94cd?0x0:_0x1d41e7[_0xc70c('0x1c')];var _0x34cfff=_0x5e94cd?_0x12dda1[_0xc70c('0x1e')]:_0x1d41e7[_0xc70c('0x1c')]+_0x1d41e7[_0xc70c('0x1d')];var _0x53c244;if(_0x34cfff>=_0x26a874){_0x34cfff=_0x26a874;_0x53c244=0xc8;}else{_0x53c244=0xce;}_0x1d43e4['status'](_0x53c244);return _0x1d43e4[_0xc70c('0x1f')](_0xc70c('0x20'),_0xba276a+'-'+_0x34cfff+'/'+_0x26a874)[_0xc70c('0x21')](_0x12dda1);}return null;};}function patchUpdates(_0x30d0f6){return function(_0x3f1cce){try{jsonpatch[_0xc70c('0x22')](_0x3f1cce,_0x30d0f6,!![]);}catch(_0x338a03){return BPromise[_0xc70c('0x23')](_0x338a03);}return _0x3f1cce[_0xc70c('0x24')]();};}function saveUpdates(_0x247a2a,_0x3234c5){return function(_0x1d7113){if(_0x1d7113){return _0x1d7113['update'](_0x247a2a)['then'](function(_0x138a72){return _0x138a72;});}return null;};}function removeEntity(_0x3ccb7e,_0x36af65){return function(_0x4480f4){if(_0x4480f4){return _0x4480f4[_0xc70c('0x25')]()[_0xc70c('0x26')](function(){_0x3ccb7e['status'](0xcc)[_0xc70c('0x1b')]();});}};}function handleEntityNotFound(_0x2b6c7e,_0x46c89e){return function(_0x3d6a64){if(!_0x3d6a64){_0x2b6c7e[_0xc70c('0x19')](0x194);}return _0x3d6a64;};}function handleError(_0x319513,_0x71e570){_0x71e570=_0x71e570||0x1f4;return function(_0x3f2fcf){logger[_0xc70c('0x27')](_0x3f2fcf[_0xc70c('0x28')]);if(_0x3f2fcf[_0xc70c('0x29')]){delete _0x3f2fcf[_0xc70c('0x29')];}_0x319513['status'](_0x71e570)[_0xc70c('0x2a')](_0x3f2fcf);};}exports[_0xc70c('0x2b')]=function(_0x2e669e,_0xff239f){var _0x783954={},_0x24f382={},_0x563b13={'count':0x0,'rows':[]};var _0xae8c8f=_['map'](db[_0xc70c('0x2c')]['rawAttributes'],function(_0x128b95){return{'name':_0x128b95[_0xc70c('0x2d')],'type':_0x128b95[_0xc70c('0x2e')][_0xc70c('0x2f')]};});_0x24f382['model']=_['map'](_0xae8c8f,'name');_0x24f382[_0xc70c('0x30')]=_[_0xc70c('0x31')](_0x2e669e[_0xc70c('0x30')]);_0x24f382[_0xc70c('0x32')]=_[_0xc70c('0x33')](_0x24f382[_0xc70c('0x34')],_0x24f382[_0xc70c('0x30')]);_0x783954[_0xc70c('0x35')]=_[_0xc70c('0x33')](_0x24f382[_0xc70c('0x34')],qs['fields'](_0x2e669e[_0xc70c('0x30')][_0xc70c('0x36')]));_0x783954[_0xc70c('0x35')]=_0x783954[_0xc70c('0x35')][_0xc70c('0x37')]?_0x783954[_0xc70c('0x35')]:_0x24f382['model'];if(!_0x2e669e['query'][_0xc70c('0x38')](_0xc70c('0x39'))){_0x783954[_0xc70c('0x1d')]=qs[_0xc70c('0x1d')](_0x2e669e[_0xc70c('0x30')][_0xc70c('0x1d')]);_0x783954[_0xc70c('0x1c')]=qs[_0xc70c('0x1c')](_0x2e669e[_0xc70c('0x30')][_0xc70c('0x1c')]);}_0x783954[_0xc70c('0x3a')]=qs[_0xc70c('0x3b')](_0x2e669e[_0xc70c('0x30')]['sort']);_0x783954[_0xc70c('0x3c')]=qs['filters'](_[_0xc70c('0x3d')](_0x2e669e['query'],_0x24f382[_0xc70c('0x32')]),_0xae8c8f);if(_0x2e669e[_0xc70c('0x30')][_0xc70c('0x3e')]){_0x783954['where']=_[_0xc70c('0x3f')](_0x783954[_0xc70c('0x3c')],{'$or':_[_0xc70c('0x40')](_0xae8c8f,function(_0x23fd99){if(_0x23fd99[_0xc70c('0x2e')]!=='VIRTUAL'){var _0xef50fd={};_0xef50fd[_0x23fd99[_0xc70c('0x29')]]={'$like':'%'+_0x2e669e['query'][_0xc70c('0x3e')]+'%'};return _0xef50fd;}})});}_0x783954=_['merge']({},_0x783954,_0x2e669e['options']);var _0x5bf531={'where':_0x783954['where']};return db[_0xc70c('0x2c')][_0xc70c('0x1e')](_0x5bf531)[_0xc70c('0x26')](function(_0x5b70de){_0x563b13[_0xc70c('0x1e')]=_0x5b70de;if(_0x2e669e[_0xc70c('0x30')][_0xc70c('0x41')]){_0x783954[_0xc70c('0x42')]=[{'all':!![]}];}return db[_0xc70c('0x2c')][_0xc70c('0x43')](_0x783954);})[_0xc70c('0x26')](function(_0x2768e2){_0x563b13[_0xc70c('0x44')]=_0x2768e2;return _0x563b13;})[_0xc70c('0x26')](respondWithFilteredResult(_0xff239f,_0x783954))[_0xc70c('0x45')](handleError(_0xff239f,null));};exports['show']=function(_0x17f09a,_0x2061c2){var _0x3dc7bf={'raw':!![],'where':{'id':_0x17f09a[_0xc70c('0x46')]['id']}},_0x2087f0={};_0x2087f0[_0xc70c('0x34')]=_['keys'](db[_0xc70c('0x2c')][_0xc70c('0x47')]);_0x2087f0['query']=_[_0xc70c('0x31')](_0x17f09a['query']);_0x2087f0['filters']=_['intersection'](_0x2087f0['model'],_0x2087f0['query']);_0x3dc7bf[_0xc70c('0x35')]=_[_0xc70c('0x33')](_0x2087f0['model'],qs[_0xc70c('0x36')](_0x17f09a[_0xc70c('0x30')][_0xc70c('0x36')]));_0x3dc7bf[_0xc70c('0x35')]=_0x3dc7bf[_0xc70c('0x35')]['length']?_0x3dc7bf[_0xc70c('0x35')]:_0x2087f0[_0xc70c('0x34')];if(_0x17f09a[_0xc70c('0x30')][_0xc70c('0x41')]){_0x3dc7bf[_0xc70c('0x42')]=[{'all':!![]}];}_0x3dc7bf=_[_0xc70c('0x3f')]({},_0x3dc7bf,_0x17f09a[_0xc70c('0x48')]);return db[_0xc70c('0x2c')][_0xc70c('0x49')](_0x3dc7bf)[_0xc70c('0x26')](handleEntityNotFound(_0x2061c2,null))[_0xc70c('0x26')](respondWithResult(_0x2061c2,null))[_0xc70c('0x45')](handleError(_0x2061c2,null));};exports['clone']=function(_0x27d079,_0x24b8ae){var _0x4cf94c={'where':{'id':_0x27d079['params']['id']}},_0x2f3a16={};_0x2f3a16[_0xc70c('0x34')]=_[_0xc70c('0x31')](db['Attachment'][_0xc70c('0x47')]);_0x4cf94c['attributes']=_[_0xc70c('0x33')](_0x2f3a16[_0xc70c('0x34')],qs[_0xc70c('0x36')](_0x27d079[_0xc70c('0x30')]['fields']));_0x4cf94c[_0xc70c('0x35')]=_0x4cf94c[_0xc70c('0x35')][_0xc70c('0x37')]?_0x4cf94c[_0xc70c('0x35')]:_0x2f3a16[_0xc70c('0x34')];if(_0x27d079[_0xc70c('0x30')][_0xc70c('0x41')]){_0x4cf94c['include']=[{'all':!![]}];}_0x4cf94c=_[_0xc70c('0x3f')]({},_0x4cf94c,_0x27d079[_0xc70c('0x48')]);return db[_0xc70c('0x2c')][_0xc70c('0x49')](_0x4cf94c)[_0xc70c('0x26')](handleEntityNotFound(_0x24b8ae,null))[_0xc70c('0x26')](function(_0x57d2af){if(_0x57d2af){var _0x4c44d5=_0x57d2af[_0xc70c('0x4a')]({'plain':!![]});_0x4c44d5=qs['omit'](_0x4c44d5,['id',_0xc70c('0x4b'),_0xc70c('0x4c')]);_0x27d079[_0xc70c('0x4d')]=_['omit'](_0x27d079[_0xc70c('0x4d')],['id',_0xc70c('0x4b'),_0xc70c('0x4c')]);return db[_0xc70c('0x2c')][_0xc70c('0x4e')](_['merge'](_0x4c44d5,_0x27d079['body']),{'include':_0x27d079[_0xc70c('0x30')][_0xc70c('0x41')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x24b8ae,0xc9))[_0xc70c('0x45')](handleError(_0x24b8ae,null));};exports[_0xc70c('0x4f')]=function(_0x27823a,_0x5bb807){if(_0x27823a[_0xc70c('0x4d')]['id']){delete _0x27823a['body']['id'];}return db[_0xc70c('0x2c')][_0xc70c('0x49')]({'where':{'id':_0x27823a[_0xc70c('0x46')]['id']}})[_0xc70c('0x26')](handleEntityNotFound(_0x5bb807,null))[_0xc70c('0x26')](saveUpdates(_0x27823a[_0xc70c('0x4d')],null))['then'](respondWithResult(_0x5bb807,null))[_0xc70c('0x45')](handleError(_0x5bb807,null));};exports[_0xc70c('0x25')]=function(_0x12ef36,_0x5f891a){return db[_0xc70c('0x2c')][_0xc70c('0x49')]({'where':{'id':_0x12ef36[_0xc70c('0x46')]['id']}})[_0xc70c('0x26')](handleEntityNotFound(_0x5f891a,null))[_0xc70c('0x26')](removeEntity(_0x5f891a,null))['catch'](handleError(_0x5f891a,null));};exports[_0xc70c('0x4e')]=function(_0x47867a,_0x2613f1,_0x403ff6){_0x47867a[_0xc70c('0x4d')][_0xc70c('0x29')]=_0x47867a[_0xc70c('0x50')][_0xc70c('0x51')];_0x47867a[_0xc70c('0x4d')][_0xc70c('0x52')]=_0x47867a[_0xc70c('0x50')][_0xc70c('0x53')];_0x47867a[_0xc70c('0x4d')][_0xc70c('0x2e')]=_0x47867a[_0xc70c('0x50')][_0xc70c('0x54')];return db[_0xc70c('0x2c')]['create'](_0x47867a[_0xc70c('0x4d')])[_0xc70c('0x26')](respondWithResult(_0x2613f1,0xc9))[_0xc70c('0x45')](handleError(_0x2613f1,null));};exports[_0xc70c('0x55')]=function(_0x33c405,_0x28f42e,_0x301881){return db[_0xc70c('0x2c')][_0xc70c('0x56')]({'where':{'id':_0x33c405[_0xc70c('0x46')]['id']},'raw':!![]})[_0xc70c('0x26')](handleEntityNotFound(_0x28f42e,null))[_0xc70c('0x26')](function(_0x528d76){if(_0x528d76){var _0x1e8c25=_0x528d76[_0xc70c('0x57')]!==null;var _0x1a4b82=path[_0xc70c('0x58')](config[_0xc70c('0x59')],_0xc70c('0x5a'));if(_0x1e8c25){_0x1a4b82=path[_0xc70c('0x58')](_0x1a4b82,_0xc70c('0x5b'));}var _0x13745f=path[_0xc70c('0x58')](_0x1a4b82,_0x528d76['basename']);return _0x28f42e['download'](_0x13745f);}})['catch'](handleError(_0x28f42e,null));};
\ No newline at end of file
index 128b908..5a1b33a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac1=['path','../../config/environment','./attachment.attributes','Attachment','attachments','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x1d2a96,_0x3aff65){var _0x27366a=function(_0xc7aaf6){while(--_0xc7aaf6){_0x1d2a96['push'](_0x1d2a96['shift']());}};_0x27366a(++_0x3aff65);}(_0x6ac1,0x17b));var _0x16ac=function(_0x5fd828,_0xa7ede9){_0x5fd828=_0x5fd828-0x0;var _0x3c1eaa=_0x6ac1[_0x5fd828];return _0x3c1eaa;};'use strict';var _=require(_0x16ac('0x0'));var util=require(_0x16ac('0x1'));var logger=require(_0x16ac('0x2'))('api');var moment=require(_0x16ac('0x3'));var BPromise=require(_0x16ac('0x4'));var rp=require(_0x16ac('0x5'));var fs=require('fs');var path=require(_0x16ac('0x6'));var rimraf=require('rimraf');var config=require(_0x16ac('0x7'));var attributes=require(_0x16ac('0x8'));module['exports']=function(_0x1cf3aa,_0x3f2973){return _0x1cf3aa['define'](_0x16ac('0x9'),attributes,{'tableName':_0x16ac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0217=['Attachment','attachments','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./attachment.attributes','exports','define'];(function(_0x4c0c5b,_0x4c2c42){var _0x411237=function(_0x2271d7){while(--_0x2271d7){_0x4c0c5b['push'](_0x4c0c5b['shift']());}};_0x411237(++_0x4c2c42);}(_0x0217,0x116));var _0x7021=function(_0x2cc0a3,_0x3ed21c){_0x2cc0a3=_0x2cc0a3-0x0;var _0x4d8c92=_0x0217[_0x2cc0a3];return _0x4d8c92;};'use strict';var _=require('lodash');var util=require(_0x7021('0x0'));var logger=require(_0x7021('0x1'))('api');var moment=require(_0x7021('0x2'));var BPromise=require(_0x7021('0x3'));var rp=require(_0x7021('0x4'));var fs=require('fs');var path=require(_0x7021('0x5'));var rimraf=require('rimraf');var config=require(_0x7021('0x6'));var attributes=require(_0x7021('0x7'));module[_0x7021('0x8')]=function(_0x229463,_0x34b106){return _0x229463[_0x7021('0x9')](_0x7021('0xa'),attributes,{'tableName':_0x7021('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 516267f..18aa7de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd3b=['body','options','raw','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','then','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','CreateAttachment','Attachment'];(function(_0x2b2e94,_0x2796be){var _0x248aff=function(_0x374b20){while(--_0x374b20){_0x2b2e94['push'](_0x2b2e94['shift']());}};_0x248aff(++_0x2796be);}(_0xbd3b,0x1c3));var _0xbbd3=function(_0x3f146c,_0x42e0dc){_0x3f146c=_0x3f146c-0x0;var _0x407f72=_0xbd3b[_0x3f146c];return _0x407f72;};'use strict';var _=require(_0xbbd3('0x0'));var util=require(_0xbbd3('0x1'));var moment=require(_0xbbd3('0x2'));var BPromise=require('bluebird');var rs=require(_0xbbd3('0x3'));var fs=require('fs');var Redis=require(_0xbbd3('0x4'));var db=require(_0xbbd3('0x5'))['db'];var utils=require(_0xbbd3('0x6'));var logger=require('../../config/logger')(_0xbbd3('0x7'));var config=require(_0xbbd3('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xbbd3('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3cc5d9,_0x232ede,_0x44f331){return new BPromise(function(_0x4b8667,_0x3d3f9f){return client[_0xbbd3('0xa')](_0x3cc5d9,_0x44f331)[_0xbbd3('0xb')](function(_0x229f59){logger['info'](_0xbbd3('0xc'),_0x232ede,_0xbbd3('0xd'));logger[_0xbbd3('0xe')](_0xbbd3('0xf'),_0x232ede,'request\x20sent',JSON[_0xbbd3('0x10')](_0x229f59));if(_0x229f59['error']){if(_0x229f59['error'][_0xbbd3('0x11')]===0x1f4){logger[_0xbbd3('0x12')](_0xbbd3('0xc'),_0x232ede,_0x229f59[_0xbbd3('0x12')][_0xbbd3('0x13')]);return _0x3d3f9f(_0x229f59[_0xbbd3('0x12')][_0xbbd3('0x13')]);}logger[_0xbbd3('0x12')](_0xbbd3('0xc'),_0x232ede,_0x229f59[_0xbbd3('0x12')]['message']);return _0x4b8667(_0x229f59['error'][_0xbbd3('0x13')]);}else{logger[_0xbbd3('0x14')](_0xbbd3('0xc'),_0x232ede,_0xbbd3('0xd'));_0x4b8667(_0x229f59[_0xbbd3('0x15')]['message']);}})[_0xbbd3('0x16')](function(_0x49d6b9){logger[_0xbbd3('0x12')](_0xbbd3('0xc'),_0x232ede,_0x49d6b9);_0x3d3f9f(_0x49d6b9);});});}exports[_0xbbd3('0x17')]=function(_0x240a46){var _0x5f3952=this;return new Promise(function(_0x50b6e4,_0x12954a){return db[_0xbbd3('0x18')]['create'](_0x240a46[_0xbbd3('0x19')],{'raw':_0x240a46['options']?_0x240a46[_0xbbd3('0x1a')][_0xbbd3('0x1b')]===undefined?!![]:![]:!![]})[_0xbbd3('0xb')](function(_0x1fa586){logger[_0xbbd3('0x14')](_0xbbd3('0x17'),_0x240a46);logger[_0xbbd3('0xe')]('CreateAttachment',_0x240a46,JSON[_0xbbd3('0x10')](_0x1fa586));_0x50b6e4(_0x1fa586);})['catch'](function(_0x5392eb){logger[_0xbbd3('0x12')](_0xbbd3('0x17'),_0x5392eb[_0xbbd3('0x13')],_0x240a46);_0x12954a(_0x5f3952[_0xbbd3('0x12')](0x1f4,_0x5392eb['message']));});});};
\ No newline at end of file
+var _0x630e=['code','Attachment,\x20%s,\x20%s','message','result','catch','CreateAttachment','Attachment','create','body','options','raw','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','Attachment,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x41c381,_0x1176bd){var _0x427981=function(_0x508843){while(--_0x508843){_0x41c381['push'](_0x41c381['shift']());}};_0x427981(++_0x1176bd);}(_0x630e,0x1af));var _0xe630=function(_0x293195,_0x53d983){_0x293195=_0x293195-0x0;var _0x5e46a0=_0x630e[_0x293195];return _0x5e46a0;};'use strict';var _=require(_0xe630('0x0'));var util=require('util');var moment=require(_0xe630('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe630('0x2'));var db=require(_0xe630('0x3'))['db'];var utils=require(_0xe630('0x4'));var logger=require('../../config/logger')(_0xe630('0x5'));var config=require(_0xe630('0x6'));var jayson=require(_0xe630('0x7'));var client=jayson[_0xe630('0x8')][_0xe630('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x481b21,_0x20193d,_0x34bad4){return new BPromise(function(_0x5a73ad,_0x267926){return client['request'](_0x481b21,_0x34bad4)[_0xe630('0xa')](function(_0x3da641){logger[_0xe630('0xb')]('Attachment,\x20%s,\x20%s',_0x20193d,'request\x20sent');logger[_0xe630('0xc')](_0xe630('0xd'),_0x20193d,_0xe630('0xe'),JSON[_0xe630('0xf')](_0x3da641));if(_0x3da641['error']){if(_0x3da641[_0xe630('0x10')][_0xe630('0x11')]===0x1f4){logger[_0xe630('0x10')](_0xe630('0x12'),_0x20193d,_0x3da641[_0xe630('0x10')][_0xe630('0x13')]);return _0x267926(_0x3da641[_0xe630('0x10')][_0xe630('0x13')]);}logger[_0xe630('0x10')](_0xe630('0x12'),_0x20193d,_0x3da641[_0xe630('0x10')][_0xe630('0x13')]);return _0x5a73ad(_0x3da641[_0xe630('0x10')]['message']);}else{logger[_0xe630('0xb')](_0xe630('0x12'),_0x20193d,_0xe630('0xe'));_0x5a73ad(_0x3da641[_0xe630('0x14')][_0xe630('0x13')]);}})[_0xe630('0x15')](function(_0x26a2b7){logger[_0xe630('0x10')](_0xe630('0x12'),_0x20193d,_0x26a2b7);_0x267926(_0x26a2b7);});});}exports[_0xe630('0x16')]=function(_0x3dbcf6){var _0x9721fa=this;return new Promise(function(_0xafcf13,_0x79213e){return db[_0xe630('0x17')][_0xe630('0x18')](_0x3dbcf6[_0xe630('0x19')],{'raw':_0x3dbcf6[_0xe630('0x1a')]?_0x3dbcf6[_0xe630('0x1a')][_0xe630('0x1b')]===undefined?!![]:![]:!![]})[_0xe630('0xa')](function(_0x22fa75){logger[_0xe630('0xb')](_0xe630('0x16'),_0x3dbcf6);logger[_0xe630('0xc')](_0xe630('0x16'),_0x3dbcf6,JSON['stringify'](_0x22fa75));_0xafcf13(_0x22fa75);})[_0xe630('0x15')](function(_0x35e869){logger[_0xe630('0x10')]('CreateAttachment',_0x35e869[_0xe630('0x13')],_0x3dbcf6);_0x79213e(_0x9721fa[_0xe630('0x10')](0x1f4,_0x35e869[_0xe630('0x13')]));});});};
\ No newline at end of file
index 986ef7f..3087524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['root','format','%s-%s','originalname','replace','file','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post','/:id/clone'];(function(_0x11dffc,_0x18bcb5){var _0x1728d5=function(_0x4b759a){while(--_0x4b759a){_0x11dffc['push'](_0x11dffc['shift']());}};_0x1728d5(++_0x18bcb5);}(_0xadb5,0xad));var _0x5adb=function(_0x12d0a4,_0x31ef87){_0x12d0a4=_0x12d0a4-0x0;var _0x5e94ac=_0xadb5[_0x12d0a4];return _0x5e94ac;};'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('./attachment.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('0xe')](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller['clone']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1a8f66,_0x1ea238,_0x82e67e){_0x82e67e(null,path['join'](config[_0x5adb('0x10')],'server/files/attachments/'));},'filename':function(_0x2a0b70,_0x5433bf,_0x8cfcc6){_0x8cfcc6(null,util[_0x5adb('0x11')](_0x5adb('0x12'),Date['now'](),_0x5433bf[_0x5adb('0x13')][_0x5adb('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x5adb('0xe')]('/',upload['single'](_0x5adb('0x15')),controller['create']);router[_0x5adb('0x16')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x17')]);router[_0x5adb('0x18')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x19')]);module[_0x5adb('0x1a')]=router;
\ No newline at end of file
+var _0x0b0e=['/:id/clone','clone','diskStorage','join','server/files/attachments/','format','now','originalname','replace','single','create','/:id','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','isAuthenticated','index','show','/:id/download','post'];(function(_0x38a7ac,_0x45514b){var _0x53061a=function(_0x1d2469){while(--_0x1d2469){_0x38a7ac['push'](_0x38a7ac['shift']());}};_0x53061a(++_0x45514b);}(_0x0b0e,0x187));var _0xe0b0=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x0b0e[_0x465a0c];return _0x1e202e;};'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['download']);router[_0xe0b0('0xe')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x10')]);var upload=multer({'storage':multer[_0xe0b0('0x11')]({'destination':function(_0x574d96,_0x399320,_0x2cdad2){_0x2cdad2(null,path[_0xe0b0('0x12')](config['root'],_0xe0b0('0x13')));},'filename':function(_0x1c358a,_0x3cc19a,_0x45f914){_0x45f914(null,util[_0xe0b0('0x14')]('%s-%s',Date[_0xe0b0('0x15')](),_0x3cc19a[_0xe0b0('0x16')][_0xe0b0('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xe0b0('0xe')]('/',upload[_0xe0b0('0x18')]('file'),controller[_0xe0b0('0x19')]);router['put'](_0xe0b0('0x1a'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x1b')]('/:id',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x1c')]);module['exports']=router;
\ No newline at end of file
index ed6a0c5..1f40ea1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6fe=['clientSecret','callbackURL','Setting','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','emails','value','user','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','clearBlockUser','getLicense','catch','passport-google-oauth20','Strategy','../../config/environment','../../components/auth/service','signToken','../../config/utils','login','authenticate','google','/login','profile','callback','use','clientID'];(function(_0x5b94d1,_0x4e009c){var _0x3f79c8=function(_0x377973){while(--_0x377973){_0x5b94d1['push'](_0x5b94d1['shift']());}};_0x3f79c8(++_0x4e009c);}(_0xb6fe,0xc4));var _0xeb6f=function(_0x2b8077,_0x453634){_0x2b8077=_0x2b8077-0x0;var _0x308091=_0xb6fe[_0x2b8077];return _0x308091;};'use strict';var _=require('lodash');var passport=require('passport');var GoogleStrategy=require(_0xeb6f('0x0'))[_0xeb6f('0x1')];var moment=require('moment');var db=require('../../mysqldb')['db'];var config=require(_0xeb6f('0x2'));var signToken=require(_0xeb6f('0x3'))[_0xeb6f('0x4')];var utils=require(_0xeb6f('0x5'));exports[_0xeb6f('0x6')]=passport[_0xeb6f('0x7')](_0xeb6f('0x8'),{'failureRedirect':_0xeb6f('0x9'),'scope':[_0xeb6f('0xa'),'email'],'session':![]});exports[_0xeb6f('0xb')]=passport[_0xeb6f('0x7')](_0xeb6f('0x8'),{'failureRedirect':_0xeb6f('0x9'),'session':![]});passport[_0xeb6f('0xc')](new GoogleStrategy({'clientID':config['google']?config[_0xeb6f('0x8')][_0xeb6f('0xd')]:'id','clientSecret':config[_0xeb6f('0x8')]?config[_0xeb6f('0x8')][_0xeb6f('0xe')]:'secret','callbackURL':config[_0xeb6f('0x8')]?config[_0xeb6f('0x8')][_0xeb6f('0xf')]:''},function(_0x3a3af1,_0x1fccd7,_0x55b9af,_0x28e75f){var _0x112128,_0x15f1a3;return db[_0xeb6f('0x10')][_0xeb6f('0x11')]({'where':{'id':0x1},'attributes':[_0xeb6f('0x12'),_0xeb6f('0x13')],'raw':!![]})[_0xeb6f('0x14')](function(_0xb075f5){_0x112128=_0xb075f5;return db[_0xeb6f('0x15')][_0xeb6f('0x16')]({'where':{'email':_[_0xeb6f('0x17')](_0x55b9af[_0xeb6f('0x18')],_0xeb6f('0x19')),'role':{'$or':['admin',_0xeb6f('0x1a'),_0xeb6f('0x1b')]}}});})[_0xeb6f('0x14')](function(_0x48ea61){_0x15f1a3=_0x48ea61;if(_0x15f1a3){if(_0x15f1a3[_0xeb6f('0x1c')]){return _0x28e75f(_0xeb6f('0x1d'));}else if(_0x112128[_0xeb6f('0x13')]>0x0){if(_0x15f1a3[_0xeb6f('0x1e')]){if(moment(_0x15f1a3[_0xeb6f('0x1f')])['add'](_0x112128[_0xeb6f('0x13')],'minutes')>moment()){return _0x28e75f(_0xeb6f('0x1d'));}else{return utils[_0xeb6f('0x20')](_0x15f1a3,0x0,![],null)['then'](function(){return utils['getLicense'](_0x15f1a3);})[_0xeb6f('0x14')](function(){return _0x28e75f(null,_0x15f1a3);});}}else{return utils[_0xeb6f('0x21')](_0x15f1a3)[_0xeb6f('0x14')](function(){return _0x28e75f(null,_0x15f1a3);});}}else{return utils[_0xeb6f('0x21')](_0x15f1a3)['then'](function(){return _0x28e75f(null,_0x15f1a3);});}}return _0x28e75f('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0xeb6f('0x22')](function(_0x16ee87){_0x28e75f(_0x16ee87);});}));
\ No newline at end of file
+var _0x3609=['value','admin','user','agent','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','moment','../../mysqldb','../../config/environment','signToken','../../config/utils','login','profile','email','authenticate','google','/login','use','clientID','secret','Setting','blockDuration','User','find','map'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0x3609,0x101));var _0x9360=function(_0x340159,_0x2fcd2b){_0x340159=_0x340159-0x0;var _0x3eaad6=_0x3609[_0x340159];return _0x3eaad6;};'use strict';var _=require(_0x9360('0x0'));var passport=require(_0x9360('0x1'));var GoogleStrategy=require(_0x9360('0x2'))[_0x9360('0x3')];var moment=require(_0x9360('0x4'));var db=require(_0x9360('0x5'))['db'];var config=require(_0x9360('0x6'));var signToken=require('../../components/auth/service')[_0x9360('0x7')];var utils=require(_0x9360('0x8'));exports[_0x9360('0x9')]=passport['authenticate']('google',{'failureRedirect':'/login','scope':[_0x9360('0xa'),_0x9360('0xb')],'session':![]});exports['callback']=passport[_0x9360('0xc')](_0x9360('0xd'),{'failureRedirect':_0x9360('0xe'),'session':![]});passport[_0x9360('0xf')](new GoogleStrategy({'clientID':config[_0x9360('0xd')]?config[_0x9360('0xd')][_0x9360('0x10')]:'id','clientSecret':config[_0x9360('0xd')]?config['google']['clientSecret']:_0x9360('0x11'),'callbackURL':config[_0x9360('0xd')]?config[_0x9360('0xd')]['callbackURL']:''},function(_0x2f0249,_0x2abe20,_0x265b26,_0x1e1112){var _0x359e01,_0x34f18d;return db[_0x9360('0x12')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x9360('0x13')],'raw':!![]})['then'](function(_0x222592){_0x359e01=_0x222592;return db[_0x9360('0x14')][_0x9360('0x15')]({'where':{'email':_[_0x9360('0x16')](_0x265b26['emails'],_0x9360('0x17')),'role':{'$or':[_0x9360('0x18'),_0x9360('0x19'),_0x9360('0x1a')]}}});})[_0x9360('0x1b')](function(_0x2bf175){_0x34f18d=_0x2bf175;if(_0x34f18d){if(_0x34f18d['disabled']){return _0x1e1112(_0x9360('0x1c'));}else if(_0x359e01[_0x9360('0x13')]>0x0){if(_0x34f18d[_0x9360('0x1d')]){if(moment(_0x34f18d['blockedAt'])[_0x9360('0x1e')](_0x359e01['blockDuration'],_0x9360('0x1f'))>moment()){return _0x1e1112(_0x9360('0x1c'));}else{return utils[_0x9360('0x20')](_0x34f18d,0x0,![],null)[_0x9360('0x1b')](function(){return utils[_0x9360('0x21')](_0x34f18d);})['then'](function(){return _0x1e1112(null,_0x34f18d);});}}else{return utils['getLicense'](_0x34f18d)[_0x9360('0x1b')](function(){return _0x1e1112(null,_0x34f18d);});}}else{return utils[_0x9360('0x21')](_0x34f18d)[_0x9360('0x1b')](function(){return _0x1e1112(null,_0x34f18d);});}}return _0x1e1112('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0x9360('0x22')](function(_0x275d16){_0x1e1112(_0x275d16);});}));
\ No newline at end of file
index 1e57d9b..ce4fd93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e4=['login','/callback','isMiddleware','setTokenCookie','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get'];(function(_0x10d405,_0x28d136){var _0x12bd98=function(_0x3b6cc3){while(--_0x3b6cc3){_0x10d405['push'](_0x10d405['shift']());}};_0x12bd98(++_0x28d136);}(_0x70e4,0x13d));var _0x470e=function(_0x43e4b3,_0x1444de){_0x43e4b3=_0x43e4b3-0x0;var _0x10c655=_0x70e4[_0x43e4b3];return _0x10c655;};'use strict';var express=require(_0x470e('0x0'));var passport=require(_0x470e('0x1'));var router=express[_0x470e('0x2')]();var controller=require(_0x470e('0x3'));var userController=require(_0x470e('0x4'));var authService=require(_0x470e('0x5'));router[_0x470e('0x6')]('/',controller[_0x470e('0x7')]);router[_0x470e('0x6')](_0x470e('0x8'),controller['callback'],authService[_0x470e('0x9')],userController[_0x470e('0x7')],authService[_0x470e('0xa')]);module[_0x470e('0xb')]=router;
\ No newline at end of file
+var _0xd863=['/callback','isMiddleware','setTokenCookie','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js','get','login'];(function(_0x5e3b18,_0x198773){var _0x2d3391=function(_0x276a8d){while(--_0x276a8d){_0x5e3b18['push'](_0x5e3b18['shift']());}};_0x2d3391(++_0x198773);}(_0xd863,0x1c7));var _0x3d86=function(_0x1be26c,_0x316cd4){_0x1be26c=_0x1be26c-0x0;var _0x203c91=_0xd863[_0x1be26c];return _0x203c91;};'use strict';var express=require(_0x3d86('0x0'));var passport=require(_0x3d86('0x1'));var router=express[_0x3d86('0x2')]();var controller=require(_0x3d86('0x3'));var userController=require(_0x3d86('0x4'));var authService=require('../../components/auth/service');router[_0x3d86('0x5')]('/',controller[_0x3d86('0x6')]);router[_0x3d86('0x5')](_0x3d86('0x7'),controller['callback'],authService[_0x3d86('0x8')],userController[_0x3d86('0x6')],authService[_0x3d86('0x9')]);module[_0x3d86('0xa')]=router;
\ No newline at end of file
index 7b756f4..1303f34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd219=['blockDuration','name','password','salt','disabled','blockedAt','loginAttempts','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','then','authenticate','add','clearBlockUser','blocked','minutes','getLicense','Smtp','service','host','port','secure','authentication','auth','\x22%s\x22\x20<%s>','email','request','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','error','message','stringify','status','send','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','signToken','json','online','forgot','body','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordExpires','now','save','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','headers','/reset/','Reset\x20Email\x20sent!','catch','reset','find','params','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','Password\x20reset!','use','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../config/utils','client','Setting','findOne','allowedLoginAttempts'];(function(_0x3c9862,_0x2464d5){var _0x5af392=function(_0x441fba){while(--_0x441fba){_0x3c9862['push'](_0x3c9862['shift']());}};_0x5af392(++_0x2464d5);}(_0xd219,0x13e));var _0x9d21=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xd219[_0x580576];return _0x3f55a0;};'use strict';var util=require(_0x9d21('0x0'));var passport=require(_0x9d21('0x1'));var LocalStrategy=require(_0x9d21('0x2'))[_0x9d21('0x3')];var jayson=require(_0x9d21('0x4'));var _=require(_0x9d21('0x5'));var rs=require(_0x9d21('0x6'));var moment=require(_0x9d21('0x7'));var db=require(_0x9d21('0x8'))['db'];var authService=require('../../components/auth/service');var utils=require(_0x9d21('0x9'));var client=jayson[_0x9d21('0xa')]['http']({'port':0x232b});function localAuthenticate(_0x302b27,_0x4c3f0f,_0x22a220,_0x1ffe1b){var _0xf9866b,_0x2a1f9a;return db[_0x9d21('0xb')][_0x9d21('0xc')]({'where':{'id':0x1},'attributes':[_0x9d21('0xd'),_0x9d21('0xe')],'raw':!![]})['then'](function(_0x2a3d11){_0xf9866b=_0x2a3d11;return _0x302b27[_0x9d21('0xc')]({'attributes':['id',_0x9d21('0xf'),_0x9d21('0x10'),_0x9d21('0x11'),'role',_0x9d21('0x12'),'blocked',_0x9d21('0x13'),_0x9d21('0x14')],'where':{'name':_0x4c3f0f,'role':{'$or':[_0x9d21('0x15'),_0x9d21('0x16'),_0x9d21('0x17')]}}});})['then'](function(_0x5264bc){if(!_0x5264bc||_0x5264bc&&_0x5264bc[_0x9d21('0xf')]!==_0x4c3f0f){throw new Error(_0x9d21('0x18'));}else{_0x2a1f9a=_0x5264bc;return _0x2a1f9a;}})[_0x9d21('0x19')](function(){_0x2a1f9a[_0x9d21('0x1a')](_0x22a220,function(_0x356529,_0x4fa42b){var _0x2eaeb7=_0x2a1f9a[_0x9d21('0x14')]+0x1;if(_0x356529){return _0x1ffe1b(_0x356529);}else if(!_0x4fa42b){if(_0x2a1f9a[_0x9d21('0x12')]){return _0x1ffe1b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0xf9866b[_0x9d21('0xd')]>0x0){if(_0x2a1f9a['blocked']){if(_0xf9866b['blockDuration']>0x0){if(moment(_0x2a1f9a[_0x9d21('0x13')])[_0x9d21('0x1b')](_0xf9866b['blockDuration'],'minutes')>moment()){return _0x1ffe1b(null,![],{'message':_0x9d21('0x18')});}else{return utils[_0x9d21('0x1c')](_0x2a1f9a,_0x2eaeb7,![],null)[_0x9d21('0x19')](function(){return _0x1ffe1b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x1ffe1b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x2eaeb7>=_0xf9866b[_0x9d21('0xd')]){return utils[_0x9d21('0x1c')](_0x2a1f9a,0x0,!![],moment())['then'](function(){return _0x1ffe1b(null,![],{'message':_0x9d21('0x18')});});}else{return utils[_0x9d21('0x1c')](_0x2a1f9a,_0x2eaeb7,![],null)[_0x9d21('0x19')](function(){return _0x1ffe1b(null,![],{'message':_0x9d21('0x18')});});}}}else{return _0x1ffe1b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x2a1f9a[_0x9d21('0x12')]){return _0x1ffe1b(null,![],{'message':_0x9d21('0x18')});}else if(_0xf9866b[_0x9d21('0xd')]>0x0){if(_0x2a1f9a[_0x9d21('0x1d')]){if(_0xf9866b[_0x9d21('0xe')]>0x0){if(moment(_0x2a1f9a[_0x9d21('0x13')])[_0x9d21('0x1b')](_0xf9866b['blockDuration'],_0x9d21('0x1e'))>moment()){return _0x1ffe1b(null,![],{'message':_0x9d21('0x18')});}else{return utils[_0x9d21('0x1c')](_0x2a1f9a,0x0,![],null)[_0x9d21('0x19')](function(){return utils[_0x9d21('0x1f')](_0x2a1f9a);})[_0x9d21('0x19')](function(){return _0x1ffe1b(null,_0x2a1f9a);});}}else{return _0x1ffe1b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x9d21('0x1c')](_0x2a1f9a,0x0,![],null)['then'](function(){return utils[_0x9d21('0x1f')](_0x2a1f9a);})[_0x9d21('0x19')](function(){return _0x1ffe1b(null,_0x2a1f9a);})['catch'](function(_0x40e31d){return _0x1ffe1b(null,![],_0x40e31d);});}}else{if(_0x2a1f9a[_0x9d21('0x1d')]){return _0x1ffe1b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x9d21('0x1f')](_0x2a1f9a)[_0x9d21('0x19')](function(){return _0x1ffe1b(null,_0x2a1f9a);});}}}});})['catch'](function(_0x598ee0){return _0x1ffe1b(null,![],_0x598ee0);});}function sendServiceMail(_0x9eb3c6){return db['MailAccount']['find']({'where':{'service':!![]},'attributes':['id',_0x9d21('0xf'),'email'],'include':[{'model':db['MailServerOut'],'as':_0x9d21('0x20')}]})[_0x9d21('0x19')](function(_0x3468cb){if(!_0x3468cb){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x291e34={'tls':{'rejectUnauthorized':![]}};if(_0x3468cb[_0x9d21('0x20')][_0x9d21('0x21')]){_0x291e34[_0x9d21('0x21')]=_0x3468cb[_0x9d21('0x20')][_0x9d21('0x21')];}else{_0x291e34[_0x9d21('0x22')]=_0x3468cb['Smtp']['host'];_0x291e34[_0x9d21('0x23')]=_0x3468cb[_0x9d21('0x20')]['port'];_0x291e34['secure']=_0x3468cb[_0x9d21('0x20')][_0x9d21('0x24')];}if(_0x3468cb[_0x9d21('0x20')][_0x9d21('0x25')]){_0x291e34[_0x9d21('0x26')]={'user':_0x3468cb[_0x9d21('0x20')][_0x9d21('0x16')],'pass':_0x3468cb['Smtp']['pass']};}var _0x2a8ceb={'account':_0x291e34,'message':_['merge']({'from':util['format'](_0x9d21('0x27'),_0x3468cb[_0x9d21('0xf')],_0x3468cb[_0x9d21('0x28')]||_0x3468cb[_0x9d21('0x20')][_0x9d21('0x16')])},_0x9eb3c6)};return client[_0x9d21('0x29')]('SendMail',_0x2a8ceb);})['then'](function(_0x3a2b46){if(_0x3a2b46['error']){throw new Error(util[_0x9d21('0x2a')](_0x9d21('0x2b'),_0x3a2b46[_0x9d21('0x2c')][_0x9d21('0x2d')]||JSON[_0x9d21('0x2e')](_0x3a2b46[_0x9d21('0x2c')])));}return!![];});}function handleError(_0x72d490,_0x319b4c,_0x11c943){return _0x72d490[_0x9d21('0x2f')](_0x319b4c||0x1f4)[_0x9d21('0x30')]({'message':_0x11c943?_0x11c943[_0x9d21('0x2d')]||_0x11c943:''});}exports['login']=function(_0x4f3109,_0x5be8c0,_0x41c9e5){passport['authenticate'](_0x9d21('0x31'),function(_0x15a14d,_0x5d0bed,_0x54cc41){var _0x23aa4c=_0x15a14d||_0x54cc41;if(_0x23aa4c){return handleError(_0x5be8c0,0x191,_0x23aa4c);}if(!_0x5d0bed){return handleError(_0x5be8c0,0x194,{'message':_0x9d21('0x32')});}else{var _0x1022e5={'payload':{'id':_0x5d0bed['id'],'role':_0x5d0bed[_0x9d21('0x33')]},'options':{'expiresIn':0x15180}};return authService[_0x9d21('0x34')](_0x1022e5)[_0x9d21('0x19')](function(_0x529ee3){_0x5be8c0[_0x9d21('0x35')]({'id':_0x5d0bed['id'],'token':_0x529ee3,'statusCall':'','isAlreadyLogged':_0x5d0bed[_0x9d21('0x36')]});});}})(_0x4f3109,_0x5be8c0,_0x41c9e5);};exports[_0x9d21('0x37')]=function(_0x3154dc,_0x3f8098,_0x371e7f){if(!_0x3154dc[_0x9d21('0x38')][_0x9d21('0x28')]){return handleError(_0x3f8098,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x604173=rs[_0x9d21('0x39')]();_0x3154dc['body'][_0x9d21('0x28')]=_0x3154dc[_0x9d21('0x38')][_0x9d21('0x28')][_0x9d21('0x3a')]()[_0x9d21('0x3b')]();var _0x5076c8;return db[_0x9d21('0xb')][_0x9d21('0xc')]({'where':{'id':0x1},'attributes':[_0x9d21('0xd'),'blockDuration'],'raw':!![]})[_0x9d21('0x19')](function(_0x5be958){_0x5076c8=_0x5be958;return db[_0x9d21('0x3c')]['find']({'where':{'email':_0x3154dc['body']['email']}});})['then'](function(_0xe53907){if(!_0xe53907){throw new Error(_0x9d21('0x3d'));}if(_0xe53907[_0x9d21('0x12')]){throw new Error(_0x9d21('0x3e'));}if(_0xe53907[_0x9d21('0x1d')]){if(moment(_0xe53907['blockedAt'])[_0x9d21('0x1b')](_0x5076c8[_0x9d21('0xe')],_0x9d21('0x1e'))>moment()){throw new Error(_0x9d21('0x3f'));}else{_0xe53907[_0x9d21('0x1d')]=![];_0xe53907['blockedAt']=null;}}_0xe53907['resetPasswordToken']=_0x604173;_0xe53907[_0x9d21('0x40')]=Date[_0x9d21('0x41')]()+0x36ee80;return _0xe53907[_0x9d21('0x42')]();})[_0x9d21('0x19')](function(){return sendServiceMail({'to':_0x3154dc[_0x9d21('0x38')][_0x9d21('0x28')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x9d21('0x43')+'https://'+_0x3154dc[_0x9d21('0x44')][_0x9d21('0x22')]+_0x9d21('0x45')+_0x604173+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0x9d21('0x19')](function(){_0x3f8098[_0x9d21('0x2f')](0xc8)[_0x9d21('0x30')]({'message':_0x9d21('0x46')});})[_0x9d21('0x47')](function(_0x28adbf){return handleError(_0x3f8098,0x1f4,_0x28adbf);});};exports[_0x9d21('0x48')]=function(_0x326bcf,_0x55dd34,_0x47a0f9){return db[_0x9d21('0x3c')][_0x9d21('0x49')]({'where':{'resetPasswordToken':_0x326bcf[_0x9d21('0x4a')]['token'],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0x9d21('0x19')](function(_0xee4c1b){if(!_0xee4c1b){throw new Error(_0x9d21('0x4b'));}return db[_0x9d21('0xb')][_0x9d21('0xc')]({'attributes':['id',_0x9d21('0x4c'),_0x9d21('0x4d'),_0x9d21('0x4e')]})[_0x9d21('0x19')](function(_0x327561){if(_0x327561[_0x9d21('0x4c')])authService[_0x9d21('0x4f')](_0x326bcf[_0x9d21('0x38')]['password']);if(!_0x327561[_0x9d21('0x4d')]||!_0xee4c1b['previousPasswords'])return _0xee4c1b;authService['validatePasswordHistory'](_0x326bcf['body'][_0x9d21('0x10')],_0xee4c1b[_0x9d21('0x50')],_0x327561[_0x9d21('0x4e')]);return _0xee4c1b;})[_0x9d21('0x19')](function(){_0xee4c1b[_0x9d21('0x10')]=_0x326bcf[_0x9d21('0x38')][_0x9d21('0x10')];_0xee4c1b['resetPasswordToken']=null;_0xee4c1b[_0x9d21('0x40')]=null;return _0xee4c1b['save']();});})[_0x9d21('0x19')](function(){_0x55dd34[_0x9d21('0x2f')](0xc8)[_0x9d21('0x30')]({'message':_0x9d21('0x51')});})[_0x9d21('0x47')](function(_0x15f119){return handleError(_0x55dd34,0x1f4,_0x15f119);});};passport[_0x9d21('0x52')](new LocalStrategy({'usernameField':'name','passwordField':'password'},function(_0x574e5e,_0x1ecabd,_0x5b96eb){return localAuthenticate(db[_0x9d21('0x3c')],_0x574e5e,_0x1ecabd,_0x5b96eb);}));
\ No newline at end of file
+var _0x9340=['message','status','send','login','local','online','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','find','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','headers','/reset/','Reset\x20Email\x20sent!','reset','User','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','passwordHistoryLimit','securePassword','validatePasswordPattern','previousPasswords','validatePasswordHistory','save','Password\x20reset!','use','util','passport','passport-local','Strategy','jayson/promise','randomstring','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','blockDuration','then','name','password','salt','role','disabled','loginAttempts','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','allowedLoginAttempts','blocked','blockedAt','add','minutes','clearBlockUser','getLicense','catch','MailAccount','email','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','merge','format','\x22%s\x22\x20<%s>','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!'];(function(_0x47aeee,_0x52d7ce){var _0x52fe71=function(_0x30af47){while(--_0x30af47){_0x47aeee['push'](_0x47aeee['shift']());}};_0x52fe71(++_0x52d7ce);}(_0x9340,0xd3));var _0x0934=function(_0x259b8c,_0x5bff3d){_0x259b8c=_0x259b8c-0x0;var _0x52e00f=_0x9340[_0x259b8c];return _0x52e00f;};'use strict';var util=require(_0x0934('0x0'));var passport=require(_0x0934('0x1'));var LocalStrategy=require(_0x0934('0x2'))[_0x0934('0x3')];var jayson=require(_0x0934('0x4'));var _=require('lodash');var rs=require(_0x0934('0x5'));var moment=require('moment');var db=require(_0x0934('0x6'))['db'];var authService=require(_0x0934('0x7'));var utils=require(_0x0934('0x8'));var client=jayson[_0x0934('0x9')][_0x0934('0xa')]({'port':0x232b});function localAuthenticate(_0x5d6eba,_0x1e0e0a,_0xa3fead,_0x22a150){var _0x4a8a98,_0x3517ae;return db[_0x0934('0xb')][_0x0934('0xc')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x0934('0xd')],'raw':!![]})[_0x0934('0xe')](function(_0x38f7c7){_0x4a8a98=_0x38f7c7;return _0x5d6eba[_0x0934('0xc')]({'attributes':['id',_0x0934('0xf'),_0x0934('0x10'),_0x0934('0x11'),_0x0934('0x12'),_0x0934('0x13'),'blocked','blockedAt',_0x0934('0x14')],'where':{'name':_0x1e0e0a,'role':{'$or':[_0x0934('0x15'),_0x0934('0x16'),_0x0934('0x17')]}}});})[_0x0934('0xe')](function(_0x134c8b){if(!_0x134c8b||_0x134c8b&&_0x134c8b[_0x0934('0xf')]!==_0x1e0e0a){throw new Error(_0x0934('0x18'));}else{_0x3517ae=_0x134c8b;return _0x3517ae;}})[_0x0934('0xe')](function(){_0x3517ae[_0x0934('0x19')](_0xa3fead,function(_0x50339c,_0x110b00){var _0x2bbe79=_0x3517ae['loginAttempts']+0x1;if(_0x50339c){return _0x22a150(_0x50339c);}else if(!_0x110b00){if(_0x3517ae[_0x0934('0x13')]){return _0x22a150(null,![],{'message':_0x0934('0x18')});}else if(_0x4a8a98[_0x0934('0x1a')]>0x0){if(_0x3517ae[_0x0934('0x1b')]){if(_0x4a8a98[_0x0934('0xd')]>0x0){if(moment(_0x3517ae[_0x0934('0x1c')])[_0x0934('0x1d')](_0x4a8a98[_0x0934('0xd')],_0x0934('0x1e'))>moment()){return _0x22a150(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x0934('0x1f')](_0x3517ae,_0x2bbe79,![],null)[_0x0934('0xe')](function(){return _0x22a150(null,![],{'message':_0x0934('0x18')});});}}else{return _0x22a150(null,![],{'message':_0x0934('0x18')});}}else{if(_0x2bbe79>=_0x4a8a98[_0x0934('0x1a')]){return utils[_0x0934('0x1f')](_0x3517ae,0x0,!![],moment())[_0x0934('0xe')](function(){return _0x22a150(null,![],{'message':_0x0934('0x18')});});}else{return utils[_0x0934('0x1f')](_0x3517ae,_0x2bbe79,![],null)[_0x0934('0xe')](function(){return _0x22a150(null,![],{'message':_0x0934('0x18')});});}}}else{return _0x22a150(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x3517ae['disabled']){return _0x22a150(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x4a8a98['allowedLoginAttempts']>0x0){if(_0x3517ae['blocked']){if(_0x4a8a98[_0x0934('0xd')]>0x0){if(moment(_0x3517ae[_0x0934('0x1c')])['add'](_0x4a8a98['blockDuration'],_0x0934('0x1e'))>moment()){return _0x22a150(null,![],{'message':_0x0934('0x18')});}else{return utils['clearBlockUser'](_0x3517ae,0x0,![],null)[_0x0934('0xe')](function(){return utils[_0x0934('0x20')](_0x3517ae);})[_0x0934('0xe')](function(){return _0x22a150(null,_0x3517ae);});}}else{return _0x22a150(null,![],{'message':_0x0934('0x18')});}}else{return utils[_0x0934('0x1f')](_0x3517ae,0x0,![],null)[_0x0934('0xe')](function(){return utils['getLicense'](_0x3517ae);})['then'](function(){return _0x22a150(null,_0x3517ae);})[_0x0934('0x21')](function(_0x59a9c4){return _0x22a150(null,![],_0x59a9c4);});}}else{if(_0x3517ae[_0x0934('0x1b')]){return _0x22a150(null,![],{'message':_0x0934('0x18')});}else{return utils[_0x0934('0x20')](_0x3517ae)[_0x0934('0xe')](function(){return _0x22a150(null,_0x3517ae);});}}}});})[_0x0934('0x21')](function(_0x242d69){return _0x22a150(null,![],_0x242d69);});}function sendServiceMail(_0x537807){return db[_0x0934('0x22')]['find']({'where':{'service':!![]},'attributes':['id',_0x0934('0xf'),_0x0934('0x23')],'include':[{'model':db[_0x0934('0x24')],'as':_0x0934('0x25')}]})[_0x0934('0xe')](function(_0x15d38b){if(!_0x15d38b){throw new Error(_0x0934('0x26'));}var _0x4804a3={'tls':{'rejectUnauthorized':![]}};if(_0x15d38b[_0x0934('0x25')][_0x0934('0x27')]){_0x4804a3[_0x0934('0x27')]=_0x15d38b[_0x0934('0x25')][_0x0934('0x27')];}else{_0x4804a3[_0x0934('0x28')]=_0x15d38b[_0x0934('0x25')]['host'];_0x4804a3[_0x0934('0x29')]=_0x15d38b[_0x0934('0x25')][_0x0934('0x29')];_0x4804a3[_0x0934('0x2a')]=_0x15d38b[_0x0934('0x25')][_0x0934('0x2a')];}if(_0x15d38b['Smtp'][_0x0934('0x2b')]){_0x4804a3['auth']={'user':_0x15d38b[_0x0934('0x25')][_0x0934('0x16')],'pass':_0x15d38b[_0x0934('0x25')]['pass']};}var _0x5db4fc={'account':_0x4804a3,'message':_[_0x0934('0x2c')]({'from':util[_0x0934('0x2d')](_0x0934('0x2e'),_0x15d38b[_0x0934('0xf')],_0x15d38b['email']||_0x15d38b[_0x0934('0x25')][_0x0934('0x16')])},_0x537807)};return client['request'](_0x0934('0x2f'),_0x5db4fc);})['then'](function(_0x5261ea){if(_0x5261ea[_0x0934('0x30')]){throw new Error(util[_0x0934('0x2d')](_0x0934('0x31'),_0x5261ea[_0x0934('0x30')][_0x0934('0x32')]||JSON['stringify'](_0x5261ea[_0x0934('0x30')])));}return!![];});}function handleError(_0x293159,_0x5ca357,_0x30859e){return _0x293159[_0x0934('0x33')](_0x5ca357||0x1f4)[_0x0934('0x34')]({'message':_0x30859e?_0x30859e[_0x0934('0x32')]||_0x30859e:''});}exports[_0x0934('0x35')]=function(_0x2b6d8b,_0x587f61,_0x23cd0e){passport[_0x0934('0x19')](_0x0934('0x36'),function(_0x1ca32b,_0x12dc1f,_0x4af76e){var _0x7438f8=_0x1ca32b||_0x4af76e;if(_0x7438f8){return handleError(_0x587f61,0x191,_0x7438f8);}if(!_0x12dc1f){return handleError(_0x587f61,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x49826f={'payload':{'id':_0x12dc1f['id'],'role':_0x12dc1f['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x49826f)[_0x0934('0xe')](function(_0x124dba){_0x587f61['json']({'id':_0x12dc1f['id'],'token':_0x124dba,'statusCall':'','isAlreadyLogged':_0x12dc1f[_0x0934('0x37')]});});}})(_0x2b6d8b,_0x587f61,_0x23cd0e);};exports['forgot']=function(_0x1e5fa8,_0x5cd6a3,_0x2c47fb){if(!_0x1e5fa8[_0x0934('0x38')][_0x0934('0x23')]){return handleError(_0x5cd6a3,0x1f4,{'message':_0x0934('0x39')});}var _0x228b9a=rs[_0x0934('0x3a')]();_0x1e5fa8[_0x0934('0x38')]['email']=_0x1e5fa8[_0x0934('0x38')][_0x0934('0x23')][_0x0934('0x3b')]()[_0x0934('0x3c')]();var _0x1635bc;return db[_0x0934('0xb')][_0x0934('0xc')]({'where':{'id':0x1},'attributes':[_0x0934('0x1a'),'blockDuration'],'raw':!![]})[_0x0934('0xe')](function(_0x190aea){_0x1635bc=_0x190aea;return db['User'][_0x0934('0x3d')]({'where':{'email':_0x1e5fa8['body'][_0x0934('0x23')]}});})[_0x0934('0xe')](function(_0x39f9a7){if(!_0x39f9a7){throw new Error(_0x0934('0x3e'));}if(_0x39f9a7[_0x0934('0x13')]){throw new Error(_0x0934('0x3f'));}if(_0x39f9a7[_0x0934('0x1b')]){if(moment(_0x39f9a7[_0x0934('0x1c')])[_0x0934('0x1d')](_0x1635bc[_0x0934('0xd')],'minutes')>moment()){throw new Error(_0x0934('0x40'));}else{_0x39f9a7[_0x0934('0x1b')]=![];_0x39f9a7['blockedAt']=null;}}_0x39f9a7[_0x0934('0x41')]=_0x228b9a;_0x39f9a7[_0x0934('0x42')]=Date[_0x0934('0x43')]()+0x36ee80;return _0x39f9a7['save']();})[_0x0934('0xe')](function(){return sendServiceMail({'to':_0x1e5fa8[_0x0934('0x38')][_0x0934('0x23')],'subject':_0x0934('0x44'),'text':_0x0934('0x45')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+'https://'+_0x1e5fa8[_0x0934('0x46')]['host']+_0x0934('0x47')+_0x228b9a+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})['then'](function(){_0x5cd6a3[_0x0934('0x33')](0xc8)[_0x0934('0x34')]({'message':_0x0934('0x48')});})['catch'](function(_0x4c7b62){return handleError(_0x5cd6a3,0x1f4,_0x4c7b62);});};exports[_0x0934('0x49')]=function(_0x117a10,_0x199e4c,_0x3d4379){return db[_0x0934('0x4a')][_0x0934('0x3d')]({'where':{'resetPasswordToken':_0x117a10[_0x0934('0x4b')][_0x0934('0x4c')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0x0934('0xe')](function(_0x52c318){if(!_0x52c318){throw new Error(_0x0934('0x4d'));}return db[_0x0934('0xb')]['findOne']({'attributes':['id','securePassword',_0x0934('0x4e'),_0x0934('0x4f')]})[_0x0934('0xe')](function(_0x4e9b39){if(_0x4e9b39[_0x0934('0x50')])authService[_0x0934('0x51')](_0x117a10['body'][_0x0934('0x10')]);if(!_0x4e9b39[_0x0934('0x4e')]||!_0x52c318[_0x0934('0x52')])return _0x52c318;authService[_0x0934('0x53')](_0x117a10[_0x0934('0x38')][_0x0934('0x10')],_0x52c318[_0x0934('0x52')],_0x4e9b39[_0x0934('0x4f')]);return _0x52c318;})[_0x0934('0xe')](function(){_0x52c318['password']=_0x117a10[_0x0934('0x38')][_0x0934('0x10')];_0x52c318[_0x0934('0x41')]=null;_0x52c318[_0x0934('0x42')]=null;return _0x52c318[_0x0934('0x54')]();});})['then'](function(){_0x199e4c[_0x0934('0x33')](0xc8)[_0x0934('0x34')]({'message':_0x0934('0x55')});})['catch'](function(_0x436ad2){return handleError(_0x199e4c,0x1f4,_0x436ad2);});};passport[_0x0934('0x56')](new LocalStrategy({'usernameField':_0x0934('0xf'),'passwordField':_0x0934('0x10')},function(_0x281745,_0x1da9f2,_0xf255f0){return localAuthenticate(db[_0x0934('0x4a')],_0x281745,_0x1da9f2,_0xf255f0);}));
\ No newline at end of file
index 2a4cd7f..5aa5424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa88c=['forgot','post','exports','login','/forgot'];(function(_0xb29e37,_0x3ab103){var _0x1d70c4=function(_0x297484){while(--_0x297484){_0xb29e37['push'](_0xb29e37['shift']());}};_0x1d70c4(++_0x3ab103);}(_0xa88c,0x1a7));var _0xca88=function(_0x2117dd,_0x36eb7d){_0x2117dd=_0x2117dd-0x0;var _0x218574=_0xa88c[_0x2117dd];return _0x218574;};'use strict';var express=require('express');var router=express['Router']();var controller=require('./authLocal.controller');router['post']('/',controller[_0xca88('0x0')]);router['post'](_0xca88('0x1'),controller[_0xca88('0x2')]);router[_0xca88('0x3')]('/reset/:token',controller['reset']);module[_0xca88('0x4')]=router;
\ No newline at end of file
+var _0xb935=['login','/forgot','/reset/:token','reset','exports','express','Router','post'];(function(_0x26cc16,_0x4c174f){var _0x345e3e=function(_0x14b4f8){while(--_0x14b4f8){_0x26cc16['push'](_0x26cc16['shift']());}};_0x345e3e(++_0x4c174f);}(_0xb935,0x12d));var _0x5b93=function(_0x9e2093,_0x26f86d){_0x9e2093=_0x9e2093-0x0;var _0x3dc0d2=_0xb935[_0x9e2093];return _0x3dc0d2;};'use strict';var express=require(_0x5b93('0x0'));var router=express[_0x5b93('0x1')]();var controller=require('./authLocal.controller');router[_0x5b93('0x2')]('/',controller[_0x5b93('0x3')]);router['post'](_0x5b93('0x4'),controller['forgot']);router[_0x5b93('0x2')](_0x5b93('0x5'),controller[_0x5b93('0x6')]);module[_0x5b93('0x7')]=router;
\ No newline at end of file
index 171adc7..40700ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7fd=['STRING','BOOLEAN','INTEGER','sequelize','exports'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xe7fd,0xc6));var _0xde7f=function(_0x42feb5,_0x152622){_0x42feb5=_0x42feb5-0x0;var _0x1f350d=_0xe7fd[_0x42feb5];return _0x1f350d;};'use strict';var Sequelize=require(_0xde7f('0x0'));module[_0xde7f('0x1')]={'name':{'type':Sequelize[_0xde7f('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0xde7f('0x2')]},'description':{'type':Sequelize[_0xde7f('0x2')]},'status':{'type':Sequelize[_0xde7f('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xde7f('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xfcb1=['exports','STRING','BOOLEAN','INTEGER','sequelize'];(function(_0x4b887e,_0x1e4a4a){var _0x4b7bf9=function(_0x8a7aec){while(--_0x8a7aec){_0x4b887e['push'](_0x4b887e['shift']());}};_0x4b7bf9(++_0x1e4a4a);}(_0xfcb1,0x68));var _0x1fcb=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfcb1[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x1fcb('0x0'));module[_0x1fcb('0x1')]={'name':{'type':Sequelize[_0x1fcb('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x1fcb('0x2')]},'description':{'type':Sequelize[_0x1fcb('0x2')]},'status':{'type':Sequelize[_0x1fcb('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x1fcb('0x4')],'defaultValue':0xa}};
\ No newline at end of file
index 8842d8d..bd604e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd238=['../../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','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy','error','stack','send','map','rawAttributes','type','name','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','Automation','includeAll','include','findAll','rows','catch','params','options','create','body','update','find','addConditions','Condition','ids','omit','getConditions','findOne','keys','addActions','getActions','Action','filter','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0xd238,0x99));var _0x8d23=function(_0x524392,_0xb7304e){_0x524392=_0x524392-0x0;var _0x5d8d55=_0xd238[_0x524392];return _0x5d8d55;};'use strict';var emlformat=require(_0x8d23('0x0'));var rimraf=require(_0x8d23('0x1'));var zipdir=require(_0x8d23('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8d23('0x3'));var moment=require(_0x8d23('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8d23('0x5'));var util=require(_0x8d23('0x6'));var path=require('path');var sox=require(_0x8d23('0x7'));var csv=require('to-csv');var ejs=require(_0x8d23('0x8'));var fs=require('fs');var fs_extra=require(_0x8d23('0x9'));var _=require(_0x8d23('0xa'));var squel=require(_0x8d23('0xb'));var crypto=require(_0x8d23('0xc'));var jsforce=require(_0x8d23('0xd'));var deskjs=require(_0x8d23('0xe'));var toCsv=require(_0x8d23('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8d23('0x10'));var authService=require(_0x8d23('0x11'));var qs=require(_0x8d23('0x12'));var as=require(_0x8d23('0x13'));var hardwareService=require(_0x8d23('0x14'));var logger=require(_0x8d23('0x15'))(_0x8d23('0x16'));var utils=require(_0x8d23('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x8d23('0x18'));var db=require(_0x8d23('0x19'))['db'];function respondWithStatusCode(_0x3e28c7,_0x426a8f){_0x426a8f=_0x426a8f||0xcc;return function(_0x27d186){if(_0x27d186){return _0x3e28c7[_0x8d23('0x1a')](_0x426a8f);}return _0x3e28c7[_0x8d23('0x1b')](_0x426a8f)[_0x8d23('0x1c')]();};}function respondWithResult(_0x4f1b34,_0x415bba){_0x415bba=_0x415bba||0xc8;return function(_0x4479e5){if(_0x4479e5){return _0x4f1b34['status'](_0x415bba)[_0x8d23('0x1d')](_0x4479e5);}};}function respondWithFilteredResult(_0x4f6958,_0x293fcf){return function(_0x401e57){if(_0x401e57){var _0xb1dd82=typeof _0x293fcf['offset']===_0x8d23('0x1e')&&typeof _0x293fcf[_0x8d23('0x1f')]===_0x8d23('0x1e');var _0x4b3b36=_0x401e57[_0x8d23('0x20')];var _0x4cd7f0=_0xb1dd82?0x0:_0x293fcf[_0x8d23('0x21')];var _0x33aa72=_0xb1dd82?_0x401e57[_0x8d23('0x20')]:_0x293fcf[_0x8d23('0x21')]+_0x293fcf[_0x8d23('0x1f')];var _0xedd0f2;if(_0x33aa72>=_0x4b3b36){_0x33aa72=_0x4b3b36;_0xedd0f2=0xc8;}else{_0xedd0f2=0xce;}_0x4f6958[_0x8d23('0x1b')](_0xedd0f2);return _0x4f6958[_0x8d23('0x22')](_0x8d23('0x23'),_0x4cd7f0+'-'+_0x33aa72+'/'+_0x4b3b36)['json'](_0x401e57);}return null;};}function patchUpdates(_0x535f06){return function(_0x1db795){try{jsonpatch[_0x8d23('0x24')](_0x1db795,_0x535f06,!![]);}catch(_0xad5a19){return BPromise[_0x8d23('0x25')](_0xad5a19);}return _0x1db795['save']();};}function saveUpdates(_0x4deec0,_0x127cd4){return function(_0x23508b){if(_0x23508b){return _0x23508b['update'](_0x4deec0)[_0x8d23('0x26')](function(_0x2428a7){return _0x2428a7;});}return null;};}function removeEntity(_0x23510a,_0x14a9bb){return function(_0x2ec195){if(_0x2ec195){return _0x2ec195[_0x8d23('0x27')]()['then'](function(){_0x23510a['status'](0xcc)[_0x8d23('0x1c')]();});}};}function handleEntityNotFound(_0x32742d,_0x3a319c){return function(_0x30f17c){if(!_0x30f17c){_0x32742d['sendStatus'](0x194);}return _0x30f17c;};}function handleError(_0x3f9ce6,_0x3b9c88){_0x3b9c88=_0x3b9c88||0x1f4;return function(_0xc8c9fe){logger[_0x8d23('0x28')](_0xc8c9fe[_0x8d23('0x29')]);if(_0xc8c9fe['name']){delete _0xc8c9fe['name'];}_0x3f9ce6[_0x8d23('0x1b')](_0x3b9c88)[_0x8d23('0x2a')](_0xc8c9fe);};}exports['index']=function(_0x5d195d,_0x46a2ba){var _0x16ce75={},_0x36a7de={},_0x5613b2={'count':0x0,'rows':[]};var _0x32405c=_[_0x8d23('0x2b')](db['Automation'][_0x8d23('0x2c')],function(_0x365499){return{'name':_0x365499['fieldName'],'type':_0x365499[_0x8d23('0x2d')]['key']};});_0x36a7de['model']=_[_0x8d23('0x2b')](_0x32405c,_0x8d23('0x2e'));_0x36a7de['query']=_['keys'](_0x5d195d[_0x8d23('0x2f')]);_0x36a7de[_0x8d23('0x30')]=_[_0x8d23('0x31')](_0x36a7de[_0x8d23('0x32')],_0x36a7de[_0x8d23('0x2f')]);_0x16ce75[_0x8d23('0x33')]=_[_0x8d23('0x31')](_0x36a7de[_0x8d23('0x32')],qs['fields'](_0x5d195d[_0x8d23('0x2f')][_0x8d23('0x34')]));_0x16ce75[_0x8d23('0x33')]=_0x16ce75[_0x8d23('0x33')][_0x8d23('0x35')]?_0x16ce75[_0x8d23('0x33')]:_0x36a7de['model'];if(!_0x5d195d[_0x8d23('0x2f')][_0x8d23('0x36')](_0x8d23('0x37'))){_0x16ce75[_0x8d23('0x1f')]=qs[_0x8d23('0x1f')](_0x5d195d[_0x8d23('0x2f')][_0x8d23('0x1f')]);_0x16ce75[_0x8d23('0x21')]=qs[_0x8d23('0x21')](_0x5d195d[_0x8d23('0x2f')][_0x8d23('0x21')]);}_0x16ce75[_0x8d23('0x38')]=qs[_0x8d23('0x39')](_0x5d195d[_0x8d23('0x2f')][_0x8d23('0x39')]);_0x16ce75[_0x8d23('0x3a')]=qs[_0x8d23('0x30')](_[_0x8d23('0x3b')](_0x5d195d[_0x8d23('0x2f')],_0x36a7de[_0x8d23('0x30')]),_0x32405c);if(_0x5d195d[_0x8d23('0x2f')]['filter']){_0x16ce75[_0x8d23('0x3a')]=_[_0x8d23('0x3c')](_0x16ce75['where'],{'$or':_[_0x8d23('0x2b')](_0x32405c,function(_0x51a88b){if(_0x51a88b[_0x8d23('0x2d')]!==_0x8d23('0x3d')){var _0x22b7df={};_0x22b7df[_0x51a88b[_0x8d23('0x2e')]]={'$like':'%'+_0x5d195d[_0x8d23('0x2f')]['filter']+'%'};return _0x22b7df;}})});}_0x16ce75=_['merge']({},_0x16ce75,_0x5d195d['options']);var _0x14b367={'where':_0x16ce75[_0x8d23('0x3a')]};return db[_0x8d23('0x3e')][_0x8d23('0x20')](_0x14b367)[_0x8d23('0x26')](function(_0x1c0348){_0x5613b2[_0x8d23('0x20')]=_0x1c0348;if(_0x5d195d['query'][_0x8d23('0x3f')]){_0x16ce75[_0x8d23('0x40')]=[{'all':!![]}];}return db[_0x8d23('0x3e')][_0x8d23('0x41')](_0x16ce75);})[_0x8d23('0x26')](function(_0x56ab6d){_0x5613b2[_0x8d23('0x42')]=_0x56ab6d;return _0x5613b2;})['then'](respondWithFilteredResult(_0x46a2ba,_0x16ce75))[_0x8d23('0x43')](handleError(_0x46a2ba,null));};exports['show']=function(_0x404000,_0x5e926a){var _0x25dc25={'raw':![],'where':{'id':_0x404000[_0x8d23('0x44')]['id']}},_0x27f899={};_0x27f899['model']=_['keys'](db[_0x8d23('0x3e')][_0x8d23('0x2c')]);_0x27f899[_0x8d23('0x2f')]=_['keys'](_0x404000[_0x8d23('0x2f')]);_0x27f899[_0x8d23('0x30')]=_[_0x8d23('0x31')](_0x27f899['model'],_0x27f899[_0x8d23('0x2f')]);_0x25dc25[_0x8d23('0x33')]=_['intersection'](_0x27f899[_0x8d23('0x32')],qs[_0x8d23('0x34')](_0x404000[_0x8d23('0x2f')][_0x8d23('0x34')]));_0x25dc25['attributes']=_0x25dc25[_0x8d23('0x33')]['length']?_0x25dc25['attributes']:_0x27f899[_0x8d23('0x32')];if(_0x404000['query'][_0x8d23('0x3f')]){_0x25dc25[_0x8d23('0x40')]=[{'all':!![]}];}_0x25dc25=_['merge']({},_0x25dc25,_0x404000[_0x8d23('0x45')]);return db[_0x8d23('0x3e')]['find'](_0x25dc25)['then'](handleEntityNotFound(_0x5e926a,null))['then'](respondWithResult(_0x5e926a,null))[_0x8d23('0x43')](handleError(_0x5e926a,null));};exports['create']=function(_0x4d85b1,_0x5328b6){return db['Automation'][_0x8d23('0x46')](_0x4d85b1[_0x8d23('0x47')],{})[_0x8d23('0x26')](respondWithResult(_0x5328b6,0xc9))[_0x8d23('0x43')](handleError(_0x5328b6,null));};exports[_0x8d23('0x48')]=function(_0x35dccf,_0x4c868e){if(_0x35dccf[_0x8d23('0x47')]['id']){delete _0x35dccf[_0x8d23('0x47')]['id'];}return db[_0x8d23('0x3e')][_0x8d23('0x49')]({'where':{'id':_0x35dccf[_0x8d23('0x44')]['id']}})['then'](handleEntityNotFound(_0x4c868e,null))[_0x8d23('0x26')](saveUpdates(_0x35dccf[_0x8d23('0x47')],null))[_0x8d23('0x26')](respondWithResult(_0x4c868e,null))[_0x8d23('0x43')](handleError(_0x4c868e,null));};exports['destroy']=function(_0x57c69f,_0x5a7c4c){return db[_0x8d23('0x3e')][_0x8d23('0x49')]({'where':{'id':_0x57c69f[_0x8d23('0x44')]['id']}})[_0x8d23('0x26')](handleEntityNotFound(_0x5a7c4c,null))[_0x8d23('0x26')](removeEntity(_0x5a7c4c,null))['catch'](handleError(_0x5a7c4c,null));};exports[_0x8d23('0x4a')]=function(_0x24d3df,_0x248176,_0x180fee){return db[_0x8d23('0x4b')]['find']({'where':{'id':_0x24d3df[_0x8d23('0x44')]['id']}})[_0x8d23('0x26')](handleEntityNotFound(_0x248176,null))[_0x8d23('0x26')](function(_0x5ecbb4){if(_0x5ecbb4){return _0x5ecbb4[_0x8d23('0x4a')](_0x24d3df[_0x8d23('0x47')][_0x8d23('0x4c')],_[_0x8d23('0x4d')](_0x24d3df['body'],[_0x8d23('0x4c'),'id'])||{});}})['then'](respondWithResult(_0x248176,null))[_0x8d23('0x43')](handleError(_0x248176,null));};exports[_0x8d23('0x4e')]=function(_0x1dd22c,_0x4f73ea,_0x45b829){var _0x3a0365={};var _0x226093={};var _0x196078;var _0x2f7164;return db[_0x8d23('0x3e')][_0x8d23('0x4f')]({'where':{'id':_0x1dd22c['params']['id']}})[_0x8d23('0x26')](handleEntityNotFound(_0x4f73ea,null))['then'](function(_0x424ccd){if(_0x424ccd){_0x196078=_0x424ccd;_0x226093[_0x8d23('0x32')]=_['keys'](db[_0x8d23('0x4b')]['rawAttributes']);_0x226093['query']=_[_0x8d23('0x50')](_0x1dd22c[_0x8d23('0x2f')]);_0x226093[_0x8d23('0x30')]=_['intersection'](_0x226093[_0x8d23('0x32')],_0x226093[_0x8d23('0x2f')]);_0x3a0365['attributes']=_[_0x8d23('0x31')](_0x226093[_0x8d23('0x32')],qs[_0x8d23('0x34')](_0x1dd22c[_0x8d23('0x2f')][_0x8d23('0x34')]));_0x3a0365[_0x8d23('0x33')]=_0x3a0365[_0x8d23('0x33')][_0x8d23('0x35')]?_0x3a0365[_0x8d23('0x33')]:_0x226093['model'];_0x3a0365[_0x8d23('0x38')]=qs[_0x8d23('0x39')](_0x1dd22c[_0x8d23('0x2f')][_0x8d23('0x39')]);_0x3a0365[_0x8d23('0x3a')]=qs[_0x8d23('0x30')](_[_0x8d23('0x3b')](_0x1dd22c[_0x8d23('0x2f')],_0x226093[_0x8d23('0x30')]));if(_0x1dd22c[_0x8d23('0x2f')]['filter']){_0x3a0365[_0x8d23('0x3a')]=_[_0x8d23('0x3c')](_0x3a0365[_0x8d23('0x3a')],{'$or':_['map'](_0x3a0365['attributes'],function(_0x81bc13){var _0x123840={};_0x123840[_0x81bc13]={'$like':'%'+_0x1dd22c[_0x8d23('0x2f')]['filter']+'%'};return _0x123840;})});}_0x3a0365=_[_0x8d23('0x3c')]({},_0x3a0365,_0x1dd22c[_0x8d23('0x45')]);return _0x196078[_0x8d23('0x4e')](_0x3a0365);}})['then'](function(_0x5bf213){if(_0x5bf213){_0x2f7164=_0x5bf213['length'];if(!_0x1dd22c[_0x8d23('0x2f')][_0x8d23('0x36')](_0x8d23('0x37'))){_0x3a0365[_0x8d23('0x1f')]=qs['limit'](_0x1dd22c[_0x8d23('0x2f')][_0x8d23('0x1f')]);_0x3a0365['offset']=qs[_0x8d23('0x21')](_0x1dd22c[_0x8d23('0x2f')][_0x8d23('0x21')]);}return _0x196078[_0x8d23('0x4e')](_0x3a0365);}})['then'](function(_0x340516){if(_0x340516){return _0x340516?{'count':_0x2f7164,'rows':_0x340516}:null;}})[_0x8d23('0x26')](respondWithResult(_0x4f73ea,null))[_0x8d23('0x43')](handleError(_0x4f73ea,null));};exports['addActions']=function(_0x46486e,_0x3c4ae5,_0x3aecd1){return db['Action'][_0x8d23('0x49')]({'where':{'id':_0x46486e[_0x8d23('0x44')]['id']}})[_0x8d23('0x26')](handleEntityNotFound(_0x3c4ae5,null))[_0x8d23('0x26')](function(_0x1cb82a){if(_0x1cb82a){return _0x1cb82a[_0x8d23('0x51')](_0x46486e[_0x8d23('0x47')][_0x8d23('0x4c')],_[_0x8d23('0x4d')](_0x46486e['body'],[_0x8d23('0x4c'),'id'])||{});}})[_0x8d23('0x26')](respondWithResult(_0x3c4ae5,null))[_0x8d23('0x43')](handleError(_0x3c4ae5,null));};exports[_0x8d23('0x52')]=function(_0x581745,_0x2f0f13,_0x1a97cf){var _0x2aac9e={};var _0x4734f8={};var _0x404cfe;var _0x547e71;return db[_0x8d23('0x3e')][_0x8d23('0x4f')]({'where':{'id':_0x581745[_0x8d23('0x44')]['id']}})[_0x8d23('0x26')](handleEntityNotFound(_0x2f0f13,null))[_0x8d23('0x26')](function(_0x113c96){if(_0x113c96){_0x404cfe=_0x113c96;_0x4734f8[_0x8d23('0x32')]=_['keys'](db[_0x8d23('0x53')][_0x8d23('0x2c')]);_0x4734f8[_0x8d23('0x2f')]=_[_0x8d23('0x50')](_0x581745[_0x8d23('0x2f')]);_0x4734f8['filters']=_[_0x8d23('0x31')](_0x4734f8[_0x8d23('0x32')],_0x4734f8[_0x8d23('0x2f')]);_0x2aac9e[_0x8d23('0x33')]=_['intersection'](_0x4734f8['model'],qs[_0x8d23('0x34')](_0x581745[_0x8d23('0x2f')][_0x8d23('0x34')]));_0x2aac9e[_0x8d23('0x33')]=_0x2aac9e[_0x8d23('0x33')][_0x8d23('0x35')]?_0x2aac9e[_0x8d23('0x33')]:_0x4734f8[_0x8d23('0x32')];_0x2aac9e[_0x8d23('0x38')]=qs[_0x8d23('0x39')](_0x581745['query'][_0x8d23('0x39')]);_0x2aac9e[_0x8d23('0x3a')]=qs[_0x8d23('0x30')](_[_0x8d23('0x3b')](_0x581745[_0x8d23('0x2f')],_0x4734f8[_0x8d23('0x30')]));if(_0x581745[_0x8d23('0x2f')][_0x8d23('0x54')]){_0x2aac9e[_0x8d23('0x3a')]=_[_0x8d23('0x3c')](_0x2aac9e[_0x8d23('0x3a')],{'$or':_[_0x8d23('0x2b')](_0x2aac9e['attributes'],function(_0x2b5553){var _0x125a22={};_0x125a22[_0x2b5553]={'$like':'%'+_0x581745[_0x8d23('0x2f')][_0x8d23('0x54')]+'%'};return _0x125a22;})});}_0x2aac9e=_[_0x8d23('0x3c')]({},_0x2aac9e,_0x581745[_0x8d23('0x45')]);return _0x404cfe[_0x8d23('0x52')](_0x2aac9e);}})[_0x8d23('0x26')](function(_0x218621){if(_0x218621){_0x547e71=_0x218621[_0x8d23('0x35')];if(!_0x581745['query'][_0x8d23('0x36')]('nolimit')){_0x2aac9e[_0x8d23('0x1f')]=qs[_0x8d23('0x1f')](_0x581745[_0x8d23('0x2f')][_0x8d23('0x1f')]);_0x2aac9e[_0x8d23('0x21')]=qs['offset'](_0x581745[_0x8d23('0x2f')][_0x8d23('0x21')]);}return _0x404cfe[_0x8d23('0x52')](_0x2aac9e);}})[_0x8d23('0x26')](function(_0x1a3545){if(_0x1a3545){return _0x1a3545?{'count':_0x547e71,'rows':_0x1a3545}:null;}})[_0x8d23('0x26')](respondWithResult(_0x2f0f13,null))[_0x8d23('0x43')](handleError(_0x2f0f13,null));};
\ No newline at end of file
+var _0xc3f5=['ids','getConditions','findOne','Condition','addActions','Action','getActions','order','eml-format','fast-json-patch','request-promise','moment','bluebird','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/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','error','send','index','map','Automation','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','name','options','include','rows','show','params','intersection','includeAll','find','then','catch','create','body','addConditions','omit'];(function(_0x654316,_0x5ba131){var _0x4836dd=function(_0x1c3039){while(--_0x1c3039){_0x654316['push'](_0x654316['shift']());}};_0x4836dd(++_0x5ba131);}(_0xc3f5,0x107));var _0x5c3f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc3f5[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x5c3f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5c3f('0x1'));var rp=require(_0x5c3f('0x2'));var moment=require(_0x5c3f('0x3'));var BPromise=require(_0x5c3f('0x4'));var Mustache=require('mustache');var util=require(_0x5c3f('0x5'));var path=require(_0x5c3f('0x6'));var sox=require('sox');var csv=require(_0x5c3f('0x7'));var ejs=require(_0x5c3f('0x8'));var fs=require('fs');var fs_extra=require(_0x5c3f('0x9'));var _=require(_0x5c3f('0xa'));var squel=require(_0x5c3f('0xb'));var crypto=require(_0x5c3f('0xc'));var jsforce=require(_0x5c3f('0xd'));var deskjs=require(_0x5c3f('0xe'));var toCsv=require(_0x5c3f('0x7'));var querystring=require(_0x5c3f('0xf'));var Papa=require('papaparse');var Redis=require(_0x5c3f('0x10'));var authService=require(_0x5c3f('0x11'));var qs=require(_0x5c3f('0x12'));var as=require(_0x5c3f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5c3f('0x14'))(_0x5c3f('0x15'));var utils=require(_0x5c3f('0x16'));var config=require(_0x5c3f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x5c3f('0x18'))['db'];function respondWithStatusCode(_0x840582,_0x5c82be){_0x5c82be=_0x5c82be||0xcc;return function(_0x52a08d){if(_0x52a08d){return _0x840582[_0x5c3f('0x19')](_0x5c82be);}return _0x840582[_0x5c3f('0x1a')](_0x5c82be)[_0x5c3f('0x1b')]();};}function respondWithResult(_0x37e1d1,_0x4b76a6){_0x4b76a6=_0x4b76a6||0xc8;return function(_0x2f109f){if(_0x2f109f){return _0x37e1d1[_0x5c3f('0x1a')](_0x4b76a6)['json'](_0x2f109f);}};}function respondWithFilteredResult(_0x326b74,_0x444508){return function(_0x4b89e8){if(_0x4b89e8){var _0x45476a=typeof _0x444508[_0x5c3f('0x1c')]===_0x5c3f('0x1d')&&typeof _0x444508[_0x5c3f('0x1e')]===_0x5c3f('0x1d');var _0x5d38a7=_0x4b89e8[_0x5c3f('0x1f')];var _0x6cc6a8=_0x45476a?0x0:_0x444508[_0x5c3f('0x1c')];var _0x1b216d=_0x45476a?_0x4b89e8['count']:_0x444508[_0x5c3f('0x1c')]+_0x444508[_0x5c3f('0x1e')];var _0x3b98ca;if(_0x1b216d>=_0x5d38a7){_0x1b216d=_0x5d38a7;_0x3b98ca=0xc8;}else{_0x3b98ca=0xce;}_0x326b74[_0x5c3f('0x1a')](_0x3b98ca);return _0x326b74[_0x5c3f('0x20')](_0x5c3f('0x21'),_0x6cc6a8+'-'+_0x1b216d+'/'+_0x5d38a7)[_0x5c3f('0x22')](_0x4b89e8);}return null;};}function patchUpdates(_0x31452f){return function(_0x26e3a8){try{jsonpatch[_0x5c3f('0x23')](_0x26e3a8,_0x31452f,!![]);}catch(_0x3d38db){return BPromise['reject'](_0x3d38db);}return _0x26e3a8[_0x5c3f('0x24')]();};}function saveUpdates(_0x418428,_0x53f1b0){return function(_0x188df6){if(_0x188df6){return _0x188df6[_0x5c3f('0x25')](_0x418428)['then'](function(_0x78b62f){return _0x78b62f;});}return null;};}function removeEntity(_0x1e8cfc,_0x3cbdc5){return function(_0x127f29){if(_0x127f29){return _0x127f29[_0x5c3f('0x26')]()['then'](function(){_0x1e8cfc[_0x5c3f('0x1a')](0xcc)[_0x5c3f('0x1b')]();});}};}function handleEntityNotFound(_0xfe3cd5,_0x45b661){return function(_0x5a341a){if(!_0x5a341a){_0xfe3cd5[_0x5c3f('0x19')](0x194);}return _0x5a341a;};}function handleError(_0x46ef48,_0x46e1ed){_0x46e1ed=_0x46e1ed||0x1f4;return function(_0xb85165){logger[_0x5c3f('0x27')](_0xb85165['stack']);if(_0xb85165['name']){delete _0xb85165['name'];}_0x46ef48[_0x5c3f('0x1a')](_0x46e1ed)[_0x5c3f('0x28')](_0xb85165);};}exports[_0x5c3f('0x29')]=function(_0x465688,_0x543cfb){var _0x406f61={},_0x4cb9e5={},_0x3a71b7={'count':0x0,'rows':[]};var _0x1bc320=_[_0x5c3f('0x2a')](db[_0x5c3f('0x2b')][_0x5c3f('0x2c')],function(_0x5222fc){return{'name':_0x5222fc[_0x5c3f('0x2d')],'type':_0x5222fc[_0x5c3f('0x2e')][_0x5c3f('0x2f')]};});_0x4cb9e5[_0x5c3f('0x30')]=_[_0x5c3f('0x2a')](_0x1bc320,'name');_0x4cb9e5[_0x5c3f('0x31')]=_[_0x5c3f('0x32')](_0x465688[_0x5c3f('0x31')]);_0x4cb9e5['filters']=_['intersection'](_0x4cb9e5[_0x5c3f('0x30')],_0x4cb9e5[_0x5c3f('0x31')]);_0x406f61[_0x5c3f('0x33')]=_['intersection'](_0x4cb9e5['model'],qs['fields'](_0x465688['query'][_0x5c3f('0x34')]));_0x406f61['attributes']=_0x406f61[_0x5c3f('0x33')][_0x5c3f('0x35')]?_0x406f61[_0x5c3f('0x33')]:_0x4cb9e5[_0x5c3f('0x30')];if(!_0x465688[_0x5c3f('0x31')][_0x5c3f('0x36')](_0x5c3f('0x37'))){_0x406f61['limit']=qs[_0x5c3f('0x1e')](_0x465688['query'][_0x5c3f('0x1e')]);_0x406f61[_0x5c3f('0x1c')]=qs[_0x5c3f('0x1c')](_0x465688['query'][_0x5c3f('0x1c')]);}_0x406f61['order']=qs[_0x5c3f('0x38')](_0x465688[_0x5c3f('0x31')][_0x5c3f('0x38')]);_0x406f61[_0x5c3f('0x39')]=qs['filters'](_[_0x5c3f('0x3a')](_0x465688['query'],_0x4cb9e5[_0x5c3f('0x3b')]),_0x1bc320);if(_0x465688[_0x5c3f('0x31')][_0x5c3f('0x3c')]){_0x406f61[_0x5c3f('0x39')]=_[_0x5c3f('0x3d')](_0x406f61[_0x5c3f('0x39')],{'$or':_[_0x5c3f('0x2a')](_0x1bc320,function(_0x475c1b){if(_0x475c1b[_0x5c3f('0x2e')]!=='VIRTUAL'){var _0x53ba04={};_0x53ba04[_0x475c1b[_0x5c3f('0x3e')]]={'$like':'%'+_0x465688['query'][_0x5c3f('0x3c')]+'%'};return _0x53ba04;}})});}_0x406f61=_[_0x5c3f('0x3d')]({},_0x406f61,_0x465688[_0x5c3f('0x3f')]);var _0x341a14={'where':_0x406f61[_0x5c3f('0x39')]};return db['Automation'][_0x5c3f('0x1f')](_0x341a14)['then'](function(_0x1aa18e){_0x3a71b7[_0x5c3f('0x1f')]=_0x1aa18e;if(_0x465688['query']['includeAll']){_0x406f61[_0x5c3f('0x40')]=[{'all':!![]}];}return db[_0x5c3f('0x2b')]['findAll'](_0x406f61);})['then'](function(_0x158eb7){_0x3a71b7[_0x5c3f('0x41')]=_0x158eb7;return _0x3a71b7;})['then'](respondWithFilteredResult(_0x543cfb,_0x406f61))['catch'](handleError(_0x543cfb,null));};exports[_0x5c3f('0x42')]=function(_0x333d0c,_0x2fe386){var _0x36ec02={'raw':![],'where':{'id':_0x333d0c[_0x5c3f('0x43')]['id']}},_0x12237c={};_0x12237c[_0x5c3f('0x30')]=_[_0x5c3f('0x32')](db[_0x5c3f('0x2b')][_0x5c3f('0x2c')]);_0x12237c[_0x5c3f('0x31')]=_[_0x5c3f('0x32')](_0x333d0c[_0x5c3f('0x31')]);_0x12237c['filters']=_[_0x5c3f('0x44')](_0x12237c[_0x5c3f('0x30')],_0x12237c[_0x5c3f('0x31')]);_0x36ec02[_0x5c3f('0x33')]=_[_0x5c3f('0x44')](_0x12237c['model'],qs[_0x5c3f('0x34')](_0x333d0c[_0x5c3f('0x31')]['fields']));_0x36ec02['attributes']=_0x36ec02[_0x5c3f('0x33')][_0x5c3f('0x35')]?_0x36ec02[_0x5c3f('0x33')]:_0x12237c['model'];if(_0x333d0c[_0x5c3f('0x31')][_0x5c3f('0x45')]){_0x36ec02[_0x5c3f('0x40')]=[{'all':!![]}];}_0x36ec02=_[_0x5c3f('0x3d')]({},_0x36ec02,_0x333d0c[_0x5c3f('0x3f')]);return db[_0x5c3f('0x2b')][_0x5c3f('0x46')](_0x36ec02)[_0x5c3f('0x47')](handleEntityNotFound(_0x2fe386,null))['then'](respondWithResult(_0x2fe386,null))[_0x5c3f('0x48')](handleError(_0x2fe386,null));};exports['create']=function(_0x48a4eb,_0x566c2b){return db['Automation'][_0x5c3f('0x49')](_0x48a4eb[_0x5c3f('0x4a')],{})[_0x5c3f('0x47')](respondWithResult(_0x566c2b,0xc9))[_0x5c3f('0x48')](handleError(_0x566c2b,null));};exports[_0x5c3f('0x25')]=function(_0xde72b8,_0x5be836){if(_0xde72b8[_0x5c3f('0x4a')]['id']){delete _0xde72b8['body']['id'];}return db['Automation'][_0x5c3f('0x46')]({'where':{'id':_0xde72b8[_0x5c3f('0x43')]['id']}})[_0x5c3f('0x47')](handleEntityNotFound(_0x5be836,null))['then'](saveUpdates(_0xde72b8[_0x5c3f('0x4a')],null))['then'](respondWithResult(_0x5be836,null))[_0x5c3f('0x48')](handleError(_0x5be836,null));};exports[_0x5c3f('0x26')]=function(_0x452c7d,_0x125c19){return db['Automation'][_0x5c3f('0x46')]({'where':{'id':_0x452c7d[_0x5c3f('0x43')]['id']}})[_0x5c3f('0x47')](handleEntityNotFound(_0x125c19,null))[_0x5c3f('0x47')](removeEntity(_0x125c19,null))[_0x5c3f('0x48')](handleError(_0x125c19,null));};exports[_0x5c3f('0x4b')]=function(_0x24f3f6,_0x2c87fd,_0x3f13f8){return db['Condition'][_0x5c3f('0x46')]({'where':{'id':_0x24f3f6['params']['id']}})[_0x5c3f('0x47')](handleEntityNotFound(_0x2c87fd,null))[_0x5c3f('0x47')](function(_0x5b8e43){if(_0x5b8e43){return _0x5b8e43[_0x5c3f('0x4b')](_0x24f3f6[_0x5c3f('0x4a')]['ids'],_[_0x5c3f('0x4c')](_0x24f3f6[_0x5c3f('0x4a')],[_0x5c3f('0x4d'),'id'])||{});}})[_0x5c3f('0x47')](respondWithResult(_0x2c87fd,null))[_0x5c3f('0x48')](handleError(_0x2c87fd,null));};exports[_0x5c3f('0x4e')]=function(_0x22ddda,_0x5a43ed,_0x24bd91){var _0xa191fe={};var _0x407b8c={};var _0x1645ff;var _0xad1a5f;return db[_0x5c3f('0x2b')][_0x5c3f('0x4f')]({'where':{'id':_0x22ddda[_0x5c3f('0x43')]['id']}})['then'](handleEntityNotFound(_0x5a43ed,null))[_0x5c3f('0x47')](function(_0x1a5467){if(_0x1a5467){_0x1645ff=_0x1a5467;_0x407b8c['model']=_[_0x5c3f('0x32')](db[_0x5c3f('0x50')][_0x5c3f('0x2c')]);_0x407b8c[_0x5c3f('0x31')]=_[_0x5c3f('0x32')](_0x22ddda[_0x5c3f('0x31')]);_0x407b8c[_0x5c3f('0x3b')]=_['intersection'](_0x407b8c['model'],_0x407b8c[_0x5c3f('0x31')]);_0xa191fe['attributes']=_[_0x5c3f('0x44')](_0x407b8c[_0x5c3f('0x30')],qs[_0x5c3f('0x34')](_0x22ddda[_0x5c3f('0x31')][_0x5c3f('0x34')]));_0xa191fe[_0x5c3f('0x33')]=_0xa191fe[_0x5c3f('0x33')][_0x5c3f('0x35')]?_0xa191fe[_0x5c3f('0x33')]:_0x407b8c[_0x5c3f('0x30')];_0xa191fe['order']=qs[_0x5c3f('0x38')](_0x22ddda['query']['sort']);_0xa191fe[_0x5c3f('0x39')]=qs[_0x5c3f('0x3b')](_[_0x5c3f('0x3a')](_0x22ddda['query'],_0x407b8c['filters']));if(_0x22ddda['query'][_0x5c3f('0x3c')]){_0xa191fe['where']=_[_0x5c3f('0x3d')](_0xa191fe[_0x5c3f('0x39')],{'$or':_[_0x5c3f('0x2a')](_0xa191fe[_0x5c3f('0x33')],function(_0x372099){var _0x5598a7={};_0x5598a7[_0x372099]={'$like':'%'+_0x22ddda['query'][_0x5c3f('0x3c')]+'%'};return _0x5598a7;})});}_0xa191fe=_['merge']({},_0xa191fe,_0x22ddda[_0x5c3f('0x3f')]);return _0x1645ff['getConditions'](_0xa191fe);}})[_0x5c3f('0x47')](function(_0x3697c0){if(_0x3697c0){_0xad1a5f=_0x3697c0[_0x5c3f('0x35')];if(!_0x22ddda['query'][_0x5c3f('0x36')](_0x5c3f('0x37'))){_0xa191fe[_0x5c3f('0x1e')]=qs[_0x5c3f('0x1e')](_0x22ddda[_0x5c3f('0x31')][_0x5c3f('0x1e')]);_0xa191fe[_0x5c3f('0x1c')]=qs[_0x5c3f('0x1c')](_0x22ddda['query'][_0x5c3f('0x1c')]);}return _0x1645ff[_0x5c3f('0x4e')](_0xa191fe);}})[_0x5c3f('0x47')](function(_0x1e166f){if(_0x1e166f){return _0x1e166f?{'count':_0xad1a5f,'rows':_0x1e166f}:null;}})[_0x5c3f('0x47')](respondWithResult(_0x5a43ed,null))[_0x5c3f('0x48')](handleError(_0x5a43ed,null));};exports[_0x5c3f('0x51')]=function(_0x3ec90e,_0x376b69,_0x1ffdc7){return db[_0x5c3f('0x52')]['find']({'where':{'id':_0x3ec90e[_0x5c3f('0x43')]['id']}})[_0x5c3f('0x47')](handleEntityNotFound(_0x376b69,null))['then'](function(_0x29800b){if(_0x29800b){return _0x29800b[_0x5c3f('0x51')](_0x3ec90e[_0x5c3f('0x4a')]['ids'],_[_0x5c3f('0x4c')](_0x3ec90e[_0x5c3f('0x4a')],[_0x5c3f('0x4d'),'id'])||{});}})[_0x5c3f('0x47')](respondWithResult(_0x376b69,null))[_0x5c3f('0x48')](handleError(_0x376b69,null));};exports[_0x5c3f('0x53')]=function(_0x52946e,_0x19990c,_0x16cb84){var _0x947560={};var _0x58a68f={};var _0x571078;var _0x67a421;return db['Automation'][_0x5c3f('0x4f')]({'where':{'id':_0x52946e['params']['id']}})[_0x5c3f('0x47')](handleEntityNotFound(_0x19990c,null))[_0x5c3f('0x47')](function(_0x157b41){if(_0x157b41){_0x571078=_0x157b41;_0x58a68f['model']=_[_0x5c3f('0x32')](db['Action'][_0x5c3f('0x2c')]);_0x58a68f[_0x5c3f('0x31')]=_[_0x5c3f('0x32')](_0x52946e[_0x5c3f('0x31')]);_0x58a68f['filters']=_['intersection'](_0x58a68f['model'],_0x58a68f[_0x5c3f('0x31')]);_0x947560[_0x5c3f('0x33')]=_[_0x5c3f('0x44')](_0x58a68f['model'],qs[_0x5c3f('0x34')](_0x52946e['query']['fields']));_0x947560[_0x5c3f('0x33')]=_0x947560['attributes'][_0x5c3f('0x35')]?_0x947560[_0x5c3f('0x33')]:_0x58a68f['model'];_0x947560[_0x5c3f('0x54')]=qs['sort'](_0x52946e[_0x5c3f('0x31')][_0x5c3f('0x38')]);_0x947560[_0x5c3f('0x39')]=qs[_0x5c3f('0x3b')](_[_0x5c3f('0x3a')](_0x52946e['query'],_0x58a68f[_0x5c3f('0x3b')]));if(_0x52946e[_0x5c3f('0x31')][_0x5c3f('0x3c')]){_0x947560[_0x5c3f('0x39')]=_[_0x5c3f('0x3d')](_0x947560[_0x5c3f('0x39')],{'$or':_[_0x5c3f('0x2a')](_0x947560[_0x5c3f('0x33')],function(_0x353027){var _0x453b13={};_0x453b13[_0x353027]={'$like':'%'+_0x52946e[_0x5c3f('0x31')]['filter']+'%'};return _0x453b13;})});}_0x947560=_[_0x5c3f('0x3d')]({},_0x947560,_0x52946e[_0x5c3f('0x3f')]);return _0x571078['getActions'](_0x947560);}})[_0x5c3f('0x47')](function(_0x2f6517){if(_0x2f6517){_0x67a421=_0x2f6517[_0x5c3f('0x35')];if(!_0x52946e[_0x5c3f('0x31')][_0x5c3f('0x36')](_0x5c3f('0x37'))){_0x947560['limit']=qs['limit'](_0x52946e['query'][_0x5c3f('0x1e')]);_0x947560[_0x5c3f('0x1c')]=qs[_0x5c3f('0x1c')](_0x52946e[_0x5c3f('0x31')]['offset']);}return _0x571078[_0x5c3f('0x53')](_0x947560);}})[_0x5c3f('0x47')](function(_0x2a8014){if(_0x2a8014){return _0x2a8014?{'count':_0x67a421,'rows':_0x2a8014}:null;}})[_0x5c3f('0x47')](respondWithResult(_0x19990c,null))[_0x5c3f('0x48')](handleError(_0x19990c,null));};
\ No newline at end of file
index b79dbe7..0e8d6df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbde=['api','request-promise','path','../../config/environment','./automation.attributes','exports','define','Automation','tools_automations','lodash','util'];(function(_0x485f35,_0x45a0fc){var _0x2ad118=function(_0x296650){while(--_0x296650){_0x485f35['push'](_0x485f35['shift']());}};_0x2ad118(++_0x45a0fc);}(_0xdbde,0x15e));var _0xedbd=function(_0x279f16,_0x46f3cc){_0x279f16=_0x279f16-0x0;var _0x10d89e=_0xdbde[_0x279f16];return _0x10d89e;};'use strict';var _=require(_0xedbd('0x0'));var util=require(_0xedbd('0x1'));var logger=require('../../config/logger')(_0xedbd('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xedbd('0x3'));var fs=require('fs');var path=require(_0xedbd('0x4'));var rimraf=require('rimraf');var config=require(_0xedbd('0x5'));var attributes=require(_0xedbd('0x6'));module[_0xedbd('0x7')]=function(_0x422523,_0x4b1a81){return _0x422523[_0xedbd('0x8')](_0xedbd('0x9'),attributes,{'tableName':_0xedbd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf66=['exports','define','Automation','tools_automations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./automation.attributes'];(function(_0x5354a1,_0x5b48fc){var _0x5095b8=function(_0x426520){while(--_0x426520){_0x5354a1['push'](_0x5354a1['shift']());}};_0x5095b8(++_0x5b48fc);}(_0xcf66,0xac));var _0x6cf6=function(_0x33d2fd,_0x153082){_0x33d2fd=_0x33d2fd-0x0;var _0x4a7f15=_0xcf66[_0x33d2fd];return _0x4a7f15;};'use strict';var _=require(_0x6cf6('0x0'));var util=require(_0x6cf6('0x1'));var logger=require(_0x6cf6('0x2'))(_0x6cf6('0x3'));var moment=require(_0x6cf6('0x4'));var BPromise=require(_0x6cf6('0x5'));var rp=require(_0x6cf6('0x6'));var fs=require('fs');var path=require(_0x6cf6('0x7'));var rimraf=require(_0x6cf6('0x8'));var config=require('../../config/environment');var attributes=require(_0x6cf6('0x9'));module[_0x6cf6('0xa')]=function(_0x339f22,_0x4c7e3f){return _0x339f22[_0x6cf6('0xb')](_0x6cf6('0xc'),attributes,{'tableName':_0x6cf6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b712e91..86fade2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdfb=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x471268,_0x5ce885){var _0x1298f3=function(_0x3f5110){while(--_0x3f5110){_0x471268['push'](_0x471268['shift']());}};_0x1298f3(++_0x5ce885);}(_0xbdfb,0x1ef));var _0xbbdf=function(_0x442ccd,_0x415d61){_0x442ccd=_0x442ccd-0x0;var _0x1a2c10=_0xbdfb[_0x442ccd];return _0x1a2c10;};'use strict';var _=require(_0xbbdf('0x0'));var util=require(_0xbbdf('0x1'));var moment=require(_0xbbdf('0x2'));var BPromise=require(_0xbbdf('0x3'));var rs=require(_0xbbdf('0x4'));var fs=require('fs');var Redis=require(_0xbbdf('0x5'));var db=require(_0xbbdf('0x6'))['db'];var utils=require(_0xbbdf('0x7'));var logger=require(_0xbbdf('0x8'))(_0xbbdf('0x9'));var config=require('../../config/environment');var jayson=require(_0xbbdf('0xa'));var client=jayson[_0xbbdf('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c930d,_0x17c835,_0x58a929){return new BPromise(function(_0x2f9954,_0x2ae0d8){return client[_0xbbdf('0xc')](_0x3c930d,_0x58a929)[_0xbbdf('0xd')](function(_0x4c1436){logger[_0xbbdf('0xe')](_0xbbdf('0xf'),_0x17c835,'request\x20sent');logger[_0xbbdf('0x10')](_0xbbdf('0x11'),_0x17c835,_0xbbdf('0x12'),JSON[_0xbbdf('0x13')](_0x4c1436));if(_0x4c1436['error']){if(_0x4c1436[_0xbbdf('0x14')][_0xbbdf('0x15')]===0x1f4){logger[_0xbbdf('0x14')]('Automation,\x20%s,\x20%s',_0x17c835,_0x4c1436['error']['message']);return _0x2ae0d8(_0x4c1436['error'][_0xbbdf('0x16')]);}logger[_0xbbdf('0x14')](_0xbbdf('0xf'),_0x17c835,_0x4c1436['error'][_0xbbdf('0x16')]);return _0x2f9954(_0x4c1436[_0xbbdf('0x14')][_0xbbdf('0x16')]);}else{logger[_0xbbdf('0xe')](_0xbbdf('0xf'),_0x17c835,'request\x20sent');_0x2f9954(_0x4c1436[_0xbbdf('0x17')][_0xbbdf('0x16')]);}})[_0xbbdf('0x18')](function(_0x547b94){logger['error'](_0xbbdf('0xf'),_0x17c835,_0x547b94);_0x2ae0d8(_0x547b94);});});}
\ No newline at end of file
+var _0x2ff5=['Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x1f47c7,_0x1e1f9d){var _0x3a6b36=function(_0x4bcf2d){while(--_0x4bcf2d){_0x1f47c7['push'](_0x1f47c7['shift']());}};_0x3a6b36(++_0x1e1f9d);}(_0x2ff5,0x1d5));var _0x52ff=function(_0x5f3e7a,_0x172c25){_0x5f3e7a=_0x5f3e7a-0x0;var _0x3ac600=_0x2ff5[_0x5f3e7a];return _0x3ac600;};'use strict';var _=require('lodash');var util=require(_0x52ff('0x0'));var moment=require(_0x52ff('0x1'));var BPromise=require('bluebird');var rs=require(_0x52ff('0x2'));var fs=require('fs');var Redis=require(_0x52ff('0x3'));var db=require(_0x52ff('0x4'))['db'];var utils=require(_0x52ff('0x5'));var logger=require(_0x52ff('0x6'))(_0x52ff('0x7'));var config=require('../../config/environment');var jayson=require(_0x52ff('0x8'));var client=jayson[_0x52ff('0x9')][_0x52ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x47e375,_0x33be91,_0xbbba62){return new BPromise(function(_0x3cfd13,_0x17ca0b){return client[_0x52ff('0xb')](_0x47e375,_0xbbba62)[_0x52ff('0xc')](function(_0x27c199){logger[_0x52ff('0xd')](_0x52ff('0xe'),_0x33be91,_0x52ff('0xf'));logger[_0x52ff('0x10')](_0x52ff('0x11'),_0x33be91,_0x52ff('0xf'),JSON[_0x52ff('0x12')](_0x27c199));if(_0x27c199[_0x52ff('0x13')]){if(_0x27c199['error']['code']===0x1f4){logger['error']('Automation,\x20%s,\x20%s',_0x33be91,_0x27c199[_0x52ff('0x13')]['message']);return _0x17ca0b(_0x27c199[_0x52ff('0x13')][_0x52ff('0x14')]);}logger['error'](_0x52ff('0xe'),_0x33be91,_0x27c199[_0x52ff('0x13')][_0x52ff('0x14')]);return _0x3cfd13(_0x27c199[_0x52ff('0x13')][_0x52ff('0x14')]);}else{logger[_0x52ff('0xd')]('Automation,\x20%s,\x20%s',_0x33be91,_0x52ff('0xf'));_0x3cfd13(_0x27c199[_0x52ff('0x15')][_0x52ff('0x14')]);}})[_0x52ff('0x16')](function(_0xa7ce6c){logger[_0x52ff('0x13')]('Automation,\x20%s,\x20%s',_0x33be91,_0xa7ce6c);_0x17ca0b(_0xa7ce6c);});});}
\ No newline at end of file
index 6a23ef6..deac91f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe563=['post','create','addConditions','addActions','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/conditions','getConditions','/:id/actions','getActions'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe563,0x125));var _0x3e56=function(_0x3fa256,_0x883d3f){_0x3fa256=_0x3fa256-0x0;var _0x199db8=_0xe563[_0x3fa256];return _0x199db8;};'use strict';var multer=require(_0x3e56('0x0'));var util=require(_0x3e56('0x1'));var path=require(_0x3e56('0x2'));var timeout=require(_0x3e56('0x3'));var express=require(_0x3e56('0x4'));var router=express[_0x3e56('0x5')]();var fs_extra=require(_0x3e56('0x6'));var auth=require(_0x3e56('0x7'));var interaction=require(_0x3e56('0x8'));var config=require(_0x3e56('0x9'));var controller=require('./automation.controller');router[_0x3e56('0xa')]('/',auth['isAuthenticated'](),controller[_0x3e56('0xb')]);router[_0x3e56('0xa')](_0x3e56('0xc'),auth[_0x3e56('0xd')](),controller[_0x3e56('0xe')]);router[_0x3e56('0xa')](_0x3e56('0xf'),auth[_0x3e56('0xd')](),controller[_0x3e56('0x10')]);router[_0x3e56('0xa')](_0x3e56('0x11'),auth['isAuthenticated'](),controller[_0x3e56('0x12')]);router[_0x3e56('0x13')]('/',auth[_0x3e56('0xd')](),controller[_0x3e56('0x14')]);router[_0x3e56('0x13')](_0x3e56('0xf'),auth[_0x3e56('0xd')](),controller[_0x3e56('0x15')]);router[_0x3e56('0x13')](_0x3e56('0x11'),auth[_0x3e56('0xd')](),controller[_0x3e56('0x16')]);router['put'](_0x3e56('0xc'),auth[_0x3e56('0xd')](),controller['update']);router[_0x3e56('0x17')](_0x3e56('0xc'),auth[_0x3e56('0xd')](),controller[_0x3e56('0x18')]);module[_0x3e56('0x19')]=router;
\ No newline at end of file
+var _0x8ca7=['put','update','delete','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/conditions','getConditions','/:id/actions','getActions','post','create','addConditions','addActions'];(function(_0x135b9f,_0x5ba164){var _0x2c9c4b=function(_0x317a86){while(--_0x317a86){_0x135b9f['push'](_0x135b9f['shift']());}};_0x2c9c4b(++_0x5ba164);}(_0x8ca7,0x9b));var _0x78ca=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8ca7[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x78ca('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x78ca('0x1'));var router=express[_0x78ca('0x2')]();var fs_extra=require(_0x78ca('0x3'));var auth=require(_0x78ca('0x4'));var interaction=require(_0x78ca('0x5'));var config=require(_0x78ca('0x6'));var controller=require('./automation.controller');router[_0x78ca('0x7')]('/',auth[_0x78ca('0x8')](),controller[_0x78ca('0x9')]);router[_0x78ca('0x7')](_0x78ca('0xa'),auth[_0x78ca('0x8')](),controller[_0x78ca('0xb')]);router[_0x78ca('0x7')](_0x78ca('0xc'),auth[_0x78ca('0x8')](),controller[_0x78ca('0xd')]);router[_0x78ca('0x7')](_0x78ca('0xe'),auth[_0x78ca('0x8')](),controller[_0x78ca('0xf')]);router[_0x78ca('0x10')]('/',auth[_0x78ca('0x8')](),controller[_0x78ca('0x11')]);router['post']('/:id/conditions',auth[_0x78ca('0x8')](),controller[_0x78ca('0x12')]);router[_0x78ca('0x10')](_0x78ca('0xe'),auth[_0x78ca('0x8')](),controller[_0x78ca('0x13')]);router[_0x78ca('0x14')](_0x78ca('0xa'),auth[_0x78ca('0x8')](),controller[_0x78ca('0x15')]);router[_0x78ca('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x78ca('0x17')]);module[_0x78ca('0x18')]=router;
\ No newline at end of file
index 46e87f0..7676e50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3663=['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','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\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\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','exports','STRING','ENUM','ivr','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)'];(function(_0x3572cb,_0x4149d3){var _0x33a398=function(_0x163e27){while(--_0x163e27){_0x3572cb['push'](_0x3572cb['shift']());}};_0x33a398(++_0x4149d3);}(_0x3663,0x1ee));var _0x3366=function(_0x4624dc,_0x2d47e2){_0x4624dc=_0x4624dc-0x0;var _0x230719=_0x3663[_0x4624dc];return _0x230719;};'use strict';var Sequelize=require(_0x3366('0x0'));module[_0x3366('0x1')]={'name':{'type':Sequelize[_0x3366('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x3366('0x3')](_0x3366('0x4')),'allowNull':![],'defaultValue':_0x3366('0x4')},'description':{'type':Sequelize[_0x3366('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x3366('0x5')},'limitCalls':{'type':Sequelize[_0x3366('0x6')](0x4)[_0x3366('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x3366('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0x3366('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x3366('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x3366('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3366('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0x3366('0x6')](0x3)[_0x3366('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3366('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x3366('0x6')](0x5)[_0x3366('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3366('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0x3366('0x6')](0x3)[_0x3366('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3366('0xc')},'dialBusyRetryFrequency':{'type':Sequelize[_0x3366('0x6')](0x5)[_0x3366('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3366('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x3366('0x6')](0x3)[_0x3366('0x7')],'defaultValue':0x3,'comment':_0x3366('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x3366('0x6')](0x5)[_0x3366('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3366('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0x3366('0x6')](0x3)[_0x3366('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x3366('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x3366('0x2')],'defaultValue':_0x3366('0x10')},'dialCheckDuplicateType':{'type':Sequelize[_0x3366('0x3')](_0x3366('0x11'),'never','onlyIfOpen'),'defaultValue':_0x3366('0x11')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x3366('0x12')},'dialAMDInitialSilence':{'type':Sequelize[_0x3366('0x6')](0x9)[_0x3366('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x3366('0x13')},'dialAMDGreeting':{'type':Sequelize[_0x3366('0x6')](0x9)[_0x3366('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x3366('0x14')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x3366('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x3366('0x16')},'dialAMDMinWordLength':{'type':Sequelize[_0x3366('0x6')](0x9)[_0x3366('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x3366('0x17')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x3366('0x6')](0x9)[_0x3366('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x3366('0x18')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x3366('0x19')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x3366('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x3366('0x1a')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x3366('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x3366('0x3')](_0x3366('0x1b'),_0x3366('0x1c')),'defaultValue':_0x3366('0x1b')},'dialPrefix':{'type':Sequelize[_0x3366('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x3366('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x3366('0x1d')},'dialCutDigit':{'type':Sequelize[_0x3366('0x6')](0x3)[_0x3366('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x3366('0x1e')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x3366('0x6')](0x3)[_0x3366('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x3366('0x6')](0x5)[_0x3366('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3366('0x1f')},'dialDropMaxRetry':{'type':Sequelize[_0x3366('0x6')](0x3)[_0x3366('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x3366('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3366('0x20')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x3366('0x6')](0x3)[_0x3366('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3366('0x21')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x3366('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3366('0x22')},'dialMachineMaxRetry':{'type':Sequelize[_0x3366('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3366('0x23')},'dialMachineRetryFrequency':{'type':Sequelize[_0x3366('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3366('0x24')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x3366('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3366('0x25')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x3366('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3366('0x26')}};
\ No newline at end of file
+var _0x2356=['#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)','#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','exports','STRING','name','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','ENUM','always','never','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)'];(function(_0x4f724f,_0x29213e){var _0x2343c3=function(_0xebb5e8){while(--_0xebb5e8){_0x4f724f['push'](_0x4f724f['shift']());}};_0x2343c3(++_0x29213e);}(_0x2356,0x1ea));var _0x6235=function(_0x5668cb,_0x58b282){_0x5668cb=_0x5668cb-0x0;var _0x3736d0=_0x2356[_0x5668cb];return _0x3736d0;};'use strict';var Sequelize=require(_0x6235('0x0'));module[_0x6235('0x1')]={'name':{'type':Sequelize[_0x6235('0x2')],'unique':_0x6235('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x6235('0x4')),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x6235('0x5')],'defaultValue':0x0,'comment':_0x6235('0x6')},'limitCalls':{'type':Sequelize[_0x6235('0x7')](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize[_0x6235('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x6235('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x6235('0x7')](0x3)[_0x6235('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x6235('0x7')](0x3)[_0x6235('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x6235('0x7')](0x5)[_0x6235('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6235('0x9')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x6235('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x6235('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6235('0xa')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x6235('0x8')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x6235('0x7')](0x5)[_0x6235('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6235('0xb')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x6235('0xc')},'dialTimezone':{'type':Sequelize[_0x6235('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x6235('0x2')],'defaultValue':_0x6235('0xd')},'dialCheckDuplicateType':{'type':Sequelize[_0x6235('0xe')](_0x6235('0xf'),_0x6235('0x10'),_0x6235('0x11')),'defaultValue':_0x6235('0xf')},'dialAMDActive':{'type':Sequelize[_0x6235('0x5')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x6235('0x7')](0x9)[_0x6235('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x6235('0x12')},'dialAMDGreeting':{'type':Sequelize[_0x6235('0x7')](0x9)[_0x6235('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x6235('0x13')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x6235('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x6235('0x14')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x6235('0x7')](0x9)[_0x6235('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x6235('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x6235('0x7')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x6235('0x15')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x6235('0x7')](0x9)[_0x6235('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x6235('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x6235('0x16')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x6235('0x17')},'dialOrderByScheduledAt':{'type':Sequelize[_0x6235('0xe')](_0x6235('0x18'),_0x6235('0x19')),'defaultValue':_0x6235('0x18')},'dialPrefix':{'type':Sequelize[_0x6235('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x6235('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x6235('0x1a')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x6235('0x1b')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x6235('0x7')](0x3)[_0x6235('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6235('0x1c')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x6235('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6235('0x1d')},'dialDropMaxRetry':{'type':Sequelize[_0x6235('0x7')](0x3)[_0x6235('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6235('0x1e')},'dialDropRetryFrequency':{'type':Sequelize[_0x6235('0x7')](0x5)[_0x6235('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6235('0x1f')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x6235('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6235('0x20')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x6235('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x6235('0x7')](0x3)[_0x6235('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6235('0x21')},'dialMachineRetryFrequency':{'type':Sequelize[_0x6235('0x7')](0x5)[_0x6235('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6235('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x6235('0x7')](0x3)[_0x6235('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6235('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x6235('0x7')](0x5)[_0x6235('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6235('0x24')}};
\ No newline at end of file
index 53d3f07..b319193 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a42=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','limit','count','offset','set','json','apply','reject','update','then','destroy','get','IvrCampaigns','UserProfileResource','name','send','index','map','Campaign','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','params','keys','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','options','createdAt','updatedAt','omit','Unable\x20to\x20retrieve\x20the\x20current\x20user','getHoppers','findOne','nolimit','order','CampaignId','CmHopper','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','select','field','NOW()','CmListId','ListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','toString','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','onlyIfOpen','push','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','sequelize','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path'];(function(_0x23a042,_0x169361){var _0x57543a=function(_0x1fccec){while(--_0x1fccec){_0x23a042['push'](_0x23a042['shift']());}};_0x57543a(++_0x169361);}(_0x0a42,0x181));var _0x20a4=function(_0x5d4670,_0x14cb4e){_0x5d4670=_0x5d4670-0x0;var _0x506b7b=_0x0a42[_0x5d4670];return _0x506b7b;};'use strict';var emlformat=require(_0x20a4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x20a4('0x1'));var jsonpatch=require(_0x20a4('0x2'));var rp=require(_0x20a4('0x3'));var moment=require(_0x20a4('0x4'));var BPromise=require(_0x20a4('0x5'));var Mustache=require('mustache');var util=require(_0x20a4('0x6'));var path=require(_0x20a4('0x7'));var sox=require(_0x20a4('0x8'));var csv=require(_0x20a4('0x9'));var ejs=require(_0x20a4('0xa'));var fs=require('fs');var fs_extra=require(_0x20a4('0xb'));var _=require(_0x20a4('0xc'));var squel=require(_0x20a4('0xd'));var crypto=require(_0x20a4('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x20a4('0xf'));var toCsv=require(_0x20a4('0x9'));var querystring=require('querystring');var Papa=require(_0x20a4('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x20a4('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x20a4('0x12'));var logger=require('../../config/logger')(_0x20a4('0x13'));var utils=require(_0x20a4('0x14'));var config=require(_0x20a4('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x20a4('0x16'))['db'];function respondWithStatusCode(_0x46d5b8,_0x48a258){_0x48a258=_0x48a258||0xcc;return function(_0x3d12ae){if(_0x3d12ae){return _0x46d5b8[_0x20a4('0x17')](_0x48a258);}return _0x46d5b8[_0x20a4('0x18')](_0x48a258)[_0x20a4('0x19')]();};}function respondWithResult(_0x5cbf7f,_0x2d0fcf){_0x2d0fcf=_0x2d0fcf||0xc8;return function(_0x5b7fb2){if(_0x5b7fb2){return _0x5cbf7f[_0x20a4('0x18')](_0x2d0fcf)['json'](_0x5b7fb2);}};}function respondWithFilteredResult(_0x433267,_0x42cc59){return function(_0x41a9dd){if(_0x41a9dd){var _0x4281b0=typeof _0x42cc59['offset']==='undefined'&&typeof _0x42cc59[_0x20a4('0x1a')]==='undefined';var _0x4568f1=_0x41a9dd[_0x20a4('0x1b')];var _0x526ad0=_0x4281b0?0x0:_0x42cc59[_0x20a4('0x1c')];var _0xb565fc=_0x4281b0?_0x41a9dd[_0x20a4('0x1b')]:_0x42cc59[_0x20a4('0x1c')]+_0x42cc59[_0x20a4('0x1a')];var _0x1de1bd;if(_0xb565fc>=_0x4568f1){_0xb565fc=_0x4568f1;_0x1de1bd=0xc8;}else{_0x1de1bd=0xce;}_0x433267[_0x20a4('0x18')](_0x1de1bd);return _0x433267[_0x20a4('0x1d')]('Content-Range',_0x526ad0+'-'+_0xb565fc+'/'+_0x4568f1)[_0x20a4('0x1e')](_0x41a9dd);}return null;};}function patchUpdates(_0x1ec701){return function(_0x418380){try{jsonpatch[_0x20a4('0x1f')](_0x418380,_0x1ec701,!![]);}catch(_0x46909b){return BPromise[_0x20a4('0x20')](_0x46909b);}return _0x418380['save']();};}function saveUpdates(_0xdff68b,_0x2e7133){return function(_0x3915a4){if(_0x3915a4){return _0x3915a4[_0x20a4('0x21')](_0xdff68b)[_0x20a4('0x22')](function(_0x170ac2){return _0x170ac2;});}return null;};}function removeEntity(_0x2ffd5a,_0x277507){return function(_0x16b313){if(_0x16b313){return _0x16b313[_0x20a4('0x23')]()[_0x20a4('0x22')](function(){var _0x33f048=_0x16b313[_0x20a4('0x24')]({'plain':!![]});var _0x52ece=_0x20a4('0x25');return db[_0x20a4('0x26')][_0x20a4('0x23')]({'where':{'type':_0x52ece,'resourceId':_0x33f048['id']}})[_0x20a4('0x22')](function(){return _0x16b313;});})['then'](function(){_0x2ffd5a[_0x20a4('0x18')](0xcc)[_0x20a4('0x19')]();});}};}function handleEntityNotFound(_0x445d59,_0x250306){return function(_0x3162d8){if(!_0x3162d8){_0x445d59[_0x20a4('0x17')](0x194);}return _0x3162d8;};}function handleError(_0x55755a,_0x1eb1c7){_0x1eb1c7=_0x1eb1c7||0x1f4;return function(_0x4195dd){logger['error'](_0x4195dd['stack']);if(_0x4195dd[_0x20a4('0x27')]){delete _0x4195dd[_0x20a4('0x27')];}_0x55755a[_0x20a4('0x18')](_0x1eb1c7)[_0x20a4('0x28')](_0x4195dd);};}exports[_0x20a4('0x29')]=function(_0xd4077c,_0x5a25f3){var _0x3b2c82={},_0x329b1e={},_0x10ac7f={'count':0x0,'rows':[]};var _0x1b30fb=_[_0x20a4('0x2a')](db[_0x20a4('0x2b')][_0x20a4('0x2c')],function(_0x43374b){return{'name':_0x43374b[_0x20a4('0x2d')],'type':_0x43374b[_0x20a4('0x2e')]['key']};});_0x329b1e[_0x20a4('0x2f')]=_[_0x20a4('0x2a')](_0x1b30fb,_0x20a4('0x27'));_0x329b1e[_0x20a4('0x30')]=_['keys'](_0xd4077c[_0x20a4('0x30')]);_0x329b1e['filters']=_[_0x20a4('0x31')](_0x329b1e['model'],_0x329b1e['query']);_0x3b2c82[_0x20a4('0x32')]=_[_0x20a4('0x31')](_0x329b1e[_0x20a4('0x2f')],qs['fields'](_0xd4077c['query'][_0x20a4('0x33')]));_0x3b2c82['attributes']=_0x3b2c82[_0x20a4('0x32')][_0x20a4('0x34')]?_0x3b2c82[_0x20a4('0x32')]:_0x329b1e[_0x20a4('0x2f')];if(!_0xd4077c[_0x20a4('0x30')][_0x20a4('0x35')]('nolimit')){_0x3b2c82[_0x20a4('0x1a')]=qs[_0x20a4('0x1a')](_0xd4077c[_0x20a4('0x30')]['limit']);_0x3b2c82['offset']=qs[_0x20a4('0x1c')](_0xd4077c[_0x20a4('0x30')][_0x20a4('0x1c')]);}_0x3b2c82['order']=qs[_0x20a4('0x36')](_0xd4077c[_0x20a4('0x30')][_0x20a4('0x36')]);_0x3b2c82[_0x20a4('0x37')]=qs[_0x20a4('0x38')](_[_0x20a4('0x39')](_0xd4077c['query'],_0x329b1e[_0x20a4('0x38')]),_0x1b30fb);if(_0xd4077c[_0x20a4('0x30')]['filter']){_0x3b2c82[_0x20a4('0x37')]=_[_0x20a4('0x3a')](_0x3b2c82[_0x20a4('0x37')],{'$or':_['map'](_0x1b30fb,function(_0x1763f3){if(_0x1763f3[_0x20a4('0x2e')]!==_0x20a4('0x3b')){var _0x4cb0b7={};_0x4cb0b7[_0x1763f3[_0x20a4('0x27')]]={'$like':'%'+_0xd4077c[_0x20a4('0x30')][_0x20a4('0x3c')]+'%'};return _0x4cb0b7;}})});}_0x3b2c82=_[_0x20a4('0x3a')]({},_0x3b2c82,_0xd4077c['options']);var _0x44aeaa={'where':_0x3b2c82['where']};return db[_0x20a4('0x2b')]['count'](_0x44aeaa)[_0x20a4('0x22')](function(_0x336610){_0x10ac7f['count']=_0x336610;if(_0xd4077c[_0x20a4('0x30')][_0x20a4('0x3d')]){_0x3b2c82[_0x20a4('0x3e')]=[{'all':!![]}];}return db['Campaign'][_0x20a4('0x3f')](_0x3b2c82);})['then'](function(_0x2ffbae){_0x10ac7f[_0x20a4('0x40')]=_0x2ffbae;return _0x10ac7f;})['then'](respondWithFilteredResult(_0x5a25f3,_0x3b2c82))['catch'](handleError(_0x5a25f3,null));};exports['show']=function(_0x3c484b,_0x51467f){var _0x419cf6={'raw':![],'where':{'id':_0x3c484b[_0x20a4('0x41')]['id']}},_0x2872f2={};_0x2872f2['model']=_['keys'](db['Campaign']['rawAttributes']);_0x2872f2[_0x20a4('0x30')]=_[_0x20a4('0x42')](_0x3c484b[_0x20a4('0x30')]);_0x2872f2['filters']=_['intersection'](_0x2872f2[_0x20a4('0x2f')],_0x2872f2[_0x20a4('0x30')]);_0x419cf6[_0x20a4('0x32')]=_[_0x20a4('0x31')](_0x2872f2[_0x20a4('0x2f')],qs[_0x20a4('0x33')](_0x3c484b[_0x20a4('0x30')][_0x20a4('0x33')]));_0x419cf6[_0x20a4('0x32')]=_0x419cf6['attributes'][_0x20a4('0x34')]?_0x419cf6[_0x20a4('0x32')]:_0x2872f2['model'];if(_0x3c484b[_0x20a4('0x30')][_0x20a4('0x3d')]){_0x419cf6['include']=[{'all':!![]}];}_0x419cf6=_['merge']({},_0x419cf6,_0x3c484b['options']);return db[_0x20a4('0x2b')][_0x20a4('0x43')](_0x419cf6)[_0x20a4('0x22')](handleEntityNotFound(_0x51467f,null))[_0x20a4('0x22')](respondWithResult(_0x51467f,null))[_0x20a4('0x44')](handleError(_0x51467f,null));};exports[_0x20a4('0x45')]=function(_0x36c334,_0x500f1d){return db[_0x20a4('0x2b')][_0x20a4('0x45')](_0x36c334[_0x20a4('0x46')],{})['then'](function(_0x57c74b){var _0x35d988=_0x36c334[_0x20a4('0x47')]['get']({'plain':!![]});if(!_0x35d988)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x35d988[_0x20a4('0x48')]===_0x20a4('0x47')){var _0x500339=_0x57c74b[_0x20a4('0x24')]({'plain':!![]});var _0xd8f01a=_0x20a4('0x25');return db[_0x20a4('0x49')]['find']({'where':{'name':_0xd8f01a,'userProfileId':_0x35d988[_0x20a4('0x4a')]},'raw':!![]})['then'](function(_0x1fe883){if(_0x1fe883&&_0x1fe883[_0x20a4('0x4b')]===0x0){return db[_0x20a4('0x26')][_0x20a4('0x45')]({'name':_0x500339['name'],'resourceId':_0x500339['id'],'type':_0x1fe883['name'],'sectionId':_0x1fe883['id']},{})[_0x20a4('0x22')](function(){return _0x57c74b;});}else{return _0x57c74b;}})[_0x20a4('0x44')](function(_0x5972a4){logger[_0x20a4('0x4c')](_0x20a4('0x4d'),_0x5972a4);throw _0x5972a4;});}return _0x57c74b;})[_0x20a4('0x22')](respondWithResult(_0x500f1d,0xc9))[_0x20a4('0x44')](handleError(_0x500f1d,null));};exports[_0x20a4('0x4e')]=function(_0x423315,_0x5991e7){var _0x18aa4d={'where':{'id':_0x423315[_0x20a4('0x41')]['id']}},_0xe45fde={};_0xe45fde['model']=_[_0x20a4('0x42')](db[_0x20a4('0x2b')]['rawAttributes']);_0x18aa4d[_0x20a4('0x32')]=_['intersection'](_0xe45fde[_0x20a4('0x2f')],qs[_0x20a4('0x33')](_0x423315[_0x20a4('0x30')]['fields']));_0x18aa4d[_0x20a4('0x32')]=_0x18aa4d[_0x20a4('0x32')]['length']?_0x18aa4d[_0x20a4('0x32')]:_0xe45fde['model'];if(_0x423315[_0x20a4('0x30')]['includeAll']){_0x18aa4d[_0x20a4('0x3e')]=[{'all':!![]}];}_0x18aa4d=_[_0x20a4('0x3a')]({},_0x18aa4d,_0x423315[_0x20a4('0x4f')]);return db[_0x20a4('0x2b')][_0x20a4('0x43')](_0x18aa4d)[_0x20a4('0x22')](handleEntityNotFound(_0x5991e7,null))['then'](function(_0xf38db6){if(_0xf38db6){var _0x1593c9=_0xf38db6[_0x20a4('0x24')]({'plain':!![]});_0x1593c9=qs['omit'](_0x1593c9,['id',_0x20a4('0x50'),_0x20a4('0x51')]);_0x423315[_0x20a4('0x46')]=_[_0x20a4('0x52')](_0x423315['body'],['id',_0x20a4('0x50'),_0x20a4('0x51')]);return db[_0x20a4('0x2b')][_0x20a4('0x45')](_['merge'](_0x1593c9,_0x423315['body']),{'include':_0x423315['query'][_0x20a4('0x3d')]?[{'all':!![]}]:undefined})[_0x20a4('0x22')](function(_0x2aadfa){var _0x1b9a2c=_0x423315[_0x20a4('0x47')][_0x20a4('0x24')]({'plain':!![]});if(!_0x1b9a2c)throw new Error(_0x20a4('0x53'));if(_0x1b9a2c[_0x20a4('0x48')]===_0x20a4('0x47')){var _0x1d4db7=_0x2aadfa[_0x20a4('0x24')]({'plain':!![]});var _0x4c7059=_0x20a4('0x25');return db['UserProfileSection'][_0x20a4('0x43')]({'where':{'name':_0x4c7059,'userProfileId':_0x1b9a2c['userProfileId']},'raw':!![]})[_0x20a4('0x22')](function(_0x286541){if(_0x286541&&_0x286541[_0x20a4('0x4b')]===0x0){return db[_0x20a4('0x26')][_0x20a4('0x45')]({'name':_0x1d4db7['name'],'resourceId':_0x1d4db7['id'],'type':_0x286541['name'],'sectionId':_0x286541['id']},{})[_0x20a4('0x22')](function(){return _0x2aadfa;});}else{return _0x2aadfa;}})['catch'](function(_0xf31f53){logger[_0x20a4('0x4c')](_0x20a4('0x4d'),_0xf31f53);throw _0xf31f53;});}return _0x2aadfa;});}})[_0x20a4('0x22')](respondWithResult(_0x5991e7,0xc9))['catch'](handleError(_0x5991e7,null));};exports[_0x20a4('0x21')]=function(_0x2a90b3,_0x2b9af4){if(_0x2a90b3['body']['id']){delete _0x2a90b3[_0x20a4('0x46')]['id'];}return db[_0x20a4('0x2b')]['find']({'where':{'id':_0x2a90b3[_0x20a4('0x41')]['id']}})[_0x20a4('0x22')](handleEntityNotFound(_0x2b9af4,null))[_0x20a4('0x22')](saveUpdates(_0x2a90b3['body'],null))[_0x20a4('0x22')](respondWithResult(_0x2b9af4,null))[_0x20a4('0x44')](handleError(_0x2b9af4,null));};exports[_0x20a4('0x23')]=function(_0x1f92d2,_0x4ae17d){return db[_0x20a4('0x2b')]['find']({'where':{'id':_0x1f92d2[_0x20a4('0x41')]['id']}})[_0x20a4('0x22')](handleEntityNotFound(_0x4ae17d,null))[_0x20a4('0x22')](removeEntity(_0x4ae17d,null))[_0x20a4('0x44')](handleError(_0x4ae17d,null));};exports[_0x20a4('0x54')]=function(_0x5f3d83,_0x18cf01,_0x5c3f5f){var _0x3ab697={'raw':!![],'where':{}};var _0x18c42f={};var _0x1b1083={'count':0x0,'rows':[]};return db[_0x20a4('0x2b')][_0x20a4('0x55')]({'where':{'id':_0x5f3d83[_0x20a4('0x41')]['id']}})['then'](handleEntityNotFound(_0x18cf01,null))[_0x20a4('0x22')](function(_0x3d0d6b){if(_0x3d0d6b){_0x18c42f[_0x20a4('0x2f')]=_[_0x20a4('0x42')](db['CmHopper'][_0x20a4('0x2c')]);_0x18c42f[_0x20a4('0x30')]=_['keys'](_0x5f3d83[_0x20a4('0x30')]);_0x18c42f[_0x20a4('0x38')]=_[_0x20a4('0x31')](_0x18c42f[_0x20a4('0x2f')],_0x18c42f[_0x20a4('0x30')]);_0x3ab697[_0x20a4('0x32')]=_[_0x20a4('0x31')](_0x18c42f[_0x20a4('0x2f')],qs[_0x20a4('0x33')](_0x5f3d83['query'][_0x20a4('0x33')]));_0x3ab697[_0x20a4('0x32')]=_0x3ab697[_0x20a4('0x32')][_0x20a4('0x34')]?_0x3ab697[_0x20a4('0x32')]:_0x18c42f[_0x20a4('0x2f')];if(!_0x5f3d83['query']['hasOwnProperty'](_0x20a4('0x56'))){_0x3ab697[_0x20a4('0x1a')]=qs[_0x20a4('0x1a')](_0x5f3d83[_0x20a4('0x30')][_0x20a4('0x1a')]);_0x3ab697[_0x20a4('0x1c')]=qs[_0x20a4('0x1c')](_0x5f3d83['query'][_0x20a4('0x1c')]);}_0x3ab697[_0x20a4('0x57')]=qs[_0x20a4('0x36')](_0x5f3d83[_0x20a4('0x30')][_0x20a4('0x36')]);_0x3ab697[_0x20a4('0x37')]=qs[_0x20a4('0x38')](_['pick'](_0x5f3d83[_0x20a4('0x30')],_0x18c42f[_0x20a4('0x38')]));_0x3ab697[_0x20a4('0x37')][_0x20a4('0x58')]=_0x3d0d6b['id'];if(_0x5f3d83[_0x20a4('0x30')][_0x20a4('0x3c')]){_0x3ab697[_0x20a4('0x37')]=_['merge'](_0x3ab697['where'],{'$or':_[_0x20a4('0x2a')](_0x3ab697[_0x20a4('0x32')],function(_0xff3cb7){var _0x2c1b6b={};_0x2c1b6b[_0xff3cb7]={'$like':'%'+_0x5f3d83[_0x20a4('0x30')][_0x20a4('0x3c')]+'%'};return _0x2c1b6b;})});}_0x3ab697=_[_0x20a4('0x3a')]({},_0x3ab697,_0x5f3d83[_0x20a4('0x4f')]);return db[_0x20a4('0x59')][_0x20a4('0x1b')]({'where':_0x3ab697[_0x20a4('0x37')]})[_0x20a4('0x22')](function(_0x2c9e07){_0x1b1083['count']=_0x2c9e07;if(_0x5f3d83[_0x20a4('0x30')][_0x20a4('0x3d')]){_0x3ab697[_0x20a4('0x3e')]=[{'all':!![]}];}return db['CmHopper'][_0x20a4('0x3f')](_0x3ab697);})['then'](function(_0x9b1c8c){_0x1b1083['rows']=_0x9b1c8c;return _0x1b1083;});}})[_0x20a4('0x22')](respondWithFilteredResult(_0x18cf01,_0x3ab697))[_0x20a4('0x44')](handleError(_0x18cf01,null));};exports[_0x20a4('0x5a')]=function(_0x176abf,_0x105588,_0xc7b766){var _0x120946={'raw':!![],'where':{}};var _0x29cbf4={};var _0xfd276={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x176abf[_0x20a4('0x41')]['id']}})[_0x20a4('0x22')](handleEntityNotFound(_0x105588,null))[_0x20a4('0x22')](function(_0x4d909e){if(_0x4d909e){_0x29cbf4['model']=_[_0x20a4('0x42')](db['CmHopperHistory'][_0x20a4('0x2c')]);_0x29cbf4[_0x20a4('0x30')]=_['keys'](_0x176abf[_0x20a4('0x30')]);_0x29cbf4[_0x20a4('0x38')]=_[_0x20a4('0x31')](_0x29cbf4[_0x20a4('0x2f')],_0x29cbf4[_0x20a4('0x30')]);_0x120946[_0x20a4('0x32')]=_['intersection'](_0x29cbf4[_0x20a4('0x2f')],qs['fields'](_0x176abf[_0x20a4('0x30')][_0x20a4('0x33')]));_0x120946[_0x20a4('0x32')]=_0x120946[_0x20a4('0x32')][_0x20a4('0x34')]?_0x120946['attributes']:_0x29cbf4['model'];if(!_0x176abf[_0x20a4('0x30')][_0x20a4('0x35')]('nolimit')){_0x120946[_0x20a4('0x1a')]=qs[_0x20a4('0x1a')](_0x176abf['query']['limit']);_0x120946[_0x20a4('0x1c')]=qs[_0x20a4('0x1c')](_0x176abf[_0x20a4('0x30')]['offset']);}_0x120946['order']=qs['sort'](_0x176abf[_0x20a4('0x30')][_0x20a4('0x36')]);_0x120946['where']=qs['filters'](_[_0x20a4('0x39')](_0x176abf[_0x20a4('0x30')],_0x29cbf4[_0x20a4('0x38')]));_0x120946['where'][_0x20a4('0x58')]=_0x4d909e['id'];if(_0x176abf[_0x20a4('0x30')][_0x20a4('0x3c')]){_0x120946[_0x20a4('0x37')]=_[_0x20a4('0x3a')](_0x120946[_0x20a4('0x37')],{'$or':_[_0x20a4('0x2a')](_0x120946[_0x20a4('0x32')],function(_0x30055e){var _0x645978={};_0x645978[_0x30055e]={'$like':'%'+_0x176abf[_0x20a4('0x30')]['filter']+'%'};return _0x645978;})});}_0x120946=_[_0x20a4('0x3a')]({},_0x120946,_0x176abf['options']);return db[_0x20a4('0x5b')][_0x20a4('0x1b')]({'where':_0x120946[_0x20a4('0x37')]})[_0x20a4('0x22')](function(_0x450b66){_0xfd276[_0x20a4('0x1b')]=_0x450b66;if(_0x176abf['query'][_0x20a4('0x3d')]){_0x120946[_0x20a4('0x3e')]=[{'all':!![]}];}return db[_0x20a4('0x5b')][_0x20a4('0x3f')](_0x120946);})[_0x20a4('0x22')](function(_0x375b2b){_0xfd276[_0x20a4('0x40')]=_0x375b2b;return _0xfd276;});}})[_0x20a4('0x22')](respondWithFilteredResult(_0x105588,_0x120946))[_0x20a4('0x44')](handleError(_0x105588,null));};exports[_0x20a4('0x5c')]=function(_0x59bb23,_0x5634b6,_0x15da12){var _0x27c473={'raw':!![],'where':{}};var _0x1dc973={};var _0x2dfd6={'count':0x0,'rows':[]};return db[_0x20a4('0x2b')][_0x20a4('0x55')]({'where':{'id':_0x59bb23[_0x20a4('0x41')]['id']}})[_0x20a4('0x22')](handleEntityNotFound(_0x5634b6,null))['then'](function(_0x314441){if(_0x314441){_0x1dc973[_0x20a4('0x2f')]=_[_0x20a4('0x42')](db[_0x20a4('0x5d')][_0x20a4('0x2c')]);_0x1dc973['query']=_[_0x20a4('0x42')](_0x59bb23[_0x20a4('0x30')]);_0x1dc973[_0x20a4('0x38')]=_[_0x20a4('0x31')](_0x1dc973[_0x20a4('0x2f')],_0x1dc973['query']);_0x27c473[_0x20a4('0x32')]=_[_0x20a4('0x31')](_0x1dc973[_0x20a4('0x2f')],qs[_0x20a4('0x33')](_0x59bb23['query'][_0x20a4('0x33')]));_0x27c473[_0x20a4('0x32')]=_0x27c473[_0x20a4('0x32')][_0x20a4('0x34')]?_0x27c473[_0x20a4('0x32')]:_0x1dc973[_0x20a4('0x2f')];if(!_0x59bb23[_0x20a4('0x30')][_0x20a4('0x35')](_0x20a4('0x56'))){_0x27c473[_0x20a4('0x1a')]=qs[_0x20a4('0x1a')](_0x59bb23[_0x20a4('0x30')]['limit']);_0x27c473['offset']=qs[_0x20a4('0x1c')](_0x59bb23[_0x20a4('0x30')]['offset']);}_0x27c473[_0x20a4('0x57')]=qs[_0x20a4('0x36')](_0x59bb23[_0x20a4('0x30')][_0x20a4('0x36')]);_0x27c473[_0x20a4('0x37')]=qs['filters'](_['pick'](_0x59bb23[_0x20a4('0x30')],_0x1dc973[_0x20a4('0x38')]));_0x27c473[_0x20a4('0x37')][_0x20a4('0x58')]=_0x314441['id'];if(_0x59bb23[_0x20a4('0x30')]['filter']){_0x27c473[_0x20a4('0x37')]=_['merge'](_0x27c473[_0x20a4('0x37')],{'$or':_[_0x20a4('0x2a')](_0x27c473['attributes'],function(_0x11afa6){var _0x1f2fb8={};_0x1f2fb8[_0x11afa6]={'$like':'%'+_0x59bb23[_0x20a4('0x30')][_0x20a4('0x3c')]+'%'};return _0x1f2fb8;})});}_0x27c473=_[_0x20a4('0x3a')]({},_0x27c473,_0x59bb23['options']);return db[_0x20a4('0x5d')][_0x20a4('0x1b')]({'where':_0x27c473['where']})[_0x20a4('0x22')](function(_0x8fb01c){_0x2dfd6[_0x20a4('0x1b')]=_0x8fb01c;if(_0x59bb23[_0x20a4('0x30')][_0x20a4('0x3d')]){_0x27c473[_0x20a4('0x3e')]=[{'all':!![]}];}return db[_0x20a4('0x5d')][_0x20a4('0x3f')](_0x27c473);})[_0x20a4('0x22')](function(_0x4da0d9){_0x2dfd6[_0x20a4('0x40')]=_0x4da0d9;return _0x2dfd6;});}})[_0x20a4('0x22')](respondWithFilteredResult(_0x5634b6,_0x27c473))['catch'](handleError(_0x5634b6,null));};exports['getHopperBlacks']=function(_0x2a9bf3,_0x446561,_0x4e820d){var _0x200f58={'raw':!![],'where':{}};var _0x2a1255={};var _0x41ce45={'count':0x0,'rows':[]};return db[_0x20a4('0x2b')][_0x20a4('0x55')]({'where':{'id':_0x2a9bf3['params']['id']}})[_0x20a4('0x22')](handleEntityNotFound(_0x446561,null))[_0x20a4('0x22')](function(_0x3a1905){if(_0x3a1905){_0x2a1255[_0x20a4('0x2f')]=_[_0x20a4('0x42')](db[_0x20a4('0x5e')][_0x20a4('0x2c')]);_0x2a1255['query']=_[_0x20a4('0x42')](_0x2a9bf3[_0x20a4('0x30')]);_0x2a1255['filters']=_['intersection'](_0x2a1255[_0x20a4('0x2f')],_0x2a1255['query']);_0x200f58[_0x20a4('0x32')]=_['intersection'](_0x2a1255[_0x20a4('0x2f')],qs[_0x20a4('0x33')](_0x2a9bf3['query'][_0x20a4('0x33')]));_0x200f58[_0x20a4('0x32')]=_0x200f58['attributes'][_0x20a4('0x34')]?_0x200f58[_0x20a4('0x32')]:_0x2a1255[_0x20a4('0x2f')];if(!_0x2a9bf3['query'][_0x20a4('0x35')](_0x20a4('0x56'))){_0x200f58['limit']=qs[_0x20a4('0x1a')](_0x2a9bf3[_0x20a4('0x30')][_0x20a4('0x1a')]);_0x200f58['offset']=qs[_0x20a4('0x1c')](_0x2a9bf3[_0x20a4('0x30')][_0x20a4('0x1c')]);}_0x200f58[_0x20a4('0x57')]=qs[_0x20a4('0x36')](_0x2a9bf3[_0x20a4('0x30')][_0x20a4('0x36')]);_0x200f58['where']=qs[_0x20a4('0x38')](_[_0x20a4('0x39')](_0x2a9bf3[_0x20a4('0x30')],_0x2a1255[_0x20a4('0x38')]));_0x200f58[_0x20a4('0x37')]['CampaignId']=_0x3a1905['id'];if(_0x2a9bf3[_0x20a4('0x30')][_0x20a4('0x3c')]){_0x200f58[_0x20a4('0x37')]=_[_0x20a4('0x3a')](_0x200f58[_0x20a4('0x37')],{'$or':_[_0x20a4('0x2a')](_0x200f58['attributes'],function(_0x44d2e7){var _0xe57108={};_0xe57108[_0x44d2e7]={'$like':'%'+_0x2a9bf3[_0x20a4('0x30')][_0x20a4('0x3c')]+'%'};return _0xe57108;})});}_0x200f58=_[_0x20a4('0x3a')]({},_0x200f58,_0x2a9bf3[_0x20a4('0x4f')]);return db[_0x20a4('0x5e')][_0x20a4('0x1b')]({'where':_0x200f58[_0x20a4('0x37')]})[_0x20a4('0x22')](function(_0x3966d5){_0x41ce45[_0x20a4('0x1b')]=_0x3966d5;if(_0x2a9bf3[_0x20a4('0x30')]['includeAll']){_0x200f58[_0x20a4('0x3e')]=[{'all':!![]}];}return db[_0x20a4('0x5e')][_0x20a4('0x3f')](_0x200f58);})['then'](function(_0x214cf1){_0x41ce45[_0x20a4('0x40')]=_0x214cf1;return _0x41ce45;});}})['then'](respondWithFilteredResult(_0x446561,_0x200f58))[_0x20a4('0x44')](handleError(_0x446561,null));};exports[_0x20a4('0x5f')]=function(_0x3c797a,_0x434d5f,_0x47810){var _0x190cc6={};var _0xcd76d8={};var _0x4c4282;var _0x427796;return db['Campaign'][_0x20a4('0x55')]({'where':{'id':_0x3c797a['params']['id']}})[_0x20a4('0x22')](handleEntityNotFound(_0x434d5f,null))[_0x20a4('0x22')](function(_0x15d32d){if(_0x15d32d){_0x4c4282=_0x15d32d;_0xcd76d8['model']=_[_0x20a4('0x42')](db[_0x20a4('0x60')]['rawAttributes']);_0xcd76d8['query']=_[_0x20a4('0x42')](_0x3c797a[_0x20a4('0x30')]);_0xcd76d8[_0x20a4('0x38')]=_[_0x20a4('0x31')](_0xcd76d8['model'],_0xcd76d8[_0x20a4('0x30')]);_0x190cc6[_0x20a4('0x32')]=_['intersection'](_0xcd76d8[_0x20a4('0x2f')],qs[_0x20a4('0x33')](_0x3c797a[_0x20a4('0x30')][_0x20a4('0x33')]));_0x190cc6[_0x20a4('0x32')]=_0x190cc6[_0x20a4('0x32')][_0x20a4('0x34')]?_0x190cc6[_0x20a4('0x32')]:_0xcd76d8[_0x20a4('0x2f')];_0x190cc6[_0x20a4('0x57')]=qs[_0x20a4('0x36')](_0x3c797a[_0x20a4('0x30')][_0x20a4('0x36')]);_0x190cc6['where']=qs[_0x20a4('0x38')](_[_0x20a4('0x39')](_0x3c797a[_0x20a4('0x30')],_0xcd76d8[_0x20a4('0x38')]));if(_0x3c797a[_0x20a4('0x30')][_0x20a4('0x3c')]){_0x190cc6[_0x20a4('0x37')]=_[_0x20a4('0x3a')](_0x190cc6['where'],{'$or':_[_0x20a4('0x2a')](_0x190cc6[_0x20a4('0x32')],function(_0x5ddf9e){var _0x4f557c={};_0x4f557c[_0x5ddf9e]={'$like':'%'+_0x3c797a['query'][_0x20a4('0x3c')]+'%'};return _0x4f557c;})});}_0x190cc6=_[_0x20a4('0x3a')]({},_0x190cc6,_0x3c797a[_0x20a4('0x4f')]);return _0x4c4282[_0x20a4('0x5f')](_0x190cc6);}})['then'](function(_0x36b6ac){if(_0x36b6ac){_0x427796=_0x36b6ac[_0x20a4('0x34')];if(!_0x3c797a[_0x20a4('0x30')][_0x20a4('0x35')]('nolimit')){_0x190cc6['limit']=qs[_0x20a4('0x1a')](_0x3c797a[_0x20a4('0x30')][_0x20a4('0x1a')]);_0x190cc6[_0x20a4('0x1c')]=qs[_0x20a4('0x1c')](_0x3c797a[_0x20a4('0x30')][_0x20a4('0x1c')]);}return _0x4c4282['getLists'](_0x190cc6);}})[_0x20a4('0x22')](function(_0x39c727){if(_0x39c727){return _0x39c727?{'count':_0x427796,'rows':_0x39c727}:null;}})[_0x20a4('0x22')](respondWithResult(_0x434d5f,null))[_0x20a4('0x44')](handleError(_0x434d5f,null));};exports['addLists']=function(_0x753aa5,_0x1c1cef,_0x22e4b3){var _0x37b5c2,_0x45517f;return db[_0x20a4('0x2b')][_0x20a4('0x43')]({'where':{'id':_0x753aa5[_0x20a4('0x41')]['id']}})[_0x20a4('0x22')](handleEntityNotFound(_0x1c1cef,null))[_0x20a4('0x22')](function(_0x16e7ec){if(_0x16e7ec){_0x45517f=_0x16e7ec;return _0x16e7ec[_0x20a4('0x61')](_0x753aa5[_0x20a4('0x46')][_0x20a4('0x62')],_[_0x20a4('0x52')](_0x753aa5['body'],[_0x20a4('0x62'),'id'])||{});}return null;})[_0x20a4('0x63')](function(_0x116ba4){var _0x2194ec;_0x37b5c2=_0x116ba4||[];var _0x85399b=[];if(_0x116ba4){for(var _0x520479=0x0;_0x520479<_0x116ba4[_0x20a4('0x34')];_0x520479+=0x1){var _0xf5d9bb=_0x116ba4[_0x520479][_0x20a4('0x24')]({'plain':!![]});_0x45517f[_0x20a4('0x64')]=_0x753aa5[_0x20a4('0x46')][_0x20a4('0x64')]?_0x753aa5[_0x20a4('0x46')][_0x20a4('0x64')]:_0x45517f[_0x20a4('0x64')];switch(_0x45517f['dialCheckDuplicateType']){case _0x20a4('0x65'):_0x2194ec=squel[_0x20a4('0x66')]()[_0x20a4('0x67')](_0x20a4('0x68'))[_0x20a4('0x69')]([_0x20a4('0x6a'),_0x20a4('0x6b'),_0x20a4('0x6c'),'ListId',_0x20a4('0x58'),_0x20a4('0x50'),'updatedAt'],squel[_0x20a4('0x6d')]()[_0x20a4('0x6e')](_0x20a4('0x6a'),_0x20a4('0x6a'))[_0x20a4('0x6e')](_0x20a4('0x6f'),'scheduledAt')[_0x20a4('0x6e')]('id',_0x20a4('0x6c'))[_0x20a4('0x6e')](_0xf5d9bb[_0x20a4('0x70')]['toString'](),_0x20a4('0x71'))['field'](_0x753aa5[_0x20a4('0x41')]['id']['toString'](),_0x20a4('0x58'))['field'](_0x20a4('0x6f'),_0x20a4('0x50'))['field'](_0x20a4('0x6f'),_0x20a4('0x51'))[_0x20a4('0x72')](_0x20a4('0x73'))['where'](_0x20a4('0x74'))[_0x20a4('0x37')](_0x20a4('0x75'),_0xf5d9bb[_0x20a4('0x70')][_0x20a4('0x76')]())[_0x20a4('0x37')](_0x20a4('0x77'))[_0x20a4('0x37')]('phone\x20NOT\x20IN\x20(?)',squel[_0x20a4('0x6d')]()[_0x20a4('0x6e')](_0x20a4('0x78'))[_0x20a4('0x72')]('cm_hopper_final')[_0x20a4('0x37')](_0x20a4('0x79'),_0x753aa5['params']['id'][_0x20a4('0x76')]()))[_0x20a4('0x37')](_0x20a4('0x7a'),squel[_0x20a4('0x6d')]()[_0x20a4('0x6e')]('COALESCE(phone,\x27\x27)')['from'](_0x20a4('0x68'))[_0x20a4('0x37')](_0x20a4('0x79'),_0x753aa5[_0x20a4('0x41')]['id'][_0x20a4('0x76')]())))[_0x20a4('0x76')]();break;case _0x20a4('0x7b'):_0x2194ec=squel[_0x20a4('0x66')]()[_0x20a4('0x67')](_0x20a4('0x68'))['fromQuery']([_0x20a4('0x6a'),_0x20a4('0x6b'),_0x20a4('0x6c'),_0x20a4('0x71'),_0x20a4('0x58'),_0x20a4('0x50'),_0x20a4('0x51')],squel[_0x20a4('0x6d')]()[_0x20a4('0x6e')](_0x20a4('0x6a'),_0x20a4('0x6a'))[_0x20a4('0x6e')](_0x20a4('0x6f'),_0x20a4('0x6b'))[_0x20a4('0x6e')]('id',_0x20a4('0x6c'))['field'](_0xf5d9bb[_0x20a4('0x70')][_0x20a4('0x76')](),_0x20a4('0x71'))['field'](_0x753aa5[_0x20a4('0x41')]['id'][_0x20a4('0x76')](),'CampaignId')['field'](_0x20a4('0x6f'),_0x20a4('0x50'))[_0x20a4('0x6e')]('NOW()',_0x20a4('0x51'))['from']('cm_contacts')[_0x20a4('0x37')](_0x20a4('0x74'))[_0x20a4('0x37')](_0x20a4('0x75'),_0xf5d9bb[_0x20a4('0x70')]['toString']())['where'](_0x20a4('0x77'))[_0x20a4('0x37')](_0x20a4('0x7a'),squel[_0x20a4('0x6d')]()[_0x20a4('0x6e')]('COALESCE(phone,\x27\x27)')[_0x20a4('0x72')](_0x20a4('0x68'))[_0x20a4('0x37')](_0x20a4('0x79'),_0x753aa5[_0x20a4('0x41')]['id'][_0x20a4('0x76')]())))['toString']();break;default:_0x2194ec=squel[_0x20a4('0x66')]()[_0x20a4('0x67')]('cm_hopper')[_0x20a4('0x69')]([_0x20a4('0x6a'),_0x20a4('0x6b'),_0x20a4('0x6c'),'ListId',_0x20a4('0x58'),_0x20a4('0x50'),_0x20a4('0x51')],squel[_0x20a4('0x6d')]()[_0x20a4('0x6e')]('phone',_0x20a4('0x6a'))[_0x20a4('0x6e')](_0x20a4('0x6f'),'scheduledAt')[_0x20a4('0x6e')]('id',_0x20a4('0x6c'))[_0x20a4('0x6e')](_0xf5d9bb['CmListId'][_0x20a4('0x76')](),'ListId')[_0x20a4('0x6e')](_0x753aa5['params']['id']['toString'](),_0x20a4('0x58'))[_0x20a4('0x6e')](_0x20a4('0x6f'),'createdAt')[_0x20a4('0x6e')](_0x20a4('0x6f'),_0x20a4('0x51'))['from'](_0x20a4('0x73'))['where'](_0x20a4('0x74'))[_0x20a4('0x37')]('ListId\x20=\x20?',_0xf5d9bb[_0x20a4('0x70')][_0x20a4('0x76')]())['where'](_0x20a4('0x77')))[_0x20a4('0x76')]();}_0x85399b[_0x20a4('0x7c')](db['sequelize'][_0x20a4('0x30')](_0x2194ec));}return BPromise[_0x20a4('0x7d')](_0x85399b);}})[_0x20a4('0x22')](function(){return _0x37b5c2;})[_0x20a4('0x22')](respondWithResult(_0x1c1cef,null))[_0x20a4('0x44')](handleError(_0x1c1cef,null));};exports['removeLists']=function(_0x4a462a,_0x30bdcf,_0x42e32f){return db[_0x20a4('0x2b')][_0x20a4('0x43')]({'where':{'id':_0x4a462a[_0x20a4('0x41')]['id']}})[_0x20a4('0x22')](handleEntityNotFound(_0x30bdcf,null))[_0x20a4('0x22')](function(_0x1e08af){if(_0x1e08af){return _0x1e08af[_0x20a4('0x7e')](_0x4a462a['query']['ids']);}})['then'](function(_0x27a696){if(_0x27a696){return db[_0x20a4('0x59')][_0x20a4('0x23')]({'where':{'ListId':_0x4a462a[_0x20a4('0x30')]['ids'],'CampaignId':_0x4a462a['params']['id']}})['then'](function(){return _0x27a696;});}})['then'](respondWithStatusCode(_0x30bdcf,null))[_0x20a4('0x44')](handleError(_0x30bdcf,null));};exports[_0x20a4('0x7f')]=function(_0x2a223f,_0x4c7df8,_0xf2b407){var _0x33b708={};var _0x21f63f={};var _0x36b84e;var _0x1f1f6d;return db[_0x20a4('0x2b')][_0x20a4('0x55')]({'where':{'id':_0x2a223f[_0x20a4('0x41')]['id']}})[_0x20a4('0x22')](handleEntityNotFound(_0x4c7df8,null))[_0x20a4('0x22')](function(_0x2a2199){if(_0x2a2199){_0x36b84e=_0x2a2199;_0x21f63f[_0x20a4('0x2f')]=_['keys'](db['CmList']['rawAttributes']);_0x21f63f[_0x20a4('0x30')]=_[_0x20a4('0x42')](_0x2a223f['query']);_0x21f63f[_0x20a4('0x38')]=_[_0x20a4('0x31')](_0x21f63f[_0x20a4('0x2f')],_0x21f63f[_0x20a4('0x30')]);_0x33b708['attributes']=_[_0x20a4('0x31')](_0x21f63f['model'],qs['fields'](_0x2a223f[_0x20a4('0x30')][_0x20a4('0x33')]));_0x33b708[_0x20a4('0x32')]=_0x33b708['attributes'][_0x20a4('0x34')]?_0x33b708[_0x20a4('0x32')]:_0x21f63f[_0x20a4('0x2f')];_0x33b708[_0x20a4('0x57')]=qs[_0x20a4('0x36')](_0x2a223f[_0x20a4('0x30')][_0x20a4('0x36')]);_0x33b708['where']=qs[_0x20a4('0x38')](_[_0x20a4('0x39')](_0x2a223f['query'],_0x21f63f[_0x20a4('0x38')]));if(_0x2a223f[_0x20a4('0x30')][_0x20a4('0x3c')]){_0x33b708[_0x20a4('0x37')]=_[_0x20a4('0x3a')](_0x33b708['where'],{'$or':_[_0x20a4('0x2a')](_0x33b708[_0x20a4('0x32')],function(_0xea4fd3){var _0x44f521={};_0x44f521[_0xea4fd3]={'$like':'%'+_0x2a223f[_0x20a4('0x30')][_0x20a4('0x3c')]+'%'};return _0x44f521;})});}_0x33b708=_[_0x20a4('0x3a')]({},_0x33b708,_0x2a223f[_0x20a4('0x4f')]);return _0x36b84e[_0x20a4('0x7f')](_0x33b708);}})[_0x20a4('0x22')](function(_0x107abf){if(_0x107abf){_0x1f1f6d=_0x107abf[_0x20a4('0x34')];if(!_0x2a223f['query'][_0x20a4('0x35')](_0x20a4('0x56'))){_0x33b708[_0x20a4('0x1a')]=qs[_0x20a4('0x1a')](_0x2a223f[_0x20a4('0x30')][_0x20a4('0x1a')]);_0x33b708[_0x20a4('0x1c')]=qs[_0x20a4('0x1c')](_0x2a223f[_0x20a4('0x30')][_0x20a4('0x1c')]);}return _0x36b84e[_0x20a4('0x7f')](_0x33b708);}})[_0x20a4('0x22')](function(_0x5b2c02){if(_0x5b2c02){return _0x5b2c02?{'count':_0x1f1f6d,'rows':_0x5b2c02}:null;}})[_0x20a4('0x22')](respondWithResult(_0x4c7df8,null))[_0x20a4('0x44')](handleError(_0x4c7df8,null));};exports[_0x20a4('0x80')]=function(_0x5b5faf,_0x296da3,_0xac41a5){var _0x721ad5,_0x5a4d0e;return db[_0x20a4('0x2b')][_0x20a4('0x43')]({'where':{'id':_0x5b5faf[_0x20a4('0x41')]['id']}})[_0x20a4('0x22')](handleEntityNotFound(_0x296da3,null))[_0x20a4('0x22')](function(_0x1674e1){if(_0x1674e1){_0x5a4d0e=_0x1674e1;return _0x1674e1[_0x20a4('0x80')](_0x5b5faf[_0x20a4('0x46')][_0x20a4('0x62')],_[_0x20a4('0x52')](_0x5b5faf[_0x20a4('0x46')],[_0x20a4('0x62'),'id'])||{});}return null;})[_0x20a4('0x63')](function(_0x2e356b){var _0x5a9242;_0x721ad5=_0x2e356b||[];var _0x549252=[];if(_0x2e356b){for(var _0x298186=0x0;_0x298186<_0x2e356b['length'];_0x298186+=0x1){var _0x4838a5=_0x2e356b[_0x298186][_0x20a4('0x24')]({'plain':!![]});_0x5a9242=squel[_0x20a4('0x66')]()[_0x20a4('0x67')](_0x20a4('0x81'))[_0x20a4('0x69')]([_0x20a4('0x6a'),_0x20a4('0x6c'),_0x20a4('0x71'),_0x20a4('0x58'),_0x20a4('0x50'),'updatedAt'],squel[_0x20a4('0x6d')]()['field']('phone','phone')[_0x20a4('0x6e')]('id',_0x20a4('0x6c'))[_0x20a4('0x6e')](_0x4838a5[_0x20a4('0x70')][_0x20a4('0x76')](),_0x20a4('0x71'))[_0x20a4('0x6e')](_0x5b5faf[_0x20a4('0x41')]['id']['toString'](),'CampaignId')[_0x20a4('0x6e')](_0x20a4('0x6f'),_0x20a4('0x50'))['field'](_0x20a4('0x6f'),'updatedAt')[_0x20a4('0x72')]('cm_contacts')['where'](_0x20a4('0x74'))[_0x20a4('0x37')](_0x20a4('0x75'),_0x4838a5[_0x20a4('0x70')][_0x20a4('0x76')]())[_0x20a4('0x37')](_0x20a4('0x77')))[_0x20a4('0x76')]();_0x549252[_0x20a4('0x7c')](db[_0x20a4('0x82')][_0x20a4('0x30')](_0x5a9242));}return BPromise[_0x20a4('0x7d')](_0x549252);}})['then'](function(){return _0x721ad5;})[_0x20a4('0x22')](respondWithResult(_0x296da3,null))[_0x20a4('0x44')](handleError(_0x296da3,null));};exports['removeBlackLists']=function(_0x14b74c,_0x13c727,_0x2eefd8){return db['Campaign'][_0x20a4('0x43')]({'where':{'id':_0x14b74c[_0x20a4('0x41')]['id']}})[_0x20a4('0x22')](handleEntityNotFound(_0x13c727,null))[_0x20a4('0x22')](function(_0x496589){if(_0x496589){return _0x496589['removeBlackLists'](_0x14b74c[_0x20a4('0x30')][_0x20a4('0x62')]);}})[_0x20a4('0x22')](function(_0xe7e847){if(_0xe7e847){return db[_0x20a4('0x5e')][_0x20a4('0x23')]({'where':{'ListId':_0x14b74c[_0x20a4('0x30')][_0x20a4('0x62')],'CampaignId':_0x14b74c[_0x20a4('0x41')]['id']}})[_0x20a4('0x22')](function(){return _0xe7e847;});}})[_0x20a4('0x22')](respondWithStatusCode(_0x13c727,null))[_0x20a4('0x44')](handleError(_0x13c727,null));};
\ No newline at end of file
+var _0x54c9=['../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','IvrCampaigns','UserProfileResource','error','name','send','map','Campaign','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','offset','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','role','CmHopper','CampaignId','findOne','CmHopperHistory','rows','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','ContactId','select','field','phone','NOW()','CmListId','toString','ListId','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','from','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','scheduledAt','deletedAt\x20IS\x20NULL','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','push','removeBlackLists','eml-format','zip-dir','moment','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x54c9,0xf4));var _0x954c=function(_0x53eef7,_0x1b14d3){_0x53eef7=_0x53eef7-0x0;var _0x556b25=_0x54c9[_0x53eef7];return _0x556b25;};'use strict';var emlformat=require(_0x954c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x954c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x954c('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x954c('0x3'));var path=require('path');var sox=require(_0x954c('0x4'));var csv=require(_0x954c('0x5'));var ejs=require(_0x954c('0x6'));var fs=require('fs');var fs_extra=require(_0x954c('0x7'));var _=require('lodash');var squel=require(_0x954c('0x8'));var crypto=require(_0x954c('0x9'));var jsforce=require(_0x954c('0xa'));var deskjs=require(_0x954c('0xb'));var toCsv=require(_0x954c('0x5'));var querystring=require(_0x954c('0xc'));var Papa=require(_0x954c('0xd'));var Redis=require('ioredis');var authService=require(_0x954c('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x954c('0xf'));var hardwareService=require(_0x954c('0x10'));var logger=require('../../config/logger')(_0x954c('0x11'));var utils=require(_0x954c('0x12'));var config=require(_0x954c('0x13'));var licenseUtil=require(_0x954c('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x422d80,_0x5bc538){_0x5bc538=_0x5bc538||0xcc;return function(_0x36d781){if(_0x36d781){return _0x422d80[_0x954c('0x15')](_0x5bc538);}return _0x422d80['status'](_0x5bc538)[_0x954c('0x16')]();};}function respondWithResult(_0x301422,_0x3330f3){_0x3330f3=_0x3330f3||0xc8;return function(_0x11b848){if(_0x11b848){return _0x301422[_0x954c('0x17')](_0x3330f3)[_0x954c('0x18')](_0x11b848);}};}function respondWithFilteredResult(_0x28ffb4,_0x32e0cb){return function(_0x10547f){if(_0x10547f){var _0x44ca35=typeof _0x32e0cb['offset']===_0x954c('0x19')&&typeof _0x32e0cb[_0x954c('0x1a')]==='undefined';var _0x36883f=_0x10547f[_0x954c('0x1b')];var _0x552ddf=_0x44ca35?0x0:_0x32e0cb['offset'];var _0x52a425=_0x44ca35?_0x10547f['count']:_0x32e0cb['offset']+_0x32e0cb[_0x954c('0x1a')];var _0x4fe053;if(_0x52a425>=_0x36883f){_0x52a425=_0x36883f;_0x4fe053=0xc8;}else{_0x4fe053=0xce;}_0x28ffb4[_0x954c('0x17')](_0x4fe053);return _0x28ffb4[_0x954c('0x1c')]('Content-Range',_0x552ddf+'-'+_0x52a425+'/'+_0x36883f)[_0x954c('0x18')](_0x10547f);}return null;};}function patchUpdates(_0x281d27){return function(_0x248476){try{jsonpatch[_0x954c('0x1d')](_0x248476,_0x281d27,!![]);}catch(_0x16949c){return BPromise[_0x954c('0x1e')](_0x16949c);}return _0x248476[_0x954c('0x1f')]();};}function saveUpdates(_0x4d3ded,_0x2a5213){return function(_0x1edcac){if(_0x1edcac){return _0x1edcac[_0x954c('0x20')](_0x4d3ded)[_0x954c('0x21')](function(_0x271b2b){return _0x271b2b;});}return null;};}function removeEntity(_0x390708,_0x57ec5b){return function(_0xeeec4e){if(_0xeeec4e){return _0xeeec4e[_0x954c('0x22')]()[_0x954c('0x21')](function(){var _0x33f9b0=_0xeeec4e[_0x954c('0x23')]({'plain':!![]});var _0x225c16=_0x954c('0x24');return db[_0x954c('0x25')][_0x954c('0x22')]({'where':{'type':_0x225c16,'resourceId':_0x33f9b0['id']}})[_0x954c('0x21')](function(){return _0xeeec4e;});})[_0x954c('0x21')](function(){_0x390708[_0x954c('0x17')](0xcc)[_0x954c('0x16')]();});}};}function handleEntityNotFound(_0x4fc11c,_0x1e7998){return function(_0x991853){if(!_0x991853){_0x4fc11c[_0x954c('0x15')](0x194);}return _0x991853;};}function handleError(_0x32a8eb,_0x15b706){_0x15b706=_0x15b706||0x1f4;return function(_0x5d6fa6){logger[_0x954c('0x26')](_0x5d6fa6['stack']);if(_0x5d6fa6[_0x954c('0x27')]){delete _0x5d6fa6[_0x954c('0x27')];}_0x32a8eb['status'](_0x15b706)[_0x954c('0x28')](_0x5d6fa6);};}exports['index']=function(_0x5b3aa0,_0x2e2c2b){var _0x1a221c={},_0x2e74a8={},_0x4c8c2e={'count':0x0,'rows':[]};var _0x2ad51a=_[_0x954c('0x29')](db[_0x954c('0x2a')][_0x954c('0x2b')],function(_0x5415de){return{'name':_0x5415de[_0x954c('0x2c')],'type':_0x5415de[_0x954c('0x2d')][_0x954c('0x2e')]};});_0x2e74a8['model']=_[_0x954c('0x29')](_0x2ad51a,_0x954c('0x27'));_0x2e74a8[_0x954c('0x2f')]=_[_0x954c('0x30')](_0x5b3aa0[_0x954c('0x2f')]);_0x2e74a8[_0x954c('0x31')]=_[_0x954c('0x32')](_0x2e74a8['model'],_0x2e74a8[_0x954c('0x2f')]);_0x1a221c[_0x954c('0x33')]=_[_0x954c('0x32')](_0x2e74a8['model'],qs[_0x954c('0x34')](_0x5b3aa0[_0x954c('0x2f')]['fields']));_0x1a221c['attributes']=_0x1a221c['attributes'][_0x954c('0x35')]?_0x1a221c[_0x954c('0x33')]:_0x2e74a8[_0x954c('0x36')];if(!_0x5b3aa0[_0x954c('0x2f')][_0x954c('0x37')](_0x954c('0x38'))){_0x1a221c['limit']=qs[_0x954c('0x1a')](_0x5b3aa0[_0x954c('0x2f')][_0x954c('0x1a')]);_0x1a221c[_0x954c('0x39')]=qs[_0x954c('0x39')](_0x5b3aa0['query'][_0x954c('0x39')]);}_0x1a221c[_0x954c('0x3a')]=qs[_0x954c('0x3b')](_0x5b3aa0['query']['sort']);_0x1a221c['where']=qs[_0x954c('0x31')](_[_0x954c('0x3c')](_0x5b3aa0['query'],_0x2e74a8[_0x954c('0x31')]),_0x2ad51a);if(_0x5b3aa0['query'][_0x954c('0x3d')]){_0x1a221c[_0x954c('0x3e')]=_[_0x954c('0x3f')](_0x1a221c[_0x954c('0x3e')],{'$or':_[_0x954c('0x29')](_0x2ad51a,function(_0x31ac87){if(_0x31ac87[_0x954c('0x2d')]!==_0x954c('0x40')){var _0x3a235d={};_0x3a235d[_0x31ac87[_0x954c('0x27')]]={'$like':'%'+_0x5b3aa0[_0x954c('0x2f')][_0x954c('0x3d')]+'%'};return _0x3a235d;}})});}_0x1a221c=_[_0x954c('0x3f')]({},_0x1a221c,_0x5b3aa0[_0x954c('0x41')]);var _0x4a96cc={'where':_0x1a221c[_0x954c('0x3e')]};return db[_0x954c('0x2a')][_0x954c('0x1b')](_0x4a96cc)[_0x954c('0x21')](function(_0x572f52){_0x4c8c2e[_0x954c('0x1b')]=_0x572f52;if(_0x5b3aa0[_0x954c('0x2f')][_0x954c('0x42')]){_0x1a221c[_0x954c('0x43')]=[{'all':!![]}];}return db[_0x954c('0x2a')][_0x954c('0x44')](_0x1a221c);})['then'](function(_0x3e00d6){_0x4c8c2e['rows']=_0x3e00d6;return _0x4c8c2e;})[_0x954c('0x21')](respondWithFilteredResult(_0x2e2c2b,_0x1a221c))[_0x954c('0x45')](handleError(_0x2e2c2b,null));};exports[_0x954c('0x46')]=function(_0xad50cb,_0x1f0690){var _0x3e11f6={'raw':![],'where':{'id':_0xad50cb[_0x954c('0x47')]['id']}},_0x3df0fc={};_0x3df0fc['model']=_['keys'](db[_0x954c('0x2a')][_0x954c('0x2b')]);_0x3df0fc[_0x954c('0x2f')]=_[_0x954c('0x30')](_0xad50cb[_0x954c('0x2f')]);_0x3df0fc['filters']=_[_0x954c('0x32')](_0x3df0fc[_0x954c('0x36')],_0x3df0fc[_0x954c('0x2f')]);_0x3e11f6[_0x954c('0x33')]=_[_0x954c('0x32')](_0x3df0fc['model'],qs[_0x954c('0x34')](_0xad50cb[_0x954c('0x2f')][_0x954c('0x34')]));_0x3e11f6['attributes']=_0x3e11f6[_0x954c('0x33')][_0x954c('0x35')]?_0x3e11f6['attributes']:_0x3df0fc[_0x954c('0x36')];if(_0xad50cb[_0x954c('0x2f')][_0x954c('0x42')]){_0x3e11f6['include']=[{'all':!![]}];}_0x3e11f6=_[_0x954c('0x3f')]({},_0x3e11f6,_0xad50cb[_0x954c('0x41')]);return db[_0x954c('0x2a')][_0x954c('0x48')](_0x3e11f6)[_0x954c('0x21')](handleEntityNotFound(_0x1f0690,null))['then'](respondWithResult(_0x1f0690,null))['catch'](handleError(_0x1f0690,null));};exports[_0x954c('0x49')]=function(_0x32825b,_0x11fee6){return db[_0x954c('0x2a')][_0x954c('0x49')](_0x32825b[_0x954c('0x4a')],{})[_0x954c('0x21')](function(_0x18de5c){var _0x5afc5c=_0x32825b[_0x954c('0x4b')]['get']({'plain':!![]});if(!_0x5afc5c)throw new Error(_0x954c('0x4c'));if(_0x5afc5c['role']===_0x954c('0x4b')){var _0x57b296=_0x18de5c[_0x954c('0x23')]({'plain':!![]});var _0x45b250=_0x954c('0x24');return db[_0x954c('0x4d')][_0x954c('0x48')]({'where':{'name':_0x45b250,'userProfileId':_0x5afc5c[_0x954c('0x4e')]},'raw':!![]})[_0x954c('0x21')](function(_0xc01e4){if(_0xc01e4&&_0xc01e4[_0x954c('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x57b296[_0x954c('0x27')],'resourceId':_0x57b296['id'],'type':_0xc01e4[_0x954c('0x27')],'sectionId':_0xc01e4['id']},{})[_0x954c('0x21')](function(){return _0x18de5c;});}else{return _0x18de5c;}})[_0x954c('0x45')](function(_0x157f04){logger[_0x954c('0x26')](_0x954c('0x50'),_0x157f04);throw _0x157f04;});}return _0x18de5c;})[_0x954c('0x21')](respondWithResult(_0x11fee6,0xc9))['catch'](handleError(_0x11fee6,null));};exports['clone']=function(_0x210a8f,_0x8615a6){var _0x2bebb3={'where':{'id':_0x210a8f[_0x954c('0x47')]['id']}},_0x9cc8c5={};_0x9cc8c5['model']=_[_0x954c('0x30')](db[_0x954c('0x2a')][_0x954c('0x2b')]);_0x2bebb3[_0x954c('0x33')]=_[_0x954c('0x32')](_0x9cc8c5[_0x954c('0x36')],qs['fields'](_0x210a8f['query'][_0x954c('0x34')]));_0x2bebb3['attributes']=_0x2bebb3[_0x954c('0x33')][_0x954c('0x35')]?_0x2bebb3[_0x954c('0x33')]:_0x9cc8c5[_0x954c('0x36')];if(_0x210a8f[_0x954c('0x2f')][_0x954c('0x42')]){_0x2bebb3['include']=[{'all':!![]}];}_0x2bebb3=_['merge']({},_0x2bebb3,_0x210a8f[_0x954c('0x41')]);return db['Campaign'][_0x954c('0x48')](_0x2bebb3)[_0x954c('0x21')](handleEntityNotFound(_0x8615a6,null))[_0x954c('0x21')](function(_0x1ec534){if(_0x1ec534){var _0x2c5467=_0x1ec534['get']({'plain':!![]});_0x2c5467=qs[_0x954c('0x51')](_0x2c5467,['id',_0x954c('0x52'),'updatedAt']);_0x210a8f[_0x954c('0x4a')]=_[_0x954c('0x51')](_0x210a8f[_0x954c('0x4a')],['id','createdAt',_0x954c('0x53')]);return db[_0x954c('0x2a')][_0x954c('0x49')](_[_0x954c('0x3f')](_0x2c5467,_0x210a8f[_0x954c('0x4a')]),{'include':_0x210a8f[_0x954c('0x2f')]['includeAll']?[{'all':!![]}]:undefined})[_0x954c('0x21')](function(_0x45c797){var _0x20ca3c=_0x210a8f[_0x954c('0x4b')]['get']({'plain':!![]});if(!_0x20ca3c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x20ca3c[_0x954c('0x54')]===_0x954c('0x4b')){var _0x4f1d21=_0x45c797['get']({'plain':!![]});var _0x2dc218='IvrCampaigns';return db[_0x954c('0x4d')]['find']({'where':{'name':_0x2dc218,'userProfileId':_0x20ca3c[_0x954c('0x4e')]},'raw':!![]})['then'](function(_0x1c3255){if(_0x1c3255&&_0x1c3255[_0x954c('0x4f')]===0x0){return db['UserProfileResource'][_0x954c('0x49')]({'name':_0x4f1d21[_0x954c('0x27')],'resourceId':_0x4f1d21['id'],'type':_0x1c3255['name'],'sectionId':_0x1c3255['id']},{})[_0x954c('0x21')](function(){return _0x45c797;});}else{return _0x45c797;}})['catch'](function(_0x465c2f){logger[_0x954c('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x465c2f);throw _0x465c2f;});}return _0x45c797;});}})[_0x954c('0x21')](respondWithResult(_0x8615a6,0xc9))['catch'](handleError(_0x8615a6,null));};exports[_0x954c('0x20')]=function(_0x40457a,_0x3b0ae8){if(_0x40457a[_0x954c('0x4a')]['id']){delete _0x40457a[_0x954c('0x4a')]['id'];}return db[_0x954c('0x2a')][_0x954c('0x48')]({'where':{'id':_0x40457a[_0x954c('0x47')]['id']}})[_0x954c('0x21')](handleEntityNotFound(_0x3b0ae8,null))[_0x954c('0x21')](saveUpdates(_0x40457a[_0x954c('0x4a')],null))[_0x954c('0x21')](respondWithResult(_0x3b0ae8,null))[_0x954c('0x45')](handleError(_0x3b0ae8,null));};exports[_0x954c('0x22')]=function(_0x239458,_0x1fdbe6){return db['Campaign'][_0x954c('0x48')]({'where':{'id':_0x239458['params']['id']}})[_0x954c('0x21')](handleEntityNotFound(_0x1fdbe6,null))[_0x954c('0x21')](removeEntity(_0x1fdbe6,null))['catch'](handleError(_0x1fdbe6,null));};exports['getHoppers']=function(_0x52b782,_0x403f05,_0x1b6613){var _0x27adbb={'raw':!![],'where':{}};var _0x1a7130={};var _0x54cd53={'count':0x0,'rows':[]};return db[_0x954c('0x2a')]['findOne']({'where':{'id':_0x52b782[_0x954c('0x47')]['id']}})[_0x954c('0x21')](handleEntityNotFound(_0x403f05,null))[_0x954c('0x21')](function(_0x4efd54){if(_0x4efd54){_0x1a7130[_0x954c('0x36')]=_['keys'](db[_0x954c('0x55')][_0x954c('0x2b')]);_0x1a7130[_0x954c('0x2f')]=_[_0x954c('0x30')](_0x52b782[_0x954c('0x2f')]);_0x1a7130[_0x954c('0x31')]=_[_0x954c('0x32')](_0x1a7130['model'],_0x1a7130[_0x954c('0x2f')]);_0x27adbb['attributes']=_['intersection'](_0x1a7130[_0x954c('0x36')],qs[_0x954c('0x34')](_0x52b782[_0x954c('0x2f')][_0x954c('0x34')]));_0x27adbb[_0x954c('0x33')]=_0x27adbb[_0x954c('0x33')]['length']?_0x27adbb['attributes']:_0x1a7130[_0x954c('0x36')];if(!_0x52b782['query'][_0x954c('0x37')](_0x954c('0x38'))){_0x27adbb[_0x954c('0x1a')]=qs['limit'](_0x52b782[_0x954c('0x2f')][_0x954c('0x1a')]);_0x27adbb[_0x954c('0x39')]=qs['offset'](_0x52b782['query']['offset']);}_0x27adbb[_0x954c('0x3a')]=qs[_0x954c('0x3b')](_0x52b782['query']['sort']);_0x27adbb['where']=qs[_0x954c('0x31')](_['pick'](_0x52b782[_0x954c('0x2f')],_0x1a7130[_0x954c('0x31')]));_0x27adbb[_0x954c('0x3e')][_0x954c('0x56')]=_0x4efd54['id'];if(_0x52b782['query']['filter']){_0x27adbb[_0x954c('0x3e')]=_[_0x954c('0x3f')](_0x27adbb['where'],{'$or':_['map'](_0x27adbb['attributes'],function(_0x4e703e){var _0x107e89={};_0x107e89[_0x4e703e]={'$like':'%'+_0x52b782[_0x954c('0x2f')]['filter']+'%'};return _0x107e89;})});}_0x27adbb=_[_0x954c('0x3f')]({},_0x27adbb,_0x52b782[_0x954c('0x41')]);return db['CmHopper'][_0x954c('0x1b')]({'where':_0x27adbb[_0x954c('0x3e')]})['then'](function(_0x45a4dc){_0x54cd53['count']=_0x45a4dc;if(_0x52b782['query'][_0x954c('0x42')]){_0x27adbb[_0x954c('0x43')]=[{'all':!![]}];}return db['CmHopper'][_0x954c('0x44')](_0x27adbb);})[_0x954c('0x21')](function(_0x3cdbef){_0x54cd53['rows']=_0x3cdbef;return _0x54cd53;});}})[_0x954c('0x21')](respondWithFilteredResult(_0x403f05,_0x27adbb))[_0x954c('0x45')](handleError(_0x403f05,null));};exports['getHopperHistories']=function(_0x3251e4,_0x4f1909,_0x6615b1){var _0xee6956={'raw':!![],'where':{}};var _0x5137dd={};var _0x2ff1f2={'count':0x0,'rows':[]};return db['Campaign'][_0x954c('0x57')]({'where':{'id':_0x3251e4[_0x954c('0x47')]['id']}})[_0x954c('0x21')](handleEntityNotFound(_0x4f1909,null))[_0x954c('0x21')](function(_0x2144bc){if(_0x2144bc){_0x5137dd['model']=_['keys'](db[_0x954c('0x58')][_0x954c('0x2b')]);_0x5137dd[_0x954c('0x2f')]=_[_0x954c('0x30')](_0x3251e4[_0x954c('0x2f')]);_0x5137dd[_0x954c('0x31')]=_[_0x954c('0x32')](_0x5137dd[_0x954c('0x36')],_0x5137dd[_0x954c('0x2f')]);_0xee6956['attributes']=_[_0x954c('0x32')](_0x5137dd[_0x954c('0x36')],qs[_0x954c('0x34')](_0x3251e4[_0x954c('0x2f')][_0x954c('0x34')]));_0xee6956[_0x954c('0x33')]=_0xee6956[_0x954c('0x33')][_0x954c('0x35')]?_0xee6956[_0x954c('0x33')]:_0x5137dd['model'];if(!_0x3251e4[_0x954c('0x2f')][_0x954c('0x37')](_0x954c('0x38'))){_0xee6956[_0x954c('0x1a')]=qs['limit'](_0x3251e4[_0x954c('0x2f')][_0x954c('0x1a')]);_0xee6956['offset']=qs[_0x954c('0x39')](_0x3251e4[_0x954c('0x2f')]['offset']);}_0xee6956[_0x954c('0x3a')]=qs['sort'](_0x3251e4[_0x954c('0x2f')][_0x954c('0x3b')]);_0xee6956[_0x954c('0x3e')]=qs[_0x954c('0x31')](_[_0x954c('0x3c')](_0x3251e4[_0x954c('0x2f')],_0x5137dd['filters']));_0xee6956[_0x954c('0x3e')][_0x954c('0x56')]=_0x2144bc['id'];if(_0x3251e4['query']['filter']){_0xee6956[_0x954c('0x3e')]=_[_0x954c('0x3f')](_0xee6956[_0x954c('0x3e')],{'$or':_['map'](_0xee6956[_0x954c('0x33')],function(_0xe4e2f){var _0x5af458={};_0x5af458[_0xe4e2f]={'$like':'%'+_0x3251e4[_0x954c('0x2f')][_0x954c('0x3d')]+'%'};return _0x5af458;})});}_0xee6956=_[_0x954c('0x3f')]({},_0xee6956,_0x3251e4['options']);return db[_0x954c('0x58')][_0x954c('0x1b')]({'where':_0xee6956[_0x954c('0x3e')]})[_0x954c('0x21')](function(_0x5979b1){_0x2ff1f2[_0x954c('0x1b')]=_0x5979b1;if(_0x3251e4[_0x954c('0x2f')][_0x954c('0x42')]){_0xee6956[_0x954c('0x43')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0xee6956);})[_0x954c('0x21')](function(_0x2a9a1a){_0x2ff1f2[_0x954c('0x59')]=_0x2a9a1a;return _0x2ff1f2;});}})['then'](respondWithFilteredResult(_0x4f1909,_0xee6956))['catch'](handleError(_0x4f1909,null));};exports[_0x954c('0x5a')]=function(_0x2ce5bf,_0x4d48dc,_0x16c286){var _0x2194ed={'raw':!![],'where':{}};var _0x5d622c={};var _0x12d082={'count':0x0,'rows':[]};return db[_0x954c('0x2a')][_0x954c('0x57')]({'where':{'id':_0x2ce5bf['params']['id']}})[_0x954c('0x21')](handleEntityNotFound(_0x4d48dc,null))[_0x954c('0x21')](function(_0x8e397){if(_0x8e397){_0x5d622c[_0x954c('0x36')]=_[_0x954c('0x30')](db[_0x954c('0x5b')]['rawAttributes']);_0x5d622c['query']=_['keys'](_0x2ce5bf['query']);_0x5d622c[_0x954c('0x31')]=_['intersection'](_0x5d622c['model'],_0x5d622c[_0x954c('0x2f')]);_0x2194ed[_0x954c('0x33')]=_[_0x954c('0x32')](_0x5d622c['model'],qs['fields'](_0x2ce5bf[_0x954c('0x2f')][_0x954c('0x34')]));_0x2194ed['attributes']=_0x2194ed[_0x954c('0x33')][_0x954c('0x35')]?_0x2194ed[_0x954c('0x33')]:_0x5d622c[_0x954c('0x36')];if(!_0x2ce5bf['query']['hasOwnProperty'](_0x954c('0x38'))){_0x2194ed[_0x954c('0x1a')]=qs[_0x954c('0x1a')](_0x2ce5bf[_0x954c('0x2f')][_0x954c('0x1a')]);_0x2194ed[_0x954c('0x39')]=qs['offset'](_0x2ce5bf['query'][_0x954c('0x39')]);}_0x2194ed[_0x954c('0x3a')]=qs[_0x954c('0x3b')](_0x2ce5bf[_0x954c('0x2f')][_0x954c('0x3b')]);_0x2194ed['where']=qs['filters'](_[_0x954c('0x3c')](_0x2ce5bf[_0x954c('0x2f')],_0x5d622c[_0x954c('0x31')]));_0x2194ed[_0x954c('0x3e')][_0x954c('0x56')]=_0x8e397['id'];if(_0x2ce5bf[_0x954c('0x2f')][_0x954c('0x3d')]){_0x2194ed[_0x954c('0x3e')]=_[_0x954c('0x3f')](_0x2194ed[_0x954c('0x3e')],{'$or':_[_0x954c('0x29')](_0x2194ed['attributes'],function(_0x1a0e97){var _0x2839c1={};_0x2839c1[_0x1a0e97]={'$like':'%'+_0x2ce5bf[_0x954c('0x2f')][_0x954c('0x3d')]+'%'};return _0x2839c1;})});}_0x2194ed=_['merge']({},_0x2194ed,_0x2ce5bf[_0x954c('0x41')]);return db['CmHopperFinal'][_0x954c('0x1b')]({'where':_0x2194ed['where']})['then'](function(_0x24024c){_0x12d082[_0x954c('0x1b')]=_0x24024c;if(_0x2ce5bf[_0x954c('0x2f')][_0x954c('0x42')]){_0x2194ed[_0x954c('0x43')]=[{'all':!![]}];}return db[_0x954c('0x5b')]['findAll'](_0x2194ed);})[_0x954c('0x21')](function(_0x10fbb7){_0x12d082[_0x954c('0x59')]=_0x10fbb7;return _0x12d082;});}})[_0x954c('0x21')](respondWithFilteredResult(_0x4d48dc,_0x2194ed))[_0x954c('0x45')](handleError(_0x4d48dc,null));};exports['getHopperBlacks']=function(_0x22d1de,_0x3e240d,_0x1db717){var _0x1983f1={'raw':!![],'where':{}};var _0x2e905e={};var _0x5607e6={'count':0x0,'rows':[]};return db[_0x954c('0x2a')][_0x954c('0x57')]({'where':{'id':_0x22d1de[_0x954c('0x47')]['id']}})['then'](handleEntityNotFound(_0x3e240d,null))['then'](function(_0x7afb8a){if(_0x7afb8a){_0x2e905e[_0x954c('0x36')]=_['keys'](db[_0x954c('0x5c')][_0x954c('0x2b')]);_0x2e905e[_0x954c('0x2f')]=_[_0x954c('0x30')](_0x22d1de['query']);_0x2e905e[_0x954c('0x31')]=_['intersection'](_0x2e905e['model'],_0x2e905e[_0x954c('0x2f')]);_0x1983f1[_0x954c('0x33')]=_['intersection'](_0x2e905e[_0x954c('0x36')],qs[_0x954c('0x34')](_0x22d1de[_0x954c('0x2f')][_0x954c('0x34')]));_0x1983f1[_0x954c('0x33')]=_0x1983f1[_0x954c('0x33')]['length']?_0x1983f1[_0x954c('0x33')]:_0x2e905e[_0x954c('0x36')];if(!_0x22d1de[_0x954c('0x2f')][_0x954c('0x37')](_0x954c('0x38'))){_0x1983f1[_0x954c('0x1a')]=qs[_0x954c('0x1a')](_0x22d1de[_0x954c('0x2f')][_0x954c('0x1a')]);_0x1983f1[_0x954c('0x39')]=qs['offset'](_0x22d1de['query'][_0x954c('0x39')]);}_0x1983f1['order']=qs[_0x954c('0x3b')](_0x22d1de[_0x954c('0x2f')][_0x954c('0x3b')]);_0x1983f1['where']=qs[_0x954c('0x31')](_['pick'](_0x22d1de[_0x954c('0x2f')],_0x2e905e[_0x954c('0x31')]));_0x1983f1[_0x954c('0x3e')]['CampaignId']=_0x7afb8a['id'];if(_0x22d1de[_0x954c('0x2f')][_0x954c('0x3d')]){_0x1983f1[_0x954c('0x3e')]=_[_0x954c('0x3f')](_0x1983f1[_0x954c('0x3e')],{'$or':_[_0x954c('0x29')](_0x1983f1[_0x954c('0x33')],function(_0x5ede1b){var _0x1c68e2={};_0x1c68e2[_0x5ede1b]={'$like':'%'+_0x22d1de['query'][_0x954c('0x3d')]+'%'};return _0x1c68e2;})});}_0x1983f1=_[_0x954c('0x3f')]({},_0x1983f1,_0x22d1de['options']);return db['CmHopperBlack']['count']({'where':_0x1983f1[_0x954c('0x3e')]})['then'](function(_0x40b8c4){_0x5607e6[_0x954c('0x1b')]=_0x40b8c4;if(_0x22d1de['query'][_0x954c('0x42')]){_0x1983f1[_0x954c('0x43')]=[{'all':!![]}];}return db[_0x954c('0x5c')][_0x954c('0x44')](_0x1983f1);})[_0x954c('0x21')](function(_0x1d27e5){_0x5607e6['rows']=_0x1d27e5;return _0x5607e6;});}})[_0x954c('0x21')](respondWithFilteredResult(_0x3e240d,_0x1983f1))[_0x954c('0x45')](handleError(_0x3e240d,null));};exports[_0x954c('0x5d')]=function(_0x260435,_0x11d600,_0x4129fe){var _0x3dc445={};var _0x279012={};var _0x3666f8;var _0x5d51e8;return db[_0x954c('0x2a')][_0x954c('0x57')]({'where':{'id':_0x260435[_0x954c('0x47')]['id']}})[_0x954c('0x21')](handleEntityNotFound(_0x11d600,null))['then'](function(_0x5d104b){if(_0x5d104b){_0x3666f8=_0x5d104b;_0x279012[_0x954c('0x36')]=_[_0x954c('0x30')](db[_0x954c('0x5e')][_0x954c('0x2b')]);_0x279012[_0x954c('0x2f')]=_[_0x954c('0x30')](_0x260435[_0x954c('0x2f')]);_0x279012[_0x954c('0x31')]=_[_0x954c('0x32')](_0x279012[_0x954c('0x36')],_0x279012[_0x954c('0x2f')]);_0x3dc445['attributes']=_[_0x954c('0x32')](_0x279012[_0x954c('0x36')],qs[_0x954c('0x34')](_0x260435[_0x954c('0x2f')][_0x954c('0x34')]));_0x3dc445[_0x954c('0x33')]=_0x3dc445[_0x954c('0x33')][_0x954c('0x35')]?_0x3dc445[_0x954c('0x33')]:_0x279012[_0x954c('0x36')];_0x3dc445['order']=qs[_0x954c('0x3b')](_0x260435[_0x954c('0x2f')][_0x954c('0x3b')]);_0x3dc445['where']=qs[_0x954c('0x31')](_['pick'](_0x260435[_0x954c('0x2f')],_0x279012[_0x954c('0x31')]));if(_0x260435[_0x954c('0x2f')][_0x954c('0x3d')]){_0x3dc445[_0x954c('0x3e')]=_['merge'](_0x3dc445[_0x954c('0x3e')],{'$or':_[_0x954c('0x29')](_0x3dc445[_0x954c('0x33')],function(_0x49acbb){var _0x5995ff={};_0x5995ff[_0x49acbb]={'$like':'%'+_0x260435[_0x954c('0x2f')][_0x954c('0x3d')]+'%'};return _0x5995ff;})});}_0x3dc445=_['merge']({},_0x3dc445,_0x260435[_0x954c('0x41')]);return _0x3666f8['getLists'](_0x3dc445);}})[_0x954c('0x21')](function(_0x55728b){if(_0x55728b){_0x5d51e8=_0x55728b[_0x954c('0x35')];if(!_0x260435[_0x954c('0x2f')][_0x954c('0x37')]('nolimit')){_0x3dc445[_0x954c('0x1a')]=qs[_0x954c('0x1a')](_0x260435['query'][_0x954c('0x1a')]);_0x3dc445[_0x954c('0x39')]=qs[_0x954c('0x39')](_0x260435[_0x954c('0x2f')][_0x954c('0x39')]);}return _0x3666f8['getLists'](_0x3dc445);}})['then'](function(_0x4d453d){if(_0x4d453d){return _0x4d453d?{'count':_0x5d51e8,'rows':_0x4d453d}:null;}})[_0x954c('0x21')](respondWithResult(_0x11d600,null))['catch'](handleError(_0x11d600,null));};exports[_0x954c('0x5f')]=function(_0x38c941,_0xd946a4,_0xa2e1c1){var _0x16718f,_0x44e22e;return db[_0x954c('0x2a')][_0x954c('0x48')]({'where':{'id':_0x38c941['params']['id']}})[_0x954c('0x21')](handleEntityNotFound(_0xd946a4,null))['then'](function(_0x400b02){if(_0x400b02){_0x44e22e=_0x400b02;return _0x400b02['addLists'](_0x38c941[_0x954c('0x4a')][_0x954c('0x60')],_[_0x954c('0x51')](_0x38c941[_0x954c('0x4a')],['ids','id'])||{});}return null;})[_0x954c('0x61')](function(_0x14f7b8){var _0x4b8676;_0x16718f=_0x14f7b8||[];var _0x2664e1=[];if(_0x14f7b8){for(var _0x12db43=0x0;_0x12db43<_0x14f7b8[_0x954c('0x35')];_0x12db43+=0x1){var _0x48b796=_0x14f7b8[_0x12db43]['get']({'plain':!![]});_0x44e22e[_0x954c('0x62')]=_0x38c941[_0x954c('0x4a')][_0x954c('0x62')]?_0x38c941[_0x954c('0x4a')][_0x954c('0x62')]:_0x44e22e[_0x954c('0x62')];switch(_0x44e22e['dialCheckDuplicateType']){case _0x954c('0x63'):_0x4b8676=squel[_0x954c('0x64')]()[_0x954c('0x65')](_0x954c('0x66'))[_0x954c('0x67')](['phone','scheduledAt',_0x954c('0x68'),'ListId',_0x954c('0x56'),'createdAt','updatedAt'],squel[_0x954c('0x69')]()[_0x954c('0x6a')](_0x954c('0x6b'),_0x954c('0x6b'))[_0x954c('0x6a')](_0x954c('0x6c'),'scheduledAt')[_0x954c('0x6a')]('id',_0x954c('0x68'))[_0x954c('0x6a')](_0x48b796[_0x954c('0x6d')][_0x954c('0x6e')](),_0x954c('0x6f'))[_0x954c('0x6a')](_0x38c941['params']['id'][_0x954c('0x6e')](),_0x954c('0x56'))[_0x954c('0x6a')](_0x954c('0x6c'),'createdAt')[_0x954c('0x6a')](_0x954c('0x6c'),_0x954c('0x53'))['from'](_0x954c('0x70'))[_0x954c('0x3e')]('deletedAt\x20IS\x20NULL')[_0x954c('0x3e')](_0x954c('0x71'),_0x48b796[_0x954c('0x6d')][_0x954c('0x6e')]())[_0x954c('0x3e')](_0x954c('0x72'))[_0x954c('0x3e')](_0x954c('0x73'),squel['select']()[_0x954c('0x6a')](_0x954c('0x74'))[_0x954c('0x75')]('cm_hopper_final')[_0x954c('0x3e')](_0x954c('0x76'),_0x38c941['params']['id'][_0x954c('0x6e')]()))[_0x954c('0x3e')](_0x954c('0x73'),squel[_0x954c('0x69')]()['field'](_0x954c('0x77'))['from'](_0x954c('0x66'))[_0x954c('0x3e')]('CampaignId\x20=\x20?',_0x38c941[_0x954c('0x47')]['id'][_0x954c('0x6e')]())))['toString']();break;case _0x954c('0x78'):_0x4b8676=squel['insert']()[_0x954c('0x65')](_0x954c('0x66'))[_0x954c('0x67')]([_0x954c('0x6b'),'scheduledAt','ContactId',_0x954c('0x6f'),_0x954c('0x56'),'createdAt',_0x954c('0x53')],squel['select']()[_0x954c('0x6a')]('phone',_0x954c('0x6b'))[_0x954c('0x6a')](_0x954c('0x6c'),_0x954c('0x79'))[_0x954c('0x6a')]('id',_0x954c('0x68'))[_0x954c('0x6a')](_0x48b796['CmListId']['toString'](),_0x954c('0x6f'))[_0x954c('0x6a')](_0x38c941[_0x954c('0x47')]['id'][_0x954c('0x6e')](),_0x954c('0x56'))[_0x954c('0x6a')](_0x954c('0x6c'),_0x954c('0x52'))[_0x954c('0x6a')]('NOW()','updatedAt')[_0x954c('0x75')](_0x954c('0x70'))[_0x954c('0x3e')](_0x954c('0x7a'))[_0x954c('0x3e')](_0x954c('0x71'),_0x48b796[_0x954c('0x6d')]['toString']())[_0x954c('0x3e')](_0x954c('0x72'))[_0x954c('0x3e')](_0x954c('0x73'),squel[_0x954c('0x69')]()[_0x954c('0x6a')](_0x954c('0x77'))[_0x954c('0x75')](_0x954c('0x66'))[_0x954c('0x3e')](_0x954c('0x76'),_0x38c941['params']['id'][_0x954c('0x6e')]())))[_0x954c('0x6e')]();break;default:_0x4b8676=squel[_0x954c('0x64')]()[_0x954c('0x65')]('cm_hopper')['fromQuery']([_0x954c('0x6b'),_0x954c('0x79'),'ContactId','ListId',_0x954c('0x56'),_0x954c('0x52'),'updatedAt'],squel[_0x954c('0x69')]()[_0x954c('0x6a')](_0x954c('0x6b'),_0x954c('0x6b'))['field']('NOW()','scheduledAt')[_0x954c('0x6a')]('id',_0x954c('0x68'))['field'](_0x48b796[_0x954c('0x6d')][_0x954c('0x6e')](),'ListId')[_0x954c('0x6a')](_0x38c941[_0x954c('0x47')]['id'][_0x954c('0x6e')](),_0x954c('0x56'))[_0x954c('0x6a')](_0x954c('0x6c'),_0x954c('0x52'))[_0x954c('0x6a')](_0x954c('0x6c'),'updatedAt')[_0x954c('0x75')](_0x954c('0x70'))['where']('deletedAt\x20IS\x20NULL')[_0x954c('0x3e')]('ListId\x20=\x20?',_0x48b796[_0x954c('0x6d')][_0x954c('0x6e')]())[_0x954c('0x3e')]('phone\x20IS\x20NOT\x20NULL'))[_0x954c('0x6e')]();}_0x2664e1['push'](db[_0x954c('0x7b')]['query'](_0x4b8676));}return BPromise[_0x954c('0x7c')](_0x2664e1);}})[_0x954c('0x21')](function(){return _0x16718f;})['then'](respondWithResult(_0xd946a4,null))[_0x954c('0x45')](handleError(_0xd946a4,null));};exports[_0x954c('0x7d')]=function(_0x167485,_0x2d7480,_0x5d4c9d){return db[_0x954c('0x2a')]['find']({'where':{'id':_0x167485[_0x954c('0x47')]['id']}})[_0x954c('0x21')](handleEntityNotFound(_0x2d7480,null))[_0x954c('0x21')](function(_0x4afda1){if(_0x4afda1){return _0x4afda1[_0x954c('0x7d')](_0x167485['query'][_0x954c('0x60')]);}})[_0x954c('0x21')](function(_0x1d45bc){if(_0x1d45bc){return db['CmHopper'][_0x954c('0x22')]({'where':{'ListId':_0x167485[_0x954c('0x2f')][_0x954c('0x60')],'CampaignId':_0x167485[_0x954c('0x47')]['id']}})['then'](function(){return _0x1d45bc;});}})[_0x954c('0x21')](respondWithStatusCode(_0x2d7480,null))['catch'](handleError(_0x2d7480,null));};exports['getBlackLists']=function(_0x1e33bf,_0x28ad7b,_0x5aca3a){var _0x730798={};var _0x128a65={};var _0x52a238;var _0x17a5e6;return db[_0x954c('0x2a')][_0x954c('0x57')]({'where':{'id':_0x1e33bf[_0x954c('0x47')]['id']}})[_0x954c('0x21')](handleEntityNotFound(_0x28ad7b,null))['then'](function(_0x46ff00){if(_0x46ff00){_0x52a238=_0x46ff00;_0x128a65[_0x954c('0x36')]=_[_0x954c('0x30')](db[_0x954c('0x5e')]['rawAttributes']);_0x128a65[_0x954c('0x2f')]=_[_0x954c('0x30')](_0x1e33bf[_0x954c('0x2f')]);_0x128a65[_0x954c('0x31')]=_['intersection'](_0x128a65[_0x954c('0x36')],_0x128a65[_0x954c('0x2f')]);_0x730798['attributes']=_[_0x954c('0x32')](_0x128a65['model'],qs[_0x954c('0x34')](_0x1e33bf['query'][_0x954c('0x34')]));_0x730798[_0x954c('0x33')]=_0x730798[_0x954c('0x33')]['length']?_0x730798[_0x954c('0x33')]:_0x128a65[_0x954c('0x36')];_0x730798[_0x954c('0x3a')]=qs[_0x954c('0x3b')](_0x1e33bf['query'][_0x954c('0x3b')]);_0x730798[_0x954c('0x3e')]=qs[_0x954c('0x31')](_['pick'](_0x1e33bf['query'],_0x128a65[_0x954c('0x31')]));if(_0x1e33bf[_0x954c('0x2f')]['filter']){_0x730798[_0x954c('0x3e')]=_[_0x954c('0x3f')](_0x730798[_0x954c('0x3e')],{'$or':_['map'](_0x730798['attributes'],function(_0x4a3488){var _0x14475a={};_0x14475a[_0x4a3488]={'$like':'%'+_0x1e33bf[_0x954c('0x2f')][_0x954c('0x3d')]+'%'};return _0x14475a;})});}_0x730798=_['merge']({},_0x730798,_0x1e33bf['options']);return _0x52a238[_0x954c('0x7e')](_0x730798);}})[_0x954c('0x21')](function(_0x4a4f24){if(_0x4a4f24){_0x17a5e6=_0x4a4f24[_0x954c('0x35')];if(!_0x1e33bf[_0x954c('0x2f')][_0x954c('0x37')](_0x954c('0x38'))){_0x730798[_0x954c('0x1a')]=qs[_0x954c('0x1a')](_0x1e33bf[_0x954c('0x2f')]['limit']);_0x730798['offset']=qs['offset'](_0x1e33bf[_0x954c('0x2f')]['offset']);}return _0x52a238[_0x954c('0x7e')](_0x730798);}})[_0x954c('0x21')](function(_0x3c48e1){if(_0x3c48e1){return _0x3c48e1?{'count':_0x17a5e6,'rows':_0x3c48e1}:null;}})[_0x954c('0x21')](respondWithResult(_0x28ad7b,null))[_0x954c('0x45')](handleError(_0x28ad7b,null));};exports[_0x954c('0x7f')]=function(_0x290179,_0x2d9523,_0x1ebb44){var _0x482448,_0x229c4d;return db['Campaign'][_0x954c('0x48')]({'where':{'id':_0x290179[_0x954c('0x47')]['id']}})[_0x954c('0x21')](handleEntityNotFound(_0x2d9523,null))['then'](function(_0x296ad4){if(_0x296ad4){_0x229c4d=_0x296ad4;return _0x296ad4[_0x954c('0x7f')](_0x290179[_0x954c('0x4a')][_0x954c('0x60')],_['omit'](_0x290179['body'],['ids','id'])||{});}return null;})['spread'](function(_0xb42857){var _0x44c60b;_0x482448=_0xb42857||[];var _0x4e4410=[];if(_0xb42857){for(var _0x13b6e8=0x0;_0x13b6e8<_0xb42857[_0x954c('0x35')];_0x13b6e8+=0x1){var _0x568b2f=_0xb42857[_0x13b6e8]['get']({'plain':!![]});_0x44c60b=squel['insert']()[_0x954c('0x65')](_0x954c('0x80'))[_0x954c('0x67')]([_0x954c('0x6b'),_0x954c('0x68'),'ListId',_0x954c('0x56'),_0x954c('0x52'),_0x954c('0x53')],squel[_0x954c('0x69')]()[_0x954c('0x6a')](_0x954c('0x6b'),_0x954c('0x6b'))[_0x954c('0x6a')]('id',_0x954c('0x68'))[_0x954c('0x6a')](_0x568b2f['CmListId'][_0x954c('0x6e')](),_0x954c('0x6f'))[_0x954c('0x6a')](_0x290179[_0x954c('0x47')]['id'][_0x954c('0x6e')](),_0x954c('0x56'))[_0x954c('0x6a')](_0x954c('0x6c'),'createdAt')['field'](_0x954c('0x6c'),'updatedAt')[_0x954c('0x75')](_0x954c('0x70'))['where'](_0x954c('0x7a'))[_0x954c('0x3e')](_0x954c('0x71'),_0x568b2f[_0x954c('0x6d')][_0x954c('0x6e')]())['where'](_0x954c('0x72')))[_0x954c('0x6e')]();_0x4e4410[_0x954c('0x81')](db[_0x954c('0x7b')][_0x954c('0x2f')](_0x44c60b));}return BPromise[_0x954c('0x7c')](_0x4e4410);}})[_0x954c('0x21')](function(){return _0x482448;})[_0x954c('0x21')](respondWithResult(_0x2d9523,null))[_0x954c('0x45')](handleError(_0x2d9523,null));};exports[_0x954c('0x82')]=function(_0x4bb9bd,_0x3e9cd9,_0x468137){return db['Campaign'][_0x954c('0x48')]({'where':{'id':_0x4bb9bd['params']['id']}})['then'](handleEntityNotFound(_0x3e9cd9,null))[_0x954c('0x21')](function(_0x3bc978){if(_0x3bc978){return _0x3bc978[_0x954c('0x82')](_0x4bb9bd[_0x954c('0x2f')]['ids']);}})[_0x954c('0x21')](function(_0x1cdd8f){if(_0x1cdd8f){return db[_0x954c('0x5c')][_0x954c('0x22')]({'where':{'ListId':_0x4bb9bd[_0x954c('0x2f')]['ids'],'CampaignId':_0x4bb9bd[_0x954c('0x47')]['id']}})['then'](function(){return _0x1cdd8f;});}})[_0x954c('0x21')](respondWithStatusCode(_0x3e9cd9,null))[_0x954c('0x45')](handleError(_0x3e9cd9,null));};
\ No newline at end of file
index b684cee..5d6963c 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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'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 _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x458a20,_0x206f85){var _0x3cce8a=function(_0x41b460){while(--_0x41b460){_0x458a20['push'](_0x458a20['shift']());}};_0x3cce8a(++_0x206f85);}(_0x7a54,0x106));var _0x47a5=function(_0x36152b,_0x2e3dcf){_0x36152b=_0x36152b-0x0;var _0x14c47f=_0x7a54[_0x36152b];return _0x14c47f;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6ebdfa7..2a59272 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24a6=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetCampaign','findAll','options','where','limit','include','map','attributes','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x12c849,_0x1f4e64){var _0x5c2143=function(_0x3faef6){while(--_0x3faef6){_0x12c849['push'](_0x12c849['shift']());}};_0x5c2143(++_0x1f4e64);}(_0x24a6,0x14f));var _0x624a=function(_0x16db75,_0x260583){_0x16db75=_0x16db75-0x0;var _0x1775b8=_0x24a6[_0x16db75];return _0x1775b8;};'use strict';var _=require(_0x624a('0x0'));var util=require('util');var moment=require(_0x624a('0x1'));var BPromise=require(_0x624a('0x2'));var rs=require(_0x624a('0x3'));var fs=require('fs');var Redis=require(_0x624a('0x4'));var db=require(_0x624a('0x5'))['db'];var utils=require(_0x624a('0x6'));var logger=require(_0x624a('0x7'))(_0x624a('0x8'));var config=require(_0x624a('0x9'));var jayson=require(_0x624a('0xa'));var client=jayson[_0x624a('0xb')][_0x624a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1af370,_0x3b0720,_0x58243){return new BPromise(function(_0x40cb85,_0x159187){return client[_0x624a('0xd')](_0x1af370,_0x58243)[_0x624a('0xe')](function(_0x159240){logger[_0x624a('0xf')](_0x624a('0x10'),_0x3b0720,_0x624a('0x11'));logger['debug']('Campaign,\x20%s,\x20%s,\x20%s',_0x3b0720,_0x624a('0x11'),JSON[_0x624a('0x12')](_0x159240));if(_0x159240[_0x624a('0x13')]){if(_0x159240['error'][_0x624a('0x14')]===0x1f4){logger[_0x624a('0x13')]('Campaign,\x20%s,\x20%s',_0x3b0720,_0x159240['error']['message']);return _0x159187(_0x159240[_0x624a('0x13')]['message']);}logger[_0x624a('0x13')](_0x624a('0x10'),_0x3b0720,_0x159240[_0x624a('0x13')][_0x624a('0x15')]);return _0x40cb85(_0x159240['error'][_0x624a('0x15')]);}else{logger['info'](_0x624a('0x10'),_0x3b0720,_0x624a('0x11'));_0x40cb85(_0x159240['result'][_0x624a('0x15')]);}})[_0x624a('0x16')](function(_0x3b6414){logger[_0x624a('0x13')](_0x624a('0x10'),_0x3b0720,_0x3b6414);_0x159187(_0x3b6414);});});}exports[_0x624a('0x17')]=function(_0x364867){var _0x32d6a0=this;return new Promise(function(_0x35342c,_0x4721ac){return db['Campaign'][_0x624a('0x18')]({'raw':_0x364867['options']?_0x364867[_0x624a('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x364867[_0x624a('0x19')]?_0x364867[_0x624a('0x19')][_0x624a('0x1a')]||null:null,'attributes':_0x364867[_0x624a('0x19')]?_0x364867[_0x624a('0x19')]['attributes']||null:null,'limit':_0x364867[_0x624a('0x19')]?_0x364867[_0x624a('0x19')][_0x624a('0x1b')]||null:null,'include':_0x364867[_0x624a('0x19')]?_0x364867['options'][_0x624a('0x1c')]?_[_0x624a('0x1d')](_0x364867[_0x624a('0x19')]['include'],function(_0x4aee03){return{'model':db[_0x4aee03['model']],'as':_0x4aee03['as'],'attributes':_0x4aee03[_0x624a('0x1e')],'include':_0x4aee03[_0x624a('0x1c')]?_[_0x624a('0x1d')](_0x4aee03[_0x624a('0x1c')],function(_0x51a817){return{'model':db[_0x51a817['model']],'as':_0x51a817['as'],'attributes':_0x51a817[_0x624a('0x1e')],'include':_0x51a817[_0x624a('0x1c')]?_['map'](_0x51a817[_0x624a('0x1c')],function(_0x19b8a6){return{'model':db[_0x19b8a6['model']],'as':_0x19b8a6['as'],'attributes':_0x19b8a6['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x41993c){logger[_0x624a('0xf')]('GetCampaign',_0x364867);logger['debug']('GetCampaign',_0x364867,JSON[_0x624a('0x12')](_0x41993c));_0x35342c(_0x41993c);})[_0x624a('0x16')](function(_0x4dab19){logger['error'](_0x624a('0x17'),_0x4dab19[_0x624a('0x15')],_0x364867);_0x4721ac(_0x32d6a0['error'](0x1f4,_0x4dab19[_0x624a('0x15')]));});});};
\ No newline at end of file
+var _0x7ae7=['raw','attributes','limit','include','map','model','debug','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','code','message','Campaign,\x20%s,\x20%s','result','catch','GetCampaign','Campaign','findAll','options'];(function(_0x82cea5,_0x358310){var _0x52ceeb=function(_0x4c925d){while(--_0x4c925d){_0x82cea5['push'](_0x82cea5['shift']());}};_0x52ceeb(++_0x358310);}(_0x7ae7,0xd9));var _0x77ae=function(_0x301e83,_0xaf5cc2){_0x301e83=_0x301e83-0x0;var _0x23b9d2=_0x7ae7[_0x301e83];return _0x23b9d2;};'use strict';var _=require(_0x77ae('0x0'));var util=require(_0x77ae('0x1'));var moment=require('moment');var BPromise=require(_0x77ae('0x2'));var rs=require(_0x77ae('0x3'));var fs=require('fs');var Redis=require(_0x77ae('0x4'));var db=require(_0x77ae('0x5'))['db'];var utils=require(_0x77ae('0x6'));var logger=require(_0x77ae('0x7'))(_0x77ae('0x8'));var config=require(_0x77ae('0x9'));var jayson=require(_0x77ae('0xa'));var client=jayson[_0x77ae('0xb')][_0x77ae('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1fcff8,_0x2c33a5,_0x56197f){return new BPromise(function(_0x131f0b,_0x43f894){return client[_0x77ae('0xd')](_0x1fcff8,_0x56197f)[_0x77ae('0xe')](function(_0x27f9df){logger[_0x77ae('0xf')]('Campaign,\x20%s,\x20%s',_0x2c33a5,_0x77ae('0x10'));logger['debug']('Campaign,\x20%s,\x20%s,\x20%s',_0x2c33a5,_0x77ae('0x10'),JSON[_0x77ae('0x11')](_0x27f9df));if(_0x27f9df[_0x77ae('0x12')]){if(_0x27f9df['error'][_0x77ae('0x13')]===0x1f4){logger[_0x77ae('0x12')]('Campaign,\x20%s,\x20%s',_0x2c33a5,_0x27f9df[_0x77ae('0x12')][_0x77ae('0x14')]);return _0x43f894(_0x27f9df[_0x77ae('0x12')]['message']);}logger['error'](_0x77ae('0x15'),_0x2c33a5,_0x27f9df[_0x77ae('0x12')][_0x77ae('0x14')]);return _0x131f0b(_0x27f9df[_0x77ae('0x12')][_0x77ae('0x14')]);}else{logger[_0x77ae('0xf')]('Campaign,\x20%s,\x20%s',_0x2c33a5,'request\x20sent');_0x131f0b(_0x27f9df[_0x77ae('0x16')][_0x77ae('0x14')]);}})[_0x77ae('0x17')](function(_0x5af6b1){logger[_0x77ae('0x12')](_0x77ae('0x15'),_0x2c33a5,_0x5af6b1);_0x43f894(_0x5af6b1);});});}exports[_0x77ae('0x18')]=function(_0x1e520e){var _0x10cc1b=this;return new Promise(function(_0x5e4f9c,_0x4b524b){return db[_0x77ae('0x19')][_0x77ae('0x1a')]({'raw':_0x1e520e[_0x77ae('0x1b')]?_0x1e520e[_0x77ae('0x1b')][_0x77ae('0x1c')]===undefined?!![]:![]:!![],'where':_0x1e520e[_0x77ae('0x1b')]?_0x1e520e['options']['where']||null:null,'attributes':_0x1e520e[_0x77ae('0x1b')]?_0x1e520e['options'][_0x77ae('0x1d')]||null:null,'limit':_0x1e520e[_0x77ae('0x1b')]?_0x1e520e[_0x77ae('0x1b')][_0x77ae('0x1e')]||null:null,'include':_0x1e520e[_0x77ae('0x1b')]?_0x1e520e[_0x77ae('0x1b')]['include']?_['map'](_0x1e520e['options'][_0x77ae('0x1f')],function(_0x199838){return{'model':db[_0x199838['model']],'as':_0x199838['as'],'attributes':_0x199838['attributes'],'include':_0x199838[_0x77ae('0x1f')]?_[_0x77ae('0x20')](_0x199838[_0x77ae('0x1f')],function(_0x519798){return{'model':db[_0x519798[_0x77ae('0x21')]],'as':_0x519798['as'],'attributes':_0x519798['attributes'],'include':_0x519798[_0x77ae('0x1f')]?_[_0x77ae('0x20')](_0x519798[_0x77ae('0x1f')],function(_0x187698){return{'model':db[_0x187698['model']],'as':_0x187698['as'],'attributes':_0x187698['attributes']};}):[]};}):[]};}):[]:[]})[_0x77ae('0xe')](function(_0x167025){logger[_0x77ae('0xf')]('GetCampaign',_0x1e520e);logger[_0x77ae('0x22')]('GetCampaign',_0x1e520e,JSON[_0x77ae('0x11')](_0x167025));_0x5e4f9c(_0x167025);})['catch'](function(_0xaca6b0){logger['error'](_0x77ae('0x18'),_0xaca6b0[_0x77ae('0x14')],_0x1e520e);_0x4b524b(_0x10cc1b[_0x77ae('0x12')](0x1f4,_0xaca6b0['message']));});});};
\ No newline at end of file
index 15e5a8f..fd37664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12ee=['/:id/hopper_black','getHopperBlacks','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','/:id/lists','/:id','update','destroy','delete','removeLists','removeBlackLists','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals'];(function(_0x1a0b89,_0x4eaf8d){var _0x864ec7=function(_0x5136d8){while(--_0x5136d8){_0x1a0b89['push'](_0x1a0b89['shift']());}};_0x864ec7(++_0x4eaf8d);}(_0x12ee,0x1a3));var _0xe12e=function(_0x1e0584,_0xf49257){_0x1e0584=_0x1e0584-0x0;var _0x2472fa=_0x12ee[_0x1e0584];return _0x2472fa;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe12e('0x0'));var timeout=require(_0xe12e('0x1'));var express=require('express');var router=express[_0xe12e('0x2')]();var fs_extra=require(_0xe12e('0x3'));var auth=require(_0xe12e('0x4'));var interaction=require(_0xe12e('0x5'));var config=require('../../config/environment');var controller=require('./campaign.controller');router[_0xe12e('0x6')]('/',auth[_0xe12e('0x7')](),controller[_0xe12e('0x8')]);router[_0xe12e('0x6')]('/:id',auth[_0xe12e('0x7')](),controller[_0xe12e('0x9')]);router[_0xe12e('0x6')](_0xe12e('0xa'),auth[_0xe12e('0x7')](),controller[_0xe12e('0xb')]);router['get'](_0xe12e('0xc'),auth[_0xe12e('0x7')](),controller[_0xe12e('0xd')]);router[_0xe12e('0x6')]('/:id/hopper_finals',auth[_0xe12e('0x7')](),controller[_0xe12e('0xe')]);router[_0xe12e('0x6')](_0xe12e('0xf'),auth[_0xe12e('0x7')](),controller[_0xe12e('0x10')]);router[_0xe12e('0x6')]('/:id/lists',auth[_0xe12e('0x7')](),controller[_0xe12e('0x11')]);router[_0xe12e('0x6')](_0xe12e('0x12'),auth['isAuthenticated'](),controller[_0xe12e('0x13')]);router[_0xe12e('0x14')]('/',auth['isAuthenticated'](),controller[_0xe12e('0x15')]);router['post'](_0xe12e('0x16'),auth[_0xe12e('0x7')](),controller['clone']);router['post'](_0xe12e('0x17'),auth[_0xe12e('0x7')](),controller['addLists']);router[_0xe12e('0x14')](_0xe12e('0x12'),auth[_0xe12e('0x7')](),controller['addBlackLists']);router['put'](_0xe12e('0x18'),auth[_0xe12e('0x7')](),controller[_0xe12e('0x19')]);router['delete'](_0xe12e('0x18'),auth[_0xe12e('0x7')](),controller[_0xe12e('0x1a')]);router[_0xe12e('0x1b')](_0xe12e('0x17'),auth['isAuthenticated'](),controller[_0xe12e('0x1c')]);router[_0xe12e('0x1b')](_0xe12e('0x12'),auth[_0xe12e('0x7')](),controller[_0xe12e('0x1d')]);module[_0xe12e('0x1e')]=router;
\ No newline at end of file
+var _0x23a8=['put','/:id','update','delete','removeLists','exports','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./campaign.controller','get','index','isAuthenticated','show','/:id/hoppers','/:id/hopper_histories','getHopperFinals','/:id/hopper_black','getHopperBlacks','getLists','/:id/blacklists','getBlackLists','post','/:id/clone','clone','/:id/lists','addLists'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x23a8,0xd8));var _0x823a=function(_0x2605c3,_0x257859){_0x2605c3=_0x2605c3-0x0;var _0x7e66f7=_0x23a8[_0x2605c3];return _0x7e66f7;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x823a('0x0'));var timeout=require(_0x823a('0x1'));var express=require(_0x823a('0x2'));var router=express['Router']();var fs_extra=require(_0x823a('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x823a('0x4'));var config=require(_0x823a('0x5'));var controller=require(_0x823a('0x6'));router[_0x823a('0x7')]('/',auth['isAuthenticated'](),controller[_0x823a('0x8')]);router[_0x823a('0x7')]('/:id',auth[_0x823a('0x9')](),controller[_0x823a('0xa')]);router[_0x823a('0x7')](_0x823a('0xb'),auth['isAuthenticated'](),controller['getHoppers']);router['get'](_0x823a('0xc'),auth[_0x823a('0x9')](),controller['getHopperHistories']);router['get']('/:id/hopper_finals',auth[_0x823a('0x9')](),controller[_0x823a('0xd')]);router[_0x823a('0x7')](_0x823a('0xe'),auth['isAuthenticated'](),controller[_0x823a('0xf')]);router[_0x823a('0x7')]('/:id/lists',auth[_0x823a('0x9')](),controller[_0x823a('0x10')]);router[_0x823a('0x7')](_0x823a('0x11'),auth[_0x823a('0x9')](),controller[_0x823a('0x12')]);router[_0x823a('0x13')]('/',auth[_0x823a('0x9')](),controller['create']);router[_0x823a('0x13')](_0x823a('0x14'),auth[_0x823a('0x9')](),controller[_0x823a('0x15')]);router[_0x823a('0x13')](_0x823a('0x16'),auth[_0x823a('0x9')](),controller[_0x823a('0x17')]);router[_0x823a('0x13')](_0x823a('0x11'),auth[_0x823a('0x9')](),controller['addBlackLists']);router[_0x823a('0x18')](_0x823a('0x19'),auth['isAuthenticated'](),controller[_0x823a('0x1a')]);router[_0x823a('0x1b')](_0x823a('0x19'),auth[_0x823a('0x9')](),controller['destroy']);router['delete'](_0x823a('0x16'),auth[_0x823a('0x9')](),controller[_0x823a('0x1c')]);router[_0x823a('0x1b')](_0x823a('0x11'),auth[_0x823a('0x9')](),controller['removeBlackLists']);module[_0x823a('0x1d')]=router;
\ No newline at end of file
index 1934d77..def0e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd09=['exports','TEXT','STRING','VIRTUAL','getDataValue','key','sequelize'];(function(_0x3f9fb7,_0x503086){var _0x52f1db=function(_0x24357d){while(--_0x24357d){_0x3f9fb7['push'](_0x3f9fb7['shift']());}};_0x52f1db(++_0x503086);}(_0xfd09,0x13a));var _0x9fd0=function(_0x300860,_0x509371){_0x300860=_0x300860-0x0;var _0x2094ad=_0xfd09[_0x300860];return _0x2094ad;};'use strict';var Sequelize=require(_0x9fd0('0x0'));module[_0x9fd0('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x9fd0('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x9fd0('0x3')]},'name':{'type':Sequelize[_0x9fd0('0x4')],'get':function(){return this[_0x9fd0('0x5')](_0x9fd0('0x6'));}}};
\ No newline at end of file
+var _0xefb1=['STRING','TEXT','key','sequelize','exports'];(function(_0x1e11e6,_0x4f32ff){var _0x409bd8=function(_0x5584ce){while(--_0x5584ce){_0x1e11e6['push'](_0x1e11e6['shift']());}};_0x409bd8(++_0x4f32ff);}(_0xefb1,0x184));var _0x1efb=function(_0x47c008,_0x3cba1b){_0x47c008=_0x47c008-0x0;var _0x187b07=_0xefb1[_0x47c008];return _0x187b07;};'use strict';var Sequelize=require(_0x1efb('0x0'));module[_0x1efb('0x1')]={'key':{'type':Sequelize[_0x1efb('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x1efb('0x3')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0x1efb('0x4'));}}};
\ No newline at end of file
index 419c2e2..f3efded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dea=['undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','UserProfileResource','error','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','where','filter','merge','CannedAnswer','includeAll','include','findAll','catch','options','body','find','params','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','CannedAnswers','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset'];(function(_0x1a8adc,_0x2e3c88){var _0x53f272=function(_0x16dce9){while(--_0x16dce9){_0x1a8adc['push'](_0x1a8adc['shift']());}};_0x53f272(++_0x2e3c88);}(_0x4dea,0xe1));var _0xa4de=function(_0x4907d4,_0xac34f2){_0x4907d4=_0x4907d4-0x0;var _0x5d62b7=_0x4dea[_0x4907d4];return _0x5d62b7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa4de('0x0'));var zipdir=require(_0xa4de('0x1'));var jsonpatch=require(_0xa4de('0x2'));var rp=require(_0xa4de('0x3'));var moment=require(_0xa4de('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa4de('0x5'));var util=require(_0xa4de('0x6'));var path=require(_0xa4de('0x7'));var sox=require(_0xa4de('0x8'));var csv=require(_0xa4de('0x9'));var ejs=require(_0xa4de('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa4de('0xb'));var deskjs=require(_0xa4de('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa4de('0xd'));var Papa=require(_0xa4de('0xe'));var Redis=require(_0xa4de('0xf'));var authService=require(_0xa4de('0x10'));var qs=require(_0xa4de('0x11'));var as=require(_0xa4de('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa4de('0x13'))('api');var utils=require(_0xa4de('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa4de('0x15'));var db=require(_0xa4de('0x16'))['db'];function respondWithStatusCode(_0x2ad0a2,_0x186b76){_0x186b76=_0x186b76||0xcc;return function(_0x3c6def){if(_0x3c6def){return _0x2ad0a2[_0xa4de('0x17')](_0x186b76);}return _0x2ad0a2[_0xa4de('0x18')](_0x186b76)[_0xa4de('0x19')]();};}function respondWithResult(_0x3828eb,_0x4d41fa){_0x4d41fa=_0x4d41fa||0xc8;return function(_0x1ababe){if(_0x1ababe){return _0x3828eb[_0xa4de('0x18')](_0x4d41fa)['json'](_0x1ababe);}};}function respondWithFilteredResult(_0x564d63,_0xb36759){return function(_0x4cdb8b){if(_0x4cdb8b){var _0x256aa2=typeof _0xb36759[_0xa4de('0x1a')]===_0xa4de('0x1b')&&typeof _0xb36759[_0xa4de('0x1c')]===_0xa4de('0x1b');var _0x33a9b3=_0x4cdb8b[_0xa4de('0x1d')];var _0x15e385=_0x256aa2?0x0:_0xb36759[_0xa4de('0x1a')];var _0x1a887a=_0x256aa2?_0x4cdb8b[_0xa4de('0x1d')]:_0xb36759[_0xa4de('0x1a')]+_0xb36759[_0xa4de('0x1c')];var _0x2cd6f1;if(_0x1a887a>=_0x33a9b3){_0x1a887a=_0x33a9b3;_0x2cd6f1=0xc8;}else{_0x2cd6f1=0xce;}_0x564d63[_0xa4de('0x18')](_0x2cd6f1);return _0x564d63[_0xa4de('0x1e')](_0xa4de('0x1f'),_0x15e385+'-'+_0x1a887a+'/'+_0x33a9b3)[_0xa4de('0x20')](_0x4cdb8b);}return null;};}function patchUpdates(_0x3bf05c){return function(_0x4b5c75){try{jsonpatch[_0xa4de('0x21')](_0x4b5c75,_0x3bf05c,!![]);}catch(_0x103887){return BPromise[_0xa4de('0x22')](_0x103887);}return _0x4b5c75[_0xa4de('0x23')]();};}function saveUpdates(_0x9d8129,_0x5c0bc9){return function(_0x2aae5e){if(_0x2aae5e){return _0x2aae5e[_0xa4de('0x24')](_0x9d8129)[_0xa4de('0x25')](function(_0x2a308e){return _0x2a308e;});}return null;};}function removeEntity(_0x53ac3d,_0xd73509){return function(_0x147f51){if(_0x147f51){return _0x147f51[_0xa4de('0x26')]()[_0xa4de('0x25')](function(){var _0xb1f316=_0x147f51[_0xa4de('0x27')]({'plain':!![]});var _0x26837d='CannedAnswers';return db[_0xa4de('0x28')][_0xa4de('0x26')]({'where':{'type':_0x26837d,'resourceId':_0xb1f316['id']}})['then'](function(){return _0x147f51;});})[_0xa4de('0x25')](function(){_0x53ac3d[_0xa4de('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d524e,_0x162ada){return function(_0x2ef14d){if(!_0x2ef14d){_0x4d524e[_0xa4de('0x17')](0x194);}return _0x2ef14d;};}function handleError(_0x1cf694,_0x2e0493){_0x2e0493=_0x2e0493||0x1f4;return function(_0x3fe651){logger[_0xa4de('0x29')](_0x3fe651['stack']);if(_0x3fe651[_0xa4de('0x2a')]){delete _0x3fe651['name'];}_0x1cf694['status'](_0x2e0493)[_0xa4de('0x2b')](_0x3fe651);};}exports[_0xa4de('0x2c')]=function(_0x46a219,_0x130863){var _0x5eac93={},_0x3fee14={},_0x177241={'count':0x0,'rows':[]};var _0x244f9f=_[_0xa4de('0x2d')](db['CannedAnswer'][_0xa4de('0x2e')],function(_0xe1e4b7){return{'name':_0xe1e4b7[_0xa4de('0x2f')],'type':_0xe1e4b7['type'][_0xa4de('0x30')]};});_0x3fee14[_0xa4de('0x31')]=_[_0xa4de('0x2d')](_0x244f9f,'name');_0x3fee14['query']=_[_0xa4de('0x32')](_0x46a219[_0xa4de('0x33')]);_0x3fee14[_0xa4de('0x34')]=_[_0xa4de('0x35')](_0x3fee14[_0xa4de('0x31')],_0x3fee14[_0xa4de('0x33')]);_0x5eac93['attributes']=_['intersection'](_0x3fee14[_0xa4de('0x31')],qs[_0xa4de('0x36')](_0x46a219[_0xa4de('0x33')]['fields']));_0x5eac93['attributes']=_0x5eac93['attributes']['length']?_0x5eac93[_0xa4de('0x37')]:_0x3fee14['model'];if(!_0x46a219[_0xa4de('0x33')][_0xa4de('0x38')](_0xa4de('0x39'))){_0x5eac93[_0xa4de('0x1c')]=qs[_0xa4de('0x1c')](_0x46a219[_0xa4de('0x33')][_0xa4de('0x1c')]);_0x5eac93['offset']=qs[_0xa4de('0x1a')](_0x46a219[_0xa4de('0x33')][_0xa4de('0x1a')]);}_0x5eac93[_0xa4de('0x3a')]=qs['sort'](_0x46a219[_0xa4de('0x33')]['sort']);_0x5eac93[_0xa4de('0x3b')]=qs[_0xa4de('0x34')](_['pick'](_0x46a219['query'],_0x3fee14[_0xa4de('0x34')]),_0x244f9f);if(_0x46a219[_0xa4de('0x33')][_0xa4de('0x3c')]){_0x5eac93[_0xa4de('0x3b')]=_[_0xa4de('0x3d')](_0x5eac93[_0xa4de('0x3b')],{'$or':[{'key':{'$like':'%'+_0x46a219[_0xa4de('0x33')][_0xa4de('0x3c')]+'%'}},{'value':{'$like':'%'+_0x46a219['query'][_0xa4de('0x3c')]+'%'}}]});}_0x5eac93=_[_0xa4de('0x3d')]({},_0x5eac93,_0x46a219['options']);var _0x58db28={'where':_0x5eac93[_0xa4de('0x3b')]};return db[_0xa4de('0x3e')][_0xa4de('0x1d')](_0x58db28)[_0xa4de('0x25')](function(_0x479397){_0x177241[_0xa4de('0x1d')]=_0x479397;if(_0x46a219[_0xa4de('0x33')][_0xa4de('0x3f')]){_0x5eac93[_0xa4de('0x40')]=[{'all':!![]}];}return db[_0xa4de('0x3e')][_0xa4de('0x41')](_0x5eac93);})[_0xa4de('0x25')](function(_0x5947da){_0x177241['rows']=_0x5947da;return _0x177241;})[_0xa4de('0x25')](respondWithFilteredResult(_0x130863,_0x5eac93))[_0xa4de('0x42')](handleError(_0x130863,null));};exports['show']=function(_0x2b9e3e,_0x5b6b73){var _0x4ee282={'raw':!![],'where':{'id':_0x2b9e3e['params']['id']}},_0x34564c={};_0x34564c['model']=_[_0xa4de('0x32')](db[_0xa4de('0x3e')][_0xa4de('0x2e')]);_0x34564c[_0xa4de('0x33')]=_[_0xa4de('0x32')](_0x2b9e3e[_0xa4de('0x33')]);_0x34564c[_0xa4de('0x34')]=_[_0xa4de('0x35')](_0x34564c[_0xa4de('0x31')],_0x34564c['query']);_0x4ee282[_0xa4de('0x37')]=_['intersection'](_0x34564c[_0xa4de('0x31')],qs[_0xa4de('0x36')](_0x2b9e3e[_0xa4de('0x33')][_0xa4de('0x36')]));_0x4ee282['attributes']=_0x4ee282[_0xa4de('0x37')]['length']?_0x4ee282['attributes']:_0x34564c[_0xa4de('0x31')];if(_0x2b9e3e[_0xa4de('0x33')][_0xa4de('0x3f')]){_0x4ee282[_0xa4de('0x40')]=[{'all':!![]}];}_0x4ee282=_[_0xa4de('0x3d')]({},_0x4ee282,_0x2b9e3e[_0xa4de('0x43')]);return db[_0xa4de('0x3e')]['find'](_0x4ee282)[_0xa4de('0x25')](handleEntityNotFound(_0x5b6b73,null))[_0xa4de('0x25')](respondWithResult(_0x5b6b73,null))[_0xa4de('0x42')](handleError(_0x5b6b73,null));};exports[_0xa4de('0x24')]=function(_0x376ac0,_0x4a1d24){if(_0x376ac0[_0xa4de('0x44')]['id']){delete _0x376ac0[_0xa4de('0x44')]['id'];}return db[_0xa4de('0x3e')][_0xa4de('0x45')]({'where':{'id':_0x376ac0[_0xa4de('0x46')]['id']}})['then'](handleEntityNotFound(_0x4a1d24,null))[_0xa4de('0x25')](saveUpdates(_0x376ac0[_0xa4de('0x44')],null))[_0xa4de('0x25')](respondWithResult(_0x4a1d24,null))[_0xa4de('0x42')](handleError(_0x4a1d24,null));};exports[_0xa4de('0x26')]=function(_0xf10fb4,_0x5971a1){return db[_0xa4de('0x3e')]['find']({'where':{'id':_0xf10fb4[_0xa4de('0x46')]['id']}})[_0xa4de('0x25')](handleEntityNotFound(_0x5971a1,null))[_0xa4de('0x25')](removeEntity(_0x5971a1,null))[_0xa4de('0x42')](handleError(_0x5971a1,null));};exports['create']=function(_0x692053,_0x5a3ae2){var _0x333b19={'key':_0x692053[_0xa4de('0x44')][_0xa4de('0x30')]};if(_0x692053[_0xa4de('0x44')]['MailAccountId']){_0x333b19['MailAccountId']=_0x692053['body'][_0xa4de('0x47')];}else if(_0x692053[_0xa4de('0x44')][_0xa4de('0x48')]){_0x333b19[_0xa4de('0x48')]=_0x692053[_0xa4de('0x44')][_0xa4de('0x48')];}else if(_0x692053[_0xa4de('0x44')][_0xa4de('0x49')]){_0x333b19[_0xa4de('0x49')]=_0x692053[_0xa4de('0x44')][_0xa4de('0x49')];}else if(_0x692053[_0xa4de('0x44')][_0xa4de('0x4a')]){_0x333b19['ChatWebsiteId']=_0x692053[_0xa4de('0x44')][_0xa4de('0x4a')];}return db[_0xa4de('0x3e')][_0xa4de('0x45')]({'where':_0x333b19})['then'](function(_0x28c580){if(_0x28c580){throw new db[(_0xa4de('0x4b'))]['ValidationError'](_0xa4de('0x4c'));}return db[_0xa4de('0x3e')]['create'](_0x692053[_0xa4de('0x44')]);})[_0xa4de('0x25')](function(_0x3a74eb){var _0x2aeab2=_0x692053['user'][_0xa4de('0x27')]({'plain':!![]});if(!_0x2aeab2)throw new Error(_0xa4de('0x4d'));if(_0x2aeab2[_0xa4de('0x4e')]==='user'){var _0x428676=_0x3a74eb[_0xa4de('0x27')]({'plain':!![]});return db[_0xa4de('0x4f')][_0xa4de('0x45')]({'where':{'name':_0xa4de('0x50'),'userProfileId':_0x2aeab2['userProfileId']},'raw':!![]})['then'](function(_0x50980c){if(_0x50980c&&_0x50980c[_0xa4de('0x51')]===0x0){return db[_0xa4de('0x28')][_0xa4de('0x52')]({'name':_0x428676['name'],'resourceId':_0x428676['id'],'type':_0x50980c[_0xa4de('0x2a')],'sectionId':_0x50980c['id']},{})[_0xa4de('0x25')](function(){return _0x3a74eb;});}else{return _0x3a74eb;}})[_0xa4de('0x42')](function(_0x111904){logger[_0xa4de('0x29')](_0xa4de('0x53'),_0x111904);throw _0x111904;});}return _0x3a74eb;})[_0xa4de('0x25')](respondWithResult(_0x5a3ae2,0xc9))[_0xa4de('0x42')](handleError(_0x5a3ae2,null));};
\ No newline at end of file
+var _0xf7e9=['autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','ejs','lodash','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','apply','reject','save','update','destroy','then','get','CannedAnswers','UserProfileResource','name','send','index','CannedAnswer','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','order','pick','filter','where','merge','options','count','includeAll','findAll','rows','catch','show','params','include','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','The\x20inserted\x20key\x20already\x20exists.','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId'];(function(_0x49c844,_0x2f9aeb){var _0xa6dc90=function(_0xa8533f){while(--_0xa8533f){_0x49c844['push'](_0x49c844['shift']());}};_0xa6dc90(++_0x2f9aeb);}(_0xf7e9,0x1dd));var _0x9f7e=function(_0x576266,_0x4002b0){_0x576266=_0x576266-0x0;var _0x18234f=_0xf7e9[_0x576266];return _0x18234f;};'use strict';var emlformat=require(_0x9f7e('0x0'));var rimraf=require(_0x9f7e('0x1'));var zipdir=require(_0x9f7e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9f7e('0x3'));var moment=require('moment');var BPromise=require(_0x9f7e('0x4'));var Mustache=require('mustache');var util=require(_0x9f7e('0x5'));var path=require(_0x9f7e('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9f7e('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9f7e('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9f7e('0x9'));var querystring=require(_0x9f7e('0xa'));var Papa=require('papaparse');var Redis=require(_0x9f7e('0xb'));var authService=require(_0x9f7e('0xc'));var qs=require(_0x9f7e('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9f7e('0xe'));var logger=require(_0x9f7e('0xf'))('api');var utils=require(_0x9f7e('0x10'));var config=require(_0x9f7e('0x11'));var licenseUtil=require(_0x9f7e('0x12'));var db=require(_0x9f7e('0x13'))['db'];function respondWithStatusCode(_0x1a3480,_0x2cc07e){_0x2cc07e=_0x2cc07e||0xcc;return function(_0x5d2291){if(_0x5d2291){return _0x1a3480['sendStatus'](_0x2cc07e);}return _0x1a3480[_0x9f7e('0x14')](_0x2cc07e)[_0x9f7e('0x15')]();};}function respondWithResult(_0x921260,_0x1ed50a){_0x1ed50a=_0x1ed50a||0xc8;return function(_0x18e656){if(_0x18e656){return _0x921260[_0x9f7e('0x14')](_0x1ed50a)[_0x9f7e('0x16')](_0x18e656);}};}function respondWithFilteredResult(_0x12f5fb,_0x2c2bbc){return function(_0x3a49c2){if(_0x3a49c2){var _0x1d7fff=typeof _0x2c2bbc[_0x9f7e('0x17')]===_0x9f7e('0x18')&&typeof _0x2c2bbc[_0x9f7e('0x19')]===_0x9f7e('0x18');var _0x2a7662=_0x3a49c2['count'];var _0x25d249=_0x1d7fff?0x0:_0x2c2bbc['offset'];var _0x2c7eac=_0x1d7fff?_0x3a49c2['count']:_0x2c2bbc[_0x9f7e('0x17')]+_0x2c2bbc[_0x9f7e('0x19')];var _0x5983df;if(_0x2c7eac>=_0x2a7662){_0x2c7eac=_0x2a7662;_0x5983df=0xc8;}else{_0x5983df=0xce;}_0x12f5fb['status'](_0x5983df);return _0x12f5fb['set']('Content-Range',_0x25d249+'-'+_0x2c7eac+'/'+_0x2a7662)[_0x9f7e('0x16')](_0x3a49c2);}return null;};}function patchUpdates(_0xa658d5){return function(_0x35f8bb){try{jsonpatch[_0x9f7e('0x1a')](_0x35f8bb,_0xa658d5,!![]);}catch(_0x11b418){return BPromise[_0x9f7e('0x1b')](_0x11b418);}return _0x35f8bb[_0x9f7e('0x1c')]();};}function saveUpdates(_0x51a85c,_0x396b1d){return function(_0x15ed5b){if(_0x15ed5b){return _0x15ed5b[_0x9f7e('0x1d')](_0x51a85c)['then'](function(_0x5268a6){return _0x5268a6;});}return null;};}function removeEntity(_0x1948f1,_0x375d59){return function(_0x486541){if(_0x486541){return _0x486541[_0x9f7e('0x1e')]()[_0x9f7e('0x1f')](function(){var _0x2b1f6f=_0x486541[_0x9f7e('0x20')]({'plain':!![]});var _0x496cee=_0x9f7e('0x21');return db[_0x9f7e('0x22')]['destroy']({'where':{'type':_0x496cee,'resourceId':_0x2b1f6f['id']}})[_0x9f7e('0x1f')](function(){return _0x486541;});})[_0x9f7e('0x1f')](function(){_0x1948f1[_0x9f7e('0x14')](0xcc)[_0x9f7e('0x15')]();});}};}function handleEntityNotFound(_0x3d1b3a,_0x349e39){return function(_0x40a8da){if(!_0x40a8da){_0x3d1b3a['sendStatus'](0x194);}return _0x40a8da;};}function handleError(_0x20c322,_0x494649){_0x494649=_0x494649||0x1f4;return function(_0xfc6897){logger['error'](_0xfc6897['stack']);if(_0xfc6897[_0x9f7e('0x23')]){delete _0xfc6897['name'];}_0x20c322[_0x9f7e('0x14')](_0x494649)[_0x9f7e('0x24')](_0xfc6897);};}exports[_0x9f7e('0x25')]=function(_0x22c5ae,_0x3a5a63){var _0x29615d={},_0x28aeaf={},_0x32e04c={'count':0x0,'rows':[]};var _0x14c45c=_['map'](db[_0x9f7e('0x26')][_0x9f7e('0x27')],function(_0x41e188){return{'name':_0x41e188[_0x9f7e('0x28')],'type':_0x41e188[_0x9f7e('0x29')][_0x9f7e('0x2a')]};});_0x28aeaf[_0x9f7e('0x2b')]=_['map'](_0x14c45c,_0x9f7e('0x23'));_0x28aeaf['query']=_[_0x9f7e('0x2c')](_0x22c5ae[_0x9f7e('0x2d')]);_0x28aeaf[_0x9f7e('0x2e')]=_['intersection'](_0x28aeaf[_0x9f7e('0x2b')],_0x28aeaf[_0x9f7e('0x2d')]);_0x29615d['attributes']=_[_0x9f7e('0x2f')](_0x28aeaf[_0x9f7e('0x2b')],qs['fields'](_0x22c5ae[_0x9f7e('0x2d')][_0x9f7e('0x30')]));_0x29615d[_0x9f7e('0x31')]=_0x29615d[_0x9f7e('0x31')][_0x9f7e('0x32')]?_0x29615d[_0x9f7e('0x31')]:_0x28aeaf[_0x9f7e('0x2b')];if(!_0x22c5ae[_0x9f7e('0x2d')]['hasOwnProperty']('nolimit')){_0x29615d[_0x9f7e('0x19')]=qs[_0x9f7e('0x19')](_0x22c5ae[_0x9f7e('0x2d')][_0x9f7e('0x19')]);_0x29615d[_0x9f7e('0x17')]=qs[_0x9f7e('0x17')](_0x22c5ae['query'][_0x9f7e('0x17')]);}_0x29615d[_0x9f7e('0x33')]=qs['sort'](_0x22c5ae[_0x9f7e('0x2d')]['sort']);_0x29615d['where']=qs['filters'](_[_0x9f7e('0x34')](_0x22c5ae[_0x9f7e('0x2d')],_0x28aeaf[_0x9f7e('0x2e')]),_0x14c45c);if(_0x22c5ae[_0x9f7e('0x2d')][_0x9f7e('0x35')]){_0x29615d[_0x9f7e('0x36')]=_[_0x9f7e('0x37')](_0x29615d[_0x9f7e('0x36')],{'$or':[{'key':{'$like':'%'+_0x22c5ae[_0x9f7e('0x2d')]['filter']+'%'}},{'value':{'$like':'%'+_0x22c5ae[_0x9f7e('0x2d')][_0x9f7e('0x35')]+'%'}}]});}_0x29615d=_[_0x9f7e('0x37')]({},_0x29615d,_0x22c5ae[_0x9f7e('0x38')]);var _0x1cb9ae={'where':_0x29615d[_0x9f7e('0x36')]};return db['CannedAnswer']['count'](_0x1cb9ae)['then'](function(_0x1ac5f0){_0x32e04c[_0x9f7e('0x39')]=_0x1ac5f0;if(_0x22c5ae['query'][_0x9f7e('0x3a')]){_0x29615d['include']=[{'all':!![]}];}return db[_0x9f7e('0x26')][_0x9f7e('0x3b')](_0x29615d);})[_0x9f7e('0x1f')](function(_0xab657d){_0x32e04c[_0x9f7e('0x3c')]=_0xab657d;return _0x32e04c;})['then'](respondWithFilteredResult(_0x3a5a63,_0x29615d))[_0x9f7e('0x3d')](handleError(_0x3a5a63,null));};exports[_0x9f7e('0x3e')]=function(_0x3c8f61,_0x8eaf15){var _0x2facb9={'raw':!![],'where':{'id':_0x3c8f61[_0x9f7e('0x3f')]['id']}},_0x16a931={};_0x16a931['model']=_[_0x9f7e('0x2c')](db[_0x9f7e('0x26')][_0x9f7e('0x27')]);_0x16a931['query']=_['keys'](_0x3c8f61['query']);_0x16a931[_0x9f7e('0x2e')]=_[_0x9f7e('0x2f')](_0x16a931['model'],_0x16a931[_0x9f7e('0x2d')]);_0x2facb9['attributes']=_[_0x9f7e('0x2f')](_0x16a931[_0x9f7e('0x2b')],qs[_0x9f7e('0x30')](_0x3c8f61[_0x9f7e('0x2d')][_0x9f7e('0x30')]));_0x2facb9[_0x9f7e('0x31')]=_0x2facb9[_0x9f7e('0x31')][_0x9f7e('0x32')]?_0x2facb9['attributes']:_0x16a931[_0x9f7e('0x2b')];if(_0x3c8f61[_0x9f7e('0x2d')][_0x9f7e('0x3a')]){_0x2facb9[_0x9f7e('0x40')]=[{'all':!![]}];}_0x2facb9=_[_0x9f7e('0x37')]({},_0x2facb9,_0x3c8f61[_0x9f7e('0x38')]);return db['CannedAnswer'][_0x9f7e('0x41')](_0x2facb9)[_0x9f7e('0x1f')](handleEntityNotFound(_0x8eaf15,null))[_0x9f7e('0x1f')](respondWithResult(_0x8eaf15,null))['catch'](handleError(_0x8eaf15,null));};exports[_0x9f7e('0x1d')]=function(_0x57fe22,_0x37208c){if(_0x57fe22['body']['id']){delete _0x57fe22[_0x9f7e('0x42')]['id'];}return db[_0x9f7e('0x26')][_0x9f7e('0x41')]({'where':{'id':_0x57fe22[_0x9f7e('0x3f')]['id']}})[_0x9f7e('0x1f')](handleEntityNotFound(_0x37208c,null))[_0x9f7e('0x1f')](saveUpdates(_0x57fe22[_0x9f7e('0x42')],null))['then'](respondWithResult(_0x37208c,null))[_0x9f7e('0x3d')](handleError(_0x37208c,null));};exports[_0x9f7e('0x1e')]=function(_0x530c12,_0x2d4ba7){return db[_0x9f7e('0x26')][_0x9f7e('0x41')]({'where':{'id':_0x530c12[_0x9f7e('0x3f')]['id']}})[_0x9f7e('0x1f')](handleEntityNotFound(_0x2d4ba7,null))[_0x9f7e('0x1f')](removeEntity(_0x2d4ba7,null))[_0x9f7e('0x3d')](handleError(_0x2d4ba7,null));};exports[_0x9f7e('0x43')]=function(_0x4d7c24,_0x3517be){var _0x45fa4b={'key':_0x4d7c24['body'][_0x9f7e('0x2a')]};if(_0x4d7c24[_0x9f7e('0x42')][_0x9f7e('0x44')]){_0x45fa4b[_0x9f7e('0x44')]=_0x4d7c24[_0x9f7e('0x42')]['MailAccountId'];}else if(_0x4d7c24['body'][_0x9f7e('0x45')]){_0x45fa4b[_0x9f7e('0x45')]=_0x4d7c24[_0x9f7e('0x42')][_0x9f7e('0x45')];}else if(_0x4d7c24[_0x9f7e('0x42')][_0x9f7e('0x46')]){_0x45fa4b[_0x9f7e('0x46')]=_0x4d7c24[_0x9f7e('0x42')][_0x9f7e('0x46')];}else if(_0x4d7c24[_0x9f7e('0x42')]['ChatWebsiteId']){_0x45fa4b[_0x9f7e('0x47')]=_0x4d7c24[_0x9f7e('0x42')][_0x9f7e('0x47')];}return db[_0x9f7e('0x26')]['find']({'where':_0x45fa4b})[_0x9f7e('0x1f')](function(_0x3643af){if(_0x3643af){throw new db['Sequelize']['ValidationError'](_0x9f7e('0x48'));}return db[_0x9f7e('0x26')][_0x9f7e('0x43')](_0x4d7c24['body']);})[_0x9f7e('0x1f')](function(_0x4b55cc){var _0xd7756=_0x4d7c24['user'][_0x9f7e('0x20')]({'plain':!![]});if(!_0xd7756)throw new Error(_0x9f7e('0x49'));if(_0xd7756['role']==='user'){var _0x98bb0f=_0x4b55cc[_0x9f7e('0x20')]({'plain':!![]});return db[_0x9f7e('0x4a')]['find']({'where':{'name':_0x9f7e('0x21'),'userProfileId':_0xd7756[_0x9f7e('0x4b')]},'raw':!![]})[_0x9f7e('0x1f')](function(_0x1f925b){if(_0x1f925b&&_0x1f925b[_0x9f7e('0x4c')]===0x0){return db[_0x9f7e('0x22')][_0x9f7e('0x43')]({'name':_0x98bb0f['name'],'resourceId':_0x98bb0f['id'],'type':_0x1f925b['name'],'sectionId':_0x1f925b['id']},{})['then'](function(){return _0x4b55cc;});}else{return _0x4b55cc;}})[_0x9f7e('0x3d')](function(_0x1cb86b){logger[_0x9f7e('0x4d')](_0x9f7e('0x4e'),_0x1cb86b);throw _0x1cb86b;});}return _0x4b55cc;})['then'](respondWithResult(_0x3517be,0xc9))[_0x9f7e('0x3d')](handleError(_0x3517be,null));};
\ No newline at end of file
index ab9841d..cb7cc84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ab7=['api','moment','bluebird','path','rimraf','../../config/environment','./cannedAnswer.attributes','CannedAnswer','tools_canned_answers','utf8mb4','lodash','util','../../config/logger'];(function(_0x10dc94,_0x2fed4f){var _0x4a462d=function(_0x5181bd){while(--_0x5181bd){_0x10dc94['push'](_0x10dc94['shift']());}};_0x4a462d(++_0x2fed4f);}(_0x2ab7,0xe7));var _0x72ab=function(_0x1008b7,_0x53512e){_0x1008b7=_0x1008b7-0x0;var _0x537757=_0x2ab7[_0x1008b7];return _0x537757;};'use strict';var _=require(_0x72ab('0x0'));var util=require(_0x72ab('0x1'));var logger=require(_0x72ab('0x2'))(_0x72ab('0x3'));var moment=require(_0x72ab('0x4'));var BPromise=require(_0x72ab('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x72ab('0x6'));var rimraf=require(_0x72ab('0x7'));var config=require(_0x72ab('0x8'));var attributes=require(_0x72ab('0x9'));module['exports']=function(_0x58797,_0x48d5e8){return _0x58797['define'](_0x72ab('0xa'),attributes,{'tableName':_0x72ab('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x72ab('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xb7da=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','tools_canned_answers','lodash','util'];(function(_0xccf869,_0x2556a5){var _0x21a9db=function(_0xcc4835){while(--_0xcc4835){_0xccf869['push'](_0xccf869['shift']());}};_0x21a9db(++_0x2556a5);}(_0xb7da,0x1ec));var _0xab7d=function(_0x32b993,_0x1c5989){_0x32b993=_0x32b993-0x0;var _0x482780=_0xb7da[_0x32b993];return _0x482780;};'use strict';var _=require(_0xab7d('0x0'));var util=require(_0xab7d('0x1'));var logger=require(_0xab7d('0x2'))(_0xab7d('0x3'));var moment=require(_0xab7d('0x4'));var BPromise=require(_0xab7d('0x5'));var rp=require(_0xab7d('0x6'));var fs=require('fs');var path=require(_0xab7d('0x7'));var rimraf=require(_0xab7d('0x8'));var config=require(_0xab7d('0x9'));var attributes=require(_0xab7d('0xa'));module[_0xab7d('0xb')]=function(_0x14e4be,_0x291eed){return _0x14e4be['define']('CannedAnswer',attributes,{'tableName':_0xab7d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index ea93302..67a5a9d 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(_0x10ab72,_0xa3f201){var _0xbe8a06=function(_0x293b47){while(--_0x293b47){_0x10ab72['push'](_0x10ab72['shift']());}};_0xbe8a06(++_0xa3f201);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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(_0x291743,_0x488e2a){var _0xd76621=function(_0x40a872){while(--_0x40a872){_0x291743['push'](_0x291743['shift']());}};_0xd76621(++_0x488e2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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 8d97aec..6a3afad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02dc=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/:id','isAuthenticated','post','put','update','destroy','exports','multer','util'];(function(_0xf15be4,_0x2c2591){var _0x2b6849=function(_0x544282){while(--_0x544282){_0xf15be4['push'](_0xf15be4['shift']());}};_0x2b6849(++_0x2c2591);}(_0x02dc,0x1c6));var _0xc02d=function(_0xf5c830,_0x2f134f){_0xf5c830=_0xf5c830-0x0;var _0x467687=_0x02dc[_0xf5c830];return _0x467687;};'use strict';var multer=require(_0xc02d('0x0'));var util=require(_0xc02d('0x1'));var path=require(_0xc02d('0x2'));var timeout=require(_0xc02d('0x3'));var express=require(_0xc02d('0x4'));var router=express[_0xc02d('0x5')]();var fs_extra=require(_0xc02d('0x6'));var auth=require(_0xc02d('0x7'));var interaction=require(_0xc02d('0x8'));var config=require(_0xc02d('0x9'));var controller=require('./cannedAnswer.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xc02d('0xa')]);router[_0xc02d('0xb')](_0xc02d('0xc'),auth[_0xc02d('0xd')](),controller['show']);router[_0xc02d('0xe')]('/',auth[_0xc02d('0xd')](),controller['create']);router[_0xc02d('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xc02d('0x10')]);router['delete']('/:id',auth[_0xc02d('0xd')](),controller[_0xc02d('0x11')]);module[_0xc02d('0x12')]=router;
\ No newline at end of file
+var _0x6072=['isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller'];(function(_0x477e08,_0x4403a7){var _0x4fea2c=function(_0x2a6d68){while(--_0x2a6d68){_0x477e08['push'](_0x477e08['shift']());}};_0x4fea2c(++_0x4403a7);}(_0x6072,0x1d8));var _0x2607=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x6072[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require(_0x2607('0x0'));var util=require(_0x2607('0x1'));var path=require(_0x2607('0x2'));var timeout=require(_0x2607('0x3'));var express=require(_0x2607('0x4'));var router=express[_0x2607('0x5')]();var fs_extra=require(_0x2607('0x6'));var auth=require(_0x2607('0x7'));var interaction=require(_0x2607('0x8'));var config=require(_0x2607('0x9'));var controller=require(_0x2607('0xa'));router['get']('/',auth[_0x2607('0xb')](),controller[_0x2607('0xc')]);router[_0x2607('0xd')](_0x2607('0xe'),auth[_0x2607('0xb')](),controller[_0x2607('0xf')]);router[_0x2607('0x10')]('/',auth[_0x2607('0xb')](),controller[_0x2607('0x11')]);router[_0x2607('0x12')](_0x2607('0xe'),auth['isAuthenticated'](),controller[_0x2607('0x13')]);router[_0x2607('0x14')](_0x2607('0xe'),auth[_0x2607('0xb')](),controller[_0x2607('0x15')]);module[_0x2607('0x16')]=router;
\ No newline at end of file
index 02d9ab7..09833ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1020=['sequelize','DATE','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x3740fe,_0x6c543c){var _0x55492b=function(_0x1f851f){while(--_0x1f851f){_0x3740fe['push'](_0x3740fe['shift']());}};_0x55492b(++_0x6c543c);}(_0x1020,0x1a4));var _0x0102=function(_0x562f3b,_0x4c65ae){_0x562f3b=_0x562f3b-0x0;var _0x1edd55=_0x1020[_0x562f3b];return _0x1edd55;};'use strict';var Sequelize=require(_0x0102('0x0'));module['exports']={'calldate':{'type':Sequelize[_0x0102('0x1')],'allowNull':![],'defaultValue':_0x0102('0x2')},'clid':{'type':Sequelize[_0x0102('0x3')]},'src':{'type':Sequelize[_0x0102('0x3')]},'dst':{'type':Sequelize[_0x0102('0x3')]},'dcontext':{'type':Sequelize[_0x0102('0x3')]},'channel':{'type':Sequelize[_0x0102('0x3')]},'dstchannel':{'type':Sequelize[_0x0102('0x3')]},'lastapp':{'type':Sequelize[_0x0102('0x3')]},'lastdata':{'type':Sequelize[_0x0102('0x3')]},'duration':{'type':Sequelize[_0x0102('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x0102('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x0102('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x0102('0x3')]},'userfield':{'type':Sequelize[_0x0102('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0x0102('0x3')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0x0102('0x3')]}};
\ No newline at end of file
+var _0x860a=['sequelize','exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0x860a,0x14a));var _0xa860=function(_0x55135d,_0x3ff3c8){_0x55135d=_0x55135d-0x0;var _0x1e7c0c=_0x860a[_0x55135d];return _0x1e7c0c;};'use strict';var Sequelize=require(_0xa860('0x0'));module[_0xa860('0x1')]={'calldate':{'type':Sequelize[_0xa860('0x2')],'allowNull':![],'defaultValue':_0xa860('0x3')},'clid':{'type':Sequelize[_0xa860('0x4')]},'src':{'type':Sequelize[_0xa860('0x4')]},'dst':{'type':Sequelize[_0xa860('0x4')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xa860('0x4')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0xa860('0x4')]},'lastdata':{'type':Sequelize[_0xa860('0x4')]},'duration':{'type':Sequelize[_0xa860('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0xa860('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xa860('0x4')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xa860('0x4')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0xa860('0x4')]},'peeraccount':{'type':Sequelize[_0xa860('0x4')]},'type':{'type':Sequelize[_0xa860('0x4')]},'tag':{'type':Sequelize[_0xa860('0x4')]}};
\ No newline at end of file
index 6065966..08e3673 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d9f=['util','path','sox','fs-extra','lodash','crypto','jsforce','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','apply','reject','update','then','error','stack','name','index','map','Cdr','rawAttributes','model','keys','attributes','intersection','fields','query','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','include','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache'];(function(_0x210603,_0x4adbac){var _0x1bcb7d=function(_0x2cdf89){while(--_0x2cdf89){_0x210603['push'](_0x210603['shift']());}};_0x1bcb7d(++_0x4adbac);}(_0x7d9f,0x15c));var _0xf7d9=function(_0x3fbeb7,_0x316335){_0x3fbeb7=_0x3fbeb7-0x0;var _0x4dcb89=_0x7d9f[_0x3fbeb7];return _0x4dcb89;};'use strict';var emlformat=require(_0xf7d9('0x0'));var rimraf=require(_0xf7d9('0x1'));var zipdir=require(_0xf7d9('0x2'));var jsonpatch=require(_0xf7d9('0x3'));var rp=require(_0xf7d9('0x4'));var moment=require('moment');var BPromise=require(_0xf7d9('0x5'));var Mustache=require(_0xf7d9('0x6'));var util=require(_0xf7d9('0x7'));var path=require(_0xf7d9('0x8'));var sox=require(_0xf7d9('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf7d9('0xa'));var _=require(_0xf7d9('0xb'));var squel=require('squel');var crypto=require(_0xf7d9('0xc'));var jsforce=require(_0xf7d9('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf7d9('0xe'));var querystring=require('querystring');var Papa=require(_0xf7d9('0xf'));var Redis=require(_0xf7d9('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf7d9('0x11'));var hardwareService=require(_0xf7d9('0x12'));var logger=require(_0xf7d9('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xf7d9('0x14'));var licenseUtil=require(_0xf7d9('0x15'));var db=require(_0xf7d9('0x16'))['db'];function respondWithStatusCode(_0x35e156,_0x594dfe){_0x594dfe=_0x594dfe||0xcc;return function(_0x16e680){if(_0x16e680){return _0x35e156[_0xf7d9('0x17')](_0x594dfe);}return _0x35e156[_0xf7d9('0x18')](_0x594dfe)[_0xf7d9('0x19')]();};}function respondWithResult(_0x49f766,_0x189c82){_0x189c82=_0x189c82||0xc8;return function(_0x359843){if(_0x359843){return _0x49f766[_0xf7d9('0x18')](_0x189c82)[_0xf7d9('0x1a')](_0x359843);}};}function respondWithFilteredResult(_0x5d3029,_0x405ed4){return function(_0x22ed4a){if(_0x22ed4a){var _0x341e27=typeof _0x405ed4['offset']==='undefined'&&typeof _0x405ed4[_0xf7d9('0x1b')]===_0xf7d9('0x1c');var _0xe29103=_0x22ed4a['count'];var _0x44ebd3=_0x341e27?0x0:_0x405ed4[_0xf7d9('0x1d')];var _0x5eb7c9=_0x341e27?_0x22ed4a[_0xf7d9('0x1e')]:_0x405ed4['offset']+_0x405ed4[_0xf7d9('0x1b')];var _0x1bbc77;if(_0x5eb7c9>=_0xe29103){_0x5eb7c9=_0xe29103;_0x1bbc77=0xc8;}else{_0x1bbc77=0xce;}_0x5d3029['status'](_0x1bbc77);return _0x5d3029[_0xf7d9('0x1f')](_0xf7d9('0x20'),_0x44ebd3+'-'+_0x5eb7c9+'/'+_0xe29103)[_0xf7d9('0x1a')](_0x22ed4a);}return null;};}function patchUpdates(_0x316d54){return function(_0x165160){try{jsonpatch[_0xf7d9('0x21')](_0x165160,_0x316d54,!![]);}catch(_0xd04b9d){return BPromise[_0xf7d9('0x22')](_0xd04b9d);}return _0x165160['save']();};}function saveUpdates(_0x5e96df,_0x36b974){return function(_0x4cfe93){if(_0x4cfe93){return _0x4cfe93[_0xf7d9('0x23')](_0x5e96df)[_0xf7d9('0x24')](function(_0x574b12){return _0x574b12;});}return null;};}function removeEntity(_0x8d8e48,_0x27ba8c){return function(_0x514ffa){if(_0x514ffa){return _0x514ffa['destroy']()[_0xf7d9('0x24')](function(){_0x8d8e48[_0xf7d9('0x18')](0xcc)[_0xf7d9('0x19')]();});}};}function handleEntityNotFound(_0x595556,_0x3c0b91){return function(_0x496ab7){if(!_0x496ab7){_0x595556[_0xf7d9('0x17')](0x194);}return _0x496ab7;};}function handleError(_0x3b3ea5,_0x144ae2){_0x144ae2=_0x144ae2||0x1f4;return function(_0x5b1ea5){logger[_0xf7d9('0x25')](_0x5b1ea5[_0xf7d9('0x26')]);if(_0x5b1ea5[_0xf7d9('0x27')]){delete _0x5b1ea5[_0xf7d9('0x27')];}_0x3b3ea5[_0xf7d9('0x18')](_0x144ae2)['send'](_0x5b1ea5);};}exports[_0xf7d9('0x28')]=function(_0x3847ff,_0x2b5f17){var _0x2c04c3={},_0x508b00={},_0x20315e={'count':0x0,'rows':[]};var _0x193add=_[_0xf7d9('0x29')](db[_0xf7d9('0x2a')][_0xf7d9('0x2b')],function(_0x16318f){return{'name':_0x16318f['fieldName'],'type':_0x16318f['type']['key']};});_0x508b00[_0xf7d9('0x2c')]=_['map'](_0x193add,_0xf7d9('0x27'));_0x508b00['query']=_[_0xf7d9('0x2d')](_0x3847ff['query']);_0x508b00['filters']=_['intersection'](_0x508b00[_0xf7d9('0x2c')],_0x508b00['query']);_0x2c04c3[_0xf7d9('0x2e')]=_[_0xf7d9('0x2f')](_0x508b00[_0xf7d9('0x2c')],qs[_0xf7d9('0x30')](_0x3847ff[_0xf7d9('0x31')][_0xf7d9('0x30')]));_0x2c04c3[_0xf7d9('0x2e')]=_0x2c04c3[_0xf7d9('0x2e')]['length']?_0x2c04c3[_0xf7d9('0x2e')]:_0x508b00[_0xf7d9('0x2c')];if(!_0x3847ff['query']['hasOwnProperty'](_0xf7d9('0x32'))){_0x2c04c3[_0xf7d9('0x1b')]=qs[_0xf7d9('0x1b')](_0x3847ff['query'][_0xf7d9('0x1b')]);_0x2c04c3[_0xf7d9('0x1d')]=qs[_0xf7d9('0x1d')](_0x3847ff[_0xf7d9('0x31')][_0xf7d9('0x1d')]);}_0x2c04c3[_0xf7d9('0x33')]=qs[_0xf7d9('0x34')](_0x3847ff[_0xf7d9('0x31')][_0xf7d9('0x34')]);_0x2c04c3[_0xf7d9('0x35')]=qs[_0xf7d9('0x36')](_['pick'](_0x3847ff[_0xf7d9('0x31')],_0x508b00['filters']),_0x193add);if(_0x3847ff[_0xf7d9('0x31')][_0xf7d9('0x37')]){_0x2c04c3[_0xf7d9('0x35')]=_[_0xf7d9('0x38')](_0x2c04c3['where'],{'$or':_['map'](_0x193add,function(_0x2173e2){if(_0x2173e2['type']!==_0xf7d9('0x39')){var _0xb3723c={};_0xb3723c[_0x2173e2[_0xf7d9('0x27')]]={'$like':'%'+_0x3847ff[_0xf7d9('0x31')]['filter']+'%'};return _0xb3723c;}})});}_0x2c04c3=_['merge']({},_0x2c04c3,_0x3847ff[_0xf7d9('0x3a')]);var _0x410c72={'where':_0x2c04c3[_0xf7d9('0x35')]};return db[_0xf7d9('0x2a')]['count'](_0x410c72)[_0xf7d9('0x24')](function(_0xd6d84f){_0x20315e[_0xf7d9('0x1e')]=_0xd6d84f;if(_0x3847ff[_0xf7d9('0x31')][_0xf7d9('0x3b')]){_0x2c04c3['include']=[{'all':!![]}];}return db[_0xf7d9('0x2a')][_0xf7d9('0x3c')](_0x2c04c3);})[_0xf7d9('0x24')](function(_0x3db665){_0x20315e[_0xf7d9('0x3d')]=_0x3db665;return _0x20315e;})[_0xf7d9('0x24')](respondWithFilteredResult(_0x2b5f17,_0x2c04c3))[_0xf7d9('0x3e')](handleError(_0x2b5f17,null));};exports[_0xf7d9('0x3f')]=function(_0x40d026,_0x3d056f){var _0x2a349b={'raw':!![],'where':{'id':_0x40d026['params']['id']}},_0x46b7d4={};_0x46b7d4[_0xf7d9('0x2c')]=_[_0xf7d9('0x2d')](db['Cdr']['rawAttributes']);_0x46b7d4['query']=_[_0xf7d9('0x2d')](_0x40d026['query']);_0x46b7d4[_0xf7d9('0x36')]=_[_0xf7d9('0x2f')](_0x46b7d4[_0xf7d9('0x2c')],_0x46b7d4[_0xf7d9('0x31')]);_0x2a349b[_0xf7d9('0x2e')]=_['intersection'](_0x46b7d4[_0xf7d9('0x2c')],qs[_0xf7d9('0x30')](_0x40d026[_0xf7d9('0x31')][_0xf7d9('0x30')]));_0x2a349b[_0xf7d9('0x2e')]=_0x2a349b['attributes']['length']?_0x2a349b[_0xf7d9('0x2e')]:_0x46b7d4[_0xf7d9('0x2c')];if(_0x40d026[_0xf7d9('0x31')][_0xf7d9('0x3b')]){_0x2a349b[_0xf7d9('0x40')]=[{'all':!![]}];}_0x2a349b=_['merge']({},_0x2a349b,_0x40d026[_0xf7d9('0x3a')]);return db['Cdr'][_0xf7d9('0x41')](_0x2a349b)[_0xf7d9('0x24')](handleEntityNotFound(_0x3d056f,null))[_0xf7d9('0x24')](respondWithResult(_0x3d056f,null))[_0xf7d9('0x3e')](handleError(_0x3d056f,null));};exports[_0xf7d9('0x42')]=function(_0x1e3a53,_0x4003e9){return db[_0xf7d9('0x2a')][_0xf7d9('0x42')](_0x1e3a53[_0xf7d9('0x43')],{})[_0xf7d9('0x24')](respondWithResult(_0x4003e9,0xc9))[_0xf7d9('0x3e')](handleError(_0x4003e9,null));};exports[_0xf7d9('0x23')]=function(_0x3cdeb5,_0x50731a){if(_0x3cdeb5[_0xf7d9('0x43')]['id']){delete _0x3cdeb5[_0xf7d9('0x43')]['id'];}return db['Cdr']['find']({'where':{'id':_0x3cdeb5[_0xf7d9('0x44')]['id']}})['then'](handleEntityNotFound(_0x50731a,null))['then'](saveUpdates(_0x3cdeb5[_0xf7d9('0x43')],null))[_0xf7d9('0x24')](respondWithResult(_0x50731a,null))[_0xf7d9('0x3e')](handleError(_0x50731a,null));};exports[_0xf7d9('0x45')]=function(_0xf923e0,_0x9c3719){return db[_0xf7d9('0x2a')][_0xf7d9('0x41')]({'where':{'id':_0xf923e0[_0xf7d9('0x44')]['id']}})[_0xf7d9('0x24')](handleEntityNotFound(_0x9c3719,null))[_0xf7d9('0x24')](removeEntity(_0x9c3719,null))[_0xf7d9('0x3e')](handleError(_0x9c3719,null));};exports['describe']=function(_0x48076b,_0x42da01){return db[_0xf7d9('0x2a')][_0xf7d9('0x46')]()[_0xf7d9('0x24')](respondWithResult(_0x42da01,null))['catch'](handleError(_0x42da01,null));};
\ No newline at end of file
+var _0xf8b2=['sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','filter','Cdr','include','findAll','then','rows','catch','show','params','options','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy'];(function(_0x5d2cf3,_0x16bfd2){var _0x45a3fc=function(_0x24e67f){while(--_0x24e67f){_0x5d2cf3['push'](_0x5d2cf3['shift']());}};_0x45a3fc(++_0x16bfd2);}(_0xf8b2,0x15e));var _0x2f8b=function(_0x46eb54,_0x4f1eac){_0x46eb54=_0x46eb54-0x0;var _0x3902b2=_0xf8b2[_0x46eb54];return _0x3902b2;};'use strict';var emlformat=require(_0x2f8b('0x0'));var rimraf=require(_0x2f8b('0x1'));var zipdir=require(_0x2f8b('0x2'));var jsonpatch=require(_0x2f8b('0x3'));var rp=require(_0x2f8b('0x4'));var moment=require(_0x2f8b('0x5'));var BPromise=require(_0x2f8b('0x6'));var Mustache=require(_0x2f8b('0x7'));var util=require('util');var path=require('path');var sox=require(_0x2f8b('0x8'));var csv=require(_0x2f8b('0x9'));var ejs=require(_0x2f8b('0xa'));var fs=require('fs');var fs_extra=require(_0x2f8b('0xb'));var _=require(_0x2f8b('0xc'));var squel=require(_0x2f8b('0xd'));var crypto=require(_0x2f8b('0xe'));var jsforce=require(_0x2f8b('0xf'));var deskjs=require(_0x2f8b('0x10'));var toCsv=require('to-csv');var querystring=require(_0x2f8b('0x11'));var Papa=require(_0x2f8b('0x12'));var Redis=require(_0x2f8b('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x2f8b('0x14'));var as=require(_0x2f8b('0x15'));var hardwareService=require(_0x2f8b('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x2f8b('0x17'));var config=require(_0x2f8b('0x18'));var licenseUtil=require(_0x2f8b('0x19'));var db=require(_0x2f8b('0x1a'))['db'];function respondWithStatusCode(_0x175111,_0x4cb1e0){_0x4cb1e0=_0x4cb1e0||0xcc;return function(_0x16d5a2){if(_0x16d5a2){return _0x175111['sendStatus'](_0x4cb1e0);}return _0x175111[_0x2f8b('0x1b')](_0x4cb1e0)[_0x2f8b('0x1c')]();};}function respondWithResult(_0x1b6a17,_0x15634){_0x15634=_0x15634||0xc8;return function(_0xf9cbe0){if(_0xf9cbe0){return _0x1b6a17[_0x2f8b('0x1b')](_0x15634)[_0x2f8b('0x1d')](_0xf9cbe0);}};}function respondWithFilteredResult(_0x2b6003,_0x532fe4){return function(_0x14a248){if(_0x14a248){var _0xdec711=typeof _0x532fe4[_0x2f8b('0x1e')]===_0x2f8b('0x1f')&&typeof _0x532fe4[_0x2f8b('0x20')]===_0x2f8b('0x1f');var _0x3d65ee=_0x14a248[_0x2f8b('0x21')];var _0x35ec40=_0xdec711?0x0:_0x532fe4['offset'];var _0x23dd63=_0xdec711?_0x14a248[_0x2f8b('0x21')]:_0x532fe4[_0x2f8b('0x1e')]+_0x532fe4['limit'];var _0xdc8171;if(_0x23dd63>=_0x3d65ee){_0x23dd63=_0x3d65ee;_0xdc8171=0xc8;}else{_0xdc8171=0xce;}_0x2b6003['status'](_0xdc8171);return _0x2b6003[_0x2f8b('0x22')](_0x2f8b('0x23'),_0x35ec40+'-'+_0x23dd63+'/'+_0x3d65ee)[_0x2f8b('0x1d')](_0x14a248);}return null;};}function patchUpdates(_0x26d78f){return function(_0x3be6dc){try{jsonpatch['apply'](_0x3be6dc,_0x26d78f,!![]);}catch(_0x29c2f3){return BPromise[_0x2f8b('0x24')](_0x29c2f3);}return _0x3be6dc[_0x2f8b('0x25')]();};}function saveUpdates(_0x17b251,_0x3ad38b){return function(_0x1ffbae){if(_0x1ffbae){return _0x1ffbae[_0x2f8b('0x26')](_0x17b251)['then'](function(_0x273950){return _0x273950;});}return null;};}function removeEntity(_0x23f73c,_0x3560c4){return function(_0x41e12b){if(_0x41e12b){return _0x41e12b[_0x2f8b('0x27')]()['then'](function(){_0x23f73c[_0x2f8b('0x1b')](0xcc)[_0x2f8b('0x1c')]();});}};}function handleEntityNotFound(_0x152492,_0x46a95a){return function(_0x183e51){if(!_0x183e51){_0x152492[_0x2f8b('0x28')](0x194);}return _0x183e51;};}function handleError(_0x45e313,_0x347f5a){_0x347f5a=_0x347f5a||0x1f4;return function(_0x4145b3){logger['error'](_0x4145b3[_0x2f8b('0x29')]);if(_0x4145b3['name']){delete _0x4145b3[_0x2f8b('0x2a')];}_0x45e313[_0x2f8b('0x1b')](_0x347f5a)[_0x2f8b('0x2b')](_0x4145b3);};}exports[_0x2f8b('0x2c')]=function(_0x72b23b,_0x4adacd){var _0x2cfbea={},_0x5cc78c={},_0x5207a8={'count':0x0,'rows':[]};var _0x194e75=_[_0x2f8b('0x2d')](db['Cdr'][_0x2f8b('0x2e')],function(_0x20d80c){return{'name':_0x20d80c[_0x2f8b('0x2f')],'type':_0x20d80c[_0x2f8b('0x30')][_0x2f8b('0x31')]};});_0x5cc78c[_0x2f8b('0x32')]=_['map'](_0x194e75,_0x2f8b('0x2a'));_0x5cc78c[_0x2f8b('0x33')]=_[_0x2f8b('0x34')](_0x72b23b[_0x2f8b('0x33')]);_0x5cc78c[_0x2f8b('0x35')]=_[_0x2f8b('0x36')](_0x5cc78c[_0x2f8b('0x32')],_0x5cc78c['query']);_0x2cfbea[_0x2f8b('0x37')]=_['intersection'](_0x5cc78c[_0x2f8b('0x32')],qs[_0x2f8b('0x38')](_0x72b23b[_0x2f8b('0x33')][_0x2f8b('0x38')]));_0x2cfbea[_0x2f8b('0x37')]=_0x2cfbea[_0x2f8b('0x37')][_0x2f8b('0x39')]?_0x2cfbea[_0x2f8b('0x37')]:_0x5cc78c[_0x2f8b('0x32')];if(!_0x72b23b['query']['hasOwnProperty'](_0x2f8b('0x3a'))){_0x2cfbea[_0x2f8b('0x20')]=qs[_0x2f8b('0x20')](_0x72b23b[_0x2f8b('0x33')]['limit']);_0x2cfbea[_0x2f8b('0x1e')]=qs[_0x2f8b('0x1e')](_0x72b23b[_0x2f8b('0x33')][_0x2f8b('0x1e')]);}_0x2cfbea[_0x2f8b('0x3b')]=qs['sort'](_0x72b23b['query'][_0x2f8b('0x3c')]);_0x2cfbea[_0x2f8b('0x3d')]=qs[_0x2f8b('0x35')](_[_0x2f8b('0x3e')](_0x72b23b[_0x2f8b('0x33')],_0x5cc78c[_0x2f8b('0x35')]),_0x194e75);if(_0x72b23b[_0x2f8b('0x33')]['filter']){_0x2cfbea[_0x2f8b('0x3d')]=_[_0x2f8b('0x3f')](_0x2cfbea['where'],{'$or':_[_0x2f8b('0x2d')](_0x194e75,function(_0x4594b2){if(_0x4594b2[_0x2f8b('0x30')]!=='VIRTUAL'){var _0xa1d8de={};_0xa1d8de[_0x4594b2[_0x2f8b('0x2a')]]={'$like':'%'+_0x72b23b['query'][_0x2f8b('0x40')]+'%'};return _0xa1d8de;}})});}_0x2cfbea=_[_0x2f8b('0x3f')]({},_0x2cfbea,_0x72b23b['options']);var _0x92b37a={'where':_0x2cfbea['where']};return db[_0x2f8b('0x41')][_0x2f8b('0x21')](_0x92b37a)['then'](function(_0x9030da){_0x5207a8[_0x2f8b('0x21')]=_0x9030da;if(_0x72b23b[_0x2f8b('0x33')]['includeAll']){_0x2cfbea[_0x2f8b('0x42')]=[{'all':!![]}];}return db['Cdr'][_0x2f8b('0x43')](_0x2cfbea);})[_0x2f8b('0x44')](function(_0x1ff6e7){_0x5207a8[_0x2f8b('0x45')]=_0x1ff6e7;return _0x5207a8;})[_0x2f8b('0x44')](respondWithFilteredResult(_0x4adacd,_0x2cfbea))[_0x2f8b('0x46')](handleError(_0x4adacd,null));};exports[_0x2f8b('0x47')]=function(_0xa2fc94,_0x1c0b64){var _0x40577c={'raw':!![],'where':{'id':_0xa2fc94[_0x2f8b('0x48')]['id']}},_0x45c92c={};_0x45c92c[_0x2f8b('0x32')]=_[_0x2f8b('0x34')](db[_0x2f8b('0x41')][_0x2f8b('0x2e')]);_0x45c92c[_0x2f8b('0x33')]=_[_0x2f8b('0x34')](_0xa2fc94[_0x2f8b('0x33')]);_0x45c92c[_0x2f8b('0x35')]=_[_0x2f8b('0x36')](_0x45c92c[_0x2f8b('0x32')],_0x45c92c[_0x2f8b('0x33')]);_0x40577c[_0x2f8b('0x37')]=_[_0x2f8b('0x36')](_0x45c92c['model'],qs['fields'](_0xa2fc94['query'][_0x2f8b('0x38')]));_0x40577c['attributes']=_0x40577c[_0x2f8b('0x37')][_0x2f8b('0x39')]?_0x40577c[_0x2f8b('0x37')]:_0x45c92c['model'];if(_0xa2fc94[_0x2f8b('0x33')]['includeAll']){_0x40577c[_0x2f8b('0x42')]=[{'all':!![]}];}_0x40577c=_['merge']({},_0x40577c,_0xa2fc94[_0x2f8b('0x49')]);return db[_0x2f8b('0x41')]['find'](_0x40577c)[_0x2f8b('0x44')](handleEntityNotFound(_0x1c0b64,null))[_0x2f8b('0x44')](respondWithResult(_0x1c0b64,null))[_0x2f8b('0x46')](handleError(_0x1c0b64,null));};exports[_0x2f8b('0x4a')]=function(_0x1e6ac2,_0x465d59){return db[_0x2f8b('0x41')][_0x2f8b('0x4a')](_0x1e6ac2[_0x2f8b('0x4b')],{})['then'](respondWithResult(_0x465d59,0xc9))[_0x2f8b('0x46')](handleError(_0x465d59,null));};exports[_0x2f8b('0x26')]=function(_0x2d79f9,_0x1bb257){if(_0x2d79f9[_0x2f8b('0x4b')]['id']){delete _0x2d79f9['body']['id'];}return db[_0x2f8b('0x41')][_0x2f8b('0x4c')]({'where':{'id':_0x2d79f9[_0x2f8b('0x48')]['id']}})['then'](handleEntityNotFound(_0x1bb257,null))[_0x2f8b('0x44')](saveUpdates(_0x2d79f9['body'],null))[_0x2f8b('0x44')](respondWithResult(_0x1bb257,null))[_0x2f8b('0x46')](handleError(_0x1bb257,null));};exports[_0x2f8b('0x27')]=function(_0x3a25bb,_0x17b855){return db['Cdr']['find']({'where':{'id':_0x3a25bb['params']['id']}})[_0x2f8b('0x44')](handleEntityNotFound(_0x17b855,null))[_0x2f8b('0x44')](removeEntity(_0x17b855,null))[_0x2f8b('0x46')](handleError(_0x17b855,null));};exports[_0x2f8b('0x4d')]=function(_0x49e047,_0x5ea07d){return db[_0x2f8b('0x41')][_0x2f8b('0x4d')]()[_0x2f8b('0x44')](respondWithResult(_0x5ea07d,null))[_0x2f8b('0x46')](handleError(_0x5ea07d,null));};
\ No newline at end of file
index 47a94b3..43f5f8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x2d5b6f,_0x55dcb3){var _0xaf7910=function(_0xfd7707){while(--_0xfd7707){_0x2d5b6f['push'](_0x2d5b6f['shift']());}};_0xaf7910(++_0x55dcb3);}(_0x7a54,0x106));var _0x47a5=function(_0x54ad65,_0xc03f7a){_0x54ad65=_0x54ad65-0x0;var _0x44ae84=_0x7a54[_0x54ad65];return _0x44ae84;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x4d0556,_0x272783){var _0x371856=function(_0x4b75a7){while(--_0x4b75a7){_0x4d0556['push'](_0x4d0556['shift']());}};_0x371856(++_0x272783);}(_0x7a54,0x106));var _0x47a5=function(_0x186d32,_0x48ac93){_0x186d32=_0x186d32-0x0;var _0x318878=_0x7a54[_0x186d32];return _0x318878;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
index 2543247..d689605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bea=['../../config/logger','../../config/environment','jayson/promise','client','request','then','info','Cdr,\x20%s,\x20%s','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1345fa,_0x11947a){var _0xc32585=function(_0x178016){while(--_0x178016){_0x1345fa['push'](_0x1345fa['shift']());}};_0xc32585(++_0x11947a);}(_0x6bea,0x70));var _0xa6be=function(_0x46ce04,_0xa79e72){_0x46ce04=_0x46ce04-0x0;var _0x58cfe6=_0x6bea[_0x46ce04];return _0x58cfe6;};'use strict';var _=require(_0xa6be('0x0'));var util=require(_0xa6be('0x1'));var moment=require(_0xa6be('0x2'));var BPromise=require(_0xa6be('0x3'));var rs=require(_0xa6be('0x4'));var fs=require('fs');var Redis=require(_0xa6be('0x5'));var db=require(_0xa6be('0x6'))['db'];var utils=require(_0xa6be('0x7'));var logger=require(_0xa6be('0x8'))('rpc');var config=require(_0xa6be('0x9'));var jayson=require(_0xa6be('0xa'));var client=jayson[_0xa6be('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb45933,_0x520286,_0x54ab7a){return new BPromise(function(_0x136222,_0x4f4c69){return client[_0xa6be('0xc')](_0xb45933,_0x54ab7a)[_0xa6be('0xd')](function(_0x57df6b){logger[_0xa6be('0xe')](_0xa6be('0xf'),_0x520286,'request\x20sent');logger['debug'](_0xa6be('0x10'),_0x520286,_0xa6be('0x11'),JSON[_0xa6be('0x12')](_0x57df6b));if(_0x57df6b[_0xa6be('0x13')]){if(_0x57df6b['error'][_0xa6be('0x14')]===0x1f4){logger[_0xa6be('0x13')](_0xa6be('0xf'),_0x520286,_0x57df6b[_0xa6be('0x13')][_0xa6be('0x15')]);return _0x4f4c69(_0x57df6b[_0xa6be('0x13')][_0xa6be('0x15')]);}logger['error']('Cdr,\x20%s,\x20%s',_0x520286,_0x57df6b[_0xa6be('0x13')]['message']);return _0x136222(_0x57df6b[_0xa6be('0x13')][_0xa6be('0x15')]);}else{logger[_0xa6be('0xe')](_0xa6be('0xf'),_0x520286,_0xa6be('0x11'));_0x136222(_0x57df6b[_0xa6be('0x16')][_0xa6be('0x15')]);}})[_0xa6be('0x17')](function(_0x452954){logger[_0xa6be('0x13')]('Cdr,\x20%s,\x20%s',_0x520286,_0x452954);_0x4f4c69(_0x452954);});});}
\ No newline at end of file
+var _0x2819=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','code','error','Cdr,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2819,0x1e6));var _0x9281=function(_0x859dba,_0x3a45da){_0x859dba=_0x859dba-0x0;var _0xcf6241=_0x2819[_0x859dba];return _0xcf6241;};'use strict';var _=require(_0x9281('0x0'));var util=require(_0x9281('0x1'));var moment=require(_0x9281('0x2'));var BPromise=require('bluebird');var rs=require(_0x9281('0x3'));var fs=require('fs');var Redis=require(_0x9281('0x4'));var db=require(_0x9281('0x5'))['db'];var utils=require(_0x9281('0x6'));var logger=require(_0x9281('0x7'))(_0x9281('0x8'));var config=require(_0x9281('0x9'));var jayson=require(_0x9281('0xa'));var client=jayson[_0x9281('0xb')][_0x9281('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x143024,_0x1f4656,_0x5f2970){return new BPromise(function(_0x4751a4,_0x36f4ad){return client[_0x9281('0xd')](_0x143024,_0x5f2970)[_0x9281('0xe')](function(_0x1a8716){logger[_0x9281('0xf')]('Cdr,\x20%s,\x20%s',_0x1f4656,_0x9281('0x10'));logger[_0x9281('0x11')](_0x9281('0x12'),_0x1f4656,'request\x20sent',JSON[_0x9281('0x13')](_0x1a8716));if(_0x1a8716['error']){if(_0x1a8716['error'][_0x9281('0x14')]===0x1f4){logger[_0x9281('0x15')](_0x9281('0x16'),_0x1f4656,_0x1a8716['error'][_0x9281('0x17')]);return _0x36f4ad(_0x1a8716[_0x9281('0x15')][_0x9281('0x17')]);}logger[_0x9281('0x15')]('Cdr,\x20%s,\x20%s',_0x1f4656,_0x1a8716[_0x9281('0x15')]['message']);return _0x4751a4(_0x1a8716[_0x9281('0x15')][_0x9281('0x17')]);}else{logger['info'](_0x9281('0x16'),_0x1f4656,_0x9281('0x10'));_0x4751a4(_0x1a8716[_0x9281('0x18')][_0x9281('0x17')]);}})[_0x9281('0x19')](function(_0x5b488e){logger[_0x9281('0x15')](_0x9281('0x16'),_0x1f4656,_0x5b488e);_0x36f4ad(_0x5b488e);});});}
\ No newline at end of file
index 19d058a..3be5de6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../components/interaction/service','../../config/environment','./cdr.controller','get','index','isAuthenticated','describe','/:id','show','post','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x2d057f,_0x437742){var _0x3f339c=function(_0x3a4a4b){while(--_0x3a4a4b){_0x2d057f['push'](_0x2d057f['shift']());}};_0x3f339c(++_0x437742);}(_0xb10b,0x12a));var _0xbb10=function(_0x4429e0,_0xee6f1f){_0x4429e0=_0x4429e0-0x0;var _0x51a5b3=_0xb10b[_0x4429e0];return _0x51a5b3;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/describe',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')]('/',auth[_0xbb10('0xb')](),controller['create']);router['put'](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x10')]);router['delete'](_0xbb10('0xd'),auth['isAuthenticated'](),controller[_0xbb10('0x11')]);module[_0xbb10('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(_0x1f2c15,_0x202189){var _0x16a8bf=function(_0x2dbdca){while(--_0x2dbdca){_0x1f2c15['push'](_0x1f2c15['shift']());}};_0x16a8bf(++_0x202189);}(_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
index 40f9c5e..38476b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7b1=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x1f51b0,_0x22a682){var _0x27b813=function(_0xcabeca){while(--_0xcabeca){_0x1f51b0['push'](_0x1f51b0['shift']());}};_0x27b813(++_0x22a682);}(_0xd7b1,0xc1));var _0x1d7b=function(_0x54d8c5,_0x39f451){_0x54d8c5=_0x54d8c5-0x0;var _0x4aed6d=_0xd7b1[_0x54d8c5];return _0x4aed6d;};'use strict';var Sequelize=require(_0x1d7b('0x0'));module[_0x1d7b('0x1')]={'priority':{'type':Sequelize[_0x1d7b('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x1d7b('0x3')],'allowNull':![],'defaultValue':_0x1d7b('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x1d7b('0x5')}};
\ No newline at end of file
+var _0xe10d=['STRING','noop','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x16b411,_0x59ba84){var _0x530352=function(_0x4210f1){while(--_0x4210f1){_0x16b411['push'](_0x16b411['shift']());}};_0x530352(++_0x59ba84);}(_0xe10d,0x13f));var _0xde10=function(_0xd7f81b,_0x34d653){_0xd7f81b=_0xd7f81b-0x0;var _0xa932d0=_0xe10d[_0xd7f81b];return _0xa932d0;};'use strict';var Sequelize=require(_0xde10('0x0'));module[_0xde10('0x1')]={'priority':{'type':Sequelize[_0xde10('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xde10('0x3')],'allowNull':![],'defaultValue':_0xde10('0x4')},'appdata':{'type':Sequelize[_0xde10('0x5')]()},'description':{'type':Sequelize[_0xde10('0x3')]},'interval':{'type':Sequelize[_0xde10('0x3')],'defaultValue':_0xde10('0x6')}};
\ No newline at end of file
index 53ade5d..72c0bfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d90=['status','end','json','offset','undefined','limit','count','Content-Range','reject','then','destroy','error','stack','name','send','show','params','keys','rawAttributes','query','filters','intersection','model','fields','attributes','includeAll','merge','options','ChatApplication','find','catch','update','body','eml-format','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x1d8b10,_0x9603a6){var _0x123f31=function(_0x675fd8){while(--_0x675fd8){_0x1d8b10['push'](_0x1d8b10['shift']());}};_0x123f31(++_0x9603a6);}(_0x1d90,0x13e));var _0x01d9=function(_0x14fd55,_0x2c43d4){_0x14fd55=_0x14fd55-0x0;var _0x1bd36c=_0x1d90[_0x14fd55];return _0x1bd36c;};'use strict';var emlformat=require(_0x01d9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x01d9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x01d9('0x2'));var moment=require('moment');var BPromise=require(_0x01d9('0x3'));var Mustache=require(_0x01d9('0x4'));var util=require('util');var path=require(_0x01d9('0x5'));var sox=require(_0x01d9('0x6'));var csv=require(_0x01d9('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x01d9('0x8'));var _=require(_0x01d9('0x9'));var squel=require(_0x01d9('0xa'));var crypto=require('crypto');var jsforce=require(_0x01d9('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x01d9('0xc'));var Papa=require(_0x01d9('0xd'));var Redis=require(_0x01d9('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x01d9('0xf'));var as=require(_0x01d9('0x10'));var hardwareService=require(_0x01d9('0x11'));var logger=require('../../config/logger')(_0x01d9('0x12'));var utils=require(_0x01d9('0x13'));var config=require(_0x01d9('0x14'));var licenseUtil=require(_0x01d9('0x15'));var db=require(_0x01d9('0x16'))['db'];function respondWithStatusCode(_0x3c43c5,_0x411e2e){_0x411e2e=_0x411e2e||0xcc;return function(_0x2895dd){if(_0x2895dd){return _0x3c43c5[_0x01d9('0x17')](_0x411e2e);}return _0x3c43c5[_0x01d9('0x18')](_0x411e2e)[_0x01d9('0x19')]();};}function respondWithResult(_0x2ee7f6,_0x4ae815){_0x4ae815=_0x4ae815||0xc8;return function(_0x1fbbec){if(_0x1fbbec){return _0x2ee7f6[_0x01d9('0x18')](_0x4ae815)[_0x01d9('0x1a')](_0x1fbbec);}};}function respondWithFilteredResult(_0xfdf203,_0x58424c){return function(_0x18cfab){if(_0x18cfab){var _0x5bc7fc=typeof _0x58424c[_0x01d9('0x1b')]===_0x01d9('0x1c')&&typeof _0x58424c[_0x01d9('0x1d')]==='undefined';var _0xb22ca1=_0x18cfab[_0x01d9('0x1e')];var _0x51ebb3=_0x5bc7fc?0x0:_0x58424c[_0x01d9('0x1b')];var _0x2789e9=_0x5bc7fc?_0x18cfab[_0x01d9('0x1e')]:_0x58424c['offset']+_0x58424c['limit'];var _0x35e8ed;if(_0x2789e9>=_0xb22ca1){_0x2789e9=_0xb22ca1;_0x35e8ed=0xc8;}else{_0x35e8ed=0xce;}_0xfdf203['status'](_0x35e8ed);return _0xfdf203['set'](_0x01d9('0x1f'),_0x51ebb3+'-'+_0x2789e9+'/'+_0xb22ca1)[_0x01d9('0x1a')](_0x18cfab);}return null;};}function patchUpdates(_0x319e35){return function(_0x440f0b){try{jsonpatch['apply'](_0x440f0b,_0x319e35,!![]);}catch(_0xde5782){return BPromise[_0x01d9('0x20')](_0xde5782);}return _0x440f0b['save']();};}function saveUpdates(_0x216a49,_0x263e90){return function(_0x26d3e2){if(_0x26d3e2){return _0x26d3e2['update'](_0x216a49)[_0x01d9('0x21')](function(_0x12e465){return _0x12e465;});}return null;};}function removeEntity(_0x3326a1,_0x399d25){return function(_0x5c4c63){if(_0x5c4c63){return _0x5c4c63[_0x01d9('0x22')]()['then'](function(){_0x3326a1[_0x01d9('0x18')](0xcc)[_0x01d9('0x19')]();});}};}function handleEntityNotFound(_0x125ecb,_0x3d352c){return function(_0x30bc4c){if(!_0x30bc4c){_0x125ecb[_0x01d9('0x17')](0x194);}return _0x30bc4c;};}function handleError(_0x2fd2c9,_0x30c910){_0x30c910=_0x30c910||0x1f4;return function(_0xb731ba){logger[_0x01d9('0x23')](_0xb731ba[_0x01d9('0x24')]);if(_0xb731ba[_0x01d9('0x25')]){delete _0xb731ba['name'];}_0x2fd2c9[_0x01d9('0x18')](_0x30c910)[_0x01d9('0x26')](_0xb731ba);};}exports[_0x01d9('0x27')]=function(_0x10e6ae,_0x596cd7){var _0x509cfd={'raw':!![],'where':{'id':_0x10e6ae[_0x01d9('0x28')]['id']}},_0x35a817={};_0x35a817['model']=_[_0x01d9('0x29')](db['ChatApplication'][_0x01d9('0x2a')]);_0x35a817[_0x01d9('0x2b')]=_['keys'](_0x10e6ae['query']);_0x35a817[_0x01d9('0x2c')]=_[_0x01d9('0x2d')](_0x35a817['model'],_0x35a817[_0x01d9('0x2b')]);_0x509cfd['attributes']=_[_0x01d9('0x2d')](_0x35a817[_0x01d9('0x2e')],qs['fields'](_0x10e6ae[_0x01d9('0x2b')][_0x01d9('0x2f')]));_0x509cfd[_0x01d9('0x30')]=_0x509cfd[_0x01d9('0x30')]['length']?_0x509cfd['attributes']:_0x35a817[_0x01d9('0x2e')];if(_0x10e6ae[_0x01d9('0x2b')][_0x01d9('0x31')]){_0x509cfd['include']=[{'all':!![]}];}_0x509cfd=_[_0x01d9('0x32')]({},_0x509cfd,_0x10e6ae[_0x01d9('0x33')]);return db[_0x01d9('0x34')][_0x01d9('0x35')](_0x509cfd)[_0x01d9('0x21')](handleEntityNotFound(_0x596cd7,null))[_0x01d9('0x21')](respondWithResult(_0x596cd7,null))[_0x01d9('0x36')](handleError(_0x596cd7,null));};exports[_0x01d9('0x37')]=function(_0x2c2cf3,_0x416aea){if(_0x2c2cf3[_0x01d9('0x38')]['id']){delete _0x2c2cf3['body']['id'];}return db[_0x01d9('0x34')][_0x01d9('0x35')]({'where':{'id':_0x2c2cf3[_0x01d9('0x28')]['id']}})[_0x01d9('0x21')](handleEntityNotFound(_0x416aea,null))[_0x01d9('0x21')](saveUpdates(_0x2c2cf3[_0x01d9('0x38')],null))[_0x01d9('0x21')](respondWithResult(_0x416aea,null))['catch'](handleError(_0x416aea,null));};exports[_0x01d9('0x22')]=function(_0x183405,_0x419bfc){return db[_0x01d9('0x34')]['find']({'where':{'id':_0x183405[_0x01d9('0x28')]['id']}})['then'](handleEntityNotFound(_0x419bfc,null))['then'](removeEntity(_0x419bfc,null))['catch'](handleError(_0x419bfc,null));};
\ No newline at end of file
+var _0x342e=['zip-dir','moment','bluebird','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','end','stack','name','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','options','find','catch','body','eml-format','rimraf'];(function(_0x517ebc,_0x58301a){var _0x26dd99=function(_0x37611e){while(--_0x37611e){_0x517ebc['push'](_0x517ebc['shift']());}};_0x26dd99(++_0x58301a);}(_0x342e,0xde));var _0xe342=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0x342e[_0x23e7c1];return _0x1add43;};'use strict';var emlformat=require(_0xe342('0x0'));var rimraf=require(_0xe342('0x1'));var zipdir=require(_0xe342('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe342('0x3'));var BPromise=require(_0xe342('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe342('0x5'));var sox=require(_0xe342('0x6'));var csv=require(_0xe342('0x7'));var ejs=require(_0xe342('0x8'));var fs=require('fs');var fs_extra=require(_0xe342('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xe342('0xa'));var jsforce=require(_0xe342('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe342('0xc'));var Papa=require(_0xe342('0xd'));var Redis=require(_0xe342('0xe'));var authService=require(_0xe342('0xf'));var qs=require(_0xe342('0x10'));var as=require(_0xe342('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe342('0x12'))(_0xe342('0x13'));var utils=require(_0xe342('0x14'));var config=require(_0xe342('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xe342('0x16'))['db'];function respondWithStatusCode(_0x50c16e,_0x2fff81){_0x2fff81=_0x2fff81||0xcc;return function(_0x419815){if(_0x419815){return _0x50c16e[_0xe342('0x17')](_0x2fff81);}return _0x50c16e[_0xe342('0x18')](_0x2fff81)['end']();};}function respondWithResult(_0x428c0b,_0x404989){_0x404989=_0x404989||0xc8;return function(_0x59434c){if(_0x59434c){return _0x428c0b[_0xe342('0x18')](_0x404989)[_0xe342('0x19')](_0x59434c);}};}function respondWithFilteredResult(_0xe384cd,_0x8a23f0){return function(_0xe8b832){if(_0xe8b832){var _0x219f51=typeof _0x8a23f0[_0xe342('0x1a')]===_0xe342('0x1b')&&typeof _0x8a23f0[_0xe342('0x1c')]===_0xe342('0x1b');var _0x144b24=_0xe8b832['count'];var _0xf70e61=_0x219f51?0x0:_0x8a23f0['offset'];var _0x5df492=_0x219f51?_0xe8b832[_0xe342('0x1d')]:_0x8a23f0[_0xe342('0x1a')]+_0x8a23f0[_0xe342('0x1c')];var _0x273865;if(_0x5df492>=_0x144b24){_0x5df492=_0x144b24;_0x273865=0xc8;}else{_0x273865=0xce;}_0xe384cd[_0xe342('0x18')](_0x273865);return _0xe384cd[_0xe342('0x1e')](_0xe342('0x1f'),_0xf70e61+'-'+_0x5df492+'/'+_0x144b24)[_0xe342('0x19')](_0xe8b832);}return null;};}function patchUpdates(_0x420036){return function(_0x5731e8){try{jsonpatch[_0xe342('0x20')](_0x5731e8,_0x420036,!![]);}catch(_0x45d096){return BPromise['reject'](_0x45d096);}return _0x5731e8[_0xe342('0x21')]();};}function saveUpdates(_0x56cd1e,_0x2fe50d){return function(_0x26d2a2){if(_0x26d2a2){return _0x26d2a2[_0xe342('0x22')](_0x56cd1e)[_0xe342('0x23')](function(_0x4e3950){return _0x4e3950;});}return null;};}function removeEntity(_0x2e70f5,_0x415aaf){return function(_0x212a7e){if(_0x212a7e){return _0x212a7e['destroy']()['then'](function(){_0x2e70f5[_0xe342('0x18')](0xcc)[_0xe342('0x24')]();});}};}function handleEntityNotFound(_0x5e6e3f,_0x3bde64){return function(_0x1a79ad){if(!_0x1a79ad){_0x5e6e3f[_0xe342('0x17')](0x194);}return _0x1a79ad;};}function handleError(_0x33078f,_0x294e2){_0x294e2=_0x294e2||0x1f4;return function(_0x20f9cc){logger['error'](_0x20f9cc[_0xe342('0x25')]);if(_0x20f9cc['name']){delete _0x20f9cc[_0xe342('0x26')];}_0x33078f[_0xe342('0x18')](_0x294e2)['send'](_0x20f9cc);};}exports['show']=function(_0x1c7c97,_0x2737a1){var _0x447899={'raw':!![],'where':{'id':_0x1c7c97[_0xe342('0x27')]['id']}},_0x2e4df6={};_0x2e4df6[_0xe342('0x28')]=_[_0xe342('0x29')](db[_0xe342('0x2a')][_0xe342('0x2b')]);_0x2e4df6[_0xe342('0x2c')]=_['keys'](_0x1c7c97[_0xe342('0x2c')]);_0x2e4df6[_0xe342('0x2d')]=_[_0xe342('0x2e')](_0x2e4df6['model'],_0x2e4df6['query']);_0x447899[_0xe342('0x2f')]=_['intersection'](_0x2e4df6[_0xe342('0x28')],qs[_0xe342('0x30')](_0x1c7c97[_0xe342('0x2c')][_0xe342('0x30')]));_0x447899[_0xe342('0x2f')]=_0x447899[_0xe342('0x2f')][_0xe342('0x31')]?_0x447899[_0xe342('0x2f')]:_0x2e4df6[_0xe342('0x28')];if(_0x1c7c97[_0xe342('0x2c')][_0xe342('0x32')]){_0x447899[_0xe342('0x33')]=[{'all':!![]}];}_0x447899=_['merge']({},_0x447899,_0x1c7c97[_0xe342('0x34')]);return db[_0xe342('0x2a')][_0xe342('0x35')](_0x447899)['then'](handleEntityNotFound(_0x2737a1,null))['then'](respondWithResult(_0x2737a1,null))[_0xe342('0x36')](handleError(_0x2737a1,null));};exports[_0xe342('0x22')]=function(_0x5d0ae3,_0xa002ca){if(_0x5d0ae3[_0xe342('0x37')]['id']){delete _0x5d0ae3[_0xe342('0x37')]['id'];}return db[_0xe342('0x2a')][_0xe342('0x35')]({'where':{'id':_0x5d0ae3[_0xe342('0x27')]['id']}})['then'](handleEntityNotFound(_0xa002ca,null))[_0xe342('0x23')](saveUpdates(_0x5d0ae3[_0xe342('0x37')],null))['then'](respondWithResult(_0xa002ca,null))[_0xe342('0x36')](handleError(_0xa002ca,null));};exports['destroy']=function(_0x2000b5,_0xa7c673){return db[_0xe342('0x2a')][_0xe342('0x35')]({'where':{'id':_0x2000b5[_0xe342('0x27')]['id']}})[_0xe342('0x23')](handleEntityNotFound(_0xa7c673,null))[_0xe342('0x23')](removeEntity(_0xa7c673,null))['catch'](handleError(_0xa7c673,null));};
\ No newline at end of file
index 3da9673..3f90439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd1f=['path','rimraf','../../config/environment','exports','define','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x4a8f87,_0x3d2f52){var _0x53671d=function(_0x26febe){while(--_0x26febe){_0x4a8f87['push'](_0x4a8f87['shift']());}};_0x53671d(++_0x3d2f52);}(_0xcd1f,0x162));var _0xfcd1=function(_0x4c4468,_0x57b9bc){_0x4c4468=_0x4c4468-0x0;var _0x3c3e27=_0xcd1f[_0x4c4468];return _0x3c3e27;};'use strict';var _=require(_0xfcd1('0x0'));var util=require(_0xfcd1('0x1'));var logger=require(_0xfcd1('0x2'))(_0xfcd1('0x3'));var moment=require(_0xfcd1('0x4'));var BPromise=require('bluebird');var rp=require(_0xfcd1('0x5'));var fs=require('fs');var path=require(_0xfcd1('0x6'));var rimraf=require(_0xfcd1('0x7'));var config=require(_0xfcd1('0x8'));var attributes=require('./chatApplication.attributes');module[_0xfcd1('0x9')]=function(_0xd4f335,_0x3c5c75){return _0xd4f335[_0xfcd1('0xa')](_0xfcd1('0xb'),attributes,{'tableName':_0xfcd1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfcd1('0xd'),'collate':_0xfcd1('0xe')});};
\ No newline at end of file
+var _0x9a47=['bluebird','request-promise','rimraf','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x9a47,0x14c));var _0x79a4=function(_0x45ae03,_0x576434){_0x45ae03=_0x45ae03-0x0;var _0x545448=_0x9a47[_0x45ae03];return _0x545448;};'use strict';var _=require(_0x79a4('0x0'));var util=require('util');var logger=require(_0x79a4('0x1'))(_0x79a4('0x2'));var moment=require(_0x79a4('0x3'));var BPromise=require(_0x79a4('0x4'));var rp=require(_0x79a4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x79a4('0x6'));var config=require(_0x79a4('0x7'));var attributes=require(_0x79a4('0x8'));module[_0x79a4('0x9')]=function(_0x43662b,_0x1a9037){return _0x43662b[_0x79a4('0xa')](_0x79a4('0xb'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x79a4('0xc'),'collate':_0x79a4('0xd')});};
\ No newline at end of file
index 82c3de0..dd54e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4665=['lodash','util','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatApplication,\x20%s,\x20%s','message','result','catch'];(function(_0x5318bc,_0x17d37d){var _0x1d3175=function(_0x2c195a){while(--_0x2c195a){_0x5318bc['push'](_0x5318bc['shift']());}};_0x1d3175(++_0x17d37d);}(_0x4665,0x111));var _0x5466=function(_0x814257,_0x5403ed){_0x814257=_0x814257-0x0;var _0x4f9aa0=_0x4665[_0x814257];return _0x4f9aa0;};'use strict';var _=require(_0x5466('0x0'));var util=require(_0x5466('0x1'));var moment=require(_0x5466('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5466('0x3'))['db'];var utils=require(_0x5466('0x4'));var logger=require('../../config/logger')(_0x5466('0x5'));var config=require(_0x5466('0x6'));var jayson=require(_0x5466('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x24849b,_0x22c3f1,_0x5045e7){return new BPromise(function(_0x5b650c,_0x12223e){return client[_0x5466('0x8')](_0x24849b,_0x5045e7)[_0x5466('0x9')](function(_0x5a5e9c){logger[_0x5466('0xa')]('ChatApplication,\x20%s,\x20%s',_0x22c3f1,_0x5466('0xb'));logger[_0x5466('0xc')](_0x5466('0xd'),_0x22c3f1,'request\x20sent',JSON[_0x5466('0xe')](_0x5a5e9c));if(_0x5a5e9c[_0x5466('0xf')]){if(_0x5a5e9c[_0x5466('0xf')][_0x5466('0x10')]===0x1f4){logger[_0x5466('0xf')](_0x5466('0x11'),_0x22c3f1,_0x5a5e9c[_0x5466('0xf')][_0x5466('0x12')]);return _0x12223e(_0x5a5e9c['error'][_0x5466('0x12')]);}logger[_0x5466('0xf')]('ChatApplication,\x20%s,\x20%s',_0x22c3f1,_0x5a5e9c[_0x5466('0xf')][_0x5466('0x12')]);return _0x5b650c(_0x5a5e9c[_0x5466('0xf')][_0x5466('0x12')]);}else{logger[_0x5466('0xa')](_0x5466('0x11'),_0x22c3f1,_0x5466('0xb'));_0x5b650c(_0x5a5e9c[_0x5466('0x13')]['message']);}})[_0x5466('0x14')](function(_0x4fe8bb){logger[_0x5466('0xf')](_0x5466('0x11'),_0x22c3f1,_0x4fe8bb);_0x12223e(_0x4fe8bb);});});}
\ No newline at end of file
+var _0x25f6=['message','info','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3914bd,_0x19a8f3){var _0x2a9edd=function(_0x4b299c){while(--_0x4b299c){_0x3914bd['push'](_0x3914bd['shift']());}};_0x2a9edd(++_0x19a8f3);}(_0x25f6,0x8d));var _0x625f=function(_0xdaa456,_0x3dbbe5){_0xdaa456=_0xdaa456-0x0;var _0x288a4a=_0x25f6[_0xdaa456];return _0x288a4a;};'use strict';var _=require(_0x625f('0x0'));var util=require('util');var moment=require(_0x625f('0x1'));var BPromise=require('bluebird');var rs=require(_0x625f('0x2'));var fs=require('fs');var Redis=require(_0x625f('0x3'));var db=require(_0x625f('0x4'))['db'];var utils=require(_0x625f('0x5'));var logger=require(_0x625f('0x6'))(_0x625f('0x7'));var config=require(_0x625f('0x8'));var jayson=require(_0x625f('0x9'));var client=jayson['client'][_0x625f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3da3cd,_0x409e4c,_0x1cbe5){return new BPromise(function(_0x4e9c33,_0x1669b0){return client[_0x625f('0xb')](_0x3da3cd,_0x1cbe5)[_0x625f('0xc')](function(_0x568856){logger['info'](_0x625f('0xd'),_0x409e4c,_0x625f('0xe'));logger[_0x625f('0xf')](_0x625f('0x10'),_0x409e4c,_0x625f('0xe'),JSON[_0x625f('0x11')](_0x568856));if(_0x568856[_0x625f('0x12')]){if(_0x568856[_0x625f('0x12')][_0x625f('0x13')]===0x1f4){logger[_0x625f('0x12')](_0x625f('0xd'),_0x409e4c,_0x568856[_0x625f('0x12')][_0x625f('0x14')]);return _0x1669b0(_0x568856[_0x625f('0x12')][_0x625f('0x14')]);}logger[_0x625f('0x12')](_0x625f('0xd'),_0x409e4c,_0x568856[_0x625f('0x12')][_0x625f('0x14')]);return _0x4e9c33(_0x568856['error'][_0x625f('0x14')]);}else{logger[_0x625f('0x15')](_0x625f('0xd'),_0x409e4c,'request\x20sent');_0x4e9c33(_0x568856['result'][_0x625f('0x14')]);}})[_0x625f('0x16')](function(_0x1c0cbc){logger[_0x625f('0x12')](_0x625f('0xd'),_0x409e4c,_0x1c0cbc);_0x1669b0(_0x1c0cbc);});});}
\ No newline at end of file
index a54f8a4..9bc3409 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae64=['./chatApplication.controller','isAuthenticated','show','put','update','delete','destroy','exports','multer','util','../../components/auth/service','../../components/interaction/service'];(function(_0x135883,_0x58624c){var _0x308959=function(_0x416faf){while(--_0x416faf){_0x135883['push'](_0x135883['shift']());}};_0x308959(++_0x58624c);}(_0xae64,0xf8));var _0x4ae6=function(_0x513eca,_0x593007){_0x513eca=_0x513eca-0x0;var _0x2c4e0b=_0xae64[_0x513eca];return _0x2c4e0b;};'use strict';var multer=require(_0x4ae6('0x0'));var util=require(_0x4ae6('0x1'));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(_0x4ae6('0x2'));var interaction=require(_0x4ae6('0x3'));var config=require('../../config/environment');var controller=require(_0x4ae6('0x4'));router['get']('/:id',auth[_0x4ae6('0x5')](),controller[_0x4ae6('0x6')]);router[_0x4ae6('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x4ae6('0x8')]);router[_0x4ae6('0x9')]('/:id',auth[_0x4ae6('0x5')](),controller[_0x4ae6('0xa')]);module[_0x4ae6('0xb')]=router;
\ No newline at end of file
+var _0xc3bb=['fs-extra','../../components/auth/service','../../components/interaction/service','./chatApplication.controller','get','/:id','isAuthenticated','update','delete','destroy','exports','multer','path','connect-timeout','Router'];(function(_0xb151cc,_0x14edc0){var _0x555a24=function(_0x194c94){while(--_0x194c94){_0xb151cc['push'](_0xb151cc['shift']());}};_0x555a24(++_0x14edc0);}(_0xc3bb,0x137));var _0xbc3b=function(_0x2c1860,_0x358fff){_0x2c1860=_0x2c1860-0x0;var _0x2fa3eb=_0xc3bb[_0x2c1860];return _0x2fa3eb;};'use strict';var multer=require(_0xbc3b('0x0'));var util=require('util');var path=require(_0xbc3b('0x1'));var timeout=require(_0xbc3b('0x2'));var express=require('express');var router=express[_0xbc3b('0x3')]();var fs_extra=require(_0xbc3b('0x4'));var auth=require(_0xbc3b('0x5'));var interaction=require(_0xbc3b('0x6'));var config=require('../../config/environment');var controller=require(_0xbc3b('0x7'));router[_0xbc3b('0x8')](_0xbc3b('0x9'),auth[_0xbc3b('0xa')](),controller['show']);router['put'](_0xbc3b('0x9'),auth['isAuthenticated'](),controller[_0xbc3b('0xb')]);router[_0xbc3b('0xc')](_0xbc3b('0x9'),auth[_0xbc3b('0xa')](),controller[_0xbc3b('0xd')]);module[_0xbc3b('0xe')]=router;
\ No newline at end of file
index 8a9d646..4fad7bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0909=['exports','BOOLEAN'];(function(_0x326ae1,_0x559742){var _0x616d33=function(_0xc9f279){while(--_0xc9f279){_0x326ae1['push'](_0x326ae1['shift']());}};_0x616d33(++_0x559742);}(_0x0909,0x1e6));var _0x9090=function(_0x15f3a7,_0x4a01fa){_0x15f3a7=_0x15f3a7-0x0;var _0x57288e=_0x0909[_0x15f3a7];return _0x57288e;};'use strict';var Sequelize=require('sequelize');module[_0x9090('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0x9090('0x1')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xe3b3=['exports','STRING','BOOLEAN','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe3b3,0x1b3));var _0x3e3b=function(_0x25ffcd,_0x13c43d){_0x25ffcd=_0x25ffcd-0x0;var _0x5e7b66=_0xe3b3[_0x25ffcd];return _0x5e7b66;};'use strict';var Sequelize=require(_0x3e3b('0x0'));module[_0x3e3b('0x1')]={'name':{'type':Sequelize[_0x3e3b('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x3e3b('0x2')]},'write':{'type':Sequelize[_0x3e3b('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 57da764..851d7eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e24=['merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','params','keys','create','body','update','find','describe','ChatInternalMessage','user','toInteger','addMembers','omit','getMembers','findOne','User','removeMembers','ids','addMessage','getMessages','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','ChatGroup','rawAttributes','fieldName','key','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter'];(function(_0x310a1b,_0x4c9129){var _0xdea206=function(_0x1f1e8d){while(--_0x1f1e8d){_0x310a1b['push'](_0x310a1b['shift']());}};_0xdea206(++_0x4c9129);}(_0x9e24,0x1a6));var _0x49e2=function(_0x5a2d95,_0xb362e5){_0x5a2d95=_0x5a2d95-0x0;var _0x2c3986=_0x9e24[_0x5a2d95];return _0x2c3986;};'use strict';var emlformat=require(_0x49e2('0x0'));var rimraf=require(_0x49e2('0x1'));var zipdir=require(_0x49e2('0x2'));var jsonpatch=require(_0x49e2('0x3'));var rp=require(_0x49e2('0x4'));var moment=require('moment');var BPromise=require(_0x49e2('0x5'));var Mustache=require(_0x49e2('0x6'));var util=require(_0x49e2('0x7'));var path=require(_0x49e2('0x8'));var sox=require(_0x49e2('0x9'));var csv=require(_0x49e2('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x49e2('0xb'));var squel=require(_0x49e2('0xc'));var crypto=require(_0x49e2('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x49e2('0xe'));var toCsv=require(_0x49e2('0xa'));var querystring=require(_0x49e2('0xf'));var Papa=require(_0x49e2('0x10'));var Redis=require(_0x49e2('0x11'));var authService=require(_0x49e2('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x49e2('0x13'));var logger=require(_0x49e2('0x14'))(_0x49e2('0x15'));var utils=require(_0x49e2('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x49e2('0x17'));var db=require(_0x49e2('0x18'))['db'];config[_0x49e2('0x19')]=_[_0x49e2('0x1a')](config['redis'],{'host':_0x49e2('0x1b'),'port':0x18eb});var socket=require(_0x49e2('0x1c'))(new Redis(config['redis']));require(_0x49e2('0x1d'))['register'](socket);function respondWithStatusCode(_0x556f23,_0x293301){_0x293301=_0x293301||0xcc;return function(_0x2a4e98){if(_0x2a4e98){return _0x556f23['sendStatus'](_0x293301);}return _0x556f23[_0x49e2('0x1e')](_0x293301)['end']();};}function respondWithResult(_0x1fb3dc,_0x33945c){_0x33945c=_0x33945c||0xc8;return function(_0x2f037a){if(_0x2f037a){return _0x1fb3dc['status'](_0x33945c)[_0x49e2('0x1f')](_0x2f037a);}};}function respondWithFilteredResult(_0x56ef0f,_0x456e4a){return function(_0x5f1e51){if(_0x5f1e51){var _0x372fea=typeof _0x456e4a[_0x49e2('0x20')]===_0x49e2('0x21')&&typeof _0x456e4a[_0x49e2('0x22')]==='undefined';var _0x64634a=_0x5f1e51[_0x49e2('0x23')];var _0x166149=_0x372fea?0x0:_0x456e4a[_0x49e2('0x20')];var _0x3164de=_0x372fea?_0x5f1e51[_0x49e2('0x23')]:_0x456e4a[_0x49e2('0x20')]+_0x456e4a[_0x49e2('0x22')];var _0x357bd9;if(_0x3164de>=_0x64634a){_0x3164de=_0x64634a;_0x357bd9=0xc8;}else{_0x357bd9=0xce;}_0x56ef0f[_0x49e2('0x1e')](_0x357bd9);return _0x56ef0f[_0x49e2('0x24')](_0x49e2('0x25'),_0x166149+'-'+_0x3164de+'/'+_0x64634a)[_0x49e2('0x1f')](_0x5f1e51);}return null;};}function patchUpdates(_0xc5924e){return function(_0x37338e){try{jsonpatch[_0x49e2('0x26')](_0x37338e,_0xc5924e,!![]);}catch(_0x2f0ca0){return BPromise[_0x49e2('0x27')](_0x2f0ca0);}return _0x37338e[_0x49e2('0x28')]();};}function saveUpdates(_0x285136,_0xa4e39f){return function(_0x24a620){if(_0x24a620){return _0x24a620['update'](_0x285136)[_0x49e2('0x29')](function(_0x3fbfe2){return _0x3fbfe2;});}return null;};}function removeEntity(_0x23d28e,_0x38e3d2){return function(_0x21421f){if(_0x21421f){return _0x21421f[_0x49e2('0x2a')]()[_0x49e2('0x29')](function(){_0x23d28e[_0x49e2('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ecf98,_0x57eafd){return function(_0x5c8cef){if(!_0x5c8cef){_0x4ecf98[_0x49e2('0x2b')](0x194);}return _0x5c8cef;};}function handleError(_0x55310d,_0xc65a3f){_0xc65a3f=_0xc65a3f||0x1f4;return function(_0xc9485c){logger[_0x49e2('0x2c')](_0xc9485c[_0x49e2('0x2d')]);if(_0xc9485c[_0x49e2('0x2e')]){delete _0xc9485c[_0x49e2('0x2e')];}_0x55310d[_0x49e2('0x1e')](_0xc65a3f)[_0x49e2('0x2f')](_0xc9485c);};}exports[_0x49e2('0x30')]=function(_0x22f6d9,_0x46a206){var _0xb9d1d4={},_0x3d3184={},_0x451869={'count':0x0,'rows':[]};var _0x3a509b=_[_0x49e2('0x31')](db[_0x49e2('0x32')][_0x49e2('0x33')],function(_0x5d76ba){return{'name':_0x5d76ba[_0x49e2('0x34')],'type':_0x5d76ba['type'][_0x49e2('0x35')]};});_0x3d3184[_0x49e2('0x36')]=_[_0x49e2('0x31')](_0x3a509b,_0x49e2('0x2e'));_0x3d3184['query']=_['keys'](_0x22f6d9[_0x49e2('0x37')]);_0x3d3184['filters']=_['intersection'](_0x3d3184[_0x49e2('0x36')],_0x3d3184['query']);_0xb9d1d4[_0x49e2('0x38')]=_[_0x49e2('0x39')](_0x3d3184[_0x49e2('0x36')],qs[_0x49e2('0x3a')](_0x22f6d9[_0x49e2('0x37')][_0x49e2('0x3a')]));_0xb9d1d4[_0x49e2('0x38')]=_0xb9d1d4['attributes'][_0x49e2('0x3b')]?_0xb9d1d4['attributes']:_0x3d3184[_0x49e2('0x36')];if(!_0x22f6d9[_0x49e2('0x37')][_0x49e2('0x3c')](_0x49e2('0x3d'))){_0xb9d1d4[_0x49e2('0x22')]=qs[_0x49e2('0x22')](_0x22f6d9[_0x49e2('0x37')]['limit']);_0xb9d1d4[_0x49e2('0x20')]=qs[_0x49e2('0x20')](_0x22f6d9[_0x49e2('0x37')][_0x49e2('0x20')]);}_0xb9d1d4[_0x49e2('0x3e')]=qs['sort'](_0x22f6d9[_0x49e2('0x37')][_0x49e2('0x3f')]);_0xb9d1d4[_0x49e2('0x40')]=qs['filters'](_[_0x49e2('0x41')](_0x22f6d9[_0x49e2('0x37')],_0x3d3184[_0x49e2('0x42')]),_0x3a509b);if(_0x22f6d9['query'][_0x49e2('0x43')]){_0xb9d1d4['where']=_[_0x49e2('0x44')](_0xb9d1d4[_0x49e2('0x40')],{'$or':_[_0x49e2('0x31')](_0x3a509b,function(_0x3908c9){if(_0x3908c9[_0x49e2('0x45')]!==_0x49e2('0x46')){var _0x3bd9b6={};_0x3bd9b6[_0x3908c9['name']]={'$like':'%'+_0x22f6d9[_0x49e2('0x37')][_0x49e2('0x43')]+'%'};return _0x3bd9b6;}})});}_0xb9d1d4=_['merge']({},_0xb9d1d4,_0x22f6d9[_0x49e2('0x47')]);var _0x4f7d51={'where':_0xb9d1d4[_0x49e2('0x40')]};return db[_0x49e2('0x32')]['count'](_0x4f7d51)[_0x49e2('0x29')](function(_0x5a1325){_0x451869[_0x49e2('0x23')]=_0x5a1325;if(_0x22f6d9[_0x49e2('0x37')][_0x49e2('0x48')]){_0xb9d1d4['include']=[{'all':!![]}];}return db[_0x49e2('0x32')][_0x49e2('0x49')](_0xb9d1d4);})[_0x49e2('0x29')](function(_0x179c4a){_0x451869[_0x49e2('0x4a')]=_0x179c4a;return _0x451869;})[_0x49e2('0x29')](respondWithFilteredResult(_0x46a206,_0xb9d1d4))[_0x49e2('0x4b')](handleError(_0x46a206,null));};exports['show']=function(_0x2581df,_0x35e270){var _0x3c3ed8={'raw':!![],'where':{'id':_0x2581df[_0x49e2('0x4c')]['id']}},_0x5e3982={};_0x5e3982[_0x49e2('0x36')]=_['keys'](db['ChatGroup']['rawAttributes']);_0x5e3982[_0x49e2('0x37')]=_[_0x49e2('0x4d')](_0x2581df[_0x49e2('0x37')]);_0x5e3982['filters']=_[_0x49e2('0x39')](_0x5e3982['model'],_0x5e3982[_0x49e2('0x37')]);_0x3c3ed8[_0x49e2('0x38')]=_[_0x49e2('0x39')](_0x5e3982[_0x49e2('0x36')],qs[_0x49e2('0x3a')](_0x2581df[_0x49e2('0x37')][_0x49e2('0x3a')]));_0x3c3ed8['attributes']=_0x3c3ed8[_0x49e2('0x38')][_0x49e2('0x3b')]?_0x3c3ed8[_0x49e2('0x38')]:_0x5e3982[_0x49e2('0x36')];if(_0x2581df[_0x49e2('0x37')][_0x49e2('0x48')]){_0x3c3ed8['include']=[{'all':!![]}];}_0x3c3ed8=_[_0x49e2('0x44')]({},_0x3c3ed8,_0x2581df[_0x49e2('0x47')]);return db[_0x49e2('0x32')]['find'](_0x3c3ed8)[_0x49e2('0x29')](handleEntityNotFound(_0x35e270,null))[_0x49e2('0x29')](respondWithResult(_0x35e270,null))['catch'](handleError(_0x35e270,null));};exports[_0x49e2('0x4e')]=function(_0x2b1fa5,_0x42d1a5){return db[_0x49e2('0x32')][_0x49e2('0x4e')](_0x2b1fa5[_0x49e2('0x4f')],{})['then'](respondWithResult(_0x42d1a5,0xc9))[_0x49e2('0x4b')](handleError(_0x42d1a5,null));};exports[_0x49e2('0x50')]=function(_0x4952a1,_0x51728a){if(_0x4952a1['body']['id']){delete _0x4952a1[_0x49e2('0x4f')]['id'];}return db['ChatGroup'][_0x49e2('0x51')]({'where':{'id':_0x4952a1[_0x49e2('0x4c')]['id']}})['then'](handleEntityNotFound(_0x51728a,null))[_0x49e2('0x29')](saveUpdates(_0x4952a1[_0x49e2('0x4f')],null))['then'](respondWithResult(_0x51728a,null))[_0x49e2('0x4b')](handleError(_0x51728a,null));};exports['destroy']=function(_0x4455f9,_0x3ca02a){return db[_0x49e2('0x32')][_0x49e2('0x51')]({'where':{'id':_0x4455f9[_0x49e2('0x4c')]['id']}})[_0x49e2('0x29')](handleEntityNotFound(_0x3ca02a,null))[_0x49e2('0x29')](removeEntity(_0x3ca02a,null))[_0x49e2('0x4b')](handleError(_0x3ca02a,null));};exports[_0x49e2('0x52')]=function(_0x49da45,_0x16098f){return db[_0x49e2('0x32')][_0x49e2('0x52')]()['then'](respondWithResult(_0x16098f,null))[_0x49e2('0x4b')](handleError(_0x16098f,null));};exports['getUnread']=function(_0xed5891,_0x11ecc4,_0x290ca6){return db[_0x49e2('0x53')][_0x49e2('0x23')]({'where':{'ChatGroupId':_0xed5891[_0x49e2('0x4c')]['id'],'ToId':_0xed5891[_0x49e2('0x54')]['id'],'read':![]}})['then'](function(_0x2be8cb){return{'id':_[_0x49e2('0x55')](_0xed5891[_0x49e2('0x4c')]['id']),'count':_0x2be8cb};})['then'](respondWithResult(_0x11ecc4,null))[_0x49e2('0x4b')](handleError(_0x11ecc4,null));};exports[_0x49e2('0x56')]=function(_0x358401,_0x259d0f,_0x3a8964){return db[_0x49e2('0x32')][_0x49e2('0x51')]({'where':{'id':_0x358401[_0x49e2('0x4c')]['id']}})[_0x49e2('0x29')](handleEntityNotFound(_0x259d0f,null))[_0x49e2('0x29')](function(_0xb1e186){if(_0xb1e186){return _0xb1e186['addMembers'](_0x358401[_0x49e2('0x4f')]['ids'],_[_0x49e2('0x57')](_0x358401['body'],['ids','id'])||{});}})[_0x49e2('0x29')](respondWithResult(_0x259d0f,null))[_0x49e2('0x4b')](handleError(_0x259d0f,null));};exports[_0x49e2('0x58')]=function(_0x98bbec,_0x1cdf66,_0x50addb){var _0x1063da={};var _0x219d60={};var _0x391c2b;var _0x5b4387;return db[_0x49e2('0x32')][_0x49e2('0x59')]({'where':{'id':_0x98bbec['params']['id']}})[_0x49e2('0x29')](handleEntityNotFound(_0x1cdf66,null))[_0x49e2('0x29')](function(_0x14304c){if(_0x14304c){_0x391c2b=_0x14304c;_0x219d60[_0x49e2('0x36')]=_[_0x49e2('0x4d')](db[_0x49e2('0x5a')]['rawAttributes']);_0x219d60['query']=_[_0x49e2('0x4d')](_0x98bbec[_0x49e2('0x37')]);_0x219d60[_0x49e2('0x42')]=_[_0x49e2('0x39')](_0x219d60['model'],_0x219d60[_0x49e2('0x37')]);_0x1063da[_0x49e2('0x38')]=_[_0x49e2('0x39')](_0x219d60[_0x49e2('0x36')],qs['fields'](_0x98bbec[_0x49e2('0x37')][_0x49e2('0x3a')]));_0x1063da['attributes']=_0x1063da['attributes'][_0x49e2('0x3b')]?_0x1063da[_0x49e2('0x38')]:_0x219d60[_0x49e2('0x36')];_0x1063da['order']=qs[_0x49e2('0x3f')](_0x98bbec['query']['sort']);_0x1063da[_0x49e2('0x40')]=qs['filters'](_[_0x49e2('0x41')](_0x98bbec[_0x49e2('0x37')],_0x219d60[_0x49e2('0x42')]));if(_0x98bbec['query'][_0x49e2('0x43')]){_0x1063da[_0x49e2('0x40')]=_[_0x49e2('0x44')](_0x1063da['where'],{'$or':_[_0x49e2('0x31')](_0x1063da['attributes'],function(_0x259a8d){var _0x49dfaf={};_0x49dfaf[_0x259a8d]={'$like':'%'+_0x98bbec[_0x49e2('0x37')][_0x49e2('0x43')]+'%'};return _0x49dfaf;})});}_0x1063da=_[_0x49e2('0x44')]({},_0x1063da,_0x98bbec['options']);return _0x391c2b[_0x49e2('0x58')](_0x1063da);}})['then'](function(_0x2eafa3){if(_0x2eafa3){_0x5b4387=_0x2eafa3[_0x49e2('0x3b')];if(!_0x98bbec[_0x49e2('0x37')][_0x49e2('0x3c')](_0x49e2('0x3d'))){_0x1063da[_0x49e2('0x22')]=qs[_0x49e2('0x22')](_0x98bbec[_0x49e2('0x37')][_0x49e2('0x22')]);_0x1063da[_0x49e2('0x20')]=qs['offset'](_0x98bbec[_0x49e2('0x37')][_0x49e2('0x20')]);}return _0x391c2b[_0x49e2('0x58')](_0x1063da);}})[_0x49e2('0x29')](function(_0x4a3789){if(_0x4a3789){return _0x4a3789?{'count':_0x5b4387,'rows':_0x4a3789}:null;}})[_0x49e2('0x29')](respondWithResult(_0x1cdf66,null))['catch'](handleError(_0x1cdf66,null));};exports[_0x49e2('0x5b')]=function(_0x401b26,_0xb9e28d,_0x4181c3){return db[_0x49e2('0x32')][_0x49e2('0x51')]({'where':{'id':_0x401b26[_0x49e2('0x4c')]['id']}})['then'](handleEntityNotFound(_0xb9e28d,null))[_0x49e2('0x29')](function(_0x38b0ed){if(_0x38b0ed){return _0x38b0ed[_0x49e2('0x5b')](_0x401b26[_0x49e2('0x37')][_0x49e2('0x5c')]);}})[_0x49e2('0x29')](respondWithStatusCode(_0xb9e28d,null))['catch'](handleError(_0xb9e28d,null));};exports[_0x49e2('0x5d')]=function(_0x370767,_0x4d55d8,_0x3dea0e){if(_0x370767[_0x49e2('0x4f')]['id']){delete _0x370767[_0x49e2('0x4f')]['id'];}return db[_0x49e2('0x32')]['find']({'where':{'id':_0x370767[_0x49e2('0x4c')]['id']}})[_0x49e2('0x29')](handleEntityNotFound(_0x4d55d8,null))['then'](function(_0x11f8e4){if(_0x11f8e4){_0x370767[_0x49e2('0x4f')]['ChatGroupId']=_0x11f8e4['id'];return db[_0x49e2('0x53')][_0x49e2('0x4e')](_0x370767[_0x49e2('0x4f')]);}})[_0x49e2('0x29')](respondWithResult(_0x4d55d8,null))[_0x49e2('0x4b')](handleError(_0x4d55d8,null));};exports[_0x49e2('0x5e')]=function(_0x5e78c5,_0x60e143,_0x52e282){var _0x234f7e={};var _0x4ce826={};var _0xfca45c;var _0x3c43e4;return db[_0x49e2('0x32')][_0x49e2('0x59')]({'where':{'id':_0x5e78c5[_0x49e2('0x4c')]['id']}})[_0x49e2('0x29')](handleEntityNotFound(_0x60e143,null))[_0x49e2('0x29')](function(_0x41e7f4){if(_0x41e7f4){_0xfca45c=_0x41e7f4;_0x4ce826[_0x49e2('0x36')]=_['keys'](db[_0x49e2('0x53')]['rawAttributes']);_0x4ce826[_0x49e2('0x37')]=_['keys'](_0x5e78c5[_0x49e2('0x37')]);_0x4ce826[_0x49e2('0x42')]=_[_0x49e2('0x39')](_0x4ce826[_0x49e2('0x36')],_0x4ce826['query']);_0x234f7e[_0x49e2('0x38')]=_[_0x49e2('0x39')](_0x4ce826[_0x49e2('0x36')],qs[_0x49e2('0x3a')](_0x5e78c5[_0x49e2('0x37')][_0x49e2('0x3a')]));_0x234f7e['attributes']=_0x234f7e['attributes'][_0x49e2('0x3b')]?_0x234f7e[_0x49e2('0x38')]:_0x4ce826['model'];_0x234f7e[_0x49e2('0x3e')]=qs[_0x49e2('0x3f')](_0x5e78c5['query'][_0x49e2('0x3f')]);_0x234f7e[_0x49e2('0x40')]=qs['filters'](_[_0x49e2('0x41')](_0x5e78c5['query'],_0x4ce826[_0x49e2('0x42')]));if(_0x5e78c5['query']['filter']){_0x234f7e[_0x49e2('0x40')]=_[_0x49e2('0x44')](_0x234f7e[_0x49e2('0x40')],{'$or':_[_0x49e2('0x31')](_0x234f7e[_0x49e2('0x38')],function(_0x51a779){var _0x1c9bad={};_0x1c9bad[_0x51a779]={'$like':'%'+_0x5e78c5[_0x49e2('0x37')]['filter']+'%'};return _0x1c9bad;})});}if(_0x5e78c5[_0x49e2('0x37')]['$gte']){var _0x1b2846=_0x5e78c5[_0x49e2('0x37')]['$gte'][_0x49e2('0x5f')](',');var _0x50cc55={};_0x50cc55[_0x1b2846[0x0]]={'$gte':moment(_0x1b2846[0x1])[_0x49e2('0x60')](_0x49e2('0x61'))};_0x234f7e[_0x49e2('0x40')]=_[_0x49e2('0x44')](_0x234f7e[_0x49e2('0x40')],_0x50cc55);}_0x234f7e=_[_0x49e2('0x44')]({},_0x234f7e,_0x5e78c5[_0x49e2('0x47')]);return _0xfca45c[_0x49e2('0x5e')](_0x234f7e);}})['then'](function(_0x105db3){if(_0x105db3){_0x3c43e4=_0x105db3[_0x49e2('0x3b')];if(!_0x5e78c5[_0x49e2('0x37')][_0x49e2('0x3c')](_0x49e2('0x3d'))){_0x234f7e['limit']=qs[_0x49e2('0x22')](_0x5e78c5[_0x49e2('0x37')][_0x49e2('0x22')]);_0x234f7e[_0x49e2('0x20')]=qs[_0x49e2('0x20')](_0x5e78c5[_0x49e2('0x37')]['offset']);}return _0xfca45c['getMessages'](_0x234f7e);}})['then'](function(_0xcbc7d2){if(_0xcbc7d2){return _0xcbc7d2?{'count':_0x3c43e4,'rows':_0xcbc7d2}:null;}})[_0x49e2('0x29')](respondWithResult(_0x60e143,null))['catch'](handleError(_0x60e143,null));};
\ No newline at end of file
+var _0x0d90=['./chatGroup.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','index','map','ChatGroup','rawAttributes','fieldName','type','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','includeAll','include','findAll','rows','show','params','find','catch','create','body','describe','ChatInternalMessage','user','toInteger','addMembers','ids','getMembers','findOne','filter','options','length','removeMembers','addMessage','getMessages','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x0d90,0xff));var _0x00d9=function(_0x9365b,_0xa84aad){_0x9365b=_0x9365b-0x0;var _0x1672e0=_0x0d90[_0x9365b];return _0x1672e0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x00d9('0x0'));var zipdir=require(_0x00d9('0x1'));var jsonpatch=require(_0x00d9('0x2'));var rp=require(_0x00d9('0x3'));var moment=require('moment');var BPromise=require(_0x00d9('0x4'));var Mustache=require(_0x00d9('0x5'));var util=require(_0x00d9('0x6'));var path=require('path');var sox=require(_0x00d9('0x7'));var csv=require(_0x00d9('0x8'));var ejs=require(_0x00d9('0x9'));var fs=require('fs');var fs_extra=require(_0x00d9('0xa'));var _=require(_0x00d9('0xb'));var squel=require(_0x00d9('0xc'));var crypto=require('crypto');var jsforce=require(_0x00d9('0xd'));var deskjs=require(_0x00d9('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x00d9('0xf'));var Redis=require(_0x00d9('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x00d9('0x11'));var as=require(_0x00d9('0x12'));var hardwareService=require(_0x00d9('0x13'));var logger=require(_0x00d9('0x14'))(_0x00d9('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x00d9('0x16'));var db=require(_0x00d9('0x17'))['db'];config[_0x00d9('0x18')]=_['defaults'](config[_0x00d9('0x18')],{'host':_0x00d9('0x19'),'port':0x18eb});var socket=require(_0x00d9('0x1a'))(new Redis(config[_0x00d9('0x18')]));require(_0x00d9('0x1b'))[_0x00d9('0x1c')](socket);function respondWithStatusCode(_0x5903b2,_0x1df387){_0x1df387=_0x1df387||0xcc;return function(_0x5c10f9){if(_0x5c10f9){return _0x5903b2[_0x00d9('0x1d')](_0x1df387);}return _0x5903b2[_0x00d9('0x1e')](_0x1df387)['end']();};}function respondWithResult(_0xb83023,_0x3d1e95){_0x3d1e95=_0x3d1e95||0xc8;return function(_0xaedfb8){if(_0xaedfb8){return _0xb83023[_0x00d9('0x1e')](_0x3d1e95)[_0x00d9('0x1f')](_0xaedfb8);}};}function respondWithFilteredResult(_0x13e301,_0x577387){return function(_0x411a57){if(_0x411a57){var _0x40e764=typeof _0x577387[_0x00d9('0x20')]===_0x00d9('0x21')&&typeof _0x577387[_0x00d9('0x22')]===_0x00d9('0x21');var _0x50635f=_0x411a57[_0x00d9('0x23')];var _0x131b67=_0x40e764?0x0:_0x577387[_0x00d9('0x20')];var _0x3710cc=_0x40e764?_0x411a57[_0x00d9('0x23')]:_0x577387[_0x00d9('0x20')]+_0x577387[_0x00d9('0x22')];var _0x1ec689;if(_0x3710cc>=_0x50635f){_0x3710cc=_0x50635f;_0x1ec689=0xc8;}else{_0x1ec689=0xce;}_0x13e301['status'](_0x1ec689);return _0x13e301['set'](_0x00d9('0x24'),_0x131b67+'-'+_0x3710cc+'/'+_0x50635f)[_0x00d9('0x1f')](_0x411a57);}return null;};}function patchUpdates(_0x2d8934){return function(_0xbb86d1){try{jsonpatch['apply'](_0xbb86d1,_0x2d8934,!![]);}catch(_0x597182){return BPromise[_0x00d9('0x25')](_0x597182);}return _0xbb86d1[_0x00d9('0x26')]();};}function saveUpdates(_0x2a7fd8,_0x89c33){return function(_0x238b25){if(_0x238b25){return _0x238b25[_0x00d9('0x27')](_0x2a7fd8)[_0x00d9('0x28')](function(_0x5b7878){return _0x5b7878;});}return null;};}function removeEntity(_0x42365e,_0x3561cb){return function(_0x28bfa8){if(_0x28bfa8){return _0x28bfa8[_0x00d9('0x29')]()[_0x00d9('0x28')](function(){_0x42365e[_0x00d9('0x1e')](0xcc)[_0x00d9('0x2a')]();});}};}function handleEntityNotFound(_0x20d7a7,_0x3c11a9){return function(_0x2ca38f){if(!_0x2ca38f){_0x20d7a7['sendStatus'](0x194);}return _0x2ca38f;};}function handleError(_0x3655ce,_0x4c1bad){_0x4c1bad=_0x4c1bad||0x1f4;return function(_0x1e645d){logger[_0x00d9('0x2b')](_0x1e645d[_0x00d9('0x2c')]);if(_0x1e645d[_0x00d9('0x2d')]){delete _0x1e645d[_0x00d9('0x2d')];}_0x3655ce[_0x00d9('0x1e')](_0x4c1bad)[_0x00d9('0x2e')](_0x1e645d);};}exports[_0x00d9('0x2f')]=function(_0xe56a90,_0x25a547){var _0x38de46={},_0x43f85d={},_0x457fc3={'count':0x0,'rows':[]};var _0x138e8f=_[_0x00d9('0x30')](db[_0x00d9('0x31')][_0x00d9('0x32')],function(_0x358927){return{'name':_0x358927[_0x00d9('0x33')],'type':_0x358927[_0x00d9('0x34')]['key']};});_0x43f85d['model']=_['map'](_0x138e8f,_0x00d9('0x2d'));_0x43f85d['query']=_[_0x00d9('0x35')](_0xe56a90[_0x00d9('0x36')]);_0x43f85d[_0x00d9('0x37')]=_[_0x00d9('0x38')](_0x43f85d[_0x00d9('0x39')],_0x43f85d[_0x00d9('0x36')]);_0x38de46[_0x00d9('0x3a')]=_[_0x00d9('0x38')](_0x43f85d[_0x00d9('0x39')],qs[_0x00d9('0x3b')](_0xe56a90[_0x00d9('0x36')][_0x00d9('0x3b')]));_0x38de46[_0x00d9('0x3a')]=_0x38de46[_0x00d9('0x3a')]['length']?_0x38de46['attributes']:_0x43f85d[_0x00d9('0x39')];if(!_0xe56a90['query'][_0x00d9('0x3c')](_0x00d9('0x3d'))){_0x38de46[_0x00d9('0x22')]=qs[_0x00d9('0x22')](_0xe56a90[_0x00d9('0x36')][_0x00d9('0x22')]);_0x38de46[_0x00d9('0x20')]=qs[_0x00d9('0x20')](_0xe56a90[_0x00d9('0x36')]['offset']);}_0x38de46[_0x00d9('0x3e')]=qs[_0x00d9('0x3f')](_0xe56a90[_0x00d9('0x36')][_0x00d9('0x3f')]);_0x38de46[_0x00d9('0x40')]=qs[_0x00d9('0x37')](_[_0x00d9('0x41')](_0xe56a90[_0x00d9('0x36')],_0x43f85d[_0x00d9('0x37')]),_0x138e8f);if(_0xe56a90[_0x00d9('0x36')]['filter']){_0x38de46['where']=_[_0x00d9('0x42')](_0x38de46[_0x00d9('0x40')],{'$or':_[_0x00d9('0x30')](_0x138e8f,function(_0x4dc723){if(_0x4dc723['type']!=='VIRTUAL'){var _0x28c3f7={};_0x28c3f7[_0x4dc723['name']]={'$like':'%'+_0xe56a90['query']['filter']+'%'};return _0x28c3f7;}})});}_0x38de46=_[_0x00d9('0x42')]({},_0x38de46,_0xe56a90['options']);var _0x1196e0={'where':_0x38de46[_0x00d9('0x40')]};return db[_0x00d9('0x31')][_0x00d9('0x23')](_0x1196e0)['then'](function(_0x55ad08){_0x457fc3['count']=_0x55ad08;if(_0xe56a90[_0x00d9('0x36')][_0x00d9('0x43')]){_0x38de46[_0x00d9('0x44')]=[{'all':!![]}];}return db[_0x00d9('0x31')][_0x00d9('0x45')](_0x38de46);})[_0x00d9('0x28')](function(_0x4e5744){_0x457fc3[_0x00d9('0x46')]=_0x4e5744;return _0x457fc3;})[_0x00d9('0x28')](respondWithFilteredResult(_0x25a547,_0x38de46))['catch'](handleError(_0x25a547,null));};exports[_0x00d9('0x47')]=function(_0x3ca0b6,_0x38a813){var _0x5d5bd3={'raw':!![],'where':{'id':_0x3ca0b6[_0x00d9('0x48')]['id']}},_0x1c9708={};_0x1c9708[_0x00d9('0x39')]=_[_0x00d9('0x35')](db['ChatGroup'][_0x00d9('0x32')]);_0x1c9708['query']=_[_0x00d9('0x35')](_0x3ca0b6['query']);_0x1c9708[_0x00d9('0x37')]=_['intersection'](_0x1c9708[_0x00d9('0x39')],_0x1c9708[_0x00d9('0x36')]);_0x5d5bd3[_0x00d9('0x3a')]=_[_0x00d9('0x38')](_0x1c9708[_0x00d9('0x39')],qs['fields'](_0x3ca0b6[_0x00d9('0x36')][_0x00d9('0x3b')]));_0x5d5bd3['attributes']=_0x5d5bd3[_0x00d9('0x3a')]['length']?_0x5d5bd3[_0x00d9('0x3a')]:_0x1c9708[_0x00d9('0x39')];if(_0x3ca0b6[_0x00d9('0x36')]['includeAll']){_0x5d5bd3[_0x00d9('0x44')]=[{'all':!![]}];}_0x5d5bd3=_['merge']({},_0x5d5bd3,_0x3ca0b6['options']);return db[_0x00d9('0x31')][_0x00d9('0x49')](_0x5d5bd3)[_0x00d9('0x28')](handleEntityNotFound(_0x38a813,null))[_0x00d9('0x28')](respondWithResult(_0x38a813,null))[_0x00d9('0x4a')](handleError(_0x38a813,null));};exports[_0x00d9('0x4b')]=function(_0x31f7c1,_0x5d003a){return db[_0x00d9('0x31')][_0x00d9('0x4b')](_0x31f7c1[_0x00d9('0x4c')],{})[_0x00d9('0x28')](respondWithResult(_0x5d003a,0xc9))[_0x00d9('0x4a')](handleError(_0x5d003a,null));};exports[_0x00d9('0x27')]=function(_0x541811,_0x5de681){if(_0x541811[_0x00d9('0x4c')]['id']){delete _0x541811['body']['id'];}return db[_0x00d9('0x31')][_0x00d9('0x49')]({'where':{'id':_0x541811[_0x00d9('0x48')]['id']}})[_0x00d9('0x28')](handleEntityNotFound(_0x5de681,null))[_0x00d9('0x28')](saveUpdates(_0x541811['body'],null))['then'](respondWithResult(_0x5de681,null))[_0x00d9('0x4a')](handleError(_0x5de681,null));};exports[_0x00d9('0x29')]=function(_0x39038b,_0x3862c8){return db[_0x00d9('0x31')][_0x00d9('0x49')]({'where':{'id':_0x39038b[_0x00d9('0x48')]['id']}})['then'](handleEntityNotFound(_0x3862c8,null))[_0x00d9('0x28')](removeEntity(_0x3862c8,null))['catch'](handleError(_0x3862c8,null));};exports[_0x00d9('0x4d')]=function(_0x555a15,_0x1b0d6d){return db[_0x00d9('0x31')][_0x00d9('0x4d')]()[_0x00d9('0x28')](respondWithResult(_0x1b0d6d,null))[_0x00d9('0x4a')](handleError(_0x1b0d6d,null));};exports['getUnread']=function(_0x400051,_0x1841cc,_0x5d576c){return db[_0x00d9('0x4e')]['count']({'where':{'ChatGroupId':_0x400051['params']['id'],'ToId':_0x400051[_0x00d9('0x4f')]['id'],'read':![]}})[_0x00d9('0x28')](function(_0x3991ac){return{'id':_[_0x00d9('0x50')](_0x400051['params']['id']),'count':_0x3991ac};})[_0x00d9('0x28')](respondWithResult(_0x1841cc,null))[_0x00d9('0x4a')](handleError(_0x1841cc,null));};exports[_0x00d9('0x51')]=function(_0x83944d,_0x426caa,_0x34ac42){return db[_0x00d9('0x31')][_0x00d9('0x49')]({'where':{'id':_0x83944d[_0x00d9('0x48')]['id']}})[_0x00d9('0x28')](handleEntityNotFound(_0x426caa,null))[_0x00d9('0x28')](function(_0x35e71a){if(_0x35e71a){return _0x35e71a['addMembers'](_0x83944d[_0x00d9('0x4c')][_0x00d9('0x52')],_['omit'](_0x83944d[_0x00d9('0x4c')],['ids','id'])||{});}})[_0x00d9('0x28')](respondWithResult(_0x426caa,null))[_0x00d9('0x4a')](handleError(_0x426caa,null));};exports[_0x00d9('0x53')]=function(_0x1350c6,_0x3a648a,_0x4eeb5d){var _0x4a9147={};var _0x25cf52={};var _0x4da371;var _0x3d5495;return db['ChatGroup'][_0x00d9('0x54')]({'where':{'id':_0x1350c6[_0x00d9('0x48')]['id']}})[_0x00d9('0x28')](handleEntityNotFound(_0x3a648a,null))[_0x00d9('0x28')](function(_0x36d31c){if(_0x36d31c){_0x4da371=_0x36d31c;_0x25cf52[_0x00d9('0x39')]=_[_0x00d9('0x35')](db['User'][_0x00d9('0x32')]);_0x25cf52[_0x00d9('0x36')]=_[_0x00d9('0x35')](_0x1350c6[_0x00d9('0x36')]);_0x25cf52['filters']=_[_0x00d9('0x38')](_0x25cf52[_0x00d9('0x39')],_0x25cf52[_0x00d9('0x36')]);_0x4a9147[_0x00d9('0x3a')]=_[_0x00d9('0x38')](_0x25cf52[_0x00d9('0x39')],qs[_0x00d9('0x3b')](_0x1350c6['query'][_0x00d9('0x3b')]));_0x4a9147[_0x00d9('0x3a')]=_0x4a9147[_0x00d9('0x3a')]['length']?_0x4a9147[_0x00d9('0x3a')]:_0x25cf52['model'];_0x4a9147['order']=qs[_0x00d9('0x3f')](_0x1350c6[_0x00d9('0x36')][_0x00d9('0x3f')]);_0x4a9147['where']=qs['filters'](_[_0x00d9('0x41')](_0x1350c6[_0x00d9('0x36')],_0x25cf52[_0x00d9('0x37')]));if(_0x1350c6['query'][_0x00d9('0x55')]){_0x4a9147['where']=_[_0x00d9('0x42')](_0x4a9147['where'],{'$or':_[_0x00d9('0x30')](_0x4a9147['attributes'],function(_0xe16f85){var _0x49baea={};_0x49baea[_0xe16f85]={'$like':'%'+_0x1350c6[_0x00d9('0x36')][_0x00d9('0x55')]+'%'};return _0x49baea;})});}_0x4a9147=_[_0x00d9('0x42')]({},_0x4a9147,_0x1350c6[_0x00d9('0x56')]);return _0x4da371['getMembers'](_0x4a9147);}})[_0x00d9('0x28')](function(_0x4f7437){if(_0x4f7437){_0x3d5495=_0x4f7437[_0x00d9('0x57')];if(!_0x1350c6['query'][_0x00d9('0x3c')](_0x00d9('0x3d'))){_0x4a9147[_0x00d9('0x22')]=qs[_0x00d9('0x22')](_0x1350c6['query'][_0x00d9('0x22')]);_0x4a9147[_0x00d9('0x20')]=qs[_0x00d9('0x20')](_0x1350c6[_0x00d9('0x36')][_0x00d9('0x20')]);}return _0x4da371['getMembers'](_0x4a9147);}})[_0x00d9('0x28')](function(_0x335d80){if(_0x335d80){return _0x335d80?{'count':_0x3d5495,'rows':_0x335d80}:null;}})[_0x00d9('0x28')](respondWithResult(_0x3a648a,null))['catch'](handleError(_0x3a648a,null));};exports['removeMembers']=function(_0x319c93,_0x146401,_0x57030f){return db[_0x00d9('0x31')]['find']({'where':{'id':_0x319c93[_0x00d9('0x48')]['id']}})[_0x00d9('0x28')](handleEntityNotFound(_0x146401,null))[_0x00d9('0x28')](function(_0x3c1b97){if(_0x3c1b97){return _0x3c1b97[_0x00d9('0x58')](_0x319c93['query'][_0x00d9('0x52')]);}})['then'](respondWithStatusCode(_0x146401,null))[_0x00d9('0x4a')](handleError(_0x146401,null));};exports[_0x00d9('0x59')]=function(_0x39869b,_0x435832,_0x6bdc3d){if(_0x39869b[_0x00d9('0x4c')]['id']){delete _0x39869b[_0x00d9('0x4c')]['id'];}return db[_0x00d9('0x31')][_0x00d9('0x49')]({'where':{'id':_0x39869b[_0x00d9('0x48')]['id']}})[_0x00d9('0x28')](handleEntityNotFound(_0x435832,null))['then'](function(_0x1db32b){if(_0x1db32b){_0x39869b[_0x00d9('0x4c')]['ChatGroupId']=_0x1db32b['id'];return db[_0x00d9('0x4e')][_0x00d9('0x4b')](_0x39869b[_0x00d9('0x4c')]);}})[_0x00d9('0x28')](respondWithResult(_0x435832,null))[_0x00d9('0x4a')](handleError(_0x435832,null));};exports[_0x00d9('0x5a')]=function(_0x59c805,_0x9d6528,_0x12a9ba){var _0x1a8e43={};var _0x3cf9a3={};var _0x3ab11a;var _0x3684d5;return db[_0x00d9('0x31')][_0x00d9('0x54')]({'where':{'id':_0x59c805[_0x00d9('0x48')]['id']}})[_0x00d9('0x28')](handleEntityNotFound(_0x9d6528,null))['then'](function(_0xb5c43c){if(_0xb5c43c){_0x3ab11a=_0xb5c43c;_0x3cf9a3['model']=_[_0x00d9('0x35')](db[_0x00d9('0x4e')]['rawAttributes']);_0x3cf9a3[_0x00d9('0x36')]=_[_0x00d9('0x35')](_0x59c805['query']);_0x3cf9a3[_0x00d9('0x37')]=_['intersection'](_0x3cf9a3[_0x00d9('0x39')],_0x3cf9a3['query']);_0x1a8e43[_0x00d9('0x3a')]=_['intersection'](_0x3cf9a3[_0x00d9('0x39')],qs['fields'](_0x59c805[_0x00d9('0x36')][_0x00d9('0x3b')]));_0x1a8e43[_0x00d9('0x3a')]=_0x1a8e43[_0x00d9('0x3a')]['length']?_0x1a8e43[_0x00d9('0x3a')]:_0x3cf9a3[_0x00d9('0x39')];_0x1a8e43[_0x00d9('0x3e')]=qs[_0x00d9('0x3f')](_0x59c805[_0x00d9('0x36')][_0x00d9('0x3f')]);_0x1a8e43['where']=qs[_0x00d9('0x37')](_['pick'](_0x59c805[_0x00d9('0x36')],_0x3cf9a3[_0x00d9('0x37')]));if(_0x59c805['query'][_0x00d9('0x55')]){_0x1a8e43[_0x00d9('0x40')]=_[_0x00d9('0x42')](_0x1a8e43[_0x00d9('0x40')],{'$or':_[_0x00d9('0x30')](_0x1a8e43[_0x00d9('0x3a')],function(_0x5cbb8a){var _0x48304e={};_0x48304e[_0x5cbb8a]={'$like':'%'+_0x59c805[_0x00d9('0x36')]['filter']+'%'};return _0x48304e;})});}if(_0x59c805[_0x00d9('0x36')][_0x00d9('0x5b')]){var _0x56c466=_0x59c805['query'][_0x00d9('0x5b')][_0x00d9('0x5c')](',');var _0x28ab8d={};_0x28ab8d[_0x56c466[0x0]]={'$gte':moment(_0x56c466[0x1])['format'](_0x00d9('0x5d'))};_0x1a8e43['where']=_[_0x00d9('0x42')](_0x1a8e43['where'],_0x28ab8d);}_0x1a8e43=_['merge']({},_0x1a8e43,_0x59c805[_0x00d9('0x56')]);return _0x3ab11a[_0x00d9('0x5a')](_0x1a8e43);}})[_0x00d9('0x28')](function(_0xfa519f){if(_0xfa519f){_0x3684d5=_0xfa519f[_0x00d9('0x57')];if(!_0x59c805['query'][_0x00d9('0x3c')](_0x00d9('0x3d'))){_0x1a8e43[_0x00d9('0x22')]=qs[_0x00d9('0x22')](_0x59c805[_0x00d9('0x36')][_0x00d9('0x22')]);_0x1a8e43[_0x00d9('0x20')]=qs[_0x00d9('0x20')](_0x59c805[_0x00d9('0x36')][_0x00d9('0x20')]);}return _0x3ab11a['getMessages'](_0x1a8e43);}})[_0x00d9('0x28')](function(_0x557a52){if(_0x557a52){return _0x557a52?{'count':_0x3684d5,'rows':_0x557a52}:null;}})[_0x00d9('0x28')](respondWithResult(_0x9d6528,null))[_0x00d9('0x4a')](handleError(_0x9d6528,null));};
\ No newline at end of file
index 0f8b003..0d9a0ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9d9=['events','ChatGroup','save','emit','hook'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc9d9,0x195));var _0x9c9d=function(_0x3cc9e2,_0x202f64){_0x3cc9e2=_0x3cc9e2-0x0;var _0x4c262b=_0xc9d9[_0x3cc9e2];return _0x4c262b;};'use strict';var EventEmitter=require(_0x9c9d('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0x9c9d('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x9c9d('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xf59ceb){return function(_0x5b9a28,_0x585489,_0x4c0124){ChatGroupEvents[_0x9c9d('0x3')](_0xf59ceb+':'+_0x5b9a28['id'],_0x5b9a28);ChatGroupEvents[_0x9c9d('0x3')](_0xf59ceb,_0x5b9a28);_0x4c0124(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0x9c9d('0x4')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0xd30f=['emit','hasOwnProperty','hook','exports','ChatGroup','setMaxListeners','update','remove'];(function(_0x417d10,_0x58938d){var _0x4544aa=function(_0x28d85e){while(--_0x28d85e){_0x417d10['push'](_0x417d10['shift']());}};_0x4544aa(++_0x58938d);}(_0xd30f,0x1bc));var _0xfd30=function(_0x3e3ff3,_0x575168){_0x3e3ff3=_0x3e3ff3-0x0;var _0x564696=_0xd30f[_0x3e3ff3];return _0x564696;};'use strict';var EventEmitter=require('events');var ChatGroup=require('../../mysqldb')['db'][_0xfd30('0x0')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xfd30('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xfd30('0x2'),'afterDestroy':_0xfd30('0x3')};function emitEvent(_0x249f2e){return function(_0x29c02b,_0x3f13a2,_0x143a7c){ChatGroupEvents[_0xfd30('0x4')](_0x249f2e+':'+_0x29c02b['id'],_0x29c02b);ChatGroupEvents[_0xfd30('0x4')](_0x249f2e,_0x29c02b);_0x143a7c(null);};}for(var e in events){if(events[_0xfd30('0x5')](e)){var event=events[e];ChatGroup[_0xfd30('0x6')](e,emitEvent(event));}}module[_0xfd30('0x7')]=ChatGroupEvents;
\ No newline at end of file
index b8394a2..91c2be9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe646=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatGroup','chat_groups','lodash','../../config/logger'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xe646,0x191));var _0x6e64=function(_0xd2aa3e,_0x47956c){_0xd2aa3e=_0xd2aa3e-0x0;var _0x486422=_0xe646[_0xd2aa3e];return _0x486422;};'use strict';var _=require(_0x6e64('0x0'));var util=require('util');var logger=require(_0x6e64('0x1'))(_0x6e64('0x2'));var moment=require(_0x6e64('0x3'));var BPromise=require(_0x6e64('0x4'));var rp=require(_0x6e64('0x5'));var fs=require('fs');var path=require(_0x6e64('0x6'));var rimraf=require(_0x6e64('0x7'));var config=require(_0x6e64('0x8'));var attributes=require('./chatGroup.attributes');module[_0x6e64('0x9')]=function(_0x47030b,_0x13a961){return _0x47030b[_0x6e64('0xa')](_0x6e64('0xb'),attributes,{'tableName':_0x6e64('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8caa=['lodash','util','path','rimraf','chat_groups'];(function(_0x3bb9a1,_0x15d838){var _0x5ed435=function(_0x2a33d2){while(--_0x2a33d2){_0x3bb9a1['push'](_0x3bb9a1['shift']());}};_0x5ed435(++_0x15d838);}(_0x8caa,0x1f4));var _0xa8ca=function(_0x187454,_0x69cd05){_0x187454=_0x187454-0x0;var _0x4a203a=_0x8caa[_0x187454];return _0x4a203a;};'use strict';var _=require(_0xa8ca('0x0'));var util=require(_0xa8ca('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa8ca('0x2'));var rimraf=require(_0xa8ca('0x3'));var config=require('../../config/environment');var attributes=require('./chatGroup.attributes');module['exports']=function(_0xc887c2,_0x126981){return _0xc887c2['define']('ChatGroup',attributes,{'tableName':_0xa8ca('0x4'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6100c74..5067b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a2=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatGroup,\x20%s,\x20%s','info'];(function(_0xc721f5,_0x42404b){var _0x1bc1bd=function(_0x2870fa){while(--_0x2870fa){_0xc721f5['push'](_0xc721f5['shift']());}};_0x1bc1bd(++_0x42404b);}(_0x28a2,0x141));var _0x228a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x28a2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x228a('0x0'));var util=require(_0x228a('0x1'));var moment=require(_0x228a('0x2'));var BPromise=require(_0x228a('0x3'));var rs=require(_0x228a('0x4'));var fs=require('fs');var Redis=require(_0x228a('0x5'));var db=require(_0x228a('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x228a('0x7'))('rpc');var config=require(_0x228a('0x8'));var jayson=require(_0x228a('0x9'));var client=jayson[_0x228a('0xa')][_0x228a('0xb')]({'port':0x232a});config[_0x228a('0xc')]=_['defaults'](config[_0x228a('0xc')],{'host':_0x228a('0xd'),'port':0x18eb});var socket=require(_0x228a('0xe'))(new Redis(config[_0x228a('0xc')]));require('./chatGroup.socket')[_0x228a('0xf')](socket);function respondWithRpcPromise(_0x44dec4,_0x3b20dd,_0x1cb14a){return new BPromise(function(_0x2ccb62,_0x36d5a6){return client[_0x228a('0x10')](_0x44dec4,_0x1cb14a)[_0x228a('0x11')](function(_0x5b74cb){logger['info']('ChatGroup,\x20%s,\x20%s',_0x3b20dd,_0x228a('0x12'));logger[_0x228a('0x13')](_0x228a('0x14'),_0x3b20dd,_0x228a('0x12'),JSON[_0x228a('0x15')](_0x5b74cb));if(_0x5b74cb['error']){if(_0x5b74cb[_0x228a('0x16')][_0x228a('0x17')]===0x1f4){logger[_0x228a('0x16')]('ChatGroup,\x20%s,\x20%s',_0x3b20dd,_0x5b74cb['error'][_0x228a('0x18')]);return _0x36d5a6(_0x5b74cb[_0x228a('0x16')][_0x228a('0x18')]);}logger[_0x228a('0x16')](_0x228a('0x19'),_0x3b20dd,_0x5b74cb[_0x228a('0x16')][_0x228a('0x18')]);return _0x2ccb62(_0x5b74cb[_0x228a('0x16')]['message']);}else{logger[_0x228a('0x1a')]('ChatGroup,\x20%s,\x20%s',_0x3b20dd,_0x228a('0x12'));_0x2ccb62(_0x5b74cb[_0x228a('0x1b')][_0x228a('0x18')]);}})[_0x228a('0x1c')](function(_0x492595){logger['error'](_0x228a('0x19'),_0x3b20dd,_0x492595);_0x36d5a6(_0x492595);});});}
\ No newline at end of file
+var _0x34f8=['stringify','error','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','./chatGroup.socket','request','then','ChatGroup,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x34f8,0xbc));var _0x834f=function(_0x133ec0,_0x4ba91f){_0x133ec0=_0x133ec0-0x0;var _0x4ff979=_0x34f8[_0x133ec0];return _0x4ff979;};'use strict';var _=require(_0x834f('0x0'));var util=require(_0x834f('0x1'));var moment=require('moment');var BPromise=require(_0x834f('0x2'));var rs=require(_0x834f('0x3'));var fs=require('fs');var Redis=require(_0x834f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x834f('0x5'));var logger=require(_0x834f('0x6'))(_0x834f('0x7'));var config=require(_0x834f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x834f('0x9')][_0x834f('0xa')]({'port':0x232a});config[_0x834f('0xb')]=_[_0x834f('0xc')](config['redis'],{'host':_0x834f('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x834f('0xb')]));require(_0x834f('0xe'))['register'](socket);function respondWithRpcPromise(_0x5c1b3c,_0x3005f7,_0x2546e7){return new BPromise(function(_0x1ff031,_0x273955){return client[_0x834f('0xf')](_0x5c1b3c,_0x2546e7)[_0x834f('0x10')](function(_0x2c7565){logger['info'](_0x834f('0x11'),_0x3005f7,_0x834f('0x12'));logger[_0x834f('0x13')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x3005f7,_0x834f('0x12'),JSON[_0x834f('0x14')](_0x2c7565));if(_0x2c7565[_0x834f('0x15')]){if(_0x2c7565[_0x834f('0x15')]['code']===0x1f4){logger['error'](_0x834f('0x11'),_0x3005f7,_0x2c7565['error'][_0x834f('0x16')]);return _0x273955(_0x2c7565[_0x834f('0x15')][_0x834f('0x16')]);}logger[_0x834f('0x15')](_0x834f('0x11'),_0x3005f7,_0x2c7565[_0x834f('0x15')][_0x834f('0x16')]);return _0x1ff031(_0x2c7565[_0x834f('0x15')]['message']);}else{logger[_0x834f('0x17')](_0x834f('0x11'),_0x3005f7,'request\x20sent');_0x1ff031(_0x2c7565[_0x834f('0x18')][_0x834f('0x16')]);}})[_0x834f('0x19')](function(_0x2ce0f4){logger['error'](_0x834f('0x11'),_0x3005f7,_0x2ce0f4);_0x273955(_0x2ce0f4);});});}
\ No newline at end of file
index 5c5be77..ecb55bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c89=['save','remove','update','emit','register','chatGroup:'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x1c89,0x15c));var _0x91c8=function(_0x272fa4,_0xf712d1){_0x272fa4=_0x272fa4-0x0;var _0x25ec85=_0x1c89[_0x272fa4];return _0x25ec85;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0x91c8('0x0'),_0x91c8('0x1'),_0x91c8('0x2')];function createListener(_0x415146,_0xced581){return function(_0x33613b){_0xced581[_0x91c8('0x3')](_0x415146,_0x33613b);};}function removeListener(_0x40fced,_0x28a048){return function(){ChatGroupEvents['removeListener'](_0x40fced,_0x28a048);};}exports[_0x91c8('0x4')]=function(_0x22b268){for(var _0x59e9cd=0x0,_0x3075ba=events['length'];_0x59e9cd<_0x3075ba;_0x59e9cd++){var _0xce0752=events[_0x59e9cd];var _0x7b2609=createListener(_0x91c8('0x5')+_0xce0752,_0x22b268);ChatGroupEvents['on'](_0xce0752,_0x7b2609);}};
\ No newline at end of file
+var _0xd4d7=['remove','update','emit','removeListener','length','chatGroup:','./chatGroup.events','save'];(function(_0x1da74d,_0x2ff6f1){var _0x431e93=function(_0x1183d1){while(--_0x1183d1){_0x1da74d['push'](_0x1da74d['shift']());}};_0x431e93(++_0x2ff6f1);}(_0xd4d7,0x1a6));var _0x7d4d=function(_0xd75b98,_0x15ad99){_0xd75b98=_0xd75b98-0x0;var _0xdd720e=_0xd4d7[_0xd75b98];return _0xdd720e;};'use strict';var ChatGroupEvents=require(_0x7d4d('0x0'));var events=[_0x7d4d('0x1'),_0x7d4d('0x2'),_0x7d4d('0x3')];function createListener(_0x31cde8,_0xd8e341){return function(_0x260287){_0xd8e341[_0x7d4d('0x4')](_0x31cde8,_0x260287);};}function removeListener(_0x20695e,_0x1c1f9c){return function(){ChatGroupEvents[_0x7d4d('0x5')](_0x20695e,_0x1c1f9c);};}exports['register']=function(_0x7cc228){for(var _0x371770=0x0,_0x19a3a8=events[_0x7d4d('0x6')];_0x371770<_0x19a3a8;_0x371770++){var _0x539201=events[_0x371770];var _0xc9261e=createListener(_0x7d4d('0x7')+_0x539201,_0x7cc228);ChatGroupEvents['on'](_0x539201,_0xc9261e);}};
\ No newline at end of file
index 70a3a96..cd2af33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f65=['/:id/unread','getUnread','/:id/members','getMessages','create','post','addMembers','/:id/messages','addMessage','put','update','delete','destroy','removeMembers','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','/describe','describe','/:id'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x6f65,0xbd));var _0x56f6=function(_0x5013c5,_0x56339e){_0x5013c5=_0x5013c5-0x0;var _0x231783=_0x6f65[_0x5013c5];return _0x231783;};'use strict';var multer=require(_0x56f6('0x0'));var util=require(_0x56f6('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x56f6('0x2'));var router=express[_0x56f6('0x3')]();var fs_extra=require(_0x56f6('0x4'));var auth=require(_0x56f6('0x5'));var interaction=require(_0x56f6('0x6'));var config=require(_0x56f6('0x7'));var controller=require(_0x56f6('0x8'));router[_0x56f6('0x9')]('/',auth[_0x56f6('0xa')](),controller['index']);router[_0x56f6('0x9')](_0x56f6('0xb'),auth[_0x56f6('0xa')](),controller[_0x56f6('0xc')]);router[_0x56f6('0x9')](_0x56f6('0xd'),auth[_0x56f6('0xa')](),controller['show']);router['get'](_0x56f6('0xe'),auth[_0x56f6('0xa')](),controller[_0x56f6('0xf')]);router[_0x56f6('0x9')](_0x56f6('0x10'),auth[_0x56f6('0xa')](),controller['getMembers']);router[_0x56f6('0x9')]('/:id/messages',auth[_0x56f6('0xa')](),controller[_0x56f6('0x11')]);router['post']('/',auth[_0x56f6('0xa')](),controller[_0x56f6('0x12')]);router[_0x56f6('0x13')](_0x56f6('0x10'),auth['isAuthenticated'](),controller[_0x56f6('0x14')]);router['post'](_0x56f6('0x15'),auth[_0x56f6('0xa')](),controller[_0x56f6('0x16')]);router[_0x56f6('0x17')](_0x56f6('0xd'),auth[_0x56f6('0xa')](),controller[_0x56f6('0x18')]);router[_0x56f6('0x19')]('/:id',auth[_0x56f6('0xa')](),controller[_0x56f6('0x1a')]);router['delete'](_0x56f6('0x10'),auth[_0x56f6('0xa')](),controller[_0x56f6('0x1b')]);module[_0x56f6('0x1c')]=router;
\ No newline at end of file
+var _0x5645=['show','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post','create','addMessage','update','destroy','delete','removeMembers','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','index','/describe','describe','/:id','isAuthenticated'];(function(_0x1e3336,_0x2ceb0a){var _0xfd3b8f=function(_0xba1742){while(--_0xba1742){_0x1e3336['push'](_0x1e3336['shift']());}};_0xfd3b8f(++_0x2ceb0a);}(_0x5645,0xa5));var _0x5564=function(_0x2a0ad3,_0x3e5795){_0x2a0ad3=_0x2a0ad3-0x0;var _0x1e501b=_0x5645[_0x2a0ad3];return _0x1e501b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5564('0x0'));var timeout=require(_0x5564('0x1'));var express=require(_0x5564('0x2'));var router=express[_0x5564('0x3')]();var fs_extra=require(_0x5564('0x4'));var auth=require(_0x5564('0x5'));var interaction=require(_0x5564('0x6'));var config=require(_0x5564('0x7'));var controller=require(_0x5564('0x8'));router[_0x5564('0x9')]('/',auth['isAuthenticated'](),controller[_0x5564('0xa')]);router['get'](_0x5564('0xb'),auth['isAuthenticated'](),controller[_0x5564('0xc')]);router['get'](_0x5564('0xd'),auth[_0x5564('0xe')](),controller[_0x5564('0xf')]);router['get'](_0x5564('0x10'),auth[_0x5564('0xe')](),controller[_0x5564('0x11')]);router[_0x5564('0x9')](_0x5564('0x12'),auth[_0x5564('0xe')](),controller[_0x5564('0x13')]);router[_0x5564('0x9')](_0x5564('0x14'),auth[_0x5564('0xe')](),controller[_0x5564('0x15')]);router[_0x5564('0x16')]('/',auth[_0x5564('0xe')](),controller[_0x5564('0x17')]);router[_0x5564('0x16')](_0x5564('0x12'),auth['isAuthenticated'](),controller['addMembers']);router['post'](_0x5564('0x14'),auth[_0x5564('0xe')](),controller[_0x5564('0x18')]);router['put'](_0x5564('0xd'),auth[_0x5564('0xe')](),controller[_0x5564('0x19')]);router['delete'](_0x5564('0xd'),auth[_0x5564('0xe')](),controller[_0x5564('0x1a')]);router[_0x5564('0x1b')](_0x5564('0x12'),auth[_0x5564('0xe')](),controller[_0x5564('0x1c')]);module[_0x5564('0x1d')]=router;
\ No newline at end of file
index 84154cc..2be5de7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087b=['star','TEXT','STRING','DATE','long','out','BOOLEAN','sequelize','exports','ENUM','thumb'];(function(_0x16d10f,_0x2ba2d5){var _0x50c823=function(_0x44e43f){while(--_0x44e43f){_0x16d10f['push'](_0x16d10f['shift']());}};_0x50c823(++_0x2ba2d5);}(_0x087b,0x11a));var _0xb087=function(_0x3fba9f,_0x3b7b9b){_0x3fba9f=_0x3fba9f-0x0;var _0x192cf1=_0x087b[_0x3fba9f];return _0x192cf1;};'use strict';var Sequelize=require(_0xb087('0x0'));module[_0xb087('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0xb087('0x2')]('star',_0xb087('0x3')),'defaultValue':_0xb087('0x4')},'ratingMessage':{'type':Sequelize[_0xb087('0x5')]},'pathTranscript':{'type':Sequelize[_0xb087('0x5')]},'mailTranscript':{'type':Sequelize[_0xb087('0x6')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xb087('0x7')]},'disposition':{'type':Sequelize[_0xb087('0x6')]},'secondDisposition':{'type':Sequelize[_0xb087('0x6')]},'thirdDisposition':{'type':Sequelize[_0xb087('0x6')]},'note':{'type':Sequelize[_0xb087('0x6')]},'browserName':{'type':Sequelize[_0xb087('0x6')]},'browserVersion':{'type':Sequelize[_0xb087('0x6')]},'osName':{'type':Sequelize[_0xb087('0x6')]},'osVersion':{'type':Sequelize[_0xb087('0x6')]},'deviceModel':{'type':Sequelize[_0xb087('0x6')]},'deviceVendor':{'type':Sequelize[_0xb087('0x6')]},'deviceType':{'type':Sequelize[_0xb087('0x6')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0xb087('0x6')]},'formData':{'type':Sequelize[_0xb087('0x5')](_0xb087('0x8'))},'read1stAt':{'type':Sequelize[_0xb087('0x7')]},'lastMsgAt':{'type':Sequelize[_0xb087('0x7')]},'lastMsgDirection':{'type':Sequelize[_0xb087('0x2')]('in',_0xb087('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0xb087('0x6')]},'vidaooSessionId':{'type':Sequelize[_0xb087('0x5')]},'autoreplyExecuted':{'type':Sequelize[_0xb087('0xa')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4fad=['TEXT','STRING','DATE','long','out','sequelize','exports','BOOLEAN','ENUM','star','thumb'];(function(_0x390c42,_0x10e1ae){var _0x43894c=function(_0x510bd0){while(--_0x510bd0){_0x390c42['push'](_0x390c42['shift']());}};_0x43894c(++_0x10e1ae);}(_0x4fad,0xcb));var _0xd4fa=function(_0x484286,_0x2a93e1){_0x484286=_0x484286-0x0;var _0x34fb6f=_0x4fad[_0x484286];return _0x34fb6f;};'use strict';var Sequelize=require(_0xd4fa('0x0'));module[_0xd4fa('0x1')]={'closed':{'type':Sequelize[_0xd4fa('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0xd4fa('0x3')](_0xd4fa('0x4'),_0xd4fa('0x5')),'defaultValue':_0xd4fa('0x4')},'ratingMessage':{'type':Sequelize[_0xd4fa('0x6')]},'pathTranscript':{'type':Sequelize[_0xd4fa('0x6')]},'mailTranscript':{'type':Sequelize[_0xd4fa('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xd4fa('0x8')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xd4fa('0x7')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xd4fa('0x7')]},'browserName':{'type':Sequelize[_0xd4fa('0x7')]},'browserVersion':{'type':Sequelize[_0xd4fa('0x7')]},'osName':{'type':Sequelize[_0xd4fa('0x7')]},'osVersion':{'type':Sequelize[_0xd4fa('0x7')]},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize[_0xd4fa('0x7')]},'deviceType':{'type':Sequelize[_0xd4fa('0x7')]},'referer':{'type':Sequelize[_0xd4fa('0x6')]},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0xd4fa('0x6')](_0xd4fa('0x9'))},'read1stAt':{'type':Sequelize[_0xd4fa('0x8')]},'lastMsgAt':{'type':Sequelize[_0xd4fa('0x8')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xd4fa('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xd4fa('0x7')]},'customerPort':{'type':Sequelize[_0xd4fa('0x7')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0xd4fa('0x2')],'defaultValue':![]}};
\ No newline at end of file
index fc80ffc..5ce16b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4024=['ChatInteractionId','push','all','rows','show','params','include','options','create','createVidaooSession','findOne','ChatWebsite','vidaooApiKey','vidaooTopic','vidaooNote','fullname','email','contact','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','vidaooMetadata','metadata','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','attachmentDownload','Unauthorized','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','pathTranscript','ChatMessage','Messages','ContactId','%s%d','agentAlias','System','Visitor','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailServerOut','Smtp','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','omit','getMessages','hasOwnProperty','sort','$gte','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','getMyMessages','includeAgent','addTags','setTags','ids','spread','color','emit','chatInteractionTags:save','removeTags','unix','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','Account','get','mkdirSync','Chat','Owner','N.A.','closed','browserName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','lastName','renderFile','.pdf','createPdfFromHTML','err','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','ejs','fs-extra','lodash','crypto','to-csv','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','request','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','end','status','offset','limit','undefined','count','set','json','apply','reject','save','update','destroy','then','sendStatus','name','render','merge','agent','interaction','account','Users','TagIds','Tags','split','forEach','catch','map','ChatInteraction','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','where','pick','select','field','from','tools_tags','u.id','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','chat_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','expr','search','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','`\x20>\x200','Contact','operator','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','buildExpression','type','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','UserId','text','body','compact','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','having','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','a.key','a.mandatoryDisposition','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy'];(function(_0x3a4d53,_0x511760){var _0x4b7438=function(_0x310c74){while(--_0x310c74){_0x3a4d53['push'](_0x3a4d53['shift']());}};_0x4b7438(++_0x511760);}(_0x4024,0x89));var _0x4402=function(_0x1cff18,_0x5b019f){_0x1cff18=_0x1cff18-0x0;var _0x4c5712=_0x4024[_0x1cff18];return _0x4c5712;};'use strict';var emlformat=require(_0x4402('0x0'));var rimraf=require(_0x4402('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4402('0x2'));var rp=require(_0x4402('0x3'));var moment=require('moment');var BPromise=require(_0x4402('0x4'));var Mustache=require('mustache');var util=require(_0x4402('0x5'));var path=require(_0x4402('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4402('0x7'));var fs=require('fs');var fs_extra=require(_0x4402('0x8'));var _=require(_0x4402('0x9'));var squel=require('squel');var crypto=require(_0x4402('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4402('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4402('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x4402('0xd'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x4402('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4402('0xf'))(_0x4402('0x10'));var utils=require('../../config/utils');var config=require(_0x4402('0x11'));var licenseUtil=require(_0x4402('0x12'));var db=require(_0x4402('0x13'))['db'];config['redis']=_[_0x4402('0x14')](config[_0x4402('0x15')],{'host':_0x4402('0x16'),'port':0x18eb});var socket=require(_0x4402('0x17'))(new Redis(config[_0x4402('0x15')]));require(_0x4402('0x18'))[_0x4402('0x19')](socket);var jayson=require(_0x4402('0x1a'));var client=jayson[_0x4402('0x1b')][_0x4402('0x1c')]({'port':0x232b});var client9004=jayson[_0x4402('0x1b')][_0x4402('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x2a2ce8,_0x19fe7b,_0xfd9853,_0x30c390){return new BPromise(function(_0x399c24,_0x25e88b){var _0x186c22=_0x30c390||client;return _0x186c22[_0x4402('0x1d')](_0x2a2ce8,_0xfd9853)['then'](function(_0x494389){logger[_0x4402('0x1e')](_0x4402('0x1f'),_0x19fe7b,'request\x20sent');logger[_0x4402('0x20')](_0x4402('0x21'),_0x19fe7b,'request\x20sent',JSON[_0x4402('0x22')](_0x494389));if(_0x494389['error']){if(_0x494389['error'][_0x4402('0x23')]===0x1f4){logger[_0x4402('0x24')](_0x4402('0x1f'),_0x19fe7b,_0x494389['error'][_0x4402('0x25')]);return _0x25e88b(_0x494389['error']['message']);}logger[_0x4402('0x24')](_0x4402('0x1f'),_0x19fe7b,_0x494389[_0x4402('0x24')][_0x4402('0x25')]);return _0x399c24(_0x494389[_0x4402('0x24')][_0x4402('0x25')]);}else{logger[_0x4402('0x1e')](_0x4402('0x1f'),_0x19fe7b,_0x4402('0x26'));_0x399c24(_0x494389['result'][_0x4402('0x25')]);}})['catch'](function(_0x3733cd){logger[_0x4402('0x24')](_0x4402('0x1f'),_0x19fe7b,_0x3733cd);_0x25e88b(_0x3733cd);});});}function respondWithStatusCode(_0x211424,_0x5a43d0){_0x5a43d0=_0x5a43d0||0xcc;return function(_0x15c19f){if(_0x15c19f){return _0x211424['sendStatus'](_0x5a43d0);}return _0x211424['status'](_0x5a43d0)[_0x4402('0x27')]();};}function respondWithResult(_0x395e49,_0x327d60){_0x327d60=_0x327d60||0xc8;return function(_0xabf61b){if(_0xabf61b){return _0x395e49[_0x4402('0x28')](_0x327d60)['json'](_0xabf61b);}};}function respondWithFilteredResult(_0x41de44,_0x52e625){return function(_0x71da2f){if(_0x71da2f){var _0x1e2340=typeof _0x52e625[_0x4402('0x29')]==='undefined'&&typeof _0x52e625[_0x4402('0x2a')]===_0x4402('0x2b');var _0x316239=_0x71da2f[_0x4402('0x2c')];var _0x2526d1=_0x1e2340?0x0:_0x52e625[_0x4402('0x29')];var _0x1189b8=_0x1e2340?_0x71da2f[_0x4402('0x2c')]:_0x52e625[_0x4402('0x29')]+_0x52e625[_0x4402('0x2a')];var _0xcea26b;if(_0x1189b8>=_0x316239){_0x1189b8=_0x316239;_0xcea26b=0xc8;}else{_0xcea26b=0xce;}_0x41de44['status'](_0xcea26b);return _0x41de44[_0x4402('0x2d')]('Content-Range',_0x2526d1+'-'+_0x1189b8+'/'+_0x316239)[_0x4402('0x2e')](_0x71da2f);}return null;};}function patchUpdates(_0x554096){return function(_0x2dea0f){try{jsonpatch[_0x4402('0x2f')](_0x2dea0f,_0x554096,!![]);}catch(_0x145003){return BPromise[_0x4402('0x30')](_0x145003);}return _0x2dea0f[_0x4402('0x31')]();};}function saveUpdates(_0x480781,_0x3a60af){return function(_0x3fa7ae){if(_0x3fa7ae){return _0x3fa7ae[_0x4402('0x32')](_0x480781)['then'](function(_0x331c75){return _0x331c75;});}return null;};}function removeEntity(_0x3383e3,_0x535e1d){return function(_0x2db1fe){if(_0x2db1fe){return _0x2db1fe[_0x4402('0x33')]()[_0x4402('0x34')](function(){_0x3383e3[_0x4402('0x28')](0xcc)[_0x4402('0x27')]();});}};}function handleEntityNotFound(_0x235f30,_0x1e67ac){return function(_0x6e9fb7){if(!_0x6e9fb7){_0x235f30[_0x4402('0x35')](0x194);}return _0x6e9fb7;};}function handleError(_0x5c819a,_0x2995b6){_0x2995b6=_0x2995b6||0x1f4;return function(_0x28fee8){logger[_0x4402('0x24')](_0x28fee8['stack']);if(_0x28fee8[_0x4402('0x36')]){delete _0x28fee8[_0x4402('0x36')];}_0x5c819a['status'](_0x2995b6)['send'](_0x28fee8);};}function getMustacheRender(_0x2b9d51,_0x5b7c2e){return Mustache[_0x4402('0x37')](_0x2b9d51,_[_0x4402('0x38')](_0x5b7c2e['body'],{'contact':_0x5b7c2e['contact'],'message':_0x5b7c2e['message'],'agent':_0x5b7c2e[_0x4402('0x39')],'interaction':_0x5b7c2e[_0x4402('0x3a')],'account':_0x5b7c2e[_0x4402('0x3b')]}))||'';}function getInteractionUsers(_0x3fd8ce,_0x52af0d){return new BPromise(function(_0x20579c,_0x7d5f2a){try{if(_0x52af0d[_0x3fd8ce['id']]){_0x3fd8ce[_0x4402('0x3c')]=_['map'](_0x52af0d[_0x3fd8ce['id']],function(_0x2b92b7){return{'id':_0x2b92b7['id'],'fullname':_0x2b92b7['fullname']};});}}catch(_0x6e328a){_0x7d5f2a(_0x6e328a);}_0x20579c(_0x3fd8ce);});}function getInteractionTags(_0x3ef31d,_0x5c74b1){return new BPromise(function(_0x16ef2e,_0x529526){try{if(_0x3ef31d[_0x4402('0x3d')]){_0x3ef31d[_0x4402('0x3e')]=[];_0x3ef31d['TagIds'][_0x4402('0x3f')](',')[_0x4402('0x40')](function(_0x250f09){_0x3ef31d[_0x4402('0x3e')]['push'](_0x5c74b1[_0x250f09]);});}delete _0x3ef31d['TagIds'];}catch(_0x2cda0a){_0x529526(_0x2cda0a);}_0x16ef2e(_0x3ef31d);});}function updateChatInteraction(_0x47a3a3,_0x3a589b,_0x2a6d78){return new BPromise(function(_0xb9cf85,_0x2e2391){return getInteractionUsers(_0x47a3a3,_0x2a6d78)[_0x4402('0x34')](function(_0x455a62){return getInteractionTags(_0x455a62,_0x3a589b);})[_0x4402('0x34')](function(_0x390169){_0xb9cf85(_0x390169);})[_0x4402('0x41')](function(_0x42812b){_0x2e2391(_0x42812b);});});}exports['index']=function(_0x14b94b,_0x3236fc){var _0x5e7872={},_0x214eec={},_0x370878={'count':0x0,'rows':[]};var _0x50552a=_[_0x4402('0x42')](db[_0x4402('0x43')][_0x4402('0x44')],function(_0x3278fc){return{'name':_0x3278fc[_0x4402('0x45')],'type':_0x3278fc['type'][_0x4402('0x46')]};});_0x214eec[_0x4402('0x47')]=_[_0x4402('0x42')](_0x50552a,_0x4402('0x36'));_0x214eec[_0x4402('0x48')]=_[_0x4402('0x49')](_0x14b94b[_0x4402('0x48')]);_0x214eec[_0x4402('0x4a')]=_[_0x4402('0x4b')](_0x214eec[_0x4402('0x47')],_0x214eec[_0x4402('0x48')]);_0x5e7872['attributes']=_[_0x4402('0x4b')](_0x214eec['model'],qs[_0x4402('0x4c')](_0x14b94b[_0x4402('0x48')]['fields']));_0x5e7872[_0x4402('0x4d')]=_0x5e7872[_0x4402('0x4d')][_0x4402('0x4e')]?_0x5e7872[_0x4402('0x4d')]:_0x214eec[_0x4402('0x47')];if(!_0x14b94b[_0x4402('0x48')]['hasOwnProperty'](_0x4402('0x4f'))){_0x5e7872[_0x4402('0x2a')]=qs[_0x4402('0x2a')](_0x14b94b[_0x4402('0x48')][_0x4402('0x2a')]);_0x5e7872[_0x4402('0x29')]=qs[_0x4402('0x29')](_0x14b94b[_0x4402('0x48')][_0x4402('0x29')]);}_0x5e7872['order']=qs['sort'](_0x14b94b['query']['sort']);_0x5e7872[_0x4402('0x50')]=qs[_0x4402('0x4a')](_[_0x4402('0x51')](_0x14b94b[_0x4402('0x48')],_0x214eec['filters']),_0x50552a);var _0x169bb2=[];var _0x12d6de=squel[_0x4402('0x52')]()[_0x4402('0x53')]('id')[_0x4402('0x53')](_0x4402('0x36'))[_0x4402('0x53')]('color')[_0x4402('0x54')](_0x4402('0x55'));var _0x38e6d1=squel[_0x4402('0x52')]()[_0x4402('0x53')](_0x4402('0x56'))['field'](_0x4402('0x57'))[_0x4402('0x53')](_0x4402('0x58'))[_0x4402('0x54')](_0x4402('0x59'),'ui')[_0x4402('0x5a')](_0x4402('0x5b'),'u','u.id\x20=\x20ui.UserId');var _0x48e138=squel[_0x4402('0x52')]()[_0x4402('0x54')](_0x4402('0x5c'),'i')['left_join']('cm_contacts','c',_0x4402('0x5d'))[_0x4402('0x5a')](_0x4402('0x5b'),'o',_0x4402('0x5e'))[_0x4402('0x5a')](_0x4402('0x5f'),'a',_0x4402('0x60'))[_0x4402('0x5a')](_0x4402('0x61'),'me',_0x4402('0x62'))[_0x4402('0x5a')](_0x4402('0x63'),'it',_0x4402('0x64'))['left_join'](_0x4402('0x55'),'t','t.id\x20=\x20it.TagId');var _0xe4530a=squel['expr']();var _0x3fb9f0=[];var _0x1e5891=squel[_0x4402('0x65')]();var _0x31e36c;if(_0x14b94b[_0x4402('0x48')][_0x4402('0x66')]){_0x31e36c=as['parseSearch'](_0x14b94b[_0x4402('0x48')][_0x4402('0x66')]);var _0xa390ce=_0x31e36c[_0x4402('0x67')];for(var _0xb341ab=0x0;_0xb341ab<_0x31e36c['conditions'][_0x4402('0x4e')];_0xb341ab++){var _0x31d993=_0x31e36c[_0x4402('0x68')][_0xb341ab];var _0xc15c0b='i';var _0x309077=_[_0x4402('0x69')](_0x50552a,[_0x4402('0x36'),_0x31d993[_0x4402('0x53')]]);if(!_0x309077){switch(_0x31d993['field']){case _0x4402('0x6a'):if(_0x31d993[_0x4402('0x6b')]==0x1){_0x48e138['having']('`'+_0x31d993[_0x4402('0x53')]+_0x4402('0x6c'));}else{_0x48e138['having']('`'+_0x31d993['field']+_0x4402('0x6d'));}break;case _0x4402('0x6e'):if(_0x31d993[_0x4402('0x6f')]==='$substring'){if(_0x31d993[_0x4402('0x6b')][_0x4402('0x3f')]('\x20')[_0x4402('0x4e')]>0x1){_0xe4530a[_0xa390ce]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x4402('0x70')](_0x31d993[_0x4402('0x6b')]),null);}else{var _0xdde09f='%'+_0x31d993['value']+'%';_0xe4530a[_0xa390ce](_0x4402('0x71'),_0xdde09f,_0xdde09f,_0xdde09f);}}else{_0x309077=_[_0x4402('0x69')](_0x50552a,['name','ContactId']);_0x31d993[_0x4402('0x53')]='ContactId';_0x53e553=as[_0x4402('0x72')](_0xc15c0b,_0x309077[_0x4402('0x73')],_0x31d993);_0xe4530a[_0xa390ce](_0x53e553['text'],_0x53e553['value'][_0x4402('0x74')],_0x53e553[_0x4402('0x6b')][_0x4402('0x27')]);}break;case _0x4402('0x75'):var _0x4ac95e=_0x31d993[_0x4402('0x6b')][_0x4402('0x3f')](',')[_0x4402('0x42')](function(_0x168095){return Number(_0x168095);});_0x4ac95e[_0x4402('0x40')](function(_0x26b1ad){_0x1e5891['or'](_0x4402('0x76'),'%,'+_0x26b1ad+',%');});_0x3fb9f0=_['union'](_0x3fb9f0,_0x4ac95e);break;case _0x4402('0x77'):if(_0x31d993[_0x4402('0x6f')]==='$substring'){_0xe4530a[_0xa390ce]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x31d993[_0x4402('0x6b')]+'%',null);}else{_0x309077=_['find'](_0x50552a,[_0x4402('0x36'),'UserId']);_0x31d993[_0x4402('0x53')]=_0x4402('0x78');_0x53e553=as[_0x4402('0x72')](_0xc15c0b,_0x309077[_0x4402('0x73')],_0x31d993);_0xe4530a[_0xa390ce](_0x53e553[_0x4402('0x79')],_0x53e553[_0x4402('0x6b')][_0x4402('0x74')],_0x53e553[_0x4402('0x6b')][_0x4402('0x27')]);}break;case _0x4402('0x7a'):_0x53e553=as[_0x4402('0x72')]('me',null,_0x31d993);_0xe4530a[_0xa390ce](_0x53e553[_0x4402('0x79')],_0x53e553[_0x4402('0x6b')][_0x4402('0x74')],_0x53e553[_0x4402('0x6b')][_0x4402('0x27')]);break;}}else{var _0x53e553=as[_0x4402('0x72')](_0xc15c0b,_0x309077[_0x4402('0x73')],_0x31d993);_0xe4530a[_0xa390ce](_0x53e553[_0x4402('0x79')],_0x53e553['value'][_0x4402('0x74')],_0x53e553['value'][_0x4402('0x27')]);}}}else{var _0x1b1147=_(_0x14b94b[_0x4402('0x48')])[_0x4402('0x49')]()['map'](function(_0xac8513){return _['some'](_0x50552a,[_0x4402('0x36'),_0xac8513])?_0xac8513:undefined;})[_0x4402('0x7b')]()[_0x4402('0x6b')]();if(!_['isEmpty'](_0x1b1147)){_0x1b1147[_0x4402('0x40')](function(_0x4c98eb){if(_0x4c98eb===_0x4402('0x7c')){_0x48e138[_0x4402('0x50')](_0x4402('0x7d'),[][_0x4402('0x7e')](_0x14b94b[_0x4402('0x48')][_0x4c98eb]));}else if(_0x4c98eb===_0x4402('0x7f')){var _0x19b427=JSON[_0x4402('0x80')](_0x14b94b[_0x4402('0x48')][_0x4c98eb])['$gte'];var _0x44d806=JSON[_0x4402('0x80')](_0x14b94b[_0x4402('0x48')][_0x4c98eb])[_0x4402('0x81')];_0x48e138[_0x4402('0x50')](_0x4402('0x82'),_0x19b427,_0x44d806);}else{if(_0x14b94b[_0x4402('0x48')][_0x4c98eb]===_0x4402('0x83')){_0x48e138[_0x4402('0x50')]('i.'+_0x4c98eb+'\x20IS\x20NULL');}else{_0x48e138[_0x4402('0x50')]('i.'+_0x4c98eb+_0x4402('0x84'),_0x14b94b[_0x4402('0x48')][_0x4c98eb]);}}});}if(_0x14b94b['query'][_0x4402('0x85')]){if(_0x14b94b['query'][_0x4402('0x85')]==0x1){_0x48e138['having'](_0x4402('0x86'));}else{_0x48e138[_0x4402('0x87')]('`unreadMessages`\x20>\x200');}}if(_0x14b94b[_0x4402('0x48')]['tag']){_0x3fb9f0=_[_0x4402('0x88')](_0x14b94b[_0x4402('0x48')]['tag'])?_0x14b94b[_0x4402('0x48')][_0x4402('0x89')]:new Array(_0x14b94b['query'][_0x4402('0x89')]);_0x3fb9f0[_0x4402('0x40')](function(_0x4f0915){_0x1e5891['or'](_0x4402('0x76'),'%,'+_0x4f0915+',%');});}if(_0x14b94b[_0x4402('0x48')][_0x4402('0x8a')]){var _0x12b834=_0x14b94b[_0x4402('0x48')][_0x4402('0x8a')][_0x4402('0x8b')]('\x5c','\x5c\x5c')[_0x4402('0x8b')](/'/g,'\x27\x27');if(qs[_0x4402('0x8c')](_0x12b834)){_0xe4530a['or'](_0x4402('0x8d'),_0x12b834+'%');}else{_0xe4530a['or'](_0x4402('0x8e'),qs[_0x4402('0x70')](_0x12b834))['or'](_0x4402('0x8f'),_0x12b834+'%');}}}_0x48e138[_0x4402('0x50')](_0xe4530a);_0x48e138['group'](_0x4402('0x90'));var _0xc3914e={'type':db['Sequelize'][_0x4402('0x91')]['SELECT'],'raw':!![]};var _0x2c7ff5=_0x48e138[_0x4402('0x92')]();_0x2c7ff5[_0x4402('0x53')]('i.id');_0x2c7ff5[_0x4402('0x53')](_0x4402('0x93'),_0x4402('0x6a'));if(_0x5e7872['order']){_0x5e7872[_0x4402('0x94')][_0x4402('0x40')](function(_0x179eb4){var _0x1a0a6f=_0x179eb4[0x0]==='contactName'?_0x179eb4[0x0]:'i.'+_0x179eb4[0x0];_0x48e138[_0x4402('0x94')](_0x1a0a6f,_0x179eb4[0x1]===_0x4402('0x95')?![]:!![]);});}if(!_[_0x4402('0x96')](_0x3fb9f0)){_0x48e138[_0x4402('0x87')](_0x1e5891);_0x2c7ff5[_0x4402('0x50')](_0x4402('0x97'),_0x3fb9f0);}BPromise[_0x4402('0x98')]()[_0x4402('0x34')](function(){if(!_0x31e36c){if(_0x14b94b[_0x4402('0x48')][_0x4402('0x7c')])return;_0x2c7ff5[_0x4402('0x50')](_0x4402('0x99'));_0x48e138[_0x4402('0x50')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x14b94b[_0x4402('0x9a')][_0x4402('0x9b')]!==_0x4402('0x39'))return;return _0x14b94b[_0x4402('0x9a')]['getChatWebsites']({'attributes':['id'],'raw':!![]})['then'](function(_0x284b52){if(_[_0x4402('0x96')](_0x284b52)){_0x2c7ff5[_0x4402('0x50')](_0x4402('0x9c'));_0x48e138['where'](_0x4402('0x9c'));}else{_0x2c7ff5[_0x4402('0x50')]('i.ChatWebsiteId\x20IN\x20?',_[_0x4402('0x42')](_0x284b52,'id'));_0x48e138[_0x4402('0x50')](_0x4402('0x7d'),_[_0x4402('0x42')](_0x284b52,'id'));}});})[_0x4402('0x34')](function(){if(_0x14b94b['user'][_0x4402('0x9b')]===_0x4402('0x39')&&!_0x31e36c&&!_0x14b94b[_0x4402('0x48')][_0x4402('0x7c')])return[];return db[_0x4402('0x9d')][_0x4402('0x48')](_0x2c7ff5[_0x4402('0x9e')](),_0xc3914e);})['then'](function(_0x218640){_0x370878[_0x4402('0x2c')]=_0x218640[_0x4402('0x4e')];if(_0x370878[_0x4402('0x2c')]===0x0)return[];return db[_0x4402('0x9d')]['query'](_0x12d6de[_0x4402('0x9e')](),_0xc3914e)[_0x4402('0x34')](function(_0x572e21){_0x169bb2=_[_0x4402('0x9f')](_0x572e21,'id');_0xc3914e=_['merge'](_0xc3914e,{'model':db['ChatInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x14b94b[_0x4402('0x48')]['fields']){_0x5e7872[_0x4402('0x4d')]['forEach'](function(_0x51e85d){_0x48e138[_0x4402('0x53')]('i.'+_0x51e85d);});}else{_0x48e138[_0x4402('0x53')](_0x4402('0x93'),_0x4402('0x6a'));_0x48e138[_0x4402('0x53')](_0x4402('0xa0'),'Account.key');_0x48e138[_0x4402('0x53')](_0x4402('0xa1'),'Account.mandatoryDisposition');_0x48e138[_0x4402('0x53')]('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');_0x48e138[_0x4402('0x53')]('i.*');_0x48e138[_0x4402('0x53')](_0x4402('0xa2'),_0x4402('0xa3'));_0x48e138[_0x4402('0x53')](_0x4402('0xa4'),'Contact.lastName');_0x48e138['field'](_0x4402('0xa5'),_0x4402('0xa6'));_0x48e138['field'](_0x4402('0xa7'),_0x4402('0xa8'));_0x48e138[_0x4402('0x53')](_0x4402('0xa9'),_0x4402('0xaa'));_0x48e138[_0x4402('0x53')]('c.fax','Contact.fax');_0x48e138[_0x4402('0x53')](_0x4402('0xab'),_0x4402('0xac'));_0x48e138[_0x4402('0x53')](_0x4402('0xad'),_0x4402('0xae'));_0x48e138['field'](_0x4402('0xaf'),_0x4402('0x3d'));}if(_0x5e7872[_0x4402('0x2a')])_0x48e138[_0x4402('0x2a')](_0x5e7872[_0x4402('0x2a')]);if(_0x5e7872['offset'])_0x48e138[_0x4402('0x29')](_0x5e7872[_0x4402('0x29')]);return db[_0x4402('0x9d')][_0x4402('0x48')](_0x48e138[_0x4402('0x9e')](),_0xc3914e);})[_0x4402('0x34')](function(_0x518b0b){if(_0x518b0b['length']>0x0)_0x38e6d1[_0x4402('0x50')]('ui.ChatInteractionId\x20IN\x20?',_[_0x4402('0x42')](_0x518b0b,'id'));return db[_0x4402('0x9d')][_0x4402('0x48')](_0x38e6d1[_0x4402('0x9e')](),_0xc3914e)[_0x4402('0x34')](function(_0x25b3ee){var _0x70bdbd=_[_0x4402('0xb0')](_0x25b3ee,_0x4402('0xb1'));var _0x23306f=[];_0x518b0b[_0x4402('0x40')](function(_0x425a1b){_0x23306f[_0x4402('0xb2')](updateChatInteraction(_0x425a1b,_0x169bb2,_0x70bdbd));});return BPromise[_0x4402('0xb3')](_0x23306f);});});})[_0x4402('0x34')](function(_0x1ba5a1){_0x370878[_0x4402('0xb4')]=_0x1ba5a1;return _0x370878;})[_0x4402('0x34')](respondWithFilteredResult(_0x3236fc,_0x5e7872))[_0x4402('0x41')](handleError(_0x3236fc,null));};exports[_0x4402('0xb5')]=function(_0xe37b11,_0x385b8e){var _0x418070={'raw':![],'where':{'id':_0xe37b11[_0x4402('0xb6')]['id']}},_0x47a76a={};_0x47a76a[_0x4402('0x47')]=_[_0x4402('0x49')](db[_0x4402('0x43')][_0x4402('0x44')]);_0x47a76a[_0x4402('0x48')]=_['keys'](_0xe37b11['query']);_0x47a76a[_0x4402('0x4a')]=_[_0x4402('0x4b')](_0x47a76a[_0x4402('0x47')],_0x47a76a['query']);_0x418070['attributes']=_['intersection'](_0x47a76a['model'],qs[_0x4402('0x4c')](_0xe37b11[_0x4402('0x48')][_0x4402('0x4c')]));_0x418070['attributes']=_0x418070[_0x4402('0x4d')][_0x4402('0x4e')]?_0x418070[_0x4402('0x4d')]:_0x47a76a['model'];if(_0xe37b11[_0x4402('0x48')]['includeAll']){_0x418070[_0x4402('0xb7')]=[{'all':!![]}];}_0x418070=_[_0x4402('0x38')]({},_0x418070,_0xe37b11[_0x4402('0xb8')]);return db[_0x4402('0x43')][_0x4402('0x69')](_0x418070)[_0x4402('0x34')](handleEntityNotFound(_0x385b8e,null))['then'](respondWithResult(_0x385b8e,null))[_0x4402('0x41')](handleError(_0x385b8e,null));};exports[_0x4402('0xb9')]=function(_0x3ac6b9,_0x55c3fd){return db[_0x4402('0x43')]['create'](_0x3ac6b9[_0x4402('0x7a')],{})[_0x4402('0x34')](respondWithResult(_0x55c3fd,0xc9))[_0x4402('0x41')](handleError(_0x55c3fd,null));};exports[_0x4402('0x32')]=function(_0x54d6dc,_0x91c49){if(_0x54d6dc[_0x4402('0x7a')]['id']){delete _0x54d6dc[_0x4402('0x7a')]['id'];}return db[_0x4402('0x43')][_0x4402('0x69')]({'where':{'id':_0x54d6dc['params']['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x91c49,null))[_0x4402('0x34')](saveUpdates(_0x54d6dc['body'],null))['then'](respondWithResult(_0x91c49,null))['catch'](handleError(_0x91c49,null));};exports[_0x4402('0x33')]=function(_0x42b774,_0x246ff2){return db[_0x4402('0x43')]['find']({'where':{'id':_0x42b774[_0x4402('0xb6')]['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x246ff2,null))[_0x4402('0x34')](removeEntity(_0x246ff2,null))[_0x4402('0x41')](handleError(_0x246ff2,null));};exports['describe']=function(_0x2a3361,_0x2949ce){return db[_0x4402('0x43')]['describe']()['then'](respondWithResult(_0x2949ce,null))['catch'](handleError(_0x2949ce,null));};exports[_0x4402('0xba')]=function(_0x48bf30,_0x17c5c2){var _0x35c16f=_0x48bf30[_0x4402('0xb6')]['id'];var _0x117911;var _0x87ae2a;var _0xd604a5;return db[_0x4402('0x43')][_0x4402('0xbb')]({'where':{'id':_0x35c16f}})[_0x4402('0x34')](function(_0x423f83){_0x117911=_0x423f83;return db[_0x4402('0xbc')][_0x4402('0xbb')]({'where':{'id':_0x423f83[_0x4402('0x7c')]},'attributes':['id',_0x4402('0xbd'),'vidaooEscalation',_0x4402('0xbe'),_0x4402('0xbf'),'vidaooMetadata'],'raw':!![]});})['then'](function(_0x57fd83){if(_0x57fd83&&_0x57fd83[_0x4402('0xbd')]&&_0x57fd83['vidaooEscalation']){_0x87ae2a=_0x57fd83;var _0x47aa8b={'interaction':{'id':_0x35c16f},'agent':{'id':_0x48bf30[_0x4402('0x9a')]['id'],'name':_0x48bf30[_0x4402('0x9a')]['name'],'fullname':_0x48bf30[_0x4402('0x9a')][_0x4402('0xc0')],'email':_0x48bf30[_0x4402('0x9a')][_0x4402('0xc1')]},'contact':_0x48bf30['body'][_0x4402('0xc2')],'account':_0x48bf30[_0x4402('0x7a')][_0x4402('0x3b')]};var _0x286500={'rejectUnauthorized':![],'method':_0x4402('0xc3'),'url':_0x4402('0xc4'),'headers':{'X-APIKEY':_0x57fd83[_0x4402('0xbd')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x48bf30[_0x4402('0x9a')][_0x4402('0xc1')]],'buttons':null,'topic':_0x87ae2a['vidaooTopic'],'note':_[_0x4402('0xc5')](_0x87ae2a[_0x4402('0xbf')])?null:getMustacheRender(_0x87ae2a[_0x4402('0xbf')],_0x47aa8b),'metadata':null},'redirect':_0x4402('0xc6'),'json':!![]};try{if(!_['isNull'](_0x87ae2a[_0x4402('0xc7')])){var _0x4bf0ff=getMustacheRender(_0x87ae2a[_0x4402('0xc7')],_0x47aa8b);var _0x29ffd4=JSON['parse'](_0x4bf0ff);_0x286500['body'][_0x4402('0xc8')]=_0x29ffd4;}}catch(_0x173f64){throw new db[(_0x4402('0xc9'))][(_0x4402('0xca'))](_0x4402('0xcb'));}return rp(_0x286500);}else{throw new db[(_0x4402('0xc9'))]['ValidationError']('Error\x20in\x20Vidaoo\x20configuration');}})[_0x4402('0x34')](function(_0x54e61e){_0xd604a5=_0x54e61e;if(_0xd604a5['id']){var _0xc47081={'body':_0xd604a5[_0x4402('0xcc')],'ChatWebsiteId':_0x87ae2a['id'],'ChatInteractionId':_0x117911['id'],'direction':_0x4402('0xcd'),'UserId':_0x48bf30[_0x4402('0x9a')]['id']};return db['ChatMessage'][_0x4402('0xb9')](_0xc47081,{});}else{throw new db[(_0x4402('0xc9'))][(_0x4402('0xca'))](_0x4402('0xce'));}})[_0x4402('0x34')](function(){return _0x117911[_0x4402('0xcf')]({'vidaooSessionId':_0xd604a5['id']});})['then'](respondWithResult(_0x17c5c2,null))['catch'](handleError(_0x17c5c2,null));};exports[_0x4402('0xd0')]=function(_0x5a768b,_0x38d7b5){if(_0x5a768b[_0x4402('0x7a')]['id']){delete _0x5a768b['body']['id'];}return db[_0x4402('0x43')]['find']({'where':{'id':_0x5a768b[_0x4402('0xb6')]['id']},'include':[{'model':db[_0x4402('0xd1')],'as':_0x4402('0x6e')}]})['then'](handleEntityNotFound(_0x38d7b5,null))[_0x4402('0x34')](saveUpdates(_0x5a768b['body'],null))[_0x4402('0x34')](respondWithResult(_0x38d7b5,null))[_0x4402('0x41')](handleError(_0x38d7b5,null));};exports[_0x4402('0xd2')]=function(_0x1fc790,_0xaaf390,_0x53be9e){if(_0x1fc790['body']['id']){delete _0x1fc790[_0x4402('0x7a')]['id'];}return db['ChatInteraction'][_0x4402('0x69')]({'where':{'id':_0x1fc790[_0x4402('0xb6')]['id']}})['then'](function(_0x50d453){if(!_0x50d453){logger[_0x4402('0x24')](_0x4402('0xd3'),_0x4402('0xd2'),0x194,_0x4402('0xd4'));_0xaaf390[_0x4402('0x35')](0x194);}else{if(_0x50d453[_0x4402('0x78')]){throw new db[(_0x4402('0xc9'))][(_0x4402('0xca'))]('Interaction\x20already\x20assigned');}}return _0x50d453;})['then'](function(_0xf3be9){if(_0xf3be9){return _0xf3be9[_0x4402('0x32')]({'closed':_0x1fc790[_0x4402('0x7a')]['closed'],'disposition':_0x1fc790[_0x4402('0x7a')]['disposition']})[_0x4402('0x34')](function(_0x1237a3){return _0x1237a3;});}})[_0x4402('0x34')](function(_0x4a0fd9){return respondWithRpcPromise(_0x4402('0xd5'),_0x4402('0xd2'),_0x1fc790['body'],client9004);})[_0x4402('0x34')](respondWithResult(_0xaaf390,null))[_0x4402('0x41')](handleError(_0xaaf390,null));};exports[_0x4402('0xd6')]=function(_0x8c436d,_0x15e9d3,_0xa0d1ee){_0x8c436d[_0x4402('0x7a')][_0x4402('0x36')]=_0x8c436d[_0x4402('0xd7')][_0x4402('0xd8')];_0x8c436d[_0x4402('0x7a')][_0x4402('0xd9')]=_0x8c436d['file'][_0x4402('0xda')];_0x8c436d[_0x4402('0x7a')][_0x4402('0x73')]=_0x8c436d[_0x4402('0xd7')][_0x4402('0xdb')];return db[_0x4402('0xdc')][_0x4402('0xb9')](_0x8c436d[_0x4402('0x7a')])[_0x4402('0x34')](respondWithResult(_0x15e9d3,0xc9))['catch'](handleError(_0x15e9d3,null));};exports[_0x4402('0xdd')]=function(_0x113451,_0x338e97,_0x4c6d4e){return db[_0x4402('0x43')][_0x4402('0xbb')]({'where':{'id':_0x113451['params']['id']},'raw':!![]})[_0x4402('0x34')](handleEntityNotFound(_0x338e97,null))[_0x4402('0x34')](function(_0x491a8e){if(_0x491a8e){if(_0x491a8e['closed']){return _0x338e97[_0x4402('0x28')](0x193)[_0x4402('0x2e')]({'status':0x193,'message':_0x4402('0xde')});}return db[_0x4402('0xdc')]['findOne']({'where':{'id':_0x113451[_0x4402('0x48')]['attachId']},'raw':!![]})[_0x4402('0x34')](handleEntityNotFound(_0x338e97,null));}})[_0x4402('0x34')](function(_0x171672){if(_0x171672){var _0xdbd1c8=_0x171672[_0x4402('0xdf')]!==null;var _0x5d190e=path[_0x4402('0xe0')](config[_0x4402('0xe1')],_0x4402('0xe2'));if(_0xdbd1c8){_0x5d190e=path[_0x4402('0xe0')](_0x5d190e,_0x4402('0xe3'));}var _0x23de88=path[_0x4402('0xe0')](_0x5d190e,_0x171672[_0x4402('0xd9')]);return _0x338e97[_0x4402('0xe4')](_0x23de88);}})[_0x4402('0x41')](handleError(_0x338e97,null));};exports[_0x4402('0xe5')]=function(_0x55274b,_0x2afc41){var _0x1c5cad=null;var _0x3b8f77=null;var _0x2b3b75=null;var _0x1ba411=null;if(_0x55274b[_0x4402('0x7a')]['id']){delete _0x55274b[_0x4402('0x7a')]['id'];}if(_0x55274b[_0x4402('0x7a')][_0x4402('0xe6')]){_0x1ba411=path[_0x4402('0xe0')](config['root'],_0x4402('0xe7'),util[_0x4402('0xe8')](_0x4402('0xe9'),Date['now']()));_0x55274b[_0x4402('0x7a')][_0x4402('0xea')]=_0x1ba411;}return db['ChatInteraction'][_0x4402('0x69')]({'where':{'id':_0x55274b[_0x4402('0xb6')]['id']},'include':[{'model':db[_0x4402('0xeb')],'as':_0x4402('0xec'),'include':[{'model':db[_0x4402('0x77')],'as':_0x4402('0x77')}]}]})[_0x4402('0x34')](handleEntityNotFound(_0x2afc41,null))[_0x4402('0x34')](saveUpdates(_0x55274b[_0x4402('0x7a')],null))[_0x4402('0x34')](function(_0x2d86c7){if(_0x2d86c7){_0x1c5cad=_0x2d86c7;return db['ChatWebsite'][_0x4402('0x69')]({'where':{'id':_0x1c5cad[_0x4402('0x7c')]}});}})[_0x4402('0x34')](function(_0x47837e){if(_0x47837e){_0x2b3b75=_0x47837e;return db[_0x4402('0xd1')][_0x4402('0x69')]({'where':{'id':_0x1c5cad[_0x4402('0xed')]}});}})[_0x4402('0x34')](function(_0x259c23){if(_0x259c23){_0x3b8f77=_0x259c23;if(_0x1ba411){var _0x535d83=null;for(var _0x2f3d6e=0x1;_0x2f3d6e<_0x1c5cad['Messages'][_0x4402('0x4e')];++_0x2f3d6e){_0x535d83=_0x1c5cad[_0x4402('0xec')][_0x2f3d6e];var _0x395d17=_0x535d83[_0x4402('0x78')]?util[_0x4402('0xe8')](_0x4402('0xee'),_0x2b3b75[_0x4402('0xef')],_0x535d83[_0x4402('0x78')]):_0x4402('0xf0');var _0x51bdf7=_0x55274b[_0x4402('0x7a')]['customer']||util[_0x4402('0xe8')](_0x4402('0xee'),_0x4402('0xf1'),_0x535d83[_0x4402('0xed')]);switch(_0x2b3b75[_0x4402('0xf2')]){case _0x4402('0xf3'):_0x395d17=_0x535d83['UserId']?util[_0x4402('0xe8')]('%s%d',_0x2b3b75[_0x4402('0xef')],_0x535d83['UserId']):_0x4402('0xf0');break;case _0x4402('0xf4'):_0x395d17=_0x535d83[_0x4402('0x78')]?_0x535d83[_0x4402('0x77')][_0x4402('0xf5')]||_0x535d83[_0x4402('0x77')][_0x4402('0xc0')]:_0x4402('0xf0');break;case _0x4402('0xf6'):_0x395d17=_0x535d83['UserId']?_0x535d83[_0x4402('0x77')]['fullname']:'System';break;default:_0x395d17=_0x535d83['UserId']?util[_0x4402('0xe8')](_0x4402('0xee'),_0x2b3b75[_0x4402('0xef')],_0x535d83['UserId']):_0x4402('0xf0');}var _0x1accec=util[_0x4402('0xe8')](_0x4402('0xf7'),moment(_0x535d83[_0x4402('0x7f')])[_0x4402('0xe8')](_0x4402('0xf8')),_0x535d83[_0x4402('0xf9')]==='in'?_0x51bdf7:_0x395d17,_0x535d83[_0x4402('0x7a')]);if(!_0x535d83[_0x4402('0xfa')]){fs[_0x4402('0xfb')](_0x1ba411,_0x1accec);}}return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x4402('0xfc')],'as':_0x4402('0xfd'),'raw':!![]}]});}}})[_0x4402('0x34')](function(_0x23dbb4){if(_0x23dbb4&&_0x23dbb4[_0x4402('0xfd')]&&_0x55274b['body']){var _0x494b72={'tls':{'rejectUnauthorized':![]}};if(_0x23dbb4[_0x4402('0xfd')][_0x4402('0xfe')]){_0x494b72[_0x4402('0xfe')]=_0x23dbb4[_0x4402('0xfd')][_0x4402('0xfe')];}else{_0x494b72[_0x4402('0xff')]=_0x23dbb4[_0x4402('0xfd')][_0x4402('0xff')];_0x494b72[_0x4402('0x100')]=_0x23dbb4[_0x4402('0xfd')][_0x4402('0x100')];_0x494b72[_0x4402('0x101')]=_0x23dbb4[_0x4402('0xfd')][_0x4402('0x101')];}if(_0x23dbb4[_0x4402('0xfd')][_0x4402('0x102')]){_0x494b72[_0x4402('0x103')]={'user':_0x23dbb4[_0x4402('0xfd')][_0x4402('0x9a')],'pass':_0x23dbb4[_0x4402('0xfd')][_0x4402('0x104')]};}return respondWithRpcPromise(_0x4402('0x105'),_0x4402('0x106'),{'account':_0x494b72,'message':{'from':util[_0x4402('0xe8')](_0x4402('0x107'),_0x23dbb4[_0x4402('0x36')],_0x23dbb4['email']||_0x23dbb4[_0x4402('0xfd')][_0x4402('0x9a')]),'to':_0x55274b[_0x4402('0x7a')][_0x4402('0xe6')],'subject':_0x4402('0x108'),'text':util[_0x4402('0xe8')](_0x4402('0x109'),_0x55274b[_0x4402('0x7a')][_0x4402('0xe6')]),'attachments':[{'path':_0x1ba411}]}})['then'](function(){return _0x1c5cad;})[_0x4402('0x41')](function(_0x3ba561){console[_0x4402('0x24')](_0x3ba561);});}else{return _0x1c5cad;}})[_0x4402('0x34')](respondWithStatusCode(_0x2afc41,0xc8))[_0x4402('0x41')](handleError(_0x2afc41,null));};exports[_0x4402('0x10a')]=function(_0x10f917,_0x1155d1,_0x17c1ee){return db['ChatMessage'][_0x4402('0x69')]({'where':{'id':_0x10f917[_0x4402('0xb6')]['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x1155d1,null))[_0x4402('0x34')](function(_0x37ea8d){if(_0x37ea8d){return _0x37ea8d[_0x4402('0x10a')](_0x10f917[_0x4402('0x7a')]['ids'],_[_0x4402('0x10b')](_0x10f917[_0x4402('0x7a')],['ids','id'])||{});}})[_0x4402('0x34')](respondWithResult(_0x1155d1,null))[_0x4402('0x41')](handleError(_0x1155d1,null));};exports[_0x4402('0x10c')]=function(_0x3e78da,_0x1bf636,_0x44b095){var _0x2433a1={'raw':![],'where':{}};var _0x4069cf={};var _0x7be513={'count':0x0,'rows':[]};return db[_0x4402('0x43')][_0x4402('0xbb')]({'where':{'id':_0x3e78da[_0x4402('0xb6')]['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x1bf636,null))[_0x4402('0x34')](function(_0x1f2219){if(_0x1f2219){_0x4069cf[_0x4402('0x47')]=_[_0x4402('0x49')](db[_0x4402('0xeb')][_0x4402('0x44')]);_0x4069cf[_0x4402('0x48')]=_[_0x4402('0x49')](_0x3e78da[_0x4402('0x48')]);_0x4069cf[_0x4402('0x4a')]=_[_0x4402('0x4b')](_0x4069cf[_0x4402('0x47')],_0x4069cf[_0x4402('0x48')]);_0x2433a1[_0x4402('0x4d')]=_[_0x4402('0x4b')](_0x4069cf[_0x4402('0x47')],qs[_0x4402('0x4c')](_0x3e78da[_0x4402('0x48')]['fields']));_0x2433a1[_0x4402('0x4d')]=_0x2433a1['attributes']['length']?_0x2433a1[_0x4402('0x4d')]:_0x4069cf[_0x4402('0x47')];if(!_0x3e78da[_0x4402('0x48')][_0x4402('0x10d')](_0x4402('0x4f'))){_0x2433a1['limit']=qs[_0x4402('0x2a')](_0x3e78da[_0x4402('0x48')][_0x4402('0x2a')]);_0x2433a1['offset']=qs[_0x4402('0x29')](_0x3e78da[_0x4402('0x48')][_0x4402('0x29')]);}_0x2433a1[_0x4402('0x94')]=qs['sort'](_0x3e78da[_0x4402('0x48')][_0x4402('0x10e')]);_0x2433a1['where']=qs['filters'](_['pick'](_0x3e78da['query'],_0x4069cf[_0x4402('0x4a')]));_0x2433a1[_0x4402('0x50')][_0x4402('0xb1')]=_0x1f2219['id'];if(_0x3e78da['query'][_0x4402('0x8a')]){_0x2433a1[_0x4402('0x50')]=_[_0x4402('0x38')](_0x2433a1['where'],{'$or':_[_0x4402('0x42')](_0x2433a1[_0x4402('0x4d')],function(_0x2466a1){var _0x55ed20={};_0x55ed20[_0x2466a1]={'$like':'%'+_0x3e78da[_0x4402('0x48')][_0x4402('0x8a')]+'%'};return _0x55ed20;})});}if(_0x3e78da['query'][_0x4402('0x10f')]){var _0x335d93=_0x3e78da[_0x4402('0x48')][_0x4402('0x10f')]['split'](',');var _0x3aebf6={};_0x3aebf6[_0x335d93[0x0]]={'$gte':moment(_0x335d93[0x1])['format'](_0x4402('0x110'))};_0x2433a1['where']=_['merge'](_0x2433a1[_0x4402('0x50')],_0x3aebf6);}_0x2433a1=_[_0x4402('0x38')]({},_0x2433a1,_0x3e78da[_0x4402('0xb8')]);return db[_0x4402('0xeb')][_0x4402('0x2c')]({'where':_0x2433a1[_0x4402('0x50')]})[_0x4402('0x34')](function(_0x87e1c){_0x7be513['count']=_0x87e1c;if(_0x3e78da[_0x4402('0x48')][_0x4402('0x111')]){_0x2433a1[_0x4402('0xb7')]=[{'all':!![]}];}return db[_0x4402('0xeb')][_0x4402('0x112')](_0x2433a1);})['then'](function(_0x20b540){_0x7be513['rows']=_0x20b540;return _0x7be513;});}})[_0x4402('0x34')](respondWithFilteredResult(_0x1bf636,_0x2433a1))[_0x4402('0x41')](handleError(_0x1bf636,null));};exports[_0x4402('0x113')]=function(_0x516583,_0x182827,_0x284292){var _0x579bab={'where':{}},_0x30cdd6={},_0x1ac943={'count':0x0,'rows':[]};return db[_0x4402('0x43')][_0x4402('0xbb')]({'where':{'id':_0x516583[_0x4402('0xb6')]['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x182827,null))[_0x4402('0x34')](function(_0xe8f398){if(_0xe8f398){_0x30cdd6[_0x4402('0x47')]=_[_0x4402('0x49')](db[_0x4402('0xeb')][_0x4402('0x44')]);_0x30cdd6[_0x4402('0x48')]=_[_0x4402('0x49')](_0x516583['query']);_0x30cdd6[_0x4402('0x4a')]=_[_0x4402('0x4b')](_0x30cdd6[_0x4402('0x47')],_0x30cdd6[_0x4402('0x48')]);_0x579bab[_0x4402('0x4d')]=_[_0x4402('0x4b')](_0x30cdd6[_0x4402('0x47')],qs[_0x4402('0x4c')](_0x516583['query'][_0x4402('0x4c')]));_0x579bab[_0x4402('0x4d')]=_0x579bab[_0x4402('0x4d')]['length']?_0x579bab[_0x4402('0x4d')]:_0x30cdd6[_0x4402('0x47')];if(!_0x516583[_0x4402('0x48')][_0x4402('0x10d')](_0x4402('0x4f'))){_0x579bab[_0x4402('0x2a')]=qs[_0x4402('0x2a')](_0x516583['query']['limit']);_0x579bab[_0x4402('0x29')]=qs[_0x4402('0x29')](_0x516583[_0x4402('0x48')][_0x4402('0x29')]);}_0x579bab[_0x4402('0x94')]=qs['sort'](_0x516583[_0x4402('0x48')][_0x4402('0x10e')]);_0x579bab[_0x4402('0x50')]=qs['filters'](_[_0x4402('0x51')](_0x516583['query'],_0x30cdd6[_0x4402('0x4a')]));_0x579bab[_0x4402('0x50')][_0x4402('0xb1')]=_0xe8f398['id'];if(_0x516583[_0x4402('0x48')]['filter']){_0x579bab[_0x4402('0x50')]=_[_0x4402('0x38')](_0x579bab[_0x4402('0x50')],{'$or':_[_0x4402('0x42')](_0x579bab[_0x4402('0x4d')],function(_0x3adad4){var _0x207b70={};_0x207b70[_0x3adad4]={'$like':'%'+_0x516583['query']['filter']+'%'};return _0x207b70;})});}_0x579bab[_0x4402('0x50')][_0x4402('0xfa')]=![];if(_0x516583[_0x4402('0x48')]['id']){_0x579bab['where']['id']={'$gt':_0x516583[_0x4402('0x48')]['id']};}_0x579bab=_[_0x4402('0x38')]({},_0x579bab,_0x516583[_0x4402('0xb8')]);return db['ChatMessage'][_0x4402('0x2c')]({'where':_0x579bab['where']})[_0x4402('0x34')](function(_0x2903fd){_0x1ac943[_0x4402('0x2c')]=_0x2903fd;_0x579bab['include']=[];if(_0x516583[_0x4402('0x48')][_0x4402('0x114')]){_0x579bab['include']['push']({'model':db['User'],'as':'User','attributes':['id',_0x4402('0xc0'),'alias']});}if(_0x516583['query'][_0x4402('0x111')]){_0x579bab['include']=[{'all':!![]}];}return db[_0x4402('0xeb')][_0x4402('0x112')](_0x579bab);})['then'](function(_0x230904){_0x1ac943[_0x4402('0xb4')]=_0x230904;return _0x1ac943;});}})[_0x4402('0x34')](respondWithFilteredResult(_0x182827,_0x579bab))['catch'](handleError(_0x182827,null));};exports[_0x4402('0x115')]=function(_0x5f42bc,_0x50999c,_0xc4375e){return db['ChatInteraction'][_0x4402('0x69')]({'where':{'id':_0x5f42bc['params']['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x50999c,null))[_0x4402('0x34')](function(_0x21a6d2){if(_0x21a6d2){return _0x21a6d2[_0x4402('0x116')](_0x5f42bc[_0x4402('0x7a')][_0x4402('0x117')],_[_0x4402('0x10b')](_0x5f42bc[_0x4402('0x7a')],[_0x4402('0x117'),'id'])||{})[_0x4402('0x118')](function(){return db[_0x4402('0x75')][_0x4402('0x112')]({'attributes':['id',_0x4402('0x36'),_0x4402('0x119')],'where':{'id':_0x5f42bc[_0x4402('0x7a')]['ids']}});})[_0x4402('0x34')](function(_0x132621){socket[_0x4402('0x11a')](_0x4402('0x11b'),{'id':Number(_0x5f42bc[_0x4402('0xb6')]['id']),'tags':_0x132621||[]});return{'id':Number(_0x5f42bc[_0x4402('0xb6')]['id']),'tags':_0x132621||[]};});}})[_0x4402('0x34')](respondWithResult(_0x50999c,null))[_0x4402('0x41')](handleError(_0x50999c,null));};exports[_0x4402('0x11c')]=function(_0x4e0ae2,_0x21e2c8,_0x1845d8){return db[_0x4402('0x43')]['find']({'where':{'id':_0x4e0ae2[_0x4402('0xb6')]['id']}})['then'](handleEntityNotFound(_0x21e2c8,null))[_0x4402('0x34')](function(_0x424e93){if(_0x424e93){return _0x424e93[_0x4402('0x11c')](_0x4e0ae2[_0x4402('0x48')]['ids']);}})[_0x4402('0x34')](respondWithStatusCode(_0x21e2c8,null))['catch'](handleError(_0x21e2c8,null));};exports[_0x4402('0xe4')]=function(_0x4cb0bf,_0x2a586e){var _0x5325a7=moment()[_0x4402('0x11d')]()['toString']();var _0x157060=path[_0x4402('0xe0')](config[_0x4402('0xe1')],_0x4402('0x11e'),_0x4402('0x11f'),_0x4402('0x120'));var _0x2ead56=path[_0x4402('0xe0')](config['root'],_0x4402('0x11e'),_0x4402('0x11f'),_0x4402('0x121'));var _0x31d19c=path[_0x4402('0xe0')](_0x157060,_0x5325a7);var _0x1675b2=util[_0x4402('0xe8')](_0x4402('0x122'),_0x4cb0bf['params']['id'],_0x5325a7);var _0xe5e2f3=path[_0x4402('0xe0')](_0x157060,_0x1675b2);var _0x22c8a1=[];_0x22c8a1[_0x4402('0xb2')]({'model':db[_0x4402('0x77')],'as':_0x4402('0x77'),'attributes':['id',_0x4402('0xc0')],'raw':!![]});_0x22c8a1[_0x4402('0xb2')]({'model':db[_0x4402('0xd1')],'as':_0x4402('0x6e'),'attributes':['id',_0x4402('0x123'),'lastName'],'raw':!![]});if(_0x4cb0bf[_0x4402('0x48')]['attachments']){_0x22c8a1[_0x4402('0xb2')]({'model':db[_0x4402('0xdc')],'as':_0x4402('0xdc'),'raw':!![]});}var _0x177297=[{'model':db['ChatMessage'],'as':_0x4402('0xec'),'attributes':['id','body',_0x4402('0x7f'),'direction',_0x4402('0xfa'),_0x4402('0x85')],'include':_0x22c8a1}];_0x177297[_0x4402('0xb2')]({'model':db[_0x4402('0xbc')],'as':_0x4402('0x124'),'attributes':['id',_0x4402('0x36')]});_0x177297[_0x4402('0xb2')]({'model':db[_0x4402('0x77')],'as':'Owner','attributes':['id',_0x4402('0xc0')]});return db[_0x4402('0x43')][_0x4402('0x69')]({'where':{'id':_0x4cb0bf[_0x4402('0xb6')]['id']},'include':_0x177297})[_0x4402('0x34')](handleEntityNotFound(_0x2a586e,null))[_0x4402('0x34')](function(_0x140207){if(_0x140207){var _0x1d2478=_0x140207[_0x4402('0x125')]({'plain':!![]});fs[_0x4402('0x126')](_0x31d19c);var _0x286a77={'channel':_0x4402('0x127'),'account':_0x1d2478[_0x4402('0x124')][_0x4402('0x36')],'agent':_0x1d2478['Owner']?_0x1d2478[_0x4402('0x128')][_0x4402('0xc0')]:_0x4402('0x129'),'createdAt':moment(_0x1d2478[_0x4402('0x7f')])[_0x4402('0xe8')](_0x4402('0x110'))[_0x4402('0x9e')](),'closedAt':_0x1d2478[_0x4402('0x12a')]?moment(_0x1d2478['closedAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x4402('0x9e')]():'','disposition':_0x1d2478['disposition'],'chatInfo':{'browser':_0x1d2478[_0x4402('0x12b')],'os':_0x1d2478['osName'],'referer':_0x1d2478[_0x4402('0x12c')],'customerIp':_0x1d2478[_0x4402('0x12d')],'customerPort':_0x1d2478[_0x4402('0x12e')]?_0x1d2478['customerPort']:_0x4402('0x129')},'messages':_(_0x1d2478[_0x4402('0xec')])[_0x4402('0x12f')]()[_0x4402('0x8a')]({'secret':![]})['map'](function(_0x633496){if(_0x633496[_0x4402('0xdc')]){var _0x5862a7=path[_0x4402('0xe0')](_0x2ead56,_0x633496['Attachment'][_0x4402('0xd9')]);if(fs[_0x4402('0x130')](_0x5862a7)){fs[_0x4402('0x131')](_0x5862a7)[_0x4402('0x132')](fs[_0x4402('0x133')](path[_0x4402('0xe0')](_0x31d19c,_0x633496[_0x4402('0xdc')][_0x4402('0xd9')])));}}return{'date':moment(_0x633496[_0x4402('0x7f')])[_0x4402('0xe8')](_0x4402('0x110'))[_0x4402('0x9e')](),'sender':_0x633496['direction']===_0x4402('0xcd')?_0x633496[_0x4402('0x77')]?_0x633496[_0x4402('0x77')][_0x4402('0xc0')]:_0x4402('0xf0'):_0x633496['Contact'][_0x4402('0x123')]+(_0x633496[_0x4402('0x6e')][_0x4402('0x134')]?'\x20'+_0x633496[_0x4402('0x6e')][_0x4402('0x134')]:''),'body':_0x633496[_0x4402('0xdc')]?_0x633496[_0x4402('0xdc')]['basename']:_0x633496[_0x4402('0x7a')],'direction':_0x633496['direction']===_0x4402('0xcd')?'A':'C','secret':_0x633496[_0x4402('0xfa')],'read':_0x633496[_0x4402('0x85')],'attachment':_0x633496['Attachment']};})[_0x4402('0x6b')]()};return ejs[_0x4402('0x135')](path[_0x4402('0xe0')](config[_0x4402('0xe1')],_0x4402('0x11e'),'views','downloadInteraction.ejs'),{'interaction':_0x286a77})['then'](function(_0x5b8cd8){var _0x3fc6b3=path[_0x4402('0xe0')](_0x31d19c,'transcript-'+_0x1d2478['id']+'-'+_0x5325a7+_0x4402('0x136'));var _0x15bbe1={'path':_0x3fc6b3,'channel':_0x4402('0x127'),'interactionId':_0x1d2478['id']};return pdf[_0x4402('0x137')](_0x5b8cd8,_0x15bbe1);})[_0x4402('0x34')](function(){return new BPromise(function(_0x303680,_0x281eaa){zipdir(_0x31d19c,{'saveTo':_0xe5e2f3},function(_0x1baf42,_0x3d743e){if(_0x1baf42)return _0x281eaa(_0x1baf42);return _0x303680(_0x3d743e);});})[_0x4402('0x34')](function(){return new BPromise(function(_0x5ad41f,_0xbeb577){rimraf(_0x31d19c,function(_0x8c8f01){if(_0x8c8f01)_0xbeb577(_0x8c8f01);return _0x5ad41f();});});})[_0x4402('0x34')](function(){return _0x2a586e[_0x4402('0xe4')](_0xe5e2f3,_0x1675b2,function(_0xc36aed){if(_0xc36aed){console['log'](_0x4402('0x138'),_0xc36aed);}else{fs[_0x4402('0x139')](_0xe5e2f3);}});});});}else{return _0x2a586e[_0x4402('0x35')](0xc8);}})[_0x4402('0x41')](handleError(_0x2a586e,null));};
\ No newline at end of file
+var _0xdd4f=['i.ChatWebsiteId\x20IN\x20?','toString','sequelize','ChatInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.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.*','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','all','rows','includeAll','include','options','create','params','describe','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooNote','vidaooMetadata','email','contact','POST','https://api-vidaoo.xcally.com/api/v1/meetings','vidaooTopic','follow','isNull','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','entity\x20not\x20found','Interaction\x20already\x20assigned','disposition','AbandonInteraction','attachmentUpload','file','basename','mimetype','attachmentDownload','closed','Unauthorized','Attachment','ChatOfflineMessageId','server/files/attachments/','join','offline-chat/','download','close','mailTranscript','root','server/files/chat/upload/','transcript-%s.txt','pathTranscript','Messages','format','%s%d','agentAlias','System','customer','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','service','host','port','secure','authentication','pass','SendMail','sendMail','Mail\x20Transcript','addMessage','ids','omit','nolimit','sort','ChatInteractionId','$gte','getMyMessages','filter','findAll','setTags','spread','emit','chatInteractionTags:save','removeTags','unix','tmp','server','files','attachments','transcript-%d-%s.zip','lastName','ChatWebsite','Account','get','mkdirSync','Chat','Owner','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','browserName','osName','referer','customerPort','existsSync','createReadStream','pipe','createWriteStream','out','firstName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','err','eml-format','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','update','destroy','stack','name','send','render','merge','body','interaction','account','Users','map','fullname','Tags','TagIds','split','forEach','push','rawAttributes','type','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','pick','field','from','tools_tags','select','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','parseSearch','search','sqlOperator','conditions','find','unreadMessages','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?','ContactId','text','start','Tag','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','compact','isEmpty','ChatWebsiteId','where','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','replace','isNumeric','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','order','contactName','t.id\x20IN\x20?','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','agent','i.ChatWebsiteId\x20IS\x20NULL'];(function(_0x2128fc,_0x17fe40){var _0x4ffad4=function(_0x5df87a){while(--_0x5df87a){_0x2128fc['push'](_0x2128fc['shift']());}};_0x4ffad4(++_0x17fe40);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x2e8f71,_0xace741){_0x2e8f71=_0x2e8f71-0x0;var _0x141840=_0xdd4f[_0x2e8f71];return _0x141840;};'use strict';var emlformat=require(_0xfdd4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfdd4('0x1'));var moment=require(_0xfdd4('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xfdd4('0x3'));var util=require(_0xfdd4('0x4'));var path=require(_0xfdd4('0x5'));var sox=require('sox');var csv=require(_0xfdd4('0x6'));var ejs=require(_0xfdd4('0x7'));var fs=require('fs');var fs_extra=require(_0xfdd4('0x8'));var _=require(_0xfdd4('0x9'));var squel=require(_0xfdd4('0xa'));var crypto=require('crypto');var jsforce=require(_0xfdd4('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xfdd4('0x6'));var querystring=require(_0xfdd4('0xc'));var Papa=require(_0xfdd4('0xd'));var Redis=require('ioredis');var authService=require(_0xfdd4('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xfdd4('0xf'));var pdf=require(_0xfdd4('0x10'));var hardwareService=require(_0xfdd4('0x11'));var logger=require(_0xfdd4('0x12'))(_0xfdd4('0x13'));var utils=require(_0xfdd4('0x14'));var config=require(_0xfdd4('0x15'));var licenseUtil=require(_0xfdd4('0x16'));var db=require(_0xfdd4('0x17'))['db'];config[_0xfdd4('0x18')]=_[_0xfdd4('0x19')](config['redis'],{'host':_0xfdd4('0x1a'),'port':0x18eb});var socket=require(_0xfdd4('0x1b'))(new Redis(config[_0xfdd4('0x18')]));require('./chatInteraction.socket')[_0xfdd4('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0xfdd4('0x1d')][_0xfdd4('0x1e')]({'port':0x232b});var client9004=jayson[_0xfdd4('0x1d')][_0xfdd4('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x37b05f,_0x52cf2c,_0x47ed1d,_0x559c77){return new BPromise(function(_0x3a966d,_0x216c7e){var _0x2eb174=_0x559c77||client;return _0x2eb174[_0xfdd4('0x1f')](_0x37b05f,_0x47ed1d)[_0xfdd4('0x20')](function(_0x33d752){logger[_0xfdd4('0x21')](_0xfdd4('0x22'),_0x52cf2c,_0xfdd4('0x23'));logger['debug'](_0xfdd4('0x24'),_0x52cf2c,_0xfdd4('0x23'),JSON[_0xfdd4('0x25')](_0x33d752));if(_0x33d752[_0xfdd4('0x26')]){if(_0x33d752[_0xfdd4('0x26')][_0xfdd4('0x27')]===0x1f4){logger[_0xfdd4('0x26')](_0xfdd4('0x22'),_0x52cf2c,_0x33d752['error'][_0xfdd4('0x28')]);return _0x216c7e(_0x33d752[_0xfdd4('0x26')][_0xfdd4('0x28')]);}logger[_0xfdd4('0x26')](_0xfdd4('0x22'),_0x52cf2c,_0x33d752[_0xfdd4('0x26')][_0xfdd4('0x28')]);return _0x3a966d(_0x33d752[_0xfdd4('0x26')]['message']);}else{logger[_0xfdd4('0x21')](_0xfdd4('0x22'),_0x52cf2c,_0xfdd4('0x23'));_0x3a966d(_0x33d752['result'][_0xfdd4('0x28')]);}})[_0xfdd4('0x29')](function(_0xf9c346){logger[_0xfdd4('0x26')](_0xfdd4('0x22'),_0x52cf2c,_0xf9c346);_0x216c7e(_0xf9c346);});});}function respondWithStatusCode(_0x4a8790,_0x18bafb){_0x18bafb=_0x18bafb||0xcc;return function(_0x2c88ad){if(_0x2c88ad){return _0x4a8790[_0xfdd4('0x2a')](_0x18bafb);}return _0x4a8790[_0xfdd4('0x2b')](_0x18bafb)[_0xfdd4('0x2c')]();};}function respondWithResult(_0x192471,_0x453a48){_0x453a48=_0x453a48||0xc8;return function(_0x37b7a2){if(_0x37b7a2){return _0x192471['status'](_0x453a48)[_0xfdd4('0x2d')](_0x37b7a2);}};}function respondWithFilteredResult(_0x39981f,_0x385a68){return function(_0xef012e){if(_0xef012e){var _0x2207ae=typeof _0x385a68['offset']===_0xfdd4('0x2e')&&typeof _0x385a68[_0xfdd4('0x2f')]===_0xfdd4('0x2e');var _0x2bb793=_0xef012e[_0xfdd4('0x30')];var _0x4d64ce=_0x2207ae?0x0:_0x385a68[_0xfdd4('0x31')];var _0x315568=_0x2207ae?_0xef012e[_0xfdd4('0x30')]:_0x385a68['offset']+_0x385a68[_0xfdd4('0x2f')];var _0x502776;if(_0x315568>=_0x2bb793){_0x315568=_0x2bb793;_0x502776=0xc8;}else{_0x502776=0xce;}_0x39981f[_0xfdd4('0x2b')](_0x502776);return _0x39981f[_0xfdd4('0x32')]('Content-Range',_0x4d64ce+'-'+_0x315568+'/'+_0x2bb793)['json'](_0xef012e);}return null;};}function patchUpdates(_0x41dae6){return function(_0x289f16){try{jsonpatch['apply'](_0x289f16,_0x41dae6,!![]);}catch(_0x557d7b){return BPromise[_0xfdd4('0x33')](_0x557d7b);}return _0x289f16[_0xfdd4('0x34')]();};}function saveUpdates(_0x39eedb,_0x24b1fa){return function(_0x3247f4){if(_0x3247f4){return _0x3247f4[_0xfdd4('0x35')](_0x39eedb)[_0xfdd4('0x20')](function(_0x4734ed){return _0x4734ed;});}return null;};}function removeEntity(_0x3e6bc5,_0x457ab5){return function(_0x6ffe30){if(_0x6ffe30){return _0x6ffe30[_0xfdd4('0x36')]()[_0xfdd4('0x20')](function(){_0x3e6bc5[_0xfdd4('0x2b')](0xcc)[_0xfdd4('0x2c')]();});}};}function handleEntityNotFound(_0x3f5c5a,_0x261d87){return function(_0x3a0102){if(!_0x3a0102){_0x3f5c5a[_0xfdd4('0x2a')](0x194);}return _0x3a0102;};}function handleError(_0x4037c4,_0xc9549b){_0xc9549b=_0xc9549b||0x1f4;return function(_0x2e4c8c){logger[_0xfdd4('0x26')](_0x2e4c8c[_0xfdd4('0x37')]);if(_0x2e4c8c[_0xfdd4('0x38')]){delete _0x2e4c8c[_0xfdd4('0x38')];}_0x4037c4['status'](_0xc9549b)[_0xfdd4('0x39')](_0x2e4c8c);};}function getMustacheRender(_0x3716da,_0x42dc1a){return Mustache[_0xfdd4('0x3a')](_0x3716da,_[_0xfdd4('0x3b')](_0x42dc1a[_0xfdd4('0x3c')],{'contact':_0x42dc1a['contact'],'message':_0x42dc1a[_0xfdd4('0x28')],'agent':_0x42dc1a['agent'],'interaction':_0x42dc1a[_0xfdd4('0x3d')],'account':_0x42dc1a[_0xfdd4('0x3e')]}))||'';}function getInteractionUsers(_0x6a79eb,_0x13efe8){return new BPromise(function(_0x4cccab,_0x1c6f43){try{if(_0x13efe8[_0x6a79eb['id']]){_0x6a79eb[_0xfdd4('0x3f')]=_[_0xfdd4('0x40')](_0x13efe8[_0x6a79eb['id']],function(_0x2ee857){return{'id':_0x2ee857['id'],'fullname':_0x2ee857[_0xfdd4('0x41')]};});}}catch(_0x7e171){_0x1c6f43(_0x7e171);}_0x4cccab(_0x6a79eb);});}function getInteractionTags(_0x28e5e2,_0x55fcec){return new BPromise(function(_0xe65944,_0x83673d){try{if(_0x28e5e2['TagIds']){_0x28e5e2[_0xfdd4('0x42')]=[];_0x28e5e2[_0xfdd4('0x43')][_0xfdd4('0x44')](',')[_0xfdd4('0x45')](function(_0x5173db){_0x28e5e2[_0xfdd4('0x42')][_0xfdd4('0x46')](_0x55fcec[_0x5173db]);});}delete _0x28e5e2[_0xfdd4('0x43')];}catch(_0x2341e5){_0x83673d(_0x2341e5);}_0xe65944(_0x28e5e2);});}function updateChatInteraction(_0x362c4f,_0x496747,_0x1411e0){return new BPromise(function(_0x23af2a,_0xd3780d){return getInteractionUsers(_0x362c4f,_0x1411e0)[_0xfdd4('0x20')](function(_0x912520){return getInteractionTags(_0x912520,_0x496747);})[_0xfdd4('0x20')](function(_0x3d1051){_0x23af2a(_0x3d1051);})['catch'](function(_0x2dd3fa){_0xd3780d(_0x2dd3fa);});});}exports['index']=function(_0x3a0de9,_0x11f241){var _0x3f7273={},_0x137d41={},_0x5367aa={'count':0x0,'rows':[]};var _0x419578=_[_0xfdd4('0x40')](db['ChatInteraction'][_0xfdd4('0x47')],function(_0xbfaa53){return{'name':_0xbfaa53['fieldName'],'type':_0xbfaa53[_0xfdd4('0x48')]['key']};});_0x137d41['model']=_['map'](_0x419578,_0xfdd4('0x38'));_0x137d41[_0xfdd4('0x49')]=_[_0xfdd4('0x4a')](_0x3a0de9['query']);_0x137d41[_0xfdd4('0x4b')]=_[_0xfdd4('0x4c')](_0x137d41['model'],_0x137d41[_0xfdd4('0x49')]);_0x3f7273[_0xfdd4('0x4d')]=_[_0xfdd4('0x4c')](_0x137d41[_0xfdd4('0x4e')],qs[_0xfdd4('0x4f')](_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x4f')]));_0x3f7273[_0xfdd4('0x4d')]=_0x3f7273[_0xfdd4('0x4d')][_0xfdd4('0x50')]?_0x3f7273[_0xfdd4('0x4d')]:_0x137d41[_0xfdd4('0x4e')];if(!_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x51')]('nolimit')){_0x3f7273['limit']=qs[_0xfdd4('0x2f')](_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x2f')]);_0x3f7273[_0xfdd4('0x31')]=qs['offset'](_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x31')]);}_0x3f7273['order']=qs['sort'](_0x3a0de9['query']['sort']);_0x3f7273['where']=qs[_0xfdd4('0x4b')](_[_0xfdd4('0x52')](_0x3a0de9[_0xfdd4('0x49')],_0x137d41[_0xfdd4('0x4b')]),_0x419578);var _0x35c032=[];var _0x49bc61=squel['select']()[_0xfdd4('0x53')]('id')[_0xfdd4('0x53')](_0xfdd4('0x38'))[_0xfdd4('0x53')]('color')[_0xfdd4('0x54')](_0xfdd4('0x55'));var _0x4addd6=squel[_0xfdd4('0x56')]()[_0xfdd4('0x53')]('u.id')['field'](_0xfdd4('0x57'))[_0xfdd4('0x53')](_0xfdd4('0x58'))[_0xfdd4('0x54')](_0xfdd4('0x59'),'ui')[_0xfdd4('0x5a')](_0xfdd4('0x5b'),'u',_0xfdd4('0x5c'));var _0x5848e1=squel[_0xfdd4('0x56')]()['from']('chat_interactions','i')[_0xfdd4('0x5a')](_0xfdd4('0x5d'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join']('users','o',_0xfdd4('0x5e'))[_0xfdd4('0x5a')]('chat_websites','a',_0xfdd4('0x5f'))[_0xfdd4('0x5a')](_0xfdd4('0x60'),'me',_0xfdd4('0x61'))[_0xfdd4('0x5a')]('chat_interaction_has_tags','it','it.ChatInteractionId\x20=\x20i.id')['left_join']('tools_tags','t',_0xfdd4('0x62'));var _0x14d07e=squel['expr']();var _0x1eee3d=[];var _0x2abe50=squel['expr']();var _0x45dcc8;if(_0x3a0de9[_0xfdd4('0x49')]['search']){_0x45dcc8=as[_0xfdd4('0x63')](_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x64')]);var _0x4a5fe6=_0x45dcc8[_0xfdd4('0x65')];for(var _0x3417dd=0x0;_0x3417dd<_0x45dcc8[_0xfdd4('0x66')][_0xfdd4('0x50')];_0x3417dd++){var _0x5c7be=_0x45dcc8['conditions'][_0x3417dd];var _0x2cc3e2='i';var _0x2ee4b6=_[_0xfdd4('0x67')](_0x419578,[_0xfdd4('0x38'),_0x5c7be[_0xfdd4('0x53')]]);if(!_0x2ee4b6){switch(_0x5c7be[_0xfdd4('0x53')]){case _0xfdd4('0x68'):if(_0x5c7be[_0xfdd4('0x69')]==0x1){_0x5848e1[_0xfdd4('0x6a')]('`'+_0x5c7be['field']+_0xfdd4('0x6b'));}else{_0x5848e1[_0xfdd4('0x6a')]('`'+_0x5c7be[_0xfdd4('0x53')]+_0xfdd4('0x6c'));}break;case _0xfdd4('0x6d'):if(_0x5c7be['operator']===_0xfdd4('0x6e')){if(_0x5c7be[_0xfdd4('0x69')][_0xfdd4('0x44')]('\x20')[_0xfdd4('0x50')]>0x1){_0x14d07e[_0x4a5fe6](_0xfdd4('0x6f'),qs[_0xfdd4('0x70')](_0x5c7be[_0xfdd4('0x69')]),null);}else{var _0x276e9='%'+_0x5c7be[_0xfdd4('0x69')]+'%';_0x14d07e[_0x4a5fe6](_0xfdd4('0x71'),_0x276e9,_0x276e9,_0x276e9);}}else{_0x2ee4b6=_[_0xfdd4('0x67')](_0x419578,[_0xfdd4('0x38'),_0xfdd4('0x72')]);_0x5c7be['field']=_0xfdd4('0x72');_0xa55e0f=as['buildExpression'](_0x2cc3e2,_0x2ee4b6[_0xfdd4('0x48')],_0x5c7be);_0x14d07e[_0x4a5fe6](_0xa55e0f[_0xfdd4('0x73')],_0xa55e0f[_0xfdd4('0x69')][_0xfdd4('0x74')],_0xa55e0f[_0xfdd4('0x69')][_0xfdd4('0x2c')]);}break;case _0xfdd4('0x75'):var _0xb0bb50=_0x5c7be[_0xfdd4('0x69')][_0xfdd4('0x44')](',')[_0xfdd4('0x40')](function(_0x207a4c){return Number(_0x207a4c);});_0xb0bb50['forEach'](function(_0x4bac59){_0x2abe50['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4bac59+',%');});_0x1eee3d=_[_0xfdd4('0x76')](_0x1eee3d,_0xb0bb50);break;case _0xfdd4('0x77'):if(_0x5c7be['operator']===_0xfdd4('0x6e')){_0x14d07e[_0x4a5fe6](_0xfdd4('0x78'),'%'+_0x5c7be[_0xfdd4('0x69')]+'%',null);}else{_0x2ee4b6=_[_0xfdd4('0x67')](_0x419578,[_0xfdd4('0x38'),'UserId']);_0x5c7be[_0xfdd4('0x53')]=_0xfdd4('0x79');_0xa55e0f=as[_0xfdd4('0x7a')](_0x2cc3e2,_0x2ee4b6['type'],_0x5c7be);_0x14d07e[_0x4a5fe6](_0xa55e0f[_0xfdd4('0x73')],_0xa55e0f['value'][_0xfdd4('0x74')],_0xa55e0f[_0xfdd4('0x69')][_0xfdd4('0x2c')]);}break;case _0xfdd4('0x3c'):_0xa55e0f=as['buildExpression']('me',null,_0x5c7be);_0x14d07e[_0x4a5fe6](_0xa55e0f[_0xfdd4('0x73')],_0xa55e0f[_0xfdd4('0x69')]['start'],_0xa55e0f[_0xfdd4('0x69')][_0xfdd4('0x2c')]);break;}}else{var _0xa55e0f=as['buildExpression'](_0x2cc3e2,_0x2ee4b6[_0xfdd4('0x48')],_0x5c7be);_0x14d07e[_0x4a5fe6](_0xa55e0f[_0xfdd4('0x73')],_0xa55e0f[_0xfdd4('0x69')]['start'],_0xa55e0f[_0xfdd4('0x69')][_0xfdd4('0x2c')]);}}}else{var _0x427ded=_(_0x3a0de9[_0xfdd4('0x49')])[_0xfdd4('0x4a')]()[_0xfdd4('0x40')](function(_0x185226){return _['some'](_0x419578,[_0xfdd4('0x38'),_0x185226])?_0x185226:undefined;})[_0xfdd4('0x7b')]()[_0xfdd4('0x69')]();if(!_[_0xfdd4('0x7c')](_0x427ded)){_0x427ded[_0xfdd4('0x45')](function(_0x2cbd27){if(_0x2cbd27===_0xfdd4('0x7d')){_0x5848e1[_0xfdd4('0x7e')]('i.ChatWebsiteId\x20IN\x20?',[][_0xfdd4('0x7f')](_0x3a0de9['query'][_0x2cbd27]));}else if(_0x2cbd27==='createdAt'){var _0x40b2e8=JSON['parse'](_0x3a0de9[_0xfdd4('0x49')][_0x2cbd27])['$gte'];var _0x4576ce=JSON[_0xfdd4('0x80')](_0x3a0de9[_0xfdd4('0x49')][_0x2cbd27])[_0xfdd4('0x81')];_0x5848e1[_0xfdd4('0x7e')](_0xfdd4('0x82'),_0x40b2e8,_0x4576ce);}else{if(_0x3a0de9[_0xfdd4('0x49')][_0x2cbd27]==='null'){_0x5848e1['where']('i.'+_0x2cbd27+_0xfdd4('0x83'));}else{_0x5848e1['where']('i.'+_0x2cbd27+_0xfdd4('0x84'),_0x3a0de9[_0xfdd4('0x49')][_0x2cbd27]);}}});}if(_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x85')]){if(_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x85')]==0x1){_0x5848e1[_0xfdd4('0x6a')]('`unreadMessages`\x20=\x200');}else{_0x5848e1['having'](_0xfdd4('0x86'));}}if(_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x87')]){_0x1eee3d=_[_0xfdd4('0x88')](_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x87')])?_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x87')]:new Array(_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x87')]);_0x1eee3d[_0xfdd4('0x45')](function(_0x32abf5){_0x2abe50['or'](_0xfdd4('0x89'),'%,'+_0x32abf5+',%');});}if(_0x3a0de9['query']['filter']){var _0x3761f2=_0x3a0de9[_0xfdd4('0x49')]['filter']['replace']('\x5c','\x5c\x5c')[_0xfdd4('0x8a')](/'/g,'\x27\x27');if(qs[_0xfdd4('0x8b')](_0x3761f2)){_0x14d07e['or']('i.id\x20LIKE\x20?',_0x3761f2+'%');}else{_0x14d07e['or'](_0xfdd4('0x8c'),qs[_0xfdd4('0x70')](_0x3761f2))['or'](_0xfdd4('0x8d'),_0x3761f2+'%');}}}_0x5848e1[_0xfdd4('0x7e')](_0x14d07e);_0x5848e1[_0xfdd4('0x8e')](_0xfdd4('0x8f'));var _0x5d356c={'type':db[_0xfdd4('0x90')][_0xfdd4('0x91')][_0xfdd4('0x92')],'raw':!![]};var _0x2f8001=_0x5848e1[_0xfdd4('0x93')]();_0x2f8001[_0xfdd4('0x53')](_0xfdd4('0x8f'));_0x2f8001[_0xfdd4('0x53')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0x3f7273[_0xfdd4('0x94')]){_0x3f7273['order'][_0xfdd4('0x45')](function(_0x1b4f61){var _0x298906=_0x1b4f61[0x0]===_0xfdd4('0x95')?_0x1b4f61[0x0]:'i.'+_0x1b4f61[0x0];_0x5848e1[_0xfdd4('0x94')](_0x298906,_0x1b4f61[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x1eee3d)){_0x5848e1[_0xfdd4('0x6a')](_0x2abe50);_0x2f8001['where'](_0xfdd4('0x96'),_0x1eee3d);}BPromise['resolve']()[_0xfdd4('0x20')](function(){if(!_0x45dcc8){if(_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x7d')])return;_0x2f8001[_0xfdd4('0x7e')](_0xfdd4('0x97'));_0x5848e1[_0xfdd4('0x7e')](_0xfdd4('0x97'));return;}if(_0x3a0de9[_0xfdd4('0x98')][_0xfdd4('0x99')]!==_0xfdd4('0x9a'))return;return _0x3a0de9[_0xfdd4('0x98')]['getChatWebsites']({'attributes':['id'],'raw':!![]})[_0xfdd4('0x20')](function(_0x1f9e08){if(_[_0xfdd4('0x7c')](_0x1f9e08)){_0x2f8001[_0xfdd4('0x7e')](_0xfdd4('0x9b'));_0x5848e1[_0xfdd4('0x7e')](_0xfdd4('0x9b'));}else{_0x2f8001[_0xfdd4('0x7e')](_0xfdd4('0x9c'),_['map'](_0x1f9e08,'id'));_0x5848e1['where'](_0xfdd4('0x9c'),_[_0xfdd4('0x40')](_0x1f9e08,'id'));}});})[_0xfdd4('0x20')](function(){if(_0x3a0de9['user'][_0xfdd4('0x99')]===_0xfdd4('0x9a')&&!_0x45dcc8&&!_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x7d')])return[];return db['sequelize']['query'](_0x2f8001[_0xfdd4('0x9d')](),_0x5d356c);})[_0xfdd4('0x20')](function(_0x3b75bf){_0x5367aa['count']=_0x3b75bf[_0xfdd4('0x50')];if(_0x5367aa[_0xfdd4('0x30')]===0x0)return[];return db[_0xfdd4('0x9e')][_0xfdd4('0x49')](_0x49bc61[_0xfdd4('0x9d')](),_0x5d356c)[_0xfdd4('0x20')](function(_0x524a8f){_0x35c032=_['keyBy'](_0x524a8f,'id');_0x5d356c=_[_0xfdd4('0x3b')](_0x5d356c,{'model':db[_0xfdd4('0x9f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3a0de9[_0xfdd4('0x49')][_0xfdd4('0x4f')]){_0x3f7273[_0xfdd4('0x4d')][_0xfdd4('0x45')](function(_0x46edc9){_0x5848e1[_0xfdd4('0x53')]('i.'+_0x46edc9);});}else{_0x5848e1['field'](_0xfdd4('0xa0'),'unreadMessages');_0x5848e1[_0xfdd4('0x53')](_0xfdd4('0xa1'),'Account.key');_0x5848e1[_0xfdd4('0x53')](_0xfdd4('0xa2'),_0xfdd4('0xa3'));_0x5848e1[_0xfdd4('0x53')](_0xfdd4('0xa4'),_0xfdd4('0x95'));_0x5848e1[_0xfdd4('0x53')](_0xfdd4('0xa5'));_0x5848e1[_0xfdd4('0x53')]('c.firstName',_0xfdd4('0xa6'));_0x5848e1['field'](_0xfdd4('0xa7'),'Contact.lastName');_0x5848e1['field'](_0xfdd4('0xa8'),_0xfdd4('0xa9'));_0x5848e1[_0xfdd4('0x53')](_0xfdd4('0xaa'),_0xfdd4('0xab'));_0x5848e1['field'](_0xfdd4('0xac'),_0xfdd4('0xad'));_0x5848e1[_0xfdd4('0x53')](_0xfdd4('0xae'),_0xfdd4('0xaf'));_0x5848e1[_0xfdd4('0x53')]('o.fullname',_0xfdd4('0xb0'));_0x5848e1[_0xfdd4('0x53')]('o.internal','Owner.internal');_0x5848e1[_0xfdd4('0x53')](_0xfdd4('0xb1'),_0xfdd4('0x43'));}if(_0x3f7273['limit'])_0x5848e1['limit'](_0x3f7273[_0xfdd4('0x2f')]);if(_0x3f7273[_0xfdd4('0x31')])_0x5848e1[_0xfdd4('0x31')](_0x3f7273['offset']);return db['sequelize'][_0xfdd4('0x49')](_0x5848e1[_0xfdd4('0x9d')](),_0x5d356c);})[_0xfdd4('0x20')](function(_0x4bfb31){if(_0x4bfb31[_0xfdd4('0x50')]>0x0)_0x4addd6['where'](_0xfdd4('0xb2'),_[_0xfdd4('0x40')](_0x4bfb31,'id'));return db[_0xfdd4('0x9e')]['query'](_0x4addd6[_0xfdd4('0x9d')](),_0x5d356c)[_0xfdd4('0x20')](function(_0x1efb08){var _0xe3296c=_[_0xfdd4('0xb3')](_0x1efb08,'ChatInteractionId');var _0x19de84=[];_0x4bfb31[_0xfdd4('0x45')](function(_0x133f56){_0x19de84['push'](updateChatInteraction(_0x133f56,_0x35c032,_0xe3296c));});return BPromise[_0xfdd4('0xb4')](_0x19de84);});});})[_0xfdd4('0x20')](function(_0xb9cb69){_0x5367aa[_0xfdd4('0xb5')]=_0xb9cb69;return _0x5367aa;})['then'](respondWithFilteredResult(_0x11f241,_0x3f7273))[_0xfdd4('0x29')](handleError(_0x11f241,null));};exports['show']=function(_0x4f5ca3,_0x528004){var _0x206a59={'raw':![],'where':{'id':_0x4f5ca3['params']['id']}},_0x545475={};_0x545475['model']=_[_0xfdd4('0x4a')](db[_0xfdd4('0x9f')][_0xfdd4('0x47')]);_0x545475[_0xfdd4('0x49')]=_[_0xfdd4('0x4a')](_0x4f5ca3[_0xfdd4('0x49')]);_0x545475[_0xfdd4('0x4b')]=_[_0xfdd4('0x4c')](_0x545475[_0xfdd4('0x4e')],_0x545475[_0xfdd4('0x49')]);_0x206a59[_0xfdd4('0x4d')]=_[_0xfdd4('0x4c')](_0x545475[_0xfdd4('0x4e')],qs[_0xfdd4('0x4f')](_0x4f5ca3[_0xfdd4('0x49')][_0xfdd4('0x4f')]));_0x206a59[_0xfdd4('0x4d')]=_0x206a59[_0xfdd4('0x4d')][_0xfdd4('0x50')]?_0x206a59[_0xfdd4('0x4d')]:_0x545475[_0xfdd4('0x4e')];if(_0x4f5ca3[_0xfdd4('0x49')][_0xfdd4('0xb6')]){_0x206a59[_0xfdd4('0xb7')]=[{'all':!![]}];}_0x206a59=_[_0xfdd4('0x3b')]({},_0x206a59,_0x4f5ca3[_0xfdd4('0xb8')]);return db['ChatInteraction'][_0xfdd4('0x67')](_0x206a59)[_0xfdd4('0x20')](handleEntityNotFound(_0x528004,null))[_0xfdd4('0x20')](respondWithResult(_0x528004,null))[_0xfdd4('0x29')](handleError(_0x528004,null));};exports[_0xfdd4('0xb9')]=function(_0x577bef,_0x3616e3){return db[_0xfdd4('0x9f')][_0xfdd4('0xb9')](_0x577bef[_0xfdd4('0x3c')],{})[_0xfdd4('0x20')](respondWithResult(_0x3616e3,0xc9))[_0xfdd4('0x29')](handleError(_0x3616e3,null));};exports['update']=function(_0x186d86,_0x1a9e62){if(_0x186d86[_0xfdd4('0x3c')]['id']){delete _0x186d86[_0xfdd4('0x3c')]['id'];}return db[_0xfdd4('0x9f')][_0xfdd4('0x67')]({'where':{'id':_0x186d86['params']['id']}})[_0xfdd4('0x20')](handleEntityNotFound(_0x1a9e62,null))[_0xfdd4('0x20')](saveUpdates(_0x186d86[_0xfdd4('0x3c')],null))['then'](respondWithResult(_0x1a9e62,null))[_0xfdd4('0x29')](handleError(_0x1a9e62,null));};exports[_0xfdd4('0x36')]=function(_0x4de363,_0x5159a5){return db[_0xfdd4('0x9f')][_0xfdd4('0x67')]({'where':{'id':_0x4de363[_0xfdd4('0xba')]['id']}})[_0xfdd4('0x20')](handleEntityNotFound(_0x5159a5,null))['then'](removeEntity(_0x5159a5,null))[_0xfdd4('0x29')](handleError(_0x5159a5,null));};exports['describe']=function(_0xc9955e,_0x42204a){return db[_0xfdd4('0x9f')][_0xfdd4('0xbb')]()[_0xfdd4('0x20')](respondWithResult(_0x42204a,null))[_0xfdd4('0x29')](handleError(_0x42204a,null));};exports[_0xfdd4('0xbc')]=function(_0x46e3ad,_0x29fcd4){var _0xe32bfc=_0x46e3ad[_0xfdd4('0xba')]['id'];var _0x5015a1;var _0xca4f26;var _0x42a3dc;return db[_0xfdd4('0x9f')][_0xfdd4('0xbd')]({'where':{'id':_0xe32bfc}})[_0xfdd4('0x20')](function(_0x4512b0){_0x5015a1=_0x4512b0;return db['ChatWebsite'][_0xfdd4('0xbd')]({'where':{'id':_0x4512b0[_0xfdd4('0x7d')]},'attributes':['id',_0xfdd4('0xbe'),_0xfdd4('0xbf'),'vidaooTopic',_0xfdd4('0xc0'),_0xfdd4('0xc1')],'raw':!![]});})['then'](function(_0x2d506e){if(_0x2d506e&&_0x2d506e[_0xfdd4('0xbe')]&&_0x2d506e[_0xfdd4('0xbf')]){_0xca4f26=_0x2d506e;var _0x204975={'interaction':{'id':_0xe32bfc},'agent':{'id':_0x46e3ad[_0xfdd4('0x98')]['id'],'name':_0x46e3ad[_0xfdd4('0x98')][_0xfdd4('0x38')],'fullname':_0x46e3ad[_0xfdd4('0x98')][_0xfdd4('0x41')],'email':_0x46e3ad[_0xfdd4('0x98')][_0xfdd4('0xc2')]},'contact':_0x46e3ad[_0xfdd4('0x3c')][_0xfdd4('0xc3')],'account':_0x46e3ad[_0xfdd4('0x3c')]['account']};var _0x42253b={'rejectUnauthorized':![],'method':_0xfdd4('0xc4'),'url':_0xfdd4('0xc5'),'headers':{'X-APIKEY':_0x2d506e[_0xfdd4('0xbe')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x46e3ad['user'][_0xfdd4('0xc2')]],'buttons':null,'topic':_0xca4f26[_0xfdd4('0xc6')],'note':_['isNull'](_0xca4f26[_0xfdd4('0xc0')])?null:getMustacheRender(_0xca4f26[_0xfdd4('0xc0')],_0x204975),'metadata':null},'redirect':_0xfdd4('0xc7'),'json':!![]};try{if(!_[_0xfdd4('0xc8')](_0xca4f26['vidaooMetadata'])){var _0x227fcf=getMustacheRender(_0xca4f26['vidaooMetadata'],_0x204975);var _0x2aa3d3=JSON[_0xfdd4('0x80')](_0x227fcf);_0x42253b['body'][_0xfdd4('0xc9')]=_0x2aa3d3;}}catch(_0x5e058b){throw new db['Sequelize'][(_0xfdd4('0xca'))](_0xfdd4('0xcb'));}return rp(_0x42253b);}else{throw new db[(_0xfdd4('0x90'))][(_0xfdd4('0xca'))]('Error\x20in\x20Vidaoo\x20configuration');}})['then'](function(_0x28df36){_0x42a3dc=_0x28df36;if(_0x42a3dc['id']){var _0x1bb704={'body':_0x42a3dc['join_url'],'ChatWebsiteId':_0xca4f26['id'],'ChatInteractionId':_0x5015a1['id'],'direction':'out','UserId':_0x46e3ad[_0xfdd4('0x98')]['id']};return db[_0xfdd4('0xcc')][_0xfdd4('0xb9')](_0x1bb704,{});}else{throw new db['Sequelize'][(_0xfdd4('0xca'))](_0xfdd4('0xcd'));}})[_0xfdd4('0x20')](function(){return _0x5015a1[_0xfdd4('0xce')]({'vidaooSessionId':_0x42a3dc['id']});})['then'](respondWithResult(_0x29fcd4,null))[_0xfdd4('0x29')](handleError(_0x29fcd4,null));};exports[_0xfdd4('0xcf')]=function(_0x23dd10,_0x23746f){if(_0x23dd10[_0xfdd4('0x3c')]['id']){delete _0x23dd10['body']['id'];}return db[_0xfdd4('0x9f')][_0xfdd4('0x67')]({'where':{'id':_0x23dd10['params']['id']},'include':[{'model':db[_0xfdd4('0xd0')],'as':_0xfdd4('0x6d')}]})[_0xfdd4('0x20')](handleEntityNotFound(_0x23746f,null))[_0xfdd4('0x20')](saveUpdates(_0x23dd10[_0xfdd4('0x3c')],null))[_0xfdd4('0x20')](respondWithResult(_0x23746f,null))[_0xfdd4('0x29')](handleError(_0x23746f,null));};exports[_0xfdd4('0xd1')]=function(_0x3b6cfc,_0x20b6b1,_0x308201){if(_0x3b6cfc[_0xfdd4('0x3c')]['id']){delete _0x3b6cfc[_0xfdd4('0x3c')]['id'];}return db[_0xfdd4('0x9f')][_0xfdd4('0x67')]({'where':{'id':_0x3b6cfc['params']['id']}})['then'](function(_0x44b024){if(!_0x44b024){logger['error']('abandonInteraction,\x20%s,\x20%s,\x20%s',_0xfdd4('0xd1'),0x194,_0xfdd4('0xd2'));_0x20b6b1[_0xfdd4('0x2a')](0x194);}else{if(_0x44b024[_0xfdd4('0x79')]){throw new db[(_0xfdd4('0x90'))][(_0xfdd4('0xca'))](_0xfdd4('0xd3'));}}return _0x44b024;})['then'](function(_0x24e4be){if(_0x24e4be){return _0x24e4be[_0xfdd4('0x35')]({'closed':_0x3b6cfc['body']['closed'],'disposition':_0x3b6cfc['body'][_0xfdd4('0xd4')]})['then'](function(_0x28d8d9){return _0x28d8d9;});}})['then'](function(_0x52ff15){return respondWithRpcPromise(_0xfdd4('0xd5'),_0xfdd4('0xd1'),_0x3b6cfc[_0xfdd4('0x3c')],client9004);})[_0xfdd4('0x20')](respondWithResult(_0x20b6b1,null))[_0xfdd4('0x29')](handleError(_0x20b6b1,null));};exports[_0xfdd4('0xd6')]=function(_0x461070,_0x17f504,_0x156173){_0x461070['body'][_0xfdd4('0x38')]=_0x461070[_0xfdd4('0xd7')]['originalname'];_0x461070[_0xfdd4('0x3c')][_0xfdd4('0xd8')]=_0x461070['file']['filename'];_0x461070['body']['type']=_0x461070[_0xfdd4('0xd7')][_0xfdd4('0xd9')];return db['Attachment'][_0xfdd4('0xb9')](_0x461070['body'])[_0xfdd4('0x20')](respondWithResult(_0x17f504,0xc9))[_0xfdd4('0x29')](handleError(_0x17f504,null));};exports[_0xfdd4('0xda')]=function(_0x2093a5,_0x2c36a3,_0x45fa09){return db[_0xfdd4('0x9f')]['findOne']({'where':{'id':_0x2093a5['params']['id']},'raw':!![]})[_0xfdd4('0x20')](handleEntityNotFound(_0x2c36a3,null))[_0xfdd4('0x20')](function(_0x2b65d7){if(_0x2b65d7){if(_0x2b65d7[_0xfdd4('0xdb')]){return _0x2c36a3[_0xfdd4('0x2b')](0x193)['json']({'status':0x193,'message':_0xfdd4('0xdc')});}return db[_0xfdd4('0xdd')][_0xfdd4('0xbd')]({'where':{'id':_0x2093a5['query']['attachId']},'raw':!![]})[_0xfdd4('0x20')](handleEntityNotFound(_0x2c36a3,null));}})[_0xfdd4('0x20')](function(_0x2f6456){if(_0x2f6456){var _0x1ff8d6=_0x2f6456[_0xfdd4('0xde')]!==null;var _0xa64a3b=path['join'](config['root'],_0xfdd4('0xdf'));if(_0x1ff8d6){_0xa64a3b=path[_0xfdd4('0xe0')](_0xa64a3b,_0xfdd4('0xe1'));}var _0x5a4bd4=path[_0xfdd4('0xe0')](_0xa64a3b,_0x2f6456['basename']);return _0x2c36a3[_0xfdd4('0xe2')](_0x5a4bd4);}})['catch'](handleError(_0x2c36a3,null));};exports[_0xfdd4('0xe3')]=function(_0x12beac,_0x5a78bc){var _0x2d1810=null;var _0x308050=null;var _0x1f1ec8=null;var _0x2e3342=null;if(_0x12beac['body']['id']){delete _0x12beac[_0xfdd4('0x3c')]['id'];}if(_0x12beac[_0xfdd4('0x3c')][_0xfdd4('0xe4')]){_0x2e3342=path[_0xfdd4('0xe0')](config[_0xfdd4('0xe5')],_0xfdd4('0xe6'),util['format'](_0xfdd4('0xe7'),Date['now']()));_0x12beac[_0xfdd4('0x3c')][_0xfdd4('0xe8')]=_0x2e3342;}return db[_0xfdd4('0x9f')][_0xfdd4('0x67')]({'where':{'id':_0x12beac[_0xfdd4('0xba')]['id']},'include':[{'model':db[_0xfdd4('0xcc')],'as':_0xfdd4('0xe9'),'include':[{'model':db[_0xfdd4('0x77')],'as':_0xfdd4('0x77')}]}]})[_0xfdd4('0x20')](handleEntityNotFound(_0x5a78bc,null))[_0xfdd4('0x20')](saveUpdates(_0x12beac[_0xfdd4('0x3c')],null))['then'](function(_0x13df51){if(_0x13df51){_0x2d1810=_0x13df51;return db['ChatWebsite'][_0xfdd4('0x67')]({'where':{'id':_0x2d1810['ChatWebsiteId']}});}})['then'](function(_0x17da2a){if(_0x17da2a){_0x1f1ec8=_0x17da2a;return db[_0xfdd4('0xd0')][_0xfdd4('0x67')]({'where':{'id':_0x2d1810[_0xfdd4('0x72')]}});}})[_0xfdd4('0x20')](function(_0x1cf955){if(_0x1cf955){_0x308050=_0x1cf955;if(_0x2e3342){var _0x2d74d1=null;for(var _0x5c70bf=0x1;_0x5c70bf<_0x2d1810[_0xfdd4('0xe9')][_0xfdd4('0x50')];++_0x5c70bf){_0x2d74d1=_0x2d1810[_0xfdd4('0xe9')][_0x5c70bf];var _0x5a7c66=_0x2d74d1[_0xfdd4('0x79')]?util[_0xfdd4('0xea')](_0xfdd4('0xeb'),_0x1f1ec8[_0xfdd4('0xec')],_0x2d74d1[_0xfdd4('0x79')]):_0xfdd4('0xed');var _0x43c681=_0x12beac[_0xfdd4('0x3c')][_0xfdd4('0xee')]||util[_0xfdd4('0xea')](_0xfdd4('0xeb'),'Visitor',_0x2d74d1['ContactId']);switch(_0x1f1ec8[_0xfdd4('0xef')]){case _0xfdd4('0xf0'):_0x5a7c66=_0x2d74d1[_0xfdd4('0x79')]?util[_0xfdd4('0xea')]('%s%d',_0x1f1ec8[_0xfdd4('0xec')],_0x2d74d1['UserId']):_0xfdd4('0xed');break;case _0xfdd4('0xf1'):_0x5a7c66=_0x2d74d1[_0xfdd4('0x79')]?_0x2d74d1['User'][_0xfdd4('0xf2')]||_0x2d74d1[_0xfdd4('0x77')][_0xfdd4('0x41')]:_0xfdd4('0xed');break;case _0xfdd4('0xf3'):_0x5a7c66=_0x2d74d1[_0xfdd4('0x79')]?_0x2d74d1[_0xfdd4('0x77')][_0xfdd4('0x41')]:_0xfdd4('0xed');break;default:_0x5a7c66=_0x2d74d1[_0xfdd4('0x79')]?util[_0xfdd4('0xea')]('%s%d',_0x1f1ec8[_0xfdd4('0xec')],_0x2d74d1[_0xfdd4('0x79')]):'System';}var _0x3621f3=util[_0xfdd4('0xea')](_0xfdd4('0xf4'),moment(_0x2d74d1[_0xfdd4('0xf5')])['format'](_0xfdd4('0xf6')),_0x2d74d1[_0xfdd4('0xf7')]==='in'?_0x43c681:_0x5a7c66,_0x2d74d1[_0xfdd4('0x3c')]);if(!_0x2d74d1[_0xfdd4('0xf8')]){fs[_0xfdd4('0xf9')](_0x2e3342,_0x3621f3);}}return db[_0xfdd4('0xfa')][_0xfdd4('0xbd')]({'where':{'service':!![]},'include':[{'model':db[_0xfdd4('0xfb')],'as':'Smtp','raw':!![]}]});}}})[_0xfdd4('0x20')](function(_0x4c248e){if(_0x4c248e&&_0x4c248e[_0xfdd4('0xfc')]&&_0x12beac['body']){var _0x5e8af7={'tls':{'rejectUnauthorized':![]}};if(_0x4c248e[_0xfdd4('0xfc')][_0xfdd4('0xfd')]){_0x5e8af7[_0xfdd4('0xfd')]=_0x4c248e[_0xfdd4('0xfc')][_0xfdd4('0xfd')];}else{_0x5e8af7[_0xfdd4('0xfe')]=_0x4c248e[_0xfdd4('0xfc')]['host'];_0x5e8af7[_0xfdd4('0xff')]=_0x4c248e[_0xfdd4('0xfc')][_0xfdd4('0xff')];_0x5e8af7[_0xfdd4('0x100')]=_0x4c248e[_0xfdd4('0xfc')][_0xfdd4('0x100')];}if(_0x4c248e[_0xfdd4('0xfc')][_0xfdd4('0x101')]){_0x5e8af7['auth']={'user':_0x4c248e[_0xfdd4('0xfc')][_0xfdd4('0x98')],'pass':_0x4c248e[_0xfdd4('0xfc')][_0xfdd4('0x102')]};}return respondWithRpcPromise(_0xfdd4('0x103'),_0xfdd4('0x104'),{'account':_0x5e8af7,'message':{'from':util[_0xfdd4('0xea')]('\x22%s\x22\x20<%s>',_0x4c248e['name'],_0x4c248e[_0xfdd4('0xc2')]||_0x4c248e[_0xfdd4('0xfc')][_0xfdd4('0x98')]),'to':_0x12beac[_0xfdd4('0x3c')][_0xfdd4('0xe4')],'subject':_0xfdd4('0x105'),'text':util[_0xfdd4('0xea')]('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x12beac[_0xfdd4('0x3c')][_0xfdd4('0xe4')]),'attachments':[{'path':_0x2e3342}]}})['then'](function(){return _0x2d1810;})['catch'](function(_0x1336e1){console[_0xfdd4('0x26')](_0x1336e1);});}else{return _0x2d1810;}})[_0xfdd4('0x20')](respondWithStatusCode(_0x5a78bc,0xc8))[_0xfdd4('0x29')](handleError(_0x5a78bc,null));};exports[_0xfdd4('0x106')]=function(_0x25656c,_0x5f51e6,_0x4fbd83){return db[_0xfdd4('0xcc')][_0xfdd4('0x67')]({'where':{'id':_0x25656c['params']['id']}})[_0xfdd4('0x20')](handleEntityNotFound(_0x5f51e6,null))['then'](function(_0x13cf75){if(_0x13cf75){return _0x13cf75[_0xfdd4('0x106')](_0x25656c[_0xfdd4('0x3c')][_0xfdd4('0x107')],_[_0xfdd4('0x108')](_0x25656c['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x5f51e6,null))[_0xfdd4('0x29')](handleError(_0x5f51e6,null));};exports['getMessages']=function(_0x106064,_0x536c4b,_0x7101d2){var _0x317d77={'raw':![],'where':{}};var _0x599d63={};var _0x529474={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xfdd4('0xbd')]({'where':{'id':_0x106064[_0xfdd4('0xba')]['id']}})[_0xfdd4('0x20')](handleEntityNotFound(_0x536c4b,null))[_0xfdd4('0x20')](function(_0x4c33bc){if(_0x4c33bc){_0x599d63['model']=_[_0xfdd4('0x4a')](db[_0xfdd4('0xcc')][_0xfdd4('0x47')]);_0x599d63[_0xfdd4('0x49')]=_[_0xfdd4('0x4a')](_0x106064[_0xfdd4('0x49')]);_0x599d63['filters']=_[_0xfdd4('0x4c')](_0x599d63[_0xfdd4('0x4e')],_0x599d63['query']);_0x317d77[_0xfdd4('0x4d')]=_['intersection'](_0x599d63[_0xfdd4('0x4e')],qs[_0xfdd4('0x4f')](_0x106064[_0xfdd4('0x49')][_0xfdd4('0x4f')]));_0x317d77[_0xfdd4('0x4d')]=_0x317d77[_0xfdd4('0x4d')][_0xfdd4('0x50')]?_0x317d77[_0xfdd4('0x4d')]:_0x599d63['model'];if(!_0x106064[_0xfdd4('0x49')][_0xfdd4('0x51')](_0xfdd4('0x109'))){_0x317d77[_0xfdd4('0x2f')]=qs['limit'](_0x106064[_0xfdd4('0x49')]['limit']);_0x317d77[_0xfdd4('0x31')]=qs[_0xfdd4('0x31')](_0x106064[_0xfdd4('0x49')]['offset']);}_0x317d77['order']=qs[_0xfdd4('0x10a')](_0x106064[_0xfdd4('0x49')]['sort']);_0x317d77[_0xfdd4('0x7e')]=qs['filters'](_['pick'](_0x106064[_0xfdd4('0x49')],_0x599d63[_0xfdd4('0x4b')]));_0x317d77[_0xfdd4('0x7e')][_0xfdd4('0x10b')]=_0x4c33bc['id'];if(_0x106064['query']['filter']){_0x317d77[_0xfdd4('0x7e')]=_[_0xfdd4('0x3b')](_0x317d77[_0xfdd4('0x7e')],{'$or':_['map'](_0x317d77[_0xfdd4('0x4d')],function(_0x2b1f92){var _0x57c9bb={};_0x57c9bb[_0x2b1f92]={'$like':'%'+_0x106064[_0xfdd4('0x49')]['filter']+'%'};return _0x57c9bb;})});}if(_0x106064[_0xfdd4('0x49')][_0xfdd4('0x10c')]){var _0x4b97fa=_0x106064['query']['$gte']['split'](',');var _0x54fec8={};_0x54fec8[_0x4b97fa[0x0]]={'$gte':moment(_0x4b97fa[0x1])[_0xfdd4('0xea')]('YYYY-MM-DD\x20HH:mm:ss')};_0x317d77[_0xfdd4('0x7e')]=_[_0xfdd4('0x3b')](_0x317d77[_0xfdd4('0x7e')],_0x54fec8);}_0x317d77=_[_0xfdd4('0x3b')]({},_0x317d77,_0x106064[_0xfdd4('0xb8')]);return db['ChatMessage']['count']({'where':_0x317d77[_0xfdd4('0x7e')]})[_0xfdd4('0x20')](function(_0x22c2b9){_0x529474[_0xfdd4('0x30')]=_0x22c2b9;if(_0x106064[_0xfdd4('0x49')][_0xfdd4('0xb6')]){_0x317d77[_0xfdd4('0xb7')]=[{'all':!![]}];}return db['ChatMessage']['findAll'](_0x317d77);})[_0xfdd4('0x20')](function(_0xa129e4){_0x529474[_0xfdd4('0xb5')]=_0xa129e4;return _0x529474;});}})[_0xfdd4('0x20')](respondWithFilteredResult(_0x536c4b,_0x317d77))[_0xfdd4('0x29')](handleError(_0x536c4b,null));};exports[_0xfdd4('0x10d')]=function(_0x18ad0c,_0x5ba916,_0x2d3c9f){var _0x5de8d0={'where':{}},_0x4f2eea={},_0x3341ae={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xfdd4('0xbd')]({'where':{'id':_0x18ad0c[_0xfdd4('0xba')]['id']}})['then'](handleEntityNotFound(_0x5ba916,null))[_0xfdd4('0x20')](function(_0x20c9f6){if(_0x20c9f6){_0x4f2eea[_0xfdd4('0x4e')]=_[_0xfdd4('0x4a')](db[_0xfdd4('0xcc')]['rawAttributes']);_0x4f2eea[_0xfdd4('0x49')]=_[_0xfdd4('0x4a')](_0x18ad0c[_0xfdd4('0x49')]);_0x4f2eea['filters']=_[_0xfdd4('0x4c')](_0x4f2eea[_0xfdd4('0x4e')],_0x4f2eea['query']);_0x5de8d0[_0xfdd4('0x4d')]=_[_0xfdd4('0x4c')](_0x4f2eea[_0xfdd4('0x4e')],qs[_0xfdd4('0x4f')](_0x18ad0c['query']['fields']));_0x5de8d0[_0xfdd4('0x4d')]=_0x5de8d0['attributes'][_0xfdd4('0x50')]?_0x5de8d0[_0xfdd4('0x4d')]:_0x4f2eea[_0xfdd4('0x4e')];if(!_0x18ad0c[_0xfdd4('0x49')][_0xfdd4('0x51')]('nolimit')){_0x5de8d0[_0xfdd4('0x2f')]=qs[_0xfdd4('0x2f')](_0x18ad0c['query'][_0xfdd4('0x2f')]);_0x5de8d0[_0xfdd4('0x31')]=qs[_0xfdd4('0x31')](_0x18ad0c['query'][_0xfdd4('0x31')]);}_0x5de8d0['order']=qs[_0xfdd4('0x10a')](_0x18ad0c['query']['sort']);_0x5de8d0[_0xfdd4('0x7e')]=qs[_0xfdd4('0x4b')](_[_0xfdd4('0x52')](_0x18ad0c[_0xfdd4('0x49')],_0x4f2eea[_0xfdd4('0x4b')]));_0x5de8d0[_0xfdd4('0x7e')]['ChatInteractionId']=_0x20c9f6['id'];if(_0x18ad0c[_0xfdd4('0x49')][_0xfdd4('0x10e')]){_0x5de8d0[_0xfdd4('0x7e')]=_['merge'](_0x5de8d0['where'],{'$or':_[_0xfdd4('0x40')](_0x5de8d0['attributes'],function(_0xa03de8){var _0x141042={};_0x141042[_0xa03de8]={'$like':'%'+_0x18ad0c[_0xfdd4('0x49')]['filter']+'%'};return _0x141042;})});}_0x5de8d0['where'][_0xfdd4('0xf8')]=![];if(_0x18ad0c[_0xfdd4('0x49')]['id']){_0x5de8d0[_0xfdd4('0x7e')]['id']={'$gt':_0x18ad0c[_0xfdd4('0x49')]['id']};}_0x5de8d0=_[_0xfdd4('0x3b')]({},_0x5de8d0,_0x18ad0c[_0xfdd4('0xb8')]);return db[_0xfdd4('0xcc')][_0xfdd4('0x30')]({'where':_0x5de8d0[_0xfdd4('0x7e')]})[_0xfdd4('0x20')](function(_0x21e917){_0x3341ae['count']=_0x21e917;_0x5de8d0[_0xfdd4('0xb7')]=[];if(_0x18ad0c[_0xfdd4('0x49')]['includeAgent']){_0x5de8d0[_0xfdd4('0xb7')][_0xfdd4('0x46')]({'model':db[_0xfdd4('0x77')],'as':_0xfdd4('0x77'),'attributes':['id',_0xfdd4('0x41'),_0xfdd4('0xf2')]});}if(_0x18ad0c[_0xfdd4('0x49')][_0xfdd4('0xb6')]){_0x5de8d0[_0xfdd4('0xb7')]=[{'all':!![]}];}return db[_0xfdd4('0xcc')][_0xfdd4('0x10f')](_0x5de8d0);})[_0xfdd4('0x20')](function(_0x1c18f8){_0x3341ae['rows']=_0x1c18f8;return _0x3341ae;});}})[_0xfdd4('0x20')](respondWithFilteredResult(_0x5ba916,_0x5de8d0))[_0xfdd4('0x29')](handleError(_0x5ba916,null));};exports['addTags']=function(_0x31db99,_0x692aa1,_0x1003d4){return db['ChatInteraction'][_0xfdd4('0x67')]({'where':{'id':_0x31db99[_0xfdd4('0xba')]['id']}})[_0xfdd4('0x20')](handleEntityNotFound(_0x692aa1,null))['then'](function(_0x5b5edb){if(_0x5b5edb){return _0x5b5edb[_0xfdd4('0x110')](_0x31db99[_0xfdd4('0x3c')][_0xfdd4('0x107')],_[_0xfdd4('0x108')](_0x31db99[_0xfdd4('0x3c')],[_0xfdd4('0x107'),'id'])||{})[_0xfdd4('0x111')](function(){return db[_0xfdd4('0x75')][_0xfdd4('0x10f')]({'attributes':['id',_0xfdd4('0x38'),'color'],'where':{'id':_0x31db99['body']['ids']}});})[_0xfdd4('0x20')](function(_0x1a8c71){socket[_0xfdd4('0x112')](_0xfdd4('0x113'),{'id':Number(_0x31db99[_0xfdd4('0xba')]['id']),'tags':_0x1a8c71||[]});return{'id':Number(_0x31db99[_0xfdd4('0xba')]['id']),'tags':_0x1a8c71||[]};});}})[_0xfdd4('0x20')](respondWithResult(_0x692aa1,null))['catch'](handleError(_0x692aa1,null));};exports[_0xfdd4('0x114')]=function(_0x456534,_0x1178b3,_0x272948){return db[_0xfdd4('0x9f')]['find']({'where':{'id':_0x456534[_0xfdd4('0xba')]['id']}})['then'](handleEntityNotFound(_0x1178b3,null))['then'](function(_0x360298){if(_0x360298){return _0x360298['removeTags'](_0x456534['query'][_0xfdd4('0x107')]);}})['then'](respondWithStatusCode(_0x1178b3,null))[_0xfdd4('0x29')](handleError(_0x1178b3,null));};exports[_0xfdd4('0xe2')]=function(_0x39f38f,_0x4a9e25){var _0x535d2b=moment()[_0xfdd4('0x115')]()[_0xfdd4('0x9d')]();var _0x24b726=path[_0xfdd4('0xe0')](config[_0xfdd4('0xe5')],'server','files',_0xfdd4('0x116'));var _0x260fe6=path[_0xfdd4('0xe0')](config[_0xfdd4('0xe5')],_0xfdd4('0x117'),_0xfdd4('0x118'),_0xfdd4('0x119'));var _0x4d52d3=path['join'](_0x24b726,_0x535d2b);var _0x31124f=util['format'](_0xfdd4('0x11a'),_0x39f38f['params']['id'],_0x535d2b);var _0x38e24c=path[_0xfdd4('0xe0')](_0x24b726,_0x31124f);var _0x25f9c9=[];_0x25f9c9[_0xfdd4('0x46')]({'model':db['User'],'as':_0xfdd4('0x77'),'attributes':['id',_0xfdd4('0x41')],'raw':!![]});_0x25f9c9['push']({'model':db[_0xfdd4('0xd0')],'as':'Contact','attributes':['id','firstName',_0xfdd4('0x11b')],'raw':!![]});if(_0x39f38f['query'][_0xfdd4('0x119')]){_0x25f9c9[_0xfdd4('0x46')]({'model':db[_0xfdd4('0xdd')],'as':_0xfdd4('0xdd'),'raw':!![]});}var _0x1a5c91=[{'model':db[_0xfdd4('0xcc')],'as':_0xfdd4('0xe9'),'attributes':['id','body',_0xfdd4('0xf5'),_0xfdd4('0xf7'),'secret','read'],'include':_0x25f9c9}];_0x1a5c91[_0xfdd4('0x46')]({'model':db[_0xfdd4('0x11c')],'as':_0xfdd4('0x11d'),'attributes':['id','name']});_0x1a5c91[_0xfdd4('0x46')]({'model':db[_0xfdd4('0x77')],'as':'Owner','attributes':['id','fullname']});return db[_0xfdd4('0x9f')]['find']({'where':{'id':_0x39f38f['params']['id']},'include':_0x1a5c91})[_0xfdd4('0x20')](handleEntityNotFound(_0x4a9e25,null))[_0xfdd4('0x20')](function(_0xbde236){if(_0xbde236){var _0x2de8b3=_0xbde236[_0xfdd4('0x11e')]({'plain':!![]});fs[_0xfdd4('0x11f')](_0x4d52d3);var _0x1563a5={'channel':_0xfdd4('0x120'),'account':_0x2de8b3[_0xfdd4('0x11d')][_0xfdd4('0x38')],'agent':_0x2de8b3[_0xfdd4('0x121')]?_0x2de8b3[_0xfdd4('0x121')]['fullname']:_0xfdd4('0x122'),'createdAt':moment(_0x2de8b3[_0xfdd4('0xf5')])[_0xfdd4('0xea')](_0xfdd4('0x123'))[_0xfdd4('0x9d')](),'closedAt':_0x2de8b3['closed']?moment(_0x2de8b3[_0xfdd4('0x124')])[_0xfdd4('0xea')]('YYYY-MM-DD\x20HH:mm:ss')[_0xfdd4('0x9d')]():'','disposition':_0x2de8b3['disposition'],'chatInfo':{'browser':_0x2de8b3[_0xfdd4('0x125')],'os':_0x2de8b3[_0xfdd4('0x126')],'referer':_0x2de8b3[_0xfdd4('0x127')],'customerIp':_0x2de8b3['customerIp'],'customerPort':_0x2de8b3[_0xfdd4('0x128')]?_0x2de8b3[_0xfdd4('0x128')]:_0xfdd4('0x122')},'messages':_(_0x2de8b3[_0xfdd4('0xe9')])['tail']()[_0xfdd4('0x10e')]({'secret':![]})[_0xfdd4('0x40')](function(_0x46e0e2){if(_0x46e0e2['Attachment']){var _0x306fc1=path[_0xfdd4('0xe0')](_0x260fe6,_0x46e0e2['Attachment'][_0xfdd4('0xd8')]);if(fs[_0xfdd4('0x129')](_0x306fc1)){fs[_0xfdd4('0x12a')](_0x306fc1)[_0xfdd4('0x12b')](fs[_0xfdd4('0x12c')](path['join'](_0x4d52d3,_0x46e0e2[_0xfdd4('0xdd')][_0xfdd4('0xd8')])));}}return{'date':moment(_0x46e0e2['createdAt'])[_0xfdd4('0xea')](_0xfdd4('0x123'))[_0xfdd4('0x9d')](),'sender':_0x46e0e2[_0xfdd4('0xf7')]===_0xfdd4('0x12d')?_0x46e0e2[_0xfdd4('0x77')]?_0x46e0e2[_0xfdd4('0x77')][_0xfdd4('0x41')]:'System':_0x46e0e2['Contact'][_0xfdd4('0x12e')]+(_0x46e0e2['Contact']['lastName']?'\x20'+_0x46e0e2[_0xfdd4('0x6d')]['lastName']:''),'body':_0x46e0e2[_0xfdd4('0xdd')]?_0x46e0e2[_0xfdd4('0xdd')]['basename']:_0x46e0e2[_0xfdd4('0x3c')],'direction':_0x46e0e2[_0xfdd4('0xf7')]===_0xfdd4('0x12d')?'A':'C','secret':_0x46e0e2[_0xfdd4('0xf8')],'read':_0x46e0e2[_0xfdd4('0x85')],'attachment':_0x46e0e2['Attachment']};})[_0xfdd4('0x69')]()};return ejs[_0xfdd4('0x12f')](path[_0xfdd4('0xe0')](config[_0xfdd4('0xe5')],_0xfdd4('0x117'),_0xfdd4('0x130'),_0xfdd4('0x131')),{'interaction':_0x1563a5})[_0xfdd4('0x20')](function(_0x5ac931){var _0x2b8e2b=path['join'](_0x4d52d3,_0xfdd4('0x132')+_0x2de8b3['id']+'-'+_0x535d2b+_0xfdd4('0x133'));var _0x4d5a93={'path':_0x2b8e2b,'channel':'Chat','interactionId':_0x2de8b3['id']};return pdf['createPdfFromHTML'](_0x5ac931,_0x4d5a93);})[_0xfdd4('0x20')](function(){return new BPromise(function(_0x4a323c,_0x384933){zipdir(_0x4d52d3,{'saveTo':_0x38e24c},function(_0x13a826,_0x4ce772){if(_0x13a826)return _0x384933(_0x13a826);return _0x4a323c(_0x4ce772);});})['then'](function(){return new BPromise(function(_0x199881,_0x1fa795){rimraf(_0x4d52d3,function(_0x453527){if(_0x453527)_0x1fa795(_0x453527);return _0x199881();});});})[_0xfdd4('0x20')](function(){return _0x4a9e25[_0xfdd4('0xe2')](_0x38e24c,_0x31124f,function(_0x4fa06b){if(_0x4fa06b){console['log'](_0xfdd4('0x134'),_0x4fa06b);}else{fs['unlinkSync'](_0x38e24c);}});});});}else{return _0x4a9e25[_0xfdd4('0x2a')](0xc8);}})[_0xfdd4('0x29')](handleError(_0x4a9e25,null));};
\ No newline at end of file
index 0c99421..46ae36a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5aa=['emit','catch','hasOwnProperty','hook','exports','ChatInteraction','../../mysqldb','ChatMessage','setMaxListeners','update','then','setDataValue','Users','findAll','unreadMessages','length'];(function(_0x12b83d,_0x4bcec7){var _0x1fd39d=function(_0x449185){while(--_0x449185){_0x12b83d['push'](_0x12b83d['shift']());}};_0x1fd39d(++_0x4bcec7);}(_0xa5aa,0x115));var _0xaa5a=function(_0x3b9e11,_0x2677e0){_0x3b9e11=_0x3b9e11-0x0;var _0x224b39=_0xa5aa[_0x3b9e11];return _0x224b39;};'use strict';var EventEmitter=require('events');var ChatInteraction=require('../../mysqldb')['db'][_0xaa5a('0x0')];var ChatMessage=require(_0xaa5a('0x1'))['db'][_0xaa5a('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xaa5a('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xaa5a('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4752e9){return function(_0x422954,_0x24f964,_0x28acab){_0x422954['getUsers']({'attributes':['id'],'raw':!![]})[_0xaa5a('0x5')](function(_0x5172e4){_0x422954[_0xaa5a('0x6')](_0xaa5a('0x7'),_0x5172e4['map'](function(_0x8f185d){return{'id':_0x8f185d['id']};}));return ChatMessage[_0xaa5a('0x8')]({'where':{'ChatInteractionId':_0x422954['id'],'direction':'in','read':![]},'raw':!![]});})[_0xaa5a('0x5')](function(_0x54c15b){_0x422954[_0xaa5a('0x6')](_0xaa5a('0x9'),_0x54c15b[_0xaa5a('0xa')]);ChatInteractionEvents[_0xaa5a('0xb')](_0x4752e9+':'+_0x422954['id'],_0x422954);ChatInteractionEvents[_0xaa5a('0xb')](_0x4752e9,_0x422954);_0x28acab(null);})[_0xaa5a('0xc')](_0x28acab(null));};}for(var e in events){if(events[_0xaa5a('0xd')](e)){var event=events[e];ChatInteraction[_0xaa5a('0xe')](e,emitEvent(event));}}module[_0xaa5a('0xf')]=ChatInteractionEvents;
\ No newline at end of file
+var _0xa9c0=['setMaxListeners','save','update','remove','Users','map','findAll','setDataValue','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage'];(function(_0x33006f,_0x152441){var _0x215222=function(_0x1e1d78){while(--_0x1e1d78){_0x33006f['push'](_0x33006f['shift']());}};_0x215222(++_0x152441);}(_0xa9c0,0xc2));var _0x0a9c=function(_0x1bf7bf,_0x49b7f0){_0x1bf7bf=_0x1bf7bf-0x0;var _0x46ffe0=_0xa9c0[_0x1bf7bf];return _0x46ffe0;};'use strict';var EventEmitter=require(_0x0a9c('0x0'));var ChatInteraction=require(_0x0a9c('0x1'))['db'][_0x0a9c('0x2')];var ChatMessage=require(_0x0a9c('0x1'))['db'][_0x0a9c('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x0a9c('0x4')](0x0);var events={'afterCreate':_0x0a9c('0x5'),'afterUpdate':_0x0a9c('0x6'),'afterDestroy':_0x0a9c('0x7')};function emitEvent(_0x246ce7){return function(_0x2e4496,_0x55b73e,_0xadc79b){_0x2e4496['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x17df14){_0x2e4496['setDataValue'](_0x0a9c('0x8'),_0x17df14[_0x0a9c('0x9')](function(_0x51e8bd){return{'id':_0x51e8bd['id']};}));return ChatMessage[_0x0a9c('0xa')]({'where':{'ChatInteractionId':_0x2e4496['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x49fc04){_0x2e4496[_0x0a9c('0xb')](_0x0a9c('0xc'),_0x49fc04[_0x0a9c('0xd')]);ChatInteractionEvents[_0x0a9c('0xe')](_0x246ce7+':'+_0x2e4496['id'],_0x2e4496);ChatInteractionEvents['emit'](_0x246ce7,_0x2e4496);_0xadc79b(null);})['catch'](_0xadc79b(null));};}for(var e in events){if(events[_0x0a9c('0xf')](e)){var event=events[e];ChatInteraction[_0x0a9c('0x10')](e,emitEvent(event));}}module[_0x0a9c('0x11')]=ChatInteractionEvents;
\ No newline at end of file
index b177d80..5b2b564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0230=['../../config/logger','api','path','../../config/environment','exports','define','chat_interactions','changed','closed','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x4a8ce3,_0x13615e){var _0x4bbc6e=function(_0x4b0e4b){while(--_0x4b0e4b){_0x4a8ce3['push'](_0x4a8ce3['shift']());}};_0x4bbc6e(++_0x13615e);}(_0x0230,0xef));var _0x0023=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x0230[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x0023('0x0'));var util=require('util');var logger=require(_0x0023('0x1'))(_0x0023('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0023('0x3'));var rimraf=require('rimraf');var config=require(_0x0023('0x4'));var attributes=require('./chatInteraction.attributes');module[_0x0023('0x5')]=function(_0x12d510,_0x25eece){return _0x12d510[_0x0023('0x6')]('ChatInteraction',attributes,{'tableName':_0x0023('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1f9c14,_0x17b734,_0x4551ce){if(_0x1f9c14[_0x0023('0x8')](_0x0023('0x9'))){_0x1f9c14['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x4551ce(null,_0x1f9c14);}},'charset':_0x0023('0xa'),'collate':_0x0023('0xb')});};
\ No newline at end of file
+var _0xf5de=['./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','changed','closed','closedAt','format','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0xda10c3,_0x366f73){var _0x4f3107=function(_0x1d6324){while(--_0x1d6324){_0xda10c3['push'](_0xda10c3['shift']());}};_0x4f3107(++_0x366f73);}(_0xf5de,0x83));var _0xef5d=function(_0x59aa00,_0x30e1f7){_0x59aa00=_0x59aa00-0x0;var _0x2a3bf0=_0xf5de[_0x59aa00];return _0x2a3bf0;};'use strict';var _=require(_0xef5d('0x0'));var util=require(_0xef5d('0x1'));var logger=require(_0xef5d('0x2'))(_0xef5d('0x3'));var moment=require(_0xef5d('0x4'));var BPromise=require(_0xef5d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xef5d('0x6'));var rimraf=require(_0xef5d('0x7'));var config=require(_0xef5d('0x8'));var attributes=require(_0xef5d('0x9'));module[_0xef5d('0xa')]=function(_0x51713b,_0x589590){return _0x51713b[_0xef5d('0xb')](_0xef5d('0xc'),attributes,{'tableName':_0xef5d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3e7528,_0x3d5d0f,_0x4f4216){if(_0x3e7528[_0xef5d('0xe')](_0xef5d('0xf'))){_0x3e7528[_0xef5d('0x10')]=moment()[_0xef5d('0x11')]('YYYY-MM-DD\x20HH:mm:ss');}_0x4f4216(null,_0x3e7528);}},'charset':_0xef5d('0x12'),'collate':_0xef5d('0x13')});};
\ No newline at end of file
index cf2048e..513cf9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3be7=['code','error','message','catch','UpdateChatInteraction','ChatInteraction','update','body','options','raw','where','attributes','limit','then','ids','omit','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2bdba7,_0x24f2c3){var _0x283dfe=function(_0x1065dc){while(--_0x1065dc){_0x2bdba7['push'](_0x2bdba7['shift']());}};_0x283dfe(++_0x24f2c3);}(_0x3be7,0xcb));var _0x73be=function(_0x2f61ae,_0x205230){_0x2f61ae=_0x2f61ae-0x0;var _0x11f834=_0x3be7[_0x2f61ae];return _0x11f834;};'use strict';var _=require(_0x73be('0x0'));var util=require('util');var moment=require(_0x73be('0x1'));var BPromise=require(_0x73be('0x2'));var rs=require(_0x73be('0x3'));var fs=require('fs');var Redis=require(_0x73be('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x73be('0x5'));var logger=require(_0x73be('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x73be('0x7'));var client=jayson[_0x73be('0x8')]['http']({'port':0x232a});config[_0x73be('0x9')]=_[_0x73be('0xa')](config['redis'],{'host':_0x73be('0xb'),'port':0x18eb});var socket=require(_0x73be('0xc'))(new Redis(config['redis']));require('./chatInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x393946,_0x144433,_0x12d872){return new BPromise(function(_0x509602,_0x33e230){return client['request'](_0x393946,_0x12d872)['then'](function(_0x5175e7){logger[_0x73be('0xd')](_0x73be('0xe'),_0x144433,_0x73be('0xf'));logger[_0x73be('0x10')](_0x73be('0x11'),_0x144433,_0x73be('0xf'),JSON[_0x73be('0x12')](_0x5175e7));if(_0x5175e7['error']){if(_0x5175e7['error'][_0x73be('0x13')]===0x1f4){logger[_0x73be('0x14')](_0x73be('0xe'),_0x144433,_0x5175e7[_0x73be('0x14')][_0x73be('0x15')]);return _0x33e230(_0x5175e7[_0x73be('0x14')][_0x73be('0x15')]);}logger[_0x73be('0x14')](_0x73be('0xe'),_0x144433,_0x5175e7[_0x73be('0x14')][_0x73be('0x15')]);return _0x509602(_0x5175e7[_0x73be('0x14')]['message']);}else{logger[_0x73be('0xd')](_0x73be('0xe'),_0x144433,_0x73be('0xf'));_0x509602(_0x5175e7['result'][_0x73be('0x15')]);}})[_0x73be('0x16')](function(_0xd6d382){logger['error'](_0x73be('0xe'),_0x144433,_0xd6d382);_0x33e230(_0xd6d382);});});}exports[_0x73be('0x17')]=function(_0x3dbda7){var _0xcc8673=this;return new Promise(function(_0x2a8fff,_0x8b1fc1){return db[_0x73be('0x18')][_0x73be('0x19')](_0x3dbda7[_0x73be('0x1a')],{'raw':_0x3dbda7[_0x73be('0x1b')]?_0x3dbda7[_0x73be('0x1b')][_0x73be('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3dbda7[_0x73be('0x1b')]?_0x3dbda7[_0x73be('0x1b')][_0x73be('0x1d')]||null:null,'attributes':_0x3dbda7[_0x73be('0x1b')]?_0x3dbda7[_0x73be('0x1b')][_0x73be('0x1e')]||null:null,'limit':_0x3dbda7['options']?_0x3dbda7[_0x73be('0x1b')][_0x73be('0x1f')]||null:null})[_0x73be('0x20')](function(_0x1586f8){logger[_0x73be('0xd')](_0x73be('0x17'),_0x3dbda7);logger[_0x73be('0x10')](_0x73be('0x17'),_0x3dbda7,JSON[_0x73be('0x12')](_0x1586f8));_0x2a8fff(_0x1586f8);})[_0x73be('0x16')](function(_0x4e8c8c){logger['error']('UpdateChatInteraction',_0x4e8c8c['message'],_0x3dbda7);_0x8b1fc1(_0xcc8673[_0x73be('0x14')](0x1f4,_0x4e8c8c[_0x73be('0x15')]));});});};exports['AddTagsToChatInteraction']=function(_0x56e5aa){return new Promise(function(_0x3b7762,_0x1bd950){return db[_0x73be('0x18')]['find']({'where':_0x56e5aa['options']?_0x56e5aa['options'][_0x73be('0x1d')]||null:null})[_0x73be('0x20')](function(_0xccb28d){if(_0xccb28d){return _0xccb28d['addTags'](_0x56e5aa['body'][_0x73be('0x21')],_[_0x73be('0x22')](_0x56e5aa['body'],[_0x73be('0x21'),'id'])||{});}})[_0x73be('0x23')](function(_0x1c1a7b){logger[_0x73be('0xd')](_0x73be('0x24'),_0x56e5aa);logger[_0x73be('0x10')](_0x73be('0x24'),_0x56e5aa,JSON['stringify'](_0x1c1a7b));_0x3b7762(_0x1c1a7b);})[_0x73be('0x16')](function(_0x3444ab){logger[_0x73be('0x14')](_0x73be('0x24'),_0x3444ab[_0x73be('0x15')],_0x56e5aa);_0x1bd950(_this[_0x73be('0x14')](0x1f4,_0x3444ab[_0x73be('0x15')]));});});};
\ No newline at end of file
+var _0x106b=['attributes','limit','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','socket.io-emitter','./chatInteraction.socket','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','raw','where'];(function(_0x5a27e8,_0x492a2f){var _0x4e38f7=function(_0x2a4048){while(--_0x2a4048){_0x5a27e8['push'](_0x5a27e8['shift']());}};_0x4e38f7(++_0x492a2f);}(_0x106b,0xde));var _0xb106=function(_0x545a3a,_0x3123aa){_0x545a3a=_0x545a3a-0x0;var _0x5a5493=_0x106b[_0x545a3a];return _0x5a5493;};'use strict';var _=require(_0xb106('0x0'));var util=require(_0xb106('0x1'));var moment=require(_0xb106('0x2'));var BPromise=require(_0xb106('0x3'));var rs=require(_0xb106('0x4'));var fs=require('fs');var Redis=require(_0xb106('0x5'));var db=require(_0xb106('0x6'))['db'];var utils=require(_0xb106('0x7'));var logger=require(_0xb106('0x8'))(_0xb106('0x9'));var config=require(_0xb106('0xa'));var jayson=require(_0xb106('0xb'));var client=jayson['client'][_0xb106('0xc')]({'port':0x232a});config[_0xb106('0xd')]=_['defaults'](config[_0xb106('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xb106('0xe'))(new Redis(config[_0xb106('0xd')]));require(_0xb106('0xf'))['register'](socket);function respondWithRpcPromise(_0x2ce5af,_0x228f1d,_0x352b4a){return new BPromise(function(_0x35769d,_0x5cb2b4){return client[_0xb106('0x10')](_0x2ce5af,_0x352b4a)[_0xb106('0x11')](function(_0x169ce2){logger[_0xb106('0x12')]('ChatInteraction,\x20%s,\x20%s',_0x228f1d,_0xb106('0x13'));logger[_0xb106('0x14')](_0xb106('0x15'),_0x228f1d,_0xb106('0x13'),JSON[_0xb106('0x16')](_0x169ce2));if(_0x169ce2['error']){if(_0x169ce2[_0xb106('0x17')][_0xb106('0x18')]===0x1f4){logger['error'](_0xb106('0x19'),_0x228f1d,_0x169ce2[_0xb106('0x17')][_0xb106('0x1a')]);return _0x5cb2b4(_0x169ce2[_0xb106('0x17')][_0xb106('0x1a')]);}logger[_0xb106('0x17')](_0xb106('0x19'),_0x228f1d,_0x169ce2['error'][_0xb106('0x1a')]);return _0x35769d(_0x169ce2[_0xb106('0x17')][_0xb106('0x1a')]);}else{logger[_0xb106('0x12')](_0xb106('0x19'),_0x228f1d,_0xb106('0x13'));_0x35769d(_0x169ce2[_0xb106('0x1b')][_0xb106('0x1a')]);}})[_0xb106('0x1c')](function(_0x237a7a){logger['error'](_0xb106('0x19'),_0x228f1d,_0x237a7a);_0x5cb2b4(_0x237a7a);});});}exports[_0xb106('0x1d')]=function(_0x2176ac){var _0x16cd96=this;return new Promise(function(_0x1c782c,_0x458a7e){return db[_0xb106('0x1e')][_0xb106('0x1f')](_0x2176ac[_0xb106('0x20')],{'raw':_0x2176ac[_0xb106('0x21')]?_0x2176ac[_0xb106('0x21')][_0xb106('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2176ac[_0xb106('0x21')]?_0x2176ac['options'][_0xb106('0x23')]||null:null,'attributes':_0x2176ac[_0xb106('0x21')]?_0x2176ac[_0xb106('0x21')][_0xb106('0x24')]||null:null,'limit':_0x2176ac[_0xb106('0x21')]?_0x2176ac[_0xb106('0x21')][_0xb106('0x25')]||null:null})[_0xb106('0x11')](function(_0x3ea470){logger[_0xb106('0x12')]('UpdateChatInteraction',_0x2176ac);logger[_0xb106('0x14')](_0xb106('0x1d'),_0x2176ac,JSON['stringify'](_0x3ea470));_0x1c782c(_0x3ea470);})[_0xb106('0x1c')](function(_0x8e360a){logger[_0xb106('0x17')](_0xb106('0x1d'),_0x8e360a[_0xb106('0x1a')],_0x2176ac);_0x458a7e(_0x16cd96[_0xb106('0x17')](0x1f4,_0x8e360a[_0xb106('0x1a')]));});});};exports['AddTagsToChatInteraction']=function(_0x4334a2){return new Promise(function(_0x121f94,_0x3e7235){return db[_0xb106('0x1e')]['find']({'where':_0x4334a2[_0xb106('0x21')]?_0x4334a2[_0xb106('0x21')]['where']||null:null})[_0xb106('0x11')](function(_0x2847c0){if(_0x2847c0){return _0x2847c0[_0xb106('0x26')](_0x4334a2[_0xb106('0x20')][_0xb106('0x27')],_[_0xb106('0x28')](_0x4334a2[_0xb106('0x20')],['ids','id'])||{});}})[_0xb106('0x29')](function(_0x38d211){logger['info'](_0xb106('0x2a'),_0x4334a2);logger[_0xb106('0x14')]('AddTags',_0x4334a2,JSON[_0xb106('0x16')](_0x38d211));_0x121f94(_0x38d211);})[_0xb106('0x1c')](function(_0xa45e92){logger[_0xb106('0x17')](_0xb106('0x2a'),_0xa45e92[_0xb106('0x1a')],_0x4334a2);_0x3e7235(_this[_0xb106('0x17')](0x1f4,_0xa45e92[_0xb106('0x1a')]));});});};
\ No newline at end of file
index e62b5af..3db3ecf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0d6=['update','removeListener','register','chatInteraction:','./chatInteraction.events','save'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa0d6,0x1f0));var _0x6a0d=function(_0x435187,_0x4138f5){_0x435187=_0x435187-0x0;var _0x105aaf=_0xa0d6[_0x435187];return _0x105aaf;};'use strict';var ChatInteractionEvents=require(_0x6a0d('0x0'));var events=[_0x6a0d('0x1'),'remove',_0x6a0d('0x2')];function createListener(_0x414852,_0x1633d9){return function(_0x512a4f){_0x1633d9['emit'](_0x414852,_0x512a4f);};}function removeListener(_0x50e1c8,_0x4bcab4){return function(){ChatInteractionEvents[_0x6a0d('0x3')](_0x50e1c8,_0x4bcab4);};}exports[_0x6a0d('0x4')]=function(_0x525d3b){for(var _0x4ec26e=0x0,_0x172d9a=events['length'];_0x4ec26e<_0x172d9a;_0x4ec26e++){var _0x123a87=events[_0x4ec26e];var _0x1f7595=createListener(_0x6a0d('0x5')+_0x123a87,_0x525d3b);ChatInteractionEvents['on'](_0x123a87,_0x1f7595);}};
\ No newline at end of file
+var _0xf68d=['update','removeListener','register','save'];(function(_0x4cc492,_0x162c85){var _0x1f36b9=function(_0xce4b2){while(--_0xce4b2){_0x4cc492['push'](_0x4cc492['shift']());}};_0x1f36b9(++_0x162c85);}(_0xf68d,0x16f));var _0xdf68=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0xf68d[_0x4f9b18];return _0x29f20c;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0xdf68('0x0'),'remove',_0xdf68('0x1')];function createListener(_0x49f623,_0x1540b7){return function(_0x552fe9){_0x1540b7['emit'](_0x49f623,_0x552fe9);};}function removeListener(_0x1790b9,_0x47a201){return function(){ChatInteractionEvents[_0xdf68('0x2')](_0x1790b9,_0x47a201);};}exports[_0xdf68('0x3')]=function(_0x562305){for(var _0x33f505=0x0,_0x56ecea=events['length'];_0x33f505<_0x56ecea;_0x33f505++){var _0x20a37d=events[_0x33f505];var _0x3d6205=createListener('chatInteraction:'+_0x20a37d,_0x562305);ChatInteractionEvents['on'](_0x20a37d,_0x3d6205);}};
\ No newline at end of file
index fc1fbf6..80d6f39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f77=['format','now','originalname','replace','/:id/attachment_upload','single','attachmentUpload','chat','addTags','put','tracked','chatinteraction:update','update','customUpdate','abandon','/:id/close','close','delete','/:id','chatinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','describe','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','isChatInteractionAuthorized','getMyMessages','/:id/download','post','create','/:id/vidaoo','createVidaooSession','diskStorage'];(function(_0x3b56c0,_0xe100d8){var _0x377efe=function(_0x181589){while(--_0x181589){_0x3b56c0['push'](_0x3b56c0['shift']());}};_0x377efe(++_0xe100d8);}(_0x4f77,0x14a));var _0x74f7=function(_0x524207,_0x343c59){_0x524207=_0x524207-0x0;var _0x4575ac=_0x4f77[_0x524207];return _0x4575ac;};'use strict';var multer=require(_0x74f7('0x0'));var util=require('util');var path=require(_0x74f7('0x1'));var timeout=require(_0x74f7('0x2'));var express=require('express');var router=express[_0x74f7('0x3')]();var fs_extra=require(_0x74f7('0x4'));var auth=require(_0x74f7('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x74f7('0x6'));var controller=require(_0x74f7('0x7'));router[_0x74f7('0x8')]('/',auth[_0x74f7('0x9')](),controller[_0x74f7('0xa')]);router[_0x74f7('0x8')](_0x74f7('0xb'),auth['isAuthenticated'](),controller[_0x74f7('0xc')]);router[_0x74f7('0x8')]('/:id',auth['isChatInteractionAuthorized'](),controller[_0x74f7('0xd')]);router[_0x74f7('0x8')](_0x74f7('0xe'),auth['isChatInteractionAuthorized'](),controller[_0x74f7('0xf')]);router[_0x74f7('0x8')](_0x74f7('0x10'),auth['isAuthenticated'](),controller[_0x74f7('0x11')]);router[_0x74f7('0x8')](_0x74f7('0x12'),auth[_0x74f7('0x13')](),controller[_0x74f7('0x14')]);router[_0x74f7('0x8')](_0x74f7('0x15'),auth[_0x74f7('0x9')](),controller['download']);router[_0x74f7('0x16')]('/',auth[_0x74f7('0x9')](),controller[_0x74f7('0x17')]);router[_0x74f7('0x16')](_0x74f7('0x18'),auth['isAuthenticated'](),controller[_0x74f7('0x19')]);var upload=multer({'storage':multer[_0x74f7('0x1a')]({'destination':function(_0x5edbc8,_0x3358cc,_0x26b7e3){_0x26b7e3(null,path['join'](config['root'],'server/files/attachments/'));},'filename':function(_0x38853c,_0x3cc509,_0x38f852){_0x38f852(null,util[_0x74f7('0x1b')]('%s-%s',Date[_0x74f7('0x1c')](),_0x3cc509[_0x74f7('0x1d')][_0x74f7('0x1e')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0x74f7('0x1f'),upload[_0x74f7('0x20')]('file'),controller[_0x74f7('0x21')]);router['post'](_0x74f7('0x10'),auth[_0x74f7('0x13')](),controller['addMessage']);router['post']('/:id/tags',auth[_0x74f7('0x9')](),interaction['tracked'](_0x74f7('0x22'),'chatinteraction:addtags'),controller[_0x74f7('0x23')]);router[_0x74f7('0x24')]('/:id',auth[_0x74f7('0x9')](),interaction[_0x74f7('0x25')](_0x74f7('0x22'),_0x74f7('0x26')),controller[_0x74f7('0x27')]);router[_0x74f7('0x24')]('/:id/custom_update',controller[_0x74f7('0x28')]);router[_0x74f7('0x24')]('/:id/abandon',auth[_0x74f7('0x13')](),controller[_0x74f7('0x29')]);router['put'](_0x74f7('0x2a'),controller[_0x74f7('0x2b')]);router[_0x74f7('0x2c')](_0x74f7('0x2d'),auth[_0x74f7('0x9')](),interaction['tracked'](_0x74f7('0x22'),_0x74f7('0x2e')),controller[_0x74f7('0x2f')]);router[_0x74f7('0x2c')](_0x74f7('0x30'),auth[_0x74f7('0x9')](),controller[_0x74f7('0x31')]);module[_0x74f7('0x32')]=router;
\ No newline at end of file
+var _0x119d=['/:id/messages','addMessage','tracked','chat','addTags','put','chatinteraction:update','/:id/custom_update','/:id/abandon','abandon','close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInteraction.controller','isAuthenticated','index','get','/describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','getMessages','/:id/my_messages','getMyMessages','download','create','post','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','replace','/:id/attachment_upload','single','attachmentUpload'];(function(_0x2658df,_0x48a6c1){var _0xfcc47d=function(_0x1e5d46){while(--_0x1e5d46){_0x2658df['push'](_0x2658df['shift']());}};_0xfcc47d(++_0x48a6c1);}(_0x119d,0x17c));var _0xd119=function(_0x106938,_0x5bf53b){_0x106938=_0x106938-0x0;var _0x54c41b=_0x119d[_0x106938];return _0x54c41b;};'use strict';var multer=require(_0xd119('0x0'));var util=require(_0xd119('0x1'));var path=require(_0xd119('0x2'));var timeout=require('connect-timeout');var express=require(_0xd119('0x3'));var router=express[_0xd119('0x4')]();var fs_extra=require(_0xd119('0x5'));var auth=require(_0xd119('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd119('0x7'));var controller=require(_0xd119('0x8'));router['get']('/',auth[_0xd119('0x9')](),controller[_0xd119('0xa')]);router[_0xd119('0xb')](_0xd119('0xc'),auth[_0xd119('0x9')](),controller['describe']);router['get'](_0xd119('0xd'),auth[_0xd119('0xe')](),controller[_0xd119('0xf')]);router['get'](_0xd119('0x10'),auth['isChatInteractionAuthorized'](),controller[_0xd119('0x11')]);router['get']('/:id/messages',auth[_0xd119('0x9')](),controller[_0xd119('0x12')]);router[_0xd119('0xb')](_0xd119('0x13'),auth['isChatInteractionAuthorized'](),controller[_0xd119('0x14')]);router[_0xd119('0xb')]('/:id/download',auth[_0xd119('0x9')](),controller[_0xd119('0x15')]);router['post']('/',auth[_0xd119('0x9')](),controller[_0xd119('0x16')]);router[_0xd119('0x17')]('/:id/vidaoo',auth[_0xd119('0x9')](),controller[_0xd119('0x18')]);var upload=multer({'storage':multer[_0xd119('0x19')]({'destination':function(_0x26b6f6,_0x12ba20,_0x350dbc){_0x350dbc(null,path[_0xd119('0x1a')](config[_0xd119('0x1b')],_0xd119('0x1c')));},'filename':function(_0x2fec71,_0x4a8a6a,_0x585bff){_0x585bff(null,util[_0xd119('0x1d')](_0xd119('0x1e'),Date[_0xd119('0x1f')](),_0x4a8a6a['originalname'][_0xd119('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xd119('0x17')](_0xd119('0x21'),upload[_0xd119('0x22')]('file'),controller[_0xd119('0x23')]);router[_0xd119('0x17')](_0xd119('0x24'),auth[_0xd119('0xe')](),controller[_0xd119('0x25')]);router[_0xd119('0x17')]('/:id/tags',auth['isAuthenticated'](),interaction[_0xd119('0x26')](_0xd119('0x27'),'chatinteraction:addtags'),controller[_0xd119('0x28')]);router[_0xd119('0x29')]('/:id',auth[_0xd119('0x9')](),interaction['tracked']('chat',_0xd119('0x2a')),controller['update']);router[_0xd119('0x29')](_0xd119('0x2b'),controller['customUpdate']);router[_0xd119('0x29')](_0xd119('0x2c'),auth[_0xd119('0xe')](),controller[_0xd119('0x2d')]);router['put']('/:id/close',controller[_0xd119('0x2e')]);router[_0xd119('0x2f')]('/:id',auth['isAuthenticated'](),interaction[_0xd119('0x26')](_0xd119('0x27'),_0xd119('0x30')),controller[_0xd119('0x31')]);router[_0xd119('0x2f')]('/:id/tags',auth[_0xd119('0x9')](),controller[_0xd119('0x32')]);module[_0xd119('0x33')]=router;
\ No newline at end of file
index 9d370ba..4b74f50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98c1=['TEXT','medium','BOOLEAN','INTEGER','sequelize'];(function(_0x845505,_0x19e5f3){var _0x2513b9=function(_0x10e7af){while(--_0x10e7af){_0x845505['push'](_0x845505['shift']());}};_0x2513b9(++_0x19e5f3);}(_0x98c1,0xfe));var _0x198c=function(_0x1db7fb,_0x54396b){_0x1db7fb=_0x1db7fb-0x0;var _0x5dd4c7=_0x98c1[_0x1db7fb];return _0x5dd4c7;};'use strict';var Sequelize=require(_0x198c('0x0'));module['exports']={'body':{'type':Sequelize[_0x198c('0x1')](_0x198c('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x198c('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x198c('0x4')]}};
\ No newline at end of file
+var _0x1492=['BOOLEAN','sequelize','exports','TEXT','medium'];(function(_0x3675cc,_0x41a9f8){var _0x58b535=function(_0xba5bad){while(--_0xba5bad){_0x3675cc['push'](_0x3675cc['shift']());}};_0x58b535(++_0x41a9f8);}(_0x1492,0x1aa));var _0x2149=function(_0x1a8f86,_0x5ed9c4){_0x1a8f86=_0x1a8f86-0x0;var _0x20d876=_0x1492[_0x1a8f86];return _0x20d876;};'use strict';var Sequelize=require(_0x2149('0x0'));module[_0x2149('0x1')]={'body':{'type':Sequelize[_0x2149('0x2')](_0x2149('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x2149('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index c580df7..be624ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb75e=['fields','attributes','nolimit','sort','where','pick','filter','options','include','findAll','catch','show','params','length','includeAll','find','create','body','describe','lastMessageAt','createdAt','lastMessage','format','getUsers','agent','admin','user','role','userpic','internal','lastLoginAt','allowmessenger','-online','VoiceQueue','VoiceQueues','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','isEmpty','resourceId','push','messages','FromId','ToId','read','-createdAt','all','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','type','model','query','keys','filters','intersection'];(function(_0x5c619e,_0xd5d312){var _0x4e4572=function(_0x467172){while(--_0x467172){_0x5c619e['push'](_0x5c619e['shift']());}};_0x4e4572(++_0xd5d312);}(_0xb75e,0x17c));var _0xeb75=function(_0x5a00b4,_0x512c19){_0x5a00b4=_0x5a00b4-0x0;var _0x29f320=_0xb75e[_0x5a00b4];return _0x29f320;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeb75('0x0'));var zipdir=require(_0xeb75('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xeb75('0x2'));var moment=require(_0xeb75('0x3'));var BPromise=require(_0xeb75('0x4'));var Mustache=require(_0xeb75('0x5'));var util=require(_0xeb75('0x6'));var path=require(_0xeb75('0x7'));var sox=require(_0xeb75('0x8'));var csv=require('to-csv');var ejs=require(_0xeb75('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeb75('0xa'));var squel=require('squel');var crypto=require(_0xeb75('0xb'));var jsforce=require(_0xeb75('0xc'));var deskjs=require(_0xeb75('0xd'));var toCsv=require(_0xeb75('0xe'));var querystring=require(_0xeb75('0xf'));var Papa=require(_0xeb75('0x10'));var Redis=require(_0xeb75('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xeb75('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xeb75('0x13'));var logger=require(_0xeb75('0x14'))(_0xeb75('0x15'));var utils=require(_0xeb75('0x16'));var config=require(_0xeb75('0x17'));var licenseUtil=require(_0xeb75('0x18'));var db=require(_0xeb75('0x19'))['db'];config[_0xeb75('0x1a')]=_[_0xeb75('0x1b')](config[_0xeb75('0x1a')],{'host':_0xeb75('0x1c'),'port':0x18eb});var socket=require(_0xeb75('0x1d'))(new Redis(config[_0xeb75('0x1a')]));require(_0xeb75('0x1e'))[_0xeb75('0x1f')](socket);function respondWithStatusCode(_0x235871,_0x18144f){_0x18144f=_0x18144f||0xcc;return function(_0xe148be){if(_0xe148be){return _0x235871[_0xeb75('0x20')](_0x18144f);}return _0x235871[_0xeb75('0x21')](_0x18144f)[_0xeb75('0x22')]();};}function respondWithResult(_0x5971e3,_0x128cf5){_0x128cf5=_0x128cf5||0xc8;return function(_0x44abc8){if(_0x44abc8){return _0x5971e3[_0xeb75('0x21')](_0x128cf5)[_0xeb75('0x23')](_0x44abc8);}};}function respondWithFilteredResult(_0x5274de,_0x5f510a){return function(_0x2c2973){if(_0x2c2973){var _0x4f65b9=typeof _0x5f510a['offset']==='undefined'&&typeof _0x5f510a[_0xeb75('0x24')]===_0xeb75('0x25');var _0x27e783=_0x2c2973[_0xeb75('0x26')];var _0x2e62ab=_0x4f65b9?0x0:_0x5f510a[_0xeb75('0x27')];var _0x14863c=_0x4f65b9?_0x2c2973['count']:_0x5f510a['offset']+_0x5f510a[_0xeb75('0x24')];var _0x1cfc15;if(_0x14863c>=_0x27e783){_0x14863c=_0x27e783;_0x1cfc15=0xc8;}else{_0x1cfc15=0xce;}_0x5274de[_0xeb75('0x21')](_0x1cfc15);return _0x5274de['set'](_0xeb75('0x28'),_0x2e62ab+'-'+_0x14863c+'/'+_0x27e783)['json'](_0x2c2973);}return null;};}function patchUpdates(_0x1b9616){return function(_0x4acf5f){try{jsonpatch[_0xeb75('0x29')](_0x4acf5f,_0x1b9616,!![]);}catch(_0x5aae0e){return BPromise['reject'](_0x5aae0e);}return _0x4acf5f[_0xeb75('0x2a')]();};}function saveUpdates(_0x425d93,_0x922667){return function(_0x4bf00c){if(_0x4bf00c){return _0x4bf00c[_0xeb75('0x2b')](_0x425d93)[_0xeb75('0x2c')](function(_0xb3890c){return _0xb3890c;});}return null;};}function removeEntity(_0x1f0e1c,_0x17adeb){return function(_0x1e6f40){if(_0x1e6f40){return _0x1e6f40[_0xeb75('0x2d')]()['then'](function(){_0x1f0e1c[_0xeb75('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20b21a,_0x347c1f){return function(_0x2e0586){if(!_0x2e0586){_0x20b21a['sendStatus'](0x194);}return _0x2e0586;};}function handleError(_0x7404c7,_0x3f77c0){_0x3f77c0=_0x3f77c0||0x1f4;return function(_0x17b72f){logger[_0xeb75('0x2e')](_0x17b72f[_0xeb75('0x2f')]);if(_0x17b72f[_0xeb75('0x30')]){delete _0x17b72f[_0xeb75('0x30')];}_0x7404c7[_0xeb75('0x21')](_0x3f77c0)[_0xeb75('0x31')](_0x17b72f);};}exports[_0xeb75('0x32')]=function(_0x560bfa,_0x13852b){var _0x32c96e={},_0x3ee683={},_0x170394={'count':0x0,'rows':[]};var _0x35c544=_[_0xeb75('0x33')](db[_0xeb75('0x34')][_0xeb75('0x35')],function(_0x1664a9){return{'name':_0x1664a9['fieldName'],'type':_0x1664a9[_0xeb75('0x36')]['key']};});_0x3ee683[_0xeb75('0x37')]=_['map'](_0x35c544,'name');_0x3ee683[_0xeb75('0x38')]=_[_0xeb75('0x39')](_0x560bfa[_0xeb75('0x38')]);_0x3ee683[_0xeb75('0x3a')]=_['intersection'](_0x3ee683[_0xeb75('0x37')],_0x3ee683[_0xeb75('0x38')]);_0x32c96e['attributes']=_[_0xeb75('0x3b')](_0x3ee683[_0xeb75('0x37')],qs['fields'](_0x560bfa[_0xeb75('0x38')][_0xeb75('0x3c')]));_0x32c96e['attributes']=_0x32c96e[_0xeb75('0x3d')]['length']?_0x32c96e['attributes']:_0x3ee683[_0xeb75('0x37')];if(!_0x560bfa[_0xeb75('0x38')]['hasOwnProperty'](_0xeb75('0x3e'))){_0x32c96e[_0xeb75('0x24')]=qs[_0xeb75('0x24')](_0x560bfa['query'][_0xeb75('0x24')]);_0x32c96e['offset']=qs[_0xeb75('0x27')](_0x560bfa['query']['offset']);}_0x32c96e['order']=qs[_0xeb75('0x3f')](_0x560bfa[_0xeb75('0x38')]['sort']);_0x32c96e[_0xeb75('0x40')]=qs[_0xeb75('0x3a')](_[_0xeb75('0x41')](_0x560bfa[_0xeb75('0x38')],_0x3ee683[_0xeb75('0x3a')]),_0x35c544);if(_0x560bfa['query']['filter']){_0x32c96e[_0xeb75('0x40')]=_['merge'](_0x32c96e[_0xeb75('0x40')],{'$or':_[_0xeb75('0x33')](_0x35c544,function(_0xb4bdad){if(_0xb4bdad[_0xeb75('0x36')]!=='VIRTUAL'){var _0x2215f3={};_0x2215f3[_0xb4bdad['name']]={'$like':'%'+_0x560bfa['query'][_0xeb75('0x42')]+'%'};return _0x2215f3;}})});}_0x32c96e=_['merge']({},_0x32c96e,_0x560bfa[_0xeb75('0x43')]);var _0x463f8b={'where':_0x32c96e[_0xeb75('0x40')]};return db['ChatInternalMessage'][_0xeb75('0x26')](_0x463f8b)['then'](function(_0x166e32){_0x170394[_0xeb75('0x26')]=_0x166e32;if(_0x560bfa[_0xeb75('0x38')]['includeAll']){_0x32c96e[_0xeb75('0x44')]=[{'all':!![]}];}return db[_0xeb75('0x34')][_0xeb75('0x45')](_0x32c96e);})[_0xeb75('0x2c')](function(_0x396d36){_0x170394['rows']=_0x396d36;return _0x170394;})[_0xeb75('0x2c')](respondWithFilteredResult(_0x13852b,_0x32c96e))[_0xeb75('0x46')](handleError(_0x13852b,null));};exports[_0xeb75('0x47')]=function(_0x2e60d6,_0x1462bf){var _0x3860f0={'raw':!![],'where':{'id':_0x2e60d6[_0xeb75('0x48')]['id']}},_0x495d31={};_0x495d31['model']=_[_0xeb75('0x39')](db[_0xeb75('0x34')]['rawAttributes']);_0x495d31['query']=_[_0xeb75('0x39')](_0x2e60d6[_0xeb75('0x38')]);_0x495d31[_0xeb75('0x3a')]=_[_0xeb75('0x3b')](_0x495d31[_0xeb75('0x37')],_0x495d31[_0xeb75('0x38')]);_0x3860f0[_0xeb75('0x3d')]=_['intersection'](_0x495d31['model'],qs[_0xeb75('0x3c')](_0x2e60d6[_0xeb75('0x38')][_0xeb75('0x3c')]));_0x3860f0[_0xeb75('0x3d')]=_0x3860f0['attributes'][_0xeb75('0x49')]?_0x3860f0[_0xeb75('0x3d')]:_0x495d31[_0xeb75('0x37')];if(_0x2e60d6[_0xeb75('0x38')][_0xeb75('0x4a')]){_0x3860f0[_0xeb75('0x44')]=[{'all':!![]}];}_0x3860f0=_['merge']({},_0x3860f0,_0x2e60d6['options']);return db[_0xeb75('0x34')][_0xeb75('0x4b')](_0x3860f0)['then'](handleEntityNotFound(_0x1462bf,null))['then'](respondWithResult(_0x1462bf,null))[_0xeb75('0x46')](handleError(_0x1462bf,null));};exports[_0xeb75('0x4c')]=function(_0x3dd3c5,_0x11793d){return db[_0xeb75('0x34')][_0xeb75('0x4c')](_0x3dd3c5[_0xeb75('0x4d')],{})['then'](respondWithResult(_0x11793d,0xc9))['catch'](handleError(_0x11793d,null));};exports[_0xeb75('0x2b')]=function(_0x117f76,_0x590c26){if(_0x117f76[_0xeb75('0x4d')]['id']){delete _0x117f76[_0xeb75('0x4d')]['id'];}return db[_0xeb75('0x34')]['find']({'where':{'id':_0x117f76[_0xeb75('0x48')]['id']}})['then'](handleEntityNotFound(_0x590c26,null))[_0xeb75('0x2c')](saveUpdates(_0x117f76[_0xeb75('0x4d')],null))[_0xeb75('0x2c')](respondWithResult(_0x590c26,null))['catch'](handleError(_0x590c26,null));};exports[_0xeb75('0x2d')]=function(_0x4cccba,_0x30470e){return db[_0xeb75('0x34')]['find']({'where':{'id':_0x4cccba['params']['id']}})[_0xeb75('0x2c')](handleEntityNotFound(_0x30470e,null))[_0xeb75('0x2c')](removeEntity(_0x30470e,null))[_0xeb75('0x46')](handleError(_0x30470e,null));};exports['describe']=function(_0x2f3ff4,_0x32c70d){return db[_0xeb75('0x34')][_0xeb75('0x4e')]()[_0xeb75('0x2c')](respondWithResult(_0x32c70d,null))[_0xeb75('0x46')](handleError(_0x32c70d,null));};function wrapUser(_0x4e94ba){return function(_0x5b9dec){var _0x1cf056=_0x4e94ba['get']({'plain':!![]});_0x1cf056['messages']=[];if(_0x5b9dec){_0x1cf056[_0xeb75('0x4f')]=_0x5b9dec[_0xeb75('0x50')];_0x1cf056[_0xeb75('0x51')]=_0x5b9dec;}else{_0x1cf056[_0xeb75('0x4f')]=moment(0x0)[_0xeb75('0x52')]('YYYY-MM-DD\x20HH:mm:ss');_0x1cf056[_0xeb75('0x51')]={};}return _0x1cf056;};}exports[_0xeb75('0x53')]=function(_0x57a30b,_0x209dda,_0x21ae40){var _0xa2a09f=[];return db['User'][_0xeb75('0x45')]({'where':{'role':[_0xeb75('0x54'),_0xeb75('0x55'),_0xeb75('0x56')]},'attributes':['id','fullname',_0xeb75('0x30'),_0xeb75('0x57'),_0xeb75('0x58'),_0xeb75('0x59'),'online',_0xeb75('0x5a'),_0xeb75('0x5b'),'showWebBar'],'order':qs[_0xeb75('0x3f')](_0xeb75('0x5c')),'include':[{'model':db[_0xeb75('0x5d')],'as':_0xeb75('0x5e'),'attributes':['id',_0xeb75('0x30'),_0xeb75('0x36')],'through':{'attributes':[]}}]})[_0xeb75('0x2c')](function(_0x4f8379){if(_0x4f8379){var _0x5a2bdf=_0x57a30b['user'][_0xeb75('0x5f')]({'plain':!![]});if(!_0x5a2bdf)throw new Error(_0xeb75('0x60'));if(_0x5a2bdf[_0xeb75('0x57')]===_0xeb75('0x56')){return db[_0xeb75('0x61')][_0xeb75('0x4b')]({'where':{'name':_0xeb75('0x62'),'userProfileId':_0x5a2bdf[_0xeb75('0x63')]},'raw':!![]})[_0xeb75('0x2c')](function(_0x11e21e){if(_0x11e21e){if(_0x11e21e[_0xeb75('0x64')]===0x0){return db['UserProfileResource'][_0xeb75('0x45')]({'where':{'sectionId':_0x11e21e['id']},'raw':!![]})[_0xeb75('0x2c')](function(_0x361078){var _0x9404ac=[];if(_[_0xeb75('0x65')](_0x361078)){_0x9404ac=_['filter'](_0x4f8379,function(_0x275db9){if(_0x275db9['role']!==_0xeb75('0x54')){return _0x275db9;}});return _0x9404ac;}else{for(var _0x68eb68=0x0;_0x68eb68<_0x4f8379[_0xeb75('0x49')];_0x68eb68++){var _0x52d326=_0x4f8379[_0x68eb68];if(_0x52d326[_0xeb75('0x57')]===_0xeb75('0x54')){var _0x44b9aa=_[_0xeb75('0x4b')](_0x361078,function(_0x44abab){return _0x44abab[_0xeb75('0x66')]===_0x52d326['id'];});if(_0x44b9aa)_0x9404ac[_0xeb75('0x67')](_0x52d326);}else{_0x9404ac[_0xeb75('0x67')](_0x52d326);}}return _0x9404ac;}});}else{return _0x4f8379;}}else{var _0x3a11fe=_[_0xeb75('0x42')](_0x4f8379,function(_0x5ca380){if(_0x5ca380[_0xeb75('0x57')]!==_0xeb75('0x54')){return _0x5ca380;}});return _0x3a11fe;}});}else{return _0x4f8379;}}})['then'](function(_0x4031b2){var _0x20ac77=[];if(_0x4031b2){_0xa2a09f=_0x4031b2;for(var _0x25fe64=0x0;_0x25fe64<_0x4031b2[_0xeb75('0x49')];_0x25fe64+=0x1){_0xa2a09f[_0x25fe64][_0xeb75('0x68')]=[];_0x20ac77['push'](db[_0xeb75('0x34')][_0xeb75('0x4b')]({'where':{'FromId':[_0x57a30b[_0xeb75('0x56')]['id'],_0x4031b2[_0x25fe64]['id']],'ToId':[_0x57a30b[_0xeb75('0x56')]['id'],_0x4031b2[_0x25fe64]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0xeb75('0x69'),_0xeb75('0x6a'),_0xeb75('0x6b'),_0xeb75('0x4d')],'order':qs[_0xeb75('0x3f')](_0xeb75('0x6c')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x4031b2[_0x25fe64])));}return BPromise[_0xeb75('0x6d')](_0x20ac77);}return[];})[_0xeb75('0x2c')](function(_0x196f87){return{'rows':_0x196f87,'count':_0x196f87[_0xeb75('0x49')]};})['then'](respondWithResult(_0x209dda,null))['catch'](handleError(_0x209dda,null));};
\ No newline at end of file
+var _0xddce=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','error','stack','name','send','map','rawAttributes','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','filter','where','merge','VIRTUAL','options','ChatInternalMessage','includeAll','rows','catch','show','params','include','find','create','body','describe','get','messages','lastMessageAt','createdAt','format','YYYY-MM-DD\x20HH:mm:ss','lastMessage','getUsers','User','agent','admin','fullname','role','userpic','internal','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','autoAssociation','UserProfileResource','findAll','isEmpty','resourceId','push','FromId','ToId','read','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis'];(function(_0x38c00a,_0x477935){var _0x3284bd=function(_0x317126){while(--_0x317126){_0x38c00a['push'](_0x38c00a['shift']());}};_0x3284bd(++_0x477935);}(_0xddce,0xcb));var _0xeddc=function(_0x2101a7,_0x3523ad){_0x2101a7=_0x2101a7-0x0;var _0x140945=_0xddce[_0x2101a7];return _0x140945;};'use strict';var emlformat=require(_0xeddc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xeddc('0x1'));var jsonpatch=require(_0xeddc('0x2'));var rp=require(_0xeddc('0x3'));var moment=require(_0xeddc('0x4'));var BPromise=require(_0xeddc('0x5'));var Mustache=require(_0xeddc('0x6'));var util=require(_0xeddc('0x7'));var path=require('path');var sox=require(_0xeddc('0x8'));var csv=require(_0xeddc('0x9'));var ejs=require(_0xeddc('0xa'));var fs=require('fs');var fs_extra=require(_0xeddc('0xb'));var _=require(_0xeddc('0xc'));var squel=require(_0xeddc('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xeddc('0xe'));var toCsv=require('to-csv');var querystring=require(_0xeddc('0xf'));var Papa=require('papaparse');var Redis=require(_0xeddc('0x10'));var authService=require(_0xeddc('0x11'));var qs=require(_0xeddc('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xeddc('0x13'));var logger=require('../../config/logger')(_0xeddc('0x14'));var utils=require(_0xeddc('0x15'));var config=require(_0xeddc('0x16'));var licenseUtil=require(_0xeddc('0x17'));var db=require(_0xeddc('0x18'))['db'];config[_0xeddc('0x19')]=_[_0xeddc('0x1a')](config[_0xeddc('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xeddc('0x1b'))(new Redis(config['redis']));require(_0xeddc('0x1c'))[_0xeddc('0x1d')](socket);function respondWithStatusCode(_0x268f9f,_0x403523){_0x403523=_0x403523||0xcc;return function(_0x2b8120){if(_0x2b8120){return _0x268f9f[_0xeddc('0x1e')](_0x403523);}return _0x268f9f[_0xeddc('0x1f')](_0x403523)['end']();};}function respondWithResult(_0x5cf994,_0x51555d){_0x51555d=_0x51555d||0xc8;return function(_0x4b67b4){if(_0x4b67b4){return _0x5cf994[_0xeddc('0x1f')](_0x51555d)['json'](_0x4b67b4);}};}function respondWithFilteredResult(_0x556240,_0x3eed7f){return function(_0x199fcd){if(_0x199fcd){var _0x1b4ab7=typeof _0x3eed7f[_0xeddc('0x20')]===_0xeddc('0x21')&&typeof _0x3eed7f[_0xeddc('0x22')]===_0xeddc('0x21');var _0x449113=_0x199fcd[_0xeddc('0x23')];var _0x5539fa=_0x1b4ab7?0x0:_0x3eed7f['offset'];var _0x4751a6=_0x1b4ab7?_0x199fcd[_0xeddc('0x23')]:_0x3eed7f[_0xeddc('0x20')]+_0x3eed7f[_0xeddc('0x22')];var _0xa2d5cc;if(_0x4751a6>=_0x449113){_0x4751a6=_0x449113;_0xa2d5cc=0xc8;}else{_0xa2d5cc=0xce;}_0x556240[_0xeddc('0x1f')](_0xa2d5cc);return _0x556240[_0xeddc('0x24')](_0xeddc('0x25'),_0x5539fa+'-'+_0x4751a6+'/'+_0x449113)[_0xeddc('0x26')](_0x199fcd);}return null;};}function patchUpdates(_0x35e051){return function(_0xe6ca76){try{jsonpatch[_0xeddc('0x27')](_0xe6ca76,_0x35e051,!![]);}catch(_0x541de9){return BPromise[_0xeddc('0x28')](_0x541de9);}return _0xe6ca76[_0xeddc('0x29')]();};}function saveUpdates(_0x1d736b,_0x424143){return function(_0x5a7da9){if(_0x5a7da9){return _0x5a7da9['update'](_0x1d736b)[_0xeddc('0x2a')](function(_0x27a200){return _0x27a200;});}return null;};}function removeEntity(_0x2e3d26,_0x3c9230){return function(_0x359860){if(_0x359860){return _0x359860['destroy']()[_0xeddc('0x2a')](function(){_0x2e3d26[_0xeddc('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x8c3874,_0x22e906){return function(_0x1c2122){if(!_0x1c2122){_0x8c3874[_0xeddc('0x1e')](0x194);}return _0x1c2122;};}function handleError(_0xb20847,_0x10d0cc){_0x10d0cc=_0x10d0cc||0x1f4;return function(_0x343ead){logger[_0xeddc('0x2b')](_0x343ead[_0xeddc('0x2c')]);if(_0x343ead[_0xeddc('0x2d')]){delete _0x343ead[_0xeddc('0x2d')];}_0xb20847[_0xeddc('0x1f')](_0x10d0cc)[_0xeddc('0x2e')](_0x343ead);};}exports['index']=function(_0x4280f6,_0x1f6042){var _0x11aadb={},_0x4f041a={},_0x4539de={'count':0x0,'rows':[]};var _0x524fc6=_[_0xeddc('0x2f')](db['ChatInternalMessage'][_0xeddc('0x30')],function(_0x5d188e){return{'name':_0x5d188e['fieldName'],'type':_0x5d188e[_0xeddc('0x31')]['key']};});_0x4f041a['model']=_['map'](_0x524fc6,_0xeddc('0x2d'));_0x4f041a[_0xeddc('0x32')]=_[_0xeddc('0x33')](_0x4280f6[_0xeddc('0x32')]);_0x4f041a[_0xeddc('0x34')]=_[_0xeddc('0x35')](_0x4f041a[_0xeddc('0x36')],_0x4f041a[_0xeddc('0x32')]);_0x11aadb['attributes']=_[_0xeddc('0x35')](_0x4f041a[_0xeddc('0x36')],qs[_0xeddc('0x37')](_0x4280f6[_0xeddc('0x32')][_0xeddc('0x37')]));_0x11aadb[_0xeddc('0x38')]=_0x11aadb['attributes'][_0xeddc('0x39')]?_0x11aadb[_0xeddc('0x38')]:_0x4f041a['model'];if(!_0x4280f6[_0xeddc('0x32')][_0xeddc('0x3a')](_0xeddc('0x3b'))){_0x11aadb[_0xeddc('0x22')]=qs['limit'](_0x4280f6['query'][_0xeddc('0x22')]);_0x11aadb[_0xeddc('0x20')]=qs[_0xeddc('0x20')](_0x4280f6[_0xeddc('0x32')]['offset']);}_0x11aadb['order']=qs['sort'](_0x4280f6[_0xeddc('0x32')][_0xeddc('0x3c')]);_0x11aadb['where']=qs['filters'](_['pick'](_0x4280f6['query'],_0x4f041a[_0xeddc('0x34')]),_0x524fc6);if(_0x4280f6[_0xeddc('0x32')][_0xeddc('0x3d')]){_0x11aadb[_0xeddc('0x3e')]=_[_0xeddc('0x3f')](_0x11aadb[_0xeddc('0x3e')],{'$or':_[_0xeddc('0x2f')](_0x524fc6,function(_0x5ba125){if(_0x5ba125[_0xeddc('0x31')]!==_0xeddc('0x40')){var _0x2f1ef4={};_0x2f1ef4[_0x5ba125[_0xeddc('0x2d')]]={'$like':'%'+_0x4280f6['query'][_0xeddc('0x3d')]+'%'};return _0x2f1ef4;}})});}_0x11aadb=_[_0xeddc('0x3f')]({},_0x11aadb,_0x4280f6[_0xeddc('0x41')]);var _0x13cad7={'where':_0x11aadb[_0xeddc('0x3e')]};return db[_0xeddc('0x42')][_0xeddc('0x23')](_0x13cad7)[_0xeddc('0x2a')](function(_0x285d7d){_0x4539de['count']=_0x285d7d;if(_0x4280f6[_0xeddc('0x32')][_0xeddc('0x43')]){_0x11aadb['include']=[{'all':!![]}];}return db[_0xeddc('0x42')]['findAll'](_0x11aadb);})['then'](function(_0x442cb9){_0x4539de[_0xeddc('0x44')]=_0x442cb9;return _0x4539de;})[_0xeddc('0x2a')](respondWithFilteredResult(_0x1f6042,_0x11aadb))[_0xeddc('0x45')](handleError(_0x1f6042,null));};exports[_0xeddc('0x46')]=function(_0x3a5a44,_0x368e54){var _0x417d99={'raw':!![],'where':{'id':_0x3a5a44[_0xeddc('0x47')]['id']}},_0x368e87={};_0x368e87['model']=_[_0xeddc('0x33')](db['ChatInternalMessage'][_0xeddc('0x30')]);_0x368e87[_0xeddc('0x32')]=_['keys'](_0x3a5a44[_0xeddc('0x32')]);_0x368e87[_0xeddc('0x34')]=_[_0xeddc('0x35')](_0x368e87[_0xeddc('0x36')],_0x368e87[_0xeddc('0x32')]);_0x417d99[_0xeddc('0x38')]=_[_0xeddc('0x35')](_0x368e87[_0xeddc('0x36')],qs[_0xeddc('0x37')](_0x3a5a44[_0xeddc('0x32')]['fields']));_0x417d99[_0xeddc('0x38')]=_0x417d99[_0xeddc('0x38')][_0xeddc('0x39')]?_0x417d99[_0xeddc('0x38')]:_0x368e87[_0xeddc('0x36')];if(_0x3a5a44[_0xeddc('0x32')][_0xeddc('0x43')]){_0x417d99[_0xeddc('0x48')]=[{'all':!![]}];}_0x417d99=_[_0xeddc('0x3f')]({},_0x417d99,_0x3a5a44['options']);return db[_0xeddc('0x42')][_0xeddc('0x49')](_0x417d99)[_0xeddc('0x2a')](handleEntityNotFound(_0x368e54,null))[_0xeddc('0x2a')](respondWithResult(_0x368e54,null))[_0xeddc('0x45')](handleError(_0x368e54,null));};exports[_0xeddc('0x4a')]=function(_0x3d9e83,_0x5ac502){return db[_0xeddc('0x42')][_0xeddc('0x4a')](_0x3d9e83['body'],{})[_0xeddc('0x2a')](respondWithResult(_0x5ac502,0xc9))[_0xeddc('0x45')](handleError(_0x5ac502,null));};exports['update']=function(_0x51ca0f,_0xd23622){if(_0x51ca0f[_0xeddc('0x4b')]['id']){delete _0x51ca0f[_0xeddc('0x4b')]['id'];}return db['ChatInternalMessage'][_0xeddc('0x49')]({'where':{'id':_0x51ca0f[_0xeddc('0x47')]['id']}})[_0xeddc('0x2a')](handleEntityNotFound(_0xd23622,null))['then'](saveUpdates(_0x51ca0f['body'],null))[_0xeddc('0x2a')](respondWithResult(_0xd23622,null))[_0xeddc('0x45')](handleError(_0xd23622,null));};exports['destroy']=function(_0x315f8c,_0x546e86){return db[_0xeddc('0x42')][_0xeddc('0x49')]({'where':{'id':_0x315f8c['params']['id']}})['then'](handleEntityNotFound(_0x546e86,null))['then'](removeEntity(_0x546e86,null))['catch'](handleError(_0x546e86,null));};exports[_0xeddc('0x4c')]=function(_0x567c62,_0x998352){return db[_0xeddc('0x42')][_0xeddc('0x4c')]()[_0xeddc('0x2a')](respondWithResult(_0x998352,null))[_0xeddc('0x45')](handleError(_0x998352,null));};function wrapUser(_0x111267){return function(_0x226edf){var _0x772f8d=_0x111267[_0xeddc('0x4d')]({'plain':!![]});_0x772f8d[_0xeddc('0x4e')]=[];if(_0x226edf){_0x772f8d[_0xeddc('0x4f')]=_0x226edf[_0xeddc('0x50')];_0x772f8d['lastMessage']=_0x226edf;}else{_0x772f8d[_0xeddc('0x4f')]=moment(0x0)[_0xeddc('0x51')](_0xeddc('0x52'));_0x772f8d[_0xeddc('0x53')]={};}return _0x772f8d;};}exports[_0xeddc('0x54')]=function(_0x10d00b,_0xb7bef1,_0x66a1f4){var _0x356ce1=[];return db[_0xeddc('0x55')]['findAll']({'where':{'role':[_0xeddc('0x56'),_0xeddc('0x57'),'user']},'attributes':['id',_0xeddc('0x58'),_0xeddc('0x2d'),_0xeddc('0x59'),_0xeddc('0x5a'),_0xeddc('0x5b'),'online','lastLoginAt',_0xeddc('0x5c'),_0xeddc('0x5d')],'order':qs[_0xeddc('0x3c')](_0xeddc('0x5e')),'include':[{'model':db[_0xeddc('0x5f')],'as':_0xeddc('0x60'),'attributes':['id',_0xeddc('0x2d'),'type'],'through':{'attributes':[]}}]})[_0xeddc('0x2a')](function(_0x129b39){if(_0x129b39){var _0x205241=_0x10d00b[_0xeddc('0x61')][_0xeddc('0x4d')]({'plain':!![]});if(!_0x205241)throw new Error(_0xeddc('0x62'));if(_0x205241[_0xeddc('0x59')]===_0xeddc('0x61')){return db[_0xeddc('0x63')][_0xeddc('0x49')]({'where':{'name':_0xeddc('0x64'),'userProfileId':_0x205241['userProfileId']},'raw':!![]})[_0xeddc('0x2a')](function(_0x52e328){if(_0x52e328){if(_0x52e328[_0xeddc('0x65')]===0x0){return db[_0xeddc('0x66')][_0xeddc('0x67')]({'where':{'sectionId':_0x52e328['id']},'raw':!![]})[_0xeddc('0x2a')](function(_0x579b50){var _0x365522=[];if(_[_0xeddc('0x68')](_0x579b50)){_0x365522=_[_0xeddc('0x3d')](_0x129b39,function(_0x360342){if(_0x360342[_0xeddc('0x59')]!==_0xeddc('0x56')){return _0x360342;}});return _0x365522;}else{for(var _0x42e53b=0x0;_0x42e53b<_0x129b39[_0xeddc('0x39')];_0x42e53b++){var _0x2eb239=_0x129b39[_0x42e53b];if(_0x2eb239[_0xeddc('0x59')]===_0xeddc('0x56')){var _0x33931b=_[_0xeddc('0x49')](_0x579b50,function(_0x27809d){return _0x27809d[_0xeddc('0x69')]===_0x2eb239['id'];});if(_0x33931b)_0x365522['push'](_0x2eb239);}else{_0x365522[_0xeddc('0x6a')](_0x2eb239);}}return _0x365522;}});}else{return _0x129b39;}}else{var _0x237fde=_[_0xeddc('0x3d')](_0x129b39,function(_0x908689){if(_0x908689[_0xeddc('0x59')]!==_0xeddc('0x56')){return _0x908689;}});return _0x237fde;}});}else{return _0x129b39;}}})[_0xeddc('0x2a')](function(_0x16d75e){var _0x60a78a=[];if(_0x16d75e){_0x356ce1=_0x16d75e;for(var _0x3edc98=0x0;_0x3edc98<_0x16d75e[_0xeddc('0x39')];_0x3edc98+=0x1){_0x356ce1[_0x3edc98]['messages']=[];_0x60a78a[_0xeddc('0x6a')](db[_0xeddc('0x42')][_0xeddc('0x49')]({'where':{'FromId':[_0x10d00b['user']['id'],_0x16d75e[_0x3edc98]['id']],'ToId':[_0x10d00b[_0xeddc('0x61')]['id'],_0x16d75e[_0x3edc98]['id']],'ChatGroupId':null},'attributes':['id',_0xeddc('0x50'),_0xeddc('0x6b'),_0xeddc('0x6c'),_0xeddc('0x6d'),_0xeddc('0x4b')],'order':qs[_0xeddc('0x3c')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0xeddc('0x2a')](wrapUser(_0x16d75e[_0x3edc98])));}return BPromise['all'](_0x60a78a);}return[];})[_0xeddc('0x2a')](function(_0x4639b9){return{'rows':_0x4639b9,'count':_0x4639b9[_0xeddc('0x39')]};})['then'](respondWithResult(_0xb7bef1,null))['catch'](handleError(_0xb7bef1,null));};
\ No newline at end of file
index de95fc6..6868d7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x020b=['update','remove','emit','hasOwnProperty','events','../../mysqldb'];(function(_0x186b48,_0x55ad77){var _0x3eb738=function(_0x35c72d){while(--_0x35c72d){_0x186b48['push'](_0x186b48['shift']());}};_0x3eb738(++_0x55ad77);}(_0x020b,0x1d8));var _0xb020=function(_0x6f9689,_0x3e270a){_0x6f9689=_0x6f9689-0x0;var _0x918ac1=_0x020b[_0x6f9689];return _0x918ac1;};'use strict';var EventEmitter=require(_0xb020('0x0'));var ChatInternalMessage=require(_0xb020('0x1'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xb020('0x2'),'afterDestroy':_0xb020('0x3')};function emitEvent(_0x4980e0){return function(_0x391c73,_0x4f98fd,_0x3a2e9c){ChatInternalMessageEvents[_0xb020('0x4')](_0x4980e0+':'+_0x391c73['id'],_0x391c73);ChatInternalMessageEvents['emit'](_0x4980e0,_0x391c73);_0x3a2e9c(null);};}for(var e in events){if(events[_0xb020('0x5')](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x985d=['setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInternalMessage'];(function(_0x553def,_0x53d084){var _0x47c240=function(_0x6ed5a9){while(--_0x6ed5a9){_0x553def['push'](_0x553def['shift']());}};_0x47c240(++_0x53d084);}(_0x985d,0x10b));var _0xd985=function(_0x1d6167,_0x3c12d1){_0x1d6167=_0x1d6167-0x0;var _0x17ce6d=_0x985d[_0x1d6167];return _0x17ce6d;};'use strict';var EventEmitter=require(_0xd985('0x0'));var ChatInternalMessage=require(_0xd985('0x1'))['db'][_0xd985('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xd985('0x3')](0x0);var events={'afterCreate':_0xd985('0x4'),'afterUpdate':_0xd985('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4ac8e7){return function(_0x2b8504,_0xc7d13e,_0x2c516a){ChatInternalMessageEvents[_0xd985('0x6')](_0x4ac8e7+':'+_0x2b8504['id'],_0x2b8504);ChatInternalMessageEvents[_0xd985('0x6')](_0x4ac8e7,_0x2b8504);_0x2c516a(null);};}for(var e in events){if(events[_0xd985('0x7')](e)){var event=events[e];ChatInternalMessage[_0xd985('0x8')](e,emitEvent(event));}}module[_0xd985('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
index 98b957f..7e1bfa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa0a=['utf8mb4','utf8mb4_unicode_ci','lodash','util','moment','request-promise','path','../../config/environment','./chatInternalMessage.attributes','define','ChatInternalMessage','chat_internal_messages'];(function(_0x412e27,_0x20a978){var _0x53da42=function(_0x43cae5){while(--_0x43cae5){_0x412e27['push'](_0x412e27['shift']());}};_0x53da42(++_0x20a978);}(_0xfa0a,0x15e));var _0xafa0=function(_0x1fa3e2,_0x58020c){_0x1fa3e2=_0x1fa3e2-0x0;var _0x1261fc=_0xfa0a[_0x1fa3e2];return _0x1261fc;};'use strict';var _=require(_0xafa0('0x0'));var util=require(_0xafa0('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xafa0('0x2'));var BPromise=require('bluebird');var rp=require(_0xafa0('0x3'));var fs=require('fs');var path=require(_0xafa0('0x4'));var rimraf=require('rimraf');var config=require(_0xafa0('0x5'));var attributes=require(_0xafa0('0x6'));module['exports']=function(_0x11cc5c,_0x5653d9){return _0x11cc5c[_0xafa0('0x7')](_0xafa0('0x8'),attributes,{'tableName':_0xafa0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xafa0('0xa'),'collate':_0xafa0('0xb')});};
\ No newline at end of file
+var _0x2053=['lodash','../../config/logger','moment','bluebird','request-promise','../../config/environment','./chatInternalMessage.attributes','exports','ChatInternalMessage','utf8mb4','utf8mb4_unicode_ci'];(function(_0x46ee3c,_0x1c08f0){var _0x530a97=function(_0x194bba){while(--_0x194bba){_0x46ee3c['push'](_0x46ee3c['shift']());}};_0x530a97(++_0x1c08f0);}(_0x2053,0x113));var _0x3205=function(_0xe31006,_0x347e18){_0xe31006=_0xe31006-0x0;var _0x87f671=_0x2053[_0xe31006];return _0x87f671;};'use strict';var _=require(_0x3205('0x0'));var util=require('util');var logger=require(_0x3205('0x1'))('api');var moment=require(_0x3205('0x2'));var BPromise=require(_0x3205('0x3'));var rp=require(_0x3205('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3205('0x5'));var attributes=require(_0x3205('0x6'));module[_0x3205('0x7')]=function(_0x1adba1,_0x4292df){return _0x1adba1['define'](_0x3205('0x8'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3205('0x9'),'collate':_0x3205('0xa')});};
\ No newline at end of file
index eda6471..9fe67c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa70f=['ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','localhost','socket.io-emitter','./chatInternalMessage.socket','register','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x38b643,_0x14dc0d){var _0x23cf24=function(_0x39e013){while(--_0x39e013){_0x38b643['push'](_0x38b643['shift']());}};_0x23cf24(++_0x14dc0d);}(_0xa70f,0x1f4));var _0xfa70=function(_0x2ae73b,_0x384dd1){_0x2ae73b=_0x2ae73b-0x0;var _0x4c56e0=_0xa70f[_0x2ae73b];return _0x4c56e0;};'use strict';var _=require('lodash');var util=require(_0xfa70('0x0'));var moment=require(_0xfa70('0x1'));var BPromise=require(_0xfa70('0x2'));var rs=require(_0xfa70('0x3'));var fs=require('fs');var Redis=require(_0xfa70('0x4'));var db=require(_0xfa70('0x5'))['db'];var utils=require(_0xfa70('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xfa70('0x7'));var jayson=require(_0xfa70('0x8'));var client=jayson['client'][_0xfa70('0x9')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xfa70('0xa'),'port':0x18eb});var socket=require(_0xfa70('0xb'))(new Redis(config['redis']));require(_0xfa70('0xc'))[_0xfa70('0xd')](socket);function respondWithRpcPromise(_0x1c4743,_0x3b452a,_0x1e8d20){return new BPromise(function(_0x1814b4,_0x3606c7){return client['request'](_0x1c4743,_0x1e8d20)[_0xfa70('0xe')](function(_0x4b5644){logger[_0xfa70('0xf')](_0xfa70('0x10'),_0x3b452a,_0xfa70('0x11'));logger['debug'](_0xfa70('0x12'),_0x3b452a,'request\x20sent',JSON[_0xfa70('0x13')](_0x4b5644));if(_0x4b5644[_0xfa70('0x14')]){if(_0x4b5644[_0xfa70('0x14')]['code']===0x1f4){logger[_0xfa70('0x14')](_0xfa70('0x10'),_0x3b452a,_0x4b5644[_0xfa70('0x14')][_0xfa70('0x15')]);return _0x3606c7(_0x4b5644[_0xfa70('0x14')][_0xfa70('0x15')]);}logger['error'](_0xfa70('0x10'),_0x3b452a,_0x4b5644[_0xfa70('0x14')]['message']);return _0x1814b4(_0x4b5644[_0xfa70('0x14')][_0xfa70('0x15')]);}else{logger[_0xfa70('0xf')]('ChatInternalMessage,\x20%s,\x20%s',_0x3b452a,_0xfa70('0x11'));_0x1814b4(_0x4b5644[_0xfa70('0x16')][_0xfa70('0x15')]);}})[_0xfa70('0x17')](function(_0x407940){logger['error'](_0xfa70('0x10'),_0x3b452a,_0x407940);_0x3606c7(_0x407940);});});}
\ No newline at end of file
+var _0x00bb=['then','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','ChatInternalMessage,\x20%s,\x20%s','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x00bb,0x1d8));var _0xb00b=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x00bb[_0x4fc9e6];return _0x551d28;};'use strict';var _=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var moment=require(_0xb00b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb00b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb00b('0x4'))['db'];var utils=require(_0xb00b('0x5'));var logger=require('../../config/logger')(_0xb00b('0x6'));var config=require(_0xb00b('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xb00b('0x8')]=_[_0xb00b('0x9')](config[_0xb00b('0x8')],{'host':_0xb00b('0xa'),'port':0x18eb});var socket=require(_0xb00b('0xb'))(new Redis(config[_0xb00b('0x8')]));require('./chatInternalMessage.socket')['register'](socket);function respondWithRpcPromise(_0x5154d9,_0x1e9b7b,_0x5851d4){return new BPromise(function(_0x46a25c,_0x28d3cc){return client['request'](_0x5154d9,_0x5851d4)[_0xb00b('0xc')](function(_0x5a63ed){logger['info']('ChatInternalMessage,\x20%s,\x20%s',_0x1e9b7b,_0xb00b('0xd'));logger[_0xb00b('0xe')](_0xb00b('0xf'),_0x1e9b7b,_0xb00b('0xd'),JSON[_0xb00b('0x10')](_0x5a63ed));if(_0x5a63ed[_0xb00b('0x11')]){if(_0x5a63ed['error'][_0xb00b('0x12')]===0x1f4){logger[_0xb00b('0x11')]('ChatInternalMessage,\x20%s,\x20%s',_0x1e9b7b,_0x5a63ed[_0xb00b('0x11')][_0xb00b('0x13')]);return _0x28d3cc(_0x5a63ed['error']['message']);}logger[_0xb00b('0x11')]('ChatInternalMessage,\x20%s,\x20%s',_0x1e9b7b,_0x5a63ed['error'][_0xb00b('0x13')]);return _0x46a25c(_0x5a63ed[_0xb00b('0x11')][_0xb00b('0x13')]);}else{logger[_0xb00b('0x14')]('ChatInternalMessage,\x20%s,\x20%s',_0x1e9b7b,_0xb00b('0xd'));_0x46a25c(_0x5a63ed['result'][_0xb00b('0x13')]);}})['catch'](function(_0x25d7a0){logger['error'](_0xb00b('0x15'),_0x1e9b7b,_0x25d7a0);_0x28d3cc(_0x25d7a0);});});}
\ No newline at end of file
index cd5bfda..6f22609 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9b6=['length','./chatInternalMessage.events','save','register'];(function(_0x9cfe28,_0x1a335c){var _0x54a1d0=function(_0x46bc02){while(--_0x46bc02){_0x9cfe28['push'](_0x9cfe28['shift']());}};_0x54a1d0(++_0x1a335c);}(_0xa9b6,0x1d9));var _0x6a9b=function(_0x1561ef,_0x4e433b){_0x1561ef=_0x1561ef-0x0;var _0x2668aa=_0xa9b6[_0x1561ef];return _0x2668aa;};'use strict';var ChatInternalMessageEvents=require(_0x6a9b('0x0'));var events=[_0x6a9b('0x1'),'remove','update'];function createListener(_0x22fb0e,_0x5e5eb2){return function(_0x576b06){_0x5e5eb2['emit'](_0x22fb0e,_0x576b06);};}function removeListener(_0xb851f6,_0x1ef5b5){return function(){ChatInternalMessageEvents['removeListener'](_0xb851f6,_0x1ef5b5);};}exports[_0x6a9b('0x2')]=function(_0x46fa54){for(var _0x192b17=0x0,_0xa49665=events[_0x6a9b('0x3')];_0x192b17<_0xa49665;_0x192b17++){var _0x1e270f=events[_0x192b17];var _0x2d92ac=createListener('chatInternalMessage:'+_0x1e270f,_0x46fa54);ChatInternalMessageEvents['on'](_0x1e270f,_0x2d92ac);}};
\ No newline at end of file
+var _0x1bc1=['chatInternalMessage:','remove','update','emit','removeListener','register','length'];(function(_0x2b7973,_0x59dbe5){var _0xbbaf44=function(_0x5db455){while(--_0x5db455){_0x2b7973['push'](_0x2b7973['shift']());}};_0xbbaf44(++_0x59dbe5);}(_0x1bc1,0x1eb));var _0x11bc=function(_0x6ce469,_0x30fa03){_0x6ce469=_0x6ce469-0x0;var _0x1bc184=_0x1bc1[_0x6ce469];return _0x1bc184;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=['save',_0x11bc('0x0'),_0x11bc('0x1')];function createListener(_0x5dd034,_0x3e737b){return function(_0x1aa96f){_0x3e737b[_0x11bc('0x2')](_0x5dd034,_0x1aa96f);};}function removeListener(_0xab3477,_0x477f53){return function(){ChatInternalMessageEvents[_0x11bc('0x3')](_0xab3477,_0x477f53);};}exports[_0x11bc('0x4')]=function(_0x2d0bd2){for(var _0x426d50=0x0,_0x15d4dd=events[_0x11bc('0x5')];_0x426d50<_0x15d4dd;_0x426d50++){var _0x1884ef=events[_0x426d50];var _0x1b34fc=createListener(_0x11bc('0x6')+_0x1884ef,_0x2d0bd2);ChatInternalMessageEvents['on'](_0x1884ef,_0x1b34fc);}};
\ No newline at end of file
index 1842678..4ef03a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfc6=['destroy','exports','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','/describe','isAuthenticated','get','/:id','show','post','put','update'];(function(_0x20f291,_0x2fc7ad){var _0x1297f0=function(_0x503c05){while(--_0x503c05){_0x20f291['push'](_0x20f291['shift']());}};_0x1297f0(++_0x2fc7ad);}(_0xbfc6,0x162));var _0x6bfc=function(_0xd32f36,_0x4bfdd0){_0xd32f36=_0xd32f36-0x0;var _0x532739=_0xbfc6[_0xd32f36];return _0x532739;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6bfc('0x0'));var timeout=require('connect-timeout');var express=require(_0x6bfc('0x1'));var router=express[_0x6bfc('0x2')]();var fs_extra=require(_0x6bfc('0x3'));var auth=require(_0x6bfc('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6bfc('0x5'));var controller=require('./chatInternalMessage.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x6bfc('0x6'),auth[_0x6bfc('0x7')](),controller['describe']);router[_0x6bfc('0x8')]('/users',auth['isAuthenticated'](),controller['getUsers']);router[_0x6bfc('0x8')](_0x6bfc('0x9'),auth[_0x6bfc('0x7')](),controller[_0x6bfc('0xa')]);router[_0x6bfc('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x6bfc('0xc')]('/:id',controller[_0x6bfc('0xd')]);router['delete'](_0x6bfc('0x9'),auth[_0x6bfc('0x7')](),controller[_0x6bfc('0xe')]);module[_0x6bfc('0xf')]=router;
\ No newline at end of file
+var _0x860c=['describe','/users','isAuthenticated','getUsers','/:id','show','post','create','put','update','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInternalMessage.controller','get','index','/describe'];(function(_0x119d60,_0x3add49){var _0x2fbe11=function(_0x3e9e4b){while(--_0x3e9e4b){_0x119d60['push'](_0x119d60['shift']());}};_0x2fbe11(++_0x3add49);}(_0x860c,0x16f));var _0xc860=function(_0x287406,_0x37e793){_0x287406=_0x287406-0x0;var _0x440793=_0x860c[_0x287406];return _0x440793;};'use strict';var multer=require(_0xc860('0x0'));var util=require('util');var path=require(_0xc860('0x1'));var timeout=require('connect-timeout');var express=require(_0xc860('0x2'));var router=express[_0xc860('0x3')]();var fs_extra=require(_0xc860('0x4'));var auth=require(_0xc860('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc860('0x6'));var controller=require(_0xc860('0x7'));router[_0xc860('0x8')]('/',auth['isAuthenticated'](),controller[_0xc860('0x9')]);router['get'](_0xc860('0xa'),auth['isAuthenticated'](),controller[_0xc860('0xb')]);router[_0xc860('0x8')](_0xc860('0xc'),auth[_0xc860('0xd')](),controller[_0xc860('0xe')]);router[_0xc860('0x8')](_0xc860('0xf'),auth[_0xc860('0xd')](),controller[_0xc860('0x10')]);router[_0xc860('0x11')]('/',auth[_0xc860('0xd')](),controller[_0xc860('0x12')]);router[_0xc860('0x13')](_0xc860('0xf'),controller[_0xc860('0x14')]);router['delete'](_0xc860('0xf'),auth[_0xc860('0xd')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b5296b3..117c3fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc9b=['TEXT','BOOLEAN','out','DATE','sequelize','exports'];(function(_0x3605c1,_0x33e1df){var _0xd0b227=function(_0x4f136c){while(--_0x4f136c){_0x3605c1['push'](_0x3605c1['shift']());}};_0xd0b227(++_0x33e1df);}(_0xdc9b,0x70));var _0xbdc9=function(_0x2c7b9f,_0x2e54cd){_0x2c7b9f=_0x2c7b9f-0x0;var _0x5dc961=_0xdc9b[_0x2c7b9f];return _0x5dc961;};'use strict';var Sequelize=require(_0xbdc9('0x0'));module[_0xbdc9('0x1')]={'body':{'type':Sequelize[_0xbdc9('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xbdc9('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0xbdc9('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xbdc9('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0xbdc9('0x5')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xbdc9('0x2')]}};
\ No newline at end of file
+var _0x1131=['BOOLEAN','ENUM','out','DATE','STRING','exports'];(function(_0x16ea87,_0x378d8b){var _0x6e7b1c=function(_0x26306e){while(--_0x26306e){_0x16ea87['push'](_0x16ea87['shift']());}};_0x6e7b1c(++_0x378d8b);}(_0x1131,0x71));var _0x1113=function(_0xa31836,_0x20825f){_0xa31836=_0xa31836-0x0;var _0x5bc8e2=_0x1131[_0xa31836];return _0x5bc8e2;};'use strict';var Sequelize=require('sequelize');module[_0x1113('0x0')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x1113('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1113('0x2')]('in',_0x1113('0x3')),'defaultValue':_0x1113('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x1113('0x4')]},'providerName':{'type':Sequelize[_0x1113('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 730ab1e..b7f3e9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x47215c,_0x3c298a){var _0x2ac47c=function(_0x557dc7){while(--_0x557dc7){_0x47215c['push'](_0x47215c['shift']());}};_0x2ac47c(++_0x3c298a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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
+var _0x5d09=['query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','pick','where','VIRTUAL','filter','merge','options','includeAll','include','show','find','create','body','params','describe','chat-interactions','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','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','QueryTypes','contact','User','agent','email','interface','SIP/%s','channel','accept','EventManager','acceptmessage','parse','formData','reject','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','SELECT','fullname','internal','motionChannel','event','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','undefined','limit','count','offset','json','save','update','destroy','stack','name','send','index','map','ChatMessage','rawAttributes','type','model','keys'];(function(_0x575057,_0x14baf3){var _0x49dbc8=function(_0x23599a){while(--_0x23599a){_0x575057['push'](_0x575057['shift']());}};_0x49dbc8(++_0x14baf3);}(_0x5d09,0x1cc));var _0x95d0=function(_0x4489cd,_0x83d7ee){_0x4489cd=_0x4489cd-0x0;var _0x3d202c=_0x5d09[_0x4489cd];return _0x3d202c;};'use strict';var emlformat=require(_0x95d0('0x0'));var rimraf=require(_0x95d0('0x1'));var zipdir=require(_0x95d0('0x2'));var jsonpatch=require(_0x95d0('0x3'));var rp=require(_0x95d0('0x4'));var moment=require('moment');var BPromise=require(_0x95d0('0x5'));var Mustache=require(_0x95d0('0x6'));var util=require(_0x95d0('0x7'));var path=require(_0x95d0('0x8'));var sox=require('sox');var csv=require(_0x95d0('0x9'));var ejs=require(_0x95d0('0xa'));var fs=require('fs');var fs_extra=require(_0x95d0('0xb'));var _=require(_0x95d0('0xc'));var squel=require(_0x95d0('0xd'));var crypto=require(_0x95d0('0xe'));var jsforce=require(_0x95d0('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x95d0('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x95d0('0x10'));var authService=require(_0x95d0('0x11'));var qs=require(_0x95d0('0x12'));var as=require(_0x95d0('0x13'));var hardwareService=require(_0x95d0('0x14'));var logger=require(_0x95d0('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x95d0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x95d0('0x17'))['db'];config['redis']=_['defaults'](config[_0x95d0('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x95d0('0x19'))(new Redis(config[_0x95d0('0x18')]));require(_0x95d0('0x1a'))[_0x95d0('0x1b')](socket);var jayson=require(_0x95d0('0x1c'));var client=jayson[_0x95d0('0x1d')][_0x95d0('0x1e')]({'port':0x232c});var client9002=jayson[_0x95d0('0x1d')][_0x95d0('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x3e8c44,_0x582022,_0x4b2495,_0x4aa22e){return new BPromise(function(_0xc21127,_0x2a1ca8){var _0x5ce8b9=_0x4aa22e||client;return _0x5ce8b9[_0x95d0('0x1f')](_0x3e8c44,_0x4b2495)[_0x95d0('0x20')](function(_0x18fa11){logger[_0x95d0('0x21')](_0x95d0('0x22'),_0x582022,'request\x20sent');logger[_0x95d0('0x23')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x582022,_0x95d0('0x24'),JSON[_0x95d0('0x25')](_0x18fa11));if(_0x18fa11[_0x95d0('0x26')]){if(_0x18fa11[_0x95d0('0x26')][_0x95d0('0x27')]===0x1f4){logger[_0x95d0('0x26')]('ChatMessage,\x20%s,\x20%s',_0x582022,_0x18fa11[_0x95d0('0x26')][_0x95d0('0x28')]);return _0x2a1ca8(_0x18fa11[_0x95d0('0x26')][_0x95d0('0x28')]);}logger[_0x95d0('0x26')]('ChatMessage,\x20%s,\x20%s',_0x582022,_0x18fa11[_0x95d0('0x26')]['message']);return _0xc21127(_0x18fa11['error'][_0x95d0('0x28')]);}else{logger[_0x95d0('0x21')](_0x95d0('0x22'),_0x582022,_0x95d0('0x24'));_0xc21127(_0x18fa11[_0x95d0('0x29')]['message']);}})[_0x95d0('0x2a')](function(_0x1f180c){logger[_0x95d0('0x26')]('ChatMessage,\x20%s,\x20%s',_0x582022,_0x1f180c);_0x2a1ca8(_0x1f180c);});});}function respondWithStatusCode(_0x3a8a5b,_0x489d72){_0x489d72=_0x489d72||0xcc;return function(_0x132f9f){if(_0x132f9f){return _0x3a8a5b[_0x95d0('0x2b')](_0x489d72);}return _0x3a8a5b[_0x95d0('0x2c')](_0x489d72)[_0x95d0('0x2d')]();};}function respondWithResult(_0x3f4476,_0x9b66dc){_0x9b66dc=_0x9b66dc||0xc8;return function(_0x6317df){if(_0x6317df){return _0x3f4476['status'](_0x9b66dc)['json'](_0x6317df);}};}function respondWithFilteredResult(_0x1cbc8e,_0x2d876c){return function(_0x752967){if(_0x752967){var _0x3e9ae1=typeof _0x2d876c['offset']===_0x95d0('0x2e')&&typeof _0x2d876c[_0x95d0('0x2f')]==='undefined';var _0x145f64=_0x752967[_0x95d0('0x30')];var _0x5217d0=_0x3e9ae1?0x0:_0x2d876c['offset'];var _0x13460c=_0x3e9ae1?_0x752967[_0x95d0('0x30')]:_0x2d876c[_0x95d0('0x31')]+_0x2d876c['limit'];var _0xd6477a;if(_0x13460c>=_0x145f64){_0x13460c=_0x145f64;_0xd6477a=0xc8;}else{_0xd6477a=0xce;}_0x1cbc8e[_0x95d0('0x2c')](_0xd6477a);return _0x1cbc8e['set']('Content-Range',_0x5217d0+'-'+_0x13460c+'/'+_0x145f64)[_0x95d0('0x32')](_0x752967);}return null;};}function patchUpdates(_0x2961a9){return function(_0x2c01e3){try{jsonpatch['apply'](_0x2c01e3,_0x2961a9,!![]);}catch(_0x1307ea){return BPromise['reject'](_0x1307ea);}return _0x2c01e3[_0x95d0('0x33')]();};}function saveUpdates(_0x6994fa,_0x56ecbb){return function(_0x1c5ecd){if(_0x1c5ecd){return _0x1c5ecd[_0x95d0('0x34')](_0x6994fa)[_0x95d0('0x20')](function(_0x478467){return _0x478467;});}return null;};}function removeEntity(_0x1e7a1c,_0x280937){return function(_0x306ed5){if(_0x306ed5){return _0x306ed5[_0x95d0('0x35')]()[_0x95d0('0x20')](function(){_0x1e7a1c[_0x95d0('0x2c')](0xcc)[_0x95d0('0x2d')]();});}};}function handleEntityNotFound(_0x17ac17,_0x1ce7ae){return function(_0x2fd70f){if(!_0x2fd70f){_0x17ac17['sendStatus'](0x194);}return _0x2fd70f;};}function handleError(_0x4f1c1e,_0x10aeb6){_0x10aeb6=_0x10aeb6||0x1f4;return function(_0xfcaf4c){logger[_0x95d0('0x26')](_0xfcaf4c[_0x95d0('0x36')]);if(_0xfcaf4c[_0x95d0('0x37')]){delete _0xfcaf4c[_0x95d0('0x37')];}_0x4f1c1e[_0x95d0('0x2c')](_0x10aeb6)[_0x95d0('0x38')](_0xfcaf4c);};}exports[_0x95d0('0x39')]=function(_0x106e7a,_0xe82dc9){var _0x266222={},_0x4618ed={},_0x1e4fcc={'count':0x0,'rows':[]};var _0x42549a=_[_0x95d0('0x3a')](db[_0x95d0('0x3b')][_0x95d0('0x3c')],function(_0x4242bf){return{'name':_0x4242bf['fieldName'],'type':_0x4242bf[_0x95d0('0x3d')]['key']};});_0x4618ed[_0x95d0('0x3e')]=_['map'](_0x42549a,_0x95d0('0x37'));_0x4618ed['query']=_[_0x95d0('0x3f')](_0x106e7a[_0x95d0('0x40')]);_0x4618ed[_0x95d0('0x41')]=_[_0x95d0('0x42')](_0x4618ed[_0x95d0('0x3e')],_0x4618ed[_0x95d0('0x40')]);_0x266222[_0x95d0('0x43')]=_[_0x95d0('0x42')](_0x4618ed[_0x95d0('0x3e')],qs[_0x95d0('0x44')](_0x106e7a[_0x95d0('0x40')][_0x95d0('0x44')]));_0x266222[_0x95d0('0x43')]=_0x266222[_0x95d0('0x43')][_0x95d0('0x45')]?_0x266222[_0x95d0('0x43')]:_0x4618ed[_0x95d0('0x3e')];if(!_0x106e7a[_0x95d0('0x40')][_0x95d0('0x46')]('nolimit')){_0x266222[_0x95d0('0x2f')]=qs[_0x95d0('0x2f')](_0x106e7a[_0x95d0('0x40')][_0x95d0('0x2f')]);_0x266222[_0x95d0('0x31')]=qs[_0x95d0('0x31')](_0x106e7a[_0x95d0('0x40')][_0x95d0('0x31')]);}_0x266222['order']=qs['sort'](_0x106e7a[_0x95d0('0x40')][_0x95d0('0x47')]);_0x266222['where']=qs['filters'](_[_0x95d0('0x48')](_0x106e7a[_0x95d0('0x40')],_0x4618ed['filters']),_0x42549a);if(_0x106e7a[_0x95d0('0x40')]['filter']){_0x266222[_0x95d0('0x49')]=_['merge'](_0x266222['where'],{'$or':_[_0x95d0('0x3a')](_0x42549a,function(_0x296106){if(_0x296106[_0x95d0('0x3d')]!==_0x95d0('0x4a')){var _0x456266={};_0x456266[_0x296106['name']]={'$like':'%'+_0x106e7a[_0x95d0('0x40')][_0x95d0('0x4b')]+'%'};return _0x456266;}})});}_0x266222=_[_0x95d0('0x4c')]({},_0x266222,_0x106e7a[_0x95d0('0x4d')]);var _0x59bd47={'where':_0x266222['where']};return db[_0x95d0('0x3b')]['count'](_0x59bd47)[_0x95d0('0x20')](function(_0x50ab6b){_0x1e4fcc[_0x95d0('0x30')]=_0x50ab6b;if(_0x106e7a[_0x95d0('0x40')][_0x95d0('0x4e')]){_0x266222[_0x95d0('0x4f')]=[{'all':!![]}];}return db['ChatMessage']['findAll'](_0x266222);})[_0x95d0('0x20')](function(_0x4d0701){_0x1e4fcc['rows']=_0x4d0701;return _0x1e4fcc;})[_0x95d0('0x20')](respondWithFilteredResult(_0xe82dc9,_0x266222))[_0x95d0('0x2a')](handleError(_0xe82dc9,null));};exports[_0x95d0('0x50')]=function(_0x4ee09c,_0x276639){var _0x4d4ff0={'raw':!![],'where':{'id':_0x4ee09c['params']['id']}},_0x5e4bb3={};_0x5e4bb3[_0x95d0('0x3e')]=_[_0x95d0('0x3f')](db[_0x95d0('0x3b')]['rawAttributes']);_0x5e4bb3['query']=_[_0x95d0('0x3f')](_0x4ee09c[_0x95d0('0x40')]);_0x5e4bb3['filters']=_['intersection'](_0x5e4bb3[_0x95d0('0x3e')],_0x5e4bb3[_0x95d0('0x40')]);_0x4d4ff0[_0x95d0('0x43')]=_[_0x95d0('0x42')](_0x5e4bb3[_0x95d0('0x3e')],qs[_0x95d0('0x44')](_0x4ee09c[_0x95d0('0x40')]['fields']));_0x4d4ff0[_0x95d0('0x43')]=_0x4d4ff0[_0x95d0('0x43')][_0x95d0('0x45')]?_0x4d4ff0[_0x95d0('0x43')]:_0x5e4bb3[_0x95d0('0x3e')];if(_0x4ee09c[_0x95d0('0x40')]['includeAll']){_0x4d4ff0['include']=[{'all':!![]}];}_0x4d4ff0=_[_0x95d0('0x4c')]({},_0x4d4ff0,_0x4ee09c['options']);return db[_0x95d0('0x3b')][_0x95d0('0x51')](_0x4d4ff0)[_0x95d0('0x20')](handleEntityNotFound(_0x276639,null))[_0x95d0('0x20')](respondWithResult(_0x276639,null))[_0x95d0('0x2a')](handleError(_0x276639,null));};exports[_0x95d0('0x52')]=function(_0x30a1cf,_0x4633bb){return db[_0x95d0('0x3b')][_0x95d0('0x52')](_0x30a1cf[_0x95d0('0x53')],{})[_0x95d0('0x20')](respondWithResult(_0x4633bb,0xc9))[_0x95d0('0x2a')](handleError(_0x4633bb,null));};exports[_0x95d0('0x34')]=function(_0x14e4ca,_0x4a3c31){if(_0x14e4ca[_0x95d0('0x53')]['id']){delete _0x14e4ca['body']['id'];}return db['ChatMessage'][_0x95d0('0x51')]({'where':{'id':_0x14e4ca[_0x95d0('0x54')]['id']}})[_0x95d0('0x20')](handleEntityNotFound(_0x4a3c31,null))[_0x95d0('0x20')](saveUpdates(_0x14e4ca[_0x95d0('0x53')],null))['then'](respondWithResult(_0x4a3c31,null))[_0x95d0('0x2a')](handleError(_0x4a3c31,null));};exports[_0x95d0('0x35')]=function(_0x1c8e68,_0x1d960a){return db['ChatMessage'][_0x95d0('0x51')]({'where':{'id':_0x1c8e68['params']['id']}})[_0x95d0('0x20')](handleEntityNotFound(_0x1d960a,null))[_0x95d0('0x20')](removeEntity(_0x1d960a,null))[_0x95d0('0x2a')](handleError(_0x1d960a,null));};exports[_0x95d0('0x55')]=function(_0x3cda34,_0x17f0d3){return db[_0x95d0('0x3b')]['describe']()[_0x95d0('0x20')](respondWithResult(_0x17f0d3,null))[_0x95d0('0x2a')](handleError(_0x17f0d3,null));};var interaction_log=require(_0x95d0('0x15'))(_0x95d0('0x56'));exports['accept']=function(_0x420d21,_0x1586a0,_0x436275){var _0x499dc0={'agent':{},'channel':_0x95d0('0x57')};if(_0x420d21[_0x95d0('0x53')]['id']){delete _0x420d21[_0x95d0('0x53')]['id'];}_0x420d21[_0x95d0('0x53')][_0x95d0('0x58')]=!![];_0x420d21[_0x95d0('0x53')][_0x95d0('0x59')]=moment()[_0x95d0('0x5a')](_0x95d0('0x5b'));_0x420d21[_0x95d0('0x53')]['UserId']=_0x420d21['body'][_0x95d0('0x5c')]||_0x420d21['user']['id'];_0x499dc0['agent']['id']=_0x420d21['body'][_0x95d0('0x5c')];return db[_0x95d0('0x3b')][_0x95d0('0x51')]({'where':{'id':_0x420d21['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1586a0,null))[_0x95d0('0x20')](saveUpdates(_0x420d21[_0x95d0('0x53')],null))[_0x95d0('0x20')](function(_0x45f1de){if(_0x45f1de){_0x499dc0['message']=_0x45f1de[_0x95d0('0x5d')]({'plain':!![]});return db[_0x95d0('0x5e')][_0x95d0('0x51')]({'where':{'id':_0x45f1de[_0x95d0('0x5f')]}});}return null;})['then'](handleEntityNotFound(_0x1586a0,null))[_0x95d0('0x20')](function(_0x19236e){if(_0x19236e){return _0x19236e['update']({'UserId':_0x420d21['body'][_0x95d0('0x5c')],'read1stAt':_[_0x95d0('0x60')](_0x19236e[_0x95d0('0x61')])?moment()[_0x95d0('0x5a')](_0x95d0('0x5b')):undefined});}return null;})['then'](function(_0xedbbb2){if(_0xedbbb2){_0x499dc0[_0x95d0('0x62')]=_0xedbbb2[_0x95d0('0x5d')]({'plain':!![]});interaction_log[_0x95d0('0x21')](_0x95d0('0x63'),_0x420d21['user']['id'],_0x420d21[_0x95d0('0x64')]['name'],_0x420d21[_0x95d0('0x64')][_0x95d0('0x65')],_0x499dc0['interaction']['id'],_0x420d21[_0x95d0('0x53')]?JSON[_0x95d0('0x25')](_0x420d21['body']):_0x95d0('0x66'));return respondWithRpcPromise(_0x95d0('0x67'),'acceptMessage',_0x499dc0);}return null;})[_0x95d0('0x20')](function(_0x15bf52){var _0x3444ef=_0x95d0('0x68')+_0x15bf52['message'][_0x95d0('0x69')];return db[_0x95d0('0x6a')][_0x95d0('0x40')](_0x3444ef,{'type':db['Sequelize'][_0x95d0('0x6b')]['SELECT'],'raw':!![]})[_0x95d0('0x20')](function(_0x34071c){return _0x34071c;});})[_0x95d0('0x20')](function(_0x26507d){if(_0x26507d){_0x499dc0['message'][_0x95d0('0x6c')]=_0x26507d[0x0];if(!_0x420d21[_0x95d0('0x53')][_0x95d0('0x5c')])return;return db[_0x95d0('0x6d')][_0x95d0('0x51')]({'where':{'id':_0x420d21[_0x95d0('0x53')]['UserId'],'role':_0x95d0('0x6e')},'attributes':['id',_0x95d0('0x37'),'fullname',_0x95d0('0x6f'),'internal'],'raw':!![]});}return null;})[_0x95d0('0x20')](function(_0x28bec6){if(!_0x28bec6)return null;_0x499dc0[_0x95d0('0x28')][_0x95d0('0x6e')]=_0x28bec6;return _0x499dc0;})['then'](function(_0x25eb16){if(_0x25eb16){if(_0x420d21['body']['manual']){_0x499dc0[_0x95d0('0x28')][_0x95d0('0x70')]=util[_0x95d0('0x5a')](_0x95d0('0x71'),_0x420d21[_0x95d0('0x64')][_0x95d0('0x37')]);_0x499dc0[_0x95d0('0x28')][_0x95d0('0x72')]=_0x499dc0[_0x95d0('0x72')];_0x499dc0['message']['motionChannel']=_0x499dc0[_0x95d0('0x72')];_0x499dc0['message']['event']=_0x95d0('0x73');return respondWithRpcPromise(_0x95d0('0x74'),'EventManager',{'event':_0x95d0('0x75'),'message':_[_0x95d0('0x4c')](_0x499dc0[_0x95d0('0x28')],JSON[_0x95d0('0x76')](_0x499dc0['interaction'][_0x95d0('0x77')]))},client9002)['then'](function(){return _0x499dc0;});}return _0x499dc0;}return null;})[_0x95d0('0x20')](respondWithResult(_0x1586a0,null))[_0x95d0('0x2a')](handleError(_0x1586a0,null));};var interaction_log=require(_0x95d0('0x15'))(_0x95d0('0x56'));exports[_0x95d0('0x78')]=function(_0x1fa955,_0x5f057b,_0x159e83){var _0x31393c={'agent':{},'channel':'chat'};if(_0x1fa955['body']['id']){delete _0x1fa955[_0x95d0('0x53')]['id'];}_0x1fa955['body']['UserId']=_0x1fa955[_0x95d0('0x53')][_0x95d0('0x5c')]||_0x1fa955[_0x95d0('0x64')]['id'];_0x31393c[_0x95d0('0x6e')]['id']=_0x1fa955[_0x95d0('0x53')][_0x95d0('0x5c')];return db[_0x95d0('0x3b')][_0x95d0('0x51')]({'where':{'id':_0x1fa955[_0x95d0('0x54')]['id'],'UserId':null}})[_0x95d0('0x20')](handleEntityNotFound(_0x5f057b,null))[_0x95d0('0x20')](function(_0x2d62c4){if(_0x2d62c4){_0x31393c[_0x95d0('0x28')]=_0x2d62c4[_0x95d0('0x5d')]({'plain':!![]});return db['ChatInteraction'][_0x95d0('0x51')]({'where':{'id':_0x2d62c4[_0x95d0('0x5f')]}});}return null;})[_0x95d0('0x20')](handleEntityNotFound(_0x5f057b,null))[_0x95d0('0x20')](function(_0x1438e7){if(_0x1438e7){_0x31393c[_0x95d0('0x62')]=_0x1438e7[_0x95d0('0x5d')]({'plain':!![]});interaction_log[_0x95d0('0x21')](_0x95d0('0x79'),_0x1fa955[_0x95d0('0x64')]['id'],_0x1fa955[_0x95d0('0x64')][_0x95d0('0x37')],_0x1fa955['user'][_0x95d0('0x65')],_0x31393c[_0x95d0('0x62')]['id'],_0x1fa955[_0x95d0('0x53')]?JSON[_0x95d0('0x25')](_0x1fa955[_0x95d0('0x53')]):_0x95d0('0x66'));return respondWithRpcPromise(_0x95d0('0x7a'),_0x95d0('0x7b'),_0x31393c);}return null;})[_0x95d0('0x20')](function(_0x51624c){var _0x4b8ff2=_0x95d0('0x68')+_0x51624c[_0x95d0('0x28')][_0x95d0('0x69')];return db[_0x95d0('0x6a')][_0x95d0('0x40')](_0x4b8ff2,{'type':db[_0x95d0('0x7c')][_0x95d0('0x6b')][_0x95d0('0x7d')],'raw':!![]})[_0x95d0('0x20')](function(_0x4ce437){return _0x4ce437;});})[_0x95d0('0x20')](function(_0x444259){if(_0x444259){_0x31393c[_0x95d0('0x28')][_0x95d0('0x6c')]=_0x444259[0x0];if(!_0x1fa955[_0x95d0('0x53')][_0x95d0('0x5c')])return;return db[_0x95d0('0x6d')][_0x95d0('0x51')]({'where':{'id':_0x1fa955[_0x95d0('0x53')][_0x95d0('0x5c')],'role':_0x95d0('0x6e')},'attributes':['id',_0x95d0('0x37'),_0x95d0('0x7e'),_0x95d0('0x6f'),_0x95d0('0x7f')],'raw':!![]});}return null;})['then'](function(_0x871c64){if(!_0x871c64)return null;_0x31393c[_0x95d0('0x28')][_0x95d0('0x6e')]=_0x871c64;return _0x31393c;})['then'](function(_0x454f9c){if(_0x454f9c){_0x454f9c['message']['interface']=util[_0x95d0('0x5a')](_0x95d0('0x71'),_0x1fa955[_0x95d0('0x64')][_0x95d0('0x37')]);_0x454f9c[_0x95d0('0x28')][_0x95d0('0x72')]=_0x31393c[_0x95d0('0x72')];_0x454f9c[_0x95d0('0x28')][_0x95d0('0x80')]=_0x31393c[_0x95d0('0x72')];_0x454f9c[_0x95d0('0x28')][_0x95d0('0x81')]=_0x95d0('0x78');respondWithRpcPromise(_0x95d0('0x74'),_0x95d0('0x74'),{'event':_0x95d0('0x82'),'message':_[_0x95d0('0x4c')](_0x31393c[_0x95d0('0x28')],JSON[_0x95d0('0x76')](_0x31393c[_0x95d0('0x62')][_0x95d0('0x77')]))},client9002);return _0x31393c;}return null;})[_0x95d0('0x20')](respondWithResult(_0x5f057b,null))['catch'](handleError(_0x5f057b,null));};
\ No newline at end of file
index 9273b8c..64185d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x205a=['remove','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','update'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0x205a,0x96));var _0xa205=function(_0x2102c1,_0x15a0d7){_0x2102c1=_0x2102c1-0x0;var _0x4fcc88=_0x205a[_0x2102c1];return _0x4fcc88;};'use strict';var EventEmitter=require(_0xa205('0x0'));var ChatMessage=require(_0xa205('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xa205('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa205('0x3'),'afterDestroy':_0xa205('0x4')};function emitEvent(_0x4b23b4){return function(_0x465ab8,_0x20c53a,_0x31b342){ChatMessageEvents['emit'](_0x4b23b4+':'+_0x465ab8['id'],_0x465ab8);ChatMessageEvents['emit'](_0x4b23b4,_0x465ab8);_0x31b342(null);};}for(var e in events){if(events[_0xa205('0x5')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0xa205('0x6')]=ChatMessageEvents;
\ No newline at end of file
+var _0xabe7=['ChatMessage','setMaxListeners','save','update','emit','exports','events','../../mysqldb'];(function(_0x4d6972,_0x60f751){var _0x2c33fa=function(_0x3b82f9){while(--_0x3b82f9){_0x4d6972['push'](_0x4d6972['shift']());}};_0x2c33fa(++_0x60f751);}(_0xabe7,0x136));var _0x7abe=function(_0x54a5ed,_0xc571db){_0x54a5ed=_0x54a5ed-0x0;var _0x1c1bd7=_0xabe7[_0x54a5ed];return _0x1c1bd7;};'use strict';var EventEmitter=require(_0x7abe('0x0'));var ChatMessage=require(_0x7abe('0x1'))['db'][_0x7abe('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x7abe('0x3')](0x0);var events={'afterCreate':_0x7abe('0x4'),'afterUpdate':_0x7abe('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4bdd99){return function(_0x3f402a,_0x8c2019,_0xa9f149){ChatMessageEvents[_0x7abe('0x6')](_0x4bdd99+':'+_0x3f402a['id'],_0x3f402a);ChatMessageEvents['emit'](_0x4bdd99,_0x3f402a);_0xa9f149(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0x7abe('0x7')]=ChatMessageEvents;
\ No newline at end of file
index 791aeed..8cb2c47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7007=['toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./chatMessage.attributes','exports','FULLTEXT','models','direction'];(function(_0xb41cc4,_0x9805f4){var _0xc00085=function(_0x401ef1){while(--_0x401ef1){_0xb41cc4['push'](_0xb41cc4['shift']());}};_0xc00085(++_0x9805f4);}(_0x7007,0xa3));var _0x7700=function(_0x1c6e2d,_0x474b2f){_0x1c6e2d=_0x1c6e2d-0x0;var _0x4bb8e9=_0x7007[_0x1c6e2d];return _0x4bb8e9;};'use strict';var _=require(_0x7700('0x0'));var util=require('util');var logger=require(_0x7700('0x1'))(_0x7700('0x2'));var moment=require('moment');var BPromise=require(_0x7700('0x3'));var rp=require(_0x7700('0x4'));var fs=require('fs');var path=require(_0x7700('0x5'));var rimraf=require('rimraf');var config=require(_0x7700('0x6'));var attributes=require(_0x7700('0x7'));module[_0x7700('0x8')]=function(_0x368def,_0xe84b33){return _0x368def['define']('ChatMessage',attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':['body'],'type':_0x7700('0x9')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x35af85,_0x364f3e,_0x1ac7f4){var _0x3b9e39=_0x368def[_0x7700('0xa')];var _0x30981c=_0x35af85['get']({'plain':!![]});if(_0x30981c['direction']['toLowerCase']()==='in'||_0x30981c[_0x7700('0xb')][_0x7700('0xc')]()===_0x7700('0xd')&&!_0x30981c[_0x7700('0xe')]&&!_[_0x7700('0xf')](_0x30981c[_0x7700('0x10')])){_0x3b9e39[_0x7700('0x11')][_0x7700('0x12')]({'where':{'id':_0x30981c['ChatInteractionId']}})['then'](function(_0xdf478f){if(_0xdf478f){_0xdf478f[_0x7700('0x13')]({'lastMsgAt':_0x30981c[_0x7700('0x14')],'lastMsgDirection':_0x30981c[_0x7700('0xb')][_0x7700('0xc')]()});}})[_0x7700('0x15')](function(_0x15ab92){console[_0x7700('0x16')](_0x15ab92);});}_0x1ac7f4();}},'charset':_0x7700('0x17'),'collate':_0x7700('0x18')});};
\ No newline at end of file
+var _0xb1fb=['path','rimraf','../../config/environment','exports','define','ChatMessage','chat_messages','fti_chat_messages','FULLTEXT','models','get','direction','toLowerCase','secret','ChatInteraction','findOne','ChatInteractionId','then','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird'];(function(_0x4d8217,_0x43f574){var _0x129569=function(_0x567779){while(--_0x567779){_0x4d8217['push'](_0x4d8217['shift']());}};_0x129569(++_0x43f574);}(_0xb1fb,0xd4));var _0xbb1f=function(_0x4ad781,_0x3d1202){_0x4ad781=_0x4ad781-0x0;var _0x24ce49=_0xb1fb[_0x4ad781];return _0x24ce49;};'use strict';var _=require(_0xbb1f('0x0'));var util=require(_0xbb1f('0x1'));var logger=require(_0xbb1f('0x2'))('api');var moment=require('moment');var BPromise=require(_0xbb1f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb1f('0x4'));var rimraf=require(_0xbb1f('0x5'));var config=require(_0xbb1f('0x6'));var attributes=require('./chatMessage.attributes');module[_0xbb1f('0x7')]=function(_0x5c7170,_0x54165b){return _0x5c7170[_0xbb1f('0x8')](_0xbb1f('0x9'),attributes,{'tableName':_0xbb1f('0xa'),'paranoid':![],'indexes':[{'name':_0xbb1f('0xb'),'fields':['body'],'type':_0xbb1f('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x275eaa,_0x3fe55e,_0x304480){var _0x4ea164=_0x5c7170[_0xbb1f('0xd')];var _0x3e7795=_0x275eaa[_0xbb1f('0xe')]({'plain':!![]});if(_0x3e7795[_0xbb1f('0xf')][_0xbb1f('0x10')]()==='in'||_0x3e7795[_0xbb1f('0xf')][_0xbb1f('0x10')]()==='out'&&!_0x3e7795[_0xbb1f('0x11')]&&!_['isNil'](_0x3e7795['UserId'])){_0x4ea164[_0xbb1f('0x12')][_0xbb1f('0x13')]({'where':{'id':_0x3e7795[_0xbb1f('0x14')]}})[_0xbb1f('0x15')](function(_0x2d8e68){if(_0x2d8e68){_0x2d8e68['update']({'lastMsgAt':_0x3e7795[_0xbb1f('0x16')],'lastMsgDirection':_0x3e7795[_0xbb1f('0xf')][_0xbb1f('0x10')]()});}})[_0xbb1f('0x17')](function(_0x3d07f1){console[_0xbb1f('0x18')](_0x3d07f1);});}_0x304480();}},'charset':_0xbb1f('0x19'),'collate':_0xbb1f('0x1a')});};
\ No newline at end of file
index 90921db..5c95ce9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf549=['./chatMessage.socket','request','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatMessage','ChatMessage','create','body','options','raw','then','debug','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x1eff96,_0x58701c){var _0x34cac3=function(_0x2a8d4c){while(--_0x2a8d4c){_0x1eff96['push'](_0x1eff96['shift']());}};_0x34cac3(++_0x58701c);}(_0xf549,0x1ac));var _0x9f54=function(_0x310d8d,_0x3e2eb4){_0x310d8d=_0x310d8d-0x0;var _0x142f6b=_0xf549[_0x310d8d];return _0x142f6b;};'use strict';var _=require(_0x9f54('0x0'));var util=require(_0x9f54('0x1'));var moment=require('moment');var BPromise=require(_0x9f54('0x2'));var rs=require(_0x9f54('0x3'));var fs=require('fs');var Redis=require(_0x9f54('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9f54('0x5'));var logger=require('../../config/logger')(_0x9f54('0x6'));var config=require(_0x9f54('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9f54('0x8')][_0x9f54('0x9')]({'port':0x232a});config[_0x9f54('0xa')]=_[_0x9f54('0xb')](config[_0x9f54('0xa')],{'host':_0x9f54('0xc'),'port':0x18eb});var socket=require(_0x9f54('0xd'))(new Redis(config['redis']));require(_0x9f54('0xe'))['register'](socket);function respondWithRpcPromise(_0x2074f5,_0x3e08ab,_0x5da62a){return new BPromise(function(_0x391d71,_0xb181ed){return client[_0x9f54('0xf')](_0x2074f5,_0x5da62a)['then'](function(_0x128da0){logger[_0x9f54('0x10')](_0x9f54('0x11'),_0x3e08ab,_0x9f54('0x12'));logger['debug'](_0x9f54('0x13'),_0x3e08ab,_0x9f54('0x12'),JSON[_0x9f54('0x14')](_0x128da0));if(_0x128da0[_0x9f54('0x15')]){if(_0x128da0[_0x9f54('0x15')][_0x9f54('0x16')]===0x1f4){logger[_0x9f54('0x15')](_0x9f54('0x11'),_0x3e08ab,_0x128da0[_0x9f54('0x15')][_0x9f54('0x17')]);return _0xb181ed(_0x128da0[_0x9f54('0x15')][_0x9f54('0x17')]);}logger['error'](_0x9f54('0x11'),_0x3e08ab,_0x128da0[_0x9f54('0x15')][_0x9f54('0x17')]);return _0x391d71(_0x128da0[_0x9f54('0x15')]['message']);}else{logger[_0x9f54('0x10')]('ChatMessage,\x20%s,\x20%s',_0x3e08ab,_0x9f54('0x12'));_0x391d71(_0x128da0[_0x9f54('0x18')][_0x9f54('0x17')]);}})[_0x9f54('0x19')](function(_0x3220d8){logger[_0x9f54('0x15')](_0x9f54('0x11'),_0x3e08ab,_0x3220d8);_0xb181ed(_0x3220d8);});});}exports[_0x9f54('0x1a')]=function(_0x4c16e9){var _0x3075f9=this;return new Promise(function(_0x582b57,_0xc8fc8d){return db[_0x9f54('0x1b')][_0x9f54('0x1c')](_0x4c16e9[_0x9f54('0x1d')],{'raw':_0x4c16e9[_0x9f54('0x1e')]?_0x4c16e9[_0x9f54('0x1e')][_0x9f54('0x1f')]===undefined?!![]:![]:!![]})[_0x9f54('0x20')](function(_0x20bcb6){logger[_0x9f54('0x10')]('CreateChatMessage',_0x4c16e9);logger[_0x9f54('0x21')](_0x9f54('0x1a'),_0x4c16e9,JSON[_0x9f54('0x14')](_0x20bcb6));_0x582b57(_0x20bcb6);})[_0x9f54('0x19')](function(_0x331adc){logger[_0x9f54('0x15')](_0x9f54('0x1a'),_0x331adc[_0x9f54('0x17')],_0x4c16e9);_0xc8fc8d(_0x3075f9[_0x9f54('0x15')](0x1f4,_0x331adc[_0x9f54('0x17')]));});});};
\ No newline at end of file
+var _0x5aa0=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','localhost','socket.io-emitter','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ChatMessage','create','options','raw','CreateChatMessage','stringify','lodash'];(function(_0x2170e3,_0x39d8c4){var _0x4b1363=function(_0x1dd4c1){while(--_0x1dd4c1){_0x2170e3['push'](_0x2170e3['shift']());}};_0x4b1363(++_0x39d8c4);}(_0x5aa0,0x135));var _0x05aa=function(_0x15d8e3,_0x12af15){_0x15d8e3=_0x15d8e3-0x0;var _0x2e3149=_0x5aa0[_0x15d8e3];return _0x2e3149;};'use strict';var _=require(_0x05aa('0x0'));var util=require(_0x05aa('0x1'));var moment=require(_0x05aa('0x2'));var BPromise=require(_0x05aa('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x05aa('0x4'));var db=require(_0x05aa('0x5'))['db'];var utils=require(_0x05aa('0x6'));var logger=require(_0x05aa('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x05aa('0x8')][_0x05aa('0x9')]({'port':0x232a});config[_0x05aa('0xa')]=_['defaults'](config['redis'],{'host':_0x05aa('0xb'),'port':0x18eb});var socket=require(_0x05aa('0xc'))(new Redis(config[_0x05aa('0xa')]));require('./chatMessage.socket')[_0x05aa('0xd')](socket);function respondWithRpcPromise(_0x5dc4c0,_0xca7ce4,_0x1dfbe3){return new BPromise(function(_0x70a47f,_0xe973af){return client[_0x05aa('0xe')](_0x5dc4c0,_0x1dfbe3)[_0x05aa('0xf')](function(_0x3a4867){logger[_0x05aa('0x10')](_0x05aa('0x11'),_0xca7ce4,_0x05aa('0x12'));logger['debug'](_0x05aa('0x13'),_0xca7ce4,_0x05aa('0x12'),JSON['stringify'](_0x3a4867));if(_0x3a4867['error']){if(_0x3a4867[_0x05aa('0x14')][_0x05aa('0x15')]===0x1f4){logger[_0x05aa('0x14')](_0x05aa('0x11'),_0xca7ce4,_0x3a4867[_0x05aa('0x14')][_0x05aa('0x16')]);return _0xe973af(_0x3a4867[_0x05aa('0x14')][_0x05aa('0x16')]);}logger['error']('ChatMessage,\x20%s,\x20%s',_0xca7ce4,_0x3a4867['error'][_0x05aa('0x16')]);return _0x70a47f(_0x3a4867['error'][_0x05aa('0x16')]);}else{logger['info']('ChatMessage,\x20%s,\x20%s',_0xca7ce4,_0x05aa('0x12'));_0x70a47f(_0x3a4867[_0x05aa('0x17')]['message']);}})[_0x05aa('0x18')](function(_0x2c1929){logger[_0x05aa('0x14')](_0x05aa('0x11'),_0xca7ce4,_0x2c1929);_0xe973af(_0x2c1929);});});}exports['CreateChatMessage']=function(_0x453636){var _0x2f3604=this;return new Promise(function(_0x55ed29,_0x1fe4d5){return db[_0x05aa('0x19')][_0x05aa('0x1a')](_0x453636['body'],{'raw':_0x453636[_0x05aa('0x1b')]?_0x453636[_0x05aa('0x1b')][_0x05aa('0x1c')]===undefined?!![]:![]:!![]})[_0x05aa('0xf')](function(_0x5d4060){logger[_0x05aa('0x10')](_0x05aa('0x1d'),_0x453636);logger['debug']('CreateChatMessage',_0x453636,JSON[_0x05aa('0x1e')](_0x5d4060));_0x55ed29(_0x5d4060);})[_0x05aa('0x18')](function(_0x5097d9){logger[_0x05aa('0x14')](_0x05aa('0x1d'),_0x5097d9[_0x05aa('0x16')],_0x453636);_0x1fe4d5(_0x2f3604[_0x05aa('0x14')](0x1f4,_0x5097d9[_0x05aa('0x16')]));});});};
\ No newline at end of file
index 93d9bc3..8eb33d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd87=['./chatMessage.events','save','remove','update','emit','removeListener','length','chatMessage:'];(function(_0x409353,_0xe9f04d){var _0x4f4b59=function(_0x64b587){while(--_0x64b587){_0x409353['push'](_0x409353['shift']());}};_0x4f4b59(++_0xe9f04d);}(_0xfd87,0x80));var _0x7fd8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd87[_0x3dd15e];return _0x231fd0;};'use strict';var ChatMessageEvents=require(_0x7fd8('0x0'));var events=[_0x7fd8('0x1'),_0x7fd8('0x2'),_0x7fd8('0x3')];function createListener(_0x11b128,_0x15d25f){return function(_0x2631d9){_0x15d25f[_0x7fd8('0x4')](_0x11b128,_0x2631d9);};}function removeListener(_0x4429f2,_0x43b442){return function(){ChatMessageEvents[_0x7fd8('0x5')](_0x4429f2,_0x43b442);};}exports['register']=function(_0x1395b6){for(var _0x10a778=0x0,_0x55681d=events[_0x7fd8('0x6')];_0x10a778<_0x55681d;_0x10a778++){var _0x6eaf96=events[_0x10a778];var _0x2e2d74=createListener(_0x7fd8('0x7')+_0x6eaf96,_0x1395b6);ChatMessageEvents['on'](_0x6eaf96,_0x2e2d74);}};
\ No newline at end of file
+var _0xf3be=['chatMessage:','./chatMessage.events','save','remove','update','removeListener','register','length'];(function(_0x5d30b4,_0x199248){var _0x1acfb8=function(_0x3544b2){while(--_0x3544b2){_0x5d30b4['push'](_0x5d30b4['shift']());}};_0x1acfb8(++_0x199248);}(_0xf3be,0x1e1));var _0xef3b=function(_0x2a7fe9,_0x345d6a){_0x2a7fe9=_0x2a7fe9-0x0;var _0xb44ceb=_0xf3be[_0x2a7fe9];return _0xb44ceb;};'use strict';var ChatMessageEvents=require(_0xef3b('0x0'));var events=[_0xef3b('0x1'),_0xef3b('0x2'),_0xef3b('0x3')];function createListener(_0x4d8b04,_0x373397){return function(_0x4ea3cf){_0x373397['emit'](_0x4d8b04,_0x4ea3cf);};}function removeListener(_0x55f249,_0x4bfc98){return function(){ChatMessageEvents[_0xef3b('0x4')](_0x55f249,_0x4bfc98);};}exports[_0xef3b('0x5')]=function(_0x48f499){for(var _0x3dfcc2=0x0,_0x3f7873=events[_0xef3b('0x6')];_0x3dfcc2<_0x3f7873;_0x3dfcc2++){var _0x19191a=events[_0x3dfcc2];var _0x47069a=createListener(_0xef3b('0x7')+_0x19191a,_0x48f499);ChatMessageEvents['on'](_0x19191a,_0x47069a);}};
\ No newline at end of file
index 4fe1e98..6fa7aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa32f=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','post','tracked','chatmessage:create','put','update','/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service'];(function(_0x2d5fc4,_0x11a2b5){var _0x1f6d23=function(_0x559ef2){while(--_0x559ef2){_0x2d5fc4['push'](_0x2d5fc4['shift']());}};_0x1f6d23(++_0x11a2b5);}(_0xa32f,0x126));var _0xfa32=function(_0x19ef9c,_0x1965d6){_0x19ef9c=_0x19ef9c-0x0;var _0x1fa6df=_0xa32f[_0x19ef9c];return _0x1fa6df;};'use strict';var multer=require(_0xfa32('0x0'));var util=require(_0xfa32('0x1'));var path=require(_0xfa32('0x2'));var timeout=require(_0xfa32('0x3'));var express=require(_0xfa32('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xfa32('0x5'));var interaction=require(_0xfa32('0x6'));var config=require(_0xfa32('0x7'));var controller=require('./chatMessage.controller');router[_0xfa32('0x8')]('/',auth[_0xfa32('0x9')](),controller[_0xfa32('0xa')]);router[_0xfa32('0x8')](_0xfa32('0xb'),auth[_0xfa32('0x9')](),controller[_0xfa32('0xc')]);router[_0xfa32('0x8')](_0xfa32('0xd'),auth[_0xfa32('0x9')](),controller['show']);router[_0xfa32('0xe')]('/',auth[_0xfa32('0x9')](),interaction[_0xfa32('0xf')]('chat',_0xfa32('0x10')),controller['create']);router[_0xfa32('0x11')](_0xfa32('0xd'),controller[_0xfa32('0x12')]);router[_0xfa32('0x11')](_0xfa32('0x13'),auth[_0xfa32('0x9')](),controller[_0xfa32('0x14')]);router[_0xfa32('0x11')](_0xfa32('0x15'),auth['isAuthenticated'](),controller['reject']);router[_0xfa32('0x16')](_0xfa32('0xd'),auth[_0xfa32('0x9')](),controller[_0xfa32('0x17')]);module[_0xfa32('0x18')]=router;
\ No newline at end of file
+var _0x30a5=['./chatMessage.controller','get','isAuthenticated','describe','post','chat','chatmessage:create','create','put','/:id','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x2079b2,_0x47c843){var _0x3f1e20=function(_0x267d1e){while(--_0x267d1e){_0x2079b2['push'](_0x2079b2['shift']());}};_0x3f1e20(++_0x47c843);}(_0x30a5,0x1dc));var _0x530a=function(_0x3a7ab8,_0x35dbf3){_0x3a7ab8=_0x3a7ab8-0x0;var _0x2734fa=_0x30a5[_0x3a7ab8];return _0x2734fa;};'use strict';var multer=require(_0x530a('0x0'));var util=require(_0x530a('0x1'));var path=require(_0x530a('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x530a('0x3')]();var fs_extra=require(_0x530a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x530a('0x5'));var config=require(_0x530a('0x6'));var controller=require(_0x530a('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x530a('0x8')]('/describe',auth[_0x530a('0x9')](),controller[_0x530a('0xa')]);router[_0x530a('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x530a('0xb')]('/',auth[_0x530a('0x9')](),interaction['tracked'](_0x530a('0xc'),_0x530a('0xd')),controller[_0x530a('0xe')]);router[_0x530a('0xf')](_0x530a('0x10'),controller['update']);router['put'](_0x530a('0x11'),auth['isAuthenticated'](),controller['accept']);router[_0x530a('0xf')](_0x530a('0x12'),auth[_0x530a('0x9')](),controller[_0x530a('0x13')]);router[_0x530a('0x14')](_0x530a('0x10'),auth[_0x530a('0x9')](),controller[_0x530a('0x15')]);module[_0x530a('0x16')]=router;
\ No newline at end of file
index 3aee8a3..fa0879d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9cd=['TEXT','medium','sequelize','exports'];(function(_0x1c388e,_0x31f2de){var _0x4e2966=function(_0x21688c){while(--_0x21688c){_0x1c388e['push'](_0x1c388e['shift']());}};_0x4e2966(++_0x31f2de);}(_0xc9cd,0x17e));var _0xdc9c=function(_0x4f84c3,_0x6d094d){_0x4f84c3=_0x4f84c3-0x0;var _0x460f9f=_0xc9cd[_0x4f84c3];return _0x460f9f;};'use strict';var Sequelize=require(_0xdc9c('0x0'));module[_0xdc9c('0x1')]={'body':{'type':Sequelize[_0xdc9c('0x2')](_0xdc9c('0x3')),'allowNull':![]}};
\ No newline at end of file
+var _0x6ae7=['exports','TEXT','medium'];(function(_0x490d75,_0x32d93f){var _0x3ec19d=function(_0x5f31fa){while(--_0x5f31fa){_0x490d75['push'](_0x490d75['shift']());}};_0x3ec19d(++_0x32d93f);}(_0x6ae7,0x69));var _0x76ae=function(_0x7d6b44,_0x3befe7){_0x7d6b44=_0x7d6b44-0x0;var _0x5a2093=_0x6ae7[_0x7d6b44];return _0x5a2093;};'use strict';var Sequelize=require('sequelize');module[_0x76ae('0x0')]={'body':{'type':Sequelize[_0x76ae('0x1')](_0x76ae('0x2')),'allowNull':![]}};
\ No newline at end of file
index 95bd9e6..c2a6c5a 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(_0x3b5250,_0x7a0b2c){var _0xc844a1=function(_0x2fbc98){while(--_0x2fbc98){_0x3b5250['push'](_0x3b5250['shift']());}};_0xc844a1(++_0x7a0b2c);}(_0x7a54,0x106));var _0x47a5=function(_0x546340,_0x2a5e58){_0x546340=_0x546340-0x0;var _0x2cdf4c=_0x7a54[_0x546340];return _0x2cdf4c;};'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(_0x3554db,_0x320c81){var _0x1b4fdb=function(_0x5ad32c){while(--_0x5ad32c){_0x3554db['push'](_0x3554db['shift']());}};_0x1b4fdb(++_0x320c81);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'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 2d2defb..372fa58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x194c=['./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x194c,0xc9));var _0xc194=function(_0x39e98e,_0x42d310){_0x39e98e=_0x39e98e-0x0;var _0x1bf2e7=_0x194c[_0x39e98e];return _0x1bf2e7;};'use strict';var _=require('lodash');var util=require(_0xc194('0x0'));var logger=require(_0xc194('0x1'))(_0xc194('0x2'));var moment=require(_0xc194('0x3'));var BPromise=require(_0xc194('0x4'));var rp=require(_0xc194('0x5'));var fs=require('fs');var path=require(_0xc194('0x6'));var rimraf=require(_0xc194('0x7'));var config=require(_0xc194('0x8'));var attributes=require(_0xc194('0x9'));module[_0xc194('0xa')]=function(_0x4818e9,_0x498b37){return _0x4818e9[_0xc194('0xb')](_0xc194('0xc'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xc194('0xd')});};
\ No newline at end of file
+var _0x45d7=['./chatOfflineMessage.attributes','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment'];(function(_0x2c14a1,_0x3f7b64){var _0x1e70c7=function(_0xf535b9){while(--_0xf535b9){_0x2c14a1['push'](_0x2c14a1['shift']());}};_0x1e70c7(++_0x3f7b64);}(_0x45d7,0x94));var _0x745d=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x45d7[_0x2b4411];return _0x8e41ef;};'use strict';var _=require(_0x745d('0x0'));var util=require(_0x745d('0x1'));var logger=require(_0x745d('0x2'))(_0x745d('0x3'));var moment=require('moment');var BPromise=require(_0x745d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x745d('0x5'));var rimraf=require(_0x745d('0x6'));var config=require(_0x745d('0x7'));var attributes=require(_0x745d('0x8'));module['exports']=function(_0x527eb7,_0x18f320){return _0x527eb7['define'](_0x745d('0x9'),attributes,{'tableName':_0x745d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x745d('0xb'),'collate':_0x745d('0xc')});};
\ No newline at end of file
index 1bd04f6..e653da1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5594=['message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3287a6,_0x35e598){var _0x9c6449=function(_0x407e41){while(--_0x407e41){_0x3287a6['push'](_0x3287a6['shift']());}};_0x9c6449(++_0x35e598);}(_0x5594,0x173));var _0x4559=function(_0x4f65ac,_0x3a582d){_0x4f65ac=_0x4f65ac-0x0;var _0x341fae=_0x5594[_0x4f65ac];return _0x341fae;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4559('0x0'));var BPromise=require(_0x4559('0x1'));var rs=require(_0x4559('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4559('0x3'))['db'];var utils=require(_0x4559('0x4'));var logger=require(_0x4559('0x5'))(_0x4559('0x6'));var config=require(_0x4559('0x7'));var jayson=require(_0x4559('0x8'));var client=jayson[_0x4559('0x9')][_0x4559('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50e06e,_0x370a4e,_0x1aaa44){return new BPromise(function(_0x6ef555,_0x3e618b){return client['request'](_0x50e06e,_0x1aaa44)[_0x4559('0xb')](function(_0xa61f5e){logger[_0x4559('0xc')](_0x4559('0xd'),_0x370a4e,_0x4559('0xe'));logger[_0x4559('0xf')](_0x4559('0x10'),_0x370a4e,_0x4559('0xe'),JSON[_0x4559('0x11')](_0xa61f5e));if(_0xa61f5e[_0x4559('0x12')]){if(_0xa61f5e['error'][_0x4559('0x13')]===0x1f4){logger[_0x4559('0x12')](_0x4559('0xd'),_0x370a4e,_0xa61f5e[_0x4559('0x12')][_0x4559('0x14')]);return _0x3e618b(_0xa61f5e[_0x4559('0x12')][_0x4559('0x14')]);}logger[_0x4559('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x370a4e,_0xa61f5e['error'][_0x4559('0x14')]);return _0x6ef555(_0xa61f5e[_0x4559('0x12')][_0x4559('0x14')]);}else{logger[_0x4559('0xc')](_0x4559('0xd'),_0x370a4e,'request\x20sent');_0x6ef555(_0xa61f5e[_0x4559('0x15')][_0x4559('0x14')]);}})[_0x4559('0x16')](function(_0x24dd3e){logger[_0x4559('0x12')](_0x4559('0xd'),_0x370a4e,_0x24dd3e);_0x3e618b(_0x24dd3e);});});}
\ No newline at end of file
+var _0x4ab1=['util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error','code','message','lodash'];(function(_0x1443be,_0x31b17d){var _0x38823d=function(_0x2e57d7){while(--_0x2e57d7){_0x1443be['push'](_0x1443be['shift']());}};_0x38823d(++_0x31b17d);}(_0x4ab1,0x6d));var _0x14ab=function(_0x1ea691,_0x370196){_0x1ea691=_0x1ea691-0x0;var _0x5d479f=_0x4ab1[_0x1ea691];return _0x5d479f;};'use strict';var _=require(_0x14ab('0x0'));var util=require(_0x14ab('0x1'));var moment=require('moment');var BPromise=require(_0x14ab('0x2'));var rs=require(_0x14ab('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x14ab('0x4'))['db'];var utils=require(_0x14ab('0x5'));var logger=require(_0x14ab('0x6'))(_0x14ab('0x7'));var config=require(_0x14ab('0x8'));var jayson=require(_0x14ab('0x9'));var client=jayson[_0x14ab('0xa')][_0x14ab('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1120cd,_0x16a13c,_0x4c496d){return new BPromise(function(_0x208d32,_0x4a5b6f){return client[_0x14ab('0xc')](_0x1120cd,_0x4c496d)[_0x14ab('0xd')](function(_0x418923){logger[_0x14ab('0xe')](_0x14ab('0xf'),_0x16a13c,_0x14ab('0x10'));logger[_0x14ab('0x11')](_0x14ab('0x12'),_0x16a13c,_0x14ab('0x10'),JSON['stringify'](_0x418923));if(_0x418923[_0x14ab('0x13')]){if(_0x418923['error'][_0x14ab('0x14')]===0x1f4){logger['error'](_0x14ab('0xf'),_0x16a13c,_0x418923[_0x14ab('0x13')][_0x14ab('0x15')]);return _0x4a5b6f(_0x418923[_0x14ab('0x13')][_0x14ab('0x15')]);}logger[_0x14ab('0x13')](_0x14ab('0xf'),_0x16a13c,_0x418923[_0x14ab('0x13')][_0x14ab('0x15')]);return _0x208d32(_0x418923[_0x14ab('0x13')][_0x14ab('0x15')]);}else{logger[_0x14ab('0xe')](_0x14ab('0xf'),_0x16a13c,_0x14ab('0x10'));_0x208d32(_0x418923['result'][_0x14ab('0x15')]);}})['catch'](function(_0x564e0e){logger[_0x14ab('0x13')](_0x14ab('0xf'),_0x16a13c,_0x564e0e);_0x4a5b6f(_0x564e0e);});});}
\ No newline at end of file
index 900737a..815a2e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb89b=['util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatOfflineMessage.controller','get','index','/describe','isAuthenticated','show','post','create','put','/:id','delete','multer'];(function(_0x17ccd1,_0x1a553f){var _0x1d9dab=function(_0x5cabc3){while(--_0x5cabc3){_0x17ccd1['push'](_0x17ccd1['shift']());}};_0x1d9dab(++_0x1a553f);}(_0xb89b,0xe9));var _0xbb89=function(_0x31122e,_0x24fbf7){_0x31122e=_0x31122e-0x0;var _0x54922b=_0xb89b[_0x31122e];return _0x54922b;};'use strict';var multer=require(_0xbb89('0x0'));var util=require(_0xbb89('0x1'));var path=require(_0xbb89('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbb89('0x3')]();var fs_extra=require(_0xbb89('0x4'));var auth=require(_0xbb89('0x5'));var interaction=require(_0xbb89('0x6'));var config=require('../../config/environment');var controller=require(_0xbb89('0x7'));router[_0xbb89('0x8')]('/',auth['isAuthenticated'](),controller[_0xbb89('0x9')]);router[_0xbb89('0x8')](_0xbb89('0xa'),auth[_0xbb89('0xb')](),controller['describe']);router[_0xbb89('0x8')]('/:id',auth[_0xbb89('0xb')](),controller[_0xbb89('0xc')]);router[_0xbb89('0xd')]('/',auth[_0xbb89('0xb')](),controller[_0xbb89('0xe')]);router[_0xbb89('0xf')](_0xbb89('0x10'),auth[_0xbb89('0xb')](),controller['update']);router[_0xbb89('0x11')](_0xbb89('0x10'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x98f3=['./chatOfflineMessage.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2a6700,_0x2b144a){var _0x3d3567=function(_0x133309){while(--_0x133309){_0x2a6700['push'](_0x2a6700['shift']());}};_0x3d3567(++_0x2b144a);}(_0x98f3,0x1c0));var _0x398f=function(_0x64bec,_0x37225c){_0x64bec=_0x64bec-0x0;var _0x46b9c6=_0x98f3[_0x64bec];return _0x46b9c6;};'use strict';var multer=require(_0x398f('0x0'));var util=require(_0x398f('0x1'));var path=require(_0x398f('0x2'));var timeout=require(_0x398f('0x3'));var express=require(_0x398f('0x4'));var router=express['Router']();var fs_extra=require(_0x398f('0x5'));var auth=require(_0x398f('0x6'));var interaction=require(_0x398f('0x7'));var config=require('../../config/environment');var controller=require(_0x398f('0x8'));router[_0x398f('0x9')]('/',auth[_0x398f('0xa')](),controller['index']);router[_0x398f('0x9')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x398f('0x9')](_0x398f('0xb'),auth[_0x398f('0xa')](),controller[_0x398f('0xc')]);router[_0x398f('0xd')]('/',auth[_0x398f('0xa')](),controller[_0x398f('0xe')]);router[_0x398f('0xf')](_0x398f('0xb'),auth[_0x398f('0xa')](),controller[_0x398f('0x10')]);router[_0x398f('0x11')](_0x398f('0xb'),auth[_0x398f('0xa')](),controller['destroy']);module[_0x398f('0x12')]=router;
\ No newline at end of file
index d9bb492..f18ef36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a90=['STRING','ENUM','mouseOver','INTEGER','sequelize','exports'];(function(_0x136788,_0x130aae){var _0x171eff=function(_0x2352de){while(--_0x2352de){_0x136788['push'](_0x136788['shift']());}};_0x171eff(++_0x130aae);}(_0x1a90,0x166));var _0x01a9=function(_0x57eae2,_0x42a2be){_0x57eae2=_0x57eae2-0x0;var _0x386e2b=_0x1a90[_0x57eae2];return _0x386e2b;};'use strict';var Sequelize=require(_0x01a9('0x0'));module[_0x01a9('0x1')]={'name':{'type':Sequelize[_0x01a9('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x01a9('0x3')](_0x01a9('0x4'),'timeout'),'defaultValue':'mouseOver'},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x01a9('0x5')]}};
\ No newline at end of file
+var _0xc195=['mouseOver','timeout','exports','STRING','ENUM'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xc195,0xb6));var _0x5c19=function(_0x1c2f29,_0x5a2668){_0x1c2f29=_0x1c2f29-0x0;var _0x258465=_0xc195[_0x1c2f29];return _0x258465;};'use strict';var Sequelize=require('sequelize');module[_0x5c19('0x0')]={'name':{'type':Sequelize[_0x5c19('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x5c19('0x2')](_0x5c19('0x3'),_0x5c19('0x4')),'defaultValue':_0x5c19('0x3')},'selector':{'type':Sequelize[_0x5c19('0x1')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 647198b..18b7dd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea31=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','then','destroy','error','stack','name','send','show','params','model','keys','rawAttributes','query','filters','attributes','fields','length','includeAll','include','merge','ChatProactiveAction','find','catch','create','update','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x38c19e,_0x544d08){var _0x1ca3f5=function(_0x411543){while(--_0x411543){_0x38c19e['push'](_0x38c19e['shift']());}};_0x1ca3f5(++_0x544d08);}(_0xea31,0x6b));var _0x1ea3=function(_0x4f1c67,_0x20ebfb){_0x4f1c67=_0x4f1c67-0x0;var _0x5ab261=_0xea31[_0x4f1c67];return _0x5ab261;};'use strict';var emlformat=require(_0x1ea3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1ea3('0x1'));var jsonpatch=require(_0x1ea3('0x2'));var rp=require(_0x1ea3('0x3'));var moment=require(_0x1ea3('0x4'));var BPromise=require(_0x1ea3('0x5'));var Mustache=require(_0x1ea3('0x6'));var util=require(_0x1ea3('0x7'));var path=require('path');var sox=require(_0x1ea3('0x8'));var csv=require(_0x1ea3('0x9'));var ejs=require(_0x1ea3('0xa'));var fs=require('fs');var fs_extra=require(_0x1ea3('0xb'));var _=require(_0x1ea3('0xc'));var squel=require('squel');var crypto=require(_0x1ea3('0xd'));var jsforce=require(_0x1ea3('0xe'));var deskjs=require(_0x1ea3('0xf'));var toCsv=require(_0x1ea3('0x9'));var querystring=require(_0x1ea3('0x10'));var Papa=require(_0x1ea3('0x11'));var Redis=require('ioredis');var authService=require(_0x1ea3('0x12'));var qs=require(_0x1ea3('0x13'));var as=require(_0x1ea3('0x14'));var hardwareService=require(_0x1ea3('0x15'));var logger=require(_0x1ea3('0x16'))(_0x1ea3('0x17'));var utils=require(_0x1ea3('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x1ea3('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3fe537,_0x2fc7f4){_0x2fc7f4=_0x2fc7f4||0xcc;return function(_0x4305d3){if(_0x4305d3){return _0x3fe537['sendStatus'](_0x2fc7f4);}return _0x3fe537[_0x1ea3('0x1a')](_0x2fc7f4)[_0x1ea3('0x1b')]();};}function respondWithResult(_0x2fd1c9,_0x4b0af9){_0x4b0af9=_0x4b0af9||0xc8;return function(_0x1624ee){if(_0x1624ee){return _0x2fd1c9[_0x1ea3('0x1a')](_0x4b0af9)[_0x1ea3('0x1c')](_0x1624ee);}};}function respondWithFilteredResult(_0x3d0e71,_0x319de8){return function(_0x3fe673){if(_0x3fe673){var _0x29ceac=typeof _0x319de8['offset']===_0x1ea3('0x1d')&&typeof _0x319de8[_0x1ea3('0x1e')]===_0x1ea3('0x1d');var _0x2f6e6f=_0x3fe673[_0x1ea3('0x1f')];var _0x541e18=_0x29ceac?0x0:_0x319de8[_0x1ea3('0x20')];var _0x2a8b47=_0x29ceac?_0x3fe673[_0x1ea3('0x1f')]:_0x319de8['offset']+_0x319de8[_0x1ea3('0x1e')];var _0x21364e;if(_0x2a8b47>=_0x2f6e6f){_0x2a8b47=_0x2f6e6f;_0x21364e=0xc8;}else{_0x21364e=0xce;}_0x3d0e71[_0x1ea3('0x1a')](_0x21364e);return _0x3d0e71['set'](_0x1ea3('0x21'),_0x541e18+'-'+_0x2a8b47+'/'+_0x2f6e6f)['json'](_0x3fe673);}return null;};}function patchUpdates(_0x276e4d){return function(_0x405ec0){try{jsonpatch[_0x1ea3('0x22')](_0x405ec0,_0x276e4d,!![]);}catch(_0x5bad21){return BPromise[_0x1ea3('0x23')](_0x5bad21);}return _0x405ec0['save']();};}function saveUpdates(_0x4582af,_0x498455){return function(_0x941a50){if(_0x941a50){return _0x941a50['update'](_0x4582af)[_0x1ea3('0x24')](function(_0x388019){return _0x388019;});}return null;};}function removeEntity(_0x246231,_0x5ad8ff){return function(_0x50703d){if(_0x50703d){return _0x50703d[_0x1ea3('0x25')]()['then'](function(){_0x246231[_0x1ea3('0x1a')](0xcc)[_0x1ea3('0x1b')]();});}};}function handleEntityNotFound(_0x3c42f3,_0x91abee){return function(_0xa2b868){if(!_0xa2b868){_0x3c42f3['sendStatus'](0x194);}return _0xa2b868;};}function handleError(_0x50e511,_0x30cf8d){_0x30cf8d=_0x30cf8d||0x1f4;return function(_0x2edfb4){logger[_0x1ea3('0x26')](_0x2edfb4[_0x1ea3('0x27')]);if(_0x2edfb4[_0x1ea3('0x28')]){delete _0x2edfb4[_0x1ea3('0x28')];}_0x50e511[_0x1ea3('0x1a')](_0x30cf8d)[_0x1ea3('0x29')](_0x2edfb4);};}exports[_0x1ea3('0x2a')]=function(_0x3d9b63,_0x3bc186){var _0x33f5f2={'raw':!![],'where':{'id':_0x3d9b63[_0x1ea3('0x2b')]['id']}},_0x2c29d7={};_0x2c29d7[_0x1ea3('0x2c')]=_[_0x1ea3('0x2d')](db['ChatProactiveAction'][_0x1ea3('0x2e')]);_0x2c29d7[_0x1ea3('0x2f')]=_[_0x1ea3('0x2d')](_0x3d9b63[_0x1ea3('0x2f')]);_0x2c29d7[_0x1ea3('0x30')]=_['intersection'](_0x2c29d7['model'],_0x2c29d7[_0x1ea3('0x2f')]);_0x33f5f2[_0x1ea3('0x31')]=_['intersection'](_0x2c29d7[_0x1ea3('0x2c')],qs[_0x1ea3('0x32')](_0x3d9b63['query']['fields']));_0x33f5f2[_0x1ea3('0x31')]=_0x33f5f2[_0x1ea3('0x31')][_0x1ea3('0x33')]?_0x33f5f2[_0x1ea3('0x31')]:_0x2c29d7[_0x1ea3('0x2c')];if(_0x3d9b63[_0x1ea3('0x2f')][_0x1ea3('0x34')]){_0x33f5f2[_0x1ea3('0x35')]=[{'all':!![]}];}_0x33f5f2=_[_0x1ea3('0x36')]({},_0x33f5f2,_0x3d9b63['options']);return db[_0x1ea3('0x37')][_0x1ea3('0x38')](_0x33f5f2)[_0x1ea3('0x24')](handleEntityNotFound(_0x3bc186,null))[_0x1ea3('0x24')](respondWithResult(_0x3bc186,null))[_0x1ea3('0x39')](handleError(_0x3bc186,null));};exports[_0x1ea3('0x3a')]=function(_0x36d563,_0x2414ee){return db[_0x1ea3('0x37')][_0x1ea3('0x3a')](_0x36d563['body'],{})[_0x1ea3('0x24')](respondWithResult(_0x2414ee,0xc9))['catch'](handleError(_0x2414ee,null));};exports[_0x1ea3('0x3b')]=function(_0x5578c1,_0x4cc1d0){if(_0x5578c1[_0x1ea3('0x3c')]['id']){delete _0x5578c1['body']['id'];}return db['ChatProactiveAction']['find']({'where':{'id':_0x5578c1[_0x1ea3('0x2b')]['id']}})[_0x1ea3('0x24')](handleEntityNotFound(_0x4cc1d0,null))[_0x1ea3('0x24')](saveUpdates(_0x5578c1[_0x1ea3('0x3c')],null))[_0x1ea3('0x24')](respondWithResult(_0x4cc1d0,null))['catch'](handleError(_0x4cc1d0,null));};exports[_0x1ea3('0x25')]=function(_0x5ac483,_0x441442){return db[_0x1ea3('0x37')]['find']({'where':{'id':_0x5ac483[_0x1ea3('0x2b')]['id']}})[_0x1ea3('0x24')](handleEntityNotFound(_0x441442,null))[_0x1ea3('0x24')](removeEntity(_0x441442,null))[_0x1ea3('0x39')](handleError(_0x441442,null));};
\ No newline at end of file
+var _0xe953=['params','keys','ChatProactiveAction','filters','intersection','query','fields','attributes','length','includeAll','include','options','catch','create','body','find','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','end','error','stack','name','send'];(function(_0x5f2f7b,_0x2c6932){var _0x5a1ecc=function(_0x1b4115){while(--_0x1b4115){_0x5f2f7b['push'](_0x5f2f7b['shift']());}};_0x5a1ecc(++_0x2c6932);}(_0xe953,0x1d0));var _0x3e95=function(_0x2d34d6,_0x397ff9){_0x2d34d6=_0x2d34d6-0x0;var _0x1d3d12=_0xe953[_0x2d34d6];return _0x1d3d12;};'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('request-promise');var moment=require(_0x3e95('0x0'));var BPromise=require(_0x3e95('0x1'));var Mustache=require('mustache');var util=require(_0x3e95('0x2'));var path=require('path');var sox=require(_0x3e95('0x3'));var csv=require('to-csv');var ejs=require(_0x3e95('0x4'));var fs=require('fs');var fs_extra=require(_0x3e95('0x5'));var _=require(_0x3e95('0x6'));var squel=require(_0x3e95('0x7'));var crypto=require(_0x3e95('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x3e95('0x9'));var toCsv=require(_0x3e95('0xa'));var querystring=require(_0x3e95('0xb'));var Papa=require('papaparse');var Redis=require(_0x3e95('0xc'));var authService=require(_0x3e95('0xd'));var qs=require(_0x3e95('0xe'));var as=require(_0x3e95('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3e95('0x10'))('api');var utils=require(_0x3e95('0x11'));var config=require(_0x3e95('0x12'));var licenseUtil=require(_0x3e95('0x13'));var db=require(_0x3e95('0x14'))['db'];function respondWithStatusCode(_0x466c03,_0x152671){_0x152671=_0x152671||0xcc;return function(_0x5047e3){if(_0x5047e3){return _0x466c03[_0x3e95('0x15')](_0x152671);}return _0x466c03[_0x3e95('0x16')](_0x152671)['end']();};}function respondWithResult(_0x1fb8f1,_0x721a12){_0x721a12=_0x721a12||0xc8;return function(_0x35d41c){if(_0x35d41c){return _0x1fb8f1[_0x3e95('0x16')](_0x721a12)['json'](_0x35d41c);}};}function respondWithFilteredResult(_0xbd4d4,_0xd1d345){return function(_0x5afe28){if(_0x5afe28){var _0x21b3b3=typeof _0xd1d345[_0x3e95('0x17')]===_0x3e95('0x18')&&typeof _0xd1d345[_0x3e95('0x19')]==='undefined';var _0x1490ec=_0x5afe28['count'];var _0x3ecd6f=_0x21b3b3?0x0:_0xd1d345[_0x3e95('0x17')];var _0x55babc=_0x21b3b3?_0x5afe28[_0x3e95('0x1a')]:_0xd1d345[_0x3e95('0x17')]+_0xd1d345[_0x3e95('0x19')];var _0x46a3c4;if(_0x55babc>=_0x1490ec){_0x55babc=_0x1490ec;_0x46a3c4=0xc8;}else{_0x46a3c4=0xce;}_0xbd4d4[_0x3e95('0x16')](_0x46a3c4);return _0xbd4d4[_0x3e95('0x1b')](_0x3e95('0x1c'),_0x3ecd6f+'-'+_0x55babc+'/'+_0x1490ec)[_0x3e95('0x1d')](_0x5afe28);}return null;};}function patchUpdates(_0x5c7479){return function(_0x18a811){try{jsonpatch['apply'](_0x18a811,_0x5c7479,!![]);}catch(_0x336022){return BPromise[_0x3e95('0x1e')](_0x336022);}return _0x18a811[_0x3e95('0x1f')]();};}function saveUpdates(_0x4945a4,_0x469751){return function(_0x57d05a){if(_0x57d05a){return _0x57d05a[_0x3e95('0x20')](_0x4945a4)[_0x3e95('0x21')](function(_0x1a601d){return _0x1a601d;});}return null;};}function removeEntity(_0x1d43a3,_0x334855){return function(_0x3258fb){if(_0x3258fb){return _0x3258fb[_0x3e95('0x22')]()[_0x3e95('0x21')](function(){_0x1d43a3[_0x3e95('0x16')](0xcc)[_0x3e95('0x23')]();});}};}function handleEntityNotFound(_0x327c90,_0x525506){return function(_0x3553fc){if(!_0x3553fc){_0x327c90[_0x3e95('0x15')](0x194);}return _0x3553fc;};}function handleError(_0x2a5aa5,_0x3f29a3){_0x3f29a3=_0x3f29a3||0x1f4;return function(_0x25be53){logger[_0x3e95('0x24')](_0x25be53[_0x3e95('0x25')]);if(_0x25be53[_0x3e95('0x26')]){delete _0x25be53[_0x3e95('0x26')];}_0x2a5aa5[_0x3e95('0x16')](_0x3f29a3)[_0x3e95('0x27')](_0x25be53);};}exports['show']=function(_0x761f8b,_0x38c2f5){var _0x16b907={'raw':!![],'where':{'id':_0x761f8b[_0x3e95('0x28')]['id']}},_0x1b07a9={};_0x1b07a9['model']=_[_0x3e95('0x29')](db[_0x3e95('0x2a')]['rawAttributes']);_0x1b07a9['query']=_[_0x3e95('0x29')](_0x761f8b['query']);_0x1b07a9[_0x3e95('0x2b')]=_[_0x3e95('0x2c')](_0x1b07a9['model'],_0x1b07a9[_0x3e95('0x2d')]);_0x16b907['attributes']=_[_0x3e95('0x2c')](_0x1b07a9['model'],qs[_0x3e95('0x2e')](_0x761f8b[_0x3e95('0x2d')][_0x3e95('0x2e')]));_0x16b907[_0x3e95('0x2f')]=_0x16b907['attributes'][_0x3e95('0x30')]?_0x16b907[_0x3e95('0x2f')]:_0x1b07a9['model'];if(_0x761f8b[_0x3e95('0x2d')][_0x3e95('0x31')]){_0x16b907[_0x3e95('0x32')]=[{'all':!![]}];}_0x16b907=_['merge']({},_0x16b907,_0x761f8b[_0x3e95('0x33')]);return db['ChatProactiveAction']['find'](_0x16b907)[_0x3e95('0x21')](handleEntityNotFound(_0x38c2f5,null))['then'](respondWithResult(_0x38c2f5,null))[_0x3e95('0x34')](handleError(_0x38c2f5,null));};exports['create']=function(_0x5e1826,_0x5b3220){return db[_0x3e95('0x2a')][_0x3e95('0x35')](_0x5e1826[_0x3e95('0x36')],{})[_0x3e95('0x21')](respondWithResult(_0x5b3220,0xc9))[_0x3e95('0x34')](handleError(_0x5b3220,null));};exports[_0x3e95('0x20')]=function(_0x8b2f21,_0xdd7c15){if(_0x8b2f21[_0x3e95('0x36')]['id']){delete _0x8b2f21[_0x3e95('0x36')]['id'];}return db[_0x3e95('0x2a')][_0x3e95('0x37')]({'where':{'id':_0x8b2f21[_0x3e95('0x28')]['id']}})[_0x3e95('0x21')](handleEntityNotFound(_0xdd7c15,null))[_0x3e95('0x21')](saveUpdates(_0x8b2f21[_0x3e95('0x36')],null))['then'](respondWithResult(_0xdd7c15,null))[_0x3e95('0x34')](handleError(_0xdd7c15,null));};exports['destroy']=function(_0x38820a,_0x11cbb3){return db['ChatProactiveAction'][_0x3e95('0x37')]({'where':{'id':_0x38820a[_0x3e95('0x28')]['id']}})['then'](handleEntityNotFound(_0x11cbb3,null))[_0x3e95('0x21')](removeEntity(_0x11cbb3,null))[_0x3e95('0x34')](handleError(_0x11cbb3,null));};
\ No newline at end of file
index 44f95f3..7dd2772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3880=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','define','ChatProactiveAction','chat_proactive_actions'];(function(_0x1c9acb,_0x305c5e){var _0x670b4d=function(_0x35aca2){while(--_0x35aca2){_0x1c9acb['push'](_0x1c9acb['shift']());}};_0x670b4d(++_0x305c5e);}(_0x3880,0x13f));var _0x0388=function(_0x39d39a,_0x4d5d39){_0x39d39a=_0x39d39a-0x0;var _0x3316ca=_0x3880[_0x39d39a];return _0x3316ca;};'use strict';var _=require(_0x0388('0x0'));var util=require(_0x0388('0x1'));var logger=require(_0x0388('0x2'))(_0x0388('0x3'));var moment=require(_0x0388('0x4'));var BPromise=require(_0x0388('0x5'));var rp=require(_0x0388('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0388('0x7'));var attributes=require('./chatProactiveAction.attributes');module['exports']=function(_0x392df1,_0x51a6ee){return _0x392df1[_0x0388('0x8')](_0x0388('0x9'),attributes,{'tableName':_0x0388('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0916=['rimraf','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','chat_proactive_actions','../../config/logger','api','bluebird','request-promise','path'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x0916,0xf7));var _0x6091=function(_0x378681,_0x49310d){_0x378681=_0x378681-0x0;var _0xee1ad5=_0x0916[_0x378681];return _0xee1ad5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6091('0x0'))(_0x6091('0x1'));var moment=require('moment');var BPromise=require(_0x6091('0x2'));var rp=require(_0x6091('0x3'));var fs=require('fs');var path=require(_0x6091('0x4'));var rimraf=require(_0x6091('0x5'));var config=require(_0x6091('0x6'));var attributes=require(_0x6091('0x7'));module[_0x6091('0x8')]=function(_0x1674ad,_0x149fb9){return _0x1674ad[_0x6091('0x9')](_0x6091('0xa'),attributes,{'tableName':_0x6091('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6dc05e4..a0f0c32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4451=['../../config/utils','../../config/logger','rpc','client','http','request','then','ChatProactiveAction,\x20%s,\x20%s','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','info','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x43b393,_0x185488){var _0x2c1c27=function(_0x4b1f9b){while(--_0x4b1f9b){_0x43b393['push'](_0x43b393['shift']());}};_0x2c1c27(++_0x185488);}(_0x4451,0x1b3));var _0x1445=function(_0x2c153d,_0x3207a7){_0x2c153d=_0x2c153d-0x0;var _0x44650f=_0x4451[_0x2c153d];return _0x44650f;};'use strict';var _=require(_0x1445('0x0'));var util=require('util');var moment=require(_0x1445('0x1'));var BPromise=require(_0x1445('0x2'));var rs=require(_0x1445('0x3'));var fs=require('fs');var Redis=require(_0x1445('0x4'));var db=require(_0x1445('0x5'))['db'];var utils=require(_0x1445('0x6'));var logger=require(_0x1445('0x7'))(_0x1445('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1445('0x9')][_0x1445('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2742c4,_0x9f1567,_0x16e38e){return new BPromise(function(_0x40cf75,_0x36090f){return client[_0x1445('0xb')](_0x2742c4,_0x16e38e)[_0x1445('0xc')](function(_0x38823e){logger['info'](_0x1445('0xd'),_0x9f1567,'request\x20sent');logger[_0x1445('0xe')](_0x1445('0xf'),_0x9f1567,_0x1445('0x10'),JSON['stringify'](_0x38823e));if(_0x38823e[_0x1445('0x11')]){if(_0x38823e[_0x1445('0x11')]['code']===0x1f4){logger[_0x1445('0x11')](_0x1445('0xd'),_0x9f1567,_0x38823e[_0x1445('0x11')]['message']);return _0x36090f(_0x38823e[_0x1445('0x11')]['message']);}logger['error'](_0x1445('0xd'),_0x9f1567,_0x38823e[_0x1445('0x11')][_0x1445('0x12')]);return _0x40cf75(_0x38823e[_0x1445('0x11')][_0x1445('0x12')]);}else{logger[_0x1445('0x13')]('ChatProactiveAction,\x20%s,\x20%s',_0x9f1567,_0x1445('0x10'));_0x40cf75(_0x38823e['result']['message']);}})[_0x1445('0x14')](function(_0x367fc8){logger[_0x1445('0x11')](_0x1445('0xd'),_0x9f1567,_0x367fc8);_0x36090f(_0x367fc8);});});}
\ No newline at end of file
+var _0xe436=['request\x20sent','debug','stringify','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatProactiveAction,\x20%s,\x20%s'];(function(_0x1591da,_0x2868fb){var _0x341a1d=function(_0x4f7c67){while(--_0x4f7c67){_0x1591da['push'](_0x1591da['shift']());}};_0x341a1d(++_0x2868fb);}(_0xe436,0x149));var _0x6e43=function(_0x4a1f78,_0x329d01){_0x4a1f78=_0x4a1f78-0x0;var _0x3dfc7a=_0xe436[_0x4a1f78];return _0x3dfc7a;};'use strict';var _=require('lodash');var util=require(_0x6e43('0x0'));var moment=require(_0x6e43('0x1'));var BPromise=require(_0x6e43('0x2'));var rs=require(_0x6e43('0x3'));var fs=require('fs');var Redis=require(_0x6e43('0x4'));var db=require(_0x6e43('0x5'))['db'];var utils=require(_0x6e43('0x6'));var logger=require('../../config/logger')(_0x6e43('0x7'));var config=require(_0x6e43('0x8'));var jayson=require(_0x6e43('0x9'));var client=jayson[_0x6e43('0xa')][_0x6e43('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1da8ee,_0x40f0d2,_0x11dc3d){return new BPromise(function(_0x2fb0bf,_0x11e326){return client[_0x6e43('0xc')](_0x1da8ee,_0x11dc3d)[_0x6e43('0xd')](function(_0x2bfa00){logger[_0x6e43('0xe')](_0x6e43('0xf'),_0x40f0d2,_0x6e43('0x10'));logger[_0x6e43('0x11')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x40f0d2,_0x6e43('0x10'),JSON[_0x6e43('0x12')](_0x2bfa00));if(_0x2bfa00[_0x6e43('0x13')]){if(_0x2bfa00[_0x6e43('0x13')]['code']===0x1f4){logger['error'](_0x6e43('0xf'),_0x40f0d2,_0x2bfa00['error'][_0x6e43('0x14')]);return _0x11e326(_0x2bfa00[_0x6e43('0x13')][_0x6e43('0x14')]);}logger['error'](_0x6e43('0xf'),_0x40f0d2,_0x2bfa00[_0x6e43('0x13')][_0x6e43('0x14')]);return _0x2fb0bf(_0x2bfa00['error'][_0x6e43('0x14')]);}else{logger[_0x6e43('0xe')]('ChatProactiveAction,\x20%s,\x20%s',_0x40f0d2,_0x6e43('0x10'));_0x2fb0bf(_0x2bfa00[_0x6e43('0x15')][_0x6e43('0x14')]);}})[_0x6e43('0x16')](function(_0x138261){logger[_0x6e43('0x13')](_0x6e43('0xf'),_0x40f0d2,_0x138261);_0x11e326(_0x138261);});});}
\ No newline at end of file
index 557dd8c..6e2d018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','post','create','put','update','multer','path','connect-timeout','express'];(function(_0x44be03,_0x22fd29){var _0x49e927=function(_0x5088a7){while(--_0x5088a7){_0x44be03['push'](_0x44be03['shift']());}};_0x49e927(++_0x22fd29);}(_0x5fd1,0x155));var _0x15fd=function(_0x23e6a2,_0x49af1d){_0x23e6a2=_0x23e6a2-0x0;var _0x32858a=_0x5fd1[_0x23e6a2];return _0x32858a;};'use strict';var multer=require(_0x15fd('0x0'));var util=require('util');var path=require(_0x15fd('0x1'));var timeout=require(_0x15fd('0x2'));var express=require(_0x15fd('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x15fd('0x4'));var interaction=require(_0x15fd('0x5'));var config=require(_0x15fd('0x6'));var controller=require('./chatProactiveAction.controller');router[_0x15fd('0x7')](_0x15fd('0x8'),auth[_0x15fd('0x9')](),controller[_0x15fd('0xa')]);router[_0x15fd('0xb')]('/',auth['isAuthenticated'](),controller[_0x15fd('0xc')]);router[_0x15fd('0xd')](_0x15fd('0x8'),auth['isAuthenticated'](),controller[_0x15fd('0xe')]);router['delete'](_0x15fd('0x8'),auth[_0x15fd('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x032e=['post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated','show'];(function(_0x290264,_0x2f9dff){var _0x3c907f=function(_0xc7a687){while(--_0xc7a687){_0x290264['push'](_0x290264['shift']());}};_0x3c907f(++_0x2f9dff);}(_0x032e,0x124));var _0xe032=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x032e[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0xe032('0x0'));var util=require('util');var path=require(_0xe032('0x1'));var timeout=require(_0xe032('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe032('0x3'));var auth=require(_0xe032('0x4'));var interaction=require(_0xe032('0x5'));var config=require(_0xe032('0x6'));var controller=require(_0xe032('0x7'));router[_0xe032('0x8')](_0xe032('0x9'),auth[_0xe032('0xa')](),controller[_0xe032('0xb')]);router[_0xe032('0xc')]('/',auth[_0xe032('0xa')](),controller[_0xe032('0xd')]);router[_0xe032('0xe')](_0xe032('0x9'),auth[_0xe032('0xa')](),controller[_0xe032('0xf')]);router[_0xe032('0x10')](_0xe032('0x9'),auth['isAuthenticated'](),controller[_0xe032('0x11')]);module[_0xe032('0x12')]=router;
\ No newline at end of file
index d6faa36..a1ca293 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cbd=['ENUM','rrmemory','beepall','roundrobin','exports','STRING','name','INTEGER'];(function(_0x5a539f,_0xb4338){var _0x5d7db4=function(_0x41ad83){while(--_0x41ad83){_0x5a539f['push'](_0x5a539f['shift']());}};_0x5d7db4(++_0xb4338);}(_0x3cbd,0xac));var _0xd3cb=function(_0x160d97,_0x5379be){_0x160d97=_0x160d97-0x0;var _0x3a3e8e=_0x3cbd[_0x160d97];return _0x3a3e8e;};'use strict';var Sequelize=require('sequelize');module[_0xd3cb('0x0')]={'name':{'type':Sequelize[_0xd3cb('0x1')],'unique':_0xd3cb('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xd3cb('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd3cb('0x4')](_0xd3cb('0x5'),_0xd3cb('0x6'),_0xd3cb('0x7'))}};
\ No newline at end of file
+var _0xe719=['sequelize','STRING','name','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x1bf70a,_0x15f65e){var _0x148dd8=function(_0x230ef7){while(--_0x230ef7){_0x1bf70a['push'](_0x1bf70a['shift']());}};_0x148dd8(++_0x15f65e);}(_0xe719,0x10a));var _0x9e71=function(_0xb44e91,_0x1d55ac){_0xb44e91=_0xb44e91-0x0;var _0x31ae9a=_0xe719[_0xb44e91];return _0x31ae9a;};'use strict';var Sequelize=require(_0x9e71('0x0'));module['exports']={'name':{'type':Sequelize[_0x9e71('0x1')],'unique':_0x9e71('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x9e71('0x1')]},'timeout':{'type':Sequelize[_0x9e71('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x9e71('0x4'),_0x9e71('0x5'),_0x9e71('0x6'))}};
\ No newline at end of file
index 18ba9c9..9b6ee43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c99=['jayson/promise','client','http','request','then','ChatQueue,\x20%s,\x20%s','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','get','UserProfileResource','destroy','end','stack','name','send','index','map','ChatQueue','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','options','includeAll','include','findAll','rows','params','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','order','ChatQueueId','merge','UserChatQueue','findAndCountAll','UserId','agent','updatedAt','SIP','createdAt','getTeams','Team','addTeams','User','Agents','online','voicePause','interface','flatMap','transaction','each','findOrCreate','emit','userChatQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ChatQueueId\x20=\x20?','sequelize','toString','SELECT','TeamId','includes','all','union','value','ids','removeAgents','forEach','userChatQueue:remove','addAgents','spread','isArray','getAgents','rawAttributes','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./chatQueue.socket','register'];(function(_0x1e0ca5,_0x57fd4f){var _0x410923=function(_0x5bd94d){while(--_0x5bd94d){_0x1e0ca5['push'](_0x1e0ca5['shift']());}};_0x410923(++_0x57fd4f);}(_0x3c99,0x118));var _0x93c9=function(_0x442e4b,_0x526e82){_0x442e4b=_0x442e4b-0x0;var _0x3572c4=_0x3c99[_0x442e4b];return _0x3572c4;};'use strict';var emlformat=require(_0x93c9('0x0'));var rimraf=require(_0x93c9('0x1'));var zipdir=require(_0x93c9('0x2'));var jsonpatch=require(_0x93c9('0x3'));var rp=require(_0x93c9('0x4'));var moment=require(_0x93c9('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x93c9('0x6'));var util=require(_0x93c9('0x7'));var path=require('path');var sox=require(_0x93c9('0x8'));var csv=require(_0x93c9('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x93c9('0xa'));var _=require('lodash');var squel=require(_0x93c9('0xb'));var crypto=require(_0x93c9('0xc'));var jsforce=require(_0x93c9('0xd'));var deskjs=require(_0x93c9('0xe'));var toCsv=require(_0x93c9('0x9'));var querystring=require(_0x93c9('0xf'));var Papa=require(_0x93c9('0x10'));var Redis=require(_0x93c9('0x11'));var authService=require(_0x93c9('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x93c9('0x13'));var hardwareService=require(_0x93c9('0x14'));var logger=require(_0x93c9('0x15'))(_0x93c9('0x16'));var utils=require('../../config/utils');var config=require(_0x93c9('0x17'));var licenseUtil=require(_0x93c9('0x18'));var db=require(_0x93c9('0x19'))['db'];config[_0x93c9('0x1a')]=_['defaults'](config[_0x93c9('0x1a')],{'host':_0x93c9('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x93c9('0x1c'))[_0x93c9('0x1d')](socket);var jayson=require(_0x93c9('0x1e'));var client=jayson[_0x93c9('0x1f')][_0x93c9('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x22eaaf,_0x52c9f7,_0x2f2338,_0x27dbf2){return new BPromise(function(_0x245620,_0x493926){var _0x1282db=_0x27dbf2||client;return _0x1282db[_0x93c9('0x21')](_0x22eaaf,_0x2f2338)[_0x93c9('0x22')](function(_0x13ceec){logger['info'](_0x93c9('0x23'),_0x52c9f7,'request\x20sent');logger[_0x93c9('0x24')](_0x93c9('0x25'),_0x52c9f7,_0x93c9('0x26'),JSON[_0x93c9('0x27')](_0x13ceec));if(_0x13ceec[_0x93c9('0x28')]){if(_0x13ceec[_0x93c9('0x28')][_0x93c9('0x29')]===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x52c9f7,_0x13ceec[_0x93c9('0x28')]['message']);return _0x493926(_0x13ceec[_0x93c9('0x28')][_0x93c9('0x2a')]);}logger[_0x93c9('0x28')](_0x93c9('0x23'),_0x52c9f7,_0x13ceec['error'][_0x93c9('0x2a')]);return _0x245620(_0x13ceec[_0x93c9('0x28')][_0x93c9('0x2a')]);}else{logger[_0x93c9('0x2b')](_0x93c9('0x23'),_0x52c9f7,_0x93c9('0x26'));_0x245620(_0x13ceec[_0x93c9('0x2c')][_0x93c9('0x2a')]);}})[_0x93c9('0x2d')](function(_0x1bee93){logger[_0x93c9('0x28')](_0x93c9('0x23'),_0x52c9f7,_0x1bee93);_0x493926(_0x1bee93);});});}function respondWithStatusCode(_0x6ee792,_0x839419){_0x839419=_0x839419||0xcc;return function(_0x19faa1){if(_0x19faa1){return _0x6ee792[_0x93c9('0x2e')](_0x839419);}return _0x6ee792[_0x93c9('0x2f')](_0x839419)['end']();};}function respondWithResult(_0x33014e,_0xce1197){_0xce1197=_0xce1197||0xc8;return function(_0x1c8e4c){if(_0x1c8e4c){return _0x33014e[_0x93c9('0x2f')](_0xce1197)['json'](_0x1c8e4c);}};}function respondWithFilteredResult(_0x29ca54,_0x42cefe){return function(_0xc41fd1){if(_0xc41fd1){var _0x963515=typeof _0x42cefe[_0x93c9('0x30')]===_0x93c9('0x31')&&typeof _0x42cefe['limit']===_0x93c9('0x31');var _0x1a9ccd=_0xc41fd1[_0x93c9('0x32')];var _0x5cf165=_0x963515?0x0:_0x42cefe[_0x93c9('0x30')];var _0x1c80eb=_0x963515?_0xc41fd1['count']:_0x42cefe[_0x93c9('0x30')]+_0x42cefe[_0x93c9('0x33')];var _0x4b94b4;if(_0x1c80eb>=_0x1a9ccd){_0x1c80eb=_0x1a9ccd;_0x4b94b4=0xc8;}else{_0x4b94b4=0xce;}_0x29ca54[_0x93c9('0x2f')](_0x4b94b4);return _0x29ca54[_0x93c9('0x34')](_0x93c9('0x35'),_0x5cf165+'-'+_0x1c80eb+'/'+_0x1a9ccd)[_0x93c9('0x36')](_0xc41fd1);}return null;};}function patchUpdates(_0x22d2b9){return function(_0x3538dd){try{jsonpatch['apply'](_0x3538dd,_0x22d2b9,!![]);}catch(_0x3ef665){return BPromise[_0x93c9('0x37')](_0x3ef665);}return _0x3538dd[_0x93c9('0x38')]();};}function saveUpdates(_0x5e8967,_0x547760){return function(_0x1bb157){if(_0x1bb157){return _0x1bb157[_0x93c9('0x39')](_0x5e8967)[_0x93c9('0x22')](function(_0x40ba2f){return _0x40ba2f;});}return null;};}function removeEntity(_0x2be09e,_0x386fb4){return function(_0x59fc92){if(_0x59fc92){return _0x59fc92['destroy']()[_0x93c9('0x22')](function(){var _0x1c108e=_0x59fc92[_0x93c9('0x3a')]({'plain':!![]});var _0x46dbaf='ChatQueues';return db[_0x93c9('0x3b')][_0x93c9('0x3c')]({'where':{'type':_0x46dbaf,'resourceId':_0x1c108e['id']}})[_0x93c9('0x22')](function(){return _0x59fc92;});})[_0x93c9('0x22')](function(){_0x2be09e[_0x93c9('0x2f')](0xcc)[_0x93c9('0x3d')]();});}};}function handleEntityNotFound(_0x8ae12a,_0x194ccf){return function(_0x59aab3){if(!_0x59aab3){_0x8ae12a['sendStatus'](0x194);}return _0x59aab3;};}function handleError(_0x1daaba,_0x6d5e58){_0x6d5e58=_0x6d5e58||0x1f4;return function(_0x303c99){logger[_0x93c9('0x28')](_0x303c99[_0x93c9('0x3e')]);if(_0x303c99[_0x93c9('0x3f')]){delete _0x303c99[_0x93c9('0x3f')];}_0x1daaba[_0x93c9('0x2f')](_0x6d5e58)[_0x93c9('0x40')](_0x303c99);};}exports[_0x93c9('0x41')]=function(_0x30155e,_0x2b132c){var _0x167de0={},_0x27b4de={},_0x42f176={'count':0x0,'rows':[]};var _0x45b0f4=_[_0x93c9('0x42')](db[_0x93c9('0x43')]['rawAttributes'],function(_0xa9a473){return{'name':_0xa9a473[_0x93c9('0x44')],'type':_0xa9a473[_0x93c9('0x45')][_0x93c9('0x46')]};});_0x27b4de[_0x93c9('0x47')]=_[_0x93c9('0x42')](_0x45b0f4,_0x93c9('0x3f'));_0x27b4de[_0x93c9('0x48')]=_[_0x93c9('0x49')](_0x30155e[_0x93c9('0x48')]);_0x27b4de[_0x93c9('0x4a')]=_['intersection'](_0x27b4de[_0x93c9('0x47')],_0x27b4de[_0x93c9('0x48')]);_0x167de0[_0x93c9('0x4b')]=_['intersection'](_0x27b4de[_0x93c9('0x47')],qs['fields'](_0x30155e[_0x93c9('0x48')][_0x93c9('0x4c')]));_0x167de0[_0x93c9('0x4b')]=_0x167de0[_0x93c9('0x4b')][_0x93c9('0x4d')]?_0x167de0[_0x93c9('0x4b')]:_0x27b4de[_0x93c9('0x47')];if(!_0x30155e[_0x93c9('0x48')][_0x93c9('0x4e')](_0x93c9('0x4f'))){_0x167de0[_0x93c9('0x33')]=qs[_0x93c9('0x33')](_0x30155e[_0x93c9('0x48')][_0x93c9('0x33')]);_0x167de0[_0x93c9('0x30')]=qs[_0x93c9('0x30')](_0x30155e[_0x93c9('0x48')][_0x93c9('0x30')]);}_0x167de0['order']=qs['sort'](_0x30155e[_0x93c9('0x48')][_0x93c9('0x50')]);_0x167de0['where']=qs[_0x93c9('0x4a')](_[_0x93c9('0x51')](_0x30155e['query'],_0x27b4de[_0x93c9('0x4a')]),_0x45b0f4);if(_0x30155e['query'][_0x93c9('0x52')]){_0x167de0[_0x93c9('0x53')]=_['merge'](_0x167de0[_0x93c9('0x53')],{'$or':_[_0x93c9('0x42')](_0x45b0f4,function(_0x21aaa5){if(_0x21aaa5[_0x93c9('0x45')]!=='VIRTUAL'){var _0x39144c={};_0x39144c[_0x21aaa5[_0x93c9('0x3f')]]={'$like':'%'+_0x30155e[_0x93c9('0x48')][_0x93c9('0x52')]+'%'};return _0x39144c;}})});}_0x167de0=_['merge']({},_0x167de0,_0x30155e[_0x93c9('0x54')]);var _0x4d3793={'where':_0x167de0[_0x93c9('0x53')]};return db[_0x93c9('0x43')]['count'](_0x4d3793)[_0x93c9('0x22')](function(_0x50d822){_0x42f176[_0x93c9('0x32')]=_0x50d822;if(_0x30155e[_0x93c9('0x48')][_0x93c9('0x55')]){_0x167de0[_0x93c9('0x56')]=[{'all':!![]}];}return db[_0x93c9('0x43')][_0x93c9('0x57')](_0x167de0);})['then'](function(_0x5f0902){_0x42f176[_0x93c9('0x58')]=_0x5f0902;return _0x42f176;})['then'](respondWithFilteredResult(_0x2b132c,_0x167de0))[_0x93c9('0x2d')](handleError(_0x2b132c,null));};exports['show']=function(_0x4747d4,_0xfe662f){var _0x302543={'raw':!![],'where':{'id':_0x4747d4[_0x93c9('0x59')]['id']}},_0x1d8332={};_0x1d8332[_0x93c9('0x47')]=_['keys'](db['ChatQueue']['rawAttributes']);_0x1d8332[_0x93c9('0x48')]=_['keys'](_0x4747d4[_0x93c9('0x48')]);_0x1d8332['filters']=_[_0x93c9('0x5a')](_0x1d8332[_0x93c9('0x47')],_0x1d8332[_0x93c9('0x48')]);_0x302543[_0x93c9('0x4b')]=_[_0x93c9('0x5a')](_0x1d8332[_0x93c9('0x47')],qs[_0x93c9('0x4c')](_0x4747d4[_0x93c9('0x48')][_0x93c9('0x4c')]));_0x302543['attributes']=_0x302543[_0x93c9('0x4b')]['length']?_0x302543[_0x93c9('0x4b')]:_0x1d8332[_0x93c9('0x47')];if(_0x4747d4[_0x93c9('0x48')][_0x93c9('0x55')]){_0x302543[_0x93c9('0x56')]=[{'all':!![]}];}_0x302543=_['merge']({},_0x302543,_0x4747d4['options']);return db[_0x93c9('0x43')][_0x93c9('0x5b')](_0x302543)[_0x93c9('0x22')](handleEntityNotFound(_0xfe662f,null))[_0x93c9('0x22')](respondWithResult(_0xfe662f,null))[_0x93c9('0x2d')](handleError(_0xfe662f,null));};exports[_0x93c9('0x5c')]=function(_0x3e1afe,_0x197076){return db['ChatQueue'][_0x93c9('0x5c')](_0x3e1afe[_0x93c9('0x5d')],{})[_0x93c9('0x22')](function(_0x3619c8){var _0x15b768=_0x3e1afe[_0x93c9('0x5e')][_0x93c9('0x3a')]({'plain':!![]});if(!_0x15b768)throw new Error(_0x93c9('0x5f'));if(_0x15b768[_0x93c9('0x60')]===_0x93c9('0x5e')){var _0x4d2d39=_0x3619c8['get']({'plain':!![]});var _0x1aed1f=_0x93c9('0x61');return db[_0x93c9('0x62')]['find']({'where':{'name':_0x1aed1f,'userProfileId':_0x15b768[_0x93c9('0x63')]},'raw':!![]})[_0x93c9('0x22')](function(_0x20722a){if(_0x20722a&&_0x20722a[_0x93c9('0x64')]===0x0){return db[_0x93c9('0x3b')][_0x93c9('0x5c')]({'name':_0x4d2d39[_0x93c9('0x3f')],'resourceId':_0x4d2d39['id'],'type':_0x20722a[_0x93c9('0x3f')],'sectionId':_0x20722a['id']},{})[_0x93c9('0x22')](function(){return _0x3619c8;});}else{return _0x3619c8;}})['catch'](function(_0x2bb334){logger[_0x93c9('0x28')](_0x93c9('0x65'),_0x2bb334);throw _0x2bb334;});}return _0x3619c8;})[_0x93c9('0x22')](respondWithResult(_0x197076,0xc9))['catch'](handleError(_0x197076,null));};exports[_0x93c9('0x39')]=function(_0x1ad731,_0x3d0912){if(_0x1ad731[_0x93c9('0x5d')]['id']){delete _0x1ad731[_0x93c9('0x5d')]['id'];}return db['ChatQueue'][_0x93c9('0x5b')]({'where':{'id':_0x1ad731[_0x93c9('0x59')]['id']}})[_0x93c9('0x22')](handleEntityNotFound(_0x3d0912,null))[_0x93c9('0x22')](saveUpdates(_0x1ad731[_0x93c9('0x5d')],null))[_0x93c9('0x22')](respondWithResult(_0x3d0912,null))['catch'](handleError(_0x3d0912,null));};exports[_0x93c9('0x3c')]=function(_0x3b717c,_0x266f62){return db[_0x93c9('0x43')][_0x93c9('0x5b')]({'where':{'id':_0x3b717c['params']['id']}})[_0x93c9('0x22')](handleEntityNotFound(_0x266f62,null))[_0x93c9('0x22')](removeEntity(_0x266f62,null))[_0x93c9('0x2d')](handleError(_0x266f62,null));};exports[_0x93c9('0x66')]=function(_0x20a660,_0x3a764e){return db[_0x93c9('0x43')][_0x93c9('0x66')]()[_0x93c9('0x22')](respondWithResult(_0x3a764e,null))[_0x93c9('0x2d')](handleError(_0x3a764e,null));};exports[_0x93c9('0x67')]=function(_0x36c946,_0x3d1b4a,_0x1ae8f9){var _0x26dc99={'raw':!![],'where':{}},_0xf4b114={},_0x3ddf57;return db[_0x93c9('0x43')][_0x93c9('0x68')]({'where':{'id':_0x36c946['params']['id']}})[_0x93c9('0x22')](handleEntityNotFound(_0x3d1b4a,null))['then'](function(_0x22d025){if(_0x22d025){_0x3ddf57=_0x22d025['get']({'plain':!![]});_0xf4b114[_0x93c9('0x47')]=_[_0x93c9('0x49')](db['UserChatQueue']['rawAttributes']);_0xf4b114[_0x93c9('0x48')]=_[_0x93c9('0x49')](_0x36c946[_0x93c9('0x48')]);_0xf4b114[_0x93c9('0x4a')]=_[_0x93c9('0x5a')](_0xf4b114[_0x93c9('0x47')],_0xf4b114['query']);_0x26dc99[_0x93c9('0x4b')]=_['intersection'](_0xf4b114['model'],qs['fields'](_0x36c946[_0x93c9('0x48')]['fields']));_0x26dc99[_0x93c9('0x4b')]=_0x26dc99[_0x93c9('0x4b')][_0x93c9('0x4d')]?_0x26dc99[_0x93c9('0x4b')]:_0xf4b114[_0x93c9('0x47')];if(!_0x36c946[_0x93c9('0x48')]['hasOwnProperty'](_0x93c9('0x4f'))){_0x26dc99[_0x93c9('0x33')]=qs[_0x93c9('0x33')](_0x36c946[_0x93c9('0x48')][_0x93c9('0x33')]);_0x26dc99[_0x93c9('0x30')]=qs[_0x93c9('0x30')](_0x36c946[_0x93c9('0x48')][_0x93c9('0x30')]);}_0x26dc99[_0x93c9('0x69')]=qs['sort'](_0x36c946[_0x93c9('0x48')]['sort']);_0x26dc99[_0x93c9('0x53')]=qs['filters'](_['pick'](_0x36c946['query'],_0xf4b114[_0x93c9('0x4a')]));_0x26dc99[_0x93c9('0x53')][_0x93c9('0x6a')]=_0x22d025['id'];if(_0x36c946['query']['filter']){_0x26dc99[_0x93c9('0x53')]=_[_0x93c9('0x6b')](_0x26dc99['where'],{'$or':_[_0x93c9('0x42')](_0x26dc99[_0x93c9('0x4b')],function(_0x4e127b){var _0x3fb407={};_0x3fb407[_0x4e127b]={'$like':'%'+_0x36c946[_0x93c9('0x48')][_0x93c9('0x52')]+'%'};return _0x3fb407;})});}_0x26dc99=_[_0x93c9('0x6b')]({},_0x26dc99,_0x36c946[_0x93c9('0x54')]);return db[_0x93c9('0x6c')][_0x93c9('0x57')](_0x26dc99);}})[_0x93c9('0x22')](function(_0x10128b){if(_0x10128b){return db['User'][_0x93c9('0x6d')]({'where':{'id':_[_0x93c9('0x42')](_0x10128b,_0x93c9('0x6e')),'role':_0x93c9('0x6f')},'attributes':['id',_0x93c9('0x3f'),'chatPause',_0x93c9('0x70'),'createdAt']});}})['then'](function(_0x316def){if(_0x316def){return{'count':_0x316def['count'],'rows':_[_0x93c9('0x42')](_0x316def[_0x93c9('0x58')],function(_0x5dc1e9){return{'membername':_0x5dc1e9[_0x93c9('0x3f')],'UserId':_0x5dc1e9['id'],'queue_name':_0x3ddf57[_0x93c9('0x3f')],'ChatQueueId':_0x3ddf57['id'],'interface':util['format']('%s/%s',_0x93c9('0x71'),_0x5dc1e9[_0x93c9('0x3f')]),'penalty':0x0,'paused':_0x5dc1e9['chatPause'],'createdAt':_0x5dc1e9[_0x93c9('0x72')],'updatedAt':_0x5dc1e9['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x93c9('0x22')](respondWithFilteredResult(_0x3d1b4a,_0x26dc99))[_0x93c9('0x2d')](handleError(_0x3d1b4a,null));};exports[_0x93c9('0x73')]=function(_0x407358,_0x5650e5,_0x57af10){var _0x441a73={};var _0x270815={};var _0x2a11f2;var _0x22d5b8;return db[_0x93c9('0x43')][_0x93c9('0x68')]({'where':{'id':_0x407358[_0x93c9('0x59')]['id']}})[_0x93c9('0x22')](handleEntityNotFound(_0x5650e5,null))['then'](function(_0x55d0cb){if(_0x55d0cb){_0x2a11f2=_0x55d0cb;_0x270815['model']=_[_0x93c9('0x49')](db[_0x93c9('0x74')]['rawAttributes']);_0x270815[_0x93c9('0x48')]=_['keys'](_0x407358[_0x93c9('0x48')]);_0x270815['filters']=_[_0x93c9('0x5a')](_0x270815[_0x93c9('0x47')],_0x270815[_0x93c9('0x48')]);_0x441a73[_0x93c9('0x4b')]=_[_0x93c9('0x5a')](_0x270815['model'],qs['fields'](_0x407358[_0x93c9('0x48')][_0x93c9('0x4c')]));_0x441a73[_0x93c9('0x4b')]=_0x441a73['attributes'][_0x93c9('0x4d')]?_0x441a73[_0x93c9('0x4b')]:_0x270815['model'];_0x441a73[_0x93c9('0x69')]=qs[_0x93c9('0x50')](_0x407358['query']['sort']);_0x441a73[_0x93c9('0x53')]=qs[_0x93c9('0x4a')](_['pick'](_0x407358[_0x93c9('0x48')],_0x270815[_0x93c9('0x4a')]));if(_0x407358[_0x93c9('0x48')][_0x93c9('0x52')]){_0x441a73[_0x93c9('0x53')]=_['merge'](_0x441a73[_0x93c9('0x53')],{'$or':_[_0x93c9('0x42')](_0x441a73['attributes'],function(_0x273d42){var _0x3dc719={};_0x3dc719[_0x273d42]={'$like':'%'+_0x407358['query']['filter']+'%'};return _0x3dc719;})});}_0x441a73=_['merge']({},_0x441a73,_0x407358[_0x93c9('0x54')]);return _0x2a11f2[_0x93c9('0x73')](_0x441a73);}})[_0x93c9('0x22')](function(_0x204dac){if(_0x204dac){_0x22d5b8=_0x204dac[_0x93c9('0x4d')];if(!_0x407358[_0x93c9('0x48')][_0x93c9('0x4e')](_0x93c9('0x4f'))){_0x441a73[_0x93c9('0x33')]=qs[_0x93c9('0x33')](_0x407358['query'][_0x93c9('0x33')]);_0x441a73[_0x93c9('0x30')]=qs['offset'](_0x407358[_0x93c9('0x48')][_0x93c9('0x30')]);}return _0x2a11f2[_0x93c9('0x73')](_0x441a73);}})[_0x93c9('0x22')](function(_0x1882f0){if(_0x1882f0){return _0x1882f0?{'count':_0x22d5b8,'rows':_0x1882f0}:null;}})['then'](respondWithResult(_0x5650e5,null))[_0x93c9('0x2d')](handleError(_0x5650e5,null));};exports[_0x93c9('0x75')]=function(_0x4d6783,_0x42c8fa,_0x2acf0e){var _0x1fa48a=_0x4d6783[_0x93c9('0x5d')]['ids'];return db[_0x93c9('0x74')]['findAll']({'where':{'id':_0x1fa48a},'attributes':['id'],'include':[{'model':db[_0x93c9('0x76')],'as':_0x93c9('0x77'),'attributes':['id',_0x93c9('0x3f'),_0x93c9('0x78'),_0x93c9('0x79'),_0x93c9('0x7a')],'raw':!![]}]})[_0x93c9('0x22')](function(_0x46af7b){if(_0x46af7b){var _0x5a5f43=_[_0x93c9('0x7b')](_0x46af7b,function(_0x3039e0){var _0x4f71f6=_0x3039e0[_0x93c9('0x3a')]({'plain':!![]});return _0x4f71f6[_0x93c9('0x77')];});return db[_0x93c9('0x43')][_0x93c9('0x5b')]({'where':{'id':_0x4d6783[_0x93c9('0x59')]['id']}})[_0x93c9('0x22')](function(_0x378eb9){return db['sequelize'][_0x93c9('0x7c')](function(_0x2b7e89){return _0x378eb9['addTeams'](_0x1fa48a,{'transaction':_0x2b7e89})[_0x93c9('0x22')](function(){return BPromise[_0x93c9('0x7d')](_0x5a5f43,function(_0x11d4a9){return db['UserChatQueue'][_0x93c9('0x7e')]({'where':{'UserId':_0x11d4a9['id'],'ChatQueueId':_0x4d6783[_0x93c9('0x59')]['id']},'transaction':_0x2b7e89});});})['then'](function(){_0x5a5f43['forEach'](function(_0x1ecfe2){socket[_0x93c9('0x7f')](_0x93c9('0x80'),{'UserId':_0x1ecfe2['id'],'ChatQueueId':_0x378eb9['id']});});});});});}})[_0x93c9('0x22')](respondWithStatusCode(_0x42c8fa,null))[_0x93c9('0x2d')](handleError(_0x42c8fa,null));};exports[_0x93c9('0x81')]=function(_0x50b15c,_0x5760e5,_0xd7b5cb){return db[_0x93c9('0x74')]['findAll']({'where':{'id':_0x50b15c['query']['ids']},'attributes':['id'],'include':[{'model':db[_0x93c9('0x76')],'as':_0x93c9('0x77'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5760e5,null))[_0x93c9('0x22')](function(_0x45a769){var _0x3a1a8f=_[_0x93c9('0x42')](_0x45a769,'id');var _0x26d7c8=[];var _0x90bb=[];var _0x529a52=squel[_0x93c9('0x82')]();_0x529a52[_0x93c9('0x83')](_0x93c9('0x84'))[_0x93c9('0x85')](_0x93c9('0x86'),'tq')[_0x93c9('0x87')](_0x93c9('0x88'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x93c9('0x53')](_0x93c9('0x89'),_0x50b15c['params']['id']);for(var _0x1030e0=0x0;_0x1030e0<_0x45a769[_0x93c9('0x4d')];_0x1030e0+=0x1){let _0x361c97=_0x45a769[_0x1030e0];for(var _0x40ab32=0x0;_0x40ab32<_0x361c97[_0x93c9('0x77')]['length'];_0x40ab32+=0x1){let _0x9e2a08=_0x361c97[_0x93c9('0x77')][_0x40ab32];var _0x52bbac=_0x529a52['clone']();_0x52bbac[_0x93c9('0x53')]('ut.UserId\x20=\x20?',_0x9e2a08['id']);_0x90bb['push'](db[_0x93c9('0x8a')]['query'](_0x52bbac[_0x93c9('0x8b')](),{'type':db[_0x93c9('0x8a')]['QueryTypes'][_0x93c9('0x8c')]})[_0x93c9('0x22')](function(_0x14aaed){if(_0x14aaed[_0x93c9('0x4d')]===0x1){return _0x9e2a08['id'];}else{var _0x351c0b=_['every'](_[_0x93c9('0x42')](_0x14aaed,_0x93c9('0x8d')),function(_0x1496e1){return _[_0x93c9('0x8e')](_0x3a1a8f,_0x1496e1);});if(_0x351c0b){return _0x9e2a08['id'];}}}));}}return BPromise[_0x93c9('0x8f')](_0x90bb)[_0x93c9('0x22')](function(_0x1f1a65){_0x26d7c8=_(_0x26d7c8)[_0x93c9('0x90')](_0x1f1a65)['compact']()[_0x93c9('0x91')]();return db['ChatQueue'][_0x93c9('0x5b')]({'where':{'id':_0x50b15c[_0x93c9('0x59')]['id']}})['then'](function(_0x4ac921){return db[_0x93c9('0x8a')][_0x93c9('0x7c')](function(_0x1777ff){return _0x4ac921[_0x93c9('0x81')](_0x50b15c[_0x93c9('0x48')][_0x93c9('0x92')],{'transaction':_0x1777ff})[_0x93c9('0x22')](function(){if(!_['isEmpty'](_0x26d7c8)){return _0x4ac921[_0x93c9('0x93')](_0x26d7c8,{'transaction':_0x1777ff});}})[_0x93c9('0x22')](function(){_0x26d7c8[_0x93c9('0x94')](function(_0x5496cb){socket[_0x93c9('0x7f')](_0x93c9('0x95'),{'UserId':_0x5496cb,'ChatQueueId':_0x4ac921['id']});});});});});});})[_0x93c9('0x22')](respondWithStatusCode(_0x5760e5,null))[_0x93c9('0x2d')](handleError(_0x5760e5,null));};exports[_0x93c9('0x96')]=function(_0x1a633b,_0x5138de,_0x47c1c9){return db[_0x93c9('0x43')][_0x93c9('0x5b')]({'where':{'id':_0x1a633b[_0x93c9('0x59')]['id']}})['then'](handleEntityNotFound(_0x5138de,null))['then'](function(_0x23a9d1){if(_0x23a9d1){return _0x23a9d1[_0x93c9('0x96')](_0x1a633b[_0x93c9('0x5d')]['ids'],_['omit'](_0x1a633b[_0x93c9('0x5d')],[_0x93c9('0x92'),'id'])||{})[_0x93c9('0x97')](function(_0x4d6f1c){for(var _0x225af6=0x0;_0x225af6<_0x1a633b['body'][_0x93c9('0x92')][_0x93c9('0x4d')];_0x225af6+=0x1){socket[_0x93c9('0x7f')](_0x93c9('0x80'),{'UserId':Number(_0x1a633b[_0x93c9('0x5d')]['ids'][_0x225af6]),'ChatQueueId':Number(_0x1a633b[_0x93c9('0x59')]['id'])});}return _0x4d6f1c;});}})[_0x93c9('0x22')](respondWithResult(_0x5138de,null))['catch'](handleError(_0x5138de,null));};exports[_0x93c9('0x93')]=function(_0x14e80c,_0x210db3,_0x59794d){return db['ChatQueue'][_0x93c9('0x5b')]({'where':{'id':_0x14e80c['params']['id']}})[_0x93c9('0x22')](handleEntityNotFound(_0x210db3,null))[_0x93c9('0x22')](function(_0x23234b){if(_0x23234b){return _0x23234b[_0x93c9('0x93')](_0x14e80c['query'][_0x93c9('0x92')])['then'](function(){if(_[_0x93c9('0x98')](_0x14e80c[_0x93c9('0x48')][_0x93c9('0x92')])){for(var _0x21de1b=0x0;_0x21de1b<_0x14e80c[_0x93c9('0x48')][_0x93c9('0x92')][_0x93c9('0x4d')];_0x21de1b+=0x1){socket[_0x93c9('0x7f')](_0x93c9('0x95'),{'UserId':Number(_0x14e80c['query'][_0x93c9('0x92')][_0x21de1b]),'ChatQueueId':Number(_0x14e80c[_0x93c9('0x59')]['id'])});}}else{socket[_0x93c9('0x7f')]('userChatQueue:remove',{'UserId':Number(_0x14e80c[_0x93c9('0x48')]['ids']),'ChatQueueId':Number(_0x14e80c[_0x93c9('0x59')]['id'])});}});}})[_0x93c9('0x22')](respondWithStatusCode(_0x210db3,null))[_0x93c9('0x2d')](handleError(_0x210db3,null));};exports[_0x93c9('0x99')]=function(_0x2356ce,_0x2d8c1f,_0xa6e824){var _0x2e4461={};var _0x36b778={};var _0x359b21;var _0x3ad856;return db[_0x93c9('0x43')][_0x93c9('0x68')]({'where':{'id':_0x2356ce['params']['id']}})[_0x93c9('0x22')](handleEntityNotFound(_0x2d8c1f,null))[_0x93c9('0x22')](function(_0x3c2b5b){if(_0x3c2b5b){_0x359b21=_0x3c2b5b;_0x36b778['model']=_[_0x93c9('0x49')](db[_0x93c9('0x76')][_0x93c9('0x9a')]);_0x36b778['query']=_[_0x93c9('0x49')](_0x2356ce[_0x93c9('0x48')]);_0x36b778[_0x93c9('0x4a')]=_[_0x93c9('0x5a')](_0x36b778['model'],_0x36b778[_0x93c9('0x48')]);_0x2e4461[_0x93c9('0x4b')]=_['intersection'](_0x36b778[_0x93c9('0x47')],qs[_0x93c9('0x4c')](_0x2356ce[_0x93c9('0x48')][_0x93c9('0x4c')]));_0x2e4461['attributes']=_0x2e4461[_0x93c9('0x4b')][_0x93c9('0x4d')]?_0x2e4461['attributes']:_0x36b778[_0x93c9('0x47')];_0x2e4461[_0x93c9('0x69')]=qs['sort'](_0x2356ce[_0x93c9('0x48')][_0x93c9('0x50')]);_0x2e4461[_0x93c9('0x53')]=qs[_0x93c9('0x4a')](_[_0x93c9('0x51')](_0x2356ce[_0x93c9('0x48')],_0x36b778['filters']));if(_0x2356ce[_0x93c9('0x48')][_0x93c9('0x52')]){_0x2e4461['where']=_[_0x93c9('0x6b')](_0x2e4461[_0x93c9('0x53')],{'$or':_[_0x93c9('0x42')](_0x2e4461['attributes'],function(_0x5a5c28){var _0x111d8a={};_0x111d8a[_0x5a5c28]={'$like':'%'+_0x2356ce[_0x93c9('0x48')]['filter']+'%'};return _0x111d8a;})});}_0x2e4461=_[_0x93c9('0x6b')]({},_0x2e4461,_0x2356ce[_0x93c9('0x54')]);return _0x359b21[_0x93c9('0x99')](_0x2e4461);}})[_0x93c9('0x22')](function(_0x276794){if(_0x276794){_0x3ad856=_0x276794['length'];if(!_0x2356ce[_0x93c9('0x48')][_0x93c9('0x4e')](_0x93c9('0x4f'))){_0x2e4461[_0x93c9('0x33')]=qs[_0x93c9('0x33')](_0x2356ce[_0x93c9('0x48')][_0x93c9('0x33')]);_0x2e4461[_0x93c9('0x30')]=qs[_0x93c9('0x30')](_0x2356ce[_0x93c9('0x48')]['offset']);}return _0x359b21[_0x93c9('0x99')](_0x2e4461);}})[_0x93c9('0x22')](function(_0x279277){if(_0x279277){return _0x279277?{'count':_0x3ad856,'rows':_0x279277}:null;}})[_0x93c9('0x22')](respondWithResult(_0x2d8c1f,null))[_0x93c9('0x2d')](handleError(_0x2d8c1f,null));};
\ No newline at end of file
+var _0xa9fd=['./chatQueue.socket','request','then','info','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','destroy','get','UserProfileResource','end','stack','name','index','map','ChatQueue','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','update','describe','findOne','UserChatQueue','nolimit','pick','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','SIP','getTeams','Team','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','emit','userChatQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','includes','all','union','isEmpty','removeAgents','forEach','addAgents','omit','spread','isArray','userChatQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter'];(function(_0x430a79,_0x17b2af){var _0xda6181=function(_0x488aca){while(--_0x488aca){_0x430a79['push'](_0x430a79['shift']());}};_0xda6181(++_0x17b2af);}(_0xa9fd,0x7a));var _0xda9f=function(_0x50ee48,_0xd212a){_0x50ee48=_0x50ee48-0x0;var _0x2ea6b6=_0xa9fd[_0x50ee48];return _0x2ea6b6;};'use strict';var emlformat=require(_0xda9f('0x0'));var rimraf=require(_0xda9f('0x1'));var zipdir=require(_0xda9f('0x2'));var jsonpatch=require(_0xda9f('0x3'));var rp=require(_0xda9f('0x4'));var moment=require(_0xda9f('0x5'));var BPromise=require(_0xda9f('0x6'));var Mustache=require(_0xda9f('0x7'));var util=require(_0xda9f('0x8'));var path=require(_0xda9f('0x9'));var sox=require('sox');var csv=require(_0xda9f('0xa'));var ejs=require(_0xda9f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xda9f('0xc'));var squel=require(_0xda9f('0xd'));var crypto=require(_0xda9f('0xe'));var jsforce=require(_0xda9f('0xf'));var deskjs=require(_0xda9f('0x10'));var toCsv=require(_0xda9f('0xa'));var querystring=require(_0xda9f('0x11'));var Papa=require(_0xda9f('0x12'));var Redis=require(_0xda9f('0x13'));var authService=require(_0xda9f('0x14'));var qs=require(_0xda9f('0x15'));var as=require(_0xda9f('0x16'));var hardwareService=require(_0xda9f('0x17'));var logger=require('../../config/logger')(_0xda9f('0x18'));var utils=require(_0xda9f('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xda9f('0x1a'));var db=require(_0xda9f('0x1b'))['db'];config[_0xda9f('0x1c')]=_[_0xda9f('0x1d')](config['redis'],{'host':_0xda9f('0x1e'),'port':0x18eb});var socket=require(_0xda9f('0x1f'))(new Redis(config[_0xda9f('0x1c')]));require(_0xda9f('0x20'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x52ed2b,_0x399872,_0x51bf41,_0xf47add){return new BPromise(function(_0x480ec0,_0x1b9e44){var _0x215f57=_0xf47add||client;return _0x215f57[_0xda9f('0x21')](_0x52ed2b,_0x51bf41)[_0xda9f('0x22')](function(_0x1b38ce){logger[_0xda9f('0x23')]('ChatQueue,\x20%s,\x20%s',_0x399872,'request\x20sent');logger['debug'](_0xda9f('0x24'),_0x399872,_0xda9f('0x25'),JSON[_0xda9f('0x26')](_0x1b38ce));if(_0x1b38ce[_0xda9f('0x27')]){if(_0x1b38ce[_0xda9f('0x27')]['code']===0x1f4){logger[_0xda9f('0x27')]('ChatQueue,\x20%s,\x20%s',_0x399872,_0x1b38ce[_0xda9f('0x27')][_0xda9f('0x28')]);return _0x1b9e44(_0x1b38ce[_0xda9f('0x27')][_0xda9f('0x28')]);}logger[_0xda9f('0x27')]('ChatQueue,\x20%s,\x20%s',_0x399872,_0x1b38ce[_0xda9f('0x27')][_0xda9f('0x28')]);return _0x480ec0(_0x1b38ce[_0xda9f('0x27')]['message']);}else{logger[_0xda9f('0x23')]('ChatQueue,\x20%s,\x20%s',_0x399872,_0xda9f('0x25'));_0x480ec0(_0x1b38ce['result'][_0xda9f('0x28')]);}})[_0xda9f('0x29')](function(_0x2ab039){logger['error']('ChatQueue,\x20%s,\x20%s',_0x399872,_0x2ab039);_0x1b9e44(_0x2ab039);});});}function respondWithStatusCode(_0x2fafed,_0x20d807){_0x20d807=_0x20d807||0xcc;return function(_0x1feb55){if(_0x1feb55){return _0x2fafed[_0xda9f('0x2a')](_0x20d807);}return _0x2fafed[_0xda9f('0x2b')](_0x20d807)['end']();};}function respondWithResult(_0x374b66,_0x3335ef){_0x3335ef=_0x3335ef||0xc8;return function(_0x31b1c7){if(_0x31b1c7){return _0x374b66[_0xda9f('0x2b')](_0x3335ef)[_0xda9f('0x2c')](_0x31b1c7);}};}function respondWithFilteredResult(_0x25b61d,_0x20f742){return function(_0x289700){if(_0x289700){var _0x4d53ae=typeof _0x20f742[_0xda9f('0x2d')]==='undefined'&&typeof _0x20f742[_0xda9f('0x2e')]===_0xda9f('0x2f');var _0x57fad3=_0x289700[_0xda9f('0x30')];var _0x59ff12=_0x4d53ae?0x0:_0x20f742[_0xda9f('0x2d')];var _0x4f0084=_0x4d53ae?_0x289700[_0xda9f('0x30')]:_0x20f742[_0xda9f('0x2d')]+_0x20f742[_0xda9f('0x2e')];var _0x3d1571;if(_0x4f0084>=_0x57fad3){_0x4f0084=_0x57fad3;_0x3d1571=0xc8;}else{_0x3d1571=0xce;}_0x25b61d[_0xda9f('0x2b')](_0x3d1571);return _0x25b61d[_0xda9f('0x31')](_0xda9f('0x32'),_0x59ff12+'-'+_0x4f0084+'/'+_0x57fad3)[_0xda9f('0x2c')](_0x289700);}return null;};}function patchUpdates(_0x5c5909){return function(_0x13fdc6){try{jsonpatch[_0xda9f('0x33')](_0x13fdc6,_0x5c5909,!![]);}catch(_0x32f1b3){return BPromise[_0xda9f('0x34')](_0x32f1b3);}return _0x13fdc6[_0xda9f('0x35')]();};}function saveUpdates(_0x3cd4df,_0x1f3ecb){return function(_0x55ee60){if(_0x55ee60){return _0x55ee60['update'](_0x3cd4df)[_0xda9f('0x22')](function(_0x50492f){return _0x50492f;});}return null;};}function removeEntity(_0x11005d,_0x126037){return function(_0x57d6bc){if(_0x57d6bc){return _0x57d6bc[_0xda9f('0x36')]()[_0xda9f('0x22')](function(){var _0x576f7a=_0x57d6bc[_0xda9f('0x37')]({'plain':!![]});var _0x338181='ChatQueues';return db[_0xda9f('0x38')][_0xda9f('0x36')]({'where':{'type':_0x338181,'resourceId':_0x576f7a['id']}})['then'](function(){return _0x57d6bc;});})['then'](function(){_0x11005d[_0xda9f('0x2b')](0xcc)[_0xda9f('0x39')]();});}};}function handleEntityNotFound(_0xa63825,_0x323a1d){return function(_0x52bd5b){if(!_0x52bd5b){_0xa63825[_0xda9f('0x2a')](0x194);}return _0x52bd5b;};}function handleError(_0x351775,_0x2993b9){_0x2993b9=_0x2993b9||0x1f4;return function(_0x363a23){logger[_0xda9f('0x27')](_0x363a23[_0xda9f('0x3a')]);if(_0x363a23[_0xda9f('0x3b')]){delete _0x363a23[_0xda9f('0x3b')];}_0x351775[_0xda9f('0x2b')](_0x2993b9)['send'](_0x363a23);};}exports[_0xda9f('0x3c')]=function(_0x1a6973,_0x51e64e){var _0x4246bf={},_0xad12a7={},_0x2f1169={'count':0x0,'rows':[]};var _0x1f108d=_[_0xda9f('0x3d')](db[_0xda9f('0x3e')][_0xda9f('0x3f')],function(_0x4a48da){return{'name':_0x4a48da[_0xda9f('0x40')],'type':_0x4a48da[_0xda9f('0x41')][_0xda9f('0x42')]};});_0xad12a7[_0xda9f('0x43')]=_[_0xda9f('0x3d')](_0x1f108d,_0xda9f('0x3b'));_0xad12a7[_0xda9f('0x44')]=_['keys'](_0x1a6973[_0xda9f('0x44')]);_0xad12a7[_0xda9f('0x45')]=_[_0xda9f('0x46')](_0xad12a7[_0xda9f('0x43')],_0xad12a7[_0xda9f('0x44')]);_0x4246bf['attributes']=_['intersection'](_0xad12a7['model'],qs['fields'](_0x1a6973['query'][_0xda9f('0x47')]));_0x4246bf['attributes']=_0x4246bf[_0xda9f('0x48')][_0xda9f('0x49')]?_0x4246bf[_0xda9f('0x48')]:_0xad12a7[_0xda9f('0x43')];if(!_0x1a6973[_0xda9f('0x44')][_0xda9f('0x4a')]('nolimit')){_0x4246bf[_0xda9f('0x2e')]=qs[_0xda9f('0x2e')](_0x1a6973[_0xda9f('0x44')]['limit']);_0x4246bf['offset']=qs[_0xda9f('0x2d')](_0x1a6973[_0xda9f('0x44')]['offset']);}_0x4246bf[_0xda9f('0x4b')]=qs['sort'](_0x1a6973[_0xda9f('0x44')][_0xda9f('0x4c')]);_0x4246bf['where']=qs[_0xda9f('0x45')](_['pick'](_0x1a6973['query'],_0xad12a7[_0xda9f('0x45')]),_0x1f108d);if(_0x1a6973['query'][_0xda9f('0x4d')]){_0x4246bf[_0xda9f('0x4e')]=_[_0xda9f('0x4f')](_0x4246bf[_0xda9f('0x4e')],{'$or':_[_0xda9f('0x3d')](_0x1f108d,function(_0x128b29){if(_0x128b29[_0xda9f('0x41')]!==_0xda9f('0x50')){var _0x3c6559={};_0x3c6559[_0x128b29[_0xda9f('0x3b')]]={'$like':'%'+_0x1a6973[_0xda9f('0x44')]['filter']+'%'};return _0x3c6559;}})});}_0x4246bf=_[_0xda9f('0x4f')]({},_0x4246bf,_0x1a6973[_0xda9f('0x51')]);var _0x326f08={'where':_0x4246bf[_0xda9f('0x4e')]};return db[_0xda9f('0x3e')]['count'](_0x326f08)[_0xda9f('0x22')](function(_0x207cc5){_0x2f1169[_0xda9f('0x30')]=_0x207cc5;if(_0x1a6973[_0xda9f('0x44')][_0xda9f('0x52')]){_0x4246bf['include']=[{'all':!![]}];}return db[_0xda9f('0x3e')][_0xda9f('0x53')](_0x4246bf);})['then'](function(_0x5059bd){_0x2f1169[_0xda9f('0x54')]=_0x5059bd;return _0x2f1169;})[_0xda9f('0x22')](respondWithFilteredResult(_0x51e64e,_0x4246bf))[_0xda9f('0x29')](handleError(_0x51e64e,null));};exports[_0xda9f('0x55')]=function(_0x3dae68,_0x221a90){var _0x16c077={'raw':!![],'where':{'id':_0x3dae68[_0xda9f('0x56')]['id']}},_0xeed54a={};_0xeed54a['model']=_[_0xda9f('0x57')](db[_0xda9f('0x3e')]['rawAttributes']);_0xeed54a[_0xda9f('0x44')]=_[_0xda9f('0x57')](_0x3dae68['query']);_0xeed54a[_0xda9f('0x45')]=_[_0xda9f('0x46')](_0xeed54a[_0xda9f('0x43')],_0xeed54a[_0xda9f('0x44')]);_0x16c077[_0xda9f('0x48')]=_['intersection'](_0xeed54a[_0xda9f('0x43')],qs[_0xda9f('0x47')](_0x3dae68[_0xda9f('0x44')]['fields']));_0x16c077[_0xda9f('0x48')]=_0x16c077[_0xda9f('0x48')]['length']?_0x16c077['attributes']:_0xeed54a['model'];if(_0x3dae68[_0xda9f('0x44')]['includeAll']){_0x16c077[_0xda9f('0x58')]=[{'all':!![]}];}_0x16c077=_[_0xda9f('0x4f')]({},_0x16c077,_0x3dae68['options']);return db[_0xda9f('0x3e')][_0xda9f('0x59')](_0x16c077)[_0xda9f('0x22')](handleEntityNotFound(_0x221a90,null))[_0xda9f('0x22')](respondWithResult(_0x221a90,null))[_0xda9f('0x29')](handleError(_0x221a90,null));};exports[_0xda9f('0x5a')]=function(_0x6dfec3,_0x568190){return db['ChatQueue'][_0xda9f('0x5a')](_0x6dfec3[_0xda9f('0x5b')],{})['then'](function(_0x29215f){var _0x2021cc=_0x6dfec3[_0xda9f('0x5c')][_0xda9f('0x37')]({'plain':!![]});if(!_0x2021cc)throw new Error(_0xda9f('0x5d'));if(_0x2021cc['role']===_0xda9f('0x5c')){var _0x26dd63=_0x29215f[_0xda9f('0x37')]({'plain':!![]});var _0x1019c2='ChatQueues';return db[_0xda9f('0x5e')]['find']({'where':{'name':_0x1019c2,'userProfileId':_0x2021cc[_0xda9f('0x5f')]},'raw':!![]})['then'](function(_0x5f3fd2){if(_0x5f3fd2&&_0x5f3fd2[_0xda9f('0x60')]===0x0){return db[_0xda9f('0x38')][_0xda9f('0x5a')]({'name':_0x26dd63[_0xda9f('0x3b')],'resourceId':_0x26dd63['id'],'type':_0x5f3fd2[_0xda9f('0x3b')],'sectionId':_0x5f3fd2['id']},{})[_0xda9f('0x22')](function(){return _0x29215f;});}else{return _0x29215f;}})['catch'](function(_0x55310b){logger[_0xda9f('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x55310b);throw _0x55310b;});}return _0x29215f;})[_0xda9f('0x22')](respondWithResult(_0x568190,0xc9))[_0xda9f('0x29')](handleError(_0x568190,null));};exports[_0xda9f('0x61')]=function(_0x334f35,_0x24cae9){if(_0x334f35[_0xda9f('0x5b')]['id']){delete _0x334f35['body']['id'];}return db[_0xda9f('0x3e')]['find']({'where':{'id':_0x334f35[_0xda9f('0x56')]['id']}})[_0xda9f('0x22')](handleEntityNotFound(_0x24cae9,null))['then'](saveUpdates(_0x334f35[_0xda9f('0x5b')],null))[_0xda9f('0x22')](respondWithResult(_0x24cae9,null))[_0xda9f('0x29')](handleError(_0x24cae9,null));};exports[_0xda9f('0x36')]=function(_0x2c3c98,_0x85cd0d){return db[_0xda9f('0x3e')][_0xda9f('0x59')]({'where':{'id':_0x2c3c98[_0xda9f('0x56')]['id']}})[_0xda9f('0x22')](handleEntityNotFound(_0x85cd0d,null))[_0xda9f('0x22')](removeEntity(_0x85cd0d,null))[_0xda9f('0x29')](handleError(_0x85cd0d,null));};exports[_0xda9f('0x62')]=function(_0x43797e,_0x4b1bb9){return db[_0xda9f('0x3e')]['describe']()['then'](respondWithResult(_0x4b1bb9,null))[_0xda9f('0x29')](handleError(_0x4b1bb9,null));};exports['getMembers']=function(_0x4d8ca4,_0x1fc91e,_0x1ea413){var _0x79fec2={'raw':!![],'where':{}},_0x504263={},_0x25f673;return db[_0xda9f('0x3e')][_0xda9f('0x63')]({'where':{'id':_0x4d8ca4[_0xda9f('0x56')]['id']}})['then'](handleEntityNotFound(_0x1fc91e,null))['then'](function(_0x3ef69a){if(_0x3ef69a){_0x25f673=_0x3ef69a[_0xda9f('0x37')]({'plain':!![]});_0x504263[_0xda9f('0x43')]=_['keys'](db[_0xda9f('0x64')][_0xda9f('0x3f')]);_0x504263['query']=_[_0xda9f('0x57')](_0x4d8ca4[_0xda9f('0x44')]);_0x504263['filters']=_[_0xda9f('0x46')](_0x504263[_0xda9f('0x43')],_0x504263['query']);_0x79fec2[_0xda9f('0x48')]=_['intersection'](_0x504263[_0xda9f('0x43')],qs['fields'](_0x4d8ca4[_0xda9f('0x44')][_0xda9f('0x47')]));_0x79fec2[_0xda9f('0x48')]=_0x79fec2[_0xda9f('0x48')][_0xda9f('0x49')]?_0x79fec2['attributes']:_0x504263[_0xda9f('0x43')];if(!_0x4d8ca4[_0xda9f('0x44')][_0xda9f('0x4a')](_0xda9f('0x65'))){_0x79fec2[_0xda9f('0x2e')]=qs[_0xda9f('0x2e')](_0x4d8ca4[_0xda9f('0x44')][_0xda9f('0x2e')]);_0x79fec2[_0xda9f('0x2d')]=qs[_0xda9f('0x2d')](_0x4d8ca4[_0xda9f('0x44')][_0xda9f('0x2d')]);}_0x79fec2['order']=qs[_0xda9f('0x4c')](_0x4d8ca4[_0xda9f('0x44')][_0xda9f('0x4c')]);_0x79fec2['where']=qs['filters'](_[_0xda9f('0x66')](_0x4d8ca4[_0xda9f('0x44')],_0x504263[_0xda9f('0x45')]));_0x79fec2['where'][_0xda9f('0x67')]=_0x3ef69a['id'];if(_0x4d8ca4[_0xda9f('0x44')][_0xda9f('0x4d')]){_0x79fec2['where']=_[_0xda9f('0x4f')](_0x79fec2['where'],{'$or':_[_0xda9f('0x3d')](_0x79fec2[_0xda9f('0x48')],function(_0x382fb3){var _0x4339d3={};_0x4339d3[_0x382fb3]={'$like':'%'+_0x4d8ca4[_0xda9f('0x44')][_0xda9f('0x4d')]+'%'};return _0x4339d3;})});}_0x79fec2=_[_0xda9f('0x4f')]({},_0x79fec2,_0x4d8ca4['options']);return db[_0xda9f('0x64')][_0xda9f('0x53')](_0x79fec2);}})[_0xda9f('0x22')](function(_0x400437){if(_0x400437){return db[_0xda9f('0x68')][_0xda9f('0x69')]({'where':{'id':_[_0xda9f('0x3d')](_0x400437,_0xda9f('0x6a')),'role':_0xda9f('0x6b')},'attributes':['id','name',_0xda9f('0x6c'),_0xda9f('0x6d'),_0xda9f('0x6e')]});}})[_0xda9f('0x22')](function(_0x376054){if(_0x376054){return{'count':_0x376054[_0xda9f('0x30')],'rows':_[_0xda9f('0x3d')](_0x376054['rows'],function(_0x45c14d){return{'membername':_0x45c14d['name'],'UserId':_0x45c14d['id'],'queue_name':_0x25f673[_0xda9f('0x3b')],'ChatQueueId':_0x25f673['id'],'interface':util['format']('%s/%s',_0xda9f('0x6f'),_0x45c14d[_0xda9f('0x3b')]),'penalty':0x0,'paused':_0x45c14d[_0xda9f('0x6c')],'createdAt':_0x45c14d[_0xda9f('0x6e')],'updatedAt':_0x45c14d[_0xda9f('0x6d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xda9f('0x22')](respondWithFilteredResult(_0x1fc91e,_0x79fec2))[_0xda9f('0x29')](handleError(_0x1fc91e,null));};exports[_0xda9f('0x70')]=function(_0x4b1065,_0x530c53,_0x20dd59){var _0x5f14cb={};var _0x505e1e={};var _0x5e7ee1;var _0x57b568;return db[_0xda9f('0x3e')][_0xda9f('0x63')]({'where':{'id':_0x4b1065['params']['id']}})[_0xda9f('0x22')](handleEntityNotFound(_0x530c53,null))['then'](function(_0x1ce9bf){if(_0x1ce9bf){_0x5e7ee1=_0x1ce9bf;_0x505e1e['model']=_[_0xda9f('0x57')](db[_0xda9f('0x71')][_0xda9f('0x3f')]);_0x505e1e[_0xda9f('0x44')]=_[_0xda9f('0x57')](_0x4b1065[_0xda9f('0x44')]);_0x505e1e[_0xda9f('0x45')]=_[_0xda9f('0x46')](_0x505e1e['model'],_0x505e1e[_0xda9f('0x44')]);_0x5f14cb[_0xda9f('0x48')]=_['intersection'](_0x505e1e[_0xda9f('0x43')],qs[_0xda9f('0x47')](_0x4b1065['query'][_0xda9f('0x47')]));_0x5f14cb['attributes']=_0x5f14cb[_0xda9f('0x48')][_0xda9f('0x49')]?_0x5f14cb['attributes']:_0x505e1e[_0xda9f('0x43')];_0x5f14cb[_0xda9f('0x4b')]=qs[_0xda9f('0x4c')](_0x4b1065[_0xda9f('0x44')][_0xda9f('0x4c')]);_0x5f14cb[_0xda9f('0x4e')]=qs['filters'](_[_0xda9f('0x66')](_0x4b1065['query'],_0x505e1e[_0xda9f('0x45')]));if(_0x4b1065[_0xda9f('0x44')][_0xda9f('0x4d')]){_0x5f14cb['where']=_[_0xda9f('0x4f')](_0x5f14cb[_0xda9f('0x4e')],{'$or':_[_0xda9f('0x3d')](_0x5f14cb[_0xda9f('0x48')],function(_0x20419a){var _0x5a0cd8={};_0x5a0cd8[_0x20419a]={'$like':'%'+_0x4b1065[_0xda9f('0x44')][_0xda9f('0x4d')]+'%'};return _0x5a0cd8;})});}_0x5f14cb=_['merge']({},_0x5f14cb,_0x4b1065[_0xda9f('0x51')]);return _0x5e7ee1[_0xda9f('0x70')](_0x5f14cb);}})[_0xda9f('0x22')](function(_0x22e698){if(_0x22e698){_0x57b568=_0x22e698[_0xda9f('0x49')];if(!_0x4b1065[_0xda9f('0x44')][_0xda9f('0x4a')](_0xda9f('0x65'))){_0x5f14cb[_0xda9f('0x2e')]=qs[_0xda9f('0x2e')](_0x4b1065[_0xda9f('0x44')]['limit']);_0x5f14cb['offset']=qs['offset'](_0x4b1065[_0xda9f('0x44')][_0xda9f('0x2d')]);}return _0x5e7ee1[_0xda9f('0x70')](_0x5f14cb);}})[_0xda9f('0x22')](function(_0x5c039d){if(_0x5c039d){return _0x5c039d?{'count':_0x57b568,'rows':_0x5c039d}:null;}})['then'](respondWithResult(_0x530c53,null))['catch'](handleError(_0x530c53,null));};exports['addTeams']=function(_0x5e82f6,_0x15c0eb,_0x1bc341){var _0x2d96ce=_0x5e82f6[_0xda9f('0x5b')][_0xda9f('0x72')];return db[_0xda9f('0x71')][_0xda9f('0x53')]({'where':{'id':_0x2d96ce},'attributes':['id'],'include':[{'model':db['User'],'as':_0xda9f('0x73'),'attributes':['id',_0xda9f('0x3b'),'online',_0xda9f('0x74'),_0xda9f('0x75')],'raw':!![]}]})[_0xda9f('0x22')](function(_0x5b040c){if(_0x5b040c){var _0x2a1768=_[_0xda9f('0x76')](_0x5b040c,function(_0x30b720){var _0x26614f=_0x30b720[_0xda9f('0x37')]({'plain':!![]});return _0x26614f['Agents'];});return db[_0xda9f('0x3e')][_0xda9f('0x59')]({'where':{'id':_0x5e82f6[_0xda9f('0x56')]['id']}})[_0xda9f('0x22')](function(_0x581ee9){return db[_0xda9f('0x77')][_0xda9f('0x78')](function(_0x5742e7){return _0x581ee9['addTeams'](_0x2d96ce,{'transaction':_0x5742e7})[_0xda9f('0x22')](function(){return BPromise[_0xda9f('0x79')](_0x2a1768,function(_0x317d2b){return db[_0xda9f('0x64')][_0xda9f('0x7a')]({'where':{'UserId':_0x317d2b['id'],'ChatQueueId':_0x5e82f6[_0xda9f('0x56')]['id']},'transaction':_0x5742e7});});})[_0xda9f('0x22')](function(){_0x2a1768['forEach'](function(_0x558a1d){socket[_0xda9f('0x7b')](_0xda9f('0x7c'),{'UserId':_0x558a1d['id'],'ChatQueueId':_0x581ee9['id']});});});});});}})[_0xda9f('0x22')](respondWithStatusCode(_0x15c0eb,null))[_0xda9f('0x29')](handleError(_0x15c0eb,null));};exports[_0xda9f('0x7d')]=function(_0x28c537,_0x38516e,_0x7f1500){return db['Team']['findAll']({'where':{'id':_0x28c537[_0xda9f('0x44')][_0xda9f('0x72')]},'attributes':['id'],'include':[{'model':db[_0xda9f('0x68')],'as':_0xda9f('0x73'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x38516e,null))[_0xda9f('0x22')](function(_0x2f2fd0){var _0x24c31e=_[_0xda9f('0x3d')](_0x2f2fd0,'id');var _0x424a1f=[];var _0x2064a4=[];var _0x266935=squel[_0xda9f('0x7e')]();_0x266935[_0xda9f('0x7f')](_0xda9f('0x80'))[_0xda9f('0x81')](_0xda9f('0x82'),'tq')[_0xda9f('0x83')](_0xda9f('0x84'),'ut',_0xda9f('0x85'))['where'](_0xda9f('0x86'),_0x28c537[_0xda9f('0x56')]['id']);for(var _0x42566c=0x0;_0x42566c<_0x2f2fd0[_0xda9f('0x49')];_0x42566c+=0x1){let _0xb55c6f=_0x2f2fd0[_0x42566c];for(var _0x566b86=0x0;_0x566b86<_0xb55c6f[_0xda9f('0x73')][_0xda9f('0x49')];_0x566b86+=0x1){let _0x2b1f56=_0xb55c6f['Agents'][_0x566b86];var _0x25bc55=_0x266935[_0xda9f('0x87')]();_0x25bc55[_0xda9f('0x4e')](_0xda9f('0x88'),_0x2b1f56['id']);_0x2064a4[_0xda9f('0x89')](db['sequelize'][_0xda9f('0x44')](_0x25bc55[_0xda9f('0x8a')](),{'type':db[_0xda9f('0x77')][_0xda9f('0x8b')][_0xda9f('0x8c')]})['then'](function(_0x18b3c8){if(_0x18b3c8[_0xda9f('0x49')]===0x1){return _0x2b1f56['id'];}else{var _0x2dec32=_[_0xda9f('0x8d')](_['map'](_0x18b3c8,'TeamId'),function(_0x1f5695){return _[_0xda9f('0x8e')](_0x24c31e,_0x1f5695);});if(_0x2dec32){return _0x2b1f56['id'];}}}));}}return BPromise[_0xda9f('0x8f')](_0x2064a4)['then'](function(_0x2ab493){_0x424a1f=_(_0x424a1f)[_0xda9f('0x90')](_0x2ab493)['compact']()['value']();return db[_0xda9f('0x3e')][_0xda9f('0x59')]({'where':{'id':_0x28c537['params']['id']}})[_0xda9f('0x22')](function(_0x1e0b61){return db[_0xda9f('0x77')][_0xda9f('0x78')](function(_0x33f316){return _0x1e0b61[_0xda9f('0x7d')](_0x28c537[_0xda9f('0x44')]['ids'],{'transaction':_0x33f316})['then'](function(){if(!_[_0xda9f('0x91')](_0x424a1f)){return _0x1e0b61[_0xda9f('0x92')](_0x424a1f,{'transaction':_0x33f316});}})[_0xda9f('0x22')](function(){_0x424a1f[_0xda9f('0x93')](function(_0x5e56d7){socket[_0xda9f('0x7b')]('userChatQueue:remove',{'UserId':_0x5e56d7,'ChatQueueId':_0x1e0b61['id']});});});});});});})[_0xda9f('0x22')](respondWithStatusCode(_0x38516e,null))[_0xda9f('0x29')](handleError(_0x38516e,null));};exports[_0xda9f('0x94')]=function(_0x188529,_0x293e7d,_0x277680){return db[_0xda9f('0x3e')]['find']({'where':{'id':_0x188529[_0xda9f('0x56')]['id']}})[_0xda9f('0x22')](handleEntityNotFound(_0x293e7d,null))[_0xda9f('0x22')](function(_0x3b8bea){if(_0x3b8bea){return _0x3b8bea[_0xda9f('0x94')](_0x188529[_0xda9f('0x5b')]['ids'],_[_0xda9f('0x95')](_0x188529[_0xda9f('0x5b')],[_0xda9f('0x72'),'id'])||{})[_0xda9f('0x96')](function(_0x1ea105){for(var _0x3a8480=0x0;_0x3a8480<_0x188529[_0xda9f('0x5b')][_0xda9f('0x72')][_0xda9f('0x49')];_0x3a8480+=0x1){socket[_0xda9f('0x7b')](_0xda9f('0x7c'),{'UserId':Number(_0x188529['body'][_0xda9f('0x72')][_0x3a8480]),'ChatQueueId':Number(_0x188529[_0xda9f('0x56')]['id'])});}return _0x1ea105;});}})[_0xda9f('0x22')](respondWithResult(_0x293e7d,null))[_0xda9f('0x29')](handleError(_0x293e7d,null));};exports['removeAgents']=function(_0x23a366,_0x4bdfec,_0x5b356b){return db[_0xda9f('0x3e')][_0xda9f('0x59')]({'where':{'id':_0x23a366['params']['id']}})[_0xda9f('0x22')](handleEntityNotFound(_0x4bdfec,null))[_0xda9f('0x22')](function(_0x197504){if(_0x197504){return _0x197504[_0xda9f('0x92')](_0x23a366['query']['ids'])[_0xda9f('0x22')](function(){if(_[_0xda9f('0x97')](_0x23a366[_0xda9f('0x44')][_0xda9f('0x72')])){for(var _0x47a991=0x0;_0x47a991<_0x23a366[_0xda9f('0x44')]['ids']['length'];_0x47a991+=0x1){socket[_0xda9f('0x7b')]('userChatQueue:remove',{'UserId':Number(_0x23a366[_0xda9f('0x44')][_0xda9f('0x72')][_0x47a991]),'ChatQueueId':Number(_0x23a366[_0xda9f('0x56')]['id'])});}}else{socket['emit'](_0xda9f('0x98'),{'UserId':Number(_0x23a366[_0xda9f('0x44')]['ids']),'ChatQueueId':Number(_0x23a366['params']['id'])});}});}})[_0xda9f('0x22')](respondWithStatusCode(_0x4bdfec,null))[_0xda9f('0x29')](handleError(_0x4bdfec,null));};exports[_0xda9f('0x99')]=function(_0x2bace3,_0x4c1fe5,_0x6cb041){var _0x250379={};var _0x4e4d25={};var _0x10a6de;var _0x42bda5;return db[_0xda9f('0x3e')][_0xda9f('0x63')]({'where':{'id':_0x2bace3[_0xda9f('0x56')]['id']}})[_0xda9f('0x22')](handleEntityNotFound(_0x4c1fe5,null))[_0xda9f('0x22')](function(_0x69339d){if(_0x69339d){_0x10a6de=_0x69339d;_0x4e4d25[_0xda9f('0x43')]=_[_0xda9f('0x57')](db[_0xda9f('0x68')][_0xda9f('0x3f')]);_0x4e4d25['query']=_[_0xda9f('0x57')](_0x2bace3[_0xda9f('0x44')]);_0x4e4d25[_0xda9f('0x45')]=_['intersection'](_0x4e4d25[_0xda9f('0x43')],_0x4e4d25[_0xda9f('0x44')]);_0x250379['attributes']=_[_0xda9f('0x46')](_0x4e4d25[_0xda9f('0x43')],qs[_0xda9f('0x47')](_0x2bace3[_0xda9f('0x44')][_0xda9f('0x47')]));_0x250379[_0xda9f('0x48')]=_0x250379['attributes'][_0xda9f('0x49')]?_0x250379[_0xda9f('0x48')]:_0x4e4d25[_0xda9f('0x43')];_0x250379[_0xda9f('0x4b')]=qs['sort'](_0x2bace3[_0xda9f('0x44')][_0xda9f('0x4c')]);_0x250379[_0xda9f('0x4e')]=qs[_0xda9f('0x45')](_['pick'](_0x2bace3['query'],_0x4e4d25[_0xda9f('0x45')]));if(_0x2bace3['query'][_0xda9f('0x4d')]){_0x250379[_0xda9f('0x4e')]=_[_0xda9f('0x4f')](_0x250379[_0xda9f('0x4e')],{'$or':_[_0xda9f('0x3d')](_0x250379['attributes'],function(_0x532138){var _0x3a94c0={};_0x3a94c0[_0x532138]={'$like':'%'+_0x2bace3[_0xda9f('0x44')][_0xda9f('0x4d')]+'%'};return _0x3a94c0;})});}_0x250379=_[_0xda9f('0x4f')]({},_0x250379,_0x2bace3[_0xda9f('0x51')]);return _0x10a6de[_0xda9f('0x99')](_0x250379);}})[_0xda9f('0x22')](function(_0x147983){if(_0x147983){_0x42bda5=_0x147983[_0xda9f('0x49')];if(!_0x2bace3[_0xda9f('0x44')][_0xda9f('0x4a')](_0xda9f('0x65'))){_0x250379['limit']=qs[_0xda9f('0x2e')](_0x2bace3[_0xda9f('0x44')][_0xda9f('0x2e')]);_0x250379[_0xda9f('0x2d')]=qs[_0xda9f('0x2d')](_0x2bace3[_0xda9f('0x44')][_0xda9f('0x2d')]);}return _0x10a6de[_0xda9f('0x99')](_0x250379);}})['then'](function(_0x38eea4){if(_0x38eea4){return _0x38eea4?{'count':_0x42bda5,'rows':_0x38eea4}:null;}})['then'](respondWithResult(_0x4c1fe5,null))[_0xda9f('0x29')](handleError(_0x4c1fe5,null));};
\ No newline at end of file
index 96b9596..d8e3591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10f5=['exports','ChatQueue','setMaxListeners','save','emit','hasOwnProperty','hook'];(function(_0x23ea15,_0x2359c6){var _0x46723c=function(_0x2fdbc0){while(--_0x2fdbc0){_0x23ea15['push'](_0x23ea15['shift']());}};_0x46723c(++_0x2359c6);}(_0x10f5,0x166));var _0x510f=function(_0x11e05f,_0x995310){_0x11e05f=_0x11e05f-0x0;var _0x161c00=_0x10f5[_0x11e05f];return _0x161c00;};'use strict';var EventEmitter=require('events');var ChatQueue=require('../../mysqldb')['db'][_0x510f('0x0')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x510f('0x1')](0x0);var events={'afterCreate':_0x510f('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x320ab3){return function(_0x1ac218,_0x543ec9,_0x259012){ChatQueueEvents['emit'](_0x320ab3+':'+_0x1ac218['id'],_0x1ac218);ChatQueueEvents[_0x510f('0x3')](_0x320ab3,_0x1ac218);_0x259012(null);};}for(var e in events){if(events[_0x510f('0x4')](e)){var event=events[e];ChatQueue[_0x510f('0x5')](e,emitEvent(event));}}module[_0x510f('0x6')]=ChatQueueEvents;
\ No newline at end of file
+var _0x350d=['ChatQueue','save','update','remove','emit','hasOwnProperty','exports','events'];(function(_0x50fd99,_0x1b4679){var _0x12a19a=function(_0x10ec67){while(--_0x10ec67){_0x50fd99['push'](_0x50fd99['shift']());}};_0x12a19a(++_0x1b4679);}(_0x350d,0xff));var _0xd350=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x350d[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xd350('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0xd350('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd350('0x2'),'afterUpdate':_0xd350('0x3'),'afterDestroy':_0xd350('0x4')};function emitEvent(_0x3599fd){return function(_0x2dfa6d,_0x3af162,_0x4b6695){ChatQueueEvents['emit'](_0x3599fd+':'+_0x2dfa6d['id'],_0x2dfa6d);ChatQueueEvents[_0xd350('0x5')](_0x3599fd,_0x2dfa6d);_0x4b6695(null);};}for(var e in events){if(events[_0xd350('0x6')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0xd350('0x7')]=ChatQueueEvents;
\ No newline at end of file
index b5a87ac..714218e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a1f=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatQueue','chat_queues'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x0a1f,0x11e));var _0xf0a1=function(_0x3ace6c,_0x204396){_0x3ace6c=_0x3ace6c-0x0;var _0x4df0ca=_0x0a1f[_0x3ace6c];return _0x4df0ca;};'use strict';var _=require('lodash');var util=require(_0xf0a1('0x0'));var logger=require(_0xf0a1('0x1'))(_0xf0a1('0x2'));var moment=require(_0xf0a1('0x3'));var BPromise=require(_0xf0a1('0x4'));var rp=require(_0xf0a1('0x5'));var fs=require('fs');var path=require(_0xf0a1('0x6'));var rimraf=require(_0xf0a1('0x7'));var config=require(_0xf0a1('0x8'));var attributes=require('./chatQueue.attributes');module[_0xf0a1('0x9')]=function(_0x1c3cdf,_0x535b16){return _0x1c3cdf[_0xf0a1('0xa')](_0xf0a1('0xb'),attributes,{'tableName':_0xf0a1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe482=['bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','define','ChatQueue','chat_queues','util','api','moment'];(function(_0x1481ee,_0x1b7fbd){var _0x56c7ce=function(_0x450544){while(--_0x450544){_0x1481ee['push'](_0x1481ee['shift']());}};_0x56c7ce(++_0x1b7fbd);}(_0xe482,0x135));var _0x2e48=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0xe482[_0x1992f1];return _0x413dfe;};'use strict';var _=require('lodash');var util=require(_0x2e48('0x0'));var logger=require('../../config/logger')(_0x2e48('0x1'));var moment=require(_0x2e48('0x2'));var BPromise=require(_0x2e48('0x3'));var rp=require(_0x2e48('0x4'));var fs=require('fs');var path=require(_0x2e48('0x5'));var rimraf=require(_0x2e48('0x6'));var config=require(_0x2e48('0x7'));var attributes=require(_0x2e48('0x8'));module['exports']=function(_0x50ba3a,_0x47ea39){return _0x50ba3a[_0x2e48('0x9')](_0x2e48('0xa'),attributes,{'tableName':_0x2e48('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e049f53..5fdf418 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c47=['raw','attributes','limit','include','model','map','GetChatQueue','debug','catch','where','ShowChatQueue','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','redis','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','ChatQueue','findAll','options'];(function(_0x177e2c,_0x29f1da){var _0x3a1f88=function(_0x28f445){while(--_0x28f445){_0x177e2c['push'](_0x177e2c['shift']());}};_0x3a1f88(++_0x29f1da);}(_0x7c47,0x1b8));var _0x77c4=function(_0x2eca03,_0x25c199){_0x2eca03=_0x2eca03-0x0;var _0x5940e7=_0x7c47[_0x2eca03];return _0x5940e7;};'use strict';var _=require(_0x77c4('0x0'));var util=require('util');var moment=require(_0x77c4('0x1'));var BPromise=require(_0x77c4('0x2'));var rs=require(_0x77c4('0x3'));var fs=require('fs');var Redis=require(_0x77c4('0x4'));var db=require(_0x77c4('0x5'))['db'];var utils=require(_0x77c4('0x6'));var logger=require(_0x77c4('0x7'))('rpc');var config=require(_0x77c4('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x77c4('0x9')]({'port':0x232a});config[_0x77c4('0xa')]=_['defaults'](config[_0x77c4('0xa')],{'host':_0x77c4('0xb'),'port':0x18eb});var socket=require(_0x77c4('0xc'))(new Redis(config[_0x77c4('0xa')]));require(_0x77c4('0xd'))[_0x77c4('0xe')](socket);function respondWithRpcPromise(_0x4caa82,_0x486d28,_0x233eff){return new BPromise(function(_0x3c6bfb,_0x3b9de9){return client[_0x77c4('0xf')](_0x4caa82,_0x233eff)[_0x77c4('0x10')](function(_0x25c25b){logger['info'](_0x77c4('0x11'),_0x486d28,_0x77c4('0x12'));logger['debug']('ChatQueue,\x20%s,\x20%s,\x20%s',_0x486d28,_0x77c4('0x12'),JSON[_0x77c4('0x13')](_0x25c25b));if(_0x25c25b['error']){if(_0x25c25b[_0x77c4('0x14')][_0x77c4('0x15')]===0x1f4){logger[_0x77c4('0x14')](_0x77c4('0x11'),_0x486d28,_0x25c25b[_0x77c4('0x14')]['message']);return _0x3b9de9(_0x25c25b[_0x77c4('0x14')][_0x77c4('0x16')]);}logger['error'](_0x77c4('0x11'),_0x486d28,_0x25c25b[_0x77c4('0x14')][_0x77c4('0x16')]);return _0x3c6bfb(_0x25c25b[_0x77c4('0x14')]['message']);}else{logger[_0x77c4('0x17')](_0x77c4('0x11'),_0x486d28,_0x77c4('0x12'));_0x3c6bfb(_0x25c25b[_0x77c4('0x18')]['message']);}})['catch'](function(_0x1ad6ee){logger['error'](_0x77c4('0x11'),_0x486d28,_0x1ad6ee);_0x3b9de9(_0x1ad6ee);});});}exports['GetChatQueue']=function(_0x123769){var _0x4c478e=this;return new Promise(function(_0x1501f7,_0x35e956){return db[_0x77c4('0x19')][_0x77c4('0x1a')]({'raw':_0x123769[_0x77c4('0x1b')]?_0x123769[_0x77c4('0x1b')][_0x77c4('0x1c')]===undefined?!![]:![]:!![],'where':_0x123769['options']?_0x123769['options']['where']||null:null,'attributes':_0x123769['options']?_0x123769['options'][_0x77c4('0x1d')]||null:null,'limit':_0x123769[_0x77c4('0x1b')]?_0x123769[_0x77c4('0x1b')][_0x77c4('0x1e')]||null:null,'include':_0x123769[_0x77c4('0x1b')]?_0x123769[_0x77c4('0x1b')][_0x77c4('0x1f')]?_['map'](_0x123769[_0x77c4('0x1b')]['include'],function(_0x11a58f){return{'model':db[_0x11a58f[_0x77c4('0x20')]],'as':_0x11a58f['as'],'attributes':_0x11a58f[_0x77c4('0x1d')],'include':_0x11a58f[_0x77c4('0x1f')]?_[_0x77c4('0x21')](_0x11a58f[_0x77c4('0x1f')],function(_0x20b370){return{'model':db[_0x20b370[_0x77c4('0x20')]],'as':_0x20b370['as'],'attributes':_0x20b370['attributes'],'include':_0x20b370[_0x77c4('0x1f')]?_[_0x77c4('0x21')](_0x20b370[_0x77c4('0x1f')],function(_0x4e2676){return{'model':db[_0x4e2676[_0x77c4('0x20')]],'as':_0x4e2676['as'],'attributes':_0x4e2676[_0x77c4('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x77c4('0x10')](function(_0x5c8005){logger['info'](_0x77c4('0x22'),_0x123769);logger[_0x77c4('0x23')](_0x77c4('0x22'),_0x123769,JSON[_0x77c4('0x13')](_0x5c8005));_0x1501f7(_0x5c8005);})[_0x77c4('0x24')](function(_0x2e3923){logger[_0x77c4('0x14')](_0x77c4('0x22'),_0x2e3923[_0x77c4('0x16')],_0x123769);_0x35e956(_0x4c478e['error'](0x1f4,_0x2e3923[_0x77c4('0x16')]));});});};exports['ShowChatQueue']=function(_0x380dea){var _0x46222d=this;return new Promise(function(_0xc46df4,_0x7f3d99){return db[_0x77c4('0x19')]['find']({'raw':_0x380dea[_0x77c4('0x1b')]?_0x380dea[_0x77c4('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x380dea[_0x77c4('0x1b')]?_0x380dea[_0x77c4('0x1b')][_0x77c4('0x25')]||null:null,'attributes':_0x380dea[_0x77c4('0x1b')]?_0x380dea[_0x77c4('0x1b')][_0x77c4('0x1d')]||null:null,'include':_0x380dea[_0x77c4('0x1b')]?_0x380dea[_0x77c4('0x1b')]['include']?_[_0x77c4('0x21')](_0x380dea[_0x77c4('0x1b')][_0x77c4('0x1f')],function(_0xb7c06b){return{'model':db[_0xb7c06b[_0x77c4('0x20')]],'as':_0xb7c06b['as'],'attributes':_0xb7c06b['attributes'],'include':_0xb7c06b['include']?_['map'](_0xb7c06b['include'],function(_0x1a0b7c){return{'model':db[_0x1a0b7c[_0x77c4('0x20')]],'as':_0x1a0b7c['as'],'attributes':_0x1a0b7c[_0x77c4('0x1d')],'include':_0x1a0b7c[_0x77c4('0x1f')]?_[_0x77c4('0x21')](_0x1a0b7c['include'],function(_0xa8d5a9){return{'model':db[_0xa8d5a9[_0x77c4('0x20')]],'as':_0xa8d5a9['as'],'attributes':_0xa8d5a9[_0x77c4('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x16f83d){logger['info']('ShowChatQueue',_0x380dea);logger[_0x77c4('0x23')](_0x77c4('0x26'),_0x380dea,JSON['stringify'](_0x16f83d));_0xc46df4(_0x16f83d);})[_0x77c4('0x24')](function(_0xb98f2d){logger[_0x77c4('0x14')](_0x77c4('0x26'),_0xb98f2d[_0x77c4('0x16')],_0x380dea);_0x7f3d99(_0x46222d[_0x77c4('0x14')](0x1f4,_0xb98f2d[_0x77c4('0x16')]));});});};
\ No newline at end of file
+var _0xbcff=['limit','include','map','model','then','find','ShowChatQueue','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','socket.io-emitter','./chatQueue.socket','register','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','attributes'];(function(_0x3a90d4,_0x5dcd2c){var _0x4a8b48=function(_0x3d0cf1){while(--_0x3d0cf1){_0x3a90d4['push'](_0x3a90d4['shift']());}};_0x4a8b48(++_0x5dcd2c);}(_0xbcff,0x12e));var _0xfbcf=function(_0x5e7735,_0x1289f7){_0x5e7735=_0x5e7735-0x0;var _0x56532f=_0xbcff[_0x5e7735];return _0x56532f;};'use strict';var _=require(_0xfbcf('0x0'));var util=require(_0xfbcf('0x1'));var moment=require(_0xfbcf('0x2'));var BPromise=require('bluebird');var rs=require(_0xfbcf('0x3'));var fs=require('fs');var Redis=require(_0xfbcf('0x4'));var db=require(_0xfbcf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfbcf('0x6'))(_0xfbcf('0x7'));var config=require(_0xfbcf('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xfbcf('0x9')][_0xfbcf('0xa')]({'port':0x232a});config['redis']=_[_0xfbcf('0xb')](config[_0xfbcf('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xfbcf('0xd'))(new Redis(config['redis']));require(_0xfbcf('0xe'))[_0xfbcf('0xf')](socket);function respondWithRpcPromise(_0x5eb1b8,_0x59fdda,_0x307226){return new BPromise(function(_0x3a960d,_0x1fbe45){return client[_0xfbcf('0x10')](_0x5eb1b8,_0x307226)['then'](function(_0x117f2c){logger[_0xfbcf('0x11')](_0xfbcf('0x12'),_0x59fdda,_0xfbcf('0x13'));logger[_0xfbcf('0x14')](_0xfbcf('0x15'),_0x59fdda,_0xfbcf('0x13'),JSON['stringify'](_0x117f2c));if(_0x117f2c[_0xfbcf('0x16')]){if(_0x117f2c['error'][_0xfbcf('0x17')]===0x1f4){logger[_0xfbcf('0x16')](_0xfbcf('0x12'),_0x59fdda,_0x117f2c[_0xfbcf('0x16')][_0xfbcf('0x18')]);return _0x1fbe45(_0x117f2c[_0xfbcf('0x16')][_0xfbcf('0x18')]);}logger[_0xfbcf('0x16')](_0xfbcf('0x12'),_0x59fdda,_0x117f2c['error'][_0xfbcf('0x18')]);return _0x3a960d(_0x117f2c[_0xfbcf('0x16')][_0xfbcf('0x18')]);}else{logger[_0xfbcf('0x11')](_0xfbcf('0x12'),_0x59fdda,_0xfbcf('0x13'));_0x3a960d(_0x117f2c[_0xfbcf('0x19')][_0xfbcf('0x18')]);}})[_0xfbcf('0x1a')](function(_0xef5fcf){logger[_0xfbcf('0x16')]('ChatQueue,\x20%s,\x20%s',_0x59fdda,_0xef5fcf);_0x1fbe45(_0xef5fcf);});});}exports[_0xfbcf('0x1b')]=function(_0x3a5785){var _0x54f09b=this;return new Promise(function(_0x42b15f,_0x1fbbef){return db[_0xfbcf('0x1c')][_0xfbcf('0x1d')]({'raw':_0x3a5785[_0xfbcf('0x1e')]?_0x3a5785[_0xfbcf('0x1e')][_0xfbcf('0x1f')]===undefined?!![]:![]:!![],'where':_0x3a5785['options']?_0x3a5785[_0xfbcf('0x1e')][_0xfbcf('0x20')]||null:null,'attributes':_0x3a5785['options']?_0x3a5785[_0xfbcf('0x1e')][_0xfbcf('0x21')]||null:null,'limit':_0x3a5785['options']?_0x3a5785[_0xfbcf('0x1e')][_0xfbcf('0x22')]||null:null,'include':_0x3a5785[_0xfbcf('0x1e')]?_0x3a5785[_0xfbcf('0x1e')][_0xfbcf('0x23')]?_['map'](_0x3a5785[_0xfbcf('0x1e')][_0xfbcf('0x23')],function(_0x1f94de){return{'model':db[_0x1f94de['model']],'as':_0x1f94de['as'],'attributes':_0x1f94de['attributes'],'include':_0x1f94de[_0xfbcf('0x23')]?_[_0xfbcf('0x24')](_0x1f94de['include'],function(_0x43a263){return{'model':db[_0x43a263[_0xfbcf('0x25')]],'as':_0x43a263['as'],'attributes':_0x43a263['attributes'],'include':_0x43a263[_0xfbcf('0x23')]?_[_0xfbcf('0x24')](_0x43a263[_0xfbcf('0x23')],function(_0x4db905){return{'model':db[_0x4db905['model']],'as':_0x4db905['as'],'attributes':_0x4db905[_0xfbcf('0x21')]};}):[]};}):[]};}):[]:[]})[_0xfbcf('0x26')](function(_0x35fab2){logger[_0xfbcf('0x11')](_0xfbcf('0x1b'),_0x3a5785);logger[_0xfbcf('0x14')](_0xfbcf('0x1b'),_0x3a5785,JSON['stringify'](_0x35fab2));_0x42b15f(_0x35fab2);})[_0xfbcf('0x1a')](function(_0x24fefa){logger['error'](_0xfbcf('0x1b'),_0x24fefa[_0xfbcf('0x18')],_0x3a5785);_0x1fbbef(_0x54f09b[_0xfbcf('0x16')](0x1f4,_0x24fefa[_0xfbcf('0x18')]));});});};exports['ShowChatQueue']=function(_0x30beaa){var _0x4240cf=this;return new Promise(function(_0x58fa0d,_0xad39a5){return db[_0xfbcf('0x1c')][_0xfbcf('0x27')]({'raw':_0x30beaa[_0xfbcf('0x1e')]?_0x30beaa[_0xfbcf('0x1e')][_0xfbcf('0x1f')]===undefined?!![]:![]:!![],'where':_0x30beaa[_0xfbcf('0x1e')]?_0x30beaa[_0xfbcf('0x1e')][_0xfbcf('0x20')]||null:null,'attributes':_0x30beaa['options']?_0x30beaa[_0xfbcf('0x1e')]['attributes']||null:null,'include':_0x30beaa[_0xfbcf('0x1e')]?_0x30beaa[_0xfbcf('0x1e')][_0xfbcf('0x23')]?_[_0xfbcf('0x24')](_0x30beaa['options'][_0xfbcf('0x23')],function(_0x4f8ba3){return{'model':db[_0x4f8ba3[_0xfbcf('0x25')]],'as':_0x4f8ba3['as'],'attributes':_0x4f8ba3[_0xfbcf('0x21')],'include':_0x4f8ba3[_0xfbcf('0x23')]?_[_0xfbcf('0x24')](_0x4f8ba3[_0xfbcf('0x23')],function(_0x1e5339){return{'model':db[_0x1e5339[_0xfbcf('0x25')]],'as':_0x1e5339['as'],'attributes':_0x1e5339[_0xfbcf('0x21')],'include':_0x1e5339[_0xfbcf('0x23')]?_[_0xfbcf('0x24')](_0x1e5339[_0xfbcf('0x23')],function(_0x4ec1b0){return{'model':db[_0x4ec1b0[_0xfbcf('0x25')]],'as':_0x4ec1b0['as'],'attributes':_0x4ec1b0[_0xfbcf('0x21')]};}):[]};}):[]};}):[]:[]})[_0xfbcf('0x26')](function(_0x46c8a6){logger['info'](_0xfbcf('0x28'),_0x30beaa);logger[_0xfbcf('0x14')]('ShowChatQueue',_0x30beaa,JSON[_0xfbcf('0x29')](_0x46c8a6));_0x58fa0d(_0x46c8a6);})['catch'](function(_0x5ed4be){logger[_0xfbcf('0x16')](_0xfbcf('0x28'),_0x5ed4be['message'],_0x30beaa);_0xad39a5(_0x4240cf[_0xfbcf('0x16')](0x1f4,_0x5ed4be['message']));});});};
\ No newline at end of file
index a48cc72..f71dee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9e=['removeListener','register','length','chatQueue:','./chatQueue.events','update','emit'];(function(_0x5481b8,_0x14f375){var _0x480673=function(_0x5e9331){while(--_0x5e9331){_0x5481b8['push'](_0x5481b8['shift']());}};_0x480673(++_0x14f375);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x28ea18,_0x6a156c){_0x28ea18=_0x28ea18-0x0;var _0x25512d=_0x4d9e[_0x28ea18];return _0x25512d;};'use strict';var ChatQueueEvents=require(_0xe4d9('0x0'));var events=['save','remove',_0xe4d9('0x1')];function createListener(_0x574c1d,_0x36adac){return function(_0x4d7687){_0x36adac[_0xe4d9('0x2')](_0x574c1d,_0x4d7687);};}function removeListener(_0x2deaef,_0x47a09f){return function(){ChatQueueEvents[_0xe4d9('0x3')](_0x2deaef,_0x47a09f);};}exports[_0xe4d9('0x4')]=function(_0x278035){for(var _0x34c2a2=0x0,_0x125dbc=events[_0xe4d9('0x5')];_0x34c2a2<_0x125dbc;_0x34c2a2++){var _0x54a63a=events[_0x34c2a2];var _0x36316f=createListener(_0xe4d9('0x6')+_0x54a63a,_0x278035);ChatQueueEvents['on'](_0x54a63a,_0x36316f);}};
\ No newline at end of file
+var _0x0b78=['removeListener','length','chatQueue:','./chatQueue.events','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0b78,0x1ad));var _0x80b7=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x0b78[_0x4b369d];return _0x571a98;};'use strict';var ChatQueueEvents=require(_0x80b7('0x0'));var events=[_0x80b7('0x1'),'remove',_0x80b7('0x2')];function createListener(_0x4f55ab,_0x4bffac){return function(_0x261012){_0x4bffac['emit'](_0x4f55ab,_0x261012);};}function removeListener(_0x6a187e,_0x89d4d7){return function(){ChatQueueEvents[_0x80b7('0x3')](_0x6a187e,_0x89d4d7);};}exports['register']=function(_0x49bc7f){for(var _0x167ddd=0x0,_0x584401=events[_0x80b7('0x4')];_0x167ddd<_0x584401;_0x167ddd++){var _0x122ebe=events[_0x167ddd];var _0x3c248d=createListener(_0x80b7('0x5')+_0x122ebe,_0x49bc7f);ChatQueueEvents['on'](_0x122ebe,_0x3c248d);}};
\ No newline at end of file
index 097042b..b5b680c 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(_0x422311,_0x54125c){var _0x356858=function(_0x283a0f){while(--_0x283a0f){_0x422311['push'](_0x422311['shift']());}};_0x356858(++_0x54125c);}(_0x55ca,0x126));var _0xa55c=function(_0xc87d08,_0x59c9be){_0xc87d08=_0xc87d08-0x0;var _0x30a714=_0x55ca[_0xc87d08];return _0x30a714;};'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 _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(_0x75ff5c,_0x45c306){var _0xcffae9=function(_0x51d5b4){while(--_0x51d5b4){_0x75ff5c['push'](_0x75ff5c['shift']());}};_0xcffae9(++_0x45c306);}(_0x55ca,0x126));var _0xa55c=function(_0x3da6ae,_0x13fdf4){_0x3da6ae=_0x3da6ae-0x0;var _0x1aa8df=_0x55ca[_0x3da6ae];return _0x1aa8df;};'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
index 4815ec2..67ddc5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc69=['DATE','moment','exports','STRING'];(function(_0x62e562,_0x3618a4){var _0x5683fa=function(_0x4858da){while(--_0x4858da){_0x62e562['push'](_0x62e562['shift']());}};_0x5683fa(++_0x3618a4);}(_0xdc69,0x165));var _0x9dc6=function(_0x53afe9,_0x2c9f40){_0x53afe9=_0x53afe9-0x0;var _0x396396=_0xdc69[_0x53afe9];return _0x396396;};'use strict';var moment=require(_0x9dc6('0x0'));var Sequelize=require('sequelize');module[_0x9dc6('0x1')]={'uniqueid':{'type':Sequelize[_0x9dc6('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x9dc6('0x3')]},'leaveAt':{'type':Sequelize[_0x9dc6('0x3')]},'acceptAt':{'type':Sequelize[_0x9dc6('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x9dc6('0x2')]}};
\ No newline at end of file
+var _0x0618=['STRING','DATE','moment','sequelize'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x0618,0x1c6));var _0x8061=function(_0x1aebc2,_0x58f22a){_0x1aebc2=_0x1aebc2-0x0;var _0x2f0892=_0x0618[_0x1aebc2];return _0x2f0892;};'use strict';var moment=require(_0x8061('0x0'));var Sequelize=require(_0x8061('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x8061('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x8061('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x8061('0x3')]},'exitAt':{'type':Sequelize[_0x8061('0x3')]},'reason':{'type':Sequelize[_0x8061('0x2')]}};
\ No newline at end of file
index 8c8bb93..e0af9b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe626=['keys','rawAttributes','intersection','length','options','find','create','body','catch','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','index','type','model','map','query','filters','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','ChatQueueReport','includeAll','include','findAll','rows','show'];(function(_0x41bac1,_0x9a7f1b){var _0x43c6c5=function(_0x989ff3){while(--_0x989ff3){_0x41bac1['push'](_0x41bac1['shift']());}};_0x43c6c5(++_0x9a7f1b);}(_0xe626,0x9d));var _0x6e62=function(_0x23bd3f,_0x1f4798){_0x23bd3f=_0x23bd3f-0x0;var _0x49209b=_0xe626[_0x23bd3f];return _0x49209b;};'use strict';var emlformat=require(_0x6e62('0x0'));var rimraf=require(_0x6e62('0x1'));var zipdir=require(_0x6e62('0x2'));var jsonpatch=require(_0x6e62('0x3'));var rp=require('request-promise');var moment=require(_0x6e62('0x4'));var BPromise=require(_0x6e62('0x5'));var Mustache=require(_0x6e62('0x6'));var util=require(_0x6e62('0x7'));var path=require(_0x6e62('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6e62('0x9'));var _=require(_0x6e62('0xa'));var squel=require('squel');var crypto=require(_0x6e62('0xb'));var jsforce=require(_0x6e62('0xc'));var deskjs=require(_0x6e62('0xd'));var toCsv=require(_0x6e62('0xe'));var querystring=require('querystring');var Papa=require(_0x6e62('0xf'));var Redis=require(_0x6e62('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x6e62('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6e62('0x12'));var logger=require('../../config/logger')(_0x6e62('0x13'));var utils=require('../../config/utils');var config=require(_0x6e62('0x14'));var licenseUtil=require(_0x6e62('0x15'));var db=require(_0x6e62('0x16'))['db'];function respondWithStatusCode(_0x43e3d4,_0x3c3af1){_0x3c3af1=_0x3c3af1||0xcc;return function(_0x1c266b){if(_0x1c266b){return _0x43e3d4[_0x6e62('0x17')](_0x3c3af1);}return _0x43e3d4['status'](_0x3c3af1)['end']();};}function respondWithResult(_0x44b131,_0x3b980d){_0x3b980d=_0x3b980d||0xc8;return function(_0x5328fe){if(_0x5328fe){return _0x44b131[_0x6e62('0x18')](_0x3b980d)[_0x6e62('0x19')](_0x5328fe);}};}function respondWithFilteredResult(_0x19a80d,_0x3f4e35){return function(_0x58d84e){if(_0x58d84e){var _0x416158=typeof _0x3f4e35[_0x6e62('0x1a')]===_0x6e62('0x1b')&&typeof _0x3f4e35[_0x6e62('0x1c')]===_0x6e62('0x1b');var _0x31b304=_0x58d84e[_0x6e62('0x1d')];var _0x45d7ee=_0x416158?0x0:_0x3f4e35[_0x6e62('0x1a')];var _0x15bce5=_0x416158?_0x58d84e['count']:_0x3f4e35[_0x6e62('0x1a')]+_0x3f4e35[_0x6e62('0x1c')];var _0x55ce3b;if(_0x15bce5>=_0x31b304){_0x15bce5=_0x31b304;_0x55ce3b=0xc8;}else{_0x55ce3b=0xce;}_0x19a80d[_0x6e62('0x18')](_0x55ce3b);return _0x19a80d['set'](_0x6e62('0x1e'),_0x45d7ee+'-'+_0x15bce5+'/'+_0x31b304)[_0x6e62('0x19')](_0x58d84e);}return null;};}function patchUpdates(_0x2e162e){return function(_0x270405){try{jsonpatch[_0x6e62('0x1f')](_0x270405,_0x2e162e,!![]);}catch(_0x77c5f9){return BPromise[_0x6e62('0x20')](_0x77c5f9);}return _0x270405[_0x6e62('0x21')]();};}function saveUpdates(_0x3f9067,_0x421d13){return function(_0x1954dc){if(_0x1954dc){return _0x1954dc['update'](_0x3f9067)[_0x6e62('0x22')](function(_0x52d5e7){return _0x52d5e7;});}return null;};}function removeEntity(_0x183469,_0x3dad96){return function(_0x345af8){if(_0x345af8){return _0x345af8[_0x6e62('0x23')]()[_0x6e62('0x22')](function(){_0x183469[_0x6e62('0x18')](0xcc)[_0x6e62('0x24')]();});}};}function handleEntityNotFound(_0x3a1683,_0x2e4fe1){return function(_0x448691){if(!_0x448691){_0x3a1683['sendStatus'](0x194);}return _0x448691;};}function handleError(_0x33f81c,_0x555793){_0x555793=_0x555793||0x1f4;return function(_0x2f9c68){logger[_0x6e62('0x25')](_0x2f9c68[_0x6e62('0x26')]);if(_0x2f9c68[_0x6e62('0x27')]){delete _0x2f9c68[_0x6e62('0x27')];}_0x33f81c[_0x6e62('0x18')](_0x555793)['send'](_0x2f9c68);};}exports[_0x6e62('0x28')]=function(_0x26c991,_0x14cd51){var _0x50ba00={},_0x58afab={},_0x191df5={'count':0x0,'rows':[]};var _0x50813d=_['map'](db['ChatQueueReport']['rawAttributes'],function(_0x17f634){return{'name':_0x17f634['fieldName'],'type':_0x17f634[_0x6e62('0x29')]['key']};});_0x58afab[_0x6e62('0x2a')]=_[_0x6e62('0x2b')](_0x50813d,_0x6e62('0x27'));_0x58afab['query']=_['keys'](_0x26c991[_0x6e62('0x2c')]);_0x58afab[_0x6e62('0x2d')]=_['intersection'](_0x58afab['model'],_0x58afab['query']);_0x50ba00[_0x6e62('0x2e')]=_['intersection'](_0x58afab[_0x6e62('0x2a')],qs[_0x6e62('0x2f')](_0x26c991[_0x6e62('0x2c')][_0x6e62('0x2f')]));_0x50ba00[_0x6e62('0x2e')]=_0x50ba00['attributes']['length']?_0x50ba00[_0x6e62('0x2e')]:_0x58afab[_0x6e62('0x2a')];if(!_0x26c991[_0x6e62('0x2c')][_0x6e62('0x30')](_0x6e62('0x31'))){_0x50ba00[_0x6e62('0x1c')]=qs[_0x6e62('0x1c')](_0x26c991[_0x6e62('0x2c')][_0x6e62('0x1c')]);_0x50ba00['offset']=qs[_0x6e62('0x1a')](_0x26c991[_0x6e62('0x2c')][_0x6e62('0x1a')]);}_0x50ba00['order']=qs[_0x6e62('0x32')](_0x26c991[_0x6e62('0x2c')]['sort']);_0x50ba00[_0x6e62('0x33')]=qs[_0x6e62('0x2d')](_[_0x6e62('0x34')](_0x26c991[_0x6e62('0x2c')],_0x58afab[_0x6e62('0x2d')]),_0x50813d);if(_0x26c991['query'][_0x6e62('0x35')]){_0x50ba00[_0x6e62('0x33')]=_[_0x6e62('0x36')](_0x50ba00[_0x6e62('0x33')],{'$or':_[_0x6e62('0x2b')](_0x50813d,function(_0x4900b0){if(_0x4900b0[_0x6e62('0x29')]!==_0x6e62('0x37')){var _0x234710={};_0x234710[_0x4900b0['name']]={'$like':'%'+_0x26c991[_0x6e62('0x2c')][_0x6e62('0x35')]+'%'};return _0x234710;}})});}_0x50ba00=_['merge']({},_0x50ba00,_0x26c991['options']);var _0x13728c={'where':_0x50ba00[_0x6e62('0x33')]};return db[_0x6e62('0x38')]['count'](_0x13728c)['then'](function(_0x1ef318){_0x191df5['count']=_0x1ef318;if(_0x26c991['query'][_0x6e62('0x39')]){_0x50ba00[_0x6e62('0x3a')]=[{'all':!![]}];}return db[_0x6e62('0x38')][_0x6e62('0x3b')](_0x50ba00);})[_0x6e62('0x22')](function(_0x58ac40){_0x191df5[_0x6e62('0x3c')]=_0x58ac40;return _0x191df5;})['then'](respondWithFilteredResult(_0x14cd51,_0x50ba00))['catch'](handleError(_0x14cd51,null));};exports[_0x6e62('0x3d')]=function(_0x469fa1,_0x940288){var _0x5352d3={'raw':!![],'where':{'id':_0x469fa1['params']['id']}},_0x1a7e7f={};_0x1a7e7f[_0x6e62('0x2a')]=_[_0x6e62('0x3e')](db[_0x6e62('0x38')][_0x6e62('0x3f')]);_0x1a7e7f[_0x6e62('0x2c')]=_[_0x6e62('0x3e')](_0x469fa1[_0x6e62('0x2c')]);_0x1a7e7f[_0x6e62('0x2d')]=_[_0x6e62('0x40')](_0x1a7e7f[_0x6e62('0x2a')],_0x1a7e7f['query']);_0x5352d3['attributes']=_['intersection'](_0x1a7e7f[_0x6e62('0x2a')],qs['fields'](_0x469fa1[_0x6e62('0x2c')][_0x6e62('0x2f')]));_0x5352d3['attributes']=_0x5352d3[_0x6e62('0x2e')][_0x6e62('0x41')]?_0x5352d3[_0x6e62('0x2e')]:_0x1a7e7f[_0x6e62('0x2a')];if(_0x469fa1[_0x6e62('0x2c')][_0x6e62('0x39')]){_0x5352d3[_0x6e62('0x3a')]=[{'all':!![]}];}_0x5352d3=_[_0x6e62('0x36')]({},_0x5352d3,_0x469fa1[_0x6e62('0x42')]);return db[_0x6e62('0x38')][_0x6e62('0x43')](_0x5352d3)[_0x6e62('0x22')](handleEntityNotFound(_0x940288,null))[_0x6e62('0x22')](respondWithResult(_0x940288,null))['catch'](handleError(_0x940288,null));};exports[_0x6e62('0x44')]=function(_0x158c75,_0x57c6d1){return db[_0x6e62('0x38')]['create'](_0x158c75[_0x6e62('0x45')],{})[_0x6e62('0x22')](respondWithResult(_0x57c6d1,0xc9))[_0x6e62('0x46')](handleError(_0x57c6d1,null));};exports['update']=function(_0x447fc2,_0x4745a3){if(_0x447fc2[_0x6e62('0x45')]['id']){delete _0x447fc2[_0x6e62('0x45')]['id'];}return db[_0x6e62('0x38')][_0x6e62('0x43')]({'where':{'id':_0x447fc2[_0x6e62('0x47')]['id']}})[_0x6e62('0x22')](handleEntityNotFound(_0x4745a3,null))[_0x6e62('0x22')](saveUpdates(_0x447fc2[_0x6e62('0x45')],null))[_0x6e62('0x22')](respondWithResult(_0x4745a3,null))['catch'](handleError(_0x4745a3,null));};exports['destroy']=function(_0x2d7732,_0xe6f92d){return db[_0x6e62('0x38')][_0x6e62('0x43')]({'where':{'id':_0x2d7732[_0x6e62('0x47')]['id']}})[_0x6e62('0x22')](handleEntityNotFound(_0xe6f92d,null))['then'](removeEntity(_0xe6f92d,null))[_0x6e62('0x46')](handleError(_0xe6f92d,null));};exports['describe']=function(_0x28bcb3,_0xead50c){return db[_0x6e62('0x38')][_0x6e62('0x48')]()[_0x6e62('0x22')](respondWithResult(_0xead50c,null))['catch'](handleError(_0xead50c,null));};
\ No newline at end of file
+var _0x29eb=['catch','rawAttributes','model','length','include','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','then','sendStatus','stack','name','send','index','map','ChatQueueReport','fieldName','type','key','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','filter','merge','where','VIRTUAL','options','includeAll','findAll','rows'];(function(_0x14a645,_0x471128){var _0x5cc431=function(_0x58a84b){while(--_0x58a84b){_0x14a645['push'](_0x14a645['shift']());}};_0x5cc431(++_0x471128);}(_0x29eb,0x1c5));var _0xb29e=function(_0x5aef8c,_0x3fc937){_0x5aef8c=_0x5aef8c-0x0;var _0x32f2a7=_0x29eb[_0x5aef8c];return _0x32f2a7;};'use strict';var emlformat=require(_0xb29e('0x0'));var rimraf=require(_0xb29e('0x1'));var zipdir=require(_0xb29e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb29e('0x3'));var moment=require(_0xb29e('0x4'));var BPromise=require(_0xb29e('0x5'));var Mustache=require('mustache');var util=require(_0xb29e('0x6'));var path=require('path');var sox=require(_0xb29e('0x7'));var csv=require(_0xb29e('0x8'));var ejs=require(_0xb29e('0x9'));var fs=require('fs');var fs_extra=require(_0xb29e('0xa'));var _=require(_0xb29e('0xb'));var squel=require(_0xb29e('0xc'));var crypto=require('crypto');var jsforce=require(_0xb29e('0xd'));var deskjs=require(_0xb29e('0xe'));var toCsv=require(_0xb29e('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb29e('0xf'));var authService=require(_0xb29e('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xb29e('0x11'));var hardwareService=require(_0xb29e('0x12'));var logger=require('../../config/logger')(_0xb29e('0x13'));var utils=require(_0xb29e('0x14'));var config=require(_0xb29e('0x15'));var licenseUtil=require(_0xb29e('0x16'));var db=require(_0xb29e('0x17'))['db'];function respondWithStatusCode(_0x4d5083,_0x3cef5d){_0x3cef5d=_0x3cef5d||0xcc;return function(_0x5ee22e){if(_0x5ee22e){return _0x4d5083['sendStatus'](_0x3cef5d);}return _0x4d5083['status'](_0x3cef5d)[_0xb29e('0x18')]();};}function respondWithResult(_0x3014bb,_0x2678f5){_0x2678f5=_0x2678f5||0xc8;return function(_0x3c090e){if(_0x3c090e){return _0x3014bb[_0xb29e('0x19')](_0x2678f5)[_0xb29e('0x1a')](_0x3c090e);}};}function respondWithFilteredResult(_0x5486c1,_0x1d19f6){return function(_0x2c0324){if(_0x2c0324){var _0x32bd5d=typeof _0x1d19f6[_0xb29e('0x1b')]==='undefined'&&typeof _0x1d19f6['limit']===_0xb29e('0x1c');var _0x2aa3a1=_0x2c0324[_0xb29e('0x1d')];var _0x355521=_0x32bd5d?0x0:_0x1d19f6[_0xb29e('0x1b')];var _0x107fa4=_0x32bd5d?_0x2c0324[_0xb29e('0x1d')]:_0x1d19f6[_0xb29e('0x1b')]+_0x1d19f6[_0xb29e('0x1e')];var _0x11b2eb;if(_0x107fa4>=_0x2aa3a1){_0x107fa4=_0x2aa3a1;_0x11b2eb=0xc8;}else{_0x11b2eb=0xce;}_0x5486c1['status'](_0x11b2eb);return _0x5486c1[_0xb29e('0x1f')](_0xb29e('0x20'),_0x355521+'-'+_0x107fa4+'/'+_0x2aa3a1)[_0xb29e('0x1a')](_0x2c0324);}return null;};}function patchUpdates(_0x53d71f){return function(_0xa9cb8d){try{jsonpatch['apply'](_0xa9cb8d,_0x53d71f,!![]);}catch(_0x30195d){return BPromise[_0xb29e('0x21')](_0x30195d);}return _0xa9cb8d[_0xb29e('0x22')]();};}function saveUpdates(_0x3e3d09,_0x367b7a){return function(_0x22e362){if(_0x22e362){return _0x22e362[_0xb29e('0x23')](_0x3e3d09)['then'](function(_0x4fa464){return _0x4fa464;});}return null;};}function removeEntity(_0x3add8e,_0xcb568b){return function(_0xe150ee){if(_0xe150ee){return _0xe150ee[_0xb29e('0x24')]()[_0xb29e('0x25')](function(){_0x3add8e[_0xb29e('0x19')](0xcc)[_0xb29e('0x18')]();});}};}function handleEntityNotFound(_0x5b8cee,_0x4e5d72){return function(_0xedd5b3){if(!_0xedd5b3){_0x5b8cee[_0xb29e('0x26')](0x194);}return _0xedd5b3;};}function handleError(_0x16595b,_0x59305f){_0x59305f=_0x59305f||0x1f4;return function(_0x58dfdc){logger['error'](_0x58dfdc[_0xb29e('0x27')]);if(_0x58dfdc[_0xb29e('0x28')]){delete _0x58dfdc[_0xb29e('0x28')];}_0x16595b[_0xb29e('0x19')](_0x59305f)[_0xb29e('0x29')](_0x58dfdc);};}exports[_0xb29e('0x2a')]=function(_0x375abe,_0x11a022){var _0x22b5f7={},_0xc08c05={},_0x525a54={'count':0x0,'rows':[]};var _0x3b1a27=_[_0xb29e('0x2b')](db[_0xb29e('0x2c')]['rawAttributes'],function(_0x1e62c6){return{'name':_0x1e62c6[_0xb29e('0x2d')],'type':_0x1e62c6[_0xb29e('0x2e')][_0xb29e('0x2f')]};});_0xc08c05['model']=_[_0xb29e('0x2b')](_0x3b1a27,_0xb29e('0x28'));_0xc08c05[_0xb29e('0x30')]=_[_0xb29e('0x31')](_0x375abe['query']);_0xc08c05[_0xb29e('0x32')]=_[_0xb29e('0x33')](_0xc08c05['model'],_0xc08c05[_0xb29e('0x30')]);_0x22b5f7['attributes']=_[_0xb29e('0x33')](_0xc08c05['model'],qs[_0xb29e('0x34')](_0x375abe['query'][_0xb29e('0x34')]));_0x22b5f7['attributes']=_0x22b5f7[_0xb29e('0x35')]['length']?_0x22b5f7[_0xb29e('0x35')]:_0xc08c05['model'];if(!_0x375abe[_0xb29e('0x30')][_0xb29e('0x36')]('nolimit')){_0x22b5f7['limit']=qs[_0xb29e('0x1e')](_0x375abe['query'][_0xb29e('0x1e')]);_0x22b5f7[_0xb29e('0x1b')]=qs[_0xb29e('0x1b')](_0x375abe['query']['offset']);}_0x22b5f7[_0xb29e('0x37')]=qs['sort'](_0x375abe[_0xb29e('0x30')][_0xb29e('0x38')]);_0x22b5f7['where']=qs[_0xb29e('0x32')](_['pick'](_0x375abe['query'],_0xc08c05['filters']),_0x3b1a27);if(_0x375abe[_0xb29e('0x30')][_0xb29e('0x39')]){_0x22b5f7['where']=_[_0xb29e('0x3a')](_0x22b5f7[_0xb29e('0x3b')],{'$or':_[_0xb29e('0x2b')](_0x3b1a27,function(_0x2d7178){if(_0x2d7178[_0xb29e('0x2e')]!==_0xb29e('0x3c')){var _0x21bc16={};_0x21bc16[_0x2d7178['name']]={'$like':'%'+_0x375abe[_0xb29e('0x30')]['filter']+'%'};return _0x21bc16;}})});}_0x22b5f7=_[_0xb29e('0x3a')]({},_0x22b5f7,_0x375abe[_0xb29e('0x3d')]);var _0x42a023={'where':_0x22b5f7[_0xb29e('0x3b')]};return db[_0xb29e('0x2c')]['count'](_0x42a023)[_0xb29e('0x25')](function(_0x10850e){_0x525a54[_0xb29e('0x1d')]=_0x10850e;if(_0x375abe['query'][_0xb29e('0x3e')]){_0x22b5f7['include']=[{'all':!![]}];}return db[_0xb29e('0x2c')][_0xb29e('0x3f')](_0x22b5f7);})[_0xb29e('0x25')](function(_0x4a2783){_0x525a54[_0xb29e('0x40')]=_0x4a2783;return _0x525a54;})[_0xb29e('0x25')](respondWithFilteredResult(_0x11a022,_0x22b5f7))[_0xb29e('0x41')](handleError(_0x11a022,null));};exports['show']=function(_0x56a559,_0xc2747d){var _0x1f9046={'raw':!![],'where':{'id':_0x56a559['params']['id']}},_0x101972={};_0x101972['model']=_[_0xb29e('0x31')](db[_0xb29e('0x2c')][_0xb29e('0x42')]);_0x101972[_0xb29e('0x30')]=_[_0xb29e('0x31')](_0x56a559['query']);_0x101972[_0xb29e('0x32')]=_[_0xb29e('0x33')](_0x101972[_0xb29e('0x43')],_0x101972['query']);_0x1f9046[_0xb29e('0x35')]=_[_0xb29e('0x33')](_0x101972[_0xb29e('0x43')],qs[_0xb29e('0x34')](_0x56a559[_0xb29e('0x30')][_0xb29e('0x34')]));_0x1f9046[_0xb29e('0x35')]=_0x1f9046[_0xb29e('0x35')][_0xb29e('0x44')]?_0x1f9046[_0xb29e('0x35')]:_0x101972[_0xb29e('0x43')];if(_0x56a559[_0xb29e('0x30')]['includeAll']){_0x1f9046[_0xb29e('0x45')]=[{'all':!![]}];}_0x1f9046=_['merge']({},_0x1f9046,_0x56a559[_0xb29e('0x3d')]);return db[_0xb29e('0x2c')][_0xb29e('0x46')](_0x1f9046)[_0xb29e('0x25')](handleEntityNotFound(_0xc2747d,null))['then'](respondWithResult(_0xc2747d,null))[_0xb29e('0x41')](handleError(_0xc2747d,null));};exports[_0xb29e('0x47')]=function(_0x8be475,_0x42a352){return db[_0xb29e('0x2c')]['create'](_0x8be475[_0xb29e('0x48')],{})['then'](respondWithResult(_0x42a352,0xc9))[_0xb29e('0x41')](handleError(_0x42a352,null));};exports[_0xb29e('0x23')]=function(_0x1c5048,_0x15d0f7){if(_0x1c5048[_0xb29e('0x48')]['id']){delete _0x1c5048[_0xb29e('0x48')]['id'];}return db[_0xb29e('0x2c')][_0xb29e('0x46')]({'where':{'id':_0x1c5048['params']['id']}})['then'](handleEntityNotFound(_0x15d0f7,null))[_0xb29e('0x25')](saveUpdates(_0x1c5048[_0xb29e('0x48')],null))[_0xb29e('0x25')](respondWithResult(_0x15d0f7,null))[_0xb29e('0x41')](handleError(_0x15d0f7,null));};exports['destroy']=function(_0x18efe5,_0x32a969){return db[_0xb29e('0x2c')]['find']({'where':{'id':_0x18efe5['params']['id']}})[_0xb29e('0x25')](handleEntityNotFound(_0x32a969,null))[_0xb29e('0x25')](removeEntity(_0x32a969,null))[_0xb29e('0x41')](handleError(_0x32a969,null));};exports[_0xb29e('0x49')]=function(_0x566d58,_0x57fa9d){return db['ChatQueueReport'][_0xb29e('0x49')]()[_0xb29e('0x25')](respondWithResult(_0x57fa9d,null))[_0xb29e('0x41')](handleError(_0x57fa9d,null));};
\ No newline at end of file
index d3f8761..670e9d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_0x3dc158,_0x33ff66){var _0x5ed235=function(_0x5eabf5){while(--_0x5eabf5){_0x3dc158['push'](_0x3dc158['shift']());}};_0x5ed235(++_0x33ff66);}(_0xbaf0,0x12a));var _0x0baf=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xbaf0[_0x19e35c];return _0x3e1fe8;};'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
+var _0xd8b0=['define','report_chat_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x331d9d,_0x43d243){var _0x3d61d1=function(_0x2bb01a){while(--_0x2bb01a){_0x331d9d['push'](_0x331d9d['shift']());}};_0x3d61d1(++_0x43d243);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./chatQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('ChatQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 94c1933..59f9c40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88fa=['info','request\x20sent','debug','error','code','ChatQueueReport,\x20%s,\x20%s','message','catch','CreateChatQueueReport','create','options','stringify','UpdateChatQueueReport','update','body','raw','attributes','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x3bbc07,_0x596706){var _0x1eca5a=function(_0x3ecdd3){while(--_0x3ecdd3){_0x3bbc07['push'](_0x3bbc07['shift']());}};_0x1eca5a(++_0x596706);}(_0x88fa,0x1d3));var _0xa88f=function(_0x388550,_0x3fd74b){_0x388550=_0x388550-0x0;var _0x735860=_0x88fa[_0x388550];return _0x735860;};'use strict';var _=require(_0xa88f('0x0'));var util=require('util');var moment=require(_0xa88f('0x1'));var BPromise=require(_0xa88f('0x2'));var rs=require(_0xa88f('0x3'));var fs=require('fs');var Redis=require(_0xa88f('0x4'));var db=require(_0xa88f('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa88f('0x6'));var config=require(_0xa88f('0x7'));var jayson=require(_0xa88f('0x8'));var client=jayson[_0xa88f('0x9')][_0xa88f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5194d6,_0x829bef,_0x3b16ac){return new BPromise(function(_0x5543bd,_0x48cef0){return client[_0xa88f('0xb')](_0x5194d6,_0x3b16ac)[_0xa88f('0xc')](function(_0x22f87e){logger[_0xa88f('0xd')]('ChatQueueReport,\x20%s,\x20%s',_0x829bef,_0xa88f('0xe'));logger[_0xa88f('0xf')]('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x829bef,_0xa88f('0xe'),JSON['stringify'](_0x22f87e));if(_0x22f87e[_0xa88f('0x10')]){if(_0x22f87e['error'][_0xa88f('0x11')]===0x1f4){logger[_0xa88f('0x10')](_0xa88f('0x12'),_0x829bef,_0x22f87e[_0xa88f('0x10')][_0xa88f('0x13')]);return _0x48cef0(_0x22f87e['error'][_0xa88f('0x13')]);}logger[_0xa88f('0x10')](_0xa88f('0x12'),_0x829bef,_0x22f87e[_0xa88f('0x10')][_0xa88f('0x13')]);return _0x5543bd(_0x22f87e[_0xa88f('0x10')]['message']);}else{logger[_0xa88f('0xd')](_0xa88f('0x12'),_0x829bef,_0xa88f('0xe'));_0x5543bd(_0x22f87e['result'][_0xa88f('0x13')]);}})[_0xa88f('0x14')](function(_0x4b801f){logger[_0xa88f('0x10')](_0xa88f('0x12'),_0x829bef,_0x4b801f);_0x48cef0(_0x4b801f);});});}exports[_0xa88f('0x15')]=function(_0x3ca1df){var _0x110a5f=this;return new Promise(function(_0x33a044,_0xc6ba1c){return db['ChatQueueReport'][_0xa88f('0x16')](_0x3ca1df['body'],{'raw':_0x3ca1df[_0xa88f('0x17')]?_0x3ca1df[_0xa88f('0x17')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8030){logger[_0xa88f('0xd')](_0xa88f('0x15'),_0x3ca1df);logger[_0xa88f('0xf')](_0xa88f('0x15'),_0x3ca1df,JSON[_0xa88f('0x18')](_0x1e8030));_0x33a044(_0x1e8030);})[_0xa88f('0x14')](function(_0x4f4b70){logger[_0xa88f('0x10')]('CreateChatQueueReport',_0x4f4b70['message'],_0x3ca1df);_0xc6ba1c(_0x110a5f[_0xa88f('0x10')](0x1f4,_0x4f4b70[_0xa88f('0x13')]));});});};exports[_0xa88f('0x19')]=function(_0x37cdf0){var _0x4e952e=this;return new Promise(function(_0x31eb78,_0x3579fd){return db['ChatQueueReport'][_0xa88f('0x1a')](_0x37cdf0[_0xa88f('0x1b')],{'raw':_0x37cdf0[_0xa88f('0x17')]?_0x37cdf0[_0xa88f('0x17')][_0xa88f('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x37cdf0[_0xa88f('0x17')]?_0x37cdf0[_0xa88f('0x17')]['where']||null:null,'attributes':_0x37cdf0['options']?_0x37cdf0[_0xa88f('0x17')][_0xa88f('0x1d')]||null:null,'limit':_0x37cdf0[_0xa88f('0x17')]?_0x37cdf0[_0xa88f('0x17')]['limit']||null:null})[_0xa88f('0xc')](function(_0x50cae7){logger[_0xa88f('0xd')](_0xa88f('0x19'),_0x37cdf0);logger['debug']('UpdateChatQueueReport',_0x37cdf0,JSON[_0xa88f('0x18')](_0x50cae7));_0x31eb78(_0x50cae7);})[_0xa88f('0x14')](function(_0x1819d7){logger[_0xa88f('0x10')]('UpdateChatQueueReport',_0x1819d7[_0xa88f('0x13')],_0x37cdf0);_0x3579fd(_0x4e952e['error'](0x1f4,_0x1819d7['message']));});});};
\ No newline at end of file
+var _0x3d93=['request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','CreateChatQueueReport','create','options','raw','then','UpdateChatQueueReport','ChatQueueReport','update','body','where','attributes','limit','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','ChatQueueReport,\x20%s,\x20%s'];(function(_0x13ba36,_0x4f8397){var _0x3304e7=function(_0x3e3e3d){while(--_0x3e3e3d){_0x13ba36['push'](_0x13ba36['shift']());}};_0x3304e7(++_0x4f8397);}(_0x3d93,0x74));var _0x33d9=function(_0xb0de5e,_0xf3fe8b){_0xb0de5e=_0xb0de5e-0x0;var _0x34af56=_0x3d93[_0xb0de5e];return _0x34af56;};'use strict';var _=require('lodash');var util=require(_0x33d9('0x0'));var moment=require(_0x33d9('0x1'));var BPromise=require(_0x33d9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x33d9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x33d9('0x4'));var logger=require('../../config/logger')(_0x33d9('0x5'));var config=require(_0x33d9('0x6'));var jayson=require(_0x33d9('0x7'));var client=jayson[_0x33d9('0x8')][_0x33d9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xdebf9f,_0x2ac46a,_0x161aff){return new BPromise(function(_0x35bccd,_0x1904d6){return client[_0x33d9('0xa')](_0xdebf9f,_0x161aff)['then'](function(_0x297af9){logger['info'](_0x33d9('0xb'),_0x2ac46a,_0x33d9('0xc'));logger[_0x33d9('0xd')](_0x33d9('0xe'),_0x2ac46a,_0x33d9('0xc'),JSON[_0x33d9('0xf')](_0x297af9));if(_0x297af9[_0x33d9('0x10')]){if(_0x297af9['error']['code']===0x1f4){logger[_0x33d9('0x10')](_0x33d9('0xb'),_0x2ac46a,_0x297af9[_0x33d9('0x10')]['message']);return _0x1904d6(_0x297af9[_0x33d9('0x10')][_0x33d9('0x11')]);}logger[_0x33d9('0x10')](_0x33d9('0xb'),_0x2ac46a,_0x297af9[_0x33d9('0x10')][_0x33d9('0x11')]);return _0x35bccd(_0x297af9['error'][_0x33d9('0x11')]);}else{logger[_0x33d9('0x12')](_0x33d9('0xb'),_0x2ac46a,_0x33d9('0xc'));_0x35bccd(_0x297af9['result']['message']);}})[_0x33d9('0x13')](function(_0x53aab9){logger[_0x33d9('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x2ac46a,_0x53aab9);_0x1904d6(_0x53aab9);});});}exports[_0x33d9('0x14')]=function(_0x257f35){var _0xcb6411=this;return new Promise(function(_0x2ee621,_0x3bf74a){return db['ChatQueueReport'][_0x33d9('0x15')](_0x257f35['body'],{'raw':_0x257f35[_0x33d9('0x16')]?_0x257f35[_0x33d9('0x16')][_0x33d9('0x17')]===undefined?!![]:![]:!![]})[_0x33d9('0x18')](function(_0x2d81d0){logger[_0x33d9('0x12')](_0x33d9('0x14'),_0x257f35);logger[_0x33d9('0xd')](_0x33d9('0x14'),_0x257f35,JSON['stringify'](_0x2d81d0));_0x2ee621(_0x2d81d0);})['catch'](function(_0x47ebfd){logger['error'](_0x33d9('0x14'),_0x47ebfd[_0x33d9('0x11')],_0x257f35);_0x3bf74a(_0xcb6411[_0x33d9('0x10')](0x1f4,_0x47ebfd[_0x33d9('0x11')]));});});};exports[_0x33d9('0x19')]=function(_0x152755){var _0x308baf=this;return new Promise(function(_0x5af22a,_0x3d6e2b){return db[_0x33d9('0x1a')][_0x33d9('0x1b')](_0x152755[_0x33d9('0x1c')],{'raw':_0x152755[_0x33d9('0x16')]?_0x152755[_0x33d9('0x16')][_0x33d9('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x152755[_0x33d9('0x16')]?_0x152755[_0x33d9('0x16')][_0x33d9('0x1d')]||null:null,'attributes':_0x152755[_0x33d9('0x16')]?_0x152755['options'][_0x33d9('0x1e')]||null:null,'limit':_0x152755[_0x33d9('0x16')]?_0x152755[_0x33d9('0x16')][_0x33d9('0x1f')]||null:null})['then'](function(_0x2695b2){logger[_0x33d9('0x12')]('UpdateChatQueueReport',_0x152755);logger[_0x33d9('0xd')](_0x33d9('0x19'),_0x152755,JSON[_0x33d9('0xf')](_0x2695b2));_0x5af22a(_0x2695b2);})['catch'](function(_0x133815){logger['error']('UpdateChatQueueReport',_0x133815[_0x33d9('0x11')],_0x152755);_0x3d6e2b(_0x308baf[_0x33d9('0x10')](0x1f4,_0x133815[_0x33d9('0x11')]));});});};
\ No newline at end of file
index d589bbc..4cb70e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8732=['/:id','show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x8732,0x1ec));var _0x2873=function(_0x2fc284,_0x5d271c){_0x2fc284=_0x2fc284-0x0;var _0x221234=_0x8732[_0x2fc284];return _0x221234;};'use strict';var multer=require(_0x2873('0x0'));var util=require(_0x2873('0x1'));var path=require('path');var timeout=require(_0x2873('0x2'));var express=require(_0x2873('0x3'));var router=express[_0x2873('0x4')]();var fs_extra=require(_0x2873('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2873('0x6'));var config=require(_0x2873('0x7'));var controller=require(_0x2873('0x8'));router[_0x2873('0x9')]('/',auth[_0x2873('0xa')](),controller[_0x2873('0xb')]);router[_0x2873('0x9')](_0x2873('0xc'),auth['isAuthenticated'](),controller[_0x2873('0xd')]);router['get'](_0x2873('0xe'),auth[_0x2873('0xa')](),controller[_0x2873('0xf')]);router[_0x2873('0x10')]('/',auth[_0x2873('0xa')](),controller[_0x2873('0x11')]);router[_0x2873('0x12')](_0x2873('0xe'),auth[_0x2873('0xa')](),controller['update']);router[_0x2873('0x13')](_0x2873('0xe'),auth[_0x2873('0xa')](),controller[_0x2873('0x14')]);module[_0x2873('0x15')]=router;
\ No newline at end of file
+var _0xedbe=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x273b77,_0x195e0b){var _0x2dd9e2=function(_0x463769){while(--_0x463769){_0x273b77['push'](_0x273b77['shift']());}};_0x2dd9e2(++_0x195e0b);}(_0xedbe,0x135));var _0xeedb=function(_0x456468,_0xffb3ca){_0x456468=_0x456468-0x0;var _0x2b9fc1=_0xedbe[_0x456468];return _0x2b9fc1;};'use strict';var multer=require(_0xeedb('0x0'));var util=require(_0xeedb('0x1'));var path=require(_0xeedb('0x2'));var timeout=require(_0xeedb('0x3'));var express=require(_0xeedb('0x4'));var router=express[_0xeedb('0x5')]();var fs_extra=require(_0xeedb('0x6'));var auth=require(_0xeedb('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xeedb('0x8'));var controller=require('./chatQueueReport.controller');router[_0xeedb('0x9')]('/',auth[_0xeedb('0xa')](),controller['index']);router['get']('/describe',auth[_0xeedb('0xa')](),controller[_0xeedb('0xb')]);router[_0xeedb('0x9')](_0xeedb('0xc'),auth[_0xeedb('0xa')](),controller[_0xeedb('0xd')]);router[_0xeedb('0xe')]('/',auth[_0xeedb('0xa')](),controller[_0xeedb('0xf')]);router[_0xeedb('0x10')](_0xeedb('0xc'),auth[_0xeedb('0xa')](),controller[_0xeedb('0x11')]);router[_0xeedb('0x12')]('/:id',auth[_0xeedb('0xa')](),controller[_0xeedb('0x13')]);module[_0xeedb('0x14')]=router;
\ No newline at end of file
index 1d15df5..5703d07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x336376,_0xe4b28d){var _0x1d2a8e=function(_0x3afe68){while(--_0x3afe68){_0x336376['push'](_0x336376['shift']());}};_0x1d2a8e(++_0xe4b28d);}(_0xb43b,0x1b2));var _0xbb43=function(_0x103b67,_0x241636){_0x103b67=_0x103b67-0x0;var _0xa56305=_0xb43b[_0x103b67];return _0xa56305;};'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
+var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x39dd93,_0x2e716c){var _0x5316e5=function(_0x414416){while(--_0x414416){_0x39dd93['push'](_0x39dd93['shift']());}};_0x5316e5(++_0x2e716c);}(_0xaa88,0x137));var _0x8aa8=function(_0x5f0501,_0x19196e){_0x5f0501=_0x5f0501-0x0;var _0x3c2c45=_0xaa88[_0x5f0501];return _0x3c2c45;};'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
index 04296f0..0e7c2dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04e4=['request-promise','bluebird','mustache','util','sox','ejs','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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','save','update','then','destroy','error','stack','name','send','ChatTransferReport','rawAttributes','key','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','length','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x117bcd,_0x4d0c3e){var _0x16162d=function(_0x174237){while(--_0x174237){_0x117bcd['push'](_0x117bcd['shift']());}};_0x16162d(++_0x4d0c3e);}(_0x04e4,0x17d));var _0x404e=function(_0x3e130f,_0x29c9f6){_0x3e130f=_0x3e130f-0x0;var _0x1d0c3d=_0x04e4[_0x3e130f];return _0x1d0c3d;};'use strict';var emlformat=require(_0x404e('0x0'));var rimraf=require(_0x404e('0x1'));var zipdir=require(_0x404e('0x2'));var jsonpatch=require(_0x404e('0x3'));var rp=require(_0x404e('0x4'));var moment=require('moment');var BPromise=require(_0x404e('0x5'));var Mustache=require(_0x404e('0x6'));var util=require(_0x404e('0x7'));var path=require('path');var sox=require(_0x404e('0x8'));var csv=require('to-csv');var ejs=require(_0x404e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x404e('0xa'));var squel=require(_0x404e('0xb'));var crypto=require('crypto');var jsforce=require(_0x404e('0xc'));var deskjs=require(_0x404e('0xd'));var toCsv=require(_0x404e('0xe'));var querystring=require(_0x404e('0xf'));var Papa=require(_0x404e('0x10'));var Redis=require(_0x404e('0x11'));var authService=require(_0x404e('0x12'));var qs=require(_0x404e('0x13'));var as=require(_0x404e('0x14'));var hardwareService=require(_0x404e('0x15'));var logger=require(_0x404e('0x16'))(_0x404e('0x17'));var utils=require(_0x404e('0x18'));var config=require(_0x404e('0x19'));var licenseUtil=require(_0x404e('0x1a'));var db=require(_0x404e('0x1b'))['db'];function respondWithStatusCode(_0x196a73,_0x1a08bf){_0x1a08bf=_0x1a08bf||0xcc;return function(_0x181e1b){if(_0x181e1b){return _0x196a73[_0x404e('0x1c')](_0x1a08bf);}return _0x196a73['status'](_0x1a08bf)[_0x404e('0x1d')]();};}function respondWithResult(_0x11a594,_0x1d3dde){_0x1d3dde=_0x1d3dde||0xc8;return function(_0x3594e6){if(_0x3594e6){return _0x11a594[_0x404e('0x1e')](_0x1d3dde)[_0x404e('0x1f')](_0x3594e6);}};}function respondWithFilteredResult(_0x1ceafe,_0x41a86c){return function(_0x13880d){if(_0x13880d){var _0x5c2ae6=typeof _0x41a86c[_0x404e('0x20')]===_0x404e('0x21')&&typeof _0x41a86c[_0x404e('0x22')]==='undefined';var _0x5a42ce=_0x13880d[_0x404e('0x23')];var _0x1fdf8e=_0x5c2ae6?0x0:_0x41a86c[_0x404e('0x20')];var _0x47d9d3=_0x5c2ae6?_0x13880d[_0x404e('0x23')]:_0x41a86c['offset']+_0x41a86c[_0x404e('0x22')];var _0x2f705e;if(_0x47d9d3>=_0x5a42ce){_0x47d9d3=_0x5a42ce;_0x2f705e=0xc8;}else{_0x2f705e=0xce;}_0x1ceafe['status'](_0x2f705e);return _0x1ceafe[_0x404e('0x24')]('Content-Range',_0x1fdf8e+'-'+_0x47d9d3+'/'+_0x5a42ce)['json'](_0x13880d);}return null;};}function patchUpdates(_0x31a2da){return function(_0x3f57ae){try{jsonpatch['apply'](_0x3f57ae,_0x31a2da,!![]);}catch(_0x501397){return BPromise['reject'](_0x501397);}return _0x3f57ae[_0x404e('0x25')]();};}function saveUpdates(_0xa0ce8f,_0x57261a){return function(_0x1dd648){if(_0x1dd648){return _0x1dd648[_0x404e('0x26')](_0xa0ce8f)[_0x404e('0x27')](function(_0x194da0){return _0x194da0;});}return null;};}function removeEntity(_0xeb5fc3,_0x2c562f){return function(_0x293aff){if(_0x293aff){return _0x293aff[_0x404e('0x28')]()[_0x404e('0x27')](function(){_0xeb5fc3[_0x404e('0x1e')](0xcc)[_0x404e('0x1d')]();});}};}function handleEntityNotFound(_0x430e75,_0x1d4376){return function(_0x1f982d){if(!_0x1f982d){_0x430e75['sendStatus'](0x194);}return _0x1f982d;};}function handleError(_0x35b89c,_0x4f0b81){_0x4f0b81=_0x4f0b81||0x1f4;return function(_0x43d534){logger[_0x404e('0x29')](_0x43d534[_0x404e('0x2a')]);if(_0x43d534[_0x404e('0x2b')]){delete _0x43d534[_0x404e('0x2b')];}_0x35b89c[_0x404e('0x1e')](_0x4f0b81)[_0x404e('0x2c')](_0x43d534);};}exports['index']=function(_0x4f155d,_0x2b443e){var _0x57fd4f={},_0x90a267={},_0x2cd896={'count':0x0,'rows':[]};var _0x436925=_['map'](db[_0x404e('0x2d')][_0x404e('0x2e')],function(_0xafa01e){return{'name':_0xafa01e['fieldName'],'type':_0xafa01e['type'][_0x404e('0x2f')]};});_0x90a267[_0x404e('0x30')]=_[_0x404e('0x31')](_0x436925,_0x404e('0x2b'));_0x90a267['query']=_[_0x404e('0x32')](_0x4f155d[_0x404e('0x33')]);_0x90a267[_0x404e('0x34')]=_[_0x404e('0x35')](_0x90a267['model'],_0x90a267[_0x404e('0x33')]);_0x57fd4f[_0x404e('0x36')]=_[_0x404e('0x35')](_0x90a267[_0x404e('0x30')],qs['fields'](_0x4f155d[_0x404e('0x33')][_0x404e('0x37')]));_0x57fd4f[_0x404e('0x36')]=_0x57fd4f['attributes']['length']?_0x57fd4f[_0x404e('0x36')]:_0x90a267[_0x404e('0x30')];if(!_0x4f155d[_0x404e('0x33')][_0x404e('0x38')](_0x404e('0x39'))){_0x57fd4f[_0x404e('0x22')]=qs[_0x404e('0x22')](_0x4f155d[_0x404e('0x33')][_0x404e('0x22')]);_0x57fd4f[_0x404e('0x20')]=qs['offset'](_0x4f155d[_0x404e('0x33')][_0x404e('0x20')]);}_0x57fd4f['order']=qs['sort'](_0x4f155d[_0x404e('0x33')][_0x404e('0x3a')]);_0x57fd4f[_0x404e('0x3b')]=qs[_0x404e('0x34')](_[_0x404e('0x3c')](_0x4f155d[_0x404e('0x33')],_0x90a267[_0x404e('0x34')]),_0x436925);if(_0x4f155d[_0x404e('0x33')][_0x404e('0x3d')]){_0x57fd4f[_0x404e('0x3b')]=_[_0x404e('0x3e')](_0x57fd4f['where'],{'$or':_[_0x404e('0x31')](_0x436925,function(_0x307a1f){if(_0x307a1f[_0x404e('0x3f')]!==_0x404e('0x40')){var _0x54ce7c={};_0x54ce7c[_0x307a1f[_0x404e('0x2b')]]={'$like':'%'+_0x4f155d[_0x404e('0x33')][_0x404e('0x3d')]+'%'};return _0x54ce7c;}})});}_0x57fd4f=_[_0x404e('0x3e')]({},_0x57fd4f,_0x4f155d[_0x404e('0x41')]);var _0x2dc03c={'where':_0x57fd4f[_0x404e('0x3b')]};return db[_0x404e('0x2d')][_0x404e('0x23')](_0x2dc03c)[_0x404e('0x27')](function(_0x55db66){_0x2cd896[_0x404e('0x23')]=_0x55db66;if(_0x4f155d[_0x404e('0x33')][_0x404e('0x42')]){_0x57fd4f[_0x404e('0x43')]=[{'all':!![]}];}return db['ChatTransferReport'][_0x404e('0x44')](_0x57fd4f);})[_0x404e('0x27')](function(_0x3f96af){_0x2cd896['rows']=_0x3f96af;return _0x2cd896;})[_0x404e('0x27')](respondWithFilteredResult(_0x2b443e,_0x57fd4f))[_0x404e('0x45')](handleError(_0x2b443e,null));};exports[_0x404e('0x46')]=function(_0x1d1596,_0x3870bd){var _0x1a03f7={'raw':!![],'where':{'id':_0x1d1596[_0x404e('0x47')]['id']}},_0x1fd35e={};_0x1fd35e['model']=_[_0x404e('0x32')](db[_0x404e('0x2d')][_0x404e('0x2e')]);_0x1fd35e['query']=_[_0x404e('0x32')](_0x1d1596[_0x404e('0x33')]);_0x1fd35e[_0x404e('0x34')]=_['intersection'](_0x1fd35e[_0x404e('0x30')],_0x1fd35e[_0x404e('0x33')]);_0x1a03f7[_0x404e('0x36')]=_[_0x404e('0x35')](_0x1fd35e['model'],qs[_0x404e('0x37')](_0x1d1596[_0x404e('0x33')]['fields']));_0x1a03f7[_0x404e('0x36')]=_0x1a03f7[_0x404e('0x36')][_0x404e('0x48')]?_0x1a03f7['attributes']:_0x1fd35e[_0x404e('0x30')];if(_0x1d1596['query'][_0x404e('0x42')]){_0x1a03f7[_0x404e('0x43')]=[{'all':!![]}];}_0x1a03f7=_[_0x404e('0x3e')]({},_0x1a03f7,_0x1d1596[_0x404e('0x41')]);return db[_0x404e('0x2d')][_0x404e('0x49')](_0x1a03f7)[_0x404e('0x27')](handleEntityNotFound(_0x3870bd,null))[_0x404e('0x27')](respondWithResult(_0x3870bd,null))['catch'](handleError(_0x3870bd,null));};exports[_0x404e('0x4a')]=function(_0x35ca06,_0x2c34ed){return db['ChatTransferReport']['create'](_0x35ca06[_0x404e('0x4b')],{})['then'](respondWithResult(_0x2c34ed,0xc9))[_0x404e('0x45')](handleError(_0x2c34ed,null));};exports[_0x404e('0x26')]=function(_0x2d09f7,_0x4d6465){if(_0x2d09f7['body']['id']){delete _0x2d09f7[_0x404e('0x4b')]['id'];}return db[_0x404e('0x2d')][_0x404e('0x49')]({'where':{'id':_0x2d09f7['params']['id']}})[_0x404e('0x27')](handleEntityNotFound(_0x4d6465,null))[_0x404e('0x27')](saveUpdates(_0x2d09f7[_0x404e('0x4b')],null))[_0x404e('0x27')](respondWithResult(_0x4d6465,null))['catch'](handleError(_0x4d6465,null));};exports[_0x404e('0x28')]=function(_0x52c272,_0x347f80){return db[_0x404e('0x2d')][_0x404e('0x49')]({'where':{'id':_0x52c272[_0x404e('0x47')]['id']}})['then'](handleEntityNotFound(_0x347f80,null))['then'](removeEntity(_0x347f80,null))[_0x404e('0x45')](handleError(_0x347f80,null));};exports[_0x404e('0x4c')]=function(_0x5771e1,_0x1b7e7b){return db[_0x404e('0x2d')][_0x404e('0x4c')]()['then'](respondWithResult(_0x1b7e7b,null))[_0x404e('0x45')](handleError(_0x1b7e7b,null));};
\ No newline at end of file
+var _0x07df=['json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','end','sendStatus','name','send','index','rawAttributes','type','key','map','query','filters','model','attributes','intersection','fields','length','order','sort','pick','filter','where','merge','options','ChatTransferReport','includeAll','include','findAll','show','params','keys','find','catch','create','body','destroy','describe','eml-format','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','status'];(function(_0x3670e6,_0x4cc370){var _0x52c303=function(_0x1891ed){while(--_0x1891ed){_0x3670e6['push'](_0x3670e6['shift']());}};_0x52c303(++_0x4cc370);}(_0x07df,0xfe));var _0xf07d=function(_0x55a707,_0x1537b1){_0x55a707=_0x55a707-0x0;var _0xda6572=_0x07df[_0x55a707];return _0xda6572;};'use strict';var emlformat=require(_0xf07d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf07d('0x1'));var rp=require(_0xf07d('0x2'));var moment=require(_0xf07d('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf07d('0x4'));var path=require(_0xf07d('0x5'));var sox=require('sox');var csv=require(_0xf07d('0x6'));var ejs=require(_0xf07d('0x7'));var fs=require('fs');var fs_extra=require(_0xf07d('0x8'));var _=require(_0xf07d('0x9'));var squel=require(_0xf07d('0xa'));var crypto=require(_0xf07d('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf07d('0xc'));var toCsv=require(_0xf07d('0x6'));var querystring=require('querystring');var Papa=require(_0xf07d('0xd'));var Redis=require(_0xf07d('0xe'));var authService=require(_0xf07d('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xf07d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf07d('0x11'))(_0xf07d('0x12'));var utils=require('../../config/utils');var config=require(_0xf07d('0x13'));var licenseUtil=require(_0xf07d('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23a3ee,_0x35510f){_0x35510f=_0x35510f||0xcc;return function(_0x4b91a1){if(_0x4b91a1){return _0x23a3ee['sendStatus'](_0x35510f);}return _0x23a3ee[_0xf07d('0x15')](_0x35510f)['end']();};}function respondWithResult(_0x2b6a40,_0x42888e){_0x42888e=_0x42888e||0xc8;return function(_0x541090){if(_0x541090){return _0x2b6a40[_0xf07d('0x15')](_0x42888e)[_0xf07d('0x16')](_0x541090);}};}function respondWithFilteredResult(_0x2f2359,_0xe9c2aa){return function(_0x17c983){if(_0x17c983){var _0x5130af=typeof _0xe9c2aa[_0xf07d('0x17')]===_0xf07d('0x18')&&typeof _0xe9c2aa['limit']===_0xf07d('0x18');var _0x1c00d4=_0x17c983['count'];var _0x5a5e74=_0x5130af?0x0:_0xe9c2aa[_0xf07d('0x17')];var _0x5cd858=_0x5130af?_0x17c983[_0xf07d('0x19')]:_0xe9c2aa[_0xf07d('0x17')]+_0xe9c2aa[_0xf07d('0x1a')];var _0x50991b;if(_0x5cd858>=_0x1c00d4){_0x5cd858=_0x1c00d4;_0x50991b=0xc8;}else{_0x50991b=0xce;}_0x2f2359[_0xf07d('0x15')](_0x50991b);return _0x2f2359[_0xf07d('0x1b')](_0xf07d('0x1c'),_0x5a5e74+'-'+_0x5cd858+'/'+_0x1c00d4)[_0xf07d('0x16')](_0x17c983);}return null;};}function patchUpdates(_0x270438){return function(_0x399ce9){try{jsonpatch[_0xf07d('0x1d')](_0x399ce9,_0x270438,!![]);}catch(_0x104999){return BPromise[_0xf07d('0x1e')](_0x104999);}return _0x399ce9[_0xf07d('0x1f')]();};}function saveUpdates(_0x207c55,_0x54f4a8){return function(_0x366692){if(_0x366692){return _0x366692['update'](_0x207c55)[_0xf07d('0x20')](function(_0x2000e9){return _0x2000e9;});}return null;};}function removeEntity(_0x35f250,_0x51529b){return function(_0x2ad8a9){if(_0x2ad8a9){return _0x2ad8a9['destroy']()[_0xf07d('0x20')](function(){_0x35f250[_0xf07d('0x15')](0xcc)[_0xf07d('0x21')]();});}};}function handleEntityNotFound(_0x53ce0b,_0x5528d6){return function(_0x5da090){if(!_0x5da090){_0x53ce0b[_0xf07d('0x22')](0x194);}return _0x5da090;};}function handleError(_0x10a3d4,_0x57d40c){_0x57d40c=_0x57d40c||0x1f4;return function(_0x359e0c){logger['error'](_0x359e0c['stack']);if(_0x359e0c[_0xf07d('0x23')]){delete _0x359e0c[_0xf07d('0x23')];}_0x10a3d4[_0xf07d('0x15')](_0x57d40c)[_0xf07d('0x24')](_0x359e0c);};}exports[_0xf07d('0x25')]=function(_0x43b18e,_0x41c0dd){var _0x38d6ca={},_0x1dac82={},_0x80b72c={'count':0x0,'rows':[]};var _0x30cb09=_['map'](db['ChatTransferReport'][_0xf07d('0x26')],function(_0x323dce){return{'name':_0x323dce['fieldName'],'type':_0x323dce[_0xf07d('0x27')][_0xf07d('0x28')]};});_0x1dac82['model']=_[_0xf07d('0x29')](_0x30cb09,_0xf07d('0x23'));_0x1dac82[_0xf07d('0x2a')]=_['keys'](_0x43b18e[_0xf07d('0x2a')]);_0x1dac82[_0xf07d('0x2b')]=_['intersection'](_0x1dac82[_0xf07d('0x2c')],_0x1dac82['query']);_0x38d6ca[_0xf07d('0x2d')]=_[_0xf07d('0x2e')](_0x1dac82[_0xf07d('0x2c')],qs[_0xf07d('0x2f')](_0x43b18e[_0xf07d('0x2a')][_0xf07d('0x2f')]));_0x38d6ca[_0xf07d('0x2d')]=_0x38d6ca[_0xf07d('0x2d')][_0xf07d('0x30')]?_0x38d6ca[_0xf07d('0x2d')]:_0x1dac82['model'];if(!_0x43b18e[_0xf07d('0x2a')]['hasOwnProperty']('nolimit')){_0x38d6ca[_0xf07d('0x1a')]=qs[_0xf07d('0x1a')](_0x43b18e[_0xf07d('0x2a')]['limit']);_0x38d6ca[_0xf07d('0x17')]=qs[_0xf07d('0x17')](_0x43b18e[_0xf07d('0x2a')][_0xf07d('0x17')]);}_0x38d6ca[_0xf07d('0x31')]=qs[_0xf07d('0x32')](_0x43b18e[_0xf07d('0x2a')][_0xf07d('0x32')]);_0x38d6ca['where']=qs[_0xf07d('0x2b')](_[_0xf07d('0x33')](_0x43b18e[_0xf07d('0x2a')],_0x1dac82[_0xf07d('0x2b')]),_0x30cb09);if(_0x43b18e['query'][_0xf07d('0x34')]){_0x38d6ca[_0xf07d('0x35')]=_[_0xf07d('0x36')](_0x38d6ca[_0xf07d('0x35')],{'$or':_['map'](_0x30cb09,function(_0x5420a1){if(_0x5420a1[_0xf07d('0x27')]!=='VIRTUAL'){var _0x225382={};_0x225382[_0x5420a1[_0xf07d('0x23')]]={'$like':'%'+_0x43b18e[_0xf07d('0x2a')]['filter']+'%'};return _0x225382;}})});}_0x38d6ca=_[_0xf07d('0x36')]({},_0x38d6ca,_0x43b18e[_0xf07d('0x37')]);var _0x339366={'where':_0x38d6ca[_0xf07d('0x35')]};return db[_0xf07d('0x38')][_0xf07d('0x19')](_0x339366)[_0xf07d('0x20')](function(_0x5926c8){_0x80b72c[_0xf07d('0x19')]=_0x5926c8;if(_0x43b18e['query'][_0xf07d('0x39')]){_0x38d6ca[_0xf07d('0x3a')]=[{'all':!![]}];}return db['ChatTransferReport'][_0xf07d('0x3b')](_0x38d6ca);})[_0xf07d('0x20')](function(_0x24f571){_0x80b72c['rows']=_0x24f571;return _0x80b72c;})[_0xf07d('0x20')](respondWithFilteredResult(_0x41c0dd,_0x38d6ca))['catch'](handleError(_0x41c0dd,null));};exports[_0xf07d('0x3c')]=function(_0x3bba2b,_0x427a8a){var _0x14c1b4={'raw':!![],'where':{'id':_0x3bba2b[_0xf07d('0x3d')]['id']}},_0x52e242={};_0x52e242[_0xf07d('0x2c')]=_[_0xf07d('0x3e')](db['ChatTransferReport'][_0xf07d('0x26')]);_0x52e242[_0xf07d('0x2a')]=_[_0xf07d('0x3e')](_0x3bba2b[_0xf07d('0x2a')]);_0x52e242[_0xf07d('0x2b')]=_[_0xf07d('0x2e')](_0x52e242['model'],_0x52e242[_0xf07d('0x2a')]);_0x14c1b4[_0xf07d('0x2d')]=_[_0xf07d('0x2e')](_0x52e242[_0xf07d('0x2c')],qs[_0xf07d('0x2f')](_0x3bba2b[_0xf07d('0x2a')][_0xf07d('0x2f')]));_0x14c1b4[_0xf07d('0x2d')]=_0x14c1b4[_0xf07d('0x2d')]['length']?_0x14c1b4['attributes']:_0x52e242['model'];if(_0x3bba2b['query']['includeAll']){_0x14c1b4[_0xf07d('0x3a')]=[{'all':!![]}];}_0x14c1b4=_['merge']({},_0x14c1b4,_0x3bba2b[_0xf07d('0x37')]);return db[_0xf07d('0x38')][_0xf07d('0x3f')](_0x14c1b4)[_0xf07d('0x20')](handleEntityNotFound(_0x427a8a,null))[_0xf07d('0x20')](respondWithResult(_0x427a8a,null))[_0xf07d('0x40')](handleError(_0x427a8a,null));};exports[_0xf07d('0x41')]=function(_0x37f785,_0x358cef){return db[_0xf07d('0x38')][_0xf07d('0x41')](_0x37f785['body'],{})[_0xf07d('0x20')](respondWithResult(_0x358cef,0xc9))[_0xf07d('0x40')](handleError(_0x358cef,null));};exports['update']=function(_0x1a2e96,_0x195ddd){if(_0x1a2e96[_0xf07d('0x42')]['id']){delete _0x1a2e96[_0xf07d('0x42')]['id'];}return db[_0xf07d('0x38')][_0xf07d('0x3f')]({'where':{'id':_0x1a2e96[_0xf07d('0x3d')]['id']}})[_0xf07d('0x20')](handleEntityNotFound(_0x195ddd,null))[_0xf07d('0x20')](saveUpdates(_0x1a2e96[_0xf07d('0x42')],null))[_0xf07d('0x20')](respondWithResult(_0x195ddd,null))[_0xf07d('0x40')](handleError(_0x195ddd,null));};exports[_0xf07d('0x43')]=function(_0x1a5b68,_0x26a390){return db[_0xf07d('0x38')][_0xf07d('0x3f')]({'where':{'id':_0x1a5b68[_0xf07d('0x3d')]['id']}})['then'](handleEntityNotFound(_0x26a390,null))[_0xf07d('0x20')](removeEntity(_0x26a390,null))[_0xf07d('0x40')](handleError(_0x26a390,null));};exports[_0xf07d('0x44')]=function(_0x54b5d4,_0x3bb22f){return db[_0xf07d('0x38')]['describe']()[_0xf07d('0x20')](respondWithResult(_0x3bb22f,null))[_0xf07d('0x40')](handleError(_0x3bb22f,null));};
\ No newline at end of file
index cdf9bbe..564af1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21c5=['request-promise','path','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','../../config/logger','moment','bluebird'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x21c5,0x118));var _0x521c=function(_0x5133c2,_0x49fa51){_0x5133c2=_0x5133c2-0x0;var _0x55b197=_0x21c5[_0x5133c2];return _0x55b197;};'use strict';var _=require(_0x521c('0x0'));var util=require(_0x521c('0x1'));var logger=require(_0x521c('0x2'))('api');var moment=require(_0x521c('0x3'));var BPromise=require(_0x521c('0x4'));var rp=require(_0x521c('0x5'));var fs=require('fs');var path=require(_0x521c('0x6'));var rimraf=require(_0x521c('0x7'));var config=require(_0x521c('0x8'));var attributes=require(_0x521c('0x9'));module[_0x521c('0xa')]=function(_0x23342e,_0x3053dd){return _0x23342e[_0x521c('0xb')](_0x521c('0xc'),attributes,{'tableName':_0x521c('0xd'),'paranoid':![],'indexes':[{'name':_0x521c('0xe'),'fields':[_0x521c('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x68c8=['./chatTransferReport.attributes','exports','report_chat_transfer','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x2f3d29,_0x150e7b){var _0x53d69d=function(_0x45f6ec){while(--_0x45f6ec){_0x2f3d29['push'](_0x2f3d29['shift']());}};_0x53d69d(++_0x150e7b);}(_0x68c8,0xac));var _0x868c=function(_0x30e109,_0x466c0e){_0x30e109=_0x30e109-0x0;var _0x19554d=_0x68c8[_0x30e109];return _0x19554d;};'use strict';var _=require(_0x868c('0x0'));var util=require(_0x868c('0x1'));var logger=require(_0x868c('0x2'))(_0x868c('0x3'));var moment=require('moment');var BPromise=require(_0x868c('0x4'));var rp=require(_0x868c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x868c('0x6'));var config=require(_0x868c('0x7'));var attributes=require(_0x868c('0x8'));module[_0x868c('0x9')]=function(_0x340b5d,_0x1af162){return _0x340b5d['define']('ChatTransferReport',attributes,{'tableName':_0x868c('0xa'),'paranoid':![],'indexes':[{'name':_0x868c('0xb'),'fields':[_0x868c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index f4df68d..dddf21c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73bc=['debug','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','ChatTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x3616bc,_0x19ddee){var _0x1eb469=function(_0x1e652f){while(--_0x1e652f){_0x3616bc['push'](_0x3616bc['shift']());}};_0x1eb469(++_0x19ddee);}(_0x73bc,0xc0));var _0xc73b=function(_0x50d682,_0xe221ed){_0x50d682=_0x50d682-0x0;var _0x56f8ff=_0x73bc[_0x50d682];return _0x56f8ff;};'use strict';var _=require(_0xc73b('0x0'));var util=require(_0xc73b('0x1'));var moment=require(_0xc73b('0x2'));var BPromise=require(_0xc73b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc73b('0x4'));var db=require(_0xc73b('0x5'))['db'];var utils=require(_0xc73b('0x6'));var logger=require(_0xc73b('0x7'))(_0xc73b('0x8'));var config=require(_0xc73b('0x9'));var jayson=require(_0xc73b('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x49a6af,_0xc203cb,_0x5bbc3c){return new BPromise(function(_0x2ae2c2,_0x59504c){return client[_0xc73b('0xb')](_0x49a6af,_0x5bbc3c)[_0xc73b('0xc')](function(_0x348b84){logger['info'](_0xc73b('0xd'),_0xc203cb,_0xc73b('0xe'));logger[_0xc73b('0xf')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0xc203cb,_0xc73b('0xe'),JSON[_0xc73b('0x10')](_0x348b84));if(_0x348b84[_0xc73b('0x11')]){if(_0x348b84[_0xc73b('0x11')][_0xc73b('0x12')]===0x1f4){logger[_0xc73b('0x11')]('ChatTransferReport,\x20%s,\x20%s',_0xc203cb,_0x348b84[_0xc73b('0x11')][_0xc73b('0x13')]);return _0x59504c(_0x348b84[_0xc73b('0x11')][_0xc73b('0x13')]);}logger['error'](_0xc73b('0xd'),_0xc203cb,_0x348b84[_0xc73b('0x11')]['message']);return _0x2ae2c2(_0x348b84[_0xc73b('0x11')][_0xc73b('0x13')]);}else{logger[_0xc73b('0x14')](_0xc73b('0xd'),_0xc203cb,'request\x20sent');_0x2ae2c2(_0x348b84[_0xc73b('0x15')]['message']);}})[_0xc73b('0x16')](function(_0x32dc11){logger[_0xc73b('0x11')]('ChatTransferReport,\x20%s,\x20%s',_0xc203cb,_0x32dc11);_0x59504c(_0x32dc11);});});}
\ No newline at end of file
+var _0x4cf1=['debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','ChatTransferReport,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4cf1,0xfa));var _0x14cf=function(_0xfed299,_0x21b8d0){_0xfed299=_0xfed299-0x0;var _0x4ef1f2=_0x4cf1[_0xfed299];return _0x4ef1f2;};'use strict';var _=require(_0x14cf('0x0'));var util=require(_0x14cf('0x1'));var moment=require(_0x14cf('0x2'));var BPromise=require('bluebird');var rs=require(_0x14cf('0x3'));var fs=require('fs');var Redis=require(_0x14cf('0x4'));var db=require(_0x14cf('0x5'))['db'];var utils=require(_0x14cf('0x6'));var logger=require(_0x14cf('0x7'))(_0x14cf('0x8'));var config=require(_0x14cf('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x14cf('0xa')][_0x14cf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x80a1d0,_0x50db84,_0x18789b){return new BPromise(function(_0x423183,_0x4676e9){return client[_0x14cf('0xc')](_0x80a1d0,_0x18789b)['then'](function(_0x4734a4){logger['info'](_0x14cf('0xd'),_0x50db84,'request\x20sent');logger[_0x14cf('0xe')](_0x14cf('0xf'),_0x50db84,_0x14cf('0x10'),JSON['stringify'](_0x4734a4));if(_0x4734a4[_0x14cf('0x11')]){if(_0x4734a4[_0x14cf('0x11')][_0x14cf('0x12')]===0x1f4){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x50db84,_0x4734a4[_0x14cf('0x11')][_0x14cf('0x13')]);return _0x4676e9(_0x4734a4[_0x14cf('0x11')][_0x14cf('0x13')]);}logger['error'](_0x14cf('0xd'),_0x50db84,_0x4734a4['error'][_0x14cf('0x13')]);return _0x423183(_0x4734a4[_0x14cf('0x11')]['message']);}else{logger[_0x14cf('0x14')](_0x14cf('0xd'),_0x50db84,_0x14cf('0x10'));_0x423183(_0x4734a4[_0x14cf('0x15')][_0x14cf('0x13')]);}})['catch'](function(_0x4a58b9){logger[_0x14cf('0x11')](_0x14cf('0xd'),_0x50db84,_0x4a58b9);_0x4676e9(_0x4a58b9);});});}
\ No newline at end of file
index d558967..5d1f3d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa106=['post','update','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','index','/describe','/:id','isAuthenticated','show'];(function(_0x1c5bb5,_0x729571){var _0x527a9c=function(_0x27981a){while(--_0x27981a){_0x1c5bb5['push'](_0x1c5bb5['shift']());}};_0x527a9c(++_0x729571);}(_0xa106,0x112));var _0x6a10=function(_0xd07e81,_0x1ccacd){_0xd07e81=_0xd07e81-0x0;var _0x379364=_0xa106[_0xd07e81];return _0x379364;};'use strict';var multer=require(_0x6a10('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6a10('0x1'));var express=require(_0x6a10('0x2'));var router=express[_0x6a10('0x3')]();var fs_extra=require(_0x6a10('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6a10('0x5'));var config=require(_0x6a10('0x6'));var controller=require(_0x6a10('0x7'));router[_0x6a10('0x8')]('/',auth['isAuthenticated'](),controller[_0x6a10('0x9')]);router['get'](_0x6a10('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x6a10('0x8')](_0x6a10('0xb'),auth[_0x6a10('0xc')](),controller[_0x6a10('0xd')]);router[_0x6a10('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x6a10('0xb'),auth[_0x6a10('0xc')](),controller[_0x6a10('0xf')]);router[_0x6a10('0x10')](_0x6a10('0xb'),auth[_0x6a10('0xc')](),controller[_0x6a10('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x7f54=['/:id','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./chatTransferReport.controller','get','isAuthenticated','index','/describe','show','post'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0x7f54,0x15a));var _0x47f5=function(_0x2bf4f3,_0x225c34){_0x2bf4f3=_0x2bf4f3-0x0;var _0x2147e2=_0x7f54[_0x2bf4f3];return _0x2147e2;};'use strict';var multer=require(_0x47f5('0x0'));var util=require(_0x47f5('0x1'));var path=require(_0x47f5('0x2'));var timeout=require(_0x47f5('0x3'));var express=require(_0x47f5('0x4'));var router=express['Router']();var fs_extra=require(_0x47f5('0x5'));var auth=require(_0x47f5('0x6'));var interaction=require(_0x47f5('0x7'));var config=require('../../config/environment');var controller=require(_0x47f5('0x8'));router[_0x47f5('0x9')]('/',auth[_0x47f5('0xa')](),controller[_0x47f5('0xb')]);router[_0x47f5('0x9')](_0x47f5('0xc'),auth[_0x47f5('0xa')](),controller['describe']);router[_0x47f5('0x9')]('/:id',auth[_0x47f5('0xa')](),controller[_0x47f5('0xd')]);router[_0x47f5('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47f5('0xf'),auth['isAuthenticated'](),controller[_0x47f5('0x10')]);router[_0x47f5('0x11')](_0x47f5('0xf'),auth[_0x47f5('0xa')](),controller['destroy']);module[_0x47f5('0x12')]=router;
\ No newline at end of file
index b42db27..a966adb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb9a=['Comments','Leave\x20your\x20comments','offlineForm','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.','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','Generated\x20by\x20XCALLY\x20Motion','sequelize','randomstring','STRING','email','Agent','#011F6A','#ffffff','rounded','Chat','Send','Contact\x20us','BOOLEAN','INTEGER','Powered\x20by\x20xCALLY','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','ENUM','star','thumb','input','text','name','getDataValue','onlineForm','parse','TEXT','stringify'];(function(_0x46fc6c,_0x297637){var _0x18694f=function(_0x34e1e0){while(--_0x34e1e0){_0x46fc6c['push'](_0x46fc6c['shift']());}};_0x18694f(++_0x297637);}(_0xfb9a,0x199));var _0xafb9=function(_0x579e57,_0x1feb17){_0x579e57=_0x579e57-0x0;var _0x2d8e54=_0xfb9a[_0x579e57];return _0x2d8e54;};'use strict';var Sequelize=require(_0xafb9('0x0'));var rs=require(_0xafb9('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0xafb9('0x2')]},'mapKey':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x3')},'mapKeyOffline':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':'email'},'key':{'type':Sequelize[_0xafb9('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0xafb9('0x4')},'customerAlias':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xafb9('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xafb9('0x2')],'allowNull':![],'defaultValue':_0xafb9('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xafb9('0x2')],'allowNull':![],'defaultValue':_0xafb9('0x6'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0xafb9('0x2')]},'animation':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM'](_0xafb9('0x7'),'squared'),'defaultValue':_0xafb9('0x7')},'header_online':{'type':Sequelize['STRING'],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x8')},'offline_chat_button':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x9')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0xafb9('0xa')},'download_transcript':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xafb9('0xc')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0xd')},'defaultWhiteLabel':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0xe')},'formSubmitSuccessMessage':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0xf')},'formSubmitFailureMessage':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x10')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':_0xafb9('0x11')},'closingMessage':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x12')},'closingMessageButton':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x13')},'conditionAgreement':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize['STRING'],'defaultValue':_0xafb9('0x14')},'ratingType':{'type':Sequelize[_0xafb9('0x15')](_0xafb9('0x16'),_0xafb9('0x17')),'defaultValue':_0xafb9('0x16')},'ratingStarsNumber':{'type':Sequelize[_0xafb9('0xc')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0xafb9('0x18'),'variable':null,'config':{'placeholder':'name','type':_0xafb9('0x19'),'required':!![]},'props':{'title':_0xafb9('0x1a'),'helpText':''}},{'type':'input','props':{'title':_0xafb9('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0xafb9('0x3'),'type':_0xafb9('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xafb9('0x1b')](_0xafb9('0x1c'))?JSON[_0xafb9('0x1d')](this[_0xafb9('0x1b')](_0xafb9('0x1c'))):{};},'set':function(_0xd29c41){return this['setDataValue']('onlineForm',JSON['stringify'](_0xd29c41));}},'offlineForm':{'type':Sequelize[_0xafb9('0x1e')],'defaultValue':function(){return JSON[_0xafb9('0x1f')]({'items':[{'type':'input','props':{'title':_0xafb9('0x3'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xafb9('0x3')},'variable':null},{'type':'textarea','config':{'placeholder':_0xafb9('0x20')},'props':{'title':_0xafb9('0x20'),'helpText':_0xafb9('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0xafb9('0x1b')]('offlineForm')?JSON[_0xafb9('0x1d')](this[_0xafb9('0x1b')]('offlineForm')):{};},'set':function(_0x149b9c){return this['setDataValue'](_0xafb9('0x22'),JSON[_0xafb9('0x1f')](_0x149b9c));}},'token':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':function(){return rs[_0xafb9('0x23')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xafb9('0x2')]},'forwardOffline':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xafb9('0x2')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0xafb9('0x24')},'waitingMessage':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x25')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x26')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x27')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0xafb9('0x13')},'sendUnmanaged':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x9')},'enableCustomerAttachment':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xafb9('0x2')]},'notificationTemplate':{'type':Sequelize[_0xafb9('0x1e')],'defaultValue':function(){return _0xafb9('0x28');}},'notificationSound':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x29')},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0xafb9('0xc')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x2a')},'defaultTitle':{'type':Sequelize[_0xafb9('0x2')]},'customerAvatar':{'type':Sequelize[_0xafb9('0x1e')]},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xafb9('0xc')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xafb9('0x2')],'allowNull':![],'defaultValue':_0xafb9('0x2b'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xafb9('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':_0xafb9('0x2c')},'systemAvatar':{'type':Sequelize[_0xafb9('0x1e')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xafb9('0xc')],'comment':_0xafb9('0x2d')},'mandatoryDisposition':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![],'comment':_0xafb9('0x2e'),'set':function(_0xc31e95){if(!_0xc31e95)this[_0xafb9('0x2f')]('mandatoryDispositionPauseId',null);this[_0xafb9('0x2f')]('mandatoryDisposition',_0xc31e95);}},'vidaooEscalation':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0xafb9('0x2')],'allowNull':![],'defaultValue':_0xafb9('0x30')},'vidaooNote':{'type':Sequelize[_0xafb9('0x2')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0xafb9('0x1e')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xafb9('0xb')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xafb9('0x1e')]}};
\ No newline at end of file
+var _0x8520=['text','getDataValue','parse','setDataValue','onlineForm','textarea','Comments','Leave\x20your\x20comments','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.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','exports','STRING','address','email','Agent','#011F6A','INTEGER','BOOLEAN','rounded','We\x20are\x20here!','Chat','Send','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','ENUM','star','thumb','stringify','input','name'];(function(_0x551458,_0x7f4bee){var _0x3df0c9=function(_0x1d27fe){while(--_0x1d27fe){_0x551458['push'](_0x551458['shift']());}};_0x3df0c9(++_0x7f4bee);}(_0x8520,0xb3));var _0x0852=function(_0x57431d,_0x4f37a2){_0x57431d=_0x57431d-0x0;var _0xc0c439=_0x8520[_0x57431d];return _0xc0c439;};'use strict';var Sequelize=require(_0x0852('0x0'));var rs=require('randomstring');module[_0x0852('0x1')]={'name':{'type':Sequelize[_0x0852('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x0852('0x2')],'allowNull':![],'unique':_0x0852('0x3')},'description':{'type':Sequelize[_0x0852('0x2')]},'mapKey':{'type':Sequelize[_0x0852('0x2')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x4')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0x0852('0x5')},'customerAlias':{'type':Sequelize[_0x0852('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x0852('0x2')],'allowNull':![],'defaultValue':_0x0852('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x0852('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x0852('0x7')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x0852('0x2')]},'animation':{'type':Sequelize[_0x0852('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM']('rounded','squared'),'defaultValue':_0x0852('0x9')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0x0852('0xa')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x0852('0xb')},'offline_chat_button':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0xc')},'header_offline':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0xd')},'download_transcript':{'type':Sequelize[_0x0852('0x8')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x0852('0x7')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':_0x0852('0xe')},'defaultWhiteLabel':{'type':Sequelize[_0x0852('0x8')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x0852('0xf')]},'closingQuestion':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x10')},'formSubmitSuccessMessage':{'type':Sequelize[_0x0852('0x2')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x11')},'noteTitle':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x12')},'placeholderMessage':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x13')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x0852('0x14')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x0852('0xc')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x0852('0x15')},'conditionAgreement':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x16')},'ratingType':{'type':Sequelize[_0x0852('0x17')](_0x0852('0x18'),_0x0852('0x19')),'defaultValue':_0x0852('0x18')},'ratingStarsNumber':{'type':Sequelize[_0x0852('0x7')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0x0852('0x1a')]({'items':[{'type':_0x0852('0x1b'),'variable':null,'config':{'placeholder':_0x0852('0x1c'),'type':_0x0852('0x1d'),'required':!![]},'props':{'title':_0x0852('0x1c'),'helpText':''}},{'type':_0x0852('0x1b'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':'email','type':_0x0852('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x0852('0x1e')]('onlineForm')?JSON[_0x0852('0x1f')](this[_0x0852('0x1e')]('onlineForm')):{};},'set':function(_0x58201f){return this[_0x0852('0x20')](_0x0852('0x21'),JSON[_0x0852('0x1a')](_0x58201f));}},'offlineForm':{'type':Sequelize[_0x0852('0xf')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x0852('0x1b'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x0852('0x4'),'type':_0x0852('0x4')},'variable':null},{'type':_0x0852('0x22'),'config':{'placeholder':'Comments'},'props':{'title':_0x0852('0x23'),'helpText':_0x0852('0x24')}}],'fromKey':0x0});},'get':function(){return this[_0x0852('0x1e')](_0x0852('0x25'))?JSON[_0x0852('0x1f')](this[_0x0852('0x1e')](_0x0852('0x25'))):{};},'set':function(_0xf0c6a1){return this['setDataValue'](_0x0852('0x25'),JSON[_0x0852('0x1a')](_0xf0c6a1));}},'token':{'type':Sequelize[_0x0852('0x2')],'defaultValue':function(){return rs[_0x0852('0x26')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x0852('0x2')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x0852('0x2')]},'waitingTitle':{'type':Sequelize[_0x0852('0x2')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x27')},'offlineMessageSubject':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x28')},'offlineMessageBody':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x29')},'enableUnmanagedNote':{'type':Sequelize[_0x0852('0x8')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x2a')},'skipUnmanaged':{'type':Sequelize[_0x0852('0x2')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0xc')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x0852('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x0852('0x2b');}},'notificationSound':{'type':Sequelize[_0x0852('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x2c')},'waitForTheAssignedAgent':{'type':Sequelize[_0x0852('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x2d')},'verticalAlignment':{'type':Sequelize[_0x0852('0x7')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x0852('0x2')],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0x0852('0xf')]},'showCustomerAvatar':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0852('0x2e'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0852('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x0852('0x2')],'defaultValue':_0x0852('0x2f')},'systemAvatar':{'type':Sequelize[_0x0852('0xf')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x0852('0x30')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x0852('0x31'),'set':function(_0x31df27){if(!_0x31df27)this[_0x0852('0x20')]('mandatoryDispositionPauseId',null);this[_0x0852('0x20')](_0x0852('0x32'),_0x31df27);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'Generated\x20by\x20XCALLY\x20Motion'},'vidaooNote':{'type':Sequelize[_0x0852('0x2')],'defaultValue':function(){return _0x0852('0x33');}},'vidaooMetadata':{'type':Sequelize[_0x0852('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x0852('0x8')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x0852('0xf')]}};
\ No newline at end of file
index f785397..12483c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd154=['addDisposition','ChatWebsiteId','getDispositions','Disposition','order','rows','removeDispositions','ids','CannedAnswer','findOne','pick','removeAnswers','addLogo','sitepic','file','filename','addAvatar','customerAvatar','addSystemAvatar','getLogo','join','root','../../config/license/util','custom','isNil','existsSync','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','server/files/images/avatars/system_avatar.png','systemAvatar','notify','user-agent-parser','setUA','headers','user-agent','getResult','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','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','List','DESC','ChatApplication','account','applications','orderBy','asc','Applications','Contacts','defaults','cf-connecting-ip','x-forwarded-for','split','firstName','x-real-port','browser','format','version','unknown','device','%s\x20%s\x20%s','vendor','threadId','externalUrl','ChatInteraction','interaction','spread','contact','lastName','messageId','autoclose','push','close','unmanaged','*,*,*,*','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','files','send','mapKeyOffline','CmList','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','Attachment','bulkCreate','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','auth','SendMail','sendMail','\x22%s\x22\x20<%s>','email','subjectOffline','toPairsIn','offlineMessageSubject','Chat','MailAccountId','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','internal','Tags','color','tag','Command','getSnippet','timezone','interval','iftime\x20%s','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','getLicense','virtual','License','increment','chatLicenseExceeded','all','some','remote','x-real-ip','remoteAddress','replace','render','alignment','textColor','color_button','transaction','findAndCountAll','priority','getApplications','addProactiveActions','ChatProactiveAction','getFields','online','offlineForm','onlineForm','fromKey','getOfflineMessages','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','stringify','error','message','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','update','destroy','get','ChatWebsites','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','merge','VIRTUAL','filter','options','include','findAll','catch','show','params','includeAll','find','create','body','user','userProfileId','autoAssociation','describe'];(function(_0x2a17b6,_0x1d6ebc){var _0x24828b=function(_0x2938d9){while(--_0x2938d9){_0x2a17b6['push'](_0x2a17b6['shift']());}};_0x24828b(++_0x1d6ebc);}(_0xd154,0xcc));var _0x4d15=function(_0x422a6b,_0x45f564){_0x422a6b=_0x422a6b-0x0;var _0x572927=_0xd154[_0x422a6b];return _0x572927;};'use strict';var emlformat=require(_0x4d15('0x0'));var rimraf=require(_0x4d15('0x1'));var zipdir=require(_0x4d15('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4d15('0x3'));var moment=require(_0x4d15('0x4'));var BPromise=require(_0x4d15('0x5'));var Mustache=require(_0x4d15('0x6'));var util=require(_0x4d15('0x7'));var path=require(_0x4d15('0x8'));var sox=require(_0x4d15('0x9'));var csv=require('to-csv');var ejs=require(_0x4d15('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4d15('0xb'));var squel=require(_0x4d15('0xc'));var crypto=require(_0x4d15('0xd'));var jsforce=require(_0x4d15('0xe'));var deskjs=require(_0x4d15('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4d15('0x10'));var Papa=require('papaparse');var Redis=require(_0x4d15('0x11'));var authService=require(_0x4d15('0x12'));var qs=require(_0x4d15('0x13'));var as=require(_0x4d15('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4d15('0x15'));var utils=require(_0x4d15('0x16'));var config=require(_0x4d15('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x4d15('0x18'))['db'];config[_0x4d15('0x19')]=_['defaults'](config[_0x4d15('0x19')],{'host':_0x4d15('0x1a'),'port':0x18eb});var socket=require(_0x4d15('0x1b'))(new Redis(config[_0x4d15('0x19')]));require('./chatWebsite.socket')[_0x4d15('0x1c')](socket);var jayson=require(_0x4d15('0x1d'));var client=jayson[_0x4d15('0x1e')][_0x4d15('0x1f')]({'port':0x232c});var client9002=jayson['client'][_0x4d15('0x1f')]({'port':0x232a});var client9003=jayson['client'][_0x4d15('0x1f')]({'port':0x232b});var client9001=jayson['client'][_0x4d15('0x1f')]({'port':0x2329});function respondWithRpcPromise(_0x2553f4,_0xa471a6,_0x33102c,_0x3049eb){return new BPromise(function(_0xa8efc9,_0x2d6c39){var _0x5ff87d=_0x3049eb||client;return _0x5ff87d[_0x4d15('0x20')](_0x2553f4,_0x33102c)[_0x4d15('0x21')](function(_0x175c4c){logger[_0x4d15('0x22')](_0x4d15('0x23'),_0xa471a6,_0x4d15('0x24'));logger['debug']('ChatWebsite,\x20%s,\x20%s,\x20%s',_0xa471a6,_0x4d15('0x24'),JSON[_0x4d15('0x25')](_0x175c4c));if(_0x175c4c[_0x4d15('0x26')]){if(_0x175c4c['error']['code']===0x1f4){logger[_0x4d15('0x26')]('ChatWebsite,\x20%s,\x20%s',_0xa471a6,_0x175c4c[_0x4d15('0x26')]['message']);return _0x2d6c39(_0x175c4c[_0x4d15('0x26')][_0x4d15('0x27')]);}logger[_0x4d15('0x26')](_0x4d15('0x23'),_0xa471a6,_0x175c4c[_0x4d15('0x26')][_0x4d15('0x27')]);return _0xa8efc9(_0x175c4c[_0x4d15('0x26')][_0x4d15('0x27')]);}else{logger[_0x4d15('0x22')](_0x4d15('0x23'),_0xa471a6,_0x4d15('0x24'));_0xa8efc9(_0x175c4c['result'][_0x4d15('0x27')]);}})['catch'](function(_0x362630){logger['error'](_0x4d15('0x23'),_0xa471a6,_0x362630);_0x2d6c39(_0x362630);});});}function respondWithStatusCode(_0x56a422,_0x2f0fd4){_0x2f0fd4=_0x2f0fd4||0xcc;return function(_0x45f5a0){if(_0x45f5a0){return _0x56a422[_0x4d15('0x28')](_0x2f0fd4);}return _0x56a422[_0x4d15('0x29')](_0x2f0fd4)[_0x4d15('0x2a')]();};}function respondWithResult(_0x21b2ed,_0x34bc72){_0x34bc72=_0x34bc72||0xc8;return function(_0x5effea){if(_0x5effea){return _0x21b2ed[_0x4d15('0x29')](_0x34bc72)[_0x4d15('0x2b')](_0x5effea);}};}function respondWithFilteredResult(_0x2fefb8,_0x4d7845){return function(_0x50ea88){if(_0x50ea88){var _0x4c5f1d=typeof _0x4d7845[_0x4d15('0x2c')]==='undefined'&&typeof _0x4d7845[_0x4d15('0x2d')]==='undefined';var _0x452bb8=_0x50ea88['count'];var _0x15402b=_0x4c5f1d?0x0:_0x4d7845[_0x4d15('0x2c')];var _0x3d7984=_0x4c5f1d?_0x50ea88[_0x4d15('0x2e')]:_0x4d7845['offset']+_0x4d7845[_0x4d15('0x2d')];var _0xf6b52e;if(_0x3d7984>=_0x452bb8){_0x3d7984=_0x452bb8;_0xf6b52e=0xc8;}else{_0xf6b52e=0xce;}_0x2fefb8[_0x4d15('0x29')](_0xf6b52e);return _0x2fefb8[_0x4d15('0x2f')](_0x4d15('0x30'),_0x15402b+'-'+_0x3d7984+'/'+_0x452bb8)[_0x4d15('0x2b')](_0x50ea88);}return null;};}function patchUpdates(_0x239eb7){return function(_0x5c9944){try{jsonpatch[_0x4d15('0x31')](_0x5c9944,_0x239eb7,!![]);}catch(_0x10a93d){return BPromise[_0x4d15('0x32')](_0x10a93d);}return _0x5c9944['save']();};}function saveUpdates(_0x1053b7,_0x4ba5f0){return function(_0x43ef67){if(_0x43ef67){return _0x43ef67[_0x4d15('0x33')](_0x1053b7)['then'](function(_0x28bce2){return _0x28bce2;});}return null;};}function removeEntity(_0x4ee5d8,_0x4f45da){return function(_0x472e89){if(_0x472e89){return _0x472e89[_0x4d15('0x34')]()['then'](function(){var _0x33eb99=_0x472e89[_0x4d15('0x35')]({'plain':!![]});var _0x2f77cc=_0x4d15('0x36');return db[_0x4d15('0x37')]['destroy']({'where':{'type':_0x2f77cc,'resourceId':_0x33eb99['id']}})[_0x4d15('0x21')](function(){return _0x472e89;});})[_0x4d15('0x21')](function(){_0x4ee5d8[_0x4d15('0x29')](0xcc)[_0x4d15('0x2a')]();});}};}function handleEntityNotFound(_0xae8475,_0xd7afee){return function(_0x2ced50){if(!_0x2ced50){_0xae8475[_0x4d15('0x28')](0x194);}return _0x2ced50;};}function handleError(_0x50a7f1,_0x361c8b){_0x361c8b=_0x361c8b||0x1f4;return function(_0x534985){logger[_0x4d15('0x26')](_0x534985[_0x4d15('0x38')]);if(_0x534985[_0x4d15('0x39')]){delete _0x534985[_0x4d15('0x39')];}_0x50a7f1[_0x4d15('0x29')](_0x361c8b)['send'](_0x534985);};}exports[_0x4d15('0x3a')]=function(_0xf2105c,_0x77ad3e){var _0x50d622={'include':[{'model':db[_0x4d15('0x3b')],'as':_0x4d15('0x3c')}]},_0x1e4cdc={},_0x325df8={'count':0x0,'rows':[]};var _0x165d00=_[_0x4d15('0x3d')](db[_0x4d15('0x3e')][_0x4d15('0x3f')],function(_0x1a5b3a){return{'name':_0x1a5b3a['fieldName'],'type':_0x1a5b3a[_0x4d15('0x40')][_0x4d15('0x41')]};});_0x1e4cdc['model']=_['map'](_0x165d00,'name');_0x1e4cdc[_0x4d15('0x42')]=_[_0x4d15('0x43')](_0xf2105c['query']);_0x1e4cdc['filters']=_[_0x4d15('0x44')](_0x1e4cdc[_0x4d15('0x45')],_0x1e4cdc['query']);_0x50d622[_0x4d15('0x46')]=_[_0x4d15('0x44')](_0x1e4cdc['model'],qs[_0x4d15('0x47')](_0xf2105c['query']['fields']));_0x50d622[_0x4d15('0x46')]=_0x50d622[_0x4d15('0x46')][_0x4d15('0x48')]?_0x50d622[_0x4d15('0x46')]:_0x1e4cdc['model'];if(!_0xf2105c[_0x4d15('0x42')][_0x4d15('0x49')](_0x4d15('0x4a'))){_0x50d622[_0x4d15('0x2d')]=qs['limit'](_0xf2105c['query']['limit']);_0x50d622[_0x4d15('0x2c')]=qs[_0x4d15('0x2c')](_0xf2105c[_0x4d15('0x42')][_0x4d15('0x2c')]);}_0x50d622['order']=qs[_0x4d15('0x4b')](_0xf2105c[_0x4d15('0x42')][_0x4d15('0x4b')]);_0x50d622[_0x4d15('0x4c')]=qs[_0x4d15('0x4d')](_['pick'](_0xf2105c['query'],_0x1e4cdc[_0x4d15('0x4d')]),_0x165d00);if(_0xf2105c[_0x4d15('0x42')]['filter']){_0x50d622[_0x4d15('0x4c')]=_[_0x4d15('0x4e')](_0x50d622[_0x4d15('0x4c')],{'$or':_[_0x4d15('0x3d')](_0x165d00,function(_0x7da9b2){if(_0x7da9b2[_0x4d15('0x40')]!==_0x4d15('0x4f')){var _0x1f3107={};_0x1f3107[_0x7da9b2[_0x4d15('0x39')]]={'$like':'%'+_0xf2105c['query'][_0x4d15('0x50')]+'%'};return _0x1f3107;}})});}_0x50d622=_[_0x4d15('0x4e')]({},_0x50d622,_0xf2105c[_0x4d15('0x51')]);var _0x518c16={'where':_0x50d622[_0x4d15('0x4c')]};return db[_0x4d15('0x3e')][_0x4d15('0x2e')](_0x518c16)['then'](function(_0x223db0){_0x325df8['count']=_0x223db0;if(_0xf2105c[_0x4d15('0x42')]['includeAll']){_0x50d622[_0x4d15('0x52')]=[{'all':!![]}];}return db[_0x4d15('0x3e')][_0x4d15('0x53')](_0x50d622);})[_0x4d15('0x21')](function(_0x41f5f4){_0x325df8['rows']=_0x41f5f4;return _0x325df8;})[_0x4d15('0x21')](respondWithFilteredResult(_0x77ad3e,_0x50d622))[_0x4d15('0x54')](handleError(_0x77ad3e,null));};exports[_0x4d15('0x55')]=function(_0x17efcd,_0x10592a){var _0x23d1e0={'raw':![],'where':{'id':_0x17efcd[_0x4d15('0x56')]['id']},'include':[{'model':db[_0x4d15('0x3b')],'as':_0x4d15('0x3c')}]},_0xfa4b91={};_0xfa4b91[_0x4d15('0x45')]=_[_0x4d15('0x43')](db[_0x4d15('0x3e')][_0x4d15('0x3f')]);_0xfa4b91[_0x4d15('0x42')]=_[_0x4d15('0x43')](_0x17efcd[_0x4d15('0x42')]);_0xfa4b91['filters']=_['intersection'](_0xfa4b91['model'],_0xfa4b91[_0x4d15('0x42')]);_0x23d1e0[_0x4d15('0x46')]=_[_0x4d15('0x44')](_0xfa4b91['model'],qs[_0x4d15('0x47')](_0x17efcd[_0x4d15('0x42')]['fields']));_0x23d1e0[_0x4d15('0x46')]=_0x23d1e0[_0x4d15('0x46')][_0x4d15('0x48')]?_0x23d1e0[_0x4d15('0x46')]:_0xfa4b91[_0x4d15('0x45')];if(_0x17efcd[_0x4d15('0x42')][_0x4d15('0x57')]){_0x23d1e0[_0x4d15('0x52')]=[{'all':!![]}];}_0x23d1e0=_[_0x4d15('0x4e')]({},_0x23d1e0,_0x17efcd[_0x4d15('0x51')]);return db[_0x4d15('0x3e')][_0x4d15('0x58')](_0x23d1e0)[_0x4d15('0x21')](handleEntityNotFound(_0x10592a,null))['then'](respondWithResult(_0x10592a,null))[_0x4d15('0x54')](handleError(_0x10592a,null));};exports[_0x4d15('0x59')]=function(_0x3a0f74,_0x195ebd){return db[_0x4d15('0x3e')][_0x4d15('0x59')](_0x3a0f74[_0x4d15('0x5a')],{})['then'](function(_0x3ba667){var _0x965b4a=_0x3a0f74[_0x4d15('0x5b')][_0x4d15('0x35')]({'plain':!![]});if(!_0x965b4a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x965b4a['role']===_0x4d15('0x5b')){var _0x4ae05c=_0x3ba667['get']({'plain':!![]});var _0x357eca=_0x4d15('0x36');return db['UserProfileSection'][_0x4d15('0x58')]({'where':{'name':_0x357eca,'userProfileId':_0x965b4a[_0x4d15('0x5c')]},'raw':!![]})[_0x4d15('0x21')](function(_0x29a052){if(_0x29a052&&_0x29a052[_0x4d15('0x5d')]===0x0){return db['UserProfileResource'][_0x4d15('0x59')]({'name':_0x4ae05c[_0x4d15('0x39')],'resourceId':_0x4ae05c['id'],'type':_0x29a052[_0x4d15('0x39')],'sectionId':_0x29a052['id']},{})[_0x4d15('0x21')](function(){return _0x3ba667;});}else{return _0x3ba667;}})[_0x4d15('0x54')](function(_0x23cf2a){logger[_0x4d15('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x23cf2a);throw _0x23cf2a;});}return _0x3ba667;})[_0x4d15('0x21')](respondWithResult(_0x195ebd,0xc9))['catch'](handleError(_0x195ebd,null));};exports[_0x4d15('0x33')]=function(_0x18439b,_0x24bada){if(_0x18439b[_0x4d15('0x5a')]['id']){delete _0x18439b[_0x4d15('0x5a')]['id'];}return db[_0x4d15('0x3e')]['find']({'where':{'id':_0x18439b[_0x4d15('0x56')]['id']},'include':[{'model':db[_0x4d15('0x3b')],'as':_0x4d15('0x3c')}]})[_0x4d15('0x21')](handleEntityNotFound(_0x24bada,null))['then'](saveUpdates(_0x18439b['body'],null))['then'](respondWithResult(_0x24bada,null))[_0x4d15('0x54')](handleError(_0x24bada,null));};exports[_0x4d15('0x34')]=function(_0xd54f04,_0x3dc05a){return db[_0x4d15('0x3e')][_0x4d15('0x58')]({'where':{'id':_0xd54f04['params']['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x3dc05a,null))[_0x4d15('0x21')](removeEntity(_0x3dc05a,null))[_0x4d15('0x54')](handleError(_0x3dc05a,null));};exports[_0x4d15('0x5e')]=function(_0x3f65e1,_0x265dc6){return db[_0x4d15('0x3e')]['describe']()[_0x4d15('0x21')](respondWithResult(_0x265dc6,null))[_0x4d15('0x54')](handleError(_0x265dc6,null));};exports[_0x4d15('0x5f')]=function(_0x2ca708,_0x17cb93,_0x25d301){if(_0x2ca708[_0x4d15('0x5a')]['id']){delete _0x2ca708[_0x4d15('0x5a')]['id'];}return db[_0x4d15('0x3e')]['find']({'where':{'id':_0x2ca708['params']['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x17cb93,null))[_0x4d15('0x21')](function(_0x5330cf){if(_0x5330cf){_0x2ca708['body'][_0x4d15('0x60')]=_0x5330cf['id'];return db['Disposition']['create'](_0x2ca708[_0x4d15('0x5a')]);}})[_0x4d15('0x21')](respondWithResult(_0x17cb93,null))[_0x4d15('0x54')](handleError(_0x17cb93,null));};exports[_0x4d15('0x61')]=function(_0x4e58af,_0x28b751,_0xd8b0a9){var _0x429392={'raw':![],'where':{}};var _0x57e7e5={};var _0x2ae890={'count':0x0,'rows':[]};return db[_0x4d15('0x3e')]['findOne']({'where':{'id':_0x4e58af[_0x4d15('0x56')]['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x28b751,null))[_0x4d15('0x21')](function(_0x43be01){if(_0x43be01){_0x57e7e5['model']=_[_0x4d15('0x43')](db[_0x4d15('0x62')][_0x4d15('0x3f')]);_0x57e7e5[_0x4d15('0x42')]=_[_0x4d15('0x43')](_0x4e58af['query']);_0x57e7e5['filters']=_[_0x4d15('0x44')](_0x57e7e5[_0x4d15('0x45')],_0x57e7e5[_0x4d15('0x42')]);_0x429392[_0x4d15('0x46')]=_[_0x4d15('0x44')](_0x57e7e5[_0x4d15('0x45')],qs['fields'](_0x4e58af[_0x4d15('0x42')][_0x4d15('0x47')]));_0x429392[_0x4d15('0x46')]=_0x429392['attributes']['length']?_0x429392[_0x4d15('0x46')]:_0x57e7e5[_0x4d15('0x45')];if(!_0x4e58af[_0x4d15('0x42')][_0x4d15('0x49')](_0x4d15('0x4a'))){_0x429392[_0x4d15('0x2d')]=qs[_0x4d15('0x2d')](_0x4e58af['query'][_0x4d15('0x2d')]);_0x429392[_0x4d15('0x2c')]=qs[_0x4d15('0x2c')](_0x4e58af[_0x4d15('0x42')][_0x4d15('0x2c')]);}_0x429392[_0x4d15('0x63')]=qs[_0x4d15('0x4b')](_0x4e58af[_0x4d15('0x42')]['sort']);_0x429392[_0x4d15('0x4c')]=qs['filters'](_['pick'](_0x4e58af[_0x4d15('0x42')],_0x57e7e5['filters']));_0x429392[_0x4d15('0x4c')]['ChatWebsiteId']=_0x43be01['id'];if(_0x4e58af[_0x4d15('0x42')][_0x4d15('0x50')]){_0x429392[_0x4d15('0x4c')]=_['merge'](_0x429392[_0x4d15('0x4c')],{'$or':_[_0x4d15('0x3d')](_0x429392[_0x4d15('0x46')],function(_0x2d9ded){var _0x5af70d={};_0x5af70d[_0x2d9ded]={'$like':'%'+_0x4e58af['query'][_0x4d15('0x50')]+'%'};return _0x5af70d;})});}_0x429392=_[_0x4d15('0x4e')]({},_0x429392,_0x4e58af[_0x4d15('0x51')]);return db[_0x4d15('0x62')]['count']({'where':_0x429392[_0x4d15('0x4c')]})[_0x4d15('0x21')](function(_0x5c6744){_0x2ae890['count']=_0x5c6744;if(_0x4e58af[_0x4d15('0x42')][_0x4d15('0x57')]){_0x429392[_0x4d15('0x52')]=[{'all':!![]}];}return db['Disposition'][_0x4d15('0x53')](_0x429392);})[_0x4d15('0x21')](function(_0x4380cd){_0x2ae890[_0x4d15('0x64')]=_0x4380cd;return _0x2ae890;});}})['then'](respondWithFilteredResult(_0x28b751,_0x429392))[_0x4d15('0x54')](handleError(_0x28b751,null));};exports[_0x4d15('0x65')]=function(_0x332fbe,_0x55dd39,_0x6c59b6){return db[_0x4d15('0x3e')][_0x4d15('0x58')]({'where':{'id':_0x332fbe['params']['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x55dd39,null))[_0x4d15('0x21')](function(_0x493506){if(_0x493506){return _0x493506[_0x4d15('0x65')](_0x332fbe[_0x4d15('0x42')][_0x4d15('0x66')]);}})[_0x4d15('0x21')](respondWithStatusCode(_0x55dd39,null))['catch'](handleError(_0x55dd39,null));};exports['addAnswer']=function(_0x31eb0b,_0x4245b5,_0x364f01){if(_0x31eb0b[_0x4d15('0x5a')]['id']){delete _0x31eb0b[_0x4d15('0x5a')]['id'];}return db['ChatWebsite'][_0x4d15('0x58')]({'where':{'id':_0x31eb0b['params']['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x4245b5,null))[_0x4d15('0x21')](function(_0x12bdea){if(_0x12bdea){_0x31eb0b[_0x4d15('0x5a')][_0x4d15('0x60')]=_0x12bdea['id'];return db[_0x4d15('0x67')][_0x4d15('0x59')](_0x31eb0b[_0x4d15('0x5a')]);}})[_0x4d15('0x21')](respondWithResult(_0x4245b5,null))[_0x4d15('0x54')](handleError(_0x4245b5,null));};exports['getAnswers']=function(_0x29b6c8,_0xd48af3,_0x43d2fd){var _0x132591={'raw':![],'where':{}};var _0x3c7d81={};var _0x3b8a9b={'count':0x0,'rows':[]};return db[_0x4d15('0x3e')][_0x4d15('0x68')]({'where':{'id':_0x29b6c8[_0x4d15('0x56')]['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0xd48af3,null))[_0x4d15('0x21')](function(_0x738cb5){if(_0x738cb5){_0x3c7d81['model']=_['keys'](db[_0x4d15('0x67')][_0x4d15('0x3f')]);_0x3c7d81[_0x4d15('0x42')]=_[_0x4d15('0x43')](_0x29b6c8[_0x4d15('0x42')]);_0x3c7d81[_0x4d15('0x4d')]=_[_0x4d15('0x44')](_0x3c7d81[_0x4d15('0x45')],_0x3c7d81[_0x4d15('0x42')]);_0x132591[_0x4d15('0x46')]=_[_0x4d15('0x44')](_0x3c7d81[_0x4d15('0x45')],qs['fields'](_0x29b6c8[_0x4d15('0x42')]['fields']));_0x132591['attributes']=_0x132591['attributes'][_0x4d15('0x48')]?_0x132591['attributes']:_0x3c7d81[_0x4d15('0x45')];if(!_0x29b6c8['query'][_0x4d15('0x49')](_0x4d15('0x4a'))){_0x132591[_0x4d15('0x2d')]=qs[_0x4d15('0x2d')](_0x29b6c8[_0x4d15('0x42')][_0x4d15('0x2d')]);_0x132591[_0x4d15('0x2c')]=qs['offset'](_0x29b6c8[_0x4d15('0x42')]['offset']);}_0x132591[_0x4d15('0x63')]=qs[_0x4d15('0x4b')](_0x29b6c8[_0x4d15('0x42')][_0x4d15('0x4b')]);_0x132591[_0x4d15('0x4c')]=qs[_0x4d15('0x4d')](_[_0x4d15('0x69')](_0x29b6c8['query'],_0x3c7d81[_0x4d15('0x4d')]));_0x132591[_0x4d15('0x4c')][_0x4d15('0x60')]=_0x738cb5['id'];if(_0x29b6c8[_0x4d15('0x42')][_0x4d15('0x50')]){_0x132591[_0x4d15('0x4c')]=_['merge'](_0x132591[_0x4d15('0x4c')],{'$or':_['map'](_0x132591['attributes'],function(_0x2fc518){var _0x408f45={};_0x408f45[_0x2fc518]={'$like':'%'+_0x29b6c8['query'][_0x4d15('0x50')]+'%'};return _0x408f45;})});}_0x132591=_[_0x4d15('0x4e')]({},_0x132591,_0x29b6c8[_0x4d15('0x51')]);return db['CannedAnswer'][_0x4d15('0x2e')]({'where':_0x132591[_0x4d15('0x4c')]})[_0x4d15('0x21')](function(_0x4260c3){_0x3b8a9b[_0x4d15('0x2e')]=_0x4260c3;if(_0x29b6c8[_0x4d15('0x42')][_0x4d15('0x57')]){_0x132591['include']=[{'all':!![]}];}return db[_0x4d15('0x67')][_0x4d15('0x53')](_0x132591);})[_0x4d15('0x21')](function(_0x2ab0eb){_0x3b8a9b['rows']=_0x2ab0eb;return _0x3b8a9b;});}})[_0x4d15('0x21')](respondWithFilteredResult(_0xd48af3,_0x132591))[_0x4d15('0x54')](handleError(_0xd48af3,null));};exports[_0x4d15('0x6a')]=function(_0x168209,_0x54cca1,_0x20fe4d){return db[_0x4d15('0x3e')][_0x4d15('0x58')]({'where':{'id':_0x168209[_0x4d15('0x56')]['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x54cca1,null))[_0x4d15('0x21')](function(_0x223651){if(_0x223651){return _0x223651[_0x4d15('0x6a')](_0x168209[_0x4d15('0x42')][_0x4d15('0x66')]);}})[_0x4d15('0x21')](respondWithStatusCode(_0x54cca1,null))[_0x4d15('0x54')](handleError(_0x54cca1,null));};exports[_0x4d15('0x6b')]=function(_0x2361b7,_0xeae15c,_0x5c0e1c){_0x2361b7[_0x4d15('0x5a')][_0x4d15('0x6c')]=_0x2361b7[_0x4d15('0x6d')][_0x4d15('0x6e')];return db[_0x4d15('0x3e')][_0x4d15('0x58')]({'where':{'id':_0x2361b7['params']['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0xeae15c,null))['then'](saveUpdates(_0x2361b7['body'],null))[_0x4d15('0x21')](respondWithResult(_0xeae15c,null))[_0x4d15('0x54')](handleError(_0xeae15c,null));};exports[_0x4d15('0x6f')]=function(_0x581574,_0x33c3a0,_0x4f72c6){_0x581574[_0x4d15('0x5a')]['agentAvatar']=_0x581574[_0x4d15('0x6d')]['filename'];return db[_0x4d15('0x3e')]['find']({'where':{'id':_0x581574[_0x4d15('0x56')]['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x33c3a0,null))[_0x4d15('0x21')](saveUpdates(_0x581574[_0x4d15('0x5a')],null))['then'](respondWithResult(_0x33c3a0,null))[_0x4d15('0x54')](handleError(_0x33c3a0,null));};exports['addCustomerAvatar']=function(_0x48eaf5,_0x556ba5,_0x165403){_0x48eaf5[_0x4d15('0x5a')][_0x4d15('0x70')]=_0x48eaf5[_0x4d15('0x6d')][_0x4d15('0x6e')];return db[_0x4d15('0x3e')][_0x4d15('0x58')]({'where':{'id':_0x48eaf5['params']['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x556ba5,null))['then'](saveUpdates(_0x48eaf5['body'],null))['then'](respondWithResult(_0x556ba5,null))[_0x4d15('0x54')](handleError(_0x556ba5,null));};exports[_0x4d15('0x71')]=function(_0xd0311e,_0x790560,_0x44f777){_0xd0311e['body']['systemAvatar']=_0xd0311e[_0x4d15('0x6d')][_0x4d15('0x6e')];return db[_0x4d15('0x3e')]['find']({'where':{'id':_0xd0311e['params']['id']}})['then'](handleEntityNotFound(_0x790560,null))['then'](saveUpdates(_0xd0311e[_0x4d15('0x5a')],null))[_0x4d15('0x21')](respondWithResult(_0x790560,null))[_0x4d15('0x54')](handleError(_0x790560,null));};exports[_0x4d15('0x72')]=function(_0x383fb9,_0x3f5da9,_0xe80917){var _0x2116cc=path[_0x4d15('0x73')](config[_0x4d15('0x74')],'server/files/images/logos/default_logo.svg');var _0x2420d7={'where':{'id':_0x383fb9['params']['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x101af0=![];return require(_0x4d15('0x75'))['getLicense']()[_0x4d15('0x21')](function(_0x51436b){if(_0x51436b){_0x101af0=_0x51436b[_0x4d15('0x76')];}})[_0x4d15('0x21')](function(){return db['ChatWebsite'][_0x4d15('0x58')](_0x2420d7);})[_0x4d15('0x21')](handleEntityNotFound(_0x3f5da9,null))[_0x4d15('0x21')](function(_0x102637){if(_0x102637){if(!_[_0x4d15('0x77')](_0x102637[_0x4d15('0x6c')])){if(fs[_0x4d15('0x78')](path[_0x4d15('0x73')](config[_0x4d15('0x74')],'server/files/images/logos/',_0x102637[_0x4d15('0x6c')]))&&_0x101af0){_0x2116cc=path[_0x4d15('0x73')](config['root'],_0x4d15('0x79'),_0x102637[_0x4d15('0x6c')]);}}return _0x3f5da9[_0x4d15('0x7a')](_0x2116cc);}})[_0x4d15('0x54')](handleError(_0x3f5da9,null));};exports[_0x4d15('0x7b')]=function(_0xadfe97,_0x18e0a6,_0x2c1913){var _0x246042=path[_0x4d15('0x73')](config[_0x4d15('0x74')],_0x4d15('0x7c'));var _0x3a75ed={'where':{'id':_0xadfe97[_0x4d15('0x56')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0x4d15('0x3e')][_0x4d15('0x58')](_0x3a75ed)[_0x4d15('0x21')](handleEntityNotFound(_0x18e0a6,null))[_0x4d15('0x21')](function(_0x2eea2f){if(_0x2eea2f){if(!_[_0x4d15('0x77')](_0x2eea2f[_0x4d15('0x7d')])){if(fs[_0x4d15('0x78')](path[_0x4d15('0x73')](config[_0x4d15('0x74')],_0x4d15('0x7e'),_0x2eea2f[_0x4d15('0x7d')]))){_0x246042=path[_0x4d15('0x73')](config[_0x4d15('0x74')],_0x4d15('0x7e'),_0x2eea2f[_0x4d15('0x7d')]);}}return _0x18e0a6[_0x4d15('0x7a')](_0x246042);}})['catch'](handleError(_0x18e0a6,null));};exports[_0x4d15('0x7f')]=function(_0x11ec19,_0x2f32ad,_0x5a565e){var _0x2fe74b=path[_0x4d15('0x73')](config[_0x4d15('0x74')],_0x4d15('0x80'));var _0x3d180e={'where':{'id':_0x11ec19[_0x4d15('0x56')]['id']},'attributes':['id',_0x4d15('0x70'),_0x4d15('0x81')],'raw':!![]};return db[_0x4d15('0x3e')][_0x4d15('0x58')](_0x3d180e)[_0x4d15('0x21')](handleEntityNotFound(_0x2f32ad,null))[_0x4d15('0x21')](function(_0x22c866){if(_0x22c866){if(!_[_0x4d15('0x77')](_0x22c866['customerAvatar'])){if(fs[_0x4d15('0x78')](path[_0x4d15('0x73')](config[_0x4d15('0x74')],_0x4d15('0x7e'),_0x22c866[_0x4d15('0x70')]))&&_0x22c866[_0x4d15('0x81')]){_0x2fe74b=path[_0x4d15('0x73')](config['root'],'server/files/images/avatars/',_0x22c866[_0x4d15('0x70')]);}}return _0x2f32ad[_0x4d15('0x7a')](_0x2fe74b);}})[_0x4d15('0x54')](handleError(_0x2f32ad,null));};exports['getSystemAvatar']=function(_0x425882,_0x27cafc,_0x1ca59f){var _0x47a5e5=path[_0x4d15('0x73')](config[_0x4d15('0x74')],_0x4d15('0x82'));var _0x3565ee={'where':{'id':_0x425882['params']['id']},'attributes':['id',_0x4d15('0x83')],'raw':!![]};return db[_0x4d15('0x3e')][_0x4d15('0x58')](_0x3565ee)[_0x4d15('0x21')](handleEntityNotFound(_0x27cafc,null))['then'](function(_0x1efb5a){if(_0x1efb5a){if(!_[_0x4d15('0x77')](_0x1efb5a[_0x4d15('0x83')])){if(fs[_0x4d15('0x78')](path[_0x4d15('0x73')](config[_0x4d15('0x74')],_0x4d15('0x7e'),_0x1efb5a['systemAvatar']))){_0x47a5e5=path[_0x4d15('0x73')](config[_0x4d15('0x74')],_0x4d15('0x7e'),_0x1efb5a[_0x4d15('0x83')]);}}return _0x27cafc[_0x4d15('0x7a')](_0x47a5e5);}})[_0x4d15('0x54')](handleError(_0x27cafc,null));};exports[_0x4d15('0x84')]=function(_0x48e360,_0x3f095a,_0x56d4fd){var _0x50dd85=require(_0x4d15('0x85'));var _0x15a36f=new _0x50dd85();var _0x452f22=_0x15a36f[_0x4d15('0x86')](_0x48e360[_0x4d15('0x87')][_0x4d15('0x88')])[_0x4d15('0x89')]();var _0x1e2525={'body':_0x48e360[_0x4d15('0x5a')],'channel':_0x4d15('0x8a')};var _0x58b9dd=[];var _0x5f0b66=[];var _0x457b31={};var _0x582475=![];return db[_0x4d15('0x8b')][_0x4d15('0x5e')]()[_0x4d15('0x21')](function(_0x1ae55b){if(!_0x1ae55b){throw new db[(_0x4d15('0x8c'))][(_0x4d15('0x8d'))](_0x4d15('0x8e'));}_0x58b9dd=_[_0x4d15('0x8f')](_['keys'](_0x1ae55b),[_0x4d15('0x90'),_0x4d15('0x91')]);_0x5f0b66=_['difference'](_[_0x4d15('0x43')](_0x1ae55b),[_0x4d15('0x90'),_0x4d15('0x91'),_0x4d15('0x92'),_0x4d15('0x93')]);if(_0x48e360[_0x4d15('0x5a')]['id']){delete _0x48e360['body']['id'];}if(_['isNil'](_0x48e360[_0x4d15('0x5a')][_0x4d15('0x94')])){throw new db[(_0x4d15('0x8c'))][(_0x4d15('0x8d'))](_0x4d15('0x95'));}if(_[_0x4d15('0x77')](_0x48e360[_0x4d15('0x5a')][_0x4d15('0x5a')])||_0x48e360[_0x4d15('0x5a')]['body']===''){throw new db[(_0x4d15('0x8c'))]['ValidationError'](_0x4d15('0x96'));}if(_[_0x4d15('0x77')](_0x48e360[_0x4d15('0x5a')][_0x4d15('0x97')])){throw new db[(_0x4d15('0x8c'))][(_0x4d15('0x8d'))](_0x4d15('0x98')+_0x5f0b66);}if(!_[_0x4d15('0x99')](_0x5f0b66,_0x48e360['body'][_0x4d15('0x97')])){throw new db[(_0x4d15('0x8c'))][(_0x4d15('0x8d'))](_0x4d15('0x9a')+_0x5f0b66);}_0x457b31[_0x48e360[_0x4d15('0x5a')]['mapKey']]=_0x48e360[_0x4d15('0x5a')][_0x4d15('0x94')];})[_0x4d15('0x21')](function(){return db['ChatWebsite'][_0x4d15('0x58')]({'where':{'id':_0x48e360['params']['id']},'include':[{'model':db['CmList'],'as':_0x4d15('0x9b'),'include':[{'model':db[_0x4d15('0x8b')],'as':'Contacts','where':_0x457b31,'limit':0x1,'order':[[_0x4d15('0x91'),_0x4d15('0x9c')]]}]},{'model':db[_0x4d15('0x9d')],'as':'Applications'}]});})[_0x4d15('0x21')](handleEntityNotFound(_0x3f095a,null))['then'](function(_0x4d0457){if(_0x4d0457&&_0x4d0457[_0x4d15('0x9b')]){_0x1e2525[_0x4d15('0x9e')]=_0x4d0457;_0x1e2525[_0x4d15('0x9f')]=_0x4d0457['Applications'];_0x1e2525['list']=_0x4d0457['List'];_0x1e2525['applications']=_[_0x4d15('0xa0')](_0x1e2525[_0x4d15('0x9f')],['priority'],[_0x4d15('0xa1')]);if(_0x1e2525[_0x4d15('0x9e')][_0x4d15('0xa2')]){delete _0x1e2525[_0x4d15('0x9e')]['Applications'];}if(_0x1e2525[_0x4d15('0x9e')]['List']&&_0x1e2525[_0x4d15('0x9e')][_0x4d15('0x9b')][_0x4d15('0xa3')]['length']){return _0x1e2525[_0x4d15('0x9e')][_0x4d15('0x9b')][_0x4d15('0xa3')][0x0];}var _0x313f44=_[_0x4d15('0xa4')](_0x48e360[_0x4d15('0x5a')],{'firstName':_0x48e360[_0x4d15('0x5a')][_0x4d15('0x94')],'ListId':_0x4d0457['ListId']});_0x313f44[_0x48e360[_0x4d15('0x5a')][_0x4d15('0x97')]]=_0x48e360[_0x4d15('0x5a')][_0x4d15('0x94')];return db[_0x4d15('0x8b')][_0x4d15('0x59')](_0x313f44,{'fields':_0x58b9dd,'raw':!![]});}})[_0x4d15('0x21')](handleEntityNotFound(_0x3f095a,null))[_0x4d15('0x21')](function(_0x28751a){_0x1e2525['contact']=_0x28751a;var _0x1e76e4=_0x48e360[_0x4d15('0x5a')]['customerIp'];if(_0x48e360['headers'][_0x4d15('0xa5')]){_0x1e76e4=_0x48e360['headers'][_0x4d15('0xa5')];}else if(_0x48e360[_0x4d15('0x87')][_0x4d15('0xa6')]){_0x1e76e4=_['first'](_0x48e360[_0x4d15('0x87')][_0x4d15('0xa6')][_0x4d15('0xa7')](','));}if(_0x28751a){var _0x115e47={'ContactId':_0x28751a['id'],'ChatWebsiteId':_0x48e360[_0x4d15('0x56')]['id'],'from':(_0x28751a[_0x4d15('0xa8')]||'')+'\x20'+(_0x28751a['lastName']||''),'customerIp':_0x1e76e4,'customerPort':_0x48e360[_0x4d15('0x87')][_0x4d15('0xa9')]?_0x48e360[_0x4d15('0x87')][_0x4d15('0xa9')]:null,'referer':_0x48e360[_0x4d15('0x5a')]['referer'],'browserName':_0x452f22[_0x4d15('0xaa')]['name']&&_0x452f22['browser']['version']?util[_0x4d15('0xab')]('%s\x20%s',_0x452f22[_0x4d15('0xaa')][_0x4d15('0x39')],_0x452f22['browser'][_0x4d15('0xac')]):_0x4d15('0xad'),'browserVersion':_0x452f22['browser'][_0x4d15('0xac')]||_0x4d15('0xad'),'osName':util['format']('%s\x20%s',_0x452f22['os']['name'],_0x452f22['os'][_0x4d15('0xac')]),'osVersion':_0x452f22['os'][_0x4d15('0xac')],'deviceModel':_0x452f22[_0x4d15('0xae')][_0x4d15('0x45')]&&_0x452f22[_0x4d15('0xae')]['vendor']?util[_0x4d15('0xab')](_0x4d15('0xaf'),_0x452f22[_0x4d15('0xae')][_0x4d15('0x45')],_0x452f22[_0x4d15('0xae')][_0x4d15('0xb0')],_0x452f22[_0x4d15('0xae')]['type']):null,'deviceVendor':_0x452f22[_0x4d15('0xae')][_0x4d15('0xb0')],'deviceType':_0x452f22['device'][_0x4d15('0x40')],'formData':JSON[_0x4d15('0x25')](_0x48e360[_0x4d15('0x5a')])};var _0x113e36={'ChatWebsiteId':_0x48e360['params']['id'],'closed':![]};if(_0x48e360[_0x4d15('0x5a')][_0x4d15('0xb1')]){_0x113e36[_0x4d15('0xb1')]=_0x48e360[_0x4d15('0x5a')][_0x4d15('0xb1')];return db['ChatInteraction'][_0x4d15('0x58')]({'where':_0x113e36})['then'](function(_0x48e29f){if(_0x48e29f){return[_0x48e29f,![]];}_0x115e47[_0x4d15('0xb1')]=_0x48e360[_0x4d15('0x5a')]['threadId'];_0x115e47['externalUrl']=_0x48e360[_0x4d15('0x5a')][_0x4d15('0xb2')];return db[_0x4d15('0xb3')][_0x4d15('0x59')](_0x115e47)[_0x4d15('0x21')](function(_0x456ec2){return[_0x456ec2,!![]];});});}_0x113e36['ContactId']=_0x28751a['id'];if(_0x48e360[_0x4d15('0x5a')]['interaction']&&_0x48e360[_0x4d15('0x5a')][_0x4d15('0xb4')]['id']){_0x113e36['id']=_0x48e360[_0x4d15('0x5a')][_0x4d15('0xb4')]['id'];return db['ChatInteraction'][_0x4d15('0x58')]({'where':_0x113e36})[_0x4d15('0x21')](function(_0x295994){if(_0x295994){return[_0x295994,![]];}return db[_0x4d15('0xb3')]['create'](_0x115e47)['then'](function(_0x7c21d5){return[_0x7c21d5,!![]];});});}return db[_0x4d15('0xb3')][_0x4d15('0x59')](_0x115e47)[_0x4d15('0x21')](function(_0x4ac53c){return[_0x4ac53c,!![]];});}})[_0x4d15('0xb5')](function(_0x197378,_0x17fc62){if(_0x197378){_0x582475=_0x17fc62;if(!_0x17fc62){var _0x215ea3={'from':(_0x1e2525[_0x4d15('0xb6')][_0x4d15('0xa8')]||'')+'\x20'+(_0x1e2525[_0x4d15('0xb6')][_0x4d15('0xb7')]||'')};if(_0x48e360[_0x4d15('0x5a')][_0x4d15('0xb1')]&&_0x48e360[_0x4d15('0x5a')][_0x4d15('0xb8')]&&_0x48e360[_0x4d15('0x5a')]['threadId']!=_0x48e360[_0x4d15('0x5a')][_0x4d15('0xb8')]){_0x215ea3['threadId']=_0x48e360[_0x4d15('0x5a')][_0x4d15('0xb8')];}return _0x197378[_0x4d15('0x33')](_0x215ea3);}else{return _0x197378;}}})[_0x4d15('0x21')](function(_0x1cfde1){_0x1e2525[_0x4d15('0xb4')]=_0x1cfde1[_0x4d15('0x35')]({'plain':!![]});_0x1e2525[_0x4d15('0xb4')]['created']=_0x582475;if(_0x1e2525[_0x4d15('0xb4')]['created']){if(_0x1e2525[_0x4d15('0x9e')][_0x4d15('0xb9')]){_0x1e2525[_0x4d15('0x9f')][_0x4d15('0xba')]({'id':0x0,'priority':_0x1e2525['applications'][_0x4d15('0x48')]+0x1,'app':_0x4d15('0xbb'),'appdata':_0x4d15('0xbc'),'interval':_0x4d15('0xbd')});}}return db['ChatMessage']['create']({'body':_0x48e360[_0x4d15('0x5a')]['body'],'ChatWebsiteId':_0x48e360['params']['id'],'ChatInteractionId':_0x1cfde1['id'],'direction':'in','ContactId':_0x1e2525['contact']['id'],'AttachmentId':_0x48e360[_0x4d15('0x5a')]['AttachmentId']});})[_0x4d15('0x21')](function(_0x577673){_0x1e2525[_0x4d15('0x27')]=_0x577673;if(_0x1e2525['interaction'][_0x4d15('0xbe')]){return db[_0x4d15('0xbf')][_0x4d15('0x58')]({'attributes':['id','name'],'where':{'id':_0x1e2525['interaction']['UserId']}})['then'](function(_0x359701){if(_0x359701){_0x1e2525[_0x4d15('0x9f')][_0x4d15('0xc0')]({'id':0x0,'priority':0x0,'app':_0x4d15('0xc1'),'appdata':_0x359701[_0x4d15('0x39')]+','+(_0x1e2525['account'][_0x4d15('0xc2')]||0xa),'interval':'*,*,*,*'});_0x1e2525[_0x4d15('0xc3')]=!![];}return respondWithRpcPromise(_0x4d15('0xc4'),_0x4d15('0xc5'),_0x1e2525);});}return respondWithRpcPromise(_0x4d15('0xc4'),'startRouting',_0x1e2525);})[_0x4d15('0x21')](function(_0x5e2f88){respondWithRpcPromise(_0x4d15('0xc6'),_0x4d15('0xc6'),{'event':'notify','message':_0x5e2f88},client9002);return _0x5e2f88;})[_0x4d15('0x21')](respondWithResult(_0x3f095a,null))[_0x4d15('0x54')](handleError(_0x3f095a,null));};exports['offline']=function(_0x20343e,_0x375211,_0xb462fd){var _0x4032fd,_0x7e0839,_0x11a332;var _0x55368e=[];var _0x4182c9=[];var _0x58f5b4={};var _0x304ab7=_0x20343e[_0x4d15('0xc7')]||[];var _0x14b8db=[];var _0x4f23ba;return db[_0x4d15('0x8b')][_0x4d15('0x5e')]()['then'](function(_0x228b24){if(!_0x228b24){throw new db[(_0x4d15('0x8c'))][(_0x4d15('0x8d'))](_0x4d15('0x8e'));}_0x4182c9=_['difference'](_[_0x4d15('0x43')](_0x228b24),[_0x4d15('0x90'),_0x4d15('0x91')]);_0x55368e=_[_0x4d15('0x8f')](_[_0x4d15('0x43')](_0x228b24),['createdAt',_0x4d15('0x91'),'CompanyId',_0x4d15('0x93')]);if(_0x20343e['body']['id']){delete _0x20343e['body']['id'];}if(_[_0x4d15('0x77')](_0x20343e['body'][_0x4d15('0x94')])){throw _0x375211['status'](0x1f4)[_0x4d15('0xc8')](new db[(_0x4d15('0x8c'))][(_0x4d15('0x8d'))](_0x4d15('0x95')));}if(_['isNil'](_0x20343e['body']['body'])||_0x20343e['body']['body']===''){throw _0x375211[_0x4d15('0x29')](0x1f4)[_0x4d15('0xc8')](new db[(_0x4d15('0x8c'))][(_0x4d15('0x8d'))](_0x4d15('0x96')));}if(_['isNil'](_0x20343e[_0x4d15('0x5a')]['mapKeyOffline'])){throw _0x375211[_0x4d15('0x29')](0x1f4)[_0x4d15('0xc8')](new db[(_0x4d15('0x8c'))][(_0x4d15('0x8d'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x55368e));}if(!_[_0x4d15('0x99')](_0x55368e,_0x20343e[_0x4d15('0x5a')][_0x4d15('0xc9')])){throw _0x375211[_0x4d15('0x29')](0x1f4)['send'](new db[(_0x4d15('0x8c'))][(_0x4d15('0x8d'))]('mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x55368e));}_0x58f5b4[_0x20343e[_0x4d15('0x5a')][_0x4d15('0xc9')]]=_0x20343e[_0x4d15('0x5a')][_0x4d15('0x94')];})[_0x4d15('0x21')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x20343e['params']['id']},'include':[{'model':db[_0x4d15('0xca')],'as':_0x4d15('0x9b')},{'model':db[_0x4d15('0xcb')],'as':_0x4d15('0xcb')}]});})['then'](handleEntityNotFound(_0x375211,null))[_0x4d15('0x21')](function(_0x4917bb){if(_0x4917bb&&_0x4917bb[_0x4d15('0x9b')]){_0x7e0839=_0x4917bb;var _0x431c50=_[_0x4d15('0xa4')](_0x20343e[_0x4d15('0x5a')],{'firstName':_0x20343e['body'][_0x4d15('0x94')],'phone':_0x20343e[_0x4d15('0x5a')]['from'],'ListId':_0x4917bb[_0x4d15('0x93')]});_0x431c50[_0x20343e[_0x4d15('0x5a')]['mapKeyOffline']]=_0x20343e[_0x4d15('0x5a')][_0x4d15('0x94')];return db['CmContact'][_0x4d15('0xcc')]({'where':_0x58f5b4,'defaults':_0x431c50});}})[_0x4d15('0xb5')](function(_0x22f39d){if(_0x22f39d){_0x11a332=_0x22f39d;var _0x445a32=fs[_0x4d15('0xcd')](path['join'](config[_0x4d15('0x74')],_0x4d15('0xce')),_0x4d15('0xcf'));var _0x32ba5a=ejs['render'](_0x445a32,{'body':_[_0x4d15('0xd0')](_0x20343e[_0x4d15('0x5a')][_0x4d15('0x5a')]),'bodyTitle':_0x7e0839[_0x4d15('0xd1')]});return db[_0x4d15('0xd2')][_0x4d15('0x59')]({'body':_0x32ba5a,'ContactId':_0x22f39d['id'],'ChatWebsiteId':_0x7e0839['id']});}})['then'](function(_0x44b764){_0x4f23ba=_0x44b764;if(_0x304ab7[_0x4d15('0x48')]){var _0x3cd5d9=_0x304ab7[_0x4d15('0x3d')](function(_0x2c1806){return{'name':_0x2c1806[_0x4d15('0xd3')],'basename':_0x2c1806['filename'],'type':_0x2c1806[_0x4d15('0xd4')],'ChatOfflineMessageId':_0x44b764['id']};});_0x14b8db=_0x3cd5d9[_0x4d15('0x3d')](_0x994a09=>{var _0x41385a={'filename':_0x994a09[_0x4d15('0x39')],'path':path[_0x4d15('0x73')](config['root'],_0x4d15('0xd5'),_0x4d15('0xc7'),_0x4d15('0xd6'),_0x4d15('0xd7'),_0x994a09[_0x4d15('0xd8')])};return _0x41385a;});if(!_0x7e0839[_0x4d15('0xd9')]){return db[_0x4d15('0xda')]['transaction'](function(_0x57a79e){return db[_0x4d15('0xdb')][_0x4d15('0xdc')](_0x3cd5d9,{'transaction':_0x57a79e});});}}})[_0x4d15('0x21')](function(){if(_0x4f23ba){_0x4032fd=_0x4f23ba;return db[_0x4d15('0xcb')][_0x4d15('0x68')]({'where':{'active':!![]},'include':[{'model':db[_0x4d15('0xdd')],'as':_0x4d15('0xde'),'raw':!![]}]});}})[_0x4d15('0x21')](function(_0xa95871){if(_0xa95871&&_0xa95871[_0x4d15('0xde')]&&_0x7e0839[_0x4d15('0xdf')]&&_0x7e0839[_0x4d15('0xe0')]){var _0x478c5c={'tls':{'rejectUnauthorized':![]}};if(_0xa95871['Smtp'][_0x4d15('0xe1')]){_0x478c5c[_0x4d15('0xe1')]=_0xa95871[_0x4d15('0xde')][_0x4d15('0xe1')];}else{_0x478c5c[_0x4d15('0xe2')]=_0xa95871[_0x4d15('0xde')][_0x4d15('0xe2')];_0x478c5c[_0x4d15('0xe3')]=_0xa95871['Smtp'][_0x4d15('0xe3')];_0x478c5c[_0x4d15('0xe4')]=_0xa95871[_0x4d15('0xde')][_0x4d15('0xe4')];}if(_0xa95871[_0x4d15('0xde')]['authentication']){_0x478c5c[_0x4d15('0xe5')]={'user':_0xa95871[_0x4d15('0xde')][_0x4d15('0x5b')],'pass':_0xa95871[_0x4d15('0xde')]['pass']};}return respondWithRpcPromise(_0x4d15('0xe6'),_0x4d15('0xe7'),{'account':_0x478c5c,'message':{'from':util[_0x4d15('0xab')](_0x4d15('0xe8'),_0xa95871['name'],_0xa95871[_0x4d15('0xe9')]||_0xa95871[_0x4d15('0xde')][_0x4d15('0x5b')]),'to':_0x7e0839[_0x4d15('0xe0')],'subject':_0x7e0839['offlineMessageSubject'],'html':_0x4032fd['body'],'attachments':_0x14b8db}},client9003)[_0x4d15('0x21')](function(){return _0x4032fd;})['catch'](function(_0x27f634){console[_0x4d15('0x26')](_0x27f634);});}})[_0x4d15('0x21')](function(){if(_0x7e0839&&_0x7e0839[_0x4d15('0xd9')]&&_0x7e0839['MailAccountId']){var _0x1bb801=[];if(_0x304ab7['length']){_0x1bb801=_0x304ab7[_0x4d15('0x3d')](function(_0x5839d2){return{'name':_0x5839d2[_0x4d15('0xd3')],'basename':_0x5839d2[_0x4d15('0x6e')],'type':_0x5839d2['mimetype'],'ChatOfflineMessageId':_0x4f23ba['id']};});}var _0x5e97e6;if(!_['isNil'](_0x7e0839[_0x4d15('0xea')])){var _0x563276=_['map'](_0x20343e[_0x4d15('0x5a')],function(_0x47801d){return _0x47801d;});var _0x5333e2=_[_0x4d15('0xeb')](_0x563276)[0x0];var _0x530b34=_['mapValues'](_0x5333e2,function(_0x198d69){return _0x198d69;});_0x5e97e6=_0x530b34[0x1][_0x7e0839[_0x4d15('0xea')]];}var _0xe47e33={'from':_0x11a332[_0x4d15('0xe9')],'firstName':_0x11a332[_0x4d15('0xa8')],'lastName':_0x11a332[_0x4d15('0xb7')],'mapKey':'email','message':{'from':_0x11a332[_0x4d15('0xe9')],'to':_0x7e0839['MailAccount']['email'],'cc':'','subject':_[_0x4d15('0x77')](_0x5e97e6)?_0x7e0839[_0x4d15('0xec')]:_0x5e97e6,'messageId':'','sentAt':new Date(),'attach':_0x1bb801[_0x4d15('0x48')],'attachments':_0x1bb801,'originChannel':_0x4d15('0xed'),'ChatWebsiteId':_0x7e0839['id'],'ChatOfflineMessageId':_0x4032fd['id'],'originTo':_0x7e0839[_0x4d15('0xcb')][_0x4d15('0xe9')]},'body':_0x4032fd['body']};var _0x11c03c={'account':{'id':_0x7e0839[_0x4d15('0xee')]},'body':_0xe47e33,'log':_0x4d15('0xef')};return respondWithRpcPromise(_0x4d15('0xef'),_0x4d15('0xf0'),_0x11c03c,client9001)[_0x4d15('0x21')](function(){return _0x4032fd;})[_0x4d15('0x54')](function(_0x158379){console['error'](_0x158379);});}return;})[_0x4d15('0x21')](function(){if(_0x4032fd){return _0x4032fd;}})[_0x4d15('0x21')](respondWithResult(_0x375211,null))[_0x4d15('0x54')](function(_0x3bee56){console[_0x4d15('0x26')]('catch',_0x3bee56);for(var _0x383253 of _0x304ab7){var _0x22572e=path[_0x4d15('0x73')](config[_0x4d15('0x74')],_0x4d15('0xd5'),_0x4d15('0xc7'),_0x4d15('0xd6'),'offline-chat',_0x383253[_0x4d15('0x6e')]);fs_extra[_0x4d15('0xf1')](_0x22572e)[_0x4d15('0x54')](function(_0x1b5272){console[_0x4d15('0x26')](_0x4d15('0xf2'),_0x22572e,_0x1b5272);});}});};exports[_0x4d15('0xf3')]=function(_0x45f792,_0x2867f7,_0x4bdc8c){return db[_0x4d15('0xb3')][_0x4d15('0x58')]({'where':{'id':_0x45f792[_0x4d15('0x56')]['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x2867f7,null))['then'](function(_0x59cd3){if(_0x59cd3){return _0x59cd3['addInteraction'](_0x45f792[_0x4d15('0x5a')][_0x4d15('0x66')],_[_0x4d15('0xf4')](_0x45f792[_0x4d15('0x5a')],[_0x4d15('0x66'),'id'])||{});}})[_0x4d15('0x21')](respondWithResult(_0x2867f7,null))[_0x4d15('0x54')](handleError(_0x2867f7,null));};exports[_0x4d15('0xf5')]=function(_0x826d64,_0x28595c,_0x5cd900){var _0x2057c4={'raw':![],'where':{}};var _0x5ac67={};var _0x522779={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x4d15('0x68')]({'where':{'id':_0x826d64['params']['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x28595c,null))['then'](function(_0x2bb5e7){if(_0x2bb5e7){_0x5ac67['model']=_[_0x4d15('0x43')](db[_0x4d15('0xb3')][_0x4d15('0x3f')]);_0x5ac67[_0x4d15('0x42')]=_[_0x4d15('0x43')](_0x826d64[_0x4d15('0x42')]);_0x5ac67[_0x4d15('0x4d')]=_[_0x4d15('0x44')](_0x5ac67[_0x4d15('0x45')],_0x5ac67[_0x4d15('0x42')]);_0x2057c4['attributes']=_[_0x4d15('0x44')](_0x5ac67[_0x4d15('0x45')],qs[_0x4d15('0x47')](_0x826d64[_0x4d15('0x42')][_0x4d15('0x47')]));_0x2057c4[_0x4d15('0x46')]=_0x2057c4[_0x4d15('0x46')][_0x4d15('0x48')]?_0x2057c4[_0x4d15('0x46')]:_0x5ac67[_0x4d15('0x45')];if(!_0x826d64[_0x4d15('0x42')][_0x4d15('0x49')](_0x4d15('0x4a'))){_0x2057c4[_0x4d15('0x2d')]=qs[_0x4d15('0x2d')](_0x826d64[_0x4d15('0x42')]['limit']);_0x2057c4[_0x4d15('0x2c')]=qs['offset'](_0x826d64['query'][_0x4d15('0x2c')]);}_0x2057c4[_0x4d15('0x63')]=qs[_0x4d15('0x4b')](_0x826d64['query'][_0x4d15('0x4b')]);_0x2057c4[_0x4d15('0x4c')]=qs[_0x4d15('0x4d')](_['pick'](_0x826d64[_0x4d15('0x42')],_0x5ac67[_0x4d15('0x4d')]));_0x2057c4[_0x4d15('0x4c')][_0x4d15('0x60')]=_0x2bb5e7['id'];if(_0x826d64['query'][_0x4d15('0x50')]){_0x2057c4[_0x4d15('0x4c')]=_[_0x4d15('0x4e')](_0x2057c4['where'],{'$or':_[_0x4d15('0x3d')](_0x2057c4[_0x4d15('0x46')],function(_0x6f64bd){var _0xe04d15={};_0xe04d15[_0x6f64bd]={'$like':'%'+_0x826d64[_0x4d15('0x42')][_0x4d15('0x50')]+'%'};return _0xe04d15;})});}_0x2057c4=_['merge']({},_0x2057c4,_0x826d64[_0x4d15('0x51')]);return db[_0x4d15('0xb3')]['count']({'where':_0x2057c4['where']})[_0x4d15('0x21')](function(_0x42a818){_0x522779[_0x4d15('0x2e')]=_0x42a818;if(_0x826d64[_0x4d15('0x42')][_0x4d15('0x57')]){_0x2057c4[_0x4d15('0x52')]=[{'model':db[_0x4d15('0x8b')],'as':_0x4d15('0xf6'),'required':![]},{'model':db[_0x4d15('0xbf')],'as':'Owner','attributes':[_0x4d15('0x39'),'fullname',_0x4d15('0xf7')],'required':![]},{'model':db['Tag'],'as':_0x4d15('0xf8'),'attributes':['id','name',_0x4d15('0xf9')],'where':_0x826d64[_0x4d15('0x42')][_0x4d15('0xfa')]?{'id':_0x826d64['query'][_0x4d15('0xfa')]}:undefined,'required':_0x826d64['query'][_0x4d15('0xfa')]?!![]:![]}];}return db[_0x4d15('0xb3')][_0x4d15('0x53')](_0x2057c4);})[_0x4d15('0x21')](function(_0x3af1d4){_0x522779[_0x4d15('0x64')]=_0x3af1d4;return _0x522779;});}})[_0x4d15('0x21')](respondWithFilteredResult(_0x28595c,_0x2057c4))['catch'](handleError(_0x28595c,null));};function iftimePromise(_0x276843,_0xc31d5b){return respondWithRpcPromise(_0x4d15('0xfb'),_0x4d15('0xfc'),{'command':_0xc31d5b[_0x4d15('0xfd')]?util[_0x4d15('0xab')]('iftime\x20%s,%s',_0x276843[_0x4d15('0xfe')],_0xc31d5b[_0x4d15('0xfd')]):util[_0x4d15('0xab')](_0x4d15('0xff'),_0x276843['interval'])},client9002)[_0x4d15('0x21')](function(_0x39b4bb){var _0x2de7a8=_0x39b4bb&&_0x39b4bb['indexOf'](_0x4d15('0x100'))>=0x0?!![]:![];logger[_0x4d15('0x22')](_0x4d15('0x101'),_0xc31d5b['id'],_0x276843['id'],_0x276843['interval'],_0x2de7a8?'ONLINE':_0x4d15('0x102'),_0xc31d5b['timezone']?_0xc31d5b['timezone']:_0x4d15('0x103'));return _0x2de7a8;})[_0x4d15('0x54')](function(_0x15abae){logger[_0x4d15('0x26')](_0x4d15('0x101'),_0xc31d5b['id'],_0x276843['id'],_0x276843[_0x4d15('0xfe')],util[_0x4d15('0x104')](_0x15abae,{'showHidden':![],'depth':null}),_0xc31d5b[_0x4d15('0xfd')]?_0xc31d5b[_0x4d15('0xfd')]:_0x4d15('0x103'));return![];});}exports['getSnippet']=function(_0x55813c,_0x38da1c,_0x223145){var _0x2fbcc2=0x0;var _0x337416=0x0;var _0x5c73c8=![];var _0x5e8c1c;var _0x3e7985;return db['ChatWebsite'][_0x4d15('0x58')]({'where':{'id':_0x55813c['params']['id']},'include':[{'model':db[_0x4d15('0x105')],'as':_0x4d15('0x105'),'include':[{'model':db[_0x4d15('0x105')],'as':_0x4d15('0x106'),'attributes':['id',_0x4d15('0xfe')],'raw':!![]}]}]})[_0x4d15('0x21')](handleEntityNotFound(_0x38da1c,null))['then'](function(_0x2d0737){if(_0x2d0737){_0x5e8c1c=_0x2d0737;return _0x2d0737[_0x4d15('0x107')]({'raw':!![]});}})[_0x4d15('0x21')](function(_0x119672){if(_0x5e8c1c){if(_0x119672){_0x3e7985=_0x119672;}}return require(_0x4d15('0x75'))[_0x4d15('0x108')]();})['then'](function(_0x200a89){if(_0x200a89){_0x337416=_0x200a89[_0x4d15('0x109')];_0x5c73c8=_0x200a89[_0x4d15('0x76')];}})[_0x4d15('0x21')](function(){return db[_0x4d15('0xb3')][_0x4d15('0x2e')]({'where':{'closed':![]}});})[_0x4d15('0x21')](function(_0x58006f){_0x2fbcc2=_0x58006f;if(_0x337416&&_0x58006f>_0x337416){return db[_0x4d15('0x10a')]['findOne']({'where':{'id':0x1}})[_0x4d15('0x21')](function(_0x1f8027){if(_0x1f8027){_0x1f8027[_0x4d15('0x10b')](_0x4d15('0x10c'));}});}})['then'](function(){if(_0x5e8c1c[_0x4d15('0x105')]&&_0x5e8c1c[_0x4d15('0x105')][_0x4d15('0x106')]){var _0x32311f=[];for(var _0x304e8b=0x0;_0x304e8b<_0x5e8c1c[_0x4d15('0x105')]['Intervals'][_0x4d15('0x48')];_0x304e8b++){var _0x179fc2=_0x5e8c1c[_0x4d15('0x105')][_0x4d15('0x106')][_0x304e8b]['get']({'plain':!![]});_0x32311f[_0x4d15('0xba')](iftimePromise(_0x179fc2,_0x5e8c1c));}return BPromise[_0x4d15('0x10d')](_0x32311f)[_0x4d15('0x21')](function(_0x169780){return _[_0x4d15('0x10e')](_0x169780);});}else{return!![];}})[_0x4d15('0x21')](function(_0x590ef3){var _0x5a03b2=fs['readFileSync'](path[_0x4d15('0x73')](config['root'],'server/files/chat/iframe.ejs'),_0x4d15('0xcf'));var _0x2e1ce3={'remote':_0x5e8c1c[_0x4d15('0x10f')],'query':querystring[_0x4d15('0x25')](_[_0x4d15('0x4e')](_0x5e8c1c[_0x4d15('0x35')]({'plain':!![]}),{'customerIp':_0x55813c[_0x4d15('0x87')][_0x4d15('0xa6')]||_0x55813c[_0x4d15('0x87')][_0x4d15('0x110')]||_0x55813c['connection'][_0x4d15('0x111')]||_0x55813c['ip'],'referer':_0x55813c['headers']['referer'],'openedInteractions':_0x2fbcc2,'maxInteractions':_0x337416,'virtual':_0x5c73c8[_0x4d15('0x109')],'online':_0x590ef3,'custom':_0x5c73c8}))[_0x4d15('0x112')](/'/g,'\x5c\x27')};_0x38da1c['send'](ejs[_0x4d15('0x113')](Mustache[_0x4d15('0x113')](_0x5a03b2,_0x2e1ce3),{'proactiveActions':_0x3e7985,'alignment':_0x5e8c1c[_0x4d15('0x114')],'verticalAlignment':_0x5e8c1c['verticalAlignment'],'div_color':_0x5e8c1c[_0x4d15('0xf9')],'text_color':_0x5e8c1c[_0x4d15('0x115')],'button_color':_0x5e8c1c[_0x4d15('0x116')],'background_color':_0x5e8c1c['backgroundColor']}));})[_0x4d15('0x54')](handleError(_0x38da1c,null));};exports['addApplications']=function(_0x1b9996,_0x165a13,_0x1a97d6){return db[_0x4d15('0x3e')]['findOne']({'where':{'id':_0x1b9996[_0x4d15('0x56')]['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x165a13,null))[_0x4d15('0x21')](function(_0x4e58aa){if(_0x4e58aa){return db[_0x4d15('0xda')][_0x4d15('0x117')](function(_0x36667a){return db[_0x4d15('0x9d')][_0x4d15('0x34')]({'where':{'ChatWebsiteId':_0x1b9996[_0x4d15('0x56')]['id']},'transaction':_0x36667a})[_0x4d15('0x21')](function(_0x5a20e6){var _0x27d44c=_[_0x4d15('0x3d')](_0x1b9996[_0x4d15('0x5a')],function(_0x3c8c03){_0x3c8c03['ChatWebsiteId']=_0x1b9996[_0x4d15('0x56')]['id'];return _0x3c8c03;});return db[_0x4d15('0x9d')]['bulkCreate'](_0x27d44c,{'transaction':_0x36667a});});})[_0x4d15('0x21')](function(){return db['ChatApplication'][_0x4d15('0x118')]({'where':{'ChatWebsiteId':_0x1b9996['params']['id']},'order':_0x4d15('0x119')});});}})[_0x4d15('0x21')](respondWithResult(_0x165a13,null))[_0x4d15('0x54')](handleError(_0x165a13,null));};exports[_0x4d15('0x11a')]=function(_0x1d2964,_0x5ee06e,_0x6380c0){var _0x4c7c0c={};var _0x838750={};var _0x36187c;var _0x59eaf;return db[_0x4d15('0x3e')]['findOne']({'where':{'id':_0x1d2964[_0x4d15('0x56')]['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x5ee06e,null))['then'](function(_0x378a79){if(_0x378a79){_0x36187c=_0x378a79;_0x838750[_0x4d15('0x45')]=_[_0x4d15('0x43')](db[_0x4d15('0x9d')][_0x4d15('0x3f')]);_0x838750[_0x4d15('0x42')]=_[_0x4d15('0x43')](_0x1d2964[_0x4d15('0x42')]);_0x838750[_0x4d15('0x4d')]=_['intersection'](_0x838750[_0x4d15('0x45')],_0x838750[_0x4d15('0x42')]);_0x4c7c0c[_0x4d15('0x46')]=_[_0x4d15('0x44')](_0x838750[_0x4d15('0x45')],qs[_0x4d15('0x47')](_0x1d2964['query'][_0x4d15('0x47')]));_0x4c7c0c[_0x4d15('0x46')]=_0x4c7c0c[_0x4d15('0x46')][_0x4d15('0x48')]?_0x4c7c0c['attributes']:_0x838750[_0x4d15('0x45')];_0x4c7c0c[_0x4d15('0x63')]=qs[_0x4d15('0x4b')](_0x1d2964[_0x4d15('0x42')]['sort']);_0x4c7c0c['where']=qs[_0x4d15('0x4d')](_[_0x4d15('0x69')](_0x1d2964['query'],_0x838750['filters']));if(_0x1d2964[_0x4d15('0x42')][_0x4d15('0x50')]){_0x4c7c0c[_0x4d15('0x4c')]=_[_0x4d15('0x4e')](_0x4c7c0c[_0x4d15('0x4c')],{'$or':_[_0x4d15('0x3d')](_0x4c7c0c[_0x4d15('0x46')],function(_0x18c0de){var _0x3c3a96={};_0x3c3a96[_0x18c0de]={'$like':'%'+_0x1d2964[_0x4d15('0x42')][_0x4d15('0x50')]+'%'};return _0x3c3a96;})});}_0x4c7c0c=_[_0x4d15('0x4e')]({},_0x4c7c0c,_0x1d2964[_0x4d15('0x51')]);return _0x36187c[_0x4d15('0x11a')](_0x4c7c0c);}})[_0x4d15('0x21')](function(_0x5be305){if(_0x5be305){_0x59eaf=_0x5be305[_0x4d15('0x48')];if(!_0x1d2964['query'][_0x4d15('0x49')](_0x4d15('0x4a'))){_0x4c7c0c[_0x4d15('0x2d')]=qs['limit'](_0x1d2964[_0x4d15('0x42')][_0x4d15('0x2d')]);_0x4c7c0c[_0x4d15('0x2c')]=qs[_0x4d15('0x2c')](_0x1d2964[_0x4d15('0x42')][_0x4d15('0x2c')]);}return _0x36187c[_0x4d15('0x11a')](_0x4c7c0c);}})['then'](function(_0x2e9276){if(_0x2e9276){return _0x2e9276?{'count':_0x59eaf,'rows':_0x2e9276}:null;}})['then'](respondWithResult(_0x5ee06e,null))[_0x4d15('0x54')](handleError(_0x5ee06e,null));};exports[_0x4d15('0x11b')]=function(_0x5aabd0,_0x30aabe,_0x482fe4){return db['chatProactiveAction'][_0x4d15('0x58')]({'where':{'id':_0x5aabd0[_0x4d15('0x56')]['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x30aabe,null))['then'](function(_0x2ab18b){if(_0x2ab18b){return _0x2ab18b[_0x4d15('0x11b')](_0x5aabd0[_0x4d15('0x5a')][_0x4d15('0x66')],_[_0x4d15('0xf4')](_0x5aabd0[_0x4d15('0x5a')],['ids','id'])||{});}})[_0x4d15('0x21')](respondWithResult(_0x30aabe,null))[_0x4d15('0x54')](handleError(_0x30aabe,null));};exports[_0x4d15('0x107')]=function(_0x523463,_0x1733c6,_0x7908e0){var _0x5e46bb={};var _0x2daf4f={};var _0x267f4d;var _0x450b4d;return db[_0x4d15('0x3e')][_0x4d15('0x68')]({'where':{'id':_0x523463[_0x4d15('0x56')]['id']}})['then'](handleEntityNotFound(_0x1733c6,null))['then'](function(_0x5d56d0){if(_0x5d56d0){_0x267f4d=_0x5d56d0;_0x2daf4f['model']=_[_0x4d15('0x43')](db[_0x4d15('0x11c')][_0x4d15('0x3f')]);_0x2daf4f[_0x4d15('0x42')]=_[_0x4d15('0x43')](_0x523463[_0x4d15('0x42')]);_0x2daf4f[_0x4d15('0x4d')]=_[_0x4d15('0x44')](_0x2daf4f['model'],_0x2daf4f[_0x4d15('0x42')]);_0x5e46bb['attributes']=_[_0x4d15('0x44')](_0x2daf4f['model'],qs[_0x4d15('0x47')](_0x523463[_0x4d15('0x42')][_0x4d15('0x47')]));_0x5e46bb[_0x4d15('0x46')]=_0x5e46bb['attributes'][_0x4d15('0x48')]?_0x5e46bb[_0x4d15('0x46')]:_0x2daf4f['model'];_0x5e46bb[_0x4d15('0x63')]=qs[_0x4d15('0x4b')](_0x523463[_0x4d15('0x42')][_0x4d15('0x4b')]);_0x5e46bb[_0x4d15('0x4c')]=qs[_0x4d15('0x4d')](_[_0x4d15('0x69')](_0x523463[_0x4d15('0x42')],_0x2daf4f['filters']));if(_0x523463[_0x4d15('0x42')][_0x4d15('0x50')]){_0x5e46bb[_0x4d15('0x4c')]=_[_0x4d15('0x4e')](_0x5e46bb['where'],{'$or':_[_0x4d15('0x3d')](_0x5e46bb[_0x4d15('0x46')],function(_0x103e93){var _0x116fd3={};_0x116fd3[_0x103e93]={'$like':'%'+_0x523463[_0x4d15('0x42')][_0x4d15('0x50')]+'%'};return _0x116fd3;})});}_0x5e46bb=_[_0x4d15('0x4e')]({},_0x5e46bb,_0x523463['options']);return _0x267f4d[_0x4d15('0x107')](_0x5e46bb);}})[_0x4d15('0x21')](function(_0x3cd7e8){if(_0x3cd7e8){_0x450b4d=_0x3cd7e8[_0x4d15('0x48')];if(!_0x523463[_0x4d15('0x42')]['hasOwnProperty'](_0x4d15('0x4a'))){_0x5e46bb[_0x4d15('0x2d')]=qs[_0x4d15('0x2d')](_0x523463[_0x4d15('0x42')][_0x4d15('0x2d')]);_0x5e46bb['offset']=qs[_0x4d15('0x2c')](_0x523463['query'][_0x4d15('0x2c')]);}return _0x267f4d[_0x4d15('0x107')](_0x5e46bb);}})[_0x4d15('0x21')](function(_0x463993){if(_0x463993){return _0x463993?{'count':_0x450b4d,'rows':_0x463993}:null;}})[_0x4d15('0x21')](respondWithResult(_0x1733c6,null))[_0x4d15('0x54')](handleError(_0x1733c6,null));};exports[_0x4d15('0x11d')]=function(_0x14e35e,_0x1dc343,_0x25a09d){var _0x94dc8a=_0x14e35e[_0x4d15('0x42')][_0x4d15('0x11e')]==='false'?_0x4d15('0x11f'):_0x4d15('0x120');return db[_0x4d15('0x3e')][_0x4d15('0x58')]({'attributes':['id',_0x94dc8a],'where':{'id':_0x14e35e['params']['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x1dc343,null))[_0x4d15('0x21')](function(_0x5d2c73){if(_0x5d2c73){var _0x36a610=_0x5d2c73[_0x94dc8a];var _0x5770ce=_0x36a610&&_0x36a610['items']?_0x36a610['items']:[];_0x1dc343['send']({'fromKey':_[_0x4d15('0x77')](_0x36a610[_0x4d15('0x121')])?undefined:_0x36a610[_0x4d15('0x121')],'count':_0x5770ce[_0x4d15('0x48')],'rows':_0x5770ce});}})[_0x4d15('0x54')](handleError(_0x1dc343,null));};exports[_0x4d15('0x122')]=function(_0x35ab9f,_0xa58b77,_0x43b7a1){var _0x13dc33={'raw':![],'where':{}};var _0x5638a7={};var _0x282dac={'count':0x0,'rows':[]};return db[_0x4d15('0x3e')]['findOne']({'where':{'id':_0x35ab9f[_0x4d15('0x56')]['id']}})['then'](handleEntityNotFound(_0xa58b77,null))[_0x4d15('0x21')](function(_0x394b70){if(_0x394b70){_0x5638a7[_0x4d15('0x45')]=_[_0x4d15('0x43')](db[_0x4d15('0xd2')][_0x4d15('0x3f')]);_0x5638a7[_0x4d15('0x42')]=_[_0x4d15('0x43')](_0x35ab9f[_0x4d15('0x42')]);_0x5638a7['filters']=_[_0x4d15('0x44')](_0x5638a7[_0x4d15('0x45')],_0x5638a7[_0x4d15('0x42')]);_0x13dc33[_0x4d15('0x46')]=_[_0x4d15('0x44')](_0x5638a7[_0x4d15('0x45')],qs[_0x4d15('0x47')](_0x35ab9f[_0x4d15('0x42')][_0x4d15('0x47')]));_0x13dc33[_0x4d15('0x46')]=_0x13dc33[_0x4d15('0x46')][_0x4d15('0x48')]?_0x13dc33[_0x4d15('0x46')]:_0x5638a7[_0x4d15('0x45')];if(!_0x35ab9f['query'][_0x4d15('0x49')]('nolimit')){_0x13dc33['limit']=qs[_0x4d15('0x2d')](_0x35ab9f[_0x4d15('0x42')][_0x4d15('0x2d')]);_0x13dc33['offset']=qs[_0x4d15('0x2c')](_0x35ab9f[_0x4d15('0x42')][_0x4d15('0x2c')]);}_0x13dc33[_0x4d15('0x63')]=qs['sort'](_0x35ab9f[_0x4d15('0x42')][_0x4d15('0x4b')]);_0x13dc33['where']=qs['filters'](_[_0x4d15('0x69')](_0x35ab9f['query'],_0x5638a7[_0x4d15('0x4d')]));_0x13dc33['where'][_0x4d15('0x60')]=_0x394b70['id'];if(_0x35ab9f[_0x4d15('0x42')][_0x4d15('0x50')]){_0x13dc33[_0x4d15('0x4c')]=_[_0x4d15('0x4e')](_0x13dc33[_0x4d15('0x4c')],{'$or':_[_0x4d15('0x3d')](_0x13dc33[_0x4d15('0x46')],function(_0x1c318b){var _0x1b1bad={};_0x1b1bad[_0x1c318b]={'$like':'%'+_0x35ab9f[_0x4d15('0x42')][_0x4d15('0x50')]+'%'};return _0x1b1bad;})});}_0x13dc33=_[_0x4d15('0x4e')]({},_0x13dc33,_0x35ab9f[_0x4d15('0x51')]);return db[_0x4d15('0xd2')][_0x4d15('0x2e')]({'where':_0x13dc33[_0x4d15('0x4c')]})['then'](function(_0x15f00f){_0x282dac[_0x4d15('0x2e')]=_0x15f00f;if(_0x35ab9f[_0x4d15('0x42')][_0x4d15('0x57')]){_0x13dc33[_0x4d15('0x52')]=[{'all':!![]}];}else{_0x13dc33[_0x4d15('0x52')]=[{'model':db['CmContact'],'as':_0x4d15('0xf6'),'required':![]},{'model':db[_0x4d15('0xdb')],'as':_0x4d15('0x123'),'required':![]}];}return db[_0x4d15('0xd2')]['findAll'](_0x13dc33);})[_0x4d15('0x21')](function(_0x54a390){_0x282dac['rows']=_0x54a390;return _0x282dac;});}})[_0x4d15('0x21')](respondWithFilteredResult(_0xa58b77,_0x13dc33))[_0x4d15('0x54')](handleError(_0xa58b77,null));};exports[_0x4d15('0x124')]=function(_0x7de638,_0x266f22,_0x1e48c0){return db[_0x4d15('0x3e')]['find']({'where':{'id':_0x7de638[_0x4d15('0x56')]['id']}})['then'](handleEntityNotFound(_0x266f22,null))[_0x4d15('0x21')](function(_0x566108){if(_0x566108){return _0x566108[_0x4d15('0x124')](_0x7de638[_0x4d15('0x5a')][_0x4d15('0x66')],_[_0x4d15('0xf4')](_0x7de638['body'],[_0x4d15('0x66'),'id'])||{})['spread'](function(_0x3ec619){for(var _0x5f9ed8=0x0;_0x5f9ed8<_0x7de638[_0x4d15('0x5a')][_0x4d15('0x66')]['length'];_0x5f9ed8+=0x1){socket[_0x4d15('0x125')](_0x4d15('0x126'),{'UserId':Number(_0x7de638[_0x4d15('0x5a')]['ids'][_0x5f9ed8]),'ChatWebsiteId':Number(_0x7de638[_0x4d15('0x56')]['id'])});}return _0x3ec619;});}})[_0x4d15('0x21')](respondWithResult(_0x266f22,null))['catch'](handleError(_0x266f22,null));};exports[_0x4d15('0x127')]=function(_0x12269b,_0x3d4938,_0x171fea){return db['ChatWebsite'][_0x4d15('0x58')]({'where':{'id':_0x12269b[_0x4d15('0x56')]['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x3d4938,null))[_0x4d15('0x21')](function(_0x363967){if(_0x363967){return _0x363967[_0x4d15('0x127')](_0x12269b[_0x4d15('0x42')]['ids'])[_0x4d15('0x21')](function(){if(_[_0x4d15('0x128')](_0x12269b[_0x4d15('0x42')][_0x4d15('0x66')])){for(var _0x5afa91=0x0;_0x5afa91<_0x12269b[_0x4d15('0x42')][_0x4d15('0x66')][_0x4d15('0x48')];_0x5afa91+=0x1){socket[_0x4d15('0x125')](_0x4d15('0x129'),{'UserId':Number(_0x12269b[_0x4d15('0x42')]['ids'][_0x5afa91]),'ChatWebsiteId':Number(_0x12269b['params']['id'])});}}else{socket[_0x4d15('0x125')]('userChatWebsite:remove',{'UserId':Number(_0x12269b[_0x4d15('0x42')][_0x4d15('0x66')]),'ChatWebsiteId':Number(_0x12269b[_0x4d15('0x56')]['id'])});}});}})[_0x4d15('0x21')](respondWithStatusCode(_0x3d4938,null))['catch'](handleError(_0x3d4938,null));};exports[_0x4d15('0x12a')]=function(_0x31fa67,_0x24a6eb,_0x266da6){var _0xb281b={};var _0x1efaed={};var _0x258eb4;var _0x468bbe;return db[_0x4d15('0x3e')][_0x4d15('0x68')]({'where':{'id':_0x31fa67['params']['id']}})[_0x4d15('0x21')](handleEntityNotFound(_0x24a6eb,null))[_0x4d15('0x21')](function(_0x2264a6){if(_0x2264a6){_0x258eb4=_0x2264a6;_0x1efaed[_0x4d15('0x45')]=_[_0x4d15('0x43')](db[_0x4d15('0xbf')][_0x4d15('0x3f')]);_0x1efaed[_0x4d15('0x42')]=_[_0x4d15('0x43')](_0x31fa67['query']);_0x1efaed[_0x4d15('0x4d')]=_[_0x4d15('0x44')](_0x1efaed[_0x4d15('0x45')],_0x1efaed[_0x4d15('0x42')]);_0xb281b[_0x4d15('0x46')]=_[_0x4d15('0x44')](_0x1efaed['model'],qs[_0x4d15('0x47')](_0x31fa67[_0x4d15('0x42')][_0x4d15('0x47')]));_0xb281b['attributes']=_0xb281b[_0x4d15('0x46')][_0x4d15('0x48')]?_0xb281b[_0x4d15('0x46')]:_0x1efaed[_0x4d15('0x45')];_0xb281b['order']=qs[_0x4d15('0x4b')](_0x31fa67[_0x4d15('0x42')][_0x4d15('0x4b')]);_0xb281b[_0x4d15('0x4c')]=qs[_0x4d15('0x4d')](_['pick'](_0x31fa67[_0x4d15('0x42')],_0x1efaed['filters']));if(_0x31fa67[_0x4d15('0x42')][_0x4d15('0x50')]){_0xb281b['where']=_[_0x4d15('0x4e')](_0xb281b[_0x4d15('0x4c')],{'$or':_[_0x4d15('0x3d')](_0xb281b['attributes'],function(_0x23c56d){var _0x20e6ea={};_0x20e6ea[_0x23c56d]={'$like':'%'+_0x31fa67[_0x4d15('0x42')]['filter']+'%'};return _0x20e6ea;})});}_0xb281b=_[_0x4d15('0x4e')]({},_0xb281b,_0x31fa67['options']);return _0x258eb4[_0x4d15('0x12a')](_0xb281b);}})[_0x4d15('0x21')](function(_0xd15dc2){if(_0xd15dc2){_0x468bbe=_0xd15dc2[_0x4d15('0x48')];if(!_0x31fa67[_0x4d15('0x42')]['hasOwnProperty'](_0x4d15('0x4a'))){_0xb281b[_0x4d15('0x2d')]=qs[_0x4d15('0x2d')](_0x31fa67[_0x4d15('0x42')][_0x4d15('0x2d')]);_0xb281b[_0x4d15('0x2c')]=qs[_0x4d15('0x2c')](_0x31fa67[_0x4d15('0x42')][_0x4d15('0x2c')]);}return _0x258eb4[_0x4d15('0x12a')](_0xb281b);}})['then'](function(_0x2a9add){if(_0x2a9add){return _0x2a9add?{'count':_0x468bbe,'rows':_0x2a9add}:null;}})[_0x4d15('0x21')](respondWithResult(_0x24a6eb,null))[_0x4d15('0x54')](handleError(_0x24a6eb,null));};
\ No newline at end of file
+var _0x3491=['subjectOffline','toPairsIn','NotifyMailAccount','server','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','Contact','fullname','internal','color','tag','Command','getSnippet','iftime\x20%s,%s','timezone','interval','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','inspect','No\x20timezone','Interval','Intervals','getProactiveActions','virtual','License','increment','chatLicenseExceeded','server/files/chat/iframe.ejs','utf8','x-real-ip','referer','render','alignment','verticalAlignment','color_button','backgroundColor','addApplications','transaction','getApplications','addProactiveActions','chatProactiveAction','online','false','offlineForm','onlineForm','fromKey','getOfflineMessages','Attachments','omit','emit','userChatWebsite:save','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','socket.io-emitter','redis','./chatWebsite.socket','jayson/promise','client','http','then','info','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','ChatWebsite,\x20%s,\x20%s','result','catch','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','ChatWebsites','UserProfileResource','sendStatus','stack','name','send','index','map','rawAttributes','type','model','keys','filters','intersection','query','attributes','fields','length','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','include','ChatWebsite','findAll','show','params','Pause','includeAll','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','mandatoryDispositionPause','addDisposition','Disposition','getDispositions','findOne','hasOwnProperty','order','ChatWebsiteId','rows','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','addLogo','sitepic','file','filename','addAvatar','agentAvatar','addCustomerAvatar','addSystemAvatar','systemAvatar','getLogo','root','server/files/images/logos/default_logo.svg','getLicense','custom','existsSync','join','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','isNil','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','customerAvatar','showCustomerAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','headers','user-agent','getResult','chat','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','Contacts','ChatApplication','Applications','account','applications','priority','asc','contact','customerIp','cf-connecting-ip','first','x-forwarded-for','split','lastName','x-real-port','browser','version','format','%s\x20%s','unknown','device','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','firstName','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','User','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline','CmContact','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','files','attachments','offline-chat','basename','sequelize','Attachment','bulkCreate','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','pass','\x22%s\x22\x20<%s>','email','offlineMessageSubject','openNewInteraction'];(function(_0x4769ca,_0x4e9193){var _0x5cb961=function(_0x4bf2f5){while(--_0x4bf2f5){_0x4769ca['push'](_0x4769ca['shift']());}};_0x5cb961(++_0x4e9193);}(_0x3491,0x164));var _0x1349=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x3491[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0x1349('0x0'));var rimraf=require(_0x1349('0x1'));var zipdir=require(_0x1349('0x2'));var jsonpatch=require(_0x1349('0x3'));var rp=require(_0x1349('0x4'));var moment=require(_0x1349('0x5'));var BPromise=require(_0x1349('0x6'));var Mustache=require(_0x1349('0x7'));var util=require('util');var path=require(_0x1349('0x8'));var sox=require(_0x1349('0x9'));var csv=require('to-csv');var ejs=require(_0x1349('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1349('0xb'));var crypto=require(_0x1349('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1349('0xd'));var toCsv=require('to-csv');var querystring=require(_0x1349('0xe'));var Papa=require(_0x1349('0xf'));var Redis=require(_0x1349('0x10'));var authService=require(_0x1349('0x11'));var qs=require(_0x1349('0x12'));var as=require(_0x1349('0x13'));var hardwareService=require(_0x1349('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x1349('0x15'));var config=require(_0x1349('0x16'));var licenseUtil=require(_0x1349('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x1349('0x18')](config['redis'],{'host':_0x1349('0x19'),'port':0x18eb});var socket=require(_0x1349('0x1a'))(new Redis(config[_0x1349('0x1b')]));require(_0x1349('0x1c'))['register'](socket);var jayson=require(_0x1349('0x1d'));var client=jayson[_0x1349('0x1e')][_0x1349('0x1f')]({'port':0x232c});var client9002=jayson[_0x1349('0x1e')]['http']({'port':0x232a});var client9003=jayson[_0x1349('0x1e')][_0x1349('0x1f')]({'port':0x232b});var client9001=jayson['client'][_0x1349('0x1f')]({'port':0x2329});function respondWithRpcPromise(_0x193414,_0x4d9f2e,_0x22906a,_0x57ca00){return new BPromise(function(_0x1a4254,_0x18f922){var _0x341025=_0x57ca00||client;return _0x341025['request'](_0x193414,_0x22906a)[_0x1349('0x20')](function(_0x432c36){logger[_0x1349('0x21')]('ChatWebsite,\x20%s,\x20%s',_0x4d9f2e,_0x1349('0x22'));logger[_0x1349('0x23')](_0x1349('0x24'),_0x4d9f2e,'request\x20sent',JSON[_0x1349('0x25')](_0x432c36));if(_0x432c36[_0x1349('0x26')]){if(_0x432c36[_0x1349('0x26')]['code']===0x1f4){logger[_0x1349('0x26')]('ChatWebsite,\x20%s,\x20%s',_0x4d9f2e,_0x432c36['error'][_0x1349('0x27')]);return _0x18f922(_0x432c36[_0x1349('0x26')]['message']);}logger['error'](_0x1349('0x28'),_0x4d9f2e,_0x432c36[_0x1349('0x26')][_0x1349('0x27')]);return _0x1a4254(_0x432c36[_0x1349('0x26')]['message']);}else{logger[_0x1349('0x21')](_0x1349('0x28'),_0x4d9f2e,_0x1349('0x22'));_0x1a4254(_0x432c36[_0x1349('0x29')]['message']);}})[_0x1349('0x2a')](function(_0x5bcf3a){logger[_0x1349('0x26')](_0x1349('0x28'),_0x4d9f2e,_0x5bcf3a);_0x18f922(_0x5bcf3a);});});}function respondWithStatusCode(_0x40befa,_0x2fa290){_0x2fa290=_0x2fa290||0xcc;return function(_0x223efc){if(_0x223efc){return _0x40befa['sendStatus'](_0x2fa290);}return _0x40befa[_0x1349('0x2b')](_0x2fa290)[_0x1349('0x2c')]();};}function respondWithResult(_0x4e98d3,_0x5470ff){_0x5470ff=_0x5470ff||0xc8;return function(_0x553002){if(_0x553002){return _0x4e98d3[_0x1349('0x2b')](_0x5470ff)[_0x1349('0x2d')](_0x553002);}};}function respondWithFilteredResult(_0x1e1712,_0x40dd7a){return function(_0xf5cd0c){if(_0xf5cd0c){var _0x1d0479=typeof _0x40dd7a[_0x1349('0x2e')]===_0x1349('0x2f')&&typeof _0x40dd7a['limit']==='undefined';var _0x3eadd3=_0xf5cd0c[_0x1349('0x30')];var _0x586280=_0x1d0479?0x0:_0x40dd7a[_0x1349('0x2e')];var _0x5ebff8=_0x1d0479?_0xf5cd0c[_0x1349('0x30')]:_0x40dd7a['offset']+_0x40dd7a[_0x1349('0x31')];var _0x4e98fc;if(_0x5ebff8>=_0x3eadd3){_0x5ebff8=_0x3eadd3;_0x4e98fc=0xc8;}else{_0x4e98fc=0xce;}_0x1e1712[_0x1349('0x2b')](_0x4e98fc);return _0x1e1712[_0x1349('0x32')](_0x1349('0x33'),_0x586280+'-'+_0x5ebff8+'/'+_0x3eadd3)[_0x1349('0x2d')](_0xf5cd0c);}return null;};}function patchUpdates(_0x1f73f4){return function(_0x1a264e){try{jsonpatch[_0x1349('0x34')](_0x1a264e,_0x1f73f4,!![]);}catch(_0x3710b7){return BPromise[_0x1349('0x35')](_0x3710b7);}return _0x1a264e[_0x1349('0x36')]();};}function saveUpdates(_0x1722e1,_0x504728){return function(_0x4f00e0){if(_0x4f00e0){return _0x4f00e0[_0x1349('0x37')](_0x1722e1)[_0x1349('0x20')](function(_0x5ccd11){return _0x5ccd11;});}return null;};}function removeEntity(_0xd84958,_0x347b68){return function(_0x141268){if(_0x141268){return _0x141268[_0x1349('0x38')]()['then'](function(){var _0x4effcd=_0x141268[_0x1349('0x39')]({'plain':!![]});var _0x4d6dde=_0x1349('0x3a');return db[_0x1349('0x3b')][_0x1349('0x38')]({'where':{'type':_0x4d6dde,'resourceId':_0x4effcd['id']}})['then'](function(){return _0x141268;});})[_0x1349('0x20')](function(){_0xd84958['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x14a813,_0x4ec385){return function(_0x3f2583){if(!_0x3f2583){_0x14a813[_0x1349('0x3c')](0x194);}return _0x3f2583;};}function handleError(_0x4c56cb,_0x226c34){_0x226c34=_0x226c34||0x1f4;return function(_0x13a583){logger['error'](_0x13a583[_0x1349('0x3d')]);if(_0x13a583[_0x1349('0x3e')]){delete _0x13a583[_0x1349('0x3e')];}_0x4c56cb[_0x1349('0x2b')](_0x226c34)[_0x1349('0x3f')](_0x13a583);};}exports[_0x1349('0x40')]=function(_0x3193ce,_0x2209af){var _0x1dab78={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x2ee548={},_0x125e9c={'count':0x0,'rows':[]};var _0x16fe75=_[_0x1349('0x41')](db['ChatWebsite'][_0x1349('0x42')],function(_0x4770b6){return{'name':_0x4770b6['fieldName'],'type':_0x4770b6[_0x1349('0x43')]['key']};});_0x2ee548[_0x1349('0x44')]=_[_0x1349('0x41')](_0x16fe75,'name');_0x2ee548['query']=_[_0x1349('0x45')](_0x3193ce['query']);_0x2ee548[_0x1349('0x46')]=_[_0x1349('0x47')](_0x2ee548[_0x1349('0x44')],_0x2ee548[_0x1349('0x48')]);_0x1dab78[_0x1349('0x49')]=_[_0x1349('0x47')](_0x2ee548['model'],qs[_0x1349('0x4a')](_0x3193ce[_0x1349('0x48')][_0x1349('0x4a')]));_0x1dab78['attributes']=_0x1dab78[_0x1349('0x49')][_0x1349('0x4b')]?_0x1dab78[_0x1349('0x49')]:_0x2ee548[_0x1349('0x44')];if(!_0x3193ce[_0x1349('0x48')]['hasOwnProperty'](_0x1349('0x4c'))){_0x1dab78[_0x1349('0x31')]=qs[_0x1349('0x31')](_0x3193ce[_0x1349('0x48')][_0x1349('0x31')]);_0x1dab78[_0x1349('0x2e')]=qs[_0x1349('0x2e')](_0x3193ce[_0x1349('0x48')][_0x1349('0x2e')]);}_0x1dab78['order']=qs[_0x1349('0x4d')](_0x3193ce[_0x1349('0x48')]['sort']);_0x1dab78['where']=qs[_0x1349('0x46')](_[_0x1349('0x4e')](_0x3193ce[_0x1349('0x48')],_0x2ee548[_0x1349('0x46')]),_0x16fe75);if(_0x3193ce[_0x1349('0x48')][_0x1349('0x4f')]){_0x1dab78[_0x1349('0x50')]=_[_0x1349('0x51')](_0x1dab78[_0x1349('0x50')],{'$or':_[_0x1349('0x41')](_0x16fe75,function(_0x341d82){if(_0x341d82['type']!==_0x1349('0x52')){var _0x38e4db={};_0x38e4db[_0x341d82[_0x1349('0x3e')]]={'$like':'%'+_0x3193ce[_0x1349('0x48')][_0x1349('0x4f')]+'%'};return _0x38e4db;}})});}_0x1dab78=_[_0x1349('0x51')]({},_0x1dab78,_0x3193ce[_0x1349('0x53')]);var _0x3ce1f1={'where':_0x1dab78[_0x1349('0x50')]};return db['ChatWebsite'][_0x1349('0x30')](_0x3ce1f1)[_0x1349('0x20')](function(_0x2446a7){_0x125e9c['count']=_0x2446a7;if(_0x3193ce[_0x1349('0x48')]['includeAll']){_0x1dab78[_0x1349('0x54')]=[{'all':!![]}];}return db[_0x1349('0x55')][_0x1349('0x56')](_0x1dab78);})[_0x1349('0x20')](function(_0x158998){_0x125e9c['rows']=_0x158998;return _0x125e9c;})['then'](respondWithFilteredResult(_0x2209af,_0x1dab78))['catch'](handleError(_0x2209af,null));};exports[_0x1349('0x57')]=function(_0x10055e,_0x15319d){var _0x271d08={'raw':![],'where':{'id':_0x10055e[_0x1349('0x58')]['id']},'include':[{'model':db[_0x1349('0x59')],'as':'mandatoryDispositionPause'}]},_0xd85c5={};_0xd85c5[_0x1349('0x44')]=_['keys'](db[_0x1349('0x55')][_0x1349('0x42')]);_0xd85c5[_0x1349('0x48')]=_[_0x1349('0x45')](_0x10055e[_0x1349('0x48')]);_0xd85c5[_0x1349('0x46')]=_[_0x1349('0x47')](_0xd85c5[_0x1349('0x44')],_0xd85c5[_0x1349('0x48')]);_0x271d08[_0x1349('0x49')]=_['intersection'](_0xd85c5[_0x1349('0x44')],qs[_0x1349('0x4a')](_0x10055e[_0x1349('0x48')][_0x1349('0x4a')]));_0x271d08[_0x1349('0x49')]=_0x271d08[_0x1349('0x49')][_0x1349('0x4b')]?_0x271d08[_0x1349('0x49')]:_0xd85c5['model'];if(_0x10055e[_0x1349('0x48')][_0x1349('0x5a')]){_0x271d08[_0x1349('0x54')]=[{'all':!![]}];}_0x271d08=_['merge']({},_0x271d08,_0x10055e[_0x1349('0x53')]);return db[_0x1349('0x55')][_0x1349('0x5b')](_0x271d08)['then'](handleEntityNotFound(_0x15319d,null))['then'](respondWithResult(_0x15319d,null))['catch'](handleError(_0x15319d,null));};exports[_0x1349('0x5c')]=function(_0x395411,_0x1efb0b){return db[_0x1349('0x55')]['create'](_0x395411[_0x1349('0x5d')],{})['then'](function(_0x1b65fb){var _0x1dda77=_0x395411['user'][_0x1349('0x39')]({'plain':!![]});if(!_0x1dda77)throw new Error(_0x1349('0x5e'));if(_0x1dda77[_0x1349('0x5f')]===_0x1349('0x60')){var _0x1191a3=_0x1b65fb['get']({'plain':!![]});var _0x2e1cb6='ChatWebsites';return db[_0x1349('0x61')][_0x1349('0x5b')]({'where':{'name':_0x2e1cb6,'userProfileId':_0x1dda77[_0x1349('0x62')]},'raw':!![]})[_0x1349('0x20')](function(_0x49892f){if(_0x49892f&&_0x49892f['autoAssociation']===0x0){return db[_0x1349('0x3b')]['create']({'name':_0x1191a3[_0x1349('0x3e')],'resourceId':_0x1191a3['id'],'type':_0x49892f[_0x1349('0x3e')],'sectionId':_0x49892f['id']},{})[_0x1349('0x20')](function(){return _0x1b65fb;});}else{return _0x1b65fb;}})[_0x1349('0x2a')](function(_0x35717e){logger[_0x1349('0x26')](_0x1349('0x63'),_0x35717e);throw _0x35717e;});}return _0x1b65fb;})[_0x1349('0x20')](respondWithResult(_0x1efb0b,0xc9))[_0x1349('0x2a')](handleError(_0x1efb0b,null));};exports['update']=function(_0x4461ef,_0x286660){if(_0x4461ef['body']['id']){delete _0x4461ef['body']['id'];}return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x4461ef['params']['id']},'include':[{'model':db['Pause'],'as':_0x1349('0x64')}]})['then'](handleEntityNotFound(_0x286660,null))[_0x1349('0x20')](saveUpdates(_0x4461ef[_0x1349('0x5d')],null))[_0x1349('0x20')](respondWithResult(_0x286660,null))[_0x1349('0x2a')](handleError(_0x286660,null));};exports[_0x1349('0x38')]=function(_0x4e5338,_0x56e74e){return db['ChatWebsite'][_0x1349('0x5b')]({'where':{'id':_0x4e5338[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x56e74e,null))[_0x1349('0x20')](removeEntity(_0x56e74e,null))[_0x1349('0x2a')](handleError(_0x56e74e,null));};exports['describe']=function(_0x36de7e,_0x222cbd){return db[_0x1349('0x55')]['describe']()['then'](respondWithResult(_0x222cbd,null))['catch'](handleError(_0x222cbd,null));};exports[_0x1349('0x65')]=function(_0x3a5269,_0x5efe17,_0x50a13a){if(_0x3a5269[_0x1349('0x5d')]['id']){delete _0x3a5269[_0x1349('0x5d')]['id'];}return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x3a5269[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x5efe17,null))[_0x1349('0x20')](function(_0xc5bcd4){if(_0xc5bcd4){_0x3a5269[_0x1349('0x5d')]['ChatWebsiteId']=_0xc5bcd4['id'];return db[_0x1349('0x66')]['create'](_0x3a5269[_0x1349('0x5d')]);}})[_0x1349('0x20')](respondWithResult(_0x5efe17,null))[_0x1349('0x2a')](handleError(_0x5efe17,null));};exports[_0x1349('0x67')]=function(_0x1c071b,_0x84976,_0x115605){var _0x58b113={'raw':![],'where':{}};var _0x3b9669={};var _0x3bad11={'count':0x0,'rows':[]};return db[_0x1349('0x55')][_0x1349('0x68')]({'where':{'id':_0x1c071b['params']['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x84976,null))[_0x1349('0x20')](function(_0x26ceb9){if(_0x26ceb9){_0x3b9669[_0x1349('0x44')]=_['keys'](db[_0x1349('0x66')][_0x1349('0x42')]);_0x3b9669[_0x1349('0x48')]=_[_0x1349('0x45')](_0x1c071b[_0x1349('0x48')]);_0x3b9669['filters']=_['intersection'](_0x3b9669[_0x1349('0x44')],_0x3b9669[_0x1349('0x48')]);_0x58b113[_0x1349('0x49')]=_[_0x1349('0x47')](_0x3b9669['model'],qs[_0x1349('0x4a')](_0x1c071b[_0x1349('0x48')][_0x1349('0x4a')]));_0x58b113[_0x1349('0x49')]=_0x58b113[_0x1349('0x49')][_0x1349('0x4b')]?_0x58b113[_0x1349('0x49')]:_0x3b9669[_0x1349('0x44')];if(!_0x1c071b[_0x1349('0x48')][_0x1349('0x69')](_0x1349('0x4c'))){_0x58b113['limit']=qs[_0x1349('0x31')](_0x1c071b[_0x1349('0x48')]['limit']);_0x58b113[_0x1349('0x2e')]=qs[_0x1349('0x2e')](_0x1c071b[_0x1349('0x48')]['offset']);}_0x58b113[_0x1349('0x6a')]=qs[_0x1349('0x4d')](_0x1c071b[_0x1349('0x48')][_0x1349('0x4d')]);_0x58b113[_0x1349('0x50')]=qs[_0x1349('0x46')](_[_0x1349('0x4e')](_0x1c071b[_0x1349('0x48')],_0x3b9669['filters']));_0x58b113[_0x1349('0x50')][_0x1349('0x6b')]=_0x26ceb9['id'];if(_0x1c071b[_0x1349('0x48')]['filter']){_0x58b113[_0x1349('0x50')]=_[_0x1349('0x51')](_0x58b113['where'],{'$or':_[_0x1349('0x41')](_0x58b113[_0x1349('0x49')],function(_0x4aaa1a){var _0xee89a9={};_0xee89a9[_0x4aaa1a]={'$like':'%'+_0x1c071b[_0x1349('0x48')][_0x1349('0x4f')]+'%'};return _0xee89a9;})});}_0x58b113=_[_0x1349('0x51')]({},_0x58b113,_0x1c071b[_0x1349('0x53')]);return db[_0x1349('0x66')]['count']({'where':_0x58b113[_0x1349('0x50')]})[_0x1349('0x20')](function(_0x47360f){_0x3bad11[_0x1349('0x30')]=_0x47360f;if(_0x1c071b[_0x1349('0x48')]['includeAll']){_0x58b113[_0x1349('0x54')]=[{'all':!![]}];}return db[_0x1349('0x66')][_0x1349('0x56')](_0x58b113);})[_0x1349('0x20')](function(_0x5000f8){_0x3bad11[_0x1349('0x6c')]=_0x5000f8;return _0x3bad11;});}})[_0x1349('0x20')](respondWithFilteredResult(_0x84976,_0x58b113))['catch'](handleError(_0x84976,null));};exports['removeDispositions']=function(_0x199cac,_0x4f3ea9,_0x10e037){return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x199cac[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x4f3ea9,null))[_0x1349('0x20')](function(_0x12b59b){if(_0x12b59b){return _0x12b59b[_0x1349('0x6d')](_0x199cac['query'][_0x1349('0x6e')]);}})['then'](respondWithStatusCode(_0x4f3ea9,null))[_0x1349('0x2a')](handleError(_0x4f3ea9,null));};exports[_0x1349('0x6f')]=function(_0x24b327,_0x5b781c,_0x48ee4f){if(_0x24b327[_0x1349('0x5d')]['id']){delete _0x24b327[_0x1349('0x5d')]['id'];}return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x24b327[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x5b781c,null))[_0x1349('0x20')](function(_0x287770){if(_0x287770){_0x24b327[_0x1349('0x5d')][_0x1349('0x6b')]=_0x287770['id'];return db[_0x1349('0x70')][_0x1349('0x5c')](_0x24b327[_0x1349('0x5d')]);}})[_0x1349('0x20')](respondWithResult(_0x5b781c,null))[_0x1349('0x2a')](handleError(_0x5b781c,null));};exports['getAnswers']=function(_0x556352,_0x4c7452,_0x497bc9){var _0x520d38={'raw':![],'where':{}};var _0x1b1a88={};var _0x30bcbf={'count':0x0,'rows':[]};return db[_0x1349('0x55')][_0x1349('0x68')]({'where':{'id':_0x556352[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x4c7452,null))[_0x1349('0x20')](function(_0xf6556f){if(_0xf6556f){_0x1b1a88[_0x1349('0x44')]=_[_0x1349('0x45')](db[_0x1349('0x70')][_0x1349('0x42')]);_0x1b1a88[_0x1349('0x48')]=_[_0x1349('0x45')](_0x556352['query']);_0x1b1a88['filters']=_[_0x1349('0x47')](_0x1b1a88['model'],_0x1b1a88[_0x1349('0x48')]);_0x520d38[_0x1349('0x49')]=_['intersection'](_0x1b1a88[_0x1349('0x44')],qs[_0x1349('0x4a')](_0x556352['query'][_0x1349('0x4a')]));_0x520d38['attributes']=_0x520d38['attributes'][_0x1349('0x4b')]?_0x520d38[_0x1349('0x49')]:_0x1b1a88[_0x1349('0x44')];if(!_0x556352[_0x1349('0x48')][_0x1349('0x69')](_0x1349('0x4c'))){_0x520d38[_0x1349('0x31')]=qs[_0x1349('0x31')](_0x556352['query']['limit']);_0x520d38[_0x1349('0x2e')]=qs[_0x1349('0x2e')](_0x556352[_0x1349('0x48')][_0x1349('0x2e')]);}_0x520d38[_0x1349('0x6a')]=qs[_0x1349('0x4d')](_0x556352['query'][_0x1349('0x4d')]);_0x520d38[_0x1349('0x50')]=qs['filters'](_['pick'](_0x556352['query'],_0x1b1a88[_0x1349('0x46')]));_0x520d38[_0x1349('0x50')][_0x1349('0x6b')]=_0xf6556f['id'];if(_0x556352[_0x1349('0x48')][_0x1349('0x4f')]){_0x520d38[_0x1349('0x50')]=_[_0x1349('0x51')](_0x520d38[_0x1349('0x50')],{'$or':_['map'](_0x520d38['attributes'],function(_0x54d12d){var _0x4ef023={};_0x4ef023[_0x54d12d]={'$like':'%'+_0x556352['query'][_0x1349('0x4f')]+'%'};return _0x4ef023;})});}_0x520d38=_[_0x1349('0x51')]({},_0x520d38,_0x556352[_0x1349('0x53')]);return db[_0x1349('0x70')][_0x1349('0x30')]({'where':_0x520d38['where']})[_0x1349('0x20')](function(_0x290ad2){_0x30bcbf[_0x1349('0x30')]=_0x290ad2;if(_0x556352['query']['includeAll']){_0x520d38[_0x1349('0x54')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x520d38);})[_0x1349('0x20')](function(_0x882691){_0x30bcbf[_0x1349('0x6c')]=_0x882691;return _0x30bcbf;});}})['then'](respondWithFilteredResult(_0x4c7452,_0x520d38))['catch'](handleError(_0x4c7452,null));};exports[_0x1349('0x71')]=function(_0x41cbc8,_0x28fb58,_0x357ec8){return db['ChatWebsite'][_0x1349('0x5b')]({'where':{'id':_0x41cbc8[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x28fb58,null))[_0x1349('0x20')](function(_0x423d6d){if(_0x423d6d){return _0x423d6d[_0x1349('0x71')](_0x41cbc8[_0x1349('0x48')]['ids']);}})[_0x1349('0x20')](respondWithStatusCode(_0x28fb58,null))[_0x1349('0x2a')](handleError(_0x28fb58,null));};exports[_0x1349('0x72')]=function(_0x230499,_0xaffac0,_0x500919){_0x230499[_0x1349('0x5d')][_0x1349('0x73')]=_0x230499[_0x1349('0x74')][_0x1349('0x75')];return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x230499[_0x1349('0x58')]['id']}})['then'](handleEntityNotFound(_0xaffac0,null))[_0x1349('0x20')](saveUpdates(_0x230499[_0x1349('0x5d')],null))[_0x1349('0x20')](respondWithResult(_0xaffac0,null))[_0x1349('0x2a')](handleError(_0xaffac0,null));};exports[_0x1349('0x76')]=function(_0x4221fd,_0x30d2c0,_0x517aca){_0x4221fd['body'][_0x1349('0x77')]=_0x4221fd['file'][_0x1349('0x75')];return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x4221fd[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x30d2c0,null))[_0x1349('0x20')](saveUpdates(_0x4221fd['body'],null))[_0x1349('0x20')](respondWithResult(_0x30d2c0,null))[_0x1349('0x2a')](handleError(_0x30d2c0,null));};exports[_0x1349('0x78')]=function(_0x516acf,_0x33c605,_0x1e8388){_0x516acf[_0x1349('0x5d')]['customerAvatar']=_0x516acf[_0x1349('0x74')][_0x1349('0x75')];return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x516acf[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x33c605,null))['then'](saveUpdates(_0x516acf[_0x1349('0x5d')],null))[_0x1349('0x20')](respondWithResult(_0x33c605,null))[_0x1349('0x2a')](handleError(_0x33c605,null));};exports[_0x1349('0x79')]=function(_0x4b9ca4,_0x136d19,_0x567c65){_0x4b9ca4[_0x1349('0x5d')][_0x1349('0x7a')]=_0x4b9ca4[_0x1349('0x74')]['filename'];return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x4b9ca4[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x136d19,null))[_0x1349('0x20')](saveUpdates(_0x4b9ca4[_0x1349('0x5d')],null))[_0x1349('0x20')](respondWithResult(_0x136d19,null))[_0x1349('0x2a')](handleError(_0x136d19,null));};exports[_0x1349('0x7b')]=function(_0x1aed62,_0x1e6c7a,_0x138420){var _0x2c717b=path['join'](config[_0x1349('0x7c')],_0x1349('0x7d'));var _0x36f5c6={'where':{'id':_0x1aed62[_0x1349('0x58')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x1ebbf1=![];return require(_0x1349('0x17'))[_0x1349('0x7e')]()['then'](function(_0x546efc){if(_0x546efc){_0x1ebbf1=_0x546efc[_0x1349('0x7f')];}})[_0x1349('0x20')](function(){return db['ChatWebsite'][_0x1349('0x5b')](_0x36f5c6);})[_0x1349('0x20')](handleEntityNotFound(_0x1e6c7a,null))[_0x1349('0x20')](function(_0x21a806){if(_0x21a806){if(!_['isNil'](_0x21a806['sitepic'])){if(fs[_0x1349('0x80')](path[_0x1349('0x81')](config['root'],_0x1349('0x82'),_0x21a806['sitepic']))&&_0x1ebbf1){_0x2c717b=path[_0x1349('0x81')](config[_0x1349('0x7c')],'server/files/images/logos/',_0x21a806[_0x1349('0x73')]);}}return _0x1e6c7a[_0x1349('0x83')](_0x2c717b);}})[_0x1349('0x2a')](handleError(_0x1e6c7a,null));};exports[_0x1349('0x84')]=function(_0x30c378,_0x206626,_0x464f84){var _0x5c724b=path[_0x1349('0x81')](config[_0x1349('0x7c')],_0x1349('0x85'));var _0x2c1d90={'where':{'id':_0x30c378[_0x1349('0x58')]['id']},'attributes':['id',_0x1349('0x77')],'raw':!![]};return db['ChatWebsite'][_0x1349('0x5b')](_0x2c1d90)['then'](handleEntityNotFound(_0x206626,null))[_0x1349('0x20')](function(_0x4491d4){if(_0x4491d4){if(!_[_0x1349('0x86')](_0x4491d4[_0x1349('0x77')])){if(fs[_0x1349('0x80')](path[_0x1349('0x81')](config[_0x1349('0x7c')],_0x1349('0x87'),_0x4491d4[_0x1349('0x77')]))){_0x5c724b=path[_0x1349('0x81')](config[_0x1349('0x7c')],'server/files/images/avatars/',_0x4491d4[_0x1349('0x77')]);}}return _0x206626[_0x1349('0x83')](_0x5c724b);}})[_0x1349('0x2a')](handleError(_0x206626,null));};exports[_0x1349('0x88')]=function(_0x1c636d,_0x5437cb,_0x17556c){var _0x474b7e=path[_0x1349('0x81')](config[_0x1349('0x7c')],_0x1349('0x89'));var _0x1bfae7={'where':{'id':_0x1c636d['params']['id']},'attributes':['id',_0x1349('0x8a'),_0x1349('0x8b')],'raw':!![]};return db[_0x1349('0x55')][_0x1349('0x5b')](_0x1bfae7)[_0x1349('0x20')](handleEntityNotFound(_0x5437cb,null))[_0x1349('0x20')](function(_0x49431f){if(_0x49431f){if(!_[_0x1349('0x86')](_0x49431f['customerAvatar'])){if(fs['existsSync'](path['join'](config[_0x1349('0x7c')],_0x1349('0x87'),_0x49431f[_0x1349('0x8a')]))&&_0x49431f['showCustomerAvatar']){_0x474b7e=path[_0x1349('0x81')](config[_0x1349('0x7c')],_0x1349('0x87'),_0x49431f[_0x1349('0x8a')]);}}return _0x5437cb[_0x1349('0x83')](_0x474b7e);}})[_0x1349('0x2a')](handleError(_0x5437cb,null));};exports['getSystemAvatar']=function(_0x448628,_0x3975fc,_0x3cc669){var _0x1be09c=path[_0x1349('0x81')](config['root'],_0x1349('0x8c'));var _0x1a6644={'where':{'id':_0x448628['params']['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x1349('0x55')]['find'](_0x1a6644)[_0x1349('0x20')](handleEntityNotFound(_0x3975fc,null))[_0x1349('0x20')](function(_0x195c8d){if(_0x195c8d){if(!_['isNil'](_0x195c8d['systemAvatar'])){if(fs['existsSync'](path[_0x1349('0x81')](config[_0x1349('0x7c')],_0x1349('0x87'),_0x195c8d[_0x1349('0x7a')]))){_0x1be09c=path[_0x1349('0x81')](config['root'],_0x1349('0x87'),_0x195c8d[_0x1349('0x7a')]);}}return _0x3975fc[_0x1349('0x83')](_0x1be09c);}})[_0x1349('0x2a')](handleError(_0x3975fc,null));};exports[_0x1349('0x8d')]=function(_0x5c49a2,_0x256e60,_0x1f7a0d){var _0x2f7dab=require(_0x1349('0x8e'));var _0x41d345=new _0x2f7dab();var _0x460764=_0x41d345['setUA'](_0x5c49a2[_0x1349('0x8f')][_0x1349('0x90')])[_0x1349('0x91')]();var _0x34021b={'body':_0x5c49a2[_0x1349('0x5d')],'channel':_0x1349('0x92')};var _0x4c88ff=[];var _0x346caf=[];var _0x4d20ef={};var _0x2b37e5=![];return db['CmContact'][_0x1349('0x93')]()[_0x1349('0x20')](function(_0x2434ca){if(!_0x2434ca){throw new db[(_0x1349('0x94'))][(_0x1349('0x95'))](_0x1349('0x96'));}_0x4c88ff=_[_0x1349('0x97')](_[_0x1349('0x45')](_0x2434ca),[_0x1349('0x98'),'updatedAt']);_0x346caf=_['difference'](_[_0x1349('0x45')](_0x2434ca),[_0x1349('0x98'),_0x1349('0x99'),_0x1349('0x9a'),_0x1349('0x9b')]);if(_0x5c49a2[_0x1349('0x5d')]['id']){delete _0x5c49a2[_0x1349('0x5d')]['id'];}if(_[_0x1349('0x86')](_0x5c49a2[_0x1349('0x5d')]['from'])){throw new db[(_0x1349('0x94'))][(_0x1349('0x95'))](_0x1349('0x9c'));}if(_[_0x1349('0x86')](_0x5c49a2[_0x1349('0x5d')]['body'])||_0x5c49a2['body'][_0x1349('0x5d')]===''){throw new db['Sequelize'][(_0x1349('0x95'))](_0x1349('0x9d'));}if(_[_0x1349('0x86')](_0x5c49a2[_0x1349('0x5d')][_0x1349('0x9e')])){throw new db[(_0x1349('0x94'))]['ValidationError'](_0x1349('0x9f')+_0x346caf);}if(!_['includes'](_0x346caf,_0x5c49a2['body'][_0x1349('0x9e')])){throw new db[(_0x1349('0x94'))][(_0x1349('0x95'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x346caf);}_0x4d20ef[_0x5c49a2[_0x1349('0x5d')]['mapKey']]=_0x5c49a2['body'][_0x1349('0xa0')];})[_0x1349('0x20')](function(){return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x5c49a2[_0x1349('0x58')]['id']},'include':[{'model':db[_0x1349('0xa1')],'as':_0x1349('0xa2'),'include':[{'model':db['CmContact'],'as':_0x1349('0xa3'),'where':_0x4d20ef,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x1349('0xa4')],'as':_0x1349('0xa5')}]});})[_0x1349('0x20')](handleEntityNotFound(_0x256e60,null))[_0x1349('0x20')](function(_0x3e6d8a){if(_0x3e6d8a&&_0x3e6d8a['List']){_0x34021b[_0x1349('0xa6')]=_0x3e6d8a;_0x34021b[_0x1349('0xa7')]=_0x3e6d8a['Applications'];_0x34021b['list']=_0x3e6d8a[_0x1349('0xa2')];_0x34021b[_0x1349('0xa7')]=_['orderBy'](_0x34021b[_0x1349('0xa7')],[_0x1349('0xa8')],[_0x1349('0xa9')]);if(_0x34021b['account'][_0x1349('0xa5')]){delete _0x34021b[_0x1349('0xa6')][_0x1349('0xa5')];}if(_0x34021b[_0x1349('0xa6')]['List']&&_0x34021b[_0x1349('0xa6')][_0x1349('0xa2')][_0x1349('0xa3')][_0x1349('0x4b')]){return _0x34021b[_0x1349('0xa6')][_0x1349('0xa2')]['Contacts'][0x0];}var _0x213595=_[_0x1349('0x18')](_0x5c49a2['body'],{'firstName':_0x5c49a2[_0x1349('0x5d')][_0x1349('0xa0')],'ListId':_0x3e6d8a[_0x1349('0x9b')]});_0x213595[_0x5c49a2[_0x1349('0x5d')][_0x1349('0x9e')]]=_0x5c49a2[_0x1349('0x5d')]['from'];return db['CmContact'][_0x1349('0x5c')](_0x213595,{'fields':_0x4c88ff,'raw':!![]});}})['then'](handleEntityNotFound(_0x256e60,null))[_0x1349('0x20')](function(_0x30ab91){_0x34021b[_0x1349('0xaa')]=_0x30ab91;var _0x3bacde=_0x5c49a2[_0x1349('0x5d')][_0x1349('0xab')];if(_0x5c49a2[_0x1349('0x8f')][_0x1349('0xac')]){_0x3bacde=_0x5c49a2['headers'][_0x1349('0xac')];}else if(_0x5c49a2[_0x1349('0x8f')]['x-forwarded-for']){_0x3bacde=_[_0x1349('0xad')](_0x5c49a2[_0x1349('0x8f')][_0x1349('0xae')][_0x1349('0xaf')](','));}if(_0x30ab91){var _0x71ac7c={'ContactId':_0x30ab91['id'],'ChatWebsiteId':_0x5c49a2[_0x1349('0x58')]['id'],'from':(_0x30ab91['firstName']||'')+'\x20'+(_0x30ab91[_0x1349('0xb0')]||''),'customerIp':_0x3bacde,'customerPort':_0x5c49a2['headers'][_0x1349('0xb1')]?_0x5c49a2[_0x1349('0x8f')][_0x1349('0xb1')]:null,'referer':_0x5c49a2[_0x1349('0x5d')]['referer'],'browserName':_0x460764[_0x1349('0xb2')][_0x1349('0x3e')]&&_0x460764[_0x1349('0xb2')][_0x1349('0xb3')]?util[_0x1349('0xb4')](_0x1349('0xb5'),_0x460764[_0x1349('0xb2')][_0x1349('0x3e')],_0x460764[_0x1349('0xb2')][_0x1349('0xb3')]):_0x1349('0xb6'),'browserVersion':_0x460764['browser'][_0x1349('0xb3')]||'unknown','osName':util[_0x1349('0xb4')]('%s\x20%s',_0x460764['os'][_0x1349('0x3e')],_0x460764['os'][_0x1349('0xb3')]),'osVersion':_0x460764['os']['version'],'deviceModel':_0x460764[_0x1349('0xb7')][_0x1349('0x44')]&&_0x460764[_0x1349('0xb7')]['vendor']?util['format']('%s\x20%s\x20%s',_0x460764[_0x1349('0xb7')]['model'],_0x460764[_0x1349('0xb7')][_0x1349('0xb8')],_0x460764[_0x1349('0xb7')][_0x1349('0x43')]):null,'deviceVendor':_0x460764[_0x1349('0xb7')]['vendor'],'deviceType':_0x460764[_0x1349('0xb7')][_0x1349('0x43')],'formData':JSON['stringify'](_0x5c49a2[_0x1349('0x5d')])};var _0x556cd5={'ChatWebsiteId':_0x5c49a2['params']['id'],'closed':![]};if(_0x5c49a2[_0x1349('0x5d')][_0x1349('0xb9')]){_0x556cd5[_0x1349('0xb9')]=_0x5c49a2['body'][_0x1349('0xb9')];return db[_0x1349('0xba')][_0x1349('0x5b')]({'where':_0x556cd5})[_0x1349('0x20')](function(_0x3d690d){if(_0x3d690d){return[_0x3d690d,![]];}_0x71ac7c['threadId']=_0x5c49a2[_0x1349('0x5d')][_0x1349('0xb9')];_0x71ac7c[_0x1349('0xbb')]=_0x5c49a2[_0x1349('0x5d')][_0x1349('0xbb')];return db[_0x1349('0xba')]['create'](_0x71ac7c)[_0x1349('0x20')](function(_0x5a43f1){return[_0x5a43f1,!![]];});});}_0x556cd5[_0x1349('0xbc')]=_0x30ab91['id'];if(_0x5c49a2[_0x1349('0x5d')][_0x1349('0xbd')]&&_0x5c49a2[_0x1349('0x5d')]['interaction']['id']){_0x556cd5['id']=_0x5c49a2['body'][_0x1349('0xbd')]['id'];return db[_0x1349('0xba')][_0x1349('0x5b')]({'where':_0x556cd5})[_0x1349('0x20')](function(_0x30c60c){if(_0x30c60c){return[_0x30c60c,![]];}return db['ChatInteraction'][_0x1349('0x5c')](_0x71ac7c)[_0x1349('0x20')](function(_0x76b0a){return[_0x76b0a,!![]];});});}return db[_0x1349('0xba')][_0x1349('0x5c')](_0x71ac7c)[_0x1349('0x20')](function(_0x2e7a69){return[_0x2e7a69,!![]];});}})[_0x1349('0xbe')](function(_0x394e63,_0x392383){if(_0x394e63){_0x2b37e5=_0x392383;if(!_0x392383){var _0x296688={'from':(_0x34021b[_0x1349('0xaa')][_0x1349('0xbf')]||'')+'\x20'+(_0x34021b['contact'][_0x1349('0xb0')]||'')};if(_0x5c49a2['body']['threadId']&&_0x5c49a2[_0x1349('0x5d')][_0x1349('0xc0')]&&_0x5c49a2[_0x1349('0x5d')][_0x1349('0xb9')]!=_0x5c49a2['body'][_0x1349('0xc0')]){_0x296688['threadId']=_0x5c49a2['body'][_0x1349('0xc0')];}return _0x394e63[_0x1349('0x37')](_0x296688);}else{return _0x394e63;}}})[_0x1349('0x20')](function(_0x3a5cd7){_0x34021b[_0x1349('0xbd')]=_0x3a5cd7['get']({'plain':!![]});_0x34021b['interaction'][_0x1349('0xc1')]=_0x2b37e5;if(_0x34021b['interaction'][_0x1349('0xc1')]){if(_0x34021b[_0x1349('0xa6')][_0x1349('0xc2')]){_0x34021b[_0x1349('0xa7')][_0x1349('0xc3')]({'id':0x0,'priority':_0x34021b['applications'][_0x1349('0x4b')]+0x1,'app':_0x1349('0xc4'),'appdata':_0x1349('0xc5'),'interval':_0x1349('0xc6')});}}return db[_0x1349('0xc7')][_0x1349('0x5c')]({'body':_0x5c49a2['body'][_0x1349('0x5d')],'ChatWebsiteId':_0x5c49a2[_0x1349('0x58')]['id'],'ChatInteractionId':_0x3a5cd7['id'],'direction':'in','ContactId':_0x34021b[_0x1349('0xaa')]['id'],'AttachmentId':_0x5c49a2[_0x1349('0x5d')]['AttachmentId']});})[_0x1349('0x20')](function(_0x15935e){_0x34021b[_0x1349('0x27')]=_0x15935e;if(_0x34021b['interaction']['UserId']){return db[_0x1349('0xc8')][_0x1349('0x5b')]({'attributes':['id','name'],'where':{'id':_0x34021b[_0x1349('0xbd')][_0x1349('0xc9')]}})['then'](function(_0x1caf88){if(_0x1caf88){_0x34021b['applications'][_0x1349('0xca')]({'id':0x0,'priority':0x0,'app':_0x1349('0xcb'),'appdata':_0x1caf88[_0x1349('0x3e')]+','+(_0x34021b[_0x1349('0xa6')][_0x1349('0xcc')]||0xa),'interval':'*,*,*,*'});_0x34021b[_0x1349('0xcd')]=!![];}return respondWithRpcPromise(_0x1349('0xce'),_0x1349('0xcf'),_0x34021b);});}return respondWithRpcPromise(_0x1349('0xce'),_0x1349('0xcf'),_0x34021b);})['then'](function(_0x40d894){respondWithRpcPromise(_0x1349('0xd0'),'EventManager',{'event':'notify','message':_0x40d894},client9002);return _0x40d894;})[_0x1349('0x20')](respondWithResult(_0x256e60,null))[_0x1349('0x2a')](handleError(_0x256e60,null));};exports[_0x1349('0xd1')]=function(_0x347ad2,_0x142ca6,_0x2913c2){var _0xd0bc5f,_0x48c301,_0x13536c;var _0xb2bb67=[];var _0x1b664e=[];var _0xf37e2d={};var _0x548550=_0x347ad2['files']||[];var _0x242c07=[];var _0x379136;return db[_0x1349('0xd2')][_0x1349('0x93')]()[_0x1349('0x20')](function(_0x1bb5e1){if(!_0x1bb5e1){throw new db[(_0x1349('0x94'))]['ValidationError'](_0x1349('0x96'));}_0x1b664e=_[_0x1349('0x97')](_[_0x1349('0x45')](_0x1bb5e1),[_0x1349('0x98'),_0x1349('0x99')]);_0xb2bb67=_[_0x1349('0x97')](_['keys'](_0x1bb5e1),[_0x1349('0x98'),_0x1349('0x99'),_0x1349('0x9a'),_0x1349('0x9b')]);if(_0x347ad2[_0x1349('0x5d')]['id']){delete _0x347ad2[_0x1349('0x5d')]['id'];}if(_['isNil'](_0x347ad2['body']['from'])){throw _0x142ca6[_0x1349('0x2b')](0x1f4)[_0x1349('0x3f')](new db[(_0x1349('0x94'))][(_0x1349('0x95'))](_0x1349('0x9c')));}if(_[_0x1349('0x86')](_0x347ad2[_0x1349('0x5d')][_0x1349('0x5d')])||_0x347ad2[_0x1349('0x5d')][_0x1349('0x5d')]===''){throw _0x142ca6[_0x1349('0x2b')](0x1f4)[_0x1349('0x3f')](new db['Sequelize'][(_0x1349('0x95'))](_0x1349('0x9d')));}if(_[_0x1349('0x86')](_0x347ad2[_0x1349('0x5d')]['mapKeyOffline'])){throw _0x142ca6[_0x1349('0x2b')](0x1f4)[_0x1349('0x3f')](new db['Sequelize']['ValidationError']('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xb2bb67));}if(!_['includes'](_0xb2bb67,_0x347ad2[_0x1349('0x5d')][_0x1349('0xd3')])){throw _0x142ca6[_0x1349('0x2b')](0x1f4)[_0x1349('0x3f')](new db[(_0x1349('0x94'))][(_0x1349('0x95'))](_0x1349('0xd4')+_0xb2bb67));}_0xf37e2d[_0x347ad2['body'][_0x1349('0xd3')]]=_0x347ad2[_0x1349('0x5d')][_0x1349('0xa0')];})['then'](function(){return db[_0x1349('0x55')]['find']({'where':{'id':_0x347ad2['params']['id']},'include':[{'model':db[_0x1349('0xa1')],'as':_0x1349('0xa2')},{'model':db['MailAccount'],'as':_0x1349('0xd5')}]});})['then'](handleEntityNotFound(_0x142ca6,null))['then'](function(_0x1ad48e){if(_0x1ad48e&&_0x1ad48e[_0x1349('0xa2')]){_0x48c301=_0x1ad48e;var _0x416c15=_['defaults'](_0x347ad2['body'],{'firstName':_0x347ad2[_0x1349('0x5d')][_0x1349('0xa0')],'phone':_0x347ad2[_0x1349('0x5d')][_0x1349('0xa0')],'ListId':_0x1ad48e[_0x1349('0x9b')]});_0x416c15[_0x347ad2[_0x1349('0x5d')][_0x1349('0xd3')]]=_0x347ad2[_0x1349('0x5d')]['from'];return db[_0x1349('0xd2')][_0x1349('0xd6')]({'where':_0xf37e2d,'defaults':_0x416c15});}})[_0x1349('0xbe')](function(_0x542eb4){if(_0x542eb4){_0x13536c=_0x542eb4;var _0x3e031e=fs[_0x1349('0xd7')](path[_0x1349('0x81')](config[_0x1349('0x7c')],_0x1349('0xd8')),'utf8');var _0x3b2a16=ejs['render'](_0x3e031e,{'body':_[_0x1349('0xd9')](_0x347ad2[_0x1349('0x5d')][_0x1349('0x5d')]),'bodyTitle':_0x48c301[_0x1349('0xda')]});return db[_0x1349('0xdb')][_0x1349('0x5c')]({'body':_0x3b2a16,'ContactId':_0x542eb4['id'],'ChatWebsiteId':_0x48c301['id']});}})[_0x1349('0x20')](function(_0x1b77aa){_0x379136=_0x1b77aa;if(_0x548550['length']){var _0x89a7d3=_0x548550[_0x1349('0x41')](function(_0x45d5fc){return{'name':_0x45d5fc[_0x1349('0xdc')],'basename':_0x45d5fc[_0x1349('0x75')],'type':_0x45d5fc['mimetype'],'ChatOfflineMessageId':_0x1b77aa['id']};});_0x242c07=_0x89a7d3[_0x1349('0x41')](_0x574283=>{var _0x35e92e={'filename':_0x574283[_0x1349('0x3e')],'path':path[_0x1349('0x81')](config[_0x1349('0x7c')],'server',_0x1349('0xdd'),_0x1349('0xde'),_0x1349('0xdf'),_0x574283[_0x1349('0xe0')])};return _0x35e92e;});if(!_0x48c301['openNewInteraction']){return db[_0x1349('0xe1')]['transaction'](function(_0x5a00cb){return db[_0x1349('0xe2')][_0x1349('0xe3')](_0x89a7d3,{'transaction':_0x5a00cb});});}}})[_0x1349('0x20')](function(){if(_0x379136){_0xd0bc5f=_0x379136;return db[_0x1349('0xd5')][_0x1349('0x68')]({'where':{'active':!![]},'include':[{'model':db[_0x1349('0xe4')],'as':'Smtp','raw':!![]}]});}})['then'](function(_0x2914ff){if(_0x2914ff&&_0x2914ff[_0x1349('0xe5')]&&_0x48c301[_0x1349('0xe6')]&&_0x48c301[_0x1349('0xe7')]){var _0x36417c={'tls':{'rejectUnauthorized':![]}};if(_0x2914ff[_0x1349('0xe5')][_0x1349('0xe8')]){_0x36417c[_0x1349('0xe8')]=_0x2914ff['Smtp']['service'];}else{_0x36417c['host']=_0x2914ff[_0x1349('0xe5')][_0x1349('0xe9')];_0x36417c[_0x1349('0xea')]=_0x2914ff[_0x1349('0xe5')][_0x1349('0xea')];_0x36417c['secure']=_0x2914ff[_0x1349('0xe5')][_0x1349('0xeb')];}if(_0x2914ff['Smtp'][_0x1349('0xec')]){_0x36417c['auth']={'user':_0x2914ff[_0x1349('0xe5')][_0x1349('0x60')],'pass':_0x2914ff[_0x1349('0xe5')][_0x1349('0xed')]};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x36417c,'message':{'from':util[_0x1349('0xb4')](_0x1349('0xee'),_0x2914ff[_0x1349('0x3e')],_0x2914ff[_0x1349('0xef')]||_0x2914ff[_0x1349('0xe5')][_0x1349('0x60')]),'to':_0x48c301[_0x1349('0xe7')],'subject':_0x48c301[_0x1349('0xf0')],'html':_0xd0bc5f['body'],'attachments':_0x242c07}},client9003)[_0x1349('0x20')](function(){return _0xd0bc5f;})['catch'](function(_0x26ca3a){console[_0x1349('0x26')](_0x26ca3a);});}})[_0x1349('0x20')](function(){if(_0x48c301&&_0x48c301[_0x1349('0xf1')]&&_0x48c301['MailAccountId']){var _0x1fbe9c=[];if(_0x548550['length']){_0x1fbe9c=_0x548550[_0x1349('0x41')](function(_0xfad468){return{'name':_0xfad468['originalname'],'basename':_0xfad468[_0x1349('0x75')],'type':_0xfad468['mimetype'],'ChatOfflineMessageId':_0x379136['id']};});}var _0xbaf9fd;if(!_[_0x1349('0x86')](_0x48c301[_0x1349('0xf2')])){var _0x587e80=_[_0x1349('0x41')](_0x347ad2[_0x1349('0x5d')],function(_0x3e4048){return _0x3e4048;});var _0x19dc51=_[_0x1349('0xf3')](_0x587e80)[0x0];var _0x5773c6=_['mapValues'](_0x19dc51,function(_0x27867c){return _0x27867c;});_0xbaf9fd=_0x5773c6[0x1][_0x48c301[_0x1349('0xf2')]];}var _0x23039c={'from':_0x13536c[_0x1349('0xef')],'firstName':_0x13536c[_0x1349('0xbf')],'lastName':_0x13536c[_0x1349('0xb0')],'mapKey':'email','message':{'from':_0x13536c['email'],'to':_0x48c301['MailAccount'][_0x1349('0xef')],'cc':'','subject':_['isNil'](_0xbaf9fd)?_0x48c301['offlineMessageSubject']:_0xbaf9fd,'messageId':'','sentAt':new Date(),'attach':_0x1fbe9c[_0x1349('0x4b')],'attachments':_0x1fbe9c,'originChannel':'Chat','ChatWebsiteId':_0x48c301['id'],'ChatOfflineMessageId':_0xd0bc5f['id'],'originTo':_0x48c301[_0x1349('0xd5')][_0x1349('0xef')]},'body':_0xd0bc5f['body']};var _0x493b1c={'account':{'id':_0x48c301['MailAccountId']},'body':_0x23039c,'log':_0x1349('0xf4')};return respondWithRpcPromise('NotifyMailAccount','notifyMail',_0x493b1c,client9001)['then'](function(){return _0xd0bc5f;})[_0x1349('0x2a')](function(_0x347de2){console[_0x1349('0x26')](_0x347de2);});}return;})['then'](function(){if(_0xd0bc5f){return _0xd0bc5f;}})[_0x1349('0x20')](respondWithResult(_0x142ca6,null))[_0x1349('0x2a')](function(_0x141006){console[_0x1349('0x26')](_0x1349('0x2a'),_0x141006);for(var _0x3b7548 of _0x548550){var _0x39939f=path[_0x1349('0x81')](config[_0x1349('0x7c')],_0x1349('0xf5'),'files',_0x1349('0xde'),_0x1349('0xdf'),_0x3b7548['filename']);fs_extra[_0x1349('0xf6')](_0x39939f)[_0x1349('0x2a')](function(_0x57593b){console['error'](_0x1349('0xf7'),_0x39939f,_0x57593b);});}});};exports[_0x1349('0xf8')]=function(_0x4f5901,_0x1ff2b,_0x2ed19f){return db[_0x1349('0xba')][_0x1349('0x5b')]({'where':{'id':_0x4f5901[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x1ff2b,null))[_0x1349('0x20')](function(_0x4235a2){if(_0x4235a2){return _0x4235a2[_0x1349('0xf8')](_0x4f5901['body'][_0x1349('0x6e')],_['omit'](_0x4f5901[_0x1349('0x5d')],[_0x1349('0x6e'),'id'])||{});}})['then'](respondWithResult(_0x1ff2b,null))[_0x1349('0x2a')](handleError(_0x1ff2b,null));};exports['getInteractions']=function(_0xc6e890,_0x29d91d,_0xbb37e7){var _0x365473={'raw':![],'where':{}};var _0x488441={};var _0x2f0b96={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x1349('0x68')]({'where':{'id':_0xc6e890['params']['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x29d91d,null))[_0x1349('0x20')](function(_0x3b16b0){if(_0x3b16b0){_0x488441[_0x1349('0x44')]=_[_0x1349('0x45')](db[_0x1349('0xba')][_0x1349('0x42')]);_0x488441['query']=_['keys'](_0xc6e890[_0x1349('0x48')]);_0x488441[_0x1349('0x46')]=_[_0x1349('0x47')](_0x488441[_0x1349('0x44')],_0x488441['query']);_0x365473[_0x1349('0x49')]=_[_0x1349('0x47')](_0x488441['model'],qs['fields'](_0xc6e890[_0x1349('0x48')][_0x1349('0x4a')]));_0x365473['attributes']=_0x365473[_0x1349('0x49')][_0x1349('0x4b')]?_0x365473[_0x1349('0x49')]:_0x488441[_0x1349('0x44')];if(!_0xc6e890[_0x1349('0x48')][_0x1349('0x69')](_0x1349('0x4c'))){_0x365473[_0x1349('0x31')]=qs['limit'](_0xc6e890[_0x1349('0x48')]['limit']);_0x365473['offset']=qs[_0x1349('0x2e')](_0xc6e890[_0x1349('0x48')][_0x1349('0x2e')]);}_0x365473[_0x1349('0x6a')]=qs[_0x1349('0x4d')](_0xc6e890[_0x1349('0x48')]['sort']);_0x365473[_0x1349('0x50')]=qs['filters'](_[_0x1349('0x4e')](_0xc6e890[_0x1349('0x48')],_0x488441[_0x1349('0x46')]));_0x365473[_0x1349('0x50')][_0x1349('0x6b')]=_0x3b16b0['id'];if(_0xc6e890['query'][_0x1349('0x4f')]){_0x365473['where']=_[_0x1349('0x51')](_0x365473[_0x1349('0x50')],{'$or':_[_0x1349('0x41')](_0x365473['attributes'],function(_0xa8c223){var _0x21ebc1={};_0x21ebc1[_0xa8c223]={'$like':'%'+_0xc6e890['query'][_0x1349('0x4f')]+'%'};return _0x21ebc1;})});}_0x365473=_[_0x1349('0x51')]({},_0x365473,_0xc6e890['options']);return db['ChatInteraction'][_0x1349('0x30')]({'where':_0x365473[_0x1349('0x50')]})['then'](function(_0x3829f0){_0x2f0b96[_0x1349('0x30')]=_0x3829f0;if(_0xc6e890['query'][_0x1349('0x5a')]){_0x365473['include']=[{'model':db[_0x1349('0xd2')],'as':_0x1349('0xf9'),'required':![]},{'model':db[_0x1349('0xc8')],'as':'Owner','attributes':[_0x1349('0x3e'),_0x1349('0xfa'),_0x1349('0xfb')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x1349('0x3e'),_0x1349('0xfc')],'where':_0xc6e890[_0x1349('0x48')][_0x1349('0xfd')]?{'id':_0xc6e890[_0x1349('0x48')]['tag']}:undefined,'required':_0xc6e890[_0x1349('0x48')][_0x1349('0xfd')]?!![]:![]}];}return db[_0x1349('0xba')]['findAll'](_0x365473);})[_0x1349('0x20')](function(_0x2b47d3){_0x2f0b96[_0x1349('0x6c')]=_0x2b47d3;return _0x2f0b96;});}})[_0x1349('0x20')](respondWithFilteredResult(_0x29d91d,_0x365473))['catch'](handleError(_0x29d91d,null));};function iftimePromise(_0xc47df5,_0x28c404){return respondWithRpcPromise(_0x1349('0xfe'),_0x1349('0xff'),{'command':_0x28c404['timezone']?util[_0x1349('0xb4')](_0x1349('0x100'),_0xc47df5['interval'],_0x28c404[_0x1349('0x101')]):util[_0x1349('0xb4')]('iftime\x20%s',_0xc47df5[_0x1349('0x102')])},client9002)[_0x1349('0x20')](function(_0x48e724){var _0xaeb72=_0x48e724&&_0x48e724[_0x1349('0x103')](_0x1349('0x104'))>=0x0?!![]:![];logger[_0x1349('0x21')](_0x1349('0x105'),_0x28c404['id'],_0xc47df5['id'],_0xc47df5[_0x1349('0x102')],_0xaeb72?_0x1349('0x106'):_0x1349('0x107'),_0x28c404[_0x1349('0x101')]?_0x28c404[_0x1349('0x101')]:'No\x20timezone');return _0xaeb72;})['catch'](function(_0x427c13){logger[_0x1349('0x26')](_0x1349('0x105'),_0x28c404['id'],_0xc47df5['id'],_0xc47df5[_0x1349('0x102')],util[_0x1349('0x108')](_0x427c13,{'showHidden':![],'depth':null}),_0x28c404['timezone']?_0x28c404[_0x1349('0x101')]:_0x1349('0x109'));return![];});}exports[_0x1349('0xff')]=function(_0x16c928,_0x2f5a1e,_0x53645d){var _0x4a7911=0x0;var _0x40c495=0x0;var _0x380a9d=![];var _0x5eeeef;var _0x181bd2;return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x16c928[_0x1349('0x58')]['id']},'include':[{'model':db['Interval'],'as':_0x1349('0x10a'),'include':[{'model':db[_0x1349('0x10a')],'as':_0x1349('0x10b'),'attributes':['id',_0x1349('0x102')],'raw':!![]}]}]})[_0x1349('0x20')](handleEntityNotFound(_0x2f5a1e,null))[_0x1349('0x20')](function(_0x17805b){if(_0x17805b){_0x5eeeef=_0x17805b;return _0x17805b[_0x1349('0x10c')]({'raw':!![]});}})[_0x1349('0x20')](function(_0x4aa590){if(_0x5eeeef){if(_0x4aa590){_0x181bd2=_0x4aa590;}}return require(_0x1349('0x17'))[_0x1349('0x7e')]();})[_0x1349('0x20')](function(_0x57a2f7){if(_0x57a2f7){_0x40c495=_0x57a2f7[_0x1349('0x10d')];_0x380a9d=_0x57a2f7[_0x1349('0x7f')];}})[_0x1349('0x20')](function(){return db[_0x1349('0xba')]['count']({'where':{'closed':![]}});})['then'](function(_0x35cbdb){_0x4a7911=_0x35cbdb;if(_0x40c495&&_0x35cbdb>_0x40c495){return db[_0x1349('0x10e')][_0x1349('0x68')]({'where':{'id':0x1}})[_0x1349('0x20')](function(_0x2cfd4a){if(_0x2cfd4a){_0x2cfd4a[_0x1349('0x10f')](_0x1349('0x110'));}});}})[_0x1349('0x20')](function(){if(_0x5eeeef[_0x1349('0x10a')]&&_0x5eeeef['Interval'][_0x1349('0x10b')]){var _0x5019ac=[];for(var _0x1c05ae=0x0;_0x1c05ae<_0x5eeeef[_0x1349('0x10a')][_0x1349('0x10b')][_0x1349('0x4b')];_0x1c05ae++){var _0x2933ab=_0x5eeeef[_0x1349('0x10a')][_0x1349('0x10b')][_0x1c05ae][_0x1349('0x39')]({'plain':!![]});_0x5019ac[_0x1349('0xc3')](iftimePromise(_0x2933ab,_0x5eeeef));}return BPromise['all'](_0x5019ac)[_0x1349('0x20')](function(_0x4ad737){return _['some'](_0x4ad737);});}else{return!![];}})[_0x1349('0x20')](function(_0x21c8a0){var _0x1df153=fs[_0x1349('0xd7')](path[_0x1349('0x81')](config[_0x1349('0x7c')],_0x1349('0x111')),_0x1349('0x112'));var _0x2c6f9e={'remote':_0x5eeeef['remote'],'query':querystring[_0x1349('0x25')](_['merge'](_0x5eeeef[_0x1349('0x39')]({'plain':!![]}),{'customerIp':_0x16c928[_0x1349('0x8f')][_0x1349('0xae')]||_0x16c928['headers'][_0x1349('0x113')]||_0x16c928['connection']['remoteAddress']||_0x16c928['ip'],'referer':_0x16c928[_0x1349('0x8f')][_0x1349('0x114')],'openedInteractions':_0x4a7911,'maxInteractions':_0x40c495,'virtual':_0x380a9d[_0x1349('0x10d')],'online':_0x21c8a0,'custom':_0x380a9d}))['replace'](/'/g,'\x5c\x27')};_0x2f5a1e[_0x1349('0x3f')](ejs[_0x1349('0x115')](Mustache[_0x1349('0x115')](_0x1df153,_0x2c6f9e),{'proactiveActions':_0x181bd2,'alignment':_0x5eeeef[_0x1349('0x116')],'verticalAlignment':_0x5eeeef[_0x1349('0x117')],'div_color':_0x5eeeef['color'],'text_color':_0x5eeeef['textColor'],'button_color':_0x5eeeef[_0x1349('0x118')],'background_color':_0x5eeeef[_0x1349('0x119')]}));})[_0x1349('0x2a')](handleError(_0x2f5a1e,null));};exports[_0x1349('0x11a')]=function(_0x5690b4,_0x5d9f71,_0x179f0c){return db[_0x1349('0x55')][_0x1349('0x68')]({'where':{'id':_0x5690b4[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x5d9f71,null))[_0x1349('0x20')](function(_0x27d0b3){if(_0x27d0b3){return db[_0x1349('0xe1')][_0x1349('0x11b')](function(_0x356795){return db[_0x1349('0xa4')][_0x1349('0x38')]({'where':{'ChatWebsiteId':_0x5690b4['params']['id']},'transaction':_0x356795})[_0x1349('0x20')](function(_0x2ab43a){var _0x484558=_['map'](_0x5690b4[_0x1349('0x5d')],function(_0x28c4eb){_0x28c4eb[_0x1349('0x6b')]=_0x5690b4[_0x1349('0x58')]['id'];return _0x28c4eb;});return db[_0x1349('0xa4')][_0x1349('0xe3')](_0x484558,{'transaction':_0x356795});});})['then'](function(){return db[_0x1349('0xa4')]['findAndCountAll']({'where':{'ChatWebsiteId':_0x5690b4[_0x1349('0x58')]['id']},'order':_0x1349('0xa8')});});}})[_0x1349('0x20')](respondWithResult(_0x5d9f71,null))['catch'](handleError(_0x5d9f71,null));};exports[_0x1349('0x11c')]=function(_0x3c477d,_0x16acf0,_0x160b53){var _0x573517={};var _0xec210={};var _0x4eaa8b;var _0x39d22d;return db[_0x1349('0x55')][_0x1349('0x68')]({'where':{'id':_0x3c477d[_0x1349('0x58')]['id']}})['then'](handleEntityNotFound(_0x16acf0,null))[_0x1349('0x20')](function(_0x327247){if(_0x327247){_0x4eaa8b=_0x327247;_0xec210[_0x1349('0x44')]=_[_0x1349('0x45')](db[_0x1349('0xa4')][_0x1349('0x42')]);_0xec210[_0x1349('0x48')]=_['keys'](_0x3c477d[_0x1349('0x48')]);_0xec210['filters']=_['intersection'](_0xec210[_0x1349('0x44')],_0xec210[_0x1349('0x48')]);_0x573517[_0x1349('0x49')]=_[_0x1349('0x47')](_0xec210[_0x1349('0x44')],qs['fields'](_0x3c477d[_0x1349('0x48')]['fields']));_0x573517['attributes']=_0x573517[_0x1349('0x49')][_0x1349('0x4b')]?_0x573517[_0x1349('0x49')]:_0xec210[_0x1349('0x44')];_0x573517[_0x1349('0x6a')]=qs[_0x1349('0x4d')](_0x3c477d[_0x1349('0x48')]['sort']);_0x573517['where']=qs[_0x1349('0x46')](_[_0x1349('0x4e')](_0x3c477d['query'],_0xec210['filters']));if(_0x3c477d[_0x1349('0x48')]['filter']){_0x573517[_0x1349('0x50')]=_[_0x1349('0x51')](_0x573517[_0x1349('0x50')],{'$or':_[_0x1349('0x41')](_0x573517['attributes'],function(_0x41702b){var _0x3bb351={};_0x3bb351[_0x41702b]={'$like':'%'+_0x3c477d[_0x1349('0x48')][_0x1349('0x4f')]+'%'};return _0x3bb351;})});}_0x573517=_[_0x1349('0x51')]({},_0x573517,_0x3c477d[_0x1349('0x53')]);return _0x4eaa8b[_0x1349('0x11c')](_0x573517);}})[_0x1349('0x20')](function(_0x5175be){if(_0x5175be){_0x39d22d=_0x5175be[_0x1349('0x4b')];if(!_0x3c477d[_0x1349('0x48')][_0x1349('0x69')](_0x1349('0x4c'))){_0x573517['limit']=qs['limit'](_0x3c477d[_0x1349('0x48')][_0x1349('0x31')]);_0x573517[_0x1349('0x2e')]=qs[_0x1349('0x2e')](_0x3c477d[_0x1349('0x48')]['offset']);}return _0x4eaa8b[_0x1349('0x11c')](_0x573517);}})[_0x1349('0x20')](function(_0x383735){if(_0x383735){return _0x383735?{'count':_0x39d22d,'rows':_0x383735}:null;}})[_0x1349('0x20')](respondWithResult(_0x16acf0,null))[_0x1349('0x2a')](handleError(_0x16acf0,null));};exports[_0x1349('0x11d')]=function(_0x171d8a,_0x5a2048,_0x1f019b){return db[_0x1349('0x11e')][_0x1349('0x5b')]({'where':{'id':_0x171d8a['params']['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x5a2048,null))[_0x1349('0x20')](function(_0x3bbe45){if(_0x3bbe45){return _0x3bbe45[_0x1349('0x11d')](_0x171d8a['body']['ids'],_['omit'](_0x171d8a['body'],[_0x1349('0x6e'),'id'])||{});}})[_0x1349('0x20')](respondWithResult(_0x5a2048,null))['catch'](handleError(_0x5a2048,null));};exports['getProactiveActions']=function(_0x1b2665,_0xfdf6,_0x157f59){var _0x516651={};var _0x3df30d={};var _0x4ce7b1;var _0xb07a5d;return db['ChatWebsite'][_0x1349('0x68')]({'where':{'id':_0x1b2665[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0xfdf6,null))[_0x1349('0x20')](function(_0x3ff672){if(_0x3ff672){_0x4ce7b1=_0x3ff672;_0x3df30d[_0x1349('0x44')]=_['keys'](db['ChatProactiveAction']['rawAttributes']);_0x3df30d[_0x1349('0x48')]=_[_0x1349('0x45')](_0x1b2665[_0x1349('0x48')]);_0x3df30d[_0x1349('0x46')]=_[_0x1349('0x47')](_0x3df30d['model'],_0x3df30d[_0x1349('0x48')]);_0x516651['attributes']=_[_0x1349('0x47')](_0x3df30d[_0x1349('0x44')],qs['fields'](_0x1b2665[_0x1349('0x48')][_0x1349('0x4a')]));_0x516651['attributes']=_0x516651[_0x1349('0x49')][_0x1349('0x4b')]?_0x516651['attributes']:_0x3df30d[_0x1349('0x44')];_0x516651['order']=qs[_0x1349('0x4d')](_0x1b2665['query'][_0x1349('0x4d')]);_0x516651[_0x1349('0x50')]=qs[_0x1349('0x46')](_[_0x1349('0x4e')](_0x1b2665['query'],_0x3df30d[_0x1349('0x46')]));if(_0x1b2665['query']['filter']){_0x516651[_0x1349('0x50')]=_[_0x1349('0x51')](_0x516651['where'],{'$or':_[_0x1349('0x41')](_0x516651[_0x1349('0x49')],function(_0x48121c){var _0x10d7a4={};_0x10d7a4[_0x48121c]={'$like':'%'+_0x1b2665[_0x1349('0x48')][_0x1349('0x4f')]+'%'};return _0x10d7a4;})});}_0x516651=_['merge']({},_0x516651,_0x1b2665[_0x1349('0x53')]);return _0x4ce7b1[_0x1349('0x10c')](_0x516651);}})['then'](function(_0xe58c0b){if(_0xe58c0b){_0xb07a5d=_0xe58c0b[_0x1349('0x4b')];if(!_0x1b2665[_0x1349('0x48')][_0x1349('0x69')](_0x1349('0x4c'))){_0x516651[_0x1349('0x31')]=qs[_0x1349('0x31')](_0x1b2665[_0x1349('0x48')]['limit']);_0x516651[_0x1349('0x2e')]=qs[_0x1349('0x2e')](_0x1b2665['query'][_0x1349('0x2e')]);}return _0x4ce7b1[_0x1349('0x10c')](_0x516651);}})[_0x1349('0x20')](function(_0x948800){if(_0x948800){return _0x948800?{'count':_0xb07a5d,'rows':_0x948800}:null;}})[_0x1349('0x20')](respondWithResult(_0xfdf6,null))[_0x1349('0x2a')](handleError(_0xfdf6,null));};exports['getFields']=function(_0x494ec4,_0x5652fe,_0x48400b){var _0x419fc9=_0x494ec4[_0x1349('0x48')][_0x1349('0x11f')]===_0x1349('0x120')?_0x1349('0x121'):_0x1349('0x122');return db['ChatWebsite'][_0x1349('0x5b')]({'attributes':['id',_0x419fc9],'where':{'id':_0x494ec4[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x5652fe,null))[_0x1349('0x20')](function(_0x2b70e0){if(_0x2b70e0){var _0x3d0550=_0x2b70e0[_0x419fc9];var _0x3fa915=_0x3d0550&&_0x3d0550['items']?_0x3d0550['items']:[];_0x5652fe[_0x1349('0x3f')]({'fromKey':_[_0x1349('0x86')](_0x3d0550[_0x1349('0x123')])?undefined:_0x3d0550[_0x1349('0x123')],'count':_0x3fa915[_0x1349('0x4b')],'rows':_0x3fa915});}})['catch'](handleError(_0x5652fe,null));};exports[_0x1349('0x124')]=function(_0x4ed9e9,_0x179463,_0x37dd36){var _0x18b58c={'raw':![],'where':{}};var _0x2402f5={};var _0x122b45={'count':0x0,'rows':[]};return db[_0x1349('0x55')][_0x1349('0x68')]({'where':{'id':_0x4ed9e9['params']['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x179463,null))['then'](function(_0xc0f593){if(_0xc0f593){_0x2402f5[_0x1349('0x44')]=_[_0x1349('0x45')](db[_0x1349('0xdb')][_0x1349('0x42')]);_0x2402f5[_0x1349('0x48')]=_[_0x1349('0x45')](_0x4ed9e9[_0x1349('0x48')]);_0x2402f5[_0x1349('0x46')]=_[_0x1349('0x47')](_0x2402f5[_0x1349('0x44')],_0x2402f5['query']);_0x18b58c[_0x1349('0x49')]=_['intersection'](_0x2402f5['model'],qs['fields'](_0x4ed9e9[_0x1349('0x48')]['fields']));_0x18b58c[_0x1349('0x49')]=_0x18b58c[_0x1349('0x49')][_0x1349('0x4b')]?_0x18b58c[_0x1349('0x49')]:_0x2402f5[_0x1349('0x44')];if(!_0x4ed9e9[_0x1349('0x48')]['hasOwnProperty'](_0x1349('0x4c'))){_0x18b58c[_0x1349('0x31')]=qs['limit'](_0x4ed9e9[_0x1349('0x48')]['limit']);_0x18b58c[_0x1349('0x2e')]=qs[_0x1349('0x2e')](_0x4ed9e9[_0x1349('0x48')][_0x1349('0x2e')]);}_0x18b58c['order']=qs[_0x1349('0x4d')](_0x4ed9e9['query'][_0x1349('0x4d')]);_0x18b58c[_0x1349('0x50')]=qs[_0x1349('0x46')](_[_0x1349('0x4e')](_0x4ed9e9[_0x1349('0x48')],_0x2402f5[_0x1349('0x46')]));_0x18b58c[_0x1349('0x50')][_0x1349('0x6b')]=_0xc0f593['id'];if(_0x4ed9e9[_0x1349('0x48')][_0x1349('0x4f')]){_0x18b58c[_0x1349('0x50')]=_[_0x1349('0x51')](_0x18b58c[_0x1349('0x50')],{'$or':_[_0x1349('0x41')](_0x18b58c[_0x1349('0x49')],function(_0x21ca06){var _0x2410d2={};_0x2410d2[_0x21ca06]={'$like':'%'+_0x4ed9e9[_0x1349('0x48')][_0x1349('0x4f')]+'%'};return _0x2410d2;})});}_0x18b58c=_['merge']({},_0x18b58c,_0x4ed9e9['options']);return db['ChatOfflineMessage'][_0x1349('0x30')]({'where':_0x18b58c['where']})[_0x1349('0x20')](function(_0x563e32){_0x122b45[_0x1349('0x30')]=_0x563e32;if(_0x4ed9e9[_0x1349('0x48')][_0x1349('0x5a')]){_0x18b58c[_0x1349('0x54')]=[{'all':!![]}];}else{_0x18b58c[_0x1349('0x54')]=[{'model':db[_0x1349('0xd2')],'as':_0x1349('0xf9'),'required':![]},{'model':db[_0x1349('0xe2')],'as':_0x1349('0x125'),'required':![]}];}return db[_0x1349('0xdb')][_0x1349('0x56')](_0x18b58c);})[_0x1349('0x20')](function(_0x538f3f){_0x122b45[_0x1349('0x6c')]=_0x538f3f;return _0x122b45;});}})[_0x1349('0x20')](respondWithFilteredResult(_0x179463,_0x18b58c))[_0x1349('0x2a')](handleError(_0x179463,null));};exports['addAgents']=function(_0x57ad78,_0x53d267,_0x1ccafc){return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x57ad78[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x53d267,null))['then'](function(_0x24e827){if(_0x24e827){return _0x24e827['addAgents'](_0x57ad78[_0x1349('0x5d')][_0x1349('0x6e')],_[_0x1349('0x126')](_0x57ad78[_0x1349('0x5d')],[_0x1349('0x6e'),'id'])||{})['spread'](function(_0x1fd5af){for(var _0xff795e=0x0;_0xff795e<_0x57ad78[_0x1349('0x5d')][_0x1349('0x6e')][_0x1349('0x4b')];_0xff795e+=0x1){socket[_0x1349('0x127')](_0x1349('0x128'),{'UserId':Number(_0x57ad78['body'][_0x1349('0x6e')][_0xff795e]),'ChatWebsiteId':Number(_0x57ad78['params']['id'])});}return _0x1fd5af;});}})[_0x1349('0x20')](respondWithResult(_0x53d267,null))[_0x1349('0x2a')](handleError(_0x53d267,null));};exports['removeAgents']=function(_0x5cb429,_0x9d175c,_0x18a72e){return db[_0x1349('0x55')][_0x1349('0x5b')]({'where':{'id':_0x5cb429[_0x1349('0x58')]['id']}})[_0x1349('0x20')](handleEntityNotFound(_0x9d175c,null))[_0x1349('0x20')](function(_0x47e74e){if(_0x47e74e){return _0x47e74e['removeAgents'](_0x5cb429[_0x1349('0x48')]['ids'])[_0x1349('0x20')](function(){if(_['isArray'](_0x5cb429[_0x1349('0x48')][_0x1349('0x6e')])){for(var _0x183b12=0x0;_0x183b12<_0x5cb429[_0x1349('0x48')][_0x1349('0x6e')]['length'];_0x183b12+=0x1){socket[_0x1349('0x127')](_0x1349('0x129'),{'UserId':Number(_0x5cb429[_0x1349('0x48')][_0x1349('0x6e')][_0x183b12]),'ChatWebsiteId':Number(_0x5cb429[_0x1349('0x58')]['id'])});}}else{socket[_0x1349('0x127')](_0x1349('0x129'),{'UserId':Number(_0x5cb429[_0x1349('0x48')][_0x1349('0x6e')]),'ChatWebsiteId':Number(_0x5cb429[_0x1349('0x58')]['id'])});}});}})[_0x1349('0x20')](respondWithStatusCode(_0x9d175c,null))[_0x1349('0x2a')](handleError(_0x9d175c,null));};exports[_0x1349('0x12a')]=function(_0xe74ca3,_0x2728d6,_0x176bc5){var _0x4e6d53={};var _0x29cc44={};var _0x1eb0f8;var _0x433c84;return db[_0x1349('0x55')][_0x1349('0x68')]({'where':{'id':_0xe74ca3[_0x1349('0x58')]['id']}})['then'](handleEntityNotFound(_0x2728d6,null))[_0x1349('0x20')](function(_0x5447c5){if(_0x5447c5){_0x1eb0f8=_0x5447c5;_0x29cc44[_0x1349('0x44')]=_['keys'](db['User'][_0x1349('0x42')]);_0x29cc44[_0x1349('0x48')]=_[_0x1349('0x45')](_0xe74ca3[_0x1349('0x48')]);_0x29cc44[_0x1349('0x46')]=_[_0x1349('0x47')](_0x29cc44[_0x1349('0x44')],_0x29cc44[_0x1349('0x48')]);_0x4e6d53[_0x1349('0x49')]=_[_0x1349('0x47')](_0x29cc44[_0x1349('0x44')],qs[_0x1349('0x4a')](_0xe74ca3['query'][_0x1349('0x4a')]));_0x4e6d53['attributes']=_0x4e6d53[_0x1349('0x49')]['length']?_0x4e6d53['attributes']:_0x29cc44[_0x1349('0x44')];_0x4e6d53['order']=qs['sort'](_0xe74ca3[_0x1349('0x48')][_0x1349('0x4d')]);_0x4e6d53['where']=qs['filters'](_[_0x1349('0x4e')](_0xe74ca3[_0x1349('0x48')],_0x29cc44[_0x1349('0x46')]));if(_0xe74ca3[_0x1349('0x48')][_0x1349('0x4f')]){_0x4e6d53[_0x1349('0x50')]=_[_0x1349('0x51')](_0x4e6d53[_0x1349('0x50')],{'$or':_[_0x1349('0x41')](_0x4e6d53[_0x1349('0x49')],function(_0x3b1e41){var _0x370e24={};_0x370e24[_0x3b1e41]={'$like':'%'+_0xe74ca3[_0x1349('0x48')][_0x1349('0x4f')]+'%'};return _0x370e24;})});}_0x4e6d53=_[_0x1349('0x51')]({},_0x4e6d53,_0xe74ca3[_0x1349('0x53')]);return _0x1eb0f8[_0x1349('0x12a')](_0x4e6d53);}})['then'](function(_0x558646){if(_0x558646){_0x433c84=_0x558646[_0x1349('0x4b')];if(!_0xe74ca3['query']['hasOwnProperty']('nolimit')){_0x4e6d53[_0x1349('0x31')]=qs[_0x1349('0x31')](_0xe74ca3[_0x1349('0x48')][_0x1349('0x31')]);_0x4e6d53[_0x1349('0x2e')]=qs[_0x1349('0x2e')](_0xe74ca3[_0x1349('0x48')][_0x1349('0x2e')]);}return _0x1eb0f8[_0x1349('0x12a')](_0x4e6d53);}})[_0x1349('0x20')](function(_0xc6e133){if(_0xc6e133){return _0xc6e133?{'count':_0x433c84,'rows':_0xc6e133}:null;}})[_0x1349('0x20')](respondWithResult(_0x2728d6,null))[_0x1349('0x2a')](handleError(_0x2728d6,null));};
\ No newline at end of file
index 02d034c..5bc133c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfe7=['hook','exports','../../mysqldb','ChatWebsite','save','update','remove','emit','hasOwnProperty'];(function(_0x281db6,_0x2d3f21){var _0x319ea2=function(_0x5dc312){while(--_0x5dc312){_0x281db6['push'](_0x281db6['shift']());}};_0x319ea2(++_0x2d3f21);}(_0xdfe7,0xc8));var _0x7dfe=function(_0x2643de,_0x474450){_0x2643de=_0x2643de-0x0;var _0x2097d4=_0xdfe7[_0x2643de];return _0x2097d4;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0x7dfe('0x0'))['db'][_0x7dfe('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7dfe('0x2'),'afterUpdate':_0x7dfe('0x3'),'afterDestroy':_0x7dfe('0x4')};function emitEvent(_0xb0b7fb){return function(_0x527490,_0x2c07d2,_0x23ac4c){ChatWebsiteEvents['emit'](_0xb0b7fb+':'+_0x527490['id'],_0x527490);ChatWebsiteEvents[_0x7dfe('0x5')](_0xb0b7fb,_0x527490);_0x23ac4c(null);};}for(var e in events){if(events[_0x7dfe('0x6')](e)){var event=events[e];ChatWebsite[_0x7dfe('0x7')](e,emitEvent(event));}}module[_0x7dfe('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0xbed7=['ChatWebsite','setMaxListeners','save','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x4ef621,_0x5548e2){var _0x10fa0a=function(_0x5bf4af){while(--_0x5bf4af){_0x4ef621['push'](_0x4ef621['shift']());}};_0x10fa0a(++_0x5548e2);}(_0xbed7,0x14b));var _0x7bed=function(_0x41817f,_0x31ced4){_0x41817f=_0x41817f-0x0;var _0x20ce11=_0xbed7[_0x41817f];return _0x20ce11;};'use strict';var EventEmitter=require(_0x7bed('0x0'));var ChatWebsite=require(_0x7bed('0x1'))['db'][_0x7bed('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x7bed('0x3')](0x0);var events={'afterCreate':_0x7bed('0x4'),'afterUpdate':'update','afterDestroy':_0x7bed('0x5')};function emitEvent(_0x208dc6){return function(_0x1da710,_0x18c2c7,_0x2e683a){ChatWebsiteEvents[_0x7bed('0x6')](_0x208dc6+':'+_0x1da710['id'],_0x1da710);ChatWebsiteEvents[_0x7bed('0x6')](_0x208dc6,_0x1da710);_0x2e683a(null);};}for(var e in events){if(events[_0x7bed('0x7')](e)){var event=events[e];ChatWebsite[_0x7bed('0x8')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
index 7e6eb5b..625783a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa982=['ChatWebsite','chat_websites','lodash','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x5d6923,_0x2b5546){var _0x4dde96=function(_0x4988e5){while(--_0x4988e5){_0x5d6923['push'](_0x5d6923['shift']());}};_0x4dde96(++_0x2b5546);}(_0xa982,0x19c));var _0x2a98=function(_0x2d2e85,_0x22faa9){_0x2d2e85=_0x2d2e85-0x0;var _0x3e9f5e=_0xa982[_0x2d2e85];return _0x3e9f5e;};'use strict';var _=require(_0x2a98('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x2a98('0x1'));var BPromise=require(_0x2a98('0x2'));var rp=require(_0x2a98('0x3'));var fs=require('fs');var path=require(_0x2a98('0x4'));var rimraf=require(_0x2a98('0x5'));var config=require('../../config/environment');var attributes=require('./chatWebsite.attributes');module[_0x2a98('0x6')]=function(_0x1f9390,_0x82045){return _0x1f9390[_0x2a98('0x7')](_0x2a98('0x8'),attributes,{'tableName':_0x2a98('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9716=['bluebird','./chatWebsite.attributes','exports','ChatWebsite','chat_websites','lodash','util','api','moment'];(function(_0x131e60,_0x5352ce){var _0x4bc497=function(_0x2a758e){while(--_0x2a758e){_0x131e60['push'](_0x131e60['shift']());}};_0x4bc497(++_0x5352ce);}(_0x9716,0x188));var _0x6971=function(_0x257518,_0x1f9f86){_0x257518=_0x257518-0x0;var _0x3cf771=_0x9716[_0x257518];return _0x3cf771;};'use strict';var _=require(_0x6971('0x0'));var util=require(_0x6971('0x1'));var logger=require('../../config/logger')(_0x6971('0x2'));var moment=require(_0x6971('0x3'));var BPromise=require(_0x6971('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(_0x6971('0x5'));module[_0x6971('0x6')]=function(_0x5b4dcc,_0xefe10e){return _0x5b4dcc['define'](_0x6971('0x7'),attributes,{'tableName':_0x6971('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 72f9db0..177adec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e9b=['request\x20sent','debug','stringify','error','code','message','catch','lodash','util','randomstring','ioredis','../../mysqldb','client','http','redis','localhost','./chatWebsite.socket','request','info','ChatWebsite,\x20%s,\x20%s'];(function(_0x3003e5,_0x3b394c){var _0x303245=function(_0x126711){while(--_0x126711){_0x3003e5['push'](_0x3003e5['shift']());}};_0x303245(++_0x3b394c);}(_0x9e9b,0x7f));var _0xb9e9=function(_0x9c3c56,_0x169b56){_0x9c3c56=_0x9c3c56-0x0;var _0x2dd782=_0x9e9b[_0x9c3c56];return _0x2dd782;};'use strict';var _=require(_0xb9e9('0x0'));var util=require(_0xb9e9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb9e9('0x2'));var fs=require('fs');var Redis=require(_0xb9e9('0x3'));var db=require(_0xb9e9('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb9e9('0x5')][_0xb9e9('0x6')]({'port':0x232a});config[_0xb9e9('0x7')]=_['defaults'](config[_0xb9e9('0x7')],{'host':_0xb9e9('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb9e9('0x7')]));require(_0xb9e9('0x9'))['register'](socket);function respondWithRpcPromise(_0x3c677d,_0x1b5d77,_0x2a7a53){return new BPromise(function(_0x4359d6,_0x28a354){return client[_0xb9e9('0xa')](_0x3c677d,_0x2a7a53)['then'](function(_0x5168ab){logger[_0xb9e9('0xb')](_0xb9e9('0xc'),_0x1b5d77,_0xb9e9('0xd'));logger[_0xb9e9('0xe')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x1b5d77,'request\x20sent',JSON[_0xb9e9('0xf')](_0x5168ab));if(_0x5168ab[_0xb9e9('0x10')]){if(_0x5168ab[_0xb9e9('0x10')][_0xb9e9('0x11')]===0x1f4){logger[_0xb9e9('0x10')](_0xb9e9('0xc'),_0x1b5d77,_0x5168ab[_0xb9e9('0x10')]['message']);return _0x28a354(_0x5168ab[_0xb9e9('0x10')]['message']);}logger[_0xb9e9('0x10')](_0xb9e9('0xc'),_0x1b5d77,_0x5168ab[_0xb9e9('0x10')][_0xb9e9('0x12')]);return _0x4359d6(_0x5168ab['error'][_0xb9e9('0x12')]);}else{logger[_0xb9e9('0xb')]('ChatWebsite,\x20%s,\x20%s',_0x1b5d77,_0xb9e9('0xd'));_0x4359d6(_0x5168ab['result'][_0xb9e9('0x12')]);}})[_0xb9e9('0x13')](function(_0x313437){logger['error'](_0xb9e9('0xc'),_0x1b5d77,_0x313437);_0x28a354(_0x313437);});});}
\ No newline at end of file
+var _0xf095=['then','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','./chatWebsite.socket','register','request'];(function(_0x2e335b,_0x4efd7a){var _0x307d27=function(_0x339a39){while(--_0x339a39){_0x2e335b['push'](_0x2e335b['shift']());}};_0x307d27(++_0x4efd7a);}(_0xf095,0x194));var _0x5f09=function(_0x46c865,_0x154b2f){_0x46c865=_0x46c865-0x0;var _0x200973=_0xf095[_0x46c865];return _0x200973;};'use strict';var _=require(_0x5f09('0x0'));var util=require(_0x5f09('0x1'));var moment=require(_0x5f09('0x2'));var BPromise=require(_0x5f09('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5f09('0x4'));var db=require(_0x5f09('0x5'))['db'];var utils=require(_0x5f09('0x6'));var logger=require(_0x5f09('0x7'))(_0x5f09('0x8'));var config=require('../../config/environment');var jayson=require(_0x5f09('0x9'));var client=jayson[_0x5f09('0xa')][_0x5f09('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0x5f09('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x5f09('0xd'))[_0x5f09('0xe')](socket);function respondWithRpcPromise(_0x209e54,_0x23c097,_0x32a04d){return new BPromise(function(_0x9c6784,_0x5bc15c){return client[_0x5f09('0xf')](_0x209e54,_0x32a04d)[_0x5f09('0x10')](function(_0x1ad9cf){logger[_0x5f09('0x11')](_0x5f09('0x12'),_0x23c097,'request\x20sent');logger[_0x5f09('0x13')](_0x5f09('0x14'),_0x23c097,_0x5f09('0x15'),JSON[_0x5f09('0x16')](_0x1ad9cf));if(_0x1ad9cf['error']){if(_0x1ad9cf[_0x5f09('0x17')][_0x5f09('0x18')]===0x1f4){logger[_0x5f09('0x17')](_0x5f09('0x12'),_0x23c097,_0x1ad9cf['error']['message']);return _0x5bc15c(_0x1ad9cf[_0x5f09('0x17')][_0x5f09('0x19')]);}logger[_0x5f09('0x17')](_0x5f09('0x12'),_0x23c097,_0x1ad9cf['error']['message']);return _0x9c6784(_0x1ad9cf[_0x5f09('0x17')][_0x5f09('0x19')]);}else{logger[_0x5f09('0x11')]('ChatWebsite,\x20%s,\x20%s',_0x23c097,_0x5f09('0x15'));_0x9c6784(_0x1ad9cf[_0x5f09('0x1a')]['message']);}})[_0x5f09('0x1b')](function(_0x8de24b){logger[_0x5f09('0x17')](_0x5f09('0x12'),_0x23c097,_0x8de24b);_0x5bc15c(_0x8de24b);});});}
\ No newline at end of file
index bac8daf..0e416ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4639=['register','length','chatWebsite:','./chatWebsite.events','save','remove','update','emit'];(function(_0x382755,_0x427f59){var _0x57bb03=function(_0x33b4b8){while(--_0x33b4b8){_0x382755['push'](_0x382755['shift']());}};_0x57bb03(++_0x427f59);}(_0x4639,0xab));var _0x9463=function(_0x2d2a9b,_0x5870ff){_0x2d2a9b=_0x2d2a9b-0x0;var _0x3d2d49=_0x4639[_0x2d2a9b];return _0x3d2d49;};'use strict';var ChatWebsiteEvents=require(_0x9463('0x0'));var events=[_0x9463('0x1'),_0x9463('0x2'),_0x9463('0x3')];function createListener(_0x5ae1b0,_0x4636ee){return function(_0x21b1d5){_0x4636ee[_0x9463('0x4')](_0x5ae1b0,_0x21b1d5);};}function removeListener(_0x1bd9a4,_0x125268){return function(){ChatWebsiteEvents['removeListener'](_0x1bd9a4,_0x125268);};}exports[_0x9463('0x5')]=function(_0x1b303b){for(var _0x36a34c=0x0,_0x4de02d=events[_0x9463('0x6')];_0x36a34c<_0x4de02d;_0x36a34c++){var _0x3f910b=events[_0x36a34c];var _0x5d2d5a=createListener(_0x9463('0x7')+_0x3f910b,_0x1b303b);ChatWebsiteEvents['on'](_0x3f910b,_0x5d2d5a);}};
\ No newline at end of file
+var _0xef49=['save','remove','removeListener','register','length','chatWebsite:','./chatWebsite.events'];(function(_0x15797a,_0x16274f){var _0x3e2618=function(_0x2b6e99){while(--_0x2b6e99){_0x15797a['push'](_0x15797a['shift']());}};_0x3e2618(++_0x16274f);}(_0xef49,0x1f0));var _0x9ef4=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0xef49[_0x13e741];return _0x3f8bb3;};'use strict';var ChatWebsiteEvents=require(_0x9ef4('0x0'));var events=[_0x9ef4('0x1'),_0x9ef4('0x2'),'update'];function createListener(_0x2e4518,_0x1faf3f){return function(_0x5f0049){_0x1faf3f['emit'](_0x2e4518,_0x5f0049);};}function removeListener(_0x10f4bd,_0x313493){return function(){ChatWebsiteEvents[_0x9ef4('0x3')](_0x10f4bd,_0x313493);};}exports[_0x9ef4('0x4')]=function(_0x5e9962){for(var _0x5c0a5c=0x0,_0x2f57ff=events[_0x9ef4('0x5')];_0x5c0a5c<_0x2f57ff;_0x5c0a5c++){var _0x460540=events[_0x5c0a5c];var _0x1f78e7=createListener(_0x9ef4('0x6')+_0x460540,_0x5e9962);ChatWebsiteEvents['on'](_0x460540,_0x1f78e7);}};
\ No newline at end of file
index f14c5b1..8a30d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfed4=['/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','create','/:id/canned_answers','addAnswer','diskStorage','join','server/files/images/logos/','format','%s-%s','originalname','file','addLogo','root','server/files/images/avatars/','now','single','addCustomerAvatar','/:id/notify','server/files','offline-chat','ensureDir','replace','extname','/:id/offline','offline','addInteraction','addApplications','addAgents','update','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','getFields'];(function(_0x318010,_0x29d49a){var _0xed4d9d=function(_0xc815e0){while(--_0xc815e0){_0x318010['push'](_0x318010['shift']());}};_0xed4d9d(++_0x29d49a);}(_0xfed4,0x104));var _0x4fed=function(_0x11b714,_0x4c1ba3){_0x11b714=_0x11b714-0x0;var _0x2608e1=_0xfed4[_0x11b714];return _0x2608e1;};'use strict';var multer=require(_0x4fed('0x0'));var util=require(_0x4fed('0x1'));var path=require(_0x4fed('0x2'));var timeout=require(_0x4fed('0x3'));var express=require(_0x4fed('0x4'));var router=express[_0x4fed('0x5')]();var fs_extra=require(_0x4fed('0x6'));var auth=require(_0x4fed('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x4fed('0x8'));var controller=require(_0x4fed('0x9'));router[_0x4fed('0xa')]('/',auth[_0x4fed('0xb')](),controller[_0x4fed('0xc')]);router[_0x4fed('0xa')](_0x4fed('0xd'),auth[_0x4fed('0xb')](),controller[_0x4fed('0xe')]);router[_0x4fed('0xa')](_0x4fed('0xf'),auth['isAuthenticated'](),controller[_0x4fed('0x10')]);router[_0x4fed('0xa')](_0x4fed('0x11'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x4fed('0xa')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x4fed('0x12')]);router[_0x4fed('0xa')](_0x4fed('0x13'),controller[_0x4fed('0x14')]);router['get'](_0x4fed('0x15'),controller[_0x4fed('0x16')]);router[_0x4fed('0xa')](_0x4fed('0x17'),controller[_0x4fed('0x18')]);router[_0x4fed('0xa')](_0x4fed('0x19'),controller[_0x4fed('0x1a')]);router[_0x4fed('0xa')](_0x4fed('0x1b'),auth[_0x4fed('0xb')](),controller[_0x4fed('0x1c')]);router[_0x4fed('0xa')](_0x4fed('0x1d'),controller[_0x4fed('0x1e')]);router[_0x4fed('0xa')](_0x4fed('0x1f'),auth[_0x4fed('0xb')](),controller[_0x4fed('0x20')]);router[_0x4fed('0xa')](_0x4fed('0x21'),auth[_0x4fed('0xb')](),controller[_0x4fed('0x22')]);router[_0x4fed('0xa')]('/:id/fields',controller[_0x4fed('0x23')]);router[_0x4fed('0xa')](_0x4fed('0x24'),auth[_0x4fed('0xb')](),controller[_0x4fed('0x25')]);router['get'](_0x4fed('0x26'),auth[_0x4fed('0xb')](),controller[_0x4fed('0x27')]);router[_0x4fed('0x28')]('/',auth[_0x4fed('0xb')](),controller[_0x4fed('0x29')]);router[_0x4fed('0x28')](_0x4fed('0x11'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x4fed('0x28')](_0x4fed('0x2a'),auth[_0x4fed('0xb')](),controller[_0x4fed('0x2b')]);var upload=multer({'storage':multer[_0x4fed('0x2c')]({'destination':function(_0x43c70b,_0x340d60,_0x27599e){_0x27599e(null,path[_0x4fed('0x2d')](config['root'],_0x4fed('0x2e')));},'filename':function(_0x41ccb7,_0x1d9c7e,_0x45e81f){_0x45e81f(null,util[_0x4fed('0x2f')](_0x4fed('0x30'),Date['now'](),_0x1d9c7e[_0x4fed('0x31')]));}})});router[_0x4fed('0x28')](_0x4fed('0x13'),upload['single'](_0x4fed('0x32')),controller[_0x4fed('0x33')]);var upload=multer({'storage':multer[_0x4fed('0x2c')]({'destination':function(_0x229866,_0x3f223b,_0x38178d){_0x38178d(null,path[_0x4fed('0x2d')](config[_0x4fed('0x34')],_0x4fed('0x35')));},'filename':function(_0x10ea86,_0x5c25ca,_0x58a434){_0x58a434(null,util[_0x4fed('0x2f')]('%s-%s',Date[_0x4fed('0x36')](),_0x5c25ca[_0x4fed('0x31')]));}})});router[_0x4fed('0x28')](_0x4fed('0x15'),upload[_0x4fed('0x37')]('file'),controller['addAvatar']);var upload=multer({'storage':multer[_0x4fed('0x2c')]({'destination':function(_0x566b3f,_0x7507b9,_0x526fd0){_0x526fd0(null,path[_0x4fed('0x2d')](config[_0x4fed('0x34')],_0x4fed('0x35')));},'filename':function(_0x2a551a,_0x17fd02,_0x26ff98){_0x26ff98(null,util[_0x4fed('0x2f')](_0x4fed('0x30'),Date['now'](),_0x17fd02[_0x4fed('0x31')]));}})});router['post']('/:id/customer_avatar',upload[_0x4fed('0x37')](_0x4fed('0x32')),controller[_0x4fed('0x38')]);var upload=multer({'storage':multer[_0x4fed('0x2c')]({'destination':function(_0x1ac2a0,_0x1201a5,_0x1b23bb){_0x1b23bb(null,path[_0x4fed('0x2d')](config['root'],_0x4fed('0x35')));},'filename':function(_0x4eb156,_0xec59d2,_0x3ab2ed){_0x3ab2ed(null,util[_0x4fed('0x2f')](_0x4fed('0x30'),Date[_0x4fed('0x36')](),_0xec59d2[_0x4fed('0x31')]));}})});router['post']('/:id/system_avatar',upload[_0x4fed('0x37')]('file'),controller['addSystemAvatar']);router[_0x4fed('0x28')](_0x4fed('0x39'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x4fed('0x2c')]({'destination':function(_0x58f89e,_0x5a03d3,_0xd9621a){const _0x257951=path[_0x4fed('0x2d')](config[_0x4fed('0x34')],_0x4fed('0x3a'),'attachments',_0x4fed('0x3b'));fs_extra[_0x4fed('0x3c')](_0x257951,function(){_0xd9621a(null,_0x257951);});},'filename':function(_0x40b329,_0x570750,_0x562ad){const _0x5670f0=_0x570750[_0x4fed('0x31')][_0x4fed('0x3d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x2fc379=path[_0x4fed('0x3e')](_0x5670f0);const _0x27c125=Date[_0x4fed('0x36')]()+'-'+_0x5670f0['replace'](_0x2fc379,'')+_0x2fc379;_0x562ad(null,_0x27c125);}})});router[_0x4fed('0x28')](_0x4fed('0x3f'),offlineUploadMulter['any'](),controller[_0x4fed('0x40')]);router[_0x4fed('0x28')](_0x4fed('0x1b'),auth[_0x4fed('0xb')](),controller[_0x4fed('0x41')]);router[_0x4fed('0x28')](_0x4fed('0x1f'),auth[_0x4fed('0xb')](),controller[_0x4fed('0x42')]);router[_0x4fed('0x28')](_0x4fed('0x21'),auth[_0x4fed('0xb')](),controller['addProactiveActions']);router[_0x4fed('0x28')](_0x4fed('0x26'),auth['isAuthenticated'](),controller[_0x4fed('0x43')]);router['put']('/:id',auth[_0x4fed('0xb')](),controller[_0x4fed('0x44')]);router[_0x4fed('0x45')](_0x4fed('0xf'),auth[_0x4fed('0xb')](),controller['destroy']);router[_0x4fed('0x45')]('/:id/dispositions',auth[_0x4fed('0xb')](),controller[_0x4fed('0x46')]);router[_0x4fed('0x45')]('/:id/canned_answers',auth[_0x4fed('0xb')](),controller[_0x4fed('0x47')]);router['delete']('/:id/users',auth[_0x4fed('0xb')](),controller[_0x4fed('0x48')]);module[_0x4fed('0x49')]=router;
\ No newline at end of file
+var _0x1595=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','/:id/avatar','getAvatar','/:id/customer_avatar','getInteractions','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','/:id/users','getAgents','post','create','server/files/images/logos/','%s-%s','now','single','file','addLogo','diskStorage','root','format','addAvatar','join','server/files/images/avatars/','originalname','addCustomerAvatar','/:id/system_avatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir','replace','/:id/offline','any','/:id/interactions','addApplications','addProactiveActions','put','update','delete','destroy','/:id/dispositions','removeAnswers','removeAgents','exports','multer','util','connect-timeout','express'];(function(_0x304533,_0x155b69){var _0x48915f=function(_0x191435){while(--_0x191435){_0x304533['push'](_0x304533['shift']());}};_0x48915f(++_0x155b69);}(_0x1595,0x1e6));var _0x5159=function(_0x34dc4f,_0x28d9a1){_0x34dc4f=_0x34dc4f-0x0;var _0x34253e=_0x1595[_0x34dc4f];return _0x34253e;};'use strict';var multer=require(_0x5159('0x0'));var util=require(_0x5159('0x1'));var path=require('path');var timeout=require(_0x5159('0x2'));var express=require(_0x5159('0x3'));var router=express[_0x5159('0x4')]();var fs_extra=require(_0x5159('0x5'));var auth=require(_0x5159('0x6'));var interaction=require(_0x5159('0x7'));var config=require(_0x5159('0x8'));var controller=require('./chatWebsite.controller');router[_0x5159('0x9')]('/',auth[_0x5159('0xa')](),controller[_0x5159('0xb')]);router['get'](_0x5159('0xc'),auth[_0x5159('0xa')](),controller[_0x5159('0xd')]);router['get'](_0x5159('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x5159('0x9')]('/:id/dispositions',auth[_0x5159('0xa')](),controller[_0x5159('0xf')]);router[_0x5159('0x9')](_0x5159('0x10'),auth[_0x5159('0xa')](),controller[_0x5159('0x11')]);router[_0x5159('0x9')](_0x5159('0x12'),controller['getLogo']);router[_0x5159('0x9')](_0x5159('0x13'),controller[_0x5159('0x14')]);router[_0x5159('0x9')](_0x5159('0x15'),controller['getCustomerAvatar']);router[_0x5159('0x9')]('/:id/system_avatar',controller['getSystemAvatar']);router[_0x5159('0x9')]('/:id/interactions',auth[_0x5159('0xa')](),controller[_0x5159('0x16')]);router[_0x5159('0x9')]('/:id/snippet',controller[_0x5159('0x17')]);router[_0x5159('0x9')](_0x5159('0x18'),auth[_0x5159('0xa')](),controller[_0x5159('0x19')]);router[_0x5159('0x9')](_0x5159('0x1a'),auth[_0x5159('0xa')](),controller[_0x5159('0x1b')]);router[_0x5159('0x9')](_0x5159('0x1c'),controller[_0x5159('0x1d')]);router[_0x5159('0x9')](_0x5159('0x1e'),auth[_0x5159('0xa')](),controller['getOfflineMessages']);router[_0x5159('0x9')](_0x5159('0x1f'),auth['isAuthenticated'](),controller[_0x5159('0x20')]);router[_0x5159('0x21')]('/',auth['isAuthenticated'](),controller[_0x5159('0x22')]);router['post']('/:id/dispositions',auth[_0x5159('0xa')](),controller['addDisposition']);router['post'](_0x5159('0x10'),auth[_0x5159('0xa')](),controller['addAnswer']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x15d58e,_0x1e3f88,_0x4ce4d9){_0x4ce4d9(null,path['join'](config['root'],_0x5159('0x23')));},'filename':function(_0x5b6e5f,_0x20f776,_0x3ad28c){_0x3ad28c(null,util['format'](_0x5159('0x24'),Date[_0x5159('0x25')](),_0x20f776['originalname']));}})});router[_0x5159('0x21')](_0x5159('0x12'),upload[_0x5159('0x26')](_0x5159('0x27')),controller[_0x5159('0x28')]);var upload=multer({'storage':multer[_0x5159('0x29')]({'destination':function(_0x21a00a,_0x9033a,_0x53de23){_0x53de23(null,path['join'](config[_0x5159('0x2a')],'server/files/images/avatars/'));},'filename':function(_0x357b20,_0x23c339,_0x4acc2f){_0x4acc2f(null,util[_0x5159('0x2b')]('%s-%s',Date[_0x5159('0x25')](),_0x23c339['originalname']));}})});router['post'](_0x5159('0x13'),upload[_0x5159('0x26')]('file'),controller[_0x5159('0x2c')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1ef81d,_0x1e6909,_0x3c558f){_0x3c558f(null,path[_0x5159('0x2d')](config[_0x5159('0x2a')],_0x5159('0x2e')));},'filename':function(_0x4709ac,_0x3cc04c,_0x1b539e){_0x1b539e(null,util[_0x5159('0x2b')](_0x5159('0x24'),Date['now'](),_0x3cc04c[_0x5159('0x2f')]));}})});router[_0x5159('0x21')](_0x5159('0x15'),upload[_0x5159('0x26')](_0x5159('0x27')),controller[_0x5159('0x30')]);var upload=multer({'storage':multer[_0x5159('0x29')]({'destination':function(_0x2c5272,_0x390ba5,_0x12d473){_0x12d473(null,path[_0x5159('0x2d')](config['root'],_0x5159('0x2e')));},'filename':function(_0x1aa202,_0x3a5b89,_0x5bf667){_0x5bf667(null,util[_0x5159('0x2b')](_0x5159('0x24'),Date['now'](),_0x3a5b89['originalname']));}})});router['post'](_0x5159('0x31'),upload[_0x5159('0x26')]('file'),controller['addSystemAvatar']);router[_0x5159('0x21')](_0x5159('0x32'),controller[_0x5159('0x33')]);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0x6af5f7,_0x277f03,_0x2ff777){const _0x3aadda=path[_0x5159('0x2d')](config[_0x5159('0x2a')],_0x5159('0x34'),_0x5159('0x35'),_0x5159('0x36'));fs_extra[_0x5159('0x37')](_0x3aadda,function(){_0x2ff777(null,_0x3aadda);});},'filename':function(_0x57597c,_0x3b71a0,_0x5ca0d6){const _0x4d2bee=_0x3b71a0[_0x5159('0x2f')][_0x5159('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x54fa12=path['extname'](_0x4d2bee);const _0x2e6f41=Date[_0x5159('0x25')]()+'-'+_0x4d2bee['replace'](_0x54fa12,'')+_0x54fa12;_0x5ca0d6(null,_0x2e6f41);}})});router[_0x5159('0x21')](_0x5159('0x39'),offlineUploadMulter[_0x5159('0x3a')](),controller['offline']);router[_0x5159('0x21')](_0x5159('0x3b'),auth[_0x5159('0xa')](),controller['addInteraction']);router['post'](_0x5159('0x18'),auth[_0x5159('0xa')](),controller[_0x5159('0x3c')]);router['post'](_0x5159('0x1a'),auth[_0x5159('0xa')](),controller[_0x5159('0x3d')]);router['post']('/:id/users',auth[_0x5159('0xa')](),controller['addAgents']);router[_0x5159('0x3e')]('/:id',auth[_0x5159('0xa')](),controller[_0x5159('0x3f')]);router[_0x5159('0x40')](_0x5159('0xe'),auth['isAuthenticated'](),controller[_0x5159('0x41')]);router['delete'](_0x5159('0x42'),auth[_0x5159('0xa')](),controller['removeDispositions']);router[_0x5159('0x40')](_0x5159('0x10'),auth[_0x5159('0xa')](),controller[_0x5159('0x43')]);router[_0x5159('0x40')](_0x5159('0x1f'),auth[_0x5159('0xa')](),controller[_0x5159('0x44')]);module[_0x5159('0x45')]=router;
\ No newline at end of file
index 02b8a8d..4480efc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb15=['ENUM','AmazonAWS','Google','sequelize','exports','STRING'];(function(_0x5c5889,_0x4a3145){var _0x3b9580=function(_0xd8b841){while(--_0xd8b841){_0x5c5889['push'](_0x5c5889['shift']());}};_0x3b9580(++_0x4a3145);}(_0xfb15,0x12f));var _0x5fb1=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xfb15[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require(_0x5fb1('0x0'));module[_0x5fb1('0x1')]={'name':{'type':Sequelize[_0x5fb1('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x5fb1('0x3')](_0x5fb1('0x4'),_0x5fb1('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x5fb1('0x2')]}};
\ No newline at end of file
+var _0x0c42=['AmazonAWS','sequelize','exports','STRING','ENUM'];(function(_0x4863d2,_0x354017){var _0x37cab8=function(_0x4acf83){while(--_0x4acf83){_0x4863d2['push'](_0x4863d2['shift']());}};_0x37cab8(++_0x354017);}(_0x0c42,0x191));var _0x20c4=function(_0x12d282,_0xf76761){_0x12d282=_0x12d282-0x0;var _0xf9b9f8=_0x0c42[_0x12d282];return _0xf9b9f8;};'use strict';var Sequelize=require(_0x20c4('0x0'));module[_0x20c4('0x1')]={'name':{'type':Sequelize[_0x20c4('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x20c4('0x3')](_0x20c4('0x4'),'Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x20c4('0x2')]}};
\ No newline at end of file
index 817daf2..a693360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','stack','name','send','index','CloudProvider','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','findAll','rows','catch','keys','find','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x5f2f,0x73));var _0xf5f2=function(_0x1f0186,_0xdf728c){_0x1f0186=_0x1f0186-0x0;var _0x193747=_0x5f2f[_0x1f0186];return _0x193747;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf5f2('0x14'));var utils=require(_0xf5f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf5f2('0x16'));var db=require(_0xf5f2('0x17'))['db'];function respondWithStatusCode(_0x331482,_0x3f2997){_0x3f2997=_0x3f2997||0xcc;return function(_0x59bb6c){if(_0x59bb6c){return _0x331482[_0xf5f2('0x18')](_0x3f2997);}return _0x331482['status'](_0x3f2997)[_0xf5f2('0x19')]();};}function respondWithResult(_0xea612c,_0x269909){_0x269909=_0x269909||0xc8;return function(_0x1c1a5c){if(_0x1c1a5c){return _0xea612c[_0xf5f2('0x1a')](_0x269909)['json'](_0x1c1a5c);}};}function respondWithFilteredResult(_0xafe430,_0x286197){return function(_0x17d656){if(_0x17d656){var _0x1b6dd2=typeof _0x286197[_0xf5f2('0x1b')]===_0xf5f2('0x1c')&&typeof _0x286197[_0xf5f2('0x1d')]===_0xf5f2('0x1c');var _0x11f702=_0x17d656[_0xf5f2('0x1e')];var _0x20fccd=_0x1b6dd2?0x0:_0x286197[_0xf5f2('0x1b')];var _0x4ff59b=_0x1b6dd2?_0x17d656[_0xf5f2('0x1e')]:_0x286197[_0xf5f2('0x1b')]+_0x286197[_0xf5f2('0x1d')];var _0x1bf655;if(_0x4ff59b>=_0x11f702){_0x4ff59b=_0x11f702;_0x1bf655=0xc8;}else{_0x1bf655=0xce;}_0xafe430['status'](_0x1bf655);return _0xafe430[_0xf5f2('0x1f')](_0xf5f2('0x20'),_0x20fccd+'-'+_0x4ff59b+'/'+_0x11f702)['json'](_0x17d656);}return null;};}function patchUpdates(_0x47acfc){return function(_0x2d2805){try{jsonpatch[_0xf5f2('0x21')](_0x2d2805,_0x47acfc,!![]);}catch(_0x4ae323){return BPromise[_0xf5f2('0x22')](_0x4ae323);}return _0x2d2805[_0xf5f2('0x23')]();};}function saveUpdates(_0x39e44a,_0x39c024){return function(_0x36f1cb){if(_0x36f1cb){return _0x36f1cb['update'](_0x39e44a)[_0xf5f2('0x24')](function(_0x4669a6){return _0x4669a6;});}return null;};}function removeEntity(_0x4e8bda,_0x2833fe){return function(_0x287ad5){if(_0x287ad5){return _0x287ad5['destroy']()['then'](function(){_0x4e8bda[_0xf5f2('0x1a')](0xcc)[_0xf5f2('0x19')]();});}};}function handleEntityNotFound(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(!_0xf6c58d){_0x13da6f[_0xf5f2('0x18')](0x194);}return _0xf6c58d;};}function handleError(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0x1f4;return function(_0x294414){logger['error'](_0x294414[_0xf5f2('0x25')]);if(_0x294414[_0xf5f2('0x26')]){delete _0x294414[_0xf5f2('0x26')];}_0x13a3be[_0xf5f2('0x1a')](_0x281ec8)[_0xf5f2('0x27')](_0x294414);};}exports[_0xf5f2('0x28')]=function(_0x5b6672,_0x53cb96){var _0x22c826={},_0x14c829={},_0x11c771={'count':0x0,'rows':[]};var _0x5027ab=_['map'](db[_0xf5f2('0x29')][_0xf5f2('0x2a')],function(_0x17394a){return{'name':_0x17394a[_0xf5f2('0x2b')],'type':_0x17394a[_0xf5f2('0x2c')]['key']};});_0x14c829['model']=_[_0xf5f2('0x2d')](_0x5027ab,'name');_0x14c829[_0xf5f2('0x2e')]=_['keys'](_0x5b6672[_0xf5f2('0x2e')]);_0x14c829[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],_0x14c829[_0xf5f2('0x2e')]);_0x22c826[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],qs['fields'](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x22c826[_0xf5f2('0x32')]=_0x22c826[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x22c826[_0xf5f2('0x32')]:_0x14c829[_0xf5f2('0x31')];if(!_0x5b6672['query'][_0xf5f2('0x35')](_0xf5f2('0x36'))){_0x22c826['limit']=qs[_0xf5f2('0x1d')](_0x5b6672['query'][_0xf5f2('0x1d')]);_0x22c826[_0xf5f2('0x1b')]=qs[_0xf5f2('0x1b')](_0x5b6672[_0xf5f2('0x2e')]['offset']);}_0x22c826['order']=qs[_0xf5f2('0x37')](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x37')]);_0x22c826['where']=qs[_0xf5f2('0x2f')](_['pick'](_0x5b6672[_0xf5f2('0x2e')],_0x14c829['filters']),_0x5027ab);if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]){_0x22c826['where']=_[_0xf5f2('0x39')](_0x22c826[_0xf5f2('0x3a')],{'$or':_[_0xf5f2('0x2d')](_0x5027ab,function(_0x35f738){if(_0x35f738['type']!=='VIRTUAL'){var _0x3d328f={};_0x3d328f[_0x35f738[_0xf5f2('0x26')]]={'$like':'%'+_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]+'%'};return _0x3d328f;}})});}_0x22c826=_[_0xf5f2('0x39')]({},_0x22c826,_0x5b6672[_0xf5f2('0x3b')]);var _0x2bc20e={'where':_0x22c826['where']};return db[_0xf5f2('0x29')][_0xf5f2('0x1e')](_0x2bc20e)['then'](function(_0xc6a1ae){_0x11c771[_0xf5f2('0x1e')]=_0xc6a1ae;if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x22c826[_0xf5f2('0x3d')]=[{'all':!![]}];}return db[_0xf5f2('0x29')][_0xf5f2('0x3e')](_0x22c826);})[_0xf5f2('0x24')](function(_0x574f24){_0x11c771[_0xf5f2('0x3f')]=_0x574f24;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x40')](handleError(_0x53cb96,null));};exports['show']=function(_0x509dbc,_0x59eb00){var _0x76d21b={'raw':!![],'where':{'id':_0x509dbc['params']['id']}},_0x2ad13c={};_0x2ad13c[_0xf5f2('0x31')]=_[_0xf5f2('0x41')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x2ad13c[_0xf5f2('0x2e')]=_[_0xf5f2('0x41')](_0x509dbc[_0xf5f2('0x2e')]);_0x2ad13c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x2ad13c[_0xf5f2('0x31')],_0x2ad13c[_0xf5f2('0x2e')]);_0x76d21b[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x2ad13c[_0xf5f2('0x31')],qs['fields'](_0x509dbc[_0xf5f2('0x2e')]['fields']));_0x76d21b[_0xf5f2('0x32')]=_0x76d21b[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x76d21b[_0xf5f2('0x32')]:_0x2ad13c[_0xf5f2('0x31')];if(_0x509dbc[_0xf5f2('0x2e')]['includeAll']){_0x76d21b[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x76d21b=_[_0xf5f2('0x39')]({},_0x76d21b,_0x509dbc[_0xf5f2('0x3b')]);return db[_0xf5f2('0x29')][_0xf5f2('0x42')](_0x76d21b)[_0xf5f2('0x24')](handleEntityNotFound(_0x59eb00,null))[_0xf5f2('0x24')](respondWithResult(_0x59eb00,null))[_0xf5f2('0x40')](handleError(_0x59eb00,null));};exports['create']=function(_0x35dece,_0x33ec29){return db[_0xf5f2('0x29')]['create'](_0x35dece[_0xf5f2('0x43')],{})[_0xf5f2('0x24')](respondWithResult(_0x33ec29,0xc9))[_0xf5f2('0x40')](handleError(_0x33ec29,null));};exports['update']=function(_0x57a7cb,_0x7bb942){if(_0x57a7cb[_0xf5f2('0x43')]['id']){delete _0x57a7cb['body']['id'];}return db[_0xf5f2('0x29')]['find']({'where':{'id':_0x57a7cb[_0xf5f2('0x44')]['id']}})['then'](handleEntityNotFound(_0x7bb942,null))[_0xf5f2('0x24')](saveUpdates(_0x57a7cb['body'],null))[_0xf5f2('0x24')](respondWithResult(_0x7bb942,null))[_0xf5f2('0x40')](handleError(_0x7bb942,null));};exports[_0xf5f2('0x45')]=function(_0x11a083,_0x4fa738){return db[_0xf5f2('0x29')][_0xf5f2('0x42')]({'where':{'id':_0x11a083['params']['id']}})['then'](handleEntityNotFound(_0x4fa738,null))[_0xf5f2('0x24')](removeEntity(_0x4fa738,null))[_0xf5f2('0x40')](handleError(_0x4fa738,null));};
\ No newline at end of file
+var _0x2ef3=['update','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','CloudProvider','then','includeAll','include','findAll','catch','show','params','keys','create','body','find','destroy','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'];(function(_0x596dbe,_0x2b3464){var _0x4f98f0=function(_0x2b231c){while(--_0x2b231c){_0x596dbe['push'](_0x596dbe['shift']());}};_0x4f98f0(++_0x2b3464);}(_0x2ef3,0xba));var _0x32ef=function(_0x5ddb24,_0x81cab2){_0x5ddb24=_0x5ddb24-0x0;var _0x3578b8=_0x2ef3[_0x5ddb24];return _0x3578b8;};'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['CloudProvider'][_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')]=[{'all':!![]}];}return db[_0x32ef('0x3d')][_0x32ef('0x41')](_0x5a04cd);})[_0x32ef('0x3e')](function(_0x3c0e44){_0x3c569d['rows']=_0x3c0e44;return _0x3c569d;})['then'](respondWithFilteredResult(_0x2f5d06,_0x5a04cd))[_0x32ef('0x42')](handleError(_0x2f5d06,null));};exports[_0x32ef('0x43')]=function(_0x2a33dd,_0x765c63){var _0x5dca14={'raw':!![],'where':{'id':_0x2a33dd[_0x32ef('0x44')]['id']}},_0x2901a1={};_0x2901a1['model']=_[_0x32ef('0x45')](db['CloudProvider'][_0x32ef('0x2a')]);_0x2901a1[_0x32ef('0x2f')]=_[_0x32ef('0x45')](_0x2a33dd[_0x32ef('0x2f')]);_0x2901a1[_0x32ef('0x30')]=_[_0x32ef('0x32')](_0x2901a1[_0x32ef('0x2e')],_0x2901a1[_0x32ef('0x2f')]);_0x5dca14[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x2901a1['model'],qs[_0x32ef('0x33')](_0x2a33dd['query'][_0x32ef('0x33')]));_0x5dca14[_0x32ef('0x31')]=_0x5dca14[_0x32ef('0x31')]['length']?_0x5dca14[_0x32ef('0x31')]:_0x2901a1[_0x32ef('0x2e')];if(_0x2a33dd[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5dca14[_0x32ef('0x40')]=[{'all':!![]}];}_0x5dca14=_[_0x32ef('0x3b')]({},_0x5dca14,_0x2a33dd[_0x32ef('0x3c')]);return db['CloudProvider']['find'](_0x5dca14)[_0x32ef('0x3e')](handleEntityNotFound(_0x765c63,null))[_0x32ef('0x3e')](respondWithResult(_0x765c63,null))[_0x32ef('0x42')](handleError(_0x765c63,null));};exports[_0x32ef('0x46')]=function(_0x209361,_0xd67dc9){return db[_0x32ef('0x3d')][_0x32ef('0x46')](_0x209361[_0x32ef('0x47')],{})[_0x32ef('0x3e')](respondWithResult(_0xd67dc9,0xc9))[_0x32ef('0x42')](handleError(_0xd67dc9,null));};exports[_0x32ef('0x24')]=function(_0x36a65c,_0x4c2534){if(_0x36a65c[_0x32ef('0x47')]['id']){delete _0x36a65c[_0x32ef('0x47')]['id'];}return db[_0x32ef('0x3d')][_0x32ef('0x48')]({'where':{'id':_0x36a65c[_0x32ef('0x44')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x4c2534,null))[_0x32ef('0x3e')](saveUpdates(_0x36a65c[_0x32ef('0x47')],null))[_0x32ef('0x3e')](respondWithResult(_0x4c2534,null))[_0x32ef('0x42')](handleError(_0x4c2534,null));};exports[_0x32ef('0x49')]=function(_0x29d456,_0x272377){return db[_0x32ef('0x3d')][_0x32ef('0x48')]({'where':{'id':_0x29d456[_0x32ef('0x44')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x272377,null))[_0x32ef('0x3e')](removeEntity(_0x272377,null))['catch'](handleError(_0x272377,null));};
\ No newline at end of file
index e5082a1..1685905 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bc3=['CloudProvider','cloud_providers','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cloudProvider.attributes','exports'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x7bc3,0x152));var _0x37bc=function(_0x3a09a5,_0x5ac78a){_0x3a09a5=_0x3a09a5-0x0;var _0x982ad4=_0x7bc3[_0x3a09a5];return _0x982ad4;};'use strict';var _=require('lodash');var util=require(_0x37bc('0x0'));var logger=require(_0x37bc('0x1'))(_0x37bc('0x2'));var moment=require(_0x37bc('0x3'));var BPromise=require(_0x37bc('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x37bc('0x5'));var rimraf=require(_0x37bc('0x6'));var config=require(_0x37bc('0x7'));var attributes=require(_0x37bc('0x8'));module[_0x37bc('0x9')]=function(_0x4e09b5,_0x556577){return _0x4e09b5['define'](_0x37bc('0xa'),attributes,{'tableName':_0x37bc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5db6=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cloudProvider.attributes','exports','define','CloudProvider','lodash'];(function(_0x46323b,_0x3a5f31){var _0x11cec3=function(_0x1bd53f){while(--_0x1bd53f){_0x46323b['push'](_0x46323b['shift']());}};_0x11cec3(++_0x3a5f31);}(_0x5db6,0x1c6));var _0x65db=function(_0x23e3eb,_0x419ae8){_0x23e3eb=_0x23e3eb-0x0;var _0x1c9ab6=_0x5db6[_0x23e3eb];return _0x1c9ab6;};'use strict';var _=require(_0x65db('0x0'));var util=require(_0x65db('0x1'));var logger=require(_0x65db('0x2'))(_0x65db('0x3'));var moment=require(_0x65db('0x4'));var BPromise=require(_0x65db('0x5'));var rp=require(_0x65db('0x6'));var fs=require('fs');var path=require(_0x65db('0x7'));var rimraf=require(_0x65db('0x8'));var config=require('../../config/environment');var attributes=require(_0x65db('0x9'));module[_0x65db('0xa')]=function(_0x46d3ae,_0x58b10a){return _0x46d3ae[_0x65db('0xb')](_0x65db('0xc'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6fc9939..89f62c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd237=['client','request','then','info','CloudProvider,\x20%s,\x20%s','debug','CloudProvider,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x59a727,_0x1deda8){var _0x59fab7=function(_0x55e490){while(--_0x55e490){_0x59a727['push'](_0x59a727['shift']());}};_0x59fab7(++_0x1deda8);}(_0xd237,0x14f));var _0x7d23=function(_0x13606d,_0x30f265){_0x13606d=_0x13606d-0x0;var _0x1b85b0=_0xd237[_0x13606d];return _0x1b85b0;};'use strict';var _=require(_0x7d23('0x0'));var util=require(_0x7d23('0x1'));var moment=require(_0x7d23('0x2'));var BPromise=require(_0x7d23('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7d23('0x4'));var db=require(_0x7d23('0x5'))['db'];var utils=require(_0x7d23('0x6'));var logger=require(_0x7d23('0x7'))(_0x7d23('0x8'));var config=require(_0x7d23('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7d23('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5ca126,_0x48358f,_0xc43371){return new BPromise(function(_0x42c334,_0x6ce28d){return client[_0x7d23('0xb')](_0x5ca126,_0xc43371)[_0x7d23('0xc')](function(_0x23f1d6){logger[_0x7d23('0xd')](_0x7d23('0xe'),_0x48358f,'request\x20sent');logger[_0x7d23('0xf')](_0x7d23('0x10'),_0x48358f,_0x7d23('0x11'),JSON['stringify'](_0x23f1d6));if(_0x23f1d6[_0x7d23('0x12')]){if(_0x23f1d6['error'][_0x7d23('0x13')]===0x1f4){logger[_0x7d23('0x12')](_0x7d23('0xe'),_0x48358f,_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);return _0x6ce28d(_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x48358f,_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);return _0x42c334(_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);}else{logger['info'](_0x7d23('0xe'),_0x48358f,'request\x20sent');_0x42c334(_0x23f1d6[_0x7d23('0x15')]['message']);}})[_0x7d23('0x16')](function(_0x46a35b){logger[_0x7d23('0x12')](_0x7d23('0xe'),_0x48358f,_0x46a35b);_0x6ce28d(_0x46a35b);});});}
\ No newline at end of file
+var _0x3a15=['code','error','message','CloudProvider,\x20%s,\x20%s','info','catch','lodash','moment','randomstring','ioredis','../../mysqldb','rpc','http','request','then','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s'];(function(_0x787486,_0x447212){var _0x25ba71=function(_0x526148){while(--_0x526148){_0x787486['push'](_0x787486['shift']());}};_0x25ba71(++_0x447212);}(_0x3a15,0xde));var _0x53a1=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0x3a15[_0x22b68a];return _0x1ac67a;};'use strict';var _=require(_0x53a1('0x0'));var util=require('util');var moment=require(_0x53a1('0x1'));var BPromise=require('bluebird');var rs=require(_0x53a1('0x2'));var fs=require('fs');var Redis=require(_0x53a1('0x3'));var db=require(_0x53a1('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x53a1('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x53a1('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x5a0168,_0x457bf4,_0x2ec206){return new BPromise(function(_0x439447,_0x5252d4){return client[_0x53a1('0x7')](_0x5a0168,_0x2ec206)[_0x53a1('0x8')](function(_0x49e45a){logger['info']('CloudProvider,\x20%s,\x20%s',_0x457bf4,_0x53a1('0x9'));logger[_0x53a1('0xa')](_0x53a1('0xb'),_0x457bf4,_0x53a1('0x9'),JSON['stringify'](_0x49e45a));if(_0x49e45a['error']){if(_0x49e45a['error'][_0x53a1('0xc')]===0x1f4){logger[_0x53a1('0xd')]('CloudProvider,\x20%s,\x20%s',_0x457bf4,_0x49e45a[_0x53a1('0xd')][_0x53a1('0xe')]);return _0x5252d4(_0x49e45a[_0x53a1('0xd')]['message']);}logger[_0x53a1('0xd')](_0x53a1('0xf'),_0x457bf4,_0x49e45a[_0x53a1('0xd')][_0x53a1('0xe')]);return _0x439447(_0x49e45a[_0x53a1('0xd')][_0x53a1('0xe')]);}else{logger[_0x53a1('0x10')](_0x53a1('0xf'),_0x457bf4,_0x53a1('0x9'));_0x439447(_0x49e45a['result'][_0x53a1('0xe')]);}})[_0x53a1('0x11')](function(_0x1793e0){logger[_0x53a1('0xd')](_0x53a1('0xf'),_0x457bf4,_0x1793e0);_0x5252d4(_0x1793e0);});});}
\ No newline at end of file
index b8e89b2..f89f691 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefcf=['connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','/:id','show','post','create','update','delete','destroy','exports','multer','util','path'];(function(_0x46ea03,_0x596b2a){var _0x398efe=function(_0x11286a){while(--_0x11286a){_0x46ea03['push'](_0x46ea03['shift']());}};_0x398efe(++_0x596b2a);}(_0xefcf,0x184));var _0xfefc=function(_0x3b2a34,_0x55027c){_0x3b2a34=_0x3b2a34-0x0;var _0x3304cd=_0xefcf[_0x3b2a34];return _0x3304cd;};'use strict';var multer=require(_0xfefc('0x0'));var util=require(_0xfefc('0x1'));var path=require(_0xfefc('0x2'));var timeout=require(_0xfefc('0x3'));var express=require(_0xfefc('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xfefc('0x5'));var interaction=require(_0xfefc('0x6'));var config=require(_0xfefc('0x7'));var controller=require('./cloudProvider.controller');router['get']('/',auth[_0xfefc('0x8')](),controller['index']);router['get'](_0xfefc('0x9'),auth[_0xfefc('0x8')](),controller[_0xfefc('0xa')]);router[_0xfefc('0xb')]('/',auth[_0xfefc('0x8')](),controller[_0xfefc('0xc')]);router['put']('/:id',auth[_0xfefc('0x8')](),controller[_0xfefc('0xd')]);router[_0xfefc('0xe')](_0xfefc('0x9'),auth[_0xfefc('0x8')](),controller[_0xfefc('0xf')]);module[_0xfefc('0x10')]=router;
\ No newline at end of file
+var _0x2f61=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x1e0f06,_0x26aeca){var _0x2a1ebc=function(_0x589a4a){while(--_0x589a4a){_0x1e0f06['push'](_0x1e0f06['shift']());}};_0x2a1ebc(++_0x26aeca);}(_0x2f61,0x15c));var _0x12f6=function(_0x2e8010,_0x18c42c){_0x2e8010=_0x2e8010-0x0;var _0x46fa6d=_0x2f61[_0x2e8010];return _0x46fa6d;};'use strict';var multer=require(_0x12f6('0x0'));var util=require(_0x12f6('0x1'));var path=require('path');var timeout=require(_0x12f6('0x2'));var express=require(_0x12f6('0x3'));var router=express[_0x12f6('0x4')]();var fs_extra=require(_0x12f6('0x5'));var auth=require(_0x12f6('0x6'));var interaction=require(_0x12f6('0x7'));var config=require(_0x12f6('0x8'));var controller=require(_0x12f6('0x9'));router[_0x12f6('0xa')]('/',auth[_0x12f6('0xb')](),controller[_0x12f6('0xc')]);router[_0x12f6('0xa')](_0x12f6('0xd'),auth[_0x12f6('0xb')](),controller[_0x12f6('0xe')]);router[_0x12f6('0xf')]('/',auth[_0x12f6('0xb')](),controller[_0x12f6('0x10')]);router[_0x12f6('0x11')]('/:id',auth[_0x12f6('0xb')](),controller[_0x12f6('0x12')]);router[_0x12f6('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x12f6('0x14')]);module[_0x12f6('0x15')]=router;
\ No newline at end of file
index 7bed676..6dc3aa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28ed=['exports','name','STRING'];(function(_0x4ca333,_0x1218a3){var _0x13b2e1=function(_0x1eaf45){while(--_0x1eaf45){_0x4ca333['push'](_0x4ca333['shift']());}};_0x13b2e1(++_0x1218a3);}(_0x28ed,0x1b9));var _0xd28e=function(_0x4523a6,_0xe60a70){_0x4523a6=_0x4523a6-0x0;var _0x1b461c=_0x28ed[_0x4523a6];return _0x1b461c;};'use strict';var Sequelize=require('sequelize');module[_0xd28e('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xd28e('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xd28e('0x2')]},'companyId':{'type':Sequelize[_0xd28e('0x2')]},'website':{'type':Sequelize[_0xd28e('0x2')]},'phone':{'type':Sequelize[_0xd28e('0x2')]},'fax':{'type':Sequelize[_0xd28e('0x2')]},'type':{'type':Sequelize[_0xd28e('0x2')]},'street':{'type':Sequelize[_0xd28e('0x2')]},'postalCode':{'type':Sequelize[_0xd28e('0x2')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xd28e('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xd28e('0x2')]},'sStreet':{'type':Sequelize[_0xd28e('0x2')]},'sPostalCode':{'type':Sequelize[_0xd28e('0x2')]},'sCity':{'type':Sequelize[_0xd28e('0x2')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd28e('0x2')]}};
\ No newline at end of file
+var _0x3199=['sequelize','exports','STRING'];(function(_0x3e7727,_0x34c86c){var _0x1b3029=function(_0x35fbd9){while(--_0x35fbd9){_0x3e7727['push'](_0x3e7727['shift']());}};_0x1b3029(++_0x34c86c);}(_0x3199,0x1bc));var _0x9319=function(_0x3e1518,_0x474f93){_0x3e1518=_0x3e1518-0x0;var _0x2ed837=_0x3199[_0x3e1518];return _0x2ed837;};'use strict';var Sequelize=require(_0x9319('0x0'));module[_0x9319('0x1')]={'name':{'type':Sequelize[_0x9319('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x9319('0x2')]},'companyId':{'type':Sequelize[_0x9319('0x2')]},'website':{'type':Sequelize[_0x9319('0x2')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x9319('0x2')]},'type':{'type':Sequelize[_0x9319('0x2')]},'street':{'type':Sequelize[_0x9319('0x2')]},'postalCode':{'type':Sequelize[_0x9319('0x2')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x9319('0x2')]},'email':{'type':Sequelize[_0x9319('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x9319('0x2')]},'sStreet':{'type':Sequelize[_0x9319('0x2')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0x9319('0x2')]},'sCountry':{'type':Sequelize[_0x9319('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 758eb0d..dbbc920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebdd=['json','offset','undefined','limit','count','set','apply','save','then','destroy','Companies','UserProfileResource','error','stack','name','send','CmCompany','describe','keys','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','filter','options','includeAll','include','findAll','rows','catch','show','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','CmContact','ids','getContacts','findOne','rawAttributes','map','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status'];(function(_0x14d424,_0x4c84c6){var _0x4d954c=function(_0x28d093){while(--_0x28d093){_0x14d424['push'](_0x14d424['shift']());}};_0x4d954c(++_0x4c84c6);}(_0xebdd,0xe7));var _0xdebd=function(_0x20bc10,_0x35bed9){_0x20bc10=_0x20bc10-0x0;var _0x3bd5ce=_0xebdd[_0x20bc10];return _0x3bd5ce;};'use strict';var emlformat=require(_0xdebd('0x0'));var rimraf=require(_0xdebd('0x1'));var zipdir=require(_0xdebd('0x2'));var jsonpatch=require(_0xdebd('0x3'));var rp=require('request-promise');var moment=require(_0xdebd('0x4'));var BPromise=require(_0xdebd('0x5'));var Mustache=require('mustache');var util=require(_0xdebd('0x6'));var path=require('path');var sox=require(_0xdebd('0x7'));var csv=require(_0xdebd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdebd('0x9'));var _=require(_0xdebd('0xa'));var squel=require(_0xdebd('0xb'));var crypto=require(_0xdebd('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xdebd('0xd'));var toCsv=require(_0xdebd('0x8'));var querystring=require(_0xdebd('0xe'));var Papa=require(_0xdebd('0xf'));var Redis=require('ioredis');var authService=require(_0xdebd('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xdebd('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdebd('0x12'))(_0xdebd('0x13'));var utils=require(_0xdebd('0x14'));var config=require(_0xdebd('0x15'));var licenseUtil=require(_0xdebd('0x16'));var db=require(_0xdebd('0x17'))['db'];function respondWithStatusCode(_0x1eb2ed,_0x217214){_0x217214=_0x217214||0xcc;return function(_0x228636){if(_0x228636){return _0x1eb2ed[_0xdebd('0x18')](_0x217214);}return _0x1eb2ed['status'](_0x217214)[_0xdebd('0x19')]();};}function respondWithResult(_0x7560a1,_0x33c8f8){_0x33c8f8=_0x33c8f8||0xc8;return function(_0x19a4ac){if(_0x19a4ac){return _0x7560a1[_0xdebd('0x1a')](_0x33c8f8)[_0xdebd('0x1b')](_0x19a4ac);}};}function respondWithFilteredResult(_0x20cc48,_0x54dda7){return function(_0x5cb517){if(_0x5cb517){var _0x134088=typeof _0x54dda7[_0xdebd('0x1c')]===_0xdebd('0x1d')&&typeof _0x54dda7[_0xdebd('0x1e')]==='undefined';var _0x432c54=_0x5cb517[_0xdebd('0x1f')];var _0x26507f=_0x134088?0x0:_0x54dda7[_0xdebd('0x1c')];var _0x561c64=_0x134088?_0x5cb517[_0xdebd('0x1f')]:_0x54dda7[_0xdebd('0x1c')]+_0x54dda7['limit'];var _0x34d1b1;if(_0x561c64>=_0x432c54){_0x561c64=_0x432c54;_0x34d1b1=0xc8;}else{_0x34d1b1=0xce;}_0x20cc48['status'](_0x34d1b1);return _0x20cc48[_0xdebd('0x20')]('Content-Range',_0x26507f+'-'+_0x561c64+'/'+_0x432c54)[_0xdebd('0x1b')](_0x5cb517);}return null;};}function patchUpdates(_0x25665c){return function(_0x3e3dec){try{jsonpatch[_0xdebd('0x21')](_0x3e3dec,_0x25665c,!![]);}catch(_0x103238){return BPromise['reject'](_0x103238);}return _0x3e3dec[_0xdebd('0x22')]();};}function saveUpdates(_0x583191,_0x3847c7){return function(_0x1c2048){if(_0x1c2048){return _0x1c2048['update'](_0x583191)[_0xdebd('0x23')](function(_0x23f7d2){return _0x23f7d2;});}return null;};}function removeEntity(_0x256c44,_0x2ce326){return function(_0x3b54a8){if(_0x3b54a8){return _0x3b54a8[_0xdebd('0x24')]()[_0xdebd('0x23')](function(){var _0x31bcb4=_0x3b54a8['get']({'plain':!![]});var _0x762974=_0xdebd('0x25');return db[_0xdebd('0x26')][_0xdebd('0x24')]({'where':{'type':_0x762974,'resourceId':_0x31bcb4['id']}})[_0xdebd('0x23')](function(){return _0x3b54a8;});})[_0xdebd('0x23')](function(){_0x256c44[_0xdebd('0x1a')](0xcc)[_0xdebd('0x19')]();});}};}function handleEntityNotFound(_0x59a3c7,_0x2195f9){return function(_0x14d1a4){if(!_0x14d1a4){_0x59a3c7['sendStatus'](0x194);}return _0x14d1a4;};}function handleError(_0x4092ca,_0x5dbd8a){_0x5dbd8a=_0x5dbd8a||0x1f4;return function(_0x22c7cf){logger[_0xdebd('0x27')](_0x22c7cf[_0xdebd('0x28')]);if(_0x22c7cf[_0xdebd('0x29')]){delete _0x22c7cf[_0xdebd('0x29')];}_0x4092ca['status'](_0x5dbd8a)[_0xdebd('0x2a')](_0x22c7cf);};}exports['index']=function(_0x4436c8,_0x31bceb){var _0x1d45e0={},_0x33c681={},_0x40385b={'count':0x0,'rows':[]};return db[_0xdebd('0x2b')][_0xdebd('0x2c')]()[_0xdebd('0x23')](function(_0x473d69){_0x33c681['model']=_[_0xdebd('0x2d')](_0x473d69);_0x33c681['query']=_[_0xdebd('0x2d')](_0x4436c8['query']);_0x33c681['filters']=_[_0xdebd('0x2e')](_0x33c681[_0xdebd('0x2f')],_0x33c681[_0xdebd('0x30')]);_0x1d45e0[_0xdebd('0x31')]=_[_0xdebd('0x2e')](_0x33c681[_0xdebd('0x2f')],qs[_0xdebd('0x32')](_0x4436c8['query'][_0xdebd('0x32')]));_0x1d45e0[_0xdebd('0x31')]=_0x1d45e0[_0xdebd('0x31')][_0xdebd('0x33')]?_0x1d45e0['attributes']:_0x33c681[_0xdebd('0x2f')];if(!_0x4436c8[_0xdebd('0x30')][_0xdebd('0x34')](_0xdebd('0x35'))){_0x1d45e0[_0xdebd('0x1e')]=qs['limit'](_0x4436c8['query']['limit']);_0x1d45e0[_0xdebd('0x1c')]=qs[_0xdebd('0x1c')](_0x4436c8['query']['offset']);}_0x1d45e0[_0xdebd('0x36')]=qs[_0xdebd('0x37')](_0x4436c8[_0xdebd('0x30')][_0xdebd('0x37')]);_0x1d45e0[_0xdebd('0x38')]=qs[_0xdebd('0x39')](_[_0xdebd('0x3a')](_0x4436c8[_0xdebd('0x30')],_0x33c681[_0xdebd('0x39')]),_0x473d69);if(_0x4436c8[_0xdebd('0x30')]['filter']){_0x1d45e0[_0xdebd('0x38')]=_[_0xdebd('0x3b')](_0x1d45e0[_0xdebd('0x38')],{'$or':_['map'](_0x1d45e0[_0xdebd('0x31')],function(_0x4e5a4e){var _0x45d33a={};_0x45d33a[_0x4e5a4e]={'$like':'%'+_0x4436c8[_0xdebd('0x30')][_0xdebd('0x3c')]+'%'};return _0x45d33a;})});}_0x1d45e0=_[_0xdebd('0x3b')]({},_0x1d45e0,_0x4436c8[_0xdebd('0x3d')]);var _0x119b6a={'where':_0x1d45e0['where']};return db['CmCompany'][_0xdebd('0x1f')](_0x119b6a)[_0xdebd('0x23')](function(_0x5060ef){_0x40385b[_0xdebd('0x1f')]=_0x5060ef;if(_0x4436c8['query'][_0xdebd('0x3e')]){_0x1d45e0[_0xdebd('0x3f')]=[{'all':!![]}];}return db['CmCompany'][_0xdebd('0x40')](_0x1d45e0);})[_0xdebd('0x23')](function(_0x227f84){_0x40385b[_0xdebd('0x41')]=_0x227f84;return _0x40385b;})['then'](respondWithFilteredResult(_0x31bceb,_0x1d45e0))[_0xdebd('0x42')](handleError(_0x31bceb,null));})[_0xdebd('0x42')](handleError(_0x31bceb,null));};exports[_0xdebd('0x43')]=function(_0x51799f,_0x75d592){var _0x521ca3={'raw':![],'where':{'id':_0x51799f['params']['id']}},_0x2221ca={};_0x2221ca['model']=_[_0xdebd('0x2d')](db[_0xdebd('0x2b')]['rawAttributes']);_0x2221ca[_0xdebd('0x30')]=_[_0xdebd('0x2d')](_0x51799f[_0xdebd('0x30')]);_0x2221ca[_0xdebd('0x39')]=_[_0xdebd('0x2e')](_0x2221ca[_0xdebd('0x2f')],_0x2221ca[_0xdebd('0x30')]);_0x521ca3['attributes']=_['intersection'](_0x2221ca['model'],qs[_0xdebd('0x32')](_0x51799f[_0xdebd('0x30')][_0xdebd('0x32')]));_0x521ca3[_0xdebd('0x31')]=_0x521ca3[_0xdebd('0x31')][_0xdebd('0x33')]?_0x521ca3[_0xdebd('0x31')]:_0x2221ca[_0xdebd('0x2f')];if(_0x51799f['query'][_0xdebd('0x3e')]){_0x521ca3[_0xdebd('0x3f')]=[{'all':!![]}];}_0x521ca3=_[_0xdebd('0x3b')]({},_0x521ca3,_0x51799f[_0xdebd('0x3d')]);return db['CmCompany'][_0xdebd('0x44')](_0x521ca3)[_0xdebd('0x23')](handleEntityNotFound(_0x75d592,null))[_0xdebd('0x23')](respondWithResult(_0x75d592,null))[_0xdebd('0x42')](handleError(_0x75d592,null));};exports[_0xdebd('0x45')]=function(_0x38eb7b,_0x3887c7){return db[_0xdebd('0x2b')][_0xdebd('0x45')](_0x38eb7b[_0xdebd('0x46')],{})['then'](function(_0x4eb177){var _0x3c43ef=_0x38eb7b[_0xdebd('0x47')][_0xdebd('0x48')]({'plain':!![]});if(!_0x3c43ef)throw new Error(_0xdebd('0x49'));if(_0x3c43ef['role']===_0xdebd('0x47')){var _0x1af3bc=_0x4eb177['get']({'plain':!![]});var _0xdcba3e=_0xdebd('0x25');return db[_0xdebd('0x4a')][_0xdebd('0x44')]({'where':{'name':_0xdcba3e,'userProfileId':_0x3c43ef[_0xdebd('0x4b')]},'raw':!![]})[_0xdebd('0x23')](function(_0x36a684){if(_0x36a684&&_0x36a684[_0xdebd('0x4c')]===0x0){return db[_0xdebd('0x26')][_0xdebd('0x45')]({'name':_0x1af3bc['name'],'resourceId':_0x1af3bc['id'],'type':_0x36a684[_0xdebd('0x29')],'sectionId':_0x36a684['id']},{})['then'](function(){return _0x4eb177;});}else{return _0x4eb177;}})[_0xdebd('0x42')](function(_0x490871){logger[_0xdebd('0x27')](_0xdebd('0x4d'),_0x490871);throw _0x490871;});}return _0x4eb177;})[_0xdebd('0x23')](respondWithResult(_0x3887c7,0xc9))[_0xdebd('0x42')](handleError(_0x3887c7,null));};exports[_0xdebd('0x4e')]=function(_0x492f5e,_0x21af13){if(_0x492f5e[_0xdebd('0x46')]['id']){delete _0x492f5e[_0xdebd('0x46')]['id'];}return db[_0xdebd('0x2b')]['find']({'where':{'id':_0x492f5e[_0xdebd('0x4f')]['id']}})['then'](handleEntityNotFound(_0x21af13,null))[_0xdebd('0x23')](saveUpdates(_0x492f5e['body'],null))['then'](respondWithResult(_0x21af13,null))[_0xdebd('0x42')](handleError(_0x21af13,null));};exports['destroy']=function(_0x2735b5,_0x4c9d8d){return db[_0xdebd('0x2b')]['find']({'where':{'id':_0x2735b5[_0xdebd('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4c9d8d,null))[_0xdebd('0x23')](removeEntity(_0x4c9d8d,null))[_0xdebd('0x42')](handleError(_0x4c9d8d,null));};exports[_0xdebd('0x2c')]=function(_0x5f30e3,_0x1fbb70){return db[_0xdebd('0x2b')][_0xdebd('0x2c')]()[_0xdebd('0x23')](respondWithResult(_0x1fbb70,null))[_0xdebd('0x42')](handleError(_0x1fbb70,null));};exports['addContacts']=function(_0x2313f0,_0x44863d,_0x26fe7b){return db[_0xdebd('0x50')][_0xdebd('0x44')]({'where':{'id':_0x2313f0['params']['id']}})[_0xdebd('0x23')](handleEntityNotFound(_0x44863d,null))[_0xdebd('0x23')](function(_0x1243e7){if(_0x1243e7){return _0x1243e7['addContacts'](_0x2313f0['body'][_0xdebd('0x51')],_['omit'](_0x2313f0[_0xdebd('0x46')],[_0xdebd('0x51'),'id'])||{});}})[_0xdebd('0x23')](respondWithResult(_0x44863d,null))['catch'](handleError(_0x44863d,null));};exports[_0xdebd('0x52')]=function(_0x42a926,_0x57f936,_0x327b69){var _0x330ac7={};var _0x14681e={};var _0x399e7e;var _0x2d7fb7;return db['CmCompany'][_0xdebd('0x53')]({'where':{'id':_0x42a926['params']['id']}})['then'](handleEntityNotFound(_0x57f936,null))[_0xdebd('0x23')](function(_0xce5ca7){if(_0xce5ca7){_0x399e7e=_0xce5ca7;_0x14681e[_0xdebd('0x2f')]=_[_0xdebd('0x2d')](db[_0xdebd('0x50')][_0xdebd('0x54')]);_0x14681e[_0xdebd('0x30')]=_[_0xdebd('0x2d')](_0x42a926[_0xdebd('0x30')]);_0x14681e['filters']=_[_0xdebd('0x2e')](_0x14681e['model'],_0x14681e['query']);_0x330ac7[_0xdebd('0x31')]=_[_0xdebd('0x2e')](_0x14681e['model'],qs[_0xdebd('0x32')](_0x42a926[_0xdebd('0x30')][_0xdebd('0x32')]));_0x330ac7[_0xdebd('0x31')]=_0x330ac7['attributes'][_0xdebd('0x33')]?_0x330ac7[_0xdebd('0x31')]:_0x14681e[_0xdebd('0x2f')];_0x330ac7[_0xdebd('0x36')]=qs['sort'](_0x42a926[_0xdebd('0x30')]['sort']);_0x330ac7[_0xdebd('0x38')]=qs[_0xdebd('0x39')](_[_0xdebd('0x3a')](_0x42a926[_0xdebd('0x30')],_0x14681e[_0xdebd('0x39')]));if(_0x42a926[_0xdebd('0x30')][_0xdebd('0x3c')]){_0x330ac7[_0xdebd('0x38')]=_[_0xdebd('0x3b')](_0x330ac7[_0xdebd('0x38')],{'$or':_[_0xdebd('0x55')](_0x330ac7[_0xdebd('0x31')],function(_0x179943){var _0x25661b={};_0x25661b[_0x179943]={'$like':'%'+_0x42a926[_0xdebd('0x30')]['filter']+'%'};return _0x25661b;})});}_0x330ac7=_[_0xdebd('0x3b')]({},_0x330ac7,_0x42a926[_0xdebd('0x3d')]);return _0x399e7e[_0xdebd('0x52')](_0x330ac7);}})[_0xdebd('0x23')](function(_0x12b73c){if(_0x12b73c){_0x2d7fb7=_0x12b73c['length'];if(!_0x42a926[_0xdebd('0x30')]['hasOwnProperty'](_0xdebd('0x35'))){_0x330ac7[_0xdebd('0x1e')]=qs[_0xdebd('0x1e')](_0x42a926[_0xdebd('0x30')][_0xdebd('0x1e')]);_0x330ac7[_0xdebd('0x1c')]=qs[_0xdebd('0x1c')](_0x42a926[_0xdebd('0x30')][_0xdebd('0x1c')]);}return _0x399e7e[_0xdebd('0x52')](_0x330ac7);}})[_0xdebd('0x23')](function(_0x2e2ba0){if(_0x2e2ba0){return _0x2e2ba0?{'count':_0x2d7fb7,'rows':_0x2e2ba0}:null;}})[_0xdebd('0x23')](respondWithResult(_0x57f936,null))[_0xdebd('0x42')](handleError(_0x57f936,null));};
\ No newline at end of file
+var _0xcc2c=['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','limit','Content-Range','apply','reject','save','update','then','get','Companies','UserProfileResource','destroy','stack','index','describe','keys','query','filters','intersection','attributes','model','fields','order','merge','map','filter','options','where','CmCompany','includeAll','rows','catch','params','rawAttributes','length','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','CmContact','ids','getContacts','findOne','sort','hasOwnProperty','nolimit','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x517848,_0x155ce4){var _0x363c0c=function(_0x177de7){while(--_0x177de7){_0x517848['push'](_0x517848['shift']());}};_0x363c0c(++_0x155ce4);}(_0xcc2c,0x1e5));var _0xccc2=function(_0x1dd863,_0x50ec11){_0x1dd863=_0x1dd863-0x0;var _0x154c90=_0xcc2c[_0x1dd863];return _0x154c90;};'use strict';var emlformat=require(_0xccc2('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xccc2('0x1'));var rp=require(_0xccc2('0x2'));var moment=require(_0xccc2('0x3'));var BPromise=require(_0xccc2('0x4'));var Mustache=require('mustache');var util=require(_0xccc2('0x5'));var path=require(_0xccc2('0x6'));var sox=require(_0xccc2('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xccc2('0x8'));var _=require(_0xccc2('0x9'));var squel=require(_0xccc2('0xa'));var crypto=require(_0xccc2('0xb'));var jsforce=require(_0xccc2('0xc'));var deskjs=require(_0xccc2('0xd'));var toCsv=require('to-csv');var querystring=require(_0xccc2('0xe'));var Papa=require(_0xccc2('0xf'));var Redis=require(_0xccc2('0x10'));var authService=require(_0xccc2('0x11'));var qs=require(_0xccc2('0x12'));var as=require(_0xccc2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xccc2('0x14'))(_0xccc2('0x15'));var utils=require(_0xccc2('0x16'));var config=require(_0xccc2('0x17'));var licenseUtil=require(_0xccc2('0x18'));var db=require(_0xccc2('0x19'))['db'];function respondWithStatusCode(_0xf5b896,_0x5b62ac){_0x5b62ac=_0x5b62ac||0xcc;return function(_0x521921){if(_0x521921){return _0xf5b896[_0xccc2('0x1a')](_0x5b62ac);}return _0xf5b896[_0xccc2('0x1b')](_0x5b62ac)['end']();};}function respondWithResult(_0x41b4c7,_0x38a242){_0x38a242=_0x38a242||0xc8;return function(_0x64375e){if(_0x64375e){return _0x41b4c7['status'](_0x38a242)['json'](_0x64375e);}};}function respondWithFilteredResult(_0x490d3e,_0x54bd10){return function(_0x25a8d0){if(_0x25a8d0){var _0x33b9fa=typeof _0x54bd10['offset']===_0xccc2('0x1c')&&typeof _0x54bd10['limit']===_0xccc2('0x1c');var _0x310e30=_0x25a8d0[_0xccc2('0x1d')];var _0x184318=_0x33b9fa?0x0:_0x54bd10['offset'];var _0x42237c=_0x33b9fa?_0x25a8d0[_0xccc2('0x1d')]:_0x54bd10[_0xccc2('0x1e')]+_0x54bd10[_0xccc2('0x1f')];var _0x437573;if(_0x42237c>=_0x310e30){_0x42237c=_0x310e30;_0x437573=0xc8;}else{_0x437573=0xce;}_0x490d3e[_0xccc2('0x1b')](_0x437573);return _0x490d3e['set'](_0xccc2('0x20'),_0x184318+'-'+_0x42237c+'/'+_0x310e30)['json'](_0x25a8d0);}return null;};}function patchUpdates(_0x3f5d79){return function(_0x3ba6c4){try{jsonpatch[_0xccc2('0x21')](_0x3ba6c4,_0x3f5d79,!![]);}catch(_0x2ccd1e){return BPromise[_0xccc2('0x22')](_0x2ccd1e);}return _0x3ba6c4[_0xccc2('0x23')]();};}function saveUpdates(_0x274262,_0x566c42){return function(_0x5330d9){if(_0x5330d9){return _0x5330d9[_0xccc2('0x24')](_0x274262)['then'](function(_0x5f3deb){return _0x5f3deb;});}return null;};}function removeEntity(_0x18b9b7,_0xc85e6c){return function(_0x2037ce){if(_0x2037ce){return _0x2037ce['destroy']()[_0xccc2('0x25')](function(){var _0x429c56=_0x2037ce[_0xccc2('0x26')]({'plain':!![]});var _0x2cf0b3=_0xccc2('0x27');return db[_0xccc2('0x28')][_0xccc2('0x29')]({'where':{'type':_0x2cf0b3,'resourceId':_0x429c56['id']}})[_0xccc2('0x25')](function(){return _0x2037ce;});})[_0xccc2('0x25')](function(){_0x18b9b7[_0xccc2('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2abed2,_0x38556b){return function(_0x2c91bb){if(!_0x2c91bb){_0x2abed2[_0xccc2('0x1a')](0x194);}return _0x2c91bb;};}function handleError(_0x561b9b,_0x560759){_0x560759=_0x560759||0x1f4;return function(_0x21235d){logger['error'](_0x21235d[_0xccc2('0x2a')]);if(_0x21235d['name']){delete _0x21235d['name'];}_0x561b9b[_0xccc2('0x1b')](_0x560759)['send'](_0x21235d);};}exports[_0xccc2('0x2b')]=function(_0x13edbd,_0x4705e1){var _0x1b0200={},_0x1dfb05={},_0x745d34={'count':0x0,'rows':[]};return db['CmCompany'][_0xccc2('0x2c')]()[_0xccc2('0x25')](function(_0x5e5420){_0x1dfb05['model']=_['keys'](_0x5e5420);_0x1dfb05['query']=_[_0xccc2('0x2d')](_0x13edbd[_0xccc2('0x2e')]);_0x1dfb05[_0xccc2('0x2f')]=_[_0xccc2('0x30')](_0x1dfb05['model'],_0x1dfb05[_0xccc2('0x2e')]);_0x1b0200[_0xccc2('0x31')]=_[_0xccc2('0x30')](_0x1dfb05[_0xccc2('0x32')],qs[_0xccc2('0x33')](_0x13edbd[_0xccc2('0x2e')][_0xccc2('0x33')]));_0x1b0200[_0xccc2('0x31')]=_0x1b0200[_0xccc2('0x31')]['length']?_0x1b0200[_0xccc2('0x31')]:_0x1dfb05[_0xccc2('0x32')];if(!_0x13edbd[_0xccc2('0x2e')]['hasOwnProperty']('nolimit')){_0x1b0200[_0xccc2('0x1f')]=qs['limit'](_0x13edbd['query'][_0xccc2('0x1f')]);_0x1b0200[_0xccc2('0x1e')]=qs['offset'](_0x13edbd[_0xccc2('0x2e')][_0xccc2('0x1e')]);}_0x1b0200[_0xccc2('0x34')]=qs['sort'](_0x13edbd[_0xccc2('0x2e')]['sort']);_0x1b0200['where']=qs[_0xccc2('0x2f')](_['pick'](_0x13edbd[_0xccc2('0x2e')],_0x1dfb05[_0xccc2('0x2f')]),_0x5e5420);if(_0x13edbd[_0xccc2('0x2e')]['filter']){_0x1b0200['where']=_[_0xccc2('0x35')](_0x1b0200['where'],{'$or':_[_0xccc2('0x36')](_0x1b0200['attributes'],function(_0x1f0f09){var _0xf5a951={};_0xf5a951[_0x1f0f09]={'$like':'%'+_0x13edbd[_0xccc2('0x2e')][_0xccc2('0x37')]+'%'};return _0xf5a951;})});}_0x1b0200=_['merge']({},_0x1b0200,_0x13edbd[_0xccc2('0x38')]);var _0x369dd8={'where':_0x1b0200[_0xccc2('0x39')]};return db[_0xccc2('0x3a')][_0xccc2('0x1d')](_0x369dd8)[_0xccc2('0x25')](function(_0x13cc5a){_0x745d34[_0xccc2('0x1d')]=_0x13cc5a;if(_0x13edbd[_0xccc2('0x2e')][_0xccc2('0x3b')]){_0x1b0200['include']=[{'all':!![]}];}return db['CmCompany']['findAll'](_0x1b0200);})[_0xccc2('0x25')](function(_0x510ba3){_0x745d34[_0xccc2('0x3c')]=_0x510ba3;return _0x745d34;})[_0xccc2('0x25')](respondWithFilteredResult(_0x4705e1,_0x1b0200))['catch'](handleError(_0x4705e1,null));})[_0xccc2('0x3d')](handleError(_0x4705e1,null));};exports['show']=function(_0x4f3a90,_0x288538){var _0x114edb={'raw':![],'where':{'id':_0x4f3a90[_0xccc2('0x3e')]['id']}},_0x1d5576={};_0x1d5576[_0xccc2('0x32')]=_[_0xccc2('0x2d')](db[_0xccc2('0x3a')][_0xccc2('0x3f')]);_0x1d5576[_0xccc2('0x2e')]=_[_0xccc2('0x2d')](_0x4f3a90[_0xccc2('0x2e')]);_0x1d5576[_0xccc2('0x2f')]=_['intersection'](_0x1d5576[_0xccc2('0x32')],_0x1d5576[_0xccc2('0x2e')]);_0x114edb[_0xccc2('0x31')]=_['intersection'](_0x1d5576[_0xccc2('0x32')],qs[_0xccc2('0x33')](_0x4f3a90['query'][_0xccc2('0x33')]));_0x114edb['attributes']=_0x114edb[_0xccc2('0x31')][_0xccc2('0x40')]?_0x114edb[_0xccc2('0x31')]:_0x1d5576[_0xccc2('0x32')];if(_0x4f3a90[_0xccc2('0x2e')][_0xccc2('0x3b')]){_0x114edb[_0xccc2('0x41')]=[{'all':!![]}];}_0x114edb=_[_0xccc2('0x35')]({},_0x114edb,_0x4f3a90[_0xccc2('0x38')]);return db['CmCompany'][_0xccc2('0x42')](_0x114edb)[_0xccc2('0x25')](handleEntityNotFound(_0x288538,null))[_0xccc2('0x25')](respondWithResult(_0x288538,null))[_0xccc2('0x3d')](handleError(_0x288538,null));};exports[_0xccc2('0x43')]=function(_0x10603e,_0x41ba48){return db[_0xccc2('0x3a')]['create'](_0x10603e[_0xccc2('0x44')],{})[_0xccc2('0x25')](function(_0x4dc0fd){var _0x4ce757=_0x10603e[_0xccc2('0x45')][_0xccc2('0x26')]({'plain':!![]});if(!_0x4ce757)throw new Error(_0xccc2('0x46'));if(_0x4ce757[_0xccc2('0x47')]===_0xccc2('0x45')){var _0x54b6c1=_0x4dc0fd['get']({'plain':!![]});var _0x11640b='Companies';return db[_0xccc2('0x48')][_0xccc2('0x42')]({'where':{'name':_0x11640b,'userProfileId':_0x4ce757['userProfileId']},'raw':!![]})[_0xccc2('0x25')](function(_0x7e03e9){if(_0x7e03e9&&_0x7e03e9[_0xccc2('0x49')]===0x0){return db[_0xccc2('0x28')][_0xccc2('0x43')]({'name':_0x54b6c1[_0xccc2('0x4a')],'resourceId':_0x54b6c1['id'],'type':_0x7e03e9[_0xccc2('0x4a')],'sectionId':_0x7e03e9['id']},{})['then'](function(){return _0x4dc0fd;});}else{return _0x4dc0fd;}})[_0xccc2('0x3d')](function(_0x99dddd){logger['error'](_0xccc2('0x4b'),_0x99dddd);throw _0x99dddd;});}return _0x4dc0fd;})[_0xccc2('0x25')](respondWithResult(_0x41ba48,0xc9))[_0xccc2('0x3d')](handleError(_0x41ba48,null));};exports['update']=function(_0x47d2da,_0x25f198){if(_0x47d2da[_0xccc2('0x44')]['id']){delete _0x47d2da[_0xccc2('0x44')]['id'];}return db[_0xccc2('0x3a')][_0xccc2('0x42')]({'where':{'id':_0x47d2da[_0xccc2('0x3e')]['id']}})[_0xccc2('0x25')](handleEntityNotFound(_0x25f198,null))[_0xccc2('0x25')](saveUpdates(_0x47d2da[_0xccc2('0x44')],null))[_0xccc2('0x25')](respondWithResult(_0x25f198,null))[_0xccc2('0x3d')](handleError(_0x25f198,null));};exports[_0xccc2('0x29')]=function(_0x24892c,_0x522617){return db[_0xccc2('0x3a')]['find']({'where':{'id':_0x24892c[_0xccc2('0x3e')]['id']}})[_0xccc2('0x25')](handleEntityNotFound(_0x522617,null))[_0xccc2('0x25')](removeEntity(_0x522617,null))['catch'](handleError(_0x522617,null));};exports[_0xccc2('0x2c')]=function(_0x3311d9,_0x3bc60a){return db[_0xccc2('0x3a')][_0xccc2('0x2c')]()['then'](respondWithResult(_0x3bc60a,null))[_0xccc2('0x3d')](handleError(_0x3bc60a,null));};exports['addContacts']=function(_0x4527e4,_0x1abf41,_0x2b9f49){return db[_0xccc2('0x4c')][_0xccc2('0x42')]({'where':{'id':_0x4527e4[_0xccc2('0x3e')]['id']}})[_0xccc2('0x25')](handleEntityNotFound(_0x1abf41,null))[_0xccc2('0x25')](function(_0x18ab02){if(_0x18ab02){return _0x18ab02['addContacts'](_0x4527e4[_0xccc2('0x44')][_0xccc2('0x4d')],_['omit'](_0x4527e4[_0xccc2('0x44')],[_0xccc2('0x4d'),'id'])||{});}})['then'](respondWithResult(_0x1abf41,null))[_0xccc2('0x3d')](handleError(_0x1abf41,null));};exports[_0xccc2('0x4e')]=function(_0x4483f5,_0x19f4e0,_0x14af47){var _0x117922={};var _0x46c6e4={};var _0x165d20;var _0x5cf65d;return db[_0xccc2('0x3a')][_0xccc2('0x4f')]({'where':{'id':_0x4483f5[_0xccc2('0x3e')]['id']}})[_0xccc2('0x25')](handleEntityNotFound(_0x19f4e0,null))[_0xccc2('0x25')](function(_0x3dfbfa){if(_0x3dfbfa){_0x165d20=_0x3dfbfa;_0x46c6e4[_0xccc2('0x32')]=_[_0xccc2('0x2d')](db['CmContact']['rawAttributes']);_0x46c6e4['query']=_[_0xccc2('0x2d')](_0x4483f5[_0xccc2('0x2e')]);_0x46c6e4['filters']=_['intersection'](_0x46c6e4['model'],_0x46c6e4[_0xccc2('0x2e')]);_0x117922['attributes']=_[_0xccc2('0x30')](_0x46c6e4[_0xccc2('0x32')],qs[_0xccc2('0x33')](_0x4483f5[_0xccc2('0x2e')][_0xccc2('0x33')]));_0x117922[_0xccc2('0x31')]=_0x117922[_0xccc2('0x31')][_0xccc2('0x40')]?_0x117922[_0xccc2('0x31')]:_0x46c6e4['model'];_0x117922['order']=qs[_0xccc2('0x50')](_0x4483f5[_0xccc2('0x2e')][_0xccc2('0x50')]);_0x117922['where']=qs[_0xccc2('0x2f')](_['pick'](_0x4483f5[_0xccc2('0x2e')],_0x46c6e4[_0xccc2('0x2f')]));if(_0x4483f5['query'][_0xccc2('0x37')]){_0x117922[_0xccc2('0x39')]=_[_0xccc2('0x35')](_0x117922[_0xccc2('0x39')],{'$or':_[_0xccc2('0x36')](_0x117922[_0xccc2('0x31')],function(_0x4fcbde){var _0x68e3ba={};_0x68e3ba[_0x4fcbde]={'$like':'%'+_0x4483f5[_0xccc2('0x2e')][_0xccc2('0x37')]+'%'};return _0x68e3ba;})});}_0x117922=_[_0xccc2('0x35')]({},_0x117922,_0x4483f5[_0xccc2('0x38')]);return _0x165d20[_0xccc2('0x4e')](_0x117922);}})[_0xccc2('0x25')](function(_0x7210f7){if(_0x7210f7){_0x5cf65d=_0x7210f7[_0xccc2('0x40')];if(!_0x4483f5[_0xccc2('0x2e')][_0xccc2('0x51')](_0xccc2('0x52'))){_0x117922[_0xccc2('0x1f')]=qs[_0xccc2('0x1f')](_0x4483f5['query'][_0xccc2('0x1f')]);_0x117922[_0xccc2('0x1e')]=qs[_0xccc2('0x1e')](_0x4483f5[_0xccc2('0x2e')][_0xccc2('0x1e')]);}return _0x165d20[_0xccc2('0x4e')](_0x117922);}})[_0xccc2('0x25')](function(_0xcd4952){if(_0xcd4952){return _0xcd4952?{'count':_0x5cf65d,'rows':_0xcd4952}:null;}})['then'](respondWithResult(_0x19f4e0,null))[_0xccc2('0x3d')](handleError(_0x19f4e0,null));};
\ No newline at end of file
index 4836702..cd7bb49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd40=['CmCompany','cm_companies','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x120da5,_0x35e37c){var _0x2564ab=function(_0x100133){while(--_0x100133){_0x120da5['push'](_0x120da5['shift']());}};_0x2564ab(++_0x35e37c);}(_0xdd40,0x84));var _0x0dd4=function(_0x606192,_0x1c2dfe){_0x606192=_0x606192-0x0;var _0x5cb292=_0xdd40[_0x606192];return _0x5cb292;};'use strict';var _=require(_0x0dd4('0x0'));var util=require(_0x0dd4('0x1'));var logger=require(_0x0dd4('0x2'))('api');var moment=require(_0x0dd4('0x3'));var BPromise=require(_0x0dd4('0x4'));var rp=require(_0x0dd4('0x5'));var fs=require('fs');var path=require(_0x0dd4('0x6'));var rimraf=require(_0x0dd4('0x7'));var config=require(_0x0dd4('0x8'));var attributes=require('./cmCompany.attributes');module[_0x0dd4('0x9')]=function(_0xeffa91,_0x4d0ea1){return _0xeffa91[_0x0dd4('0xa')](_0x0dd4('0xb'),attributes,{'tableName':_0x0dd4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf267=['moment','bluebird','path','rimraf','./cmCompany.attributes','exports','define','CmCompany','cm_companies','lodash','util','../../config/logger'];(function(_0x4c7be6,_0x414fee){var _0x336b70=function(_0x23e152){while(--_0x23e152){_0x4c7be6['push'](_0x4c7be6['shift']());}};_0x336b70(++_0x414fee);}(_0xf267,0x1ad));var _0x7f26=function(_0x37e826,_0x5540c4){_0x37e826=_0x37e826-0x0;var _0x34159b=_0xf267[_0x37e826];return _0x34159b;};'use strict';var _=require(_0x7f26('0x0'));var util=require(_0x7f26('0x1'));var logger=require(_0x7f26('0x2'))('api');var moment=require(_0x7f26('0x3'));var BPromise=require(_0x7f26('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7f26('0x5'));var rimraf=require(_0x7f26('0x6'));var config=require('../../config/environment');var attributes=require(_0x7f26('0x7'));module[_0x7f26('0x8')]=function(_0xd654f5,_0x291bb4){return _0xd654f5[_0x7f26('0x9')](_0x7f26('0xa'),attributes,{'tableName':_0x7f26('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 46338f1..52bb854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf90d=['../../config/environment','http','then','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3a1054,_0x402349){var _0x28a812=function(_0x1c242e){while(--_0x1c242e){_0x3a1054['push'](_0x3a1054['shift']());}};_0x28a812(++_0x402349);}(_0xf90d,0xb4));var _0xdf90=function(_0x270263,_0x28ddea){_0x270263=_0x270263-0x0;var _0x3e1233=_0xf90d[_0x270263];return _0x3e1233;};'use strict';var _=require(_0xdf90('0x0'));var util=require(_0xdf90('0x1'));var moment=require(_0xdf90('0x2'));var BPromise=require(_0xdf90('0x3'));var rs=require(_0xdf90('0x4'));var fs=require('fs');var Redis=require(_0xdf90('0x5'));var db=require(_0xdf90('0x6'))['db'];var utils=require(_0xdf90('0x7'));var logger=require(_0xdf90('0x8'))('rpc');var config=require(_0xdf90('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xdf90('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc39e71,_0x2cd21a,_0x1e0376){return new BPromise(function(_0x3c836a,_0x26b736){return client['request'](_0xc39e71,_0x1e0376)[_0xdf90('0xb')](function(_0x57beeb){logger['info'](_0xdf90('0xc'),_0x2cd21a,_0xdf90('0xd'));logger[_0xdf90('0xe')](_0xdf90('0xf'),_0x2cd21a,_0xdf90('0xd'),JSON[_0xdf90('0x10')](_0x57beeb));if(_0x57beeb[_0xdf90('0x11')]){if(_0x57beeb['error']['code']===0x1f4){logger[_0xdf90('0x11')](_0xdf90('0xc'),_0x2cd21a,_0x57beeb[_0xdf90('0x11')][_0xdf90('0x12')]);return _0x26b736(_0x57beeb[_0xdf90('0x11')][_0xdf90('0x12')]);}logger[_0xdf90('0x11')]('CmCompany,\x20%s,\x20%s',_0x2cd21a,_0x57beeb['error'][_0xdf90('0x12')]);return _0x3c836a(_0x57beeb[_0xdf90('0x11')][_0xdf90('0x12')]);}else{logger['info'](_0xdf90('0xc'),_0x2cd21a,_0xdf90('0xd'));_0x3c836a(_0x57beeb[_0xdf90('0x13')]['message']);}})[_0xdf90('0x14')](function(_0x580fa0){logger[_0xdf90('0x11')](_0xdf90('0xc'),_0x2cd21a,_0x580fa0);_0x26b736(_0x580fa0);});});}
\ No newline at end of file
+var _0x4065=['info','request\x20sent','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmCompany,\x20%s,\x20%s','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0x4065,0x1be));var _0x5406=function(_0x3ceba0,_0x1ba2ce){_0x3ceba0=_0x3ceba0-0x0;var _0x1242d5=_0x4065[_0x3ceba0];return _0x1242d5;};'use strict';var _=require(_0x5406('0x0'));var util=require(_0x5406('0x1'));var moment=require('moment');var BPromise=require(_0x5406('0x2'));var rs=require(_0x5406('0x3'));var fs=require('fs');var Redis=require(_0x5406('0x4'));var db=require(_0x5406('0x5'))['db'];var utils=require(_0x5406('0x6'));var logger=require('../../config/logger')(_0x5406('0x7'));var config=require(_0x5406('0x8'));var jayson=require(_0x5406('0x9'));var client=jayson[_0x5406('0xa')][_0x5406('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x330170,_0x522cfd,_0x4adbef){return new BPromise(function(_0x541ee8,_0x275eb7){return client[_0x5406('0xc')](_0x330170,_0x4adbef)[_0x5406('0xd')](function(_0x3b94ef){logger[_0x5406('0xe')]('CmCompany,\x20%s,\x20%s',_0x522cfd,_0x5406('0xf'));logger['debug'](_0x5406('0x10'),_0x522cfd,_0x5406('0xf'),JSON[_0x5406('0x11')](_0x3b94ef));if(_0x3b94ef['error']){if(_0x3b94ef[_0x5406('0x12')][_0x5406('0x13')]===0x1f4){logger[_0x5406('0x12')]('CmCompany,\x20%s,\x20%s',_0x522cfd,_0x3b94ef[_0x5406('0x12')][_0x5406('0x14')]);return _0x275eb7(_0x3b94ef[_0x5406('0x12')][_0x5406('0x14')]);}logger['error'](_0x5406('0x15'),_0x522cfd,_0x3b94ef['error']['message']);return _0x541ee8(_0x3b94ef[_0x5406('0x12')][_0x5406('0x14')]);}else{logger['info'](_0x5406('0x15'),_0x522cfd,_0x5406('0xf'));_0x541ee8(_0x3b94ef[_0x5406('0x16')][_0x5406('0x14')]);}})['catch'](function(_0x11ac9d){logger['error'](_0x5406('0x15'),_0x522cfd,_0x11ac9d);_0x275eb7(_0x11ac9d);});});}
\ No newline at end of file
index 358ddc8..f95207d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a46=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts','getContacts','post','addContacts','put','delete','destroy','exports','util','path'];(function(_0x313653,_0x25f119){var _0x19f864=function(_0x3ccd3b){while(--_0x3ccd3b){_0x313653['push'](_0x313653['shift']());}};_0x19f864(++_0x25f119);}(_0x9a46,0xa6));var _0x69a4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9a46[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require(_0x69a4('0x0'));var path=require(_0x69a4('0x1'));var timeout=require(_0x69a4('0x2'));var express=require(_0x69a4('0x3'));var router=express[_0x69a4('0x4')]();var fs_extra=require(_0x69a4('0x5'));var auth=require(_0x69a4('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x69a4('0x7'));var controller=require(_0x69a4('0x8'));router[_0x69a4('0x9')]('/',auth[_0x69a4('0xa')](),controller[_0x69a4('0xb')]);router['get'](_0x69a4('0xc'),auth['isAuthenticated'](),controller[_0x69a4('0xd')]);router[_0x69a4('0x9')](_0x69a4('0xe'),auth[_0x69a4('0xa')](),controller[_0x69a4('0xf')]);router[_0x69a4('0x9')](_0x69a4('0x10'),auth['isAuthenticated'](),controller[_0x69a4('0x11')]);router['post']('/',auth[_0x69a4('0xa')](),controller['create']);router[_0x69a4('0x12')](_0x69a4('0x10'),auth[_0x69a4('0xa')](),controller[_0x69a4('0x13')]);router[_0x69a4('0x14')](_0x69a4('0xe'),auth[_0x69a4('0xa')](),controller['update']);router[_0x69a4('0x15')]('/:id',auth[_0x69a4('0xa')](),controller[_0x69a4('0x16')]);module[_0x69a4('0x17')]=router;
\ No newline at end of file
+var _0x8ec6=['../../components/auth/service','../../components/interaction/service','./cmCompany.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/contacts','getContacts','post','addContacts','put','update','delete','destroy','util','path','connect-timeout','express','Router'];(function(_0xcf581b,_0x4359dd){var _0x4f454d=function(_0x182d58){while(--_0x182d58){_0xcf581b['push'](_0xcf581b['shift']());}};_0x4f454d(++_0x4359dd);}(_0x8ec6,0xe1));var _0x68ec=function(_0x321cef,_0x4c5d69){_0x321cef=_0x321cef-0x0;var _0x649adc=_0x8ec6[_0x321cef];return _0x649adc;};'use strict';var multer=require('multer');var util=require(_0x68ec('0x0'));var path=require(_0x68ec('0x1'));var timeout=require(_0x68ec('0x2'));var express=require(_0x68ec('0x3'));var router=express[_0x68ec('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x68ec('0x5'));var interaction=require(_0x68ec('0x6'));var config=require('../../config/environment');var controller=require(_0x68ec('0x7'));router['get']('/',auth[_0x68ec('0x8')](),controller[_0x68ec('0x9')]);router[_0x68ec('0xa')](_0x68ec('0xb'),auth[_0x68ec('0x8')](),controller[_0x68ec('0xc')]);router[_0x68ec('0xa')](_0x68ec('0xd'),auth[_0x68ec('0x8')](),controller[_0x68ec('0xe')]);router[_0x68ec('0xa')](_0x68ec('0xf'),auth[_0x68ec('0x8')](),controller[_0x68ec('0x10')]);router[_0x68ec('0x11')]('/',auth[_0x68ec('0x8')](),controller['create']);router['post'](_0x68ec('0xf'),auth[_0x68ec('0x8')](),controller[_0x68ec('0x12')]);router[_0x68ec('0x13')]('/:id',auth[_0x68ec('0x8')](),controller[_0x68ec('0x14')]);router[_0x68ec('0x15')](_0x68ec('0xd'),auth['isAuthenticated'](),controller[_0x68ec('0x16')]);module['exports']=router;
\ No newline at end of file
index 2044a1d..8254169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aa4=['STRING','INTEGER','DATE','NOW','lodash','sequelize','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5aa4,0x177));var _0x45aa=function(_0x58a4ac,_0x43fd42){_0x58a4ac=_0x58a4ac-0x0;var _0x545810=_0x5aa4[_0x58a4ac];return _0x545810;};'use strict';var _=require(_0x45aa('0x0'));var Sequelize=require(_0x45aa('0x1'));module[_0x45aa('0x2')]={'firstName':{'type':Sequelize[_0x45aa('0x3')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x45aa('0x3')]},'city':{'type':Sequelize[_0x45aa('0x3')]},'country':{'type':Sequelize[_0x45aa('0x3')]},'dateOfBirth':{'type':Sequelize[_0x45aa('0x3')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x45aa('0x3')]},'fax':{'type':Sequelize[_0x45aa('0x3')]},'email':{'type':Sequelize[_0x45aa('0x3')]},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize[_0x45aa('0x3')]},'fb_data':{'type':Sequelize[_0x45aa('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0x45aa('0x3')]},'teams':{'type':Sequelize[_0x45aa('0x3')]},'viber':{'type':Sequelize[_0x45aa('0x3')]},'line':{'type':Sequelize[_0x45aa('0x3')]},'wechat':{'type':Sequelize[_0x45aa('0x3')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize[_0x45aa('0x4')]},'priority':{'type':Sequelize[_0x45aa('0x4')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x45aa('0x5')],'defaultValue':Sequelize[_0x45aa('0x6')]}};
\ No newline at end of file
+var _0x6dba=['UNSIGNED','DATE','NOW','lodash','exports','STRING','INTEGER'];(function(_0x2acf68,_0x437839){var _0x5df4ed=function(_0x47fd01){while(--_0x47fd01){_0x2acf68['push'](_0x2acf68['shift']());}};_0x5df4ed(++_0x437839);}(_0x6dba,0x1e6));var _0xa6db=function(_0x114563,_0x2d49db){_0x114563=_0x114563-0x0;var _0x28759e=_0x6dba[_0x114563];return _0x28759e;};'use strict';var _=require(_0xa6db('0x0'));var Sequelize=require('sequelize');module[_0xa6db('0x1')]={'firstName':{'type':Sequelize[_0xa6db('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0xa6db('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0xa6db('0x2')]},'city':{'type':Sequelize[_0xa6db('0x2')]},'country':{'type':Sequelize[_0xa6db('0x2')]},'dateOfBirth':{'type':Sequelize[_0xa6db('0x2')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xa6db('0x2')]},'fax':{'type':Sequelize[_0xa6db('0x2')]},'email':{'type':Sequelize[_0xa6db('0x2')]},'url':{'type':Sequelize[_0xa6db('0x2')]},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0xa6db('0x2')]},'twitter':{'type':Sequelize[_0xa6db('0x2')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0xa6db('0x2')]},'viber':{'type':Sequelize[_0xa6db('0x2')]},'line':{'type':Sequelize[_0xa6db('0x2')]},'wechat':{'type':Sequelize[_0xa6db('0x2')]},'telegram':{'type':Sequelize[_0xa6db('0x2')]},'UserId':{'type':Sequelize[_0xa6db('0x3')]},'priority':{'type':Sequelize[_0xa6db('0x3')](0x2)[_0xa6db('0x4')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xa6db('0x5')],'defaultValue':Sequelize[_0xa6db('0x6')]}};
\ No newline at end of file
index d6ef941..cb83465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1792=['fax','whatsapp','voice','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','source','destination','callerid','starttime','endtime','duration','createdAt','userSecondDisposition','userThirdDisposition','fullname','Website','Account','closed','closedAt','note','disposition','secondDisposition','thirdDisposition','key','Owner','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','referer','mail','subject','substatus','externalUrl','startCase','findAndCountAll','all','sortBy','reverse','slice','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./cmContact.socket','register','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','describe','startsWith','cf_','push','findOne','trimStart','length','type','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','select','field','color','tools_tags','cm_contacts','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','left_join','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','parseSearch','sqlOperator','conditions','value','split','map','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','dateOfBirth','fieldType','datetime','castTo','text','start','filter','isNil','Contact','isEmpty','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','forEach','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.id','QueryTypes','SELECT','clone','DESC','resolve','user','some','getLists','c.ListId\x20IS\x20NULL','role','agent','sequelize','toString','keyBy','CmContact','c.phone','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','destroy','find','catch','tags','columnName','displayName','CmCustomField','findAll','alias','merge','body','from','get','mergeWith','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','create','ChatInteraction','ChatOfflineMessage','MailInteraction','SmsInteraction','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','CmHopperHistory','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','join','bulkCreate','each','duplicates','$or','findOrCreate','spread','show','$and','format','cf_%d','omit','pickBy','setFields','params','values','phone','getTags','Tag','rawAttributes','pick','setTags','ids','getHoppers','ContactId','options','includeAll','include','getHopperHistories','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','server/files/tmp','filename','child_process','fork','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','pid','createReadStream','parse','file','meta','import','binding','../../components/import/cm/csv2','stringify','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','getJourney','chat','openchannel'];(function(_0x41bc6a,_0x321df8){var _0x3cf935=function(_0xf71702){while(--_0xf71702){_0x41bc6a['push'](_0x41bc6a['shift']());}};_0x3cf935(++_0x321df8);}(_0x1792,0x164));var _0x2179=function(_0x6b942a,_0x311643){_0x6b942a=_0x6b942a-0x0;var _0x22129d=_0x1792[_0x6b942a];return _0x22129d;};'use strict';var emlformat=require(_0x2179('0x0'));var rimraf=require(_0x2179('0x1'));var zipdir=require(_0x2179('0x2'));var jsonpatch=require(_0x2179('0x3'));var rp=require(_0x2179('0x4'));var moment=require(_0x2179('0x5'));var BPromise=require(_0x2179('0x6'));var Mustache=require(_0x2179('0x7'));var util=require('util');var path=require('path');var sox=require(_0x2179('0x8'));var csv=require(_0x2179('0x9'));var ejs=require(_0x2179('0xa'));var fs=require('fs');var fs_extra=require(_0x2179('0xb'));var _=require(_0x2179('0xc'));var squel=require(_0x2179('0xd'));var crypto=require(_0x2179('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2179('0x9'));var querystring=require(_0x2179('0xf'));var Papa=require(_0x2179('0x10'));var Redis=require(_0x2179('0x11'));var authService=require(_0x2179('0x12'));var qs=require(_0x2179('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2179('0x14'));var logger=require(_0x2179('0x15'))(_0x2179('0x16'));var utils=require(_0x2179('0x17'));var config=require(_0x2179('0x18'));var licenseUtil=require(_0x2179('0x19'));var db=require(_0x2179('0x1a'))['db'];config[_0x2179('0x1b')]=_[_0x2179('0x1c')](config[_0x2179('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x2179('0x1d'))(new Redis(config[_0x2179('0x1b')]));require(_0x2179('0x1e'))[_0x2179('0x1f')](socket);function respondWithStatusCode(_0xc0280c,_0x1f6ac7){_0x1f6ac7=_0x1f6ac7||0xcc;return function(_0x38ba89){if(_0x38ba89){return _0xc0280c['sendStatus'](_0x1f6ac7);}return _0xc0280c[_0x2179('0x20')](_0x1f6ac7)[_0x2179('0x21')]();};}function respondWithResult(_0x171dd8,_0x596fd4){_0x596fd4=_0x596fd4||0xc8;return function(_0x3af932){if(_0x3af932){return _0x171dd8[_0x2179('0x20')](_0x596fd4)['json'](_0x3af932);}};}function respondWithFilteredResult(_0x114f35,_0x1ead21){return function(_0x243538){if(_0x243538){var _0x24e164=typeof _0x1ead21[_0x2179('0x22')]===_0x2179('0x23')&&typeof _0x1ead21[_0x2179('0x24')]==='undefined';var _0x3c7fdb=_0x243538[_0x2179('0x25')];var _0x48212b=_0x24e164?0x0:_0x1ead21[_0x2179('0x22')];var _0x54f771=_0x24e164?_0x243538['count']:_0x1ead21[_0x2179('0x22')]+_0x1ead21[_0x2179('0x24')];var _0x5d37ed;if(_0x54f771>=_0x3c7fdb){_0x54f771=_0x3c7fdb;_0x5d37ed=0xc8;}else{_0x5d37ed=0xce;}_0x114f35[_0x2179('0x20')](_0x5d37ed);return _0x114f35[_0x2179('0x26')](_0x2179('0x27'),_0x48212b+'-'+_0x54f771+'/'+_0x3c7fdb)[_0x2179('0x28')](_0x243538);}return null;};}function patchUpdates(_0xe2ef6d){return function(_0x484b8b){try{jsonpatch[_0x2179('0x29')](_0x484b8b,_0xe2ef6d,!![]);}catch(_0x230b1f){return BPromise[_0x2179('0x2a')](_0x230b1f);}return _0x484b8b[_0x2179('0x2b')]();};}function saveUpdates(_0x590027,_0x3819a0){return function(_0x3f70eb){if(_0x3f70eb){return _0x3f70eb[_0x2179('0x2c')](_0x590027)[_0x2179('0x2d')](function(_0x122aa4){return _0x122aa4;});}return null;};}function removeEntity(_0x188875,_0xd0d681){return function(_0x482cfd){if(_0x482cfd){return _0x482cfd['destroy']()[_0x2179('0x2d')](function(){_0x188875[_0x2179('0x20')](0xcc)[_0x2179('0x21')]();});}};}function handleEntityNotFound(_0x182016,_0x103e21){return function(_0x366b57){if(!_0x366b57){_0x182016[_0x2179('0x2e')](0x194);}return _0x366b57;};}function handleError(_0x499b02,_0x363159){_0x363159=_0x363159||0x1f4;return function(_0x1db5cf){logger[_0x2179('0x2f')](_0x1db5cf[_0x2179('0x30')]);if(_0x1db5cf['name']){delete _0x1db5cf[_0x2179('0x31')];}_0x499b02['status'](_0x363159)[_0x2179('0x32')](_0x1db5cf);};}exports[_0x2179('0x33')]=function(_0x3579bf,_0x3df064){var _0x40cb0e={},_0x2c5e07={},_0x5c5a06={'count':0x0,'rows':[]};return db['CmContact'][_0x2179('0x34')]()[_0x2179('0x2d')](function(_0x1153d3){var _0xe262fe=[];for(var _0x312b7b=0x0;_0x312b7b<Object['keys'](_0x1153d3)['length'];_0x312b7b++){var _0x134e1a=Object['keys'](_0x1153d3)[_0x312b7b];if(_[_0x2179('0x35')](_0x134e1a,_0x2179('0x36'))){_0xe262fe[_0x2179('0x37')](db['CmCustomField'][_0x2179('0x38')]({'where':{'id':_[_0x2179('0x39')](_0x134e1a,_0x2179('0x36'))},'raw':!![]}));}}return BPromise['all'](_0xe262fe)[_0x2179('0x2d')](function(_0x5af82c){for(var _0x5b190e=0x0;_0x5b190e<_0x5af82c[_0x2179('0x3a')];_0x5b190e++){if(_0x5af82c[_0x5b190e]){var _0x146204=_0x2179('0x36')+_0x5af82c[_0x5b190e]['id'];var _0x4f1989=_0x1153d3[_0x146204];_0x4f1989['fieldType']=_0x5af82c[_0x5b190e][_0x2179('0x3b')];}}return _0x1153d3;});})[_0x2179('0x2d')](function(_0x4a9c66){_0x2c5e07[_0x2179('0x3c')]=_['keys'](_0x4a9c66);_0x2c5e07[_0x2179('0x3d')]=_[_0x2179('0x3e')](_0x3579bf[_0x2179('0x3d')]);_0x2c5e07[_0x2179('0x3f')]=_['intersection'](_0x2c5e07['model'],_0x2c5e07[_0x2179('0x3d')]);_0x40cb0e[_0x2179('0x40')]=_[_0x2179('0x41')](_0x2c5e07[_0x2179('0x3c')],qs[_0x2179('0x42')](_0x3579bf[_0x2179('0x3d')]['fields']));_0x40cb0e[_0x2179('0x40')]=_0x40cb0e['attributes'][_0x2179('0x3a')]?_0x40cb0e[_0x2179('0x40')]:_0x2c5e07[_0x2179('0x3c')];if(!_0x3579bf[_0x2179('0x3d')][_0x2179('0x43')](_0x2179('0x44'))){_0x40cb0e[_0x2179('0x24')]=qs[_0x2179('0x24')](_0x3579bf[_0x2179('0x3d')][_0x2179('0x24')]);_0x40cb0e[_0x2179('0x22')]=qs[_0x2179('0x22')](_0x3579bf[_0x2179('0x3d')][_0x2179('0x22')]);}_0x40cb0e[_0x2179('0x45')]=qs[_0x2179('0x46')](_0x3579bf[_0x2179('0x3d')][_0x2179('0x46')]);_0x40cb0e[_0x2179('0x47')]=qs['filters'](_['pick'](_0x3579bf['query'],_0x2c5e07[_0x2179('0x3f')]),_0x4a9c66);var _0x2761b8=[];var _0x2ebd16=squel[_0x2179('0x48')]()[_0x2179('0x49')]('id')[_0x2179('0x49')](_0x2179('0x31'))[_0x2179('0x49')](_0x2179('0x4a'))['from'](_0x2179('0x4b'));var _0x34d8d0=squel['select']()['from'](_0x2179('0x4c'),'c')['left_join'](_0x2179('0x4d'),'uc',_0x2179('0x4e'))[_0x2179('0x4f')](_0x2179('0x50'),'ct',_0x2179('0x51'))[_0x2179('0x4f')](_0x2179('0x4b'),'t','t.id\x20=\x20ct.TagId')['where'](_0x2179('0x52'));var _0x3a1d46=squel[_0x2179('0x53')]();var _0x12c226=[];var _0x5b0f68=squel[_0x2179('0x53')]();var _0x3f4698;if(_0x3579bf[_0x2179('0x3d')]['search']){_0x3f4698=as[_0x2179('0x54')](_0x3579bf[_0x2179('0x3d')]['search']);var _0x1c7df9=_0x3f4698[_0x2179('0x55')];for(var _0x176a19=0x0;_0x176a19<_0x3f4698[_0x2179('0x56')][_0x2179('0x3a')];_0x176a19++){var _0x84fa3=_0x3f4698[_0x2179('0x56')][_0x176a19];var _0x3b06c9='c';var _0x1ebfaa=_(_0x4a9c66)[_0x2179('0x3e')]()['find'](function(_0x565bb6){return _0x565bb6===_0x84fa3[_0x2179('0x49')];});if(_0x1ebfaa)_0x1ebfaa=_0x4a9c66[_0x84fa3[_0x2179('0x49')]];if(!_0x1ebfaa){if(_0x84fa3[_0x2179('0x49')]==='Tag'){var _0x2bfc92=_0x84fa3[_0x2179('0x57')][_0x2179('0x58')](',')[_0x2179('0x59')](function(_0x29fc70){return Number(_0x29fc70);});_0x2bfc92['forEach'](function(_0x2f5757){_0x5b0f68['or'](_0x2179('0x5a'),'%,'+_0x2f5757+',%');});_0x12c226=_[_0x2179('0x5b')](_0x12c226,_0x2bfc92);}else if(_0x84fa3['field']===_0x2179('0x5c')){_0x3a1d46['and']('uc.UserId\x20=\x20?',_0x84fa3[_0x2179('0x57')]);}}else{if(_0x84fa3['field']===_0x2179('0x5d')||_0x1ebfaa[_0x2179('0x5e')]===_0x2179('0x5f'))_0x84fa3[_0x2179('0x60')]='DATE';var _0x4a9410=as['buildExpression'](_0x3b06c9,_0x1ebfaa[_0x2179('0x3b')],_0x84fa3);_0x3a1d46[_0x1c7df9](_0x4a9410[_0x2179('0x61')],_0x4a9410[_0x2179('0x57')][_0x2179('0x62')],_0x4a9410[_0x2179('0x57')]['end']);}}}else{var _0x5239a4=_(Object['keys'](_0x3579bf['query']))[_0x2179('0x59')](function(_0x54f388){return _0x4a9c66[_0x2179('0x43')](_0x54f388)?_0x54f388:undefined;})[_0x2179('0x63')](function(_0x17436a){return!_[_0x2179('0x64')](_0x17436a);})[_0x2179('0x57')]();if(_0x3579bf['query'][_0x2179('0x65')])_0x5239a4[_0x2179('0x37')](_0x2179('0x65'));if(!_[_0x2179('0x66')](_0x5239a4)){_0x5239a4['forEach'](function(_0x445835){if(_0x445835===_0x2179('0x67')){_0x34d8d0['where'](_0x2179('0x68'),[][_0x2179('0x69')](_0x3579bf[_0x2179('0x3d')][_0x445835]));}else if(_0x445835===_0x2179('0x65')){var _0x4cb4c9='%'+_0x3579bf['query'][_0x445835]+'%';_0x34d8d0[_0x2179('0x47')](_0x2179('0x6a'),_0x4cb4c9);}else{_0x34d8d0[_0x2179('0x47')]('c.'+_0x445835+_0x2179('0x6b'),_0x3579bf[_0x2179('0x3d')][_0x445835]);}});}if(_0x3579bf[_0x2179('0x3d')][_0x2179('0x6c')]){_0x12c226=_[_0x2179('0x6d')](_0x3579bf[_0x2179('0x3d')][_0x2179('0x6c')])?_0x3579bf[_0x2179('0x3d')][_0x2179('0x6c')]:new Array(_0x3579bf[_0x2179('0x3d')][_0x2179('0x6c')]);_0x12c226[_0x2179('0x6e')](function(_0x1618a3){_0x5b0f68['or'](_0x2179('0x5a'),'%,'+_0x1618a3+',%');});}if(_0x3579bf[_0x2179('0x3d')][_0x2179('0x63')]){var _0x36f250=_0x3579bf[_0x2179('0x3d')][_0x2179('0x63')][_0x2179('0x6f')]('\x5c','\x5c\x5c')[_0x2179('0x6f')](/'/g,'\x27\x27');if(_0x36f250[_0x2179('0x58')]('\x20')[_0x2179('0x3a')]>0x1){_0x3a1d46['or'](_0x2179('0x70'),qs[_0x2179('0x71')](_0x36f250),null);}else{if(qs[_0x2179('0x72')](_0x36f250)){_0x3a1d46['or'](_0x2179('0x73'),_0x36f250+'%');_0x3a1d46['or'](_0x2179('0x74'),_0x36f250+'%');_0x3a1d46['or'](_0x2179('0x75'),_0x36f250+'%');_0x3a1d46['or'](_0x2179('0x76'),_0x36f250+'%');}else if(qs[_0x2179('0x77')](_0x36f250)){_0x3a1d46['or'](_0x2179('0x78'),_0x36f250+'%');}else{_0x3a1d46['or']('c.firstName\x20LIKE\x20?','%'+_0x36f250+'%');_0x3a1d46['or'](_0x2179('0x79'),'%'+_0x36f250+'%');_0x3a1d46['or'](_0x2179('0x78'),'%'+_0x36f250+'%');}}}}_0x34d8d0[_0x2179('0x47')](_0x3a1d46);_0x34d8d0['group'](_0x2179('0x7a'));var _0x552626={'type':db['Sequelize'][_0x2179('0x7b')][_0x2179('0x7c')],'raw':!![]};var _0x1aa787=_0x34d8d0[_0x2179('0x7d')]()[_0x2179('0x49')](_0x2179('0x7a'));if(_0x40cb0e['order']){_0x40cb0e[_0x2179('0x45')][_0x2179('0x6e')](function(_0x4919e0){_0x34d8d0[_0x2179('0x45')]('c.'+_0x4919e0[0x0],_0x4919e0[0x1]===_0x2179('0x7e')?![]:!![]);});}if(!_['isEmpty'](_0x12c226)){_0x34d8d0['having'](_0x5b0f68);_0x1aa787[_0x2179('0x47')]('t.id\x20IN\x20?',_0x12c226);}BPromise[_0x2179('0x7f')]()[_0x2179('0x2d')](function(){if(!_0x3f4698)return;if(_0x3579bf[_0x2179('0x80')]['role']!=='agent')return;if(!_[_0x2179('0x81')](_0x3f4698[_0x2179('0x56')],[_0x2179('0x49'),_0x2179('0x5c')])){return _0x3579bf['user'][_0x2179('0x82')]({'attributes':['id'],'raw':!![]})[_0x2179('0x2d')](function(_0x3fce38){if(_[_0x2179('0x66')](_0x3fce38)){_0x1aa787['where'](_0x2179('0x83'));_0x34d8d0[_0x2179('0x47')](_0x2179('0x83'));}else{_0x1aa787[_0x2179('0x47')](_0x2179('0x68'),_['map'](_0x3fce38,'id'));_0x34d8d0['where']('c.ListId\x20IN\x20?',_[_0x2179('0x59')](_0x3fce38,'id'));}});}})[_0x2179('0x2d')](function(){if(_0x3579bf['user'][_0x2179('0x84')]===_0x2179('0x85')&&!_0x3f4698&&!_0x3579bf[_0x2179('0x3d')]['ListId'])return[];return db[_0x2179('0x86')][_0x2179('0x3d')](_0x1aa787[_0x2179('0x87')](),_0x552626);})[_0x2179('0x2d')](function(_0x1436a6){_0x5c5a06[_0x2179('0x25')]=_0x1436a6[_0x2179('0x3a')];if(_0x5c5a06[_0x2179('0x25')]===0x0)return[];return db[_0x2179('0x86')][_0x2179('0x3d')](_0x2ebd16[_0x2179('0x87')](),_0x552626)[_0x2179('0x2d')](function(_0x514e64){_0x2761b8=_[_0x2179('0x88')](_0x514e64,'id');_0x552626=_['merge'](_0x552626,{'model':db[_0x2179('0x89')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3579bf[_0x2179('0x3d')][_0x2179('0x42')]){_0x40cb0e[_0x2179('0x40')][_0x2179('0x6e')](function(_0x13d70e){_0x34d8d0[_0x2179('0x49')]('c.'+_0x13d70e);});}else{_0x34d8d0[_0x2179('0x49')](_0x2179('0x7a'));_0x34d8d0[_0x2179('0x49')]('c.firstName');_0x34d8d0[_0x2179('0x49')]('c.lastName');_0x34d8d0[_0x2179('0x49')](_0x2179('0x8a'));_0x34d8d0[_0x2179('0x49')]('c.mobile');_0x34d8d0['field'](_0x2179('0x8b'));_0x34d8d0[_0x2179('0x49')](_0x2179('0x8c'));_0x34d8d0[_0x2179('0x49')](_0x2179('0x8d'));_0x34d8d0['field'](_0x2179('0x8e'));_0x34d8d0['field'](_0x2179('0x8f'));_0x34d8d0[_0x2179('0x49')]('c.CompanyId');_0x34d8d0[_0x2179('0x49')](_0x2179('0x90'),_0x2179('0x91'));}if(_0x40cb0e[_0x2179('0x24')])_0x34d8d0[_0x2179('0x24')](_0x40cb0e[_0x2179('0x24')]);if(_0x40cb0e[_0x2179('0x22')])_0x34d8d0[_0x2179('0x22')](_0x40cb0e[_0x2179('0x22')]);return db[_0x2179('0x86')][_0x2179('0x3d')](_0x34d8d0[_0x2179('0x87')](),_0x552626);});})['then'](function(_0x3e0b3b){_0x3e0b3b[_0x2179('0x6e')](function(_0x2c8b66){if(_0x2c8b66[_0x2179('0x91')]){_0x2c8b66['Tags']=[];_0x2c8b66[_0x2179('0x91')][_0x2179('0x58')](',')[_0x2179('0x6e')](function(_0x5d74c9){_0x2c8b66[_0x2179('0x92')][_0x2179('0x37')](_0x2761b8[_0x5d74c9]);});}delete _0x2c8b66['TagIds'];});_0x5c5a06[_0x2179('0x93')]=_0x3e0b3b;return _0x5c5a06;})[_0x2179('0x2d')](respondWithFilteredResult(_0x3df064,_0x40cb0e));})['catch'](handleError(_0x3df064,null));};exports[_0x2179('0x94')]=function(_0x119c52,_0xf54d6d){return db[_0x2179('0x89')][_0x2179('0x95')]({'where':{'id':_0x119c52['params']['id']}})[_0x2179('0x2d')](handleEntityNotFound(_0xf54d6d,null))[_0x2179('0x2d')](removeEntity(_0xf54d6d,null))[_0x2179('0x96')](handleError(_0xf54d6d,null));};exports[_0x2179('0x34')]=function(_0x3fd753,_0x3dd11f){return db[_0x2179('0x89')][_0x2179('0x34')]()[_0x2179('0x2d')](function(_0x40c4c2){delete _0x40c4c2[_0x2179('0x97')];for(var _0x37adaf=0x0;_0x37adaf<Object[_0x2179('0x3e')](_0x40c4c2)[_0x2179('0x3a')];_0x37adaf++){var _0x2b4a20=Object[_0x2179('0x3e')](_0x40c4c2)[_0x37adaf];if(!_['startsWith'](_0x2b4a20,'cf_')){_0x40c4c2[_0x2b4a20][_0x2179('0x98')]=_0x2b4a20;_0x40c4c2[_0x2b4a20][_0x2179('0x99')]=_0x2b4a20;}}return _0x40c4c2;})['then'](function(_0xf8d75e){var _0x4fe75b={'where':{'$or':[{'ListId':_0x3fd753[_0x2179('0x3d')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x2179('0x9a')][_0x2179('0x9b')](_0x4fe75b)['then'](function(_0x273150){for(var _0x4b29c4=0x0;_0x4b29c4<_0x273150[_0x2179('0x3a')];_0x4b29c4++){var _0x423c3e=_0x2179('0x36')+_0x273150[_0x4b29c4]['id'];_0xf8d75e[_0x423c3e][_0x2179('0x98')]=_0x423c3e;_0xf8d75e[_0x423c3e][_0x2179('0x99')]=_0x273150[_0x4b29c4][_0x2179('0x9c')];_0xf8d75e[_0x423c3e]['custom']={'type':_0x273150[_0x4b29c4][_0x2179('0x3b')],'values':_0x273150[_0x4b29c4]['values']};}Object[_0x2179('0x3e')](_0xf8d75e)[_0x2179('0x6e')](function(_0x6ab4c1){if(!_0xf8d75e[_0x6ab4c1]['hasOwnProperty'](_0x2179('0x98'))){delete _0xf8d75e[_0x6ab4c1];}});return _0xf8d75e;});})[_0x2179('0x2d')](respondWithResult(_0x3dd11f,null))['catch'](handleError(_0x3dd11f,null));};exports[_0x2179('0x9d')]=function(_0x127005,_0x5e8ee4){var _0x401a93;var _0x25835d;var _0x10f600;if(_0x127005['body']['id']){delete _0x127005[_0x2179('0x9e')]['id'];}return db[_0x2179('0x89')]['findAll']({'where':{'id':[_0x127005[_0x2179('0x9e')]['to'],_0x127005[_0x2179('0x9e')][_0x2179('0x9f')]]}})[_0x2179('0x2d')](function(_0xef1e6b){if(_0xef1e6b){if(_0xef1e6b[_0x2179('0x3a')]!==0x2){return null;}_0xef1e6b[0x0]=_0xef1e6b[0x0][_0x2179('0xa0')]({'plain':!![]});_0xef1e6b[0x1]=_0xef1e6b[0x1][_0x2179('0xa0')]({'plain':!![]});delete _0xef1e6b[0x0]['id'];delete _0xef1e6b[0x1]['id'];return _[_0x2179('0xa1')](_0xef1e6b[0x0],_0xef1e6b[0x1],function(_0x12d86f,_0x40b828){if(Array['isArray'](_0x40b828)&&!_0x40b828[_0x2179('0x3a')]){return _0x12d86f;}else if(!_0x40b828){return _0x12d86f;}});}})[_0x2179('0x2d')](handleEntityNotFound(_0x5e8ee4,null))[_0x2179('0x2d')](function(_0xf8a9ad){if(_0xf8a9ad){if(_0xf8a9ad[_0x2179('0x97')]&&_[_0x2179('0x6d')](_0xf8a9ad[_0x2179('0x97')])){_0xf8a9ad['tags']=_0xf8a9ad[_0x2179('0x97')]['join']();}logger[_0x2179('0xa2')](_0x2179('0xa3'),_0x127005[_0x2179('0x9e')]['to'],_0x127005[_0x2179('0x9e')][_0x2179('0x9f')]);return db[_0x2179('0xa4')][_0x2179('0x94')]({'where':{'ContactId':[_0x127005[_0x2179('0x9e')]['to'],_0x127005[_0x2179('0x9e')]['from']]}})['then'](function(_0xa591e9){logger['info'](_0x2179('0xa5'),_0xa591e9);return db[_0x2179('0xa6')][_0x2179('0x94')]({'where':{'ContactId':[_0x127005[_0x2179('0x9e')]['to'],_0x127005[_0x2179('0x9e')][_0x2179('0x9f')]]}})[_0x2179('0x2d')](function(_0x3b35e1){logger[_0x2179('0xa2')]('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0x3b35e1);return db[_0x2179('0x89')][_0x2179('0xa7')](_0xf8a9ad);});});}})[_0x2179('0x2d')](function(_0x46ac4d){if(_0x46ac4d){_0x401a93=_0x46ac4d;_0x25835d={'ContactId':_0x401a93['id']};_0x10f600={'where':{'ContactId':[_0x127005[_0x2179('0x9e')]['to'],_0x127005[_0x2179('0x9e')][_0x2179('0x9f')]]}};return db[_0x2179('0xa8')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db['ChatMessage']['update'](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xa9')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xaa')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db['MailMessage']['update'](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xaa')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})['then'](function(){if(_0x401a93){return db['MailMessage']['update'](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xab')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db['SmsMessage'][_0x2179('0x2c')](_0x25835d,_0x10f600);}})['then'](function(){if(_0x401a93){return db[_0x2179('0xac')]['update'](_0x25835d,_0x10f600);}})['then'](function(){if(_0x401a93){return db[_0x2179('0xad')]['update'](_0x25835d,_0x10f600);}})['then'](function(){if(_0x401a93){return db[_0x2179('0xae')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xaf')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})['then'](function(){if(_0x401a93){return db[_0x2179('0xb0')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xb1')]['update'](_0x25835d,_0x10f600);}})['then'](function(){if(_0x401a93){return db['ReportAgentPreview'][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xb2')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xb3')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xb4')]['update'](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xb5')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xb6')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0xb7')]['update'](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db['JscriptySessionReport']['update'](_0x25835d,_0x10f600);}})['then'](function(){if(_0x401a93){return db[_0x2179('0xb8')][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db['WhatsappMessage'][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db['WhatsappQueueReport'][_0x2179('0x2c')](_0x25835d,_0x10f600);}})[_0x2179('0x2d')](function(){if(_0x401a93){return db[_0x2179('0x89')][_0x2179('0x94')]({'where':{'id':[_0x127005['body']['to'],_0x127005['body'][_0x2179('0x9f')]]}});}})[_0x2179('0x2d')](function(){if(_0x401a93){return _0x401a93;}})[_0x2179('0x2d')](respondWithResult(_0x5e8ee4,null))[_0x2179('0x96')](handleError(_0x5e8ee4,null));};exports[_0x2179('0xa7')]=function(_0x55d667,_0x3ff10f){return db[_0x2179('0x89')]['describe']()['then'](function(_0x4325cf){if(_0x55d667['body'][_0x2179('0x97')]&&_[_0x2179('0x6d')](_0x55d667[_0x2179('0x9e')][_0x2179('0x97')])){if(_0x55d667[_0x2179('0x9e')][_0x2179('0x97')][_0x2179('0x3a')]){_0x55d667['body'][_0x2179('0x97')]=_0x55d667[_0x2179('0x9e')][_0x2179('0x97')][_0x2179('0xb9')](';')+';';}else{_0x55d667[_0x2179('0x9e')][_0x2179('0x97')]=null;}}else{_0x55d667[_0x2179('0x9e')]['tags']=null;}return db[_0x2179('0x89')][_0x2179('0xa7')](_0x55d667['body'],{'fields':_[_0x2179('0x3e')](_0x4325cf),'raw':!![]});})[_0x2179('0x2d')](respondWithResult(_0x3ff10f,0xc9))['catch'](handleError(_0x3ff10f,null));};exports[_0x2179('0xba')]=function(_0x14f383,_0x34c75e){var _0x44e3f2=[];var _0x5f56e7=0x0;var _0xc0997d=0x0;var _0x3e5dea=0x0;return db[_0x2179('0x89')]['describe']()[_0x2179('0x2d')](function(_0x594ad2){return BPromise[_0x2179('0xbb')](_0x14f383[_0x2179('0x9e')],function(_0x402482){var _0x346142={'where':{'$or':[]},'defaults':_0x402482,'fields':_[_0x2179('0x3e')](_0x594ad2),'raw':!![]};if(_0x402482[_0x2179('0xbc')]){for(var _0x1f05dc=0x0;_0x1f05dc<_0x402482[_0x2179('0xbc')][_0x2179('0x3a')];_0x1f05dc++){var _0x386350={};_0x386350[_0x402482[_0x2179('0xbc')][_0x1f05dc]]=_0x402482[_0x402482[_0x2179('0xbc')][_0x1f05dc]];_0x346142['where'][_0x2179('0xbd')][_0x2179('0x37')](_0x386350);}_0x346142[_0x2179('0x47')][_0x2179('0x67')]=_0x402482['ListId'];}return db[_0x2179('0x89')][_0x2179('0xbe')](_0x346142)[_0x2179('0xbf')](function(_0x3e5579,_0x1146bb){if(_0x1146bb){_0x5f56e7++;}else{_0x3e5dea++;}})[_0x2179('0x96')](function(_0x1aed67){console['error'](_0x1aed67);_0xc0997d++;});});})['then'](function(_0x147ae2){if(_0x147ae2){return{'success':_0x5f56e7,'failure':_0xc0997d,'duplicates':_0x3e5dea};}})['then'](respondWithResult(_0x34c75e,0xc9))['catch'](handleError(_0x34c75e,null));};exports[_0x2179('0xc0')]=function(_0xd87483,_0x33aeae,_0x5108fb){var _0xd01fbd;return db[_0x2179('0x89')][_0x2179('0x34')]()[_0x2179('0x2d')](function(_0x37b8cd){return db[_0x2179('0x89')][_0x2179('0x95')]({'where':{'id':_0xd87483['params']['id']},'include':[{'model':db['Tag'],'as':'Tags','attributes':['id','name',_0x2179('0x4a')],'required':_0xd87483[_0x2179('0x3d')]['tag']?!![]:![]}],'attributes':_[_0x2179('0x3e')](_0x37b8cd)});})['then'](function(_0x364c2d){_0xd01fbd=_0x364c2d[_0x2179('0xa0')]({'plain':!![]});var _0x571484={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x364c2d&&_0x364c2d[_0x2179('0x67')]){if(_0x364c2d['ListId']){_0x571484[_0x2179('0x47')][_0x2179('0xc1')][_0x2179('0x37')]({'ListId':{'$ne':_0x364c2d['ListId']}});}}return db[_0x2179('0x9a')][_0x2179('0x9b')](_0x571484);})[_0x2179('0x2d')](function(_0x1a8c9e){return _['omit'](_0xd01fbd,_[_0x2179('0x59')](_0x1a8c9e,function(_0x469a84){return util[_0x2179('0xc2')](_0x2179('0xc3'),_0x469a84['id']);}));})[_0x2179('0x2d')](handleEntityNotFound(_0x33aeae,null))[_0x2179('0x2d')](respondWithResult(_0x33aeae,null))[_0x2179('0x96')](handleError(_0x33aeae,null));};exports[_0x2179('0x2c')]=function(_0x15722e,_0xbb9bd){var _0x390f62;if(_0x15722e[_0x2179('0x9e')]['id']){delete _0x15722e['body']['id'];}return db[_0x2179('0x89')][_0x2179('0x95')]({'where':{'id':_0x15722e['params']['id']}})[_0x2179('0x2d')](handleEntityNotFound(_0xbb9bd,null))[_0x2179('0x2d')](saveUpdates(_0x15722e[_0x2179('0x9e')],null))[_0x2179('0x2d')](function(_0x388a5c){_0x390f62=_0x388a5c;var _0x4956b4={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x388a5c&&_0x388a5c[_0x2179('0x67')]){if(_0x388a5c[_0x2179('0x67')]){_0x4956b4[_0x2179('0x47')]['$and']['push']({'ListId':{'$ne':_0x388a5c['ListId']}});}}return db[_0x2179('0x9a')]['findAll'](_0x4956b4);})[_0x2179('0x2d')](function(_0x4d0cdb){if(_0x4d0cdb){return _[_0x2179('0xc4')](_[_0x2179('0xc5')](_0x15722e[_0x2179('0x9e')],function(_0x17cc83,_0x49cff2){return _[_0x2179('0x35')](_0x49cff2,_0x2179('0x36'));}),_[_0x2179('0x59')](_0x4d0cdb,function(_0x54913f){return util[_0x2179('0xc2')](_0x2179('0xc3'),_0x54913f['id']);}));}})['then'](function(_0x650f54){if(_0x650f54&&!_[_0x2179('0x66')](_0x650f54)){var _0x342cd2=squel[_0x2179('0x2c')]()['table'](_0x2179('0x4c'))[_0x2179('0xc6')](_0x650f54)[_0x2179('0x47')]('id\x20=\x20?',_0x15722e[_0x2179('0xc7')]['id'])['toParam']();return db[_0x2179('0x86')]['query'](_0x342cd2[_0x2179('0x61')],{'replacements':_0x342cd2[_0x2179('0xc8')]});}})[_0x2179('0x2d')](function(){if(_0x15722e['body'][_0x2179('0xc9')]&&_0x390f62){return db['CmHopper'][_0x2179('0x2c')]({'phone':_0x15722e[_0x2179('0x9e')][_0x2179('0xc9')]},{'where':{'ContactId':_0x390f62['id']}});}})[_0x2179('0x2d')](function(){return _0x390f62;})[_0x2179('0x2d')](respondWithResult(_0xbb9bd,null))[_0x2179('0x96')](handleError(_0xbb9bd,null));};exports[_0x2179('0xca')]=function(_0x35d06c,_0x2fcd8e,_0x5d4d16){var _0x3af234={};var _0x53b8c8={};var _0x1c5c6f;var _0x4ae194;return db[_0x2179('0x89')][_0x2179('0x38')]({'where':{'id':_0x35d06c[_0x2179('0xc7')]['id']}})[_0x2179('0x2d')](handleEntityNotFound(_0x2fcd8e,null))['then'](function(_0x128f27){if(_0x128f27){_0x1c5c6f=_0x128f27;_0x53b8c8[_0x2179('0x3c')]=_[_0x2179('0x3e')](db[_0x2179('0xcb')][_0x2179('0xcc')]);_0x53b8c8[_0x2179('0x3d')]=_[_0x2179('0x3e')](_0x35d06c['query']);_0x53b8c8['filters']=_[_0x2179('0x41')](_0x53b8c8[_0x2179('0x3c')],_0x53b8c8[_0x2179('0x3d')]);_0x3af234[_0x2179('0x40')]=_['intersection'](_0x53b8c8[_0x2179('0x3c')],qs[_0x2179('0x42')](_0x35d06c['query']['fields']));_0x3af234[_0x2179('0x40')]=_0x3af234[_0x2179('0x40')]['length']?_0x3af234['attributes']:_0x53b8c8[_0x2179('0x3c')];_0x3af234[_0x2179('0x45')]=qs[_0x2179('0x46')](_0x35d06c[_0x2179('0x3d')][_0x2179('0x46')]);_0x3af234[_0x2179('0x47')]=qs[_0x2179('0x3f')](_[_0x2179('0xcd')](_0x35d06c['query'],_0x53b8c8['filters']));if(_0x35d06c['query'][_0x2179('0x63')]){_0x3af234['where']=_[_0x2179('0x9d')](_0x3af234[_0x2179('0x47')],{'$or':_[_0x2179('0x59')](_0x3af234[_0x2179('0x40')],function(_0x1ccc3d){var _0x5e89a2={};_0x5e89a2[_0x1ccc3d]={'$like':'%'+_0x35d06c[_0x2179('0x3d')][_0x2179('0x63')]+'%'};return _0x5e89a2;})});}_0x3af234=_[_0x2179('0x9d')]({},_0x3af234,_0x35d06c['options']);return _0x1c5c6f[_0x2179('0xca')](_0x3af234);}})[_0x2179('0x2d')](function(_0x3662e6){if(_0x3662e6){_0x4ae194=_0x3662e6[_0x2179('0x3a')];if(!_0x35d06c[_0x2179('0x3d')][_0x2179('0x43')](_0x2179('0x44'))){_0x3af234[_0x2179('0x24')]=qs[_0x2179('0x24')](_0x35d06c[_0x2179('0x3d')]['limit']);_0x3af234[_0x2179('0x22')]=qs['offset'](_0x35d06c[_0x2179('0x3d')][_0x2179('0x22')]);}return _0x1c5c6f[_0x2179('0xca')](_0x3af234);}})['then'](function(_0x41fcd0){if(_0x41fcd0){return _0x41fcd0?{'count':_0x4ae194,'rows':_0x41fcd0}:null;}})[_0x2179('0x2d')](respondWithResult(_0x2fcd8e,null))[_0x2179('0x96')](handleError(_0x2fcd8e,null));};exports[_0x2179('0xce')]=function(_0x2fe31c,_0x5bc65c,_0x55756a){if(_0x2fe31c[_0x2179('0x9e')]['id']){delete _0x2fe31c[_0x2179('0x9e')]['id'];}return db[_0x2179('0x89')][_0x2179('0x38')]({'where':{'id':_0x2fe31c[_0x2179('0xc7')]['id']}})[_0x2179('0x2d')](handleEntityNotFound(_0x5bc65c,null))[_0x2179('0x2d')](function(_0x45ba6f){if(_0x45ba6f){return _0x45ba6f[_0x2179('0xce')](_0x2fe31c[_0x2179('0x9e')][_0x2179('0xcf')]||[]);}return null;})[_0x2179('0x2d')](respondWithResult(_0x5bc65c,null))[_0x2179('0x96')](handleError(_0x5bc65c,null));};exports[_0x2179('0xd0')]=function(_0x12b72e,_0x4130a3,_0x355c3e){var _0x1df344={'raw':![],'where':{}};var _0x505c8d={};var _0x574f87={'count':0x0,'rows':[]};return db[_0x2179('0x89')][_0x2179('0x38')]({'where':{'id':_0x12b72e[_0x2179('0xc7')]['id']}})['then'](handleEntityNotFound(_0x4130a3,null))[_0x2179('0x2d')](function(_0x50a0c8){if(_0x50a0c8){_0x505c8d[_0x2179('0x3c')]=_[_0x2179('0x3e')](db[_0x2179('0xa4')][_0x2179('0xcc')]);_0x505c8d['query']=_[_0x2179('0x3e')](_0x12b72e[_0x2179('0x3d')]);_0x505c8d['filters']=_['intersection'](_0x505c8d['model'],_0x505c8d[_0x2179('0x3d')]);_0x1df344[_0x2179('0x40')]=_[_0x2179('0x41')](_0x505c8d['model'],qs[_0x2179('0x42')](_0x12b72e['query'][_0x2179('0x42')]));_0x1df344[_0x2179('0x40')]=_0x1df344[_0x2179('0x40')]['length']?_0x1df344[_0x2179('0x40')]:_0x505c8d[_0x2179('0x3c')];if(!_0x12b72e[_0x2179('0x3d')]['hasOwnProperty']('nolimit')){_0x1df344[_0x2179('0x24')]=qs[_0x2179('0x24')](_0x12b72e[_0x2179('0x3d')][_0x2179('0x24')]);_0x1df344[_0x2179('0x22')]=qs['offset'](_0x12b72e[_0x2179('0x3d')]['offset']);}_0x1df344['order']=qs[_0x2179('0x46')](_0x12b72e[_0x2179('0x3d')][_0x2179('0x46')]);_0x1df344[_0x2179('0x47')]=qs[_0x2179('0x3f')](_[_0x2179('0xcd')](_0x12b72e[_0x2179('0x3d')],_0x505c8d[_0x2179('0x3f')]));_0x1df344[_0x2179('0x47')][_0x2179('0xd1')]=_0x50a0c8['id'];if(_0x12b72e[_0x2179('0x3d')][_0x2179('0x63')]){_0x1df344[_0x2179('0x47')]=_['merge'](_0x1df344[_0x2179('0x47')],{'$or':_[_0x2179('0x59')](_0x1df344[_0x2179('0x40')],function(_0x10e5f4){var _0x464896={};_0x464896[_0x10e5f4]={'$like':'%'+_0x12b72e['query']['filter']+'%'};return _0x464896;})});}_0x1df344=_[_0x2179('0x9d')]({},_0x1df344,_0x12b72e[_0x2179('0xd2')]);return db[_0x2179('0xa4')][_0x2179('0x25')]({'where':_0x1df344['where']})[_0x2179('0x2d')](function(_0x4da795){_0x574f87['count']=_0x4da795;if(_0x12b72e['query'][_0x2179('0xd3')]){_0x1df344[_0x2179('0xd4')]=[{'all':!![]}];}return db[_0x2179('0xa4')][_0x2179('0x9b')](_0x1df344);})[_0x2179('0x2d')](function(_0x5e2541){_0x574f87[_0x2179('0x93')]=_0x5e2541;return _0x574f87;});}})[_0x2179('0x2d')](respondWithFilteredResult(_0x4130a3,_0x1df344))[_0x2179('0x96')](handleError(_0x4130a3,null));};exports[_0x2179('0xd5')]=function(_0x28c269,_0x521246,_0x32a3d4){var _0x152645={'raw':!![],'where':{}};var _0x101942={};var _0x4ddaa5={'count':0x0,'rows':[]};return db[_0x2179('0x89')][_0x2179('0x38')]({'where':{'id':_0x28c269['params']['id']}})[_0x2179('0x2d')](handleEntityNotFound(_0x521246,null))[_0x2179('0x2d')](function(_0x1536c7){if(_0x1536c7){_0x101942[_0x2179('0x3c')]=_['keys'](db[_0x2179('0xb1')][_0x2179('0xcc')]);_0x101942[_0x2179('0x3d')]=_[_0x2179('0x3e')](_0x28c269[_0x2179('0x3d')]);_0x101942['filters']=_['intersection'](_0x101942[_0x2179('0x3c')],_0x101942[_0x2179('0x3d')]);_0x152645[_0x2179('0x40')]=_[_0x2179('0x41')](_0x101942[_0x2179('0x3c')],qs[_0x2179('0x42')](_0x28c269[_0x2179('0x3d')][_0x2179('0x42')]));_0x152645['attributes']=_0x152645['attributes'][_0x2179('0x3a')]?_0x152645['attributes']:_0x101942[_0x2179('0x3c')];if(!_0x28c269[_0x2179('0x3d')][_0x2179('0x43')]('nolimit')){_0x152645[_0x2179('0x24')]=qs['limit'](_0x28c269['query'][_0x2179('0x24')]);_0x152645[_0x2179('0x22')]=qs[_0x2179('0x22')](_0x28c269['query'][_0x2179('0x22')]);}_0x152645[_0x2179('0x45')]=qs[_0x2179('0x46')](_0x28c269['query'][_0x2179('0x46')]);_0x152645[_0x2179('0x47')]=qs['filters'](_[_0x2179('0xcd')](_0x28c269[_0x2179('0x3d')],_0x101942['filters']));_0x152645[_0x2179('0x47')][_0x2179('0xd1')]=_0x1536c7['id'];if(_0x28c269[_0x2179('0x3d')][_0x2179('0x63')]){_0x152645[_0x2179('0x47')]=_[_0x2179('0x9d')](_0x152645[_0x2179('0x47')],{'$or':_['map'](_0x152645[_0x2179('0x40')],function(_0x1220ff){var _0x3c4baa={};_0x3c4baa[_0x1220ff]={'$like':'%'+_0x28c269[_0x2179('0x3d')][_0x2179('0x63')]+'%'};return _0x3c4baa;})});}_0x152645=_[_0x2179('0x9d')]({},_0x152645,_0x28c269[_0x2179('0xd2')]);return db['CmHopperHistory'][_0x2179('0x25')]({'where':_0x152645[_0x2179('0x47')]})['then'](function(_0x1d0cae){_0x4ddaa5['count']=_0x1d0cae;if(_0x28c269[_0x2179('0x3d')][_0x2179('0xd3')]){_0x152645[_0x2179('0xd4')]=[{'all':!![]}];}return db[_0x2179('0xb1')]['findAll'](_0x152645);})['then'](function(_0x54e1e3){_0x4ddaa5[_0x2179('0x93')]=_0x54e1e3;return _0x4ddaa5;});}})[_0x2179('0x2d')](respondWithFilteredResult(_0x521246,_0x152645))[_0x2179('0x96')](handleError(_0x521246,null));};exports['getHopperFinals']=function(_0x1d99a4,_0x1e928e,_0x2d6fe5){var _0x291ac4={'raw':!![],'where':{}};var _0x11479d={};var _0xbb514e={'count':0x0,'rows':[]};return db[_0x2179('0x89')][_0x2179('0x38')]({'where':{'id':_0x1d99a4[_0x2179('0xc7')]['id']}})['then'](handleEntityNotFound(_0x1e928e,null))[_0x2179('0x2d')](function(_0x2461f1){if(_0x2461f1){_0x11479d['model']=_[_0x2179('0x3e')](db[_0x2179('0xb0')][_0x2179('0xcc')]);_0x11479d['query']=_[_0x2179('0x3e')](_0x1d99a4[_0x2179('0x3d')]);_0x11479d['filters']=_[_0x2179('0x41')](_0x11479d[_0x2179('0x3c')],_0x11479d['query']);_0x291ac4['attributes']=_[_0x2179('0x41')](_0x11479d[_0x2179('0x3c')],qs[_0x2179('0x42')](_0x1d99a4['query'][_0x2179('0x42')]));_0x291ac4['attributes']=_0x291ac4[_0x2179('0x40')][_0x2179('0x3a')]?_0x291ac4['attributes']:_0x11479d[_0x2179('0x3c')];if(!_0x1d99a4['query']['hasOwnProperty']('nolimit')){_0x291ac4[_0x2179('0x24')]=qs[_0x2179('0x24')](_0x1d99a4['query'][_0x2179('0x24')]);_0x291ac4[_0x2179('0x22')]=qs['offset'](_0x1d99a4[_0x2179('0x3d')]['offset']);}_0x291ac4[_0x2179('0x45')]=qs['sort'](_0x1d99a4[_0x2179('0x3d')][_0x2179('0x46')]);_0x291ac4['where']=qs[_0x2179('0x3f')](_['pick'](_0x1d99a4['query'],_0x11479d[_0x2179('0x3f')]));_0x291ac4[_0x2179('0x47')]['ContactId']=_0x2461f1['id'];if(_0x1d99a4[_0x2179('0x3d')]['filter']){_0x291ac4[_0x2179('0x47')]=_['merge'](_0x291ac4[_0x2179('0x47')],{'$or':_['map'](_0x291ac4['attributes'],function(_0x1b3913){var _0x4b3de7={};_0x4b3de7[_0x1b3913]={'$like':'%'+_0x1d99a4['query'][_0x2179('0x63')]+'%'};return _0x4b3de7;})});}_0x291ac4=_[_0x2179('0x9d')]({},_0x291ac4,_0x1d99a4[_0x2179('0xd2')]);return db[_0x2179('0xb0')][_0x2179('0x25')]({'where':_0x291ac4['where']})[_0x2179('0x2d')](function(_0x14aba2){_0xbb514e[_0x2179('0x25')]=_0x14aba2;if(_0x1d99a4[_0x2179('0x3d')][_0x2179('0xd3')]){_0x291ac4[_0x2179('0xd4')]=[{'all':!![]}];}return db[_0x2179('0xb0')][_0x2179('0x9b')](_0x291ac4);})[_0x2179('0x2d')](function(_0x5b2fe0){_0xbb514e['rows']=_0x5b2fe0;return _0xbb514e;});}})[_0x2179('0x2d')](respondWithFilteredResult(_0x1e928e,_0x291ac4))['catch'](handleError(_0x1e928e,null));};exports[_0x2179('0xd6')]=function(_0x321577,_0x6bc648,_0x33edfd){var _0x58e8d9={'raw':!![],'where':{}};var _0x43b8ef={};var _0x2c1654={'count':0x0,'rows':[]};return db[_0x2179('0x89')][_0x2179('0x38')]({'where':{'id':_0x321577[_0x2179('0xc7')]['id']}})['then'](handleEntityNotFound(_0x6bc648,null))['then'](function(_0x375c30){if(_0x375c30){_0x43b8ef[_0x2179('0x3c')]=_[_0x2179('0x3e')](db[_0x2179('0xd7')][_0x2179('0xcc')]);_0x43b8ef[_0x2179('0x3d')]=_[_0x2179('0x3e')](_0x321577[_0x2179('0x3d')]);_0x43b8ef[_0x2179('0x3f')]=_['intersection'](_0x43b8ef[_0x2179('0x3c')],_0x43b8ef[_0x2179('0x3d')]);_0x58e8d9[_0x2179('0x40')]=_['intersection'](_0x43b8ef['model'],qs[_0x2179('0x42')](_0x321577[_0x2179('0x3d')]['fields']));_0x58e8d9[_0x2179('0x40')]=_0x58e8d9[_0x2179('0x40')][_0x2179('0x3a')]?_0x58e8d9[_0x2179('0x40')]:_0x43b8ef[_0x2179('0x3c')];if(!_0x321577['query'][_0x2179('0x43')](_0x2179('0x44'))){_0x58e8d9[_0x2179('0x24')]=qs[_0x2179('0x24')](_0x321577[_0x2179('0x3d')]['limit']);_0x58e8d9[_0x2179('0x22')]=qs['offset'](_0x321577[_0x2179('0x3d')]['offset']);}_0x58e8d9[_0x2179('0x45')]=qs[_0x2179('0x46')](_0x321577[_0x2179('0x3d')]['sort']);_0x58e8d9[_0x2179('0x47')]=qs[_0x2179('0x3f')](_[_0x2179('0xcd')](_0x321577[_0x2179('0x3d')],_0x43b8ef[_0x2179('0x3f')]));_0x58e8d9[_0x2179('0x47')][_0x2179('0xd1')]=_0x375c30['id'];if(_0x321577[_0x2179('0x3d')][_0x2179('0x63')]){_0x58e8d9['where']=_[_0x2179('0x9d')](_0x58e8d9[_0x2179('0x47')],{'$or':_[_0x2179('0x59')](_0x58e8d9[_0x2179('0x40')],function(_0x504413){var _0x3d9e94={};_0x3d9e94[_0x504413]={'$like':'%'+_0x321577['query'][_0x2179('0x63')]+'%'};return _0x3d9e94;})});}_0x58e8d9=_[_0x2179('0x9d')]({},_0x58e8d9,_0x321577[_0x2179('0xd2')]);return db[_0x2179('0xd7')][_0x2179('0x25')]({'where':_0x58e8d9['where']})[_0x2179('0x2d')](function(_0x21c5d5){_0x2c1654['count']=_0x21c5d5;if(_0x321577['query'][_0x2179('0xd3')]){_0x58e8d9[_0x2179('0xd4')]=[{'all':!![]}];}return db[_0x2179('0xd7')]['findAll'](_0x58e8d9);})[_0x2179('0x2d')](function(_0x26a08b){_0x2c1654[_0x2179('0x93')]=_0x26a08b;return _0x2c1654;});}})['then'](respondWithFilteredResult(_0x6bc648,_0x58e8d9))[_0x2179('0x96')](handleError(_0x6bc648,null));};exports[_0x2179('0xd8')]=function(_0x1677dd,_0x442552,_0x2247cd){try{if(!_0x1677dd['body'][_0x2179('0x67')]){throw new Error(_0x2179('0xd9'));}if(!_0x1677dd['body'][_0x2179('0xda')]){throw new Error(_0x2179('0xdb'));}if(!_0x1677dd[_0x2179('0x9e')][_0x2179('0xdc')]){throw new Error(_0x2179('0xdd'));}if(!_0x1677dd['body'][_0x2179('0xde')]){throw new Error(_0x2179('0xdf'));}var _0x37ab49=_0x1677dd[_0x2179('0x9e')][_0x2179('0xda')][_0x2179('0x58')](',');var _0x1a2cc0=_0x1677dd[_0x2179('0x9e')]['binding_values'][_0x2179('0x58')](',');if(!_0x37ab49[_0x2179('0x3a')]||!_0x1a2cc0[_0x2179('0x3a')]||_0x37ab49['length']!==_0x1a2cc0[_0x2179('0x3a')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x1677dd['body'][_0x2179('0x42')]=_[_0x2179('0xe0')](_0x37ab49,_0x1a2cc0);if(!_0x1677dd[_0x2179('0x9e')][_0x2179('0x42')][_0x2179('0xc9')]){throw new Error(_0x2179('0xe1'));}if(!_0x1677dd[_0x2179('0x9e')][_0x2179('0x42')][_0x2179('0xe2')]){throw new Error(_0x2179('0xe3'));}var _0x1d2572=path[_0x2179('0xb9')](config['root'],_0x2179('0xe4'),_0x1677dd['file'][_0x2179('0xe5')]);fs['chmodSync'](_0x1d2572,parseInt('0777',0x8));var _0x3cc50a=require(_0x2179('0xe6'))[_0x2179('0xe7')](path[_0x2179('0xb9')](__dirname,_0x2179('0xe8')),[_0x1d2572,_0x1677dd[_0x2179('0x9e')][_0x2179('0xda')],_0x1677dd[_0x2179('0x9e')]['binding_values'],_0x1677dd[_0x2179('0x9e')][_0x2179('0x67')],_0x1677dd['body'][_0x2179('0xe9')],_0x1677dd[_0x2179('0x9e')][_0x2179('0xbc')],_0x1677dd['body'][_0x2179('0xde')]]);return _0x442552[_0x2179('0x20')](0xc8)[_0x2179('0x28')]({'message':_0x2179('0xea'),'pid':_0x3cc50a[_0x2179('0xeb')]});}catch(_0x55a2a1){return _0x442552[_0x2179('0x20')](0x1f4)[_0x2179('0x32')](_0x55a2a1);}};exports['upload']=function(_0x4f53cf,_0x4d2615,_0x4d5daf){var _0x5e4946=fs[_0x2179('0xec')](_0x4f53cf['file']['path']);Papa[_0x2179('0xed')](_0x5e4946,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x17b484){return _0x4d2615[_0x2179('0x20')](0xc8)[_0x2179('0x28')]({'file':_0x4f53cf[_0x2179('0xee')],'fields':_0x17b484[_0x2179('0xef')][_0x2179('0x42')]});}});};exports[_0x2179('0xf0')]=function(_0x8a5101,_0x51020d,_0x4b54db){return db[_0x2179('0x5c')][_0x2179('0x9b')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})['then'](function(_0x352e8b){var _0x404831=![];if(!_0x8a5101['body']['ListId']){throw new Error('No\x20ListId\x20specified');}if(!_0x8a5101['body'][_0x2179('0xf1')][_0x2179('0xc9')]){throw new Error(_0x2179('0xe1'));}if(!_0x8a5101[_0x2179('0x9e')][_0x2179('0xf1')][_0x2179('0xe2')]){throw new Error(_0x2179('0xe3'));}if(!_0x8a5101[_0x2179('0x9e')][_0x2179('0xde')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x376219=require(_0x2179('0xe6'))[_0x2179('0xe7')](path[_0x2179('0xb9')](__dirname,_0x2179('0xf2')),[_0x8a5101[_0x2179('0xc7')]['id'],JSON[_0x2179('0xf3')](_0x8a5101['body']),JSON['stringify'](_0x352e8b)]);_0x376219['on']('message',function(_0x57fa5f){_0x404831=!![];return _0x51020d[_0x2179('0x20')](0xc8)['json']({'message':_0x2179('0xf4'),'pid':_0x376219[_0x2179('0xeb')]});});_0x376219['on'](_0x2179('0xf5'),function(_0x17ee3a){if(_0x17ee3a&&!_0x404831){return _0x51020d[_0x2179('0x20')](0x1f4)[_0x2179('0x28')]({'message':_0x2179('0xf6'),'pid':_0x376219[_0x2179('0xeb')]});}});})['catch'](handleError(_0x51020d,null));};exports[_0x2179('0xf7')]=function(_0x23d5f9,_0xe4e039){var _0x201b5c=['mail',_0x2179('0xf8'),'sms',_0x2179('0xf9'),_0x2179('0xfa'),_0x2179('0xfb'),_0x2179('0xfc')];var _0x3589ee={'offset':0x0,'order':qs['sort'](_0x2179('0xfd'))},_0x5809c2={'count':0x0,'rows':[]};Promise[_0x2179('0x7f')]()[_0x2179('0x2d')](function(){if(_0x23d5f9[_0x2179('0x3d')][_0x2179('0xfe')]){if(!_[_0x2179('0xff')](_0x201b5c,_0x23d5f9[_0x2179('0x3d')][_0x2179('0xfe')][_0x2179('0x100')]())){throw new Error(_0x2179('0x101'));}_0x201b5c=[_0x23d5f9[_0x2179('0x3d')][_0x2179('0xfe')][_0x2179('0x100')]()];}if(_0x23d5f9[_0x2179('0x3d')][_0x2179('0x102')]){try{var _0x360693=JSON['parse'](_0x23d5f9[_0x2179('0x3d')]['range']);if(!moment(_0x360693[_0x2179('0x9f')])[_0x2179('0x103')]()){throw new Error(_0x2179('0x104'));}if(!moment(_0x360693['to'])[_0x2179('0x103')]()){throw new Error(_0x2179('0x105'));}}catch(_0x156aa3){throw new Error(_0x2179('0x106'));}}if(!_0x23d5f9[_0x2179('0x3d')][_0x2179('0x43')]('nolimit')){_0x3589ee[_0x2179('0x24')]=qs[_0x2179('0x24')](_0x23d5f9[_0x2179('0x3d')][_0x2179('0x24')]||0xa);_0x3589ee[_0x2179('0x22')]=qs[_0x2179('0x22')](_0x23d5f9[_0x2179('0x3d')][_0x2179('0x22')]);}var _0x41c976=_0x201b5c[_0x2179('0x59')](function(_0x3c1462){if(_0x3c1462===_0x2179('0xfc')){var _0x2dc32f={'attributes':['id',_0x2179('0x107'),_0x2179('0x3b'),_0x2179('0x108'),_0x2179('0x109'),_0x2179('0x10a'),_0x2179('0x10b'),_0x2179('0x10c'),_0x2179('0x10d'),'note',_0x2179('0x10e'),'userDisposition',_0x2179('0x10f'),_0x2179('0x110'),'UserId'],'where':{'ContactId':_0x23d5f9['params']['id']},'include':[{'model':db['User'],'as':_0x2179('0x5c'),'attributes':['id',_0x2179('0x31'),'fullname',_0x2179('0x9c')]}],'order':[[_0x2179('0x10e'),_0x2179('0x7e')]]};if(_0x23d5f9['query'][_0x2179('0x102')]){_0x2dc32f[_0x2179('0x47')]['createdAt']={'$gte':_0x360693[_0x2179('0x9f')],'$lte':_0x360693['to']};}return db[_0x2179('0xb2')]['findAndCountAll'](_0x2dc32f)[_0x2179('0x2d')](function(_0x527a38){_0x5809c2[_0x2179('0x25')]+=_0x527a38[_0x2179('0x25')];return _[_0x2179('0x59')](_0x527a38[_0x2179('0x93')],function(_0x48be68){var _0x304814=_0x48be68['get']({'plain':!![]});_0x304814[_0x2179('0xfe')]=_0x3c1462;if(_0x304814[_0x2179('0x5c')]){_0x304814[_0x2179('0x5c')]={'id':_0x304814[_0x2179('0x5c')]['id'],'name':_0x304814[_0x2179('0x5c')][_0x2179('0x31')],'fullname':_0x304814[_0x2179('0x5c')][_0x2179('0x111')],'alias':_0x304814[_0x2179('0x5c')][_0x2179('0x9c')]};}return _0x304814;});});}else{var _0x5551ba=_['startCase'](_0x3c1462)+(_0x3c1462==='chat'?_0x2179('0x112'):_0x2179('0x113'));var _0x4f6809={'attributes':['id',_0x2179('0x114'),_0x2179('0x115'),_0x2179('0x10e'),_0x2179('0x116'),_0x2179('0x117'),_0x2179('0x118'),_0x2179('0x119'),'UserId',_0x5551ba+'Id'],'where':{'ContactId':_0x23d5f9[_0x2179('0xc7')]['id']},'include':[{'model':db[_0x5551ba],'as':_0x2179('0x113'),'attributes':['id',_0x2179('0x31'),_0x2179('0x11a')]},{'model':db[_0x2179('0x5c')],'as':_0x2179('0x11b'),'attributes':['id',_0x2179('0x31'),_0x2179('0x111')]},{'model':db[_0x2179('0xcb')],'as':'Tags','attributes':['id',_0x2179('0x31'),_0x2179('0x4a')],'through':{'attributes':[]}}],'order':[[_0x2179('0x10e'),_0x2179('0x7e')]]};if(_0x23d5f9[_0x2179('0x3d')][_0x2179('0x102')]){_0x4f6809[_0x2179('0x47')][_0x2179('0x10e')]={'$gte':_0x360693[_0x2179('0x9f')],'$lte':_0x360693['to']};}switch(_0x3c1462){case _0x2179('0xf8'):_0x4f6809[_0x2179('0x40')][_0x2179('0x37')](_0x2179('0x11c'),_0x2179('0x11d'),_0x2179('0x11e'),_0x2179('0x11f'),_0x2179('0x120'),_0x2179('0x121'),_0x2179('0x122'),_0x2179('0x123'),_0x2179('0x124'));break;case _0x2179('0x125'):_0x4f6809[_0x2179('0x40')][_0x2179('0x37')](_0x2179('0x126'),_0x2179('0x127'));break;case _0x2179('0xf9'):_0x4f6809[_0x2179('0x40')]['push'](_0x2179('0x128'),'threadId');break;}return db[_[_0x2179('0x129')](_0x3c1462)+'Interaction'][_0x2179('0x12a')](_0x4f6809)[_0x2179('0x2d')](function(_0x3a9473){_0x5809c2[_0x2179('0x25')]+=_0x3a9473['count'];return _[_0x2179('0x59')](_0x3a9473['rows'],function(_0x2bcc09){var _0x49e2e0=_0x2bcc09['get']({'plain':!![]});_0x49e2e0[_0x2179('0xfe')]=_0x3c1462;if(_0x49e2e0['Owner']){_0x49e2e0[_0x2179('0x11b')]={'id':_0x49e2e0[_0x2179('0x11b')]['id'],'name':_0x49e2e0[_0x2179('0x11b')][_0x2179('0x31')],'fullname':_0x49e2e0['Owner'][_0x2179('0x111')]};}return _0x49e2e0;});});}});return Promise[_0x2179('0x12b')](_0x41c976);})[_0x2179('0x2d')](function(_0x60af07){return _(_0x60af07)['flatten']()[_0x2179('0x12c')](_0x2179('0x10e'))[_0x2179('0x12d')]()[_0x2179('0x57')]();})['then'](function(_0x5a24be){_0x5809c2[_0x2179('0x93')]=_0x3589ee[_0x2179('0x24')]?_0x5a24be[_0x2179('0x12e')](_0x3589ee[_0x2179('0x22')],_0x3589ee[_0x2179('0x22')]+_0x3589ee[_0x2179('0x24')]):_0x5a24be;return _0x5809c2;})[_0x2179('0x2d')](respondWithFilteredResult(_0xe4e039,_0x3589ee))['catch'](handleError(_0xe4e039,null));};
\ No newline at end of file
+var _0xa962=['c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','SELECT','clone','order','DESC','t.id\x20IN\x20?','user','agent','c.ListId\x20IS\x20NULL','map','role','ListId','sequelize','toString','keyBy','merge','c.firstName','c.lastName','c.phone','c.mobile','c.fax','c.email','c.ListId','c.CompanyId','TagIds','Tags','rows','catch','params','tags','columnName','displayName','findAll','alias','custom','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','create','ChatInteraction','update','ChatMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','CmHopperHistory','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappQueueReport','each','duplicates','$or','findOrCreate','spread','show','$and','omit','format','cf_%d','pickBy','table','setFields','toParam','values','phone','findOne','rawAttributes','options','getTags','nolimit','setTags','ids','getHoppers','ContactId','includeAll','include','getHopperHistories','getHopperFinals','getJscriptySessions','uploadCsv','No\x20association\x20keys\x20specified!','No\x20association\x20values\x20specified!','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','binding_values','Incorrect\x20binding\x20parameters\x20passed!','No\x20phone\x20column\x20specified','firstName','root','server/files/tmp','file','filename','chmodSync','child_process','fork','binding_keys','CompanyId','socket_timestamp','File\x20uploaded\x20correctly!','pid','parse','meta','import','No\x20ListId\x20specified','binding','No\x20firstName\x20column\x20specified','../../components/import/cm/csv2','stringify','error\x20child\x20process','getJourney','mail','chat','sms','whatsapp','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','source','destination','callerid','starttime','endtime','duration','note','userDisposition','fullname','createdAt','findAndCountAll','startCase','Website','Account','closed','closedAt','disposition','secondDisposition','Owner','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','subject','substatus','openchannel','threadId','Interaction','all','sortBy','reverse','slice','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','socket.io-emitter','./cmContact.socket','sendStatus','end','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','CmContact','describe','length','keys','startsWith','cf_','push','CmCustomField','trimStart','fieldType','type','query','filters','model','attributes','intersection','fields','hasOwnProperty','sort','where','pick','select','field','color','from','tools_tags','cm_contacts','left_join','cm_user_has_contacts','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','search','conditions','find','Tag','value','split','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','and','dateOfBirth','datetime','castTo','buildExpression','text','start','filter','isNil','Contact','isEmpty','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','isArray','tag','forEach','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?'];(function(_0x550fc0,_0x1a3d50){var _0x526d25=function(_0x4abc47){while(--_0x4abc47){_0x550fc0['push'](_0x550fc0['shift']());}};_0x526d25(++_0x1a3d50);}(_0xa962,0x1de));var _0x2a96=function(_0x177845,_0x504171){_0x177845=_0x177845-0x0;var _0x49fa59=_0xa962[_0x177845];return _0x49fa59;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2a96('0x0'));var jsonpatch=require(_0x2a96('0x1'));var rp=require(_0x2a96('0x2'));var moment=require(_0x2a96('0x3'));var BPromise=require(_0x2a96('0x4'));var Mustache=require(_0x2a96('0x5'));var util=require(_0x2a96('0x6'));var path=require(_0x2a96('0x7'));var sox=require(_0x2a96('0x8'));var csv=require('to-csv');var ejs=require(_0x2a96('0x9'));var fs=require('fs');var fs_extra=require(_0x2a96('0xa'));var _=require(_0x2a96('0xb'));var squel=require(_0x2a96('0xc'));var crypto=require(_0x2a96('0xd'));var jsforce=require(_0x2a96('0xe'));var deskjs=require(_0x2a96('0xf'));var toCsv=require('to-csv');var querystring=require(_0x2a96('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2a96('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2a96('0x12'));var hardwareService=require(_0x2a96('0x13'));var logger=require(_0x2a96('0x14'))(_0x2a96('0x15'));var utils=require(_0x2a96('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2a96('0x17'))['db'];config[_0x2a96('0x18')]=_[_0x2a96('0x19')](config[_0x2a96('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x2a96('0x1a'))(new Redis(config[_0x2a96('0x18')]));require(_0x2a96('0x1b'))['register'](socket);function respondWithStatusCode(_0x143008,_0x27b065){_0x27b065=_0x27b065||0xcc;return function(_0xac3bf0){if(_0xac3bf0){return _0x143008[_0x2a96('0x1c')](_0x27b065);}return _0x143008['status'](_0x27b065)[_0x2a96('0x1d')]();};}function respondWithResult(_0x3acd10,_0x46bc77){_0x46bc77=_0x46bc77||0xc8;return function(_0x111885){if(_0x111885){return _0x3acd10['status'](_0x46bc77)[_0x2a96('0x1e')](_0x111885);}};}function respondWithFilteredResult(_0x5ecb6e,_0x4289f5){return function(_0x2b449f){if(_0x2b449f){var _0x59cf6f=typeof _0x4289f5[_0x2a96('0x1f')]==='undefined'&&typeof _0x4289f5[_0x2a96('0x20')]===_0x2a96('0x21');var _0x661d3c=_0x2b449f[_0x2a96('0x22')];var _0x5b8983=_0x59cf6f?0x0:_0x4289f5[_0x2a96('0x1f')];var _0x45cb42=_0x59cf6f?_0x2b449f[_0x2a96('0x22')]:_0x4289f5[_0x2a96('0x1f')]+_0x4289f5[_0x2a96('0x20')];var _0x1f455d;if(_0x45cb42>=_0x661d3c){_0x45cb42=_0x661d3c;_0x1f455d=0xc8;}else{_0x1f455d=0xce;}_0x5ecb6e[_0x2a96('0x23')](_0x1f455d);return _0x5ecb6e[_0x2a96('0x24')](_0x2a96('0x25'),_0x5b8983+'-'+_0x45cb42+'/'+_0x661d3c)[_0x2a96('0x1e')](_0x2b449f);}return null;};}function patchUpdates(_0xba1913){return function(_0x2031ba){try{jsonpatch[_0x2a96('0x26')](_0x2031ba,_0xba1913,!![]);}catch(_0x3bcd99){return BPromise[_0x2a96('0x27')](_0x3bcd99);}return _0x2031ba[_0x2a96('0x28')]();};}function saveUpdates(_0x526177,_0x36317b){return function(_0x275060){if(_0x275060){return _0x275060['update'](_0x526177)[_0x2a96('0x29')](function(_0x520927){return _0x520927;});}return null;};}function removeEntity(_0x34f66a,_0x3dbdea){return function(_0x4188a7){if(_0x4188a7){return _0x4188a7[_0x2a96('0x2a')]()[_0x2a96('0x29')](function(){_0x34f66a[_0x2a96('0x23')](0xcc)[_0x2a96('0x1d')]();});}};}function handleEntityNotFound(_0x32af72,_0x1e09bc){return function(_0x2cce1d){if(!_0x2cce1d){_0x32af72[_0x2a96('0x1c')](0x194);}return _0x2cce1d;};}function handleError(_0x5d71af,_0xd6f037){_0xd6f037=_0xd6f037||0x1f4;return function(_0x562f9e){logger[_0x2a96('0x2b')](_0x562f9e[_0x2a96('0x2c')]);if(_0x562f9e[_0x2a96('0x2d')]){delete _0x562f9e[_0x2a96('0x2d')];}_0x5d71af[_0x2a96('0x23')](_0xd6f037)[_0x2a96('0x2e')](_0x562f9e);};}exports['index']=function(_0x2837c6,_0x8ded6a){var _0x52aaed={},_0x438dff={},_0x440d39={'count':0x0,'rows':[]};return db[_0x2a96('0x2f')][_0x2a96('0x30')]()[_0x2a96('0x29')](function(_0x135a8f){var _0x1b752c=[];for(var _0x27850d=0x0;_0x27850d<Object['keys'](_0x135a8f)[_0x2a96('0x31')];_0x27850d++){var _0x3d4cb4=Object[_0x2a96('0x32')](_0x135a8f)[_0x27850d];if(_[_0x2a96('0x33')](_0x3d4cb4,_0x2a96('0x34'))){_0x1b752c[_0x2a96('0x35')](db[_0x2a96('0x36')]['findOne']({'where':{'id':_[_0x2a96('0x37')](_0x3d4cb4,_0x2a96('0x34'))},'raw':!![]}));}}return BPromise['all'](_0x1b752c)[_0x2a96('0x29')](function(_0x4f42b5){for(var _0x2f7093=0x0;_0x2f7093<_0x4f42b5[_0x2a96('0x31')];_0x2f7093++){if(_0x4f42b5[_0x2f7093]){var _0x43dd92=_0x2a96('0x34')+_0x4f42b5[_0x2f7093]['id'];var _0x2f0e96=_0x135a8f[_0x43dd92];_0x2f0e96[_0x2a96('0x38')]=_0x4f42b5[_0x2f7093][_0x2a96('0x39')];}}return _0x135a8f;});})[_0x2a96('0x29')](function(_0x5522c9){_0x438dff['model']=_[_0x2a96('0x32')](_0x5522c9);_0x438dff[_0x2a96('0x3a')]=_[_0x2a96('0x32')](_0x2837c6[_0x2a96('0x3a')]);_0x438dff[_0x2a96('0x3b')]=_['intersection'](_0x438dff[_0x2a96('0x3c')],_0x438dff['query']);_0x52aaed[_0x2a96('0x3d')]=_[_0x2a96('0x3e')](_0x438dff[_0x2a96('0x3c')],qs['fields'](_0x2837c6[_0x2a96('0x3a')][_0x2a96('0x3f')]));_0x52aaed['attributes']=_0x52aaed[_0x2a96('0x3d')][_0x2a96('0x31')]?_0x52aaed['attributes']:_0x438dff[_0x2a96('0x3c')];if(!_0x2837c6[_0x2a96('0x3a')][_0x2a96('0x40')]('nolimit')){_0x52aaed['limit']=qs[_0x2a96('0x20')](_0x2837c6[_0x2a96('0x3a')][_0x2a96('0x20')]);_0x52aaed['offset']=qs[_0x2a96('0x1f')](_0x2837c6['query']['offset']);}_0x52aaed['order']=qs[_0x2a96('0x41')](_0x2837c6[_0x2a96('0x3a')][_0x2a96('0x41')]);_0x52aaed[_0x2a96('0x42')]=qs[_0x2a96('0x3b')](_[_0x2a96('0x43')](_0x2837c6[_0x2a96('0x3a')],_0x438dff[_0x2a96('0x3b')]),_0x5522c9);var _0x4c953b=[];var _0x262102=squel[_0x2a96('0x44')]()[_0x2a96('0x45')]('id')[_0x2a96('0x45')](_0x2a96('0x2d'))[_0x2a96('0x45')](_0x2a96('0x46'))[_0x2a96('0x47')](_0x2a96('0x48'));var _0x461b08=squel[_0x2a96('0x44')]()['from'](_0x2a96('0x49'),'c')[_0x2a96('0x4a')](_0x2a96('0x4b'),'uc','uc.CmContactId\x20=\x20c.id')[_0x2a96('0x4a')](_0x2a96('0x4c'),'ct',_0x2a96('0x4d'))[_0x2a96('0x4a')](_0x2a96('0x48'),'t','t.id\x20=\x20ct.TagId')[_0x2a96('0x42')](_0x2a96('0x4e'));var _0x23b81a=squel[_0x2a96('0x4f')]();var _0x47d89c=[];var _0x3be57f=squel[_0x2a96('0x4f')]();var _0x37f5dd;if(_0x2837c6[_0x2a96('0x3a')][_0x2a96('0x50')]){_0x37f5dd=as['parseSearch'](_0x2837c6[_0x2a96('0x3a')][_0x2a96('0x50')]);var _0x175e3d=_0x37f5dd['sqlOperator'];for(var _0x174b8e=0x0;_0x174b8e<_0x37f5dd[_0x2a96('0x51')]['length'];_0x174b8e++){var _0x3ee1ea=_0x37f5dd[_0x2a96('0x51')][_0x174b8e];var _0x24a07b='c';var _0x5e2d07=_(_0x5522c9)[_0x2a96('0x32')]()[_0x2a96('0x52')](function(_0x41afa8){return _0x41afa8===_0x3ee1ea[_0x2a96('0x45')];});if(_0x5e2d07)_0x5e2d07=_0x5522c9[_0x3ee1ea[_0x2a96('0x45')]];if(!_0x5e2d07){if(_0x3ee1ea[_0x2a96('0x45')]===_0x2a96('0x53')){var _0x46ffc5=_0x3ee1ea[_0x2a96('0x54')][_0x2a96('0x55')](',')['map'](function(_0x38bb45){return Number(_0x38bb45);});_0x46ffc5['forEach'](function(_0x3caafc){_0x3be57f['or'](_0x2a96('0x56'),'%,'+_0x3caafc+',%');});_0x47d89c=_['union'](_0x47d89c,_0x46ffc5);}else if(_0x3ee1ea[_0x2a96('0x45')]===_0x2a96('0x57')){_0x23b81a[_0x2a96('0x58')]('uc.UserId\x20=\x20?',_0x3ee1ea[_0x2a96('0x54')]);}}else{if(_0x3ee1ea[_0x2a96('0x45')]===_0x2a96('0x59')||_0x5e2d07['fieldType']===_0x2a96('0x5a'))_0x3ee1ea[_0x2a96('0x5b')]='DATE';var _0x256fcf=as[_0x2a96('0x5c')](_0x24a07b,_0x5e2d07[_0x2a96('0x39')],_0x3ee1ea);_0x23b81a[_0x175e3d](_0x256fcf[_0x2a96('0x5d')],_0x256fcf[_0x2a96('0x54')][_0x2a96('0x5e')],_0x256fcf['value']['end']);}}}else{var _0x1342fe=_(Object[_0x2a96('0x32')](_0x2837c6[_0x2a96('0x3a')]))['map'](function(_0x34e363){return _0x5522c9[_0x2a96('0x40')](_0x34e363)?_0x34e363:undefined;})[_0x2a96('0x5f')](function(_0x3338f8){return!_[_0x2a96('0x60')](_0x3338f8);})[_0x2a96('0x54')]();if(_0x2837c6[_0x2a96('0x3a')]['Contact'])_0x1342fe['push'](_0x2a96('0x61'));if(!_[_0x2a96('0x62')](_0x1342fe)){_0x1342fe['forEach'](function(_0x45fdda){if(_0x45fdda==='ListId'){_0x461b08[_0x2a96('0x42')](_0x2a96('0x63'),[][_0x2a96('0x64')](_0x2837c6['query'][_0x45fdda]));}else if(_0x45fdda===_0x2a96('0x61')){var _0xb5c33a='%'+_0x2837c6[_0x2a96('0x3a')][_0x45fdda]+'%';_0x461b08[_0x2a96('0x42')](_0x2a96('0x65'),_0xb5c33a);}else{_0x461b08['where']('c.'+_0x45fdda+_0x2a96('0x66'),_0x2837c6[_0x2a96('0x3a')][_0x45fdda]);}});}if(_0x2837c6[_0x2a96('0x3a')]['tag']){_0x47d89c=_[_0x2a96('0x67')](_0x2837c6[_0x2a96('0x3a')]['tag'])?_0x2837c6['query'][_0x2a96('0x68')]:new Array(_0x2837c6[_0x2a96('0x3a')]['tag']);_0x47d89c[_0x2a96('0x69')](function(_0x5f3dda){_0x3be57f['or'](_0x2a96('0x56'),'%,'+_0x5f3dda+',%');});}if(_0x2837c6['query'][_0x2a96('0x5f')]){var _0x917c39=_0x2837c6['query']['filter'][_0x2a96('0x6a')]('\x5c','\x5c\x5c')[_0x2a96('0x6a')](/'/g,'\x27\x27');if(_0x917c39[_0x2a96('0x55')]('\x20')[_0x2a96('0x31')]>0x1){_0x23b81a['or'](_0x2a96('0x6b'),qs[_0x2a96('0x6c')](_0x917c39),null);}else{if(qs[_0x2a96('0x6d')](_0x917c39)){_0x23b81a['or'](_0x2a96('0x6e'),_0x917c39+'%');_0x23b81a['or'](_0x2a96('0x6f'),_0x917c39+'%');_0x23b81a['or']('c.mobile\x20LIKE\x20?',_0x917c39+'%');_0x23b81a['or'](_0x2a96('0x70'),_0x917c39+'%');}else if(qs[_0x2a96('0x71')](_0x917c39)){_0x23b81a['or'](_0x2a96('0x72'),_0x917c39+'%');}else{_0x23b81a['or'](_0x2a96('0x73'),'%'+_0x917c39+'%');_0x23b81a['or'](_0x2a96('0x74'),'%'+_0x917c39+'%');_0x23b81a['or'](_0x2a96('0x72'),'%'+_0x917c39+'%');}}}}_0x461b08[_0x2a96('0x42')](_0x23b81a);_0x461b08[_0x2a96('0x75')](_0x2a96('0x76'));var _0x3a0058={'type':db[_0x2a96('0x77')][_0x2a96('0x78')][_0x2a96('0x79')],'raw':!![]};var _0x20090a=_0x461b08[_0x2a96('0x7a')]()[_0x2a96('0x45')](_0x2a96('0x76'));if(_0x52aaed[_0x2a96('0x7b')]){_0x52aaed['order']['forEach'](function(_0x345784){_0x461b08['order']('c.'+_0x345784[0x0],_0x345784[0x1]===_0x2a96('0x7c')?![]:!![]);});}if(!_['isEmpty'](_0x47d89c)){_0x461b08['having'](_0x3be57f);_0x20090a[_0x2a96('0x42')](_0x2a96('0x7d'),_0x47d89c);}BPromise['resolve']()[_0x2a96('0x29')](function(){if(!_0x37f5dd)return;if(_0x2837c6[_0x2a96('0x7e')]['role']!==_0x2a96('0x7f'))return;if(!_['some'](_0x37f5dd[_0x2a96('0x51')],[_0x2a96('0x45'),_0x2a96('0x57')])){return _0x2837c6['user']['getLists']({'attributes':['id'],'raw':!![]})['then'](function(_0x5cc59c){if(_[_0x2a96('0x62')](_0x5cc59c)){_0x20090a['where'](_0x2a96('0x80'));_0x461b08[_0x2a96('0x42')](_0x2a96('0x80'));}else{_0x20090a[_0x2a96('0x42')](_0x2a96('0x63'),_[_0x2a96('0x81')](_0x5cc59c,'id'));_0x461b08[_0x2a96('0x42')](_0x2a96('0x63'),_[_0x2a96('0x81')](_0x5cc59c,'id'));}});}})[_0x2a96('0x29')](function(){if(_0x2837c6['user'][_0x2a96('0x82')]===_0x2a96('0x7f')&&!_0x37f5dd&&!_0x2837c6[_0x2a96('0x3a')][_0x2a96('0x83')])return[];return db[_0x2a96('0x84')][_0x2a96('0x3a')](_0x20090a[_0x2a96('0x85')](),_0x3a0058);})[_0x2a96('0x29')](function(_0x2c7d41){_0x440d39['count']=_0x2c7d41[_0x2a96('0x31')];if(_0x440d39[_0x2a96('0x22')]===0x0)return[];return db[_0x2a96('0x84')][_0x2a96('0x3a')](_0x262102[_0x2a96('0x85')](),_0x3a0058)[_0x2a96('0x29')](function(_0x170862){_0x4c953b=_[_0x2a96('0x86')](_0x170862,'id');_0x3a0058=_[_0x2a96('0x87')](_0x3a0058,{'model':db[_0x2a96('0x2f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2837c6[_0x2a96('0x3a')][_0x2a96('0x3f')]){_0x52aaed[_0x2a96('0x3d')][_0x2a96('0x69')](function(_0x585260){_0x461b08[_0x2a96('0x45')]('c.'+_0x585260);});}else{_0x461b08[_0x2a96('0x45')](_0x2a96('0x76'));_0x461b08[_0x2a96('0x45')](_0x2a96('0x88'));_0x461b08[_0x2a96('0x45')](_0x2a96('0x89'));_0x461b08[_0x2a96('0x45')](_0x2a96('0x8a'));_0x461b08['field'](_0x2a96('0x8b'));_0x461b08['field'](_0x2a96('0x8c'));_0x461b08[_0x2a96('0x45')](_0x2a96('0x8d'));_0x461b08[_0x2a96('0x45')](_0x2a96('0x8e'));_0x461b08[_0x2a96('0x45')]('c.createdAt');_0x461b08[_0x2a96('0x45')]('c.deletedAt');_0x461b08[_0x2a96('0x45')](_0x2a96('0x8f'));_0x461b08[_0x2a96('0x45')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x2a96('0x90'));}if(_0x52aaed[_0x2a96('0x20')])_0x461b08['limit'](_0x52aaed[_0x2a96('0x20')]);if(_0x52aaed[_0x2a96('0x1f')])_0x461b08[_0x2a96('0x1f')](_0x52aaed['offset']);return db[_0x2a96('0x84')][_0x2a96('0x3a')](_0x461b08[_0x2a96('0x85')](),_0x3a0058);});})[_0x2a96('0x29')](function(_0x47a140){_0x47a140['forEach'](function(_0x28b999){if(_0x28b999[_0x2a96('0x90')]){_0x28b999[_0x2a96('0x91')]=[];_0x28b999['TagIds']['split'](',')[_0x2a96('0x69')](function(_0x3948df){_0x28b999['Tags']['push'](_0x4c953b[_0x3948df]);});}delete _0x28b999['TagIds'];});_0x440d39[_0x2a96('0x92')]=_0x47a140;return _0x440d39;})[_0x2a96('0x29')](respondWithFilteredResult(_0x8ded6a,_0x52aaed));})[_0x2a96('0x93')](handleError(_0x8ded6a,null));};exports[_0x2a96('0x2a')]=function(_0x3e076b,_0x587c02){return db[_0x2a96('0x2f')][_0x2a96('0x52')]({'where':{'id':_0x3e076b[_0x2a96('0x94')]['id']}})[_0x2a96('0x29')](handleEntityNotFound(_0x587c02,null))[_0x2a96('0x29')](removeEntity(_0x587c02,null))[_0x2a96('0x93')](handleError(_0x587c02,null));};exports['describe']=function(_0x1a7c37,_0x4226ac){return db[_0x2a96('0x2f')][_0x2a96('0x30')]()['then'](function(_0x57f681){delete _0x57f681[_0x2a96('0x95')];for(var _0x4c6cd2=0x0;_0x4c6cd2<Object[_0x2a96('0x32')](_0x57f681)['length'];_0x4c6cd2++){var _0x49bb52=Object[_0x2a96('0x32')](_0x57f681)[_0x4c6cd2];if(!_['startsWith'](_0x49bb52,'cf_')){_0x57f681[_0x49bb52][_0x2a96('0x96')]=_0x49bb52;_0x57f681[_0x49bb52][_0x2a96('0x97')]=_0x49bb52;}}return _0x57f681;})[_0x2a96('0x29')](function(_0x40eb56){var _0x58f564={'where':{'$or':[{'ListId':_0x1a7c37['query']['id']},{'ListId':null}]},'raw':!![]};return db[_0x2a96('0x36')][_0x2a96('0x98')](_0x58f564)['then'](function(_0xef2404){for(var _0x2ed7a9=0x0;_0x2ed7a9<_0xef2404[_0x2a96('0x31')];_0x2ed7a9++){var _0x20b1d3=_0x2a96('0x34')+_0xef2404[_0x2ed7a9]['id'];_0x40eb56[_0x20b1d3][_0x2a96('0x96')]=_0x20b1d3;_0x40eb56[_0x20b1d3][_0x2a96('0x97')]=_0xef2404[_0x2ed7a9][_0x2a96('0x99')];_0x40eb56[_0x20b1d3][_0x2a96('0x9a')]={'type':_0xef2404[_0x2ed7a9]['type'],'values':_0xef2404[_0x2ed7a9]['values']};}Object['keys'](_0x40eb56)['forEach'](function(_0x4c7cf5){if(!_0x40eb56[_0x4c7cf5][_0x2a96('0x40')](_0x2a96('0x96'))){delete _0x40eb56[_0x4c7cf5];}});return _0x40eb56;});})['then'](respondWithResult(_0x4226ac,null))[_0x2a96('0x93')](handleError(_0x4226ac,null));};exports[_0x2a96('0x87')]=function(_0xd04c42,_0x1f216c){var _0x5c8b30;var _0x4c9e0e;var _0xd5b71f;if(_0xd04c42[_0x2a96('0x9b')]['id']){delete _0xd04c42[_0x2a96('0x9b')]['id'];}return db['CmContact'][_0x2a96('0x98')]({'where':{'id':[_0xd04c42[_0x2a96('0x9b')]['to'],_0xd04c42[_0x2a96('0x9b')][_0x2a96('0x47')]]}})[_0x2a96('0x29')](function(_0x5dbf91){if(_0x5dbf91){if(_0x5dbf91[_0x2a96('0x31')]!==0x2){return null;}_0x5dbf91[0x0]=_0x5dbf91[0x0]['get']({'plain':!![]});_0x5dbf91[0x1]=_0x5dbf91[0x1][_0x2a96('0x9c')]({'plain':!![]});delete _0x5dbf91[0x0]['id'];delete _0x5dbf91[0x1]['id'];return _[_0x2a96('0x9d')](_0x5dbf91[0x0],_0x5dbf91[0x1],function(_0x5e8bc6,_0x15e0d9){if(Array[_0x2a96('0x67')](_0x15e0d9)&&!_0x15e0d9['length']){return _0x5e8bc6;}else if(!_0x15e0d9){return _0x5e8bc6;}});}})[_0x2a96('0x29')](handleEntityNotFound(_0x1f216c,null))[_0x2a96('0x29')](function(_0x50e15e){if(_0x50e15e){if(_0x50e15e[_0x2a96('0x95')]&&_[_0x2a96('0x67')](_0x50e15e[_0x2a96('0x95')])){_0x50e15e[_0x2a96('0x95')]=_0x50e15e['tags'][_0x2a96('0x9e')]();}logger['info'](_0x2a96('0x9f'),_0xd04c42[_0x2a96('0x9b')]['to'],_0xd04c42['body'][_0x2a96('0x47')]);return db[_0x2a96('0xa0')][_0x2a96('0x2a')]({'where':{'ContactId':[_0xd04c42[_0x2a96('0x9b')]['to'],_0xd04c42[_0x2a96('0x9b')][_0x2a96('0x47')]]}})['then'](function(_0x293373){logger[_0x2a96('0xa1')](_0x2a96('0xa2'),_0x293373);return db[_0x2a96('0xa3')]['destroy']({'where':{'ContactId':[_0xd04c42[_0x2a96('0x9b')]['to'],_0xd04c42[_0x2a96('0x9b')][_0x2a96('0x47')]]}})[_0x2a96('0x29')](function(_0x1bac14){logger[_0x2a96('0xa1')](_0x2a96('0xa4'),_0x1bac14);return db['CmContact'][_0x2a96('0xa5')](_0x50e15e);});});}})[_0x2a96('0x29')](function(_0x3ff862){if(_0x3ff862){_0x5c8b30=_0x3ff862;_0x4c9e0e={'ContactId':_0x5c8b30['id']};_0xd5b71f={'where':{'ContactId':[_0xd04c42[_0x2a96('0x9b')]['to'],_0xd04c42[_0x2a96('0x9b')][_0x2a96('0x47')]]}};return db[_0x2a96('0xa6')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xa8')]['update'](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db['ChatOfflineMessage'][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xa9')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db['MailMessage'][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})['then'](function(){if(_0x5c8b30){return db[_0x2a96('0xa9')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})['then'](function(){if(_0x5c8b30){return db[_0x2a96('0xaa')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xab')]['update'](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xac')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xad')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})['then'](function(){if(_0x5c8b30){return db[_0x2a96('0xae')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xaf')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xb0')]['update'](_0x4c9e0e,_0xd5b71f);}})['then'](function(){if(_0x5c8b30){return db[_0x2a96('0xb1')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xb2')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})['then'](function(){if(_0x5c8b30){return db['ReportAgentPreview'][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xb3')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xb4')]['update'](_0x4c9e0e,_0xd5b71f);}})['then'](function(){if(_0x5c8b30){return db[_0x2a96('0xb5')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xb6')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})['then'](function(){if(_0x5c8b30){return db[_0x2a96('0xb7')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})['then'](function(){if(_0x5c8b30){return db['SmsQueueReport'][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})['then'](function(){if(_0x5c8b30){return db[_0x2a96('0xb8')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})['then'](function(){if(_0x5c8b30){return db[_0x2a96('0xb9')][_0x2a96('0xa7')](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db['WhatsappMessage']['update'](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db[_0x2a96('0xba')]['update'](_0x4c9e0e,_0xd5b71f);}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return db['CmContact'][_0x2a96('0x2a')]({'where':{'id':[_0xd04c42[_0x2a96('0x9b')]['to'],_0xd04c42[_0x2a96('0x9b')][_0x2a96('0x47')]]}});}})[_0x2a96('0x29')](function(){if(_0x5c8b30){return _0x5c8b30;}})[_0x2a96('0x29')](respondWithResult(_0x1f216c,null))[_0x2a96('0x93')](handleError(_0x1f216c,null));};exports['create']=function(_0x425c0f,_0x146929){return db[_0x2a96('0x2f')][_0x2a96('0x30')]()[_0x2a96('0x29')](function(_0x46a407){if(_0x425c0f[_0x2a96('0x9b')][_0x2a96('0x95')]&&_['isArray'](_0x425c0f[_0x2a96('0x9b')]['tags'])){if(_0x425c0f['body'][_0x2a96('0x95')]['length']){_0x425c0f[_0x2a96('0x9b')][_0x2a96('0x95')]=_0x425c0f[_0x2a96('0x9b')][_0x2a96('0x95')]['join'](';')+';';}else{_0x425c0f[_0x2a96('0x9b')]['tags']=null;}}else{_0x425c0f[_0x2a96('0x9b')]['tags']=null;}return db['CmContact']['create'](_0x425c0f[_0x2a96('0x9b')],{'fields':_[_0x2a96('0x32')](_0x46a407),'raw':!![]});})[_0x2a96('0x29')](respondWithResult(_0x146929,0xc9))[_0x2a96('0x93')](handleError(_0x146929,null));};exports['bulkCreate']=function(_0x414d12,_0x33b747){var _0x47612b=[];var _0x31c0e7=0x0;var _0x2fd342=0x0;var _0x4672a9=0x0;return db[_0x2a96('0x2f')][_0x2a96('0x30')]()['then'](function(_0x33e43a){return BPromise[_0x2a96('0xbb')](_0x414d12[_0x2a96('0x9b')],function(_0x3b4ead){var _0x4c8cbc={'where':{'$or':[]},'defaults':_0x3b4ead,'fields':_[_0x2a96('0x32')](_0x33e43a),'raw':!![]};if(_0x3b4ead[_0x2a96('0xbc')]){for(var _0x4d96d5=0x0;_0x4d96d5<_0x3b4ead[_0x2a96('0xbc')][_0x2a96('0x31')];_0x4d96d5++){var _0x3367fa={};_0x3367fa[_0x3b4ead['duplicates'][_0x4d96d5]]=_0x3b4ead[_0x3b4ead[_0x2a96('0xbc')][_0x4d96d5]];_0x4c8cbc[_0x2a96('0x42')][_0x2a96('0xbd')][_0x2a96('0x35')](_0x3367fa);}_0x4c8cbc['where'][_0x2a96('0x83')]=_0x3b4ead[_0x2a96('0x83')];}return db[_0x2a96('0x2f')][_0x2a96('0xbe')](_0x4c8cbc)[_0x2a96('0xbf')](function(_0x441caa,_0x3a2742){if(_0x3a2742){_0x31c0e7++;}else{_0x4672a9++;}})[_0x2a96('0x93')](function(_0x19bc35){console['error'](_0x19bc35);_0x2fd342++;});});})[_0x2a96('0x29')](function(_0x45466c){if(_0x45466c){return{'success':_0x31c0e7,'failure':_0x2fd342,'duplicates':_0x4672a9};}})['then'](respondWithResult(_0x33b747,0xc9))[_0x2a96('0x93')](handleError(_0x33b747,null));};exports[_0x2a96('0xc0')]=function(_0x1a14dd,_0x380220,_0x522483){var _0x56116d;return db['CmContact'][_0x2a96('0x30')]()['then'](function(_0x7d3a2a){return db['CmContact'][_0x2a96('0x52')]({'where':{'id':_0x1a14dd['params']['id']},'include':[{'model':db['Tag'],'as':_0x2a96('0x91'),'attributes':['id','name',_0x2a96('0x46')],'required':_0x1a14dd[_0x2a96('0x3a')][_0x2a96('0x68')]?!![]:![]}],'attributes':_['keys'](_0x7d3a2a)});})[_0x2a96('0x29')](function(_0x2ad753){_0x56116d=_0x2ad753[_0x2a96('0x9c')]({'plain':!![]});var _0x594940={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x2ad753&&_0x2ad753[_0x2a96('0x83')]){if(_0x2ad753['ListId']){_0x594940[_0x2a96('0x42')][_0x2a96('0xc1')][_0x2a96('0x35')]({'ListId':{'$ne':_0x2ad753['ListId']}});}}return db['CmCustomField'][_0x2a96('0x98')](_0x594940);})[_0x2a96('0x29')](function(_0x5256dc){return _[_0x2a96('0xc2')](_0x56116d,_[_0x2a96('0x81')](_0x5256dc,function(_0x513f9b){return util[_0x2a96('0xc3')](_0x2a96('0xc4'),_0x513f9b['id']);}));})['then'](handleEntityNotFound(_0x380220,null))[_0x2a96('0x29')](respondWithResult(_0x380220,null))['catch'](handleError(_0x380220,null));};exports['update']=function(_0x13f57b,_0x22f00b){var _0x5734c0;if(_0x13f57b[_0x2a96('0x9b')]['id']){delete _0x13f57b[_0x2a96('0x9b')]['id'];}return db[_0x2a96('0x2f')][_0x2a96('0x52')]({'where':{'id':_0x13f57b[_0x2a96('0x94')]['id']}})[_0x2a96('0x29')](handleEntityNotFound(_0x22f00b,null))['then'](saveUpdates(_0x13f57b['body'],null))[_0x2a96('0x29')](function(_0x3347b3){_0x5734c0=_0x3347b3;var _0x2314b5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3347b3&&_0x3347b3[_0x2a96('0x83')]){if(_0x3347b3[_0x2a96('0x83')]){_0x2314b5[_0x2a96('0x42')][_0x2a96('0xc1')][_0x2a96('0x35')]({'ListId':{'$ne':_0x3347b3[_0x2a96('0x83')]}});}}return db[_0x2a96('0x36')][_0x2a96('0x98')](_0x2314b5);})[_0x2a96('0x29')](function(_0xd200c6){if(_0xd200c6){return _['omit'](_[_0x2a96('0xc5')](_0x13f57b[_0x2a96('0x9b')],function(_0x3ab49f,_0x43a3a6){return _[_0x2a96('0x33')](_0x43a3a6,'cf_');}),_[_0x2a96('0x81')](_0xd200c6,function(_0x1d68da){return util[_0x2a96('0xc3')](_0x2a96('0xc4'),_0x1d68da['id']);}));}})['then'](function(_0x30cd86){if(_0x30cd86&&!_[_0x2a96('0x62')](_0x30cd86)){var _0x364718=squel[_0x2a96('0xa7')]()[_0x2a96('0xc6')]('cm_contacts')[_0x2a96('0xc7')](_0x30cd86)[_0x2a96('0x42')]('id\x20=\x20?',_0x13f57b[_0x2a96('0x94')]['id'])[_0x2a96('0xc8')]();return db[_0x2a96('0x84')][_0x2a96('0x3a')](_0x364718[_0x2a96('0x5d')],{'replacements':_0x364718[_0x2a96('0xc9')]});}})['then'](function(){if(_0x13f57b[_0x2a96('0x9b')]['phone']&&_0x5734c0){return db[_0x2a96('0xa0')][_0x2a96('0xa7')]({'phone':_0x13f57b['body'][_0x2a96('0xca')]},{'where':{'ContactId':_0x5734c0['id']}});}})[_0x2a96('0x29')](function(){return _0x5734c0;})[_0x2a96('0x29')](respondWithResult(_0x22f00b,null))[_0x2a96('0x93')](handleError(_0x22f00b,null));};exports['getTags']=function(_0x3798ab,_0x1c48ae,_0x1efb32){var _0x301b84={};var _0x5bc0fe={};var _0xe6c968;var _0x37c199;return db[_0x2a96('0x2f')][_0x2a96('0xcb')]({'where':{'id':_0x3798ab[_0x2a96('0x94')]['id']}})['then'](handleEntityNotFound(_0x1c48ae,null))[_0x2a96('0x29')](function(_0x2f7677){if(_0x2f7677){_0xe6c968=_0x2f7677;_0x5bc0fe[_0x2a96('0x3c')]=_['keys'](db[_0x2a96('0x53')][_0x2a96('0xcc')]);_0x5bc0fe[_0x2a96('0x3a')]=_['keys'](_0x3798ab['query']);_0x5bc0fe[_0x2a96('0x3b')]=_[_0x2a96('0x3e')](_0x5bc0fe[_0x2a96('0x3c')],_0x5bc0fe[_0x2a96('0x3a')]);_0x301b84['attributes']=_[_0x2a96('0x3e')](_0x5bc0fe[_0x2a96('0x3c')],qs[_0x2a96('0x3f')](_0x3798ab[_0x2a96('0x3a')][_0x2a96('0x3f')]));_0x301b84[_0x2a96('0x3d')]=_0x301b84[_0x2a96('0x3d')][_0x2a96('0x31')]?_0x301b84['attributes']:_0x5bc0fe[_0x2a96('0x3c')];_0x301b84[_0x2a96('0x7b')]=qs['sort'](_0x3798ab['query'][_0x2a96('0x41')]);_0x301b84['where']=qs['filters'](_[_0x2a96('0x43')](_0x3798ab[_0x2a96('0x3a')],_0x5bc0fe[_0x2a96('0x3b')]));if(_0x3798ab[_0x2a96('0x3a')][_0x2a96('0x5f')]){_0x301b84[_0x2a96('0x42')]=_['merge'](_0x301b84['where'],{'$or':_[_0x2a96('0x81')](_0x301b84['attributes'],function(_0x2b749f){var _0x3b04bc={};_0x3b04bc[_0x2b749f]={'$like':'%'+_0x3798ab[_0x2a96('0x3a')][_0x2a96('0x5f')]+'%'};return _0x3b04bc;})});}_0x301b84=_[_0x2a96('0x87')]({},_0x301b84,_0x3798ab[_0x2a96('0xcd')]);return _0xe6c968[_0x2a96('0xce')](_0x301b84);}})[_0x2a96('0x29')](function(_0x1c0d4c){if(_0x1c0d4c){_0x37c199=_0x1c0d4c['length'];if(!_0x3798ab[_0x2a96('0x3a')][_0x2a96('0x40')](_0x2a96('0xcf'))){_0x301b84['limit']=qs['limit'](_0x3798ab[_0x2a96('0x3a')]['limit']);_0x301b84[_0x2a96('0x1f')]=qs[_0x2a96('0x1f')](_0x3798ab[_0x2a96('0x3a')][_0x2a96('0x1f')]);}return _0xe6c968[_0x2a96('0xce')](_0x301b84);}})[_0x2a96('0x29')](function(_0x21e156){if(_0x21e156){return _0x21e156?{'count':_0x37c199,'rows':_0x21e156}:null;}})[_0x2a96('0x29')](respondWithResult(_0x1c48ae,null))['catch'](handleError(_0x1c48ae,null));};exports[_0x2a96('0xd0')]=function(_0x4ce0f9,_0x25acec,_0x242f45){if(_0x4ce0f9[_0x2a96('0x9b')]['id']){delete _0x4ce0f9['body']['id'];}return db['CmContact'][_0x2a96('0xcb')]({'where':{'id':_0x4ce0f9[_0x2a96('0x94')]['id']}})['then'](handleEntityNotFound(_0x25acec,null))[_0x2a96('0x29')](function(_0x16b6ea){if(_0x16b6ea){return _0x16b6ea[_0x2a96('0xd0')](_0x4ce0f9['body'][_0x2a96('0xd1')]||[]);}return null;})[_0x2a96('0x29')](respondWithResult(_0x25acec,null))[_0x2a96('0x93')](handleError(_0x25acec,null));};exports[_0x2a96('0xd2')]=function(_0xbf4a4,_0x2d2dec,_0x1bc4a4){var _0x85b0d9={'raw':![],'where':{}};var _0x3f2aa3={};var _0x38839b={'count':0x0,'rows':[]};return db[_0x2a96('0x2f')][_0x2a96('0xcb')]({'where':{'id':_0xbf4a4[_0x2a96('0x94')]['id']}})[_0x2a96('0x29')](handleEntityNotFound(_0x2d2dec,null))[_0x2a96('0x29')](function(_0x468e06){if(_0x468e06){_0x3f2aa3['model']=_[_0x2a96('0x32')](db[_0x2a96('0xa0')][_0x2a96('0xcc')]);_0x3f2aa3[_0x2a96('0x3a')]=_[_0x2a96('0x32')](_0xbf4a4[_0x2a96('0x3a')]);_0x3f2aa3[_0x2a96('0x3b')]=_[_0x2a96('0x3e')](_0x3f2aa3['model'],_0x3f2aa3[_0x2a96('0x3a')]);_0x85b0d9['attributes']=_[_0x2a96('0x3e')](_0x3f2aa3[_0x2a96('0x3c')],qs[_0x2a96('0x3f')](_0xbf4a4[_0x2a96('0x3a')][_0x2a96('0x3f')]));_0x85b0d9[_0x2a96('0x3d')]=_0x85b0d9[_0x2a96('0x3d')][_0x2a96('0x31')]?_0x85b0d9[_0x2a96('0x3d')]:_0x3f2aa3[_0x2a96('0x3c')];if(!_0xbf4a4[_0x2a96('0x3a')][_0x2a96('0x40')](_0x2a96('0xcf'))){_0x85b0d9[_0x2a96('0x20')]=qs[_0x2a96('0x20')](_0xbf4a4[_0x2a96('0x3a')]['limit']);_0x85b0d9['offset']=qs['offset'](_0xbf4a4['query'][_0x2a96('0x1f')]);}_0x85b0d9[_0x2a96('0x7b')]=qs['sort'](_0xbf4a4[_0x2a96('0x3a')]['sort']);_0x85b0d9['where']=qs[_0x2a96('0x3b')](_[_0x2a96('0x43')](_0xbf4a4[_0x2a96('0x3a')],_0x3f2aa3['filters']));_0x85b0d9[_0x2a96('0x42')][_0x2a96('0xd3')]=_0x468e06['id'];if(_0xbf4a4[_0x2a96('0x3a')]['filter']){_0x85b0d9[_0x2a96('0x42')]=_[_0x2a96('0x87')](_0x85b0d9['where'],{'$or':_[_0x2a96('0x81')](_0x85b0d9[_0x2a96('0x3d')],function(_0x3c3dc0){var _0x623756={};_0x623756[_0x3c3dc0]={'$like':'%'+_0xbf4a4['query']['filter']+'%'};return _0x623756;})});}_0x85b0d9=_[_0x2a96('0x87')]({},_0x85b0d9,_0xbf4a4[_0x2a96('0xcd')]);return db[_0x2a96('0xa0')][_0x2a96('0x22')]({'where':_0x85b0d9['where']})[_0x2a96('0x29')](function(_0x5570a5){_0x38839b[_0x2a96('0x22')]=_0x5570a5;if(_0xbf4a4['query'][_0x2a96('0xd4')]){_0x85b0d9[_0x2a96('0xd5')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x85b0d9);})['then'](function(_0x328325){_0x38839b[_0x2a96('0x92')]=_0x328325;return _0x38839b;});}})['then'](respondWithFilteredResult(_0x2d2dec,_0x85b0d9))['catch'](handleError(_0x2d2dec,null));};exports[_0x2a96('0xd6')]=function(_0x52493e,_0x3ceb9c,_0x189f2d){var _0x366b76={'raw':!![],'where':{}};var _0x4f8df3={};var _0x181613={'count':0x0,'rows':[]};return db[_0x2a96('0x2f')][_0x2a96('0xcb')]({'where':{'id':_0x52493e[_0x2a96('0x94')]['id']}})[_0x2a96('0x29')](handleEntityNotFound(_0x3ceb9c,null))['then'](function(_0x191282){if(_0x191282){_0x4f8df3[_0x2a96('0x3c')]=_['keys'](db[_0x2a96('0xb2')][_0x2a96('0xcc')]);_0x4f8df3[_0x2a96('0x3a')]=_[_0x2a96('0x32')](_0x52493e['query']);_0x4f8df3['filters']=_[_0x2a96('0x3e')](_0x4f8df3[_0x2a96('0x3c')],_0x4f8df3['query']);_0x366b76[_0x2a96('0x3d')]=_[_0x2a96('0x3e')](_0x4f8df3[_0x2a96('0x3c')],qs[_0x2a96('0x3f')](_0x52493e['query'][_0x2a96('0x3f')]));_0x366b76[_0x2a96('0x3d')]=_0x366b76[_0x2a96('0x3d')][_0x2a96('0x31')]?_0x366b76['attributes']:_0x4f8df3[_0x2a96('0x3c')];if(!_0x52493e['query'][_0x2a96('0x40')](_0x2a96('0xcf'))){_0x366b76[_0x2a96('0x20')]=qs[_0x2a96('0x20')](_0x52493e[_0x2a96('0x3a')][_0x2a96('0x20')]);_0x366b76[_0x2a96('0x1f')]=qs[_0x2a96('0x1f')](_0x52493e['query'][_0x2a96('0x1f')]);}_0x366b76[_0x2a96('0x7b')]=qs[_0x2a96('0x41')](_0x52493e['query']['sort']);_0x366b76[_0x2a96('0x42')]=qs['filters'](_[_0x2a96('0x43')](_0x52493e['query'],_0x4f8df3[_0x2a96('0x3b')]));_0x366b76['where']['ContactId']=_0x191282['id'];if(_0x52493e[_0x2a96('0x3a')][_0x2a96('0x5f')]){_0x366b76['where']=_[_0x2a96('0x87')](_0x366b76[_0x2a96('0x42')],{'$or':_['map'](_0x366b76['attributes'],function(_0x2f2110){var _0x53674c={};_0x53674c[_0x2f2110]={'$like':'%'+_0x52493e[_0x2a96('0x3a')][_0x2a96('0x5f')]+'%'};return _0x53674c;})});}_0x366b76=_[_0x2a96('0x87')]({},_0x366b76,_0x52493e[_0x2a96('0xcd')]);return db[_0x2a96('0xb2')]['count']({'where':_0x366b76[_0x2a96('0x42')]})[_0x2a96('0x29')](function(_0x4f4ee5){_0x181613[_0x2a96('0x22')]=_0x4f4ee5;if(_0x52493e[_0x2a96('0x3a')][_0x2a96('0xd4')]){_0x366b76[_0x2a96('0xd5')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x2a96('0x98')](_0x366b76);})[_0x2a96('0x29')](function(_0x2503cc){_0x181613['rows']=_0x2503cc;return _0x181613;});}})[_0x2a96('0x29')](respondWithFilteredResult(_0x3ceb9c,_0x366b76))[_0x2a96('0x93')](handleError(_0x3ceb9c,null));};exports[_0x2a96('0xd7')]=function(_0x20773d,_0x223116,_0x51c66f){var _0x4f800b={'raw':!![],'where':{}};var _0x23a04b={};var _0x2e7ce5={'count':0x0,'rows':[]};return db[_0x2a96('0x2f')][_0x2a96('0xcb')]({'where':{'id':_0x20773d['params']['id']}})[_0x2a96('0x29')](handleEntityNotFound(_0x223116,null))[_0x2a96('0x29')](function(_0x42f356){if(_0x42f356){_0x23a04b[_0x2a96('0x3c')]=_[_0x2a96('0x32')](db[_0x2a96('0xb1')][_0x2a96('0xcc')]);_0x23a04b[_0x2a96('0x3a')]=_['keys'](_0x20773d[_0x2a96('0x3a')]);_0x23a04b[_0x2a96('0x3b')]=_[_0x2a96('0x3e')](_0x23a04b[_0x2a96('0x3c')],_0x23a04b[_0x2a96('0x3a')]);_0x4f800b[_0x2a96('0x3d')]=_['intersection'](_0x23a04b[_0x2a96('0x3c')],qs['fields'](_0x20773d[_0x2a96('0x3a')]['fields']));_0x4f800b['attributes']=_0x4f800b[_0x2a96('0x3d')][_0x2a96('0x31')]?_0x4f800b[_0x2a96('0x3d')]:_0x23a04b[_0x2a96('0x3c')];if(!_0x20773d['query']['hasOwnProperty']('nolimit')){_0x4f800b[_0x2a96('0x20')]=qs[_0x2a96('0x20')](_0x20773d['query']['limit']);_0x4f800b[_0x2a96('0x1f')]=qs[_0x2a96('0x1f')](_0x20773d[_0x2a96('0x3a')][_0x2a96('0x1f')]);}_0x4f800b['order']=qs['sort'](_0x20773d['query'][_0x2a96('0x41')]);_0x4f800b[_0x2a96('0x42')]=qs[_0x2a96('0x3b')](_[_0x2a96('0x43')](_0x20773d['query'],_0x23a04b[_0x2a96('0x3b')]));_0x4f800b[_0x2a96('0x42')][_0x2a96('0xd3')]=_0x42f356['id'];if(_0x20773d[_0x2a96('0x3a')][_0x2a96('0x5f')]){_0x4f800b[_0x2a96('0x42')]=_[_0x2a96('0x87')](_0x4f800b['where'],{'$or':_[_0x2a96('0x81')](_0x4f800b[_0x2a96('0x3d')],function(_0x189b70){var _0x34bf9f={};_0x34bf9f[_0x189b70]={'$like':'%'+_0x20773d[_0x2a96('0x3a')]['filter']+'%'};return _0x34bf9f;})});}_0x4f800b=_[_0x2a96('0x87')]({},_0x4f800b,_0x20773d[_0x2a96('0xcd')]);return db['CmHopperFinal']['count']({'where':_0x4f800b[_0x2a96('0x42')]})['then'](function(_0x1cedf3){_0x2e7ce5[_0x2a96('0x22')]=_0x1cedf3;if(_0x20773d[_0x2a96('0x3a')][_0x2a96('0xd4')]){_0x4f800b[_0x2a96('0xd5')]=[{'all':!![]}];}return db[_0x2a96('0xb1')]['findAll'](_0x4f800b);})['then'](function(_0x1734a8){_0x2e7ce5[_0x2a96('0x92')]=_0x1734a8;return _0x2e7ce5;});}})['then'](respondWithFilteredResult(_0x223116,_0x4f800b))[_0x2a96('0x93')](handleError(_0x223116,null));};exports[_0x2a96('0xd8')]=function(_0x2c91a2,_0x1c486d,_0x4f9091){var _0x177144={'raw':!![],'where':{}};var _0x745e7f={};var _0xf38c21={'count':0x0,'rows':[]};return db['CmContact'][_0x2a96('0xcb')]({'where':{'id':_0x2c91a2[_0x2a96('0x94')]['id']}})[_0x2a96('0x29')](handleEntityNotFound(_0x1c486d,null))[_0x2a96('0x29')](function(_0x2a818b){if(_0x2a818b){_0x745e7f['model']=_[_0x2a96('0x32')](db['JscriptySessionReport'][_0x2a96('0xcc')]);_0x745e7f['query']=_[_0x2a96('0x32')](_0x2c91a2[_0x2a96('0x3a')]);_0x745e7f[_0x2a96('0x3b')]=_[_0x2a96('0x3e')](_0x745e7f[_0x2a96('0x3c')],_0x745e7f[_0x2a96('0x3a')]);_0x177144[_0x2a96('0x3d')]=_[_0x2a96('0x3e')](_0x745e7f[_0x2a96('0x3c')],qs[_0x2a96('0x3f')](_0x2c91a2[_0x2a96('0x3a')][_0x2a96('0x3f')]));_0x177144[_0x2a96('0x3d')]=_0x177144[_0x2a96('0x3d')]['length']?_0x177144['attributes']:_0x745e7f[_0x2a96('0x3c')];if(!_0x2c91a2[_0x2a96('0x3a')][_0x2a96('0x40')]('nolimit')){_0x177144[_0x2a96('0x20')]=qs['limit'](_0x2c91a2[_0x2a96('0x3a')][_0x2a96('0x20')]);_0x177144[_0x2a96('0x1f')]=qs['offset'](_0x2c91a2[_0x2a96('0x3a')][_0x2a96('0x1f')]);}_0x177144['order']=qs[_0x2a96('0x41')](_0x2c91a2[_0x2a96('0x3a')]['sort']);_0x177144[_0x2a96('0x42')]=qs[_0x2a96('0x3b')](_[_0x2a96('0x43')](_0x2c91a2[_0x2a96('0x3a')],_0x745e7f[_0x2a96('0x3b')]));_0x177144[_0x2a96('0x42')]['ContactId']=_0x2a818b['id'];if(_0x2c91a2[_0x2a96('0x3a')][_0x2a96('0x5f')]){_0x177144[_0x2a96('0x42')]=_[_0x2a96('0x87')](_0x177144['where'],{'$or':_[_0x2a96('0x81')](_0x177144['attributes'],function(_0x539bc3){var _0x9ef141={};_0x9ef141[_0x539bc3]={'$like':'%'+_0x2c91a2[_0x2a96('0x3a')][_0x2a96('0x5f')]+'%'};return _0x9ef141;})});}_0x177144=_[_0x2a96('0x87')]({},_0x177144,_0x2c91a2['options']);return db['JscriptySessionReport']['count']({'where':_0x177144[_0x2a96('0x42')]})[_0x2a96('0x29')](function(_0x7d42cc){_0xf38c21['count']=_0x7d42cc;if(_0x2c91a2[_0x2a96('0x3a')][_0x2a96('0xd4')]){_0x177144[_0x2a96('0xd5')]=[{'all':!![]}];}return db[_0x2a96('0xb8')][_0x2a96('0x98')](_0x177144);})[_0x2a96('0x29')](function(_0x24ecc9){_0xf38c21['rows']=_0x24ecc9;return _0xf38c21;});}})[_0x2a96('0x29')](respondWithFilteredResult(_0x1c486d,_0x177144))[_0x2a96('0x93')](handleError(_0x1c486d,null));};exports[_0x2a96('0xd9')]=function(_0x1e2f00,_0x58c38e,_0x5a20c6){try{if(!_0x1e2f00[_0x2a96('0x9b')]['ListId']){throw new Error('No\x20ListId\x20specified');}if(!_0x1e2f00[_0x2a96('0x9b')]['binding_keys']){throw new Error(_0x2a96('0xda'));}if(!_0x1e2f00['body']['binding_values']){throw new Error(_0x2a96('0xdb'));}if(!_0x1e2f00[_0x2a96('0x9b')]['socket_timestamp']){throw new Error(_0x2a96('0xdc'));}var _0x583007=_0x1e2f00['body']['binding_keys']['split'](',');var _0x56ccb6=_0x1e2f00[_0x2a96('0x9b')][_0x2a96('0xdd')][_0x2a96('0x55')](',');if(!_0x583007['length']||!_0x56ccb6[_0x2a96('0x31')]||_0x583007[_0x2a96('0x31')]!==_0x56ccb6[_0x2a96('0x31')]){throw new Error(_0x2a96('0xde'));}_0x1e2f00[_0x2a96('0x9b')][_0x2a96('0x3f')]=_['zipObject'](_0x583007,_0x56ccb6);if(!_0x1e2f00[_0x2a96('0x9b')][_0x2a96('0x3f')][_0x2a96('0xca')]){throw new Error(_0x2a96('0xdf'));}if(!_0x1e2f00[_0x2a96('0x9b')][_0x2a96('0x3f')][_0x2a96('0xe0')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0x29e0a8=path[_0x2a96('0x9e')](config[_0x2a96('0xe1')],_0x2a96('0xe2'),_0x1e2f00[_0x2a96('0xe3')][_0x2a96('0xe4')]);fs[_0x2a96('0xe5')](_0x29e0a8,parseInt('0777',0x8));var _0x214752=require(_0x2a96('0xe6'))[_0x2a96('0xe7')](path[_0x2a96('0x9e')](__dirname,'../../components/import/cm/csv'),[_0x29e0a8,_0x1e2f00[_0x2a96('0x9b')][_0x2a96('0xe8')],_0x1e2f00[_0x2a96('0x9b')][_0x2a96('0xdd')],_0x1e2f00[_0x2a96('0x9b')][_0x2a96('0x83')],_0x1e2f00[_0x2a96('0x9b')][_0x2a96('0xe9')],_0x1e2f00[_0x2a96('0x9b')][_0x2a96('0xbc')],_0x1e2f00['body'][_0x2a96('0xea')]]);return _0x58c38e[_0x2a96('0x23')](0xc8)['json']({'message':_0x2a96('0xeb'),'pid':_0x214752[_0x2a96('0xec')]});}catch(_0x3f15d0){return _0x58c38e[_0x2a96('0x23')](0x1f4)[_0x2a96('0x2e')](_0x3f15d0);}};exports['upload']=function(_0x5c4a97,_0x4da55d,_0x68ed5e){var _0x278106=fs['createReadStream'](_0x5c4a97[_0x2a96('0xe3')][_0x2a96('0x7')]);Papa[_0x2a96('0xed')](_0x278106,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x2077a7){return _0x4da55d[_0x2a96('0x23')](0xc8)[_0x2a96('0x1e')]({'file':_0x5c4a97[_0x2a96('0xe3')],'fields':_0x2077a7[_0x2a96('0xee')][_0x2a96('0x3f')]});}});};exports[_0x2a96('0xef')]=function(_0x5cf3e9,_0x372d95,_0x15d8aa){return db[_0x2a96('0x57')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x2a96('0x7f')}})['then'](function(_0x18b62e){var _0x42ae50=![];if(!_0x5cf3e9[_0x2a96('0x9b')][_0x2a96('0x83')]){throw new Error(_0x2a96('0xf0'));}if(!_0x5cf3e9['body'][_0x2a96('0xf1')][_0x2a96('0xca')]){throw new Error(_0x2a96('0xdf'));}if(!_0x5cf3e9['body']['binding']['firstName']){throw new Error(_0x2a96('0xf2'));}if(!_0x5cf3e9[_0x2a96('0x9b')][_0x2a96('0xea')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x98e88b=require(_0x2a96('0xe6'))['fork'](path[_0x2a96('0x9e')](__dirname,_0x2a96('0xf3')),[_0x5cf3e9[_0x2a96('0x94')]['id'],JSON[_0x2a96('0xf4')](_0x5cf3e9['body']),JSON[_0x2a96('0xf4')](_0x18b62e)]);_0x98e88b['on']('message',function(_0x6770b6){_0x42ae50=!![];return _0x372d95[_0x2a96('0x23')](0xc8)[_0x2a96('0x1e')]({'message':'start\x20child\x20process\x20correctly!','pid':_0x98e88b[_0x2a96('0xec')]});});_0x98e88b['on']('exit',function(_0x45109c){if(_0x45109c&&!_0x42ae50){return _0x372d95['status'](0x1f4)['json']({'message':_0x2a96('0xf5'),'pid':_0x98e88b[_0x2a96('0xec')]});}});})[_0x2a96('0x93')](handleError(_0x372d95,null));};exports[_0x2a96('0xf6')]=function(_0x379c73,_0x5cfe0a){var _0xa45f88=[_0x2a96('0xf7'),_0x2a96('0xf8'),_0x2a96('0xf9'),'openchannel','fax',_0x2a96('0xfa'),'voice'];var _0x331c08={'offset':0x0,'order':qs[_0x2a96('0x41')](_0x2a96('0xfb'))},_0x81f8e9={'count':0x0,'rows':[]};Promise[_0x2a96('0xfc')]()[_0x2a96('0x29')](function(){if(_0x379c73[_0x2a96('0x3a')][_0x2a96('0xfd')]){if(!_[_0x2a96('0xfe')](_0xa45f88,_0x379c73['query'][_0x2a96('0xfd')][_0x2a96('0xff')]())){throw new Error(_0x2a96('0x100'));}_0xa45f88=[_0x379c73[_0x2a96('0x3a')]['channel'][_0x2a96('0xff')]()];}if(_0x379c73[_0x2a96('0x3a')][_0x2a96('0x101')]){try{var _0x4cf4f6=JSON[_0x2a96('0xed')](_0x379c73[_0x2a96('0x3a')]['range']);if(!moment(_0x4cf4f6['from'])[_0x2a96('0x102')]()){throw new Error(_0x2a96('0x103'));}if(!moment(_0x4cf4f6['to'])['isValid']()){throw new Error(_0x2a96('0x104'));}}catch(_0x11d07b){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x379c73[_0x2a96('0x3a')][_0x2a96('0x40')](_0x2a96('0xcf'))){_0x331c08[_0x2a96('0x20')]=qs[_0x2a96('0x20')](_0x379c73[_0x2a96('0x3a')][_0x2a96('0x20')]||0xa);_0x331c08[_0x2a96('0x1f')]=qs[_0x2a96('0x1f')](_0x379c73[_0x2a96('0x3a')][_0x2a96('0x1f')]);}var _0x71b616=_0xa45f88[_0x2a96('0x81')](function(_0x1ded32){if(_0x1ded32==='voice'){var _0x584d5e={'attributes':['id','uniqueid','type',_0x2a96('0x105'),_0x2a96('0x106'),_0x2a96('0x107'),_0x2a96('0x108'),_0x2a96('0x109'),_0x2a96('0x10a'),_0x2a96('0x10b'),'createdAt',_0x2a96('0x10c'),'userSecondDisposition','userThirdDisposition','UserId'],'where':{'ContactId':_0x379c73[_0x2a96('0x94')]['id']},'include':[{'model':db[_0x2a96('0x57')],'as':_0x2a96('0x57'),'attributes':['id',_0x2a96('0x2d'),_0x2a96('0x10d'),_0x2a96('0x99')]}],'order':[['createdAt',_0x2a96('0x7c')]]};if(_0x379c73['query']['range']){_0x584d5e[_0x2a96('0x42')][_0x2a96('0x10e')]={'$gte':_0x4cf4f6['from'],'$lte':_0x4cf4f6['to']};}return db[_0x2a96('0xb3')][_0x2a96('0x10f')](_0x584d5e)[_0x2a96('0x29')](function(_0xc885a4){_0x81f8e9[_0x2a96('0x22')]+=_0xc885a4[_0x2a96('0x22')];return _['map'](_0xc885a4['rows'],function(_0x19a83f){var _0x2b5118=_0x19a83f['get']({'plain':!![]});_0x2b5118[_0x2a96('0xfd')]=_0x1ded32;if(_0x2b5118[_0x2a96('0x57')]){_0x2b5118['User']={'id':_0x2b5118[_0x2a96('0x57')]['id'],'name':_0x2b5118[_0x2a96('0x57')][_0x2a96('0x2d')],'fullname':_0x2b5118['User'][_0x2a96('0x10d')],'alias':_0x2b5118[_0x2a96('0x57')][_0x2a96('0x99')]};}return _0x2b5118;});});}else{var _0x5785b4=_[_0x2a96('0x110')](_0x1ded32)+(_0x1ded32===_0x2a96('0xf8')?_0x2a96('0x111'):_0x2a96('0x112'));var _0x40d3a9={'attributes':['id',_0x2a96('0x113'),_0x2a96('0x114'),_0x2a96('0x10e'),'note',_0x2a96('0x115'),_0x2a96('0x116'),'thirdDisposition','UserId',_0x5785b4+'Id'],'where':{'ContactId':_0x379c73[_0x2a96('0x94')]['id']},'include':[{'model':db[_0x5785b4],'as':'Account','attributes':['id','name','key']},{'model':db['User'],'as':_0x2a96('0x117'),'attributes':['id',_0x2a96('0x2d'),'fullname']},{'model':db[_0x2a96('0x53')],'as':_0x2a96('0x91'),'attributes':['id',_0x2a96('0x2d'),_0x2a96('0x46')],'through':{'attributes':[]}}],'order':[[_0x2a96('0x10e'),_0x2a96('0x7c')]]};if(_0x379c73[_0x2a96('0x3a')]['range']){_0x40d3a9['where'][_0x2a96('0x10e')]={'$gte':_0x4cf4f6['from'],'$lte':_0x4cf4f6['to']};}switch(_0x1ded32){case _0x2a96('0xf8'):_0x40d3a9['attributes'][_0x2a96('0x35')](_0x2a96('0x118'),_0x2a96('0x119'),_0x2a96('0x11a'),_0x2a96('0x11b'),_0x2a96('0x11c'),_0x2a96('0x11d'),_0x2a96('0x11e'),_0x2a96('0x11f'),'referer');break;case _0x2a96('0xf7'):_0x40d3a9[_0x2a96('0x3d')][_0x2a96('0x35')](_0x2a96('0x120'),_0x2a96('0x121'));break;case _0x2a96('0x122'):_0x40d3a9[_0x2a96('0x3d')][_0x2a96('0x35')]('externalUrl',_0x2a96('0x123'));break;}return db[_[_0x2a96('0x110')](_0x1ded32)+_0x2a96('0x124')][_0x2a96('0x10f')](_0x40d3a9)[_0x2a96('0x29')](function(_0x398c9c){_0x81f8e9[_0x2a96('0x22')]+=_0x398c9c[_0x2a96('0x22')];return _['map'](_0x398c9c[_0x2a96('0x92')],function(_0x2fb280){var _0x146af5=_0x2fb280[_0x2a96('0x9c')]({'plain':!![]});_0x146af5[_0x2a96('0xfd')]=_0x1ded32;if(_0x146af5[_0x2a96('0x117')]){_0x146af5[_0x2a96('0x117')]={'id':_0x146af5['Owner']['id'],'name':_0x146af5[_0x2a96('0x117')][_0x2a96('0x2d')],'fullname':_0x146af5[_0x2a96('0x117')][_0x2a96('0x10d')]};}return _0x146af5;});});}});return Promise[_0x2a96('0x125')](_0x71b616);})[_0x2a96('0x29')](function(_0x17e5ef){return _(_0x17e5ef)['flatten']()[_0x2a96('0x126')](_0x2a96('0x10e'))[_0x2a96('0x127')]()[_0x2a96('0x54')]();})[_0x2a96('0x29')](function(_0x4207cd){_0x81f8e9[_0x2a96('0x92')]=_0x331c08[_0x2a96('0x20')]?_0x4207cd[_0x2a96('0x128')](_0x331c08[_0x2a96('0x1f')],_0x331c08['offset']+_0x331c08[_0x2a96('0x20')]):_0x4207cd;return _0x81f8e9;})[_0x2a96('0x29')](respondWithFilteredResult(_0x5cfe0a,_0x331c08))[_0x2a96('0x93')](handleError(_0x5cfe0a,null));};
\ No newline at end of file
index 5aa2a1d..58f8ce9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9611=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','CmContact','save'];(function(_0x4add2a,_0x4ba851){var _0x4fdcbd=function(_0x589fbb){while(--_0x589fbb){_0x4add2a['push'](_0x4add2a['shift']());}};_0x4fdcbd(++_0x4ba851);}(_0x9611,0x16d));var _0x1961=function(_0x4cdb17,_0x470d66){_0x4cdb17=_0x4cdb17-0x0;var _0x5e4c0b=_0x9611[_0x4cdb17];return _0x5e4c0b;};'use strict';var EventEmitter=require('events');var CmContact=require(_0x1961('0x0'))['db'][_0x1961('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1961('0x2'),'afterUpdate':'update','afterDestroy':_0x1961('0x3')};function emitEvent(_0x2f36ee){return function(_0x1a4908,_0x229a3b,_0x1a25b8){CmContactEvents[_0x1961('0x4')](_0x2f36ee+':'+_0x1a4908['id'],_0x1a4908);CmContactEvents[_0x1961('0x4')](_0x2f36ee,_0x1a4908);_0x1a25b8(null);};}for(var e in events){if(events[_0x1961('0x5')](e)){var event=events[e];CmContact[_0x1961('0x6')](e,emitEvent(event));}}module[_0x1961('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0x2b67=['update','hook','exports','events','../../mysqldb','CmContact','setMaxListeners','save'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x2b67,0xf3));var _0x72b6=function(_0xcfbb5d,_0x49395b){_0xcfbb5d=_0xcfbb5d-0x0;var _0x45fb67=_0x2b67[_0xcfbb5d];return _0x45fb67;};'use strict';var EventEmitter=require(_0x72b6('0x0'));var CmContact=require(_0x72b6('0x1'))['db'][_0x72b6('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x72b6('0x3')](0x0);var events={'afterCreate':_0x72b6('0x4'),'afterUpdate':_0x72b6('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3beab6){return function(_0x47b18e,_0x43adae,_0x3f9742){CmContactEvents['emit'](_0x3beab6+':'+_0x47b18e['id'],_0x47b18e);CmContactEvents['emit'](_0x3beab6,_0x47b18e);_0x3f9742(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0x72b6('0x6')](e,emitEvent(event));}}module[_0x72b6('0x7')]=CmContactEvents;
\ No newline at end of file
index 6c316c2..05b6c7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0044=['bluebird','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','phone','firstName','lastName','mobile','email','FULLTEXT','models','get','error','cmContact','inspect','CmHopper','findOne','then','isNil','cmContact,\x20afterCreate\x20','create','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','ListId','afterCreate','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','Lists','length','always','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','CmList','Campaign','List\x20not\x20found','ContactId','VoiceQueueId','push','info','lodash','../../config/logger','api','moment'];(function(_0x1fae50,_0x2a9a7e){var _0x5933a5=function(_0x2b8f65){while(--_0x2b8f65){_0x1fae50['push'](_0x1fae50['shift']());}};_0x5933a5(++_0x2a9a7e);}(_0x0044,0x16a));var _0x4004=function(_0x237546,_0xa81b26){_0x237546=_0x237546-0x0;var _0x233e29=_0x0044[_0x237546];return _0x233e29;};'use strict';var _=require(_0x4004('0x0'));var util=require('util');var logger=require(_0x4004('0x1'))(_0x4004('0x2'));var moment=require(_0x4004('0x3'));var BPromise=require(_0x4004('0x4'));var rp=require(_0x4004('0x5'));var fs=require('fs');var path=require(_0x4004('0x6'));var rimraf=require(_0x4004('0x7'));var config=require(_0x4004('0x8'));var attributes=require(_0x4004('0x9'));module[_0x4004('0xa')]=function(_0x17ac3a,_0x32b5ee){return _0x17ac3a[_0x4004('0xb')](_0x4004('0xc'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':'phone','fields':[_0x4004('0xd')]},{'name':'fti_cm_contacts','fields':[_0x4004('0xe'),_0x4004('0xf'),_0x4004('0xd'),_0x4004('0x10'),'fax',_0x4004('0x11')],'type':_0x4004('0x12')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4bbe96,_0x3a14e2,_0x43003f){var _0x19fd69=_0x17ac3a[_0x4004('0x13')];var _0x30aae2=_0x4bbe96[_0x4004('0x14')]({'plain':!![]});function _0x2688c6(){return function(_0x315c3f){logger[_0x4004('0x15')](_0x4004('0x16'),'afterCreate',util[_0x4004('0x17')](_0x315c3f,{'showHidden':![],'depth':null}));};}var _0x193559=function(_0xf51544){return new BPromise(function(_0x383676,_0x2edf34){_0x19fd69[_0x4004('0x18')][_0x4004('0x19')]({'where':{'phone':_0x30aae2[_0x4004('0xd')],'VoiceQueueId':_0xf51544['id']}})[_0x4004('0x1a')](function(_0x4b07e5){if(!_[_0x4004('0x1b')](_0x4b07e5)){throw new Error(_0x4004('0x1c')+_0x30aae2[_0x4004('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0xf51544['id']);}return _0x19fd69[_0x4004('0x18')][_0x4004('0x1d')]({'phone':_0x30aae2[_0x4004('0xd')],'ContactId':_0x30aae2['id'],'ListId':_0x30aae2['ListId'],'priority':_0x30aae2['priority']?_0x30aae2[_0x4004('0x1e')]:0x2,'scheduledat':_0x30aae2[_0x4004('0x1f')]?_0x30aae2[_0x4004('0x1f')]:moment()[_0x4004('0x20')](_0x4004('0x21')),'callback':_0x30aae2[_0x4004('0x22')]?!![]:![],'callbackuniqueid':_0x30aae2[_0x4004('0x22')]?_0x30aae2['callbackUniqueid']:undefined,'callbackat':_0x30aae2[_0x4004('0x22')]?moment()[_0x4004('0x20')](_0x4004('0x21')):undefined,'VoiceQueueId':_0xf51544['id']});})[_0x4004('0x23')](function(_0x180507){_0x2edf34(_0x180507);});});};var _0x277af4=function(_0x58b339){return new BPromise(function(_0x34e035,_0xcdc8fe){_0x19fd69['CmHopper'][_0x4004('0x19')]({'where':{'phone':_0x30aae2[_0x4004('0xd')],'VoiceQueueId':_0x58b339['id']}})[_0x4004('0x1a')](function(_0x24c42b){if(!_[_0x4004('0x1b')](_0x24c42b)){throw new Error(_0x4004('0x1c')+_0x30aae2['phone']+_0x4004('0x24')+_0x58b339['id']);}return _0x19fd69[_0x4004('0x25')][_0x4004('0x19')]({'where':{'calleridnum':_0x30aae2['phone'],'VoiceQueueId':_0x58b339['id']}});})['then'](function(_0x74871){if(!_[_0x4004('0x1b')](_0x74871)){throw new Error(_0x4004('0x26')+_0x30aae2['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x58b339['id']);}return _0x19fd69['CmHopper'][_0x4004('0x1d')]({'phone':_0x30aae2[_0x4004('0xd')],'ContactId':_0x30aae2['id'],'ListId':_0x30aae2[_0x4004('0x27')],'priority':_0x30aae2[_0x4004('0x1e')]?_0x30aae2['priority']:0x2,'scheduledat':_0x30aae2[_0x4004('0x1f')]?_0x30aae2[_0x4004('0x1f')]:moment()['format'](_0x4004('0x21')),'callback':_0x30aae2[_0x4004('0x22')]?!![]:![],'callbackuniqueid':_0x30aae2[_0x4004('0x22')]?_0x30aae2[_0x4004('0x22')]:undefined,'callbackat':_0x30aae2[_0x4004('0x22')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x58b339['id']});})[_0x4004('0x23')](function(_0x5cda5d){_0xcdc8fe(_0x5cda5d);});});};function _0x27cca1(){return function(_0x2ed5d7){logger[_0x4004('0x15')](_0x4004('0x16'),_0x4004('0x28'),util[_0x4004('0x17')](_0x2ed5d7,{'showHidden':![],'depth':null}));};}var _0x3a9183=function(_0x4ef998){return new BPromise(function(_0xd3bc52,_0x51bd21){_0x19fd69[_0x4004('0x18')][_0x4004('0x19')]({'where':{'phone':_0x30aae2[_0x4004('0xd')],'CampaignId':_0x4ef998['id']}})[_0x4004('0x1a')](function(_0x334737){if(!_[_0x4004('0x1b')](_0x334737)){throw new Error('cmContact,\x20afterCreate\x20'+_0x30aae2['phone']+_0x4004('0x29')+_0x4ef998['id']);}return _0x19fd69[_0x4004('0x18')]['create']({'phone':_0x30aae2[_0x4004('0xd')],'ContactId':_0x30aae2['id'],'ListId':_0x30aae2[_0x4004('0x27')],'priority':_0x30aae2[_0x4004('0x1e')]?_0x30aae2[_0x4004('0x1e')]:0x2,'scheduledat':_0x30aae2['scheduledat']?_0x30aae2[_0x4004('0x1f')]:moment()[_0x4004('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x30aae2[_0x4004('0x22')]?!![]:![],'callbackuniqueid':_0x30aae2[_0x4004('0x22')]?_0x30aae2['callbackUniqueid']:undefined,'callbackat':_0x30aae2[_0x4004('0x22')]?moment()[_0x4004('0x20')](_0x4004('0x21')):undefined,'CampaignId':_0x4ef998['id']});})[_0x4004('0x23')](function(_0x3fd0b5){_0x51bd21(_0x3fd0b5);});});};var _0x16eac6=function(_0x1e37bf){return new BPromise(function(_0x378952,_0x3ac885){_0x19fd69[_0x4004('0x18')][_0x4004('0x19')]({'where':{'phone':_0x30aae2[_0x4004('0xd')],'CampaignId':_0x1e37bf['id']}})[_0x4004('0x1a')](function(_0x22e11f){if(!_['isNil'](_0x22e11f)){throw new Error(_0x4004('0x1c')+_0x30aae2[_0x4004('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x1e37bf['id']);}return _0x19fd69['CmHopperFinal'][_0x4004('0x19')]({'where':{'calleridnum':_0x30aae2[_0x4004('0xd')],'CampaignId':_0x1e37bf['id']}});})['then'](function(_0x3c41f1){if(!_['isNil'](_0x3c41f1)){throw new Error(_0x4004('0x26')+_0x30aae2[_0x4004('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x1e37bf['id']);}return _0x19fd69[_0x4004('0x18')]['create']({'phone':_0x30aae2[_0x4004('0xd')],'ContactId':_0x30aae2['id'],'ListId':_0x30aae2[_0x4004('0x27')],'priority':_0x30aae2['priority']?_0x30aae2['priority']:0x2,'scheduledat':_0x30aae2[_0x4004('0x1f')]?_0x30aae2[_0x4004('0x1f')]:moment()[_0x4004('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x30aae2[_0x4004('0x22')]?!![]:![],'callbackuniqueid':_0x30aae2[_0x4004('0x22')]?_0x30aae2[_0x4004('0x22')]:undefined,'callbackat':_0x30aae2[_0x4004('0x22')]?moment()[_0x4004('0x20')](_0x4004('0x21')):undefined,'CampaignId':_0x1e37bf['id']});})[_0x4004('0x23')](function(_0x3e5a46){_0x3ac885(_0x3e5a46);});});};if(_0x30aae2['ListId']){_0x19fd69[_0x4004('0x2a')][_0x4004('0x2b')]({'where':{'type':_0x4004('0x2c')},'attributes':['id',_0x4004('0x2d')],'include':[{'model':_0x19fd69['CmList'],'as':_0x4004('0x2e'),'where':{'id':_0x30aae2['ListId']}}]})[_0x4004('0x1a')](function(_0x56ef4b){if(_0x56ef4b){var _0x322a34=[];for(var _0x19e6a7=0x0,_0x49aa0b;_0x19e6a7<_0x56ef4b[_0x4004('0x2f')];_0x19e6a7+=0x1){_0x49aa0b=_0x56ef4b[_0x19e6a7][_0x4004('0x14')]({'plain':!![]});switch(_0x49aa0b[_0x4004('0x2d')]){case _0x4004('0x30'):_0x277af4(_0x49aa0b)[_0x4004('0x23')](_0x2688c6());break;case _0x4004('0x31'):_0x193559(_0x49aa0b)[_0x4004('0x23')](_0x2688c6());break;default:_0x19fd69[_0x4004('0x18')][_0x4004('0x1d')]({'phone':_0x30aae2[_0x4004('0xd')],'ContactId':_0x30aae2['id'],'ListId':_0x30aae2[_0x4004('0x27')],'scheduledat':_0x30aae2[_0x4004('0x1f')]?_0x30aae2[_0x4004('0x1f')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x30aae2['priority']?_0x30aae2[_0x4004('0x1e')]:0x2,'callback':_0x30aae2[_0x4004('0x22')]?!![]:![],'callbackuniqueid':_0x30aae2['callbackUniqueid']?_0x30aae2[_0x4004('0x22')]:undefined,'callbackat':_0x30aae2[_0x4004('0x22')]?moment()[_0x4004('0x20')](_0x4004('0x21')):undefined,'VoiceQueueId':_0x49aa0b['id']})[_0x4004('0x23')](_0x2688c6());}}}})['then'](function(){return _0x19fd69[_0x4004('0x2a')][_0x4004('0x2b')]({'where':{'type':_0x4004('0x2c')},'attributes':['id'],'include':[{'model':_0x19fd69['CmList'],'as':_0x4004('0x32'),'where':{'id':_0x30aae2[_0x4004('0x27')]}}]})[_0x4004('0x1a')](function(_0x14e641){if(_0x14e641){var _0x2fe418=[];for(var _0x4527b7=0x0,_0x434b7a;_0x4527b7<_0x14e641['length'];_0x4527b7+=0x1){_0x434b7a=_0x14e641[_0x4527b7][_0x4004('0x14')]({'plain':!![]});_0x19fd69[_0x4004('0x33')][_0x4004('0x1d')]({'phone':_0x30aae2[_0x4004('0xd')],'ContactId':_0x30aae2['id'],'ListId':_0x30aae2[_0x4004('0x27')],'VoiceQueueId':_0x434b7a['id']})[_0x4004('0x23')](function(_0xd0a155){logger['error'](_0x4004('0x34'),'afterCreate',_0xd0a155[_0x4004('0x35')]);});}}});})['then'](function(){return _0x19fd69['Campaign']['findAll']({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x19fd69[_0x4004('0x36')],'as':'Lists','where':{'id':_0x30aae2[_0x4004('0x27')]}}]})[_0x4004('0x1a')](function(_0xb0753e){if(_0xb0753e){var _0x8867d1=[];for(var _0xc4f63e=0x0,_0x6d879f;_0xc4f63e<_0xb0753e['length'];_0xc4f63e+=0x1){_0x6d879f=_0xb0753e[_0xc4f63e][_0x4004('0x14')]({'plain':!![]});switch(_0x6d879f[_0x4004('0x2d')]){case _0x4004('0x30'):_0x16eac6(_0x6d879f)[_0x4004('0x23')](_0x27cca1());break;case _0x4004('0x31'):_0x3a9183(_0x6d879f)['catch'](_0x27cca1());break;default:_0x19fd69['CmHopper'][_0x4004('0x1d')]({'phone':_0x30aae2['phone'],'ContactId':_0x30aae2['id'],'ListId':_0x30aae2[_0x4004('0x27')],'scheduledat':_0x30aae2[_0x4004('0x1f')]?_0x30aae2['scheduledat']:moment()[_0x4004('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x30aae2[_0x4004('0x1e')]?_0x30aae2[_0x4004('0x1e')]:0x2,'callback':_0x30aae2['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x30aae2['callbackUniqueid']?_0x30aae2[_0x4004('0x22')]:undefined,'callbackat':_0x30aae2[_0x4004('0x22')]?moment()[_0x4004('0x20')](_0x4004('0x21')):undefined,'CampaignId':_0x6d879f['id']})[_0x4004('0x23')](_0x27cca1());}}}});})['then'](function(){return _0x19fd69[_0x4004('0x37')]['findAll']({'attributes':['id'],'include':[{'model':_0x19fd69[_0x4004('0x36')],'as':'BlackLists','where':{'id':_0x30aae2[_0x4004('0x27')]}}]})[_0x4004('0x1a')](function(_0x166904){if(_0x166904){var _0x12d0ed=[];for(var _0x1e1a36=0x0,_0x2da21c;_0x1e1a36<_0x166904[_0x4004('0x2f')];_0x1e1a36+=0x1){_0x2da21c=_0x166904[_0x1e1a36][_0x4004('0x14')]({'plain':!![]});_0x19fd69[_0x4004('0x33')][_0x4004('0x1d')]({'phone':_0x30aae2[_0x4004('0xd')],'ContactId':_0x30aae2['id'],'ListId':_0x30aae2['ListId'],'CampaignId':_0x2da21c['id']})[_0x4004('0x23')](function(_0x51b03f){logger[_0x4004('0x15')](_0x4004('0x34'),_0x4004('0x28'),_0x51b03f[_0x4004('0x35')]);});}}});})[_0x4004('0x1a')](function(){_0x43003f();})['catch'](function(_0x41adea){logger['error'](_0x4004('0x34'),_0x4004('0x28'),_0x41adea[_0x4004('0x35')]);_0x43003f(_0x41adea);});}else{_0x43003f(new Error(_0x4004('0x38')));}},'afterDestroy':function(_0x241f14,_0x5edea0,_0xcb2d0e){var _0xaca716=_0x17ac3a[_0x4004('0x13')];var _0x181bd9=_0x241f14[_0x4004('0x14')]({'plain':!![]});return _0xaca716['CmHopper'][_0x4004('0x2b')]({'raw':!![],'where':{'ListId':_0x181bd9[_0x4004('0x27')],'ContactId':_0x181bd9['id']}})[_0x4004('0x1a')](function(_0x6e2485){if(!_['isEmpty'](_0x6e2485)){var _0x122d90=[];for(var _0x1bff7e=0x0;_0x1bff7e<_0x6e2485['length'];_0x1bff7e+=0x1){var _0x234486=_0xaca716[_0x4004('0x18')]['destroy']({'where':{'ListId':_0x6e2485[_0x1bff7e]['ListId'],'ContactId':_0x6e2485[_0x1bff7e][_0x4004('0x39')],'VoiceQueueId':_0x6e2485[_0x1bff7e][_0x4004('0x3a')],'CampaignId':_0x6e2485[_0x1bff7e]['CampaignId']}});_0x122d90[_0x4004('0x3b')](_0x234486);}return BPromise['all'](_0x122d90);}})[_0x4004('0x1a')](function(_0x3de4df){logger[_0x4004('0x3c')]('[CmContact][afterDestroy][Succesfull]',util[_0x4004('0x17')](_0x3de4df,{'showHidden':![],'depth':null}));_0xcb2d0e();})[_0x4004('0x23')](function(_0x116c7b){logger[_0x4004('0x15')]('[CmContact][afterDestroy][Error]',util[_0x4004('0x17')](_0x116c7b,{'showHidden':![],'depth':null}));_0xcb2d0e(_0x116c7b);});}}});};
\ No newline at end of file
+var _0x9490=['email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get','error','cmContact','inspect','CmHopper','then','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','findOne','isNil','CmHopperFinal','afterCreate','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','dialCheckDuplicateType','CmList','Lists','length','always','VoiceQueue','outbound','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','onlyIfOpen','List\x20not\x20found','models','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','phone','fti_cm_contacts','lastName','mobile','fax'];(function(_0x5450fe,_0x51b46c){var _0x2a51a6=function(_0x1566d7){while(--_0x1566d7){_0x5450fe['push'](_0x5450fe['shift']());}};_0x2a51a6(++_0x51b46c);}(_0x9490,0x148));var _0x0949=function(_0x53407a,_0x44d474){_0x53407a=_0x53407a-0x0;var _0x18f7b1=_0x9490[_0x53407a];return _0x18f7b1;};'use strict';var _=require(_0x0949('0x0'));var util=require(_0x0949('0x1'));var logger=require(_0x0949('0x2'))(_0x0949('0x3'));var moment=require('moment');var BPromise=require(_0x0949('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0949('0x5'));var rimraf=require(_0x0949('0x6'));var config=require(_0x0949('0x7'));var attributes=require(_0x0949('0x8'));module[_0x0949('0x9')]=function(_0x4247f5,_0x3ba763){return _0x4247f5[_0x0949('0xa')](_0x0949('0xb'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x0949('0xc'),'fields':['phone']},{'name':_0x0949('0xd'),'fields':['firstName',_0x0949('0xe'),_0x0949('0xc'),_0x0949('0xf'),_0x0949('0x10'),_0x0949('0x11')],'type':_0x0949('0x12')}],'timestamps':!![],'charset':_0x0949('0x13'),'collate':_0x0949('0x14'),'hooks':{'afterCreate':function(_0x1a1e84,_0x554586,_0x3b27dd){var _0x5eea3c=_0x4247f5['models'];var _0x10847e=_0x1a1e84[_0x0949('0x15')]({'plain':!![]});function _0x54a0a6(){return function(_0x4a88bd){logger[_0x0949('0x16')](_0x0949('0x17'),'afterCreate',util[_0x0949('0x18')](_0x4a88bd,{'showHidden':![],'depth':null}));};}var _0xf787ac=function(_0x4bcc97){return new BPromise(function(_0x4b2787,_0x41d083){_0x5eea3c[_0x0949('0x19')]['findOne']({'where':{'phone':_0x10847e[_0x0949('0xc')],'VoiceQueueId':_0x4bcc97['id']}})[_0x0949('0x1a')](function(_0x4d1624){if(!_['isNil'](_0x4d1624)){throw new Error(_0x0949('0x1b')+_0x10847e[_0x0949('0xc')]+_0x0949('0x1c')+_0x4bcc97['id']);}return _0x5eea3c[_0x0949('0x19')][_0x0949('0x1d')]({'phone':_0x10847e[_0x0949('0xc')],'ContactId':_0x10847e['id'],'ListId':_0x10847e[_0x0949('0x1e')],'priority':_0x10847e[_0x0949('0x1f')]?_0x10847e[_0x0949('0x1f')]:0x2,'scheduledat':_0x10847e[_0x0949('0x20')]?_0x10847e[_0x0949('0x20')]:moment()[_0x0949('0x21')](_0x0949('0x22')),'callback':_0x10847e['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x10847e[_0x0949('0x23')]?_0x10847e['callbackUniqueid']:undefined,'callbackat':_0x10847e['callbackUniqueid']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x4bcc97['id']});})[_0x0949('0x24')](function(_0x44c930){_0x41d083(_0x44c930);});});};var _0x312b7=function(_0x46c43a){return new BPromise(function(_0x3e24ec,_0x24b63a){_0x5eea3c[_0x0949('0x19')][_0x0949('0x25')]({'where':{'phone':_0x10847e[_0x0949('0xc')],'VoiceQueueId':_0x46c43a['id']}})[_0x0949('0x1a')](function(_0x5d6c9d){if(!_[_0x0949('0x26')](_0x5d6c9d)){throw new Error('cmContact,\x20afterCreate\x20'+_0x10847e[_0x0949('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x46c43a['id']);}return _0x5eea3c[_0x0949('0x27')][_0x0949('0x25')]({'where':{'calleridnum':_0x10847e[_0x0949('0xc')],'VoiceQueueId':_0x46c43a['id']}});})[_0x0949('0x1a')](function(_0x4e4f98){if(!_['isNil'](_0x4e4f98)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x10847e[_0x0949('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x46c43a['id']);}return _0x5eea3c[_0x0949('0x19')]['create']({'phone':_0x10847e[_0x0949('0xc')],'ContactId':_0x10847e['id'],'ListId':_0x10847e['ListId'],'priority':_0x10847e[_0x0949('0x1f')]?_0x10847e['priority']:0x2,'scheduledat':_0x10847e[_0x0949('0x20')]?_0x10847e['scheduledat']:moment()['format'](_0x0949('0x22')),'callback':_0x10847e[_0x0949('0x23')]?!![]:![],'callbackuniqueid':_0x10847e[_0x0949('0x23')]?_0x10847e[_0x0949('0x23')]:undefined,'callbackat':_0x10847e[_0x0949('0x23')]?moment()['format'](_0x0949('0x22')):undefined,'VoiceQueueId':_0x46c43a['id']});})[_0x0949('0x24')](function(_0x2e168a){_0x24b63a(_0x2e168a);});});};function _0x1a2655(){return function(_0x1d6da9){logger[_0x0949('0x16')](_0x0949('0x17'),_0x0949('0x28'),util[_0x0949('0x18')](_0x1d6da9,{'showHidden':![],'depth':null}));};}var _0x143092=function(_0x291727){return new BPromise(function(_0x1bfc3f,_0x43a3f0){_0x5eea3c[_0x0949('0x19')][_0x0949('0x25')]({'where':{'phone':_0x10847e[_0x0949('0xc')],'CampaignId':_0x291727['id']}})[_0x0949('0x1a')](function(_0xbed66){if(!_[_0x0949('0x26')](_0xbed66)){throw new Error(_0x0949('0x1b')+_0x10847e[_0x0949('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x291727['id']);}return _0x5eea3c[_0x0949('0x19')][_0x0949('0x1d')]({'phone':_0x10847e[_0x0949('0xc')],'ContactId':_0x10847e['id'],'ListId':_0x10847e[_0x0949('0x1e')],'priority':_0x10847e[_0x0949('0x1f')]?_0x10847e[_0x0949('0x1f')]:0x2,'scheduledat':_0x10847e[_0x0949('0x20')]?_0x10847e[_0x0949('0x20')]:moment()[_0x0949('0x21')](_0x0949('0x22')),'callback':_0x10847e[_0x0949('0x23')]?!![]:![],'callbackuniqueid':_0x10847e[_0x0949('0x23')]?_0x10847e[_0x0949('0x23')]:undefined,'callbackat':_0x10847e[_0x0949('0x23')]?moment()['format'](_0x0949('0x22')):undefined,'CampaignId':_0x291727['id']});})[_0x0949('0x24')](function(_0x50509e){_0x43a3f0(_0x50509e);});});};var _0x4f1f2f=function(_0x51a04){return new BPromise(function(_0x525956,_0x23a5db){_0x5eea3c['CmHopper'][_0x0949('0x25')]({'where':{'phone':_0x10847e[_0x0949('0xc')],'CampaignId':_0x51a04['id']}})['then'](function(_0x9d6dc2){if(!_['isNil'](_0x9d6dc2)){throw new Error(_0x0949('0x1b')+_0x10847e['phone']+_0x0949('0x29')+_0x51a04['id']);}return _0x5eea3c[_0x0949('0x27')][_0x0949('0x25')]({'where':{'calleridnum':_0x10847e[_0x0949('0xc')],'CampaignId':_0x51a04['id']}});})[_0x0949('0x1a')](function(_0x560d61){if(!_[_0x0949('0x26')](_0x560d61)){throw new Error(_0x0949('0x2a')+_0x10847e[_0x0949('0xc')]+_0x0949('0x2b')+_0x51a04['id']);}return _0x5eea3c['CmHopper'][_0x0949('0x1d')]({'phone':_0x10847e[_0x0949('0xc')],'ContactId':_0x10847e['id'],'ListId':_0x10847e[_0x0949('0x1e')],'priority':_0x10847e[_0x0949('0x1f')]?_0x10847e[_0x0949('0x1f')]:0x2,'scheduledat':_0x10847e[_0x0949('0x20')]?_0x10847e[_0x0949('0x20')]:moment()[_0x0949('0x21')](_0x0949('0x22')),'callback':_0x10847e['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x10847e[_0x0949('0x23')]?_0x10847e['callbackUniqueid']:undefined,'callbackat':_0x10847e[_0x0949('0x23')]?moment()['format'](_0x0949('0x22')):undefined,'CampaignId':_0x51a04['id']});})[_0x0949('0x24')](function(_0x1a2039){_0x23a5db(_0x1a2039);});});};if(_0x10847e[_0x0949('0x1e')]){_0x5eea3c['VoiceQueue'][_0x0949('0x2c')]({'where':{'type':'outbound'},'attributes':['id',_0x0949('0x2d')],'include':[{'model':_0x5eea3c[_0x0949('0x2e')],'as':_0x0949('0x2f'),'where':{'id':_0x10847e['ListId']}}]})[_0x0949('0x1a')](function(_0xf7e3cd){if(_0xf7e3cd){var _0x16f5af=[];for(var _0x28b154=0x0,_0x3030bc;_0x28b154<_0xf7e3cd[_0x0949('0x30')];_0x28b154+=0x1){_0x3030bc=_0xf7e3cd[_0x28b154][_0x0949('0x15')]({'plain':!![]});switch(_0x3030bc[_0x0949('0x2d')]){case _0x0949('0x31'):_0x312b7(_0x3030bc)[_0x0949('0x24')](_0x54a0a6());break;case'onlyIfOpen':_0xf787ac(_0x3030bc)['catch'](_0x54a0a6());break;default:_0x5eea3c['CmHopper']['create']({'phone':_0x10847e[_0x0949('0xc')],'ContactId':_0x10847e['id'],'ListId':_0x10847e['ListId'],'scheduledat':_0x10847e[_0x0949('0x20')]?_0x10847e[_0x0949('0x20')]:moment()[_0x0949('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x10847e[_0x0949('0x1f')]?_0x10847e[_0x0949('0x1f')]:0x2,'callback':_0x10847e[_0x0949('0x23')]?!![]:![],'callbackuniqueid':_0x10847e[_0x0949('0x23')]?_0x10847e[_0x0949('0x23')]:undefined,'callbackat':_0x10847e['callbackUniqueid']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x3030bc['id']})['catch'](_0x54a0a6());}}}})['then'](function(){return _0x5eea3c[_0x0949('0x32')]['findAll']({'where':{'type':_0x0949('0x33')},'attributes':['id'],'include':[{'model':_0x5eea3c['CmList'],'as':_0x0949('0x34'),'where':{'id':_0x10847e[_0x0949('0x1e')]}}]})[_0x0949('0x1a')](function(_0x6af694){if(_0x6af694){var _0xb77c9c=[];for(var _0x220317=0x0,_0x2c80c6;_0x220317<_0x6af694[_0x0949('0x30')];_0x220317+=0x1){_0x2c80c6=_0x6af694[_0x220317][_0x0949('0x15')]({'plain':!![]});_0x5eea3c[_0x0949('0x35')][_0x0949('0x1d')]({'phone':_0x10847e[_0x0949('0xc')],'ContactId':_0x10847e['id'],'ListId':_0x10847e['ListId'],'VoiceQueueId':_0x2c80c6['id']})[_0x0949('0x24')](function(_0x31cd44){logger[_0x0949('0x16')](_0x0949('0x36'),'afterCreate',_0x31cd44[_0x0949('0x37')]);});}}});})['then'](function(){return _0x5eea3c[_0x0949('0x38')][_0x0949('0x2c')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x5eea3c[_0x0949('0x2e')],'as':_0x0949('0x2f'),'where':{'id':_0x10847e[_0x0949('0x1e')]}}]})[_0x0949('0x1a')](function(_0x25399f){if(_0x25399f){var _0x1f6605=[];for(var _0x5e132b=0x0,_0x284673;_0x5e132b<_0x25399f[_0x0949('0x30')];_0x5e132b+=0x1){_0x284673=_0x25399f[_0x5e132b][_0x0949('0x15')]({'plain':!![]});switch(_0x284673[_0x0949('0x2d')]){case _0x0949('0x31'):_0x4f1f2f(_0x284673)[_0x0949('0x24')](_0x1a2655());break;case _0x0949('0x39'):_0x143092(_0x284673)[_0x0949('0x24')](_0x1a2655());break;default:_0x5eea3c[_0x0949('0x19')][_0x0949('0x1d')]({'phone':_0x10847e['phone'],'ContactId':_0x10847e['id'],'ListId':_0x10847e['ListId'],'scheduledat':_0x10847e[_0x0949('0x20')]?_0x10847e[_0x0949('0x20')]:moment()['format'](_0x0949('0x22')),'priority':_0x10847e['priority']?_0x10847e[_0x0949('0x1f')]:0x2,'callback':_0x10847e[_0x0949('0x23')]?!![]:![],'callbackuniqueid':_0x10847e[_0x0949('0x23')]?_0x10847e[_0x0949('0x23')]:undefined,'callbackat':_0x10847e['callbackUniqueid']?moment()[_0x0949('0x21')](_0x0949('0x22')):undefined,'CampaignId':_0x284673['id']})[_0x0949('0x24')](_0x1a2655());}}}});})[_0x0949('0x1a')](function(){return _0x5eea3c[_0x0949('0x38')][_0x0949('0x2c')]({'attributes':['id'],'include':[{'model':_0x5eea3c[_0x0949('0x2e')],'as':_0x0949('0x34'),'where':{'id':_0x10847e[_0x0949('0x1e')]}}]})[_0x0949('0x1a')](function(_0x144803){if(_0x144803){var _0x250f86=[];for(var _0x2cbd59=0x0,_0x2d33c8;_0x2cbd59<_0x144803[_0x0949('0x30')];_0x2cbd59+=0x1){_0x2d33c8=_0x144803[_0x2cbd59][_0x0949('0x15')]({'plain':!![]});_0x5eea3c[_0x0949('0x35')][_0x0949('0x1d')]({'phone':_0x10847e[_0x0949('0xc')],'ContactId':_0x10847e['id'],'ListId':_0x10847e[_0x0949('0x1e')],'CampaignId':_0x2d33c8['id']})[_0x0949('0x24')](function(_0x45a14e){logger['error'](_0x0949('0x36'),_0x0949('0x28'),_0x45a14e[_0x0949('0x37')]);});}}});})[_0x0949('0x1a')](function(){_0x3b27dd();})[_0x0949('0x24')](function(_0x257b36){logger[_0x0949('0x16')](_0x0949('0x36'),_0x0949('0x28'),_0x257b36[_0x0949('0x37')]);_0x3b27dd(_0x257b36);});}else{_0x3b27dd(new Error(_0x0949('0x3a')));}},'afterDestroy':function(_0x643f4c,_0x952568,_0xb931c4){var _0x237cbf=_0x4247f5[_0x0949('0x3b')];var _0x62bb43=_0x643f4c['get']({'plain':!![]});return _0x237cbf[_0x0949('0x19')][_0x0949('0x2c')]({'raw':!![],'where':{'ListId':_0x62bb43[_0x0949('0x1e')],'ContactId':_0x62bb43['id']}})[_0x0949('0x1a')](function(_0x566a12){if(!_[_0x0949('0x3c')](_0x566a12)){var _0x35c6ca=[];for(var _0x303976=0x0;_0x303976<_0x566a12[_0x0949('0x30')];_0x303976+=0x1){var _0x5a5afe=_0x237cbf[_0x0949('0x19')][_0x0949('0x3d')]({'where':{'ListId':_0x566a12[_0x303976]['ListId'],'ContactId':_0x566a12[_0x303976][_0x0949('0x3e')],'VoiceQueueId':_0x566a12[_0x303976][_0x0949('0x3f')],'CampaignId':_0x566a12[_0x303976][_0x0949('0x40')]}});_0x35c6ca[_0x0949('0x41')](_0x5a5afe);}return BPromise[_0x0949('0x42')](_0x35c6ca);}})['then'](function(_0x53fb92){logger[_0x0949('0x43')](_0x0949('0x44'),util[_0x0949('0x18')](_0x53fb92,{'showHidden':![],'depth':null}));_0xb931c4();})[_0x0949('0x24')](function(_0x1b9a6a){logger[_0x0949('0x16')]('[CmContact][afterDestroy][Error]',util['inspect'](_0x1b9a6a,{'showHidden':![],'depth':null}));_0xb931c4(_0x1b9a6a);});}}});};
\ No newline at end of file
index 33b1d77..ced8797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0500=['GetCmContact','CmContact','raw','options','where','limit','include','map','model','attributes','info','stringify','catch','CreateCmContact','keys','body','length','startsWith','cf_','update','cm_contacts','set','id\x20=\x20?','toString','sequelize','lodash','moment','ioredis','squel','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','request','then','CmContact,\x20%s,\x20%s','request\x20sent','debug','error','message','result'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x0500,0x1db));var _0x0050=function(_0x384b76,_0x496cf3){_0x384b76=_0x384b76-0x0;var _0x4dbfac=_0x0500[_0x384b76];return _0x4dbfac;};'use strict';var _=require(_0x0050('0x0'));var util=require('util');var moment=require(_0x0050('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0050('0x2'));var squel=require(_0x0050('0x3'));var db=require(_0x0050('0x4'))['db'];var utils=require(_0x0050('0x5'));var logger=require(_0x0050('0x6'))(_0x0050('0x7'));var config=require(_0x0050('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0050('0x9')][_0x0050('0xa')]({'port':0x232a});config[_0x0050('0xb')]=_[_0x0050('0xc')](config[_0x0050('0xb')],{'host':_0x0050('0xd'),'port':0x18eb});var socket=require(_0x0050('0xe'))(new Redis(config[_0x0050('0xb')]));require(_0x0050('0xf'))[_0x0050('0x10')](socket);function respondWithRpcPromise(_0x4d86f0,_0x411442,_0x2ff34c){return new BPromise(function(_0x203181,_0x56b91e){return client[_0x0050('0x11')](_0x4d86f0,_0x2ff34c)[_0x0050('0x12')](function(_0x3f2d79){logger['info'](_0x0050('0x13'),_0x411442,_0x0050('0x14'));logger[_0x0050('0x15')]('CmContact,\x20%s,\x20%s,\x20%s',_0x411442,_0x0050('0x14'),JSON['stringify'](_0x3f2d79));if(_0x3f2d79[_0x0050('0x16')]){if(_0x3f2d79[_0x0050('0x16')]['code']===0x1f4){logger[_0x0050('0x16')](_0x0050('0x13'),_0x411442,_0x3f2d79[_0x0050('0x16')][_0x0050('0x17')]);return _0x56b91e(_0x3f2d79['error'][_0x0050('0x17')]);}logger['error'](_0x0050('0x13'),_0x411442,_0x3f2d79['error'][_0x0050('0x17')]);return _0x203181(_0x3f2d79[_0x0050('0x16')][_0x0050('0x17')]);}else{logger['info'](_0x0050('0x13'),_0x411442,_0x0050('0x14'));_0x203181(_0x3f2d79[_0x0050('0x18')][_0x0050('0x17')]);}})['catch'](function(_0x252b79){logger[_0x0050('0x16')]('CmContact,\x20%s,\x20%s',_0x411442,_0x252b79);_0x56b91e(_0x252b79);});});}exports[_0x0050('0x19')]=function(_0x1c9088){var _0x2d3c14=this;return new Promise(function(_0x21dc81,_0x3296da){return db[_0x0050('0x1a')]['findAll']({'raw':_0x1c9088['options']?_0x1c9088['options'][_0x0050('0x1b')]===undefined?!![]:![]:!![],'where':_0x1c9088['options']?_0x1c9088[_0x0050('0x1c')][_0x0050('0x1d')]||null:null,'attributes':_0x1c9088[_0x0050('0x1c')]?_0x1c9088[_0x0050('0x1c')]['attributes']||null:null,'limit':_0x1c9088['options']?_0x1c9088[_0x0050('0x1c')][_0x0050('0x1e')]||null:null,'include':_0x1c9088[_0x0050('0x1c')]?_0x1c9088['options'][_0x0050('0x1f')]?_[_0x0050('0x20')](_0x1c9088[_0x0050('0x1c')][_0x0050('0x1f')],function(_0x3445ab){return{'model':db[_0x3445ab[_0x0050('0x21')]],'as':_0x3445ab['as'],'attributes':_0x3445ab[_0x0050('0x22')],'include':_0x3445ab[_0x0050('0x1f')]?_[_0x0050('0x20')](_0x3445ab['include'],function(_0x3822ed){return{'model':db[_0x3822ed[_0x0050('0x21')]],'as':_0x3822ed['as'],'attributes':_0x3822ed[_0x0050('0x22')],'include':_0x3822ed[_0x0050('0x1f')]?_[_0x0050('0x20')](_0x3822ed[_0x0050('0x1f')],function(_0x168084){return{'model':db[_0x168084[_0x0050('0x21')]],'as':_0x168084['as'],'attributes':_0x168084[_0x0050('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0050('0x12')](function(_0x27d11c){logger[_0x0050('0x23')]('GetCmContact',_0x1c9088);logger[_0x0050('0x15')](_0x0050('0x19'),_0x1c9088,JSON[_0x0050('0x24')](_0x27d11c));_0x21dc81(_0x27d11c);})[_0x0050('0x25')](function(_0x301fea){logger['error']('GetCmContact',_0x301fea[_0x0050('0x17')],_0x1c9088);_0x3296da(_0x2d3c14[_0x0050('0x16')](0x1f4,_0x301fea[_0x0050('0x17')]));});});};exports[_0x0050('0x26')]=function(_0x179574){var _0x39c516=this;return new Promise(function(_0x440ba6,_0x4536ad){return db[_0x0050('0x1a')]['create'](_0x179574['body'],{'raw':_0x179574[_0x0050('0x1c')]?_0x179574[_0x0050('0x1c')][_0x0050('0x1b')]===undefined?!![]:![]:!![]})[_0x0050('0x12')](function(_0x2921fb){var _0x403eaf;for(var _0x3ce05a=0x0;_0x3ce05a<Object[_0x0050('0x27')](_0x179574[_0x0050('0x28')])[_0x0050('0x29')];_0x3ce05a++){var _0x226084=Object[_0x0050('0x27')](_0x179574[_0x0050('0x28')])[_0x3ce05a];if(_0x226084[_0x0050('0x2a')](_0x0050('0x2b'))){_0x403eaf=squel[_0x0050('0x2c')]()['table'](_0x0050('0x2d'))[_0x0050('0x2e')](_0x226084,_0x179574[_0x0050('0x28')][_0x226084])[_0x0050('0x1d')](_0x0050('0x2f'),_0x2921fb['id'])[_0x0050('0x30')]();break;}}if(!_0x403eaf)return _0x2921fb;return db[_0x0050('0x31')]['query'](_0x403eaf)[_0x0050('0x12')](function(){return _0x2921fb;});})[_0x0050('0x12')](function(_0x3ea691){logger[_0x0050('0x23')]('CreateCmContact',_0x179574);logger['debug']('CreateCmContact',_0x179574,JSON[_0x0050('0x24')](_0x3ea691));_0x440ba6(_0x3ea691);})[_0x0050('0x25')](function(_0x2a8c74){logger[_0x0050('0x16')]('CreateCmContact',_0x2a8c74[_0x0050('0x17')],_0x179574);_0x4536ad(_0x39c516[_0x0050('0x16')](0x1f4,_0x2a8c74['message']));});});};
\ No newline at end of file
+var _0x1cae=['cf_','update','table','set','toString','query','catch','lodash','moment','bluebird','randomstring','ioredis','squel','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','localhost','redis','./cmContact.socket','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CmContact','findAll','options','raw','where','attributes','limit','include','map','model','GetCmContact','CreateCmContact','create','keys','body','length'];(function(_0x186376,_0x5d988a){var _0x2dbdd9=function(_0x96908e){while(--_0x96908e){_0x186376['push'](_0x186376['shift']());}};_0x2dbdd9(++_0x5d988a);}(_0x1cae,0xc7));var _0xe1ca=function(_0x783c87,_0x49e8e1){_0x783c87=_0x783c87-0x0;var _0x45c728=_0x1cae[_0x783c87];return _0x45c728;};'use strict';var _=require(_0xe1ca('0x0'));var util=require('util');var moment=require(_0xe1ca('0x1'));var BPromise=require(_0xe1ca('0x2'));var rs=require(_0xe1ca('0x3'));var fs=require('fs');var Redis=require(_0xe1ca('0x4'));var squel=require(_0xe1ca('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe1ca('0x6'));var logger=require(_0xe1ca('0x7'))(_0xe1ca('0x8'));var config=require(_0xe1ca('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xe1ca('0xa')][_0xe1ca('0xb')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xe1ca('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe1ca('0xd')]));require(_0xe1ca('0xe'))['register'](socket);function respondWithRpcPromise(_0x2348d2,_0x4851c1,_0x13f4a5){return new BPromise(function(_0xa7900b,_0x5322ef){return client['request'](_0x2348d2,_0x13f4a5)[_0xe1ca('0xf')](function(_0x3d3615){logger[_0xe1ca('0x10')](_0xe1ca('0x11'),_0x4851c1,_0xe1ca('0x12'));logger[_0xe1ca('0x13')]('CmContact,\x20%s,\x20%s,\x20%s',_0x4851c1,_0xe1ca('0x12'),JSON[_0xe1ca('0x14')](_0x3d3615));if(_0x3d3615['error']){if(_0x3d3615[_0xe1ca('0x15')][_0xe1ca('0x16')]===0x1f4){logger['error'](_0xe1ca('0x11'),_0x4851c1,_0x3d3615[_0xe1ca('0x15')]['message']);return _0x5322ef(_0x3d3615[_0xe1ca('0x15')][_0xe1ca('0x17')]);}logger[_0xe1ca('0x15')](_0xe1ca('0x11'),_0x4851c1,_0x3d3615[_0xe1ca('0x15')]['message']);return _0xa7900b(_0x3d3615[_0xe1ca('0x15')][_0xe1ca('0x17')]);}else{logger[_0xe1ca('0x10')](_0xe1ca('0x11'),_0x4851c1,'request\x20sent');_0xa7900b(_0x3d3615[_0xe1ca('0x18')][_0xe1ca('0x17')]);}})['catch'](function(_0x5615cd){logger[_0xe1ca('0x15')](_0xe1ca('0x11'),_0x4851c1,_0x5615cd);_0x5322ef(_0x5615cd);});});}exports['GetCmContact']=function(_0xa6b99){var _0x2eb375=this;return new Promise(function(_0x247552,_0x49262d){return db[_0xe1ca('0x19')][_0xe1ca('0x1a')]({'raw':_0xa6b99[_0xe1ca('0x1b')]?_0xa6b99[_0xe1ca('0x1b')][_0xe1ca('0x1c')]===undefined?!![]:![]:!![],'where':_0xa6b99[_0xe1ca('0x1b')]?_0xa6b99[_0xe1ca('0x1b')][_0xe1ca('0x1d')]||null:null,'attributes':_0xa6b99[_0xe1ca('0x1b')]?_0xa6b99['options'][_0xe1ca('0x1e')]||null:null,'limit':_0xa6b99['options']?_0xa6b99['options'][_0xe1ca('0x1f')]||null:null,'include':_0xa6b99[_0xe1ca('0x1b')]?_0xa6b99[_0xe1ca('0x1b')][_0xe1ca('0x20')]?_[_0xe1ca('0x21')](_0xa6b99[_0xe1ca('0x1b')][_0xe1ca('0x20')],function(_0x470f1a){return{'model':db[_0x470f1a[_0xe1ca('0x22')]],'as':_0x470f1a['as'],'attributes':_0x470f1a[_0xe1ca('0x1e')],'include':_0x470f1a[_0xe1ca('0x20')]?_[_0xe1ca('0x21')](_0x470f1a[_0xe1ca('0x20')],function(_0x545f81){return{'model':db[_0x545f81[_0xe1ca('0x22')]],'as':_0x545f81['as'],'attributes':_0x545f81['attributes'],'include':_0x545f81[_0xe1ca('0x20')]?_[_0xe1ca('0x21')](_0x545f81[_0xe1ca('0x20')],function(_0x11db82){return{'model':db[_0x11db82[_0xe1ca('0x22')]],'as':_0x11db82['as'],'attributes':_0x11db82[_0xe1ca('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fb39b){logger['info'](_0xe1ca('0x23'),_0xa6b99);logger['debug'](_0xe1ca('0x23'),_0xa6b99,JSON[_0xe1ca('0x14')](_0x2fb39b));_0x247552(_0x2fb39b);})['catch'](function(_0x2c515c){logger['error'](_0xe1ca('0x23'),_0x2c515c[_0xe1ca('0x17')],_0xa6b99);_0x49262d(_0x2eb375['error'](0x1f4,_0x2c515c[_0xe1ca('0x17')]));});});};exports[_0xe1ca('0x24')]=function(_0x56b3a4){var _0x3b16ba=this;return new Promise(function(_0x2c71b7,_0x5edb31){return db[_0xe1ca('0x19')][_0xe1ca('0x25')](_0x56b3a4['body'],{'raw':_0x56b3a4[_0xe1ca('0x1b')]?_0x56b3a4['options'][_0xe1ca('0x1c')]===undefined?!![]:![]:!![]})[_0xe1ca('0xf')](function(_0x3994ee){var _0x132ee4;for(var _0x22b127=0x0;_0x22b127<Object[_0xe1ca('0x26')](_0x56b3a4[_0xe1ca('0x27')])[_0xe1ca('0x28')];_0x22b127++){var _0x215bde=Object[_0xe1ca('0x26')](_0x56b3a4[_0xe1ca('0x27')])[_0x22b127];if(_0x215bde['startsWith'](_0xe1ca('0x29'))){_0x132ee4=squel[_0xe1ca('0x2a')]()[_0xe1ca('0x2b')]('cm_contacts')[_0xe1ca('0x2c')](_0x215bde,_0x56b3a4[_0xe1ca('0x27')][_0x215bde])[_0xe1ca('0x1d')]('id\x20=\x20?',_0x3994ee['id'])[_0xe1ca('0x2d')]();break;}}if(!_0x132ee4)return _0x3994ee;return db['sequelize'][_0xe1ca('0x2e')](_0x132ee4)['then'](function(){return _0x3994ee;});})[_0xe1ca('0xf')](function(_0x210876){logger['info']('CreateCmContact',_0x56b3a4);logger[_0xe1ca('0x13')]('CreateCmContact',_0x56b3a4,JSON[_0xe1ca('0x14')](_0x210876));_0x2c71b7(_0x210876);})[_0xe1ca('0x2f')](function(_0x4dbb8b){logger[_0xe1ca('0x15')](_0xe1ca('0x24'),_0x4dbb8b[_0xe1ca('0x17')],_0x56b3a4);_0x5edb31(_0x3b16ba[_0xe1ca('0x15')](0x1f4,_0x4dbb8b[_0xe1ca('0x17')]));});});};
\ No newline at end of file
index fa06170..8efcc33 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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'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(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'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 d6574a9..0c1f0c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62d6=['describe','/:id','show','getTags','/:id/hoppers','getHoppers','getHopperHistories','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','post','/merge','merge','create','/create_many','bulkCreate','/:id/tags','setTags','diskStorage','root','server/files/tmp','originalname','format','%s-%s%s','basename','extname','now','/csv','single','uploadCsv','join','replace','/upload','file','upload','/upload/:id','import','update','destroy','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','isAuthenticated','/describe'];(function(_0x20a3ca,_0x42fb0c){var _0x58691c=function(_0x62f436){while(--_0x62f436){_0x20a3ca['push'](_0x20a3ca['shift']());}};_0x58691c(++_0x42fb0c);}(_0x62d6,0xc0));var _0x662d=function(_0x12bcf7,_0xc11103){_0x12bcf7=_0x12bcf7-0x0;var _0x2825a=_0x62d6[_0x12bcf7];return _0x2825a;};'use strict';var multer=require('multer');var util=require(_0x662d('0x0'));var path=require(_0x662d('0x1'));var timeout=require(_0x662d('0x2'));var express=require(_0x662d('0x3'));var router=express[_0x662d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x662d('0x5'));var interaction=require(_0x662d('0x6'));var config=require(_0x662d('0x7'));var controller=require(_0x662d('0x8'));router[_0x662d('0x9')]('/',auth[_0x662d('0xa')](),controller['index']);router[_0x662d('0x9')](_0x662d('0xb'),auth[_0x662d('0xa')](),controller[_0x662d('0xc')]);router[_0x662d('0x9')](_0x662d('0xd'),auth[_0x662d('0xa')](),controller[_0x662d('0xe')]);router[_0x662d('0x9')]('/:id/tags',auth['isAuthenticated'](),controller[_0x662d('0xf')]);router['get'](_0x662d('0x10'),auth[_0x662d('0xa')](),controller[_0x662d('0x11')]);router[_0x662d('0x9')]('/:id/hopper_histories',auth['isAuthenticated'](),controller[_0x662d('0x12')]);router[_0x662d('0x9')]('/:id/hopper_finals',auth['isAuthenticated'](),controller[_0x662d('0x13')]);router[_0x662d('0x9')](_0x662d('0x14'),auth[_0x662d('0xa')](),controller[_0x662d('0x15')]);router[_0x662d('0x9')]('/:id/journey',auth['isAuthenticated'](),controller['getJourney']);router[_0x662d('0x16')](_0x662d('0x17'),auth['isAuthenticated'](),controller[_0x662d('0x18')]);router[_0x662d('0x16')]('/',auth['isAuthenticated'](),controller[_0x662d('0x19')]);router[_0x662d('0x16')](_0x662d('0x1a'),auth[_0x662d('0xa')](),controller[_0x662d('0x1b')]);router[_0x662d('0x16')](_0x662d('0x1c'),auth[_0x662d('0xa')](),controller[_0x662d('0x1d')]);var upload=multer({'storage':multer[_0x662d('0x1e')]({'destination':function(_0x10e3a2,_0x3f1b73,_0x4c8ea2){_0x4c8ea2(null,path['join'](config[_0x662d('0x1f')],_0x662d('0x20')));},'filename':function(_0x2ce5ec,_0xad6357,_0x135aa9){_0xad6357[_0x662d('0x21')]=_0xad6357[_0x662d('0x21')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x135aa9(null,util[_0x662d('0x22')](_0x662d('0x23'),path[_0x662d('0x24')](_0xad6357[_0x662d('0x21')],path[_0x662d('0x25')](_0xad6357['originalname'])),Date[_0x662d('0x26')](),path[_0x662d('0x25')](_0xad6357['originalname'])));}})});router[_0x662d('0x16')](_0x662d('0x27'),upload[_0x662d('0x28')]('file'),controller[_0x662d('0x29')]);var upload=multer({'storage':multer[_0x662d('0x1e')]({'destination':function(_0x4feff4,_0x2d17f4,_0x165346){_0x165346(null,path[_0x662d('0x2a')](config[_0x662d('0x1f')],_0x662d('0x20')));},'filename':function(_0x75cca7,_0x43a086,_0x346f1d){_0x43a086[_0x662d('0x21')]=_0x43a086[_0x662d('0x21')][_0x662d('0x2b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x346f1d(null,util[_0x662d('0x22')](_0x662d('0x23'),path[_0x662d('0x24')](_0x43a086[_0x662d('0x21')],path['extname'](_0x43a086[_0x662d('0x21')])),Date[_0x662d('0x26')](),path[_0x662d('0x25')](_0x43a086['originalname'])));}})});router[_0x662d('0x16')](_0x662d('0x2c'),upload[_0x662d('0x28')](_0x662d('0x2d')),controller[_0x662d('0x2e')]);router[_0x662d('0x16')](_0x662d('0x2f'),auth[_0x662d('0xa')](),controller[_0x662d('0x30')]);router['put'](_0x662d('0xd'),auth[_0x662d('0xa')](),controller[_0x662d('0x31')]);router['delete'](_0x662d('0xd'),auth['isAuthenticated'](),controller[_0x662d('0x32')]);module['exports']=router;
\ No newline at end of file
+var _0xbf55=['../../config/environment','isAuthenticated','index','/describe','describe','get','/:id','show','/:id/tags','getTags','/:id/hoppers','getHoppers','getHopperHistories','getHopperFinals','/:id/jscripty_sessions','/:id/journey','getJourney','post','/merge','merge','create','/create_many','bulkCreate','setTags','diskStorage','join','root','server/files/tmp','originalname','replace','%s-%s%s','extname','now','/csv','single','file','basename','/upload','upload','/upload/:id','import','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x24c5c3,_0xc96d93){var _0x9f586b=function(_0x11609b){while(--_0x11609b){_0x24c5c3['push'](_0x24c5c3['shift']());}};_0x9f586b(++_0xc96d93);}(_0xbf55,0x1e6));var _0x5bf5=function(_0x38d883,_0x3be1ae){_0x38d883=_0x38d883-0x0;var _0x5e1601=_0xbf55[_0x38d883];return _0x5e1601;};'use strict';var multer=require(_0x5bf5('0x0'));var util=require(_0x5bf5('0x1'));var path=require(_0x5bf5('0x2'));var timeout=require(_0x5bf5('0x3'));var express=require(_0x5bf5('0x4'));var router=express[_0x5bf5('0x5')]();var fs_extra=require(_0x5bf5('0x6'));var auth=require(_0x5bf5('0x7'));var interaction=require(_0x5bf5('0x8'));var config=require(_0x5bf5('0x9'));var controller=require('./cmContact.controller');router['get']('/',auth[_0x5bf5('0xa')](),controller[_0x5bf5('0xb')]);router['get'](_0x5bf5('0xc'),auth[_0x5bf5('0xa')](),controller[_0x5bf5('0xd')]);router[_0x5bf5('0xe')](_0x5bf5('0xf'),auth[_0x5bf5('0xa')](),controller[_0x5bf5('0x10')]);router[_0x5bf5('0xe')](_0x5bf5('0x11'),auth[_0x5bf5('0xa')](),controller[_0x5bf5('0x12')]);router[_0x5bf5('0xe')](_0x5bf5('0x13'),auth[_0x5bf5('0xa')](),controller[_0x5bf5('0x14')]);router[_0x5bf5('0xe')]('/:id/hopper_histories',auth[_0x5bf5('0xa')](),controller[_0x5bf5('0x15')]);router[_0x5bf5('0xe')]('/:id/hopper_finals',auth[_0x5bf5('0xa')](),controller[_0x5bf5('0x16')]);router[_0x5bf5('0xe')](_0x5bf5('0x17'),auth['isAuthenticated'](),controller['getJscriptySessions']);router[_0x5bf5('0xe')](_0x5bf5('0x18'),auth['isAuthenticated'](),controller[_0x5bf5('0x19')]);router[_0x5bf5('0x1a')](_0x5bf5('0x1b'),auth['isAuthenticated'](),controller[_0x5bf5('0x1c')]);router[_0x5bf5('0x1a')]('/',auth[_0x5bf5('0xa')](),controller[_0x5bf5('0x1d')]);router['post'](_0x5bf5('0x1e'),auth[_0x5bf5('0xa')](),controller[_0x5bf5('0x1f')]);router['post'](_0x5bf5('0x11'),auth[_0x5bf5('0xa')](),controller[_0x5bf5('0x20')]);var upload=multer({'storage':multer[_0x5bf5('0x21')]({'destination':function(_0x51be70,_0x4789a2,_0x4a4b77){_0x4a4b77(null,path[_0x5bf5('0x22')](config[_0x5bf5('0x23')],_0x5bf5('0x24')));},'filename':function(_0xa4a314,_0x20b37b,_0x3f0212){_0x20b37b[_0x5bf5('0x25')]=_0x20b37b['originalname'][_0x5bf5('0x26')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3f0212(null,util['format'](_0x5bf5('0x27'),path['basename'](_0x20b37b['originalname'],path[_0x5bf5('0x28')](_0x20b37b[_0x5bf5('0x25')])),Date[_0x5bf5('0x29')](),path[_0x5bf5('0x28')](_0x20b37b[_0x5bf5('0x25')])));}})});router['post'](_0x5bf5('0x2a'),upload[_0x5bf5('0x2b')](_0x5bf5('0x2c')),controller['uploadCsv']);var upload=multer({'storage':multer[_0x5bf5('0x21')]({'destination':function(_0x2d25ec,_0x5d4d22,_0x430436){_0x430436(null,path['join'](config[_0x5bf5('0x23')],_0x5bf5('0x24')));},'filename':function(_0x31bb55,_0x719b42,_0x2aa2e0){_0x719b42['originalname']=_0x719b42[_0x5bf5('0x25')][_0x5bf5('0x26')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2aa2e0(null,util['format']('%s-%s%s',path[_0x5bf5('0x2d')](_0x719b42[_0x5bf5('0x25')],path[_0x5bf5('0x28')](_0x719b42[_0x5bf5('0x25')])),Date[_0x5bf5('0x29')](),path[_0x5bf5('0x28')](_0x719b42['originalname'])));}})});router['post'](_0x5bf5('0x2e'),upload[_0x5bf5('0x2b')](_0x5bf5('0x2c')),controller[_0x5bf5('0x2f')]);router[_0x5bf5('0x1a')](_0x5bf5('0x30'),auth[_0x5bf5('0xa')](),controller[_0x5bf5('0x31')]);router[_0x5bf5('0x32')](_0x5bf5('0xf'),auth[_0x5bf5('0xa')](),controller[_0x5bf5('0x33')]);router[_0x5bf5('0x34')](_0x5bf5('0xf'),auth[_0x5bf5('0xa')](),controller[_0x5bf5('0x35')]);module[_0x5bf5('0x36')]=router;
\ No newline at end of file
index 42a9d41..edb5bee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7bf=['getDataValue','values','stringify','BOOLEAN','ENUM','voice','lodash','exports','VIRTUAL','alias','STRING','setDataValue','name','TEXT','long','type','select'];(function(_0x2ffc46,_0x35ce3c){var _0x1eda8f=function(_0x285344){while(--_0x285344){_0x2ffc46['push'](_0x2ffc46['shift']());}};_0x1eda8f(++_0x35ce3c);}(_0xf7bf,0x16b));var _0xff7b=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0xf7bf[_0x5f3f88];return _0xd08119;};'use strict';var Sequelize=require('sequelize');var _=require(_0xff7b('0x0'));module[_0xff7b('0x1')]={'name':{'type':Sequelize[_0xff7b('0x2')],'get':function(_0x4fef7a){return this['getDataValue'](_0xff7b('0x3'));}},'alias':{'type':Sequelize[_0xff7b('0x4')],'allowNull':![],'set':function(_0x24d206){this[_0xff7b('0x5')](_0xff7b('0x3'),_0x24d206?_0x24d206:this['getDataValue'](_0xff7b('0x6')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0xff7b('0x7')](_0xff7b('0x8')),'get':function(){if(this['getDataValue'](_0xff7b('0x9'))===_0xff7b('0xa')){return JSON['parse'](this[_0xff7b('0xb')](_0xff7b('0xc')));}else{return this[_0xff7b('0xb')](_0xff7b('0xc'));}},'set':function(_0x2da4dc){if(Array['isArray'](_0x2da4dc)){this['setDataValue'](_0xff7b('0xc'),JSON[_0xff7b('0xd')](_0x2da4dc));}else{this[_0xff7b('0x5')](_0xff7b('0xc'),_0x2da4dc);}}},'required':{'type':Sequelize[_0xff7b('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xff7b('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xff7b('0xf')](_0xff7b('0x10'))}};
\ No newline at end of file
+var _0x4a5e=['name','TEXT','long','type','parse','values','stringify','BOOLEAN','voice','sequelize','lodash','exports','getDataValue','alias','STRING','setDataValue'];(function(_0x2e0a4e,_0x522471){var _0x414f7b=function(_0x31a444){while(--_0x31a444){_0x2e0a4e['push'](_0x2e0a4e['shift']());}};_0x414f7b(++_0x522471);}(_0x4a5e,0xc9));var _0xe4a5=function(_0x19cf7a,_0x1dd21e){_0x19cf7a=_0x19cf7a-0x0;var _0x1a75bb=_0x4a5e[_0x19cf7a];return _0x1a75bb;};'use strict';var Sequelize=require(_0xe4a5('0x0'));var _=require(_0xe4a5('0x1'));module[_0xe4a5('0x2')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x59dcf4){return this[_0xe4a5('0x3')](_0xe4a5('0x4'));}},'alias':{'type':Sequelize[_0xe4a5('0x5')],'allowNull':![],'set':function(_0x50db62){this[_0xe4a5('0x6')](_0xe4a5('0x4'),_0x50db62?_0x50db62:this[_0xe4a5('0x3')](_0xe4a5('0x7')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0xe4a5('0x8')](_0xe4a5('0x9')),'get':function(){if(this[_0xe4a5('0x3')](_0xe4a5('0xa'))==='select'){return JSON[_0xe4a5('0xb')](this['getDataValue'](_0xe4a5('0xc')));}else{return this['getDataValue'](_0xe4a5('0xc'));}},'set':function(_0x3d97bb){if(Array['isArray'](_0x3d97bb)){this[_0xe4a5('0x6')](_0xe4a5('0xc'),JSON[_0xe4a5('0xd')](_0x3d97bb));}else{this[_0xe4a5('0x6')](_0xe4a5('0xc'),_0x3d97bb);}}},'required':{'type':Sequelize[_0xe4a5('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xe4a5('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0xe4a5('0xf'))}};
\ No newline at end of file
index 990ab7f..691cacf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x631c=['Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','CmCustomField','filters','fields','find','body','create','sequelize','transaction','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','count','offset','limit','set'];(function(_0x41927b,_0x81f6c7){var _0x4334ed=function(_0x29bdf5){while(--_0x29bdf5){_0x41927b['push'](_0x41927b['shift']());}};_0x4334ed(++_0x81f6c7);}(_0x631c,0x155));var _0xc631=function(_0x56bf1e,_0x849e86){_0x56bf1e=_0x56bf1e-0x0;var _0x55f541=_0x631c[_0x56bf1e];return _0x55f541;};'use strict';var emlformat=require(_0xc631('0x0'));var rimraf=require(_0xc631('0x1'));var zipdir=require(_0xc631('0x2'));var jsonpatch=require(_0xc631('0x3'));var rp=require(_0xc631('0x4'));var moment=require(_0xc631('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc631('0x6'));var util=require(_0xc631('0x7'));var path=require(_0xc631('0x8'));var sox=require(_0xc631('0x9'));var csv=require('to-csv');var ejs=require(_0xc631('0xa'));var fs=require('fs');var fs_extra=require(_0xc631('0xb'));var _=require(_0xc631('0xc'));var squel=require(_0xc631('0xd'));var crypto=require(_0xc631('0xe'));var jsforce=require(_0xc631('0xf'));var deskjs=require(_0xc631('0x10'));var toCsv=require(_0xc631('0x11'));var querystring=require(_0xc631('0x12'));var Papa=require(_0xc631('0x13'));var Redis=require(_0xc631('0x14'));var authService=require(_0xc631('0x15'));var qs=require(_0xc631('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc631('0x17'));var logger=require(_0xc631('0x18'))(_0xc631('0x19'));var utils=require(_0xc631('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xc631('0x1b'));var db=require(_0xc631('0x1c'))['db'];function respondWithStatusCode(_0x34aa88,_0x2ba456){_0x2ba456=_0x2ba456||0xcc;return function(_0x3eb68b){if(_0x3eb68b){return _0x34aa88[_0xc631('0x1d')](_0x2ba456);}return _0x34aa88[_0xc631('0x1e')](_0x2ba456)['end']();};}function respondWithResult(_0x4c81db,_0x25c6b7){_0x25c6b7=_0x25c6b7||0xc8;return function(_0x1af884){if(_0x1af884){return _0x4c81db[_0xc631('0x1e')](_0x25c6b7)['json'](_0x1af884);}};}function respondWithFilteredResult(_0xcec7c1,_0x5b5fd9){return function(_0x425441){if(_0x425441){var _0x5bf3b6=typeof _0x5b5fd9['offset']==='undefined'&&typeof _0x5b5fd9['limit']==='undefined';var _0x4e2d2b=_0x425441[_0xc631('0x1f')];var _0x233a2f=_0x5bf3b6?0x0:_0x5b5fd9[_0xc631('0x20')];var _0x4fa21a=_0x5bf3b6?_0x425441[_0xc631('0x1f')]:_0x5b5fd9[_0xc631('0x20')]+_0x5b5fd9[_0xc631('0x21')];var _0x32ba5e;if(_0x4fa21a>=_0x4e2d2b){_0x4fa21a=_0x4e2d2b;_0x32ba5e=0xc8;}else{_0x32ba5e=0xce;}_0xcec7c1[_0xc631('0x1e')](_0x32ba5e);return _0xcec7c1[_0xc631('0x22')](_0xc631('0x23'),_0x233a2f+'-'+_0x4fa21a+'/'+_0x4e2d2b)[_0xc631('0x24')](_0x425441);}return null;};}function patchUpdates(_0x1d072a){return function(_0xef2aa2){try{jsonpatch[_0xc631('0x25')](_0xef2aa2,_0x1d072a,!![]);}catch(_0x5abd49){return BPromise[_0xc631('0x26')](_0x5abd49);}return _0xef2aa2[_0xc631('0x27')]();};}function saveUpdates(_0x249400,_0x30afd5){return function(_0x5494ff){if(_0x5494ff){return _0x5494ff[_0xc631('0x28')](_0x249400)[_0xc631('0x29')](function(_0x199bf8){return _0x199bf8;});}return null;};}function removeEntity(_0x373511,_0x47645f){return function(_0x3c6ff1){if(_0x3c6ff1){return _0x3c6ff1[_0xc631('0x2a')]()['then'](function(){_0x373511[_0xc631('0x1e')](0xcc)[_0xc631('0x2b')]();});}};}function handleEntityNotFound(_0xac942,_0x1b11e2){return function(_0x523b30){if(!_0x523b30){_0xac942[_0xc631('0x1d')](0x194);}return _0x523b30;};}function handleError(_0x5e94a2,_0x2946fe){_0x2946fe=_0x2946fe||0x1f4;return function(_0x22f72c){logger[_0xc631('0x2c')](_0x22f72c[_0xc631('0x2d')]);if(_0x22f72c['name']){delete _0x22f72c[_0xc631('0x2e')];}_0x5e94a2['status'](_0x2946fe)[_0xc631('0x2f')](_0x22f72c);};}exports[_0xc631('0x30')]=function(_0x33f3c3,_0x4fdf50){var _0x5fee26={},_0x3d0532={},_0x139739={'count':0x0,'rows':[]};var _0x1ded85=_[_0xc631('0x31')](db['CmCustomField'][_0xc631('0x32')],function(_0x430155){return{'name':_0x430155[_0xc631('0x33')],'type':_0x430155[_0xc631('0x34')][_0xc631('0x35')]};});_0x3d0532[_0xc631('0x36')]=_[_0xc631('0x37')](_['map'](_0x1ded85,_0xc631('0x2e')),['name']);_0x3d0532[_0xc631('0x38')]=_[_0xc631('0x39')](_0x33f3c3['query']);_0x3d0532['filters']=_[_0xc631('0x3a')](_0x3d0532['model'],_0x3d0532[_0xc631('0x38')]);_0x5fee26['attributes']=_[_0xc631('0x3a')](_0x3d0532[_0xc631('0x36')],qs['fields'](_0x33f3c3[_0xc631('0x38')]['fields']));_0x5fee26[_0xc631('0x3b')]=_0x5fee26['attributes']['length']?_0x5fee26['attributes']:_0x3d0532[_0xc631('0x36')];if(!_0x33f3c3[_0xc631('0x38')][_0xc631('0x3c')](_0xc631('0x3d'))){_0x5fee26[_0xc631('0x21')]=qs['limit'](_0x33f3c3[_0xc631('0x38')][_0xc631('0x21')]);_0x5fee26[_0xc631('0x20')]=qs[_0xc631('0x20')](_0x33f3c3[_0xc631('0x38')]['offset']);}_0x5fee26[_0xc631('0x3e')]=qs[_0xc631('0x3f')](_0x33f3c3['query']['sort']);_0x5fee26[_0xc631('0x40')]=qs['filters'](_[_0xc631('0x41')](_0x33f3c3[_0xc631('0x38')],_0x3d0532['filters']),_0x1ded85);if(_0x33f3c3[_0xc631('0x38')][_0xc631('0x42')]){_0x5fee26[_0xc631('0x40')]=_[_0xc631('0x43')](_0x5fee26[_0xc631('0x40')],{'$or':_[_0xc631('0x31')](_0x1ded85,function(_0x239624){if(_0x239624[_0xc631('0x34')]!=='VIRTUAL'){var _0x37d7cc={};_0x37d7cc[_0x239624[_0xc631('0x2e')]]={'$like':'%'+_0x33f3c3[_0xc631('0x38')][_0xc631('0x42')]+'%'};return _0x37d7cc;}})});}_0x5fee26=_['merge']({},_0x5fee26,_0x33f3c3[_0xc631('0x44')]);var _0x4aa628={'where':_0x5fee26['where']};return db['CmCustomField'][_0xc631('0x1f')](_0x4aa628)[_0xc631('0x29')](function(_0x3b8da1){_0x139739[_0xc631('0x1f')]=_0x3b8da1;if(_0x33f3c3[_0xc631('0x38')][_0xc631('0x45')]){_0x5fee26['include']=[{'all':!![]}];}return db['CmCustomField'][_0xc631('0x46')](_0x5fee26);})[_0xc631('0x29')](function(_0x164074){_0x139739[_0xc631('0x47')]=_0x164074;return _0x139739;})[_0xc631('0x29')](respondWithFilteredResult(_0x4fdf50,_0x5fee26))[_0xc631('0x48')](handleError(_0x4fdf50,null));};exports[_0xc631('0x49')]=function(_0x441ce9,_0x4e0481){var _0x27c7b4={'raw':!![],'where':{'id':_0x441ce9[_0xc631('0x4a')]['id']}},_0x552a59={};_0x552a59[_0xc631('0x36')]=_[_0xc631('0x39')](db[_0xc631('0x4b')]['rawAttributes']);_0x552a59[_0xc631('0x38')]=_['keys'](_0x441ce9['query']);_0x552a59[_0xc631('0x4c')]=_[_0xc631('0x3a')](_0x552a59[_0xc631('0x36')],_0x552a59[_0xc631('0x38')]);_0x27c7b4[_0xc631('0x3b')]=_[_0xc631('0x3a')](_0x552a59[_0xc631('0x36')],qs[_0xc631('0x4d')](_0x441ce9[_0xc631('0x38')][_0xc631('0x4d')]));_0x27c7b4['attributes']=_0x27c7b4[_0xc631('0x3b')]['length']?_0x27c7b4[_0xc631('0x3b')]:_0x552a59[_0xc631('0x36')];if(_0x441ce9[_0xc631('0x38')][_0xc631('0x45')]){_0x27c7b4['include']=[{'all':!![]}];}_0x27c7b4=_['merge']({},_0x27c7b4,_0x441ce9[_0xc631('0x44')]);return db[_0xc631('0x4b')][_0xc631('0x4e')](_0x27c7b4)[_0xc631('0x29')](handleEntityNotFound(_0x4e0481,null))[_0xc631('0x29')](respondWithResult(_0x4e0481,null))[_0xc631('0x48')](handleError(_0x4e0481,null));};exports[_0xc631('0x28')]=function(_0xc64bff,_0x2fc5d5){if(_0xc64bff[_0xc631('0x4f')]['id']){delete _0xc64bff[_0xc631('0x4f')]['id'];}return db[_0xc631('0x4b')][_0xc631('0x4e')]({'where':{'id':_0xc64bff[_0xc631('0x4a')]['id']}})[_0xc631('0x29')](handleEntityNotFound(_0x2fc5d5,null))[_0xc631('0x29')](saveUpdates(_0xc64bff[_0xc631('0x4f')],null))[_0xc631('0x29')](respondWithResult(_0x2fc5d5,null))[_0xc631('0x48')](handleError(_0x2fc5d5,null));};exports['destroy']=function(_0x2b8194,_0x34a81a){return db['CmCustomField'][_0xc631('0x4e')]({'where':{'id':_0x2b8194[_0xc631('0x4a')]['id']}})['then'](handleEntityNotFound(_0x34a81a,null))[_0xc631('0x29')](removeEntity(_0x34a81a,null))[_0xc631('0x48')](handleError(_0x34a81a,null));};exports[_0xc631('0x50')]=function(_0x39e3a4,_0x5da0a7){var _0x44cdf5;return db[_0xc631('0x51')][_0xc631('0x52')](function(_0xa41d2a){return db['CmCustomField'][_0xc631('0x50')](_0x39e3a4[_0xc631('0x4f')],{'transaction':_0xa41d2a})['then'](function(_0x4a1c02){_0x44cdf5=_0x4a1c02;var _0x879e11={'type':db[_0xc631('0x53')][_0xc631('0x54')],'transaction':_0xa41d2a};switch(_0x39e3a4[_0xc631('0x4f')][_0xc631('0x34')]){case _0xc631('0x55'):_0x879e11['type']=db[_0xc631('0x53')][_0xc631('0x54')];break;case _0xc631('0x56'):_0x879e11[_0xc631('0x34')]=db[_0xc631('0x53')][_0xc631('0x57')];break;case _0xc631('0x58'):_0x879e11[_0xc631('0x34')]=db[_0xc631('0x53')][_0xc631('0x59')];_0x879e11['defaultValue']=![];break;default:}return db['sequelize'][_0xc631('0x5a')][_0xc631('0x5b')](_0xc631('0x5c'),util[_0xc631('0x5d')]('cf_%d',_0x44cdf5['id']),_0x879e11);})[_0xc631('0x29')](function(){return _0x44cdf5;});})[_0xc631('0x29')](respondWithResult(_0x5da0a7,0xc9))[_0xc631('0x48')](handleError(_0x5da0a7,null));};
\ No newline at end of file
+var _0xd5ab=['fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','CmCustomField','rawAttributes','fieldName','type','key','differenceBy','query','filters','intersection','model','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','keys','find','body','create','sequelize','transaction','Sequelize','TEXT','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs'];(function(_0x536865,_0x1315e1){var _0x1cafee=function(_0x21e6c6){while(--_0x21e6c6){_0x536865['push'](_0x536865['shift']());}};_0x1cafee(++_0x1315e1);}(_0xd5ab,0x14e));var _0xbd5a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd5ab[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xbd5a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbd5a('0x1'));var jsonpatch=require(_0xbd5a('0x2'));var rp=require(_0xbd5a('0x3'));var moment=require('moment');var BPromise=require(_0xbd5a('0x4'));var Mustache=require(_0xbd5a('0x5'));var util=require('util');var path=require(_0xbd5a('0x6'));var sox=require(_0xbd5a('0x7'));var csv=require(_0xbd5a('0x8'));var ejs=require(_0xbd5a('0x9'));var fs=require('fs');var fs_extra=require(_0xbd5a('0xa'));var _=require(_0xbd5a('0xb'));var squel=require(_0xbd5a('0xc'));var crypto=require('crypto');var jsforce=require(_0xbd5a('0xd'));var deskjs=require(_0xbd5a('0xe'));var toCsv=require(_0xbd5a('0x8'));var querystring=require(_0xbd5a('0xf'));var Papa=require(_0xbd5a('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xbd5a('0x11'));var as=require(_0xbd5a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbd5a('0x13'))(_0xbd5a('0x14'));var utils=require(_0xbd5a('0x15'));var config=require(_0xbd5a('0x16'));var licenseUtil=require(_0xbd5a('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xa32e87,_0x3b9807){_0x3b9807=_0x3b9807||0xcc;return function(_0x2c6b3c){if(_0x2c6b3c){return _0xa32e87[_0xbd5a('0x18')](_0x3b9807);}return _0xa32e87[_0xbd5a('0x19')](_0x3b9807)[_0xbd5a('0x1a')]();};}function respondWithResult(_0x62fd6e,_0x279b4f){_0x279b4f=_0x279b4f||0xc8;return function(_0x2777b5){if(_0x2777b5){return _0x62fd6e[_0xbd5a('0x19')](_0x279b4f)[_0xbd5a('0x1b')](_0x2777b5);}};}function respondWithFilteredResult(_0x53b49a,_0x2db779){return function(_0x37d710){if(_0x37d710){var _0x269d9b=typeof _0x2db779[_0xbd5a('0x1c')]===_0xbd5a('0x1d')&&typeof _0x2db779[_0xbd5a('0x1e')]===_0xbd5a('0x1d');var _0xc6522c=_0x37d710['count'];var _0x3ec73a=_0x269d9b?0x0:_0x2db779['offset'];var _0x5b67f9=_0x269d9b?_0x37d710[_0xbd5a('0x1f')]:_0x2db779['offset']+_0x2db779['limit'];var _0x4900c6;if(_0x5b67f9>=_0xc6522c){_0x5b67f9=_0xc6522c;_0x4900c6=0xc8;}else{_0x4900c6=0xce;}_0x53b49a[_0xbd5a('0x19')](_0x4900c6);return _0x53b49a[_0xbd5a('0x20')](_0xbd5a('0x21'),_0x3ec73a+'-'+_0x5b67f9+'/'+_0xc6522c)[_0xbd5a('0x1b')](_0x37d710);}return null;};}function patchUpdates(_0x48bcac){return function(_0x5f0845){try{jsonpatch[_0xbd5a('0x22')](_0x5f0845,_0x48bcac,!![]);}catch(_0x44af97){return BPromise[_0xbd5a('0x23')](_0x44af97);}return _0x5f0845[_0xbd5a('0x24')]();};}function saveUpdates(_0x289479,_0x131a29){return function(_0x1568c0){if(_0x1568c0){return _0x1568c0[_0xbd5a('0x25')](_0x289479)[_0xbd5a('0x26')](function(_0x15cf85){return _0x15cf85;});}return null;};}function removeEntity(_0x18bea9,_0x4e9011){return function(_0x40cab5){if(_0x40cab5){return _0x40cab5[_0xbd5a('0x27')]()[_0xbd5a('0x26')](function(){_0x18bea9[_0xbd5a('0x19')](0xcc)[_0xbd5a('0x1a')]();});}};}function handleEntityNotFound(_0x29a5b7,_0x1e77d4){return function(_0x9eccf1){if(!_0x9eccf1){_0x29a5b7[_0xbd5a('0x18')](0x194);}return _0x9eccf1;};}function handleError(_0x551a55,_0xc6f426){_0xc6f426=_0xc6f426||0x1f4;return function(_0x3271dd){logger[_0xbd5a('0x28')](_0x3271dd['stack']);if(_0x3271dd[_0xbd5a('0x29')]){delete _0x3271dd[_0xbd5a('0x29')];}_0x551a55['status'](_0xc6f426)[_0xbd5a('0x2a')](_0x3271dd);};}exports[_0xbd5a('0x2b')]=function(_0x17e1b6,_0x2b0a65){var _0x265896={},_0x11fa8f={},_0x4dc642={'count':0x0,'rows':[]};var _0x4c688e=_[_0xbd5a('0x2c')](db[_0xbd5a('0x2d')][_0xbd5a('0x2e')],function(_0x2660de){return{'name':_0x2660de[_0xbd5a('0x2f')],'type':_0x2660de[_0xbd5a('0x30')][_0xbd5a('0x31')]};});_0x11fa8f['model']=_[_0xbd5a('0x32')](_[_0xbd5a('0x2c')](_0x4c688e,_0xbd5a('0x29')),[_0xbd5a('0x29')]);_0x11fa8f['query']=_['keys'](_0x17e1b6[_0xbd5a('0x33')]);_0x11fa8f[_0xbd5a('0x34')]=_[_0xbd5a('0x35')](_0x11fa8f['model'],_0x11fa8f[_0xbd5a('0x33')]);_0x265896['attributes']=_[_0xbd5a('0x35')](_0x11fa8f[_0xbd5a('0x36')],qs[_0xbd5a('0x37')](_0x17e1b6[_0xbd5a('0x33')][_0xbd5a('0x37')]));_0x265896[_0xbd5a('0x38')]=_0x265896[_0xbd5a('0x38')]['length']?_0x265896[_0xbd5a('0x38')]:_0x11fa8f[_0xbd5a('0x36')];if(!_0x17e1b6[_0xbd5a('0x33')][_0xbd5a('0x39')]('nolimit')){_0x265896['limit']=qs[_0xbd5a('0x1e')](_0x17e1b6[_0xbd5a('0x33')]['limit']);_0x265896[_0xbd5a('0x1c')]=qs[_0xbd5a('0x1c')](_0x17e1b6[_0xbd5a('0x33')][_0xbd5a('0x1c')]);}_0x265896[_0xbd5a('0x3a')]=qs[_0xbd5a('0x3b')](_0x17e1b6[_0xbd5a('0x33')][_0xbd5a('0x3b')]);_0x265896[_0xbd5a('0x3c')]=qs[_0xbd5a('0x34')](_[_0xbd5a('0x3d')](_0x17e1b6['query'],_0x11fa8f[_0xbd5a('0x34')]),_0x4c688e);if(_0x17e1b6[_0xbd5a('0x33')][_0xbd5a('0x3e')]){_0x265896[_0xbd5a('0x3c')]=_[_0xbd5a('0x3f')](_0x265896[_0xbd5a('0x3c')],{'$or':_[_0xbd5a('0x2c')](_0x4c688e,function(_0xd23ed1){if(_0xd23ed1[_0xbd5a('0x30')]!==_0xbd5a('0x40')){var _0x335b0b={};_0x335b0b[_0xd23ed1[_0xbd5a('0x29')]]={'$like':'%'+_0x17e1b6[_0xbd5a('0x33')]['filter']+'%'};return _0x335b0b;}})});}_0x265896=_['merge']({},_0x265896,_0x17e1b6[_0xbd5a('0x41')]);var _0x47bc7d={'where':_0x265896['where']};return db[_0xbd5a('0x2d')][_0xbd5a('0x1f')](_0x47bc7d)['then'](function(_0x1d0516){_0x4dc642[_0xbd5a('0x1f')]=_0x1d0516;if(_0x17e1b6[_0xbd5a('0x33')][_0xbd5a('0x42')]){_0x265896['include']=[{'all':!![]}];}return db[_0xbd5a('0x2d')][_0xbd5a('0x43')](_0x265896);})[_0xbd5a('0x26')](function(_0x871a11){_0x4dc642['rows']=_0x871a11;return _0x4dc642;})[_0xbd5a('0x26')](respondWithFilteredResult(_0x2b0a65,_0x265896))[_0xbd5a('0x44')](handleError(_0x2b0a65,null));};exports[_0xbd5a('0x45')]=function(_0x58b7ac,_0x18facb){var _0x340168={'raw':!![],'where':{'id':_0x58b7ac[_0xbd5a('0x46')]['id']}},_0x2e6a1c={};_0x2e6a1c[_0xbd5a('0x36')]=_[_0xbd5a('0x47')](db[_0xbd5a('0x2d')][_0xbd5a('0x2e')]);_0x2e6a1c['query']=_[_0xbd5a('0x47')](_0x58b7ac['query']);_0x2e6a1c[_0xbd5a('0x34')]=_[_0xbd5a('0x35')](_0x2e6a1c[_0xbd5a('0x36')],_0x2e6a1c['query']);_0x340168['attributes']=_['intersection'](_0x2e6a1c[_0xbd5a('0x36')],qs[_0xbd5a('0x37')](_0x58b7ac[_0xbd5a('0x33')][_0xbd5a('0x37')]));_0x340168[_0xbd5a('0x38')]=_0x340168['attributes']['length']?_0x340168[_0xbd5a('0x38')]:_0x2e6a1c[_0xbd5a('0x36')];if(_0x58b7ac[_0xbd5a('0x33')][_0xbd5a('0x42')]){_0x340168['include']=[{'all':!![]}];}_0x340168=_[_0xbd5a('0x3f')]({},_0x340168,_0x58b7ac[_0xbd5a('0x41')]);return db[_0xbd5a('0x2d')][_0xbd5a('0x48')](_0x340168)[_0xbd5a('0x26')](handleEntityNotFound(_0x18facb,null))[_0xbd5a('0x26')](respondWithResult(_0x18facb,null))[_0xbd5a('0x44')](handleError(_0x18facb,null));};exports[_0xbd5a('0x25')]=function(_0x277308,_0x193a13){if(_0x277308[_0xbd5a('0x49')]['id']){delete _0x277308[_0xbd5a('0x49')]['id'];}return db[_0xbd5a('0x2d')][_0xbd5a('0x48')]({'where':{'id':_0x277308[_0xbd5a('0x46')]['id']}})[_0xbd5a('0x26')](handleEntityNotFound(_0x193a13,null))[_0xbd5a('0x26')](saveUpdates(_0x277308[_0xbd5a('0x49')],null))['then'](respondWithResult(_0x193a13,null))[_0xbd5a('0x44')](handleError(_0x193a13,null));};exports[_0xbd5a('0x27')]=function(_0x50397b,_0x174d6a){return db[_0xbd5a('0x2d')][_0xbd5a('0x48')]({'where':{'id':_0x50397b[_0xbd5a('0x46')]['id']}})[_0xbd5a('0x26')](handleEntityNotFound(_0x174d6a,null))[_0xbd5a('0x26')](removeEntity(_0x174d6a,null))[_0xbd5a('0x44')](handleError(_0x174d6a,null));};exports[_0xbd5a('0x4a')]=function(_0x44cfbc,_0x2df596){var _0x26ce1e;return db[_0xbd5a('0x4b')][_0xbd5a('0x4c')](function(_0x4818c6){return db[_0xbd5a('0x2d')]['create'](_0x44cfbc[_0xbd5a('0x49')],{'transaction':_0x4818c6})['then'](function(_0x364906){_0x26ce1e=_0x364906;var _0x2c1b5e={'type':db[_0xbd5a('0x4d')][_0xbd5a('0x4e')],'transaction':_0x4818c6};switch(_0x44cfbc[_0xbd5a('0x49')]['type']){case'text':_0x2c1b5e[_0xbd5a('0x30')]=db['Sequelize'][_0xbd5a('0x4e')];break;case'number':_0x2c1b5e[_0xbd5a('0x30')]=db[_0xbd5a('0x4d')]['INTEGER'];break;case _0xbd5a('0x4f'):_0x2c1b5e[_0xbd5a('0x30')]=db[_0xbd5a('0x4d')][_0xbd5a('0x50')];_0x2c1b5e['defaultValue']=![];break;default:}return db[_0xbd5a('0x4b')][_0xbd5a('0x51')][_0xbd5a('0x52')](_0xbd5a('0x53'),util[_0xbd5a('0x54')](_0xbd5a('0x55'),_0x26ce1e['id']),_0x2c1b5e);})[_0xbd5a('0x26')](function(){return _0x26ce1e;});})[_0xbd5a('0x26')](respondWithResult(_0x2df596,0xc9))[_0xbd5a('0x44')](handleError(_0x2df596,null));};
\ No newline at end of file
index 6db22f9..54a1ff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa03e=['path','rimraf','../../config/environment','./cmCustomField.attributes','define','cm_custom_fields','lodash','util','bluebird','request-promise'];(function(_0x27baa7,_0x118f62){var _0x23d6f7=function(_0x3077ca){while(--_0x3077ca){_0x27baa7['push'](_0x27baa7['shift']());}};_0x23d6f7(++_0x118f62);}(_0xa03e,0x1d2));var _0xea03=function(_0x43c0ed,_0x62b859){_0x43c0ed=_0x43c0ed-0x0;var _0x35414d=_0xa03e[_0x43c0ed];return _0x35414d;};'use strict';var _=require(_0xea03('0x0'));var util=require(_0xea03('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xea03('0x2'));var rp=require(_0xea03('0x3'));var fs=require('fs');var path=require(_0xea03('0x4'));var rimraf=require(_0xea03('0x5'));var config=require(_0xea03('0x6'));var attributes=require(_0xea03('0x7'));module['exports']=function(_0x2faa9f,_0x592510){return _0x2faa9f[_0xea03('0x8')]('CmCustomField',attributes,{'tableName':_0xea03('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc2e6=['define','CmCustomField','cm_custom_fields','util','../../config/logger','api','moment','bluebird','request-promise','path','./cmCustomField.attributes','exports'];(function(_0x8fe4b0,_0x5da3de){var _0x468f3f=function(_0x5c8bd8){while(--_0x5c8bd8){_0x8fe4b0['push'](_0x8fe4b0['shift']());}};_0x468f3f(++_0x5da3de);}(_0xc2e6,0x13b));var _0x6c2e=function(_0x539143,_0x476a19){_0x539143=_0x539143-0x0;var _0x21c88e=_0xc2e6[_0x539143];return _0x21c88e;};'use strict';var _=require('lodash');var util=require(_0x6c2e('0x0'));var logger=require(_0x6c2e('0x1'))(_0x6c2e('0x2'));var moment=require(_0x6c2e('0x3'));var BPromise=require(_0x6c2e('0x4'));var rp=require(_0x6c2e('0x5'));var fs=require('fs');var path=require(_0x6c2e('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6c2e('0x7'));module[_0x6c2e('0x8')]=function(_0x1984db,_0x3d6196){return _0x1984db[_0x6c2e('0x9')](_0x6c2e('0xa'),attributes,{'tableName':_0x6c2e('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4325451..024f424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2560=['lodash','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x2560,0x104));var _0x0256=function(_0xb73a1,_0x4a2c98){_0xb73a1=_0xb73a1-0x0;var _0x21c420=_0x2560[_0xb73a1];return _0x21c420;};'use strict';var _=require(_0x0256('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0256('0x1'));var fs=require('fs');var Redis=require(_0x0256('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x0256('0x3'));var logger=require(_0x0256('0x4'))(_0x0256('0x5'));var config=require(_0x0256('0x6'));var jayson=require(_0x0256('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x233fca,_0x2161ae,_0x28c761){return new BPromise(function(_0x4b908b,_0x3105f0){return client[_0x0256('0x8')](_0x233fca,_0x28c761)[_0x0256('0x9')](function(_0x43c5eb){logger[_0x0256('0xa')](_0x0256('0xb'),_0x2161ae,_0x0256('0xc'));logger['debug'](_0x0256('0xd'),_0x2161ae,_0x0256('0xc'),JSON[_0x0256('0xe')](_0x43c5eb));if(_0x43c5eb[_0x0256('0xf')]){if(_0x43c5eb[_0x0256('0xf')][_0x0256('0x10')]===0x1f4){logger['error'](_0x0256('0xb'),_0x2161ae,_0x43c5eb[_0x0256('0xf')][_0x0256('0x11')]);return _0x3105f0(_0x43c5eb[_0x0256('0xf')][_0x0256('0x11')]);}logger[_0x0256('0xf')]('CmCustomField,\x20%s,\x20%s',_0x2161ae,_0x43c5eb['error'][_0x0256('0x11')]);return _0x4b908b(_0x43c5eb[_0x0256('0xf')][_0x0256('0x11')]);}else{logger[_0x0256('0xa')](_0x0256('0xb'),_0x2161ae,_0x0256('0xc'));_0x4b908b(_0x43c5eb[_0x0256('0x12')][_0x0256('0x11')]);}})[_0x0256('0x13')](function(_0x503752){logger['error'](_0x0256('0xb'),_0x2161ae,_0x503752);_0x3105f0(_0x503752);});});}
\ No newline at end of file
+var _0x5855=['stringify','error','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s'];(function(_0x1a050e,_0x24b216){var _0xe81d87=function(_0x2df99b){while(--_0x2df99b){_0x1a050e['push'](_0x1a050e['shift']());}};_0xe81d87(++_0x24b216);}(_0x5855,0x164));var _0x5585=function(_0x24b245,_0x1b3508){_0x24b245=_0x24b245-0x0;var _0x56f828=_0x5855[_0x24b245];return _0x56f828;};'use strict';var _=require(_0x5585('0x0'));var util=require(_0x5585('0x1'));var moment=require(_0x5585('0x2'));var BPromise=require(_0x5585('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5585('0x4'));var db=require(_0x5585('0x5'))['db'];var utils=require(_0x5585('0x6'));var logger=require(_0x5585('0x7'))(_0x5585('0x8'));var config=require(_0x5585('0x9'));var jayson=require(_0x5585('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x589a06,_0x3cc564,_0x286b9e){return new BPromise(function(_0x4d0731,_0x41b100){return client[_0x5585('0xb')](_0x589a06,_0x286b9e)[_0x5585('0xc')](function(_0x41bda5){logger[_0x5585('0xd')](_0x5585('0xe'),_0x3cc564,_0x5585('0xf'));logger[_0x5585('0x10')](_0x5585('0x11'),_0x3cc564,_0x5585('0xf'),JSON[_0x5585('0x12')](_0x41bda5));if(_0x41bda5['error']){if(_0x41bda5[_0x5585('0x13')]['code']===0x1f4){logger['error'](_0x5585('0xe'),_0x3cc564,_0x41bda5[_0x5585('0x13')][_0x5585('0x14')]);return _0x41b100(_0x41bda5[_0x5585('0x13')][_0x5585('0x14')]);}logger[_0x5585('0x13')](_0x5585('0xe'),_0x3cc564,_0x41bda5[_0x5585('0x13')][_0x5585('0x14')]);return _0x4d0731(_0x41bda5[_0x5585('0x13')][_0x5585('0x14')]);}else{logger[_0x5585('0xd')](_0x5585('0xe'),_0x3cc564,_0x5585('0xf'));_0x4d0731(_0x41bda5['result'][_0x5585('0x14')]);}})[_0x5585('0x15')](function(_0x32fd6d){logger[_0x5585('0x13')](_0x5585('0xe'),_0x3cc564,_0x32fd6d);_0x41b100(_0x32fd6d);});});}
\ No newline at end of file
index 88e3f6a..6726b8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36b2=['../../config/environment','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x234dc1,_0x25cf40){var _0x531b7c=function(_0xaa6372){while(--_0xaa6372){_0x234dc1['push'](_0x234dc1['shift']());}};_0x531b7c(++_0x25cf40);}(_0x36b2,0x6b));var _0x236b=function(_0x3e4ba4,_0x4e6143){_0x3e4ba4=_0x3e4ba4-0x0;var _0x4bffb2=_0x36b2[_0x3e4ba4];return _0x4bffb2;};'use strict';var multer=require(_0x236b('0x0'));var util=require(_0x236b('0x1'));var path=require(_0x236b('0x2'));var timeout=require('connect-timeout');var express=require(_0x236b('0x3'));var router=express[_0x236b('0x4')]();var fs_extra=require(_0x236b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x236b('0x6'));var config=require(_0x236b('0x7'));var controller=require('./cmCustomField.controller');router[_0x236b('0x8')]('/',auth[_0x236b('0x9')](),controller[_0x236b('0xa')]);router[_0x236b('0x8')](_0x236b('0xb'),auth[_0x236b('0x9')](),controller['show']);router[_0x236b('0xc')]('/',auth[_0x236b('0x9')](),controller[_0x236b('0xd')]);router[_0x236b('0xe')]('/:id',auth[_0x236b('0x9')](),controller[_0x236b('0xf')]);router[_0x236b('0x10')]('/:id',auth[_0x236b('0x9')](),controller[_0x236b('0x11')]);module[_0x236b('0x12')]=router;
\ No newline at end of file
+var _0x8a5c=['../../components/interaction/service','./cmCustomField.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x3e5288,_0x2d3496){var _0x8f96c6=function(_0x45b5ea){while(--_0x45b5ea){_0x3e5288['push'](_0x3e5288['shift']());}};_0x8f96c6(++_0x2d3496);}(_0x8a5c,0x112));var _0xc8a5=function(_0x2a1fde,_0x4cba1e){_0x2a1fde=_0x2a1fde-0x0;var _0x4315a3=_0x8a5c[_0x2a1fde];return _0x4315a3;};'use strict';var multer=require('multer');var util=require(_0xc8a5('0x0'));var path=require(_0xc8a5('0x1'));var timeout=require(_0xc8a5('0x2'));var express=require(_0xc8a5('0x3'));var router=express[_0xc8a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc8a5('0x5'));var interaction=require(_0xc8a5('0x6'));var config=require('../../config/environment');var controller=require(_0xc8a5('0x7'));router['get']('/',auth[_0xc8a5('0x8')](),controller[_0xc8a5('0x9')]);router[_0xc8a5('0xa')](_0xc8a5('0xb'),auth[_0xc8a5('0x8')](),controller[_0xc8a5('0xc')]);router[_0xc8a5('0xd')]('/',auth[_0xc8a5('0x8')](),controller[_0xc8a5('0xe')]);router[_0xc8a5('0xf')](_0xc8a5('0xb'),auth[_0xc8a5('0x8')](),controller[_0xc8a5('0x10')]);router[_0xc8a5('0x11')](_0xc8a5('0xb'),auth[_0xc8a5('0x8')](),controller[_0xc8a5('0x12')]);module[_0xc8a5('0x13')]=router;
\ No newline at end of file
index a6e8447..86dd48e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d89=['INTEGER','DATE','UNSIGNED','contactListQueue','moment','sequelize','STRING','BOOLEAN'];(function(_0xc6d1c4,_0x2c943f){var _0x729e1e=function(_0x1153f6){while(--_0x1153f6){_0xc6d1c4['push'](_0xc6d1c4['shift']());}};_0x729e1e(++_0x2c943f);}(_0x0d89,0x1e4));var _0x90d8=function(_0x44406f,_0x428cc6){_0x44406f=_0x44406f-0x0;var _0x59dfaf=_0x0d89[_0x44406f];return _0x59dfaf;};'use strict';var moment=require(_0x90d8('0x0'));var Sequelize=require(_0x90d8('0x1'));module['exports']={'phone':{'type':Sequelize[_0x90d8('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x90d8('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x90d8('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize[_0x90d8('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x90d8('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x90d8('0x5')]},'priority':{'type':Sequelize[_0x90d8('0x4')](0x2)[_0x90d8('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x90d8('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x90d8('0x4')],'unique':_0x90d8('0x7')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x90d8('0x7')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0x90d8('0x4')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0x90d8('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x90d8('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x90d8('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x397c=['exports','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','BOOLEAN','STRING','UNSIGNED','contactListQueue','moment','sequelize'];(function(_0x3fe950,_0xd6eb6c){var _0x296973=function(_0x2a9c9e){while(--_0x2a9c9e){_0x3fe950['push'](_0x3fe950['shift']());}};_0x296973(++_0xd6eb6c);}(_0x397c,0xfb));var _0xc397=function(_0x101e7b,_0x4ef05b){_0x101e7b=_0x101e7b-0x0;var _0x4995c0=_0x397c[_0x101e7b];return _0x4995c0;};'use strict';var moment=require(_0xc397('0x0'));var Sequelize=require(_0xc397('0x1'));module[_0xc397('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xc397('0x3')],'defaultValue':moment()[_0xc397('0x4')](_0xc397('0x5'))},'countbusyretry':{'type':Sequelize[_0xc397('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xc397('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xc397('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0xc397('0x7')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xc397('0x8')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xc397('0x3')]},'priority':{'type':Sequelize[_0xc397('0x6')](0x2)[_0xc397('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xc397('0x7')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0xc397('0x6')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0xc397('0x6')],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0xc397('0x6')]},'VoiceQueueId':{'type':Sequelize[_0xc397('0x6')],'unique':_0xc397('0xa')},'CampaignId':{'type':Sequelize[_0xc397('0x6')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xc397('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xc397('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xc397('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xc397('0x6')],'defaultValue':0x0}};
\ No newline at end of file
index 8b08ba2..f4d21b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad35=['ContactId','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','format','direction','prev','isEmpty','hopperIds','priority','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','LOCK','UPDATE','CmCompany','Company','CmList','List','Queue','dialActive','getOpenContacts','error','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','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/environment','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','update','destroy','then','stack','name','send','CmHopper','type','key','map','query','keys','filters','intersection','$and','$or','$gte','$lt','$ne','$eq','$between','$notIn','$like','$notLike','$iLike','$overlap','$contains','$contained','$any','model','fields','attributes','length','hasOwnProperty','sort','where','filter','VIRTUAL','merge','options','count','includeAll','include','rows','catch','show','params','find','create','body','describe','VoiceQueueId','CampaignId','VoiceQueue','state','deleted','campaign','user','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','queue','CmContact'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0xad35,0xaf));var _0x5ad3=function(_0x18c599,_0x4f61b6){_0x18c599=_0x18c599-0x0;var _0x1cc8fa=_0xad35[_0x18c599];return _0x1cc8fa;};'use strict';var emlformat=require(_0x5ad3('0x0'));var rimraf=require(_0x5ad3('0x1'));var zipdir=require(_0x5ad3('0x2'));var jsonpatch=require(_0x5ad3('0x3'));var rp=require('request-promise');var moment=require(_0x5ad3('0x4'));var BPromise=require(_0x5ad3('0x5'));var Mustache=require(_0x5ad3('0x6'));var util=require(_0x5ad3('0x7'));var path=require(_0x5ad3('0x8'));var sox=require(_0x5ad3('0x9'));var csv=require(_0x5ad3('0xa'));var ejs=require(_0x5ad3('0xb'));var fs=require('fs');var fs_extra=require(_0x5ad3('0xc'));var _=require(_0x5ad3('0xd'));var squel=require(_0x5ad3('0xe'));var crypto=require(_0x5ad3('0xf'));var jsforce=require(_0x5ad3('0x10'));var deskjs=require(_0x5ad3('0x11'));var toCsv=require('to-csv');var querystring=require(_0x5ad3('0x12'));var Papa=require(_0x5ad3('0x13'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x5ad3('0x14'));var as=require(_0x5ad3('0x15'));var hardwareService=require(_0x5ad3('0x16'));var logger=require(_0x5ad3('0x17'))(_0x5ad3('0x18'));var utils=require(_0x5ad3('0x19'));var config=require(_0x5ad3('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3a214a,_0x3f1540){_0x3f1540=_0x3f1540||0xcc;return function(_0x1b80a1){if(_0x1b80a1){return _0x3a214a[_0x5ad3('0x1b')](_0x3f1540);}return _0x3a214a[_0x5ad3('0x1c')](_0x3f1540)[_0x5ad3('0x1d')]();};}function respondWithResult(_0x10498f,_0x5e1768){_0x5e1768=_0x5e1768||0xc8;return function(_0x467b23){if(_0x467b23){return _0x10498f[_0x5ad3('0x1c')](_0x5e1768)[_0x5ad3('0x1e')](_0x467b23);}};}function respondWithFilteredResult(_0x54c5cd,_0x31d091){return function(_0x3d54e9){if(_0x3d54e9){var _0x2c54c1=typeof _0x31d091[_0x5ad3('0x1f')]===_0x5ad3('0x20')&&typeof _0x31d091[_0x5ad3('0x21')]===_0x5ad3('0x20');var _0x3f7429=_0x3d54e9['count'];var _0x2f04aa=_0x2c54c1?0x0:_0x31d091[_0x5ad3('0x1f')];var _0x54bc83=_0x2c54c1?_0x3d54e9['count']:_0x31d091['offset']+_0x31d091['limit'];var _0x329ae5;if(_0x54bc83>=_0x3f7429){_0x54bc83=_0x3f7429;_0x329ae5=0xc8;}else{_0x329ae5=0xce;}_0x54c5cd[_0x5ad3('0x1c')](_0x329ae5);return _0x54c5cd[_0x5ad3('0x22')]('Content-Range',_0x2f04aa+'-'+_0x54bc83+'/'+_0x3f7429)['json'](_0x3d54e9);}return null;};}function patchUpdates(_0x5b8afb){return function(_0x50d973){try{jsonpatch[_0x5ad3('0x23')](_0x50d973,_0x5b8afb,!![]);}catch(_0x4fe361){return BPromise[_0x5ad3('0x24')](_0x4fe361);}return _0x50d973['save']();};}function saveUpdates(_0x43f453,_0x2fa6b9){return function(_0x43feb0){if(_0x43feb0){return _0x43feb0[_0x5ad3('0x25')](_0x43f453)['then'](function(_0xcf584a){return _0xcf584a;});}return null;};}function removeEntity(_0x1c0d3b,_0x3a89d0){return function(_0x5f5799){if(_0x5f5799){return _0x5f5799[_0x5ad3('0x26')]()[_0x5ad3('0x27')](function(){_0x1c0d3b[_0x5ad3('0x1c')](0xcc)[_0x5ad3('0x1d')]();});}};}function handleEntityNotFound(_0x48d12e,_0x5571dc){return function(_0x28984b){if(!_0x28984b){_0x48d12e['sendStatus'](0x194);}return _0x28984b;};}function handleError(_0x363229,_0x46386b){_0x46386b=_0x46386b||0x1f4;return function(_0x320379){logger['error'](_0x320379[_0x5ad3('0x28')]);if(_0x320379['name']){delete _0x320379[_0x5ad3('0x29')];}_0x363229[_0x5ad3('0x1c')](_0x46386b)[_0x5ad3('0x2a')](_0x320379);};}exports['index']=function(_0x152d44,_0x300ef5){var _0x341ddb={},_0x4b2cc2={},_0x4c37fa={'count':0x0,'rows':[]};var _0x9679a9=_['map'](db[_0x5ad3('0x2b')]['rawAttributes'],function(_0x257560){return{'name':_0x257560['fieldName'],'type':_0x257560[_0x5ad3('0x2c')][_0x5ad3('0x2d')]};});_0x4b2cc2['model']=_[_0x5ad3('0x2e')](_0x9679a9,_0x5ad3('0x29'));_0x4b2cc2[_0x5ad3('0x2f')]=_[_0x5ad3('0x30')](_0x152d44[_0x5ad3('0x2f')]);_0x4b2cc2[_0x5ad3('0x31')]=_[_0x5ad3('0x32')](_0x4b2cc2['model'],_0x4b2cc2[_0x5ad3('0x2f')]);_0x4b2cc2['filters']=_['concat'](_0x4b2cc2[_0x5ad3('0x31')],[_0x5ad3('0x33'),_0x5ad3('0x34'),'$gt',_0x5ad3('0x35'),_0x5ad3('0x36'),'$lte',_0x5ad3('0x37'),_0x5ad3('0x38'),'$not',_0x5ad3('0x39'),'$notBetween','$in',_0x5ad3('0x3a'),_0x5ad3('0x3b'),_0x5ad3('0x3c'),_0x5ad3('0x3d'),'$notILike',_0x5ad3('0x3b'),_0x5ad3('0x3e'),_0x5ad3('0x3f'),_0x5ad3('0x40'),_0x5ad3('0x41')]);_0x341ddb['attributes']=_['intersection'](_0x4b2cc2[_0x5ad3('0x42')],qs[_0x5ad3('0x43')](_0x152d44[_0x5ad3('0x2f')][_0x5ad3('0x43')]));_0x341ddb[_0x5ad3('0x44')]=_0x341ddb['attributes'][_0x5ad3('0x45')]?_0x341ddb[_0x5ad3('0x44')]:_0x4b2cc2['model'];if(!_0x152d44[_0x5ad3('0x2f')][_0x5ad3('0x46')]('nolimit')){_0x341ddb[_0x5ad3('0x21')]=qs[_0x5ad3('0x21')](_0x152d44[_0x5ad3('0x2f')][_0x5ad3('0x21')]);_0x341ddb['offset']=qs[_0x5ad3('0x1f')](_0x152d44['query'][_0x5ad3('0x1f')]);}_0x341ddb['order']=qs['sort'](_0x152d44[_0x5ad3('0x2f')][_0x5ad3('0x47')]);_0x341ddb[_0x5ad3('0x48')]=qs[_0x5ad3('0x31')](_['pick'](_0x152d44[_0x5ad3('0x2f')],_0x4b2cc2[_0x5ad3('0x31')]),_0x9679a9);if(_0x152d44[_0x5ad3('0x2f')][_0x5ad3('0x49')]){_0x341ddb['where']=_['merge'](_0x341ddb[_0x5ad3('0x48')],{'$or':_[_0x5ad3('0x2e')](_0x9679a9,function(_0x39a9a7){if(_0x39a9a7[_0x5ad3('0x2c')]!==_0x5ad3('0x4a')){var _0x2a4543={};_0x2a4543[_0x39a9a7['name']]={'$like':'%'+_0x152d44['query']['filter']+'%'};return _0x2a4543;}})});}_0x341ddb=_[_0x5ad3('0x4b')]({},_0x341ddb,_0x152d44[_0x5ad3('0x4c')]);var _0x464f1e={'where':_0x341ddb['where']};return db[_0x5ad3('0x2b')]['count'](_0x464f1e)[_0x5ad3('0x27')](function(_0xf66693){_0x4c37fa[_0x5ad3('0x4d')]=_0xf66693;if(_0x152d44[_0x5ad3('0x2f')][_0x5ad3('0x4e')]){_0x341ddb[_0x5ad3('0x4f')]=[{'all':!![]}];}return db[_0x5ad3('0x2b')]['findAll'](_0x341ddb);})[_0x5ad3('0x27')](function(_0xa7f906){_0x4c37fa[_0x5ad3('0x50')]=_0xa7f906;return _0x4c37fa;})[_0x5ad3('0x27')](respondWithFilteredResult(_0x300ef5,_0x341ddb))[_0x5ad3('0x51')](handleError(_0x300ef5,null));};exports[_0x5ad3('0x52')]=function(_0x3cd563,_0x36310d){var _0x4d3cc3={'raw':!![],'where':{'id':_0x3cd563[_0x5ad3('0x53')]['id']}},_0x22c614={};_0x22c614[_0x5ad3('0x42')]=_[_0x5ad3('0x30')](db[_0x5ad3('0x2b')]['rawAttributes']);_0x22c614['query']=_[_0x5ad3('0x30')](_0x3cd563['query']);_0x22c614[_0x5ad3('0x31')]=_[_0x5ad3('0x32')](_0x22c614[_0x5ad3('0x42')],_0x22c614[_0x5ad3('0x2f')]);_0x4d3cc3[_0x5ad3('0x44')]=_[_0x5ad3('0x32')](_0x22c614[_0x5ad3('0x42')],qs[_0x5ad3('0x43')](_0x3cd563[_0x5ad3('0x2f')][_0x5ad3('0x43')]));_0x4d3cc3[_0x5ad3('0x44')]=_0x4d3cc3[_0x5ad3('0x44')]['length']?_0x4d3cc3[_0x5ad3('0x44')]:_0x22c614[_0x5ad3('0x42')];if(_0x3cd563[_0x5ad3('0x2f')]['includeAll']){_0x4d3cc3[_0x5ad3('0x4f')]=[{'all':!![]}];}_0x4d3cc3=_[_0x5ad3('0x4b')]({},_0x4d3cc3,_0x3cd563[_0x5ad3('0x4c')]);return db['CmHopper'][_0x5ad3('0x54')](_0x4d3cc3)[_0x5ad3('0x27')](handleEntityNotFound(_0x36310d,null))['then'](respondWithResult(_0x36310d,null))[_0x5ad3('0x51')](handleError(_0x36310d,null));};exports[_0x5ad3('0x55')]=function(_0x23fd1c,_0x2bae85){return db['CmHopper'][_0x5ad3('0x55')](_0x23fd1c[_0x5ad3('0x56')],{})[_0x5ad3('0x27')](respondWithResult(_0x2bae85,0xc9))[_0x5ad3('0x51')](handleError(_0x2bae85,null));};exports[_0x5ad3('0x25')]=function(_0x2703be,_0x55d15b){if(_0x2703be['body']['id']){delete _0x2703be[_0x5ad3('0x56')]['id'];}return db[_0x5ad3('0x2b')][_0x5ad3('0x54')]({'where':{'id':_0x2703be[_0x5ad3('0x53')]['id']}})[_0x5ad3('0x27')](handleEntityNotFound(_0x55d15b,null))[_0x5ad3('0x27')](saveUpdates(_0x2703be['body'],null))['then'](respondWithResult(_0x55d15b,null))['catch'](handleError(_0x55d15b,null));};exports['describe']=function(_0x59bd05,_0x486956){return db[_0x5ad3('0x2b')][_0x5ad3('0x57')]()[_0x5ad3('0x27')](respondWithResult(_0x486956,null))['catch'](handleError(_0x486956,null));};exports[_0x5ad3('0x26')]=function(_0x2ed680,_0x55e4e1){var _0x2f9104;return db['CmHopper'][_0x5ad3('0x54')]({'where':{'id':_0x2ed680[_0x5ad3('0x53')]['id']}})[_0x5ad3('0x27')](handleEntityNotFound(_0x55e4e1,null))[_0x5ad3('0x27')](function(_0x5b55f1){if(_0x5b55f1){return _0x5b55f1[_0x5ad3('0x26')]()[_0x5ad3('0x27')](function(_0x22805b){return _0x22805b;});}})['then'](function(_0x26f98c){_0x2f9104=_0x26f98c;if(_0x26f98c){if(_0x26f98c[_0x5ad3('0x58')]||_0x26f98c[_0x5ad3('0x59')]){return db[_0x26f98c[_0x5ad3('0x58')]?_0x5ad3('0x5a'):'Campaign'][_0x5ad3('0x54')]({'where':{'id':_0x26f98c[_0x5ad3('0x58')]?_0x26f98c['VoiceQueueId']:_0x26f98c[_0x5ad3('0x59')]},'attributes':['id','name'],'raw':!![]});}}})[_0x5ad3('0x27')](function(_0x202a7f){var _0x5df44a={};if(_0x202a7f){_['merge'](_0x5df44a,_['omit'](_0x2f9104['dataValues'],['createdAt','updatedAt','id']));_0x5df44a[_0x5ad3('0x5b')]=0x15;_0x5df44a['statedesc']=_0x5ad3('0x5c');_0x5df44a[_0x5ad3('0x5d')]=_0x202a7f[_0x5ad3('0x29')];_0x5df44a['membername']=_0x2ed680[_0x5ad3('0x5e')][_0x5ad3('0x29')];_0x5df44a['UserId']=_0x2ed680[_0x5ad3('0x5e')]['id'];_0x5df44a[_0x5ad3('0x5c')]=!![];_0x5df44a[_0x5ad3('0x5f')]=moment()['format'](_0x5ad3('0x60'));_0x5df44a[_0x5ad3('0x61')]=_0x2f9104[_0x5ad3('0x62')];_0x5df44a['campaigntype']=_0x2f9104[_0x5ad3('0x58')]?_0x5ad3('0x63'):'ivr';return db[_0x5ad3('0x64')][_0x5ad3('0x54')]({'where':{'id':_0x5df44a[_0x5ad3('0x65')]},'attributes':[_0x5ad3('0x66'),'lastName']})[_0x5ad3('0x27')](function(_0x191172){if(!_[_0x5ad3('0x67')](_0x55e4e1)&&!_['isNil'](_0x191172[_0x5ad3('0x66')])){_0x5df44a[_0x5ad3('0x68')]=_0x191172[_0x5ad3('0x66')];if(!_['isNil'](_0x191172[_0x5ad3('0x69')])){_0x5df44a[_0x5ad3('0x68')]+='\x20'+_0x191172[_0x5ad3('0x69')];}}})[_0x5ad3('0x6a')](function(){return db[_0x5ad3('0x6b')][_0x5ad3('0x55')](_0x5df44a);});}})[_0x5ad3('0x27')](function(){return _0x55e4e1[_0x5ad3('0x1c')](0xcc)[_0x5ad3('0x1d')]();})[_0x5ad3('0x51')](handleError(_0x55e4e1,null));};exports['getPreview']=function(_0x5f4186,_0x1b2ff6,_0x1cd06b){var _0x4a42dc=[];return db[_0x5ad3('0x64')][_0x5ad3('0x57')]()[_0x5ad3('0x27')](function(_0x1c8a5e){_0x4a42dc=_['keys'](_0x1c8a5e);return _0x5f4186[_0x5ad3('0x5e')][_0x5ad3('0x6c')]({'where':{'type':_0x5ad3('0x6d'),'dialActive':!![],'dialMethod':_0x5ad3('0x6e')},'attributes':['id',_0x5ad3('0x6f')],'raw':!![]});})[_0x5ad3('0x27')](function(_0x4af3b3){if(_0x4af3b3&&_0x4af3b3[_0x5ad3('0x45')]){return db[_0x5ad3('0x70')][_0x5ad3('0x71')](function(_0x56e9c7){var _0x5219c4={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x5ad3('0x72')](_0x5ad3('0x60'))},'VoiceQueueId':{'$in':_[_0x5ad3('0x2e')](_0x4af3b3,'id')},'$or':[{'UserId':null},{'UserId':_0x5f4186[_0x5ad3('0x5e')]['id']}]};var _0x53499e=[];if(_0x5f4186[_0x5ad3('0x56')]['direction']&&_0x5f4186[_0x5ad3('0x56')][_0x5ad3('0x73')]===_0x5ad3('0x74')){if(!_[_0x5ad3('0x75')](_0x5f4186[_0x5ad3('0x56')][_0x5ad3('0x76')])){_0x5219c4['id']={'$in':_0x5f4186['body'][_0x5ad3('0x76')]};}_0x53499e=[[_0x5ad3('0x77'),_0x5ad3('0x78')],['scheduledAt',_0x4af3b3[0x0][_0x5ad3('0x6f')]===_0x5ad3('0x78')?_0x5ad3('0x79'):_0x5ad3('0x78')],db[_0x5ad3('0x70')][_0x5ad3('0x7a')](_0x5ad3('0x7b')),['id',_0x5ad3('0x79')]];}else{if(!_[_0x5ad3('0x75')](_0x5f4186[_0x5ad3('0x56')][_0x5ad3('0x76')])){_0x5219c4['id']={'$notIn':_0x5f4186['body'][_0x5ad3('0x76')]};}_0x53499e=[[_0x5ad3('0x77'),_0x5ad3('0x79')],[_0x5ad3('0x7c'),_0x4af3b3[0x0]['dialOrderByScheduledAt']],db[_0x5ad3('0x70')][_0x5ad3('0x7a')](_0x5ad3('0x7d')),['id',_0x5ad3('0x78')]];}return db[_0x5ad3('0x2b')]['findOne']({'attributes':['id',_0x5ad3('0x7e')],'where':_0x5219c4,'order':_0x53499e,'transaction':_0x56e9c7,'lock':_0x56e9c7[_0x5ad3('0x7f')][_0x5ad3('0x80')],'include':[{'model':db[_0x5ad3('0x64')],'as':'Contact','attributes':_0x4a42dc,'include':[{'model':db[_0x5ad3('0x81')],'as':_0x5ad3('0x82'),'attributes':['id',_0x5ad3('0x29')]}]},{'model':db[_0x5ad3('0x83')],'as':_0x5ad3('0x84'),'attributes':['id',_0x5ad3('0x29')]},{'model':db[_0x5ad3('0x5a')],'as':_0x5ad3('0x85'),'attributes':['id',_0x5ad3('0x29'),_0x5ad3('0x86')]}]})['then'](function(_0x1c350b){if(_0x1c350b){return _0x1c350b[_0x5ad3('0x25')]({'UserId':_0x5f4186['user']['id']},{'transaction':_0x56e9c7});}});});}})[_0x5ad3('0x27')](handleEntityNotFound(_0x1b2ff6,null))[_0x5ad3('0x27')](respondWithResult(_0x1b2ff6,null))[_0x5ad3('0x51')](handleError(_0x1b2ff6,null));};exports[_0x5ad3('0x87')]=function(_0x8eebb6,_0x2129de,_0x1217ef){return _0x8eebb6[_0x5ad3('0x5e')][_0x5ad3('0x6c')]({'where':{'type':_0x5ad3('0x6d'),'dialActive':!![],'dialMethod':_0x5ad3('0x6e')},'attributes':['id'],'raw':!![]})[_0x5ad3('0x27')](function(_0x40faea){if(_0x40faea&&_0x40faea[_0x5ad3('0x45')]){return db['CmHopper'][_0x5ad3('0x4d')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x5ad3('0x60'))},'VoiceQueueId':{'$in':_['map'](_0x40faea,'id')},'$or':[{'UserId':null},{'UserId':_0x8eebb6['user']['id']}]}});}return 0x0;})['then'](function(_0x3572b4){if(!_[_0x5ad3('0x67')](_0x3572b4)&&_['isNumber'](_0x3572b4)){return _0x2129de[_0x5ad3('0x1c')](0xc8)[_0x5ad3('0x1e')]({'contacts':_0x3572b4});}else{logger[_0x5ad3('0x88')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x5ad3('0x87'),0x194,_0x5ad3('0x89'));_0x2129de[_0x5ad3('0x1b')](0x194);}})[_0x5ad3('0x51')](handleError(_0x2129de,null));};
\ No newline at end of file
+var _0xe030=['limit','count','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','keys','query','intersection','filters','$or','$gt','$lt','$ne','$eq','$not','$notBetween','$notIn','$notLike','$iLike','$notILike','$like','$overlap','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','CmHopper','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','dataValues','createdAt','updatedAt','deleted','campaign','membername','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','queue','ContactId','firstName','lastName','isNil','calleridname','CmHopperFinal','getPreview','getVoiceQueues','outbound','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','DESC','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','LOCK','Contact','CmCompany','Company','CmList','List','Queue','dialActive','preview','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../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'];(function(_0x706df4,_0x3b5a09){var _0x1201ea=function(_0x5683ad){while(--_0x5683ad){_0x706df4['push'](_0x706df4['shift']());}};_0x1201ea(++_0x3b5a09);}(_0xe030,0x196));var _0x0e03=function(_0x1bd822,_0x1c8078){_0x1bd822=_0x1bd822-0x0;var _0x3c3a69=_0xe030[_0x1bd822];return _0x3c3a69;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0e03('0x0'));var zipdir=require(_0x0e03('0x1'));var jsonpatch=require(_0x0e03('0x2'));var rp=require('request-promise');var moment=require(_0x0e03('0x3'));var BPromise=require(_0x0e03('0x4'));var Mustache=require(_0x0e03('0x5'));var util=require('util');var path=require(_0x0e03('0x6'));var sox=require('sox');var csv=require(_0x0e03('0x7'));var ejs=require(_0x0e03('0x8'));var fs=require('fs');var fs_extra=require(_0x0e03('0x9'));var _=require(_0x0e03('0xa'));var squel=require('squel');var crypto=require(_0x0e03('0xb'));var jsforce=require(_0x0e03('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x0e03('0x7'));var querystring=require(_0x0e03('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x0e03('0xe'));var qs=require(_0x0e03('0xf'));var as=require(_0x0e03('0x10'));var hardwareService=require(_0x0e03('0x11'));var logger=require(_0x0e03('0x12'))(_0x0e03('0x13'));var utils=require('../../config/utils');var config=require(_0x0e03('0x14'));var licenseUtil=require(_0x0e03('0x15'));var db=require(_0x0e03('0x16'))['db'];function respondWithStatusCode(_0x170e2d,_0x3110ed){_0x3110ed=_0x3110ed||0xcc;return function(_0x164f7c){if(_0x164f7c){return _0x170e2d[_0x0e03('0x17')](_0x3110ed);}return _0x170e2d[_0x0e03('0x18')](_0x3110ed)[_0x0e03('0x19')]();};}function respondWithResult(_0x4e64b6,_0x25bd84){_0x25bd84=_0x25bd84||0xc8;return function(_0x39e7a0){if(_0x39e7a0){return _0x4e64b6[_0x0e03('0x18')](_0x25bd84)[_0x0e03('0x1a')](_0x39e7a0);}};}function respondWithFilteredResult(_0x4e676d,_0x40ce89){return function(_0x1dd30d){if(_0x1dd30d){var _0x3d7e98=typeof _0x40ce89[_0x0e03('0x1b')]===_0x0e03('0x1c')&&typeof _0x40ce89[_0x0e03('0x1d')]===_0x0e03('0x1c');var _0x2f9a43=_0x1dd30d[_0x0e03('0x1e')];var _0x548712=_0x3d7e98?0x0:_0x40ce89[_0x0e03('0x1b')];var _0x3ce5fa=_0x3d7e98?_0x1dd30d['count']:_0x40ce89[_0x0e03('0x1b')]+_0x40ce89['limit'];var _0x2e58a4;if(_0x3ce5fa>=_0x2f9a43){_0x3ce5fa=_0x2f9a43;_0x2e58a4=0xc8;}else{_0x2e58a4=0xce;}_0x4e676d[_0x0e03('0x18')](_0x2e58a4);return _0x4e676d['set'](_0x0e03('0x1f'),_0x548712+'-'+_0x3ce5fa+'/'+_0x2f9a43)[_0x0e03('0x1a')](_0x1dd30d);}return null;};}function patchUpdates(_0x3504de){return function(_0x3acf6f){try{jsonpatch['apply'](_0x3acf6f,_0x3504de,!![]);}catch(_0x57df0d){return BPromise[_0x0e03('0x20')](_0x57df0d);}return _0x3acf6f[_0x0e03('0x21')]();};}function saveUpdates(_0x14561d,_0x17920f){return function(_0x2fee2a){if(_0x2fee2a){return _0x2fee2a[_0x0e03('0x22')](_0x14561d)[_0x0e03('0x23')](function(_0x16bb5d){return _0x16bb5d;});}return null;};}function removeEntity(_0x1ce306,_0x2c1657){return function(_0x27dce2){if(_0x27dce2){return _0x27dce2[_0x0e03('0x24')]()[_0x0e03('0x23')](function(){_0x1ce306['status'](0xcc)[_0x0e03('0x19')]();});}};}function handleEntityNotFound(_0x3d2c90,_0x202074){return function(_0x3806b6){if(!_0x3806b6){_0x3d2c90[_0x0e03('0x17')](0x194);}return _0x3806b6;};}function handleError(_0x5107f5,_0x2b3a55){_0x2b3a55=_0x2b3a55||0x1f4;return function(_0x34f7c7){logger[_0x0e03('0x25')](_0x34f7c7[_0x0e03('0x26')]);if(_0x34f7c7[_0x0e03('0x27')]){delete _0x34f7c7['name'];}_0x5107f5[_0x0e03('0x18')](_0x2b3a55)[_0x0e03('0x28')](_0x34f7c7);};}exports[_0x0e03('0x29')]=function(_0x114ed8,_0x1a56b4){var _0x53538f={},_0x170e63={},_0x49a72e={'count':0x0,'rows':[]};var _0x418ea0=_[_0x0e03('0x2a')](db['CmHopper']['rawAttributes'],function(_0x289216){return{'name':_0x289216[_0x0e03('0x2b')],'type':_0x289216[_0x0e03('0x2c')][_0x0e03('0x2d')]};});_0x170e63[_0x0e03('0x2e')]=_['map'](_0x418ea0,_0x0e03('0x27'));_0x170e63['query']=_[_0x0e03('0x2f')](_0x114ed8[_0x0e03('0x30')]);_0x170e63['filters']=_[_0x0e03('0x31')](_0x170e63[_0x0e03('0x2e')],_0x170e63[_0x0e03('0x30')]);_0x170e63[_0x0e03('0x32')]=_['concat'](_0x170e63[_0x0e03('0x32')],['$and',_0x0e03('0x33'),_0x0e03('0x34'),'$gte',_0x0e03('0x35'),'$lte',_0x0e03('0x36'),_0x0e03('0x37'),_0x0e03('0x38'),'$between',_0x0e03('0x39'),'$in',_0x0e03('0x3a'),'$like',_0x0e03('0x3b'),_0x0e03('0x3c'),_0x0e03('0x3d'),_0x0e03('0x3e'),_0x0e03('0x3f'),_0x0e03('0x40'),_0x0e03('0x41'),_0x0e03('0x42')]);_0x53538f[_0x0e03('0x43')]=_[_0x0e03('0x31')](_0x170e63[_0x0e03('0x2e')],qs[_0x0e03('0x44')](_0x114ed8[_0x0e03('0x30')]['fields']));_0x53538f[_0x0e03('0x43')]=_0x53538f[_0x0e03('0x43')][_0x0e03('0x45')]?_0x53538f[_0x0e03('0x43')]:_0x170e63[_0x0e03('0x2e')];if(!_0x114ed8[_0x0e03('0x30')][_0x0e03('0x46')](_0x0e03('0x47'))){_0x53538f['limit']=qs['limit'](_0x114ed8['query'][_0x0e03('0x1d')]);_0x53538f['offset']=qs[_0x0e03('0x1b')](_0x114ed8[_0x0e03('0x30')][_0x0e03('0x1b')]);}_0x53538f[_0x0e03('0x48')]=qs[_0x0e03('0x49')](_0x114ed8[_0x0e03('0x30')][_0x0e03('0x49')]);_0x53538f[_0x0e03('0x4a')]=qs['filters'](_[_0x0e03('0x4b')](_0x114ed8['query'],_0x170e63[_0x0e03('0x32')]),_0x418ea0);if(_0x114ed8[_0x0e03('0x30')][_0x0e03('0x4c')]){_0x53538f['where']=_['merge'](_0x53538f[_0x0e03('0x4a')],{'$or':_[_0x0e03('0x2a')](_0x418ea0,function(_0x4fdb00){if(_0x4fdb00[_0x0e03('0x2c')]!==_0x0e03('0x4d')){var _0x15a0fb={};_0x15a0fb[_0x4fdb00[_0x0e03('0x27')]]={'$like':'%'+_0x114ed8[_0x0e03('0x30')]['filter']+'%'};return _0x15a0fb;}})});}_0x53538f=_[_0x0e03('0x4e')]({},_0x53538f,_0x114ed8[_0x0e03('0x4f')]);var _0x5933a0={'where':_0x53538f['where']};return db[_0x0e03('0x50')][_0x0e03('0x1e')](_0x5933a0)[_0x0e03('0x23')](function(_0x4b7b64){_0x49a72e['count']=_0x4b7b64;if(_0x114ed8[_0x0e03('0x30')][_0x0e03('0x51')]){_0x53538f[_0x0e03('0x52')]=[{'all':!![]}];}return db[_0x0e03('0x50')][_0x0e03('0x53')](_0x53538f);})['then'](function(_0x4b5c50){_0x49a72e[_0x0e03('0x54')]=_0x4b5c50;return _0x49a72e;})[_0x0e03('0x23')](respondWithFilteredResult(_0x1a56b4,_0x53538f))[_0x0e03('0x55')](handleError(_0x1a56b4,null));};exports[_0x0e03('0x56')]=function(_0x3dadeb,_0x325230){var _0xa6126={'raw':!![],'where':{'id':_0x3dadeb[_0x0e03('0x57')]['id']}},_0x3bc509={};_0x3bc509[_0x0e03('0x2e')]=_[_0x0e03('0x2f')](db[_0x0e03('0x50')]['rawAttributes']);_0x3bc509['query']=_['keys'](_0x3dadeb[_0x0e03('0x30')]);_0x3bc509[_0x0e03('0x32')]=_[_0x0e03('0x31')](_0x3bc509[_0x0e03('0x2e')],_0x3bc509['query']);_0xa6126[_0x0e03('0x43')]=_[_0x0e03('0x31')](_0x3bc509['model'],qs['fields'](_0x3dadeb[_0x0e03('0x30')][_0x0e03('0x44')]));_0xa6126['attributes']=_0xa6126['attributes']['length']?_0xa6126[_0x0e03('0x43')]:_0x3bc509[_0x0e03('0x2e')];if(_0x3dadeb['query']['includeAll']){_0xa6126[_0x0e03('0x52')]=[{'all':!![]}];}_0xa6126=_[_0x0e03('0x4e')]({},_0xa6126,_0x3dadeb[_0x0e03('0x4f')]);return db[_0x0e03('0x50')]['find'](_0xa6126)[_0x0e03('0x23')](handleEntityNotFound(_0x325230,null))[_0x0e03('0x23')](respondWithResult(_0x325230,null))[_0x0e03('0x55')](handleError(_0x325230,null));};exports[_0x0e03('0x58')]=function(_0x3024c1,_0x41bb93){return db[_0x0e03('0x50')][_0x0e03('0x58')](_0x3024c1[_0x0e03('0x59')],{})[_0x0e03('0x23')](respondWithResult(_0x41bb93,0xc9))[_0x0e03('0x55')](handleError(_0x41bb93,null));};exports[_0x0e03('0x22')]=function(_0x1ef4ee,_0x246145){if(_0x1ef4ee[_0x0e03('0x59')]['id']){delete _0x1ef4ee[_0x0e03('0x59')]['id'];}return db[_0x0e03('0x50')][_0x0e03('0x5a')]({'where':{'id':_0x1ef4ee[_0x0e03('0x57')]['id']}})[_0x0e03('0x23')](handleEntityNotFound(_0x246145,null))[_0x0e03('0x23')](saveUpdates(_0x1ef4ee[_0x0e03('0x59')],null))[_0x0e03('0x23')](respondWithResult(_0x246145,null))['catch'](handleError(_0x246145,null));};exports['describe']=function(_0x550740,_0x241f50){return db[_0x0e03('0x50')][_0x0e03('0x5b')]()['then'](respondWithResult(_0x241f50,null))['catch'](handleError(_0x241f50,null));};exports['destroy']=function(_0x3323bd,_0x56e90f){var _0x3f2262;return db[_0x0e03('0x50')][_0x0e03('0x5a')]({'where':{'id':_0x3323bd[_0x0e03('0x57')]['id']}})[_0x0e03('0x23')](handleEntityNotFound(_0x56e90f,null))[_0x0e03('0x23')](function(_0x38dd88){if(_0x38dd88){return _0x38dd88['destroy']()[_0x0e03('0x23')](function(_0x52a720){return _0x52a720;});}})[_0x0e03('0x23')](function(_0x4ce51a){_0x3f2262=_0x4ce51a;if(_0x4ce51a){if(_0x4ce51a[_0x0e03('0x5c')]||_0x4ce51a[_0x0e03('0x5d')]){return db[_0x4ce51a[_0x0e03('0x5c')]?_0x0e03('0x5e'):_0x0e03('0x5f')]['find']({'where':{'id':_0x4ce51a[_0x0e03('0x5c')]?_0x4ce51a[_0x0e03('0x5c')]:_0x4ce51a['CampaignId']},'attributes':['id',_0x0e03('0x27')],'raw':!![]});}}})[_0x0e03('0x23')](function(_0x18e9aa){var _0x199911={};if(_0x18e9aa){_[_0x0e03('0x4e')](_0x199911,_['omit'](_0x3f2262[_0x0e03('0x60')],[_0x0e03('0x61'),_0x0e03('0x62'),'id']));_0x199911['state']=0x15;_0x199911['statedesc']=_0x0e03('0x63');_0x199911[_0x0e03('0x64')]=_0x18e9aa['name'];_0x199911[_0x0e03('0x65')]=_0x3323bd[_0x0e03('0x66')][_0x0e03('0x27')];_0x199911['UserId']=_0x3323bd['user']['id'];_0x199911['deleted']=!![];_0x199911[_0x0e03('0x67')]=moment()[_0x0e03('0x68')](_0x0e03('0x69'));_0x199911[_0x0e03('0x6a')]=_0x3f2262[_0x0e03('0x6b')];_0x199911['campaigntype']=_0x3f2262[_0x0e03('0x5c')]?_0x0e03('0x6c'):'ivr';return db['CmContact'][_0x0e03('0x5a')]({'where':{'id':_0x199911[_0x0e03('0x6d')]},'attributes':[_0x0e03('0x6e'),_0x0e03('0x6f')]})[_0x0e03('0x23')](function(_0x1bbd34){if(!_['isNil'](_0x56e90f)&&!_[_0x0e03('0x70')](_0x1bbd34[_0x0e03('0x6e')])){_0x199911[_0x0e03('0x71')]=_0x1bbd34[_0x0e03('0x6e')];if(!_[_0x0e03('0x70')](_0x1bbd34[_0x0e03('0x6f')])){_0x199911[_0x0e03('0x71')]+='\x20'+_0x1bbd34[_0x0e03('0x6f')];}}})['finally'](function(){return db[_0x0e03('0x72')][_0x0e03('0x58')](_0x199911);});}})[_0x0e03('0x23')](function(){return _0x56e90f['status'](0xcc)[_0x0e03('0x19')]();})['catch'](handleError(_0x56e90f,null));};exports[_0x0e03('0x73')]=function(_0x3d9526,_0x3c0e5d,_0x3d5b30){var _0x3b2572=[];return db['CmContact'][_0x0e03('0x5b')]()[_0x0e03('0x23')](function(_0x18997e){_0x3b2572=_['keys'](_0x18997e);return _0x3d9526['user'][_0x0e03('0x74')]({'where':{'type':_0x0e03('0x75'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0x0e03('0x23')](function(_0x385552){if(_0x385552&&_0x385552[_0x0e03('0x45')]){return db['sequelize'][_0x0e03('0x76')](function(_0x2ff3b6){var _0x4dbb02={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x385552,'id')},'$or':[{'UserId':null},{'UserId':_0x3d9526[_0x0e03('0x66')]['id']}]};var _0x3f797d=[];if(_0x3d9526['body'][_0x0e03('0x77')]&&_0x3d9526[_0x0e03('0x59')][_0x0e03('0x77')]===_0x0e03('0x78')){if(!_[_0x0e03('0x79')](_0x3d9526['body']['hopperIds'])){_0x4dbb02['id']={'$in':_0x3d9526[_0x0e03('0x59')][_0x0e03('0x7a')]};}_0x3f797d=[[_0x0e03('0x7b'),_0x0e03('0x7c')],[_0x0e03('0x7d'),_0x385552[0x0][_0x0e03('0x7e')]===_0x0e03('0x7c')?_0x0e03('0x7f'):_0x0e03('0x7c')],db[_0x0e03('0x80')][_0x0e03('0x81')](_0x0e03('0x82')),['id',_0x0e03('0x7f')]];}else{if(!_[_0x0e03('0x79')](_0x3d9526['body'][_0x0e03('0x7a')])){_0x4dbb02['id']={'$notIn':_0x3d9526[_0x0e03('0x59')]['hopperIds']};}_0x3f797d=[['priority',_0x0e03('0x7f')],[_0x0e03('0x7d'),_0x385552[0x0][_0x0e03('0x7e')]],db[_0x0e03('0x80')][_0x0e03('0x81')](_0x0e03('0x83')),['id',_0x0e03('0x7c')]];}return db['CmHopper']['findOne']({'attributes':['id',_0x0e03('0x84')],'where':_0x4dbb02,'order':_0x3f797d,'transaction':_0x2ff3b6,'lock':_0x2ff3b6[_0x0e03('0x85')]['UPDATE'],'include':[{'model':db['CmContact'],'as':_0x0e03('0x86'),'attributes':_0x3b2572,'include':[{'model':db[_0x0e03('0x87')],'as':_0x0e03('0x88'),'attributes':['id','name']}]},{'model':db[_0x0e03('0x89')],'as':_0x0e03('0x8a'),'attributes':['id',_0x0e03('0x27')]},{'model':db[_0x0e03('0x5e')],'as':_0x0e03('0x8b'),'attributes':['id',_0x0e03('0x27'),_0x0e03('0x8c')]}]})['then'](function(_0x34e659){if(_0x34e659){return _0x34e659[_0x0e03('0x22')]({'UserId':_0x3d9526[_0x0e03('0x66')]['id']},{'transaction':_0x2ff3b6});}});});}})['then'](handleEntityNotFound(_0x3c0e5d,null))[_0x0e03('0x23')](respondWithResult(_0x3c0e5d,null))[_0x0e03('0x55')](handleError(_0x3c0e5d,null));};exports['getOpenContacts']=function(_0x504ece,_0x3d63f5,_0x36d36d){return _0x504ece[_0x0e03('0x66')][_0x0e03('0x74')]({'where':{'type':_0x0e03('0x75'),'dialActive':!![],'dialMethod':_0x0e03('0x8d')},'attributes':['id'],'raw':!![]})[_0x0e03('0x23')](function(_0x220358){if(_0x220358&&_0x220358[_0x0e03('0x45')]){return db['CmHopper'][_0x0e03('0x1e')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x0e03('0x69'))},'VoiceQueueId':{'$in':_[_0x0e03('0x2a')](_0x220358,'id')},'$or':[{'UserId':null},{'UserId':_0x504ece['user']['id']}]}});}return 0x0;})[_0x0e03('0x23')](function(_0x20e1ec){if(!_[_0x0e03('0x70')](_0x20e1ec)&&_[_0x0e03('0x8e')](_0x20e1ec)){return _0x3d63f5[_0x0e03('0x18')](0xc8)[_0x0e03('0x1a')]({'contacts':_0x20e1ec});}else{logger[_0x0e03('0x25')](_0x0e03('0x8f'),_0x0e03('0x90'),0x194,'entity\x20not\x20found');_0x3d63f5[_0x0e03('0x17')](0x194);}})[_0x0e03('0x55')](handleError(_0x3d63f5,null));};
\ No newline at end of file
index bb26c4c..139698e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['util','../../config/logger','api','moment','path','rimraf','../../config/environment','define','cm_hopper','scheduledat','phone','priority','lodash'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0xabce,0x103));var _0xeabc=function(_0x54d4a8,_0x585a59){_0x54d4a8=_0x54d4a8-0x0;var _0x3b321b=_0xabce[_0x54d4a8];return _0x3b321b;};'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('./cmHopper.attributes');module['exports']=function(_0x1b07a8,_0x52a4d7){return _0x1b07a8[_0xeabc('0x8')]('CmHopper',attributes,{'tableName':_0xeabc('0x9'),'paranoid':![],'indexes':[{'name':_0xeabc('0xa'),'fields':[_0xeabc('0xa')]},{'name':'phone','fields':[_0xeabc('0xb')]},{'name':_0xeabc('0xc'),'fields':[_0xeabc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['define','CmHopper','cm_hopper','phone','priority','lodash','util','../../config/logger','api','moment','bluebird','../../config/environment','./cmHopper.attributes','exports'];(function(_0x4f7de1,_0x4345bf){var _0x12b6bc=function(_0x557e8d){while(--_0x557e8d){_0x4f7de1['push'](_0x4f7de1['shift']());}};_0x12b6bc(++_0x4345bf);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xc4aa[_0x1d1779];return _0x2377e9;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':['scheduledat']},{'name':_0xac4a('0xc'),'fields':[_0xac4a('0xc')]},{'name':_0xac4a('0xd'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
index 45fd0ed..d908a37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x702d=['keys','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','error','message','result','catch','findAll','options','raw','where','attributes','include','map','model','GetCmHopper','debug','stringify','find','ShowCmHopper','CreateCmHopper','CmHopper','create','body','UpdateCmHopper','limit','DestroyCmHopper','destroy','CmContact','describe','sequelize','LOCK','UPDATE','Contact','User','Agent','name','length','UserId','push','update','includes','all','GetContactDialer','MoveContactManagedDialer','transaction','CmHopperFinal','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','CountReScheduled','order','GetContactRecallMe','GetCmHopperPreview'];(function(_0x273b36,_0x18be49){var _0x374f7c=function(_0x2fb75e){while(--_0x2fb75e){_0x273b36['push'](_0x273b36['shift']());}};_0x374f7c(++_0x18be49);}(_0x702d,0xdf));var _0xd702=function(_0x3bcedd,_0x29fd1f){_0x3bcedd=_0x3bcedd-0x0;var _0x5560a0=_0x702d[_0x3bcedd];return _0x5560a0;};'use strict';var _=require(_0xd702('0x0'));var util=require(_0xd702('0x1'));var moment=require(_0xd702('0x2'));var BPromise=require(_0xd702('0x3'));var rs=require(_0xd702('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd702('0x5'))['db'];var utils=require(_0xd702('0x6'));var logger=require(_0xd702('0x7'))('rpc');var config=require(_0xd702('0x8'));var jayson=require(_0xd702('0x9'));var client=jayson[_0xd702('0xa')][_0xd702('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x168f98,_0x3f7f8e,_0x5e57ff){return new BPromise(function(_0x4536b9,_0x508c87){return client[_0xd702('0xc')](_0x168f98,_0x5e57ff)[_0xd702('0xd')](function(_0x1a9cb6){logger[_0xd702('0xe')](_0xd702('0xf'),_0x3f7f8e,_0xd702('0x10'));logger['debug']('CmHopper,\x20%s,\x20%s,\x20%s',_0x3f7f8e,_0xd702('0x10'),JSON['stringify'](_0x1a9cb6));if(_0x1a9cb6['error']){if(_0x1a9cb6[_0xd702('0x11')]['code']===0x1f4){logger['error'](_0xd702('0xf'),_0x3f7f8e,_0x1a9cb6[_0xd702('0x11')]['message']);return _0x508c87(_0x1a9cb6[_0xd702('0x11')]['message']);}logger['error'](_0xd702('0xf'),_0x3f7f8e,_0x1a9cb6[_0xd702('0x11')][_0xd702('0x12')]);return _0x4536b9(_0x1a9cb6[_0xd702('0x11')]['message']);}else{logger[_0xd702('0xe')](_0xd702('0xf'),_0x3f7f8e,_0xd702('0x10'));_0x4536b9(_0x1a9cb6[_0xd702('0x13')][_0xd702('0x12')]);}})[_0xd702('0x14')](function(_0x4ea71a){logger[_0xd702('0x11')](_0xd702('0xf'),_0x3f7f8e,_0x4ea71a);_0x508c87(_0x4ea71a);});});}exports['GetCmHopper']=function(_0xbf9ac3){var _0x26bb14=this;return new Promise(function(_0x26102e,_0x5dab40){return db['CmHopper'][_0xd702('0x15')]({'raw':_0xbf9ac3[_0xd702('0x16')]?_0xbf9ac3[_0xd702('0x16')][_0xd702('0x17')]===undefined?!![]:![]:!![],'where':_0xbf9ac3['options']?_0xbf9ac3['options'][_0xd702('0x18')]||null:null,'attributes':_0xbf9ac3['options']?_0xbf9ac3['options'][_0xd702('0x19')]||null:null,'limit':_0xbf9ac3[_0xd702('0x16')]?_0xbf9ac3[_0xd702('0x16')]['limit']||null:null,'include':_0xbf9ac3[_0xd702('0x16')]?_0xbf9ac3['options'][_0xd702('0x1a')]?_[_0xd702('0x1b')](_0xbf9ac3[_0xd702('0x16')][_0xd702('0x1a')],function(_0x1be953){return{'model':db[_0x1be953[_0xd702('0x1c')]],'as':_0x1be953['as'],'attributes':_0x1be953[_0xd702('0x19')],'include':_0x1be953[_0xd702('0x1a')]?_[_0xd702('0x1b')](_0x1be953[_0xd702('0x1a')],function(_0x38187c){return{'model':db[_0x38187c[_0xd702('0x1c')]],'as':_0x38187c['as'],'attributes':_0x38187c[_0xd702('0x19')],'include':_0x38187c[_0xd702('0x1a')]?_[_0xd702('0x1b')](_0x38187c['include'],function(_0x22f1cf){return{'model':db[_0x22f1cf[_0xd702('0x1c')]],'as':_0x22f1cf['as'],'attributes':_0x22f1cf['attributes']};}):[]};}):[]};}):[]:[]})[_0xd702('0xd')](function(_0x210217){logger[_0xd702('0xe')](_0xd702('0x1d'),_0xbf9ac3);logger[_0xd702('0x1e')](_0xd702('0x1d'),_0xbf9ac3,JSON[_0xd702('0x1f')](_0x210217));_0x26102e(_0x210217);})[_0xd702('0x14')](function(_0x2a9d64){logger[_0xd702('0x11')](_0xd702('0x1d'),_0x2a9d64[_0xd702('0x12')],_0xbf9ac3);_0x5dab40(_0x26bb14[_0xd702('0x11')](0x1f4,_0x2a9d64[_0xd702('0x12')]));});});};exports['ShowCmHopper']=function(_0x2387e4){var _0x36e3e2=this;return new Promise(function(_0x32738b,_0x1d67bc){return db['CmHopper'][_0xd702('0x20')]({'raw':_0x2387e4[_0xd702('0x16')]?_0x2387e4[_0xd702('0x16')][_0xd702('0x17')]===undefined?!![]:![]:!![],'where':_0x2387e4[_0xd702('0x16')]?_0x2387e4[_0xd702('0x16')][_0xd702('0x18')]||null:null,'attributes':_0x2387e4['options']?_0x2387e4[_0xd702('0x16')][_0xd702('0x19')]||null:null,'include':_0x2387e4[_0xd702('0x16')]?_0x2387e4[_0xd702('0x16')]['include']?_[_0xd702('0x1b')](_0x2387e4[_0xd702('0x16')][_0xd702('0x1a')],function(_0x3a81d1){return{'model':db[_0x3a81d1['model']],'as':_0x3a81d1['as'],'attributes':_0x3a81d1[_0xd702('0x19')],'include':_0x3a81d1[_0xd702('0x1a')]?_['map'](_0x3a81d1[_0xd702('0x1a')],function(_0xffa346){return{'model':db[_0xffa346['model']],'as':_0xffa346['as'],'attributes':_0xffa346[_0xd702('0x19')],'include':_0xffa346['include']?_[_0xd702('0x1b')](_0xffa346['include'],function(_0x41f550){return{'model':db[_0x41f550[_0xd702('0x1c')]],'as':_0x41f550['as'],'attributes':_0x41f550['attributes']};}):[]};}):[]};}):[]:[]})[_0xd702('0xd')](function(_0x4ef50d){logger['info'](_0xd702('0x21'),_0x2387e4);logger['debug'](_0xd702('0x21'),_0x2387e4,JSON[_0xd702('0x1f')](_0x4ef50d));_0x32738b(_0x4ef50d);})[_0xd702('0x14')](function(_0x1fbccc){logger[_0xd702('0x11')]('ShowCmHopper',_0x1fbccc[_0xd702('0x12')],_0x2387e4);_0x1d67bc(_0x36e3e2[_0xd702('0x11')](0x1f4,_0x1fbccc[_0xd702('0x12')]));});});};exports[_0xd702('0x22')]=function(_0xd9b7b5){var _0x1fdffa=this;return new Promise(function(_0x4a6501,_0x421b2e){return db[_0xd702('0x23')][_0xd702('0x24')](_0xd9b7b5[_0xd702('0x25')],{'raw':_0xd9b7b5[_0xd702('0x16')]?_0xd9b7b5[_0xd702('0x16')][_0xd702('0x17')]===undefined?!![]:![]:!![]})[_0xd702('0xd')](function(_0x48defb){logger['info'](_0xd702('0x22'),_0xd9b7b5);logger[_0xd702('0x1e')](_0xd702('0x22'),_0xd9b7b5,JSON[_0xd702('0x1f')](_0x48defb));_0x4a6501(_0x48defb);})[_0xd702('0x14')](function(_0x32e823){logger['error'](_0xd702('0x22'),_0x32e823[_0xd702('0x12')],_0xd9b7b5);_0x421b2e(_0x1fdffa[_0xd702('0x11')](0x1f4,_0x32e823[_0xd702('0x12')]));});});};exports[_0xd702('0x26')]=function(_0x2a6230){var _0x6420d8=this;return new Promise(function(_0x22cb91,_0x48d0fa){return db['CmHopper']['update'](_0x2a6230['body'],{'raw':_0x2a6230['options']?_0x2a6230['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a6230[_0xd702('0x16')]?_0x2a6230[_0xd702('0x16')][_0xd702('0x18')]||null:null,'attributes':_0x2a6230[_0xd702('0x16')]?_0x2a6230[_0xd702('0x16')][_0xd702('0x19')]||null:null,'limit':_0x2a6230[_0xd702('0x16')]?_0x2a6230['options'][_0xd702('0x27')]||null:null})[_0xd702('0xd')](function(_0x5f411f){logger[_0xd702('0xe')](_0xd702('0x26'),_0x2a6230);logger[_0xd702('0x1e')](_0xd702('0x26'),_0x2a6230,JSON[_0xd702('0x1f')](_0x5f411f));_0x22cb91(_0x5f411f);})[_0xd702('0x14')](function(_0x2f023c){logger['error']('UpdateCmHopper',_0x2f023c[_0xd702('0x12')],_0x2a6230);_0x48d0fa(_0x6420d8[_0xd702('0x11')](0x1f4,_0x2f023c[_0xd702('0x12')]));});});};exports[_0xd702('0x28')]=function(_0x140742){var _0x16952f=this;return new Promise(function(_0x1ff4d9,_0x17aa1b){return db[_0xd702('0x23')][_0xd702('0x29')]({'where':_0x140742[_0xd702('0x16')]?_0x140742[_0xd702('0x16')][_0xd702('0x18')]||null:null})[_0xd702('0xd')](function(_0x54e5bc){logger[_0xd702('0xe')]('DestroyCmHopper',_0x140742);logger[_0xd702('0x1e')](_0xd702('0x28'),_0x140742,JSON[_0xd702('0x1f')](_0x54e5bc));_0x1ff4d9(_0x54e5bc);})[_0xd702('0x14')](function(_0x4f7dc2){logger[_0xd702('0x11')](_0xd702('0x28'),_0x4f7dc2[_0xd702('0x12')],_0x140742);_0x17aa1b(_0x16952f['error'](0x1f4,_0x4f7dc2[_0xd702('0x12')]));});});};exports['GetContactDialer']=function(_0x2d7b83){var _0x275931=this;return new Promise(function(_0x4fa436,_0x380822){return db[_0xd702('0x2a')][_0xd702('0x2b')]()[_0xd702('0xd')](function(_0x6abd4e){return db[_0xd702('0x2c')]['transaction'](function(_0x49e254){return db[_0xd702('0x23')]['findAll']({'where':_0x2d7b83[_0xd702('0x16')]?_0x2d7b83[_0xd702('0x16')][_0xd702('0x18')]||null:null,'attributes':_0x2d7b83[_0xd702('0x16')]?_0x2d7b83[_0xd702('0x16')][_0xd702('0x19')]||null:null,'limit':_0x2d7b83[_0xd702('0x16')]?_0x2d7b83[_0xd702('0x16')][_0xd702('0x27')]||null:null,'order':_0x2d7b83[_0xd702('0x16')]?_0x2d7b83[_0xd702('0x16')]['order']||null:null,'transaction':_0x49e254,'lock':_0x49e254[_0xd702('0x2d')][_0xd702('0x2e')],'include':[{'model':db[_0xd702('0x2a')],'as':_0xd702('0x2f'),'attributes':_['keys'](_0x6abd4e)},{'model':db[_0xd702('0x30')],'as':_0xd702('0x31'),'attributes':['id',_0xd702('0x32'),'voicePause']}]})[_0xd702('0xd')](function(_0x288ab6){var _0x18c080=[];var _0x4b74ad=[];for(var _0x4fc006=0x0;_0x4fc006<_0x288ab6[_0xd702('0x33')];_0x4fc006+=0x1){var _0x37b4e7=_0x288ab6[_0x4fc006][_0xd702('0x34')];if(_0x37b4e7===null){_0x18c080[_0xd702('0x35')](_0x288ab6[_0x4fc006][_0xd702('0x36')](_0x2d7b83[_0xd702('0x25')],{'transaction':_0x49e254}));}else if(!_0x4b74ad[_0xd702('0x37')](_0x37b4e7)){_0x4b74ad['push'](_0x37b4e7);_0x18c080['push'](_0x288ab6[_0x4fc006][_0xd702('0x36')](_0x2d7b83[_0xd702('0x25')],{'transaction':_0x49e254}));}}return BPromise[_0xd702('0x38')](_0x18c080);});})[_0xd702('0xd')](function(_0x53cb99){logger['info']('GetContactDialer',_0x2d7b83);logger['debug'](_0xd702('0x39'),_0x2d7b83,JSON[_0xd702('0x1f')](_0x53cb99));_0x4fa436(_0x53cb99);})[_0xd702('0x14')](function(_0x1f958e){logger[_0xd702('0x11')](_0xd702('0x39'),_0x1f958e[_0xd702('0x12')],_0x2d7b83);_0x380822(_0x275931[_0xd702('0x11')](0x1f4,_0x1f958e['message']));});});});};exports[_0xd702('0x3a')]=function(_0x4aedd4){var _0x747df3=this;return new Promise(function(_0x407125,_0x37de56){return db[_0xd702('0x2c')][_0xd702('0x3b')](function(_0x1b35d1){return db[_0xd702('0x3c')][_0xd702('0x24')](_0x4aedd4[_0xd702('0x25')],{'raw':_0x4aedd4[_0xd702('0x16')]?_0x4aedd4[_0xd702('0x16')]['raw']===undefined?!![]:![]:!![],'transaction':_0x1b35d1})[_0xd702('0xd')](function(){return db[_0xd702('0x23')][_0xd702('0x29')]({'where':_0x4aedd4[_0xd702('0x16')]?_0x4aedd4[_0xd702('0x16')][_0xd702('0x18')]||null:null,'transaction':_0x1b35d1});});})[_0xd702('0xd')](function(_0x65aab6){logger[_0xd702('0xe')](_0xd702('0x3a'),_0x4aedd4);logger[_0xd702('0x1e')]('MoveContactManagedDialer',_0x4aedd4,JSON[_0xd702('0x1f')](_0x65aab6));_0x407125(_0x65aab6);})[_0xd702('0x14')](function(_0x30f77e){logger[_0xd702('0x11')](_0xd702('0x3a'),_0x30f77e[_0xd702('0x12')],_0x4aedd4);_0x37de56(_0x747df3[_0xd702('0x11')](0x1f4,_0x30f77e[_0xd702('0x12')]));});});};exports['CountReScheduled']=function(_0x583df6){var _0x30dcff=this;return new Promise(function(_0x4ee49d,_0x4409f0){return db[_0xd702('0x23')][_0xd702('0x15')]({'raw':_0x583df6['options']?_0x583df6[_0xd702('0x16')][_0xd702('0x17')]===undefined?!![]:![]:!![],'where':_0x583df6['options']?_0x583df6['options']['where']||null:null,'attributes':[[db[_0xd702('0x2c')]['fn'](_0xd702('0x3d'),db[_0xd702('0x2c')]['fn']('IF',db[_0xd702('0x2c')][_0xd702('0x3e')](_0xd702('0x3f')+util[_0xd702('0x40')](_0xd702('0x41'),moment()['format'](_0xd702('0x42')))+_0xd702('0x43')))),_0xd702('0x44')]]})['then'](function(_0x181f92){logger['info']('CountReScheduled',_0x583df6);logger[_0xd702('0x1e')](_0xd702('0x45'),_0x583df6,JSON[_0xd702('0x1f')](_0x181f92));_0x4ee49d(_0x181f92);})[_0xd702('0x14')](function(_0x54a792){logger[_0xd702('0x11')](_0xd702('0x45'),_0x54a792[_0xd702('0x12')],_0x583df6);_0x4409f0(_0x30dcff['error'](0x1f4,_0x54a792[_0xd702('0x12')]));});});};exports['GetContactRecallMe']=function(_0x226e9a){var _0x4dc1eb=this;return new Promise(function(_0x124558,_0x43f96){return db[_0xd702('0x2a')][_0xd702('0x2b')]()[_0xd702('0xd')](function(_0x46b7b7){return db['sequelize']['transaction'](function(_0x162018){return db[_0xd702('0x23')][_0xd702('0x15')]({'where':_0x226e9a[_0xd702('0x16')]?_0x226e9a[_0xd702('0x16')][_0xd702('0x18')]||null:null,'attributes':_0x226e9a['options']?_0x226e9a[_0xd702('0x16')][_0xd702('0x19')]||null:null,'limit':0x1,'order':_0x226e9a[_0xd702('0x16')]?_0x226e9a['options'][_0xd702('0x46')]||null:null,'group':db[_0xd702('0x23')]['UserId'],'transaction':_0x162018,'lock':_0x162018[_0xd702('0x2d')]['UPDATE'],'include':_0x226e9a[_0xd702('0x16')]?_0x226e9a['options'][_0xd702('0x1a')]?_['map'](_0x226e9a['options']['include'],function(_0x3632e9){return{'model':db[_0x3632e9[_0xd702('0x1c')]],'as':_0x3632e9['as'],'attributes':_0x3632e9[_0xd702('0x19')],'include':_0x3632e9['include']?_[_0xd702('0x1b')](_0x3632e9[_0xd702('0x1a')],function(_0x574631){return{'model':db[_0x574631[_0xd702('0x1c')]],'as':_0x574631['as'],'attributes':_0x574631[_0xd702('0x19')],'include':_0x574631[_0xd702('0x1a')]?_[_0xd702('0x1b')](_0x574631[_0xd702('0x1a')],function(_0x1c583f){return{'model':db[_0x1c583f[_0xd702('0x1c')]],'as':_0x1c583f['as'],'attributes':_0x1c583f[_0xd702('0x19')]};}):[]};}):[]};}):[]:[]})[_0xd702('0xd')](function(_0x57cad9){var _0x382959=[];for(var _0x5c7f82=0x0;_0x5c7f82<_0x57cad9[_0xd702('0x33')];_0x5c7f82+=0x1){_0x382959['push'](_0x57cad9[_0x5c7f82][_0xd702('0x36')](_0x226e9a['body'],{'transaction':_0x162018}));}return BPromise[_0xd702('0x38')](_0x382959);});})['then'](function(_0x486148){logger[_0xd702('0xe')](_0xd702('0x47'),_0x226e9a);logger[_0xd702('0x1e')](_0xd702('0x47'),_0x226e9a,JSON[_0xd702('0x1f')](_0x486148));_0x124558(_0x486148);})[_0xd702('0x14')](function(_0x481e42){logger[_0xd702('0x11')](_0xd702('0x47'),_0x481e42[_0xd702('0x12')],_0x226e9a);_0x43f96(_0x4dc1eb['error'](0x1f4,_0x481e42['message']));});});});};exports[_0xd702('0x48')]=function(_0x7e5fb4){var _0x246e78=this;return new Promise(function(_0x130733,_0x259691){db[_0xd702('0x2a')][_0xd702('0x2b')]()['then'](function(_0x30459c){return db['CmHopper'][_0xd702('0x15')]({'raw':_0x7e5fb4[_0xd702('0x16')]?_0x7e5fb4[_0xd702('0x16')][_0xd702('0x17')]===undefined?!![]:![]:!![],'where':_0x7e5fb4['options']?_0x7e5fb4[_0xd702('0x16')][_0xd702('0x18')]||null:null,'attributes':_0x7e5fb4[_0xd702('0x16')]?_0x7e5fb4[_0xd702('0x16')][_0xd702('0x19')]||null:null,'limit':_0x7e5fb4[_0xd702('0x16')]?_0x7e5fb4['options'][_0xd702('0x27')]||null:null,'include':_0x7e5fb4[_0xd702('0x16')]?_0x7e5fb4[_0xd702('0x16')]['include']?_[_0xd702('0x1b')](_0x7e5fb4['options'][_0xd702('0x1a')],function(_0x1d7fa2){return{'model':db[_0x1d7fa2[_0xd702('0x1c')]],'as':_0x1d7fa2['as'],'attributes':_0x1d7fa2['as']===_0xd702('0x2f')?_[_0xd702('0x49')](_0x30459c):_0x1d7fa2[_0xd702('0x19')],'include':_0x1d7fa2[_0xd702('0x1a')]?_[_0xd702('0x1b')](_0x1d7fa2[_0xd702('0x1a')],function(_0x1332af){return{'model':db[_0x1332af[_0xd702('0x1c')]],'as':_0x1332af['as'],'attributes':_0x1332af['attributes'],'include':_0x1332af[_0xd702('0x1a')]?_[_0xd702('0x1b')](_0x1332af[_0xd702('0x1a')],function(_0x1f5df6){return{'model':db[_0x1f5df6[_0xd702('0x1c')]],'as':_0x1f5df6['as'],'attributes':_0x1f5df6[_0xd702('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x381343){logger[_0xd702('0xe')](_0xd702('0x1d'),_0x7e5fb4);logger[_0xd702('0x1e')]('GetCmHopper',_0x7e5fb4,JSON[_0xd702('0x1f')](_0x381343));_0x130733(_0x381343);})[_0xd702('0x14')](function(_0x33950b){logger['error'](_0xd702('0x1d'),_0x33950b[_0xd702('0x12')],_0x7e5fb4);_0x259691(_0x246e78[_0xd702('0x11')](0x1f4,_0x33950b[_0xd702('0x12')]));});});});};
\ No newline at end of file
+var _0xc848=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','request\x20sent','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmHopper,\x20%s,\x20%s','result','catch','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','limit','include','model','map','info','debug','ShowCmHopper','CreateCmHopper','create','body','update','UpdateCmHopper','destroy','DestroyCmHopper','GetContactDialer','CmContact','describe','transaction','UPDATE','Contact','keys','User','name','voicePause','length','push','includes','all','CmHopperFinal','MoveContactManagedDialer','CountReScheduled','sequelize','COUNT','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','order','UserId','LOCK','GetCmHopperPreview','lodash'];(function(_0x3459de,_0xbff40a){var _0x49bf85=function(_0x517501){while(--_0x517501){_0x3459de['push'](_0x3459de['shift']());}};_0x49bf85(++_0xbff40a);}(_0xc848,0xd4));var _0x8c84=function(_0x36be33,_0x3358e6){_0x36be33=_0x36be33-0x0;var _0x48c65e=_0xc848[_0x36be33];return _0x48c65e;};'use strict';var _=require(_0x8c84('0x0'));var util=require('util');var moment=require(_0x8c84('0x1'));var BPromise=require(_0x8c84('0x2'));var rs=require(_0x8c84('0x3'));var fs=require('fs');var Redis=require(_0x8c84('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8c84('0x5'));var logger=require(_0x8c84('0x6'))(_0x8c84('0x7'));var config=require(_0x8c84('0x8'));var jayson=require(_0x8c84('0x9'));var client=jayson[_0x8c84('0xa')][_0x8c84('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x145ff7,_0x21cdfb,_0x9be32c){return new BPromise(function(_0x197197,_0x5e7c3e){return client['request'](_0x145ff7,_0x9be32c)[_0x8c84('0xc')](function(_0x1139a9){logger['info']('CmHopper,\x20%s,\x20%s',_0x21cdfb,_0x8c84('0xd'));logger['debug'](_0x8c84('0xe'),_0x21cdfb,_0x8c84('0xd'),JSON[_0x8c84('0xf')](_0x1139a9));if(_0x1139a9['error']){if(_0x1139a9[_0x8c84('0x10')][_0x8c84('0x11')]===0x1f4){logger['error']('CmHopper,\x20%s,\x20%s',_0x21cdfb,_0x1139a9[_0x8c84('0x10')][_0x8c84('0x12')]);return _0x5e7c3e(_0x1139a9[_0x8c84('0x10')]['message']);}logger[_0x8c84('0x10')](_0x8c84('0x13'),_0x21cdfb,_0x1139a9[_0x8c84('0x10')][_0x8c84('0x12')]);return _0x197197(_0x1139a9[_0x8c84('0x10')][_0x8c84('0x12')]);}else{logger['info'](_0x8c84('0x13'),_0x21cdfb,'request\x20sent');_0x197197(_0x1139a9[_0x8c84('0x14')][_0x8c84('0x12')]);}})[_0x8c84('0x15')](function(_0x109001){logger[_0x8c84('0x10')](_0x8c84('0x13'),_0x21cdfb,_0x109001);_0x5e7c3e(_0x109001);});});}exports[_0x8c84('0x16')]=function(_0x564786){var _0x52623d=this;return new Promise(function(_0x506ba,_0x29407){return db[_0x8c84('0x17')][_0x8c84('0x18')]({'raw':_0x564786[_0x8c84('0x19')]?_0x564786[_0x8c84('0x19')][_0x8c84('0x1a')]===undefined?!![]:![]:!![],'where':_0x564786[_0x8c84('0x19')]?_0x564786[_0x8c84('0x19')][_0x8c84('0x1b')]||null:null,'attributes':_0x564786['options']?_0x564786[_0x8c84('0x19')][_0x8c84('0x1c')]||null:null,'limit':_0x564786[_0x8c84('0x19')]?_0x564786[_0x8c84('0x19')][_0x8c84('0x1d')]||null:null,'include':_0x564786[_0x8c84('0x19')]?_0x564786['options'][_0x8c84('0x1e')]?_['map'](_0x564786['options'][_0x8c84('0x1e')],function(_0x2c5ae3){return{'model':db[_0x2c5ae3[_0x8c84('0x1f')]],'as':_0x2c5ae3['as'],'attributes':_0x2c5ae3[_0x8c84('0x1c')],'include':_0x2c5ae3[_0x8c84('0x1e')]?_[_0x8c84('0x20')](_0x2c5ae3[_0x8c84('0x1e')],function(_0x19e19c){return{'model':db[_0x19e19c[_0x8c84('0x1f')]],'as':_0x19e19c['as'],'attributes':_0x19e19c[_0x8c84('0x1c')],'include':_0x19e19c['include']?_[_0x8c84('0x20')](_0x19e19c[_0x8c84('0x1e')],function(_0x3ea468){return{'model':db[_0x3ea468[_0x8c84('0x1f')]],'as':_0x3ea468['as'],'attributes':_0x3ea468[_0x8c84('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3051e0){logger[_0x8c84('0x21')](_0x8c84('0x16'),_0x564786);logger[_0x8c84('0x22')](_0x8c84('0x16'),_0x564786,JSON[_0x8c84('0xf')](_0x3051e0));_0x506ba(_0x3051e0);})[_0x8c84('0x15')](function(_0x15c4fd){logger[_0x8c84('0x10')](_0x8c84('0x16'),_0x15c4fd[_0x8c84('0x12')],_0x564786);_0x29407(_0x52623d[_0x8c84('0x10')](0x1f4,_0x15c4fd['message']));});});};exports['ShowCmHopper']=function(_0x2331d1){var _0x31893f=this;return new Promise(function(_0x45f7bb,_0x2dc54b){return db[_0x8c84('0x17')]['find']({'raw':_0x2331d1['options']?_0x2331d1['options'][_0x8c84('0x1a')]===undefined?!![]:![]:!![],'where':_0x2331d1[_0x8c84('0x19')]?_0x2331d1[_0x8c84('0x19')][_0x8c84('0x1b')]||null:null,'attributes':_0x2331d1[_0x8c84('0x19')]?_0x2331d1['options'][_0x8c84('0x1c')]||null:null,'include':_0x2331d1[_0x8c84('0x19')]?_0x2331d1['options'][_0x8c84('0x1e')]?_[_0x8c84('0x20')](_0x2331d1[_0x8c84('0x19')]['include'],function(_0x3733f3){return{'model':db[_0x3733f3[_0x8c84('0x1f')]],'as':_0x3733f3['as'],'attributes':_0x3733f3['attributes'],'include':_0x3733f3['include']?_[_0x8c84('0x20')](_0x3733f3['include'],function(_0x122cf6){return{'model':db[_0x122cf6['model']],'as':_0x122cf6['as'],'attributes':_0x122cf6[_0x8c84('0x1c')],'include':_0x122cf6[_0x8c84('0x1e')]?_[_0x8c84('0x20')](_0x122cf6['include'],function(_0x15757c){return{'model':db[_0x15757c['model']],'as':_0x15757c['as'],'attributes':_0x15757c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3bd5e0){logger[_0x8c84('0x21')](_0x8c84('0x23'),_0x2331d1);logger[_0x8c84('0x22')]('ShowCmHopper',_0x2331d1,JSON[_0x8c84('0xf')](_0x3bd5e0));_0x45f7bb(_0x3bd5e0);})[_0x8c84('0x15')](function(_0x6c24b4){logger[_0x8c84('0x10')](_0x8c84('0x23'),_0x6c24b4[_0x8c84('0x12')],_0x2331d1);_0x2dc54b(_0x31893f[_0x8c84('0x10')](0x1f4,_0x6c24b4['message']));});});};exports[_0x8c84('0x24')]=function(_0x4d4e9f){var _0x1d941c=this;return new Promise(function(_0x478e94,_0x4e9122){return db['CmHopper'][_0x8c84('0x25')](_0x4d4e9f[_0x8c84('0x26')],{'raw':_0x4d4e9f[_0x8c84('0x19')]?_0x4d4e9f[_0x8c84('0x19')][_0x8c84('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x1d13c3){logger[_0x8c84('0x21')]('CreateCmHopper',_0x4d4e9f);logger['debug'](_0x8c84('0x24'),_0x4d4e9f,JSON['stringify'](_0x1d13c3));_0x478e94(_0x1d13c3);})['catch'](function(_0x57cc38){logger[_0x8c84('0x10')]('CreateCmHopper',_0x57cc38[_0x8c84('0x12')],_0x4d4e9f);_0x4e9122(_0x1d941c[_0x8c84('0x10')](0x1f4,_0x57cc38[_0x8c84('0x12')]));});});};exports['UpdateCmHopper']=function(_0x484cbe){var _0xe75b5e=this;return new Promise(function(_0x127155,_0x54f81d){return db['CmHopper'][_0x8c84('0x27')](_0x484cbe[_0x8c84('0x26')],{'raw':_0x484cbe['options']?_0x484cbe['options'][_0x8c84('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x484cbe[_0x8c84('0x19')]?_0x484cbe[_0x8c84('0x19')][_0x8c84('0x1b')]||null:null,'attributes':_0x484cbe['options']?_0x484cbe['options'][_0x8c84('0x1c')]||null:null,'limit':_0x484cbe[_0x8c84('0x19')]?_0x484cbe[_0x8c84('0x19')]['limit']||null:null})[_0x8c84('0xc')](function(_0x2e8abf){logger[_0x8c84('0x21')](_0x8c84('0x28'),_0x484cbe);logger[_0x8c84('0x22')](_0x8c84('0x28'),_0x484cbe,JSON[_0x8c84('0xf')](_0x2e8abf));_0x127155(_0x2e8abf);})[_0x8c84('0x15')](function(_0x5d18b5){logger[_0x8c84('0x10')](_0x8c84('0x28'),_0x5d18b5[_0x8c84('0x12')],_0x484cbe);_0x54f81d(_0xe75b5e['error'](0x1f4,_0x5d18b5['message']));});});};exports['DestroyCmHopper']=function(_0xfd5879){var _0x36d6a5=this;return new Promise(function(_0x454969,_0x21e390){return db[_0x8c84('0x17')][_0x8c84('0x29')]({'where':_0xfd5879[_0x8c84('0x19')]?_0xfd5879[_0x8c84('0x19')]['where']||null:null})[_0x8c84('0xc')](function(_0x599f12){logger[_0x8c84('0x21')](_0x8c84('0x2a'),_0xfd5879);logger[_0x8c84('0x22')](_0x8c84('0x2a'),_0xfd5879,JSON[_0x8c84('0xf')](_0x599f12));_0x454969(_0x599f12);})[_0x8c84('0x15')](function(_0x5edf6e){logger[_0x8c84('0x10')](_0x8c84('0x2a'),_0x5edf6e[_0x8c84('0x12')],_0xfd5879);_0x21e390(_0x36d6a5[_0x8c84('0x10')](0x1f4,_0x5edf6e[_0x8c84('0x12')]));});});};exports[_0x8c84('0x2b')]=function(_0x44daf8){var _0x510701=this;return new Promise(function(_0x49629d,_0x34df8c){return db[_0x8c84('0x2c')][_0x8c84('0x2d')]()[_0x8c84('0xc')](function(_0x2bc256){return db['sequelize'][_0x8c84('0x2e')](function(_0x253065){return db[_0x8c84('0x17')][_0x8c84('0x18')]({'where':_0x44daf8[_0x8c84('0x19')]?_0x44daf8[_0x8c84('0x19')][_0x8c84('0x1b')]||null:null,'attributes':_0x44daf8[_0x8c84('0x19')]?_0x44daf8[_0x8c84('0x19')][_0x8c84('0x1c')]||null:null,'limit':_0x44daf8['options']?_0x44daf8['options'][_0x8c84('0x1d')]||null:null,'order':_0x44daf8[_0x8c84('0x19')]?_0x44daf8[_0x8c84('0x19')]['order']||null:null,'transaction':_0x253065,'lock':_0x253065['LOCK'][_0x8c84('0x2f')],'include':[{'model':db[_0x8c84('0x2c')],'as':_0x8c84('0x30'),'attributes':_[_0x8c84('0x31')](_0x2bc256)},{'model':db[_0x8c84('0x32')],'as':'Agent','attributes':['id',_0x8c84('0x33'),_0x8c84('0x34')]}]})[_0x8c84('0xc')](function(_0x65116d){var _0x9d9aac=[];var _0x20abfc=[];for(var _0x3fb6fe=0x0;_0x3fb6fe<_0x65116d[_0x8c84('0x35')];_0x3fb6fe+=0x1){var _0x42179c=_0x65116d[_0x3fb6fe]['UserId'];if(_0x42179c===null){_0x9d9aac[_0x8c84('0x36')](_0x65116d[_0x3fb6fe]['update'](_0x44daf8['body'],{'transaction':_0x253065}));}else if(!_0x20abfc[_0x8c84('0x37')](_0x42179c)){_0x20abfc[_0x8c84('0x36')](_0x42179c);_0x9d9aac[_0x8c84('0x36')](_0x65116d[_0x3fb6fe][_0x8c84('0x27')](_0x44daf8[_0x8c84('0x26')],{'transaction':_0x253065}));}}return BPromise[_0x8c84('0x38')](_0x9d9aac);});})['then'](function(_0x1df074){logger[_0x8c84('0x21')]('GetContactDialer',_0x44daf8);logger['debug'](_0x8c84('0x2b'),_0x44daf8,JSON[_0x8c84('0xf')](_0x1df074));_0x49629d(_0x1df074);})[_0x8c84('0x15')](function(_0x2bcd56){logger[_0x8c84('0x10')](_0x8c84('0x2b'),_0x2bcd56[_0x8c84('0x12')],_0x44daf8);_0x34df8c(_0x510701[_0x8c84('0x10')](0x1f4,_0x2bcd56[_0x8c84('0x12')]));});});});};exports['MoveContactManagedDialer']=function(_0xb1b4d3){var _0x56715c=this;return new Promise(function(_0x5bbfaf,_0x3bbfaf){return db['sequelize'][_0x8c84('0x2e')](function(_0x4b9d2e){return db[_0x8c84('0x39')][_0x8c84('0x25')](_0xb1b4d3[_0x8c84('0x26')],{'raw':_0xb1b4d3[_0x8c84('0x19')]?_0xb1b4d3[_0x8c84('0x19')][_0x8c84('0x1a')]===undefined?!![]:![]:!![],'transaction':_0x4b9d2e})[_0x8c84('0xc')](function(){return db[_0x8c84('0x17')]['destroy']({'where':_0xb1b4d3[_0x8c84('0x19')]?_0xb1b4d3[_0x8c84('0x19')][_0x8c84('0x1b')]||null:null,'transaction':_0x4b9d2e});});})[_0x8c84('0xc')](function(_0x57f6f7){logger[_0x8c84('0x21')]('MoveContactManagedDialer',_0xb1b4d3);logger[_0x8c84('0x22')](_0x8c84('0x3a'),_0xb1b4d3,JSON[_0x8c84('0xf')](_0x57f6f7));_0x5bbfaf(_0x57f6f7);})[_0x8c84('0x15')](function(_0x22a52d){logger['error'](_0x8c84('0x3a'),_0x22a52d[_0x8c84('0x12')],_0xb1b4d3);_0x3bbfaf(_0x56715c[_0x8c84('0x10')](0x1f4,_0x22a52d[_0x8c84('0x12')]));});});};exports[_0x8c84('0x3b')]=function(_0x194553){var _0x321c79=this;return new Promise(function(_0xfdbee0,_0x16d775){return db[_0x8c84('0x17')][_0x8c84('0x18')]({'raw':_0x194553[_0x8c84('0x19')]?_0x194553[_0x8c84('0x19')][_0x8c84('0x1a')]===undefined?!![]:![]:!![],'where':_0x194553[_0x8c84('0x19')]?_0x194553['options'][_0x8c84('0x1b')]||null:null,'attributes':[[db[_0x8c84('0x3c')]['fn'](_0x8c84('0x3d'),db[_0x8c84('0x3c')]['fn']('IF',db[_0x8c84('0x3c')]['literal']('`scheduledat`\x20>=\x20'+util[_0x8c84('0x3e')]('\x22%s\x22',moment()['format'](_0x8c84('0x3f')))+_0x8c84('0x40')))),_0x8c84('0x41')]]})[_0x8c84('0xc')](function(_0x377225){logger[_0x8c84('0x21')](_0x8c84('0x3b'),_0x194553);logger[_0x8c84('0x22')](_0x8c84('0x3b'),_0x194553,JSON[_0x8c84('0xf')](_0x377225));_0xfdbee0(_0x377225);})[_0x8c84('0x15')](function(_0x1f2f1c){logger['error'](_0x8c84('0x3b'),_0x1f2f1c[_0x8c84('0x12')],_0x194553);_0x16d775(_0x321c79['error'](0x1f4,_0x1f2f1c[_0x8c84('0x12')]));});});};exports[_0x8c84('0x42')]=function(_0x35158e){var _0x2d948f=this;return new Promise(function(_0x230d42,_0x26cd22){return db[_0x8c84('0x2c')][_0x8c84('0x2d')]()['then'](function(_0x1c01c6){return db[_0x8c84('0x3c')][_0x8c84('0x2e')](function(_0xe0748a){return db[_0x8c84('0x17')][_0x8c84('0x18')]({'where':_0x35158e['options']?_0x35158e[_0x8c84('0x19')][_0x8c84('0x1b')]||null:null,'attributes':_0x35158e[_0x8c84('0x19')]?_0x35158e['options'][_0x8c84('0x1c')]||null:null,'limit':0x1,'order':_0x35158e['options']?_0x35158e[_0x8c84('0x19')][_0x8c84('0x43')]||null:null,'group':db[_0x8c84('0x17')][_0x8c84('0x44')],'transaction':_0xe0748a,'lock':_0xe0748a[_0x8c84('0x45')][_0x8c84('0x2f')],'include':_0x35158e[_0x8c84('0x19')]?_0x35158e['options'][_0x8c84('0x1e')]?_[_0x8c84('0x20')](_0x35158e[_0x8c84('0x19')][_0x8c84('0x1e')],function(_0x5898eb){return{'model':db[_0x5898eb[_0x8c84('0x1f')]],'as':_0x5898eb['as'],'attributes':_0x5898eb[_0x8c84('0x1c')],'include':_0x5898eb[_0x8c84('0x1e')]?_[_0x8c84('0x20')](_0x5898eb[_0x8c84('0x1e')],function(_0x3f4047){return{'model':db[_0x3f4047[_0x8c84('0x1f')]],'as':_0x3f4047['as'],'attributes':_0x3f4047['attributes'],'include':_0x3f4047[_0x8c84('0x1e')]?_[_0x8c84('0x20')](_0x3f4047[_0x8c84('0x1e')],function(_0x1047f1){return{'model':db[_0x1047f1[_0x8c84('0x1f')]],'as':_0x1047f1['as'],'attributes':_0x1047f1[_0x8c84('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8c84('0xc')](function(_0x37096e){var _0x30b431=[];for(var _0x22bf86=0x0;_0x22bf86<_0x37096e[_0x8c84('0x35')];_0x22bf86+=0x1){_0x30b431[_0x8c84('0x36')](_0x37096e[_0x22bf86][_0x8c84('0x27')](_0x35158e[_0x8c84('0x26')],{'transaction':_0xe0748a}));}return BPromise[_0x8c84('0x38')](_0x30b431);});})[_0x8c84('0xc')](function(_0x55feef){logger[_0x8c84('0x21')](_0x8c84('0x42'),_0x35158e);logger[_0x8c84('0x22')](_0x8c84('0x42'),_0x35158e,JSON[_0x8c84('0xf')](_0x55feef));_0x230d42(_0x55feef);})[_0x8c84('0x15')](function(_0x5aa2cd){logger['error']('GetContactRecallMe',_0x5aa2cd['message'],_0x35158e);_0x26cd22(_0x2d948f[_0x8c84('0x10')](0x1f4,_0x5aa2cd[_0x8c84('0x12')]));});});});};exports[_0x8c84('0x46')]=function(_0x3f8c19){var _0x106c82=this;return new Promise(function(_0xb5f576,_0x441f7d){db[_0x8c84('0x2c')][_0x8c84('0x2d')]()[_0x8c84('0xc')](function(_0x72ac5d){return db[_0x8c84('0x17')][_0x8c84('0x18')]({'raw':_0x3f8c19['options']?_0x3f8c19['options'][_0x8c84('0x1a')]===undefined?!![]:![]:!![],'where':_0x3f8c19['options']?_0x3f8c19[_0x8c84('0x19')][_0x8c84('0x1b')]||null:null,'attributes':_0x3f8c19[_0x8c84('0x19')]?_0x3f8c19[_0x8c84('0x19')][_0x8c84('0x1c')]||null:null,'limit':_0x3f8c19[_0x8c84('0x19')]?_0x3f8c19['options'][_0x8c84('0x1d')]||null:null,'include':_0x3f8c19['options']?_0x3f8c19['options']['include']?_[_0x8c84('0x20')](_0x3f8c19[_0x8c84('0x19')]['include'],function(_0x53ab94){return{'model':db[_0x53ab94[_0x8c84('0x1f')]],'as':_0x53ab94['as'],'attributes':_0x53ab94['as']==='Contact'?_[_0x8c84('0x31')](_0x72ac5d):_0x53ab94[_0x8c84('0x1c')],'include':_0x53ab94[_0x8c84('0x1e')]?_[_0x8c84('0x20')](_0x53ab94[_0x8c84('0x1e')],function(_0x5d0000){return{'model':db[_0x5d0000[_0x8c84('0x1f')]],'as':_0x5d0000['as'],'attributes':_0x5d0000[_0x8c84('0x1c')],'include':_0x5d0000[_0x8c84('0x1e')]?_[_0x8c84('0x20')](_0x5d0000[_0x8c84('0x1e')],function(_0xf1ca84){return{'model':db[_0xf1ca84[_0x8c84('0x1f')]],'as':_0xf1ca84['as'],'attributes':_0xf1ca84[_0x8c84('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8c84('0xc')](function(_0x5726bb){logger[_0x8c84('0x21')]('GetCmHopper',_0x3f8c19);logger[_0x8c84('0x22')](_0x8c84('0x16'),_0x3f8c19,JSON[_0x8c84('0xf')](_0x5726bb));_0xb5f576(_0x5726bb);})[_0x8c84('0x15')](function(_0x7cdccf){logger[_0x8c84('0x10')](_0x8c84('0x16'),_0x7cdccf[_0x8c84('0x12')],_0x3f8c19);_0x441f7d(_0x106c82[_0x8c84('0x10')](0x1f4,_0x7cdccf[_0x8c84('0x12')]));});});});};
\ No newline at end of file
index 53534a2..329dbd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceab=['destroy','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','./cmHopper.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','getPreview','put','update','delete'];(function(_0x44e061,_0x578093){var _0x428896=function(_0x462d69){while(--_0x462d69){_0x44e061['push'](_0x44e061['shift']());}};_0x428896(++_0x578093);}(_0xceab,0x95));var _0xbcea=function(_0x1750a9,_0x237e5e){_0x1750a9=_0x1750a9-0x0;var _0x29b709=_0xceab[_0x1750a9];return _0x29b709;};'use strict';var multer=require('multer');var util=require(_0xbcea('0x0'));var path=require(_0xbcea('0x1'));var timeout=require(_0xbcea('0x2'));var express=require(_0xbcea('0x3'));var router=express[_0xbcea('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbcea('0x5'));var config=require('../../config/environment');var controller=require(_0xbcea('0x6'));router[_0xbcea('0x7')]('/',auth[_0xbcea('0x8')](),controller[_0xbcea('0x9')]);router[_0xbcea('0x7')](_0xbcea('0xa'),auth[_0xbcea('0x8')](),controller['describe']);router[_0xbcea('0x7')]('/opencontacts',auth[_0xbcea('0x8')](),controller['getOpenContacts']);router[_0xbcea('0x7')](_0xbcea('0xb'),auth[_0xbcea('0x8')](),controller[_0xbcea('0xc')]);router[_0xbcea('0xd')]('/',auth['isAuthenticated'](),controller[_0xbcea('0xe')]);router[_0xbcea('0xd')]('/preview',auth['isAuthenticated'](),controller[_0xbcea('0xf')]);router[_0xbcea('0x10')](_0xbcea('0xb'),auth[_0xbcea('0x8')](),controller[_0xbcea('0x11')]);router[_0xbcea('0x12')](_0xbcea('0xb'),auth[_0xbcea('0x8')](),controller[_0xbcea('0x13')]);module[_0xbcea('0x14')]=router;
\ No newline at end of file
+var _0x578e=['../../config/environment','./cmHopper.controller','get','index','isAuthenticated','/opencontacts','getOpenContacts','/:id','post','create','/preview','getPreview','put','update','delete','destroy','multer','util','Router','../../components/interaction/service'];(function(_0x2b24e9,_0x1b1811){var _0x3f7c45=function(_0xa1a6eb){while(--_0xa1a6eb){_0x2b24e9['push'](_0x2b24e9['shift']());}};_0x3f7c45(++_0x1b1811);}(_0x578e,0x74));var _0xe578=function(_0x323d3a,_0x325482){_0x323d3a=_0x323d3a-0x0;var _0x24847a=_0x578e[_0x323d3a];return _0x24847a;};'use strict';var multer=require(_0xe578('0x0'));var util=require(_0xe578('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe578('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xe578('0x3'));var config=require(_0xe578('0x4'));var controller=require(_0xe578('0x5'));router[_0xe578('0x6')]('/',auth['isAuthenticated'](),controller[_0xe578('0x7')]);router[_0xe578('0x6')]('/describe',auth[_0xe578('0x8')](),controller['describe']);router[_0xe578('0x6')](_0xe578('0x9'),auth[_0xe578('0x8')](),controller[_0xe578('0xa')]);router[_0xe578('0x6')](_0xe578('0xb'),auth[_0xe578('0x8')](),controller['show']);router[_0xe578('0xc')]('/',auth[_0xe578('0x8')](),controller[_0xe578('0xd')]);router['post'](_0xe578('0xe'),auth[_0xe578('0x8')](),controller[_0xe578('0xf')]);router[_0xe578('0x10')](_0xe578('0xb'),auth['isAuthenticated'](),controller[_0xe578('0x11')]);router[_0xe578('0x12')](_0xe578('0xb'),auth[_0xe578('0x8')](),controller[_0xe578('0x13')]);module['exports']=router;
\ No newline at end of file
index 589c433..41d53fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf47e=['INTEGER','contactListQueue','moment','sequelize','STRING'];(function(_0x470b7d,_0x12cac2){var _0x195460=function(_0x5033a1){while(--_0x5033a1){_0x470b7d['push'](_0x470b7d['shift']());}};_0x195460(++_0x12cac2);}(_0xf47e,0x1bf));var _0xef47=function(_0xa3e49f,_0x4093e6){_0xa3e49f=_0xa3e49f-0x0;var _0x80d1f9=_0xf47e[_0xa3e49f];return _0x80d1f9;};'use strict';var moment=require(_0xef47('0x0'));var Sequelize=require(_0xef47('0x1'));module['exports']={'phone':{'type':Sequelize[_0xef47('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xef47('0x3')],'unique':_0xef47('0x4')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0xef47('0x4')},'VoiceQueueId':{'type':Sequelize[_0xef47('0x3')],'unique':_0xef47('0x4')}};
\ No newline at end of file
+var _0x0e6a=['contactListQueue','sequelize','exports','STRING','INTEGER'];(function(_0x12b3f1,_0x14c278){var _0x3d4785=function(_0x1da900){while(--_0x1da900){_0x12b3f1['push'](_0x12b3f1['shift']());}};_0x3d4785(++_0x14c278);}(_0x0e6a,0x100));var _0xa0e6=function(_0x5cb0b7,_0x393d63){_0x5cb0b7=_0x5cb0b7-0x0;var _0x54bbb2=_0x0e6a[_0x5cb0b7];return _0x54bbb2;};'use strict';var moment=require('moment');var Sequelize=require(_0xa0e6('0x0'));module[_0xa0e6('0x1')]={'phone':{'type':Sequelize[_0xa0e6('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xa0e6('0x3')],'unique':_0xa0e6('0x4')},'ListId':{'type':Sequelize[_0xa0e6('0x3')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0xa0e6('0x3')],'unique':_0xa0e6('0x4')}};
\ No newline at end of file
index ad71ad5..18f3c39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacc6=['sendStatus','error','stack','name','send','index','map','type','key','model','query','filters','intersection','fields','attributes','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','CmHopperBlack','include','findAll','rows','catch','show','keys','length','includeAll','find','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xacc6,0x150));var _0x6acc=function(_0x4ca6a4,_0x5e9694){_0x4ca6a4=_0x4ca6a4-0x0;var _0x120555=_0xacc6[_0x4ca6a4];return _0x120555;};'use strict';var emlformat=require(_0x6acc('0x0'));var rimraf=require(_0x6acc('0x1'));var zipdir=require(_0x6acc('0x2'));var jsonpatch=require(_0x6acc('0x3'));var rp=require(_0x6acc('0x4'));var moment=require('moment');var BPromise=require(_0x6acc('0x5'));var Mustache=require(_0x6acc('0x6'));var util=require(_0x6acc('0x7'));var path=require('path');var sox=require(_0x6acc('0x8'));var csv=require('to-csv');var ejs=require(_0x6acc('0x9'));var fs=require('fs');var fs_extra=require(_0x6acc('0xa'));var _=require('lodash');var squel=require(_0x6acc('0xb'));var crypto=require('crypto');var jsforce=require(_0x6acc('0xc'));var deskjs=require(_0x6acc('0xd'));var toCsv=require(_0x6acc('0xe'));var querystring=require(_0x6acc('0xf'));var Papa=require('papaparse');var Redis=require(_0x6acc('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x6acc('0x11'));var as=require(_0x6acc('0x12'));var hardwareService=require(_0x6acc('0x13'));var logger=require(_0x6acc('0x14'))(_0x6acc('0x15'));var utils=require(_0x6acc('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6acc('0x17'));var db=require(_0x6acc('0x18'))['db'];function respondWithStatusCode(_0x1d951c,_0xcf8224){_0xcf8224=_0xcf8224||0xcc;return function(_0x1b95a6){if(_0x1b95a6){return _0x1d951c['sendStatus'](_0xcf8224);}return _0x1d951c['status'](_0xcf8224)[_0x6acc('0x19')]();};}function respondWithResult(_0x497356,_0x14a543){_0x14a543=_0x14a543||0xc8;return function(_0x230318){if(_0x230318){return _0x497356[_0x6acc('0x1a')](_0x14a543)[_0x6acc('0x1b')](_0x230318);}};}function respondWithFilteredResult(_0x3c4e61,_0x4034fb){return function(_0xf24527){if(_0xf24527){var _0xc07208=typeof _0x4034fb[_0x6acc('0x1c')]===_0x6acc('0x1d')&&typeof _0x4034fb[_0x6acc('0x1e')]===_0x6acc('0x1d');var _0x24f513=_0xf24527[_0x6acc('0x1f')];var _0x3818d8=_0xc07208?0x0:_0x4034fb[_0x6acc('0x1c')];var _0x4ee616=_0xc07208?_0xf24527[_0x6acc('0x1f')]:_0x4034fb[_0x6acc('0x1c')]+_0x4034fb[_0x6acc('0x1e')];var _0x151282;if(_0x4ee616>=_0x24f513){_0x4ee616=_0x24f513;_0x151282=0xc8;}else{_0x151282=0xce;}_0x3c4e61['status'](_0x151282);return _0x3c4e61[_0x6acc('0x20')]('Content-Range',_0x3818d8+'-'+_0x4ee616+'/'+_0x24f513)['json'](_0xf24527);}return null;};}function patchUpdates(_0x4af9e){return function(_0x5d5382){try{jsonpatch[_0x6acc('0x21')](_0x5d5382,_0x4af9e,!![]);}catch(_0x3edf4a){return BPromise[_0x6acc('0x22')](_0x3edf4a);}return _0x5d5382[_0x6acc('0x23')]();};}function saveUpdates(_0x245536,_0x5ecb25){return function(_0x3e4a71){if(_0x3e4a71){return _0x3e4a71[_0x6acc('0x24')](_0x245536)['then'](function(_0x334416){return _0x334416;});}return null;};}function removeEntity(_0x5ba0b6,_0x22abf1){return function(_0x1db7bd){if(_0x1db7bd){return _0x1db7bd[_0x6acc('0x25')]()[_0x6acc('0x26')](function(){_0x5ba0b6['status'](0xcc)[_0x6acc('0x19')]();});}};}function handleEntityNotFound(_0xa4d97c,_0x4a4ca1){return function(_0x10f286){if(!_0x10f286){_0xa4d97c[_0x6acc('0x27')](0x194);}return _0x10f286;};}function handleError(_0x441f90,_0x125084){_0x125084=_0x125084||0x1f4;return function(_0x212bde){logger[_0x6acc('0x28')](_0x212bde[_0x6acc('0x29')]);if(_0x212bde[_0x6acc('0x2a')]){delete _0x212bde['name'];}_0x441f90[_0x6acc('0x1a')](_0x125084)[_0x6acc('0x2b')](_0x212bde);};}exports[_0x6acc('0x2c')]=function(_0x490ce6,_0x1bcfad){var _0x8e75a9={},_0x3c8c95={},_0x259373={'count':0x0,'rows':[]};var _0x19fdd3=_[_0x6acc('0x2d')](db['CmHopperBlack']['rawAttributes'],function(_0x47ff48){return{'name':_0x47ff48['fieldName'],'type':_0x47ff48[_0x6acc('0x2e')][_0x6acc('0x2f')]};});_0x3c8c95[_0x6acc('0x30')]=_[_0x6acc('0x2d')](_0x19fdd3,_0x6acc('0x2a'));_0x3c8c95[_0x6acc('0x31')]=_['keys'](_0x490ce6['query']);_0x3c8c95[_0x6acc('0x32')]=_[_0x6acc('0x33')](_0x3c8c95[_0x6acc('0x30')],_0x3c8c95[_0x6acc('0x31')]);_0x8e75a9['attributes']=_[_0x6acc('0x33')](_0x3c8c95[_0x6acc('0x30')],qs['fields'](_0x490ce6[_0x6acc('0x31')][_0x6acc('0x34')]));_0x8e75a9[_0x6acc('0x35')]=_0x8e75a9['attributes']['length']?_0x8e75a9[_0x6acc('0x35')]:_0x3c8c95[_0x6acc('0x30')];if(!_0x490ce6['query']['hasOwnProperty'](_0x6acc('0x36'))){_0x8e75a9[_0x6acc('0x1e')]=qs[_0x6acc('0x1e')](_0x490ce6['query'][_0x6acc('0x1e')]);_0x8e75a9[_0x6acc('0x1c')]=qs[_0x6acc('0x1c')](_0x490ce6[_0x6acc('0x31')][_0x6acc('0x1c')]);}_0x8e75a9['order']=qs[_0x6acc('0x37')](_0x490ce6['query'][_0x6acc('0x37')]);_0x8e75a9[_0x6acc('0x38')]=qs['filters'](_[_0x6acc('0x39')](_0x490ce6['query'],_0x3c8c95['filters']),_0x19fdd3);if(_0x490ce6[_0x6acc('0x31')][_0x6acc('0x3a')]){_0x8e75a9[_0x6acc('0x38')]=_['merge'](_0x8e75a9[_0x6acc('0x38')],{'$or':_['map'](_0x19fdd3,function(_0x1841b1){if(_0x1841b1['type']!==_0x6acc('0x3b')){var _0x13f74a={};_0x13f74a[_0x1841b1['name']]={'$like':'%'+_0x490ce6[_0x6acc('0x31')][_0x6acc('0x3a')]+'%'};return _0x13f74a;}})});}_0x8e75a9=_[_0x6acc('0x3c')]({},_0x8e75a9,_0x490ce6[_0x6acc('0x3d')]);var _0x46f7db={'where':_0x8e75a9[_0x6acc('0x38')]};return db[_0x6acc('0x3e')]['count'](_0x46f7db)['then'](function(_0x3481ad){_0x259373[_0x6acc('0x1f')]=_0x3481ad;if(_0x490ce6[_0x6acc('0x31')]['includeAll']){_0x8e75a9[_0x6acc('0x3f')]=[{'all':!![]}];}return db[_0x6acc('0x3e')][_0x6acc('0x40')](_0x8e75a9);})[_0x6acc('0x26')](function(_0x3f848c){_0x259373[_0x6acc('0x41')]=_0x3f848c;return _0x259373;})[_0x6acc('0x26')](respondWithFilteredResult(_0x1bcfad,_0x8e75a9))[_0x6acc('0x42')](handleError(_0x1bcfad,null));};exports[_0x6acc('0x43')]=function(_0x1c2776,_0x114709){var _0x17f828={'raw':!![],'where':{'id':_0x1c2776['params']['id']}},_0x5c938d={};_0x5c938d['model']=_[_0x6acc('0x44')](db['CmHopperBlack']['rawAttributes']);_0x5c938d[_0x6acc('0x31')]=_[_0x6acc('0x44')](_0x1c2776[_0x6acc('0x31')]);_0x5c938d[_0x6acc('0x32')]=_[_0x6acc('0x33')](_0x5c938d[_0x6acc('0x30')],_0x5c938d[_0x6acc('0x31')]);_0x17f828[_0x6acc('0x35')]=_[_0x6acc('0x33')](_0x5c938d[_0x6acc('0x30')],qs[_0x6acc('0x34')](_0x1c2776[_0x6acc('0x31')][_0x6acc('0x34')]));_0x17f828['attributes']=_0x17f828[_0x6acc('0x35')][_0x6acc('0x45')]?_0x17f828['attributes']:_0x5c938d[_0x6acc('0x30')];if(_0x1c2776['query'][_0x6acc('0x46')]){_0x17f828[_0x6acc('0x3f')]=[{'all':!![]}];}_0x17f828=_['merge']({},_0x17f828,_0x1c2776[_0x6acc('0x3d')]);return db[_0x6acc('0x3e')][_0x6acc('0x47')](_0x17f828)[_0x6acc('0x26')](handleEntityNotFound(_0x114709,null))[_0x6acc('0x26')](respondWithResult(_0x114709,null))['catch'](handleError(_0x114709,null));};exports[_0x6acc('0x24')]=function(_0x391a4f,_0x45c5e0){if(_0x391a4f[_0x6acc('0x48')]['id']){delete _0x391a4f[_0x6acc('0x48')]['id'];}return db[_0x6acc('0x3e')][_0x6acc('0x47')]({'where':{'id':_0x391a4f[_0x6acc('0x49')]['id']}})[_0x6acc('0x26')](handleEntityNotFound(_0x45c5e0,null))[_0x6acc('0x26')](saveUpdates(_0x391a4f[_0x6acc('0x48')],null))[_0x6acc('0x26')](respondWithResult(_0x45c5e0,null))[_0x6acc('0x42')](handleError(_0x45c5e0,null));};exports[_0x6acc('0x25')]=function(_0x2a634f,_0x2ad59d){return db[_0x6acc('0x3e')]['find']({'where':{'id':_0x2a634f['params']['id']}})['then'](handleEntityNotFound(_0x2ad59d,null))[_0x6acc('0x26')](removeEntity(_0x2ad59d,null))[_0x6acc('0x42')](handleError(_0x2ad59d,null));};exports['describe']=function(_0x13e10e,_0x16508d){return db[_0x6acc('0x3e')][_0x6acc('0x4a')]()['then'](respondWithResult(_0x16508d,null))[_0x6acc('0x42')](handleError(_0x16508d,null));};
\ No newline at end of file
+var _0xca6e=['nolimit','order','sort','pick','merge','where','filter','options','count','includeAll','include','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','limit','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xca6e,0x1c1));var _0xeca6=function(_0x287751,_0x2eb268){_0x287751=_0x287751-0x0;var _0x2dfb4e=_0xca6e[_0x287751];return _0x2dfb4e;};'use strict';var emlformat=require(_0xeca6('0x0'));var rimraf=require(_0xeca6('0x1'));var zipdir=require(_0xeca6('0x2'));var jsonpatch=require(_0xeca6('0x3'));var rp=require(_0xeca6('0x4'));var moment=require('moment');var BPromise=require(_0xeca6('0x5'));var Mustache=require(_0xeca6('0x6'));var util=require('util');var path=require(_0xeca6('0x7'));var sox=require('sox');var csv=require(_0xeca6('0x8'));var ejs=require(_0xeca6('0x9'));var fs=require('fs');var fs_extra=require(_0xeca6('0xa'));var _=require('lodash');var squel=require(_0xeca6('0xb'));var crypto=require('crypto');var jsforce=require(_0xeca6('0xc'));var deskjs=require(_0xeca6('0xd'));var toCsv=require(_0xeca6('0x8'));var querystring=require(_0xeca6('0xe'));var Papa=require(_0xeca6('0xf'));var Redis=require('ioredis');var authService=require(_0xeca6('0x10'));var qs=require(_0xeca6('0x11'));var as=require(_0xeca6('0x12'));var hardwareService=require(_0xeca6('0x13'));var logger=require(_0xeca6('0x14'))('api');var utils=require(_0xeca6('0x15'));var config=require(_0xeca6('0x16'));var licenseUtil=require(_0xeca6('0x17'));var db=require(_0xeca6('0x18'))['db'];function respondWithStatusCode(_0x17993d,_0x246a95){_0x246a95=_0x246a95||0xcc;return function(_0x527c20){if(_0x527c20){return _0x17993d['sendStatus'](_0x246a95);}return _0x17993d[_0xeca6('0x19')](_0x246a95)[_0xeca6('0x1a')]();};}function respondWithResult(_0x3b2ae0,_0x1595e1){_0x1595e1=_0x1595e1||0xc8;return function(_0x5ba70d){if(_0x5ba70d){return _0x3b2ae0[_0xeca6('0x19')](_0x1595e1)['json'](_0x5ba70d);}};}function respondWithFilteredResult(_0x240498,_0x304300){return function(_0x19a4d1){if(_0x19a4d1){var _0x4751f5=typeof _0x304300[_0xeca6('0x1b')]==='undefined'&&typeof _0x304300[_0xeca6('0x1c')]==='undefined';var _0x35dfba=_0x19a4d1['count'];var _0x848ac4=_0x4751f5?0x0:_0x304300[_0xeca6('0x1b')];var _0x1076c9=_0x4751f5?_0x19a4d1['count']:_0x304300['offset']+_0x304300[_0xeca6('0x1c')];var _0x42518d;if(_0x1076c9>=_0x35dfba){_0x1076c9=_0x35dfba;_0x42518d=0xc8;}else{_0x42518d=0xce;}_0x240498[_0xeca6('0x19')](_0x42518d);return _0x240498['set'](_0xeca6('0x1d'),_0x848ac4+'-'+_0x1076c9+'/'+_0x35dfba)[_0xeca6('0x1e')](_0x19a4d1);}return null;};}function patchUpdates(_0x3bc24c){return function(_0x444e51){try{jsonpatch[_0xeca6('0x1f')](_0x444e51,_0x3bc24c,!![]);}catch(_0x13abcf){return BPromise[_0xeca6('0x20')](_0x13abcf);}return _0x444e51[_0xeca6('0x21')]();};}function saveUpdates(_0x38d0be,_0x83d517){return function(_0x126f20){if(_0x126f20){return _0x126f20[_0xeca6('0x22')](_0x38d0be)[_0xeca6('0x23')](function(_0x189c8b){return _0x189c8b;});}return null;};}function removeEntity(_0x454bd5,_0x2960c5){return function(_0x4604a3){if(_0x4604a3){return _0x4604a3[_0xeca6('0x24')]()[_0xeca6('0x23')](function(){_0x454bd5[_0xeca6('0x19')](0xcc)[_0xeca6('0x1a')]();});}};}function handleEntityNotFound(_0x5df739,_0x48152f){return function(_0x5d8011){if(!_0x5d8011){_0x5df739['sendStatus'](0x194);}return _0x5d8011;};}function handleError(_0x2cfe49,_0x1b7d23){_0x1b7d23=_0x1b7d23||0x1f4;return function(_0x2a561e){logger['error'](_0x2a561e[_0xeca6('0x25')]);if(_0x2a561e[_0xeca6('0x26')]){delete _0x2a561e[_0xeca6('0x26')];}_0x2cfe49[_0xeca6('0x19')](_0x1b7d23)[_0xeca6('0x27')](_0x2a561e);};}exports[_0xeca6('0x28')]=function(_0x5e3833,_0x21c388){var _0x561c4e={},_0x4cd7f1={},_0x177542={'count':0x0,'rows':[]};var _0x37b5f3=_[_0xeca6('0x29')](db[_0xeca6('0x2a')][_0xeca6('0x2b')],function(_0x51ba53){return{'name':_0x51ba53[_0xeca6('0x2c')],'type':_0x51ba53[_0xeca6('0x2d')]['key']};});_0x4cd7f1[_0xeca6('0x2e')]=_[_0xeca6('0x29')](_0x37b5f3,_0xeca6('0x26'));_0x4cd7f1['query']=_[_0xeca6('0x2f')](_0x5e3833[_0xeca6('0x30')]);_0x4cd7f1[_0xeca6('0x31')]=_[_0xeca6('0x32')](_0x4cd7f1[_0xeca6('0x2e')],_0x4cd7f1[_0xeca6('0x30')]);_0x561c4e['attributes']=_[_0xeca6('0x32')](_0x4cd7f1[_0xeca6('0x2e')],qs[_0xeca6('0x33')](_0x5e3833[_0xeca6('0x30')][_0xeca6('0x33')]));_0x561c4e[_0xeca6('0x34')]=_0x561c4e[_0xeca6('0x34')][_0xeca6('0x35')]?_0x561c4e[_0xeca6('0x34')]:_0x4cd7f1[_0xeca6('0x2e')];if(!_0x5e3833[_0xeca6('0x30')][_0xeca6('0x36')](_0xeca6('0x37'))){_0x561c4e['limit']=qs[_0xeca6('0x1c')](_0x5e3833[_0xeca6('0x30')][_0xeca6('0x1c')]);_0x561c4e['offset']=qs[_0xeca6('0x1b')](_0x5e3833[_0xeca6('0x30')][_0xeca6('0x1b')]);}_0x561c4e[_0xeca6('0x38')]=qs[_0xeca6('0x39')](_0x5e3833[_0xeca6('0x30')][_0xeca6('0x39')]);_0x561c4e['where']=qs[_0xeca6('0x31')](_[_0xeca6('0x3a')](_0x5e3833[_0xeca6('0x30')],_0x4cd7f1[_0xeca6('0x31')]),_0x37b5f3);if(_0x5e3833[_0xeca6('0x30')]['filter']){_0x561c4e['where']=_[_0xeca6('0x3b')](_0x561c4e[_0xeca6('0x3c')],{'$or':_[_0xeca6('0x29')](_0x37b5f3,function(_0x556df3){if(_0x556df3[_0xeca6('0x2d')]!=='VIRTUAL'){var _0x5182ee={};_0x5182ee[_0x556df3[_0xeca6('0x26')]]={'$like':'%'+_0x5e3833[_0xeca6('0x30')][_0xeca6('0x3d')]+'%'};return _0x5182ee;}})});}_0x561c4e=_[_0xeca6('0x3b')]({},_0x561c4e,_0x5e3833[_0xeca6('0x3e')]);var _0x1dd03e={'where':_0x561c4e[_0xeca6('0x3c')]};return db[_0xeca6('0x2a')][_0xeca6('0x3f')](_0x1dd03e)[_0xeca6('0x23')](function(_0x1fa826){_0x177542[_0xeca6('0x3f')]=_0x1fa826;if(_0x5e3833['query'][_0xeca6('0x40')]){_0x561c4e[_0xeca6('0x41')]=[{'all':!![]}];}return db[_0xeca6('0x2a')]['findAll'](_0x561c4e);})[_0xeca6('0x23')](function(_0x2166f2){_0x177542['rows']=_0x2166f2;return _0x177542;})[_0xeca6('0x23')](respondWithFilteredResult(_0x21c388,_0x561c4e))[_0xeca6('0x42')](handleError(_0x21c388,null));};exports[_0xeca6('0x43')]=function(_0xe42fef,_0x57e499){var _0x32e3e7={'raw':!![],'where':{'id':_0xe42fef[_0xeca6('0x44')]['id']}},_0x49950a={};_0x49950a['model']=_['keys'](db['CmHopperBlack'][_0xeca6('0x2b')]);_0x49950a[_0xeca6('0x30')]=_['keys'](_0xe42fef[_0xeca6('0x30')]);_0x49950a[_0xeca6('0x31')]=_[_0xeca6('0x32')](_0x49950a['model'],_0x49950a[_0xeca6('0x30')]);_0x32e3e7[_0xeca6('0x34')]=_[_0xeca6('0x32')](_0x49950a[_0xeca6('0x2e')],qs[_0xeca6('0x33')](_0xe42fef[_0xeca6('0x30')]['fields']));_0x32e3e7[_0xeca6('0x34')]=_0x32e3e7['attributes'][_0xeca6('0x35')]?_0x32e3e7['attributes']:_0x49950a[_0xeca6('0x2e')];if(_0xe42fef[_0xeca6('0x30')][_0xeca6('0x40')]){_0x32e3e7[_0xeca6('0x41')]=[{'all':!![]}];}_0x32e3e7=_[_0xeca6('0x3b')]({},_0x32e3e7,_0xe42fef[_0xeca6('0x3e')]);return db[_0xeca6('0x2a')][_0xeca6('0x45')](_0x32e3e7)[_0xeca6('0x23')](handleEntityNotFound(_0x57e499,null))[_0xeca6('0x23')](respondWithResult(_0x57e499,null))['catch'](handleError(_0x57e499,null));};exports['update']=function(_0x25746a,_0x4278c0){if(_0x25746a[_0xeca6('0x46')]['id']){delete _0x25746a[_0xeca6('0x46')]['id'];}return db[_0xeca6('0x2a')]['find']({'where':{'id':_0x25746a[_0xeca6('0x44')]['id']}})[_0xeca6('0x23')](handleEntityNotFound(_0x4278c0,null))[_0xeca6('0x23')](saveUpdates(_0x25746a[_0xeca6('0x46')],null))[_0xeca6('0x23')](respondWithResult(_0x4278c0,null))[_0xeca6('0x42')](handleError(_0x4278c0,null));};exports[_0xeca6('0x24')]=function(_0x7a3b52,_0x52cb03){return db[_0xeca6('0x2a')][_0xeca6('0x45')]({'where':{'id':_0x7a3b52[_0xeca6('0x44')]['id']}})[_0xeca6('0x23')](handleEntityNotFound(_0x52cb03,null))[_0xeca6('0x23')](removeEntity(_0x52cb03,null))[_0xeca6('0x42')](handleError(_0x52cb03,null));};exports[_0xeca6('0x47')]=function(_0x8e1cdc,_0xd732c){return db[_0xeca6('0x2a')]['describe']()['then'](respondWithResult(_0xd732c,null))[_0xeca6('0x42')](handleError(_0xd732c,null));};
\ No newline at end of file
index 4c8ca73..c586f0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9237=['../../config/environment','./cmHopperBlack.attributes','exports','define','lodash','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x387a1a,_0x10e611){var _0x577951=function(_0x1f3d78){while(--_0x1f3d78){_0x387a1a['push'](_0x387a1a['shift']());}};_0x577951(++_0x10e611);}(_0x9237,0x1e4));var _0x7923=function(_0x1e175d,_0x41ff45){_0x1e175d=_0x1e175d-0x0;var _0x3a3ce5=_0x9237[_0x1e175d];return _0x3a3ce5;};'use strict';var _=require(_0x7923('0x0'));var util=require('util');var logger=require(_0x7923('0x1'))('api');var moment=require(_0x7923('0x2'));var BPromise=require(_0x7923('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7923('0x4'));var rimraf=require(_0x7923('0x5'));var config=require(_0x7923('0x6'));var attributes=require(_0x7923('0x7'));module[_0x7923('0x8')]=function(_0x239cac,_0x1a8c4a){return _0x239cac[_0x7923('0x9')]('CmHopperBlack',attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8289=['bluebird','request-promise','./cmHopperBlack.attributes','CmHopperBlack','cm_hopper_black','lodash','util','../../config/logger','api','moment'];(function(_0x5ea002,_0x31ce12){var _0x31e822=function(_0x4bdd8f){while(--_0x4bdd8f){_0x5ea002['push'](_0x5ea002['shift']());}};_0x31e822(++_0x31ce12);}(_0x8289,0xff));var _0x9828=function(_0x4cc3c8,_0x495e74){_0x4cc3c8=_0x4cc3c8-0x0;var _0x7202dc=_0x8289[_0x4cc3c8];return _0x7202dc;};'use strict';var _=require(_0x9828('0x0'));var util=require(_0x9828('0x1'));var logger=require(_0x9828('0x2'))(_0x9828('0x3'));var moment=require(_0x9828('0x4'));var BPromise=require(_0x9828('0x5'));var rp=require(_0x9828('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9828('0x7'));module['exports']=function(_0x4657db,_0x13d5c7){return _0x4657db['define'](_0x9828('0x8'),attributes,{'tableName':_0x9828('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 621bb1f..bc21095 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1878=['../../config/environment','client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','attributes','limit','include','map','model','UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','destroy','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1878,0x8e));var _0x8187=function(_0x2ff1d9,_0x390788){_0x2ff1d9=_0x2ff1d9-0x0;var _0x4a58c0=_0x1878[_0x2ff1d9];return _0x4a58c0;};'use strict';var _=require('lodash');var util=require(_0x8187('0x0'));var moment=require(_0x8187('0x1'));var BPromise=require(_0x8187('0x2'));var rs=require(_0x8187('0x3'));var fs=require('fs');var Redis=require(_0x8187('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8187('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x8187('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8187('0x7')][_0x8187('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x471c6d,_0x200745,_0x433ae3){return new BPromise(function(_0x1e5f59,_0xcfc043){return client[_0x8187('0x9')](_0x471c6d,_0x433ae3)[_0x8187('0xa')](function(_0x20c571){logger[_0x8187('0xb')](_0x8187('0xc'),_0x200745,_0x8187('0xd'));logger[_0x8187('0xe')](_0x8187('0xf'),_0x200745,_0x8187('0xd'),JSON[_0x8187('0x10')](_0x20c571));if(_0x20c571[_0x8187('0x11')]){if(_0x20c571[_0x8187('0x11')][_0x8187('0x12')]===0x1f4){logger['error'](_0x8187('0xc'),_0x200745,_0x20c571[_0x8187('0x11')][_0x8187('0x13')]);return _0xcfc043(_0x20c571['error']['message']);}logger[_0x8187('0x11')]('CmHopperBlack,\x20%s,\x20%s',_0x200745,_0x20c571[_0x8187('0x11')]['message']);return _0x1e5f59(_0x20c571[_0x8187('0x11')]['message']);}else{logger[_0x8187('0xb')](_0x8187('0xc'),_0x200745,_0x8187('0xd'));_0x1e5f59(_0x20c571['result'][_0x8187('0x13')]);}})[_0x8187('0x14')](function(_0x2e864c){logger[_0x8187('0x11')](_0x8187('0xc'),_0x200745,_0x2e864c);_0xcfc043(_0x2e864c);});});}exports[_0x8187('0x15')]=function(_0x355624){var _0x11cca7=this;return new Promise(function(_0xc214b7,_0x5ef85b){return db[_0x8187('0x16')][_0x8187('0x17')]({'raw':_0x355624[_0x8187('0x18')]?_0x355624[_0x8187('0x18')][_0x8187('0x19')]===undefined?!![]:![]:!![],'where':_0x355624[_0x8187('0x18')]?_0x355624[_0x8187('0x18')][_0x8187('0x1a')]||null:null,'attributes':_0x355624['options']?_0x355624[_0x8187('0x18')][_0x8187('0x1b')]||null:null,'limit':_0x355624[_0x8187('0x18')]?_0x355624['options'][_0x8187('0x1c')]||null:null,'include':_0x355624[_0x8187('0x18')]?_0x355624[_0x8187('0x18')][_0x8187('0x1d')]?_[_0x8187('0x1e')](_0x355624[_0x8187('0x18')][_0x8187('0x1d')],function(_0x582b7c){return{'model':db[_0x582b7c[_0x8187('0x1f')]],'as':_0x582b7c['as'],'attributes':_0x582b7c[_0x8187('0x1b')],'include':_0x582b7c[_0x8187('0x1d')]?_[_0x8187('0x1e')](_0x582b7c[_0x8187('0x1d')],function(_0x10b745){return{'model':db[_0x10b745[_0x8187('0x1f')]],'as':_0x10b745['as'],'attributes':_0x10b745[_0x8187('0x1b')],'include':_0x10b745[_0x8187('0x1d')]?_['map'](_0x10b745['include'],function(_0x142f1c){return{'model':db[_0x142f1c[_0x8187('0x1f')]],'as':_0x142f1c['as'],'attributes':_0x142f1c[_0x8187('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x8187('0xa')](function(_0x5dd240){logger['info'](_0x8187('0x15'),_0x355624);logger[_0x8187('0xe')]('GetCmHopperBlack',_0x355624,JSON[_0x8187('0x10')](_0x5dd240));_0xc214b7(_0x5dd240);})[_0x8187('0x14')](function(_0x1435fa){logger[_0x8187('0x11')](_0x8187('0x15'),_0x1435fa[_0x8187('0x13')],_0x355624);_0x5ef85b(_0x11cca7['error'](0x1f4,_0x1435fa['message']));});});};exports[_0x8187('0x20')]=function(_0x58a280){var _0x5b1527=this;return new Promise(function(_0x546ec4,_0x1f44b6){return db['CmHopperBlack'][_0x8187('0x21')](_0x58a280[_0x8187('0x22')],{'raw':_0x58a280[_0x8187('0x18')]?_0x58a280[_0x8187('0x18')][_0x8187('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x58a280[_0x8187('0x18')]?_0x58a280[_0x8187('0x18')][_0x8187('0x1a')]||null:null,'attributes':_0x58a280['options']?_0x58a280[_0x8187('0x18')][_0x8187('0x1b')]||null:null,'limit':_0x58a280['options']?_0x58a280['options'][_0x8187('0x1c')]||null:null})['then'](function(_0x474512){logger[_0x8187('0xb')](_0x8187('0x20'),_0x58a280);logger[_0x8187('0xe')](_0x8187('0x20'),_0x58a280,JSON[_0x8187('0x10')](_0x474512));_0x546ec4(_0x474512);})[_0x8187('0x14')](function(_0x302e95){logger['error'](_0x8187('0x20'),_0x302e95[_0x8187('0x13')],_0x58a280);_0x1f44b6(_0x5b1527['error'](0x1f4,_0x302e95[_0x8187('0x13')]));});});};exports[_0x8187('0x23')]=function(_0x4663a5){var _0x24f8ad=this;return new Promise(function(_0xe62497,_0x5d77fa){return db[_0x8187('0x16')][_0x8187('0x24')]({'where':_0x4663a5['options']?_0x4663a5[_0x8187('0x18')]['where']||null:null})[_0x8187('0xa')](function(_0xd96e23){logger[_0x8187('0xb')]('DestroyCmHopperBlack',_0x4663a5);logger[_0x8187('0xe')](_0x8187('0x23'),_0x4663a5,JSON['stringify'](_0xd96e23));_0xe62497(_0xd96e23);})[_0x8187('0x14')](function(_0x487c0b){logger['error'](_0x8187('0x23'),_0x487c0b[_0x8187('0x13')],_0x4663a5);_0x5d77fa(_0x24f8ad['error'](0x1f4,_0x487c0b['message']));});});};
\ No newline at end of file
+var _0xcbb9=['limit','include','model','map','catch','UpdateCmHopperBlack','update','body','raw','destroy','DestroyCmHopperBlack','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','GetCmHopperBlack','CmHopperBlack','options','where','attributes'];(function(_0x4d35f3,_0x19ba66){var _0x382fea=function(_0x2c2390){while(--_0x2c2390){_0x4d35f3['push'](_0x4d35f3['shift']());}};_0x382fea(++_0x19ba66);}(_0xcbb9,0x133));var _0x9cbb=function(_0x3fded5,_0x59a444){_0x3fded5=_0x3fded5-0x0;var _0x409e9f=_0xcbb9[_0x3fded5];return _0x409e9f;};'use strict';var _=require('lodash');var util=require(_0x9cbb('0x0'));var moment=require(_0x9cbb('0x1'));var BPromise=require(_0x9cbb('0x2'));var rs=require(_0x9cbb('0x3'));var fs=require('fs');var Redis=require(_0x9cbb('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9cbb('0x5'))('rpc');var config=require(_0x9cbb('0x6'));var jayson=require(_0x9cbb('0x7'));var client=jayson[_0x9cbb('0x8')][_0x9cbb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xc52d07,_0x23b11d,_0x454ebf){return new BPromise(function(_0x26d043,_0x16fe84){return client[_0x9cbb('0xa')](_0xc52d07,_0x454ebf)[_0x9cbb('0xb')](function(_0x2df780){logger['info'](_0x9cbb('0xc'),_0x23b11d,_0x9cbb('0xd'));logger[_0x9cbb('0xe')](_0x9cbb('0xf'),_0x23b11d,'request\x20sent',JSON[_0x9cbb('0x10')](_0x2df780));if(_0x2df780[_0x9cbb('0x11')]){if(_0x2df780['error'][_0x9cbb('0x12')]===0x1f4){logger[_0x9cbb('0x11')](_0x9cbb('0xc'),_0x23b11d,_0x2df780[_0x9cbb('0x11')]['message']);return _0x16fe84(_0x2df780['error'][_0x9cbb('0x13')]);}logger[_0x9cbb('0x11')](_0x9cbb('0xc'),_0x23b11d,_0x2df780['error'][_0x9cbb('0x13')]);return _0x26d043(_0x2df780[_0x9cbb('0x11')]['message']);}else{logger[_0x9cbb('0x14')](_0x9cbb('0xc'),_0x23b11d,'request\x20sent');_0x26d043(_0x2df780['result'][_0x9cbb('0x13')]);}})['catch'](function(_0x441f56){logger[_0x9cbb('0x11')](_0x9cbb('0xc'),_0x23b11d,_0x441f56);_0x16fe84(_0x441f56);});});}exports[_0x9cbb('0x15')]=function(_0x952db3){var _0xac7217=this;return new Promise(function(_0x1f4447,_0x5941ef){return db[_0x9cbb('0x16')]['findAll']({'raw':_0x952db3[_0x9cbb('0x17')]?_0x952db3[_0x9cbb('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x952db3[_0x9cbb('0x17')]?_0x952db3['options'][_0x9cbb('0x18')]||null:null,'attributes':_0x952db3[_0x9cbb('0x17')]?_0x952db3[_0x9cbb('0x17')][_0x9cbb('0x19')]||null:null,'limit':_0x952db3[_0x9cbb('0x17')]?_0x952db3['options'][_0x9cbb('0x1a')]||null:null,'include':_0x952db3[_0x9cbb('0x17')]?_0x952db3[_0x9cbb('0x17')]['include']?_['map'](_0x952db3[_0x9cbb('0x17')][_0x9cbb('0x1b')],function(_0x1ceba0){return{'model':db[_0x1ceba0[_0x9cbb('0x1c')]],'as':_0x1ceba0['as'],'attributes':_0x1ceba0[_0x9cbb('0x19')],'include':_0x1ceba0[_0x9cbb('0x1b')]?_[_0x9cbb('0x1d')](_0x1ceba0[_0x9cbb('0x1b')],function(_0xe6a162){return{'model':db[_0xe6a162['model']],'as':_0xe6a162['as'],'attributes':_0xe6a162['attributes'],'include':_0xe6a162['include']?_['map'](_0xe6a162[_0x9cbb('0x1b')],function(_0x479fa4){return{'model':db[_0x479fa4['model']],'as':_0x479fa4['as'],'attributes':_0x479fa4[_0x9cbb('0x19')]};}):[]};}):[]};}):[]:[]})[_0x9cbb('0xb')](function(_0x23ac5c){logger['info'](_0x9cbb('0x15'),_0x952db3);logger[_0x9cbb('0xe')]('GetCmHopperBlack',_0x952db3,JSON[_0x9cbb('0x10')](_0x23ac5c));_0x1f4447(_0x23ac5c);})[_0x9cbb('0x1e')](function(_0x58831b){logger[_0x9cbb('0x11')]('GetCmHopperBlack',_0x58831b[_0x9cbb('0x13')],_0x952db3);_0x5941ef(_0xac7217['error'](0x1f4,_0x58831b['message']));});});};exports[_0x9cbb('0x1f')]=function(_0x11c723){var _0x48e76f=this;return new Promise(function(_0x310a1f,_0x28a89e){return db[_0x9cbb('0x16')][_0x9cbb('0x20')](_0x11c723[_0x9cbb('0x21')],{'raw':_0x11c723[_0x9cbb('0x17')]?_0x11c723['options'][_0x9cbb('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11c723[_0x9cbb('0x17')]?_0x11c723['options'][_0x9cbb('0x18')]||null:null,'attributes':_0x11c723[_0x9cbb('0x17')]?_0x11c723[_0x9cbb('0x17')][_0x9cbb('0x19')]||null:null,'limit':_0x11c723[_0x9cbb('0x17')]?_0x11c723[_0x9cbb('0x17')][_0x9cbb('0x1a')]||null:null})[_0x9cbb('0xb')](function(_0x59e729){logger[_0x9cbb('0x14')]('UpdateCmHopperBlack',_0x11c723);logger[_0x9cbb('0xe')](_0x9cbb('0x1f'),_0x11c723,JSON[_0x9cbb('0x10')](_0x59e729));_0x310a1f(_0x59e729);})[_0x9cbb('0x1e')](function(_0x28a6dd){logger['error'](_0x9cbb('0x1f'),_0x28a6dd[_0x9cbb('0x13')],_0x11c723);_0x28a89e(_0x48e76f[_0x9cbb('0x11')](0x1f4,_0x28a6dd[_0x9cbb('0x13')]));});});};exports['DestroyCmHopperBlack']=function(_0x2590af){var _0x5e16ed=this;return new Promise(function(_0x429946,_0x8302f3){return db[_0x9cbb('0x16')][_0x9cbb('0x23')]({'where':_0x2590af[_0x9cbb('0x17')]?_0x2590af[_0x9cbb('0x17')]['where']||null:null})[_0x9cbb('0xb')](function(_0x213613){logger[_0x9cbb('0x14')](_0x9cbb('0x24'),_0x2590af);logger['debug'](_0x9cbb('0x24'),_0x2590af,JSON[_0x9cbb('0x10')](_0x213613));_0x429946(_0x213613);})[_0x9cbb('0x1e')](function(_0x16b7d4){logger[_0x9cbb('0x11')](_0x9cbb('0x24'),_0x16b7d4[_0x9cbb('0x13')],_0x2590af);_0x8302f3(_0x5e16ed[_0x9cbb('0x11')](0x1f4,_0x16b7d4[_0x9cbb('0x13')]));});});};
\ No newline at end of file
index e485949..6231690 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0424=['isAuthenticated','index','/describe','/:id','show','update','delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','./cmHopperBlack.controller','get'];(function(_0x28578d,_0xcf5cf0){var _0x524826=function(_0x4a51b7){while(--_0x4a51b7){_0x28578d['push'](_0x28578d['shift']());}};_0x524826(++_0xcf5cf0);}(_0x0424,0x159));var _0x4042=function(_0x324189,_0x202ac1){_0x324189=_0x324189-0x0;var _0x495eee=_0x0424[_0x324189];return _0x495eee;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4042('0x0'));var timeout=require(_0x4042('0x1'));var express=require(_0x4042('0x2'));var router=express[_0x4042('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4042('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4042('0x5'));router[_0x4042('0x6')]('/',auth[_0x4042('0x7')](),controller[_0x4042('0x8')]);router[_0x4042('0x6')](_0x4042('0x9'),auth[_0x4042('0x7')](),controller['describe']);router['get'](_0x4042('0xa'),auth[_0x4042('0x7')](),controller[_0x4042('0xb')]);router['put'](_0x4042('0xa'),auth[_0x4042('0x7')](),controller[_0x4042('0xc')]);router[_0x4042('0xd')](_0x4042('0xa'),auth[_0x4042('0x7')](),controller[_0x4042('0xe')]);module[_0x4042('0xf')]=router;
\ No newline at end of file
+var _0x5d17=['index','/describe','isAuthenticated','describe','/:id','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get'];(function(_0x220f3f,_0x11c540){var _0x1f170e=function(_0x2c0ec9){while(--_0x2c0ec9){_0x220f3f['push'](_0x220f3f['shift']());}};_0x1f170e(++_0x11c540);}(_0x5d17,0x114));var _0x75d1=function(_0x4a8fea,_0x4603f4){_0x4a8fea=_0x4a8fea-0x0;var _0x5e23a4=_0x5d17[_0x4a8fea];return _0x5e23a4;};'use strict';var multer=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x75d1('0x2'));var router=express[_0x75d1('0x3')]();var fs_extra=require(_0x75d1('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x75d1('0x5'));var config=require(_0x75d1('0x6'));var controller=require(_0x75d1('0x7'));router[_0x75d1('0x8')]('/',auth['isAuthenticated'](),controller[_0x75d1('0x9')]);router[_0x75d1('0x8')](_0x75d1('0xa'),auth[_0x75d1('0xb')](),controller[_0x75d1('0xc')]);router[_0x75d1('0x8')](_0x75d1('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x75d1('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x75d1('0xf')]);router[_0x75d1('0x10')]('/:id',auth[_0x75d1('0xb')](),controller[_0x75d1('0x11')]);module[_0x75d1('0x12')]=router;
\ No newline at end of file
index 37877f0..d3a9137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd7f=['INTEGER','getDataValue','endtime','setDataValue','followuptime','diff','seconds','BOOLEAN','moment','exports','STRING','DATE'];(function(_0x2bc485,_0x408030){var _0x27f7a0=function(_0x24e1d2){while(--_0x24e1d2){_0x2bc485['push'](_0x2bc485['shift']());}};_0x27f7a0(++_0x408030);}(_0xdd7f,0xc8));var _0xfdd7=function(_0x3b3d69,_0x22817c){_0x3b3d69=_0x3b3d69-0x0;var _0x5a42d1=_0xdd7f[_0x3b3d69];return _0x5a42d1;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xfdd7('0x0'));module[_0xfdd7('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xfdd7('0x2')]},'scheduledat':{'type':Sequelize[_0xfdd7('0x3')]},'countbusyretry':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xfdd7('0x2')]},'originatecalleridnum':{'type':Sequelize[_0xfdd7('0x2')]},'originatecalleridname':{'type':Sequelize[_0xfdd7('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xfdd7('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xfdd7('0x3')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xfdd7('0x3')]},'ringtime':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xfdd7('0x2')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xfdd7('0x2')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xfdd7('0x2')]},'thirdDisposition':{'type':Sequelize[_0xfdd7('0x2')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x46992a){var _0x3a78a3=this[_0xfdd7('0x5')](_0xfdd7('0x6'));if(_0x3a78a3&&_0x46992a){this[_0xfdd7('0x7')](_0xfdd7('0x8'),moment(_0x46992a)[_0xfdd7('0x9')](moment(_0x3a78a3),_0xfdd7('0xa')));}return this[_0xfdd7('0x7')]('dispositionat',_0x46992a);}},'amd':{'type':Sequelize[_0xfdd7('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0xfdd7('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xfdd7('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xfdd7('0x3')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xfdd7('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xfdd7('0x3')]},'deleted':{'type':Sequelize[_0xfdd7('0x2')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xfdd7('0x3')]},'recallme':{'type':Sequelize[_0xfdd7('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xfdd7('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1ef8=['STRING','getDataValue','endtime','setDataValue','followuptime','diff','seconds','dispositionat','BOOLEAN','sequelize','DATE','INTEGER'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x1ef8,0xd5));var _0x81ef=function(_0x3045d8,_0x55a04e){_0x3045d8=_0x3045d8-0x0;var _0x5f2a62=_0x1ef8[_0x3045d8];return _0x5f2a62;};'use strict';var Sequelize=require(_0x81ef('0x0'));var moment=require('moment');module['exports']={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x81ef('0x1')]},'countbusyretry':{'type':Sequelize[_0x81ef('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x81ef('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x81ef('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x81ef('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x81ef('0x3')]},'calleridname':{'type':Sequelize[_0x81ef('0x3')]},'starttime':{'type':Sequelize[_0x81ef('0x1')]},'responsetime':{'type':Sequelize[_0x81ef('0x1')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x81ef('0x1')]},'endtime':{'type':Sequelize[_0x81ef('0x1')]},'ringtime':{'type':Sequelize[_0x81ef('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x81ef('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x81ef('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x81ef('0x3')]},'campaign':{'type':Sequelize[_0x81ef('0x3')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x81ef('0x3')]},'reason':{'type':Sequelize[_0x81ef('0x3')]},'disposition':{'type':Sequelize[_0x81ef('0x3')]},'secondDisposition':{'type':Sequelize[_0x81ef('0x3')]},'thirdDisposition':{'type':Sequelize[_0x81ef('0x3')]},'dispositionat':{'type':Sequelize[_0x81ef('0x1')],'set':function(_0x44146c){var _0x39130b=this[_0x81ef('0x4')](_0x81ef('0x5'));if(_0x39130b&&_0x44146c){this[_0x81ef('0x6')](_0x81ef('0x7'),moment(_0x44146c)[_0x81ef('0x8')](moment(_0x39130b),_0x81ef('0x9')));}return this['setDataValue'](_0x81ef('0xa'),_0x44146c);}},'amd':{'type':Sequelize[_0x81ef('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0x81ef('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x81ef('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x81ef('0xb')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x81ef('0x1')]},'callback':{'type':Sequelize[_0x81ef('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x81ef('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x81ef('0x1')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x81ef('0x1')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize[_0x81ef('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x81ef('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x81ef('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 96a2b9e..0ef815e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','CmHopperFinal','includeAll','findAll','catch','show','uniqueid','body','find','params','countContactsQueueCampaignHopperFinal','COUNT','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','congestionContacts','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','busyContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','VoiceQueue','insert','fromQuery','phone','scheduledAt','VoiceQueueId','createdAt','updatedAt','ANY_VALUE(calleridnum)','field','NOW()','ANY_VALUE(ContactId)','ContactId','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','VoiceQueueId\x20=\x20?','cm_hopper_final','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','cm_hopper','ListId','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum','CmHopper','findOne','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'];(function(_0x16b3e7,_0xeedf3d){var _0x236118=function(_0x5702b7){while(--_0x5702b7){_0x16b3e7['push'](_0x16b3e7['shift']());}};_0x236118(++_0xeedf3d);}(_0xda19,0xd5));var _0x9da1=function(_0x2826f2,_0x38b44e){_0x2826f2=_0x2826f2-0x0;var _0x2d6a31=_0xda19[_0x2826f2];return _0x2d6a31;};'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['CmHopperFinal'][_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['describe']=function(_0x336fc3,_0x351d4d){return db[_0x9da1('0x3e')]['describe']()[_0x9da1('0x24')](respondWithResult(_0x351d4d,null))['catch'](handleError(_0x351d4d,null));};exports['update']=function(_0xfbdde9,_0x43c47d){if(_0xfbdde9['body'][_0x9da1('0x43')]){delete _0xfbdde9[_0x9da1('0x44')]['uniqueid'];}return db[_0x9da1('0x3e')][_0x9da1('0x45')]({'where':{'uniqueid':_0xfbdde9[_0x9da1('0x46')]['id']}})[_0x9da1('0x24')](handleEntityNotFound(_0x43c47d,null))[_0x9da1('0x24')](saveUpdates(_0xfbdde9[_0x9da1('0x44')],null))[_0x9da1('0x24')](respondWithResult(_0x43c47d,null))[_0x9da1('0x41')](handleError(_0x43c47d,null));};exports[_0x9da1('0x47')]=function(_0x5c9b46,_0x147c65,_0xe6c667){return db[_0x9da1('0x3e')][_0x9da1('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x5c9b46['params']['id']},'attributes':[[db['sequelize']['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x4b')))),_0x9da1('0x4c')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x4d')))),_0x9da1('0x4e')],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')]['literal'](_0x9da1('0x4f')))),'busyContacts'],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x50')))),_0x9da1('0x51')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x9da1('0x52')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x53')))),_0x9da1('0x54')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db['sequelize']['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')]('`state`\x20=\x2022,\x201,\x20null'))),_0x9da1('0x55')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x56')))),'answeringMachine']]})[_0x9da1('0x24')](handleEntityNotFound(_0x147c65,null))[_0x9da1('0x24')](respondWithResult(_0x147c65,null))[_0x9da1('0x41')](handleError(_0x147c65,null));};exports[_0x9da1('0x57')]=function(_0x562e05,_0x1a9df0,_0x5c236e){return db[_0x9da1('0x3e')][_0x9da1('0x40')]({'raw':![],'where':{'CampaignId':_0x562e05[_0x9da1('0x46')]['id']},'attributes':[[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db['sequelize']['literal'](_0x9da1('0x4b')))),'noSuchContacts'],[db['sequelize']['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db['sequelize'][_0x9da1('0x4a')]('`state`\x20=\x203,\x201,\x20null'))),_0x9da1('0x4e')],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')]['literal'](_0x9da1('0x4f')))),_0x9da1('0x58')],[db['sequelize']['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x50')))),_0x9da1('0x51')],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db['sequelize']['literal'](_0x9da1('0x59')))),_0x9da1('0x52')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x53')))),_0x9da1('0x54')],[db['sequelize']['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x5a')))),'reCallContacts'],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x56')))),'answeringMachine']]})[_0x9da1('0x24')](handleEntityNotFound(_0x1a9df0,null))['then'](respondWithResult(_0x1a9df0,null))[_0x9da1('0x41')](handleError(_0x1a9df0,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x7cfa7e,_0xdd3997,_0x44b6c0){return db[_0x9da1('0x5b')]['find']({'where':{'id':_0x7cfa7e['params']['id']}})['then'](handleEntityNotFound(_0xdd3997,null))[_0x9da1('0x24')](function(_0x2b1a71){var _0x266533;if(_0x2b1a71){_0x266533=squel[_0x9da1('0x5c')]()['into']('cm_hopper')[_0x9da1('0x5d')]([_0x9da1('0x5e'),_0x9da1('0x5f'),'ContactId','ListId',_0x9da1('0x60'),_0x9da1('0x61'),_0x9da1('0x62')],squel['select']()['field'](_0x9da1('0x63'),_0x9da1('0x5e'))[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x5f'))['field'](_0x9da1('0x66'),_0x9da1('0x67'))[_0x9da1('0x64')](_0x9da1('0x68'),'ListId')[_0x9da1('0x64')](_0x9da1('0x69'),_0x9da1('0x60'))['field'](_0x9da1('0x65'),_0x9da1('0x61'))[_0x9da1('0x64')]('NOW()',_0x9da1('0x62'))[_0x9da1('0x6a')]('cm_hopper_final')[_0x9da1('0x38')]('VoiceQueueId\x20=\x20?',_0x7cfa7e[_0x9da1('0x46')]['id']['toString']())[_0x9da1('0x38')](_0x9da1('0x6b'),_0x7cfa7e[_0x9da1('0x44')][_0x9da1('0x6c')][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x6e'))[_0x9da1('0x38')](_0x9da1('0x6f'),squel[_0x9da1('0x70')]()[_0x9da1('0x64')](_0x9da1('0x5e'))[_0x9da1('0x6a')]('cm_hopper')[_0x9da1('0x38')](_0x9da1('0x71'),_0x7cfa7e[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]()))[_0x9da1('0x38')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x9da1('0x70')]()[_0x9da1('0x64')]('calleridnum')['from'](_0x9da1('0x72'))[_0x9da1('0x38')](_0x9da1('0x71'),_0x7cfa7e[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x73')))[_0x9da1('0x74')](_0x9da1('0x67')))[_0x9da1('0x6d')]();return db[_0x9da1('0x49')][_0x9da1('0x2e')](_0x266533);}return[];})[_0x9da1('0x24')](respondWithResult(_0xdd3997,null))['catch'](handleError(_0xdd3997,null));};exports[_0x9da1('0x75')]=function(_0x3a0a84,_0x3f9782,_0x30b6fc){return db[_0x9da1('0x76')]['find']({'where':{'id':_0x3a0a84[_0x9da1('0x46')]['id']}})[_0x9da1('0x24')](handleEntityNotFound(_0x3f9782,null))['then'](function(_0x33b625){var _0x5a0533;if(_0x33b625){_0x5a0533=squel[_0x9da1('0x5c')]()['into'](_0x9da1('0x77'))[_0x9da1('0x5d')]([_0x9da1('0x5e'),_0x9da1('0x5f'),_0x9da1('0x67'),_0x9da1('0x78'),_0x9da1('0x79'),_0x9da1('0x61'),_0x9da1('0x62')],squel[_0x9da1('0x70')]()[_0x9da1('0x64')](_0x9da1('0x63'),'phone')[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x5f'))[_0x9da1('0x64')](_0x9da1('0x66'),_0x9da1('0x67'))['field']('ANY_VALUE(ListId)',_0x9da1('0x78'))[_0x9da1('0x64')](_0x9da1('0x7a'),'CampaignId')[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x61'))[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x62'))[_0x9da1('0x6a')]('cm_hopper_final')[_0x9da1('0x38')](_0x9da1('0x7b'),_0x3a0a84['params']['id']['toString']())[_0x9da1('0x38')]('state\x20=\x20?',_0x3a0a84['body'][_0x9da1('0x6c')][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x6e'))[_0x9da1('0x38')](_0x9da1('0x6f'),squel[_0x9da1('0x70')]()[_0x9da1('0x64')]('phone')['from'](_0x9da1('0x77'))[_0x9da1('0x38')](_0x9da1('0x7b'),_0x3a0a84[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]()))[_0x9da1('0x38')](_0x9da1('0x6f'),squel[_0x9da1('0x70')]()['field'](_0x9da1('0x7c'))['from'](_0x9da1('0x72'))[_0x9da1('0x38')](_0x9da1('0x7b'),_0x3a0a84[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x73')))['group'](_0x9da1('0x67')))['toString']();return db[_0x9da1('0x49')][_0x9da1('0x2e')](_0x5a0533);}return[];})[_0x9da1('0x24')](respondWithResult(_0x3f9782,null))[_0x9da1('0x41')](handleError(_0x3f9782,null));};exports['checkContactHopper']=function(_0x3310af,_0x1f93bf,_0x2afe1e){return db[_0x9da1('0x7d')][_0x9da1('0x7e')]({'where':{'VoiceQueueId':_0x3310af[_0x9da1('0x44')][_0x9da1('0x60')],'CampaignId':_0x3310af[_0x9da1('0x44')][_0x9da1('0x79')],'ContactId':_0x3310af[_0x9da1('0x44')][_0x9da1('0x67')]}})[_0x9da1('0x24')](handleEntityNotFound(_0x1f93bf,null))[_0x9da1('0x24')](function(_0x32ff53){if(_0x32ff53){return _0x32ff53;}return null;})['then'](respondWithResult(_0x1f93bf,null))[_0x9da1('0x41')](handleError(_0x1f93bf,null));};
\ No newline at end of file
+var _0xba34=['insert','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(ContactId)','ANY_VALUE(CampaignId)','state\x20=\x20?','CampaignId\x20=\x20?','calleridnum','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','CmHopperFinal','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','body','uniqueid','params','countContactsQueueCampaignHopperFinal','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','NOW()','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign'];(function(_0x13e724,_0x296739){var _0x334a44=function(_0x28f54e){while(--_0x28f54e){_0x13e724['push'](_0x13e724['shift']());}};_0x334a44(++_0x296739);}(_0xba34,0x119));var _0x4ba3=function(_0x33d7e6,_0x1e3711){_0x33d7e6=_0x33d7e6-0x0;var _0x1d5d3b=_0xba34[_0x33d7e6];return _0x1d5d3b;};'use strict';var emlformat=require(_0x4ba3('0x0'));var rimraf=require(_0x4ba3('0x1'));var zipdir=require(_0x4ba3('0x2'));var jsonpatch=require(_0x4ba3('0x3'));var rp=require(_0x4ba3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4ba3('0x5'));var path=require(_0x4ba3('0x6'));var sox=require(_0x4ba3('0x7'));var csv=require(_0x4ba3('0x8'));var ejs=require(_0x4ba3('0x9'));var fs=require('fs');var fs_extra=require(_0x4ba3('0xa'));var _=require(_0x4ba3('0xb'));var squel=require('squel');var crypto=require(_0x4ba3('0xc'));var jsforce=require(_0x4ba3('0xd'));var deskjs=require(_0x4ba3('0xe'));var toCsv=require(_0x4ba3('0x8'));var querystring=require(_0x4ba3('0xf'));var Papa=require(_0x4ba3('0x10'));var Redis=require(_0x4ba3('0x11'));var authService=require(_0x4ba3('0x12'));var qs=require(_0x4ba3('0x13'));var as=require(_0x4ba3('0x14'));var hardwareService=require(_0x4ba3('0x15'));var logger=require('../../config/logger')(_0x4ba3('0x16'));var utils=require(_0x4ba3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4ba3('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1073d4,_0x52f55c){_0x52f55c=_0x52f55c||0xcc;return function(_0x256f02){if(_0x256f02){return _0x1073d4[_0x4ba3('0x19')](_0x52f55c);}return _0x1073d4[_0x4ba3('0x1a')](_0x52f55c)[_0x4ba3('0x1b')]();};}function respondWithResult(_0x2bc796,_0x3d2ace){_0x3d2ace=_0x3d2ace||0xc8;return function(_0x3a74f7){if(_0x3a74f7){return _0x2bc796[_0x4ba3('0x1a')](_0x3d2ace)[_0x4ba3('0x1c')](_0x3a74f7);}};}function respondWithFilteredResult(_0x401366,_0x36638b){return function(_0x301359){if(_0x301359){var _0x29a9d1=typeof _0x36638b[_0x4ba3('0x1d')]===_0x4ba3('0x1e')&&typeof _0x36638b[_0x4ba3('0x1f')]==='undefined';var _0x382fd0=_0x301359[_0x4ba3('0x20')];var _0x5ff7ce=_0x29a9d1?0x0:_0x36638b[_0x4ba3('0x1d')];var _0x556290=_0x29a9d1?_0x301359[_0x4ba3('0x20')]:_0x36638b[_0x4ba3('0x1d')]+_0x36638b[_0x4ba3('0x1f')];var _0x1e2ce5;if(_0x556290>=_0x382fd0){_0x556290=_0x382fd0;_0x1e2ce5=0xc8;}else{_0x1e2ce5=0xce;}_0x401366[_0x4ba3('0x1a')](_0x1e2ce5);return _0x401366[_0x4ba3('0x21')]('Content-Range',_0x5ff7ce+'-'+_0x556290+'/'+_0x382fd0)['json'](_0x301359);}return null;};}function patchUpdates(_0x2278b0){return function(_0x579d9f){try{jsonpatch[_0x4ba3('0x22')](_0x579d9f,_0x2278b0,!![]);}catch(_0x163967){return BPromise[_0x4ba3('0x23')](_0x163967);}return _0x579d9f[_0x4ba3('0x24')]();};}function saveUpdates(_0x46f1f5,_0x278a23){return function(_0x4a0823){if(_0x4a0823){return _0x4a0823[_0x4ba3('0x25')](_0x46f1f5)[_0x4ba3('0x26')](function(_0x5c28f9){return _0x5c28f9;});}return null;};}function removeEntity(_0x28bb3d,_0x4ffe39){return function(_0x1ae4de){if(_0x1ae4de){return _0x1ae4de[_0x4ba3('0x27')]()[_0x4ba3('0x26')](function(){_0x28bb3d[_0x4ba3('0x1a')](0xcc)[_0x4ba3('0x1b')]();});}};}function handleEntityNotFound(_0xe29a49,_0x159596){return function(_0xe1f7d2){if(!_0xe1f7d2){_0xe29a49[_0x4ba3('0x19')](0x194);}return _0xe1f7d2;};}function handleError(_0x2e67a0,_0x50c729){_0x50c729=_0x50c729||0x1f4;return function(_0x252f37){logger[_0x4ba3('0x28')](_0x252f37[_0x4ba3('0x29')]);if(_0x252f37['name']){delete _0x252f37[_0x4ba3('0x2a')];}_0x2e67a0[_0x4ba3('0x1a')](_0x50c729)[_0x4ba3('0x2b')](_0x252f37);};}exports['index']=function(_0x10cae6,_0x843276){var _0x34ecb4={},_0x22394d={},_0x4a339e={'count':0x0,'rows':[]};var _0x590108=_[_0x4ba3('0x2c')](db[_0x4ba3('0x2d')][_0x4ba3('0x2e')],function(_0x19f039){return{'name':_0x19f039[_0x4ba3('0x2f')],'type':_0x19f039[_0x4ba3('0x30')]['key']};});_0x22394d[_0x4ba3('0x31')]=_[_0x4ba3('0x2c')](_0x590108,_0x4ba3('0x2a'));_0x22394d[_0x4ba3('0x32')]=_[_0x4ba3('0x33')](_0x10cae6[_0x4ba3('0x32')]);_0x22394d[_0x4ba3('0x34')]=_[_0x4ba3('0x35')](_0x22394d[_0x4ba3('0x31')],_0x22394d[_0x4ba3('0x32')]);_0x34ecb4['attributes']=_['intersection'](_0x22394d['model'],qs[_0x4ba3('0x36')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x36')]));_0x34ecb4[_0x4ba3('0x37')]=_0x34ecb4[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x34ecb4[_0x4ba3('0x37')]:_0x22394d[_0x4ba3('0x31')];if(!_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x39')](_0x4ba3('0x3a'))){_0x34ecb4[_0x4ba3('0x1f')]=qs['limit'](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x1f')]);_0x34ecb4[_0x4ba3('0x1d')]=qs['offset'](_0x10cae6[_0x4ba3('0x32')]['offset']);}_0x34ecb4[_0x4ba3('0x3b')]=qs[_0x4ba3('0x3c')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x3c')]);_0x34ecb4[_0x4ba3('0x3d')]=qs[_0x4ba3('0x34')](_['pick'](_0x10cae6[_0x4ba3('0x32')],_0x22394d[_0x4ba3('0x34')]),_0x590108);if(_0x10cae6[_0x4ba3('0x32')]['filter']){_0x34ecb4[_0x4ba3('0x3d')]=_[_0x4ba3('0x3e')](_0x34ecb4['where'],{'$or':_[_0x4ba3('0x2c')](_0x590108,function(_0x503777){if(_0x503777['type']!==_0x4ba3('0x3f')){var _0x1acc74={};_0x1acc74[_0x503777[_0x4ba3('0x2a')]]={'$like':'%'+_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x40')]+'%'};return _0x1acc74;}})});}_0x34ecb4=_['merge']({},_0x34ecb4,_0x10cae6[_0x4ba3('0x41')]);var _0x10e4b5={'where':_0x34ecb4[_0x4ba3('0x3d')]};return db[_0x4ba3('0x2d')][_0x4ba3('0x20')](_0x10e4b5)[_0x4ba3('0x26')](function(_0x349af4){_0x4a339e[_0x4ba3('0x20')]=_0x349af4;if(_0x10cae6['query'][_0x4ba3('0x42')]){_0x34ecb4[_0x4ba3('0x43')]=[{'all':!![]}];}return db[_0x4ba3('0x2d')][_0x4ba3('0x44')](_0x34ecb4);})[_0x4ba3('0x26')](function(_0x25b2c9){_0x4a339e[_0x4ba3('0x45')]=_0x25b2c9;return _0x4a339e;})[_0x4ba3('0x26')](respondWithFilteredResult(_0x843276,_0x34ecb4))[_0x4ba3('0x46')](handleError(_0x843276,null));};exports[_0x4ba3('0x47')]=function(_0x3b9a0a,_0x1c58d2){var _0x1d031b={'raw':!![],'where':{'id':_0x3b9a0a['params']['id']}},_0x28b649={};_0x28b649['model']=_['keys'](db['CmHopperFinal']['rawAttributes']);_0x28b649[_0x4ba3('0x32')]=_['keys'](_0x3b9a0a[_0x4ba3('0x32')]);_0x28b649['filters']=_[_0x4ba3('0x35')](_0x28b649[_0x4ba3('0x31')],_0x28b649[_0x4ba3('0x32')]);_0x1d031b[_0x4ba3('0x37')]=_[_0x4ba3('0x35')](_0x28b649['model'],qs[_0x4ba3('0x36')](_0x3b9a0a['query'][_0x4ba3('0x36')]));_0x1d031b['attributes']=_0x1d031b[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x1d031b[_0x4ba3('0x37')]:_0x28b649[_0x4ba3('0x31')];if(_0x3b9a0a[_0x4ba3('0x32')][_0x4ba3('0x42')]){_0x1d031b[_0x4ba3('0x43')]=[{'all':!![]}];}_0x1d031b=_['merge']({},_0x1d031b,_0x3b9a0a[_0x4ba3('0x41')]);return db[_0x4ba3('0x2d')][_0x4ba3('0x48')](_0x1d031b)[_0x4ba3('0x26')](handleEntityNotFound(_0x1c58d2,null))[_0x4ba3('0x26')](respondWithResult(_0x1c58d2,null))['catch'](handleError(_0x1c58d2,null));};exports['describe']=function(_0xa4bbb2,_0x1fe115){return db[_0x4ba3('0x2d')]['describe']()[_0x4ba3('0x26')](respondWithResult(_0x1fe115,null))[_0x4ba3('0x46')](handleError(_0x1fe115,null));};exports[_0x4ba3('0x25')]=function(_0x58648d,_0x47f588){if(_0x58648d[_0x4ba3('0x49')]['uniqueid']){delete _0x58648d[_0x4ba3('0x49')][_0x4ba3('0x4a')];}return db[_0x4ba3('0x2d')][_0x4ba3('0x48')]({'where':{'uniqueid':_0x58648d[_0x4ba3('0x4b')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x47f588,null))['then'](saveUpdates(_0x58648d[_0x4ba3('0x49')],null))[_0x4ba3('0x26')](respondWithResult(_0x47f588,null))['catch'](handleError(_0x47f588,null));};exports[_0x4ba3('0x4c')]=function(_0x12ae6f,_0x156c2d,_0x19d6a3){return db[_0x4ba3('0x2d')]['findAll']({'raw':![],'where':{'VoiceQueueId':_0x12ae6f[_0x4ba3('0x4b')]['id']},'attributes':[[db[_0x4ba3('0x4d')]['fn']('COUNT',db[_0x4ba3('0x4d')]['fn']('IF',db[_0x4ba3('0x4d')][_0x4ba3('0x4e')](_0x4ba3('0x4f')))),_0x4ba3('0x50')],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db[_0x4ba3('0x4d')]['fn']('IF',db[_0x4ba3('0x4d')][_0x4ba3('0x4e')](_0x4ba3('0x52')))),_0x4ba3('0x53')],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db[_0x4ba3('0x4d')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x205,\x201,\x20null'))),_0x4ba3('0x54')],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db[_0x4ba3('0x4d')]['fn']('IF',db[_0x4ba3('0x4d')]['literal'](_0x4ba3('0x55')))),_0x4ba3('0x56')],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db[_0x4ba3('0x4d')]['fn']('IF',db[_0x4ba3('0x4d')][_0x4ba3('0x4e')](_0x4ba3('0x57')))),_0x4ba3('0x58')],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db[_0x4ba3('0x4d')]['fn']('IF',db[_0x4ba3('0x4d')][_0x4ba3('0x4e')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x4ba3('0x59')],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db[_0x4ba3('0x4d')]['fn']('IF',db[_0x4ba3('0x4d')][_0x4ba3('0x4e')](_0x4ba3('0x5a')))),_0x4ba3('0x5b')],[db['sequelize']['fn'](_0x4ba3('0x51'),db[_0x4ba3('0x4d')]['fn']('IF',db[_0x4ba3('0x4d')]['literal'](_0x4ba3('0x5c')))),'answeringMachine']]})[_0x4ba3('0x26')](handleEntityNotFound(_0x156c2d,null))[_0x4ba3('0x26')](respondWithResult(_0x156c2d,null))[_0x4ba3('0x46')](handleError(_0x156c2d,null));};exports[_0x4ba3('0x5d')]=function(_0xf0fd32,_0x4b5289,_0x3d9a7e){return db[_0x4ba3('0x2d')][_0x4ba3('0x44')]({'raw':![],'where':{'CampaignId':_0xf0fd32[_0x4ba3('0x4b')]['id']},'attributes':[[db[_0x4ba3('0x4d')]['fn']('COUNT',db[_0x4ba3('0x4d')]['fn']('IF',db[_0x4ba3('0x4d')][_0x4ba3('0x4e')](_0x4ba3('0x4f')))),_0x4ba3('0x50')],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db[_0x4ba3('0x4d')]['fn']('IF',db[_0x4ba3('0x4d')][_0x4ba3('0x4e')](_0x4ba3('0x52')))),'noAnswerContacts'],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db['sequelize']['fn']('IF',db['sequelize'][_0x4ba3('0x4e')](_0x4ba3('0x5e')))),'busyContacts'],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db[_0x4ba3('0x4d')]['fn']('IF',db['sequelize'][_0x4ba3('0x4e')](_0x4ba3('0x55')))),_0x4ba3('0x56')],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db[_0x4ba3('0x4d')]['fn']('IF',db['sequelize'][_0x4ba3('0x4e')](_0x4ba3('0x57')))),_0x4ba3('0x58')],[db['sequelize']['fn'](_0x4ba3('0x51'),db[_0x4ba3('0x4d')]['fn']('IF',db[_0x4ba3('0x4d')][_0x4ba3('0x4e')](_0x4ba3('0x5f')))),_0x4ba3('0x59')],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db['sequelize']['fn']('IF',db['sequelize'][_0x4ba3('0x4e')]('`state`\x20=\x2022,\x201,\x20null'))),_0x4ba3('0x5b')],[db[_0x4ba3('0x4d')]['fn'](_0x4ba3('0x51'),db['sequelize']['fn']('IF',db[_0x4ba3('0x4d')][_0x4ba3('0x4e')](_0x4ba3('0x5c')))),'answeringMachine']]})[_0x4ba3('0x26')](handleEntityNotFound(_0x4b5289,null))['then'](respondWithResult(_0x4b5289,null))[_0x4ba3('0x46')](handleError(_0x4b5289,null));};exports[_0x4ba3('0x60')]=function(_0x5dce8f,_0x37fedb,_0x2ed729){return db[_0x4ba3('0x61')][_0x4ba3('0x48')]({'where':{'id':_0x5dce8f[_0x4ba3('0x4b')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x37fedb,null))[_0x4ba3('0x26')](function(_0x329874){var _0x360127;if(_0x329874){_0x360127=squel['insert']()[_0x4ba3('0x62')](_0x4ba3('0x63'))[_0x4ba3('0x64')]([_0x4ba3('0x65'),_0x4ba3('0x66'),_0x4ba3('0x67'),_0x4ba3('0x68'),_0x4ba3('0x69'),_0x4ba3('0x6a'),_0x4ba3('0x6b')],squel[_0x4ba3('0x6c')]()[_0x4ba3('0x6d')]('ANY_VALUE(calleridnum)',_0x4ba3('0x65'))[_0x4ba3('0x6d')]('NOW()',_0x4ba3('0x66'))[_0x4ba3('0x6d')]('ANY_VALUE(ContactId)','ContactId')[_0x4ba3('0x6d')](_0x4ba3('0x6e'),_0x4ba3('0x68'))[_0x4ba3('0x6d')](_0x4ba3('0x6f'),_0x4ba3('0x69'))[_0x4ba3('0x6d')](_0x4ba3('0x70'),'createdAt')[_0x4ba3('0x6d')]('NOW()',_0x4ba3('0x6b'))[_0x4ba3('0x71')](_0x4ba3('0x72'))[_0x4ba3('0x3d')](_0x4ba3('0x73'),_0x5dce8f[_0x4ba3('0x4b')]['id'][_0x4ba3('0x74')]())[_0x4ba3('0x3d')]('state\x20=\x20?',_0x5dce8f[_0x4ba3('0x49')][_0x4ba3('0x75')][_0x4ba3('0x74')]())['where'](_0x4ba3('0x76'))[_0x4ba3('0x3d')](_0x4ba3('0x77'),squel[_0x4ba3('0x6c')]()[_0x4ba3('0x6d')](_0x4ba3('0x65'))[_0x4ba3('0x71')]('cm_hopper')['where'](_0x4ba3('0x73'),_0x5dce8f['params']['id'][_0x4ba3('0x74')]()))[_0x4ba3('0x3d')](_0x4ba3('0x77'),squel[_0x4ba3('0x6c')]()['field']('calleridnum')[_0x4ba3('0x71')](_0x4ba3('0x72'))['where'](_0x4ba3('0x73'),_0x5dce8f[_0x4ba3('0x4b')]['id'][_0x4ba3('0x74')]())[_0x4ba3('0x3d')](_0x4ba3('0x78')))[_0x4ba3('0x79')](_0x4ba3('0x67')))['toString']();return db[_0x4ba3('0x4d')][_0x4ba3('0x32')](_0x360127);}return[];})[_0x4ba3('0x26')](respondWithResult(_0x37fedb,null))['catch'](handleError(_0x37fedb,null));};exports[_0x4ba3('0x7a')]=function(_0x13dbc4,_0x4e334c,_0x39d1d3){return db[_0x4ba3('0x7b')]['find']({'where':{'id':_0x13dbc4['params']['id']}})['then'](handleEntityNotFound(_0x4e334c,null))['then'](function(_0x206e93){var _0x2d57a7;if(_0x206e93){_0x2d57a7=squel[_0x4ba3('0x7c')]()[_0x4ba3('0x62')](_0x4ba3('0x63'))[_0x4ba3('0x64')]([_0x4ba3('0x65'),'scheduledAt',_0x4ba3('0x67'),'ListId',_0x4ba3('0x7d'),'createdAt',_0x4ba3('0x6b')],squel[_0x4ba3('0x6c')]()[_0x4ba3('0x6d')](_0x4ba3('0x7e'),_0x4ba3('0x65'))['field']('NOW()',_0x4ba3('0x66'))[_0x4ba3('0x6d')](_0x4ba3('0x7f'),_0x4ba3('0x67'))[_0x4ba3('0x6d')](_0x4ba3('0x6e'),_0x4ba3('0x68'))[_0x4ba3('0x6d')](_0x4ba3('0x80'),_0x4ba3('0x7d'))[_0x4ba3('0x6d')](_0x4ba3('0x70'),'createdAt')[_0x4ba3('0x6d')]('NOW()',_0x4ba3('0x6b'))[_0x4ba3('0x71')](_0x4ba3('0x72'))[_0x4ba3('0x3d')]('CampaignId\x20=\x20?',_0x13dbc4[_0x4ba3('0x4b')]['id'][_0x4ba3('0x74')]())[_0x4ba3('0x3d')](_0x4ba3('0x81'),_0x13dbc4['body']['state'][_0x4ba3('0x74')]())[_0x4ba3('0x3d')](_0x4ba3('0x76'))['where'](_0x4ba3('0x77'),squel[_0x4ba3('0x6c')]()[_0x4ba3('0x6d')](_0x4ba3('0x65'))[_0x4ba3('0x71')](_0x4ba3('0x63'))['where'](_0x4ba3('0x82'),_0x13dbc4['params']['id'][_0x4ba3('0x74')]()))[_0x4ba3('0x3d')](_0x4ba3('0x77'),squel[_0x4ba3('0x6c')]()['field'](_0x4ba3('0x83'))[_0x4ba3('0x71')]('cm_hopper_final')[_0x4ba3('0x3d')]('CampaignId\x20=\x20?',_0x13dbc4[_0x4ba3('0x4b')]['id'][_0x4ba3('0x74')]())[_0x4ba3('0x3d')](_0x4ba3('0x78')))[_0x4ba3('0x79')]('ContactId'))['toString']();return db[_0x4ba3('0x4d')][_0x4ba3('0x32')](_0x2d57a7);}return[];})[_0x4ba3('0x26')](respondWithResult(_0x4e334c,null))['catch'](handleError(_0x4e334c,null));};exports[_0x4ba3('0x84')]=function(_0x38a7a8,_0x5553eb,_0x402ab1){return db[_0x4ba3('0x85')][_0x4ba3('0x86')]({'where':{'VoiceQueueId':_0x38a7a8[_0x4ba3('0x49')][_0x4ba3('0x69')],'CampaignId':_0x38a7a8[_0x4ba3('0x49')][_0x4ba3('0x7d')],'ContactId':_0x38a7a8[_0x4ba3('0x49')]['ContactId']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x5553eb,null))[_0x4ba3('0x26')](function(_0xfb16a6){if(_0xfb16a6){return _0xfb16a6;}return null;})[_0x4ba3('0x26')](respondWithResult(_0x5553eb,null))[_0x4ba3('0x46')](handleError(_0x5553eb,null));};
\ No newline at end of file
index 7d98b71..83d81d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29e1=['../../config/environment','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','../../config/logger','api','bluebird','request-promise','path'];(function(_0x55fa03,_0xcb96c2){var _0x2cd7cd=function(_0x56611f){while(--_0x56611f){_0x55fa03['push'](_0x55fa03['shift']());}};_0x2cd7cd(++_0xcb96c2);}(_0x29e1,0x1b2));var _0x129e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x29e1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x129e('0x0'));var util=require('util');var logger=require(_0x129e('0x1'))(_0x129e('0x2'));var moment=require('moment');var BPromise=require(_0x129e('0x3'));var rp=require(_0x129e('0x4'));var fs=require('fs');var path=require(_0x129e('0x5'));var rimraf=require('rimraf');var config=require(_0x129e('0x6'));var attributes=require('./cmHopperFinal.attributes');module['exports']=function(_0x1c45b4,_0x5f4475){return _0x1c45b4['define'](_0x129e('0x7'),attributes,{'tableName':_0x129e('0x8'),'paranoid':![],'indexes':[{'name':_0x129e('0x9'),'fields':[_0x129e('0x9')]},{'name':_0x129e('0xa'),'fields':[_0x129e('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4242=['moment','path','rimraf','../../config/environment','./cmHopperFinal.attributes','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger','api'];(function(_0x187f15,_0x267057){var _0x3821b8=function(_0x238e22){while(--_0x238e22){_0x187f15['push'](_0x187f15['shift']());}};_0x3821b8(++_0x267057);}(_0x4242,0x13e));var _0x2424=function(_0x446d77,_0x3e9d1e){_0x446d77=_0x446d77-0x0;var _0x5d5d7e=_0x4242[_0x446d77];return _0x5d5d7e;};'use strict';var _=require(_0x2424('0x0'));var util=require(_0x2424('0x1'));var logger=require(_0x2424('0x2'))(_0x2424('0x3'));var moment=require(_0x2424('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2424('0x5'));var rimraf=require(_0x2424('0x6'));var config=require(_0x2424('0x7'));var attributes=require(_0x2424('0x8'));module['exports']=function(_0xa7a437,_0x3a8547){return _0xa7a437[_0x2424('0x9')](_0x2424('0xa'),attributes,{'tableName':_0x2424('0xb'),'paranoid':![],'indexes':[{'name':'calleridnum','fields':[_0x2424('0xc')]},{'name':'uniqueid','fields':[_0x2424('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 6ad7a3f..e252307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x932f84,_0x345d56){var _0x2094a5=function(_0xc615c5){while(--_0xc615c5){_0x932f84['push'](_0x932f84['shift']());}};_0x2094a5(++_0x345d56);}(_0x7a54,0x106));var _0x47a5=function(_0x23334a,_0x258848){_0x23334a=_0x23334a-0x0;var _0x8dc418=_0x7a54[_0x23334a];return _0x8dc418;};'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
+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(_0xe96e9,_0x462ad9){var _0x57a712=function(_0x77353a){while(--_0x77353a){_0xe96e9['push'](_0xe96e9['shift']());}};_0x57a712(++_0x462ad9);}(_0xb10b,0x12a));var _0xbb10=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0xb10b[_0x5f09c5];return _0x426ad9;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 5030a10..1e9d698 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53d6=['../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','update','exports','util','path','connect-timeout','express','../../components/auth/service'];(function(_0x51b4f5,_0x138cfa){var _0x42fec9=function(_0x3d7a86){while(--_0x3d7a86){_0x51b4f5['push'](_0x51b4f5['shift']());}};_0x42fec9(++_0x138cfa);}(_0x53d6,0x113));var _0x653d=function(_0x338391,_0x4d5e84){_0x338391=_0x338391-0x0;var _0x363e1c=_0x53d6[_0x338391];return _0x363e1c;};'use strict';var multer=require('multer');var util=require(_0x653d('0x0'));var path=require(_0x653d('0x1'));var timeout=require(_0x653d('0x2'));var express=require(_0x653d('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x653d('0x4'));var interaction=require(_0x653d('0x5'));var config=require(_0x653d('0x6'));var controller=require(_0x653d('0x7'));router[_0x653d('0x8')]('/',auth[_0x653d('0x9')](),controller[_0x653d('0xa')]);router[_0x653d('0x8')](_0x653d('0xb'),auth[_0x653d('0x9')](),controller[_0x653d('0xc')]);router[_0x653d('0x8')](_0x653d('0xd'),auth[_0x653d('0x9')](),controller[_0x653d('0xe')]);router[_0x653d('0x8')](_0x653d('0xf'),auth[_0x653d('0x9')](),controller[_0x653d('0x10')]);router[_0x653d('0x8')](_0x653d('0x11'),auth[_0x653d('0x9')](),controller[_0x653d('0x12')]);router[_0x653d('0x13')](_0x653d('0x14'),auth['isAuthenticated'](),controller[_0x653d('0x15')]);router[_0x653d('0x13')](_0x653d('0x16'),auth[_0x653d('0x9')](),controller[_0x653d('0x17')]);router[_0x653d('0x13')](_0x653d('0x18'),auth[_0x653d('0x9')](),controller[_0x653d('0x19')]);router['put'](_0x653d('0xd'),auth['isAuthenticated'](),controller[_0x653d('0x1a')]);module[_0x653d('0x1b')]=router;
\ No newline at end of file
+var _0x38d1=['put','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','index','get','/describe','isAuthenticated','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','post','/checkContactHopper'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0x38d1,0xf2));var _0x138d=function(_0x42ebb7,_0x3fc330){_0x42ebb7=_0x42ebb7-0x0;var _0x1aa313=_0x38d1[_0x42ebb7];return _0x1aa313;};'use strict';var multer=require(_0x138d('0x0'));var util=require(_0x138d('0x1'));var path=require(_0x138d('0x2'));var timeout=require(_0x138d('0x3'));var express=require('express');var router=express[_0x138d('0x4')]();var fs_extra=require(_0x138d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x138d('0x6'));var config=require('../../config/environment');var controller=require('./cmHopperFinal.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x138d('0x7')]);router[_0x138d('0x8')](_0x138d('0x9'),auth[_0x138d('0xa')](),controller[_0x138d('0xb')]);router[_0x138d('0x8')](_0x138d('0xc'),auth['isAuthenticated'](),controller[_0x138d('0xd')]);router['get'](_0x138d('0xe'),auth[_0x138d('0xa')](),controller[_0x138d('0xf')]);router[_0x138d('0x8')](_0x138d('0x10'),auth[_0x138d('0xa')](),controller[_0x138d('0x11')]);router['post']('/voice/queue/moveContacts/:id',auth[_0x138d('0xa')](),controller[_0x138d('0x12')]);router['post']('/voice/campaign/moveContacts/:id',auth[_0x138d('0xa')](),controller[_0x138d('0x13')]);router[_0x138d('0x14')](_0x138d('0x15'),auth[_0x138d('0xa')](),controller['checkContactHopper']);router[_0x138d('0x16')]('/:id',auth[_0x138d('0xa')](),controller['update']);module[_0x138d('0x17')]=router;
\ No newline at end of file
index 37b14cf..1575843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c01=['STRING','DATE','BOOLEAN','sequelize','exports','INTEGER'];(function(_0x5646ef,_0xe756cd){var _0x2a7a9b=function(_0x38805b){while(--_0x38805b){_0x5646ef['push'](_0x5646ef['shift']());}};_0x2a7a9b(++_0xe756cd);}(_0x6c01,0xf3));var _0x16c0=function(_0x2dc880,_0x213c94){_0x2dc880=_0x2dc880-0x0;var _0x2bb284=_0x6c01[_0x2dc880];return _0x2bb284;};'use strict';var Sequelize=require(_0x16c0('0x0'));module[_0x16c0('0x1')]={'state':{'type':Sequelize[_0x16c0('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x16c0('0x3')]},'scheduledat':{'type':Sequelize[_0x16c0('0x4')]},'countbusyretry':{'type':Sequelize[_0x16c0('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x16c0('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x16c0('0x3')]},'calleridnum':{'type':Sequelize[_0x16c0('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x16c0('0x4')]},'responsetime':{'type':Sequelize[_0x16c0('0x4')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x16c0('0x4')]},'endtime':{'type':Sequelize[_0x16c0('0x4')]},'ringtime':{'type':Sequelize[_0x16c0('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x16c0('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x16c0('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x16c0('0x3')]},'campaign':{'type':Sequelize[_0x16c0('0x3')]},'campaigntype':{'type':Sequelize[_0x16c0('0x3')]},'membername':{'type':Sequelize[_0x16c0('0x3')]},'reason':{'type':Sequelize[_0x16c0('0x3')]},'amd':{'type':Sequelize[_0x16c0('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x16c0('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x16c0('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x16c0('0x4')]},'recallme':{'type':Sequelize[_0x16c0('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x16c0('0x4')]},'edited':{'type':Sequelize[_0x16c0('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x16c0('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x16c0('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x16c0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x706f=['sequelize','exports','STRING','DATE','INTEGER','BOOLEAN'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0x706f,0x19e));var _0xf706=function(_0x41b2f4,_0x551db7){_0x41b2f4=_0x41b2f4-0x0;var _0x5da80d=_0x706f[_0x41b2f4];return _0x5da80d;};'use strict';var Sequelize=require(_0xf706('0x0'));module[_0xf706('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xf706('0x2')]},'scheduledat':{'type':Sequelize[_0xf706('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xf706('0x4')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xf706('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xf706('0x2')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xf706('0x2')]},'calleridname':{'type':Sequelize[_0xf706('0x2')]},'starttime':{'type':Sequelize[_0xf706('0x3')]},'responsetime':{'type':Sequelize[_0xf706('0x3')]},'answertime':{'type':Sequelize[_0xf706('0x3')]},'droptime':{'type':Sequelize[_0xf706('0x3')]},'endtime':{'type':Sequelize[_0xf706('0x3')]},'ringtime':{'type':Sequelize[_0xf706('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xf706('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xf706('0x4')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xf706('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xf706('0x2')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xf706('0x2')]},'membername':{'type':Sequelize[_0xf706('0x2')]},'reason':{'type':Sequelize[_0xf706('0x2')]},'amd':{'type':Sequelize[_0xf706('0x5')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0xf706('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xf706('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0xf706('0x3')]},'edited':{'type':Sequelize[_0xf706('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xf706('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xf706('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xf706('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xf706('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index a10d91f..6b8d7c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4817=['includeAll','findAll','rows','catch','params','include','find','create','body','describe','update','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','destroy','then','sendStatus','stack','send','index','map','CmHopperHistory','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','name','options'];(function(_0x1166a5,_0x3c56a6){var _0x391192=function(_0x3e1100){while(--_0x3e1100){_0x1166a5['push'](_0x1166a5['shift']());}};_0x391192(++_0x3c56a6);}(_0x4817,0xa8));var _0x7481=function(_0x5a810b,_0x506113){_0x5a810b=_0x5a810b-0x0;var _0x1dad51=_0x4817[_0x5a810b];return _0x1dad51;};'use strict';var emlformat=require(_0x7481('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7481('0x1'));var jsonpatch=require(_0x7481('0x2'));var rp=require(_0x7481('0x3'));var moment=require(_0x7481('0x4'));var BPromise=require(_0x7481('0x5'));var Mustache=require(_0x7481('0x6'));var util=require(_0x7481('0x7'));var path=require(_0x7481('0x8'));var sox=require('sox');var csv=require(_0x7481('0x9'));var ejs=require(_0x7481('0xa'));var fs=require('fs');var fs_extra=require(_0x7481('0xb'));var _=require(_0x7481('0xc'));var squel=require(_0x7481('0xd'));var crypto=require(_0x7481('0xe'));var jsforce=require(_0x7481('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x7481('0x9'));var querystring=require(_0x7481('0x10'));var Papa=require(_0x7481('0x11'));var Redis=require('ioredis');var authService=require(_0x7481('0x12'));var qs=require(_0x7481('0x13'));var as=require(_0x7481('0x14'));var hardwareService=require(_0x7481('0x15'));var logger=require(_0x7481('0x16'))(_0x7481('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7481('0x18'))['db'];function respondWithStatusCode(_0x207430,_0x1819b8){_0x1819b8=_0x1819b8||0xcc;return function(_0x36dfc8){if(_0x36dfc8){return _0x207430['sendStatus'](_0x1819b8);}return _0x207430[_0x7481('0x19')](_0x1819b8)[_0x7481('0x1a')]();};}function respondWithResult(_0x8790e9,_0x5bcef7){_0x5bcef7=_0x5bcef7||0xc8;return function(_0x1a1928){if(_0x1a1928){return _0x8790e9[_0x7481('0x19')](_0x5bcef7)['json'](_0x1a1928);}};}function respondWithFilteredResult(_0x33a3f0,_0x202ffd){return function(_0x1a2a07){if(_0x1a2a07){var _0x236df0=typeof _0x202ffd[_0x7481('0x1b')]===_0x7481('0x1c')&&typeof _0x202ffd[_0x7481('0x1d')]===_0x7481('0x1c');var _0x59d291=_0x1a2a07[_0x7481('0x1e')];var _0x1af1ef=_0x236df0?0x0:_0x202ffd[_0x7481('0x1b')];var _0x43f7e9=_0x236df0?_0x1a2a07[_0x7481('0x1e')]:_0x202ffd[_0x7481('0x1b')]+_0x202ffd['limit'];var _0x5241ef;if(_0x43f7e9>=_0x59d291){_0x43f7e9=_0x59d291;_0x5241ef=0xc8;}else{_0x5241ef=0xce;}_0x33a3f0['status'](_0x5241ef);return _0x33a3f0['set'](_0x7481('0x1f'),_0x1af1ef+'-'+_0x43f7e9+'/'+_0x59d291)[_0x7481('0x20')](_0x1a2a07);}return null;};}function patchUpdates(_0x2beef4){return function(_0xf30515){try{jsonpatch[_0x7481('0x21')](_0xf30515,_0x2beef4,!![]);}catch(_0x34c762){return BPromise[_0x7481('0x22')](_0x34c762);}return _0xf30515[_0x7481('0x23')]();};}function saveUpdates(_0x2fb198,_0x5adbf3){return function(_0x267ac8){if(_0x267ac8){return _0x267ac8['update'](_0x2fb198)['then'](function(_0xa44811){return _0xa44811;});}return null;};}function removeEntity(_0x32ab89,_0x273e6a){return function(_0x623854){if(_0x623854){return _0x623854[_0x7481('0x24')]()[_0x7481('0x25')](function(){_0x32ab89[_0x7481('0x19')](0xcc)[_0x7481('0x1a')]();});}};}function handleEntityNotFound(_0x39dbc7,_0x8235a2){return function(_0x434a96){if(!_0x434a96){_0x39dbc7[_0x7481('0x26')](0x194);}return _0x434a96;};}function handleError(_0x463a34,_0x3dfc9e){_0x3dfc9e=_0x3dfc9e||0x1f4;return function(_0x4145be){logger['error'](_0x4145be[_0x7481('0x27')]);if(_0x4145be['name']){delete _0x4145be['name'];}_0x463a34[_0x7481('0x19')](_0x3dfc9e)[_0x7481('0x28')](_0x4145be);};}exports[_0x7481('0x29')]=function(_0x27ce42,_0x1f6716){var _0xe21063={},_0xae932a={},_0x263501={'count':0x0,'rows':[]};var _0x32dd15=_[_0x7481('0x2a')](db[_0x7481('0x2b')][_0x7481('0x2c')],function(_0x5f4247){return{'name':_0x5f4247[_0x7481('0x2d')],'type':_0x5f4247[_0x7481('0x2e')][_0x7481('0x2f')]};});_0xae932a['model']=_['map'](_0x32dd15,'name');_0xae932a[_0x7481('0x30')]=_[_0x7481('0x31')](_0x27ce42[_0x7481('0x30')]);_0xae932a[_0x7481('0x32')]=_[_0x7481('0x33')](_0xae932a[_0x7481('0x34')],_0xae932a[_0x7481('0x30')]);_0xe21063[_0x7481('0x35')]=_[_0x7481('0x33')](_0xae932a[_0x7481('0x34')],qs[_0x7481('0x36')](_0x27ce42[_0x7481('0x30')][_0x7481('0x36')]));_0xe21063[_0x7481('0x35')]=_0xe21063[_0x7481('0x35')][_0x7481('0x37')]?_0xe21063[_0x7481('0x35')]:_0xae932a[_0x7481('0x34')];if(!_0x27ce42[_0x7481('0x30')][_0x7481('0x38')](_0x7481('0x39'))){_0xe21063[_0x7481('0x1d')]=qs[_0x7481('0x1d')](_0x27ce42[_0x7481('0x30')][_0x7481('0x1d')]);_0xe21063[_0x7481('0x1b')]=qs['offset'](_0x27ce42[_0x7481('0x30')]['offset']);}_0xe21063[_0x7481('0x3a')]=qs[_0x7481('0x3b')](_0x27ce42[_0x7481('0x30')][_0x7481('0x3b')]);_0xe21063['where']=qs[_0x7481('0x32')](_[_0x7481('0x3c')](_0x27ce42[_0x7481('0x30')],_0xae932a['filters']),_0x32dd15);if(_0x27ce42[_0x7481('0x30')][_0x7481('0x3d')]){_0xe21063['where']=_[_0x7481('0x3e')](_0xe21063[_0x7481('0x3f')],{'$or':_[_0x7481('0x2a')](_0x32dd15,function(_0x3bbd30){if(_0x3bbd30[_0x7481('0x2e')]!=='VIRTUAL'){var _0x4c0124={};_0x4c0124[_0x3bbd30[_0x7481('0x40')]]={'$like':'%'+_0x27ce42[_0x7481('0x30')][_0x7481('0x3d')]+'%'};return _0x4c0124;}})});}_0xe21063=_[_0x7481('0x3e')]({},_0xe21063,_0x27ce42[_0x7481('0x41')]);var _0x532ac5={'where':_0xe21063['where']};return db[_0x7481('0x2b')][_0x7481('0x1e')](_0x532ac5)['then'](function(_0x593341){_0x263501[_0x7481('0x1e')]=_0x593341;if(_0x27ce42[_0x7481('0x30')][_0x7481('0x42')]){_0xe21063['include']=[{'all':!![]}];}return db[_0x7481('0x2b')][_0x7481('0x43')](_0xe21063);})[_0x7481('0x25')](function(_0x35f889){_0x263501[_0x7481('0x44')]=_0x35f889;return _0x263501;})[_0x7481('0x25')](respondWithFilteredResult(_0x1f6716,_0xe21063))[_0x7481('0x45')](handleError(_0x1f6716,null));};exports['show']=function(_0x11aab6,_0x17d4d2){var _0x34f6c9={'raw':!![],'where':{'id':_0x11aab6[_0x7481('0x46')]['id']}},_0x3b2844={};_0x3b2844[_0x7481('0x34')]=_[_0x7481('0x31')](db[_0x7481('0x2b')]['rawAttributes']);_0x3b2844['query']=_[_0x7481('0x31')](_0x11aab6[_0x7481('0x30')]);_0x3b2844['filters']=_['intersection'](_0x3b2844[_0x7481('0x34')],_0x3b2844[_0x7481('0x30')]);_0x34f6c9[_0x7481('0x35')]=_[_0x7481('0x33')](_0x3b2844[_0x7481('0x34')],qs[_0x7481('0x36')](_0x11aab6[_0x7481('0x30')]['fields']));_0x34f6c9[_0x7481('0x35')]=_0x34f6c9[_0x7481('0x35')]['length']?_0x34f6c9['attributes']:_0x3b2844[_0x7481('0x34')];if(_0x11aab6[_0x7481('0x30')]['includeAll']){_0x34f6c9[_0x7481('0x47')]=[{'all':!![]}];}_0x34f6c9=_[_0x7481('0x3e')]({},_0x34f6c9,_0x11aab6[_0x7481('0x41')]);return db[_0x7481('0x2b')][_0x7481('0x48')](_0x34f6c9)[_0x7481('0x25')](handleEntityNotFound(_0x17d4d2,null))[_0x7481('0x25')](respondWithResult(_0x17d4d2,null))[_0x7481('0x45')](handleError(_0x17d4d2,null));};exports[_0x7481('0x49')]=function(_0x1d7ac9,_0x5613b8){return db[_0x7481('0x2b')][_0x7481('0x49')](_0x1d7ac9[_0x7481('0x4a')],{})['then'](respondWithResult(_0x5613b8,0xc9))[_0x7481('0x45')](handleError(_0x5613b8,null));};exports[_0x7481('0x4b')]=function(_0xf5d09d,_0x18646e){return db[_0x7481('0x2b')][_0x7481('0x4b')]()[_0x7481('0x25')](respondWithResult(_0x18646e,null))[_0x7481('0x45')](handleError(_0x18646e,null));};exports[_0x7481('0x4c')]=function(_0x2b1015,_0x485708){if(_0x2b1015['body'][_0x7481('0x4d')]){delete _0x2b1015[_0x7481('0x4a')][_0x7481('0x4d')];}return db[_0x7481('0x2b')][_0x7481('0x48')]({'where':{'uniqueid':_0x2b1015[_0x7481('0x46')]['id']}})[_0x7481('0x25')](handleEntityNotFound(_0x485708,null))[_0x7481('0x25')](saveUpdates(_0x2b1015[_0x7481('0x4a')],null))[_0x7481('0x25')](respondWithResult(_0x485708,null))[_0x7481('0x45')](handleError(_0x485708,null));};
\ No newline at end of file
+var _0x988a=['includeAll','include','findAll','show','params','keys','CmHopperHistory','catch','create','describe','body','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','undefined','limit','offset','set','Content-Range','reject','save','update','then','end','error','send','index','rawAttributes','fieldName','key','model','name','query','intersection','attributes','fields','nolimit','order','sort','filters','filter','where','merge','options','count'];(function(_0xe2847b,_0x1b023a){var _0x3f997f=function(_0x217607){while(--_0x217607){_0xe2847b['push'](_0xe2847b['shift']());}};_0x3f997f(++_0x1b023a);}(_0x988a,0x128));var _0xa988=function(_0x3cd249,_0x5ac82d){_0x3cd249=_0x3cd249-0x0;var _0x5aa95f=_0x988a[_0x3cd249];return _0x5aa95f;};'use strict';var emlformat=require(_0xa988('0x0'));var rimraf=require(_0xa988('0x1'));var zipdir=require(_0xa988('0x2'));var jsonpatch=require(_0xa988('0x3'));var rp=require(_0xa988('0x4'));var moment=require(_0xa988('0x5'));var BPromise=require(_0xa988('0x6'));var Mustache=require(_0xa988('0x7'));var util=require(_0xa988('0x8'));var path=require(_0xa988('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa988('0xa'));var _=require(_0xa988('0xb'));var squel=require(_0xa988('0xc'));var crypto=require(_0xa988('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xa988('0xe'));var toCsv=require(_0xa988('0xf'));var querystring=require(_0xa988('0x10'));var Papa=require(_0xa988('0x11'));var Redis=require('ioredis');var authService=require(_0xa988('0x12'));var qs=require(_0xa988('0x13'));var as=require(_0xa988('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa988('0x15'))(_0xa988('0x16'));var utils=require(_0xa988('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa988('0x18'))['db'];function respondWithStatusCode(_0x1d4524,_0x451e2d){_0x451e2d=_0x451e2d||0xcc;return function(_0x1f7eac){if(_0x1f7eac){return _0x1d4524[_0xa988('0x19')](_0x451e2d);}return _0x1d4524[_0xa988('0x1a')](_0x451e2d)['end']();};}function respondWithResult(_0x2ac408,_0x30b0f8){_0x30b0f8=_0x30b0f8||0xc8;return function(_0x3e7b89){if(_0x3e7b89){return _0x2ac408[_0xa988('0x1a')](_0x30b0f8)[_0xa988('0x1b')](_0x3e7b89);}};}function respondWithFilteredResult(_0x33c9c8,_0x1655ce){return function(_0x37d028){if(_0x37d028){var _0x24fcbd=typeof _0x1655ce['offset']===_0xa988('0x1c')&&typeof _0x1655ce[_0xa988('0x1d')]===_0xa988('0x1c');var _0x525d52=_0x37d028['count'];var _0x1beb38=_0x24fcbd?0x0:_0x1655ce['offset'];var _0x15b55b=_0x24fcbd?_0x37d028['count']:_0x1655ce[_0xa988('0x1e')]+_0x1655ce[_0xa988('0x1d')];var _0x2b3903;if(_0x15b55b>=_0x525d52){_0x15b55b=_0x525d52;_0x2b3903=0xc8;}else{_0x2b3903=0xce;}_0x33c9c8[_0xa988('0x1a')](_0x2b3903);return _0x33c9c8[_0xa988('0x1f')](_0xa988('0x20'),_0x1beb38+'-'+_0x15b55b+'/'+_0x525d52)[_0xa988('0x1b')](_0x37d028);}return null;};}function patchUpdates(_0x2d7523){return function(_0x42051f){try{jsonpatch['apply'](_0x42051f,_0x2d7523,!![]);}catch(_0x4d3432){return BPromise[_0xa988('0x21')](_0x4d3432);}return _0x42051f[_0xa988('0x22')]();};}function saveUpdates(_0x2a37c9,_0x129d9c){return function(_0x591aa7){if(_0x591aa7){return _0x591aa7[_0xa988('0x23')](_0x2a37c9)[_0xa988('0x24')](function(_0x79d2aa){return _0x79d2aa;});}return null;};}function removeEntity(_0x24561e,_0x3b7e04){return function(_0x5c2224){if(_0x5c2224){return _0x5c2224['destroy']()['then'](function(){_0x24561e[_0xa988('0x1a')](0xcc)[_0xa988('0x25')]();});}};}function handleEntityNotFound(_0x1a2ca4,_0x2a6572){return function(_0x4bfaa9){if(!_0x4bfaa9){_0x1a2ca4[_0xa988('0x19')](0x194);}return _0x4bfaa9;};}function handleError(_0x1d1bb1,_0x2cd5c8){_0x2cd5c8=_0x2cd5c8||0x1f4;return function(_0x16e795){logger[_0xa988('0x26')](_0x16e795['stack']);if(_0x16e795['name']){delete _0x16e795['name'];}_0x1d1bb1[_0xa988('0x1a')](_0x2cd5c8)[_0xa988('0x27')](_0x16e795);};}exports[_0xa988('0x28')]=function(_0x584e3a,_0x3a680c){var _0xbdf496={},_0x1aba5a={},_0x169320={'count':0x0,'rows':[]};var _0x2919c2=_['map'](db['CmHopperHistory'][_0xa988('0x29')],function(_0x2558d1){return{'name':_0x2558d1[_0xa988('0x2a')],'type':_0x2558d1['type'][_0xa988('0x2b')]};});_0x1aba5a[_0xa988('0x2c')]=_['map'](_0x2919c2,_0xa988('0x2d'));_0x1aba5a[_0xa988('0x2e')]=_['keys'](_0x584e3a[_0xa988('0x2e')]);_0x1aba5a['filters']=_[_0xa988('0x2f')](_0x1aba5a[_0xa988('0x2c')],_0x1aba5a[_0xa988('0x2e')]);_0xbdf496[_0xa988('0x30')]=_[_0xa988('0x2f')](_0x1aba5a[_0xa988('0x2c')],qs['fields'](_0x584e3a['query'][_0xa988('0x31')]));_0xbdf496[_0xa988('0x30')]=_0xbdf496[_0xa988('0x30')]['length']?_0xbdf496[_0xa988('0x30')]:_0x1aba5a[_0xa988('0x2c')];if(!_0x584e3a[_0xa988('0x2e')]['hasOwnProperty'](_0xa988('0x32'))){_0xbdf496[_0xa988('0x1d')]=qs[_0xa988('0x1d')](_0x584e3a[_0xa988('0x2e')][_0xa988('0x1d')]);_0xbdf496[_0xa988('0x1e')]=qs['offset'](_0x584e3a['query'][_0xa988('0x1e')]);}_0xbdf496[_0xa988('0x33')]=qs['sort'](_0x584e3a[_0xa988('0x2e')][_0xa988('0x34')]);_0xbdf496['where']=qs[_0xa988('0x35')](_['pick'](_0x584e3a['query'],_0x1aba5a[_0xa988('0x35')]),_0x2919c2);if(_0x584e3a['query'][_0xa988('0x36')]){_0xbdf496[_0xa988('0x37')]=_[_0xa988('0x38')](_0xbdf496[_0xa988('0x37')],{'$or':_['map'](_0x2919c2,function(_0x420231){if(_0x420231['type']!=='VIRTUAL'){var _0x54ccef={};_0x54ccef[_0x420231[_0xa988('0x2d')]]={'$like':'%'+_0x584e3a[_0xa988('0x2e')]['filter']+'%'};return _0x54ccef;}})});}_0xbdf496=_[_0xa988('0x38')]({},_0xbdf496,_0x584e3a[_0xa988('0x39')]);var _0x307b62={'where':_0xbdf496[_0xa988('0x37')]};return db['CmHopperHistory'][_0xa988('0x3a')](_0x307b62)[_0xa988('0x24')](function(_0x533ea1){_0x169320[_0xa988('0x3a')]=_0x533ea1;if(_0x584e3a[_0xa988('0x2e')][_0xa988('0x3b')]){_0xbdf496[_0xa988('0x3c')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xa988('0x3d')](_0xbdf496);})['then'](function(_0x475e2b){_0x169320['rows']=_0x475e2b;return _0x169320;})[_0xa988('0x24')](respondWithFilteredResult(_0x3a680c,_0xbdf496))['catch'](handleError(_0x3a680c,null));};exports[_0xa988('0x3e')]=function(_0x56ccae,_0x135a06){var _0x5a33e4={'raw':!![],'where':{'id':_0x56ccae[_0xa988('0x3f')]['id']}},_0x3c591f={};_0x3c591f[_0xa988('0x2c')]=_[_0xa988('0x40')](db[_0xa988('0x41')][_0xa988('0x29')]);_0x3c591f[_0xa988('0x2e')]=_['keys'](_0x56ccae[_0xa988('0x2e')]);_0x3c591f[_0xa988('0x35')]=_['intersection'](_0x3c591f[_0xa988('0x2c')],_0x3c591f[_0xa988('0x2e')]);_0x5a33e4[_0xa988('0x30')]=_[_0xa988('0x2f')](_0x3c591f[_0xa988('0x2c')],qs['fields'](_0x56ccae['query']['fields']));_0x5a33e4[_0xa988('0x30')]=_0x5a33e4[_0xa988('0x30')]['length']?_0x5a33e4[_0xa988('0x30')]:_0x3c591f[_0xa988('0x2c')];if(_0x56ccae[_0xa988('0x2e')][_0xa988('0x3b')]){_0x5a33e4['include']=[{'all':!![]}];}_0x5a33e4=_[_0xa988('0x38')]({},_0x5a33e4,_0x56ccae[_0xa988('0x39')]);return db[_0xa988('0x41')]['find'](_0x5a33e4)['then'](handleEntityNotFound(_0x135a06,null))[_0xa988('0x24')](respondWithResult(_0x135a06,null))[_0xa988('0x42')](handleError(_0x135a06,null));};exports['create']=function(_0x16719a,_0x3f0384){return db[_0xa988('0x41')][_0xa988('0x43')](_0x16719a['body'],{})[_0xa988('0x24')](respondWithResult(_0x3f0384,0xc9))[_0xa988('0x42')](handleError(_0x3f0384,null));};exports[_0xa988('0x44')]=function(_0x24966a,_0x939235){return db[_0xa988('0x41')][_0xa988('0x44')]()['then'](respondWithResult(_0x939235,null))[_0xa988('0x42')](handleError(_0x939235,null));};exports[_0xa988('0x23')]=function(_0x2a40e1,_0x344f83){if(_0x2a40e1[_0xa988('0x45')][_0xa988('0x46')]){delete _0x2a40e1[_0xa988('0x45')]['uniqueid'];}return db['CmHopperHistory']['find']({'where':{'uniqueid':_0x2a40e1['params']['id']}})['then'](handleEntityNotFound(_0x344f83,null))[_0xa988('0x24')](saveUpdates(_0x2a40e1[_0xa988('0x45')],null))[_0xa988('0x24')](respondWithResult(_0x344f83,null))[_0xa988('0x42')](handleError(_0x344f83,null));};
\ No newline at end of file
index 58a852c..7865f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdec3=['moment','request-promise','path','rimraf','../../config/environment','exports','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','../../config/logger','api'];(function(_0x53acd7,_0x331f39){var _0x3e5639=function(_0x231d40){while(--_0x231d40){_0x53acd7['push'](_0x53acd7['shift']());}};_0x3e5639(++_0x331f39);}(_0xdec3,0x89));var _0x3dec=function(_0x268073,_0x29c404){_0x268073=_0x268073-0x0;var _0x409f2c=_0xdec3[_0x268073];return _0x409f2c;};'use strict';var _=require(_0x3dec('0x0'));var util=require('util');var logger=require(_0x3dec('0x1'))(_0x3dec('0x2'));var moment=require(_0x3dec('0x3'));var BPromise=require('bluebird');var rp=require(_0x3dec('0x4'));var fs=require('fs');var path=require(_0x3dec('0x5'));var rimraf=require(_0x3dec('0x6'));var config=require(_0x3dec('0x7'));var attributes=require('./cmHopperHistory.attributes');module[_0x3dec('0x8')]=function(_0x2894eb,_0x347c06){return _0x2894eb[_0x3dec('0x9')](_0x3dec('0xa'),attributes,{'tableName':_0x3dec('0xb'),'paranoid':![],'indexes':[{'name':_0x3dec('0xc'),'fields':['endtime']},{'name':_0x3dec('0xd'),'fields':[_0x3dec('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c77=['cm_hopper_history','endtime','uniqueid','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports'];(function(_0x239136,_0x3b3502){var _0x5c2b61=function(_0x1a0e73){while(--_0x1a0e73){_0x239136['push'](_0x239136['shift']());}};_0x5c2b61(++_0x3b3502);}(_0x1c77,0xed));var _0x71c7=function(_0x5f3de3,_0x40f0f5){_0x5f3de3=_0x5f3de3-0x0;var _0x287e0d=_0x1c77[_0x5f3de3];return _0x287e0d;};'use strict';var _=require('lodash');var util=require(_0x71c7('0x0'));var logger=require(_0x71c7('0x1'))(_0x71c7('0x2'));var moment=require(_0x71c7('0x3'));var BPromise=require(_0x71c7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x71c7('0x5'));var rimraf=require(_0x71c7('0x6'));var config=require(_0x71c7('0x7'));var attributes=require(_0x71c7('0x8'));module[_0x71c7('0x9')]=function(_0x1ee344,_0x2fb422){return _0x1ee344['define']('CmHopperHistory',attributes,{'tableName':_0x71c7('0xa'),'paranoid':![],'indexes':[{'name':_0x71c7('0xb'),'fields':[_0x71c7('0xb')]},{'name':_0x71c7('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 7a1e4e1..21e1a9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa900=['message','info','request\x20sent','result','catch','CmHopperHistory','create','options','raw','CreateCmHopperHistory','AvgHandleTime','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','literal','`state`\x20=\x2010,\x201,\x20null','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','findAll','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`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','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','campaign','name','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','CmHopperHistory,\x20%s,\x20%s','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xa900,0x101));var _0x0a90=function(_0x3d56d5,_0x492dc9){_0x3d56d5=_0x3d56d5-0x0;var _0x50b4f3=_0xa900[_0x3d56d5];return _0x50b4f3;};'use strict';var _=require(_0x0a90('0x0'));var util=require(_0x0a90('0x1'));var moment=require(_0x0a90('0x2'));var BPromise=require(_0x0a90('0x3'));var rs=require(_0x0a90('0x4'));var fs=require('fs');var Redis=require(_0x0a90('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a90('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x0a90('0x7'));var jayson=require(_0x0a90('0x8'));var client=jayson[_0x0a90('0x9')][_0x0a90('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56a1e5,_0x3909ac,_0x4718e9){return new BPromise(function(_0x33e3cf,_0x4f2b58){return client[_0x0a90('0xb')](_0x56a1e5,_0x4718e9)[_0x0a90('0xc')](function(_0x36c82f){logger['info'](_0x0a90('0xd'),_0x3909ac,'request\x20sent');logger[_0x0a90('0xe')](_0x0a90('0xf'),_0x3909ac,'request\x20sent',JSON[_0x0a90('0x10')](_0x36c82f));if(_0x36c82f[_0x0a90('0x11')]){if(_0x36c82f[_0x0a90('0x11')][_0x0a90('0x12')]===0x1f4){logger[_0x0a90('0x11')](_0x0a90('0xd'),_0x3909ac,_0x36c82f[_0x0a90('0x11')][_0x0a90('0x13')]);return _0x4f2b58(_0x36c82f[_0x0a90('0x11')][_0x0a90('0x13')]);}logger[_0x0a90('0x11')](_0x0a90('0xd'),_0x3909ac,_0x36c82f[_0x0a90('0x11')]['message']);return _0x33e3cf(_0x36c82f['error'][_0x0a90('0x13')]);}else{logger[_0x0a90('0x14')](_0x0a90('0xd'),_0x3909ac,_0x0a90('0x15'));_0x33e3cf(_0x36c82f[_0x0a90('0x16')][_0x0a90('0x13')]);}})[_0x0a90('0x17')](function(_0x4c5979){logger[_0x0a90('0x11')](_0x0a90('0xd'),_0x3909ac,_0x4c5979);_0x4f2b58(_0x4c5979);});});}exports['CreateCmHopperHistory']=function(_0x2c0719){var _0x5cbe3c=this;return new Promise(function(_0x619487,_0x44b75d){return db[_0x0a90('0x18')][_0x0a90('0x19')](_0x2c0719['body'],{'raw':_0x2c0719[_0x0a90('0x1a')]?_0x2c0719[_0x0a90('0x1a')][_0x0a90('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x4ba044){logger[_0x0a90('0x14')]('CreateCmHopperHistory',_0x2c0719);logger[_0x0a90('0xe')]('CreateCmHopperHistory',_0x2c0719,JSON[_0x0a90('0x10')](_0x4ba044));_0x619487(_0x4ba044);})[_0x0a90('0x17')](function(_0xf3e76f){logger[_0x0a90('0x11')](_0x0a90('0x1c'),_0xf3e76f[_0x0a90('0x13')],_0x2c0719);_0x44b75d(_0x5cbe3c[_0x0a90('0x11')](0x1f4,_0xf3e76f[_0x0a90('0x13')]));});});};exports[_0x0a90('0x1d')]=function(_0x228279){var _0x5a1bf3=this;return new Promise(function(_0x22c241,_0x413814){return db[_0x0a90('0x18')]['findAll']({'raw':_0x228279[_0x0a90('0x1a')]?_0x228279[_0x0a90('0x1a')][_0x0a90('0x1b')]===undefined?!![]:![]:!![],'where':_0x228279[_0x0a90('0x1a')]?_0x228279['options'][_0x0a90('0x1e')]||null:null,'attributes':[[db[_0x0a90('0x1f')]['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')][_0x0a90('0x21')]('id')),_0x0a90('0x22')],[db[_0x0a90('0x1f')]['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')]['literal'](_0x0a90('0x23')))),_0x0a90('0x24')],[db[_0x0a90('0x1f')]['fn']('COUNT',db[_0x0a90('0x1f')]['fn']('IF',db['sequelize'][_0x0a90('0x25')](_0x0a90('0x26')))),'predictiveIntervalDroppedCallsTimeout'],[db[_0x0a90('0x1f')]['fn']('COUNT',db[_0x0a90('0x1f')]['fn']('IF',db['sequelize'][_0x0a90('0x25')](_0x0a90('0x27')))),_0x0a90('0x28')],[db[_0x0a90('0x1f')]['fn'](_0x0a90('0x29'),db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')][_0x0a90('0x25')](_0x0a90('0x2a')))),'predictiveIntervalAvgHoldtime'],[db[_0x0a90('0x1f')]['fn'](_0x0a90('0x29'),db['sequelize']['fn']('IF',db['sequelize'][_0x0a90('0x25')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),'predictiveIntervalAvgTalktime']]})[_0x0a90('0xc')](function(_0x20a765){logger[_0x0a90('0x14')](_0x0a90('0x1d'),_0x228279);logger[_0x0a90('0xe')](_0x0a90('0x1d'),_0x228279,JSON[_0x0a90('0x10')](_0x20a765));_0x22c241(_0x20a765);})['catch'](function(_0x2e9af9){logger[_0x0a90('0x11')](_0x0a90('0x1d'),_0x2e9af9[_0x0a90('0x13')],_0x228279);_0x413814(_0x5a1bf3['error'](0x1f4,_0x2e9af9['message']));});});};exports['GetVoiceQueueHopperHistory']=function(_0x4f91b9){var _0x1303ed=this;return new Promise(function(_0x2b8fdc,_0x49922c){return db[_0x0a90('0x18')][_0x0a90('0x2b')]({'raw':_0x4f91b9['options']?_0x4f91b9[_0x0a90('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4f91b9[_0x0a90('0x1a')]?_0x4f91b9[_0x0a90('0x1a')]['where']||null:null,'attributes':[['campaign','name'],[db[_0x0a90('0x1f')]['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db['sequelize'][_0x0a90('0x25')]('`state`\x20=\x200,\x201,\x20null'))),_0x0a90('0x2c')],[db['sequelize']['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')]['literal'](_0x0a90('0x2d')))),_0x0a90('0x2e')],[db['sequelize']['fn'](_0x0a90('0x20'),db['sequelize']['fn']('IF',db[_0x0a90('0x1f')][_0x0a90('0x25')](_0x0a90('0x23')))),_0x0a90('0x2f')],[db[_0x0a90('0x1f')]['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')]['literal'](_0x0a90('0x30')))),'outboundBusyCallsDay'],[db[_0x0a90('0x1f')]['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')][_0x0a90('0x25')](_0x0a90('0x31')))),_0x0a90('0x32')],[db[_0x0a90('0x1f')]['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')]['literal'](_0x0a90('0x33')))),_0x0a90('0x34')],[db[_0x0a90('0x1f')]['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')][_0x0a90('0x25')](_0x0a90('0x35')))),_0x0a90('0x36')],[db['sequelize']['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db['sequelize']['literal'](_0x0a90('0x37')))),_0x0a90('0x38')],[db[_0x0a90('0x1f')]['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')][_0x0a90('0x25')](_0x0a90('0x39')))),_0x0a90('0x3a')],[db['sequelize']['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')][_0x0a90('0x25')](_0x0a90('0x3b')))),'outboundOriginateFailureCallsDay'],[db['sequelize']['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')][_0x0a90('0x25')](_0x0a90('0x3c')))),_0x0a90('0x3d')],[db[_0x0a90('0x1f')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x0a90('0x1f')][_0x0a90('0x25')]('`state`\x20=\x2016,\x201,\x20null'))),_0x0a90('0x3e')],[db[_0x0a90('0x1f')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x0a90('0x1f')][_0x0a90('0x25')](_0x0a90('0x3f')))),_0x0a90('0x3d')],[db[_0x0a90('0x1f')]['fn']('COUNT',db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')][_0x0a90('0x25')](_0x0a90('0x40')))),'outboundReCallsDay']],'group':['campaign']})[_0x0a90('0xc')](function(_0x20d28e){logger[_0x0a90('0x14')](_0x0a90('0x41'),_0x4f91b9);logger['debug'](_0x0a90('0x41'),_0x4f91b9,JSON[_0x0a90('0x10')](_0x20d28e));_0x2b8fdc(_0x20d28e);})['catch'](function(_0x1cdc27){logger[_0x0a90('0x11')](_0x0a90('0x41'),_0x1cdc27[_0x0a90('0x13')],_0x4f91b9);_0x49922c(_0x1303ed['error'](0x1f4,_0x1cdc27[_0x0a90('0x13')]));});});};exports[_0x0a90('0x42')]=function(_0x650eb8){var _0x784af0=this;return new Promise(function(_0xb6750a,_0x31e24d){return db[_0x0a90('0x18')][_0x0a90('0x2b')]({'raw':_0x650eb8[_0x0a90('0x1a')]?_0x650eb8[_0x0a90('0x1a')][_0x0a90('0x1b')]===undefined?!![]:![]:!![],'where':_0x650eb8['options']?_0x650eb8[_0x0a90('0x1a')]['where']||null:null,'attributes':[[_0x0a90('0x43'),_0x0a90('0x44')],[db[_0x0a90('0x1f')]['fn']('COUNT',db['sequelize']['col']('id')),'ivrTotalCallsDays'],[db[_0x0a90('0x1f')]['fn'](_0x0a90('0x20'),db[_0x0a90('0x1f')]['fn']('IF',db[_0x0a90('0x1f')][_0x0a90('0x25')](_0x0a90('0x23')))),'ivrAnswerCallsDay']],'group':[_0x0a90('0x43')]})[_0x0a90('0xc')](function(_0x1fa0ab){logger['info'](_0x0a90('0x42'),_0x650eb8);logger[_0x0a90('0xe')]('GetCampaignHopperHistory',_0x650eb8,JSON[_0x0a90('0x10')](_0x1fa0ab));_0xb6750a(_0x1fa0ab);})[_0x0a90('0x17')](function(_0x3f2268){logger[_0x0a90('0x11')](_0x0a90('0x42'),_0x3f2268[_0x0a90('0x13')],_0x650eb8);_0x31e24d(_0x784af0['error'](0x1f4,_0x3f2268[_0x0a90('0x13')]));});});};
\ No newline at end of file
+var _0xbb94=['outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','ivrAnswerCallsDay','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','CmHopperHistory,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','CmHopperHistory','create','body','options','then','CreateCmHopperHistory','debug','AvgHandleTime','raw','where','sequelize','COUNT','col','literal','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','GetVoiceQueueHopperHistory','findAll','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'];(function(_0x57c918,_0x3f117){var _0x4ef48f=function(_0x685174){while(--_0x685174){_0x57c918['push'](_0x57c918['shift']());}};_0x4ef48f(++_0x3f117);}(_0xbb94,0xde));var _0x4bb9=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xbb94[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4bb9('0x0'));var BPromise=require('bluebird');var rs=require(_0x4bb9('0x1'));var fs=require('fs');var Redis=require(_0x4bb9('0x2'));var db=require(_0x4bb9('0x3'))['db'];var utils=require(_0x4bb9('0x4'));var logger=require(_0x4bb9('0x5'))(_0x4bb9('0x6'));var config=require(_0x4bb9('0x7'));var jayson=require(_0x4bb9('0x8'));var client=jayson[_0x4bb9('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x29bf40,_0x1fa27e,_0x18112b){return new BPromise(function(_0x5cfac1,_0x3f3415){return client[_0x4bb9('0xa')](_0x29bf40,_0x18112b)['then'](function(_0x314d79){logger['info'](_0x4bb9('0xb'),_0x1fa27e,_0x4bb9('0xc'));logger['debug']('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x1fa27e,_0x4bb9('0xc'),JSON[_0x4bb9('0xd')](_0x314d79));if(_0x314d79[_0x4bb9('0xe')]){if(_0x314d79[_0x4bb9('0xe')][_0x4bb9('0xf')]===0x1f4){logger['error'](_0x4bb9('0xb'),_0x1fa27e,_0x314d79['error'][_0x4bb9('0x10')]);return _0x3f3415(_0x314d79[_0x4bb9('0xe')][_0x4bb9('0x10')]);}logger[_0x4bb9('0xe')](_0x4bb9('0xb'),_0x1fa27e,_0x314d79['error'][_0x4bb9('0x10')]);return _0x5cfac1(_0x314d79[_0x4bb9('0xe')][_0x4bb9('0x10')]);}else{logger[_0x4bb9('0x11')](_0x4bb9('0xb'),_0x1fa27e,_0x4bb9('0xc'));_0x5cfac1(_0x314d79[_0x4bb9('0x12')]['message']);}})[_0x4bb9('0x13')](function(_0x277544){logger['error'](_0x4bb9('0xb'),_0x1fa27e,_0x277544);_0x3f3415(_0x277544);});});}exports['CreateCmHopperHistory']=function(_0x421813){var _0x115b15=this;return new Promise(function(_0x5b7c73,_0x4cbe2d){return db[_0x4bb9('0x14')][_0x4bb9('0x15')](_0x421813[_0x4bb9('0x16')],{'raw':_0x421813[_0x4bb9('0x17')]?_0x421813[_0x4bb9('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x4bb9('0x18')](function(_0x302651){logger['info'](_0x4bb9('0x19'),_0x421813);logger[_0x4bb9('0x1a')](_0x4bb9('0x19'),_0x421813,JSON[_0x4bb9('0xd')](_0x302651));_0x5b7c73(_0x302651);})[_0x4bb9('0x13')](function(_0x1b57f7){logger[_0x4bb9('0xe')](_0x4bb9('0x19'),_0x1b57f7[_0x4bb9('0x10')],_0x421813);_0x4cbe2d(_0x115b15[_0x4bb9('0xe')](0x1f4,_0x1b57f7[_0x4bb9('0x10')]));});});};exports[_0x4bb9('0x1b')]=function(_0x3fe991){var _0x3c4d69=this;return new Promise(function(_0x1cdf07,_0x50c4ae){return db[_0x4bb9('0x14')]['findAll']({'raw':_0x3fe991[_0x4bb9('0x17')]?_0x3fe991['options'][_0x4bb9('0x1c')]===undefined?!![]:![]:!![],'where':_0x3fe991[_0x4bb9('0x17')]?_0x3fe991['options'][_0x4bb9('0x1d')]||null:null,'attributes':[[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db[_0x4bb9('0x1e')][_0x4bb9('0x20')]('id')),'predictiveIntervalTotalCalls'],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db['sequelize']['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')](_0x4bb9('0x22')))),'predictiveIntervalAnsweredCalls'],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')](_0x4bb9('0x23')))),_0x4bb9('0x24')],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db['sequelize']['fn']('IF',db[_0x4bb9('0x1e')]['literal'](_0x4bb9('0x25')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x26'),db['sequelize']['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')](_0x4bb9('0x27')))),_0x4bb9('0x28')],[db['sequelize']['fn']('AVG',db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')]['literal'](_0x4bb9('0x29')))),'predictiveIntervalAvgTalktime']]})[_0x4bb9('0x18')](function(_0x28137a){logger[_0x4bb9('0x11')](_0x4bb9('0x1b'),_0x3fe991);logger[_0x4bb9('0x1a')]('AvgHandleTime',_0x3fe991,JSON[_0x4bb9('0xd')](_0x28137a));_0x1cdf07(_0x28137a);})[_0x4bb9('0x13')](function(_0x4a97e3){logger[_0x4bb9('0xe')]('AvgHandleTime',_0x4a97e3[_0x4bb9('0x10')],_0x3fe991);_0x50c4ae(_0x3c4d69[_0x4bb9('0xe')](0x1f4,_0x4a97e3[_0x4bb9('0x10')]));});});};exports[_0x4bb9('0x2a')]=function(_0x4346fa){var _0x382f99=this;return new Promise(function(_0x2652dd,_0x2a156e){return db[_0x4bb9('0x14')][_0x4bb9('0x2b')]({'raw':_0x4346fa[_0x4bb9('0x17')]?_0x4346fa[_0x4bb9('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x4346fa[_0x4bb9('0x17')]?_0x4346fa[_0x4bb9('0x17')][_0x4bb9('0x1d')]||null:null,'attributes':[[_0x4bb9('0x2c'),_0x4bb9('0x2d')],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')](_0x4bb9('0x2e')))),_0x4bb9('0x2f')],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db[_0x4bb9('0x1e')]['fn']('IF',db['sequelize'][_0x4bb9('0x21')](_0x4bb9('0x30')))),_0x4bb9('0x31')],[db[_0x4bb9('0x1e')]['fn']('COUNT',db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')]('`state`\x20=\x204,\x201,\x20null'))),_0x4bb9('0x32')],[db[_0x4bb9('0x1e')]['fn']('COUNT',db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')](_0x4bb9('0x33')))),_0x4bb9('0x34')],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db['sequelize']['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')](_0x4bb9('0x35')))),_0x4bb9('0x36')],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')]['literal'](_0x4bb9('0x37')))),_0x4bb9('0x38')],[db[_0x4bb9('0x1e')]['fn']('COUNT',db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')](_0x4bb9('0x39')))),_0x4bb9('0x3a')],[db[_0x4bb9('0x1e')]['fn']('COUNT',db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')]['literal'](_0x4bb9('0x3b')))),_0x4bb9('0x3c')],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')](_0x4bb9('0x3d')))),'outboundBlacklistCallsDay'],[db[_0x4bb9('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x4bb9('0x1e')]['literal']('`state`\x20=\x2014,\x201,\x20null'))),_0x4bb9('0x3e')],[db[_0x4bb9('0x1e')]['fn']('COUNT',db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')](_0x4bb9('0x3f')))),_0x4bb9('0x40')],[db['sequelize']['fn'](_0x4bb9('0x1f'),db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')]['literal'](_0x4bb9('0x41')))),'outboundAnswerAgiCallsDay'],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')]('`state`\x20=\x2020,\x201,\x20null'))),_0x4bb9('0x40')],[db['sequelize']['fn'](_0x4bb9('0x1f'),db[_0x4bb9('0x1e')]['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0x4bb9('0x42')]],'group':[_0x4bb9('0x2c')]})['then'](function(_0x1f0c3c){logger[_0x4bb9('0x11')](_0x4bb9('0x2a'),_0x4346fa);logger[_0x4bb9('0x1a')]('GetVoiceQueueHopperHistory',_0x4346fa,JSON[_0x4bb9('0xd')](_0x1f0c3c));_0x2652dd(_0x1f0c3c);})[_0x4bb9('0x13')](function(_0x3abfa6){logger[_0x4bb9('0xe')](_0x4bb9('0x2a'),_0x3abfa6[_0x4bb9('0x10')],_0x4346fa);_0x2a156e(_0x382f99[_0x4bb9('0xe')](0x1f4,_0x3abfa6['message']));});});};exports[_0x4bb9('0x43')]=function(_0x26dabe){var _0x5ca436=this;return new Promise(function(_0x2041cf,_0x100be5){return db[_0x4bb9('0x14')]['findAll']({'raw':_0x26dabe['options']?_0x26dabe['options'][_0x4bb9('0x1c')]===undefined?!![]:![]:!![],'where':_0x26dabe['options']?_0x26dabe[_0x4bb9('0x17')][_0x4bb9('0x1d')]||null:null,'attributes':[[_0x4bb9('0x2c'),_0x4bb9('0x2d')],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db['sequelize'][_0x4bb9('0x20')]('id')),'ivrTotalCallsDays'],[db[_0x4bb9('0x1e')]['fn'](_0x4bb9('0x1f'),db['sequelize']['fn']('IF',db[_0x4bb9('0x1e')][_0x4bb9('0x21')](_0x4bb9('0x22')))),_0x4bb9('0x44')]],'group':['campaign']})[_0x4bb9('0x18')](function(_0x1604a5){logger[_0x4bb9('0x11')](_0x4bb9('0x43'),_0x26dabe);logger[_0x4bb9('0x1a')]('GetCampaignHopperHistory',_0x26dabe,JSON[_0x4bb9('0xd')](_0x1604a5));_0x2041cf(_0x1604a5);})[_0x4bb9('0x13')](function(_0x56d688){logger[_0x4bb9('0xe')](_0x4bb9('0x43'),_0x56d688[_0x4bb9('0x10')],_0x26dabe);_0x100be5(_0x5ca436[_0x4bb9('0xe')](0x1f4,_0x56d688['message']));});});};
\ No newline at end of file
index 69835cc..db69b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x052d=['isAuthenticated','update','exports','multer','path','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/describe','describe','show','post','put'];(function(_0x2478a7,_0x5c3223){var _0xcaac7b=function(_0x42c209){while(--_0x42c209){_0x2478a7['push'](_0x2478a7['shift']());}};_0xcaac7b(++_0x5c3223);}(_0x052d,0x1d3));var _0xd052=function(_0x502fdd,_0x17495b){_0x502fdd=_0x502fdd-0x0;var _0x3023a6=_0x052d[_0x502fdd];return _0x3023a6;};'use strict';var multer=require(_0xd052('0x0'));var util=require('util');var path=require(_0xd052('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd052('0x2')]();var fs_extra=require(_0xd052('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xd052('0x4'));var config=require(_0xd052('0x5'));var controller=require('./cmHopperHistory.controller');router[_0xd052('0x6')]('/',auth['isAuthenticated'](),controller[_0xd052('0x7')]);router[_0xd052('0x6')](_0xd052('0x8'),auth['isAuthenticated'](),controller[_0xd052('0x9')]);router[_0xd052('0x6')]('/:id',auth['isAuthenticated'](),controller[_0xd052('0xa')]);router[_0xd052('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0xd052('0xc')]('/:id',auth[_0xd052('0xd')](),controller[_0xd052('0xe')]);module[_0xd052('0xf')]=router;
\ No newline at end of file
+var _0x8ca4=['./cmHopperHistory.controller','get','/describe','describe','/:id','isAuthenticated','show','post','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x33d8ce,_0x5bdbd5){var _0x330137=function(_0x272b36){while(--_0x272b36){_0x33d8ce['push'](_0x33d8ce['shift']());}};_0x330137(++_0x5bdbd5);}(_0x8ca4,0x10f));var _0x48ca=function(_0x5ba46a,_0x582fe0){_0x5ba46a=_0x5ba46a-0x0;var _0x5cbf4f=_0x8ca4[_0x5ba46a];return _0x5cbf4f;};'use strict';var multer=require(_0x48ca('0x0'));var util=require(_0x48ca('0x1'));var path=require(_0x48ca('0x2'));var timeout=require(_0x48ca('0x3'));var express=require(_0x48ca('0x4'));var router=express[_0x48ca('0x5')]();var fs_extra=require(_0x48ca('0x6'));var auth=require(_0x48ca('0x7'));var interaction=require(_0x48ca('0x8'));var config=require('../../config/environment');var controller=require(_0x48ca('0x9'));router[_0x48ca('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x48ca('0xa')](_0x48ca('0xb'),auth['isAuthenticated'](),controller[_0x48ca('0xc')]);router[_0x48ca('0xa')](_0x48ca('0xd'),auth[_0x48ca('0xe')](),controller[_0x48ca('0xf')]);router[_0x48ca('0x10')]('/',auth[_0x48ca('0xe')](),controller['create']);router[_0x48ca('0x11')]('/:id',auth[_0x48ca('0xe')](),controller[_0x48ca('0x12')]);module[_0x48ca('0x13')]=router;
\ No newline at end of file
index 38d97de..7a04840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x899a=['name','STRING','sequelize','exports'];(function(_0x2a7211,_0x1821be){var _0x6eda40=function(_0x4491d2){while(--_0x4491d2){_0x2a7211['push'](_0x2a7211['shift']());}};_0x6eda40(++_0x1821be);}(_0x899a,0x1b6));var _0xa899=function(_0x157f56,_0x23634f){_0x157f56=_0x157f56-0x0;var _0x903d62=_0x899a[_0x157f56];return _0x903d62;};'use strict';var Sequelize=require(_0xa899('0x0'));module[_0xa899('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xa899('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xa899('0x3')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x25ad=['name','sequelize','STRING'];(function(_0x56ed80,_0x11ba36){var _0x878397=function(_0x67e2c5){while(--_0x67e2c5){_0x56ed80['push'](_0x56ed80['shift']());}};_0x878397(++_0x11ba36);}(_0x25ad,0x1b1));var _0xd25a=function(_0x1c3186,_0x24126e){_0x1c3186=_0x1c3186-0x0;var _0x5df9ed=_0x25ad[_0x1c3186];return _0x5df9ed;};'use strict';var Sequelize=require(_0xd25a('0x0'));module['exports']={'name':{'type':Sequelize[_0xd25a('0x1')],'unique':_0xd25a('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd25a('0x1')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 10ca2ac..7a19ed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebf1=['bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./cmList.socket','status','end','json','limit','undefined','offset','count','set','apply','reject','save','update','then','destroy','get','Lists','UserProfileResource','sendStatus','error','stack','name','send','CmList','rawAttributes','fieldName','type','model','map','keys','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','getDispositions','Disposition','pick','removeDispositions','ids','tags','join','isArray','push','success','dataValues','errors','Malformed\x20request\x20syntax','getContacts','CustomFields','CmContact','format','cf_%d','raw','CmCustomField','concat','hasOwnProperty','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','attachment;\x20filename=','list_%d_%s.csv','setHeader','Content-type','download','findOne','sequelize','transaction','Sequelize','TEXT','text','number','switch','defaultValue','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','fast-json-patch','request-promise'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0xebf1,0x1a0));var _0x1ebf=function(_0x154983,_0xc29edf){_0x154983=_0x154983-0x0;var _0x3d1243=_0xebf1[_0x154983];return _0x3d1243;};'use strict';var emlformat=require(_0x1ebf('0x0'));var rimraf=require(_0x1ebf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1ebf('0x2'));var rp=require(_0x1ebf('0x3'));var moment=require('moment');var BPromise=require(_0x1ebf('0x4'));var Mustache=require(_0x1ebf('0x5'));var util=require(_0x1ebf('0x6'));var path=require('path');var sox=require(_0x1ebf('0x7'));var csv=require('to-csv');var ejs=require(_0x1ebf('0x8'));var fs=require('fs');var fs_extra=require(_0x1ebf('0x9'));var _=require(_0x1ebf('0xa'));var squel=require(_0x1ebf('0xb'));var crypto=require('crypto');var jsforce=require(_0x1ebf('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1ebf('0xd'));var querystring=require('querystring');var Papa=require(_0x1ebf('0xe'));var Redis=require(_0x1ebf('0xf'));var authService=require(_0x1ebf('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x1ebf('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x1ebf('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x1ebf('0x13'));var db=require(_0x1ebf('0x14'))['db'];config[_0x1ebf('0x15')]=_['defaults'](config[_0x1ebf('0x15')],{'host':_0x1ebf('0x16'),'port':0x18eb});var socket=require(_0x1ebf('0x17'))(new Redis(config[_0x1ebf('0x15')]));require(_0x1ebf('0x18'))['register'](socket);function respondWithStatusCode(_0x2a6e26,_0xa8c4b9){_0xa8c4b9=_0xa8c4b9||0xcc;return function(_0x4cdd92){if(_0x4cdd92){return _0x2a6e26['sendStatus'](_0xa8c4b9);}return _0x2a6e26[_0x1ebf('0x19')](_0xa8c4b9)[_0x1ebf('0x1a')]();};}function respondWithResult(_0x1f6664,_0x182372){_0x182372=_0x182372||0xc8;return function(_0x1c7c0b){if(_0x1c7c0b){return _0x1f6664['status'](_0x182372)[_0x1ebf('0x1b')](_0x1c7c0b);}};}function respondWithFilteredResult(_0x5dbbb8,_0x57d971){return function(_0x5aa612){if(_0x5aa612){var _0x33e5c3=typeof _0x57d971['offset']==='undefined'&&typeof _0x57d971[_0x1ebf('0x1c')]===_0x1ebf('0x1d');var _0x38ac87=_0x5aa612['count'];var _0x14917f=_0x33e5c3?0x0:_0x57d971[_0x1ebf('0x1e')];var _0x374893=_0x33e5c3?_0x5aa612[_0x1ebf('0x1f')]:_0x57d971['offset']+_0x57d971['limit'];var _0x4eaf85;if(_0x374893>=_0x38ac87){_0x374893=_0x38ac87;_0x4eaf85=0xc8;}else{_0x4eaf85=0xce;}_0x5dbbb8[_0x1ebf('0x19')](_0x4eaf85);return _0x5dbbb8[_0x1ebf('0x20')]('Content-Range',_0x14917f+'-'+_0x374893+'/'+_0x38ac87)['json'](_0x5aa612);}return null;};}function patchUpdates(_0x21072b){return function(_0x4c5adf){try{jsonpatch[_0x1ebf('0x21')](_0x4c5adf,_0x21072b,!![]);}catch(_0x37cd7f){return BPromise[_0x1ebf('0x22')](_0x37cd7f);}return _0x4c5adf[_0x1ebf('0x23')]();};}function saveUpdates(_0x5332f3,_0x53dc7e){return function(_0x4008f8){if(_0x4008f8){return _0x4008f8[_0x1ebf('0x24')](_0x5332f3)[_0x1ebf('0x25')](function(_0x4ddfcf){return _0x4ddfcf;});}return null;};}function removeEntity(_0x254b86,_0x4fdf03){return function(_0x39849d){if(_0x39849d){return _0x39849d[_0x1ebf('0x26')]()[_0x1ebf('0x25')](function(){var _0x19ec80=_0x39849d[_0x1ebf('0x27')]({'plain':!![]});var _0x347c29=_0x1ebf('0x28');return db[_0x1ebf('0x29')][_0x1ebf('0x26')]({'where':{'type':_0x347c29,'resourceId':_0x19ec80['id']}})[_0x1ebf('0x25')](function(){return _0x39849d;});})[_0x1ebf('0x25')](function(){_0x254b86[_0x1ebf('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb5b9f8,_0x241329){return function(_0x465fdb){if(!_0x465fdb){_0xb5b9f8[_0x1ebf('0x2a')](0x194);}return _0x465fdb;};}function handleError(_0x2bd087,_0x2d27c6){_0x2d27c6=_0x2d27c6||0x1f4;return function(_0x34d047){logger[_0x1ebf('0x2b')](_0x34d047[_0x1ebf('0x2c')]);if(_0x34d047[_0x1ebf('0x2d')]){delete _0x34d047['name'];}_0x2bd087[_0x1ebf('0x19')](_0x2d27c6)[_0x1ebf('0x2e')](_0x34d047);};}exports['index']=function(_0x48f479,_0x5b64e8){var _0x121cdc={},_0x5d907f={},_0xed39c1={'count':0x0,'rows':[]};var _0x29c68e=_['map'](db[_0x1ebf('0x2f')][_0x1ebf('0x30')],function(_0x2452c9){return{'name':_0x2452c9[_0x1ebf('0x31')],'type':_0x2452c9[_0x1ebf('0x32')]['key']};});_0x5d907f[_0x1ebf('0x33')]=_[_0x1ebf('0x34')](_0x29c68e,_0x1ebf('0x2d'));_0x5d907f['query']=_[_0x1ebf('0x35')](_0x48f479[_0x1ebf('0x36')]);_0x5d907f['filters']=_[_0x1ebf('0x37')](_0x5d907f[_0x1ebf('0x33')],_0x5d907f[_0x1ebf('0x36')]);_0x121cdc['attributes']=_['intersection'](_0x5d907f[_0x1ebf('0x33')],qs[_0x1ebf('0x38')](_0x48f479['query'][_0x1ebf('0x38')]));_0x121cdc[_0x1ebf('0x39')]=_0x121cdc['attributes'][_0x1ebf('0x3a')]?_0x121cdc[_0x1ebf('0x39')]:_0x5d907f[_0x1ebf('0x33')];if(!_0x48f479['query']['hasOwnProperty'](_0x1ebf('0x3b'))){_0x121cdc[_0x1ebf('0x1c')]=qs[_0x1ebf('0x1c')](_0x48f479['query'][_0x1ebf('0x1c')]);_0x121cdc[_0x1ebf('0x1e')]=qs[_0x1ebf('0x1e')](_0x48f479[_0x1ebf('0x36')][_0x1ebf('0x1e')]);}_0x121cdc[_0x1ebf('0x3c')]=qs['sort'](_0x48f479['query'][_0x1ebf('0x3d')]);_0x121cdc[_0x1ebf('0x3e')]=qs[_0x1ebf('0x3f')](_['pick'](_0x48f479['query'],_0x5d907f[_0x1ebf('0x3f')]),_0x29c68e);if(_0x48f479[_0x1ebf('0x36')][_0x1ebf('0x40')]){_0x121cdc[_0x1ebf('0x3e')]=_[_0x1ebf('0x41')](_0x121cdc[_0x1ebf('0x3e')],{'$or':_[_0x1ebf('0x34')](_0x29c68e,function(_0x252d42){if(_0x252d42['type']!==_0x1ebf('0x42')){var _0xd5ec57={};_0xd5ec57[_0x252d42[_0x1ebf('0x2d')]]={'$like':'%'+_0x48f479[_0x1ebf('0x36')][_0x1ebf('0x40')]+'%'};return _0xd5ec57;}})});}_0x121cdc=_[_0x1ebf('0x41')]({},_0x121cdc,_0x48f479[_0x1ebf('0x43')]);var _0x240a03={'where':_0x121cdc['where']};return db['CmList'][_0x1ebf('0x1f')](_0x240a03)['then'](function(_0x41c06c){_0xed39c1[_0x1ebf('0x1f')]=_0x41c06c;if(_0x48f479[_0x1ebf('0x36')][_0x1ebf('0x44')]){_0x121cdc[_0x1ebf('0x45')]=[{'all':!![]}];}return db[_0x1ebf('0x2f')]['findAll'](_0x121cdc);})[_0x1ebf('0x25')](function(_0x253c71){_0xed39c1[_0x1ebf('0x46')]=_0x253c71;return _0xed39c1;})[_0x1ebf('0x25')](respondWithFilteredResult(_0x5b64e8,_0x121cdc))[_0x1ebf('0x47')](handleError(_0x5b64e8,null));};exports[_0x1ebf('0x48')]=function(_0x35289a,_0x41d744){var _0x69272c={'raw':![],'where':{'id':_0x35289a[_0x1ebf('0x49')]['id']}},_0x221829={};_0x221829[_0x1ebf('0x33')]=_['keys'](db['CmList'][_0x1ebf('0x30')]);_0x221829['query']=_[_0x1ebf('0x35')](_0x35289a[_0x1ebf('0x36')]);_0x221829['filters']=_['intersection'](_0x221829[_0x1ebf('0x33')],_0x221829[_0x1ebf('0x36')]);_0x69272c[_0x1ebf('0x39')]=_[_0x1ebf('0x37')](_0x221829[_0x1ebf('0x33')],qs[_0x1ebf('0x38')](_0x35289a[_0x1ebf('0x36')][_0x1ebf('0x38')]));_0x69272c[_0x1ebf('0x39')]=_0x69272c[_0x1ebf('0x39')][_0x1ebf('0x3a')]?_0x69272c['attributes']:_0x221829['model'];if(_0x35289a[_0x1ebf('0x36')][_0x1ebf('0x44')]){_0x69272c[_0x1ebf('0x45')]=[{'all':!![]}];}_0x69272c=_[_0x1ebf('0x41')]({},_0x69272c,_0x35289a['options']);return db[_0x1ebf('0x2f')][_0x1ebf('0x4a')](_0x69272c)[_0x1ebf('0x25')](handleEntityNotFound(_0x41d744,null))[_0x1ebf('0x25')](respondWithResult(_0x41d744,null))[_0x1ebf('0x47')](handleError(_0x41d744,null));};exports[_0x1ebf('0x4b')]=function(_0x99c96b,_0x3169c0){return db['CmList'][_0x1ebf('0x4b')](_0x99c96b[_0x1ebf('0x4c')],{})['then'](function(_0x23b629){var _0x6d8b27=_0x99c96b[_0x1ebf('0x4d')][_0x1ebf('0x27')]({'plain':!![]});if(!_0x6d8b27)throw new Error(_0x1ebf('0x4e'));if(_0x6d8b27[_0x1ebf('0x4f')]===_0x1ebf('0x4d')){var _0x3ac232=_0x23b629[_0x1ebf('0x27')]({'plain':!![]});var _0xc8e034=_0x1ebf('0x28');return db['UserProfileSection'][_0x1ebf('0x4a')]({'where':{'name':_0xc8e034,'userProfileId':_0x6d8b27[_0x1ebf('0x50')]},'raw':!![]})[_0x1ebf('0x25')](function(_0x4cfd9c){if(_0x4cfd9c&&_0x4cfd9c[_0x1ebf('0x51')]===0x0){return db[_0x1ebf('0x29')][_0x1ebf('0x4b')]({'name':_0x3ac232[_0x1ebf('0x2d')],'resourceId':_0x3ac232['id'],'type':_0x4cfd9c[_0x1ebf('0x2d')],'sectionId':_0x4cfd9c['id']},{})['then'](function(){return _0x23b629;});}else{return _0x23b629;}})['catch'](function(_0x57af07){logger[_0x1ebf('0x2b')](_0x1ebf('0x52'),_0x57af07);throw _0x57af07;});}return _0x23b629;})[_0x1ebf('0x25')](respondWithResult(_0x3169c0,0xc9))[_0x1ebf('0x47')](handleError(_0x3169c0,null));};exports[_0x1ebf('0x24')]=function(_0x1acdff,_0x254c44){if(_0x1acdff[_0x1ebf('0x4c')]['id']){delete _0x1acdff[_0x1ebf('0x4c')]['id'];}return db[_0x1ebf('0x2f')][_0x1ebf('0x4a')]({'where':{'id':_0x1acdff[_0x1ebf('0x49')]['id']}})[_0x1ebf('0x25')](handleEntityNotFound(_0x254c44,null))['then'](saveUpdates(_0x1acdff[_0x1ebf('0x4c')],null))['then'](respondWithResult(_0x254c44,null))[_0x1ebf('0x47')](handleError(_0x254c44,null));};exports[_0x1ebf('0x26')]=function(_0x1631f0,_0x2a622f){return db[_0x1ebf('0x2f')]['find']({'where':{'id':_0x1631f0[_0x1ebf('0x49')]['id']}})[_0x1ebf('0x25')](handleEntityNotFound(_0x2a622f,null))['then'](removeEntity(_0x2a622f,null))[_0x1ebf('0x47')](handleError(_0x2a622f,null));};exports[_0x1ebf('0x53')]=function(_0xd8f402,_0x4fe18d){return db[_0x1ebf('0x2f')]['describe']()[_0x1ebf('0x25')](respondWithResult(_0x4fe18d,null))['catch'](handleError(_0x4fe18d,null));};exports[_0x1ebf('0x54')]=function(_0x51b7f9,_0x4cdff6,_0x54acfa){if(_0x51b7f9['body']['id']){delete _0x51b7f9[_0x1ebf('0x4c')]['id'];}return db['CmList']['find']({'where':{'id':_0x51b7f9[_0x1ebf('0x49')]['id']}})[_0x1ebf('0x25')](handleEntityNotFound(_0x4cdff6,null))[_0x1ebf('0x25')](function(_0x22d7f7){if(_0x22d7f7){_0x51b7f9['body'][_0x1ebf('0x55')]=_0x22d7f7['id'];return db['Disposition']['create'](_0x51b7f9[_0x1ebf('0x4c')]);}})[_0x1ebf('0x25')](respondWithResult(_0x4cdff6,null))[_0x1ebf('0x47')](handleError(_0x4cdff6,null));};exports[_0x1ebf('0x56')]=function(_0x13b2d6,_0x56fb65,_0x264a06){var _0x3be01a={'raw':![],'where':{}};var _0x133b33={};var _0x19942d={'count':0x0,'rows':[]};return db[_0x1ebf('0x2f')]['findOne']({'where':{'id':_0x13b2d6[_0x1ebf('0x49')]['id']}})[_0x1ebf('0x25')](handleEntityNotFound(_0x56fb65,null))[_0x1ebf('0x25')](function(_0x225b93){if(_0x225b93){_0x133b33[_0x1ebf('0x33')]=_[_0x1ebf('0x35')](db[_0x1ebf('0x57')][_0x1ebf('0x30')]);_0x133b33[_0x1ebf('0x36')]=_[_0x1ebf('0x35')](_0x13b2d6['query']);_0x133b33['filters']=_[_0x1ebf('0x37')](_0x133b33[_0x1ebf('0x33')],_0x133b33['query']);_0x3be01a[_0x1ebf('0x39')]=_[_0x1ebf('0x37')](_0x133b33[_0x1ebf('0x33')],qs[_0x1ebf('0x38')](_0x13b2d6['query'][_0x1ebf('0x38')]));_0x3be01a[_0x1ebf('0x39')]=_0x3be01a[_0x1ebf('0x39')]['length']?_0x3be01a[_0x1ebf('0x39')]:_0x133b33[_0x1ebf('0x33')];if(!_0x13b2d6[_0x1ebf('0x36')]['hasOwnProperty'](_0x1ebf('0x3b'))){_0x3be01a[_0x1ebf('0x1c')]=qs[_0x1ebf('0x1c')](_0x13b2d6[_0x1ebf('0x36')][_0x1ebf('0x1c')]);_0x3be01a[_0x1ebf('0x1e')]=qs[_0x1ebf('0x1e')](_0x13b2d6['query']['offset']);}_0x3be01a['order']=qs[_0x1ebf('0x3d')](_0x13b2d6[_0x1ebf('0x36')][_0x1ebf('0x3d')]);_0x3be01a[_0x1ebf('0x3e')]=qs['filters'](_[_0x1ebf('0x58')](_0x13b2d6[_0x1ebf('0x36')],_0x133b33[_0x1ebf('0x3f')]));_0x3be01a[_0x1ebf('0x3e')][_0x1ebf('0x55')]=_0x225b93['id'];if(_0x13b2d6[_0x1ebf('0x36')][_0x1ebf('0x40')]){_0x3be01a[_0x1ebf('0x3e')]=_[_0x1ebf('0x41')](_0x3be01a[_0x1ebf('0x3e')],{'$or':_[_0x1ebf('0x34')](_0x3be01a[_0x1ebf('0x39')],function(_0x5e626f){var _0x2e919a={};_0x2e919a[_0x5e626f]={'$like':'%'+_0x13b2d6[_0x1ebf('0x36')][_0x1ebf('0x40')]+'%'};return _0x2e919a;})});}_0x3be01a=_[_0x1ebf('0x41')]({},_0x3be01a,_0x13b2d6['options']);return db['Disposition'][_0x1ebf('0x1f')]({'where':_0x3be01a[_0x1ebf('0x3e')]})['then'](function(_0x5e7533){_0x19942d[_0x1ebf('0x1f')]=_0x5e7533;if(_0x13b2d6[_0x1ebf('0x36')][_0x1ebf('0x44')]){_0x3be01a[_0x1ebf('0x45')]=[{'all':!![]}];}return db[_0x1ebf('0x57')]['findAll'](_0x3be01a);})[_0x1ebf('0x25')](function(_0x49f259){_0x19942d[_0x1ebf('0x46')]=_0x49f259;return _0x19942d;});}})[_0x1ebf('0x25')](respondWithFilteredResult(_0x56fb65,_0x3be01a))[_0x1ebf('0x47')](handleError(_0x56fb65,null));};exports['removeDispositions']=function(_0x5b5e21,_0x2860af,_0x105528){return db[_0x1ebf('0x2f')]['find']({'where':{'id':_0x5b5e21[_0x1ebf('0x49')]['id']}})[_0x1ebf('0x25')](handleEntityNotFound(_0x2860af,null))[_0x1ebf('0x25')](function(_0x3c82d0){if(_0x3c82d0){return _0x3c82d0[_0x1ebf('0x59')](_0x5b5e21[_0x1ebf('0x36')][_0x1ebf('0x5a')]);}})[_0x1ebf('0x25')](respondWithStatusCode(_0x2860af,null))[_0x1ebf('0x47')](handleError(_0x2860af,null));};exports['addContacts']=function(_0x1e5df0,_0x51dfb9,_0x178075){return db['CmList'][_0x1ebf('0x4a')]({'where':{'id':_0x1e5df0[_0x1ebf('0x49')]['id']}})[_0x1ebf('0x25')](handleEntityNotFound(_0x51dfb9,null))['then'](function(_0x1960a3){if(_0x1960a3){var _0x3cb6af=[];var _0x499a56={'success':[],'errors':[]};return db['CmContact']['describe']()[_0x1ebf('0x25')](function(_0x542b1e){if(_0x1e5df0['body']['tags']&&_['isArray'](_0x1e5df0[_0x1ebf('0x4c')]['tags'])){if(_0x1e5df0['body'][_0x1ebf('0x5b')][_0x1ebf('0x3a')]){_0x1e5df0[_0x1ebf('0x4c')]['tags']=_0x1e5df0[_0x1ebf('0x4c')][_0x1ebf('0x5b')][_0x1ebf('0x5c')](';')+';';}else{_0x1e5df0['body']['tags']=null;}}else{_0x1e5df0['body']['tags']=null;}if(_0x1e5df0[_0x1ebf('0x4c')]&&_[_0x1ebf('0x5d')](_0x1e5df0['body'])){for(var _0x4e9850=0x0;_0x4e9850<_0x1e5df0[_0x1ebf('0x4c')][_0x1ebf('0x3a')];_0x4e9850+=0x1){_0x1e5df0[_0x1ebf('0x4c')][_0x4e9850][_0x1ebf('0x55')]=_0x1e5df0[_0x1ebf('0x49')]['id'];_0x3cb6af[_0x1ebf('0x5e')](_0x1e5df0['body'][_0x4e9850]);}return BPromise['each'](_0x3cb6af,function(_0x3dcd39){return db['CmContact'][_0x1ebf('0x4b')](_['omit'](_0x3dcd39,['ids','id'])||{},{'fields':_[_0x1ebf('0x35')](_0x542b1e),'raw':!![]})[_0x1ebf('0x25')](function(_0x5a7f38){_0x499a56[_0x1ebf('0x5f')]['push'](_0x5a7f38[_0x1ebf('0x60')]);})['catch'](function(_0x2cb012){_0x499a56[_0x1ebf('0x61')][_0x1ebf('0x5e')]({'data':_0x3dcd39,'error':_0x2cb012['message']});});})[_0x1ebf('0x25')](function(_0x490471){return _0x499a56;})[_0x1ebf('0x47')](function(_0x1d0287){return _0x1d0287;});}else{_0x51dfb9[_0x1ebf('0x19')](0x190)[_0x1ebf('0x1b')]({'message':_0x1ebf('0x62')});}});}})[_0x1ebf('0x25')](respondWithResult(_0x51dfb9,null))[_0x1ebf('0x47')](handleError(_0x51dfb9,null));};exports[_0x1ebf('0x63')]=function(_0x558c5a,_0x59b712,_0x32b993){var _0xab692b;return db[_0x1ebf('0x2f')][_0x1ebf('0x4a')]({'where':{'id':_0x558c5a[_0x1ebf('0x49')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x1ebf('0x64')}]})['then'](handleEntityNotFound(_0x59b712,null))[_0x1ebf('0x25')](function(_0x4ba86b){if(_0x4ba86b){_0xab692b=_0x4ba86b;return db[_0x1ebf('0x65')]['rawAttributes'];}})[_0x1ebf('0x25')](function(_0xc7d02e){if(_0xc7d02e){var _0x3905cf={};var _0x1dc56c={};_0x1dc56c[_0x1ebf('0x33')]=_['concat'](_[_0x1ebf('0x35')](_0xc7d02e),_[_0x1ebf('0x34')](_0xab692b['CustomFields'],function(_0x2d7b19){return util[_0x1ebf('0x66')](_0x1ebf('0x67'),_0x2d7b19['id']);}));_0x1dc56c[_0x1ebf('0x36')]=_[_0x1ebf('0x35')](_0x558c5a[_0x1ebf('0x36')]);_0x1dc56c[_0x1ebf('0x3f')]=_['intersection'](_0x1dc56c[_0x1ebf('0x33')],_0x1dc56c[_0x1ebf('0x36')]);_0x3905cf[_0x1ebf('0x39')]=_['intersection'](_0x1dc56c[_0x1ebf('0x33')],qs[_0x1ebf('0x38')](_0x558c5a[_0x1ebf('0x36')][_0x1ebf('0x38')]));_0x3905cf[_0x1ebf('0x39')]=_0x3905cf[_0x1ebf('0x39')][_0x1ebf('0x3a')]?_0x3905cf[_0x1ebf('0x39')]:_0x1dc56c[_0x1ebf('0x33')];if(!_0x558c5a[_0x1ebf('0x36')]['hasOwnProperty']('nolimit')){_0x3905cf[_0x1ebf('0x1c')]=qs['limit'](_0x558c5a['query'][_0x1ebf('0x1c')]);_0x3905cf[_0x1ebf('0x1e')]=qs[_0x1ebf('0x1e')](_0x558c5a['query']['offset']);}_0x3905cf[_0x1ebf('0x3c')]=qs[_0x1ebf('0x3d')](_0x558c5a[_0x1ebf('0x36')][_0x1ebf('0x3d')]);_0x3905cf[_0x1ebf('0x3e')]=qs[_0x1ebf('0x3f')](_['pick'](_0x558c5a[_0x1ebf('0x36')],_0x1dc56c[_0x1ebf('0x3f')]));_0x3905cf[_0x1ebf('0x68')]=!![];if(_0x558c5a['query'][_0x1ebf('0x40')]){_0x3905cf[_0x1ebf('0x3e')]=_[_0x1ebf('0x41')](_0x3905cf[_0x1ebf('0x3e')],{'$or':_[_0x1ebf('0x34')](_0x3905cf['attributes'],function(_0x7bb1){var _0x24e0e4={};_0x24e0e4[_0x7bb1]={'$like':'%'+_0x558c5a['query']['filter']+'%'};return _0x24e0e4;})});}_0x3905cf=_[_0x1ebf('0x41')]({},_0x3905cf,_0x558c5a[_0x1ebf('0x43')]);return _0xab692b[_0x1ebf('0x63')](_0x3905cf);}})[_0x1ebf('0x25')](respondWithResult(_0x59b712,null))[_0x1ebf('0x47')](handleError(_0x59b712,null));};exports['getContactsCsv']=function(_0x19a0ad,_0x57c012,_0x2282b3){var _0x12e5fb;return db[_0x1ebf('0x2f')][_0x1ebf('0x4a')]({'where':{'id':_0x19a0ad['params']['id']},'include':[{'model':db[_0x1ebf('0x69')],'as':_0x1ebf('0x64')}]})['then'](handleEntityNotFound(_0x57c012,null))['then'](function(_0x1bfe48){if(_0x1bfe48){_0x12e5fb=_0x1bfe48;return db[_0x1ebf('0x65')][_0x1ebf('0x30')];}})[_0x1ebf('0x25')](function(_0x4f6244){if(_0x4f6244){var _0x363a5a={};var _0x5c6236={};_0x5c6236[_0x1ebf('0x33')]=_[_0x1ebf('0x6a')](_[_0x1ebf('0x35')](_0x4f6244),_['map'](_0x12e5fb[_0x1ebf('0x64')],function(_0x48ccf3){return util['format'](_0x1ebf('0x67'),_0x48ccf3['id']);}));_0x5c6236['query']=_['keys'](_0x19a0ad[_0x1ebf('0x36')]);_0x5c6236[_0x1ebf('0x3f')]=_[_0x1ebf('0x37')](_0x5c6236[_0x1ebf('0x33')],_0x5c6236[_0x1ebf('0x36')]);_0x363a5a[_0x1ebf('0x39')]=_['intersection'](_0x5c6236[_0x1ebf('0x33')],qs[_0x1ebf('0x38')](_0x19a0ad['query'][_0x1ebf('0x38')]));_0x363a5a[_0x1ebf('0x39')]=_0x363a5a[_0x1ebf('0x39')][_0x1ebf('0x3a')]?_0x363a5a[_0x1ebf('0x39')]:_0x5c6236[_0x1ebf('0x33')];if(!_0x19a0ad[_0x1ebf('0x36')][_0x1ebf('0x6b')](_0x1ebf('0x3b'))){_0x363a5a['limit']=qs[_0x1ebf('0x1c')](_0x19a0ad['query']['limit']);_0x363a5a['offset']=qs[_0x1ebf('0x1e')](_0x19a0ad[_0x1ebf('0x36')][_0x1ebf('0x1e')]);}_0x363a5a[_0x1ebf('0x3c')]=qs['sort'](_0x19a0ad[_0x1ebf('0x36')][_0x1ebf('0x3d')]);_0x363a5a[_0x1ebf('0x3e')]=qs[_0x1ebf('0x3f')](_[_0x1ebf('0x58')](_0x19a0ad[_0x1ebf('0x36')],_0x5c6236['filters']));_0x363a5a[_0x1ebf('0x68')]=!![];if(_0x19a0ad[_0x1ebf('0x36')][_0x1ebf('0x40')]){_0x363a5a[_0x1ebf('0x3e')]=_['merge'](_0x363a5a[_0x1ebf('0x3e')],{'$or':_[_0x1ebf('0x34')](_0x363a5a[_0x1ebf('0x39')],function(_0x118a74){var _0x1cd5a8={};_0x1cd5a8[_0x118a74]={'$like':'%'+_0x19a0ad[_0x1ebf('0x36')]['filter']+'%'};return _0x1cd5a8;})});}_0x363a5a=_[_0x1ebf('0x41')]({},_0x363a5a,_0x19a0ad[_0x1ebf('0x43')]);return _0x12e5fb[_0x1ebf('0x63')](_0x363a5a);}})['then'](function(_0x205c76){if(!_[_0x1ebf('0x6c')](_0x205c76)){var _0x8622f9=toCsv(_0x205c76);var _0x5d57e0=Date[_0x1ebf('0x6d')]();fs[_0x1ebf('0x6e')](util[_0x1ebf('0x66')](_0x1ebf('0x6f'),_0x12e5fb['id'],_0x5d57e0),_0x8622f9);_0x57c012['setHeader']('Content-disposition',_0x1ebf('0x70')+util[_0x1ebf('0x66')](_0x1ebf('0x71'),_0x12e5fb['id'],_0x5d57e0));_0x57c012[_0x1ebf('0x72')](_0x1ebf('0x73'),'text/csv');return _0x57c012[_0x1ebf('0x74')](util[_0x1ebf('0x66')](_0x1ebf('0x6f'),_0x12e5fb['id'],_0x5d57e0));}else{return _0x57c012[_0x1ebf('0x2a')](0xcc);}})[_0x1ebf('0x47')](handleError(_0x57c012,null));};exports['addCustomField']=function(_0x8f84d5,_0x14f48e,_0xc01dec){var _0x430925;delete _0x8f84d5[_0x1ebf('0x4c')]['id'];return db[_0x1ebf('0x2f')][_0x1ebf('0x75')]({'where':{'id':_0x8f84d5['params']['id']}})[_0x1ebf('0x25')](handleEntityNotFound(_0x14f48e,null))[_0x1ebf('0x25')](function(_0x5b53eb){if(_0x5b53eb){return db[_0x1ebf('0x76')][_0x1ebf('0x77')](function(_0xdb9958){return db['CmCustomField'][_0x1ebf('0x4b')](_0x8f84d5[_0x1ebf('0x4c')],{'transaction':_0xdb9958})[_0x1ebf('0x25')](function(_0x3195f0){_0x430925=_0x3195f0;return _0x5b53eb['addCustomFields'](_0x3195f0,{'transaction':_0xdb9958});})[_0x1ebf('0x25')](function(){var _0x7db43a={'type':db[_0x1ebf('0x78')][_0x1ebf('0x79')],'transaction':_0xdb9958};switch(_0x8f84d5[_0x1ebf('0x4c')][_0x1ebf('0x32')]){case _0x1ebf('0x7a'):_0x7db43a[_0x1ebf('0x32')]=db['Sequelize'][_0x1ebf('0x79')];break;case _0x1ebf('0x7b'):_0x7db43a['type']=db['Sequelize']['INTEGER'];break;case _0x1ebf('0x7c'):_0x7db43a[_0x1ebf('0x32')]=db[_0x1ebf('0x78')]['BOOLEAN'];_0x7db43a[_0x1ebf('0x7d')]=![];break;default:}return db[_0x1ebf('0x76')][_0x1ebf('0x7e')][_0x1ebf('0x7f')](_0x1ebf('0x80'),util['format'](_0x1ebf('0x81'),_0x430925['id']),_0x7db43a);})[_0x1ebf('0x25')](function(){return _0x430925;});});}})[_0x1ebf('0x25')](respondWithResult(_0x14f48e,null))[_0x1ebf('0x47')](handleError(_0x14f48e,null));};exports[_0x1ebf('0x82')]=function(_0x5239d4,_0x127735,_0xb1aabd){var _0x3a0043={};var _0x32a6a2={};var _0x17693d;var _0x2bcf07;return db[_0x1ebf('0x2f')]['findOne']({'where':{'id':_0x5239d4[_0x1ebf('0x49')]['id']}})[_0x1ebf('0x25')](handleEntityNotFound(_0x127735,null))[_0x1ebf('0x25')](function(_0x56224f){if(_0x56224f){_0x17693d=_0x56224f;_0x32a6a2[_0x1ebf('0x33')]=_[_0x1ebf('0x35')](db['CmCustomField'][_0x1ebf('0x30')]);_0x32a6a2[_0x1ebf('0x36')]=_['keys'](_0x5239d4[_0x1ebf('0x36')]);_0x32a6a2[_0x1ebf('0x3f')]=_[_0x1ebf('0x37')](_0x32a6a2[_0x1ebf('0x33')],_0x32a6a2[_0x1ebf('0x36')]);_0x3a0043[_0x1ebf('0x39')]=_[_0x1ebf('0x37')](_0x32a6a2['model'],qs[_0x1ebf('0x38')](_0x5239d4[_0x1ebf('0x36')][_0x1ebf('0x38')]));_0x3a0043[_0x1ebf('0x39')]=_0x3a0043[_0x1ebf('0x39')][_0x1ebf('0x3a')]?_0x3a0043[_0x1ebf('0x39')]:_0x32a6a2[_0x1ebf('0x33')];_0x3a0043['order']=qs[_0x1ebf('0x3d')](_0x5239d4[_0x1ebf('0x36')]['sort']);_0x3a0043[_0x1ebf('0x3e')]=qs[_0x1ebf('0x3f')](_['pick'](_0x5239d4[_0x1ebf('0x36')],_0x32a6a2[_0x1ebf('0x3f')]));_0x3a0043['where']=_[_0x1ebf('0x41')](_0x3a0043[_0x1ebf('0x3e')],{'$or':[{'ListId':_0x56224f['id']},{'ListId':null}]});if(_0x5239d4[_0x1ebf('0x36')][_0x1ebf('0x40')]){_0x3a0043[_0x1ebf('0x3e')]=_[_0x1ebf('0x41')](_0x3a0043[_0x1ebf('0x3e')],{'$or':_[_0x1ebf('0x34')](_0x3a0043[_0x1ebf('0x39')],function(_0x329ee8){var _0x15afb5={};_0x15afb5[_0x329ee8]={'$like':'%'+_0x5239d4['query'][_0x1ebf('0x40')]+'%'};return _0x15afb5;})});}_0x3a0043=_[_0x1ebf('0x41')]({},_0x3a0043,_0x5239d4[_0x1ebf('0x43')]);return db[_0x1ebf('0x69')][_0x1ebf('0x83')](_0x3a0043);}})[_0x1ebf('0x25')](respondWithResult(_0x127735,null))[_0x1ebf('0x47')](handleError(_0x127735,null));};exports[_0x1ebf('0x84')]=function(_0x3703f6,_0x4722be,_0x317326){return db[_0x1ebf('0x2f')][_0x1ebf('0x4a')]({'where':{'id':_0x3703f6[_0x1ebf('0x49')]['id']}})[_0x1ebf('0x25')](handleEntityNotFound(_0x4722be,null))[_0x1ebf('0x25')](function(_0x5aa003){if(_0x5aa003){return _0x5aa003[_0x1ebf('0x84')](_0x3703f6['body'][_0x1ebf('0x5a')],_['omit'](_0x3703f6[_0x1ebf('0x4c')],['ids','id'])||{})[_0x1ebf('0x85')](function(_0xbb4dcb){for(var _0x11e60a=0x0;_0x11e60a<_0x3703f6[_0x1ebf('0x4c')][_0x1ebf('0x5a')]['length'];_0x11e60a+=0x1){socket[_0x1ebf('0x86')](_0x1ebf('0x87'),{'UserId':Number(_0x3703f6[_0x1ebf('0x4c')][_0x1ebf('0x5a')][_0x11e60a]),'CmListId':Number(_0x3703f6['params']['id'])});}return _0xbb4dcb;});}})[_0x1ebf('0x25')](respondWithResult(_0x4722be,null))[_0x1ebf('0x47')](handleError(_0x4722be,null));};exports[_0x1ebf('0x88')]=function(_0x378df1,_0x1bcc61,_0x1aaf63){return db[_0x1ebf('0x2f')]['find']({'where':{'id':_0x378df1[_0x1ebf('0x49')]['id']}})[_0x1ebf('0x25')](handleEntityNotFound(_0x1bcc61,null))[_0x1ebf('0x25')](function(_0x989498){if(_0x989498){return _0x989498[_0x1ebf('0x88')](_0x378df1[_0x1ebf('0x36')]['ids'])['then'](function(){if(_[_0x1ebf('0x5d')](_0x378df1['query'][_0x1ebf('0x5a')])){for(var _0x2752df=0x0;_0x2752df<_0x378df1['query'][_0x1ebf('0x5a')][_0x1ebf('0x3a')];_0x2752df+=0x1){socket[_0x1ebf('0x86')]('userCmList:remove',{'UserId':Number(_0x378df1[_0x1ebf('0x36')][_0x1ebf('0x5a')][_0x2752df]),'CmListId':Number(_0x378df1[_0x1ebf('0x49')]['id'])});}}else{socket[_0x1ebf('0x86')](_0x1ebf('0x89'),{'UserId':Number(_0x378df1[_0x1ebf('0x36')][_0x1ebf('0x5a')]),'CmListId':Number(_0x378df1[_0x1ebf('0x49')]['id'])});}});}})[_0x1ebf('0x25')](respondWithStatusCode(_0x1bcc61,null))[_0x1ebf('0x47')](handleError(_0x1bcc61,null));};exports[_0x1ebf('0x8a')]=function(_0xe7d108,_0x2a1403,_0x584422){var _0x301681={};var _0x4f92a4={};var _0x3d3485;var _0x280e03;return db['CmList'][_0x1ebf('0x75')]({'where':{'id':_0xe7d108['params']['id']}})['then'](handleEntityNotFound(_0x2a1403,null))[_0x1ebf('0x25')](function(_0x279960){if(_0x279960){_0x3d3485=_0x279960;_0x4f92a4[_0x1ebf('0x33')]=_[_0x1ebf('0x35')](db[_0x1ebf('0x8b')][_0x1ebf('0x30')]);_0x4f92a4[_0x1ebf('0x36')]=_[_0x1ebf('0x35')](_0xe7d108[_0x1ebf('0x36')]);_0x4f92a4[_0x1ebf('0x3f')]=_['intersection'](_0x4f92a4[_0x1ebf('0x33')],_0x4f92a4[_0x1ebf('0x36')]);_0x301681[_0x1ebf('0x39')]=_[_0x1ebf('0x37')](_0x4f92a4[_0x1ebf('0x33')],qs[_0x1ebf('0x38')](_0xe7d108['query'][_0x1ebf('0x38')]));_0x301681[_0x1ebf('0x39')]=_0x301681[_0x1ebf('0x39')]['length']?_0x301681['attributes']:_0x4f92a4[_0x1ebf('0x33')];_0x301681[_0x1ebf('0x3c')]=qs[_0x1ebf('0x3d')](_0xe7d108['query'][_0x1ebf('0x3d')]);_0x301681[_0x1ebf('0x3e')]=qs[_0x1ebf('0x3f')](_[_0x1ebf('0x58')](_0xe7d108[_0x1ebf('0x36')],_0x4f92a4['filters']));if(_0xe7d108[_0x1ebf('0x36')][_0x1ebf('0x40')]){_0x301681[_0x1ebf('0x3e')]=_[_0x1ebf('0x41')](_0x301681[_0x1ebf('0x3e')],{'$or':_[_0x1ebf('0x34')](_0x301681[_0x1ebf('0x39')],function(_0x116a11){var _0x35e459={};_0x35e459[_0x116a11]={'$like':'%'+_0xe7d108[_0x1ebf('0x36')]['filter']+'%'};return _0x35e459;})});}_0x301681=_[_0x1ebf('0x41')]({},_0x301681,_0xe7d108[_0x1ebf('0x43')]);return _0x3d3485[_0x1ebf('0x8a')](_0x301681);}})[_0x1ebf('0x25')](function(_0x5617d1){if(_0x5617d1){_0x280e03=_0x5617d1[_0x1ebf('0x3a')];if(!_0xe7d108[_0x1ebf('0x36')][_0x1ebf('0x6b')](_0x1ebf('0x3b'))){_0x301681[_0x1ebf('0x1c')]=qs[_0x1ebf('0x1c')](_0xe7d108[_0x1ebf('0x36')]['limit']);_0x301681[_0x1ebf('0x1e')]=qs['offset'](_0xe7d108[_0x1ebf('0x36')][_0x1ebf('0x1e')]);}return _0x3d3485[_0x1ebf('0x8a')](_0x301681);}})['then'](function(_0x2107fd){if(_0x2107fd){return _0x2107fd?{'count':_0x280e03,'rows':_0x2107fd}:null;}})['then'](respondWithResult(_0x2a1403,null))[_0x1ebf('0x47')](handleError(_0x2a1403,null));};
\ No newline at end of file
+var _0x0396=['download','addCustomField','sequelize','transaction','TEXT','text','Sequelize','number','INTEGER','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','omit','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','get','Lists','destroy','end','error','stack','name','send','index','CmList','rawAttributes','fieldName','key','model','map','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','catch','show','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','ListId','Disposition','getDispositions','findOne','hasOwnProperty','findAll','removeDispositions','addContacts','tags','isArray','each','CmContact','ids','success','push','dataValues','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Content-type','text/csv'];(function(_0x35523f,_0x2b2883){var _0x50a776=function(_0x1f3c38){while(--_0x1f3c38){_0x35523f['push'](_0x35523f['shift']());}};_0x50a776(++_0x2b2883);}(_0x0396,0x145));var _0x6039=function(_0x31cb5f,_0x2df766){_0x31cb5f=_0x31cb5f-0x0;var _0x586042=_0x0396[_0x31cb5f];return _0x586042;};'use strict';var emlformat=require(_0x6039('0x0'));var rimraf=require(_0x6039('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6039('0x2'));var rp=require(_0x6039('0x3'));var moment=require(_0x6039('0x4'));var BPromise=require(_0x6039('0x5'));var Mustache=require(_0x6039('0x6'));var util=require('util');var path=require(_0x6039('0x7'));var sox=require('sox');var csv=require(_0x6039('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6039('0x9'));var _=require(_0x6039('0xa'));var squel=require(_0x6039('0xb'));var crypto=require(_0x6039('0xc'));var jsforce=require(_0x6039('0xd'));var deskjs=require(_0x6039('0xe'));var toCsv=require(_0x6039('0x8'));var querystring=require(_0x6039('0xf'));var Papa=require(_0x6039('0x10'));var Redis=require(_0x6039('0x11'));var authService=require(_0x6039('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6039('0x13'));var logger=require(_0x6039('0x14'))('api');var utils=require(_0x6039('0x15'));var config=require(_0x6039('0x16'));var licenseUtil=require(_0x6039('0x17'));var db=require(_0x6039('0x18'))['db'];config[_0x6039('0x19')]=_[_0x6039('0x1a')](config[_0x6039('0x19')],{'host':_0x6039('0x1b'),'port':0x18eb});var socket=require(_0x6039('0x1c'))(new Redis(config[_0x6039('0x19')]));require(_0x6039('0x1d'))[_0x6039('0x1e')](socket);function respondWithStatusCode(_0x37b100,_0x1e184c){_0x1e184c=_0x1e184c||0xcc;return function(_0x518ff8){if(_0x518ff8){return _0x37b100[_0x6039('0x1f')](_0x1e184c);}return _0x37b100['status'](_0x1e184c)['end']();};}function respondWithResult(_0x17546a,_0x211d7f){_0x211d7f=_0x211d7f||0xc8;return function(_0x172c24){if(_0x172c24){return _0x17546a[_0x6039('0x20')](_0x211d7f)[_0x6039('0x21')](_0x172c24);}};}function respondWithFilteredResult(_0x1260ee,_0x195f33){return function(_0x1b6381){if(_0x1b6381){var _0x4298e1=typeof _0x195f33[_0x6039('0x22')]===_0x6039('0x23')&&typeof _0x195f33['limit']===_0x6039('0x23');var _0x55e82c=_0x1b6381[_0x6039('0x24')];var _0x244c6a=_0x4298e1?0x0:_0x195f33[_0x6039('0x22')];var _0x57adc0=_0x4298e1?_0x1b6381['count']:_0x195f33[_0x6039('0x22')]+_0x195f33[_0x6039('0x25')];var _0x181937;if(_0x57adc0>=_0x55e82c){_0x57adc0=_0x55e82c;_0x181937=0xc8;}else{_0x181937=0xce;}_0x1260ee[_0x6039('0x20')](_0x181937);return _0x1260ee[_0x6039('0x26')](_0x6039('0x27'),_0x244c6a+'-'+_0x57adc0+'/'+_0x55e82c)['json'](_0x1b6381);}return null;};}function patchUpdates(_0x44d3eb){return function(_0x282043){try{jsonpatch[_0x6039('0x28')](_0x282043,_0x44d3eb,!![]);}catch(_0x231f4c){return BPromise[_0x6039('0x29')](_0x231f4c);}return _0x282043[_0x6039('0x2a')]();};}function saveUpdates(_0x2c71e8,_0x3578fd){return function(_0x10b3ea){if(_0x10b3ea){return _0x10b3ea[_0x6039('0x2b')](_0x2c71e8)[_0x6039('0x2c')](function(_0x9968cc){return _0x9968cc;});}return null;};}function removeEntity(_0x291c6e,_0x52418d){return function(_0x2356eb){if(_0x2356eb){return _0x2356eb['destroy']()[_0x6039('0x2c')](function(){var _0x26a745=_0x2356eb[_0x6039('0x2d')]({'plain':!![]});var _0x27ee4c=_0x6039('0x2e');return db['UserProfileResource'][_0x6039('0x2f')]({'where':{'type':_0x27ee4c,'resourceId':_0x26a745['id']}})[_0x6039('0x2c')](function(){return _0x2356eb;});})[_0x6039('0x2c')](function(){_0x291c6e[_0x6039('0x20')](0xcc)[_0x6039('0x30')]();});}};}function handleEntityNotFound(_0x127c59,_0x3cbd8b){return function(_0x2b4851){if(!_0x2b4851){_0x127c59[_0x6039('0x1f')](0x194);}return _0x2b4851;};}function handleError(_0x193a95,_0x378433){_0x378433=_0x378433||0x1f4;return function(_0x5a5799){logger[_0x6039('0x31')](_0x5a5799[_0x6039('0x32')]);if(_0x5a5799['name']){delete _0x5a5799[_0x6039('0x33')];}_0x193a95[_0x6039('0x20')](_0x378433)[_0x6039('0x34')](_0x5a5799);};}exports[_0x6039('0x35')]=function(_0x20e4e7,_0x197a3c){var _0x9cf93b={},_0x3077ed={},_0x5c62a2={'count':0x0,'rows':[]};var _0x1d21e5=_['map'](db[_0x6039('0x36')][_0x6039('0x37')],function(_0x1f3f05){return{'name':_0x1f3f05[_0x6039('0x38')],'type':_0x1f3f05['type'][_0x6039('0x39')]};});_0x3077ed[_0x6039('0x3a')]=_[_0x6039('0x3b')](_0x1d21e5,_0x6039('0x33'));_0x3077ed[_0x6039('0x3c')]=_[_0x6039('0x3d')](_0x20e4e7[_0x6039('0x3c')]);_0x3077ed['filters']=_['intersection'](_0x3077ed[_0x6039('0x3a')],_0x3077ed[_0x6039('0x3c')]);_0x9cf93b['attributes']=_[_0x6039('0x3e')](_0x3077ed[_0x6039('0x3a')],qs['fields'](_0x20e4e7[_0x6039('0x3c')][_0x6039('0x3f')]));_0x9cf93b['attributes']=_0x9cf93b[_0x6039('0x40')][_0x6039('0x41')]?_0x9cf93b['attributes']:_0x3077ed['model'];if(!_0x20e4e7[_0x6039('0x3c')]['hasOwnProperty'](_0x6039('0x42'))){_0x9cf93b[_0x6039('0x25')]=qs[_0x6039('0x25')](_0x20e4e7['query'][_0x6039('0x25')]);_0x9cf93b[_0x6039('0x22')]=qs[_0x6039('0x22')](_0x20e4e7['query'][_0x6039('0x22')]);}_0x9cf93b[_0x6039('0x43')]=qs['sort'](_0x20e4e7[_0x6039('0x3c')][_0x6039('0x44')]);_0x9cf93b[_0x6039('0x45')]=qs[_0x6039('0x46')](_[_0x6039('0x47')](_0x20e4e7[_0x6039('0x3c')],_0x3077ed['filters']),_0x1d21e5);if(_0x20e4e7[_0x6039('0x3c')][_0x6039('0x48')]){_0x9cf93b[_0x6039('0x45')]=_[_0x6039('0x49')](_0x9cf93b[_0x6039('0x45')],{'$or':_['map'](_0x1d21e5,function(_0x5dd804){if(_0x5dd804[_0x6039('0x4a')]!==_0x6039('0x4b')){var _0x26d0ab={};_0x26d0ab[_0x5dd804['name']]={'$like':'%'+_0x20e4e7[_0x6039('0x3c')][_0x6039('0x48')]+'%'};return _0x26d0ab;}})});}_0x9cf93b=_[_0x6039('0x49')]({},_0x9cf93b,_0x20e4e7[_0x6039('0x4c')]);var _0x5a28b7={'where':_0x9cf93b[_0x6039('0x45')]};return db[_0x6039('0x36')][_0x6039('0x24')](_0x5a28b7)[_0x6039('0x2c')](function(_0x55c959){_0x5c62a2[_0x6039('0x24')]=_0x55c959;if(_0x20e4e7[_0x6039('0x3c')][_0x6039('0x4d')]){_0x9cf93b['include']=[{'all':!![]}];}return db['CmList']['findAll'](_0x9cf93b);})[_0x6039('0x2c')](function(_0x267449){_0x5c62a2[_0x6039('0x4e')]=_0x267449;return _0x5c62a2;})['then'](respondWithFilteredResult(_0x197a3c,_0x9cf93b))[_0x6039('0x4f')](handleError(_0x197a3c,null));};exports[_0x6039('0x50')]=function(_0xb8d8a6,_0xe7a4b7){var _0x209ee1={'raw':![],'where':{'id':_0xb8d8a6['params']['id']}},_0x3b3b15={};_0x3b3b15[_0x6039('0x3a')]=_['keys'](db[_0x6039('0x36')][_0x6039('0x37')]);_0x3b3b15[_0x6039('0x3c')]=_[_0x6039('0x3d')](_0xb8d8a6['query']);_0x3b3b15['filters']=_[_0x6039('0x3e')](_0x3b3b15['model'],_0x3b3b15['query']);_0x209ee1[_0x6039('0x40')]=_[_0x6039('0x3e')](_0x3b3b15[_0x6039('0x3a')],qs['fields'](_0xb8d8a6[_0x6039('0x3c')][_0x6039('0x3f')]));_0x209ee1[_0x6039('0x40')]=_0x209ee1[_0x6039('0x40')][_0x6039('0x41')]?_0x209ee1[_0x6039('0x40')]:_0x3b3b15[_0x6039('0x3a')];if(_0xb8d8a6[_0x6039('0x3c')][_0x6039('0x4d')]){_0x209ee1[_0x6039('0x51')]=[{'all':!![]}];}_0x209ee1=_[_0x6039('0x49')]({},_0x209ee1,_0xb8d8a6[_0x6039('0x4c')]);return db[_0x6039('0x36')][_0x6039('0x52')](_0x209ee1)['then'](handleEntityNotFound(_0xe7a4b7,null))['then'](respondWithResult(_0xe7a4b7,null))[_0x6039('0x4f')](handleError(_0xe7a4b7,null));};exports[_0x6039('0x53')]=function(_0xb679f6,_0x4eead1){return db[_0x6039('0x36')][_0x6039('0x53')](_0xb679f6[_0x6039('0x54')],{})[_0x6039('0x2c')](function(_0x5c61aa){var _0x26a09a=_0xb679f6[_0x6039('0x55')]['get']({'plain':!![]});if(!_0x26a09a)throw new Error(_0x6039('0x56'));if(_0x26a09a[_0x6039('0x57')]==='user'){var _0x56f6bd=_0x5c61aa['get']({'plain':!![]});var _0xa3c186=_0x6039('0x2e');return db['UserProfileSection'][_0x6039('0x52')]({'where':{'name':_0xa3c186,'userProfileId':_0x26a09a['userProfileId']},'raw':!![]})[_0x6039('0x2c')](function(_0xd22ef9){if(_0xd22ef9&&_0xd22ef9['autoAssociation']===0x0){return db[_0x6039('0x58')]['create']({'name':_0x56f6bd[_0x6039('0x33')],'resourceId':_0x56f6bd['id'],'type':_0xd22ef9[_0x6039('0x33')],'sectionId':_0xd22ef9['id']},{})['then'](function(){return _0x5c61aa;});}else{return _0x5c61aa;}})['catch'](function(_0x3aca9a){logger[_0x6039('0x31')](_0x6039('0x59'),_0x3aca9a);throw _0x3aca9a;});}return _0x5c61aa;})[_0x6039('0x2c')](respondWithResult(_0x4eead1,0xc9))[_0x6039('0x4f')](handleError(_0x4eead1,null));};exports[_0x6039('0x2b')]=function(_0x264479,_0x2e597d){if(_0x264479[_0x6039('0x54')]['id']){delete _0x264479[_0x6039('0x54')]['id'];}return db['CmList'][_0x6039('0x52')]({'where':{'id':_0x264479[_0x6039('0x5a')]['id']}})[_0x6039('0x2c')](handleEntityNotFound(_0x2e597d,null))[_0x6039('0x2c')](saveUpdates(_0x264479['body'],null))[_0x6039('0x2c')](respondWithResult(_0x2e597d,null))[_0x6039('0x4f')](handleError(_0x2e597d,null));};exports['destroy']=function(_0x3ee49f,_0x2e46b9){return db[_0x6039('0x36')]['find']({'where':{'id':_0x3ee49f[_0x6039('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2e46b9,null))[_0x6039('0x2c')](removeEntity(_0x2e46b9,null))[_0x6039('0x4f')](handleError(_0x2e46b9,null));};exports[_0x6039('0x5b')]=function(_0x1e5095,_0x11f1ca){return db['CmList'][_0x6039('0x5b')]()[_0x6039('0x2c')](respondWithResult(_0x11f1ca,null))[_0x6039('0x4f')](handleError(_0x11f1ca,null));};exports[_0x6039('0x5c')]=function(_0x50af9d,_0x41047f,_0x4127fc){if(_0x50af9d[_0x6039('0x54')]['id']){delete _0x50af9d[_0x6039('0x54')]['id'];}return db[_0x6039('0x36')][_0x6039('0x52')]({'where':{'id':_0x50af9d[_0x6039('0x5a')]['id']}})[_0x6039('0x2c')](handleEntityNotFound(_0x41047f,null))[_0x6039('0x2c')](function(_0x17e3b0){if(_0x17e3b0){_0x50af9d['body'][_0x6039('0x5d')]=_0x17e3b0['id'];return db[_0x6039('0x5e')][_0x6039('0x53')](_0x50af9d[_0x6039('0x54')]);}})[_0x6039('0x2c')](respondWithResult(_0x41047f,null))[_0x6039('0x4f')](handleError(_0x41047f,null));};exports[_0x6039('0x5f')]=function(_0x5e28d1,_0x390dee,_0x1c1b62){var _0x5e01c7={'raw':![],'where':{}};var _0x10d2c6={};var _0xf19751={'count':0x0,'rows':[]};return db[_0x6039('0x36')][_0x6039('0x60')]({'where':{'id':_0x5e28d1[_0x6039('0x5a')]['id']}})['then'](handleEntityNotFound(_0x390dee,null))[_0x6039('0x2c')](function(_0x2b79f0){if(_0x2b79f0){_0x10d2c6[_0x6039('0x3a')]=_[_0x6039('0x3d')](db[_0x6039('0x5e')]['rawAttributes']);_0x10d2c6[_0x6039('0x3c')]=_[_0x6039('0x3d')](_0x5e28d1['query']);_0x10d2c6[_0x6039('0x46')]=_[_0x6039('0x3e')](_0x10d2c6['model'],_0x10d2c6['query']);_0x5e01c7['attributes']=_[_0x6039('0x3e')](_0x10d2c6[_0x6039('0x3a')],qs['fields'](_0x5e28d1['query'][_0x6039('0x3f')]));_0x5e01c7[_0x6039('0x40')]=_0x5e01c7[_0x6039('0x40')][_0x6039('0x41')]?_0x5e01c7[_0x6039('0x40')]:_0x10d2c6[_0x6039('0x3a')];if(!_0x5e28d1[_0x6039('0x3c')][_0x6039('0x61')](_0x6039('0x42'))){_0x5e01c7[_0x6039('0x25')]=qs[_0x6039('0x25')](_0x5e28d1[_0x6039('0x3c')][_0x6039('0x25')]);_0x5e01c7['offset']=qs['offset'](_0x5e28d1[_0x6039('0x3c')][_0x6039('0x22')]);}_0x5e01c7[_0x6039('0x43')]=qs[_0x6039('0x44')](_0x5e28d1[_0x6039('0x3c')][_0x6039('0x44')]);_0x5e01c7[_0x6039('0x45')]=qs[_0x6039('0x46')](_[_0x6039('0x47')](_0x5e28d1[_0x6039('0x3c')],_0x10d2c6[_0x6039('0x46')]));_0x5e01c7[_0x6039('0x45')]['ListId']=_0x2b79f0['id'];if(_0x5e28d1['query'][_0x6039('0x48')]){_0x5e01c7[_0x6039('0x45')]=_['merge'](_0x5e01c7['where'],{'$or':_[_0x6039('0x3b')](_0x5e01c7['attributes'],function(_0x11447b){var _0x19e27d={};_0x19e27d[_0x11447b]={'$like':'%'+_0x5e28d1[_0x6039('0x3c')][_0x6039('0x48')]+'%'};return _0x19e27d;})});}_0x5e01c7=_[_0x6039('0x49')]({},_0x5e01c7,_0x5e28d1[_0x6039('0x4c')]);return db['Disposition'][_0x6039('0x24')]({'where':_0x5e01c7[_0x6039('0x45')]})[_0x6039('0x2c')](function(_0x4a2b7d){_0xf19751[_0x6039('0x24')]=_0x4a2b7d;if(_0x5e28d1[_0x6039('0x3c')]['includeAll']){_0x5e01c7[_0x6039('0x51')]=[{'all':!![]}];}return db['Disposition'][_0x6039('0x62')](_0x5e01c7);})[_0x6039('0x2c')](function(_0x243981){_0xf19751[_0x6039('0x4e')]=_0x243981;return _0xf19751;});}})[_0x6039('0x2c')](respondWithFilteredResult(_0x390dee,_0x5e01c7))['catch'](handleError(_0x390dee,null));};exports[_0x6039('0x63')]=function(_0x1c3a6c,_0x377821,_0x325c65){return db[_0x6039('0x36')][_0x6039('0x52')]({'where':{'id':_0x1c3a6c[_0x6039('0x5a')]['id']}})[_0x6039('0x2c')](handleEntityNotFound(_0x377821,null))[_0x6039('0x2c')](function(_0x2afbff){if(_0x2afbff){return _0x2afbff[_0x6039('0x63')](_0x1c3a6c[_0x6039('0x3c')]['ids']);}})[_0x6039('0x2c')](respondWithStatusCode(_0x377821,null))[_0x6039('0x4f')](handleError(_0x377821,null));};exports[_0x6039('0x64')]=function(_0x3896e6,_0x401f28,_0x8428d7){return db['CmList']['find']({'where':{'id':_0x3896e6[_0x6039('0x5a')]['id']}})[_0x6039('0x2c')](handleEntityNotFound(_0x401f28,null))[_0x6039('0x2c')](function(_0x516241){if(_0x516241){var _0x457670=[];var _0x54b932={'success':[],'errors':[]};return db['CmContact'][_0x6039('0x5b')]()[_0x6039('0x2c')](function(_0x1e6e9a){if(_0x3896e6[_0x6039('0x54')][_0x6039('0x65')]&&_[_0x6039('0x66')](_0x3896e6[_0x6039('0x54')][_0x6039('0x65')])){if(_0x3896e6[_0x6039('0x54')][_0x6039('0x65')][_0x6039('0x41')]){_0x3896e6[_0x6039('0x54')][_0x6039('0x65')]=_0x3896e6[_0x6039('0x54')]['tags']['join'](';')+';';}else{_0x3896e6[_0x6039('0x54')][_0x6039('0x65')]=null;}}else{_0x3896e6[_0x6039('0x54')]['tags']=null;}if(_0x3896e6['body']&&_[_0x6039('0x66')](_0x3896e6[_0x6039('0x54')])){for(var _0x3a06bc=0x0;_0x3a06bc<_0x3896e6[_0x6039('0x54')][_0x6039('0x41')];_0x3a06bc+=0x1){_0x3896e6[_0x6039('0x54')][_0x3a06bc][_0x6039('0x5d')]=_0x3896e6[_0x6039('0x5a')]['id'];_0x457670['push'](_0x3896e6[_0x6039('0x54')][_0x3a06bc]);}return BPromise[_0x6039('0x67')](_0x457670,function(_0x59c0e5){return db[_0x6039('0x68')][_0x6039('0x53')](_['omit'](_0x59c0e5,[_0x6039('0x69'),'id'])||{},{'fields':_['keys'](_0x1e6e9a),'raw':!![]})[_0x6039('0x2c')](function(_0x46ff59){_0x54b932[_0x6039('0x6a')][_0x6039('0x6b')](_0x46ff59[_0x6039('0x6c')]);})[_0x6039('0x4f')](function(_0x42a6fc){_0x54b932['errors'][_0x6039('0x6b')]({'data':_0x59c0e5,'error':_0x42a6fc['message']});});})[_0x6039('0x2c')](function(_0x1f0456){return _0x54b932;})[_0x6039('0x4f')](function(_0x49e129){return _0x49e129;});}else{_0x401f28[_0x6039('0x20')](0x190)['json']({'message':_0x6039('0x6d')});}});}})[_0x6039('0x2c')](respondWithResult(_0x401f28,null))[_0x6039('0x4f')](handleError(_0x401f28,null));};exports[_0x6039('0x6e')]=function(_0x258fcf,_0x100695,_0x45e353){var _0x29e4f2;return db[_0x6039('0x36')][_0x6039('0x52')]({'where':{'id':_0x258fcf[_0x6039('0x5a')]['id']},'include':[{'model':db[_0x6039('0x6f')],'as':_0x6039('0x70')}]})[_0x6039('0x2c')](handleEntityNotFound(_0x100695,null))[_0x6039('0x2c')](function(_0x25e489){if(_0x25e489){_0x29e4f2=_0x25e489;return db[_0x6039('0x68')][_0x6039('0x37')];}})[_0x6039('0x2c')](function(_0x5ae43d){if(_0x5ae43d){var _0x2337ab={};var _0x27bc82={};_0x27bc82[_0x6039('0x3a')]=_[_0x6039('0x71')](_[_0x6039('0x3d')](_0x5ae43d),_[_0x6039('0x3b')](_0x29e4f2['CustomFields'],function(_0x15711a){return util[_0x6039('0x72')](_0x6039('0x73'),_0x15711a['id']);}));_0x27bc82[_0x6039('0x3c')]=_['keys'](_0x258fcf[_0x6039('0x3c')]);_0x27bc82[_0x6039('0x46')]=_[_0x6039('0x3e')](_0x27bc82[_0x6039('0x3a')],_0x27bc82[_0x6039('0x3c')]);_0x2337ab[_0x6039('0x40')]=_['intersection'](_0x27bc82[_0x6039('0x3a')],qs[_0x6039('0x3f')](_0x258fcf['query'][_0x6039('0x3f')]));_0x2337ab[_0x6039('0x40')]=_0x2337ab['attributes'][_0x6039('0x41')]?_0x2337ab['attributes']:_0x27bc82[_0x6039('0x3a')];if(!_0x258fcf['query'][_0x6039('0x61')](_0x6039('0x42'))){_0x2337ab[_0x6039('0x25')]=qs[_0x6039('0x25')](_0x258fcf[_0x6039('0x3c')][_0x6039('0x25')]);_0x2337ab[_0x6039('0x22')]=qs[_0x6039('0x22')](_0x258fcf[_0x6039('0x3c')][_0x6039('0x22')]);}_0x2337ab[_0x6039('0x43')]=qs['sort'](_0x258fcf[_0x6039('0x3c')][_0x6039('0x44')]);_0x2337ab[_0x6039('0x45')]=qs[_0x6039('0x46')](_[_0x6039('0x47')](_0x258fcf[_0x6039('0x3c')],_0x27bc82[_0x6039('0x46')]));_0x2337ab['raw']=!![];if(_0x258fcf['query']['filter']){_0x2337ab[_0x6039('0x45')]=_['merge'](_0x2337ab[_0x6039('0x45')],{'$or':_[_0x6039('0x3b')](_0x2337ab[_0x6039('0x40')],function(_0x111a7b){var _0x857f5c={};_0x857f5c[_0x111a7b]={'$like':'%'+_0x258fcf[_0x6039('0x3c')][_0x6039('0x48')]+'%'};return _0x857f5c;})});}_0x2337ab=_['merge']({},_0x2337ab,_0x258fcf[_0x6039('0x4c')]);return _0x29e4f2[_0x6039('0x6e')](_0x2337ab);}})['then'](respondWithResult(_0x100695,null))[_0x6039('0x4f')](handleError(_0x100695,null));};exports['getContactsCsv']=function(_0x55b25f,_0x191267,_0x597006){var _0x46266a;return db[_0x6039('0x36')]['find']({'where':{'id':_0x55b25f[_0x6039('0x5a')]['id']},'include':[{'model':db[_0x6039('0x6f')],'as':_0x6039('0x70')}]})['then'](handleEntityNotFound(_0x191267,null))['then'](function(_0x195c7e){if(_0x195c7e){_0x46266a=_0x195c7e;return db[_0x6039('0x68')][_0x6039('0x37')];}})[_0x6039('0x2c')](function(_0x4fdb2e){if(_0x4fdb2e){var _0x8e7ca3={};var _0x3ea685={};_0x3ea685['model']=_[_0x6039('0x71')](_['keys'](_0x4fdb2e),_['map'](_0x46266a[_0x6039('0x70')],function(_0x51c96d){return util[_0x6039('0x72')]('cf_%d',_0x51c96d['id']);}));_0x3ea685[_0x6039('0x3c')]=_[_0x6039('0x3d')](_0x55b25f[_0x6039('0x3c')]);_0x3ea685[_0x6039('0x46')]=_[_0x6039('0x3e')](_0x3ea685['model'],_0x3ea685['query']);_0x8e7ca3[_0x6039('0x40')]=_[_0x6039('0x3e')](_0x3ea685[_0x6039('0x3a')],qs['fields'](_0x55b25f[_0x6039('0x3c')]['fields']));_0x8e7ca3['attributes']=_0x8e7ca3[_0x6039('0x40')]['length']?_0x8e7ca3['attributes']:_0x3ea685[_0x6039('0x3a')];if(!_0x55b25f[_0x6039('0x3c')][_0x6039('0x61')]('nolimit')){_0x8e7ca3[_0x6039('0x25')]=qs[_0x6039('0x25')](_0x55b25f[_0x6039('0x3c')][_0x6039('0x25')]);_0x8e7ca3[_0x6039('0x22')]=qs[_0x6039('0x22')](_0x55b25f[_0x6039('0x3c')][_0x6039('0x22')]);}_0x8e7ca3['order']=qs[_0x6039('0x44')](_0x55b25f[_0x6039('0x3c')][_0x6039('0x44')]);_0x8e7ca3['where']=qs[_0x6039('0x46')](_['pick'](_0x55b25f[_0x6039('0x3c')],_0x3ea685[_0x6039('0x46')]));_0x8e7ca3['raw']=!![];if(_0x55b25f[_0x6039('0x3c')][_0x6039('0x48')]){_0x8e7ca3['where']=_[_0x6039('0x49')](_0x8e7ca3['where'],{'$or':_[_0x6039('0x3b')](_0x8e7ca3[_0x6039('0x40')],function(_0x14dfe1){var _0x567546={};_0x567546[_0x14dfe1]={'$like':'%'+_0x55b25f[_0x6039('0x3c')][_0x6039('0x48')]+'%'};return _0x567546;})});}_0x8e7ca3=_[_0x6039('0x49')]({},_0x8e7ca3,_0x55b25f[_0x6039('0x4c')]);return _0x46266a[_0x6039('0x6e')](_0x8e7ca3);}})[_0x6039('0x2c')](function(_0x5c05d1){if(!_[_0x6039('0x74')](_0x5c05d1)){var _0x178108=toCsv(_0x5c05d1);var _0x714ac4=Date[_0x6039('0x75')]();fs[_0x6039('0x76')](util['format'](_0x6039('0x77'),_0x46266a['id'],_0x714ac4),_0x178108);_0x191267[_0x6039('0x78')](_0x6039('0x79'),_0x6039('0x7a')+util[_0x6039('0x72')]('list_%d_%s.csv',_0x46266a['id'],_0x714ac4));_0x191267[_0x6039('0x78')](_0x6039('0x7b'),_0x6039('0x7c'));return _0x191267[_0x6039('0x7d')](util[_0x6039('0x72')](_0x6039('0x77'),_0x46266a['id'],_0x714ac4));}else{return _0x191267[_0x6039('0x1f')](0xcc);}})['catch'](handleError(_0x191267,null));};exports[_0x6039('0x7e')]=function(_0xc6ab79,_0x4cc1b7,_0x58d9e9){var _0x551e95;delete _0xc6ab79['body']['id'];return db[_0x6039('0x36')][_0x6039('0x60')]({'where':{'id':_0xc6ab79[_0x6039('0x5a')]['id']}})[_0x6039('0x2c')](handleEntityNotFound(_0x4cc1b7,null))['then'](function(_0xd54d5c){if(_0xd54d5c){return db[_0x6039('0x7f')][_0x6039('0x80')](function(_0x49a539){return db['CmCustomField'][_0x6039('0x53')](_0xc6ab79['body'],{'transaction':_0x49a539})[_0x6039('0x2c')](function(_0x53dda2){_0x551e95=_0x53dda2;return _0xd54d5c['addCustomFields'](_0x53dda2,{'transaction':_0x49a539});})[_0x6039('0x2c')](function(){var _0x2bd890={'type':db['Sequelize'][_0x6039('0x81')],'transaction':_0x49a539};switch(_0xc6ab79[_0x6039('0x54')][_0x6039('0x4a')]){case _0x6039('0x82'):_0x2bd890[_0x6039('0x4a')]=db[_0x6039('0x83')][_0x6039('0x81')];break;case _0x6039('0x84'):_0x2bd890[_0x6039('0x4a')]=db[_0x6039('0x83')][_0x6039('0x85')];break;case _0x6039('0x86'):_0x2bd890['type']=db[_0x6039('0x83')][_0x6039('0x87')];_0x2bd890['defaultValue']=![];break;default:}return db['sequelize'][_0x6039('0x88')][_0x6039('0x89')](_0x6039('0x8a'),util['format'](_0x6039('0x8b'),_0x551e95['id']),_0x2bd890);})[_0x6039('0x2c')](function(){return _0x551e95;});});}})[_0x6039('0x2c')](respondWithResult(_0x4cc1b7,null))[_0x6039('0x4f')](handleError(_0x4cc1b7,null));};exports[_0x6039('0x8c')]=function(_0x61247c,_0x10984d,_0x233d49){var _0x3b587f={};var _0x5734d2={};var _0x77177c;var _0x3b28a8;return db[_0x6039('0x36')][_0x6039('0x60')]({'where':{'id':_0x61247c[_0x6039('0x5a')]['id']}})[_0x6039('0x2c')](handleEntityNotFound(_0x10984d,null))['then'](function(_0x57353d){if(_0x57353d){_0x77177c=_0x57353d;_0x5734d2['model']=_[_0x6039('0x3d')](db['CmCustomField'][_0x6039('0x37')]);_0x5734d2['query']=_[_0x6039('0x3d')](_0x61247c['query']);_0x5734d2[_0x6039('0x46')]=_[_0x6039('0x3e')](_0x5734d2[_0x6039('0x3a')],_0x5734d2[_0x6039('0x3c')]);_0x3b587f['attributes']=_[_0x6039('0x3e')](_0x5734d2[_0x6039('0x3a')],qs[_0x6039('0x3f')](_0x61247c[_0x6039('0x3c')][_0x6039('0x3f')]));_0x3b587f['attributes']=_0x3b587f['attributes'][_0x6039('0x41')]?_0x3b587f['attributes']:_0x5734d2[_0x6039('0x3a')];_0x3b587f[_0x6039('0x43')]=qs[_0x6039('0x44')](_0x61247c[_0x6039('0x3c')]['sort']);_0x3b587f[_0x6039('0x45')]=qs['filters'](_[_0x6039('0x47')](_0x61247c['query'],_0x5734d2['filters']));_0x3b587f['where']=_[_0x6039('0x49')](_0x3b587f[_0x6039('0x45')],{'$or':[{'ListId':_0x57353d['id']},{'ListId':null}]});if(_0x61247c[_0x6039('0x3c')][_0x6039('0x48')]){_0x3b587f['where']=_[_0x6039('0x49')](_0x3b587f[_0x6039('0x45')],{'$or':_[_0x6039('0x3b')](_0x3b587f[_0x6039('0x40')],function(_0x327a9c){var _0x56578e={};_0x56578e[_0x327a9c]={'$like':'%'+_0x61247c[_0x6039('0x3c')][_0x6039('0x48')]+'%'};return _0x56578e;})});}_0x3b587f=_[_0x6039('0x49')]({},_0x3b587f,_0x61247c['options']);return db[_0x6039('0x6f')][_0x6039('0x8d')](_0x3b587f);}})[_0x6039('0x2c')](respondWithResult(_0x10984d,null))[_0x6039('0x4f')](handleError(_0x10984d,null));};exports[_0x6039('0x8e')]=function(_0x44b074,_0x5f1b58,_0x2e8cd9){return db[_0x6039('0x36')][_0x6039('0x52')]({'where':{'id':_0x44b074[_0x6039('0x5a')]['id']}})[_0x6039('0x2c')](handleEntityNotFound(_0x5f1b58,null))[_0x6039('0x2c')](function(_0x482614){if(_0x482614){return _0x482614[_0x6039('0x8e')](_0x44b074['body'][_0x6039('0x69')],_[_0x6039('0x8f')](_0x44b074['body'],['ids','id'])||{})['spread'](function(_0x2bed62){for(var _0x138923=0x0;_0x138923<_0x44b074['body'][_0x6039('0x69')][_0x6039('0x41')];_0x138923+=0x1){socket[_0x6039('0x90')](_0x6039('0x91'),{'UserId':Number(_0x44b074[_0x6039('0x54')]['ids'][_0x138923]),'CmListId':Number(_0x44b074[_0x6039('0x5a')]['id'])});}return _0x2bed62;});}})[_0x6039('0x2c')](respondWithResult(_0x5f1b58,null))[_0x6039('0x4f')](handleError(_0x5f1b58,null));};exports[_0x6039('0x92')]=function(_0x4bf648,_0x47a97e,_0xae70bb){return db['CmList'][_0x6039('0x52')]({'where':{'id':_0x4bf648[_0x6039('0x5a')]['id']}})[_0x6039('0x2c')](handleEntityNotFound(_0x47a97e,null))[_0x6039('0x2c')](function(_0x5aa2ad){if(_0x5aa2ad){return _0x5aa2ad['removeAgents'](_0x4bf648['query']['ids'])['then'](function(){if(_[_0x6039('0x66')](_0x4bf648[_0x6039('0x3c')][_0x6039('0x69')])){for(var _0x5b7c09=0x0;_0x5b7c09<_0x4bf648['query'][_0x6039('0x69')]['length'];_0x5b7c09+=0x1){socket[_0x6039('0x90')](_0x6039('0x93'),{'UserId':Number(_0x4bf648[_0x6039('0x3c')][_0x6039('0x69')][_0x5b7c09]),'CmListId':Number(_0x4bf648[_0x6039('0x5a')]['id'])});}}else{socket[_0x6039('0x90')](_0x6039('0x93'),{'UserId':Number(_0x4bf648[_0x6039('0x3c')][_0x6039('0x69')]),'CmListId':Number(_0x4bf648[_0x6039('0x5a')]['id'])});}});}})[_0x6039('0x2c')](respondWithStatusCode(_0x47a97e,null))[_0x6039('0x4f')](handleError(_0x47a97e,null));};exports[_0x6039('0x94')]=function(_0xcde8b8,_0x6d8354,_0x50af5c){var _0x207bd4={};var _0x356be6={};var _0x27a6e6;var _0x151d78;return db[_0x6039('0x36')][_0x6039('0x60')]({'where':{'id':_0xcde8b8[_0x6039('0x5a')]['id']}})['then'](handleEntityNotFound(_0x6d8354,null))[_0x6039('0x2c')](function(_0x2ec2a6){if(_0x2ec2a6){_0x27a6e6=_0x2ec2a6;_0x356be6[_0x6039('0x3a')]=_[_0x6039('0x3d')](db[_0x6039('0x95')][_0x6039('0x37')]);_0x356be6[_0x6039('0x3c')]=_[_0x6039('0x3d')](_0xcde8b8[_0x6039('0x3c')]);_0x356be6[_0x6039('0x46')]=_['intersection'](_0x356be6['model'],_0x356be6[_0x6039('0x3c')]);_0x207bd4[_0x6039('0x40')]=_[_0x6039('0x3e')](_0x356be6[_0x6039('0x3a')],qs['fields'](_0xcde8b8[_0x6039('0x3c')][_0x6039('0x3f')]));_0x207bd4['attributes']=_0x207bd4[_0x6039('0x40')]['length']?_0x207bd4['attributes']:_0x356be6[_0x6039('0x3a')];_0x207bd4[_0x6039('0x43')]=qs[_0x6039('0x44')](_0xcde8b8[_0x6039('0x3c')][_0x6039('0x44')]);_0x207bd4[_0x6039('0x45')]=qs[_0x6039('0x46')](_[_0x6039('0x47')](_0xcde8b8[_0x6039('0x3c')],_0x356be6[_0x6039('0x46')]));if(_0xcde8b8[_0x6039('0x3c')][_0x6039('0x48')]){_0x207bd4['where']=_[_0x6039('0x49')](_0x207bd4['where'],{'$or':_[_0x6039('0x3b')](_0x207bd4['attributes'],function(_0x2990c3){var _0xa80057={};_0xa80057[_0x2990c3]={'$like':'%'+_0xcde8b8[_0x6039('0x3c')][_0x6039('0x48')]+'%'};return _0xa80057;})});}_0x207bd4=_[_0x6039('0x49')]({},_0x207bd4,_0xcde8b8[_0x6039('0x4c')]);return _0x27a6e6[_0x6039('0x94')](_0x207bd4);}})[_0x6039('0x2c')](function(_0x1fe312){if(_0x1fe312){_0x151d78=_0x1fe312[_0x6039('0x41')];if(!_0xcde8b8[_0x6039('0x3c')][_0x6039('0x61')]('nolimit')){_0x207bd4['limit']=qs[_0x6039('0x25')](_0xcde8b8['query'][_0x6039('0x25')]);_0x207bd4[_0x6039('0x22')]=qs['offset'](_0xcde8b8[_0x6039('0x3c')]['offset']);}return _0x27a6e6[_0x6039('0x94')](_0x207bd4);}})['then'](function(_0x3dc9ce){if(_0x3dc9ce){return _0x3dc9ce?{'count':_0x151d78,'rows':_0x3dc9ce}:null;}})[_0x6039('0x2c')](respondWithResult(_0x6d8354,null))[_0x6039('0x4f')](handleError(_0x6d8354,null));};
\ No newline at end of file
index de8691d..b0a777a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['hasOwnProperty','hook','exports','events','../../mysqldb','save','update','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe14b,0x93));var _0xbe14=function(_0x9a1155,_0x1d4fce){_0x9a1155=_0x9a1155-0x0;var _0x3da8fa=_0xe14b[_0x9a1155];return _0x3da8fa;};'use strict';var EventEmitter=require(_0xbe14('0x0'));var CmList=require(_0xbe14('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbe14('0x2'),'afterUpdate':_0xbe14('0x3'),'afterDestroy':'remove'};function emitEvent(_0x7d3665){return function(_0x5ce8fb,_0x496c04,_0x1833e3){CmListEvents[_0xbe14('0x4')](_0x7d3665+':'+_0x5ce8fb['id'],_0x5ce8fb);CmListEvents[_0xbe14('0x4')](_0x7d3665,_0x5ce8fb);_0x1833e3(null);};}for(var e in events){if(events[_0xbe14('0x5')](e)){var event=events[e];CmList[_0xbe14('0x6')](e,emitEvent(event));}}module[_0xbe14('0x7')]=CmListEvents;
\ No newline at end of file
+var _0x7217=['emit','hasOwnProperty','hook','exports','events','CmList','setMaxListeners','save','update','remove'];(function(_0x4b18ea,_0x2c070a){var _0x28ec1c=function(_0x251208){while(--_0x251208){_0x4b18ea['push'](_0x4b18ea['shift']());}};_0x28ec1c(++_0x2c070a);}(_0x7217,0x19e));var _0x7721=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x7217[_0x110c3d];return _0x226d67;};'use strict';var EventEmitter=require(_0x7721('0x0'));var CmList=require('../../mysqldb')['db'][_0x7721('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x7721('0x2')](0x0);var events={'afterCreate':_0x7721('0x3'),'afterUpdate':_0x7721('0x4'),'afterDestroy':_0x7721('0x5')};function emitEvent(_0x4d6446){return function(_0x5bf160,_0x472a96,_0xce17f9){CmListEvents[_0x7721('0x6')](_0x4d6446+':'+_0x5bf160['id'],_0x5bf160);CmListEvents[_0x7721('0x6')](_0x4d6446,_0x5bf160);_0xce17f9(null);};}for(var e in events){if(events[_0x7721('0x7')](e)){var event=events[e];CmList[_0x7721('0x8')](e,emitEvent(event));}}module[_0x7721('0x9')]=CmListEvents;
\ No newline at end of file
index db11b2b..658f753 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['bluebird','request-promise','path','rimraf','./cmList.attributes','exports','cm_lists','lodash','util','api'];(function(_0x9bd2e,_0xb29284){var _0x53a5c5=function(_0x12961b){while(--_0x12961b){_0x9bd2e['push'](_0x9bd2e['shift']());}};_0x53a5c5(++_0xb29284);}(_0x41bb,0xc5));var _0xb41b=function(_0x435713,_0x5dd205){_0x435713=_0x435713-0x0;var _0x4ed61e=_0x41bb[_0x435713];return _0x4ed61e;};'use strict';var _=require(_0xb41b('0x0'));var util=require(_0xb41b('0x1'));var logger=require('../../config/logger')(_0xb41b('0x2'));var moment=require('moment');var BPromise=require(_0xb41b('0x3'));var rp=require(_0xb41b('0x4'));var fs=require('fs');var path=require(_0xb41b('0x5'));var rimraf=require(_0xb41b('0x6'));var config=require('../../config/environment');var attributes=require(_0xb41b('0x7'));module[_0xb41b('0x8')]=function(_0x2dbaa3,_0x50bc62){return _0x2dbaa3['define']('CmList',attributes,{'tableName':_0xb41b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x878f=['path','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x878f,0x173));var _0xf878=function(_0x24f2a2,_0x41bd88){_0x24f2a2=_0x24f2a2-0x0;var _0x1bdc2a=_0x878f[_0x24f2a2];return _0x1bdc2a;};'use strict';var _=require('lodash');var util=require(_0xf878('0x0'));var logger=require(_0xf878('0x1'))(_0xf878('0x2'));var moment=require(_0xf878('0x3'));var BPromise=require(_0xf878('0x4'));var rp=require(_0xf878('0x5'));var fs=require('fs');var path=require(_0xf878('0x6'));var rimraf=require(_0xf878('0x7'));var config=require(_0xf878('0x8'));var attributes=require(_0xf878('0x9'));module[_0xf878('0xa')]=function(_0x4bc9aa,_0x4ac8d8){return _0x4bc9aa[_0xf878('0xb')](_0xf878('0xc'),attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7b850ea..c882b9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x134e=['client','http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise'];(function(_0x2a292b,_0x34d43e){var _0x31adfb=function(_0x42406d){while(--_0x42406d){_0x2a292b['push'](_0x2a292b['shift']());}};_0x31adfb(++_0x34d43e);}(_0x134e,0x69));var _0xe134=function(_0x10c781,_0x322cc2){_0x10c781=_0x10c781-0x0;var _0x53e8dd=_0x134e[_0x10c781];return _0x53e8dd;};'use strict';var _=require(_0xe134('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe134('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe134('0x2'));var db=require(_0xe134('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xe134('0x4'))(_0xe134('0x5'));var config=require('../../config/environment');var jayson=require(_0xe134('0x6'));var client=jayson[_0xe134('0x7')][_0xe134('0x8')]({'port':0x232a});config[_0xe134('0x9')]=_[_0xe134('0xa')](config[_0xe134('0x9')],{'host':_0xe134('0xb'),'port':0x18eb});var socket=require(_0xe134('0xc'))(new Redis(config[_0xe134('0x9')]));require(_0xe134('0xd'))[_0xe134('0xe')](socket);function respondWithRpcPromise(_0x55f2d9,_0x15da99,_0x26f9a8){return new BPromise(function(_0x84ebbe,_0x2a1570){return client[_0xe134('0xf')](_0x55f2d9,_0x26f9a8)[_0xe134('0x10')](function(_0x3ef833){logger[_0xe134('0x11')](_0xe134('0x12'),_0x15da99,_0xe134('0x13'));logger[_0xe134('0x14')](_0xe134('0x15'),_0x15da99,_0xe134('0x13'),JSON[_0xe134('0x16')](_0x3ef833));if(_0x3ef833[_0xe134('0x17')]){if(_0x3ef833[_0xe134('0x17')][_0xe134('0x18')]===0x1f4){logger[_0xe134('0x17')](_0xe134('0x12'),_0x15da99,_0x3ef833['error'][_0xe134('0x19')]);return _0x2a1570(_0x3ef833['error']['message']);}logger[_0xe134('0x17')]('CmList,\x20%s,\x20%s',_0x15da99,_0x3ef833[_0xe134('0x17')]['message']);return _0x84ebbe(_0x3ef833[_0xe134('0x17')][_0xe134('0x19')]);}else{logger[_0xe134('0x11')]('CmList,\x20%s,\x20%s',_0x15da99,_0xe134('0x13'));_0x84ebbe(_0x3ef833[_0xe134('0x1a')][_0xe134('0x19')]);}})[_0xe134('0x1b')](function(_0x11ef83){logger[_0xe134('0x17')](_0xe134('0x12'),_0x15da99,_0x11ef83);_0x2a1570(_0x11ef83);});});}
\ No newline at end of file
+var _0xcd75=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x3f9ca7,_0xab2947){var _0x1b46d2=function(_0x3105be){while(--_0x3105be){_0x3f9ca7['push'](_0x3f9ca7['shift']());}};_0x1b46d2(++_0xab2947);}(_0xcd75,0x13a));var _0x5cd7=function(_0x2d572c,_0x3608e2){_0x2d572c=_0x2d572c-0x0;var _0x4a463c=_0xcd75[_0x2d572c];return _0x4a463c;};'use strict';var _=require(_0x5cd7('0x0'));var util=require(_0x5cd7('0x1'));var moment=require(_0x5cd7('0x2'));var BPromise=require(_0x5cd7('0x3'));var rs=require(_0x5cd7('0x4'));var fs=require('fs');var Redis=require(_0x5cd7('0x5'));var db=require(_0x5cd7('0x6'))['db'];var utils=require(_0x5cd7('0x7'));var logger=require('../../config/logger')(_0x5cd7('0x8'));var config=require(_0x5cd7('0x9'));var jayson=require(_0x5cd7('0xa'));var client=jayson[_0x5cd7('0xb')]['http']({'port':0x232a});config[_0x5cd7('0xc')]=_[_0x5cd7('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5cd7('0xe'))(new Redis(config[_0x5cd7('0xc')]));require(_0x5cd7('0xf'))[_0x5cd7('0x10')](socket);function respondWithRpcPromise(_0x36438d,_0x1cbd9e,_0x4551f3){return new BPromise(function(_0x2d009,_0x145b79){return client[_0x5cd7('0x11')](_0x36438d,_0x4551f3)[_0x5cd7('0x12')](function(_0x2af573){logger[_0x5cd7('0x13')](_0x5cd7('0x14'),_0x1cbd9e,_0x5cd7('0x15'));logger[_0x5cd7('0x16')](_0x5cd7('0x17'),_0x1cbd9e,_0x5cd7('0x15'),JSON['stringify'](_0x2af573));if(_0x2af573[_0x5cd7('0x18')]){if(_0x2af573[_0x5cd7('0x18')][_0x5cd7('0x19')]===0x1f4){logger[_0x5cd7('0x18')](_0x5cd7('0x14'),_0x1cbd9e,_0x2af573[_0x5cd7('0x18')][_0x5cd7('0x1a')]);return _0x145b79(_0x2af573[_0x5cd7('0x18')][_0x5cd7('0x1a')]);}logger[_0x5cd7('0x18')](_0x5cd7('0x14'),_0x1cbd9e,_0x2af573[_0x5cd7('0x18')][_0x5cd7('0x1a')]);return _0x2d009(_0x2af573[_0x5cd7('0x18')][_0x5cd7('0x1a')]);}else{logger[_0x5cd7('0x13')](_0x5cd7('0x14'),_0x1cbd9e,_0x5cd7('0x15'));_0x2d009(_0x2af573[_0x5cd7('0x1b')]['message']);}})[_0x5cd7('0x1c')](function(_0x4cf0d5){logger[_0x5cd7('0x18')](_0x5cd7('0x14'),_0x1cbd9e,_0x4cf0d5);_0x145b79(_0x4cf0d5);});});}
\ No newline at end of file
index b3c7049..537986b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c94=['update','emit','removeListener','register','cmList:','./cmList.events','remove'];(function(_0x4bb0d5,_0x469210){var _0x3bbdea=function(_0xb23e74){while(--_0xb23e74){_0x4bb0d5['push'](_0x4bb0d5['shift']());}};_0x3bbdea(++_0x469210);}(_0x1c94,0x11d));var _0x41c9=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1c94[_0x321bb2];return _0x9c12ed;};'use strict';var CmListEvents=require(_0x41c9('0x0'));var events=['save',_0x41c9('0x1'),_0x41c9('0x2')];function createListener(_0x50f2d8,_0x38f744){return function(_0x4e76a2){_0x38f744[_0x41c9('0x3')](_0x50f2d8,_0x4e76a2);};}function removeListener(_0x4d3635,_0x3f7f4c){return function(){CmListEvents[_0x41c9('0x4')](_0x4d3635,_0x3f7f4c);};}exports[_0x41c9('0x5')]=function(_0x36b239){for(var _0x5a5cf6=0x0,_0x2a4769=events['length'];_0x5a5cf6<_0x2a4769;_0x5a5cf6++){var _0x5caa5d=events[_0x5a5cf6];var _0x33a367=createListener(_0x41c9('0x6')+_0x5caa5d,_0x36b239);CmListEvents['on'](_0x5caa5d,_0x33a367);}};
\ No newline at end of file
+var _0xac1e=['remove','update','removeListener','register','length','cmList:','./cmList.events','save'];(function(_0x8bc1e6,_0x537332){var _0x686ec4=function(_0x48634f){while(--_0x48634f){_0x8bc1e6['push'](_0x8bc1e6['shift']());}};_0x686ec4(++_0x537332);}(_0xac1e,0xb6));var _0xeac1=function(_0x177285,_0x18cd4b){_0x177285=_0x177285-0x0;var _0x3a734a=_0xac1e[_0x177285];return _0x3a734a;};'use strict';var CmListEvents=require(_0xeac1('0x0'));var events=[_0xeac1('0x1'),_0xeac1('0x2'),_0xeac1('0x3')];function createListener(_0x45e8dd,_0x181270){return function(_0x4cc812){_0x181270['emit'](_0x45e8dd,_0x4cc812);};}function removeListener(_0x5e0a44,_0x25bc20){return function(){CmListEvents[_0xeac1('0x4')](_0x5e0a44,_0x25bc20);};}exports[_0xeac1('0x5')]=function(_0x5515af){for(var _0x1948a0=0x0,_0x18cb2c=events[_0xeac1('0x6')];_0x1948a0<_0x18cb2c;_0x1948a0++){var _0x216580=events[_0x1948a0];var _0xcacae9=createListener(_0xeac1('0x7')+_0x216580,_0x5515af);CmListEvents['on'](_0x216580,_0xcacae9);}};
\ No newline at end of file
index 5ffb172..4160b40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38df=['/:id/dispositions','/:id/contacts','getContacts','getContactsCsv','/:id/fields','getCustomFields','/:id/users','post','create','addContacts','addCustomField','addAgents','put','update','delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./cmList.controller','isAuthenticated','index','get','/describe','describe','/:id','show'];(function(_0x5d78f0,_0x3784f9){var _0x4d1012=function(_0x23d0ba){while(--_0x23d0ba){_0x5d78f0['push'](_0x5d78f0['shift']());}};_0x4d1012(++_0x3784f9);}(_0x38df,0x144));var _0xf38d=function(_0x5eaa16,_0x28ebad){_0x5eaa16=_0x5eaa16-0x0;var _0x352569=_0x38df[_0x5eaa16];return _0x352569;};'use strict';var multer=require(_0xf38d('0x0'));var util=require(_0xf38d('0x1'));var path=require(_0xf38d('0x2'));var timeout=require(_0xf38d('0x3'));var express=require(_0xf38d('0x4'));var router=express[_0xf38d('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf38d('0x6'));var config=require(_0xf38d('0x7'));var controller=require(_0xf38d('0x8'));router['get']('/',auth[_0xf38d('0x9')](),controller[_0xf38d('0xa')]);router[_0xf38d('0xb')](_0xf38d('0xc'),auth[_0xf38d('0x9')](),controller[_0xf38d('0xd')]);router[_0xf38d('0xb')](_0xf38d('0xe'),auth[_0xf38d('0x9')](),controller[_0xf38d('0xf')]);router[_0xf38d('0xb')](_0xf38d('0x10'),auth[_0xf38d('0x9')](),controller['getDispositions']);router[_0xf38d('0xb')](_0xf38d('0x11'),auth[_0xf38d('0x9')](),controller[_0xf38d('0x12')]);router['get']('/:id/contacts/csv',auth[_0xf38d('0x9')](),controller[_0xf38d('0x13')]);router['get'](_0xf38d('0x14'),auth[_0xf38d('0x9')](),controller[_0xf38d('0x15')]);router['get'](_0xf38d('0x16'),auth['isAuthenticated'](),controller['getAgents']);router[_0xf38d('0x17')]('/',auth[_0xf38d('0x9')](),controller[_0xf38d('0x18')]);router[_0xf38d('0x17')](_0xf38d('0x10'),auth[_0xf38d('0x9')](),controller['addDisposition']);router[_0xf38d('0x17')](_0xf38d('0x11'),auth[_0xf38d('0x9')](),controller[_0xf38d('0x19')]);router[_0xf38d('0x17')](_0xf38d('0x14'),auth[_0xf38d('0x9')](),controller[_0xf38d('0x1a')]);router[_0xf38d('0x17')](_0xf38d('0x16'),auth[_0xf38d('0x9')](),controller[_0xf38d('0x1b')]);router[_0xf38d('0x1c')](_0xf38d('0xe'),auth['isAuthenticated'](),controller[_0xf38d('0x1d')]);router[_0xf38d('0x1e')](_0xf38d('0xe'),auth[_0xf38d('0x9')](),controller[_0xf38d('0x1f')]);router['delete']('/:id/dispositions',auth[_0xf38d('0x9')](),controller['removeDispositions']);router[_0xf38d('0x1e')](_0xf38d('0x16'),auth[_0xf38d('0x9')](),controller[_0xf38d('0x20')]);module[_0xf38d('0x21')]=router;
\ No newline at end of file
+var _0xf7da=['post','create','/:id/dispositions','addDisposition','addContacts','addCustomField','addAgents','put','delete','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','isAuthenticated','index','get','/describe','describe','/:id','show','getDispositions','/:id/contacts','getContacts','/:id/fields','getCustomFields','/:id/users'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xf7da,0x147));var _0xaf7d=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xf7da[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require(_0xaf7d('0x0'));var util=require(_0xaf7d('0x1'));var path=require(_0xaf7d('0x2'));var timeout=require(_0xaf7d('0x3'));var express=require(_0xaf7d('0x4'));var router=express[_0xaf7d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xaf7d('0x6'));var interaction=require(_0xaf7d('0x7'));var config=require(_0xaf7d('0x8'));var controller=require(_0xaf7d('0x9'));router['get']('/',auth[_0xaf7d('0xa')](),controller[_0xaf7d('0xb')]);router[_0xaf7d('0xc')](_0xaf7d('0xd'),auth[_0xaf7d('0xa')](),controller[_0xaf7d('0xe')]);router[_0xaf7d('0xc')](_0xaf7d('0xf'),auth['isAuthenticated'](),controller[_0xaf7d('0x10')]);router[_0xaf7d('0xc')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xaf7d('0x11')]);router[_0xaf7d('0xc')](_0xaf7d('0x12'),auth[_0xaf7d('0xa')](),controller[_0xaf7d('0x13')]);router[_0xaf7d('0xc')]('/:id/contacts/csv',auth[_0xaf7d('0xa')](),controller['getContactsCsv']);router['get'](_0xaf7d('0x14'),auth[_0xaf7d('0xa')](),controller[_0xaf7d('0x15')]);router[_0xaf7d('0xc')](_0xaf7d('0x16'),auth[_0xaf7d('0xa')](),controller['getAgents']);router[_0xaf7d('0x17')]('/',auth['isAuthenticated'](),controller[_0xaf7d('0x18')]);router[_0xaf7d('0x17')](_0xaf7d('0x19'),auth[_0xaf7d('0xa')](),controller[_0xaf7d('0x1a')]);router[_0xaf7d('0x17')](_0xaf7d('0x12'),auth[_0xaf7d('0xa')](),controller[_0xaf7d('0x1b')]);router['post']('/:id/fields',auth['isAuthenticated'](),controller[_0xaf7d('0x1c')]);router[_0xaf7d('0x17')](_0xaf7d('0x16'),auth[_0xaf7d('0xa')](),controller[_0xaf7d('0x1d')]);router[_0xaf7d('0x1e')](_0xaf7d('0xf'),auth[_0xaf7d('0xa')](),controller['update']);router[_0xaf7d('0x1f')]('/:id',auth[_0xaf7d('0xa')](),controller['destroy']);router[_0xaf7d('0x1f')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xaf7d('0x20')]);router[_0xaf7d('0x1f')](_0xaf7d('0x16'),auth[_0xaf7d('0xa')](),controller[_0xaf7d('0x21')]);module[_0xaf7d('0x22')]=router;
\ No newline at end of file
index 34123b4..9436db8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8958=['sequelize','exports','VIRTUAL','field','STRING'];(function(_0xc662c7,_0x35bc01){var _0x3c275f=function(_0x27c7a4){while(--_0x27c7a4){_0xc662c7['push'](_0xc662c7['shift']());}};_0x3c275f(++_0x35bc01);}(_0x8958,0x140));var _0x8895=function(_0x4eba56,_0x28a323){_0x4eba56=_0x4eba56-0x0;var _0x33132c=_0x8958[_0x4eba56];return _0x33132c;};'use strict';var Sequelize=require(_0x8895('0x0'));module[_0x8895('0x1')]={'name':{'type':Sequelize[_0x8895('0x2')],'get':function(_0x2d6655){return this['getDataValue'](_0x8895('0x3'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x8895('0x4')],'allowNull':![]}};
\ No newline at end of file
+var _0x3f65=['STRING','sequelize','exports','getDataValue','field'];(function(_0x4f8dc1,_0x170227){var _0x15af5a=function(_0x2dc440){while(--_0x2dc440){_0x4f8dc1['push'](_0x4f8dc1['shift']());}};_0x15af5a(++_0x170227);}(_0x3f65,0x15a));var _0x53f6=function(_0x136a41,_0x39e163){_0x136a41=_0x136a41-0x0;var _0x4db532=_0x3f65[_0x136a41];return _0x4db532;};'use strict';var Sequelize=require(_0x53f6('0x0'));module[_0x53f6('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0xe6a195){return this[_0x53f6('0x2')](_0x53f6('0x3'));}},'field':{'type':Sequelize[_0x53f6('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x53f6('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0x53f6('0x4')],'allowNull':![]}};
\ No newline at end of file
index be0d922..0c79f47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x46d8af,_0x4d3ad9){var _0x3c9781=function(_0x3becf1){while(--_0x3becf1){_0x46d8af['push'](_0x46d8af['shift']());}};_0x3c9781(++_0x4d3ad9);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+var _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(_0x11d499,_0x3f7bf9){var _0x37ceb5=function(_0x3ef9a9){while(--_0x3ef9a9){_0x11d499['push'](_0x11d499['shift']());}};_0x37ceb5(++_0x3f7bf9);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'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 f1afd6a..ba15b35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe64d=['Condition','tools_conditions','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./condition.attributes','define'];(function(_0xdbd42c,_0x3ac170){var _0x672780=function(_0x148579){while(--_0x148579){_0xdbd42c['push'](_0xdbd42c['shift']());}};_0x672780(++_0x3ac170);}(_0xe64d,0x199));var _0xde64=function(_0x590b63,_0x14debb){_0x590b63=_0x590b63-0x0;var _0x3c9380=_0xe64d[_0x590b63];return _0x3c9380;};'use strict';var _=require('lodash');var util=require(_0xde64('0x0'));var logger=require('../../config/logger')(_0xde64('0x1'));var moment=require('moment');var BPromise=require(_0xde64('0x2'));var rp=require(_0xde64('0x3'));var fs=require('fs');var path=require(_0xde64('0x4'));var rimraf=require(_0xde64('0x5'));var config=require(_0xde64('0x6'));var attributes=require(_0xde64('0x7'));module['exports']=function(_0x276316,_0x407815){return _0x276316[_0xde64('0x8')](_0xde64('0x9'),attributes,{'tableName':_0xde64('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaf15=['request-promise','path','rimraf','./condition.attributes','define','Condition','tools_conditions','lodash','../../config/logger','api','moment','bluebird'];(function(_0x41d432,_0x20e878){var _0x1650f9=function(_0x27f177){while(--_0x27f177){_0x41d432['push'](_0x41d432['shift']());}};_0x1650f9(++_0x20e878);}(_0xaf15,0x1cf));var _0x5af1=function(_0x3bb7d4,_0x8a8669){_0x3bb7d4=_0x3bb7d4-0x0;var _0x1d1dcf=_0xaf15[_0x3bb7d4];return _0x1d1dcf;};'use strict';var _=require(_0x5af1('0x0'));var util=require('util');var logger=require(_0x5af1('0x1'))(_0x5af1('0x2'));var moment=require(_0x5af1('0x3'));var BPromise=require(_0x5af1('0x4'));var rp=require(_0x5af1('0x5'));var fs=require('fs');var path=require(_0x5af1('0x6'));var rimraf=require(_0x5af1('0x7'));var config=require('../../config/environment');var attributes=require(_0x5af1('0x8'));module['exports']=function(_0x39f945,_0x35c0e8){return _0x39f945[_0x5af1('0x9')](_0x5af1('0xa'),attributes,{'tableName':_0x5af1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a0aa7d4..e3d5954 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0738=['stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','Condition,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4037f8,_0x3c1548){var _0x35b116=function(_0x4d2e00){while(--_0x4d2e00){_0x4037f8['push'](_0x4037f8['shift']());}};_0x35b116(++_0x3c1548);}(_0x0738,0xa7));var _0x8073=function(_0x254744,_0x219e6b){_0x254744=_0x254744-0x0;var _0x2a6a96=_0x0738[_0x254744];return _0x2a6a96;};'use strict';var _=require('lodash');var util=require(_0x8073('0x0'));var moment=require(_0x8073('0x1'));var BPromise=require(_0x8073('0x2'));var rs=require(_0x8073('0x3'));var fs=require('fs');var Redis=require(_0x8073('0x4'));var db=require(_0x8073('0x5'))['db'];var utils=require(_0x8073('0x6'));var logger=require(_0x8073('0x7'))(_0x8073('0x8'));var config=require(_0x8073('0x9'));var jayson=require(_0x8073('0xa'));var client=jayson[_0x8073('0xb')][_0x8073('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4a36a3,_0x57493f,_0xb60b3b){return new BPromise(function(_0x3f34e5,_0x2cb6f1){return client[_0x8073('0xd')](_0x4a36a3,_0xb60b3b)['then'](function(_0x3225fc){logger['info'](_0x8073('0xe'),_0x57493f,_0x8073('0xf'));logger[_0x8073('0x10')]('Condition,\x20%s,\x20%s,\x20%s',_0x57493f,_0x8073('0xf'),JSON[_0x8073('0x11')](_0x3225fc));if(_0x3225fc[_0x8073('0x12')]){if(_0x3225fc['error'][_0x8073('0x13')]===0x1f4){logger[_0x8073('0x12')](_0x8073('0xe'),_0x57493f,_0x3225fc[_0x8073('0x12')]['message']);return _0x2cb6f1(_0x3225fc[_0x8073('0x12')]['message']);}logger['error'](_0x8073('0xe'),_0x57493f,_0x3225fc[_0x8073('0x12')][_0x8073('0x14')]);return _0x3f34e5(_0x3225fc[_0x8073('0x12')][_0x8073('0x14')]);}else{logger['info'](_0x8073('0xe'),_0x57493f,_0x8073('0xf'));_0x3f34e5(_0x3225fc[_0x8073('0x15')][_0x8073('0x14')]);}})[_0x8073('0x16')](function(_0x39f522){logger['error']('Condition,\x20%s,\x20%s',_0x57493f,_0x39f522);_0x2cb6f1(_0x39f522);});});}
\ No newline at end of file
+var _0x822c=['http','request','then','info','Condition,\x20%s,\x20%s','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../config/logger','../../config/environment','jayson/promise'];(function(_0x11bb60,_0x3dc734){var _0x37357e=function(_0x1b6a33){while(--_0x1b6a33){_0x11bb60['push'](_0x11bb60['shift']());}};_0x37357e(++_0x3dc734);}(_0x822c,0x175));var _0xc822=function(_0x466da8,_0x2f4f1d){_0x466da8=_0x466da8-0x0;var _0x33b09a=_0x822c[_0x466da8];return _0x33b09a;};'use strict';var _=require(_0xc822('0x0'));var util=require(_0xc822('0x1'));var moment=require(_0xc822('0x2'));var BPromise=require('bluebird');var rs=require(_0xc822('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc822('0x4'))('rpc');var config=require(_0xc822('0x5'));var jayson=require(_0xc822('0x6'));var client=jayson['client'][_0xc822('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2e1255,_0x1abfd5,_0xb06462){return new BPromise(function(_0x381d00,_0xf98c1){return client[_0xc822('0x8')](_0x2e1255,_0xb06462)[_0xc822('0x9')](function(_0x3a36bd){logger[_0xc822('0xa')](_0xc822('0xb'),_0x1abfd5,'request\x20sent');logger['debug'](_0xc822('0xc'),_0x1abfd5,_0xc822('0xd'),JSON[_0xc822('0xe')](_0x3a36bd));if(_0x3a36bd['error']){if(_0x3a36bd[_0xc822('0xf')][_0xc822('0x10')]===0x1f4){logger[_0xc822('0xf')](_0xc822('0xb'),_0x1abfd5,_0x3a36bd['error'][_0xc822('0x11')]);return _0xf98c1(_0x3a36bd[_0xc822('0xf')][_0xc822('0x11')]);}logger[_0xc822('0xf')](_0xc822('0xb'),_0x1abfd5,_0x3a36bd[_0xc822('0xf')][_0xc822('0x11')]);return _0x381d00(_0x3a36bd[_0xc822('0xf')][_0xc822('0x11')]);}else{logger['info'](_0xc822('0xb'),_0x1abfd5,_0xc822('0xd'));_0x381d00(_0x3a36bd[_0xc822('0x12')][_0xc822('0x11')]);}})[_0xc822('0x13')](function(_0x20ea36){logger[_0xc822('0xf')](_0xc822('0xb'),_0x1abfd5,_0x20ea36);_0xf98c1(_0x20ea36);});});}
\ No newline at end of file
index 7f9cddc..1ccacba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8ce=['delete','isAuthenticated','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','put','/:id','update'];(function(_0xb127e1,_0x204ab9){var _0x1e5fe3=function(_0x1b370a){while(--_0x1b370a){_0xb127e1['push'](_0xb127e1['shift']());}};_0x1e5fe3(++_0x204ab9);}(_0xe8ce,0xd6));var _0xee8c=function(_0x3c324f,_0x5a3bcc){_0x3c324f=_0x3c324f-0x0;var _0x7487e9=_0xe8ce[_0x3c324f];return _0x7487e9;};'use strict';var multer=require(_0xee8c('0x0'));var util=require(_0xee8c('0x1'));var path=require('path');var timeout=require(_0xee8c('0x2'));var express=require(_0xee8c('0x3'));var router=express[_0xee8c('0x4')]();var fs_extra=require(_0xee8c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xee8c('0x6'));var config=require('../../config/environment');var controller=require('./condition.controller');router[_0xee8c('0x7')](_0xee8c('0x8'),auth['isAuthenticated'](),controller[_0xee8c('0x9')]);router[_0xee8c('0xa')]('/:id',auth[_0xee8c('0xb')](),controller[_0xee8c('0xc')]);module[_0xee8c('0xd')]=router;
\ No newline at end of file
+var _0xe66b=['/:id','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./condition.controller','put'];(function(_0x3ef45e,_0xe84f33){var _0x69e7c=function(_0x43ba11){while(--_0x43ba11){_0x3ef45e['push'](_0x3ef45e['shift']());}};_0x69e7c(++_0xe84f33);}(_0xe66b,0x90));var _0xbe66=function(_0x1fcfc0,_0x45c9b8){_0x1fcfc0=_0x1fcfc0-0x0;var _0x83ee56=_0xe66b[_0x1fcfc0];return _0x83ee56;};'use strict';var multer=require(_0xbe66('0x0'));var util=require(_0xbe66('0x1'));var path=require(_0xbe66('0x2'));var timeout=require(_0xbe66('0x3'));var express=require(_0xbe66('0x4'));var router=express['Router']();var fs_extra=require(_0xbe66('0x5'));var auth=require(_0xbe66('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xbe66('0x7'));var controller=require(_0xbe66('0x8'));router[_0xbe66('0x9')](_0xbe66('0xa'),auth['isAuthenticated'](),controller[_0xbe66('0xb')]);router['delete'](_0xbe66('0xa'),auth['isAuthenticated'](),controller[_0xbe66('0xc')]);module[_0xbe66('0xd')]=router;
\ No newline at end of file
index 358a643..4f58441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x415772,_0x1d524e){var _0x3b8a07=function(_0x4ab3be){while(--_0x4ab3be){_0x415772['push'](_0x415772['shift']());}};_0x3b8a07(++_0x1d524e);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd8b0=['exports','sequelize'];(function(_0x120d27,_0x3a46e4){var _0x2953cb=function(_0xd660ac){while(--_0xd660ac){_0x120d27['push'](_0x120d27['shift']());}};_0x2953cb(++_0x3a46e4);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 077a426..fd3a9a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a25=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','clone','rawAttributes','include','updatedAt','omit','createdAt','body','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrRefresh','widgetAttributes:\x20%s','stringify','DashboardId','DashboardItem','getItems','findOne','filter','zip-dir','fast-json-patch','request-promise','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','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./dashboard.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','apply','then','get','CustomDashboards','destroy','end','error','stack','name','send','fieldName','type','key','map','query','keys','filters','attributes','intersection','fields','length','model','hasOwnProperty','nolimit','sort','where','options','Dashboard','includeAll','findAll','rows','show','params','merge','find','catch','create','user'];(function(_0x1913c1,_0xe25386){var _0x45b05a=function(_0xe8bac9){while(--_0xe8bac9){_0x1913c1['push'](_0x1913c1['shift']());}};_0x45b05a(++_0xe25386);}(_0x6a25,0x18e));var _0x56a2=function(_0xfd79ad,_0x5940c7){_0xfd79ad=_0xfd79ad-0x0;var _0x2432ea=_0x6a25[_0xfd79ad];return _0x2432ea;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x56a2('0x0'));var jsonpatch=require(_0x56a2('0x1'));var rp=require(_0x56a2('0x2'));var moment=require(_0x56a2('0x3'));var BPromise=require(_0x56a2('0x4'));var Mustache=require(_0x56a2('0x5'));var util=require('util');var path=require(_0x56a2('0x6'));var sox=require(_0x56a2('0x7'));var csv=require(_0x56a2('0x8'));var ejs=require(_0x56a2('0x9'));var fs=require('fs');var fs_extra=require(_0x56a2('0xa'));var _=require(_0x56a2('0xb'));var squel=require(_0x56a2('0xc'));var crypto=require(_0x56a2('0xd'));var jsforce=require(_0x56a2('0xe'));var deskjs=require(_0x56a2('0xf'));var toCsv=require(_0x56a2('0x8'));var querystring=require(_0x56a2('0x10'));var Papa=require(_0x56a2('0x11'));var Redis=require(_0x56a2('0x12'));var authService=require(_0x56a2('0x13'));var qs=require(_0x56a2('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x56a2('0x15'));var logger=require(_0x56a2('0x16'))(_0x56a2('0x17'));var utils=require(_0x56a2('0x18'));var config=require(_0x56a2('0x19'));var licenseUtil=require(_0x56a2('0x1a'));var db=require('../../mysqldb')['db'];config[_0x56a2('0x1b')]=_[_0x56a2('0x1c')](config[_0x56a2('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x56a2('0x1d'))(new Redis(config[_0x56a2('0x1b')]));require(_0x56a2('0x1e'))[_0x56a2('0x1f')](socket);function respondWithStatusCode(_0x193dee,_0x5e6df6){_0x5e6df6=_0x5e6df6||0xcc;return function(_0x1976ed){if(_0x1976ed){return _0x193dee[_0x56a2('0x20')](_0x5e6df6);}return _0x193dee[_0x56a2('0x21')](_0x5e6df6)['end']();};}function respondWithResult(_0x436237,_0x1d66ef){_0x1d66ef=_0x1d66ef||0xc8;return function(_0x24e922){if(_0x24e922){return _0x436237['status'](_0x1d66ef)[_0x56a2('0x22')](_0x24e922);}};}function respondWithFilteredResult(_0x480bcf,_0x57d4d0){return function(_0x23ce5e){if(_0x23ce5e){var _0x761199=typeof _0x57d4d0[_0x56a2('0x23')]===_0x56a2('0x24')&&typeof _0x57d4d0['limit']==='undefined';var _0x2b6792=_0x23ce5e[_0x56a2('0x25')];var _0x3be0f3=_0x761199?0x0:_0x57d4d0['offset'];var _0x2a3f3c=_0x761199?_0x23ce5e[_0x56a2('0x25')]:_0x57d4d0[_0x56a2('0x23')]+_0x57d4d0[_0x56a2('0x26')];var _0x573e78;if(_0x2a3f3c>=_0x2b6792){_0x2a3f3c=_0x2b6792;_0x573e78=0xc8;}else{_0x573e78=0xce;}_0x480bcf[_0x56a2('0x21')](_0x573e78);return _0x480bcf[_0x56a2('0x27')]('Content-Range',_0x3be0f3+'-'+_0x2a3f3c+'/'+_0x2b6792)[_0x56a2('0x22')](_0x23ce5e);}return null;};}function patchUpdates(_0x2fdfd0){return function(_0x49f0ba){try{jsonpatch[_0x56a2('0x28')](_0x49f0ba,_0x2fdfd0,!![]);}catch(_0x10dc33){return BPromise['reject'](_0x10dc33);}return _0x49f0ba['save']();};}function saveUpdates(_0x25a6a8,_0x2f3b5f){return function(_0x4cee79){if(_0x4cee79){return _0x4cee79['update'](_0x25a6a8)[_0x56a2('0x29')](function(_0x32d7ea){return _0x32d7ea;});}return null;};}function removeEntity(_0x4ccae7,_0x5970a3){return function(_0x93f036){if(_0x93f036){return _0x93f036['destroy']()[_0x56a2('0x29')](function(){var _0x51c721=_0x93f036[_0x56a2('0x2a')]({'plain':!![]});var _0x5755df=_0x56a2('0x2b');return db['UserProfileResource'][_0x56a2('0x2c')]({'where':{'type':_0x5755df,'resourceId':_0x51c721['id']}})['then'](function(){return _0x93f036;});})[_0x56a2('0x29')](function(){_0x4ccae7[_0x56a2('0x21')](0xcc)[_0x56a2('0x2d')]();});}};}function handleEntityNotFound(_0x10683c,_0x367644){return function(_0x1c76e1){if(!_0x1c76e1){_0x10683c[_0x56a2('0x20')](0x194);}return _0x1c76e1;};}function handleError(_0x4c8c97,_0x14e219){_0x14e219=_0x14e219||0x1f4;return function(_0x444638){logger[_0x56a2('0x2e')](_0x444638[_0x56a2('0x2f')]);if(_0x444638[_0x56a2('0x30')]){delete _0x444638['name'];}_0x4c8c97[_0x56a2('0x21')](_0x14e219)[_0x56a2('0x31')](_0x444638);};}exports['index']=function(_0x22e42b,_0x16d2e1){var _0x1132c9={},_0x4fcfeb={},_0x145900={'count':0x0,'rows':[]};var _0x50e33e=_['map'](db['Dashboard']['rawAttributes'],function(_0x569e45){return{'name':_0x569e45[_0x56a2('0x32')],'type':_0x569e45[_0x56a2('0x33')][_0x56a2('0x34')]};});_0x4fcfeb['model']=_[_0x56a2('0x35')](_0x50e33e,_0x56a2('0x30'));_0x4fcfeb[_0x56a2('0x36')]=_[_0x56a2('0x37')](_0x22e42b['query']);_0x4fcfeb[_0x56a2('0x38')]=_['intersection'](_0x4fcfeb['model'],_0x4fcfeb[_0x56a2('0x36')]);_0x1132c9[_0x56a2('0x39')]=_[_0x56a2('0x3a')](_0x4fcfeb['model'],qs[_0x56a2('0x3b')](_0x22e42b[_0x56a2('0x36')][_0x56a2('0x3b')]));_0x1132c9['attributes']=_0x1132c9['attributes'][_0x56a2('0x3c')]?_0x1132c9[_0x56a2('0x39')]:_0x4fcfeb[_0x56a2('0x3d')];if(!_0x22e42b[_0x56a2('0x36')][_0x56a2('0x3e')](_0x56a2('0x3f'))){_0x1132c9['limit']=qs[_0x56a2('0x26')](_0x22e42b[_0x56a2('0x36')]['limit']);_0x1132c9[_0x56a2('0x23')]=qs['offset'](_0x22e42b[_0x56a2('0x36')][_0x56a2('0x23')]);}_0x1132c9['order']=qs[_0x56a2('0x40')](_0x22e42b[_0x56a2('0x36')][_0x56a2('0x40')]);_0x1132c9['where']=qs[_0x56a2('0x38')](_['pick'](_0x22e42b[_0x56a2('0x36')],_0x4fcfeb['filters']),_0x50e33e);if(_0x22e42b[_0x56a2('0x36')]['filter']){_0x1132c9[_0x56a2('0x41')]=_['merge'](_0x1132c9[_0x56a2('0x41')],{'$or':_[_0x56a2('0x35')](_0x50e33e,function(_0x49519d){if(_0x49519d['type']!=='VIRTUAL'){var _0x3e76a7={};_0x3e76a7[_0x49519d['name']]={'$like':'%'+_0x22e42b[_0x56a2('0x36')]['filter']+'%'};return _0x3e76a7;}})});}_0x1132c9=_['merge']({},_0x1132c9,_0x22e42b[_0x56a2('0x42')]);var _0x365f49={'where':_0x1132c9['where']};return db[_0x56a2('0x43')]['count'](_0x365f49)[_0x56a2('0x29')](function(_0x35ddf6){_0x145900[_0x56a2('0x25')]=_0x35ddf6;if(_0x22e42b[_0x56a2('0x36')][_0x56a2('0x44')]){_0x1132c9['include']=[{'all':!![]}];}return db['Dashboard'][_0x56a2('0x45')](_0x1132c9);})[_0x56a2('0x29')](function(_0xfe4e1d){_0x145900[_0x56a2('0x46')]=_0xfe4e1d;return _0x145900;})[_0x56a2('0x29')](respondWithFilteredResult(_0x16d2e1,_0x1132c9))['catch'](handleError(_0x16d2e1,null));};exports[_0x56a2('0x47')]=function(_0x204a0f,_0x1126d5){var _0x47bbb8={'raw':![],'where':{'id':_0x204a0f[_0x56a2('0x48')]['id']}},_0x57c9ed={};_0x57c9ed[_0x56a2('0x3d')]=_[_0x56a2('0x37')](db[_0x56a2('0x43')]['rawAttributes']);_0x57c9ed[_0x56a2('0x36')]=_[_0x56a2('0x37')](_0x204a0f['query']);_0x57c9ed[_0x56a2('0x38')]=_['intersection'](_0x57c9ed[_0x56a2('0x3d')],_0x57c9ed[_0x56a2('0x36')]);_0x47bbb8[_0x56a2('0x39')]=_[_0x56a2('0x3a')](_0x57c9ed[_0x56a2('0x3d')],qs[_0x56a2('0x3b')](_0x204a0f[_0x56a2('0x36')][_0x56a2('0x3b')]));_0x47bbb8[_0x56a2('0x39')]=_0x47bbb8[_0x56a2('0x39')][_0x56a2('0x3c')]?_0x47bbb8[_0x56a2('0x39')]:_0x57c9ed[_0x56a2('0x3d')];if(_0x204a0f['query'][_0x56a2('0x44')]){_0x47bbb8['include']=[{'all':!![]}];}_0x47bbb8=_[_0x56a2('0x49')]({},_0x47bbb8,_0x204a0f[_0x56a2('0x42')]);return db[_0x56a2('0x43')][_0x56a2('0x4a')](_0x47bbb8)[_0x56a2('0x29')](handleEntityNotFound(_0x1126d5,null))['then'](respondWithResult(_0x1126d5,null))[_0x56a2('0x4b')](handleError(_0x1126d5,null));};exports[_0x56a2('0x4c')]=function(_0x570eba,_0x3362b4){return db[_0x56a2('0x43')][_0x56a2('0x4c')](_0x570eba['body'],{})[_0x56a2('0x29')](function(_0x39d5a7){var _0x327a47=_0x570eba[_0x56a2('0x4d')]['get']({'plain':!![]});if(!_0x327a47)throw new Error(_0x56a2('0x4e'));if(_0x327a47[_0x56a2('0x4f')]===_0x56a2('0x4d')){var _0x31340c=_0x39d5a7[_0x56a2('0x2a')]({'plain':!![]});var _0x3b6ad3=_0x56a2('0x2b');return db[_0x56a2('0x50')]['find']({'where':{'name':_0x3b6ad3,'userProfileId':_0x327a47['userProfileId']},'raw':!![]})[_0x56a2('0x29')](function(_0xdb5433){if(_0xdb5433&&_0xdb5433[_0x56a2('0x51')]===0x0){return db[_0x56a2('0x52')][_0x56a2('0x4c')]({'name':_0x31340c['name'],'resourceId':_0x31340c['id'],'type':_0xdb5433[_0x56a2('0x30')],'sectionId':_0xdb5433['id']},{})[_0x56a2('0x29')](function(){return _0x39d5a7;});}else{return _0x39d5a7;}})[_0x56a2('0x4b')](function(_0x5a05b7){logger[_0x56a2('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5a05b7);throw _0x5a05b7;});}return _0x39d5a7;})[_0x56a2('0x29')](respondWithResult(_0x3362b4,0xc9))[_0x56a2('0x4b')](handleError(_0x3362b4,null));};exports[_0x56a2('0x53')]=function(_0x3e6f4d,_0x53fe99){var _0x56d11d={'where':{'id':_0x3e6f4d[_0x56a2('0x48')]['id']}},_0x11b803={};_0x11b803[_0x56a2('0x3d')]=_[_0x56a2('0x37')](db[_0x56a2('0x43')][_0x56a2('0x54')]);_0x56d11d[_0x56a2('0x39')]=_[_0x56a2('0x3a')](_0x11b803[_0x56a2('0x3d')],qs['fields'](_0x3e6f4d['query'][_0x56a2('0x3b')]));_0x56d11d['attributes']=_0x56d11d[_0x56a2('0x39')][_0x56a2('0x3c')]?_0x56d11d['attributes']:_0x11b803[_0x56a2('0x3d')];if(_0x3e6f4d[_0x56a2('0x36')]['includeAll']){_0x56d11d[_0x56a2('0x55')]=[{'all':!![]}];}_0x56d11d=_[_0x56a2('0x49')]({},_0x56d11d,_0x3e6f4d['options']);return db[_0x56a2('0x43')]['find'](_0x56d11d)[_0x56a2('0x29')](handleEntityNotFound(_0x53fe99,null))[_0x56a2('0x29')](function(_0x2547d8){if(_0x2547d8){var _0x11e34a=_0x2547d8['get']({'plain':!![]});_0x11e34a=qs['omit'](_0x11e34a,['id','createdAt',_0x56a2('0x56')]);_0x3e6f4d['body']=_[_0x56a2('0x57')](_0x3e6f4d['body'],['id',_0x56a2('0x58'),_0x56a2('0x56')]);return db['Dashboard'][_0x56a2('0x4c')](_[_0x56a2('0x49')](_0x11e34a,_0x3e6f4d[_0x56a2('0x59')]),{'include':_0x3e6f4d['query']['includeAll']?[{'all':!![]}]:undefined})[_0x56a2('0x29')](function(_0x4c713b){var _0x59c76d=_0x3e6f4d[_0x56a2('0x4d')][_0x56a2('0x2a')]({'plain':!![]});if(!_0x59c76d)throw new Error(_0x56a2('0x4e'));if(_0x59c76d[_0x56a2('0x4f')]==='user'){var _0x2683be=_0x4c713b[_0x56a2('0x2a')]({'plain':!![]});var _0x238071=_0x56a2('0x2b');return db['UserProfileSection']['find']({'where':{'name':_0x238071,'userProfileId':_0x59c76d['userProfileId']},'raw':!![]})['then'](function(_0x67c69f){if(_0x67c69f&&_0x67c69f[_0x56a2('0x51')]===0x0){return db[_0x56a2('0x52')]['create']({'name':_0x2683be[_0x56a2('0x30')],'resourceId':_0x2683be['id'],'type':_0x67c69f[_0x56a2('0x30')],'sectionId':_0x67c69f['id']},{})[_0x56a2('0x29')](function(){return _0x4c713b;});}else{return _0x4c713b;}})[_0x56a2('0x4b')](function(_0x48b150){logger[_0x56a2('0x2e')](_0x56a2('0x5a'),_0x48b150);throw _0x48b150;});}return _0x4c713b;});}})[_0x56a2('0x29')](respondWithResult(_0x53fe99,0xc9))[_0x56a2('0x4b')](handleError(_0x53fe99,null));};exports['update']=function(_0xc9f412,_0x393bd1){if(_0xc9f412['body']['id']){delete _0xc9f412['body']['id'];}return db[_0x56a2('0x43')][_0x56a2('0x4a')]({'where':{'id':_0xc9f412['params']['id']}})[_0x56a2('0x29')](handleEntityNotFound(_0x393bd1,null))[_0x56a2('0x29')](saveUpdates(_0xc9f412[_0x56a2('0x59')],null))[_0x56a2('0x29')](respondWithResult(_0x393bd1,null))[_0x56a2('0x4b')](handleError(_0x393bd1,null));};exports['destroy']=function(_0x4bc198,_0x41e092){return db[_0x56a2('0x43')][_0x56a2('0x4a')]({'where':{'id':_0x4bc198[_0x56a2('0x48')]['id']}})['then'](handleEntityNotFound(_0x41e092,null))[_0x56a2('0x29')](removeEntity(_0x41e092,null))['catch'](handleError(_0x41e092,null));};function widgetAttributes(_0x394924){try{switch(_0x394924[_0x56a2('0x33')]){case _0x56a2('0x5b'):return[{'name':'attrUrl','value':_0x394924[_0x56a2('0x5c')]||(_0x394924['attrs']&&_0x394924[_0x56a2('0x5d')][0x0]?_0x394924[_0x56a2('0x5d')][0x0][_0x56a2('0x5e')]:undefined)||_0x56a2('0x5f')}];case _0x56a2('0x60'):return[{'name':'attrPath','value':_0x394924[_0x56a2('0x61')]||(_0x394924['attrs']&&_0x394924[_0x56a2('0x5d')][0x0]?_0x394924[_0x56a2('0x5d')][0x0][_0x56a2('0x5e')]:undefined)||''}];case _0x56a2('0x62'):return[{'name':_0x56a2('0x63'),'value':_0x394924[_0x56a2('0x63')]||(_0x394924[_0x56a2('0x5d')]&&_0x394924[_0x56a2('0x5d')][0x0]?_0x394924[_0x56a2('0x5d')][0x0][_0x56a2('0x5e')]:undefined)||_0x56a2('0x64')},{'name':_0x56a2('0x65'),'value':_0x394924['attrTimezone']||(_0x394924[_0x56a2('0x5d')]&&_0x394924['attrs'][0x1]?_0x394924['attrs'][0x1][_0x56a2('0x5e')]:undefined)||_0x56a2('0x66')},{'name':'attrFontSize','value':_0x394924[_0x56a2('0x67')]||(_0x394924['attrs']&&_0x394924[_0x56a2('0x5d')][0x2]?_0x394924[_0x56a2('0x5d')][0x2][_0x56a2('0x5e')]:undefined)||0xc}];case _0x56a2('0x68'):return[{'name':_0x56a2('0x69'),'value':_0x394924['attrMetric']||(_0x394924['attrs']&&_0x394924[_0x56a2('0x5d')][0x0]?_0x394924[_0x56a2('0x5d')][0x0]['value']:undefined)||'total'},{'name':_0x56a2('0x6a'),'value':_0x394924[_0x56a2('0x6a')]||(_0x394924[_0x56a2('0x5d')]&&_0x394924['attrs'][0x1]?_0x394924[_0x56a2('0x5d')][0x1][_0x56a2('0x5e')]:undefined)||[]},{'name':_0x56a2('0x67'),'value':_0x394924[_0x56a2('0x67')]||(_0x394924[_0x56a2('0x5d')]&&_0x394924[_0x56a2('0x5d')][0x2]?_0x394924[_0x56a2('0x5d')][0x2]['value']:undefined)||0x14}];case'multibar-chart':case _0x56a2('0x6b'):return[{'name':_0x56a2('0x6c'),'value':_0x394924[_0x56a2('0x6c')]||(_0x394924[_0x56a2('0x5d')]&&_0x394924['attrs'][0x0]?_0x394924[_0x56a2('0x5d')][0x0][_0x56a2('0x5e')]:undefined)||'total'},{'name':_0x56a2('0x6d'),'value':_0x394924['attrSerie2']||(_0x394924['attrs']&&_0x394924[_0x56a2('0x5d')][0x1]?_0x394924[_0x56a2('0x5d')][0x1]['value']:undefined)||null},{'name':_0x56a2('0x6e'),'value':_0x394924[_0x56a2('0x6e')]||(_0x394924[_0x56a2('0x5d')]&&_0x394924[_0x56a2('0x5d')][0x2]?_0x394924[_0x56a2('0x5d')][0x2][_0x56a2('0x5e')]:undefined)||null},{'name':_0x56a2('0x6a'),'value':_0x394924['attrVoiceQueues']||(_0x394924[_0x56a2('0x5d')]&&_0x394924['attrs'][0x3]?_0x394924['attrs'][0x3]['value']:undefined)||[]}];case'web-report':return[{'name':'attrReport','type':_0x394924['reportType']||(_0x394924[_0x56a2('0x5d')]&&_0x394924[_0x56a2('0x5d')][0x0]?_0x394924[_0x56a2('0x5d')][0x0][_0x56a2('0x33')]:undefined)||null,'value':_0x394924['attrReport']||(_0x394924[_0x56a2('0x5d')]&&_0x394924[_0x56a2('0x5d')][0x0]?_0x394924[_0x56a2('0x5d')][0x0]['value']:undefined)||null},{'name':_0x56a2('0x6f'),'value':_0x394924[_0x56a2('0x6f')]||(_0x394924[_0x56a2('0x5d')]&&_0x394924['attrs'][0x1]?_0x394924[_0x56a2('0x5d')][0x1][_0x56a2('0x5e')]:undefined)||0x0}];default:return[];}}catch(_0x403fd8){logger[_0x56a2('0x2e')](_0x56a2('0x70'),JSON[_0x56a2('0x71')](_0x403fd8));return[];}}exports['addItem']=function(_0x26c379,_0x5d6c06,_0x4a292e){if(_0x26c379['body']['id']){delete _0x26c379[_0x56a2('0x59')]['id'];}return db[_0x56a2('0x43')][_0x56a2('0x4a')]({'where':{'id':_0x26c379[_0x56a2('0x48')]['id']}})[_0x56a2('0x29')](handleEntityNotFound(_0x5d6c06,null))[_0x56a2('0x29')](function(_0xd220ab){if(_0xd220ab){_0x26c379[_0x56a2('0x59')][_0x56a2('0x72')]=_0xd220ab['id'];_0x26c379[_0x56a2('0x59')][_0x56a2('0x5d')]=widgetAttributes(_0x26c379[_0x56a2('0x59')]);return db[_0x56a2('0x73')][_0x56a2('0x4c')](_0x26c379[_0x56a2('0x59')]);}})[_0x56a2('0x29')](respondWithResult(_0x5d6c06,null))[_0x56a2('0x4b')](handleError(_0x5d6c06,null));};exports[_0x56a2('0x74')]=function(_0x4f63af,_0x393044,_0x4a940d){var _0x312eaa={};var _0x227419={};var _0x2c2aa6;var _0x4cee97;return db[_0x56a2('0x43')][_0x56a2('0x75')]({'where':{'id':_0x4f63af[_0x56a2('0x48')]['id']}})[_0x56a2('0x29')](handleEntityNotFound(_0x393044,null))[_0x56a2('0x29')](function(_0x532526){if(_0x532526){_0x2c2aa6=_0x532526;_0x227419[_0x56a2('0x3d')]=_[_0x56a2('0x37')](db[_0x56a2('0x73')]['rawAttributes']);_0x227419[_0x56a2('0x36')]=_['keys'](_0x4f63af[_0x56a2('0x36')]);_0x227419[_0x56a2('0x38')]=_[_0x56a2('0x3a')](_0x227419[_0x56a2('0x3d')],_0x227419[_0x56a2('0x36')]);_0x312eaa['attributes']=_[_0x56a2('0x3a')](_0x227419['model'],qs[_0x56a2('0x3b')](_0x4f63af[_0x56a2('0x36')][_0x56a2('0x3b')]));_0x312eaa[_0x56a2('0x39')]=_0x312eaa[_0x56a2('0x39')][_0x56a2('0x3c')]?_0x312eaa[_0x56a2('0x39')]:_0x227419[_0x56a2('0x3d')];_0x312eaa['order']=qs[_0x56a2('0x40')](_0x4f63af[_0x56a2('0x36')][_0x56a2('0x40')]);_0x312eaa[_0x56a2('0x41')]=qs[_0x56a2('0x38')](_['pick'](_0x4f63af[_0x56a2('0x36')],_0x227419[_0x56a2('0x38')]));if(_0x4f63af['query']['filter']){_0x312eaa['where']=_['merge'](_0x312eaa['where'],{'$or':_['map'](_0x312eaa['attributes'],function(_0x3fa15f){var _0x1ba651={};_0x1ba651[_0x3fa15f]={'$like':'%'+_0x4f63af['query'][_0x56a2('0x76')]+'%'};return _0x1ba651;})});}_0x312eaa=_[_0x56a2('0x49')]({},_0x312eaa,_0x4f63af[_0x56a2('0x42')]);return _0x2c2aa6[_0x56a2('0x74')](_0x312eaa);}})[_0x56a2('0x29')](function(_0x263a57){if(_0x263a57){_0x4cee97=_0x263a57[_0x56a2('0x3c')];if(!_0x4f63af['query'][_0x56a2('0x3e')](_0x56a2('0x3f'))){_0x312eaa[_0x56a2('0x26')]=qs[_0x56a2('0x26')](_0x4f63af[_0x56a2('0x36')][_0x56a2('0x26')]);_0x312eaa['offset']=qs[_0x56a2('0x23')](_0x4f63af['query'][_0x56a2('0x23')]);}return _0x2c2aa6[_0x56a2('0x74')](_0x312eaa);}})['then'](function(_0x4d7bd6){if(_0x4d7bd6){return _0x4d7bd6?{'count':_0x4cee97,'rows':_0x4d7bd6}:null;}})[_0x56a2('0x29')](respondWithResult(_0x393044,null))[_0x56a2('0x4b')](handleError(_0x393044,null));};
\ No newline at end of file
+var _0xdfee=['moment','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/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','count','Content-Range','apply','save','destroy','get','CustomDashboards','then','end','error','name','send','map','Dashboard','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','clone','length','omit','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','update','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','HH:mm:ss','attrTimezone','counter','attrMetric','total','attrVoiceQueues','attrFontSize','pie-chart','attrSerie1','attrSerie3','web-report','attrReport','reportType','attrRefresh','stringify','DashboardId','DashboardItem','getItems','findOne','eml-format','rimraf','zip-dir','request-promise'];(function(_0x543f19,_0x2a97ee){var _0x22333e=function(_0x2e3973){while(--_0x2e3973){_0x543f19['push'](_0x543f19['shift']());}};_0x22333e(++_0x2a97ee);}(_0xdfee,0x1e8));var _0xedfe=function(_0x2a9117,_0x356e25){_0x2a9117=_0x2a9117-0x0;var _0x5450ce=_0xdfee[_0x2a9117];return _0x5450ce;};'use strict';var emlformat=require(_0xedfe('0x0'));var rimraf=require(_0xedfe('0x1'));var zipdir=require(_0xedfe('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xedfe('0x3'));var moment=require(_0xedfe('0x4'));var BPromise=require(_0xedfe('0x5'));var Mustache=require(_0xedfe('0x6'));var util=require(_0xedfe('0x7'));var path=require(_0xedfe('0x8'));var sox=require(_0xedfe('0x9'));var csv=require(_0xedfe('0xa'));var ejs=require(_0xedfe('0xb'));var fs=require('fs');var fs_extra=require(_0xedfe('0xc'));var _=require(_0xedfe('0xd'));var squel=require(_0xedfe('0xe'));var crypto=require(_0xedfe('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xedfe('0x10'));var toCsv=require(_0xedfe('0xa'));var querystring=require(_0xedfe('0x11'));var Papa=require(_0xedfe('0x12'));var Redis=require(_0xedfe('0x13'));var authService=require(_0xedfe('0x14'));var qs=require(_0xedfe('0x15'));var as=require(_0xedfe('0x16'));var hardwareService=require(_0xedfe('0x17'));var logger=require(_0xedfe('0x18'))(_0xedfe('0x19'));var utils=require(_0xedfe('0x1a'));var config=require(_0xedfe('0x1b'));var licenseUtil=require(_0xedfe('0x1c'));var db=require('../../mysqldb')['db'];config[_0xedfe('0x1d')]=_[_0xedfe('0x1e')](config[_0xedfe('0x1d')],{'host':_0xedfe('0x1f'),'port':0x18eb});var socket=require(_0xedfe('0x20'))(new Redis(config[_0xedfe('0x1d')]));require('./dashboard.socket')[_0xedfe('0x21')](socket);function respondWithStatusCode(_0x2a6ca7,_0x486995){_0x486995=_0x486995||0xcc;return function(_0x3f7882){if(_0x3f7882){return _0x2a6ca7[_0xedfe('0x22')](_0x486995);}return _0x2a6ca7[_0xedfe('0x23')](_0x486995)['end']();};}function respondWithResult(_0x33a919,_0x35a5d7){_0x35a5d7=_0x35a5d7||0xc8;return function(_0x34e12d){if(_0x34e12d){return _0x33a919[_0xedfe('0x23')](_0x35a5d7)[_0xedfe('0x24')](_0x34e12d);}};}function respondWithFilteredResult(_0x16f8f5,_0x5da7f4){return function(_0x4a79b4){if(_0x4a79b4){var _0x3cd998=typeof _0x5da7f4[_0xedfe('0x25')]===_0xedfe('0x26')&&typeof _0x5da7f4['limit']==='undefined';var _0x16a4fc=_0x4a79b4[_0xedfe('0x27')];var _0x3b9e8e=_0x3cd998?0x0:_0x5da7f4[_0xedfe('0x25')];var _0x2586c2=_0x3cd998?_0x4a79b4['count']:_0x5da7f4[_0xedfe('0x25')]+_0x5da7f4['limit'];var _0x5d89bc;if(_0x2586c2>=_0x16a4fc){_0x2586c2=_0x16a4fc;_0x5d89bc=0xc8;}else{_0x5d89bc=0xce;}_0x16f8f5[_0xedfe('0x23')](_0x5d89bc);return _0x16f8f5['set'](_0xedfe('0x28'),_0x3b9e8e+'-'+_0x2586c2+'/'+_0x16a4fc)[_0xedfe('0x24')](_0x4a79b4);}return null;};}function patchUpdates(_0x39a729){return function(_0x575361){try{jsonpatch[_0xedfe('0x29')](_0x575361,_0x39a729,!![]);}catch(_0x1cf4aa){return BPromise['reject'](_0x1cf4aa);}return _0x575361[_0xedfe('0x2a')]();};}function saveUpdates(_0x1a6c5d,_0x3d5543){return function(_0x46eb77){if(_0x46eb77){return _0x46eb77['update'](_0x1a6c5d)['then'](function(_0x4e686d){return _0x4e686d;});}return null;};}function removeEntity(_0x34f3ad,_0x44d496){return function(_0x2d81fa){if(_0x2d81fa){return _0x2d81fa[_0xedfe('0x2b')]()['then'](function(){var _0x570ec4=_0x2d81fa[_0xedfe('0x2c')]({'plain':!![]});var _0x413282=_0xedfe('0x2d');return db['UserProfileResource'][_0xedfe('0x2b')]({'where':{'type':_0x413282,'resourceId':_0x570ec4['id']}})[_0xedfe('0x2e')](function(){return _0x2d81fa;});})['then'](function(){_0x34f3ad[_0xedfe('0x23')](0xcc)[_0xedfe('0x2f')]();});}};}function handleEntityNotFound(_0xe7e340,_0x22dda9){return function(_0x229396){if(!_0x229396){_0xe7e340['sendStatus'](0x194);}return _0x229396;};}function handleError(_0x481b20,_0x30de54){_0x30de54=_0x30de54||0x1f4;return function(_0x229d07){logger[_0xedfe('0x30')](_0x229d07['stack']);if(_0x229d07[_0xedfe('0x31')]){delete _0x229d07[_0xedfe('0x31')];}_0x481b20[_0xedfe('0x23')](_0x30de54)[_0xedfe('0x32')](_0x229d07);};}exports['index']=function(_0x44992f,_0x240aa4){var _0x1490bf={},_0x58b1b8={},_0x1c6565={'count':0x0,'rows':[]};var _0x4656f1=_[_0xedfe('0x33')](db[_0xedfe('0x34')][_0xedfe('0x35')],function(_0x3f2a47){return{'name':_0x3f2a47[_0xedfe('0x36')],'type':_0x3f2a47[_0xedfe('0x37')][_0xedfe('0x38')]};});_0x58b1b8[_0xedfe('0x39')]=_[_0xedfe('0x33')](_0x4656f1,_0xedfe('0x31'));_0x58b1b8[_0xedfe('0x3a')]=_['keys'](_0x44992f['query']);_0x58b1b8[_0xedfe('0x3b')]=_[_0xedfe('0x3c')](_0x58b1b8[_0xedfe('0x39')],_0x58b1b8['query']);_0x1490bf[_0xedfe('0x3d')]=_[_0xedfe('0x3c')](_0x58b1b8[_0xedfe('0x39')],qs[_0xedfe('0x3e')](_0x44992f[_0xedfe('0x3a')]['fields']));_0x1490bf[_0xedfe('0x3d')]=_0x1490bf[_0xedfe('0x3d')]['length']?_0x1490bf[_0xedfe('0x3d')]:_0x58b1b8[_0xedfe('0x39')];if(!_0x44992f[_0xedfe('0x3a')][_0xedfe('0x3f')](_0xedfe('0x40'))){_0x1490bf[_0xedfe('0x41')]=qs[_0xedfe('0x41')](_0x44992f[_0xedfe('0x3a')]['limit']);_0x1490bf[_0xedfe('0x25')]=qs[_0xedfe('0x25')](_0x44992f[_0xedfe('0x3a')][_0xedfe('0x25')]);}_0x1490bf[_0xedfe('0x42')]=qs[_0xedfe('0x43')](_0x44992f[_0xedfe('0x3a')][_0xedfe('0x43')]);_0x1490bf['where']=qs[_0xedfe('0x3b')](_['pick'](_0x44992f[_0xedfe('0x3a')],_0x58b1b8[_0xedfe('0x3b')]),_0x4656f1);if(_0x44992f[_0xedfe('0x3a')][_0xedfe('0x44')]){_0x1490bf[_0xedfe('0x45')]=_['merge'](_0x1490bf[_0xedfe('0x45')],{'$or':_['map'](_0x4656f1,function(_0x2e3f1f){if(_0x2e3f1f[_0xedfe('0x37')]!==_0xedfe('0x46')){var _0x50aaff={};_0x50aaff[_0x2e3f1f[_0xedfe('0x31')]]={'$like':'%'+_0x44992f[_0xedfe('0x3a')][_0xedfe('0x44')]+'%'};return _0x50aaff;}})});}_0x1490bf=_[_0xedfe('0x47')]({},_0x1490bf,_0x44992f[_0xedfe('0x48')]);var _0x48a830={'where':_0x1490bf[_0xedfe('0x45')]};return db[_0xedfe('0x34')][_0xedfe('0x27')](_0x48a830)[_0xedfe('0x2e')](function(_0x5adbe6){_0x1c6565[_0xedfe('0x27')]=_0x5adbe6;if(_0x44992f['query'][_0xedfe('0x49')]){_0x1490bf[_0xedfe('0x4a')]=[{'all':!![]}];}return db[_0xedfe('0x34')][_0xedfe('0x4b')](_0x1490bf);})[_0xedfe('0x2e')](function(_0x63c53b){_0x1c6565[_0xedfe('0x4c')]=_0x63c53b;return _0x1c6565;})[_0xedfe('0x2e')](respondWithFilteredResult(_0x240aa4,_0x1490bf))[_0xedfe('0x4d')](handleError(_0x240aa4,null));};exports[_0xedfe('0x4e')]=function(_0x188e91,_0x15a773){var _0x1d385b={'raw':![],'where':{'id':_0x188e91[_0xedfe('0x4f')]['id']}},_0x5837b6={};_0x5837b6[_0xedfe('0x39')]=_[_0xedfe('0x50')](db[_0xedfe('0x34')]['rawAttributes']);_0x5837b6[_0xedfe('0x3a')]=_[_0xedfe('0x50')](_0x188e91[_0xedfe('0x3a')]);_0x5837b6[_0xedfe('0x3b')]=_['intersection'](_0x5837b6[_0xedfe('0x39')],_0x5837b6[_0xedfe('0x3a')]);_0x1d385b[_0xedfe('0x3d')]=_['intersection'](_0x5837b6[_0xedfe('0x39')],qs[_0xedfe('0x3e')](_0x188e91[_0xedfe('0x3a')][_0xedfe('0x3e')]));_0x1d385b[_0xedfe('0x3d')]=_0x1d385b[_0xedfe('0x3d')]['length']?_0x1d385b[_0xedfe('0x3d')]:_0x5837b6[_0xedfe('0x39')];if(_0x188e91[_0xedfe('0x3a')]['includeAll']){_0x1d385b[_0xedfe('0x4a')]=[{'all':!![]}];}_0x1d385b=_['merge']({},_0x1d385b,_0x188e91[_0xedfe('0x48')]);return db[_0xedfe('0x34')][_0xedfe('0x51')](_0x1d385b)[_0xedfe('0x2e')](handleEntityNotFound(_0x15a773,null))[_0xedfe('0x2e')](respondWithResult(_0x15a773,null))[_0xedfe('0x4d')](handleError(_0x15a773,null));};exports[_0xedfe('0x52')]=function(_0x2e7852,_0x5ab1c7){return db[_0xedfe('0x34')][_0xedfe('0x52')](_0x2e7852[_0xedfe('0x53')],{})[_0xedfe('0x2e')](function(_0x2498ba){var _0x419240=_0x2e7852['user']['get']({'plain':!![]});if(!_0x419240)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x419240[_0xedfe('0x54')]===_0xedfe('0x55')){var _0x3d986c=_0x2498ba[_0xedfe('0x2c')]({'plain':!![]});var _0x2f9e6f=_0xedfe('0x2d');return db[_0xedfe('0x56')][_0xedfe('0x51')]({'where':{'name':_0x2f9e6f,'userProfileId':_0x419240[_0xedfe('0x57')]},'raw':!![]})[_0xedfe('0x2e')](function(_0x4999ca){if(_0x4999ca&&_0x4999ca[_0xedfe('0x58')]===0x0){return db[_0xedfe('0x59')]['create']({'name':_0x3d986c[_0xedfe('0x31')],'resourceId':_0x3d986c['id'],'type':_0x4999ca[_0xedfe('0x31')],'sectionId':_0x4999ca['id']},{})['then'](function(){return _0x2498ba;});}else{return _0x2498ba;}})[_0xedfe('0x4d')](function(_0x3db94f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3db94f);throw _0x3db94f;});}return _0x2498ba;})['then'](respondWithResult(_0x5ab1c7,0xc9))['catch'](handleError(_0x5ab1c7,null));};exports[_0xedfe('0x5a')]=function(_0x5c48a6,_0x5b62ba){var _0x3004f6={'where':{'id':_0x5c48a6[_0xedfe('0x4f')]['id']}},_0x328b33={};_0x328b33['model']=_[_0xedfe('0x50')](db[_0xedfe('0x34')][_0xedfe('0x35')]);_0x3004f6[_0xedfe('0x3d')]=_[_0xedfe('0x3c')](_0x328b33[_0xedfe('0x39')],qs[_0xedfe('0x3e')](_0x5c48a6['query'][_0xedfe('0x3e')]));_0x3004f6['attributes']=_0x3004f6['attributes'][_0xedfe('0x5b')]?_0x3004f6[_0xedfe('0x3d')]:_0x328b33[_0xedfe('0x39')];if(_0x5c48a6[_0xedfe('0x3a')][_0xedfe('0x49')]){_0x3004f6[_0xedfe('0x4a')]=[{'all':!![]}];}_0x3004f6=_[_0xedfe('0x47')]({},_0x3004f6,_0x5c48a6[_0xedfe('0x48')]);return db[_0xedfe('0x34')]['find'](_0x3004f6)['then'](handleEntityNotFound(_0x5b62ba,null))[_0xedfe('0x2e')](function(_0x3164e3){if(_0x3164e3){var _0x25a1a0=_0x3164e3['get']({'plain':!![]});_0x25a1a0=qs[_0xedfe('0x5c')](_0x25a1a0,['id','createdAt',_0xedfe('0x5d')]);_0x5c48a6['body']=_['omit'](_0x5c48a6[_0xedfe('0x53')],['id','createdAt','updatedAt']);return db['Dashboard'][_0xedfe('0x52')](_[_0xedfe('0x47')](_0x25a1a0,_0x5c48a6[_0xedfe('0x53')]),{'include':_0x5c48a6[_0xedfe('0x3a')][_0xedfe('0x49')]?[{'all':!![]}]:undefined})[_0xedfe('0x2e')](function(_0x45ab4c){var _0x1429c2=_0x5c48a6['user'][_0xedfe('0x2c')]({'plain':!![]});if(!_0x1429c2)throw new Error(_0xedfe('0x5e'));if(_0x1429c2[_0xedfe('0x54')]==='user'){var _0x271627=_0x45ab4c[_0xedfe('0x2c')]({'plain':!![]});var _0x1f0291=_0xedfe('0x2d');return db[_0xedfe('0x56')][_0xedfe('0x51')]({'where':{'name':_0x1f0291,'userProfileId':_0x1429c2[_0xedfe('0x57')]},'raw':!![]})[_0xedfe('0x2e')](function(_0xf0a417){if(_0xf0a417&&_0xf0a417[_0xedfe('0x58')]===0x0){return db[_0xedfe('0x59')][_0xedfe('0x52')]({'name':_0x271627[_0xedfe('0x31')],'resourceId':_0x271627['id'],'type':_0xf0a417[_0xedfe('0x31')],'sectionId':_0xf0a417['id']},{})[_0xedfe('0x2e')](function(){return _0x45ab4c;});}else{return _0x45ab4c;}})[_0xedfe('0x4d')](function(_0x60694f){logger[_0xedfe('0x30')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x60694f);throw _0x60694f;});}return _0x45ab4c;});}})[_0xedfe('0x2e')](respondWithResult(_0x5b62ba,0xc9))[_0xedfe('0x4d')](handleError(_0x5b62ba,null));};exports[_0xedfe('0x5f')]=function(_0x723fa4,_0x53e12c){if(_0x723fa4['body']['id']){delete _0x723fa4[_0xedfe('0x53')]['id'];}return db[_0xedfe('0x34')][_0xedfe('0x51')]({'where':{'id':_0x723fa4['params']['id']}})[_0xedfe('0x2e')](handleEntityNotFound(_0x53e12c,null))['then'](saveUpdates(_0x723fa4[_0xedfe('0x53')],null))['then'](respondWithResult(_0x53e12c,null))[_0xedfe('0x4d')](handleError(_0x53e12c,null));};exports[_0xedfe('0x2b')]=function(_0x1b55bc,_0x2f2cc4){return db[_0xedfe('0x34')]['find']({'where':{'id':_0x1b55bc['params']['id']}})[_0xedfe('0x2e')](handleEntityNotFound(_0x2f2cc4,null))[_0xedfe('0x2e')](removeEntity(_0x2f2cc4,null))['catch'](handleError(_0x2f2cc4,null));};function widgetAttributes(_0x310dfb){try{switch(_0x310dfb[_0xedfe('0x37')]){case _0xedfe('0x60'):return[{'name':_0xedfe('0x61'),'value':_0x310dfb[_0xedfe('0x61')]||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x0]?_0x310dfb['attrs'][0x0][_0xedfe('0x63')]:undefined)||_0xedfe('0x64')}];case _0xedfe('0x65'):return[{'name':'attrPath','value':_0x310dfb[_0xedfe('0x66')]||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x0]?_0x310dfb[_0xedfe('0x62')][0x0]['value']:undefined)||''}];case _0xedfe('0x67'):return[{'name':'attrHourFormat','value':_0x310dfb['attrHourFormat']||(_0x310dfb['attrs']&&_0x310dfb[_0xedfe('0x62')][0x0]?_0x310dfb[_0xedfe('0x62')][0x0][_0xedfe('0x63')]:undefined)||_0xedfe('0x68')},{'name':_0xedfe('0x69'),'value':_0x310dfb[_0xedfe('0x69')]||(_0x310dfb['attrs']&&_0x310dfb[_0xedfe('0x62')][0x1]?_0x310dfb[_0xedfe('0x62')][0x1][_0xedfe('0x63')]:undefined)||'0.00'},{'name':'attrFontSize','value':_0x310dfb['attrFontSize']||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x2]?_0x310dfb['attrs'][0x2]['value']:undefined)||0xc}];case _0xedfe('0x6a'):return[{'name':_0xedfe('0x6b'),'value':_0x310dfb[_0xedfe('0x6b')]||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x0]?_0x310dfb[_0xedfe('0x62')][0x0][_0xedfe('0x63')]:undefined)||_0xedfe('0x6c')},{'name':_0xedfe('0x6d'),'value':_0x310dfb['attrVoiceQueues']||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x1]?_0x310dfb[_0xedfe('0x62')][0x1][_0xedfe('0x63')]:undefined)||[]},{'name':'attrFontSize','value':_0x310dfb[_0xedfe('0x6e')]||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x2]?_0x310dfb['attrs'][0x2][_0xedfe('0x63')]:undefined)||0x14}];case'multibar-chart':case _0xedfe('0x6f'):return[{'name':_0xedfe('0x70'),'value':_0x310dfb[_0xedfe('0x70')]||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x0]?_0x310dfb[_0xedfe('0x62')][0x0][_0xedfe('0x63')]:undefined)||_0xedfe('0x6c')},{'name':'attrSerie2','value':_0x310dfb['attrSerie2']||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x1]?_0x310dfb[_0xedfe('0x62')][0x1][_0xedfe('0x63')]:undefined)||null},{'name':_0xedfe('0x71'),'value':_0x310dfb[_0xedfe('0x71')]||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x2]?_0x310dfb[_0xedfe('0x62')][0x2][_0xedfe('0x63')]:undefined)||null},{'name':_0xedfe('0x6d'),'value':_0x310dfb['attrVoiceQueues']||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x3]?_0x310dfb[_0xedfe('0x62')][0x3][_0xedfe('0x63')]:undefined)||[]}];case _0xedfe('0x72'):return[{'name':_0xedfe('0x73'),'type':_0x310dfb[_0xedfe('0x74')]||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x0]?_0x310dfb[_0xedfe('0x62')][0x0][_0xedfe('0x37')]:undefined)||null,'value':_0x310dfb[_0xedfe('0x73')]||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb[_0xedfe('0x62')][0x0]?_0x310dfb[_0xedfe('0x62')][0x0][_0xedfe('0x63')]:undefined)||null},{'name':_0xedfe('0x75'),'value':_0x310dfb[_0xedfe('0x75')]||(_0x310dfb[_0xedfe('0x62')]&&_0x310dfb['attrs'][0x1]?_0x310dfb[_0xedfe('0x62')][0x1][_0xedfe('0x63')]:undefined)||0x0}];default:return[];}}catch(_0xfdc185){logger['error']('widgetAttributes:\x20%s',JSON[_0xedfe('0x76')](_0xfdc185));return[];}}exports['addItem']=function(_0xa2410e,_0xb26ca1,_0x1fc83a){if(_0xa2410e[_0xedfe('0x53')]['id']){delete _0xa2410e[_0xedfe('0x53')]['id'];}return db[_0xedfe('0x34')][_0xedfe('0x51')]({'where':{'id':_0xa2410e[_0xedfe('0x4f')]['id']}})[_0xedfe('0x2e')](handleEntityNotFound(_0xb26ca1,null))[_0xedfe('0x2e')](function(_0x4c0cec){if(_0x4c0cec){_0xa2410e[_0xedfe('0x53')][_0xedfe('0x77')]=_0x4c0cec['id'];_0xa2410e['body'][_0xedfe('0x62')]=widgetAttributes(_0xa2410e['body']);return db[_0xedfe('0x78')][_0xedfe('0x52')](_0xa2410e[_0xedfe('0x53')]);}})[_0xedfe('0x2e')](respondWithResult(_0xb26ca1,null))[_0xedfe('0x4d')](handleError(_0xb26ca1,null));};exports[_0xedfe('0x79')]=function(_0x1bf58e,_0x4e7cb2,_0x4583a6){var _0x190861={};var _0x3a566a={};var _0xc27d9e;var _0x140fe5;return db[_0xedfe('0x34')][_0xedfe('0x7a')]({'where':{'id':_0x1bf58e[_0xedfe('0x4f')]['id']}})[_0xedfe('0x2e')](handleEntityNotFound(_0x4e7cb2,null))[_0xedfe('0x2e')](function(_0x51aa28){if(_0x51aa28){_0xc27d9e=_0x51aa28;_0x3a566a[_0xedfe('0x39')]=_[_0xedfe('0x50')](db['DashboardItem'][_0xedfe('0x35')]);_0x3a566a[_0xedfe('0x3a')]=_[_0xedfe('0x50')](_0x1bf58e[_0xedfe('0x3a')]);_0x3a566a['filters']=_['intersection'](_0x3a566a[_0xedfe('0x39')],_0x3a566a['query']);_0x190861['attributes']=_[_0xedfe('0x3c')](_0x3a566a[_0xedfe('0x39')],qs['fields'](_0x1bf58e[_0xedfe('0x3a')][_0xedfe('0x3e')]));_0x190861[_0xedfe('0x3d')]=_0x190861[_0xedfe('0x3d')][_0xedfe('0x5b')]?_0x190861['attributes']:_0x3a566a[_0xedfe('0x39')];_0x190861['order']=qs[_0xedfe('0x43')](_0x1bf58e[_0xedfe('0x3a')][_0xedfe('0x43')]);_0x190861[_0xedfe('0x45')]=qs[_0xedfe('0x3b')](_['pick'](_0x1bf58e[_0xedfe('0x3a')],_0x3a566a['filters']));if(_0x1bf58e[_0xedfe('0x3a')][_0xedfe('0x44')]){_0x190861[_0xedfe('0x45')]=_[_0xedfe('0x47')](_0x190861[_0xedfe('0x45')],{'$or':_[_0xedfe('0x33')](_0x190861[_0xedfe('0x3d')],function(_0x1f131b){var _0x22782e={};_0x22782e[_0x1f131b]={'$like':'%'+_0x1bf58e[_0xedfe('0x3a')][_0xedfe('0x44')]+'%'};return _0x22782e;})});}_0x190861=_['merge']({},_0x190861,_0x1bf58e[_0xedfe('0x48')]);return _0xc27d9e[_0xedfe('0x79')](_0x190861);}})[_0xedfe('0x2e')](function(_0x350021){if(_0x350021){_0x140fe5=_0x350021[_0xedfe('0x5b')];if(!_0x1bf58e[_0xedfe('0x3a')][_0xedfe('0x3f')](_0xedfe('0x40'))){_0x190861[_0xedfe('0x41')]=qs['limit'](_0x1bf58e[_0xedfe('0x3a')][_0xedfe('0x41')]);_0x190861[_0xedfe('0x25')]=qs[_0xedfe('0x25')](_0x1bf58e[_0xedfe('0x3a')][_0xedfe('0x25')]);}return _0xc27d9e[_0xedfe('0x79')](_0x190861);}})[_0xedfe('0x2e')](function(_0x11e52c){if(_0x11e52c){return _0x11e52c?{'count':_0x140fe5,'rows':_0x11e52c}:null;}})['then'](respondWithResult(_0x4e7cb2,null))[_0xedfe('0x4d')](handleError(_0x4e7cb2,null));};
\ No newline at end of file
index 958607e..76b09fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1122=['exports','events','Dashboard','setMaxListeners','save','update','remove','emit','hook'];(function(_0x48f29a,_0x1f9f1a){var _0x467232=function(_0xf1ae7e){while(--_0xf1ae7e){_0x48f29a['push'](_0x48f29a['shift']());}};_0x467232(++_0x1f9f1a);}(_0x1122,0xac));var _0x2112=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1122[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x2112('0x0'));var Dashboard=require('../../mysqldb')['db'][_0x2112('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x2112('0x2')](0x0);var events={'afterCreate':_0x2112('0x3'),'afterUpdate':_0x2112('0x4'),'afterDestroy':_0x2112('0x5')};function emitEvent(_0x4f2bbe){return function(_0x5e16d6,_0x20d49a,_0x4c5a48){DashboardEvents[_0x2112('0x6')](_0x4f2bbe+':'+_0x5e16d6['id'],_0x5e16d6);DashboardEvents[_0x2112('0x6')](_0x4f2bbe,_0x5e16d6);_0x4c5a48(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x2112('0x7')](e,emitEvent(event));}}module[_0x2112('0x8')]=DashboardEvents;
\ No newline at end of file
+var _0xf333=['Dashboard','save','update','emit','hook','events'];(function(_0x147291,_0x2de570){var _0x1904be=function(_0x13a686){while(--_0x13a686){_0x147291['push'](_0x147291['shift']());}};_0x1904be(++_0x2de570);}(_0xf333,0x1cd));var _0x3f33=function(_0x54d3e1,_0x330214){_0x54d3e1=_0x54d3e1-0x0;var _0x178756=_0xf333[_0x54d3e1];return _0x178756;};'use strict';var EventEmitter=require(_0x3f33('0x0'));var Dashboard=require('../../mysqldb')['db'][_0x3f33('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3f33('0x2'),'afterUpdate':_0x3f33('0x3'),'afterDestroy':'remove'};function emitEvent(_0x314d28){return function(_0x584f9c,_0x552609,_0xd3019c){DashboardEvents[_0x3f33('0x4')](_0x314d28+':'+_0x584f9c['id'],_0x584f9c);DashboardEvents[_0x3f33('0x4')](_0x314d28,_0x584f9c);_0xd3019c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x3f33('0x5')](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
index ff50273..0e1b20a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92e2=['../../config/environment','define','Dashboard','dashboards','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x92e2,0x19c));var _0x292e=function(_0x55de81,_0x1ebe60){_0x55de81=_0x55de81-0x0;var _0x21d6e6=_0x92e2[_0x55de81];return _0x21d6e6;};'use strict';var _=require(_0x292e('0x0'));var util=require('util');var logger=require(_0x292e('0x1'))(_0x292e('0x2'));var moment=require(_0x292e('0x3'));var BPromise=require(_0x292e('0x4'));var rp=require(_0x292e('0x5'));var fs=require('fs');var path=require(_0x292e('0x6'));var rimraf=require(_0x292e('0x7'));var config=require(_0x292e('0x8'));var attributes=require('./dashboard.attributes');module['exports']=function(_0x438572,_0x4aba1e){return _0x438572[_0x292e('0x9')](_0x292e('0xa'),attributes,{'tableName':_0x292e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaebe=['path','rimraf','./dashboard.attributes','exports','define','dashboards','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0xaebe,0xed));var _0xeaeb=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xaebe[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xeaeb('0x0'));var util=require(_0xeaeb('0x1'));var logger=require(_0xeaeb('0x2'))('api');var moment=require('moment');var BPromise=require(_0xeaeb('0x3'));var rp=require(_0xeaeb('0x4'));var fs=require('fs');var path=require(_0xeaeb('0x5'));var rimraf=require(_0xeaeb('0x6'));var config=require('../../config/environment');var attributes=require(_0xeaeb('0x7'));module[_0xeaeb('0x8')]=function(_0x2d542c,_0x1a1a6c){return _0x2d542c[_0xeaeb('0x9')]('Dashboard',attributes,{'tableName':_0xeaeb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b231af5..688b3ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xade7=['lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','error','message','result','catch'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0xade7,0xd8));var _0x7ade=function(_0x285db,_0x4f4926){_0x285db=_0x285db-0x0;var _0x2ebec6=_0xade7[_0x285db];return _0x2ebec6;};'use strict';var _=require(_0x7ade('0x0'));var util=require(_0x7ade('0x1'));var moment=require('moment');var BPromise=require(_0x7ade('0x2'));var rs=require(_0x7ade('0x3'));var fs=require('fs');var Redis=require(_0x7ade('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7ade('0x5'))(_0x7ade('0x6'));var config=require('../../config/environment');var jayson=require(_0x7ade('0x7'));var client=jayson[_0x7ade('0x8')][_0x7ade('0x9')]({'port':0x232a});config[_0x7ade('0xa')]=_[_0x7ade('0xb')](config[_0x7ade('0xa')],{'host':_0x7ade('0xc'),'port':0x18eb});var socket=require(_0x7ade('0xd'))(new Redis(config[_0x7ade('0xa')]));require(_0x7ade('0xe'))[_0x7ade('0xf')](socket);function respondWithRpcPromise(_0x53785f,_0x15b9c5,_0x49e407){return new BPromise(function(_0x533882,_0x43293c){return client[_0x7ade('0x10')](_0x53785f,_0x49e407)[_0x7ade('0x11')](function(_0x20afdd){logger[_0x7ade('0x12')](_0x7ade('0x13'),_0x15b9c5,_0x7ade('0x14'));logger[_0x7ade('0x15')](_0x7ade('0x16'),_0x15b9c5,'request\x20sent',JSON['stringify'](_0x20afdd));if(_0x20afdd[_0x7ade('0x17')]){if(_0x20afdd['error']['code']===0x1f4){logger[_0x7ade('0x17')](_0x7ade('0x13'),_0x15b9c5,_0x20afdd[_0x7ade('0x17')][_0x7ade('0x18')]);return _0x43293c(_0x20afdd['error'][_0x7ade('0x18')]);}logger[_0x7ade('0x17')]('Dashboard,\x20%s,\x20%s',_0x15b9c5,_0x20afdd[_0x7ade('0x17')]['message']);return _0x533882(_0x20afdd[_0x7ade('0x17')]['message']);}else{logger[_0x7ade('0x12')]('Dashboard,\x20%s,\x20%s',_0x15b9c5,_0x7ade('0x14'));_0x533882(_0x20afdd[_0x7ade('0x19')][_0x7ade('0x18')]);}})[_0x7ade('0x1a')](function(_0x312269){logger[_0x7ade('0x17')]('Dashboard,\x20%s,\x20%s',_0x15b9c5,_0x312269);_0x43293c(_0x312269);});});}
\ No newline at end of file
+var _0x92b3=['../../config/environment','client','http','redis','defaults','localhost','./dashboard.socket','register','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x528804,_0x1a3f9d){var _0x234f79=function(_0x458f13){while(--_0x458f13){_0x528804['push'](_0x528804['shift']());}};_0x234f79(++_0x1a3f9d);}(_0x92b3,0x9f));var _0x392b=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0x92b3[_0x5447fd];return _0x15b28a;};'use strict';var _=require(_0x392b('0x0'));var util=require(_0x392b('0x1'));var moment=require(_0x392b('0x2'));var BPromise=require(_0x392b('0x3'));var rs=require(_0x392b('0x4'));var fs=require('fs');var Redis=require(_0x392b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x392b('0x6'));var logger=require(_0x392b('0x7'))(_0x392b('0x8'));var config=require(_0x392b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x392b('0xa')][_0x392b('0xb')]({'port':0x232a});config[_0x392b('0xc')]=_[_0x392b('0xd')](config[_0x392b('0xc')],{'host':_0x392b('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x392b('0xc')]));require(_0x392b('0xf'))[_0x392b('0x10')](socket);function respondWithRpcPromise(_0x1cf052,_0x40c9dd,_0x252aae){return new BPromise(function(_0x4b02de,_0xb1c446){return client[_0x392b('0x11')](_0x1cf052,_0x252aae)[_0x392b('0x12')](function(_0x42391c){logger[_0x392b('0x13')](_0x392b('0x14'),_0x40c9dd,_0x392b('0x15'));logger[_0x392b('0x16')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x40c9dd,'request\x20sent',JSON[_0x392b('0x17')](_0x42391c));if(_0x42391c['error']){if(_0x42391c[_0x392b('0x18')][_0x392b('0x19')]===0x1f4){logger['error'](_0x392b('0x14'),_0x40c9dd,_0x42391c[_0x392b('0x18')][_0x392b('0x1a')]);return _0xb1c446(_0x42391c['error']['message']);}logger[_0x392b('0x18')](_0x392b('0x14'),_0x40c9dd,_0x42391c[_0x392b('0x18')]['message']);return _0x4b02de(_0x42391c[_0x392b('0x18')][_0x392b('0x1a')]);}else{logger[_0x392b('0x13')](_0x392b('0x14'),_0x40c9dd,_0x392b('0x15'));_0x4b02de(_0x42391c['result'][_0x392b('0x1a')]);}})[_0x392b('0x1b')](function(_0x586103){logger['error'](_0x392b('0x14'),_0x40c9dd,_0x586103);_0xb1c446(_0x586103);});});}
\ No newline at end of file
index 3f975bd..dc58583 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f18=['remove','update','emit','register','length','dashboard:','./dashboard.events','save'];(function(_0x239dba,_0x309e95){var _0x1ceb11=function(_0x14efe6){while(--_0x14efe6){_0x239dba['push'](_0x239dba['shift']());}};_0x1ceb11(++_0x309e95);}(_0x7f18,0x9e));var _0x87f1=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0x7f18[_0x1f9f37];return _0x21c080;};'use strict';var DashboardEvents=require(_0x87f1('0x0'));var events=[_0x87f1('0x1'),_0x87f1('0x2'),_0x87f1('0x3')];function createListener(_0x5b663f,_0x472013){return function(_0x57504f){_0x472013[_0x87f1('0x4')](_0x5b663f,_0x57504f);};}function removeListener(_0x567fd5,_0x38f6ed){return function(){DashboardEvents['removeListener'](_0x567fd5,_0x38f6ed);};}exports[_0x87f1('0x5')]=function(_0x23e0c3){for(var _0x5d4c5a=0x0,_0x27471f=events[_0x87f1('0x6')];_0x5d4c5a<_0x27471f;_0x5d4c5a++){var _0x5e43c9=events[_0x5d4c5a];var _0x5671b4=createListener(_0x87f1('0x7')+_0x5e43c9,_0x23e0c3);DashboardEvents['on'](_0x5e43c9,_0x5671b4);}};
\ No newline at end of file
+var _0x8e82=['remove','emit','removeListener','register','length','dashboard:','save'];(function(_0xa05818,_0x4d852f){var _0x19f547=function(_0x3d315f){while(--_0x3d315f){_0xa05818['push'](_0xa05818['shift']());}};_0x19f547(++_0x4d852f);}(_0x8e82,0xc3));var _0x28e8=function(_0x5b1b13,_0x1a6356){_0x5b1b13=_0x5b1b13-0x0;var _0x2d7ea3=_0x8e82[_0x5b1b13];return _0x2d7ea3;};'use strict';var DashboardEvents=require('./dashboard.events');var events=[_0x28e8('0x0'),_0x28e8('0x1'),'update'];function createListener(_0x464640,_0x5b9b59){return function(_0x9e92ef){_0x5b9b59[_0x28e8('0x2')](_0x464640,_0x9e92ef);};}function removeListener(_0x48e2a8,_0x5cc017){return function(){DashboardEvents[_0x28e8('0x3')](_0x48e2a8,_0x5cc017);};}exports[_0x28e8('0x4')]=function(_0x3cb0f2){for(var _0x1aaa16=0x0,_0x8d9ba5=events[_0x28e8('0x5')];_0x1aaa16<_0x8d9ba5;_0x1aaa16++){var _0x255e51=events[_0x1aaa16];var _0x25faa1=createListener(_0x28e8('0x6')+_0x255e51,_0x3cb0f2);DashboardEvents['on'](_0x255e51,_0x25faa1);}};
\ No newline at end of file
index 336fcb2..841b86a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe530=['delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./dashboard.controller','index','/:id','show','get','getItems','post','isAuthenticated','clone','addItem','put','update'];(function(_0x3ed9ad,_0x18fddd){var _0x5bfb0f=function(_0x38db6f){while(--_0x38db6f){_0x3ed9ad['push'](_0x3ed9ad['shift']());}};_0x5bfb0f(++_0x18fddd);}(_0xe530,0x1a5));var _0x0e53=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xe530[_0x3e5086];return _0xfeb102;};'use strict';var multer=require(_0x0e53('0x0'));var util=require('util');var path=require(_0x0e53('0x1'));var timeout=require('connect-timeout');var express=require(_0x0e53('0x2'));var router=express[_0x0e53('0x3')]();var fs_extra=require(_0x0e53('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0e53('0x5'));var config=require(_0x0e53('0x6'));var controller=require(_0x0e53('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x0e53('0x8')]);router['get'](_0x0e53('0x9'),auth['isAuthenticated'](),controller[_0x0e53('0xa')]);router[_0x0e53('0xb')]('/:id/items',auth['isAuthenticated'](),controller[_0x0e53('0xc')]);router[_0x0e53('0xd')]('/',auth[_0x0e53('0xe')](),controller['create']);router[_0x0e53('0xd')]('/:id/clone',auth[_0x0e53('0xe')](),controller[_0x0e53('0xf')]);router[_0x0e53('0xd')]('/:id/items',auth[_0x0e53('0xe')](),controller[_0x0e53('0x10')]);router[_0x0e53('0x11')](_0x0e53('0x9'),auth[_0x0e53('0xe')](),controller[_0x0e53('0x12')]);router[_0x0e53('0x13')](_0x0e53('0x9'),auth[_0x0e53('0xe')](),controller[_0x0e53('0x14')]);module[_0x0e53('0x15')]=router;
\ No newline at end of file
+var _0x01ec=['index','show','get','/:id/items','getItems','post','/:id/clone','clone','put','/:id','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated'];(function(_0x161387,_0x14de29){var _0xf39c6b=function(_0x184138){while(--_0x184138){_0x161387['push'](_0x161387['shift']());}};_0xf39c6b(++_0x14de29);}(_0x01ec,0xbc));var _0xc01e=function(_0x4f57f1,_0x4f2ba3){_0x4f57f1=_0x4f57f1-0x0;var _0x1d1101=_0x01ec[_0x4f57f1];return _0x1d1101;};'use strict';var multer=require(_0xc01e('0x0'));var util=require(_0xc01e('0x1'));var path=require(_0xc01e('0x2'));var timeout=require(_0xc01e('0x3'));var express=require(_0xc01e('0x4'));var router=express[_0xc01e('0x5')]();var fs_extra=require(_0xc01e('0x6'));var auth=require(_0xc01e('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xc01e('0x8'));var controller=require('./dashboard.controller');router['get']('/',auth[_0xc01e('0x9')](),controller[_0xc01e('0xa')]);router['get']('/:id',auth[_0xc01e('0x9')](),controller[_0xc01e('0xb')]);router[_0xc01e('0xc')](_0xc01e('0xd'),auth[_0xc01e('0x9')](),controller[_0xc01e('0xe')]);router[_0xc01e('0xf')]('/',auth[_0xc01e('0x9')](),controller['create']);router[_0xc01e('0xf')](_0xc01e('0x10'),auth[_0xc01e('0x9')](),controller[_0xc01e('0x11')]);router['post'](_0xc01e('0xd'),auth[_0xc01e('0x9')](),controller['addItem']);router[_0xc01e('0x12')](_0xc01e('0x13'),auth[_0xc01e('0x9')](),controller[_0xc01e('0x14')]);router[_0xc01e('0x15')](_0xc01e('0x13'),auth[_0xc01e('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 70ef726..94ad226 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['squel','lodash','exports','STRING','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','sequelize'];(function(_0x594624,_0x181b4f){var _0x1fd710=function(_0x19bcd2){while(--_0x19bcd2){_0x594624['push'](_0x594624['shift']());}};_0x1fd710(++_0x181b4f);}(_0x9536,0x179));var _0x6953=function(_0x2df724,_0x411382){_0x2df724=_0x2df724-0x0;var _0x1b2504=_0x9536[_0x2df724];return _0x1b2504;};'use strict';var Sequelize=require(_0x6953('0x0'));var squel=require(_0x6953('0x1'));var _=require(_0x6953('0x2'));module[_0x6953('0x3')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6953('0x4')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT'](_0x6953('0x5')),'get':function(){try{return JSON[_0x6953('0x6')](this[_0x6953('0x7')](_0x6953('0x8')));}catch(_0x2f3cc3){return[];}},'set':function(_0x494ac2){try{this[_0x6953('0x9')](_0x6953('0x8'),JSON[_0x6953('0xa')](_0x494ac2));}catch(_0x3e1aff){this[_0x6953('0x9')]('attrs',JSON[_0x6953('0xa')]([]));}}},'sizeX':{'type':Sequelize[_0x6953('0xb')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x6953('0xb')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0x6953('0xb')]},'background':{'type':Sequelize[_0x6953('0x4')],'allowNull':![],'defaultValue':_0x6953('0xc'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x6953('0x4')],'allowNull':![],'defaultValue':_0x6953('0xd'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x6953('0x4')]},'titleFontSize':{'type':Sequelize[_0x6953('0xb')],'defaultValue':0xc}};
\ No newline at end of file
+var _0xeff8=['sequelize','squel','exports','STRING','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3'];(function(_0x4a79dd,_0x1e4a7e){var _0x49a8a8=function(_0x57d160){while(--_0x57d160){_0x4a79dd['push'](_0x4a79dd['shift']());}};_0x49a8a8(++_0x1e4a7e);}(_0xeff8,0x186));var _0x8eff=function(_0x34eb31,_0x8f0f70){_0x34eb31=_0x34eb31-0x0;var _0x254994=_0xeff8[_0x34eb31];return _0x254994;};'use strict';var Sequelize=require(_0x8eff('0x0'));var squel=require(_0x8eff('0x1'));var _=require('lodash');module[_0x8eff('0x2')]={'title':{'type':Sequelize[_0x8eff('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x8eff('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT'](_0x8eff('0x4')),'get':function(){try{return JSON[_0x8eff('0x5')](this[_0x8eff('0x6')](_0x8eff('0x7')));}catch(_0x4ac51c){return[];}},'set':function(_0x469641){try{this[_0x8eff('0x8')](_0x8eff('0x7'),JSON[_0x8eff('0x9')](_0x469641));}catch(_0x491f01){this[_0x8eff('0x8')](_0x8eff('0x7'),JSON[_0x8eff('0x9')]([]));}}},'sizeX':{'type':Sequelize[_0x8eff('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0x8eff('0xa')]},'background':{'type':Sequelize[_0x8eff('0x3')],'allowNull':![],'defaultValue':_0x8eff('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8eff('0xc'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x8eff('0x3')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
index c548121..bf6249f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e51=['value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','find','eml-format','rimraf','moment','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','end','undefined','limit','count','offset','Content-Range','json','apply','save','update','then','destroy','status','stack','name','send','show','params','keys','DashboardItem','rawAttributes','query','filters','intersection','attributes','model','fields','includeAll','include','merge','options','catch','type','iframe','attrUrl','attrs'];(function(_0x315a23,_0x337b59){var _0x524945=function(_0x55074d){while(--_0x55074d){_0x315a23['push'](_0x315a23['shift']());}};_0x524945(++_0x337b59);}(_0x7e51,0x1d1));var _0x17e5=function(_0x24d562,_0x570f65){_0x24d562=_0x24d562-0x0;var _0x478496=_0x7e51[_0x24d562];return _0x478496;};'use strict';var emlformat=require(_0x17e5('0x0'));var rimraf=require(_0x17e5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x17e5('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x17e5('0x3'));var sox=require(_0x17e5('0x4'));var csv=require(_0x17e5('0x5'));var ejs=require(_0x17e5('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x17e5('0x7'));var squel=require(_0x17e5('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x17e5('0x9'));var toCsv=require('to-csv');var querystring=require(_0x17e5('0xa'));var Papa=require('papaparse');var Redis=require(_0x17e5('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x17e5('0xc'));var as=require(_0x17e5('0xd'));var hardwareService=require(_0x17e5('0xe'));var logger=require(_0x17e5('0xf'))(_0x17e5('0x10'));var utils=require(_0x17e5('0x11'));var config=require(_0x17e5('0x12'));var licenseUtil=require(_0x17e5('0x13'));var db=require('../../mysqldb')['db'];config[_0x17e5('0x14')]=_[_0x17e5('0x15')](config[_0x17e5('0x14')],{'host':_0x17e5('0x16'),'port':0x18eb});var socket=require(_0x17e5('0x17'))(new Redis(config[_0x17e5('0x14')]));require(_0x17e5('0x18'))[_0x17e5('0x19')](socket);function respondWithStatusCode(_0x3ae01c,_0x342a3d){_0x342a3d=_0x342a3d||0xcc;return function(_0x3cce10){if(_0x3cce10){return _0x3ae01c[_0x17e5('0x1a')](_0x342a3d);}return _0x3ae01c['status'](_0x342a3d)[_0x17e5('0x1b')]();};}function respondWithResult(_0x11f109,_0xc17ed2){_0xc17ed2=_0xc17ed2||0xc8;return function(_0x372f4d){if(_0x372f4d){return _0x11f109['status'](_0xc17ed2)['json'](_0x372f4d);}};}function respondWithFilteredResult(_0x366c88,_0x3ff561){return function(_0x4147bd){if(_0x4147bd){var _0x58c4c0=typeof _0x3ff561['offset']===_0x17e5('0x1c')&&typeof _0x3ff561[_0x17e5('0x1d')]===_0x17e5('0x1c');var _0x531d5d=_0x4147bd[_0x17e5('0x1e')];var _0x1e2445=_0x58c4c0?0x0:_0x3ff561[_0x17e5('0x1f')];var _0x330a0f=_0x58c4c0?_0x4147bd['count']:_0x3ff561['offset']+_0x3ff561[_0x17e5('0x1d')];var _0x8f1d76;if(_0x330a0f>=_0x531d5d){_0x330a0f=_0x531d5d;_0x8f1d76=0xc8;}else{_0x8f1d76=0xce;}_0x366c88['status'](_0x8f1d76);return _0x366c88['set'](_0x17e5('0x20'),_0x1e2445+'-'+_0x330a0f+'/'+_0x531d5d)[_0x17e5('0x21')](_0x4147bd);}return null;};}function patchUpdates(_0x24b2f2){return function(_0x581a98){try{jsonpatch[_0x17e5('0x22')](_0x581a98,_0x24b2f2,!![]);}catch(_0x4a09c4){return BPromise['reject'](_0x4a09c4);}return _0x581a98[_0x17e5('0x23')]();};}function saveUpdates(_0xf327f9,_0x2cffa2){return function(_0x6ff9d9){if(_0x6ff9d9){return _0x6ff9d9[_0x17e5('0x24')](_0xf327f9)[_0x17e5('0x25')](function(_0x116a5e){return _0x116a5e;});}return null;};}function removeEntity(_0x51033e,_0x23626c){return function(_0x50713f){if(_0x50713f){return _0x50713f[_0x17e5('0x26')]()[_0x17e5('0x25')](function(){_0x51033e[_0x17e5('0x27')](0xcc)[_0x17e5('0x1b')]();});}};}function handleEntityNotFound(_0x48ffe5,_0x51c730){return function(_0x4b4190){if(!_0x4b4190){_0x48ffe5['sendStatus'](0x194);}return _0x4b4190;};}function handleError(_0x5cd054,_0x4d46b2){_0x4d46b2=_0x4d46b2||0x1f4;return function(_0x33700b){logger['error'](_0x33700b[_0x17e5('0x28')]);if(_0x33700b[_0x17e5('0x29')]){delete _0x33700b[_0x17e5('0x29')];}_0x5cd054['status'](_0x4d46b2)[_0x17e5('0x2a')](_0x33700b);};}exports[_0x17e5('0x2b')]=function(_0x1dbefc,_0x31a586){var _0x569b0b={'raw':![],'where':{'id':_0x1dbefc[_0x17e5('0x2c')]['id']}},_0x23f3ac={};_0x23f3ac['model']=_[_0x17e5('0x2d')](db[_0x17e5('0x2e')][_0x17e5('0x2f')]);_0x23f3ac['query']=_['keys'](_0x1dbefc[_0x17e5('0x30')]);_0x23f3ac[_0x17e5('0x31')]=_[_0x17e5('0x32')](_0x23f3ac['model'],_0x23f3ac[_0x17e5('0x30')]);_0x569b0b[_0x17e5('0x33')]=_[_0x17e5('0x32')](_0x23f3ac[_0x17e5('0x34')],qs['fields'](_0x1dbefc[_0x17e5('0x30')][_0x17e5('0x35')]));_0x569b0b[_0x17e5('0x33')]=_0x569b0b[_0x17e5('0x33')]['length']?_0x569b0b[_0x17e5('0x33')]:_0x23f3ac[_0x17e5('0x34')];if(_0x1dbefc[_0x17e5('0x30')][_0x17e5('0x36')]){_0x569b0b[_0x17e5('0x37')]=[{'all':!![]}];}_0x569b0b=_[_0x17e5('0x38')]({},_0x569b0b,_0x1dbefc[_0x17e5('0x39')]);return db[_0x17e5('0x2e')]['find'](_0x569b0b)[_0x17e5('0x25')](handleEntityNotFound(_0x31a586,null))['then'](respondWithResult(_0x31a586,null))[_0x17e5('0x3a')](handleError(_0x31a586,null));};exports[_0x17e5('0x26')]=function(_0x255841,_0x575088){return db[_0x17e5('0x2e')]['find']({'where':{'id':_0x255841[_0x17e5('0x2c')]['id']}})[_0x17e5('0x25')](handleEntityNotFound(_0x575088,null))['then'](removeEntity(_0x575088,null))[_0x17e5('0x3a')](handleError(_0x575088,null));};function widgetAttributes(_0xa47aae){try{switch(_0xa47aae[_0x17e5('0x3b')]){case _0x17e5('0x3c'):return[{'name':_0x17e5('0x3d'),'value':_0xa47aae['attrUrl']||(_0xa47aae['attrs']&&_0xa47aae[_0x17e5('0x3e')][0x0]?_0xa47aae[_0x17e5('0x3e')][0x0][_0x17e5('0x3f')]:undefined)||_0x17e5('0x40')}];case'custom':return[{'name':_0x17e5('0x41'),'value':_0xa47aae[_0x17e5('0x41')]||(_0xa47aae[_0x17e5('0x3e')]&&_0xa47aae[_0x17e5('0x3e')][0x0]?_0xa47aae[_0x17e5('0x3e')][0x0][_0x17e5('0x3f')]:undefined)||''}];case _0x17e5('0x42'):return[{'name':_0x17e5('0x43'),'value':_0xa47aae[_0x17e5('0x43')]||(_0xa47aae[_0x17e5('0x3e')]&&_0xa47aae[_0x17e5('0x3e')][0x0]?_0xa47aae[_0x17e5('0x3e')][0x0][_0x17e5('0x3f')]:undefined)||_0x17e5('0x44')},{'name':_0x17e5('0x45'),'value':_0xa47aae[_0x17e5('0x45')]||(_0xa47aae['attrs']&&_0xa47aae[_0x17e5('0x3e')][0x1]?_0xa47aae['attrs'][0x1][_0x17e5('0x3f')]:undefined)||_0x17e5('0x46')},{'name':_0x17e5('0x47'),'value':_0xa47aae[_0x17e5('0x47')]||(_0xa47aae[_0x17e5('0x3e')]&&_0xa47aae[_0x17e5('0x3e')][0x2]?_0xa47aae[_0x17e5('0x3e')][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':_0x17e5('0x48'),'value':_0xa47aae[_0x17e5('0x48')]||(_0xa47aae['attrs']&&_0xa47aae[_0x17e5('0x3e')][0x0]?_0xa47aae[_0x17e5('0x3e')][0x0][_0x17e5('0x3f')]:undefined)||_0x17e5('0x49')},{'name':_0x17e5('0x4a'),'value':_0xa47aae[_0x17e5('0x4a')]||(_0xa47aae[_0x17e5('0x3e')]&&_0xa47aae[_0x17e5('0x3e')][0x1]?_0xa47aae[_0x17e5('0x3e')][0x1][_0x17e5('0x3f')]:undefined)||[]},{'name':'attrFontSize','value':_0xa47aae[_0x17e5('0x47')]||(_0xa47aae[_0x17e5('0x3e')]&&_0xa47aae[_0x17e5('0x3e')][0x2]?_0xa47aae[_0x17e5('0x3e')][0x2]['value']:undefined)||0x14}];case _0x17e5('0x4b'):case _0x17e5('0x4c'):return[{'name':_0x17e5('0x4d'),'value':_0xa47aae[_0x17e5('0x4d')]||(_0xa47aae[_0x17e5('0x3e')]&&_0xa47aae[_0x17e5('0x3e')][0x0]?_0xa47aae[_0x17e5('0x3e')][0x0][_0x17e5('0x3f')]:undefined)||_0x17e5('0x49')},{'name':'attrSerie2','value':_0xa47aae[_0x17e5('0x4e')]||(_0xa47aae['attrs']&&_0xa47aae[_0x17e5('0x3e')][0x1]?_0xa47aae[_0x17e5('0x3e')][0x1]['value']:undefined)||null},{'name':_0x17e5('0x4f'),'value':_0xa47aae[_0x17e5('0x4f')]||(_0xa47aae[_0x17e5('0x3e')]&&_0xa47aae[_0x17e5('0x3e')][0x2]?_0xa47aae[_0x17e5('0x3e')][0x2]['value']:undefined)||null},{'name':_0x17e5('0x4a'),'value':_0xa47aae[_0x17e5('0x4a')]||(_0xa47aae[_0x17e5('0x3e')]&&_0xa47aae[_0x17e5('0x3e')][0x3]?_0xa47aae[_0x17e5('0x3e')][0x3][_0x17e5('0x3f')]:undefined)||[]}];case'web-report':return[{'name':_0x17e5('0x50'),'type':_0xa47aae[_0x17e5('0x51')]||(_0xa47aae[_0x17e5('0x3e')]&&_0xa47aae[_0x17e5('0x3e')][0x0]?_0xa47aae['attrs'][0x0]['type']:undefined)||null,'value':_0xa47aae['attrReport']||(_0xa47aae[_0x17e5('0x3e')]&&_0xa47aae[_0x17e5('0x3e')][0x0]?_0xa47aae[_0x17e5('0x3e')][0x0]['value']:undefined)||null},{'name':_0x17e5('0x52'),'value':_0xa47aae[_0x17e5('0x52')]||(_0xa47aae[_0x17e5('0x3e')]&&_0xa47aae['attrs'][0x1]?_0xa47aae[_0x17e5('0x3e')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x48a6f5){logger['error'](_0x17e5('0x53'),JSON[_0x17e5('0x54')](_0x48a6f5));return[];}}exports[_0x17e5('0x55')]=function(_0x880975,_0x3190c1){if(_0x880975[_0x17e5('0x56')]){_0x880975['body'][_0x17e5('0x3e')]=widgetAttributes(_0x880975['body']);}return db['DashboardItem'][_0x17e5('0x55')](_0x880975[_0x17e5('0x56')],{})['then'](respondWithResult(_0x3190c1,0xc9))[_0x17e5('0x3a')](handleError(_0x3190c1,null));};exports[_0x17e5('0x24')]=function(_0x2769bb,_0x1da5fc){if(_0x2769bb[_0x17e5('0x56')]['id']){delete _0x2769bb[_0x17e5('0x56')]['id'];}_0x2769bb[_0x17e5('0x56')][_0x17e5('0x3e')]=widgetAttributes(_0x2769bb[_0x17e5('0x56')]);return db[_0x17e5('0x2e')][_0x17e5('0x57')]({'where':{'id':_0x2769bb[_0x17e5('0x2c')]['id']}})[_0x17e5('0x25')](handleEntityNotFound(_0x1da5fc,null))['then'](saveUpdates(_0x2769bb[_0x17e5('0x56')],null))[_0x17e5('0x25')](respondWithResult(_0x1da5fc,null))[_0x17e5('0x3a')](handleError(_0x1da5fc,null));};
\ No newline at end of file
+var _0xf0ad=['body','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/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','reject','update','destroy','then','error','stack','name','params','rawAttributes','query','intersection','model','fields','attributes','length','includeAll','merge','options','DashboardItem','find','catch','type','iframe','attrs','value','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','attrMetric','attrVoiceQueues','attrSerie1','total','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','create'];(function(_0x508685,_0x9f94af){var _0x976a76=function(_0x1bcb05){while(--_0x1bcb05){_0x508685['push'](_0x508685['shift']());}};_0x976a76(++_0x9f94af);}(_0xf0ad,0xfd));var _0xdf0a=function(_0x3e6729,_0x16d4af){_0x3e6729=_0x3e6729-0x0;var _0x535bcd=_0xf0ad[_0x3e6729];return _0x535bcd;};'use strict';var emlformat=require(_0xdf0a('0x0'));var rimraf=require(_0xdf0a('0x1'));var zipdir=require(_0xdf0a('0x2'));var jsonpatch=require(_0xdf0a('0x3'));var rp=require(_0xdf0a('0x4'));var moment=require(_0xdf0a('0x5'));var BPromise=require(_0xdf0a('0x6'));var Mustache=require(_0xdf0a('0x7'));var util=require(_0xdf0a('0x8'));var path=require(_0xdf0a('0x9'));var sox=require(_0xdf0a('0xa'));var csv=require(_0xdf0a('0xb'));var ejs=require(_0xdf0a('0xc'));var fs=require('fs');var fs_extra=require(_0xdf0a('0xd'));var _=require(_0xdf0a('0xe'));var squel=require('squel');var crypto=require(_0xdf0a('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xdf0a('0x10'));var toCsv=require(_0xdf0a('0xb'));var querystring=require(_0xdf0a('0x11'));var Papa=require('papaparse');var Redis=require(_0xdf0a('0x12'));var authService=require(_0xdf0a('0x13'));var qs=require(_0xdf0a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xdf0a('0x15'))(_0xdf0a('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xdf0a('0x17'))['db'];config[_0xdf0a('0x18')]=_[_0xdf0a('0x19')](config[_0xdf0a('0x18')],{'host':_0xdf0a('0x1a'),'port':0x18eb});var socket=require(_0xdf0a('0x1b'))(new Redis(config[_0xdf0a('0x18')]));require('./dashboardItem.socket')[_0xdf0a('0x1c')](socket);function respondWithStatusCode(_0x37c90e,_0x2e5ddd){_0x2e5ddd=_0x2e5ddd||0xcc;return function(_0x4318b6){if(_0x4318b6){return _0x37c90e[_0xdf0a('0x1d')](_0x2e5ddd);}return _0x37c90e['status'](_0x2e5ddd)[_0xdf0a('0x1e')]();};}function respondWithResult(_0x4b7bb5,_0x106eff){_0x106eff=_0x106eff||0xc8;return function(_0x171d1e){if(_0x171d1e){return _0x4b7bb5[_0xdf0a('0x1f')](_0x106eff)[_0xdf0a('0x20')](_0x171d1e);}};}function respondWithFilteredResult(_0x211055,_0x5232ce){return function(_0x5c61c7){if(_0x5c61c7){var _0x35b724=typeof _0x5232ce['offset']===_0xdf0a('0x21')&&typeof _0x5232ce['limit']==='undefined';var _0x45115f=_0x5c61c7[_0xdf0a('0x22')];var _0x5cb461=_0x35b724?0x0:_0x5232ce[_0xdf0a('0x23')];var _0x117600=_0x35b724?_0x5c61c7[_0xdf0a('0x22')]:_0x5232ce[_0xdf0a('0x23')]+_0x5232ce[_0xdf0a('0x24')];var _0x5cb66d;if(_0x117600>=_0x45115f){_0x117600=_0x45115f;_0x5cb66d=0xc8;}else{_0x5cb66d=0xce;}_0x211055[_0xdf0a('0x1f')](_0x5cb66d);return _0x211055[_0xdf0a('0x25')](_0xdf0a('0x26'),_0x5cb461+'-'+_0x117600+'/'+_0x45115f)[_0xdf0a('0x20')](_0x5c61c7);}return null;};}function patchUpdates(_0x422e8c){return function(_0x16a9d2){try{jsonpatch['apply'](_0x16a9d2,_0x422e8c,!![]);}catch(_0x55838e){return BPromise[_0xdf0a('0x27')](_0x55838e);}return _0x16a9d2['save']();};}function saveUpdates(_0x337150,_0x1e7610){return function(_0x5ee59b){if(_0x5ee59b){return _0x5ee59b[_0xdf0a('0x28')](_0x337150)['then'](function(_0x16c992){return _0x16c992;});}return null;};}function removeEntity(_0x2d79f3,_0x18beed){return function(_0x5ca91c){if(_0x5ca91c){return _0x5ca91c[_0xdf0a('0x29')]()[_0xdf0a('0x2a')](function(){_0x2d79f3['status'](0xcc)[_0xdf0a('0x1e')]();});}};}function handleEntityNotFound(_0x654d98,_0x1c7a84){return function(_0x572fab){if(!_0x572fab){_0x654d98['sendStatus'](0x194);}return _0x572fab;};}function handleError(_0x937cc2,_0x333fa8){_0x333fa8=_0x333fa8||0x1f4;return function(_0x45cc72){logger[_0xdf0a('0x2b')](_0x45cc72[_0xdf0a('0x2c')]);if(_0x45cc72[_0xdf0a('0x2d')]){delete _0x45cc72['name'];}_0x937cc2[_0xdf0a('0x1f')](_0x333fa8)['send'](_0x45cc72);};}exports['show']=function(_0x133fab,_0x3cae02){var _0x3eeb42={'raw':![],'where':{'id':_0x133fab[_0xdf0a('0x2e')]['id']}},_0x1505f1={};_0x1505f1['model']=_['keys'](db['DashboardItem'][_0xdf0a('0x2f')]);_0x1505f1[_0xdf0a('0x30')]=_['keys'](_0x133fab['query']);_0x1505f1['filters']=_[_0xdf0a('0x31')](_0x1505f1[_0xdf0a('0x32')],_0x1505f1[_0xdf0a('0x30')]);_0x3eeb42['attributes']=_['intersection'](_0x1505f1[_0xdf0a('0x32')],qs['fields'](_0x133fab[_0xdf0a('0x30')][_0xdf0a('0x33')]));_0x3eeb42[_0xdf0a('0x34')]=_0x3eeb42['attributes'][_0xdf0a('0x35')]?_0x3eeb42[_0xdf0a('0x34')]:_0x1505f1['model'];if(_0x133fab[_0xdf0a('0x30')][_0xdf0a('0x36')]){_0x3eeb42['include']=[{'all':!![]}];}_0x3eeb42=_[_0xdf0a('0x37')]({},_0x3eeb42,_0x133fab[_0xdf0a('0x38')]);return db[_0xdf0a('0x39')][_0xdf0a('0x3a')](_0x3eeb42)[_0xdf0a('0x2a')](handleEntityNotFound(_0x3cae02,null))[_0xdf0a('0x2a')](respondWithResult(_0x3cae02,null))[_0xdf0a('0x3b')](handleError(_0x3cae02,null));};exports[_0xdf0a('0x29')]=function(_0x4ed9c1,_0x2490f9){return db['DashboardItem']['find']({'where':{'id':_0x4ed9c1['params']['id']}})[_0xdf0a('0x2a')](handleEntityNotFound(_0x2490f9,null))[_0xdf0a('0x2a')](removeEntity(_0x2490f9,null))[_0xdf0a('0x3b')](handleError(_0x2490f9,null));};function widgetAttributes(_0x2d9dc3){try{switch(_0x2d9dc3[_0xdf0a('0x3c')]){case _0xdf0a('0x3d'):return[{'name':'attrUrl','value':_0x2d9dc3['attrUrl']||(_0x2d9dc3['attrs']&&_0x2d9dc3[_0xdf0a('0x3e')][0x0]?_0x2d9dc3[_0xdf0a('0x3e')][0x0][_0xdf0a('0x3f')]:undefined)||'https://'}];case _0xdf0a('0x40'):return[{'name':_0xdf0a('0x41'),'value':_0x2d9dc3['attrPath']||(_0x2d9dc3[_0xdf0a('0x3e')]&&_0x2d9dc3[_0xdf0a('0x3e')][0x0]?_0x2d9dc3[_0xdf0a('0x3e')][0x0]['value']:undefined)||''}];case _0xdf0a('0x42'):return[{'name':'attrHourFormat','value':_0x2d9dc3[_0xdf0a('0x43')]||(_0x2d9dc3['attrs']&&_0x2d9dc3[_0xdf0a('0x3e')][0x0]?_0x2d9dc3['attrs'][0x0][_0xdf0a('0x3f')]:undefined)||_0xdf0a('0x44')},{'name':_0xdf0a('0x45'),'value':_0x2d9dc3[_0xdf0a('0x45')]||(_0x2d9dc3['attrs']&&_0x2d9dc3['attrs'][0x1]?_0x2d9dc3['attrs'][0x1][_0xdf0a('0x3f')]:undefined)||'0.00'},{'name':_0xdf0a('0x46'),'value':_0x2d9dc3[_0xdf0a('0x46')]||(_0x2d9dc3[_0xdf0a('0x3e')]&&_0x2d9dc3[_0xdf0a('0x3e')][0x2]?_0x2d9dc3[_0xdf0a('0x3e')][0x2][_0xdf0a('0x3f')]:undefined)||0xc}];case'counter':return[{'name':_0xdf0a('0x47'),'value':_0x2d9dc3[_0xdf0a('0x47')]||(_0x2d9dc3[_0xdf0a('0x3e')]&&_0x2d9dc3[_0xdf0a('0x3e')][0x0]?_0x2d9dc3['attrs'][0x0]['value']:undefined)||'total'},{'name':'attrVoiceQueues','value':_0x2d9dc3[_0xdf0a('0x48')]||(_0x2d9dc3[_0xdf0a('0x3e')]&&_0x2d9dc3[_0xdf0a('0x3e')][0x1]?_0x2d9dc3[_0xdf0a('0x3e')][0x1]['value']:undefined)||[]},{'name':_0xdf0a('0x46'),'value':_0x2d9dc3[_0xdf0a('0x46')]||(_0x2d9dc3[_0xdf0a('0x3e')]&&_0x2d9dc3['attrs'][0x2]?_0x2d9dc3['attrs'][0x2][_0xdf0a('0x3f')]:undefined)||0x14}];case'multibar-chart':case'pie-chart':return[{'name':_0xdf0a('0x49'),'value':_0x2d9dc3[_0xdf0a('0x49')]||(_0x2d9dc3[_0xdf0a('0x3e')]&&_0x2d9dc3[_0xdf0a('0x3e')][0x0]?_0x2d9dc3[_0xdf0a('0x3e')][0x0]['value']:undefined)||_0xdf0a('0x4a')},{'name':'attrSerie2','value':_0x2d9dc3[_0xdf0a('0x4b')]||(_0x2d9dc3[_0xdf0a('0x3e')]&&_0x2d9dc3[_0xdf0a('0x3e')][0x1]?_0x2d9dc3[_0xdf0a('0x3e')][0x1][_0xdf0a('0x3f')]:undefined)||null},{'name':_0xdf0a('0x4c'),'value':_0x2d9dc3[_0xdf0a('0x4c')]||(_0x2d9dc3[_0xdf0a('0x3e')]&&_0x2d9dc3['attrs'][0x2]?_0x2d9dc3['attrs'][0x2][_0xdf0a('0x3f')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x2d9dc3[_0xdf0a('0x48')]||(_0x2d9dc3[_0xdf0a('0x3e')]&&_0x2d9dc3[_0xdf0a('0x3e')][0x3]?_0x2d9dc3[_0xdf0a('0x3e')][0x3]['value']:undefined)||[]}];case _0xdf0a('0x4d'):return[{'name':_0xdf0a('0x4e'),'type':_0x2d9dc3[_0xdf0a('0x4f')]||(_0x2d9dc3['attrs']&&_0x2d9dc3[_0xdf0a('0x3e')][0x0]?_0x2d9dc3[_0xdf0a('0x3e')][0x0][_0xdf0a('0x3c')]:undefined)||null,'value':_0x2d9dc3[_0xdf0a('0x4e')]||(_0x2d9dc3[_0xdf0a('0x3e')]&&_0x2d9dc3['attrs'][0x0]?_0x2d9dc3[_0xdf0a('0x3e')][0x0][_0xdf0a('0x3f')]:undefined)||null},{'name':_0xdf0a('0x50'),'value':_0x2d9dc3[_0xdf0a('0x50')]||(_0x2d9dc3[_0xdf0a('0x3e')]&&_0x2d9dc3[_0xdf0a('0x3e')][0x1]?_0x2d9dc3['attrs'][0x1][_0xdf0a('0x3f')]:undefined)||0x0}];default:return[];}}catch(_0x4dae2c){logger[_0xdf0a('0x2b')](_0xdf0a('0x51'),JSON['stringify'](_0x4dae2c));return[];}}exports[_0xdf0a('0x52')]=function(_0x2034e4,_0x224e51){if(_0x2034e4[_0xdf0a('0x53')]){_0x2034e4[_0xdf0a('0x53')]['attrs']=widgetAttributes(_0x2034e4[_0xdf0a('0x53')]);}return db[_0xdf0a('0x39')][_0xdf0a('0x52')](_0x2034e4[_0xdf0a('0x53')],{})[_0xdf0a('0x2a')](respondWithResult(_0x224e51,0xc9))[_0xdf0a('0x3b')](handleError(_0x224e51,null));};exports[_0xdf0a('0x28')]=function(_0x16eeb4,_0x2f4156){if(_0x16eeb4[_0xdf0a('0x53')]['id']){delete _0x16eeb4[_0xdf0a('0x53')]['id'];}_0x16eeb4[_0xdf0a('0x53')]['attrs']=widgetAttributes(_0x16eeb4[_0xdf0a('0x53')]);return db[_0xdf0a('0x39')]['find']({'where':{'id':_0x16eeb4[_0xdf0a('0x2e')]['id']}})[_0xdf0a('0x2a')](handleEntityNotFound(_0x2f4156,null))['then'](saveUpdates(_0x16eeb4[_0xdf0a('0x53')],null))[_0xdf0a('0x2a')](respondWithResult(_0x2f4156,null))[_0xdf0a('0x3b')](handleError(_0x2f4156,null));};
\ No newline at end of file
index 0e92eb5..9349d64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa21=['save','update','remove','emit','hook','exports','events','../../mysqldb','DashboardItem','setMaxListeners'];(function(_0x11cd17,_0x489e02){var _0x3343ad=function(_0xfb1588){while(--_0xfb1588){_0x11cd17['push'](_0x11cd17['shift']());}};_0x3343ad(++_0x489e02);}(_0xfa21,0x178));var _0x1fa2=function(_0x6217d9,_0x83786a){_0x6217d9=_0x6217d9-0x0;var _0x385c27=_0xfa21[_0x6217d9];return _0x385c27;};'use strict';var EventEmitter=require(_0x1fa2('0x0'));var DashboardItem=require(_0x1fa2('0x1'))['db'][_0x1fa2('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x1fa2('0x3')](0x0);var events={'afterCreate':_0x1fa2('0x4'),'afterUpdate':_0x1fa2('0x5'),'afterDestroy':_0x1fa2('0x6')};function emitEvent(_0x4e3ce9){return function(_0x12b952,_0x3cc6a6,_0x537ee9){DashboardItemEvents[_0x1fa2('0x7')](_0x4e3ce9+':'+_0x12b952['id'],_0x12b952);DashboardItemEvents[_0x1fa2('0x7')](_0x4e3ce9,_0x12b952);_0x537ee9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem[_0x1fa2('0x8')](e,emitEvent(event));}}module[_0x1fa2('0x9')]=DashboardItemEvents;
\ No newline at end of file
+var _0xba07=['events','../../mysqldb','DashboardItem','setMaxListeners','remove','emit','hasOwnProperty','hook','exports'];(function(_0x40ea11,_0x2974ca){var _0x3bc266=function(_0x48e6d1){while(--_0x48e6d1){_0x40ea11['push'](_0x40ea11['shift']());}};_0x3bc266(++_0x2974ca);}(_0xba07,0xfc));var _0x7ba0=function(_0x4d514c,_0x52a2fc){_0x4d514c=_0x4d514c-0x0;var _0x3386aa=_0xba07[_0x4d514c];return _0x3386aa;};'use strict';var EventEmitter=require(_0x7ba0('0x0'));var DashboardItem=require(_0x7ba0('0x1'))['db'][_0x7ba0('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x7ba0('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x7ba0('0x4')};function emitEvent(_0x26270c){return function(_0x46da5d,_0x35af77,_0x295d27){DashboardItemEvents[_0x7ba0('0x5')](_0x26270c+':'+_0x46da5d['id'],_0x46da5d);DashboardItemEvents[_0x7ba0('0x5')](_0x26270c,_0x46da5d);_0x295d27(null);};}for(var e in events){if(events[_0x7ba0('0x6')](e)){var event=events[e];DashboardItem[_0x7ba0('0x7')](e,emitEvent(event));}}module[_0x7ba0('0x8')]=DashboardItemEvents;
\ No newline at end of file
index 365e449..ebbd1c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb74=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem','lodash','util'];(function(_0x46f6d2,_0x11ec10){var _0x1ad411=function(_0x355c6e){while(--_0x355c6e){_0x46f6d2['push'](_0x46f6d2['shift']());}};_0x1ad411(++_0x11ec10);}(_0xeb74,0x143));var _0x4eb7=function(_0x15af04,_0x59ff4f){_0x15af04=_0x15af04-0x0;var _0x3a2392=_0xeb74[_0x15af04];return _0x3a2392;};'use strict';var _=require(_0x4eb7('0x0'));var util=require(_0x4eb7('0x1'));var logger=require(_0x4eb7('0x2'))('api');var moment=require(_0x4eb7('0x3'));var BPromise=require(_0x4eb7('0x4'));var rp=require(_0x4eb7('0x5'));var fs=require('fs');var path=require(_0x4eb7('0x6'));var rimraf=require(_0x4eb7('0x7'));var config=require(_0x4eb7('0x8'));var attributes=require(_0x4eb7('0x9'));module[_0x4eb7('0xa')]=function(_0x90b219,_0x9bc3a){return _0x90b219[_0x4eb7('0xb')](_0x4eb7('0xc'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x25aa=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','lodash'];(function(_0x44f2c2,_0xc93f18){var _0x2ed318=function(_0x5928ec){while(--_0x5928ec){_0x44f2c2['push'](_0x44f2c2['shift']());}};_0x2ed318(++_0xc93f18);}(_0x25aa,0x151));var _0xa25a=function(_0x3de873,_0x174b5f){_0x3de873=_0x3de873-0x0;var _0x380b8c=_0x25aa[_0x3de873];return _0x380b8c;};'use strict';var _=require(_0xa25a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa25a('0x1'));var moment=require(_0xa25a('0x2'));var BPromise=require(_0xa25a('0x3'));var rp=require(_0xa25a('0x4'));var fs=require('fs');var path=require(_0xa25a('0x5'));var rimraf=require(_0xa25a('0x6'));var config=require(_0xa25a('0x7'));var attributes=require(_0xa25a('0x8'));module[_0xa25a('0x9')]=function(_0x2d8e23,_0x1d2ee3){return _0x2d8e23[_0xa25a('0xa')](_0xa25a('0xb'),attributes,{'tableName':_0xa25a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8aa68de..cc20d26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b1a=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','./dashboardItem.socket','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment'];(function(_0x1448f4,_0x1d8f4e){var _0x37fe18=function(_0x56e4bf){while(--_0x56e4bf){_0x1448f4['push'](_0x1448f4['shift']());}};_0x37fe18(++_0x1d8f4e);}(_0x3b1a,0x185));var _0xa3b1=function(_0x25831a,_0x3027d1){_0x25831a=_0x25831a-0x0;var _0x141686=_0x3b1a[_0x25831a];return _0x141686;};'use strict';var _=require(_0xa3b1('0x0'));var util=require(_0xa3b1('0x1'));var moment=require(_0xa3b1('0x2'));var BPromise=require(_0xa3b1('0x3'));var rs=require(_0xa3b1('0x4'));var fs=require('fs');var Redis=require(_0xa3b1('0x5'));var db=require(_0xa3b1('0x6'))['db'];var utils=require(_0xa3b1('0x7'));var logger=require(_0xa3b1('0x8'))(_0xa3b1('0x9'));var config=require(_0xa3b1('0xa'));var jayson=require(_0xa3b1('0xb'));var client=jayson[_0xa3b1('0xc')]['http']({'port':0x232a});config[_0xa3b1('0xd')]=_['defaults'](config[_0xa3b1('0xd')],{'host':_0xa3b1('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa3b1('0xf'))['register'](socket);function respondWithRpcPromise(_0x29760e,_0x548005,_0x1ac4af){return new BPromise(function(_0x420b92,_0x3784fc){return client[_0xa3b1('0x10')](_0x29760e,_0x1ac4af)[_0xa3b1('0x11')](function(_0x3fc091){logger[_0xa3b1('0x12')](_0xa3b1('0x13'),_0x548005,_0xa3b1('0x14'));logger[_0xa3b1('0x15')](_0xa3b1('0x16'),_0x548005,_0xa3b1('0x14'),JSON[_0xa3b1('0x17')](_0x3fc091));if(_0x3fc091[_0xa3b1('0x18')]){if(_0x3fc091[_0xa3b1('0x18')][_0xa3b1('0x19')]===0x1f4){logger[_0xa3b1('0x18')](_0xa3b1('0x13'),_0x548005,_0x3fc091[_0xa3b1('0x18')][_0xa3b1('0x1a')]);return _0x3784fc(_0x3fc091[_0xa3b1('0x18')][_0xa3b1('0x1a')]);}logger[_0xa3b1('0x18')](_0xa3b1('0x13'),_0x548005,_0x3fc091[_0xa3b1('0x18')]['message']);return _0x420b92(_0x3fc091[_0xa3b1('0x18')][_0xa3b1('0x1a')]);}else{logger[_0xa3b1('0x12')](_0xa3b1('0x13'),_0x548005,_0xa3b1('0x14'));_0x420b92(_0x3fc091[_0xa3b1('0x1b')][_0xa3b1('0x1a')]);}})['catch'](function(_0x76d2a4){logger['error'](_0xa3b1('0x13'),_0x548005,_0x76d2a4);_0x3784fc(_0x76d2a4);});});}
\ No newline at end of file
+var _0x9603=['defaults','register','then','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis'];(function(_0x526f70,_0x6777b0){var _0x5152f0=function(_0x5c8bf1){while(--_0x5c8bf1){_0x526f70['push'](_0x526f70['shift']());}};_0x5152f0(++_0x6777b0);}(_0x9603,0x11f));var _0x3960=function(_0x167496,_0x2c08f1){_0x167496=_0x167496-0x0;var _0xdd2bb0=_0x9603[_0x167496];return _0xdd2bb0;};'use strict';var _=require(_0x3960('0x0'));var util=require('util');var moment=require(_0x3960('0x1'));var BPromise=require(_0x3960('0x2'));var rs=require(_0x3960('0x3'));var fs=require('fs');var Redis=require(_0x3960('0x4'));var db=require(_0x3960('0x5'))['db'];var utils=require(_0x3960('0x6'));var logger=require(_0x3960('0x7'))(_0x3960('0x8'));var config=require(_0x3960('0x9'));var jayson=require(_0x3960('0xa'));var client=jayson[_0x3960('0xb')]['http']({'port':0x232a});config[_0x3960('0xc')]=_[_0x3960('0xd')](config[_0x3960('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3960('0xc')]));require('./dashboardItem.socket')[_0x3960('0xe')](socket);function respondWithRpcPromise(_0x3093e2,_0xeb60fc,_0x231e40){return new BPromise(function(_0x553e21,_0x8d4468){return client['request'](_0x3093e2,_0x231e40)[_0x3960('0xf')](function(_0x94e814){logger['info'](_0x3960('0x10'),_0xeb60fc,_0x3960('0x11'));logger[_0x3960('0x12')](_0x3960('0x13'),_0xeb60fc,_0x3960('0x11'),JSON['stringify'](_0x94e814));if(_0x94e814[_0x3960('0x14')]){if(_0x94e814[_0x3960('0x14')][_0x3960('0x15')]===0x1f4){logger[_0x3960('0x14')](_0x3960('0x10'),_0xeb60fc,_0x94e814[_0x3960('0x14')]['message']);return _0x8d4468(_0x94e814['error']['message']);}logger['error'](_0x3960('0x10'),_0xeb60fc,_0x94e814[_0x3960('0x14')][_0x3960('0x16')]);return _0x553e21(_0x94e814[_0x3960('0x14')][_0x3960('0x16')]);}else{logger['info']('DashboardItem,\x20%s,\x20%s',_0xeb60fc,_0x3960('0x11'));_0x553e21(_0x94e814[_0x3960('0x17')][_0x3960('0x16')]);}})[_0x3960('0x18')](function(_0x27ef6f){logger[_0x3960('0x14')](_0x3960('0x10'),_0xeb60fc,_0x27ef6f);_0x8d4468(_0x27ef6f);});});}
\ No newline at end of file
index 6968926..bbc0523 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd483=['length','dashboardItem:','./dashboardItem.events','remove','update','emit','removeListener','register'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0xd483,0x1d2));var _0x3d48=function(_0x405162,_0x39f235){_0x405162=_0x405162-0x0;var _0xe34074=_0xd483[_0x405162];return _0xe34074;};'use strict';var DashboardItemEvents=require(_0x3d48('0x0'));var events=['save',_0x3d48('0x1'),_0x3d48('0x2')];function createListener(_0x41f994,_0x2cc341){return function(_0x6134ee){_0x2cc341[_0x3d48('0x3')](_0x41f994,_0x6134ee);};}function removeListener(_0x384c31,_0x278788){return function(){DashboardItemEvents[_0x3d48('0x4')](_0x384c31,_0x278788);};}exports[_0x3d48('0x5')]=function(_0x466598){for(var _0x29068a=0x0,_0xf96a49=events[_0x3d48('0x6')];_0x29068a<_0xf96a49;_0x29068a++){var _0x2dea6c=events[_0x29068a];var _0x26e1ab=createListener(_0x3d48('0x7')+_0x2dea6c,_0x466598);DashboardItemEvents['on'](_0x2dea6c,_0x26e1ab);}};
\ No newline at end of file
+var _0x4052=['removeListener','length','dashboardItem:','./dashboardItem.events','remove','update','emit'];(function(_0xc3543d,_0x223f2d){var _0x11ec67=function(_0x17a56e){while(--_0x17a56e){_0xc3543d['push'](_0xc3543d['shift']());}};_0x11ec67(++_0x223f2d);}(_0x4052,0x153));var _0x2405=function(_0x9df90e,_0x5e4e3f){_0x9df90e=_0x9df90e-0x0;var _0x53ab01=_0x4052[_0x9df90e];return _0x53ab01;};'use strict';var DashboardItemEvents=require(_0x2405('0x0'));var events=['save',_0x2405('0x1'),_0x2405('0x2')];function createListener(_0x163c8b,_0x96e898){return function(_0x17c10a){_0x96e898[_0x2405('0x3')](_0x163c8b,_0x17c10a);};}function removeListener(_0x4e8366,_0x56eb9c){return function(){DashboardItemEvents[_0x2405('0x4')](_0x4e8366,_0x56eb9c);};}exports['register']=function(_0x5d7353){for(var _0x3df518=0x0,_0x4467f9=events[_0x2405('0x5')];_0x3df518<_0x4467f9;_0x3df518++){var _0x115c20=events[_0x3df518];var _0x226b4f=createListener(_0x2405('0x6')+_0x115c20,_0x5d7353);DashboardItemEvents['on'](_0x115c20,_0x226b4f);}};
\ No newline at end of file
index e1569ff..80c4a9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07ab=['isAuthenticated','post','create','update','delete','destroy','exports','multer','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id'];(function(_0x5e1a38,_0xa2a991){var _0x3e10cb=function(_0x214666){while(--_0x214666){_0x5e1a38['push'](_0x5e1a38['shift']());}};_0x3e10cb(++_0xa2a991);}(_0x07ab,0x67));var _0xb07a=function(_0x5d80de,_0x2cf15d){_0x5d80de=_0x5d80de-0x0;var _0x1c7556=_0x07ab[_0x5d80de];return _0x1c7556;};'use strict';var multer=require(_0xb07a('0x0'));var util=require('util');var path=require(_0xb07a('0x1'));var timeout=require(_0xb07a('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb07a('0x3'));var interaction=require(_0xb07a('0x4'));var config=require(_0xb07a('0x5'));var controller=require(_0xb07a('0x6'));router[_0xb07a('0x7')](_0xb07a('0x8'),auth[_0xb07a('0x9')](),controller['show']);router[_0xb07a('0xa')]('/',auth['isAuthenticated'](),controller[_0xb07a('0xb')]);router['put']('/:id',auth[_0xb07a('0x9')](),controller[_0xb07a('0xc')]);router[_0xb07a('0xd')](_0xb07a('0x8'),auth[_0xb07a('0x9')](),controller[_0xb07a('0xe')]);module[_0xb07a('0xf')]=router;
\ No newline at end of file
+var _0xc1e5=['isAuthenticated','show','post','create','update','destroy','exports','util','path','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','/:id'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xc1e5,0x93));var _0x5c1e=function(_0x5479e5,_0x67a62a){_0x5479e5=_0x5479e5-0x0;var _0x81107b=_0xc1e5[_0x5479e5];return _0x81107b;};'use strict';var multer=require('multer');var util=require(_0x5c1e('0x0'));var path=require(_0x5c1e('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x5c1e('0x2'));var interaction=require(_0x5c1e('0x3'));var config=require(_0x5c1e('0x4'));var controller=require(_0x5c1e('0x5'));router['get'](_0x5c1e('0x6'),auth[_0x5c1e('0x7')](),controller[_0x5c1e('0x8')]);router[_0x5c1e('0x9')]('/',auth[_0x5c1e('0x7')](),controller[_0x5c1e('0xa')]);router['put'](_0x5c1e('0x6'),auth['isAuthenticated'](),controller[_0x5c1e('0xb')]);router['delete'](_0x5c1e('0x6'),auth[_0x5c1e('0x7')](),controller[_0x5c1e('0xc')]);module[_0x5c1e('0xd')]=router;
\ No newline at end of file
index 4babe0e..71976e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03a1=['sequelize','exports','STRING','ENUM','first'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x03a1,0x19f));var _0x103a=function(_0x27cbf7,_0x1438f6){_0x27cbf7=_0x27cbf7-0x0;var _0x284f77=_0x03a1[_0x27cbf7];return _0x284f77;};'use strict';var Sequelize=require(_0x103a('0x0'));module[_0x103a('0x1')]={'name':{'type':Sequelize[_0x103a('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x103a('0x3')](_0x103a('0x4'),'second','third'),'allowNull':![],'defaultValue':_0x103a('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6ba0=['STRING','ENUM','first','second','third','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6ba0,0x14e));var _0x06ba=function(_0x5cce80,_0x1f53bc){_0x5cce80=_0x5cce80-0x0;var _0x3e1a75=_0x6ba0[_0x5cce80];return _0x3e1a75;};'use strict';var Sequelize=require(_0x06ba('0x0'));module[_0x06ba('0x1')]={'name':{'type':Sequelize[_0x06ba('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x06ba('0x3')](_0x06ba('0x4'),_0x06ba('0x5'),_0x06ba('0x6')),'allowNull':![],'defaultValue':_0x06ba('0x4')},'description':{'type':Sequelize[_0x06ba('0x2')]}};
\ No newline at end of file
index e06c57a..ea2c9b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ff9=['util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','save','update','then','get','Dispositions','destroy','end','name','index','map','Disposition','rawAttributes','model','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','filter','where','type','VIRTUAL','merge','options','includeAll','rows','catch','show','params','keys','length','find','body','role','user','UserProfileSection','autoAssociation','UserProfileResource','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','fast-json-patch','request-promise','bluebird','mustache'];(function(_0x3b8618,_0x2ac2b0){var _0x24c98=function(_0x182761){while(--_0x182761){_0x3b8618['push'](_0x3b8618['shift']());}};_0x24c98(++_0x2ac2b0);}(_0x9ff9,0x1c3));var _0x99ff=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x9ff9[_0x3ff085];return _0x2b68c3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x99ff('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x99ff('0x1'));var rp=require(_0x99ff('0x2'));var moment=require('moment');var BPromise=require(_0x99ff('0x3'));var Mustache=require(_0x99ff('0x4'));var util=require(_0x99ff('0x5'));var path=require(_0x99ff('0x6'));var sox=require('sox');var csv=require(_0x99ff('0x7'));var ejs=require(_0x99ff('0x8'));var fs=require('fs');var fs_extra=require(_0x99ff('0x9'));var _=require(_0x99ff('0xa'));var squel=require(_0x99ff('0xb'));var crypto=require('crypto');var jsforce=require(_0x99ff('0xc'));var deskjs=require(_0x99ff('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x99ff('0xe'));var Redis=require('ioredis');var authService=require(_0x99ff('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x99ff('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x99ff('0x11'))(_0x99ff('0x12'));var utils=require(_0x99ff('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x99ff('0x14'));var db=require(_0x99ff('0x15'))['db'];function respondWithStatusCode(_0x1de5be,_0x1b782f){_0x1b782f=_0x1b782f||0xcc;return function(_0x4ec802){if(_0x4ec802){return _0x1de5be[_0x99ff('0x16')](_0x1b782f);}return _0x1de5be[_0x99ff('0x17')](_0x1b782f)['end']();};}function respondWithResult(_0x25af26,_0x4a3a32){_0x4a3a32=_0x4a3a32||0xc8;return function(_0x54fd60){if(_0x54fd60){return _0x25af26[_0x99ff('0x17')](_0x4a3a32)[_0x99ff('0x18')](_0x54fd60);}};}function respondWithFilteredResult(_0x115c25,_0x380718){return function(_0x3c145e){if(_0x3c145e){var _0x45df30=typeof _0x380718[_0x99ff('0x19')]===_0x99ff('0x1a')&&typeof _0x380718['limit']==='undefined';var _0x5d5e95=_0x3c145e[_0x99ff('0x1b')];var _0x2a2584=_0x45df30?0x0:_0x380718[_0x99ff('0x19')];var _0x3517f3=_0x45df30?_0x3c145e[_0x99ff('0x1b')]:_0x380718[_0x99ff('0x19')]+_0x380718[_0x99ff('0x1c')];var _0x4cb396;if(_0x3517f3>=_0x5d5e95){_0x3517f3=_0x5d5e95;_0x4cb396=0xc8;}else{_0x4cb396=0xce;}_0x115c25['status'](_0x4cb396);return _0x115c25[_0x99ff('0x1d')]('Content-Range',_0x2a2584+'-'+_0x3517f3+'/'+_0x5d5e95)[_0x99ff('0x18')](_0x3c145e);}return null;};}function patchUpdates(_0x2e8015){return function(_0x15e444){try{jsonpatch[_0x99ff('0x1e')](_0x15e444,_0x2e8015,!![]);}catch(_0x464350){return BPromise[_0x99ff('0x1f')](_0x464350);}return _0x15e444[_0x99ff('0x20')]();};}function saveUpdates(_0x2f537a,_0x4a1c85){return function(_0x2a5ff0){if(_0x2a5ff0){return _0x2a5ff0[_0x99ff('0x21')](_0x2f537a)[_0x99ff('0x22')](function(_0x2271e3){return _0x2271e3;});}return null;};}function removeEntity(_0x4d1c7a,_0x3eb51d){return function(_0x2545ff){if(_0x2545ff){return _0x2545ff['destroy']()[_0x99ff('0x22')](function(){var _0x2b4ffb=_0x2545ff[_0x99ff('0x23')]({'plain':!![]});var _0x424b86=_0x99ff('0x24');return db['UserProfileResource'][_0x99ff('0x25')]({'where':{'type':_0x424b86,'resourceId':_0x2b4ffb['id']}})[_0x99ff('0x22')](function(){return _0x2545ff;});})[_0x99ff('0x22')](function(){_0x4d1c7a[_0x99ff('0x17')](0xcc)[_0x99ff('0x26')]();});}};}function handleEntityNotFound(_0x21b2ed,_0x281750){return function(_0xe3a021){if(!_0xe3a021){_0x21b2ed[_0x99ff('0x16')](0x194);}return _0xe3a021;};}function handleError(_0x39d4f1,_0xd5d704){_0xd5d704=_0xd5d704||0x1f4;return function(_0x8d2710){logger['error'](_0x8d2710['stack']);if(_0x8d2710[_0x99ff('0x27')]){delete _0x8d2710[_0x99ff('0x27')];}_0x39d4f1[_0x99ff('0x17')](_0xd5d704)['send'](_0x8d2710);};}exports[_0x99ff('0x28')]=function(_0x5ddde5,_0x4b49bb){var _0x4c8c65={},_0x26f67f={},_0x2a92d7={'count':0x0,'rows':[]};var _0x39ba4e=_[_0x99ff('0x29')](db[_0x99ff('0x2a')][_0x99ff('0x2b')],function(_0x4d09b1){return{'name':_0x4d09b1['fieldName'],'type':_0x4d09b1['type']['key']};});_0x26f67f[_0x99ff('0x2c')]=_['map'](_0x39ba4e,_0x99ff('0x27'));_0x26f67f[_0x99ff('0x2d')]=_['keys'](_0x5ddde5['query']);_0x26f67f[_0x99ff('0x2e')]=_[_0x99ff('0x2f')](_0x26f67f[_0x99ff('0x2c')],_0x26f67f[_0x99ff('0x2d')]);_0x4c8c65[_0x99ff('0x30')]=_[_0x99ff('0x2f')](_0x26f67f[_0x99ff('0x2c')],qs[_0x99ff('0x31')](_0x5ddde5[_0x99ff('0x2d')][_0x99ff('0x31')]));_0x4c8c65[_0x99ff('0x30')]=_0x4c8c65[_0x99ff('0x30')]['length']?_0x4c8c65[_0x99ff('0x30')]:_0x26f67f[_0x99ff('0x2c')];if(!_0x5ddde5[_0x99ff('0x2d')][_0x99ff('0x32')]('nolimit')){_0x4c8c65[_0x99ff('0x1c')]=qs[_0x99ff('0x1c')](_0x5ddde5[_0x99ff('0x2d')]['limit']);_0x4c8c65[_0x99ff('0x19')]=qs[_0x99ff('0x19')](_0x5ddde5[_0x99ff('0x2d')][_0x99ff('0x19')]);}_0x4c8c65[_0x99ff('0x33')]=qs[_0x99ff('0x34')](_0x5ddde5[_0x99ff('0x2d')][_0x99ff('0x34')]);_0x4c8c65['where']=qs['filters'](_['pick'](_0x5ddde5[_0x99ff('0x2d')],_0x26f67f['filters']),_0x39ba4e);if(_0x5ddde5['query'][_0x99ff('0x35')]){_0x4c8c65[_0x99ff('0x36')]=_['merge'](_0x4c8c65['where'],{'$or':_['map'](_0x39ba4e,function(_0x180213){if(_0x180213[_0x99ff('0x37')]!==_0x99ff('0x38')){var _0x20e2c1={};_0x20e2c1[_0x180213['name']]={'$like':'%'+_0x5ddde5[_0x99ff('0x2d')]['filter']+'%'};return _0x20e2c1;}})});}_0x4c8c65=_[_0x99ff('0x39')]({},_0x4c8c65,_0x5ddde5[_0x99ff('0x3a')]);var _0x514fe5={'where':_0x4c8c65[_0x99ff('0x36')]};return db[_0x99ff('0x2a')]['count'](_0x514fe5)[_0x99ff('0x22')](function(_0xabf91f){_0x2a92d7['count']=_0xabf91f;if(_0x5ddde5[_0x99ff('0x2d')][_0x99ff('0x3b')]){_0x4c8c65['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x4c8c65);})[_0x99ff('0x22')](function(_0x5f3cbe){_0x2a92d7[_0x99ff('0x3c')]=_0x5f3cbe;return _0x2a92d7;})['then'](respondWithFilteredResult(_0x4b49bb,_0x4c8c65))[_0x99ff('0x3d')](handleError(_0x4b49bb,null));};exports[_0x99ff('0x3e')]=function(_0x33ea10,_0x3a374e){var _0x8929e5={'raw':!![],'where':{'id':_0x33ea10[_0x99ff('0x3f')]['id']}},_0x17079d={};_0x17079d[_0x99ff('0x2c')]=_[_0x99ff('0x40')](db[_0x99ff('0x2a')]['rawAttributes']);_0x17079d[_0x99ff('0x2d')]=_[_0x99ff('0x40')](_0x33ea10[_0x99ff('0x2d')]);_0x17079d[_0x99ff('0x2e')]=_['intersection'](_0x17079d[_0x99ff('0x2c')],_0x17079d[_0x99ff('0x2d')]);_0x8929e5[_0x99ff('0x30')]=_[_0x99ff('0x2f')](_0x17079d[_0x99ff('0x2c')],qs[_0x99ff('0x31')](_0x33ea10[_0x99ff('0x2d')][_0x99ff('0x31')]));_0x8929e5['attributes']=_0x8929e5[_0x99ff('0x30')][_0x99ff('0x41')]?_0x8929e5['attributes']:_0x17079d[_0x99ff('0x2c')];if(_0x33ea10[_0x99ff('0x2d')][_0x99ff('0x3b')]){_0x8929e5['include']=[{'all':!![]}];}_0x8929e5=_[_0x99ff('0x39')]({},_0x8929e5,_0x33ea10[_0x99ff('0x3a')]);return db[_0x99ff('0x2a')][_0x99ff('0x42')](_0x8929e5)[_0x99ff('0x22')](handleEntityNotFound(_0x3a374e,null))[_0x99ff('0x22')](respondWithResult(_0x3a374e,null))['catch'](handleError(_0x3a374e,null));};exports['create']=function(_0x5eb954,_0x1eeb28){return db[_0x99ff('0x2a')]['create'](_0x5eb954[_0x99ff('0x43')],{})['then'](function(_0x11ffc3){var _0x265046=_0x5eb954['user'][_0x99ff('0x23')]({'plain':!![]});if(!_0x265046)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x265046[_0x99ff('0x44')]===_0x99ff('0x45')){var _0x1fb97d=_0x11ffc3[_0x99ff('0x23')]({'plain':!![]});var _0x41579=_0x99ff('0x24');return db[_0x99ff('0x46')][_0x99ff('0x42')]({'where':{'name':_0x41579,'userProfileId':_0x265046['userProfileId']},'raw':!![]})[_0x99ff('0x22')](function(_0x168b62){if(_0x168b62&&_0x168b62[_0x99ff('0x47')]===0x0){return db[_0x99ff('0x48')][_0x99ff('0x49')]({'name':_0x1fb97d[_0x99ff('0x27')],'resourceId':_0x1fb97d['id'],'type':_0x168b62[_0x99ff('0x27')],'sectionId':_0x168b62['id']},{})[_0x99ff('0x22')](function(){return _0x11ffc3;});}else{return _0x11ffc3;}})[_0x99ff('0x3d')](function(_0x2fd54c){logger[_0x99ff('0x4a')](_0x99ff('0x4b'),_0x2fd54c);throw _0x2fd54c;});}return _0x11ffc3;})[_0x99ff('0x22')](respondWithResult(_0x1eeb28,0xc9))[_0x99ff('0x3d')](handleError(_0x1eeb28,null));};exports['update']=function(_0x53e2eb,_0x566a88){if(_0x53e2eb[_0x99ff('0x43')]['id']){delete _0x53e2eb[_0x99ff('0x43')]['id'];}return db[_0x99ff('0x2a')]['find']({'where':{'id':_0x53e2eb[_0x99ff('0x3f')]['id']}})[_0x99ff('0x22')](handleEntityNotFound(_0x566a88,null))[_0x99ff('0x22')](saveUpdates(_0x53e2eb[_0x99ff('0x43')],null))[_0x99ff('0x22')](respondWithResult(_0x566a88,null))[_0x99ff('0x3d')](handleError(_0x566a88,null));};exports[_0x99ff('0x25')]=function(_0xd9f03e,_0x14d7de){return db[_0x99ff('0x2a')][_0x99ff('0x42')]({'where':{'id':_0xd9f03e[_0x99ff('0x3f')]['id']}})['then'](handleEntityNotFound(_0x14d7de,null))[_0x99ff('0x22')](removeEntity(_0x14d7de,null))[_0x99ff('0x3d')](handleError(_0x14d7de,null));};
\ No newline at end of file
+var _0x7dcc=['length','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','get','Dispositions','error','name','send','Disposition','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show'];(function(_0x475deb,_0x321dd7){var _0x20fd15=function(_0x2b1de7){while(--_0x2b1de7){_0x475deb['push'](_0x475deb['shift']());}};_0x20fd15(++_0x321dd7);}(_0x7dcc,0xaf));var _0xc7dc=function(_0x32bbb1,_0xa0e27e){_0x32bbb1=_0x32bbb1-0x0;var _0x42b415=_0x7dcc[_0x32bbb1];return _0x42b415;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc7dc('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc7dc('0x1'));var rp=require(_0xc7dc('0x2'));var moment=require(_0xc7dc('0x3'));var BPromise=require(_0xc7dc('0x4'));var Mustache=require(_0xc7dc('0x5'));var util=require(_0xc7dc('0x6'));var path=require(_0xc7dc('0x7'));var sox=require(_0xc7dc('0x8'));var csv=require(_0xc7dc('0x9'));var ejs=require(_0xc7dc('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc7dc('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc7dc('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc7dc('0xc'));var qs=require(_0xc7dc('0xd'));var as=require(_0xc7dc('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc7dc('0xf'))('api');var utils=require(_0xc7dc('0x10'));var config=require(_0xc7dc('0x11'));var licenseUtil=require(_0xc7dc('0x12'));var db=require(_0xc7dc('0x13'))['db'];function respondWithStatusCode(_0x5d2ed2,_0x589062){_0x589062=_0x589062||0xcc;return function(_0x22d301){if(_0x22d301){return _0x5d2ed2[_0xc7dc('0x14')](_0x589062);}return _0x5d2ed2['status'](_0x589062)[_0xc7dc('0x15')]();};}function respondWithResult(_0x552aa6,_0x2f1b01){_0x2f1b01=_0x2f1b01||0xc8;return function(_0x2c30ad){if(_0x2c30ad){return _0x552aa6[_0xc7dc('0x16')](_0x2f1b01)[_0xc7dc('0x17')](_0x2c30ad);}};}function respondWithFilteredResult(_0x394878,_0x38e6db){return function(_0x10f8ac){if(_0x10f8ac){var _0x328c01=typeof _0x38e6db['offset']===_0xc7dc('0x18')&&typeof _0x38e6db['limit']===_0xc7dc('0x18');var _0x3728d0=_0x10f8ac[_0xc7dc('0x19')];var _0x538464=_0x328c01?0x0:_0x38e6db[_0xc7dc('0x1a')];var _0x3045e3=_0x328c01?_0x10f8ac[_0xc7dc('0x19')]:_0x38e6db[_0xc7dc('0x1a')]+_0x38e6db[_0xc7dc('0x1b')];var _0x356e2a;if(_0x3045e3>=_0x3728d0){_0x3045e3=_0x3728d0;_0x356e2a=0xc8;}else{_0x356e2a=0xce;}_0x394878['status'](_0x356e2a);return _0x394878[_0xc7dc('0x1c')](_0xc7dc('0x1d'),_0x538464+'-'+_0x3045e3+'/'+_0x3728d0)[_0xc7dc('0x17')](_0x10f8ac);}return null;};}function patchUpdates(_0xa74235){return function(_0xd1f171){try{jsonpatch[_0xc7dc('0x1e')](_0xd1f171,_0xa74235,!![]);}catch(_0xf4d54c){return BPromise['reject'](_0xf4d54c);}return _0xd1f171[_0xc7dc('0x1f')]();};}function saveUpdates(_0x4ff828,_0x1bf1fe){return function(_0x32d918){if(_0x32d918){return _0x32d918[_0xc7dc('0x20')](_0x4ff828)[_0xc7dc('0x21')](function(_0x252411){return _0x252411;});}return null;};}function removeEntity(_0x28b36a,_0x3320e1){return function(_0x4c42d6){if(_0x4c42d6){return _0x4c42d6[_0xc7dc('0x22')]()[_0xc7dc('0x21')](function(){var _0x431e7f=_0x4c42d6[_0xc7dc('0x23')]({'plain':!![]});var _0x211fcf=_0xc7dc('0x24');return db['UserProfileResource'][_0xc7dc('0x22')]({'where':{'type':_0x211fcf,'resourceId':_0x431e7f['id']}})[_0xc7dc('0x21')](function(){return _0x4c42d6;});})[_0xc7dc('0x21')](function(){_0x28b36a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x340601,_0x5cc9ea){return function(_0x2c56b5){if(!_0x2c56b5){_0x340601[_0xc7dc('0x14')](0x194);}return _0x2c56b5;};}function handleError(_0x244621,_0x56590b){_0x56590b=_0x56590b||0x1f4;return function(_0x582c72){logger[_0xc7dc('0x25')](_0x582c72['stack']);if(_0x582c72[_0xc7dc('0x26')]){delete _0x582c72[_0xc7dc('0x26')];}_0x244621[_0xc7dc('0x16')](_0x56590b)[_0xc7dc('0x27')](_0x582c72);};}exports['index']=function(_0x542d2e,_0x448878){var _0x18a68e={},_0xb26b5f={},_0x506ad1={'count':0x0,'rows':[]};var _0x1a527e=_['map'](db[_0xc7dc('0x28')][_0xc7dc('0x29')],function(_0x29784d){return{'name':_0x29784d[_0xc7dc('0x2a')],'type':_0x29784d[_0xc7dc('0x2b')][_0xc7dc('0x2c')]};});_0xb26b5f[_0xc7dc('0x2d')]=_[_0xc7dc('0x2e')](_0x1a527e,'name');_0xb26b5f[_0xc7dc('0x2f')]=_[_0xc7dc('0x30')](_0x542d2e[_0xc7dc('0x2f')]);_0xb26b5f[_0xc7dc('0x31')]=_['intersection'](_0xb26b5f['model'],_0xb26b5f[_0xc7dc('0x2f')]);_0x18a68e['attributes']=_[_0xc7dc('0x32')](_0xb26b5f[_0xc7dc('0x2d')],qs[_0xc7dc('0x33')](_0x542d2e[_0xc7dc('0x2f')][_0xc7dc('0x33')]));_0x18a68e[_0xc7dc('0x34')]=_0x18a68e[_0xc7dc('0x34')]['length']?_0x18a68e['attributes']:_0xb26b5f[_0xc7dc('0x2d')];if(!_0x542d2e[_0xc7dc('0x2f')][_0xc7dc('0x35')](_0xc7dc('0x36'))){_0x18a68e['limit']=qs['limit'](_0x542d2e[_0xc7dc('0x2f')][_0xc7dc('0x1b')]);_0x18a68e['offset']=qs[_0xc7dc('0x1a')](_0x542d2e[_0xc7dc('0x2f')][_0xc7dc('0x1a')]);}_0x18a68e[_0xc7dc('0x37')]=qs[_0xc7dc('0x38')](_0x542d2e[_0xc7dc('0x2f')]['sort']);_0x18a68e[_0xc7dc('0x39')]=qs[_0xc7dc('0x31')](_[_0xc7dc('0x3a')](_0x542d2e['query'],_0xb26b5f['filters']),_0x1a527e);if(_0x542d2e[_0xc7dc('0x2f')][_0xc7dc('0x3b')]){_0x18a68e[_0xc7dc('0x39')]=_[_0xc7dc('0x3c')](_0x18a68e['where'],{'$or':_['map'](_0x1a527e,function(_0x41bff6){if(_0x41bff6[_0xc7dc('0x2b')]!==_0xc7dc('0x3d')){var _0x4901a7={};_0x4901a7[_0x41bff6[_0xc7dc('0x26')]]={'$like':'%'+_0x542d2e[_0xc7dc('0x2f')][_0xc7dc('0x3b')]+'%'};return _0x4901a7;}})});}_0x18a68e=_['merge']({},_0x18a68e,_0x542d2e[_0xc7dc('0x3e')]);var _0x380a10={'where':_0x18a68e['where']};return db['Disposition'][_0xc7dc('0x19')](_0x380a10)[_0xc7dc('0x21')](function(_0x51bc07){_0x506ad1[_0xc7dc('0x19')]=_0x51bc07;if(_0x542d2e['query'][_0xc7dc('0x3f')]){_0x18a68e[_0xc7dc('0x40')]=[{'all':!![]}];}return db[_0xc7dc('0x28')][_0xc7dc('0x41')](_0x18a68e);})['then'](function(_0x534de6){_0x506ad1[_0xc7dc('0x42')]=_0x534de6;return _0x506ad1;})['then'](respondWithFilteredResult(_0x448878,_0x18a68e))['catch'](handleError(_0x448878,null));};exports[_0xc7dc('0x43')]=function(_0x28798c,_0x365af8){var _0x57e3eb={'raw':!![],'where':{'id':_0x28798c['params']['id']}},_0x2ac61c={};_0x2ac61c[_0xc7dc('0x2d')]=_[_0xc7dc('0x30')](db[_0xc7dc('0x28')][_0xc7dc('0x29')]);_0x2ac61c[_0xc7dc('0x2f')]=_[_0xc7dc('0x30')](_0x28798c[_0xc7dc('0x2f')]);_0x2ac61c[_0xc7dc('0x31')]=_[_0xc7dc('0x32')](_0x2ac61c['model'],_0x2ac61c[_0xc7dc('0x2f')]);_0x57e3eb[_0xc7dc('0x34')]=_['intersection'](_0x2ac61c[_0xc7dc('0x2d')],qs[_0xc7dc('0x33')](_0x28798c[_0xc7dc('0x2f')][_0xc7dc('0x33')]));_0x57e3eb[_0xc7dc('0x34')]=_0x57e3eb['attributes'][_0xc7dc('0x44')]?_0x57e3eb[_0xc7dc('0x34')]:_0x2ac61c['model'];if(_0x28798c['query'][_0xc7dc('0x3f')]){_0x57e3eb['include']=[{'all':!![]}];}_0x57e3eb=_[_0xc7dc('0x3c')]({},_0x57e3eb,_0x28798c[_0xc7dc('0x3e')]);return db[_0xc7dc('0x28')]['find'](_0x57e3eb)[_0xc7dc('0x21')](handleEntityNotFound(_0x365af8,null))[_0xc7dc('0x21')](respondWithResult(_0x365af8,null))[_0xc7dc('0x45')](handleError(_0x365af8,null));};exports['create']=function(_0x4f9a35,_0x46b75e){return db[_0xc7dc('0x28')][_0xc7dc('0x46')](_0x4f9a35[_0xc7dc('0x47')],{})['then'](function(_0x23579f){var _0x37b3b6=_0x4f9a35[_0xc7dc('0x48')][_0xc7dc('0x23')]({'plain':!![]});if(!_0x37b3b6)throw new Error(_0xc7dc('0x49'));if(_0x37b3b6[_0xc7dc('0x4a')]==='user'){var _0x1212ee=_0x23579f[_0xc7dc('0x23')]({'plain':!![]});var _0xf1d228='Dispositions';return db['UserProfileSection'][_0xc7dc('0x4b')]({'where':{'name':_0xf1d228,'userProfileId':_0x37b3b6[_0xc7dc('0x4c')]},'raw':!![]})['then'](function(_0x1df7bd){if(_0x1df7bd&&_0x1df7bd[_0xc7dc('0x4d')]===0x0){return db[_0xc7dc('0x4e')]['create']({'name':_0x1212ee['name'],'resourceId':_0x1212ee['id'],'type':_0x1df7bd[_0xc7dc('0x26')],'sectionId':_0x1df7bd['id']},{})[_0xc7dc('0x21')](function(){return _0x23579f;});}else{return _0x23579f;}})[_0xc7dc('0x45')](function(_0x1b68d6){logger[_0xc7dc('0x25')](_0xc7dc('0x4f'),_0x1b68d6);throw _0x1b68d6;});}return _0x23579f;})['then'](respondWithResult(_0x46b75e,0xc9))[_0xc7dc('0x45')](handleError(_0x46b75e,null));};exports[_0xc7dc('0x20')]=function(_0x159640,_0x23c303){if(_0x159640[_0xc7dc('0x47')]['id']){delete _0x159640[_0xc7dc('0x47')]['id'];}return db['Disposition'][_0xc7dc('0x4b')]({'where':{'id':_0x159640[_0xc7dc('0x50')]['id']}})[_0xc7dc('0x21')](handleEntityNotFound(_0x23c303,null))[_0xc7dc('0x21')](saveUpdates(_0x159640['body'],null))[_0xc7dc('0x21')](respondWithResult(_0x23c303,null))[_0xc7dc('0x45')](handleError(_0x23c303,null));};exports[_0xc7dc('0x22')]=function(_0x4164e2,_0x255a00){return db['Disposition'][_0xc7dc('0x4b')]({'where':{'id':_0x4164e2[_0xc7dc('0x50')]['id']}})[_0xc7dc('0x21')](handleEntityNotFound(_0x255a00,null))[_0xc7dc('0x21')](removeEntity(_0x255a00,null))[_0xc7dc('0x45')](handleError(_0x255a00,null));};
\ No newline at end of file
index aa4262f..2ce4d34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdac3=['MailAccountId','name_sms','SmsAccountId','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./disposition.attributes','exports','Disposition','ListId','name_chat','name'];(function(_0x4c1595,_0x3fd027){var _0x500e25=function(_0x51bade){while(--_0x51bade){_0x4c1595['push'](_0x4c1595['shift']());}};_0x500e25(++_0x3fd027);}(_0xdac3,0x1ec));var _0x3dac=function(_0x2bb66c,_0x36c6c6){_0x2bb66c=_0x2bb66c-0x0;var _0x1e0f98=_0xdac3[_0x2bb66c];return _0x1e0f98;};'use strict';var _=require(_0x3dac('0x0'));var util=require(_0x3dac('0x1'));var logger=require(_0x3dac('0x2'))('api');var moment=require(_0x3dac('0x3'));var BPromise=require(_0x3dac('0x4'));var rp=require(_0x3dac('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3dac('0x6'));var config=require(_0x3dac('0x7'));var attributes=require(_0x3dac('0x8'));module[_0x3dac('0x9')]=function(_0x466516,_0x4bca4c){return _0x466516['define'](_0x3dac('0xa'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':['name',_0x3dac('0xb')]},{'unique':!![],'name':_0x3dac('0xc'),'fields':[_0x3dac('0xd'),'ChatWebsiteId']},{'unique':!![],'name':'name_mail','fields':['name',_0x3dac('0xe')]},{'unique':!![],'name':_0x3dac('0xf'),'fields':[_0x3dac('0xd'),_0x3dac('0x10')]},{'unique':!![],'name':'name_fax','fields':[_0x3dac('0xd'),_0x3dac('0x11')]},{'unique':!![],'name':_0x3dac('0x12'),'fields':[_0x3dac('0xd'),_0x3dac('0x13')]},{'unique':!![],'name':_0x3dac('0x14'),'fields':[_0x3dac('0xd'),_0x3dac('0x15')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfe05=['../../config/environment','exports','define','tools_dispositions','name_voice','name_chat','ChatWebsiteId','name_mail','name','MailAccountId','name_sms','FaxAccountId','name_openchannel','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfe05,0x1bf));var _0x5fe0=function(_0x413877,_0x7a49a7){_0x413877=_0x413877-0x0;var _0x42a3b6=_0xfe05[_0x413877];return _0x42a3b6;};'use strict';var _=require(_0x5fe0('0x0'));var util=require(_0x5fe0('0x1'));var logger=require(_0x5fe0('0x2'))(_0x5fe0('0x3'));var moment=require(_0x5fe0('0x4'));var BPromise=require(_0x5fe0('0x5'));var rp=require(_0x5fe0('0x6'));var fs=require('fs');var path=require(_0x5fe0('0x7'));var rimraf=require(_0x5fe0('0x8'));var config=require(_0x5fe0('0x9'));var attributes=require('./disposition.attributes');module[_0x5fe0('0xa')]=function(_0x4a2e1b,_0x651cfd){return _0x4a2e1b[_0x5fe0('0xb')]('Disposition',attributes,{'tableName':_0x5fe0('0xc'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x5fe0('0xd'),'fields':['name','ListId']},{'unique':!![],'name':_0x5fe0('0xe'),'fields':['name',_0x5fe0('0xf')]},{'unique':!![],'name':_0x5fe0('0x10'),'fields':[_0x5fe0('0x11'),_0x5fe0('0x12')]},{'unique':!![],'name':_0x5fe0('0x13'),'fields':['name','SmsAccountId']},{'unique':!![],'name':'name_fax','fields':[_0x5fe0('0x11'),_0x5fe0('0x14')]},{'unique':!![],'name':_0x5fe0('0x15'),'fields':[_0x5fe0('0x11'),'OpenchannelAccountId']},{'unique':!![],'name':_0x5fe0('0x16'),'fields':[_0x5fe0('0x11'),_0x5fe0('0x17')]}],'timestamps':!![]});};
\ No newline at end of file
index 4987ac0..3f225c8 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(_0x5bc93b,_0x2694a3){var _0x2ed54b=function(_0x303ee9){while(--_0x303ee9){_0x5bc93b['push'](_0x5bc93b['shift']());}};_0x2ed54b(++_0x2694a3);}(_0xa9e0,0x123));var _0x0a9e=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa9e0[_0xea8947];return _0x2455e9;};'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(_0x399f6b,_0x71e020){var _0x3a132d=function(_0x450fb3){while(--_0x450fb3){_0x399f6b['push'](_0x399f6b['shift']());}};_0x3a132d(++_0x71e020);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'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 314e9ce..b17c09a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97ee=['multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./disposition.controller','isAuthenticated','/:id','show','create','put','update','delete','destroy'];(function(_0x18b04b,_0x14e373){var _0x361749=function(_0xbf51f6){while(--_0xbf51f6){_0x18b04b['push'](_0x18b04b['shift']());}};_0x361749(++_0x14e373);}(_0x97ee,0x11d));var _0xe97e=function(_0x308213,_0x224541){_0x308213=_0x308213-0x0;var _0x2e1619=_0x97ee[_0x308213];return _0x2e1619;};'use strict';var multer=require(_0xe97e('0x0'));var util=require('util');var path=require(_0xe97e('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe97e('0x2')]();var fs_extra=require(_0xe97e('0x3'));var auth=require(_0xe97e('0x4'));var interaction=require(_0xe97e('0x5'));var config=require('../../config/environment');var controller=require(_0xe97e('0x6'));router['get']('/',auth[_0xe97e('0x7')](),controller['index']);router['get'](_0xe97e('0x8'),auth[_0xe97e('0x7')](),controller[_0xe97e('0x9')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe97e('0xa')]);router[_0xe97e('0xb')](_0xe97e('0x8'),auth[_0xe97e('0x7')](),controller[_0xe97e('0xc')]);router[_0xe97e('0xd')]('/:id',auth[_0xe97e('0x7')](),controller[_0xe97e('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xc1d9=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','/:id','show','post','update','delete','destroy','multer','util','connect-timeout'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xc1d9,0x69));var _0x9c1d=function(_0x150509,_0x32543b){_0x150509=_0x150509-0x0;var _0x4a05eb=_0xc1d9[_0x150509];return _0x4a05eb;};'use strict';var multer=require(_0x9c1d('0x0'));var util=require(_0x9c1d('0x1'));var path=require('path');var timeout=require(_0x9c1d('0x2'));var express=require(_0x9c1d('0x3'));var router=express[_0x9c1d('0x4')]();var fs_extra=require(_0x9c1d('0x5'));var auth=require(_0x9c1d('0x6'));var interaction=require(_0x9c1d('0x7'));var config=require(_0x9c1d('0x8'));var controller=require(_0x9c1d('0x9'));router[_0x9c1d('0xa')]('/',auth[_0x9c1d('0xb')](),controller['index']);router[_0x9c1d('0xa')](_0x9c1d('0xc'),auth[_0x9c1d('0xb')](),controller[_0x9c1d('0xd')]);router[_0x9c1d('0xe')]('/',auth[_0x9c1d('0xb')](),controller['create']);router['put'](_0x9c1d('0xc'),auth[_0x9c1d('0xb')](),controller[_0x9c1d('0xf')]);router[_0x9c1d('0x10')](_0x9c1d('0xc'),auth[_0x9c1d('0xb')](),controller[_0x9c1d('0x11')]);module['exports']=router;
\ No newline at end of file
index b0bc585..a69895c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a4d=['mandatoryDisposition','sequelize','exports','STRING','xCALLY\x20Motion\x20Fax','localstationid','2400','4800','7200','9600','12000','ENUM','14400','SIP','IAX','DADHI','KHOMP','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId'];(function(_0x83b40d,_0x5349fb){var _0x5d0269=function(_0x168930){while(--_0x168930){_0x83b40d['push'](_0x83b40d['shift']());}};_0x5d0269(++_0x5349fb);}(_0x2a4d,0x1e1));var _0xd2a4=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x2a4d[_0x5f1391];return _0x50ebe3;};'use strict';var Sequelize=require(_0xd2a4('0x0'));module[_0xd2a4('0x1')]={'name':{'type':Sequelize[_0xd2a4('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd2a4('0x2')]},'ecm':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0xd2a4('0x2')],'defaultValue':_0xd2a4('0x3')},'localstationid':{'type':Sequelize['STRING'],'unique':_0xd2a4('0x4')},'minrate':{'type':Sequelize['ENUM'](_0xd2a4('0x5'),_0xd2a4('0x6'),_0xd2a4('0x7'),_0xd2a4('0x8'),_0xd2a4('0x9'),'14400'),'defaultValue':_0xd2a4('0x6')},'maxrate':{'type':Sequelize[_0xd2a4('0xa')](_0xd2a4('0x5'),'4800',_0xd2a4('0x7'),_0xd2a4('0x8'),_0xd2a4('0x9'),_0xd2a4('0xb')),'defaultValue':_0xd2a4('0xb')},'modem':{'type':Sequelize[_0xd2a4('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0xd2a4('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xd2a4('0xa')](_0xd2a4('0xc'),_0xd2a4('0xd'),_0xd2a4('0xe'),_0xd2a4('0xf')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0xd2a4('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xd2a4('0x10')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xd2a4('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd2a4('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd2a4('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd2a4('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd2a4('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd2a4('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd2a4('0x12')],'allowNull':!![],'defaultValue':null,'comment':_0xd2a4('0x13')},'mandatoryDisposition':{'type':Sequelize[_0xd2a4('0x11')],'defaultValue':![],'comment':_0xd2a4('0x14'),'set':function(_0x22e0c5){if(!_0x22e0c5)this[_0xd2a4('0x15')](_0xd2a4('0x16'),null);this['setDataValue'](_0xd2a4('0x17'),_0x22e0c5);}}};
\ No newline at end of file
+var _0x9696=['2400','7200','9600','12000','14400','4800','v17,v27,v29','INTEGER','IAX','KHOMP','SIP','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','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','exports','STRING','yes','xCALLY\x20Motion\x20Fax','localstationid','ENUM'];(function(_0x3f0a0d,_0x2ed710){var _0x2fd911=function(_0x52717a){while(--_0x52717a){_0x3f0a0d['push'](_0x3f0a0d['shift']());}};_0x2fd911(++_0x2ed710);}(_0x9696,0x1bb));var _0x6969=function(_0x1c2e50,_0x4f0f27){_0x1c2e50=_0x1c2e50-0x0;var _0x47c34d=_0x9696[_0x1c2e50];return _0x47c34d;};'use strict';var Sequelize=require(_0x6969('0x0'));module[_0x6969('0x1')]={'name':{'type':Sequelize[_0x6969('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x6969('0x2')]},'ecm':{'type':Sequelize['ENUM'](_0x6969('0x3'),'no'),'defaultValue':_0x6969('0x3')},'headerinfo':{'type':Sequelize[_0x6969('0x2')],'defaultValue':_0x6969('0x4')},'localstationid':{'type':Sequelize[_0x6969('0x2')],'unique':_0x6969('0x5')},'minrate':{'type':Sequelize[_0x6969('0x6')](_0x6969('0x7'),'4800',_0x6969('0x8'),_0x6969('0x9'),_0x6969('0xa'),_0x6969('0xb')),'defaultValue':_0x6969('0xc')},'maxrate':{'type':Sequelize['ENUM'](_0x6969('0x7'),'4800',_0x6969('0x8'),'9600',_0x6969('0xa'),_0x6969('0xb')),'defaultValue':_0x6969('0xb')},'modem':{'type':Sequelize[_0x6969('0x2')],'defaultValue':_0x6969('0xd')},'gateway':{'type':Sequelize[_0x6969('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x6969('0xe')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM']('SIP',_0x6969('0xf'),'DADHI',_0x6969('0x10')),'defaultValue':_0x6969('0x11')},'key':{'type':Sequelize[_0x6969('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x6969('0x12')],'defaultValue':function(){return _0x6969('0x13');}},'notificationSound':{'type':Sequelize[_0x6969('0x14')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x6969('0x14')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x6969('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x6969('0x14')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6969('0x14')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6969('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6969('0xe')],'allowNull':!![],'defaultValue':null,'comment':_0x6969('0x15')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1b19eb){if(!_0x1b19eb)this['setDataValue'](_0x6969('0x16'),null);this[_0x6969('0x17')](_0x6969('0x18'),_0x1b19eb);}}};
\ No newline at end of file
index 3318b79..bdb142c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe49e=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','socket.io-emitter','./faxAccount.socket','register','client','http','then','info','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','FaxAccount,\x20%s,\x20%s','message','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','save','update','destroy','FaxAccounts','UserProfileResource','stack','name','send','index','Pause','FaxAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','filter','where','map','VIRTUAL','merge','options','count','includeAll','include','findAll','rows','catch','show','mandatoryDispositionPause','rawAttributes','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','body','params','describe','addDisposition','Disposition','getDispositions','nolimit','pick','removeDispositions','ids','addAnswer','FaxAccountId','CannedAnswer','getAnswers','order','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','CmContact','Contact','User','Owner','internal','Tag','Tags','tag','addApplications','findOne','sequelize','transaction','FaxApplication','bulkCreate','findAndCountAll','getApplications','context','from-voip-provider','exten','localstationid','app','system','Fax\x20Extension','priority','appdata','push','CDR(type)=inbound-fax','ecm','gateway','headerinfo','minrate','modem','FAXOPT(','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','tech','createdAt','updatedAt','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','Contacts','attachments','server/files/attachments','isNil','from','fax','List','ListId','List\x20not\x20found','out','filename','Messages','Contact\x20not\x20found','spread','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','getAgents','rimraf','request-promise','moment'];(function(_0x6ca895,_0x312d00){var _0xf71c47=function(_0x39e20a){while(--_0x39e20a){_0x6ca895['push'](_0x6ca895['shift']());}};_0xf71c47(++_0x312d00);}(_0xe49e,0xb7));var _0xee49=function(_0x4c8d54,_0xded934){_0x4c8d54=_0x4c8d54-0x0;var _0x232b52=_0xe49e[_0x4c8d54];return _0x232b52;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xee49('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xee49('0x1'));var moment=require(_0xee49('0x2'));var BPromise=require(_0xee49('0x3'));var Mustache=require(_0xee49('0x4'));var util=require(_0xee49('0x5'));var path=require(_0xee49('0x6'));var sox=require(_0xee49('0x7'));var csv=require(_0xee49('0x8'));var ejs=require(_0xee49('0x9'));var fs=require('fs');var fs_extra=require(_0xee49('0xa'));var _=require(_0xee49('0xb'));var squel=require(_0xee49('0xc'));var crypto=require(_0xee49('0xd'));var jsforce=require(_0xee49('0xe'));var deskjs=require(_0xee49('0xf'));var toCsv=require('to-csv');var querystring=require(_0xee49('0x10'));var Papa=require('papaparse');var Redis=require(_0xee49('0x11'));var authService=require(_0xee49('0x12'));var qs=require(_0xee49('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xee49('0x14'))(_0xee49('0x15'));var utils=require(_0xee49('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xee49('0x17'))['db'];config[_0xee49('0x18')]=_[_0xee49('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xee49('0x1a'))(new Redis(config[_0xee49('0x18')]));require(_0xee49('0x1b'))[_0xee49('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0xee49('0x1d')][_0xee49('0x1e')]({'port':0x232c});var client9002=jayson[_0xee49('0x1d')][_0xee49('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x5b07ba,_0x34465a,_0x44140d,_0x184dbd){return new BPromise(function(_0x15e5b3,_0x463757){var _0x4c4861=_0x184dbd||client;return _0x4c4861['request'](_0x5b07ba,_0x44140d)[_0xee49('0x1f')](function(_0x560646){logger[_0xee49('0x20')]('FaxAccount,\x20%s,\x20%s',_0x34465a,_0xee49('0x21'));logger['debug'](_0xee49('0x22'),_0x34465a,_0xee49('0x21'),JSON['stringify'](_0x560646));if(_0x560646['error']){if(_0x560646[_0xee49('0x23')][_0xee49('0x24')]===0x1f4){logger[_0xee49('0x23')](_0xee49('0x25'),_0x34465a,_0x560646[_0xee49('0x23')][_0xee49('0x26')]);return _0x463757(_0x560646['error']['message']);}logger['error'](_0xee49('0x25'),_0x34465a,_0x560646[_0xee49('0x23')][_0xee49('0x26')]);return _0x15e5b3(_0x560646[_0xee49('0x23')]['message']);}else{logger[_0xee49('0x20')]('FaxAccount,\x20%s,\x20%s',_0x34465a,'request\x20sent');_0x15e5b3(_0x560646['result'][_0xee49('0x26')]);}})['catch'](function(_0x1713f5){logger[_0xee49('0x23')](_0xee49('0x25'),_0x34465a,_0x1713f5);_0x463757(_0x1713f5);});});}function respondWithStatusCode(_0x1ea2a1,_0x3dbe7b){_0x3dbe7b=_0x3dbe7b||0xcc;return function(_0x35e7ae){if(_0x35e7ae){return _0x1ea2a1[_0xee49('0x27')](_0x3dbe7b);}return _0x1ea2a1[_0xee49('0x28')](_0x3dbe7b)[_0xee49('0x29')]();};}function respondWithResult(_0x1eeddb,_0x452702){_0x452702=_0x452702||0xc8;return function(_0x14a126){if(_0x14a126){return _0x1eeddb[_0xee49('0x28')](_0x452702)[_0xee49('0x2a')](_0x14a126);}};}function respondWithFilteredResult(_0x5df8da,_0x5ca50d){return function(_0x5d9dd1){if(_0x5d9dd1){var _0x41a71e=typeof _0x5ca50d[_0xee49('0x2b')]===_0xee49('0x2c')&&typeof _0x5ca50d[_0xee49('0x2d')]==='undefined';var _0x178016=_0x5d9dd1['count'];var _0x496952=_0x41a71e?0x0:_0x5ca50d[_0xee49('0x2b')];var _0x23eb50=_0x41a71e?_0x5d9dd1['count']:_0x5ca50d[_0xee49('0x2b')]+_0x5ca50d[_0xee49('0x2d')];var _0x319631;if(_0x23eb50>=_0x178016){_0x23eb50=_0x178016;_0x319631=0xc8;}else{_0x319631=0xce;}_0x5df8da['status'](_0x319631);return _0x5df8da[_0xee49('0x2e')](_0xee49('0x2f'),_0x496952+'-'+_0x23eb50+'/'+_0x178016)[_0xee49('0x2a')](_0x5d9dd1);}return null;};}function patchUpdates(_0x22f4cd){return function(_0x7bff5b){try{jsonpatch[_0xee49('0x30')](_0x7bff5b,_0x22f4cd,!![]);}catch(_0x2925d9){return BPromise['reject'](_0x2925d9);}return _0x7bff5b[_0xee49('0x31')]();};}function saveUpdates(_0x878e66,_0x3ff69d){return function(_0x4c1174){if(_0x4c1174){return _0x4c1174[_0xee49('0x32')](_0x878e66)[_0xee49('0x1f')](function(_0x2f2aa9){return _0x2f2aa9;});}return null;};}function removeEntity(_0x4c938f,_0x24fe47){return function(_0x1980bc){if(_0x1980bc){return _0x1980bc[_0xee49('0x33')]()[_0xee49('0x1f')](function(){var _0xb7caed=_0x1980bc['get']({'plain':!![]});var _0x2fd735=_0xee49('0x34');return db[_0xee49('0x35')][_0xee49('0x33')]({'where':{'type':_0x2fd735,'resourceId':_0xb7caed['id']}})[_0xee49('0x1f')](function(){return _0x1980bc;});})[_0xee49('0x1f')](function(){_0x4c938f['status'](0xcc)[_0xee49('0x29')]();});}};}function handleEntityNotFound(_0x3551fd,_0xbaf160){return function(_0xc71136){if(!_0xc71136){_0x3551fd['sendStatus'](0x194);}return _0xc71136;};}function handleError(_0x22e3e5,_0x4b7e2f){_0x4b7e2f=_0x4b7e2f||0x1f4;return function(_0x92c13a){logger[_0xee49('0x23')](_0x92c13a[_0xee49('0x36')]);if(_0x92c13a[_0xee49('0x37')]){delete _0x92c13a[_0xee49('0x37')];}_0x22e3e5[_0xee49('0x28')](_0x4b7e2f)[_0xee49('0x38')](_0x92c13a);};}exports[_0xee49('0x39')]=function(_0x2e5b5d,_0x5ca7dc){var _0x3ec1a9={'include':[{'model':db[_0xee49('0x3a')],'as':'mandatoryDispositionPause'}]},_0x3076dc={},_0x3c1512={'count':0x0,'rows':[]};var _0x18bb7d=_['map'](db[_0xee49('0x3b')]['rawAttributes'],function(_0x3712f7){return{'name':_0x3712f7[_0xee49('0x3c')],'type':_0x3712f7[_0xee49('0x3d')][_0xee49('0x3e')]};});_0x3076dc[_0xee49('0x3f')]=_['map'](_0x18bb7d,'name');_0x3076dc[_0xee49('0x40')]=_[_0xee49('0x41')](_0x2e5b5d[_0xee49('0x40')]);_0x3076dc[_0xee49('0x42')]=_[_0xee49('0x43')](_0x3076dc['model'],_0x3076dc[_0xee49('0x40')]);_0x3ec1a9[_0xee49('0x44')]=_[_0xee49('0x43')](_0x3076dc[_0xee49('0x3f')],qs[_0xee49('0x45')](_0x2e5b5d['query'][_0xee49('0x45')]));_0x3ec1a9[_0xee49('0x44')]=_0x3ec1a9['attributes'][_0xee49('0x46')]?_0x3ec1a9['attributes']:_0x3076dc[_0xee49('0x3f')];if(!_0x2e5b5d[_0xee49('0x40')][_0xee49('0x47')]('nolimit')){_0x3ec1a9[_0xee49('0x2d')]=qs[_0xee49('0x2d')](_0x2e5b5d['query'][_0xee49('0x2d')]);_0x3ec1a9[_0xee49('0x2b')]=qs[_0xee49('0x2b')](_0x2e5b5d[_0xee49('0x40')][_0xee49('0x2b')]);}_0x3ec1a9['order']=qs[_0xee49('0x48')](_0x2e5b5d[_0xee49('0x40')][_0xee49('0x48')]);_0x3ec1a9['where']=qs[_0xee49('0x42')](_['pick'](_0x2e5b5d[_0xee49('0x40')],_0x3076dc[_0xee49('0x42')]),_0x18bb7d);if(_0x2e5b5d[_0xee49('0x40')][_0xee49('0x49')]){_0x3ec1a9[_0xee49('0x4a')]=_['merge'](_0x3ec1a9['where'],{'$or':_[_0xee49('0x4b')](_0x18bb7d,function(_0x24afac){if(_0x24afac[_0xee49('0x3d')]!==_0xee49('0x4c')){var _0x591f10={};_0x591f10[_0x24afac[_0xee49('0x37')]]={'$like':'%'+_0x2e5b5d[_0xee49('0x40')][_0xee49('0x49')]+'%'};return _0x591f10;}})});}_0x3ec1a9=_[_0xee49('0x4d')]({},_0x3ec1a9,_0x2e5b5d[_0xee49('0x4e')]);var _0x4be11a={'where':_0x3ec1a9[_0xee49('0x4a')]};return db[_0xee49('0x3b')]['count'](_0x4be11a)[_0xee49('0x1f')](function(_0x3232c0){_0x3c1512[_0xee49('0x4f')]=_0x3232c0;if(_0x2e5b5d[_0xee49('0x40')][_0xee49('0x50')]){_0x3ec1a9[_0xee49('0x51')]=[{'all':!![]}];}return db[_0xee49('0x3b')][_0xee49('0x52')](_0x3ec1a9);})[_0xee49('0x1f')](function(_0x14db3a){_0x3c1512[_0xee49('0x53')]=_0x14db3a;return _0x3c1512;})[_0xee49('0x1f')](respondWithFilteredResult(_0x5ca7dc,_0x3ec1a9))[_0xee49('0x54')](handleError(_0x5ca7dc,null));};exports[_0xee49('0x55')]=function(_0x1b049c,_0x275202){var _0x3fd082={'raw':![],'where':{'id':_0x1b049c['params']['id']},'include':[{'model':db[_0xee49('0x3a')],'as':_0xee49('0x56')}]},_0x1a4b26={};_0x1a4b26[_0xee49('0x3f')]=_[_0xee49('0x41')](db['FaxAccount'][_0xee49('0x57')]);_0x1a4b26['query']=_[_0xee49('0x41')](_0x1b049c[_0xee49('0x40')]);_0x1a4b26[_0xee49('0x42')]=_[_0xee49('0x43')](_0x1a4b26['model'],_0x1a4b26[_0xee49('0x40')]);_0x3fd082['attributes']=_[_0xee49('0x43')](_0x1a4b26[_0xee49('0x3f')],qs[_0xee49('0x45')](_0x1b049c[_0xee49('0x40')][_0xee49('0x45')]));_0x3fd082['attributes']=_0x3fd082['attributes']['length']?_0x3fd082[_0xee49('0x44')]:_0x1a4b26[_0xee49('0x3f')];if(_0x1b049c[_0xee49('0x40')][_0xee49('0x50')]){_0x3fd082[_0xee49('0x51')]=[{'all':!![]}];}_0x3fd082=_['merge']({},_0x3fd082,_0x1b049c[_0xee49('0x4e')]);return db['FaxAccount'][_0xee49('0x58')](_0x3fd082)[_0xee49('0x1f')](handleEntityNotFound(_0x275202,null))['then'](respondWithResult(_0x275202,null))[_0xee49('0x54')](handleError(_0x275202,null));};exports[_0xee49('0x59')]=function(_0x3affb3,_0x472a29){return db['FaxAccount'][_0xee49('0x59')](_0x3affb3['body'],{})[_0xee49('0x1f')](function(_0x30a428){var _0x51ac8c=_0x3affb3['user'][_0xee49('0x5a')]({'plain':!![]});if(!_0x51ac8c)throw new Error(_0xee49('0x5b'));if(_0x51ac8c['role']===_0xee49('0x5c')){var _0x417a34=_0x30a428[_0xee49('0x5a')]({'plain':!![]});var _0x5da4ef=_0xee49('0x34');return db[_0xee49('0x5d')]['find']({'where':{'name':_0x5da4ef,'userProfileId':_0x51ac8c[_0xee49('0x5e')]},'raw':!![]})[_0xee49('0x1f')](function(_0x3ebecd){if(_0x3ebecd&&_0x3ebecd[_0xee49('0x5f')]===0x0){return db[_0xee49('0x35')][_0xee49('0x59')]({'name':_0x417a34[_0xee49('0x37')],'resourceId':_0x417a34['id'],'type':_0x3ebecd[_0xee49('0x37')],'sectionId':_0x3ebecd['id']},{})[_0xee49('0x1f')](function(){return _0x30a428;});}else{return _0x30a428;}})[_0xee49('0x54')](function(_0x2fd6f8){logger[_0xee49('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2fd6f8);throw _0x2fd6f8;});}return _0x30a428;})[_0xee49('0x1f')](respondWithResult(_0x472a29,0xc9))[_0xee49('0x54')](handleError(_0x472a29,null));};exports['update']=function(_0x17c562,_0x53b00c){if(_0x17c562[_0xee49('0x60')]['id']){delete _0x17c562[_0xee49('0x60')]['id'];}return db[_0xee49('0x3b')][_0xee49('0x58')]({'where':{'id':_0x17c562['params']['id']},'include':[{'model':db[_0xee49('0x3a')],'as':_0xee49('0x56')}]})[_0xee49('0x1f')](handleEntityNotFound(_0x53b00c,null))[_0xee49('0x1f')](saveUpdates(_0x17c562[_0xee49('0x60')],null))[_0xee49('0x1f')](respondWithResult(_0x53b00c,null))['catch'](handleError(_0x53b00c,null));};exports[_0xee49('0x33')]=function(_0x380928,_0x59bc48){return db[_0xee49('0x3b')][_0xee49('0x58')]({'where':{'id':_0x380928[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x59bc48,null))[_0xee49('0x1f')](removeEntity(_0x59bc48,null))[_0xee49('0x54')](handleError(_0x59bc48,null));};exports[_0xee49('0x62')]=function(_0x54c598,_0x4fbdf){return db[_0xee49('0x3b')][_0xee49('0x62')]()['then'](respondWithResult(_0x4fbdf,null))[_0xee49('0x54')](handleError(_0x4fbdf,null));};exports[_0xee49('0x63')]=function(_0x4ca754,_0x7d1c4e,_0x516e9c){if(_0x4ca754[_0xee49('0x60')]['id']){delete _0x4ca754['body']['id'];}return db[_0xee49('0x3b')][_0xee49('0x58')]({'where':{'id':_0x4ca754[_0xee49('0x61')]['id']}})['then'](handleEntityNotFound(_0x7d1c4e,null))[_0xee49('0x1f')](function(_0x1be285){if(_0x1be285){_0x4ca754[_0xee49('0x60')]['FaxAccountId']=_0x1be285['id'];return db[_0xee49('0x64')][_0xee49('0x59')](_0x4ca754[_0xee49('0x60')]);}})['then'](respondWithResult(_0x7d1c4e,null))[_0xee49('0x54')](handleError(_0x7d1c4e,null));};exports[_0xee49('0x65')]=function(_0x3167d0,_0x11bb4,_0x23aa6e){var _0x2cb181={'raw':![],'where':{}};var _0x30f7ae={};var _0x505283={'count':0x0,'rows':[]};return db[_0xee49('0x3b')]['findOne']({'where':{'id':_0x3167d0[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x11bb4,null))[_0xee49('0x1f')](function(_0x215ee6){if(_0x215ee6){_0x30f7ae['model']=_[_0xee49('0x41')](db[_0xee49('0x64')]['rawAttributes']);_0x30f7ae[_0xee49('0x40')]=_[_0xee49('0x41')](_0x3167d0[_0xee49('0x40')]);_0x30f7ae[_0xee49('0x42')]=_['intersection'](_0x30f7ae[_0xee49('0x3f')],_0x30f7ae['query']);_0x2cb181[_0xee49('0x44')]=_[_0xee49('0x43')](_0x30f7ae[_0xee49('0x3f')],qs['fields'](_0x3167d0[_0xee49('0x40')]['fields']));_0x2cb181[_0xee49('0x44')]=_0x2cb181[_0xee49('0x44')][_0xee49('0x46')]?_0x2cb181[_0xee49('0x44')]:_0x30f7ae[_0xee49('0x3f')];if(!_0x3167d0[_0xee49('0x40')][_0xee49('0x47')](_0xee49('0x66'))){_0x2cb181['limit']=qs[_0xee49('0x2d')](_0x3167d0['query'][_0xee49('0x2d')]);_0x2cb181[_0xee49('0x2b')]=qs[_0xee49('0x2b')](_0x3167d0[_0xee49('0x40')][_0xee49('0x2b')]);}_0x2cb181['order']=qs[_0xee49('0x48')](_0x3167d0[_0xee49('0x40')][_0xee49('0x48')]);_0x2cb181[_0xee49('0x4a')]=qs[_0xee49('0x42')](_[_0xee49('0x67')](_0x3167d0['query'],_0x30f7ae['filters']));_0x2cb181[_0xee49('0x4a')]['FaxAccountId']=_0x215ee6['id'];if(_0x3167d0[_0xee49('0x40')][_0xee49('0x49')]){_0x2cb181[_0xee49('0x4a')]=_[_0xee49('0x4d')](_0x2cb181[_0xee49('0x4a')],{'$or':_[_0xee49('0x4b')](_0x2cb181[_0xee49('0x44')],function(_0x33d85b){var _0x9c78bc={};_0x9c78bc[_0x33d85b]={'$like':'%'+_0x3167d0[_0xee49('0x40')][_0xee49('0x49')]+'%'};return _0x9c78bc;})});}_0x2cb181=_[_0xee49('0x4d')]({},_0x2cb181,_0x3167d0[_0xee49('0x4e')]);return db[_0xee49('0x64')][_0xee49('0x4f')]({'where':_0x2cb181[_0xee49('0x4a')]})[_0xee49('0x1f')](function(_0x1e17b9){_0x505283[_0xee49('0x4f')]=_0x1e17b9;if(_0x3167d0[_0xee49('0x40')][_0xee49('0x50')]){_0x2cb181['include']=[{'all':!![]}];}return db[_0xee49('0x64')][_0xee49('0x52')](_0x2cb181);})[_0xee49('0x1f')](function(_0x4a3c83){_0x505283[_0xee49('0x53')]=_0x4a3c83;return _0x505283;});}})[_0xee49('0x1f')](respondWithFilteredResult(_0x11bb4,_0x2cb181))['catch'](handleError(_0x11bb4,null));};exports[_0xee49('0x68')]=function(_0x1f4f2d,_0x4b0e9c,_0x94384a){return db[_0xee49('0x3b')][_0xee49('0x58')]({'where':{'id':_0x1f4f2d[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x4b0e9c,null))[_0xee49('0x1f')](function(_0x40597e){if(_0x40597e){return _0x40597e[_0xee49('0x68')](_0x1f4f2d[_0xee49('0x40')][_0xee49('0x69')]);}})[_0xee49('0x1f')](respondWithStatusCode(_0x4b0e9c,null))[_0xee49('0x54')](handleError(_0x4b0e9c,null));};exports[_0xee49('0x6a')]=function(_0x6cb1e6,_0x4f078b,_0x500b4a){if(_0x6cb1e6[_0xee49('0x60')]['id']){delete _0x6cb1e6[_0xee49('0x60')]['id'];}return db[_0xee49('0x3b')]['find']({'where':{'id':_0x6cb1e6[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x4f078b,null))['then'](function(_0x1d631c){if(_0x1d631c){_0x6cb1e6[_0xee49('0x60')][_0xee49('0x6b')]=_0x1d631c['id'];return db[_0xee49('0x6c')][_0xee49('0x59')](_0x6cb1e6[_0xee49('0x60')]);}})[_0xee49('0x1f')](respondWithResult(_0x4f078b,null))[_0xee49('0x54')](handleError(_0x4f078b,null));};exports[_0xee49('0x6d')]=function(_0x2c0f84,_0x3de5f6,_0x3ac08b){var _0x523697={'raw':![],'where':{}};var _0x2d27df={};var _0x4c3d3e={'count':0x0,'rows':[]};return db[_0xee49('0x3b')]['findOne']({'where':{'id':_0x2c0f84[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x3de5f6,null))[_0xee49('0x1f')](function(_0xfadca2){if(_0xfadca2){_0x2d27df['model']=_[_0xee49('0x41')](db['CannedAnswer'][_0xee49('0x57')]);_0x2d27df[_0xee49('0x40')]=_[_0xee49('0x41')](_0x2c0f84['query']);_0x2d27df[_0xee49('0x42')]=_[_0xee49('0x43')](_0x2d27df[_0xee49('0x3f')],_0x2d27df[_0xee49('0x40')]);_0x523697[_0xee49('0x44')]=_[_0xee49('0x43')](_0x2d27df['model'],qs[_0xee49('0x45')](_0x2c0f84['query'][_0xee49('0x45')]));_0x523697[_0xee49('0x44')]=_0x523697['attributes'][_0xee49('0x46')]?_0x523697[_0xee49('0x44')]:_0x2d27df[_0xee49('0x3f')];if(!_0x2c0f84[_0xee49('0x40')][_0xee49('0x47')](_0xee49('0x66'))){_0x523697[_0xee49('0x2d')]=qs[_0xee49('0x2d')](_0x2c0f84[_0xee49('0x40')][_0xee49('0x2d')]);_0x523697[_0xee49('0x2b')]=qs[_0xee49('0x2b')](_0x2c0f84[_0xee49('0x40')][_0xee49('0x2b')]);}_0x523697[_0xee49('0x6e')]=qs['sort'](_0x2c0f84[_0xee49('0x40')]['sort']);_0x523697[_0xee49('0x4a')]=qs[_0xee49('0x42')](_['pick'](_0x2c0f84[_0xee49('0x40')],_0x2d27df[_0xee49('0x42')]));_0x523697[_0xee49('0x4a')]['FaxAccountId']=_0xfadca2['id'];if(_0x2c0f84[_0xee49('0x40')][_0xee49('0x49')]){_0x523697[_0xee49('0x4a')]=_['merge'](_0x523697['where'],{'$or':_[_0xee49('0x4b')](_0x523697[_0xee49('0x44')],function(_0xca34fe){var _0x360590={};_0x360590[_0xca34fe]={'$like':'%'+_0x2c0f84[_0xee49('0x40')][_0xee49('0x49')]+'%'};return _0x360590;})});}_0x523697=_[_0xee49('0x4d')]({},_0x523697,_0x2c0f84[_0xee49('0x4e')]);return db['CannedAnswer'][_0xee49('0x4f')]({'where':_0x523697['where']})[_0xee49('0x1f')](function(_0x74f95b){_0x4c3d3e[_0xee49('0x4f')]=_0x74f95b;if(_0x2c0f84[_0xee49('0x40')][_0xee49('0x50')]){_0x523697[_0xee49('0x51')]=[{'all':!![]}];}return db[_0xee49('0x6c')][_0xee49('0x52')](_0x523697);})[_0xee49('0x1f')](function(_0x52cf14){_0x4c3d3e[_0xee49('0x53')]=_0x52cf14;return _0x4c3d3e;});}})[_0xee49('0x1f')](respondWithFilteredResult(_0x3de5f6,_0x523697))[_0xee49('0x54')](handleError(_0x3de5f6,null));};exports[_0xee49('0x6f')]=function(_0x2e0c68,_0x1aebc5,_0x1b86b8){return db['FaxAccount'][_0xee49('0x58')]({'where':{'id':_0x2e0c68[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x1aebc5,null))['then'](function(_0x424e0d){if(_0x424e0d){return _0x424e0d[_0xee49('0x6f')](_0x2e0c68[_0xee49('0x40')][_0xee49('0x69')]);}})[_0xee49('0x1f')](respondWithStatusCode(_0x1aebc5,null))[_0xee49('0x54')](handleError(_0x1aebc5,null));};exports[_0xee49('0x70')]=function(_0xdc8868,_0x549ea6,_0x377cab){return db[_0xee49('0x71')][_0xee49('0x58')]({'where':{'id':_0xdc8868[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x549ea6,null))['then'](function(_0x5954dd){if(_0x5954dd){return _0x5954dd['addInteraction'](_0xdc8868[_0xee49('0x60')][_0xee49('0x69')],_[_0xee49('0x72')](_0xdc8868['body'],[_0xee49('0x69'),'id'])||{});}})[_0xee49('0x1f')](respondWithResult(_0x549ea6,null))[_0xee49('0x54')](handleError(_0x549ea6,null));};exports[_0xee49('0x73')]=function(_0x1116c7,_0x59dcad,_0x431d66){var _0x45093d={'raw':![],'where':{}};var _0x82478c={};var _0x5b78ab={'count':0x0,'rows':[]};return db[_0xee49('0x3b')]['findOne']({'where':{'id':_0x1116c7['params']['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x59dcad,null))[_0xee49('0x1f')](function(_0x3115b3){if(_0x3115b3){_0x82478c[_0xee49('0x3f')]=_['keys'](db['FaxInteraction'][_0xee49('0x57')]);_0x82478c['query']=_[_0xee49('0x41')](_0x1116c7[_0xee49('0x40')]);_0x82478c[_0xee49('0x42')]=_[_0xee49('0x43')](_0x82478c['model'],_0x82478c[_0xee49('0x40')]);_0x45093d[_0xee49('0x44')]=_[_0xee49('0x43')](_0x82478c[_0xee49('0x3f')],qs[_0xee49('0x45')](_0x1116c7[_0xee49('0x40')][_0xee49('0x45')]));_0x45093d[_0xee49('0x44')]=_0x45093d[_0xee49('0x44')][_0xee49('0x46')]?_0x45093d['attributes']:_0x82478c['model'];if(!_0x1116c7[_0xee49('0x40')][_0xee49('0x47')](_0xee49('0x66'))){_0x45093d[_0xee49('0x2d')]=qs['limit'](_0x1116c7[_0xee49('0x40')][_0xee49('0x2d')]);_0x45093d[_0xee49('0x2b')]=qs[_0xee49('0x2b')](_0x1116c7[_0xee49('0x40')][_0xee49('0x2b')]);}_0x45093d[_0xee49('0x6e')]=qs['sort'](_0x1116c7[_0xee49('0x40')]['sort']);_0x45093d[_0xee49('0x4a')]=qs['filters'](_['pick'](_0x1116c7[_0xee49('0x40')],_0x82478c['filters']));_0x45093d[_0xee49('0x4a')]['FaxAccountId']=_0x3115b3['id'];if(_0x1116c7[_0xee49('0x40')][_0xee49('0x49')]){_0x45093d[_0xee49('0x4a')]=_['merge'](_0x45093d[_0xee49('0x4a')],{'$or':_[_0xee49('0x4b')](_0x45093d[_0xee49('0x44')],function(_0xacfe04){var _0x3aed80={};_0x3aed80[_0xacfe04]={'$like':'%'+_0x1116c7['query'][_0xee49('0x49')]+'%'};return _0x3aed80;})});}_0x45093d=_[_0xee49('0x4d')]({},_0x45093d,_0x1116c7['options']);return db[_0xee49('0x71')][_0xee49('0x4f')]({'where':_0x45093d[_0xee49('0x4a')]})[_0xee49('0x1f')](function(_0x402398){_0x5b78ab['count']=_0x402398;if(_0x1116c7['query'][_0xee49('0x50')]){_0x45093d[_0xee49('0x51')]=[{'model':db[_0xee49('0x74')],'as':_0xee49('0x75'),'required':![]},{'model':db[_0xee49('0x76')],'as':_0xee49('0x77'),'attributes':[_0xee49('0x37'),'fullname',_0xee49('0x78')],'required':![]},{'model':db[_0xee49('0x79')],'as':_0xee49('0x7a'),'attributes':['id',_0xee49('0x37'),'color'],'where':_0x1116c7[_0xee49('0x40')][_0xee49('0x7b')]?{'id':_0x1116c7[_0xee49('0x40')][_0xee49('0x7b')]}:undefined,'required':_0x1116c7[_0xee49('0x40')][_0xee49('0x7b')]?!![]:![]}];}return db[_0xee49('0x71')][_0xee49('0x52')](_0x45093d);})[_0xee49('0x1f')](function(_0x30e87a){_0x5b78ab[_0xee49('0x53')]=_0x30e87a;return _0x5b78ab;});}})['then'](respondWithFilteredResult(_0x59dcad,_0x45093d))['catch'](handleError(_0x59dcad,null));};exports[_0xee49('0x7c')]=function(_0x2df980,_0x536fb4,_0xda526){return db['FaxAccount'][_0xee49('0x7d')]({'where':{'id':_0x2df980[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x536fb4,null))[_0xee49('0x1f')](function(_0x4c2a1b){if(_0x4c2a1b){return db[_0xee49('0x7e')][_0xee49('0x7f')](function(_0x4e61b6){return db[_0xee49('0x80')]['destroy']({'where':{'FaxAccountId':_0x2df980[_0xee49('0x61')]['id']},'transaction':_0x4e61b6})[_0xee49('0x1f')](function(_0x4fd3ba){var _0x147410=_[_0xee49('0x4b')](_0x2df980[_0xee49('0x60')],function(_0x2428f6){_0x2428f6[_0xee49('0x6b')]=_0x2df980[_0xee49('0x61')]['id'];return _0x2428f6;});return db[_0xee49('0x80')][_0xee49('0x81')](_0x147410,{'transaction':_0x4e61b6});});})[_0xee49('0x1f')](function(){return db[_0xee49('0x80')][_0xee49('0x82')]({'where':{'FaxAccountId':_0x2df980[_0xee49('0x61')]['id']},'order':'priority'});});}})['then'](respondWithResult(_0x536fb4,null))[_0xee49('0x54')](handleError(_0x536fb4,null));};exports[_0xee49('0x83')]=function(_0x3ed5d5,_0x37470d,_0x30383c){var _0x30a96c={};var _0xbe1e4f={};var _0x5d07a0;var _0x4cb484;return db['FaxAccount'][_0xee49('0x7d')]({'where':{'id':_0x3ed5d5[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x37470d,null))[_0xee49('0x1f')](function(_0x1fd3e7){if(_0x1fd3e7){_0x5d07a0=_0x1fd3e7;_0xbe1e4f[_0xee49('0x3f')]=_[_0xee49('0x41')](db[_0xee49('0x80')][_0xee49('0x57')]);_0xbe1e4f[_0xee49('0x40')]=_[_0xee49('0x41')](_0x3ed5d5[_0xee49('0x40')]);_0xbe1e4f[_0xee49('0x42')]=_[_0xee49('0x43')](_0xbe1e4f[_0xee49('0x3f')],_0xbe1e4f[_0xee49('0x40')]);_0x30a96c[_0xee49('0x44')]=_[_0xee49('0x43')](_0xbe1e4f[_0xee49('0x3f')],qs[_0xee49('0x45')](_0x3ed5d5[_0xee49('0x40')]['fields']));_0x30a96c['attributes']=_0x30a96c[_0xee49('0x44')]['length']?_0x30a96c[_0xee49('0x44')]:_0xbe1e4f[_0xee49('0x3f')];_0x30a96c[_0xee49('0x6e')]=qs[_0xee49('0x48')](_0x3ed5d5[_0xee49('0x40')]['sort']);_0x30a96c[_0xee49('0x4a')]=qs[_0xee49('0x42')](_[_0xee49('0x67')](_0x3ed5d5[_0xee49('0x40')],_0xbe1e4f[_0xee49('0x42')]));if(_0x3ed5d5[_0xee49('0x40')]['filter']){_0x30a96c['where']=_[_0xee49('0x4d')](_0x30a96c[_0xee49('0x4a')],{'$or':_[_0xee49('0x4b')](_0x30a96c[_0xee49('0x44')],function(_0x48c41b){var _0x2967c0={};_0x2967c0[_0x48c41b]={'$like':'%'+_0x3ed5d5[_0xee49('0x40')]['filter']+'%'};return _0x2967c0;})});}_0x30a96c=_[_0xee49('0x4d')]({},_0x30a96c,_0x3ed5d5['options']);return _0x5d07a0[_0xee49('0x83')](_0x30a96c);}})['then'](function(_0x5452f9){if(_0x5452f9){_0x4cb484=_0x5452f9[_0xee49('0x46')];if(!_0x3ed5d5[_0xee49('0x40')][_0xee49('0x47')](_0xee49('0x66'))){_0x30a96c[_0xee49('0x2d')]=qs['limit'](_0x3ed5d5[_0xee49('0x40')][_0xee49('0x2d')]);_0x30a96c['offset']=qs[_0xee49('0x2b')](_0x3ed5d5['query'][_0xee49('0x2b')]);}return _0x5d07a0[_0xee49('0x83')](_0x30a96c);}})[_0xee49('0x1f')](function(_0x1c6f01){if(_0x1c6f01){return _0x1c6f01?{'count':_0x4cb484,'rows':_0x1c6f01}:null;}})[_0xee49('0x1f')](respondWithResult(_0x37470d,null))[_0xee49('0x54')](handleError(_0x37470d,null));};function Extension(_0x2b7e5a,_0x3e03d,_0x559fd0,_0x1417da){this[_0xee49('0x84')]=_0xee49('0x85');this[_0xee49('0x86')]=_0x2b7e5a[_0xee49('0x87')];this[_0xee49('0x88')]=_0x1417da;this[_0xee49('0x3d')]=_0xee49('0x89');this['description']=_0xee49('0x8a');this[_0xee49('0x6b')]=_0x2b7e5a['id'];this[_0xee49('0x8b')]=_0x3e03d;this[_0xee49('0x8c')]=_0x559fd0;}function createExtensionsReciveFax(_0x1f5182){var _0x4aa4a4=0x1;var _0x2b4721=[];_0x2b4721[_0xee49('0x8d')](new Extension(_0x1f5182,_0x4aa4a4,'','Answer'));_0x4aa4a4+=0x1;_0x2b4721[_0xee49('0x8d')](new Extension(_0x1f5182,_0x4aa4a4,_0xee49('0x8e'),'Set'));_0x4aa4a4+=0x1;for(var _0x366a8c in _0x1f5182){if(_0x1f5182[_0xee49('0x47')](_0x366a8c)&&(_0x366a8c===_0xee49('0x8f')||_0x366a8c==='localstationid'||_0x366a8c===_0xee49('0x90')||_0x366a8c==='faxdetect'||_0x366a8c===_0xee49('0x91')||_0x366a8c==='maxrate'||_0x366a8c===_0xee49('0x92')||_0x366a8c===_0xee49('0x93')||_0x366a8c==='t38timeout')){_0x2b4721['push'](new Extension(_0x1f5182,_0x4aa4a4,_0xee49('0x94')+_0x366a8c+')='+_0x1f5182[_0x366a8c],'Set'));_0x4aa4a4+=0x1;}}_0x2b4721['push'](new Extension(_0x1f5182,_0x4aa4a4,'6',_0xee49('0x95')));_0x4aa4a4+=0x1;_0x2b4721[_0xee49('0x8d')](new Extension(_0x1f5182,_0x4aa4a4,_0xee49('0x96'),_0xee49('0x97')));_0x4aa4a4=0x0;return _0x2b4721;}exports[_0xee49('0x98')]=function(_0x11020b,_0x1d5148,_0x12ddd7){var _0x104f5f;return db[_0xee49('0x7e')][_0xee49('0x7f')](function(_0x1a64ad){return db[_0xee49('0x3b')][_0xee49('0x59')](_0x11020b['body'],{'transaction':_0x1a64ad})[_0xee49('0x1f')](function(_0x3def08){_0x104f5f=_0x3def08[_0xee49('0x5a')]({'plain':!![]});return db[_0xee49('0x99')][_0xee49('0x81')](createExtensionsReciveFax(_0x104f5f),{'transaction':_0x1a64ad});});})['then'](function(){return _0x104f5f;})['then'](respondWithResult(_0x1d5148,null))[_0xee49('0x54')](handleError(_0x1d5148,null));};exports['updateAccountApplications']=function(_0x38dbb2,_0x39e38f,_0x45aa32){var _0x598047;return db[_0xee49('0x7e')][_0xee49('0x7f')](function(_0x3284f5){return db[_0xee49('0x3b')][_0xee49('0x32')](_0x38dbb2[_0xee49('0x60')],{'where':{'id':_0x38dbb2[_0xee49('0x60')]['id']},'transaction':_0x3284f5})[_0xee49('0x1f')](function(_0x17a31f){return db[_0xee49('0x99')][_0xee49('0x33')]({'where':{'FaxAccountId':_0x38dbb2[_0xee49('0x60')]['id']},'transaction':_0x3284f5})[_0xee49('0x1f')](function(_0x90c38f){return db[_0xee49('0x99')][_0xee49('0x81')](createExtensionsReciveFax(_[_0xee49('0x72')](_0x38dbb2['body'],[_0xee49('0x9a'),_0xee49('0x3e'),_0xee49('0x9b'),_0xee49('0x9c'),'TrunkId','ListId'])),{'transaction':_0x3284f5});});});})['then'](function(){return db['FaxAccount']['findById'](_0x38dbb2['body']['id']);})[_0xee49('0x1f')](respondWithResult(_0x39e38f,null))[_0xee49('0x54')](handleError(_0x39e38f,null));};exports[_0xee49('0x9d')]=function(_0x526024,_0x241da9,_0x592fd4){var _0x15fc2d={'raw':!![],'where':{}};var _0xbd5f03={};var _0x5ca223={'count':0x0,'rows':[]};return db[_0xee49('0x3b')][_0xee49('0x7d')]({'where':{'id':_0x526024['params']['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x241da9,null))[_0xee49('0x1f')](function(_0x28daba){if(_0x28daba){_0xbd5f03['model']=_[_0xee49('0x41')](db[_0xee49('0x9e')]['rawAttributes']);_0xbd5f03[_0xee49('0x40')]=_[_0xee49('0x41')](_0x526024['query']);_0xbd5f03[_0xee49('0x42')]=_[_0xee49('0x43')](_0xbd5f03['model'],_0xbd5f03['query']);_0x15fc2d[_0xee49('0x44')]=_[_0xee49('0x43')](_0xbd5f03['model'],qs[_0xee49('0x45')](_0x526024['query'][_0xee49('0x45')]));_0x15fc2d['attributes']=_0x15fc2d[_0xee49('0x44')][_0xee49('0x46')]?_0x15fc2d[_0xee49('0x44')]:_0xbd5f03[_0xee49('0x3f')];if(!_0x526024[_0xee49('0x40')]['hasOwnProperty'](_0xee49('0x66'))){_0x15fc2d[_0xee49('0x2d')]=qs['limit'](_0x526024[_0xee49('0x40')][_0xee49('0x2d')]);_0x15fc2d[_0xee49('0x2b')]=qs[_0xee49('0x2b')](_0x526024[_0xee49('0x40')][_0xee49('0x2b')]);}_0x15fc2d['order']=qs[_0xee49('0x48')](_0x526024[_0xee49('0x40')][_0xee49('0x48')]);_0x15fc2d[_0xee49('0x4a')]=qs[_0xee49('0x42')](_[_0xee49('0x67')](_0x526024[_0xee49('0x40')],_0xbd5f03[_0xee49('0x42')]));_0x15fc2d[_0xee49('0x4a')][_0xee49('0x6b')]=_0x28daba['id'];if(_0x526024[_0xee49('0x40')][_0xee49('0x49')]){_0x15fc2d[_0xee49('0x4a')]=_[_0xee49('0x4d')](_0x15fc2d['where'],{'$or':_[_0xee49('0x4b')](_0x15fc2d['attributes'],function(_0x491580){var _0x397b6e={};_0x397b6e[_0x491580]={'$like':'%'+_0x526024['query'][_0xee49('0x49')]+'%'};return _0x397b6e;})});}if(_0x526024[_0xee49('0x40')][_0xee49('0x9f')]){var _0x50c978=_0x526024['query'][_0xee49('0x9f')][_0xee49('0xa0')](',');var _0x2bba44={};_0x2bba44[_0x50c978[0x0]]={'$gte':moment(_0x50c978[0x1])[_0xee49('0xa1')](_0xee49('0xa2'))};_0x15fc2d[_0xee49('0x4a')]=_[_0xee49('0x4d')](_0x15fc2d['where'],_0x2bba44);}_0x15fc2d=_['merge']({},_0x15fc2d,_0x526024[_0xee49('0x4e')]);return db[_0xee49('0x9e')]['count']({'where':_0x15fc2d[_0xee49('0x4a')]})['then'](function(_0x41a358){_0x5ca223[_0xee49('0x4f')]=_0x41a358;if(_0x526024[_0xee49('0x40')][_0xee49('0x50')]){_0x15fc2d[_0xee49('0x51')]=[{'all':!![]}];}return db['FaxMessage'][_0xee49('0x52')](_0x15fc2d);})['then'](function(_0x1daf5c){_0x5ca223[_0xee49('0x53')]=_0x1daf5c;return _0x5ca223;});}})[_0xee49('0x1f')](respondWithFilteredResult(_0x241da9,_0x15fc2d))[_0xee49('0x54')](handleError(_0x241da9,null));};exports[_0xee49('0x38')]=function(_0x8ef65d,_0x2961c1,_0x17cb3a){var _0x38d53a,_0x52572a={},_0x5d08d6;if(_0x8ef65d['body']['to']){_0x5d08d6=_0x8ef65d['body']['to'][0x0];}return db[_0xee49('0x3b')][_0xee49('0x58')]({'where':{'id':_0x8ef65d[_0xee49('0x61')]['id']},'include':[{'model':db[_0xee49('0xa3')],'as':'List','include':[{'model':db[_0xee49('0x74')],'as':_0xee49('0xa4'),'where':{'fax':_0x5d08d6},'limit':0x1,'order':[[_0xee49('0x9c'),'DESC']]}]}]})[_0xee49('0x1f')](handleEntityNotFound(_0x2961c1,null))[_0xee49('0x1f')](function(_0x12e2ab){_0x38d53a=_0x12e2ab;if(_0x8ef65d[_0xee49('0x60')][_0xee49('0xa5')]&&_0x8ef65d['body'][_0xee49('0xa5')]['length']){for(var _0x149b19=0x0;_0x149b19<_0x8ef65d[_0xee49('0x60')][_0xee49('0xa5')]['length'];_0x149b19+=0x1){_0x8ef65d['body'][_0xee49('0xa5')][_0x149b19]={'filename':_0x8ef65d['body'][_0xee49('0xa5')][_0x149b19][_0xee49('0x37')],'id':_0x8ef65d[_0xee49('0x60')][_0xee49('0xa5')][_0x149b19]['id'],'path':path['join'](config['root'],_0xee49('0xa6'),_0x8ef65d[_0xee49('0x60')]['attachments'][_0x149b19]['basename'])};}}return respondWithRpcPromise('CheckAfterSend','CheckAfterSend',{'FaxAccountId':_['isNil'](_0x8ef65d[_0xee49('0x61')]['id'])?undefined:_0x8ef65d['params']['id'],'path':_[_0xee49('0xa7')](_0x8ef65d['body'][_0xee49('0xa5')][0x0][_0xee49('0x6')])?undefined:_0x8ef65d[_0xee49('0x60')][_0xee49('0xa5')][0x0][_0xee49('0x6')],'fax':_[_0xee49('0xa7')](_0x8ef65d[_0xee49('0x60')]['to'][0x0])?undefined:_0x8ef65d[_0xee49('0x60')]['to'][0x0]},client9002);})[_0xee49('0x1f')](function(){if(_0x38d53a){if(_['isNil'](_0x8ef65d['body']['from'])){_0x8ef65d['body'][_0xee49('0xa8')]=util['format']('\x22%s\x22\x20<%s>',_0x38d53a[_0xee49('0x37')],_0x38d53a[_0xee49('0xa9')]);}if(_0x38d53a[_0xee49('0xaa')]){if(_0x38d53a[_0xee49('0xaa')][_0xee49('0xa4')][_0xee49('0x46')]){return _0x38d53a[_0xee49('0xaa')][_0xee49('0xa4')][0x0];}else{return db[_0xee49('0x74')][_0xee49('0x59')](_['defaults'](_0x8ef65d['body'],{'firstName':_0x8ef65d[_0xee49('0x60')]['to'][0x0],'phone':_0x8ef65d[_0xee49('0x60')]['to'][0x0],'fax':_0x8ef65d[_0xee49('0x60')]['to'][0x0],'ListId':_0x38d53a[_0xee49('0xab')]}));}}else{throw new Error(_0xee49('0xac'));}}else{throw new Error('Send\x20Fax\x20failed');}})[_0xee49('0x1f')](function(_0x5b3ff0){if(_0x5b3ff0){return db[_0xee49('0x71')]['find']({'where':{'ContactId':_0x5b3ff0['id'],'closed':![],'FaxAccountId':_0x38d53a['id']}})[_0xee49('0x1f')](function(_0x356325){if(_0x356325){return[_0x356325,![]];}return db[_0xee49('0x71')]['create']({'UserId':_0x8ef65d[_0xee49('0x5c')]['id'],'ContactId':_0x5b3ff0['id'],'FaxAccountId':_0x38d53a['id'],'fax':_0x8ef65d[_0xee49('0x60')]['to'][0x0],'firstMsgDirection':_0xee49('0xad'),'Messages':[_[_0xee49('0x4d')](_0x8ef65d['body'],{'read':![],'body':_0x8ef65d[_0xee49('0x60')]['attachments'][0x0][_0xee49('0xae')],'FaxAccountId':_0x38d53a['id'],'UserId':_0x8ef65d[_0xee49('0x5c')]['id'],'ContactId':_0x5b3ff0['id'],'AttachmentId':_0x8ef65d[_0xee49('0x60')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xee49('0x9e')],'as':_0xee49('0xaf')}]})[_0xee49('0x1f')](function(_0x2fbea3){return[_0x2fbea3,!![]];});});}else{throw new Error(_0xee49('0xb0'));}})[_0xee49('0xb1')](function(_0x511724,_0x1ecc0e){if(_0x1ecc0e){return _0x511724;}return db[_0xee49('0x9e')]['create']({'direction':_0xee49('0xad'),'read':![],'body':_0x8ef65d['body'][_0xee49('0xa5')][0x0][_0xee49('0xae')],'FaxAccountId':_0x38d53a['id'],'FaxInteractionId':_0x511724['id'],'UserId':_0x8ef65d[_0xee49('0x5c')]['id'],'ContactId':_0x511724['ContactId'],'AttachmentId':_0x8ef65d['body']['attachments'][0x0]['id']})[_0xee49('0x1f')](function(_0x51c362){_0x511724['dataValues'][_0xee49('0xaf')]=[];_0x511724[_0xee49('0xb2')]['Messages']['push'](_0x51c362[_0xee49('0xb2')]);return _0x511724;});})[_0xee49('0x1f')](function(_0x581f4b){respondWithRpcPromise('SendFax',_0xee49('0xb3'),{'FaxAccountId':_[_0xee49('0xa7')](_0x8ef65d[_0xee49('0x61')]['id'])?undefined:_0x8ef65d['params']['id'],'path':_[_0xee49('0xa7')](_0x8ef65d['body'][_0xee49('0xa5')][0x0][_0xee49('0x6')])?undefined:_0x8ef65d[_0xee49('0x60')][_0xee49('0xa5')][0x0][_0xee49('0x6')],'fax':_[_0xee49('0xa7')](_0x8ef65d['body']['to'][0x0])?undefined:_0x8ef65d[_0xee49('0x60')]['to'][0x0],'AttachmentId':_0x8ef65d[_0xee49('0x60')][_0xee49('0xa5')][0x0]['id']},client9002)[_0xee49('0x1f')](function(_0x395166){logger[_0xee49('0x20')](_0xee49('0xb4'),_0x395166);})[_0xee49('0x54')](function(_0x25c357){logger[_0xee49('0x20')](_0xee49('0xb4'),_0x25c357);});return _0x581f4b;})['then'](respondWithResult(_0x2961c1,null))['catch'](handleError(_0x2961c1,null));};exports[_0xee49('0xb5')]=function(_0x6e9f0f,_0x31e435,_0x41745f){return db[_0xee49('0x3b')]['find']({'where':{'id':_0x6e9f0f[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x31e435,null))[_0xee49('0x1f')](function(_0x391f66){if(_0x391f66){return _0x391f66[_0xee49('0xb5')](_0x6e9f0f[_0xee49('0x60')][_0xee49('0x69')],_[_0xee49('0x72')](_0x6e9f0f[_0xee49('0x60')],['ids','id'])||{})[_0xee49('0xb1')](function(_0x10d4f8){for(var _0x33a4ca=0x0;_0x33a4ca<_0x6e9f0f['body']['ids']['length'];_0x33a4ca+=0x1){socket[_0xee49('0xb6')](_0xee49('0xb7'),{'UserId':Number(_0x6e9f0f[_0xee49('0x60')]['ids'][_0x33a4ca]),'FaxAccountId':Number(_0x6e9f0f[_0xee49('0x61')]['id'])});}return _0x10d4f8;});}})['then'](respondWithResult(_0x31e435,null))[_0xee49('0x54')](handleError(_0x31e435,null));};exports[_0xee49('0xb8')]=function(_0x3327c2,_0x198690,_0x9e6c1e){return db['FaxAccount']['find']({'where':{'id':_0x3327c2[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x198690,null))['then'](function(_0x2dc9fc){if(_0x2dc9fc){return _0x2dc9fc[_0xee49('0xb8')](_0x3327c2[_0xee49('0x40')][_0xee49('0x69')])[_0xee49('0x1f')](function(){if(_['isArray'](_0x3327c2[_0xee49('0x40')][_0xee49('0x69')])){for(var _0x5a4da5=0x0;_0x5a4da5<_0x3327c2[_0xee49('0x40')][_0xee49('0x69')]['length'];_0x5a4da5+=0x1){socket['emit']('userFaxAccount:remove',{'UserId':Number(_0x3327c2['query'][_0xee49('0x69')][_0x5a4da5]),'FaxAccountId':Number(_0x3327c2['params']['id'])});}}else{socket['emit']('userFaxAccount:remove',{'UserId':Number(_0x3327c2[_0xee49('0x40')][_0xee49('0x69')]),'FaxAccountId':Number(_0x3327c2[_0xee49('0x61')]['id'])});}});}})[_0xee49('0x1f')](respondWithStatusCode(_0x198690,null))[_0xee49('0x54')](handleError(_0x198690,null));};exports[_0xee49('0xb9')]=function(_0x3796ce,_0x13bb08,_0x50e159){var _0x23dcec={};var _0x2e63a7={};var _0x15be6f;var _0x47e202;return db[_0xee49('0x3b')][_0xee49('0x7d')]({'where':{'id':_0x3796ce[_0xee49('0x61')]['id']}})[_0xee49('0x1f')](handleEntityNotFound(_0x13bb08,null))[_0xee49('0x1f')](function(_0x4c210f){if(_0x4c210f){_0x15be6f=_0x4c210f;_0x2e63a7[_0xee49('0x3f')]=_['keys'](db[_0xee49('0x76')][_0xee49('0x57')]);_0x2e63a7[_0xee49('0x40')]=_[_0xee49('0x41')](_0x3796ce['query']);_0x2e63a7[_0xee49('0x42')]=_['intersection'](_0x2e63a7[_0xee49('0x3f')],_0x2e63a7[_0xee49('0x40')]);_0x23dcec[_0xee49('0x44')]=_['intersection'](_0x2e63a7[_0xee49('0x3f')],qs[_0xee49('0x45')](_0x3796ce[_0xee49('0x40')][_0xee49('0x45')]));_0x23dcec['attributes']=_0x23dcec[_0xee49('0x44')][_0xee49('0x46')]?_0x23dcec[_0xee49('0x44')]:_0x2e63a7[_0xee49('0x3f')];_0x23dcec['order']=qs[_0xee49('0x48')](_0x3796ce[_0xee49('0x40')][_0xee49('0x48')]);_0x23dcec[_0xee49('0x4a')]=qs[_0xee49('0x42')](_['pick'](_0x3796ce[_0xee49('0x40')],_0x2e63a7['filters']));if(_0x3796ce[_0xee49('0x40')][_0xee49('0x49')]){_0x23dcec['where']=_[_0xee49('0x4d')](_0x23dcec[_0xee49('0x4a')],{'$or':_[_0xee49('0x4b')](_0x23dcec[_0xee49('0x44')],function(_0x24b410){var _0x2cbeb6={};_0x2cbeb6[_0x24b410]={'$like':'%'+_0x3796ce[_0xee49('0x40')]['filter']+'%'};return _0x2cbeb6;})});}_0x23dcec=_[_0xee49('0x4d')]({},_0x23dcec,_0x3796ce['options']);return _0x15be6f[_0xee49('0xb9')](_0x23dcec);}})[_0xee49('0x1f')](function(_0xe97b3b){if(_0xe97b3b){_0x47e202=_0xe97b3b[_0xee49('0x46')];if(!_0x3796ce[_0xee49('0x40')][_0xee49('0x47')]('nolimit')){_0x23dcec[_0xee49('0x2d')]=qs[_0xee49('0x2d')](_0x3796ce[_0xee49('0x40')][_0xee49('0x2d')]);_0x23dcec[_0xee49('0x2b')]=qs[_0xee49('0x2b')](_0x3796ce[_0xee49('0x40')][_0xee49('0x2b')]);}return _0x15be6f[_0xee49('0xb9')](_0x23dcec);}})[_0xee49('0x1f')](function(_0x3f83da){if(_0x3f83da){return _0x3f83da?{'count':_0x47e202,'rows':_0x3f83da}:null;}})['then'](respondWithResult(_0x13bb08,null))[_0xee49('0x54')](handleError(_0x13bb08,null));};
\ No newline at end of file
+var _0xa1b3=['getApplications','context','exten','localstationid','system','description','Fax\x20Extension','appdata','Answer','push','CDR(type)=inbound-fax','gateway','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','FAXOPT(','Wait','ReceiveFax','addAccountApplications','sequelize','VoiceExtension','updateAccountApplications','key','TrunkId','findById','getMessages','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','List','Contacts','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','path','from','fax','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','FaxAccount,\x20%s,\x20%s','info','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','FaxAccounts','UserProfileResource','end','stack','name','send','index','Pause','mandatoryDispositionPause','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','FaxAccount','includeAll','findAll','show','params','length','include','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','FaxAccountId','Disposition','rows','removeDispositions','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','ids','addInteraction','FaxInteraction','omit','CmContact','Contact','User','Owner','fullname','internal','Tag','tag','addApplications','transaction','FaxApplication','bulkCreate','findAndCountAll','priority'];(function(_0x2a32ca,_0x6f350f){var _0x4027de=function(_0x41a6fb){while(--_0x41a6fb){_0x2a32ca['push'](_0x2a32ca['shift']());}};_0x4027de(++_0x6f350f);}(_0xa1b3,0x1d1));var _0x3a1b=function(_0x4343e1,_0x294e00){_0x4343e1=_0x4343e1-0x0;var _0x42ca3a=_0xa1b3[_0x4343e1];return _0x42ca3a;};'use strict';var emlformat=require(_0x3a1b('0x0'));var rimraf=require(_0x3a1b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3a1b('0x2'));var rp=require(_0x3a1b('0x3'));var moment=require(_0x3a1b('0x4'));var BPromise=require(_0x3a1b('0x5'));var Mustache=require('mustache');var util=require(_0x3a1b('0x6'));var path=require('path');var sox=require(_0x3a1b('0x7'));var csv=require('to-csv');var ejs=require(_0x3a1b('0x8'));var fs=require('fs');var fs_extra=require(_0x3a1b('0x9'));var _=require('lodash');var squel=require(_0x3a1b('0xa'));var crypto=require(_0x3a1b('0xb'));var jsforce=require(_0x3a1b('0xc'));var deskjs=require(_0x3a1b('0xd'));var toCsv=require(_0x3a1b('0xe'));var querystring=require(_0x3a1b('0xf'));var Papa=require(_0x3a1b('0x10'));var Redis=require(_0x3a1b('0x11'));var authService=require(_0x3a1b('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x3a1b('0x13'));var hardwareService=require(_0x3a1b('0x14'));var logger=require(_0x3a1b('0x15'))(_0x3a1b('0x16'));var utils=require(_0x3a1b('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x3a1b('0x18'));var db=require(_0x3a1b('0x19'))['db'];config[_0x3a1b('0x1a')]=_[_0x3a1b('0x1b')](config[_0x3a1b('0x1a')],{'host':_0x3a1b('0x1c'),'port':0x18eb});var socket=require(_0x3a1b('0x1d'))(new Redis(config[_0x3a1b('0x1a')]));require(_0x3a1b('0x1e'))[_0x3a1b('0x1f')](socket);var jayson=require(_0x3a1b('0x20'));var client=jayson[_0x3a1b('0x21')][_0x3a1b('0x22')]({'port':0x232c});var client9002=jayson[_0x3a1b('0x21')]['http']({'port':0x232a});function respondWithRpcPromise(_0x29ff8c,_0x5c33e1,_0x1dc796,_0x57a84b){return new BPromise(function(_0xeb863d,_0x332b97){var _0x3971fb=_0x57a84b||client;return _0x3971fb[_0x3a1b('0x23')](_0x29ff8c,_0x1dc796)['then'](function(_0x27c2bd){logger['info']('FaxAccount,\x20%s,\x20%s',_0x5c33e1,_0x3a1b('0x24'));logger['debug'](_0x3a1b('0x25'),_0x5c33e1,_0x3a1b('0x24'),JSON[_0x3a1b('0x26')](_0x27c2bd));if(_0x27c2bd[_0x3a1b('0x27')]){if(_0x27c2bd[_0x3a1b('0x27')]['code']===0x1f4){logger[_0x3a1b('0x27')]('FaxAccount,\x20%s,\x20%s',_0x5c33e1,_0x27c2bd[_0x3a1b('0x27')][_0x3a1b('0x28')]);return _0x332b97(_0x27c2bd['error'][_0x3a1b('0x28')]);}logger[_0x3a1b('0x27')](_0x3a1b('0x29'),_0x5c33e1,_0x27c2bd[_0x3a1b('0x27')][_0x3a1b('0x28')]);return _0xeb863d(_0x27c2bd['error'][_0x3a1b('0x28')]);}else{logger[_0x3a1b('0x2a')](_0x3a1b('0x29'),_0x5c33e1,_0x3a1b('0x24'));_0xeb863d(_0x27c2bd['result'][_0x3a1b('0x28')]);}})[_0x3a1b('0x2b')](function(_0x379eb8){logger[_0x3a1b('0x27')]('FaxAccount,\x20%s,\x20%s',_0x5c33e1,_0x379eb8);_0x332b97(_0x379eb8);});});}function respondWithStatusCode(_0x55e4df,_0x2f228e){_0x2f228e=_0x2f228e||0xcc;return function(_0x439383){if(_0x439383){return _0x55e4df[_0x3a1b('0x2c')](_0x2f228e);}return _0x55e4df[_0x3a1b('0x2d')](_0x2f228e)['end']();};}function respondWithResult(_0x23b78e,_0x2628fc){_0x2628fc=_0x2628fc||0xc8;return function(_0x2d98c6){if(_0x2d98c6){return _0x23b78e[_0x3a1b('0x2d')](_0x2628fc)[_0x3a1b('0x2e')](_0x2d98c6);}};}function respondWithFilteredResult(_0xe1edfa,_0x4a7fc9){return function(_0x9e8545){if(_0x9e8545){var _0x5b040a=typeof _0x4a7fc9[_0x3a1b('0x2f')]===_0x3a1b('0x30')&&typeof _0x4a7fc9[_0x3a1b('0x31')]===_0x3a1b('0x30');var _0x426049=_0x9e8545['count'];var _0x170819=_0x5b040a?0x0:_0x4a7fc9[_0x3a1b('0x2f')];var _0x54c045=_0x5b040a?_0x9e8545[_0x3a1b('0x32')]:_0x4a7fc9[_0x3a1b('0x2f')]+_0x4a7fc9[_0x3a1b('0x31')];var _0x43c622;if(_0x54c045>=_0x426049){_0x54c045=_0x426049;_0x43c622=0xc8;}else{_0x43c622=0xce;}_0xe1edfa[_0x3a1b('0x2d')](_0x43c622);return _0xe1edfa[_0x3a1b('0x33')](_0x3a1b('0x34'),_0x170819+'-'+_0x54c045+'/'+_0x426049)[_0x3a1b('0x2e')](_0x9e8545);}return null;};}function patchUpdates(_0x235d77){return function(_0x3bd9e0){try{jsonpatch[_0x3a1b('0x35')](_0x3bd9e0,_0x235d77,!![]);}catch(_0x33c4fb){return BPromise[_0x3a1b('0x36')](_0x33c4fb);}return _0x3bd9e0[_0x3a1b('0x37')]();};}function saveUpdates(_0x5c59fe,_0x3c435d){return function(_0x2ef92c){if(_0x2ef92c){return _0x2ef92c[_0x3a1b('0x38')](_0x5c59fe)[_0x3a1b('0x39')](function(_0x39d4e8){return _0x39d4e8;});}return null;};}function removeEntity(_0x1fbe96,_0x3e0d8d){return function(_0x24c513){if(_0x24c513){return _0x24c513[_0x3a1b('0x3a')]()[_0x3a1b('0x39')](function(){var _0x19cbc3=_0x24c513[_0x3a1b('0x3b')]({'plain':!![]});var _0x30e528=_0x3a1b('0x3c');return db[_0x3a1b('0x3d')]['destroy']({'where':{'type':_0x30e528,'resourceId':_0x19cbc3['id']}})[_0x3a1b('0x39')](function(){return _0x24c513;});})[_0x3a1b('0x39')](function(){_0x1fbe96['status'](0xcc)[_0x3a1b('0x3e')]();});}};}function handleEntityNotFound(_0x596540,_0x2db3b5){return function(_0x8fb7b5){if(!_0x8fb7b5){_0x596540[_0x3a1b('0x2c')](0x194);}return _0x8fb7b5;};}function handleError(_0x30ca78,_0x28fbf0){_0x28fbf0=_0x28fbf0||0x1f4;return function(_0x4c5e66){logger[_0x3a1b('0x27')](_0x4c5e66[_0x3a1b('0x3f')]);if(_0x4c5e66[_0x3a1b('0x40')]){delete _0x4c5e66[_0x3a1b('0x40')];}_0x30ca78[_0x3a1b('0x2d')](_0x28fbf0)[_0x3a1b('0x41')](_0x4c5e66);};}exports[_0x3a1b('0x42')]=function(_0x1480ea,_0x2b9a1b){var _0x3ee159={'include':[{'model':db[_0x3a1b('0x43')],'as':_0x3a1b('0x44')}]},_0x3bbb88={},_0x5510a1={'count':0x0,'rows':[]};var _0x38ff31=_['map'](db['FaxAccount'][_0x3a1b('0x45')],function(_0x59af32){return{'name':_0x59af32[_0x3a1b('0x46')],'type':_0x59af32[_0x3a1b('0x47')]['key']};});_0x3bbb88[_0x3a1b('0x48')]=_[_0x3a1b('0x49')](_0x38ff31,_0x3a1b('0x40'));_0x3bbb88[_0x3a1b('0x4a')]=_[_0x3a1b('0x4b')](_0x1480ea['query']);_0x3bbb88[_0x3a1b('0x4c')]=_[_0x3a1b('0x4d')](_0x3bbb88['model'],_0x3bbb88['query']);_0x3ee159[_0x3a1b('0x4e')]=_[_0x3a1b('0x4d')](_0x3bbb88['model'],qs[_0x3a1b('0x4f')](_0x1480ea[_0x3a1b('0x4a')][_0x3a1b('0x4f')]));_0x3ee159[_0x3a1b('0x4e')]=_0x3ee159['attributes']['length']?_0x3ee159[_0x3a1b('0x4e')]:_0x3bbb88[_0x3a1b('0x48')];if(!_0x1480ea[_0x3a1b('0x4a')][_0x3a1b('0x50')](_0x3a1b('0x51'))){_0x3ee159['limit']=qs[_0x3a1b('0x31')](_0x1480ea[_0x3a1b('0x4a')][_0x3a1b('0x31')]);_0x3ee159[_0x3a1b('0x2f')]=qs['offset'](_0x1480ea[_0x3a1b('0x4a')]['offset']);}_0x3ee159[_0x3a1b('0x52')]=qs['sort'](_0x1480ea[_0x3a1b('0x4a')][_0x3a1b('0x53')]);_0x3ee159[_0x3a1b('0x54')]=qs[_0x3a1b('0x4c')](_[_0x3a1b('0x55')](_0x1480ea[_0x3a1b('0x4a')],_0x3bbb88['filters']),_0x38ff31);if(_0x1480ea[_0x3a1b('0x4a')]['filter']){_0x3ee159[_0x3a1b('0x54')]=_[_0x3a1b('0x56')](_0x3ee159[_0x3a1b('0x54')],{'$or':_[_0x3a1b('0x49')](_0x38ff31,function(_0xd7db7e){if(_0xd7db7e['type']!==_0x3a1b('0x57')){var _0x2c1702={};_0x2c1702[_0xd7db7e[_0x3a1b('0x40')]]={'$like':'%'+_0x1480ea[_0x3a1b('0x4a')][_0x3a1b('0x58')]+'%'};return _0x2c1702;}})});}_0x3ee159=_['merge']({},_0x3ee159,_0x1480ea[_0x3a1b('0x59')]);var _0xd6245f={'where':_0x3ee159['where']};return db[_0x3a1b('0x5a')][_0x3a1b('0x32')](_0xd6245f)[_0x3a1b('0x39')](function(_0x4e017a){_0x5510a1[_0x3a1b('0x32')]=_0x4e017a;if(_0x1480ea[_0x3a1b('0x4a')][_0x3a1b('0x5b')]){_0x3ee159['include']=[{'all':!![]}];}return db[_0x3a1b('0x5a')][_0x3a1b('0x5c')](_0x3ee159);})[_0x3a1b('0x39')](function(_0x397aa9){_0x5510a1['rows']=_0x397aa9;return _0x5510a1;})[_0x3a1b('0x39')](respondWithFilteredResult(_0x2b9a1b,_0x3ee159))[_0x3a1b('0x2b')](handleError(_0x2b9a1b,null));};exports[_0x3a1b('0x5d')]=function(_0x290ead,_0x4df69d){var _0x57bfd8={'raw':![],'where':{'id':_0x290ead[_0x3a1b('0x5e')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x300a00={};_0x300a00[_0x3a1b('0x48')]=_[_0x3a1b('0x4b')](db['FaxAccount'][_0x3a1b('0x45')]);_0x300a00[_0x3a1b('0x4a')]=_['keys'](_0x290ead[_0x3a1b('0x4a')]);_0x300a00[_0x3a1b('0x4c')]=_[_0x3a1b('0x4d')](_0x300a00[_0x3a1b('0x48')],_0x300a00[_0x3a1b('0x4a')]);_0x57bfd8[_0x3a1b('0x4e')]=_[_0x3a1b('0x4d')](_0x300a00[_0x3a1b('0x48')],qs[_0x3a1b('0x4f')](_0x290ead[_0x3a1b('0x4a')]['fields']));_0x57bfd8[_0x3a1b('0x4e')]=_0x57bfd8[_0x3a1b('0x4e')][_0x3a1b('0x5f')]?_0x57bfd8['attributes']:_0x300a00['model'];if(_0x290ead[_0x3a1b('0x4a')][_0x3a1b('0x5b')]){_0x57bfd8[_0x3a1b('0x60')]=[{'all':!![]}];}_0x57bfd8=_[_0x3a1b('0x56')]({},_0x57bfd8,_0x290ead[_0x3a1b('0x59')]);return db['FaxAccount']['find'](_0x57bfd8)[_0x3a1b('0x39')](handleEntityNotFound(_0x4df69d,null))[_0x3a1b('0x39')](respondWithResult(_0x4df69d,null))[_0x3a1b('0x2b')](handleError(_0x4df69d,null));};exports[_0x3a1b('0x61')]=function(_0x37eba8,_0x1b3a0d){return db[_0x3a1b('0x5a')][_0x3a1b('0x61')](_0x37eba8['body'],{})['then'](function(_0x478c59){var _0x1e01a6=_0x37eba8[_0x3a1b('0x62')][_0x3a1b('0x3b')]({'plain':!![]});if(!_0x1e01a6)throw new Error(_0x3a1b('0x63'));if(_0x1e01a6[_0x3a1b('0x64')]===_0x3a1b('0x62')){var _0x1eb61e=_0x478c59[_0x3a1b('0x3b')]({'plain':!![]});var _0x3412e6='FaxAccounts';return db[_0x3a1b('0x65')][_0x3a1b('0x66')]({'where':{'name':_0x3412e6,'userProfileId':_0x1e01a6['userProfileId']},'raw':!![]})[_0x3a1b('0x39')](function(_0x22d97a){if(_0x22d97a&&_0x22d97a[_0x3a1b('0x67')]===0x0){return db[_0x3a1b('0x3d')][_0x3a1b('0x61')]({'name':_0x1eb61e[_0x3a1b('0x40')],'resourceId':_0x1eb61e['id'],'type':_0x22d97a[_0x3a1b('0x40')],'sectionId':_0x22d97a['id']},{})[_0x3a1b('0x39')](function(){return _0x478c59;});}else{return _0x478c59;}})[_0x3a1b('0x2b')](function(_0x470914){logger[_0x3a1b('0x27')](_0x3a1b('0x68'),_0x470914);throw _0x470914;});}return _0x478c59;})[_0x3a1b('0x39')](respondWithResult(_0x1b3a0d,0xc9))[_0x3a1b('0x2b')](handleError(_0x1b3a0d,null));};exports['update']=function(_0x5d0f3d,_0x47c7d5){if(_0x5d0f3d[_0x3a1b('0x69')]['id']){delete _0x5d0f3d['body']['id'];}return db['FaxAccount'][_0x3a1b('0x66')]({'where':{'id':_0x5d0f3d['params']['id']},'include':[{'model':db[_0x3a1b('0x43')],'as':_0x3a1b('0x44')}]})[_0x3a1b('0x39')](handleEntityNotFound(_0x47c7d5,null))[_0x3a1b('0x39')](saveUpdates(_0x5d0f3d[_0x3a1b('0x69')],null))[_0x3a1b('0x39')](respondWithResult(_0x47c7d5,null))['catch'](handleError(_0x47c7d5,null));};exports[_0x3a1b('0x3a')]=function(_0x14ad5b,_0x16fd14){return db['FaxAccount'][_0x3a1b('0x66')]({'where':{'id':_0x14ad5b['params']['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x16fd14,null))[_0x3a1b('0x39')](removeEntity(_0x16fd14,null))[_0x3a1b('0x2b')](handleError(_0x16fd14,null));};exports[_0x3a1b('0x6a')]=function(_0x321e04,_0x317a8e){return db[_0x3a1b('0x5a')][_0x3a1b('0x6a')]()['then'](respondWithResult(_0x317a8e,null))[_0x3a1b('0x2b')](handleError(_0x317a8e,null));};exports[_0x3a1b('0x6b')]=function(_0xa8c91c,_0x4370a6,_0x23b940){if(_0xa8c91c[_0x3a1b('0x69')]['id']){delete _0xa8c91c[_0x3a1b('0x69')]['id'];}return db[_0x3a1b('0x5a')][_0x3a1b('0x66')]({'where':{'id':_0xa8c91c[_0x3a1b('0x5e')]['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x4370a6,null))['then'](function(_0x4169af){if(_0x4169af){_0xa8c91c[_0x3a1b('0x69')][_0x3a1b('0x6c')]=_0x4169af['id'];return db['Disposition'][_0x3a1b('0x61')](_0xa8c91c['body']);}})['then'](respondWithResult(_0x4370a6,null))[_0x3a1b('0x2b')](handleError(_0x4370a6,null));};exports['getDispositions']=function(_0x1802e8,_0x5630ab,_0x181dad){var _0x119693={'raw':![],'where':{}};var _0x107945={};var _0x459e81={'count':0x0,'rows':[]};return db[_0x3a1b('0x5a')]['findOne']({'where':{'id':_0x1802e8[_0x3a1b('0x5e')]['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x5630ab,null))[_0x3a1b('0x39')](function(_0x53566d){if(_0x53566d){_0x107945[_0x3a1b('0x48')]=_[_0x3a1b('0x4b')](db[_0x3a1b('0x6d')]['rawAttributes']);_0x107945[_0x3a1b('0x4a')]=_['keys'](_0x1802e8[_0x3a1b('0x4a')]);_0x107945[_0x3a1b('0x4c')]=_[_0x3a1b('0x4d')](_0x107945[_0x3a1b('0x48')],_0x107945[_0x3a1b('0x4a')]);_0x119693['attributes']=_[_0x3a1b('0x4d')](_0x107945[_0x3a1b('0x48')],qs[_0x3a1b('0x4f')](_0x1802e8[_0x3a1b('0x4a')]['fields']));_0x119693[_0x3a1b('0x4e')]=_0x119693[_0x3a1b('0x4e')]['length']?_0x119693[_0x3a1b('0x4e')]:_0x107945['model'];if(!_0x1802e8['query'][_0x3a1b('0x50')](_0x3a1b('0x51'))){_0x119693['limit']=qs[_0x3a1b('0x31')](_0x1802e8[_0x3a1b('0x4a')][_0x3a1b('0x31')]);_0x119693[_0x3a1b('0x2f')]=qs[_0x3a1b('0x2f')](_0x1802e8[_0x3a1b('0x4a')][_0x3a1b('0x2f')]);}_0x119693['order']=qs[_0x3a1b('0x53')](_0x1802e8[_0x3a1b('0x4a')]['sort']);_0x119693[_0x3a1b('0x54')]=qs[_0x3a1b('0x4c')](_[_0x3a1b('0x55')](_0x1802e8[_0x3a1b('0x4a')],_0x107945[_0x3a1b('0x4c')]));_0x119693[_0x3a1b('0x54')][_0x3a1b('0x6c')]=_0x53566d['id'];if(_0x1802e8[_0x3a1b('0x4a')]['filter']){_0x119693['where']=_['merge'](_0x119693['where'],{'$or':_[_0x3a1b('0x49')](_0x119693[_0x3a1b('0x4e')],function(_0x13c8a8){var _0x986609={};_0x986609[_0x13c8a8]={'$like':'%'+_0x1802e8[_0x3a1b('0x4a')]['filter']+'%'};return _0x986609;})});}_0x119693=_['merge']({},_0x119693,_0x1802e8['options']);return db['Disposition'][_0x3a1b('0x32')]({'where':_0x119693[_0x3a1b('0x54')]})['then'](function(_0x361165){_0x459e81['count']=_0x361165;if(_0x1802e8[_0x3a1b('0x4a')]['includeAll']){_0x119693[_0x3a1b('0x60')]=[{'all':!![]}];}return db[_0x3a1b('0x6d')][_0x3a1b('0x5c')](_0x119693);})[_0x3a1b('0x39')](function(_0x5518a8){_0x459e81[_0x3a1b('0x6e')]=_0x5518a8;return _0x459e81;});}})['then'](respondWithFilteredResult(_0x5630ab,_0x119693))[_0x3a1b('0x2b')](handleError(_0x5630ab,null));};exports['removeDispositions']=function(_0x17f58d,_0x206b6d,_0xc70103){return db[_0x3a1b('0x5a')][_0x3a1b('0x66')]({'where':{'id':_0x17f58d[_0x3a1b('0x5e')]['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x206b6d,null))['then'](function(_0x546896){if(_0x546896){return _0x546896[_0x3a1b('0x6f')](_0x17f58d[_0x3a1b('0x4a')]['ids']);}})[_0x3a1b('0x39')](respondWithStatusCode(_0x206b6d,null))[_0x3a1b('0x2b')](handleError(_0x206b6d,null));};exports[_0x3a1b('0x70')]=function(_0x3ac943,_0x1878ee,_0x14d040){if(_0x3ac943[_0x3a1b('0x69')]['id']){delete _0x3ac943['body']['id'];}return db[_0x3a1b('0x5a')][_0x3a1b('0x66')]({'where':{'id':_0x3ac943[_0x3a1b('0x5e')]['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x1878ee,null))['then'](function(_0x5274a0){if(_0x5274a0){_0x3ac943[_0x3a1b('0x69')][_0x3a1b('0x6c')]=_0x5274a0['id'];return db[_0x3a1b('0x71')][_0x3a1b('0x61')](_0x3ac943['body']);}})[_0x3a1b('0x39')](respondWithResult(_0x1878ee,null))['catch'](handleError(_0x1878ee,null));};exports[_0x3a1b('0x72')]=function(_0xa703a0,_0x36a602,_0x3d099b){var _0x16a908={'raw':![],'where':{}};var _0x3405d6={};var _0x52bfbf={'count':0x0,'rows':[]};return db[_0x3a1b('0x5a')][_0x3a1b('0x73')]({'where':{'id':_0xa703a0[_0x3a1b('0x5e')]['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x36a602,null))[_0x3a1b('0x39')](function(_0x61be23){if(_0x61be23){_0x3405d6[_0x3a1b('0x48')]=_[_0x3a1b('0x4b')](db[_0x3a1b('0x71')][_0x3a1b('0x45')]);_0x3405d6['query']=_['keys'](_0xa703a0['query']);_0x3405d6['filters']=_[_0x3a1b('0x4d')](_0x3405d6[_0x3a1b('0x48')],_0x3405d6['query']);_0x16a908[_0x3a1b('0x4e')]=_[_0x3a1b('0x4d')](_0x3405d6[_0x3a1b('0x48')],qs[_0x3a1b('0x4f')](_0xa703a0[_0x3a1b('0x4a')][_0x3a1b('0x4f')]));_0x16a908['attributes']=_0x16a908[_0x3a1b('0x4e')][_0x3a1b('0x5f')]?_0x16a908[_0x3a1b('0x4e')]:_0x3405d6[_0x3a1b('0x48')];if(!_0xa703a0[_0x3a1b('0x4a')][_0x3a1b('0x50')](_0x3a1b('0x51'))){_0x16a908['limit']=qs['limit'](_0xa703a0[_0x3a1b('0x4a')][_0x3a1b('0x31')]);_0x16a908[_0x3a1b('0x2f')]=qs[_0x3a1b('0x2f')](_0xa703a0[_0x3a1b('0x4a')][_0x3a1b('0x2f')]);}_0x16a908[_0x3a1b('0x52')]=qs['sort'](_0xa703a0[_0x3a1b('0x4a')][_0x3a1b('0x53')]);_0x16a908[_0x3a1b('0x54')]=qs[_0x3a1b('0x4c')](_[_0x3a1b('0x55')](_0xa703a0[_0x3a1b('0x4a')],_0x3405d6['filters']));_0x16a908[_0x3a1b('0x54')][_0x3a1b('0x6c')]=_0x61be23['id'];if(_0xa703a0[_0x3a1b('0x4a')][_0x3a1b('0x58')]){_0x16a908['where']=_[_0x3a1b('0x56')](_0x16a908[_0x3a1b('0x54')],{'$or':_['map'](_0x16a908[_0x3a1b('0x4e')],function(_0x5270a0){var _0x5635dd={};_0x5635dd[_0x5270a0]={'$like':'%'+_0xa703a0[_0x3a1b('0x4a')]['filter']+'%'};return _0x5635dd;})});}_0x16a908=_[_0x3a1b('0x56')]({},_0x16a908,_0xa703a0[_0x3a1b('0x59')]);return db['CannedAnswer']['count']({'where':_0x16a908[_0x3a1b('0x54')]})['then'](function(_0x49246e){_0x52bfbf['count']=_0x49246e;if(_0xa703a0[_0x3a1b('0x4a')]['includeAll']){_0x16a908['include']=[{'all':!![]}];}return db[_0x3a1b('0x71')][_0x3a1b('0x5c')](_0x16a908);})[_0x3a1b('0x39')](function(_0x186b8e){_0x52bfbf[_0x3a1b('0x6e')]=_0x186b8e;return _0x52bfbf;});}})[_0x3a1b('0x39')](respondWithFilteredResult(_0x36a602,_0x16a908))[_0x3a1b('0x2b')](handleError(_0x36a602,null));};exports[_0x3a1b('0x74')]=function(_0x5b1f84,_0x241f70,_0x5bbd63){return db['FaxAccount']['find']({'where':{'id':_0x5b1f84[_0x3a1b('0x5e')]['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x241f70,null))[_0x3a1b('0x39')](function(_0x178c95){if(_0x178c95){return _0x178c95[_0x3a1b('0x74')](_0x5b1f84['query'][_0x3a1b('0x75')]);}})[_0x3a1b('0x39')](respondWithStatusCode(_0x241f70,null))[_0x3a1b('0x2b')](handleError(_0x241f70,null));};exports[_0x3a1b('0x76')]=function(_0x26b2bd,_0x152c37,_0x311680){return db[_0x3a1b('0x77')]['find']({'where':{'id':_0x26b2bd[_0x3a1b('0x5e')]['id']}})['then'](handleEntityNotFound(_0x152c37,null))[_0x3a1b('0x39')](function(_0x415a5f){if(_0x415a5f){return _0x415a5f['addInteraction'](_0x26b2bd['body'][_0x3a1b('0x75')],_[_0x3a1b('0x78')](_0x26b2bd['body'],[_0x3a1b('0x75'),'id'])||{});}})['then'](respondWithResult(_0x152c37,null))[_0x3a1b('0x2b')](handleError(_0x152c37,null));};exports['getInteractions']=function(_0x46b8a6,_0x2ed203,_0x432ead){var _0x4fff8f={'raw':![],'where':{}};var _0x34d9d8={};var _0x3458e3={'count':0x0,'rows':[]};return db['FaxAccount'][_0x3a1b('0x73')]({'where':{'id':_0x46b8a6['params']['id']}})['then'](handleEntityNotFound(_0x2ed203,null))[_0x3a1b('0x39')](function(_0x4610f3){if(_0x4610f3){_0x34d9d8[_0x3a1b('0x48')]=_['keys'](db[_0x3a1b('0x77')][_0x3a1b('0x45')]);_0x34d9d8['query']=_[_0x3a1b('0x4b')](_0x46b8a6[_0x3a1b('0x4a')]);_0x34d9d8[_0x3a1b('0x4c')]=_[_0x3a1b('0x4d')](_0x34d9d8[_0x3a1b('0x48')],_0x34d9d8['query']);_0x4fff8f['attributes']=_['intersection'](_0x34d9d8[_0x3a1b('0x48')],qs[_0x3a1b('0x4f')](_0x46b8a6[_0x3a1b('0x4a')][_0x3a1b('0x4f')]));_0x4fff8f['attributes']=_0x4fff8f[_0x3a1b('0x4e')][_0x3a1b('0x5f')]?_0x4fff8f[_0x3a1b('0x4e')]:_0x34d9d8['model'];if(!_0x46b8a6['query']['hasOwnProperty'](_0x3a1b('0x51'))){_0x4fff8f[_0x3a1b('0x31')]=qs[_0x3a1b('0x31')](_0x46b8a6[_0x3a1b('0x4a')][_0x3a1b('0x31')]);_0x4fff8f[_0x3a1b('0x2f')]=qs['offset'](_0x46b8a6['query'][_0x3a1b('0x2f')]);}_0x4fff8f[_0x3a1b('0x52')]=qs[_0x3a1b('0x53')](_0x46b8a6[_0x3a1b('0x4a')][_0x3a1b('0x53')]);_0x4fff8f[_0x3a1b('0x54')]=qs[_0x3a1b('0x4c')](_['pick'](_0x46b8a6[_0x3a1b('0x4a')],_0x34d9d8[_0x3a1b('0x4c')]));_0x4fff8f['where'][_0x3a1b('0x6c')]=_0x4610f3['id'];if(_0x46b8a6['query']['filter']){_0x4fff8f[_0x3a1b('0x54')]=_[_0x3a1b('0x56')](_0x4fff8f[_0x3a1b('0x54')],{'$or':_[_0x3a1b('0x49')](_0x4fff8f[_0x3a1b('0x4e')],function(_0x28f884){var _0x5ede96={};_0x5ede96[_0x28f884]={'$like':'%'+_0x46b8a6['query'][_0x3a1b('0x58')]+'%'};return _0x5ede96;})});}_0x4fff8f=_[_0x3a1b('0x56')]({},_0x4fff8f,_0x46b8a6[_0x3a1b('0x59')]);return db[_0x3a1b('0x77')]['count']({'where':_0x4fff8f[_0x3a1b('0x54')]})['then'](function(_0x4884ff){_0x3458e3[_0x3a1b('0x32')]=_0x4884ff;if(_0x46b8a6[_0x3a1b('0x4a')][_0x3a1b('0x5b')]){_0x4fff8f[_0x3a1b('0x60')]=[{'model':db[_0x3a1b('0x79')],'as':_0x3a1b('0x7a'),'required':![]},{'model':db[_0x3a1b('0x7b')],'as':_0x3a1b('0x7c'),'attributes':[_0x3a1b('0x40'),_0x3a1b('0x7d'),_0x3a1b('0x7e')],'required':![]},{'model':db[_0x3a1b('0x7f')],'as':'Tags','attributes':['id',_0x3a1b('0x40'),'color'],'where':_0x46b8a6['query']['tag']?{'id':_0x46b8a6[_0x3a1b('0x4a')][_0x3a1b('0x80')]}:undefined,'required':_0x46b8a6[_0x3a1b('0x4a')]['tag']?!![]:![]}];}return db[_0x3a1b('0x77')][_0x3a1b('0x5c')](_0x4fff8f);})[_0x3a1b('0x39')](function(_0x58464b){_0x3458e3[_0x3a1b('0x6e')]=_0x58464b;return _0x3458e3;});}})[_0x3a1b('0x39')](respondWithFilteredResult(_0x2ed203,_0x4fff8f))[_0x3a1b('0x2b')](handleError(_0x2ed203,null));};exports[_0x3a1b('0x81')]=function(_0x8ea37,_0x13b3cb,_0x3e5d20){return db[_0x3a1b('0x5a')]['findOne']({'where':{'id':_0x8ea37[_0x3a1b('0x5e')]['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x13b3cb,null))['then'](function(_0x5a4616){if(_0x5a4616){return db['sequelize'][_0x3a1b('0x82')](function(_0x5d1e57){return db[_0x3a1b('0x83')][_0x3a1b('0x3a')]({'where':{'FaxAccountId':_0x8ea37[_0x3a1b('0x5e')]['id']},'transaction':_0x5d1e57})['then'](function(_0x55b89e){var _0x12c079=_['map'](_0x8ea37['body'],function(_0x1df21d){_0x1df21d[_0x3a1b('0x6c')]=_0x8ea37[_0x3a1b('0x5e')]['id'];return _0x1df21d;});return db['FaxApplication'][_0x3a1b('0x84')](_0x12c079,{'transaction':_0x5d1e57});});})[_0x3a1b('0x39')](function(){return db[_0x3a1b('0x83')][_0x3a1b('0x85')]({'where':{'FaxAccountId':_0x8ea37['params']['id']},'order':_0x3a1b('0x86')});});}})[_0x3a1b('0x39')](respondWithResult(_0x13b3cb,null))[_0x3a1b('0x2b')](handleError(_0x13b3cb,null));};exports[_0x3a1b('0x87')]=function(_0x4b1d5f,_0x14ab58,_0x44f100){var _0x425eab={};var _0x1c12cc={};var _0x3145ec;var _0x4a8043;return db['FaxAccount'][_0x3a1b('0x73')]({'where':{'id':_0x4b1d5f[_0x3a1b('0x5e')]['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x14ab58,null))[_0x3a1b('0x39')](function(_0x59d019){if(_0x59d019){_0x3145ec=_0x59d019;_0x1c12cc[_0x3a1b('0x48')]=_['keys'](db[_0x3a1b('0x83')]['rawAttributes']);_0x1c12cc[_0x3a1b('0x4a')]=_[_0x3a1b('0x4b')](_0x4b1d5f[_0x3a1b('0x4a')]);_0x1c12cc[_0x3a1b('0x4c')]=_[_0x3a1b('0x4d')](_0x1c12cc[_0x3a1b('0x48')],_0x1c12cc[_0x3a1b('0x4a')]);_0x425eab[_0x3a1b('0x4e')]=_[_0x3a1b('0x4d')](_0x1c12cc['model'],qs[_0x3a1b('0x4f')](_0x4b1d5f[_0x3a1b('0x4a')][_0x3a1b('0x4f')]));_0x425eab['attributes']=_0x425eab[_0x3a1b('0x4e')][_0x3a1b('0x5f')]?_0x425eab['attributes']:_0x1c12cc[_0x3a1b('0x48')];_0x425eab[_0x3a1b('0x52')]=qs[_0x3a1b('0x53')](_0x4b1d5f['query'][_0x3a1b('0x53')]);_0x425eab['where']=qs[_0x3a1b('0x4c')](_[_0x3a1b('0x55')](_0x4b1d5f[_0x3a1b('0x4a')],_0x1c12cc[_0x3a1b('0x4c')]));if(_0x4b1d5f[_0x3a1b('0x4a')][_0x3a1b('0x58')]){_0x425eab[_0x3a1b('0x54')]=_[_0x3a1b('0x56')](_0x425eab[_0x3a1b('0x54')],{'$or':_[_0x3a1b('0x49')](_0x425eab[_0x3a1b('0x4e')],function(_0x39ebf8){var _0x21fb29={};_0x21fb29[_0x39ebf8]={'$like':'%'+_0x4b1d5f['query'][_0x3a1b('0x58')]+'%'};return _0x21fb29;})});}_0x425eab=_[_0x3a1b('0x56')]({},_0x425eab,_0x4b1d5f[_0x3a1b('0x59')]);return _0x3145ec[_0x3a1b('0x87')](_0x425eab);}})['then'](function(_0x560472){if(_0x560472){_0x4a8043=_0x560472[_0x3a1b('0x5f')];if(!_0x4b1d5f[_0x3a1b('0x4a')][_0x3a1b('0x50')](_0x3a1b('0x51'))){_0x425eab['limit']=qs[_0x3a1b('0x31')](_0x4b1d5f[_0x3a1b('0x4a')][_0x3a1b('0x31')]);_0x425eab[_0x3a1b('0x2f')]=qs[_0x3a1b('0x2f')](_0x4b1d5f[_0x3a1b('0x4a')][_0x3a1b('0x2f')]);}return _0x3145ec[_0x3a1b('0x87')](_0x425eab);}})[_0x3a1b('0x39')](function(_0x1061d8){if(_0x1061d8){return _0x1061d8?{'count':_0x4a8043,'rows':_0x1061d8}:null;}})[_0x3a1b('0x39')](respondWithResult(_0x14ab58,null))['catch'](handleError(_0x14ab58,null));};function Extension(_0x3d1901,_0x55f584,_0x37eb29,_0x1b57fe){this[_0x3a1b('0x88')]='from-voip-provider';this[_0x3a1b('0x89')]=_0x3d1901[_0x3a1b('0x8a')];this['app']=_0x1b57fe;this['type']=_0x3a1b('0x8b');this[_0x3a1b('0x8c')]=_0x3a1b('0x8d');this[_0x3a1b('0x6c')]=_0x3d1901['id'];this[_0x3a1b('0x86')]=_0x55f584;this[_0x3a1b('0x8e')]=_0x37eb29;}function createExtensionsReciveFax(_0x24228c){var _0x5433a8=0x1;var _0x46ac78=[];_0x46ac78['push'](new Extension(_0x24228c,_0x5433a8,'',_0x3a1b('0x8f')));_0x5433a8+=0x1;_0x46ac78[_0x3a1b('0x90')](new Extension(_0x24228c,_0x5433a8,_0x3a1b('0x91'),'Set'));_0x5433a8+=0x1;for(var _0x4db244 in _0x24228c){if(_0x24228c[_0x3a1b('0x50')](_0x4db244)&&(_0x4db244==='ecm'||_0x4db244===_0x3a1b('0x8a')||_0x4db244===_0x3a1b('0x92')||_0x4db244===_0x3a1b('0x93')||_0x4db244===_0x3a1b('0x94')||_0x4db244===_0x3a1b('0x95')||_0x4db244===_0x3a1b('0x96')||_0x4db244===_0x3a1b('0x97')||_0x4db244===_0x3a1b('0x98'))){_0x46ac78['push'](new Extension(_0x24228c,_0x5433a8,_0x3a1b('0x99')+_0x4db244+')='+_0x24228c[_0x4db244],'Set'));_0x5433a8+=0x1;}}_0x46ac78[_0x3a1b('0x90')](new Extension(_0x24228c,_0x5433a8,'6',_0x3a1b('0x9a')));_0x5433a8+=0x1;_0x46ac78[_0x3a1b('0x90')](new Extension(_0x24228c,_0x5433a8,'/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',_0x3a1b('0x9b')));_0x5433a8=0x0;return _0x46ac78;}exports[_0x3a1b('0x9c')]=function(_0x14d43e,_0x388f4c,_0x1c0964){var _0xf3cd70;return db[_0x3a1b('0x9d')][_0x3a1b('0x82')](function(_0x3899f9){return db[_0x3a1b('0x5a')]['create'](_0x14d43e[_0x3a1b('0x69')],{'transaction':_0x3899f9})[_0x3a1b('0x39')](function(_0x2b6c3b){_0xf3cd70=_0x2b6c3b['get']({'plain':!![]});return db[_0x3a1b('0x9e')][_0x3a1b('0x84')](createExtensionsReciveFax(_0xf3cd70),{'transaction':_0x3899f9});});})[_0x3a1b('0x39')](function(){return _0xf3cd70;})[_0x3a1b('0x39')](respondWithResult(_0x388f4c,null))['catch'](handleError(_0x388f4c,null));};exports[_0x3a1b('0x9f')]=function(_0x145220,_0x1358a1,_0x269fc2){var _0x341b75;return db[_0x3a1b('0x9d')][_0x3a1b('0x82')](function(_0x433ef5){return db[_0x3a1b('0x5a')]['update'](_0x145220['body'],{'where':{'id':_0x145220['body']['id']},'transaction':_0x433ef5})[_0x3a1b('0x39')](function(_0x2d7a5c){return db['VoiceExtension']['destroy']({'where':{'FaxAccountId':_0x145220[_0x3a1b('0x69')]['id']},'transaction':_0x433ef5})[_0x3a1b('0x39')](function(_0x5d6406){return db['VoiceExtension'][_0x3a1b('0x84')](createExtensionsReciveFax(_[_0x3a1b('0x78')](_0x145220[_0x3a1b('0x69')],['tech',_0x3a1b('0xa0'),'createdAt','updatedAt',_0x3a1b('0xa1'),'ListId'])),{'transaction':_0x433ef5});});});})[_0x3a1b('0x39')](function(){return db['FaxAccount'][_0x3a1b('0xa2')](_0x145220[_0x3a1b('0x69')]['id']);})['then'](respondWithResult(_0x1358a1,null))['catch'](handleError(_0x1358a1,null));};exports[_0x3a1b('0xa3')]=function(_0x435476,_0x3ca211,_0x130d89){var _0x36d912={'raw':!![],'where':{}};var _0x5e81a7={};var _0x1ac32d={'count':0x0,'rows':[]};return db[_0x3a1b('0x5a')]['findOne']({'where':{'id':_0x435476[_0x3a1b('0x5e')]['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x3ca211,null))['then'](function(_0x555169){if(_0x555169){_0x5e81a7[_0x3a1b('0x48')]=_[_0x3a1b('0x4b')](db['FaxMessage'][_0x3a1b('0x45')]);_0x5e81a7[_0x3a1b('0x4a')]=_[_0x3a1b('0x4b')](_0x435476[_0x3a1b('0x4a')]);_0x5e81a7[_0x3a1b('0x4c')]=_[_0x3a1b('0x4d')](_0x5e81a7[_0x3a1b('0x48')],_0x5e81a7[_0x3a1b('0x4a')]);_0x36d912[_0x3a1b('0x4e')]=_[_0x3a1b('0x4d')](_0x5e81a7[_0x3a1b('0x48')],qs['fields'](_0x435476[_0x3a1b('0x4a')][_0x3a1b('0x4f')]));_0x36d912[_0x3a1b('0x4e')]=_0x36d912[_0x3a1b('0x4e')][_0x3a1b('0x5f')]?_0x36d912[_0x3a1b('0x4e')]:_0x5e81a7['model'];if(!_0x435476[_0x3a1b('0x4a')][_0x3a1b('0x50')](_0x3a1b('0x51'))){_0x36d912[_0x3a1b('0x31')]=qs[_0x3a1b('0x31')](_0x435476['query']['limit']);_0x36d912[_0x3a1b('0x2f')]=qs[_0x3a1b('0x2f')](_0x435476['query']['offset']);}_0x36d912[_0x3a1b('0x52')]=qs['sort'](_0x435476[_0x3a1b('0x4a')][_0x3a1b('0x53')]);_0x36d912[_0x3a1b('0x54')]=qs[_0x3a1b('0x4c')](_[_0x3a1b('0x55')](_0x435476[_0x3a1b('0x4a')],_0x5e81a7[_0x3a1b('0x4c')]));_0x36d912[_0x3a1b('0x54')][_0x3a1b('0x6c')]=_0x555169['id'];if(_0x435476['query'][_0x3a1b('0x58')]){_0x36d912[_0x3a1b('0x54')]=_[_0x3a1b('0x56')](_0x36d912['where'],{'$or':_[_0x3a1b('0x49')](_0x36d912[_0x3a1b('0x4e')],function(_0x1dc346){var _0x114298={};_0x114298[_0x1dc346]={'$like':'%'+_0x435476[_0x3a1b('0x4a')]['filter']+'%'};return _0x114298;})});}if(_0x435476[_0x3a1b('0x4a')]['$gte']){var _0x483192=_0x435476[_0x3a1b('0x4a')]['$gte'][_0x3a1b('0xa4')](',');var _0x1ea762={};_0x1ea762[_0x483192[0x0]]={'$gte':moment(_0x483192[0x1])[_0x3a1b('0xa5')](_0x3a1b('0xa6'))};_0x36d912[_0x3a1b('0x54')]=_[_0x3a1b('0x56')](_0x36d912['where'],_0x1ea762);}_0x36d912=_[_0x3a1b('0x56')]({},_0x36d912,_0x435476[_0x3a1b('0x59')]);return db[_0x3a1b('0xa7')][_0x3a1b('0x32')]({'where':_0x36d912['where']})[_0x3a1b('0x39')](function(_0x5b7d85){_0x1ac32d[_0x3a1b('0x32')]=_0x5b7d85;if(_0x435476[_0x3a1b('0x4a')][_0x3a1b('0x5b')]){_0x36d912[_0x3a1b('0x60')]=[{'all':!![]}];}return db[_0x3a1b('0xa7')][_0x3a1b('0x5c')](_0x36d912);})['then'](function(_0x422788){_0x1ac32d[_0x3a1b('0x6e')]=_0x422788;return _0x1ac32d;});}})[_0x3a1b('0x39')](respondWithFilteredResult(_0x3ca211,_0x36d912))['catch'](handleError(_0x3ca211,null));};exports[_0x3a1b('0x41')]=function(_0x1dc619,_0x1d7d7b,_0x823800){var _0xb89965,_0x44f182={},_0x1f5745;if(_0x1dc619[_0x3a1b('0x69')]['to']){_0x1f5745=_0x1dc619[_0x3a1b('0x69')]['to'][0x0];}return db[_0x3a1b('0x5a')][_0x3a1b('0x66')]({'where':{'id':_0x1dc619[_0x3a1b('0x5e')]['id']},'include':[{'model':db['CmList'],'as':_0x3a1b('0xa8'),'include':[{'model':db[_0x3a1b('0x79')],'as':_0x3a1b('0xa9'),'where':{'fax':_0x1f5745},'limit':0x1,'order':[['updatedAt',_0x3a1b('0xaa')]]}]}]})[_0x3a1b('0x39')](handleEntityNotFound(_0x1d7d7b,null))['then'](function(_0x41b7f6){_0xb89965=_0x41b7f6;if(_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')]&&_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][_0x3a1b('0x5f')]){for(var _0x2d1ac7=0x0;_0x2d1ac7<_0x1dc619['body'][_0x3a1b('0xab')]['length'];_0x2d1ac7+=0x1){_0x1dc619[_0x3a1b('0x69')]['attachments'][_0x2d1ac7]={'filename':_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][_0x2d1ac7]['name'],'id':_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][_0x2d1ac7]['id'],'path':path[_0x3a1b('0xac')](config[_0x3a1b('0xad')],_0x3a1b('0xae'),_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][_0x2d1ac7][_0x3a1b('0xaf')])};}}return respondWithRpcPromise(_0x3a1b('0xb0'),_0x3a1b('0xb0'),{'FaxAccountId':_[_0x3a1b('0xb1')](_0x1dc619['params']['id'])?undefined:_0x1dc619[_0x3a1b('0x5e')]['id'],'path':_['isNil'](_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][0x0][_0x3a1b('0xb2')])?undefined:_0x1dc619['body']['attachments'][0x0][_0x3a1b('0xb2')],'fax':_[_0x3a1b('0xb1')](_0x1dc619[_0x3a1b('0x69')]['to'][0x0])?undefined:_0x1dc619[_0x3a1b('0x69')]['to'][0x0]},client9002);})[_0x3a1b('0x39')](function(){if(_0xb89965){if(_[_0x3a1b('0xb1')](_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xb3')])){_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xb3')]=util['format']('\x22%s\x22\x20<%s>',_0xb89965[_0x3a1b('0x40')],_0xb89965[_0x3a1b('0xb4')]);}if(_0xb89965[_0x3a1b('0xa8')]){if(_0xb89965[_0x3a1b('0xa8')][_0x3a1b('0xa9')][_0x3a1b('0x5f')]){return _0xb89965['List'][_0x3a1b('0xa9')][0x0];}else{return db['CmContact']['create'](_[_0x3a1b('0x1b')](_0x1dc619[_0x3a1b('0x69')],{'firstName':_0x1dc619[_0x3a1b('0x69')]['to'][0x0],'phone':_0x1dc619['body']['to'][0x0],'fax':_0x1dc619[_0x3a1b('0x69')]['to'][0x0],'ListId':_0xb89965[_0x3a1b('0xb5')]}));}}else{throw new Error(_0x3a1b('0xb6'));}}else{throw new Error(_0x3a1b('0xb7'));}})['then'](function(_0x1f9f5a){if(_0x1f9f5a){return db[_0x3a1b('0x77')]['find']({'where':{'ContactId':_0x1f9f5a['id'],'closed':![],'FaxAccountId':_0xb89965['id']}})[_0x3a1b('0x39')](function(_0x2e6052){if(_0x2e6052){return[_0x2e6052,![]];}return db[_0x3a1b('0x77')]['create']({'UserId':_0x1dc619[_0x3a1b('0x62')]['id'],'ContactId':_0x1f9f5a['id'],'FaxAccountId':_0xb89965['id'],'fax':_0x1dc619['body']['to'][0x0],'firstMsgDirection':_0x3a1b('0xb8'),'Messages':[_[_0x3a1b('0x56')](_0x1dc619['body'],{'read':![],'body':_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][0x0][_0x3a1b('0xb9')],'FaxAccountId':_0xb89965['id'],'UserId':_0x1dc619['user']['id'],'ContactId':_0x1f9f5a['id'],'AttachmentId':_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][0x0]['id']})]},{'include':[{'model':db[_0x3a1b('0xa7')],'as':_0x3a1b('0xba')}]})[_0x3a1b('0x39')](function(_0x199088){return[_0x199088,!![]];});});}else{throw new Error(_0x3a1b('0xbb'));}})[_0x3a1b('0xbc')](function(_0x44efd7,_0x58d463){if(_0x58d463){return _0x44efd7;}return db[_0x3a1b('0xa7')]['create']({'direction':'out','read':![],'body':_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][0x0][_0x3a1b('0xb9')],'FaxAccountId':_0xb89965['id'],'FaxInteractionId':_0x44efd7['id'],'UserId':_0x1dc619[_0x3a1b('0x62')]['id'],'ContactId':_0x44efd7[_0x3a1b('0xbd')],'AttachmentId':_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][0x0]['id']})[_0x3a1b('0x39')](function(_0x5b039d){_0x44efd7['dataValues'][_0x3a1b('0xba')]=[];_0x44efd7[_0x3a1b('0xbe')][_0x3a1b('0xba')][_0x3a1b('0x90')](_0x5b039d[_0x3a1b('0xbe')]);return _0x44efd7;});})[_0x3a1b('0x39')](function(_0x461bba){respondWithRpcPromise(_0x3a1b('0xbf'),_0x3a1b('0xbf'),{'FaxAccountId':_[_0x3a1b('0xb1')](_0x1dc619['params']['id'])?undefined:_0x1dc619['params']['id'],'path':_[_0x3a1b('0xb1')](_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][0x0][_0x3a1b('0xb2')])?undefined:_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][0x0][_0x3a1b('0xb2')],'fax':_['isNil'](_0x1dc619[_0x3a1b('0x69')]['to'][0x0])?undefined:_0x1dc619['body']['to'][0x0],'AttachmentId':_0x1dc619[_0x3a1b('0x69')][_0x3a1b('0xab')][0x0]['id']},client9002)[_0x3a1b('0x39')](function(_0x52c837){logger[_0x3a1b('0x2a')](_0x3a1b('0xc0'),_0x52c837);})[_0x3a1b('0x2b')](function(_0x4229f1){logger[_0x3a1b('0x2a')](_0x3a1b('0xc0'),_0x4229f1);});return _0x461bba;})[_0x3a1b('0x39')](respondWithResult(_0x1d7d7b,null))[_0x3a1b('0x2b')](handleError(_0x1d7d7b,null));};exports['addAgents']=function(_0x37184c,_0x4607de,_0x365ae2){return db[_0x3a1b('0x5a')][_0x3a1b('0x66')]({'where':{'id':_0x37184c['params']['id']}})['then'](handleEntityNotFound(_0x4607de,null))['then'](function(_0x8bde2f){if(_0x8bde2f){return _0x8bde2f[_0x3a1b('0xc1')](_0x37184c['body'][_0x3a1b('0x75')],_[_0x3a1b('0x78')](_0x37184c['body'],['ids','id'])||{})['spread'](function(_0x35fc9f){for(var _0x425a30=0x0;_0x425a30<_0x37184c[_0x3a1b('0x69')][_0x3a1b('0x75')][_0x3a1b('0x5f')];_0x425a30+=0x1){socket[_0x3a1b('0xc2')](_0x3a1b('0xc3'),{'UserId':Number(_0x37184c[_0x3a1b('0x69')][_0x3a1b('0x75')][_0x425a30]),'FaxAccountId':Number(_0x37184c[_0x3a1b('0x5e')]['id'])});}return _0x35fc9f;});}})[_0x3a1b('0x39')](respondWithResult(_0x4607de,null))['catch'](handleError(_0x4607de,null));};exports[_0x3a1b('0xc4')]=function(_0x5b4da3,_0x30a03d,_0x53cbf9){return db[_0x3a1b('0x5a')][_0x3a1b('0x66')]({'where':{'id':_0x5b4da3['params']['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x30a03d,null))[_0x3a1b('0x39')](function(_0x4d9a00){if(_0x4d9a00){return _0x4d9a00[_0x3a1b('0xc4')](_0x5b4da3['query']['ids'])['then'](function(){if(_[_0x3a1b('0xc5')](_0x5b4da3['query'][_0x3a1b('0x75')])){for(var _0x232ee4=0x0;_0x232ee4<_0x5b4da3[_0x3a1b('0x4a')][_0x3a1b('0x75')][_0x3a1b('0x5f')];_0x232ee4+=0x1){socket[_0x3a1b('0xc2')](_0x3a1b('0xc6'),{'UserId':Number(_0x5b4da3[_0x3a1b('0x4a')][_0x3a1b('0x75')][_0x232ee4]),'FaxAccountId':Number(_0x5b4da3[_0x3a1b('0x5e')]['id'])});}}else{socket[_0x3a1b('0xc2')]('userFaxAccount:remove',{'UserId':Number(_0x5b4da3[_0x3a1b('0x4a')][_0x3a1b('0x75')]),'FaxAccountId':Number(_0x5b4da3[_0x3a1b('0x5e')]['id'])});}});}})[_0x3a1b('0x39')](respondWithStatusCode(_0x30a03d,null))[_0x3a1b('0x2b')](handleError(_0x30a03d,null));};exports[_0x3a1b('0xc7')]=function(_0x350ccf,_0x1147e4,_0x357e18){var _0x5d6f5c={};var _0x3e2a29={};var _0x558106;var _0x2632d3;return db[_0x3a1b('0x5a')][_0x3a1b('0x73')]({'where':{'id':_0x350ccf['params']['id']}})[_0x3a1b('0x39')](handleEntityNotFound(_0x1147e4,null))[_0x3a1b('0x39')](function(_0x343cc2){if(_0x343cc2){_0x558106=_0x343cc2;_0x3e2a29[_0x3a1b('0x48')]=_['keys'](db['User'][_0x3a1b('0x45')]);_0x3e2a29[_0x3a1b('0x4a')]=_[_0x3a1b('0x4b')](_0x350ccf['query']);_0x3e2a29['filters']=_[_0x3a1b('0x4d')](_0x3e2a29['model'],_0x3e2a29[_0x3a1b('0x4a')]);_0x5d6f5c[_0x3a1b('0x4e')]=_[_0x3a1b('0x4d')](_0x3e2a29[_0x3a1b('0x48')],qs['fields'](_0x350ccf[_0x3a1b('0x4a')][_0x3a1b('0x4f')]));_0x5d6f5c['attributes']=_0x5d6f5c[_0x3a1b('0x4e')]['length']?_0x5d6f5c[_0x3a1b('0x4e')]:_0x3e2a29[_0x3a1b('0x48')];_0x5d6f5c['order']=qs[_0x3a1b('0x53')](_0x350ccf[_0x3a1b('0x4a')][_0x3a1b('0x53')]);_0x5d6f5c['where']=qs[_0x3a1b('0x4c')](_[_0x3a1b('0x55')](_0x350ccf[_0x3a1b('0x4a')],_0x3e2a29[_0x3a1b('0x4c')]));if(_0x350ccf[_0x3a1b('0x4a')][_0x3a1b('0x58')]){_0x5d6f5c[_0x3a1b('0x54')]=_[_0x3a1b('0x56')](_0x5d6f5c[_0x3a1b('0x54')],{'$or':_[_0x3a1b('0x49')](_0x5d6f5c[_0x3a1b('0x4e')],function(_0x53e89f){var _0x3f31ac={};_0x3f31ac[_0x53e89f]={'$like':'%'+_0x350ccf['query'][_0x3a1b('0x58')]+'%'};return _0x3f31ac;})});}_0x5d6f5c=_[_0x3a1b('0x56')]({},_0x5d6f5c,_0x350ccf[_0x3a1b('0x59')]);return _0x558106['getAgents'](_0x5d6f5c);}})[_0x3a1b('0x39')](function(_0x448a4d){if(_0x448a4d){_0x2632d3=_0x448a4d[_0x3a1b('0x5f')];if(!_0x350ccf[_0x3a1b('0x4a')][_0x3a1b('0x50')](_0x3a1b('0x51'))){_0x5d6f5c['limit']=qs[_0x3a1b('0x31')](_0x350ccf[_0x3a1b('0x4a')]['limit']);_0x5d6f5c[_0x3a1b('0x2f')]=qs['offset'](_0x350ccf[_0x3a1b('0x4a')]['offset']);}return _0x558106['getAgents'](_0x5d6f5c);}})['then'](function(_0x1fb45f){if(_0x1fb45f){return _0x1fb45f?{'count':_0x2632d3,'rows':_0x1fb45f}:null;}})[_0x3a1b('0x39')](respondWithResult(_0x1147e4,null))[_0x3a1b('0x2b')](handleError(_0x1147e4,null));};
\ No newline at end of file
index 2e56500..d207a69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1969=['events','../../mysqldb','FaxAccount','setMaxListeners','update','emit','hasOwnProperty','hook','exports'];(function(_0x550076,_0x3fe03f){var _0x22e477=function(_0x238141){while(--_0x238141){_0x550076['push'](_0x550076['shift']());}};_0x22e477(++_0x3fe03f);}(_0x1969,0xa2));var _0x9196=function(_0x9ce03f,_0x564de1){_0x9ce03f=_0x9ce03f-0x0;var _0x5cc5a=_0x1969[_0x9ce03f];return _0x5cc5a;};'use strict';var EventEmitter=require(_0x9196('0x0'));var FaxAccount=require(_0x9196('0x1'))['db'][_0x9196('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x9196('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9196('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3faf7b){return function(_0xf36066,_0x30d1f9,_0x3ff7f9){FaxAccountEvents[_0x9196('0x5')](_0x3faf7b+':'+_0xf36066['id'],_0xf36066);FaxAccountEvents['emit'](_0x3faf7b,_0xf36066);_0x3ff7f9(null);};}for(var e in events){if(events[_0x9196('0x6')](e)){var event=events[e];FaxAccount[_0x9196('0x7')](e,emitEvent(event));}}module[_0x9196('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0xabd7=['emit','hook','events','../../mysqldb','FaxAccount','setMaxListeners','update'];(function(_0x42a206,_0x2b1612){var _0x35eb3b=function(_0x3e5c46){while(--_0x3e5c46){_0x42a206['push'](_0x42a206['shift']());}};_0x35eb3b(++_0x2b1612);}(_0xabd7,0x121));var _0x7abd=function(_0x38b656,_0x4b5bd2){_0x38b656=_0x38b656-0x0;var _0x975b0=_0xabd7[_0x38b656];return _0x975b0;};'use strict';var EventEmitter=require(_0x7abd('0x0'));var FaxAccount=require(_0x7abd('0x1'))['db'][_0x7abd('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x7abd('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7abd('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5d5649){return function(_0x512c3b,_0x2eb373,_0x5174f1){FaxAccountEvents['emit'](_0x5d5649+':'+_0x512c3b['id'],_0x512c3b);FaxAccountEvents[_0x7abd('0x5')](_0x5d5649,_0x512c3b);_0x5174f1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount[_0x7abd('0x6')](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
index 9ec806e..27eef47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7e4=['../../config/environment','./faxAccount.attributes','define','lodash','moment','bluebird','request-promise','path'];(function(_0x543b59,_0x207d9d){var _0xbfe24f=function(_0x5460ae){while(--_0x5460ae){_0x543b59['push'](_0x543b59['shift']());}};_0xbfe24f(++_0x207d9d);}(_0xa7e4,0x1d3));var _0x4a7e=function(_0x2d34d6,_0x397ff9){_0x2d34d6=_0x2d34d6-0x0;var _0x1d3d12=_0xa7e4[_0x2d34d6];return _0x1d3d12;};'use strict';var _=require(_0x4a7e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x4a7e('0x1'));var BPromise=require(_0x4a7e('0x2'));var rp=require(_0x4a7e('0x3'));var fs=require('fs');var path=require(_0x4a7e('0x4'));var rimraf=require('rimraf');var config=require(_0x4a7e('0x5'));var attributes=require(_0x4a7e('0x6'));module['exports']=function(_0x10c5a4,_0x290973){return _0x10c5a4[_0x4a7e('0x7')]('FaxAccount',attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x510e=['../../config/environment','./faxAccount.attributes','exports','FaxAccount','fax_accounts','../../config/logger','api','moment','request-promise','path'];(function(_0x25a5fc,_0x3d2f93){var _0x45eaec=function(_0x31800d){while(--_0x31800d){_0x25a5fc['push'](_0x25a5fc['shift']());}};_0x45eaec(++_0x3d2f93);}(_0x510e,0x91));var _0xe510=function(_0x5c3ae9,_0x450f9a){_0x5c3ae9=_0x5c3ae9-0x0;var _0x3f5950=_0x510e[_0x5c3ae9];return _0x3f5950;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe510('0x0'))(_0xe510('0x1'));var moment=require(_0xe510('0x2'));var BPromise=require('bluebird');var rp=require(_0xe510('0x3'));var fs=require('fs');var path=require(_0xe510('0x4'));var rimraf=require('rimraf');var config=require(_0xe510('0x5'));var attributes=require(_0xe510('0x6'));module[_0xe510('0x7')]=function(_0x2cfe6c,_0xd7b78a){return _0x2cfe6c['define'](_0xe510('0x8'),attributes,{'tableName':_0xe510('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf41367..f234587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dc5=['*,*,*,*','created','interaction','ContactId','UserId','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./faxAccount.socket','register','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetFaxAccount','FaxAccount','findAll','options','raw','where','include','map','model','attributes','debug','fax','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','body','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','from','find','account','CmList','List','Contacts','DESC','FaxApplication','get','applications','Applications','list','asc','length','ListId','create','FaxInteraction','Contact\x20not\x20found','spread','autoclose','close','unmanaged'];(function(_0x3a3548,_0x2e794c){var _0x579293=function(_0x49167c){while(--_0x49167c){_0x3a3548['push'](_0x3a3548['shift']());}};_0x579293(++_0x2e794c);}(_0x4dc5,0x1ce));var _0x54dc=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0x4dc5[_0x1ccdf7];return _0x52a0ae;};'use strict';var _=require(_0x54dc('0x0'));var util=require(_0x54dc('0x1'));var moment=require(_0x54dc('0x2'));var BPromise=require(_0x54dc('0x3'));var rs=require(_0x54dc('0x4'));var fs=require('fs');var Redis=require(_0x54dc('0x5'));var db=require(_0x54dc('0x6'))['db'];var utils=require(_0x54dc('0x7'));var logger=require(_0x54dc('0x8'))('rpc');var config=require(_0x54dc('0x9'));var jayson=require(_0x54dc('0xa'));var client=jayson[_0x54dc('0xb')]['http']({'port':0x232c});config[_0x54dc('0xc')]=_[_0x54dc('0xd')](config[_0x54dc('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x54dc('0xe'))(new Redis(config[_0x54dc('0xc')]));require(_0x54dc('0xf'))[_0x54dc('0x10')](socket);function respondWithRpcPromise(_0x2be6b2,_0x2e6167,_0x260b79){return new BPromise(function(_0x18c744,_0x170585){return client[_0x54dc('0x11')](_0x2be6b2,_0x260b79)[_0x54dc('0x12')](function(_0xe2cf61){logger[_0x54dc('0x13')](_0x54dc('0x14'),_0x2e6167,_0x54dc('0x15'));logger['debug'](_0x54dc('0x16'),_0x2e6167,_0x54dc('0x15'),JSON[_0x54dc('0x17')](_0xe2cf61));if(_0xe2cf61[_0x54dc('0x18')]){if(_0xe2cf61[_0x54dc('0x18')][_0x54dc('0x19')]===0x1f4){logger[_0x54dc('0x18')](_0x54dc('0x14'),_0x2e6167,_0xe2cf61[_0x54dc('0x18')][_0x54dc('0x1a')]);return _0x170585(_0xe2cf61[_0x54dc('0x18')]['message']);}logger[_0x54dc('0x18')](_0x54dc('0x14'),_0x2e6167,_0xe2cf61[_0x54dc('0x18')][_0x54dc('0x1a')]);return _0x18c744(_0xe2cf61[_0x54dc('0x18')][_0x54dc('0x1a')]);}else{logger[_0x54dc('0x13')](_0x54dc('0x14'),_0x2e6167,_0x54dc('0x15'));_0x18c744(_0xe2cf61[_0x54dc('0x1b')][_0x54dc('0x1a')]);}})['catch'](function(_0x591fac){logger[_0x54dc('0x18')](_0x54dc('0x14'),_0x2e6167,_0x591fac);_0x170585(_0x591fac);});});}exports[_0x54dc('0x1c')]=function(_0x2fb260){var _0x41725a=this;return new Promise(function(_0x790cd6,_0x138c12){return db[_0x54dc('0x1d')][_0x54dc('0x1e')]({'raw':_0x2fb260[_0x54dc('0x1f')]?_0x2fb260['options'][_0x54dc('0x20')]===undefined?!![]:![]:!![],'where':_0x2fb260[_0x54dc('0x1f')]?_0x2fb260['options'][_0x54dc('0x21')]||null:null,'attributes':_0x2fb260[_0x54dc('0x1f')]?_0x2fb260[_0x54dc('0x1f')]['attributes']||null:null,'limit':_0x2fb260[_0x54dc('0x1f')]?_0x2fb260[_0x54dc('0x1f')]['limit']||null:null,'include':_0x2fb260[_0x54dc('0x1f')]?_0x2fb260[_0x54dc('0x1f')][_0x54dc('0x22')]?_[_0x54dc('0x23')](_0x2fb260[_0x54dc('0x1f')]['include'],function(_0x594b4d){return{'model':db[_0x594b4d[_0x54dc('0x24')]],'as':_0x594b4d['as'],'attributes':_0x594b4d['attributes'],'include':_0x594b4d[_0x54dc('0x22')]?_['map'](_0x594b4d[_0x54dc('0x22')],function(_0x3b4d17){return{'model':db[_0x3b4d17[_0x54dc('0x24')]],'as':_0x3b4d17['as'],'attributes':_0x3b4d17[_0x54dc('0x25')],'include':_0x3b4d17['include']?_[_0x54dc('0x23')](_0x3b4d17[_0x54dc('0x22')],function(_0xa8d342){return{'model':db[_0xa8d342['model']],'as':_0xa8d342['as'],'attributes':_0xa8d342[_0x54dc('0x25')]};}):[]};}):[]};}):[]:[]})[_0x54dc('0x12')](function(_0x3fb28a){logger[_0x54dc('0x13')](_0x54dc('0x1c'),_0x2fb260);logger[_0x54dc('0x26')](_0x54dc('0x1c'),_0x2fb260,JSON[_0x54dc('0x17')](_0x3fb28a));_0x790cd6(_0x3fb28a);})['catch'](function(_0x149529){logger[_0x54dc('0x18')]('GetFaxAccount',_0x149529[_0x54dc('0x1a')],_0x2fb260);_0x138c12(_0x41725a['error'](0x1f4,_0x149529[_0x54dc('0x1a')]));});});};exports['NotifyFaxAccount']=function(_0x4f7e10,_0x66f8c3,_0xaf37fb){var _0x5ca1f1=this;return new Promise(function(_0x28437e,_0x4f7e75){var _0x507361={'body':_0x4f7e10['body'],'channel':_0x54dc('0x27')};var _0xfbf592=[];var _0x1295f7=[];var _0x8236e8={};return db[_0x54dc('0x28')][_0x54dc('0x29')]()[_0x54dc('0x12')](function(_0x1f3167){if(!_0x1f3167){throw new db[(_0x54dc('0x2a'))][(_0x54dc('0x2b'))](_0x54dc('0x2c'));}_0xfbf592=_[_0x54dc('0x2d')](_[_0x54dc('0x2e')](_0x1f3167),[_0x54dc('0x2f'),'updatedAt']);_0x1295f7=_['difference'](_[_0x54dc('0x2e')](_0x1f3167),[_0x54dc('0x2f'),_0x54dc('0x30'),'CompanyId','ListId']);if(_0x4f7e10[_0x54dc('0x31')]['id']){delete _0x4f7e10['body']['id'];}if(_['isNil'](_0x4f7e10[_0x54dc('0x31')]['from'])){throw new db[(_0x54dc('0x2a'))][(_0x54dc('0x2b'))](_0x54dc('0x32'));}if(_[_0x54dc('0x33')](_0x4f7e10[_0x54dc('0x31')][_0x54dc('0x31')])||_0x4f7e10[_0x54dc('0x31')][_0x54dc('0x31')]===''){throw new db[(_0x54dc('0x2a'))]['ValidationError'](_0x54dc('0x34'));}if(_[_0x54dc('0x33')](_0x4f7e10['body'][_0x54dc('0x35')])){throw new db[(_0x54dc('0x2a'))][(_0x54dc('0x2b'))](_0x54dc('0x36')+_0x1295f7);}if(!_['includes'](_0x1295f7,_0x4f7e10[_0x54dc('0x31')][_0x54dc('0x35')])){throw new db[(_0x54dc('0x2a'))]['ValidationError'](_0x54dc('0x37')+_0x1295f7);}_0x8236e8[_0x4f7e10[_0x54dc('0x31')][_0x54dc('0x35')]]=_0x4f7e10['body'][_0x54dc('0x38')];})[_0x54dc('0x12')](function(){return db[_0x54dc('0x1d')][_0x54dc('0x39')]({'where':{'id':_0x4f7e10[_0x54dc('0x3a')]['id']},'include':[{'model':db[_0x54dc('0x3b')],'as':_0x54dc('0x3c'),'include':[{'model':db[_0x54dc('0x28')],'as':_0x54dc('0x3d'),'where':_0x8236e8,'limit':0x1,'order':[[_0x54dc('0x30'),_0x54dc('0x3e')]]}]},{'model':db[_0x54dc('0x3f')],'as':'Applications'}]});})[_0x54dc('0x12')](function(_0x549dee){if(_0x549dee&&_0x549dee['List']){var _0x1875d5=_0x549dee[_0x54dc('0x40')]({'plain':!![]});_0x507361['account']=_0x1875d5;_0x507361[_0x54dc('0x41')]=_0x1875d5[_0x54dc('0x42')];_0x507361[_0x54dc('0x43')]=_0x1875d5['List'];_0x507361[_0x54dc('0x41')]=_['orderBy'](_0x507361['applications'],['priority'],[_0x54dc('0x44')]);if(_0x507361[_0x54dc('0x3a')][_0x54dc('0x42')]){delete _0x507361['account'][_0x54dc('0x42')];}if(_0x507361[_0x54dc('0x3a')][_0x54dc('0x3c')]&&_0x507361[_0x54dc('0x3a')]['List'][_0x54dc('0x3d')][_0x54dc('0x45')]){return _0x507361['account'][_0x54dc('0x3c')][_0x54dc('0x3d')][0x0];}var _0x4ea972=_[_0x54dc('0xd')](_0x4f7e10[_0x54dc('0x31')],{'firstName':_0x4f7e10[_0x54dc('0x31')]['from'],'ListId':_0x1875d5[_0x54dc('0x46')]});_0x4ea972[_0x4f7e10[_0x54dc('0x31')]['mapKey']]=_0x4f7e10[_0x54dc('0x31')]['from'];return db['CmContact'][_0x54dc('0x47')](_0x4ea972,{'fields':_0xfbf592,'raw':!![]});}})[_0x54dc('0x12')](function(_0x3742ea){_0x507361['contact']=_0x3742ea;if(_0x3742ea){var _0x84abc9={'ContactId':_0x3742ea['id'],'FaxAccountId':_0x4f7e10[_0x54dc('0x3a')]['id'],'fax':_0x3742ea[_0x54dc('0x27')]};return db[_0x54dc('0x48')][_0x54dc('0x39')]({'where':{'ContactId':_0x3742ea['id'],'closed':![],'FaxAccountId':_0x4f7e10[_0x54dc('0x3a')]['id']}})[_0x54dc('0x12')](function(_0x393fda){if(_0x393fda){return[_0x393fda,![]];}return db['FaxInteraction'][_0x54dc('0x47')](_0x84abc9)[_0x54dc('0x12')](function(_0x3a53f1){return[_0x3a53f1,!![]];});});}else{throw new Error(_0x54dc('0x49'));}})[_0x54dc('0x4a')](function(_0x130d9e,_0x3fab66){var _0xe7936c=_0x130d9e[_0x54dc('0x40')]({'plain':!![]});if(_0x3fab66){if(_0x507361['account'][_0x54dc('0x4b')]){_0x507361[_0x54dc('0x41')]['push']({'id':0x0,'priority':_0x507361['applications'][_0x54dc('0x45')]+0x1,'app':_0x54dc('0x4c'),'appdata':_0x54dc('0x4d'),'interval':_0x54dc('0x4e')});}_0xe7936c['created']=!![];}else{_0xe7936c[_0x54dc('0x4f')]=![];}_0x507361[_0x54dc('0x50')]=_0xe7936c;return db['FaxMessage']['create']({'body':_0x4f7e10[_0x54dc('0x31')][_0x54dc('0x31')],'FaxAccountId':_0x4f7e10['account']['id'],'FaxInteractionId':_0x130d9e['id'],'direction':'in','ContactId':_0x130d9e[_0x54dc('0x51')],'AttachmentId':_0x4f7e10[_0x54dc('0x31')]['AttachmentId']});})[_0x54dc('0x12')](function(_0x24ece3){_0x507361['message']=_0x24ece3;if(_0x507361['interaction'][_0x54dc('0x52')]){return db['User'][_0x54dc('0x39')]({'attributes':['id',_0x54dc('0x53')],'where':{'id':_0x507361['interaction']['UserId']}})['then'](function(_0x4fc386){if(_0x4fc386){_0x507361['applications'][_0x54dc('0x54')]({'id':0x0,'priority':0x0,'app':_0x54dc('0x55'),'appdata':_0x4fc386[_0x54dc('0x53')]+','+(_0x507361[_0x54dc('0x3a')][_0x54dc('0x56')]||0xa),'interval':_0x54dc('0x4e')});}return respondWithRpcPromise(_0x54dc('0x57'),_0x54dc('0x58'),_0x507361);});}return respondWithRpcPromise(_0x54dc('0x57'),_0x54dc('0x58'),_0x507361);})[_0x54dc('0x12')](function(_0x1920cd){_0x28437e(_0x1920cd);})[_0x54dc('0x59')](function(_0x27edf4){_0x4f7e75(_0x5ca1f1[_0x54dc('0x18')](0x1f4,_0x27edf4[_0x54dc('0x1a')]));});});};
\ No newline at end of file
+var _0xc79f=['GetFaxAccount','findAll','options','attributes','limit','include','map','model','stringify','catch','NotifyFaxAccount','body','CmContact','describe','no\x20available\x20attributes','keys','createdAt','difference','CompanyId','isNil','Sequelize','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','from','find','account','List','updatedAt','DESC','FaxApplication','Applications','get','applications','list','orderBy','priority','asc','Contacts','length','ListId','create','contact','fax','spread','autoclose','close','unmanaged','*,*,*,*','created','interaction','ContactId','AttachmentId','UserId','User','unshift','agent','name','waitForTheAssignedAgent','startRouting','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','then','info','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result'];(function(_0x2b9434,_0x4bff26){var _0x181573=function(_0x818cd5){while(--_0x818cd5){_0x2b9434['push'](_0x2b9434['shift']());}};_0x181573(++_0x4bff26);}(_0xc79f,0x19f));var _0xfc79=function(_0x5d35e5,_0x4d1f9c){_0x5d35e5=_0x5d35e5-0x0;var _0x48dd78=_0xc79f[_0x5d35e5];return _0x48dd78;};'use strict';var _=require(_0xfc79('0x0'));var util=require(_0xfc79('0x1'));var moment=require(_0xfc79('0x2'));var BPromise=require(_0xfc79('0x3'));var rs=require(_0xfc79('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfc79('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xfc79('0x6'));var config=require('../../config/environment');var jayson=require(_0xfc79('0x7'));var client=jayson[_0xfc79('0x8')][_0xfc79('0x9')]({'port':0x232c});config[_0xfc79('0xa')]=_[_0xfc79('0xb')](config[_0xfc79('0xa')],{'host':_0xfc79('0xc'),'port':0x18eb});var socket=require(_0xfc79('0xd'))(new Redis(config['redis']));require(_0xfc79('0xe'))[_0xfc79('0xf')](socket);function respondWithRpcPromise(_0x320efd,_0x26934c,_0x2c26f6){return new BPromise(function(_0x23981d,_0x359d4e){return client['request'](_0x320efd,_0x2c26f6)[_0xfc79('0x10')](function(_0x2b93a4){logger[_0xfc79('0x11')](_0xfc79('0x12'),_0x26934c,'request\x20sent');logger[_0xfc79('0x13')](_0xfc79('0x14'),_0x26934c,_0xfc79('0x15'),JSON['stringify'](_0x2b93a4));if(_0x2b93a4['error']){if(_0x2b93a4[_0xfc79('0x16')]['code']===0x1f4){logger[_0xfc79('0x16')](_0xfc79('0x12'),_0x26934c,_0x2b93a4['error'][_0xfc79('0x17')]);return _0x359d4e(_0x2b93a4[_0xfc79('0x16')][_0xfc79('0x17')]);}logger[_0xfc79('0x16')](_0xfc79('0x12'),_0x26934c,_0x2b93a4['error'][_0xfc79('0x17')]);return _0x23981d(_0x2b93a4[_0xfc79('0x16')][_0xfc79('0x17')]);}else{logger['info'](_0xfc79('0x12'),_0x26934c,_0xfc79('0x15'));_0x23981d(_0x2b93a4[_0xfc79('0x18')]['message']);}})['catch'](function(_0x27774f){logger['error'](_0xfc79('0x12'),_0x26934c,_0x27774f);_0x359d4e(_0x27774f);});});}exports[_0xfc79('0x19')]=function(_0x1388ef){var _0x2e6072=this;return new Promise(function(_0x5d84ef,_0x4be9bb){return db['FaxAccount'][_0xfc79('0x1a')]({'raw':_0x1388ef[_0xfc79('0x1b')]?_0x1388ef[_0xfc79('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x1388ef['options']?_0x1388ef['options']['where']||null:null,'attributes':_0x1388ef[_0xfc79('0x1b')]?_0x1388ef[_0xfc79('0x1b')][_0xfc79('0x1c')]||null:null,'limit':_0x1388ef['options']?_0x1388ef[_0xfc79('0x1b')][_0xfc79('0x1d')]||null:null,'include':_0x1388ef['options']?_0x1388ef[_0xfc79('0x1b')][_0xfc79('0x1e')]?_[_0xfc79('0x1f')](_0x1388ef[_0xfc79('0x1b')][_0xfc79('0x1e')],function(_0x2b1054){return{'model':db[_0x2b1054[_0xfc79('0x20')]],'as':_0x2b1054['as'],'attributes':_0x2b1054[_0xfc79('0x1c')],'include':_0x2b1054[_0xfc79('0x1e')]?_['map'](_0x2b1054[_0xfc79('0x1e')],function(_0x2794d9){return{'model':db[_0x2794d9['model']],'as':_0x2794d9['as'],'attributes':_0x2794d9[_0xfc79('0x1c')],'include':_0x2794d9['include']?_['map'](_0x2794d9[_0xfc79('0x1e')],function(_0x2c8267){return{'model':db[_0x2c8267[_0xfc79('0x20')]],'as':_0x2c8267['as'],'attributes':_0x2c8267[_0xfc79('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5d478a){logger[_0xfc79('0x11')](_0xfc79('0x19'),_0x1388ef);logger['debug']('GetFaxAccount',_0x1388ef,JSON[_0xfc79('0x21')](_0x5d478a));_0x5d84ef(_0x5d478a);})[_0xfc79('0x22')](function(_0x1c58d0){logger[_0xfc79('0x16')](_0xfc79('0x19'),_0x1c58d0[_0xfc79('0x17')],_0x1388ef);_0x4be9bb(_0x2e6072[_0xfc79('0x16')](0x1f4,_0x1c58d0[_0xfc79('0x17')]));});});};exports[_0xfc79('0x23')]=function(_0x9d0a12,_0x1ac9f2,_0x1167fc){var _0x172726=this;return new Promise(function(_0x3ca04c,_0x2d910a){var _0x44e600={'body':_0x9d0a12[_0xfc79('0x24')],'channel':'fax'};var _0x1753f9=[];var _0x252638=[];var _0x20f2c6={};return db[_0xfc79('0x25')][_0xfc79('0x26')]()[_0xfc79('0x10')](function(_0x2be1aa){if(!_0x2be1aa){throw new db['Sequelize']['ValidationError'](_0xfc79('0x27'));}_0x1753f9=_['difference'](_[_0xfc79('0x28')](_0x2be1aa),[_0xfc79('0x29'),'updatedAt']);_0x252638=_[_0xfc79('0x2a')](_[_0xfc79('0x28')](_0x2be1aa),['createdAt','updatedAt',_0xfc79('0x2b'),'ListId']);if(_0x9d0a12[_0xfc79('0x24')]['id']){delete _0x9d0a12[_0xfc79('0x24')]['id'];}if(_[_0xfc79('0x2c')](_0x9d0a12[_0xfc79('0x24')]['from'])){throw new db[(_0xfc79('0x2d'))][(_0xfc79('0x2e'))](_0xfc79('0x2f'));}if(_[_0xfc79('0x2c')](_0x9d0a12[_0xfc79('0x24')][_0xfc79('0x24')])||_0x9d0a12[_0xfc79('0x24')][_0xfc79('0x24')]===''){throw new db['Sequelize'][(_0xfc79('0x2e'))](_0xfc79('0x30'));}if(_[_0xfc79('0x2c')](_0x9d0a12[_0xfc79('0x24')][_0xfc79('0x31')])){throw new db[(_0xfc79('0x2d'))][(_0xfc79('0x2e'))](_0xfc79('0x32')+_0x252638);}if(!_[_0xfc79('0x33')](_0x252638,_0x9d0a12[_0xfc79('0x24')][_0xfc79('0x31')])){throw new db[(_0xfc79('0x2d'))][(_0xfc79('0x2e'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x252638);}_0x20f2c6[_0x9d0a12[_0xfc79('0x24')][_0xfc79('0x31')]]=_0x9d0a12['body'][_0xfc79('0x34')];})[_0xfc79('0x10')](function(){return db['FaxAccount'][_0xfc79('0x35')]({'where':{'id':_0x9d0a12[_0xfc79('0x36')]['id']},'include':[{'model':db['CmList'],'as':_0xfc79('0x37'),'include':[{'model':db[_0xfc79('0x25')],'as':'Contacts','where':_0x20f2c6,'limit':0x1,'order':[[_0xfc79('0x38'),_0xfc79('0x39')]]}]},{'model':db[_0xfc79('0x3a')],'as':_0xfc79('0x3b')}]});})[_0xfc79('0x10')](function(_0x1bd18c){if(_0x1bd18c&&_0x1bd18c[_0xfc79('0x37')]){var _0x22a86e=_0x1bd18c[_0xfc79('0x3c')]({'plain':!![]});_0x44e600[_0xfc79('0x36')]=_0x22a86e;_0x44e600[_0xfc79('0x3d')]=_0x22a86e[_0xfc79('0x3b')];_0x44e600[_0xfc79('0x3e')]=_0x22a86e['List'];_0x44e600[_0xfc79('0x3d')]=_[_0xfc79('0x3f')](_0x44e600[_0xfc79('0x3d')],[_0xfc79('0x40')],[_0xfc79('0x41')]);if(_0x44e600[_0xfc79('0x36')][_0xfc79('0x3b')]){delete _0x44e600[_0xfc79('0x36')][_0xfc79('0x3b')];}if(_0x44e600[_0xfc79('0x36')]['List']&&_0x44e600['account'][_0xfc79('0x37')][_0xfc79('0x42')][_0xfc79('0x43')]){return _0x44e600[_0xfc79('0x36')][_0xfc79('0x37')][_0xfc79('0x42')][0x0];}var _0x216cd4=_[_0xfc79('0xb')](_0x9d0a12[_0xfc79('0x24')],{'firstName':_0x9d0a12[_0xfc79('0x24')][_0xfc79('0x34')],'ListId':_0x22a86e[_0xfc79('0x44')]});_0x216cd4[_0x9d0a12[_0xfc79('0x24')]['mapKey']]=_0x9d0a12[_0xfc79('0x24')]['from'];return db[_0xfc79('0x25')][_0xfc79('0x45')](_0x216cd4,{'fields':_0x1753f9,'raw':!![]});}})[_0xfc79('0x10')](function(_0x5cf71f){_0x44e600[_0xfc79('0x46')]=_0x5cf71f;if(_0x5cf71f){var _0x2d87ed={'ContactId':_0x5cf71f['id'],'FaxAccountId':_0x9d0a12['account']['id'],'fax':_0x5cf71f[_0xfc79('0x47')]};return db['FaxInteraction']['find']({'where':{'ContactId':_0x5cf71f['id'],'closed':![],'FaxAccountId':_0x9d0a12['account']['id']}})[_0xfc79('0x10')](function(_0xcdc537){if(_0xcdc537){return[_0xcdc537,![]];}return db['FaxInteraction'][_0xfc79('0x45')](_0x2d87ed)['then'](function(_0xef37fa){return[_0xef37fa,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xfc79('0x48')](function(_0x1d4e1c,_0x23156c){var _0x3cb408=_0x1d4e1c[_0xfc79('0x3c')]({'plain':!![]});if(_0x23156c){if(_0x44e600[_0xfc79('0x36')][_0xfc79('0x49')]){_0x44e600[_0xfc79('0x3d')]['push']({'id':0x0,'priority':_0x44e600[_0xfc79('0x3d')][_0xfc79('0x43')]+0x1,'app':_0xfc79('0x4a'),'appdata':_0xfc79('0x4b'),'interval':_0xfc79('0x4c')});}_0x3cb408[_0xfc79('0x4d')]=!![];}else{_0x3cb408[_0xfc79('0x4d')]=![];}_0x44e600[_0xfc79('0x4e')]=_0x3cb408;return db['FaxMessage'][_0xfc79('0x45')]({'body':_0x9d0a12[_0xfc79('0x24')][_0xfc79('0x24')],'FaxAccountId':_0x9d0a12[_0xfc79('0x36')]['id'],'FaxInteractionId':_0x1d4e1c['id'],'direction':'in','ContactId':_0x1d4e1c[_0xfc79('0x4f')],'AttachmentId':_0x9d0a12[_0xfc79('0x24')][_0xfc79('0x50')]});})[_0xfc79('0x10')](function(_0x56ea56){_0x44e600[_0xfc79('0x17')]=_0x56ea56;if(_0x44e600[_0xfc79('0x4e')][_0xfc79('0x51')]){return db[_0xfc79('0x52')][_0xfc79('0x35')]({'attributes':['id','name'],'where':{'id':_0x44e600[_0xfc79('0x4e')][_0xfc79('0x51')]}})[_0xfc79('0x10')](function(_0x1c5926){if(_0x1c5926){_0x44e600[_0xfc79('0x3d')][_0xfc79('0x53')]({'id':0x0,'priority':0x0,'app':_0xfc79('0x54'),'appdata':_0x1c5926[_0xfc79('0x55')]+','+(_0x44e600[_0xfc79('0x36')][_0xfc79('0x56')]||0xa),'interval':_0xfc79('0x4c')});}return respondWithRpcPromise('Start',_0xfc79('0x57'),_0x44e600);});}return respondWithRpcPromise('Start',_0xfc79('0x57'),_0x44e600);})[_0xfc79('0x10')](function(_0x1809b8){_0x3ca04c(_0x1809b8);})[_0xfc79('0x22')](function(_0x3c1ce3){_0x2d910a(_0x172726[_0xfc79('0x16')](0x1f4,_0x3c1ce3[_0xfc79('0x17')]));});});};
\ No newline at end of file
index e221970..ae216ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d16=['register','length','faxAccount:','./faxAccount.events','save','remove','update','emit','removeListener'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x0d16,0x162));var _0x60d1=function(_0x1f6059,_0xaf4ba7){_0x1f6059=_0x1f6059-0x0;var _0x6a1148=_0x0d16[_0x1f6059];return _0x6a1148;};'use strict';var FaxAccountEvents=require(_0x60d1('0x0'));var events=[_0x60d1('0x1'),_0x60d1('0x2'),_0x60d1('0x3')];function createListener(_0x4816fd,_0x3e9419){return function(_0x5ef0f8){_0x3e9419[_0x60d1('0x4')](_0x4816fd,_0x5ef0f8);};}function removeListener(_0x1f15fd,_0x5680d0){return function(){FaxAccountEvents[_0x60d1('0x5')](_0x1f15fd,_0x5680d0);};}exports[_0x60d1('0x6')]=function(_0x95d5c){for(var _0x5c5121=0x0,_0x387a96=events[_0x60d1('0x7')];_0x5c5121<_0x387a96;_0x5c5121++){var _0x36e12c=events[_0x5c5121];var _0x333250=createListener(_0x60d1('0x8')+_0x36e12c,_0x95d5c);FaxAccountEvents['on'](_0x36e12c,_0x333250);}};
\ No newline at end of file
+var _0x45d3=['emit','removeListener','./faxAccount.events','update'];(function(_0x29638f,_0x5dfb8a){var _0x4c2121=function(_0x4d32ea){while(--_0x4d32ea){_0x29638f['push'](_0x29638f['shift']());}};_0x4c2121(++_0x5dfb8a);}(_0x45d3,0xea));var _0x345d=function(_0x5d8ef7,_0x5373aa){_0x5d8ef7=_0x5d8ef7-0x0;var _0x5c35d6=_0x45d3[_0x5d8ef7];return _0x5c35d6;};'use strict';var FaxAccountEvents=require(_0x345d('0x0'));var events=['save','remove',_0x345d('0x1')];function createListener(_0x557233,_0x4f83e9){return function(_0x167344){_0x4f83e9[_0x345d('0x2')](_0x557233,_0x167344);};}function removeListener(_0xf6701e,_0x5335f3){return function(){FaxAccountEvents[_0x345d('0x3')](_0xf6701e,_0x5335f3);};}exports['register']=function(_0x1a6729){for(var _0x1eae02=0x0,_0x5e5cd4=events['length'];_0x1eae02<_0x5e5cd4;_0x1eae02++){var _0x58f843=events[_0x1eae02];var _0x464b5a=createListener('faxAccount:'+_0x58f843,_0x1a6729);FaxAccountEvents['on'](_0x58f843,_0x464b5a);}};
\ No newline at end of file
index ad118c2..84fb989 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(_0xbea8ac,_0x341d80){var _0x4600af=function(_0xa0587){while(--_0xa0587){_0xbea8ac['push'](_0xbea8ac['shift']());}};_0x4600af(++_0x341d80);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'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(_0x1d044d,_0x389c9c){var _0x3afc63=function(_0x5ac383){while(--_0x5ac383){_0x1d044d['push'](_0x1d044d['shift']());}};_0x3afc63(++_0x389c9c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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 cd77367..fbfd8cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03bc=['noop','TEXT','STRING','*,*,*,*','sequelize','exports'];(function(_0x24dfd2,_0x504fac){var _0x3abda1=function(_0x55bc85){while(--_0x55bc85){_0x24dfd2['push'](_0x24dfd2['shift']());}};_0x3abda1(++_0x504fac);}(_0x03bc,0x94));var _0xc03b=function(_0x1cee17,_0x3971b1){_0x1cee17=_0x1cee17-0x0;var _0x4774d6=_0x03bc[_0x1cee17];return _0x4774d6;};'use strict';var Sequelize=require(_0xc03b('0x0'));module[_0xc03b('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc03b('0x2')},'appdata':{'type':Sequelize[_0xc03b('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xc03b('0x4')],'defaultValue':_0xc03b('0x5')}};
\ No newline at end of file
+var _0x93f1=['INTEGER','STRING','noop','exports'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0x93f1,0xab));var _0x193f=function(_0xc889c6,_0x27eb26){_0xc889c6=_0xc889c6-0x0;var _0x2f6c3b=_0x93f1[_0xc889c6];return _0x2f6c3b;};'use strict';var Sequelize=require('sequelize');module[_0x193f('0x0')]={'priority':{'type':Sequelize[_0x193f('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x193f('0x2')],'allowNull':![],'defaultValue':_0x193f('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x193f('0x2')]},'interval':{'type':Sequelize[_0x193f('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index bd0bb12..36f92dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ddd=['map','FaxApplication','rawAttributes','type','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','include','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x9ddd,0x6d));var _0xd9dd=function(_0x1979ed,_0x14e570){_0x1979ed=_0x1979ed-0x0;var _0x245eac=_0x9ddd[_0x1979ed];return _0x245eac;};'use strict';var emlformat=require(_0xd9dd('0x0'));var rimraf=require(_0xd9dd('0x1'));var zipdir=require(_0xd9dd('0x2'));var jsonpatch=require(_0xd9dd('0x3'));var rp=require('request-promise');var moment=require(_0xd9dd('0x4'));var BPromise=require(_0xd9dd('0x5'));var Mustache=require(_0xd9dd('0x6'));var util=require(_0xd9dd('0x7'));var path=require(_0xd9dd('0x8'));var sox=require(_0xd9dd('0x9'));var csv=require('to-csv');var ejs=require(_0xd9dd('0xa'));var fs=require('fs');var fs_extra=require(_0xd9dd('0xb'));var _=require(_0xd9dd('0xc'));var squel=require(_0xd9dd('0xd'));var crypto=require(_0xd9dd('0xe'));var jsforce=require(_0xd9dd('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xd9dd('0x10'));var querystring=require(_0xd9dd('0x11'));var Papa=require(_0xd9dd('0x12'));var Redis=require(_0xd9dd('0x13'));var authService=require(_0xd9dd('0x14'));var qs=require(_0xd9dd('0x15'));var as=require(_0xd9dd('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd9dd('0x17'));var utils=require(_0xd9dd('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xd9dd('0x19'));var db=require(_0xd9dd('0x1a'))['db'];function respondWithStatusCode(_0x319705,_0x16d1b8){_0x16d1b8=_0x16d1b8||0xcc;return function(_0x2c76f1){if(_0x2c76f1){return _0x319705[_0xd9dd('0x1b')](_0x16d1b8);}return _0x319705[_0xd9dd('0x1c')](_0x16d1b8)['end']();};}function respondWithResult(_0x2baf4c,_0x50c08c){_0x50c08c=_0x50c08c||0xc8;return function(_0xc4bdf3){if(_0xc4bdf3){return _0x2baf4c[_0xd9dd('0x1c')](_0x50c08c)[_0xd9dd('0x1d')](_0xc4bdf3);}};}function respondWithFilteredResult(_0x523bbf,_0x1af868){return function(_0xb47d34){if(_0xb47d34){var _0x4df790=typeof _0x1af868[_0xd9dd('0x1e')]===_0xd9dd('0x1f')&&typeof _0x1af868[_0xd9dd('0x20')]===_0xd9dd('0x1f');var _0x22c780=_0xb47d34[_0xd9dd('0x21')];var _0xa15f61=_0x4df790?0x0:_0x1af868[_0xd9dd('0x1e')];var _0x56aaf8=_0x4df790?_0xb47d34['count']:_0x1af868['offset']+_0x1af868[_0xd9dd('0x20')];var _0x2a3baf;if(_0x56aaf8>=_0x22c780){_0x56aaf8=_0x22c780;_0x2a3baf=0xc8;}else{_0x2a3baf=0xce;}_0x523bbf['status'](_0x2a3baf);return _0x523bbf['set'](_0xd9dd('0x22'),_0xa15f61+'-'+_0x56aaf8+'/'+_0x22c780)[_0xd9dd('0x1d')](_0xb47d34);}return null;};}function patchUpdates(_0x51fecf){return function(_0x4b7769){try{jsonpatch[_0xd9dd('0x23')](_0x4b7769,_0x51fecf,!![]);}catch(_0x479764){return BPromise[_0xd9dd('0x24')](_0x479764);}return _0x4b7769[_0xd9dd('0x25')]();};}function saveUpdates(_0x546ea9,_0xbfb8f7){return function(_0x1244f9){if(_0x1244f9){return _0x1244f9[_0xd9dd('0x26')](_0x546ea9)[_0xd9dd('0x27')](function(_0x5f4f3d){return _0x5f4f3d;});}return null;};}function removeEntity(_0x5d0704,_0x1dfd2a){return function(_0x3b8421){if(_0x3b8421){return _0x3b8421[_0xd9dd('0x28')]()[_0xd9dd('0x27')](function(){_0x5d0704[_0xd9dd('0x1c')](0xcc)[_0xd9dd('0x29')]();});}};}function handleEntityNotFound(_0x490a80,_0x209d1d){return function(_0x463211){if(!_0x463211){_0x490a80[_0xd9dd('0x1b')](0x194);}return _0x463211;};}function handleError(_0x2abcc5,_0xd23e9b){_0xd23e9b=_0xd23e9b||0x1f4;return function(_0x4d2480){logger[_0xd9dd('0x2a')](_0x4d2480[_0xd9dd('0x2b')]);if(_0x4d2480[_0xd9dd('0x2c')]){delete _0x4d2480[_0xd9dd('0x2c')];}_0x2abcc5[_0xd9dd('0x1c')](_0xd23e9b)[_0xd9dd('0x2d')](_0x4d2480);};}exports[_0xd9dd('0x2e')]=function(_0x1546fe,_0x5a2d09){var _0x2b6694={},_0x2ce60c={},_0x4764c6={'count':0x0,'rows':[]};var _0x46bcf7=_[_0xd9dd('0x2f')](db[_0xd9dd('0x30')][_0xd9dd('0x31')],function(_0x141b44){return{'name':_0x141b44['fieldName'],'type':_0x141b44[_0xd9dd('0x32')]['key']};});_0x2ce60c[_0xd9dd('0x33')]=_[_0xd9dd('0x2f')](_0x46bcf7,_0xd9dd('0x2c'));_0x2ce60c['query']=_[_0xd9dd('0x34')](_0x1546fe[_0xd9dd('0x35')]);_0x2ce60c[_0xd9dd('0x36')]=_['intersection'](_0x2ce60c['model'],_0x2ce60c[_0xd9dd('0x35')]);_0x2b6694[_0xd9dd('0x37')]=_[_0xd9dd('0x38')](_0x2ce60c[_0xd9dd('0x33')],qs[_0xd9dd('0x39')](_0x1546fe[_0xd9dd('0x35')][_0xd9dd('0x39')]));_0x2b6694[_0xd9dd('0x37')]=_0x2b6694[_0xd9dd('0x37')][_0xd9dd('0x3a')]?_0x2b6694[_0xd9dd('0x37')]:_0x2ce60c[_0xd9dd('0x33')];if(!_0x1546fe[_0xd9dd('0x35')][_0xd9dd('0x3b')](_0xd9dd('0x3c'))){_0x2b6694[_0xd9dd('0x20')]=qs[_0xd9dd('0x20')](_0x1546fe['query'][_0xd9dd('0x20')]);_0x2b6694['offset']=qs[_0xd9dd('0x1e')](_0x1546fe[_0xd9dd('0x35')][_0xd9dd('0x1e')]);}_0x2b6694[_0xd9dd('0x3d')]=qs[_0xd9dd('0x3e')](_0x1546fe['query'][_0xd9dd('0x3e')]);_0x2b6694[_0xd9dd('0x3f')]=qs['filters'](_[_0xd9dd('0x40')](_0x1546fe[_0xd9dd('0x35')],_0x2ce60c[_0xd9dd('0x36')]),_0x46bcf7);if(_0x1546fe[_0xd9dd('0x35')][_0xd9dd('0x41')]){_0x2b6694[_0xd9dd('0x3f')]=_[_0xd9dd('0x42')](_0x2b6694[_0xd9dd('0x3f')],{'$or':_[_0xd9dd('0x2f')](_0x46bcf7,function(_0x531a52){if(_0x531a52[_0xd9dd('0x32')]!==_0xd9dd('0x43')){var _0x3c3e9f={};_0x3c3e9f[_0x531a52['name']]={'$like':'%'+_0x1546fe[_0xd9dd('0x35')]['filter']+'%'};return _0x3c3e9f;}})});}_0x2b6694=_[_0xd9dd('0x42')]({},_0x2b6694,_0x1546fe[_0xd9dd('0x44')]);var _0x4f0424={'where':_0x2b6694['where']};return db[_0xd9dd('0x30')][_0xd9dd('0x21')](_0x4f0424)[_0xd9dd('0x27')](function(_0x4174a7){_0x4764c6['count']=_0x4174a7;if(_0x1546fe[_0xd9dd('0x35')][_0xd9dd('0x45')]){_0x2b6694['include']=[{'all':!![]}];}return db[_0xd9dd('0x30')][_0xd9dd('0x46')](_0x2b6694);})[_0xd9dd('0x27')](function(_0x59bbf1){_0x4764c6['rows']=_0x59bbf1;return _0x4764c6;})[_0xd9dd('0x27')](respondWithFilteredResult(_0x5a2d09,_0x2b6694))[_0xd9dd('0x47')](handleError(_0x5a2d09,null));};exports[_0xd9dd('0x48')]=function(_0x13be9a,_0x566af6){var _0x2b599a={'raw':!![],'where':{'id':_0x13be9a['params']['id']}},_0x45e702={};_0x45e702['model']=_[_0xd9dd('0x34')](db['FaxApplication'][_0xd9dd('0x31')]);_0x45e702[_0xd9dd('0x35')]=_[_0xd9dd('0x34')](_0x13be9a[_0xd9dd('0x35')]);_0x45e702[_0xd9dd('0x36')]=_['intersection'](_0x45e702[_0xd9dd('0x33')],_0x45e702[_0xd9dd('0x35')]);_0x2b599a[_0xd9dd('0x37')]=_[_0xd9dd('0x38')](_0x45e702[_0xd9dd('0x33')],qs[_0xd9dd('0x39')](_0x13be9a[_0xd9dd('0x35')][_0xd9dd('0x39')]));_0x2b599a[_0xd9dd('0x37')]=_0x2b599a[_0xd9dd('0x37')][_0xd9dd('0x3a')]?_0x2b599a['attributes']:_0x45e702[_0xd9dd('0x33')];if(_0x13be9a[_0xd9dd('0x35')]['includeAll']){_0x2b599a[_0xd9dd('0x49')]=[{'all':!![]}];}_0x2b599a=_[_0xd9dd('0x42')]({},_0x2b599a,_0x13be9a[_0xd9dd('0x44')]);return db['FaxApplication'][_0xd9dd('0x4a')](_0x2b599a)['then'](handleEntityNotFound(_0x566af6,null))[_0xd9dd('0x27')](respondWithResult(_0x566af6,null))['catch'](handleError(_0x566af6,null));};exports['create']=function(_0x265002,_0x847cb7){return db[_0xd9dd('0x30')][_0xd9dd('0x4b')](_0x265002[_0xd9dd('0x4c')],{})[_0xd9dd('0x27')](respondWithResult(_0x847cb7,0xc9))[_0xd9dd('0x47')](handleError(_0x847cb7,null));};exports[_0xd9dd('0x26')]=function(_0x43fd07,_0x298e8b){if(_0x43fd07[_0xd9dd('0x4c')]['id']){delete _0x43fd07[_0xd9dd('0x4c')]['id'];}return db[_0xd9dd('0x30')][_0xd9dd('0x4a')]({'where':{'id':_0x43fd07['params']['id']}})['then'](handleEntityNotFound(_0x298e8b,null))[_0xd9dd('0x27')](saveUpdates(_0x43fd07[_0xd9dd('0x4c')],null))[_0xd9dd('0x27')](respondWithResult(_0x298e8b,null))[_0xd9dd('0x47')](handleError(_0x298e8b,null));};exports[_0xd9dd('0x28')]=function(_0x29171f,_0x2db138){return db[_0xd9dd('0x30')][_0xd9dd('0x4a')]({'where':{'id':_0x29171f[_0xd9dd('0x4d')]['id']}})[_0xd9dd('0x27')](handleEntityNotFound(_0x2db138,null))[_0xd9dd('0x27')](removeEntity(_0x2db138,null))['catch'](handleError(_0x2db138,null));};
\ No newline at end of file
+var _0xc0d4=['request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','reject','destroy','then','error','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','sort','where','filter','merge','VIRTUAL','options','FaxApplication','include','catch','show','params','fields','find','create','body','update','rimraf','fast-json-patch'];(function(_0x49d5a4,_0x492639){var _0xee079a=function(_0x48b596){while(--_0x48b596){_0x49d5a4['push'](_0x49d5a4['shift']());}};_0xee079a(++_0x492639);}(_0xc0d4,0xd6));var _0x4c0d=function(_0x42183e,_0x3b3353){_0x42183e=_0x42183e-0x0;var _0x4c1315=_0xc0d4[_0x42183e];return _0x4c1315;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4c0d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4c0d('0x1'));var rp=require(_0x4c0d('0x2'));var moment=require(_0x4c0d('0x3'));var BPromise=require(_0x4c0d('0x4'));var Mustache=require(_0x4c0d('0x5'));var util=require(_0x4c0d('0x6'));var path=require(_0x4c0d('0x7'));var sox=require('sox');var csv=require(_0x4c0d('0x8'));var ejs=require(_0x4c0d('0x9'));var fs=require('fs');var fs_extra=require(_0x4c0d('0xa'));var _=require(_0x4c0d('0xb'));var squel=require(_0x4c0d('0xc'));var crypto=require('crypto');var jsforce=require(_0x4c0d('0xd'));var deskjs=require(_0x4c0d('0xe'));var toCsv=require(_0x4c0d('0x8'));var querystring=require(_0x4c0d('0xf'));var Papa=require(_0x4c0d('0x10'));var Redis=require(_0x4c0d('0x11'));var authService=require(_0x4c0d('0x12'));var qs=require(_0x4c0d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4c0d('0x14'));var logger=require(_0x4c0d('0x15'))(_0x4c0d('0x16'));var utils=require(_0x4c0d('0x17'));var config=require(_0x4c0d('0x18'));var licenseUtil=require(_0x4c0d('0x19'));var db=require(_0x4c0d('0x1a'))['db'];function respondWithStatusCode(_0x2b9213,_0x16a87a){_0x16a87a=_0x16a87a||0xcc;return function(_0x3c2ae0){if(_0x3c2ae0){return _0x2b9213[_0x4c0d('0x1b')](_0x16a87a);}return _0x2b9213[_0x4c0d('0x1c')](_0x16a87a)[_0x4c0d('0x1d')]();};}function respondWithResult(_0x3a1584,_0x26911d){_0x26911d=_0x26911d||0xc8;return function(_0x24cf66){if(_0x24cf66){return _0x3a1584['status'](_0x26911d)['json'](_0x24cf66);}};}function respondWithFilteredResult(_0x51224c,_0x2ada3c){return function(_0x5c7cca){if(_0x5c7cca){var _0x1e6be0=typeof _0x2ada3c[_0x4c0d('0x1e')]==='undefined'&&typeof _0x2ada3c[_0x4c0d('0x1f')]===_0x4c0d('0x20');var _0x2bee6a=_0x5c7cca['count'];var _0x211539=_0x1e6be0?0x0:_0x2ada3c[_0x4c0d('0x1e')];var _0x422bab=_0x1e6be0?_0x5c7cca[_0x4c0d('0x21')]:_0x2ada3c[_0x4c0d('0x1e')]+_0x2ada3c[_0x4c0d('0x1f')];var _0x5cea29;if(_0x422bab>=_0x2bee6a){_0x422bab=_0x2bee6a;_0x5cea29=0xc8;}else{_0x5cea29=0xce;}_0x51224c[_0x4c0d('0x1c')](_0x5cea29);return _0x51224c['set'](_0x4c0d('0x22'),_0x211539+'-'+_0x422bab+'/'+_0x2bee6a)[_0x4c0d('0x23')](_0x5c7cca);}return null;};}function patchUpdates(_0x121244){return function(_0x53945a){try{jsonpatch[_0x4c0d('0x24')](_0x53945a,_0x121244,!![]);}catch(_0x207b63){return BPromise[_0x4c0d('0x25')](_0x207b63);}return _0x53945a['save']();};}function saveUpdates(_0x3c55f1,_0x543dc2){return function(_0x5dded9){if(_0x5dded9){return _0x5dded9['update'](_0x3c55f1)['then'](function(_0x1abd97){return _0x1abd97;});}return null;};}function removeEntity(_0x3b75b2,_0x25f035){return function(_0x51f70e){if(_0x51f70e){return _0x51f70e[_0x4c0d('0x26')]()[_0x4c0d('0x27')](function(){_0x3b75b2['status'](0xcc)[_0x4c0d('0x1d')]();});}};}function handleEntityNotFound(_0x9488ad,_0x488c39){return function(_0x563bdc){if(!_0x563bdc){_0x9488ad['sendStatus'](0x194);}return _0x563bdc;};}function handleError(_0x98c160,_0x192aa5){_0x192aa5=_0x192aa5||0x1f4;return function(_0x5eb31c){logger[_0x4c0d('0x28')](_0x5eb31c['stack']);if(_0x5eb31c[_0x4c0d('0x29')]){delete _0x5eb31c[_0x4c0d('0x29')];}_0x98c160[_0x4c0d('0x1c')](_0x192aa5)[_0x4c0d('0x2a')](_0x5eb31c);};}exports['index']=function(_0x2456c4,_0x377e4c){var _0x23b275={},_0x574dbb={},_0x25f5ee={'count':0x0,'rows':[]};var _0x39e570=_[_0x4c0d('0x2b')](db['FaxApplication'][_0x4c0d('0x2c')],function(_0x3122f0){return{'name':_0x3122f0[_0x4c0d('0x2d')],'type':_0x3122f0[_0x4c0d('0x2e')][_0x4c0d('0x2f')]};});_0x574dbb[_0x4c0d('0x30')]=_[_0x4c0d('0x2b')](_0x39e570,_0x4c0d('0x29'));_0x574dbb[_0x4c0d('0x31')]=_[_0x4c0d('0x32')](_0x2456c4['query']);_0x574dbb[_0x4c0d('0x33')]=_[_0x4c0d('0x34')](_0x574dbb['model'],_0x574dbb[_0x4c0d('0x31')]);_0x23b275[_0x4c0d('0x35')]=_[_0x4c0d('0x34')](_0x574dbb[_0x4c0d('0x30')],qs['fields'](_0x2456c4[_0x4c0d('0x31')]['fields']));_0x23b275[_0x4c0d('0x35')]=_0x23b275[_0x4c0d('0x35')][_0x4c0d('0x36')]?_0x23b275['attributes']:_0x574dbb[_0x4c0d('0x30')];if(!_0x2456c4['query']['hasOwnProperty'](_0x4c0d('0x37'))){_0x23b275['limit']=qs[_0x4c0d('0x1f')](_0x2456c4['query'][_0x4c0d('0x1f')]);_0x23b275[_0x4c0d('0x1e')]=qs[_0x4c0d('0x1e')](_0x2456c4[_0x4c0d('0x31')][_0x4c0d('0x1e')]);}_0x23b275['order']=qs[_0x4c0d('0x38')](_0x2456c4[_0x4c0d('0x31')][_0x4c0d('0x38')]);_0x23b275[_0x4c0d('0x39')]=qs['filters'](_['pick'](_0x2456c4[_0x4c0d('0x31')],_0x574dbb['filters']),_0x39e570);if(_0x2456c4[_0x4c0d('0x31')][_0x4c0d('0x3a')]){_0x23b275[_0x4c0d('0x39')]=_[_0x4c0d('0x3b')](_0x23b275[_0x4c0d('0x39')],{'$or':_[_0x4c0d('0x2b')](_0x39e570,function(_0x57c540){if(_0x57c540['type']!==_0x4c0d('0x3c')){var _0x11de0d={};_0x11de0d[_0x57c540[_0x4c0d('0x29')]]={'$like':'%'+_0x2456c4[_0x4c0d('0x31')][_0x4c0d('0x3a')]+'%'};return _0x11de0d;}})});}_0x23b275=_[_0x4c0d('0x3b')]({},_0x23b275,_0x2456c4[_0x4c0d('0x3d')]);var _0x360d00={'where':_0x23b275[_0x4c0d('0x39')]};return db[_0x4c0d('0x3e')][_0x4c0d('0x21')](_0x360d00)[_0x4c0d('0x27')](function(_0x4f3ece){_0x25f5ee[_0x4c0d('0x21')]=_0x4f3ece;if(_0x2456c4[_0x4c0d('0x31')]['includeAll']){_0x23b275[_0x4c0d('0x3f')]=[{'all':!![]}];}return db[_0x4c0d('0x3e')]['findAll'](_0x23b275);})[_0x4c0d('0x27')](function(_0x5a923c){_0x25f5ee['rows']=_0x5a923c;return _0x25f5ee;})[_0x4c0d('0x27')](respondWithFilteredResult(_0x377e4c,_0x23b275))[_0x4c0d('0x40')](handleError(_0x377e4c,null));};exports[_0x4c0d('0x41')]=function(_0xd32875,_0x42de2a){var _0x39fc28={'raw':!![],'where':{'id':_0xd32875[_0x4c0d('0x42')]['id']}},_0xc9f0ee={};_0xc9f0ee[_0x4c0d('0x30')]=_[_0x4c0d('0x32')](db[_0x4c0d('0x3e')][_0x4c0d('0x2c')]);_0xc9f0ee[_0x4c0d('0x31')]=_[_0x4c0d('0x32')](_0xd32875[_0x4c0d('0x31')]);_0xc9f0ee['filters']=_[_0x4c0d('0x34')](_0xc9f0ee[_0x4c0d('0x30')],_0xc9f0ee[_0x4c0d('0x31')]);_0x39fc28[_0x4c0d('0x35')]=_[_0x4c0d('0x34')](_0xc9f0ee[_0x4c0d('0x30')],qs[_0x4c0d('0x43')](_0xd32875['query']['fields']));_0x39fc28[_0x4c0d('0x35')]=_0x39fc28[_0x4c0d('0x35')]['length']?_0x39fc28['attributes']:_0xc9f0ee['model'];if(_0xd32875[_0x4c0d('0x31')]['includeAll']){_0x39fc28[_0x4c0d('0x3f')]=[{'all':!![]}];}_0x39fc28=_[_0x4c0d('0x3b')]({},_0x39fc28,_0xd32875[_0x4c0d('0x3d')]);return db[_0x4c0d('0x3e')][_0x4c0d('0x44')](_0x39fc28)[_0x4c0d('0x27')](handleEntityNotFound(_0x42de2a,null))[_0x4c0d('0x27')](respondWithResult(_0x42de2a,null))[_0x4c0d('0x40')](handleError(_0x42de2a,null));};exports['create']=function(_0x5278e0,_0x4564e6){return db['FaxApplication'][_0x4c0d('0x45')](_0x5278e0[_0x4c0d('0x46')],{})[_0x4c0d('0x27')](respondWithResult(_0x4564e6,0xc9))[_0x4c0d('0x40')](handleError(_0x4564e6,null));};exports[_0x4c0d('0x47')]=function(_0x54222d,_0x348e55){if(_0x54222d[_0x4c0d('0x46')]['id']){delete _0x54222d[_0x4c0d('0x46')]['id'];}return db[_0x4c0d('0x3e')][_0x4c0d('0x44')]({'where':{'id':_0x54222d['params']['id']}})['then'](handleEntityNotFound(_0x348e55,null))[_0x4c0d('0x27')](saveUpdates(_0x54222d[_0x4c0d('0x46')],null))[_0x4c0d('0x27')](respondWithResult(_0x348e55,null))[_0x4c0d('0x40')](handleError(_0x348e55,null));};exports['destroy']=function(_0x184e92,_0x5d721b){return db[_0x4c0d('0x3e')][_0x4c0d('0x44')]({'where':{'id':_0x184e92['params']['id']}})[_0x4c0d('0x27')](handleEntityNotFound(_0x5d721b,null))['then'](removeEntity(_0x5d721b,null))['catch'](handleError(_0x5d721b,null));};
\ No newline at end of file
index 0b66890..2b43f6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbea8=['bluebird','../../config/environment','./faxApplication.attributes','exports','FaxApplication','fax_applications','utf8mb4','lodash','util','moment'];(function(_0x3d8f5a,_0x11026d){var _0xee63cb=function(_0x139334){while(--_0x139334){_0x3d8f5a['push'](_0x3d8f5a['shift']());}};_0xee63cb(++_0x11026d);}(_0xbea8,0x1b5));var _0x8bea=function(_0x390752,_0x42cad3){_0x390752=_0x390752-0x0;var _0x5eca55=_0xbea8[_0x390752];return _0x5eca55;};'use strict';var _=require(_0x8bea('0x0'));var util=require(_0x8bea('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8bea('0x2'));var BPromise=require(_0x8bea('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8bea('0x4'));var attributes=require(_0x8bea('0x5'));module[_0x8bea('0x6')]=function(_0x52f282,_0x5f0c25){return _0x52f282['define'](_0x8bea('0x7'),attributes,{'tableName':_0x8bea('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8bea('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x8284=['utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxApplication.attributes','define','FaxApplication','fax_applications'];(function(_0x30e7d,_0x29f598){var _0x3b6683=function(_0x2e87a9){while(--_0x2e87a9){_0x30e7d['push'](_0x30e7d['shift']());}};_0x3b6683(++_0x29f598);}(_0x8284,0x1c1));var _0x4828=function(_0x427935,_0x3418ed){_0x427935=_0x427935-0x0;var _0x5c33a2=_0x8284[_0x427935];return _0x5c33a2;};'use strict';var _=require(_0x4828('0x0'));var util=require(_0x4828('0x1'));var logger=require('../../config/logger')(_0x4828('0x2'));var moment=require(_0x4828('0x3'));var BPromise=require(_0x4828('0x4'));var rp=require(_0x4828('0x5'));var fs=require('fs');var path=require(_0x4828('0x6'));var rimraf=require(_0x4828('0x7'));var config=require(_0x4828('0x8'));var attributes=require(_0x4828('0x9'));module['exports']=function(_0x3d61b1,_0x59c389){return _0x3d61b1[_0x4828('0xa')](_0x4828('0xb'),attributes,{'tableName':_0x4828('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x4828('0xd')});};
\ No newline at end of file
index dff59c9..ee841cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5f1=['update','body','options','raw','where','attributes','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxApplication','FaxApplication'];(function(_0x4c7b5c,_0x2a01f9){var _0x33c7c5=function(_0x57191b){while(--_0x57191b){_0x4c7b5c['push'](_0x4c7b5c['shift']());}};_0x33c7c5(++_0x2a01f9);}(_0xf5f1,0x1c8));var _0x1f5f=function(_0x5c08a1,_0x502fff){_0x5c08a1=_0x5c08a1-0x0;var _0x7c8277=_0xf5f1[_0x5c08a1];return _0x7c8277;};'use strict';var _=require('lodash');var util=require(_0x1f5f('0x0'));var moment=require(_0x1f5f('0x1'));var BPromise=require(_0x1f5f('0x2'));var rs=require(_0x1f5f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1f5f('0x4'))['db'];var utils=require(_0x1f5f('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x1f5f('0x6'));var jayson=require(_0x1f5f('0x7'));var client=jayson[_0x1f5f('0x8')][_0x1f5f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8ff339,_0x5db92e,_0x13c9a6){return new BPromise(function(_0x4e38a0,_0x3bf52c){return client[_0x1f5f('0xa')](_0x8ff339,_0x13c9a6)[_0x1f5f('0xb')](function(_0x1c5e3b){logger[_0x1f5f('0xc')](_0x1f5f('0xd'),_0x5db92e,_0x1f5f('0xe'));logger['debug'](_0x1f5f('0xf'),_0x5db92e,'request\x20sent',JSON[_0x1f5f('0x10')](_0x1c5e3b));if(_0x1c5e3b['error']){if(_0x1c5e3b[_0x1f5f('0x11')][_0x1f5f('0x12')]===0x1f4){logger[_0x1f5f('0x11')](_0x1f5f('0xd'),_0x5db92e,_0x1c5e3b[_0x1f5f('0x11')][_0x1f5f('0x13')]);return _0x3bf52c(_0x1c5e3b['error'][_0x1f5f('0x13')]);}logger[_0x1f5f('0x11')](_0x1f5f('0xd'),_0x5db92e,_0x1c5e3b[_0x1f5f('0x11')][_0x1f5f('0x13')]);return _0x4e38a0(_0x1c5e3b['error'][_0x1f5f('0x13')]);}else{logger[_0x1f5f('0xc')](_0x1f5f('0xd'),_0x5db92e,'request\x20sent');_0x4e38a0(_0x1c5e3b[_0x1f5f('0x14')][_0x1f5f('0x13')]);}})[_0x1f5f('0x15')](function(_0x246823){logger['error'](_0x1f5f('0xd'),_0x5db92e,_0x246823);_0x3bf52c(_0x246823);});});}exports[_0x1f5f('0x16')]=function(_0x2719c0){var _0x1c561a=this;return new Promise(function(_0x33fde4,_0xda6833){return db[_0x1f5f('0x17')][_0x1f5f('0x18')](_0x2719c0[_0x1f5f('0x19')],{'raw':_0x2719c0[_0x1f5f('0x1a')]?_0x2719c0[_0x1f5f('0x1a')][_0x1f5f('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2719c0[_0x1f5f('0x1a')]?_0x2719c0[_0x1f5f('0x1a')][_0x1f5f('0x1c')]||null:null,'attributes':_0x2719c0['options']?_0x2719c0[_0x1f5f('0x1a')][_0x1f5f('0x1d')]||null:null,'limit':_0x2719c0[_0x1f5f('0x1a')]?_0x2719c0[_0x1f5f('0x1a')]['limit']||null:null})[_0x1f5f('0xb')](function(_0x4aa903){logger['info']('UpdateFaxApplication',_0x2719c0);logger['debug']('UpdateFaxApplication',_0x2719c0,JSON[_0x1f5f('0x10')](_0x4aa903));_0x33fde4(_0x4aa903);})[_0x1f5f('0x15')](function(_0xa880b2){logger[_0x1f5f('0x11')](_0x1f5f('0x16'),_0xa880b2[_0x1f5f('0x13')],_0x2719c0);_0xda6833(_0x1c561a[_0x1f5f('0x11')](0x1f4,_0xa880b2[_0x1f5f('0x13')]));});});};
\ No newline at end of file
+var _0xc6b4=['options','raw','where','attributes','limit','debug','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxApplication','update','body'];(function(_0x3a44ab,_0x5a522f){var _0x3bd984=function(_0x54918b){while(--_0x54918b){_0x3a44ab['push'](_0x3a44ab['shift']());}};_0x3bd984(++_0x5a522f);}(_0xc6b4,0x1aa));var _0x4c6b=function(_0x1c1da1,_0x4755d8){_0x1c1da1=_0x1c1da1-0x0;var _0x3c1816=_0xc6b4[_0x1c1da1];return _0x3c1816;};'use strict';var _=require(_0x4c6b('0x0'));var util=require('util');var moment=require(_0x4c6b('0x1'));var BPromise=require('bluebird');var rs=require(_0x4c6b('0x2'));var fs=require('fs');var Redis=require(_0x4c6b('0x3'));var db=require(_0x4c6b('0x4'))['db'];var utils=require(_0x4c6b('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x4c6b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x4c6b('0x7')][_0x4c6b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x6bad0a,_0x3dab12,_0x4a72c4){return new BPromise(function(_0x1963b5,_0x1b6617){return client[_0x4c6b('0x9')](_0x6bad0a,_0x4a72c4)[_0x4c6b('0xa')](function(_0x189104){logger[_0x4c6b('0xb')](_0x4c6b('0xc'),_0x3dab12,_0x4c6b('0xd'));logger['debug'](_0x4c6b('0xe'),_0x3dab12,'request\x20sent',JSON[_0x4c6b('0xf')](_0x189104));if(_0x189104['error']){if(_0x189104[_0x4c6b('0x10')][_0x4c6b('0x11')]===0x1f4){logger['error']('FaxApplication,\x20%s,\x20%s',_0x3dab12,_0x189104[_0x4c6b('0x10')]['message']);return _0x1b6617(_0x189104['error']['message']);}logger['error']('FaxApplication,\x20%s,\x20%s',_0x3dab12,_0x189104[_0x4c6b('0x10')][_0x4c6b('0x12')]);return _0x1963b5(_0x189104['error'][_0x4c6b('0x12')]);}else{logger[_0x4c6b('0xb')]('FaxApplication,\x20%s,\x20%s',_0x3dab12,_0x4c6b('0xd'));_0x1963b5(_0x189104[_0x4c6b('0x13')][_0x4c6b('0x12')]);}})[_0x4c6b('0x14')](function(_0x2b94ab){logger[_0x4c6b('0x10')](_0x4c6b('0xc'),_0x3dab12,_0x2b94ab);_0x1b6617(_0x2b94ab);});});}exports[_0x4c6b('0x15')]=function(_0x181794){var _0x28d9fb=this;return new Promise(function(_0x4c79f6,_0x37c195){return db['FaxApplication'][_0x4c6b('0x16')](_0x181794[_0x4c6b('0x17')],{'raw':_0x181794[_0x4c6b('0x18')]?_0x181794[_0x4c6b('0x18')][_0x4c6b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x181794[_0x4c6b('0x18')]?_0x181794['options'][_0x4c6b('0x1a')]||null:null,'attributes':_0x181794['options']?_0x181794[_0x4c6b('0x18')][_0x4c6b('0x1b')]||null:null,'limit':_0x181794[_0x4c6b('0x18')]?_0x181794[_0x4c6b('0x18')][_0x4c6b('0x1c')]||null:null})[_0x4c6b('0xa')](function(_0x2e797e){logger['info'](_0x4c6b('0x15'),_0x181794);logger[_0x4c6b('0x1d')](_0x4c6b('0x15'),_0x181794,JSON[_0x4c6b('0xf')](_0x2e797e));_0x4c79f6(_0x2e797e);})['catch'](function(_0x2e435a){logger[_0x4c6b('0x10')]('UpdateFaxApplication',_0x2e435a[_0x4c6b('0x12')],_0x181794);_0x37c195(_0x28d9fb['error'](0x1f4,_0x2e435a[_0x4c6b('0x12')]));});});};
\ No newline at end of file
index 8daa4ce..e7bbb22 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(_0x20bedd,_0x3abbd5){var _0x3f5b8e=function(_0xa890d3){while(--_0xa890d3){_0x20bedd['push'](_0x20bedd['shift']());}};_0x3f5b8e(++_0x3abbd5);}(_0xed3c,0x1a6));var _0xced3=function(_0x50b295,_0x420eaf){_0x50b295=_0x50b295-0x0;var _0x230324=_0xed3c[_0x50b295];return _0x230324;};'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 _0x6324=['util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','show','post','create','put','update','delete','/:id','destroy','exports','multer'];(function(_0x10f73b,_0xca9fcc){var _0x570c0a=function(_0x14eaa1){while(--_0x14eaa1){_0x10f73b['push'](_0x10f73b['shift']());}};_0x570c0a(++_0xca9fcc);}(_0x6324,0x142));var _0x4632=function(_0xa3c06b,_0x490f99){_0xa3c06b=_0xa3c06b-0x0;var _0x33aa1d=_0x6324[_0xa3c06b];return _0x33aa1d;};'use strict';var multer=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var path=require(_0x4632('0x2'));var timeout=require(_0x4632('0x3'));var express=require('express');var router=express[_0x4632('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4632('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4632('0x6'));var controller=require('./faxApplication.controller');router[_0x4632('0x7')]('/',auth[_0x4632('0x8')](),controller[_0x4632('0x9')]);router[_0x4632('0x7')]('/:id',auth[_0x4632('0x8')](),controller[_0x4632('0xa')]);router[_0x4632('0xb')]('/',auth['isAuthenticated'](),controller[_0x4632('0xc')]);router[_0x4632('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x4632('0xe')]);router[_0x4632('0xf')](_0x4632('0x10'),auth[_0x4632('0x8')](),controller[_0x4632('0x11')]);module[_0x4632('0x12')]=router;
\ No newline at end of file
index a9b5577..ea320d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9676=['DATE','ENUM','out','BOOLEAN','STRING'];(function(_0x4ca536,_0x57c8de){var _0x3bd35f=function(_0x26d91d){while(--_0x26d91d){_0x4ca536['push'](_0x4ca536['shift']());}};_0x3bd35f(++_0x57c8de);}(_0x9676,0x1ca));var _0x6967=function(_0x8e7958,_0x579780){_0x8e7958=_0x8e7958-0x0;var _0x34299c=_0x9676[_0x8e7958];return _0x34299c;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0x6967('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x6967('0x1')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x6967('0x1')]},'note':{'type':Sequelize[_0x6967('0x1')]},'read1stAt':{'type':Sequelize[_0x6967('0x2')]},'fax':{'type':Sequelize[_0x6967('0x1')]},'firstMsgDirection':{'type':Sequelize[_0x6967('0x3')]('in',_0x6967('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x6967('0x3')]('in',_0x6967('0x4')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x76d5=['out','sequelize','DATE','STRING','ENUM'];(function(_0x1fc222,_0x2f9401){var _0x1bd744=function(_0x4e3221){while(--_0x4e3221){_0x1fc222['push'](_0x1fc222['shift']());}};_0x1bd744(++_0x2f9401);}(_0x76d5,0x19b));var _0x576d=function(_0x509f8,_0x1648b4){_0x509f8=_0x509f8-0x0;var _0x283b3d=_0x76d5[_0x509f8];return _0x283b3d;};'use strict';var Sequelize=require(_0x576d('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x576d('0x1')]},'disposition':{'type':Sequelize[_0x576d('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x576d('0x2')]},'read1stAt':{'type':Sequelize[_0x576d('0x1')]},'fax':{'type':Sequelize[_0x576d('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x576d('0x3')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x576d('0x1')]},'lastMsgDirection':{'type':Sequelize[_0x576d('0x3')]('in',_0x576d('0x4')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 436676b..20d2e35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3327=['read','`unreadMessages`\x20>\x200','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','SELECT','clone','i.id','contactName','DESC','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','agent','user','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','role','sequelize','keyBy','FaxInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.email','Contact.email','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.FaxInteractionId\x20IN\x20?','FaxInteractionId','all','rows','params','include','merge','create','destroy','describe','addMessage','FaxMessage','omit','format','findAll','ids','spread','Tag','emit','faxInteractionTags:save','removeTags','download','join','server','files','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','existsSync','createReadStream','pipe','createWriteStream','log','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./faxInteraction.socket','register','sendStatus','end','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','then','error','stack','name','send','fullname','Tags','TagIds','split','forEach','push','catch','map','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','from','tools_tags','u.id','u.fullname','ui.FaxInteractionId','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','fax_messages','me.FaxInteractionId\x20=\x20i.id','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','$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','text','start','User','operator','UserId','body','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x3327,0x117));var _0x7332=function(_0x1672c1,_0x531c4b){_0x1672c1=_0x1672c1-0x0;var _0x18032c=_0x3327[_0x1672c1];return _0x18032c;};'use strict';var emlformat=require(_0x7332('0x0'));var rimraf=require(_0x7332('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7332('0x2'));var rp=require(_0x7332('0x3'));var moment=require(_0x7332('0x4'));var BPromise=require(_0x7332('0x5'));var Mustache=require(_0x7332('0x6'));var util=require('util');var path=require(_0x7332('0x7'));var sox=require(_0x7332('0x8'));var csv=require('to-csv');var ejs=require(_0x7332('0x9'));var fs=require('fs');var fs_extra=require(_0x7332('0xa'));var _=require(_0x7332('0xb'));var squel=require('squel');var crypto=require(_0x7332('0xc'));var jsforce=require(_0x7332('0xd'));var deskjs=require(_0x7332('0xe'));var toCsv=require(_0x7332('0xf'));var querystring=require(_0x7332('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7332('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7332('0x12'));var logger=require(_0x7332('0x13'))(_0x7332('0x14'));var utils=require(_0x7332('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x7332('0x16'));var db=require(_0x7332('0x17'))['db'];config[_0x7332('0x18')]=_[_0x7332('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x7332('0x1a'))(new Redis(config['redis']));require(_0x7332('0x1b'))[_0x7332('0x1c')](socket);function respondWithStatusCode(_0x2711c3,_0x354335){_0x354335=_0x354335||0xcc;return function(_0xa8129a){if(_0xa8129a){return _0x2711c3[_0x7332('0x1d')](_0x354335);}return _0x2711c3['status'](_0x354335)[_0x7332('0x1e')]();};}function respondWithResult(_0x4baaca,_0x3781b6){_0x3781b6=_0x3781b6||0xc8;return function(_0x1a91f3){if(_0x1a91f3){return _0x4baaca[_0x7332('0x1f')](_0x3781b6)[_0x7332('0x20')](_0x1a91f3);}};}function respondWithFilteredResult(_0x382819,_0x33ae86){return function(_0x47f23c){if(_0x47f23c){var _0x980d83=typeof _0x33ae86[_0x7332('0x21')]==='undefined'&&typeof _0x33ae86[_0x7332('0x22')]===_0x7332('0x23');var _0x3fb9ac=_0x47f23c[_0x7332('0x24')];var _0x4afec5=_0x980d83?0x0:_0x33ae86[_0x7332('0x21')];var _0x1b06f7=_0x980d83?_0x47f23c[_0x7332('0x24')]:_0x33ae86[_0x7332('0x21')]+_0x33ae86[_0x7332('0x22')];var _0x378a5e;if(_0x1b06f7>=_0x3fb9ac){_0x1b06f7=_0x3fb9ac;_0x378a5e=0xc8;}else{_0x378a5e=0xce;}_0x382819[_0x7332('0x1f')](_0x378a5e);return _0x382819['set'](_0x7332('0x25'),_0x4afec5+'-'+_0x1b06f7+'/'+_0x3fb9ac)[_0x7332('0x20')](_0x47f23c);}return null;};}function patchUpdates(_0x25ec53){return function(_0xcb1a94){try{jsonpatch[_0x7332('0x26')](_0xcb1a94,_0x25ec53,!![]);}catch(_0xac573b){return BPromise[_0x7332('0x27')](_0xac573b);}return _0xcb1a94[_0x7332('0x28')]();};}function saveUpdates(_0x4bee5c,_0x1cb18c){return function(_0x147e42){if(_0x147e42){return _0x147e42['update'](_0x4bee5c)[_0x7332('0x29')](function(_0x438f68){return _0x438f68;});}return null;};}function removeEntity(_0x5c808c,_0x574150){return function(_0x41181d){if(_0x41181d){return _0x41181d['destroy']()['then'](function(){_0x5c808c[_0x7332('0x1f')](0xcc)[_0x7332('0x1e')]();});}};}function handleEntityNotFound(_0xf0ed41,_0x2786c1){return function(_0x2b68a5){if(!_0x2b68a5){_0xf0ed41[_0x7332('0x1d')](0x194);}return _0x2b68a5;};}function handleError(_0x4a1b89,_0x1dd96f){_0x1dd96f=_0x1dd96f||0x1f4;return function(_0x44f1cb){logger[_0x7332('0x2a')](_0x44f1cb[_0x7332('0x2b')]);if(_0x44f1cb[_0x7332('0x2c')]){delete _0x44f1cb[_0x7332('0x2c')];}_0x4a1b89['status'](_0x1dd96f)[_0x7332('0x2d')](_0x44f1cb);};}function getInteractionUsers(_0x3d7e8f,_0xa7b562){return new BPromise(function(_0x5b797c,_0x4b7384){try{if(_0xa7b562[_0x3d7e8f['id']]){_0x3d7e8f['Users']=_['map'](_0xa7b562[_0x3d7e8f['id']],function(_0x2dc94c){return{'id':_0x2dc94c['id'],'fullname':_0x2dc94c[_0x7332('0x2e')]};});}}catch(_0x54e2a1){_0x4b7384(_0x54e2a1);}_0x5b797c(_0x3d7e8f);});}function getInteractionTags(_0x509124,_0xe21441){return new BPromise(function(_0x39e2d5,_0x22da70){try{if(_0x509124['TagIds']){_0x509124[_0x7332('0x2f')]=[];_0x509124[_0x7332('0x30')][_0x7332('0x31')](',')[_0x7332('0x32')](function(_0x2578e7){_0x509124[_0x7332('0x2f')][_0x7332('0x33')](_0xe21441[_0x2578e7]);});}delete _0x509124[_0x7332('0x30')];}catch(_0x192763){_0x22da70(_0x192763);}_0x39e2d5(_0x509124);});}function updateFaxInteraction(_0x424923,_0x1f2aab,_0x40bf00){return new BPromise(function(_0x5071e7,_0x4036fb){return getInteractionUsers(_0x424923,_0x40bf00)['then'](function(_0x4649bd){return getInteractionTags(_0x4649bd,_0x1f2aab);})['then'](function(_0x11188f){_0x5071e7(_0x11188f);})[_0x7332('0x34')](function(_0x1b2ed7){_0x4036fb(_0x1b2ed7);});});}exports['index']=function(_0x1b2254,_0x5eec51){var _0x4709ca={},_0x1213fc={},_0x18fc65={'count':0x0,'rows':[]};var _0x3d4df0=_[_0x7332('0x35')](db['FaxInteraction'][_0x7332('0x36')],function(_0x1f638c){return{'name':_0x1f638c[_0x7332('0x37')],'type':_0x1f638c[_0x7332('0x38')]['key']};});_0x1213fc[_0x7332('0x39')]=_['map'](_0x3d4df0,'name');_0x1213fc['query']=_[_0x7332('0x3a')](_0x1b2254['query']);_0x1213fc[_0x7332('0x3b')]=_[_0x7332('0x3c')](_0x1213fc['model'],_0x1213fc[_0x7332('0x3d')]);_0x4709ca[_0x7332('0x3e')]=_[_0x7332('0x3c')](_0x1213fc[_0x7332('0x39')],qs[_0x7332('0x3f')](_0x1b2254[_0x7332('0x3d')][_0x7332('0x3f')]));_0x4709ca['attributes']=_0x4709ca[_0x7332('0x3e')][_0x7332('0x40')]?_0x4709ca[_0x7332('0x3e')]:_0x1213fc['model'];if(!_0x1b2254['query'][_0x7332('0x41')](_0x7332('0x42'))){_0x4709ca[_0x7332('0x22')]=qs['limit'](_0x1b2254[_0x7332('0x3d')][_0x7332('0x22')]);_0x4709ca[_0x7332('0x21')]=qs[_0x7332('0x21')](_0x1b2254[_0x7332('0x3d')]['offset']);}_0x4709ca[_0x7332('0x43')]=qs[_0x7332('0x44')](_0x1b2254[_0x7332('0x3d')][_0x7332('0x44')]);_0x4709ca[_0x7332('0x45')]=qs[_0x7332('0x3b')](_[_0x7332('0x46')](_0x1b2254[_0x7332('0x3d')],_0x1213fc[_0x7332('0x3b')]),_0x3d4df0);var _0x65b996=[];var _0x4c7a40=squel[_0x7332('0x47')]()[_0x7332('0x48')]('id')[_0x7332('0x48')](_0x7332('0x2c'))[_0x7332('0x48')]('color')[_0x7332('0x49')](_0x7332('0x4a'));var _0x4095d8=squel[_0x7332('0x47')]()[_0x7332('0x48')](_0x7332('0x4b'))['field'](_0x7332('0x4c'))[_0x7332('0x48')](_0x7332('0x4d'))['from']('user_has_fax_interactions','ui')[_0x7332('0x4e')](_0x7332('0x4f'),'u',_0x7332('0x50'));var _0x4127bb=squel[_0x7332('0x47')]()[_0x7332('0x49')](_0x7332('0x51'),'i')[_0x7332('0x4e')](_0x7332('0x52'),'c',_0x7332('0x53'))[_0x7332('0x4e')](_0x7332('0x4f'),'o',_0x7332('0x54'))[_0x7332('0x4e')](_0x7332('0x55'),'a','a.id\x20=\x20i.FaxAccountId')[_0x7332('0x4e')](_0x7332('0x56'),'me',_0x7332('0x57'))['left_join']('fax_interaction_has_tags','it',_0x7332('0x58'))['left_join'](_0x7332('0x4a'),'t',_0x7332('0x59'));var _0x4bb80d=squel['expr']();var _0x3cab42=[];var _0x1a46ca=squel[_0x7332('0x5a')]();var _0x2d6ef4;if(_0x1b2254['query'][_0x7332('0x5b')]){_0x2d6ef4=as[_0x7332('0x5c')](_0x1b2254[_0x7332('0x3d')][_0x7332('0x5b')]);var _0x3dc10d=_0x2d6ef4[_0x7332('0x5d')];for(var _0x1228f8=0x0;_0x1228f8<_0x2d6ef4['conditions']['length'];_0x1228f8++){var _0x4bc7a7=_0x2d6ef4[_0x7332('0x5e')][_0x1228f8];var _0x3c745f='i';var _0x310e68=_[_0x7332('0x5f')](_0x3d4df0,['name',_0x4bc7a7['field']]);if(!_0x310e68){switch(_0x4bc7a7[_0x7332('0x48')]){case _0x7332('0x60'):if(_0x4bc7a7[_0x7332('0x61')]==0x1){_0x4127bb[_0x7332('0x62')]('`'+_0x4bc7a7['field']+'`\x20=\x200');}else{_0x4127bb['having']('`'+_0x4bc7a7[_0x7332('0x48')]+'`\x20>\x200');}break;case'Contact':if(_0x4bc7a7['operator']===_0x7332('0x63')){if(_0x4bc7a7['value'][_0x7332('0x31')]('\x20')[_0x7332('0x40')]>0x1){_0x4bb80d[_0x3dc10d](_0x7332('0x64'),qs[_0x7332('0x65')](_0x4bc7a7['value']),null);}else{var _0x1723ff='%'+_0x4bc7a7[_0x7332('0x61')]+'%';_0x4bb80d[_0x3dc10d](_0x7332('0x66'),_0x1723ff,_0x1723ff,_0x1723ff);}}else{_0x310e68=_[_0x7332('0x5f')](_0x3d4df0,[_0x7332('0x2c'),_0x7332('0x67')]);_0x4bc7a7['field']='ContactId';_0x552818=as[_0x7332('0x68')](_0x3c745f,_0x310e68['type'],_0x4bc7a7);_0x4bb80d[_0x3dc10d](_0x552818[_0x7332('0x69')],_0x552818[_0x7332('0x61')][_0x7332('0x6a')],_0x552818['value'][_0x7332('0x1e')]);}break;case'Tag':var _0x3aa004=_0x4bc7a7[_0x7332('0x61')]['split'](',')['map'](function(_0x3c2488){return Number(_0x3c2488);});_0x3aa004[_0x7332('0x32')](function(_0xa22626){_0x1a46ca['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0xa22626+',%');});_0x3cab42=_['union'](_0x3cab42,_0x3aa004);break;case _0x7332('0x6b'):if(_0x4bc7a7[_0x7332('0x6c')]==='$substring'){_0x4bb80d[_0x3dc10d]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x4bc7a7['value']+'%',null);}else{_0x310e68=_[_0x7332('0x5f')](_0x3d4df0,[_0x7332('0x2c'),'UserId']);_0x4bc7a7[_0x7332('0x48')]=_0x7332('0x6d');_0x552818=as[_0x7332('0x68')](_0x3c745f,_0x310e68[_0x7332('0x38')],_0x4bc7a7);_0x4bb80d[_0x3dc10d](_0x552818[_0x7332('0x69')],_0x552818['value']['start'],_0x552818[_0x7332('0x61')][_0x7332('0x1e')]);}break;case _0x7332('0x6e'):_0x552818=as[_0x7332('0x68')]('me',null,_0x4bc7a7);_0x4bb80d[_0x3dc10d](_0x552818[_0x7332('0x69')],_0x552818['value'][_0x7332('0x6a')],_0x552818[_0x7332('0x61')][_0x7332('0x1e')]);break;}}else{var _0x552818=as[_0x7332('0x68')](_0x3c745f,_0x310e68['type'],_0x4bc7a7);_0x4bb80d[_0x3dc10d](_0x552818['text'],_0x552818[_0x7332('0x61')][_0x7332('0x6a')],_0x552818[_0x7332('0x61')]['end']);}}}else{var _0x437e55=_(_0x1b2254['query'])['keys']()[_0x7332('0x35')](function(_0x436df8){return _['some'](_0x3d4df0,[_0x7332('0x2c'),_0x436df8])?_0x436df8:undefined;})['compact']()[_0x7332('0x61')]();if(!_[_0x7332('0x6f')](_0x437e55)){_0x437e55['forEach'](function(_0x4b185e){if(_0x4b185e===_0x7332('0x70')){_0x4127bb[_0x7332('0x45')](_0x7332('0x71'),[][_0x7332('0x72')](_0x1b2254[_0x7332('0x3d')][_0x4b185e]));}else if(_0x4b185e===_0x7332('0x73')){var _0x18e44d=JSON[_0x7332('0x74')](_0x1b2254[_0x7332('0x3d')][_0x4b185e])[_0x7332('0x75')];var _0x2cdfb6=JSON[_0x7332('0x74')](_0x1b2254[_0x7332('0x3d')][_0x4b185e])[_0x7332('0x76')];_0x4127bb[_0x7332('0x45')](_0x7332('0x77'),_0x18e44d,_0x2cdfb6);}else{if(_0x1b2254[_0x7332('0x3d')][_0x4b185e]===_0x7332('0x78')){_0x4127bb[_0x7332('0x45')]('i.'+_0x4b185e+_0x7332('0x79'));}else{_0x4127bb[_0x7332('0x45')]('i.'+_0x4b185e+_0x7332('0x7a'),_0x1b2254[_0x7332('0x3d')][_0x4b185e]);}}});}if(_0x1b2254['query'][_0x7332('0x7b')]){if(_0x1b2254[_0x7332('0x3d')][_0x7332('0x7b')]==0x1){_0x4127bb[_0x7332('0x62')]('`unreadMessages`\x20=\x200');}else{_0x4127bb[_0x7332('0x62')](_0x7332('0x7c'));}}if(_0x1b2254['query'][_0x7332('0x7d')]){_0x3cab42=_['isArray'](_0x1b2254[_0x7332('0x3d')][_0x7332('0x7d')])?_0x1b2254['query']['tag']:new Array(_0x1b2254[_0x7332('0x3d')][_0x7332('0x7d')]);_0x3cab42[_0x7332('0x32')](function(_0x579ea4){_0x1a46ca['or'](_0x7332('0x7e'),'%,'+_0x579ea4+',%');});}if(_0x1b2254[_0x7332('0x3d')][_0x7332('0x7f')]){var _0x4619d5=_0x1b2254[_0x7332('0x3d')][_0x7332('0x7f')][_0x7332('0x80')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x4619d5)){_0x4bb80d['or']('i.id\x20LIKE\x20?',_0x4619d5+'%')['or'](_0x7332('0x81'),_0x4619d5+'%');}_0x4bb80d['or'](_0x7332('0x82'),_0x4619d5+'%');}}_0x4127bb[_0x7332('0x45')](_0x4bb80d);_0x4127bb[_0x7332('0x83')]('i.id');var _0x31a2e5={'type':db[_0x7332('0x84')]['QueryTypes'][_0x7332('0x85')],'raw':!![]};var _0xa92f0a=_0x4127bb[_0x7332('0x86')]();_0xa92f0a['field'](_0x7332('0x87'));_0xa92f0a['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x7332('0x60'));if(_0x4709ca[_0x7332('0x43')]){_0x4709ca[_0x7332('0x43')][_0x7332('0x32')](function(_0x1a9671){var _0x25ae2f=_0x1a9671[0x0]===_0x7332('0x88')?_0x1a9671[0x0]:'i.'+_0x1a9671[0x0];_0x4127bb['order'](_0x25ae2f,_0x1a9671[0x1]===_0x7332('0x89')?![]:!![]);});}if(!_[_0x7332('0x6f')](_0x3cab42)){_0x4127bb[_0x7332('0x62')](_0x1a46ca);_0xa92f0a[_0x7332('0x45')]('t.id\x20IN\x20?',_0x3cab42);}BPromise[_0x7332('0x8a')]()[_0x7332('0x29')](function(){if(!_0x2d6ef4){if(_0x1b2254[_0x7332('0x3d')][_0x7332('0x70')])return;_0xa92f0a[_0x7332('0x45')](_0x7332('0x8b'));_0x4127bb[_0x7332('0x45')](_0x7332('0x8b'));return;}if(_0x1b2254['user']['role']!==_0x7332('0x8c'))return;return _0x1b2254[_0x7332('0x8d')][_0x7332('0x8e')]({'attributes':['id'],'raw':!![]})[_0x7332('0x29')](function(_0x493100){if(_['isEmpty'](_0x493100)){_0xa92f0a['where'](_0x7332('0x8f'));_0x4127bb[_0x7332('0x45')](_0x7332('0x8f'));}else{_0xa92f0a['where'](_0x7332('0x71'),_[_0x7332('0x35')](_0x493100,'id'));_0x4127bb[_0x7332('0x45')]('i.FaxAccountId\x20IN\x20?',_[_0x7332('0x35')](_0x493100,'id'));}});})[_0x7332('0x29')](function(){if(_0x1b2254[_0x7332('0x8d')][_0x7332('0x90')]===_0x7332('0x8c')&&!_0x2d6ef4&&!_0x1b2254['query'][_0x7332('0x70')])return[];return db[_0x7332('0x91')][_0x7332('0x3d')](_0xa92f0a['toString'](),_0x31a2e5);})[_0x7332('0x29')](function(_0x1fc80b){_0x18fc65[_0x7332('0x24')]=_0x1fc80b['length'];if(_0x18fc65[_0x7332('0x24')]===0x0)return[];return db[_0x7332('0x91')][_0x7332('0x3d')](_0x4c7a40['toString'](),_0x31a2e5)[_0x7332('0x29')](function(_0x5d125d){_0x65b996=_[_0x7332('0x92')](_0x5d125d,'id');_0x31a2e5=_['merge'](_0x31a2e5,{'model':db[_0x7332('0x93')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1b2254[_0x7332('0x3d')][_0x7332('0x3f')]){_0x4709ca[_0x7332('0x3e')][_0x7332('0x32')](function(_0x4aa9ad){_0x4127bb[_0x7332('0x48')]('i.'+_0x4aa9ad);});}else{_0x4127bb[_0x7332('0x48')](_0x7332('0x94'),'unreadMessages');_0x4127bb[_0x7332('0x48')](_0x7332('0x95'),'Account.key');_0x4127bb[_0x7332('0x48')]('a.mandatoryDisposition',_0x7332('0x96'));_0x4127bb[_0x7332('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','contactName');_0x4127bb[_0x7332('0x48')](_0x7332('0x97'));_0x4127bb['field'](_0x7332('0x98'),_0x7332('0x99'));_0x4127bb['field']('c.lastName','Contact.lastName');_0x4127bb[_0x7332('0x48')](_0x7332('0x9a'),_0x7332('0x9b'));_0x4127bb[_0x7332('0x48')]('c.phone','Contact.phone');_0x4127bb[_0x7332('0x48')](_0x7332('0x9c'),_0x7332('0x9d'));_0x4127bb[_0x7332('0x48')]('c.fax',_0x7332('0x9e'));_0x4127bb[_0x7332('0x48')](_0x7332('0x9f'),_0x7332('0xa0'));_0x4127bb[_0x7332('0x48')](_0x7332('0xa1'),_0x7332('0xa2'));_0x4127bb[_0x7332('0x48')](_0x7332('0xa3'),_0x7332('0x30'));}if(_0x4709ca[_0x7332('0x22')])_0x4127bb[_0x7332('0x22')](_0x4709ca[_0x7332('0x22')]);if(_0x4709ca[_0x7332('0x21')])_0x4127bb['offset'](_0x4709ca[_0x7332('0x21')]);return db[_0x7332('0x91')][_0x7332('0x3d')](_0x4127bb[_0x7332('0xa4')](),_0x31a2e5);})['then'](function(_0x4931b6){if(_0x4931b6['length']>0x0)_0x4095d8['where'](_0x7332('0xa5'),_[_0x7332('0x35')](_0x4931b6,'id'));return db[_0x7332('0x91')][_0x7332('0x3d')](_0x4095d8[_0x7332('0xa4')](),_0x31a2e5)[_0x7332('0x29')](function(_0x5d6939){var _0x17f094=_['groupBy'](_0x5d6939,_0x7332('0xa6'));var _0x331726=[];_0x4931b6['forEach'](function(_0x13d316){_0x331726[_0x7332('0x33')](updateFaxInteraction(_0x13d316,_0x65b996,_0x17f094));});return BPromise[_0x7332('0xa7')](_0x331726);});});})[_0x7332('0x29')](function(_0x186b24){_0x18fc65[_0x7332('0xa8')]=_0x186b24;return _0x18fc65;})['then'](respondWithFilteredResult(_0x5eec51,_0x4709ca))[_0x7332('0x34')](handleError(_0x5eec51,null));};exports['show']=function(_0x168f71,_0xb1bee9){var _0x4bf4d1={'raw':![],'where':{'id':_0x168f71[_0x7332('0xa9')]['id']}},_0x3662f3={};_0x3662f3[_0x7332('0x39')]=_[_0x7332('0x3a')](db['FaxInteraction'][_0x7332('0x36')]);_0x3662f3[_0x7332('0x3d')]=_[_0x7332('0x3a')](_0x168f71[_0x7332('0x3d')]);_0x3662f3[_0x7332('0x3b')]=_[_0x7332('0x3c')](_0x3662f3[_0x7332('0x39')],_0x3662f3['query']);_0x4bf4d1[_0x7332('0x3e')]=_[_0x7332('0x3c')](_0x3662f3[_0x7332('0x39')],qs[_0x7332('0x3f')](_0x168f71[_0x7332('0x3d')][_0x7332('0x3f')]));_0x4bf4d1[_0x7332('0x3e')]=_0x4bf4d1[_0x7332('0x3e')][_0x7332('0x40')]?_0x4bf4d1[_0x7332('0x3e')]:_0x3662f3['model'];if(_0x168f71['query']['includeAll']){_0x4bf4d1[_0x7332('0xaa')]=[{'all':!![]}];}_0x4bf4d1=_[_0x7332('0xab')]({},_0x4bf4d1,_0x168f71['options']);return db[_0x7332('0x93')][_0x7332('0x5f')](_0x4bf4d1)['then'](handleEntityNotFound(_0xb1bee9,null))[_0x7332('0x29')](respondWithResult(_0xb1bee9,null))['catch'](handleError(_0xb1bee9,null));};exports[_0x7332('0xac')]=function(_0x900e06,_0x47ea58){return db['FaxInteraction'][_0x7332('0xac')](_0x900e06['body'],{})[_0x7332('0x29')](respondWithResult(_0x47ea58,0xc9))[_0x7332('0x34')](handleError(_0x47ea58,null));};exports['update']=function(_0x5ea53a,_0x333f11){if(_0x5ea53a[_0x7332('0x6e')]['id']){delete _0x5ea53a['body']['id'];}return db[_0x7332('0x93')][_0x7332('0x5f')]({'where':{'id':_0x5ea53a['params']['id']}})[_0x7332('0x29')](handleEntityNotFound(_0x333f11,null))[_0x7332('0x29')](saveUpdates(_0x5ea53a[_0x7332('0x6e')],null))[_0x7332('0x29')](respondWithResult(_0x333f11,null))[_0x7332('0x34')](handleError(_0x333f11,null));};exports[_0x7332('0xad')]=function(_0x87efa2,_0x589991){return db[_0x7332('0x93')][_0x7332('0x5f')]({'where':{'id':_0x87efa2['params']['id']}})['then'](handleEntityNotFound(_0x589991,null))[_0x7332('0x29')](removeEntity(_0x589991,null))[_0x7332('0x34')](handleError(_0x589991,null));};exports['describe']=function(_0x412437,_0x39644b){return db[_0x7332('0x93')][_0x7332('0xae')]()['then'](respondWithResult(_0x39644b,null))['catch'](handleError(_0x39644b,null));};exports[_0x7332('0xaf')]=function(_0x72f51d,_0x2c196a,_0xad97f){return db[_0x7332('0xb0')][_0x7332('0x5f')]({'where':{'id':_0x72f51d[_0x7332('0xa9')]['id']}})[_0x7332('0x29')](handleEntityNotFound(_0x2c196a,null))['then'](function(_0x36f066){if(_0x36f066){return _0x36f066[_0x7332('0xaf')](_0x72f51d[_0x7332('0x6e')]['ids'],_[_0x7332('0xb1')](_0x72f51d[_0x7332('0x6e')],['ids','id'])||{});}})['then'](respondWithResult(_0x2c196a,null))[_0x7332('0x34')](handleError(_0x2c196a,null));};exports['getMessages']=function(_0x297e14,_0x3bc2ea,_0xf524fa){var _0xdf3371={'raw':![],'where':{}};var _0x55b746={};var _0x26299b={'count':0x0,'rows':[]};return db[_0x7332('0x93')]['findOne']({'where':{'id':_0x297e14['params']['id']}})['then'](handleEntityNotFound(_0x3bc2ea,null))[_0x7332('0x29')](function(_0x50abd3){if(_0x50abd3){_0x55b746[_0x7332('0x39')]=_[_0x7332('0x3a')](db['FaxMessage']['rawAttributes']);_0x55b746[_0x7332('0x3d')]=_['keys'](_0x297e14[_0x7332('0x3d')]);_0x55b746[_0x7332('0x3b')]=_[_0x7332('0x3c')](_0x55b746[_0x7332('0x39')],_0x55b746['query']);_0xdf3371['attributes']=_['intersection'](_0x55b746[_0x7332('0x39')],qs[_0x7332('0x3f')](_0x297e14[_0x7332('0x3d')]['fields']));_0xdf3371[_0x7332('0x3e')]=_0xdf3371[_0x7332('0x3e')][_0x7332('0x40')]?_0xdf3371[_0x7332('0x3e')]:_0x55b746[_0x7332('0x39')];if(!_0x297e14[_0x7332('0x3d')][_0x7332('0x41')](_0x7332('0x42'))){_0xdf3371[_0x7332('0x22')]=qs[_0x7332('0x22')](_0x297e14[_0x7332('0x3d')][_0x7332('0x22')]);_0xdf3371[_0x7332('0x21')]=qs[_0x7332('0x21')](_0x297e14[_0x7332('0x3d')][_0x7332('0x21')]);}_0xdf3371['order']=qs[_0x7332('0x44')](_0x297e14[_0x7332('0x3d')][_0x7332('0x44')]);_0xdf3371[_0x7332('0x45')]=qs[_0x7332('0x3b')](_[_0x7332('0x46')](_0x297e14[_0x7332('0x3d')],_0x55b746[_0x7332('0x3b')]));_0xdf3371[_0x7332('0x45')][_0x7332('0xa6')]=_0x50abd3['id'];if(_0x297e14[_0x7332('0x3d')][_0x7332('0x7f')]){_0xdf3371['where']=_[_0x7332('0xab')](_0xdf3371[_0x7332('0x45')],{'$or':_['map'](_0xdf3371[_0x7332('0x3e')],function(_0x44a6a2){var _0x358753={};_0x358753[_0x44a6a2]={'$like':'%'+_0x297e14[_0x7332('0x3d')][_0x7332('0x7f')]+'%'};return _0x358753;})});}if(_0x297e14[_0x7332('0x3d')][_0x7332('0x75')]){var _0x5d7c5f=_0x297e14[_0x7332('0x3d')][_0x7332('0x75')][_0x7332('0x31')](',');var _0x36ce7c={};_0x36ce7c[_0x5d7c5f[0x0]]={'$gte':moment(_0x5d7c5f[0x1])[_0x7332('0xb2')]('YYYY-MM-DD\x20HH:mm:ss')};_0xdf3371[_0x7332('0x45')]=_[_0x7332('0xab')](_0xdf3371[_0x7332('0x45')],_0x36ce7c);}_0xdf3371=_[_0x7332('0xab')]({},_0xdf3371,_0x297e14['options']);return db[_0x7332('0xb0')][_0x7332('0x24')]({'where':_0xdf3371['where']})[_0x7332('0x29')](function(_0x3a78dc){_0x26299b[_0x7332('0x24')]=_0x3a78dc;if(_0x297e14['query']['includeAll']){_0xdf3371[_0x7332('0xaa')]=[{'all':!![]}];}return db[_0x7332('0xb0')][_0x7332('0xb3')](_0xdf3371);})[_0x7332('0x29')](function(_0x15736d){_0x26299b[_0x7332('0xa8')]=_0x15736d;return _0x26299b;});}})[_0x7332('0x29')](respondWithFilteredResult(_0x3bc2ea,_0xdf3371))['catch'](handleError(_0x3bc2ea,null));};exports['addTags']=function(_0x16a6ff,_0x2ad6c1,_0xae5e1f){return db['FaxInteraction'][_0x7332('0x5f')]({'where':{'id':_0x16a6ff[_0x7332('0xa9')]['id']}})[_0x7332('0x29')](handleEntityNotFound(_0x2ad6c1,null))[_0x7332('0x29')](function(_0x1a3b47){if(_0x1a3b47){return _0x1a3b47['setTags'](_0x16a6ff[_0x7332('0x6e')]['ids'],_['omit'](_0x16a6ff[_0x7332('0x6e')],[_0x7332('0xb4'),'id'])||{})[_0x7332('0xb5')](function(){return db[_0x7332('0xb6')][_0x7332('0xb3')]({'attributes':['id',_0x7332('0x2c'),'color'],'where':{'id':_0x16a6ff['body'][_0x7332('0xb4')]}});})[_0x7332('0x29')](function(_0xb827a2){socket[_0x7332('0xb7')](_0x7332('0xb8'),{'id':Number(_0x16a6ff[_0x7332('0xa9')]['id']),'tags':_0xb827a2||[]});return{'id':Number(_0x16a6ff[_0x7332('0xa9')]['id']),'tags':_0xb827a2||[]};});}})[_0x7332('0x29')](respondWithResult(_0x2ad6c1,null))[_0x7332('0x34')](handleError(_0x2ad6c1,null));};exports[_0x7332('0xb9')]=function(_0x470f08,_0x22845d,_0x134c61){return db[_0x7332('0x93')][_0x7332('0x5f')]({'where':{'id':_0x470f08['params']['id']}})[_0x7332('0x29')](handleEntityNotFound(_0x22845d,null))[_0x7332('0x29')](function(_0xcbed37){if(_0xcbed37){return _0xcbed37[_0x7332('0xb9')](_0x470f08[_0x7332('0x3d')][_0x7332('0xb4')]);}})['then'](respondWithStatusCode(_0x22845d,null))['catch'](handleError(_0x22845d,null));};exports[_0x7332('0xba')]=function(_0xecfca8,_0x19e676){var _0x5e59c4=moment()['unix']()[_0x7332('0xa4')]();var _0x58263d=path[_0x7332('0xbb')](config['root'],_0x7332('0xbc'),_0x7332('0xbd'),'tmp');var _0x52d88e=path[_0x7332('0xbb')](config['root'],_0x7332('0xbc'),_0x7332('0xbd'),'attachments');var _0x31ebe3=path[_0x7332('0xbb')](_0x58263d,_0x5e59c4);var _0x192dec=util[_0x7332('0xb2')](_0x7332('0xbe'),_0xecfca8['params']['id'],_0x5e59c4);var _0x4d45b6=path['join'](_0x58263d,_0x192dec);var _0x56b67f=[];_0x56b67f[_0x7332('0x33')]({'model':db[_0x7332('0xbf')],'as':'Attachment','raw':!![]});var _0x51a1e0=[{'model':db[_0x7332('0xb0')],'as':_0x7332('0xc0'),'attributes':['id','body',_0x7332('0x73')],'include':_0x56b67f}];return db['FaxInteraction']['find']({'where':{'id':_0xecfca8[_0x7332('0xa9')]['id']},'include':_0x51a1e0})[_0x7332('0x29')](handleEntityNotFound(_0x19e676,null))[_0x7332('0x29')](function(_0x3ae962){if(_0x3ae962&&_0x3ae962[_0x7332('0xc0')]){var _0x2e111e=_0x3ae962[_0x7332('0xc1')]({'plain':!![]});fs[_0x7332('0xc2')](_0x31ebe3);for(var _0x46e67f=0x0;_0x46e67f<_0x2e111e['Messages'][_0x7332('0x40')];_0x46e67f++){var _0x3e181b=_0x2e111e[_0x7332('0xc0')][_0x46e67f][_0x7332('0xbf')];if(_0x3e181b){var _0x583703=path[_0x7332('0xbb')](_0x52d88e,_0x3e181b[_0x7332('0xc3')]);if(fs[_0x7332('0xc4')](_0x583703)){fs[_0x7332('0xc5')](_0x583703)[_0x7332('0xc6')](fs[_0x7332('0xc7')](path[_0x7332('0xbb')](_0x31ebe3,_0x3e181b['basename'])));}}}return BPromise[_0x7332('0x8a')]()[_0x7332('0x29')](function(){return new BPromise(function(_0xc35fbd,_0x40d3ae){zipdir(_0x31ebe3,{'saveTo':_0x4d45b6},function(_0x288a19,_0x4ea667){if(_0x288a19)return _0x40d3ae(_0x288a19);return _0xc35fbd(_0x4ea667);});})['then'](function(){return new BPromise(function(_0x26e02e,_0x530c71){rimraf(_0x31ebe3,function(_0x26f28d){if(_0x26f28d)_0x530c71(_0x26f28d);return _0x26e02e();});});})[_0x7332('0x29')](function(){return _0x19e676['download'](_0x4d45b6,_0x192dec,function(_0x5c551f){if(_0x5c551f){console[_0x7332('0xc8')]('err',_0x5c551f);}else{fs['unlinkSync'](_0x4d45b6);}});});});}else{return _0x19e676[_0x7332('0x1d')](0xc8);}})[_0x7332('0x34')](handleError(_0x19e676,null));};
\ No newline at end of file
+var _0x8f91=['update','then','destroy','error','name','send','fullname','TagIds','Tags','forEach','push','catch','index','map','FaxInteraction','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','length','nolimit','order','sort','where','filters','select','field','color','from','tools_tags','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','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','value','having','Contact','$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','Tag','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','start','body','some','compact','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','createdAt','parse','$lte','null','\x20=\x20?','read','isArray','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','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','i.*','c.lastName','c.email','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.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','rows','params','keys','includeAll','include','options','create','describe','addMessage','FaxMessage','ids','getMessages','findOne','hasOwnProperty','pick','$gte','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','omit','spread','findAll','emit','removeTags','download','unix','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','existsSync','createReadStream','createWriteStream','log','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save'];(function(_0x379e6d,_0x621323){var _0x3fc7d0=function(_0x5d22ac){while(--_0x5d22ac){_0x379e6d['push'](_0x379e6d['shift']());}};_0x3fc7d0(++_0x621323);}(_0x8f91,0xb0));var _0x18f9=function(_0x5bc08d,_0x2036b5){_0x5bc08d=_0x5bc08d-0x0;var _0x16239c=_0x8f91[_0x5bc08d];return _0x16239c;};'use strict';var emlformat=require(_0x18f9('0x0'));var rimraf=require(_0x18f9('0x1'));var zipdir=require(_0x18f9('0x2'));var jsonpatch=require(_0x18f9('0x3'));var rp=require(_0x18f9('0x4'));var moment=require(_0x18f9('0x5'));var BPromise=require(_0x18f9('0x6'));var Mustache=require(_0x18f9('0x7'));var util=require(_0x18f9('0x8'));var path=require(_0x18f9('0x9'));var sox=require(_0x18f9('0xa'));var csv=require('to-csv');var ejs=require(_0x18f9('0xb'));var fs=require('fs');var fs_extra=require(_0x18f9('0xc'));var _=require(_0x18f9('0xd'));var squel=require(_0x18f9('0xe'));var crypto=require(_0x18f9('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x18f9('0x10'));var toCsv=require(_0x18f9('0x11'));var querystring=require(_0x18f9('0x12'));var Papa=require(_0x18f9('0x13'));var Redis=require(_0x18f9('0x14'));var authService=require(_0x18f9('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x18f9('0x16'));var hardwareService=require(_0x18f9('0x17'));var logger=require(_0x18f9('0x18'))(_0x18f9('0x19'));var utils=require('../../config/utils');var config=require(_0x18f9('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x18f9('0x1b'))['db'];config[_0x18f9('0x1c')]=_['defaults'](config[_0x18f9('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x18f9('0x1d'))(new Redis(config[_0x18f9('0x1c')]));require('./faxInteraction.socket')['register'](socket);function respondWithStatusCode(_0x5a121b,_0x43c270){_0x43c270=_0x43c270||0xcc;return function(_0x275fe7){if(_0x275fe7){return _0x5a121b[_0x18f9('0x1e')](_0x43c270);}return _0x5a121b[_0x18f9('0x1f')](_0x43c270)[_0x18f9('0x20')]();};}function respondWithResult(_0x232673,_0x4d8d97){_0x4d8d97=_0x4d8d97||0xc8;return function(_0x2acc5b){if(_0x2acc5b){return _0x232673[_0x18f9('0x1f')](_0x4d8d97)[_0x18f9('0x21')](_0x2acc5b);}};}function respondWithFilteredResult(_0x235582,_0x521205){return function(_0x1f2443){if(_0x1f2443){var _0x44dc65=typeof _0x521205['offset']===_0x18f9('0x22')&&typeof _0x521205[_0x18f9('0x23')]===_0x18f9('0x22');var _0x256016=_0x1f2443[_0x18f9('0x24')];var _0x330e30=_0x44dc65?0x0:_0x521205[_0x18f9('0x25')];var _0x27a207=_0x44dc65?_0x1f2443[_0x18f9('0x24')]:_0x521205[_0x18f9('0x25')]+_0x521205[_0x18f9('0x23')];var _0x1669d8;if(_0x27a207>=_0x256016){_0x27a207=_0x256016;_0x1669d8=0xc8;}else{_0x1669d8=0xce;}_0x235582[_0x18f9('0x1f')](_0x1669d8);return _0x235582[_0x18f9('0x26')](_0x18f9('0x27'),_0x330e30+'-'+_0x27a207+'/'+_0x256016)[_0x18f9('0x21')](_0x1f2443);}return null;};}function patchUpdates(_0x324c1c){return function(_0x493530){try{jsonpatch[_0x18f9('0x28')](_0x493530,_0x324c1c,!![]);}catch(_0x128a24){return BPromise[_0x18f9('0x29')](_0x128a24);}return _0x493530[_0x18f9('0x2a')]();};}function saveUpdates(_0x44d370,_0x3e9d41){return function(_0x5b66a4){if(_0x5b66a4){return _0x5b66a4[_0x18f9('0x2b')](_0x44d370)[_0x18f9('0x2c')](function(_0x12d903){return _0x12d903;});}return null;};}function removeEntity(_0x430d0b,_0x3efd7e){return function(_0x28fa42){if(_0x28fa42){return _0x28fa42[_0x18f9('0x2d')]()[_0x18f9('0x2c')](function(){_0x430d0b[_0x18f9('0x1f')](0xcc)[_0x18f9('0x20')]();});}};}function handleEntityNotFound(_0x47fb4e,_0x2dbc7a){return function(_0x9f3917){if(!_0x9f3917){_0x47fb4e[_0x18f9('0x1e')](0x194);}return _0x9f3917;};}function handleError(_0x3d4dda,_0x4190cb){_0x4190cb=_0x4190cb||0x1f4;return function(_0x4c7856){logger[_0x18f9('0x2e')](_0x4c7856['stack']);if(_0x4c7856[_0x18f9('0x2f')]){delete _0x4c7856['name'];}_0x3d4dda[_0x18f9('0x1f')](_0x4190cb)[_0x18f9('0x30')](_0x4c7856);};}function getInteractionUsers(_0x5a1cb2,_0x47ad66){return new BPromise(function(_0x3cacf2,_0x2a4ba4){try{if(_0x47ad66[_0x5a1cb2['id']]){_0x5a1cb2['Users']=_['map'](_0x47ad66[_0x5a1cb2['id']],function(_0x11411d){return{'id':_0x11411d['id'],'fullname':_0x11411d[_0x18f9('0x31')]};});}}catch(_0x1485a3){_0x2a4ba4(_0x1485a3);}_0x3cacf2(_0x5a1cb2);});}function getInteractionTags(_0x4cb5d6,_0x4886e5){return new BPromise(function(_0x4e0ca6,_0x399af8){try{if(_0x4cb5d6[_0x18f9('0x32')]){_0x4cb5d6[_0x18f9('0x33')]=[];_0x4cb5d6['TagIds']['split'](',')[_0x18f9('0x34')](function(_0x3c0dbf){_0x4cb5d6[_0x18f9('0x33')][_0x18f9('0x35')](_0x4886e5[_0x3c0dbf]);});}delete _0x4cb5d6[_0x18f9('0x32')];}catch(_0x372087){_0x399af8(_0x372087);}_0x4e0ca6(_0x4cb5d6);});}function updateFaxInteraction(_0x2dd030,_0x563cea,_0x538b03){return new BPromise(function(_0x21ddf7,_0x12ea5a){return getInteractionUsers(_0x2dd030,_0x538b03)[_0x18f9('0x2c')](function(_0xf584e2){return getInteractionTags(_0xf584e2,_0x563cea);})[_0x18f9('0x2c')](function(_0x2ab292){_0x21ddf7(_0x2ab292);})[_0x18f9('0x36')](function(_0x452f7b){_0x12ea5a(_0x452f7b);});});}exports[_0x18f9('0x37')]=function(_0xa8223c,_0x24d934){var _0x562c79={},_0x1d4dd4={},_0x337a67={'count':0x0,'rows':[]};var _0x26a6b5=_[_0x18f9('0x38')](db[_0x18f9('0x39')][_0x18f9('0x3a')],function(_0x943277){return{'name':_0x943277[_0x18f9('0x3b')],'type':_0x943277[_0x18f9('0x3c')][_0x18f9('0x3d')]};});_0x1d4dd4[_0x18f9('0x3e')]=_[_0x18f9('0x38')](_0x26a6b5,_0x18f9('0x2f'));_0x1d4dd4[_0x18f9('0x3f')]=_['keys'](_0xa8223c[_0x18f9('0x3f')]);_0x1d4dd4['filters']=_['intersection'](_0x1d4dd4[_0x18f9('0x3e')],_0x1d4dd4['query']);_0x562c79[_0x18f9('0x40')]=_[_0x18f9('0x41')](_0x1d4dd4[_0x18f9('0x3e')],qs[_0x18f9('0x42')](_0xa8223c[_0x18f9('0x3f')]['fields']));_0x562c79[_0x18f9('0x40')]=_0x562c79[_0x18f9('0x40')][_0x18f9('0x43')]?_0x562c79['attributes']:_0x1d4dd4[_0x18f9('0x3e')];if(!_0xa8223c['query']['hasOwnProperty'](_0x18f9('0x44'))){_0x562c79[_0x18f9('0x23')]=qs[_0x18f9('0x23')](_0xa8223c['query'][_0x18f9('0x23')]);_0x562c79[_0x18f9('0x25')]=qs[_0x18f9('0x25')](_0xa8223c[_0x18f9('0x3f')]['offset']);}_0x562c79[_0x18f9('0x45')]=qs[_0x18f9('0x46')](_0xa8223c[_0x18f9('0x3f')]['sort']);_0x562c79[_0x18f9('0x47')]=qs[_0x18f9('0x48')](_['pick'](_0xa8223c[_0x18f9('0x3f')],_0x1d4dd4[_0x18f9('0x48')]),_0x26a6b5);var _0x540001=[];var _0x50b51c=squel[_0x18f9('0x49')]()[_0x18f9('0x4a')]('id')['field'](_0x18f9('0x2f'))[_0x18f9('0x4a')](_0x18f9('0x4b'))[_0x18f9('0x4c')](_0x18f9('0x4d'));var _0x879903=squel[_0x18f9('0x49')]()[_0x18f9('0x4a')](_0x18f9('0x4e'))[_0x18f9('0x4a')](_0x18f9('0x4f'))[_0x18f9('0x4a')](_0x18f9('0x50'))['from'](_0x18f9('0x51'),'ui')[_0x18f9('0x52')](_0x18f9('0x53'),'u',_0x18f9('0x54'));var _0x49c839=squel[_0x18f9('0x49')]()[_0x18f9('0x4c')](_0x18f9('0x55'),'i')['left_join'](_0x18f9('0x56'),'c',_0x18f9('0x57'))['left_join']('users','o','o.id\x20=\x20i.UserId')[_0x18f9('0x52')](_0x18f9('0x58'),'a',_0x18f9('0x59'))[_0x18f9('0x52')]('fax_messages','me',_0x18f9('0x5a'))['left_join'](_0x18f9('0x5b'),'it',_0x18f9('0x5c'))[_0x18f9('0x52')](_0x18f9('0x4d'),'t',_0x18f9('0x5d'));var _0x1d42cb=squel[_0x18f9('0x5e')]();var _0x2dc73c=[];var _0x188e9f=squel[_0x18f9('0x5e')]();var _0x20aed9;if(_0xa8223c[_0x18f9('0x3f')][_0x18f9('0x5f')]){_0x20aed9=as['parseSearch'](_0xa8223c[_0x18f9('0x3f')][_0x18f9('0x5f')]);var _0x1f3417=_0x20aed9[_0x18f9('0x60')];for(var _0x13f60a=0x0;_0x13f60a<_0x20aed9[_0x18f9('0x61')][_0x18f9('0x43')];_0x13f60a++){var _0x5cdfbb=_0x20aed9[_0x18f9('0x61')][_0x13f60a];var _0x28ef91='i';var _0x2a3cf2=_[_0x18f9('0x62')](_0x26a6b5,[_0x18f9('0x2f'),_0x5cdfbb['field']]);if(!_0x2a3cf2){switch(_0x5cdfbb[_0x18f9('0x4a')]){case _0x18f9('0x63'):if(_0x5cdfbb[_0x18f9('0x64')]==0x1){_0x49c839[_0x18f9('0x65')]('`'+_0x5cdfbb[_0x18f9('0x4a')]+'`\x20=\x200');}else{_0x49c839[_0x18f9('0x65')]('`'+_0x5cdfbb[_0x18f9('0x4a')]+'`\x20>\x200');}break;case _0x18f9('0x66'):if(_0x5cdfbb['operator']===_0x18f9('0x67')){if(_0x5cdfbb[_0x18f9('0x64')][_0x18f9('0x68')]('\x20')[_0x18f9('0x43')]>0x1){_0x1d42cb[_0x1f3417](_0x18f9('0x69'),qs[_0x18f9('0x6a')](_0x5cdfbb[_0x18f9('0x64')]),null);}else{var _0x4d4927='%'+_0x5cdfbb[_0x18f9('0x64')]+'%';_0x1d42cb[_0x1f3417](_0x18f9('0x6b'),_0x4d4927,_0x4d4927,_0x4d4927);}}else{_0x2a3cf2=_[_0x18f9('0x62')](_0x26a6b5,['name',_0x18f9('0x6c')]);_0x5cdfbb['field']='ContactId';_0xa89663=as[_0x18f9('0x6d')](_0x28ef91,_0x2a3cf2['type'],_0x5cdfbb);_0x1d42cb[_0x1f3417](_0xa89663['text'],_0xa89663['value']['start'],_0xa89663[_0x18f9('0x64')][_0x18f9('0x20')]);}break;case _0x18f9('0x6e'):var _0x3453b5=_0x5cdfbb['value'][_0x18f9('0x68')](',')[_0x18f9('0x38')](function(_0xae7cf8){return Number(_0xae7cf8);});_0x3453b5[_0x18f9('0x34')](function(_0x1dc0ad){_0x188e9f['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1dc0ad+',%');});_0x2dc73c=_[_0x18f9('0x6f')](_0x2dc73c,_0x3453b5);break;case'User':if(_0x5cdfbb['operator']===_0x18f9('0x67')){_0x1d42cb[_0x1f3417](_0x18f9('0x70'),'%'+_0x5cdfbb[_0x18f9('0x64')]+'%',null);}else{_0x2a3cf2=_[_0x18f9('0x62')](_0x26a6b5,[_0x18f9('0x2f'),'UserId']);_0x5cdfbb[_0x18f9('0x4a')]=_0x18f9('0x71');_0xa89663=as[_0x18f9('0x6d')](_0x28ef91,_0x2a3cf2['type'],_0x5cdfbb);_0x1d42cb[_0x1f3417](_0xa89663[_0x18f9('0x72')],_0xa89663[_0x18f9('0x64')][_0x18f9('0x73')],_0xa89663[_0x18f9('0x64')]['end']);}break;case _0x18f9('0x74'):_0xa89663=as[_0x18f9('0x6d')]('me',null,_0x5cdfbb);_0x1d42cb[_0x1f3417](_0xa89663['text'],_0xa89663[_0x18f9('0x64')][_0x18f9('0x73')],_0xa89663[_0x18f9('0x64')]['end']);break;}}else{var _0xa89663=as[_0x18f9('0x6d')](_0x28ef91,_0x2a3cf2['type'],_0x5cdfbb);_0x1d42cb[_0x1f3417](_0xa89663[_0x18f9('0x72')],_0xa89663[_0x18f9('0x64')]['start'],_0xa89663[_0x18f9('0x64')][_0x18f9('0x20')]);}}}else{var _0x52b392=_(_0xa8223c[_0x18f9('0x3f')])['keys']()[_0x18f9('0x38')](function(_0x3e8d67){return _[_0x18f9('0x75')](_0x26a6b5,[_0x18f9('0x2f'),_0x3e8d67])?_0x3e8d67:undefined;})[_0x18f9('0x76')]()[_0x18f9('0x64')]();if(!_[_0x18f9('0x77')](_0x52b392)){_0x52b392[_0x18f9('0x34')](function(_0x4fb7ff){if(_0x4fb7ff===_0x18f9('0x78')){_0x49c839[_0x18f9('0x47')](_0x18f9('0x79'),[]['concat'](_0xa8223c[_0x18f9('0x3f')][_0x4fb7ff]));}else if(_0x4fb7ff===_0x18f9('0x7a')){var _0x175a21=JSON[_0x18f9('0x7b')](_0xa8223c['query'][_0x4fb7ff])['$gte'];var _0x50133f=JSON['parse'](_0xa8223c[_0x18f9('0x3f')][_0x4fb7ff])[_0x18f9('0x7c')];_0x49c839['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x175a21,_0x50133f);}else{if(_0xa8223c[_0x18f9('0x3f')][_0x4fb7ff]===_0x18f9('0x7d')){_0x49c839['where']('i.'+_0x4fb7ff+'\x20IS\x20NULL');}else{_0x49c839[_0x18f9('0x47')]('i.'+_0x4fb7ff+_0x18f9('0x7e'),_0xa8223c[_0x18f9('0x3f')][_0x4fb7ff]);}}});}if(_0xa8223c[_0x18f9('0x3f')]['read']){if(_0xa8223c[_0x18f9('0x3f')][_0x18f9('0x7f')]==0x1){_0x49c839['having']('`unreadMessages`\x20=\x200');}else{_0x49c839[_0x18f9('0x65')]('`unreadMessages`\x20>\x200');}}if(_0xa8223c[_0x18f9('0x3f')]['tag']){_0x2dc73c=_[_0x18f9('0x80')](_0xa8223c[_0x18f9('0x3f')][_0x18f9('0x81')])?_0xa8223c[_0x18f9('0x3f')][_0x18f9('0x81')]:new Array(_0xa8223c['query'][_0x18f9('0x81')]);_0x2dc73c[_0x18f9('0x34')](function(_0x430ab6){_0x188e9f['or'](_0x18f9('0x82'),'%,'+_0x430ab6+',%');});}if(_0xa8223c[_0x18f9('0x3f')][_0x18f9('0x83')]){var _0x4e386e=_0xa8223c[_0x18f9('0x3f')][_0x18f9('0x83')][_0x18f9('0x84')]('\x5c','\x5c\x5c')[_0x18f9('0x84')](/'/g,'\x27\x27');if(qs[_0x18f9('0x85')](_0x4e386e)){_0x1d42cb['or'](_0x18f9('0x86'),_0x4e386e+'%')['or'](_0x18f9('0x87'),_0x4e386e+'%');}_0x1d42cb['or'](_0x18f9('0x88'),_0x4e386e+'%');}}_0x49c839['where'](_0x1d42cb);_0x49c839[_0x18f9('0x89')]('i.id');var _0x2809da={'type':db[_0x18f9('0x8a')]['QueryTypes'][_0x18f9('0x8b')],'raw':!![]};var _0x41ef5c=_0x49c839[_0x18f9('0x8c')]();_0x41ef5c['field'](_0x18f9('0x8d'));_0x41ef5c[_0x18f9('0x4a')](_0x18f9('0x8e'),_0x18f9('0x63'));if(_0x562c79[_0x18f9('0x45')]){_0x562c79[_0x18f9('0x45')][_0x18f9('0x34')](function(_0x1e79de){var _0x278c50=_0x1e79de[0x0]===_0x18f9('0x8f')?_0x1e79de[0x0]:'i.'+_0x1e79de[0x0];_0x49c839['order'](_0x278c50,_0x1e79de[0x1]==='DESC'?![]:!![]);});}if(!_[_0x18f9('0x77')](_0x2dc73c)){_0x49c839[_0x18f9('0x65')](_0x188e9f);_0x41ef5c[_0x18f9('0x47')]('t.id\x20IN\x20?',_0x2dc73c);}BPromise[_0x18f9('0x90')]()['then'](function(){if(!_0x20aed9){if(_0xa8223c[_0x18f9('0x3f')][_0x18f9('0x78')])return;_0x41ef5c[_0x18f9('0x47')](_0x18f9('0x91'));_0x49c839[_0x18f9('0x47')](_0x18f9('0x91'));return;}if(_0xa8223c[_0x18f9('0x92')][_0x18f9('0x93')]!==_0x18f9('0x94'))return;return _0xa8223c['user'][_0x18f9('0x95')]({'attributes':['id'],'raw':!![]})[_0x18f9('0x2c')](function(_0x530fce){if(_['isEmpty'](_0x530fce)){_0x41ef5c['where']('i.FaxAccountId\x20IS\x20NULL');_0x49c839[_0x18f9('0x47')](_0x18f9('0x96'));}else{_0x41ef5c[_0x18f9('0x47')](_0x18f9('0x79'),_[_0x18f9('0x38')](_0x530fce,'id'));_0x49c839[_0x18f9('0x47')]('i.FaxAccountId\x20IN\x20?',_[_0x18f9('0x38')](_0x530fce,'id'));}});})[_0x18f9('0x2c')](function(){if(_0xa8223c['user'][_0x18f9('0x93')]===_0x18f9('0x94')&&!_0x20aed9&&!_0xa8223c[_0x18f9('0x3f')][_0x18f9('0x78')])return[];return db[_0x18f9('0x97')][_0x18f9('0x3f')](_0x41ef5c[_0x18f9('0x98')](),_0x2809da);})[_0x18f9('0x2c')](function(_0x477707){_0x337a67[_0x18f9('0x24')]=_0x477707[_0x18f9('0x43')];if(_0x337a67[_0x18f9('0x24')]===0x0)return[];return db[_0x18f9('0x97')][_0x18f9('0x3f')](_0x50b51c[_0x18f9('0x98')](),_0x2809da)[_0x18f9('0x2c')](function(_0x195ac0){_0x540001=_[_0x18f9('0x99')](_0x195ac0,'id');_0x2809da=_[_0x18f9('0x9a')](_0x2809da,{'model':db[_0x18f9('0x39')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xa8223c[_0x18f9('0x3f')]['fields']){_0x562c79[_0x18f9('0x40')][_0x18f9('0x34')](function(_0x292917){_0x49c839[_0x18f9('0x4a')]('i.'+_0x292917);});}else{_0x49c839[_0x18f9('0x4a')](_0x18f9('0x8e'),_0x18f9('0x63'));_0x49c839[_0x18f9('0x4a')]('a.key',_0x18f9('0x9b'));_0x49c839[_0x18f9('0x4a')](_0x18f9('0x9c'),'Account.mandatoryDisposition');_0x49c839[_0x18f9('0x4a')](_0x18f9('0x9d'),_0x18f9('0x8f'));_0x49c839[_0x18f9('0x4a')](_0x18f9('0x9e'));_0x49c839[_0x18f9('0x4a')]('c.firstName','Contact.firstName');_0x49c839['field'](_0x18f9('0x9f'),'Contact.lastName');_0x49c839[_0x18f9('0x4a')](_0x18f9('0xa0'),_0x18f9('0xa1'));_0x49c839[_0x18f9('0x4a')](_0x18f9('0xa2'),_0x18f9('0xa3'));_0x49c839[_0x18f9('0x4a')](_0x18f9('0xa4'),_0x18f9('0xa5'));_0x49c839[_0x18f9('0x4a')](_0x18f9('0xa6'),'Contact.fax');_0x49c839[_0x18f9('0x4a')](_0x18f9('0xa7'),_0x18f9('0xa8'));_0x49c839[_0x18f9('0x4a')](_0x18f9('0xa9'),_0x18f9('0xaa'));_0x49c839[_0x18f9('0x4a')](_0x18f9('0xab'),_0x18f9('0x32'));}if(_0x562c79[_0x18f9('0x23')])_0x49c839[_0x18f9('0x23')](_0x562c79[_0x18f9('0x23')]);if(_0x562c79[_0x18f9('0x25')])_0x49c839[_0x18f9('0x25')](_0x562c79[_0x18f9('0x25')]);return db['sequelize']['query'](_0x49c839[_0x18f9('0x98')](),_0x2809da);})[_0x18f9('0x2c')](function(_0x26a19a){if(_0x26a19a[_0x18f9('0x43')]>0x0)_0x879903[_0x18f9('0x47')](_0x18f9('0xac'),_['map'](_0x26a19a,'id'));return db[_0x18f9('0x97')][_0x18f9('0x3f')](_0x879903[_0x18f9('0x98')](),_0x2809da)[_0x18f9('0x2c')](function(_0xc1bfcd){var _0x347b79=_[_0x18f9('0xad')](_0xc1bfcd,_0x18f9('0xae'));var _0x2abd00=[];_0x26a19a[_0x18f9('0x34')](function(_0x447338){_0x2abd00[_0x18f9('0x35')](updateFaxInteraction(_0x447338,_0x540001,_0x347b79));});return BPromise[_0x18f9('0xaf')](_0x2abd00);});});})[_0x18f9('0x2c')](function(_0x5c9444){_0x337a67[_0x18f9('0xb0')]=_0x5c9444;return _0x337a67;})[_0x18f9('0x2c')](respondWithFilteredResult(_0x24d934,_0x562c79))[_0x18f9('0x36')](handleError(_0x24d934,null));};exports['show']=function(_0x445fb4,_0x311f09){var _0x112965={'raw':![],'where':{'id':_0x445fb4[_0x18f9('0xb1')]['id']}},_0x2d3e06={};_0x2d3e06[_0x18f9('0x3e')]=_[_0x18f9('0xb2')](db['FaxInteraction'][_0x18f9('0x3a')]);_0x2d3e06['query']=_['keys'](_0x445fb4[_0x18f9('0x3f')]);_0x2d3e06[_0x18f9('0x48')]=_[_0x18f9('0x41')](_0x2d3e06['model'],_0x2d3e06[_0x18f9('0x3f')]);_0x112965['attributes']=_[_0x18f9('0x41')](_0x2d3e06[_0x18f9('0x3e')],qs[_0x18f9('0x42')](_0x445fb4[_0x18f9('0x3f')]['fields']));_0x112965[_0x18f9('0x40')]=_0x112965['attributes'][_0x18f9('0x43')]?_0x112965[_0x18f9('0x40')]:_0x2d3e06['model'];if(_0x445fb4[_0x18f9('0x3f')][_0x18f9('0xb3')]){_0x112965[_0x18f9('0xb4')]=[{'all':!![]}];}_0x112965=_['merge']({},_0x112965,_0x445fb4[_0x18f9('0xb5')]);return db[_0x18f9('0x39')][_0x18f9('0x62')](_0x112965)[_0x18f9('0x2c')](handleEntityNotFound(_0x311f09,null))[_0x18f9('0x2c')](respondWithResult(_0x311f09,null))[_0x18f9('0x36')](handleError(_0x311f09,null));};exports[_0x18f9('0xb6')]=function(_0xc7dbec,_0x59effc){return db[_0x18f9('0x39')][_0x18f9('0xb6')](_0xc7dbec[_0x18f9('0x74')],{})[_0x18f9('0x2c')](respondWithResult(_0x59effc,0xc9))[_0x18f9('0x36')](handleError(_0x59effc,null));};exports['update']=function(_0x4948a4,_0x2aa72e){if(_0x4948a4['body']['id']){delete _0x4948a4['body']['id'];}return db[_0x18f9('0x39')][_0x18f9('0x62')]({'where':{'id':_0x4948a4[_0x18f9('0xb1')]['id']}})['then'](handleEntityNotFound(_0x2aa72e,null))['then'](saveUpdates(_0x4948a4[_0x18f9('0x74')],null))[_0x18f9('0x2c')](respondWithResult(_0x2aa72e,null))[_0x18f9('0x36')](handleError(_0x2aa72e,null));};exports[_0x18f9('0x2d')]=function(_0x521fd8,_0x5ad424){return db[_0x18f9('0x39')][_0x18f9('0x62')]({'where':{'id':_0x521fd8[_0x18f9('0xb1')]['id']}})[_0x18f9('0x2c')](handleEntityNotFound(_0x5ad424,null))[_0x18f9('0x2c')](removeEntity(_0x5ad424,null))[_0x18f9('0x36')](handleError(_0x5ad424,null));};exports[_0x18f9('0xb7')]=function(_0x33d586,_0xe90681){return db[_0x18f9('0x39')]['describe']()[_0x18f9('0x2c')](respondWithResult(_0xe90681,null))[_0x18f9('0x36')](handleError(_0xe90681,null));};exports[_0x18f9('0xb8')]=function(_0x305809,_0x1514bc,_0x12d5cd){return db[_0x18f9('0xb9')]['find']({'where':{'id':_0x305809[_0x18f9('0xb1')]['id']}})['then'](handleEntityNotFound(_0x1514bc,null))[_0x18f9('0x2c')](function(_0x62a682){if(_0x62a682){return _0x62a682['addMessage'](_0x305809[_0x18f9('0x74')][_0x18f9('0xba')],_['omit'](_0x305809['body'],[_0x18f9('0xba'),'id'])||{});}})[_0x18f9('0x2c')](respondWithResult(_0x1514bc,null))[_0x18f9('0x36')](handleError(_0x1514bc,null));};exports[_0x18f9('0xbb')]=function(_0x28bb2b,_0x27e084,_0x168cd7){var _0x415fae={'raw':![],'where':{}};var _0x1fe279={};var _0x12e215={'count':0x0,'rows':[]};return db[_0x18f9('0x39')][_0x18f9('0xbc')]({'where':{'id':_0x28bb2b[_0x18f9('0xb1')]['id']}})[_0x18f9('0x2c')](handleEntityNotFound(_0x27e084,null))[_0x18f9('0x2c')](function(_0x6357e8){if(_0x6357e8){_0x1fe279[_0x18f9('0x3e')]=_[_0x18f9('0xb2')](db[_0x18f9('0xb9')][_0x18f9('0x3a')]);_0x1fe279[_0x18f9('0x3f')]=_[_0x18f9('0xb2')](_0x28bb2b[_0x18f9('0x3f')]);_0x1fe279[_0x18f9('0x48')]=_[_0x18f9('0x41')](_0x1fe279[_0x18f9('0x3e')],_0x1fe279[_0x18f9('0x3f')]);_0x415fae[_0x18f9('0x40')]=_[_0x18f9('0x41')](_0x1fe279[_0x18f9('0x3e')],qs[_0x18f9('0x42')](_0x28bb2b[_0x18f9('0x3f')][_0x18f9('0x42')]));_0x415fae['attributes']=_0x415fae[_0x18f9('0x40')][_0x18f9('0x43')]?_0x415fae['attributes']:_0x1fe279[_0x18f9('0x3e')];if(!_0x28bb2b['query'][_0x18f9('0xbd')]('nolimit')){_0x415fae[_0x18f9('0x23')]=qs[_0x18f9('0x23')](_0x28bb2b[_0x18f9('0x3f')][_0x18f9('0x23')]);_0x415fae[_0x18f9('0x25')]=qs[_0x18f9('0x25')](_0x28bb2b[_0x18f9('0x3f')]['offset']);}_0x415fae['order']=qs['sort'](_0x28bb2b[_0x18f9('0x3f')][_0x18f9('0x46')]);_0x415fae[_0x18f9('0x47')]=qs[_0x18f9('0x48')](_[_0x18f9('0xbe')](_0x28bb2b[_0x18f9('0x3f')],_0x1fe279[_0x18f9('0x48')]));_0x415fae[_0x18f9('0x47')][_0x18f9('0xae')]=_0x6357e8['id'];if(_0x28bb2b['query'][_0x18f9('0x83')]){_0x415fae[_0x18f9('0x47')]=_['merge'](_0x415fae[_0x18f9('0x47')],{'$or':_[_0x18f9('0x38')](_0x415fae[_0x18f9('0x40')],function(_0x342d77){var _0x4557f5={};_0x4557f5[_0x342d77]={'$like':'%'+_0x28bb2b[_0x18f9('0x3f')][_0x18f9('0x83')]+'%'};return _0x4557f5;})});}if(_0x28bb2b[_0x18f9('0x3f')][_0x18f9('0xbf')]){var _0x348055=_0x28bb2b['query'][_0x18f9('0xbf')][_0x18f9('0x68')](',');var _0xcd5fad={};_0xcd5fad[_0x348055[0x0]]={'$gte':moment(_0x348055[0x1])[_0x18f9('0xc0')](_0x18f9('0xc1'))};_0x415fae[_0x18f9('0x47')]=_[_0x18f9('0x9a')](_0x415fae[_0x18f9('0x47')],_0xcd5fad);}_0x415fae=_['merge']({},_0x415fae,_0x28bb2b[_0x18f9('0xb5')]);return db[_0x18f9('0xb9')][_0x18f9('0x24')]({'where':_0x415fae[_0x18f9('0x47')]})[_0x18f9('0x2c')](function(_0x36d65c){_0x12e215[_0x18f9('0x24')]=_0x36d65c;if(_0x28bb2b[_0x18f9('0x3f')][_0x18f9('0xb3')]){_0x415fae['include']=[{'all':!![]}];}return db[_0x18f9('0xb9')]['findAll'](_0x415fae);})[_0x18f9('0x2c')](function(_0x2163bc){_0x12e215[_0x18f9('0xb0')]=_0x2163bc;return _0x12e215;});}})['then'](respondWithFilteredResult(_0x27e084,_0x415fae))['catch'](handleError(_0x27e084,null));};exports[_0x18f9('0xc2')]=function(_0xcebed8,_0x51e972,_0x4a0d6e){return db[_0x18f9('0x39')][_0x18f9('0x62')]({'where':{'id':_0xcebed8['params']['id']}})[_0x18f9('0x2c')](handleEntityNotFound(_0x51e972,null))['then'](function(_0x30991d){if(_0x30991d){return _0x30991d[_0x18f9('0xc3')](_0xcebed8[_0x18f9('0x74')][_0x18f9('0xba')],_[_0x18f9('0xc4')](_0xcebed8[_0x18f9('0x74')],[_0x18f9('0xba'),'id'])||{})[_0x18f9('0xc5')](function(){return db[_0x18f9('0x6e')][_0x18f9('0xc6')]({'attributes':['id','name',_0x18f9('0x4b')],'where':{'id':_0xcebed8[_0x18f9('0x74')][_0x18f9('0xba')]}});})['then'](function(_0x29137d){socket[_0x18f9('0xc7')]('faxInteractionTags:save',{'id':Number(_0xcebed8['params']['id']),'tags':_0x29137d||[]});return{'id':Number(_0xcebed8['params']['id']),'tags':_0x29137d||[]};});}})[_0x18f9('0x2c')](respondWithResult(_0x51e972,null))['catch'](handleError(_0x51e972,null));};exports[_0x18f9('0xc8')]=function(_0x596330,_0x3cb045,_0x4f3fe2){return db[_0x18f9('0x39')]['find']({'where':{'id':_0x596330['params']['id']}})[_0x18f9('0x2c')](handleEntityNotFound(_0x3cb045,null))[_0x18f9('0x2c')](function(_0x493446){if(_0x493446){return _0x493446[_0x18f9('0xc8')](_0x596330[_0x18f9('0x3f')]['ids']);}})[_0x18f9('0x2c')](respondWithStatusCode(_0x3cb045,null))[_0x18f9('0x36')](handleError(_0x3cb045,null));};exports[_0x18f9('0xc9')]=function(_0x213362,_0x593684){var _0x1f0349=moment()[_0x18f9('0xca')]()[_0x18f9('0x98')]();var _0x40b847=path[_0x18f9('0xcb')](config[_0x18f9('0xcc')],_0x18f9('0xcd'),'files',_0x18f9('0xce'));var _0x23ec5d=path[_0x18f9('0xcb')](config['root'],_0x18f9('0xcd'),_0x18f9('0xcf'),_0x18f9('0xd0'));var _0x2f2b2e=path['join'](_0x40b847,_0x1f0349);var _0x2e8cae=util[_0x18f9('0xc0')](_0x18f9('0xd1'),_0x213362[_0x18f9('0xb1')]['id'],_0x1f0349);var _0xa56dea=path[_0x18f9('0xcb')](_0x40b847,_0x2e8cae);var _0x3b76b6=[];_0x3b76b6[_0x18f9('0x35')]({'model':db['Attachment'],'as':_0x18f9('0xd2'),'raw':!![]});var _0x5b2772=[{'model':db[_0x18f9('0xb9')],'as':'Messages','attributes':['id',_0x18f9('0x74'),_0x18f9('0x7a')],'include':_0x3b76b6}];return db[_0x18f9('0x39')][_0x18f9('0x62')]({'where':{'id':_0x213362[_0x18f9('0xb1')]['id']},'include':_0x5b2772})[_0x18f9('0x2c')](handleEntityNotFound(_0x593684,null))['then'](function(_0x176d29){if(_0x176d29&&_0x176d29[_0x18f9('0xd3')]){var _0x135949=_0x176d29[_0x18f9('0xd4')]({'plain':!![]});fs[_0x18f9('0xd5')](_0x2f2b2e);for(var _0xef3708=0x0;_0xef3708<_0x135949[_0x18f9('0xd3')][_0x18f9('0x43')];_0xef3708++){var _0x4755a1=_0x135949[_0x18f9('0xd3')][_0xef3708][_0x18f9('0xd2')];if(_0x4755a1){var _0x58e383=path[_0x18f9('0xcb')](_0x23ec5d,_0x4755a1[_0x18f9('0xd6')]);if(fs[_0x18f9('0xd7')](_0x58e383)){fs[_0x18f9('0xd8')](_0x58e383)['pipe'](fs[_0x18f9('0xd9')](path[_0x18f9('0xcb')](_0x2f2b2e,_0x4755a1['basename'])));}}}return BPromise[_0x18f9('0x90')]()[_0x18f9('0x2c')](function(){return new BPromise(function(_0x30e668,_0x569e65){zipdir(_0x2f2b2e,{'saveTo':_0xa56dea},function(_0x2a80f8,_0x415327){if(_0x2a80f8)return _0x569e65(_0x2a80f8);return _0x30e668(_0x415327);});})[_0x18f9('0x2c')](function(){return new BPromise(function(_0x5642ed,_0x332d63){rimraf(_0x2f2b2e,function(_0x2fdfa1){if(_0x2fdfa1)_0x332d63(_0x2fdfa1);return _0x5642ed();});});})['then'](function(){return _0x593684['download'](_0xa56dea,_0x2e8cae,function(_0x19ed5f){if(_0x19ed5f){console[_0x18f9('0xda')]('err',_0x19ed5f);}else{fs['unlinkSync'](_0xa56dea);}});});});}else{return _0x593684[_0x18f9('0x1e')](0xc8);}})['catch'](handleError(_0x593684,null));};
\ No newline at end of file
index 21e97e9..4f643a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51ae=['setDataValue','Users','map','findAll','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save','update','remove','getUsers','then'];(function(_0x56e4b7,_0x4c0b79){var _0x463c26=function(_0x2894e6){while(--_0x2894e6){_0x56e4b7['push'](_0x56e4b7['shift']());}};_0x463c26(++_0x4c0b79);}(_0x51ae,0x172));var _0xe51a=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0x51ae[_0x3899d1];return _0xeb4a7d;};'use strict';var EventEmitter=require(_0xe51a('0x0'));var FaxInteraction=require(_0xe51a('0x1'))['db'][_0xe51a('0x2')];var FaxMessage=require(_0xe51a('0x1'))['db'][_0xe51a('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xe51a('0x4')](0x0);var events={'afterCreate':_0xe51a('0x5'),'afterUpdate':_0xe51a('0x6'),'afterDestroy':_0xe51a('0x7')};function emitEvent(_0x2d1359){return function(_0x10ca32,_0x5511c1,_0x3106fe){_0x10ca32[_0xe51a('0x8')]({'attributes':['id'],'raw':!![]})[_0xe51a('0x9')](function(_0x1c39f9){_0x10ca32[_0xe51a('0xa')](_0xe51a('0xb'),_0x1c39f9[_0xe51a('0xc')](function(_0xee386f){return{'id':_0xee386f['id']};}));return FaxMessage[_0xe51a('0xd')]({'where':{'FaxInteractionId':_0x10ca32['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe51a('0x9')](function(_0x1fe5f3){_0x10ca32[_0xe51a('0xa')](_0xe51a('0xe'),_0x1fe5f3[_0xe51a('0xf')]);FaxInteractionEvents['emit'](_0x2d1359+':'+_0x10ca32['id'],_0x10ca32);FaxInteractionEvents[_0xe51a('0x10')](_0x2d1359,_0x10ca32);_0x3106fe(null);})['catch'](_0x3106fe(null));};}for(var e in events){if(events[_0xe51a('0x11')](e)){var event=events[e];FaxInteraction[_0xe51a('0x12')](e,emitEvent(event));}}module[_0xe51a('0x13')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x74ce=['FaxInteraction','FaxMessage','setMaxListeners','update','getUsers','then','setDataValue','Users','map','unreadMessages','length','emit','catch','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x44b3bd,_0x44c97d){var _0x1efc4a=function(_0x5d0205){while(--_0x5d0205){_0x44b3bd['push'](_0x44b3bd['shift']());}};_0x1efc4a(++_0x44c97d);}(_0x74ce,0x97));var _0xe74c=function(_0x6ba7a1,_0x456746){_0x6ba7a1=_0x6ba7a1-0x0;var _0x1f8a0b=_0x74ce[_0x6ba7a1];return _0x1f8a0b;};'use strict';var EventEmitter=require(_0xe74c('0x0'));var FaxInteraction=require(_0xe74c('0x1'))['db'][_0xe74c('0x2')];var FaxMessage=require(_0xe74c('0x1'))['db'][_0xe74c('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xe74c('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0xe74c('0x5'),'afterDestroy':'remove'};function emitEvent(_0x113736){return function(_0x7cd2c2,_0x118973,_0x540bfd){_0x7cd2c2[_0xe74c('0x6')]({'attributes':['id'],'raw':!![]})[_0xe74c('0x7')](function(_0x4a8211){_0x7cd2c2[_0xe74c('0x8')](_0xe74c('0x9'),_0x4a8211[_0xe74c('0xa')](function(_0x1597cd){return{'id':_0x1597cd['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x7cd2c2['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe74c('0x7')](function(_0x198ca6){_0x7cd2c2[_0xe74c('0x8')](_0xe74c('0xb'),_0x198ca6[_0xe74c('0xc')]);FaxInteractionEvents[_0xe74c('0xd')](_0x113736+':'+_0x7cd2c2['id'],_0x7cd2c2);FaxInteractionEvents[_0xe74c('0xd')](_0x113736,_0x7cd2c2);_0x540bfd(null);})[_0xe74c('0xe')](_0x540bfd(null));};}for(var e in events){if(events[_0xe74c('0xf')](e)){var event=events[e];FaxInteraction[_0xe74c('0x10')](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
index bbb4770..145d4b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6f4=['lodash','../../config/logger','api','request-promise','rimraf','./faxInteraction.attributes','define','FaxInteraction','fax_interactions','changed','closed','format'];(function(_0x3fc97b,_0x20ca29){var _0x3a0c82=function(_0x1c15ec){while(--_0x1c15ec){_0x3fc97b['push'](_0x3fc97b['shift']());}};_0x3a0c82(++_0x20ca29);}(_0xa6f4,0x144));var _0x4a6f=function(_0x54ae30,_0x57d6b1){_0x54ae30=_0x54ae30-0x0;var _0x4ddc1c=_0xa6f4[_0x54ae30];return _0x4ddc1c;};'use strict';var _=require(_0x4a6f('0x0'));var util=require('util');var logger=require(_0x4a6f('0x1'))(_0x4a6f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4a6f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4a6f('0x4'));var config=require('../../config/environment');var attributes=require(_0x4a6f('0x5'));module['exports']=function(_0x1eeba6,_0x2c3365){return _0x1eeba6[_0x4a6f('0x6')](_0x4a6f('0x7'),attributes,{'tableName':_0x4a6f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x557c3c,_0x43361e,_0x2be29f){if(_0x557c3c[_0x4a6f('0x9')](_0x4a6f('0xa'))){_0x557c3c['closedAt']=moment()[_0x4a6f('0xb')]('YYYY-MM-DD\x20HH:mm:ss');}_0x2be29f(null,_0x557c3c);}}});};
\ No newline at end of file
+var _0x0966=['changed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','bluebird','path','rimraf','../../config/environment','./faxInteraction.attributes','define','FaxInteraction','fax_interactions'];(function(_0xf3f1a9,_0x32cdb7){var _0x209d21=function(_0x12c6bd){while(--_0x12c6bd){_0xf3f1a9['push'](_0xf3f1a9['shift']());}};_0x209d21(++_0x32cdb7);}(_0x0966,0x9d));var _0x6096=function(_0x20d467,_0xb2c15b){_0x20d467=_0x20d467-0x0;var _0x557d5c=_0x0966[_0x20d467];return _0x557d5c;};'use strict';var _=require(_0x6096('0x0'));var util=require(_0x6096('0x1'));var logger=require('../../config/logger')(_0x6096('0x2'));var moment=require('moment');var BPromise=require(_0x6096('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6096('0x4'));var rimraf=require(_0x6096('0x5'));var config=require(_0x6096('0x6'));var attributes=require(_0x6096('0x7'));module['exports']=function(_0x3e63d1,_0x523471){return _0x3e63d1[_0x6096('0x8')](_0x6096('0x9'),attributes,{'tableName':_0x6096('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4b117c,_0x425325,_0x5ea37d){if(_0x4b117c[_0x6096('0xb')]('closed')){_0x4b117c['closedAt']=moment()[_0x6096('0xc')](_0x6096('0xd'));}_0x5ea37d(null,_0x4b117c);}}});};
\ No newline at end of file
index 0608bab..d1d99ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fbe=['update','body','options','raw','where','attributes','limit','UpdateFaxInteraction','AddTagsToFaxInteraction','addTags','omit','ids','AddTags','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','client','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','request','then','FaxInteraction,\x20%s,\x20%s','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','FaxInteraction'];(function(_0x19803c,_0x155764){var _0x4145c1=function(_0x50526e){while(--_0x50526e){_0x19803c['push'](_0x19803c['shift']());}};_0x4145c1(++_0x155764);}(_0x3fbe,0x1ba));var _0xe3fb=function(_0x46f886,_0x2f8f17){_0x46f886=_0x46f886-0x0;var _0x4eca8b=_0x3fbe[_0x46f886];return _0x4eca8b;};'use strict';var _=require('lodash');var util=require(_0xe3fb('0x0'));var moment=require(_0xe3fb('0x1'));var BPromise=require(_0xe3fb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe3fb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe3fb('0x4'));var logger=require('../../config/logger')(_0xe3fb('0x5'));var config=require(_0xe3fb('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xe3fb('0x7')]['http']({'port':0x232a});config['redis']=_[_0xe3fb('0x8')](config[_0xe3fb('0x9')],{'host':_0xe3fb('0xa'),'port':0x18eb});var socket=require(_0xe3fb('0xb'))(new Redis(config[_0xe3fb('0x9')]));require(_0xe3fb('0xc'))['register'](socket);function respondWithRpcPromise(_0x2ad2ac,_0xa0fd2b,_0x3c6066){return new BPromise(function(_0x5e69c7,_0x11f49a){return client[_0xe3fb('0xd')](_0x2ad2ac,_0x3c6066)[_0xe3fb('0xe')](function(_0x237d0e){logger['info'](_0xe3fb('0xf'),_0xa0fd2b,'request\x20sent');logger[_0xe3fb('0x10')](_0xe3fb('0x11'),_0xa0fd2b,_0xe3fb('0x12'),JSON[_0xe3fb('0x13')](_0x237d0e));if(_0x237d0e[_0xe3fb('0x14')]){if(_0x237d0e[_0xe3fb('0x14')]['code']===0x1f4){logger[_0xe3fb('0x14')](_0xe3fb('0xf'),_0xa0fd2b,_0x237d0e['error'][_0xe3fb('0x15')]);return _0x11f49a(_0x237d0e[_0xe3fb('0x14')][_0xe3fb('0x15')]);}logger[_0xe3fb('0x14')](_0xe3fb('0xf'),_0xa0fd2b,_0x237d0e[_0xe3fb('0x14')][_0xe3fb('0x15')]);return _0x5e69c7(_0x237d0e['error']['message']);}else{logger[_0xe3fb('0x16')](_0xe3fb('0xf'),_0xa0fd2b,_0xe3fb('0x12'));_0x5e69c7(_0x237d0e[_0xe3fb('0x17')][_0xe3fb('0x15')]);}})[_0xe3fb('0x18')](function(_0x810f26){logger[_0xe3fb('0x14')]('FaxInteraction,\x20%s,\x20%s',_0xa0fd2b,_0x810f26);_0x11f49a(_0x810f26);});});}exports['UpdateFaxInteraction']=function(_0x572bc8){var _0x3c56cb=this;return new Promise(function(_0x542c6a,_0x28446a){return db[_0xe3fb('0x19')][_0xe3fb('0x1a')](_0x572bc8[_0xe3fb('0x1b')],{'raw':_0x572bc8['options']?_0x572bc8[_0xe3fb('0x1c')][_0xe3fb('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x572bc8[_0xe3fb('0x1c')]?_0x572bc8['options'][_0xe3fb('0x1e')]||null:null,'attributes':_0x572bc8['options']?_0x572bc8[_0xe3fb('0x1c')][_0xe3fb('0x1f')]||null:null,'limit':_0x572bc8['options']?_0x572bc8[_0xe3fb('0x1c')][_0xe3fb('0x20')]||null:null})[_0xe3fb('0xe')](function(_0x6ad3d1){logger['info'](_0xe3fb('0x21'),_0x572bc8);logger[_0xe3fb('0x10')](_0xe3fb('0x21'),_0x572bc8,JSON[_0xe3fb('0x13')](_0x6ad3d1));_0x542c6a(_0x6ad3d1);})[_0xe3fb('0x18')](function(_0x1b9bdb){logger[_0xe3fb('0x14')](_0xe3fb('0x21'),_0x1b9bdb[_0xe3fb('0x15')],_0x572bc8);_0x28446a(_0x3c56cb[_0xe3fb('0x14')](0x1f4,_0x1b9bdb[_0xe3fb('0x15')]));});});};exports[_0xe3fb('0x22')]=function(_0x428b0f){return new Promise(function(_0x25b644,_0x285501){return db[_0xe3fb('0x19')]['find']({'where':_0x428b0f[_0xe3fb('0x1c')]?_0x428b0f[_0xe3fb('0x1c')][_0xe3fb('0x1e')]||null:null})[_0xe3fb('0xe')](function(_0x13b989){if(_0x13b989){return _0x13b989[_0xe3fb('0x23')](_0x428b0f['body']['ids'],_[_0xe3fb('0x24')](_0x428b0f[_0xe3fb('0x1b')],[_0xe3fb('0x25'),'id'])||{});}})['spread'](function(_0x547f34){logger['info'](_0xe3fb('0x26'),_0x428b0f);logger[_0xe3fb('0x10')](_0xe3fb('0x26'),_0x428b0f,JSON[_0xe3fb('0x13')](_0x547f34));_0x25b644(_0x547f34);})[_0xe3fb('0x18')](function(_0x5de7c7){logger[_0xe3fb('0x14')]('AddTags',_0x5de7c7['message'],_0x428b0f);_0x285501(_this[_0xe3fb('0x14')](0x1f4,_0x5de7c7[_0xe3fb('0x15')]));});});};
\ No newline at end of file
+var _0x1903=['rpc','jayson/promise','redis','defaults','localhost','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','FaxInteraction','update','body','options','raw','where','attributes','limit','UpdateFaxInteraction','catch','AddTagsToFaxInteraction','find','addTags','ids','omit','AddTags','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x365907,_0x441307){var _0x3aa9cb=function(_0x4cdd84){while(--_0x4cdd84){_0x365907['push'](_0x365907['shift']());}};_0x3aa9cb(++_0x441307);}(_0x1903,0x72));var _0x3190=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1903[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3190('0x0'));var BPromise=require(_0x3190('0x1'));var rs=require(_0x3190('0x2'));var fs=require('fs');var Redis=require(_0x3190('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3190('0x4'));var logger=require(_0x3190('0x5'))(_0x3190('0x6'));var config=require('../../config/environment');var jayson=require(_0x3190('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0x3190('0x8')]=_[_0x3190('0x9')](config[_0x3190('0x8')],{'host':_0x3190('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3190('0x8')]));require(_0x3190('0xb'))[_0x3190('0xc')](socket);function respondWithRpcPromise(_0xa41a8,_0x1c543c,_0x503a84){return new BPromise(function(_0x1f47c0,_0x20f4d1){return client[_0x3190('0xd')](_0xa41a8,_0x503a84)[_0x3190('0xe')](function(_0x174de6){logger[_0x3190('0xf')](_0x3190('0x10'),_0x1c543c,_0x3190('0x11'));logger[_0x3190('0x12')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x1c543c,_0x3190('0x11'),JSON[_0x3190('0x13')](_0x174de6));if(_0x174de6[_0x3190('0x14')]){if(_0x174de6[_0x3190('0x14')][_0x3190('0x15')]===0x1f4){logger['error'](_0x3190('0x10'),_0x1c543c,_0x174de6[_0x3190('0x14')][_0x3190('0x16')]);return _0x20f4d1(_0x174de6[_0x3190('0x14')][_0x3190('0x16')]);}logger[_0x3190('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x1c543c,_0x174de6[_0x3190('0x14')][_0x3190('0x16')]);return _0x1f47c0(_0x174de6['error'][_0x3190('0x16')]);}else{logger[_0x3190('0xf')]('FaxInteraction,\x20%s,\x20%s',_0x1c543c,_0x3190('0x11'));_0x1f47c0(_0x174de6[_0x3190('0x17')]['message']);}})['catch'](function(_0x279ff7){logger['error'](_0x3190('0x10'),_0x1c543c,_0x279ff7);_0x20f4d1(_0x279ff7);});});}exports['UpdateFaxInteraction']=function(_0x469a44){var _0x30bc0d=this;return new Promise(function(_0x4ffb67,_0x485fa9){return db[_0x3190('0x18')][_0x3190('0x19')](_0x469a44[_0x3190('0x1a')],{'raw':_0x469a44[_0x3190('0x1b')]?_0x469a44[_0x3190('0x1b')][_0x3190('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x469a44[_0x3190('0x1b')]?_0x469a44[_0x3190('0x1b')][_0x3190('0x1d')]||null:null,'attributes':_0x469a44['options']?_0x469a44[_0x3190('0x1b')][_0x3190('0x1e')]||null:null,'limit':_0x469a44[_0x3190('0x1b')]?_0x469a44[_0x3190('0x1b')][_0x3190('0x1f')]||null:null})[_0x3190('0xe')](function(_0x503bb8){logger[_0x3190('0xf')]('UpdateFaxInteraction',_0x469a44);logger[_0x3190('0x12')](_0x3190('0x20'),_0x469a44,JSON[_0x3190('0x13')](_0x503bb8));_0x4ffb67(_0x503bb8);})[_0x3190('0x21')](function(_0x34725a){logger[_0x3190('0x14')](_0x3190('0x20'),_0x34725a[_0x3190('0x16')],_0x469a44);_0x485fa9(_0x30bc0d[_0x3190('0x14')](0x1f4,_0x34725a[_0x3190('0x16')]));});});};exports[_0x3190('0x22')]=function(_0x56be04){return new Promise(function(_0x1ad4c4,_0x3bd10d){return db[_0x3190('0x18')][_0x3190('0x23')]({'where':_0x56be04[_0x3190('0x1b')]?_0x56be04[_0x3190('0x1b')][_0x3190('0x1d')]||null:null})['then'](function(_0x13e546){if(_0x13e546){return _0x13e546[_0x3190('0x24')](_0x56be04[_0x3190('0x1a')][_0x3190('0x25')],_[_0x3190('0x26')](_0x56be04['body'],[_0x3190('0x25'),'id'])||{});}})['spread'](function(_0x34ab40){logger[_0x3190('0xf')](_0x3190('0x27'),_0x56be04);logger[_0x3190('0x12')](_0x3190('0x27'),_0x56be04,JSON[_0x3190('0x13')](_0x34ab40));_0x1ad4c4(_0x34ab40);})['catch'](function(_0x18285c){logger[_0x3190('0x14')]('AddTags',_0x18285c[_0x3190('0x16')],_0x56be04);_0x3bd10d(_this['error'](0x1f4,_0x18285c[_0x3190('0x16')]));});});};
\ No newline at end of file
index 07eeed0..509b599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff00=['length','faxInteraction:','./faxInteraction.events','remove','update','emit','register'];(function(_0x145c99,_0x3fdb01){var _0x52a05f=function(_0x36feb0){while(--_0x36feb0){_0x145c99['push'](_0x145c99['shift']());}};_0x52a05f(++_0x3fdb01);}(_0xff00,0x136));var _0x0ff0=function(_0x212823,_0x28e6f8){_0x212823=_0x212823-0x0;var _0x249d4f=_0xff00[_0x212823];return _0x249d4f;};'use strict';var FaxInteractionEvents=require(_0x0ff0('0x0'));var events=['save',_0x0ff0('0x1'),_0x0ff0('0x2')];function createListener(_0x359c3d,_0x1abca9){return function(_0x51e83f){_0x1abca9[_0x0ff0('0x3')](_0x359c3d,_0x51e83f);};}function removeListener(_0x19cb4b,_0x412e7a){return function(){FaxInteractionEvents['removeListener'](_0x19cb4b,_0x412e7a);};}exports[_0x0ff0('0x4')]=function(_0x3c9d2d){for(var _0x5b732f=0x0,_0x183c49=events[_0x0ff0('0x5')];_0x5b732f<_0x183c49;_0x5b732f++){var _0x4b88d8=events[_0x5b732f];var _0x4c9541=createListener(_0x0ff0('0x6')+_0x4b88d8,_0x3c9d2d);FaxInteractionEvents['on'](_0x4b88d8,_0x4c9541);}};
\ No newline at end of file
+var _0x0f4a=['emit','removeListener','register','length','faxInteraction:','./faxInteraction.events','save','remove','update'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x0f4a,0x140));var _0xa0f4=function(_0xf3ade7,_0x3b8e07){_0xf3ade7=_0xf3ade7-0x0;var _0x32c0d4=_0x0f4a[_0xf3ade7];return _0x32c0d4;};'use strict';var FaxInteractionEvents=require(_0xa0f4('0x0'));var events=[_0xa0f4('0x1'),_0xa0f4('0x2'),_0xa0f4('0x3')];function createListener(_0x1add00,_0xc50991){return function(_0x2c434a){_0xc50991[_0xa0f4('0x4')](_0x1add00,_0x2c434a);};}function removeListener(_0x4b9a84,_0x1d3296){return function(){FaxInteractionEvents[_0xa0f4('0x5')](_0x4b9a84,_0x1d3296);};}exports[_0xa0f4('0x6')]=function(_0x5d1046){for(var _0x5bc823=0x0,_0x3125f7=events[_0xa0f4('0x7')];_0x5bc823<_0x3125f7;_0x5bc823++){var _0x6e61ce=events[_0x5bc823];var _0x5d6635=createListener(_0xa0f4('0x8')+_0x6e61ce,_0x5d1046);FaxInteractionEvents['on'](_0x6e61ce,_0x5d6635);}};
\ No newline at end of file
index 4a3d5fe..c6fcb80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x771a=['index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','removeTags','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated'];(function(_0x5725bd,_0x599ce0){var _0x26caf3=function(_0x574a67){while(--_0x574a67){_0x5725bd['push'](_0x5725bd['shift']());}};_0x26caf3(++_0x599ce0);}(_0x771a,0x1e2));var _0xa771=function(_0x256b72,_0x340985){_0x256b72=_0x256b72-0x0;var _0x2183e3=_0x771a[_0x256b72];return _0x2183e3;};'use strict';var multer=require(_0xa771('0x0'));var util=require(_0xa771('0x1'));var path=require(_0xa771('0x2'));var timeout=require('connect-timeout');var express=require(_0xa771('0x3'));var router=express['Router']();var fs_extra=require(_0xa771('0x4'));var auth=require(_0xa771('0x5'));var interaction=require(_0xa771('0x6'));var config=require(_0xa771('0x7'));var controller=require(_0xa771('0x8'));router[_0xa771('0x9')]('/',auth[_0xa771('0xa')](),controller[_0xa771('0xb')]);router['get'](_0xa771('0xc'),auth['isAuthenticated'](),controller[_0xa771('0xd')]);router[_0xa771('0x9')](_0xa771('0xe'),auth[_0xa771('0xa')](),controller[_0xa771('0xf')]);router[_0xa771('0x9')](_0xa771('0x10'),auth['isAuthenticated'](),controller[_0xa771('0x11')]);router[_0xa771('0x9')](_0xa771('0x12'),auth[_0xa771('0xa')](),controller[_0xa771('0x13')]);router[_0xa771('0x14')]('/',auth[_0xa771('0xa')](),controller[_0xa771('0x15')]);router[_0xa771('0x14')](_0xa771('0x10'),auth[_0xa771('0xa')](),controller[_0xa771('0x16')]);router[_0xa771('0x14')](_0xa771('0x17'),auth[_0xa771('0xa')](),interaction[_0xa771('0x18')](_0xa771('0x19'),_0xa771('0x1a')),controller[_0xa771('0x1b')]);router['put']('/:id',auth[_0xa771('0xa')](),interaction[_0xa771('0x18')](_0xa771('0x19'),'faxinteraction:update'),controller['update']);router['delete'](_0xa771('0xe'),auth[_0xa771('0xa')](),interaction[_0xa771('0x18')](_0xa771('0x19'),'faxinteraction:destroy'),controller['destroy']);router['delete'](_0xa771('0x17'),auth[_0xa771('0xa')](),controller[_0xa771('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0xeb3d=['delete','fax','faxinteraction:destroy','destroy','removeTags','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','faxinteraction:addtags','addTags','put','faxinteraction:update','update'];(function(_0x2341c6,_0x3af092){var _0x54c34d=function(_0x3091f9){while(--_0x3091f9){_0x2341c6['push'](_0x2341c6['shift']());}};_0x54c34d(++_0x3af092);}(_0xeb3d,0x102));var _0xdeb3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xeb3d[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xdeb3('0x0'));var util=require('util');var path=require(_0xdeb3('0x1'));var timeout=require(_0xdeb3('0x2'));var express=require(_0xdeb3('0x3'));var router=express[_0xdeb3('0x4')]();var fs_extra=require(_0xdeb3('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xdeb3('0x6'));var config=require(_0xdeb3('0x7'));var controller=require(_0xdeb3('0x8'));router[_0xdeb3('0x9')]('/',auth['isAuthenticated'](),controller[_0xdeb3('0xa')]);router[_0xdeb3('0x9')](_0xdeb3('0xb'),auth[_0xdeb3('0xc')](),controller[_0xdeb3('0xd')]);router[_0xdeb3('0x9')](_0xdeb3('0xe'),auth[_0xdeb3('0xc')](),controller[_0xdeb3('0xf')]);router['get'](_0xdeb3('0x10'),auth['isAuthenticated'](),controller[_0xdeb3('0x11')]);router[_0xdeb3('0x9')](_0xdeb3('0x12'),auth['isAuthenticated'](),controller[_0xdeb3('0x13')]);router[_0xdeb3('0x14')]('/',auth[_0xdeb3('0xc')](),controller[_0xdeb3('0x15')]);router['post']('/:id/messages',auth[_0xdeb3('0xc')](),controller[_0xdeb3('0x16')]);router['post'](_0xdeb3('0x17'),auth[_0xdeb3('0xc')](),interaction[_0xdeb3('0x18')]('fax',_0xdeb3('0x19')),controller[_0xdeb3('0x1a')]);router[_0xdeb3('0x1b')](_0xdeb3('0xe'),auth[_0xdeb3('0xc')](),interaction['tracked']('fax',_0xdeb3('0x1c')),controller[_0xdeb3('0x1d')]);router[_0xdeb3('0x1e')](_0xdeb3('0xe'),auth['isAuthenticated'](),interaction[_0xdeb3('0x18')](_0xdeb3('0x1f'),_0xdeb3('0x20')),controller[_0xdeb3('0x21')]);router['delete']('/:id/tags',auth[_0xdeb3('0xc')](),controller[_0xdeb3('0x22')]);module[_0xdeb3('0x23')]=router;
\ No newline at end of file
index 44cc024..bd3cb27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cfd=['BOOLEAN','ENUM','out','DATE','sequelize','exports','TEXT','medium'];(function(_0x44b54f,_0xe07a57){var _0x396a5c=function(_0x3c866d){while(--_0x3c866d){_0x44b54f['push'](_0x44b54f['shift']());}};_0x396a5c(++_0xe07a57);}(_0x8cfd,0xe4));var _0xd8cf=function(_0x4557dc,_0x3687b2){_0x4557dc=_0x4557dc-0x0;var _0x1377aa=_0x8cfd[_0x4557dc];return _0x1377aa;};'use strict';var Sequelize=require(_0xd8cf('0x0'));module[_0xd8cf('0x1')]={'body':{'type':Sequelize[_0xd8cf('0x2')](_0xd8cf('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xd8cf('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xd8cf('0x5')]('in','out'),'defaultValue':_0xd8cf('0x6'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xd8cf('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0xd8cf('0x7')]}};
\ No newline at end of file
+var _0x3248=['exports','BOOLEAN','ENUM','out','TEXT','DATE'];(function(_0x15d752,_0x2e0337){var _0x3c1208=function(_0x40057d){while(--_0x40057d){_0x15d752['push'](_0x15d752['shift']());}};_0x3c1208(++_0x2e0337);}(_0x3248,0x1bc));var _0x8324=function(_0x49cb58,_0x4017ed){_0x49cb58=_0x49cb58-0x0;var _0x415bd8=_0x3248[_0x49cb58];return _0x415bd8;};'use strict';var Sequelize=require('sequelize');module[_0x8324('0x0')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x8324('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x8324('0x2')]('in',_0x8324('0x3')),'defaultValue':_0x8324('0x3'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x8324('0x4')],'defaultValue':null},'readAt':{'type':Sequelize[_0x8324('0x5')]}};
\ No newline at end of file
index 3d49ddd..b653709 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d33=['fax','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','contact','User','fullname','internal','SIP/%s','channel','event','EventManager','acceptmessage','RejectMessage','rejectMessage','SELECT','email','interface','rejectmessage','create','CmContact','findOne','AttachmentId','SendFax','FaxAccountId','basename','download','join','root','server','attachments','Attachment','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxMessage.socket','jayson/promise','http','client','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','destroy','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','options','find','body','fax-interactions','accept'];(function(_0x1a5ab8,_0x27f3bb){var _0x2d6c68=function(_0x329288){while(--_0x329288){_0x1a5ab8['push'](_0x1a5ab8['shift']());}};_0x2d6c68(++_0x27f3bb);}(_0x7d33,0xc2));var _0x37d3=function(_0x30f951,_0x3ba029){_0x30f951=_0x30f951-0x0;var _0x17cce0=_0x7d33[_0x30f951];return _0x17cce0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x37d3('0x0'));var zipdir=require(_0x37d3('0x1'));var jsonpatch=require(_0x37d3('0x2'));var rp=require('request-promise');var moment=require(_0x37d3('0x3'));var BPromise=require(_0x37d3('0x4'));var Mustache=require('mustache');var util=require(_0x37d3('0x5'));var path=require('path');var sox=require(_0x37d3('0x6'));var csv=require(_0x37d3('0x7'));var ejs=require(_0x37d3('0x8'));var fs=require('fs');var fs_extra=require(_0x37d3('0x9'));var _=require(_0x37d3('0xa'));var squel=require(_0x37d3('0xb'));var crypto=require(_0x37d3('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x37d3('0x7'));var querystring=require(_0x37d3('0xd'));var Papa=require(_0x37d3('0xe'));var Redis=require('ioredis');var authService=require(_0x37d3('0xf'));var qs=require(_0x37d3('0x10'));var as=require(_0x37d3('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x37d3('0x12'))(_0x37d3('0x13'));var utils=require('../../config/utils');var config=require(_0x37d3('0x14'));var licenseUtil=require(_0x37d3('0x15'));var db=require(_0x37d3('0x16'))['db'];config['redis']=_[_0x37d3('0x17')](config[_0x37d3('0x18')],{'host':_0x37d3('0x19'),'port':0x18eb});var socket=require(_0x37d3('0x1a'))(new Redis(config['redis']));require(_0x37d3('0x1b'))['register'](socket);var jayson=require(_0x37d3('0x1c'));var client=jayson['client'][_0x37d3('0x1d')]({'port':0x232c});var client9002=jayson[_0x37d3('0x1e')][_0x37d3('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x5c3f73,_0x3a3c8c,_0x1a0209,_0x1387df){return new BPromise(function(_0xc6f31d,_0x282ea0){var _0x3f522a=_0x1387df||client;return _0x3f522a['request'](_0x5c3f73,_0x1a0209)[_0x37d3('0x1f')](function(_0x47246f){logger[_0x37d3('0x20')](_0x37d3('0x21'),_0x3a3c8c,_0x37d3('0x22'));logger[_0x37d3('0x23')](_0x37d3('0x24'),_0x3a3c8c,_0x37d3('0x22'),JSON['stringify'](_0x47246f));if(_0x47246f[_0x37d3('0x25')]){if(_0x47246f[_0x37d3('0x25')][_0x37d3('0x26')]===0x1f4){logger[_0x37d3('0x25')](_0x37d3('0x21'),_0x3a3c8c,_0x47246f['error'][_0x37d3('0x27')]);return _0x282ea0(_0x47246f[_0x37d3('0x25')][_0x37d3('0x27')]);}logger[_0x37d3('0x25')](_0x37d3('0x21'),_0x3a3c8c,_0x47246f[_0x37d3('0x25')][_0x37d3('0x27')]);return _0xc6f31d(_0x47246f[_0x37d3('0x25')][_0x37d3('0x27')]);}else{logger['info'](_0x37d3('0x21'),_0x3a3c8c,'request\x20sent');_0xc6f31d(_0x47246f[_0x37d3('0x28')][_0x37d3('0x27')]);}})[_0x37d3('0x29')](function(_0x3bc4d0){logger[_0x37d3('0x25')](_0x37d3('0x21'),_0x3a3c8c,_0x3bc4d0);_0x282ea0(_0x3bc4d0);});});}function respondWithStatusCode(_0x4b364b,_0x7d239d){_0x7d239d=_0x7d239d||0xcc;return function(_0x5d22b5){if(_0x5d22b5){return _0x4b364b[_0x37d3('0x2a')](_0x7d239d);}return _0x4b364b[_0x37d3('0x2b')](_0x7d239d)[_0x37d3('0x2c')]();};}function respondWithResult(_0x19aa15,_0x2560d8){_0x2560d8=_0x2560d8||0xc8;return function(_0x1e4818){if(_0x1e4818){return _0x19aa15[_0x37d3('0x2b')](_0x2560d8)['json'](_0x1e4818);}};}function respondWithFilteredResult(_0x4fc378,_0x150f0e){return function(_0x45e4d7){if(_0x45e4d7){var _0x4df9bc=typeof _0x150f0e[_0x37d3('0x2d')]===_0x37d3('0x2e')&&typeof _0x150f0e[_0x37d3('0x2f')]==='undefined';var _0x188554=_0x45e4d7[_0x37d3('0x30')];var _0x40a12f=_0x4df9bc?0x0:_0x150f0e[_0x37d3('0x2d')];var _0x2582a1=_0x4df9bc?_0x45e4d7[_0x37d3('0x30')]:_0x150f0e[_0x37d3('0x2d')]+_0x150f0e[_0x37d3('0x2f')];var _0xae1a1d;if(_0x2582a1>=_0x188554){_0x2582a1=_0x188554;_0xae1a1d=0xc8;}else{_0xae1a1d=0xce;}_0x4fc378[_0x37d3('0x2b')](_0xae1a1d);return _0x4fc378[_0x37d3('0x31')](_0x37d3('0x32'),_0x40a12f+'-'+_0x2582a1+'/'+_0x188554)[_0x37d3('0x33')](_0x45e4d7);}return null;};}function patchUpdates(_0x53dffe){return function(_0x187ac8){try{jsonpatch[_0x37d3('0x34')](_0x187ac8,_0x53dffe,!![]);}catch(_0x9d7c6e){return BPromise[_0x37d3('0x35')](_0x9d7c6e);}return _0x187ac8['save']();};}function saveUpdates(_0x1f694a,_0x166c23){return function(_0x52d561){if(_0x52d561){return _0x52d561[_0x37d3('0x36')](_0x1f694a)[_0x37d3('0x1f')](function(_0x6ce2e9){return _0x6ce2e9;});}return null;};}function removeEntity(_0x4bf3f0,_0x574048){return function(_0xfee6cc){if(_0xfee6cc){return _0xfee6cc[_0x37d3('0x37')]()[_0x37d3('0x1f')](function(){_0x4bf3f0[_0x37d3('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29f4fe,_0xe3618a){return function(_0x13e7ea){if(!_0x13e7ea){_0x29f4fe[_0x37d3('0x2a')](0x194);}return _0x13e7ea;};}function handleError(_0x3ff738,_0x28e42c){_0x28e42c=_0x28e42c||0x1f4;return function(_0x2c0d87){logger[_0x37d3('0x25')](_0x2c0d87[_0x37d3('0x38')]);if(_0x2c0d87[_0x37d3('0x39')]){delete _0x2c0d87[_0x37d3('0x39')];}_0x3ff738[_0x37d3('0x2b')](_0x28e42c)[_0x37d3('0x3a')](_0x2c0d87);};}exports[_0x37d3('0x3b')]=function(_0x465236,_0x1794f9){var _0x49b78c={},_0x38c82b={},_0x5980c5={'count':0x0,'rows':[]};var _0x3822b6=_[_0x37d3('0x3c')](db[_0x37d3('0x3d')][_0x37d3('0x3e')],function(_0x1fc6a4){return{'name':_0x1fc6a4[_0x37d3('0x3f')],'type':_0x1fc6a4[_0x37d3('0x40')]['key']};});_0x38c82b[_0x37d3('0x41')]=_[_0x37d3('0x3c')](_0x3822b6,_0x37d3('0x39'));_0x38c82b[_0x37d3('0x42')]=_[_0x37d3('0x43')](_0x465236['query']);_0x38c82b[_0x37d3('0x44')]=_[_0x37d3('0x45')](_0x38c82b[_0x37d3('0x41')],_0x38c82b[_0x37d3('0x42')]);_0x49b78c[_0x37d3('0x46')]=_['intersection'](_0x38c82b[_0x37d3('0x41')],qs[_0x37d3('0x47')](_0x465236['query']['fields']));_0x49b78c['attributes']=_0x49b78c[_0x37d3('0x46')][_0x37d3('0x48')]?_0x49b78c[_0x37d3('0x46')]:_0x38c82b[_0x37d3('0x41')];if(!_0x465236[_0x37d3('0x42')][_0x37d3('0x49')](_0x37d3('0x4a'))){_0x49b78c[_0x37d3('0x2f')]=qs[_0x37d3('0x2f')](_0x465236[_0x37d3('0x42')][_0x37d3('0x2f')]);_0x49b78c['offset']=qs['offset'](_0x465236['query'][_0x37d3('0x2d')]);}_0x49b78c[_0x37d3('0x4b')]=qs[_0x37d3('0x4c')](_0x465236['query'][_0x37d3('0x4c')]);_0x49b78c[_0x37d3('0x4d')]=qs[_0x37d3('0x44')](_['pick'](_0x465236['query'],_0x38c82b['filters']),_0x3822b6);if(_0x465236['query'][_0x37d3('0x4e')]){_0x49b78c[_0x37d3('0x4d')]=_[_0x37d3('0x4f')](_0x49b78c['where'],{'$or':_[_0x37d3('0x3c')](_0x3822b6,function(_0x4938a2){if(_0x4938a2['type']!==_0x37d3('0x50')){var _0x56c658={};_0x56c658[_0x4938a2[_0x37d3('0x39')]]={'$like':'%'+_0x465236['query']['filter']+'%'};return _0x56c658;}})});}_0x49b78c=_[_0x37d3('0x4f')]({},_0x49b78c,_0x465236['options']);var _0x40abbe={'where':_0x49b78c[_0x37d3('0x4d')]};return db[_0x37d3('0x3d')]['count'](_0x40abbe)[_0x37d3('0x1f')](function(_0x1e6762){_0x5980c5[_0x37d3('0x30')]=_0x1e6762;if(_0x465236[_0x37d3('0x42')][_0x37d3('0x51')]){_0x49b78c[_0x37d3('0x52')]=[{'all':!![]}];}return db[_0x37d3('0x3d')][_0x37d3('0x53')](_0x49b78c);})[_0x37d3('0x1f')](function(_0x5b325f){_0x5980c5[_0x37d3('0x54')]=_0x5b325f;return _0x5980c5;})[_0x37d3('0x1f')](respondWithFilteredResult(_0x1794f9,_0x49b78c))[_0x37d3('0x29')](handleError(_0x1794f9,null));};exports[_0x37d3('0x55')]=function(_0x3b8481,_0x16d8d6){var _0xc89bb5={'raw':!![],'where':{'id':_0x3b8481[_0x37d3('0x56')]['id']}},_0x33384e={};_0x33384e['model']=_['keys'](db[_0x37d3('0x3d')][_0x37d3('0x3e')]);_0x33384e[_0x37d3('0x42')]=_[_0x37d3('0x43')](_0x3b8481[_0x37d3('0x42')]);_0x33384e[_0x37d3('0x44')]=_[_0x37d3('0x45')](_0x33384e[_0x37d3('0x41')],_0x33384e['query']);_0xc89bb5[_0x37d3('0x46')]=_[_0x37d3('0x45')](_0x33384e['model'],qs[_0x37d3('0x47')](_0x3b8481[_0x37d3('0x42')][_0x37d3('0x47')]));_0xc89bb5[_0x37d3('0x46')]=_0xc89bb5['attributes'][_0x37d3('0x48')]?_0xc89bb5['attributes']:_0x33384e[_0x37d3('0x41')];if(_0x3b8481[_0x37d3('0x42')][_0x37d3('0x51')]){_0xc89bb5['include']=[{'all':!![]}];}_0xc89bb5=_['merge']({},_0xc89bb5,_0x3b8481[_0x37d3('0x57')]);return db[_0x37d3('0x3d')][_0x37d3('0x58')](_0xc89bb5)[_0x37d3('0x1f')](handleEntityNotFound(_0x16d8d6,null))['then'](respondWithResult(_0x16d8d6,null))['catch'](handleError(_0x16d8d6,null));};exports['update']=function(_0x598e4b,_0x13e9f9){if(_0x598e4b[_0x37d3('0x59')]['id']){delete _0x598e4b['body']['id'];}return db[_0x37d3('0x3d')][_0x37d3('0x58')]({'where':{'id':_0x598e4b[_0x37d3('0x56')]['id']}})[_0x37d3('0x1f')](handleEntityNotFound(_0x13e9f9,null))['then'](saveUpdates(_0x598e4b[_0x37d3('0x59')],null))[_0x37d3('0x1f')](respondWithResult(_0x13e9f9,null))['catch'](handleError(_0x13e9f9,null));};exports[_0x37d3('0x37')]=function(_0x57fde1,_0x49e35e){return db[_0x37d3('0x3d')][_0x37d3('0x58')]({'where':{'id':_0x57fde1[_0x37d3('0x56')]['id']}})[_0x37d3('0x1f')](handleEntityNotFound(_0x49e35e,null))[_0x37d3('0x1f')](removeEntity(_0x49e35e,null))[_0x37d3('0x29')](handleError(_0x49e35e,null));};exports['describe']=function(_0x88724e,_0x421543){return db[_0x37d3('0x3d')]['describe']()[_0x37d3('0x1f')](respondWithResult(_0x421543,null))[_0x37d3('0x29')](handleError(_0x421543,null));};var interaction_log=require('../../config/logger')(_0x37d3('0x5a'));exports[_0x37d3('0x5b')]=function(_0x4d7b97,_0x2659ce,_0x3c8861){var _0x4860b8={'agent':{},'channel':_0x37d3('0x5c')};if(_0x4d7b97[_0x37d3('0x59')]['id']){delete _0x4d7b97[_0x37d3('0x59')]['id'];}_0x4d7b97['body']['read']=!![];_0x4d7b97[_0x37d3('0x59')][_0x37d3('0x5d')]=moment()[_0x37d3('0x5e')](_0x37d3('0x5f'));_0x4d7b97[_0x37d3('0x59')][_0x37d3('0x60')]=_0x4d7b97[_0x37d3('0x59')][_0x37d3('0x60')]||_0x4d7b97[_0x37d3('0x61')]['id'];_0x4860b8[_0x37d3('0x62')]['id']=_0x4d7b97[_0x37d3('0x59')][_0x37d3('0x60')];return db['FaxMessage'][_0x37d3('0x58')]({'where':{'id':_0x4d7b97[_0x37d3('0x56')]['id'],'UserId':null}})[_0x37d3('0x1f')](handleEntityNotFound(_0x2659ce,null))[_0x37d3('0x1f')](saveUpdates(_0x4d7b97[_0x37d3('0x59')],null))['then'](function(_0x90d178){if(_0x90d178){_0x4860b8[_0x37d3('0x27')]=_0x90d178[_0x37d3('0x63')]({'plain':!![]});return db[_0x37d3('0x64')][_0x37d3('0x58')]({'where':{'id':_0x90d178[_0x37d3('0x65')]}});}return null;})[_0x37d3('0x1f')](handleEntityNotFound(_0x2659ce,null))[_0x37d3('0x1f')](function(_0x5ef3c4){if(_0x5ef3c4){return _0x5ef3c4[_0x37d3('0x36')]({'UserId':_0x4d7b97[_0x37d3('0x59')][_0x37d3('0x60')],'read1stAt':_[_0x37d3('0x66')](_0x5ef3c4[_0x37d3('0x67')])?moment()[_0x37d3('0x5e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x37d3('0x1f')](function(_0x51bf97){if(_0x51bf97){_0x4860b8[_0x37d3('0x68')]=_0x51bf97['get']({'plain':!![]});interaction_log[_0x37d3('0x20')](_0x37d3('0x69'),_0x4d7b97[_0x37d3('0x61')]['id'],_0x4d7b97[_0x37d3('0x61')][_0x37d3('0x39')],_0x4d7b97[_0x37d3('0x61')][_0x37d3('0x6a')],_0x4860b8[_0x37d3('0x68')]['id'],_0x4d7b97[_0x37d3('0x59')]?JSON[_0x37d3('0x6b')](_0x4d7b97[_0x37d3('0x59')]):_0x37d3('0x6c'));return respondWithRpcPromise(_0x37d3('0x6d'),_0x37d3('0x6e'),_0x4860b8);}return null;})[_0x37d3('0x1f')](function(_0x2c3fa2){var _0x130654=_0x37d3('0x6f')+_0x2c3fa2['message'][_0x37d3('0x70')];return db[_0x37d3('0x71')][_0x37d3('0x42')](_0x130654,{'type':db['Sequelize'][_0x37d3('0x72')]['SELECT'],'raw':!![]})['then'](function(_0x5deaec){return _0x5deaec;});})[_0x37d3('0x1f')](function(_0x28a25b){if(_0x28a25b){_0x4860b8[_0x37d3('0x27')][_0x37d3('0x73')]=_0x28a25b[0x0];if(!_0x4d7b97['body'][_0x37d3('0x60')])return;return db[_0x37d3('0x74')][_0x37d3('0x58')]({'where':{'id':_0x4d7b97[_0x37d3('0x59')][_0x37d3('0x60')],'role':'agent'},'attributes':['id',_0x37d3('0x39'),_0x37d3('0x75'),'email',_0x37d3('0x76')],'raw':!![]});}return null;})[_0x37d3('0x1f')](function(_0x107bde){if(!_0x107bde)return null;_0x4860b8[_0x37d3('0x27')][_0x37d3('0x62')]=_0x107bde;return _0x4860b8;})[_0x37d3('0x1f')](function(_0x10f8ba){if(_0x10f8ba){if(_0x4d7b97[_0x37d3('0x59')]['manual']){_0x4860b8[_0x37d3('0x27')]['interface']=util['format'](_0x37d3('0x77'),_0x4d7b97['user']['name']);_0x4860b8[_0x37d3('0x27')][_0x37d3('0x78')]=_0x4860b8[_0x37d3('0x78')];_0x4860b8[_0x37d3('0x27')][_0x37d3('0x79')]='accept';return respondWithRpcPromise('EventManager',_0x37d3('0x7a'),{'event':_0x37d3('0x7b'),'message':_0x4860b8[_0x37d3('0x27')]},client9002)[_0x37d3('0x1f')](function(){return _0x4860b8;});}return _0x4860b8;}return null;})['then'](respondWithResult(_0x2659ce,null))[_0x37d3('0x29')](handleError(_0x2659ce,null));};var interaction_log=require(_0x37d3('0x12'))(_0x37d3('0x5a'));exports[_0x37d3('0x35')]=function(_0x4ddd87,_0x18dc6a,_0x3b75e7){var _0x39e1db={'agent':{},'channel':_0x37d3('0x5c')};if(_0x4ddd87[_0x37d3('0x59')]['id']){delete _0x4ddd87[_0x37d3('0x59')]['id'];}_0x4ddd87['body'][_0x37d3('0x60')]=_0x4ddd87[_0x37d3('0x59')][_0x37d3('0x60')]||_0x4ddd87[_0x37d3('0x61')]['id'];_0x39e1db[_0x37d3('0x62')]['id']=_0x4ddd87[_0x37d3('0x59')][_0x37d3('0x60')];return db[_0x37d3('0x3d')]['find']({'where':{'id':_0x4ddd87['params']['id'],'UserId':null}})[_0x37d3('0x1f')](handleEntityNotFound(_0x18dc6a,null))[_0x37d3('0x1f')](function(_0x31a07e){if(_0x31a07e){_0x39e1db['message']=_0x31a07e['get']({'plain':!![]});return db[_0x37d3('0x64')]['find']({'where':{'id':_0x31a07e[_0x37d3('0x65')]}});}return null;})[_0x37d3('0x1f')](handleEntityNotFound(_0x18dc6a,null))[_0x37d3('0x1f')](function(_0x13c84d){if(_0x13c84d){_0x39e1db['interaction']=_0x13c84d['get']({'plain':!![]});interaction_log[_0x37d3('0x20')]('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4ddd87[_0x37d3('0x61')]['id'],_0x4ddd87[_0x37d3('0x61')][_0x37d3('0x39')],_0x4ddd87['user']['role'],_0x39e1db['interaction']['id'],_0x4ddd87['body']?JSON[_0x37d3('0x6b')](_0x4ddd87[_0x37d3('0x59')]):_0x37d3('0x6c'));return respondWithRpcPromise(_0x37d3('0x7c'),_0x37d3('0x7d'),_0x39e1db);}return null;})[_0x37d3('0x1f')](function(_0x5cff8f){var _0x2a8972=_0x37d3('0x6f')+_0x5cff8f['message'][_0x37d3('0x70')];return db[_0x37d3('0x71')]['query'](_0x2a8972,{'type':db['Sequelize'][_0x37d3('0x72')][_0x37d3('0x7e')],'raw':!![]})[_0x37d3('0x1f')](function(_0x4f9bd0){return _0x4f9bd0;});})[_0x37d3('0x1f')](function(_0xadcd92){if(_0xadcd92){_0x39e1db['message'][_0x37d3('0x73')]=_0xadcd92[0x0];if(!_0x4ddd87['body'][_0x37d3('0x60')])return;return db[_0x37d3('0x74')][_0x37d3('0x58')]({'where':{'id':_0x4ddd87[_0x37d3('0x59')][_0x37d3('0x60')],'role':'agent'},'attributes':['id',_0x37d3('0x39'),_0x37d3('0x75'),_0x37d3('0x7f'),_0x37d3('0x76')],'raw':!![]});}return null;})['then'](function(_0x42302c){if(!_0x42302c)return null;_0x39e1db[_0x37d3('0x27')][_0x37d3('0x62')]=_0x42302c;return _0x39e1db;})['then'](function(_0x54c106){if(_0x54c106){_0x54c106['message'][_0x37d3('0x80')]=util[_0x37d3('0x5e')](_0x37d3('0x77'),_0x4ddd87[_0x37d3('0x61')][_0x37d3('0x39')]);_0x54c106[_0x37d3('0x27')][_0x37d3('0x78')]=_0x39e1db[_0x37d3('0x78')];_0x54c106[_0x37d3('0x27')]['event']='reject';respondWithRpcPromise(_0x37d3('0x7a'),_0x37d3('0x7a'),{'event':_0x37d3('0x81'),'message':_0x54c106['message']},client9002);return _0x39e1db;}return null;})[_0x37d3('0x1f')](respondWithResult(_0x18dc6a,null))[_0x37d3('0x29')](handleError(_0x18dc6a,null));};exports[_0x37d3('0x82')]=function(_0x156fe3,_0x4561ef){var _0x240288;return db[_0x37d3('0x3d')][_0x37d3('0x82')](_0x156fe3[_0x37d3('0x59')],{})[_0x37d3('0x1f')](function(_0x173eaf){_0x240288=_0x173eaf;return db[_0x37d3('0x83')][_0x37d3('0x84')]({'where':{'id':_0x240288[_0x37d3('0x70')]}});})[_0x37d3('0x1f')](function(_0x2952dd){if(_[_0x37d3('0x66')](_0x2952dd)){return;}else{_0x240288[_0x37d3('0x5c')]=_0x2952dd[_0x37d3('0x5c')];return db['Attachment'][_0x37d3('0x84')]({'where':{'id':_0x240288[_0x37d3('0x85')]}});}})['then'](function(_0x2371a0){return respondWithRpcPromise('SendFax',_0x37d3('0x86'),{'FaxAccountId':_['isNil'](_0x156fe3[_0x37d3('0x59')])?undefined:_0x156fe3[_0x37d3('0x59')][_0x37d3('0x87')],'path':_[_0x37d3('0x66')](_0x2371a0)?undefined:util[_0x37d3('0x5e')]('/var/opt/motion2/server/files/attachments/%s',_0x2371a0[_0x37d3('0x88')]),'fax':_[_0x37d3('0x66')](_0x240288['fax'])?undefined:_0x240288[_0x37d3('0x5c')],'AttachmentId':_0x240288['AttachmentId']},client9002);})['then'](respondWithResult(_0x4561ef,0xc9))[_0x37d3('0x29')](handleError(_0x4561ef,null));};exports[_0x37d3('0x89')]=function(_0x4cee4f,_0x16b2ae){var _0x2938be=path[_0x37d3('0x8a')](config[_0x37d3('0x8b')],_0x37d3('0x8c'),'files',_0x37d3('0x8d'));return db[_0x37d3('0x3d')][_0x37d3('0x58')]({'where':{'id':_0x4cee4f[_0x37d3('0x56')]['id']},'include':[{'model':db[_0x37d3('0x8e')],'as':_0x37d3('0x8e')}]})[_0x37d3('0x1f')](handleEntityNotFound(_0x16b2ae,null))['then'](function(_0x34310d){if(_0x34310d){return _0x16b2ae[_0x37d3('0x89')](path[_0x37d3('0x8a')](_0x2938be,_0x34310d[_0x37d3('0x8e')][_0x37d3('0x88')]));}})[_0x37d3('0x29')](handleError(_0x16b2ae,null));};
\ No newline at end of file
+var _0x3a55=['nolimit','sort','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','find','body','describe','fax-interactions','accept','fax','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','FaxInteraction','isNil','read1stAt','interaction','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','interface','rejectmessage','create','CmContact','findOne','Attachment','SendFax','FaxAccountId','basename','AttachmentId','join','root','files','download','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxMessage.socket','jayson/promise','client','http','request','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','sendStatus','name','send','map','FaxMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length'];(function(_0x1d3235,_0x546e03){var _0xa52ad=function(_0x47eed0){while(--_0x47eed0){_0x1d3235['push'](_0x1d3235['shift']());}};_0xa52ad(++_0x546e03);}(_0x3a55,0x151));var _0x53a5=function(_0x3ecef9,_0x5637e4){_0x3ecef9=_0x3ecef9-0x0;var _0x32db2d=_0x3a55[_0x3ecef9];return _0x32db2d;};'use strict';var emlformat=require(_0x53a5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x53a5('0x1'));var jsonpatch=require(_0x53a5('0x2'));var rp=require(_0x53a5('0x3'));var moment=require(_0x53a5('0x4'));var BPromise=require(_0x53a5('0x5'));var Mustache=require(_0x53a5('0x6'));var util=require(_0x53a5('0x7'));var path=require(_0x53a5('0x8'));var sox=require(_0x53a5('0x9'));var csv=require(_0x53a5('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x53a5('0xb'));var squel=require(_0x53a5('0xc'));var crypto=require('crypto');var jsforce=require(_0x53a5('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x53a5('0xe'));var Redis=require('ioredis');var authService=require(_0x53a5('0xf'));var qs=require(_0x53a5('0x10'));var as=require(_0x53a5('0x11'));var hardwareService=require(_0x53a5('0x12'));var logger=require(_0x53a5('0x13'))('api');var utils=require(_0x53a5('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x53a5('0x15'));var db=require(_0x53a5('0x16'))['db'];config[_0x53a5('0x17')]=_['defaults'](config[_0x53a5('0x17')],{'host':_0x53a5('0x18'),'port':0x18eb});var socket=require(_0x53a5('0x19'))(new Redis(config[_0x53a5('0x17')]));require(_0x53a5('0x1a'))['register'](socket);var jayson=require(_0x53a5('0x1b'));var client=jayson[_0x53a5('0x1c')]['http']({'port':0x232c});var client9002=jayson['client'][_0x53a5('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x49d624,_0x3cdf4c,_0x2dda82,_0x2be546){return new BPromise(function(_0xd7c9,_0x161f5c){var _0x62d96=_0x2be546||client;return _0x62d96[_0x53a5('0x1e')](_0x49d624,_0x2dda82)['then'](function(_0x1f6170){logger[_0x53a5('0x1f')](_0x53a5('0x20'),_0x3cdf4c,_0x53a5('0x21'));logger[_0x53a5('0x22')](_0x53a5('0x23'),_0x3cdf4c,_0x53a5('0x21'),JSON[_0x53a5('0x24')](_0x1f6170));if(_0x1f6170[_0x53a5('0x25')]){if(_0x1f6170[_0x53a5('0x25')][_0x53a5('0x26')]===0x1f4){logger[_0x53a5('0x25')](_0x53a5('0x20'),_0x3cdf4c,_0x1f6170[_0x53a5('0x25')][_0x53a5('0x27')]);return _0x161f5c(_0x1f6170[_0x53a5('0x25')][_0x53a5('0x27')]);}logger['error'](_0x53a5('0x20'),_0x3cdf4c,_0x1f6170[_0x53a5('0x25')][_0x53a5('0x27')]);return _0xd7c9(_0x1f6170['error'][_0x53a5('0x27')]);}else{logger[_0x53a5('0x1f')](_0x53a5('0x20'),_0x3cdf4c,_0x53a5('0x21'));_0xd7c9(_0x1f6170['result'][_0x53a5('0x27')]);}})['catch'](function(_0x4774d7){logger[_0x53a5('0x25')]('FaxMessage,\x20%s,\x20%s',_0x3cdf4c,_0x4774d7);_0x161f5c(_0x4774d7);});});}function respondWithStatusCode(_0x1948be,_0x31bff1){_0x31bff1=_0x31bff1||0xcc;return function(_0x115f9f){if(_0x115f9f){return _0x1948be['sendStatus'](_0x31bff1);}return _0x1948be[_0x53a5('0x28')](_0x31bff1)[_0x53a5('0x29')]();};}function respondWithResult(_0x716ced,_0x1b4928){_0x1b4928=_0x1b4928||0xc8;return function(_0x567c9a){if(_0x567c9a){return _0x716ced[_0x53a5('0x28')](_0x1b4928)[_0x53a5('0x2a')](_0x567c9a);}};}function respondWithFilteredResult(_0x21f074,_0x124ba0){return function(_0x34471e){if(_0x34471e){var _0x489c7e=typeof _0x124ba0['offset']==='undefined'&&typeof _0x124ba0[_0x53a5('0x2b')]===_0x53a5('0x2c');var _0x225c7d=_0x34471e[_0x53a5('0x2d')];var _0x4501a7=_0x489c7e?0x0:_0x124ba0[_0x53a5('0x2e')];var _0x2d6238=_0x489c7e?_0x34471e[_0x53a5('0x2d')]:_0x124ba0[_0x53a5('0x2e')]+_0x124ba0[_0x53a5('0x2b')];var _0x5558c6;if(_0x2d6238>=_0x225c7d){_0x2d6238=_0x225c7d;_0x5558c6=0xc8;}else{_0x5558c6=0xce;}_0x21f074[_0x53a5('0x28')](_0x5558c6);return _0x21f074['set'](_0x53a5('0x2f'),_0x4501a7+'-'+_0x2d6238+'/'+_0x225c7d)[_0x53a5('0x2a')](_0x34471e);}return null;};}function patchUpdates(_0x5c6a3a){return function(_0x1a146b){try{jsonpatch[_0x53a5('0x30')](_0x1a146b,_0x5c6a3a,!![]);}catch(_0x2d4720){return BPromise[_0x53a5('0x31')](_0x2d4720);}return _0x1a146b[_0x53a5('0x32')]();};}function saveUpdates(_0x47ffe2,_0x38bd67){return function(_0x2c9297){if(_0x2c9297){return _0x2c9297[_0x53a5('0x33')](_0x47ffe2)[_0x53a5('0x34')](function(_0x36a6d4){return _0x36a6d4;});}return null;};}function removeEntity(_0x11b813,_0x2070e3){return function(_0x5617b2){if(_0x5617b2){return _0x5617b2[_0x53a5('0x35')]()['then'](function(){_0x11b813[_0x53a5('0x28')](0xcc)[_0x53a5('0x29')]();});}};}function handleEntityNotFound(_0x453372,_0x2dc00f){return function(_0x4cb4e8){if(!_0x4cb4e8){_0x453372[_0x53a5('0x36')](0x194);}return _0x4cb4e8;};}function handleError(_0x557548,_0x213385){_0x213385=_0x213385||0x1f4;return function(_0x5121fa){logger[_0x53a5('0x25')](_0x5121fa['stack']);if(_0x5121fa[_0x53a5('0x37')]){delete _0x5121fa[_0x53a5('0x37')];}_0x557548[_0x53a5('0x28')](_0x213385)[_0x53a5('0x38')](_0x5121fa);};}exports['index']=function(_0x579f11,_0x3fe008){var _0x4c6a6c={},_0x179cce={},_0x554ae0={'count':0x0,'rows':[]};var _0x443947=_[_0x53a5('0x39')](db[_0x53a5('0x3a')][_0x53a5('0x3b')],function(_0x4e8b14){return{'name':_0x4e8b14[_0x53a5('0x3c')],'type':_0x4e8b14[_0x53a5('0x3d')][_0x53a5('0x3e')]};});_0x179cce['model']=_[_0x53a5('0x39')](_0x443947,_0x53a5('0x37'));_0x179cce[_0x53a5('0x3f')]=_[_0x53a5('0x40')](_0x579f11[_0x53a5('0x3f')]);_0x179cce[_0x53a5('0x41')]=_[_0x53a5('0x42')](_0x179cce['model'],_0x179cce[_0x53a5('0x3f')]);_0x4c6a6c[_0x53a5('0x43')]=_[_0x53a5('0x42')](_0x179cce[_0x53a5('0x44')],qs[_0x53a5('0x45')](_0x579f11['query']['fields']));_0x4c6a6c[_0x53a5('0x43')]=_0x4c6a6c[_0x53a5('0x43')][_0x53a5('0x46')]?_0x4c6a6c[_0x53a5('0x43')]:_0x179cce[_0x53a5('0x44')];if(!_0x579f11[_0x53a5('0x3f')]['hasOwnProperty'](_0x53a5('0x47'))){_0x4c6a6c[_0x53a5('0x2b')]=qs['limit'](_0x579f11[_0x53a5('0x3f')][_0x53a5('0x2b')]);_0x4c6a6c[_0x53a5('0x2e')]=qs[_0x53a5('0x2e')](_0x579f11[_0x53a5('0x3f')][_0x53a5('0x2e')]);}_0x4c6a6c['order']=qs[_0x53a5('0x48')](_0x579f11[_0x53a5('0x3f')][_0x53a5('0x48')]);_0x4c6a6c['where']=qs[_0x53a5('0x41')](_['pick'](_0x579f11[_0x53a5('0x3f')],_0x179cce[_0x53a5('0x41')]),_0x443947);if(_0x579f11['query'][_0x53a5('0x49')]){_0x4c6a6c[_0x53a5('0x4a')]=_[_0x53a5('0x4b')](_0x4c6a6c[_0x53a5('0x4a')],{'$or':_[_0x53a5('0x39')](_0x443947,function(_0xa2fd43){if(_0xa2fd43[_0x53a5('0x3d')]!=='VIRTUAL'){var _0x394485={};_0x394485[_0xa2fd43[_0x53a5('0x37')]]={'$like':'%'+_0x579f11['query'][_0x53a5('0x49')]+'%'};return _0x394485;}})});}_0x4c6a6c=_[_0x53a5('0x4b')]({},_0x4c6a6c,_0x579f11[_0x53a5('0x4c')]);var _0x51bd7b={'where':_0x4c6a6c[_0x53a5('0x4a')]};return db['FaxMessage'][_0x53a5('0x2d')](_0x51bd7b)[_0x53a5('0x34')](function(_0x58f3cd){_0x554ae0[_0x53a5('0x2d')]=_0x58f3cd;if(_0x579f11['query'][_0x53a5('0x4d')]){_0x4c6a6c[_0x53a5('0x4e')]=[{'all':!![]}];}return db[_0x53a5('0x3a')][_0x53a5('0x4f')](_0x4c6a6c);})[_0x53a5('0x34')](function(_0x2c1400){_0x554ae0[_0x53a5('0x50')]=_0x2c1400;return _0x554ae0;})[_0x53a5('0x34')](respondWithFilteredResult(_0x3fe008,_0x4c6a6c))[_0x53a5('0x51')](handleError(_0x3fe008,null));};exports[_0x53a5('0x52')]=function(_0x4c612b,_0x90ae33){var _0x226ef8={'raw':!![],'where':{'id':_0x4c612b[_0x53a5('0x53')]['id']}},_0x365ad2={};_0x365ad2[_0x53a5('0x44')]=_[_0x53a5('0x40')](db[_0x53a5('0x3a')][_0x53a5('0x3b')]);_0x365ad2[_0x53a5('0x3f')]=_[_0x53a5('0x40')](_0x4c612b[_0x53a5('0x3f')]);_0x365ad2['filters']=_[_0x53a5('0x42')](_0x365ad2['model'],_0x365ad2[_0x53a5('0x3f')]);_0x226ef8['attributes']=_[_0x53a5('0x42')](_0x365ad2[_0x53a5('0x44')],qs['fields'](_0x4c612b['query'][_0x53a5('0x45')]));_0x226ef8[_0x53a5('0x43')]=_0x226ef8[_0x53a5('0x43')][_0x53a5('0x46')]?_0x226ef8[_0x53a5('0x43')]:_0x365ad2[_0x53a5('0x44')];if(_0x4c612b[_0x53a5('0x3f')]['includeAll']){_0x226ef8[_0x53a5('0x4e')]=[{'all':!![]}];}_0x226ef8=_[_0x53a5('0x4b')]({},_0x226ef8,_0x4c612b[_0x53a5('0x4c')]);return db[_0x53a5('0x3a')][_0x53a5('0x54')](_0x226ef8)[_0x53a5('0x34')](handleEntityNotFound(_0x90ae33,null))[_0x53a5('0x34')](respondWithResult(_0x90ae33,null))[_0x53a5('0x51')](handleError(_0x90ae33,null));};exports[_0x53a5('0x33')]=function(_0x2f0e7b,_0x542431){if(_0x2f0e7b[_0x53a5('0x55')]['id']){delete _0x2f0e7b[_0x53a5('0x55')]['id'];}return db[_0x53a5('0x3a')][_0x53a5('0x54')]({'where':{'id':_0x2f0e7b[_0x53a5('0x53')]['id']}})['then'](handleEntityNotFound(_0x542431,null))[_0x53a5('0x34')](saveUpdates(_0x2f0e7b['body'],null))['then'](respondWithResult(_0x542431,null))['catch'](handleError(_0x542431,null));};exports[_0x53a5('0x35')]=function(_0x1f796d,_0x8a52c5){return db['FaxMessage']['find']({'where':{'id':_0x1f796d[_0x53a5('0x53')]['id']}})[_0x53a5('0x34')](handleEntityNotFound(_0x8a52c5,null))['then'](removeEntity(_0x8a52c5,null))[_0x53a5('0x51')](handleError(_0x8a52c5,null));};exports['describe']=function(_0x6d066d,_0x52b797){return db['FaxMessage'][_0x53a5('0x56')]()['then'](respondWithResult(_0x52b797,null))[_0x53a5('0x51')](handleError(_0x52b797,null));};var interaction_log=require(_0x53a5('0x13'))(_0x53a5('0x57'));exports[_0x53a5('0x58')]=function(_0x20ae3d,_0xe66e8a,_0x4a119f){var _0x4befab={'agent':{},'channel':_0x53a5('0x59')};if(_0x20ae3d[_0x53a5('0x55')]['id']){delete _0x20ae3d[_0x53a5('0x55')]['id'];}_0x20ae3d[_0x53a5('0x55')]['read']=!![];_0x20ae3d[_0x53a5('0x55')]['readAt']=moment()[_0x53a5('0x5a')](_0x53a5('0x5b'));_0x20ae3d[_0x53a5('0x55')][_0x53a5('0x5c')]=_0x20ae3d[_0x53a5('0x55')][_0x53a5('0x5c')]||_0x20ae3d['user']['id'];_0x4befab[_0x53a5('0x5d')]['id']=_0x20ae3d[_0x53a5('0x55')][_0x53a5('0x5c')];return db[_0x53a5('0x3a')][_0x53a5('0x54')]({'where':{'id':_0x20ae3d[_0x53a5('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0xe66e8a,null))[_0x53a5('0x34')](saveUpdates(_0x20ae3d[_0x53a5('0x55')],null))[_0x53a5('0x34')](function(_0x53951e){if(_0x53951e){_0x4befab[_0x53a5('0x27')]=_0x53951e[_0x53a5('0x5e')]({'plain':!![]});return db[_0x53a5('0x5f')][_0x53a5('0x54')]({'where':{'id':_0x53951e['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0xe66e8a,null))[_0x53a5('0x34')](function(_0xa3177f){if(_0xa3177f){return _0xa3177f[_0x53a5('0x33')]({'UserId':_0x20ae3d[_0x53a5('0x55')][_0x53a5('0x5c')],'read1stAt':_[_0x53a5('0x60')](_0xa3177f[_0x53a5('0x61')])?moment()[_0x53a5('0x5a')](_0x53a5('0x5b')):undefined});}return null;})[_0x53a5('0x34')](function(_0x3e4b6f){if(_0x3e4b6f){_0x4befab[_0x53a5('0x62')]=_0x3e4b6f[_0x53a5('0x5e')]({'plain':!![]});interaction_log[_0x53a5('0x1f')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x20ae3d['user']['id'],_0x20ae3d['user'][_0x53a5('0x37')],_0x20ae3d[_0x53a5('0x63')][_0x53a5('0x64')],_0x4befab['interaction']['id'],_0x20ae3d[_0x53a5('0x55')]?JSON[_0x53a5('0x24')](_0x20ae3d[_0x53a5('0x55')]):_0x53a5('0x65'));return respondWithRpcPromise(_0x53a5('0x66'),_0x53a5('0x67'),_0x4befab);}return null;})['then'](function(_0x307e39){var _0x434cb5=_0x53a5('0x68')+_0x307e39['message'][_0x53a5('0x69')];return db[_0x53a5('0x6a')]['query'](_0x434cb5,{'type':db[_0x53a5('0x6b')][_0x53a5('0x6c')][_0x53a5('0x6d')],'raw':!![]})[_0x53a5('0x34')](function(_0x498f49){return _0x498f49;});})[_0x53a5('0x34')](function(_0x194ab7){if(_0x194ab7){_0x4befab['message'][_0x53a5('0x6e')]=_0x194ab7[0x0];if(!_0x20ae3d[_0x53a5('0x55')]['UserId'])return;return db[_0x53a5('0x6f')]['find']({'where':{'id':_0x20ae3d['body'][_0x53a5('0x5c')],'role':_0x53a5('0x5d')},'attributes':['id',_0x53a5('0x37'),_0x53a5('0x70'),_0x53a5('0x71'),_0x53a5('0x72')],'raw':!![]});}return null;})[_0x53a5('0x34')](function(_0x3890db){if(!_0x3890db)return null;_0x4befab[_0x53a5('0x27')][_0x53a5('0x5d')]=_0x3890db;return _0x4befab;})[_0x53a5('0x34')](function(_0x4a91b9){if(_0x4a91b9){if(_0x20ae3d['body'][_0x53a5('0x73')]){_0x4befab['message']['interface']=util[_0x53a5('0x5a')](_0x53a5('0x74'),_0x20ae3d['user']['name']);_0x4befab[_0x53a5('0x27')][_0x53a5('0x75')]=_0x4befab[_0x53a5('0x75')];_0x4befab[_0x53a5('0x27')][_0x53a5('0x76')]=_0x4befab['channel'];_0x4befab[_0x53a5('0x27')][_0x53a5('0x77')]=_0x53a5('0x58');return respondWithRpcPromise(_0x53a5('0x78'),_0x53a5('0x78'),{'event':_0x53a5('0x79'),'message':_0x4befab['message']},client9002)['then'](function(){return _0x4befab;});}return _0x4befab;}return null;})['then'](respondWithResult(_0xe66e8a,null))[_0x53a5('0x51')](handleError(_0xe66e8a,null));};var interaction_log=require(_0x53a5('0x13'))('fax-interactions');exports[_0x53a5('0x31')]=function(_0x4e35a3,_0x36d959,_0x4f29fd){var _0x4c34a9={'agent':{},'channel':_0x53a5('0x59')};if(_0x4e35a3[_0x53a5('0x55')]['id']){delete _0x4e35a3[_0x53a5('0x55')]['id'];}_0x4e35a3[_0x53a5('0x55')][_0x53a5('0x5c')]=_0x4e35a3[_0x53a5('0x55')][_0x53a5('0x5c')]||_0x4e35a3['user']['id'];_0x4c34a9[_0x53a5('0x5d')]['id']=_0x4e35a3[_0x53a5('0x55')]['UserId'];return db[_0x53a5('0x3a')]['find']({'where':{'id':_0x4e35a3[_0x53a5('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x36d959,null))[_0x53a5('0x34')](function(_0x3c0073){if(_0x3c0073){_0x4c34a9[_0x53a5('0x27')]=_0x3c0073['get']({'plain':!![]});return db[_0x53a5('0x5f')][_0x53a5('0x54')]({'where':{'id':_0x3c0073['FaxInteractionId']}});}return null;})[_0x53a5('0x34')](handleEntityNotFound(_0x36d959,null))[_0x53a5('0x34')](function(_0x348938){if(_0x348938){_0x4c34a9[_0x53a5('0x62')]=_0x348938[_0x53a5('0x5e')]({'plain':!![]});interaction_log[_0x53a5('0x1f')]('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4e35a3[_0x53a5('0x63')]['id'],_0x4e35a3[_0x53a5('0x63')][_0x53a5('0x37')],_0x4e35a3[_0x53a5('0x63')][_0x53a5('0x64')],_0x4c34a9['interaction']['id'],_0x4e35a3[_0x53a5('0x55')]?JSON[_0x53a5('0x24')](_0x4e35a3[_0x53a5('0x55')]):_0x53a5('0x65'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x4c34a9);}return null;})[_0x53a5('0x34')](function(_0x54534b){var _0x5364ee=_0x53a5('0x68')+_0x54534b[_0x53a5('0x27')][_0x53a5('0x69')];return db['sequelize']['query'](_0x5364ee,{'type':db[_0x53a5('0x6b')][_0x53a5('0x6c')][_0x53a5('0x6d')],'raw':!![]})[_0x53a5('0x34')](function(_0x5dddef){return _0x5dddef;});})[_0x53a5('0x34')](function(_0x5db406){if(_0x5db406){_0x4c34a9['message'][_0x53a5('0x6e')]=_0x5db406[0x0];if(!_0x4e35a3['body'][_0x53a5('0x5c')])return;return db[_0x53a5('0x6f')][_0x53a5('0x54')]({'where':{'id':_0x4e35a3[_0x53a5('0x55')][_0x53a5('0x5c')],'role':_0x53a5('0x5d')},'attributes':['id',_0x53a5('0x37'),_0x53a5('0x70'),'email',_0x53a5('0x72')],'raw':!![]});}return null;})[_0x53a5('0x34')](function(_0x428d47){if(!_0x428d47)return null;_0x4c34a9[_0x53a5('0x27')][_0x53a5('0x5d')]=_0x428d47;return _0x4c34a9;})[_0x53a5('0x34')](function(_0x5205c9){if(_0x5205c9){_0x5205c9[_0x53a5('0x27')][_0x53a5('0x7a')]=util['format'](_0x53a5('0x74'),_0x4e35a3['user'][_0x53a5('0x37')]);_0x5205c9[_0x53a5('0x27')][_0x53a5('0x75')]=_0x4c34a9[_0x53a5('0x75')];_0x5205c9['message'][_0x53a5('0x76')]=_0x4c34a9[_0x53a5('0x75')];_0x5205c9[_0x53a5('0x27')][_0x53a5('0x77')]=_0x53a5('0x31');respondWithRpcPromise(_0x53a5('0x78'),_0x53a5('0x78'),{'event':_0x53a5('0x7b'),'message':_0x5205c9[_0x53a5('0x27')]},client9002);return _0x4c34a9;}return null;})['then'](respondWithResult(_0x36d959,null))[_0x53a5('0x51')](handleError(_0x36d959,null));};exports[_0x53a5('0x7c')]=function(_0x121d8b,_0x46234f){var _0x3b17b2;return db[_0x53a5('0x3a')][_0x53a5('0x7c')](_0x121d8b['body'],{})[_0x53a5('0x34')](function(_0x35962a){_0x3b17b2=_0x35962a;return db[_0x53a5('0x7d')][_0x53a5('0x7e')]({'where':{'id':_0x3b17b2['ContactId']}});})[_0x53a5('0x34')](function(_0x54d587){if(_[_0x53a5('0x60')](_0x54d587)){return;}else{_0x3b17b2['fax']=_0x54d587[_0x53a5('0x59')];return db[_0x53a5('0x7f')][_0x53a5('0x7e')]({'where':{'id':_0x3b17b2['AttachmentId']}});}})[_0x53a5('0x34')](function(_0x475ff0){return respondWithRpcPromise(_0x53a5('0x80'),_0x53a5('0x80'),{'FaxAccountId':_[_0x53a5('0x60')](_0x121d8b[_0x53a5('0x55')])?undefined:_0x121d8b[_0x53a5('0x55')][_0x53a5('0x81')],'path':_[_0x53a5('0x60')](_0x475ff0)?undefined:util['format']('/var/opt/motion2/server/files/attachments/%s',_0x475ff0[_0x53a5('0x82')]),'fax':_[_0x53a5('0x60')](_0x3b17b2[_0x53a5('0x59')])?undefined:_0x3b17b2[_0x53a5('0x59')],'AttachmentId':_0x3b17b2[_0x53a5('0x83')]},client9002);})[_0x53a5('0x34')](respondWithResult(_0x46234f,0xc9))[_0x53a5('0x51')](handleError(_0x46234f,null));};exports['download']=function(_0x4d3652,_0x3b922c){var _0x191390=path[_0x53a5('0x84')](config[_0x53a5('0x85')],'server',_0x53a5('0x86'),'attachments');return db[_0x53a5('0x3a')][_0x53a5('0x54')]({'where':{'id':_0x4d3652[_0x53a5('0x53')]['id']},'include':[{'model':db[_0x53a5('0x7f')],'as':_0x53a5('0x7f')}]})[_0x53a5('0x34')](handleEntityNotFound(_0x3b922c,null))[_0x53a5('0x34')](function(_0x182175){if(_0x182175){return _0x3b922c[_0x53a5('0x87')](path['join'](_0x191390,_0x182175['Attachment'][_0x53a5('0x82')]));}})[_0x53a5('0x51')](handleError(_0x3b922c,null));};
\ No newline at end of file
index 881086f..c45893a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe062=['remove','emit','events','../../mysqldb','save','update'];(function(_0x49481d,_0xd95b74){var _0x27dd6e=function(_0xee3740){while(--_0xee3740){_0x49481d['push'](_0x49481d['shift']());}};_0x27dd6e(++_0xd95b74);}(_0xe062,0x1b8));var _0x2e06=function(_0x3451d2,_0x42ee59){_0x3451d2=_0x3451d2-0x0;var _0x5ae189=_0xe062[_0x3451d2];return _0x5ae189;};'use strict';var EventEmitter=require(_0x2e06('0x0'));var FaxMessage=require(_0x2e06('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2e06('0x2'),'afterUpdate':_0x2e06('0x3'),'afterDestroy':_0x2e06('0x4')};function emitEvent(_0x304308){return function(_0x361a02,_0x28e970,_0x22aacc){FaxMessageEvents[_0x2e06('0x5')](_0x304308+':'+_0x361a02['id'],_0x361a02);FaxMessageEvents[_0x2e06('0x5')](_0x304308,_0x361a02);_0x22aacc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0x3d4b=['events','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x1c57f3,_0x46b5d3){var _0x2187dc=function(_0x445190){while(--_0x445190){_0x1c57f3['push'](_0x1c57f3['shift']());}};_0x2187dc(++_0x46b5d3);}(_0x3d4b,0xf3));var _0xb3d4=function(_0x1678f2,_0x2ecc97){_0x1678f2=_0x1678f2-0x0;var _0x418a84=_0x3d4b[_0x1678f2];return _0x418a84;};'use strict';var EventEmitter=require(_0xb3d4('0x0'));var FaxMessage=require(_0xb3d4('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xb3d4('0x2')](0x0);var events={'afterCreate':_0xb3d4('0x3'),'afterUpdate':_0xb3d4('0x4'),'afterDestroy':'remove'};function emitEvent(_0x6a7869){return function(_0x1f81be,_0x19a897,_0x4242a3){FaxMessageEvents[_0xb3d4('0x5')](_0x6a7869+':'+_0x1f81be['id'],_0x1f81be);FaxMessageEvents[_0xb3d4('0x5')](_0x6a7869,_0x1f81be);_0x4242a3(null);};}for(var e in events){if(events[_0xb3d4('0x6')](e)){var event=events[e];FaxMessage[_0xb3d4('0x7')](e,emitEvent(event));}}module[_0xb3d4('0x8')]=FaxMessageEvents;
\ No newline at end of file
index 6bc7350..e635e5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc469=['models','get','direction','toLowerCase','out','secret','UserId','findOne','FaxInteractionId','then','update','createdAt','error','utf8mb4','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','FaxMessage','body','FULLTEXT'];(function(_0x2d90cc,_0x45bb4e){var _0x227a99=function(_0x3bab2c){while(--_0x3bab2c){_0x2d90cc['push'](_0x2d90cc['shift']());}};_0x227a99(++_0x45bb4e);}(_0xc469,0x9a));var _0x9c46=function(_0x58c20f,_0x4cdb1b){_0x58c20f=_0x58c20f-0x0;var _0x3b0318=_0xc469[_0x58c20f];return _0x3b0318;};'use strict';var _=require(_0x9c46('0x0'));var util=require(_0x9c46('0x1'));var logger=require(_0x9c46('0x2'))(_0x9c46('0x3'));var moment=require('moment');var BPromise=require(_0x9c46('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9c46('0x5'));var rimraf=require(_0x9c46('0x6'));var config=require(_0x9c46('0x7'));var attributes=require(_0x9c46('0x8'));module[_0x9c46('0x9')]=function(_0x916dd,_0x1c6b2a){return _0x916dd[_0x9c46('0xa')](_0x9c46('0xb'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0x9c46('0xc')],'type':_0x9c46('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x25a700,_0x5e507d,_0x579e0b){var _0x413251=_0x916dd[_0x9c46('0xe')];var _0x3ae848=_0x25a700[_0x9c46('0xf')]({'plain':!![]});if(_0x3ae848[_0x9c46('0x10')]['toLowerCase']()==='in'||_0x3ae848[_0x9c46('0x10')][_0x9c46('0x11')]()===_0x9c46('0x12')&&!_0x3ae848[_0x9c46('0x13')]&&!_['isNil'](_0x3ae848[_0x9c46('0x14')])){_0x413251['FaxInteraction'][_0x9c46('0x15')]({'where':{'id':_0x3ae848[_0x9c46('0x16')]}})[_0x9c46('0x17')](function(_0x4deea1){if(_0x4deea1){_0x4deea1[_0x9c46('0x18')]({'lastMsgAt':_0x3ae848[_0x9c46('0x19')],'lastMsgDirection':_0x3ae848['direction']['toLowerCase']()});}})['catch'](function(_0x1003d9){console[_0x9c46('0x1a')](_0x1003d9);});}_0x579e0b();}},'charset':_0x9c46('0x1b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd8b2=['util','../../config/logger','bluebird','request-promise','path','../../config/environment','./faxMessage.attributes','exports','define','FaxMessage','fti_fax_messages','body','models','direction','toLowerCase','out','secret','UserId','FaxInteraction','FaxInteractionId','then','update','createdAt','catch','error','utf8mb4_unicode_ci','lodash'];(function(_0x20c9b2,_0x55d7b1){var _0x2c6030=function(_0x10845f){while(--_0x10845f){_0x20c9b2['push'](_0x20c9b2['shift']());}};_0x2c6030(++_0x55d7b1);}(_0xd8b2,0x1ca));var _0x2d8b=function(_0x3e9fed,_0x11c52f){_0x3e9fed=_0x3e9fed-0x0;var _0xae19c2=_0xd8b2[_0x3e9fed];return _0xae19c2;};'use strict';var _=require(_0x2d8b('0x0'));var util=require(_0x2d8b('0x1'));var logger=require(_0x2d8b('0x2'))('api');var moment=require('moment');var BPromise=require(_0x2d8b('0x3'));var rp=require(_0x2d8b('0x4'));var fs=require('fs');var path=require(_0x2d8b('0x5'));var rimraf=require('rimraf');var config=require(_0x2d8b('0x6'));var attributes=require(_0x2d8b('0x7'));module[_0x2d8b('0x8')]=function(_0x4b11c2,_0x235677){return _0x4b11c2[_0x2d8b('0x9')](_0x2d8b('0xa'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0x2d8b('0xb'),'fields':[_0x2d8b('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3ccd11,_0x35217a,_0x208a47){var _0x47c0b3=_0x4b11c2[_0x2d8b('0xd')];var _0x12f8ad=_0x3ccd11['get']({'plain':!![]});if(_0x12f8ad['direction']['toLowerCase']()==='in'||_0x12f8ad[_0x2d8b('0xe')][_0x2d8b('0xf')]()===_0x2d8b('0x10')&&!_0x12f8ad[_0x2d8b('0x11')]&&!_['isNil'](_0x12f8ad[_0x2d8b('0x12')])){_0x47c0b3[_0x2d8b('0x13')]['findOne']({'where':{'id':_0x12f8ad[_0x2d8b('0x14')]}})[_0x2d8b('0x15')](function(_0x38615c){if(_0x38615c){_0x38615c[_0x2d8b('0x16')]({'lastMsgAt':_0x12f8ad[_0x2d8b('0x17')],'lastMsgDirection':_0x12f8ad[_0x2d8b('0xe')][_0x2d8b('0xf')]()});}})[_0x2d8b('0x18')](function(_0x18b626){console[_0x2d8b('0x19')](_0x18b626);});}_0x208a47();}},'charset':'utf8mb4','collate':_0x2d8b('0x1a')});};
\ No newline at end of file
index 201d265..ddb4a95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./faxMessage.socket','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','code','error','message','catch','CreateFaxMessage','FaxMessage','body','options','raw','UpdateFaxMessage','update','attributes','limit','debug','stringify','lodash','util','ioredis'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x55ca,0x126));var _0xa55c=function(_0x11b3f4,_0x371c17){_0x11b3f4=_0x11b3f4-0x0;var _0x47af1d=_0x55ca[_0x11b3f4];return _0x47af1d;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});config[_0xa55c('0xa')]=_['defaults'](config[_0xa55c('0xa')],{'host':_0xa55c('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa55c('0xa')]));require(_0xa55c('0xc'))['register'](socket);function respondWithRpcPromise(_0x5849ad,_0x473d0e,_0x20c76a){return new BPromise(function(_0x381d07,_0x5d8e5a){return client[_0xa55c('0xd')](_0x5849ad,_0x20c76a)[_0xa55c('0xe')](function(_0x508342){logger[_0xa55c('0xf')](_0xa55c('0x10'),_0x473d0e,_0xa55c('0x11'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0x473d0e,_0xa55c('0x11'),JSON['stringify'](_0x508342));if(_0x508342['error']){if(_0x508342['error'][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);return _0x5d8e5a(_0x508342[_0xa55c('0x13')]['message']);}logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);return _0x381d07(_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);}else{logger[_0xa55c('0xf')](_0xa55c('0x10'),_0x473d0e,_0xa55c('0x11'));_0x381d07(_0x508342['result'][_0xa55c('0x14')]);}})[_0xa55c('0x15')](function(_0x461284){logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x461284);_0x5d8e5a(_0x461284);});});}exports[_0xa55c('0x16')]=function(_0x4c0daf){var _0x5f5158=this;return new Promise(function(_0xd643cc,_0x3776ac){return db[_0xa55c('0x17')]['create'](_0x4c0daf[_0xa55c('0x18')],{'raw':_0x4c0daf[_0xa55c('0x19')]?_0x4c0daf['options'][_0xa55c('0x1a')]===undefined?!![]:![]:!![]})[_0xa55c('0xe')](function(_0x940f28){logger[_0xa55c('0xf')](_0xa55c('0x16'),_0x4c0daf);logger['debug'](_0xa55c('0x16'),_0x4c0daf,JSON['stringify'](_0x940f28));_0xd643cc(_0x940f28);})['catch'](function(_0x59d89a){logger[_0xa55c('0x13')]('CreateFaxMessage',_0x59d89a[_0xa55c('0x14')],_0x4c0daf);_0x3776ac(_0x5f5158[_0xa55c('0x13')](0x1f4,_0x59d89a[_0xa55c('0x14')]));});});};exports[_0xa55c('0x1b')]=function(_0x2313a9){var _0x170ba4=this;return new Promise(function(_0x1da633,_0x11e7f7){return db[_0xa55c('0x17')][_0xa55c('0x1c')](_0x2313a9[_0xa55c('0x18')],{'raw':_0x2313a9['options']?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')]['where']||null:null,'attributes':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1d')]||null:null,'limit':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1e')]||null:null})['then'](function(_0x23e698){logger['info'](_0xa55c('0x1b'),_0x2313a9);logger[_0xa55c('0x1f')](_0xa55c('0x1b'),_0x2313a9,JSON[_0xa55c('0x20')](_0x23e698));_0x1da633(_0x23e698);})['catch'](function(_0x3d28fb){logger[_0xa55c('0x13')](_0xa55c('0x1b'),_0x3d28fb[_0xa55c('0x14')],_0x2313a9);_0x11e7f7(_0x170ba4[_0xa55c('0x13')](0x1f4,_0x3d28fb[_0xa55c('0x14')]));});});};
\ No newline at end of file
+var _0x6f0d=['../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','./faxMessage.socket','register','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateFaxMessage','FaxMessage','body','options','raw','UpdateFaxMessage','update','attributes','limit','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x47159c,_0x1c8216){var _0x454dbe=function(_0x2b54f7){while(--_0x2b54f7){_0x47159c['push'](_0x47159c['shift']());}};_0x454dbe(++_0x1c8216);}(_0x6f0d,0x16c));var _0xd6f0=function(_0xfd7f1c,_0x4970ee){_0xfd7f1c=_0xfd7f1c-0x0;var _0x3056c3=_0x6f0d[_0xfd7f1c];return _0x3056c3;};'use strict';var _=require('lodash');var util=require(_0xd6f0('0x0'));var moment=require(_0xd6f0('0x1'));var BPromise=require(_0xd6f0('0x2'));var rs=require(_0xd6f0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd6f0('0x4'))['db'];var utils=require(_0xd6f0('0x5'));var logger=require(_0xd6f0('0x6'))(_0xd6f0('0x7'));var config=require(_0xd6f0('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd6f0('0x9')]['http']({'port':0x232a});config[_0xd6f0('0xa')]=_[_0xd6f0('0xb')](config[_0xd6f0('0xa')],{'host':_0xd6f0('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd6f0('0xd'))[_0xd6f0('0xe')](socket);function respondWithRpcPromise(_0x2854cd,_0x382a2e,_0x225dcf){return new BPromise(function(_0x4db64a,_0x136eee){return client[_0xd6f0('0xf')](_0x2854cd,_0x225dcf)[_0xd6f0('0x10')](function(_0x44bba6){logger['info'](_0xd6f0('0x11'),_0x382a2e,_0xd6f0('0x12'));logger[_0xd6f0('0x13')](_0xd6f0('0x14'),_0x382a2e,_0xd6f0('0x12'),JSON[_0xd6f0('0x15')](_0x44bba6));if(_0x44bba6[_0xd6f0('0x16')]){if(_0x44bba6[_0xd6f0('0x16')][_0xd6f0('0x17')]===0x1f4){logger['error'](_0xd6f0('0x11'),_0x382a2e,_0x44bba6[_0xd6f0('0x16')]['message']);return _0x136eee(_0x44bba6[_0xd6f0('0x16')]['message']);}logger[_0xd6f0('0x16')](_0xd6f0('0x11'),_0x382a2e,_0x44bba6[_0xd6f0('0x16')][_0xd6f0('0x18')]);return _0x4db64a(_0x44bba6[_0xd6f0('0x16')][_0xd6f0('0x18')]);}else{logger[_0xd6f0('0x19')](_0xd6f0('0x11'),_0x382a2e,_0xd6f0('0x12'));_0x4db64a(_0x44bba6[_0xd6f0('0x1a')][_0xd6f0('0x18')]);}})[_0xd6f0('0x1b')](function(_0x327231){logger[_0xd6f0('0x16')](_0xd6f0('0x11'),_0x382a2e,_0x327231);_0x136eee(_0x327231);});});}exports[_0xd6f0('0x1c')]=function(_0x5cd367){var _0x48ac38=this;return new Promise(function(_0x3939aa,_0x264104){return db[_0xd6f0('0x1d')]['create'](_0x5cd367[_0xd6f0('0x1e')],{'raw':_0x5cd367[_0xd6f0('0x1f')]?_0x5cd367['options'][_0xd6f0('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x1ee584){logger[_0xd6f0('0x19')]('CreateFaxMessage',_0x5cd367);logger[_0xd6f0('0x13')](_0xd6f0('0x1c'),_0x5cd367,JSON['stringify'](_0x1ee584));_0x3939aa(_0x1ee584);})[_0xd6f0('0x1b')](function(_0x402070){logger[_0xd6f0('0x16')]('CreateFaxMessage',_0x402070[_0xd6f0('0x18')],_0x5cd367);_0x264104(_0x48ac38[_0xd6f0('0x16')](0x1f4,_0x402070['message']));});});};exports[_0xd6f0('0x21')]=function(_0x551be8){var _0x2042d5=this;return new Promise(function(_0x3fb5c3,_0x1630dc){return db[_0xd6f0('0x1d')][_0xd6f0('0x22')](_0x551be8[_0xd6f0('0x1e')],{'raw':_0x551be8[_0xd6f0('0x1f')]?_0x551be8[_0xd6f0('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x551be8[_0xd6f0('0x1f')]?_0x551be8[_0xd6f0('0x1f')]['where']||null:null,'attributes':_0x551be8[_0xd6f0('0x1f')]?_0x551be8[_0xd6f0('0x1f')][_0xd6f0('0x23')]||null:null,'limit':_0x551be8[_0xd6f0('0x1f')]?_0x551be8[_0xd6f0('0x1f')][_0xd6f0('0x24')]||null:null})[_0xd6f0('0x10')](function(_0x3151f8){logger[_0xd6f0('0x19')](_0xd6f0('0x21'),_0x551be8);logger[_0xd6f0('0x13')](_0xd6f0('0x21'),_0x551be8,JSON[_0xd6f0('0x15')](_0x3151f8));_0x3fb5c3(_0x3151f8);})[_0xd6f0('0x1b')](function(_0xbdd223){logger[_0xd6f0('0x16')](_0xd6f0('0x21'),_0xbdd223[_0xd6f0('0x18')],_0x551be8);_0x1630dc(_0x2042d5[_0xd6f0('0x16')](0x1f4,_0xbdd223[_0xd6f0('0x18')]));});});};
\ No newline at end of file
index 593a1de..400f997 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eaf=['emit','removeListener','register','./faxMessage.events','remove'];(function(_0x2af160,_0x765b1){var _0x439d67=function(_0x4d26af){while(--_0x4d26af){_0x2af160['push'](_0x2af160['shift']());}};_0x439d67(++_0x765b1);}(_0x4eaf,0x11b));var _0xf4ea=function(_0x42c9f4,_0x59c356){_0x42c9f4=_0x42c9f4-0x0;var _0x11d3c5=_0x4eaf[_0x42c9f4];return _0x11d3c5;};'use strict';var FaxMessageEvents=require(_0xf4ea('0x0'));var events=['save',_0xf4ea('0x1'),'update'];function createListener(_0x12b49e,_0x8a5c9){return function(_0x22f028){_0x8a5c9[_0xf4ea('0x2')](_0x12b49e,_0x22f028);};}function removeListener(_0x3c8de9,_0x986efc){return function(){FaxMessageEvents[_0xf4ea('0x3')](_0x3c8de9,_0x986efc);};}exports[_0xf4ea('0x4')]=function(_0x195265){for(var _0x457b7c=0x0,_0x27efd8=events['length'];_0x457b7c<_0x27efd8;_0x457b7c++){var _0x43ab3f=events[_0x457b7c];var _0x3ede17=createListener('faxMessage:'+_0x43ab3f,_0x195265);FaxMessageEvents['on'](_0x43ab3f,_0x3ede17);}};
\ No newline at end of file
+var _0xabf1=['removeListener','register','length','./faxMessage.events','remove','update','emit'];(function(_0x57296b,_0x455bff){var _0x7d4172=function(_0x22823a){while(--_0x22823a){_0x57296b['push'](_0x57296b['shift']());}};_0x7d4172(++_0x455bff);}(_0xabf1,0xf1));var _0x1abf=function(_0x2b5182,_0x1f0ac0){_0x2b5182=_0x2b5182-0x0;var _0x2c8a4d=_0xabf1[_0x2b5182];return _0x2c8a4d;};'use strict';var FaxMessageEvents=require(_0x1abf('0x0'));var events=['save',_0x1abf('0x1'),_0x1abf('0x2')];function createListener(_0x5b8e3f,_0x581456){return function(_0x1ffe32){_0x581456[_0x1abf('0x3')](_0x5b8e3f,_0x1ffe32);};}function removeListener(_0x64a614,_0x3e8a6f){return function(){FaxMessageEvents[_0x1abf('0x4')](_0x64a614,_0x3e8a6f);};}exports[_0x1abf('0x5')]=function(_0x3e1dba){for(var _0x29fba4=0x0,_0x1b7a6a=events[_0x1abf('0x6')];_0x29fba4<_0x1b7a6a;_0x29fba4++){var _0x2450e0=events[_0x29fba4];var _0x2d30d3=createListener('faxMessage:'+_0x2450e0,_0x3e1dba);FaxMessageEvents['on'](_0x2450e0,_0x2d30d3);}};
\ No newline at end of file
index 973a529..4515799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e6=['/:id/download','download','post','tracked','fax','create','put','/:id','update','/:id/accept','accept','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxMessage.controller','get','isAuthenticated','describe','show'];(function(_0x3dae3c,_0x3d61c3){var _0x326b20=function(_0xa4ec0d){while(--_0xa4ec0d){_0x3dae3c['push'](_0x3dae3c['shift']());}};_0x326b20(++_0x3d61c3);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x254d9f,_0x54ddb5){_0x254d9f=_0x254d9f-0x0;var _0x1eedb9=_0xb4e6[_0x254d9f];return _0x1eedb9;};'use strict';var multer=require(_0x6b4e('0x0'));var util=require('util');var path=require(_0x6b4e('0x1'));var timeout=require(_0x6b4e('0x2'));var express=require(_0x6b4e('0x3'));var router=express[_0x6b4e('0x4')]();var fs_extra=require(_0x6b4e('0x5'));var auth=require(_0x6b4e('0x6'));var interaction=require(_0x6b4e('0x7'));var config=require('../../config/environment');var controller=require(_0x6b4e('0x8'));router[_0x6b4e('0x9')]('/',auth[_0x6b4e('0xa')](),controller['index']);router[_0x6b4e('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x6b4e('0xb')]);router['get']('/:id',auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xc')]);router[_0x6b4e('0x9')](_0x6b4e('0xd'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xe')]);router[_0x6b4e('0xf')]('/',auth['isAuthenticated'](),interaction[_0x6b4e('0x10')](_0x6b4e('0x11'),'faxmessage:create'),controller[_0x6b4e('0x12')]);router[_0x6b4e('0x13')](_0x6b4e('0x14'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x15')]);router[_0x6b4e('0x13')](_0x6b4e('0x16'),auth['isAuthenticated'](),controller[_0x6b4e('0x17')]);router[_0x6b4e('0x13')]('/:id/reject',auth[_0x6b4e('0xa')](),controller['reject']);router[_0x6b4e('0x18')](_0x6b4e('0x14'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x19')]);module[_0x6b4e('0x1a')]=router;
\ No newline at end of file
+var _0xd404=['/:id','/:id/download','download','post','tracked','fax','faxmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','describe'];(function(_0x1fdddf,_0x5e0419){var _0x31ebc1=function(_0x2b5f09){while(--_0x2b5f09){_0x1fdddf['push'](_0x1fdddf['shift']());}};_0x31ebc1(++_0x5e0419);}(_0xd404,0x15b));var _0x4d40=function(_0x4368e5,_0x484e93){_0x4368e5=_0x4368e5-0x0;var _0x718239=_0xd404[_0x4368e5];return _0x718239;};'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')]('/describe',auth[_0x4d40('0xa')](),controller[_0x4d40('0xc')]);router['get'](_0x4d40('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x4d40('0x9')](_0x4d40('0xe'),auth[_0x4d40('0xa')](),controller[_0x4d40('0xf')]);router[_0x4d40('0x10')]('/',auth[_0x4d40('0xa')](),interaction[_0x4d40('0x11')](_0x4d40('0x12'),_0x4d40('0x13')),controller[_0x4d40('0x14')]);router[_0x4d40('0x15')](_0x4d40('0xd'),auth[_0x4d40('0xa')](),controller[_0x4d40('0x16')]);router['put'](_0x4d40('0x17'),auth[_0x4d40('0xa')](),controller[_0x4d40('0x18')]);router[_0x4d40('0x15')](_0x4d40('0x19'),auth['isAuthenticated'](),controller[_0x4d40('0x1a')]);router[_0x4d40('0x1b')](_0x4d40('0xd'),auth[_0x4d40('0xa')](),controller[_0x4d40('0x1c')]);module[_0x4d40('0x1d')]=router;
\ No newline at end of file
index c0595c6..38075f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x556a=['name','INTEGER','ENUM','rrmemory','beepall','sequelize','exports','STRING'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x556a,0x1dd));var _0xa556=function(_0x40e246,_0xa5d7be){_0x40e246=_0x40e246-0x0;var _0x260d76=_0x556a[_0x40e246];return _0x260d76;};'use strict';var Sequelize=require(_0xa556('0x0'));module[_0xa556('0x1')]={'name':{'type':Sequelize[_0xa556('0x2')],'unique':_0xa556('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa556('0x2')]},'timeout':{'type':Sequelize[_0xa556('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xa556('0x5')](_0xa556('0x6'),_0xa556('0x7'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xa556('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7a8b=['ENUM','rrmemory','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x3c0c6c,_0x52a08b){var _0x9910b3=function(_0x10f72e){while(--_0x10f72e){_0x3c0c6c['push'](_0x3c0c6c['shift']());}};_0x9910b3(++_0x52a08b);}(_0x7a8b,0x153));var _0xb7a8=function(_0xf961c2,_0x41e747){_0xf961c2=_0xf961c2-0x0;var _0x449457=_0x7a8b[_0xf961c2];return _0x449457;};'use strict';var Sequelize=require(_0xb7a8('0x0'));module[_0xb7a8('0x1')]={'name':{'type':Sequelize[_0xb7a8('0x2')],'unique':_0xb7a8('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb7a8('0x2')]},'timeout':{'type':Sequelize[_0xb7a8('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb7a8('0x5')](_0xb7a8('0x6'),'beepall',_0xb7a8('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xb7a8('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index b4ee409..af2fdee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54bf=['fields','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','rawAttributes','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','UserProfileResource','params','describe','getMembers','findOne','pick','FaxQueueId','UserFaxQueue','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','rows','%s/%s','SIP','Team','getTeams','addTeams','ids','online','voicePause','interface','flatMap','Agents','sequelize','each','findOrCreate','forEach','emit','removeTeams','select','tq.TeamId','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','transaction','userFaxQueue:remove','addAgents','omit','spread','userFaxQueue:save','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','get','FaxQueues','error','stack','name','send','map','FaxQueue','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x35c2cc,_0x278a6f){var _0x2ed902=function(_0x157ee2){while(--_0x157ee2){_0x35c2cc['push'](_0x35c2cc['shift']());}};_0x2ed902(++_0x278a6f);}(_0x54bf,0xdf));var _0xf54b=function(_0x4b3322,_0xc91806){_0x4b3322=_0x4b3322-0x0;var _0x4e0afd=_0x54bf[_0x4b3322];return _0x4e0afd;};'use strict';var emlformat=require(_0xf54b('0x0'));var rimraf=require(_0xf54b('0x1'));var zipdir=require(_0xf54b('0x2'));var jsonpatch=require(_0xf54b('0x3'));var rp=require(_0xf54b('0x4'));var moment=require(_0xf54b('0x5'));var BPromise=require(_0xf54b('0x6'));var Mustache=require(_0xf54b('0x7'));var util=require(_0xf54b('0x8'));var path=require(_0xf54b('0x9'));var sox=require(_0xf54b('0xa'));var csv=require(_0xf54b('0xb'));var ejs=require(_0xf54b('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xf54b('0xd'));var crypto=require(_0xf54b('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf54b('0xb'));var querystring=require('querystring');var Papa=require(_0xf54b('0xf'));var Redis=require('ioredis');var authService=require(_0xf54b('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf54b('0x11'));var logger=require(_0xf54b('0x12'))('api');var utils=require(_0xf54b('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf54b('0x14'))['db'];config['redis']=_[_0xf54b('0x15')](config[_0xf54b('0x16')],{'host':_0xf54b('0x17'),'port':0x18eb});var socket=require(_0xf54b('0x18'))(new Redis(config['redis']));require(_0xf54b('0x19'))['register'](socket);function respondWithStatusCode(_0x27a864,_0x28e348){_0x28e348=_0x28e348||0xcc;return function(_0x598ae2){if(_0x598ae2){return _0x27a864[_0xf54b('0x1a')](_0x28e348);}return _0x27a864['status'](_0x28e348)[_0xf54b('0x1b')]();};}function respondWithResult(_0x21a8a9,_0x1d088f){_0x1d088f=_0x1d088f||0xc8;return function(_0x129276){if(_0x129276){return _0x21a8a9['status'](_0x1d088f)[_0xf54b('0x1c')](_0x129276);}};}function respondWithFilteredResult(_0x117b8f,_0xdd2864){return function(_0x2c5a42){if(_0x2c5a42){var _0x5da0c0=typeof _0xdd2864[_0xf54b('0x1d')]===_0xf54b('0x1e')&&typeof _0xdd2864[_0xf54b('0x1f')]==='undefined';var _0x586a33=_0x2c5a42[_0xf54b('0x20')];var _0x218cfe=_0x5da0c0?0x0:_0xdd2864[_0xf54b('0x1d')];var _0x132d92=_0x5da0c0?_0x2c5a42[_0xf54b('0x20')]:_0xdd2864['offset']+_0xdd2864[_0xf54b('0x1f')];var _0x4d7ea1;if(_0x132d92>=_0x586a33){_0x132d92=_0x586a33;_0x4d7ea1=0xc8;}else{_0x4d7ea1=0xce;}_0x117b8f[_0xf54b('0x21')](_0x4d7ea1);return _0x117b8f[_0xf54b('0x22')](_0xf54b('0x23'),_0x218cfe+'-'+_0x132d92+'/'+_0x586a33)[_0xf54b('0x1c')](_0x2c5a42);}return null;};}function patchUpdates(_0x5a6447){return function(_0x3f87c2){try{jsonpatch[_0xf54b('0x24')](_0x3f87c2,_0x5a6447,!![]);}catch(_0x2681a0){return BPromise[_0xf54b('0x25')](_0x2681a0);}return _0x3f87c2[_0xf54b('0x26')]();};}function saveUpdates(_0x44d13a,_0x2a1863){return function(_0x38d942){if(_0x38d942){return _0x38d942[_0xf54b('0x27')](_0x44d13a)[_0xf54b('0x28')](function(_0x4ae2d3){return _0x4ae2d3;});}return null;};}function removeEntity(_0x2a3562,_0x5389bb){return function(_0x50b967){if(_0x50b967){return _0x50b967[_0xf54b('0x29')]()[_0xf54b('0x28')](function(){var _0x579e29=_0x50b967[_0xf54b('0x2a')]({'plain':!![]});var _0x2a3c=_0xf54b('0x2b');return db['UserProfileResource'][_0xf54b('0x29')]({'where':{'type':_0x2a3c,'resourceId':_0x579e29['id']}})[_0xf54b('0x28')](function(){return _0x50b967;});})[_0xf54b('0x28')](function(){_0x2a3562[_0xf54b('0x21')](0xcc)[_0xf54b('0x1b')]();});}};}function handleEntityNotFound(_0x108911,_0xeac7e3){return function(_0x533a66){if(!_0x533a66){_0x108911[_0xf54b('0x1a')](0x194);}return _0x533a66;};}function handleError(_0x98bcd6,_0x4bdda7){_0x4bdda7=_0x4bdda7||0x1f4;return function(_0x268364){logger[_0xf54b('0x2c')](_0x268364[_0xf54b('0x2d')]);if(_0x268364[_0xf54b('0x2e')]){delete _0x268364[_0xf54b('0x2e')];}_0x98bcd6['status'](_0x4bdda7)[_0xf54b('0x2f')](_0x268364);};}exports['index']=function(_0x3aec23,_0x1395be){var _0x234b9d={},_0x14b841={},_0xf146a1={'count':0x0,'rows':[]};var _0x43ccf4=_[_0xf54b('0x30')](db[_0xf54b('0x31')]['rawAttributes'],function(_0x541e25){return{'name':_0x541e25[_0xf54b('0x32')],'type':_0x541e25[_0xf54b('0x33')][_0xf54b('0x34')]};});_0x14b841[_0xf54b('0x35')]=_[_0xf54b('0x30')](_0x43ccf4,'name');_0x14b841[_0xf54b('0x36')]=_[_0xf54b('0x37')](_0x3aec23['query']);_0x14b841[_0xf54b('0x38')]=_[_0xf54b('0x39')](_0x14b841['model'],_0x14b841[_0xf54b('0x36')]);_0x234b9d[_0xf54b('0x3a')]=_[_0xf54b('0x39')](_0x14b841[_0xf54b('0x35')],qs[_0xf54b('0x3b')](_0x3aec23[_0xf54b('0x36')][_0xf54b('0x3b')]));_0x234b9d[_0xf54b('0x3a')]=_0x234b9d[_0xf54b('0x3a')]['length']?_0x234b9d[_0xf54b('0x3a')]:_0x14b841[_0xf54b('0x35')];if(!_0x3aec23[_0xf54b('0x36')][_0xf54b('0x3c')](_0xf54b('0x3d'))){_0x234b9d[_0xf54b('0x1f')]=qs[_0xf54b('0x1f')](_0x3aec23[_0xf54b('0x36')][_0xf54b('0x1f')]);_0x234b9d[_0xf54b('0x1d')]=qs['offset'](_0x3aec23['query'][_0xf54b('0x1d')]);}_0x234b9d[_0xf54b('0x3e')]=qs[_0xf54b('0x3f')](_0x3aec23[_0xf54b('0x36')][_0xf54b('0x3f')]);_0x234b9d[_0xf54b('0x40')]=qs[_0xf54b('0x38')](_['pick'](_0x3aec23['query'],_0x14b841[_0xf54b('0x38')]),_0x43ccf4);if(_0x3aec23[_0xf54b('0x36')][_0xf54b('0x41')]){_0x234b9d[_0xf54b('0x40')]=_['merge'](_0x234b9d[_0xf54b('0x40')],{'$or':_[_0xf54b('0x30')](_0x43ccf4,function(_0x1b0794){if(_0x1b0794['type']!==_0xf54b('0x42')){var _0x26f5b6={};_0x26f5b6[_0x1b0794[_0xf54b('0x2e')]]={'$like':'%'+_0x3aec23['query'][_0xf54b('0x41')]+'%'};return _0x26f5b6;}})});}_0x234b9d=_[_0xf54b('0x43')]({},_0x234b9d,_0x3aec23[_0xf54b('0x44')]);var _0x4c594c={'where':_0x234b9d['where']};return db[_0xf54b('0x31')]['count'](_0x4c594c)[_0xf54b('0x28')](function(_0x24c3bd){_0xf146a1['count']=_0x24c3bd;if(_0x3aec23[_0xf54b('0x36')][_0xf54b('0x45')]){_0x234b9d[_0xf54b('0x46')]=[{'all':!![]}];}return db[_0xf54b('0x31')][_0xf54b('0x47')](_0x234b9d);})[_0xf54b('0x28')](function(_0x40e550){_0xf146a1['rows']=_0x40e550;return _0xf146a1;})[_0xf54b('0x28')](respondWithFilteredResult(_0x1395be,_0x234b9d))[_0xf54b('0x48')](handleError(_0x1395be,null));};exports[_0xf54b('0x49')]=function(_0x3d2cee,_0xf2a498){var _0x3b8812={'raw':!![],'where':{'id':_0x3d2cee['params']['id']}},_0x340b3b={};_0x340b3b[_0xf54b('0x35')]=_[_0xf54b('0x37')](db[_0xf54b('0x31')][_0xf54b('0x4a')]);_0x340b3b['query']=_[_0xf54b('0x37')](_0x3d2cee['query']);_0x340b3b['filters']=_['intersection'](_0x340b3b[_0xf54b('0x35')],_0x340b3b['query']);_0x3b8812[_0xf54b('0x3a')]=_[_0xf54b('0x39')](_0x340b3b[_0xf54b('0x35')],qs[_0xf54b('0x3b')](_0x3d2cee['query'][_0xf54b('0x3b')]));_0x3b8812[_0xf54b('0x3a')]=_0x3b8812[_0xf54b('0x3a')][_0xf54b('0x4b')]?_0x3b8812['attributes']:_0x340b3b[_0xf54b('0x35')];if(_0x3d2cee[_0xf54b('0x36')][_0xf54b('0x45')]){_0x3b8812[_0xf54b('0x46')]=[{'all':!![]}];}_0x3b8812=_['merge']({},_0x3b8812,_0x3d2cee[_0xf54b('0x44')]);return db[_0xf54b('0x31')][_0xf54b('0x4c')](_0x3b8812)[_0xf54b('0x28')](handleEntityNotFound(_0xf2a498,null))['then'](respondWithResult(_0xf2a498,null))['catch'](handleError(_0xf2a498,null));};exports[_0xf54b('0x4d')]=function(_0x1adf36,_0x9e24cc){return db[_0xf54b('0x31')][_0xf54b('0x4d')](_0x1adf36[_0xf54b('0x4e')],{})[_0xf54b('0x28')](function(_0x22cfb1){var _0x33f516=_0x1adf36['user'][_0xf54b('0x2a')]({'plain':!![]});if(!_0x33f516)throw new Error(_0xf54b('0x4f'));if(_0x33f516['role']===_0xf54b('0x50')){var _0x522ae8=_0x22cfb1[_0xf54b('0x2a')]({'plain':!![]});var _0x469c90='FaxQueues';return db['UserProfileSection'][_0xf54b('0x4c')]({'where':{'name':_0x469c90,'userProfileId':_0x33f516[_0xf54b('0x51')]},'raw':!![]})[_0xf54b('0x28')](function(_0x3437c3){if(_0x3437c3&&_0x3437c3[_0xf54b('0x52')]===0x0){return db[_0xf54b('0x53')]['create']({'name':_0x522ae8['name'],'resourceId':_0x522ae8['id'],'type':_0x3437c3[_0xf54b('0x2e')],'sectionId':_0x3437c3['id']},{})[_0xf54b('0x28')](function(){return _0x22cfb1;});}else{return _0x22cfb1;}})[_0xf54b('0x48')](function(_0x4f6c13){logger[_0xf54b('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4f6c13);throw _0x4f6c13;});}return _0x22cfb1;})[_0xf54b('0x28')](respondWithResult(_0x9e24cc,0xc9))[_0xf54b('0x48')](handleError(_0x9e24cc,null));};exports[_0xf54b('0x27')]=function(_0x117ad9,_0x2c33a7){if(_0x117ad9[_0xf54b('0x4e')]['id']){delete _0x117ad9[_0xf54b('0x4e')]['id'];}return db[_0xf54b('0x31')][_0xf54b('0x4c')]({'where':{'id':_0x117ad9[_0xf54b('0x54')]['id']}})[_0xf54b('0x28')](handleEntityNotFound(_0x2c33a7,null))['then'](saveUpdates(_0x117ad9['body'],null))[_0xf54b('0x28')](respondWithResult(_0x2c33a7,null))['catch'](handleError(_0x2c33a7,null));};exports[_0xf54b('0x29')]=function(_0x1c60e8,_0x37c09f){return db['FaxQueue'][_0xf54b('0x4c')]({'where':{'id':_0x1c60e8[_0xf54b('0x54')]['id']}})[_0xf54b('0x28')](handleEntityNotFound(_0x37c09f,null))[_0xf54b('0x28')](removeEntity(_0x37c09f,null))[_0xf54b('0x48')](handleError(_0x37c09f,null));};exports[_0xf54b('0x55')]=function(_0x27660b,_0x430554){return db[_0xf54b('0x31')][_0xf54b('0x55')]()[_0xf54b('0x28')](respondWithResult(_0x430554,null))[_0xf54b('0x48')](handleError(_0x430554,null));};exports[_0xf54b('0x56')]=function(_0x590f48,_0x59a0e4,_0x20d8fd){var _0x5ef8fd={'raw':!![],'where':{}},_0x366dd6={},_0x2fcc94;return db[_0xf54b('0x31')][_0xf54b('0x57')]({'where':{'id':_0x590f48['params']['id']}})[_0xf54b('0x28')](handleEntityNotFound(_0x59a0e4,null))[_0xf54b('0x28')](function(_0x555d38){if(_0x555d38){_0x2fcc94=_0x555d38[_0xf54b('0x2a')]({'plain':!![]});_0x366dd6[_0xf54b('0x35')]=_['keys'](db['UserFaxQueue']['rawAttributes']);_0x366dd6[_0xf54b('0x36')]=_[_0xf54b('0x37')](_0x590f48[_0xf54b('0x36')]);_0x366dd6[_0xf54b('0x38')]=_['intersection'](_0x366dd6['model'],_0x366dd6[_0xf54b('0x36')]);_0x5ef8fd['attributes']=_['intersection'](_0x366dd6[_0xf54b('0x35')],qs[_0xf54b('0x3b')](_0x590f48[_0xf54b('0x36')][_0xf54b('0x3b')]));_0x5ef8fd[_0xf54b('0x3a')]=_0x5ef8fd[_0xf54b('0x3a')]['length']?_0x5ef8fd[_0xf54b('0x3a')]:_0x366dd6[_0xf54b('0x35')];if(!_0x590f48[_0xf54b('0x36')][_0xf54b('0x3c')](_0xf54b('0x3d'))){_0x5ef8fd[_0xf54b('0x1f')]=qs[_0xf54b('0x1f')](_0x590f48[_0xf54b('0x36')]['limit']);_0x5ef8fd[_0xf54b('0x1d')]=qs[_0xf54b('0x1d')](_0x590f48[_0xf54b('0x36')][_0xf54b('0x1d')]);}_0x5ef8fd['order']=qs[_0xf54b('0x3f')](_0x590f48[_0xf54b('0x36')]['sort']);_0x5ef8fd[_0xf54b('0x40')]=qs['filters'](_[_0xf54b('0x58')](_0x590f48[_0xf54b('0x36')],_0x366dd6[_0xf54b('0x38')]));_0x5ef8fd[_0xf54b('0x40')][_0xf54b('0x59')]=_0x555d38['id'];if(_0x590f48[_0xf54b('0x36')][_0xf54b('0x41')]){_0x5ef8fd['where']=_[_0xf54b('0x43')](_0x5ef8fd[_0xf54b('0x40')],{'$or':_['map'](_0x5ef8fd[_0xf54b('0x3a')],function(_0x202009){var _0x56294b={};_0x56294b[_0x202009]={'$like':'%'+_0x590f48['query'][_0xf54b('0x41')]+'%'};return _0x56294b;})});}_0x5ef8fd=_[_0xf54b('0x43')]({},_0x5ef8fd,_0x590f48[_0xf54b('0x44')]);return db[_0xf54b('0x5a')][_0xf54b('0x47')](_0x5ef8fd);}})['then'](function(_0x55c75c){if(_0x55c75c){return db[_0xf54b('0x5b')][_0xf54b('0x5c')]({'where':{'id':_[_0xf54b('0x30')](_0x55c75c,_0xf54b('0x5d')),'role':_0xf54b('0x5e')},'attributes':['id',_0xf54b('0x2e'),_0xf54b('0x5f'),_0xf54b('0x60'),_0xf54b('0x61')]});}})[_0xf54b('0x28')](function(_0x521504){if(_0x521504){return{'count':_0x521504['count'],'rows':_[_0xf54b('0x30')](_0x521504[_0xf54b('0x62')],function(_0x46fd53){return{'membername':_0x46fd53[_0xf54b('0x2e')],'UserId':_0x46fd53['id'],'queue_name':_0x2fcc94[_0xf54b('0x2e')],'FaxQueueId':_0x2fcc94['id'],'interface':util['format'](_0xf54b('0x63'),_0xf54b('0x64'),_0x46fd53[_0xf54b('0x2e')]),'penalty':0x0,'paused':_0x46fd53['faxPause'],'createdAt':_0x46fd53[_0xf54b('0x61')],'updatedAt':_0x46fd53[_0xf54b('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xf54b('0x28')](respondWithFilteredResult(_0x59a0e4,_0x5ef8fd))['catch'](handleError(_0x59a0e4,null));};exports['getTeams']=function(_0x1cc416,_0x5daa31,_0x398181){var _0x592311={};var _0x4f8132={};var _0x375756;var _0x390a63;return db['FaxQueue']['findOne']({'where':{'id':_0x1cc416[_0xf54b('0x54')]['id']}})[_0xf54b('0x28')](handleEntityNotFound(_0x5daa31,null))[_0xf54b('0x28')](function(_0x2933c7){if(_0x2933c7){_0x375756=_0x2933c7;_0x4f8132['model']=_[_0xf54b('0x37')](db[_0xf54b('0x65')][_0xf54b('0x4a')]);_0x4f8132['query']=_[_0xf54b('0x37')](_0x1cc416['query']);_0x4f8132['filters']=_[_0xf54b('0x39')](_0x4f8132[_0xf54b('0x35')],_0x4f8132[_0xf54b('0x36')]);_0x592311[_0xf54b('0x3a')]=_[_0xf54b('0x39')](_0x4f8132[_0xf54b('0x35')],qs['fields'](_0x1cc416['query'][_0xf54b('0x3b')]));_0x592311['attributes']=_0x592311[_0xf54b('0x3a')][_0xf54b('0x4b')]?_0x592311[_0xf54b('0x3a')]:_0x4f8132[_0xf54b('0x35')];_0x592311[_0xf54b('0x3e')]=qs[_0xf54b('0x3f')](_0x1cc416[_0xf54b('0x36')]['sort']);_0x592311[_0xf54b('0x40')]=qs[_0xf54b('0x38')](_[_0xf54b('0x58')](_0x1cc416[_0xf54b('0x36')],_0x4f8132[_0xf54b('0x38')]));if(_0x1cc416[_0xf54b('0x36')][_0xf54b('0x41')]){_0x592311[_0xf54b('0x40')]=_[_0xf54b('0x43')](_0x592311[_0xf54b('0x40')],{'$or':_[_0xf54b('0x30')](_0x592311['attributes'],function(_0x196bc2){var _0x3c2f98={};_0x3c2f98[_0x196bc2]={'$like':'%'+_0x1cc416[_0xf54b('0x36')][_0xf54b('0x41')]+'%'};return _0x3c2f98;})});}_0x592311=_['merge']({},_0x592311,_0x1cc416[_0xf54b('0x44')]);return _0x375756[_0xf54b('0x66')](_0x592311);}})[_0xf54b('0x28')](function(_0x3fd01f){if(_0x3fd01f){_0x390a63=_0x3fd01f['length'];if(!_0x1cc416[_0xf54b('0x36')]['hasOwnProperty']('nolimit')){_0x592311['limit']=qs[_0xf54b('0x1f')](_0x1cc416[_0xf54b('0x36')][_0xf54b('0x1f')]);_0x592311[_0xf54b('0x1d')]=qs['offset'](_0x1cc416[_0xf54b('0x36')][_0xf54b('0x1d')]);}return _0x375756[_0xf54b('0x66')](_0x592311);}})['then'](function(_0x598b1f){if(_0x598b1f){return _0x598b1f?{'count':_0x390a63,'rows':_0x598b1f}:null;}})[_0xf54b('0x28')](respondWithResult(_0x5daa31,null))['catch'](handleError(_0x5daa31,null));};exports[_0xf54b('0x67')]=function(_0x20cd14,_0x1b11a5,_0xfdab3d){var _0x2a3ac2=_0x20cd14[_0xf54b('0x4e')][_0xf54b('0x68')];return db[_0xf54b('0x65')][_0xf54b('0x47')]({'where':{'id':_0x2a3ac2},'attributes':['id'],'include':[{'model':db[_0xf54b('0x5b')],'as':'Agents','attributes':['id',_0xf54b('0x2e'),_0xf54b('0x69'),_0xf54b('0x6a'),_0xf54b('0x6b')],'raw':!![]}]})['then'](function(_0x5215fe){if(_0x5215fe){var _0x2fc8cc=_[_0xf54b('0x6c')](_0x5215fe,function(_0x1fa5b8){var _0x47195f=_0x1fa5b8[_0xf54b('0x2a')]({'plain':!![]});return _0x47195f[_0xf54b('0x6d')];});return db[_0xf54b('0x31')]['find']({'where':{'id':_0x20cd14['params']['id']}})[_0xf54b('0x28')](function(_0x172dd6){return db[_0xf54b('0x6e')]['transaction'](function(_0x49731e){return _0x172dd6[_0xf54b('0x67')](_0x2a3ac2,{'transaction':_0x49731e})[_0xf54b('0x28')](function(){return BPromise[_0xf54b('0x6f')](_0x2fc8cc,function(_0x124792){return db['UserFaxQueue'][_0xf54b('0x70')]({'where':{'UserId':_0x124792['id'],'FaxQueueId':_0x20cd14[_0xf54b('0x54')]['id']},'transaction':_0x49731e});});})['then'](function(){_0x2fc8cc[_0xf54b('0x71')](function(_0x521efe){socket[_0xf54b('0x72')]('userFaxQueue:save',{'UserId':_0x521efe['id'],'FaxQueueId':_0x172dd6['id']});});});});});}})[_0xf54b('0x28')](respondWithStatusCode(_0x1b11a5,null))[_0xf54b('0x48')](handleError(_0x1b11a5,null));};exports[_0xf54b('0x73')]=function(_0x50a0d1,_0x4ab38c,_0x2de268){return db['Team'][_0xf54b('0x47')]({'where':{'id':_0x50a0d1[_0xf54b('0x36')][_0xf54b('0x68')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xf54b('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xf54b('0x28')](handleEntityNotFound(_0x4ab38c,null))[_0xf54b('0x28')](function(_0x2891f9){var _0x6f35ef=_[_0xf54b('0x30')](_0x2891f9,'id');var _0x5d2b6e=[];var _0x2eb7fe=[];var _0x12fb73=squel[_0xf54b('0x74')]();_0x12fb73['field'](_0xf54b('0x75'))['from'](_0xf54b('0x76'),'tq')[_0xf54b('0x77')](_0xf54b('0x78'),'ut',_0xf54b('0x79'))[_0xf54b('0x40')]('FaxQueueId\x20=\x20?',_0x50a0d1[_0xf54b('0x54')]['id']);for(var _0x293120=0x0;_0x293120<_0x2891f9['length'];_0x293120+=0x1){let _0x47e3c5=_0x2891f9[_0x293120];for(var _0x50f285=0x0;_0x50f285<_0x47e3c5[_0xf54b('0x6d')][_0xf54b('0x4b')];_0x50f285+=0x1){let _0x4117f6=_0x47e3c5[_0xf54b('0x6d')][_0x50f285];var _0xdfbd6f=_0x12fb73[_0xf54b('0x7a')]();_0xdfbd6f[_0xf54b('0x40')](_0xf54b('0x7b'),_0x4117f6['id']);_0x2eb7fe[_0xf54b('0x7c')](db[_0xf54b('0x6e')][_0xf54b('0x36')](_0xdfbd6f[_0xf54b('0x7d')](),{'type':db[_0xf54b('0x6e')][_0xf54b('0x7e')][_0xf54b('0x7f')]})[_0xf54b('0x28')](function(_0x14c566){if(_0x14c566[_0xf54b('0x4b')]===0x1){return _0x4117f6['id'];}else{var _0x583e6a=_[_0xf54b('0x80')](_[_0xf54b('0x30')](_0x14c566,_0xf54b('0x81')),function(_0x169a7f){return _[_0xf54b('0x82')](_0x6f35ef,_0x169a7f);});if(_0x583e6a){return _0x4117f6['id'];}}}));}}return BPromise[_0xf54b('0x83')](_0x2eb7fe)[_0xf54b('0x28')](function(_0x1d3a0d){_0x5d2b6e=_(_0x5d2b6e)['union'](_0x1d3a0d)[_0xf54b('0x84')]()['value']();return db[_0xf54b('0x31')][_0xf54b('0x4c')]({'where':{'id':_0x50a0d1['params']['id']}})[_0xf54b('0x28')](function(_0xdd102){return db[_0xf54b('0x6e')][_0xf54b('0x85')](function(_0x720647){return _0xdd102[_0xf54b('0x73')](_0x50a0d1[_0xf54b('0x36')][_0xf54b('0x68')],{'transaction':_0x720647})['then'](function(){if(!_['isEmpty'](_0x5d2b6e)){return _0xdd102['removeAgents'](_0x5d2b6e,{'transaction':_0x720647});}})[_0xf54b('0x28')](function(){_0x5d2b6e[_0xf54b('0x71')](function(_0x145117){socket[_0xf54b('0x72')](_0xf54b('0x86'),{'UserId':_0x145117,'FaxQueueId':_0xdd102['id']});});});});});});})['then'](respondWithStatusCode(_0x4ab38c,null))[_0xf54b('0x48')](handleError(_0x4ab38c,null));};exports[_0xf54b('0x87')]=function(_0x296dd6,_0x1f688b,_0x47a8f4){return db[_0xf54b('0x31')]['find']({'where':{'id':_0x296dd6[_0xf54b('0x54')]['id']}})[_0xf54b('0x28')](handleEntityNotFound(_0x1f688b,null))[_0xf54b('0x28')](function(_0x58fac5){if(_0x58fac5){return _0x58fac5[_0xf54b('0x87')](_0x296dd6['body']['ids'],_[_0xf54b('0x88')](_0x296dd6[_0xf54b('0x4e')],[_0xf54b('0x68'),'id'])||{})[_0xf54b('0x89')](function(_0x7910fb){for(var _0x81a5d0=0x0;_0x81a5d0<_0x296dd6[_0xf54b('0x4e')][_0xf54b('0x68')][_0xf54b('0x4b')];_0x81a5d0+=0x1){socket[_0xf54b('0x72')](_0xf54b('0x8a'),{'UserId':Number(_0x296dd6[_0xf54b('0x4e')][_0xf54b('0x68')][_0x81a5d0]),'FaxQueueId':Number(_0x296dd6[_0xf54b('0x54')]['id'])});}return _0x7910fb;});}})[_0xf54b('0x28')](respondWithResult(_0x1f688b,null))[_0xf54b('0x48')](handleError(_0x1f688b,null));};exports['removeAgents']=function(_0x25c770,_0x51f6c1,_0x27344f){return db[_0xf54b('0x31')][_0xf54b('0x4c')]({'where':{'id':_0x25c770[_0xf54b('0x54')]['id']}})['then'](handleEntityNotFound(_0x51f6c1,null))[_0xf54b('0x28')](function(_0x4e0063){if(_0x4e0063){return _0x4e0063[_0xf54b('0x8b')](_0x25c770[_0xf54b('0x36')][_0xf54b('0x68')])[_0xf54b('0x28')](function(){if(_['isArray'](_0x25c770[_0xf54b('0x36')][_0xf54b('0x68')])){for(var _0x14cd6a=0x0;_0x14cd6a<_0x25c770[_0xf54b('0x36')]['ids'][_0xf54b('0x4b')];_0x14cd6a+=0x1){socket[_0xf54b('0x72')](_0xf54b('0x86'),{'UserId':Number(_0x25c770[_0xf54b('0x36')][_0xf54b('0x68')][_0x14cd6a]),'FaxQueueId':Number(_0x25c770[_0xf54b('0x54')]['id'])});}}else{socket[_0xf54b('0x72')]('userFaxQueue:remove',{'UserId':Number(_0x25c770[_0xf54b('0x36')][_0xf54b('0x68')]),'FaxQueueId':Number(_0x25c770[_0xf54b('0x54')]['id'])});}});}})[_0xf54b('0x28')](respondWithStatusCode(_0x51f6c1,null))[_0xf54b('0x48')](handleError(_0x51f6c1,null));};exports['getAgents']=function(_0x21de36,_0x4f0d9a,_0x5edcfd){var _0x2fa251={};var _0x1e9607={};var _0x574bdd;var _0x1afcd3;return db[_0xf54b('0x31')]['findOne']({'where':{'id':_0x21de36['params']['id']}})['then'](handleEntityNotFound(_0x4f0d9a,null))['then'](function(_0x54ce72){if(_0x54ce72){_0x574bdd=_0x54ce72;_0x1e9607[_0xf54b('0x35')]=_[_0xf54b('0x37')](db[_0xf54b('0x5b')]['rawAttributes']);_0x1e9607[_0xf54b('0x36')]=_[_0xf54b('0x37')](_0x21de36[_0xf54b('0x36')]);_0x1e9607[_0xf54b('0x38')]=_['intersection'](_0x1e9607['model'],_0x1e9607[_0xf54b('0x36')]);_0x2fa251[_0xf54b('0x3a')]=_['intersection'](_0x1e9607['model'],qs['fields'](_0x21de36['query'][_0xf54b('0x3b')]));_0x2fa251[_0xf54b('0x3a')]=_0x2fa251['attributes'][_0xf54b('0x4b')]?_0x2fa251['attributes']:_0x1e9607[_0xf54b('0x35')];_0x2fa251['order']=qs[_0xf54b('0x3f')](_0x21de36[_0xf54b('0x36')]['sort']);_0x2fa251[_0xf54b('0x40')]=qs[_0xf54b('0x38')](_['pick'](_0x21de36['query'],_0x1e9607[_0xf54b('0x38')]));if(_0x21de36[_0xf54b('0x36')][_0xf54b('0x41')]){_0x2fa251[_0xf54b('0x40')]=_['merge'](_0x2fa251['where'],{'$or':_['map'](_0x2fa251['attributes'],function(_0xa7ac5){var _0x50f132={};_0x50f132[_0xa7ac5]={'$like':'%'+_0x21de36[_0xf54b('0x36')][_0xf54b('0x41')]+'%'};return _0x50f132;})});}_0x2fa251=_[_0xf54b('0x43')]({},_0x2fa251,_0x21de36[_0xf54b('0x44')]);return _0x574bdd[_0xf54b('0x8c')](_0x2fa251);}})[_0xf54b('0x28')](function(_0x4e10d8){if(_0x4e10d8){_0x1afcd3=_0x4e10d8['length'];if(!_0x21de36[_0xf54b('0x36')]['hasOwnProperty'](_0xf54b('0x3d'))){_0x2fa251[_0xf54b('0x1f')]=qs[_0xf54b('0x1f')](_0x21de36[_0xf54b('0x36')][_0xf54b('0x1f')]);_0x2fa251[_0xf54b('0x1d')]=qs[_0xf54b('0x1d')](_0x21de36['query']['offset']);}return _0x574bdd[_0xf54b('0x8c')](_0x2fa251);}})[_0xf54b('0x28')](function(_0x250c73){if(_0x250c73){return _0x250c73?{'count':_0x1afcd3,'rows':_0x250c73}:null;}})[_0xf54b('0x28')](respondWithResult(_0x4f0d9a,null))[_0xf54b('0x48')](handleError(_0x4f0d9a,null));};
\ No newline at end of file
+var _0x6be0=['bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','get','FaxQueues','stack','name','index','map','FaxQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getMembers','findOne','UserFaxQueue','nolimit','sort','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','format','%s/%s','SIP','Team','getTeams','addTeams','ids','Agents','online','voicePause','interface','sequelize','transaction','each','emit','removeTeams','select','field','from','team_has_fax_queues','user_has_teams','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','forEach','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x2fd2a4,_0x495002){var _0x1e7131=function(_0xc702cf){while(--_0xc702cf){_0x2fd2a4['push'](_0x2fd2a4['shift']());}};_0x1e7131(++_0x495002);}(_0x6be0,0x1ae));var _0x06be=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6be0[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x06be('0x0'));var zipdir=require(_0x06be('0x1'));var jsonpatch=require(_0x06be('0x2'));var rp=require(_0x06be('0x3'));var moment=require(_0x06be('0x4'));var BPromise=require(_0x06be('0x5'));var Mustache=require(_0x06be('0x6'));var util=require('util');var path=require(_0x06be('0x7'));var sox=require(_0x06be('0x8'));var csv=require(_0x06be('0x9'));var ejs=require(_0x06be('0xa'));var fs=require('fs');var fs_extra=require(_0x06be('0xb'));var _=require(_0x06be('0xc'));var squel=require(_0x06be('0xd'));var crypto=require('crypto');var jsforce=require(_0x06be('0xe'));var deskjs=require(_0x06be('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x06be('0x10'));var Redis=require(_0x06be('0x11'));var authService=require(_0x06be('0x12'));var qs=require(_0x06be('0x13'));var as=require(_0x06be('0x14'));var hardwareService=require(_0x06be('0x15'));var logger=require(_0x06be('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x06be('0x17'));var db=require('../../mysqldb')['db'];config[_0x06be('0x18')]=_[_0x06be('0x19')](config[_0x06be('0x18')],{'host':_0x06be('0x1a'),'port':0x18eb});var socket=require(_0x06be('0x1b'))(new Redis(config[_0x06be('0x18')]));require(_0x06be('0x1c'))[_0x06be('0x1d')](socket);function respondWithStatusCode(_0x5ba12d,_0x50754c){_0x50754c=_0x50754c||0xcc;return function(_0x4cb9f5){if(_0x4cb9f5){return _0x5ba12d[_0x06be('0x1e')](_0x50754c);}return _0x5ba12d[_0x06be('0x1f')](_0x50754c)[_0x06be('0x20')]();};}function respondWithResult(_0x2680f9,_0xe9ea1b){_0xe9ea1b=_0xe9ea1b||0xc8;return function(_0x3766a6){if(_0x3766a6){return _0x2680f9[_0x06be('0x1f')](_0xe9ea1b)['json'](_0x3766a6);}};}function respondWithFilteredResult(_0x19b588,_0xa17863){return function(_0x1bc61c){if(_0x1bc61c){var _0x59b740=typeof _0xa17863[_0x06be('0x21')]===_0x06be('0x22')&&typeof _0xa17863[_0x06be('0x23')]===_0x06be('0x22');var _0x11dab1=_0x1bc61c[_0x06be('0x24')];var _0x2169cf=_0x59b740?0x0:_0xa17863['offset'];var _0x128910=_0x59b740?_0x1bc61c['count']:_0xa17863['offset']+_0xa17863[_0x06be('0x23')];var _0x592ed5;if(_0x128910>=_0x11dab1){_0x128910=_0x11dab1;_0x592ed5=0xc8;}else{_0x592ed5=0xce;}_0x19b588[_0x06be('0x1f')](_0x592ed5);return _0x19b588[_0x06be('0x25')](_0x06be('0x26'),_0x2169cf+'-'+_0x128910+'/'+_0x11dab1)[_0x06be('0x27')](_0x1bc61c);}return null;};}function patchUpdates(_0x4a02de){return function(_0x364300){try{jsonpatch['apply'](_0x364300,_0x4a02de,!![]);}catch(_0x4a1884){return BPromise[_0x06be('0x28')](_0x4a1884);}return _0x364300['save']();};}function saveUpdates(_0x1456ea,_0x199d52){return function(_0x5d5a1a){if(_0x5d5a1a){return _0x5d5a1a[_0x06be('0x29')](_0x1456ea)[_0x06be('0x2a')](function(_0x381059){return _0x381059;});}return null;};}function removeEntity(_0x5a9367,_0x809221){return function(_0x46c841){if(_0x46c841){return _0x46c841[_0x06be('0x2b')]()[_0x06be('0x2a')](function(){var _0xdf9797=_0x46c841[_0x06be('0x2c')]({'plain':!![]});var _0x321d52=_0x06be('0x2d');return db['UserProfileResource'][_0x06be('0x2b')]({'where':{'type':_0x321d52,'resourceId':_0xdf9797['id']}})[_0x06be('0x2a')](function(){return _0x46c841;});})['then'](function(){_0x5a9367[_0x06be('0x1f')](0xcc)[_0x06be('0x20')]();});}};}function handleEntityNotFound(_0x54a8c7,_0x3c74c2){return function(_0x5cdf9d){if(!_0x5cdf9d){_0x54a8c7['sendStatus'](0x194);}return _0x5cdf9d;};}function handleError(_0x4ff88c,_0x29809a){_0x29809a=_0x29809a||0x1f4;return function(_0x1ddf37){logger['error'](_0x1ddf37[_0x06be('0x2e')]);if(_0x1ddf37[_0x06be('0x2f')]){delete _0x1ddf37[_0x06be('0x2f')];}_0x4ff88c[_0x06be('0x1f')](_0x29809a)['send'](_0x1ddf37);};}exports[_0x06be('0x30')]=function(_0x5ca172,_0x3e44f2){var _0x499b04={},_0x53b3ce={},_0x3632ed={'count':0x0,'rows':[]};var _0x16dee1=_[_0x06be('0x31')](db[_0x06be('0x32')][_0x06be('0x33')],function(_0x399e5b){return{'name':_0x399e5b[_0x06be('0x34')],'type':_0x399e5b['type'][_0x06be('0x35')]};});_0x53b3ce[_0x06be('0x36')]=_['map'](_0x16dee1,_0x06be('0x2f'));_0x53b3ce[_0x06be('0x37')]=_[_0x06be('0x38')](_0x5ca172[_0x06be('0x37')]);_0x53b3ce[_0x06be('0x39')]=_[_0x06be('0x3a')](_0x53b3ce[_0x06be('0x36')],_0x53b3ce['query']);_0x499b04['attributes']=_[_0x06be('0x3a')](_0x53b3ce[_0x06be('0x36')],qs[_0x06be('0x3b')](_0x5ca172['query']['fields']));_0x499b04['attributes']=_0x499b04[_0x06be('0x3c')][_0x06be('0x3d')]?_0x499b04[_0x06be('0x3c')]:_0x53b3ce[_0x06be('0x36')];if(!_0x5ca172['query'][_0x06be('0x3e')]('nolimit')){_0x499b04[_0x06be('0x23')]=qs[_0x06be('0x23')](_0x5ca172['query']['limit']);_0x499b04[_0x06be('0x21')]=qs['offset'](_0x5ca172[_0x06be('0x37')][_0x06be('0x21')]);}_0x499b04[_0x06be('0x3f')]=qs['sort'](_0x5ca172[_0x06be('0x37')]['sort']);_0x499b04[_0x06be('0x40')]=qs['filters'](_[_0x06be('0x41')](_0x5ca172[_0x06be('0x37')],_0x53b3ce['filters']),_0x16dee1);if(_0x5ca172[_0x06be('0x37')]['filter']){_0x499b04[_0x06be('0x40')]=_[_0x06be('0x42')](_0x499b04['where'],{'$or':_['map'](_0x16dee1,function(_0x9ddbb2){if(_0x9ddbb2['type']!==_0x06be('0x43')){var _0x2d1b24={};_0x2d1b24[_0x9ddbb2['name']]={'$like':'%'+_0x5ca172[_0x06be('0x37')][_0x06be('0x44')]+'%'};return _0x2d1b24;}})});}_0x499b04=_['merge']({},_0x499b04,_0x5ca172['options']);var _0x2e045a={'where':_0x499b04[_0x06be('0x40')]};return db[_0x06be('0x32')][_0x06be('0x24')](_0x2e045a)[_0x06be('0x2a')](function(_0x175978){_0x3632ed['count']=_0x175978;if(_0x5ca172[_0x06be('0x37')][_0x06be('0x45')]){_0x499b04[_0x06be('0x46')]=[{'all':!![]}];}return db['FaxQueue'][_0x06be('0x47')](_0x499b04);})['then'](function(_0x178635){_0x3632ed[_0x06be('0x48')]=_0x178635;return _0x3632ed;})['then'](respondWithFilteredResult(_0x3e44f2,_0x499b04))[_0x06be('0x49')](handleError(_0x3e44f2,null));};exports[_0x06be('0x4a')]=function(_0x549f32,_0x12fd8c){var _0x55ad7c={'raw':!![],'where':{'id':_0x549f32['params']['id']}},_0x1859e6={};_0x1859e6['model']=_[_0x06be('0x38')](db[_0x06be('0x32')][_0x06be('0x33')]);_0x1859e6['query']=_[_0x06be('0x38')](_0x549f32[_0x06be('0x37')]);_0x1859e6['filters']=_['intersection'](_0x1859e6[_0x06be('0x36')],_0x1859e6[_0x06be('0x37')]);_0x55ad7c[_0x06be('0x3c')]=_[_0x06be('0x3a')](_0x1859e6[_0x06be('0x36')],qs[_0x06be('0x3b')](_0x549f32['query'][_0x06be('0x3b')]));_0x55ad7c[_0x06be('0x3c')]=_0x55ad7c[_0x06be('0x3c')][_0x06be('0x3d')]?_0x55ad7c[_0x06be('0x3c')]:_0x1859e6['model'];if(_0x549f32['query'][_0x06be('0x45')]){_0x55ad7c['include']=[{'all':!![]}];}_0x55ad7c=_[_0x06be('0x42')]({},_0x55ad7c,_0x549f32[_0x06be('0x4b')]);return db[_0x06be('0x32')]['find'](_0x55ad7c)['then'](handleEntityNotFound(_0x12fd8c,null))['then'](respondWithResult(_0x12fd8c,null))['catch'](handleError(_0x12fd8c,null));};exports[_0x06be('0x4c')]=function(_0x455c9e,_0x2f41dd){return db[_0x06be('0x32')][_0x06be('0x4c')](_0x455c9e[_0x06be('0x4d')],{})[_0x06be('0x2a')](function(_0x494685){var _0xdcc224=_0x455c9e[_0x06be('0x4e')][_0x06be('0x2c')]({'plain':!![]});if(!_0xdcc224)throw new Error(_0x06be('0x4f'));if(_0xdcc224[_0x06be('0x50')]===_0x06be('0x4e')){var _0x31cdc0=_0x494685[_0x06be('0x2c')]({'plain':!![]});var _0x3d6a97=_0x06be('0x2d');return db[_0x06be('0x51')][_0x06be('0x52')]({'where':{'name':_0x3d6a97,'userProfileId':_0xdcc224[_0x06be('0x53')]},'raw':!![]})['then'](function(_0x48699b){if(_0x48699b&&_0x48699b[_0x06be('0x54')]===0x0){return db[_0x06be('0x55')]['create']({'name':_0x31cdc0[_0x06be('0x2f')],'resourceId':_0x31cdc0['id'],'type':_0x48699b[_0x06be('0x2f')],'sectionId':_0x48699b['id']},{})[_0x06be('0x2a')](function(){return _0x494685;});}else{return _0x494685;}})[_0x06be('0x49')](function(_0x83f400){logger[_0x06be('0x56')](_0x06be('0x57'),_0x83f400);throw _0x83f400;});}return _0x494685;})[_0x06be('0x2a')](respondWithResult(_0x2f41dd,0xc9))[_0x06be('0x49')](handleError(_0x2f41dd,null));};exports[_0x06be('0x29')]=function(_0x386516,_0x4f9ef9){if(_0x386516[_0x06be('0x4d')]['id']){delete _0x386516[_0x06be('0x4d')]['id'];}return db[_0x06be('0x32')]['find']({'where':{'id':_0x386516[_0x06be('0x58')]['id']}})[_0x06be('0x2a')](handleEntityNotFound(_0x4f9ef9,null))[_0x06be('0x2a')](saveUpdates(_0x386516['body'],null))[_0x06be('0x2a')](respondWithResult(_0x4f9ef9,null))['catch'](handleError(_0x4f9ef9,null));};exports[_0x06be('0x2b')]=function(_0x188595,_0x18027e){return db[_0x06be('0x32')][_0x06be('0x52')]({'where':{'id':_0x188595[_0x06be('0x58')]['id']}})[_0x06be('0x2a')](handleEntityNotFound(_0x18027e,null))[_0x06be('0x2a')](removeEntity(_0x18027e,null))[_0x06be('0x49')](handleError(_0x18027e,null));};exports['describe']=function(_0x533be9,_0x514c17){return db['FaxQueue']['describe']()[_0x06be('0x2a')](respondWithResult(_0x514c17,null))[_0x06be('0x49')](handleError(_0x514c17,null));};exports[_0x06be('0x59')]=function(_0x268246,_0x36592e,_0x13f557){var _0x393f8c={'raw':!![],'where':{}},_0x446422={},_0x4a1639;return db['FaxQueue'][_0x06be('0x5a')]({'where':{'id':_0x268246[_0x06be('0x58')]['id']}})[_0x06be('0x2a')](handleEntityNotFound(_0x36592e,null))['then'](function(_0x220fa1){if(_0x220fa1){_0x4a1639=_0x220fa1['get']({'plain':!![]});_0x446422[_0x06be('0x36')]=_[_0x06be('0x38')](db[_0x06be('0x5b')][_0x06be('0x33')]);_0x446422[_0x06be('0x37')]=_[_0x06be('0x38')](_0x268246[_0x06be('0x37')]);_0x446422['filters']=_['intersection'](_0x446422['model'],_0x446422['query']);_0x393f8c[_0x06be('0x3c')]=_[_0x06be('0x3a')](_0x446422['model'],qs['fields'](_0x268246['query'][_0x06be('0x3b')]));_0x393f8c[_0x06be('0x3c')]=_0x393f8c[_0x06be('0x3c')][_0x06be('0x3d')]?_0x393f8c[_0x06be('0x3c')]:_0x446422['model'];if(!_0x268246['query']['hasOwnProperty'](_0x06be('0x5c'))){_0x393f8c[_0x06be('0x23')]=qs[_0x06be('0x23')](_0x268246[_0x06be('0x37')][_0x06be('0x23')]);_0x393f8c['offset']=qs[_0x06be('0x21')](_0x268246['query'][_0x06be('0x21')]);}_0x393f8c[_0x06be('0x3f')]=qs[_0x06be('0x5d')](_0x268246[_0x06be('0x37')][_0x06be('0x5d')]);_0x393f8c[_0x06be('0x40')]=qs['filters'](_['pick'](_0x268246['query'],_0x446422['filters']));_0x393f8c[_0x06be('0x40')][_0x06be('0x5e')]=_0x220fa1['id'];if(_0x268246[_0x06be('0x37')][_0x06be('0x44')]){_0x393f8c[_0x06be('0x40')]=_[_0x06be('0x42')](_0x393f8c['where'],{'$or':_[_0x06be('0x31')](_0x393f8c[_0x06be('0x3c')],function(_0x4a6e1c){var _0x315654={};_0x315654[_0x4a6e1c]={'$like':'%'+_0x268246[_0x06be('0x37')][_0x06be('0x44')]+'%'};return _0x315654;})});}_0x393f8c=_['merge']({},_0x393f8c,_0x268246[_0x06be('0x4b')]);return db[_0x06be('0x5b')][_0x06be('0x47')](_0x393f8c);}})['then'](function(_0xd5f5cb){if(_0xd5f5cb){return db[_0x06be('0x5f')][_0x06be('0x60')]({'where':{'id':_['map'](_0xd5f5cb,_0x06be('0x61')),'role':_0x06be('0x62')},'attributes':['id',_0x06be('0x2f'),_0x06be('0x63'),_0x06be('0x64'),_0x06be('0x65')]});}})[_0x06be('0x2a')](function(_0x3151f7){if(_0x3151f7){return{'count':_0x3151f7[_0x06be('0x24')],'rows':_['map'](_0x3151f7[_0x06be('0x48')],function(_0x476002){return{'membername':_0x476002[_0x06be('0x2f')],'UserId':_0x476002['id'],'queue_name':_0x4a1639[_0x06be('0x2f')],'FaxQueueId':_0x4a1639['id'],'interface':util[_0x06be('0x66')](_0x06be('0x67'),_0x06be('0x68'),_0x476002[_0x06be('0x2f')]),'penalty':0x0,'paused':_0x476002[_0x06be('0x63')],'createdAt':_0x476002['createdAt'],'updatedAt':_0x476002[_0x06be('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x06be('0x2a')](respondWithFilteredResult(_0x36592e,_0x393f8c))[_0x06be('0x49')](handleError(_0x36592e,null));};exports['getTeams']=function(_0x11a4ab,_0x44291a,_0x55a2d1){var _0x1ecfd1={};var _0xe17b5={};var _0xa09fc1;var _0x16baf4;return db[_0x06be('0x32')]['findOne']({'where':{'id':_0x11a4ab[_0x06be('0x58')]['id']}})['then'](handleEntityNotFound(_0x44291a,null))[_0x06be('0x2a')](function(_0xf56a92){if(_0xf56a92){_0xa09fc1=_0xf56a92;_0xe17b5[_0x06be('0x36')]=_[_0x06be('0x38')](db[_0x06be('0x69')][_0x06be('0x33')]);_0xe17b5[_0x06be('0x37')]=_['keys'](_0x11a4ab[_0x06be('0x37')]);_0xe17b5[_0x06be('0x39')]=_[_0x06be('0x3a')](_0xe17b5[_0x06be('0x36')],_0xe17b5[_0x06be('0x37')]);_0x1ecfd1[_0x06be('0x3c')]=_[_0x06be('0x3a')](_0xe17b5[_0x06be('0x36')],qs[_0x06be('0x3b')](_0x11a4ab[_0x06be('0x37')][_0x06be('0x3b')]));_0x1ecfd1[_0x06be('0x3c')]=_0x1ecfd1[_0x06be('0x3c')][_0x06be('0x3d')]?_0x1ecfd1['attributes']:_0xe17b5[_0x06be('0x36')];_0x1ecfd1['order']=qs[_0x06be('0x5d')](_0x11a4ab[_0x06be('0x37')]['sort']);_0x1ecfd1['where']=qs[_0x06be('0x39')](_[_0x06be('0x41')](_0x11a4ab[_0x06be('0x37')],_0xe17b5[_0x06be('0x39')]));if(_0x11a4ab[_0x06be('0x37')]['filter']){_0x1ecfd1[_0x06be('0x40')]=_[_0x06be('0x42')](_0x1ecfd1['where'],{'$or':_[_0x06be('0x31')](_0x1ecfd1[_0x06be('0x3c')],function(_0xc56a3d){var _0x432d45={};_0x432d45[_0xc56a3d]={'$like':'%'+_0x11a4ab['query'][_0x06be('0x44')]+'%'};return _0x432d45;})});}_0x1ecfd1=_[_0x06be('0x42')]({},_0x1ecfd1,_0x11a4ab[_0x06be('0x4b')]);return _0xa09fc1[_0x06be('0x6a')](_0x1ecfd1);}})[_0x06be('0x2a')](function(_0x3e1dec){if(_0x3e1dec){_0x16baf4=_0x3e1dec['length'];if(!_0x11a4ab[_0x06be('0x37')][_0x06be('0x3e')](_0x06be('0x5c'))){_0x1ecfd1[_0x06be('0x23')]=qs[_0x06be('0x23')](_0x11a4ab[_0x06be('0x37')]['limit']);_0x1ecfd1[_0x06be('0x21')]=qs[_0x06be('0x21')](_0x11a4ab[_0x06be('0x37')][_0x06be('0x21')]);}return _0xa09fc1[_0x06be('0x6a')](_0x1ecfd1);}})[_0x06be('0x2a')](function(_0x47b3cb){if(_0x47b3cb){return _0x47b3cb?{'count':_0x16baf4,'rows':_0x47b3cb}:null;}})['then'](respondWithResult(_0x44291a,null))['catch'](handleError(_0x44291a,null));};exports[_0x06be('0x6b')]=function(_0x1260d1,_0x863d89,_0x5f6054){var _0x2bc3c9=_0x1260d1[_0x06be('0x4d')][_0x06be('0x6c')];return db['Team'][_0x06be('0x47')]({'where':{'id':_0x2bc3c9},'attributes':['id'],'include':[{'model':db[_0x06be('0x5f')],'as':_0x06be('0x6d'),'attributes':['id',_0x06be('0x2f'),_0x06be('0x6e'),_0x06be('0x6f'),_0x06be('0x70')],'raw':!![]}]})[_0x06be('0x2a')](function(_0x1aa5c7){if(_0x1aa5c7){var _0x1da9ef=_['flatMap'](_0x1aa5c7,function(_0x31ac6a){var _0x3a4724=_0x31ac6a['get']({'plain':!![]});return _0x3a4724['Agents'];});return db['FaxQueue'][_0x06be('0x52')]({'where':{'id':_0x1260d1[_0x06be('0x58')]['id']}})['then'](function(_0x36ff00){return db[_0x06be('0x71')][_0x06be('0x72')](function(_0x1cf8e5){return _0x36ff00[_0x06be('0x6b')](_0x2bc3c9,{'transaction':_0x1cf8e5})[_0x06be('0x2a')](function(){return BPromise[_0x06be('0x73')](_0x1da9ef,function(_0x376225){return db[_0x06be('0x5b')]['findOrCreate']({'where':{'UserId':_0x376225['id'],'FaxQueueId':_0x1260d1[_0x06be('0x58')]['id']},'transaction':_0x1cf8e5});});})[_0x06be('0x2a')](function(){_0x1da9ef['forEach'](function(_0x5c5d96){socket[_0x06be('0x74')]('userFaxQueue:save',{'UserId':_0x5c5d96['id'],'FaxQueueId':_0x36ff00['id']});});});});});}})[_0x06be('0x2a')](respondWithStatusCode(_0x863d89,null))[_0x06be('0x49')](handleError(_0x863d89,null));};exports[_0x06be('0x75')]=function(_0x3df994,_0x23cac3,_0x2c1567){return db['Team'][_0x06be('0x47')]({'where':{'id':_0x3df994['query'][_0x06be('0x6c')]},'attributes':['id'],'include':[{'model':db[_0x06be('0x5f')],'as':_0x06be('0x6d'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x23cac3,null))[_0x06be('0x2a')](function(_0x500e0d){var _0x482b15=_['map'](_0x500e0d,'id');var _0x2832b8=[];var _0x426e94=[];var _0xdd2439=squel[_0x06be('0x76')]();_0xdd2439[_0x06be('0x77')]('tq.TeamId')[_0x06be('0x78')](_0x06be('0x79'),'tq')['join'](_0x06be('0x7a'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x06be('0x40')](_0x06be('0x7b'),_0x3df994[_0x06be('0x58')]['id']);for(var _0x387440=0x0;_0x387440<_0x500e0d['length'];_0x387440+=0x1){let _0x2a8241=_0x500e0d[_0x387440];for(var _0xf0bb15=0x0;_0xf0bb15<_0x2a8241[_0x06be('0x6d')][_0x06be('0x3d')];_0xf0bb15+=0x1){let _0x2f0d58=_0x2a8241['Agents'][_0xf0bb15];var _0x1e0b34=_0xdd2439[_0x06be('0x7c')]();_0x1e0b34[_0x06be('0x40')](_0x06be('0x7d'),_0x2f0d58['id']);_0x426e94[_0x06be('0x7e')](db[_0x06be('0x71')][_0x06be('0x37')](_0x1e0b34[_0x06be('0x7f')](),{'type':db[_0x06be('0x71')][_0x06be('0x80')][_0x06be('0x81')]})[_0x06be('0x2a')](function(_0x10f96b){if(_0x10f96b['length']===0x1){return _0x2f0d58['id'];}else{var _0x32d162=_['every'](_[_0x06be('0x31')](_0x10f96b,_0x06be('0x82')),function(_0xa1b459){return _[_0x06be('0x83')](_0x482b15,_0xa1b459);});if(_0x32d162){return _0x2f0d58['id'];}}}));}}return BPromise[_0x06be('0x84')](_0x426e94)[_0x06be('0x2a')](function(_0x2c251d){_0x2832b8=_(_0x2832b8)[_0x06be('0x85')](_0x2c251d)[_0x06be('0x86')]()[_0x06be('0x87')]();return db[_0x06be('0x32')][_0x06be('0x52')]({'where':{'id':_0x3df994[_0x06be('0x58')]['id']}})['then'](function(_0x3e760b){return db[_0x06be('0x71')]['transaction'](function(_0x8ae391){return _0x3e760b['removeTeams'](_0x3df994[_0x06be('0x37')][_0x06be('0x6c')],{'transaction':_0x8ae391})['then'](function(){if(!_[_0x06be('0x88')](_0x2832b8)){return _0x3e760b[_0x06be('0x89')](_0x2832b8,{'transaction':_0x8ae391});}})[_0x06be('0x2a')](function(){_0x2832b8[_0x06be('0x8a')](function(_0x459845){socket[_0x06be('0x74')](_0x06be('0x8b'),{'UserId':_0x459845,'FaxQueueId':_0x3e760b['id']});});});});});});})[_0x06be('0x2a')](respondWithStatusCode(_0x23cac3,null))[_0x06be('0x49')](handleError(_0x23cac3,null));};exports[_0x06be('0x8c')]=function(_0x381fae,_0x588dce,_0x3c9d4d){return db[_0x06be('0x32')][_0x06be('0x52')]({'where':{'id':_0x381fae[_0x06be('0x58')]['id']}})[_0x06be('0x2a')](handleEntityNotFound(_0x588dce,null))[_0x06be('0x2a')](function(_0x319c4c){if(_0x319c4c){return _0x319c4c[_0x06be('0x8c')](_0x381fae[_0x06be('0x4d')][_0x06be('0x6c')],_[_0x06be('0x8d')](_0x381fae[_0x06be('0x4d')],[_0x06be('0x6c'),'id'])||{})[_0x06be('0x8e')](function(_0x32e25e){for(var _0x3e41c8=0x0;_0x3e41c8<_0x381fae[_0x06be('0x4d')][_0x06be('0x6c')][_0x06be('0x3d')];_0x3e41c8+=0x1){socket[_0x06be('0x74')]('userFaxQueue:save',{'UserId':Number(_0x381fae[_0x06be('0x4d')][_0x06be('0x6c')][_0x3e41c8]),'FaxQueueId':Number(_0x381fae[_0x06be('0x58')]['id'])});}return _0x32e25e;});}})['then'](respondWithResult(_0x588dce,null))['catch'](handleError(_0x588dce,null));};exports[_0x06be('0x89')]=function(_0x677ae7,_0x580cc7,_0xbcf604){return db[_0x06be('0x32')][_0x06be('0x52')]({'where':{'id':_0x677ae7[_0x06be('0x58')]['id']}})[_0x06be('0x2a')](handleEntityNotFound(_0x580cc7,null))[_0x06be('0x2a')](function(_0x4c0219){if(_0x4c0219){return _0x4c0219[_0x06be('0x89')](_0x677ae7[_0x06be('0x37')]['ids'])[_0x06be('0x2a')](function(){if(_[_0x06be('0x8f')](_0x677ae7[_0x06be('0x37')][_0x06be('0x6c')])){for(var _0x577868=0x0;_0x577868<_0x677ae7[_0x06be('0x37')][_0x06be('0x6c')]['length'];_0x577868+=0x1){socket['emit'](_0x06be('0x8b'),{'UserId':Number(_0x677ae7[_0x06be('0x37')][_0x06be('0x6c')][_0x577868]),'FaxQueueId':Number(_0x677ae7[_0x06be('0x58')]['id'])});}}else{socket[_0x06be('0x74')]('userFaxQueue:remove',{'UserId':Number(_0x677ae7[_0x06be('0x37')][_0x06be('0x6c')]),'FaxQueueId':Number(_0x677ae7[_0x06be('0x58')]['id'])});}});}})[_0x06be('0x2a')](respondWithStatusCode(_0x580cc7,null))['catch'](handleError(_0x580cc7,null));};exports[_0x06be('0x90')]=function(_0x6bbf97,_0x2036a8,_0x4529b2){var _0x1ace73={};var _0x409483={};var _0x213979;var _0x3a53a7;return db[_0x06be('0x32')][_0x06be('0x5a')]({'where':{'id':_0x6bbf97[_0x06be('0x58')]['id']}})[_0x06be('0x2a')](handleEntityNotFound(_0x2036a8,null))['then'](function(_0x90e9b9){if(_0x90e9b9){_0x213979=_0x90e9b9;_0x409483[_0x06be('0x36')]=_[_0x06be('0x38')](db[_0x06be('0x5f')][_0x06be('0x33')]);_0x409483[_0x06be('0x37')]=_['keys'](_0x6bbf97[_0x06be('0x37')]);_0x409483[_0x06be('0x39')]=_['intersection'](_0x409483[_0x06be('0x36')],_0x409483[_0x06be('0x37')]);_0x1ace73[_0x06be('0x3c')]=_['intersection'](_0x409483[_0x06be('0x36')],qs[_0x06be('0x3b')](_0x6bbf97[_0x06be('0x37')][_0x06be('0x3b')]));_0x1ace73[_0x06be('0x3c')]=_0x1ace73['attributes'][_0x06be('0x3d')]?_0x1ace73[_0x06be('0x3c')]:_0x409483[_0x06be('0x36')];_0x1ace73[_0x06be('0x3f')]=qs[_0x06be('0x5d')](_0x6bbf97['query']['sort']);_0x1ace73[_0x06be('0x40')]=qs[_0x06be('0x39')](_[_0x06be('0x41')](_0x6bbf97[_0x06be('0x37')],_0x409483[_0x06be('0x39')]));if(_0x6bbf97[_0x06be('0x37')][_0x06be('0x44')]){_0x1ace73[_0x06be('0x40')]=_[_0x06be('0x42')](_0x1ace73['where'],{'$or':_[_0x06be('0x31')](_0x1ace73['attributes'],function(_0x29eaf0){var _0x4d8fb6={};_0x4d8fb6[_0x29eaf0]={'$like':'%'+_0x6bbf97[_0x06be('0x37')][_0x06be('0x44')]+'%'};return _0x4d8fb6;})});}_0x1ace73=_[_0x06be('0x42')]({},_0x1ace73,_0x6bbf97[_0x06be('0x4b')]);return _0x213979['getAgents'](_0x1ace73);}})['then'](function(_0x2e9ff4){if(_0x2e9ff4){_0x3a53a7=_0x2e9ff4[_0x06be('0x3d')];if(!_0x6bbf97[_0x06be('0x37')][_0x06be('0x3e')]('nolimit')){_0x1ace73[_0x06be('0x23')]=qs[_0x06be('0x23')](_0x6bbf97[_0x06be('0x37')][_0x06be('0x23')]);_0x1ace73[_0x06be('0x21')]=qs['offset'](_0x6bbf97['query'][_0x06be('0x21')]);}return _0x213979[_0x06be('0x90')](_0x1ace73);}})['then'](function(_0x31d843){if(_0x31d843){return _0x31d843?{'count':_0x3a53a7,'rows':_0x31d843}:null;}})['then'](respondWithResult(_0x2036a8,null))[_0x06be('0x49')](handleError(_0x2036a8,null));};
\ No newline at end of file
index 50c1369..ec10e08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ad=['remove','emit','hasOwnProperty','hook','exports','events','FaxQueue','setMaxListeners','save','update'];(function(_0x53bf41,_0x113712){var _0x217844=function(_0xe02a2d){while(--_0xe02a2d){_0x53bf41['push'](_0x53bf41['shift']());}};_0x217844(++_0x113712);}(_0xd0ad,0x13b));var _0xdd0a=function(_0x2ac0a5,_0xd1614d){_0x2ac0a5=_0x2ac0a5-0x0;var _0x46cef5=_0xd0ad[_0x2ac0a5];return _0x46cef5;};'use strict';var EventEmitter=require(_0xdd0a('0x0'));var FaxQueue=require('../../mysqldb')['db'][_0xdd0a('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xdd0a('0x2')](0x0);var events={'afterCreate':_0xdd0a('0x3'),'afterUpdate':_0xdd0a('0x4'),'afterDestroy':_0xdd0a('0x5')};function emitEvent(_0x5b949e){return function(_0x442182,_0x30a406,_0xecb3a7){FaxQueueEvents[_0xdd0a('0x6')](_0x5b949e+':'+_0x442182['id'],_0x442182);FaxQueueEvents['emit'](_0x5b949e,_0x442182);_0xecb3a7(null);};}for(var e in events){if(events[_0xdd0a('0x7')](e)){var event=events[e];FaxQueue[_0xdd0a('0x8')](e,emitEvent(event));}}module[_0xdd0a('0x9')]=FaxQueueEvents;
\ No newline at end of file
+var _0x2708=['hook','../../mysqldb','FaxQueue','save','update','hasOwnProperty'];(function(_0x2da785,_0x41fdf4){var _0x42071e=function(_0x5dbb60){while(--_0x5dbb60){_0x2da785['push'](_0x2da785['shift']());}};_0x42071e(++_0x41fdf4);}(_0x2708,0xc7));var _0x8270=function(_0x51bf89,_0x398a26){_0x51bf89=_0x51bf89-0x0;var _0x4c9f5d=_0x2708[_0x51bf89];return _0x4c9f5d;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x8270('0x0'))['db'][_0x8270('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8270('0x2'),'afterUpdate':_0x8270('0x3'),'afterDestroy':'remove'};function emitEvent(_0xe5054c){return function(_0x3aaf7b,_0x4fa0c1,_0x5bf981){FaxQueueEvents['emit'](_0xe5054c+':'+_0x3aaf7b['id'],_0x3aaf7b);FaxQueueEvents['emit'](_0xe5054c,_0x3aaf7b);_0x5bf981(null);};}for(var e in events){if(events[_0x8270('0x4')](e)){var event=events[e];FaxQueue[_0x8270('0x5')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
index a67db30..2096bed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9b1=['request-promise','rimraf','../../config/environment','./faxQueue.attributes','exports','define','fax_queues','lodash','util','../../config/logger','moment'];(function(_0x5b02ff,_0x4ce260){var _0xfe3187=function(_0x2aae48){while(--_0x2aae48){_0x5b02ff['push'](_0x5b02ff['shift']());}};_0xfe3187(++_0x4ce260);}(_0xc9b1,0xf9));var _0x1c9b=function(_0x383c46,_0x3bc15d){_0x383c46=_0x383c46-0x0;var _0x15dd8d=_0xc9b1[_0x383c46];return _0x15dd8d;};'use strict';var _=require(_0x1c9b('0x0'));var util=require(_0x1c9b('0x1'));var logger=require(_0x1c9b('0x2'))('api');var moment=require(_0x1c9b('0x3'));var BPromise=require('bluebird');var rp=require(_0x1c9b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1c9b('0x5'));var config=require(_0x1c9b('0x6'));var attributes=require(_0x1c9b('0x7'));module[_0x1c9b('0x8')]=function(_0x33e757,_0x10780a){return _0x33e757[_0x1c9b('0x9')]('FaxQueue',attributes,{'tableName':_0x1c9b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc930=['exports','define','FaxQueue','fax_queues','lodash','util','../../config/logger','api','request-promise','path','rimraf','./faxQueue.attributes'];(function(_0x5bc8bc,_0x454a91){var _0xd57714=function(_0x11a429){while(--_0x11a429){_0x5bc8bc['push'](_0x5bc8bc['shift']());}};_0xd57714(++_0x454a91);}(_0xc930,0x88));var _0x0c93=function(_0x199835,_0x199cea){_0x199835=_0x199835-0x0;var _0x4ce830=_0xc930[_0x199835];return _0x4ce830;};'use strict';var _=require(_0x0c93('0x0'));var util=require(_0x0c93('0x1'));var logger=require(_0x0c93('0x2'))(_0x0c93('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0c93('0x4'));var fs=require('fs');var path=require(_0x0c93('0x5'));var rimraf=require(_0x0c93('0x6'));var config=require('../../config/environment');var attributes=require(_0x0c93('0x7'));module[_0x0c93('0x8')]=function(_0x888940,_0x36ab2a){return _0x888940[_0x0c93('0x9')](_0x0c93('0xa'),attributes,{'tableName':_0x0c93('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 89f4d82..2cb0caa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ebe=['localhost','socket.io-emitter','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','limit','map','include','model','ShowFaxQueue','find','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0x19983e,_0x1ccc39){var _0x233d7c=function(_0x479d57){while(--_0x479d57){_0x19983e['push'](_0x19983e['shift']());}};_0x233d7c(++_0x1ccc39);}(_0x3ebe,0x93));var _0xe3eb=function(_0x4c1d1a,_0x10f494){_0x4c1d1a=_0x4c1d1a-0x0;var _0xac7254=_0x3ebe[_0x4c1d1a];return _0xac7254;};'use strict';var _=require(_0xe3eb('0x0'));var util=require(_0xe3eb('0x1'));var moment=require(_0xe3eb('0x2'));var BPromise=require(_0xe3eb('0x3'));var rs=require(_0xe3eb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe3eb('0x5'));var logger=require(_0xe3eb('0x6'))(_0xe3eb('0x7'));var config=require(_0xe3eb('0x8'));var jayson=require(_0xe3eb('0x9'));var client=jayson[_0xe3eb('0xa')][_0xe3eb('0xb')]({'port':0x232a});config[_0xe3eb('0xc')]=_['defaults'](config[_0xe3eb('0xc')],{'host':_0xe3eb('0xd'),'port':0x18eb});var socket=require(_0xe3eb('0xe'))(new Redis(config['redis']));require('./faxQueue.socket')['register'](socket);function respondWithRpcPromise(_0x3a4ec0,_0x3e8589,_0x358946){return new BPromise(function(_0x43ce84,_0x4ee7f4){return client[_0xe3eb('0xf')](_0x3a4ec0,_0x358946)[_0xe3eb('0x10')](function(_0x5c2634){logger[_0xe3eb('0x11')](_0xe3eb('0x12'),_0x3e8589,_0xe3eb('0x13'));logger[_0xe3eb('0x14')](_0xe3eb('0x15'),_0x3e8589,'request\x20sent',JSON[_0xe3eb('0x16')](_0x5c2634));if(_0x5c2634[_0xe3eb('0x17')]){if(_0x5c2634['error']['code']===0x1f4){logger['error']('FaxQueue,\x20%s,\x20%s',_0x3e8589,_0x5c2634['error'][_0xe3eb('0x18')]);return _0x4ee7f4(_0x5c2634['error'][_0xe3eb('0x18')]);}logger[_0xe3eb('0x17')]('FaxQueue,\x20%s,\x20%s',_0x3e8589,_0x5c2634['error'][_0xe3eb('0x18')]);return _0x43ce84(_0x5c2634[_0xe3eb('0x17')]['message']);}else{logger[_0xe3eb('0x11')](_0xe3eb('0x12'),_0x3e8589,_0xe3eb('0x13'));_0x43ce84(_0x5c2634[_0xe3eb('0x19')][_0xe3eb('0x18')]);}})[_0xe3eb('0x1a')](function(_0x2488d5){logger[_0xe3eb('0x17')](_0xe3eb('0x12'),_0x3e8589,_0x2488d5);_0x4ee7f4(_0x2488d5);});});}exports[_0xe3eb('0x1b')]=function(_0x3ef8ce){var _0x3218bb=this;return new Promise(function(_0x52fc64,_0x582d2a){return db[_0xe3eb('0x1c')][_0xe3eb('0x1d')]({'raw':_0x3ef8ce['options']?_0x3ef8ce[_0xe3eb('0x1e')][_0xe3eb('0x1f')]===undefined?!![]:![]:!![],'where':_0x3ef8ce[_0xe3eb('0x1e')]?_0x3ef8ce[_0xe3eb('0x1e')][_0xe3eb('0x20')]||null:null,'attributes':_0x3ef8ce[_0xe3eb('0x1e')]?_0x3ef8ce['options'][_0xe3eb('0x21')]||null:null,'limit':_0x3ef8ce[_0xe3eb('0x1e')]?_0x3ef8ce['options'][_0xe3eb('0x22')]||null:null,'include':_0x3ef8ce[_0xe3eb('0x1e')]?_0x3ef8ce[_0xe3eb('0x1e')]['include']?_[_0xe3eb('0x23')](_0x3ef8ce['options'][_0xe3eb('0x24')],function(_0x48f176){return{'model':db[_0x48f176[_0xe3eb('0x25')]],'as':_0x48f176['as'],'attributes':_0x48f176[_0xe3eb('0x21')],'include':_0x48f176[_0xe3eb('0x24')]?_[_0xe3eb('0x23')](_0x48f176['include'],function(_0x21fcec){return{'model':db[_0x21fcec[_0xe3eb('0x25')]],'as':_0x21fcec['as'],'attributes':_0x21fcec[_0xe3eb('0x21')],'include':_0x21fcec[_0xe3eb('0x24')]?_[_0xe3eb('0x23')](_0x21fcec['include'],function(_0x212bb8){return{'model':db[_0x212bb8[_0xe3eb('0x25')]],'as':_0x212bb8['as'],'attributes':_0x212bb8[_0xe3eb('0x21')]};}):[]};}):[]};}):[]:[]})[_0xe3eb('0x10')](function(_0x6a00c8){logger[_0xe3eb('0x11')](_0xe3eb('0x1b'),_0x3ef8ce);logger[_0xe3eb('0x14')](_0xe3eb('0x1b'),_0x3ef8ce,JSON[_0xe3eb('0x16')](_0x6a00c8));_0x52fc64(_0x6a00c8);})[_0xe3eb('0x1a')](function(_0x725493){logger[_0xe3eb('0x17')](_0xe3eb('0x1b'),_0x725493[_0xe3eb('0x18')],_0x3ef8ce);_0x582d2a(_0x3218bb[_0xe3eb('0x17')](0x1f4,_0x725493[_0xe3eb('0x18')]));});});};exports[_0xe3eb('0x26')]=function(_0x414d12){var _0xd7ae31=this;return new Promise(function(_0x33ebb2,_0x6c52aa){return db['FaxQueue'][_0xe3eb('0x27')]({'raw':_0x414d12[_0xe3eb('0x1e')]?_0x414d12[_0xe3eb('0x1e')][_0xe3eb('0x1f')]===undefined?!![]:![]:!![],'where':_0x414d12[_0xe3eb('0x1e')]?_0x414d12[_0xe3eb('0x1e')][_0xe3eb('0x20')]||null:null,'attributes':_0x414d12[_0xe3eb('0x1e')]?_0x414d12['options'][_0xe3eb('0x21')]||null:null,'include':_0x414d12['options']?_0x414d12[_0xe3eb('0x1e')][_0xe3eb('0x24')]?_['map'](_0x414d12['options'][_0xe3eb('0x24')],function(_0x3dfecd){return{'model':db[_0x3dfecd['model']],'as':_0x3dfecd['as'],'attributes':_0x3dfecd[_0xe3eb('0x21')],'include':_0x3dfecd[_0xe3eb('0x24')]?_['map'](_0x3dfecd[_0xe3eb('0x24')],function(_0x19026d){return{'model':db[_0x19026d[_0xe3eb('0x25')]],'as':_0x19026d['as'],'attributes':_0x19026d['attributes'],'include':_0x19026d[_0xe3eb('0x24')]?_[_0xe3eb('0x23')](_0x19026d['include'],function(_0x1fd431){return{'model':db[_0x1fd431['model']],'as':_0x1fd431['as'],'attributes':_0x1fd431[_0xe3eb('0x21')]};}):[]};}):[]};}):[]:[]})[_0xe3eb('0x10')](function(_0x5a64fa){logger[_0xe3eb('0x11')](_0xe3eb('0x26'),_0x414d12);logger[_0xe3eb('0x14')]('ShowFaxQueue',_0x414d12,JSON['stringify'](_0x5a64fa));_0x33ebb2(_0x5a64fa);})[_0xe3eb('0x1a')](function(_0x43f704){logger['error'](_0xe3eb('0x26'),_0x43f704[_0xe3eb('0x18')],_0x414d12);_0x6c52aa(_0xd7ae31[_0xe3eb('0x17')](0x1f4,_0x43f704[_0xe3eb('0x18')]));});});};
\ No newline at end of file
+var _0x5eff=['model','ShowFaxQueue','FaxQueue','find','util','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','redis','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetFaxQueue','options','raw','where','attributes','include','map'];(function(_0x14c930,_0x4d46bf){var _0x883fd8=function(_0x2cf9cc){while(--_0x2cf9cc){_0x14c930['push'](_0x14c930['shift']());}};_0x883fd8(++_0x4d46bf);}(_0x5eff,0x10c));var _0xf5ef=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x5eff[_0xa148b7];return _0x51efd3;};'use strict';var _=require('lodash');var util=require(_0xf5ef('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf5ef('0x1'));var db=require(_0xf5ef('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xf5ef('0x3'))(_0xf5ef('0x4'));var config=require('../../config/environment');var jayson=require(_0xf5ef('0x5'));var client=jayson['client']['http']({'port':0x232a});config[_0xf5ef('0x6')]=_['defaults'](config[_0xf5ef('0x6')],{'host':_0xf5ef('0x7'),'port':0x18eb});var socket=require(_0xf5ef('0x8'))(new Redis(config[_0xf5ef('0x6')]));require(_0xf5ef('0x9'))[_0xf5ef('0xa')](socket);function respondWithRpcPromise(_0x26d7fa,_0x345887,_0xbf8220){return new BPromise(function(_0x478d46,_0x2be274){return client[_0xf5ef('0xb')](_0x26d7fa,_0xbf8220)[_0xf5ef('0xc')](function(_0x3705fc){logger[_0xf5ef('0xd')](_0xf5ef('0xe'),_0x345887,_0xf5ef('0xf'));logger[_0xf5ef('0x10')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x345887,'request\x20sent',JSON[_0xf5ef('0x11')](_0x3705fc));if(_0x3705fc[_0xf5ef('0x12')]){if(_0x3705fc[_0xf5ef('0x12')][_0xf5ef('0x13')]===0x1f4){logger[_0xf5ef('0x12')](_0xf5ef('0xe'),_0x345887,_0x3705fc['error']['message']);return _0x2be274(_0x3705fc['error'][_0xf5ef('0x14')]);}logger[_0xf5ef('0x12')](_0xf5ef('0xe'),_0x345887,_0x3705fc[_0xf5ef('0x12')][_0xf5ef('0x14')]);return _0x478d46(_0x3705fc[_0xf5ef('0x12')][_0xf5ef('0x14')]);}else{logger[_0xf5ef('0xd')](_0xf5ef('0xe'),_0x345887,_0xf5ef('0xf'));_0x478d46(_0x3705fc['result'][_0xf5ef('0x14')]);}})[_0xf5ef('0x15')](function(_0x5d9135){logger[_0xf5ef('0x12')](_0xf5ef('0xe'),_0x345887,_0x5d9135);_0x2be274(_0x5d9135);});});}exports[_0xf5ef('0x16')]=function(_0x328a31){var _0x210084=this;return new Promise(function(_0x1d1e4d,_0x13bef9){return db['FaxQueue']['findAll']({'raw':_0x328a31[_0xf5ef('0x17')]?_0x328a31[_0xf5ef('0x17')][_0xf5ef('0x18')]===undefined?!![]:![]:!![],'where':_0x328a31['options']?_0x328a31[_0xf5ef('0x17')][_0xf5ef('0x19')]||null:null,'attributes':_0x328a31['options']?_0x328a31[_0xf5ef('0x17')][_0xf5ef('0x1a')]||null:null,'limit':_0x328a31[_0xf5ef('0x17')]?_0x328a31[_0xf5ef('0x17')]['limit']||null:null,'include':_0x328a31[_0xf5ef('0x17')]?_0x328a31[_0xf5ef('0x17')][_0xf5ef('0x1b')]?_[_0xf5ef('0x1c')](_0x328a31[_0xf5ef('0x17')][_0xf5ef('0x1b')],function(_0x43a7a2){return{'model':db[_0x43a7a2['model']],'as':_0x43a7a2['as'],'attributes':_0x43a7a2[_0xf5ef('0x1a')],'include':_0x43a7a2[_0xf5ef('0x1b')]?_[_0xf5ef('0x1c')](_0x43a7a2['include'],function(_0x4ce8fc){return{'model':db[_0x4ce8fc[_0xf5ef('0x1d')]],'as':_0x4ce8fc['as'],'attributes':_0x4ce8fc[_0xf5ef('0x1a')],'include':_0x4ce8fc[_0xf5ef('0x1b')]?_[_0xf5ef('0x1c')](_0x4ce8fc[_0xf5ef('0x1b')],function(_0x1ebd54){return{'model':db[_0x1ebd54[_0xf5ef('0x1d')]],'as':_0x1ebd54['as'],'attributes':_0x1ebd54[_0xf5ef('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf5ef('0xc')](function(_0x364bec){logger[_0xf5ef('0xd')](_0xf5ef('0x16'),_0x328a31);logger[_0xf5ef('0x10')](_0xf5ef('0x16'),_0x328a31,JSON[_0xf5ef('0x11')](_0x364bec));_0x1d1e4d(_0x364bec);})['catch'](function(_0x5cfd61){logger[_0xf5ef('0x12')](_0xf5ef('0x16'),_0x5cfd61['message'],_0x328a31);_0x13bef9(_0x210084['error'](0x1f4,_0x5cfd61[_0xf5ef('0x14')]));});});};exports[_0xf5ef('0x1e')]=function(_0x56cfb8){var _0x2de6f9=this;return new Promise(function(_0x5d4fde,_0x3f38c3){return db[_0xf5ef('0x1f')][_0xf5ef('0x20')]({'raw':_0x56cfb8[_0xf5ef('0x17')]?_0x56cfb8['options']['raw']===undefined?!![]:![]:!![],'where':_0x56cfb8[_0xf5ef('0x17')]?_0x56cfb8['options'][_0xf5ef('0x19')]||null:null,'attributes':_0x56cfb8[_0xf5ef('0x17')]?_0x56cfb8[_0xf5ef('0x17')]['attributes']||null:null,'include':_0x56cfb8[_0xf5ef('0x17')]?_0x56cfb8[_0xf5ef('0x17')][_0xf5ef('0x1b')]?_[_0xf5ef('0x1c')](_0x56cfb8[_0xf5ef('0x17')][_0xf5ef('0x1b')],function(_0x1ea9af){return{'model':db[_0x1ea9af[_0xf5ef('0x1d')]],'as':_0x1ea9af['as'],'attributes':_0x1ea9af[_0xf5ef('0x1a')],'include':_0x1ea9af[_0xf5ef('0x1b')]?_[_0xf5ef('0x1c')](_0x1ea9af['include'],function(_0x422e97){return{'model':db[_0x422e97[_0xf5ef('0x1d')]],'as':_0x422e97['as'],'attributes':_0x422e97[_0xf5ef('0x1a')],'include':_0x422e97[_0xf5ef('0x1b')]?_['map'](_0x422e97[_0xf5ef('0x1b')],function(_0x5ed745){return{'model':db[_0x5ed745[_0xf5ef('0x1d')]],'as':_0x5ed745['as'],'attributes':_0x5ed745[_0xf5ef('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf5ef('0xc')](function(_0x4bcbee){logger['info'](_0xf5ef('0x1e'),_0x56cfb8);logger[_0xf5ef('0x10')](_0xf5ef('0x1e'),_0x56cfb8,JSON[_0xf5ef('0x11')](_0x4bcbee));_0x5d4fde(_0x4bcbee);})[_0xf5ef('0x15')](function(_0x481394){logger[_0xf5ef('0x12')]('ShowFaxQueue',_0x481394[_0xf5ef('0x14')],_0x56cfb8);_0x3f38c3(_0x2de6f9['error'](0x1f4,_0x481394['message']));});});};
\ No newline at end of file
index e27707b..31a72b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7604=['register','faxQueue:','./faxQueue.events','save','remove','update','emit','removeListener'];(function(_0x2aad02,_0x556ae7){var _0x546e5b=function(_0x129356){while(--_0x129356){_0x2aad02['push'](_0x2aad02['shift']());}};_0x546e5b(++_0x556ae7);}(_0x7604,0xd2));var _0x4760=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x7604[_0x2c91e9];return _0x13f0ff;};'use strict';var FaxQueueEvents=require(_0x4760('0x0'));var events=[_0x4760('0x1'),_0x4760('0x2'),_0x4760('0x3')];function createListener(_0x4be602,_0x49c9cd){return function(_0xfa7b99){_0x49c9cd[_0x4760('0x4')](_0x4be602,_0xfa7b99);};}function removeListener(_0x18d2bf,_0x4a09ce){return function(){FaxQueueEvents[_0x4760('0x5')](_0x18d2bf,_0x4a09ce);};}exports[_0x4760('0x6')]=function(_0x4b0681){for(var _0x3d707b=0x0,_0x27df02=events['length'];_0x3d707b<_0x27df02;_0x3d707b++){var _0xb54ca1=events[_0x3d707b];var _0xc10f20=createListener(_0x4760('0x7')+_0xb54ca1,_0x4b0681);FaxQueueEvents['on'](_0xb54ca1,_0xc10f20);}};
\ No newline at end of file
+var _0x1335=['save','remove','emit','register','length','faxQueue:','./faxQueue.events'];(function(_0x599dad,_0x196455){var _0x14bc12=function(_0x5a18c8){while(--_0x5a18c8){_0x599dad['push'](_0x599dad['shift']());}};_0x14bc12(++_0x196455);}(_0x1335,0x19c));var _0x5133=function(_0x4cbd3e,_0x36d8ce){_0x4cbd3e=_0x4cbd3e-0x0;var _0x314a8a=_0x1335[_0x4cbd3e];return _0x314a8a;};'use strict';var FaxQueueEvents=require(_0x5133('0x0'));var events=[_0x5133('0x1'),_0x5133('0x2'),'update'];function createListener(_0x2c2ddb,_0x56741b){return function(_0x2d948c){_0x56741b[_0x5133('0x3')](_0x2c2ddb,_0x2d948c);};}function removeListener(_0x29b036,_0x177978){return function(){FaxQueueEvents['removeListener'](_0x29b036,_0x177978);};}exports[_0x5133('0x4')]=function(_0x6b748e){for(var _0x31fd66=0x0,_0x515bbf=events[_0x5133('0x5')];_0x31fd66<_0x515bbf;_0x31fd66++){var _0x5de51f=events[_0x31fd66];var _0x204a00=createListener(_0x5133('0x6')+_0x5de51f,_0x6b748e);FaxQueueEvents['on'](_0x5de51f,_0x204a00);}};
\ No newline at end of file
index ed0156b..a720f4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6363=['../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getAgents','post','create','addTeams','/:id/users','addAgents','put','update','delete','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x46a3e8,_0x2e1b35){var _0xf1442e=function(_0x37b5d4){while(--_0x37b5d4){_0x46a3e8['push'](_0x46a3e8['shift']());}};_0xf1442e(++_0x2e1b35);}(_0x6363,0x13a));var _0x3636=function(_0x1627ca,_0x563c14){_0x1627ca=_0x1627ca-0x0;var _0x4b828f=_0x6363[_0x1627ca];return _0x4b828f;};'use strict';var multer=require(_0x3636('0x0'));var util=require('util');var path=require(_0x3636('0x1'));var timeout=require(_0x3636('0x2'));var express=require(_0x3636('0x3'));var router=express[_0x3636('0x4')]();var fs_extra=require(_0x3636('0x5'));var auth=require(_0x3636('0x6'));var interaction=require(_0x3636('0x7'));var config=require(_0x3636('0x8'));var controller=require(_0x3636('0x9'));router[_0x3636('0xa')]('/',auth[_0x3636('0xb')](),controller[_0x3636('0xc')]);router[_0x3636('0xa')](_0x3636('0xd'),auth['isAuthenticated'](),controller[_0x3636('0xe')]);router['get'](_0x3636('0xf'),auth[_0x3636('0xb')](),controller[_0x3636('0x10')]);router[_0x3636('0xa')](_0x3636('0x11'),auth[_0x3636('0xb')](),controller[_0x3636('0x12')]);router[_0x3636('0xa')](_0x3636('0x13'),auth['isAuthenticated'](),controller['getTeams']);router[_0x3636('0xa')]('/:id/users',auth[_0x3636('0xb')](),controller[_0x3636('0x14')]);router[_0x3636('0x15')]('/',auth[_0x3636('0xb')](),controller[_0x3636('0x16')]);router[_0x3636('0x15')](_0x3636('0x13'),auth[_0x3636('0xb')](),controller[_0x3636('0x17')]);router[_0x3636('0x15')](_0x3636('0x18'),auth[_0x3636('0xb')](),controller[_0x3636('0x19')]);router[_0x3636('0x1a')](_0x3636('0xf'),auth[_0x3636('0xb')](),controller[_0x3636('0x1b')]);router['delete'](_0x3636('0xf'),auth[_0x3636('0xb')](),controller['destroy']);router[_0x3636('0x1c')]('/:id/teams',auth['isAuthenticated'](),controller[_0x3636('0x1d')]);router[_0x3636('0x1c')](_0x3636('0x18'),auth[_0x3636('0xb')](),controller[_0x3636('0x1e')]);module[_0x3636('0x1f')]=router;
\ No newline at end of file
+var _0xe61c=['addAgents','destroy','removeTeams','delete','removeAgents','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','/:id/teams','addTeams'];(function(_0x40881b,_0x5225d4){var _0x4edf0c=function(_0x1b2519){while(--_0x1b2519){_0x40881b['push'](_0x40881b['shift']());}};_0x4edf0c(++_0x5225d4);}(_0xe61c,0xee));var _0xce61=function(_0x3f2a90,_0x50baf1){_0x3f2a90=_0x3f2a90-0x0;var _0xb46279=_0xe61c[_0x3f2a90];return _0xb46279;};'use strict';var multer=require(_0xce61('0x0'));var util=require('util');var path=require(_0xce61('0x1'));var timeout=require(_0xce61('0x2'));var express=require(_0xce61('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xce61('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xce61('0x5'));var controller=require(_0xce61('0x6'));router[_0xce61('0x7')]('/',auth[_0xce61('0x8')](),controller[_0xce61('0x9')]);router[_0xce61('0x7')](_0xce61('0xa'),auth['isAuthenticated'](),controller[_0xce61('0xb')]);router[_0xce61('0x7')](_0xce61('0xc'),auth[_0xce61('0x8')](),controller[_0xce61('0xd')]);router[_0xce61('0x7')](_0xce61('0xe'),auth['isAuthenticated'](),controller[_0xce61('0xf')]);router[_0xce61('0x7')]('/:id/teams',auth[_0xce61('0x8')](),controller[_0xce61('0x10')]);router['get'](_0xce61('0x11'),auth['isAuthenticated'](),controller[_0xce61('0x12')]);router[_0xce61('0x13')]('/',auth['isAuthenticated'](),controller[_0xce61('0x14')]);router['post'](_0xce61('0x15'),auth['isAuthenticated'](),controller[_0xce61('0x16')]);router[_0xce61('0x13')](_0xce61('0x11'),auth[_0xce61('0x8')](),controller[_0xce61('0x17')]);router['put']('/:id',auth[_0xce61('0x8')](),controller['update']);router['delete'](_0xce61('0xc'),auth[_0xce61('0x8')](),controller[_0xce61('0x18')]);router['delete'](_0xce61('0x15'),auth['isAuthenticated'](),controller[_0xce61('0x19')]);router[_0xce61('0x1a')](_0xce61('0x11'),auth[_0xce61('0x8')](),controller[_0xce61('0x1b')]);module[_0xce61('0x1c')]=router;
\ No newline at end of file
index 3f73859..dec3327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cd9=['sequelize','exports','STRING','DATE','moment'];(function(_0x5567dd,_0x35d872){var _0x11f96c=function(_0x5ba6ed){while(--_0x5ba6ed){_0x5567dd['push'](_0x5567dd['shift']());}};_0x11f96c(++_0x35d872);}(_0x8cd9,0xea));var _0x98cd=function(_0x197974,_0xe9c65c){_0x197974=_0x197974-0x0;var _0x2f95a6=_0x8cd9[_0x197974];return _0x2f95a6;};'use strict';var moment=require(_0x98cd('0x0'));var Sequelize=require(_0x98cd('0x1'));module[_0x98cd('0x2')]={'uniqueid':{'type':Sequelize[_0x98cd('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x98cd('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x98cd('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x98cd('0x3')]}};
\ No newline at end of file
+var _0x66d0=['sequelize','exports','STRING','DATE','moment'];(function(_0x44cb92,_0x59afa3){var _0x56b9e6=function(_0x2841e0){while(--_0x2841e0){_0x44cb92['push'](_0x44cb92['shift']());}};_0x56b9e6(++_0x59afa3);}(_0x66d0,0x135));var _0x066d=function(_0xbe40ad,_0x44343c){_0xbe40ad=_0xbe40ad-0x0;var _0x50fac9=_0x66d0[_0xbe40ad];return _0x50fac9;};'use strict';var moment=require(_0x066d('0x0'));var Sequelize=require(_0x066d('0x1'));module[_0x066d('0x2')]={'uniqueid':{'type':Sequelize[_0x066d('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x066d('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x066d('0x4')]},'acceptAt':{'type':Sequelize[_0x066d('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x066d('0x3')]}};
\ No newline at end of file
index cda84d0..d6cb910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0439=['intersection','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','name','send','map','FaxQueueReport','rawAttributes','fieldName','type','model','query','keys','filters','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params'];(function(_0x5c183a,_0x52306a){var _0x1808ad=function(_0x4c25ce){while(--_0x4c25ce){_0x5c183a['push'](_0x5c183a['shift']());}};_0x1808ad(++_0x52306a);}(_0x0439,0xdd));var _0x9043=function(_0x236eee,_0x32421f){_0x236eee=_0x236eee-0x0;var _0x1dd280=_0x0439[_0x236eee];return _0x1dd280;};'use strict';var emlformat=require(_0x9043('0x0'));var rimraf=require(_0x9043('0x1'));var zipdir=require(_0x9043('0x2'));var jsonpatch=require(_0x9043('0x3'));var rp=require(_0x9043('0x4'));var moment=require(_0x9043('0x5'));var BPromise=require(_0x9043('0x6'));var Mustache=require('mustache');var util=require(_0x9043('0x7'));var path=require(_0x9043('0x8'));var sox=require(_0x9043('0x9'));var csv=require('to-csv');var ejs=require(_0x9043('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9043('0xb'));var crypto=require(_0x9043('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9043('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9043('0xe'));var Papa=require(_0x9043('0xf'));var Redis=require('ioredis');var authService=require(_0x9043('0x10'));var qs=require(_0x9043('0x11'));var as=require(_0x9043('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9043('0x13'));var utils=require(_0x9043('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x9043('0x15'));var db=require(_0x9043('0x16'))['db'];function respondWithStatusCode(_0x3d8d67,_0x2bf58d){_0x2bf58d=_0x2bf58d||0xcc;return function(_0xcd2bf1){if(_0xcd2bf1){return _0x3d8d67[_0x9043('0x17')](_0x2bf58d);}return _0x3d8d67['status'](_0x2bf58d)[_0x9043('0x18')]();};}function respondWithResult(_0xf3f958,_0x48b142){_0x48b142=_0x48b142||0xc8;return function(_0x18f916){if(_0x18f916){return _0xf3f958[_0x9043('0x19')](_0x48b142)['json'](_0x18f916);}};}function respondWithFilteredResult(_0x37eca8,_0x1c2473){return function(_0x3aaee1){if(_0x3aaee1){var _0x2b3c2d=typeof _0x1c2473[_0x9043('0x1a')]===_0x9043('0x1b')&&typeof _0x1c2473[_0x9043('0x1c')]===_0x9043('0x1b');var _0x21f330=_0x3aaee1[_0x9043('0x1d')];var _0x51823a=_0x2b3c2d?0x0:_0x1c2473['offset'];var _0x47fbdc=_0x2b3c2d?_0x3aaee1[_0x9043('0x1d')]:_0x1c2473[_0x9043('0x1a')]+_0x1c2473[_0x9043('0x1c')];var _0x43bbd4;if(_0x47fbdc>=_0x21f330){_0x47fbdc=_0x21f330;_0x43bbd4=0xc8;}else{_0x43bbd4=0xce;}_0x37eca8['status'](_0x43bbd4);return _0x37eca8[_0x9043('0x1e')]('Content-Range',_0x51823a+'-'+_0x47fbdc+'/'+_0x21f330)['json'](_0x3aaee1);}return null;};}function patchUpdates(_0x161511){return function(_0x3572d5){try{jsonpatch[_0x9043('0x1f')](_0x3572d5,_0x161511,!![]);}catch(_0x820f8c){return BPromise[_0x9043('0x20')](_0x820f8c);}return _0x3572d5[_0x9043('0x21')]();};}function saveUpdates(_0x3a82b4,_0x366695){return function(_0x5a3f7a){if(_0x5a3f7a){return _0x5a3f7a[_0x9043('0x22')](_0x3a82b4)[_0x9043('0x23')](function(_0x30930c){return _0x30930c;});}return null;};}function removeEntity(_0x5506bf,_0x18727f){return function(_0x3c4fa4){if(_0x3c4fa4){return _0x3c4fa4[_0x9043('0x24')]()[_0x9043('0x23')](function(){_0x5506bf[_0x9043('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16caf2,_0xca0bb1){return function(_0x6d23af){if(!_0x6d23af){_0x16caf2[_0x9043('0x17')](0x194);}return _0x6d23af;};}function handleError(_0x2003c3,_0x13e8dd){_0x13e8dd=_0x13e8dd||0x1f4;return function(_0x5f4975){logger[_0x9043('0x25')](_0x5f4975['stack']);if(_0x5f4975[_0x9043('0x26')]){delete _0x5f4975[_0x9043('0x26')];}_0x2003c3[_0x9043('0x19')](_0x13e8dd)[_0x9043('0x27')](_0x5f4975);};}exports['index']=function(_0xc92d75,_0x2e12b1){var _0x14cf80={},_0x228d7f={},_0x37ecc2={'count':0x0,'rows':[]};var _0x590357=_[_0x9043('0x28')](db[_0x9043('0x29')][_0x9043('0x2a')],function(_0x4e4363){return{'name':_0x4e4363[_0x9043('0x2b')],'type':_0x4e4363[_0x9043('0x2c')]['key']};});_0x228d7f[_0x9043('0x2d')]=_[_0x9043('0x28')](_0x590357,'name');_0x228d7f[_0x9043('0x2e')]=_[_0x9043('0x2f')](_0xc92d75[_0x9043('0x2e')]);_0x228d7f[_0x9043('0x30')]=_['intersection'](_0x228d7f[_0x9043('0x2d')],_0x228d7f[_0x9043('0x2e')]);_0x14cf80['attributes']=_['intersection'](_0x228d7f[_0x9043('0x2d')],qs[_0x9043('0x31')](_0xc92d75[_0x9043('0x2e')][_0x9043('0x31')]));_0x14cf80[_0x9043('0x32')]=_0x14cf80[_0x9043('0x32')]['length']?_0x14cf80['attributes']:_0x228d7f[_0x9043('0x2d')];if(!_0xc92d75[_0x9043('0x2e')][_0x9043('0x33')](_0x9043('0x34'))){_0x14cf80[_0x9043('0x1c')]=qs[_0x9043('0x1c')](_0xc92d75[_0x9043('0x2e')]['limit']);_0x14cf80[_0x9043('0x1a')]=qs['offset'](_0xc92d75[_0x9043('0x2e')]['offset']);}_0x14cf80[_0x9043('0x35')]=qs[_0x9043('0x36')](_0xc92d75['query']['sort']);_0x14cf80[_0x9043('0x37')]=qs[_0x9043('0x30')](_[_0x9043('0x38')](_0xc92d75[_0x9043('0x2e')],_0x228d7f[_0x9043('0x30')]),_0x590357);if(_0xc92d75[_0x9043('0x2e')][_0x9043('0x39')]){_0x14cf80[_0x9043('0x37')]=_[_0x9043('0x3a')](_0x14cf80[_0x9043('0x37')],{'$or':_[_0x9043('0x28')](_0x590357,function(_0x19b858){if(_0x19b858['type']!==_0x9043('0x3b')){var _0x5187bf={};_0x5187bf[_0x19b858[_0x9043('0x26')]]={'$like':'%'+_0xc92d75[_0x9043('0x2e')]['filter']+'%'};return _0x5187bf;}})});}_0x14cf80=_[_0x9043('0x3a')]({},_0x14cf80,_0xc92d75[_0x9043('0x3c')]);var _0x1dc9cf={'where':_0x14cf80['where']};return db[_0x9043('0x29')][_0x9043('0x1d')](_0x1dc9cf)[_0x9043('0x23')](function(_0x3cdaf9){_0x37ecc2[_0x9043('0x1d')]=_0x3cdaf9;if(_0xc92d75[_0x9043('0x2e')][_0x9043('0x3d')]){_0x14cf80[_0x9043('0x3e')]=[{'all':!![]}];}return db['FaxQueueReport'][_0x9043('0x3f')](_0x14cf80);})['then'](function(_0x56a084){_0x37ecc2[_0x9043('0x40')]=_0x56a084;return _0x37ecc2;})['then'](respondWithFilteredResult(_0x2e12b1,_0x14cf80))[_0x9043('0x41')](handleError(_0x2e12b1,null));};exports['show']=function(_0x392551,_0x3a75e0){var _0x2c479d={'raw':!![],'where':{'id':_0x392551[_0x9043('0x42')]['id']}},_0x38028b={};_0x38028b[_0x9043('0x2d')]=_['keys'](db[_0x9043('0x29')][_0x9043('0x2a')]);_0x38028b[_0x9043('0x2e')]=_['keys'](_0x392551[_0x9043('0x2e')]);_0x38028b[_0x9043('0x30')]=_['intersection'](_0x38028b[_0x9043('0x2d')],_0x38028b['query']);_0x2c479d[_0x9043('0x32')]=_[_0x9043('0x43')](_0x38028b['model'],qs['fields'](_0x392551[_0x9043('0x2e')][_0x9043('0x31')]));_0x2c479d[_0x9043('0x32')]=_0x2c479d[_0x9043('0x32')]['length']?_0x2c479d[_0x9043('0x32')]:_0x38028b[_0x9043('0x2d')];if(_0x392551['query']['includeAll']){_0x2c479d[_0x9043('0x3e')]=[{'all':!![]}];}_0x2c479d=_[_0x9043('0x3a')]({},_0x2c479d,_0x392551['options']);return db[_0x9043('0x29')][_0x9043('0x44')](_0x2c479d)[_0x9043('0x23')](handleEntityNotFound(_0x3a75e0,null))[_0x9043('0x23')](respondWithResult(_0x3a75e0,null))['catch'](handleError(_0x3a75e0,null));};exports[_0x9043('0x45')]=function(_0x172872,_0x5d7e24){return db[_0x9043('0x29')][_0x9043('0x45')](_0x172872[_0x9043('0x46')],{})[_0x9043('0x23')](respondWithResult(_0x5d7e24,0xc9))[_0x9043('0x41')](handleError(_0x5d7e24,null));};exports[_0x9043('0x22')]=function(_0x6f909a,_0x370821){if(_0x6f909a[_0x9043('0x46')]['id']){delete _0x6f909a[_0x9043('0x46')]['id'];}return db[_0x9043('0x29')][_0x9043('0x44')]({'where':{'id':_0x6f909a[_0x9043('0x42')]['id']}})[_0x9043('0x23')](handleEntityNotFound(_0x370821,null))['then'](saveUpdates(_0x6f909a[_0x9043('0x46')],null))[_0x9043('0x23')](respondWithResult(_0x370821,null))['catch'](handleError(_0x370821,null));};exports[_0x9043('0x24')]=function(_0x188695,_0x385fb6){return db['FaxQueueReport']['find']({'where':{'id':_0x188695[_0x9043('0x42')]['id']}})[_0x9043('0x23')](handleEntityNotFound(_0x385fb6,null))[_0x9043('0x23')](removeEntity(_0x385fb6,null))[_0x9043('0x41')](handleError(_0x385fb6,null));};exports['describe']=function(_0x13127e,_0x425205){return db[_0x9043('0x29')][_0x9043('0x47')]()['then'](respondWithResult(_0x425205,null))[_0x9043('0x41')](handleError(_0x425205,null));};
\ No newline at end of file
+var _0x63bb=['key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','reject','update','then','destroy','sendStatus','name','send','index','map','FaxQueueReport','rawAttributes','fieldName'];(function(_0x564adb,_0x24e2ff){var _0x36d788=function(_0x380434){while(--_0x380434){_0x564adb['push'](_0x564adb['shift']());}};_0x36d788(++_0x24e2ff);}(_0x63bb,0xf8));var _0xb63b=function(_0x2aa48b,_0x5a4446){_0x2aa48b=_0x2aa48b-0x0;var _0x48caf8=_0x63bb[_0x2aa48b];return _0x48caf8;};'use strict';var emlformat=require(_0xb63b('0x0'));var rimraf=require(_0xb63b('0x1'));var zipdir=require(_0xb63b('0x2'));var jsonpatch=require(_0xb63b('0x3'));var rp=require(_0xb63b('0x4'));var moment=require(_0xb63b('0x5'));var BPromise=require(_0xb63b('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb63b('0x7'));var sox=require(_0xb63b('0x8'));var csv=require(_0xb63b('0x9'));var ejs=require(_0xb63b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb63b('0xb'));var squel=require(_0xb63b('0xc'));var crypto=require(_0xb63b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb63b('0xe'));var toCsv=require(_0xb63b('0x9'));var querystring=require('querystring');var Papa=require(_0xb63b('0xf'));var Redis=require(_0xb63b('0x10'));var authService=require(_0xb63b('0x11'));var qs=require(_0xb63b('0x12'));var as=require(_0xb63b('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb63b('0x14'))(_0xb63b('0x15'));var utils=require(_0xb63b('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb63b('0x17'))['db'];function respondWithStatusCode(_0x1dca68,_0x286ca9){_0x286ca9=_0x286ca9||0xcc;return function(_0x41ff77){if(_0x41ff77){return _0x1dca68['sendStatus'](_0x286ca9);}return _0x1dca68[_0xb63b('0x18')](_0x286ca9)[_0xb63b('0x19')]();};}function respondWithResult(_0x398ecb,_0x3f1f42){_0x3f1f42=_0x3f1f42||0xc8;return function(_0x2d0e2a){if(_0x2d0e2a){return _0x398ecb[_0xb63b('0x18')](_0x3f1f42)[_0xb63b('0x1a')](_0x2d0e2a);}};}function respondWithFilteredResult(_0x55bfc8,_0x4a0e68){return function(_0x535c8f){if(_0x535c8f){var _0x21ac0e=typeof _0x4a0e68[_0xb63b('0x1b')]===_0xb63b('0x1c')&&typeof _0x4a0e68[_0xb63b('0x1d')]===_0xb63b('0x1c');var _0x59718f=_0x535c8f[_0xb63b('0x1e')];var _0x322426=_0x21ac0e?0x0:_0x4a0e68['offset'];var _0x55f315=_0x21ac0e?_0x535c8f['count']:_0x4a0e68[_0xb63b('0x1b')]+_0x4a0e68[_0xb63b('0x1d')];var _0x39b7b7;if(_0x55f315>=_0x59718f){_0x55f315=_0x59718f;_0x39b7b7=0xc8;}else{_0x39b7b7=0xce;}_0x55bfc8[_0xb63b('0x18')](_0x39b7b7);return _0x55bfc8['set'](_0xb63b('0x1f'),_0x322426+'-'+_0x55f315+'/'+_0x59718f)[_0xb63b('0x1a')](_0x535c8f);}return null;};}function patchUpdates(_0x2743a1){return function(_0x1fe0ad){try{jsonpatch['apply'](_0x1fe0ad,_0x2743a1,!![]);}catch(_0x482cb8){return BPromise[_0xb63b('0x20')](_0x482cb8);}return _0x1fe0ad['save']();};}function saveUpdates(_0x343e1d,_0xb3d331){return function(_0x37a57f){if(_0x37a57f){return _0x37a57f[_0xb63b('0x21')](_0x343e1d)[_0xb63b('0x22')](function(_0x2cc35c){return _0x2cc35c;});}return null;};}function removeEntity(_0x124cac,_0x33ee73){return function(_0x5aedd2){if(_0x5aedd2){return _0x5aedd2[_0xb63b('0x23')]()['then'](function(){_0x124cac['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x89c2ed,_0x3e8121){return function(_0x4f8b1d){if(!_0x4f8b1d){_0x89c2ed[_0xb63b('0x24')](0x194);}return _0x4f8b1d;};}function handleError(_0x4b5c70,_0x553e74){_0x553e74=_0x553e74||0x1f4;return function(_0x512053){logger['error'](_0x512053['stack']);if(_0x512053[_0xb63b('0x25')]){delete _0x512053[_0xb63b('0x25')];}_0x4b5c70[_0xb63b('0x18')](_0x553e74)[_0xb63b('0x26')](_0x512053);};}exports[_0xb63b('0x27')]=function(_0x52be4c,_0x50c87e){var _0x1fd64d={},_0x4ddcf0={},_0x239e4c={'count':0x0,'rows':[]};var _0x3eb2eb=_[_0xb63b('0x28')](db[_0xb63b('0x29')][_0xb63b('0x2a')],function(_0x56c828){return{'name':_0x56c828[_0xb63b('0x2b')],'type':_0x56c828['type'][_0xb63b('0x2c')]};});_0x4ddcf0[_0xb63b('0x2d')]=_[_0xb63b('0x28')](_0x3eb2eb,_0xb63b('0x25'));_0x4ddcf0[_0xb63b('0x2e')]=_[_0xb63b('0x2f')](_0x52be4c[_0xb63b('0x2e')]);_0x4ddcf0[_0xb63b('0x30')]=_[_0xb63b('0x31')](_0x4ddcf0[_0xb63b('0x2d')],_0x4ddcf0[_0xb63b('0x2e')]);_0x1fd64d[_0xb63b('0x32')]=_[_0xb63b('0x31')](_0x4ddcf0[_0xb63b('0x2d')],qs[_0xb63b('0x33')](_0x52be4c[_0xb63b('0x2e')][_0xb63b('0x33')]));_0x1fd64d[_0xb63b('0x32')]=_0x1fd64d[_0xb63b('0x32')][_0xb63b('0x34')]?_0x1fd64d[_0xb63b('0x32')]:_0x4ddcf0[_0xb63b('0x2d')];if(!_0x52be4c['query'][_0xb63b('0x35')](_0xb63b('0x36'))){_0x1fd64d['limit']=qs[_0xb63b('0x1d')](_0x52be4c[_0xb63b('0x2e')]['limit']);_0x1fd64d[_0xb63b('0x1b')]=qs[_0xb63b('0x1b')](_0x52be4c[_0xb63b('0x2e')]['offset']);}_0x1fd64d[_0xb63b('0x37')]=qs[_0xb63b('0x38')](_0x52be4c['query']['sort']);_0x1fd64d[_0xb63b('0x39')]=qs[_0xb63b('0x30')](_[_0xb63b('0x3a')](_0x52be4c[_0xb63b('0x2e')],_0x4ddcf0[_0xb63b('0x30')]),_0x3eb2eb);if(_0x52be4c[_0xb63b('0x2e')][_0xb63b('0x3b')]){_0x1fd64d[_0xb63b('0x39')]=_['merge'](_0x1fd64d[_0xb63b('0x39')],{'$or':_['map'](_0x3eb2eb,function(_0x1c20a7){if(_0x1c20a7[_0xb63b('0x3c')]!=='VIRTUAL'){var _0x514036={};_0x514036[_0x1c20a7[_0xb63b('0x25')]]={'$like':'%'+_0x52be4c[_0xb63b('0x2e')][_0xb63b('0x3b')]+'%'};return _0x514036;}})});}_0x1fd64d=_[_0xb63b('0x3d')]({},_0x1fd64d,_0x52be4c[_0xb63b('0x3e')]);var _0x3decf4={'where':_0x1fd64d[_0xb63b('0x39')]};return db[_0xb63b('0x29')][_0xb63b('0x1e')](_0x3decf4)[_0xb63b('0x22')](function(_0x430e2f){_0x239e4c[_0xb63b('0x1e')]=_0x430e2f;if(_0x52be4c[_0xb63b('0x2e')][_0xb63b('0x3f')]){_0x1fd64d[_0xb63b('0x40')]=[{'all':!![]}];}return db[_0xb63b('0x29')][_0xb63b('0x41')](_0x1fd64d);})[_0xb63b('0x22')](function(_0xe00fa2){_0x239e4c[_0xb63b('0x42')]=_0xe00fa2;return _0x239e4c;})[_0xb63b('0x22')](respondWithFilteredResult(_0x50c87e,_0x1fd64d))[_0xb63b('0x43')](handleError(_0x50c87e,null));};exports['show']=function(_0x4da428,_0x523d90){var _0x4ade9f={'raw':!![],'where':{'id':_0x4da428[_0xb63b('0x44')]['id']}},_0x2531d6={};_0x2531d6[_0xb63b('0x2d')]=_[_0xb63b('0x2f')](db[_0xb63b('0x29')][_0xb63b('0x2a')]);_0x2531d6[_0xb63b('0x2e')]=_[_0xb63b('0x2f')](_0x4da428['query']);_0x2531d6[_0xb63b('0x30')]=_[_0xb63b('0x31')](_0x2531d6[_0xb63b('0x2d')],_0x2531d6[_0xb63b('0x2e')]);_0x4ade9f[_0xb63b('0x32')]=_[_0xb63b('0x31')](_0x2531d6[_0xb63b('0x2d')],qs['fields'](_0x4da428['query'][_0xb63b('0x33')]));_0x4ade9f['attributes']=_0x4ade9f[_0xb63b('0x32')][_0xb63b('0x34')]?_0x4ade9f['attributes']:_0x2531d6[_0xb63b('0x2d')];if(_0x4da428[_0xb63b('0x2e')][_0xb63b('0x3f')]){_0x4ade9f[_0xb63b('0x40')]=[{'all':!![]}];}_0x4ade9f=_['merge']({},_0x4ade9f,_0x4da428[_0xb63b('0x3e')]);return db[_0xb63b('0x29')][_0xb63b('0x45')](_0x4ade9f)[_0xb63b('0x22')](handleEntityNotFound(_0x523d90,null))[_0xb63b('0x22')](respondWithResult(_0x523d90,null))[_0xb63b('0x43')](handleError(_0x523d90,null));};exports['create']=function(_0x2164aa,_0x380066){return db[_0xb63b('0x29')][_0xb63b('0x46')](_0x2164aa['body'],{})[_0xb63b('0x22')](respondWithResult(_0x380066,0xc9))[_0xb63b('0x43')](handleError(_0x380066,null));};exports['update']=function(_0x771923,_0x2e785a){if(_0x771923[_0xb63b('0x47')]['id']){delete _0x771923[_0xb63b('0x47')]['id'];}return db[_0xb63b('0x29')][_0xb63b('0x45')]({'where':{'id':_0x771923[_0xb63b('0x44')]['id']}})['then'](handleEntityNotFound(_0x2e785a,null))[_0xb63b('0x22')](saveUpdates(_0x771923['body'],null))['then'](respondWithResult(_0x2e785a,null))[_0xb63b('0x43')](handleError(_0x2e785a,null));};exports['destroy']=function(_0x1efcd0,_0x423ff7){return db[_0xb63b('0x29')]['find']({'where':{'id':_0x1efcd0['params']['id']}})['then'](handleEntityNotFound(_0x423ff7,null))[_0xb63b('0x22')](removeEntity(_0x423ff7,null))[_0xb63b('0x43')](handleError(_0x423ff7,null));};exports['describe']=function(_0x3efe2f,_0x1f57dd){return db['FaxQueueReport'][_0xb63b('0x48')]()[_0xb63b('0x22')](respondWithResult(_0x1f57dd,null))[_0xb63b('0x43')](handleError(_0x1f57dd,null));};
\ No newline at end of file
index 337e7e4..b59491f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','uniqueid','lodash','api','request-promise','path'];(function(_0x358e18,_0x1ea02c){var _0x3bcf07=function(_0x531efd){while(--_0x531efd){_0x358e18['push'](_0x358e18['shift']());}};_0x3bcf07(++_0x1ea02c);}(_0x0295,0x1f0));var _0x5029=function(_0x451539,_0x4ddef2){_0x451539=_0x451539-0x0;var _0x290fd9=_0x0295[_0x451539];return _0x290fd9;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5029('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5029('0x2'));var fs=require('fs');var path=require(_0x5029('0x3'));var rimraf=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var attributes=require(_0x5029('0x6'));module[_0x5029('0x7')]=function(_0x200217,_0x215955){return _0x200217[_0x5029('0x8')]('FaxQueueReport',attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x5029('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf494=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','uniqueid','lodash'];(function(_0x4c6510,_0x228ba5){var _0x196fc7=function(_0x30ac4b){while(--_0x30ac4b){_0x4c6510['push'](_0x4c6510['shift']());}};_0x196fc7(++_0x228ba5);}(_0xf494,0x1c6));var _0x4f49=function(_0x55d308,_0x11f21c){_0x55d308=_0x55d308-0x0;var _0x3fc216=_0xf494[_0x55d308];return _0x3fc216;};'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')]('FaxQueueReport',attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0x4f49('0xc'),'fields':[_0x4f49('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 4a31257..f4bc001 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741f=['then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','debug','update','where','attributes','limit','UpdateFaxQueueReport','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x741f,0x105));var _0xf741=function(_0x323a22,_0x2a3468){_0x323a22=_0x323a22-0x0;var _0xf3df94=_0x741f[_0x323a22];return _0xf3df94;};'use strict';var _=require(_0xf741('0x0'));var util=require(_0xf741('0x1'));var moment=require(_0xf741('0x2'));var BPromise=require(_0xf741('0x3'));var rs=require(_0xf741('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf741('0x5'))['db'];var utils=require(_0xf741('0x6'));var logger=require(_0xf741('0x7'))(_0xf741('0x8'));var config=require(_0xf741('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf741('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1a7400,_0x24e394,_0xd1e0f5){return new BPromise(function(_0x5e9157,_0x502b38){return client['request'](_0x1a7400,_0xd1e0f5)[_0xf741('0xb')](function(_0xd71ca0){logger[_0xf741('0xc')](_0xf741('0xd'),_0x24e394,_0xf741('0xe'));logger['debug'](_0xf741('0xf'),_0x24e394,_0xf741('0xe'),JSON[_0xf741('0x10')](_0xd71ca0));if(_0xd71ca0[_0xf741('0x11')]){if(_0xd71ca0[_0xf741('0x11')][_0xf741('0x12')]===0x1f4){logger[_0xf741('0x11')](_0xf741('0xd'),_0x24e394,_0xd71ca0['error'][_0xf741('0x13')]);return _0x502b38(_0xd71ca0[_0xf741('0x11')]['message']);}logger['error'](_0xf741('0xd'),_0x24e394,_0xd71ca0[_0xf741('0x11')][_0xf741('0x13')]);return _0x5e9157(_0xd71ca0['error'][_0xf741('0x13')]);}else{logger[_0xf741('0xc')](_0xf741('0xd'),_0x24e394,_0xf741('0xe'));_0x5e9157(_0xd71ca0[_0xf741('0x14')]['message']);}})[_0xf741('0x15')](function(_0x3cb8c6){logger['error'](_0xf741('0xd'),_0x24e394,_0x3cb8c6);_0x502b38(_0x3cb8c6);});});}exports[_0xf741('0x16')]=function(_0x3e2f2b){var _0x2a7dac=this;return new Promise(function(_0x4b604d,_0x2bc4c1){return db[_0xf741('0x17')][_0xf741('0x18')](_0x3e2f2b[_0xf741('0x19')],{'raw':_0x3e2f2b[_0xf741('0x1a')]?_0x3e2f2b[_0xf741('0x1a')][_0xf741('0x1b')]===undefined?!![]:![]:!![]})[_0xf741('0xb')](function(_0x2bd9e3){logger[_0xf741('0xc')](_0xf741('0x16'),_0x3e2f2b);logger[_0xf741('0x1c')]('CreateFaxQueueReport',_0x3e2f2b,JSON[_0xf741('0x10')](_0x2bd9e3));_0x4b604d(_0x2bd9e3);})[_0xf741('0x15')](function(_0xa6a5fb){logger[_0xf741('0x11')]('CreateFaxQueueReport',_0xa6a5fb['message'],_0x3e2f2b);_0x2bc4c1(_0x2a7dac[_0xf741('0x11')](0x1f4,_0xa6a5fb['message']));});});};exports['UpdateFaxQueueReport']=function(_0x43789a){var _0x1e0ecb=this;return new Promise(function(_0x70f9b4,_0x505659){return db[_0xf741('0x17')][_0xf741('0x1d')](_0x43789a[_0xf741('0x19')],{'raw':_0x43789a[_0xf741('0x1a')]?_0x43789a[_0xf741('0x1a')][_0xf741('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x43789a[_0xf741('0x1a')]?_0x43789a[_0xf741('0x1a')][_0xf741('0x1e')]||null:null,'attributes':_0x43789a[_0xf741('0x1a')]?_0x43789a[_0xf741('0x1a')][_0xf741('0x1f')]||null:null,'limit':_0x43789a[_0xf741('0x1a')]?_0x43789a[_0xf741('0x1a')][_0xf741('0x20')]||null:null})[_0xf741('0xb')](function(_0x5849e0){logger[_0xf741('0xc')](_0xf741('0x21'),_0x43789a);logger['debug'](_0xf741('0x21'),_0x43789a,JSON[_0xf741('0x10')](_0x5849e0));_0x70f9b4(_0x5849e0);})[_0xf741('0x15')](function(_0x499cb6){logger[_0xf741('0x11')](_0xf741('0x21'),_0x499cb6['message'],_0x43789a);_0x505659(_0x1e0ecb[_0xf741('0x11')](0x1f4,_0x499cb6['message']));});});};
\ No newline at end of file
+var _0x2ba6=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','debug','request\x20sent','code','error','message','catch','FaxQueueReport','create','body','raw','CreateFaxQueueReport','UpdateFaxQueueReport','update','options','where','limit','lodash','util'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x2ba6,0x172));var _0x62ba=function(_0x37c5b3,_0x477ae7){_0x37c5b3=_0x37c5b3-0x0;var _0x2f0895=_0x2ba6[_0x37c5b3];return _0x2f0895;};'use strict';var _=require(_0x62ba('0x0'));var util=require(_0x62ba('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x62ba('0x2'));var fs=require('fs');var Redis=require(_0x62ba('0x3'));var db=require(_0x62ba('0x4'))['db'];var utils=require(_0x62ba('0x5'));var logger=require(_0x62ba('0x6'))(_0x62ba('0x7'));var config=require(_0x62ba('0x8'));var jayson=require(_0x62ba('0x9'));var client=jayson['client'][_0x62ba('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x12ba1a,_0x4cc032,_0x497d3d){return new BPromise(function(_0x88600f,_0x5868e6){return client[_0x62ba('0xb')](_0x12ba1a,_0x497d3d)[_0x62ba('0xc')](function(_0x258832){logger[_0x62ba('0xd')](_0x62ba('0xe'),_0x4cc032,'request\x20sent');logger[_0x62ba('0xf')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x4cc032,_0x62ba('0x10'),JSON['stringify'](_0x258832));if(_0x258832['error']){if(_0x258832['error'][_0x62ba('0x11')]===0x1f4){logger['error'](_0x62ba('0xe'),_0x4cc032,_0x258832[_0x62ba('0x12')][_0x62ba('0x13')]);return _0x5868e6(_0x258832['error'][_0x62ba('0x13')]);}logger[_0x62ba('0x12')]('FaxQueueReport,\x20%s,\x20%s',_0x4cc032,_0x258832[_0x62ba('0x12')][_0x62ba('0x13')]);return _0x88600f(_0x258832[_0x62ba('0x12')][_0x62ba('0x13')]);}else{logger[_0x62ba('0xd')](_0x62ba('0xe'),_0x4cc032,_0x62ba('0x10'));_0x88600f(_0x258832['result']['message']);}})[_0x62ba('0x14')](function(_0x3fcabe){logger[_0x62ba('0x12')]('FaxQueueReport,\x20%s,\x20%s',_0x4cc032,_0x3fcabe);_0x5868e6(_0x3fcabe);});});}exports['CreateFaxQueueReport']=function(_0x5d21cd){var _0x16a388=this;return new Promise(function(_0x2dedeb,_0x50bde8){return db[_0x62ba('0x15')][_0x62ba('0x16')](_0x5d21cd[_0x62ba('0x17')],{'raw':_0x5d21cd['options']?_0x5d21cd['options'][_0x62ba('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x5e9ba1){logger['info'](_0x62ba('0x19'),_0x5d21cd);logger[_0x62ba('0xf')](_0x62ba('0x19'),_0x5d21cd,JSON['stringify'](_0x5e9ba1));_0x2dedeb(_0x5e9ba1);})[_0x62ba('0x14')](function(_0x501a08){logger['error'](_0x62ba('0x19'),_0x501a08['message'],_0x5d21cd);_0x50bde8(_0x16a388['error'](0x1f4,_0x501a08['message']));});});};exports[_0x62ba('0x1a')]=function(_0x17ed34){var _0x4f3c1c=this;return new Promise(function(_0x310071,_0x466e50){return db[_0x62ba('0x15')][_0x62ba('0x1b')](_0x17ed34[_0x62ba('0x17')],{'raw':_0x17ed34[_0x62ba('0x1c')]?_0x17ed34[_0x62ba('0x1c')][_0x62ba('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x17ed34['options']?_0x17ed34[_0x62ba('0x1c')][_0x62ba('0x1d')]||null:null,'attributes':_0x17ed34[_0x62ba('0x1c')]?_0x17ed34['options']['attributes']||null:null,'limit':_0x17ed34[_0x62ba('0x1c')]?_0x17ed34['options'][_0x62ba('0x1e')]||null:null})[_0x62ba('0xc')](function(_0x13f8c6){logger['info'](_0x62ba('0x1a'),_0x17ed34);logger[_0x62ba('0xf')](_0x62ba('0x1a'),_0x17ed34,JSON['stringify'](_0x13f8c6));_0x310071(_0x13f8c6);})[_0x62ba('0x14')](function(_0x3cab2f){logger[_0x62ba('0x12')](_0x62ba('0x1a'),_0x3cab2f[_0x62ba('0x13')],_0x17ed34);_0x466e50(_0x4f3c1c[_0x62ba('0x12')](0x1f4,_0x3cab2f[_0x62ba('0x13')]));});});};
\ No newline at end of file
index 5f88cb3..d28b8ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf442=['fs-extra','../../components/auth/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','/describe','describe','/:id','post','create','update','delete','util','path','connect-timeout','express','Router'];(function(_0x594ece,_0x2a1f27){var _0x471bc4=function(_0x31941c){while(--_0x31941c){_0x594ece['push'](_0x594ece['shift']());}};_0x471bc4(++_0x2a1f27);}(_0xf442,0x8b));var _0x2f44=function(_0x25f0e3,_0x162c81){_0x25f0e3=_0x25f0e3-0x0;var _0x41096f=_0xf442[_0x25f0e3];return _0x41096f;};'use strict';var multer=require('multer');var util=require(_0x2f44('0x0'));var path=require(_0x2f44('0x1'));var timeout=require(_0x2f44('0x2'));var express=require(_0x2f44('0x3'));var router=express[_0x2f44('0x4')]();var fs_extra=require(_0x2f44('0x5'));var auth=require(_0x2f44('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x2f44('0x7'));var controller=require(_0x2f44('0x8'));router[_0x2f44('0x9')]('/',auth[_0x2f44('0xa')](),controller['index']);router[_0x2f44('0x9')](_0x2f44('0xb'),auth[_0x2f44('0xa')](),controller[_0x2f44('0xc')]);router[_0x2f44('0x9')](_0x2f44('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x2f44('0xe')]('/',auth['isAuthenticated'](),controller[_0x2f44('0xf')]);router['put'](_0x2f44('0xd'),auth[_0x2f44('0xa')](),controller[_0x2f44('0x10')]);router[_0x2f44('0x11')](_0x2f44('0xd'),auth[_0x2f44('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xdf1a=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express'];(function(_0x496a9e,_0x2680d2){var _0x562250=function(_0x483bf9){while(--_0x483bf9){_0x496a9e['push'](_0x496a9e['shift']());}};_0x562250(++_0x2680d2);}(_0xdf1a,0x8c));var _0xadf1=function(_0x2e3dfc,_0x454d6c){_0x2e3dfc=_0x2e3dfc-0x0;var _0x4b1245=_0xdf1a[_0x2e3dfc];return _0x4b1245;};'use strict';var multer=require('multer');var util=require(_0xadf1('0x0'));var path=require(_0xadf1('0x1'));var timeout=require(_0xadf1('0x2'));var express=require(_0xadf1('0x3'));var router=express[_0xadf1('0x4')]();var fs_extra=require(_0xadf1('0x5'));var auth=require(_0xadf1('0x6'));var interaction=require(_0xadf1('0x7'));var config=require(_0xadf1('0x8'));var controller=require(_0xadf1('0x9'));router[_0xadf1('0xa')]('/',auth[_0xadf1('0xb')](),controller[_0xadf1('0xc')]);router[_0xadf1('0xa')](_0xadf1('0xd'),auth[_0xadf1('0xb')](),controller[_0xadf1('0xe')]);router['get'](_0xadf1('0xf'),auth[_0xadf1('0xb')](),controller[_0xadf1('0x10')]);router[_0xadf1('0x11')]('/',auth[_0xadf1('0xb')](),controller[_0xadf1('0x12')]);router[_0xadf1('0x13')](_0xadf1('0xf'),auth['isAuthenticated'](),controller[_0xadf1('0x14')]);router[_0xadf1('0x15')]('/:id',auth[_0xadf1('0xb')](),controller[_0xadf1('0x16')]);module[_0xadf1('0x17')]=router;
\ No newline at end of file
index afa1a1a..e951f13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x43fdf8,_0x8426b3){var _0x1160c6=function(_0x281fb6){while(--_0x281fb6){_0x43fdf8['push'](_0x43fdf8['shift']());}};_0x1160c6(++_0x8426b3);}(_0x9bde,0xe1));var _0xe9bd=function(_0x5eee13,_0xad555d){_0x5eee13=_0x5eee13-0x0;var _0xbcb071=_0x9bde[_0x5eee13];return _0xbcb071;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
+var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x263204,_0x19286b){var _0xed3987=function(_0x282bf1){while(--_0x282bf1){_0x263204['push'](_0x263204['shift']());}};_0xed3987(++_0x19286b);}(_0x34e8,0x12c));var _0x834e=function(_0x2f4a1a,_0x483783){_0x2f4a1a=_0x2f4a1a-0x0;var _0x55ba2a=_0x34e8[_0x2f4a1a];return _0x55ba2a;};'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 36e2b29..4b421a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bad=['include','findAll','rows','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','stack','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','keys','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll'];(function(_0x23a7de,_0x5d4b79){var _0x4eb0bd=function(_0x15bc3e){while(--_0x15bc3e){_0x23a7de['push'](_0x23a7de['shift']());}};_0x4eb0bd(++_0x5d4b79);}(_0x6bad,0x12d));var _0xd6ba=function(_0x206831,_0x9fb896){_0x206831=_0x206831-0x0;var _0x475f48=_0x6bad[_0x206831];return _0x475f48;};'use strict';var emlformat=require(_0xd6ba('0x0'));var rimraf=require(_0xd6ba('0x1'));var zipdir=require(_0xd6ba('0x2'));var jsonpatch=require(_0xd6ba('0x3'));var rp=require(_0xd6ba('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd6ba('0x5'));var path=require('path');var sox=require(_0xd6ba('0x6'));var csv=require('to-csv');var ejs=require(_0xd6ba('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd6ba('0x8'));var squel=require(_0xd6ba('0x9'));var crypto=require(_0xd6ba('0xa'));var jsforce=require(_0xd6ba('0xb'));var deskjs=require(_0xd6ba('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd6ba('0xd'));var Papa=require(_0xd6ba('0xe'));var Redis=require(_0xd6ba('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd6ba('0x10'));var logger=require(_0xd6ba('0x11'))(_0xd6ba('0x12'));var utils=require(_0xd6ba('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xd6ba('0x14'));var db=require(_0xd6ba('0x15'))['db'];function respondWithStatusCode(_0x20d0e7,_0x38caaa){_0x38caaa=_0x38caaa||0xcc;return function(_0x2888cd){if(_0x2888cd){return _0x20d0e7[_0xd6ba('0x16')](_0x38caaa);}return _0x20d0e7[_0xd6ba('0x17')](_0x38caaa)[_0xd6ba('0x18')]();};}function respondWithResult(_0x66aca1,_0x4e199b){_0x4e199b=_0x4e199b||0xc8;return function(_0x322fe6){if(_0x322fe6){return _0x66aca1[_0xd6ba('0x17')](_0x4e199b)[_0xd6ba('0x19')](_0x322fe6);}};}function respondWithFilteredResult(_0x409eb8,_0x504fe8){return function(_0x2e0ed0){if(_0x2e0ed0){var _0x213c1b=typeof _0x504fe8[_0xd6ba('0x1a')]===_0xd6ba('0x1b')&&typeof _0x504fe8[_0xd6ba('0x1c')]==='undefined';var _0x55b1d6=_0x2e0ed0[_0xd6ba('0x1d')];var _0x776cb5=_0x213c1b?0x0:_0x504fe8[_0xd6ba('0x1a')];var _0x23dd96=_0x213c1b?_0x2e0ed0[_0xd6ba('0x1d')]:_0x504fe8['offset']+_0x504fe8['limit'];var _0x2e51fd;if(_0x23dd96>=_0x55b1d6){_0x23dd96=_0x55b1d6;_0x2e51fd=0xc8;}else{_0x2e51fd=0xce;}_0x409eb8[_0xd6ba('0x17')](_0x2e51fd);return _0x409eb8[_0xd6ba('0x1e')]('Content-Range',_0x776cb5+'-'+_0x23dd96+'/'+_0x55b1d6)[_0xd6ba('0x19')](_0x2e0ed0);}return null;};}function patchUpdates(_0x4f74ab){return function(_0x5c5ee8){try{jsonpatch[_0xd6ba('0x1f')](_0x5c5ee8,_0x4f74ab,!![]);}catch(_0x4108e0){return BPromise['reject'](_0x4108e0);}return _0x5c5ee8[_0xd6ba('0x20')]();};}function saveUpdates(_0x3cb80c,_0x1f608c){return function(_0x1adf9b){if(_0x1adf9b){return _0x1adf9b[_0xd6ba('0x21')](_0x3cb80c)[_0xd6ba('0x22')](function(_0x596727){return _0x596727;});}return null;};}function removeEntity(_0x5a4ac1,_0x4ee00a){return function(_0x2b380c){if(_0x2b380c){return _0x2b380c[_0xd6ba('0x23')]()[_0xd6ba('0x22')](function(){_0x5a4ac1[_0xd6ba('0x17')](0xcc)[_0xd6ba('0x18')]();});}};}function handleEntityNotFound(_0x3cb8b3,_0x3fdb02){return function(_0xf9d9a0){if(!_0xf9d9a0){_0x3cb8b3[_0xd6ba('0x16')](0x194);}return _0xf9d9a0;};}function handleError(_0x4498f1,_0x1431e6){_0x1431e6=_0x1431e6||0x1f4;return function(_0x1f5a30){logger['error'](_0x1f5a30[_0xd6ba('0x24')]);if(_0x1f5a30[_0xd6ba('0x25')]){delete _0x1f5a30['name'];}_0x4498f1[_0xd6ba('0x17')](_0x1431e6)[_0xd6ba('0x26')](_0x1f5a30);};}exports[_0xd6ba('0x27')]=function(_0x4e13f,_0x3df5e7){var _0x28bde5={},_0x3343e5={},_0x7e9fc0={'count':0x0,'rows':[]};var _0x5612b7=_[_0xd6ba('0x28')](db[_0xd6ba('0x29')][_0xd6ba('0x2a')],function(_0x1d176a){return{'name':_0x1d176a[_0xd6ba('0x2b')],'type':_0x1d176a[_0xd6ba('0x2c')][_0xd6ba('0x2d')]};});_0x3343e5[_0xd6ba('0x2e')]=_[_0xd6ba('0x28')](_0x5612b7,_0xd6ba('0x25'));_0x3343e5['query']=_[_0xd6ba('0x2f')](_0x4e13f['query']);_0x3343e5['filters']=_[_0xd6ba('0x30')](_0x3343e5[_0xd6ba('0x2e')],_0x3343e5[_0xd6ba('0x31')]);_0x28bde5['attributes']=_[_0xd6ba('0x30')](_0x3343e5[_0xd6ba('0x2e')],qs[_0xd6ba('0x32')](_0x4e13f[_0xd6ba('0x31')][_0xd6ba('0x32')]));_0x28bde5[_0xd6ba('0x33')]=_0x28bde5[_0xd6ba('0x33')][_0xd6ba('0x34')]?_0x28bde5[_0xd6ba('0x33')]:_0x3343e5[_0xd6ba('0x2e')];if(!_0x4e13f[_0xd6ba('0x31')][_0xd6ba('0x35')](_0xd6ba('0x36'))){_0x28bde5[_0xd6ba('0x1c')]=qs[_0xd6ba('0x1c')](_0x4e13f[_0xd6ba('0x31')][_0xd6ba('0x1c')]);_0x28bde5[_0xd6ba('0x1a')]=qs['offset'](_0x4e13f[_0xd6ba('0x31')][_0xd6ba('0x1a')]);}_0x28bde5[_0xd6ba('0x37')]=qs[_0xd6ba('0x38')](_0x4e13f['query'][_0xd6ba('0x38')]);_0x28bde5[_0xd6ba('0x39')]=qs['filters'](_['pick'](_0x4e13f['query'],_0x3343e5[_0xd6ba('0x3a')]),_0x5612b7);if(_0x4e13f['query'][_0xd6ba('0x3b')]){_0x28bde5[_0xd6ba('0x39')]=_[_0xd6ba('0x3c')](_0x28bde5[_0xd6ba('0x39')],{'$or':_[_0xd6ba('0x28')](_0x5612b7,function(_0x2ed352){if(_0x2ed352[_0xd6ba('0x2c')]!==_0xd6ba('0x3d')){var _0x162596={};_0x162596[_0x2ed352[_0xd6ba('0x25')]]={'$like':'%'+_0x4e13f['query'][_0xd6ba('0x3b')]+'%'};return _0x162596;}})});}_0x28bde5=_[_0xd6ba('0x3c')]({},_0x28bde5,_0x4e13f[_0xd6ba('0x3e')]);var _0x4a0a69={'where':_0x28bde5[_0xd6ba('0x39')]};return db['FaxTransferReport'][_0xd6ba('0x1d')](_0x4a0a69)[_0xd6ba('0x22')](function(_0x5d8691){_0x7e9fc0['count']=_0x5d8691;if(_0x4e13f[_0xd6ba('0x31')][_0xd6ba('0x3f')]){_0x28bde5[_0xd6ba('0x40')]=[{'all':!![]}];}return db[_0xd6ba('0x29')][_0xd6ba('0x41')](_0x28bde5);})[_0xd6ba('0x22')](function(_0x298116){_0x7e9fc0[_0xd6ba('0x42')]=_0x298116;return _0x7e9fc0;})[_0xd6ba('0x22')](respondWithFilteredResult(_0x3df5e7,_0x28bde5))[_0xd6ba('0x43')](handleError(_0x3df5e7,null));};exports['show']=function(_0xe38e7d,_0x2dc2d4){var _0x1e5d8a={'raw':!![],'where':{'id':_0xe38e7d[_0xd6ba('0x44')]['id']}},_0x231038={};_0x231038[_0xd6ba('0x2e')]=_[_0xd6ba('0x2f')](db[_0xd6ba('0x29')][_0xd6ba('0x2a')]);_0x231038['query']=_[_0xd6ba('0x2f')](_0xe38e7d[_0xd6ba('0x31')]);_0x231038[_0xd6ba('0x3a')]=_[_0xd6ba('0x30')](_0x231038[_0xd6ba('0x2e')],_0x231038['query']);_0x1e5d8a[_0xd6ba('0x33')]=_[_0xd6ba('0x30')](_0x231038[_0xd6ba('0x2e')],qs[_0xd6ba('0x32')](_0xe38e7d['query'][_0xd6ba('0x32')]));_0x1e5d8a['attributes']=_0x1e5d8a[_0xd6ba('0x33')][_0xd6ba('0x34')]?_0x1e5d8a[_0xd6ba('0x33')]:_0x231038[_0xd6ba('0x2e')];if(_0xe38e7d['query'][_0xd6ba('0x3f')]){_0x1e5d8a[_0xd6ba('0x40')]=[{'all':!![]}];}_0x1e5d8a=_[_0xd6ba('0x3c')]({},_0x1e5d8a,_0xe38e7d['options']);return db[_0xd6ba('0x29')][_0xd6ba('0x45')](_0x1e5d8a)['then'](handleEntityNotFound(_0x2dc2d4,null))[_0xd6ba('0x22')](respondWithResult(_0x2dc2d4,null))[_0xd6ba('0x43')](handleError(_0x2dc2d4,null));};exports[_0xd6ba('0x46')]=function(_0x3cb71a,_0x30c88d){return db[_0xd6ba('0x29')]['create'](_0x3cb71a[_0xd6ba('0x47')],{})['then'](respondWithResult(_0x30c88d,0xc9))[_0xd6ba('0x43')](handleError(_0x30c88d,null));};exports[_0xd6ba('0x21')]=function(_0x228873,_0x50f515){if(_0x228873[_0xd6ba('0x47')]['id']){delete _0x228873[_0xd6ba('0x47')]['id'];}return db[_0xd6ba('0x29')][_0xd6ba('0x45')]({'where':{'id':_0x228873[_0xd6ba('0x44')]['id']}})[_0xd6ba('0x22')](handleEntityNotFound(_0x50f515,null))[_0xd6ba('0x22')](saveUpdates(_0x228873[_0xd6ba('0x47')],null))['then'](respondWithResult(_0x50f515,null))[_0xd6ba('0x43')](handleError(_0x50f515,null));};exports[_0xd6ba('0x23')]=function(_0xcffc93,_0x3daf3b){return db[_0xd6ba('0x29')][_0xd6ba('0x45')]({'where':{'id':_0xcffc93['params']['id']}})['then'](handleEntityNotFound(_0x3daf3b,null))[_0xd6ba('0x22')](removeEntity(_0x3daf3b,null))['catch'](handleError(_0x3daf3b,null));};exports['describe']=function(_0x4e8e9a,_0x33ea16){return db[_0xd6ba('0x29')][_0xd6ba('0x48')]()['then'](respondWithResult(_0x33ea16,null))[_0xd6ba('0x43')](handleError(_0x33ea16,null));};
\ No newline at end of file
+var _0x6102=['rows','show','keys','rawAttributes','length','includeAll','find','create','body','catch','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','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','sendStatus','end','status','json','undefined','limit','count','offset','set','apply','update','then','error','stack','name','send','index','FaxTransferReport','key','model','map','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','merge','where','type','VIRTUAL','options','include','findAll'];(function(_0x1d80be,_0x3a60ff){var _0xf9a4f3=function(_0x5b8a08){while(--_0x5b8a08){_0x1d80be['push'](_0x1d80be['shift']());}};_0xf9a4f3(++_0x3a60ff);}(_0x6102,0x9e));var _0x2610=function(_0x44946b,_0xf874ec){_0x44946b=_0x44946b-0x0;var _0x249bc4=_0x6102[_0x44946b];return _0x249bc4;};'use strict';var emlformat=require(_0x2610('0x0'));var rimraf=require(_0x2610('0x1'));var zipdir=require(_0x2610('0x2'));var jsonpatch=require(_0x2610('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2610('0x4'));var path=require(_0x2610('0x5'));var sox=require(_0x2610('0x6'));var csv=require(_0x2610('0x7'));var ejs=require(_0x2610('0x8'));var fs=require('fs');var fs_extra=require(_0x2610('0x9'));var _=require(_0x2610('0xa'));var squel=require(_0x2610('0xb'));var crypto=require('crypto');var jsforce=require(_0x2610('0xc'));var deskjs=require(_0x2610('0xd'));var toCsv=require(_0x2610('0x7'));var querystring=require(_0x2610('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2610('0xf'));var qs=require(_0x2610('0x10'));var as=require(_0x2610('0x11'));var hardwareService=require(_0x2610('0x12'));var logger=require('../../config/logger')(_0x2610('0x13'));var utils=require(_0x2610('0x14'));var config=require(_0x2610('0x15'));var licenseUtil=require(_0x2610('0x16'));var db=require(_0x2610('0x17'))['db'];function respondWithStatusCode(_0x554c6c,_0x2f820c){_0x2f820c=_0x2f820c||0xcc;return function(_0x33b0d4){if(_0x33b0d4){return _0x554c6c[_0x2610('0x18')](_0x2f820c);}return _0x554c6c['status'](_0x2f820c)[_0x2610('0x19')]();};}function respondWithResult(_0x2c76c0,_0xf61cc4){_0xf61cc4=_0xf61cc4||0xc8;return function(_0x475ecb){if(_0x475ecb){return _0x2c76c0[_0x2610('0x1a')](_0xf61cc4)[_0x2610('0x1b')](_0x475ecb);}};}function respondWithFilteredResult(_0x99c53f,_0x27e55a){return function(_0x1e5528){if(_0x1e5528){var _0xa3c48a=typeof _0x27e55a['offset']===_0x2610('0x1c')&&typeof _0x27e55a[_0x2610('0x1d')]===_0x2610('0x1c');var _0x38ee0d=_0x1e5528[_0x2610('0x1e')];var _0x2e2031=_0xa3c48a?0x0:_0x27e55a[_0x2610('0x1f')];var _0x355044=_0xa3c48a?_0x1e5528['count']:_0x27e55a['offset']+_0x27e55a[_0x2610('0x1d')];var _0x1dcbca;if(_0x355044>=_0x38ee0d){_0x355044=_0x38ee0d;_0x1dcbca=0xc8;}else{_0x1dcbca=0xce;}_0x99c53f[_0x2610('0x1a')](_0x1dcbca);return _0x99c53f[_0x2610('0x20')]('Content-Range',_0x2e2031+'-'+_0x355044+'/'+_0x38ee0d)['json'](_0x1e5528);}return null;};}function patchUpdates(_0x5257a2){return function(_0x4a710c){try{jsonpatch[_0x2610('0x21')](_0x4a710c,_0x5257a2,!![]);}catch(_0x193913){return BPromise['reject'](_0x193913);}return _0x4a710c['save']();};}function saveUpdates(_0x303264,_0x21e0e8){return function(_0x70bee6){if(_0x70bee6){return _0x70bee6[_0x2610('0x22')](_0x303264)[_0x2610('0x23')](function(_0x350ebb){return _0x350ebb;});}return null;};}function removeEntity(_0x26db7a,_0x25fbd7){return function(_0x52aaf9){if(_0x52aaf9){return _0x52aaf9['destroy']()[_0x2610('0x23')](function(){_0x26db7a[_0x2610('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b727e,_0x46bd4f){return function(_0x4c2122){if(!_0x4c2122){_0x2b727e[_0x2610('0x18')](0x194);}return _0x4c2122;};}function handleError(_0x218682,_0x11e030){_0x11e030=_0x11e030||0x1f4;return function(_0x540806){logger[_0x2610('0x24')](_0x540806[_0x2610('0x25')]);if(_0x540806[_0x2610('0x26')]){delete _0x540806['name'];}_0x218682[_0x2610('0x1a')](_0x11e030)[_0x2610('0x27')](_0x540806);};}exports[_0x2610('0x28')]=function(_0xa26536,_0x38ac41){var _0x20ef68={},_0x273d90={},_0x3c0feb={'count':0x0,'rows':[]};var _0x380833=_['map'](db[_0x2610('0x29')]['rawAttributes'],function(_0x4b1f55){return{'name':_0x4b1f55['fieldName'],'type':_0x4b1f55['type'][_0x2610('0x2a')]};});_0x273d90[_0x2610('0x2b')]=_[_0x2610('0x2c')](_0x380833,_0x2610('0x26'));_0x273d90['query']=_['keys'](_0xa26536[_0x2610('0x2d')]);_0x273d90['filters']=_[_0x2610('0x2e')](_0x273d90[_0x2610('0x2b')],_0x273d90['query']);_0x20ef68['attributes']=_['intersection'](_0x273d90['model'],qs[_0x2610('0x2f')](_0xa26536[_0x2610('0x2d')][_0x2610('0x2f')]));_0x20ef68[_0x2610('0x30')]=_0x20ef68[_0x2610('0x30')]['length']?_0x20ef68['attributes']:_0x273d90['model'];if(!_0xa26536[_0x2610('0x2d')][_0x2610('0x31')](_0x2610('0x32'))){_0x20ef68[_0x2610('0x1d')]=qs[_0x2610('0x1d')](_0xa26536[_0x2610('0x2d')][_0x2610('0x1d')]);_0x20ef68[_0x2610('0x1f')]=qs[_0x2610('0x1f')](_0xa26536[_0x2610('0x2d')][_0x2610('0x1f')]);}_0x20ef68[_0x2610('0x33')]=qs[_0x2610('0x34')](_0xa26536[_0x2610('0x2d')]['sort']);_0x20ef68['where']=qs[_0x2610('0x35')](_['pick'](_0xa26536[_0x2610('0x2d')],_0x273d90['filters']),_0x380833);if(_0xa26536[_0x2610('0x2d')]['filter']){_0x20ef68['where']=_[_0x2610('0x36')](_0x20ef68[_0x2610('0x37')],{'$or':_[_0x2610('0x2c')](_0x380833,function(_0x49bff6){if(_0x49bff6[_0x2610('0x38')]!==_0x2610('0x39')){var _0x231437={};_0x231437[_0x49bff6[_0x2610('0x26')]]={'$like':'%'+_0xa26536[_0x2610('0x2d')]['filter']+'%'};return _0x231437;}})});}_0x20ef68=_[_0x2610('0x36')]({},_0x20ef68,_0xa26536[_0x2610('0x3a')]);var _0xf97dd9={'where':_0x20ef68['where']};return db['FaxTransferReport'][_0x2610('0x1e')](_0xf97dd9)['then'](function(_0x3e456c){_0x3c0feb[_0x2610('0x1e')]=_0x3e456c;if(_0xa26536[_0x2610('0x2d')]['includeAll']){_0x20ef68[_0x2610('0x3b')]=[{'all':!![]}];}return db[_0x2610('0x29')][_0x2610('0x3c')](_0x20ef68);})['then'](function(_0x5985f3){_0x3c0feb[_0x2610('0x3d')]=_0x5985f3;return _0x3c0feb;})[_0x2610('0x23')](respondWithFilteredResult(_0x38ac41,_0x20ef68))['catch'](handleError(_0x38ac41,null));};exports[_0x2610('0x3e')]=function(_0x4b28d5,_0x7028fb){var _0x2a20da={'raw':!![],'where':{'id':_0x4b28d5['params']['id']}},_0x585719={};_0x585719['model']=_[_0x2610('0x3f')](db[_0x2610('0x29')][_0x2610('0x40')]);_0x585719[_0x2610('0x2d')]=_[_0x2610('0x3f')](_0x4b28d5['query']);_0x585719[_0x2610('0x35')]=_[_0x2610('0x2e')](_0x585719[_0x2610('0x2b')],_0x585719[_0x2610('0x2d')]);_0x2a20da[_0x2610('0x30')]=_[_0x2610('0x2e')](_0x585719['model'],qs['fields'](_0x4b28d5[_0x2610('0x2d')][_0x2610('0x2f')]));_0x2a20da[_0x2610('0x30')]=_0x2a20da['attributes'][_0x2610('0x41')]?_0x2a20da['attributes']:_0x585719[_0x2610('0x2b')];if(_0x4b28d5[_0x2610('0x2d')][_0x2610('0x42')]){_0x2a20da[_0x2610('0x3b')]=[{'all':!![]}];}_0x2a20da=_[_0x2610('0x36')]({},_0x2a20da,_0x4b28d5[_0x2610('0x3a')]);return db['FaxTransferReport'][_0x2610('0x43')](_0x2a20da)['then'](handleEntityNotFound(_0x7028fb,null))[_0x2610('0x23')](respondWithResult(_0x7028fb,null))['catch'](handleError(_0x7028fb,null));};exports[_0x2610('0x44')]=function(_0x176cfa,_0x12e5e4){return db[_0x2610('0x29')][_0x2610('0x44')](_0x176cfa[_0x2610('0x45')],{})[_0x2610('0x23')](respondWithResult(_0x12e5e4,0xc9))[_0x2610('0x46')](handleError(_0x12e5e4,null));};exports[_0x2610('0x22')]=function(_0x3d017c,_0x1af669){if(_0x3d017c[_0x2610('0x45')]['id']){delete _0x3d017c[_0x2610('0x45')]['id'];}return db[_0x2610('0x29')]['find']({'where':{'id':_0x3d017c['params']['id']}})[_0x2610('0x23')](handleEntityNotFound(_0x1af669,null))[_0x2610('0x23')](saveUpdates(_0x3d017c[_0x2610('0x45')],null))[_0x2610('0x23')](respondWithResult(_0x1af669,null))['catch'](handleError(_0x1af669,null));};exports[_0x2610('0x47')]=function(_0x5bef61,_0x22c354){return db['FaxTransferReport'][_0x2610('0x43')]({'where':{'id':_0x5bef61['params']['id']}})[_0x2610('0x23')](handleEntityNotFound(_0x22c354,null))[_0x2610('0x23')](removeEntity(_0x22c354,null))[_0x2610('0x46')](handleError(_0x22c354,null));};exports[_0x2610('0x48')]=function(_0x135a9e,_0x380d2f){return db[_0x2610('0x29')]['describe']()[_0x2610('0x23')](respondWithResult(_0x380d2f,null))[_0x2610('0x46')](handleError(_0x380d2f,null));};
\ No newline at end of file
index b6359b2..a343442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25a9=['uniqueid','util','../../config/logger','api','moment','bluebird','path','rimraf','exports','define','FaxTransferReport','report_fax_transfer'];(function(_0x378880,_0x227237){var _0x323a55=function(_0x17ff4b){while(--_0x17ff4b){_0x378880['push'](_0x378880['shift']());}};_0x323a55(++_0x227237);}(_0x25a9,0xf1));var _0x925a=function(_0x109c40,_0x3463fa){_0x109c40=_0x109c40-0x0;var _0x3d5aed=_0x25a9[_0x109c40];return _0x3d5aed;};'use strict';var _=require('lodash');var util=require(_0x925a('0x0'));var logger=require(_0x925a('0x1'))(_0x925a('0x2'));var moment=require(_0x925a('0x3'));var BPromise=require(_0x925a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x925a('0x5'));var rimraf=require(_0x925a('0x6'));var config=require('../../config/environment');var attributes=require('./faxTransferReport.attributes');module[_0x925a('0x7')]=function(_0x5271bc,_0x436db7){return _0x5271bc[_0x925a('0x8')](_0x925a('0x9'),attributes,{'tableName':_0x925a('0xa'),'paranoid':![],'indexes':[{'name':_0x925a('0xb'),'fields':[_0x925a('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf8d0=['FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./faxTransferReport.attributes','exports','define'];(function(_0x2a1ec6,_0x6773f7){var _0x2ad6ab=function(_0xdbe301){while(--_0xdbe301){_0x2a1ec6['push'](_0x2a1ec6['shift']());}};_0x2ad6ab(++_0x6773f7);}(_0xf8d0,0x199));var _0x0f8d=function(_0x57f18a,_0x463627){_0x57f18a=_0x57f18a-0x0;var _0x30d506=_0xf8d0[_0x57f18a];return _0x30d506;};'use strict';var _=require(_0x0f8d('0x0'));var util=require(_0x0f8d('0x1'));var logger=require('../../config/logger')(_0x0f8d('0x2'));var moment=require(_0x0f8d('0x3'));var BPromise=require('bluebird');var rp=require(_0x0f8d('0x4'));var fs=require('fs');var path=require(_0x0f8d('0x5'));var rimraf=require(_0x0f8d('0x6'));var config=require(_0x0f8d('0x7'));var attributes=require(_0x0f8d('0x8'));module[_0x0f8d('0x9')]=function(_0x3bcad3,_0x1a26b7){return _0x3bcad3[_0x0f8d('0xa')](_0x0f8d('0xb'),attributes,{'tableName':_0x0f8d('0xc'),'paranoid':![],'indexes':[{'name':_0x0f8d('0xd'),'fields':[_0x0f8d('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 65f66dd..bbaa5b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaac5=['debug','stringify','error','code','FaxTransferReport,\x20%s,\x20%s','message','result','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent'];(function(_0x817d9b,_0x3c37e3){var _0x2752e1=function(_0x2b434e){while(--_0x2b434e){_0x817d9b['push'](_0x817d9b['shift']());}};_0x2752e1(++_0x3c37e3);}(_0xaac5,0x196));var _0x5aac=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xaac5[_0x46aff0];return _0x9d78cf;};'use strict';var _=require(_0x5aac('0x0'));var util=require('util');var moment=require(_0x5aac('0x1'));var BPromise=require(_0x5aac('0x2'));var rs=require(_0x5aac('0x3'));var fs=require('fs');var Redis=require(_0x5aac('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5aac('0x5'))(_0x5aac('0x6'));var config=require(_0x5aac('0x7'));var jayson=require(_0x5aac('0x8'));var client=jayson[_0x5aac('0x9')][_0x5aac('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f1b1d,_0x406262,_0x1a5e5c){return new BPromise(function(_0x3e4f49,_0x257c6d){return client['request'](_0x2f1b1d,_0x1a5e5c)[_0x5aac('0xb')](function(_0x14cf61){logger[_0x5aac('0xc')]('FaxTransferReport,\x20%s,\x20%s',_0x406262,_0x5aac('0xd'));logger[_0x5aac('0xe')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x406262,'request\x20sent',JSON[_0x5aac('0xf')](_0x14cf61));if(_0x14cf61[_0x5aac('0x10')]){if(_0x14cf61[_0x5aac('0x10')][_0x5aac('0x11')]===0x1f4){logger[_0x5aac('0x10')](_0x5aac('0x12'),_0x406262,_0x14cf61[_0x5aac('0x10')]['message']);return _0x257c6d(_0x14cf61[_0x5aac('0x10')][_0x5aac('0x13')]);}logger[_0x5aac('0x10')](_0x5aac('0x12'),_0x406262,_0x14cf61[_0x5aac('0x10')][_0x5aac('0x13')]);return _0x3e4f49(_0x14cf61[_0x5aac('0x10')]['message']);}else{logger['info'](_0x5aac('0x12'),_0x406262,'request\x20sent');_0x3e4f49(_0x14cf61[_0x5aac('0x14')]['message']);}})['catch'](function(_0x2e18ca){logger[_0x5aac('0x10')](_0x5aac('0x12'),_0x406262,_0x2e18ca);_0x257c6d(_0x2e18ca);});});}
\ No newline at end of file
+var _0x36ee=['stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x347dfc,_0x1f9db7){var _0x321fbe=function(_0x560f0b){while(--_0x560f0b){_0x347dfc['push'](_0x347dfc['shift']());}};_0x321fbe(++_0x1f9db7);}(_0x36ee,0x7d));var _0xe36e=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x36ee[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0xe36e('0x0'));var util=require(_0xe36e('0x1'));var moment=require(_0xe36e('0x2'));var BPromise=require(_0xe36e('0x3'));var rs=require(_0xe36e('0x4'));var fs=require('fs');var Redis=require(_0xe36e('0x5'));var db=require(_0xe36e('0x6'))['db'];var utils=require(_0xe36e('0x7'));var logger=require(_0xe36e('0x8'))(_0xe36e('0x9'));var config=require(_0xe36e('0xa'));var jayson=require(_0xe36e('0xb'));var client=jayson[_0xe36e('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2308c7,_0x22520a,_0x1e1bbf){return new BPromise(function(_0x245f98,_0x4dce48){return client['request'](_0x2308c7,_0x1e1bbf)[_0xe36e('0xd')](function(_0x2f74cc){logger[_0xe36e('0xe')](_0xe36e('0xf'),_0x22520a,_0xe36e('0x10'));logger[_0xe36e('0x11')](_0xe36e('0x12'),_0x22520a,_0xe36e('0x10'),JSON[_0xe36e('0x13')](_0x2f74cc));if(_0x2f74cc['error']){if(_0x2f74cc[_0xe36e('0x14')][_0xe36e('0x15')]===0x1f4){logger[_0xe36e('0x14')](_0xe36e('0xf'),_0x22520a,_0x2f74cc[_0xe36e('0x14')]['message']);return _0x4dce48(_0x2f74cc[_0xe36e('0x14')][_0xe36e('0x16')]);}logger[_0xe36e('0x14')](_0xe36e('0xf'),_0x22520a,_0x2f74cc['error'][_0xe36e('0x16')]);return _0x245f98(_0x2f74cc[_0xe36e('0x14')][_0xe36e('0x16')]);}else{logger[_0xe36e('0xe')](_0xe36e('0xf'),_0x22520a,_0xe36e('0x10'));_0x245f98(_0x2f74cc['result'][_0xe36e('0x16')]);}})[_0xe36e('0x17')](function(_0x4df9ef){logger[_0xe36e('0x14')]('FaxTransferReport,\x20%s,\x20%s',_0x22520a,_0x4df9ef);_0x4dce48(_0x4df9ef);});});}
\ No newline at end of file
index 652ea57..e6a9824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e87=['put','/:id','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','isAuthenticated','index','get','/describe','describe','show','post'];(function(_0x54d2bd,_0x57c539){var _0x34f0d4=function(_0x2e8bba){while(--_0x2e8bba){_0x54d2bd['push'](_0x54d2bd['shift']());}};_0x34f0d4(++_0x57c539);}(_0x5e87,0x16c));var _0x75e8=function(_0x4b13ee,_0x587562){_0x4b13ee=_0x4b13ee-0x0;var _0x190d07=_0x5e87[_0x4b13ee];return _0x190d07;};'use strict';var multer=require(_0x75e8('0x0'));var util=require(_0x75e8('0x1'));var path=require('path');var timeout=require(_0x75e8('0x2'));var express=require(_0x75e8('0x3'));var router=express[_0x75e8('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x75e8('0x5'));var interaction=require(_0x75e8('0x6'));var config=require(_0x75e8('0x7'));var controller=require(_0x75e8('0x8'));router['get']('/',auth[_0x75e8('0x9')](),controller[_0x75e8('0xa')]);router[_0x75e8('0xb')](_0x75e8('0xc'),auth['isAuthenticated'](),controller[_0x75e8('0xd')]);router[_0x75e8('0xb')]('/:id',auth[_0x75e8('0x9')](),controller[_0x75e8('0xe')]);router[_0x75e8('0xf')]('/',auth[_0x75e8('0x9')](),controller['create']);router[_0x75e8('0x10')](_0x75e8('0x11'),auth[_0x75e8('0x9')](),controller['update']);router['delete'](_0x75e8('0x11'),auth[_0x75e8('0x9')](),controller[_0x75e8('0x12')]);module[_0x75e8('0x13')]=router;
\ No newline at end of file
+var _0xbd18=['delete','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','post','/:id','update'];(function(_0x3dc2c5,_0x4ed8ca){var _0x590f04=function(_0x590b82){while(--_0x590b82){_0x3dc2c5['push'](_0x3dc2c5['shift']());}};_0x590f04(++_0x4ed8ca);}(_0xbd18,0x1cc));var _0x8bd1=function(_0x5ea284,_0x482920){_0x5ea284=_0x5ea284-0x0;var _0x314471=_0xbd18[_0x5ea284];return _0x314471;};'use strict';var multer=require(_0x8bd1('0x0'));var util=require(_0x8bd1('0x1'));var path=require(_0x8bd1('0x2'));var timeout=require('connect-timeout');var express=require(_0x8bd1('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8bd1('0x4'));var interaction=require(_0x8bd1('0x5'));var config=require(_0x8bd1('0x6'));var controller=require('./faxTransferReport.controller');router[_0x8bd1('0x7')]('/',auth[_0x8bd1('0x8')](),controller[_0x8bd1('0x9')]);router[_0x8bd1('0x7')](_0x8bd1('0xa'),auth[_0x8bd1('0x8')](),controller[_0x8bd1('0xb')]);router[_0x8bd1('0x7')]('/:id',auth[_0x8bd1('0x8')](),controller[_0x8bd1('0xc')]);router[_0x8bd1('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x8bd1('0xe'),auth[_0x8bd1('0x8')](),controller[_0x8bd1('0xf')]);router[_0x8bd1('0x10')](_0x8bd1('0xe'),auth[_0x8bd1('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 34ce9a1..cbecb37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe48d=['Router','../../config/environment','./intDeskAccount.controller','get','/:id','getConfigurations','/:id/fields','isAuthenticated','post','put','update','delete','exports','multer','path','express'];(function(_0x46b458,_0x206806){var _0x10f016=function(_0xf31fb8){while(--_0xf31fb8){_0x46b458['push'](_0x46b458['shift']());}};_0x10f016(++_0x206806);}(_0xe48d,0x18d));var _0xde48=function(_0x3fd0e3,_0x48d51a){_0x3fd0e3=_0x3fd0e3-0x0;var _0x25c1cc=_0xe48d[_0x3fd0e3];return _0x25c1cc;};'use strict';var multer=require(_0xde48('0x0'));var util=require('util');var path=require(_0xde48('0x1'));var timeout=require('connect-timeout');var express=require(_0xde48('0x2'));var router=express[_0xde48('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xde48('0x4'));var controller=require(_0xde48('0x5'));router[_0xde48('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0xde48('0x6')](_0xde48('0x7'),auth['isAuthenticated'](),controller['show']);router[_0xde48('0x6')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xde48('0x8')]);router[_0xde48('0x6')](_0xde48('0x9'),auth[_0xde48('0xa')](),controller['getFields']);router[_0xde48('0xb')]('/',auth[_0xde48('0xa')](),controller['create']);router['post']('/:id/configurations',auth['isAuthenticated'](),controller['addConfiguration']);router[_0xde48('0xc')](_0xde48('0x7'),auth[_0xde48('0xa')](),controller[_0xde48('0xd')]);router[_0xde48('0xe')](_0xde48('0x7'),auth[_0xde48('0xa')](),controller['destroy']);module[_0xde48('0xf')]=router;
\ No newline at end of file
+var _0x1cd2=['post','put','update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','isAuthenticated','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields'];(function(_0x5f1733,_0x5775d2){var _0x84575=function(_0x5d7633){while(--_0x5d7633){_0x5f1733['push'](_0x5f1733['shift']());}};_0x84575(++_0x5775d2);}(_0x1cd2,0x165));var _0x21cd=function(_0x53fd0e,_0x13b44f){_0x53fd0e=_0x53fd0e-0x0;var _0x313af0=_0x1cd2[_0x53fd0e];return _0x313af0;};'use strict';var multer=require(_0x21cd('0x0'));var util=require(_0x21cd('0x1'));var path=require('path');var timeout=require(_0x21cd('0x2'));var express=require(_0x21cd('0x3'));var router=express['Router']();var fs_extra=require(_0x21cd('0x4'));var auth=require(_0x21cd('0x5'));var interaction=require(_0x21cd('0x6'));var config=require(_0x21cd('0x7'));var controller=require(_0x21cd('0x8'));router['get']('/',auth[_0x21cd('0x9')](),controller['index']);router[_0x21cd('0xa')](_0x21cd('0xb'),auth['isAuthenticated'](),controller[_0x21cd('0xc')]);router[_0x21cd('0xa')](_0x21cd('0xd'),auth[_0x21cd('0x9')](),controller[_0x21cd('0xe')]);router['get'](_0x21cd('0xf'),auth[_0x21cd('0x9')](),controller[_0x21cd('0x10')]);router[_0x21cd('0x11')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x21cd('0xd'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x21cd('0x12')](_0x21cd('0xb'),auth[_0x21cd('0x9')](),controller[_0x21cd('0x13')]);router['delete'](_0x21cd('0xb'),auth['isAuthenticated'](),controller[_0x21cd('0x14')]);module[_0x21cd('0x15')]=router;
\ No newline at end of file
index 1416018..bd82fe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1313=['basic','integrationTab','newTab','STRING'];(function(_0x45dabf,_0x4e6bfe){var _0xa83e3d=function(_0x269115){while(--_0x269115){_0x45dabf['push'](_0x45dabf['shift']());}};_0xa83e3d(++_0x4e6bfe);}(_0x1313,0xaf));var _0x3131=function(_0x2b6f4c,_0x18e0af){_0x2b6f4c=_0x2b6f4c-0x0;var _0x3b8a18=_0x1313[_0x2b6f4c];return _0x3b8a18;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x3131('0x0')]},'remoteUri':{'type':Sequelize[_0x3131('0x0')]},'authType':{'type':Sequelize['ENUM'](_0x3131('0x1')),'defaultValue':_0x3131('0x1')},'password':{'type':Sequelize[_0x3131('0x0')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0x3131('0x0')]},'token':{'type':Sequelize[_0x3131('0x0')]},'tokenSecret':{'type':Sequelize[_0x3131('0x0')]},'serverUrl':{'type':Sequelize[_0x3131('0x0')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x3131('0x2'),_0x3131('0x3')),'defaultValue':_0x3131('0x2')}};
\ No newline at end of file
+var _0xb1ed=['newTab','sequelize','exports','STRING','basic','integrationTab'];(function(_0x3d2e4b,_0x1f6653){var _0x509e78=function(_0x307037){while(--_0x307037){_0x3d2e4b['push'](_0x3d2e4b['shift']());}};_0x509e78(++_0x1f6653);}(_0xb1ed,0x16f));var _0xdb1e=function(_0x19ebfd,_0x5ae121){_0x19ebfd=_0x19ebfd-0x0;var _0x11017a=_0xb1ed[_0x19ebfd];return _0x11017a;};'use strict';var Sequelize=require(_0xdb1e('0x0'));module[_0xdb1e('0x1')]={'name':{'type':Sequelize[_0xdb1e('0x2')]},'description':{'type':Sequelize[_0xdb1e('0x2')]},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xdb1e('0x2')]},'authType':{'type':Sequelize['ENUM'](_0xdb1e('0x3')),'defaultValue':_0xdb1e('0x3')},'password':{'type':Sequelize[_0xdb1e('0x2')]},'consumerKey':{'type':Sequelize[_0xdb1e('0x2')]},'consumerSecret':{'type':Sequelize[_0xdb1e('0x2')]},'token':{'type':Sequelize[_0xdb1e('0x2')]},'tokenSecret':{'type':Sequelize[_0xdb1e('0x2')]},'serverUrl':{'type':Sequelize[_0xdb1e('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xdb1e('0x4'),_0xdb1e('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index e01ebe1..378bbc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0545=['DeskAccount','fieldName','key','model','keys','query','filters','intersection','attributes','fields','order','sort','where','merge','map','type','VIRTUAL','filter','options','includeAll','findAll','rows','catch','params','rawAttributes','length','include','find','body','getConfigurations','findOne','DeskConfiguration','pick','getSubjects','Descriptions','getDescriptions','channel','create','DeskField','Subjects','priority','authType','username','password','consumerKey','consumerSecret','token','tokenSecret','remoteUri','slice','substring','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','toString','base64','concat','_embedded','entries','active','label','statusCode','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index'];(function(_0xfeaf58,_0x12bc64){var _0x294a8e=function(_0x235e33){while(--_0x235e33){_0xfeaf58['push'](_0xfeaf58['shift']());}};_0x294a8e(++_0x12bc64);}(_0x0545,0x1ac));var _0x5054=function(_0x1e7d12,_0x134bed){_0x1e7d12=_0x1e7d12-0x0;var _0x5a1bac=_0x0545[_0x1e7d12];return _0x5a1bac;};'use strict';var emlformat=require(_0x5054('0x0'));var rimraf=require(_0x5054('0x1'));var zipdir=require(_0x5054('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5054('0x3'));var moment=require(_0x5054('0x4'));var BPromise=require(_0x5054('0x5'));var Mustache=require(_0x5054('0x6'));var util=require(_0x5054('0x7'));var path=require('path');var sox=require(_0x5054('0x8'));var csv=require(_0x5054('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5054('0xa'));var _=require(_0x5054('0xb'));var squel=require(_0x5054('0xc'));var crypto=require(_0x5054('0xd'));var jsforce=require(_0x5054('0xe'));var deskjs=require(_0x5054('0xf'));var toCsv=require(_0x5054('0x9'));var querystring=require(_0x5054('0x10'));var Papa=require(_0x5054('0x11'));var Redis=require(_0x5054('0x12'));var authService=require(_0x5054('0x13'));var qs=require(_0x5054('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5054('0x15'));var logger=require('../../config/logger')(_0x5054('0x16'));var utils=require(_0x5054('0x17'));var config=require(_0x5054('0x18'));var licenseUtil=require(_0x5054('0x19'));var db=require(_0x5054('0x1a'))['db'];var integrations=require(_0x5054('0x1b'));function respondWithStatusCode(_0x269354,_0x126f8e){_0x126f8e=_0x126f8e||0xcc;return function(_0x10c88d){if(_0x10c88d){return _0x269354[_0x5054('0x1c')](_0x126f8e);}return _0x269354[_0x5054('0x1d')](_0x126f8e)[_0x5054('0x1e')]();};}function respondWithResult(_0xdd0298,_0x2f3c7a){_0x2f3c7a=_0x2f3c7a||0xc8;return function(_0x1f54a9){if(_0x1f54a9){return _0xdd0298['status'](_0x2f3c7a)[_0x5054('0x1f')](_0x1f54a9);}};}function respondWithFilteredResult(_0x3174ca,_0x168c50){return function(_0x5e4981){if(_0x5e4981){var _0xe03da0=typeof _0x168c50[_0x5054('0x20')]===_0x5054('0x21')&&typeof _0x168c50[_0x5054('0x22')]===_0x5054('0x21');var _0x579ef9=_0x5e4981[_0x5054('0x23')];var _0x58af10=_0xe03da0?0x0:_0x168c50[_0x5054('0x20')];var _0x2417eb=_0xe03da0?_0x5e4981[_0x5054('0x23')]:_0x168c50[_0x5054('0x20')]+_0x168c50['limit'];var _0x562455;if(_0x2417eb>=_0x579ef9){_0x2417eb=_0x579ef9;_0x562455=0xc8;}else{_0x562455=0xce;}_0x3174ca['status'](_0x562455);return _0x3174ca[_0x5054('0x24')](_0x5054('0x25'),_0x58af10+'-'+_0x2417eb+'/'+_0x579ef9)[_0x5054('0x1f')](_0x5e4981);}return null;};}function patchUpdates(_0x4dc1b3){return function(_0x1d4fc8){try{jsonpatch[_0x5054('0x26')](_0x1d4fc8,_0x4dc1b3,!![]);}catch(_0x1ec0bd){return BPromise[_0x5054('0x27')](_0x1ec0bd);}return _0x1d4fc8['save']();};}function saveUpdates(_0x360a9e,_0x7f71ff){return function(_0x30921a){if(_0x30921a){return _0x30921a[_0x5054('0x28')](_0x360a9e)['then'](function(_0x2f6f4a){return _0x2f6f4a;});}return null;};}function removeEntity(_0x18cd5f,_0x51835a){return function(_0x4ffac0){if(_0x4ffac0){return _0x4ffac0[_0x5054('0x29')]()[_0x5054('0x2a')](function(){_0x18cd5f[_0x5054('0x1d')](0xcc)[_0x5054('0x1e')]();});}};}function handleEntityNotFound(_0x364e1b,_0x2ee766){return function(_0x1815cc){if(!_0x1815cc){_0x364e1b[_0x5054('0x1c')](0x194);}return _0x1815cc;};}function handleError(_0xa43ddb,_0x4ce702){_0x4ce702=_0x4ce702||0x1f4;return function(_0x37124e){logger[_0x5054('0x2b')](_0x37124e[_0x5054('0x2c')]);if(_0x37124e[_0x5054('0x2d')]){delete _0x37124e['name'];}_0xa43ddb[_0x5054('0x1d')](_0x4ce702)[_0x5054('0x2e')](_0x37124e);};}exports[_0x5054('0x2f')]=function(_0x1f33a0,_0x16bf3d){var _0x343d74={},_0x2c5d0f={},_0x2dbbfc={'count':0x0,'rows':[]};var _0x1c3902=_['map'](db[_0x5054('0x30')]['rawAttributes'],function(_0x392fdc){return{'name':_0x392fdc[_0x5054('0x31')],'type':_0x392fdc['type'][_0x5054('0x32')]};});_0x2c5d0f[_0x5054('0x33')]=_['map'](_0x1c3902,_0x5054('0x2d'));_0x2c5d0f['query']=_[_0x5054('0x34')](_0x1f33a0[_0x5054('0x35')]);_0x2c5d0f[_0x5054('0x36')]=_[_0x5054('0x37')](_0x2c5d0f[_0x5054('0x33')],_0x2c5d0f[_0x5054('0x35')]);_0x343d74[_0x5054('0x38')]=_[_0x5054('0x37')](_0x2c5d0f[_0x5054('0x33')],qs['fields'](_0x1f33a0[_0x5054('0x35')][_0x5054('0x39')]));_0x343d74[_0x5054('0x38')]=_0x343d74[_0x5054('0x38')]['length']?_0x343d74[_0x5054('0x38')]:_0x2c5d0f['model'];if(!_0x1f33a0[_0x5054('0x35')]['hasOwnProperty']('nolimit')){_0x343d74[_0x5054('0x22')]=qs[_0x5054('0x22')](_0x1f33a0[_0x5054('0x35')][_0x5054('0x22')]);_0x343d74['offset']=qs[_0x5054('0x20')](_0x1f33a0[_0x5054('0x35')][_0x5054('0x20')]);}_0x343d74[_0x5054('0x3a')]=qs[_0x5054('0x3b')](_0x1f33a0[_0x5054('0x35')][_0x5054('0x3b')]);_0x343d74[_0x5054('0x3c')]=qs[_0x5054('0x36')](_['pick'](_0x1f33a0[_0x5054('0x35')],_0x2c5d0f[_0x5054('0x36')]),_0x1c3902);if(_0x1f33a0[_0x5054('0x35')]['filter']){_0x343d74[_0x5054('0x3c')]=_[_0x5054('0x3d')](_0x343d74['where'],{'$or':_[_0x5054('0x3e')](_0x1c3902,function(_0x112cee){if(_0x112cee[_0x5054('0x3f')]!==_0x5054('0x40')){var _0x45c7df={};_0x45c7df[_0x112cee['name']]={'$like':'%'+_0x1f33a0[_0x5054('0x35')][_0x5054('0x41')]+'%'};return _0x45c7df;}})});}_0x343d74=_[_0x5054('0x3d')]({},_0x343d74,_0x1f33a0[_0x5054('0x42')]);var _0x5839be={'where':_0x343d74['where']};return db[_0x5054('0x30')][_0x5054('0x23')](_0x5839be)[_0x5054('0x2a')](function(_0x347fce){_0x2dbbfc[_0x5054('0x23')]=_0x347fce;if(_0x1f33a0['query'][_0x5054('0x43')]){_0x343d74['include']=[{'all':!![]}];}return db[_0x5054('0x30')][_0x5054('0x44')](_0x343d74);})['then'](function(_0x30b41c){_0x2dbbfc[_0x5054('0x45')]=_0x30b41c;return _0x2dbbfc;})[_0x5054('0x2a')](respondWithFilteredResult(_0x16bf3d,_0x343d74))[_0x5054('0x46')](handleError(_0x16bf3d,null));};exports['show']=function(_0x12034d,_0x2c8c4d){var _0x357821={'raw':![],'where':{'id':_0x12034d[_0x5054('0x47')]['id']}},_0x1be0c5={};_0x1be0c5[_0x5054('0x33')]=_[_0x5054('0x34')](db['DeskAccount'][_0x5054('0x48')]);_0x1be0c5[_0x5054('0x35')]=_[_0x5054('0x34')](_0x12034d[_0x5054('0x35')]);_0x1be0c5[_0x5054('0x36')]=_[_0x5054('0x37')](_0x1be0c5[_0x5054('0x33')],_0x1be0c5['query']);_0x357821[_0x5054('0x38')]=_[_0x5054('0x37')](_0x1be0c5[_0x5054('0x33')],qs[_0x5054('0x39')](_0x12034d[_0x5054('0x35')]['fields']));_0x357821[_0x5054('0x38')]=_0x357821['attributes'][_0x5054('0x49')]?_0x357821['attributes']:_0x1be0c5[_0x5054('0x33')];if(_0x12034d['query'][_0x5054('0x43')]){_0x357821[_0x5054('0x4a')]=[{'all':!![]}];}_0x357821=_['merge']({},_0x357821,_0x12034d[_0x5054('0x42')]);return db[_0x5054('0x30')][_0x5054('0x4b')](_0x357821)[_0x5054('0x2a')](handleEntityNotFound(_0x2c8c4d,null))['then'](respondWithResult(_0x2c8c4d,null))[_0x5054('0x46')](handleError(_0x2c8c4d,null));};exports['create']=function(_0x61137b,_0x1b32bc){return db[_0x5054('0x30')]['create'](_0x61137b[_0x5054('0x4c')],{})['then'](respondWithResult(_0x1b32bc,0xc9))['catch'](handleError(_0x1b32bc,null));};exports[_0x5054('0x28')]=function(_0x3387f6,_0x327ee4){if(_0x3387f6['body']['id']){delete _0x3387f6[_0x5054('0x4c')]['id'];}return db[_0x5054('0x30')][_0x5054('0x4b')]({'where':{'id':_0x3387f6[_0x5054('0x47')]['id']}})[_0x5054('0x2a')](handleEntityNotFound(_0x327ee4,null))['then'](saveUpdates(_0x3387f6[_0x5054('0x4c')],null))[_0x5054('0x2a')](respondWithResult(_0x327ee4,null))[_0x5054('0x46')](handleError(_0x327ee4,null));};exports['destroy']=function(_0x10caa5,_0x3162a1){return db[_0x5054('0x30')][_0x5054('0x4b')]({'where':{'id':_0x10caa5[_0x5054('0x47')]['id']}})[_0x5054('0x2a')](handleEntityNotFound(_0x3162a1,null))[_0x5054('0x2a')](removeEntity(_0x3162a1,null))[_0x5054('0x46')](handleError(_0x3162a1,null));};exports[_0x5054('0x4d')]=function(_0x2959c8,_0x496939,_0x347e53){var _0x501ffe={};var _0x4ba459={};var _0x4d4a42;var _0x1caa96;return db[_0x5054('0x30')][_0x5054('0x4e')]({'where':{'id':_0x2959c8[_0x5054('0x47')]['id']}})['then'](handleEntityNotFound(_0x496939,null))[_0x5054('0x2a')](function(_0x918d75){if(_0x918d75){_0x4d4a42=_0x918d75;_0x4ba459[_0x5054('0x33')]=_[_0x5054('0x34')](db[_0x5054('0x4f')]['rawAttributes']);_0x4ba459['query']=_['keys'](_0x2959c8[_0x5054('0x35')]);_0x4ba459[_0x5054('0x36')]=_['intersection'](_0x4ba459['model'],_0x4ba459[_0x5054('0x35')]);_0x501ffe[_0x5054('0x38')]=_[_0x5054('0x37')](_0x4ba459[_0x5054('0x33')],qs[_0x5054('0x39')](_0x2959c8[_0x5054('0x35')][_0x5054('0x39')]));_0x501ffe[_0x5054('0x38')]=_0x501ffe['attributes'][_0x5054('0x49')]?_0x501ffe[_0x5054('0x38')]:_0x4ba459[_0x5054('0x33')];_0x501ffe[_0x5054('0x3a')]=qs[_0x5054('0x3b')](_0x2959c8['query'][_0x5054('0x3b')]);_0x501ffe[_0x5054('0x3c')]=qs[_0x5054('0x36')](_[_0x5054('0x50')](_0x2959c8[_0x5054('0x35')],_0x4ba459[_0x5054('0x36')]));if(_0x2959c8['query']['filter']){_0x501ffe[_0x5054('0x3c')]=_[_0x5054('0x3d')](_0x501ffe[_0x5054('0x3c')],{'$or':_['map'](_0x501ffe[_0x5054('0x38')],function(_0x199d37){var _0x4a2d46={};_0x4a2d46[_0x199d37]={'$like':'%'+_0x2959c8[_0x5054('0x35')][_0x5054('0x41')]+'%'};return _0x4a2d46;})});}_0x501ffe=_['merge']({},_0x501ffe,_0x2959c8[_0x5054('0x42')]);return _0x4d4a42['getConfigurations'](_0x501ffe);}})['then'](function(_0x558196){if(_0x558196){_0x1caa96=_0x558196[_0x5054('0x49')];if(!_0x2959c8['query']['hasOwnProperty']('nolimit')){_0x501ffe['limit']=qs[_0x5054('0x22')](_0x2959c8[_0x5054('0x35')][_0x5054('0x22')]);_0x501ffe[_0x5054('0x20')]=qs[_0x5054('0x20')](_0x2959c8[_0x5054('0x35')][_0x5054('0x20')]);}return _0x4d4a42[_0x5054('0x4d')](_0x501ffe);}})[_0x5054('0x2a')](function(_0x25528f){if(_0x25528f){return _0x25528f?{'count':_0x1caa96,'rows':_0x25528f}:null;}})[_0x5054('0x2a')](respondWithResult(_0x496939,null))[_0x5054('0x46')](handleError(_0x496939,null));};exports['addConfiguration']=function(_0x548b2d,_0x53a133,_0x5e25c5){if(_0x548b2d[_0x5054('0x4c')]['id']){delete _0x548b2d[_0x5054('0x4c')]['id'];}return db[_0x5054('0x30')][_0x5054('0x4e')]({'where':{'id':_0x548b2d[_0x5054('0x47')]['id']}})[_0x5054('0x2a')](handleEntityNotFound(_0x53a133,null))[_0x5054('0x2a')](function(_0x53d991){if(_0x53d991){_0x548b2d[_0x5054('0x4c')]['AccountId']=_0x53d991['id'];_0x548b2d[_0x5054('0x4c')]['Subjects']=integrations[_0x5054('0x51')](_0x548b2d['body']['channel'],_0x548b2d[_0x5054('0x4c')]['type']);_0x548b2d[_0x5054('0x4c')][_0x5054('0x52')]=integrations[_0x5054('0x53')](_0x548b2d[_0x5054('0x4c')][_0x5054('0x54')],_0x548b2d[_0x5054('0x4c')][_0x5054('0x3f')]);return db[_0x5054('0x4f')][_0x5054('0x55')](_0x548b2d['body'],{'include':[{'model':db[_0x5054('0x56')],'as':_0x5054('0x57')},{'model':db[_0x5054('0x56')],'as':_0x5054('0x52')}]});}return null;})[_0x5054('0x2a')](respondWithResult(_0x53a133,null))['catch'](handleError(_0x53a133,null));};exports['getFields']=function(_0x5e5a4f,_0x5ef693,_0x21f782){var _0x55d3cf=[{'name':_0x5054('0x58'),'label':_0x5054('0x58'),'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 _0x367681='';return db['DeskAccount'][_0x5054('0x4e')]({'where':{'id':_0x5e5a4f[_0x5054('0x47')]['id']},'attributes':['id','remoteUri',_0x5054('0x59'),_0x5054('0x5a'),_0x5054('0x5b'),_0x5054('0x5c'),_0x5054('0x5d'),_0x5054('0x5e'),_0x5054('0x5f')]})[_0x5054('0x2a')](handleEntityNotFound(_0x5ef693,null))[_0x5054('0x2a')](function(_0x45776f){if(_0x45776f){_0x367681=_0x45776f[_0x5054('0x60')];var _0x225f5f=_0x367681[_0x5054('0x61')](-0x1);if(_0x225f5f==='/'){_0x367681=_0x367681[_0x5054('0x62')](0x0,_0x367681['lastIndexOf'](_0x225f5f));}var _0x4452ac={'method':_0x5054('0x63'),'uri':util[_0x5054('0x64')](_0x5054('0x65'),_0x367681),'headers':{'Content-Type':_0x5054('0x66'),'Accept':_0x5054('0x66')},'json':!![]};if(_0x45776f[_0x5054('0x59')]===_0x5054('0x67')){_0x4452ac[_0x5054('0x68')][_0x5054('0x69')]=util['format'](_0x5054('0x6a'),new Buffer(util['format'](_0x5054('0x6b'),_0x45776f['username'],_0x45776f[_0x5054('0x5b')]))[_0x5054('0x6c')](_0x5054('0x6d')));}return rp(_0x4452ac)[_0x5054('0x2a')](function(_0x114ad4){return _0x55d3cf[_0x5054('0x6e')](_[_0x5054('0x3e')](_0x114ad4[_0x5054('0x6f')][_0x5054('0x70')],function(_0x7d240){return{'id':_0x7d240[_0x5054('0x2d')],'name':_0x7d240[_0x5054('0x2d')],'type':_0x7d240[_0x5054('0x3f')],'active':_0x7d240[_0x5054('0x71')],'label':_0x7d240[_0x5054('0x72')],'custom':!![]};}));});}})[_0x5054('0x2a')](function(_0xb8ee6d){return{'count':_0xb8ee6d['length'],'rows':_0xb8ee6d};})[_0x5054('0x2a')](respondWithResult(_0x5ef693,null))[_0x5054('0x46')](function(_0x33bed7){var _0x2a6036=_0x5e5a4f['query']['test']?0x1f4:_0x33bed7[_0x5054('0x73')]||0x1f4;logger[_0x5054('0x2b')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x2a6036,JSON[_0x5054('0x74')](_0x33bed7));delete _0x33bed7[_0x5054('0x2d')];if(_0x2a6036===0x191){_0x2a6036=0x190;}_0x5ef693[_0x5054('0x1d')](_0x2a6036)[_0x5054('0x2e')](_0x5e5a4f['query'][_0x5054('0x75')]?{'message':_0x5054('0x76'),'statusCode':_0x33bed7[_0x5054('0x73')]}:_0x33bed7);});};
\ No newline at end of file
+var _0x8ee0=['getConfigurations','findOne','DeskConfiguration','length','pick','filter','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','channel','DeskField','getFields','priority','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','headers','Authorization','%s:%s','username','toString','base64','concat','_embedded','entries','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','error','stack','send','index','map','rawAttributes','fieldName','type','model','name','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','DeskAccount','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body'];(function(_0xdfc87d,_0x28e1a5){var _0x4e2a5e=function(_0x55f2f7){while(--_0x55f2f7){_0xdfc87d['push'](_0xdfc87d['shift']());}};_0x4e2a5e(++_0x28e1a5);}(_0x8ee0,0x181));var _0x08ee=function(_0x342700,_0x569f75){_0x342700=_0x342700-0x0;var _0x53406f=_0x8ee0[_0x342700];return _0x53406f;};'use strict';var emlformat=require(_0x08ee('0x0'));var rimraf=require(_0x08ee('0x1'));var zipdir=require(_0x08ee('0x2'));var jsonpatch=require(_0x08ee('0x3'));var rp=require(_0x08ee('0x4'));var moment=require(_0x08ee('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x08ee('0x6'));var util=require('util');var path=require(_0x08ee('0x7'));var sox=require('sox');var csv=require(_0x08ee('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x08ee('0x9'));var _=require(_0x08ee('0xa'));var squel=require(_0x08ee('0xb'));var crypto=require(_0x08ee('0xc'));var jsforce=require(_0x08ee('0xd'));var deskjs=require(_0x08ee('0xe'));var toCsv=require(_0x08ee('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x08ee('0xf'));var authService=require(_0x08ee('0x10'));var qs=require(_0x08ee('0x11'));var as=require(_0x08ee('0x12'));var hardwareService=require(_0x08ee('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x08ee('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x08ee('0x15'))['db'];var integrations=require(_0x08ee('0x16'));function respondWithStatusCode(_0x50abd4,_0xa85e55){_0xa85e55=_0xa85e55||0xcc;return function(_0x23c3ca){if(_0x23c3ca){return _0x50abd4[_0x08ee('0x17')](_0xa85e55);}return _0x50abd4['status'](_0xa85e55)['end']();};}function respondWithResult(_0x7fb6a,_0x36dcd5){_0x36dcd5=_0x36dcd5||0xc8;return function(_0x30be82){if(_0x30be82){return _0x7fb6a[_0x08ee('0x18')](_0x36dcd5)[_0x08ee('0x19')](_0x30be82);}};}function respondWithFilteredResult(_0x4fc3ad,_0x120faa){return function(_0x32d7a6){if(_0x32d7a6){var _0x31364a=typeof _0x120faa[_0x08ee('0x1a')]===_0x08ee('0x1b')&&typeof _0x120faa[_0x08ee('0x1c')]===_0x08ee('0x1b');var _0x4f2f98=_0x32d7a6[_0x08ee('0x1d')];var _0x26e399=_0x31364a?0x0:_0x120faa[_0x08ee('0x1a')];var _0xdc9c67=_0x31364a?_0x32d7a6[_0x08ee('0x1d')]:_0x120faa[_0x08ee('0x1a')]+_0x120faa['limit'];var _0x113342;if(_0xdc9c67>=_0x4f2f98){_0xdc9c67=_0x4f2f98;_0x113342=0xc8;}else{_0x113342=0xce;}_0x4fc3ad['status'](_0x113342);return _0x4fc3ad['set'](_0x08ee('0x1e'),_0x26e399+'-'+_0xdc9c67+'/'+_0x4f2f98)[_0x08ee('0x19')](_0x32d7a6);}return null;};}function patchUpdates(_0xac7dcd){return function(_0x5c853f){try{jsonpatch[_0x08ee('0x1f')](_0x5c853f,_0xac7dcd,!![]);}catch(_0x2a0724){return BPromise['reject'](_0x2a0724);}return _0x5c853f[_0x08ee('0x20')]();};}function saveUpdates(_0x3d3a1a,_0x414c65){return function(_0x51621a){if(_0x51621a){return _0x51621a[_0x08ee('0x21')](_0x3d3a1a)[_0x08ee('0x22')](function(_0x22acf6){return _0x22acf6;});}return null;};}function removeEntity(_0x4d7355,_0x4250eb){return function(_0x3d2208){if(_0x3d2208){return _0x3d2208[_0x08ee('0x23')]()[_0x08ee('0x22')](function(){_0x4d7355['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5de366,_0x24cb5e){return function(_0x7cb421){if(!_0x7cb421){_0x5de366[_0x08ee('0x17')](0x194);}return _0x7cb421;};}function handleError(_0x5e3dad,_0x3effd4){_0x3effd4=_0x3effd4||0x1f4;return function(_0x5af69c){logger[_0x08ee('0x24')](_0x5af69c[_0x08ee('0x25')]);if(_0x5af69c['name']){delete _0x5af69c['name'];}_0x5e3dad[_0x08ee('0x18')](_0x3effd4)[_0x08ee('0x26')](_0x5af69c);};}exports[_0x08ee('0x27')]=function(_0x9785c5,_0x17a8f8){var _0x635658={},_0x41f480={},_0x430fcb={'count':0x0,'rows':[]};var _0x51b0bb=_[_0x08ee('0x28')](db['DeskAccount'][_0x08ee('0x29')],function(_0x5f3584){return{'name':_0x5f3584[_0x08ee('0x2a')],'type':_0x5f3584[_0x08ee('0x2b')]['key']};});_0x41f480[_0x08ee('0x2c')]=_[_0x08ee('0x28')](_0x51b0bb,_0x08ee('0x2d'));_0x41f480[_0x08ee('0x2e')]=_['keys'](_0x9785c5[_0x08ee('0x2e')]);_0x41f480[_0x08ee('0x2f')]=_[_0x08ee('0x30')](_0x41f480[_0x08ee('0x2c')],_0x41f480[_0x08ee('0x2e')]);_0x635658['attributes']=_[_0x08ee('0x30')](_0x41f480['model'],qs[_0x08ee('0x31')](_0x9785c5[_0x08ee('0x2e')][_0x08ee('0x31')]));_0x635658[_0x08ee('0x32')]=_0x635658[_0x08ee('0x32')]['length']?_0x635658['attributes']:_0x41f480[_0x08ee('0x2c')];if(!_0x9785c5[_0x08ee('0x2e')][_0x08ee('0x33')](_0x08ee('0x34'))){_0x635658[_0x08ee('0x1c')]=qs[_0x08ee('0x1c')](_0x9785c5[_0x08ee('0x2e')][_0x08ee('0x1c')]);_0x635658[_0x08ee('0x1a')]=qs[_0x08ee('0x1a')](_0x9785c5[_0x08ee('0x2e')][_0x08ee('0x1a')]);}_0x635658[_0x08ee('0x35')]=qs[_0x08ee('0x36')](_0x9785c5[_0x08ee('0x2e')]['sort']);_0x635658['where']=qs[_0x08ee('0x2f')](_['pick'](_0x9785c5['query'],_0x41f480[_0x08ee('0x2f')]),_0x51b0bb);if(_0x9785c5[_0x08ee('0x2e')]['filter']){_0x635658[_0x08ee('0x37')]=_[_0x08ee('0x38')](_0x635658[_0x08ee('0x37')],{'$or':_[_0x08ee('0x28')](_0x51b0bb,function(_0x522105){if(_0x522105[_0x08ee('0x2b')]!==_0x08ee('0x39')){var _0x425ff9={};_0x425ff9[_0x522105['name']]={'$like':'%'+_0x9785c5[_0x08ee('0x2e')]['filter']+'%'};return _0x425ff9;}})});}_0x635658=_[_0x08ee('0x38')]({},_0x635658,_0x9785c5['options']);var _0x5863e2={'where':_0x635658[_0x08ee('0x37')]};return db[_0x08ee('0x3a')][_0x08ee('0x1d')](_0x5863e2)[_0x08ee('0x22')](function(_0xcff5ab){_0x430fcb[_0x08ee('0x1d')]=_0xcff5ab;if(_0x9785c5[_0x08ee('0x2e')][_0x08ee('0x3b')]){_0x635658[_0x08ee('0x3c')]=[{'all':!![]}];}return db[_0x08ee('0x3a')][_0x08ee('0x3d')](_0x635658);})['then'](function(_0x2837da){_0x430fcb[_0x08ee('0x3e')]=_0x2837da;return _0x430fcb;})[_0x08ee('0x22')](respondWithFilteredResult(_0x17a8f8,_0x635658))[_0x08ee('0x3f')](handleError(_0x17a8f8,null));};exports[_0x08ee('0x40')]=function(_0x33d1e5,_0x3f93c2){var _0x42479b={'raw':![],'where':{'id':_0x33d1e5[_0x08ee('0x41')]['id']}},_0x410342={};_0x410342['model']=_[_0x08ee('0x42')](db[_0x08ee('0x3a')]['rawAttributes']);_0x410342[_0x08ee('0x2e')]=_[_0x08ee('0x42')](_0x33d1e5[_0x08ee('0x2e')]);_0x410342[_0x08ee('0x2f')]=_['intersection'](_0x410342[_0x08ee('0x2c')],_0x410342[_0x08ee('0x2e')]);_0x42479b['attributes']=_['intersection'](_0x410342['model'],qs[_0x08ee('0x31')](_0x33d1e5[_0x08ee('0x2e')][_0x08ee('0x31')]));_0x42479b[_0x08ee('0x32')]=_0x42479b[_0x08ee('0x32')]['length']?_0x42479b[_0x08ee('0x32')]:_0x410342[_0x08ee('0x2c')];if(_0x33d1e5[_0x08ee('0x2e')]['includeAll']){_0x42479b[_0x08ee('0x3c')]=[{'all':!![]}];}_0x42479b=_['merge']({},_0x42479b,_0x33d1e5[_0x08ee('0x43')]);return db['DeskAccount'][_0x08ee('0x44')](_0x42479b)[_0x08ee('0x22')](handleEntityNotFound(_0x3f93c2,null))['then'](respondWithResult(_0x3f93c2,null))[_0x08ee('0x3f')](handleError(_0x3f93c2,null));};exports[_0x08ee('0x45')]=function(_0x3a5dbb,_0x14b832){return db[_0x08ee('0x3a')][_0x08ee('0x45')](_0x3a5dbb[_0x08ee('0x46')],{})[_0x08ee('0x22')](respondWithResult(_0x14b832,0xc9))['catch'](handleError(_0x14b832,null));};exports[_0x08ee('0x21')]=function(_0xde8e70,_0x34cd78){if(_0xde8e70[_0x08ee('0x46')]['id']){delete _0xde8e70[_0x08ee('0x46')]['id'];}return db[_0x08ee('0x3a')][_0x08ee('0x44')]({'where':{'id':_0xde8e70[_0x08ee('0x41')]['id']}})[_0x08ee('0x22')](handleEntityNotFound(_0x34cd78,null))[_0x08ee('0x22')](saveUpdates(_0xde8e70[_0x08ee('0x46')],null))['then'](respondWithResult(_0x34cd78,null))['catch'](handleError(_0x34cd78,null));};exports[_0x08ee('0x23')]=function(_0x22ea00,_0x5235bd){return db['DeskAccount']['find']({'where':{'id':_0x22ea00[_0x08ee('0x41')]['id']}})[_0x08ee('0x22')](handleEntityNotFound(_0x5235bd,null))[_0x08ee('0x22')](removeEntity(_0x5235bd,null))['catch'](handleError(_0x5235bd,null));};exports[_0x08ee('0x47')]=function(_0x5be199,_0x500397,_0x3b5326){var _0x535d38={};var _0x57e9b7={};var _0x479319;var _0xd3b6c9;return db['DeskAccount'][_0x08ee('0x48')]({'where':{'id':_0x5be199[_0x08ee('0x41')]['id']}})['then'](handleEntityNotFound(_0x500397,null))[_0x08ee('0x22')](function(_0x3fd28c){if(_0x3fd28c){_0x479319=_0x3fd28c;_0x57e9b7[_0x08ee('0x2c')]=_[_0x08ee('0x42')](db[_0x08ee('0x49')]['rawAttributes']);_0x57e9b7[_0x08ee('0x2e')]=_[_0x08ee('0x42')](_0x5be199[_0x08ee('0x2e')]);_0x57e9b7['filters']=_[_0x08ee('0x30')](_0x57e9b7[_0x08ee('0x2c')],_0x57e9b7[_0x08ee('0x2e')]);_0x535d38[_0x08ee('0x32')]=_['intersection'](_0x57e9b7[_0x08ee('0x2c')],qs[_0x08ee('0x31')](_0x5be199[_0x08ee('0x2e')][_0x08ee('0x31')]));_0x535d38[_0x08ee('0x32')]=_0x535d38[_0x08ee('0x32')][_0x08ee('0x4a')]?_0x535d38['attributes']:_0x57e9b7['model'];_0x535d38['order']=qs[_0x08ee('0x36')](_0x5be199[_0x08ee('0x2e')][_0x08ee('0x36')]);_0x535d38[_0x08ee('0x37')]=qs[_0x08ee('0x2f')](_[_0x08ee('0x4b')](_0x5be199[_0x08ee('0x2e')],_0x57e9b7[_0x08ee('0x2f')]));if(_0x5be199[_0x08ee('0x2e')][_0x08ee('0x4c')]){_0x535d38[_0x08ee('0x37')]=_[_0x08ee('0x38')](_0x535d38['where'],{'$or':_[_0x08ee('0x28')](_0x535d38[_0x08ee('0x32')],function(_0x1cdbd3){var _0x4bca37={};_0x4bca37[_0x1cdbd3]={'$like':'%'+_0x5be199[_0x08ee('0x2e')][_0x08ee('0x4c')]+'%'};return _0x4bca37;})});}_0x535d38=_[_0x08ee('0x38')]({},_0x535d38,_0x5be199[_0x08ee('0x43')]);return _0x479319[_0x08ee('0x47')](_0x535d38);}})[_0x08ee('0x22')](function(_0x37fb9d){if(_0x37fb9d){_0xd3b6c9=_0x37fb9d[_0x08ee('0x4a')];if(!_0x5be199[_0x08ee('0x2e')][_0x08ee('0x33')](_0x08ee('0x34'))){_0x535d38[_0x08ee('0x1c')]=qs['limit'](_0x5be199['query'][_0x08ee('0x1c')]);_0x535d38[_0x08ee('0x1a')]=qs['offset'](_0x5be199['query'][_0x08ee('0x1a')]);}return _0x479319[_0x08ee('0x47')](_0x535d38);}})[_0x08ee('0x22')](function(_0x508716){if(_0x508716){return _0x508716?{'count':_0xd3b6c9,'rows':_0x508716}:null;}})[_0x08ee('0x22')](respondWithResult(_0x500397,null))[_0x08ee('0x3f')](handleError(_0x500397,null));};exports[_0x08ee('0x4d')]=function(_0x325c5a,_0x5267f3,_0x5f47af){if(_0x325c5a[_0x08ee('0x46')]['id']){delete _0x325c5a['body']['id'];}return db[_0x08ee('0x3a')][_0x08ee('0x48')]({'where':{'id':_0x325c5a[_0x08ee('0x41')]['id']}})['then'](handleEntityNotFound(_0x5267f3,null))['then'](function(_0xb54ec3){if(_0xb54ec3){_0x325c5a[_0x08ee('0x46')][_0x08ee('0x4e')]=_0xb54ec3['id'];_0x325c5a[_0x08ee('0x46')][_0x08ee('0x4f')]=integrations[_0x08ee('0x50')](_0x325c5a['body']['channel'],_0x325c5a[_0x08ee('0x46')][_0x08ee('0x2b')]);_0x325c5a[_0x08ee('0x46')][_0x08ee('0x51')]=integrations['getDescriptions'](_0x325c5a[_0x08ee('0x46')][_0x08ee('0x52')],_0x325c5a[_0x08ee('0x46')][_0x08ee('0x2b')]);return db[_0x08ee('0x49')][_0x08ee('0x45')](_0x325c5a[_0x08ee('0x46')],{'include':[{'model':db[_0x08ee('0x53')],'as':_0x08ee('0x4f')},{'model':db[_0x08ee('0x53')],'as':_0x08ee('0x51')}]});}return null;})[_0x08ee('0x22')](respondWithResult(_0x5267f3,null))['catch'](handleError(_0x5267f3,null));};exports[_0x08ee('0x54')]=function(_0x531a22,_0x36b45b,_0xcf1886){var _0x34798f=[{'name':_0x08ee('0x55'),'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 _0x534191='';return db[_0x08ee('0x3a')]['findOne']({'where':{'id':_0x531a22[_0x08ee('0x41')]['id']},'attributes':['id',_0x08ee('0x56'),_0x08ee('0x57'),'username',_0x08ee('0x58'),_0x08ee('0x59'),_0x08ee('0x5a'),_0x08ee('0x5b'),_0x08ee('0x5c')]})[_0x08ee('0x22')](handleEntityNotFound(_0x36b45b,null))[_0x08ee('0x22')](function(_0x31fa20){if(_0x31fa20){_0x534191=_0x31fa20[_0x08ee('0x56')];var _0xec3933=_0x534191[_0x08ee('0x5d')](-0x1);if(_0xec3933==='/'){_0x534191=_0x534191[_0x08ee('0x5e')](0x0,_0x534191[_0x08ee('0x5f')](_0xec3933));}var _0x14afea={'method':_0x08ee('0x60'),'uri':util[_0x08ee('0x61')](_0x08ee('0x62'),_0x534191),'headers':{'Content-Type':'application/json','Accept':_0x08ee('0x63')},'json':!![]};if(_0x31fa20[_0x08ee('0x57')]==='basic'){_0x14afea[_0x08ee('0x64')][_0x08ee('0x65')]=util[_0x08ee('0x61')]('Basic\x20%s',new Buffer(util['format'](_0x08ee('0x66'),_0x31fa20[_0x08ee('0x67')],_0x31fa20[_0x08ee('0x58')]))[_0x08ee('0x68')](_0x08ee('0x69')));}return rp(_0x14afea)['then'](function(_0x3b9968){return _0x34798f[_0x08ee('0x6a')](_[_0x08ee('0x28')](_0x3b9968[_0x08ee('0x6b')][_0x08ee('0x6c')],function(_0x26da02){return{'id':_0x26da02[_0x08ee('0x2d')],'name':_0x26da02['name'],'type':_0x26da02[_0x08ee('0x2b')],'active':_0x26da02['active'],'label':_0x26da02['label'],'custom':!![]};}));});}})[_0x08ee('0x22')](function(_0x31cee8){return{'count':_0x31cee8[_0x08ee('0x4a')],'rows':_0x31cee8};})[_0x08ee('0x22')](respondWithResult(_0x36b45b,null))[_0x08ee('0x3f')](function(_0xb9803b){var _0x210cfb=_0x531a22['query'][_0x08ee('0x6d')]?0x1f4:_0xb9803b[_0x08ee('0x6e')]||0x1f4;logger[_0x08ee('0x24')](_0x08ee('0x6f'),_0x08ee('0x54'),_0x210cfb,JSON[_0x08ee('0x70')](_0xb9803b));delete _0xb9803b[_0x08ee('0x2d')];if(_0x210cfb===0x191){_0x210cfb=0x190;}_0x36b45b['status'](_0x210cfb)[_0x08ee('0x26')](_0x531a22[_0x08ee('0x2e')][_0x08ee('0x6d')]?{'message':_0x08ee('0x71'),'statusCode':_0xb9803b[_0x08ee('0x6e')]}:_0xb9803b);});};
\ No newline at end of file
index 8b18e3d..f2d7873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cbf=['path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x48146e,_0x3c18c1){var _0x603d01=function(_0x2c20cc){while(--_0x2c20cc){_0x48146e['push'](_0x48146e['shift']());}};_0x603d01(++_0x3c18c1);}(_0x8cbf,0xe8));var _0xf8cb=function(_0x504792,_0x2c25fb){_0x504792=_0x504792-0x0;var _0x1e1cc5=_0x8cbf[_0x504792];return _0x1e1cc5;};'use strict';var _=require(_0xf8cb('0x0'));var util=require(_0xf8cb('0x1'));var logger=require(_0xf8cb('0x2'))(_0xf8cb('0x3'));var moment=require('moment');var BPromise=require(_0xf8cb('0x4'));var rp=require(_0xf8cb('0x5'));var fs=require('fs');var path=require(_0xf8cb('0x6'));var rimraf=require(_0xf8cb('0x7'));var config=require(_0xf8cb('0x8'));var attributes=require(_0xf8cb('0x9'));var integrations=require(_0xf8cb('0xa'));module['exports']=function(_0x1c6b90,_0x63b4b1){return _0x1c6b90[_0xf8cb('0xb')](_0xf8cb('0xc'),attributes,{'tableName':_0xf8cb('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc90d=['./intDeskAccount.attributes','../../components/integrations/configuration','define','DeskAccount','int_desk_accounts','lodash','util','api','bluebird','request-promise','path','../../config/environment'];(function(_0x49d73a,_0x37ea42){var _0x1b05e1=function(_0x8ac987){while(--_0x8ac987){_0x49d73a['push'](_0x49d73a['shift']());}};_0x1b05e1(++_0x37ea42);}(_0xc90d,0xd1));var _0xdc90=function(_0x34d275,_0x5d84ee){_0x34d275=_0x34d275-0x0;var _0x1379cc=_0xc90d[_0x34d275];return _0x1379cc;};'use strict';var _=require(_0xdc90('0x0'));var util=require(_0xdc90('0x1'));var logger=require('../../config/logger')(_0xdc90('0x2'));var moment=require('moment');var BPromise=require(_0xdc90('0x3'));var rp=require(_0xdc90('0x4'));var fs=require('fs');var path=require(_0xdc90('0x5'));var rimraf=require('rimraf');var config=require(_0xdc90('0x6'));var attributes=require(_0xdc90('0x7'));var integrations=require(_0xdc90('0x8'));module['exports']=function(_0x3accb2,_0x1767d2){return _0x3accb2[_0xdc90('0x9')](_0xdc90('0xa'),attributes,{'tableName':_0xdc90('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6f7948e..f0441bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d05=['code','message','result','DeskAccount','findAll','options','raw','where','attributes','limit','map','include','model','GetDeskAccount','catch','ShowDeskAccount','find','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','error'];(function(_0x5b0754,_0x1e2e36){var _0x54a895=function(_0x571a1e){while(--_0x571a1e){_0x5b0754['push'](_0x5b0754['shift']());}};_0x54a895(++_0x1e2e36);}(_0x9d05,0xcb));var _0x59d0=function(_0x1edd2f,_0x14f97f){_0x1edd2f=_0x1edd2f-0x0;var _0x2f5d1c=_0x9d05[_0x1edd2f];return _0x2f5d1c;};'use strict';var _=require(_0x59d0('0x0'));var util=require(_0x59d0('0x1'));var moment=require('moment');var BPromise=require(_0x59d0('0x2'));var rs=require(_0x59d0('0x3'));var fs=require('fs');var Redis=require(_0x59d0('0x4'));var db=require(_0x59d0('0x5'))['db'];var utils=require(_0x59d0('0x6'));var logger=require('../../config/logger')(_0x59d0('0x7'));var config=require(_0x59d0('0x8'));var jayson=require(_0x59d0('0x9'));var client=jayson[_0x59d0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d9ff8,_0x534231,_0x1113c3){return new BPromise(function(_0x57c51b,_0x53fdb4){return client[_0x59d0('0xb')](_0x2d9ff8,_0x1113c3)[_0x59d0('0xc')](function(_0x21d5c3){logger[_0x59d0('0xd')](_0x59d0('0xe'),_0x534231,_0x59d0('0xf'));logger[_0x59d0('0x10')](_0x59d0('0x11'),_0x534231,'request\x20sent',JSON['stringify'](_0x21d5c3));if(_0x21d5c3['error']){if(_0x21d5c3[_0x59d0('0x12')][_0x59d0('0x13')]===0x1f4){logger[_0x59d0('0x12')](_0x59d0('0xe'),_0x534231,_0x21d5c3[_0x59d0('0x12')]['message']);return _0x53fdb4(_0x21d5c3['error'][_0x59d0('0x14')]);}logger['error'](_0x59d0('0xe'),_0x534231,_0x21d5c3[_0x59d0('0x12')]['message']);return _0x57c51b(_0x21d5c3[_0x59d0('0x12')][_0x59d0('0x14')]);}else{logger[_0x59d0('0xd')]('DeskAccount,\x20%s,\x20%s',_0x534231,_0x59d0('0xf'));_0x57c51b(_0x21d5c3[_0x59d0('0x15')][_0x59d0('0x14')]);}})['catch'](function(_0x20be1c){logger[_0x59d0('0x12')](_0x59d0('0xe'),_0x534231,_0x20be1c);_0x53fdb4(_0x20be1c);});});}exports['GetDeskAccount']=function(_0x504d8a){var _0x18b361=this;return new Promise(function(_0x510d6c,_0x1cdf33){return db[_0x59d0('0x16')][_0x59d0('0x17')]({'raw':_0x504d8a[_0x59d0('0x18')]?_0x504d8a[_0x59d0('0x18')][_0x59d0('0x19')]===undefined?!![]:![]:!![],'where':_0x504d8a[_0x59d0('0x18')]?_0x504d8a[_0x59d0('0x18')][_0x59d0('0x1a')]||null:null,'attributes':_0x504d8a['options']?_0x504d8a[_0x59d0('0x18')][_0x59d0('0x1b')]||null:null,'limit':_0x504d8a[_0x59d0('0x18')]?_0x504d8a[_0x59d0('0x18')][_0x59d0('0x1c')]||null:null,'include':_0x504d8a[_0x59d0('0x18')]?_0x504d8a['options']['include']?_[_0x59d0('0x1d')](_0x504d8a[_0x59d0('0x18')][_0x59d0('0x1e')],function(_0x428e87){return{'model':db[_0x428e87[_0x59d0('0x1f')]],'as':_0x428e87['as'],'attributes':_0x428e87[_0x59d0('0x1b')],'include':_0x428e87[_0x59d0('0x1e')]?_[_0x59d0('0x1d')](_0x428e87['include'],function(_0xafacd4){return{'model':db[_0xafacd4[_0x59d0('0x1f')]],'as':_0xafacd4['as'],'attributes':_0xafacd4[_0x59d0('0x1b')],'include':_0xafacd4[_0x59d0('0x1e')]?_[_0x59d0('0x1d')](_0xafacd4[_0x59d0('0x1e')],function(_0xc9145f){return{'model':db[_0xc9145f[_0x59d0('0x1f')]],'as':_0xc9145f['as'],'attributes':_0xc9145f[_0x59d0('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x59d0('0xc')](function(_0x195b5e){logger[_0x59d0('0xd')]('GetDeskAccount',_0x504d8a);logger['debug'](_0x59d0('0x20'),_0x504d8a,JSON['stringify'](_0x195b5e));_0x510d6c(_0x195b5e);})[_0x59d0('0x21')](function(_0x20f470){logger[_0x59d0('0x12')](_0x59d0('0x20'),_0x20f470['message'],_0x504d8a);_0x1cdf33(_0x18b361[_0x59d0('0x12')](0x1f4,_0x20f470['message']));});});};exports[_0x59d0('0x22')]=function(_0x4409dd){var _0x101339=this;return new Promise(function(_0x315ca1,_0x161bac){return db[_0x59d0('0x16')][_0x59d0('0x23')]({'raw':_0x4409dd[_0x59d0('0x18')]?_0x4409dd['options']['raw']===undefined?!![]:![]:!![],'where':_0x4409dd[_0x59d0('0x18')]?_0x4409dd['options'][_0x59d0('0x1a')]||null:null,'attributes':_0x4409dd[_0x59d0('0x18')]?_0x4409dd[_0x59d0('0x18')]['attributes']||null:null,'include':_0x4409dd[_0x59d0('0x18')]?_0x4409dd[_0x59d0('0x18')][_0x59d0('0x1e')]?_[_0x59d0('0x1d')](_0x4409dd[_0x59d0('0x18')][_0x59d0('0x1e')],function(_0x45f12b){return{'model':db[_0x45f12b[_0x59d0('0x1f')]],'as':_0x45f12b['as'],'attributes':_0x45f12b['attributes'],'include':_0x45f12b[_0x59d0('0x1e')]?_[_0x59d0('0x1d')](_0x45f12b[_0x59d0('0x1e')],function(_0x5c70d9){return{'model':db[_0x5c70d9[_0x59d0('0x1f')]],'as':_0x5c70d9['as'],'attributes':_0x5c70d9[_0x59d0('0x1b')],'include':_0x5c70d9[_0x59d0('0x1e')]?_[_0x59d0('0x1d')](_0x5c70d9[_0x59d0('0x1e')],function(_0x583ce0){return{'model':db[_0x583ce0[_0x59d0('0x1f')]],'as':_0x583ce0['as'],'attributes':_0x583ce0[_0x59d0('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x59d0('0xc')](function(_0x31065f){logger[_0x59d0('0xd')]('ShowDeskAccount',_0x4409dd);logger[_0x59d0('0x10')](_0x59d0('0x22'),_0x4409dd,JSON[_0x59d0('0x24')](_0x31065f));_0x315ca1(_0x31065f);})['catch'](function(_0x3ff43a){logger[_0x59d0('0x12')](_0x59d0('0x22'),_0x3ff43a[_0x59d0('0x14')],_0x4409dd);_0x161bac(_0x101339[_0x59d0('0x12')](0x1f4,_0x3ff43a[_0x59d0('0x14')]));});});};
\ No newline at end of file
+var _0x8d63=['DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetDeskAccount','DeskAccount','findAll','options','attributes','limit','include','map','model','stringify','ShowDeskAccount','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x36d703,_0x55b354){var _0x12c909=function(_0x5e846a){while(--_0x5e846a){_0x36d703['push'](_0x36d703['shift']());}};_0x12c909(++_0x55b354);}(_0x8d63,0xe0));var _0x38d6=function(_0x506e59,_0x4999b4){_0x506e59=_0x506e59-0x0;var _0x26b0df=_0x8d63[_0x506e59];return _0x26b0df;};'use strict';var _=require(_0x38d6('0x0'));var util=require(_0x38d6('0x1'));var moment=require(_0x38d6('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x38d6('0x3'));var db=require(_0x38d6('0x4'))['db'];var utils=require(_0x38d6('0x5'));var logger=require(_0x38d6('0x6'))(_0x38d6('0x7'));var config=require('../../config/environment');var jayson=require(_0x38d6('0x8'));var client=jayson[_0x38d6('0x9')][_0x38d6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x7f6641,_0x4570c1,_0x531f90){return new BPromise(function(_0xbf0e25,_0x1d6e98){return client[_0x38d6('0xb')](_0x7f6641,_0x531f90)[_0x38d6('0xc')](function(_0x10f705){logger[_0x38d6('0xd')](_0x38d6('0xe'),_0x4570c1,_0x38d6('0xf'));logger[_0x38d6('0x10')](_0x38d6('0x11'),_0x4570c1,_0x38d6('0xf'),JSON['stringify'](_0x10f705));if(_0x10f705['error']){if(_0x10f705[_0x38d6('0x12')][_0x38d6('0x13')]===0x1f4){logger[_0x38d6('0x12')](_0x38d6('0xe'),_0x4570c1,_0x10f705[_0x38d6('0x12')]['message']);return _0x1d6e98(_0x10f705[_0x38d6('0x12')][_0x38d6('0x14')]);}logger['error']('DeskAccount,\x20%s,\x20%s',_0x4570c1,_0x10f705[_0x38d6('0x12')][_0x38d6('0x14')]);return _0xbf0e25(_0x10f705[_0x38d6('0x12')][_0x38d6('0x14')]);}else{logger['info'](_0x38d6('0xe'),_0x4570c1,_0x38d6('0xf'));_0xbf0e25(_0x10f705[_0x38d6('0x15')][_0x38d6('0x14')]);}})[_0x38d6('0x16')](function(_0xeba6dd){logger[_0x38d6('0x12')](_0x38d6('0xe'),_0x4570c1,_0xeba6dd);_0x1d6e98(_0xeba6dd);});});}exports[_0x38d6('0x17')]=function(_0x4d806a){var _0x34c876=this;return new Promise(function(_0x44ca1b,_0x362866){return db[_0x38d6('0x18')][_0x38d6('0x19')]({'raw':_0x4d806a[_0x38d6('0x1a')]?_0x4d806a['options']['raw']===undefined?!![]:![]:!![],'where':_0x4d806a[_0x38d6('0x1a')]?_0x4d806a[_0x38d6('0x1a')]['where']||null:null,'attributes':_0x4d806a[_0x38d6('0x1a')]?_0x4d806a[_0x38d6('0x1a')][_0x38d6('0x1b')]||null:null,'limit':_0x4d806a[_0x38d6('0x1a')]?_0x4d806a['options'][_0x38d6('0x1c')]||null:null,'include':_0x4d806a[_0x38d6('0x1a')]?_0x4d806a['options'][_0x38d6('0x1d')]?_[_0x38d6('0x1e')](_0x4d806a[_0x38d6('0x1a')]['include'],function(_0x5c0234){return{'model':db[_0x5c0234[_0x38d6('0x1f')]],'as':_0x5c0234['as'],'attributes':_0x5c0234['attributes'],'include':_0x5c0234[_0x38d6('0x1d')]?_[_0x38d6('0x1e')](_0x5c0234[_0x38d6('0x1d')],function(_0x2eb21){return{'model':db[_0x2eb21['model']],'as':_0x2eb21['as'],'attributes':_0x2eb21['attributes'],'include':_0x2eb21[_0x38d6('0x1d')]?_['map'](_0x2eb21[_0x38d6('0x1d')],function(_0x181eb1){return{'model':db[_0x181eb1[_0x38d6('0x1f')]],'as':_0x181eb1['as'],'attributes':_0x181eb1['attributes']};}):[]};}):[]};}):[]:[]})[_0x38d6('0xc')](function(_0x49ffff){logger[_0x38d6('0xd')](_0x38d6('0x17'),_0x4d806a);logger[_0x38d6('0x10')](_0x38d6('0x17'),_0x4d806a,JSON[_0x38d6('0x20')](_0x49ffff));_0x44ca1b(_0x49ffff);})['catch'](function(_0x4cb506){logger[_0x38d6('0x12')](_0x38d6('0x17'),_0x4cb506[_0x38d6('0x14')],_0x4d806a);_0x362866(_0x34c876[_0x38d6('0x12')](0x1f4,_0x4cb506['message']));});});};exports[_0x38d6('0x21')]=function(_0x5e8266){var _0x51d75c=this;return new Promise(function(_0x4b0c95,_0x2d6e30){return db['DeskAccount']['find']({'raw':_0x5e8266[_0x38d6('0x1a')]?_0x5e8266['options']['raw']===undefined?!![]:![]:!![],'where':_0x5e8266[_0x38d6('0x1a')]?_0x5e8266[_0x38d6('0x1a')]['where']||null:null,'attributes':_0x5e8266[_0x38d6('0x1a')]?_0x5e8266[_0x38d6('0x1a')][_0x38d6('0x1b')]||null:null,'include':_0x5e8266['options']?_0x5e8266[_0x38d6('0x1a')][_0x38d6('0x1d')]?_['map'](_0x5e8266['options'][_0x38d6('0x1d')],function(_0x2b8f6f){return{'model':db[_0x2b8f6f[_0x38d6('0x1f')]],'as':_0x2b8f6f['as'],'attributes':_0x2b8f6f[_0x38d6('0x1b')],'include':_0x2b8f6f[_0x38d6('0x1d')]?_[_0x38d6('0x1e')](_0x2b8f6f[_0x38d6('0x1d')],function(_0x4368cd){return{'model':db[_0x4368cd[_0x38d6('0x1f')]],'as':_0x4368cd['as'],'attributes':_0x4368cd['attributes'],'include':_0x4368cd[_0x38d6('0x1d')]?_[_0x38d6('0x1e')](_0x4368cd[_0x38d6('0x1d')],function(_0x8257e5){return{'model':db[_0x8257e5['model']],'as':_0x8257e5['as'],'attributes':_0x8257e5[_0x38d6('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x557985){logger['info'](_0x38d6('0x21'),_0x5e8266);logger[_0x38d6('0x10')](_0x38d6('0x21'),_0x5e8266,JSON[_0x38d6('0x20')](_0x557985));_0x4b0c95(_0x557985);})[_0x38d6('0x16')](function(_0x1f69b9){logger[_0x38d6('0x12')](_0x38d6('0x21'),_0x1f69b9[_0x38d6('0x14')],_0x5e8266);_0x2d6e30(_0x51d75c[_0x38d6('0x12')](0x1f4,_0x1f69b9[_0x38d6('0x14')]));});});};
\ No newline at end of file
index 6bbf416..8c5a142 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','/:id/tags','post','setTags','put','update'];(function(_0x4349d2,_0x39e225){var _0x56f6b1=function(_0x183e3d){while(--_0x183e3d){_0x4349d2['push'](_0x4349d2['shift']());}};_0x56f6b1(++_0x39e225);}(_0x9c44,0x178));var _0x49c4=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0x9c44[_0x4fde08];return _0x12e725;};'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['show']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['get']('/:id/subjects',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['get'](_0x49c4('0xe'),auth[_0x49c4('0x7')](),controller['getDescriptions']);router['get'](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller['getTags']);router[_0x49c4('0x10')]('/',auth[_0x49c4('0x7')](),controller['create']);router[_0x49c4('0x10')](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router[_0x49c4('0x12')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router['delete'](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);module[_0x49c4('0x15')]=router;
\ No newline at end of file
+var _0x9c44=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','/:id/tags','post','setTags','put','update'];(function(_0x254116,_0xe8cae4){var _0x8f384a=function(_0x35d8b8){while(--_0x35d8b8){_0x254116['push'](_0x254116['shift']());}};_0x8f384a(++_0xe8cae4);}(_0x9c44,0x178));var _0x49c4=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9c44[_0x4b055c];return _0x4b62bb;};'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['show']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['get']('/:id/subjects',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['get'](_0x49c4('0xe'),auth[_0x49c4('0x7')](),controller['getDescriptions']);router['get'](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller['getTags']);router[_0x49c4('0x10')]('/',auth[_0x49c4('0x7')](),controller['create']);router[_0x49c4('0x10')](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router[_0x49c4('0x12')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router['delete'](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);module[_0x49c4('0x15')]=router;
\ No newline at end of file
index 5bdf014..956add6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdd3=['exports','STRING'];(function(_0x31f907,_0x2b7c5f){var _0x4ede02=function(_0x50ac98){while(--_0x50ac98){_0x31f907['push'](_0x31f907['shift']());}};_0x4ede02(++_0x2b7c5f);}(_0xfdd3,0x14c));var _0x3fdd=function(_0x2c50cd,_0x4760d2){_0x2c50cd=_0x2c50cd-0x0;var _0x538053=_0xfdd3[_0x2c50cd];return _0x538053;};'use strict';var Sequelize=require('sequelize');module[_0x3fdd('0x0')]={'name':{'type':Sequelize[_0x3fdd('0x1')]},'description':{'type':Sequelize[_0x3fdd('0x1')]}};
\ No newline at end of file
+var _0x6848=['STRING','sequelize','exports'];(function(_0x1a0568,_0x441965){var _0x1aac73=function(_0x436122){while(--_0x436122){_0x1a0568['push'](_0x1a0568['shift']());}};_0x1aac73(++_0x441965);}(_0x6848,0x82));var _0x8684=function(_0x18fbc1,_0x3c77c7){_0x18fbc1=_0x18fbc1-0x0;var _0x219f5f=_0x6848[_0x18fbc1];return _0x219f5f;};'use strict';var Sequelize=require(_0x8684('0x0'));module[_0x8684('0x1')]={'name':{'type':Sequelize[_0x8684('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a51a68b..4a8f43c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90d9=['apply','reject','update','then','sendStatus','stack','name','send','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','filter','options','includeAll','include','DeskConfiguration','findAll','catch','show','params','find','create','body','destroy','getFields','findOne','DeskField','nolimit','getSubjects','getDescriptions','Tag','getTags','setTags','ids','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','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json'];(function(_0x2f19fd,_0x495e94){var _0x5166c9=function(_0x428e48){while(--_0x428e48){_0x2f19fd['push'](_0x2f19fd['shift']());}};_0x5166c9(++_0x495e94);}(_0x90d9,0x133));var _0x990d=function(_0x3a513d,_0xca288a){_0x3a513d=_0x3a513d-0x0;var _0x2a4581=_0x90d9[_0x3a513d];return _0x2a4581;};'use strict';var emlformat=require(_0x990d('0x0'));var rimraf=require(_0x990d('0x1'));var zipdir=require(_0x990d('0x2'));var jsonpatch=require(_0x990d('0x3'));var rp=require(_0x990d('0x4'));var moment=require(_0x990d('0x5'));var BPromise=require(_0x990d('0x6'));var Mustache=require(_0x990d('0x7'));var util=require(_0x990d('0x8'));var path=require(_0x990d('0x9'));var sox=require(_0x990d('0xa'));var csv=require(_0x990d('0xb'));var ejs=require(_0x990d('0xc'));var fs=require('fs');var fs_extra=require(_0x990d('0xd'));var _=require(_0x990d('0xe'));var squel=require(_0x990d('0xf'));var crypto=require(_0x990d('0x10'));var jsforce=require(_0x990d('0x11'));var deskjs=require('desk.js');var toCsv=require(_0x990d('0xb'));var querystring=require(_0x990d('0x12'));var Papa=require(_0x990d('0x13'));var Redis=require(_0x990d('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x990d('0x15'));var as=require(_0x990d('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x990d('0x17'))(_0x990d('0x18'));var utils=require('../../config/utils');var config=require(_0x990d('0x19'));var licenseUtil=require(_0x990d('0x1a'));var db=require(_0x990d('0x1b'))['db'];function respondWithStatusCode(_0x6a2319,_0xf609e9){_0xf609e9=_0xf609e9||0xcc;return function(_0xd6fad9){if(_0xd6fad9){return _0x6a2319['sendStatus'](_0xf609e9);}return _0x6a2319[_0x990d('0x1c')](_0xf609e9)[_0x990d('0x1d')]();};}function respondWithResult(_0x3c2e5e,_0x5968f8){_0x5968f8=_0x5968f8||0xc8;return function(_0x2a046c){if(_0x2a046c){return _0x3c2e5e['status'](_0x5968f8)['json'](_0x2a046c);}};}function respondWithFilteredResult(_0x4bd4d1,_0x5b7eff){return function(_0x5518c5){if(_0x5518c5){var _0x11ac68=typeof _0x5b7eff[_0x990d('0x1e')]===_0x990d('0x1f')&&typeof _0x5b7eff[_0x990d('0x20')]===_0x990d('0x1f');var _0x1e748a=_0x5518c5['count'];var _0x2924b8=_0x11ac68?0x0:_0x5b7eff['offset'];var _0x5cbdd1=_0x11ac68?_0x5518c5[_0x990d('0x21')]:_0x5b7eff[_0x990d('0x1e')]+_0x5b7eff[_0x990d('0x20')];var _0x116914;if(_0x5cbdd1>=_0x1e748a){_0x5cbdd1=_0x1e748a;_0x116914=0xc8;}else{_0x116914=0xce;}_0x4bd4d1['status'](_0x116914);return _0x4bd4d1[_0x990d('0x22')](_0x990d('0x23'),_0x2924b8+'-'+_0x5cbdd1+'/'+_0x1e748a)[_0x990d('0x24')](_0x5518c5);}return null;};}function patchUpdates(_0x288f9d){return function(_0x17aacb){try{jsonpatch[_0x990d('0x25')](_0x17aacb,_0x288f9d,!![]);}catch(_0x7b3c9e){return BPromise[_0x990d('0x26')](_0x7b3c9e);}return _0x17aacb['save']();};}function saveUpdates(_0x25e9d6,_0x2e777f){return function(_0x4dd586){if(_0x4dd586){return _0x4dd586[_0x990d('0x27')](_0x25e9d6)[_0x990d('0x28')](function(_0x28974c){return _0x28974c;});}return null;};}function removeEntity(_0x39bc7e,_0x2f3353){return function(_0x23d893){if(_0x23d893){return _0x23d893['destroy']()['then'](function(){_0x39bc7e[_0x990d('0x1c')](0xcc)[_0x990d('0x1d')]();});}};}function handleEntityNotFound(_0xbb2efe,_0x2b5f31){return function(_0x7c9de2){if(!_0x7c9de2){_0xbb2efe[_0x990d('0x29')](0x194);}return _0x7c9de2;};}function handleError(_0x1dc9a9,_0x56d4a1){_0x56d4a1=_0x56d4a1||0x1f4;return function(_0x43c8cd){logger['error'](_0x43c8cd[_0x990d('0x2a')]);if(_0x43c8cd[_0x990d('0x2b')]){delete _0x43c8cd[_0x990d('0x2b')];}_0x1dc9a9[_0x990d('0x1c')](_0x56d4a1)[_0x990d('0x2c')](_0x43c8cd);};}exports['index']=function(_0x46460d,_0x329f9e){var _0x4e03fb={},_0x57326d={},_0xf143a1={'count':0x0,'rows':[]};var _0x16b8ac=_[_0x990d('0x2d')](db['DeskConfiguration'][_0x990d('0x2e')],function(_0x3e5db7){return{'name':_0x3e5db7[_0x990d('0x2f')],'type':_0x3e5db7['type'][_0x990d('0x30')]};});_0x57326d[_0x990d('0x31')]=_['map'](_0x16b8ac,'name');_0x57326d[_0x990d('0x32')]=_[_0x990d('0x33')](_0x46460d[_0x990d('0x32')]);_0x57326d[_0x990d('0x34')]=_[_0x990d('0x35')](_0x57326d[_0x990d('0x31')],_0x57326d[_0x990d('0x32')]);_0x4e03fb['attributes']=_['intersection'](_0x57326d[_0x990d('0x31')],qs[_0x990d('0x36')](_0x46460d[_0x990d('0x32')]['fields']));_0x4e03fb[_0x990d('0x37')]=_0x4e03fb[_0x990d('0x37')][_0x990d('0x38')]?_0x4e03fb[_0x990d('0x37')]:_0x57326d[_0x990d('0x31')];if(!_0x46460d['query'][_0x990d('0x39')]('nolimit')){_0x4e03fb[_0x990d('0x20')]=qs[_0x990d('0x20')](_0x46460d['query']['limit']);_0x4e03fb[_0x990d('0x1e')]=qs[_0x990d('0x1e')](_0x46460d['query'][_0x990d('0x1e')]);}_0x4e03fb[_0x990d('0x3a')]=qs['sort'](_0x46460d[_0x990d('0x32')][_0x990d('0x3b')]);_0x4e03fb[_0x990d('0x3c')]=qs['filters'](_[_0x990d('0x3d')](_0x46460d[_0x990d('0x32')],_0x57326d[_0x990d('0x34')]),_0x16b8ac);if(_0x46460d[_0x990d('0x32')]['filter']){_0x4e03fb[_0x990d('0x3c')]=_[_0x990d('0x3e')](_0x4e03fb[_0x990d('0x3c')],{'$or':_[_0x990d('0x2d')](_0x16b8ac,function(_0x2d5517){if(_0x2d5517['type']!=='VIRTUAL'){var _0x18578f={};_0x18578f[_0x2d5517['name']]={'$like':'%'+_0x46460d[_0x990d('0x32')][_0x990d('0x3f')]+'%'};return _0x18578f;}})});}_0x4e03fb=_[_0x990d('0x3e')]({},_0x4e03fb,_0x46460d[_0x990d('0x40')]);var _0x4e5278={'where':_0x4e03fb[_0x990d('0x3c')]};return db['DeskConfiguration'][_0x990d('0x21')](_0x4e5278)[_0x990d('0x28')](function(_0x3092bc){_0xf143a1['count']=_0x3092bc;if(_0x46460d['query'][_0x990d('0x41')]){_0x4e03fb[_0x990d('0x42')]=[{'all':!![]}];}return db[_0x990d('0x43')][_0x990d('0x44')](_0x4e03fb);})[_0x990d('0x28')](function(_0x56e69e){_0xf143a1['rows']=_0x56e69e;return _0xf143a1;})['then'](respondWithFilteredResult(_0x329f9e,_0x4e03fb))[_0x990d('0x45')](handleError(_0x329f9e,null));};exports[_0x990d('0x46')]=function(_0x5e777b,_0x14923d){var _0x35841a={'raw':![],'where':{'id':_0x5e777b[_0x990d('0x47')]['id']}},_0x2d0296={};_0x2d0296[_0x990d('0x31')]=_[_0x990d('0x33')](db[_0x990d('0x43')]['rawAttributes']);_0x2d0296[_0x990d('0x32')]=_[_0x990d('0x33')](_0x5e777b[_0x990d('0x32')]);_0x2d0296[_0x990d('0x34')]=_[_0x990d('0x35')](_0x2d0296[_0x990d('0x31')],_0x2d0296['query']);_0x35841a[_0x990d('0x37')]=_[_0x990d('0x35')](_0x2d0296[_0x990d('0x31')],qs['fields'](_0x5e777b['query'][_0x990d('0x36')]));_0x35841a[_0x990d('0x37')]=_0x35841a[_0x990d('0x37')]['length']?_0x35841a[_0x990d('0x37')]:_0x2d0296[_0x990d('0x31')];if(_0x5e777b[_0x990d('0x32')][_0x990d('0x41')]){_0x35841a[_0x990d('0x42')]=[{'all':!![]}];}_0x35841a=_['merge']({},_0x35841a,_0x5e777b[_0x990d('0x40')]);return db['DeskConfiguration'][_0x990d('0x48')](_0x35841a)['then'](handleEntityNotFound(_0x14923d,null))[_0x990d('0x28')](respondWithResult(_0x14923d,null))['catch'](handleError(_0x14923d,null));};exports[_0x990d('0x49')]=function(_0x12064f,_0x3f9dfc){return db['DeskConfiguration'][_0x990d('0x49')](_0x12064f[_0x990d('0x4a')],{})[_0x990d('0x28')](respondWithResult(_0x3f9dfc,0xc9))[_0x990d('0x45')](handleError(_0x3f9dfc,null));};exports[_0x990d('0x27')]=function(_0x1af442,_0x443c8e){if(_0x1af442['body']['id']){delete _0x1af442[_0x990d('0x4a')]['id'];}return db[_0x990d('0x43')][_0x990d('0x48')]({'where':{'id':_0x1af442[_0x990d('0x47')]['id']}})['then'](handleEntityNotFound(_0x443c8e,null))['then'](saveUpdates(_0x1af442[_0x990d('0x4a')],null))['then'](respondWithResult(_0x443c8e,null))[_0x990d('0x45')](handleError(_0x443c8e,null));};exports[_0x990d('0x4b')]=function(_0x5010c3,_0x30e119){return db[_0x990d('0x43')][_0x990d('0x48')]({'where':{'id':_0x5010c3['params']['id']}})[_0x990d('0x28')](handleEntityNotFound(_0x30e119,null))[_0x990d('0x28')](removeEntity(_0x30e119,null))[_0x990d('0x45')](handleError(_0x30e119,null));};exports[_0x990d('0x4c')]=function(_0x4ea63a,_0x56535a,_0xdd47a9){var _0x2484d6={};var _0x3f2dbc={};var _0x1b16d0;var _0x380b16;return db[_0x990d('0x43')][_0x990d('0x4d')]({'where':{'id':_0x4ea63a['params']['id']}})[_0x990d('0x28')](handleEntityNotFound(_0x56535a,null))[_0x990d('0x28')](function(_0x33a28d){if(_0x33a28d){_0x1b16d0=_0x33a28d;_0x3f2dbc[_0x990d('0x31')]=_[_0x990d('0x33')](db[_0x990d('0x4e')]['rawAttributes']);_0x3f2dbc[_0x990d('0x32')]=_['keys'](_0x4ea63a[_0x990d('0x32')]);_0x3f2dbc['filters']=_[_0x990d('0x35')](_0x3f2dbc[_0x990d('0x31')],_0x3f2dbc[_0x990d('0x32')]);_0x2484d6[_0x990d('0x37')]=_['intersection'](_0x3f2dbc[_0x990d('0x31')],qs[_0x990d('0x36')](_0x4ea63a['query'][_0x990d('0x36')]));_0x2484d6[_0x990d('0x37')]=_0x2484d6[_0x990d('0x37')]['length']?_0x2484d6['attributes']:_0x3f2dbc['model'];_0x2484d6[_0x990d('0x3a')]=qs[_0x990d('0x3b')](_0x4ea63a[_0x990d('0x32')][_0x990d('0x3b')]);_0x2484d6['where']=qs[_0x990d('0x34')](_[_0x990d('0x3d')](_0x4ea63a[_0x990d('0x32')],_0x3f2dbc[_0x990d('0x34')]));if(_0x4ea63a[_0x990d('0x32')][_0x990d('0x3f')]){_0x2484d6[_0x990d('0x3c')]=_[_0x990d('0x3e')](_0x2484d6[_0x990d('0x3c')],{'$or':_[_0x990d('0x2d')](_0x2484d6['attributes'],function(_0x2583cd){var _0x2f7cc7={};_0x2f7cc7[_0x2583cd]={'$like':'%'+_0x4ea63a[_0x990d('0x32')]['filter']+'%'};return _0x2f7cc7;})});}_0x2484d6=_[_0x990d('0x3e')]({},_0x2484d6,_0x4ea63a[_0x990d('0x40')]);return _0x1b16d0['getFields'](_0x2484d6);}})[_0x990d('0x28')](function(_0x21a1ab){if(_0x21a1ab){_0x380b16=_0x21a1ab['length'];if(!_0x4ea63a[_0x990d('0x32')]['hasOwnProperty'](_0x990d('0x4f'))){_0x2484d6['limit']=qs[_0x990d('0x20')](_0x4ea63a[_0x990d('0x32')]['limit']);_0x2484d6[_0x990d('0x1e')]=qs['offset'](_0x4ea63a[_0x990d('0x32')][_0x990d('0x1e')]);}return _0x1b16d0[_0x990d('0x4c')](_0x2484d6);}})['then'](function(_0x2322bb){if(_0x2322bb){return _0x2322bb?{'count':_0x380b16,'rows':_0x2322bb}:null;}})[_0x990d('0x28')](respondWithResult(_0x56535a,null))[_0x990d('0x45')](handleError(_0x56535a,null));};exports[_0x990d('0x50')]=function(_0x14e08d,_0x790ff9,_0x1c2175){var _0x2f9b49={};var _0x555013={};var _0x12f5b8;var _0x534dae;return db[_0x990d('0x43')][_0x990d('0x4d')]({'where':{'id':_0x14e08d[_0x990d('0x47')]['id']}})[_0x990d('0x28')](handleEntityNotFound(_0x790ff9,null))[_0x990d('0x28')](function(_0x5de189){if(_0x5de189){_0x12f5b8=_0x5de189;_0x555013[_0x990d('0x31')]=_[_0x990d('0x33')](db[_0x990d('0x4e')][_0x990d('0x2e')]);_0x555013[_0x990d('0x32')]=_[_0x990d('0x33')](_0x14e08d[_0x990d('0x32')]);_0x555013[_0x990d('0x34')]=_[_0x990d('0x35')](_0x555013[_0x990d('0x31')],_0x555013[_0x990d('0x32')]);_0x2f9b49[_0x990d('0x37')]=_[_0x990d('0x35')](_0x555013[_0x990d('0x31')],qs[_0x990d('0x36')](_0x14e08d['query'][_0x990d('0x36')]));_0x2f9b49['attributes']=_0x2f9b49[_0x990d('0x37')][_0x990d('0x38')]?_0x2f9b49[_0x990d('0x37')]:_0x555013[_0x990d('0x31')];_0x2f9b49['order']=qs['sort'](_0x14e08d[_0x990d('0x32')]['sort']);_0x2f9b49[_0x990d('0x3c')]=qs[_0x990d('0x34')](_[_0x990d('0x3d')](_0x14e08d[_0x990d('0x32')],_0x555013[_0x990d('0x34')]));if(_0x14e08d[_0x990d('0x32')][_0x990d('0x3f')]){_0x2f9b49[_0x990d('0x3c')]=_[_0x990d('0x3e')](_0x2f9b49[_0x990d('0x3c')],{'$or':_[_0x990d('0x2d')](_0x2f9b49[_0x990d('0x37')],function(_0x1636f9){var _0x3ac3ef={};_0x3ac3ef[_0x1636f9]={'$like':'%'+_0x14e08d[_0x990d('0x32')]['filter']+'%'};return _0x3ac3ef;})});}_0x2f9b49=_[_0x990d('0x3e')]({},_0x2f9b49,_0x14e08d[_0x990d('0x40')]);return _0x12f5b8[_0x990d('0x50')](_0x2f9b49);}})[_0x990d('0x28')](function(_0x46a0e6){if(_0x46a0e6){_0x534dae=_0x46a0e6['length'];if(!_0x14e08d['query'][_0x990d('0x39')](_0x990d('0x4f'))){_0x2f9b49[_0x990d('0x20')]=qs[_0x990d('0x20')](_0x14e08d[_0x990d('0x32')][_0x990d('0x20')]);_0x2f9b49[_0x990d('0x1e')]=qs[_0x990d('0x1e')](_0x14e08d[_0x990d('0x32')][_0x990d('0x1e')]);}return _0x12f5b8[_0x990d('0x50')](_0x2f9b49);}})[_0x990d('0x28')](function(_0x5aaced){if(_0x5aaced){return _0x5aaced?{'count':_0x534dae,'rows':_0x5aaced}:null;}})[_0x990d('0x28')](respondWithResult(_0x790ff9,null))[_0x990d('0x45')](handleError(_0x790ff9,null));};exports['getDescriptions']=function(_0x3ca95b,_0xd26bbf,_0x11d2ec){var _0x5e33a9={};var _0x1f334e={};var _0x4ef7fc;var _0x4555b5;return db[_0x990d('0x43')][_0x990d('0x4d')]({'where':{'id':_0x3ca95b[_0x990d('0x47')]['id']}})[_0x990d('0x28')](handleEntityNotFound(_0xd26bbf,null))[_0x990d('0x28')](function(_0x5638d9){if(_0x5638d9){_0x4ef7fc=_0x5638d9;_0x1f334e['model']=_[_0x990d('0x33')](db['DeskField'][_0x990d('0x2e')]);_0x1f334e[_0x990d('0x32')]=_[_0x990d('0x33')](_0x3ca95b['query']);_0x1f334e[_0x990d('0x34')]=_[_0x990d('0x35')](_0x1f334e[_0x990d('0x31')],_0x1f334e[_0x990d('0x32')]);_0x5e33a9[_0x990d('0x37')]=_[_0x990d('0x35')](_0x1f334e[_0x990d('0x31')],qs[_0x990d('0x36')](_0x3ca95b['query'][_0x990d('0x36')]));_0x5e33a9[_0x990d('0x37')]=_0x5e33a9[_0x990d('0x37')][_0x990d('0x38')]?_0x5e33a9[_0x990d('0x37')]:_0x1f334e[_0x990d('0x31')];_0x5e33a9[_0x990d('0x3a')]=qs[_0x990d('0x3b')](_0x3ca95b[_0x990d('0x32')][_0x990d('0x3b')]);_0x5e33a9[_0x990d('0x3c')]=qs[_0x990d('0x34')](_['pick'](_0x3ca95b[_0x990d('0x32')],_0x1f334e[_0x990d('0x34')]));if(_0x3ca95b[_0x990d('0x32')][_0x990d('0x3f')]){_0x5e33a9[_0x990d('0x3c')]=_[_0x990d('0x3e')](_0x5e33a9['where'],{'$or':_[_0x990d('0x2d')](_0x5e33a9['attributes'],function(_0x4b9f10){var _0x4bd5a2={};_0x4bd5a2[_0x4b9f10]={'$like':'%'+_0x3ca95b[_0x990d('0x32')]['filter']+'%'};return _0x4bd5a2;})});}_0x5e33a9=_[_0x990d('0x3e')]({},_0x5e33a9,_0x3ca95b[_0x990d('0x40')]);return _0x4ef7fc[_0x990d('0x51')](_0x5e33a9);}})['then'](function(_0x30ecbc){if(_0x30ecbc){_0x4555b5=_0x30ecbc[_0x990d('0x38')];if(!_0x3ca95b[_0x990d('0x32')][_0x990d('0x39')](_0x990d('0x4f'))){_0x5e33a9[_0x990d('0x20')]=qs[_0x990d('0x20')](_0x3ca95b[_0x990d('0x32')][_0x990d('0x20')]);_0x5e33a9['offset']=qs[_0x990d('0x1e')](_0x3ca95b[_0x990d('0x32')][_0x990d('0x1e')]);}return _0x4ef7fc[_0x990d('0x51')](_0x5e33a9);}})[_0x990d('0x28')](function(_0x2a6783){if(_0x2a6783){return _0x2a6783?{'count':_0x4555b5,'rows':_0x2a6783}:null;}})[_0x990d('0x28')](respondWithResult(_0xd26bbf,null))[_0x990d('0x45')](handleError(_0xd26bbf,null));};exports['getTags']=function(_0x5b086e,_0x587d60,_0x159056){var _0x18816d={};var _0x24f7bb={};var _0x15f7b0;var _0x433eff;return db['DeskConfiguration'][_0x990d('0x4d')]({'where':{'id':_0x5b086e[_0x990d('0x47')]['id']}})['then'](handleEntityNotFound(_0x587d60,null))[_0x990d('0x28')](function(_0x26c42c){if(_0x26c42c){_0x15f7b0=_0x26c42c;_0x24f7bb[_0x990d('0x31')]=_[_0x990d('0x33')](db[_0x990d('0x52')][_0x990d('0x2e')]);_0x24f7bb[_0x990d('0x32')]=_['keys'](_0x5b086e['query']);_0x24f7bb[_0x990d('0x34')]=_[_0x990d('0x35')](_0x24f7bb['model'],_0x24f7bb[_0x990d('0x32')]);_0x18816d[_0x990d('0x37')]=_[_0x990d('0x35')](_0x24f7bb[_0x990d('0x31')],qs[_0x990d('0x36')](_0x5b086e[_0x990d('0x32')][_0x990d('0x36')]));_0x18816d[_0x990d('0x37')]=_0x18816d[_0x990d('0x37')][_0x990d('0x38')]?_0x18816d[_0x990d('0x37')]:_0x24f7bb[_0x990d('0x31')];_0x18816d[_0x990d('0x3a')]=qs[_0x990d('0x3b')](_0x5b086e['query'][_0x990d('0x3b')]);_0x18816d['where']=qs[_0x990d('0x34')](_[_0x990d('0x3d')](_0x5b086e['query'],_0x24f7bb[_0x990d('0x34')]));if(_0x5b086e['query'][_0x990d('0x3f')]){_0x18816d[_0x990d('0x3c')]=_['merge'](_0x18816d[_0x990d('0x3c')],{'$or':_[_0x990d('0x2d')](_0x18816d[_0x990d('0x37')],function(_0x8d26fb){var _0x232412={};_0x232412[_0x8d26fb]={'$like':'%'+_0x5b086e[_0x990d('0x32')]['filter']+'%'};return _0x232412;})});}_0x18816d=_[_0x990d('0x3e')]({},_0x18816d,_0x5b086e['options']);return _0x15f7b0['getTags'](_0x18816d);}})[_0x990d('0x28')](function(_0x24f41b){if(_0x24f41b){_0x433eff=_0x24f41b[_0x990d('0x38')];if(!_0x5b086e[_0x990d('0x32')][_0x990d('0x39')](_0x990d('0x4f'))){_0x18816d['limit']=qs[_0x990d('0x20')](_0x5b086e[_0x990d('0x32')][_0x990d('0x20')]);_0x18816d[_0x990d('0x1e')]=qs[_0x990d('0x1e')](_0x5b086e['query'][_0x990d('0x1e')]);}return _0x15f7b0[_0x990d('0x53')](_0x18816d);}})[_0x990d('0x28')](function(_0x180cf8){if(_0x180cf8){return _0x180cf8?{'count':_0x433eff,'rows':_0x180cf8}:null;}})[_0x990d('0x28')](respondWithResult(_0x587d60,null))[_0x990d('0x45')](handleError(_0x587d60,null));};exports[_0x990d('0x54')]=function(_0x19a3b8,_0x17e643,_0x7f30cd){if(_0x19a3b8[_0x990d('0x4a')]['id']){delete _0x19a3b8['body']['id'];}return db[_0x990d('0x43')]['findOne']({'where':{'id':_0x19a3b8[_0x990d('0x47')]['id']}})[_0x990d('0x28')](handleEntityNotFound(_0x17e643,null))['then'](function(_0x226b9e){if(_0x226b9e){return _0x226b9e['setTags'](_0x19a3b8[_0x990d('0x4a')][_0x990d('0x55')]||[]);}return null;})[_0x990d('0x28')](respondWithResult(_0x17e643,null))[_0x990d('0x45')](handleError(_0x17e643,null));};
\ No newline at end of file
+var _0xe3e2=['eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','DeskConfiguration','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','getFields','findOne','getSubjects','DeskField','rawAttributes','length','getDescriptions','getTags','Tag','setTags','ids'];(function(_0x352e5f,_0x1b876b){var _0x18384c=function(_0x3329da){while(--_0x3329da){_0x352e5f['push'](_0x352e5f['shift']());}};_0x18384c(++_0x1b876b);}(_0xe3e2,0x102));var _0x2e3e=function(_0x2a6252,_0x2f7bf7){_0x2a6252=_0x2a6252-0x0;var _0x326eb6=_0xe3e2[_0x2a6252];return _0x326eb6;};'use strict';var emlformat=require(_0x2e3e('0x0'));var rimraf=require(_0x2e3e('0x1'));var zipdir=require(_0x2e3e('0x2'));var jsonpatch=require(_0x2e3e('0x3'));var rp=require('request-promise');var moment=require(_0x2e3e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2e3e('0x5'));var util=require(_0x2e3e('0x6'));var path=require(_0x2e3e('0x7'));var sox=require(_0x2e3e('0x8'));var csv=require(_0x2e3e('0x9'));var ejs=require(_0x2e3e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2e3e('0xb'));var squel=require('squel');var crypto=require(_0x2e3e('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2e3e('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2e3e('0xe'));var Redis=require(_0x2e3e('0xf'));var authService=require(_0x2e3e('0x10'));var qs=require(_0x2e3e('0x11'));var as=require(_0x2e3e('0x12'));var hardwareService=require(_0x2e3e('0x13'));var logger=require(_0x2e3e('0x14'))(_0x2e3e('0x15'));var utils=require(_0x2e3e('0x16'));var config=require(_0x2e3e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x2e3e('0x18'))['db'];function respondWithStatusCode(_0x5327a5,_0x3a5ef3){_0x3a5ef3=_0x3a5ef3||0xcc;return function(_0x2f2a6a){if(_0x2f2a6a){return _0x5327a5['sendStatus'](_0x3a5ef3);}return _0x5327a5['status'](_0x3a5ef3)[_0x2e3e('0x19')]();};}function respondWithResult(_0x1b9f96,_0x56db56){_0x56db56=_0x56db56||0xc8;return function(_0x456e4b){if(_0x456e4b){return _0x1b9f96[_0x2e3e('0x1a')](_0x56db56)[_0x2e3e('0x1b')](_0x456e4b);}};}function respondWithFilteredResult(_0x2653fe,_0x242145){return function(_0xa3ab65){if(_0xa3ab65){var _0x270f4b=typeof _0x242145[_0x2e3e('0x1c')]===_0x2e3e('0x1d')&&typeof _0x242145[_0x2e3e('0x1e')]===_0x2e3e('0x1d');var _0x656dd5=_0xa3ab65[_0x2e3e('0x1f')];var _0xb77c9c=_0x270f4b?0x0:_0x242145[_0x2e3e('0x1c')];var _0x3cc553=_0x270f4b?_0xa3ab65[_0x2e3e('0x1f')]:_0x242145[_0x2e3e('0x1c')]+_0x242145['limit'];var _0x42aa9c;if(_0x3cc553>=_0x656dd5){_0x3cc553=_0x656dd5;_0x42aa9c=0xc8;}else{_0x42aa9c=0xce;}_0x2653fe['status'](_0x42aa9c);return _0x2653fe[_0x2e3e('0x20')](_0x2e3e('0x21'),_0xb77c9c+'-'+_0x3cc553+'/'+_0x656dd5)[_0x2e3e('0x1b')](_0xa3ab65);}return null;};}function patchUpdates(_0x33eff1){return function(_0x26bad2){try{jsonpatch[_0x2e3e('0x22')](_0x26bad2,_0x33eff1,!![]);}catch(_0x2d5594){return BPromise[_0x2e3e('0x23')](_0x2d5594);}return _0x26bad2[_0x2e3e('0x24')]();};}function saveUpdates(_0xe899d5,_0x52fa28){return function(_0xcfbc9f){if(_0xcfbc9f){return _0xcfbc9f[_0x2e3e('0x25')](_0xe899d5)[_0x2e3e('0x26')](function(_0x25c422){return _0x25c422;});}return null;};}function removeEntity(_0x652c28,_0x282706){return function(_0x290a5a){if(_0x290a5a){return _0x290a5a[_0x2e3e('0x27')]()['then'](function(){_0x652c28['status'](0xcc)[_0x2e3e('0x19')]();});}};}function handleEntityNotFound(_0x4dd75c,_0x4a6879){return function(_0x4c421e){if(!_0x4c421e){_0x4dd75c['sendStatus'](0x194);}return _0x4c421e;};}function handleError(_0x2e1888,_0x28dea6){_0x28dea6=_0x28dea6||0x1f4;return function(_0x3e082e){logger[_0x2e3e('0x28')](_0x3e082e[_0x2e3e('0x29')]);if(_0x3e082e['name']){delete _0x3e082e[_0x2e3e('0x2a')];}_0x2e1888[_0x2e3e('0x1a')](_0x28dea6)[_0x2e3e('0x2b')](_0x3e082e);};}exports['index']=function(_0x294857,_0x2679a5){var _0x2d71ce={},_0xb9ccdc={},_0x216085={'count':0x0,'rows':[]};var _0x24294f=_[_0x2e3e('0x2c')](db[_0x2e3e('0x2d')]['rawAttributes'],function(_0x5d3db9){return{'name':_0x5d3db9[_0x2e3e('0x2e')],'type':_0x5d3db9[_0x2e3e('0x2f')][_0x2e3e('0x30')]};});_0xb9ccdc[_0x2e3e('0x31')]=_[_0x2e3e('0x2c')](_0x24294f,_0x2e3e('0x2a'));_0xb9ccdc[_0x2e3e('0x32')]=_['keys'](_0x294857[_0x2e3e('0x32')]);_0xb9ccdc[_0x2e3e('0x33')]=_[_0x2e3e('0x34')](_0xb9ccdc[_0x2e3e('0x31')],_0xb9ccdc['query']);_0x2d71ce[_0x2e3e('0x35')]=_[_0x2e3e('0x34')](_0xb9ccdc['model'],qs['fields'](_0x294857[_0x2e3e('0x32')][_0x2e3e('0x36')]));_0x2d71ce[_0x2e3e('0x35')]=_0x2d71ce[_0x2e3e('0x35')]['length']?_0x2d71ce[_0x2e3e('0x35')]:_0xb9ccdc['model'];if(!_0x294857['query'][_0x2e3e('0x37')](_0x2e3e('0x38'))){_0x2d71ce['limit']=qs[_0x2e3e('0x1e')](_0x294857[_0x2e3e('0x32')][_0x2e3e('0x1e')]);_0x2d71ce[_0x2e3e('0x1c')]=qs['offset'](_0x294857[_0x2e3e('0x32')][_0x2e3e('0x1c')]);}_0x2d71ce[_0x2e3e('0x39')]=qs[_0x2e3e('0x3a')](_0x294857[_0x2e3e('0x32')][_0x2e3e('0x3a')]);_0x2d71ce[_0x2e3e('0x3b')]=qs[_0x2e3e('0x33')](_[_0x2e3e('0x3c')](_0x294857[_0x2e3e('0x32')],_0xb9ccdc[_0x2e3e('0x33')]),_0x24294f);if(_0x294857[_0x2e3e('0x32')][_0x2e3e('0x3d')]){_0x2d71ce[_0x2e3e('0x3b')]=_[_0x2e3e('0x3e')](_0x2d71ce[_0x2e3e('0x3b')],{'$or':_[_0x2e3e('0x2c')](_0x24294f,function(_0x381827){if(_0x381827['type']!==_0x2e3e('0x3f')){var _0x2906ed={};_0x2906ed[_0x381827[_0x2e3e('0x2a')]]={'$like':'%'+_0x294857['query']['filter']+'%'};return _0x2906ed;}})});}_0x2d71ce=_[_0x2e3e('0x3e')]({},_0x2d71ce,_0x294857[_0x2e3e('0x40')]);var _0x460968={'where':_0x2d71ce[_0x2e3e('0x3b')]};return db[_0x2e3e('0x2d')][_0x2e3e('0x1f')](_0x460968)[_0x2e3e('0x26')](function(_0x14f86d){_0x216085[_0x2e3e('0x1f')]=_0x14f86d;if(_0x294857[_0x2e3e('0x32')][_0x2e3e('0x41')]){_0x2d71ce[_0x2e3e('0x42')]=[{'all':!![]}];}return db[_0x2e3e('0x2d')][_0x2e3e('0x43')](_0x2d71ce);})[_0x2e3e('0x26')](function(_0xaa50a1){_0x216085['rows']=_0xaa50a1;return _0x216085;})[_0x2e3e('0x26')](respondWithFilteredResult(_0x2679a5,_0x2d71ce))[_0x2e3e('0x44')](handleError(_0x2679a5,null));};exports[_0x2e3e('0x45')]=function(_0x42a19a,_0x2dbad8){var _0x468fa8={'raw':![],'where':{'id':_0x42a19a[_0x2e3e('0x46')]['id']}},_0x4495b4={};_0x4495b4[_0x2e3e('0x31')]=_[_0x2e3e('0x47')](db[_0x2e3e('0x2d')]['rawAttributes']);_0x4495b4[_0x2e3e('0x32')]=_['keys'](_0x42a19a[_0x2e3e('0x32')]);_0x4495b4['filters']=_['intersection'](_0x4495b4[_0x2e3e('0x31')],_0x4495b4[_0x2e3e('0x32')]);_0x468fa8[_0x2e3e('0x35')]=_[_0x2e3e('0x34')](_0x4495b4['model'],qs[_0x2e3e('0x36')](_0x42a19a[_0x2e3e('0x32')]['fields']));_0x468fa8[_0x2e3e('0x35')]=_0x468fa8[_0x2e3e('0x35')]['length']?_0x468fa8[_0x2e3e('0x35')]:_0x4495b4[_0x2e3e('0x31')];if(_0x42a19a['query'][_0x2e3e('0x41')]){_0x468fa8[_0x2e3e('0x42')]=[{'all':!![]}];}_0x468fa8=_[_0x2e3e('0x3e')]({},_0x468fa8,_0x42a19a[_0x2e3e('0x40')]);return db['DeskConfiguration'][_0x2e3e('0x48')](_0x468fa8)[_0x2e3e('0x26')](handleEntityNotFound(_0x2dbad8,null))['then'](respondWithResult(_0x2dbad8,null))[_0x2e3e('0x44')](handleError(_0x2dbad8,null));};exports[_0x2e3e('0x49')]=function(_0x3bdda1,_0x399064){return db[_0x2e3e('0x2d')][_0x2e3e('0x49')](_0x3bdda1[_0x2e3e('0x4a')],{})[_0x2e3e('0x26')](respondWithResult(_0x399064,0xc9))['catch'](handleError(_0x399064,null));};exports[_0x2e3e('0x25')]=function(_0x2763d1,_0xba393d){if(_0x2763d1['body']['id']){delete _0x2763d1[_0x2e3e('0x4a')]['id'];}return db[_0x2e3e('0x2d')][_0x2e3e('0x48')]({'where':{'id':_0x2763d1[_0x2e3e('0x46')]['id']}})[_0x2e3e('0x26')](handleEntityNotFound(_0xba393d,null))[_0x2e3e('0x26')](saveUpdates(_0x2763d1['body'],null))['then'](respondWithResult(_0xba393d,null))['catch'](handleError(_0xba393d,null));};exports['destroy']=function(_0x5167ab,_0x17982f){return db[_0x2e3e('0x2d')][_0x2e3e('0x48')]({'where':{'id':_0x5167ab[_0x2e3e('0x46')]['id']}})[_0x2e3e('0x26')](handleEntityNotFound(_0x17982f,null))[_0x2e3e('0x26')](removeEntity(_0x17982f,null))[_0x2e3e('0x44')](handleError(_0x17982f,null));};exports[_0x2e3e('0x4b')]=function(_0x5e0007,_0x321099,_0x57f95b){var _0x1155e2={};var _0x18ed07={};var _0x4161a9;var _0x431d43;return db[_0x2e3e('0x2d')][_0x2e3e('0x4c')]({'where':{'id':_0x5e0007[_0x2e3e('0x46')]['id']}})[_0x2e3e('0x26')](handleEntityNotFound(_0x321099,null))[_0x2e3e('0x26')](function(_0x343ea1){if(_0x343ea1){_0x4161a9=_0x343ea1;_0x18ed07[_0x2e3e('0x31')]=_['keys'](db['DeskField']['rawAttributes']);_0x18ed07[_0x2e3e('0x32')]=_['keys'](_0x5e0007['query']);_0x18ed07[_0x2e3e('0x33')]=_[_0x2e3e('0x34')](_0x18ed07[_0x2e3e('0x31')],_0x18ed07[_0x2e3e('0x32')]);_0x1155e2[_0x2e3e('0x35')]=_[_0x2e3e('0x34')](_0x18ed07[_0x2e3e('0x31')],qs['fields'](_0x5e0007[_0x2e3e('0x32')][_0x2e3e('0x36')]));_0x1155e2[_0x2e3e('0x35')]=_0x1155e2['attributes']['length']?_0x1155e2[_0x2e3e('0x35')]:_0x18ed07['model'];_0x1155e2['order']=qs['sort'](_0x5e0007['query'][_0x2e3e('0x3a')]);_0x1155e2[_0x2e3e('0x3b')]=qs[_0x2e3e('0x33')](_['pick'](_0x5e0007[_0x2e3e('0x32')],_0x18ed07[_0x2e3e('0x33')]));if(_0x5e0007[_0x2e3e('0x32')]['filter']){_0x1155e2[_0x2e3e('0x3b')]=_[_0x2e3e('0x3e')](_0x1155e2['where'],{'$or':_['map'](_0x1155e2['attributes'],function(_0x390b28){var _0x27be4d={};_0x27be4d[_0x390b28]={'$like':'%'+_0x5e0007[_0x2e3e('0x32')]['filter']+'%'};return _0x27be4d;})});}_0x1155e2=_['merge']({},_0x1155e2,_0x5e0007[_0x2e3e('0x40')]);return _0x4161a9[_0x2e3e('0x4b')](_0x1155e2);}})['then'](function(_0x1bda75){if(_0x1bda75){_0x431d43=_0x1bda75['length'];if(!_0x5e0007[_0x2e3e('0x32')][_0x2e3e('0x37')](_0x2e3e('0x38'))){_0x1155e2[_0x2e3e('0x1e')]=qs[_0x2e3e('0x1e')](_0x5e0007[_0x2e3e('0x32')][_0x2e3e('0x1e')]);_0x1155e2[_0x2e3e('0x1c')]=qs[_0x2e3e('0x1c')](_0x5e0007['query'][_0x2e3e('0x1c')]);}return _0x4161a9[_0x2e3e('0x4b')](_0x1155e2);}})[_0x2e3e('0x26')](function(_0x3950c3){if(_0x3950c3){return _0x3950c3?{'count':_0x431d43,'rows':_0x3950c3}:null;}})[_0x2e3e('0x26')](respondWithResult(_0x321099,null))['catch'](handleError(_0x321099,null));};exports[_0x2e3e('0x4d')]=function(_0x43dd33,_0x122a7b,_0x367c45){var _0x56b64f={};var _0x5e4052={};var _0x531f74;var _0x486b8d;return db[_0x2e3e('0x2d')][_0x2e3e('0x4c')]({'where':{'id':_0x43dd33[_0x2e3e('0x46')]['id']}})['then'](handleEntityNotFound(_0x122a7b,null))[_0x2e3e('0x26')](function(_0x132e80){if(_0x132e80){_0x531f74=_0x132e80;_0x5e4052[_0x2e3e('0x31')]=_[_0x2e3e('0x47')](db[_0x2e3e('0x4e')][_0x2e3e('0x4f')]);_0x5e4052['query']=_[_0x2e3e('0x47')](_0x43dd33[_0x2e3e('0x32')]);_0x5e4052[_0x2e3e('0x33')]=_[_0x2e3e('0x34')](_0x5e4052['model'],_0x5e4052['query']);_0x56b64f[_0x2e3e('0x35')]=_[_0x2e3e('0x34')](_0x5e4052['model'],qs['fields'](_0x43dd33[_0x2e3e('0x32')][_0x2e3e('0x36')]));_0x56b64f[_0x2e3e('0x35')]=_0x56b64f[_0x2e3e('0x35')][_0x2e3e('0x50')]?_0x56b64f['attributes']:_0x5e4052['model'];_0x56b64f[_0x2e3e('0x39')]=qs[_0x2e3e('0x3a')](_0x43dd33[_0x2e3e('0x32')]['sort']);_0x56b64f[_0x2e3e('0x3b')]=qs[_0x2e3e('0x33')](_['pick'](_0x43dd33[_0x2e3e('0x32')],_0x5e4052[_0x2e3e('0x33')]));if(_0x43dd33[_0x2e3e('0x32')]['filter']){_0x56b64f[_0x2e3e('0x3b')]=_[_0x2e3e('0x3e')](_0x56b64f['where'],{'$or':_[_0x2e3e('0x2c')](_0x56b64f[_0x2e3e('0x35')],function(_0x156e5e){var _0x5b7a5a={};_0x5b7a5a[_0x156e5e]={'$like':'%'+_0x43dd33[_0x2e3e('0x32')]['filter']+'%'};return _0x5b7a5a;})});}_0x56b64f=_['merge']({},_0x56b64f,_0x43dd33[_0x2e3e('0x40')]);return _0x531f74[_0x2e3e('0x4d')](_0x56b64f);}})[_0x2e3e('0x26')](function(_0x3c8697){if(_0x3c8697){_0x486b8d=_0x3c8697['length'];if(!_0x43dd33['query'][_0x2e3e('0x37')]('nolimit')){_0x56b64f[_0x2e3e('0x1e')]=qs[_0x2e3e('0x1e')](_0x43dd33[_0x2e3e('0x32')]['limit']);_0x56b64f[_0x2e3e('0x1c')]=qs['offset'](_0x43dd33[_0x2e3e('0x32')][_0x2e3e('0x1c')]);}return _0x531f74[_0x2e3e('0x4d')](_0x56b64f);}})['then'](function(_0x4192fc){if(_0x4192fc){return _0x4192fc?{'count':_0x486b8d,'rows':_0x4192fc}:null;}})['then'](respondWithResult(_0x122a7b,null))[_0x2e3e('0x44')](handleError(_0x122a7b,null));};exports[_0x2e3e('0x51')]=function(_0x4ee0fd,_0x582bba,_0x19b99f){var _0x384962={};var _0x559a4b={};var _0x13505c;var _0xd4040a;return db[_0x2e3e('0x2d')]['findOne']({'where':{'id':_0x4ee0fd[_0x2e3e('0x46')]['id']}})[_0x2e3e('0x26')](handleEntityNotFound(_0x582bba,null))[_0x2e3e('0x26')](function(_0x46c42c){if(_0x46c42c){_0x13505c=_0x46c42c;_0x559a4b[_0x2e3e('0x31')]=_[_0x2e3e('0x47')](db[_0x2e3e('0x4e')][_0x2e3e('0x4f')]);_0x559a4b[_0x2e3e('0x32')]=_['keys'](_0x4ee0fd[_0x2e3e('0x32')]);_0x559a4b[_0x2e3e('0x33')]=_[_0x2e3e('0x34')](_0x559a4b[_0x2e3e('0x31')],_0x559a4b[_0x2e3e('0x32')]);_0x384962[_0x2e3e('0x35')]=_['intersection'](_0x559a4b['model'],qs[_0x2e3e('0x36')](_0x4ee0fd[_0x2e3e('0x32')][_0x2e3e('0x36')]));_0x384962[_0x2e3e('0x35')]=_0x384962[_0x2e3e('0x35')][_0x2e3e('0x50')]?_0x384962[_0x2e3e('0x35')]:_0x559a4b[_0x2e3e('0x31')];_0x384962[_0x2e3e('0x39')]=qs[_0x2e3e('0x3a')](_0x4ee0fd[_0x2e3e('0x32')][_0x2e3e('0x3a')]);_0x384962[_0x2e3e('0x3b')]=qs[_0x2e3e('0x33')](_[_0x2e3e('0x3c')](_0x4ee0fd['query'],_0x559a4b[_0x2e3e('0x33')]));if(_0x4ee0fd[_0x2e3e('0x32')]['filter']){_0x384962['where']=_['merge'](_0x384962[_0x2e3e('0x3b')],{'$or':_['map'](_0x384962[_0x2e3e('0x35')],function(_0x409e34){var _0x4ebece={};_0x4ebece[_0x409e34]={'$like':'%'+_0x4ee0fd[_0x2e3e('0x32')][_0x2e3e('0x3d')]+'%'};return _0x4ebece;})});}_0x384962=_[_0x2e3e('0x3e')]({},_0x384962,_0x4ee0fd[_0x2e3e('0x40')]);return _0x13505c[_0x2e3e('0x51')](_0x384962);}})[_0x2e3e('0x26')](function(_0x25baf0){if(_0x25baf0){_0xd4040a=_0x25baf0[_0x2e3e('0x50')];if(!_0x4ee0fd['query'][_0x2e3e('0x37')]('nolimit')){_0x384962['limit']=qs[_0x2e3e('0x1e')](_0x4ee0fd['query'][_0x2e3e('0x1e')]);_0x384962[_0x2e3e('0x1c')]=qs[_0x2e3e('0x1c')](_0x4ee0fd['query']['offset']);}return _0x13505c[_0x2e3e('0x51')](_0x384962);}})[_0x2e3e('0x26')](function(_0x29f5b6){if(_0x29f5b6){return _0x29f5b6?{'count':_0xd4040a,'rows':_0x29f5b6}:null;}})[_0x2e3e('0x26')](respondWithResult(_0x582bba,null))[_0x2e3e('0x44')](handleError(_0x582bba,null));};exports[_0x2e3e('0x52')]=function(_0x3418d3,_0x3b9f3d,_0x208de1){var _0x3dfced={};var _0x42c0c9={};var _0x3cd7b2;var _0x237eee;return db[_0x2e3e('0x2d')][_0x2e3e('0x4c')]({'where':{'id':_0x3418d3[_0x2e3e('0x46')]['id']}})['then'](handleEntityNotFound(_0x3b9f3d,null))[_0x2e3e('0x26')](function(_0x2bea18){if(_0x2bea18){_0x3cd7b2=_0x2bea18;_0x42c0c9['model']=_[_0x2e3e('0x47')](db[_0x2e3e('0x53')]['rawAttributes']);_0x42c0c9[_0x2e3e('0x32')]=_[_0x2e3e('0x47')](_0x3418d3['query']);_0x42c0c9[_0x2e3e('0x33')]=_['intersection'](_0x42c0c9[_0x2e3e('0x31')],_0x42c0c9['query']);_0x3dfced[_0x2e3e('0x35')]=_[_0x2e3e('0x34')](_0x42c0c9[_0x2e3e('0x31')],qs[_0x2e3e('0x36')](_0x3418d3[_0x2e3e('0x32')][_0x2e3e('0x36')]));_0x3dfced[_0x2e3e('0x35')]=_0x3dfced[_0x2e3e('0x35')][_0x2e3e('0x50')]?_0x3dfced['attributes']:_0x42c0c9[_0x2e3e('0x31')];_0x3dfced[_0x2e3e('0x39')]=qs[_0x2e3e('0x3a')](_0x3418d3[_0x2e3e('0x32')]['sort']);_0x3dfced[_0x2e3e('0x3b')]=qs['filters'](_['pick'](_0x3418d3[_0x2e3e('0x32')],_0x42c0c9[_0x2e3e('0x33')]));if(_0x3418d3[_0x2e3e('0x32')][_0x2e3e('0x3d')]){_0x3dfced[_0x2e3e('0x3b')]=_[_0x2e3e('0x3e')](_0x3dfced[_0x2e3e('0x3b')],{'$or':_[_0x2e3e('0x2c')](_0x3dfced['attributes'],function(_0x320d0a){var _0x444474={};_0x444474[_0x320d0a]={'$like':'%'+_0x3418d3[_0x2e3e('0x32')][_0x2e3e('0x3d')]+'%'};return _0x444474;})});}_0x3dfced=_[_0x2e3e('0x3e')]({},_0x3dfced,_0x3418d3[_0x2e3e('0x40')]);return _0x3cd7b2[_0x2e3e('0x52')](_0x3dfced);}})['then'](function(_0x1c1a52){if(_0x1c1a52){_0x237eee=_0x1c1a52[_0x2e3e('0x50')];if(!_0x3418d3[_0x2e3e('0x32')][_0x2e3e('0x37')]('nolimit')){_0x3dfced[_0x2e3e('0x1e')]=qs['limit'](_0x3418d3[_0x2e3e('0x32')][_0x2e3e('0x1e')]);_0x3dfced['offset']=qs['offset'](_0x3418d3[_0x2e3e('0x32')][_0x2e3e('0x1c')]);}return _0x3cd7b2[_0x2e3e('0x52')](_0x3dfced);}})[_0x2e3e('0x26')](function(_0x131057){if(_0x131057){return _0x131057?{'count':_0x237eee,'rows':_0x131057}:null;}})[_0x2e3e('0x26')](respondWithResult(_0x3b9f3d,null))[_0x2e3e('0x44')](handleError(_0x3b9f3d,null));};exports[_0x2e3e('0x54')]=function(_0x3600e3,_0x1e6924,_0x542457){if(_0x3600e3['body']['id']){delete _0x3600e3[_0x2e3e('0x4a')]['id'];}return db[_0x2e3e('0x2d')][_0x2e3e('0x4c')]({'where':{'id':_0x3600e3['params']['id']}})['then'](handleEntityNotFound(_0x1e6924,null))[_0x2e3e('0x26')](function(_0x24778d){if(_0x24778d){return _0x24778d[_0x2e3e('0x54')](_0x3600e3[_0x2e3e('0x4a')][_0x2e3e('0x55')]||[]);}return null;})[_0x2e3e('0x26')](respondWithResult(_0x1e6924,null))[_0x2e3e('0x44')](handleError(_0x1e6924,null));};
\ No newline at end of file
index 0218f7f..f90f149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4458=['rimraf','../../config/environment','./intDeskConfiguration.attributes','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x35b8ea,_0x360bf5){var _0x266705=function(_0x55ec5a){while(--_0x55ec5a){_0x35b8ea['push'](_0x35b8ea['shift']());}};_0x266705(++_0x360bf5);}(_0x4458,0x1e4));var _0x8445=function(_0x554274,_0x1187d7){_0x554274=_0x554274-0x0;var _0x213f90=_0x4458[_0x554274];return _0x213f90;};'use strict';var _=require(_0x8445('0x0'));var util=require(_0x8445('0x1'));var logger=require(_0x8445('0x2'))(_0x8445('0x3'));var moment=require(_0x8445('0x4'));var BPromise=require(_0x8445('0x5'));var rp=require(_0x8445('0x6'));var fs=require('fs');var path=require(_0x8445('0x7'));var rimraf=require(_0x8445('0x8'));var config=require(_0x8445('0x9'));var attributes=require(_0x8445('0xa'));module['exports']=function(_0x103e14,_0x1706bf){return _0x103e14[_0x8445('0xb')]('DeskConfiguration',attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4721=['DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x3b6f58,_0x5870de){var _0x987c61=function(_0x3a9281){while(--_0x3a9281){_0x3b6f58['push'](_0x3b6f58['shift']());}};_0x987c61(++_0x5870de);}(_0x4721,0x18e));var _0x1472=function(_0xf2662b,_0x4d8f41){_0xf2662b=_0xf2662b-0x0;var _0x257dc7=_0x4721[_0xf2662b];return _0x257dc7;};'use strict';var _=require(_0x1472('0x0'));var util=require(_0x1472('0x1'));var logger=require(_0x1472('0x2'))(_0x1472('0x3'));var moment=require(_0x1472('0x4'));var BPromise=require('bluebird');var rp=require(_0x1472('0x5'));var fs=require('fs');var path=require(_0x1472('0x6'));var rimraf=require(_0x1472('0x7'));var config=require(_0x1472('0x8'));var attributes=require('./intDeskConfiguration.attributes');module['exports']=function(_0x46d944,_0x5b955b){return _0x46d944['define'](_0x1472('0x9'),attributes,{'tableName':_0x1472('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1a4135e..73672c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2c6=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','then','info','DeskConfiguration,\x20%s,\x20%s','DeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x204aa7,_0x1038f1){var _0x2ce14d=function(_0xdb5bca){while(--_0xdb5bca){_0x204aa7['push'](_0x204aa7['shift']());}};_0x2ce14d(++_0x1038f1);}(_0xa2c6,0x1bb));var _0x6a2c=function(_0x30bd4d,_0x50eb60){_0x30bd4d=_0x30bd4d-0x0;var _0x306915=_0xa2c6[_0x30bd4d];return _0x306915;};'use strict';var _=require(_0x6a2c('0x0'));var util=require('util');var moment=require(_0x6a2c('0x1'));var BPromise=require(_0x6a2c('0x2'));var rs=require(_0x6a2c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6a2c('0x4'));var logger=require(_0x6a2c('0x5'))(_0x6a2c('0x6'));var config=require(_0x6a2c('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x249a70,_0x10f543,_0x135701){return new BPromise(function(_0x105944,_0x44a130){return client['request'](_0x249a70,_0x135701)[_0x6a2c('0x8')](function(_0x4c943a){logger[_0x6a2c('0x9')](_0x6a2c('0xa'),_0x10f543,'request\x20sent');logger['debug'](_0x6a2c('0xb'),_0x10f543,_0x6a2c('0xc'),JSON[_0x6a2c('0xd')](_0x4c943a));if(_0x4c943a[_0x6a2c('0xe')]){if(_0x4c943a['error'][_0x6a2c('0xf')]===0x1f4){logger['error'](_0x6a2c('0xa'),_0x10f543,_0x4c943a[_0x6a2c('0xe')][_0x6a2c('0x10')]);return _0x44a130(_0x4c943a[_0x6a2c('0xe')][_0x6a2c('0x10')]);}logger[_0x6a2c('0xe')](_0x6a2c('0xa'),_0x10f543,_0x4c943a['error'][_0x6a2c('0x10')]);return _0x105944(_0x4c943a[_0x6a2c('0xe')][_0x6a2c('0x10')]);}else{logger[_0x6a2c('0x9')](_0x6a2c('0xa'),_0x10f543,_0x6a2c('0xc'));_0x105944(_0x4c943a[_0x6a2c('0x11')]['message']);}})[_0x6a2c('0x12')](function(_0x456a62){logger[_0x6a2c('0xe')](_0x6a2c('0xa'),_0x10f543,_0x456a62);_0x44a130(_0x456a62);});});}
\ No newline at end of file
+var _0xce14=['code','message','result','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x53b69e,_0x38795c){var _0x10a92b=function(_0x21e92b){while(--_0x21e92b){_0x53b69e['push'](_0x53b69e['shift']());}};_0x10a92b(++_0x38795c);}(_0xce14,0x17f));var _0x4ce1=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xce14[_0x5ddb1c];return _0x354adc;};'use strict';var _=require('lodash');var util=require(_0x4ce1('0x0'));var moment=require('moment');var BPromise=require(_0x4ce1('0x1'));var rs=require(_0x4ce1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4ce1('0x3'))['db'];var utils=require(_0x4ce1('0x4'));var logger=require(_0x4ce1('0x5'))(_0x4ce1('0x6'));var config=require(_0x4ce1('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4ce1('0x8')][_0x4ce1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f603d,_0x2b9923,_0x539c1d){return new BPromise(function(_0x256648,_0x2beed4){return client[_0x4ce1('0xa')](_0x1f603d,_0x539c1d)['then'](function(_0x1b5bd8){logger[_0x4ce1('0xb')](_0x4ce1('0xc'),_0x2b9923,_0x4ce1('0xd'));logger['debug'](_0x4ce1('0xe'),_0x2b9923,_0x4ce1('0xd'),JSON[_0x4ce1('0xf')](_0x1b5bd8));if(_0x1b5bd8[_0x4ce1('0x10')]){if(_0x1b5bd8['error'][_0x4ce1('0x11')]===0x1f4){logger[_0x4ce1('0x10')](_0x4ce1('0xc'),_0x2b9923,_0x1b5bd8[_0x4ce1('0x10')][_0x4ce1('0x12')]);return _0x2beed4(_0x1b5bd8[_0x4ce1('0x10')][_0x4ce1('0x12')]);}logger[_0x4ce1('0x10')](_0x4ce1('0xc'),_0x2b9923,_0x1b5bd8[_0x4ce1('0x10')][_0x4ce1('0x12')]);return _0x256648(_0x1b5bd8['error'][_0x4ce1('0x12')]);}else{logger['info'](_0x4ce1('0xc'),_0x2b9923,_0x4ce1('0xd'));_0x256648(_0x1b5bd8[_0x4ce1('0x13')][_0x4ce1('0x12')]);}})['catch'](function(_0x221306){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x2b9923,_0x221306);_0x2beed4(_0x221306);});});}
\ No newline at end of file
index 3a89547..d2e7722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacb5=['../../config/environment','./intDeskField.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x3920ad,_0x1e4f62){var _0x156442=function(_0x38e823){while(--_0x38e823){_0x3920ad['push'](_0x3920ad['shift']());}};_0x156442(++_0x1e4f62);}(_0xacb5,0xe0));var _0x5acb=function(_0x41d432,_0x20e878){_0x41d432=_0x41d432-0x0;var _0x1650f9=_0xacb5[_0x41d432];return _0x1650f9;};'use strict';var multer=require(_0x5acb('0x0'));var util=require('util');var path=require(_0x5acb('0x1'));var timeout=require(_0x5acb('0x2'));var express=require(_0x5acb('0x3'));var router=express[_0x5acb('0x4')]();var fs_extra=require(_0x5acb('0x5'));var auth=require(_0x5acb('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5acb('0x7'));var controller=require(_0x5acb('0x8'));router[_0x5acb('0x9')]('/',auth[_0x5acb('0xa')](),controller[_0x5acb('0xb')]);router[_0x5acb('0x9')]('/:id',auth[_0x5acb('0xa')](),controller[_0x5acb('0xc')]);router[_0x5acb('0xd')]('/',auth['isAuthenticated'](),controller[_0x5acb('0xe')]);router[_0x5acb('0xf')](_0x5acb('0x10'),auth[_0x5acb('0xa')](),controller[_0x5acb('0x11')]);router[_0x5acb('0x12')](_0x5acb('0x10'),auth[_0x5acb('0xa')](),controller[_0x5acb('0x13')]);module[_0x5acb('0x14')]=router;
\ No newline at end of file
+var _0xa212=['../../config/environment','./intDeskField.controller','get','isAuthenticated','index','/:id','create','put','update','delete','exports','multer','util','path','fs-extra'];(function(_0x3fb86e,_0x325662){var _0x1a5d07=function(_0x4a0860){while(--_0x4a0860){_0x3fb86e['push'](_0x3fb86e['shift']());}};_0x1a5d07(++_0x325662);}(_0xa212,0xec));var _0x2a21=function(_0x37eac0,_0x4d0f2d){_0x37eac0=_0x37eac0-0x0;var _0x308f5e=_0xa212[_0x37eac0];return _0x308f5e;};'use strict';var multer=require(_0x2a21('0x0'));var util=require(_0x2a21('0x1'));var path=require(_0x2a21('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x2a21('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x2a21('0x4'));var controller=require(_0x2a21('0x5'));router[_0x2a21('0x6')]('/',auth[_0x2a21('0x7')](),controller[_0x2a21('0x8')]);router['get'](_0x2a21('0x9'),auth[_0x2a21('0x7')](),controller['show']);router['post']('/',auth[_0x2a21('0x7')](),controller[_0x2a21('0xa')]);router[_0x2a21('0xb')]('/:id',auth[_0x2a21('0x7')](),controller[_0x2a21('0xc')]);router[_0x2a21('0xd')](_0x2a21('0x9'),auth[_0x2a21('0x7')](),controller['destroy']);module[_0x2a21('0xe')]=router;
\ No newline at end of file
index dadc381..f527197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ac1=['customVariable','keyValue','STRING','variable','sequelize','exports','ENUM','string'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8ac1,0x7c));var _0x18ac=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8ac1[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x18ac('0x0'));module[_0x18ac('0x1')]={'type':{'type':Sequelize[_0x18ac('0x2')](_0x18ac('0x3'),'variable',_0x18ac('0x4'),_0x18ac('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x18ac('0x6')]},'key':{'type':Sequelize[_0x18ac('0x6')]},'keyType':{'type':Sequelize[_0x18ac('0x2')](_0x18ac('0x3'),_0x18ac('0x7'),_0x18ac('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x18ac('0x6')]},'nameField':{'type':Sequelize[_0x18ac('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x18ac('0x6')]}};
\ No newline at end of file
+var _0x6d95=['string','STRING','ENUM','BOOLEAN','sequelize','variable','customVariable','keyValue'];(function(_0x1d1de1,_0x58d1b6){var _0x2df7e0=function(_0x3008ab){while(--_0x3008ab){_0x1d1de1['push'](_0x1d1de1['shift']());}};_0x2df7e0(++_0x58d1b6);}(_0x6d95,0x144));var _0x56d9=function(_0x529fae,_0x3e71f7){_0x529fae=_0x529fae-0x0;var _0x8971a6=_0x6d95[_0x529fae];return _0x8971a6;};'use strict';var Sequelize=require(_0x56d9('0x0'));module['exports']={'type':{'type':Sequelize['ENUM']('string',_0x56d9('0x1'),_0x56d9('0x2'),_0x56d9('0x3'),'picklist'),'defaultValue':_0x56d9('0x4')},'content':{'type':Sequelize[_0x56d9('0x5')]},'key':{'type':Sequelize[_0x56d9('0x5')]},'keyType':{'type':Sequelize[_0x56d9('0x6')](_0x56d9('0x4'),'variable',_0x56d9('0x2'))},'keyContent':{'type':Sequelize[_0x56d9('0x5')]},'idField':{'type':Sequelize[_0x56d9('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x56d9('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 114289d..5aaf591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27a0=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','count','Content-Range','reject','save','update','then','destroy','error','name','index','DeskField','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','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'];(function(_0x2a8122,_0xd957e){var _0x49a5c7=function(_0x12ab58){while(--_0x12ab58){_0x2a8122['push'](_0x2a8122['shift']());}};_0x49a5c7(++_0xd957e);}(_0x27a0,0xbf));var _0x027a=function(_0x2ff346,_0x111ae8){_0x2ff346=_0x2ff346-0x0;var _0xcd6ffb=_0x27a0[_0x2ff346];return _0xcd6ffb;};'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['DeskField']['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['DeskField'][_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));};
\ No newline at end of file
+var _0xecb2=['nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','show','params','rawAttributes','includeAll','include','find','catch','create','body','update','destroy','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','DeskField','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x45d4eb,_0x3c113a){var _0x4145c4=function(_0x1a9a72){while(--_0x1a9a72){_0x45d4eb['push'](_0x45d4eb['shift']());}};_0x4145c4(++_0x3c113a);}(_0xecb2,0xf6));var _0x2ecb=function(_0xb4e971,_0x4746a5){_0xb4e971=_0xb4e971-0x0;var _0x5aadae=_0xecb2[_0xb4e971];return _0x5aadae;};'use strict';var emlformat=require(_0x2ecb('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2ecb('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2ecb('0x2'));var Mustache=require(_0x2ecb('0x3'));var util=require(_0x2ecb('0x4'));var path=require(_0x2ecb('0x5'));var sox=require(_0x2ecb('0x6'));var csv=require(_0x2ecb('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2ecb('0x8'));var crypto=require(_0x2ecb('0x9'));var jsforce=require(_0x2ecb('0xa'));var deskjs=require(_0x2ecb('0xb'));var toCsv=require(_0x2ecb('0x7'));var querystring=require('querystring');var Papa=require(_0x2ecb('0xc'));var Redis=require(_0x2ecb('0xd'));var authService=require(_0x2ecb('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x2ecb('0xf'));var hardwareService=require(_0x2ecb('0x10'));var logger=require(_0x2ecb('0x11'))(_0x2ecb('0x12'));var utils=require(_0x2ecb('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x2ecb('0x14'));var db=require(_0x2ecb('0x15'))['db'];function respondWithStatusCode(_0x3d74b3,_0x29cb3d){_0x29cb3d=_0x29cb3d||0xcc;return function(_0x59568c){if(_0x59568c){return _0x3d74b3[_0x2ecb('0x16')](_0x29cb3d);}return _0x3d74b3[_0x2ecb('0x17')](_0x29cb3d)['end']();};}function respondWithResult(_0x10bc58,_0x234741){_0x234741=_0x234741||0xc8;return function(_0x48505e){if(_0x48505e){return _0x10bc58[_0x2ecb('0x17')](_0x234741)[_0x2ecb('0x18')](_0x48505e);}};}function respondWithFilteredResult(_0x121f29,_0x3fda3b){return function(_0xe429aa){if(_0xe429aa){var _0x37ea40=typeof _0x3fda3b[_0x2ecb('0x19')]===_0x2ecb('0x1a')&&typeof _0x3fda3b[_0x2ecb('0x1b')]==='undefined';var _0x1c3e62=_0xe429aa[_0x2ecb('0x1c')];var _0x5a1d41=_0x37ea40?0x0:_0x3fda3b[_0x2ecb('0x19')];var _0x4c17cf=_0x37ea40?_0xe429aa[_0x2ecb('0x1c')]:_0x3fda3b[_0x2ecb('0x19')]+_0x3fda3b[_0x2ecb('0x1b')];var _0x3101fa;if(_0x4c17cf>=_0x1c3e62){_0x4c17cf=_0x1c3e62;_0x3101fa=0xc8;}else{_0x3101fa=0xce;}_0x121f29[_0x2ecb('0x17')](_0x3101fa);return _0x121f29[_0x2ecb('0x1d')](_0x2ecb('0x1e'),_0x5a1d41+'-'+_0x4c17cf+'/'+_0x1c3e62)['json'](_0xe429aa);}return null;};}function patchUpdates(_0x8ff004){return function(_0x3aaaae){try{jsonpatch[_0x2ecb('0x1f')](_0x3aaaae,_0x8ff004,!![]);}catch(_0x4c8330){return BPromise[_0x2ecb('0x20')](_0x4c8330);}return _0x3aaaae[_0x2ecb('0x21')]();};}function saveUpdates(_0x4e3d3c,_0x5b9d50){return function(_0x2db610){if(_0x2db610){return _0x2db610['update'](_0x4e3d3c)[_0x2ecb('0x22')](function(_0x2a1834){return _0x2a1834;});}return null;};}function removeEntity(_0xba8379,_0x296ae0){return function(_0x1ff315){if(_0x1ff315){return _0x1ff315['destroy']()['then'](function(){_0xba8379[_0x2ecb('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3fa13f,_0x8f21c){return function(_0x45249b){if(!_0x45249b){_0x3fa13f[_0x2ecb('0x16')](0x194);}return _0x45249b;};}function handleError(_0x2eaaac,_0x20071b){_0x20071b=_0x20071b||0x1f4;return function(_0x171259){logger[_0x2ecb('0x23')](_0x171259[_0x2ecb('0x24')]);if(_0x171259[_0x2ecb('0x25')]){delete _0x171259[_0x2ecb('0x25')];}_0x2eaaac[_0x2ecb('0x17')](_0x20071b)[_0x2ecb('0x26')](_0x171259);};}exports[_0x2ecb('0x27')]=function(_0x75c8cb,_0x45059a){var _0x46092e={},_0x2d5ae3={},_0x294ff5={'count':0x0,'rows':[]};var _0x3e52b7=_[_0x2ecb('0x28')](db[_0x2ecb('0x29')]['rawAttributes'],function(_0x52f9f4){return{'name':_0x52f9f4[_0x2ecb('0x2a')],'type':_0x52f9f4[_0x2ecb('0x2b')][_0x2ecb('0x2c')]};});_0x2d5ae3[_0x2ecb('0x2d')]=_['map'](_0x3e52b7,_0x2ecb('0x25'));_0x2d5ae3[_0x2ecb('0x2e')]=_[_0x2ecb('0x2f')](_0x75c8cb[_0x2ecb('0x2e')]);_0x2d5ae3[_0x2ecb('0x30')]=_[_0x2ecb('0x31')](_0x2d5ae3['model'],_0x2d5ae3[_0x2ecb('0x2e')]);_0x46092e['attributes']=_[_0x2ecb('0x31')](_0x2d5ae3[_0x2ecb('0x2d')],qs[_0x2ecb('0x32')](_0x75c8cb[_0x2ecb('0x2e')][_0x2ecb('0x32')]));_0x46092e[_0x2ecb('0x33')]=_0x46092e[_0x2ecb('0x33')][_0x2ecb('0x34')]?_0x46092e[_0x2ecb('0x33')]:_0x2d5ae3['model'];if(!_0x75c8cb[_0x2ecb('0x2e')][_0x2ecb('0x35')](_0x2ecb('0x36'))){_0x46092e['limit']=qs[_0x2ecb('0x1b')](_0x75c8cb[_0x2ecb('0x2e')][_0x2ecb('0x1b')]);_0x46092e['offset']=qs[_0x2ecb('0x19')](_0x75c8cb[_0x2ecb('0x2e')][_0x2ecb('0x19')]);}_0x46092e[_0x2ecb('0x37')]=qs[_0x2ecb('0x38')](_0x75c8cb[_0x2ecb('0x2e')][_0x2ecb('0x38')]);_0x46092e[_0x2ecb('0x39')]=qs[_0x2ecb('0x30')](_[_0x2ecb('0x3a')](_0x75c8cb['query'],_0x2d5ae3[_0x2ecb('0x30')]),_0x3e52b7);if(_0x75c8cb['query'][_0x2ecb('0x3b')]){_0x46092e[_0x2ecb('0x39')]=_[_0x2ecb('0x3c')](_0x46092e[_0x2ecb('0x39')],{'$or':_[_0x2ecb('0x28')](_0x3e52b7,function(_0x369f44){if(_0x369f44['type']!==_0x2ecb('0x3d')){var _0x2f8f8c={};_0x2f8f8c[_0x369f44[_0x2ecb('0x25')]]={'$like':'%'+_0x75c8cb[_0x2ecb('0x2e')][_0x2ecb('0x3b')]+'%'};return _0x2f8f8c;}})});}_0x46092e=_[_0x2ecb('0x3c')]({},_0x46092e,_0x75c8cb[_0x2ecb('0x3e')]);var _0x361bde={'where':_0x46092e[_0x2ecb('0x39')]};return db[_0x2ecb('0x29')][_0x2ecb('0x1c')](_0x361bde)[_0x2ecb('0x22')](function(_0xa90974){_0x294ff5['count']=_0xa90974;if(_0x75c8cb[_0x2ecb('0x2e')]['includeAll']){_0x46092e['include']=[{'all':!![]}];}return db[_0x2ecb('0x29')][_0x2ecb('0x3f')](_0x46092e);})[_0x2ecb('0x22')](function(_0x818b70){_0x294ff5['rows']=_0x818b70;return _0x294ff5;})['then'](respondWithFilteredResult(_0x45059a,_0x46092e))['catch'](handleError(_0x45059a,null));};exports[_0x2ecb('0x40')]=function(_0x51ea11,_0x5d566e){var _0x231076={'raw':!![],'where':{'id':_0x51ea11[_0x2ecb('0x41')]['id']}},_0x312b35={};_0x312b35[_0x2ecb('0x2d')]=_[_0x2ecb('0x2f')](db[_0x2ecb('0x29')][_0x2ecb('0x42')]);_0x312b35[_0x2ecb('0x2e')]=_[_0x2ecb('0x2f')](_0x51ea11[_0x2ecb('0x2e')]);_0x312b35[_0x2ecb('0x30')]=_['intersection'](_0x312b35[_0x2ecb('0x2d')],_0x312b35[_0x2ecb('0x2e')]);_0x231076['attributes']=_[_0x2ecb('0x31')](_0x312b35[_0x2ecb('0x2d')],qs[_0x2ecb('0x32')](_0x51ea11['query']['fields']));_0x231076[_0x2ecb('0x33')]=_0x231076[_0x2ecb('0x33')][_0x2ecb('0x34')]?_0x231076[_0x2ecb('0x33')]:_0x312b35['model'];if(_0x51ea11[_0x2ecb('0x2e')][_0x2ecb('0x43')]){_0x231076[_0x2ecb('0x44')]=[{'all':!![]}];}_0x231076=_[_0x2ecb('0x3c')]({},_0x231076,_0x51ea11[_0x2ecb('0x3e')]);return db['DeskField'][_0x2ecb('0x45')](_0x231076)[_0x2ecb('0x22')](handleEntityNotFound(_0x5d566e,null))[_0x2ecb('0x22')](respondWithResult(_0x5d566e,null))[_0x2ecb('0x46')](handleError(_0x5d566e,null));};exports['create']=function(_0x6cb307,_0x5b66a7){return db[_0x2ecb('0x29')][_0x2ecb('0x47')](_0x6cb307[_0x2ecb('0x48')],{})['then'](respondWithResult(_0x5b66a7,0xc9))[_0x2ecb('0x46')](handleError(_0x5b66a7,null));};exports[_0x2ecb('0x49')]=function(_0x5f5350,_0x3afd6d){if(_0x5f5350[_0x2ecb('0x48')]['id']){delete _0x5f5350['body']['id'];}return db['DeskField'][_0x2ecb('0x45')]({'where':{'id':_0x5f5350[_0x2ecb('0x41')]['id']}})[_0x2ecb('0x22')](handleEntityNotFound(_0x3afd6d,null))['then'](saveUpdates(_0x5f5350[_0x2ecb('0x48')],null))['then'](respondWithResult(_0x3afd6d,null))['catch'](handleError(_0x3afd6d,null));};exports[_0x2ecb('0x4a')]=function(_0x273286,_0x1642ed){return db['DeskField'][_0x2ecb('0x45')]({'where':{'id':_0x273286['params']['id']}})[_0x2ecb('0x22')](handleEntityNotFound(_0x1642ed,null))[_0x2ecb('0x22')](removeEntity(_0x1642ed,null))[_0x2ecb('0x46')](handleError(_0x1642ed,null));};
\ No newline at end of file
index 4bb1c55..58293a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d7a=['rimraf','./intDeskField.attributes','exports','define','int_desk_fields','desk_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x0d7a,0x1ba));var _0xa0d7=function(_0x46d8b2,_0x3829c4){_0x46d8b2=_0x46d8b2-0x0;var _0x1a351f=_0x0d7a[_0x46d8b2];return _0x1a351f;};'use strict';var _=require(_0xa0d7('0x0'));var util=require('util');var logger=require(_0xa0d7('0x1'))(_0xa0d7('0x2'));var moment=require(_0xa0d7('0x3'));var BPromise=require(_0xa0d7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa0d7('0x5'));var rimraf=require(_0xa0d7('0x6'));var config=require('../../config/environment');var attributes=require(_0xa0d7('0x7'));module[_0xa0d7('0x8')]=function(_0x3ac86c,_0x13754e){return _0x3ac86c[_0xa0d7('0x9')]('DeskField',attributes,{'tableName':_0xa0d7('0xa'),'paranoid':![],'indexes':[{'name':_0xa0d7('0xb'),'fields':[_0xa0d7('0xc'),_0xa0d7('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0245=['rimraf','../../config/environment','exports','desk_unique_index','idField','lodash','request-promise','path'];(function(_0x103c01,_0x5a4ef6){var _0x49f236=function(_0x4a1ee5){while(--_0x4a1ee5){_0x103c01['push'](_0x103c01['shift']());}};_0x49f236(++_0x5a4ef6);}(_0x0245,0xd5));var _0x5024=function(_0x1f650b,_0xeb88e4){_0x1f650b=_0x1f650b-0x0;var _0x425f63=_0x0245[_0x1f650b];return _0x425f63;};'use strict';var _=require(_0x5024('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5024('0x1'));var fs=require('fs');var path=require(_0x5024('0x2'));var rimraf=require(_0x5024('0x3'));var config=require(_0x5024('0x4'));var attributes=require('./intDeskField.attributes');module[_0x5024('0x5')]=function(_0x5e9416,_0x1e69ce){return _0x5e9416['define']('DeskField',attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0x5024('0x6'),'fields':[_0x5024('0x7'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 97b5451..ec34647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb68d=['request','then','info','request\x20sent','debug','error','code','message','DeskField,\x20%s,\x20%s','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0xc9864a,_0x2dab44){var _0x3cf5e8=function(_0xdf6da){while(--_0xdf6da){_0xc9864a['push'](_0xc9864a['shift']());}};_0x3cf5e8(++_0x2dab44);}(_0xb68d,0xf9));var _0xdb68=function(_0x2dcdc0,_0x46021d){_0x2dcdc0=_0x2dcdc0-0x0;var _0x40f3ff=_0xb68d[_0x2dcdc0];return _0x40f3ff;};'use strict';var _=require(_0xdb68('0x0'));var util=require(_0xdb68('0x1'));var moment=require(_0xdb68('0x2'));var BPromise=require('bluebird');var rs=require(_0xdb68('0x3'));var fs=require('fs');var Redis=require(_0xdb68('0x4'));var db=require(_0xdb68('0x5'))['db'];var utils=require(_0xdb68('0x6'));var logger=require(_0xdb68('0x7'))(_0xdb68('0x8'));var config=require(_0xdb68('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xdb68('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x98a7d,_0x236917,_0x2e9339){return new BPromise(function(_0x580af2,_0x5e729e){return client[_0xdb68('0xb')](_0x98a7d,_0x2e9339)[_0xdb68('0xc')](function(_0x1e7930){logger[_0xdb68('0xd')]('DeskField,\x20%s,\x20%s',_0x236917,_0xdb68('0xe'));logger[_0xdb68('0xf')]('DeskField,\x20%s,\x20%s,\x20%s',_0x236917,_0xdb68('0xe'),JSON['stringify'](_0x1e7930));if(_0x1e7930['error']){if(_0x1e7930[_0xdb68('0x10')][_0xdb68('0x11')]===0x1f4){logger[_0xdb68('0x10')]('DeskField,\x20%s,\x20%s',_0x236917,_0x1e7930[_0xdb68('0x10')][_0xdb68('0x12')]);return _0x5e729e(_0x1e7930['error']['message']);}logger[_0xdb68('0x10')]('DeskField,\x20%s,\x20%s',_0x236917,_0x1e7930[_0xdb68('0x10')][_0xdb68('0x12')]);return _0x580af2(_0x1e7930[_0xdb68('0x10')][_0xdb68('0x12')]);}else{logger[_0xdb68('0xd')](_0xdb68('0x13'),_0x236917,'request\x20sent');_0x580af2(_0x1e7930['result'][_0xdb68('0x12')]);}})['catch'](function(_0x18fd0b){logger['error'](_0xdb68('0x13'),_0x236917,_0x18fd0b);_0x5e729e(_0x18fd0b);});});}
\ No newline at end of file
+var _0x1234=['error','code','message','DeskField,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1e422e,_0x3b7ac9){var _0x1b7a09=function(_0x33cfa1){while(--_0x33cfa1){_0x1e422e['push'](_0x1e422e['shift']());}};_0x1b7a09(++_0x3b7ac9);}(_0x1234,0x66));var _0x4123=function(_0x30c896,_0x378763){_0x30c896=_0x30c896-0x0;var _0x1bc852=_0x1234[_0x30c896];return _0x1bc852;};'use strict';var _=require(_0x4123('0x0'));var util=require(_0x4123('0x1'));var moment=require(_0x4123('0x2'));var BPromise=require('bluebird');var rs=require(_0x4123('0x3'));var fs=require('fs');var Redis=require(_0x4123('0x4'));var db=require(_0x4123('0x5'))['db'];var utils=require(_0x4123('0x6'));var logger=require(_0x4123('0x7'))(_0x4123('0x8'));var config=require(_0x4123('0x9'));var jayson=require(_0x4123('0xa'));var client=jayson[_0x4123('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c6ed5,_0x511326,_0x3f2b0d){return new BPromise(function(_0x48dd32,_0x25128f){return client[_0x4123('0xc')](_0x1c6ed5,_0x3f2b0d)[_0x4123('0xd')](function(_0x28a6ef){logger[_0x4123('0xe')]('DeskField,\x20%s,\x20%s',_0x511326,'request\x20sent');logger[_0x4123('0xf')](_0x4123('0x10'),_0x511326,'request\x20sent',JSON[_0x4123('0x11')](_0x28a6ef));if(_0x28a6ef['error']){if(_0x28a6ef[_0x4123('0x12')][_0x4123('0x13')]===0x1f4){logger[_0x4123('0x12')]('DeskField,\x20%s,\x20%s',_0x511326,_0x28a6ef[_0x4123('0x12')][_0x4123('0x14')]);return _0x25128f(_0x28a6ef[_0x4123('0x12')][_0x4123('0x14')]);}logger[_0x4123('0x12')](_0x4123('0x15'),_0x511326,_0x28a6ef[_0x4123('0x12')][_0x4123('0x14')]);return _0x48dd32(_0x28a6ef['error'][_0x4123('0x14')]);}else{logger[_0x4123('0xe')](_0x4123('0x15'),_0x511326,'request\x20sent');_0x48dd32(_0x28a6ef[_0x4123('0x16')][_0x4123('0x14')]);}})[_0x4123('0x17')](function(_0x1f5480){logger[_0x4123('0x12')](_0x4123('0x15'),_0x511326,_0x1f5480);_0x25128f(_0x1f5480);});});}
\ No newline at end of file
index f25f562..8641146 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb53a=['util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','delete','destroy','exports','multer'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xb53a,0x158));var _0xab53=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb53a[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xab53('0x0'));var util=require(_0xab53('0x1'));var path=require(_0xab53('0x2'));var timeout=require(_0xab53('0x3'));var express=require('express');var router=express[_0xab53('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xab53('0x5'));var interaction=require(_0xab53('0x6'));var config=require(_0xab53('0x7'));var controller=require('./intDynamics365Account.controller');router[_0xab53('0x8')]('/',auth[_0xab53('0x9')](),controller[_0xab53('0xa')]);router['get'](_0xab53('0xb'),auth[_0xab53('0x9')](),controller[_0xab53('0xc')]);router[_0xab53('0x8')]('/:id/configurations',auth[_0xab53('0x9')](),controller[_0xab53('0xd')]);router[_0xab53('0x8')](_0xab53('0xe'),auth[_0xab53('0x9')](),controller[_0xab53('0xf')]);router[_0xab53('0x10')]('/',auth[_0xab53('0x9')](),controller['create']);router[_0xab53('0x10')]('/:id/configurations',auth[_0xab53('0x9')](),controller[_0xab53('0x11')]);router[_0xab53('0x12')]('/:id',auth[_0xab53('0x9')](),controller[_0xab53('0x13')]);router[_0xab53('0x14')](_0xab53('0xb'),auth[_0xab53('0x9')](),controller[_0xab53('0x15')]);module[_0xab53('0x16')]=router;
\ No newline at end of file
+var _0xd961=['../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','getFields','post','create','put','/:id','update','delete','destroy','multer','util','path','Router','fs-extra','../../components/interaction/service'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0xd961,0x1f4));var _0x1d96=function(_0x5a2291,_0x3ddda7){_0x5a2291=_0x5a2291-0x0;var _0x10e3f5=_0xd961[_0x5a2291];return _0x10e3f5;};'use strict';var multer=require(_0x1d96('0x0'));var util=require(_0x1d96('0x1'));var path=require(_0x1d96('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1d96('0x3')]();var fs_extra=require(_0x1d96('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1d96('0x5'));var config=require(_0x1d96('0x6'));var controller=require(_0x1d96('0x7'));router[_0x1d96('0x8')]('/',auth[_0x1d96('0x9')](),controller[_0x1d96('0xa')]);router[_0x1d96('0x8')]('/:id',auth[_0x1d96('0x9')](),controller[_0x1d96('0xb')]);router[_0x1d96('0x8')](_0x1d96('0xc'),auth[_0x1d96('0x9')](),controller[_0x1d96('0xd')]);router[_0x1d96('0x8')]('/:id/fields',auth[_0x1d96('0x9')](),controller[_0x1d96('0xe')]);router[_0x1d96('0xf')]('/',auth['isAuthenticated'](),controller[_0x1d96('0x10')]);router[_0x1d96('0xf')](_0x1d96('0xc'),auth[_0x1d96('0x9')](),controller['addConfiguration']);router[_0x1d96('0x11')](_0x1d96('0x12'),auth['isAuthenticated'](),controller[_0x1d96('0x13')]);router[_0x1d96('0x14')](_0x1d96('0x12'),auth['isAuthenticated'](),controller[_0x1d96('0x15')]);module['exports']=router;
\ No newline at end of file
index a139f08..4b16907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb368=['exports','STRING','sequelize'];(function(_0x9510e3,_0x51f1ed){var _0x5c1e15=function(_0x48f888){while(--_0x48f888){_0x9510e3['push'](_0x9510e3['shift']());}};_0x5c1e15(++_0x51f1ed);}(_0xb368,0x68));var _0x8b36=function(_0x486ba4,_0x10deb6){_0x486ba4=_0x486ba4-0x0;var _0x1b2502=_0xb368[_0x486ba4];return _0x1b2502;};'use strict';var Sequelize=require(_0x8b36('0x0'));module[_0x8b36('0x1')]={'name':{'type':Sequelize[_0x8b36('0x2')]},'username':{'type':Sequelize[_0x8b36('0x2')]},'password':{'type':Sequelize[_0x8b36('0x2')]},'remoteUri':{'type':Sequelize[_0x8b36('0x2')]},'tenantId':{'type':Sequelize[_0x8b36('0x2')]},'clientId':{'type':Sequelize[_0x8b36('0x2')]},'clientSecret':{'type':Sequelize[_0x8b36('0x2')]},'serverUrl':{'type':Sequelize[_0x8b36('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x60c1=['STRING'];(function(_0x5948dd,_0x1f6ac8){var _0xb1f8be=function(_0x31a8d2){while(--_0x31a8d2){_0x5948dd['push'](_0x5948dd['shift']());}};_0xb1f8be(++_0x1f6ac8);}(_0x60c1,0x12f));var _0x160c=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x60c1[_0x46e363];return _0x3fb059;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x160c('0x0')]},'password':{'type':Sequelize[_0x160c('0x0')]},'remoteUri':{'type':Sequelize[_0x160c('0x0')]},'tenantId':{'type':Sequelize[_0x160c('0x0')]},'clientId':{'type':Sequelize[_0x160c('0x0')]},'clientSecret':{'type':Sequelize[_0x160c('0x0')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x160c('0x0')]}};
\ No newline at end of file
index f37e474..198b8b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8781=['username','remoteUri','clientId','slice','substring','format','POST','tenantId','password','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','forEach','@odata.type','PicklistAttributeMetadata','push','all','isNil','BooleanAttributeMetadata','lastIndexOf','StringAttributeMetadata','DoubleAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','test','statusCode',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','OptionSet','Options','Label','UserLocalizedLabel','Value','LogicalName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','FalseOption','false','DisplayName',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../components/integrations/configuration','end','status','json','offset','undefined','limit','count','set','Content-Range','save','update','destroy','then','sendStatus','error','stack','name','send','index','rawAttributes','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','order','sort','pick','filter','where','merge','map','options','includeAll','findAll','rows','catch','show','Dynamics365Account','filters','length','include','find','create','body','params','getConfigurations','findOne','nolimit','addConfiguration','AccountId','Subjects','Descriptions','channel','Dynamics365Field','ticketType','incident','Incident','PhoneCall','title','customerid','ownerid','subject','phonenumber','phonecall_activity_parties','accountidyominame','actualserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdonbehalfbyname','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyyominame','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','overriddencreatedon','owneridname','owneridtype','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','resolveby','resolvebykpiidname','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','socialprofileidname','statecode','statuscode','timezoneruleversionnumber','traversedpath','utcconversiontimezonecode','versionnumber','concat'];(function(_0x44774d,_0x27fe98){var _0x282b23=function(_0x3b05d4){while(--_0x3b05d4){_0x44774d['push'](_0x44774d['shift']());}};_0x282b23(++_0x27fe98);}(_0x8781,0x1c8));var _0x1878=function(_0x5bfd0e,_0x3f6ed0){_0x5bfd0e=_0x5bfd0e-0x0;var _0x2ef199=_0x8781[_0x5bfd0e];return _0x2ef199;};'use strict';var emlformat=require(_0x1878('0x0'));var rimraf=require(_0x1878('0x1'));var zipdir=require(_0x1878('0x2'));var jsonpatch=require(_0x1878('0x3'));var rp=require(_0x1878('0x4'));var moment=require(_0x1878('0x5'));var BPromise=require(_0x1878('0x6'));var Mustache=require('mustache');var util=require(_0x1878('0x7'));var path=require(_0x1878('0x8'));var sox=require(_0x1878('0x9'));var csv=require(_0x1878('0xa'));var ejs=require(_0x1878('0xb'));var fs=require('fs');var fs_extra=require(_0x1878('0xc'));var _=require('lodash');var squel=require(_0x1878('0xd'));var crypto=require(_0x1878('0xe'));var jsforce=require(_0x1878('0xf'));var deskjs=require(_0x1878('0x10'));var toCsv=require(_0x1878('0xa'));var querystring=require(_0x1878('0x11'));var Papa=require(_0x1878('0x12'));var Redis=require(_0x1878('0x13'));var authService=require(_0x1878('0x14'));var qs=require(_0x1878('0x15'));var as=require(_0x1878('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1878('0x17'))(_0x1878('0x18'));var utils=require(_0x1878('0x19'));var config=require(_0x1878('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x1878('0x1b'));function respondWithStatusCode(_0x1ed9f0,_0x181e51){_0x181e51=_0x181e51||0xcc;return function(_0x394d1d){if(_0x394d1d){return _0x1ed9f0['sendStatus'](_0x181e51);}return _0x1ed9f0['status'](_0x181e51)[_0x1878('0x1c')]();};}function respondWithResult(_0x396f3a,_0x49d3a1){_0x49d3a1=_0x49d3a1||0xc8;return function(_0x46992e){if(_0x46992e){return _0x396f3a[_0x1878('0x1d')](_0x49d3a1)[_0x1878('0x1e')](_0x46992e);}};}function respondWithFilteredResult(_0x4a5ba9,_0x562902){return function(_0x13e16d){if(_0x13e16d){var _0x450103=typeof _0x562902[_0x1878('0x1f')]===_0x1878('0x20')&&typeof _0x562902[_0x1878('0x21')]===_0x1878('0x20');var _0x1d6d24=_0x13e16d[_0x1878('0x22')];var _0x16c6b2=_0x450103?0x0:_0x562902[_0x1878('0x1f')];var _0x26943f=_0x450103?_0x13e16d['count']:_0x562902['offset']+_0x562902[_0x1878('0x21')];var _0x29c740;if(_0x26943f>=_0x1d6d24){_0x26943f=_0x1d6d24;_0x29c740=0xc8;}else{_0x29c740=0xce;}_0x4a5ba9['status'](_0x29c740);return _0x4a5ba9[_0x1878('0x23')](_0x1878('0x24'),_0x16c6b2+'-'+_0x26943f+'/'+_0x1d6d24)[_0x1878('0x1e')](_0x13e16d);}return null;};}function patchUpdates(_0x387f5){return function(_0x383956){try{jsonpatch['apply'](_0x383956,_0x387f5,!![]);}catch(_0x1ece6a){return BPromise['reject'](_0x1ece6a);}return _0x383956[_0x1878('0x25')]();};}function saveUpdates(_0x45e2b6,_0x2bc65b){return function(_0x2e9939){if(_0x2e9939){return _0x2e9939[_0x1878('0x26')](_0x45e2b6)['then'](function(_0x461905){return _0x461905;});}return null;};}function removeEntity(_0x10ce95,_0x215e59){return function(_0x2ce343){if(_0x2ce343){return _0x2ce343[_0x1878('0x27')]()[_0x1878('0x28')](function(){_0x10ce95[_0x1878('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x122c65,_0x10ab5c){return function(_0x243329){if(!_0x243329){_0x122c65[_0x1878('0x29')](0x194);}return _0x243329;};}function handleError(_0x46f5b7,_0x57580b){_0x57580b=_0x57580b||0x1f4;return function(_0x2f7e55){logger[_0x1878('0x2a')](_0x2f7e55[_0x1878('0x2b')]);if(_0x2f7e55[_0x1878('0x2c')]){delete _0x2f7e55['name'];}_0x46f5b7[_0x1878('0x1d')](_0x57580b)[_0x1878('0x2d')](_0x2f7e55);};}exports[_0x1878('0x2e')]=function(_0x31b2ba,_0x1eda2b){var _0x45e3db={},_0x49112c={},_0x35750c={'count':0x0,'rows':[]};var _0x6ad492=_['map'](db['Dynamics365Account'][_0x1878('0x2f')],function(_0x4f92eb){return{'name':_0x4f92eb['fieldName'],'type':_0x4f92eb[_0x1878('0x30')][_0x1878('0x31')]};});_0x49112c[_0x1878('0x32')]=_['map'](_0x6ad492,_0x1878('0x2c'));_0x49112c[_0x1878('0x33')]=_[_0x1878('0x34')](_0x31b2ba[_0x1878('0x33')]);_0x49112c['filters']=_[_0x1878('0x35')](_0x49112c[_0x1878('0x32')],_0x49112c[_0x1878('0x33')]);_0x45e3db['attributes']=_['intersection'](_0x49112c[_0x1878('0x32')],qs['fields'](_0x31b2ba[_0x1878('0x33')][_0x1878('0x36')]));_0x45e3db['attributes']=_0x45e3db['attributes']['length']?_0x45e3db[_0x1878('0x37')]:_0x49112c[_0x1878('0x32')];if(!_0x31b2ba[_0x1878('0x33')][_0x1878('0x38')]('nolimit')){_0x45e3db[_0x1878('0x21')]=qs['limit'](_0x31b2ba[_0x1878('0x33')][_0x1878('0x21')]);_0x45e3db['offset']=qs[_0x1878('0x1f')](_0x31b2ba[_0x1878('0x33')]['offset']);}_0x45e3db[_0x1878('0x39')]=qs[_0x1878('0x3a')](_0x31b2ba['query'][_0x1878('0x3a')]);_0x45e3db['where']=qs['filters'](_[_0x1878('0x3b')](_0x31b2ba[_0x1878('0x33')],_0x49112c['filters']),_0x6ad492);if(_0x31b2ba[_0x1878('0x33')][_0x1878('0x3c')]){_0x45e3db[_0x1878('0x3d')]=_[_0x1878('0x3e')](_0x45e3db['where'],{'$or':_[_0x1878('0x3f')](_0x6ad492,function(_0x1b6f2d){if(_0x1b6f2d[_0x1878('0x30')]!=='VIRTUAL'){var _0x4bbb1c={};_0x4bbb1c[_0x1b6f2d[_0x1878('0x2c')]]={'$like':'%'+_0x31b2ba[_0x1878('0x33')][_0x1878('0x3c')]+'%'};return _0x4bbb1c;}})});}_0x45e3db=_['merge']({},_0x45e3db,_0x31b2ba[_0x1878('0x40')]);var _0x3099e0={'where':_0x45e3db[_0x1878('0x3d')]};return db['Dynamics365Account'][_0x1878('0x22')](_0x3099e0)['then'](function(_0x2759ec){_0x35750c['count']=_0x2759ec;if(_0x31b2ba['query'][_0x1878('0x41')]){_0x45e3db['include']=[{'all':!![]}];}return db['Dynamics365Account'][_0x1878('0x42')](_0x45e3db);})[_0x1878('0x28')](function(_0x35c38e){_0x35750c[_0x1878('0x43')]=_0x35c38e;return _0x35750c;})[_0x1878('0x28')](respondWithFilteredResult(_0x1eda2b,_0x45e3db))[_0x1878('0x44')](handleError(_0x1eda2b,null));};exports[_0x1878('0x45')]=function(_0x53941c,_0x5c646f){var _0x5ceb54={'raw':![],'where':{'id':_0x53941c['params']['id']}},_0x4722ef={};_0x4722ef[_0x1878('0x32')]=_[_0x1878('0x34')](db[_0x1878('0x46')]['rawAttributes']);_0x4722ef[_0x1878('0x33')]=_[_0x1878('0x34')](_0x53941c[_0x1878('0x33')]);_0x4722ef[_0x1878('0x47')]=_[_0x1878('0x35')](_0x4722ef['model'],_0x4722ef['query']);_0x5ceb54[_0x1878('0x37')]=_[_0x1878('0x35')](_0x4722ef[_0x1878('0x32')],qs[_0x1878('0x36')](_0x53941c[_0x1878('0x33')]['fields']));_0x5ceb54[_0x1878('0x37')]=_0x5ceb54[_0x1878('0x37')][_0x1878('0x48')]?_0x5ceb54[_0x1878('0x37')]:_0x4722ef['model'];if(_0x53941c[_0x1878('0x33')][_0x1878('0x41')]){_0x5ceb54[_0x1878('0x49')]=[{'all':!![]}];}_0x5ceb54=_[_0x1878('0x3e')]({},_0x5ceb54,_0x53941c[_0x1878('0x40')]);return db[_0x1878('0x46')][_0x1878('0x4a')](_0x5ceb54)[_0x1878('0x28')](handleEntityNotFound(_0x5c646f,null))['then'](respondWithResult(_0x5c646f,null))[_0x1878('0x44')](handleError(_0x5c646f,null));};exports[_0x1878('0x4b')]=function(_0x503e7a,_0x2cc185){return db[_0x1878('0x46')][_0x1878('0x4b')](_0x503e7a[_0x1878('0x4c')],{})[_0x1878('0x28')](respondWithResult(_0x2cc185,0xc9))['catch'](handleError(_0x2cc185,null));};exports[_0x1878('0x26')]=function(_0x4f2ac1,_0x43a32f){if(_0x4f2ac1[_0x1878('0x4c')]['id']){delete _0x4f2ac1[_0x1878('0x4c')]['id'];}return db[_0x1878('0x46')][_0x1878('0x4a')]({'where':{'id':_0x4f2ac1[_0x1878('0x4d')]['id']}})[_0x1878('0x28')](handleEntityNotFound(_0x43a32f,null))[_0x1878('0x28')](saveUpdates(_0x4f2ac1[_0x1878('0x4c')],null))[_0x1878('0x28')](respondWithResult(_0x43a32f,null))[_0x1878('0x44')](handleError(_0x43a32f,null));};exports[_0x1878('0x27')]=function(_0x4eae25,_0x2cefa6){return db[_0x1878('0x46')][_0x1878('0x4a')]({'where':{'id':_0x4eae25[_0x1878('0x4d')]['id']}})[_0x1878('0x28')](handleEntityNotFound(_0x2cefa6,null))[_0x1878('0x28')](removeEntity(_0x2cefa6,null))[_0x1878('0x44')](handleError(_0x2cefa6,null));};exports[_0x1878('0x4e')]=function(_0x1d8b91,_0x2fcbcd,_0x134878){var _0x1e5a19={};var _0x169399={};var _0x3b952f;var _0x56870c;return db[_0x1878('0x46')][_0x1878('0x4f')]({'where':{'id':_0x1d8b91['params']['id']}})[_0x1878('0x28')](handleEntityNotFound(_0x2fcbcd,null))[_0x1878('0x28')](function(_0x59864b){if(_0x59864b){_0x3b952f=_0x59864b;_0x169399[_0x1878('0x32')]=_[_0x1878('0x34')](db['Dynamics365Configuration']['rawAttributes']);_0x169399['query']=_['keys'](_0x1d8b91['query']);_0x169399[_0x1878('0x47')]=_[_0x1878('0x35')](_0x169399[_0x1878('0x32')],_0x169399[_0x1878('0x33')]);_0x1e5a19[_0x1878('0x37')]=_[_0x1878('0x35')](_0x169399[_0x1878('0x32')],qs['fields'](_0x1d8b91[_0x1878('0x33')][_0x1878('0x36')]));_0x1e5a19[_0x1878('0x37')]=_0x1e5a19[_0x1878('0x37')][_0x1878('0x48')]?_0x1e5a19['attributes']:_0x169399[_0x1878('0x32')];_0x1e5a19[_0x1878('0x39')]=qs['sort'](_0x1d8b91[_0x1878('0x33')][_0x1878('0x3a')]);_0x1e5a19[_0x1878('0x3d')]=qs[_0x1878('0x47')](_[_0x1878('0x3b')](_0x1d8b91[_0x1878('0x33')],_0x169399['filters']));if(_0x1d8b91[_0x1878('0x33')]['filter']){_0x1e5a19['where']=_[_0x1878('0x3e')](_0x1e5a19[_0x1878('0x3d')],{'$or':_[_0x1878('0x3f')](_0x1e5a19[_0x1878('0x37')],function(_0x7cbe3a){var _0x3f4181={};_0x3f4181[_0x7cbe3a]={'$like':'%'+_0x1d8b91[_0x1878('0x33')][_0x1878('0x3c')]+'%'};return _0x3f4181;})});}_0x1e5a19=_['merge']({},_0x1e5a19,_0x1d8b91['options']);return _0x3b952f['getConfigurations'](_0x1e5a19);}})[_0x1878('0x28')](function(_0x16139f){if(_0x16139f){_0x56870c=_0x16139f[_0x1878('0x48')];if(!_0x1d8b91['query']['hasOwnProperty'](_0x1878('0x50'))){_0x1e5a19['limit']=qs['limit'](_0x1d8b91[_0x1878('0x33')]['limit']);_0x1e5a19['offset']=qs[_0x1878('0x1f')](_0x1d8b91['query']['offset']);}return _0x3b952f[_0x1878('0x4e')](_0x1e5a19);}})['then'](function(_0x3ab974){if(_0x3ab974){return _0x3ab974?{'count':_0x56870c,'rows':_0x3ab974}:null;}})[_0x1878('0x28')](respondWithResult(_0x2fcbcd,null))['catch'](handleError(_0x2fcbcd,null));};exports[_0x1878('0x51')]=function(_0x196803,_0x13e658,_0xc788a7){if(_0x196803[_0x1878('0x4c')]['id']){delete _0x196803[_0x1878('0x4c')]['id'];}return db[_0x1878('0x46')][_0x1878('0x4f')]({'where':{'id':_0x196803['params']['id']}})[_0x1878('0x28')](handleEntityNotFound(_0x13e658,null))['then'](function(_0x15f18f){if(_0x15f18f){_0x196803[_0x1878('0x4c')][_0x1878('0x52')]=_0x15f18f['id'];_0x196803[_0x1878('0x4c')][_0x1878('0x53')]=integrations['getSubjects'](_0x196803[_0x1878('0x4c')]['channel'],_0x196803[_0x1878('0x4c')]['type']);_0x196803[_0x1878('0x4c')][_0x1878('0x54')]=integrations['getDescriptions'](_0x196803[_0x1878('0x4c')][_0x1878('0x55')],_0x196803[_0x1878('0x4c')][_0x1878('0x30')]);return db['Dynamics365Configuration'][_0x1878('0x4b')](_0x196803[_0x1878('0x4c')],{'include':[{'model':db[_0x1878('0x56')],'as':_0x1878('0x53')},{'model':db[_0x1878('0x56')],'as':'Descriptions'}]});}return null;})[_0x1878('0x28')](respondWithResult(_0x13e658,null))[_0x1878('0x44')](handleError(_0x13e658,null));};exports['getFields']=function(_0x4c875b,_0xd3915b,_0x50a506){var _0x356525=_0x4c875b[_0x1878('0x33')][_0x1878('0x57')];var _0x216ecd=_0x356525===_0x1878('0x58')?_0x1878('0x59'):_0x1878('0x5a');var _0x298f8e='';var _0x19061e='';var _0x71fbbf='';var _0x2ec421='';var _0x11b692='';var _0x17841b='';var _0x611ba7='';var _0x52f298='';var _0x462615=[_0x1878('0x5b'),'description',_0x1878('0x5c'),_0x1878('0x5d'),'caseorigincode',_0x1878('0x5e'),_0x1878('0x5f'),'regardingobjectid','directioncode',_0x1878('0x60')];var _0x36d8b3=['accountidname',_0x1878('0x61'),_0x1878('0x62'),'billedserviceunits',_0x1878('0x63'),_0x1878('0x64'),_0x1878('0x65'),_0x1878('0x66'),'createdbyexternalpartyname',_0x1878('0x67'),_0x1878('0x68'),_0x1878('0x69'),'createdon',_0x1878('0x6a'),'createdonbehalfbyyominame',_0x1878('0x6b'),_0x1878('0x6c'),_0x1878('0x6d'),_0x1878('0x6e'),_0x1878('0x6f'),_0x1878('0x70'),_0x1878('0x71'),_0x1878('0x72'),_0x1878('0x73'),_0x1878('0x74'),_0x1878('0x75'),_0x1878('0x76'),_0x1878('0x77'),_0x1878('0x78'),'lastonholdtime',_0x1878('0x79'),'modifiedbyexternalpartyname',_0x1878('0x7a'),'modifiedbyname',_0x1878('0x7b'),_0x1878('0x7c'),_0x1878('0x7d'),_0x1878('0x7e'),_0x1878('0x7f'),_0x1878('0x80'),_0x1878('0x81'),'onholdtime',_0x1878('0x82'),_0x1878('0x83'),_0x1878('0x84'),'owneridyominame',_0x1878('0x85'),_0x1878('0x86'),_0x1878('0x87'),_0x1878('0x88'),'productidname','productserialnumber',_0x1878('0x89'),_0x1878('0x8a'),'responseby',_0x1878('0x8b'),_0x1878('0x8c'),_0x1878('0x8d'),'slainvokedidname','slaname',_0x1878('0x8e'),_0x1878('0x8f'),_0x1878('0x90'),'subjectidname','ticketnumber',_0x1878('0x91'),'transactioncurrencyidname',_0x1878('0x92'),_0x1878('0x93'),_0x1878('0x94')];var _0x295fc7=_0x462615[_0x1878('0x95')](_0x36d8b3);return db[_0x1878('0x46')][_0x1878('0x4f')]({'where':{'id':_0x4c875b[_0x1878('0x4d')]['id']},'attributes':['id',_0x1878('0x96'),'password',_0x1878('0x97'),'tenantId',_0x1878('0x98'),'clientSecret']})[_0x1878('0x28')](handleEntityNotFound(_0xd3915b,null))['then'](function(_0x4ace88){if(_0x4ace88){_0x52f298=_0x4ace88[_0x1878('0x97')];var _0x2a525b=_0x52f298[_0x1878('0x99')](-0x1);if(_0x2a525b==='/'){_0x52f298=_0x52f298[_0x1878('0x9a')](0x0,_0x52f298['lastIndexOf'](_0x2a525b));}_0x611ba7=util[_0x1878('0x9b')]('%s/api/data/v9.0/',_0x52f298);var _0x133e40={'method':_0x1878('0x9c'),'uri':'https://login.microsoftonline.com/'+_0x4ace88[_0x1878('0x9d')]+'/oauth2/token','form':{'client_id':_0x4ace88['clientId'],'resource':_0x52f298,'username':_0x4ace88['username'],'password':_0x4ace88[_0x1878('0x9e')],'grant_type':_0x1878('0x9e'),'client_secret':_0x4ace88['clientSecret']},'json':!![]};return rp(_0x133e40);}})[_0x1878('0x28')](function(_0x3834e3){_0x17841b=_0x3834e3[_0x1878('0x9f')];var _0x518702={'method':_0x1878('0xa0'),'uri':encodeURI(_0x611ba7+_0x1878('0xa1')+_0x216ecd+'\x27'),'headers':{'Authorization':_0x1878('0xa2')+_0x17841b,'If-None-Match':null,'OData-Version':_0x1878('0xa3')},'json':!![]};return rp(_0x518702);})[_0x1878('0x28')](function(_0x2a2a08){var _0x5480ee=_0x2a2a08[_0x1878('0xa4')][0x0];var _0x73580d=_0x5480ee[_0x1878('0xa5')];var _0x2bb0d8={'method':_0x1878('0xa0'),'uri':_0x611ba7+_0x1878('0xa6')+_0x73580d+_0x1878('0xa7'),'headers':{'Authorization':_0x1878('0xa2')+_0x17841b,'If-None-Match':null,'OData-Version':_0x1878('0xa3')},'json':!![]};return rp(_0x2bb0d8);})[_0x1878('0x28')](function(_0x6a3edb){_0x298f8e=_0x6a3edb;_0x19061e=_0x298f8e[_0x1878('0xa8')];_0x19061e=_[_0x1878('0xa9')](_0x19061e,function(_0x3f23da){return!_0x295fc7['includes'](_0x3f23da['LogicalName']);});var _0xbbb72b=[];var _0x113d35=[];_0x19061e[_0x1878('0xaa')](function(_0x16feda){if(_0x16feda[_0x1878('0xab')]){var _0x4f0bbd=_0x16feda[_0x1878('0xab')][_0x1878('0x9a')](_0x16feda[_0x1878('0xab')]['lastIndexOf']('.')+0x1);if(_0x4f0bbd===_0x1878('0xac')){_0xbbb72b[_0x1878('0xad')](getSelectList(_0x611ba7,_0x356525,_0x113d35,_0x298f8e[_0x1878('0xa5')],_0x16feda[_0x1878('0xa5')],_0x17841b));}}});return Promise[_0x1878('0xae')](_0xbbb72b);})[_0x1878('0x28')](function(_0x47e793){_0x71fbbf=_0x47e793[0x0];var _0xa8b936=[];var _0x415ceb=[];_0x19061e[_0x1878('0xaa')](function(_0x65987f){if(!_[_0x1878('0xaf')](_0x65987f['@odata.type'])){var _0x3c4672=_0x65987f['@odata.type'][_0x1878('0x9a')](_0x65987f['@odata.type']['lastIndexOf']('.')+0x1);if(_0x3c4672===_0x1878('0xb0')){_0xa8b936[_0x1878('0xad')](getBooleanList(_0x611ba7,_0x356525,_0x415ceb,_0x298f8e[_0x1878('0xa5')],_0x65987f[_0x1878('0xa5')],_0x17841b));}}});return Promise[_0x1878('0xae')](_0xa8b936);})[_0x1878('0x28')](function(_0x4171cf){_0x2ec421=_0x4171cf[0x0];var _0x493cd6=[];var _0x7c5a89=[];_0x19061e[_0x1878('0xaa')](function(_0x31526c){if(_0x31526c[_0x1878('0xab')]){var _0x5cbb0c=_0x31526c[_0x1878('0xab')][_0x1878('0x9a')](_0x31526c['@odata.type'][_0x1878('0xb1')]('.')+0x1);if(_0x5cbb0c===_0x1878('0xb2')||_0x5cbb0c===_0x1878('0xb3')||_0x5cbb0c==='BigIntAttributeMetadata'||_0x5cbb0c===_0x1878('0xb4')||_0x5cbb0c==='MemoAttributeMetadata'||_0x5cbb0c===_0x1878('0xb5')||_0x5cbb0c==='StatusAttributeMetadata'||_0x5cbb0c===_0x1878('0xb6')||_0x5cbb0c===_0x1878('0xb7')||_0x5cbb0c==='DecimalAttributeMetadata'){_0x493cd6[_0x1878('0xad')](getInputList(_0x611ba7,_0x356525,_0x5cbb0c,_0x7c5a89,_0x298f8e[_0x1878('0xa5')],_0x31526c[_0x1878('0xa5')],_0x17841b));}}});return Promise[_0x1878('0xae')](_0x493cd6);})[_0x1878('0x28')](function(_0x4e8423){_0x11b692=_0x4e8423[0x0];var _0x33058d=_0x71fbbf[_0x1878('0x95')](_0x2ec421)[_0x1878('0x95')](_0x11b692);var _0x3d5e52={'count':_0x33058d[_0x1878('0x48')],'rows':_0x33058d};return _0x3d5e52;})[_0x1878('0x28')](respondWithResult(_0xd3915b,null))[_0x1878('0x44')](function(_0x5d5dea){var _0x43ed64=_0x4c875b[_0x1878('0x33')][_0x1878('0xb8')]?0x1f4:_0x5d5dea['statusCode']||0x1f4;logger[_0x1878('0x2a')](_0x5d5dea['stack']);delete _0x5d5dea[_0x1878('0x2c')];if(_0x43ed64===0x191){_0x43ed64=0x190;}_0xd3915b[_0x1878('0x1d')](_0x43ed64)['send'](_0x4c875b[_0x1878('0x33')][_0x1878('0xb8')]?{'message':'Wrong\x20credentials','statusCode':_0x5d5dea[_0x1878('0xb9')]}:_0x5d5dea);});};function getSelectList(_0x2a7299,_0x3ac0ac,_0x58da41,_0x1aeaf,_0x1d7785,_0x2fc03b){var _0x2faf19={'method':_0x1878('0xa0'),'uri':_0x2a7299+_0x1878('0xa6')+_0x1aeaf+_0x1878('0xba')+_0x1d7785+_0x1878('0xbb')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0x1878('0xa2')+_0x2fc03b,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2faf19)['then'](function(_0x482cdf){var _0x15209e=[];var _0x138cf0=_0x482cdf[_0x1878('0xbc')][_0x1878('0xbd')];_0x138cf0[_0x1878('0xaa')](function(_0xbb39f1){_0x15209e[_0x1878('0xad')]({'name':_0xbb39f1[_0x1878('0xbe')][_0x1878('0xbf')][_0x1878('0xbe')],'value':String(_0xbb39f1[_0x1878('0xc0')])});});var _0x1b729b={'id':_0x3ac0ac+'_'+_0x482cdf[_0x1878('0xc1')],'name':_0x482cdf['DisplayName']['UserLocalizedLabel']['Label'],'custom':![],'options':_0x15209e};_0x58da41[_0x1878('0xad')](_0x1b729b);return _0x58da41;});}function getBooleanList(_0x5dacf9,_0x30e065,_0x4db6a0,_0x175584,_0x586e10,_0x56e589){var _0x1deb1c={'method':_0x1878('0xa0'),'uri':_0x5dacf9+'EntityDefinitions('+_0x175584+_0x1878('0xba')+_0x586e10+_0x1878('0xc2'),'headers':{'Authorization':_0x1878('0xa2')+_0x56e589,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1deb1c)[_0x1878('0x28')](function(_0x50cf2f){var _0xbc6118=[];_0xbc6118[_0x1878('0xad')]({'name':_0x50cf2f[_0x1878('0xbc')][_0x1878('0xc3')][_0x1878('0xbe')][_0x1878('0xbf')][_0x1878('0xbe')],'value':_0x1878('0xc4')},{'name':_0x50cf2f[_0x1878('0xbc')][_0x1878('0xc5')][_0x1878('0xbe')][_0x1878('0xbf')][_0x1878('0xbe')],'value':_0x1878('0xc6')});var _0x5a8601={'id':_0x30e065+'_'+_0x50cf2f[_0x1878('0xc1')],'name':_0x50cf2f[_0x1878('0xc7')]['UserLocalizedLabel'][_0x1878('0xbe')],'custom':![],'options':_0xbc6118};_0x4db6a0[_0x1878('0xad')](_0x5a8601);return _0x4db6a0;});}function getInputList(_0x289d98,_0x4f9d42,_0x533cff,_0xb95c3,_0x1d2f58,_0x3f2dc0,_0x3495fb){var _0x2cd5d0={'method':_0x1878('0xa0'),'uri':_0x289d98+_0x1878('0xa6')+_0x1d2f58+_0x1878('0xba')+_0x3f2dc0+_0x1878('0xc8')+_0x533cff+_0x1878('0xc9'),'headers':{'Authorization':_0x1878('0xa2')+_0x3495fb,'If-None-Match':null,'OData-Version':_0x1878('0xa3')},'json':!![]};return rp(_0x2cd5d0)[_0x1878('0x28')](function(_0x32d75b){var _0x5376f5={'id':_0x4f9d42+'_'+_0x32d75b['LogicalName'],'name':_0x32d75b['DisplayName'][_0x1878('0xbf')]?_0x32d75b[_0x1878('0xc7')][_0x1878('0xbf')][_0x1878('0xbe')]:_0x32d75b[_0x1878('0xc1')],'custom':![],'options':[]};_0xb95c3[_0x1878('0xad')](_0x5376f5);return _0xb95c3;});}
\ No newline at end of file
+var _0x36f1=['end','json','undefined','limit','count','set','Content-Range','apply','update','then','stack','name','index','map','Dynamics365Account','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','offset','order','sort','pick','filter','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','create','body','find','destroy','getConfigurations','findOne','Dynamics365Configuration','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','Dynamics365Field','Descriptions','ticketType','incident','Incident','title','description','customerid','ownerid','caseorigincode','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidyominame','contractidname','createdbyexternalpartyname','createdbyyominame','createdon','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productidname','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','statecode','statuscode','ticketnumber','traversedpath','username','password','remoteUri','tenantId','clientId','clientSecret','slice','POST','https://login.microsoftonline.com/','/oauth2/token','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','remove','forEach','@odata.type','substring','lastIndexOf','PicklistAttributeMetadata','push','isNil','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','EntityNameAttributeMetadata','all','concat','test','error','send','Wrong\x20credentials','statusCode',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','4.0','Options','Label','UserLocalizedLabel','Value','LogicalName','DisplayName','OptionSet','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','eml-format','zip-dir','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','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status'];(function(_0x4a71ac,_0x5ced08){var _0x2a2535=function(_0x536fce){while(--_0x536fce){_0x4a71ac['push'](_0x4a71ac['shift']());}};_0x2a2535(++_0x5ced08);}(_0x36f1,0xb0));var _0x136f=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x36f1[_0x484e36];return _0xafc85d;};'use strict';var emlformat=require(_0x136f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x136f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x136f('0x2'));var moment=require(_0x136f('0x3'));var BPromise=require(_0x136f('0x4'));var Mustache=require(_0x136f('0x5'));var util=require(_0x136f('0x6'));var path=require(_0x136f('0x7'));var sox=require(_0x136f('0x8'));var csv=require(_0x136f('0x9'));var ejs=require(_0x136f('0xa'));var fs=require('fs');var fs_extra=require(_0x136f('0xb'));var _=require('lodash');var squel=require(_0x136f('0xc'));var crypto=require(_0x136f('0xd'));var jsforce=require(_0x136f('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x136f('0x9'));var querystring=require(_0x136f('0xf'));var Papa=require(_0x136f('0x10'));var Redis=require(_0x136f('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x136f('0x12'));var hardwareService=require(_0x136f('0x13'));var logger=require(_0x136f('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x136f('0x15'));var licenseUtil=require(_0x136f('0x16'));var db=require(_0x136f('0x17'))['db'];var integrations=require(_0x136f('0x18'));function respondWithStatusCode(_0x32cd2d,_0x58d3ef){_0x58d3ef=_0x58d3ef||0xcc;return function(_0x4a89b4){if(_0x4a89b4){return _0x32cd2d[_0x136f('0x19')](_0x58d3ef);}return _0x32cd2d[_0x136f('0x1a')](_0x58d3ef)[_0x136f('0x1b')]();};}function respondWithResult(_0x541865,_0x43fca8){_0x43fca8=_0x43fca8||0xc8;return function(_0x3de185){if(_0x3de185){return _0x541865[_0x136f('0x1a')](_0x43fca8)[_0x136f('0x1c')](_0x3de185);}};}function respondWithFilteredResult(_0x1c89fa,_0x685a22){return function(_0x3a4a84){if(_0x3a4a84){var _0x39d1f8=typeof _0x685a22['offset']===_0x136f('0x1d')&&typeof _0x685a22[_0x136f('0x1e')]===_0x136f('0x1d');var _0x3475ee=_0x3a4a84[_0x136f('0x1f')];var _0x1cd7e5=_0x39d1f8?0x0:_0x685a22['offset'];var _0xcdab1=_0x39d1f8?_0x3a4a84[_0x136f('0x1f')]:_0x685a22['offset']+_0x685a22[_0x136f('0x1e')];var _0x1e94de;if(_0xcdab1>=_0x3475ee){_0xcdab1=_0x3475ee;_0x1e94de=0xc8;}else{_0x1e94de=0xce;}_0x1c89fa[_0x136f('0x1a')](_0x1e94de);return _0x1c89fa[_0x136f('0x20')](_0x136f('0x21'),_0x1cd7e5+'-'+_0xcdab1+'/'+_0x3475ee)[_0x136f('0x1c')](_0x3a4a84);}return null;};}function patchUpdates(_0x493b41){return function(_0x23ff3f){try{jsonpatch[_0x136f('0x22')](_0x23ff3f,_0x493b41,!![]);}catch(_0x3635a9){return BPromise['reject'](_0x3635a9);}return _0x23ff3f['save']();};}function saveUpdates(_0xa0416a,_0x5b600f){return function(_0x4da99b){if(_0x4da99b){return _0x4da99b[_0x136f('0x23')](_0xa0416a)[_0x136f('0x24')](function(_0x581b7c){return _0x581b7c;});}return null;};}function removeEntity(_0xf3ad9b,_0x34f467){return function(_0x22bba7){if(_0x22bba7){return _0x22bba7['destroy']()[_0x136f('0x24')](function(){_0xf3ad9b[_0x136f('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x34cb4f,_0x1cbad3){return function(_0x4ced80){if(!_0x4ced80){_0x34cb4f[_0x136f('0x19')](0x194);}return _0x4ced80;};}function handleError(_0x70c7b3,_0x278e59){_0x278e59=_0x278e59||0x1f4;return function(_0x442f7f){logger['error'](_0x442f7f[_0x136f('0x25')]);if(_0x442f7f[_0x136f('0x26')]){delete _0x442f7f[_0x136f('0x26')];}_0x70c7b3[_0x136f('0x1a')](_0x278e59)['send'](_0x442f7f);};}exports[_0x136f('0x27')]=function(_0x18ef58,_0x1b8e90){var _0x2f1381={},_0x10f9c2={},_0x16e743={'count':0x0,'rows':[]};var _0x527527=_[_0x136f('0x28')](db[_0x136f('0x29')][_0x136f('0x2a')],function(_0x4eb639){return{'name':_0x4eb639[_0x136f('0x2b')],'type':_0x4eb639['type'][_0x136f('0x2c')]};});_0x10f9c2[_0x136f('0x2d')]=_['map'](_0x527527,_0x136f('0x26'));_0x10f9c2[_0x136f('0x2e')]=_[_0x136f('0x2f')](_0x18ef58[_0x136f('0x2e')]);_0x10f9c2[_0x136f('0x30')]=_[_0x136f('0x31')](_0x10f9c2[_0x136f('0x2d')],_0x10f9c2[_0x136f('0x2e')]);_0x2f1381['attributes']=_[_0x136f('0x31')](_0x10f9c2['model'],qs['fields'](_0x18ef58[_0x136f('0x2e')][_0x136f('0x32')]));_0x2f1381['attributes']=_0x2f1381['attributes'][_0x136f('0x33')]?_0x2f1381[_0x136f('0x34')]:_0x10f9c2[_0x136f('0x2d')];if(!_0x18ef58['query'][_0x136f('0x35')](_0x136f('0x36'))){_0x2f1381[_0x136f('0x1e')]=qs[_0x136f('0x1e')](_0x18ef58[_0x136f('0x2e')]['limit']);_0x2f1381[_0x136f('0x37')]=qs[_0x136f('0x37')](_0x18ef58[_0x136f('0x2e')][_0x136f('0x37')]);}_0x2f1381[_0x136f('0x38')]=qs[_0x136f('0x39')](_0x18ef58[_0x136f('0x2e')][_0x136f('0x39')]);_0x2f1381['where']=qs[_0x136f('0x30')](_[_0x136f('0x3a')](_0x18ef58['query'],_0x10f9c2['filters']),_0x527527);if(_0x18ef58[_0x136f('0x2e')][_0x136f('0x3b')]){_0x2f1381[_0x136f('0x3c')]=_[_0x136f('0x3d')](_0x2f1381[_0x136f('0x3c')],{'$or':_[_0x136f('0x28')](_0x527527,function(_0x2b1db9){if(_0x2b1db9[_0x136f('0x3e')]!==_0x136f('0x3f')){var _0xbd555e={};_0xbd555e[_0x2b1db9['name']]={'$like':'%'+_0x18ef58[_0x136f('0x2e')][_0x136f('0x3b')]+'%'};return _0xbd555e;}})});}_0x2f1381=_[_0x136f('0x3d')]({},_0x2f1381,_0x18ef58['options']);var _0x56b620={'where':_0x2f1381[_0x136f('0x3c')]};return db[_0x136f('0x29')][_0x136f('0x1f')](_0x56b620)[_0x136f('0x24')](function(_0x2e19ed){_0x16e743[_0x136f('0x1f')]=_0x2e19ed;if(_0x18ef58[_0x136f('0x2e')][_0x136f('0x40')]){_0x2f1381[_0x136f('0x41')]=[{'all':!![]}];}return db[_0x136f('0x29')][_0x136f('0x42')](_0x2f1381);})[_0x136f('0x24')](function(_0x1d8d72){_0x16e743[_0x136f('0x43')]=_0x1d8d72;return _0x16e743;})[_0x136f('0x24')](respondWithFilteredResult(_0x1b8e90,_0x2f1381))[_0x136f('0x44')](handleError(_0x1b8e90,null));};exports[_0x136f('0x45')]=function(_0x901398,_0x3b84bd){var _0x560ec3={'raw':![],'where':{'id':_0x901398[_0x136f('0x46')]['id']}},_0x840d66={};_0x840d66[_0x136f('0x2d')]=_[_0x136f('0x2f')](db[_0x136f('0x29')][_0x136f('0x2a')]);_0x840d66[_0x136f('0x2e')]=_[_0x136f('0x2f')](_0x901398[_0x136f('0x2e')]);_0x840d66[_0x136f('0x30')]=_[_0x136f('0x31')](_0x840d66[_0x136f('0x2d')],_0x840d66['query']);_0x560ec3[_0x136f('0x34')]=_[_0x136f('0x31')](_0x840d66['model'],qs[_0x136f('0x32')](_0x901398[_0x136f('0x2e')][_0x136f('0x32')]));_0x560ec3[_0x136f('0x34')]=_0x560ec3[_0x136f('0x34')][_0x136f('0x33')]?_0x560ec3[_0x136f('0x34')]:_0x840d66[_0x136f('0x2d')];if(_0x901398[_0x136f('0x2e')][_0x136f('0x40')]){_0x560ec3[_0x136f('0x41')]=[{'all':!![]}];}_0x560ec3=_[_0x136f('0x3d')]({},_0x560ec3,_0x901398[_0x136f('0x47')]);return db[_0x136f('0x29')]['find'](_0x560ec3)[_0x136f('0x24')](handleEntityNotFound(_0x3b84bd,null))[_0x136f('0x24')](respondWithResult(_0x3b84bd,null))[_0x136f('0x44')](handleError(_0x3b84bd,null));};exports[_0x136f('0x48')]=function(_0x39fe33,_0x2a1c89){return db[_0x136f('0x29')][_0x136f('0x48')](_0x39fe33[_0x136f('0x49')],{})['then'](respondWithResult(_0x2a1c89,0xc9))[_0x136f('0x44')](handleError(_0x2a1c89,null));};exports[_0x136f('0x23')]=function(_0x2a8749,_0x58bf9a){if(_0x2a8749[_0x136f('0x49')]['id']){delete _0x2a8749[_0x136f('0x49')]['id'];}return db[_0x136f('0x29')][_0x136f('0x4a')]({'where':{'id':_0x2a8749['params']['id']}})[_0x136f('0x24')](handleEntityNotFound(_0x58bf9a,null))[_0x136f('0x24')](saveUpdates(_0x2a8749[_0x136f('0x49')],null))['then'](respondWithResult(_0x58bf9a,null))['catch'](handleError(_0x58bf9a,null));};exports[_0x136f('0x4b')]=function(_0x392513,_0x48d472){return db[_0x136f('0x29')][_0x136f('0x4a')]({'where':{'id':_0x392513[_0x136f('0x46')]['id']}})[_0x136f('0x24')](handleEntityNotFound(_0x48d472,null))['then'](removeEntity(_0x48d472,null))[_0x136f('0x44')](handleError(_0x48d472,null));};exports[_0x136f('0x4c')]=function(_0x3155f9,_0x32009d,_0x510332){var _0x17f539={};var _0x59ab48={};var _0x53a612;var _0x13313b;return db[_0x136f('0x29')][_0x136f('0x4d')]({'where':{'id':_0x3155f9[_0x136f('0x46')]['id']}})[_0x136f('0x24')](handleEntityNotFound(_0x32009d,null))['then'](function(_0x44fc7e){if(_0x44fc7e){_0x53a612=_0x44fc7e;_0x59ab48[_0x136f('0x2d')]=_[_0x136f('0x2f')](db[_0x136f('0x4e')][_0x136f('0x2a')]);_0x59ab48[_0x136f('0x2e')]=_[_0x136f('0x2f')](_0x3155f9[_0x136f('0x2e')]);_0x59ab48['filters']=_[_0x136f('0x31')](_0x59ab48[_0x136f('0x2d')],_0x59ab48[_0x136f('0x2e')]);_0x17f539[_0x136f('0x34')]=_[_0x136f('0x31')](_0x59ab48['model'],qs[_0x136f('0x32')](_0x3155f9[_0x136f('0x2e')][_0x136f('0x32')]));_0x17f539[_0x136f('0x34')]=_0x17f539['attributes'][_0x136f('0x33')]?_0x17f539[_0x136f('0x34')]:_0x59ab48[_0x136f('0x2d')];_0x17f539[_0x136f('0x38')]=qs[_0x136f('0x39')](_0x3155f9[_0x136f('0x2e')][_0x136f('0x39')]);_0x17f539[_0x136f('0x3c')]=qs[_0x136f('0x30')](_[_0x136f('0x3a')](_0x3155f9[_0x136f('0x2e')],_0x59ab48[_0x136f('0x30')]));if(_0x3155f9['query'][_0x136f('0x3b')]){_0x17f539[_0x136f('0x3c')]=_[_0x136f('0x3d')](_0x17f539[_0x136f('0x3c')],{'$or':_[_0x136f('0x28')](_0x17f539[_0x136f('0x34')],function(_0xc7171){var _0x73604={};_0x73604[_0xc7171]={'$like':'%'+_0x3155f9[_0x136f('0x2e')][_0x136f('0x3b')]+'%'};return _0x73604;})});}_0x17f539=_[_0x136f('0x3d')]({},_0x17f539,_0x3155f9['options']);return _0x53a612[_0x136f('0x4c')](_0x17f539);}})[_0x136f('0x24')](function(_0x9934a){if(_0x9934a){_0x13313b=_0x9934a[_0x136f('0x33')];if(!_0x3155f9[_0x136f('0x2e')][_0x136f('0x35')](_0x136f('0x36'))){_0x17f539[_0x136f('0x1e')]=qs['limit'](_0x3155f9[_0x136f('0x2e')][_0x136f('0x1e')]);_0x17f539[_0x136f('0x37')]=qs['offset'](_0x3155f9[_0x136f('0x2e')]['offset']);}return _0x53a612['getConfigurations'](_0x17f539);}})[_0x136f('0x24')](function(_0x3ac057){if(_0x3ac057){return _0x3ac057?{'count':_0x13313b,'rows':_0x3ac057}:null;}})[_0x136f('0x24')](respondWithResult(_0x32009d,null))[_0x136f('0x44')](handleError(_0x32009d,null));};exports[_0x136f('0x4f')]=function(_0x27b74a,_0x4655d1,_0x551d8e){if(_0x27b74a[_0x136f('0x49')]['id']){delete _0x27b74a[_0x136f('0x49')]['id'];}return db[_0x136f('0x29')][_0x136f('0x4d')]({'where':{'id':_0x27b74a[_0x136f('0x46')]['id']}})[_0x136f('0x24')](handleEntityNotFound(_0x4655d1,null))[_0x136f('0x24')](function(_0x2d087a){if(_0x2d087a){_0x27b74a[_0x136f('0x49')][_0x136f('0x50')]=_0x2d087a['id'];_0x27b74a[_0x136f('0x49')][_0x136f('0x51')]=integrations[_0x136f('0x52')](_0x27b74a[_0x136f('0x49')][_0x136f('0x53')],_0x27b74a['body']['type']);_0x27b74a[_0x136f('0x49')]['Descriptions']=integrations[_0x136f('0x54')](_0x27b74a['body'][_0x136f('0x53')],_0x27b74a[_0x136f('0x49')][_0x136f('0x3e')]);return db[_0x136f('0x4e')]['create'](_0x27b74a[_0x136f('0x49')],{'include':[{'model':db['Dynamics365Field'],'as':_0x136f('0x51')},{'model':db[_0x136f('0x55')],'as':_0x136f('0x56')}]});}return null;})[_0x136f('0x24')](respondWithResult(_0x4655d1,null))[_0x136f('0x44')](handleError(_0x4655d1,null));};exports['getFields']=function(_0x220193,_0x34321a,_0x26721d){var _0x2c004e=_0x220193[_0x136f('0x2e')][_0x136f('0x57')];var _0x2f3aae=_0x2c004e===_0x136f('0x58')?_0x136f('0x59'):'PhoneCall';var _0x38954e='';var _0x366d9e='';var _0xe4d157='';var _0x580913='';var _0x52e6eb='';var _0x2bf2be='';var _0x14124c='';var _0x340d67='';var _0x4f96e8=[_0x136f('0x5a'),_0x136f('0x5b'),_0x136f('0x5c'),_0x136f('0x5d'),_0x136f('0x5e'),'subject','phonenumber',_0x136f('0x5f'),_0x136f('0x60'),_0x136f('0x61')];var _0xf4e6fd=[_0x136f('0x62'),_0x136f('0x63'),_0x136f('0x64'),_0x136f('0x65'),'contactidname',_0x136f('0x66'),'contractdetailidname',_0x136f('0x67'),_0x136f('0x68'),'createdbyexternalpartyyominame','createdbyname',_0x136f('0x69'),_0x136f('0x6a'),'createdonbehalfbyname','createdonbehalfbyyominame',_0x136f('0x6b'),_0x136f('0x6c'),_0x136f('0x6d'),_0x136f('0x6e'),_0x136f('0x6f'),_0x136f('0x70'),_0x136f('0x71'),_0x136f('0x72'),_0x136f('0x73'),_0x136f('0x74'),'followupby',_0x136f('0x75'),_0x136f('0x76'),_0x136f('0x77'),'lastonholdtime',_0x136f('0x78'),'modifiedbyexternalpartyname',_0x136f('0x79'),_0x136f('0x7a'),'modifiedbyyominame',_0x136f('0x7b'),_0x136f('0x7c'),_0x136f('0x7d'),_0x136f('0x7e'),_0x136f('0x7f'),'numberofchildincidents',_0x136f('0x80'),_0x136f('0x81'),'owneridname','owneridtype',_0x136f('0x82'),_0x136f('0x83'),'primarycontactidname',_0x136f('0x84'),_0x136f('0x85'),_0x136f('0x86'),'productserialnumber',_0x136f('0x87'),_0x136f('0x88'),_0x136f('0x89'),_0x136f('0x8a'),_0x136f('0x8b'),_0x136f('0x8c'),'slainvokedidname',_0x136f('0x8d'),_0x136f('0x8e'),_0x136f('0x8f'),_0x136f('0x90'),'subjectidname',_0x136f('0x91'),'timezoneruleversionnumber','transactioncurrencyidname',_0x136f('0x92'),'utcconversiontimezonecode','versionnumber'];var _0x2d8f50=_0x4f96e8['concat'](_0xf4e6fd);return db[_0x136f('0x29')][_0x136f('0x4d')]({'where':{'id':_0x220193[_0x136f('0x46')]['id']},'attributes':['id',_0x136f('0x93'),_0x136f('0x94'),_0x136f('0x95'),_0x136f('0x96'),_0x136f('0x97'),_0x136f('0x98')]})['then'](handleEntityNotFound(_0x34321a,null))[_0x136f('0x24')](function(_0x475391){if(_0x475391){_0x340d67=_0x475391[_0x136f('0x95')];var _0x5f51a6=_0x340d67[_0x136f('0x99')](-0x1);if(_0x5f51a6==='/'){_0x340d67=_0x340d67['substring'](0x0,_0x340d67['lastIndexOf'](_0x5f51a6));}_0x14124c=util['format']('%s/api/data/v9.0/',_0x340d67);var _0x432f75={'method':_0x136f('0x9a'),'uri':_0x136f('0x9b')+_0x475391['tenantId']+_0x136f('0x9c'),'form':{'client_id':_0x475391['clientId'],'resource':_0x340d67,'username':_0x475391[_0x136f('0x93')],'password':_0x475391['password'],'grant_type':'password','client_secret':_0x475391[_0x136f('0x98')]},'json':!![]};return rp(_0x432f75);}})[_0x136f('0x24')](function(_0x4ff851){_0x2bf2be=_0x4ff851[_0x136f('0x9d')];var _0x4b22fd={'method':_0x136f('0x9e'),'uri':encodeURI(_0x14124c+_0x136f('0x9f')+_0x2f3aae+'\x27'),'headers':{'Authorization':_0x136f('0xa0')+_0x2bf2be,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4b22fd);})[_0x136f('0x24')](function(_0xe2d817){var _0x1e0b97=_0xe2d817['value'][0x0];var _0x1bde5b=_0x1e0b97[_0x136f('0xa1')];var _0x1cd4d7={'method':_0x136f('0x9e'),'uri':_0x14124c+_0x136f('0xa2')+_0x1bde5b+_0x136f('0xa3'),'headers':{'Authorization':'Bearer\x20'+_0x2bf2be,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1cd4d7);})[_0x136f('0x24')](function(_0x33aca9){_0x38954e=_0x33aca9;_0x366d9e=_0x38954e['Attributes'];_0x366d9e=_[_0x136f('0xa4')](_0x366d9e,function(_0x17f05c){return!_0x2d8f50['includes'](_0x17f05c['LogicalName']);});var _0xdd3682=[];var _0x402707=[];_0x366d9e[_0x136f('0xa5')](function(_0x579ce3){if(_0x579ce3[_0x136f('0xa6')]){var _0x57f1ae=_0x579ce3[_0x136f('0xa6')][_0x136f('0xa7')](_0x579ce3['@odata.type'][_0x136f('0xa8')]('.')+0x1);if(_0x57f1ae===_0x136f('0xa9')){_0xdd3682[_0x136f('0xaa')](getSelectList(_0x14124c,_0x2c004e,_0x402707,_0x38954e[_0x136f('0xa1')],_0x579ce3['MetadataId'],_0x2bf2be));}}});return Promise['all'](_0xdd3682);})[_0x136f('0x24')](function(_0x3fbd18){_0xe4d157=_0x3fbd18[0x0];var _0x567ac6=[];var _0x299f30=[];_0x366d9e[_0x136f('0xa5')](function(_0x3bfe36){if(!_[_0x136f('0xab')](_0x3bfe36[_0x136f('0xa6')])){var _0x7afd59=_0x3bfe36[_0x136f('0xa6')]['substring'](_0x3bfe36['@odata.type'][_0x136f('0xa8')]('.')+0x1);if(_0x7afd59===_0x136f('0xac')){_0x567ac6[_0x136f('0xaa')](getBooleanList(_0x14124c,_0x2c004e,_0x299f30,_0x38954e['MetadataId'],_0x3bfe36[_0x136f('0xa1')],_0x2bf2be));}}});return Promise['all'](_0x567ac6);})['then'](function(_0x505d48){_0x580913=_0x505d48[0x0];var _0x206851=[];var _0x3a4c92=[];_0x366d9e[_0x136f('0xa5')](function(_0x3c0bef){if(_0x3c0bef[_0x136f('0xa6')]){var _0x1494cc=_0x3c0bef[_0x136f('0xa6')][_0x136f('0xa7')](_0x3c0bef['@odata.type']['lastIndexOf']('.')+0x1);if(_0x1494cc===_0x136f('0xad')||_0x1494cc===_0x136f('0xae')||_0x1494cc===_0x136f('0xaf')||_0x1494cc===_0x136f('0xb0')||_0x1494cc===_0x136f('0xb1')||_0x1494cc===_0x136f('0xb2')||_0x1494cc==='StatusAttributeMetadata'||_0x1494cc===_0x136f('0xb3')||_0x1494cc==='StateAttributeMetadata'||_0x1494cc==='DecimalAttributeMetadata'){_0x206851[_0x136f('0xaa')](getInputList(_0x14124c,_0x2c004e,_0x1494cc,_0x3a4c92,_0x38954e['MetadataId'],_0x3c0bef[_0x136f('0xa1')],_0x2bf2be));}}});return Promise[_0x136f('0xb4')](_0x206851);})[_0x136f('0x24')](function(_0x16f445){_0x52e6eb=_0x16f445[0x0];var _0x96d8d=_0xe4d157[_0x136f('0xb5')](_0x580913)[_0x136f('0xb5')](_0x52e6eb);var _0x1d6329={'count':_0x96d8d[_0x136f('0x33')],'rows':_0x96d8d};return _0x1d6329;})[_0x136f('0x24')](respondWithResult(_0x34321a,null))[_0x136f('0x44')](function(_0x285aed){var _0x357393=_0x220193[_0x136f('0x2e')][_0x136f('0xb6')]?0x1f4:_0x285aed['statusCode']||0x1f4;logger[_0x136f('0xb7')](_0x285aed['stack']);delete _0x285aed[_0x136f('0x26')];if(_0x357393===0x191){_0x357393=0x190;}_0x34321a[_0x136f('0x1a')](_0x357393)[_0x136f('0xb8')](_0x220193['query']['test']?{'message':_0x136f('0xb9'),'statusCode':_0x285aed[_0x136f('0xba')]}:_0x285aed);});};function getSelectList(_0x52a4d1,_0x4aa738,_0x44b96b,_0x4f6999,_0x1b10ea,_0x4258b6){var _0x6ddeb2={'method':_0x136f('0x9e'),'uri':_0x52a4d1+_0x136f('0xa2')+_0x4f6999+_0x136f('0xbb')+_0x1b10ea+_0x136f('0xbc')+_0x136f('0xbd'),'headers':{'Authorization':_0x136f('0xa0')+_0x4258b6,'If-None-Match':null,'OData-Version':_0x136f('0xbe')},'json':!![]};return rp(_0x6ddeb2)[_0x136f('0x24')](function(_0x462b38){var _0x48bbf5=[];var _0x236222=_0x462b38['OptionSet'][_0x136f('0xbf')];_0x236222[_0x136f('0xa5')](function(_0x109a7d){_0x48bbf5['push']({'name':_0x109a7d[_0x136f('0xc0')][_0x136f('0xc1')][_0x136f('0xc0')],'value':String(_0x109a7d[_0x136f('0xc2')])});});var _0x43c101={'id':_0x4aa738+'_'+_0x462b38[_0x136f('0xc3')],'name':_0x462b38[_0x136f('0xc4')][_0x136f('0xc1')]['Label'],'custom':![],'options':_0x48bbf5};_0x44b96b[_0x136f('0xaa')](_0x43c101);return _0x44b96b;});}function getBooleanList(_0x4cea82,_0x445177,_0x221731,_0x1b07e2,_0x8f5bd5,_0x7883bb){var _0x5cb0a6={'method':_0x136f('0x9e'),'uri':_0x4cea82+_0x136f('0xa2')+_0x1b07e2+_0x136f('0xbb')+_0x8f5bd5+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x136f('0xa0')+_0x7883bb,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x5cb0a6)[_0x136f('0x24')](function(_0x53e714){var _0x458e46=[];_0x458e46[_0x136f('0xaa')]({'name':_0x53e714[_0x136f('0xc5')][_0x136f('0xc6')][_0x136f('0xc0')][_0x136f('0xc1')][_0x136f('0xc0')],'value':_0x136f('0xc7')},{'name':_0x53e714['OptionSet'][_0x136f('0xc8')][_0x136f('0xc0')]['UserLocalizedLabel'][_0x136f('0xc0')],'value':_0x136f('0xc9')});var _0x2f91e6={'id':_0x445177+'_'+_0x53e714[_0x136f('0xc3')],'name':_0x53e714[_0x136f('0xc4')]['UserLocalizedLabel'][_0x136f('0xc0')],'custom':![],'options':_0x458e46};_0x221731[_0x136f('0xaa')](_0x2f91e6);return _0x221731;});}function getInputList(_0x47f1e0,_0x236e42,_0x278587,_0x5929f1,_0x20072f,_0xc21c0c,_0x2da492){var _0x2e3e65={'method':_0x136f('0x9e'),'uri':_0x47f1e0+_0x136f('0xa2')+_0x20072f+_0x136f('0xbb')+_0xc21c0c+_0x136f('0xca')+_0x278587+'?$select=DisplayName,LogicalName','headers':{'Authorization':'Bearer\x20'+_0x2da492,'If-None-Match':null,'OData-Version':_0x136f('0xbe')},'json':!![]};return rp(_0x2e3e65)[_0x136f('0x24')](function(_0x5a57ab){var _0x245aba={'id':_0x236e42+'_'+_0x5a57ab['LogicalName'],'name':_0x5a57ab['DisplayName']['UserLocalizedLabel']?_0x5a57ab[_0x136f('0xc4')][_0x136f('0xc1')][_0x136f('0xc0')]:_0x5a57ab[_0x136f('0xc3')],'custom':![],'options':[]};_0x5929f1[_0x136f('0xaa')](_0x245aba);return _0x5929f1;});}
\ No newline at end of file
index c0ab34c..50d39b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['Dynamics365Account','int_dynamics365_accounts','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x417b3d,_0x4eb1f5){var _0x444e60=function(_0x5cc23a){while(--_0x5cc23a){_0x417b3d['push'](_0x417b3d['shift']());}};_0x444e60(++_0x4eb1f5);}(_0x757a,0xde));var _0xa757=function(_0x5f2c09,_0x15c8d2){_0x5f2c09=_0x5f2c09-0x0;var _0x10d7b4=_0x757a[_0x5f2c09];return _0x10d7b4;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));var integrations=require(_0xa757('0x7'));module['exports']=function(_0xae0e7c,_0x4343b6){return _0xae0e7c['define'](_0xa757('0x8'),attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x757a=['Dynamics365Account','int_dynamics365_accounts','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x26345a,_0xdc593d){var _0xfb7d2=function(_0x276b76){while(--_0x276b76){_0x26345a['push'](_0x26345a['shift']());}};_0xfb7d2(++_0xdc593d);}(_0x757a,0xde));var _0xa757=function(_0x3915d8,_0xe72dac){_0x3915d8=_0x3915d8-0x0;var _0x37017f=_0x757a[_0x3915d8];return _0x37017f;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));var integrations=require(_0xa757('0x7'));module['exports']=function(_0xae0e7c,_0x4343b6){return _0xae0e7c['define'](_0xa757('0x8'),attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cb3ce78..6b1e5d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe00=['request\x20sent','stringify','error','code','message','result','GetDynamics365Account','Dynamics365Account','options','raw','where','attributes','limit','model','include','map','catch','ShowDynamics365Account','find','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','info','Dynamics365Account,\x20%s,\x20%s','debug'];(function(_0x27c439,_0x1f5140){var _0x3b23dd=function(_0xd91cb9){while(--_0xd91cb9){_0x27c439['push'](_0x27c439['shift']());}};_0x3b23dd(++_0x1f5140);}(_0xfe00,0x17e));var _0x0fe0=function(_0x13f0c6,_0x3e1aed){_0x13f0c6=_0x13f0c6-0x0;var _0x2edd6a=_0xfe00[_0x13f0c6];return _0x2edd6a;};'use strict';var _=require(_0x0fe0('0x0'));var util=require(_0x0fe0('0x1'));var moment=require(_0x0fe0('0x2'));var BPromise=require(_0x0fe0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0fe0('0x4'))['db'];var utils=require(_0x0fe0('0x5'));var logger=require(_0x0fe0('0x6'))(_0x0fe0('0x7'));var config=require(_0x0fe0('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0fe0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xe6403f,_0x351e95,_0xefbb8d){return new BPromise(function(_0x86d19,_0x4d97c7){return client['request'](_0xe6403f,_0xefbb8d)[_0x0fe0('0xa')](function(_0x3c918b){logger[_0x0fe0('0xb')](_0x0fe0('0xc'),_0x351e95,'request\x20sent');logger[_0x0fe0('0xd')]('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x351e95,_0x0fe0('0xe'),JSON[_0x0fe0('0xf')](_0x3c918b));if(_0x3c918b[_0x0fe0('0x10')]){if(_0x3c918b[_0x0fe0('0x10')][_0x0fe0('0x11')]===0x1f4){logger[_0x0fe0('0x10')](_0x0fe0('0xc'),_0x351e95,_0x3c918b[_0x0fe0('0x10')]['message']);return _0x4d97c7(_0x3c918b[_0x0fe0('0x10')][_0x0fe0('0x12')]);}logger[_0x0fe0('0x10')](_0x0fe0('0xc'),_0x351e95,_0x3c918b[_0x0fe0('0x10')][_0x0fe0('0x12')]);return _0x86d19(_0x3c918b[_0x0fe0('0x10')][_0x0fe0('0x12')]);}else{logger[_0x0fe0('0xb')](_0x0fe0('0xc'),_0x351e95,'request\x20sent');_0x86d19(_0x3c918b[_0x0fe0('0x13')][_0x0fe0('0x12')]);}})['catch'](function(_0x364102){logger['error'](_0x0fe0('0xc'),_0x351e95,_0x364102);_0x4d97c7(_0x364102);});});}exports[_0x0fe0('0x14')]=function(_0x5eade2){var _0x990fab=this;return new Promise(function(_0x571dd3,_0x29b377){return db[_0x0fe0('0x15')]['findAll']({'raw':_0x5eade2[_0x0fe0('0x16')]?_0x5eade2[_0x0fe0('0x16')][_0x0fe0('0x17')]===undefined?!![]:![]:!![],'where':_0x5eade2[_0x0fe0('0x16')]?_0x5eade2[_0x0fe0('0x16')][_0x0fe0('0x18')]||null:null,'attributes':_0x5eade2['options']?_0x5eade2[_0x0fe0('0x16')][_0x0fe0('0x19')]||null:null,'limit':_0x5eade2['options']?_0x5eade2[_0x0fe0('0x16')][_0x0fe0('0x1a')]||null:null,'include':_0x5eade2[_0x0fe0('0x16')]?_0x5eade2[_0x0fe0('0x16')]['include']?_['map'](_0x5eade2['options']['include'],function(_0xb9ab6d){return{'model':db[_0xb9ab6d[_0x0fe0('0x1b')]],'as':_0xb9ab6d['as'],'attributes':_0xb9ab6d[_0x0fe0('0x19')],'include':_0xb9ab6d[_0x0fe0('0x1c')]?_['map'](_0xb9ab6d[_0x0fe0('0x1c')],function(_0x1b3540){return{'model':db[_0x1b3540[_0x0fe0('0x1b')]],'as':_0x1b3540['as'],'attributes':_0x1b3540['attributes'],'include':_0x1b3540[_0x0fe0('0x1c')]?_[_0x0fe0('0x1d')](_0x1b3540['include'],function(_0x25fbb1){return{'model':db[_0x25fbb1[_0x0fe0('0x1b')]],'as':_0x25fbb1['as'],'attributes':_0x25fbb1[_0x0fe0('0x19')]};}):[]};}):[]};}):[]:[]})[_0x0fe0('0xa')](function(_0x53efa2){logger['info'](_0x0fe0('0x14'),_0x5eade2);logger['debug'](_0x0fe0('0x14'),_0x5eade2,JSON['stringify'](_0x53efa2));_0x571dd3(_0x53efa2);})[_0x0fe0('0x1e')](function(_0x34e055){logger[_0x0fe0('0x10')](_0x0fe0('0x14'),_0x34e055[_0x0fe0('0x12')],_0x5eade2);_0x29b377(_0x990fab[_0x0fe0('0x10')](0x1f4,_0x34e055[_0x0fe0('0x12')]));});});};exports[_0x0fe0('0x1f')]=function(_0x8f27e3){var _0x25c38c=this;return new Promise(function(_0x562483,_0x3f19ec){return db[_0x0fe0('0x15')][_0x0fe0('0x20')]({'raw':_0x8f27e3[_0x0fe0('0x16')]?_0x8f27e3[_0x0fe0('0x16')][_0x0fe0('0x17')]===undefined?!![]:![]:!![],'where':_0x8f27e3[_0x0fe0('0x16')]?_0x8f27e3[_0x0fe0('0x16')][_0x0fe0('0x18')]||null:null,'attributes':_0x8f27e3[_0x0fe0('0x16')]?_0x8f27e3[_0x0fe0('0x16')][_0x0fe0('0x19')]||null:null,'include':_0x8f27e3[_0x0fe0('0x16')]?_0x8f27e3['options']['include']?_[_0x0fe0('0x1d')](_0x8f27e3['options'][_0x0fe0('0x1c')],function(_0x27695e){return{'model':db[_0x27695e[_0x0fe0('0x1b')]],'as':_0x27695e['as'],'attributes':_0x27695e['attributes'],'include':_0x27695e[_0x0fe0('0x1c')]?_[_0x0fe0('0x1d')](_0x27695e[_0x0fe0('0x1c')],function(_0x451f58){return{'model':db[_0x451f58[_0x0fe0('0x1b')]],'as':_0x451f58['as'],'attributes':_0x451f58[_0x0fe0('0x19')],'include':_0x451f58[_0x0fe0('0x1c')]?_[_0x0fe0('0x1d')](_0x451f58['include'],function(_0x52799b){return{'model':db[_0x52799b[_0x0fe0('0x1b')]],'as':_0x52799b['as'],'attributes':_0x52799b[_0x0fe0('0x19')]};}):[]};}):[]};}):[]:[]})[_0x0fe0('0xa')](function(_0x589147){logger['info'](_0x0fe0('0x1f'),_0x8f27e3);logger[_0x0fe0('0xd')](_0x0fe0('0x1f'),_0x8f27e3,JSON[_0x0fe0('0xf')](_0x589147));_0x562483(_0x589147);})[_0x0fe0('0x1e')](function(_0x4a1931){logger[_0x0fe0('0x10')](_0x0fe0('0x1f'),_0x4a1931['message'],_0x8f27e3);_0x3f19ec(_0x25c38c[_0x0fe0('0x10')](0x1f4,_0x4a1931['message']));});});};
\ No newline at end of file
+var _0x177a=['model','GetDynamics365Account','stringify','then','ShowDynamics365Account','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','Dynamics365Account','findAll','options','raw','where','attributes','limit','map','include'];(function(_0x300915,_0x320ae4){var _0x5887ed=function(_0x211c35){while(--_0x211c35){_0x300915['push'](_0x300915['shift']());}};_0x5887ed(++_0x320ae4);}(_0x177a,0x96));var _0xa177=function(_0x1af56d,_0x364248){_0x1af56d=_0x1af56d-0x0;var _0x283686=_0x177a[_0x1af56d];return _0x283686;};'use strict';var _=require(_0xa177('0x0'));var util=require(_0xa177('0x1'));var moment=require(_0xa177('0x2'));var BPromise=require(_0xa177('0x3'));var rs=require(_0xa177('0x4'));var fs=require('fs');var Redis=require(_0xa177('0x5'));var db=require(_0xa177('0x6'))['db'];var utils=require(_0xa177('0x7'));var logger=require(_0xa177('0x8'))('rpc');var config=require(_0xa177('0x9'));var jayson=require(_0xa177('0xa'));var client=jayson[_0xa177('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x48f730,_0x44212f,_0x3c47ee){return new BPromise(function(_0x18eee1,_0xa16417){return client['request'](_0x48f730,_0x3c47ee)['then'](function(_0x3df6b2){logger[_0xa177('0xc')](_0xa177('0xd'),_0x44212f,_0xa177('0xe'));logger['debug'](_0xa177('0xf'),_0x44212f,'request\x20sent',JSON['stringify'](_0x3df6b2));if(_0x3df6b2['error']){if(_0x3df6b2[_0xa177('0x10')][_0xa177('0x11')]===0x1f4){logger['error'](_0xa177('0xd'),_0x44212f,_0x3df6b2[_0xa177('0x10')][_0xa177('0x12')]);return _0xa16417(_0x3df6b2[_0xa177('0x10')][_0xa177('0x12')]);}logger['error'](_0xa177('0xd'),_0x44212f,_0x3df6b2['error'][_0xa177('0x12')]);return _0x18eee1(_0x3df6b2[_0xa177('0x10')][_0xa177('0x12')]);}else{logger[_0xa177('0xc')](_0xa177('0xd'),_0x44212f,_0xa177('0xe'));_0x18eee1(_0x3df6b2[_0xa177('0x13')][_0xa177('0x12')]);}})[_0xa177('0x14')](function(_0x31ef96){logger[_0xa177('0x10')](_0xa177('0xd'),_0x44212f,_0x31ef96);_0xa16417(_0x31ef96);});});}exports['GetDynamics365Account']=function(_0x47aa92){var _0x3fd2ad=this;return new Promise(function(_0x447bc9,_0x1c460e){return db[_0xa177('0x15')][_0xa177('0x16')]({'raw':_0x47aa92[_0xa177('0x17')]?_0x47aa92[_0xa177('0x17')][_0xa177('0x18')]===undefined?!![]:![]:!![],'where':_0x47aa92[_0xa177('0x17')]?_0x47aa92[_0xa177('0x17')][_0xa177('0x19')]||null:null,'attributes':_0x47aa92[_0xa177('0x17')]?_0x47aa92[_0xa177('0x17')][_0xa177('0x1a')]||null:null,'limit':_0x47aa92[_0xa177('0x17')]?_0x47aa92[_0xa177('0x17')][_0xa177('0x1b')]||null:null,'include':_0x47aa92[_0xa177('0x17')]?_0x47aa92['options']['include']?_[_0xa177('0x1c')](_0x47aa92[_0xa177('0x17')][_0xa177('0x1d')],function(_0x381399){return{'model':db[_0x381399['model']],'as':_0x381399['as'],'attributes':_0x381399[_0xa177('0x1a')],'include':_0x381399[_0xa177('0x1d')]?_[_0xa177('0x1c')](_0x381399[_0xa177('0x1d')],function(_0x52d208){return{'model':db[_0x52d208[_0xa177('0x1e')]],'as':_0x52d208['as'],'attributes':_0x52d208[_0xa177('0x1a')],'include':_0x52d208[_0xa177('0x1d')]?_[_0xa177('0x1c')](_0x52d208[_0xa177('0x1d')],function(_0x1f9301){return{'model':db[_0x1f9301['model']],'as':_0x1f9301['as'],'attributes':_0x1f9301[_0xa177('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1182b7){logger[_0xa177('0xc')](_0xa177('0x1f'),_0x47aa92);logger['debug']('GetDynamics365Account',_0x47aa92,JSON[_0xa177('0x20')](_0x1182b7));_0x447bc9(_0x1182b7);})[_0xa177('0x14')](function(_0x4c77d1){logger['error'](_0xa177('0x1f'),_0x4c77d1['message'],_0x47aa92);_0x1c460e(_0x3fd2ad[_0xa177('0x10')](0x1f4,_0x4c77d1[_0xa177('0x12')]));});});};exports['ShowDynamics365Account']=function(_0x58e03a){var _0x19a0e3=this;return new Promise(function(_0x1e3497,_0x486518){return db[_0xa177('0x15')]['find']({'raw':_0x58e03a[_0xa177('0x17')]?_0x58e03a[_0xa177('0x17')][_0xa177('0x18')]===undefined?!![]:![]:!![],'where':_0x58e03a['options']?_0x58e03a[_0xa177('0x17')][_0xa177('0x19')]||null:null,'attributes':_0x58e03a[_0xa177('0x17')]?_0x58e03a[_0xa177('0x17')][_0xa177('0x1a')]||null:null,'include':_0x58e03a[_0xa177('0x17')]?_0x58e03a['options'][_0xa177('0x1d')]?_[_0xa177('0x1c')](_0x58e03a[_0xa177('0x17')][_0xa177('0x1d')],function(_0x2e01e1){return{'model':db[_0x2e01e1[_0xa177('0x1e')]],'as':_0x2e01e1['as'],'attributes':_0x2e01e1[_0xa177('0x1a')],'include':_0x2e01e1[_0xa177('0x1d')]?_[_0xa177('0x1c')](_0x2e01e1[_0xa177('0x1d')],function(_0x2e8501){return{'model':db[_0x2e8501['model']],'as':_0x2e8501['as'],'attributes':_0x2e8501['attributes'],'include':_0x2e8501[_0xa177('0x1d')]?_['map'](_0x2e8501[_0xa177('0x1d')],function(_0x59dbde){return{'model':db[_0x59dbde['model']],'as':_0x59dbde['as'],'attributes':_0x59dbde[_0xa177('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa177('0x21')](function(_0x39c0f8){logger[_0xa177('0xc')](_0xa177('0x22'),_0x58e03a);logger[_0xa177('0x23')](_0xa177('0x22'),_0x58e03a,JSON[_0xa177('0x20')](_0x39c0f8));_0x1e3497(_0x39c0f8);})['catch'](function(_0x373ffc){logger[_0xa177('0x10')](_0xa177('0x22'),_0x373ffc[_0xa177('0x12')],_0x58e03a);_0x486518(_0x19a0e3['error'](0x1f4,_0x373ffc[_0xa177('0x12')]));});});};
\ No newline at end of file
index 5ca7394..be06ec4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d72=['create','put','update','delete','multer','util','path','express','fs-extra','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getDescriptions','post'];(function(_0x35a8e5,_0x47fb0e){var _0x1f5929=function(_0xbb0c96){while(--_0xbb0c96){_0x35a8e5['push'](_0x35a8e5['shift']());}};_0x1f5929(++_0x47fb0e);}(_0x5d72,0x7c));var _0x25d7=function(_0x1a4cac,_0x116f47){_0x1a4cac=_0x1a4cac-0x0;var _0x142f2f=_0x5d72[_0x1a4cac];return _0x142f2f;};'use strict';var multer=require(_0x25d7('0x0'));var util=require(_0x25d7('0x1'));var path=require(_0x25d7('0x2'));var timeout=require('connect-timeout');var express=require(_0x25d7('0x3'));var router=express['Router']();var fs_extra=require(_0x25d7('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x25d7('0x5'));router[_0x25d7('0x6')]('/',auth[_0x25d7('0x7')](),controller[_0x25d7('0x8')]);router[_0x25d7('0x6')](_0x25d7('0x9'),auth['isAuthenticated'](),controller[_0x25d7('0xa')]);router[_0x25d7('0x6')](_0x25d7('0xb'),auth[_0x25d7('0x7')](),controller[_0x25d7('0xc')]);router['get'](_0x25d7('0xd'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x25d7('0x6')]('/:id/descriptions',auth[_0x25d7('0x7')](),controller[_0x25d7('0xe')]);router[_0x25d7('0xf')]('/',auth['isAuthenticated'](),controller[_0x25d7('0x10')]);router[_0x25d7('0x11')]('/:id',auth[_0x25d7('0x7')](),controller[_0x25d7('0x12')]);router[_0x25d7('0x13')](_0x25d7('0x9'),auth[_0x25d7('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x1f75=['exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','/:id/descriptions','post','put','destroy'];(function(_0x79b649,_0x2115b3){var _0x1af9b1=function(_0x153c9f){while(--_0x153c9f){_0x79b649['push'](_0x79b649['shift']());}};_0x1af9b1(++_0x2115b3);}(_0x1f75,0x13c));var _0x51f7=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x1f75[_0x18ab2a];return _0x16dcee;};'use strict';var multer=require('multer');var util=require(_0x51f7('0x0'));var path=require(_0x51f7('0x1'));var timeout=require(_0x51f7('0x2'));var express=require(_0x51f7('0x3'));var router=express[_0x51f7('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x51f7('0x5'));var interaction=require(_0x51f7('0x6'));var config=require(_0x51f7('0x7'));var controller=require(_0x51f7('0x8'));router[_0x51f7('0x9')]('/',auth[_0x51f7('0xa')](),controller[_0x51f7('0xb')]);router[_0x51f7('0x9')](_0x51f7('0xc'),auth[_0x51f7('0xa')](),controller[_0x51f7('0xd')]);router[_0x51f7('0x9')]('/:id/fields',auth[_0x51f7('0xa')](),controller[_0x51f7('0xe')]);router['get'](_0x51f7('0xf'),auth[_0x51f7('0xa')](),controller['getSubjects']);router['get'](_0x51f7('0x10'),auth[_0x51f7('0xa')](),controller['getDescriptions']);router[_0x51f7('0x11')]('/',auth[_0x51f7('0xa')](),controller['create']);router[_0x51f7('0x12')](_0x51f7('0xc'),auth[_0x51f7('0xa')](),controller['update']);router['delete'](_0x51f7('0xc'),auth[_0x51f7('0xa')](),controller[_0x51f7('0x13')]);module[_0x51f7('0x14')]=router;
\ No newline at end of file
index 3598685..d3d8d02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8183=['ENUM','incident','sequelize','STRING'];(function(_0xfca46f,_0x3faa68){var _0x2ab4fe=function(_0x5591b3){while(--_0x5591b3){_0xfca46f['push'](_0xfca46f['shift']());}};_0x2ab4fe(++_0x3faa68);}(_0x8183,0x6e));var _0x3818=function(_0x1bbc08,_0x444008){_0x1bbc08=_0x1bbc08-0x0;var _0x5d825b=_0x8183[_0x1bbc08];return _0x5d825b;};'use strict';var Sequelize=require(_0x3818('0x0'));module['exports']={'name':{'type':Sequelize[_0x3818('0x1')]},'description':{'type':Sequelize[_0x3818('0x1')]},'ticketType':{'type':Sequelize[_0x3818('0x2')](_0x3818('0x3'),'phonecall'),'defaultValue':_0x3818('0x3')}};
\ No newline at end of file
+var _0x644f=['sequelize','exports','STRING','ENUM','incident'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0x644f,0x87));var _0xf644=function(_0x506d2f,_0x5ab76e){_0x506d2f=_0x506d2f-0x0;var _0x101255=_0x644f[_0x506d2f];return _0x101255;};'use strict';var Sequelize=require(_0xf644('0x0'));module[_0xf644('0x1')]={'name':{'type':Sequelize[_0xf644('0x2')]},'description':{'type':Sequelize[_0xf644('0x2')]},'ticketType':{'type':Sequelize[_0xf644('0x3')](_0xf644('0x4'),'phonecall'),'defaultValue':_0xf644('0x4')}};
\ No newline at end of file
index c811400..0c73144 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba77=['catch','getFields','sort','getSubjects','Dynamics365Field','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','ejs','lodash','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','reject','update','then','destroy','stack','name','send','index','map','Dynamics365Configuration','rawAttributes','type','key','query','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','filters','pick','filter','where','VIRTUAL','merge','options','findAll','params','keys','includeAll','include','find','body'];(function(_0x420903,_0x2b07eb){var _0x5b4d13=function(_0x52f21c){while(--_0x52f21c){_0x420903['push'](_0x420903['shift']());}};_0x5b4d13(++_0x2b07eb);}(_0xba77,0x98));var _0x7ba7=function(_0x507ac5,_0x33aaee){_0x507ac5=_0x507ac5-0x0;var _0x12c1bc=_0xba77[_0x507ac5];return _0x12c1bc;};'use strict';var emlformat=require(_0x7ba7('0x0'));var rimraf=require(_0x7ba7('0x1'));var zipdir=require(_0x7ba7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7ba7('0x3'));var moment=require(_0x7ba7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7ba7('0x5'));var util=require(_0x7ba7('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7ba7('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7ba7('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7ba7('0x9'));var deskjs=require(_0x7ba7('0xa'));var toCsv=require(_0x7ba7('0xb'));var querystring=require(_0x7ba7('0xc'));var Papa=require(_0x7ba7('0xd'));var Redis=require('ioredis');var authService=require(_0x7ba7('0xe'));var qs=require(_0x7ba7('0xf'));var as=require(_0x7ba7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7ba7('0x11'))(_0x7ba7('0x12'));var utils=require(_0x7ba7('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x7ba7('0x14'));var db=require(_0x7ba7('0x15'))['db'];function respondWithStatusCode(_0x4c43e4,_0xdf8255){_0xdf8255=_0xdf8255||0xcc;return function(_0x3fd7b3){if(_0x3fd7b3){return _0x4c43e4[_0x7ba7('0x16')](_0xdf8255);}return _0x4c43e4['status'](_0xdf8255)[_0x7ba7('0x17')]();};}function respondWithResult(_0x3e0f5d,_0x218e83){_0x218e83=_0x218e83||0xc8;return function(_0x47cf74){if(_0x47cf74){return _0x3e0f5d['status'](_0x218e83)[_0x7ba7('0x18')](_0x47cf74);}};}function respondWithFilteredResult(_0x280a5b,_0xcce010){return function(_0x1df006){if(_0x1df006){var _0x5064d3=typeof _0xcce010[_0x7ba7('0x19')]===_0x7ba7('0x1a')&&typeof _0xcce010[_0x7ba7('0x1b')]==='undefined';var _0x207717=_0x1df006[_0x7ba7('0x1c')];var _0x586049=_0x5064d3?0x0:_0xcce010[_0x7ba7('0x19')];var _0x2c90c8=_0x5064d3?_0x1df006['count']:_0xcce010[_0x7ba7('0x19')]+_0xcce010[_0x7ba7('0x1b')];var _0x1fd7e4;if(_0x2c90c8>=_0x207717){_0x2c90c8=_0x207717;_0x1fd7e4=0xc8;}else{_0x1fd7e4=0xce;}_0x280a5b[_0x7ba7('0x1d')](_0x1fd7e4);return _0x280a5b[_0x7ba7('0x1e')]('Content-Range',_0x586049+'-'+_0x2c90c8+'/'+_0x207717)[_0x7ba7('0x18')](_0x1df006);}return null;};}function patchUpdates(_0x24a020){return function(_0x2e4624){try{jsonpatch['apply'](_0x2e4624,_0x24a020,!![]);}catch(_0x3ae453){return BPromise[_0x7ba7('0x1f')](_0x3ae453);}return _0x2e4624['save']();};}function saveUpdates(_0x2014d4,_0x5f2ff4){return function(_0x511585){if(_0x511585){return _0x511585[_0x7ba7('0x20')](_0x2014d4)[_0x7ba7('0x21')](function(_0x8fedf0){return _0x8fedf0;});}return null;};}function removeEntity(_0x688b0c,_0x248676){return function(_0x2a03dd){if(_0x2a03dd){return _0x2a03dd[_0x7ba7('0x22')]()['then'](function(){_0x688b0c[_0x7ba7('0x1d')](0xcc)[_0x7ba7('0x17')]();});}};}function handleEntityNotFound(_0x4431a9,_0x1cbb01){return function(_0x38f562){if(!_0x38f562){_0x4431a9['sendStatus'](0x194);}return _0x38f562;};}function handleError(_0xe7f371,_0x2aa8b7){_0x2aa8b7=_0x2aa8b7||0x1f4;return function(_0x4ed73a){logger['error'](_0x4ed73a[_0x7ba7('0x23')]);if(_0x4ed73a[_0x7ba7('0x24')]){delete _0x4ed73a[_0x7ba7('0x24')];}_0xe7f371[_0x7ba7('0x1d')](_0x2aa8b7)[_0x7ba7('0x25')](_0x4ed73a);};}exports[_0x7ba7('0x26')]=function(_0x125b0a,_0x3c4f65){var _0x2d9f0b={},_0x5c7acb={},_0x2d5090={'count':0x0,'rows':[]};var _0xa5bec=_[_0x7ba7('0x27')](db[_0x7ba7('0x28')][_0x7ba7('0x29')],function(_0x410f83){return{'name':_0x410f83['fieldName'],'type':_0x410f83[_0x7ba7('0x2a')][_0x7ba7('0x2b')]};});_0x5c7acb['model']=_[_0x7ba7('0x27')](_0xa5bec,_0x7ba7('0x24'));_0x5c7acb[_0x7ba7('0x2c')]=_['keys'](_0x125b0a[_0x7ba7('0x2c')]);_0x5c7acb['filters']=_[_0x7ba7('0x2d')](_0x5c7acb['model'],_0x5c7acb[_0x7ba7('0x2c')]);_0x2d9f0b[_0x7ba7('0x2e')]=_[_0x7ba7('0x2d')](_0x5c7acb['model'],qs[_0x7ba7('0x2f')](_0x125b0a['query'][_0x7ba7('0x2f')]));_0x2d9f0b[_0x7ba7('0x2e')]=_0x2d9f0b['attributes'][_0x7ba7('0x30')]?_0x2d9f0b[_0x7ba7('0x2e')]:_0x5c7acb[_0x7ba7('0x31')];if(!_0x125b0a[_0x7ba7('0x2c')][_0x7ba7('0x32')](_0x7ba7('0x33'))){_0x2d9f0b[_0x7ba7('0x1b')]=qs['limit'](_0x125b0a['query'][_0x7ba7('0x1b')]);_0x2d9f0b[_0x7ba7('0x19')]=qs['offset'](_0x125b0a['query'][_0x7ba7('0x19')]);}_0x2d9f0b[_0x7ba7('0x34')]=qs['sort'](_0x125b0a[_0x7ba7('0x2c')]['sort']);_0x2d9f0b['where']=qs[_0x7ba7('0x35')](_[_0x7ba7('0x36')](_0x125b0a[_0x7ba7('0x2c')],_0x5c7acb[_0x7ba7('0x35')]),_0xa5bec);if(_0x125b0a[_0x7ba7('0x2c')][_0x7ba7('0x37')]){_0x2d9f0b['where']=_['merge'](_0x2d9f0b[_0x7ba7('0x38')],{'$or':_[_0x7ba7('0x27')](_0xa5bec,function(_0x534a35){if(_0x534a35[_0x7ba7('0x2a')]!==_0x7ba7('0x39')){var _0x476fe8={};_0x476fe8[_0x534a35[_0x7ba7('0x24')]]={'$like':'%'+_0x125b0a[_0x7ba7('0x2c')][_0x7ba7('0x37')]+'%'};return _0x476fe8;}})});}_0x2d9f0b=_[_0x7ba7('0x3a')]({},_0x2d9f0b,_0x125b0a[_0x7ba7('0x3b')]);var _0x585f30={'where':_0x2d9f0b[_0x7ba7('0x38')]};return db['Dynamics365Configuration'][_0x7ba7('0x1c')](_0x585f30)['then'](function(_0x54efb8){_0x2d5090[_0x7ba7('0x1c')]=_0x54efb8;if(_0x125b0a[_0x7ba7('0x2c')]['includeAll']){_0x2d9f0b['include']=[{'all':!![]}];}return db[_0x7ba7('0x28')][_0x7ba7('0x3c')](_0x2d9f0b);})[_0x7ba7('0x21')](function(_0x2a723d){_0x2d5090['rows']=_0x2a723d;return _0x2d5090;})['then'](respondWithFilteredResult(_0x3c4f65,_0x2d9f0b))['catch'](handleError(_0x3c4f65,null));};exports['show']=function(_0x133c9e,_0xdc68fe){var _0x49642={'raw':![],'where':{'id':_0x133c9e[_0x7ba7('0x3d')]['id']}},_0x1c0269={};_0x1c0269[_0x7ba7('0x31')]=_['keys'](db[_0x7ba7('0x28')][_0x7ba7('0x29')]);_0x1c0269['query']=_[_0x7ba7('0x3e')](_0x133c9e[_0x7ba7('0x2c')]);_0x1c0269[_0x7ba7('0x35')]=_[_0x7ba7('0x2d')](_0x1c0269[_0x7ba7('0x31')],_0x1c0269[_0x7ba7('0x2c')]);_0x49642[_0x7ba7('0x2e')]=_[_0x7ba7('0x2d')](_0x1c0269[_0x7ba7('0x31')],qs['fields'](_0x133c9e['query'][_0x7ba7('0x2f')]));_0x49642['attributes']=_0x49642[_0x7ba7('0x2e')][_0x7ba7('0x30')]?_0x49642[_0x7ba7('0x2e')]:_0x1c0269[_0x7ba7('0x31')];if(_0x133c9e[_0x7ba7('0x2c')][_0x7ba7('0x3f')]){_0x49642[_0x7ba7('0x40')]=[{'all':!![]}];}_0x49642=_[_0x7ba7('0x3a')]({},_0x49642,_0x133c9e[_0x7ba7('0x3b')]);return db[_0x7ba7('0x28')][_0x7ba7('0x41')](_0x49642)['then'](handleEntityNotFound(_0xdc68fe,null))[_0x7ba7('0x21')](respondWithResult(_0xdc68fe,null))['catch'](handleError(_0xdc68fe,null));};exports['create']=function(_0x4ca5d1,_0x41ccb9){return db[_0x7ba7('0x28')]['create'](_0x4ca5d1[_0x7ba7('0x42')],{})[_0x7ba7('0x21')](respondWithResult(_0x41ccb9,0xc9))[_0x7ba7('0x43')](handleError(_0x41ccb9,null));};exports[_0x7ba7('0x20')]=function(_0x9a4449,_0x394f95){if(_0x9a4449[_0x7ba7('0x42')]['id']){delete _0x9a4449[_0x7ba7('0x42')]['id'];}return db['Dynamics365Configuration'][_0x7ba7('0x41')]({'where':{'id':_0x9a4449[_0x7ba7('0x3d')]['id']}})['then'](handleEntityNotFound(_0x394f95,null))[_0x7ba7('0x21')](saveUpdates(_0x9a4449[_0x7ba7('0x42')],null))['then'](respondWithResult(_0x394f95,null))['catch'](handleError(_0x394f95,null));};exports[_0x7ba7('0x22')]=function(_0x9f639e,_0x3fa90e){return db['Dynamics365Configuration']['find']({'where':{'id':_0x9f639e[_0x7ba7('0x3d')]['id']}})[_0x7ba7('0x21')](handleEntityNotFound(_0x3fa90e,null))[_0x7ba7('0x21')](removeEntity(_0x3fa90e,null))[_0x7ba7('0x43')](handleError(_0x3fa90e,null));};exports[_0x7ba7('0x44')]=function(_0x107bab,_0x3b77a3,_0x304716){var _0x4b9dfd={};var _0xa0f61b={};var _0x10f1c4;var _0x967912;return db[_0x7ba7('0x28')]['findOne']({'where':{'id':_0x107bab[_0x7ba7('0x3d')]['id']}})[_0x7ba7('0x21')](handleEntityNotFound(_0x3b77a3,null))[_0x7ba7('0x21')](function(_0x579164){if(_0x579164){_0x10f1c4=_0x579164;_0xa0f61b[_0x7ba7('0x31')]=_['keys'](db['Dynamics365Field']['rawAttributes']);_0xa0f61b[_0x7ba7('0x2c')]=_[_0x7ba7('0x3e')](_0x107bab[_0x7ba7('0x2c')]);_0xa0f61b['filters']=_[_0x7ba7('0x2d')](_0xa0f61b['model'],_0xa0f61b[_0x7ba7('0x2c')]);_0x4b9dfd[_0x7ba7('0x2e')]=_[_0x7ba7('0x2d')](_0xa0f61b[_0x7ba7('0x31')],qs[_0x7ba7('0x2f')](_0x107bab['query'][_0x7ba7('0x2f')]));_0x4b9dfd[_0x7ba7('0x2e')]=_0x4b9dfd[_0x7ba7('0x2e')][_0x7ba7('0x30')]?_0x4b9dfd[_0x7ba7('0x2e')]:_0xa0f61b[_0x7ba7('0x31')];_0x4b9dfd['order']=qs[_0x7ba7('0x45')](_0x107bab[_0x7ba7('0x2c')][_0x7ba7('0x45')]);_0x4b9dfd['where']=qs[_0x7ba7('0x35')](_[_0x7ba7('0x36')](_0x107bab[_0x7ba7('0x2c')],_0xa0f61b[_0x7ba7('0x35')]));if(_0x107bab[_0x7ba7('0x2c')][_0x7ba7('0x37')]){_0x4b9dfd[_0x7ba7('0x38')]=_['merge'](_0x4b9dfd[_0x7ba7('0x38')],{'$or':_[_0x7ba7('0x27')](_0x4b9dfd[_0x7ba7('0x2e')],function(_0x1cf732){var _0x1d2b8c={};_0x1d2b8c[_0x1cf732]={'$like':'%'+_0x107bab[_0x7ba7('0x2c')]['filter']+'%'};return _0x1d2b8c;})});}_0x4b9dfd=_[_0x7ba7('0x3a')]({},_0x4b9dfd,_0x107bab[_0x7ba7('0x3b')]);return _0x10f1c4[_0x7ba7('0x44')](_0x4b9dfd);}})[_0x7ba7('0x21')](function(_0x498409){if(_0x498409){_0x967912=_0x498409[_0x7ba7('0x30')];if(!_0x107bab[_0x7ba7('0x2c')][_0x7ba7('0x32')]('nolimit')){_0x4b9dfd[_0x7ba7('0x1b')]=qs[_0x7ba7('0x1b')](_0x107bab[_0x7ba7('0x2c')][_0x7ba7('0x1b')]);_0x4b9dfd[_0x7ba7('0x19')]=qs[_0x7ba7('0x19')](_0x107bab[_0x7ba7('0x2c')][_0x7ba7('0x19')]);}return _0x10f1c4[_0x7ba7('0x44')](_0x4b9dfd);}})[_0x7ba7('0x21')](function(_0x33cd0f){if(_0x33cd0f){return _0x33cd0f?{'count':_0x967912,'rows':_0x33cd0f}:null;}})[_0x7ba7('0x21')](respondWithResult(_0x3b77a3,null))['catch'](handleError(_0x3b77a3,null));};exports[_0x7ba7('0x46')]=function(_0x5855bf,_0x1f7262,_0x16bea8){var _0x16ab7e={};var _0x58acfb={};var _0x1face7;var _0x2c11d6;return db[_0x7ba7('0x28')]['findOne']({'where':{'id':_0x5855bf[_0x7ba7('0x3d')]['id']}})[_0x7ba7('0x21')](handleEntityNotFound(_0x1f7262,null))['then'](function(_0x513966){if(_0x513966){_0x1face7=_0x513966;_0x58acfb[_0x7ba7('0x31')]=_['keys'](db[_0x7ba7('0x47')][_0x7ba7('0x29')]);_0x58acfb['query']=_[_0x7ba7('0x3e')](_0x5855bf[_0x7ba7('0x2c')]);_0x58acfb[_0x7ba7('0x35')]=_[_0x7ba7('0x2d')](_0x58acfb['model'],_0x58acfb['query']);_0x16ab7e[_0x7ba7('0x2e')]=_[_0x7ba7('0x2d')](_0x58acfb['model'],qs['fields'](_0x5855bf[_0x7ba7('0x2c')][_0x7ba7('0x2f')]));_0x16ab7e[_0x7ba7('0x2e')]=_0x16ab7e[_0x7ba7('0x2e')][_0x7ba7('0x30')]?_0x16ab7e[_0x7ba7('0x2e')]:_0x58acfb[_0x7ba7('0x31')];_0x16ab7e[_0x7ba7('0x34')]=qs[_0x7ba7('0x45')](_0x5855bf['query']['sort']);_0x16ab7e[_0x7ba7('0x38')]=qs[_0x7ba7('0x35')](_[_0x7ba7('0x36')](_0x5855bf[_0x7ba7('0x2c')],_0x58acfb[_0x7ba7('0x35')]));if(_0x5855bf[_0x7ba7('0x2c')]['filter']){_0x16ab7e[_0x7ba7('0x38')]=_[_0x7ba7('0x3a')](_0x16ab7e[_0x7ba7('0x38')],{'$or':_[_0x7ba7('0x27')](_0x16ab7e[_0x7ba7('0x2e')],function(_0x42e3b5){var _0x3a6cd6={};_0x3a6cd6[_0x42e3b5]={'$like':'%'+_0x5855bf['query'][_0x7ba7('0x37')]+'%'};return _0x3a6cd6;})});}_0x16ab7e=_[_0x7ba7('0x3a')]({},_0x16ab7e,_0x5855bf['options']);return _0x1face7[_0x7ba7('0x46')](_0x16ab7e);}})['then'](function(_0x3c88c0){if(_0x3c88c0){_0x2c11d6=_0x3c88c0['length'];if(!_0x5855bf[_0x7ba7('0x2c')]['hasOwnProperty'](_0x7ba7('0x33'))){_0x16ab7e[_0x7ba7('0x1b')]=qs[_0x7ba7('0x1b')](_0x5855bf[_0x7ba7('0x2c')][_0x7ba7('0x1b')]);_0x16ab7e[_0x7ba7('0x19')]=qs['offset'](_0x5855bf['query']['offset']);}return _0x1face7[_0x7ba7('0x46')](_0x16ab7e);}})['then'](function(_0x401b6c){if(_0x401b6c){return _0x401b6c?{'count':_0x2c11d6,'rows':_0x401b6c}:null;}})[_0x7ba7('0x21')](respondWithResult(_0x1f7262,null))[_0x7ba7('0x43')](handleError(_0x1f7262,null));};exports[_0x7ba7('0x48')]=function(_0x474d9b,_0x4152c8,_0x266e54){var _0x20a231={};var _0x5b4f64={};var _0x585ccf;var _0x5cc1c9;return db[_0x7ba7('0x28')]['findOne']({'where':{'id':_0x474d9b['params']['id']}})[_0x7ba7('0x21')](handleEntityNotFound(_0x4152c8,null))[_0x7ba7('0x21')](function(_0x597297){if(_0x597297){_0x585ccf=_0x597297;_0x5b4f64[_0x7ba7('0x31')]=_[_0x7ba7('0x3e')](db[_0x7ba7('0x47')][_0x7ba7('0x29')]);_0x5b4f64[_0x7ba7('0x2c')]=_['keys'](_0x474d9b[_0x7ba7('0x2c')]);_0x5b4f64[_0x7ba7('0x35')]=_[_0x7ba7('0x2d')](_0x5b4f64[_0x7ba7('0x31')],_0x5b4f64['query']);_0x20a231[_0x7ba7('0x2e')]=_['intersection'](_0x5b4f64['model'],qs['fields'](_0x474d9b[_0x7ba7('0x2c')]['fields']));_0x20a231[_0x7ba7('0x2e')]=_0x20a231[_0x7ba7('0x2e')][_0x7ba7('0x30')]?_0x20a231[_0x7ba7('0x2e')]:_0x5b4f64[_0x7ba7('0x31')];_0x20a231[_0x7ba7('0x34')]=qs['sort'](_0x474d9b['query'][_0x7ba7('0x45')]);_0x20a231[_0x7ba7('0x38')]=qs[_0x7ba7('0x35')](_[_0x7ba7('0x36')](_0x474d9b[_0x7ba7('0x2c')],_0x5b4f64['filters']));if(_0x474d9b[_0x7ba7('0x2c')]['filter']){_0x20a231[_0x7ba7('0x38')]=_[_0x7ba7('0x3a')](_0x20a231[_0x7ba7('0x38')],{'$or':_[_0x7ba7('0x27')](_0x20a231['attributes'],function(_0x535832){var _0x24e9dd={};_0x24e9dd[_0x535832]={'$like':'%'+_0x474d9b['query'][_0x7ba7('0x37')]+'%'};return _0x24e9dd;})});}_0x20a231=_[_0x7ba7('0x3a')]({},_0x20a231,_0x474d9b['options']);return _0x585ccf['getDescriptions'](_0x20a231);}})[_0x7ba7('0x21')](function(_0x272ee9){if(_0x272ee9){_0x5cc1c9=_0x272ee9[_0x7ba7('0x30')];if(!_0x474d9b['query'][_0x7ba7('0x32')](_0x7ba7('0x33'))){_0x20a231[_0x7ba7('0x1b')]=qs['limit'](_0x474d9b['query'][_0x7ba7('0x1b')]);_0x20a231['offset']=qs[_0x7ba7('0x19')](_0x474d9b[_0x7ba7('0x2c')][_0x7ba7('0x19')]);}return _0x585ccf[_0x7ba7('0x48')](_0x20a231);}})[_0x7ba7('0x21')](function(_0x576c92){if(_0x576c92){return _0x576c92?{'count':_0x5cc1c9,'rows':_0x576c92}:null;}})[_0x7ba7('0x21')](respondWithResult(_0x4152c8,null))[_0x7ba7('0x43')](handleError(_0x4152c8,null));};
\ No newline at end of file
+var _0x2528=['catch','update','findOne','Dynamics365Field','order','getFields','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','find','create','body'];(function(_0x34989d,_0x26815c){var _0x144a0d=function(_0x2484ab){while(--_0x2484ab){_0x34989d['push'](_0x34989d['shift']());}};_0x144a0d(++_0x26815c);}(_0x2528,0x1dc));var _0x8252=function(_0x32165c,_0x22f77e){_0x32165c=_0x32165c-0x0;var _0x1cc11a=_0x2528[_0x32165c];return _0x1cc11a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8252('0x0'));var zipdir=require(_0x8252('0x1'));var jsonpatch=require(_0x8252('0x2'));var rp=require(_0x8252('0x3'));var moment=require(_0x8252('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8252('0x5'));var util=require('util');var path=require(_0x8252('0x6'));var sox=require('sox');var csv=require(_0x8252('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8252('0x8'));var _=require('lodash');var squel=require(_0x8252('0x9'));var crypto=require(_0x8252('0xa'));var jsforce=require(_0x8252('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8252('0xc'));var Papa=require('papaparse');var Redis=require(_0x8252('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x8252('0xe'));var as=require(_0x8252('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8252('0x10'))('api');var utils=require(_0x8252('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x8252('0x12'));var db=require(_0x8252('0x13'))['db'];function respondWithStatusCode(_0xc17bef,_0x2a3c6b){_0x2a3c6b=_0x2a3c6b||0xcc;return function(_0x3e51a5){if(_0x3e51a5){return _0xc17bef[_0x8252('0x14')](_0x2a3c6b);}return _0xc17bef[_0x8252('0x15')](_0x2a3c6b)[_0x8252('0x16')]();};}function respondWithResult(_0x104714,_0x3e1f24){_0x3e1f24=_0x3e1f24||0xc8;return function(_0x3affb7){if(_0x3affb7){return _0x104714[_0x8252('0x15')](_0x3e1f24)[_0x8252('0x17')](_0x3affb7);}};}function respondWithFilteredResult(_0x6b45f1,_0x35939b){return function(_0x343640){if(_0x343640){var _0x207797=typeof _0x35939b['offset']===_0x8252('0x18')&&typeof _0x35939b[_0x8252('0x19')]===_0x8252('0x18');var _0x27bd4e=_0x343640[_0x8252('0x1a')];var _0x13c3e0=_0x207797?0x0:_0x35939b[_0x8252('0x1b')];var _0x4e8931=_0x207797?_0x343640[_0x8252('0x1a')]:_0x35939b[_0x8252('0x1b')]+_0x35939b['limit'];var _0x4d4128;if(_0x4e8931>=_0x27bd4e){_0x4e8931=_0x27bd4e;_0x4d4128=0xc8;}else{_0x4d4128=0xce;}_0x6b45f1[_0x8252('0x15')](_0x4d4128);return _0x6b45f1['set'](_0x8252('0x1c'),_0x13c3e0+'-'+_0x4e8931+'/'+_0x27bd4e)[_0x8252('0x17')](_0x343640);}return null;};}function patchUpdates(_0x5b7fda){return function(_0x4f7fc4){try{jsonpatch[_0x8252('0x1d')](_0x4f7fc4,_0x5b7fda,!![]);}catch(_0x5a86fb){return BPromise[_0x8252('0x1e')](_0x5a86fb);}return _0x4f7fc4[_0x8252('0x1f')]();};}function saveUpdates(_0x563b9d,_0x48a7a4){return function(_0x12e543){if(_0x12e543){return _0x12e543['update'](_0x563b9d)[_0x8252('0x20')](function(_0x355a53){return _0x355a53;});}return null;};}function removeEntity(_0x341d1e,_0xa61786){return function(_0x3b65a5){if(_0x3b65a5){return _0x3b65a5[_0x8252('0x21')]()['then'](function(){_0x341d1e[_0x8252('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x364a60,_0x771d50){return function(_0x57d2ab){if(!_0x57d2ab){_0x364a60[_0x8252('0x14')](0x194);}return _0x57d2ab;};}function handleError(_0x478182,_0x43ed35){_0x43ed35=_0x43ed35||0x1f4;return function(_0x2aff4c){logger[_0x8252('0x22')](_0x2aff4c[_0x8252('0x23')]);if(_0x2aff4c[_0x8252('0x24')]){delete _0x2aff4c[_0x8252('0x24')];}_0x478182['status'](_0x43ed35)['send'](_0x2aff4c);};}exports[_0x8252('0x25')]=function(_0x3d1f09,_0x46bab0){var _0x1a8c5d={},_0x207525={},_0xc28f9d={'count':0x0,'rows':[]};var _0x3a0233=_[_0x8252('0x26')](db[_0x8252('0x27')][_0x8252('0x28')],function(_0x50dd76){return{'name':_0x50dd76[_0x8252('0x29')],'type':_0x50dd76[_0x8252('0x2a')][_0x8252('0x2b')]};});_0x207525[_0x8252('0x2c')]=_[_0x8252('0x26')](_0x3a0233,_0x8252('0x24'));_0x207525[_0x8252('0x2d')]=_[_0x8252('0x2e')](_0x3d1f09[_0x8252('0x2d')]);_0x207525[_0x8252('0x2f')]=_['intersection'](_0x207525[_0x8252('0x2c')],_0x207525[_0x8252('0x2d')]);_0x1a8c5d['attributes']=_[_0x8252('0x30')](_0x207525[_0x8252('0x2c')],qs[_0x8252('0x31')](_0x3d1f09['query'][_0x8252('0x31')]));_0x1a8c5d[_0x8252('0x32')]=_0x1a8c5d[_0x8252('0x32')][_0x8252('0x33')]?_0x1a8c5d[_0x8252('0x32')]:_0x207525[_0x8252('0x2c')];if(!_0x3d1f09[_0x8252('0x2d')][_0x8252('0x34')](_0x8252('0x35'))){_0x1a8c5d['limit']=qs['limit'](_0x3d1f09[_0x8252('0x2d')][_0x8252('0x19')]);_0x1a8c5d[_0x8252('0x1b')]=qs[_0x8252('0x1b')](_0x3d1f09[_0x8252('0x2d')]['offset']);}_0x1a8c5d['order']=qs['sort'](_0x3d1f09[_0x8252('0x2d')][_0x8252('0x36')]);_0x1a8c5d[_0x8252('0x37')]=qs[_0x8252('0x2f')](_[_0x8252('0x38')](_0x3d1f09[_0x8252('0x2d')],_0x207525[_0x8252('0x2f')]),_0x3a0233);if(_0x3d1f09[_0x8252('0x2d')][_0x8252('0x39')]){_0x1a8c5d['where']=_['merge'](_0x1a8c5d[_0x8252('0x37')],{'$or':_[_0x8252('0x26')](_0x3a0233,function(_0x9ddf69){if(_0x9ddf69[_0x8252('0x2a')]!==_0x8252('0x3a')){var _0x5cc2bd={};_0x5cc2bd[_0x9ddf69[_0x8252('0x24')]]={'$like':'%'+_0x3d1f09[_0x8252('0x2d')]['filter']+'%'};return _0x5cc2bd;}})});}_0x1a8c5d=_[_0x8252('0x3b')]({},_0x1a8c5d,_0x3d1f09[_0x8252('0x3c')]);var _0x362d41={'where':_0x1a8c5d[_0x8252('0x37')]};return db[_0x8252('0x27')][_0x8252('0x1a')](_0x362d41)['then'](function(_0x2a141e){_0xc28f9d[_0x8252('0x1a')]=_0x2a141e;if(_0x3d1f09['query'][_0x8252('0x3d')]){_0x1a8c5d[_0x8252('0x3e')]=[{'all':!![]}];}return db[_0x8252('0x27')][_0x8252('0x3f')](_0x1a8c5d);})['then'](function(_0x26f9f0){_0xc28f9d[_0x8252('0x40')]=_0x26f9f0;return _0xc28f9d;})['then'](respondWithFilteredResult(_0x46bab0,_0x1a8c5d))['catch'](handleError(_0x46bab0,null));};exports[_0x8252('0x41')]=function(_0x164d19,_0x2a4fab){var _0x49cf61={'raw':![],'where':{'id':_0x164d19[_0x8252('0x42')]['id']}},_0x135ff6={};_0x135ff6['model']=_[_0x8252('0x2e')](db[_0x8252('0x27')][_0x8252('0x28')]);_0x135ff6['query']=_['keys'](_0x164d19['query']);_0x135ff6[_0x8252('0x2f')]=_[_0x8252('0x30')](_0x135ff6[_0x8252('0x2c')],_0x135ff6[_0x8252('0x2d')]);_0x49cf61['attributes']=_[_0x8252('0x30')](_0x135ff6[_0x8252('0x2c')],qs[_0x8252('0x31')](_0x164d19[_0x8252('0x2d')][_0x8252('0x31')]));_0x49cf61[_0x8252('0x32')]=_0x49cf61[_0x8252('0x32')][_0x8252('0x33')]?_0x49cf61[_0x8252('0x32')]:_0x135ff6['model'];if(_0x164d19[_0x8252('0x2d')][_0x8252('0x3d')]){_0x49cf61[_0x8252('0x3e')]=[{'all':!![]}];}_0x49cf61=_[_0x8252('0x3b')]({},_0x49cf61,_0x164d19[_0x8252('0x3c')]);return db[_0x8252('0x27')][_0x8252('0x43')](_0x49cf61)[_0x8252('0x20')](handleEntityNotFound(_0x2a4fab,null))[_0x8252('0x20')](respondWithResult(_0x2a4fab,null))['catch'](handleError(_0x2a4fab,null));};exports[_0x8252('0x44')]=function(_0x3bf517,_0x2138b6){return db[_0x8252('0x27')][_0x8252('0x44')](_0x3bf517[_0x8252('0x45')],{})['then'](respondWithResult(_0x2138b6,0xc9))[_0x8252('0x46')](handleError(_0x2138b6,null));};exports[_0x8252('0x47')]=function(_0x14b376,_0x97d45d){if(_0x14b376[_0x8252('0x45')]['id']){delete _0x14b376[_0x8252('0x45')]['id'];}return db[_0x8252('0x27')][_0x8252('0x43')]({'where':{'id':_0x14b376[_0x8252('0x42')]['id']}})['then'](handleEntityNotFound(_0x97d45d,null))['then'](saveUpdates(_0x14b376[_0x8252('0x45')],null))[_0x8252('0x20')](respondWithResult(_0x97d45d,null))[_0x8252('0x46')](handleError(_0x97d45d,null));};exports['destroy']=function(_0x20503e,_0x3b754f){return db['Dynamics365Configuration'][_0x8252('0x43')]({'where':{'id':_0x20503e[_0x8252('0x42')]['id']}})[_0x8252('0x20')](handleEntityNotFound(_0x3b754f,null))[_0x8252('0x20')](removeEntity(_0x3b754f,null))[_0x8252('0x46')](handleError(_0x3b754f,null));};exports['getFields']=function(_0x45782b,_0xe715d6,_0x45599d){var _0x30551c={};var _0x152c6e={};var _0x57040a;var _0x5cf38c;return db['Dynamics365Configuration'][_0x8252('0x48')]({'where':{'id':_0x45782b[_0x8252('0x42')]['id']}})[_0x8252('0x20')](handleEntityNotFound(_0xe715d6,null))[_0x8252('0x20')](function(_0xf97ab8){if(_0xf97ab8){_0x57040a=_0xf97ab8;_0x152c6e[_0x8252('0x2c')]=_[_0x8252('0x2e')](db[_0x8252('0x49')][_0x8252('0x28')]);_0x152c6e[_0x8252('0x2d')]=_[_0x8252('0x2e')](_0x45782b[_0x8252('0x2d')]);_0x152c6e[_0x8252('0x2f')]=_['intersection'](_0x152c6e[_0x8252('0x2c')],_0x152c6e[_0x8252('0x2d')]);_0x30551c[_0x8252('0x32')]=_['intersection'](_0x152c6e[_0x8252('0x2c')],qs[_0x8252('0x31')](_0x45782b[_0x8252('0x2d')]['fields']));_0x30551c['attributes']=_0x30551c[_0x8252('0x32')][_0x8252('0x33')]?_0x30551c[_0x8252('0x32')]:_0x152c6e[_0x8252('0x2c')];_0x30551c[_0x8252('0x4a')]=qs[_0x8252('0x36')](_0x45782b[_0x8252('0x2d')]['sort']);_0x30551c[_0x8252('0x37')]=qs[_0x8252('0x2f')](_[_0x8252('0x38')](_0x45782b[_0x8252('0x2d')],_0x152c6e[_0x8252('0x2f')]));if(_0x45782b[_0x8252('0x2d')]['filter']){_0x30551c['where']=_[_0x8252('0x3b')](_0x30551c[_0x8252('0x37')],{'$or':_[_0x8252('0x26')](_0x30551c['attributes'],function(_0x35052f){var _0x4308e7={};_0x4308e7[_0x35052f]={'$like':'%'+_0x45782b[_0x8252('0x2d')][_0x8252('0x39')]+'%'};return _0x4308e7;})});}_0x30551c=_[_0x8252('0x3b')]({},_0x30551c,_0x45782b[_0x8252('0x3c')]);return _0x57040a[_0x8252('0x4b')](_0x30551c);}})[_0x8252('0x20')](function(_0x499563){if(_0x499563){_0x5cf38c=_0x499563[_0x8252('0x33')];if(!_0x45782b[_0x8252('0x2d')][_0x8252('0x34')](_0x8252('0x35'))){_0x30551c[_0x8252('0x19')]=qs['limit'](_0x45782b[_0x8252('0x2d')][_0x8252('0x19')]);_0x30551c['offset']=qs[_0x8252('0x1b')](_0x45782b[_0x8252('0x2d')]['offset']);}return _0x57040a[_0x8252('0x4b')](_0x30551c);}})[_0x8252('0x20')](function(_0x16b2f3){if(_0x16b2f3){return _0x16b2f3?{'count':_0x5cf38c,'rows':_0x16b2f3}:null;}})[_0x8252('0x20')](respondWithResult(_0xe715d6,null))['catch'](handleError(_0xe715d6,null));};exports['getSubjects']=function(_0x21f9b1,_0x56b418,_0x2f8ea0){var _0x3a81df={};var _0x319c4b={};var _0x30cb7a;var _0x33099c;return db[_0x8252('0x27')]['findOne']({'where':{'id':_0x21f9b1[_0x8252('0x42')]['id']}})[_0x8252('0x20')](handleEntityNotFound(_0x56b418,null))[_0x8252('0x20')](function(_0x232851){if(_0x232851){_0x30cb7a=_0x232851;_0x319c4b[_0x8252('0x2c')]=_[_0x8252('0x2e')](db[_0x8252('0x49')]['rawAttributes']);_0x319c4b['query']=_[_0x8252('0x2e')](_0x21f9b1[_0x8252('0x2d')]);_0x319c4b[_0x8252('0x2f')]=_[_0x8252('0x30')](_0x319c4b['model'],_0x319c4b[_0x8252('0x2d')]);_0x3a81df[_0x8252('0x32')]=_[_0x8252('0x30')](_0x319c4b['model'],qs[_0x8252('0x31')](_0x21f9b1[_0x8252('0x2d')][_0x8252('0x31')]));_0x3a81df[_0x8252('0x32')]=_0x3a81df[_0x8252('0x32')][_0x8252('0x33')]?_0x3a81df[_0x8252('0x32')]:_0x319c4b['model'];_0x3a81df[_0x8252('0x4a')]=qs[_0x8252('0x36')](_0x21f9b1[_0x8252('0x2d')][_0x8252('0x36')]);_0x3a81df[_0x8252('0x37')]=qs[_0x8252('0x2f')](_[_0x8252('0x38')](_0x21f9b1[_0x8252('0x2d')],_0x319c4b[_0x8252('0x2f')]));if(_0x21f9b1[_0x8252('0x2d')][_0x8252('0x39')]){_0x3a81df[_0x8252('0x37')]=_[_0x8252('0x3b')](_0x3a81df[_0x8252('0x37')],{'$or':_[_0x8252('0x26')](_0x3a81df['attributes'],function(_0x1f266d){var _0xdbb0b4={};_0xdbb0b4[_0x1f266d]={'$like':'%'+_0x21f9b1['query']['filter']+'%'};return _0xdbb0b4;})});}_0x3a81df=_[_0x8252('0x3b')]({},_0x3a81df,_0x21f9b1[_0x8252('0x3c')]);return _0x30cb7a[_0x8252('0x4c')](_0x3a81df);}})['then'](function(_0x51624f){if(_0x51624f){_0x33099c=_0x51624f[_0x8252('0x33')];if(!_0x21f9b1[_0x8252('0x2d')][_0x8252('0x34')](_0x8252('0x35'))){_0x3a81df[_0x8252('0x19')]=qs['limit'](_0x21f9b1['query'][_0x8252('0x19')]);_0x3a81df['offset']=qs[_0x8252('0x1b')](_0x21f9b1[_0x8252('0x2d')]['offset']);}return _0x30cb7a['getSubjects'](_0x3a81df);}})[_0x8252('0x20')](function(_0x337a1d){if(_0x337a1d){return _0x337a1d?{'count':_0x33099c,'rows':_0x337a1d}:null;}})['then'](respondWithResult(_0x56b418,null))[_0x8252('0x46')](handleError(_0x56b418,null));};exports[_0x8252('0x4d')]=function(_0x38acec,_0x1afb8b,_0x402e61){var _0x3c043a={};var _0x1993ec={};var _0x216cbe;var _0x485215;return db[_0x8252('0x27')]['findOne']({'where':{'id':_0x38acec[_0x8252('0x42')]['id']}})[_0x8252('0x20')](handleEntityNotFound(_0x1afb8b,null))['then'](function(_0x38f6ee){if(_0x38f6ee){_0x216cbe=_0x38f6ee;_0x1993ec[_0x8252('0x2c')]=_[_0x8252('0x2e')](db[_0x8252('0x49')]['rawAttributes']);_0x1993ec['query']=_['keys'](_0x38acec[_0x8252('0x2d')]);_0x1993ec[_0x8252('0x2f')]=_[_0x8252('0x30')](_0x1993ec[_0x8252('0x2c')],_0x1993ec[_0x8252('0x2d')]);_0x3c043a['attributes']=_[_0x8252('0x30')](_0x1993ec['model'],qs[_0x8252('0x31')](_0x38acec[_0x8252('0x2d')][_0x8252('0x31')]));_0x3c043a[_0x8252('0x32')]=_0x3c043a[_0x8252('0x32')]['length']?_0x3c043a[_0x8252('0x32')]:_0x1993ec[_0x8252('0x2c')];_0x3c043a[_0x8252('0x4a')]=qs[_0x8252('0x36')](_0x38acec['query'][_0x8252('0x36')]);_0x3c043a[_0x8252('0x37')]=qs[_0x8252('0x2f')](_[_0x8252('0x38')](_0x38acec[_0x8252('0x2d')],_0x1993ec[_0x8252('0x2f')]));if(_0x38acec[_0x8252('0x2d')][_0x8252('0x39')]){_0x3c043a[_0x8252('0x37')]=_[_0x8252('0x3b')](_0x3c043a[_0x8252('0x37')],{'$or':_[_0x8252('0x26')](_0x3c043a[_0x8252('0x32')],function(_0x42a891){var _0x2a8c21={};_0x2a8c21[_0x42a891]={'$like':'%'+_0x38acec[_0x8252('0x2d')][_0x8252('0x39')]+'%'};return _0x2a8c21;})});}_0x3c043a=_[_0x8252('0x3b')]({},_0x3c043a,_0x38acec[_0x8252('0x3c')]);return _0x216cbe[_0x8252('0x4d')](_0x3c043a);}})[_0x8252('0x20')](function(_0x5d0497){if(_0x5d0497){_0x485215=_0x5d0497[_0x8252('0x33')];if(!_0x38acec['query']['hasOwnProperty'](_0x8252('0x35'))){_0x3c043a[_0x8252('0x19')]=qs[_0x8252('0x19')](_0x38acec[_0x8252('0x2d')]['limit']);_0x3c043a[_0x8252('0x1b')]=qs[_0x8252('0x1b')](_0x38acec['query'][_0x8252('0x1b')]);}return _0x216cbe[_0x8252('0x4d')](_0x3c043a);}})[_0x8252('0x20')](function(_0x6e3ae6){if(_0x6e3ae6){return _0x6e3ae6?{'count':_0x485215,'rows':_0x6e3ae6}:null;}})[_0x8252('0x20')](respondWithResult(_0x1afb8b,null))[_0x8252('0x46')](handleError(_0x1afb8b,null));};
\ No newline at end of file
index 503aa95..9db92b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['request-promise','path','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','api','moment','bluebird'];(function(_0x3edfe3,_0x25a8ed){var _0x56de51=function(_0x11a189){while(--_0x11a189){_0x3edfe3['push'](_0x3edfe3['shift']());}};_0x56de51(++_0x25a8ed);}(_0xbec5,0xe5));var _0x5bec=function(_0x267d8d,_0xe90f65){_0x267d8d=_0x267d8d-0x0;var _0x11a98f=_0xbec5[_0x267d8d];return _0x11a98f;};'use strict';var _=require(_0x5bec('0x0'));var util=require(_0x5bec('0x1'));var logger=require('../../config/logger')(_0x5bec('0x2'));var moment=require(_0x5bec('0x3'));var BPromise=require(_0x5bec('0x4'));var rp=require(_0x5bec('0x5'));var fs=require('fs');var path=require(_0x5bec('0x6'));var rimraf=require('rimraf');var config=require(_0x5bec('0x7'));var attributes=require(_0x5bec('0x8'));module[_0x5bec('0x9')]=function(_0x4aaac6,_0x3ed67a){return _0x4aaac6[_0x5bec('0xa')](_0x5bec('0xb'),attributes,{'tableName':_0x5bec('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c44=['request-promise','path','./intDynamics365Configuration.attributes','define','Dynamics365Configuration','int_dynamics365_configurations','../../config/logger','api','moment','bluebird'];(function(_0x325f92,_0x1b2b18){var _0x41f724=function(_0x19c678){while(--_0x19c678){_0x325f92['push'](_0x325f92['shift']());}};_0x41f724(++_0x1b2b18);}(_0x9c44,0x178));var _0x49c4=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x9c44[_0x2064e5];return _0x21a233;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var moment=require(_0x49c4('0x2'));var BPromise=require(_0x49c4('0x3'));var rp=require(_0x49c4('0x4'));var fs=require('fs');var path=require(_0x49c4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49c4('0x6'));module['exports']=function(_0xc1278f,_0x6030ae){return _0xc1278f[_0x49c4('0x7')](_0x49c4('0x8'),attributes,{'tableName':_0x49c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 601f56f..965d78e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x013b=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x298b27,_0x47ab26){var _0x2074bb=function(_0x33dcbd){while(--_0x33dcbd){_0x298b27['push'](_0x298b27['shift']());}};_0x2074bb(++_0x47ab26);}(_0x013b,0x1c8));var _0xb013=function(_0x560fc6,_0x59bd68){_0x560fc6=_0x560fc6-0x0;var _0x14d08a=_0x013b[_0x560fc6];return _0x14d08a;};'use strict';var _=require(_0xb013('0x0'));var util=require(_0xb013('0x1'));var moment=require(_0xb013('0x2'));var BPromise=require(_0xb013('0x3'));var rs=require(_0xb013('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb013('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb013('0x6'))(_0xb013('0x7'));var config=require(_0xb013('0x8'));var jayson=require(_0xb013('0x9'));var client=jayson[_0xb013('0xa')][_0xb013('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x25b8de,_0x1046fa,_0x2277c6){return new BPromise(function(_0x4a0d70,_0x513777){return client[_0xb013('0xc')](_0x25b8de,_0x2277c6)[_0xb013('0xd')](function(_0x24ded6){logger[_0xb013('0xe')](_0xb013('0xf'),_0x1046fa,_0xb013('0x10'));logger[_0xb013('0x11')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x1046fa,_0xb013('0x10'),JSON['stringify'](_0x24ded6));if(_0x24ded6[_0xb013('0x12')]){if(_0x24ded6[_0xb013('0x12')][_0xb013('0x13')]===0x1f4){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x1046fa,_0x24ded6[_0xb013('0x12')]['message']);return _0x513777(_0x24ded6[_0xb013('0x12')][_0xb013('0x14')]);}logger['error'](_0xb013('0xf'),_0x1046fa,_0x24ded6['error'][_0xb013('0x14')]);return _0x4a0d70(_0x24ded6[_0xb013('0x12')]['message']);}else{logger[_0xb013('0xe')](_0xb013('0xf'),_0x1046fa,_0xb013('0x10'));_0x4a0d70(_0x24ded6[_0xb013('0x15')][_0xb013('0x14')]);}})['catch'](function(_0x134fd9){logger[_0xb013('0x12')](_0xb013('0xf'),_0x1046fa,_0x134fd9);_0x513777(_0x134fd9);});});}
\ No newline at end of file
+var _0x075b=['debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent'];(function(_0x2c8754,_0x2d5a30){var _0xd3e2a=function(_0x5f2f49){while(--_0x5f2f49){_0x2c8754['push'](_0x2c8754['shift']());}};_0xd3e2a(++_0x2d5a30);}(_0x075b,0xb8));var _0xb075=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x075b[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xb075('0x0'));var util=require(_0xb075('0x1'));var moment=require(_0xb075('0x2'));var BPromise=require(_0xb075('0x3'));var rs=require(_0xb075('0x4'));var fs=require('fs');var Redis=require(_0xb075('0x5'));var db=require(_0xb075('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xb075('0x7'))(_0xb075('0x8'));var config=require(_0xb075('0x9'));var jayson=require(_0xb075('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x57ee71,_0x1f56d8,_0x466293){return new BPromise(function(_0x3282d5,_0x43cb8d){return client[_0xb075('0xb')](_0x57ee71,_0x466293)['then'](function(_0xb42175){logger['info'](_0xb075('0xc'),_0x1f56d8,_0xb075('0xd'));logger[_0xb075('0xe')](_0xb075('0xf'),_0x1f56d8,_0xb075('0xd'),JSON[_0xb075('0x10')](_0xb42175));if(_0xb42175[_0xb075('0x11')]){if(_0xb42175[_0xb075('0x11')][_0xb075('0x12')]===0x1f4){logger[_0xb075('0x11')](_0xb075('0xc'),_0x1f56d8,_0xb42175[_0xb075('0x11')][_0xb075('0x13')]);return _0x43cb8d(_0xb42175['error']['message']);}logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x1f56d8,_0xb42175[_0xb075('0x11')]['message']);return _0x3282d5(_0xb42175[_0xb075('0x11')][_0xb075('0x13')]);}else{logger[_0xb075('0x14')](_0xb075('0xc'),_0x1f56d8,_0xb075('0xd'));_0x3282d5(_0xb42175['result'][_0xb075('0x13')]);}})[_0xb075('0x15')](function(_0x4c08d2){logger[_0xb075('0x11')](_0xb075('0xc'),_0x1f56d8,_0x4c08d2);_0x43cb8d(_0x4c08d2);});});}
\ No newline at end of file
index 0d1faef..b246fcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41f5=['post','create','put','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','/:id','show'];(function(_0xc6c696,_0x44ad90){var _0x4ba4b3=function(_0x59c7d1){while(--_0x59c7d1){_0xc6c696['push'](_0xc6c696['shift']());}};_0x4ba4b3(++_0x44ad90);}(_0x41f5,0x1aa));var _0x541f=function(_0x8c7dcb,_0xea478d){_0x8c7dcb=_0x8c7dcb-0x0;var _0x3952e5=_0x41f5[_0x8c7dcb];return _0x3952e5;};'use strict';var multer=require(_0x541f('0x0'));var util=require('util');var path=require(_0x541f('0x1'));var timeout=require(_0x541f('0x2'));var express=require(_0x541f('0x3'));var router=express[_0x541f('0x4')]();var fs_extra=require(_0x541f('0x5'));var auth=require(_0x541f('0x6'));var interaction=require(_0x541f('0x7'));var config=require(_0x541f('0x8'));var controller=require(_0x541f('0x9'));router[_0x541f('0xa')]('/',auth[_0x541f('0xb')](),controller['index']);router['get'](_0x541f('0xc'),auth[_0x541f('0xb')](),controller[_0x541f('0xd')]);router[_0x541f('0xe')]('/',auth[_0x541f('0xb')](),controller[_0x541f('0xf')]);router[_0x541f('0x10')](_0x541f('0xc'),auth['isAuthenticated'](),controller[_0x541f('0x11')]);router[_0x541f('0x12')]('/:id',auth[_0x541f('0xb')](),controller['destroy']);module[_0x541f('0x13')]=router;
\ No newline at end of file
+var _0x8fde=['../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x55d3d9,_0x12630a){var _0x825cc0=function(_0x5533f5){while(--_0x5533f5){_0x55d3d9['push'](_0x55d3d9['shift']());}};_0x825cc0(++_0x12630a);}(_0x8fde,0xa1));var _0xe8fd=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x8fde[_0x46e363];return _0x3fb059;};'use strict';var multer=require(_0xe8fd('0x0'));var util=require(_0xe8fd('0x1'));var path=require(_0xe8fd('0x2'));var timeout=require(_0xe8fd('0x3'));var express=require(_0xe8fd('0x4'));var router=express[_0xe8fd('0x5')]();var fs_extra=require(_0xe8fd('0x6'));var auth=require(_0xe8fd('0x7'));var interaction=require(_0xe8fd('0x8'));var config=require(_0xe8fd('0x9'));var controller=require('./intDynamics365Field.controller');router['get']('/',auth[_0xe8fd('0xa')](),controller[_0xe8fd('0xb')]);router[_0xe8fd('0xc')](_0xe8fd('0xd'),auth['isAuthenticated'](),controller[_0xe8fd('0xe')]);router[_0xe8fd('0xf')]('/',auth[_0xe8fd('0xa')](),controller['create']);router[_0xe8fd('0x10')](_0xe8fd('0xd'),auth[_0xe8fd('0xa')](),controller[_0xe8fd('0x11')]);router[_0xe8fd('0x12')](_0xe8fd('0xd'),auth[_0xe8fd('0xa')](),controller[_0xe8fd('0x13')]);module[_0xe8fd('0x14')]=router;
\ No newline at end of file
index ff660f5..6a8e48e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cb2=['customVariable','keyValue','picklist','STRING','string','BOOLEAN','ENUM','variable'];(function(_0x32e4de,_0x7da1c5){var _0x51ba2a=function(_0x2a7322){while(--_0x2a7322){_0x32e4de['push'](_0x32e4de['shift']());}};_0x51ba2a(++_0x7da1c5);}(_0x0cb2,0x15e));var _0x20cb=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0cb2[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x20cb('0x0')]('string',_0x20cb('0x1'),_0x20cb('0x2'),_0x20cb('0x3'),_0x20cb('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x20cb('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x20cb('0x0')](_0x20cb('0x6'),_0x20cb('0x1'),_0x20cb('0x2'))},'keyContent':{'type':Sequelize[_0x20cb('0x5')]},'idField':{'type':Sequelize[_0x20cb('0x5')]},'nameField':{'type':Sequelize[_0x20cb('0x5')]},'customField':{'type':Sequelize[_0x20cb('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd5e5=['picklist','STRING','string','sequelize','ENUM','variable','customVariable'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0xd5e5,0x1ca));var _0x5d5e=function(_0x47b927,_0x280e4b){_0x47b927=_0x47b927-0x0;var _0x4bac41=_0xd5e5[_0x47b927];return _0x4bac41;};'use strict';var Sequelize=require(_0x5d5e('0x0'));module['exports']={'type':{'type':Sequelize[_0x5d5e('0x1')]('string',_0x5d5e('0x2'),_0x5d5e('0x3'),'keyValue',_0x5d5e('0x4')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x5d5e('0x5')]},'keyType':{'type':Sequelize[_0x5d5e('0x1')](_0x5d5e('0x6'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x5d5e('0x5')]},'idField':{'type':Sequelize[_0x5d5e('0x5')]},'nameField':{'type':Sequelize[_0x5d5e('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5d5e('0x5')]}};
\ No newline at end of file
index 3d5072d..f7dd43a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadca=['model','keys','intersection','query','fields','attributes','length','order','sort','where','filters','pick','VIRTUAL','filter','merge','options','include','Dynamics365Field','rows','catch','show','params','rawAttributes','includeAll','find','create','body','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','undefined','offset','count','limit','set','Content-Range','update','then','sendStatus','error','stack','name','send','index','map','type','key'];(function(_0x10c8bc,_0x29a6ae){var _0x295657=function(_0x5f2053){while(--_0x5f2053){_0x10c8bc['push'](_0x10c8bc['shift']());}};_0x295657(++_0x29a6ae);}(_0xadca,0x17f));var _0xaadc=function(_0x184842,_0x522104){_0x184842=_0x184842-0x0;var _0x574731=_0xadca[_0x184842];return _0x574731;};'use strict';var emlformat=require(_0xaadc('0x0'));var rimraf=require(_0xaadc('0x1'));var zipdir=require(_0xaadc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaadc('0x3'));var moment=require(_0xaadc('0x4'));var BPromise=require(_0xaadc('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xaadc('0x6'));var sox=require('sox');var csv=require(_0xaadc('0x7'));var ejs=require(_0xaadc('0x8'));var fs=require('fs');var fs_extra=require(_0xaadc('0x9'));var _=require('lodash');var squel=require(_0xaadc('0xa'));var crypto=require(_0xaadc('0xb'));var jsforce=require(_0xaadc('0xc'));var deskjs=require(_0xaadc('0xd'));var toCsv=require(_0xaadc('0x7'));var querystring=require('querystring');var Papa=require(_0xaadc('0xe'));var Redis=require(_0xaadc('0xf'));var authService=require(_0xaadc('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xaadc('0x11'));var hardwareService=require(_0xaadc('0x12'));var logger=require(_0xaadc('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xaadc('0x14'));var licenseUtil=require(_0xaadc('0x15'));var db=require(_0xaadc('0x16'))['db'];function respondWithStatusCode(_0x474584,_0xd9e6ab){_0xd9e6ab=_0xd9e6ab||0xcc;return function(_0xc9ade1){if(_0xc9ade1){return _0x474584['sendStatus'](_0xd9e6ab);}return _0x474584['status'](_0xd9e6ab)[_0xaadc('0x17')]();};}function respondWithResult(_0x3cb6fc,_0x4e559d){_0x4e559d=_0x4e559d||0xc8;return function(_0x304cc9){if(_0x304cc9){return _0x3cb6fc[_0xaadc('0x18')](_0x4e559d)[_0xaadc('0x19')](_0x304cc9);}};}function respondWithFilteredResult(_0x30fa34,_0x5023a0){return function(_0x2cda53){if(_0x2cda53){var _0x2ede15=typeof _0x5023a0['offset']===_0xaadc('0x1a')&&typeof _0x5023a0['limit']==='undefined';var _0x21fb1a=_0x2cda53['count'];var _0xe22139=_0x2ede15?0x0:_0x5023a0[_0xaadc('0x1b')];var _0x3d0b5e=_0x2ede15?_0x2cda53[_0xaadc('0x1c')]:_0x5023a0[_0xaadc('0x1b')]+_0x5023a0[_0xaadc('0x1d')];var _0xec7b7f;if(_0x3d0b5e>=_0x21fb1a){_0x3d0b5e=_0x21fb1a;_0xec7b7f=0xc8;}else{_0xec7b7f=0xce;}_0x30fa34[_0xaadc('0x18')](_0xec7b7f);return _0x30fa34[_0xaadc('0x1e')](_0xaadc('0x1f'),_0xe22139+'-'+_0x3d0b5e+'/'+_0x21fb1a)[_0xaadc('0x19')](_0x2cda53);}return null;};}function patchUpdates(_0x167a1e){return function(_0x30684a){try{jsonpatch['apply'](_0x30684a,_0x167a1e,!![]);}catch(_0x391760){return BPromise['reject'](_0x391760);}return _0x30684a['save']();};}function saveUpdates(_0x3ccf76,_0x41cad0){return function(_0x37ad58){if(_0x37ad58){return _0x37ad58[_0xaadc('0x20')](_0x3ccf76)['then'](function(_0x59d8bb){return _0x59d8bb;});}return null;};}function removeEntity(_0x548b3d,_0x5b5709){return function(_0x5c75a9){if(_0x5c75a9){return _0x5c75a9['destroy']()[_0xaadc('0x21')](function(){_0x548b3d[_0xaadc('0x18')](0xcc)[_0xaadc('0x17')]();});}};}function handleEntityNotFound(_0x2679c3,_0x37a996){return function(_0x300acb){if(!_0x300acb){_0x2679c3[_0xaadc('0x22')](0x194);}return _0x300acb;};}function handleError(_0x16fdaf,_0x18a63b){_0x18a63b=_0x18a63b||0x1f4;return function(_0x2f3aa0){logger[_0xaadc('0x23')](_0x2f3aa0[_0xaadc('0x24')]);if(_0x2f3aa0['name']){delete _0x2f3aa0[_0xaadc('0x25')];}_0x16fdaf['status'](_0x18a63b)[_0xaadc('0x26')](_0x2f3aa0);};}exports[_0xaadc('0x27')]=function(_0x110cf7,_0x285541){var _0x3f2ff9={},_0x549d72={},_0x44701c={'count':0x0,'rows':[]};var _0x59e55a=_[_0xaadc('0x28')](db['Dynamics365Field']['rawAttributes'],function(_0x47e17b){return{'name':_0x47e17b['fieldName'],'type':_0x47e17b[_0xaadc('0x29')][_0xaadc('0x2a')]};});_0x549d72[_0xaadc('0x2b')]=_[_0xaadc('0x28')](_0x59e55a,_0xaadc('0x25'));_0x549d72['query']=_[_0xaadc('0x2c')](_0x110cf7['query']);_0x549d72['filters']=_[_0xaadc('0x2d')](_0x549d72[_0xaadc('0x2b')],_0x549d72[_0xaadc('0x2e')]);_0x3f2ff9['attributes']=_['intersection'](_0x549d72[_0xaadc('0x2b')],qs[_0xaadc('0x2f')](_0x110cf7[_0xaadc('0x2e')][_0xaadc('0x2f')]));_0x3f2ff9[_0xaadc('0x30')]=_0x3f2ff9['attributes'][_0xaadc('0x31')]?_0x3f2ff9[_0xaadc('0x30')]:_0x549d72[_0xaadc('0x2b')];if(!_0x110cf7[_0xaadc('0x2e')]['hasOwnProperty']('nolimit')){_0x3f2ff9[_0xaadc('0x1d')]=qs[_0xaadc('0x1d')](_0x110cf7[_0xaadc('0x2e')][_0xaadc('0x1d')]);_0x3f2ff9[_0xaadc('0x1b')]=qs[_0xaadc('0x1b')](_0x110cf7[_0xaadc('0x2e')]['offset']);}_0x3f2ff9[_0xaadc('0x32')]=qs[_0xaadc('0x33')](_0x110cf7['query']['sort']);_0x3f2ff9[_0xaadc('0x34')]=qs[_0xaadc('0x35')](_[_0xaadc('0x36')](_0x110cf7[_0xaadc('0x2e')],_0x549d72[_0xaadc('0x35')]),_0x59e55a);if(_0x110cf7[_0xaadc('0x2e')]['filter']){_0x3f2ff9[_0xaadc('0x34')]=_['merge'](_0x3f2ff9[_0xaadc('0x34')],{'$or':_['map'](_0x59e55a,function(_0x17186a){if(_0x17186a[_0xaadc('0x29')]!==_0xaadc('0x37')){var _0x3d8674={};_0x3d8674[_0x17186a['name']]={'$like':'%'+_0x110cf7[_0xaadc('0x2e')][_0xaadc('0x38')]+'%'};return _0x3d8674;}})});}_0x3f2ff9=_[_0xaadc('0x39')]({},_0x3f2ff9,_0x110cf7[_0xaadc('0x3a')]);var _0xebcadd={'where':_0x3f2ff9[_0xaadc('0x34')]};return db['Dynamics365Field']['count'](_0xebcadd)[_0xaadc('0x21')](function(_0x3c1c32){_0x44701c['count']=_0x3c1c32;if(_0x110cf7[_0xaadc('0x2e')]['includeAll']){_0x3f2ff9[_0xaadc('0x3b')]=[{'all':!![]}];}return db[_0xaadc('0x3c')]['findAll'](_0x3f2ff9);})[_0xaadc('0x21')](function(_0x34c263){_0x44701c[_0xaadc('0x3d')]=_0x34c263;return _0x44701c;})[_0xaadc('0x21')](respondWithFilteredResult(_0x285541,_0x3f2ff9))[_0xaadc('0x3e')](handleError(_0x285541,null));};exports[_0xaadc('0x3f')]=function(_0x328f25,_0x383d2f){var _0x41f10c={'raw':!![],'where':{'id':_0x328f25[_0xaadc('0x40')]['id']}},_0x4ad27e={};_0x4ad27e['model']=_[_0xaadc('0x2c')](db['Dynamics365Field'][_0xaadc('0x41')]);_0x4ad27e['query']=_['keys'](_0x328f25[_0xaadc('0x2e')]);_0x4ad27e['filters']=_[_0xaadc('0x2d')](_0x4ad27e[_0xaadc('0x2b')],_0x4ad27e[_0xaadc('0x2e')]);_0x41f10c[_0xaadc('0x30')]=_[_0xaadc('0x2d')](_0x4ad27e['model'],qs['fields'](_0x328f25[_0xaadc('0x2e')][_0xaadc('0x2f')]));_0x41f10c[_0xaadc('0x30')]=_0x41f10c[_0xaadc('0x30')][_0xaadc('0x31')]?_0x41f10c['attributes']:_0x4ad27e['model'];if(_0x328f25['query'][_0xaadc('0x42')]){_0x41f10c[_0xaadc('0x3b')]=[{'all':!![]}];}_0x41f10c=_[_0xaadc('0x39')]({},_0x41f10c,_0x328f25[_0xaadc('0x3a')]);return db[_0xaadc('0x3c')][_0xaadc('0x43')](_0x41f10c)[_0xaadc('0x21')](handleEntityNotFound(_0x383d2f,null))[_0xaadc('0x21')](respondWithResult(_0x383d2f,null))[_0xaadc('0x3e')](handleError(_0x383d2f,null));};exports[_0xaadc('0x44')]=function(_0x5a1d6c,_0x55dba7){return db['Dynamics365Field'][_0xaadc('0x44')](_0x5a1d6c[_0xaadc('0x45')],{})[_0xaadc('0x21')](respondWithResult(_0x55dba7,0xc9))[_0xaadc('0x3e')](handleError(_0x55dba7,null));};exports[_0xaadc('0x20')]=function(_0x5635a8,_0x26933d){if(_0x5635a8[_0xaadc('0x45')]['id']){delete _0x5635a8[_0xaadc('0x45')]['id'];}return db[_0xaadc('0x3c')][_0xaadc('0x43')]({'where':{'id':_0x5635a8[_0xaadc('0x40')]['id']}})[_0xaadc('0x21')](handleEntityNotFound(_0x26933d,null))[_0xaadc('0x21')](saveUpdates(_0x5635a8[_0xaadc('0x45')],null))[_0xaadc('0x21')](respondWithResult(_0x26933d,null))[_0xaadc('0x3e')](handleError(_0x26933d,null));};exports[_0xaadc('0x46')]=function(_0xceacb1,_0x341e6e){return db['Dynamics365Field'][_0xaadc('0x43')]({'where':{'id':_0xceacb1[_0xaadc('0x40')]['id']}})[_0xaadc('0x21')](handleEntityNotFound(_0x341e6e,null))[_0xaadc('0x21')](removeEntity(_0x341e6e,null))[_0xaadc('0x3e')](handleError(_0x341e6e,null));};
\ No newline at end of file
+var _0xb9ae=['model','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','params','rawAttributes','intersection','includeAll','options','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','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','api','../../config/environment','../../mysqldb','json','offset','undefined','count','limit','status','Content-Range','apply','reject','update','then','destroy','end','sendStatus','error','stack','name','send','Dynamics365Field','fieldName','type','key','map','keys','query','filters'];(function(_0x2644f8,_0x40977c){var _0x233fea=function(_0x308f49){while(--_0x308f49){_0x2644f8['push'](_0x2644f8['shift']());}};_0x233fea(++_0x40977c);}(_0xb9ae,0xf2));var _0xeb9a=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xb9ae[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0xeb9a('0x0'));var rimraf=require(_0xeb9a('0x1'));var zipdir=require(_0xeb9a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xeb9a('0x3'));var moment=require(_0xeb9a('0x4'));var BPromise=require(_0xeb9a('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xeb9a('0x6'));var sox=require('sox');var csv=require(_0xeb9a('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeb9a('0x8'));var _=require('lodash');var squel=require(_0xeb9a('0x9'));var crypto=require(_0xeb9a('0xa'));var jsforce=require(_0xeb9a('0xb'));var deskjs=require(_0xeb9a('0xc'));var toCsv=require(_0xeb9a('0x7'));var querystring=require(_0xeb9a('0xd'));var Papa=require(_0xeb9a('0xe'));var Redis=require(_0xeb9a('0xf'));var authService=require(_0xeb9a('0x10'));var qs=require(_0xeb9a('0x11'));var as=require(_0xeb9a('0x12'));var hardwareService=require(_0xeb9a('0x13'));var logger=require(_0xeb9a('0x14'))(_0xeb9a('0x15'));var utils=require('../../config/utils');var config=require(_0xeb9a('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xeb9a('0x17'))['db'];function respondWithStatusCode(_0x363eee,_0x5447b3){_0x5447b3=_0x5447b3||0xcc;return function(_0x3be665){if(_0x3be665){return _0x363eee['sendStatus'](_0x5447b3);}return _0x363eee['status'](_0x5447b3)['end']();};}function respondWithResult(_0x2e3889,_0x4af0f4){_0x4af0f4=_0x4af0f4||0xc8;return function(_0x5552b9){if(_0x5552b9){return _0x2e3889['status'](_0x4af0f4)[_0xeb9a('0x18')](_0x5552b9);}};}function respondWithFilteredResult(_0x68957b,_0x5c8e1e){return function(_0xf48e8){if(_0xf48e8){var _0x4bdf2c=typeof _0x5c8e1e[_0xeb9a('0x19')]===_0xeb9a('0x1a')&&typeof _0x5c8e1e['limit']===_0xeb9a('0x1a');var _0x3e0ff0=_0xf48e8[_0xeb9a('0x1b')];var _0x3262e0=_0x4bdf2c?0x0:_0x5c8e1e[_0xeb9a('0x19')];var _0x3b0600=_0x4bdf2c?_0xf48e8[_0xeb9a('0x1b')]:_0x5c8e1e[_0xeb9a('0x19')]+_0x5c8e1e[_0xeb9a('0x1c')];var _0x322a9b;if(_0x3b0600>=_0x3e0ff0){_0x3b0600=_0x3e0ff0;_0x322a9b=0xc8;}else{_0x322a9b=0xce;}_0x68957b[_0xeb9a('0x1d')](_0x322a9b);return _0x68957b['set'](_0xeb9a('0x1e'),_0x3262e0+'-'+_0x3b0600+'/'+_0x3e0ff0)[_0xeb9a('0x18')](_0xf48e8);}return null;};}function patchUpdates(_0x4bcba6){return function(_0x2bb0df){try{jsonpatch[_0xeb9a('0x1f')](_0x2bb0df,_0x4bcba6,!![]);}catch(_0x44d51f){return BPromise[_0xeb9a('0x20')](_0x44d51f);}return _0x2bb0df['save']();};}function saveUpdates(_0x1aad2d,_0x1a4fc0){return function(_0x5abe83){if(_0x5abe83){return _0x5abe83[_0xeb9a('0x21')](_0x1aad2d)[_0xeb9a('0x22')](function(_0x5944ec){return _0x5944ec;});}return null;};}function removeEntity(_0x4fc493,_0x1cdba6){return function(_0x2b70bd){if(_0x2b70bd){return _0x2b70bd[_0xeb9a('0x23')]()[_0xeb9a('0x22')](function(){_0x4fc493[_0xeb9a('0x1d')](0xcc)[_0xeb9a('0x24')]();});}};}function handleEntityNotFound(_0x10974c,_0x2c58fa){return function(_0x5764ef){if(!_0x5764ef){_0x10974c[_0xeb9a('0x25')](0x194);}return _0x5764ef;};}function handleError(_0x33c030,_0xa53da5){_0xa53da5=_0xa53da5||0x1f4;return function(_0x395d48){logger[_0xeb9a('0x26')](_0x395d48[_0xeb9a('0x27')]);if(_0x395d48[_0xeb9a('0x28')]){delete _0x395d48[_0xeb9a('0x28')];}_0x33c030[_0xeb9a('0x1d')](_0xa53da5)[_0xeb9a('0x29')](_0x395d48);};}exports['index']=function(_0x4c6cf5,_0x5191b5){var _0xd29b66={},_0x3635f8={},_0x498ad8={'count':0x0,'rows':[]};var _0x31a923=_['map'](db[_0xeb9a('0x2a')]['rawAttributes'],function(_0x3db746){return{'name':_0x3db746[_0xeb9a('0x2b')],'type':_0x3db746[_0xeb9a('0x2c')][_0xeb9a('0x2d')]};});_0x3635f8['model']=_[_0xeb9a('0x2e')](_0x31a923,_0xeb9a('0x28'));_0x3635f8['query']=_[_0xeb9a('0x2f')](_0x4c6cf5[_0xeb9a('0x30')]);_0x3635f8[_0xeb9a('0x31')]=_['intersection'](_0x3635f8[_0xeb9a('0x32')],_0x3635f8[_0xeb9a('0x30')]);_0xd29b66[_0xeb9a('0x33')]=_['intersection'](_0x3635f8['model'],qs['fields'](_0x4c6cf5[_0xeb9a('0x30')][_0xeb9a('0x34')]));_0xd29b66[_0xeb9a('0x33')]=_0xd29b66['attributes'][_0xeb9a('0x35')]?_0xd29b66[_0xeb9a('0x33')]:_0x3635f8['model'];if(!_0x4c6cf5['query'][_0xeb9a('0x36')]('nolimit')){_0xd29b66[_0xeb9a('0x1c')]=qs['limit'](_0x4c6cf5[_0xeb9a('0x30')][_0xeb9a('0x1c')]);_0xd29b66['offset']=qs[_0xeb9a('0x19')](_0x4c6cf5['query'][_0xeb9a('0x19')]);}_0xd29b66['order']=qs['sort'](_0x4c6cf5[_0xeb9a('0x30')][_0xeb9a('0x37')]);_0xd29b66[_0xeb9a('0x38')]=qs['filters'](_[_0xeb9a('0x39')](_0x4c6cf5['query'],_0x3635f8[_0xeb9a('0x31')]),_0x31a923);if(_0x4c6cf5[_0xeb9a('0x30')][_0xeb9a('0x3a')]){_0xd29b66[_0xeb9a('0x38')]=_[_0xeb9a('0x3b')](_0xd29b66[_0xeb9a('0x38')],{'$or':_[_0xeb9a('0x2e')](_0x31a923,function(_0x411832){if(_0x411832[_0xeb9a('0x2c')]!==_0xeb9a('0x3c')){var _0x35e611={};_0x35e611[_0x411832[_0xeb9a('0x28')]]={'$like':'%'+_0x4c6cf5[_0xeb9a('0x30')]['filter']+'%'};return _0x35e611;}})});}_0xd29b66=_[_0xeb9a('0x3b')]({},_0xd29b66,_0x4c6cf5['options']);var _0x275958={'where':_0xd29b66[_0xeb9a('0x38')]};return db[_0xeb9a('0x2a')][_0xeb9a('0x1b')](_0x275958)['then'](function(_0x226a9b){_0x498ad8[_0xeb9a('0x1b')]=_0x226a9b;if(_0x4c6cf5[_0xeb9a('0x30')]['includeAll']){_0xd29b66[_0xeb9a('0x3d')]=[{'all':!![]}];}return db[_0xeb9a('0x2a')][_0xeb9a('0x3e')](_0xd29b66);})[_0xeb9a('0x22')](function(_0x11d049){_0x498ad8[_0xeb9a('0x3f')]=_0x11d049;return _0x498ad8;})[_0xeb9a('0x22')](respondWithFilteredResult(_0x5191b5,_0xd29b66))[_0xeb9a('0x40')](handleError(_0x5191b5,null));};exports['show']=function(_0x2451aa,_0x35e338){var _0x38d369={'raw':!![],'where':{'id':_0x2451aa[_0xeb9a('0x41')]['id']}},_0x27c424={};_0x27c424[_0xeb9a('0x32')]=_['keys'](db[_0xeb9a('0x2a')][_0xeb9a('0x42')]);_0x27c424['query']=_[_0xeb9a('0x2f')](_0x2451aa['query']);_0x27c424[_0xeb9a('0x31')]=_['intersection'](_0x27c424[_0xeb9a('0x32')],_0x27c424[_0xeb9a('0x30')]);_0x38d369[_0xeb9a('0x33')]=_[_0xeb9a('0x43')](_0x27c424[_0xeb9a('0x32')],qs[_0xeb9a('0x34')](_0x2451aa[_0xeb9a('0x30')][_0xeb9a('0x34')]));_0x38d369[_0xeb9a('0x33')]=_0x38d369[_0xeb9a('0x33')]['length']?_0x38d369[_0xeb9a('0x33')]:_0x27c424[_0xeb9a('0x32')];if(_0x2451aa['query'][_0xeb9a('0x44')]){_0x38d369['include']=[{'all':!![]}];}_0x38d369=_[_0xeb9a('0x3b')]({},_0x38d369,_0x2451aa[_0xeb9a('0x45')]);return db['Dynamics365Field'][_0xeb9a('0x46')](_0x38d369)['then'](handleEntityNotFound(_0x35e338,null))['then'](respondWithResult(_0x35e338,null))['catch'](handleError(_0x35e338,null));};exports[_0xeb9a('0x47')]=function(_0x3a995e,_0x401013){return db[_0xeb9a('0x2a')][_0xeb9a('0x47')](_0x3a995e[_0xeb9a('0x48')],{})[_0xeb9a('0x22')](respondWithResult(_0x401013,0xc9))['catch'](handleError(_0x401013,null));};exports[_0xeb9a('0x21')]=function(_0x28c596,_0x4dea12){if(_0x28c596[_0xeb9a('0x48')]['id']){delete _0x28c596[_0xeb9a('0x48')]['id'];}return db[_0xeb9a('0x2a')][_0xeb9a('0x46')]({'where':{'id':_0x28c596['params']['id']}})[_0xeb9a('0x22')](handleEntityNotFound(_0x4dea12,null))[_0xeb9a('0x22')](saveUpdates(_0x28c596[_0xeb9a('0x48')],null))[_0xeb9a('0x22')](respondWithResult(_0x4dea12,null))[_0xeb9a('0x40')](handleError(_0x4dea12,null));};exports[_0xeb9a('0x23')]=function(_0x26ecf5,_0x2171cd){return db[_0xeb9a('0x2a')][_0xeb9a('0x46')]({'where':{'id':_0x26ecf5[_0xeb9a('0x41')]['id']}})['then'](handleEntityNotFound(_0x2171cd,null))[_0xeb9a('0x22')](removeEntity(_0x2171cd,null))[_0xeb9a('0x40')](handleError(_0x2171cd,null));};
\ No newline at end of file
index 948756c..e5ab1bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cdc=['Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','FieldId','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define'];(function(_0x3ac78b,_0x1c86d6){var _0x6a0a9d=function(_0x1440cd){while(--_0x1440cd){_0x3ac78b['push'](_0x3ac78b['shift']());}};_0x6a0a9d(++_0x1c86d6);}(_0x6cdc,0x174));var _0xc6cd=function(_0x31c7b6,_0x5778bb){_0x31c7b6=_0x31c7b6-0x0;var _0x5ea4cc=_0x6cdc[_0x31c7b6];return _0x5ea4cc;};'use strict';var _=require(_0xc6cd('0x0'));var util=require(_0xc6cd('0x1'));var logger=require(_0xc6cd('0x2'))(_0xc6cd('0x3'));var moment=require(_0xc6cd('0x4'));var BPromise=require(_0xc6cd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc6cd('0x6'));var rimraf=require(_0xc6cd('0x7'));var config=require(_0xc6cd('0x8'));var attributes=require(_0xc6cd('0x9'));module[_0xc6cd('0xa')]=function(_0x45cce1,_0x409d8c){return _0x45cce1[_0xc6cd('0xb')](_0xc6cd('0xc'),attributes,{'tableName':_0xc6cd('0xd'),'paranoid':![],'indexes':[{'name':_0xc6cd('0xe'),'fields':['idField',_0xc6cd('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x13d3=['./intDynamics365Field.attributes','exports','define','Dynamics365Field','dynamics365_unique_index','idField','FieldId','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x22c684,_0x753309){var _0x39fcbb=function(_0x38b631){while(--_0x38b631){_0x22c684['push'](_0x22c684['shift']());}};_0x39fcbb(++_0x753309);}(_0x13d3,0x67));var _0x313d=function(_0x144f34,_0x111ff6){_0x144f34=_0x144f34-0x0;var _0xf50755=_0x13d3[_0x144f34];return _0xf50755;};'use strict';var _=require(_0x313d('0x0'));var util=require(_0x313d('0x1'));var logger=require(_0x313d('0x2'))(_0x313d('0x3'));var moment=require('moment');var BPromise=require(_0x313d('0x4'));var rp=require(_0x313d('0x5'));var fs=require('fs');var path=require(_0x313d('0x6'));var rimraf=require(_0x313d('0x7'));var config=require(_0x313d('0x8'));var attributes=require(_0x313d('0x9'));module[_0x313d('0xa')]=function(_0xbb3edd,_0x29c76d){return _0xbb3edd[_0x313d('0xb')](_0x313d('0xc'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0x313d('0xd'),'fields':[_0x313d('0xe'),_0x313d('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d01d9a1..de2607e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1abd=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Dynamics365Field,\x20%s,\x20%s','request\x20sent','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','util'];(function(_0x2510ba,_0x31a470){var _0x3732b8=function(_0x5734f0){while(--_0x5734f0){_0x2510ba['push'](_0x2510ba['shift']());}};_0x3732b8(++_0x31a470);}(_0x1abd,0x12a));var _0xd1ab=function(_0x5227ab,_0x514da4){_0x5227ab=_0x5227ab-0x0;var _0x3dc702=_0x1abd[_0x5227ab];return _0x3dc702;};'use strict';var _=require('lodash');var util=require(_0xd1ab('0x0'));var moment=require(_0xd1ab('0x1'));var BPromise=require(_0xd1ab('0x2'));var rs=require(_0xd1ab('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd1ab('0x4'))['db'];var utils=require(_0xd1ab('0x5'));var logger=require(_0xd1ab('0x6'))(_0xd1ab('0x7'));var config=require(_0xd1ab('0x8'));var jayson=require(_0xd1ab('0x9'));var client=jayson[_0xd1ab('0xa')][_0xd1ab('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2ba0b5,_0x4dbbcb,_0xc17455){return new BPromise(function(_0xb21098,_0x5739d2){return client[_0xd1ab('0xc')](_0x2ba0b5,_0xc17455)[_0xd1ab('0xd')](function(_0x302133){logger['info'](_0xd1ab('0xe'),_0x4dbbcb,_0xd1ab('0xf'));logger['debug'](_0xd1ab('0x10'),_0x4dbbcb,_0xd1ab('0xf'),JSON[_0xd1ab('0x11')](_0x302133));if(_0x302133[_0xd1ab('0x12')]){if(_0x302133[_0xd1ab('0x12')][_0xd1ab('0x13')]===0x1f4){logger[_0xd1ab('0x12')]('Dynamics365Field,\x20%s,\x20%s',_0x4dbbcb,_0x302133[_0xd1ab('0x12')]['message']);return _0x5739d2(_0x302133[_0xd1ab('0x12')][_0xd1ab('0x14')]);}logger[_0xd1ab('0x12')](_0xd1ab('0xe'),_0x4dbbcb,_0x302133[_0xd1ab('0x12')]['message']);return _0xb21098(_0x302133[_0xd1ab('0x12')][_0xd1ab('0x14')]);}else{logger[_0xd1ab('0x15')](_0xd1ab('0xe'),_0x4dbbcb,_0xd1ab('0xf'));_0xb21098(_0x302133['result'][_0xd1ab('0x14')]);}})[_0xd1ab('0x16')](function(_0x5618e6){logger[_0xd1ab('0x12')](_0xd1ab('0xe'),_0x4dbbcb,_0x5618e6);_0x5739d2(_0x5618e6);});});}
\ No newline at end of file
+var _0x3460=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','../../mysqldb','../../config/utils'];(function(_0x4f840d,_0x5d6218){var _0x315f81=function(_0x1a6e6a){while(--_0x1a6e6a){_0x4f840d['push'](_0x4f840d['shift']());}};_0x315f81(++_0x5d6218);}(_0x3460,0x1b3));var _0x0346=function(_0x548e3e,_0x288c74){_0x548e3e=_0x548e3e-0x0;var _0x5197c3=_0x3460[_0x548e3e];return _0x5197c3;};'use strict';var _=require('lodash');var util=require(_0x0346('0x0'));var moment=require(_0x0346('0x1'));var BPromise=require(_0x0346('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0346('0x3'))['db'];var utils=require(_0x0346('0x4'));var logger=require(_0x0346('0x5'))(_0x0346('0x6'));var config=require(_0x0346('0x7'));var jayson=require(_0x0346('0x8'));var client=jayson['client'][_0x0346('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xbb9090,_0x4244c2,_0x5cf779){return new BPromise(function(_0xbfa412,_0x569d1a){return client[_0x0346('0xa')](_0xbb9090,_0x5cf779)[_0x0346('0xb')](function(_0x3477fc){logger[_0x0346('0xc')](_0x0346('0xd'),_0x4244c2,_0x0346('0xe'));logger[_0x0346('0xf')](_0x0346('0x10'),_0x4244c2,_0x0346('0xe'),JSON[_0x0346('0x11')](_0x3477fc));if(_0x3477fc[_0x0346('0x12')]){if(_0x3477fc[_0x0346('0x12')][_0x0346('0x13')]===0x1f4){logger[_0x0346('0x12')]('Dynamics365Field,\x20%s,\x20%s',_0x4244c2,_0x3477fc['error']['message']);return _0x569d1a(_0x3477fc[_0x0346('0x12')][_0x0346('0x14')]);}logger[_0x0346('0x12')](_0x0346('0xd'),_0x4244c2,_0x3477fc[_0x0346('0x12')]['message']);return _0xbfa412(_0x3477fc[_0x0346('0x12')][_0x0346('0x14')]);}else{logger[_0x0346('0xc')](_0x0346('0xd'),_0x4244c2,_0x0346('0xe'));_0xbfa412(_0x3477fc[_0x0346('0x15')][_0x0346('0x14')]);}})['catch'](function(_0xf2d046){logger[_0x0346('0x12')](_0x0346('0xd'),_0x4244c2,_0xf2d046);_0x569d1a(_0xf2d046);});});}
\ No newline at end of file
index 0e113cd..82465fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe867=['create','post','put','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields'];(function(_0x14f68b,_0x2b3261){var _0x54dc6e=function(_0x53bb9c){while(--_0x53bb9c){_0x14f68b['push'](_0x14f68b['shift']());}};_0x54dc6e(++_0x2b3261);}(_0xe867,0x13e));var _0x7e86=function(_0x2ad6d7,_0x3d7945){_0x2ad6d7=_0x2ad6d7-0x0;var _0x3b4109=_0xe867[_0x2ad6d7];return _0x3b4109;};'use strict';var multer=require(_0x7e86('0x0'));var util=require(_0x7e86('0x1'));var path=require('path');var timeout=require(_0x7e86('0x2'));var express=require(_0x7e86('0x3'));var router=express[_0x7e86('0x4')]();var fs_extra=require(_0x7e86('0x5'));var auth=require(_0x7e86('0x6'));var interaction=require(_0x7e86('0x7'));var config=require(_0x7e86('0x8'));var controller=require(_0x7e86('0x9'));router[_0x7e86('0xa')]('/',auth[_0x7e86('0xb')](),controller[_0x7e86('0xc')]);router[_0x7e86('0xa')](_0x7e86('0xd'),auth['isAuthenticated'](),controller[_0x7e86('0xe')]);router[_0x7e86('0xa')](_0x7e86('0xf'),auth[_0x7e86('0xb')](),controller[_0x7e86('0x10')]);router['get'](_0x7e86('0x11'),auth[_0x7e86('0xb')](),controller['getFields']);router['post']('/',auth[_0x7e86('0xb')](),controller[_0x7e86('0x12')]);router[_0x7e86('0x13')](_0x7e86('0xf'),auth[_0x7e86('0xb')](),controller['addConfiguration']);router[_0x7e86('0x14')](_0x7e86('0xd'),auth['isAuthenticated'](),controller[_0x7e86('0x15')]);router['delete']('/:id',auth[_0x7e86('0xb')](),controller[_0x7e86('0x16')]);module[_0x7e86('0x17')]=router;
\ No newline at end of file
+var _0xe776=['addConfiguration','put','update','/:id','destroy','util','path','connect-timeout','express','Router','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','getFields','post','create'];(function(_0x27c66c,_0xfb0ffd){var _0x17e0d1=function(_0x10cd45){while(--_0x10cd45){_0x27c66c['push'](_0x27c66c['shift']());}};_0x17e0d1(++_0xfb0ffd);}(_0xe776,0x98));var _0x6e77=function(_0x4a98a3,_0x57451a){_0x4a98a3=_0x4a98a3-0x0;var _0x3c33be=_0xe776[_0x4a98a3];return _0x3c33be;};'use strict';var multer=require('multer');var util=require(_0x6e77('0x0'));var path=require(_0x6e77('0x1'));var timeout=require(_0x6e77('0x2'));var express=require(_0x6e77('0x3'));var router=express[_0x6e77('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x6e77('0x5'));var controller=require(_0x6e77('0x6'));router[_0x6e77('0x7')]('/',auth[_0x6e77('0x8')](),controller[_0x6e77('0x9')]);router[_0x6e77('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x6e77('0xa')]);router[_0x6e77('0x7')](_0x6e77('0xb'),auth['isAuthenticated'](),controller[_0x6e77('0xc')]);router[_0x6e77('0x7')]('/:id/fields',auth[_0x6e77('0x8')](),controller[_0x6e77('0xd')]);router[_0x6e77('0xe')]('/',auth[_0x6e77('0x8')](),controller[_0x6e77('0xf')]);router[_0x6e77('0xe')](_0x6e77('0xb'),auth[_0x6e77('0x8')](),controller[_0x6e77('0x10')]);router[_0x6e77('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x6e77('0x12')]);router['delete'](_0x6e77('0x13'),auth[_0x6e77('0x8')](),controller[_0x6e77('0x14')]);module['exports']=router;
\ No newline at end of file
index 2b885d7..c70d504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x160f=['sequelize','exports','STRING','username','remoteUri'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x160f,0x1ef));var _0xf160=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x160f[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xf160('0x0'));module[_0xf160('0x1')]={'name':{'type':Sequelize[_0xf160('0x2')]},'description':{'type':Sequelize[_0xf160('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xf160('0x3')},'apiKey':{'type':Sequelize[_0xf160('0x2')]},'remoteUri':{'type':Sequelize[_0xf160('0x2')],'unique':_0xf160('0x4')},'serverUrl':{'type':Sequelize[_0xf160('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x8f4c=['sequelize','exports','STRING','username','remoteUri'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x8f4c,0x113));var _0xc8f4=function(_0x361704,_0x3af61c){_0x361704=_0x361704-0x0;var _0x258953=_0x8f4c[_0x361704];return _0x258953;};'use strict';var Sequelize=require(_0xc8f4('0x0'));module[_0xc8f4('0x1')]={'name':{'type':Sequelize[_0xc8f4('0x2')]},'description':{'type':Sequelize[_0xc8f4('0x2')]},'username':{'type':Sequelize[_0xc8f4('0x2')],'unique':_0xc8f4('0x3')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xc8f4('0x2')],'unique':_0xc8f4('0x4')},'serverUrl':{'type':Sequelize[_0xc8f4('0x2')],'allowNull':![]}};
\ No newline at end of file
index ead1853..a077e2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30fe=['mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','undefined','count','offset','set','Content-Range','json','save','update','then','sendStatus','error','stack','name','index','map','FreshdeskAccount','rawAttributes','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','limit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','create','body','getConfigurations','findOne','FreshdeskConfiguration','nolimit','addConfiguration','AccountId','Subjects','channel','Descriptions','FreshdeskField','getFields','remoteUri','slice','lastIndexOf','GET','format','%s/%s','apiKey','toString','base64','requester','subject','agent','description','priority','group','ticket_type','company','remove','includes','default','custom_text','custom_dropdown','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','rimraf','fast-json-patch','moment','bluebird'];(function(_0x2fbfdb,_0x3f5361){var _0x11059f=function(_0x484698){while(--_0x484698){_0x2fbfdb['push'](_0x2fbfdb['shift']());}};_0x11059f(++_0x3f5361);}(_0x30fe,0x149));var _0xe30f=function(_0xcc5817,_0x249f84){_0xcc5817=_0xcc5817-0x0;var _0x201651=_0x30fe[_0xcc5817];return _0x201651;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe30f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe30f('0x1'));var rp=require('request-promise');var moment=require(_0xe30f('0x2'));var BPromise=require(_0xe30f('0x3'));var Mustache=require(_0xe30f('0x4'));var util=require(_0xe30f('0x5'));var path=require(_0xe30f('0x6'));var sox=require('sox');var csv=require(_0xe30f('0x7'));var ejs=require(_0xe30f('0x8'));var fs=require('fs');var fs_extra=require(_0xe30f('0x9'));var _=require(_0xe30f('0xa'));var squel=require(_0xe30f('0xb'));var crypto=require(_0xe30f('0xc'));var jsforce=require(_0xe30f('0xd'));var deskjs=require(_0xe30f('0xe'));var toCsv=require(_0xe30f('0x7'));var querystring=require(_0xe30f('0xf'));var Papa=require('papaparse');var Redis=require(_0xe30f('0x10'));var authService=require(_0xe30f('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe30f('0x12'));var hardwareService=require(_0xe30f('0x13'));var logger=require(_0xe30f('0x14'))(_0xe30f('0x15'));var utils=require('../../config/utils');var config=require(_0xe30f('0x16'));var licenseUtil=require(_0xe30f('0x17'));var db=require(_0xe30f('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3859df,_0x19970e){_0x19970e=_0x19970e||0xcc;return function(_0x14863b){if(_0x14863b){return _0x3859df['sendStatus'](_0x19970e);}return _0x3859df[_0xe30f('0x19')](_0x19970e)[_0xe30f('0x1a')]();};}function respondWithResult(_0x122e2a,_0x7d684c){_0x7d684c=_0x7d684c||0xc8;return function(_0x53c3d2){if(_0x53c3d2){return _0x122e2a['status'](_0x7d684c)['json'](_0x53c3d2);}};}function respondWithFilteredResult(_0x3c9680,_0x494ad3){return function(_0x2b6a9b){if(_0x2b6a9b){var _0x1efa22=typeof _0x494ad3['offset']===_0xe30f('0x1b')&&typeof _0x494ad3['limit']===_0xe30f('0x1b');var _0x18518b=_0x2b6a9b[_0xe30f('0x1c')];var _0x20c2a5=_0x1efa22?0x0:_0x494ad3[_0xe30f('0x1d')];var _0x5ae935=_0x1efa22?_0x2b6a9b['count']:_0x494ad3[_0xe30f('0x1d')]+_0x494ad3['limit'];var _0x391ae6;if(_0x5ae935>=_0x18518b){_0x5ae935=_0x18518b;_0x391ae6=0xc8;}else{_0x391ae6=0xce;}_0x3c9680['status'](_0x391ae6);return _0x3c9680[_0xe30f('0x1e')](_0xe30f('0x1f'),_0x20c2a5+'-'+_0x5ae935+'/'+_0x18518b)[_0xe30f('0x20')](_0x2b6a9b);}return null;};}function patchUpdates(_0x2a0432){return function(_0x1f4533){try{jsonpatch['apply'](_0x1f4533,_0x2a0432,!![]);}catch(_0x59dfbd){return BPromise['reject'](_0x59dfbd);}return _0x1f4533[_0xe30f('0x21')]();};}function saveUpdates(_0x5af7b5,_0x322ee0){return function(_0x67af81){if(_0x67af81){return _0x67af81[_0xe30f('0x22')](_0x5af7b5)[_0xe30f('0x23')](function(_0x7f7b1f){return _0x7f7b1f;});}return null;};}function removeEntity(_0x378d6f,_0x50bca4){return function(_0x2f0eef){if(_0x2f0eef){return _0x2f0eef['destroy']()[_0xe30f('0x23')](function(){_0x378d6f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fc220,_0x11a539){return function(_0x5c5bd4){if(!_0x5c5bd4){_0x4fc220[_0xe30f('0x24')](0x194);}return _0x5c5bd4;};}function handleError(_0x25e3cf,_0x37c716){_0x37c716=_0x37c716||0x1f4;return function(_0x15ad85){logger[_0xe30f('0x25')](_0x15ad85[_0xe30f('0x26')]);if(_0x15ad85['name']){delete _0x15ad85[_0xe30f('0x27')];}_0x25e3cf[_0xe30f('0x19')](_0x37c716)['send'](_0x15ad85);};}exports[_0xe30f('0x28')]=function(_0x2d67d4,_0x5a6cc3){var _0x500626={},_0x5ae256={},_0x44080a={'count':0x0,'rows':[]};var _0xccbdc7=_[_0xe30f('0x29')](db[_0xe30f('0x2a')][_0xe30f('0x2b')],function(_0x36f1b8){return{'name':_0x36f1b8['fieldName'],'type':_0x36f1b8[_0xe30f('0x2c')]['key']};});_0x5ae256[_0xe30f('0x2d')]=_[_0xe30f('0x29')](_0xccbdc7,_0xe30f('0x27'));_0x5ae256[_0xe30f('0x2e')]=_['keys'](_0x2d67d4[_0xe30f('0x2e')]);_0x5ae256[_0xe30f('0x2f')]=_[_0xe30f('0x30')](_0x5ae256['model'],_0x5ae256[_0xe30f('0x2e')]);_0x500626['attributes']=_[_0xe30f('0x30')](_0x5ae256[_0xe30f('0x2d')],qs[_0xe30f('0x31')](_0x2d67d4[_0xe30f('0x2e')]['fields']));_0x500626[_0xe30f('0x32')]=_0x500626[_0xe30f('0x32')][_0xe30f('0x33')]?_0x500626[_0xe30f('0x32')]:_0x5ae256[_0xe30f('0x2d')];if(!_0x2d67d4[_0xe30f('0x2e')][_0xe30f('0x34')]('nolimit')){_0x500626[_0xe30f('0x35')]=qs[_0xe30f('0x35')](_0x2d67d4[_0xe30f('0x2e')]['limit']);_0x500626[_0xe30f('0x1d')]=qs[_0xe30f('0x1d')](_0x2d67d4['query'][_0xe30f('0x1d')]);}_0x500626['order']=qs[_0xe30f('0x36')](_0x2d67d4['query']['sort']);_0x500626['where']=qs[_0xe30f('0x2f')](_[_0xe30f('0x37')](_0x2d67d4['query'],_0x5ae256[_0xe30f('0x2f')]),_0xccbdc7);if(_0x2d67d4['query'][_0xe30f('0x38')]){_0x500626[_0xe30f('0x39')]=_[_0xe30f('0x3a')](_0x500626[_0xe30f('0x39')],{'$or':_['map'](_0xccbdc7,function(_0x4ae102){if(_0x4ae102[_0xe30f('0x2c')]!==_0xe30f('0x3b')){var _0x433ad6={};_0x433ad6[_0x4ae102[_0xe30f('0x27')]]={'$like':'%'+_0x2d67d4['query'][_0xe30f('0x38')]+'%'};return _0x433ad6;}})});}_0x500626=_['merge']({},_0x500626,_0x2d67d4[_0xe30f('0x3c')]);var _0x23f766={'where':_0x500626[_0xe30f('0x39')]};return db[_0xe30f('0x2a')]['count'](_0x23f766)['then'](function(_0x22fe6e){_0x44080a['count']=_0x22fe6e;if(_0x2d67d4[_0xe30f('0x2e')][_0xe30f('0x3d')]){_0x500626[_0xe30f('0x3e')]=[{'all':!![]}];}return db[_0xe30f('0x2a')]['findAll'](_0x500626);})[_0xe30f('0x23')](function(_0x2036cf){_0x44080a[_0xe30f('0x3f')]=_0x2036cf;return _0x44080a;})[_0xe30f('0x23')](respondWithFilteredResult(_0x5a6cc3,_0x500626))[_0xe30f('0x40')](handleError(_0x5a6cc3,null));};exports[_0xe30f('0x41')]=function(_0x400966,_0x2820f9){var _0x4a2c57={'raw':![],'where':{'id':_0x400966[_0xe30f('0x42')]['id']}},_0x32f0b4={};_0x32f0b4[_0xe30f('0x2d')]=_[_0xe30f('0x43')](db['FreshdeskAccount']['rawAttributes']);_0x32f0b4[_0xe30f('0x2e')]=_['keys'](_0x400966[_0xe30f('0x2e')]);_0x32f0b4['filters']=_[_0xe30f('0x30')](_0x32f0b4[_0xe30f('0x2d')],_0x32f0b4[_0xe30f('0x2e')]);_0x4a2c57[_0xe30f('0x32')]=_[_0xe30f('0x30')](_0x32f0b4[_0xe30f('0x2d')],qs[_0xe30f('0x31')](_0x400966['query'][_0xe30f('0x31')]));_0x4a2c57[_0xe30f('0x32')]=_0x4a2c57[_0xe30f('0x32')]['length']?_0x4a2c57[_0xe30f('0x32')]:_0x32f0b4[_0xe30f('0x2d')];if(_0x400966[_0xe30f('0x2e')][_0xe30f('0x3d')]){_0x4a2c57['include']=[{'all':!![]}];}_0x4a2c57=_[_0xe30f('0x3a')]({},_0x4a2c57,_0x400966[_0xe30f('0x3c')]);return db[_0xe30f('0x2a')][_0xe30f('0x44')](_0x4a2c57)[_0xe30f('0x23')](handleEntityNotFound(_0x2820f9,null))[_0xe30f('0x23')](respondWithResult(_0x2820f9,null))['catch'](handleError(_0x2820f9,null));};exports[_0xe30f('0x45')]=function(_0x381980,_0x140a7b){return db[_0xe30f('0x2a')]['create'](_0x381980[_0xe30f('0x46')],{})['then'](respondWithResult(_0x140a7b,0xc9))[_0xe30f('0x40')](handleError(_0x140a7b,null));};exports[_0xe30f('0x22')]=function(_0x4e8afa,_0x4180c1){if(_0x4e8afa[_0xe30f('0x46')]['id']){delete _0x4e8afa[_0xe30f('0x46')]['id'];}return db['FreshdeskAccount'][_0xe30f('0x44')]({'where':{'id':_0x4e8afa[_0xe30f('0x42')]['id']}})[_0xe30f('0x23')](handleEntityNotFound(_0x4180c1,null))[_0xe30f('0x23')](saveUpdates(_0x4e8afa[_0xe30f('0x46')],null))['then'](respondWithResult(_0x4180c1,null))['catch'](handleError(_0x4180c1,null));};exports['destroy']=function(_0x35a79e,_0x20fb4c){return db[_0xe30f('0x2a')][_0xe30f('0x44')]({'where':{'id':_0x35a79e[_0xe30f('0x42')]['id']}})[_0xe30f('0x23')](handleEntityNotFound(_0x20fb4c,null))[_0xe30f('0x23')](removeEntity(_0x20fb4c,null))[_0xe30f('0x40')](handleError(_0x20fb4c,null));};exports[_0xe30f('0x47')]=function(_0x597d05,_0xab6318,_0x3bc3a5){var _0x424e0b={};var _0x272c87={};var _0x45449b;var _0x2c720d;return db['FreshdeskAccount'][_0xe30f('0x48')]({'where':{'id':_0x597d05['params']['id']}})[_0xe30f('0x23')](handleEntityNotFound(_0xab6318,null))[_0xe30f('0x23')](function(_0x5602f9){if(_0x5602f9){_0x45449b=_0x5602f9;_0x272c87[_0xe30f('0x2d')]=_['keys'](db[_0xe30f('0x49')]['rawAttributes']);_0x272c87[_0xe30f('0x2e')]=_[_0xe30f('0x43')](_0x597d05[_0xe30f('0x2e')]);_0x272c87['filters']=_[_0xe30f('0x30')](_0x272c87['model'],_0x272c87[_0xe30f('0x2e')]);_0x424e0b[_0xe30f('0x32')]=_[_0xe30f('0x30')](_0x272c87[_0xe30f('0x2d')],qs[_0xe30f('0x31')](_0x597d05['query'][_0xe30f('0x31')]));_0x424e0b[_0xe30f('0x32')]=_0x424e0b[_0xe30f('0x32')]['length']?_0x424e0b[_0xe30f('0x32')]:_0x272c87[_0xe30f('0x2d')];_0x424e0b['order']=qs[_0xe30f('0x36')](_0x597d05[_0xe30f('0x2e')]['sort']);_0x424e0b[_0xe30f('0x39')]=qs[_0xe30f('0x2f')](_[_0xe30f('0x37')](_0x597d05['query'],_0x272c87['filters']));if(_0x597d05[_0xe30f('0x2e')][_0xe30f('0x38')]){_0x424e0b['where']=_['merge'](_0x424e0b['where'],{'$or':_['map'](_0x424e0b[_0xe30f('0x32')],function(_0x3bebcd){var _0x2073e4={};_0x2073e4[_0x3bebcd]={'$like':'%'+_0x597d05[_0xe30f('0x2e')][_0xe30f('0x38')]+'%'};return _0x2073e4;})});}_0x424e0b=_[_0xe30f('0x3a')]({},_0x424e0b,_0x597d05[_0xe30f('0x3c')]);return _0x45449b[_0xe30f('0x47')](_0x424e0b);}})[_0xe30f('0x23')](function(_0x31eaa8){if(_0x31eaa8){_0x2c720d=_0x31eaa8[_0xe30f('0x33')];if(!_0x597d05[_0xe30f('0x2e')][_0xe30f('0x34')](_0xe30f('0x4a'))){_0x424e0b[_0xe30f('0x35')]=qs[_0xe30f('0x35')](_0x597d05['query'][_0xe30f('0x35')]);_0x424e0b[_0xe30f('0x1d')]=qs[_0xe30f('0x1d')](_0x597d05[_0xe30f('0x2e')]['offset']);}return _0x45449b['getConfigurations'](_0x424e0b);}})[_0xe30f('0x23')](function(_0x5b770b){if(_0x5b770b){return _0x5b770b?{'count':_0x2c720d,'rows':_0x5b770b}:null;}})[_0xe30f('0x23')](respondWithResult(_0xab6318,null))[_0xe30f('0x40')](handleError(_0xab6318,null));};exports[_0xe30f('0x4b')]=function(_0x2a1bac,_0xaf871b,_0x5c94a8){if(_0x2a1bac[_0xe30f('0x46')]['id']){delete _0x2a1bac['body']['id'];}return db['FreshdeskAccount'][_0xe30f('0x48')]({'where':{'id':_0x2a1bac['params']['id']}})[_0xe30f('0x23')](handleEntityNotFound(_0xaf871b,null))[_0xe30f('0x23')](function(_0x1ca440){if(_0x1ca440){_0x2a1bac['body'][_0xe30f('0x4c')]=_0x1ca440['id'];_0x2a1bac[_0xe30f('0x46')][_0xe30f('0x4d')]=integrations['getSubjects'](_0x2a1bac[_0xe30f('0x46')][_0xe30f('0x4e')],_0x2a1bac[_0xe30f('0x46')][_0xe30f('0x2c')]);_0x2a1bac[_0xe30f('0x46')][_0xe30f('0x4f')]=integrations['getDescriptions'](_0x2a1bac[_0xe30f('0x46')][_0xe30f('0x4e')],_0x2a1bac['body'][_0xe30f('0x2c')]);return db['FreshdeskConfiguration']['create'](_0x2a1bac['body'],{'include':[{'model':db[_0xe30f('0x50')],'as':_0xe30f('0x4d')},{'model':db[_0xe30f('0x50')],'as':_0xe30f('0x4f')}]});}return null;})[_0xe30f('0x23')](respondWithResult(_0xaf871b,null))[_0xe30f('0x40')](handleError(_0xaf871b,null));};exports[_0xe30f('0x51')]=function(_0x48a5a1,_0x25ed9e,_0x213ff4){var _0x50e693='';return db['FreshdeskAccount'][_0xe30f('0x48')]({'where':{'id':_0x48a5a1['params']['id']},'attributes':['id',_0xe30f('0x52'),'apiKey']})[_0xe30f('0x23')](handleEntityNotFound(_0x25ed9e,null))[_0xe30f('0x23')](function(_0x2bb384){if(_0x2bb384){_0x50e693=_0x2bb384[_0xe30f('0x52')];var _0x4fc345=_0x50e693[_0xe30f('0x53')](-0x1);if(_0x4fc345==='/'){_0x50e693=_0x50e693['substring'](0x0,_0x50e693[_0xe30f('0x54')](_0x4fc345));}return rp({'method':_0xe30f('0x55'),'uri':util[_0xe30f('0x56')](_0xe30f('0x57'),_0x50e693,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0xe30f('0x56')]('Basic\x20%s',new Buffer(util[_0xe30f('0x56')]('%s:X',_0x2bb384[_0xe30f('0x58')]))[_0xe30f('0x59')](_0xe30f('0x5a')))},'json':!![]});}})[_0xe30f('0x23')](function(_0x503f03){if(_0x503f03){var _0x655e33=[_0xe30f('0x5b'),_0xe30f('0x5c'),_0xe30f('0x5d'),_0xe30f('0x5e'),'status',_0xe30f('0x5f'),_0xe30f('0x60'),'source',_0xe30f('0x61'),_0xe30f('0x60'),_0xe30f('0x62')];_[_0xe30f('0x63')](_0x503f03,function(_0xf6e16c){return _0x655e33[_0xe30f('0x64')](_0xf6e16c[_0xe30f('0x27')])||!_0xf6e16c[_0xe30f('0x65')]&&_0xf6e16c[_0xe30f('0x2c')]!==_0xe30f('0x66')&&_0xf6e16c[_0xe30f('0x2c')]!==_0xe30f('0x67');});return{'count':_0x503f03[_0xe30f('0x33')],'rows':_[_0xe30f('0x29')](_0x503f03,function(_0x4f4fc7){return{'id':_0x4f4fc7[_0xe30f('0x27')],'name':_0x4f4fc7[_0xe30f('0x68')],'custom':!_0x4f4fc7[_0xe30f('0x65')],'options':_0x4f4fc7[_0xe30f('0x69')]?_[_0xe30f('0x29')](_0x4f4fc7[_0xe30f('0x69')],function(_0x5001b7){return{'name':_['capitalize'](_0x5001b7),'value':_0x5001b7};}):[]};})};}})[_0xe30f('0x23')](respondWithResult(_0x25ed9e,null))[_0xe30f('0x40')](function(_0x3f8ef3){var _0x1b02a2=_0x48a5a1[_0xe30f('0x2e')][_0xe30f('0x6a')]?0x1f4:_0x3f8ef3[_0xe30f('0x6b')]||0x1f4;logger['error'](_0xe30f('0x6c'),_0xe30f('0x51'),_0x1b02a2,JSON['stringify'](_0x3f8ef3));delete _0x3f8ef3[_0xe30f('0x27')];if(_0x1b02a2===0x191){_0x1b02a2=0x190;}_0x25ed9e[_0xe30f('0x19')](_0x1b02a2)[_0xe30f('0x6d')](_0x48a5a1[_0xe30f('0x2e')][_0xe30f('0x6a')]?{'message':_0xe30f('0x6e'),'statusCode':_0x3f8ef3[_0xe30f('0x6b')]}:_0x3f8ef3);});};
\ No newline at end of file
+var _0x7117=['where','pick','merge','FreshdeskAccount','includeAll','include','rows','show','params','find','create','body','catch','getConfigurations','findOne','sort','filter','options','AccountId','Subjects','getSubjects','channel','FreshdeskConfiguration','Descriptions','slice','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','apiKey','toString','base64','requester','subject','agent','description','priority','group','source','company','remove','includes','default','custom_dropdown','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order'];(function(_0x2507b6,_0x2d059a){var _0x22c8a4=function(_0x3deebb){while(--_0x3deebb){_0x2507b6['push'](_0x2507b6['shift']());}};_0x22c8a4(++_0x2d059a);}(_0x7117,0x1ec));var _0x7711=function(_0x4fdc00,_0x246e9a){_0x4fdc00=_0x4fdc00-0x0;var _0x2b8bec=_0x7117[_0x4fdc00];return _0x2b8bec;};'use strict';var emlformat=require(_0x7711('0x0'));var rimraf=require(_0x7711('0x1'));var zipdir=require(_0x7711('0x2'));var jsonpatch=require(_0x7711('0x3'));var rp=require('request-promise');var moment=require(_0x7711('0x4'));var BPromise=require(_0x7711('0x5'));var Mustache=require('mustache');var util=require(_0x7711('0x6'));var path=require('path');var sox=require(_0x7711('0x7'));var csv=require(_0x7711('0x8'));var ejs=require(_0x7711('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7711('0xa'));var deskjs=require(_0x7711('0xb'));var toCsv=require(_0x7711('0x8'));var querystring=require(_0x7711('0xc'));var Papa=require('papaparse');var Redis=require(_0x7711('0xd'));var authService=require(_0x7711('0xe'));var qs=require(_0x7711('0xf'));var as=require(_0x7711('0x10'));var hardwareService=require(_0x7711('0x11'));var logger=require('../../config/logger')(_0x7711('0x12'));var utils=require(_0x7711('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x7711('0x14'));var db=require(_0x7711('0x15'))['db'];var integrations=require(_0x7711('0x16'));function respondWithStatusCode(_0x4c4e01,_0x2b13cb){_0x2b13cb=_0x2b13cb||0xcc;return function(_0x259478){if(_0x259478){return _0x4c4e01['sendStatus'](_0x2b13cb);}return _0x4c4e01[_0x7711('0x17')](_0x2b13cb)[_0x7711('0x18')]();};}function respondWithResult(_0xf2cc5c,_0x223eea){_0x223eea=_0x223eea||0xc8;return function(_0x5939c5){if(_0x5939c5){return _0xf2cc5c[_0x7711('0x17')](_0x223eea)[_0x7711('0x19')](_0x5939c5);}};}function respondWithFilteredResult(_0xee7b2d,_0x8ad57e){return function(_0x28b28e){if(_0x28b28e){var _0x44320f=typeof _0x8ad57e[_0x7711('0x1a')]===_0x7711('0x1b')&&typeof _0x8ad57e[_0x7711('0x1c')]===_0x7711('0x1b');var _0x5a0741=_0x28b28e[_0x7711('0x1d')];var _0x59384d=_0x44320f?0x0:_0x8ad57e[_0x7711('0x1a')];var _0x35b02f=_0x44320f?_0x28b28e[_0x7711('0x1d')]:_0x8ad57e[_0x7711('0x1a')]+_0x8ad57e[_0x7711('0x1c')];var _0x42d8f6;if(_0x35b02f>=_0x5a0741){_0x35b02f=_0x5a0741;_0x42d8f6=0xc8;}else{_0x42d8f6=0xce;}_0xee7b2d[_0x7711('0x17')](_0x42d8f6);return _0xee7b2d[_0x7711('0x1e')](_0x7711('0x1f'),_0x59384d+'-'+_0x35b02f+'/'+_0x5a0741)[_0x7711('0x19')](_0x28b28e);}return null;};}function patchUpdates(_0x1d227f){return function(_0x3e661c){try{jsonpatch[_0x7711('0x20')](_0x3e661c,_0x1d227f,!![]);}catch(_0x5255a6){return BPromise[_0x7711('0x21')](_0x5255a6);}return _0x3e661c['save']();};}function saveUpdates(_0x451e2e,_0x217edf){return function(_0xfb0c83){if(_0xfb0c83){return _0xfb0c83[_0x7711('0x22')](_0x451e2e)[_0x7711('0x23')](function(_0x18ac2a){return _0x18ac2a;});}return null;};}function removeEntity(_0x14874a,_0x29da2b){return function(_0xabd84a){if(_0xabd84a){return _0xabd84a[_0x7711('0x24')]()[_0x7711('0x23')](function(){_0x14874a[_0x7711('0x17')](0xcc)[_0x7711('0x18')]();});}};}function handleEntityNotFound(_0x180404,_0x460330){return function(_0xc18cfe){if(!_0xc18cfe){_0x180404[_0x7711('0x25')](0x194);}return _0xc18cfe;};}function handleError(_0x2b1afe,_0x2da5f8){_0x2da5f8=_0x2da5f8||0x1f4;return function(_0x447f33){logger[_0x7711('0x26')](_0x447f33[_0x7711('0x27')]);if(_0x447f33[_0x7711('0x28')]){delete _0x447f33[_0x7711('0x28')];}_0x2b1afe[_0x7711('0x17')](_0x2da5f8)[_0x7711('0x29')](_0x447f33);};}exports['index']=function(_0x30172e,_0x2873e8){var _0x4d4c32={},_0x542c47={},_0x44a8bc={'count':0x0,'rows':[]};var _0x241f05=_['map'](db['FreshdeskAccount'][_0x7711('0x2a')],function(_0x4e37f5){return{'name':_0x4e37f5[_0x7711('0x2b')],'type':_0x4e37f5[_0x7711('0x2c')][_0x7711('0x2d')]};});_0x542c47[_0x7711('0x2e')]=_[_0x7711('0x2f')](_0x241f05,'name');_0x542c47['query']=_[_0x7711('0x30')](_0x30172e['query']);_0x542c47[_0x7711('0x31')]=_[_0x7711('0x32')](_0x542c47[_0x7711('0x2e')],_0x542c47[_0x7711('0x33')]);_0x4d4c32['attributes']=_['intersection'](_0x542c47['model'],qs[_0x7711('0x34')](_0x30172e[_0x7711('0x33')]['fields']));_0x4d4c32['attributes']=_0x4d4c32[_0x7711('0x35')][_0x7711('0x36')]?_0x4d4c32[_0x7711('0x35')]:_0x542c47[_0x7711('0x2e')];if(!_0x30172e[_0x7711('0x33')][_0x7711('0x37')](_0x7711('0x38'))){_0x4d4c32['limit']=qs['limit'](_0x30172e[_0x7711('0x33')]['limit']);_0x4d4c32['offset']=qs['offset'](_0x30172e[_0x7711('0x33')][_0x7711('0x1a')]);}_0x4d4c32[_0x7711('0x39')]=qs['sort'](_0x30172e[_0x7711('0x33')]['sort']);_0x4d4c32[_0x7711('0x3a')]=qs['filters'](_[_0x7711('0x3b')](_0x30172e[_0x7711('0x33')],_0x542c47[_0x7711('0x31')]),_0x241f05);if(_0x30172e[_0x7711('0x33')]['filter']){_0x4d4c32[_0x7711('0x3a')]=_[_0x7711('0x3c')](_0x4d4c32[_0x7711('0x3a')],{'$or':_[_0x7711('0x2f')](_0x241f05,function(_0x5d2beb){if(_0x5d2beb[_0x7711('0x2c')]!=='VIRTUAL'){var _0x26d736={};_0x26d736[_0x5d2beb[_0x7711('0x28')]]={'$like':'%'+_0x30172e[_0x7711('0x33')]['filter']+'%'};return _0x26d736;}})});}_0x4d4c32=_[_0x7711('0x3c')]({},_0x4d4c32,_0x30172e['options']);var _0x397eb8={'where':_0x4d4c32[_0x7711('0x3a')]};return db[_0x7711('0x3d')][_0x7711('0x1d')](_0x397eb8)[_0x7711('0x23')](function(_0x404a50){_0x44a8bc['count']=_0x404a50;if(_0x30172e[_0x7711('0x33')][_0x7711('0x3e')]){_0x4d4c32[_0x7711('0x3f')]=[{'all':!![]}];}return db['FreshdeskAccount']['findAll'](_0x4d4c32);})[_0x7711('0x23')](function(_0x55e7fa){_0x44a8bc[_0x7711('0x40')]=_0x55e7fa;return _0x44a8bc;})[_0x7711('0x23')](respondWithFilteredResult(_0x2873e8,_0x4d4c32))['catch'](handleError(_0x2873e8,null));};exports[_0x7711('0x41')]=function(_0xa80ed5,_0x40cac1){var _0x5cb857={'raw':![],'where':{'id':_0xa80ed5[_0x7711('0x42')]['id']}},_0x457951={};_0x457951[_0x7711('0x2e')]=_[_0x7711('0x30')](db['FreshdeskAccount'][_0x7711('0x2a')]);_0x457951[_0x7711('0x33')]=_[_0x7711('0x30')](_0xa80ed5[_0x7711('0x33')]);_0x457951[_0x7711('0x31')]=_['intersection'](_0x457951[_0x7711('0x2e')],_0x457951[_0x7711('0x33')]);_0x5cb857[_0x7711('0x35')]=_[_0x7711('0x32')](_0x457951['model'],qs[_0x7711('0x34')](_0xa80ed5[_0x7711('0x33')]['fields']));_0x5cb857[_0x7711('0x35')]=_0x5cb857[_0x7711('0x35')][_0x7711('0x36')]?_0x5cb857['attributes']:_0x457951[_0x7711('0x2e')];if(_0xa80ed5[_0x7711('0x33')][_0x7711('0x3e')]){_0x5cb857[_0x7711('0x3f')]=[{'all':!![]}];}_0x5cb857=_[_0x7711('0x3c')]({},_0x5cb857,_0xa80ed5['options']);return db[_0x7711('0x3d')][_0x7711('0x43')](_0x5cb857)[_0x7711('0x23')](handleEntityNotFound(_0x40cac1,null))[_0x7711('0x23')](respondWithResult(_0x40cac1,null))['catch'](handleError(_0x40cac1,null));};exports[_0x7711('0x44')]=function(_0x55b6ed,_0x153ede){return db[_0x7711('0x3d')][_0x7711('0x44')](_0x55b6ed[_0x7711('0x45')],{})[_0x7711('0x23')](respondWithResult(_0x153ede,0xc9))[_0x7711('0x46')](handleError(_0x153ede,null));};exports[_0x7711('0x22')]=function(_0x226578,_0x3598fa){if(_0x226578['body']['id']){delete _0x226578[_0x7711('0x45')]['id'];}return db['FreshdeskAccount'][_0x7711('0x43')]({'where':{'id':_0x226578[_0x7711('0x42')]['id']}})['then'](handleEntityNotFound(_0x3598fa,null))[_0x7711('0x23')](saveUpdates(_0x226578[_0x7711('0x45')],null))[_0x7711('0x23')](respondWithResult(_0x3598fa,null))[_0x7711('0x46')](handleError(_0x3598fa,null));};exports[_0x7711('0x24')]=function(_0x1a1c6c,_0x443596){return db[_0x7711('0x3d')][_0x7711('0x43')]({'where':{'id':_0x1a1c6c[_0x7711('0x42')]['id']}})[_0x7711('0x23')](handleEntityNotFound(_0x443596,null))[_0x7711('0x23')](removeEntity(_0x443596,null))[_0x7711('0x46')](handleError(_0x443596,null));};exports[_0x7711('0x47')]=function(_0x37cc0d,_0x58cf2c,_0x3b7a0f){var _0x5902aa={};var _0x3b34d0={};var _0xfca08a;var _0x3664da;return db[_0x7711('0x3d')][_0x7711('0x48')]({'where':{'id':_0x37cc0d[_0x7711('0x42')]['id']}})['then'](handleEntityNotFound(_0x58cf2c,null))[_0x7711('0x23')](function(_0x1acc6f){if(_0x1acc6f){_0xfca08a=_0x1acc6f;_0x3b34d0[_0x7711('0x2e')]=_[_0x7711('0x30')](db['FreshdeskConfiguration']['rawAttributes']);_0x3b34d0[_0x7711('0x33')]=_[_0x7711('0x30')](_0x37cc0d[_0x7711('0x33')]);_0x3b34d0[_0x7711('0x31')]=_[_0x7711('0x32')](_0x3b34d0[_0x7711('0x2e')],_0x3b34d0[_0x7711('0x33')]);_0x5902aa[_0x7711('0x35')]=_['intersection'](_0x3b34d0[_0x7711('0x2e')],qs[_0x7711('0x34')](_0x37cc0d[_0x7711('0x33')][_0x7711('0x34')]));_0x5902aa[_0x7711('0x35')]=_0x5902aa[_0x7711('0x35')]['length']?_0x5902aa[_0x7711('0x35')]:_0x3b34d0[_0x7711('0x2e')];_0x5902aa[_0x7711('0x39')]=qs[_0x7711('0x49')](_0x37cc0d[_0x7711('0x33')]['sort']);_0x5902aa[_0x7711('0x3a')]=qs['filters'](_[_0x7711('0x3b')](_0x37cc0d['query'],_0x3b34d0['filters']));if(_0x37cc0d[_0x7711('0x33')]['filter']){_0x5902aa['where']=_[_0x7711('0x3c')](_0x5902aa[_0x7711('0x3a')],{'$or':_[_0x7711('0x2f')](_0x5902aa[_0x7711('0x35')],function(_0x362678){var _0x4613a7={};_0x4613a7[_0x362678]={'$like':'%'+_0x37cc0d[_0x7711('0x33')][_0x7711('0x4a')]+'%'};return _0x4613a7;})});}_0x5902aa=_[_0x7711('0x3c')]({},_0x5902aa,_0x37cc0d[_0x7711('0x4b')]);return _0xfca08a[_0x7711('0x47')](_0x5902aa);}})[_0x7711('0x23')](function(_0x2039fb){if(_0x2039fb){_0x3664da=_0x2039fb[_0x7711('0x36')];if(!_0x37cc0d[_0x7711('0x33')][_0x7711('0x37')](_0x7711('0x38'))){_0x5902aa[_0x7711('0x1c')]=qs[_0x7711('0x1c')](_0x37cc0d[_0x7711('0x33')][_0x7711('0x1c')]);_0x5902aa[_0x7711('0x1a')]=qs['offset'](_0x37cc0d[_0x7711('0x33')][_0x7711('0x1a')]);}return _0xfca08a[_0x7711('0x47')](_0x5902aa);}})['then'](function(_0x71afb3){if(_0x71afb3){return _0x71afb3?{'count':_0x3664da,'rows':_0x71afb3}:null;}})[_0x7711('0x23')](respondWithResult(_0x58cf2c,null))[_0x7711('0x46')](handleError(_0x58cf2c,null));};exports['addConfiguration']=function(_0x2cedc0,_0xf31f57,_0x358c19){if(_0x2cedc0[_0x7711('0x45')]['id']){delete _0x2cedc0[_0x7711('0x45')]['id'];}return db[_0x7711('0x3d')][_0x7711('0x48')]({'where':{'id':_0x2cedc0['params']['id']}})['then'](handleEntityNotFound(_0xf31f57,null))[_0x7711('0x23')](function(_0x4b1703){if(_0x4b1703){_0x2cedc0['body'][_0x7711('0x4c')]=_0x4b1703['id'];_0x2cedc0['body'][_0x7711('0x4d')]=integrations[_0x7711('0x4e')](_0x2cedc0[_0x7711('0x45')][_0x7711('0x4f')],_0x2cedc0['body'][_0x7711('0x2c')]);_0x2cedc0[_0x7711('0x45')]['Descriptions']=integrations['getDescriptions'](_0x2cedc0[_0x7711('0x45')][_0x7711('0x4f')],_0x2cedc0['body'][_0x7711('0x2c')]);return db[_0x7711('0x50')][_0x7711('0x44')](_0x2cedc0[_0x7711('0x45')],{'include':[{'model':db['FreshdeskField'],'as':_0x7711('0x4d')},{'model':db['FreshdeskField'],'as':_0x7711('0x51')}]});}return null;})['then'](respondWithResult(_0xf31f57,null))[_0x7711('0x46')](handleError(_0xf31f57,null));};exports['getFields']=function(_0x472a42,_0x5c6801,_0x4e2adf){var _0x214718='';return db[_0x7711('0x3d')][_0x7711('0x48')]({'where':{'id':_0x472a42[_0x7711('0x42')]['id']},'attributes':['id','remoteUri','apiKey']})['then'](handleEntityNotFound(_0x5c6801,null))[_0x7711('0x23')](function(_0x46935f){if(_0x46935f){_0x214718=_0x46935f['remoteUri'];var _0x42f2ae=_0x214718[_0x7711('0x52')](-0x1);if(_0x42f2ae==='/'){_0x214718=_0x214718['substring'](0x0,_0x214718['lastIndexOf'](_0x42f2ae));}return rp({'method':'GET','uri':util[_0x7711('0x53')](_0x7711('0x54'),_0x214718,_0x7711('0x55')),'headers':{'Authorization':util[_0x7711('0x53')](_0x7711('0x56'),new Buffer(util[_0x7711('0x53')]('%s:X',_0x46935f[_0x7711('0x57')]))[_0x7711('0x58')](_0x7711('0x59')))},'json':!![]});}})[_0x7711('0x23')](function(_0xc87b9b){if(_0xc87b9b){var _0x506015=[_0x7711('0x5a'),_0x7711('0x5b'),_0x7711('0x5c'),_0x7711('0x5d'),_0x7711('0x17'),_0x7711('0x5e'),_0x7711('0x5f'),_0x7711('0x60'),'ticket_type',_0x7711('0x5f'),_0x7711('0x61')];_[_0x7711('0x62')](_0xc87b9b,function(_0x5048d0){return _0x506015[_0x7711('0x63')](_0x5048d0[_0x7711('0x28')])||!_0x5048d0[_0x7711('0x64')]&&_0x5048d0['type']!=='custom_text'&&_0x5048d0[_0x7711('0x2c')]!==_0x7711('0x65');});return{'count':_0xc87b9b[_0x7711('0x36')],'rows':_[_0x7711('0x2f')](_0xc87b9b,function(_0x57a6ba){return{'id':_0x57a6ba['name'],'name':_0x57a6ba[_0x7711('0x66')],'custom':!_0x57a6ba[_0x7711('0x64')],'options':_0x57a6ba[_0x7711('0x67')]?_[_0x7711('0x2f')](_0x57a6ba['choices'],function(_0x20151b){return{'name':_['capitalize'](_0x20151b),'value':_0x20151b};}):[]};})};}})[_0x7711('0x23')](respondWithResult(_0x5c6801,null))[_0x7711('0x46')](function(_0x3b0b3e){var _0x541813=_0x472a42['query'][_0x7711('0x68')]?0x1f4:_0x3b0b3e[_0x7711('0x69')]||0x1f4;logger[_0x7711('0x26')](_0x7711('0x6a'),_0x7711('0x6b'),_0x541813,JSON[_0x7711('0x6c')](_0x3b0b3e));delete _0x3b0b3e[_0x7711('0x28')];if(_0x541813===0x191){_0x541813=0x190;}_0x5c6801[_0x7711('0x17')](_0x541813)[_0x7711('0x29')](_0x472a42[_0x7711('0x33')][_0x7711('0x68')]?{'message':_0x7711('0x6d'),'statusCode':_0x3b0b3e[_0x7711('0x69')]}:_0x3b0b3e);});};
\ No newline at end of file
index 500cf31..2380307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc2=['bluebird','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','define','FreshdeskAccount','int_freshdesk_accounts','util','../../config/logger','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5fc2,0x97));var _0x25fc=function(_0x5a56cc,_0x29650c){_0x5a56cc=_0x5a56cc-0x0;var _0x589caa=_0x5fc2[_0x5a56cc];return _0x589caa;};'use strict';var _=require('lodash');var util=require(_0x25fc('0x0'));var logger=require(_0x25fc('0x1'))('api');var moment=require(_0x25fc('0x2'));var BPromise=require(_0x25fc('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x25fc('0x4'));var config=require(_0x25fc('0x5'));var attributes=require(_0x25fc('0x6'));var integrations=require(_0x25fc('0x7'));module['exports']=function(_0x3e5f4a,_0x11622a){return _0x3e5f4a[_0x25fc('0x8')](_0x25fc('0x9'),attributes,{'tableName':_0x25fc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcdce=['define','FreshdeskAccount','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intFreshdeskAccount.attributes','../../components/integrations/configuration'];(function(_0x211d96,_0x945ae8){var _0x1d9dfc=function(_0x5f5af4){while(--_0x5f5af4){_0x211d96['push'](_0x211d96['shift']());}};_0x1d9dfc(++_0x945ae8);}(_0xcdce,0x141));var _0xecdc=function(_0xedf90a,_0x36781a){_0xedf90a=_0xedf90a-0x0;var _0x2bf092=_0xcdce[_0xedf90a];return _0x2bf092;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xecdc('0x0'))(_0xecdc('0x1'));var moment=require(_0xecdc('0x2'));var BPromise=require(_0xecdc('0x3'));var rp=require(_0xecdc('0x4'));var fs=require('fs');var path=require(_0xecdc('0x5'));var rimraf=require(_0xecdc('0x6'));var config=require('../../config/environment');var attributes=require(_0xecdc('0x7'));var integrations=require(_0xecdc('0x8'));module['exports']=function(_0x3e90da,_0x57758a){return _0x3e90da[_0xecdc('0x9')](_0xecdc('0xa'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 89b9f3e..093012d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfd2=['debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FreshdeskAccount,\x20%s,\x20%s','info','result','catch','GetFreshdeskAccount','findAll','options','raw','where','attributes','include','map','model','ShowFreshdeskAccount','FreshdeskAccount','lodash','moment','bluebird','../../config/utils','rpc','../../config/environment','http','request','request\x20sent'];(function(_0x234cdb,_0x28750b){var _0x1d18bb=function(_0x42c67e){while(--_0x42c67e){_0x234cdb['push'](_0x234cdb['shift']());}};_0x1d18bb(++_0x28750b);}(_0xbfd2,0x123));var _0x2bfd=function(_0x270b7f,_0x1bbf84){_0x270b7f=_0x270b7f-0x0;var _0x3a1861=_0xbfd2[_0x270b7f];return _0x3a1861;};'use strict';var _=require(_0x2bfd('0x0'));var util=require('util');var moment=require(_0x2bfd('0x1'));var BPromise=require(_0x2bfd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2bfd('0x3'));var logger=require('../../config/logger')(_0x2bfd('0x4'));var config=require(_0x2bfd('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2bfd('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x46adf7,_0x536e10,_0xd016cd){return new BPromise(function(_0x34bef9,_0x43c8ed){return client[_0x2bfd('0x7')](_0x46adf7,_0xd016cd)['then'](function(_0x16ae37){logger['info']('FreshdeskAccount,\x20%s,\x20%s',_0x536e10,_0x2bfd('0x8'));logger[_0x2bfd('0x9')](_0x2bfd('0xa'),_0x536e10,_0x2bfd('0x8'),JSON[_0x2bfd('0xb')](_0x16ae37));if(_0x16ae37[_0x2bfd('0xc')]){if(_0x16ae37[_0x2bfd('0xc')][_0x2bfd('0xd')]===0x1f4){logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x536e10,_0x16ae37[_0x2bfd('0xc')]['message']);return _0x43c8ed(_0x16ae37[_0x2bfd('0xc')][_0x2bfd('0xe')]);}logger[_0x2bfd('0xc')](_0x2bfd('0xf'),_0x536e10,_0x16ae37[_0x2bfd('0xc')][_0x2bfd('0xe')]);return _0x34bef9(_0x16ae37['error'][_0x2bfd('0xe')]);}else{logger[_0x2bfd('0x10')]('FreshdeskAccount,\x20%s,\x20%s',_0x536e10,_0x2bfd('0x8'));_0x34bef9(_0x16ae37[_0x2bfd('0x11')][_0x2bfd('0xe')]);}})[_0x2bfd('0x12')](function(_0x3619b1){logger[_0x2bfd('0xc')](_0x2bfd('0xf'),_0x536e10,_0x3619b1);_0x43c8ed(_0x3619b1);});});}exports[_0x2bfd('0x13')]=function(_0x5608b3){var _0xfe61=this;return new Promise(function(_0x8cbf1f,_0x85c9f4){return db['FreshdeskAccount'][_0x2bfd('0x14')]({'raw':_0x5608b3['options']?_0x5608b3[_0x2bfd('0x15')][_0x2bfd('0x16')]===undefined?!![]:![]:!![],'where':_0x5608b3['options']?_0x5608b3['options'][_0x2bfd('0x17')]||null:null,'attributes':_0x5608b3[_0x2bfd('0x15')]?_0x5608b3['options'][_0x2bfd('0x18')]||null:null,'limit':_0x5608b3[_0x2bfd('0x15')]?_0x5608b3[_0x2bfd('0x15')]['limit']||null:null,'include':_0x5608b3[_0x2bfd('0x15')]?_0x5608b3[_0x2bfd('0x15')][_0x2bfd('0x19')]?_[_0x2bfd('0x1a')](_0x5608b3['options'][_0x2bfd('0x19')],function(_0x272424){return{'model':db[_0x272424[_0x2bfd('0x1b')]],'as':_0x272424['as'],'attributes':_0x272424[_0x2bfd('0x18')],'include':_0x272424[_0x2bfd('0x19')]?_[_0x2bfd('0x1a')](_0x272424[_0x2bfd('0x19')],function(_0x39e1ab){return{'model':db[_0x39e1ab[_0x2bfd('0x1b')]],'as':_0x39e1ab['as'],'attributes':_0x39e1ab[_0x2bfd('0x18')],'include':_0x39e1ab['include']?_[_0x2bfd('0x1a')](_0x39e1ab['include'],function(_0x583cd3){return{'model':db[_0x583cd3['model']],'as':_0x583cd3['as'],'attributes':_0x583cd3['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x348c30){logger[_0x2bfd('0x10')](_0x2bfd('0x13'),_0x5608b3);logger[_0x2bfd('0x9')]('GetFreshdeskAccount',_0x5608b3,JSON[_0x2bfd('0xb')](_0x348c30));_0x8cbf1f(_0x348c30);})[_0x2bfd('0x12')](function(_0x8e10b7){logger[_0x2bfd('0xc')]('GetFreshdeskAccount',_0x8e10b7[_0x2bfd('0xe')],_0x5608b3);_0x85c9f4(_0xfe61[_0x2bfd('0xc')](0x1f4,_0x8e10b7[_0x2bfd('0xe')]));});});};exports[_0x2bfd('0x1c')]=function(_0x3d7c18){var _0x2b72bc=this;return new Promise(function(_0x26b6ae,_0x1b7b0a){return db[_0x2bfd('0x1d')]['find']({'raw':_0x3d7c18[_0x2bfd('0x15')]?_0x3d7c18[_0x2bfd('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x3d7c18['options']?_0x3d7c18[_0x2bfd('0x15')]['where']||null:null,'attributes':_0x3d7c18[_0x2bfd('0x15')]?_0x3d7c18[_0x2bfd('0x15')][_0x2bfd('0x18')]||null:null,'include':_0x3d7c18[_0x2bfd('0x15')]?_0x3d7c18['options'][_0x2bfd('0x19')]?_[_0x2bfd('0x1a')](_0x3d7c18[_0x2bfd('0x15')][_0x2bfd('0x19')],function(_0x3b0f3b){return{'model':db[_0x3b0f3b['model']],'as':_0x3b0f3b['as'],'attributes':_0x3b0f3b[_0x2bfd('0x18')],'include':_0x3b0f3b['include']?_[_0x2bfd('0x1a')](_0x3b0f3b['include'],function(_0x4720ca){return{'model':db[_0x4720ca[_0x2bfd('0x1b')]],'as':_0x4720ca['as'],'attributes':_0x4720ca[_0x2bfd('0x18')],'include':_0x4720ca[_0x2bfd('0x19')]?_['map'](_0x4720ca['include'],function(_0x4c7418){return{'model':db[_0x4c7418['model']],'as':_0x4c7418['as'],'attributes':_0x4c7418[_0x2bfd('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f98de){logger[_0x2bfd('0x10')](_0x2bfd('0x1c'),_0x3d7c18);logger['debug'](_0x2bfd('0x1c'),_0x3d7c18,JSON[_0x2bfd('0xb')](_0x1f98de));_0x26b6ae(_0x1f98de);})[_0x2bfd('0x12')](function(_0x4dc1a4){logger[_0x2bfd('0xc')](_0x2bfd('0x1c'),_0x4dc1a4['message'],_0x3d7c18);_0x1b7b0a(_0x2b72bc[_0x2bfd('0xc')](0x1f4,_0x4dc1a4[_0x2bfd('0xe')]));});});};
\ No newline at end of file
+var _0xae99=['attributes','limit','include','map','model','then','ShowFreshdeskAccount','find','raw','where','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xae99,0x172));var _0x9ae9=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xae99[_0x618414];return _0x21c19a;};'use strict';var _=require(_0x9ae9('0x0'));var util=require(_0x9ae9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9ae9('0x2'));var db=require(_0x9ae9('0x3'))['db'];var utils=require(_0x9ae9('0x4'));var logger=require(_0x9ae9('0x5'))(_0x9ae9('0x6'));var config=require(_0x9ae9('0x7'));var jayson=require(_0x9ae9('0x8'));var client=jayson[_0x9ae9('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e2871,_0x1eeea9,_0x5e1734){return new BPromise(function(_0x61398c,_0x2c6eb5){return client[_0x9ae9('0xa')](_0x5e2871,_0x5e1734)['then'](function(_0x193030){logger[_0x9ae9('0xb')](_0x9ae9('0xc'),_0x1eeea9,_0x9ae9('0xd'));logger[_0x9ae9('0xe')](_0x9ae9('0xf'),_0x1eeea9,_0x9ae9('0xd'),JSON[_0x9ae9('0x10')](_0x193030));if(_0x193030[_0x9ae9('0x11')]){if(_0x193030[_0x9ae9('0x11')][_0x9ae9('0x12')]===0x1f4){logger[_0x9ae9('0x11')](_0x9ae9('0xc'),_0x1eeea9,_0x193030[_0x9ae9('0x11')][_0x9ae9('0x13')]);return _0x2c6eb5(_0x193030[_0x9ae9('0x11')][_0x9ae9('0x13')]);}logger[_0x9ae9('0x11')](_0x9ae9('0xc'),_0x1eeea9,_0x193030[_0x9ae9('0x11')][_0x9ae9('0x13')]);return _0x61398c(_0x193030[_0x9ae9('0x11')][_0x9ae9('0x13')]);}else{logger[_0x9ae9('0xb')](_0x9ae9('0xc'),_0x1eeea9,'request\x20sent');_0x61398c(_0x193030[_0x9ae9('0x14')][_0x9ae9('0x13')]);}})[_0x9ae9('0x15')](function(_0x5bc5d2){logger[_0x9ae9('0x11')]('FreshdeskAccount,\x20%s,\x20%s',_0x1eeea9,_0x5bc5d2);_0x2c6eb5(_0x5bc5d2);});});}exports[_0x9ae9('0x16')]=function(_0x307650){var _0x240bf9=this;return new Promise(function(_0x525ee0,_0x415b90){return db[_0x9ae9('0x17')][_0x9ae9('0x18')]({'raw':_0x307650[_0x9ae9('0x19')]?_0x307650['options']['raw']===undefined?!![]:![]:!![],'where':_0x307650[_0x9ae9('0x19')]?_0x307650[_0x9ae9('0x19')]['where']||null:null,'attributes':_0x307650['options']?_0x307650[_0x9ae9('0x19')][_0x9ae9('0x1a')]||null:null,'limit':_0x307650[_0x9ae9('0x19')]?_0x307650['options'][_0x9ae9('0x1b')]||null:null,'include':_0x307650[_0x9ae9('0x19')]?_0x307650[_0x9ae9('0x19')][_0x9ae9('0x1c')]?_[_0x9ae9('0x1d')](_0x307650['options'][_0x9ae9('0x1c')],function(_0x5b6755){return{'model':db[_0x5b6755['model']],'as':_0x5b6755['as'],'attributes':_0x5b6755[_0x9ae9('0x1a')],'include':_0x5b6755[_0x9ae9('0x1c')]?_[_0x9ae9('0x1d')](_0x5b6755[_0x9ae9('0x1c')],function(_0x3cfffb){return{'model':db[_0x3cfffb[_0x9ae9('0x1e')]],'as':_0x3cfffb['as'],'attributes':_0x3cfffb[_0x9ae9('0x1a')],'include':_0x3cfffb['include']?_['map'](_0x3cfffb[_0x9ae9('0x1c')],function(_0x5bd44e){return{'model':db[_0x5bd44e['model']],'as':_0x5bd44e['as'],'attributes':_0x5bd44e[_0x9ae9('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x9ae9('0x1f')](function(_0x357e23){logger[_0x9ae9('0xb')](_0x9ae9('0x16'),_0x307650);logger[_0x9ae9('0xe')](_0x9ae9('0x16'),_0x307650,JSON[_0x9ae9('0x10')](_0x357e23));_0x525ee0(_0x357e23);})[_0x9ae9('0x15')](function(_0x56deb4){logger[_0x9ae9('0x11')](_0x9ae9('0x16'),_0x56deb4['message'],_0x307650);_0x415b90(_0x240bf9[_0x9ae9('0x11')](0x1f4,_0x56deb4[_0x9ae9('0x13')]));});});};exports[_0x9ae9('0x20')]=function(_0x165b23){var _0x1f31ed=this;return new Promise(function(_0xcb4815,_0x5e8c2d){return db[_0x9ae9('0x17')][_0x9ae9('0x21')]({'raw':_0x165b23['options']?_0x165b23['options'][_0x9ae9('0x22')]===undefined?!![]:![]:!![],'where':_0x165b23[_0x9ae9('0x19')]?_0x165b23[_0x9ae9('0x19')][_0x9ae9('0x23')]||null:null,'attributes':_0x165b23[_0x9ae9('0x19')]?_0x165b23[_0x9ae9('0x19')][_0x9ae9('0x1a')]||null:null,'include':_0x165b23['options']?_0x165b23[_0x9ae9('0x19')][_0x9ae9('0x1c')]?_['map'](_0x165b23[_0x9ae9('0x19')][_0x9ae9('0x1c')],function(_0x37fcfb){return{'model':db[_0x37fcfb[_0x9ae9('0x1e')]],'as':_0x37fcfb['as'],'attributes':_0x37fcfb['attributes'],'include':_0x37fcfb[_0x9ae9('0x1c')]?_[_0x9ae9('0x1d')](_0x37fcfb[_0x9ae9('0x1c')],function(_0x427d11){return{'model':db[_0x427d11[_0x9ae9('0x1e')]],'as':_0x427d11['as'],'attributes':_0x427d11[_0x9ae9('0x1a')],'include':_0x427d11['include']?_[_0x9ae9('0x1d')](_0x427d11[_0x9ae9('0x1c')],function(_0x375759){return{'model':db[_0x375759[_0x9ae9('0x1e')]],'as':_0x375759['as'],'attributes':_0x375759[_0x9ae9('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x9ae9('0x1f')](function(_0x320f52){logger['info'](_0x9ae9('0x20'),_0x165b23);logger['debug'](_0x9ae9('0x20'),_0x165b23,JSON[_0x9ae9('0x10')](_0x320f52));_0xcb4815(_0x320f52);})[_0x9ae9('0x15')](function(_0x4d8ac6){logger[_0x9ae9('0x11')]('ShowFreshdeskAccount',_0x4d8ac6['message'],_0x165b23);_0x5e8c2d(_0x1f31ed['error'](0x1f4,_0x4d8ac6[_0x9ae9('0x13')]));});});};
\ No newline at end of file
index 1aa4a72..ce68137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd46d=['destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','show','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','getTags','post','put','/:id','delete'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd46d,0x16a));var _0xdd46=function(_0x2f1455,_0x4e9c59){_0x2f1455=_0x2f1455-0x0;var _0x711682=_0xd46d[_0x2f1455];return _0x711682;};'use strict';var multer=require(_0xdd46('0x0'));var util=require(_0xdd46('0x1'));var path=require(_0xdd46('0x2'));var timeout=require('connect-timeout');var express=require(_0xdd46('0x3'));var router=express[_0xdd46('0x4')]();var fs_extra=require(_0xdd46('0x5'));var auth=require(_0xdd46('0x6'));var interaction=require(_0xdd46('0x7'));var config=require(_0xdd46('0x8'));var controller=require(_0xdd46('0x9'));router[_0xdd46('0xa')]('/',auth[_0xdd46('0xb')](),controller['index']);router['get']('/:id',auth[_0xdd46('0xb')](),controller[_0xdd46('0xc')]);router[_0xdd46('0xa')]('/:id/fields',auth[_0xdd46('0xb')](),controller['getFields']);router[_0xdd46('0xa')](_0xdd46('0xd'),auth[_0xdd46('0xb')](),controller[_0xdd46('0xe')]);router[_0xdd46('0xa')](_0xdd46('0xf'),auth[_0xdd46('0xb')](),controller['getDescriptions']);router[_0xdd46('0xa')](_0xdd46('0x10'),auth[_0xdd46('0xb')](),controller[_0xdd46('0x11')]);router[_0xdd46('0x12')]('/',auth[_0xdd46('0xb')](),controller['create']);router[_0xdd46('0x12')]('/:id/tags',auth[_0xdd46('0xb')](),controller['setTags']);router[_0xdd46('0x13')](_0xdd46('0x14'),auth[_0xdd46('0xb')](),controller['update']);router[_0xdd46('0x15')](_0xdd46('0x14'),auth[_0xdd46('0xb')](),controller[_0xdd46('0x16')]);module[_0xdd46('0x17')]=router;
\ No newline at end of file
+var _0x6f50=['show','/:id/fields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','setTags','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','isAuthenticated','/:id'];(function(_0x2e04d1,_0x5150fe){var _0xa133fe=function(_0x2ac1fc){while(--_0x2ac1fc){_0x2e04d1['push'](_0x2e04d1['shift']());}};_0xa133fe(++_0x5150fe);}(_0x6f50,0x185));var _0x06f5=function(_0x5e6c4f,_0x32ceec){_0x5e6c4f=_0x5e6c4f-0x0;var _0x4db461=_0x6f50[_0x5e6c4f];return _0x4db461;};'use strict';var multer=require(_0x06f5('0x0'));var util=require('util');var path=require(_0x06f5('0x1'));var timeout=require(_0x06f5('0x2'));var express=require(_0x06f5('0x3'));var router=express[_0x06f5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x06f5('0x5'));var interaction=require(_0x06f5('0x6'));var config=require('../../config/environment');var controller=require(_0x06f5('0x7'));router[_0x06f5('0x8')]('/',auth[_0x06f5('0x9')](),controller['index']);router[_0x06f5('0x8')](_0x06f5('0xa'),auth[_0x06f5('0x9')](),controller[_0x06f5('0xb')]);router[_0x06f5('0x8')](_0x06f5('0xc'),auth[_0x06f5('0x9')](),controller['getFields']);router[_0x06f5('0x8')]('/:id/subjects',auth[_0x06f5('0x9')](),controller[_0x06f5('0xd')]);router[_0x06f5('0x8')](_0x06f5('0xe'),auth[_0x06f5('0x9')](),controller[_0x06f5('0xf')]);router[_0x06f5('0x8')](_0x06f5('0x10'),auth['isAuthenticated'](),controller[_0x06f5('0x11')]);router[_0x06f5('0x12')]('/',auth[_0x06f5('0x9')](),controller['create']);router[_0x06f5('0x12')](_0x06f5('0x10'),auth[_0x06f5('0x9')](),controller[_0x06f5('0x13')]);router[_0x06f5('0x14')](_0x06f5('0xa'),auth[_0x06f5('0x9')](),controller[_0x06f5('0x15')]);router[_0x06f5('0x16')](_0x06f5('0xa'),auth[_0x06f5('0x9')](),controller[_0x06f5('0x17')]);module[_0x06f5('0x18')]=router;
\ No newline at end of file
index 524623b..d699e19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x967e=['sequelize','exports'];(function(_0x13b193,_0x256b21){var _0x59c8fc=function(_0x2c34cd){while(--_0x2c34cd){_0x13b193['push'](_0x13b193['shift']());}};_0x59c8fc(++_0x256b21);}(_0x967e,0x10e));var _0xe967=function(_0x501b33,_0x506d80){_0x501b33=_0x501b33-0x0;var _0x1613e4=_0x967e[_0x501b33];return _0x1613e4;};'use strict';var Sequelize=require(_0xe967('0x0'));module[_0xe967('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1db9=['sequelize','STRING'];(function(_0x248302,_0x43cbf5){var _0x4887e6=function(_0x3f410a){while(--_0x3f410a){_0x248302['push'](_0x248302['shift']());}};_0x4887e6(++_0x43cbf5);}(_0x1db9,0xf8));var _0x91db=function(_0x2c42f2,_0x514677){_0x2c42f2=_0x2c42f2-0x0;var _0x557a88=_0x1db9[_0x2c42f2];return _0x557a88;};'use strict';var Sequelize=require(_0x91db('0x0'));module['exports']={'name':{'type':Sequelize[_0x91db('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 370d9e5..6d4bbbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a5b=['count','set','apply','reject','update','then','destroy','sendStatus','stack','name','send','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','VIRTUAL','filter','merge','options','FreshdeskConfiguration','includeAll','include','findAll','rows','show','params','keys','length','find','catch','create','body','getFields','FreshdeskField','order','map','getSubjects','findOne','pick','getDescriptions','getTags','setTags','ids','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','crypto','desk.js','to-csv','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','status','end','json','offset','undefined','limit'];(function(_0x35f015,_0x412100){var _0x2177df=function(_0x472082){while(--_0x472082){_0x35f015['push'](_0x35f015['shift']());}};_0x2177df(++_0x412100);}(_0x0a5b,0xd1));var _0xb0a5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0a5b[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb0a5('0x0'));var zipdir=require(_0xb0a5('0x1'));var jsonpatch=require(_0xb0a5('0x2'));var rp=require(_0xb0a5('0x3'));var moment=require(_0xb0a5('0x4'));var BPromise=require(_0xb0a5('0x5'));var Mustache=require('mustache');var util=require(_0xb0a5('0x6'));var path=require(_0xb0a5('0x7'));var sox=require(_0xb0a5('0x8'));var csv=require('to-csv');var ejs=require(_0xb0a5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb0a5('0xa'));var squel=require('squel');var crypto=require(_0xb0a5('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb0a5('0xc'));var toCsv=require(_0xb0a5('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb0a5('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xb0a5('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb0a5('0x10'))(_0xb0a5('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb0a5('0x12'))['db'];function respondWithStatusCode(_0x35a654,_0x186485){_0x186485=_0x186485||0xcc;return function(_0x526dd0){if(_0x526dd0){return _0x35a654['sendStatus'](_0x186485);}return _0x35a654[_0xb0a5('0x13')](_0x186485)[_0xb0a5('0x14')]();};}function respondWithResult(_0x3e54bd,_0xdd49e3){_0xdd49e3=_0xdd49e3||0xc8;return function(_0x1c9a3c){if(_0x1c9a3c){return _0x3e54bd[_0xb0a5('0x13')](_0xdd49e3)[_0xb0a5('0x15')](_0x1c9a3c);}};}function respondWithFilteredResult(_0x44c739,_0x1b7f77){return function(_0xce298){if(_0xce298){var _0x1378d1=typeof _0x1b7f77[_0xb0a5('0x16')]===_0xb0a5('0x17')&&typeof _0x1b7f77[_0xb0a5('0x18')]===_0xb0a5('0x17');var _0x2ed012=_0xce298[_0xb0a5('0x19')];var _0x3a6fe6=_0x1378d1?0x0:_0x1b7f77[_0xb0a5('0x16')];var _0x45daa0=_0x1378d1?_0xce298[_0xb0a5('0x19')]:_0x1b7f77[_0xb0a5('0x16')]+_0x1b7f77[_0xb0a5('0x18')];var _0xb8e35;if(_0x45daa0>=_0x2ed012){_0x45daa0=_0x2ed012;_0xb8e35=0xc8;}else{_0xb8e35=0xce;}_0x44c739[_0xb0a5('0x13')](_0xb8e35);return _0x44c739[_0xb0a5('0x1a')]('Content-Range',_0x3a6fe6+'-'+_0x45daa0+'/'+_0x2ed012)[_0xb0a5('0x15')](_0xce298);}return null;};}function patchUpdates(_0x33d6c2){return function(_0x57e8f5){try{jsonpatch[_0xb0a5('0x1b')](_0x57e8f5,_0x33d6c2,!![]);}catch(_0x4fb13d){return BPromise[_0xb0a5('0x1c')](_0x4fb13d);}return _0x57e8f5['save']();};}function saveUpdates(_0x99160e,_0x468433){return function(_0x4021d5){if(_0x4021d5){return _0x4021d5[_0xb0a5('0x1d')](_0x99160e)[_0xb0a5('0x1e')](function(_0x473f88){return _0x473f88;});}return null;};}function removeEntity(_0x2c0d5f,_0x7eef2f){return function(_0x45a0a4){if(_0x45a0a4){return _0x45a0a4[_0xb0a5('0x1f')]()[_0xb0a5('0x1e')](function(){_0x2c0d5f[_0xb0a5('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ced48,_0x4d028c){return function(_0x5b5550){if(!_0x5b5550){_0x5ced48[_0xb0a5('0x20')](0x194);}return _0x5b5550;};}function handleError(_0x5a4e97,_0x40d91e){_0x40d91e=_0x40d91e||0x1f4;return function(_0xf5fc19){logger['error'](_0xf5fc19[_0xb0a5('0x21')]);if(_0xf5fc19[_0xb0a5('0x22')]){delete _0xf5fc19[_0xb0a5('0x22')];}_0x5a4e97[_0xb0a5('0x13')](_0x40d91e)[_0xb0a5('0x23')](_0xf5fc19);};}exports['index']=function(_0x2bcab7,_0x305111){var _0x4f3d6e={},_0x3237bb={},_0x46e2d7={'count':0x0,'rows':[]};var _0x34b5a1=_['map'](db['FreshdeskConfiguration'][_0xb0a5('0x24')],function(_0x42685e){return{'name':_0x42685e[_0xb0a5('0x25')],'type':_0x42685e[_0xb0a5('0x26')][_0xb0a5('0x27')]};});_0x3237bb[_0xb0a5('0x28')]=_['map'](_0x34b5a1,_0xb0a5('0x22'));_0x3237bb[_0xb0a5('0x29')]=_['keys'](_0x2bcab7[_0xb0a5('0x29')]);_0x3237bb['filters']=_[_0xb0a5('0x2a')](_0x3237bb['model'],_0x3237bb[_0xb0a5('0x29')]);_0x4f3d6e['attributes']=_[_0xb0a5('0x2a')](_0x3237bb[_0xb0a5('0x28')],qs[_0xb0a5('0x2b')](_0x2bcab7[_0xb0a5('0x29')]['fields']));_0x4f3d6e['attributes']=_0x4f3d6e[_0xb0a5('0x2c')]['length']?_0x4f3d6e[_0xb0a5('0x2c')]:_0x3237bb[_0xb0a5('0x28')];if(!_0x2bcab7[_0xb0a5('0x29')][_0xb0a5('0x2d')](_0xb0a5('0x2e'))){_0x4f3d6e['limit']=qs['limit'](_0x2bcab7['query']['limit']);_0x4f3d6e[_0xb0a5('0x16')]=qs[_0xb0a5('0x16')](_0x2bcab7[_0xb0a5('0x29')]['offset']);}_0x4f3d6e['order']=qs[_0xb0a5('0x2f')](_0x2bcab7[_0xb0a5('0x29')][_0xb0a5('0x2f')]);_0x4f3d6e[_0xb0a5('0x30')]=qs['filters'](_['pick'](_0x2bcab7[_0xb0a5('0x29')],_0x3237bb[_0xb0a5('0x31')]),_0x34b5a1);if(_0x2bcab7[_0xb0a5('0x29')]['filter']){_0x4f3d6e[_0xb0a5('0x30')]=_['merge'](_0x4f3d6e['where'],{'$or':_['map'](_0x34b5a1,function(_0x13b4b1){if(_0x13b4b1[_0xb0a5('0x26')]!==_0xb0a5('0x32')){var _0x5dfe98={};_0x5dfe98[_0x13b4b1['name']]={'$like':'%'+_0x2bcab7[_0xb0a5('0x29')][_0xb0a5('0x33')]+'%'};return _0x5dfe98;}})});}_0x4f3d6e=_[_0xb0a5('0x34')]({},_0x4f3d6e,_0x2bcab7[_0xb0a5('0x35')]);var _0x1bc42f={'where':_0x4f3d6e[_0xb0a5('0x30')]};return db[_0xb0a5('0x36')][_0xb0a5('0x19')](_0x1bc42f)['then'](function(_0x55d9a5){_0x46e2d7[_0xb0a5('0x19')]=_0x55d9a5;if(_0x2bcab7[_0xb0a5('0x29')][_0xb0a5('0x37')]){_0x4f3d6e[_0xb0a5('0x38')]=[{'all':!![]}];}return db[_0xb0a5('0x36')][_0xb0a5('0x39')](_0x4f3d6e);})[_0xb0a5('0x1e')](function(_0x1c0866){_0x46e2d7[_0xb0a5('0x3a')]=_0x1c0866;return _0x46e2d7;})['then'](respondWithFilteredResult(_0x305111,_0x4f3d6e))['catch'](handleError(_0x305111,null));};exports[_0xb0a5('0x3b')]=function(_0x331a07,_0x42dec5){var _0x3bfe92={'raw':![],'where':{'id':_0x331a07[_0xb0a5('0x3c')]['id']}},_0xf1a41f={};_0xf1a41f['model']=_[_0xb0a5('0x3d')](db[_0xb0a5('0x36')][_0xb0a5('0x24')]);_0xf1a41f['query']=_[_0xb0a5('0x3d')](_0x331a07[_0xb0a5('0x29')]);_0xf1a41f[_0xb0a5('0x31')]=_[_0xb0a5('0x2a')](_0xf1a41f['model'],_0xf1a41f['query']);_0x3bfe92[_0xb0a5('0x2c')]=_[_0xb0a5('0x2a')](_0xf1a41f[_0xb0a5('0x28')],qs[_0xb0a5('0x2b')](_0x331a07['query'][_0xb0a5('0x2b')]));_0x3bfe92[_0xb0a5('0x2c')]=_0x3bfe92['attributes'][_0xb0a5('0x3e')]?_0x3bfe92['attributes']:_0xf1a41f[_0xb0a5('0x28')];if(_0x331a07[_0xb0a5('0x29')][_0xb0a5('0x37')]){_0x3bfe92['include']=[{'all':!![]}];}_0x3bfe92=_['merge']({},_0x3bfe92,_0x331a07[_0xb0a5('0x35')]);return db['FreshdeskConfiguration'][_0xb0a5('0x3f')](_0x3bfe92)[_0xb0a5('0x1e')](handleEntityNotFound(_0x42dec5,null))[_0xb0a5('0x1e')](respondWithResult(_0x42dec5,null))[_0xb0a5('0x40')](handleError(_0x42dec5,null));};exports[_0xb0a5('0x41')]=function(_0x2f4bea,_0x109f47){return db[_0xb0a5('0x36')][_0xb0a5('0x41')](_0x2f4bea[_0xb0a5('0x42')],{})[_0xb0a5('0x1e')](respondWithResult(_0x109f47,0xc9))[_0xb0a5('0x40')](handleError(_0x109f47,null));};exports[_0xb0a5('0x1d')]=function(_0x3a67e0,_0x210461){if(_0x3a67e0['body']['id']){delete _0x3a67e0[_0xb0a5('0x42')]['id'];}return db[_0xb0a5('0x36')][_0xb0a5('0x3f')]({'where':{'id':_0x3a67e0[_0xb0a5('0x3c')]['id']}})[_0xb0a5('0x1e')](handleEntityNotFound(_0x210461,null))['then'](saveUpdates(_0x3a67e0['body'],null))[_0xb0a5('0x1e')](respondWithResult(_0x210461,null))['catch'](handleError(_0x210461,null));};exports[_0xb0a5('0x1f')]=function(_0x38caf3,_0x738646){return db[_0xb0a5('0x36')]['find']({'where':{'id':_0x38caf3[_0xb0a5('0x3c')]['id']}})[_0xb0a5('0x1e')](handleEntityNotFound(_0x738646,null))[_0xb0a5('0x1e')](removeEntity(_0x738646,null))[_0xb0a5('0x40')](handleError(_0x738646,null));};exports[_0xb0a5('0x43')]=function(_0x5cd23a,_0x275759,_0x47abb4){var _0x21e35d={};var _0x2bf397={};var _0x1a8acc;var _0x549c72;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x5cd23a[_0xb0a5('0x3c')]['id']}})[_0xb0a5('0x1e')](handleEntityNotFound(_0x275759,null))[_0xb0a5('0x1e')](function(_0x52b9ab){if(_0x52b9ab){_0x1a8acc=_0x52b9ab;_0x2bf397[_0xb0a5('0x28')]=_[_0xb0a5('0x3d')](db[_0xb0a5('0x44')][_0xb0a5('0x24')]);_0x2bf397['query']=_[_0xb0a5('0x3d')](_0x5cd23a[_0xb0a5('0x29')]);_0x2bf397[_0xb0a5('0x31')]=_[_0xb0a5('0x2a')](_0x2bf397[_0xb0a5('0x28')],_0x2bf397[_0xb0a5('0x29')]);_0x21e35d[_0xb0a5('0x2c')]=_[_0xb0a5('0x2a')](_0x2bf397['model'],qs[_0xb0a5('0x2b')](_0x5cd23a['query'][_0xb0a5('0x2b')]));_0x21e35d[_0xb0a5('0x2c')]=_0x21e35d[_0xb0a5('0x2c')]['length']?_0x21e35d[_0xb0a5('0x2c')]:_0x2bf397['model'];_0x21e35d[_0xb0a5('0x45')]=qs['sort'](_0x5cd23a[_0xb0a5('0x29')][_0xb0a5('0x2f')]);_0x21e35d['where']=qs[_0xb0a5('0x31')](_['pick'](_0x5cd23a[_0xb0a5('0x29')],_0x2bf397[_0xb0a5('0x31')]));if(_0x5cd23a[_0xb0a5('0x29')][_0xb0a5('0x33')]){_0x21e35d[_0xb0a5('0x30')]=_[_0xb0a5('0x34')](_0x21e35d[_0xb0a5('0x30')],{'$or':_[_0xb0a5('0x46')](_0x21e35d[_0xb0a5('0x2c')],function(_0x27b9db){var _0x5cb358={};_0x5cb358[_0x27b9db]={'$like':'%'+_0x5cd23a[_0xb0a5('0x29')][_0xb0a5('0x33')]+'%'};return _0x5cb358;})});}_0x21e35d=_[_0xb0a5('0x34')]({},_0x21e35d,_0x5cd23a[_0xb0a5('0x35')]);return _0x1a8acc[_0xb0a5('0x43')](_0x21e35d);}})[_0xb0a5('0x1e')](function(_0x34562b){if(_0x34562b){_0x549c72=_0x34562b[_0xb0a5('0x3e')];if(!_0x5cd23a[_0xb0a5('0x29')][_0xb0a5('0x2d')](_0xb0a5('0x2e'))){_0x21e35d[_0xb0a5('0x18')]=qs[_0xb0a5('0x18')](_0x5cd23a['query'][_0xb0a5('0x18')]);_0x21e35d['offset']=qs[_0xb0a5('0x16')](_0x5cd23a['query']['offset']);}return _0x1a8acc[_0xb0a5('0x43')](_0x21e35d);}})['then'](function(_0x36aeb4){if(_0x36aeb4){return _0x36aeb4?{'count':_0x549c72,'rows':_0x36aeb4}:null;}})['then'](respondWithResult(_0x275759,null))[_0xb0a5('0x40')](handleError(_0x275759,null));};exports[_0xb0a5('0x47')]=function(_0x3b2d1c,_0x309ff1,_0x30e1f4){var _0x1557c4={};var _0x59211b={};var _0x436c45;var _0x2fc675;return db[_0xb0a5('0x36')][_0xb0a5('0x48')]({'where':{'id':_0x3b2d1c['params']['id']}})[_0xb0a5('0x1e')](handleEntityNotFound(_0x309ff1,null))[_0xb0a5('0x1e')](function(_0x2b4ac4){if(_0x2b4ac4){_0x436c45=_0x2b4ac4;_0x59211b[_0xb0a5('0x28')]=_['keys'](db['FreshdeskField'][_0xb0a5('0x24')]);_0x59211b[_0xb0a5('0x29')]=_[_0xb0a5('0x3d')](_0x3b2d1c['query']);_0x59211b[_0xb0a5('0x31')]=_[_0xb0a5('0x2a')](_0x59211b[_0xb0a5('0x28')],_0x59211b[_0xb0a5('0x29')]);_0x1557c4['attributes']=_[_0xb0a5('0x2a')](_0x59211b[_0xb0a5('0x28')],qs['fields'](_0x3b2d1c['query']['fields']));_0x1557c4[_0xb0a5('0x2c')]=_0x1557c4[_0xb0a5('0x2c')]['length']?_0x1557c4[_0xb0a5('0x2c')]:_0x59211b[_0xb0a5('0x28')];_0x1557c4[_0xb0a5('0x45')]=qs[_0xb0a5('0x2f')](_0x3b2d1c[_0xb0a5('0x29')][_0xb0a5('0x2f')]);_0x1557c4['where']=qs[_0xb0a5('0x31')](_[_0xb0a5('0x49')](_0x3b2d1c['query'],_0x59211b[_0xb0a5('0x31')]));if(_0x3b2d1c['query'][_0xb0a5('0x33')]){_0x1557c4[_0xb0a5('0x30')]=_[_0xb0a5('0x34')](_0x1557c4[_0xb0a5('0x30')],{'$or':_[_0xb0a5('0x46')](_0x1557c4[_0xb0a5('0x2c')],function(_0x335c87){var _0x3c46cd={};_0x3c46cd[_0x335c87]={'$like':'%'+_0x3b2d1c[_0xb0a5('0x29')][_0xb0a5('0x33')]+'%'};return _0x3c46cd;})});}_0x1557c4=_[_0xb0a5('0x34')]({},_0x1557c4,_0x3b2d1c[_0xb0a5('0x35')]);return _0x436c45[_0xb0a5('0x47')](_0x1557c4);}})['then'](function(_0x4c8d26){if(_0x4c8d26){_0x2fc675=_0x4c8d26[_0xb0a5('0x3e')];if(!_0x3b2d1c['query'][_0xb0a5('0x2d')](_0xb0a5('0x2e'))){_0x1557c4[_0xb0a5('0x18')]=qs[_0xb0a5('0x18')](_0x3b2d1c[_0xb0a5('0x29')][_0xb0a5('0x18')]);_0x1557c4[_0xb0a5('0x16')]=qs[_0xb0a5('0x16')](_0x3b2d1c[_0xb0a5('0x29')][_0xb0a5('0x16')]);}return _0x436c45[_0xb0a5('0x47')](_0x1557c4);}})[_0xb0a5('0x1e')](function(_0x313bec){if(_0x313bec){return _0x313bec?{'count':_0x2fc675,'rows':_0x313bec}:null;}})['then'](respondWithResult(_0x309ff1,null))[_0xb0a5('0x40')](handleError(_0x309ff1,null));};exports[_0xb0a5('0x4a')]=function(_0x4b6cbd,_0x25224c,_0x36bf46){var _0x1824bc={};var _0x5f0c30={};var _0x4507a3;var _0x5bb3e9;return db[_0xb0a5('0x36')][_0xb0a5('0x48')]({'where':{'id':_0x4b6cbd[_0xb0a5('0x3c')]['id']}})[_0xb0a5('0x1e')](handleEntityNotFound(_0x25224c,null))[_0xb0a5('0x1e')](function(_0x28d87b){if(_0x28d87b){_0x4507a3=_0x28d87b;_0x5f0c30[_0xb0a5('0x28')]=_[_0xb0a5('0x3d')](db[_0xb0a5('0x44')][_0xb0a5('0x24')]);_0x5f0c30[_0xb0a5('0x29')]=_[_0xb0a5('0x3d')](_0x4b6cbd[_0xb0a5('0x29')]);_0x5f0c30['filters']=_[_0xb0a5('0x2a')](_0x5f0c30['model'],_0x5f0c30[_0xb0a5('0x29')]);_0x1824bc[_0xb0a5('0x2c')]=_[_0xb0a5('0x2a')](_0x5f0c30[_0xb0a5('0x28')],qs[_0xb0a5('0x2b')](_0x4b6cbd[_0xb0a5('0x29')][_0xb0a5('0x2b')]));_0x1824bc[_0xb0a5('0x2c')]=_0x1824bc[_0xb0a5('0x2c')][_0xb0a5('0x3e')]?_0x1824bc[_0xb0a5('0x2c')]:_0x5f0c30[_0xb0a5('0x28')];_0x1824bc[_0xb0a5('0x45')]=qs[_0xb0a5('0x2f')](_0x4b6cbd[_0xb0a5('0x29')][_0xb0a5('0x2f')]);_0x1824bc['where']=qs[_0xb0a5('0x31')](_[_0xb0a5('0x49')](_0x4b6cbd['query'],_0x5f0c30[_0xb0a5('0x31')]));if(_0x4b6cbd['query'][_0xb0a5('0x33')]){_0x1824bc[_0xb0a5('0x30')]=_['merge'](_0x1824bc[_0xb0a5('0x30')],{'$or':_[_0xb0a5('0x46')](_0x1824bc[_0xb0a5('0x2c')],function(_0x56b8ab){var _0x17a132={};_0x17a132[_0x56b8ab]={'$like':'%'+_0x4b6cbd[_0xb0a5('0x29')][_0xb0a5('0x33')]+'%'};return _0x17a132;})});}_0x1824bc=_['merge']({},_0x1824bc,_0x4b6cbd[_0xb0a5('0x35')]);return _0x4507a3['getDescriptions'](_0x1824bc);}})[_0xb0a5('0x1e')](function(_0x3d42db){if(_0x3d42db){_0x5bb3e9=_0x3d42db['length'];if(!_0x4b6cbd[_0xb0a5('0x29')][_0xb0a5('0x2d')]('nolimit')){_0x1824bc['limit']=qs[_0xb0a5('0x18')](_0x4b6cbd[_0xb0a5('0x29')][_0xb0a5('0x18')]);_0x1824bc[_0xb0a5('0x16')]=qs[_0xb0a5('0x16')](_0x4b6cbd[_0xb0a5('0x29')][_0xb0a5('0x16')]);}return _0x4507a3[_0xb0a5('0x4a')](_0x1824bc);}})[_0xb0a5('0x1e')](function(_0x6a670d){if(_0x6a670d){return _0x6a670d?{'count':_0x5bb3e9,'rows':_0x6a670d}:null;}})['then'](respondWithResult(_0x25224c,null))[_0xb0a5('0x40')](handleError(_0x25224c,null));};exports[_0xb0a5('0x4b')]=function(_0x5bb6c4,_0x20294d,_0x25fe82){var _0x2f91ed={};var _0x3d38c5={};var _0x1f3ca6;var _0x475e83;return db['FreshdeskConfiguration'][_0xb0a5('0x48')]({'where':{'id':_0x5bb6c4[_0xb0a5('0x3c')]['id']}})[_0xb0a5('0x1e')](handleEntityNotFound(_0x20294d,null))['then'](function(_0x5ea77e){if(_0x5ea77e){_0x1f3ca6=_0x5ea77e;_0x3d38c5[_0xb0a5('0x28')]=_[_0xb0a5('0x3d')](db['Tag']['rawAttributes']);_0x3d38c5[_0xb0a5('0x29')]=_[_0xb0a5('0x3d')](_0x5bb6c4['query']);_0x3d38c5['filters']=_['intersection'](_0x3d38c5[_0xb0a5('0x28')],_0x3d38c5[_0xb0a5('0x29')]);_0x2f91ed['attributes']=_[_0xb0a5('0x2a')](_0x3d38c5[_0xb0a5('0x28')],qs[_0xb0a5('0x2b')](_0x5bb6c4['query'][_0xb0a5('0x2b')]));_0x2f91ed[_0xb0a5('0x2c')]=_0x2f91ed[_0xb0a5('0x2c')][_0xb0a5('0x3e')]?_0x2f91ed[_0xb0a5('0x2c')]:_0x3d38c5[_0xb0a5('0x28')];_0x2f91ed[_0xb0a5('0x45')]=qs[_0xb0a5('0x2f')](_0x5bb6c4[_0xb0a5('0x29')][_0xb0a5('0x2f')]);_0x2f91ed[_0xb0a5('0x30')]=qs['filters'](_[_0xb0a5('0x49')](_0x5bb6c4[_0xb0a5('0x29')],_0x3d38c5['filters']));if(_0x5bb6c4[_0xb0a5('0x29')][_0xb0a5('0x33')]){_0x2f91ed[_0xb0a5('0x30')]=_[_0xb0a5('0x34')](_0x2f91ed[_0xb0a5('0x30')],{'$or':_[_0xb0a5('0x46')](_0x2f91ed[_0xb0a5('0x2c')],function(_0x28c399){var _0x2e4dcd={};_0x2e4dcd[_0x28c399]={'$like':'%'+_0x5bb6c4[_0xb0a5('0x29')][_0xb0a5('0x33')]+'%'};return _0x2e4dcd;})});}_0x2f91ed=_[_0xb0a5('0x34')]({},_0x2f91ed,_0x5bb6c4[_0xb0a5('0x35')]);return _0x1f3ca6[_0xb0a5('0x4b')](_0x2f91ed);}})[_0xb0a5('0x1e')](function(_0x2bac12){if(_0x2bac12){_0x475e83=_0x2bac12[_0xb0a5('0x3e')];if(!_0x5bb6c4[_0xb0a5('0x29')][_0xb0a5('0x2d')]('nolimit')){_0x2f91ed['limit']=qs[_0xb0a5('0x18')](_0x5bb6c4[_0xb0a5('0x29')][_0xb0a5('0x18')]);_0x2f91ed[_0xb0a5('0x16')]=qs['offset'](_0x5bb6c4[_0xb0a5('0x29')][_0xb0a5('0x16')]);}return _0x1f3ca6[_0xb0a5('0x4b')](_0x2f91ed);}})[_0xb0a5('0x1e')](function(_0x4cddd8){if(_0x4cddd8){return _0x4cddd8?{'count':_0x475e83,'rows':_0x4cddd8}:null;}})[_0xb0a5('0x1e')](respondWithResult(_0x20294d,null))[_0xb0a5('0x40')](handleError(_0x20294d,null));};exports[_0xb0a5('0x4c')]=function(_0x38a411,_0xcc8072,_0x55676a){if(_0x38a411[_0xb0a5('0x42')]['id']){delete _0x38a411[_0xb0a5('0x42')]['id'];}return db[_0xb0a5('0x36')][_0xb0a5('0x48')]({'where':{'id':_0x38a411[_0xb0a5('0x3c')]['id']}})[_0xb0a5('0x1e')](handleEntityNotFound(_0xcc8072,null))[_0xb0a5('0x1e')](function(_0x43e05a){if(_0x43e05a){return _0x43e05a['setTags'](_0x38a411[_0xb0a5('0x42')][_0xb0a5('0x4d')]||[]);}return null;})[_0xb0a5('0x1e')](respondWithResult(_0xcc8072,null))[_0xb0a5('0x40')](handleError(_0xcc8072,null));};
\ No newline at end of file
+var _0xd21f=['filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','map','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','getFields','pick','getSubjects','findOne','FreshdeskField','nolimit','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','destroy','then','error','name','send','FreshdeskConfiguration','rawAttributes','type','key','model','query','keys'];(function(_0x1e9e56,_0x34a74a){var _0x5d5e2e=function(_0x4bfcc2){while(--_0x4bfcc2){_0x1e9e56['push'](_0x1e9e56['shift']());}};_0x5d5e2e(++_0x34a74a);}(_0xd21f,0xc4));var _0xfd21=function(_0x5a585b,_0x3e0674){_0x5a585b=_0x5a585b-0x0;var _0x4cd398=_0xd21f[_0x5a585b];return _0x4cd398;};'use strict';var emlformat=require(_0xfd21('0x0'));var rimraf=require(_0xfd21('0x1'));var zipdir=require(_0xfd21('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfd21('0x3'));var moment=require('moment');var BPromise=require(_0xfd21('0x4'));var Mustache=require(_0xfd21('0x5'));var util=require(_0xfd21('0x6'));var path=require('path');var sox=require(_0xfd21('0x7'));var csv=require(_0xfd21('0x8'));var ejs=require(_0xfd21('0x9'));var fs=require('fs');var fs_extra=require(_0xfd21('0xa'));var _=require(_0xfd21('0xb'));var squel=require(_0xfd21('0xc'));var crypto=require(_0xfd21('0xd'));var jsforce=require(_0xfd21('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xfd21('0x8'));var querystring=require(_0xfd21('0xf'));var Papa=require(_0xfd21('0x10'));var Redis=require(_0xfd21('0x11'));var authService=require(_0xfd21('0x12'));var qs=require(_0xfd21('0x13'));var as=require(_0xfd21('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfd21('0x15'))('api');var utils=require(_0xfd21('0x16'));var config=require(_0xfd21('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xfd21('0x18'))['db'];function respondWithStatusCode(_0x3f21f3,_0x42fa34){_0x42fa34=_0x42fa34||0xcc;return function(_0x1b043e){if(_0x1b043e){return _0x3f21f3['sendStatus'](_0x42fa34);}return _0x3f21f3[_0xfd21('0x19')](_0x42fa34)[_0xfd21('0x1a')]();};}function respondWithResult(_0x608a32,_0x55c75b){_0x55c75b=_0x55c75b||0xc8;return function(_0xc43fda){if(_0xc43fda){return _0x608a32[_0xfd21('0x19')](_0x55c75b)[_0xfd21('0x1b')](_0xc43fda);}};}function respondWithFilteredResult(_0x4207ad,_0x49af82){return function(_0x4c0bd5){if(_0x4c0bd5){var _0x465830=typeof _0x49af82[_0xfd21('0x1c')]===_0xfd21('0x1d')&&typeof _0x49af82[_0xfd21('0x1e')]===_0xfd21('0x1d');var _0x244b8e=_0x4c0bd5[_0xfd21('0x1f')];var _0x53b4f4=_0x465830?0x0:_0x49af82[_0xfd21('0x1c')];var _0x9da461=_0x465830?_0x4c0bd5['count']:_0x49af82[_0xfd21('0x1c')]+_0x49af82[_0xfd21('0x1e')];var _0x187286;if(_0x9da461>=_0x244b8e){_0x9da461=_0x244b8e;_0x187286=0xc8;}else{_0x187286=0xce;}_0x4207ad[_0xfd21('0x19')](_0x187286);return _0x4207ad['set'](_0xfd21('0x20'),_0x53b4f4+'-'+_0x9da461+'/'+_0x244b8e)[_0xfd21('0x1b')](_0x4c0bd5);}return null;};}function patchUpdates(_0x474092){return function(_0x15f3ec){try{jsonpatch[_0xfd21('0x21')](_0x15f3ec,_0x474092,!![]);}catch(_0x13ce71){return BPromise['reject'](_0x13ce71);}return _0x15f3ec['save']();};}function saveUpdates(_0x2b47ab,_0x3668a5){return function(_0xcf8aa1){if(_0xcf8aa1){return _0xcf8aa1[_0xfd21('0x22')](_0x2b47ab)['then'](function(_0x4e3f6c){return _0x4e3f6c;});}return null;};}function removeEntity(_0x5099eb,_0x39d1ed){return function(_0x3eee4c){if(_0x3eee4c){return _0x3eee4c[_0xfd21('0x23')]()[_0xfd21('0x24')](function(){_0x5099eb[_0xfd21('0x19')](0xcc)[_0xfd21('0x1a')]();});}};}function handleEntityNotFound(_0xc6b9e4,_0x73fa24){return function(_0xc09e55){if(!_0xc09e55){_0xc6b9e4['sendStatus'](0x194);}return _0xc09e55;};}function handleError(_0x2dc26a,_0xe7bfe5){_0xe7bfe5=_0xe7bfe5||0x1f4;return function(_0x21fe49){logger[_0xfd21('0x25')](_0x21fe49['stack']);if(_0x21fe49[_0xfd21('0x26')]){delete _0x21fe49[_0xfd21('0x26')];}_0x2dc26a[_0xfd21('0x19')](_0xe7bfe5)[_0xfd21('0x27')](_0x21fe49);};}exports['index']=function(_0x3769b6,_0x3fa8c1){var _0x414aff={},_0x41071b={},_0x1c041b={'count':0x0,'rows':[]};var _0x59034e=_['map'](db[_0xfd21('0x28')][_0xfd21('0x29')],function(_0x136c24){return{'name':_0x136c24['fieldName'],'type':_0x136c24[_0xfd21('0x2a')][_0xfd21('0x2b')]};});_0x41071b[_0xfd21('0x2c')]=_['map'](_0x59034e,_0xfd21('0x26'));_0x41071b[_0xfd21('0x2d')]=_[_0xfd21('0x2e')](_0x3769b6[_0xfd21('0x2d')]);_0x41071b[_0xfd21('0x2f')]=_[_0xfd21('0x30')](_0x41071b['model'],_0x41071b['query']);_0x414aff[_0xfd21('0x31')]=_[_0xfd21('0x30')](_0x41071b[_0xfd21('0x2c')],qs[_0xfd21('0x32')](_0x3769b6[_0xfd21('0x2d')][_0xfd21('0x32')]));_0x414aff[_0xfd21('0x31')]=_0x414aff[_0xfd21('0x31')][_0xfd21('0x33')]?_0x414aff[_0xfd21('0x31')]:_0x41071b['model'];if(!_0x3769b6[_0xfd21('0x2d')][_0xfd21('0x34')]('nolimit')){_0x414aff[_0xfd21('0x1e')]=qs['limit'](_0x3769b6[_0xfd21('0x2d')]['limit']);_0x414aff[_0xfd21('0x1c')]=qs[_0xfd21('0x1c')](_0x3769b6[_0xfd21('0x2d')]['offset']);}_0x414aff[_0xfd21('0x35')]=qs[_0xfd21('0x36')](_0x3769b6[_0xfd21('0x2d')][_0xfd21('0x36')]);_0x414aff[_0xfd21('0x37')]=qs[_0xfd21('0x2f')](_['pick'](_0x3769b6[_0xfd21('0x2d')],_0x41071b[_0xfd21('0x2f')]),_0x59034e);if(_0x3769b6[_0xfd21('0x2d')][_0xfd21('0x38')]){_0x414aff['where']=_[_0xfd21('0x39')](_0x414aff[_0xfd21('0x37')],{'$or':_[_0xfd21('0x3a')](_0x59034e,function(_0x2d6e7f){if(_0x2d6e7f[_0xfd21('0x2a')]!==_0xfd21('0x3b')){var _0x1441bc={};_0x1441bc[_0x2d6e7f[_0xfd21('0x26')]]={'$like':'%'+_0x3769b6['query']['filter']+'%'};return _0x1441bc;}})});}_0x414aff=_[_0xfd21('0x39')]({},_0x414aff,_0x3769b6[_0xfd21('0x3c')]);var _0x440e0c={'where':_0x414aff['where']};return db[_0xfd21('0x28')][_0xfd21('0x1f')](_0x440e0c)[_0xfd21('0x24')](function(_0x37ead9){_0x1c041b['count']=_0x37ead9;if(_0x3769b6['query'][_0xfd21('0x3d')]){_0x414aff[_0xfd21('0x3e')]=[{'all':!![]}];}return db[_0xfd21('0x28')]['findAll'](_0x414aff);})[_0xfd21('0x24')](function(_0x110965){_0x1c041b[_0xfd21('0x3f')]=_0x110965;return _0x1c041b;})[_0xfd21('0x24')](respondWithFilteredResult(_0x3fa8c1,_0x414aff))[_0xfd21('0x40')](handleError(_0x3fa8c1,null));};exports[_0xfd21('0x41')]=function(_0x516397,_0x4733aa){var _0x1d717b={'raw':![],'where':{'id':_0x516397[_0xfd21('0x42')]['id']}},_0x1753be={};_0x1753be['model']=_['keys'](db[_0xfd21('0x28')][_0xfd21('0x29')]);_0x1753be[_0xfd21('0x2d')]=_['keys'](_0x516397[_0xfd21('0x2d')]);_0x1753be[_0xfd21('0x2f')]=_['intersection'](_0x1753be['model'],_0x1753be[_0xfd21('0x2d')]);_0x1d717b[_0xfd21('0x31')]=_[_0xfd21('0x30')](_0x1753be[_0xfd21('0x2c')],qs[_0xfd21('0x32')](_0x516397[_0xfd21('0x2d')][_0xfd21('0x32')]));_0x1d717b[_0xfd21('0x31')]=_0x1d717b['attributes'][_0xfd21('0x33')]?_0x1d717b[_0xfd21('0x31')]:_0x1753be[_0xfd21('0x2c')];if(_0x516397[_0xfd21('0x2d')]['includeAll']){_0x1d717b[_0xfd21('0x3e')]=[{'all':!![]}];}_0x1d717b=_[_0xfd21('0x39')]({},_0x1d717b,_0x516397[_0xfd21('0x3c')]);return db[_0xfd21('0x28')][_0xfd21('0x43')](_0x1d717b)[_0xfd21('0x24')](handleEntityNotFound(_0x4733aa,null))[_0xfd21('0x24')](respondWithResult(_0x4733aa,null))['catch'](handleError(_0x4733aa,null));};exports['create']=function(_0xea110d,_0x540a48){return db[_0xfd21('0x28')][_0xfd21('0x44')](_0xea110d[_0xfd21('0x45')],{})[_0xfd21('0x24')](respondWithResult(_0x540a48,0xc9))['catch'](handleError(_0x540a48,null));};exports[_0xfd21('0x22')]=function(_0x3b8109,_0x29bd63){if(_0x3b8109[_0xfd21('0x45')]['id']){delete _0x3b8109[_0xfd21('0x45')]['id'];}return db[_0xfd21('0x28')][_0xfd21('0x43')]({'where':{'id':_0x3b8109[_0xfd21('0x42')]['id']}})['then'](handleEntityNotFound(_0x29bd63,null))[_0xfd21('0x24')](saveUpdates(_0x3b8109[_0xfd21('0x45')],null))['then'](respondWithResult(_0x29bd63,null))[_0xfd21('0x40')](handleError(_0x29bd63,null));};exports[_0xfd21('0x23')]=function(_0x528ced,_0x1adcf3){return db[_0xfd21('0x28')][_0xfd21('0x43')]({'where':{'id':_0x528ced[_0xfd21('0x42')]['id']}})[_0xfd21('0x24')](handleEntityNotFound(_0x1adcf3,null))['then'](removeEntity(_0x1adcf3,null))['catch'](handleError(_0x1adcf3,null));};exports[_0xfd21('0x46')]=function(_0x3c63a4,_0x4a0e1c,_0x322a56){var _0x3e0361={};var _0x43d49e={};var _0x3e7715;var _0x3e00bd;return db[_0xfd21('0x28')]['findOne']({'where':{'id':_0x3c63a4[_0xfd21('0x42')]['id']}})['then'](handleEntityNotFound(_0x4a0e1c,null))[_0xfd21('0x24')](function(_0x42f771){if(_0x42f771){_0x3e7715=_0x42f771;_0x43d49e[_0xfd21('0x2c')]=_[_0xfd21('0x2e')](db['FreshdeskField'][_0xfd21('0x29')]);_0x43d49e[_0xfd21('0x2d')]=_[_0xfd21('0x2e')](_0x3c63a4['query']);_0x43d49e['filters']=_['intersection'](_0x43d49e[_0xfd21('0x2c')],_0x43d49e[_0xfd21('0x2d')]);_0x3e0361[_0xfd21('0x31')]=_[_0xfd21('0x30')](_0x43d49e['model'],qs[_0xfd21('0x32')](_0x3c63a4[_0xfd21('0x2d')][_0xfd21('0x32')]));_0x3e0361[_0xfd21('0x31')]=_0x3e0361['attributes'][_0xfd21('0x33')]?_0x3e0361[_0xfd21('0x31')]:_0x43d49e['model'];_0x3e0361[_0xfd21('0x35')]=qs['sort'](_0x3c63a4[_0xfd21('0x2d')][_0xfd21('0x36')]);_0x3e0361[_0xfd21('0x37')]=qs[_0xfd21('0x2f')](_[_0xfd21('0x47')](_0x3c63a4[_0xfd21('0x2d')],_0x43d49e[_0xfd21('0x2f')]));if(_0x3c63a4[_0xfd21('0x2d')][_0xfd21('0x38')]){_0x3e0361[_0xfd21('0x37')]=_[_0xfd21('0x39')](_0x3e0361['where'],{'$or':_[_0xfd21('0x3a')](_0x3e0361[_0xfd21('0x31')],function(_0xee6610){var _0x2f6035={};_0x2f6035[_0xee6610]={'$like':'%'+_0x3c63a4['query'][_0xfd21('0x38')]+'%'};return _0x2f6035;})});}_0x3e0361=_[_0xfd21('0x39')]({},_0x3e0361,_0x3c63a4['options']);return _0x3e7715[_0xfd21('0x46')](_0x3e0361);}})[_0xfd21('0x24')](function(_0x3af076){if(_0x3af076){_0x3e00bd=_0x3af076[_0xfd21('0x33')];if(!_0x3c63a4[_0xfd21('0x2d')][_0xfd21('0x34')]('nolimit')){_0x3e0361[_0xfd21('0x1e')]=qs['limit'](_0x3c63a4[_0xfd21('0x2d')][_0xfd21('0x1e')]);_0x3e0361[_0xfd21('0x1c')]=qs['offset'](_0x3c63a4[_0xfd21('0x2d')][_0xfd21('0x1c')]);}return _0x3e7715[_0xfd21('0x46')](_0x3e0361);}})[_0xfd21('0x24')](function(_0x27c1b6){if(_0x27c1b6){return _0x27c1b6?{'count':_0x3e00bd,'rows':_0x27c1b6}:null;}})[_0xfd21('0x24')](respondWithResult(_0x4a0e1c,null))[_0xfd21('0x40')](handleError(_0x4a0e1c,null));};exports[_0xfd21('0x48')]=function(_0x1f1753,_0x1ac7d2,_0x4fc136){var _0x16ab13={};var _0x12addf={};var _0xad4d15;var _0x2aa781;return db[_0xfd21('0x28')][_0xfd21('0x49')]({'where':{'id':_0x1f1753[_0xfd21('0x42')]['id']}})[_0xfd21('0x24')](handleEntityNotFound(_0x1ac7d2,null))[_0xfd21('0x24')](function(_0x307423){if(_0x307423){_0xad4d15=_0x307423;_0x12addf['model']=_[_0xfd21('0x2e')](db[_0xfd21('0x4a')][_0xfd21('0x29')]);_0x12addf[_0xfd21('0x2d')]=_[_0xfd21('0x2e')](_0x1f1753[_0xfd21('0x2d')]);_0x12addf[_0xfd21('0x2f')]=_['intersection'](_0x12addf[_0xfd21('0x2c')],_0x12addf[_0xfd21('0x2d')]);_0x16ab13[_0xfd21('0x31')]=_[_0xfd21('0x30')](_0x12addf[_0xfd21('0x2c')],qs[_0xfd21('0x32')](_0x1f1753[_0xfd21('0x2d')][_0xfd21('0x32')]));_0x16ab13[_0xfd21('0x31')]=_0x16ab13[_0xfd21('0x31')][_0xfd21('0x33')]?_0x16ab13[_0xfd21('0x31')]:_0x12addf['model'];_0x16ab13[_0xfd21('0x35')]=qs['sort'](_0x1f1753[_0xfd21('0x2d')][_0xfd21('0x36')]);_0x16ab13['where']=qs[_0xfd21('0x2f')](_['pick'](_0x1f1753[_0xfd21('0x2d')],_0x12addf[_0xfd21('0x2f')]));if(_0x1f1753[_0xfd21('0x2d')][_0xfd21('0x38')]){_0x16ab13['where']=_[_0xfd21('0x39')](_0x16ab13['where'],{'$or':_['map'](_0x16ab13['attributes'],function(_0x3b08a9){var _0x3270e0={};_0x3270e0[_0x3b08a9]={'$like':'%'+_0x1f1753[_0xfd21('0x2d')][_0xfd21('0x38')]+'%'};return _0x3270e0;})});}_0x16ab13=_[_0xfd21('0x39')]({},_0x16ab13,_0x1f1753[_0xfd21('0x3c')]);return _0xad4d15[_0xfd21('0x48')](_0x16ab13);}})[_0xfd21('0x24')](function(_0x560288){if(_0x560288){_0x2aa781=_0x560288[_0xfd21('0x33')];if(!_0x1f1753[_0xfd21('0x2d')]['hasOwnProperty'](_0xfd21('0x4b'))){_0x16ab13[_0xfd21('0x1e')]=qs[_0xfd21('0x1e')](_0x1f1753[_0xfd21('0x2d')][_0xfd21('0x1e')]);_0x16ab13['offset']=qs[_0xfd21('0x1c')](_0x1f1753[_0xfd21('0x2d')][_0xfd21('0x1c')]);}return _0xad4d15[_0xfd21('0x48')](_0x16ab13);}})[_0xfd21('0x24')](function(_0x3d6e6a){if(_0x3d6e6a){return _0x3d6e6a?{'count':_0x2aa781,'rows':_0x3d6e6a}:null;}})['then'](respondWithResult(_0x1ac7d2,null))[_0xfd21('0x40')](handleError(_0x1ac7d2,null));};exports[_0xfd21('0x4c')]=function(_0x3c5afa,_0x1823d9,_0x258a24){var _0x1da481={};var _0x2445e1={};var _0x297337;var _0x500877;return db[_0xfd21('0x28')][_0xfd21('0x49')]({'where':{'id':_0x3c5afa[_0xfd21('0x42')]['id']}})[_0xfd21('0x24')](handleEntityNotFound(_0x1823d9,null))['then'](function(_0x10a8ee){if(_0x10a8ee){_0x297337=_0x10a8ee;_0x2445e1[_0xfd21('0x2c')]=_['keys'](db[_0xfd21('0x4a')][_0xfd21('0x29')]);_0x2445e1['query']=_['keys'](_0x3c5afa['query']);_0x2445e1[_0xfd21('0x2f')]=_[_0xfd21('0x30')](_0x2445e1[_0xfd21('0x2c')],_0x2445e1[_0xfd21('0x2d')]);_0x1da481['attributes']=_['intersection'](_0x2445e1[_0xfd21('0x2c')],qs[_0xfd21('0x32')](_0x3c5afa[_0xfd21('0x2d')]['fields']));_0x1da481[_0xfd21('0x31')]=_0x1da481[_0xfd21('0x31')][_0xfd21('0x33')]?_0x1da481['attributes']:_0x2445e1[_0xfd21('0x2c')];_0x1da481['order']=qs[_0xfd21('0x36')](_0x3c5afa['query'][_0xfd21('0x36')]);_0x1da481['where']=qs['filters'](_['pick'](_0x3c5afa[_0xfd21('0x2d')],_0x2445e1[_0xfd21('0x2f')]));if(_0x3c5afa[_0xfd21('0x2d')][_0xfd21('0x38')]){_0x1da481[_0xfd21('0x37')]=_[_0xfd21('0x39')](_0x1da481[_0xfd21('0x37')],{'$or':_['map'](_0x1da481[_0xfd21('0x31')],function(_0x279ba6){var _0x2d2a67={};_0x2d2a67[_0x279ba6]={'$like':'%'+_0x3c5afa['query']['filter']+'%'};return _0x2d2a67;})});}_0x1da481=_[_0xfd21('0x39')]({},_0x1da481,_0x3c5afa['options']);return _0x297337[_0xfd21('0x4c')](_0x1da481);}})[_0xfd21('0x24')](function(_0x128931){if(_0x128931){_0x500877=_0x128931[_0xfd21('0x33')];if(!_0x3c5afa[_0xfd21('0x2d')]['hasOwnProperty'](_0xfd21('0x4b'))){_0x1da481['limit']=qs[_0xfd21('0x1e')](_0x3c5afa[_0xfd21('0x2d')]['limit']);_0x1da481['offset']=qs[_0xfd21('0x1c')](_0x3c5afa[_0xfd21('0x2d')][_0xfd21('0x1c')]);}return _0x297337[_0xfd21('0x4c')](_0x1da481);}})[_0xfd21('0x24')](function(_0x562fd6){if(_0x562fd6){return _0x562fd6?{'count':_0x500877,'rows':_0x562fd6}:null;}})[_0xfd21('0x24')](respondWithResult(_0x1823d9,null))['catch'](handleError(_0x1823d9,null));};exports[_0xfd21('0x4d')]=function(_0x540b34,_0x3655ac,_0x57588e){var _0x32be88={};var _0x1ed4f7={};var _0x22d1d7;var _0x4a2789;return db[_0xfd21('0x28')][_0xfd21('0x49')]({'where':{'id':_0x540b34[_0xfd21('0x42')]['id']}})[_0xfd21('0x24')](handleEntityNotFound(_0x3655ac,null))['then'](function(_0x180fe8){if(_0x180fe8){_0x22d1d7=_0x180fe8;_0x1ed4f7[_0xfd21('0x2c')]=_[_0xfd21('0x2e')](db[_0xfd21('0x4e')][_0xfd21('0x29')]);_0x1ed4f7['query']=_[_0xfd21('0x2e')](_0x540b34[_0xfd21('0x2d')]);_0x1ed4f7[_0xfd21('0x2f')]=_[_0xfd21('0x30')](_0x1ed4f7[_0xfd21('0x2c')],_0x1ed4f7['query']);_0x32be88['attributes']=_[_0xfd21('0x30')](_0x1ed4f7[_0xfd21('0x2c')],qs[_0xfd21('0x32')](_0x540b34['query'][_0xfd21('0x32')]));_0x32be88[_0xfd21('0x31')]=_0x32be88[_0xfd21('0x31')][_0xfd21('0x33')]?_0x32be88[_0xfd21('0x31')]:_0x1ed4f7[_0xfd21('0x2c')];_0x32be88[_0xfd21('0x35')]=qs[_0xfd21('0x36')](_0x540b34[_0xfd21('0x2d')][_0xfd21('0x36')]);_0x32be88[_0xfd21('0x37')]=qs['filters'](_[_0xfd21('0x47')](_0x540b34[_0xfd21('0x2d')],_0x1ed4f7[_0xfd21('0x2f')]));if(_0x540b34[_0xfd21('0x2d')]['filter']){_0x32be88[_0xfd21('0x37')]=_['merge'](_0x32be88['where'],{'$or':_['map'](_0x32be88['attributes'],function(_0x563238){var _0x115f0e={};_0x115f0e[_0x563238]={'$like':'%'+_0x540b34[_0xfd21('0x2d')][_0xfd21('0x38')]+'%'};return _0x115f0e;})});}_0x32be88=_[_0xfd21('0x39')]({},_0x32be88,_0x540b34[_0xfd21('0x3c')]);return _0x22d1d7[_0xfd21('0x4d')](_0x32be88);}})[_0xfd21('0x24')](function(_0xb8bfbf){if(_0xb8bfbf){_0x4a2789=_0xb8bfbf['length'];if(!_0x540b34[_0xfd21('0x2d')][_0xfd21('0x34')](_0xfd21('0x4b'))){_0x32be88[_0xfd21('0x1e')]=qs['limit'](_0x540b34[_0xfd21('0x2d')][_0xfd21('0x1e')]);_0x32be88[_0xfd21('0x1c')]=qs[_0xfd21('0x1c')](_0x540b34[_0xfd21('0x2d')][_0xfd21('0x1c')]);}return _0x22d1d7[_0xfd21('0x4d')](_0x32be88);}})[_0xfd21('0x24')](function(_0x4c1ecd){if(_0x4c1ecd){return _0x4c1ecd?{'count':_0x4a2789,'rows':_0x4c1ecd}:null;}})['then'](respondWithResult(_0x3655ac,null))[_0xfd21('0x40')](handleError(_0x3655ac,null));};exports['setTags']=function(_0x33db6e,_0x1c0280,_0x5a7b9d){if(_0x33db6e[_0xfd21('0x45')]['id']){delete _0x33db6e[_0xfd21('0x45')]['id'];}return db['FreshdeskConfiguration'][_0xfd21('0x49')]({'where':{'id':_0x33db6e['params']['id']}})[_0xfd21('0x24')](handleEntityNotFound(_0x1c0280,null))['then'](function(_0x5e0ed0){if(_0x5e0ed0){return _0x5e0ed0[_0xfd21('0x4f')](_0x33db6e[_0xfd21('0x45')][_0xfd21('0x50')]||[]);}return null;})[_0xfd21('0x24')](respondWithResult(_0x1c0280,null))[_0xfd21('0x40')](handleError(_0x1c0280,null));};
\ No newline at end of file
index b9c19f9..afa0da3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3946=['../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x3946,0xb9));var _0x6394=function(_0xd09668,_0x1435b2){_0xd09668=_0xd09668-0x0;var _0x68726=_0x3946[_0xd09668];return _0x68726;};'use strict';var _=require(_0x6394('0x0'));var util=require(_0x6394('0x1'));var logger=require(_0x6394('0x2'))(_0x6394('0x3'));var moment=require(_0x6394('0x4'));var BPromise=require('bluebird');var rp=require(_0x6394('0x5'));var fs=require('fs');var path=require(_0x6394('0x6'));var rimraf=require('rimraf');var config=require(_0x6394('0x7'));var attributes=require(_0x6394('0x8'));module[_0x6394('0x9')]=function(_0x3b88c6,_0x480d14){return _0x3b88c6[_0x6394('0xa')](_0x6394('0xb'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaff9=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','int_freshdesk_configurations','lodash','util','api'];(function(_0x343ae0,_0x5d4f37){var _0x572dde=function(_0x3d738f){while(--_0x3d738f){_0x343ae0['push'](_0x343ae0['shift']());}};_0x572dde(++_0x5d4f37);}(_0xaff9,0x135));var _0x9aff=function(_0x96ea94,_0x1e73e7){_0x96ea94=_0x96ea94-0x0;var _0x543380=_0xaff9[_0x96ea94];return _0x543380;};'use strict';var _=require(_0x9aff('0x0'));var util=require(_0x9aff('0x1'));var logger=require('../../config/logger')(_0x9aff('0x2'));var moment=require(_0x9aff('0x3'));var BPromise=require(_0x9aff('0x4'));var rp=require(_0x9aff('0x5'));var fs=require('fs');var path=require(_0x9aff('0x6'));var rimraf=require(_0x9aff('0x7'));var config=require(_0x9aff('0x8'));var attributes=require(_0x9aff('0x9'));module[_0x9aff('0xa')]=function(_0xe90ba,_0xc6debc){return _0xe90ba['define']('FreshdeskConfiguration',attributes,{'tableName':_0x9aff('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4fb3e62..c25866d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x218e=['../../config/logger','jayson/promise','client','http','request','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x502953,_0x28de83){var _0x2fa32d=function(_0x3b3a52){while(--_0x3b3a52){_0x502953['push'](_0x502953['shift']());}};_0x2fa32d(++_0x28de83);}(_0x218e,0xc2));var _0xe218=function(_0x2e17f3,_0xa1f21a){_0x2e17f3=_0x2e17f3-0x0;var _0x44c057=_0x218e[_0x2e17f3];return _0x44c057;};'use strict';var _=require(_0xe218('0x0'));var util=require(_0xe218('0x1'));var moment=require('moment');var BPromise=require(_0xe218('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe218('0x3'));var db=require(_0xe218('0x4'))['db'];var utils=require(_0xe218('0x5'));var logger=require(_0xe218('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xe218('0x7'));var client=jayson[_0xe218('0x8')][_0xe218('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x84c1ce,_0x20d806,_0x391406){return new BPromise(function(_0xe987bc,_0x137c03){return client[_0xe218('0xa')](_0x84c1ce,_0x391406)['then'](function(_0x4908d7){logger[_0xe218('0xb')](_0xe218('0xc'),_0x20d806,_0xe218('0xd'));logger[_0xe218('0xe')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x20d806,_0xe218('0xd'),JSON[_0xe218('0xf')](_0x4908d7));if(_0x4908d7[_0xe218('0x10')]){if(_0x4908d7['error'][_0xe218('0x11')]===0x1f4){logger['error'](_0xe218('0xc'),_0x20d806,_0x4908d7[_0xe218('0x10')][_0xe218('0x12')]);return _0x137c03(_0x4908d7[_0xe218('0x10')]['message']);}logger[_0xe218('0x10')](_0xe218('0xc'),_0x20d806,_0x4908d7['error']['message']);return _0xe987bc(_0x4908d7[_0xe218('0x10')][_0xe218('0x12')]);}else{logger['info'](_0xe218('0xc'),_0x20d806,_0xe218('0xd'));_0xe987bc(_0x4908d7['result'][_0xe218('0x12')]);}})[_0xe218('0x13')](function(_0x5b4cd2){logger[_0xe218('0x10')](_0xe218('0xc'),_0x20d806,_0x5b4cd2);_0x137c03(_0x5b4cd2);});});}
\ No newline at end of file
+var _0x5ee0=['message','FreshdeskConfiguration,\x20%s,\x20%s','result','catch','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5ee0,0x164));var _0x05ee=function(_0x3d284f,_0x3acfef){_0x3d284f=_0x3d284f-0x0;var _0x2878d8=_0x5ee0[_0x3d284f];return _0x2878d8;};'use strict';var _=require(_0x05ee('0x0'));var util=require(_0x05ee('0x1'));var moment=require('moment');var BPromise=require(_0x05ee('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x05ee('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x05ee('0x4'));var logger=require(_0x05ee('0x5'))('rpc');var config=require(_0x05ee('0x6'));var jayson=require(_0x05ee('0x7'));var client=jayson[_0x05ee('0x8')][_0x05ee('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x393ece,_0x266fc6,_0x38c145){return new BPromise(function(_0x4a0793,_0x3d4e06){return client[_0x05ee('0xa')](_0x393ece,_0x38c145)[_0x05ee('0xb')](function(_0x1e8ced){logger[_0x05ee('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x266fc6,'request\x20sent');logger['debug'](_0x05ee('0xd'),_0x266fc6,_0x05ee('0xe'),JSON[_0x05ee('0xf')](_0x1e8ced));if(_0x1e8ced['error']){if(_0x1e8ced[_0x05ee('0x10')][_0x05ee('0x11')]===0x1f4){logger[_0x05ee('0x10')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x266fc6,_0x1e8ced[_0x05ee('0x10')][_0x05ee('0x12')]);return _0x3d4e06(_0x1e8ced[_0x05ee('0x10')][_0x05ee('0x12')]);}logger[_0x05ee('0x10')](_0x05ee('0x13'),_0x266fc6,_0x1e8ced[_0x05ee('0x10')]['message']);return _0x4a0793(_0x1e8ced[_0x05ee('0x10')][_0x05ee('0x12')]);}else{logger[_0x05ee('0xc')](_0x05ee('0x13'),_0x266fc6,_0x05ee('0xe'));_0x4a0793(_0x1e8ced[_0x05ee('0x14')][_0x05ee('0x12')]);}})[_0x05ee('0x15')](function(_0x5ec2df){logger[_0x05ee('0x10')](_0x05ee('0x13'),_0x266fc6,_0x5ec2df);_0x3d4e06(_0x5ec2df);});});}
\ No newline at end of file
index 15f934c..71c8e29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd6=['exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','put','update','delete','destroy'];(function(_0x2300f2,_0x315c5f){var _0x6bd508=function(_0x2fa0f6){while(--_0x2fa0f6){_0x2300f2['push'](_0x2300f2['shift']());}};_0x6bd508(++_0x315c5f);}(_0x5fd6,0x91));var _0x65fd=function(_0x268e94,_0x931933){_0x268e94=_0x268e94-0x0;var _0x3d5fbc=_0x5fd6[_0x268e94];return _0x3d5fbc;};'use strict';var multer=require(_0x65fd('0x0'));var util=require(_0x65fd('0x1'));var path=require(_0x65fd('0x2'));var timeout=require(_0x65fd('0x3'));var express=require(_0x65fd('0x4'));var router=express[_0x65fd('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x65fd('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x65fd('0x7'));var controller=require('./intFreshdeskField.controller');router['get']('/',auth[_0x65fd('0x8')](),controller[_0x65fd('0x9')]);router[_0x65fd('0xa')](_0x65fd('0xb'),auth[_0x65fd('0x8')](),controller[_0x65fd('0xc')]);router['post']('/',auth[_0x65fd('0x8')](),controller['create']);router[_0x65fd('0xd')]('/:id',auth[_0x65fd('0x8')](),controller[_0x65fd('0xe')]);router[_0x65fd('0xf')](_0x65fd('0xb'),auth[_0x65fd('0x8')](),controller[_0x65fd('0x10')]);module[_0x65fd('0x11')]=router;
\ No newline at end of file
+var _0x1c7d=['get','/:id','show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1c7d,0x15f));var _0xd1c7=function(_0x42f16e,_0x4a4561){_0x42f16e=_0x42f16e-0x0;var _0x1947e4=_0x1c7d[_0x42f16e];return _0x1947e4;};'use strict';var multer=require(_0xd1c7('0x0'));var util=require(_0xd1c7('0x1'));var path=require('path');var timeout=require(_0xd1c7('0x2'));var express=require(_0xd1c7('0x3'));var router=express[_0xd1c7('0x4')]();var fs_extra=require(_0xd1c7('0x5'));var auth=require(_0xd1c7('0x6'));var interaction=require(_0xd1c7('0x7'));var config=require(_0xd1c7('0x8'));var controller=require('./intFreshdeskField.controller');router['get']('/',auth[_0xd1c7('0x9')](),controller['index']);router[_0xd1c7('0xa')](_0xd1c7('0xb'),auth[_0xd1c7('0x9')](),controller[_0xd1c7('0xc')]);router[_0xd1c7('0xd')]('/',auth[_0xd1c7('0x9')](),controller[_0xd1c7('0xe')]);router[_0xd1c7('0xf')](_0xd1c7('0xb'),auth[_0xd1c7('0x9')](),controller['update']);router[_0xd1c7('0x10')](_0xd1c7('0xb'),auth[_0xd1c7('0x9')](),controller[_0xd1c7('0x11')]);module[_0xd1c7('0x12')]=router;
\ No newline at end of file
index aa0c2d9..48d24df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb433=['variable','keyValue','STRING','customVariable','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x42aa8f,_0x2244a2){var _0x5b3d40=function(_0x323b93){while(--_0x323b93){_0x42aa8f['push'](_0x42aa8f['shift']());}};_0x5b3d40(++_0x2244a2);}(_0xb433,0x8c));var _0x3b43=function(_0x197d72,_0x19b07b){_0x197d72=_0x197d72-0x0;var _0x1e3507=_0xb433[_0x197d72];return _0x1e3507;};'use strict';var Sequelize=require(_0x3b43('0x0'));module[_0x3b43('0x1')]={'type':{'type':Sequelize[_0x3b43('0x2')](_0x3b43('0x3'),_0x3b43('0x4'),'customVariable',_0x3b43('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x3b43('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM']('string','variable',_0x3b43('0x7'))},'keyContent':{'type':Sequelize[_0x3b43('0x6')]},'idField':{'type':Sequelize[_0x3b43('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x3b43('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3b43('0x6')]}};
\ No newline at end of file
+var _0x7e3d=['picklist','STRING','ENUM','string','variable','keyValue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7e3d,0x110));var _0xd7e3=function(_0x236c88,_0x300655){_0x236c88=_0x236c88-0x0;var _0x58bc0=_0x7e3d[_0x236c88];return _0x58bc0;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0xd7e3('0x0')](_0xd7e3('0x1'),_0xd7e3('0x2'),'customVariable',_0xd7e3('0x3'),_0xd7e3('0x4')),'defaultValue':_0xd7e3('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xd7e3('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0xd7e3('0x1'),_0xd7e3('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0xd7e3('0x5')]},'idField':{'type':Sequelize[_0xd7e3('0x5')]},'nameField':{'type':Sequelize[_0xd7e3('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd7e3('0x5')]}};
\ No newline at end of file
index 46572c5..f0a91a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca66=['ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','sendStatus','name','send','FreshdeskField','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','type','VIRTUAL','merge','includeAll','include','rows','catch','params','find','create','body','eml-format','fast-json-patch','request-promise','moment','mustache','path','to-csv'];(function(_0x1f1e6f,_0xad6cbd){var _0x48cb49=function(_0x51996f){while(--_0x51996f){_0x1f1e6f['push'](_0x1f1e6f['shift']());}};_0x48cb49(++_0xad6cbd);}(_0xca66,0x8b));var _0x6ca6=function(_0x62341b,_0x47dde0){_0x62341b=_0x62341b-0x0;var _0xe5379a=_0xca66[_0x62341b];return _0xe5379a;};'use strict';var emlformat=require(_0x6ca6('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6ca6('0x1'));var rp=require(_0x6ca6('0x2'));var moment=require(_0x6ca6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6ca6('0x4'));var util=require('util');var path=require(_0x6ca6('0x5'));var sox=require('sox');var csv=require(_0x6ca6('0x6'));var ejs=require(_0x6ca6('0x7'));var fs=require('fs');var fs_extra=require(_0x6ca6('0x8'));var _=require(_0x6ca6('0x9'));var squel=require(_0x6ca6('0xa'));var crypto=require(_0x6ca6('0xb'));var jsforce=require(_0x6ca6('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6ca6('0x6'));var querystring=require(_0x6ca6('0xd'));var Papa=require(_0x6ca6('0xe'));var Redis=require(_0x6ca6('0xf'));var authService=require(_0x6ca6('0x10'));var qs=require(_0x6ca6('0x11'));var as=require(_0x6ca6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6ca6('0x13'))(_0x6ca6('0x14'));var utils=require(_0x6ca6('0x15'));var config=require(_0x6ca6('0x16'));var licenseUtil=require(_0x6ca6('0x17'));var db=require(_0x6ca6('0x18'))['db'];function respondWithStatusCode(_0x4c05e9,_0x152e63){_0x152e63=_0x152e63||0xcc;return function(_0x38de67){if(_0x38de67){return _0x4c05e9['sendStatus'](_0x152e63);}return _0x4c05e9[_0x6ca6('0x19')](_0x152e63)[_0x6ca6('0x1a')]();};}function respondWithResult(_0x3f417f,_0x3570f1){_0x3570f1=_0x3570f1||0xc8;return function(_0xc774c){if(_0xc774c){return _0x3f417f[_0x6ca6('0x19')](_0x3570f1)['json'](_0xc774c);}};}function respondWithFilteredResult(_0x52c59a,_0x5785b1){return function(_0x36ff3e){if(_0x36ff3e){var _0x19e94f=typeof _0x5785b1[_0x6ca6('0x1b')]===_0x6ca6('0x1c')&&typeof _0x5785b1[_0x6ca6('0x1d')]===_0x6ca6('0x1c');var _0x25dc6c=_0x36ff3e['count'];var _0x2391ce=_0x19e94f?0x0:_0x5785b1[_0x6ca6('0x1b')];var _0xc97f0=_0x19e94f?_0x36ff3e[_0x6ca6('0x1e')]:_0x5785b1[_0x6ca6('0x1b')]+_0x5785b1[_0x6ca6('0x1d')];var _0x16a3d7;if(_0xc97f0>=_0x25dc6c){_0xc97f0=_0x25dc6c;_0x16a3d7=0xc8;}else{_0x16a3d7=0xce;}_0x52c59a[_0x6ca6('0x19')](_0x16a3d7);return _0x52c59a[_0x6ca6('0x1f')](_0x6ca6('0x20'),_0x2391ce+'-'+_0xc97f0+'/'+_0x25dc6c)[_0x6ca6('0x21')](_0x36ff3e);}return null;};}function patchUpdates(_0x4c3be9){return function(_0x28a982){try{jsonpatch[_0x6ca6('0x22')](_0x28a982,_0x4c3be9,!![]);}catch(_0x38cad4){return BPromise[_0x6ca6('0x23')](_0x38cad4);}return _0x28a982[_0x6ca6('0x24')]();};}function saveUpdates(_0x438694,_0x593f15){return function(_0xfb962d){if(_0xfb962d){return _0xfb962d[_0x6ca6('0x25')](_0x438694)['then'](function(_0x4927c1){return _0x4927c1;});}return null;};}function removeEntity(_0xfbf496,_0x216701){return function(_0xfe0760){if(_0xfe0760){return _0xfe0760[_0x6ca6('0x26')]()[_0x6ca6('0x27')](function(){_0xfbf496['status'](0xcc)[_0x6ca6('0x1a')]();});}};}function handleEntityNotFound(_0x1d6caa,_0x1c43ee){return function(_0x2d8c64){if(!_0x2d8c64){_0x1d6caa[_0x6ca6('0x28')](0x194);}return _0x2d8c64;};}function handleError(_0x29f37e,_0x3c32ae){_0x3c32ae=_0x3c32ae||0x1f4;return function(_0x2a1e2d){logger['error'](_0x2a1e2d['stack']);if(_0x2a1e2d[_0x6ca6('0x29')]){delete _0x2a1e2d[_0x6ca6('0x29')];}_0x29f37e[_0x6ca6('0x19')](_0x3c32ae)[_0x6ca6('0x2a')](_0x2a1e2d);};}exports['index']=function(_0x5ea6f7,_0x306583){var _0x47cf48={},_0x4ab84c={},_0x141e78={'count':0x0,'rows':[]};var _0xefd407=_['map'](db[_0x6ca6('0x2b')][_0x6ca6('0x2c')],function(_0xac50e8){return{'name':_0xac50e8[_0x6ca6('0x2d')],'type':_0xac50e8['type'][_0x6ca6('0x2e')]};});_0x4ab84c[_0x6ca6('0x2f')]=_[_0x6ca6('0x30')](_0xefd407,_0x6ca6('0x29'));_0x4ab84c['query']=_[_0x6ca6('0x31')](_0x5ea6f7[_0x6ca6('0x32')]);_0x4ab84c[_0x6ca6('0x33')]=_[_0x6ca6('0x34')](_0x4ab84c['model'],_0x4ab84c['query']);_0x47cf48['attributes']=_['intersection'](_0x4ab84c['model'],qs[_0x6ca6('0x35')](_0x5ea6f7[_0x6ca6('0x32')][_0x6ca6('0x35')]));_0x47cf48['attributes']=_0x47cf48[_0x6ca6('0x36')][_0x6ca6('0x37')]?_0x47cf48[_0x6ca6('0x36')]:_0x4ab84c[_0x6ca6('0x2f')];if(!_0x5ea6f7['query'][_0x6ca6('0x38')](_0x6ca6('0x39'))){_0x47cf48[_0x6ca6('0x1d')]=qs[_0x6ca6('0x1d')](_0x5ea6f7['query'][_0x6ca6('0x1d')]);_0x47cf48['offset']=qs[_0x6ca6('0x1b')](_0x5ea6f7['query']['offset']);}_0x47cf48[_0x6ca6('0x3a')]=qs[_0x6ca6('0x3b')](_0x5ea6f7[_0x6ca6('0x32')][_0x6ca6('0x3b')]);_0x47cf48['where']=qs['filters'](_[_0x6ca6('0x3c')](_0x5ea6f7[_0x6ca6('0x32')],_0x4ab84c['filters']),_0xefd407);if(_0x5ea6f7[_0x6ca6('0x32')]['filter']){_0x47cf48[_0x6ca6('0x3d')]=_['merge'](_0x47cf48[_0x6ca6('0x3d')],{'$or':_[_0x6ca6('0x30')](_0xefd407,function(_0x254733){if(_0x254733[_0x6ca6('0x3e')]!==_0x6ca6('0x3f')){var _0x3ca258={};_0x3ca258[_0x254733[_0x6ca6('0x29')]]={'$like':'%'+_0x5ea6f7[_0x6ca6('0x32')]['filter']+'%'};return _0x3ca258;}})});}_0x47cf48=_[_0x6ca6('0x40')]({},_0x47cf48,_0x5ea6f7['options']);var _0x57186c={'where':_0x47cf48[_0x6ca6('0x3d')]};return db[_0x6ca6('0x2b')]['count'](_0x57186c)[_0x6ca6('0x27')](function(_0x500ed4){_0x141e78[_0x6ca6('0x1e')]=_0x500ed4;if(_0x5ea6f7[_0x6ca6('0x32')][_0x6ca6('0x41')]){_0x47cf48[_0x6ca6('0x42')]=[{'all':!![]}];}return db['FreshdeskField']['findAll'](_0x47cf48);})[_0x6ca6('0x27')](function(_0x3813d6){_0x141e78[_0x6ca6('0x43')]=_0x3813d6;return _0x141e78;})[_0x6ca6('0x27')](respondWithFilteredResult(_0x306583,_0x47cf48))[_0x6ca6('0x44')](handleError(_0x306583,null));};exports['show']=function(_0x76db8d,_0x2ffdfc){var _0x5bed6e={'raw':!![],'where':{'id':_0x76db8d[_0x6ca6('0x45')]['id']}},_0x317b5e={};_0x317b5e[_0x6ca6('0x2f')]=_[_0x6ca6('0x31')](db[_0x6ca6('0x2b')][_0x6ca6('0x2c')]);_0x317b5e[_0x6ca6('0x32')]=_[_0x6ca6('0x31')](_0x76db8d[_0x6ca6('0x32')]);_0x317b5e['filters']=_[_0x6ca6('0x34')](_0x317b5e[_0x6ca6('0x2f')],_0x317b5e[_0x6ca6('0x32')]);_0x5bed6e[_0x6ca6('0x36')]=_[_0x6ca6('0x34')](_0x317b5e[_0x6ca6('0x2f')],qs[_0x6ca6('0x35')](_0x76db8d[_0x6ca6('0x32')]['fields']));_0x5bed6e['attributes']=_0x5bed6e[_0x6ca6('0x36')][_0x6ca6('0x37')]?_0x5bed6e[_0x6ca6('0x36')]:_0x317b5e[_0x6ca6('0x2f')];if(_0x76db8d[_0x6ca6('0x32')][_0x6ca6('0x41')]){_0x5bed6e[_0x6ca6('0x42')]=[{'all':!![]}];}_0x5bed6e=_['merge']({},_0x5bed6e,_0x76db8d['options']);return db[_0x6ca6('0x2b')][_0x6ca6('0x46')](_0x5bed6e)['then'](handleEntityNotFound(_0x2ffdfc,null))[_0x6ca6('0x27')](respondWithResult(_0x2ffdfc,null))[_0x6ca6('0x44')](handleError(_0x2ffdfc,null));};exports[_0x6ca6('0x47')]=function(_0x34a388,_0xc1928f){return db[_0x6ca6('0x2b')][_0x6ca6('0x47')](_0x34a388['body'],{})[_0x6ca6('0x27')](respondWithResult(_0xc1928f,0xc9))[_0x6ca6('0x44')](handleError(_0xc1928f,null));};exports[_0x6ca6('0x25')]=function(_0x4fde51,_0x408df3){if(_0x4fde51['body']['id']){delete _0x4fde51[_0x6ca6('0x48')]['id'];}return db['FreshdeskField']['find']({'where':{'id':_0x4fde51['params']['id']}})[_0x6ca6('0x27')](handleEntityNotFound(_0x408df3,null))[_0x6ca6('0x27')](saveUpdates(_0x4fde51[_0x6ca6('0x48')],null))['then'](respondWithResult(_0x408df3,null))[_0x6ca6('0x44')](handleError(_0x408df3,null));};exports['destroy']=function(_0x1f552d,_0x1010a6){return db[_0x6ca6('0x2b')][_0x6ca6('0x46')]({'where':{'id':_0x1f552d[_0x6ca6('0x45')]['id']}})[_0x6ca6('0x27')](handleEntityNotFound(_0x1010a6,null))[_0x6ca6('0x27')](removeEntity(_0x1010a6,null))[_0x6ca6('0x44')](handleError(_0x1010a6,null));};
\ No newline at end of file
+var _0x54f3=['show','params','keys','includeAll','find','create','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','apply','save','update','then','stack','name','send','map','FreshdeskField','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','include','findAll','rows','catch'];(function(_0x590113,_0x16fe2c){var _0x1a51b3=function(_0x130efc){while(--_0x130efc){_0x590113['push'](_0x590113['shift']());}};_0x1a51b3(++_0x16fe2c);}(_0x54f3,0x120));var _0x354f=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x54f3[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x354f('0x0'));var zipdir=require(_0x354f('0x1'));var jsonpatch=require(_0x354f('0x2'));var rp=require(_0x354f('0x3'));var moment=require(_0x354f('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x354f('0x5'));var path=require(_0x354f('0x6'));var sox=require(_0x354f('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x354f('0x8'));var _=require('lodash');var squel=require(_0x354f('0x9'));var crypto=require(_0x354f('0xa'));var jsforce=require(_0x354f('0xb'));var deskjs=require(_0x354f('0xc'));var toCsv=require('to-csv');var querystring=require(_0x354f('0xd'));var Papa=require('papaparse');var Redis=require(_0x354f('0xe'));var authService=require(_0x354f('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x354f('0x10'));var logger=require(_0x354f('0x11'))('api');var utils=require(_0x354f('0x12'));var config=require(_0x354f('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x354f('0x14'))['db'];function respondWithStatusCode(_0x824bf4,_0x13d871){_0x13d871=_0x13d871||0xcc;return function(_0x97c0da){if(_0x97c0da){return _0x824bf4[_0x354f('0x15')](_0x13d871);}return _0x824bf4[_0x354f('0x16')](_0x13d871)[_0x354f('0x17')]();};}function respondWithResult(_0x4ff8e7,_0xf2e013){_0xf2e013=_0xf2e013||0xc8;return function(_0x4b811d){if(_0x4b811d){return _0x4ff8e7[_0x354f('0x16')](_0xf2e013)['json'](_0x4b811d);}};}function respondWithFilteredResult(_0x103388,_0x234484){return function(_0x18cf66){if(_0x18cf66){var _0x4cc0e9=typeof _0x234484['offset']===_0x354f('0x18')&&typeof _0x234484[_0x354f('0x19')]===_0x354f('0x18');var _0x2ef866=_0x18cf66[_0x354f('0x1a')];var _0x36402d=_0x4cc0e9?0x0:_0x234484[_0x354f('0x1b')];var _0x598777=_0x4cc0e9?_0x18cf66[_0x354f('0x1a')]:_0x234484[_0x354f('0x1b')]+_0x234484[_0x354f('0x19')];var _0x4b87dd;if(_0x598777>=_0x2ef866){_0x598777=_0x2ef866;_0x4b87dd=0xc8;}else{_0x4b87dd=0xce;}_0x103388[_0x354f('0x16')](_0x4b87dd);return _0x103388['set'](_0x354f('0x1c'),_0x36402d+'-'+_0x598777+'/'+_0x2ef866)[_0x354f('0x1d')](_0x18cf66);}return null;};}function patchUpdates(_0x5e930c){return function(_0x14c4be){try{jsonpatch[_0x354f('0x1e')](_0x14c4be,_0x5e930c,!![]);}catch(_0x4ef4f1){return BPromise['reject'](_0x4ef4f1);}return _0x14c4be[_0x354f('0x1f')]();};}function saveUpdates(_0x574753,_0x52e7cb){return function(_0xa6050f){if(_0xa6050f){return _0xa6050f[_0x354f('0x20')](_0x574753)[_0x354f('0x21')](function(_0x2f4277){return _0x2f4277;});}return null;};}function removeEntity(_0xc0d4ca,_0x158117){return function(_0x273603){if(_0x273603){return _0x273603['destroy']()[_0x354f('0x21')](function(){_0xc0d4ca['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x22594b,_0x4c9b18){return function(_0x4b1820){if(!_0x4b1820){_0x22594b[_0x354f('0x15')](0x194);}return _0x4b1820;};}function handleError(_0x4e2ad6,_0x3f0bfe){_0x3f0bfe=_0x3f0bfe||0x1f4;return function(_0x393622){logger['error'](_0x393622[_0x354f('0x22')]);if(_0x393622[_0x354f('0x23')]){delete _0x393622[_0x354f('0x23')];}_0x4e2ad6['status'](_0x3f0bfe)[_0x354f('0x24')](_0x393622);};}exports['index']=function(_0x227d9b,_0x26373d){var _0x16a376={},_0x2816cf={},_0x596b48={'count':0x0,'rows':[]};var _0x21c121=_[_0x354f('0x25')](db[_0x354f('0x26')][_0x354f('0x27')],function(_0x223464){return{'name':_0x223464['fieldName'],'type':_0x223464['type'][_0x354f('0x28')]};});_0x2816cf[_0x354f('0x29')]=_[_0x354f('0x25')](_0x21c121,_0x354f('0x23'));_0x2816cf['query']=_['keys'](_0x227d9b[_0x354f('0x2a')]);_0x2816cf[_0x354f('0x2b')]=_[_0x354f('0x2c')](_0x2816cf[_0x354f('0x29')],_0x2816cf['query']);_0x16a376[_0x354f('0x2d')]=_[_0x354f('0x2c')](_0x2816cf[_0x354f('0x29')],qs[_0x354f('0x2e')](_0x227d9b['query']['fields']));_0x16a376[_0x354f('0x2d')]=_0x16a376[_0x354f('0x2d')][_0x354f('0x2f')]?_0x16a376[_0x354f('0x2d')]:_0x2816cf[_0x354f('0x29')];if(!_0x227d9b[_0x354f('0x2a')][_0x354f('0x30')](_0x354f('0x31'))){_0x16a376[_0x354f('0x19')]=qs[_0x354f('0x19')](_0x227d9b[_0x354f('0x2a')]['limit']);_0x16a376[_0x354f('0x1b')]=qs['offset'](_0x227d9b[_0x354f('0x2a')][_0x354f('0x1b')]);}_0x16a376[_0x354f('0x32')]=qs[_0x354f('0x33')](_0x227d9b[_0x354f('0x2a')][_0x354f('0x33')]);_0x16a376['where']=qs[_0x354f('0x2b')](_[_0x354f('0x34')](_0x227d9b['query'],_0x2816cf[_0x354f('0x2b')]),_0x21c121);if(_0x227d9b[_0x354f('0x2a')][_0x354f('0x35')]){_0x16a376['where']=_[_0x354f('0x36')](_0x16a376[_0x354f('0x37')],{'$or':_[_0x354f('0x25')](_0x21c121,function(_0x389f82){if(_0x389f82['type']!==_0x354f('0x38')){var _0x4db9a4={};_0x4db9a4[_0x389f82[_0x354f('0x23')]]={'$like':'%'+_0x227d9b[_0x354f('0x2a')][_0x354f('0x35')]+'%'};return _0x4db9a4;}})});}_0x16a376=_[_0x354f('0x36')]({},_0x16a376,_0x227d9b[_0x354f('0x39')]);var _0x589c69={'where':_0x16a376['where']};return db[_0x354f('0x26')][_0x354f('0x1a')](_0x589c69)[_0x354f('0x21')](function(_0x327fb2){_0x596b48[_0x354f('0x1a')]=_0x327fb2;if(_0x227d9b[_0x354f('0x2a')]['includeAll']){_0x16a376[_0x354f('0x3a')]=[{'all':!![]}];}return db[_0x354f('0x26')][_0x354f('0x3b')](_0x16a376);})[_0x354f('0x21')](function(_0x512592){_0x596b48[_0x354f('0x3c')]=_0x512592;return _0x596b48;})[_0x354f('0x21')](respondWithFilteredResult(_0x26373d,_0x16a376))[_0x354f('0x3d')](handleError(_0x26373d,null));};exports[_0x354f('0x3e')]=function(_0x1da53d,_0x344666){var _0x5f33b2={'raw':!![],'where':{'id':_0x1da53d[_0x354f('0x3f')]['id']}},_0x66b4cc={};_0x66b4cc[_0x354f('0x29')]=_['keys'](db['FreshdeskField'][_0x354f('0x27')]);_0x66b4cc[_0x354f('0x2a')]=_[_0x354f('0x40')](_0x1da53d[_0x354f('0x2a')]);_0x66b4cc[_0x354f('0x2b')]=_[_0x354f('0x2c')](_0x66b4cc[_0x354f('0x29')],_0x66b4cc[_0x354f('0x2a')]);_0x5f33b2['attributes']=_[_0x354f('0x2c')](_0x66b4cc[_0x354f('0x29')],qs[_0x354f('0x2e')](_0x1da53d[_0x354f('0x2a')][_0x354f('0x2e')]));_0x5f33b2[_0x354f('0x2d')]=_0x5f33b2[_0x354f('0x2d')][_0x354f('0x2f')]?_0x5f33b2[_0x354f('0x2d')]:_0x66b4cc['model'];if(_0x1da53d[_0x354f('0x2a')][_0x354f('0x41')]){_0x5f33b2['include']=[{'all':!![]}];}_0x5f33b2=_['merge']({},_0x5f33b2,_0x1da53d[_0x354f('0x39')]);return db[_0x354f('0x26')][_0x354f('0x42')](_0x5f33b2)[_0x354f('0x21')](handleEntityNotFound(_0x344666,null))[_0x354f('0x21')](respondWithResult(_0x344666,null))[_0x354f('0x3d')](handleError(_0x344666,null));};exports['create']=function(_0x558332,_0x178313){return db[_0x354f('0x26')][_0x354f('0x43')](_0x558332[_0x354f('0x44')],{})[_0x354f('0x21')](respondWithResult(_0x178313,0xc9))[_0x354f('0x3d')](handleError(_0x178313,null));};exports['update']=function(_0x55f2c9,_0x6b7a2c){if(_0x55f2c9['body']['id']){delete _0x55f2c9[_0x354f('0x44')]['id'];}return db[_0x354f('0x26')][_0x354f('0x42')]({'where':{'id':_0x55f2c9['params']['id']}})['then'](handleEntityNotFound(_0x6b7a2c,null))[_0x354f('0x21')](saveUpdates(_0x55f2c9[_0x354f('0x44')],null))['then'](respondWithResult(_0x6b7a2c,null))[_0x354f('0x3d')](handleError(_0x6b7a2c,null));};exports[_0x354f('0x45')]=function(_0xf71a4f,_0x2dd012){return db[_0x354f('0x26')][_0x354f('0x42')]({'where':{'id':_0xf71a4f[_0x354f('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2dd012,null))[_0x354f('0x21')](removeEntity(_0x2dd012,null))[_0x354f('0x3d')](handleError(_0x2dd012,null));};
\ No newline at end of file
index 7bfe886..c250553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb85=['../../config/environment','./intFreshdeskField.attributes','exports','FreshdeskField','int_freshdesk_fields','FieldId','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x207140,_0x4c6556){var _0x39e8cf=function(_0x16b730){while(--_0x16b730){_0x207140['push'](_0x207140['shift']());}};_0x39e8cf(++_0x4c6556);}(_0xbb85,0x92));var _0x5bb8=function(_0x106811,_0x230c3a){_0x106811=_0x106811-0x0;var _0x4fec4a=_0xbb85[_0x106811];return _0x4fec4a;};'use strict';var _=require(_0x5bb8('0x0'));var util=require(_0x5bb8('0x1'));var logger=require(_0x5bb8('0x2'))(_0x5bb8('0x3'));var moment=require('moment');var BPromise=require(_0x5bb8('0x4'));var rp=require(_0x5bb8('0x5'));var fs=require('fs');var path=require(_0x5bb8('0x6'));var rimraf=require(_0x5bb8('0x7'));var config=require(_0x5bb8('0x8'));var attributes=require(_0x5bb8('0x9'));module[_0x5bb8('0xa')]=function(_0x48ad61,_0x4d208a){return _0x48ad61['define'](_0x5bb8('0xb'),attributes,{'tableName':_0x5bb8('0xc'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':['idField',_0x5bb8('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x79e3=['../../config/environment','./intFreshdeskField.attributes','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x569aef,_0x464d70){var _0x337aa5=function(_0x3e9bc5){while(--_0x3e9bc5){_0x569aef['push'](_0x569aef['shift']());}};_0x337aa5(++_0x464d70);}(_0x79e3,0x157));var _0x379e=function(_0x1dedff,_0x3db788){_0x1dedff=_0x1dedff-0x0;var _0x472c24=_0x79e3[_0x1dedff];return _0x472c24;};'use strict';var _=require('lodash');var util=require(_0x379e('0x0'));var logger=require(_0x379e('0x1'))('api');var moment=require(_0x379e('0x2'));var BPromise=require(_0x379e('0x3'));var rp=require(_0x379e('0x4'));var fs=require('fs');var path=require(_0x379e('0x5'));var rimraf=require(_0x379e('0x6'));var config=require(_0x379e('0x7'));var attributes=require(_0x379e('0x8'));module['exports']=function(_0x478a65,_0x23c6cf){return _0x478a65[_0x379e('0x9')](_0x379e('0xa'),attributes,{'tableName':_0x379e('0xb'),'paranoid':![],'indexes':[{'name':_0x379e('0xc'),'fields':[_0x379e('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 2ef882e..7b078bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec85=['then','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x2dc54e,_0x52abe5){var _0x1f41ca=function(_0x3b2c67){while(--_0x3b2c67){_0x2dc54e['push'](_0x2dc54e['shift']());}};_0x1f41ca(++_0x52abe5);}(_0xec85,0x94));var _0x5ec8=function(_0x134e59,_0x4a08c8){_0x134e59=_0x134e59-0x0;var _0xb05715=_0xec85[_0x134e59];return _0xb05715;};'use strict';var _=require('lodash');var util=require(_0x5ec8('0x0'));var moment=require(_0x5ec8('0x1'));var BPromise=require(_0x5ec8('0x2'));var rs=require(_0x5ec8('0x3'));var fs=require('fs');var Redis=require(_0x5ec8('0x4'));var db=require(_0x5ec8('0x5'))['db'];var utils=require(_0x5ec8('0x6'));var logger=require(_0x5ec8('0x7'))(_0x5ec8('0x8'));var config=require(_0x5ec8('0x9'));var jayson=require(_0x5ec8('0xa'));var client=jayson[_0x5ec8('0xb')][_0x5ec8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x144b4a,_0x3d9a1f,_0x2a65d8){return new BPromise(function(_0x3cd198,_0x237ca6){return client['request'](_0x144b4a,_0x2a65d8)[_0x5ec8('0xd')](function(_0x238d60){logger['info'](_0x5ec8('0xe'),_0x3d9a1f,_0x5ec8('0xf'));logger[_0x5ec8('0x10')](_0x5ec8('0x11'),_0x3d9a1f,_0x5ec8('0xf'),JSON['stringify'](_0x238d60));if(_0x238d60[_0x5ec8('0x12')]){if(_0x238d60['error']['code']===0x1f4){logger[_0x5ec8('0x12')](_0x5ec8('0xe'),_0x3d9a1f,_0x238d60[_0x5ec8('0x12')]['message']);return _0x237ca6(_0x238d60[_0x5ec8('0x12')][_0x5ec8('0x13')]);}logger[_0x5ec8('0x12')](_0x5ec8('0xe'),_0x3d9a1f,_0x238d60[_0x5ec8('0x12')][_0x5ec8('0x13')]);return _0x3cd198(_0x238d60[_0x5ec8('0x12')][_0x5ec8('0x13')]);}else{logger[_0x5ec8('0x14')](_0x5ec8('0xe'),_0x3d9a1f,_0x5ec8('0xf'));_0x3cd198(_0x238d60[_0x5ec8('0x15')]['message']);}})[_0x5ec8('0x16')](function(_0x2c881c){logger['error'](_0x5ec8('0xe'),_0x3d9a1f,_0x2c881c);_0x237ca6(_0x2c881c);});});}
\ No newline at end of file
+var _0xf005=['message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x21e1c2,_0x2c4eb6){var _0x519aef=function(_0x46ec5c){while(--_0x46ec5c){_0x21e1c2['push'](_0x21e1c2['shift']());}};_0x519aef(++_0x2c4eb6);}(_0xf005,0x1ce));var _0x5f00=function(_0x68aee,_0xc50d05){_0x68aee=_0x68aee-0x0;var _0x1e1387=_0xf005[_0x68aee];return _0x1e1387;};'use strict';var _=require(_0x5f00('0x0'));var util=require(_0x5f00('0x1'));var moment=require(_0x5f00('0x2'));var BPromise=require(_0x5f00('0x3'));var rs=require(_0x5f00('0x4'));var fs=require('fs');var Redis=require(_0x5f00('0x5'));var db=require(_0x5f00('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5f00('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5f00('0x8'));var client=jayson[_0x5f00('0x9')][_0x5f00('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4836a1,_0x5b301d,_0x307d1f){return new BPromise(function(_0x2ab8a4,_0x1a740b){return client['request'](_0x4836a1,_0x307d1f)[_0x5f00('0xb')](function(_0x58257e){logger[_0x5f00('0xc')](_0x5f00('0xd'),_0x5b301d,'request\x20sent');logger['debug']('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x5b301d,_0x5f00('0xe'),JSON[_0x5f00('0xf')](_0x58257e));if(_0x58257e[_0x5f00('0x10')]){if(_0x58257e[_0x5f00('0x10')][_0x5f00('0x11')]===0x1f4){logger[_0x5f00('0x10')](_0x5f00('0xd'),_0x5b301d,_0x58257e[_0x5f00('0x10')][_0x5f00('0x12')]);return _0x1a740b(_0x58257e['error'][_0x5f00('0x12')]);}logger[_0x5f00('0x10')](_0x5f00('0xd'),_0x5b301d,_0x58257e['error'][_0x5f00('0x12')]);return _0x2ab8a4(_0x58257e[_0x5f00('0x10')][_0x5f00('0x12')]);}else{logger['info'](_0x5f00('0xd'),_0x5b301d,_0x5f00('0xe'));_0x2ab8a4(_0x58257e[_0x5f00('0x13')][_0x5f00('0x12')]);}})['catch'](function(_0x5e40ae){logger[_0x5f00('0x10')](_0x5f00('0xd'),_0x5b301d,_0x5e40ae);_0x1a740b(_0x5e40ae);});});}
\ No newline at end of file
index 25e746e..0188cc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb688=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','delete'];(function(_0xfd09c4,_0x3f3363){var _0xce3863=function(_0x10c48e){while(--_0x10c48e){_0xfd09c4['push'](_0xfd09c4['shift']());}};_0xce3863(++_0x3f3363);}(_0xb688,0xcf));var _0x8b68=function(_0x29e6fe,_0xd2db3a){_0x29e6fe=_0x29e6fe-0x0;var _0x5c9b14=_0xb688[_0x29e6fe];return _0x5c9b14;};'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('0x12')]('/',auth[_0x8b68('0xc')](),controller['create']);router[_0x8b68('0x12')](_0x8b68('0xe'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x13')]);router[_0x8b68('0x14')](_0x8b68('0xb'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x15')]);router[_0x8b68('0x16')]('/:id',auth[_0x8b68('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xbc9d=['express','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','show','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration','put','update','delete','/:id','destroy','multer','util','path','connect-timeout'];(function(_0x2fa994,_0xced357){var _0x5dcf93=function(_0x426d79){while(--_0x426d79){_0x2fa994['push'](_0x2fa994['shift']());}};_0x5dcf93(++_0xced357);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x1be542,_0x484dfb){_0x1be542=_0x1be542-0x0;var _0x423723=_0xbc9d[_0x1be542];return _0x423723;};'use strict';var multer=require(_0xdbc9('0x0'));var util=require(_0xdbc9('0x1'));var path=require(_0xdbc9('0x2'));var timeout=require(_0xdbc9('0x3'));var express=require(_0xdbc9('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xdbc9('0x5'));var config=require(_0xdbc9('0x6'));var controller=require(_0xdbc9('0x7'));router[_0xdbc9('0x8')]('/',auth[_0xdbc9('0x9')](),controller[_0xdbc9('0xa')]);router[_0xdbc9('0x8')]('/:id',auth[_0xdbc9('0x9')](),controller[_0xdbc9('0xb')]);router[_0xdbc9('0x8')]('/:id/configurations',auth[_0xdbc9('0x9')](),controller['getConfigurations']);router['get'](_0xdbc9('0xc'),auth[_0xdbc9('0x9')](),controller[_0xdbc9('0xd')]);router[_0xdbc9('0xe')]('/',auth['isAuthenticated'](),controller[_0xdbc9('0xf')]);router[_0xdbc9('0xe')](_0xdbc9('0x10'),auth[_0xdbc9('0x9')](),controller[_0xdbc9('0x11')]);router[_0xdbc9('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xdbc9('0x13')]);router[_0xdbc9('0x14')](_0xdbc9('0x15'),auth[_0xdbc9('0x9')](),controller[_0xdbc9('0x16')]);module['exports']=router;
\ No newline at end of file
index ed247fb..33c005a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0120=['remoteUri','sequelize','exports','STRING','username'];(function(_0x33bfed,_0xe4f92a){var _0x8e4835=function(_0x2fd9e1){while(--_0x2fd9e1){_0x33bfed['push'](_0x33bfed['shift']());}};_0x8e4835(++_0xe4f92a);}(_0x0120,0x6f));var _0x0012=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x0120[_0x580576];return _0x3f55a0;};'use strict';var Sequelize=require(_0x0012('0x0'));module[_0x0012('0x1')]={'name':{'type':Sequelize[_0x0012('0x2')]},'description':{'type':Sequelize[_0x0012('0x2')]},'username':{'type':Sequelize[_0x0012('0x2')],'unique':_0x0012('0x3')},'apiKey':{'type':Sequelize[_0x0012('0x2')]},'remoteUri':{'type':Sequelize[_0x0012('0x2')],'unique':_0x0012('0x4')},'serverUrl':{'type':Sequelize[_0x0012('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x4888=['exports','STRING','username'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x4888,0x198));var _0x8488=function(_0x504582,_0x5b3965){_0x504582=_0x504582-0x0;var _0x43c6ce=_0x4888[_0x504582];return _0x43c6ce;};'use strict';var Sequelize=require('sequelize');module[_0x8488('0x0')]={'name':{'type':Sequelize[_0x8488('0x1')]},'description':{'type':Sequelize[_0x8488('0x1')]},'username':{'type':Sequelize[_0x8488('0x1')],'unique':_0x8488('0x2')},'apiKey':{'type':Sequelize[_0x8488('0x1')]},'remoteUri':{'type':Sequelize[_0x8488('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x8488('0x1')],'allowNull':![]}};
\ No newline at end of file
index 5a6c312..707e6ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf972=['FreshsalesAccount','fieldName','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','getConfigurations','FreshsalesConfiguration','rawAttributes','order','pick','nolimit','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','username','remoteUri','apiKey','substring','lastIndexOf','GET','format','%s%s','Token\x20token=','users','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','json','offset','undefined','count','limit','status','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf972,0x108));var _0x2f97=function(_0x5befb3,_0x43f26f){_0x5befb3=_0x5befb3-0x0;var _0x202787=_0xf972[_0x5befb3];return _0x202787;};'use strict';var emlformat=require(_0x2f97('0x0'));var rimraf=require(_0x2f97('0x1'));var zipdir=require(_0x2f97('0x2'));var jsonpatch=require(_0x2f97('0x3'));var rp=require('request-promise');var moment=require(_0x2f97('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2f97('0x5'));var path=require(_0x2f97('0x6'));var sox=require(_0x2f97('0x7'));var csv=require(_0x2f97('0x8'));var ejs=require(_0x2f97('0x9'));var fs=require('fs');var fs_extra=require(_0x2f97('0xa'));var _=require(_0x2f97('0xb'));var squel=require(_0x2f97('0xc'));var crypto=require('crypto');var jsforce=require(_0x2f97('0xd'));var deskjs=require(_0x2f97('0xe'));var toCsv=require(_0x2f97('0x8'));var querystring=require(_0x2f97('0xf'));var Papa=require(_0x2f97('0x10'));var Redis=require(_0x2f97('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x2f97('0x12'));var as=require(_0x2f97('0x13'));var hardwareService=require(_0x2f97('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x2f97('0x15'));var config=require(_0x2f97('0x16'));var licenseUtil=require(_0x2f97('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0x2f97('0x18'));function respondWithStatusCode(_0x46b333,_0x11b0a2){_0x11b0a2=_0x11b0a2||0xcc;return function(_0x1466d1){if(_0x1466d1){return _0x46b333[_0x2f97('0x19')](_0x11b0a2);}return _0x46b333['status'](_0x11b0a2)[_0x2f97('0x1a')]();};}function respondWithResult(_0x428c6c,_0x23b5d4){_0x23b5d4=_0x23b5d4||0xc8;return function(_0x1df79a){if(_0x1df79a){return _0x428c6c['status'](_0x23b5d4)[_0x2f97('0x1b')](_0x1df79a);}};}function respondWithFilteredResult(_0x1bce9d,_0x599932){return function(_0x181785){if(_0x181785){var _0x279664=typeof _0x599932[_0x2f97('0x1c')]===_0x2f97('0x1d')&&typeof _0x599932['limit']===_0x2f97('0x1d');var _0x16e03b=_0x181785[_0x2f97('0x1e')];var _0x2206cf=_0x279664?0x0:_0x599932[_0x2f97('0x1c')];var _0x4978f5=_0x279664?_0x181785[_0x2f97('0x1e')]:_0x599932['offset']+_0x599932[_0x2f97('0x1f')];var _0x37ce80;if(_0x4978f5>=_0x16e03b){_0x4978f5=_0x16e03b;_0x37ce80=0xc8;}else{_0x37ce80=0xce;}_0x1bce9d[_0x2f97('0x20')](_0x37ce80);return _0x1bce9d['set'](_0x2f97('0x21'),_0x2206cf+'-'+_0x4978f5+'/'+_0x16e03b)[_0x2f97('0x1b')](_0x181785);}return null;};}function patchUpdates(_0x5b0f95){return function(_0x29bf53){try{jsonpatch['apply'](_0x29bf53,_0x5b0f95,!![]);}catch(_0x4aee45){return BPromise[_0x2f97('0x22')](_0x4aee45);}return _0x29bf53[_0x2f97('0x23')]();};}function saveUpdates(_0x3b108d,_0x2ae232){return function(_0x4142d4){if(_0x4142d4){return _0x4142d4[_0x2f97('0x24')](_0x3b108d)[_0x2f97('0x25')](function(_0x5ccd65){return _0x5ccd65;});}return null;};}function removeEntity(_0x18658a,_0x5d550e){return function(_0x5d26dd){if(_0x5d26dd){return _0x5d26dd[_0x2f97('0x26')]()[_0x2f97('0x25')](function(){_0x18658a[_0x2f97('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e15c9,_0x1a16b8){return function(_0x1964be){if(!_0x1964be){_0x4e15c9['sendStatus'](0x194);}return _0x1964be;};}function handleError(_0x41565a,_0x389475){_0x389475=_0x389475||0x1f4;return function(_0x2da30c){logger[_0x2f97('0x27')](_0x2da30c[_0x2f97('0x28')]);if(_0x2da30c['name']){delete _0x2da30c[_0x2f97('0x29')];}_0x41565a['status'](_0x389475)[_0x2f97('0x2a')](_0x2da30c);};}exports[_0x2f97('0x2b')]=function(_0x1f6b06,_0xec8a18){var _0x1b4c66={},_0x2a0757={},_0x18efc7={'count':0x0,'rows':[]};var _0x5aba85=_[_0x2f97('0x2c')](db[_0x2f97('0x2d')]['rawAttributes'],function(_0x400352){return{'name':_0x400352[_0x2f97('0x2e')],'type':_0x400352['type'][_0x2f97('0x2f')]};});_0x2a0757[_0x2f97('0x30')]=_['map'](_0x5aba85,'name');_0x2a0757['query']=_[_0x2f97('0x31')](_0x1f6b06['query']);_0x2a0757[_0x2f97('0x32')]=_[_0x2f97('0x33')](_0x2a0757[_0x2f97('0x30')],_0x2a0757[_0x2f97('0x34')]);_0x1b4c66[_0x2f97('0x35')]=_[_0x2f97('0x33')](_0x2a0757[_0x2f97('0x30')],qs[_0x2f97('0x36')](_0x1f6b06[_0x2f97('0x34')][_0x2f97('0x36')]));_0x1b4c66['attributes']=_0x1b4c66['attributes'][_0x2f97('0x37')]?_0x1b4c66[_0x2f97('0x35')]:_0x2a0757[_0x2f97('0x30')];if(!_0x1f6b06[_0x2f97('0x34')][_0x2f97('0x38')]('nolimit')){_0x1b4c66[_0x2f97('0x1f')]=qs[_0x2f97('0x1f')](_0x1f6b06[_0x2f97('0x34')][_0x2f97('0x1f')]);_0x1b4c66['offset']=qs[_0x2f97('0x1c')](_0x1f6b06[_0x2f97('0x34')][_0x2f97('0x1c')]);}_0x1b4c66['order']=qs[_0x2f97('0x39')](_0x1f6b06[_0x2f97('0x34')][_0x2f97('0x39')]);_0x1b4c66[_0x2f97('0x3a')]=qs[_0x2f97('0x32')](_['pick'](_0x1f6b06[_0x2f97('0x34')],_0x2a0757['filters']),_0x5aba85);if(_0x1f6b06[_0x2f97('0x34')][_0x2f97('0x3b')]){_0x1b4c66['where']=_[_0x2f97('0x3c')](_0x1b4c66['where'],{'$or':_[_0x2f97('0x2c')](_0x5aba85,function(_0x529f67){if(_0x529f67[_0x2f97('0x3d')]!==_0x2f97('0x3e')){var _0x455e52={};_0x455e52[_0x529f67['name']]={'$like':'%'+_0x1f6b06['query'][_0x2f97('0x3b')]+'%'};return _0x455e52;}})});}_0x1b4c66=_['merge']({},_0x1b4c66,_0x1f6b06[_0x2f97('0x3f')]);var _0x28318e={'where':_0x1b4c66['where']};return db[_0x2f97('0x2d')][_0x2f97('0x1e')](_0x28318e)[_0x2f97('0x25')](function(_0x128eb0){_0x18efc7['count']=_0x128eb0;if(_0x1f6b06['query'][_0x2f97('0x40')]){_0x1b4c66[_0x2f97('0x41')]=[{'all':!![]}];}return db[_0x2f97('0x2d')]['findAll'](_0x1b4c66);})['then'](function(_0xd12920){_0x18efc7[_0x2f97('0x42')]=_0xd12920;return _0x18efc7;})[_0x2f97('0x25')](respondWithFilteredResult(_0xec8a18,_0x1b4c66))[_0x2f97('0x43')](handleError(_0xec8a18,null));};exports[_0x2f97('0x44')]=function(_0x30dd85,_0x50ade1){var _0xc2422e={'raw':![],'where':{'id':_0x30dd85[_0x2f97('0x45')]['id']}},_0x4ab104={};_0x4ab104[_0x2f97('0x30')]=_['keys'](db[_0x2f97('0x2d')]['rawAttributes']);_0x4ab104['query']=_[_0x2f97('0x31')](_0x30dd85[_0x2f97('0x34')]);_0x4ab104[_0x2f97('0x32')]=_['intersection'](_0x4ab104[_0x2f97('0x30')],_0x4ab104[_0x2f97('0x34')]);_0xc2422e[_0x2f97('0x35')]=_[_0x2f97('0x33')](_0x4ab104[_0x2f97('0x30')],qs['fields'](_0x30dd85[_0x2f97('0x34')][_0x2f97('0x36')]));_0xc2422e[_0x2f97('0x35')]=_0xc2422e[_0x2f97('0x35')][_0x2f97('0x37')]?_0xc2422e['attributes']:_0x4ab104[_0x2f97('0x30')];if(_0x30dd85['query'][_0x2f97('0x40')]){_0xc2422e['include']=[{'all':!![]}];}_0xc2422e=_[_0x2f97('0x3c')]({},_0xc2422e,_0x30dd85['options']);return db[_0x2f97('0x2d')][_0x2f97('0x46')](_0xc2422e)[_0x2f97('0x25')](handleEntityNotFound(_0x50ade1,null))[_0x2f97('0x25')](respondWithResult(_0x50ade1,null))[_0x2f97('0x43')](handleError(_0x50ade1,null));};exports[_0x2f97('0x47')]=function(_0x4611aa,_0x4ba368){return db[_0x2f97('0x2d')][_0x2f97('0x47')](_0x4611aa['body'],{})[_0x2f97('0x25')](respondWithResult(_0x4ba368,0xc9))[_0x2f97('0x43')](handleError(_0x4ba368,null));};exports[_0x2f97('0x24')]=function(_0xa08674,_0x4d4496){if(_0xa08674[_0x2f97('0x48')]['id']){delete _0xa08674[_0x2f97('0x48')]['id'];}return db[_0x2f97('0x2d')]['find']({'where':{'id':_0xa08674['params']['id']}})['then'](handleEntityNotFound(_0x4d4496,null))[_0x2f97('0x25')](saveUpdates(_0xa08674[_0x2f97('0x48')],null))[_0x2f97('0x25')](respondWithResult(_0x4d4496,null))[_0x2f97('0x43')](handleError(_0x4d4496,null));};exports[_0x2f97('0x26')]=function(_0xb733e8,_0x456a33){return db[_0x2f97('0x2d')][_0x2f97('0x46')]({'where':{'id':_0xb733e8[_0x2f97('0x45')]['id']}})[_0x2f97('0x25')](handleEntityNotFound(_0x456a33,null))[_0x2f97('0x25')](removeEntity(_0x456a33,null))[_0x2f97('0x43')](handleError(_0x456a33,null));};exports[_0x2f97('0x49')]=function(_0x2f7631,_0x2701fc,_0x3b2e44){var _0xa79b8={};var _0x3c5310={};var _0x276343;var _0x3d7514;return db[_0x2f97('0x2d')]['findOne']({'where':{'id':_0x2f7631['params']['id']}})[_0x2f97('0x25')](handleEntityNotFound(_0x2701fc,null))[_0x2f97('0x25')](function(_0x1eb030){if(_0x1eb030){_0x276343=_0x1eb030;_0x3c5310[_0x2f97('0x30')]=_['keys'](db[_0x2f97('0x4a')][_0x2f97('0x4b')]);_0x3c5310[_0x2f97('0x34')]=_['keys'](_0x2f7631[_0x2f97('0x34')]);_0x3c5310[_0x2f97('0x32')]=_[_0x2f97('0x33')](_0x3c5310['model'],_0x3c5310['query']);_0xa79b8[_0x2f97('0x35')]=_[_0x2f97('0x33')](_0x3c5310['model'],qs[_0x2f97('0x36')](_0x2f7631[_0x2f97('0x34')]['fields']));_0xa79b8[_0x2f97('0x35')]=_0xa79b8[_0x2f97('0x35')][_0x2f97('0x37')]?_0xa79b8[_0x2f97('0x35')]:_0x3c5310[_0x2f97('0x30')];_0xa79b8[_0x2f97('0x4c')]=qs['sort'](_0x2f7631['query'][_0x2f97('0x39')]);_0xa79b8[_0x2f97('0x3a')]=qs[_0x2f97('0x32')](_[_0x2f97('0x4d')](_0x2f7631['query'],_0x3c5310['filters']));if(_0x2f7631[_0x2f97('0x34')][_0x2f97('0x3b')]){_0xa79b8[_0x2f97('0x3a')]=_[_0x2f97('0x3c')](_0xa79b8[_0x2f97('0x3a')],{'$or':_[_0x2f97('0x2c')](_0xa79b8[_0x2f97('0x35')],function(_0x44a6b2){var _0x14ed25={};_0x14ed25[_0x44a6b2]={'$like':'%'+_0x2f7631[_0x2f97('0x34')][_0x2f97('0x3b')]+'%'};return _0x14ed25;})});}_0xa79b8=_['merge']({},_0xa79b8,_0x2f7631[_0x2f97('0x3f')]);return _0x276343['getConfigurations'](_0xa79b8);}})[_0x2f97('0x25')](function(_0x4ffea1){if(_0x4ffea1){_0x3d7514=_0x4ffea1[_0x2f97('0x37')];if(!_0x2f7631[_0x2f97('0x34')]['hasOwnProperty'](_0x2f97('0x4e'))){_0xa79b8['limit']=qs[_0x2f97('0x1f')](_0x2f7631[_0x2f97('0x34')][_0x2f97('0x1f')]);_0xa79b8['offset']=qs[_0x2f97('0x1c')](_0x2f7631['query']['offset']);}return _0x276343[_0x2f97('0x49')](_0xa79b8);}})['then'](function(_0x3a3f58){if(_0x3a3f58){return _0x3a3f58?{'count':_0x3d7514,'rows':_0x3a3f58}:null;}})[_0x2f97('0x25')](respondWithResult(_0x2701fc,null))[_0x2f97('0x43')](handleError(_0x2701fc,null));};exports[_0x2f97('0x4f')]=function(_0x532ec4,_0x137907,_0x4737df){if(_0x532ec4[_0x2f97('0x48')]['id']){delete _0x532ec4[_0x2f97('0x48')]['id'];}return db[_0x2f97('0x2d')][_0x2f97('0x50')]({'where':{'id':_0x532ec4[_0x2f97('0x45')]['id']}})[_0x2f97('0x25')](handleEntityNotFound(_0x137907,null))[_0x2f97('0x25')](function(_0x1729c8){if(_0x1729c8){_0x532ec4['body'][_0x2f97('0x51')]=_0x1729c8['id'];_0x532ec4[_0x2f97('0x48')][_0x2f97('0x52')]=integrations[_0x2f97('0x53')](_0x532ec4[_0x2f97('0x48')][_0x2f97('0x54')],_0x532ec4['body'][_0x2f97('0x3d')]);_0x532ec4[_0x2f97('0x48')][_0x2f97('0x55')]=integrations[_0x2f97('0x56')](_0x532ec4['body'][_0x2f97('0x54')],_0x532ec4[_0x2f97('0x48')]['type']);return db[_0x2f97('0x4a')][_0x2f97('0x47')](_0x532ec4[_0x2f97('0x48')],{'include':[{'model':db['FreshsalesField'],'as':_0x2f97('0x52')},{'model':db['FreshsalesField'],'as':'Descriptions'}]});}return null;})[_0x2f97('0x25')](respondWithResult(_0x137907,null))[_0x2f97('0x43')](handleError(_0x137907,null));};exports['getFields']=function(_0x3ac28c,_0x2edbcf,_0x1a1601){var _0x31115f='';var _0x4021a3='';return db[_0x2f97('0x2d')]['findOne']({'where':{'id':_0x3ac28c[_0x2f97('0x45')]['id']},'attributes':['id',_0x2f97('0x57'),_0x2f97('0x58'),_0x2f97('0x59')]})[_0x2f97('0x25')](handleEntityNotFound(_0x2edbcf,null))['then'](function(_0x29b3d6){if(_0x29b3d6){_0x4021a3=_0x29b3d6[_0x2f97('0x57')];_0x31115f=_0x29b3d6[_0x2f97('0x58')];var _0x38da94=_0x29b3d6[_0x2f97('0x58')]['slice'](-0x1);if(_0x38da94==='/'){_0x31115f=_0x31115f[_0x2f97('0x5a')](0x0,_0x31115f[_0x2f97('0x5b')](_0x38da94));}return rp({'method':_0x2f97('0x5c'),'uri':util[_0x2f97('0x5d')](_0x2f97('0x5e'),_0x31115f,'/api/selector/owners'),'headers':{'Authorization':_0x2f97('0x5f')+_0x29b3d6[_0x2f97('0x59')]},'json':!![]});}})[_0x2f97('0x25')](function(_0x311cb2){if(_0x311cb2){var _0x37101b=_0x311cb2[_0x2f97('0x60')];var _0x10947c=![];var _0x49ebad=null;for(_0x49ebad=0x0;_0x49ebad<_0x37101b[_0x2f97('0x37')];_0x49ebad++){if(_0x37101b[_0x49ebad]['email']===_0x4021a3){_0x10947c=!![];}}if(_0x10947c){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})['then'](respondWithResult(_0x2edbcf,null))[_0x2f97('0x43')](function(_0x2ee017){var _0x5d8539=_0x3ac28c['query']['test']?0x1f4:_0x2ee017[_0x2f97('0x61')]||0x1f4;logger[_0x2f97('0x27')](_0x2f97('0x62'),_0x2f97('0x63'),_0x5d8539,JSON[_0x2f97('0x64')](_0x2ee017));delete _0x2ee017['name'];if(_0x5d8539===0x191){_0x5d8539=0x190;}_0x2edbcf[_0x2f97('0x20')](_0x5d8539)[_0x2f97('0x2a')](_0x3ac28c[_0x2f97('0x34')][_0x2f97('0x65')]?{'message':_0x2f97('0x66'),'statusCode':_0x2ee017[_0x2f97('0x61')]}:_0x2ee017);});};
\ No newline at end of file
+var _0x6850=['filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','find','create','body','params','FreshsalesConfiguration','order','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','/api/selector/owners','Token\x20token=','email','statusCode','stringify','test','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','FreshsalesAccount','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick'];(function(_0x4f8bda,_0x18e871){var _0x18d741=function(_0xe2937){while(--_0xe2937){_0x4f8bda['push'](_0x4f8bda['shift']());}};_0x18d741(++_0x18e871);}(_0x6850,0x1c1));var _0x0685=function(_0x36a7c3,_0x1c0348){_0x36a7c3=_0x36a7c3-0x0;var _0x31d6d4=_0x6850[_0x36a7c3];return _0x31d6d4;};'use strict';var emlformat=require(_0x0685('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0685('0x1'));var rp=require(_0x0685('0x2'));var moment=require(_0x0685('0x3'));var BPromise=require(_0x0685('0x4'));var Mustache=require(_0x0685('0x5'));var util=require(_0x0685('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x0685('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0685('0x8'));var _=require(_0x0685('0x9'));var squel=require('squel');var crypto=require(_0x0685('0xa'));var jsforce=require(_0x0685('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0685('0x7'));var querystring=require(_0x0685('0xc'));var Papa=require(_0x0685('0xd'));var Redis=require(_0x0685('0xe'));var authService=require(_0x0685('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0685('0x10'));var logger=require(_0x0685('0x11'))(_0x0685('0x12'));var utils=require(_0x0685('0x13'));var config=require(_0x0685('0x14'));var licenseUtil=require(_0x0685('0x15'));var db=require(_0x0685('0x16'))['db'];var integrations=require(_0x0685('0x17'));function respondWithStatusCode(_0x2d165b,_0x4aa344){_0x4aa344=_0x4aa344||0xcc;return function(_0x1f085b){if(_0x1f085b){return _0x2d165b[_0x0685('0x18')](_0x4aa344);}return _0x2d165b['status'](_0x4aa344)[_0x0685('0x19')]();};}function respondWithResult(_0x10b1c7,_0x6a4ee0){_0x6a4ee0=_0x6a4ee0||0xc8;return function(_0x5cc8cd){if(_0x5cc8cd){return _0x10b1c7[_0x0685('0x1a')](_0x6a4ee0)[_0x0685('0x1b')](_0x5cc8cd);}};}function respondWithFilteredResult(_0x3653be,_0x299bfd){return function(_0x119000){if(_0x119000){var _0x8b9ba5=typeof _0x299bfd[_0x0685('0x1c')]===_0x0685('0x1d')&&typeof _0x299bfd['limit']===_0x0685('0x1d');var _0x1e9bb5=_0x119000[_0x0685('0x1e')];var _0x2d2a5b=_0x8b9ba5?0x0:_0x299bfd[_0x0685('0x1c')];var _0x3a6c7d=_0x8b9ba5?_0x119000[_0x0685('0x1e')]:_0x299bfd[_0x0685('0x1c')]+_0x299bfd[_0x0685('0x1f')];var _0x3df228;if(_0x3a6c7d>=_0x1e9bb5){_0x3a6c7d=_0x1e9bb5;_0x3df228=0xc8;}else{_0x3df228=0xce;}_0x3653be[_0x0685('0x1a')](_0x3df228);return _0x3653be[_0x0685('0x20')](_0x0685('0x21'),_0x2d2a5b+'-'+_0x3a6c7d+'/'+_0x1e9bb5)['json'](_0x119000);}return null;};}function patchUpdates(_0x5d2756){return function(_0x19f00c){try{jsonpatch[_0x0685('0x22')](_0x19f00c,_0x5d2756,!![]);}catch(_0x3b92c0){return BPromise[_0x0685('0x23')](_0x3b92c0);}return _0x19f00c[_0x0685('0x24')]();};}function saveUpdates(_0x21a16b,_0x4b1840){return function(_0x1a69ac){if(_0x1a69ac){return _0x1a69ac[_0x0685('0x25')](_0x21a16b)[_0x0685('0x26')](function(_0x30a0ec){return _0x30a0ec;});}return null;};}function removeEntity(_0x4d292b,_0x4d364e){return function(_0xa7125d){if(_0xa7125d){return _0xa7125d[_0x0685('0x27')]()[_0x0685('0x26')](function(){_0x4d292b[_0x0685('0x1a')](0xcc)[_0x0685('0x19')]();});}};}function handleEntityNotFound(_0x2db908,_0x5a42e8){return function(_0xdb9f){if(!_0xdb9f){_0x2db908['sendStatus'](0x194);}return _0xdb9f;};}function handleError(_0x34dfc5,_0x352d20){_0x352d20=_0x352d20||0x1f4;return function(_0x297f21){logger[_0x0685('0x28')](_0x297f21[_0x0685('0x29')]);if(_0x297f21[_0x0685('0x2a')]){delete _0x297f21[_0x0685('0x2a')];}_0x34dfc5['status'](_0x352d20)['send'](_0x297f21);};}exports[_0x0685('0x2b')]=function(_0x2b5639,_0x19fae2){var _0x158c31={},_0x2205e6={},_0x3c2c6b={'count':0x0,'rows':[]};var _0xaa1b16=_['map'](db[_0x0685('0x2c')][_0x0685('0x2d')],function(_0x1722d3){return{'name':_0x1722d3[_0x0685('0x2e')],'type':_0x1722d3['type'][_0x0685('0x2f')]};});_0x2205e6[_0x0685('0x30')]=_[_0x0685('0x31')](_0xaa1b16,_0x0685('0x2a'));_0x2205e6[_0x0685('0x32')]=_[_0x0685('0x33')](_0x2b5639['query']);_0x2205e6[_0x0685('0x34')]=_[_0x0685('0x35')](_0x2205e6[_0x0685('0x30')],_0x2205e6[_0x0685('0x32')]);_0x158c31[_0x0685('0x36')]=_[_0x0685('0x35')](_0x2205e6[_0x0685('0x30')],qs[_0x0685('0x37')](_0x2b5639[_0x0685('0x32')][_0x0685('0x37')]));_0x158c31[_0x0685('0x36')]=_0x158c31[_0x0685('0x36')][_0x0685('0x38')]?_0x158c31[_0x0685('0x36')]:_0x2205e6[_0x0685('0x30')];if(!_0x2b5639[_0x0685('0x32')]['hasOwnProperty'](_0x0685('0x39'))){_0x158c31[_0x0685('0x1f')]=qs[_0x0685('0x1f')](_0x2b5639['query'][_0x0685('0x1f')]);_0x158c31['offset']=qs[_0x0685('0x1c')](_0x2b5639[_0x0685('0x32')][_0x0685('0x1c')]);}_0x158c31['order']=qs['sort'](_0x2b5639[_0x0685('0x32')][_0x0685('0x3a')]);_0x158c31[_0x0685('0x3b')]=qs[_0x0685('0x34')](_[_0x0685('0x3c')](_0x2b5639['query'],_0x2205e6[_0x0685('0x34')]),_0xaa1b16);if(_0x2b5639[_0x0685('0x32')][_0x0685('0x3d')]){_0x158c31[_0x0685('0x3b')]=_[_0x0685('0x3e')](_0x158c31['where'],{'$or':_[_0x0685('0x31')](_0xaa1b16,function(_0x3503e0){if(_0x3503e0[_0x0685('0x3f')]!==_0x0685('0x40')){var _0x4f0acb={};_0x4f0acb[_0x3503e0[_0x0685('0x2a')]]={'$like':'%'+_0x2b5639[_0x0685('0x32')][_0x0685('0x3d')]+'%'};return _0x4f0acb;}})});}_0x158c31=_[_0x0685('0x3e')]({},_0x158c31,_0x2b5639[_0x0685('0x41')]);var _0x24c0a8={'where':_0x158c31[_0x0685('0x3b')]};return db[_0x0685('0x2c')]['count'](_0x24c0a8)['then'](function(_0x2c5702){_0x3c2c6b[_0x0685('0x1e')]=_0x2c5702;if(_0x2b5639['query'][_0x0685('0x42')]){_0x158c31[_0x0685('0x43')]=[{'all':!![]}];}return db[_0x0685('0x2c')][_0x0685('0x44')](_0x158c31);})['then'](function(_0x27eb91){_0x3c2c6b[_0x0685('0x45')]=_0x27eb91;return _0x3c2c6b;})[_0x0685('0x26')](respondWithFilteredResult(_0x19fae2,_0x158c31))[_0x0685('0x46')](handleError(_0x19fae2,null));};exports['show']=function(_0x16815f,_0x5e51a7){var _0x43481={'raw':![],'where':{'id':_0x16815f['params']['id']}},_0x3c8abc={};_0x3c8abc[_0x0685('0x30')]=_[_0x0685('0x33')](db[_0x0685('0x2c')]['rawAttributes']);_0x3c8abc['query']=_[_0x0685('0x33')](_0x16815f[_0x0685('0x32')]);_0x3c8abc[_0x0685('0x34')]=_[_0x0685('0x35')](_0x3c8abc['model'],_0x3c8abc['query']);_0x43481[_0x0685('0x36')]=_[_0x0685('0x35')](_0x3c8abc[_0x0685('0x30')],qs[_0x0685('0x37')](_0x16815f[_0x0685('0x32')][_0x0685('0x37')]));_0x43481[_0x0685('0x36')]=_0x43481['attributes'][_0x0685('0x38')]?_0x43481['attributes']:_0x3c8abc[_0x0685('0x30')];if(_0x16815f[_0x0685('0x32')][_0x0685('0x42')]){_0x43481[_0x0685('0x43')]=[{'all':!![]}];}_0x43481=_['merge']({},_0x43481,_0x16815f[_0x0685('0x41')]);return db[_0x0685('0x2c')][_0x0685('0x47')](_0x43481)[_0x0685('0x26')](handleEntityNotFound(_0x5e51a7,null))[_0x0685('0x26')](respondWithResult(_0x5e51a7,null))[_0x0685('0x46')](handleError(_0x5e51a7,null));};exports[_0x0685('0x48')]=function(_0x55ded6,_0x2af89a){return db[_0x0685('0x2c')][_0x0685('0x48')](_0x55ded6['body'],{})[_0x0685('0x26')](respondWithResult(_0x2af89a,0xc9))[_0x0685('0x46')](handleError(_0x2af89a,null));};exports[_0x0685('0x25')]=function(_0x2eff7e,_0x545dde){if(_0x2eff7e[_0x0685('0x49')]['id']){delete _0x2eff7e[_0x0685('0x49')]['id'];}return db[_0x0685('0x2c')][_0x0685('0x47')]({'where':{'id':_0x2eff7e[_0x0685('0x4a')]['id']}})[_0x0685('0x26')](handleEntityNotFound(_0x545dde,null))[_0x0685('0x26')](saveUpdates(_0x2eff7e[_0x0685('0x49')],null))[_0x0685('0x26')](respondWithResult(_0x545dde,null))['catch'](handleError(_0x545dde,null));};exports[_0x0685('0x27')]=function(_0x49295b,_0xc58a9c){return db[_0x0685('0x2c')][_0x0685('0x47')]({'where':{'id':_0x49295b[_0x0685('0x4a')]['id']}})[_0x0685('0x26')](handleEntityNotFound(_0xc58a9c,null))[_0x0685('0x26')](removeEntity(_0xc58a9c,null))[_0x0685('0x46')](handleError(_0xc58a9c,null));};exports['getConfigurations']=function(_0x57f79c,_0x3d4ff6,_0x30ad71){var _0x26bbd8={};var _0x17cf6a={};var _0x4111ec;var _0x1a8c46;return db[_0x0685('0x2c')]['findOne']({'where':{'id':_0x57f79c[_0x0685('0x4a')]['id']}})[_0x0685('0x26')](handleEntityNotFound(_0x3d4ff6,null))[_0x0685('0x26')](function(_0x37dd75){if(_0x37dd75){_0x4111ec=_0x37dd75;_0x17cf6a[_0x0685('0x30')]=_[_0x0685('0x33')](db[_0x0685('0x4b')][_0x0685('0x2d')]);_0x17cf6a[_0x0685('0x32')]=_[_0x0685('0x33')](_0x57f79c['query']);_0x17cf6a['filters']=_[_0x0685('0x35')](_0x17cf6a['model'],_0x17cf6a[_0x0685('0x32')]);_0x26bbd8[_0x0685('0x36')]=_[_0x0685('0x35')](_0x17cf6a[_0x0685('0x30')],qs['fields'](_0x57f79c['query'][_0x0685('0x37')]));_0x26bbd8[_0x0685('0x36')]=_0x26bbd8[_0x0685('0x36')][_0x0685('0x38')]?_0x26bbd8[_0x0685('0x36')]:_0x17cf6a[_0x0685('0x30')];_0x26bbd8[_0x0685('0x4c')]=qs[_0x0685('0x3a')](_0x57f79c['query'][_0x0685('0x3a')]);_0x26bbd8[_0x0685('0x3b')]=qs['filters'](_[_0x0685('0x3c')](_0x57f79c[_0x0685('0x32')],_0x17cf6a[_0x0685('0x34')]));if(_0x57f79c[_0x0685('0x32')][_0x0685('0x3d')]){_0x26bbd8[_0x0685('0x3b')]=_['merge'](_0x26bbd8[_0x0685('0x3b')],{'$or':_['map'](_0x26bbd8[_0x0685('0x36')],function(_0x48d794){var _0x3cd133={};_0x3cd133[_0x48d794]={'$like':'%'+_0x57f79c[_0x0685('0x32')][_0x0685('0x3d')]+'%'};return _0x3cd133;})});}_0x26bbd8=_[_0x0685('0x3e')]({},_0x26bbd8,_0x57f79c[_0x0685('0x41')]);return _0x4111ec[_0x0685('0x4d')](_0x26bbd8);}})[_0x0685('0x26')](function(_0xdfac7f){if(_0xdfac7f){_0x1a8c46=_0xdfac7f['length'];if(!_0x57f79c[_0x0685('0x32')]['hasOwnProperty'](_0x0685('0x39'))){_0x26bbd8[_0x0685('0x1f')]=qs[_0x0685('0x1f')](_0x57f79c[_0x0685('0x32')][_0x0685('0x1f')]);_0x26bbd8[_0x0685('0x1c')]=qs[_0x0685('0x1c')](_0x57f79c[_0x0685('0x32')][_0x0685('0x1c')]);}return _0x4111ec[_0x0685('0x4d')](_0x26bbd8);}})[_0x0685('0x26')](function(_0x41640e){if(_0x41640e){return _0x41640e?{'count':_0x1a8c46,'rows':_0x41640e}:null;}})[_0x0685('0x26')](respondWithResult(_0x3d4ff6,null))[_0x0685('0x46')](handleError(_0x3d4ff6,null));};exports[_0x0685('0x4e')]=function(_0x5f2b6e,_0x49da48,_0x3672c6){if(_0x5f2b6e[_0x0685('0x49')]['id']){delete _0x5f2b6e['body']['id'];}return db[_0x0685('0x2c')][_0x0685('0x4f')]({'where':{'id':_0x5f2b6e['params']['id']}})[_0x0685('0x26')](handleEntityNotFound(_0x49da48,null))[_0x0685('0x26')](function(_0x5bc401){if(_0x5bc401){_0x5f2b6e[_0x0685('0x49')][_0x0685('0x50')]=_0x5bc401['id'];_0x5f2b6e[_0x0685('0x49')][_0x0685('0x51')]=integrations[_0x0685('0x52')](_0x5f2b6e[_0x0685('0x49')][_0x0685('0x53')],_0x5f2b6e[_0x0685('0x49')][_0x0685('0x3f')]);_0x5f2b6e[_0x0685('0x49')][_0x0685('0x54')]=integrations[_0x0685('0x55')](_0x5f2b6e[_0x0685('0x49')]['channel'],_0x5f2b6e[_0x0685('0x49')]['type']);return db[_0x0685('0x4b')]['create'](_0x5f2b6e[_0x0685('0x49')],{'include':[{'model':db[_0x0685('0x56')],'as':_0x0685('0x51')},{'model':db[_0x0685('0x56')],'as':_0x0685('0x54')}]});}return null;})[_0x0685('0x26')](respondWithResult(_0x49da48,null))[_0x0685('0x46')](handleError(_0x49da48,null));};exports[_0x0685('0x57')]=function(_0x3d0629,_0x447e80,_0x588f89){var _0x7c213='';var _0x5e6ccb='';return db[_0x0685('0x2c')][_0x0685('0x4f')]({'where':{'id':_0x3d0629[_0x0685('0x4a')]['id']},'attributes':['id',_0x0685('0x58'),_0x0685('0x59'),_0x0685('0x5a')]})[_0x0685('0x26')](handleEntityNotFound(_0x447e80,null))[_0x0685('0x26')](function(_0x57bd56){if(_0x57bd56){_0x5e6ccb=_0x57bd56[_0x0685('0x58')];_0x7c213=_0x57bd56[_0x0685('0x59')];var _0x6c55e=_0x57bd56['remoteUri'][_0x0685('0x5b')](-0x1);if(_0x6c55e==='/'){_0x7c213=_0x7c213[_0x0685('0x5c')](0x0,_0x7c213[_0x0685('0x5d')](_0x6c55e));}return rp({'method':_0x0685('0x5e'),'uri':util[_0x0685('0x5f')]('%s%s',_0x7c213,_0x0685('0x60')),'headers':{'Authorization':_0x0685('0x61')+_0x57bd56['apiKey']},'json':!![]});}})[_0x0685('0x26')](function(_0x450e92){if(_0x450e92){var _0x4061df=_0x450e92['users'];var _0xd5d998=![];var _0x1225e8=null;for(_0x1225e8=0x0;_0x1225e8<_0x4061df['length'];_0x1225e8++){if(_0x4061df[_0x1225e8][_0x0685('0x62')]===_0x5e6ccb){_0xd5d998=!![];}}if(_0xd5d998){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})['then'](respondWithResult(_0x447e80,null))[_0x0685('0x46')](function(_0x2974c4){var _0xf0c7c=_0x3d0629[_0x0685('0x32')]['test']?0x1f4:_0x2974c4[_0x0685('0x63')]||0x1f4;logger[_0x0685('0x28')]('getFields,\x20%s,\x20%s,\x20%s',_0x0685('0x57'),_0xf0c7c,JSON[_0x0685('0x64')](_0x2974c4));delete _0x2974c4['name'];if(_0xf0c7c===0x191){_0xf0c7c=0x190;}_0x447e80[_0x0685('0x1a')](_0xf0c7c)['send'](_0x3d0629[_0x0685('0x32')][_0x0685('0x65')]?{'message':'Wrong\x20credentials','statusCode':_0x2974c4[_0x0685('0x63')]}:_0x2974c4);});};
\ No newline at end of file
index 40d0601..afc68b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5496=['util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./intFreshsalesAccount.attributes','FreshsalesAccount','int_freshsales_accounts','lodash'];(function(_0x4d08b8,_0x34c445){var _0x70214a=function(_0x4db67c){while(--_0x4db67c){_0x4d08b8['push'](_0x4d08b8['shift']());}};_0x70214a(++_0x34c445);}(_0x5496,0x175));var _0x6549=function(_0x561cbb,_0x2ccede){_0x561cbb=_0x561cbb-0x0;var _0x1e9363=_0x5496[_0x561cbb];return _0x1e9363;};'use strict';var _=require(_0x6549('0x0'));var util=require(_0x6549('0x1'));var logger=require(_0x6549('0x2'))(_0x6549('0x3'));var moment=require(_0x6549('0x4'));var BPromise=require('bluebird');var rp=require(_0x6549('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6549('0x6'));var config=require(_0x6549('0x7'));var attributes=require(_0x6549('0x8'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x43cb17,_0x1d8cea){return _0x43cb17['define'](_0x6549('0x9'),attributes,{'tableName':_0x6549('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x53ec=['path','../../config/environment','./intFreshsalesAccount.attributes','exports','define','int_freshsales_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x53ec,0x192));var _0xc53e=function(_0x1b046f,_0x8e5fa6){_0x1b046f=_0x1b046f-0x0;var _0x1f6c8f=_0x53ec[_0x1b046f];return _0x1f6c8f;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var logger=require(_0xc53e('0x2'))(_0xc53e('0x3'));var moment=require(_0xc53e('0x4'));var BPromise=require(_0xc53e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc53e('0x6'));var rimraf=require('rimraf');var config=require(_0xc53e('0x7'));var attributes=require(_0xc53e('0x8'));var integrations=require('../../components/integrations/configuration');module[_0xc53e('0x9')]=function(_0x4f989b,_0x41a9e8){return _0x4f989b[_0xc53e('0xa')]('FreshsalesAccount',attributes,{'tableName':_0xc53e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee58806..848472d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44a=['moment','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','FreshsalesAccount,\x20%s,\x20%s','debug','stringify','error','code','message','info','catch','GetFreshsalesAccount','FreshsalesAccount','options','raw','attributes','limit','include','map','model','ShowFreshsalesAccount','find','where'];(function(_0xdcb19c,_0x3f5a20){var _0x18f681=function(_0x25ddf7){while(--_0x25ddf7){_0xdcb19c['push'](_0xdcb19c['shift']());}};_0x18f681(++_0x3f5a20);}(_0xb44a,0x1c2));var _0xab44=function(_0x10df18,_0x13338c){_0x10df18=_0x10df18-0x0;var _0x1f9a1d=_0xb44a[_0x10df18];return _0x1f9a1d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xab44('0x0'));var BPromise=require('bluebird');var rs=require(_0xab44('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xab44('0x2'));var logger=require('../../config/logger')(_0xab44('0x3'));var config=require(_0xab44('0x4'));var jayson=require(_0xab44('0x5'));var client=jayson[_0xab44('0x6')][_0xab44('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3303b1,_0x3ead8d,_0x495825){return new BPromise(function(_0x137a8c,_0x133a6d){return client[_0xab44('0x8')](_0x3303b1,_0x495825)[_0xab44('0x9')](function(_0xa14367){logger['info'](_0xab44('0xa'),_0x3ead8d,'request\x20sent');logger[_0xab44('0xb')]('FreshsalesAccount,\x20%s,\x20%s,\x20%s',_0x3ead8d,'request\x20sent',JSON[_0xab44('0xc')](_0xa14367));if(_0xa14367[_0xab44('0xd')]){if(_0xa14367[_0xab44('0xd')][_0xab44('0xe')]===0x1f4){logger[_0xab44('0xd')](_0xab44('0xa'),_0x3ead8d,_0xa14367['error']['message']);return _0x133a6d(_0xa14367[_0xab44('0xd')]['message']);}logger[_0xab44('0xd')]('FreshsalesAccount,\x20%s,\x20%s',_0x3ead8d,_0xa14367[_0xab44('0xd')][_0xab44('0xf')]);return _0x137a8c(_0xa14367[_0xab44('0xd')][_0xab44('0xf')]);}else{logger[_0xab44('0x10')](_0xab44('0xa'),_0x3ead8d,'request\x20sent');_0x137a8c(_0xa14367['result'][_0xab44('0xf')]);}})[_0xab44('0x11')](function(_0x14fe36){logger[_0xab44('0xd')](_0xab44('0xa'),_0x3ead8d,_0x14fe36);_0x133a6d(_0x14fe36);});});}exports[_0xab44('0x12')]=function(_0x354b09){var _0x44fa43=this;return new Promise(function(_0x310b15,_0xc4b3dc){return db[_0xab44('0x13')]['findAll']({'raw':_0x354b09[_0xab44('0x14')]?_0x354b09[_0xab44('0x14')][_0xab44('0x15')]===undefined?!![]:![]:!![],'where':_0x354b09[_0xab44('0x14')]?_0x354b09[_0xab44('0x14')]['where']||null:null,'attributes':_0x354b09[_0xab44('0x14')]?_0x354b09['options'][_0xab44('0x16')]||null:null,'limit':_0x354b09[_0xab44('0x14')]?_0x354b09[_0xab44('0x14')][_0xab44('0x17')]||null:null,'include':_0x354b09['options']?_0x354b09[_0xab44('0x14')][_0xab44('0x18')]?_[_0xab44('0x19')](_0x354b09[_0xab44('0x14')][_0xab44('0x18')],function(_0x402950){return{'model':db[_0x402950[_0xab44('0x1a')]],'as':_0x402950['as'],'attributes':_0x402950['attributes'],'include':_0x402950['include']?_[_0xab44('0x19')](_0x402950['include'],function(_0x2439f3){return{'model':db[_0x2439f3['model']],'as':_0x2439f3['as'],'attributes':_0x2439f3[_0xab44('0x16')],'include':_0x2439f3['include']?_['map'](_0x2439f3[_0xab44('0x18')],function(_0x25287b){return{'model':db[_0x25287b[_0xab44('0x1a')]],'as':_0x25287b['as'],'attributes':_0x25287b[_0xab44('0x16')]};}):[]};}):[]};}):[]:[]})[_0xab44('0x9')](function(_0x4e820c){logger[_0xab44('0x10')](_0xab44('0x12'),_0x354b09);logger['debug'](_0xab44('0x12'),_0x354b09,JSON[_0xab44('0xc')](_0x4e820c));_0x310b15(_0x4e820c);})[_0xab44('0x11')](function(_0x1cd486){logger[_0xab44('0xd')](_0xab44('0x12'),_0x1cd486['message'],_0x354b09);_0xc4b3dc(_0x44fa43[_0xab44('0xd')](0x1f4,_0x1cd486[_0xab44('0xf')]));});});};exports[_0xab44('0x1b')]=function(_0x47e1be){var _0x54cac8=this;return new Promise(function(_0x106d3a,_0x5082e4){return db['FreshsalesAccount'][_0xab44('0x1c')]({'raw':_0x47e1be[_0xab44('0x14')]?_0x47e1be[_0xab44('0x14')][_0xab44('0x15')]===undefined?!![]:![]:!![],'where':_0x47e1be[_0xab44('0x14')]?_0x47e1be[_0xab44('0x14')][_0xab44('0x1d')]||null:null,'attributes':_0x47e1be[_0xab44('0x14')]?_0x47e1be[_0xab44('0x14')][_0xab44('0x16')]||null:null,'include':_0x47e1be[_0xab44('0x14')]?_0x47e1be[_0xab44('0x14')][_0xab44('0x18')]?_[_0xab44('0x19')](_0x47e1be['options']['include'],function(_0x27e318){return{'model':db[_0x27e318[_0xab44('0x1a')]],'as':_0x27e318['as'],'attributes':_0x27e318['attributes'],'include':_0x27e318[_0xab44('0x18')]?_[_0xab44('0x19')](_0x27e318[_0xab44('0x18')],function(_0x1e0be7){return{'model':db[_0x1e0be7[_0xab44('0x1a')]],'as':_0x1e0be7['as'],'attributes':_0x1e0be7[_0xab44('0x16')],'include':_0x1e0be7[_0xab44('0x18')]?_[_0xab44('0x19')](_0x1e0be7[_0xab44('0x18')],function(_0xe26f9f){return{'model':db[_0xe26f9f[_0xab44('0x1a')]],'as':_0xe26f9f['as'],'attributes':_0xe26f9f[_0xab44('0x16')]};}):[]};}):[]};}):[]:[]})[_0xab44('0x9')](function(_0x532aad){logger[_0xab44('0x10')](_0xab44('0x1b'),_0x47e1be);logger[_0xab44('0xb')](_0xab44('0x1b'),_0x47e1be,JSON['stringify'](_0x532aad));_0x106d3a(_0x532aad);})[_0xab44('0x11')](function(_0x31b599){logger[_0xab44('0xd')](_0xab44('0x1b'),_0x31b599['message'],_0x47e1be);_0x5082e4(_0x54cac8[_0xab44('0xd')](0x1f4,_0x31b599[_0xab44('0xf')]));});});};
\ No newline at end of file
+var _0x5496=['util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetFreshsalesAccount','findAll','options','raw','where','attributes','limit','include','map','model','FreshsalesAccount','find','ShowFreshsalesAccount','lodash'];(function(_0x4abb10,_0x26897f){var _0x2494fe=function(_0x44c085){while(--_0x44c085){_0x4abb10['push'](_0x4abb10['shift']());}};_0x2494fe(++_0x26897f);}(_0x5496,0x175));var _0x6549=function(_0x3a8f6c,_0x202700){_0x3a8f6c=_0x3a8f6c-0x0;var _0x3f3f45=_0x5496[_0x3a8f6c];return _0x3f3f45;};'use strict';var _=require(_0x6549('0x0'));var util=require(_0x6549('0x1'));var moment=require(_0x6549('0x2'));var BPromise=require(_0x6549('0x3'));var rs=require(_0x6549('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6549('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6549('0x6'))(_0x6549('0x7'));var config=require(_0x6549('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6549('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1d8cea,_0x4fcffd,_0x1ca8fc){return new BPromise(function(_0x3442c3,_0x1ef2a6){return client['request'](_0x1d8cea,_0x1ca8fc)[_0x6549('0xa')](function(_0x35d008){logger[_0x6549('0xb')](_0x6549('0xc'),_0x4fcffd,_0x6549('0xd'));logger[_0x6549('0xe')]('FreshsalesAccount,\x20%s,\x20%s,\x20%s',_0x4fcffd,'request\x20sent',JSON[_0x6549('0xf')](_0x35d008));if(_0x35d008[_0x6549('0x10')]){if(_0x35d008[_0x6549('0x10')][_0x6549('0x11')]===0x1f4){logger[_0x6549('0x10')]('FreshsalesAccount,\x20%s,\x20%s',_0x4fcffd,_0x35d008['error'][_0x6549('0x12')]);return _0x1ef2a6(_0x35d008[_0x6549('0x10')]['message']);}logger[_0x6549('0x10')](_0x6549('0xc'),_0x4fcffd,_0x35d008[_0x6549('0x10')][_0x6549('0x12')]);return _0x3442c3(_0x35d008[_0x6549('0x10')][_0x6549('0x12')]);}else{logger['info']('FreshsalesAccount,\x20%s,\x20%s',_0x4fcffd,_0x6549('0xd'));_0x3442c3(_0x35d008[_0x6549('0x13')]['message']);}})[_0x6549('0x14')](function(_0x67acc0){logger[_0x6549('0x10')](_0x6549('0xc'),_0x4fcffd,_0x67acc0);_0x1ef2a6(_0x67acc0);});});}exports[_0x6549('0x15')]=function(_0x53b12b){var _0x5d61a0=this;return new Promise(function(_0x26a212,_0x48f037){return db['FreshsalesAccount'][_0x6549('0x16')]({'raw':_0x53b12b[_0x6549('0x17')]?_0x53b12b[_0x6549('0x17')][_0x6549('0x18')]===undefined?!![]:![]:!![],'where':_0x53b12b[_0x6549('0x17')]?_0x53b12b['options'][_0x6549('0x19')]||null:null,'attributes':_0x53b12b['options']?_0x53b12b[_0x6549('0x17')][_0x6549('0x1a')]||null:null,'limit':_0x53b12b[_0x6549('0x17')]?_0x53b12b[_0x6549('0x17')][_0x6549('0x1b')]||null:null,'include':_0x53b12b[_0x6549('0x17')]?_0x53b12b[_0x6549('0x17')][_0x6549('0x1c')]?_[_0x6549('0x1d')](_0x53b12b[_0x6549('0x17')][_0x6549('0x1c')],function(_0x1fbfa4){return{'model':db[_0x1fbfa4[_0x6549('0x1e')]],'as':_0x1fbfa4['as'],'attributes':_0x1fbfa4['attributes'],'include':_0x1fbfa4[_0x6549('0x1c')]?_[_0x6549('0x1d')](_0x1fbfa4['include'],function(_0x126967){return{'model':db[_0x126967[_0x6549('0x1e')]],'as':_0x126967['as'],'attributes':_0x126967[_0x6549('0x1a')],'include':_0x126967['include']?_[_0x6549('0x1d')](_0x126967[_0x6549('0x1c')],function(_0x14de1f){return{'model':db[_0x14de1f[_0x6549('0x1e')]],'as':_0x14de1f['as'],'attributes':_0x14de1f[_0x6549('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x6549('0xa')](function(_0x2f58f7){logger[_0x6549('0xb')]('GetFreshsalesAccount',_0x53b12b);logger[_0x6549('0xe')](_0x6549('0x15'),_0x53b12b,JSON[_0x6549('0xf')](_0x2f58f7));_0x26a212(_0x2f58f7);})['catch'](function(_0x3f1502){logger['error']('GetFreshsalesAccount',_0x3f1502['message'],_0x53b12b);_0x48f037(_0x5d61a0[_0x6549('0x10')](0x1f4,_0x3f1502[_0x6549('0x12')]));});});};exports['ShowFreshsalesAccount']=function(_0x30aac6){var _0x194ae7=this;return new Promise(function(_0x2e481f,_0x102a21){return db[_0x6549('0x1f')][_0x6549('0x20')]({'raw':_0x30aac6[_0x6549('0x17')]?_0x30aac6['options'][_0x6549('0x18')]===undefined?!![]:![]:!![],'where':_0x30aac6[_0x6549('0x17')]?_0x30aac6[_0x6549('0x17')][_0x6549('0x19')]||null:null,'attributes':_0x30aac6[_0x6549('0x17')]?_0x30aac6[_0x6549('0x17')]['attributes']||null:null,'include':_0x30aac6[_0x6549('0x17')]?_0x30aac6['options'][_0x6549('0x1c')]?_['map'](_0x30aac6[_0x6549('0x17')][_0x6549('0x1c')],function(_0x3d9e9e){return{'model':db[_0x3d9e9e['model']],'as':_0x3d9e9e['as'],'attributes':_0x3d9e9e[_0x6549('0x1a')],'include':_0x3d9e9e[_0x6549('0x1c')]?_[_0x6549('0x1d')](_0x3d9e9e[_0x6549('0x1c')],function(_0x5b8624){return{'model':db[_0x5b8624['model']],'as':_0x5b8624['as'],'attributes':_0x5b8624['attributes'],'include':_0x5b8624[_0x6549('0x1c')]?_[_0x6549('0x1d')](_0x5b8624['include'],function(_0x43220f){return{'model':db[_0x43220f[_0x6549('0x1e')]],'as':_0x43220f['as'],'attributes':_0x43220f[_0x6549('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x6549('0xa')](function(_0x3741f5){logger['info']('ShowFreshsalesAccount',_0x30aac6);logger[_0x6549('0xe')](_0x6549('0x21'),_0x30aac6,JSON[_0x6549('0xf')](_0x3741f5));_0x2e481f(_0x3741f5);})[_0x6549('0x14')](function(_0xa96598){logger[_0x6549('0x10')](_0x6549('0x21'),_0xa96598[_0x6549('0x12')],_0x30aac6);_0x102a21(_0x194ae7[_0x6549('0x10')](0x1f4,_0xa96598[_0x6549('0x12')]));});});};
\ No newline at end of file
index e3d8aca..5939b12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd193=['/:id/subjects','getDescriptions','/:id/fields','getFields','create','update','delete','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','/:id','isAuthenticated'];(function(_0x3a6938,_0x51047d){var _0x49b2cd=function(_0x38fca7){while(--_0x38fca7){_0x3a6938['push'](_0x3a6938['shift']());}};_0x49b2cd(++_0x51047d);}(_0xd193,0x133));var _0x3d19=function(_0x10b840,_0x47cefb){_0x10b840=_0x10b840-0x0;var _0x1d4ca5=_0xd193[_0x10b840];return _0x1d4ca5;};'use strict';var multer=require(_0x3d19('0x0'));var util=require('util');var path=require(_0x3d19('0x1'));var timeout=require(_0x3d19('0x2'));var express=require(_0x3d19('0x3'));var router=express[_0x3d19('0x4')]();var fs_extra=require(_0x3d19('0x5'));var auth=require(_0x3d19('0x6'));var interaction=require(_0x3d19('0x7'));var config=require(_0x3d19('0x8'));var controller=require(_0x3d19('0x9'));router[_0x3d19('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3d19('0xa')](_0x3d19('0xb'),auth[_0x3d19('0xc')](),controller['show']);router['get'](_0x3d19('0xd'),auth[_0x3d19('0xc')](),controller['getSubjects']);router[_0x3d19('0xa')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x3d19('0xe')]);router[_0x3d19('0xa')](_0x3d19('0xf'),auth['isAuthenticated'](),controller[_0x3d19('0x10')]);router['post']('/',auth[_0x3d19('0xc')](),controller[_0x3d19('0x11')]);router['put'](_0x3d19('0xb'),auth[_0x3d19('0xc')](),controller[_0x3d19('0x12')]);router[_0x3d19('0x13')](_0x3d19('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xcbd7=['/:id/fields','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','/:id','isAuthenticated','show','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x544bf5,_0x11ca52){var _0x353e93=function(_0x3fd0f5){while(--_0x3fd0f5){_0x544bf5['push'](_0x544bf5['shift']());}};_0x353e93(++_0x11ca52);}(_0xcbd7,0x11a));var _0x7cbd=function(_0x1beabf,_0x108368){_0x1beabf=_0x1beabf-0x0;var _0x2ffd79=_0xcbd7[_0x1beabf];return _0x2ffd79;};'use strict';var multer=require(_0x7cbd('0x0'));var util=require(_0x7cbd('0x1'));var path=require(_0x7cbd('0x2'));var timeout=require(_0x7cbd('0x3'));var express=require(_0x7cbd('0x4'));var router=express[_0x7cbd('0x5')]();var fs_extra=require(_0x7cbd('0x6'));var auth=require(_0x7cbd('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x7cbd('0x8'));var controller=require('./intFreshsalesConfiguration.controller');router[_0x7cbd('0x9')]('/',auth['isAuthenticated'](),controller[_0x7cbd('0xa')]);router['get'](_0x7cbd('0xb'),auth[_0x7cbd('0xc')](),controller[_0x7cbd('0xd')]);router[_0x7cbd('0x9')]('/:id/subjects',auth[_0x7cbd('0xc')](),controller[_0x7cbd('0xe')]);router[_0x7cbd('0x9')](_0x7cbd('0xf'),auth[_0x7cbd('0xc')](),controller[_0x7cbd('0x10')]);router['get'](_0x7cbd('0x11'),auth[_0x7cbd('0xc')](),controller['getFields']);router[_0x7cbd('0x12')]('/',auth[_0x7cbd('0xc')](),controller[_0x7cbd('0x13')]);router[_0x7cbd('0x14')](_0x7cbd('0xb'),auth['isAuthenticated'](),controller[_0x7cbd('0x15')]);router['delete'](_0x7cbd('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x7cbd('0x16')]=router;
\ No newline at end of file
index c894647..0ac1a15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf19e=['STRING','sequelize','exports'];(function(_0x342046,_0x8aceed){var _0x422c32=function(_0x28dc0e){while(--_0x28dc0e){_0x342046['push'](_0x342046['shift']());}};_0x422c32(++_0x8aceed);}(_0xf19e,0x145));var _0xef19=function(_0x1936ea,_0x27029e){_0x1936ea=_0x1936ea-0x0;var _0x4f32af=_0xf19e[_0x1936ea];return _0x4f32af;};'use strict';var Sequelize=require(_0xef19('0x0'));module[_0xef19('0x1')]={'name':{'type':Sequelize[_0xef19('0x2')]},'description':{'type':Sequelize[_0xef19('0x2')]}};
\ No newline at end of file
+var _0x464c=['sequelize','STRING'];(function(_0x167d82,_0x29a6c9){var _0x268afe=function(_0xc97fd9){while(--_0xc97fd9){_0x167d82['push'](_0x167d82['shift']());}};_0x268afe(++_0x29a6c9);}(_0x464c,0x180));var _0xc464=function(_0xadd0d2,_0x3bf5b9){_0xadd0d2=_0xadd0d2-0x0;var _0x2d564c=_0x464c[_0xadd0d2];return _0x2d564c;};'use strict';var Sequelize=require(_0xc464('0x0'));module['exports']={'name':{'type':Sequelize[_0xc464('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ec25d04..7dbbfa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3776=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','FreshsalesConfiguration','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','include','findAll','rows','show','params','includeAll','catch','create','body','find','getSubjects','findOne','FreshsalesField','map','getDescriptions','pick','getFields','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv'];(function(_0x49f30e,_0xf28439){var _0x2cafd5=function(_0x581d4c){while(--_0x581d4c){_0x49f30e['push'](_0x49f30e['shift']());}};_0x2cafd5(++_0xf28439);}(_0x3776,0x1ae));var _0x6377=function(_0xafceaf,_0x5c65ad){_0xafceaf=_0xafceaf-0x0;var _0x3684e4=_0x3776[_0xafceaf];return _0x3684e4;};'use strict';var emlformat=require(_0x6377('0x0'));var rimraf=require(_0x6377('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6377('0x2'));var rp=require(_0x6377('0x3'));var moment=require('moment');var BPromise=require(_0x6377('0x4'));var Mustache=require(_0x6377('0x5'));var util=require('util');var path=require(_0x6377('0x6'));var sox=require(_0x6377('0x7'));var csv=require('to-csv');var ejs=require(_0x6377('0x8'));var fs=require('fs');var fs_extra=require(_0x6377('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6377('0xa'));var jsforce=require(_0x6377('0xb'));var deskjs=require(_0x6377('0xc'));var toCsv=require(_0x6377('0xd'));var querystring=require(_0x6377('0xe'));var Papa=require(_0x6377('0xf'));var Redis=require(_0x6377('0x10'));var authService=require(_0x6377('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x6377('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x6377('0x13'));var licenseUtil=require(_0x6377('0x14'));var db=require(_0x6377('0x15'))['db'];function respondWithStatusCode(_0x154ac5,_0x510a8b){_0x510a8b=_0x510a8b||0xcc;return function(_0x50e425){if(_0x50e425){return _0x154ac5[_0x6377('0x16')](_0x510a8b);}return _0x154ac5[_0x6377('0x17')](_0x510a8b)[_0x6377('0x18')]();};}function respondWithResult(_0x3eaae8,_0x1f1663){_0x1f1663=_0x1f1663||0xc8;return function(_0x4c277e){if(_0x4c277e){return _0x3eaae8[_0x6377('0x17')](_0x1f1663)['json'](_0x4c277e);}};}function respondWithFilteredResult(_0x5bacee,_0x43c92d){return function(_0x21f9fa){if(_0x21f9fa){var _0x2ecd9d=typeof _0x43c92d[_0x6377('0x19')]===_0x6377('0x1a')&&typeof _0x43c92d[_0x6377('0x1b')]===_0x6377('0x1a');var _0x39ad93=_0x21f9fa[_0x6377('0x1c')];var _0x50ae8d=_0x2ecd9d?0x0:_0x43c92d[_0x6377('0x19')];var _0xd9d10a=_0x2ecd9d?_0x21f9fa[_0x6377('0x1c')]:_0x43c92d[_0x6377('0x19')]+_0x43c92d[_0x6377('0x1b')];var _0x10aed6;if(_0xd9d10a>=_0x39ad93){_0xd9d10a=_0x39ad93;_0x10aed6=0xc8;}else{_0x10aed6=0xce;}_0x5bacee[_0x6377('0x17')](_0x10aed6);return _0x5bacee[_0x6377('0x1d')](_0x6377('0x1e'),_0x50ae8d+'-'+_0xd9d10a+'/'+_0x39ad93)['json'](_0x21f9fa);}return null;};}function patchUpdates(_0x44dd8b){return function(_0x14d389){try{jsonpatch['apply'](_0x14d389,_0x44dd8b,!![]);}catch(_0x4b86de){return BPromise['reject'](_0x4b86de);}return _0x14d389['save']();};}function saveUpdates(_0x2c26d7,_0x4aba1a){return function(_0x175113){if(_0x175113){return _0x175113[_0x6377('0x1f')](_0x2c26d7)[_0x6377('0x20')](function(_0x1bcfca){return _0x1bcfca;});}return null;};}function removeEntity(_0xaf598,_0xc348ff){return function(_0x24ab8a){if(_0x24ab8a){return _0x24ab8a[_0x6377('0x21')]()['then'](function(){_0xaf598['status'](0xcc)[_0x6377('0x18')]();});}};}function handleEntityNotFound(_0x14937d,_0x1677e1){return function(_0x3ab0b7){if(!_0x3ab0b7){_0x14937d[_0x6377('0x16')](0x194);}return _0x3ab0b7;};}function handleError(_0x4e5bfa,_0x5322c9){_0x5322c9=_0x5322c9||0x1f4;return function(_0x11d01a){logger[_0x6377('0x22')](_0x11d01a[_0x6377('0x23')]);if(_0x11d01a[_0x6377('0x24')]){delete _0x11d01a[_0x6377('0x24')];}_0x4e5bfa[_0x6377('0x17')](_0x5322c9)['send'](_0x11d01a);};}exports['index']=function(_0x5e8baf,_0x113bd0){var _0x272f01={},_0x574d55={},_0x340bc6={'count':0x0,'rows':[]};var _0x2a7bbb=_['map'](db[_0x6377('0x25')][_0x6377('0x26')],function(_0x4cc131){return{'name':_0x4cc131[_0x6377('0x27')],'type':_0x4cc131[_0x6377('0x28')]['key']};});_0x574d55['model']=_['map'](_0x2a7bbb,_0x6377('0x24'));_0x574d55[_0x6377('0x29')]=_[_0x6377('0x2a')](_0x5e8baf[_0x6377('0x29')]);_0x574d55[_0x6377('0x2b')]=_[_0x6377('0x2c')](_0x574d55[_0x6377('0x2d')],_0x574d55[_0x6377('0x29')]);_0x272f01['attributes']=_[_0x6377('0x2c')](_0x574d55[_0x6377('0x2d')],qs[_0x6377('0x2e')](_0x5e8baf[_0x6377('0x29')][_0x6377('0x2e')]));_0x272f01[_0x6377('0x2f')]=_0x272f01[_0x6377('0x2f')][_0x6377('0x30')]?_0x272f01[_0x6377('0x2f')]:_0x574d55[_0x6377('0x2d')];if(!_0x5e8baf[_0x6377('0x29')][_0x6377('0x31')](_0x6377('0x32'))){_0x272f01[_0x6377('0x1b')]=qs[_0x6377('0x1b')](_0x5e8baf[_0x6377('0x29')]['limit']);_0x272f01['offset']=qs[_0x6377('0x19')](_0x5e8baf[_0x6377('0x29')][_0x6377('0x19')]);}_0x272f01[_0x6377('0x33')]=qs[_0x6377('0x34')](_0x5e8baf[_0x6377('0x29')][_0x6377('0x34')]);_0x272f01[_0x6377('0x35')]=qs[_0x6377('0x2b')](_['pick'](_0x5e8baf[_0x6377('0x29')],_0x574d55[_0x6377('0x2b')]),_0x2a7bbb);if(_0x5e8baf[_0x6377('0x29')]['filter']){_0x272f01[_0x6377('0x35')]=_[_0x6377('0x36')](_0x272f01['where'],{'$or':_['map'](_0x2a7bbb,function(_0x1019c4){if(_0x1019c4['type']!=='VIRTUAL'){var _0x8aeae9={};_0x8aeae9[_0x1019c4['name']]={'$like':'%'+_0x5e8baf[_0x6377('0x29')][_0x6377('0x37')]+'%'};return _0x8aeae9;}})});}_0x272f01=_[_0x6377('0x36')]({},_0x272f01,_0x5e8baf[_0x6377('0x38')]);var _0x15280d={'where':_0x272f01[_0x6377('0x35')]};return db[_0x6377('0x25')][_0x6377('0x1c')](_0x15280d)[_0x6377('0x20')](function(_0x405e70){_0x340bc6[_0x6377('0x1c')]=_0x405e70;if(_0x5e8baf[_0x6377('0x29')]['includeAll']){_0x272f01[_0x6377('0x39')]=[{'all':!![]}];}return db[_0x6377('0x25')][_0x6377('0x3a')](_0x272f01);})[_0x6377('0x20')](function(_0x468f8d){_0x340bc6[_0x6377('0x3b')]=_0x468f8d;return _0x340bc6;})['then'](respondWithFilteredResult(_0x113bd0,_0x272f01))['catch'](handleError(_0x113bd0,null));};exports[_0x6377('0x3c')]=function(_0x434ddd,_0x635dd1){var _0x24c238={'raw':![],'where':{'id':_0x434ddd[_0x6377('0x3d')]['id']}},_0x31eee4={};_0x31eee4['model']=_['keys'](db[_0x6377('0x25')][_0x6377('0x26')]);_0x31eee4[_0x6377('0x29')]=_[_0x6377('0x2a')](_0x434ddd[_0x6377('0x29')]);_0x31eee4[_0x6377('0x2b')]=_[_0x6377('0x2c')](_0x31eee4[_0x6377('0x2d')],_0x31eee4['query']);_0x24c238['attributes']=_['intersection'](_0x31eee4[_0x6377('0x2d')],qs[_0x6377('0x2e')](_0x434ddd[_0x6377('0x29')]['fields']));_0x24c238[_0x6377('0x2f')]=_0x24c238[_0x6377('0x2f')][_0x6377('0x30')]?_0x24c238[_0x6377('0x2f')]:_0x31eee4['model'];if(_0x434ddd[_0x6377('0x29')][_0x6377('0x3e')]){_0x24c238[_0x6377('0x39')]=[{'all':!![]}];}_0x24c238=_[_0x6377('0x36')]({},_0x24c238,_0x434ddd['options']);return db['FreshsalesConfiguration']['find'](_0x24c238)[_0x6377('0x20')](handleEntityNotFound(_0x635dd1,null))[_0x6377('0x20')](respondWithResult(_0x635dd1,null))[_0x6377('0x3f')](handleError(_0x635dd1,null));};exports['create']=function(_0x406445,_0x59b222){return db['FreshsalesConfiguration'][_0x6377('0x40')](_0x406445[_0x6377('0x41')],{})[_0x6377('0x20')](respondWithResult(_0x59b222,0xc9))[_0x6377('0x3f')](handleError(_0x59b222,null));};exports['update']=function(_0x431f7c,_0x4dabc7){if(_0x431f7c['body']['id']){delete _0x431f7c[_0x6377('0x41')]['id'];}return db[_0x6377('0x25')][_0x6377('0x42')]({'where':{'id':_0x431f7c['params']['id']}})['then'](handleEntityNotFound(_0x4dabc7,null))['then'](saveUpdates(_0x431f7c['body'],null))[_0x6377('0x20')](respondWithResult(_0x4dabc7,null))[_0x6377('0x3f')](handleError(_0x4dabc7,null));};exports[_0x6377('0x21')]=function(_0x4e24ba,_0x1734e1){return db[_0x6377('0x25')][_0x6377('0x42')]({'where':{'id':_0x4e24ba[_0x6377('0x3d')]['id']}})[_0x6377('0x20')](handleEntityNotFound(_0x1734e1,null))['then'](removeEntity(_0x1734e1,null))[_0x6377('0x3f')](handleError(_0x1734e1,null));};exports[_0x6377('0x43')]=function(_0x4d7374,_0x589079,_0x2bff53){var _0x4e12ee={};var _0x59cb1c={};var _0x5b082f;var _0x99fbc;return db[_0x6377('0x25')][_0x6377('0x44')]({'where':{'id':_0x4d7374[_0x6377('0x3d')]['id']}})[_0x6377('0x20')](handleEntityNotFound(_0x589079,null))['then'](function(_0x231b8f){if(_0x231b8f){_0x5b082f=_0x231b8f;_0x59cb1c[_0x6377('0x2d')]=_[_0x6377('0x2a')](db[_0x6377('0x45')][_0x6377('0x26')]);_0x59cb1c[_0x6377('0x29')]=_[_0x6377('0x2a')](_0x4d7374[_0x6377('0x29')]);_0x59cb1c[_0x6377('0x2b')]=_[_0x6377('0x2c')](_0x59cb1c['model'],_0x59cb1c['query']);_0x4e12ee[_0x6377('0x2f')]=_['intersection'](_0x59cb1c['model'],qs[_0x6377('0x2e')](_0x4d7374[_0x6377('0x29')][_0x6377('0x2e')]));_0x4e12ee[_0x6377('0x2f')]=_0x4e12ee[_0x6377('0x2f')][_0x6377('0x30')]?_0x4e12ee[_0x6377('0x2f')]:_0x59cb1c[_0x6377('0x2d')];_0x4e12ee[_0x6377('0x33')]=qs[_0x6377('0x34')](_0x4d7374[_0x6377('0x29')][_0x6377('0x34')]);_0x4e12ee[_0x6377('0x35')]=qs[_0x6377('0x2b')](_['pick'](_0x4d7374[_0x6377('0x29')],_0x59cb1c[_0x6377('0x2b')]));if(_0x4d7374['query']['filter']){_0x4e12ee[_0x6377('0x35')]=_[_0x6377('0x36')](_0x4e12ee[_0x6377('0x35')],{'$or':_[_0x6377('0x46')](_0x4e12ee[_0x6377('0x2f')],function(_0x18fa4c){var _0xb19026={};_0xb19026[_0x18fa4c]={'$like':'%'+_0x4d7374[_0x6377('0x29')][_0x6377('0x37')]+'%'};return _0xb19026;})});}_0x4e12ee=_[_0x6377('0x36')]({},_0x4e12ee,_0x4d7374[_0x6377('0x38')]);return _0x5b082f['getSubjects'](_0x4e12ee);}})[_0x6377('0x20')](function(_0x1b0a4c){if(_0x1b0a4c){_0x99fbc=_0x1b0a4c['length'];if(!_0x4d7374['query'][_0x6377('0x31')](_0x6377('0x32'))){_0x4e12ee['limit']=qs['limit'](_0x4d7374[_0x6377('0x29')][_0x6377('0x1b')]);_0x4e12ee[_0x6377('0x19')]=qs['offset'](_0x4d7374['query'][_0x6377('0x19')]);}return _0x5b082f[_0x6377('0x43')](_0x4e12ee);}})[_0x6377('0x20')](function(_0x1a5cbe){if(_0x1a5cbe){return _0x1a5cbe?{'count':_0x99fbc,'rows':_0x1a5cbe}:null;}})['then'](respondWithResult(_0x589079,null))[_0x6377('0x3f')](handleError(_0x589079,null));};exports[_0x6377('0x47')]=function(_0x3e9dc8,_0x346c65,_0x2e378d){var _0x3ad2e8={};var _0x483139={};var _0x1830ea;var _0xde165d;return db[_0x6377('0x25')][_0x6377('0x44')]({'where':{'id':_0x3e9dc8[_0x6377('0x3d')]['id']}})[_0x6377('0x20')](handleEntityNotFound(_0x346c65,null))[_0x6377('0x20')](function(_0x3f8565){if(_0x3f8565){_0x1830ea=_0x3f8565;_0x483139[_0x6377('0x2d')]=_[_0x6377('0x2a')](db[_0x6377('0x45')][_0x6377('0x26')]);_0x483139[_0x6377('0x29')]=_['keys'](_0x3e9dc8[_0x6377('0x29')]);_0x483139[_0x6377('0x2b')]=_[_0x6377('0x2c')](_0x483139[_0x6377('0x2d')],_0x483139[_0x6377('0x29')]);_0x3ad2e8['attributes']=_[_0x6377('0x2c')](_0x483139[_0x6377('0x2d')],qs['fields'](_0x3e9dc8[_0x6377('0x29')][_0x6377('0x2e')]));_0x3ad2e8[_0x6377('0x2f')]=_0x3ad2e8[_0x6377('0x2f')][_0x6377('0x30')]?_0x3ad2e8[_0x6377('0x2f')]:_0x483139[_0x6377('0x2d')];_0x3ad2e8[_0x6377('0x33')]=qs[_0x6377('0x34')](_0x3e9dc8[_0x6377('0x29')][_0x6377('0x34')]);_0x3ad2e8['where']=qs['filters'](_[_0x6377('0x48')](_0x3e9dc8[_0x6377('0x29')],_0x483139[_0x6377('0x2b')]));if(_0x3e9dc8[_0x6377('0x29')]['filter']){_0x3ad2e8[_0x6377('0x35')]=_[_0x6377('0x36')](_0x3ad2e8[_0x6377('0x35')],{'$or':_[_0x6377('0x46')](_0x3ad2e8[_0x6377('0x2f')],function(_0x501141){var _0x2c1249={};_0x2c1249[_0x501141]={'$like':'%'+_0x3e9dc8[_0x6377('0x29')]['filter']+'%'};return _0x2c1249;})});}_0x3ad2e8=_[_0x6377('0x36')]({},_0x3ad2e8,_0x3e9dc8[_0x6377('0x38')]);return _0x1830ea['getDescriptions'](_0x3ad2e8);}})[_0x6377('0x20')](function(_0x452780){if(_0x452780){_0xde165d=_0x452780[_0x6377('0x30')];if(!_0x3e9dc8[_0x6377('0x29')][_0x6377('0x31')]('nolimit')){_0x3ad2e8[_0x6377('0x1b')]=qs[_0x6377('0x1b')](_0x3e9dc8[_0x6377('0x29')][_0x6377('0x1b')]);_0x3ad2e8[_0x6377('0x19')]=qs[_0x6377('0x19')](_0x3e9dc8['query']['offset']);}return _0x1830ea[_0x6377('0x47')](_0x3ad2e8);}})['then'](function(_0x4cd718){if(_0x4cd718){return _0x4cd718?{'count':_0xde165d,'rows':_0x4cd718}:null;}})[_0x6377('0x20')](respondWithResult(_0x346c65,null))[_0x6377('0x3f')](handleError(_0x346c65,null));};exports[_0x6377('0x49')]=function(_0x38bd88,_0x131fd3,_0x4544a1){var _0x51eeb5={};var _0xb4b8a1={};var _0x52895a;var _0x3853c4;return db[_0x6377('0x25')]['findOne']({'where':{'id':_0x38bd88['params']['id']}})['then'](handleEntityNotFound(_0x131fd3,null))[_0x6377('0x20')](function(_0x477445){if(_0x477445){_0x52895a=_0x477445;_0xb4b8a1[_0x6377('0x2d')]=_[_0x6377('0x2a')](db['FreshsalesField']['rawAttributes']);_0xb4b8a1[_0x6377('0x29')]=_[_0x6377('0x2a')](_0x38bd88[_0x6377('0x29')]);_0xb4b8a1['filters']=_[_0x6377('0x2c')](_0xb4b8a1[_0x6377('0x2d')],_0xb4b8a1[_0x6377('0x29')]);_0x51eeb5['attributes']=_[_0x6377('0x2c')](_0xb4b8a1[_0x6377('0x2d')],qs['fields'](_0x38bd88[_0x6377('0x29')][_0x6377('0x2e')]));_0x51eeb5['attributes']=_0x51eeb5[_0x6377('0x2f')][_0x6377('0x30')]?_0x51eeb5[_0x6377('0x2f')]:_0xb4b8a1[_0x6377('0x2d')];_0x51eeb5[_0x6377('0x33')]=qs[_0x6377('0x34')](_0x38bd88[_0x6377('0x29')][_0x6377('0x34')]);_0x51eeb5['where']=qs[_0x6377('0x2b')](_[_0x6377('0x48')](_0x38bd88[_0x6377('0x29')],_0xb4b8a1[_0x6377('0x2b')]));if(_0x38bd88[_0x6377('0x29')][_0x6377('0x37')]){_0x51eeb5[_0x6377('0x35')]=_['merge'](_0x51eeb5[_0x6377('0x35')],{'$or':_[_0x6377('0x46')](_0x51eeb5[_0x6377('0x2f')],function(_0x4b43d7){var _0x46b6ee={};_0x46b6ee[_0x4b43d7]={'$like':'%'+_0x38bd88[_0x6377('0x29')]['filter']+'%'};return _0x46b6ee;})});}_0x51eeb5=_[_0x6377('0x36')]({},_0x51eeb5,_0x38bd88[_0x6377('0x38')]);return _0x52895a[_0x6377('0x49')](_0x51eeb5);}})[_0x6377('0x20')](function(_0x13be0c){if(_0x13be0c){_0x3853c4=_0x13be0c[_0x6377('0x30')];if(!_0x38bd88[_0x6377('0x29')]['hasOwnProperty'](_0x6377('0x32'))){_0x51eeb5[_0x6377('0x1b')]=qs[_0x6377('0x1b')](_0x38bd88[_0x6377('0x29')][_0x6377('0x1b')]);_0x51eeb5[_0x6377('0x19')]=qs[_0x6377('0x19')](_0x38bd88[_0x6377('0x29')][_0x6377('0x19')]);}return _0x52895a['getFields'](_0x51eeb5);}})[_0x6377('0x20')](function(_0x44f9d5){if(_0x44f9d5){return _0x44f9d5?{'count':_0x3853c4,'rows':_0x44f9d5}:null;}})[_0x6377('0x20')](respondWithResult(_0x131fd3,null))[_0x6377('0x3f')](handleError(_0x131fd3,null));};
\ No newline at end of file
+var _0x178c=['json','apply','reject','save','update','then','destroy','error','name','map','FreshsalesConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','options','include','rows','catch','show','params','includeAll','merge','find','create','body','getSubjects','FreshsalesField','nolimit','getDescriptions','getFields','findOne','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','offset','count','Content-Range'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x178c,0xc5));var _0xc178=function(_0x1d8687,_0x212ee9){_0x1d8687=_0x1d8687-0x0;var _0x4a4a03=_0x178c[_0x1d8687];return _0x4a4a03;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc178('0x0'));var jsonpatch=require(_0xc178('0x1'));var rp=require(_0xc178('0x2'));var moment=require(_0xc178('0x3'));var BPromise=require(_0xc178('0x4'));var Mustache=require(_0xc178('0x5'));var util=require('util');var path=require(_0xc178('0x6'));var sox=require('sox');var csv=require(_0xc178('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc178('0x8'));var _=require(_0xc178('0x9'));var squel=require(_0xc178('0xa'));var crypto=require(_0xc178('0xb'));var jsforce=require(_0xc178('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc178('0x7'));var querystring=require(_0xc178('0xd'));var Papa=require(_0xc178('0xe'));var Redis=require(_0xc178('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xc178('0x10'));var as=require(_0xc178('0x11'));var hardwareService=require(_0xc178('0x12'));var logger=require('../../config/logger')(_0xc178('0x13'));var utils=require(_0xc178('0x14'));var config=require(_0xc178('0x15'));var licenseUtil=require(_0xc178('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x22837b,_0x49f912){_0x49f912=_0x49f912||0xcc;return function(_0x5b12dc){if(_0x5b12dc){return _0x22837b[_0xc178('0x17')](_0x49f912);}return _0x22837b[_0xc178('0x18')](_0x49f912)[_0xc178('0x19')]();};}function respondWithResult(_0x3349a9,_0x3e3c4c){_0x3e3c4c=_0x3e3c4c||0xc8;return function(_0x1f43ae){if(_0x1f43ae){return _0x3349a9['status'](_0x3e3c4c)['json'](_0x1f43ae);}};}function respondWithFilteredResult(_0x365d56,_0x3218c0){return function(_0x1743fe){if(_0x1743fe){var _0x100ea9=typeof _0x3218c0['offset']===_0xc178('0x1a')&&typeof _0x3218c0[_0xc178('0x1b')]===_0xc178('0x1a');var _0x5f3b72=_0x1743fe['count'];var _0x43fab6=_0x100ea9?0x0:_0x3218c0[_0xc178('0x1c')];var _0x1ca7bf=_0x100ea9?_0x1743fe[_0xc178('0x1d')]:_0x3218c0[_0xc178('0x1c')]+_0x3218c0[_0xc178('0x1b')];var _0x509491;if(_0x1ca7bf>=_0x5f3b72){_0x1ca7bf=_0x5f3b72;_0x509491=0xc8;}else{_0x509491=0xce;}_0x365d56[_0xc178('0x18')](_0x509491);return _0x365d56['set'](_0xc178('0x1e'),_0x43fab6+'-'+_0x1ca7bf+'/'+_0x5f3b72)[_0xc178('0x1f')](_0x1743fe);}return null;};}function patchUpdates(_0x470f48){return function(_0x1481ad){try{jsonpatch[_0xc178('0x20')](_0x1481ad,_0x470f48,!![]);}catch(_0x51b7cf){return BPromise[_0xc178('0x21')](_0x51b7cf);}return _0x1481ad[_0xc178('0x22')]();};}function saveUpdates(_0x2f6a59,_0x5b82c1){return function(_0x95614b){if(_0x95614b){return _0x95614b[_0xc178('0x23')](_0x2f6a59)[_0xc178('0x24')](function(_0x1ac74d){return _0x1ac74d;});}return null;};}function removeEntity(_0x2ffa42,_0x1b4145){return function(_0x369f70){if(_0x369f70){return _0x369f70[_0xc178('0x25')]()['then'](function(){_0x2ffa42[_0xc178('0x18')](0xcc)[_0xc178('0x19')]();});}};}function handleEntityNotFound(_0xd21013,_0x17426e){return function(_0x294b79){if(!_0x294b79){_0xd21013['sendStatus'](0x194);}return _0x294b79;};}function handleError(_0x32a088,_0x32c345){_0x32c345=_0x32c345||0x1f4;return function(_0x54558b){logger[_0xc178('0x26')](_0x54558b['stack']);if(_0x54558b[_0xc178('0x27')]){delete _0x54558b[_0xc178('0x27')];}_0x32a088['status'](_0x32c345)['send'](_0x54558b);};}exports['index']=function(_0x42751f,_0x8d7e89){var _0x1bf0c0={},_0x3bde64={},_0x1a0b11={'count':0x0,'rows':[]};var _0x2f8298=_[_0xc178('0x28')](db[_0xc178('0x29')][_0xc178('0x2a')],function(_0x4333ea){return{'name':_0x4333ea['fieldName'],'type':_0x4333ea[_0xc178('0x2b')][_0xc178('0x2c')]};});_0x3bde64[_0xc178('0x2d')]=_['map'](_0x2f8298,_0xc178('0x27'));_0x3bde64[_0xc178('0x2e')]=_[_0xc178('0x2f')](_0x42751f[_0xc178('0x2e')]);_0x3bde64[_0xc178('0x30')]=_[_0xc178('0x31')](_0x3bde64[_0xc178('0x2d')],_0x3bde64[_0xc178('0x2e')]);_0x1bf0c0[_0xc178('0x32')]=_[_0xc178('0x31')](_0x3bde64['model'],qs[_0xc178('0x33')](_0x42751f[_0xc178('0x2e')][_0xc178('0x33')]));_0x1bf0c0[_0xc178('0x32')]=_0x1bf0c0[_0xc178('0x32')][_0xc178('0x34')]?_0x1bf0c0['attributes']:_0x3bde64[_0xc178('0x2d')];if(!_0x42751f['query'][_0xc178('0x35')]('nolimit')){_0x1bf0c0[_0xc178('0x1b')]=qs[_0xc178('0x1b')](_0x42751f[_0xc178('0x2e')]['limit']);_0x1bf0c0[_0xc178('0x1c')]=qs[_0xc178('0x1c')](_0x42751f[_0xc178('0x2e')][_0xc178('0x1c')]);}_0x1bf0c0[_0xc178('0x36')]=qs[_0xc178('0x37')](_0x42751f[_0xc178('0x2e')][_0xc178('0x37')]);_0x1bf0c0[_0xc178('0x38')]=qs[_0xc178('0x30')](_[_0xc178('0x39')](_0x42751f[_0xc178('0x2e')],_0x3bde64[_0xc178('0x30')]),_0x2f8298);if(_0x42751f['query']['filter']){_0x1bf0c0[_0xc178('0x38')]=_['merge'](_0x1bf0c0[_0xc178('0x38')],{'$or':_['map'](_0x2f8298,function(_0x7178b3){if(_0x7178b3[_0xc178('0x2b')]!=='VIRTUAL'){var _0x5dc133={};_0x5dc133[_0x7178b3[_0xc178('0x27')]]={'$like':'%'+_0x42751f[_0xc178('0x2e')][_0xc178('0x3a')]+'%'};return _0x5dc133;}})});}_0x1bf0c0=_['merge']({},_0x1bf0c0,_0x42751f[_0xc178('0x3b')]);var _0x4fe51a={'where':_0x1bf0c0[_0xc178('0x38')]};return db[_0xc178('0x29')][_0xc178('0x1d')](_0x4fe51a)[_0xc178('0x24')](function(_0x301310){_0x1a0b11[_0xc178('0x1d')]=_0x301310;if(_0x42751f[_0xc178('0x2e')]['includeAll']){_0x1bf0c0[_0xc178('0x3c')]=[{'all':!![]}];}return db[_0xc178('0x29')]['findAll'](_0x1bf0c0);})[_0xc178('0x24')](function(_0x4ed885){_0x1a0b11[_0xc178('0x3d')]=_0x4ed885;return _0x1a0b11;})[_0xc178('0x24')](respondWithFilteredResult(_0x8d7e89,_0x1bf0c0))[_0xc178('0x3e')](handleError(_0x8d7e89,null));};exports[_0xc178('0x3f')]=function(_0x4fcd82,_0x3d7b5c){var _0x5e3711={'raw':![],'where':{'id':_0x4fcd82[_0xc178('0x40')]['id']}},_0x5e4efe={};_0x5e4efe[_0xc178('0x2d')]=_[_0xc178('0x2f')](db[_0xc178('0x29')][_0xc178('0x2a')]);_0x5e4efe['query']=_[_0xc178('0x2f')](_0x4fcd82[_0xc178('0x2e')]);_0x5e4efe['filters']=_[_0xc178('0x31')](_0x5e4efe['model'],_0x5e4efe['query']);_0x5e3711[_0xc178('0x32')]=_['intersection'](_0x5e4efe[_0xc178('0x2d')],qs['fields'](_0x4fcd82[_0xc178('0x2e')][_0xc178('0x33')]));_0x5e3711[_0xc178('0x32')]=_0x5e3711['attributes']['length']?_0x5e3711[_0xc178('0x32')]:_0x5e4efe['model'];if(_0x4fcd82['query'][_0xc178('0x41')]){_0x5e3711[_0xc178('0x3c')]=[{'all':!![]}];}_0x5e3711=_[_0xc178('0x42')]({},_0x5e3711,_0x4fcd82[_0xc178('0x3b')]);return db['FreshsalesConfiguration'][_0xc178('0x43')](_0x5e3711)[_0xc178('0x24')](handleEntityNotFound(_0x3d7b5c,null))['then'](respondWithResult(_0x3d7b5c,null))[_0xc178('0x3e')](handleError(_0x3d7b5c,null));};exports[_0xc178('0x44')]=function(_0x17a6bc,_0x1b3db1){return db[_0xc178('0x29')][_0xc178('0x44')](_0x17a6bc[_0xc178('0x45')],{})[_0xc178('0x24')](respondWithResult(_0x1b3db1,0xc9))[_0xc178('0x3e')](handleError(_0x1b3db1,null));};exports['update']=function(_0x1e031a,_0x4424ae){if(_0x1e031a['body']['id']){delete _0x1e031a[_0xc178('0x45')]['id'];}return db['FreshsalesConfiguration'][_0xc178('0x43')]({'where':{'id':_0x1e031a[_0xc178('0x40')]['id']}})[_0xc178('0x24')](handleEntityNotFound(_0x4424ae,null))[_0xc178('0x24')](saveUpdates(_0x1e031a[_0xc178('0x45')],null))[_0xc178('0x24')](respondWithResult(_0x4424ae,null))[_0xc178('0x3e')](handleError(_0x4424ae,null));};exports['destroy']=function(_0x1ff8df,_0x68dd10){return db[_0xc178('0x29')][_0xc178('0x43')]({'where':{'id':_0x1ff8df['params']['id']}})[_0xc178('0x24')](handleEntityNotFound(_0x68dd10,null))[_0xc178('0x24')](removeEntity(_0x68dd10,null))[_0xc178('0x3e')](handleError(_0x68dd10,null));};exports[_0xc178('0x46')]=function(_0x460b17,_0x1f443b,_0x1cccba){var _0x31ad75={};var _0x5ad4db={};var _0x3a0a6c;var _0x5482e9;return db[_0xc178('0x29')]['findOne']({'where':{'id':_0x460b17[_0xc178('0x40')]['id']}})['then'](handleEntityNotFound(_0x1f443b,null))[_0xc178('0x24')](function(_0x9f4fdc){if(_0x9f4fdc){_0x3a0a6c=_0x9f4fdc;_0x5ad4db[_0xc178('0x2d')]=_[_0xc178('0x2f')](db[_0xc178('0x47')][_0xc178('0x2a')]);_0x5ad4db[_0xc178('0x2e')]=_[_0xc178('0x2f')](_0x460b17[_0xc178('0x2e')]);_0x5ad4db[_0xc178('0x30')]=_[_0xc178('0x31')](_0x5ad4db['model'],_0x5ad4db[_0xc178('0x2e')]);_0x31ad75[_0xc178('0x32')]=_[_0xc178('0x31')](_0x5ad4db[_0xc178('0x2d')],qs[_0xc178('0x33')](_0x460b17[_0xc178('0x2e')][_0xc178('0x33')]));_0x31ad75[_0xc178('0x32')]=_0x31ad75[_0xc178('0x32')][_0xc178('0x34')]?_0x31ad75['attributes']:_0x5ad4db[_0xc178('0x2d')];_0x31ad75[_0xc178('0x36')]=qs['sort'](_0x460b17[_0xc178('0x2e')]['sort']);_0x31ad75['where']=qs[_0xc178('0x30')](_[_0xc178('0x39')](_0x460b17['query'],_0x5ad4db[_0xc178('0x30')]));if(_0x460b17[_0xc178('0x2e')][_0xc178('0x3a')]){_0x31ad75[_0xc178('0x38')]=_[_0xc178('0x42')](_0x31ad75[_0xc178('0x38')],{'$or':_[_0xc178('0x28')](_0x31ad75[_0xc178('0x32')],function(_0x1758f5){var _0x375369={};_0x375369[_0x1758f5]={'$like':'%'+_0x460b17[_0xc178('0x2e')][_0xc178('0x3a')]+'%'};return _0x375369;})});}_0x31ad75=_[_0xc178('0x42')]({},_0x31ad75,_0x460b17[_0xc178('0x3b')]);return _0x3a0a6c[_0xc178('0x46')](_0x31ad75);}})[_0xc178('0x24')](function(_0x319e26){if(_0x319e26){_0x5482e9=_0x319e26[_0xc178('0x34')];if(!_0x460b17['query'][_0xc178('0x35')](_0xc178('0x48'))){_0x31ad75[_0xc178('0x1b')]=qs[_0xc178('0x1b')](_0x460b17['query'][_0xc178('0x1b')]);_0x31ad75[_0xc178('0x1c')]=qs['offset'](_0x460b17[_0xc178('0x2e')]['offset']);}return _0x3a0a6c[_0xc178('0x46')](_0x31ad75);}})['then'](function(_0x25ffcc){if(_0x25ffcc){return _0x25ffcc?{'count':_0x5482e9,'rows':_0x25ffcc}:null;}})[_0xc178('0x24')](respondWithResult(_0x1f443b,null))[_0xc178('0x3e')](handleError(_0x1f443b,null));};exports[_0xc178('0x49')]=function(_0xdab24a,_0x4c5a71,_0x3d0cac){var _0x2af8f0={};var _0x27d08a={};var _0x47fb4b;var _0x35ca14;return db[_0xc178('0x29')]['findOne']({'where':{'id':_0xdab24a[_0xc178('0x40')]['id']}})[_0xc178('0x24')](handleEntityNotFound(_0x4c5a71,null))[_0xc178('0x24')](function(_0x5c340c){if(_0x5c340c){_0x47fb4b=_0x5c340c;_0x27d08a[_0xc178('0x2d')]=_[_0xc178('0x2f')](db[_0xc178('0x47')][_0xc178('0x2a')]);_0x27d08a['query']=_['keys'](_0xdab24a['query']);_0x27d08a[_0xc178('0x30')]=_[_0xc178('0x31')](_0x27d08a[_0xc178('0x2d')],_0x27d08a[_0xc178('0x2e')]);_0x2af8f0['attributes']=_[_0xc178('0x31')](_0x27d08a[_0xc178('0x2d')],qs[_0xc178('0x33')](_0xdab24a['query']['fields']));_0x2af8f0[_0xc178('0x32')]=_0x2af8f0[_0xc178('0x32')][_0xc178('0x34')]?_0x2af8f0[_0xc178('0x32')]:_0x27d08a['model'];_0x2af8f0[_0xc178('0x36')]=qs[_0xc178('0x37')](_0xdab24a[_0xc178('0x2e')][_0xc178('0x37')]);_0x2af8f0[_0xc178('0x38')]=qs[_0xc178('0x30')](_[_0xc178('0x39')](_0xdab24a['query'],_0x27d08a[_0xc178('0x30')]));if(_0xdab24a[_0xc178('0x2e')]['filter']){_0x2af8f0[_0xc178('0x38')]=_[_0xc178('0x42')](_0x2af8f0['where'],{'$or':_['map'](_0x2af8f0[_0xc178('0x32')],function(_0x51e8fb){var _0x5eb43d={};_0x5eb43d[_0x51e8fb]={'$like':'%'+_0xdab24a[_0xc178('0x2e')]['filter']+'%'};return _0x5eb43d;})});}_0x2af8f0=_[_0xc178('0x42')]({},_0x2af8f0,_0xdab24a[_0xc178('0x3b')]);return _0x47fb4b['getDescriptions'](_0x2af8f0);}})[_0xc178('0x24')](function(_0x38877d){if(_0x38877d){_0x35ca14=_0x38877d['length'];if(!_0xdab24a['query'][_0xc178('0x35')](_0xc178('0x48'))){_0x2af8f0[_0xc178('0x1b')]=qs[_0xc178('0x1b')](_0xdab24a[_0xc178('0x2e')][_0xc178('0x1b')]);_0x2af8f0[_0xc178('0x1c')]=qs[_0xc178('0x1c')](_0xdab24a[_0xc178('0x2e')][_0xc178('0x1c')]);}return _0x47fb4b[_0xc178('0x49')](_0x2af8f0);}})[_0xc178('0x24')](function(_0x54471e){if(_0x54471e){return _0x54471e?{'count':_0x35ca14,'rows':_0x54471e}:null;}})[_0xc178('0x24')](respondWithResult(_0x4c5a71,null))[_0xc178('0x3e')](handleError(_0x4c5a71,null));};exports[_0xc178('0x4a')]=function(_0x2d5a29,_0x3fe784,_0x5d2ee5){var _0x473c07={};var _0x417ca2={};var _0x3816de;var _0x51ef85;return db['FreshsalesConfiguration'][_0xc178('0x4b')]({'where':{'id':_0x2d5a29[_0xc178('0x40')]['id']}})[_0xc178('0x24')](handleEntityNotFound(_0x3fe784,null))[_0xc178('0x24')](function(_0x110a82){if(_0x110a82){_0x3816de=_0x110a82;_0x417ca2[_0xc178('0x2d')]=_[_0xc178('0x2f')](db['FreshsalesField'][_0xc178('0x2a')]);_0x417ca2[_0xc178('0x2e')]=_[_0xc178('0x2f')](_0x2d5a29[_0xc178('0x2e')]);_0x417ca2[_0xc178('0x30')]=_['intersection'](_0x417ca2['model'],_0x417ca2['query']);_0x473c07[_0xc178('0x32')]=_[_0xc178('0x31')](_0x417ca2[_0xc178('0x2d')],qs[_0xc178('0x33')](_0x2d5a29['query']['fields']));_0x473c07[_0xc178('0x32')]=_0x473c07['attributes'][_0xc178('0x34')]?_0x473c07[_0xc178('0x32')]:_0x417ca2['model'];_0x473c07['order']=qs[_0xc178('0x37')](_0x2d5a29[_0xc178('0x2e')][_0xc178('0x37')]);_0x473c07[_0xc178('0x38')]=qs[_0xc178('0x30')](_[_0xc178('0x39')](_0x2d5a29[_0xc178('0x2e')],_0x417ca2[_0xc178('0x30')]));if(_0x2d5a29[_0xc178('0x2e')][_0xc178('0x3a')]){_0x473c07[_0xc178('0x38')]=_[_0xc178('0x42')](_0x473c07[_0xc178('0x38')],{'$or':_['map'](_0x473c07[_0xc178('0x32')],function(_0x3a51bd){var _0x210b24={};_0x210b24[_0x3a51bd]={'$like':'%'+_0x2d5a29[_0xc178('0x2e')][_0xc178('0x3a')]+'%'};return _0x210b24;})});}_0x473c07=_[_0xc178('0x42')]({},_0x473c07,_0x2d5a29['options']);return _0x3816de[_0xc178('0x4a')](_0x473c07);}})[_0xc178('0x24')](function(_0x3c37fd){if(_0x3c37fd){_0x51ef85=_0x3c37fd[_0xc178('0x34')];if(!_0x2d5a29['query']['hasOwnProperty']('nolimit')){_0x473c07[_0xc178('0x1b')]=qs[_0xc178('0x1b')](_0x2d5a29[_0xc178('0x2e')][_0xc178('0x1b')]);_0x473c07[_0xc178('0x1c')]=qs[_0xc178('0x1c')](_0x2d5a29[_0xc178('0x2e')][_0xc178('0x1c')]);}return _0x3816de['getFields'](_0x473c07);}})['then'](function(_0x52bcf3){if(_0x52bcf3){return _0x52bcf3?{'count':_0x51ef85,'rows':_0x52bcf3}:null;}})[_0xc178('0x24')](respondWithResult(_0x3fe784,null))[_0xc178('0x3e')](handleError(_0x3fe784,null));};
\ No newline at end of file
index 219d492..b0dfc4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6f6=['rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration','util','moment','request-promise','path'];(function(_0x354a05,_0x17c82f){var _0x2749d9=function(_0xf89523){while(--_0xf89523){_0x354a05['push'](_0x354a05['shift']());}};_0x2749d9(++_0x17c82f);}(_0xc6f6,0x132));var _0x6c6f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc6f6[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x6c6f('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x6c6f('0x1'));var BPromise=require('bluebird');var rp=require(_0x6c6f('0x2'));var fs=require('fs');var path=require(_0x6c6f('0x3'));var rimraf=require(_0x6c6f('0x4'));var config=require(_0x6c6f('0x5'));var attributes=require(_0x6c6f('0x6'));module[_0x6c6f('0x7')]=function(_0x407532,_0x1ceeb8){return _0x407532[_0x6c6f('0x8')](_0x6c6f('0x9'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb8ff=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','FreshsalesConfiguration','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb8ff,0x113));var _0xfb8f=function(_0x38290d,_0x4d3acb){_0x38290d=_0x38290d-0x0;var _0x261e60=_0xb8ff[_0x38290d];return _0x261e60;};'use strict';var _=require(_0xfb8f('0x0'));var util=require('util');var logger=require(_0xfb8f('0x1'))(_0xfb8f('0x2'));var moment=require(_0xfb8f('0x3'));var BPromise=require(_0xfb8f('0x4'));var rp=require(_0xfb8f('0x5'));var fs=require('fs');var path=require(_0xfb8f('0x6'));var rimraf=require(_0xfb8f('0x7'));var config=require(_0xfb8f('0x8'));var attributes=require(_0xfb8f('0x9'));module[_0xfb8f('0xa')]=function(_0x5e2073,_0x13f7c5){return _0x5e2073['define'](_0xfb8f('0xb'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a2e914a..16ae8dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddb6=['jayson/promise','client','http','request','then','FreshsalesConfiguration,\x20%s,\x20%s','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x1ad07b,_0x551d55){var _0x2c447f=function(_0x43340b){while(--_0x43340b){_0x1ad07b['push'](_0x1ad07b['shift']());}};_0x2c447f(++_0x551d55);}(_0xddb6,0xf3));var _0x6ddb=function(_0x15e6c9,_0x486d59){_0x15e6c9=_0x15e6c9-0x0;var _0x506466=_0xddb6[_0x15e6c9];return _0x506466;};'use strict';var _=require(_0x6ddb('0x0'));var util=require(_0x6ddb('0x1'));var moment=require(_0x6ddb('0x2'));var BPromise=require(_0x6ddb('0x3'));var rs=require(_0x6ddb('0x4'));var fs=require('fs');var Redis=require(_0x6ddb('0x5'));var db=require(_0x6ddb('0x6'))['db'];var utils=require(_0x6ddb('0x7'));var logger=require('../../config/logger')(_0x6ddb('0x8'));var config=require(_0x6ddb('0x9'));var jayson=require(_0x6ddb('0xa'));var client=jayson[_0x6ddb('0xb')][_0x6ddb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1fbcf7,_0xbc5939,_0x5ae0a6){return new BPromise(function(_0x9f9f9b,_0x49cc55){return client[_0x6ddb('0xd')](_0x1fbcf7,_0x5ae0a6)[_0x6ddb('0xe')](function(_0x28f70d){logger['info'](_0x6ddb('0xf'),_0xbc5939,'request\x20sent');logger[_0x6ddb('0x10')](_0x6ddb('0x11'),_0xbc5939,_0x6ddb('0x12'),JSON['stringify'](_0x28f70d));if(_0x28f70d[_0x6ddb('0x13')]){if(_0x28f70d[_0x6ddb('0x13')]['code']===0x1f4){logger[_0x6ddb('0x13')](_0x6ddb('0xf'),_0xbc5939,_0x28f70d[_0x6ddb('0x13')][_0x6ddb('0x14')]);return _0x49cc55(_0x28f70d[_0x6ddb('0x13')][_0x6ddb('0x14')]);}logger[_0x6ddb('0x13')]('FreshsalesConfiguration,\x20%s,\x20%s',_0xbc5939,_0x28f70d[_0x6ddb('0x13')][_0x6ddb('0x14')]);return _0x9f9f9b(_0x28f70d[_0x6ddb('0x13')][_0x6ddb('0x14')]);}else{logger['info'](_0x6ddb('0xf'),_0xbc5939,_0x6ddb('0x12'));_0x9f9f9b(_0x28f70d[_0x6ddb('0x15')][_0x6ddb('0x14')]);}})[_0x6ddb('0x16')](function(_0x3d014a){logger[_0x6ddb('0x13')](_0x6ddb('0xf'),_0xbc5939,_0x3d014a);_0x49cc55(_0x3d014a);});});}
\ No newline at end of file
+var _0xb14f=['FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','FreshsalesConfiguration,\x20%s,\x20%s','debug'];(function(_0x2d0d0a,_0x5b2e64){var _0x53dc04=function(_0x326927){while(--_0x326927){_0x2d0d0a['push'](_0x2d0d0a['shift']());}};_0x53dc04(++_0x5b2e64);}(_0xb14f,0xce));var _0xfb14=function(_0x44ed25,_0xdd3524){_0x44ed25=_0x44ed25-0x0;var _0x2ff43d=_0xb14f[_0x44ed25];return _0x2ff43d;};'use strict';var _=require(_0xfb14('0x0'));var util=require('util');var moment=require(_0xfb14('0x1'));var BPromise=require('bluebird');var rs=require(_0xfb14('0x2'));var fs=require('fs');var Redis=require(_0xfb14('0x3'));var db=require(_0xfb14('0x4'))['db'];var utils=require(_0xfb14('0x5'));var logger=require(_0xfb14('0x6'))('rpc');var config=require(_0xfb14('0x7'));var jayson=require(_0xfb14('0x8'));var client=jayson[_0xfb14('0x9')][_0xfb14('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x46208b,_0x36834e,_0x466287){return new BPromise(function(_0x29b54a,_0x24f55d){return client['request'](_0x46208b,_0x466287)['then'](function(_0x574b51){logger[_0xfb14('0xb')](_0xfb14('0xc'),_0x36834e,'request\x20sent');logger[_0xfb14('0xd')](_0xfb14('0xe'),_0x36834e,_0xfb14('0xf'),JSON[_0xfb14('0x10')](_0x574b51));if(_0x574b51[_0xfb14('0x11')]){if(_0x574b51[_0xfb14('0x11')]['code']===0x1f4){logger['error'](_0xfb14('0xc'),_0x36834e,_0x574b51['error'][_0xfb14('0x12')]);return _0x24f55d(_0x574b51[_0xfb14('0x11')]['message']);}logger['error'](_0xfb14('0xc'),_0x36834e,_0x574b51[_0xfb14('0x11')][_0xfb14('0x12')]);return _0x29b54a(_0x574b51[_0xfb14('0x11')][_0xfb14('0x12')]);}else{logger[_0xfb14('0xb')](_0xfb14('0xc'),_0x36834e,'request\x20sent');_0x29b54a(_0x574b51[_0xfb14('0x13')]['message']);}})['catch'](function(_0x567134){logger[_0xfb14('0x11')](_0xfb14('0xc'),_0x36834e,_0x567134);_0x24f55d(_0x567134);});});}
\ No newline at end of file
index f60d937..6dcfc05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12c9=['get','/:id','isAuthenticated','show','put','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','index'];(function(_0x4c920a,_0x2e8b52){var _0xf1b9ad=function(_0x2b1bad){while(--_0x2b1bad){_0x4c920a['push'](_0x4c920a['shift']());}};_0xf1b9ad(++_0x2e8b52);}(_0x12c9,0x1c9));var _0x912c=function(_0x12f427,_0x2c1e27){_0x12f427=_0x12f427-0x0;var _0x174883=_0x12c9[_0x12f427];return _0x174883;};'use strict';var multer=require(_0x912c('0x0'));var util=require(_0x912c('0x1'));var path=require(_0x912c('0x2'));var timeout=require(_0x912c('0x3'));var express=require(_0x912c('0x4'));var router=express['Router']();var fs_extra=require(_0x912c('0x5'));var auth=require(_0x912c('0x6'));var interaction=require(_0x912c('0x7'));var config=require(_0x912c('0x8'));var controller=require(_0x912c('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x912c('0xa')]);router[_0x912c('0xb')](_0x912c('0xc'),auth[_0x912c('0xd')](),controller[_0x912c('0xe')]);router['post']('/',auth[_0x912c('0xd')](),controller['create']);router[_0x912c('0xf')]('/:id',auth[_0x912c('0xd')](),controller['update']);router[_0x912c('0x10')]('/:id',auth[_0x912c('0xd')](),controller[_0x912c('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x9ff4=['/:id','post','update','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index'];(function(_0x3f6af9,_0x553094){var _0x6cc311=function(_0x11a9a4){while(--_0x11a9a4){_0x3f6af9['push'](_0x3f6af9['shift']());}};_0x6cc311(++_0x553094);}(_0x9ff4,0x196));var _0x49ff=function(_0x12eb8a,_0x44eae4){_0x12eb8a=_0x12eb8a-0x0;var _0x1addec=_0x9ff4[_0x12eb8a];return _0x1addec;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x49ff('0x0'));var express=require(_0x49ff('0x1'));var router=express[_0x49ff('0x2')]();var fs_extra=require(_0x49ff('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x49ff('0x4'));var config=require(_0x49ff('0x5'));var controller=require(_0x49ff('0x6'));router[_0x49ff('0x7')]('/',auth[_0x49ff('0x8')](),controller[_0x49ff('0x9')]);router[_0x49ff('0x7')](_0x49ff('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x49ff('0xb')]('/',auth[_0x49ff('0x8')](),controller['create']);router['put'](_0x49ff('0xa'),auth[_0x49ff('0x8')](),controller[_0x49ff('0xc')]);router[_0x49ff('0xd')](_0x49ff('0xa'),auth[_0x49ff('0x8')](),controller[_0x49ff('0xe')]);module[_0x49ff('0xf')]=router;
\ No newline at end of file
index 1a0850f..936c54a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ed=['exports','ENUM','string','variable','customVariable','STRING','BOOLEAN','sequelize'];(function(_0x2e5431,_0x1a1fdd){var _0xff49a8=function(_0x338e7d){while(--_0x338e7d){_0x2e5431['push'](_0x2e5431['shift']());}};_0xff49a8(++_0x1a1fdd);}(_0x04ed,0x9f));var _0xd04e=function(_0x4dd1b3,_0x4ec057){_0x4dd1b3=_0x4dd1b3-0x0;var _0x3495af=_0x04ed[_0x4dd1b3];return _0x3495af;};'use strict';var Sequelize=require(_0xd04e('0x0'));module[_0xd04e('0x1')]={'type':{'type':Sequelize[_0xd04e('0x2')](_0xd04e('0x3'),_0xd04e('0x4'),_0xd04e('0x5'),'keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xd04e('0x2')](_0xd04e('0x3'),_0xd04e('0x4'),_0xd04e('0x5'))},'keyContent':{'type':Sequelize[_0xd04e('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xd04e('0x6')]},'customField':{'type':Sequelize[_0xd04e('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd04e('0x6')]}};
\ No newline at end of file
+var _0x346a=['keyValue','picklist','STRING','exports','ENUM','string','variable','customVariable'];(function(_0x343254,_0xa1ada9){var _0x4faf4b=function(_0x38677d){while(--_0x38677d){_0x343254['push'](_0x343254['shift']());}};_0x4faf4b(++_0xa1ada9);}(_0x346a,0x173));var _0xa346=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x346a[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require('sequelize');module[_0xa346('0x0')]={'type':{'type':Sequelize[_0xa346('0x1')](_0xa346('0x2'),_0xa346('0x3'),_0xa346('0x4'),_0xa346('0x5'),_0xa346('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xa346('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xa346('0x1')](_0xa346('0x2'),'variable',_0xa346('0x4'))},'keyContent':{'type':Sequelize[_0xa346('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xa346('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cf672c9..f98cedc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x556f=['includeAll','include','findAll','rows','show','params','keys','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','destroy','error','stack','name','send','index','FreshsalesField','rawAttributes','fieldName','type','map','query','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options'];(function(_0x15a340,_0x4a4b49){var _0x376ff3=function(_0x5ddcc2){while(--_0x5ddcc2){_0x15a340['push'](_0x15a340['shift']());}};_0x376ff3(++_0x4a4b49);}(_0x556f,0xa5));var _0xf556=function(_0x32ceaf,_0x10a169){_0x32ceaf=_0x32ceaf-0x0;var _0xe2cd91=_0x556f[_0x32ceaf];return _0xe2cd91;};'use strict';var emlformat=require(_0xf556('0x0'));var rimraf=require(_0xf556('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf556('0x2'));var rp=require(_0xf556('0x3'));var moment=require(_0xf556('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf556('0x5'));var util=require(_0xf556('0x6'));var path=require(_0xf556('0x7'));var sox=require('sox');var csv=require(_0xf556('0x8'));var ejs=require(_0xf556('0x9'));var fs=require('fs');var fs_extra=require(_0xf556('0xa'));var _=require(_0xf556('0xb'));var squel=require(_0xf556('0xc'));var crypto=require('crypto');var jsforce=require(_0xf556('0xd'));var deskjs=require(_0xf556('0xe'));var toCsv=require(_0xf556('0x8'));var querystring=require(_0xf556('0xf'));var Papa=require(_0xf556('0x10'));var Redis=require(_0xf556('0x11'));var authService=require(_0xf556('0x12'));var qs=require(_0xf556('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf556('0x14'));var logger=require(_0xf556('0x15'))('api');var utils=require(_0xf556('0x16'));var config=require(_0xf556('0x17'));var licenseUtil=require(_0xf556('0x18'));var db=require(_0xf556('0x19'))['db'];function respondWithStatusCode(_0x1c6ddd,_0x221eb6){_0x221eb6=_0x221eb6||0xcc;return function(_0x2a974b){if(_0x2a974b){return _0x1c6ddd[_0xf556('0x1a')](_0x221eb6);}return _0x1c6ddd[_0xf556('0x1b')](_0x221eb6)[_0xf556('0x1c')]();};}function respondWithResult(_0x5e7366,_0x2c8d65){_0x2c8d65=_0x2c8d65||0xc8;return function(_0x216ef3){if(_0x216ef3){return _0x5e7366[_0xf556('0x1b')](_0x2c8d65)[_0xf556('0x1d')](_0x216ef3);}};}function respondWithFilteredResult(_0x267185,_0xa80501){return function(_0x66abf5){if(_0x66abf5){var _0x1c7a5f=typeof _0xa80501[_0xf556('0x1e')]===_0xf556('0x1f')&&typeof _0xa80501['limit']===_0xf556('0x1f');var _0x9f8dff=_0x66abf5['count'];var _0x433c69=_0x1c7a5f?0x0:_0xa80501[_0xf556('0x1e')];var _0x3ded08=_0x1c7a5f?_0x66abf5[_0xf556('0x20')]:_0xa80501['offset']+_0xa80501[_0xf556('0x21')];var _0x2dd938;if(_0x3ded08>=_0x9f8dff){_0x3ded08=_0x9f8dff;_0x2dd938=0xc8;}else{_0x2dd938=0xce;}_0x267185[_0xf556('0x1b')](_0x2dd938);return _0x267185[_0xf556('0x22')]('Content-Range',_0x433c69+'-'+_0x3ded08+'/'+_0x9f8dff)[_0xf556('0x1d')](_0x66abf5);}return null;};}function patchUpdates(_0x31df7c){return function(_0x618be4){try{jsonpatch[_0xf556('0x23')](_0x618be4,_0x31df7c,!![]);}catch(_0x1862d6){return BPromise['reject'](_0x1862d6);}return _0x618be4[_0xf556('0x24')]();};}function saveUpdates(_0x262423,_0x4a105b){return function(_0x142e43){if(_0x142e43){return _0x142e43[_0xf556('0x25')](_0x262423)[_0xf556('0x26')](function(_0x44576d){return _0x44576d;});}return null;};}function removeEntity(_0x270f86,_0x3f39fa){return function(_0x3fe261){if(_0x3fe261){return _0x3fe261[_0xf556('0x27')]()['then'](function(){_0x270f86[_0xf556('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45449f,_0x25ecbd){return function(_0x1e9383){if(!_0x1e9383){_0x45449f[_0xf556('0x1a')](0x194);}return _0x1e9383;};}function handleError(_0x45c4ea,_0x34c5b6){_0x34c5b6=_0x34c5b6||0x1f4;return function(_0x49affa){logger[_0xf556('0x28')](_0x49affa[_0xf556('0x29')]);if(_0x49affa['name']){delete _0x49affa[_0xf556('0x2a')];}_0x45c4ea[_0xf556('0x1b')](_0x34c5b6)[_0xf556('0x2b')](_0x49affa);};}exports[_0xf556('0x2c')]=function(_0x4d9705,_0x56b5bc){var _0x3478f2={},_0x399c51={},_0x2d9728={'count':0x0,'rows':[]};var _0x45bf50=_['map'](db[_0xf556('0x2d')][_0xf556('0x2e')],function(_0x4b45d1){return{'name':_0x4b45d1[_0xf556('0x2f')],'type':_0x4b45d1[_0xf556('0x30')]['key']};});_0x399c51['model']=_[_0xf556('0x31')](_0x45bf50,_0xf556('0x2a'));_0x399c51[_0xf556('0x32')]=_['keys'](_0x4d9705[_0xf556('0x32')]);_0x399c51['filters']=_[_0xf556('0x33')](_0x399c51['model'],_0x399c51[_0xf556('0x32')]);_0x3478f2[_0xf556('0x34')]=_[_0xf556('0x33')](_0x399c51[_0xf556('0x35')],qs['fields'](_0x4d9705[_0xf556('0x32')][_0xf556('0x36')]));_0x3478f2['attributes']=_0x3478f2[_0xf556('0x34')][_0xf556('0x37')]?_0x3478f2[_0xf556('0x34')]:_0x399c51['model'];if(!_0x4d9705[_0xf556('0x32')][_0xf556('0x38')]('nolimit')){_0x3478f2[_0xf556('0x21')]=qs[_0xf556('0x21')](_0x4d9705[_0xf556('0x32')]['limit']);_0x3478f2[_0xf556('0x1e')]=qs[_0xf556('0x1e')](_0x4d9705[_0xf556('0x32')][_0xf556('0x1e')]);}_0x3478f2[_0xf556('0x39')]=qs[_0xf556('0x3a')](_0x4d9705[_0xf556('0x32')][_0xf556('0x3a')]);_0x3478f2[_0xf556('0x3b')]=qs[_0xf556('0x3c')](_[_0xf556('0x3d')](_0x4d9705[_0xf556('0x32')],_0x399c51['filters']),_0x45bf50);if(_0x4d9705[_0xf556('0x32')][_0xf556('0x3e')]){_0x3478f2[_0xf556('0x3b')]=_[_0xf556('0x3f')](_0x3478f2[_0xf556('0x3b')],{'$or':_[_0xf556('0x31')](_0x45bf50,function(_0x5e3108){if(_0x5e3108[_0xf556('0x30')]!==_0xf556('0x40')){var _0x511e2d={};_0x511e2d[_0x5e3108['name']]={'$like':'%'+_0x4d9705[_0xf556('0x32')][_0xf556('0x3e')]+'%'};return _0x511e2d;}})});}_0x3478f2=_[_0xf556('0x3f')]({},_0x3478f2,_0x4d9705[_0xf556('0x41')]);var _0x39bfea={'where':_0x3478f2[_0xf556('0x3b')]};return db[_0xf556('0x2d')][_0xf556('0x20')](_0x39bfea)[_0xf556('0x26')](function(_0x2385c2){_0x2d9728[_0xf556('0x20')]=_0x2385c2;if(_0x4d9705[_0xf556('0x32')][_0xf556('0x42')]){_0x3478f2[_0xf556('0x43')]=[{'all':!![]}];}return db[_0xf556('0x2d')][_0xf556('0x44')](_0x3478f2);})[_0xf556('0x26')](function(_0x4eb5ef){_0x2d9728[_0xf556('0x45')]=_0x4eb5ef;return _0x2d9728;})[_0xf556('0x26')](respondWithFilteredResult(_0x56b5bc,_0x3478f2))['catch'](handleError(_0x56b5bc,null));};exports[_0xf556('0x46')]=function(_0x11359e,_0x532288){var _0x17e5ed={'raw':!![],'where':{'id':_0x11359e[_0xf556('0x47')]['id']}},_0x1ae7aa={};_0x1ae7aa[_0xf556('0x35')]=_[_0xf556('0x48')](db[_0xf556('0x2d')]['rawAttributes']);_0x1ae7aa[_0xf556('0x32')]=_[_0xf556('0x48')](_0x11359e[_0xf556('0x32')]);_0x1ae7aa['filters']=_['intersection'](_0x1ae7aa[_0xf556('0x35')],_0x1ae7aa[_0xf556('0x32')]);_0x17e5ed[_0xf556('0x34')]=_[_0xf556('0x33')](_0x1ae7aa[_0xf556('0x35')],qs[_0xf556('0x36')](_0x11359e[_0xf556('0x32')][_0xf556('0x36')]));_0x17e5ed[_0xf556('0x34')]=_0x17e5ed[_0xf556('0x34')]['length']?_0x17e5ed[_0xf556('0x34')]:_0x1ae7aa[_0xf556('0x35')];if(_0x11359e[_0xf556('0x32')][_0xf556('0x42')]){_0x17e5ed[_0xf556('0x43')]=[{'all':!![]}];}_0x17e5ed=_[_0xf556('0x3f')]({},_0x17e5ed,_0x11359e[_0xf556('0x41')]);return db[_0xf556('0x2d')][_0xf556('0x49')](_0x17e5ed)[_0xf556('0x26')](handleEntityNotFound(_0x532288,null))[_0xf556('0x26')](respondWithResult(_0x532288,null))[_0xf556('0x4a')](handleError(_0x532288,null));};exports[_0xf556('0x4b')]=function(_0x13fca8,_0x2ca0d5){return db[_0xf556('0x2d')]['create'](_0x13fca8[_0xf556('0x4c')],{})[_0xf556('0x26')](respondWithResult(_0x2ca0d5,0xc9))[_0xf556('0x4a')](handleError(_0x2ca0d5,null));};exports['update']=function(_0xc880ce,_0x55315e){if(_0xc880ce['body']['id']){delete _0xc880ce[_0xf556('0x4c')]['id'];}return db['FreshsalesField']['find']({'where':{'id':_0xc880ce[_0xf556('0x47')]['id']}})['then'](handleEntityNotFound(_0x55315e,null))[_0xf556('0x26')](saveUpdates(_0xc880ce[_0xf556('0x4c')],null))[_0xf556('0x26')](respondWithResult(_0x55315e,null))[_0xf556('0x4a')](handleError(_0x55315e,null));};exports[_0xf556('0x27')]=function(_0xcfbb75,_0x31366e){return db['FreshsalesField'][_0xf556('0x49')]({'where':{'id':_0xcfbb75[_0xf556('0x47')]['id']}})[_0xf556('0x26')](handleEntityNotFound(_0x31366e,null))[_0xf556('0x26')](removeEntity(_0x31366e,null))['catch'](handleError(_0x31366e,null));};
\ No newline at end of file
+var _0x6ecd=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','stack','name','index','map','FreshsalesField','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','catch','show','params','keys','length','includeAll','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x565375,_0x22ab9a){var _0x3017d8=function(_0x203f81){while(--_0x203f81){_0x565375['push'](_0x565375['shift']());}};_0x3017d8(++_0x22ab9a);}(_0x6ecd,0x8a));var _0xd6ec=function(_0x509c33,_0x95a799){_0x509c33=_0x509c33-0x0;var _0x482d43=_0x6ecd[_0x509c33];return _0x482d43;};'use strict';var emlformat=require(_0xd6ec('0x0'));var rimraf=require(_0xd6ec('0x1'));var zipdir=require(_0xd6ec('0x2'));var jsonpatch=require(_0xd6ec('0x3'));var rp=require(_0xd6ec('0x4'));var moment=require(_0xd6ec('0x5'));var BPromise=require(_0xd6ec('0x6'));var Mustache=require(_0xd6ec('0x7'));var util=require(_0xd6ec('0x8'));var path=require(_0xd6ec('0x9'));var sox=require(_0xd6ec('0xa'));var csv=require(_0xd6ec('0xb'));var ejs=require(_0xd6ec('0xc'));var fs=require('fs');var fs_extra=require(_0xd6ec('0xd'));var _=require('lodash');var squel=require(_0xd6ec('0xe'));var crypto=require(_0xd6ec('0xf'));var jsforce=require(_0xd6ec('0x10'));var deskjs=require(_0xd6ec('0x11'));var toCsv=require(_0xd6ec('0xb'));var querystring=require(_0xd6ec('0x12'));var Papa=require(_0xd6ec('0x13'));var Redis=require(_0xd6ec('0x14'));var authService=require(_0xd6ec('0x15'));var qs=require(_0xd6ec('0x16'));var as=require(_0xd6ec('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd6ec('0x18'));var utils=require(_0xd6ec('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd6ec('0x1a'))['db'];function respondWithStatusCode(_0x43ba5e,_0x228ade){_0x228ade=_0x228ade||0xcc;return function(_0x481ded){if(_0x481ded){return _0x43ba5e[_0xd6ec('0x1b')](_0x228ade);}return _0x43ba5e[_0xd6ec('0x1c')](_0x228ade)[_0xd6ec('0x1d')]();};}function respondWithResult(_0x38dbaf,_0x25d549){_0x25d549=_0x25d549||0xc8;return function(_0x383791){if(_0x383791){return _0x38dbaf[_0xd6ec('0x1c')](_0x25d549)['json'](_0x383791);}};}function respondWithFilteredResult(_0x236874,_0xce99f4){return function(_0x2931ad){if(_0x2931ad){var _0x46a818=typeof _0xce99f4[_0xd6ec('0x1e')]===_0xd6ec('0x1f')&&typeof _0xce99f4[_0xd6ec('0x20')]===_0xd6ec('0x1f');var _0x375953=_0x2931ad['count'];var _0x4d571a=_0x46a818?0x0:_0xce99f4[_0xd6ec('0x1e')];var _0x53ec9a=_0x46a818?_0x2931ad[_0xd6ec('0x21')]:_0xce99f4[_0xd6ec('0x1e')]+_0xce99f4[_0xd6ec('0x20')];var _0x14f72a;if(_0x53ec9a>=_0x375953){_0x53ec9a=_0x375953;_0x14f72a=0xc8;}else{_0x14f72a=0xce;}_0x236874[_0xd6ec('0x1c')](_0x14f72a);return _0x236874['set'](_0xd6ec('0x22'),_0x4d571a+'-'+_0x53ec9a+'/'+_0x375953)['json'](_0x2931ad);}return null;};}function patchUpdates(_0x2c43a1){return function(_0x3f9647){try{jsonpatch[_0xd6ec('0x23')](_0x3f9647,_0x2c43a1,!![]);}catch(_0x38b0db){return BPromise['reject'](_0x38b0db);}return _0x3f9647[_0xd6ec('0x24')]();};}function saveUpdates(_0x5cde1b,_0x203899){return function(_0xc4178c){if(_0xc4178c){return _0xc4178c[_0xd6ec('0x25')](_0x5cde1b)[_0xd6ec('0x26')](function(_0x5f3d32){return _0x5f3d32;});}return null;};}function removeEntity(_0x4f2d9b,_0x43bc5f){return function(_0x229db6){if(_0x229db6){return _0x229db6[_0xd6ec('0x27')]()[_0xd6ec('0x26')](function(){_0x4f2d9b[_0xd6ec('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x179a63,_0x2c1a65){return function(_0x1aa1a8){if(!_0x1aa1a8){_0x179a63['sendStatus'](0x194);}return _0x1aa1a8;};}function handleError(_0x5b9d85,_0x3d0c93){_0x3d0c93=_0x3d0c93||0x1f4;return function(_0x443a37){logger['error'](_0x443a37[_0xd6ec('0x28')]);if(_0x443a37[_0xd6ec('0x29')]){delete _0x443a37['name'];}_0x5b9d85[_0xd6ec('0x1c')](_0x3d0c93)['send'](_0x443a37);};}exports[_0xd6ec('0x2a')]=function(_0x56ce19,_0x57b253){var _0x48af16={},_0x3af79c={},_0xe7d57b={'count':0x0,'rows':[]};var _0x46bcda=_[_0xd6ec('0x2b')](db[_0xd6ec('0x2c')][_0xd6ec('0x2d')],function(_0x3509ab){return{'name':_0x3509ab[_0xd6ec('0x2e')],'type':_0x3509ab[_0xd6ec('0x2f')][_0xd6ec('0x30')]};});_0x3af79c[_0xd6ec('0x31')]=_['map'](_0x46bcda,_0xd6ec('0x29'));_0x3af79c[_0xd6ec('0x32')]=_['keys'](_0x56ce19[_0xd6ec('0x32')]);_0x3af79c[_0xd6ec('0x33')]=_[_0xd6ec('0x34')](_0x3af79c[_0xd6ec('0x31')],_0x3af79c[_0xd6ec('0x32')]);_0x48af16[_0xd6ec('0x35')]=_['intersection'](_0x3af79c['model'],qs[_0xd6ec('0x36')](_0x56ce19[_0xd6ec('0x32')]['fields']));_0x48af16['attributes']=_0x48af16[_0xd6ec('0x35')]['length']?_0x48af16[_0xd6ec('0x35')]:_0x3af79c['model'];if(!_0x56ce19[_0xd6ec('0x32')][_0xd6ec('0x37')](_0xd6ec('0x38'))){_0x48af16[_0xd6ec('0x20')]=qs[_0xd6ec('0x20')](_0x56ce19['query'][_0xd6ec('0x20')]);_0x48af16[_0xd6ec('0x1e')]=qs[_0xd6ec('0x1e')](_0x56ce19[_0xd6ec('0x32')][_0xd6ec('0x1e')]);}_0x48af16[_0xd6ec('0x39')]=qs[_0xd6ec('0x3a')](_0x56ce19[_0xd6ec('0x32')]['sort']);_0x48af16[_0xd6ec('0x3b')]=qs[_0xd6ec('0x33')](_[_0xd6ec('0x3c')](_0x56ce19[_0xd6ec('0x32')],_0x3af79c[_0xd6ec('0x33')]),_0x46bcda);if(_0x56ce19[_0xd6ec('0x32')][_0xd6ec('0x3d')]){_0x48af16[_0xd6ec('0x3b')]=_[_0xd6ec('0x3e')](_0x48af16[_0xd6ec('0x3b')],{'$or':_['map'](_0x46bcda,function(_0x42d112){if(_0x42d112[_0xd6ec('0x2f')]!==_0xd6ec('0x3f')){var _0x205de6={};_0x205de6[_0x42d112[_0xd6ec('0x29')]]={'$like':'%'+_0x56ce19[_0xd6ec('0x32')][_0xd6ec('0x3d')]+'%'};return _0x205de6;}})});}_0x48af16=_[_0xd6ec('0x3e')]({},_0x48af16,_0x56ce19[_0xd6ec('0x40')]);var _0x33573d={'where':_0x48af16['where']};return db[_0xd6ec('0x2c')][_0xd6ec('0x21')](_0x33573d)[_0xd6ec('0x26')](function(_0x4f57b6){_0xe7d57b[_0xd6ec('0x21')]=_0x4f57b6;if(_0x56ce19['query']['includeAll']){_0x48af16['include']=[{'all':!![]}];}return db[_0xd6ec('0x2c')][_0xd6ec('0x41')](_0x48af16);})[_0xd6ec('0x26')](function(_0x5d212b){_0xe7d57b['rows']=_0x5d212b;return _0xe7d57b;})['then'](respondWithFilteredResult(_0x57b253,_0x48af16))[_0xd6ec('0x42')](handleError(_0x57b253,null));};exports[_0xd6ec('0x43')]=function(_0x382292,_0xb62a27){var _0x3244c0={'raw':!![],'where':{'id':_0x382292[_0xd6ec('0x44')]['id']}},_0x28995b={};_0x28995b['model']=_[_0xd6ec('0x45')](db[_0xd6ec('0x2c')][_0xd6ec('0x2d')]);_0x28995b[_0xd6ec('0x32')]=_[_0xd6ec('0x45')](_0x382292[_0xd6ec('0x32')]);_0x28995b[_0xd6ec('0x33')]=_[_0xd6ec('0x34')](_0x28995b[_0xd6ec('0x31')],_0x28995b[_0xd6ec('0x32')]);_0x3244c0[_0xd6ec('0x35')]=_[_0xd6ec('0x34')](_0x28995b[_0xd6ec('0x31')],qs[_0xd6ec('0x36')](_0x382292['query'][_0xd6ec('0x36')]));_0x3244c0['attributes']=_0x3244c0['attributes'][_0xd6ec('0x46')]?_0x3244c0['attributes']:_0x28995b[_0xd6ec('0x31')];if(_0x382292[_0xd6ec('0x32')][_0xd6ec('0x47')]){_0x3244c0[_0xd6ec('0x48')]=[{'all':!![]}];}_0x3244c0=_[_0xd6ec('0x3e')]({},_0x3244c0,_0x382292['options']);return db['FreshsalesField'][_0xd6ec('0x49')](_0x3244c0)[_0xd6ec('0x26')](handleEntityNotFound(_0xb62a27,null))[_0xd6ec('0x26')](respondWithResult(_0xb62a27,null))[_0xd6ec('0x42')](handleError(_0xb62a27,null));};exports[_0xd6ec('0x4a')]=function(_0x4c0e84,_0x4d6056){return db[_0xd6ec('0x2c')][_0xd6ec('0x4a')](_0x4c0e84[_0xd6ec('0x4b')],{})[_0xd6ec('0x26')](respondWithResult(_0x4d6056,0xc9))[_0xd6ec('0x42')](handleError(_0x4d6056,null));};exports['update']=function(_0x28e99b,_0xe491c){if(_0x28e99b['body']['id']){delete _0x28e99b['body']['id'];}return db[_0xd6ec('0x2c')][_0xd6ec('0x49')]({'where':{'id':_0x28e99b['params']['id']}})[_0xd6ec('0x26')](handleEntityNotFound(_0xe491c,null))[_0xd6ec('0x26')](saveUpdates(_0x28e99b['body'],null))[_0xd6ec('0x26')](respondWithResult(_0xe491c,null))[_0xd6ec('0x42')](handleError(_0xe491c,null));};exports[_0xd6ec('0x27')]=function(_0x4474c7,_0x16a576){return db[_0xd6ec('0x2c')][_0xd6ec('0x49')]({'where':{'id':_0x4474c7['params']['id']}})[_0xd6ec('0x26')](handleEntityNotFound(_0x16a576,null))[_0xd6ec('0x26')](removeEntity(_0x16a576,null))[_0xd6ec('0x42')](handleError(_0x16a576,null));};
\ No newline at end of file
index 4e7e745..08cb564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x161a=['FieldId','../../config/logger','api','bluebird','path','rimraf','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index'];(function(_0x4548de,_0x4ff220){var _0x40dcfd=function(_0x5bcc64){while(--_0x5bcc64){_0x4548de['push'](_0x4548de['shift']());}};_0x40dcfd(++_0x4ff220);}(_0x161a,0x140));var _0xa161=function(_0x1bb58c,_0x2c8a4d){_0x1bb58c=_0x1bb58c-0x0;var _0x277586=_0x161a[_0x1bb58c];return _0x277586;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa161('0x0'))(_0xa161('0x1'));var moment=require('moment');var BPromise=require(_0xa161('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa161('0x3'));var rimraf=require(_0xa161('0x4'));var config=require('../../config/environment');var attributes=require('./intFreshsalesField.attributes');module[_0xa161('0x5')]=function(_0x1705ab,_0x12d54c){return _0x1705ab[_0xa161('0x6')](_0xa161('0x7'),attributes,{'tableName':_0xa161('0x8'),'paranoid':![],'indexes':[{'name':_0xa161('0x9'),'fields':['idField',_0xa161('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4991=['exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','FieldId','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0x4991,0xf7));var _0x1499=function(_0x23eed4,_0x3580d8){_0x23eed4=_0x23eed4-0x0;var _0x32efc9=_0x4991[_0x23eed4];return _0x32efc9;};'use strict';var _=require(_0x1499('0x0'));var util=require('util');var logger=require(_0x1499('0x1'))('api');var moment=require(_0x1499('0x2'));var BPromise=require(_0x1499('0x3'));var rp=require(_0x1499('0x4'));var fs=require('fs');var path=require(_0x1499('0x5'));var rimraf=require(_0x1499('0x6'));var config=require(_0x1499('0x7'));var attributes=require(_0x1499('0x8'));module[_0x1499('0x9')]=function(_0x4b6154,_0x2a8e96){return _0x4b6154[_0x1499('0xa')](_0x1499('0xb'),attributes,{'tableName':_0x1499('0xc'),'paranoid':![],'indexes':[{'name':_0x1499('0xd'),'fields':[_0x1499('0xe'),_0x1499('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 8dfb762..ff9387f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x1b4982,_0x2aa183){var _0xcb2d4=function(_0x501c1d){while(--_0x501c1d){_0x1b4982['push'](_0x1b4982['shift']());}};_0xcb2d4(++_0x2aa183);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x9b54b5,_0x499ffd){_0x9b54b5=_0x9b54b5-0x0;var _0x2130c5=_0xb4c7[_0x9b54b5];return _0x2130c5;};'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
+var _0x71ab=['http','request','then','info','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','message','FreshsalesField,\x20%s,\x20%s','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0xe5e9cc,_0x4c4d9f){var _0x50b15e=function(_0x5affef){while(--_0x5affef){_0xe5e9cc['push'](_0xe5e9cc['shift']());}};_0x50b15e(++_0x4c4d9f);}(_0x71ab,0x64));var _0xb71a=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x71ab[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0xb71a('0x0'));var moment=require('moment');var BPromise=require(_0xb71a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb71a('0x2'));var db=require(_0xb71a('0x3'))['db'];var utils=require(_0xb71a('0x4'));var logger=require(_0xb71a('0x5'))(_0xb71a('0x6'));var config=require(_0xb71a('0x7'));var jayson=require(_0xb71a('0x8'));var client=jayson[_0xb71a('0x9')][_0xb71a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x35a84e,_0x4358ce,_0x2a4c86){return new BPromise(function(_0x43ca14,_0x471ab6){return client[_0xb71a('0xb')](_0x35a84e,_0x2a4c86)[_0xb71a('0xc')](function(_0x378c96){logger[_0xb71a('0xd')]('FreshsalesField,\x20%s,\x20%s',_0x4358ce,_0xb71a('0xe'));logger['debug'](_0xb71a('0xf'),_0x4358ce,_0xb71a('0xe'),JSON[_0xb71a('0x10')](_0x378c96));if(_0x378c96['error']){if(_0x378c96[_0xb71a('0x11')]['code']===0x1f4){logger[_0xb71a('0x11')]('FreshsalesField,\x20%s,\x20%s',_0x4358ce,_0x378c96['error'][_0xb71a('0x12')]);return _0x471ab6(_0x378c96[_0xb71a('0x11')][_0xb71a('0x12')]);}logger[_0xb71a('0x11')]('FreshsalesField,\x20%s,\x20%s',_0x4358ce,_0x378c96['error']['message']);return _0x43ca14(_0x378c96[_0xb71a('0x11')][_0xb71a('0x12')]);}else{logger[_0xb71a('0xd')](_0xb71a('0x13'),_0x4358ce,_0xb71a('0xe'));_0x43ca14(_0x378c96[_0xb71a('0x14')][_0xb71a('0x12')]);}})[_0xb71a('0x15')](function(_0x7710a8){logger['error'](_0xb71a('0x13'),_0x4358ce,_0x7710a8);_0x471ab6(_0x7710a8);});});}
\ No newline at end of file
index 9196ef5..a37f45e 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(_0x1ca1bd,_0x3a5f09){var _0x5b7db6=function(_0x7b9d2){while(--_0x7b9d2){_0x1ca1bd['push'](_0x1ca1bd['shift']());}};_0x5b7db6(++_0x3a5f09);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'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(_0x38cd24,_0x475069){var _0x2aea6a=function(_0x26ac8c){while(--_0x26ac8c){_0x38cd24['push'](_0x38cd24['shift']());}};_0x2aea6a(++_0x475069);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'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 1c95c3f..bc83024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0da=['STRING','newTab','integrationTab','sequelize','exports'];(function(_0x16742d,_0x5f213d){var _0x35d984=function(_0x515b32){while(--_0x515b32){_0x16742d['push'](_0x16742d['shift']());}};_0x35d984(++_0x5f213d);}(_0xd0da,0x1b1));var _0xad0d=function(_0x57e00e,_0x36e79a){_0x57e00e=_0x57e00e-0x0;var _0x415e60=_0xd0da[_0x57e00e];return _0x415e60;};'use strict';var Sequelize=require(_0xad0d('0x0'));module[_0xad0d('0x1')]={'name':{'type':Sequelize[_0xad0d('0x2')]},'description':{'type':Sequelize[_0xad0d('0x2')]},'username':{'type':Sequelize[_0xad0d('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize[_0xad0d('0x2')]},'password':{'type':Sequelize[_0xad0d('0x2')]},'clientId':{'type':Sequelize[_0xad0d('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xad0d('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0xad0d('0x3')),'defaultValue':_0xad0d('0x4')}};
\ No newline at end of file
+var _0xa30a=['STRING','username','ENUM','newTab','integrationTab','sequelize','exports'];(function(_0x121dd4,_0x5209b1){var _0x419f54=function(_0x59cf6a){while(--_0x59cf6a){_0x121dd4['push'](_0x121dd4['shift']());}};_0x419f54(++_0x5209b1);}(_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')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xaa30('0x2')],'unique':_0xaa30('0x3')},'remoteUri':{'type':Sequelize[_0xaa30('0x2')]},'password':{'type':Sequelize[_0xaa30('0x2')]},'clientId':{'type':Sequelize[_0xaa30('0x2')]},'clientSecret':{'type':Sequelize[_0xaa30('0x2')]},'securityToken':{'type':Sequelize[_0xaa30('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xaa30('0x4')]('integrationTab',_0xaa30('0x5')),'defaultValue':_0xaa30('0x6')}};
\ No newline at end of file
index 78676db..041d591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e6e=['key','model','query','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','show','params','keys','length','includeAll','find','create','body','destroy','getConfigurations','SalesforceConfiguration','hasOwnProperty','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','getFields','Task','remoteUri','clientId','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','picklist','boolean','email','phone','remove','label','custom','picklistValues','value','True','true','False','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','zip-dir','fast-json-patch','request-promise','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/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','sendStatus','stack','name','send','index','map','SalesforceAccount','rawAttributes','fieldName','type'];(function(_0x1094d7,_0x20bb00){var _0x469a3b=function(_0x3165f1){while(--_0x3165f1){_0x1094d7['push'](_0x1094d7['shift']());}};_0x469a3b(++_0x20bb00);}(_0x4e6e,0x1d9));var _0xe4e6=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x4e6e[_0x68ee8b];return _0x5148f7;};'use strict';var emlformat=require(_0xe4e6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe4e6('0x1'));var jsonpatch=require(_0xe4e6('0x2'));var rp=require(_0xe4e6('0x3'));var moment=require('moment');var BPromise=require(_0xe4e6('0x4'));var Mustache=require(_0xe4e6('0x5'));var util=require(_0xe4e6('0x6'));var path=require(_0xe4e6('0x7'));var sox=require(_0xe4e6('0x8'));var csv=require(_0xe4e6('0x9'));var ejs=require(_0xe4e6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe4e6('0xb'));var squel=require(_0xe4e6('0xc'));var crypto=require(_0xe4e6('0xd'));var jsforce=require(_0xe4e6('0xe'));var deskjs=require(_0xe4e6('0xf'));var toCsv=require(_0xe4e6('0x9'));var querystring=require(_0xe4e6('0x10'));var Papa=require(_0xe4e6('0x11'));var Redis=require(_0xe4e6('0x12'));var authService=require(_0xe4e6('0x13'));var qs=require(_0xe4e6('0x14'));var as=require(_0xe4e6('0x15'));var hardwareService=require(_0xe4e6('0x16'));var logger=require(_0xe4e6('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xe4e6('0x18'));var licenseUtil=require(_0xe4e6('0x19'));var db=require(_0xe4e6('0x1a'))['db'];var integrations=require(_0xe4e6('0x1b'));function respondWithStatusCode(_0xd84985,_0x5efbc8){_0x5efbc8=_0x5efbc8||0xcc;return function(_0x3799b6){if(_0x3799b6){return _0xd84985['sendStatus'](_0x5efbc8);}return _0xd84985[_0xe4e6('0x1c')](_0x5efbc8)[_0xe4e6('0x1d')]();};}function respondWithResult(_0x1c62a4,_0x2f19cb){_0x2f19cb=_0x2f19cb||0xc8;return function(_0x29ab58){if(_0x29ab58){return _0x1c62a4['status'](_0x2f19cb)[_0xe4e6('0x1e')](_0x29ab58);}};}function respondWithFilteredResult(_0x4fe228,_0x23a984){return function(_0x20ea75){if(_0x20ea75){var _0x2c51ea=typeof _0x23a984[_0xe4e6('0x1f')]==='undefined'&&typeof _0x23a984[_0xe4e6('0x20')]===_0xe4e6('0x21');var _0xf5743d=_0x20ea75[_0xe4e6('0x22')];var _0x5f0051=_0x2c51ea?0x0:_0x23a984[_0xe4e6('0x1f')];var _0x245a2e=_0x2c51ea?_0x20ea75[_0xe4e6('0x22')]:_0x23a984[_0xe4e6('0x1f')]+_0x23a984['limit'];var _0x3b8fe2;if(_0x245a2e>=_0xf5743d){_0x245a2e=_0xf5743d;_0x3b8fe2=0xc8;}else{_0x3b8fe2=0xce;}_0x4fe228['status'](_0x3b8fe2);return _0x4fe228['set'](_0xe4e6('0x23'),_0x5f0051+'-'+_0x245a2e+'/'+_0xf5743d)[_0xe4e6('0x1e')](_0x20ea75);}return null;};}function patchUpdates(_0x6715ba){return function(_0x4791a0){try{jsonpatch[_0xe4e6('0x24')](_0x4791a0,_0x6715ba,!![]);}catch(_0x81aca0){return BPromise[_0xe4e6('0x25')](_0x81aca0);}return _0x4791a0[_0xe4e6('0x26')]();};}function saveUpdates(_0x429e83,_0x33207f){return function(_0x30c93f){if(_0x30c93f){return _0x30c93f[_0xe4e6('0x27')](_0x429e83)[_0xe4e6('0x28')](function(_0x427cd2){return _0x427cd2;});}return null;};}function removeEntity(_0x5524a7,_0x3a201a){return function(_0x4a9cf7){if(_0x4a9cf7){return _0x4a9cf7['destroy']()[_0xe4e6('0x28')](function(){_0x5524a7[_0xe4e6('0x1c')](0xcc)[_0xe4e6('0x1d')]();});}};}function handleEntityNotFound(_0x2d2bac,_0x2febb6){return function(_0x450916){if(!_0x450916){_0x2d2bac[_0xe4e6('0x29')](0x194);}return _0x450916;};}function handleError(_0x427d71,_0x5107cc){_0x5107cc=_0x5107cc||0x1f4;return function(_0x5a5f2a){logger['error'](_0x5a5f2a[_0xe4e6('0x2a')]);if(_0x5a5f2a['name']){delete _0x5a5f2a[_0xe4e6('0x2b')];}_0x427d71['status'](_0x5107cc)[_0xe4e6('0x2c')](_0x5a5f2a);};}exports[_0xe4e6('0x2d')]=function(_0x39d6f1,_0x135a5c){var _0x9a52ff={},_0x55f199={},_0x5a60fc={'count':0x0,'rows':[]};var _0xef0fc7=_[_0xe4e6('0x2e')](db[_0xe4e6('0x2f')][_0xe4e6('0x30')],function(_0xeb17f5){return{'name':_0xeb17f5[_0xe4e6('0x31')],'type':_0xeb17f5[_0xe4e6('0x32')][_0xe4e6('0x33')]};});_0x55f199[_0xe4e6('0x34')]=_[_0xe4e6('0x2e')](_0xef0fc7,'name');_0x55f199[_0xe4e6('0x35')]=_['keys'](_0x39d6f1[_0xe4e6('0x35')]);_0x55f199[_0xe4e6('0x36')]=_[_0xe4e6('0x37')](_0x55f199['model'],_0x55f199[_0xe4e6('0x35')]);_0x9a52ff[_0xe4e6('0x38')]=_[_0xe4e6('0x37')](_0x55f199['model'],qs[_0xe4e6('0x39')](_0x39d6f1[_0xe4e6('0x35')][_0xe4e6('0x39')]));_0x9a52ff[_0xe4e6('0x38')]=_0x9a52ff[_0xe4e6('0x38')]['length']?_0x9a52ff[_0xe4e6('0x38')]:_0x55f199[_0xe4e6('0x34')];if(!_0x39d6f1[_0xe4e6('0x35')]['hasOwnProperty']('nolimit')){_0x9a52ff[_0xe4e6('0x20')]=qs[_0xe4e6('0x20')](_0x39d6f1[_0xe4e6('0x35')]['limit']);_0x9a52ff['offset']=qs['offset'](_0x39d6f1[_0xe4e6('0x35')][_0xe4e6('0x1f')]);}_0x9a52ff[_0xe4e6('0x3a')]=qs[_0xe4e6('0x3b')](_0x39d6f1[_0xe4e6('0x35')][_0xe4e6('0x3b')]);_0x9a52ff[_0xe4e6('0x3c')]=qs[_0xe4e6('0x36')](_[_0xe4e6('0x3d')](_0x39d6f1[_0xe4e6('0x35')],_0x55f199[_0xe4e6('0x36')]),_0xef0fc7);if(_0x39d6f1[_0xe4e6('0x35')][_0xe4e6('0x3e')]){_0x9a52ff['where']=_[_0xe4e6('0x3f')](_0x9a52ff[_0xe4e6('0x3c')],{'$or':_[_0xe4e6('0x2e')](_0xef0fc7,function(_0x30a470){if(_0x30a470[_0xe4e6('0x32')]!=='VIRTUAL'){var _0x5f0be0={};_0x5f0be0[_0x30a470['name']]={'$like':'%'+_0x39d6f1['query']['filter']+'%'};return _0x5f0be0;}})});}_0x9a52ff=_[_0xe4e6('0x3f')]({},_0x9a52ff,_0x39d6f1[_0xe4e6('0x40')]);var _0x29b28a={'where':_0x9a52ff[_0xe4e6('0x3c')]};return db[_0xe4e6('0x2f')][_0xe4e6('0x22')](_0x29b28a)[_0xe4e6('0x28')](function(_0x306666){_0x5a60fc[_0xe4e6('0x22')]=_0x306666;if(_0x39d6f1[_0xe4e6('0x35')]['includeAll']){_0x9a52ff[_0xe4e6('0x41')]=[{'all':!![]}];}return db[_0xe4e6('0x2f')][_0xe4e6('0x42')](_0x9a52ff);})[_0xe4e6('0x28')](function(_0x52f255){_0x5a60fc[_0xe4e6('0x43')]=_0x52f255;return _0x5a60fc;})[_0xe4e6('0x28')](respondWithFilteredResult(_0x135a5c,_0x9a52ff))[_0xe4e6('0x44')](handleError(_0x135a5c,null));};exports[_0xe4e6('0x45')]=function(_0x1f2a49,_0x36ea80){var _0x37fa2a={'raw':![],'where':{'id':_0x1f2a49[_0xe4e6('0x46')]['id']}},_0x418170={};_0x418170[_0xe4e6('0x34')]=_['keys'](db[_0xe4e6('0x2f')][_0xe4e6('0x30')]);_0x418170['query']=_[_0xe4e6('0x47')](_0x1f2a49['query']);_0x418170[_0xe4e6('0x36')]=_[_0xe4e6('0x37')](_0x418170[_0xe4e6('0x34')],_0x418170['query']);_0x37fa2a['attributes']=_[_0xe4e6('0x37')](_0x418170[_0xe4e6('0x34')],qs[_0xe4e6('0x39')](_0x1f2a49[_0xe4e6('0x35')][_0xe4e6('0x39')]));_0x37fa2a['attributes']=_0x37fa2a['attributes'][_0xe4e6('0x48')]?_0x37fa2a['attributes']:_0x418170[_0xe4e6('0x34')];if(_0x1f2a49['query'][_0xe4e6('0x49')]){_0x37fa2a[_0xe4e6('0x41')]=[{'all':!![]}];}_0x37fa2a=_[_0xe4e6('0x3f')]({},_0x37fa2a,_0x1f2a49[_0xe4e6('0x40')]);return db[_0xe4e6('0x2f')][_0xe4e6('0x4a')](_0x37fa2a)[_0xe4e6('0x28')](handleEntityNotFound(_0x36ea80,null))[_0xe4e6('0x28')](respondWithResult(_0x36ea80,null))['catch'](handleError(_0x36ea80,null));};exports[_0xe4e6('0x4b')]=function(_0x4b02e1,_0x443469){return db[_0xe4e6('0x2f')][_0xe4e6('0x4b')](_0x4b02e1[_0xe4e6('0x4c')],{})[_0xe4e6('0x28')](respondWithResult(_0x443469,0xc9))[_0xe4e6('0x44')](handleError(_0x443469,null));};exports['update']=function(_0xe4a9bd,_0x4a7e89){if(_0xe4a9bd['body']['id']){delete _0xe4a9bd[_0xe4e6('0x4c')]['id'];}return db[_0xe4e6('0x2f')][_0xe4e6('0x4a')]({'where':{'id':_0xe4a9bd[_0xe4e6('0x46')]['id']}})['then'](handleEntityNotFound(_0x4a7e89,null))[_0xe4e6('0x28')](saveUpdates(_0xe4a9bd[_0xe4e6('0x4c')],null))[_0xe4e6('0x28')](respondWithResult(_0x4a7e89,null))[_0xe4e6('0x44')](handleError(_0x4a7e89,null));};exports[_0xe4e6('0x4d')]=function(_0x1e74d1,_0x5cd020){return db[_0xe4e6('0x2f')]['find']({'where':{'id':_0x1e74d1[_0xe4e6('0x46')]['id']}})[_0xe4e6('0x28')](handleEntityNotFound(_0x5cd020,null))['then'](removeEntity(_0x5cd020,null))[_0xe4e6('0x44')](handleError(_0x5cd020,null));};exports[_0xe4e6('0x4e')]=function(_0x262441,_0x58f9e4,_0x1b3b18){var _0xc03988={};var _0xa71dde={};var _0x2a9ea0;var _0x4c6b59;return db[_0xe4e6('0x2f')]['findOne']({'where':{'id':_0x262441[_0xe4e6('0x46')]['id']}})[_0xe4e6('0x28')](handleEntityNotFound(_0x58f9e4,null))[_0xe4e6('0x28')](function(_0xc6a7ef){if(_0xc6a7ef){_0x2a9ea0=_0xc6a7ef;_0xa71dde['model']=_[_0xe4e6('0x47')](db[_0xe4e6('0x4f')][_0xe4e6('0x30')]);_0xa71dde[_0xe4e6('0x35')]=_[_0xe4e6('0x47')](_0x262441[_0xe4e6('0x35')]);_0xa71dde[_0xe4e6('0x36')]=_[_0xe4e6('0x37')](_0xa71dde['model'],_0xa71dde[_0xe4e6('0x35')]);_0xc03988[_0xe4e6('0x38')]=_[_0xe4e6('0x37')](_0xa71dde[_0xe4e6('0x34')],qs['fields'](_0x262441['query'][_0xe4e6('0x39')]));_0xc03988[_0xe4e6('0x38')]=_0xc03988[_0xe4e6('0x38')][_0xe4e6('0x48')]?_0xc03988[_0xe4e6('0x38')]:_0xa71dde[_0xe4e6('0x34')];_0xc03988[_0xe4e6('0x3a')]=qs['sort'](_0x262441[_0xe4e6('0x35')][_0xe4e6('0x3b')]);_0xc03988[_0xe4e6('0x3c')]=qs[_0xe4e6('0x36')](_[_0xe4e6('0x3d')](_0x262441[_0xe4e6('0x35')],_0xa71dde[_0xe4e6('0x36')]));if(_0x262441[_0xe4e6('0x35')][_0xe4e6('0x3e')]){_0xc03988[_0xe4e6('0x3c')]=_[_0xe4e6('0x3f')](_0xc03988['where'],{'$or':_[_0xe4e6('0x2e')](_0xc03988['attributes'],function(_0x381cee){var _0x9a5d={};_0x9a5d[_0x381cee]={'$like':'%'+_0x262441[_0xe4e6('0x35')][_0xe4e6('0x3e')]+'%'};return _0x9a5d;})});}_0xc03988=_[_0xe4e6('0x3f')]({},_0xc03988,_0x262441[_0xe4e6('0x40')]);return _0x2a9ea0['getConfigurations'](_0xc03988);}})[_0xe4e6('0x28')](function(_0x16087a){if(_0x16087a){_0x4c6b59=_0x16087a[_0xe4e6('0x48')];if(!_0x262441[_0xe4e6('0x35')][_0xe4e6('0x50')](_0xe4e6('0x51'))){_0xc03988[_0xe4e6('0x20')]=qs['limit'](_0x262441[_0xe4e6('0x35')][_0xe4e6('0x20')]);_0xc03988[_0xe4e6('0x1f')]=qs[_0xe4e6('0x1f')](_0x262441['query'][_0xe4e6('0x1f')]);}return _0x2a9ea0['getConfigurations'](_0xc03988);}})[_0xe4e6('0x28')](function(_0x5e4114){if(_0x5e4114){return _0x5e4114?{'count':_0x4c6b59,'rows':_0x5e4114}:null;}})[_0xe4e6('0x28')](respondWithResult(_0x58f9e4,null))[_0xe4e6('0x44')](handleError(_0x58f9e4,null));};exports[_0xe4e6('0x52')]=function(_0x31c54e,_0x37ba21,_0xd7e2b){if(_0x31c54e[_0xe4e6('0x4c')]['id']){delete _0x31c54e[_0xe4e6('0x4c')]['id'];}return db[_0xe4e6('0x2f')]['findOne']({'where':{'id':_0x31c54e[_0xe4e6('0x46')]['id']}})[_0xe4e6('0x28')](handleEntityNotFound(_0x37ba21,null))[_0xe4e6('0x28')](function(_0x113a40){if(_0x113a40){_0x31c54e['body'][_0xe4e6('0x53')]=_0x113a40['id'];_0x31c54e[_0xe4e6('0x4c')][_0xe4e6('0x54')]=integrations[_0xe4e6('0x55')](_0x31c54e['body'][_0xe4e6('0x56')],_0x31c54e[_0xe4e6('0x4c')][_0xe4e6('0x32')]);_0x31c54e[_0xe4e6('0x4c')][_0xe4e6('0x57')]=integrations[_0xe4e6('0x58')](_0x31c54e[_0xe4e6('0x4c')][_0xe4e6('0x56')],_0x31c54e[_0xe4e6('0x4c')]['type']);return db[_0xe4e6('0x4f')][_0xe4e6('0x4b')](_0x31c54e[_0xe4e6('0x4c')],{'include':[{'model':db['SalesforceField'],'as':_0xe4e6('0x54')},{'model':db[_0xe4e6('0x59')],'as':_0xe4e6('0x57')}]});}return null;})[_0xe4e6('0x28')](respondWithResult(_0x37ba21,null))['catch'](handleError(_0x37ba21,null));};exports[_0xe4e6('0x5a')]=function(_0x561878,_0x42377c,_0x3478a1){var _0x3effdf;var _0x4ec69a='';var _0x31a9ab=_0xe4e6('0x5b');return db[_0xe4e6('0x2f')]['findOne']({'where':{'id':_0x561878['params']['id']},'attributes':['id',_0xe4e6('0x5c'),_0xe4e6('0x5d'),_0xe4e6('0x5e'),_0xe4e6('0x5f'),_0xe4e6('0x60'),_0xe4e6('0x61')]})[_0xe4e6('0x28')](handleEntityNotFound(_0x42377c,null))['then'](function(_0x1c877f){if(_0x1c877f){_0x4ec69a=_0x1c877f['remoteUri'];var _0x266789=_0x4ec69a[_0xe4e6('0x62')](-0x1);if(_0x266789==='/'){_0x4ec69a=_0x4ec69a[_0xe4e6('0x63')](0x0,_0x4ec69a[_0xe4e6('0x64')](_0x266789));}_0x3effdf=new jsforce[(_0xe4e6('0x65'))]({'oauth2':{'loginUrl':_0x4ec69a,'clientId':_0x1c877f['clientId'],'clientSecret':_0x1c877f[_0xe4e6('0x5e')]}});return _0x3effdf['login'](_0x1c877f[_0xe4e6('0x5f')],_0x1c877f['password'][_0xe4e6('0x66')](_0x1c877f[_0xe4e6('0x61')]));}})[_0xe4e6('0x28')](function(_0xd7bb6f){if(_0xd7bb6f){if(!_[_0xe4e6('0x67')](_0x561878[_0xe4e6('0x35')][_0xe4e6('0x68')])){_0x31a9ab=_0x561878[_0xe4e6('0x35')][_0xe4e6('0x68')];}return _0x3effdf[_0xe4e6('0x69')](_0x31a9ab)[_0xe4e6('0x6a')]();}})[_0xe4e6('0x28')](function(_0x2b18cd){var _0x6e2acc=[_0xe4e6('0x6b'),_0xe4e6('0x6c'),_0xe4e6('0x6d'),_0xe4e6('0x6e'),_0xe4e6('0x6f'),_0xe4e6('0x70')];var _0x1722cd=[_0xe4e6('0x71'),'int',_0xe4e6('0x72'),_0xe4e6('0x73'),_0xe4e6('0x74'),'textarea',_0xe4e6('0x75')];if(_0x2b18cd){_[_0xe4e6('0x76')](_0x2b18cd[_0xe4e6('0x39')],function(_0x3cfb35){return _0x6e2acc['includes'](_0x3cfb35[_0xe4e6('0x2b')])||!_0x1722cd['includes'](_0x3cfb35[_0xe4e6('0x32')]);});return{'count':_0x2b18cd[_0xe4e6('0x39')]['length'],'rows':_[_0xe4e6('0x2e')](_0x2b18cd[_0xe4e6('0x39')],function(_0xab8a77){return{'id':_0xab8a77[_0xe4e6('0x2b')],'name':_0xab8a77[_0xe4e6('0x77')],'custom':_0xab8a77[_0xe4e6('0x78')],'options':_0xab8a77[_0xe4e6('0x79')]['length']>0x0?_[_0xe4e6('0x2e')](_0xab8a77['picklistValues'],function(_0x389210){return{'name':_0x389210[_0xe4e6('0x77')],'value':_0x389210[_0xe4e6('0x7a')]};}):_0xab8a77[_0xe4e6('0x32')]==_0xe4e6('0x73')?[{'name':_0xe4e6('0x7b'),'value':_0xe4e6('0x7c')},{'name':_0xe4e6('0x7d'),'value':'false'}]:[]};})};}})['then'](respondWithResult(_0x42377c,null))[_0xe4e6('0x44')](function(_0x30e9d6){var _0x5159a2=_0x561878['query'][_0xe4e6('0x7e')]?0x1f4:_0x30e9d6[_0xe4e6('0x7f')]||0x1f4;logger[_0xe4e6('0x80')](_0xe4e6('0x81'),'getFields',_0x5159a2,JSON[_0xe4e6('0x82')](_0x30e9d6));delete _0x30e9d6[_0xe4e6('0x2b')];if(_0x5159a2===0x191){_0x5159a2=0x190;}_0x42377c[_0xe4e6('0x1c')](_0x5159a2)['send'](_0x561878[_0xe4e6('0x35')][_0xe4e6('0x7e')]?{'message':'Wrong\x20credentials','statusCode':_0x30e9d6[_0xe4e6('0x7f')]}:_0x30e9d6);});};
\ No newline at end of file
+var _0x8bd9=['stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../components/integrations/configuration','sendStatus','status','json','undefined','limit','offset','set','reject','save','update','then','end','error','stack','name','send','index','SalesforceAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','map','VIRTUAL','count','includeAll','include','findAll','rows','catch','options','find','create','body','params','destroy','getConfigurations','findOne','length','AccountId','Subjects','getSubjects','channel','getDescriptions','SalesforceConfiguration','SalesforceField','getFields','Task','remoteUri','clientSecret','password','securityToken','slice','lastIndexOf','Connection','clientId','login','username','concat','isNil','ticketType','describe','OwnerId','ActivityDate','IsRecurrence','string','int','picklist','email','textarea','phone','remove','includes','label','picklistValues','value','True','true','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s'];(function(_0xea7461,_0x357cdb){var _0x48a33b=function(_0xb714d7){while(--_0xb714d7){_0xea7461['push'](_0xea7461['shift']());}};_0x48a33b(++_0x357cdb);}(_0x8bd9,0xfe));var _0x98bd=function(_0x4c825d,_0x10ec2b){_0x4c825d=_0x4c825d-0x0;var _0x43de87=_0x8bd9[_0x4c825d];return _0x43de87;};'use strict';var emlformat=require(_0x98bd('0x0'));var rimraf=require(_0x98bd('0x1'));var zipdir=require(_0x98bd('0x2'));var jsonpatch=require(_0x98bd('0x3'));var rp=require(_0x98bd('0x4'));var moment=require(_0x98bd('0x5'));var BPromise=require(_0x98bd('0x6'));var Mustache=require(_0x98bd('0x7'));var util=require(_0x98bd('0x8'));var path=require('path');var sox=require(_0x98bd('0x9'));var csv=require(_0x98bd('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x98bd('0xb'));var _=require(_0x98bd('0xc'));var squel=require(_0x98bd('0xd'));var crypto=require(_0x98bd('0xe'));var jsforce=require(_0x98bd('0xf'));var deskjs=require(_0x98bd('0x10'));var toCsv=require('to-csv');var querystring=require(_0x98bd('0x11'));var Papa=require('papaparse');var Redis=require(_0x98bd('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x98bd('0x13'));var as=require(_0x98bd('0x14'));var hardwareService=require(_0x98bd('0x15'));var logger=require(_0x98bd('0x16'))(_0x98bd('0x17'));var utils=require(_0x98bd('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x98bd('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0x98bd('0x1a'));function respondWithStatusCode(_0x266489,_0x5d30e5){_0x5d30e5=_0x5d30e5||0xcc;return function(_0xe5db6a){if(_0xe5db6a){return _0x266489[_0x98bd('0x1b')](_0x5d30e5);}return _0x266489[_0x98bd('0x1c')](_0x5d30e5)['end']();};}function respondWithResult(_0x50f858,_0x4d2615){_0x4d2615=_0x4d2615||0xc8;return function(_0x58637f){if(_0x58637f){return _0x50f858[_0x98bd('0x1c')](_0x4d2615)[_0x98bd('0x1d')](_0x58637f);}};}function respondWithFilteredResult(_0x5ef829,_0x3edff5){return function(_0x358212){if(_0x358212){var _0x4037e6=typeof _0x3edff5['offset']===_0x98bd('0x1e')&&typeof _0x3edff5[_0x98bd('0x1f')]==='undefined';var _0x19f9f3=_0x358212['count'];var _0x12ad02=_0x4037e6?0x0:_0x3edff5['offset'];var _0x70e758=_0x4037e6?_0x358212['count']:_0x3edff5[_0x98bd('0x20')]+_0x3edff5['limit'];var _0x58952f;if(_0x70e758>=_0x19f9f3){_0x70e758=_0x19f9f3;_0x58952f=0xc8;}else{_0x58952f=0xce;}_0x5ef829[_0x98bd('0x1c')](_0x58952f);return _0x5ef829[_0x98bd('0x21')]('Content-Range',_0x12ad02+'-'+_0x70e758+'/'+_0x19f9f3)['json'](_0x358212);}return null;};}function patchUpdates(_0x50c35e){return function(_0x4511cd){try{jsonpatch['apply'](_0x4511cd,_0x50c35e,!![]);}catch(_0x5d7357){return BPromise[_0x98bd('0x22')](_0x5d7357);}return _0x4511cd[_0x98bd('0x23')]();};}function saveUpdates(_0x583d46,_0x117cfe){return function(_0x3f9169){if(_0x3f9169){return _0x3f9169[_0x98bd('0x24')](_0x583d46)['then'](function(_0x3e2206){return _0x3e2206;});}return null;};}function removeEntity(_0x14e83f,_0x580a64){return function(_0x26488f){if(_0x26488f){return _0x26488f['destroy']()[_0x98bd('0x25')](function(){_0x14e83f[_0x98bd('0x1c')](0xcc)[_0x98bd('0x26')]();});}};}function handleEntityNotFound(_0xf9dd7c,_0x139c96){return function(_0x1e5220){if(!_0x1e5220){_0xf9dd7c[_0x98bd('0x1b')](0x194);}return _0x1e5220;};}function handleError(_0x517aeb,_0x551bc8){_0x551bc8=_0x551bc8||0x1f4;return function(_0x3371c2){logger[_0x98bd('0x27')](_0x3371c2[_0x98bd('0x28')]);if(_0x3371c2[_0x98bd('0x29')]){delete _0x3371c2[_0x98bd('0x29')];}_0x517aeb[_0x98bd('0x1c')](_0x551bc8)[_0x98bd('0x2a')](_0x3371c2);};}exports[_0x98bd('0x2b')]=function(_0x975ea6,_0x497a0a){var _0x5436a5={},_0x148278={},_0x4b1836={'count':0x0,'rows':[]};var _0x42ccc9=_['map'](db[_0x98bd('0x2c')][_0x98bd('0x2d')],function(_0x13354a){return{'name':_0x13354a[_0x98bd('0x2e')],'type':_0x13354a[_0x98bd('0x2f')][_0x98bd('0x30')]};});_0x148278[_0x98bd('0x31')]=_['map'](_0x42ccc9,_0x98bd('0x29'));_0x148278['query']=_[_0x98bd('0x32')](_0x975ea6[_0x98bd('0x33')]);_0x148278[_0x98bd('0x34')]=_[_0x98bd('0x35')](_0x148278['model'],_0x148278[_0x98bd('0x33')]);_0x5436a5[_0x98bd('0x36')]=_['intersection'](_0x148278[_0x98bd('0x31')],qs['fields'](_0x975ea6[_0x98bd('0x33')][_0x98bd('0x37')]));_0x5436a5[_0x98bd('0x36')]=_0x5436a5[_0x98bd('0x36')]['length']?_0x5436a5[_0x98bd('0x36')]:_0x148278[_0x98bd('0x31')];if(!_0x975ea6[_0x98bd('0x33')][_0x98bd('0x38')](_0x98bd('0x39'))){_0x5436a5[_0x98bd('0x1f')]=qs[_0x98bd('0x1f')](_0x975ea6[_0x98bd('0x33')][_0x98bd('0x1f')]);_0x5436a5[_0x98bd('0x20')]=qs[_0x98bd('0x20')](_0x975ea6[_0x98bd('0x33')][_0x98bd('0x20')]);}_0x5436a5[_0x98bd('0x3a')]=qs['sort'](_0x975ea6['query'][_0x98bd('0x3b')]);_0x5436a5['where']=qs[_0x98bd('0x34')](_[_0x98bd('0x3c')](_0x975ea6[_0x98bd('0x33')],_0x148278[_0x98bd('0x34')]),_0x42ccc9);if(_0x975ea6[_0x98bd('0x33')][_0x98bd('0x3d')]){_0x5436a5['where']=_[_0x98bd('0x3e')](_0x5436a5[_0x98bd('0x3f')],{'$or':_[_0x98bd('0x40')](_0x42ccc9,function(_0x252cd){if(_0x252cd[_0x98bd('0x2f')]!==_0x98bd('0x41')){var _0x42dc47={};_0x42dc47[_0x252cd[_0x98bd('0x29')]]={'$like':'%'+_0x975ea6['query'][_0x98bd('0x3d')]+'%'};return _0x42dc47;}})});}_0x5436a5=_[_0x98bd('0x3e')]({},_0x5436a5,_0x975ea6['options']);var _0x5a9f2f={'where':_0x5436a5[_0x98bd('0x3f')]};return db['SalesforceAccount'][_0x98bd('0x42')](_0x5a9f2f)[_0x98bd('0x25')](function(_0x242ff8){_0x4b1836[_0x98bd('0x42')]=_0x242ff8;if(_0x975ea6['query'][_0x98bd('0x43')]){_0x5436a5[_0x98bd('0x44')]=[{'all':!![]}];}return db[_0x98bd('0x2c')][_0x98bd('0x45')](_0x5436a5);})['then'](function(_0x5ef5ce){_0x4b1836[_0x98bd('0x46')]=_0x5ef5ce;return _0x4b1836;})[_0x98bd('0x25')](respondWithFilteredResult(_0x497a0a,_0x5436a5))[_0x98bd('0x47')](handleError(_0x497a0a,null));};exports['show']=function(_0x55c54d,_0x1568b0){var _0x5e4272={'raw':![],'where':{'id':_0x55c54d['params']['id']}},_0x5cfb61={};_0x5cfb61[_0x98bd('0x31')]=_['keys'](db[_0x98bd('0x2c')]['rawAttributes']);_0x5cfb61[_0x98bd('0x33')]=_[_0x98bd('0x32')](_0x55c54d['query']);_0x5cfb61['filters']=_['intersection'](_0x5cfb61['model'],_0x5cfb61['query']);_0x5e4272[_0x98bd('0x36')]=_[_0x98bd('0x35')](_0x5cfb61[_0x98bd('0x31')],qs[_0x98bd('0x37')](_0x55c54d['query'][_0x98bd('0x37')]));_0x5e4272['attributes']=_0x5e4272[_0x98bd('0x36')]['length']?_0x5e4272[_0x98bd('0x36')]:_0x5cfb61[_0x98bd('0x31')];if(_0x55c54d['query'][_0x98bd('0x43')]){_0x5e4272[_0x98bd('0x44')]=[{'all':!![]}];}_0x5e4272=_[_0x98bd('0x3e')]({},_0x5e4272,_0x55c54d[_0x98bd('0x48')]);return db[_0x98bd('0x2c')][_0x98bd('0x49')](_0x5e4272)[_0x98bd('0x25')](handleEntityNotFound(_0x1568b0,null))[_0x98bd('0x25')](respondWithResult(_0x1568b0,null))[_0x98bd('0x47')](handleError(_0x1568b0,null));};exports[_0x98bd('0x4a')]=function(_0x3039fc,_0x456ac5){return db['SalesforceAccount'][_0x98bd('0x4a')](_0x3039fc['body'],{})['then'](respondWithResult(_0x456ac5,0xc9))[_0x98bd('0x47')](handleError(_0x456ac5,null));};exports[_0x98bd('0x24')]=function(_0xc93adf,_0x5cf767){if(_0xc93adf[_0x98bd('0x4b')]['id']){delete _0xc93adf[_0x98bd('0x4b')]['id'];}return db[_0x98bd('0x2c')][_0x98bd('0x49')]({'where':{'id':_0xc93adf[_0x98bd('0x4c')]['id']}})[_0x98bd('0x25')](handleEntityNotFound(_0x5cf767,null))[_0x98bd('0x25')](saveUpdates(_0xc93adf[_0x98bd('0x4b')],null))[_0x98bd('0x25')](respondWithResult(_0x5cf767,null))[_0x98bd('0x47')](handleError(_0x5cf767,null));};exports[_0x98bd('0x4d')]=function(_0x749c20,_0x14e323){return db[_0x98bd('0x2c')]['find']({'where':{'id':_0x749c20['params']['id']}})[_0x98bd('0x25')](handleEntityNotFound(_0x14e323,null))[_0x98bd('0x25')](removeEntity(_0x14e323,null))[_0x98bd('0x47')](handleError(_0x14e323,null));};exports[_0x98bd('0x4e')]=function(_0x1ea760,_0x49ea17,_0x3f0a04){var _0x6698f4={};var _0x2bfcf5={};var _0x5a8f0d;var _0x5988b0;return db[_0x98bd('0x2c')][_0x98bd('0x4f')]({'where':{'id':_0x1ea760[_0x98bd('0x4c')]['id']}})['then'](handleEntityNotFound(_0x49ea17,null))[_0x98bd('0x25')](function(_0x5ebbb5){if(_0x5ebbb5){_0x5a8f0d=_0x5ebbb5;_0x2bfcf5['model']=_[_0x98bd('0x32')](db['SalesforceConfiguration'][_0x98bd('0x2d')]);_0x2bfcf5['query']=_[_0x98bd('0x32')](_0x1ea760['query']);_0x2bfcf5[_0x98bd('0x34')]=_[_0x98bd('0x35')](_0x2bfcf5['model'],_0x2bfcf5['query']);_0x6698f4['attributes']=_[_0x98bd('0x35')](_0x2bfcf5[_0x98bd('0x31')],qs[_0x98bd('0x37')](_0x1ea760[_0x98bd('0x33')][_0x98bd('0x37')]));_0x6698f4[_0x98bd('0x36')]=_0x6698f4['attributes'][_0x98bd('0x50')]?_0x6698f4['attributes']:_0x2bfcf5['model'];_0x6698f4[_0x98bd('0x3a')]=qs[_0x98bd('0x3b')](_0x1ea760[_0x98bd('0x33')][_0x98bd('0x3b')]);_0x6698f4[_0x98bd('0x3f')]=qs[_0x98bd('0x34')](_[_0x98bd('0x3c')](_0x1ea760[_0x98bd('0x33')],_0x2bfcf5[_0x98bd('0x34')]));if(_0x1ea760[_0x98bd('0x33')][_0x98bd('0x3d')]){_0x6698f4[_0x98bd('0x3f')]=_[_0x98bd('0x3e')](_0x6698f4[_0x98bd('0x3f')],{'$or':_['map'](_0x6698f4[_0x98bd('0x36')],function(_0xe670cc){var _0x376d7c={};_0x376d7c[_0xe670cc]={'$like':'%'+_0x1ea760['query'][_0x98bd('0x3d')]+'%'};return _0x376d7c;})});}_0x6698f4=_[_0x98bd('0x3e')]({},_0x6698f4,_0x1ea760[_0x98bd('0x48')]);return _0x5a8f0d[_0x98bd('0x4e')](_0x6698f4);}})[_0x98bd('0x25')](function(_0x43c976){if(_0x43c976){_0x5988b0=_0x43c976[_0x98bd('0x50')];if(!_0x1ea760['query'][_0x98bd('0x38')]('nolimit')){_0x6698f4[_0x98bd('0x1f')]=qs[_0x98bd('0x1f')](_0x1ea760['query']['limit']);_0x6698f4[_0x98bd('0x20')]=qs[_0x98bd('0x20')](_0x1ea760[_0x98bd('0x33')][_0x98bd('0x20')]);}return _0x5a8f0d[_0x98bd('0x4e')](_0x6698f4);}})['then'](function(_0x15d1b1){if(_0x15d1b1){return _0x15d1b1?{'count':_0x5988b0,'rows':_0x15d1b1}:null;}})[_0x98bd('0x25')](respondWithResult(_0x49ea17,null))[_0x98bd('0x47')](handleError(_0x49ea17,null));};exports['addConfiguration']=function(_0x7d4b37,_0x16f933,_0x589b59){if(_0x7d4b37[_0x98bd('0x4b')]['id']){delete _0x7d4b37[_0x98bd('0x4b')]['id'];}return db[_0x98bd('0x2c')]['findOne']({'where':{'id':_0x7d4b37[_0x98bd('0x4c')]['id']}})[_0x98bd('0x25')](handleEntityNotFound(_0x16f933,null))[_0x98bd('0x25')](function(_0x2391d1){if(_0x2391d1){_0x7d4b37[_0x98bd('0x4b')][_0x98bd('0x51')]=_0x2391d1['id'];_0x7d4b37[_0x98bd('0x4b')][_0x98bd('0x52')]=integrations[_0x98bd('0x53')](_0x7d4b37[_0x98bd('0x4b')][_0x98bd('0x54')],_0x7d4b37[_0x98bd('0x4b')]['type']);_0x7d4b37['body']['Descriptions']=integrations[_0x98bd('0x55')](_0x7d4b37['body'][_0x98bd('0x54')],_0x7d4b37[_0x98bd('0x4b')][_0x98bd('0x2f')]);return db[_0x98bd('0x56')][_0x98bd('0x4a')](_0x7d4b37[_0x98bd('0x4b')],{'include':[{'model':db[_0x98bd('0x57')],'as':_0x98bd('0x52')},{'model':db[_0x98bd('0x57')],'as':'Descriptions'}]});}return null;})[_0x98bd('0x25')](respondWithResult(_0x16f933,null))[_0x98bd('0x47')](handleError(_0x16f933,null));};exports[_0x98bd('0x58')]=function(_0x55bd44,_0x482e58,_0x35a0dc){var _0x329e0d;var _0x31333f='';var _0x4602a0=_0x98bd('0x59');return db['SalesforceAccount']['findOne']({'where':{'id':_0x55bd44[_0x98bd('0x4c')]['id']},'attributes':['id',_0x98bd('0x5a'),'clientId',_0x98bd('0x5b'),'username',_0x98bd('0x5c'),_0x98bd('0x5d')]})[_0x98bd('0x25')](handleEntityNotFound(_0x482e58,null))['then'](function(_0x22d18b){if(_0x22d18b){_0x31333f=_0x22d18b['remoteUri'];var _0x1a9375=_0x31333f[_0x98bd('0x5e')](-0x1);if(_0x1a9375==='/'){_0x31333f=_0x31333f['substring'](0x0,_0x31333f[_0x98bd('0x5f')](_0x1a9375));}_0x329e0d=new jsforce[(_0x98bd('0x60'))]({'oauth2':{'loginUrl':_0x31333f,'clientId':_0x22d18b[_0x98bd('0x61')],'clientSecret':_0x22d18b[_0x98bd('0x5b')]}});return _0x329e0d[_0x98bd('0x62')](_0x22d18b[_0x98bd('0x63')],_0x22d18b[_0x98bd('0x5c')][_0x98bd('0x64')](_0x22d18b[_0x98bd('0x5d')]));}})['then'](function(_0x2aa084){if(_0x2aa084){if(!_[_0x98bd('0x65')](_0x55bd44[_0x98bd('0x33')]['ticketType'])){_0x4602a0=_0x55bd44[_0x98bd('0x33')][_0x98bd('0x66')];}return _0x329e0d['sobject'](_0x4602a0)[_0x98bd('0x67')]();}})[_0x98bd('0x25')](function(_0x3ed8c3){var _0x57a210=[_0x98bd('0x68'),_0x98bd('0x69'),'IsReminderSet',_0x98bd('0x6a'),'Subject','Description'];var _0x1bf2f0=[_0x98bd('0x6b'),_0x98bd('0x6c'),_0x98bd('0x6d'),'boolean',_0x98bd('0x6e'),_0x98bd('0x6f'),_0x98bd('0x70')];if(_0x3ed8c3){_[_0x98bd('0x71')](_0x3ed8c3[_0x98bd('0x37')],function(_0x47141c){return _0x57a210[_0x98bd('0x72')](_0x47141c['name'])||!_0x1bf2f0[_0x98bd('0x72')](_0x47141c[_0x98bd('0x2f')]);});return{'count':_0x3ed8c3['fields'][_0x98bd('0x50')],'rows':_['map'](_0x3ed8c3['fields'],function(_0x5d4a1b){return{'id':_0x5d4a1b[_0x98bd('0x29')],'name':_0x5d4a1b[_0x98bd('0x73')],'custom':_0x5d4a1b['custom'],'options':_0x5d4a1b[_0x98bd('0x74')][_0x98bd('0x50')]>0x0?_[_0x98bd('0x40')](_0x5d4a1b[_0x98bd('0x74')],function(_0x386ba8){return{'name':_0x386ba8[_0x98bd('0x73')],'value':_0x386ba8[_0x98bd('0x75')]};}):_0x5d4a1b[_0x98bd('0x2f')]=='boolean'?[{'name':_0x98bd('0x76'),'value':_0x98bd('0x77')},{'name':'False','value':_0x98bd('0x78')}]:[]};})};}})[_0x98bd('0x25')](respondWithResult(_0x482e58,null))[_0x98bd('0x47')](function(_0x3aca6a){var _0x280518=_0x55bd44[_0x98bd('0x33')][_0x98bd('0x79')]?0x1f4:_0x3aca6a[_0x98bd('0x7a')]||0x1f4;logger['error'](_0x98bd('0x7b'),'getFields',_0x280518,JSON[_0x98bd('0x7c')](_0x3aca6a));delete _0x3aca6a[_0x98bd('0x29')];if(_0x280518===0x191){_0x280518=0x190;}_0x482e58[_0x98bd('0x1c')](_0x280518)[_0x98bd('0x2a')](_0x55bd44[_0x98bd('0x33')][_0x98bd('0x79')]?{'message':_0x98bd('0x7d'),'statusCode':_0x3aca6a[_0x98bd('0x7a')]}:_0x3aca6a);});};
\ No newline at end of file
index 2a56a56..934ebdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed4b=['bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','moment'];(function(_0x3ebb69,_0x3e612e){var _0x421e59=function(_0x5a8c66){while(--_0x5a8c66){_0x3ebb69['push'](_0x3ebb69['shift']());}};_0x421e59(++_0x3e612e);}(_0xed4b,0x96));var _0xbed4=function(_0x36c6cc,_0x24e0ea){_0x36c6cc=_0x36c6cc-0x0;var _0x2dbc6f=_0xed4b[_0x36c6cc];return _0x2dbc6f;};'use strict';var _=require(_0xbed4('0x0'));var util=require(_0xbed4('0x1'));var logger=require(_0xbed4('0x2'))('api');var moment=require(_0xbed4('0x3'));var BPromise=require(_0xbed4('0x4'));var rp=require(_0xbed4('0x5'));var fs=require('fs');var path=require(_0xbed4('0x6'));var rimraf=require(_0xbed4('0x7'));var config=require(_0xbed4('0x8'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0xbed4('0x9'));module[_0xbed4('0xa')]=function(_0x403756,_0x272560){return _0x403756[_0xbed4('0xb')](_0xbed4('0xc'),attributes,{'tableName':_0xbed4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e14=['lodash','util','api','bluebird','request-promise','../../config/environment','SalesforceAccount','int_salesforce_accounts'];(function(_0x107313,_0x8a055b){var _0x1fcd2e=function(_0x55ef17){while(--_0x55ef17){_0x107313['push'](_0x107313['shift']());}};_0x1fcd2e(++_0x8a055b);}(_0x2e14,0x158));var _0x42e1=function(_0x589c08,_0x264b33){_0x589c08=_0x589c08-0x0;var _0xc21d72=_0x2e14[_0x589c08];return _0xc21d72;};'use strict';var _=require(_0x42e1('0x0'));var util=require(_0x42e1('0x1'));var logger=require('../../config/logger')(_0x42e1('0x2'));var moment=require('moment');var BPromise=require(_0x42e1('0x3'));var rp=require(_0x42e1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x42e1('0x5'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x59030f,_0x932744){return _0x59030f['define'](_0x42e1('0x6'),attributes,{'tableName':_0x42e1('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c54c3f9..1c42ac3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5120=['http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','GetSalesforceAccount','options','where','attributes','limit','include','map','model','stringify','catch','ShowSalesforceAccount','SalesforceAccount','find','lodash','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x365950,_0x3f41e6){var _0xc258b7=function(_0xba9e87){while(--_0xba9e87){_0x365950['push'](_0x365950['shift']());}};_0xc258b7(++_0x3f41e6);}(_0x5120,0xdf));var _0x0512=function(_0x4c6bca,_0x3de390){_0x4c6bca=_0x4c6bca-0x0;var _0x29d58e=_0x5120[_0x4c6bca];return _0x29d58e;};'use strict';var _=require(_0x0512('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0512('0x1'));var rs=require(_0x0512('0x2'));var fs=require('fs');var Redis=require(_0x0512('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0512('0x4'))('rpc');var config=require(_0x0512('0x5'));var jayson=require(_0x0512('0x6'));var client=jayson[_0x0512('0x7')][_0x0512('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xafc18e,_0x5d54e0,_0x5492a6){return new BPromise(function(_0x2a3e64,_0x189739){return client[_0x0512('0x9')](_0xafc18e,_0x5492a6)[_0x0512('0xa')](function(_0x4bcf40){logger[_0x0512('0xb')](_0x0512('0xc'),_0x5d54e0,_0x0512('0xd'));logger[_0x0512('0xe')](_0x0512('0xf'),_0x5d54e0,_0x0512('0xd'),JSON['stringify'](_0x4bcf40));if(_0x4bcf40[_0x0512('0x10')]){if(_0x4bcf40[_0x0512('0x10')][_0x0512('0x11')]===0x1f4){logger[_0x0512('0x10')](_0x0512('0xc'),_0x5d54e0,_0x4bcf40['error'][_0x0512('0x12')]);return _0x189739(_0x4bcf40[_0x0512('0x10')][_0x0512('0x12')]);}logger[_0x0512('0x10')](_0x0512('0xc'),_0x5d54e0,_0x4bcf40[_0x0512('0x10')][_0x0512('0x12')]);return _0x2a3e64(_0x4bcf40[_0x0512('0x10')]['message']);}else{logger[_0x0512('0xb')](_0x0512('0xc'),_0x5d54e0,_0x0512('0xd'));_0x2a3e64(_0x4bcf40[_0x0512('0x13')][_0x0512('0x12')]);}})['catch'](function(_0x1d28c9){logger[_0x0512('0x10')]('SalesforceAccount,\x20%s,\x20%s',_0x5d54e0,_0x1d28c9);_0x189739(_0x1d28c9);});});}exports[_0x0512('0x14')]=function(_0x478f85){var _0x2523ca=this;return new Promise(function(_0x236ea9,_0x37eac0){return db['SalesforceAccount']['findAll']({'raw':_0x478f85[_0x0512('0x15')]?_0x478f85[_0x0512('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x478f85['options']?_0x478f85[_0x0512('0x15')][_0x0512('0x16')]||null:null,'attributes':_0x478f85[_0x0512('0x15')]?_0x478f85[_0x0512('0x15')][_0x0512('0x17')]||null:null,'limit':_0x478f85[_0x0512('0x15')]?_0x478f85[_0x0512('0x15')][_0x0512('0x18')]||null:null,'include':_0x478f85[_0x0512('0x15')]?_0x478f85[_0x0512('0x15')][_0x0512('0x19')]?_[_0x0512('0x1a')](_0x478f85[_0x0512('0x15')][_0x0512('0x19')],function(_0x56a9be){return{'model':db[_0x56a9be[_0x0512('0x1b')]],'as':_0x56a9be['as'],'attributes':_0x56a9be[_0x0512('0x17')],'include':_0x56a9be[_0x0512('0x19')]?_['map'](_0x56a9be[_0x0512('0x19')],function(_0x3e229e){return{'model':db[_0x3e229e[_0x0512('0x1b')]],'as':_0x3e229e['as'],'attributes':_0x3e229e['attributes'],'include':_0x3e229e[_0x0512('0x19')]?_[_0x0512('0x1a')](_0x3e229e[_0x0512('0x19')],function(_0xb784f5){return{'model':db[_0xb784f5[_0x0512('0x1b')]],'as':_0xb784f5['as'],'attributes':_0xb784f5[_0x0512('0x17')]};}):[]};}):[]};}):[]:[]})[_0x0512('0xa')](function(_0x45130a){logger[_0x0512('0xb')](_0x0512('0x14'),_0x478f85);logger[_0x0512('0xe')](_0x0512('0x14'),_0x478f85,JSON[_0x0512('0x1c')](_0x45130a));_0x236ea9(_0x45130a);})[_0x0512('0x1d')](function(_0x4578a2){logger[_0x0512('0x10')]('GetSalesforceAccount',_0x4578a2[_0x0512('0x12')],_0x478f85);_0x37eac0(_0x2523ca[_0x0512('0x10')](0x1f4,_0x4578a2[_0x0512('0x12')]));});});};exports[_0x0512('0x1e')]=function(_0x1c9ef7){var _0xbdb841=this;return new Promise(function(_0x536aaa,_0xe31514){return db[_0x0512('0x1f')][_0x0512('0x20')]({'raw':_0x1c9ef7[_0x0512('0x15')]?_0x1c9ef7[_0x0512('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x1c9ef7['options']?_0x1c9ef7[_0x0512('0x15')]['where']||null:null,'attributes':_0x1c9ef7[_0x0512('0x15')]?_0x1c9ef7['options']['attributes']||null:null,'include':_0x1c9ef7[_0x0512('0x15')]?_0x1c9ef7[_0x0512('0x15')][_0x0512('0x19')]?_[_0x0512('0x1a')](_0x1c9ef7[_0x0512('0x15')]['include'],function(_0x4ad08a){return{'model':db[_0x4ad08a[_0x0512('0x1b')]],'as':_0x4ad08a['as'],'attributes':_0x4ad08a[_0x0512('0x17')],'include':_0x4ad08a[_0x0512('0x19')]?_['map'](_0x4ad08a[_0x0512('0x19')],function(_0x23647a){return{'model':db[_0x23647a[_0x0512('0x1b')]],'as':_0x23647a['as'],'attributes':_0x23647a[_0x0512('0x17')],'include':_0x23647a[_0x0512('0x19')]?_['map'](_0x23647a['include'],function(_0x5d7b6e){return{'model':db[_0x5d7b6e[_0x0512('0x1b')]],'as':_0x5d7b6e['as'],'attributes':_0x5d7b6e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x612848){logger[_0x0512('0xb')](_0x0512('0x1e'),_0x1c9ef7);logger[_0x0512('0xe')](_0x0512('0x1e'),_0x1c9ef7,JSON[_0x0512('0x1c')](_0x612848));_0x536aaa(_0x612848);})[_0x0512('0x1d')](function(_0x7052ab){logger[_0x0512('0x10')](_0x0512('0x1e'),_0x7052ab[_0x0512('0x12')],_0x1c9ef7);_0xe31514(_0xbdb841[_0x0512('0x10')](0x1f4,_0x7052ab['message']));});});};
\ No newline at end of file
+var _0x7218=['SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','where','attributes','limit','map','include','model','then','catch','ShowSalesforceAccount','find','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','http','request','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3290fa,_0x402648){var _0x18e2e5=function(_0x4207da){while(--_0x4207da){_0x3290fa['push'](_0x3290fa['shift']());}};_0x18e2e5(++_0x402648);}(_0x7218,0x196));var _0x8721=function(_0x267967,_0x22a241){_0x267967=_0x267967-0x0;var _0x5a2f3e=_0x7218[_0x267967];return _0x5a2f3e;};'use strict';var _=require(_0x8721('0x0'));var util=require('util');var moment=require(_0x8721('0x1'));var BPromise=require(_0x8721('0x2'));var rs=require(_0x8721('0x3'));var fs=require('fs');var Redis=require(_0x8721('0x4'));var db=require(_0x8721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8721('0x6'));var config=require('../../config/environment');var jayson=require(_0x8721('0x7'));var client=jayson['client'][_0x8721('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2dcb50,_0x1d7b62,_0x1c9d2d){return new BPromise(function(_0x26782d,_0x58c362){return client[_0x8721('0x9')](_0x2dcb50,_0x1c9d2d)['then'](function(_0x50e3b2){logger[_0x8721('0xa')](_0x8721('0xb'),_0x1d7b62,_0x8721('0xc'));logger[_0x8721('0xd')](_0x8721('0xe'),_0x1d7b62,_0x8721('0xc'),JSON[_0x8721('0xf')](_0x50e3b2));if(_0x50e3b2[_0x8721('0x10')]){if(_0x50e3b2['error'][_0x8721('0x11')]===0x1f4){logger[_0x8721('0x10')]('SalesforceAccount,\x20%s,\x20%s',_0x1d7b62,_0x50e3b2[_0x8721('0x10')][_0x8721('0x12')]);return _0x58c362(_0x50e3b2[_0x8721('0x10')]['message']);}logger[_0x8721('0x10')](_0x8721('0xb'),_0x1d7b62,_0x50e3b2['error'][_0x8721('0x12')]);return _0x26782d(_0x50e3b2[_0x8721('0x10')]['message']);}else{logger['info'](_0x8721('0xb'),_0x1d7b62,'request\x20sent');_0x26782d(_0x50e3b2[_0x8721('0x13')][_0x8721('0x12')]);}})['catch'](function(_0x4de134){logger[_0x8721('0x10')]('SalesforceAccount,\x20%s,\x20%s',_0x1d7b62,_0x4de134);_0x58c362(_0x4de134);});});}exports[_0x8721('0x14')]=function(_0x9754bb){var _0x492232=this;return new Promise(function(_0x2358de,_0x31ae2d){return db[_0x8721('0x15')][_0x8721('0x16')]({'raw':_0x9754bb[_0x8721('0x17')]?_0x9754bb['options'][_0x8721('0x18')]===undefined?!![]:![]:!![],'where':_0x9754bb[_0x8721('0x17')]?_0x9754bb[_0x8721('0x17')][_0x8721('0x19')]||null:null,'attributes':_0x9754bb['options']?_0x9754bb[_0x8721('0x17')][_0x8721('0x1a')]||null:null,'limit':_0x9754bb[_0x8721('0x17')]?_0x9754bb[_0x8721('0x17')][_0x8721('0x1b')]||null:null,'include':_0x9754bb[_0x8721('0x17')]?_0x9754bb[_0x8721('0x17')]['include']?_[_0x8721('0x1c')](_0x9754bb[_0x8721('0x17')][_0x8721('0x1d')],function(_0x37d6d2){return{'model':db[_0x37d6d2[_0x8721('0x1e')]],'as':_0x37d6d2['as'],'attributes':_0x37d6d2[_0x8721('0x1a')],'include':_0x37d6d2[_0x8721('0x1d')]?_[_0x8721('0x1c')](_0x37d6d2['include'],function(_0x251bd5){return{'model':db[_0x251bd5[_0x8721('0x1e')]],'as':_0x251bd5['as'],'attributes':_0x251bd5[_0x8721('0x1a')],'include':_0x251bd5[_0x8721('0x1d')]?_['map'](_0x251bd5[_0x8721('0x1d')],function(_0x5c2388){return{'model':db[_0x5c2388[_0x8721('0x1e')]],'as':_0x5c2388['as'],'attributes':_0x5c2388['attributes']};}):[]};}):[]};}):[]:[]})[_0x8721('0x1f')](function(_0x1e90d7){logger[_0x8721('0xa')](_0x8721('0x14'),_0x9754bb);logger[_0x8721('0xd')](_0x8721('0x14'),_0x9754bb,JSON[_0x8721('0xf')](_0x1e90d7));_0x2358de(_0x1e90d7);})[_0x8721('0x20')](function(_0x4f192e){logger['error'](_0x8721('0x14'),_0x4f192e[_0x8721('0x12')],_0x9754bb);_0x31ae2d(_0x492232[_0x8721('0x10')](0x1f4,_0x4f192e[_0x8721('0x12')]));});});};exports[_0x8721('0x21')]=function(_0x399549){var _0xd49530=this;return new Promise(function(_0x1eb488,_0x381d34){return db[_0x8721('0x15')][_0x8721('0x22')]({'raw':_0x399549['options']?_0x399549[_0x8721('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x399549[_0x8721('0x17')]?_0x399549[_0x8721('0x17')]['where']||null:null,'attributes':_0x399549[_0x8721('0x17')]?_0x399549['options'][_0x8721('0x1a')]||null:null,'include':_0x399549[_0x8721('0x17')]?_0x399549[_0x8721('0x17')][_0x8721('0x1d')]?_[_0x8721('0x1c')](_0x399549[_0x8721('0x17')][_0x8721('0x1d')],function(_0x4cca06){return{'model':db[_0x4cca06[_0x8721('0x1e')]],'as':_0x4cca06['as'],'attributes':_0x4cca06[_0x8721('0x1a')],'include':_0x4cca06[_0x8721('0x1d')]?_['map'](_0x4cca06['include'],function(_0x51943f){return{'model':db[_0x51943f[_0x8721('0x1e')]],'as':_0x51943f['as'],'attributes':_0x51943f[_0x8721('0x1a')],'include':_0x51943f['include']?_[_0x8721('0x1c')](_0x51943f['include'],function(_0x336f3e){return{'model':db[_0x336f3e[_0x8721('0x1e')]],'as':_0x336f3e['as'],'attributes':_0x336f3e[_0x8721('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x8721('0x1f')](function(_0x29fec5){logger[_0x8721('0xa')](_0x8721('0x21'),_0x399549);logger['debug'](_0x8721('0x21'),_0x399549,JSON['stringify'](_0x29fec5));_0x1eb488(_0x29fec5);})[_0x8721('0x20')](function(_0x4aea50){logger['error']('ShowSalesforceAccount',_0x4aea50['message'],_0x399549);_0x381d34(_0xd49530[_0x8721('0x10')](0x1f4,_0x4aea50[_0x8721('0x12')]));});});};
\ No newline at end of file
index f7ad1cf..6f7e61c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0x5151bb,_0x37d8df){var _0x4ea1c3=function(_0x5c1351){while(--_0x5c1351){_0x5151bb['push'](_0x5151bb['shift']());}};_0x4ea1c3(++_0x37d8df);}(_0x2ef3,0xba));var _0x32ef=function(_0x5e7571,_0x29f411){_0x5e7571=_0x5e7571-0x0;var _0x20f4c4=_0x2ef3[_0x5e7571];return _0x20f4c4;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
+var _0x5f66=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects','getSubjects','put','update','delete','destroy','exports','util','connect-timeout'];(function(_0x3a351a,_0x1411a5){var _0x26f99d=function(_0x31865f){while(--_0x31865f){_0x3a351a['push'](_0x3a351a['shift']());}};_0x26f99d(++_0x1411a5);}(_0x5f66,0x1a0));var _0x65f6=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x5f66[_0x17d9e3];return _0x14192d;};'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('./intSalesforceConfiguration.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['getFields']);router['get'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0x7')]('/:id/descriptions',auth[_0x65f6('0x8')](),controller['getDescriptions']);router['post']('/',auth[_0x65f6('0x8')](),controller['create']);router[_0x65f6('0xe')]('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xf')]);router[_0x65f6('0x10')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x11')]);module[_0x65f6('0x12')]=router;
\ No newline at end of file
index 53ead92..61e7e61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cde=['sequelize','exports','STRING','ENUM','Task','Case','contact_lead','contact','lead','account','nothing'];(function(_0x29a839,_0xde707){var _0x422d6c=function(_0x38fc3e){while(--_0x38fc3e){_0x29a839['push'](_0x29a839['shift']());}};_0x422d6c(++_0xde707);}(_0x0cde,0x181));var _0xe0cd=function(_0x4a1b43,_0x3462d2){_0x4a1b43=_0x4a1b43-0x0;var _0x3c11d7=_0x0cde[_0x4a1b43];return _0x3c11d7;};'use strict';var Sequelize=require(_0xe0cd('0x0'));module[_0xe0cd('0x1')]={'name':{'type':Sequelize[_0xe0cd('0x2')]},'description':{'type':Sequelize[_0xe0cd('0x2')]},'ticketType':{'type':Sequelize[_0xe0cd('0x3')](_0xe0cd('0x4'),_0xe0cd('0x5')),'defaultValue':_0xe0cd('0x4')},'moduleSearch':{'type':Sequelize[_0xe0cd('0x3')](_0xe0cd('0x6'),_0xe0cd('0x7'),_0xe0cd('0x8'),'account_contact_lead',_0xe0cd('0x9')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0xe0cd('0x3')](_0xe0cd('0xa'),_0xe0cd('0x7'),'lead','account'),'defaultValue':_0xe0cd('0x8')},'leadId':{'type':Sequelize[_0xe0cd('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0xe0cd('0x2')]},'additionalSearchContact':{'type':Sequelize[_0xe0cd('0x2')]},'additionalSearchLead':{'type':Sequelize[_0xe0cd('0x2')]}};
\ No newline at end of file
+var _0xad26=['contact','sequelize','exports','STRING','ENUM','Case','Task','contact_lead','lead','account_contact_lead','account','nothing'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0xad26,0x1b1));var _0x6ad2=function(_0x15c421,_0x6366f7){_0x15c421=_0x15c421-0x0;var _0x5e5ed5=_0xad26[_0x15c421];return _0x5e5ed5;};'use strict';var Sequelize=require(_0x6ad2('0x0'));module[_0x6ad2('0x1')]={'name':{'type':Sequelize[_0x6ad2('0x2')]},'description':{'type':Sequelize[_0x6ad2('0x2')]},'ticketType':{'type':Sequelize[_0x6ad2('0x3')]('Task',_0x6ad2('0x4')),'defaultValue':_0x6ad2('0x5')},'moduleSearch':{'type':Sequelize[_0x6ad2('0x3')](_0x6ad2('0x6'),'contact',_0x6ad2('0x7'),_0x6ad2('0x8'),_0x6ad2('0x9')),'defaultValue':_0x6ad2('0x6')},'moduleCreate':{'type':Sequelize[_0x6ad2('0x3')](_0x6ad2('0xa'),_0x6ad2('0xb'),_0x6ad2('0x7'),_0x6ad2('0x9')),'defaultValue':'lead'},'leadId':{'type':Sequelize[_0x6ad2('0x2')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x6ad2('0x2')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1de726e..b5accb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e34=['params','keys','length','find','create','body','update','getFields','SalesforceField','sort','findOne','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','to-csv','ejs','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','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','where','pick','merge','VIRTUAL','filter','options','includeAll','rows','catch','show'];(function(_0x245cb3,_0xcc77d4){var _0x98946b=function(_0x18b9da){while(--_0x18b9da){_0x245cb3['push'](_0x245cb3['shift']());}};_0x98946b(++_0xcc77d4);}(_0x6e34,0x159));var _0x46e3=function(_0x25d01d,_0x2b0b44){_0x25d01d=_0x25d01d-0x0;var _0x5c741d=_0x6e34[_0x25d01d];return _0x5c741d;};'use strict';var emlformat=require(_0x46e3('0x0'));var rimraf=require(_0x46e3('0x1'));var zipdir=require(_0x46e3('0x2'));var jsonpatch=require(_0x46e3('0x3'));var rp=require('request-promise');var moment=require(_0x46e3('0x4'));var BPromise=require(_0x46e3('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x46e3('0x6'));var sox=require('sox');var csv=require(_0x46e3('0x7'));var ejs=require(_0x46e3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x46e3('0x9'));var squel=require(_0x46e3('0xa'));var crypto=require(_0x46e3('0xb'));var jsforce=require(_0x46e3('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x46e3('0x7'));var querystring=require(_0x46e3('0xd'));var Papa=require(_0x46e3('0xe'));var Redis=require(_0x46e3('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x46e3('0x10'));var as=require(_0x46e3('0x11'));var hardwareService=require(_0x46e3('0x12'));var logger=require(_0x46e3('0x13'))(_0x46e3('0x14'));var utils=require(_0x46e3('0x15'));var config=require(_0x46e3('0x16'));var licenseUtil=require(_0x46e3('0x17'));var db=require(_0x46e3('0x18'))['db'];function respondWithStatusCode(_0x2ad7d4,_0x5374de){_0x5374de=_0x5374de||0xcc;return function(_0x30b37a){if(_0x30b37a){return _0x2ad7d4[_0x46e3('0x19')](_0x5374de);}return _0x2ad7d4['status'](_0x5374de)[_0x46e3('0x1a')]();};}function respondWithResult(_0x2393e0,_0x27fc34){_0x27fc34=_0x27fc34||0xc8;return function(_0x3607e1){if(_0x3607e1){return _0x2393e0[_0x46e3('0x1b')](_0x27fc34)[_0x46e3('0x1c')](_0x3607e1);}};}function respondWithFilteredResult(_0x3fad45,_0x283eb7){return function(_0x4a78e7){if(_0x4a78e7){var _0x244d3d=typeof _0x283eb7[_0x46e3('0x1d')]===_0x46e3('0x1e')&&typeof _0x283eb7[_0x46e3('0x1f')]===_0x46e3('0x1e');var _0x47ae2f=_0x4a78e7[_0x46e3('0x20')];var _0x259c3f=_0x244d3d?0x0:_0x283eb7[_0x46e3('0x1d')];var _0x45eafe=_0x244d3d?_0x4a78e7['count']:_0x283eb7[_0x46e3('0x1d')]+_0x283eb7[_0x46e3('0x1f')];var _0x4ab44d;if(_0x45eafe>=_0x47ae2f){_0x45eafe=_0x47ae2f;_0x4ab44d=0xc8;}else{_0x4ab44d=0xce;}_0x3fad45['status'](_0x4ab44d);return _0x3fad45[_0x46e3('0x21')](_0x46e3('0x22'),_0x259c3f+'-'+_0x45eafe+'/'+_0x47ae2f)[_0x46e3('0x1c')](_0x4a78e7);}return null;};}function patchUpdates(_0x3de053){return function(_0x44fb95){try{jsonpatch[_0x46e3('0x23')](_0x44fb95,_0x3de053,!![]);}catch(_0x55d733){return BPromise[_0x46e3('0x24')](_0x55d733);}return _0x44fb95[_0x46e3('0x25')]();};}function saveUpdates(_0x2e219f,_0x2f817a){return function(_0x16c4b7){if(_0x16c4b7){return _0x16c4b7['update'](_0x2e219f)[_0x46e3('0x26')](function(_0x29d713){return _0x29d713;});}return null;};}function removeEntity(_0x251a1f,_0x53ccc4){return function(_0x3d3190){if(_0x3d3190){return _0x3d3190[_0x46e3('0x27')]()[_0x46e3('0x26')](function(){_0x251a1f[_0x46e3('0x1b')](0xcc)[_0x46e3('0x1a')]();});}};}function handleEntityNotFound(_0x5c8d4e,_0x2d2816){return function(_0x16c777){if(!_0x16c777){_0x5c8d4e[_0x46e3('0x19')](0x194);}return _0x16c777;};}function handleError(_0x564e12,_0x427ca3){_0x427ca3=_0x427ca3||0x1f4;return function(_0x2a1726){logger[_0x46e3('0x28')](_0x2a1726[_0x46e3('0x29')]);if(_0x2a1726[_0x46e3('0x2a')]){delete _0x2a1726[_0x46e3('0x2a')];}_0x564e12[_0x46e3('0x1b')](_0x427ca3)[_0x46e3('0x2b')](_0x2a1726);};}exports[_0x46e3('0x2c')]=function(_0x287e11,_0x31e91a){var _0xd15ad5={},_0x1c8b1c={},_0x86b742={'count':0x0,'rows':[]};var _0x5a8e99=_[_0x46e3('0x2d')](db[_0x46e3('0x2e')][_0x46e3('0x2f')],function(_0x141993){return{'name':_0x141993[_0x46e3('0x30')],'type':_0x141993[_0x46e3('0x31')][_0x46e3('0x32')]};});_0x1c8b1c[_0x46e3('0x33')]=_[_0x46e3('0x2d')](_0x5a8e99,'name');_0x1c8b1c[_0x46e3('0x34')]=_['keys'](_0x287e11[_0x46e3('0x34')]);_0x1c8b1c[_0x46e3('0x35')]=_['intersection'](_0x1c8b1c[_0x46e3('0x33')],_0x1c8b1c['query']);_0xd15ad5['attributes']=_[_0x46e3('0x36')](_0x1c8b1c['model'],qs[_0x46e3('0x37')](_0x287e11[_0x46e3('0x34')][_0x46e3('0x37')]));_0xd15ad5[_0x46e3('0x38')]=_0xd15ad5[_0x46e3('0x38')]['length']?_0xd15ad5[_0x46e3('0x38')]:_0x1c8b1c[_0x46e3('0x33')];if(!_0x287e11[_0x46e3('0x34')][_0x46e3('0x39')](_0x46e3('0x3a'))){_0xd15ad5[_0x46e3('0x1f')]=qs[_0x46e3('0x1f')](_0x287e11[_0x46e3('0x34')]['limit']);_0xd15ad5[_0x46e3('0x1d')]=qs[_0x46e3('0x1d')](_0x287e11[_0x46e3('0x34')][_0x46e3('0x1d')]);}_0xd15ad5[_0x46e3('0x3b')]=qs['sort'](_0x287e11[_0x46e3('0x34')]['sort']);_0xd15ad5[_0x46e3('0x3c')]=qs[_0x46e3('0x35')](_[_0x46e3('0x3d')](_0x287e11[_0x46e3('0x34')],_0x1c8b1c[_0x46e3('0x35')]),_0x5a8e99);if(_0x287e11[_0x46e3('0x34')]['filter']){_0xd15ad5[_0x46e3('0x3c')]=_[_0x46e3('0x3e')](_0xd15ad5['where'],{'$or':_['map'](_0x5a8e99,function(_0x266b00){if(_0x266b00[_0x46e3('0x31')]!==_0x46e3('0x3f')){var _0x3263d6={};_0x3263d6[_0x266b00['name']]={'$like':'%'+_0x287e11['query'][_0x46e3('0x40')]+'%'};return _0x3263d6;}})});}_0xd15ad5=_['merge']({},_0xd15ad5,_0x287e11[_0x46e3('0x41')]);var _0x2a21b7={'where':_0xd15ad5[_0x46e3('0x3c')]};return db[_0x46e3('0x2e')][_0x46e3('0x20')](_0x2a21b7)[_0x46e3('0x26')](function(_0x3685f4){_0x86b742['count']=_0x3685f4;if(_0x287e11['query'][_0x46e3('0x42')]){_0xd15ad5['include']=[{'all':!![]}];}return db['SalesforceConfiguration']['findAll'](_0xd15ad5);})[_0x46e3('0x26')](function(_0x58595e){_0x86b742[_0x46e3('0x43')]=_0x58595e;return _0x86b742;})['then'](respondWithFilteredResult(_0x31e91a,_0xd15ad5))[_0x46e3('0x44')](handleError(_0x31e91a,null));};exports[_0x46e3('0x45')]=function(_0x4c437a,_0x1eda35){var _0x1f8d33={'raw':![],'where':{'id':_0x4c437a[_0x46e3('0x46')]['id']}},_0x2a3bf2={};_0x2a3bf2[_0x46e3('0x33')]=_[_0x46e3('0x47')](db[_0x46e3('0x2e')]['rawAttributes']);_0x2a3bf2[_0x46e3('0x34')]=_[_0x46e3('0x47')](_0x4c437a[_0x46e3('0x34')]);_0x2a3bf2['filters']=_['intersection'](_0x2a3bf2['model'],_0x2a3bf2[_0x46e3('0x34')]);_0x1f8d33[_0x46e3('0x38')]=_[_0x46e3('0x36')](_0x2a3bf2[_0x46e3('0x33')],qs[_0x46e3('0x37')](_0x4c437a[_0x46e3('0x34')][_0x46e3('0x37')]));_0x1f8d33['attributes']=_0x1f8d33[_0x46e3('0x38')][_0x46e3('0x48')]?_0x1f8d33[_0x46e3('0x38')]:_0x2a3bf2[_0x46e3('0x33')];if(_0x4c437a['query'][_0x46e3('0x42')]){_0x1f8d33['include']=[{'all':!![]}];}_0x1f8d33=_[_0x46e3('0x3e')]({},_0x1f8d33,_0x4c437a[_0x46e3('0x41')]);return db[_0x46e3('0x2e')][_0x46e3('0x49')](_0x1f8d33)['then'](handleEntityNotFound(_0x1eda35,null))[_0x46e3('0x26')](respondWithResult(_0x1eda35,null))[_0x46e3('0x44')](handleError(_0x1eda35,null));};exports[_0x46e3('0x4a')]=function(_0x3e2d95,_0x3f334b){return db[_0x46e3('0x2e')][_0x46e3('0x4a')](_0x3e2d95[_0x46e3('0x4b')],{})[_0x46e3('0x26')](respondWithResult(_0x3f334b,0xc9))[_0x46e3('0x44')](handleError(_0x3f334b,null));};exports[_0x46e3('0x4c')]=function(_0x31c68f,_0x37fcaf){if(_0x31c68f['body']['id']){delete _0x31c68f[_0x46e3('0x4b')]['id'];}return db[_0x46e3('0x2e')][_0x46e3('0x49')]({'where':{'id':_0x31c68f[_0x46e3('0x46')]['id']}})[_0x46e3('0x26')](handleEntityNotFound(_0x37fcaf,null))[_0x46e3('0x26')](saveUpdates(_0x31c68f['body'],null))[_0x46e3('0x26')](respondWithResult(_0x37fcaf,null))['catch'](handleError(_0x37fcaf,null));};exports[_0x46e3('0x27')]=function(_0x434d7b,_0x471786){return db['SalesforceConfiguration'][_0x46e3('0x49')]({'where':{'id':_0x434d7b[_0x46e3('0x46')]['id']}})[_0x46e3('0x26')](handleEntityNotFound(_0x471786,null))[_0x46e3('0x26')](removeEntity(_0x471786,null))[_0x46e3('0x44')](handleError(_0x471786,null));};exports[_0x46e3('0x4d')]=function(_0x58b581,_0x50743c,_0x319b6a){var _0x5a27aa={};var _0x2c03cc={};var _0x486c04;var _0x15d696;return db[_0x46e3('0x2e')]['findOne']({'where':{'id':_0x58b581[_0x46e3('0x46')]['id']}})['then'](handleEntityNotFound(_0x50743c,null))['then'](function(_0x59a7ec){if(_0x59a7ec){_0x486c04=_0x59a7ec;_0x2c03cc[_0x46e3('0x33')]=_[_0x46e3('0x47')](db[_0x46e3('0x4e')]['rawAttributes']);_0x2c03cc[_0x46e3('0x34')]=_[_0x46e3('0x47')](_0x58b581[_0x46e3('0x34')]);_0x2c03cc['filters']=_[_0x46e3('0x36')](_0x2c03cc[_0x46e3('0x33')],_0x2c03cc['query']);_0x5a27aa['attributes']=_['intersection'](_0x2c03cc[_0x46e3('0x33')],qs['fields'](_0x58b581[_0x46e3('0x34')][_0x46e3('0x37')]));_0x5a27aa[_0x46e3('0x38')]=_0x5a27aa[_0x46e3('0x38')][_0x46e3('0x48')]?_0x5a27aa[_0x46e3('0x38')]:_0x2c03cc[_0x46e3('0x33')];_0x5a27aa['order']=qs[_0x46e3('0x4f')](_0x58b581[_0x46e3('0x34')][_0x46e3('0x4f')]);_0x5a27aa[_0x46e3('0x3c')]=qs[_0x46e3('0x35')](_[_0x46e3('0x3d')](_0x58b581[_0x46e3('0x34')],_0x2c03cc[_0x46e3('0x35')]));if(_0x58b581[_0x46e3('0x34')][_0x46e3('0x40')]){_0x5a27aa['where']=_['merge'](_0x5a27aa[_0x46e3('0x3c')],{'$or':_['map'](_0x5a27aa[_0x46e3('0x38')],function(_0x597e4f){var _0x39be49={};_0x39be49[_0x597e4f]={'$like':'%'+_0x58b581[_0x46e3('0x34')][_0x46e3('0x40')]+'%'};return _0x39be49;})});}_0x5a27aa=_['merge']({},_0x5a27aa,_0x58b581[_0x46e3('0x41')]);return _0x486c04[_0x46e3('0x4d')](_0x5a27aa);}})[_0x46e3('0x26')](function(_0x3ab960){if(_0x3ab960){_0x15d696=_0x3ab960[_0x46e3('0x48')];if(!_0x58b581[_0x46e3('0x34')][_0x46e3('0x39')](_0x46e3('0x3a'))){_0x5a27aa[_0x46e3('0x1f')]=qs['limit'](_0x58b581[_0x46e3('0x34')]['limit']);_0x5a27aa['offset']=qs[_0x46e3('0x1d')](_0x58b581[_0x46e3('0x34')]['offset']);}return _0x486c04['getFields'](_0x5a27aa);}})['then'](function(_0x38be24){if(_0x38be24){return _0x38be24?{'count':_0x15d696,'rows':_0x38be24}:null;}})['then'](respondWithResult(_0x50743c,null))['catch'](handleError(_0x50743c,null));};exports['getSubjects']=function(_0x5ad43d,_0x13c882,_0x446e89){var _0x15eef7={};var _0x196e83={};var _0x18c8c4;var _0x1c4307;return db[_0x46e3('0x2e')][_0x46e3('0x50')]({'where':{'id':_0x5ad43d[_0x46e3('0x46')]['id']}})['then'](handleEntityNotFound(_0x13c882,null))[_0x46e3('0x26')](function(_0x37d6b1){if(_0x37d6b1){_0x18c8c4=_0x37d6b1;_0x196e83[_0x46e3('0x33')]=_[_0x46e3('0x47')](db['SalesforceField'][_0x46e3('0x2f')]);_0x196e83['query']=_[_0x46e3('0x47')](_0x5ad43d['query']);_0x196e83[_0x46e3('0x35')]=_[_0x46e3('0x36')](_0x196e83['model'],_0x196e83[_0x46e3('0x34')]);_0x15eef7[_0x46e3('0x38')]=_[_0x46e3('0x36')](_0x196e83['model'],qs[_0x46e3('0x37')](_0x5ad43d[_0x46e3('0x34')][_0x46e3('0x37')]));_0x15eef7[_0x46e3('0x38')]=_0x15eef7[_0x46e3('0x38')][_0x46e3('0x48')]?_0x15eef7[_0x46e3('0x38')]:_0x196e83['model'];_0x15eef7['order']=qs[_0x46e3('0x4f')](_0x5ad43d[_0x46e3('0x34')]['sort']);_0x15eef7['where']=qs['filters'](_[_0x46e3('0x3d')](_0x5ad43d[_0x46e3('0x34')],_0x196e83['filters']));if(_0x5ad43d[_0x46e3('0x34')][_0x46e3('0x40')]){_0x15eef7['where']=_[_0x46e3('0x3e')](_0x15eef7[_0x46e3('0x3c')],{'$or':_[_0x46e3('0x2d')](_0x15eef7[_0x46e3('0x38')],function(_0x56105a){var _0x13d968={};_0x13d968[_0x56105a]={'$like':'%'+_0x5ad43d[_0x46e3('0x34')][_0x46e3('0x40')]+'%'};return _0x13d968;})});}_0x15eef7=_[_0x46e3('0x3e')]({},_0x15eef7,_0x5ad43d[_0x46e3('0x41')]);return _0x18c8c4[_0x46e3('0x51')](_0x15eef7);}})['then'](function(_0x415c24){if(_0x415c24){_0x1c4307=_0x415c24[_0x46e3('0x48')];if(!_0x5ad43d[_0x46e3('0x34')]['hasOwnProperty'](_0x46e3('0x3a'))){_0x15eef7[_0x46e3('0x1f')]=qs[_0x46e3('0x1f')](_0x5ad43d[_0x46e3('0x34')]['limit']);_0x15eef7['offset']=qs[_0x46e3('0x1d')](_0x5ad43d[_0x46e3('0x34')][_0x46e3('0x1d')]);}return _0x18c8c4['getSubjects'](_0x15eef7);}})[_0x46e3('0x26')](function(_0x3b2bec){if(_0x3b2bec){return _0x3b2bec?{'count':_0x1c4307,'rows':_0x3b2bec}:null;}})[_0x46e3('0x26')](respondWithResult(_0x13c882,null))[_0x46e3('0x44')](handleError(_0x13c882,null));};exports[_0x46e3('0x52')]=function(_0x521d14,_0x104cbf,_0x1e03c1){var _0x38e069={};var _0x43712f={};var _0x3fd280;var _0x1cf68d;return db[_0x46e3('0x2e')][_0x46e3('0x50')]({'where':{'id':_0x521d14[_0x46e3('0x46')]['id']}})[_0x46e3('0x26')](handleEntityNotFound(_0x104cbf,null))[_0x46e3('0x26')](function(_0x1482c3){if(_0x1482c3){_0x3fd280=_0x1482c3;_0x43712f['model']=_['keys'](db['SalesforceField'][_0x46e3('0x2f')]);_0x43712f['query']=_[_0x46e3('0x47')](_0x521d14[_0x46e3('0x34')]);_0x43712f[_0x46e3('0x35')]=_[_0x46e3('0x36')](_0x43712f[_0x46e3('0x33')],_0x43712f[_0x46e3('0x34')]);_0x38e069[_0x46e3('0x38')]=_['intersection'](_0x43712f['model'],qs[_0x46e3('0x37')](_0x521d14[_0x46e3('0x34')][_0x46e3('0x37')]));_0x38e069[_0x46e3('0x38')]=_0x38e069['attributes'][_0x46e3('0x48')]?_0x38e069[_0x46e3('0x38')]:_0x43712f[_0x46e3('0x33')];_0x38e069[_0x46e3('0x3b')]=qs['sort'](_0x521d14[_0x46e3('0x34')][_0x46e3('0x4f')]);_0x38e069[_0x46e3('0x3c')]=qs['filters'](_['pick'](_0x521d14[_0x46e3('0x34')],_0x43712f[_0x46e3('0x35')]));if(_0x521d14[_0x46e3('0x34')][_0x46e3('0x40')]){_0x38e069[_0x46e3('0x3c')]=_[_0x46e3('0x3e')](_0x38e069['where'],{'$or':_[_0x46e3('0x2d')](_0x38e069[_0x46e3('0x38')],function(_0x3ef96d){var _0x364daf={};_0x364daf[_0x3ef96d]={'$like':'%'+_0x521d14[_0x46e3('0x34')][_0x46e3('0x40')]+'%'};return _0x364daf;})});}_0x38e069=_['merge']({},_0x38e069,_0x521d14[_0x46e3('0x41')]);return _0x3fd280['getDescriptions'](_0x38e069);}})[_0x46e3('0x26')](function(_0x4dd609){if(_0x4dd609){_0x1cf68d=_0x4dd609['length'];if(!_0x521d14[_0x46e3('0x34')][_0x46e3('0x39')](_0x46e3('0x3a'))){_0x38e069[_0x46e3('0x1f')]=qs[_0x46e3('0x1f')](_0x521d14['query']['limit']);_0x38e069[_0x46e3('0x1d')]=qs[_0x46e3('0x1d')](_0x521d14[_0x46e3('0x34')]['offset']);}return _0x3fd280[_0x46e3('0x52')](_0x38e069);}})[_0x46e3('0x26')](function(_0x22702){if(_0x22702){return _0x22702?{'count':_0x1cf68d,'rows':_0x22702}:null;}})['then'](respondWithResult(_0x104cbf,null))[_0x46e3('0x44')](handleError(_0x104cbf,null));};
\ No newline at end of file
+var _0x3697=['SalesforceField','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','error','name','index','map','SalesforceConfiguration','fieldName','type','model','query','keys','intersection','fields','attributes','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','show','params','rawAttributes','length','include','find','catch','create','body','getFields','findOne'];(function(_0x54b458,_0x4da21b){var _0x18d704=function(_0x3ca278){while(--_0x3ca278){_0x54b458['push'](_0x54b458['shift']());}};_0x18d704(++_0x4da21b);}(_0x3697,0x1ea));var _0x7369=function(_0xa591f9,_0x4d1942){_0xa591f9=_0xa591f9-0x0;var _0x3be24e=_0x3697[_0xa591f9];return _0x3be24e;};'use strict';var emlformat=require(_0x7369('0x0'));var rimraf=require(_0x7369('0x1'));var zipdir=require(_0x7369('0x2'));var jsonpatch=require(_0x7369('0x3'));var rp=require(_0x7369('0x4'));var moment=require('moment');var BPromise=require(_0x7369('0x5'));var Mustache=require(_0x7369('0x6'));var util=require('util');var path=require(_0x7369('0x7'));var sox=require(_0x7369('0x8'));var csv=require(_0x7369('0x9'));var ejs=require(_0x7369('0xa'));var fs=require('fs');var fs_extra=require(_0x7369('0xb'));var _=require(_0x7369('0xc'));var squel=require(_0x7369('0xd'));var crypto=require(_0x7369('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7369('0xf'));var toCsv=require(_0x7369('0x9'));var querystring=require(_0x7369('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7369('0x11'));var qs=require(_0x7369('0x12'));var as=require(_0x7369('0x13'));var hardwareService=require(_0x7369('0x14'));var logger=require(_0x7369('0x15'))(_0x7369('0x16'));var utils=require(_0x7369('0x17'));var config=require(_0x7369('0x18'));var licenseUtil=require(_0x7369('0x19'));var db=require(_0x7369('0x1a'))['db'];function respondWithStatusCode(_0x45ed56,_0x32e626){_0x32e626=_0x32e626||0xcc;return function(_0x219c9e){if(_0x219c9e){return _0x45ed56[_0x7369('0x1b')](_0x32e626);}return _0x45ed56[_0x7369('0x1c')](_0x32e626)[_0x7369('0x1d')]();};}function respondWithResult(_0x202db3,_0x467481){_0x467481=_0x467481||0xc8;return function(_0xbb3bb6){if(_0xbb3bb6){return _0x202db3[_0x7369('0x1c')](_0x467481)['json'](_0xbb3bb6);}};}function respondWithFilteredResult(_0x14107c,_0x6aea9c){return function(_0xf5444c){if(_0xf5444c){var _0x2791cc=typeof _0x6aea9c[_0x7369('0x1e')]===_0x7369('0x1f')&&typeof _0x6aea9c[_0x7369('0x20')]===_0x7369('0x1f');var _0x15abb5=_0xf5444c[_0x7369('0x21')];var _0x25490a=_0x2791cc?0x0:_0x6aea9c[_0x7369('0x1e')];var _0x4271a0=_0x2791cc?_0xf5444c[_0x7369('0x21')]:_0x6aea9c[_0x7369('0x1e')]+_0x6aea9c['limit'];var _0x47233e;if(_0x4271a0>=_0x15abb5){_0x4271a0=_0x15abb5;_0x47233e=0xc8;}else{_0x47233e=0xce;}_0x14107c[_0x7369('0x1c')](_0x47233e);return _0x14107c[_0x7369('0x22')](_0x7369('0x23'),_0x25490a+'-'+_0x4271a0+'/'+_0x15abb5)['json'](_0xf5444c);}return null;};}function patchUpdates(_0x4df22c){return function(_0x3b89c8){try{jsonpatch[_0x7369('0x24')](_0x3b89c8,_0x4df22c,!![]);}catch(_0x92b4b8){return BPromise['reject'](_0x92b4b8);}return _0x3b89c8['save']();};}function saveUpdates(_0x43a1d2,_0x8fe395){return function(_0x1eb18d){if(_0x1eb18d){return _0x1eb18d[_0x7369('0x25')](_0x43a1d2)[_0x7369('0x26')](function(_0x1eb1bb){return _0x1eb1bb;});}return null;};}function removeEntity(_0x234045,_0x5e10ed){return function(_0x37fea2){if(_0x37fea2){return _0x37fea2[_0x7369('0x27')]()[_0x7369('0x26')](function(){_0x234045[_0x7369('0x1c')](0xcc)[_0x7369('0x1d')]();});}};}function handleEntityNotFound(_0x476527,_0x34cb95){return function(_0x3be077){if(!_0x3be077){_0x476527[_0x7369('0x1b')](0x194);}return _0x3be077;};}function handleError(_0x22428a,_0x2fbcdb){_0x2fbcdb=_0x2fbcdb||0x1f4;return function(_0x180b87){logger[_0x7369('0x28')](_0x180b87['stack']);if(_0x180b87[_0x7369('0x29')]){delete _0x180b87['name'];}_0x22428a[_0x7369('0x1c')](_0x2fbcdb)['send'](_0x180b87);};}exports[_0x7369('0x2a')]=function(_0x57a129,_0x10cd8c){var _0x53125b={},_0x259933={},_0x1b8780={'count':0x0,'rows':[]};var _0x1ed4e9=_[_0x7369('0x2b')](db[_0x7369('0x2c')]['rawAttributes'],function(_0x1704f4){return{'name':_0x1704f4[_0x7369('0x2d')],'type':_0x1704f4[_0x7369('0x2e')]['key']};});_0x259933[_0x7369('0x2f')]=_[_0x7369('0x2b')](_0x1ed4e9,_0x7369('0x29'));_0x259933[_0x7369('0x30')]=_[_0x7369('0x31')](_0x57a129['query']);_0x259933['filters']=_[_0x7369('0x32')](_0x259933[_0x7369('0x2f')],_0x259933['query']);_0x53125b['attributes']=_[_0x7369('0x32')](_0x259933[_0x7369('0x2f')],qs[_0x7369('0x33')](_0x57a129[_0x7369('0x30')][_0x7369('0x33')]));_0x53125b[_0x7369('0x34')]=_0x53125b[_0x7369('0x34')]['length']?_0x53125b[_0x7369('0x34')]:_0x259933['model'];if(!_0x57a129[_0x7369('0x30')][_0x7369('0x35')]('nolimit')){_0x53125b['limit']=qs[_0x7369('0x20')](_0x57a129['query']['limit']);_0x53125b['offset']=qs[_0x7369('0x1e')](_0x57a129[_0x7369('0x30')]['offset']);}_0x53125b[_0x7369('0x36')]=qs[_0x7369('0x37')](_0x57a129[_0x7369('0x30')]['sort']);_0x53125b[_0x7369('0x38')]=qs[_0x7369('0x39')](_[_0x7369('0x3a')](_0x57a129[_0x7369('0x30')],_0x259933[_0x7369('0x39')]),_0x1ed4e9);if(_0x57a129[_0x7369('0x30')]['filter']){_0x53125b['where']=_[_0x7369('0x3b')](_0x53125b['where'],{'$or':_['map'](_0x1ed4e9,function(_0x2f11e8){if(_0x2f11e8['type']!==_0x7369('0x3c')){var _0x89f6df={};_0x89f6df[_0x2f11e8['name']]={'$like':'%'+_0x57a129['query'][_0x7369('0x3d')]+'%'};return _0x89f6df;}})});}_0x53125b=_['merge']({},_0x53125b,_0x57a129[_0x7369('0x3e')]);var _0x2b7f65={'where':_0x53125b['where']};return db[_0x7369('0x2c')][_0x7369('0x21')](_0x2b7f65)[_0x7369('0x26')](function(_0x248003){_0x1b8780['count']=_0x248003;if(_0x57a129['query'][_0x7369('0x3f')]){_0x53125b['include']=[{'all':!![]}];}return db[_0x7369('0x2c')][_0x7369('0x40')](_0x53125b);})[_0x7369('0x26')](function(_0x90f768){_0x1b8780[_0x7369('0x41')]=_0x90f768;return _0x1b8780;})[_0x7369('0x26')](respondWithFilteredResult(_0x10cd8c,_0x53125b))['catch'](handleError(_0x10cd8c,null));};exports[_0x7369('0x42')]=function(_0x295fff,_0x1414f0){var _0x252fea={'raw':![],'where':{'id':_0x295fff[_0x7369('0x43')]['id']}},_0x272a72={};_0x272a72[_0x7369('0x2f')]=_['keys'](db[_0x7369('0x2c')][_0x7369('0x44')]);_0x272a72[_0x7369('0x30')]=_[_0x7369('0x31')](_0x295fff['query']);_0x272a72[_0x7369('0x39')]=_[_0x7369('0x32')](_0x272a72[_0x7369('0x2f')],_0x272a72[_0x7369('0x30')]);_0x252fea[_0x7369('0x34')]=_[_0x7369('0x32')](_0x272a72[_0x7369('0x2f')],qs['fields'](_0x295fff[_0x7369('0x30')][_0x7369('0x33')]));_0x252fea[_0x7369('0x34')]=_0x252fea[_0x7369('0x34')][_0x7369('0x45')]?_0x252fea[_0x7369('0x34')]:_0x272a72[_0x7369('0x2f')];if(_0x295fff[_0x7369('0x30')][_0x7369('0x3f')]){_0x252fea[_0x7369('0x46')]=[{'all':!![]}];}_0x252fea=_[_0x7369('0x3b')]({},_0x252fea,_0x295fff[_0x7369('0x3e')]);return db[_0x7369('0x2c')][_0x7369('0x47')](_0x252fea)['then'](handleEntityNotFound(_0x1414f0,null))['then'](respondWithResult(_0x1414f0,null))[_0x7369('0x48')](handleError(_0x1414f0,null));};exports[_0x7369('0x49')]=function(_0x57081b,_0x368ae9){return db['SalesforceConfiguration']['create'](_0x57081b[_0x7369('0x4a')],{})[_0x7369('0x26')](respondWithResult(_0x368ae9,0xc9))[_0x7369('0x48')](handleError(_0x368ae9,null));};exports[_0x7369('0x25')]=function(_0x3ab84f,_0xb29a33){if(_0x3ab84f[_0x7369('0x4a')]['id']){delete _0x3ab84f['body']['id'];}return db[_0x7369('0x2c')][_0x7369('0x47')]({'where':{'id':_0x3ab84f['params']['id']}})[_0x7369('0x26')](handleEntityNotFound(_0xb29a33,null))[_0x7369('0x26')](saveUpdates(_0x3ab84f['body'],null))['then'](respondWithResult(_0xb29a33,null))[_0x7369('0x48')](handleError(_0xb29a33,null));};exports[_0x7369('0x27')]=function(_0x1b5a03,_0x2a007f){return db['SalesforceConfiguration'][_0x7369('0x47')]({'where':{'id':_0x1b5a03[_0x7369('0x43')]['id']}})[_0x7369('0x26')](handleEntityNotFound(_0x2a007f,null))[_0x7369('0x26')](removeEntity(_0x2a007f,null))['catch'](handleError(_0x2a007f,null));};exports[_0x7369('0x4b')]=function(_0x3ca925,_0x292148,_0x341379){var _0x35be6c={};var _0xcf5302={};var _0x3c9515;var _0x3068d8;return db[_0x7369('0x2c')][_0x7369('0x4c')]({'where':{'id':_0x3ca925['params']['id']}})['then'](handleEntityNotFound(_0x292148,null))[_0x7369('0x26')](function(_0x5234c9){if(_0x5234c9){_0x3c9515=_0x5234c9;_0xcf5302[_0x7369('0x2f')]=_['keys'](db[_0x7369('0x4d')]['rawAttributes']);_0xcf5302[_0x7369('0x30')]=_[_0x7369('0x31')](_0x3ca925['query']);_0xcf5302[_0x7369('0x39')]=_[_0x7369('0x32')](_0xcf5302[_0x7369('0x2f')],_0xcf5302[_0x7369('0x30')]);_0x35be6c[_0x7369('0x34')]=_[_0x7369('0x32')](_0xcf5302['model'],qs[_0x7369('0x33')](_0x3ca925[_0x7369('0x30')][_0x7369('0x33')]));_0x35be6c['attributes']=_0x35be6c[_0x7369('0x34')]['length']?_0x35be6c[_0x7369('0x34')]:_0xcf5302[_0x7369('0x2f')];_0x35be6c[_0x7369('0x36')]=qs['sort'](_0x3ca925[_0x7369('0x30')]['sort']);_0x35be6c[_0x7369('0x38')]=qs['filters'](_['pick'](_0x3ca925[_0x7369('0x30')],_0xcf5302[_0x7369('0x39')]));if(_0x3ca925['query'][_0x7369('0x3d')]){_0x35be6c[_0x7369('0x38')]=_[_0x7369('0x3b')](_0x35be6c[_0x7369('0x38')],{'$or':_[_0x7369('0x2b')](_0x35be6c[_0x7369('0x34')],function(_0x3dad43){var _0x3a70a4={};_0x3a70a4[_0x3dad43]={'$like':'%'+_0x3ca925[_0x7369('0x30')][_0x7369('0x3d')]+'%'};return _0x3a70a4;})});}_0x35be6c=_['merge']({},_0x35be6c,_0x3ca925['options']);return _0x3c9515[_0x7369('0x4b')](_0x35be6c);}})['then'](function(_0x48b180){if(_0x48b180){_0x3068d8=_0x48b180[_0x7369('0x45')];if(!_0x3ca925['query'][_0x7369('0x35')](_0x7369('0x4e'))){_0x35be6c['limit']=qs[_0x7369('0x20')](_0x3ca925['query'][_0x7369('0x20')]);_0x35be6c[_0x7369('0x1e')]=qs[_0x7369('0x1e')](_0x3ca925[_0x7369('0x30')][_0x7369('0x1e')]);}return _0x3c9515[_0x7369('0x4b')](_0x35be6c);}})[_0x7369('0x26')](function(_0x1a144b){if(_0x1a144b){return _0x1a144b?{'count':_0x3068d8,'rows':_0x1a144b}:null;}})[_0x7369('0x26')](respondWithResult(_0x292148,null))[_0x7369('0x48')](handleError(_0x292148,null));};exports[_0x7369('0x4f')]=function(_0x199b9e,_0x148193,_0x4591dc){var _0x4eb082={};var _0x59f88b={};var _0x1dfb1b;var _0x4f22be;return db[_0x7369('0x2c')][_0x7369('0x4c')]({'where':{'id':_0x199b9e[_0x7369('0x43')]['id']}})[_0x7369('0x26')](handleEntityNotFound(_0x148193,null))[_0x7369('0x26')](function(_0x466901){if(_0x466901){_0x1dfb1b=_0x466901;_0x59f88b['model']=_[_0x7369('0x31')](db[_0x7369('0x4d')][_0x7369('0x44')]);_0x59f88b[_0x7369('0x30')]=_['keys'](_0x199b9e[_0x7369('0x30')]);_0x59f88b['filters']=_[_0x7369('0x32')](_0x59f88b['model'],_0x59f88b['query']);_0x4eb082[_0x7369('0x34')]=_[_0x7369('0x32')](_0x59f88b[_0x7369('0x2f')],qs[_0x7369('0x33')](_0x199b9e[_0x7369('0x30')][_0x7369('0x33')]));_0x4eb082['attributes']=_0x4eb082[_0x7369('0x34')][_0x7369('0x45')]?_0x4eb082['attributes']:_0x59f88b[_0x7369('0x2f')];_0x4eb082[_0x7369('0x36')]=qs['sort'](_0x199b9e['query']['sort']);_0x4eb082['where']=qs[_0x7369('0x39')](_[_0x7369('0x3a')](_0x199b9e[_0x7369('0x30')],_0x59f88b[_0x7369('0x39')]));if(_0x199b9e[_0x7369('0x30')]['filter']){_0x4eb082[_0x7369('0x38')]=_[_0x7369('0x3b')](_0x4eb082[_0x7369('0x38')],{'$or':_['map'](_0x4eb082[_0x7369('0x34')],function(_0xecf78e){var _0x373617={};_0x373617[_0xecf78e]={'$like':'%'+_0x199b9e[_0x7369('0x30')]['filter']+'%'};return _0x373617;})});}_0x4eb082=_[_0x7369('0x3b')]({},_0x4eb082,_0x199b9e[_0x7369('0x3e')]);return _0x1dfb1b[_0x7369('0x4f')](_0x4eb082);}})['then'](function(_0x2d9261){if(_0x2d9261){_0x4f22be=_0x2d9261[_0x7369('0x45')];if(!_0x199b9e['query'][_0x7369('0x35')](_0x7369('0x4e'))){_0x4eb082[_0x7369('0x20')]=qs[_0x7369('0x20')](_0x199b9e[_0x7369('0x30')][_0x7369('0x20')]);_0x4eb082['offset']=qs[_0x7369('0x1e')](_0x199b9e['query']['offset']);}return _0x1dfb1b[_0x7369('0x4f')](_0x4eb082);}})['then'](function(_0x479dc7){if(_0x479dc7){return _0x479dc7?{'count':_0x4f22be,'rows':_0x479dc7}:null;}})[_0x7369('0x26')](respondWithResult(_0x148193,null))['catch'](handleError(_0x148193,null));};exports[_0x7369('0x50')]=function(_0x52beb4,_0x323010,_0x332f0e){var _0x4aea58={};var _0x470664={};var _0x303415;var _0x4dcfb1;return db[_0x7369('0x2c')]['findOne']({'where':{'id':_0x52beb4['params']['id']}})['then'](handleEntityNotFound(_0x323010,null))[_0x7369('0x26')](function(_0x5a92ef){if(_0x5a92ef){_0x303415=_0x5a92ef;_0x470664[_0x7369('0x2f')]=_['keys'](db[_0x7369('0x4d')][_0x7369('0x44')]);_0x470664[_0x7369('0x30')]=_[_0x7369('0x31')](_0x52beb4[_0x7369('0x30')]);_0x470664[_0x7369('0x39')]=_[_0x7369('0x32')](_0x470664[_0x7369('0x2f')],_0x470664['query']);_0x4aea58[_0x7369('0x34')]=_[_0x7369('0x32')](_0x470664[_0x7369('0x2f')],qs[_0x7369('0x33')](_0x52beb4[_0x7369('0x30')][_0x7369('0x33')]));_0x4aea58[_0x7369('0x34')]=_0x4aea58[_0x7369('0x34')][_0x7369('0x45')]?_0x4aea58[_0x7369('0x34')]:_0x470664['model'];_0x4aea58['order']=qs[_0x7369('0x37')](_0x52beb4[_0x7369('0x30')]['sort']);_0x4aea58['where']=qs[_0x7369('0x39')](_[_0x7369('0x3a')](_0x52beb4[_0x7369('0x30')],_0x470664[_0x7369('0x39')]));if(_0x52beb4['query'][_0x7369('0x3d')]){_0x4aea58[_0x7369('0x38')]=_['merge'](_0x4aea58[_0x7369('0x38')],{'$or':_[_0x7369('0x2b')](_0x4aea58[_0x7369('0x34')],function(_0x28a6b9){var _0x33f185={};_0x33f185[_0x28a6b9]={'$like':'%'+_0x52beb4[_0x7369('0x30')][_0x7369('0x3d')]+'%'};return _0x33f185;})});}_0x4aea58=_[_0x7369('0x3b')]({},_0x4aea58,_0x52beb4[_0x7369('0x3e')]);return _0x303415[_0x7369('0x50')](_0x4aea58);}})[_0x7369('0x26')](function(_0x46e160){if(_0x46e160){_0x4dcfb1=_0x46e160[_0x7369('0x45')];if(!_0x52beb4[_0x7369('0x30')][_0x7369('0x35')](_0x7369('0x4e'))){_0x4aea58[_0x7369('0x20')]=qs[_0x7369('0x20')](_0x52beb4[_0x7369('0x30')][_0x7369('0x20')]);_0x4aea58[_0x7369('0x1e')]=qs[_0x7369('0x1e')](_0x52beb4[_0x7369('0x30')]['offset']);}return _0x303415['getDescriptions'](_0x4aea58);}})[_0x7369('0x26')](function(_0x294148){if(_0x294148){return _0x294148?{'count':_0x4dcfb1,'rows':_0x294148}:null;}})['then'](respondWithResult(_0x323010,null))['catch'](handleError(_0x323010,null));};
\ No newline at end of file
index b54b998..ea232a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75cd=['rimraf','./intSalesforceConfiguration.attributes','exports','lodash','../../config/logger','moment'];(function(_0x3325ab,_0x51f4b1){var _0x2c8dfd=function(_0x2d0c68){while(--_0x2d0c68){_0x3325ab['push'](_0x3325ab['shift']());}};_0x2c8dfd(++_0x51f4b1);}(_0x75cd,0x1d7));var _0xd75c=function(_0x5ae325,_0x1652b4){_0x5ae325=_0x5ae325-0x0;var _0x542ffe=_0x75cd[_0x5ae325];return _0x542ffe;};'use strict';var _=require(_0xd75c('0x0'));var util=require('util');var logger=require(_0xd75c('0x1'))('api');var moment=require(_0xd75c('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd75c('0x3'));var config=require('../../config/environment');var attributes=require(_0xd75c('0x4'));module[_0xd75c('0x5')]=function(_0x355b01,_0x21e512){return _0x355b01['define']('SalesforceConfiguration',attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8772=['SalesforceConfiguration','lodash','api','moment','request-promise','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define'];(function(_0x2c99a2,_0x1e2082){var _0x2f5524=function(_0x515b61){while(--_0x515b61){_0x2c99a2['push'](_0x2c99a2['shift']());}};_0x2f5524(++_0x1e2082);}(_0x8772,0x6f));var _0x2877=function(_0x3bf6bb,_0x4b85c7){_0x3bf6bb=_0x3bf6bb-0x0;var _0x4f9809=_0x8772[_0x3bf6bb];return _0x4f9809;};'use strict';var _=require(_0x2877('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2877('0x1'));var moment=require(_0x2877('0x2'));var BPromise=require('bluebird');var rp=require(_0x2877('0x3'));var fs=require('fs');var path=require(_0x2877('0x4'));var rimraf=require(_0x2877('0x5'));var config=require(_0x2877('0x6'));var attributes=require(_0x2877('0x7'));module[_0x2877('0x8')]=function(_0x348278,_0x5e4a03){return _0x348278[_0x2877('0x9')](_0x2877('0xa'),attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index af53941..d37ddd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4d6=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','bluebird','ioredis','../../config/utils'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc4d6,0x7a));var _0x6c4d=function(_0x5b1aed,_0x322c17){_0x5b1aed=_0x5b1aed-0x0;var _0x26add8=_0xc4d6[_0x5b1aed];return _0x26add8;};'use strict';var _=require(_0x6c4d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x6c4d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6c4d('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x6c4d('0x3'));var logger=require(_0x6c4d('0x4'))(_0x6c4d('0x5'));var config=require(_0x6c4d('0x6'));var jayson=require(_0x6c4d('0x7'));var client=jayson[_0x6c4d('0x8')][_0x6c4d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x524a7d,_0x41dd50,_0x1fd305){return new BPromise(function(_0x5ae766,_0x24c702){return client[_0x6c4d('0xa')](_0x524a7d,_0x1fd305)[_0x6c4d('0xb')](function(_0x56379e){logger[_0x6c4d('0xc')](_0x6c4d('0xd'),_0x41dd50,'request\x20sent');logger[_0x6c4d('0xe')](_0x6c4d('0xf'),_0x41dd50,_0x6c4d('0x10'),JSON[_0x6c4d('0x11')](_0x56379e));if(_0x56379e[_0x6c4d('0x12')]){if(_0x56379e[_0x6c4d('0x12')]['code']===0x1f4){logger[_0x6c4d('0x12')]('SalesforceConfiguration,\x20%s,\x20%s',_0x41dd50,_0x56379e[_0x6c4d('0x12')]['message']);return _0x24c702(_0x56379e[_0x6c4d('0x12')]['message']);}logger[_0x6c4d('0x12')](_0x6c4d('0xd'),_0x41dd50,_0x56379e[_0x6c4d('0x12')][_0x6c4d('0x13')]);return _0x5ae766(_0x56379e[_0x6c4d('0x12')][_0x6c4d('0x13')]);}else{logger[_0x6c4d('0xc')]('SalesforceConfiguration,\x20%s,\x20%s',_0x41dd50,_0x6c4d('0x10'));_0x5ae766(_0x56379e['result']['message']);}})[_0x6c4d('0x14')](function(_0x36b43a){logger[_0x6c4d('0x12')](_0x6c4d('0xd'),_0x41dd50,_0x36b43a);_0x24c702(_0x36b43a);});});}
\ No newline at end of file
+var _0xe6a3=['SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info'];(function(_0xb89eab,_0x905eba){var _0x1706ba=function(_0x411ad4){while(--_0x411ad4){_0xb89eab['push'](_0xb89eab['shift']());}};_0x1706ba(++_0x905eba);}(_0xe6a3,0xe2));var _0x3e6a=function(_0x4c321c,_0x3e9da0){_0x4c321c=_0x4c321c-0x0;var _0x25accb=_0xe6a3[_0x4c321c];return _0x25accb;};'use strict';var _=require(_0x3e6a('0x0'));var util=require(_0x3e6a('0x1'));var moment=require(_0x3e6a('0x2'));var BPromise=require(_0x3e6a('0x3'));var rs=require(_0x3e6a('0x4'));var fs=require('fs');var Redis=require(_0x3e6a('0x5'));var db=require(_0x3e6a('0x6'))['db'];var utils=require(_0x3e6a('0x7'));var logger=require(_0x3e6a('0x8'))(_0x3e6a('0x9'));var config=require(_0x3e6a('0xa'));var jayson=require(_0x3e6a('0xb'));var client=jayson[_0x3e6a('0xc')][_0x3e6a('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5c3c30,_0x46ff29,_0x4147a8){return new BPromise(function(_0x3837c8,_0x38070a){return client['request'](_0x5c3c30,_0x4147a8)[_0x3e6a('0xe')](function(_0x267234){logger[_0x3e6a('0xf')](_0x3e6a('0x10'),_0x46ff29,_0x3e6a('0x11'));logger[_0x3e6a('0x12')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x46ff29,_0x3e6a('0x11'),JSON['stringify'](_0x267234));if(_0x267234['error']){if(_0x267234[_0x3e6a('0x13')][_0x3e6a('0x14')]===0x1f4){logger[_0x3e6a('0x13')](_0x3e6a('0x10'),_0x46ff29,_0x267234['error'][_0x3e6a('0x15')]);return _0x38070a(_0x267234[_0x3e6a('0x13')]['message']);}logger[_0x3e6a('0x13')](_0x3e6a('0x10'),_0x46ff29,_0x267234['error']['message']);return _0x3837c8(_0x267234['error'][_0x3e6a('0x15')]);}else{logger['info'](_0x3e6a('0x10'),_0x46ff29,_0x3e6a('0x11'));_0x3837c8(_0x267234['result'][_0x3e6a('0x15')]);}})['catch'](function(_0x8af482){logger[_0x3e6a('0x13')]('SalesforceConfiguration,\x20%s,\x20%s',_0x46ff29,_0x8af482);_0x38070a(_0x8af482);});});}
\ No newline at end of file
index 8033c43..b4ebce0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ef6=['Router','fs-extra','../../components/auth/service','./intSalesforceField.controller','get','isAuthenticated','index','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4fe558,_0x1d1494){var _0x5994db=function(_0x497885){while(--_0x497885){_0x4fe558['push'](_0x4fe558['shift']());}};_0x5994db(++_0x1d1494);}(_0x3ef6,0x18b));var _0x63ef=function(_0x424501,_0x42096d){_0x424501=_0x424501-0x0;var _0xb719af=_0x3ef6[_0x424501];return _0xb719af;};'use strict';var multer=require(_0x63ef('0x0'));var util=require(_0x63ef('0x1'));var path=require(_0x63ef('0x2'));var timeout=require(_0x63ef('0x3'));var express=require(_0x63ef('0x4'));var router=express[_0x63ef('0x5')]();var fs_extra=require(_0x63ef('0x6'));var auth=require(_0x63ef('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x63ef('0x8'));router[_0x63ef('0x9')]('/',auth[_0x63ef('0xa')](),controller[_0x63ef('0xb')]);router['get']('/:id',auth[_0x63ef('0xa')](),controller['show']);router[_0x63ef('0xc')]('/',auth['isAuthenticated'](),controller[_0x63ef('0xd')]);router[_0x63ef('0xe')](_0x63ef('0xf'),auth[_0x63ef('0xa')](),controller[_0x63ef('0x10')]);router[_0x63ef('0x11')](_0x63ef('0xf'),auth[_0x63ef('0xa')](),controller[_0x63ef('0x12')]);module[_0x63ef('0x13')]=router;
\ No newline at end of file
+var _0xd479=['get','isAuthenticated','index','post','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller'];(function(_0x4685f2,_0x5dbf52){var _0x537147=function(_0x3dc25f){while(--_0x3dc25f){_0x4685f2['push'](_0x4685f2['shift']());}};_0x537147(++_0x5dbf52);}(_0xd479,0x98));var _0x9d47=function(_0x216336,_0xea31f8){_0x216336=_0x216336-0x0;var _0x1f4899=_0xd479[_0x216336];return _0x1f4899;};'use strict';var multer=require(_0x9d47('0x0'));var util=require(_0x9d47('0x1'));var path=require(_0x9d47('0x2'));var timeout=require(_0x9d47('0x3'));var express=require(_0x9d47('0x4'));var router=express[_0x9d47('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x9d47('0x6'));var interaction=require(_0x9d47('0x7'));var config=require(_0x9d47('0x8'));var controller=require(_0x9d47('0x9'));router[_0x9d47('0xa')]('/',auth[_0x9d47('0xb')](),controller[_0x9d47('0xc')]);router['get']('/:id',auth[_0x9d47('0xb')](),controller['show']);router[_0x9d47('0xd')]('/',auth[_0x9d47('0xb')](),controller['create']);router['put'](_0x9d47('0xe'),auth['isAuthenticated'](),controller[_0x9d47('0xf')]);router[_0x9d47('0x10')](_0x9d47('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0x9d47('0x11')]=router;
\ No newline at end of file
index cfc6561..df7ca50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c1f=['variable','customVariable','picklist','STRING','sequelize','exports','ENUM','string'];(function(_0x5a8c4f,_0x57073c){var _0x1541e0=function(_0x2d2dc8){while(--_0x2d2dc8){_0x5a8c4f['push'](_0x5a8c4f['shift']());}};_0x1541e0(++_0x57073c);}(_0x5c1f,0xac));var _0xf5c1=function(_0x1d7037,_0x57dd95){_0x1d7037=_0x1d7037-0x0;var _0x4d6568=_0x5c1f[_0x1d7037];return _0x4d6568;};'use strict';var Sequelize=require(_0xf5c1('0x0'));module[_0xf5c1('0x1')]={'type':{'type':Sequelize[_0xf5c1('0x2')](_0xf5c1('0x3'),_0xf5c1('0x4'),_0xf5c1('0x5'),'keyValue',_0xf5c1('0x6')),'defaultValue':_0xf5c1('0x3')},'content':{'type':Sequelize[_0xf5c1('0x7')]},'key':{'type':Sequelize[_0xf5c1('0x7')]},'keyType':{'type':Sequelize[_0xf5c1('0x2')](_0xf5c1('0x3'),'variable',_0xf5c1('0x5'))},'keyContent':{'type':Sequelize[_0xf5c1('0x7')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0xf5c1('0x7')]}};
\ No newline at end of file
+var _0x3ffe=['ENUM','exports','string','variable','customVariable','picklist','STRING'];(function(_0x466a4e,_0x5216f2){var _0x598e89=function(_0x8226a4){while(--_0x8226a4){_0x466a4e['push'](_0x466a4e['shift']());}};_0x598e89(++_0x5216f2);}(_0x3ffe,0x15f));var _0xe3ff=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x3ffe[_0x13b02f];return _0x12e9a6;};'use strict';var Sequelize=require('sequelize');module[_0xe3ff('0x0')]={'type':{'type':Sequelize['ENUM'](_0xe3ff('0x1'),_0xe3ff('0x2'),_0xe3ff('0x3'),'keyValue',_0xe3ff('0x4')),'defaultValue':_0xe3ff('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xe3ff('0x5')]},'keyType':{'type':Sequelize[_0xe3ff('0x6')](_0xe3ff('0x1'),_0xe3ff('0x2'),_0xe3ff('0x3'))},'keyContent':{'type':Sequelize[_0xe3ff('0x5')]},'idField':{'type':Sequelize[_0xe3ff('0x5')]},'variableName':{'type':Sequelize[_0xe3ff('0x5')]}};
\ No newline at end of file
index 316c7da..e284af5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e8a=['name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','SalesforceField','include','catch','show','params','includeAll','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','end','error','stack'];(function(_0x31bca3,_0x209a1e){var _0x2f10ea=function(_0x248a36){while(--_0x248a36){_0x31bca3['push'](_0x31bca3['shift']());}};_0x2f10ea(++_0x209a1e);}(_0x4e8a,0xa8));var _0xa4e8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4e8a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xa4e8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa4e8('0x1'));var jsonpatch=require(_0xa4e8('0x2'));var rp=require(_0xa4e8('0x3'));var moment=require(_0xa4e8('0x4'));var BPromise=require(_0xa4e8('0x5'));var Mustache=require('mustache');var util=require(_0xa4e8('0x6'));var path=require(_0xa4e8('0x7'));var sox=require('sox');var csv=require(_0xa4e8('0x8'));var ejs=require(_0xa4e8('0x9'));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('desk.js');var toCsv=require(_0xa4e8('0x8'));var querystring=require(_0xa4e8('0xa'));var Papa=require(_0xa4e8('0xb'));var Redis=require(_0xa4e8('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xa4e8('0xd'));var as=require(_0xa4e8('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa4e8('0xf'))(_0xa4e8('0x10'));var utils=require('../../config/utils');var config=require(_0xa4e8('0x11'));var licenseUtil=require(_0xa4e8('0x12'));var db=require(_0xa4e8('0x13'))['db'];function respondWithStatusCode(_0x1a009f,_0x3b9a40){_0x3b9a40=_0x3b9a40||0xcc;return function(_0x50c372){if(_0x50c372){return _0x1a009f[_0xa4e8('0x14')](_0x3b9a40);}return _0x1a009f[_0xa4e8('0x15')](_0x3b9a40)['end']();};}function respondWithResult(_0x22c26e,_0x4ec231){_0x4ec231=_0x4ec231||0xc8;return function(_0x300b1b){if(_0x300b1b){return _0x22c26e[_0xa4e8('0x15')](_0x4ec231)[_0xa4e8('0x16')](_0x300b1b);}};}function respondWithFilteredResult(_0x5da3f8,_0x1bca19){return function(_0x20a5d6){if(_0x20a5d6){var _0xa8f722=typeof _0x1bca19[_0xa4e8('0x17')]===_0xa4e8('0x18')&&typeof _0x1bca19[_0xa4e8('0x19')]==='undefined';var _0x466eb4=_0x20a5d6[_0xa4e8('0x1a')];var _0x502049=_0xa8f722?0x0:_0x1bca19['offset'];var _0x2889b5=_0xa8f722?_0x20a5d6[_0xa4e8('0x1a')]:_0x1bca19[_0xa4e8('0x17')]+_0x1bca19[_0xa4e8('0x19')];var _0x4fc1e2;if(_0x2889b5>=_0x466eb4){_0x2889b5=_0x466eb4;_0x4fc1e2=0xc8;}else{_0x4fc1e2=0xce;}_0x5da3f8[_0xa4e8('0x15')](_0x4fc1e2);return _0x5da3f8[_0xa4e8('0x1b')](_0xa4e8('0x1c'),_0x502049+'-'+_0x2889b5+'/'+_0x466eb4)[_0xa4e8('0x16')](_0x20a5d6);}return null;};}function patchUpdates(_0x5d66ad){return function(_0x5cea78){try{jsonpatch[_0xa4e8('0x1d')](_0x5cea78,_0x5d66ad,!![]);}catch(_0x3eac99){return BPromise['reject'](_0x3eac99);}return _0x5cea78['save']();};}function saveUpdates(_0x50740a,_0x46bd8e){return function(_0x10e256){if(_0x10e256){return _0x10e256[_0xa4e8('0x1e')](_0x50740a)[_0xa4e8('0x1f')](function(_0x5e2936){return _0x5e2936;});}return null;};}function removeEntity(_0x538294,_0x1a5db2){return function(_0x2b6cb3){if(_0x2b6cb3){return _0x2b6cb3[_0xa4e8('0x20')]()[_0xa4e8('0x1f')](function(){_0x538294[_0xa4e8('0x15')](0xcc)[_0xa4e8('0x21')]();});}};}function handleEntityNotFound(_0x2eb6d3,_0x422a65){return function(_0x2799ef){if(!_0x2799ef){_0x2eb6d3[_0xa4e8('0x14')](0x194);}return _0x2799ef;};}function handleError(_0x4d160d,_0x45ae87){_0x45ae87=_0x45ae87||0x1f4;return function(_0x3a2b95){logger[_0xa4e8('0x22')](_0x3a2b95[_0xa4e8('0x23')]);if(_0x3a2b95[_0xa4e8('0x24')]){delete _0x3a2b95[_0xa4e8('0x24')];}_0x4d160d[_0xa4e8('0x15')](_0x45ae87)[_0xa4e8('0x25')](_0x3a2b95);};}exports[_0xa4e8('0x26')]=function(_0x555ac1,_0x1743e2){var _0x5308f8={},_0x2cfcd6={},_0x445177={'count':0x0,'rows':[]};var _0x255c87=_[_0xa4e8('0x27')](db['SalesforceField'][_0xa4e8('0x28')],function(_0x5c6588){return{'name':_0x5c6588[_0xa4e8('0x29')],'type':_0x5c6588[_0xa4e8('0x2a')]['key']};});_0x2cfcd6[_0xa4e8('0x2b')]=_['map'](_0x255c87,_0xa4e8('0x24'));_0x2cfcd6[_0xa4e8('0x2c')]=_[_0xa4e8('0x2d')](_0x555ac1['query']);_0x2cfcd6[_0xa4e8('0x2e')]=_[_0xa4e8('0x2f')](_0x2cfcd6[_0xa4e8('0x2b')],_0x2cfcd6[_0xa4e8('0x2c')]);_0x5308f8['attributes']=_[_0xa4e8('0x2f')](_0x2cfcd6[_0xa4e8('0x2b')],qs[_0xa4e8('0x30')](_0x555ac1[_0xa4e8('0x2c')][_0xa4e8('0x30')]));_0x5308f8[_0xa4e8('0x31')]=_0x5308f8[_0xa4e8('0x31')][_0xa4e8('0x32')]?_0x5308f8[_0xa4e8('0x31')]:_0x2cfcd6[_0xa4e8('0x2b')];if(!_0x555ac1[_0xa4e8('0x2c')][_0xa4e8('0x33')](_0xa4e8('0x34'))){_0x5308f8[_0xa4e8('0x19')]=qs[_0xa4e8('0x19')](_0x555ac1[_0xa4e8('0x2c')][_0xa4e8('0x19')]);_0x5308f8[_0xa4e8('0x17')]=qs['offset'](_0x555ac1[_0xa4e8('0x2c')]['offset']);}_0x5308f8['order']=qs[_0xa4e8('0x35')](_0x555ac1['query'][_0xa4e8('0x35')]);_0x5308f8[_0xa4e8('0x36')]=qs[_0xa4e8('0x2e')](_['pick'](_0x555ac1['query'],_0x2cfcd6[_0xa4e8('0x2e')]),_0x255c87);if(_0x555ac1[_0xa4e8('0x2c')][_0xa4e8('0x37')]){_0x5308f8[_0xa4e8('0x36')]=_[_0xa4e8('0x38')](_0x5308f8['where'],{'$or':_[_0xa4e8('0x27')](_0x255c87,function(_0x2adc33){if(_0x2adc33[_0xa4e8('0x2a')]!==_0xa4e8('0x39')){var _0x3aee3d={};_0x3aee3d[_0x2adc33[_0xa4e8('0x24')]]={'$like':'%'+_0x555ac1[_0xa4e8('0x2c')]['filter']+'%'};return _0x3aee3d;}})});}_0x5308f8=_[_0xa4e8('0x38')]({},_0x5308f8,_0x555ac1[_0xa4e8('0x3a')]);var _0x3613f7={'where':_0x5308f8[_0xa4e8('0x36')]};return db[_0xa4e8('0x3b')]['count'](_0x3613f7)['then'](function(_0x5580c0){_0x445177[_0xa4e8('0x1a')]=_0x5580c0;if(_0x555ac1[_0xa4e8('0x2c')]['includeAll']){_0x5308f8[_0xa4e8('0x3c')]=[{'all':!![]}];}return db[_0xa4e8('0x3b')]['findAll'](_0x5308f8);})[_0xa4e8('0x1f')](function(_0x32e1af){_0x445177['rows']=_0x32e1af;return _0x445177;})[_0xa4e8('0x1f')](respondWithFilteredResult(_0x1743e2,_0x5308f8))[_0xa4e8('0x3d')](handleError(_0x1743e2,null));};exports[_0xa4e8('0x3e')]=function(_0x393ac0,_0x48b306){var _0x57bdc8={'raw':!![],'where':{'id':_0x393ac0[_0xa4e8('0x3f')]['id']}},_0x3a849d={};_0x3a849d[_0xa4e8('0x2b')]=_[_0xa4e8('0x2d')](db[_0xa4e8('0x3b')][_0xa4e8('0x28')]);_0x3a849d[_0xa4e8('0x2c')]=_['keys'](_0x393ac0[_0xa4e8('0x2c')]);_0x3a849d[_0xa4e8('0x2e')]=_[_0xa4e8('0x2f')](_0x3a849d['model'],_0x3a849d[_0xa4e8('0x2c')]);_0x57bdc8[_0xa4e8('0x31')]=_[_0xa4e8('0x2f')](_0x3a849d[_0xa4e8('0x2b')],qs['fields'](_0x393ac0[_0xa4e8('0x2c')]['fields']));_0x57bdc8[_0xa4e8('0x31')]=_0x57bdc8['attributes'][_0xa4e8('0x32')]?_0x57bdc8[_0xa4e8('0x31')]:_0x3a849d[_0xa4e8('0x2b')];if(_0x393ac0[_0xa4e8('0x2c')][_0xa4e8('0x40')]){_0x57bdc8[_0xa4e8('0x3c')]=[{'all':!![]}];}_0x57bdc8=_['merge']({},_0x57bdc8,_0x393ac0[_0xa4e8('0x3a')]);return db['SalesforceField'][_0xa4e8('0x41')](_0x57bdc8)[_0xa4e8('0x1f')](handleEntityNotFound(_0x48b306,null))['then'](respondWithResult(_0x48b306,null))[_0xa4e8('0x3d')](handleError(_0x48b306,null));};exports[_0xa4e8('0x42')]=function(_0x4efe7c,_0x430a8a){return db[_0xa4e8('0x3b')][_0xa4e8('0x42')](_0x4efe7c[_0xa4e8('0x43')],{})['then'](respondWithResult(_0x430a8a,0xc9))[_0xa4e8('0x3d')](handleError(_0x430a8a,null));};exports[_0xa4e8('0x1e')]=function(_0x242067,_0x13bb1f){if(_0x242067[_0xa4e8('0x43')]['id']){delete _0x242067[_0xa4e8('0x43')]['id'];}return db[_0xa4e8('0x3b')][_0xa4e8('0x41')]({'where':{'id':_0x242067[_0xa4e8('0x3f')]['id']}})[_0xa4e8('0x1f')](handleEntityNotFound(_0x13bb1f,null))[_0xa4e8('0x1f')](saveUpdates(_0x242067[_0xa4e8('0x43')],null))[_0xa4e8('0x1f')](respondWithResult(_0x13bb1f,null))[_0xa4e8('0x3d')](handleError(_0x13bb1f,null));};exports[_0xa4e8('0x20')]=function(_0x592a54,_0x10707d){return db[_0xa4e8('0x3b')][_0xa4e8('0x41')]({'where':{'id':_0x592a54[_0xa4e8('0x3f')]['id']}})[_0xa4e8('0x1f')](handleEntityNotFound(_0x10707d,null))[_0xa4e8('0x1f')](removeEntity(_0x10707d,null))[_0xa4e8('0x3d')](handleError(_0x10707d,null));};
\ No newline at end of file
+var _0xf605=['create','body','find','destroy','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','status','error','stack','name','index','map','SalesforceField','rawAttributes','key','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','params','intersection','model','options','catch'];(function(_0x2b152a,_0x3dd988){var _0x2ad4c7=function(_0x2fa97c){while(--_0x2fa97c){_0x2b152a['push'](_0x2b152a['shift']());}};_0x2ad4c7(++_0x3dd988);}(_0xf605,0x92));var _0x5f60=function(_0x5898c5,_0x55d1a9){_0x5898c5=_0x5898c5-0x0;var _0x551d7b=_0xf605[_0x5898c5];return _0x551d7b;};'use strict';var emlformat=require(_0x5f60('0x0'));var rimraf=require(_0x5f60('0x1'));var zipdir=require(_0x5f60('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5f60('0x3'));var BPromise=require(_0x5f60('0x4'));var Mustache=require('mustache');var util=require(_0x5f60('0x5'));var path=require(_0x5f60('0x6'));var sox=require(_0x5f60('0x7'));var csv=require(_0x5f60('0x8'));var ejs=require(_0x5f60('0x9'));var fs=require('fs');var fs_extra=require(_0x5f60('0xa'));var _=require(_0x5f60('0xb'));var squel=require(_0x5f60('0xc'));var crypto=require('crypto');var jsforce=require(_0x5f60('0xd'));var deskjs=require(_0x5f60('0xe'));var toCsv=require(_0x5f60('0x8'));var querystring=require('querystring');var Papa=require(_0x5f60('0xf'));var Redis=require('ioredis');var authService=require(_0x5f60('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x5f60('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5f60('0x12'));var utils=require('../../config/utils');var config=require(_0x5f60('0x13'));var licenseUtil=require(_0x5f60('0x14'));var db=require(_0x5f60('0x15'))['db'];function respondWithStatusCode(_0x42000f,_0x1ffd78){_0x1ffd78=_0x1ffd78||0xcc;return function(_0x2d8733){if(_0x2d8733){return _0x42000f[_0x5f60('0x16')](_0x1ffd78);}return _0x42000f['status'](_0x1ffd78)[_0x5f60('0x17')]();};}function respondWithResult(_0x5a683f,_0x1f0367){_0x1f0367=_0x1f0367||0xc8;return function(_0x61f9ec){if(_0x61f9ec){return _0x5a683f['status'](_0x1f0367)[_0x5f60('0x18')](_0x61f9ec);}};}function respondWithFilteredResult(_0x22d0b2,_0x391708){return function(_0x5ddc21){if(_0x5ddc21){var _0x3cd821=typeof _0x391708[_0x5f60('0x19')]==='undefined'&&typeof _0x391708[_0x5f60('0x1a')]===_0x5f60('0x1b');var _0x366988=_0x5ddc21[_0x5f60('0x1c')];var _0x50e114=_0x3cd821?0x0:_0x391708[_0x5f60('0x19')];var _0x5b8333=_0x3cd821?_0x5ddc21[_0x5f60('0x1c')]:_0x391708[_0x5f60('0x19')]+_0x391708['limit'];var _0x55fba2;if(_0x5b8333>=_0x366988){_0x5b8333=_0x366988;_0x55fba2=0xc8;}else{_0x55fba2=0xce;}_0x22d0b2['status'](_0x55fba2);return _0x22d0b2[_0x5f60('0x1d')](_0x5f60('0x1e'),_0x50e114+'-'+_0x5b8333+'/'+_0x366988)[_0x5f60('0x18')](_0x5ddc21);}return null;};}function patchUpdates(_0x519d8b){return function(_0x19f201){try{jsonpatch[_0x5f60('0x1f')](_0x19f201,_0x519d8b,!![]);}catch(_0x56f44a){return BPromise[_0x5f60('0x20')](_0x56f44a);}return _0x19f201[_0x5f60('0x21')]();};}function saveUpdates(_0x194f20,_0x58822e){return function(_0x39ec4c){if(_0x39ec4c){return _0x39ec4c[_0x5f60('0x22')](_0x194f20)[_0x5f60('0x23')](function(_0xf3e12a){return _0xf3e12a;});}return null;};}function removeEntity(_0x4c9625,_0xfcc9bc){return function(_0x3daab6){if(_0x3daab6){return _0x3daab6['destroy']()['then'](function(){_0x4c9625[_0x5f60('0x24')](0xcc)[_0x5f60('0x17')]();});}};}function handleEntityNotFound(_0x4d10d9,_0x14e546){return function(_0x31b8b4){if(!_0x31b8b4){_0x4d10d9[_0x5f60('0x16')](0x194);}return _0x31b8b4;};}function handleError(_0x1d520b,_0x2a1cf7){_0x2a1cf7=_0x2a1cf7||0x1f4;return function(_0x4a64bd){logger[_0x5f60('0x25')](_0x4a64bd[_0x5f60('0x26')]);if(_0x4a64bd['name']){delete _0x4a64bd[_0x5f60('0x27')];}_0x1d520b['status'](_0x2a1cf7)['send'](_0x4a64bd);};}exports[_0x5f60('0x28')]=function(_0x9a3715,_0x2f8e64){var _0x27852e={},_0x4a1893={},_0x5526e0={'count':0x0,'rows':[]};var _0x50ea23=_[_0x5f60('0x29')](db[_0x5f60('0x2a')][_0x5f60('0x2b')],function(_0x37886c){return{'name':_0x37886c['fieldName'],'type':_0x37886c['type'][_0x5f60('0x2c')]};});_0x4a1893['model']=_[_0x5f60('0x29')](_0x50ea23,_0x5f60('0x27'));_0x4a1893[_0x5f60('0x2d')]=_[_0x5f60('0x2e')](_0x9a3715[_0x5f60('0x2d')]);_0x4a1893[_0x5f60('0x2f')]=_['intersection'](_0x4a1893['model'],_0x4a1893[_0x5f60('0x2d')]);_0x27852e[_0x5f60('0x30')]=_['intersection'](_0x4a1893['model'],qs['fields'](_0x9a3715[_0x5f60('0x2d')][_0x5f60('0x31')]));_0x27852e[_0x5f60('0x30')]=_0x27852e[_0x5f60('0x30')][_0x5f60('0x32')]?_0x27852e['attributes']:_0x4a1893['model'];if(!_0x9a3715[_0x5f60('0x2d')][_0x5f60('0x33')]('nolimit')){_0x27852e[_0x5f60('0x1a')]=qs['limit'](_0x9a3715[_0x5f60('0x2d')]['limit']);_0x27852e[_0x5f60('0x19')]=qs[_0x5f60('0x19')](_0x9a3715[_0x5f60('0x2d')]['offset']);}_0x27852e[_0x5f60('0x34')]=qs[_0x5f60('0x35')](_0x9a3715[_0x5f60('0x2d')][_0x5f60('0x35')]);_0x27852e[_0x5f60('0x36')]=qs[_0x5f60('0x2f')](_[_0x5f60('0x37')](_0x9a3715[_0x5f60('0x2d')],_0x4a1893[_0x5f60('0x2f')]),_0x50ea23);if(_0x9a3715['query'][_0x5f60('0x38')]){_0x27852e['where']=_[_0x5f60('0x39')](_0x27852e[_0x5f60('0x36')],{'$or':_['map'](_0x50ea23,function(_0x564acc){if(_0x564acc['type']!==_0x5f60('0x3a')){var _0x120b65={};_0x120b65[_0x564acc[_0x5f60('0x27')]]={'$like':'%'+_0x9a3715[_0x5f60('0x2d')][_0x5f60('0x38')]+'%'};return _0x120b65;}})});}_0x27852e=_[_0x5f60('0x39')]({},_0x27852e,_0x9a3715['options']);var _0x4d8f3d={'where':_0x27852e[_0x5f60('0x36')]};return db['SalesforceField']['count'](_0x4d8f3d)[_0x5f60('0x23')](function(_0x1042f1){_0x5526e0[_0x5f60('0x1c')]=_0x1042f1;if(_0x9a3715['query'][_0x5f60('0x3b')]){_0x27852e[_0x5f60('0x3c')]=[{'all':!![]}];}return db[_0x5f60('0x2a')][_0x5f60('0x3d')](_0x27852e);})['then'](function(_0x1e5553){_0x5526e0['rows']=_0x1e5553;return _0x5526e0;})[_0x5f60('0x23')](respondWithFilteredResult(_0x2f8e64,_0x27852e))['catch'](handleError(_0x2f8e64,null));};exports['show']=function(_0x3f6acf,_0x47a445){var _0x227ba7={'raw':!![],'where':{'id':_0x3f6acf[_0x5f60('0x3e')]['id']}},_0x518e53={};_0x518e53['model']=_[_0x5f60('0x2e')](db['SalesforceField'][_0x5f60('0x2b')]);_0x518e53[_0x5f60('0x2d')]=_[_0x5f60('0x2e')](_0x3f6acf[_0x5f60('0x2d')]);_0x518e53[_0x5f60('0x2f')]=_[_0x5f60('0x3f')](_0x518e53['model'],_0x518e53[_0x5f60('0x2d')]);_0x227ba7[_0x5f60('0x30')]=_[_0x5f60('0x3f')](_0x518e53[_0x5f60('0x40')],qs[_0x5f60('0x31')](_0x3f6acf[_0x5f60('0x2d')][_0x5f60('0x31')]));_0x227ba7[_0x5f60('0x30')]=_0x227ba7[_0x5f60('0x30')][_0x5f60('0x32')]?_0x227ba7['attributes']:_0x518e53[_0x5f60('0x40')];if(_0x3f6acf[_0x5f60('0x2d')][_0x5f60('0x3b')]){_0x227ba7[_0x5f60('0x3c')]=[{'all':!![]}];}_0x227ba7=_[_0x5f60('0x39')]({},_0x227ba7,_0x3f6acf[_0x5f60('0x41')]);return db[_0x5f60('0x2a')]['find'](_0x227ba7)['then'](handleEntityNotFound(_0x47a445,null))['then'](respondWithResult(_0x47a445,null))[_0x5f60('0x42')](handleError(_0x47a445,null));};exports[_0x5f60('0x43')]=function(_0x2e8ae1,_0x894a78){return db[_0x5f60('0x2a')]['create'](_0x2e8ae1['body'],{})[_0x5f60('0x23')](respondWithResult(_0x894a78,0xc9))['catch'](handleError(_0x894a78,null));};exports[_0x5f60('0x22')]=function(_0xb9c7b5,_0x4f6398){if(_0xb9c7b5[_0x5f60('0x44')]['id']){delete _0xb9c7b5[_0x5f60('0x44')]['id'];}return db[_0x5f60('0x2a')][_0x5f60('0x45')]({'where':{'id':_0xb9c7b5[_0x5f60('0x3e')]['id']}})[_0x5f60('0x23')](handleEntityNotFound(_0x4f6398,null))['then'](saveUpdates(_0xb9c7b5[_0x5f60('0x44')],null))[_0x5f60('0x23')](respondWithResult(_0x4f6398,null))[_0x5f60('0x42')](handleError(_0x4f6398,null));};exports[_0x5f60('0x46')]=function(_0x10621a,_0x386c0d){return db[_0x5f60('0x2a')][_0x5f60('0x45')]({'where':{'id':_0x10621a[_0x5f60('0x3e')]['id']}})['then'](handleEntityNotFound(_0x386c0d,null))[_0x5f60('0x23')](removeEntity(_0x386c0d,null))[_0x5f60('0x42')](handleError(_0x386c0d,null));};
\ No newline at end of file
index abeaa69..25b4402 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2404=['int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','../../config/logger','api','bluebird','rimraf','../../config/environment','define'];(function(_0x780ea3,_0x208c35){var _0x17dea9=function(_0x50f640){while(--_0x50f640){_0x780ea3['push'](_0x780ea3['shift']());}};_0x17dea9(++_0x208c35);}(_0x2404,0xca));var _0x4240=function(_0x890d17,_0x77c1c9){_0x890d17=_0x890d17-0x0;var _0x25072f=_0x2404[_0x890d17];return _0x25072f;};'use strict';var _=require(_0x4240('0x0'));var util=require('util');var logger=require(_0x4240('0x1'))(_0x4240('0x2'));var moment=require('moment');var BPromise=require(_0x4240('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4240('0x4'));var config=require(_0x4240('0x5'));var attributes=require('./intSalesforceField.attributes');module['exports']=function(_0x5a2d9f,_0x52991c){return _0x5a2d9f[_0x4240('0x6')]('SalesforceField',attributes,{'tableName':_0x4240('0x7'),'paranoid':![],'indexes':[{'name':_0x4240('0x8'),'fields':[_0x4240('0x9'),_0x4240('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1e92=['bluebird','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','int_salesforce_fields','FieldId','util','moment'];(function(_0x6f98de,_0x2b540d){var _0x3feb2d=function(_0xa871f){while(--_0xa871f){_0x6f98de['push'](_0x6f98de['shift']());}};_0x3feb2d(++_0x2b540d);}(_0x1e92,0x148));var _0x21e9=function(_0x58dc25,_0x49b9d5){_0x58dc25=_0x58dc25-0x0;var _0x21b0a7=_0x1e92[_0x58dc25];return _0x21b0a7;};'use strict';var _=require('lodash');var util=require(_0x21e9('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x21e9('0x1'));var BPromise=require(_0x21e9('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x21e9('0x3'));var rimraf=require(_0x21e9('0x4'));var config=require(_0x21e9('0x5'));var attributes=require(_0x21e9('0x6'));module[_0x21e9('0x7')]=function(_0x5cf779,_0x5d1bb6){return _0x5cf779[_0x21e9('0x8')]('SalesforceField',attributes,{'tableName':_0x21e9('0x9'),'paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':['idField',_0x21e9('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 508497e..b7824fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ef8=['util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch'];(function(_0x5bb7ba,_0x330a53){var _0x1f3daa=function(_0x19479e){while(--_0x19479e){_0x5bb7ba['push'](_0x5bb7ba['shift']());}};_0x1f3daa(++_0x330a53);}(_0x7ef8,0x154));var _0x87ef=function(_0x56c758,_0x540591){_0x56c758=_0x56c758-0x0;var _0x9bb0db=_0x7ef8[_0x56c758];return _0x9bb0db;};'use strict';var _=require('lodash');var util=require(_0x87ef('0x0'));var moment=require('moment');var BPromise=require(_0x87ef('0x1'));var rs=require(_0x87ef('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x87ef('0x3'))['db'];var utils=require(_0x87ef('0x4'));var logger=require(_0x87ef('0x5'))(_0x87ef('0x6'));var config=require(_0x87ef('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x87ef('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x304ac7,_0x4ff993,_0x59083a){return new BPromise(function(_0xe0f7aa,_0x351049){return client[_0x87ef('0x9')](_0x304ac7,_0x59083a)[_0x87ef('0xa')](function(_0x184dc2){logger[_0x87ef('0xb')](_0x87ef('0xc'),_0x4ff993,_0x87ef('0xd'));logger[_0x87ef('0xe')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x4ff993,_0x87ef('0xd'),JSON[_0x87ef('0xf')](_0x184dc2));if(_0x184dc2[_0x87ef('0x10')]){if(_0x184dc2[_0x87ef('0x10')][_0x87ef('0x11')]===0x1f4){logger['error']('SalesforceField,\x20%s,\x20%s',_0x4ff993,_0x184dc2[_0x87ef('0x10')][_0x87ef('0x12')]);return _0x351049(_0x184dc2[_0x87ef('0x10')]['message']);}logger[_0x87ef('0x10')](_0x87ef('0xc'),_0x4ff993,_0x184dc2['error'][_0x87ef('0x12')]);return _0xe0f7aa(_0x184dc2[_0x87ef('0x10')][_0x87ef('0x12')]);}else{logger[_0x87ef('0xb')]('SalesforceField,\x20%s,\x20%s',_0x4ff993,_0x87ef('0xd'));_0xe0f7aa(_0x184dc2['result']['message']);}})[_0x87ef('0x13')](function(_0x2501ba){logger[_0x87ef('0x10')](_0x87ef('0xc'),_0x4ff993,_0x2501ba);_0x351049(_0x2501ba);});});}
\ No newline at end of file
+var _0x5f76=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','bluebird','randomstring'];(function(_0xd580e2,_0x109182){var _0x4d955f=function(_0x568fff){while(--_0x568fff){_0xd580e2['push'](_0xd580e2['shift']());}};_0x4d955f(++_0x109182);}(_0x5f76,0x14c));var _0x65f7=function(_0x34bc94,_0x74f0fd){_0x34bc94=_0x34bc94-0x0;var _0xee41e7=_0x5f76[_0x34bc94];return _0xee41e7;};'use strict';var _=require(_0x65f7('0x0'));var util=require(_0x65f7('0x1'));var moment=require('moment');var BPromise=require(_0x65f7('0x2'));var rs=require(_0x65f7('0x3'));var fs=require('fs');var Redis=require(_0x65f7('0x4'));var db=require(_0x65f7('0x5'))['db'];var utils=require(_0x65f7('0x6'));var logger=require(_0x65f7('0x7'))(_0x65f7('0x8'));var config=require('../../config/environment');var jayson=require(_0x65f7('0x9'));var client=jayson[_0x65f7('0xa')][_0x65f7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5f56a9,_0x563490,_0x3b43b5){return new BPromise(function(_0x15c0b6,_0x192027){return client[_0x65f7('0xc')](_0x5f56a9,_0x3b43b5)[_0x65f7('0xd')](function(_0x3fc01c){logger[_0x65f7('0xe')](_0x65f7('0xf'),_0x563490,_0x65f7('0x10'));logger[_0x65f7('0x11')](_0x65f7('0x12'),_0x563490,_0x65f7('0x10'),JSON[_0x65f7('0x13')](_0x3fc01c));if(_0x3fc01c['error']){if(_0x3fc01c[_0x65f7('0x14')][_0x65f7('0x15')]===0x1f4){logger[_0x65f7('0x14')](_0x65f7('0xf'),_0x563490,_0x3fc01c[_0x65f7('0x14')][_0x65f7('0x16')]);return _0x192027(_0x3fc01c[_0x65f7('0x14')][_0x65f7('0x16')]);}logger[_0x65f7('0x14')]('SalesforceField,\x20%s,\x20%s',_0x563490,_0x3fc01c[_0x65f7('0x14')][_0x65f7('0x16')]);return _0x15c0b6(_0x3fc01c[_0x65f7('0x14')]['message']);}else{logger['info'](_0x65f7('0xf'),_0x563490,_0x65f7('0x10'));_0x15c0b6(_0x3fc01c['result'][_0x65f7('0x16')]);}})[_0x65f7('0x17')](function(_0x47ddb6){logger[_0x65f7('0x14')]('SalesforceField,\x20%s,\x20%s',_0x563490,_0x47ddb6);_0x192027(_0x47ddb6);});});}
\ No newline at end of file
index ef56c77..70f44d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d71=['delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intServicenowAccount.controller','isAuthenticated','index','get','/:id/configurations','getConfigurations','/:id/fields','getFields','create','/:id'];(function(_0x1ec350,_0x380f86){var _0x3aa563=function(_0x3c88e2){while(--_0x3c88e2){_0x1ec350['push'](_0x1ec350['shift']());}};_0x3aa563(++_0x380f86);}(_0x7d71,0x192));var _0x17d7=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0x7d71[_0x3b0731];return _0x4204d7;};'use strict';var multer=require(_0x17d7('0x0'));var util=require(_0x17d7('0x1'));var path=require(_0x17d7('0x2'));var timeout=require(_0x17d7('0x3'));var express=require('express');var router=express[_0x17d7('0x4')]();var fs_extra=require(_0x17d7('0x5'));var auth=require(_0x17d7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x17d7('0x7'));var controller=require(_0x17d7('0x8'));router['get']('/',auth[_0x17d7('0x9')](),controller[_0x17d7('0xa')]);router['get']('/:id',auth[_0x17d7('0x9')](),controller['show']);router[_0x17d7('0xb')](_0x17d7('0xc'),auth[_0x17d7('0x9')](),controller[_0x17d7('0xd')]);router[_0x17d7('0xb')](_0x17d7('0xe'),auth[_0x17d7('0x9')](),controller[_0x17d7('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x17d7('0x10')]);router['post'](_0x17d7('0xc'),auth['isAuthenticated'](),controller['addConfiguration']);router['put'](_0x17d7('0x11'),auth[_0x17d7('0x9')](),controller['update']);router[_0x17d7('0x12')](_0x17d7('0x11'),auth['isAuthenticated'](),controller[_0x17d7('0x13')]);module[_0x17d7('0x14')]=router;
\ No newline at end of file
+var _0xaf80=['show','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','put','update','delete','exports','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','/:id'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0xaf80,0x1ef));var _0x0af8=function(_0x15404c,_0xd34754){_0x15404c=_0x15404c-0x0;var _0x43282c=_0xaf80[_0x15404c];return _0x43282c;};'use strict';var multer=require(_0x0af8('0x0'));var util=require(_0x0af8('0x1'));var path=require(_0x0af8('0x2'));var timeout=require(_0x0af8('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0af8('0x4'));var interaction=require(_0x0af8('0x5'));var config=require(_0x0af8('0x6'));var controller=require(_0x0af8('0x7'));router[_0x0af8('0x8')]('/',auth[_0x0af8('0x9')](),controller['index']);router['get'](_0x0af8('0xa'),auth['isAuthenticated'](),controller[_0x0af8('0xb')]);router[_0x0af8('0x8')](_0x0af8('0xc'),auth['isAuthenticated'](),controller[_0x0af8('0xd')]);router[_0x0af8('0x8')](_0x0af8('0xe'),auth['isAuthenticated'](),controller['getFields']);router[_0x0af8('0xf')]('/',auth[_0x0af8('0x9')](),controller[_0x0af8('0x10')]);router[_0x0af8('0xf')](_0x0af8('0xc'),auth['isAuthenticated'](),controller[_0x0af8('0x11')]);router[_0x0af8('0x12')](_0x0af8('0xa'),auth[_0x0af8('0x9')](),controller[_0x0af8('0x13')]);router[_0x0af8('0x14')](_0x0af8('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x0af8('0x15')]=router;
\ No newline at end of file
index b7abe5a..9dbc1f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x787e=['remoteUri','sequelize','exports','STRING'];(function(_0x70e53e,_0x1a64d9){var _0x57b200=function(_0x1f20ce){while(--_0x1f20ce){_0x70e53e['push'](_0x70e53e['shift']());}};_0x57b200(++_0x1a64d9);}(_0x787e,0xd5));var _0xe787=function(_0x14ef90,_0x4a9221){_0x14ef90=_0x14ef90-0x0;var _0x440069=_0x787e[_0x14ef90];return _0x440069;};'use strict';var Sequelize=require(_0xe787('0x0'));module[_0xe787('0x1')]={'name':{'type':Sequelize[_0xe787('0x2')]},'description':{'type':Sequelize[_0xe787('0x2')]},'username':{'type':Sequelize[_0xe787('0x2')],'unique':'username'},'password':{'type':Sequelize[_0xe787('0x2')]},'email':{'type':Sequelize[_0xe787('0x2')]},'remoteUri':{'type':Sequelize[_0xe787('0x2')],'unique':_0xe787('0x3')},'serverUrl':{'type':Sequelize[_0xe787('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x156a=['exports','STRING','username','sequelize'];(function(_0xd5fd5c,_0x3e2a66){var _0x3b0663=function(_0x40643b){while(--_0x40643b){_0xd5fd5c['push'](_0xd5fd5c['shift']());}};_0x3b0663(++_0x3e2a66);}(_0x156a,0x197));var _0xa156=function(_0x3e8903,_0x39892f){_0x3e8903=_0x3e8903-0x0;var _0x18e6e7=_0x156a[_0x3e8903];return _0x18e6e7;};'use strict';var Sequelize=require(_0xa156('0x0'));module[_0xa156('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xa156('0x2')],'unique':_0xa156('0x3')},'password':{'type':Sequelize[_0xa156('0x2')]},'email':{'type':Sequelize[_0xa156('0x2')]},'remoteUri':{'type':Sequelize[_0xa156('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xa156('0x2')],'allowNull':![]}};
\ No newline at end of file
index 7dd285d..4bf7505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc559=['show','params','keys','rawAttributes','length','create','body','find','destroy','getConfigurations','findOne','sort','AccountId','Subjects','ServicenowConfiguration','ServicenowField','Descriptions','made_sla','hold_reason','knowledge','subcategory','close_code','notify','incident_state','severity','category','caused_by','watch_list','upon_reject','sys_updated_on','number','resolved_by','sys_updated_by','user_input','sys_created_on','state','sys_created_by','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','business_service','priority','rfc','time_worked','opened_at','work_end','reopened_time','caller_id','approval_set','work_notes','short_description','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','urgency','problem_id','company','reassignment_count','assigned_to','sla_due','approval','due_date','sys_mod_count','sys_tags','escalation','upon_approval','username','password','email','remoteUri','serverUrl','substring','%s/api/now/doc/table/schema/','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','assign','remove','includes','push','all','TCL:\x20_object','forEach','internalType','label','test','statusCode','Wrong\x20credentials','True','true','False','sys_choice?sysparm_query=name=incident^element=','inactive','false','value','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','index','map','ServicenowAccount','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch'];(function(_0x278aed,_0x310dab){var _0x2009b3=function(_0x5489d0){while(--_0x5489d0){_0x278aed['push'](_0x278aed['shift']());}};_0x2009b3(++_0x310dab);}(_0xc559,0x121));var _0x9c55=function(_0x498519,_0x260740){_0x498519=_0x498519-0x0;var _0x1771da=_0xc559[_0x498519];return _0x1771da;};'use strict';var emlformat=require(_0x9c55('0x0'));var rimraf=require(_0x9c55('0x1'));var zipdir=require(_0x9c55('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9c55('0x3'));var moment=require('moment');var BPromise=require(_0x9c55('0x4'));var Mustache=require(_0x9c55('0x5'));var util=require(_0x9c55('0x6'));var path=require(_0x9c55('0x7'));var sox=require(_0x9c55('0x8'));var csv=require(_0x9c55('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9c55('0xa'));var _=require(_0x9c55('0xb'));var squel=require(_0x9c55('0xc'));var crypto=require(_0x9c55('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9c55('0xe'));var toCsv=require(_0x9c55('0x9'));var querystring=require('querystring');var Papa=require(_0x9c55('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9c55('0x10'));var as=require(_0x9c55('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9c55('0x12'));var utils=require(_0x9c55('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x9c55('0x14'));var db=require(_0x9c55('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2d159d,_0x11988e){_0x11988e=_0x11988e||0xcc;return function(_0x546c96){if(_0x546c96){return _0x2d159d[_0x9c55('0x16')](_0x11988e);}return _0x2d159d[_0x9c55('0x17')](_0x11988e)['end']();};}function respondWithResult(_0x345426,_0x199655){_0x199655=_0x199655||0xc8;return function(_0x31bcab){if(_0x31bcab){return _0x345426['status'](_0x199655)[_0x9c55('0x18')](_0x31bcab);}};}function respondWithFilteredResult(_0x2a0d49,_0x570239){return function(_0x201451){if(_0x201451){var _0x4a8e11=typeof _0x570239[_0x9c55('0x19')]===_0x9c55('0x1a')&&typeof _0x570239[_0x9c55('0x1b')]===_0x9c55('0x1a');var _0x5381b8=_0x201451[_0x9c55('0x1c')];var _0x1ef781=_0x4a8e11?0x0:_0x570239[_0x9c55('0x19')];var _0x24fd2b=_0x4a8e11?_0x201451['count']:_0x570239[_0x9c55('0x19')]+_0x570239[_0x9c55('0x1b')];var _0x6302c8;if(_0x24fd2b>=_0x5381b8){_0x24fd2b=_0x5381b8;_0x6302c8=0xc8;}else{_0x6302c8=0xce;}_0x2a0d49[_0x9c55('0x17')](_0x6302c8);return _0x2a0d49[_0x9c55('0x1d')](_0x9c55('0x1e'),_0x1ef781+'-'+_0x24fd2b+'/'+_0x5381b8)[_0x9c55('0x18')](_0x201451);}return null;};}function patchUpdates(_0x4eb9e6){return function(_0x45a402){try{jsonpatch[_0x9c55('0x1f')](_0x45a402,_0x4eb9e6,!![]);}catch(_0x1d3d33){return BPromise[_0x9c55('0x20')](_0x1d3d33);}return _0x45a402[_0x9c55('0x21')]();};}function saveUpdates(_0x28b075,_0x4e604f){return function(_0x10b736){if(_0x10b736){return _0x10b736[_0x9c55('0x22')](_0x28b075)['then'](function(_0x31047e){return _0x31047e;});}return null;};}function removeEntity(_0x1da3e7,_0x331145){return function(_0x2000f2){if(_0x2000f2){return _0x2000f2['destroy']()[_0x9c55('0x23')](function(){_0x1da3e7[_0x9c55('0x17')](0xcc)[_0x9c55('0x24')]();});}};}function handleEntityNotFound(_0x3b30b7,_0x106872){return function(_0x4c2acc){if(!_0x4c2acc){_0x3b30b7[_0x9c55('0x16')](0x194);}return _0x4c2acc;};}function handleError(_0x149580,_0x5f4d0d){_0x5f4d0d=_0x5f4d0d||0x1f4;return function(_0x3c80d6){logger[_0x9c55('0x25')](_0x3c80d6[_0x9c55('0x26')]);if(_0x3c80d6['name']){delete _0x3c80d6[_0x9c55('0x27')];}_0x149580[_0x9c55('0x17')](_0x5f4d0d)[_0x9c55('0x28')](_0x3c80d6);};}exports[_0x9c55('0x29')]=function(_0x5d50e7,_0x14e5d1){var _0x36d235={},_0x285379={},_0x352ee5={'count':0x0,'rows':[]};var _0x256fa8=_[_0x9c55('0x2a')](db[_0x9c55('0x2b')]['rawAttributes'],function(_0x25db48){return{'name':_0x25db48[_0x9c55('0x2c')],'type':_0x25db48[_0x9c55('0x2d')][_0x9c55('0x2e')]};});_0x285379[_0x9c55('0x2f')]=_[_0x9c55('0x2a')](_0x256fa8,_0x9c55('0x27'));_0x285379[_0x9c55('0x30')]=_['keys'](_0x5d50e7[_0x9c55('0x30')]);_0x285379[_0x9c55('0x31')]=_[_0x9c55('0x32')](_0x285379['model'],_0x285379[_0x9c55('0x30')]);_0x36d235[_0x9c55('0x33')]=_[_0x9c55('0x32')](_0x285379[_0x9c55('0x2f')],qs['fields'](_0x5d50e7[_0x9c55('0x30')][_0x9c55('0x34')]));_0x36d235['attributes']=_0x36d235[_0x9c55('0x33')]['length']?_0x36d235[_0x9c55('0x33')]:_0x285379[_0x9c55('0x2f')];if(!_0x5d50e7[_0x9c55('0x30')][_0x9c55('0x35')](_0x9c55('0x36'))){_0x36d235[_0x9c55('0x1b')]=qs['limit'](_0x5d50e7[_0x9c55('0x30')][_0x9c55('0x1b')]);_0x36d235[_0x9c55('0x19')]=qs[_0x9c55('0x19')](_0x5d50e7[_0x9c55('0x30')][_0x9c55('0x19')]);}_0x36d235[_0x9c55('0x37')]=qs['sort'](_0x5d50e7[_0x9c55('0x30')]['sort']);_0x36d235[_0x9c55('0x38')]=qs['filters'](_[_0x9c55('0x39')](_0x5d50e7[_0x9c55('0x30')],_0x285379[_0x9c55('0x31')]),_0x256fa8);if(_0x5d50e7[_0x9c55('0x30')][_0x9c55('0x3a')]){_0x36d235['where']=_[_0x9c55('0x3b')](_0x36d235[_0x9c55('0x38')],{'$or':_[_0x9c55('0x2a')](_0x256fa8,function(_0x2a7542){if(_0x2a7542[_0x9c55('0x2d')]!==_0x9c55('0x3c')){var _0x5a3770={};_0x5a3770[_0x2a7542[_0x9c55('0x27')]]={'$like':'%'+_0x5d50e7['query'][_0x9c55('0x3a')]+'%'};return _0x5a3770;}})});}_0x36d235=_[_0x9c55('0x3b')]({},_0x36d235,_0x5d50e7[_0x9c55('0x3d')]);var _0xdb24c8={'where':_0x36d235['where']};return db[_0x9c55('0x2b')][_0x9c55('0x1c')](_0xdb24c8)['then'](function(_0x316ef0){_0x352ee5[_0x9c55('0x1c')]=_0x316ef0;if(_0x5d50e7[_0x9c55('0x30')][_0x9c55('0x3e')]){_0x36d235[_0x9c55('0x3f')]=[{'all':!![]}];}return db[_0x9c55('0x2b')][_0x9c55('0x40')](_0x36d235);})[_0x9c55('0x23')](function(_0xc357c6){_0x352ee5[_0x9c55('0x41')]=_0xc357c6;return _0x352ee5;})[_0x9c55('0x23')](respondWithFilteredResult(_0x14e5d1,_0x36d235))[_0x9c55('0x42')](handleError(_0x14e5d1,null));};exports[_0x9c55('0x43')]=function(_0x59629e,_0x112a90){var _0x33a5fa={'raw':![],'where':{'id':_0x59629e[_0x9c55('0x44')]['id']}},_0x5a8167={};_0x5a8167['model']=_[_0x9c55('0x45')](db['ServicenowAccount'][_0x9c55('0x46')]);_0x5a8167[_0x9c55('0x30')]=_['keys'](_0x59629e[_0x9c55('0x30')]);_0x5a8167[_0x9c55('0x31')]=_[_0x9c55('0x32')](_0x5a8167[_0x9c55('0x2f')],_0x5a8167[_0x9c55('0x30')]);_0x33a5fa[_0x9c55('0x33')]=_['intersection'](_0x5a8167[_0x9c55('0x2f')],qs[_0x9c55('0x34')](_0x59629e['query']['fields']));_0x33a5fa[_0x9c55('0x33')]=_0x33a5fa[_0x9c55('0x33')][_0x9c55('0x47')]?_0x33a5fa['attributes']:_0x5a8167['model'];if(_0x59629e['query'][_0x9c55('0x3e')]){_0x33a5fa[_0x9c55('0x3f')]=[{'all':!![]}];}_0x33a5fa=_[_0x9c55('0x3b')]({},_0x33a5fa,_0x59629e[_0x9c55('0x3d')]);return db[_0x9c55('0x2b')]['find'](_0x33a5fa)[_0x9c55('0x23')](handleEntityNotFound(_0x112a90,null))['then'](respondWithResult(_0x112a90,null))[_0x9c55('0x42')](handleError(_0x112a90,null));};exports[_0x9c55('0x48')]=function(_0x56c53b,_0x2faac8){return db[_0x9c55('0x2b')][_0x9c55('0x48')](_0x56c53b[_0x9c55('0x49')],{})['then'](respondWithResult(_0x2faac8,0xc9))[_0x9c55('0x42')](handleError(_0x2faac8,null));};exports[_0x9c55('0x22')]=function(_0x3cfab4,_0x5e5c52){if(_0x3cfab4[_0x9c55('0x49')]['id']){delete _0x3cfab4[_0x9c55('0x49')]['id'];}return db[_0x9c55('0x2b')][_0x9c55('0x4a')]({'where':{'id':_0x3cfab4[_0x9c55('0x44')]['id']}})[_0x9c55('0x23')](handleEntityNotFound(_0x5e5c52,null))[_0x9c55('0x23')](saveUpdates(_0x3cfab4[_0x9c55('0x49')],null))[_0x9c55('0x23')](respondWithResult(_0x5e5c52,null))[_0x9c55('0x42')](handleError(_0x5e5c52,null));};exports[_0x9c55('0x4b')]=function(_0x387eeb,_0x531b98){return db[_0x9c55('0x2b')][_0x9c55('0x4a')]({'where':{'id':_0x387eeb[_0x9c55('0x44')]['id']}})['then'](handleEntityNotFound(_0x531b98,null))[_0x9c55('0x23')](removeEntity(_0x531b98,null))['catch'](handleError(_0x531b98,null));};exports[_0x9c55('0x4c')]=function(_0x4f63c4,_0x302cd9,_0x11d923){var _0x1a1855={};var _0x3e6452={};var _0x3c93c5;var _0x41384b;return db[_0x9c55('0x2b')][_0x9c55('0x4d')]({'where':{'id':_0x4f63c4[_0x9c55('0x44')]['id']}})[_0x9c55('0x23')](handleEntityNotFound(_0x302cd9,null))[_0x9c55('0x23')](function(_0x13c530){if(_0x13c530){_0x3c93c5=_0x13c530;_0x3e6452['model']=_[_0x9c55('0x45')](db['ServicenowConfiguration']['rawAttributes']);_0x3e6452[_0x9c55('0x30')]=_[_0x9c55('0x45')](_0x4f63c4[_0x9c55('0x30')]);_0x3e6452['filters']=_[_0x9c55('0x32')](_0x3e6452['model'],_0x3e6452['query']);_0x1a1855[_0x9c55('0x33')]=_[_0x9c55('0x32')](_0x3e6452[_0x9c55('0x2f')],qs[_0x9c55('0x34')](_0x4f63c4[_0x9c55('0x30')][_0x9c55('0x34')]));_0x1a1855[_0x9c55('0x33')]=_0x1a1855[_0x9c55('0x33')]['length']?_0x1a1855['attributes']:_0x3e6452['model'];_0x1a1855[_0x9c55('0x37')]=qs[_0x9c55('0x4e')](_0x4f63c4['query'][_0x9c55('0x4e')]);_0x1a1855[_0x9c55('0x38')]=qs[_0x9c55('0x31')](_[_0x9c55('0x39')](_0x4f63c4['query'],_0x3e6452[_0x9c55('0x31')]));if(_0x4f63c4[_0x9c55('0x30')][_0x9c55('0x3a')]){_0x1a1855[_0x9c55('0x38')]=_[_0x9c55('0x3b')](_0x1a1855[_0x9c55('0x38')],{'$or':_[_0x9c55('0x2a')](_0x1a1855[_0x9c55('0x33')],function(_0x3d262f){var _0x1ffb63={};_0x1ffb63[_0x3d262f]={'$like':'%'+_0x4f63c4[_0x9c55('0x30')]['filter']+'%'};return _0x1ffb63;})});}_0x1a1855=_[_0x9c55('0x3b')]({},_0x1a1855,_0x4f63c4[_0x9c55('0x3d')]);return _0x3c93c5[_0x9c55('0x4c')](_0x1a1855);}})[_0x9c55('0x23')](function(_0x2387e6){if(_0x2387e6){_0x41384b=_0x2387e6[_0x9c55('0x47')];if(!_0x4f63c4[_0x9c55('0x30')]['hasOwnProperty'](_0x9c55('0x36'))){_0x1a1855[_0x9c55('0x1b')]=qs['limit'](_0x4f63c4[_0x9c55('0x30')][_0x9c55('0x1b')]);_0x1a1855[_0x9c55('0x19')]=qs[_0x9c55('0x19')](_0x4f63c4[_0x9c55('0x30')]['offset']);}return _0x3c93c5['getConfigurations'](_0x1a1855);}})[_0x9c55('0x23')](function(_0x2a0749){if(_0x2a0749){return _0x2a0749?{'count':_0x41384b,'rows':_0x2a0749}:null;}})[_0x9c55('0x23')](respondWithResult(_0x302cd9,null))[_0x9c55('0x42')](handleError(_0x302cd9,null));};exports['addConfiguration']=function(_0x2c946f,_0x3c6636,_0x217429){if(_0x2c946f[_0x9c55('0x49')]['id']){delete _0x2c946f[_0x9c55('0x49')]['id'];}return db['ServicenowAccount'][_0x9c55('0x4d')]({'where':{'id':_0x2c946f[_0x9c55('0x44')]['id']}})['then'](handleEntityNotFound(_0x3c6636,null))[_0x9c55('0x23')](function(_0x347f41){if(_0x347f41){_0x2c946f[_0x9c55('0x49')][_0x9c55('0x4f')]=_0x347f41['id'];_0x2c946f[_0x9c55('0x49')][_0x9c55('0x50')]=integrations['getSubjects'](_0x2c946f[_0x9c55('0x49')]['channel'],_0x2c946f[_0x9c55('0x49')][_0x9c55('0x2d')]);_0x2c946f[_0x9c55('0x49')]['Descriptions']=integrations['getDescriptions'](_0x2c946f[_0x9c55('0x49')]['channel'],_0x2c946f[_0x9c55('0x49')][_0x9c55('0x2d')]);return db[_0x9c55('0x51')][_0x9c55('0x48')](_0x2c946f[_0x9c55('0x49')],{'include':[{'model':db[_0x9c55('0x52')],'as':_0x9c55('0x50')},{'model':db['ServicenowField'],'as':_0x9c55('0x53')}]});}return null;})[_0x9c55('0x23')](respondWithResult(_0x3c6636,null))[_0x9c55('0x42')](handleError(_0x3c6636,null));};exports['getFields']=function(_0x510ca8,_0x2abd0e,_0x31d48c){var _0x190c90=[_0x9c55('0x54'),_0x9c55('0x55'),_0x9c55('0x56'),_0x9c55('0x57'),_0x9c55('0x58'),_0x9c55('0x59'),_0x9c55('0x5a'),_0x9c55('0x5b'),_0x9c55('0x5c')];var _0x55ea12=['parent','made_sla',_0x9c55('0x5d'),_0x9c55('0x5e'),_0x9c55('0x5f'),_0x9c55('0x60'),'child_incidents',_0x9c55('0x55'),'approval_history',_0x9c55('0x61'),_0x9c55('0x62'),_0x9c55('0x63'),'opened_by',_0x9c55('0x64'),_0x9c55('0x65'),'sys_domain',_0x9c55('0x66'),_0x9c55('0x67'),_0x9c55('0x56'),'order',_0x9c55('0x68'),_0x9c55('0x69'),_0x9c55('0x6a'),_0x9c55('0x6b'),_0x9c55('0x6c'),_0x9c55('0x6d'),'work_notes_list',_0x9c55('0x6e'),_0x9c55('0x6f'),'sys_domain_path',_0x9c55('0x70'),_0x9c55('0x71'),'expected_start',_0x9c55('0x72'),'business_duration','group_list',_0x9c55('0x73'),_0x9c55('0x74'),'resolved_at',_0x9c55('0x75'),_0x9c55('0x76'),_0x9c55('0x57'),_0x9c55('0x77'),_0x9c55('0x78'),_0x9c55('0x58'),'correlation_display',_0x9c55('0x79'),_0x9c55('0x7a'),_0x9c55('0x7b'),_0x9c55('0x7c'),_0x9c55('0x7d'),_0x9c55('0x7e'),_0x9c55('0x7f'),_0x9c55('0x59'),_0x9c55('0x80'),'close_notes',_0x9c55('0x81'),_0x9c55('0x82'),_0x9c55('0x83'),_0x9c55('0x84'),_0x9c55('0x85'),_0x9c55('0x86'),_0x9c55('0x5a'),_0x9c55('0x87'),_0x9c55('0x88'),_0x9c55('0x89'),_0x9c55('0x8a'),'activity_due',_0x9c55('0x8b'),_0x9c55('0x5b'),'comments',_0x9c55('0x8c'),_0x9c55('0x8d'),'comments_and_work_notes',_0x9c55('0x8e'),_0x9c55('0x8f'),'reopen_count',_0x9c55('0x90'),_0x9c55('0x91'),_0x9c55('0x92'),'correlation_id','location',_0x9c55('0x5c')];var _0x1ba161='';var _0x1de654='';var _0x3632a0=[];var _0x5f461d='';var _0x3cb455='';var _0x29f71a=[];var _0xb640f2='';var _0x2d3b83='';var _0x4b8aa6={};var _0x4207b5='';return db['ServicenowAccount'][_0x9c55('0x4d')]({'where':{'id':_0x510ca8[_0x9c55('0x44')]['id']},'attributes':['id',_0x9c55('0x93'),_0x9c55('0x94'),_0x9c55('0x95'),_0x9c55('0x96'),_0x9c55('0x97')]})[_0x9c55('0x23')](handleEntityNotFound(_0x2abd0e,null))[_0x9c55('0x23')](function(_0x4f9b70){if(_0x4f9b70){_0x4207b5=_0x4f9b70[_0x9c55('0x96')];var _0x298458=_0x4207b5['slice'](-0x1);if(_0x298458==='/'){_0x4207b5=_0x4207b5[_0x9c55('0x98')](0x0,_0x4207b5['lastIndexOf'](_0x298458));}_0x2d3b83=util['format'](_0x9c55('0x99'),_0x4207b5);_0xb640f2=util['format'](_0x9c55('0x9a'),_0x4207b5);_0x4b8aa6={'user':_0x4f9b70['username'],'pass':_0x4f9b70['password']};var _0x56a8c1={'method':_0x9c55('0x9b'),'uri':_0x2d3b83+_0x9c55('0x9c'),'auth':_0x4b8aa6,'json':!![]};return rp(_0x56a8c1);}})[_0x9c55('0x23')](function(_0xffe5d9){if(_0xffe5d9[_0x9c55('0x9d')][_0x9c55('0x47')]>0x0){_0x1ba161=_0xffe5d9[_0x9c55('0x9d')];}console[_0x9c55('0x9e')]('incident\x20table\x20objects',_0x1ba161);_0x29f71a=[];_0x1de654=Object[_0x9c55('0x9f')]([],_0x1ba161);_[_0x9c55('0xa0')](_0x1de654,function(_0x8a255b){return!_0x190c90[_0x9c55('0xa1')](_0x8a255b[_0x9c55('0x27')]);});_0x1de654['forEach'](function(_0x4ecbc3){var _0x5acef1=createFieldObject(_0xb640f2,_0x4b8aa6,_0x4ecbc3['internalType'],_0x4ecbc3[_0x9c55('0x27')],_0x4ecbc3['label'],![]);_0x29f71a[_0x9c55('0xa2')](_0x5acef1);});return Promise[_0x9c55('0xa3')](_0x29f71a);})[_0x9c55('0x23')](function(_0x37b771){_0x3632a0=_0x37b771;_0x5f461d=Object[_0x9c55('0x9f')]([],_0x1ba161);console[_0x9c55('0x9e')](_0x9c55('0xa4'),_0x1ba161);_[_0x9c55('0xa0')](_0x5f461d,function(_0xcbac6a){return _0x55ea12[_0x9c55('0xa1')](_0xcbac6a[_0x9c55('0x27')]);});console[_0x9c55('0x9e')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x5f461d);_0x29f71a=[];_0x5f461d[_0x9c55('0xa5')](function(_0x1e73e8){var _0x3c285e=createFieldObject(_0xb640f2,_0x4b8aa6,_0x1e73e8[_0x9c55('0xa6')],_0x1e73e8[_0x9c55('0x27')],_0x1e73e8[_0x9c55('0xa7')],!![]);_0x29f71a[_0x9c55('0xa2')](_0x3c285e);});return Promise[_0x9c55('0xa3')](_0x29f71a);})[_0x9c55('0x23')](function(_0x572943){_0x3cb455=_0x572943;var _0x4b622f=_0x3632a0['concat'](_0x3cb455);return{'count':_0x4b622f[_0x9c55('0x47')],'rows':_0x4b622f};})[_0x9c55('0x23')](respondWithResult(_0x2abd0e,null))['catch'](function(_0x5c5ab5){console['log']('ServiceNow\x20error:\x20'+_0x5c5ab5);var _0x172a2=_0x510ca8[_0x9c55('0x30')][_0x9c55('0xa8')]?0x1f4:_0x5c5ab5[_0x9c55('0xa9')]||0x1f4;logger[_0x9c55('0x25')](_0x5c5ab5[_0x9c55('0x26')]);delete _0x5c5ab5[_0x9c55('0x27')];if(_0x172a2===0x191){_0x172a2=0x190;}_0x2abd0e[_0x9c55('0x17')](_0x172a2)[_0x9c55('0x28')](_0x510ca8[_0x9c55('0x30')]['test']?{'message':_0x9c55('0xaa'),'statusCode':_0x5c5ab5['statusCode']}:_0x5c5ab5);});};function createFieldObject(_0x222944,_0x5f3e9b,_0x3212d8,_0x49b840,_0x5e9358,_0x4bfca6){return new Promise(function(_0x801188,_0x51b194){var _0x3ad3a9={'id':_0x49b840,'name':_0x5e9358,'custom':_0x4bfca6};if(_0x3212d8==='boolean'){_0x3ad3a9[_0x9c55('0x3d')]=[{'name':_0x9c55('0xab'),'value':_0x9c55('0xac')},{'name':_0x9c55('0xad'),'value':'false'}];_0x801188(_0x3ad3a9);}else{var _0x524932={'method':'GET','uri':_0x222944+_0x9c55('0xae')+_0x49b840,'auth':_0x5f3e9b,'json':!![]};return rp(_0x524932)[_0x9c55('0x23')](function(_0x29fe64){var _0x1d5a40=[];if(_0x29fe64['result']['length']>0x0){_0x29fe64[_0x9c55('0x9d')][_0x9c55('0xa5')](function(_0x47dcf8){if(_0x47dcf8[_0x9c55('0xaf')]===_0x9c55('0xb0')){var _0xb6f51a={'name':_0x47dcf8[_0x9c55('0xa7')],'value':_0x47dcf8[_0x9c55('0xb1')]};_0x1d5a40[_0x9c55('0xa2')](_0xb6f51a);}});}_0x3ad3a9[_0x9c55('0x3d')]=_0x1d5a40;if(_0x3ad3a9[_0x9c55('0x3d')][_0x9c55('0x47')]>0x0){_0x801188(_0x3ad3a9);}else{if(_0x4bfca6==![]){_0x801188();}else{_0x801188(_0x3ad3a9);}}});}});}
\ No newline at end of file
+var _0x8727=['knowledge','subcategory','close_code','notify','incident_state','category','parent','caused_by','upon_reject','sys_updated_on','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','state','sys_created_by','calendar_stc','closed_at','delivery_plan','impact','active','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','group_list','work_end','resolved_at','caller_id','approval_set','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','description','sys_class_name','closed_by','follow_up','parent_incident','contact_type','reopened_by','problem_id','company','reassignment_count','assigned_to','comments','approval','due_date','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','username','password','email','remoteUri','serverUrl','substring','format','%s/api/now/table/','incident?sysparm_display_value=all','result','incident\x20table\x20objects','assign','remove','internalType','label','push','all','log','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','ServiceNow\x20error:\x20','test','statusCode','stack','boolean','True','False','false','GET','sys_choice?sysparm_query=name=incident^element=','forEach','inactive','value','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','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','../../config/utils','../../config/license/util','../../components/integrations/configuration','end','status','json','undefined','count','offset','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','hasOwnProperty','nolimit','limit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','ServicenowAccount','fields','length','find','body','params','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','create','ServicenowField','getFields','made_sla','hold_reason'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x8727,0x11d));var _0x7872=function(_0x428c99,_0x3f22c3){_0x428c99=_0x428c99-0x0;var _0x51c90f=_0x8727[_0x428c99];return _0x51c90f;};'use strict';var emlformat=require(_0x7872('0x0'));var rimraf=require(_0x7872('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7872('0x2'));var rp=require(_0x7872('0x3'));var moment=require(_0x7872('0x4'));var BPromise=require(_0x7872('0x5'));var Mustache=require(_0x7872('0x6'));var util=require(_0x7872('0x7'));var path=require(_0x7872('0x8'));var sox=require(_0x7872('0x9'));var csv=require(_0x7872('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7872('0xb'));var _=require(_0x7872('0xc'));var squel=require('squel');var crypto=require(_0x7872('0xd'));var jsforce=require(_0x7872('0xe'));var deskjs=require(_0x7872('0xf'));var toCsv=require(_0x7872('0xa'));var querystring=require(_0x7872('0x10'));var Papa=require(_0x7872('0x11'));var Redis=require(_0x7872('0x12'));var authService=require(_0x7872('0x13'));var qs=require(_0x7872('0x14'));var as=require(_0x7872('0x15'));var hardwareService=require(_0x7872('0x16'));var logger=require(_0x7872('0x17'))('api');var utils=require(_0x7872('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7872('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0x7872('0x1a'));function respondWithStatusCode(_0x3e4686,_0x3a1fa0){_0x3a1fa0=_0x3a1fa0||0xcc;return function(_0x3692f8){if(_0x3692f8){return _0x3e4686['sendStatus'](_0x3a1fa0);}return _0x3e4686['status'](_0x3a1fa0)[_0x7872('0x1b')]();};}function respondWithResult(_0x326fc6,_0x434a70){_0x434a70=_0x434a70||0xc8;return function(_0x3423b8){if(_0x3423b8){return _0x326fc6[_0x7872('0x1c')](_0x434a70)[_0x7872('0x1d')](_0x3423b8);}};}function respondWithFilteredResult(_0x3fbbd2,_0x1d5386){return function(_0x3dd773){if(_0x3dd773){var _0x25bc4b=typeof _0x1d5386['offset']===_0x7872('0x1e')&&typeof _0x1d5386['limit']===_0x7872('0x1e');var _0x36d7dc=_0x3dd773[_0x7872('0x1f')];var _0x2bddb6=_0x25bc4b?0x0:_0x1d5386[_0x7872('0x20')];var _0x5181ce=_0x25bc4b?_0x3dd773[_0x7872('0x1f')]:_0x1d5386[_0x7872('0x20')]+_0x1d5386['limit'];var _0x4a7f3f;if(_0x5181ce>=_0x36d7dc){_0x5181ce=_0x36d7dc;_0x4a7f3f=0xc8;}else{_0x4a7f3f=0xce;}_0x3fbbd2[_0x7872('0x1c')](_0x4a7f3f);return _0x3fbbd2['set']('Content-Range',_0x2bddb6+'-'+_0x5181ce+'/'+_0x36d7dc)[_0x7872('0x1d')](_0x3dd773);}return null;};}function patchUpdates(_0x2645be){return function(_0x2f1974){try{jsonpatch[_0x7872('0x21')](_0x2f1974,_0x2645be,!![]);}catch(_0x33a242){return BPromise[_0x7872('0x22')](_0x33a242);}return _0x2f1974[_0x7872('0x23')]();};}function saveUpdates(_0x55eef9,_0x40db9b){return function(_0x3faba9){if(_0x3faba9){return _0x3faba9[_0x7872('0x24')](_0x55eef9)[_0x7872('0x25')](function(_0x16e675){return _0x16e675;});}return null;};}function removeEntity(_0x56a3fc,_0x4d3ca1){return function(_0xff4d3){if(_0xff4d3){return _0xff4d3[_0x7872('0x26')]()[_0x7872('0x25')](function(){_0x56a3fc[_0x7872('0x1c')](0xcc)[_0x7872('0x1b')]();});}};}function handleEntityNotFound(_0x4f4644,_0x157b1d){return function(_0xb02412){if(!_0xb02412){_0x4f4644['sendStatus'](0x194);}return _0xb02412;};}function handleError(_0x1593cd,_0x4d4ec1){_0x4d4ec1=_0x4d4ec1||0x1f4;return function(_0x12807f){logger[_0x7872('0x27')](_0x12807f['stack']);if(_0x12807f['name']){delete _0x12807f[_0x7872('0x28')];}_0x1593cd[_0x7872('0x1c')](_0x4d4ec1)[_0x7872('0x29')](_0x12807f);};}exports[_0x7872('0x2a')]=function(_0x1dd936,_0x70e33f){var _0x3c6cb0={},_0x3e3afa={},_0x195a04={'count':0x0,'rows':[]};var _0x2072a2=_[_0x7872('0x2b')](db['ServicenowAccount'][_0x7872('0x2c')],function(_0x196d03){return{'name':_0x196d03[_0x7872('0x2d')],'type':_0x196d03[_0x7872('0x2e')][_0x7872('0x2f')]};});_0x3e3afa[_0x7872('0x30')]=_['map'](_0x2072a2,'name');_0x3e3afa[_0x7872('0x31')]=_[_0x7872('0x32')](_0x1dd936[_0x7872('0x31')]);_0x3e3afa['filters']=_['intersection'](_0x3e3afa[_0x7872('0x30')],_0x3e3afa[_0x7872('0x31')]);_0x3c6cb0[_0x7872('0x33')]=_[_0x7872('0x34')](_0x3e3afa[_0x7872('0x30')],qs['fields'](_0x1dd936[_0x7872('0x31')]['fields']));_0x3c6cb0[_0x7872('0x33')]=_0x3c6cb0[_0x7872('0x33')]['length']?_0x3c6cb0[_0x7872('0x33')]:_0x3e3afa['model'];if(!_0x1dd936[_0x7872('0x31')][_0x7872('0x35')](_0x7872('0x36'))){_0x3c6cb0['limit']=qs[_0x7872('0x37')](_0x1dd936[_0x7872('0x31')][_0x7872('0x37')]);_0x3c6cb0[_0x7872('0x20')]=qs[_0x7872('0x20')](_0x1dd936[_0x7872('0x31')][_0x7872('0x20')]);}_0x3c6cb0[_0x7872('0x38')]=qs[_0x7872('0x39')](_0x1dd936[_0x7872('0x31')][_0x7872('0x39')]);_0x3c6cb0[_0x7872('0x3a')]=qs['filters'](_[_0x7872('0x3b')](_0x1dd936[_0x7872('0x31')],_0x3e3afa[_0x7872('0x3c')]),_0x2072a2);if(_0x1dd936[_0x7872('0x31')][_0x7872('0x3d')]){_0x3c6cb0[_0x7872('0x3a')]=_[_0x7872('0x3e')](_0x3c6cb0[_0x7872('0x3a')],{'$or':_[_0x7872('0x2b')](_0x2072a2,function(_0x22e45f){if(_0x22e45f[_0x7872('0x2e')]!==_0x7872('0x3f')){var _0x93a098={};_0x93a098[_0x22e45f[_0x7872('0x28')]]={'$like':'%'+_0x1dd936[_0x7872('0x31')][_0x7872('0x3d')]+'%'};return _0x93a098;}})});}_0x3c6cb0=_[_0x7872('0x3e')]({},_0x3c6cb0,_0x1dd936[_0x7872('0x40')]);var _0x1fab0c={'where':_0x3c6cb0[_0x7872('0x3a')]};return db['ServicenowAccount'][_0x7872('0x1f')](_0x1fab0c)['then'](function(_0x2bd767){_0x195a04[_0x7872('0x1f')]=_0x2bd767;if(_0x1dd936[_0x7872('0x31')][_0x7872('0x41')]){_0x3c6cb0[_0x7872('0x42')]=[{'all':!![]}];}return db['ServicenowAccount'][_0x7872('0x43')](_0x3c6cb0);})[_0x7872('0x25')](function(_0x432a75){_0x195a04['rows']=_0x432a75;return _0x195a04;})[_0x7872('0x25')](respondWithFilteredResult(_0x70e33f,_0x3c6cb0))[_0x7872('0x44')](handleError(_0x70e33f,null));};exports[_0x7872('0x45')]=function(_0x216317,_0x42179a){var _0x47400e={'raw':![],'where':{'id':_0x216317['params']['id']}},_0x280de2={};_0x280de2['model']=_[_0x7872('0x32')](db[_0x7872('0x46')]['rawAttributes']);_0x280de2[_0x7872('0x31')]=_['keys'](_0x216317[_0x7872('0x31')]);_0x280de2[_0x7872('0x3c')]=_[_0x7872('0x34')](_0x280de2[_0x7872('0x30')],_0x280de2[_0x7872('0x31')]);_0x47400e['attributes']=_[_0x7872('0x34')](_0x280de2['model'],qs[_0x7872('0x47')](_0x216317['query'][_0x7872('0x47')]));_0x47400e[_0x7872('0x33')]=_0x47400e[_0x7872('0x33')][_0x7872('0x48')]?_0x47400e[_0x7872('0x33')]:_0x280de2['model'];if(_0x216317['query'][_0x7872('0x41')]){_0x47400e[_0x7872('0x42')]=[{'all':!![]}];}_0x47400e=_['merge']({},_0x47400e,_0x216317['options']);return db['ServicenowAccount'][_0x7872('0x49')](_0x47400e)[_0x7872('0x25')](handleEntityNotFound(_0x42179a,null))[_0x7872('0x25')](respondWithResult(_0x42179a,null))[_0x7872('0x44')](handleError(_0x42179a,null));};exports['create']=function(_0x3a7456,_0x1eef63){return db[_0x7872('0x46')]['create'](_0x3a7456[_0x7872('0x4a')],{})[_0x7872('0x25')](respondWithResult(_0x1eef63,0xc9))[_0x7872('0x44')](handleError(_0x1eef63,null));};exports[_0x7872('0x24')]=function(_0x1f9e42,_0x33aa72){if(_0x1f9e42[_0x7872('0x4a')]['id']){delete _0x1f9e42[_0x7872('0x4a')]['id'];}return db[_0x7872('0x46')][_0x7872('0x49')]({'where':{'id':_0x1f9e42[_0x7872('0x4b')]['id']}})[_0x7872('0x25')](handleEntityNotFound(_0x33aa72,null))[_0x7872('0x25')](saveUpdates(_0x1f9e42[_0x7872('0x4a')],null))[_0x7872('0x25')](respondWithResult(_0x33aa72,null))[_0x7872('0x44')](handleError(_0x33aa72,null));};exports[_0x7872('0x26')]=function(_0x31f2c7,_0xd817b4){return db[_0x7872('0x46')][_0x7872('0x49')]({'where':{'id':_0x31f2c7[_0x7872('0x4b')]['id']}})[_0x7872('0x25')](handleEntityNotFound(_0xd817b4,null))[_0x7872('0x25')](removeEntity(_0xd817b4,null))[_0x7872('0x44')](handleError(_0xd817b4,null));};exports[_0x7872('0x4c')]=function(_0x1b1f0f,_0x1b30d0,_0x32ee99){var _0x265536={};var _0x4c0dde={};var _0x184167;var _0x30252c;return db[_0x7872('0x46')][_0x7872('0x4d')]({'where':{'id':_0x1b1f0f['params']['id']}})[_0x7872('0x25')](handleEntityNotFound(_0x1b30d0,null))[_0x7872('0x25')](function(_0x11044c){if(_0x11044c){_0x184167=_0x11044c;_0x4c0dde[_0x7872('0x30')]=_[_0x7872('0x32')](db[_0x7872('0x4e')]['rawAttributes']);_0x4c0dde['query']=_[_0x7872('0x32')](_0x1b1f0f[_0x7872('0x31')]);_0x4c0dde[_0x7872('0x3c')]=_[_0x7872('0x34')](_0x4c0dde[_0x7872('0x30')],_0x4c0dde[_0x7872('0x31')]);_0x265536[_0x7872('0x33')]=_[_0x7872('0x34')](_0x4c0dde[_0x7872('0x30')],qs[_0x7872('0x47')](_0x1b1f0f[_0x7872('0x31')][_0x7872('0x47')]));_0x265536[_0x7872('0x33')]=_0x265536[_0x7872('0x33')][_0x7872('0x48')]?_0x265536['attributes']:_0x4c0dde[_0x7872('0x30')];_0x265536[_0x7872('0x38')]=qs[_0x7872('0x39')](_0x1b1f0f[_0x7872('0x31')][_0x7872('0x39')]);_0x265536[_0x7872('0x3a')]=qs['filters'](_[_0x7872('0x3b')](_0x1b1f0f[_0x7872('0x31')],_0x4c0dde[_0x7872('0x3c')]));if(_0x1b1f0f[_0x7872('0x31')][_0x7872('0x3d')]){_0x265536['where']=_[_0x7872('0x3e')](_0x265536[_0x7872('0x3a')],{'$or':_[_0x7872('0x2b')](_0x265536[_0x7872('0x33')],function(_0x225491){var _0x2d980a={};_0x2d980a[_0x225491]={'$like':'%'+_0x1b1f0f['query'][_0x7872('0x3d')]+'%'};return _0x2d980a;})});}_0x265536=_['merge']({},_0x265536,_0x1b1f0f[_0x7872('0x40')]);return _0x184167[_0x7872('0x4c')](_0x265536);}})[_0x7872('0x25')](function(_0x43b292){if(_0x43b292){_0x30252c=_0x43b292[_0x7872('0x48')];if(!_0x1b1f0f[_0x7872('0x31')]['hasOwnProperty'](_0x7872('0x36'))){_0x265536[_0x7872('0x37')]=qs[_0x7872('0x37')](_0x1b1f0f[_0x7872('0x31')][_0x7872('0x37')]);_0x265536[_0x7872('0x20')]=qs[_0x7872('0x20')](_0x1b1f0f[_0x7872('0x31')][_0x7872('0x20')]);}return _0x184167[_0x7872('0x4c')](_0x265536);}})[_0x7872('0x25')](function(_0x264f79){if(_0x264f79){return _0x264f79?{'count':_0x30252c,'rows':_0x264f79}:null;}})['then'](respondWithResult(_0x1b30d0,null))['catch'](handleError(_0x1b30d0,null));};exports[_0x7872('0x4f')]=function(_0x322bac,_0x140dd5,_0xdeab22){if(_0x322bac[_0x7872('0x4a')]['id']){delete _0x322bac[_0x7872('0x4a')]['id'];}return db['ServicenowAccount'][_0x7872('0x4d')]({'where':{'id':_0x322bac['params']['id']}})['then'](handleEntityNotFound(_0x140dd5,null))['then'](function(_0x5735ff){if(_0x5735ff){_0x322bac[_0x7872('0x4a')][_0x7872('0x50')]=_0x5735ff['id'];_0x322bac[_0x7872('0x4a')][_0x7872('0x51')]=integrations[_0x7872('0x52')](_0x322bac[_0x7872('0x4a')][_0x7872('0x53')],_0x322bac['body'][_0x7872('0x2e')]);_0x322bac[_0x7872('0x4a')][_0x7872('0x54')]=integrations[_0x7872('0x55')](_0x322bac[_0x7872('0x4a')][_0x7872('0x53')],_0x322bac[_0x7872('0x4a')][_0x7872('0x2e')]);return db[_0x7872('0x4e')][_0x7872('0x56')](_0x322bac[_0x7872('0x4a')],{'include':[{'model':db[_0x7872('0x57')],'as':_0x7872('0x51')},{'model':db['ServicenowField'],'as':_0x7872('0x54')}]});}return null;})[_0x7872('0x25')](respondWithResult(_0x140dd5,null))[_0x7872('0x44')](handleError(_0x140dd5,null));};exports[_0x7872('0x58')]=function(_0x2ddd01,_0x40ef27,_0x138e03){var _0x5b4a2d=[_0x7872('0x59'),_0x7872('0x5a'),_0x7872('0x5b'),_0x7872('0x5c'),_0x7872('0x5d'),_0x7872('0x5e'),_0x7872('0x5f'),'severity',_0x7872('0x60')];var _0x39c4bc=[_0x7872('0x61'),_0x7872('0x59'),_0x7872('0x62'),'watch_list',_0x7872('0x63'),_0x7872('0x64'),'child_incidents',_0x7872('0x5a'),_0x7872('0x65'),_0x7872('0x66'),_0x7872('0x67'),_0x7872('0x68'),_0x7872('0x69'),_0x7872('0x6a'),_0x7872('0x6b'),'sys_domain',_0x7872('0x6c'),_0x7872('0x6d'),_0x7872('0x5b'),_0x7872('0x38'),_0x7872('0x6e'),_0x7872('0x6f'),'cmdb_ci',_0x7872('0x70'),_0x7872('0x71'),_0x7872('0x72'),_0x7872('0x73'),_0x7872('0x74'),_0x7872('0x75'),_0x7872('0x76'),_0x7872('0x77'),_0x7872('0x78'),_0x7872('0x79'),_0x7872('0x7a'),_0x7872('0x7b'),_0x7872('0x7c'),_0x7872('0x7d'),'reopened_time',_0x7872('0x7e'),_0x7872('0x7f'),_0x7872('0x80'),_0x7872('0x5c'),'work_notes',_0x7872('0x81'),_0x7872('0x5d'),_0x7872('0x82'),_0x7872('0x83'),_0x7872('0x84'),_0x7872('0x85'),_0x7872('0x86'),'additional_assignee_list',_0x7872('0x87'),'calendar_duration',_0x7872('0x5e'),_0x7872('0x88'),'close_notes',_0x7872('0x89'),_0x7872('0x8a'),_0x7872('0x8b'),'sys_id',_0x7872('0x8c'),_0x7872('0x8d'),_0x7872('0x5f'),'urgency',_0x7872('0x8e'),_0x7872('0x8f'),_0x7872('0x90'),'activity_due',_0x7872('0x91'),'severity',_0x7872('0x92'),'sla_due',_0x7872('0x93'),'comments_and_work_notes',_0x7872('0x94'),'sys_mod_count',_0x7872('0x95'),_0x7872('0x96'),_0x7872('0x97'),_0x7872('0x98'),_0x7872('0x99'),_0x7872('0x9a'),_0x7872('0x60')];var _0x5ba5a4='';var _0x3eb925='';var _0x3271ac=[];var _0x3bb97c='';var _0x4422d3='';var _0x196d9b=[];var _0x14a605='';var _0x1bf733='';var _0x4ef266={};var _0x37b6a0='';return db['ServicenowAccount'][_0x7872('0x4d')]({'where':{'id':_0x2ddd01[_0x7872('0x4b')]['id']},'attributes':['id',_0x7872('0x9b'),_0x7872('0x9c'),_0x7872('0x9d'),_0x7872('0x9e'),_0x7872('0x9f')]})[_0x7872('0x25')](handleEntityNotFound(_0x40ef27,null))['then'](function(_0xda0d25){if(_0xda0d25){_0x37b6a0=_0xda0d25['remoteUri'];var _0x416df6=_0x37b6a0['slice'](-0x1);if(_0x416df6==='/'){_0x37b6a0=_0x37b6a0[_0x7872('0xa0')](0x0,_0x37b6a0['lastIndexOf'](_0x416df6));}_0x1bf733=util[_0x7872('0xa1')]('%s/api/now/doc/table/schema/',_0x37b6a0);_0x14a605=util[_0x7872('0xa1')](_0x7872('0xa2'),_0x37b6a0);_0x4ef266={'user':_0xda0d25[_0x7872('0x9b')],'pass':_0xda0d25[_0x7872('0x9c')]};var _0x497e6c={'method':'GET','uri':_0x1bf733+_0x7872('0xa3'),'auth':_0x4ef266,'json':!![]};return rp(_0x497e6c);}})['then'](function(_0x59f90d){if(_0x59f90d[_0x7872('0xa4')][_0x7872('0x48')]>0x0){_0x5ba5a4=_0x59f90d[_0x7872('0xa4')];}console['log'](_0x7872('0xa5'),_0x5ba5a4);_0x196d9b=[];_0x3eb925=Object[_0x7872('0xa6')]([],_0x5ba5a4);_[_0x7872('0xa7')](_0x3eb925,function(_0x4dc9a6){return!_0x5b4a2d['includes'](_0x4dc9a6[_0x7872('0x28')]);});_0x3eb925['forEach'](function(_0xf0a075){var _0x19dfb5=createFieldObject(_0x14a605,_0x4ef266,_0xf0a075[_0x7872('0xa8')],_0xf0a075[_0x7872('0x28')],_0xf0a075[_0x7872('0xa9')],![]);_0x196d9b[_0x7872('0xaa')](_0x19dfb5);});return Promise[_0x7872('0xab')](_0x196d9b);})['then'](function(_0x4542ef){_0x3271ac=_0x4542ef;_0x3bb97c=Object[_0x7872('0xa6')]([],_0x5ba5a4);console[_0x7872('0xac')]('TCL:\x20_object',_0x5ba5a4);_[_0x7872('0xa7')](_0x3bb97c,function(_0x27cdce){return _0x39c4bc['includes'](_0x27cdce[_0x7872('0x28')]);});console[_0x7872('0xac')](_0x7872('0xad'),_0x3bb97c);_0x196d9b=[];_0x3bb97c['forEach'](function(_0x54736a){var _0x3e69d4=createFieldObject(_0x14a605,_0x4ef266,_0x54736a[_0x7872('0xa8')],_0x54736a[_0x7872('0x28')],_0x54736a['label'],!![]);_0x196d9b['push'](_0x3e69d4);});return Promise[_0x7872('0xab')](_0x196d9b);})[_0x7872('0x25')](function(_0x65b0f8){_0x4422d3=_0x65b0f8;var _0x2b0588=_0x3271ac[_0x7872('0xae')](_0x4422d3);return{'count':_0x2b0588[_0x7872('0x48')],'rows':_0x2b0588};})['then'](respondWithResult(_0x40ef27,null))['catch'](function(_0x329e45){console[_0x7872('0xac')](_0x7872('0xaf')+_0x329e45);var _0x133257=_0x2ddd01[_0x7872('0x31')][_0x7872('0xb0')]?0x1f4:_0x329e45[_0x7872('0xb1')]||0x1f4;logger[_0x7872('0x27')](_0x329e45[_0x7872('0xb2')]);delete _0x329e45[_0x7872('0x28')];if(_0x133257===0x191){_0x133257=0x190;}_0x40ef27['status'](_0x133257)[_0x7872('0x29')](_0x2ddd01['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x329e45['statusCode']}:_0x329e45);});};function createFieldObject(_0x534edc,_0x45a161,_0x128f59,_0x156b20,_0x4410ef,_0x501e33){return new Promise(function(_0x3f9ab3,_0x403cc3){var _0x97f34d={'id':_0x156b20,'name':_0x4410ef,'custom':_0x501e33};if(_0x128f59===_0x7872('0xb3')){_0x97f34d[_0x7872('0x40')]=[{'name':_0x7872('0xb4'),'value':'true'},{'name':_0x7872('0xb5'),'value':_0x7872('0xb6')}];_0x3f9ab3(_0x97f34d);}else{var _0x50d307={'method':_0x7872('0xb7'),'uri':_0x534edc+_0x7872('0xb8')+_0x156b20,'auth':_0x45a161,'json':!![]};return rp(_0x50d307)[_0x7872('0x25')](function(_0xe7ff59){var _0x3bd41c=[];if(_0xe7ff59[_0x7872('0xa4')][_0x7872('0x48')]>0x0){_0xe7ff59[_0x7872('0xa4')][_0x7872('0xb9')](function(_0x439702){if(_0x439702[_0x7872('0xba')]===_0x7872('0xb6')){var _0xc2fb57={'name':_0x439702[_0x7872('0xa9')],'value':_0x439702[_0x7872('0xbb')]};_0x3bd41c['push'](_0xc2fb57);}});}_0x97f34d['options']=_0x3bd41c;if(_0x97f34d[_0x7872('0x40')][_0x7872('0x48')]>0x0){_0x3f9ab3(_0x97f34d);}else{if(_0x501e33==![]){_0x3f9ab3();}else{_0x3f9ab3(_0x97f34d);}}});}});}
\ No newline at end of file
index 6117feb..2746d2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb138=['int_servicenow_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowAccount.attributes','exports','define','ServicenowAccount'];(function(_0x44e574,_0x484a6d){var _0x1319b0=function(_0x37a4f0){while(--_0x37a4f0){_0x44e574['push'](_0x44e574['shift']());}};_0x1319b0(++_0x484a6d);}(_0xb138,0x1dd));var _0x8b13=function(_0x38bffd,_0x3ecb9c){_0x38bffd=_0x38bffd-0x0;var _0x4e0013=_0xb138[_0x38bffd];return _0x4e0013;};'use strict';var _=require(_0x8b13('0x0'));var util=require(_0x8b13('0x1'));var logger=require(_0x8b13('0x2'))(_0x8b13('0x3'));var moment=require(_0x8b13('0x4'));var BPromise=require(_0x8b13('0x5'));var rp=require(_0x8b13('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8b13('0x7'));var config=require(_0x8b13('0x8'));var attributes=require(_0x8b13('0x9'));var integrations=require('../../components/integrations/configuration');module[_0x8b13('0xa')]=function(_0x13f7bd,_0x5d51b1){return _0x13f7bd[_0x8b13('0xb')](_0x8b13('0xc'),attributes,{'tableName':_0x8b13('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf2ca=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','ServicenowAccount','int_servicenow_accounts','lodash','util'];(function(_0x47e309,_0x1e771a){var _0x2e1900=function(_0x407297){while(--_0x407297){_0x47e309['push'](_0x47e309['shift']());}};_0x2e1900(++_0x1e771a);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x359377,_0x1a63ef){_0x359377=_0x359377-0x0;var _0x8be18a=_0xf2ca[_0x359377];return _0x8be18a;};'use strict';var _=require(_0xaf2c('0x0'));var util=require(_0xaf2c('0x1'));var logger=require(_0xaf2c('0x2'))('api');var moment=require(_0xaf2c('0x3'));var BPromise=require(_0xaf2c('0x4'));var rp=require(_0xaf2c('0x5'));var fs=require('fs');var path=require(_0xaf2c('0x6'));var rimraf=require(_0xaf2c('0x7'));var config=require(_0xaf2c('0x8'));var attributes=require('./intServicenowAccount.attributes');var integrations=require(_0xaf2c('0x9'));module[_0xaf2c('0xa')]=function(_0x297740,_0x1f9531){return _0x297740['define'](_0xaf2c('0xb'),attributes,{'tableName':_0xaf2c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7d10b95..78e9784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc308=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','error','code','message','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','attributes','limit','include','map','model','debug','stringify','ShowServicenowAccount','find','lodash','randomstring'];(function(_0x262c6f,_0x100803){var _0x1b9a8f=function(_0x133ce3){while(--_0x133ce3){_0x262c6f['push'](_0x262c6f['shift']());}};_0x1b9a8f(++_0x100803);}(_0xc308,0x115));var _0x8c30=function(_0x21b293,_0x352a44){_0x21b293=_0x21b293-0x0;var _0xd73e84=_0xc308[_0x21b293];return _0xd73e84;};'use strict';var _=require(_0x8c30('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8c30('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8c30('0x2'));var logger=require(_0x8c30('0x3'))(_0x8c30('0x4'));var config=require(_0x8c30('0x5'));var jayson=require(_0x8c30('0x6'));var client=jayson[_0x8c30('0x7')][_0x8c30('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2e14fe,_0x23d379,_0x50fe32){return new BPromise(function(_0x1d59c6,_0x59a9e6){return client['request'](_0x2e14fe,_0x50fe32)[_0x8c30('0x9')](function(_0x2a5eae){logger[_0x8c30('0xa')](_0x8c30('0xb'),_0x23d379,_0x8c30('0xc'));logger['debug']('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x23d379,_0x8c30('0xc'),JSON['stringify'](_0x2a5eae));if(_0x2a5eae[_0x8c30('0xd')]){if(_0x2a5eae[_0x8c30('0xd')][_0x8c30('0xe')]===0x1f4){logger[_0x8c30('0xd')](_0x8c30('0xb'),_0x23d379,_0x2a5eae[_0x8c30('0xd')][_0x8c30('0xf')]);return _0x59a9e6(_0x2a5eae[_0x8c30('0xd')][_0x8c30('0xf')]);}logger[_0x8c30('0xd')](_0x8c30('0xb'),_0x23d379,_0x2a5eae[_0x8c30('0xd')]['message']);return _0x1d59c6(_0x2a5eae[_0x8c30('0xd')][_0x8c30('0xf')]);}else{logger[_0x8c30('0xa')](_0x8c30('0xb'),_0x23d379,_0x8c30('0xc'));_0x1d59c6(_0x2a5eae['result'][_0x8c30('0xf')]);}})[_0x8c30('0x10')](function(_0x1a353f){logger[_0x8c30('0xd')](_0x8c30('0xb'),_0x23d379,_0x1a353f);_0x59a9e6(_0x1a353f);});});}exports[_0x8c30('0x11')]=function(_0x1d6944){var _0x489804=this;return new Promise(function(_0x192006,_0x1f892f){return db[_0x8c30('0x12')][_0x8c30('0x13')]({'raw':_0x1d6944[_0x8c30('0x14')]?_0x1d6944[_0x8c30('0x14')][_0x8c30('0x15')]===undefined?!![]:![]:!![],'where':_0x1d6944[_0x8c30('0x14')]?_0x1d6944['options']['where']||null:null,'attributes':_0x1d6944[_0x8c30('0x14')]?_0x1d6944[_0x8c30('0x14')][_0x8c30('0x16')]||null:null,'limit':_0x1d6944[_0x8c30('0x14')]?_0x1d6944[_0x8c30('0x14')][_0x8c30('0x17')]||null:null,'include':_0x1d6944[_0x8c30('0x14')]?_0x1d6944[_0x8c30('0x14')][_0x8c30('0x18')]?_[_0x8c30('0x19')](_0x1d6944[_0x8c30('0x14')][_0x8c30('0x18')],function(_0x5b1353){return{'model':db[_0x5b1353[_0x8c30('0x1a')]],'as':_0x5b1353['as'],'attributes':_0x5b1353[_0x8c30('0x16')],'include':_0x5b1353[_0x8c30('0x18')]?_['map'](_0x5b1353[_0x8c30('0x18')],function(_0x316f98){return{'model':db[_0x316f98['model']],'as':_0x316f98['as'],'attributes':_0x316f98[_0x8c30('0x16')],'include':_0x316f98[_0x8c30('0x18')]?_[_0x8c30('0x19')](_0x316f98[_0x8c30('0x18')],function(_0x41289d){return{'model':db[_0x41289d[_0x8c30('0x1a')]],'as':_0x41289d['as'],'attributes':_0x41289d['attributes']};}):[]};}):[]};}):[]:[]})[_0x8c30('0x9')](function(_0xd33a09){logger['info'](_0x8c30('0x11'),_0x1d6944);logger[_0x8c30('0x1b')](_0x8c30('0x11'),_0x1d6944,JSON[_0x8c30('0x1c')](_0xd33a09));_0x192006(_0xd33a09);})[_0x8c30('0x10')](function(_0x4408bf){logger['error'](_0x8c30('0x11'),_0x4408bf[_0x8c30('0xf')],_0x1d6944);_0x1f892f(_0x489804[_0x8c30('0xd')](0x1f4,_0x4408bf['message']));});});};exports[_0x8c30('0x1d')]=function(_0x4411df){var _0x31ca91=this;return new Promise(function(_0x50bafd,_0x123d7e){return db[_0x8c30('0x12')][_0x8c30('0x1e')]({'raw':_0x4411df[_0x8c30('0x14')]?_0x4411df['options']['raw']===undefined?!![]:![]:!![],'where':_0x4411df[_0x8c30('0x14')]?_0x4411df[_0x8c30('0x14')]['where']||null:null,'attributes':_0x4411df['options']?_0x4411df[_0x8c30('0x14')][_0x8c30('0x16')]||null:null,'include':_0x4411df[_0x8c30('0x14')]?_0x4411df[_0x8c30('0x14')][_0x8c30('0x18')]?_[_0x8c30('0x19')](_0x4411df[_0x8c30('0x14')][_0x8c30('0x18')],function(_0x267728){return{'model':db[_0x267728[_0x8c30('0x1a')]],'as':_0x267728['as'],'attributes':_0x267728[_0x8c30('0x16')],'include':_0x267728[_0x8c30('0x18')]?_[_0x8c30('0x19')](_0x267728[_0x8c30('0x18')],function(_0x4e2e8b){return{'model':db[_0x4e2e8b[_0x8c30('0x1a')]],'as':_0x4e2e8b['as'],'attributes':_0x4e2e8b[_0x8c30('0x16')],'include':_0x4e2e8b[_0x8c30('0x18')]?_[_0x8c30('0x19')](_0x4e2e8b[_0x8c30('0x18')],function(_0x1cde61){return{'model':db[_0x1cde61[_0x8c30('0x1a')]],'as':_0x1cde61['as'],'attributes':_0x1cde61[_0x8c30('0x16')]};}):[]};}):[]};}):[]:[]})[_0x8c30('0x9')](function(_0x396548){logger['info'](_0x8c30('0x1d'),_0x4411df);logger[_0x8c30('0x1b')](_0x8c30('0x1d'),_0x4411df,JSON[_0x8c30('0x1c')](_0x396548));_0x50bafd(_0x396548);})[_0x8c30('0x10')](function(_0x352d5d){logger['error'](_0x8c30('0x1d'),_0x352d5d['message'],_0x4411df);_0x123d7e(_0x31ca91['error'](0x1f4,_0x352d5d[_0x8c30('0xf')]));});});};
\ No newline at end of file
+var _0xad79=['stringify','error','code','message','catch','GetServicenowAccount','ServicenowAccount','findAll','options','attributes','limit','map','include','model','then','find','where','ShowServicenowAccount','lodash','util','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x39efe5,_0x58878f){var _0x5dd94f=function(_0x45a052){while(--_0x45a052){_0x39efe5['push'](_0x39efe5['shift']());}};_0x5dd94f(++_0x58878f);}(_0xad79,0x75));var _0x9ad7=function(_0x38300b,_0x21c200){_0x38300b=_0x38300b-0x0;var _0x2e0e18=_0xad79[_0x38300b];return _0x2e0e18;};'use strict';var _=require(_0x9ad7('0x0'));var util=require(_0x9ad7('0x1'));var moment=require('moment');var BPromise=require(_0x9ad7('0x2'));var rs=require(_0x9ad7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9ad7('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9ad7('0x5'));var config=require(_0x9ad7('0x6'));var jayson=require(_0x9ad7('0x7'));var client=jayson[_0x9ad7('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4efdc1,_0x40ca03,_0x16de1e){return new BPromise(function(_0x24d9b2,_0x4a6942){return client[_0x9ad7('0x9')](_0x4efdc1,_0x16de1e)['then'](function(_0x57c2ba){logger[_0x9ad7('0xa')](_0x9ad7('0xb'),_0x40ca03,'request\x20sent');logger[_0x9ad7('0xc')](_0x9ad7('0xd'),_0x40ca03,_0x9ad7('0xe'),JSON[_0x9ad7('0xf')](_0x57c2ba));if(_0x57c2ba[_0x9ad7('0x10')]){if(_0x57c2ba[_0x9ad7('0x10')][_0x9ad7('0x11')]===0x1f4){logger['error'](_0x9ad7('0xb'),_0x40ca03,_0x57c2ba[_0x9ad7('0x10')][_0x9ad7('0x12')]);return _0x4a6942(_0x57c2ba['error'][_0x9ad7('0x12')]);}logger[_0x9ad7('0x10')](_0x9ad7('0xb'),_0x40ca03,_0x57c2ba['error'][_0x9ad7('0x12')]);return _0x24d9b2(_0x57c2ba[_0x9ad7('0x10')][_0x9ad7('0x12')]);}else{logger['info']('ServicenowAccount,\x20%s,\x20%s',_0x40ca03,_0x9ad7('0xe'));_0x24d9b2(_0x57c2ba['result'][_0x9ad7('0x12')]);}})[_0x9ad7('0x13')](function(_0x18d1e8){logger[_0x9ad7('0x10')](_0x9ad7('0xb'),_0x40ca03,_0x18d1e8);_0x4a6942(_0x18d1e8);});});}exports[_0x9ad7('0x14')]=function(_0x21a2b4){var _0x128abf=this;return new Promise(function(_0x4848eb,_0x1ac531){return db[_0x9ad7('0x15')][_0x9ad7('0x16')]({'raw':_0x21a2b4[_0x9ad7('0x17')]?_0x21a2b4[_0x9ad7('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x21a2b4['options']?_0x21a2b4['options']['where']||null:null,'attributes':_0x21a2b4[_0x9ad7('0x17')]?_0x21a2b4[_0x9ad7('0x17')][_0x9ad7('0x18')]||null:null,'limit':_0x21a2b4[_0x9ad7('0x17')]?_0x21a2b4[_0x9ad7('0x17')][_0x9ad7('0x19')]||null:null,'include':_0x21a2b4[_0x9ad7('0x17')]?_0x21a2b4['options']['include']?_[_0x9ad7('0x1a')](_0x21a2b4[_0x9ad7('0x17')][_0x9ad7('0x1b')],function(_0x150863){return{'model':db[_0x150863[_0x9ad7('0x1c')]],'as':_0x150863['as'],'attributes':_0x150863[_0x9ad7('0x18')],'include':_0x150863[_0x9ad7('0x1b')]?_['map'](_0x150863['include'],function(_0x1bb230){return{'model':db[_0x1bb230[_0x9ad7('0x1c')]],'as':_0x1bb230['as'],'attributes':_0x1bb230[_0x9ad7('0x18')],'include':_0x1bb230[_0x9ad7('0x1b')]?_[_0x9ad7('0x1a')](_0x1bb230[_0x9ad7('0x1b')],function(_0x54e72e){return{'model':db[_0x54e72e[_0x9ad7('0x1c')]],'as':_0x54e72e['as'],'attributes':_0x54e72e[_0x9ad7('0x18')]};}):[]};}):[]};}):[]:[]})[_0x9ad7('0x1d')](function(_0x207ba7){logger[_0x9ad7('0xa')](_0x9ad7('0x14'),_0x21a2b4);logger[_0x9ad7('0xc')](_0x9ad7('0x14'),_0x21a2b4,JSON['stringify'](_0x207ba7));_0x4848eb(_0x207ba7);})[_0x9ad7('0x13')](function(_0x2cc742){logger[_0x9ad7('0x10')](_0x9ad7('0x14'),_0x2cc742['message'],_0x21a2b4);_0x1ac531(_0x128abf['error'](0x1f4,_0x2cc742[_0x9ad7('0x12')]));});});};exports['ShowServicenowAccount']=function(_0x4fdf64){var _0x17730b=this;return new Promise(function(_0xb0db27,_0x3181b5){return db[_0x9ad7('0x15')][_0x9ad7('0x1e')]({'raw':_0x4fdf64[_0x9ad7('0x17')]?_0x4fdf64['options']['raw']===undefined?!![]:![]:!![],'where':_0x4fdf64[_0x9ad7('0x17')]?_0x4fdf64['options'][_0x9ad7('0x1f')]||null:null,'attributes':_0x4fdf64[_0x9ad7('0x17')]?_0x4fdf64['options'][_0x9ad7('0x18')]||null:null,'include':_0x4fdf64[_0x9ad7('0x17')]?_0x4fdf64[_0x9ad7('0x17')][_0x9ad7('0x1b')]?_[_0x9ad7('0x1a')](_0x4fdf64[_0x9ad7('0x17')][_0x9ad7('0x1b')],function(_0x40b4db){return{'model':db[_0x40b4db['model']],'as':_0x40b4db['as'],'attributes':_0x40b4db[_0x9ad7('0x18')],'include':_0x40b4db[_0x9ad7('0x1b')]?_[_0x9ad7('0x1a')](_0x40b4db[_0x9ad7('0x1b')],function(_0x28bbbb){return{'model':db[_0x28bbbb[_0x9ad7('0x1c')]],'as':_0x28bbbb['as'],'attributes':_0x28bbbb[_0x9ad7('0x18')],'include':_0x28bbbb['include']?_[_0x9ad7('0x1a')](_0x28bbbb['include'],function(_0xb04e17){return{'model':db[_0xb04e17[_0x9ad7('0x1c')]],'as':_0xb04e17['as'],'attributes':_0xb04e17['attributes']};}):[]};}):[]};}):[]:[]})[_0x9ad7('0x1d')](function(_0x1634d0){logger[_0x9ad7('0xa')](_0x9ad7('0x20'),_0x4fdf64);logger[_0x9ad7('0xc')]('ShowServicenowAccount',_0x4fdf64,JSON[_0x9ad7('0xf')](_0x1634d0));_0xb0db27(_0x1634d0);})['catch'](function(_0x26d803){logger[_0x9ad7('0x10')](_0x9ad7('0x20'),_0x26d803['message'],_0x4fdf64);_0x3181b5(_0x17730b[_0x9ad7('0x10')](0x1f4,_0x26d803['message']));});});};
\ No newline at end of file
index 1b944d1..e6efdec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf046=['create','put','update','destroy','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','post'];(function(_0x5a347a,_0x1b503b){var _0xd30911=function(_0x1b7284){while(--_0x1b7284){_0x5a347a['push'](_0x5a347a['shift']());}};_0xd30911(++_0x1b503b);}(_0xf046,0x164));var _0x6f04=function(_0x26bfb0,_0x5b0ffc){_0x26bfb0=_0x26bfb0-0x0;var _0x4454b3=_0xf046[_0x26bfb0];return _0x4454b3;};'use strict';var multer=require(_0x6f04('0x0'));var util=require(_0x6f04('0x1'));var path=require('path');var timeout=require(_0x6f04('0x2'));var express=require(_0x6f04('0x3'));var router=express['Router']();var fs_extra=require(_0x6f04('0x4'));var auth=require(_0x6f04('0x5'));var interaction=require(_0x6f04('0x6'));var config=require(_0x6f04('0x7'));var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth[_0x6f04('0x8')](),controller[_0x6f04('0x9')]);router[_0x6f04('0xa')](_0x6f04('0xb'),auth[_0x6f04('0x8')](),controller[_0x6f04('0xc')]);router[_0x6f04('0xa')]('/:id/fields',auth[_0x6f04('0x8')](),controller[_0x6f04('0xd')]);router['get'](_0x6f04('0xe'),auth[_0x6f04('0x8')](),controller[_0x6f04('0xf')]);router[_0x6f04('0xa')](_0x6f04('0x10'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x6f04('0x11')]('/',auth[_0x6f04('0x8')](),controller[_0x6f04('0x12')]);router[_0x6f04('0x13')](_0x6f04('0xb'),auth[_0x6f04('0x8')](),controller[_0x6f04('0x14')]);router['delete']('/:id',auth[_0x6f04('0x8')](),controller[_0x6f04('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xb11d=['destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','isAuthenticated','/:id','show','get','getFields','/:id/subjects','getDescriptions','post','create','delete'];(function(_0x48128a,_0x2ad971){var _0x2efe94=function(_0x1ecf1e){while(--_0x1ecf1e){_0x48128a['push'](_0x48128a['shift']());}};_0x2efe94(++_0x2ad971);}(_0xb11d,0xbf));var _0xdb11=function(_0x2fecbc,_0x5e8b04){_0x2fecbc=_0x2fecbc-0x0;var _0x2bab10=_0xb11d[_0x2fecbc];return _0x2bab10;};'use strict';var multer=require(_0xdb11('0x0'));var util=require(_0xdb11('0x1'));var path=require(_0xdb11('0x2'));var timeout=require(_0xdb11('0x3'));var express=require(_0xdb11('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xdb11('0x5'));var interaction=require(_0xdb11('0x6'));var config=require(_0xdb11('0x7'));var controller=require(_0xdb11('0x8'));router['get']('/',auth[_0xdb11('0x9')](),controller['index']);router['get'](_0xdb11('0xa'),auth['isAuthenticated'](),controller[_0xdb11('0xb')]);router[_0xdb11('0xc')]('/:id/fields',auth['isAuthenticated'](),controller[_0xdb11('0xd')]);router[_0xdb11('0xc')](_0xdb11('0xe'),auth['isAuthenticated'](),controller['getSubjects']);router[_0xdb11('0xc')]('/:id/descriptions',auth[_0xdb11('0x9')](),controller[_0xdb11('0xf')]);router[_0xdb11('0x10')]('/',auth[_0xdb11('0x9')](),controller[_0xdb11('0x11')]);router['put']('/:id',auth[_0xdb11('0x9')](),controller['update']);router[_0xdb11('0x12')](_0xdb11('0xa'),auth['isAuthenticated'](),controller[_0xdb11('0x13')]);module[_0xdb11('0x14')]=router;
\ No newline at end of file
index d006d7d..d929775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fe8=['sequelize','exports','STRING'];(function(_0x5d1b9b,_0x325160){var _0xc1a0c5=function(_0x3d9131){while(--_0x3d9131){_0x5d1b9b['push'](_0x5d1b9b['shift']());}};_0xc1a0c5(++_0x325160);}(_0x7fe8,0x123));var _0x87fe=function(_0x2ed8f3,_0x4aa12f){_0x2ed8f3=_0x2ed8f3-0x0;var _0x525a55=_0x7fe8[_0x2ed8f3];return _0x525a55;};'use strict';var Sequelize=require(_0x87fe('0x0'));module[_0x87fe('0x1')]={'name':{'type':Sequelize[_0x87fe('0x2')]},'description':{'type':Sequelize[_0x87fe('0x2')]}};
\ No newline at end of file
+var _0x01b0=['exports','STRING','sequelize'];(function(_0x1b47d6,_0xc13f2){var _0x269191=function(_0x3e85fe){while(--_0x3e85fe){_0x1b47d6['push'](_0x1b47d6['shift']());}};_0x269191(++_0xc13f2);}(_0x01b0,0x1df));var _0x001b=function(_0x38c9db,_0x1f309f){_0x38c9db=_0x38c9db-0x0;var _0x4eec3a=_0x01b0[_0x38c9db];return _0x4eec3a;};'use strict';var Sequelize=require(_0x001b('0x0'));module[_0x001b('0x1')]={'name':{'type':Sequelize[_0x001b('0x2')]},'description':{'type':Sequelize[_0x001b('0x2')]}};
\ No newline at end of file
index eb1699a..a0b5753 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcf1=['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','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','ServicenowConfiguration','includeAll','findAll','rows','catch','show','params','include','find','create','findOne','getFields','getSubjects','ServicenowField','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x24d0a2,_0x3d3ff3){var _0x10e950=function(_0xff96e2){while(--_0xff96e2){_0x24d0a2['push'](_0x24d0a2['shift']());}};_0x10e950(++_0x3d3ff3);}(_0xdcf1,0x14b));var _0x1dcf=function(_0x18ce30,_0x437d06){_0x18ce30=_0x18ce30-0x0;var _0x4471a3=_0xdcf1[_0x18ce30];return _0x4471a3;};'use strict';var emlformat=require(_0x1dcf('0x0'));var rimraf=require(_0x1dcf('0x1'));var zipdir=require(_0x1dcf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1dcf('0x3'));var moment=require(_0x1dcf('0x4'));var BPromise=require(_0x1dcf('0x5'));var Mustache=require(_0x1dcf('0x6'));var util=require(_0x1dcf('0x7'));var path=require(_0x1dcf('0x8'));var sox=require(_0x1dcf('0x9'));var csv=require(_0x1dcf('0xa'));var ejs=require(_0x1dcf('0xb'));var fs=require('fs');var fs_extra=require(_0x1dcf('0xc'));var _=require(_0x1dcf('0xd'));var squel=require(_0x1dcf('0xe'));var crypto=require(_0x1dcf('0xf'));var jsforce=require(_0x1dcf('0x10'));var deskjs=require(_0x1dcf('0x11'));var toCsv=require(_0x1dcf('0xa'));var querystring=require('querystring');var Papa=require(_0x1dcf('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1dcf('0x13'));var as=require(_0x1dcf('0x14'));var hardwareService=require(_0x1dcf('0x15'));var logger=require(_0x1dcf('0x16'))(_0x1dcf('0x17'));var utils=require(_0x1dcf('0x18'));var config=require(_0x1dcf('0x19'));var licenseUtil=require(_0x1dcf('0x1a'));var db=require(_0x1dcf('0x1b'))['db'];function respondWithStatusCode(_0x36d490,_0x49bb4e){_0x49bb4e=_0x49bb4e||0xcc;return function(_0x4f82e6){if(_0x4f82e6){return _0x36d490[_0x1dcf('0x1c')](_0x49bb4e);}return _0x36d490[_0x1dcf('0x1d')](_0x49bb4e)[_0x1dcf('0x1e')]();};}function respondWithResult(_0x323ff5,_0x4357b5){_0x4357b5=_0x4357b5||0xc8;return function(_0x2b2e70){if(_0x2b2e70){return _0x323ff5['status'](_0x4357b5)[_0x1dcf('0x1f')](_0x2b2e70);}};}function respondWithFilteredResult(_0x2763f4,_0x3990e5){return function(_0x5ef70a){if(_0x5ef70a){var _0xa725af=typeof _0x3990e5[_0x1dcf('0x20')]==='undefined'&&typeof _0x3990e5[_0x1dcf('0x21')]===_0x1dcf('0x22');var _0x4328b7=_0x5ef70a[_0x1dcf('0x23')];var _0x456498=_0xa725af?0x0:_0x3990e5[_0x1dcf('0x20')];var _0x31a677=_0xa725af?_0x5ef70a[_0x1dcf('0x23')]:_0x3990e5['offset']+_0x3990e5[_0x1dcf('0x21')];var _0x180f5e;if(_0x31a677>=_0x4328b7){_0x31a677=_0x4328b7;_0x180f5e=0xc8;}else{_0x180f5e=0xce;}_0x2763f4[_0x1dcf('0x1d')](_0x180f5e);return _0x2763f4[_0x1dcf('0x24')](_0x1dcf('0x25'),_0x456498+'-'+_0x31a677+'/'+_0x4328b7)['json'](_0x5ef70a);}return null;};}function patchUpdates(_0x998cbe){return function(_0x319951){try{jsonpatch[_0x1dcf('0x26')](_0x319951,_0x998cbe,!![]);}catch(_0x3fb236){return BPromise[_0x1dcf('0x27')](_0x3fb236);}return _0x319951[_0x1dcf('0x28')]();};}function saveUpdates(_0x4e048e,_0x50e3bc){return function(_0x31c216){if(_0x31c216){return _0x31c216[_0x1dcf('0x29')](_0x4e048e)[_0x1dcf('0x2a')](function(_0x167acc){return _0x167acc;});}return null;};}function removeEntity(_0x1d8563,_0x2a4b37){return function(_0x103771){if(_0x103771){return _0x103771[_0x1dcf('0x2b')]()[_0x1dcf('0x2a')](function(){_0x1d8563['status'](0xcc)[_0x1dcf('0x1e')]();});}};}function handleEntityNotFound(_0x15941f,_0x192ed6){return function(_0x4bcd11){if(!_0x4bcd11){_0x15941f[_0x1dcf('0x1c')](0x194);}return _0x4bcd11;};}function handleError(_0x2de23f,_0x40dd55){_0x40dd55=_0x40dd55||0x1f4;return function(_0x4aedaa){logger[_0x1dcf('0x2c')](_0x4aedaa[_0x1dcf('0x2d')]);if(_0x4aedaa[_0x1dcf('0x2e')]){delete _0x4aedaa[_0x1dcf('0x2e')];}_0x2de23f['status'](_0x40dd55)[_0x1dcf('0x2f')](_0x4aedaa);};}exports[_0x1dcf('0x30')]=function(_0x114051,_0x295d6a){var _0x3f5d5e={},_0x967243={},_0x8549ad={'count':0x0,'rows':[]};var _0x5af4c4=_['map'](db['ServicenowConfiguration'][_0x1dcf('0x31')],function(_0x30e356){return{'name':_0x30e356['fieldName'],'type':_0x30e356[_0x1dcf('0x32')][_0x1dcf('0x33')]};});_0x967243[_0x1dcf('0x34')]=_[_0x1dcf('0x35')](_0x5af4c4,_0x1dcf('0x2e'));_0x967243[_0x1dcf('0x36')]=_[_0x1dcf('0x37')](_0x114051['query']);_0x967243[_0x1dcf('0x38')]=_[_0x1dcf('0x39')](_0x967243[_0x1dcf('0x34')],_0x967243[_0x1dcf('0x36')]);_0x3f5d5e[_0x1dcf('0x3a')]=_[_0x1dcf('0x39')](_0x967243[_0x1dcf('0x34')],qs['fields'](_0x114051[_0x1dcf('0x36')][_0x1dcf('0x3b')]));_0x3f5d5e[_0x1dcf('0x3a')]=_0x3f5d5e[_0x1dcf('0x3a')][_0x1dcf('0x3c')]?_0x3f5d5e[_0x1dcf('0x3a')]:_0x967243[_0x1dcf('0x34')];if(!_0x114051[_0x1dcf('0x36')][_0x1dcf('0x3d')](_0x1dcf('0x3e'))){_0x3f5d5e[_0x1dcf('0x21')]=qs[_0x1dcf('0x21')](_0x114051[_0x1dcf('0x36')]['limit']);_0x3f5d5e[_0x1dcf('0x20')]=qs[_0x1dcf('0x20')](_0x114051[_0x1dcf('0x36')][_0x1dcf('0x20')]);}_0x3f5d5e[_0x1dcf('0x3f')]=qs[_0x1dcf('0x40')](_0x114051[_0x1dcf('0x36')]['sort']);_0x3f5d5e[_0x1dcf('0x41')]=qs['filters'](_[_0x1dcf('0x42')](_0x114051['query'],_0x967243[_0x1dcf('0x38')]),_0x5af4c4);if(_0x114051[_0x1dcf('0x36')]['filter']){_0x3f5d5e['where']=_[_0x1dcf('0x43')](_0x3f5d5e['where'],{'$or':_[_0x1dcf('0x35')](_0x5af4c4,function(_0x234156){if(_0x234156[_0x1dcf('0x32')]!==_0x1dcf('0x44')){var _0x485134={};_0x485134[_0x234156[_0x1dcf('0x2e')]]={'$like':'%'+_0x114051[_0x1dcf('0x36')][_0x1dcf('0x45')]+'%'};return _0x485134;}})});}_0x3f5d5e=_[_0x1dcf('0x43')]({},_0x3f5d5e,_0x114051[_0x1dcf('0x46')]);var _0x402989={'where':_0x3f5d5e[_0x1dcf('0x41')]};return db[_0x1dcf('0x47')][_0x1dcf('0x23')](_0x402989)[_0x1dcf('0x2a')](function(_0x59bd1e){_0x8549ad[_0x1dcf('0x23')]=_0x59bd1e;if(_0x114051[_0x1dcf('0x36')][_0x1dcf('0x48')]){_0x3f5d5e['include']=[{'all':!![]}];}return db[_0x1dcf('0x47')][_0x1dcf('0x49')](_0x3f5d5e);})[_0x1dcf('0x2a')](function(_0x459dc7){_0x8549ad[_0x1dcf('0x4a')]=_0x459dc7;return _0x8549ad;})[_0x1dcf('0x2a')](respondWithFilteredResult(_0x295d6a,_0x3f5d5e))[_0x1dcf('0x4b')](handleError(_0x295d6a,null));};exports[_0x1dcf('0x4c')]=function(_0x35f3f8,_0x1c2a81){var _0x5cfc8d={'raw':![],'where':{'id':_0x35f3f8[_0x1dcf('0x4d')]['id']}},_0x1faa31={};_0x1faa31[_0x1dcf('0x34')]=_[_0x1dcf('0x37')](db[_0x1dcf('0x47')]['rawAttributes']);_0x1faa31[_0x1dcf('0x36')]=_['keys'](_0x35f3f8[_0x1dcf('0x36')]);_0x1faa31[_0x1dcf('0x38')]=_[_0x1dcf('0x39')](_0x1faa31['model'],_0x1faa31['query']);_0x5cfc8d[_0x1dcf('0x3a')]=_[_0x1dcf('0x39')](_0x1faa31[_0x1dcf('0x34')],qs[_0x1dcf('0x3b')](_0x35f3f8[_0x1dcf('0x36')][_0x1dcf('0x3b')]));_0x5cfc8d['attributes']=_0x5cfc8d[_0x1dcf('0x3a')][_0x1dcf('0x3c')]?_0x5cfc8d[_0x1dcf('0x3a')]:_0x1faa31['model'];if(_0x35f3f8[_0x1dcf('0x36')]['includeAll']){_0x5cfc8d[_0x1dcf('0x4e')]=[{'all':!![]}];}_0x5cfc8d=_[_0x1dcf('0x43')]({},_0x5cfc8d,_0x35f3f8[_0x1dcf('0x46')]);return db[_0x1dcf('0x47')][_0x1dcf('0x4f')](_0x5cfc8d)[_0x1dcf('0x2a')](handleEntityNotFound(_0x1c2a81,null))['then'](respondWithResult(_0x1c2a81,null))['catch'](handleError(_0x1c2a81,null));};exports['create']=function(_0x45958a,_0x5d7c25){return db[_0x1dcf('0x47')][_0x1dcf('0x50')](_0x45958a['body'],{})[_0x1dcf('0x2a')](respondWithResult(_0x5d7c25,0xc9))['catch'](handleError(_0x5d7c25,null));};exports[_0x1dcf('0x29')]=function(_0x26a849,_0x132705){if(_0x26a849['body']['id']){delete _0x26a849['body']['id'];}return db[_0x1dcf('0x47')][_0x1dcf('0x4f')]({'where':{'id':_0x26a849['params']['id']}})[_0x1dcf('0x2a')](handleEntityNotFound(_0x132705,null))[_0x1dcf('0x2a')](saveUpdates(_0x26a849['body'],null))[_0x1dcf('0x2a')](respondWithResult(_0x132705,null))[_0x1dcf('0x4b')](handleError(_0x132705,null));};exports['destroy']=function(_0x27e991,_0x4836e8){return db[_0x1dcf('0x47')]['find']({'where':{'id':_0x27e991[_0x1dcf('0x4d')]['id']}})[_0x1dcf('0x2a')](handleEntityNotFound(_0x4836e8,null))[_0x1dcf('0x2a')](removeEntity(_0x4836e8,null))[_0x1dcf('0x4b')](handleError(_0x4836e8,null));};exports['getFields']=function(_0x483e57,_0x326bd7,_0xa6d7dd){var _0x5f0535={};var _0x1971b5={};var _0xc68688;var _0x2d74cb;return db[_0x1dcf('0x47')][_0x1dcf('0x51')]({'where':{'id':_0x483e57[_0x1dcf('0x4d')]['id']}})[_0x1dcf('0x2a')](handleEntityNotFound(_0x326bd7,null))[_0x1dcf('0x2a')](function(_0x31a706){if(_0x31a706){_0xc68688=_0x31a706;_0x1971b5[_0x1dcf('0x34')]=_['keys'](db['ServicenowField'][_0x1dcf('0x31')]);_0x1971b5[_0x1dcf('0x36')]=_[_0x1dcf('0x37')](_0x483e57[_0x1dcf('0x36')]);_0x1971b5[_0x1dcf('0x38')]=_[_0x1dcf('0x39')](_0x1971b5[_0x1dcf('0x34')],_0x1971b5['query']);_0x5f0535[_0x1dcf('0x3a')]=_[_0x1dcf('0x39')](_0x1971b5[_0x1dcf('0x34')],qs[_0x1dcf('0x3b')](_0x483e57[_0x1dcf('0x36')][_0x1dcf('0x3b')]));_0x5f0535[_0x1dcf('0x3a')]=_0x5f0535[_0x1dcf('0x3a')][_0x1dcf('0x3c')]?_0x5f0535[_0x1dcf('0x3a')]:_0x1971b5['model'];_0x5f0535[_0x1dcf('0x3f')]=qs['sort'](_0x483e57[_0x1dcf('0x36')][_0x1dcf('0x40')]);_0x5f0535['where']=qs[_0x1dcf('0x38')](_['pick'](_0x483e57[_0x1dcf('0x36')],_0x1971b5[_0x1dcf('0x38')]));if(_0x483e57[_0x1dcf('0x36')][_0x1dcf('0x45')]){_0x5f0535[_0x1dcf('0x41')]=_[_0x1dcf('0x43')](_0x5f0535[_0x1dcf('0x41')],{'$or':_[_0x1dcf('0x35')](_0x5f0535['attributes'],function(_0x5c8007){var _0x51f732={};_0x51f732[_0x5c8007]={'$like':'%'+_0x483e57[_0x1dcf('0x36')][_0x1dcf('0x45')]+'%'};return _0x51f732;})});}_0x5f0535=_[_0x1dcf('0x43')]({},_0x5f0535,_0x483e57[_0x1dcf('0x46')]);return _0xc68688[_0x1dcf('0x52')](_0x5f0535);}})[_0x1dcf('0x2a')](function(_0x44d724){if(_0x44d724){_0x2d74cb=_0x44d724[_0x1dcf('0x3c')];if(!_0x483e57[_0x1dcf('0x36')]['hasOwnProperty']('nolimit')){_0x5f0535[_0x1dcf('0x21')]=qs[_0x1dcf('0x21')](_0x483e57[_0x1dcf('0x36')]['limit']);_0x5f0535[_0x1dcf('0x20')]=qs[_0x1dcf('0x20')](_0x483e57['query'][_0x1dcf('0x20')]);}return _0xc68688[_0x1dcf('0x52')](_0x5f0535);}})[_0x1dcf('0x2a')](function(_0x4625d7){if(_0x4625d7){return _0x4625d7?{'count':_0x2d74cb,'rows':_0x4625d7}:null;}})['then'](respondWithResult(_0x326bd7,null))['catch'](handleError(_0x326bd7,null));};exports[_0x1dcf('0x53')]=function(_0x4bec27,_0x4d7334,_0x48180f){var _0x217245={};var _0x7dc4d4={};var _0x2bd95e;var _0x1a1c5a;return db[_0x1dcf('0x47')][_0x1dcf('0x51')]({'where':{'id':_0x4bec27[_0x1dcf('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4d7334,null))[_0x1dcf('0x2a')](function(_0x2e347c){if(_0x2e347c){_0x2bd95e=_0x2e347c;_0x7dc4d4[_0x1dcf('0x34')]=_['keys'](db[_0x1dcf('0x54')]['rawAttributes']);_0x7dc4d4[_0x1dcf('0x36')]=_[_0x1dcf('0x37')](_0x4bec27[_0x1dcf('0x36')]);_0x7dc4d4[_0x1dcf('0x38')]=_[_0x1dcf('0x39')](_0x7dc4d4[_0x1dcf('0x34')],_0x7dc4d4[_0x1dcf('0x36')]);_0x217245[_0x1dcf('0x3a')]=_[_0x1dcf('0x39')](_0x7dc4d4[_0x1dcf('0x34')],qs['fields'](_0x4bec27[_0x1dcf('0x36')][_0x1dcf('0x3b')]));_0x217245[_0x1dcf('0x3a')]=_0x217245[_0x1dcf('0x3a')][_0x1dcf('0x3c')]?_0x217245[_0x1dcf('0x3a')]:_0x7dc4d4[_0x1dcf('0x34')];_0x217245[_0x1dcf('0x3f')]=qs[_0x1dcf('0x40')](_0x4bec27['query'][_0x1dcf('0x40')]);_0x217245['where']=qs[_0x1dcf('0x38')](_[_0x1dcf('0x42')](_0x4bec27[_0x1dcf('0x36')],_0x7dc4d4[_0x1dcf('0x38')]));if(_0x4bec27[_0x1dcf('0x36')][_0x1dcf('0x45')]){_0x217245[_0x1dcf('0x41')]=_[_0x1dcf('0x43')](_0x217245[_0x1dcf('0x41')],{'$or':_['map'](_0x217245[_0x1dcf('0x3a')],function(_0x551511){var _0x515ced={};_0x515ced[_0x551511]={'$like':'%'+_0x4bec27[_0x1dcf('0x36')][_0x1dcf('0x45')]+'%'};return _0x515ced;})});}_0x217245=_['merge']({},_0x217245,_0x4bec27['options']);return _0x2bd95e[_0x1dcf('0x53')](_0x217245);}})['then'](function(_0x29e86b){if(_0x29e86b){_0x1a1c5a=_0x29e86b['length'];if(!_0x4bec27['query'][_0x1dcf('0x3d')](_0x1dcf('0x3e'))){_0x217245[_0x1dcf('0x21')]=qs[_0x1dcf('0x21')](_0x4bec27[_0x1dcf('0x36')][_0x1dcf('0x21')]);_0x217245[_0x1dcf('0x20')]=qs['offset'](_0x4bec27[_0x1dcf('0x36')][_0x1dcf('0x20')]);}return _0x2bd95e[_0x1dcf('0x53')](_0x217245);}})[_0x1dcf('0x2a')](function(_0xcbd5aa){if(_0xcbd5aa){return _0xcbd5aa?{'count':_0x1a1c5a,'rows':_0xcbd5aa}:null;}})[_0x1dcf('0x2a')](respondWithResult(_0x4d7334,null))[_0x1dcf('0x4b')](handleError(_0x4d7334,null));};exports[_0x1dcf('0x55')]=function(_0x5726fd,_0x1aed12,_0x3bd2a0){var _0x84e8ab={};var _0x5a8e5f={};var _0x12f3ed;var _0x2ba9cd;return db[_0x1dcf('0x47')]['findOne']({'where':{'id':_0x5726fd[_0x1dcf('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1aed12,null))[_0x1dcf('0x2a')](function(_0x51f240){if(_0x51f240){_0x12f3ed=_0x51f240;_0x5a8e5f[_0x1dcf('0x34')]=_[_0x1dcf('0x37')](db[_0x1dcf('0x54')][_0x1dcf('0x31')]);_0x5a8e5f[_0x1dcf('0x36')]=_['keys'](_0x5726fd[_0x1dcf('0x36')]);_0x5a8e5f['filters']=_[_0x1dcf('0x39')](_0x5a8e5f[_0x1dcf('0x34')],_0x5a8e5f[_0x1dcf('0x36')]);_0x84e8ab['attributes']=_[_0x1dcf('0x39')](_0x5a8e5f[_0x1dcf('0x34')],qs[_0x1dcf('0x3b')](_0x5726fd[_0x1dcf('0x36')]['fields']));_0x84e8ab[_0x1dcf('0x3a')]=_0x84e8ab[_0x1dcf('0x3a')][_0x1dcf('0x3c')]?_0x84e8ab[_0x1dcf('0x3a')]:_0x5a8e5f[_0x1dcf('0x34')];_0x84e8ab['order']=qs[_0x1dcf('0x40')](_0x5726fd['query'][_0x1dcf('0x40')]);_0x84e8ab[_0x1dcf('0x41')]=qs[_0x1dcf('0x38')](_[_0x1dcf('0x42')](_0x5726fd[_0x1dcf('0x36')],_0x5a8e5f['filters']));if(_0x5726fd['query'][_0x1dcf('0x45')]){_0x84e8ab[_0x1dcf('0x41')]=_['merge'](_0x84e8ab['where'],{'$or':_[_0x1dcf('0x35')](_0x84e8ab['attributes'],function(_0x543691){var _0x4ef7df={};_0x4ef7df[_0x543691]={'$like':'%'+_0x5726fd[_0x1dcf('0x36')]['filter']+'%'};return _0x4ef7df;})});}_0x84e8ab=_[_0x1dcf('0x43')]({},_0x84e8ab,_0x5726fd['options']);return _0x12f3ed[_0x1dcf('0x55')](_0x84e8ab);}})['then'](function(_0x4edb94){if(_0x4edb94){_0x2ba9cd=_0x4edb94[_0x1dcf('0x3c')];if(!_0x5726fd['query']['hasOwnProperty'](_0x1dcf('0x3e'))){_0x84e8ab[_0x1dcf('0x21')]=qs['limit'](_0x5726fd[_0x1dcf('0x36')][_0x1dcf('0x21')]);_0x84e8ab[_0x1dcf('0x20')]=qs[_0x1dcf('0x20')](_0x5726fd['query'][_0x1dcf('0x20')]);}return _0x12f3ed[_0x1dcf('0x55')](_0x84e8ab);}})[_0x1dcf('0x2a')](function(_0x58a7a4){if(_0x58a7a4){return _0x58a7a4?{'count':_0x2ba9cd,'rows':_0x58a7a4}:null;}})['then'](respondWithResult(_0x1aed12,null))[_0x1dcf('0x4b')](handleError(_0x1aed12,null));};
\ No newline at end of file
+var _0xcb1f=['../../config/environment','../../config/license/util','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','update','then','destroy','sendStatus','error','stack','name','send','index','map','ServicenowConfiguration','rawAttributes','fieldName','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','filter','options','includeAll','include','findAll','show','params','find','catch','create','body','getFields','findOne','getSubjects','ServicenowField','getDescriptions','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils'];(function(_0x2ebd0a,_0x37f93e){var _0x93775=function(_0x48e548){while(--_0x48e548){_0x2ebd0a['push'](_0x2ebd0a['shift']());}};_0x93775(++_0x37f93e);}(_0xcb1f,0xd4));var _0xfcb1=function(_0x196a4c,_0x1d806b){_0x196a4c=_0x196a4c-0x0;var _0x14a3fd=_0xcb1f[_0x196a4c];return _0x14a3fd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfcb1('0x0'));var zipdir=require(_0xfcb1('0x1'));var jsonpatch=require(_0xfcb1('0x2'));var rp=require('request-promise');var moment=require(_0xfcb1('0x3'));var BPromise=require(_0xfcb1('0x4'));var Mustache=require(_0xfcb1('0x5'));var util=require(_0xfcb1('0x6'));var path=require('path');var sox=require(_0xfcb1('0x7'));var csv=require(_0xfcb1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfcb1('0x9'));var squel=require('squel');var crypto=require(_0xfcb1('0xa'));var jsforce=require(_0xfcb1('0xb'));var deskjs=require(_0xfcb1('0xc'));var toCsv=require(_0xfcb1('0x8'));var querystring=require(_0xfcb1('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfcb1('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xfcb1('0xf'));var hardwareService=require(_0xfcb1('0x10'));var logger=require(_0xfcb1('0x11'))('api');var utils=require(_0xfcb1('0x12'));var config=require(_0xfcb1('0x13'));var licenseUtil=require(_0xfcb1('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1896a6,_0x3ba49d){_0x3ba49d=_0x3ba49d||0xcc;return function(_0x501ef1){if(_0x501ef1){return _0x1896a6['sendStatus'](_0x3ba49d);}return _0x1896a6[_0xfcb1('0x15')](_0x3ba49d)[_0xfcb1('0x16')]();};}function respondWithResult(_0x15a7db,_0x4d29ae){_0x4d29ae=_0x4d29ae||0xc8;return function(_0xf67ea7){if(_0xf67ea7){return _0x15a7db['status'](_0x4d29ae)[_0xfcb1('0x17')](_0xf67ea7);}};}function respondWithFilteredResult(_0x50156a,_0x4d3879){return function(_0x529bdd){if(_0x529bdd){var _0x12b924=typeof _0x4d3879[_0xfcb1('0x18')]==='undefined'&&typeof _0x4d3879[_0xfcb1('0x19')]===_0xfcb1('0x1a');var _0x1bf490=_0x529bdd[_0xfcb1('0x1b')];var _0x23983b=_0x12b924?0x0:_0x4d3879[_0xfcb1('0x18')];var _0x5beb76=_0x12b924?_0x529bdd[_0xfcb1('0x1b')]:_0x4d3879[_0xfcb1('0x18')]+_0x4d3879[_0xfcb1('0x19')];var _0x29c9a1;if(_0x5beb76>=_0x1bf490){_0x5beb76=_0x1bf490;_0x29c9a1=0xc8;}else{_0x29c9a1=0xce;}_0x50156a[_0xfcb1('0x15')](_0x29c9a1);return _0x50156a[_0xfcb1('0x1c')](_0xfcb1('0x1d'),_0x23983b+'-'+_0x5beb76+'/'+_0x1bf490)[_0xfcb1('0x17')](_0x529bdd);}return null;};}function patchUpdates(_0x35a17e){return function(_0x1d71d5){try{jsonpatch[_0xfcb1('0x1e')](_0x1d71d5,_0x35a17e,!![]);}catch(_0x3fa432){return BPromise['reject'](_0x3fa432);}return _0x1d71d5['save']();};}function saveUpdates(_0x582ec7,_0x58a121){return function(_0x49e1cb){if(_0x49e1cb){return _0x49e1cb[_0xfcb1('0x1f')](_0x582ec7)[_0xfcb1('0x20')](function(_0x472386){return _0x472386;});}return null;};}function removeEntity(_0xd4af9a,_0x4861a1){return function(_0x4d067e){if(_0x4d067e){return _0x4d067e[_0xfcb1('0x21')]()[_0xfcb1('0x20')](function(){_0xd4af9a[_0xfcb1('0x15')](0xcc)[_0xfcb1('0x16')]();});}};}function handleEntityNotFound(_0x2753e1,_0x257b33){return function(_0x449cd3){if(!_0x449cd3){_0x2753e1[_0xfcb1('0x22')](0x194);}return _0x449cd3;};}function handleError(_0x4c8448,_0xa3bd2d){_0xa3bd2d=_0xa3bd2d||0x1f4;return function(_0xb2028b){logger[_0xfcb1('0x23')](_0xb2028b[_0xfcb1('0x24')]);if(_0xb2028b[_0xfcb1('0x25')]){delete _0xb2028b[_0xfcb1('0x25')];}_0x4c8448[_0xfcb1('0x15')](_0xa3bd2d)[_0xfcb1('0x26')](_0xb2028b);};}exports[_0xfcb1('0x27')]=function(_0x5022a9,_0x41e8a9){var _0x3117a6={},_0x209432={},_0x3d4baf={'count':0x0,'rows':[]};var _0x5d0df3=_[_0xfcb1('0x28')](db[_0xfcb1('0x29')][_0xfcb1('0x2a')],function(_0x4aeaa1){return{'name':_0x4aeaa1[_0xfcb1('0x2b')],'type':_0x4aeaa1['type'][_0xfcb1('0x2c')]};});_0x209432[_0xfcb1('0x2d')]=_[_0xfcb1('0x28')](_0x5d0df3,'name');_0x209432['query']=_[_0xfcb1('0x2e')](_0x5022a9[_0xfcb1('0x2f')]);_0x209432[_0xfcb1('0x30')]=_['intersection'](_0x209432['model'],_0x209432[_0xfcb1('0x2f')]);_0x3117a6[_0xfcb1('0x31')]=_[_0xfcb1('0x32')](_0x209432[_0xfcb1('0x2d')],qs[_0xfcb1('0x33')](_0x5022a9[_0xfcb1('0x2f')][_0xfcb1('0x33')]));_0x3117a6['attributes']=_0x3117a6[_0xfcb1('0x31')][_0xfcb1('0x34')]?_0x3117a6[_0xfcb1('0x31')]:_0x209432[_0xfcb1('0x2d')];if(!_0x5022a9[_0xfcb1('0x2f')][_0xfcb1('0x35')](_0xfcb1('0x36'))){_0x3117a6[_0xfcb1('0x19')]=qs['limit'](_0x5022a9['query'][_0xfcb1('0x19')]);_0x3117a6[_0xfcb1('0x18')]=qs['offset'](_0x5022a9[_0xfcb1('0x2f')][_0xfcb1('0x18')]);}_0x3117a6[_0xfcb1('0x37')]=qs['sort'](_0x5022a9['query'][_0xfcb1('0x38')]);_0x3117a6[_0xfcb1('0x39')]=qs[_0xfcb1('0x30')](_[_0xfcb1('0x3a')](_0x5022a9[_0xfcb1('0x2f')],_0x209432[_0xfcb1('0x30')]),_0x5d0df3);if(_0x5022a9[_0xfcb1('0x2f')]['filter']){_0x3117a6[_0xfcb1('0x39')]=_[_0xfcb1('0x3b')](_0x3117a6[_0xfcb1('0x39')],{'$or':_[_0xfcb1('0x28')](_0x5d0df3,function(_0x5ab31b){if(_0x5ab31b[_0xfcb1('0x3c')]!=='VIRTUAL'){var _0xef4e={};_0xef4e[_0x5ab31b[_0xfcb1('0x25')]]={'$like':'%'+_0x5022a9[_0xfcb1('0x2f')][_0xfcb1('0x3d')]+'%'};return _0xef4e;}})});}_0x3117a6=_['merge']({},_0x3117a6,_0x5022a9[_0xfcb1('0x3e')]);var _0x39501d={'where':_0x3117a6['where']};return db[_0xfcb1('0x29')]['count'](_0x39501d)['then'](function(_0xe8ca81){_0x3d4baf['count']=_0xe8ca81;if(_0x5022a9[_0xfcb1('0x2f')][_0xfcb1('0x3f')]){_0x3117a6[_0xfcb1('0x40')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xfcb1('0x41')](_0x3117a6);})[_0xfcb1('0x20')](function(_0x382728){_0x3d4baf['rows']=_0x382728;return _0x3d4baf;})[_0xfcb1('0x20')](respondWithFilteredResult(_0x41e8a9,_0x3117a6))['catch'](handleError(_0x41e8a9,null));};exports[_0xfcb1('0x42')]=function(_0x428f6a,_0x2fab33){var _0x40570f={'raw':![],'where':{'id':_0x428f6a[_0xfcb1('0x43')]['id']}},_0x1dcba9={};_0x1dcba9['model']=_[_0xfcb1('0x2e')](db['ServicenowConfiguration'][_0xfcb1('0x2a')]);_0x1dcba9[_0xfcb1('0x2f')]=_[_0xfcb1('0x2e')](_0x428f6a[_0xfcb1('0x2f')]);_0x1dcba9[_0xfcb1('0x30')]=_[_0xfcb1('0x32')](_0x1dcba9[_0xfcb1('0x2d')],_0x1dcba9[_0xfcb1('0x2f')]);_0x40570f['attributes']=_[_0xfcb1('0x32')](_0x1dcba9[_0xfcb1('0x2d')],qs[_0xfcb1('0x33')](_0x428f6a[_0xfcb1('0x2f')]['fields']));_0x40570f[_0xfcb1('0x31')]=_0x40570f[_0xfcb1('0x31')]['length']?_0x40570f['attributes']:_0x1dcba9[_0xfcb1('0x2d')];if(_0x428f6a['query'][_0xfcb1('0x3f')]){_0x40570f[_0xfcb1('0x40')]=[{'all':!![]}];}_0x40570f=_['merge']({},_0x40570f,_0x428f6a[_0xfcb1('0x3e')]);return db[_0xfcb1('0x29')][_0xfcb1('0x44')](_0x40570f)[_0xfcb1('0x20')](handleEntityNotFound(_0x2fab33,null))['then'](respondWithResult(_0x2fab33,null))[_0xfcb1('0x45')](handleError(_0x2fab33,null));};exports[_0xfcb1('0x46')]=function(_0x432941,_0x426577){return db['ServicenowConfiguration'][_0xfcb1('0x46')](_0x432941[_0xfcb1('0x47')],{})[_0xfcb1('0x20')](respondWithResult(_0x426577,0xc9))[_0xfcb1('0x45')](handleError(_0x426577,null));};exports['update']=function(_0x12948a,_0x530dd0){if(_0x12948a[_0xfcb1('0x47')]['id']){delete _0x12948a[_0xfcb1('0x47')]['id'];}return db['ServicenowConfiguration'][_0xfcb1('0x44')]({'where':{'id':_0x12948a[_0xfcb1('0x43')]['id']}})[_0xfcb1('0x20')](handleEntityNotFound(_0x530dd0,null))[_0xfcb1('0x20')](saveUpdates(_0x12948a[_0xfcb1('0x47')],null))['then'](respondWithResult(_0x530dd0,null))[_0xfcb1('0x45')](handleError(_0x530dd0,null));};exports[_0xfcb1('0x21')]=function(_0x192db2,_0x384bc8){return db[_0xfcb1('0x29')]['find']({'where':{'id':_0x192db2[_0xfcb1('0x43')]['id']}})[_0xfcb1('0x20')](handleEntityNotFound(_0x384bc8,null))[_0xfcb1('0x20')](removeEntity(_0x384bc8,null))[_0xfcb1('0x45')](handleError(_0x384bc8,null));};exports[_0xfcb1('0x48')]=function(_0x12b9b3,_0x1b901e,_0x2ad809){var _0x2fd507={};var _0xd2a58d={};var _0x21694f;var _0x4c75f3;return db[_0xfcb1('0x29')][_0xfcb1('0x49')]({'where':{'id':_0x12b9b3['params']['id']}})[_0xfcb1('0x20')](handleEntityNotFound(_0x1b901e,null))[_0xfcb1('0x20')](function(_0x4f1da9){if(_0x4f1da9){_0x21694f=_0x4f1da9;_0xd2a58d['model']=_['keys'](db['ServicenowField'][_0xfcb1('0x2a')]);_0xd2a58d['query']=_[_0xfcb1('0x2e')](_0x12b9b3[_0xfcb1('0x2f')]);_0xd2a58d['filters']=_[_0xfcb1('0x32')](_0xd2a58d[_0xfcb1('0x2d')],_0xd2a58d[_0xfcb1('0x2f')]);_0x2fd507['attributes']=_[_0xfcb1('0x32')](_0xd2a58d[_0xfcb1('0x2d')],qs[_0xfcb1('0x33')](_0x12b9b3['query']['fields']));_0x2fd507[_0xfcb1('0x31')]=_0x2fd507[_0xfcb1('0x31')][_0xfcb1('0x34')]?_0x2fd507[_0xfcb1('0x31')]:_0xd2a58d[_0xfcb1('0x2d')];_0x2fd507[_0xfcb1('0x37')]=qs['sort'](_0x12b9b3['query'][_0xfcb1('0x38')]);_0x2fd507[_0xfcb1('0x39')]=qs['filters'](_[_0xfcb1('0x3a')](_0x12b9b3['query'],_0xd2a58d['filters']));if(_0x12b9b3['query']['filter']){_0x2fd507[_0xfcb1('0x39')]=_['merge'](_0x2fd507[_0xfcb1('0x39')],{'$or':_['map'](_0x2fd507[_0xfcb1('0x31')],function(_0x3402c1){var _0x54affd={};_0x54affd[_0x3402c1]={'$like':'%'+_0x12b9b3[_0xfcb1('0x2f')][_0xfcb1('0x3d')]+'%'};return _0x54affd;})});}_0x2fd507=_[_0xfcb1('0x3b')]({},_0x2fd507,_0x12b9b3['options']);return _0x21694f[_0xfcb1('0x48')](_0x2fd507);}})[_0xfcb1('0x20')](function(_0x4276c0){if(_0x4276c0){_0x4c75f3=_0x4276c0['length'];if(!_0x12b9b3[_0xfcb1('0x2f')][_0xfcb1('0x35')](_0xfcb1('0x36'))){_0x2fd507[_0xfcb1('0x19')]=qs[_0xfcb1('0x19')](_0x12b9b3[_0xfcb1('0x2f')][_0xfcb1('0x19')]);_0x2fd507['offset']=qs[_0xfcb1('0x18')](_0x12b9b3[_0xfcb1('0x2f')][_0xfcb1('0x18')]);}return _0x21694f[_0xfcb1('0x48')](_0x2fd507);}})[_0xfcb1('0x20')](function(_0x16e931){if(_0x16e931){return _0x16e931?{'count':_0x4c75f3,'rows':_0x16e931}:null;}})[_0xfcb1('0x20')](respondWithResult(_0x1b901e,null))[_0xfcb1('0x45')](handleError(_0x1b901e,null));};exports[_0xfcb1('0x4a')]=function(_0x29a490,_0x1d5b32,_0x32abc8){var _0x1c7aa2={};var _0xe50085={};var _0x3dbb2e;var _0x47a513;return db[_0xfcb1('0x29')]['findOne']({'where':{'id':_0x29a490[_0xfcb1('0x43')]['id']}})[_0xfcb1('0x20')](handleEntityNotFound(_0x1d5b32,null))[_0xfcb1('0x20')](function(_0x5e93c2){if(_0x5e93c2){_0x3dbb2e=_0x5e93c2;_0xe50085[_0xfcb1('0x2d')]=_['keys'](db[_0xfcb1('0x4b')]['rawAttributes']);_0xe50085['query']=_['keys'](_0x29a490[_0xfcb1('0x2f')]);_0xe50085[_0xfcb1('0x30')]=_[_0xfcb1('0x32')](_0xe50085[_0xfcb1('0x2d')],_0xe50085[_0xfcb1('0x2f')]);_0x1c7aa2[_0xfcb1('0x31')]=_[_0xfcb1('0x32')](_0xe50085['model'],qs[_0xfcb1('0x33')](_0x29a490[_0xfcb1('0x2f')][_0xfcb1('0x33')]));_0x1c7aa2['attributes']=_0x1c7aa2[_0xfcb1('0x31')]['length']?_0x1c7aa2[_0xfcb1('0x31')]:_0xe50085[_0xfcb1('0x2d')];_0x1c7aa2[_0xfcb1('0x37')]=qs[_0xfcb1('0x38')](_0x29a490[_0xfcb1('0x2f')][_0xfcb1('0x38')]);_0x1c7aa2[_0xfcb1('0x39')]=qs[_0xfcb1('0x30')](_[_0xfcb1('0x3a')](_0x29a490[_0xfcb1('0x2f')],_0xe50085['filters']));if(_0x29a490[_0xfcb1('0x2f')]['filter']){_0x1c7aa2[_0xfcb1('0x39')]=_[_0xfcb1('0x3b')](_0x1c7aa2[_0xfcb1('0x39')],{'$or':_['map'](_0x1c7aa2['attributes'],function(_0x1c6433){var _0x1a86f0={};_0x1a86f0[_0x1c6433]={'$like':'%'+_0x29a490[_0xfcb1('0x2f')]['filter']+'%'};return _0x1a86f0;})});}_0x1c7aa2=_['merge']({},_0x1c7aa2,_0x29a490[_0xfcb1('0x3e')]);return _0x3dbb2e[_0xfcb1('0x4a')](_0x1c7aa2);}})['then'](function(_0x3b19fa){if(_0x3b19fa){_0x47a513=_0x3b19fa[_0xfcb1('0x34')];if(!_0x29a490[_0xfcb1('0x2f')][_0xfcb1('0x35')]('nolimit')){_0x1c7aa2[_0xfcb1('0x19')]=qs[_0xfcb1('0x19')](_0x29a490['query'][_0xfcb1('0x19')]);_0x1c7aa2[_0xfcb1('0x18')]=qs[_0xfcb1('0x18')](_0x29a490[_0xfcb1('0x2f')][_0xfcb1('0x18')]);}return _0x3dbb2e[_0xfcb1('0x4a')](_0x1c7aa2);}})[_0xfcb1('0x20')](function(_0x246ddb){if(_0x246ddb){return _0x246ddb?{'count':_0x47a513,'rows':_0x246ddb}:null;}})[_0xfcb1('0x20')](respondWithResult(_0x1d5b32,null))[_0xfcb1('0x45')](handleError(_0x1d5b32,null));};exports[_0xfcb1('0x4c')]=function(_0x204cd6,_0x5695d9,_0x91974a){var _0x5e1367={};var _0x27e5d4={};var _0x57b5da;var _0x333476;return db[_0xfcb1('0x29')][_0xfcb1('0x49')]({'where':{'id':_0x204cd6[_0xfcb1('0x43')]['id']}})[_0xfcb1('0x20')](handleEntityNotFound(_0x5695d9,null))[_0xfcb1('0x20')](function(_0x22db98){if(_0x22db98){_0x57b5da=_0x22db98;_0x27e5d4[_0xfcb1('0x2d')]=_['keys'](db[_0xfcb1('0x4b')][_0xfcb1('0x2a')]);_0x27e5d4['query']=_[_0xfcb1('0x2e')](_0x204cd6[_0xfcb1('0x2f')]);_0x27e5d4[_0xfcb1('0x30')]=_[_0xfcb1('0x32')](_0x27e5d4['model'],_0x27e5d4['query']);_0x5e1367['attributes']=_[_0xfcb1('0x32')](_0x27e5d4[_0xfcb1('0x2d')],qs[_0xfcb1('0x33')](_0x204cd6['query'][_0xfcb1('0x33')]));_0x5e1367[_0xfcb1('0x31')]=_0x5e1367[_0xfcb1('0x31')][_0xfcb1('0x34')]?_0x5e1367[_0xfcb1('0x31')]:_0x27e5d4[_0xfcb1('0x2d')];_0x5e1367['order']=qs['sort'](_0x204cd6[_0xfcb1('0x2f')][_0xfcb1('0x38')]);_0x5e1367['where']=qs[_0xfcb1('0x30')](_['pick'](_0x204cd6[_0xfcb1('0x2f')],_0x27e5d4[_0xfcb1('0x30')]));if(_0x204cd6['query']['filter']){_0x5e1367[_0xfcb1('0x39')]=_[_0xfcb1('0x3b')](_0x5e1367['where'],{'$or':_['map'](_0x5e1367[_0xfcb1('0x31')],function(_0x3b9e82){var _0x264b48={};_0x264b48[_0x3b9e82]={'$like':'%'+_0x204cd6[_0xfcb1('0x2f')][_0xfcb1('0x3d')]+'%'};return _0x264b48;})});}_0x5e1367=_['merge']({},_0x5e1367,_0x204cd6[_0xfcb1('0x3e')]);return _0x57b5da['getDescriptions'](_0x5e1367);}})['then'](function(_0x2ab227){if(_0x2ab227){_0x333476=_0x2ab227[_0xfcb1('0x34')];if(!_0x204cd6[_0xfcb1('0x2f')][_0xfcb1('0x35')](_0xfcb1('0x36'))){_0x5e1367['limit']=qs[_0xfcb1('0x19')](_0x204cd6[_0xfcb1('0x2f')][_0xfcb1('0x19')]);_0x5e1367[_0xfcb1('0x18')]=qs[_0xfcb1('0x18')](_0x204cd6[_0xfcb1('0x2f')][_0xfcb1('0x18')]);}return _0x57b5da[_0xfcb1('0x4c')](_0x5e1367);}})[_0xfcb1('0x20')](function(_0x45f415){if(_0x45f415){return _0x45f415?{'count':_0x333476,'rows':_0x45f415}:null;}})[_0xfcb1('0x20')](respondWithResult(_0x5695d9,null))[_0xfcb1('0x45')](handleError(_0x5695d9,null));};
\ No newline at end of file
index e09d299..489159b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaebd=['moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','lodash','../../config/logger','api'];(function(_0x16eabf,_0x23b900){var _0x1fdb56=function(_0x5aa705){while(--_0x5aa705){_0x16eabf['push'](_0x16eabf['shift']());}};_0x1fdb56(++_0x23b900);}(_0xaebd,0x1e9));var _0xdaeb=function(_0x2515f8,_0x38e831){_0x2515f8=_0x2515f8-0x0;var _0xccb0d6=_0xaebd[_0x2515f8];return _0xccb0d6;};'use strict';var _=require(_0xdaeb('0x0'));var util=require('util');var logger=require(_0xdaeb('0x1'))(_0xdaeb('0x2'));var moment=require(_0xdaeb('0x3'));var BPromise=require(_0xdaeb('0x4'));var rp=require(_0xdaeb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdaeb('0x6'));var config=require(_0xdaeb('0x7'));var attributes=require(_0xdaeb('0x8'));module[_0xdaeb('0x9')]=function(_0xee94f9,_0x4b7255){return _0xee94f9[_0xdaeb('0xa')](_0xdaeb('0xb'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc04a=['exports','int_servicenow_configurations','lodash','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowConfiguration.attributes'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0xc04a,0x12e));var _0xac04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc04a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xac04('0x0'));var util=require('util');var logger=require(_0xac04('0x1'))('api');var moment=require(_0xac04('0x2'));var BPromise=require(_0xac04('0x3'));var rp=require(_0xac04('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xac04('0x5'));var config=require(_0xac04('0x6'));var attributes=require(_0xac04('0x7'));module[_0xac04('0x8')]=function(_0x5add53,_0x5c6f52){return _0x5add53['define']('ServicenowConfiguration',attributes,{'tableName':_0xac04('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4557240..81c6122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x849d=['../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x549dd8,_0x26c531){var _0x5d772f=function(_0x234b15){while(--_0x234b15){_0x549dd8['push'](_0x549dd8['shift']());}};_0x5d772f(++_0x26c531);}(_0x849d,0x181));var _0xd849=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x849d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd849('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd849('0x1'));var rs=require(_0xd849('0x2'));var fs=require('fs');var Redis=require(_0xd849('0x3'));var db=require(_0xd849('0x4'))['db'];var utils=require(_0xd849('0x5'));var logger=require(_0xd849('0x6'))('rpc');var config=require(_0xd849('0x7'));var jayson=require(_0xd849('0x8'));var client=jayson[_0xd849('0x9')][_0xd849('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x464f3c,_0x6524bc,_0x2ca92d){return new BPromise(function(_0x2423a8,_0x45338f){return client[_0xd849('0xb')](_0x464f3c,_0x2ca92d)[_0xd849('0xc')](function(_0x4a65b9){logger[_0xd849('0xd')](_0xd849('0xe'),_0x6524bc,_0xd849('0xf'));logger[_0xd849('0x10')](_0xd849('0x11'),_0x6524bc,_0xd849('0xf'),JSON[_0xd849('0x12')](_0x4a65b9));if(_0x4a65b9[_0xd849('0x13')]){if(_0x4a65b9[_0xd849('0x13')][_0xd849('0x14')]===0x1f4){logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x6524bc,_0x4a65b9[_0xd849('0x13')][_0xd849('0x15')]);return _0x45338f(_0x4a65b9[_0xd849('0x13')][_0xd849('0x15')]);}logger[_0xd849('0x13')]('ServicenowConfiguration,\x20%s,\x20%s',_0x6524bc,_0x4a65b9[_0xd849('0x13')][_0xd849('0x15')]);return _0x2423a8(_0x4a65b9['error'][_0xd849('0x15')]);}else{logger[_0xd849('0xd')]('ServicenowConfiguration,\x20%s,\x20%s',_0x6524bc,_0xd849('0xf'));_0x2423a8(_0x4a65b9['result'][_0xd849('0x15')]);}})[_0xd849('0x16')](function(_0x1e2fac){logger[_0xd849('0x13')](_0xd849('0xe'),_0x6524bc,_0x1e2fac);_0x45338f(_0x1e2fac);});});}
\ No newline at end of file
+var _0x0a61=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','code','error','message','request\x20sent','result','catch','lodash','util','randomstring'];(function(_0x39770d,_0x11a00f){var _0x1a1743=function(_0x1cac64){while(--_0x1cac64){_0x39770d['push'](_0x39770d['shift']());}};_0x1a1743(++_0x11a00f);}(_0x0a61,0xbd));var _0x10a6=function(_0x5e2532,_0x1546f3){_0x5e2532=_0x5e2532-0x0;var _0x467ff7=_0x0a61[_0x5e2532];return _0x467ff7;};'use strict';var _=require(_0x10a6('0x0'));var util=require(_0x10a6('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x10a6('0x2'));var fs=require('fs');var Redis=require(_0x10a6('0x3'));var db=require(_0x10a6('0x4'))['db'];var utils=require(_0x10a6('0x5'));var logger=require(_0x10a6('0x6'))(_0x10a6('0x7'));var config=require(_0x10a6('0x8'));var jayson=require(_0x10a6('0x9'));var client=jayson[_0x10a6('0xa')][_0x10a6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x38a521,_0x12525a,_0x50136b){return new BPromise(function(_0x2950e2,_0x588a14){return client[_0x10a6('0xc')](_0x38a521,_0x50136b)[_0x10a6('0xd')](function(_0x892f57){logger[_0x10a6('0xe')](_0x10a6('0xf'),_0x12525a,'request\x20sent');logger[_0x10a6('0x10')](_0x10a6('0x11'),_0x12525a,'request\x20sent',JSON['stringify'](_0x892f57));if(_0x892f57['error']){if(_0x892f57['error'][_0x10a6('0x12')]===0x1f4){logger[_0x10a6('0x13')](_0x10a6('0xf'),_0x12525a,_0x892f57['error'][_0x10a6('0x14')]);return _0x588a14(_0x892f57[_0x10a6('0x13')]['message']);}logger[_0x10a6('0x13')]('ServicenowConfiguration,\x20%s,\x20%s',_0x12525a,_0x892f57[_0x10a6('0x13')][_0x10a6('0x14')]);return _0x2950e2(_0x892f57[_0x10a6('0x13')][_0x10a6('0x14')]);}else{logger[_0x10a6('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x12525a,_0x10a6('0x15'));_0x2950e2(_0x892f57[_0x10a6('0x16')][_0x10a6('0x14')]);}})[_0x10a6('0x17')](function(_0x213a9d){logger[_0x10a6('0x13')](_0x10a6('0xf'),_0x12525a,_0x213a9d);_0x588a14(_0x213a9d);});});}
\ No newline at end of file
index ebd3d2d..75f9845 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x904a=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowField.controller','isAuthenticated','/:id','show','create','update','delete','destroy','util','path'];(function(_0x116c04,_0x4963da){var _0x9e011d=function(_0x143880){while(--_0x143880){_0x116c04['push'](_0x116c04['shift']());}};_0x9e011d(++_0x4963da);}(_0x904a,0x13e));var _0xa904=function(_0xb42fec,_0x109269){_0xb42fec=_0xb42fec-0x0;var _0x256cf6=_0x904a[_0xb42fec];return _0x256cf6;};'use strict';var multer=require('multer');var util=require(_0xa904('0x0'));var path=require(_0xa904('0x1'));var timeout=require(_0xa904('0x2'));var express=require(_0xa904('0x3'));var router=express[_0xa904('0x4')]();var fs_extra=require(_0xa904('0x5'));var auth=require(_0xa904('0x6'));var interaction=require(_0xa904('0x7'));var config=require('../../config/environment');var controller=require(_0xa904('0x8'));router['get']('/',auth[_0xa904('0x9')](),controller['index']);router['get'](_0xa904('0xa'),auth[_0xa904('0x9')](),controller[_0xa904('0xb')]);router['post']('/',auth[_0xa904('0x9')](),controller[_0xa904('0xc')]);router['put']('/:id',auth[_0xa904('0x9')](),controller[_0xa904('0xd')]);router[_0xa904('0xe')](_0xa904('0xa'),auth[_0xa904('0x9')](),controller[_0xa904('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xf843=['../../config/environment','./intServicenowField.controller','get','isAuthenticated','/:id','show','create','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5b9535,_0x5ed7d4){var _0x4e2b56=function(_0x36f754){while(--_0x36f754){_0x5b9535['push'](_0x5b9535['shift']());}};_0x4e2b56(++_0x5ed7d4);}(_0xf843,0x13c));var _0x3f84=function(_0x4e70a7,_0x43db60){_0x4e70a7=_0x4e70a7-0x0;var _0x35609f=_0xf843[_0x4e70a7];return _0x35609f;};'use strict';var multer=require('multer');var util=require(_0x3f84('0x0'));var path=require(_0x3f84('0x1'));var timeout=require(_0x3f84('0x2'));var express=require(_0x3f84('0x3'));var router=express[_0x3f84('0x4')]();var fs_extra=require(_0x3f84('0x5'));var auth=require(_0x3f84('0x6'));var interaction=require(_0x3f84('0x7'));var config=require(_0x3f84('0x8'));var controller=require(_0x3f84('0x9'));router[_0x3f84('0xa')]('/',auth[_0x3f84('0xb')](),controller['index']);router[_0x3f84('0xa')](_0x3f84('0xc'),auth[_0x3f84('0xb')](),controller[_0x3f84('0xd')]);router['post']('/',auth[_0x3f84('0xb')](),controller[_0x3f84('0xe')]);router['put'](_0x3f84('0xc'),auth[_0x3f84('0xb')](),controller[_0x3f84('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x3f84('0x10')]);module[_0x3f84('0x11')]=router;
\ No newline at end of file
index 56d2fe3..f72f33f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1699=['customVariable','sequelize','exports','ENUM','string','picklist','STRING'];(function(_0x40de66,_0x1fdeb5){var _0xd40446=function(_0x546789){while(--_0x546789){_0x40de66['push'](_0x40de66['shift']());}};_0xd40446(++_0x1fdeb5);}(_0x1699,0x1b3));var _0x9169=function(_0x545e41,_0x55830d){_0x545e41=_0x545e41-0x0;var _0x20ee17=_0x1699[_0x545e41];return _0x20ee17;};'use strict';var Sequelize=require(_0x9169('0x0'));module[_0x9169('0x1')]={'type':{'type':Sequelize[_0x9169('0x2')](_0x9169('0x3'),'variable','customVariable','keyValue',_0x9169('0x4')),'defaultValue':_0x9169('0x3')},'content':{'type':Sequelize[_0x9169('0x5')]},'key':{'type':Sequelize[_0x9169('0x5')]},'keyType':{'type':Sequelize[_0x9169('0x2')]('string','variable',_0x9169('0x6'))},'keyContent':{'type':Sequelize[_0x9169('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9169('0x5')]}};
\ No newline at end of file
+var _0x4eb8=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x1fbb85,_0x430a0c){var _0x32aea8=function(_0x216cab){while(--_0x216cab){_0x1fbb85['push'](_0x1fbb85['shift']());}};_0x32aea8(++_0x430a0c);}(_0x4eb8,0x15a));var _0x84eb=function(_0x5f35c5,_0x48949c){_0x5f35c5=_0x5f35c5-0x0;var _0x5e5d64=_0x4eb8[_0x5f35c5];return _0x5e5d64;};'use strict';var Sequelize=require(_0x84eb('0x0'));module[_0x84eb('0x1')]={'type':{'type':Sequelize[_0x84eb('0x2')](_0x84eb('0x3'),_0x84eb('0x4'),_0x84eb('0x5'),_0x84eb('0x6'),_0x84eb('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0x84eb('0x8')]},'key':{'type':Sequelize[_0x84eb('0x8')]},'keyType':{'type':Sequelize[_0x84eb('0x2')](_0x84eb('0x3'),'variable',_0x84eb('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x84eb('0x8')]},'customField':{'type':Sequelize[_0x84eb('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 00dfc5d..ff42e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4506=['json','offset','undefined','limit','count','status','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','ServicenowField','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','params','include','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end'];(function(_0x50a004,_0x193d84){var _0x5e9992=function(_0x3c8c37){while(--_0x3c8c37){_0x50a004['push'](_0x50a004['shift']());}};_0x5e9992(++_0x193d84);}(_0x4506,0x7b));var _0x6450=function(_0x51544f,_0x1b9431){_0x51544f=_0x51544f-0x0;var _0x3fca88=_0x4506[_0x51544f];return _0x3fca88;};'use strict';var emlformat=require(_0x6450('0x0'));var rimraf=require(_0x6450('0x1'));var zipdir=require(_0x6450('0x2'));var jsonpatch=require(_0x6450('0x3'));var rp=require(_0x6450('0x4'));var moment=require(_0x6450('0x5'));var BPromise=require(_0x6450('0x6'));var Mustache=require(_0x6450('0x7'));var util=require(_0x6450('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x6450('0x9'));var ejs=require(_0x6450('0xa'));var fs=require('fs');var fs_extra=require(_0x6450('0xb'));var _=require(_0x6450('0xc'));var squel=require(_0x6450('0xd'));var crypto=require('crypto');var jsforce=require(_0x6450('0xe'));var deskjs=require(_0x6450('0xf'));var toCsv=require(_0x6450('0x9'));var querystring=require('querystring');var Papa=require(_0x6450('0x10'));var Redis=require(_0x6450('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6450('0x12'));var as=require(_0x6450('0x13'));var hardwareService=require(_0x6450('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x6450('0x15'));var config=require(_0x6450('0x16'));var licenseUtil=require(_0x6450('0x17'));var db=require(_0x6450('0x18'))['db'];function respondWithStatusCode(_0x548dd1,_0x9d086a){_0x9d086a=_0x9d086a||0xcc;return function(_0x1b13dd){if(_0x1b13dd){return _0x548dd1[_0x6450('0x19')](_0x9d086a);}return _0x548dd1['status'](_0x9d086a)[_0x6450('0x1a')]();};}function respondWithResult(_0x4eaecd,_0x351633){_0x351633=_0x351633||0xc8;return function(_0x508eca){if(_0x508eca){return _0x4eaecd['status'](_0x351633)[_0x6450('0x1b')](_0x508eca);}};}function respondWithFilteredResult(_0x1b74ce,_0x49b6fd){return function(_0x424c9c){if(_0x424c9c){var _0x47d4dd=typeof _0x49b6fd[_0x6450('0x1c')]===_0x6450('0x1d')&&typeof _0x49b6fd[_0x6450('0x1e')]===_0x6450('0x1d');var _0x33106f=_0x424c9c[_0x6450('0x1f')];var _0x50b87a=_0x47d4dd?0x0:_0x49b6fd[_0x6450('0x1c')];var _0x3afa45=_0x47d4dd?_0x424c9c[_0x6450('0x1f')]:_0x49b6fd[_0x6450('0x1c')]+_0x49b6fd[_0x6450('0x1e')];var _0x2395b8;if(_0x3afa45>=_0x33106f){_0x3afa45=_0x33106f;_0x2395b8=0xc8;}else{_0x2395b8=0xce;}_0x1b74ce[_0x6450('0x20')](_0x2395b8);return _0x1b74ce['set'](_0x6450('0x21'),_0x50b87a+'-'+_0x3afa45+'/'+_0x33106f)[_0x6450('0x1b')](_0x424c9c);}return null;};}function patchUpdates(_0x45bde4){return function(_0xad8a7d){try{jsonpatch[_0x6450('0x22')](_0xad8a7d,_0x45bde4,!![]);}catch(_0x309f39){return BPromise[_0x6450('0x23')](_0x309f39);}return _0xad8a7d[_0x6450('0x24')]();};}function saveUpdates(_0x533c0e,_0x51332f){return function(_0x32b648){if(_0x32b648){return _0x32b648[_0x6450('0x25')](_0x533c0e)['then'](function(_0x20641d){return _0x20641d;});}return null;};}function removeEntity(_0x3eda2b,_0x1273e7){return function(_0x1f3372){if(_0x1f3372){return _0x1f3372[_0x6450('0x26')]()[_0x6450('0x27')](function(){_0x3eda2b[_0x6450('0x20')](0xcc)[_0x6450('0x1a')]();});}};}function handleEntityNotFound(_0x4b5dad,_0x372481){return function(_0x13bcb9){if(!_0x13bcb9){_0x4b5dad[_0x6450('0x19')](0x194);}return _0x13bcb9;};}function handleError(_0x18995a,_0xc57b80){_0xc57b80=_0xc57b80||0x1f4;return function(_0x5f1de6){logger['error'](_0x5f1de6[_0x6450('0x28')]);if(_0x5f1de6['name']){delete _0x5f1de6[_0x6450('0x29')];}_0x18995a[_0x6450('0x20')](_0xc57b80)[_0x6450('0x2a')](_0x5f1de6);};}exports[_0x6450('0x2b')]=function(_0x2858db,_0x41daff){var _0x522de9={},_0x2eb7a6={},_0x3acf0e={'count':0x0,'rows':[]};var _0x350491=_['map'](db[_0x6450('0x2c')][_0x6450('0x2d')],function(_0x3e201a){return{'name':_0x3e201a[_0x6450('0x2e')],'type':_0x3e201a[_0x6450('0x2f')][_0x6450('0x30')]};});_0x2eb7a6['model']=_[_0x6450('0x31')](_0x350491,_0x6450('0x29'));_0x2eb7a6[_0x6450('0x32')]=_[_0x6450('0x33')](_0x2858db['query']);_0x2eb7a6[_0x6450('0x34')]=_[_0x6450('0x35')](_0x2eb7a6[_0x6450('0x36')],_0x2eb7a6[_0x6450('0x32')]);_0x522de9[_0x6450('0x37')]=_[_0x6450('0x35')](_0x2eb7a6[_0x6450('0x36')],qs[_0x6450('0x38')](_0x2858db[_0x6450('0x32')]['fields']));_0x522de9[_0x6450('0x37')]=_0x522de9[_0x6450('0x37')][_0x6450('0x39')]?_0x522de9[_0x6450('0x37')]:_0x2eb7a6[_0x6450('0x36')];if(!_0x2858db['query'][_0x6450('0x3a')](_0x6450('0x3b'))){_0x522de9[_0x6450('0x1e')]=qs[_0x6450('0x1e')](_0x2858db[_0x6450('0x32')][_0x6450('0x1e')]);_0x522de9[_0x6450('0x1c')]=qs[_0x6450('0x1c')](_0x2858db[_0x6450('0x32')][_0x6450('0x1c')]);}_0x522de9[_0x6450('0x3c')]=qs[_0x6450('0x3d')](_0x2858db[_0x6450('0x32')]['sort']);_0x522de9[_0x6450('0x3e')]=qs['filters'](_[_0x6450('0x3f')](_0x2858db[_0x6450('0x32')],_0x2eb7a6[_0x6450('0x34')]),_0x350491);if(_0x2858db['query'][_0x6450('0x40')]){_0x522de9['where']=_[_0x6450('0x41')](_0x522de9[_0x6450('0x3e')],{'$or':_[_0x6450('0x31')](_0x350491,function(_0x50e0ab){if(_0x50e0ab['type']!=='VIRTUAL'){var _0xda4d50={};_0xda4d50[_0x50e0ab[_0x6450('0x29')]]={'$like':'%'+_0x2858db[_0x6450('0x32')][_0x6450('0x40')]+'%'};return _0xda4d50;}})});}_0x522de9=_[_0x6450('0x41')]({},_0x522de9,_0x2858db[_0x6450('0x42')]);var _0x3b3fdb={'where':_0x522de9['where']};return db[_0x6450('0x2c')][_0x6450('0x1f')](_0x3b3fdb)['then'](function(_0x5657f0){_0x3acf0e['count']=_0x5657f0;if(_0x2858db[_0x6450('0x32')][_0x6450('0x43')]){_0x522de9['include']=[{'all':!![]}];}return db[_0x6450('0x2c')][_0x6450('0x44')](_0x522de9);})['then'](function(_0x5e12ee){_0x3acf0e['rows']=_0x5e12ee;return _0x3acf0e;})['then'](respondWithFilteredResult(_0x41daff,_0x522de9))['catch'](handleError(_0x41daff,null));};exports['show']=function(_0x454f98,_0xdd9015){var _0x6bb036={'raw':!![],'where':{'id':_0x454f98[_0x6450('0x45')]['id']}},_0x33de51={};_0x33de51[_0x6450('0x36')]=_[_0x6450('0x33')](db[_0x6450('0x2c')][_0x6450('0x2d')]);_0x33de51[_0x6450('0x32')]=_[_0x6450('0x33')](_0x454f98['query']);_0x33de51['filters']=_['intersection'](_0x33de51[_0x6450('0x36')],_0x33de51[_0x6450('0x32')]);_0x6bb036['attributes']=_[_0x6450('0x35')](_0x33de51['model'],qs[_0x6450('0x38')](_0x454f98['query'][_0x6450('0x38')]));_0x6bb036[_0x6450('0x37')]=_0x6bb036[_0x6450('0x37')]['length']?_0x6bb036['attributes']:_0x33de51['model'];if(_0x454f98[_0x6450('0x32')][_0x6450('0x43')]){_0x6bb036[_0x6450('0x46')]=[{'all':!![]}];}_0x6bb036=_[_0x6450('0x41')]({},_0x6bb036,_0x454f98[_0x6450('0x42')]);return db[_0x6450('0x2c')][_0x6450('0x47')](_0x6bb036)['then'](handleEntityNotFound(_0xdd9015,null))['then'](respondWithResult(_0xdd9015,null))[_0x6450('0x48')](handleError(_0xdd9015,null));};exports[_0x6450('0x49')]=function(_0x27156e,_0x2efeab){return db[_0x6450('0x2c')][_0x6450('0x49')](_0x27156e['body'],{})['then'](respondWithResult(_0x2efeab,0xc9))[_0x6450('0x48')](handleError(_0x2efeab,null));};exports[_0x6450('0x25')]=function(_0x34a415,_0x213bd2){if(_0x34a415['body']['id']){delete _0x34a415[_0x6450('0x4a')]['id'];}return db[_0x6450('0x2c')][_0x6450('0x47')]({'where':{'id':_0x34a415[_0x6450('0x45')]['id']}})[_0x6450('0x27')](handleEntityNotFound(_0x213bd2,null))[_0x6450('0x27')](saveUpdates(_0x34a415['body'],null))[_0x6450('0x27')](respondWithResult(_0x213bd2,null))[_0x6450('0x48')](handleError(_0x213bd2,null));};exports[_0x6450('0x26')]=function(_0x2946f0,_0x2543bb){return db[_0x6450('0x2c')][_0x6450('0x47')]({'where':{'id':_0x2946f0[_0x6450('0x45')]['id']}})['then'](handleEntityNotFound(_0x2543bb,null))[_0x6450('0x27')](removeEntity(_0x2543bb,null))[_0x6450('0x48')](handleError(_0x2543bb,null));};
\ No newline at end of file
+var _0xe7d0=['create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','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','api','../../config/utils','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','rawAttributes','type','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ServicenowField','includeAll','include','findAll','rows','catch','params','length','find'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe7d0,0xe6));var _0x0e7d=function(_0x10e4db,_0x4639fe){_0x10e4db=_0x10e4db-0x0;var _0xfc7a7=_0xe7d0[_0x10e4db];return _0xfc7a7;};'use strict';var emlformat=require(_0x0e7d('0x0'));var rimraf=require(_0x0e7d('0x1'));var zipdir=require(_0x0e7d('0x2'));var jsonpatch=require(_0x0e7d('0x3'));var rp=require(_0x0e7d('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0e7d('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0e7d('0x6'));var fs=require('fs');var fs_extra=require(_0x0e7d('0x7'));var _=require(_0x0e7d('0x8'));var squel=require(_0x0e7d('0x9'));var crypto=require(_0x0e7d('0xa'));var jsforce=require(_0x0e7d('0xb'));var deskjs=require(_0x0e7d('0xc'));var toCsv=require(_0x0e7d('0xd'));var querystring=require(_0x0e7d('0xe'));var Papa=require(_0x0e7d('0xf'));var Redis=require(_0x0e7d('0x10'));var authService=require(_0x0e7d('0x11'));var qs=require(_0x0e7d('0x12'));var as=require(_0x0e7d('0x13'));var hardwareService=require(_0x0e7d('0x14'));var logger=require(_0x0e7d('0x15'))(_0x0e7d('0x16'));var utils=require(_0x0e7d('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0e7d('0x18'))['db'];function respondWithStatusCode(_0x157fd7,_0x32cad0){_0x32cad0=_0x32cad0||0xcc;return function(_0x45ca61){if(_0x45ca61){return _0x157fd7['sendStatus'](_0x32cad0);}return _0x157fd7[_0x0e7d('0x19')](_0x32cad0)[_0x0e7d('0x1a')]();};}function respondWithResult(_0x350ac6,_0x5f5dcd){_0x5f5dcd=_0x5f5dcd||0xc8;return function(_0x539cc6){if(_0x539cc6){return _0x350ac6[_0x0e7d('0x19')](_0x5f5dcd)[_0x0e7d('0x1b')](_0x539cc6);}};}function respondWithFilteredResult(_0x583915,_0xcd3fa8){return function(_0x3dcfe0){if(_0x3dcfe0){var _0x5413df=typeof _0xcd3fa8[_0x0e7d('0x1c')]===_0x0e7d('0x1d')&&typeof _0xcd3fa8[_0x0e7d('0x1e')]===_0x0e7d('0x1d');var _0x422020=_0x3dcfe0['count'];var _0x416028=_0x5413df?0x0:_0xcd3fa8[_0x0e7d('0x1c')];var _0x2d8f84=_0x5413df?_0x3dcfe0[_0x0e7d('0x1f')]:_0xcd3fa8[_0x0e7d('0x1c')]+_0xcd3fa8[_0x0e7d('0x1e')];var _0x1bc223;if(_0x2d8f84>=_0x422020){_0x2d8f84=_0x422020;_0x1bc223=0xc8;}else{_0x1bc223=0xce;}_0x583915[_0x0e7d('0x19')](_0x1bc223);return _0x583915[_0x0e7d('0x20')]('Content-Range',_0x416028+'-'+_0x2d8f84+'/'+_0x422020)['json'](_0x3dcfe0);}return null;};}function patchUpdates(_0x248229){return function(_0x28b4d2){try{jsonpatch[_0x0e7d('0x21')](_0x28b4d2,_0x248229,!![]);}catch(_0x355e02){return BPromise[_0x0e7d('0x22')](_0x355e02);}return _0x28b4d2[_0x0e7d('0x23')]();};}function saveUpdates(_0x38fbc3,_0x58e105){return function(_0x1d3b2e){if(_0x1d3b2e){return _0x1d3b2e[_0x0e7d('0x24')](_0x38fbc3)['then'](function(_0x5759e7){return _0x5759e7;});}return null;};}function removeEntity(_0x4efc2c,_0x479bbd){return function(_0x38b30d){if(_0x38b30d){return _0x38b30d[_0x0e7d('0x25')]()[_0x0e7d('0x26')](function(){_0x4efc2c[_0x0e7d('0x19')](0xcc)[_0x0e7d('0x1a')]();});}};}function handleEntityNotFound(_0x6499ae,_0x283b86){return function(_0x15a06d){if(!_0x15a06d){_0x6499ae[_0x0e7d('0x27')](0x194);}return _0x15a06d;};}function handleError(_0x433d50,_0x3471f2){_0x3471f2=_0x3471f2||0x1f4;return function(_0x48ace8){logger[_0x0e7d('0x28')](_0x48ace8[_0x0e7d('0x29')]);if(_0x48ace8[_0x0e7d('0x2a')]){delete _0x48ace8[_0x0e7d('0x2a')];}_0x433d50['status'](_0x3471f2)[_0x0e7d('0x2b')](_0x48ace8);};}exports[_0x0e7d('0x2c')]=function(_0x45ae7d,_0x1778e1){var _0x4be237={},_0xd015b1={},_0x10073d={'count':0x0,'rows':[]};var _0x387646=_[_0x0e7d('0x2d')](db['ServicenowField'][_0x0e7d('0x2e')],function(_0x494019){return{'name':_0x494019['fieldName'],'type':_0x494019[_0x0e7d('0x2f')]['key']};});_0xd015b1[_0x0e7d('0x30')]=_['map'](_0x387646,_0x0e7d('0x2a'));_0xd015b1['query']=_[_0x0e7d('0x31')](_0x45ae7d[_0x0e7d('0x32')]);_0xd015b1[_0x0e7d('0x33')]=_['intersection'](_0xd015b1['model'],_0xd015b1[_0x0e7d('0x32')]);_0x4be237[_0x0e7d('0x34')]=_[_0x0e7d('0x35')](_0xd015b1['model'],qs[_0x0e7d('0x36')](_0x45ae7d[_0x0e7d('0x32')][_0x0e7d('0x36')]));_0x4be237[_0x0e7d('0x34')]=_0x4be237[_0x0e7d('0x34')]['length']?_0x4be237['attributes']:_0xd015b1['model'];if(!_0x45ae7d['query'][_0x0e7d('0x37')](_0x0e7d('0x38'))){_0x4be237[_0x0e7d('0x1e')]=qs[_0x0e7d('0x1e')](_0x45ae7d[_0x0e7d('0x32')]['limit']);_0x4be237['offset']=qs[_0x0e7d('0x1c')](_0x45ae7d[_0x0e7d('0x32')][_0x0e7d('0x1c')]);}_0x4be237[_0x0e7d('0x39')]=qs[_0x0e7d('0x3a')](_0x45ae7d[_0x0e7d('0x32')]['sort']);_0x4be237[_0x0e7d('0x3b')]=qs[_0x0e7d('0x33')](_[_0x0e7d('0x3c')](_0x45ae7d[_0x0e7d('0x32')],_0xd015b1['filters']),_0x387646);if(_0x45ae7d[_0x0e7d('0x32')][_0x0e7d('0x3d')]){_0x4be237[_0x0e7d('0x3b')]=_[_0x0e7d('0x3e')](_0x4be237['where'],{'$or':_[_0x0e7d('0x2d')](_0x387646,function(_0x4feba4){if(_0x4feba4[_0x0e7d('0x2f')]!==_0x0e7d('0x3f')){var _0x5493b6={};_0x5493b6[_0x4feba4['name']]={'$like':'%'+_0x45ae7d['query'][_0x0e7d('0x3d')]+'%'};return _0x5493b6;}})});}_0x4be237=_['merge']({},_0x4be237,_0x45ae7d[_0x0e7d('0x40')]);var _0x2204db={'where':_0x4be237[_0x0e7d('0x3b')]};return db[_0x0e7d('0x41')][_0x0e7d('0x1f')](_0x2204db)[_0x0e7d('0x26')](function(_0x348458){_0x10073d[_0x0e7d('0x1f')]=_0x348458;if(_0x45ae7d[_0x0e7d('0x32')][_0x0e7d('0x42')]){_0x4be237[_0x0e7d('0x43')]=[{'all':!![]}];}return db[_0x0e7d('0x41')][_0x0e7d('0x44')](_0x4be237);})[_0x0e7d('0x26')](function(_0x245fc1){_0x10073d[_0x0e7d('0x45')]=_0x245fc1;return _0x10073d;})[_0x0e7d('0x26')](respondWithFilteredResult(_0x1778e1,_0x4be237))[_0x0e7d('0x46')](handleError(_0x1778e1,null));};exports['show']=function(_0x5978bb,_0x26d7de){var _0x1fabc6={'raw':!![],'where':{'id':_0x5978bb[_0x0e7d('0x47')]['id']}},_0x345c88={};_0x345c88[_0x0e7d('0x30')]=_['keys'](db['ServicenowField'][_0x0e7d('0x2e')]);_0x345c88[_0x0e7d('0x32')]=_[_0x0e7d('0x31')](_0x5978bb['query']);_0x345c88[_0x0e7d('0x33')]=_[_0x0e7d('0x35')](_0x345c88[_0x0e7d('0x30')],_0x345c88['query']);_0x1fabc6[_0x0e7d('0x34')]=_[_0x0e7d('0x35')](_0x345c88[_0x0e7d('0x30')],qs[_0x0e7d('0x36')](_0x5978bb[_0x0e7d('0x32')][_0x0e7d('0x36')]));_0x1fabc6[_0x0e7d('0x34')]=_0x1fabc6[_0x0e7d('0x34')][_0x0e7d('0x48')]?_0x1fabc6[_0x0e7d('0x34')]:_0x345c88[_0x0e7d('0x30')];if(_0x5978bb['query'][_0x0e7d('0x42')]){_0x1fabc6['include']=[{'all':!![]}];}_0x1fabc6=_[_0x0e7d('0x3e')]({},_0x1fabc6,_0x5978bb[_0x0e7d('0x40')]);return db['ServicenowField'][_0x0e7d('0x49')](_0x1fabc6)[_0x0e7d('0x26')](handleEntityNotFound(_0x26d7de,null))[_0x0e7d('0x26')](respondWithResult(_0x26d7de,null))[_0x0e7d('0x46')](handleError(_0x26d7de,null));};exports[_0x0e7d('0x4a')]=function(_0x214ac7,_0x2b4227){return db['ServicenowField']['create'](_0x214ac7[_0x0e7d('0x4b')],{})[_0x0e7d('0x26')](respondWithResult(_0x2b4227,0xc9))[_0x0e7d('0x46')](handleError(_0x2b4227,null));};exports[_0x0e7d('0x24')]=function(_0x264101,_0x347e5f){if(_0x264101[_0x0e7d('0x4b')]['id']){delete _0x264101[_0x0e7d('0x4b')]['id'];}return db[_0x0e7d('0x41')][_0x0e7d('0x49')]({'where':{'id':_0x264101[_0x0e7d('0x47')]['id']}})[_0x0e7d('0x26')](handleEntityNotFound(_0x347e5f,null))[_0x0e7d('0x26')](saveUpdates(_0x264101[_0x0e7d('0x4b')],null))[_0x0e7d('0x26')](respondWithResult(_0x347e5f,null))[_0x0e7d('0x46')](handleError(_0x347e5f,null));};exports[_0x0e7d('0x25')]=function(_0x4ecc77,_0x3991fa){return db[_0x0e7d('0x41')][_0x0e7d('0x49')]({'where':{'id':_0x4ecc77[_0x0e7d('0x47')]['id']}})['then'](handleEntityNotFound(_0x3991fa,null))['then'](removeEntity(_0x3991fa,null))[_0x0e7d('0x46')](handleError(_0x3991fa,null));};
\ No newline at end of file
index 9178d33..257595e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfed3=['./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x2e0851,_0x4bcf4c){var _0xb79e84=function(_0x5c4770){while(--_0x5c4770){_0x2e0851['push'](_0x2e0851['shift']());}};_0xb79e84(++_0x4bcf4c);}(_0xfed3,0x18f));var _0x3fed=function(_0x2d4421,_0x15a84f){_0x2d4421=_0x2d4421-0x0;var _0x2d3b01=_0xfed3[_0x2d4421];return _0x2d3b01;};'use strict';var _=require(_0x3fed('0x0'));var util=require('util');var logger=require(_0x3fed('0x1'))(_0x3fed('0x2'));var moment=require(_0x3fed('0x3'));var BPromise=require(_0x3fed('0x4'));var rp=require(_0x3fed('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3fed('0x6'));var attributes=require(_0x3fed('0x7'));module[_0x3fed('0x8')]=function(_0x3ea9cb,_0x5f0c85){return _0x3ea9cb[_0x3fed('0x9')](_0x3fed('0xa'),attributes,{'tableName':_0x3fed('0xb'),'paranoid':![],'indexes':[{'name':_0x3fed('0xc'),'fields':['idField',_0x3fed('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcfb=['int_servicenow_fields','servicenow_unique_index','FieldId','lodash','../../config/logger','api','moment','request-promise','path','rimraf','./intServicenowField.attributes','exports','define','ServicenowField'];(function(_0x503345,_0x56cce5){var _0x5a959c=function(_0x142aaa){while(--_0x142aaa){_0x503345['push'](_0x503345['shift']());}};_0x5a959c(++_0x56cce5);}(_0xfcfb,0x9d));var _0xbfcf=function(_0x52f1e6,_0xf70489){_0x52f1e6=_0x52f1e6-0x0;var _0x21f104=_0xfcfb[_0x52f1e6];return _0x21f104;};'use strict';var _=require(_0xbfcf('0x0'));var util=require('util');var logger=require(_0xbfcf('0x1'))(_0xbfcf('0x2'));var moment=require(_0xbfcf('0x3'));var BPromise=require('bluebird');var rp=require(_0xbfcf('0x4'));var fs=require('fs');var path=require(_0xbfcf('0x5'));var rimraf=require(_0xbfcf('0x6'));var config=require('../../config/environment');var attributes=require(_0xbfcf('0x7'));module[_0xbfcf('0x8')]=function(_0x17e3a0,_0x2f73b4){return _0x17e3a0[_0xbfcf('0x9')](_0xbfcf('0xa'),attributes,{'tableName':_0xbfcf('0xb'),'paranoid':![],'indexes':[{'name':_0xbfcf('0xc'),'fields':['idField',_0xbfcf('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c0b0ef0..c3e43ee 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(_0xf1ba70,_0x22937c){var _0x2263aa=function(_0x3bd5fd){while(--_0x3bd5fd){_0xf1ba70['push'](_0xf1ba70['shift']());}};_0x2263aa(++_0x22937c);}(_0x70e0,0x17b));var _0x070e=function(_0x5b676b,_0x4e6055){_0x5b676b=_0x5b676b-0x0;var _0x3ab0d5=_0x70e0[_0x5b676b];return _0x3ab0d5;};'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 _0x9ffd=['ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','ServicenowField,\x20%s,\x20%s','info','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','debug'];(function(_0x491ed3,_0x2eb2e8){var _0x329b50=function(_0x46ca66){while(--_0x46ca66){_0x491ed3['push'](_0x491ed3['shift']());}};_0x329b50(++_0x2eb2e8);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x215954,_0x35a620){_0x215954=_0x215954-0x0;var _0x3ffbd7=_0x9ffd[_0x215954];return _0x3ffbd7;};'use strict';var _=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var moment=require(_0xd9ff('0x2'));var BPromise=require('bluebird');var rs=require(_0xd9ff('0x3'));var fs=require('fs');var Redis=require(_0xd9ff('0x4'));var db=require(_0xd9ff('0x5'))['db'];var utils=require(_0xd9ff('0x6'));var logger=require('../../config/logger')(_0xd9ff('0x7'));var config=require(_0xd9ff('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd9ff('0x9')][_0xd9ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13ea8c,_0x270eb2,_0x45c60a){return new BPromise(function(_0x66282d,_0x13954e){return client[_0xd9ff('0xb')](_0x13ea8c,_0x45c60a)[_0xd9ff('0xc')](function(_0x58e728){logger['info']('ServicenowField,\x20%s,\x20%s',_0x270eb2,'request\x20sent');logger[_0xd9ff('0xd')](_0xd9ff('0xe'),_0x270eb2,_0xd9ff('0xf'),JSON[_0xd9ff('0x10')](_0x58e728));if(_0x58e728[_0xd9ff('0x11')]){if(_0x58e728[_0xd9ff('0x11')][_0xd9ff('0x12')]===0x1f4){logger[_0xd9ff('0x11')]('ServicenowField,\x20%s,\x20%s',_0x270eb2,_0x58e728['error'][_0xd9ff('0x13')]);return _0x13954e(_0x58e728[_0xd9ff('0x11')][_0xd9ff('0x13')]);}logger[_0xd9ff('0x11')](_0xd9ff('0x14'),_0x270eb2,_0x58e728['error'][_0xd9ff('0x13')]);return _0x66282d(_0x58e728[_0xd9ff('0x11')]['message']);}else{logger[_0xd9ff('0x15')]('ServicenowField,\x20%s,\x20%s',_0x270eb2,'request\x20sent');_0x66282d(_0x58e728['result']['message']);}})[_0xd9ff('0x16')](function(_0x4f9d6d){logger[_0xd9ff('0x11')](_0xd9ff('0x14'),_0x270eb2,_0x4f9d6d);_0x13954e(_0x4f9d6d);});});}
\ No newline at end of file
index 8ee01b8..a950bbf 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(_0xa45b0e,_0x5f5473){var _0x3f4afa=function(_0x5c57e0){while(--_0x5c57e0){_0xa45b0e['push'](_0xa45b0e['shift']());}};_0x3f4afa(++_0x5f5473);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+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(_0x33d0b1,_0x3c750e){var _0x2a56c4=function(_0x2fe04c){while(--_0x2fe04c){_0x33d0b1['push'](_0x33d0b1['shift']());}};_0x2a56c4(++_0x3c750e);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'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 74654ec..78f56ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x4b66dc,_0x3fb9f0){var _0x558da7=function(_0x5406f7){while(--_0x5406f7){_0x4b66dc['push'](_0x4b66dc['shift']());}};_0x558da7(++_0x3fb9f0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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(_0x4e0a71,_0x3bb245){var _0x1a77c0=function(_0x53b931){while(--_0x53b931){_0x4e0a71['push'](_0x4e0a71['shift']());}};_0x1a77c0(++_0x3bb245);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'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 0dec408..fe214e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdd7=['order','options','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','created_by','description','duration_hours','duration_minutes','parent_id','parent_name','direction','username','password','remoteUri','slice','substring','lastIndexOf','%s%s','/service/v4_1/rest.php','login','JSON','PLAIN','Invalid\x20Login','Password\x20Expired','POST','format','get_module_fields','stringify','Calls','values','remove','includes','label','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','SugarcrmAccount','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','create','body','params','find','getConfigurations','findOne','keys','SugarcrmConfiguration'];(function(_0x4f0f8c,_0x3564b2){var _0x341332=function(_0x4b96c0){while(--_0x4b96c0){_0x4f0f8c['push'](_0x4f0f8c['shift']());}};_0x341332(++_0x3564b2);}(_0xfdd7,0xa3));var _0x7fdd=function(_0x31f05e,_0x1dfa00){_0x31f05e=_0x31f05e-0x0;var _0x27ae4a=_0xfdd7[_0x31f05e];return _0x27ae4a;};'use strict';var emlformat=require(_0x7fdd('0x0'));var rimraf=require(_0x7fdd('0x1'));var zipdir=require(_0x7fdd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7fdd('0x3'));var moment=require(_0x7fdd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7fdd('0x5'));var util=require(_0x7fdd('0x6'));var path=require(_0x7fdd('0x7'));var sox=require(_0x7fdd('0x8'));var csv=require(_0x7fdd('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7fdd('0xa'));var _=require(_0x7fdd('0xb'));var squel=require(_0x7fdd('0xc'));var crypto=require('crypto');var jsforce=require(_0x7fdd('0xd'));var deskjs=require(_0x7fdd('0xe'));var toCsv=require(_0x7fdd('0x9'));var querystring=require(_0x7fdd('0xf'));var Papa=require(_0x7fdd('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7fdd('0x11'));var as=require(_0x7fdd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7fdd('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x7fdd('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x7fdd('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xddbda6,_0x17a502){_0x17a502=_0x17a502||0xcc;return function(_0x5142ef){if(_0x5142ef){return _0xddbda6[_0x7fdd('0x16')](_0x17a502);}return _0xddbda6[_0x7fdd('0x17')](_0x17a502)[_0x7fdd('0x18')]();};}function respondWithResult(_0x1f5dc7,_0xf6c166){_0xf6c166=_0xf6c166||0xc8;return function(_0x3cf7da){if(_0x3cf7da){return _0x1f5dc7[_0x7fdd('0x17')](_0xf6c166)[_0x7fdd('0x19')](_0x3cf7da);}};}function respondWithFilteredResult(_0x4db9cb,_0x552a8f){return function(_0x455ae5){if(_0x455ae5){var _0x50c7a2=typeof _0x552a8f[_0x7fdd('0x1a')]===_0x7fdd('0x1b')&&typeof _0x552a8f['limit']===_0x7fdd('0x1b');var _0x59d9c2=_0x455ae5[_0x7fdd('0x1c')];var _0x3f1d12=_0x50c7a2?0x0:_0x552a8f[_0x7fdd('0x1a')];var _0x316f11=_0x50c7a2?_0x455ae5[_0x7fdd('0x1c')]:_0x552a8f[_0x7fdd('0x1a')]+_0x552a8f[_0x7fdd('0x1d')];var _0x4b39d9;if(_0x316f11>=_0x59d9c2){_0x316f11=_0x59d9c2;_0x4b39d9=0xc8;}else{_0x4b39d9=0xce;}_0x4db9cb[_0x7fdd('0x17')](_0x4b39d9);return _0x4db9cb['set'](_0x7fdd('0x1e'),_0x3f1d12+'-'+_0x316f11+'/'+_0x59d9c2)[_0x7fdd('0x19')](_0x455ae5);}return null;};}function patchUpdates(_0xb369b5){return function(_0x424563){try{jsonpatch[_0x7fdd('0x1f')](_0x424563,_0xb369b5,!![]);}catch(_0x551e4d){return BPromise[_0x7fdd('0x20')](_0x551e4d);}return _0x424563[_0x7fdd('0x21')]();};}function saveUpdates(_0x19bfd6,_0x576cae){return function(_0x3ee708){if(_0x3ee708){return _0x3ee708[_0x7fdd('0x22')](_0x19bfd6)[_0x7fdd('0x23')](function(_0x3c2f9c){return _0x3c2f9c;});}return null;};}function removeEntity(_0x40fd43,_0x137b23){return function(_0xa9ee88){if(_0xa9ee88){return _0xa9ee88[_0x7fdd('0x24')]()[_0x7fdd('0x23')](function(){_0x40fd43[_0x7fdd('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d601f,_0x3b4fbc){return function(_0x526ac0){if(!_0x526ac0){_0x2d601f['sendStatus'](0x194);}return _0x526ac0;};}function handleError(_0x1ebcfb,_0x26f1bb){_0x26f1bb=_0x26f1bb||0x1f4;return function(_0xf6cbc5){logger['error'](_0xf6cbc5[_0x7fdd('0x25')]);if(_0xf6cbc5[_0x7fdd('0x26')]){delete _0xf6cbc5[_0x7fdd('0x26')];}_0x1ebcfb['status'](_0x26f1bb)[_0x7fdd('0x27')](_0xf6cbc5);};}exports[_0x7fdd('0x28')]=function(_0x4a1f52,_0x5f2b2b){var _0x1a3292={},_0x10d29d={},_0x109f02={'count':0x0,'rows':[]};var _0x4c8ecc=_[_0x7fdd('0x29')](db[_0x7fdd('0x2a')][_0x7fdd('0x2b')],function(_0x311bc7){return{'name':_0x311bc7['fieldName'],'type':_0x311bc7[_0x7fdd('0x2c')][_0x7fdd('0x2d')]};});_0x10d29d[_0x7fdd('0x2e')]=_[_0x7fdd('0x29')](_0x4c8ecc,_0x7fdd('0x26'));_0x10d29d[_0x7fdd('0x2f')]=_['keys'](_0x4a1f52[_0x7fdd('0x2f')]);_0x10d29d[_0x7fdd('0x30')]=_[_0x7fdd('0x31')](_0x10d29d[_0x7fdd('0x2e')],_0x10d29d[_0x7fdd('0x2f')]);_0x1a3292[_0x7fdd('0x32')]=_[_0x7fdd('0x31')](_0x10d29d[_0x7fdd('0x2e')],qs['fields'](_0x4a1f52[_0x7fdd('0x2f')][_0x7fdd('0x33')]));_0x1a3292[_0x7fdd('0x32')]=_0x1a3292[_0x7fdd('0x32')][_0x7fdd('0x34')]?_0x1a3292['attributes']:_0x10d29d[_0x7fdd('0x2e')];if(!_0x4a1f52['query'][_0x7fdd('0x35')](_0x7fdd('0x36'))){_0x1a3292['limit']=qs['limit'](_0x4a1f52[_0x7fdd('0x2f')][_0x7fdd('0x1d')]);_0x1a3292['offset']=qs['offset'](_0x4a1f52[_0x7fdd('0x2f')]['offset']);}_0x1a3292['order']=qs[_0x7fdd('0x37')](_0x4a1f52[_0x7fdd('0x2f')][_0x7fdd('0x37')]);_0x1a3292['where']=qs['filters'](_[_0x7fdd('0x38')](_0x4a1f52[_0x7fdd('0x2f')],_0x10d29d[_0x7fdd('0x30')]),_0x4c8ecc);if(_0x4a1f52[_0x7fdd('0x2f')][_0x7fdd('0x39')]){_0x1a3292[_0x7fdd('0x3a')]=_[_0x7fdd('0x3b')](_0x1a3292[_0x7fdd('0x3a')],{'$or':_[_0x7fdd('0x29')](_0x4c8ecc,function(_0x35d1f1){if(_0x35d1f1[_0x7fdd('0x2c')]!==_0x7fdd('0x3c')){var _0x5da227={};_0x5da227[_0x35d1f1['name']]={'$like':'%'+_0x4a1f52['query']['filter']+'%'};return _0x5da227;}})});}_0x1a3292=_['merge']({},_0x1a3292,_0x4a1f52['options']);var _0x227bbc={'where':_0x1a3292['where']};return db[_0x7fdd('0x2a')]['count'](_0x227bbc)[_0x7fdd('0x23')](function(_0x39c584){_0x109f02['count']=_0x39c584;if(_0x4a1f52[_0x7fdd('0x2f')][_0x7fdd('0x3d')]){_0x1a3292[_0x7fdd('0x3e')]=[{'all':!![]}];}return db[_0x7fdd('0x2a')][_0x7fdd('0x3f')](_0x1a3292);})['then'](function(_0x598698){_0x109f02[_0x7fdd('0x40')]=_0x598698;return _0x109f02;})[_0x7fdd('0x23')](respondWithFilteredResult(_0x5f2b2b,_0x1a3292))[_0x7fdd('0x41')](handleError(_0x5f2b2b,null));};exports[_0x7fdd('0x42')]=function(_0x50f5fa,_0xe17ba8){var _0x472653={'raw':![],'where':{'id':_0x50f5fa['params']['id']}},_0x6b1acd={};_0x6b1acd[_0x7fdd('0x2e')]=_['keys'](db['SugarcrmAccount'][_0x7fdd('0x2b')]);_0x6b1acd[_0x7fdd('0x2f')]=_['keys'](_0x50f5fa['query']);_0x6b1acd['filters']=_[_0x7fdd('0x31')](_0x6b1acd[_0x7fdd('0x2e')],_0x6b1acd['query']);_0x472653[_0x7fdd('0x32')]=_['intersection'](_0x6b1acd[_0x7fdd('0x2e')],qs[_0x7fdd('0x33')](_0x50f5fa['query'][_0x7fdd('0x33')]));_0x472653[_0x7fdd('0x32')]=_0x472653['attributes']['length']?_0x472653[_0x7fdd('0x32')]:_0x6b1acd[_0x7fdd('0x2e')];if(_0x50f5fa['query']['includeAll']){_0x472653[_0x7fdd('0x3e')]=[{'all':!![]}];}_0x472653=_['merge']({},_0x472653,_0x50f5fa['options']);return db[_0x7fdd('0x2a')]['find'](_0x472653)[_0x7fdd('0x23')](handleEntityNotFound(_0xe17ba8,null))[_0x7fdd('0x23')](respondWithResult(_0xe17ba8,null))[_0x7fdd('0x41')](handleError(_0xe17ba8,null));};exports[_0x7fdd('0x43')]=function(_0x4f81fc,_0x17fe4a){return db['SugarcrmAccount'][_0x7fdd('0x43')](_0x4f81fc[_0x7fdd('0x44')],{})[_0x7fdd('0x23')](respondWithResult(_0x17fe4a,0xc9))[_0x7fdd('0x41')](handleError(_0x17fe4a,null));};exports[_0x7fdd('0x22')]=function(_0x2f061d,_0x2bc9be){if(_0x2f061d[_0x7fdd('0x44')]['id']){delete _0x2f061d['body']['id'];}return db[_0x7fdd('0x2a')]['find']({'where':{'id':_0x2f061d[_0x7fdd('0x45')]['id']}})[_0x7fdd('0x23')](handleEntityNotFound(_0x2bc9be,null))[_0x7fdd('0x23')](saveUpdates(_0x2f061d[_0x7fdd('0x44')],null))[_0x7fdd('0x23')](respondWithResult(_0x2bc9be,null))[_0x7fdd('0x41')](handleError(_0x2bc9be,null));};exports['destroy']=function(_0x25d9da,_0xd4b65){return db[_0x7fdd('0x2a')][_0x7fdd('0x46')]({'where':{'id':_0x25d9da[_0x7fdd('0x45')]['id']}})[_0x7fdd('0x23')](handleEntityNotFound(_0xd4b65,null))[_0x7fdd('0x23')](removeEntity(_0xd4b65,null))[_0x7fdd('0x41')](handleError(_0xd4b65,null));};exports[_0x7fdd('0x47')]=function(_0xac7c59,_0x17a4d7,_0x5579ef){var _0xb5b71={};var _0xd0fe4e={};var _0x3240f2;var _0x20c062;return db[_0x7fdd('0x2a')][_0x7fdd('0x48')]({'where':{'id':_0xac7c59[_0x7fdd('0x45')]['id']}})['then'](handleEntityNotFound(_0x17a4d7,null))['then'](function(_0x4af316){if(_0x4af316){_0x3240f2=_0x4af316;_0xd0fe4e[_0x7fdd('0x2e')]=_[_0x7fdd('0x49')](db[_0x7fdd('0x4a')][_0x7fdd('0x2b')]);_0xd0fe4e[_0x7fdd('0x2f')]=_[_0x7fdd('0x49')](_0xac7c59['query']);_0xd0fe4e['filters']=_[_0x7fdd('0x31')](_0xd0fe4e[_0x7fdd('0x2e')],_0xd0fe4e['query']);_0xb5b71['attributes']=_[_0x7fdd('0x31')](_0xd0fe4e[_0x7fdd('0x2e')],qs[_0x7fdd('0x33')](_0xac7c59[_0x7fdd('0x2f')]['fields']));_0xb5b71['attributes']=_0xb5b71['attributes'][_0x7fdd('0x34')]?_0xb5b71[_0x7fdd('0x32')]:_0xd0fe4e[_0x7fdd('0x2e')];_0xb5b71[_0x7fdd('0x4b')]=qs[_0x7fdd('0x37')](_0xac7c59[_0x7fdd('0x2f')][_0x7fdd('0x37')]);_0xb5b71[_0x7fdd('0x3a')]=qs[_0x7fdd('0x30')](_[_0x7fdd('0x38')](_0xac7c59[_0x7fdd('0x2f')],_0xd0fe4e[_0x7fdd('0x30')]));if(_0xac7c59['query'][_0x7fdd('0x39')]){_0xb5b71['where']=_['merge'](_0xb5b71[_0x7fdd('0x3a')],{'$or':_[_0x7fdd('0x29')](_0xb5b71['attributes'],function(_0x48df25){var _0x43d76d={};_0x43d76d[_0x48df25]={'$like':'%'+_0xac7c59[_0x7fdd('0x2f')]['filter']+'%'};return _0x43d76d;})});}_0xb5b71=_[_0x7fdd('0x3b')]({},_0xb5b71,_0xac7c59[_0x7fdd('0x4c')]);return _0x3240f2[_0x7fdd('0x47')](_0xb5b71);}})[_0x7fdd('0x23')](function(_0x57817b){if(_0x57817b){_0x20c062=_0x57817b[_0x7fdd('0x34')];if(!_0xac7c59[_0x7fdd('0x2f')][_0x7fdd('0x35')](_0x7fdd('0x36'))){_0xb5b71[_0x7fdd('0x1d')]=qs[_0x7fdd('0x1d')](_0xac7c59[_0x7fdd('0x2f')]['limit']);_0xb5b71['offset']=qs[_0x7fdd('0x1a')](_0xac7c59[_0x7fdd('0x2f')][_0x7fdd('0x1a')]);}return _0x3240f2[_0x7fdd('0x47')](_0xb5b71);}})[_0x7fdd('0x23')](function(_0x17b88d){if(_0x17b88d){return _0x17b88d?{'count':_0x20c062,'rows':_0x17b88d}:null;}})[_0x7fdd('0x23')](respondWithResult(_0x17a4d7,null))[_0x7fdd('0x41')](handleError(_0x17a4d7,null));};exports[_0x7fdd('0x4d')]=function(_0x1eef6e,_0x4739d9,_0x439fe9){if(_0x1eef6e['body']['id']){delete _0x1eef6e[_0x7fdd('0x44')]['id'];}return db[_0x7fdd('0x2a')][_0x7fdd('0x48')]({'where':{'id':_0x1eef6e[_0x7fdd('0x45')]['id']}})[_0x7fdd('0x23')](handleEntityNotFound(_0x4739d9,null))[_0x7fdd('0x23')](function(_0x3339ca){if(_0x3339ca){_0x1eef6e[_0x7fdd('0x44')][_0x7fdd('0x4e')]=_0x3339ca['id'];_0x1eef6e[_0x7fdd('0x44')][_0x7fdd('0x4f')]=integrations['getSubjects'](_0x1eef6e[_0x7fdd('0x44')][_0x7fdd('0x50')],_0x1eef6e[_0x7fdd('0x44')][_0x7fdd('0x2c')]);_0x1eef6e['body'][_0x7fdd('0x51')]=integrations[_0x7fdd('0x52')](_0x1eef6e[_0x7fdd('0x44')][_0x7fdd('0x50')],_0x1eef6e[_0x7fdd('0x44')][_0x7fdd('0x2c')]);return db['SugarcrmConfiguration'][_0x7fdd('0x43')](_0x1eef6e[_0x7fdd('0x44')],{'include':[{'model':db[_0x7fdd('0x53')],'as':_0x7fdd('0x4f')},{'model':db['SugarcrmField'],'as':_0x7fdd('0x51')}]});}return null;})[_0x7fdd('0x23')](respondWithResult(_0x4739d9,null))[_0x7fdd('0x41')](handleError(_0x4739d9,null));};exports[_0x7fdd('0x54')]=function(_0x3e6dfb,_0x3099cc,_0x21eb6f){var _0x163e07='';var _0x463c41=['id',_0x7fdd('0x26'),'assigned_user_id',_0x7fdd('0x55'),_0x7fdd('0x56'),'date_start',_0x7fdd('0x57'),_0x7fdd('0x58'),_0x7fdd('0x59'),'parent_type',_0x7fdd('0x5a'),_0x7fdd('0x5b')];return db[_0x7fdd('0x2a')]['findOne']({'where':{'id':_0x3e6dfb[_0x7fdd('0x45')]['id']},'attributes':['id',_0x7fdd('0x5c'),_0x7fdd('0x5d'),_0x7fdd('0x5e')]})[_0x7fdd('0x23')](handleEntityNotFound(_0x3099cc,null))[_0x7fdd('0x23')](function(_0x502027){if(_0x502027){_0x163e07=_0x502027[_0x7fdd('0x5e')];var _0x4cc57d=_0x163e07[_0x7fdd('0x5f')](-0x1);if(_0x4cc57d==='/'){_0x163e07=_0x163e07[_0x7fdd('0x60')](0x0,_0x163e07[_0x7fdd('0x61')](_0x4cc57d));}return rp({'method':'POST','uri':util['format'](_0x7fdd('0x62'),_0x163e07,_0x7fdd('0x63')),'json':!![],'form':{'method':_0x7fdd('0x64'),'input_type':_0x7fdd('0x65'),'response_type':'JSON','rest_data':JSON['stringify']({'user_auth':{'user_name':_0x502027[_0x7fdd('0x5c')],'password':_0x502027[_0x7fdd('0x5d')],'encryption':_0x7fdd('0x66')},'application':'xCALLY\x20Motion\x20Integration'})}});}})['then'](function(_0x24a120){if(_0x24a120&&_0x24a120['name']!==_0x7fdd('0x67')&&_0x24a120['name']!==_0x7fdd('0x68')){return rp({'method':_0x7fdd('0x69'),'uri':util[_0x7fdd('0x6a')]('%s%s',_0x163e07,_0x7fdd('0x63')),'json':!![],'form':{'method':_0x7fdd('0x6b'),'input_type':_0x7fdd('0x65'),'response_type':_0x7fdd('0x65'),'rest_data':JSON[_0x7fdd('0x6c')]({'session':_0x24a120['id'],'module_name':_0x7fdd('0x6d')})}})[_0x7fdd('0x23')](function(_0x2181ca){if(_0x2181ca){var _0x4fdda1=_[_0x7fdd('0x6e')](_0x2181ca['module_fields']);_[_0x7fdd('0x6f')](_0x4fdda1,function(_0x2dcb15){return _0x463c41[_0x7fdd('0x70')](_0x2dcb15[_0x7fdd('0x26')]);});return{'count':_0x4fdda1[_0x7fdd('0x34')],'rows':_[_0x7fdd('0x29')](_0x4fdda1,function(_0x4d9e48){return{'id':_0x4d9e48[_0x7fdd('0x26')],'name':_0x4d9e48[_0x7fdd('0x71')],'custom':_['endsWith'](_0x4d9e48[_0x7fdd('0x26')],'_c')?!![]:![],'options':_0x4d9e48[_0x7fdd('0x4c')]?_[_0x7fdd('0x29')](_[_0x7fdd('0x6e')](_0x4d9e48['options']),function(_0x3b2069){return{'name':_0x3b2069['value'],'value':_0x3b2069[_0x7fdd('0x26')]};}):[]};})};}})[_0x7fdd('0x23')](respondWithResult(_0x3099cc,null))[_0x7fdd('0x41')](function(_0xaa2e1f){var _0x4c0973=_0x3e6dfb[_0x7fdd('0x2f')][_0x7fdd('0x72')]?0x1f4:_0xaa2e1f[_0x7fdd('0x73')]||0x1f4;logger[_0x7fdd('0x74')](_0x7fdd('0x75'),_0x7fdd('0x54'),_0x4c0973,JSON[_0x7fdd('0x6c')](_0xaa2e1f));delete _0xaa2e1f[_0x7fdd('0x26')];if(_0x4c0973===0x191){_0x4c0973=0x190;}_0x3099cc['status'](_0x4c0973)[_0x7fdd('0x27')](_0x3e6dfb[_0x7fdd('0x2f')][_0x7fdd('0x72')]?{'message':_0x7fdd('0x76'),'statusCode':_0xaa2e1f[_0x7fdd('0x73')]}:_0xaa2e1f);});}else{var _0x1481db=0x1f4;_0x3099cc[_0x7fdd('0x17')](_0x1481db)[_0x7fdd('0x27')]({'message':_0x7fdd('0x76'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x0227=['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','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','send','map','SugarcrmAccount','rawAttributes','fieldName','type','key','model','name','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','catch','create','body','getConfigurations','SugarcrmConfiguration','length','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','duration_minutes','parent_id','parent_type','parent_name','username','password','remoteUri','slice','substring','lastIndexOf','POST','%s%s','/service/v4_1/rest.php','login','JSON','stringify','PLAIN','Password\x20Expired','format','get_module_fields','Calls','values','remove','includes','label','endsWith','value','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x0227,0x16a));var _0x7022=function(_0x12c55f,_0x44a34e){_0x12c55f=_0x12c55f-0x0;var _0x3967a0=_0x0227[_0x12c55f];return _0x3967a0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7022('0x0'));var zipdir=require(_0x7022('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7022('0x2'));var moment=require(_0x7022('0x3'));var BPromise=require(_0x7022('0x4'));var Mustache=require(_0x7022('0x5'));var util=require(_0x7022('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7022('0x7'));var _=require(_0x7022('0x8'));var squel=require(_0x7022('0x9'));var crypto=require(_0x7022('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x7022('0xb'));var toCsv=require('to-csv');var querystring=require(_0x7022('0xc'));var Papa=require(_0x7022('0xd'));var Redis=require(_0x7022('0xe'));var authService=require(_0x7022('0xf'));var qs=require(_0x7022('0x10'));var as=require(_0x7022('0x11'));var hardwareService=require(_0x7022('0x12'));var logger=require(_0x7022('0x13'))('api');var utils=require(_0x7022('0x14'));var config=require(_0x7022('0x15'));var licenseUtil=require(_0x7022('0x16'));var db=require(_0x7022('0x17'))['db'];var integrations=require(_0x7022('0x18'));function respondWithStatusCode(_0x4722f7,_0xb9413f){_0xb9413f=_0xb9413f||0xcc;return function(_0x4428c5){if(_0x4428c5){return _0x4722f7[_0x7022('0x19')](_0xb9413f);}return _0x4722f7[_0x7022('0x1a')](_0xb9413f)[_0x7022('0x1b')]();};}function respondWithResult(_0x542374,_0x318bde){_0x318bde=_0x318bde||0xc8;return function(_0x167528){if(_0x167528){return _0x542374[_0x7022('0x1a')](_0x318bde)['json'](_0x167528);}};}function respondWithFilteredResult(_0x4ff935,_0x5781a8){return function(_0x14467c){if(_0x14467c){var _0x3da8b2=typeof _0x5781a8['offset']===_0x7022('0x1c')&&typeof _0x5781a8['limit']===_0x7022('0x1c');var _0x236052=_0x14467c[_0x7022('0x1d')];var _0x4d6766=_0x3da8b2?0x0:_0x5781a8[_0x7022('0x1e')];var _0x5bb7ca=_0x3da8b2?_0x14467c[_0x7022('0x1d')]:_0x5781a8[_0x7022('0x1e')]+_0x5781a8[_0x7022('0x1f')];var _0x37fe03;if(_0x5bb7ca>=_0x236052){_0x5bb7ca=_0x236052;_0x37fe03=0xc8;}else{_0x37fe03=0xce;}_0x4ff935[_0x7022('0x1a')](_0x37fe03);return _0x4ff935[_0x7022('0x20')](_0x7022('0x21'),_0x4d6766+'-'+_0x5bb7ca+'/'+_0x236052)[_0x7022('0x22')](_0x14467c);}return null;};}function patchUpdates(_0x189eb5){return function(_0x51a283){try{jsonpatch[_0x7022('0x23')](_0x51a283,_0x189eb5,!![]);}catch(_0x1665fe){return BPromise[_0x7022('0x24')](_0x1665fe);}return _0x51a283[_0x7022('0x25')]();};}function saveUpdates(_0x30340f,_0x55e4c9){return function(_0x138f5e){if(_0x138f5e){return _0x138f5e[_0x7022('0x26')](_0x30340f)[_0x7022('0x27')](function(_0x20f9dd){return _0x20f9dd;});}return null;};}function removeEntity(_0x38f7f3,_0x4a30c5){return function(_0x33ea85){if(_0x33ea85){return _0x33ea85[_0x7022('0x28')]()[_0x7022('0x27')](function(){_0x38f7f3[_0x7022('0x1a')](0xcc)[_0x7022('0x1b')]();});}};}function handleEntityNotFound(_0x561f8d,_0x170c4b){return function(_0xfd70c3){if(!_0xfd70c3){_0x561f8d['sendStatus'](0x194);}return _0xfd70c3;};}function handleError(_0x2c6b58,_0x5d757a){_0x5d757a=_0x5d757a||0x1f4;return function(_0x1a8fa1){logger[_0x7022('0x29')](_0x1a8fa1[_0x7022('0x2a')]);if(_0x1a8fa1['name']){delete _0x1a8fa1['name'];}_0x2c6b58[_0x7022('0x1a')](_0x5d757a)[_0x7022('0x2b')](_0x1a8fa1);};}exports['index']=function(_0x2d39d8,_0x572c03){var _0x2a0462={},_0x2bdbba={},_0x35f666={'count':0x0,'rows':[]};var _0x2ef7ee=_[_0x7022('0x2c')](db[_0x7022('0x2d')][_0x7022('0x2e')],function(_0x5ded79){return{'name':_0x5ded79[_0x7022('0x2f')],'type':_0x5ded79[_0x7022('0x30')][_0x7022('0x31')]};});_0x2bdbba[_0x7022('0x32')]=_[_0x7022('0x2c')](_0x2ef7ee,_0x7022('0x33'));_0x2bdbba['query']=_[_0x7022('0x34')](_0x2d39d8[_0x7022('0x35')]);_0x2bdbba[_0x7022('0x36')]=_[_0x7022('0x37')](_0x2bdbba['model'],_0x2bdbba[_0x7022('0x35')]);_0x2a0462[_0x7022('0x38')]=_[_0x7022('0x37')](_0x2bdbba[_0x7022('0x32')],qs['fields'](_0x2d39d8[_0x7022('0x35')][_0x7022('0x39')]));_0x2a0462['attributes']=_0x2a0462['attributes']['length']?_0x2a0462['attributes']:_0x2bdbba[_0x7022('0x32')];if(!_0x2d39d8[_0x7022('0x35')][_0x7022('0x3a')](_0x7022('0x3b'))){_0x2a0462[_0x7022('0x1f')]=qs[_0x7022('0x1f')](_0x2d39d8[_0x7022('0x35')]['limit']);_0x2a0462[_0x7022('0x1e')]=qs[_0x7022('0x1e')](_0x2d39d8[_0x7022('0x35')]['offset']);}_0x2a0462[_0x7022('0x3c')]=qs['sort'](_0x2d39d8[_0x7022('0x35')][_0x7022('0x3d')]);_0x2a0462[_0x7022('0x3e')]=qs[_0x7022('0x36')](_[_0x7022('0x3f')](_0x2d39d8[_0x7022('0x35')],_0x2bdbba['filters']),_0x2ef7ee);if(_0x2d39d8['query'][_0x7022('0x40')]){_0x2a0462[_0x7022('0x3e')]=_[_0x7022('0x41')](_0x2a0462['where'],{'$or':_['map'](_0x2ef7ee,function(_0x171583){if(_0x171583[_0x7022('0x30')]!==_0x7022('0x42')){var _0x4a8cda={};_0x4a8cda[_0x171583[_0x7022('0x33')]]={'$like':'%'+_0x2d39d8[_0x7022('0x35')][_0x7022('0x40')]+'%'};return _0x4a8cda;}})});}_0x2a0462=_['merge']({},_0x2a0462,_0x2d39d8[_0x7022('0x43')]);var _0x16f9e4={'where':_0x2a0462[_0x7022('0x3e')]};return db[_0x7022('0x2d')][_0x7022('0x1d')](_0x16f9e4)[_0x7022('0x27')](function(_0x284317){_0x35f666[_0x7022('0x1d')]=_0x284317;if(_0x2d39d8[_0x7022('0x35')][_0x7022('0x44')]){_0x2a0462[_0x7022('0x45')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0x7022('0x46')](_0x2a0462);})[_0x7022('0x27')](function(_0x3fcdda){_0x35f666['rows']=_0x3fcdda;return _0x35f666;})['then'](respondWithFilteredResult(_0x572c03,_0x2a0462))['catch'](handleError(_0x572c03,null));};exports[_0x7022('0x47')]=function(_0x5f319e,_0x258c0c){var _0x4845ec={'raw':![],'where':{'id':_0x5f319e[_0x7022('0x48')]['id']}},_0x2b873d={};_0x2b873d['model']=_[_0x7022('0x34')](db[_0x7022('0x2d')][_0x7022('0x2e')]);_0x2b873d[_0x7022('0x35')]=_[_0x7022('0x34')](_0x5f319e[_0x7022('0x35')]);_0x2b873d[_0x7022('0x36')]=_[_0x7022('0x37')](_0x2b873d['model'],_0x2b873d['query']);_0x4845ec[_0x7022('0x38')]=_[_0x7022('0x37')](_0x2b873d[_0x7022('0x32')],qs[_0x7022('0x39')](_0x5f319e[_0x7022('0x35')][_0x7022('0x39')]));_0x4845ec[_0x7022('0x38')]=_0x4845ec[_0x7022('0x38')]['length']?_0x4845ec[_0x7022('0x38')]:_0x2b873d[_0x7022('0x32')];if(_0x5f319e[_0x7022('0x35')][_0x7022('0x44')]){_0x4845ec[_0x7022('0x45')]=[{'all':!![]}];}_0x4845ec=_['merge']({},_0x4845ec,_0x5f319e[_0x7022('0x43')]);return db['SugarcrmAccount'][_0x7022('0x49')](_0x4845ec)[_0x7022('0x27')](handleEntityNotFound(_0x258c0c,null))[_0x7022('0x27')](respondWithResult(_0x258c0c,null))[_0x7022('0x4a')](handleError(_0x258c0c,null));};exports['create']=function(_0x485980,_0x4aeaf9){return db[_0x7022('0x2d')][_0x7022('0x4b')](_0x485980[_0x7022('0x4c')],{})['then'](respondWithResult(_0x4aeaf9,0xc9))['catch'](handleError(_0x4aeaf9,null));};exports['update']=function(_0x2f703b,_0x3fef23){if(_0x2f703b[_0x7022('0x4c')]['id']){delete _0x2f703b[_0x7022('0x4c')]['id'];}return db[_0x7022('0x2d')]['find']({'where':{'id':_0x2f703b['params']['id']}})[_0x7022('0x27')](handleEntityNotFound(_0x3fef23,null))[_0x7022('0x27')](saveUpdates(_0x2f703b[_0x7022('0x4c')],null))[_0x7022('0x27')](respondWithResult(_0x3fef23,null))[_0x7022('0x4a')](handleError(_0x3fef23,null));};exports[_0x7022('0x28')]=function(_0x2d06df,_0x32c9d7){return db[_0x7022('0x2d')][_0x7022('0x49')]({'where':{'id':_0x2d06df[_0x7022('0x48')]['id']}})['then'](handleEntityNotFound(_0x32c9d7,null))[_0x7022('0x27')](removeEntity(_0x32c9d7,null))[_0x7022('0x4a')](handleError(_0x32c9d7,null));};exports[_0x7022('0x4d')]=function(_0x3a1596,_0x375584,_0x521c3d){var _0x139430={};var _0x16de9a={};var _0x27f6a6;var _0x482478;return db['SugarcrmAccount']['findOne']({'where':{'id':_0x3a1596[_0x7022('0x48')]['id']}})[_0x7022('0x27')](handleEntityNotFound(_0x375584,null))['then'](function(_0x49447f){if(_0x49447f){_0x27f6a6=_0x49447f;_0x16de9a[_0x7022('0x32')]=_[_0x7022('0x34')](db[_0x7022('0x4e')][_0x7022('0x2e')]);_0x16de9a[_0x7022('0x35')]=_['keys'](_0x3a1596[_0x7022('0x35')]);_0x16de9a[_0x7022('0x36')]=_[_0x7022('0x37')](_0x16de9a[_0x7022('0x32')],_0x16de9a[_0x7022('0x35')]);_0x139430[_0x7022('0x38')]=_[_0x7022('0x37')](_0x16de9a[_0x7022('0x32')],qs[_0x7022('0x39')](_0x3a1596[_0x7022('0x35')][_0x7022('0x39')]));_0x139430[_0x7022('0x38')]=_0x139430[_0x7022('0x38')][_0x7022('0x4f')]?_0x139430[_0x7022('0x38')]:_0x16de9a[_0x7022('0x32')];_0x139430[_0x7022('0x3c')]=qs[_0x7022('0x3d')](_0x3a1596[_0x7022('0x35')][_0x7022('0x3d')]);_0x139430['where']=qs['filters'](_[_0x7022('0x3f')](_0x3a1596[_0x7022('0x35')],_0x16de9a['filters']));if(_0x3a1596[_0x7022('0x35')]['filter']){_0x139430[_0x7022('0x3e')]=_['merge'](_0x139430['where'],{'$or':_[_0x7022('0x2c')](_0x139430['attributes'],function(_0x5c7283){var _0x341765={};_0x341765[_0x5c7283]={'$like':'%'+_0x3a1596['query']['filter']+'%'};return _0x341765;})});}_0x139430=_[_0x7022('0x41')]({},_0x139430,_0x3a1596[_0x7022('0x43')]);return _0x27f6a6[_0x7022('0x4d')](_0x139430);}})[_0x7022('0x27')](function(_0xa34f30){if(_0xa34f30){_0x482478=_0xa34f30['length'];if(!_0x3a1596[_0x7022('0x35')][_0x7022('0x3a')]('nolimit')){_0x139430[_0x7022('0x1f')]=qs[_0x7022('0x1f')](_0x3a1596[_0x7022('0x35')][_0x7022('0x1f')]);_0x139430[_0x7022('0x1e')]=qs[_0x7022('0x1e')](_0x3a1596[_0x7022('0x35')]['offset']);}return _0x27f6a6[_0x7022('0x4d')](_0x139430);}})[_0x7022('0x27')](function(_0x3b4f10){if(_0x3b4f10){return _0x3b4f10?{'count':_0x482478,'rows':_0x3b4f10}:null;}})[_0x7022('0x27')](respondWithResult(_0x375584,null))['catch'](handleError(_0x375584,null));};exports[_0x7022('0x50')]=function(_0x547cf4,_0x42bdf2,_0xd4aef4){if(_0x547cf4['body']['id']){delete _0x547cf4[_0x7022('0x4c')]['id'];}return db['SugarcrmAccount'][_0x7022('0x51')]({'where':{'id':_0x547cf4[_0x7022('0x48')]['id']}})['then'](handleEntityNotFound(_0x42bdf2,null))[_0x7022('0x27')](function(_0x3f519c){if(_0x3f519c){_0x547cf4[_0x7022('0x4c')][_0x7022('0x52')]=_0x3f519c['id'];_0x547cf4[_0x7022('0x4c')][_0x7022('0x53')]=integrations[_0x7022('0x54')](_0x547cf4[_0x7022('0x4c')][_0x7022('0x55')],_0x547cf4['body'][_0x7022('0x30')]);_0x547cf4[_0x7022('0x4c')]['Descriptions']=integrations['getDescriptions'](_0x547cf4[_0x7022('0x4c')]['channel'],_0x547cf4[_0x7022('0x4c')][_0x7022('0x30')]);return db[_0x7022('0x4e')]['create'](_0x547cf4[_0x7022('0x4c')],{'include':[{'model':db[_0x7022('0x56')],'as':'Subjects'},{'model':db[_0x7022('0x56')],'as':'Descriptions'}]});}return null;})[_0x7022('0x27')](respondWithResult(_0x42bdf2,null))['catch'](handleError(_0x42bdf2,null));};exports[_0x7022('0x57')]=function(_0x322dfb,_0x44d987,_0x904f44){var _0x565d86='';var _0x4bc96b=['id',_0x7022('0x33'),_0x7022('0x58'),_0x7022('0x59'),_0x7022('0x5a'),_0x7022('0x5b'),'duration_hours',_0x7022('0x5c'),_0x7022('0x5d'),_0x7022('0x5e'),_0x7022('0x5f'),'direction'];return db[_0x7022('0x2d')][_0x7022('0x51')]({'where':{'id':_0x322dfb[_0x7022('0x48')]['id']},'attributes':['id',_0x7022('0x60'),_0x7022('0x61'),_0x7022('0x62')]})[_0x7022('0x27')](handleEntityNotFound(_0x44d987,null))[_0x7022('0x27')](function(_0x3ad061){if(_0x3ad061){_0x565d86=_0x3ad061[_0x7022('0x62')];var _0x20436a=_0x565d86[_0x7022('0x63')](-0x1);if(_0x20436a==='/'){_0x565d86=_0x565d86[_0x7022('0x64')](0x0,_0x565d86[_0x7022('0x65')](_0x20436a));}return rp({'method':_0x7022('0x66'),'uri':util['format'](_0x7022('0x67'),_0x565d86,_0x7022('0x68')),'json':!![],'form':{'method':_0x7022('0x69'),'input_type':_0x7022('0x6a'),'response_type':_0x7022('0x6a'),'rest_data':JSON[_0x7022('0x6b')]({'user_auth':{'user_name':_0x3ad061[_0x7022('0x60')],'password':_0x3ad061['password'],'encryption':_0x7022('0x6c')},'application':'xCALLY\x20Motion\x20Integration'})}});}})['then'](function(_0x1ce8e9){if(_0x1ce8e9&&_0x1ce8e9[_0x7022('0x33')]!=='Invalid\x20Login'&&_0x1ce8e9[_0x7022('0x33')]!==_0x7022('0x6d')){return rp({'method':_0x7022('0x66'),'uri':util[_0x7022('0x6e')]('%s%s',_0x565d86,_0x7022('0x68')),'json':!![],'form':{'method':_0x7022('0x6f'),'input_type':_0x7022('0x6a'),'response_type':_0x7022('0x6a'),'rest_data':JSON[_0x7022('0x6b')]({'session':_0x1ce8e9['id'],'module_name':_0x7022('0x70')})}})[_0x7022('0x27')](function(_0x51f7f2){if(_0x51f7f2){var _0x27aef8=_[_0x7022('0x71')](_0x51f7f2['module_fields']);_[_0x7022('0x72')](_0x27aef8,function(_0xc03b58){return _0x4bc96b[_0x7022('0x73')](_0xc03b58[_0x7022('0x33')]);});return{'count':_0x27aef8[_0x7022('0x4f')],'rows':_[_0x7022('0x2c')](_0x27aef8,function(_0x416964){return{'id':_0x416964['name'],'name':_0x416964[_0x7022('0x74')],'custom':_[_0x7022('0x75')](_0x416964[_0x7022('0x33')],'_c')?!![]:![],'options':_0x416964['options']?_[_0x7022('0x2c')](_[_0x7022('0x71')](_0x416964[_0x7022('0x43')]),function(_0x127420){return{'name':_0x127420[_0x7022('0x76')],'value':_0x127420['name']};}):[]};})};}})[_0x7022('0x27')](respondWithResult(_0x44d987,null))[_0x7022('0x4a')](function(_0x557f52){var _0xfc51d4=_0x322dfb[_0x7022('0x35')][_0x7022('0x77')]?0x1f4:_0x557f52['statusCode']||0x1f4;logger[_0x7022('0x29')](_0x7022('0x78'),_0x7022('0x57'),_0xfc51d4,JSON[_0x7022('0x6b')](_0x557f52));delete _0x557f52[_0x7022('0x33')];if(_0xfc51d4===0x191){_0xfc51d4=0x190;}_0x44d987[_0x7022('0x1a')](_0xfc51d4)[_0x7022('0x2b')](_0x322dfb[_0x7022('0x35')][_0x7022('0x77')]?{'message':_0x7022('0x79'),'statusCode':_0x557f52[_0x7022('0x7a')]}:_0x557f52);});}else{var _0x474e77=0x1f4;_0x44d987['status'](_0x474e77)['send']({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index 65e7e3c..214008d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1ad=['../../config/logger','api','moment','bluebird','request-promise','../../components/integrations/configuration','exports','define','SugarcrmAccount','lodash','util'];(function(_0x36c166,_0x2ce3b0){var _0x22b6d2=function(_0x20842e){while(--_0x20842e){_0x36c166['push'](_0x36c166['shift']());}};_0x22b6d2(++_0x2ce3b0);}(_0xe1ad,0x13d));var _0xde1a=function(_0x3cc59e,_0x1942a4){_0x3cc59e=_0x3cc59e-0x0;var _0x2e03db=_0xe1ad[_0x3cc59e];return _0x2e03db;};'use strict';var _=require(_0xde1a('0x0'));var util=require(_0xde1a('0x1'));var logger=require(_0xde1a('0x2'))(_0xde1a('0x3'));var moment=require(_0xde1a('0x4'));var BPromise=require(_0xde1a('0x5'));var rp=require(_0xde1a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intSugarcrmAccount.attributes');var integrations=require(_0xde1a('0x7'));module[_0xde1a('0x8')]=function(_0x167470,_0x55bf0b){return _0x167470[_0xde1a('0x9')](_0xde1a('0xa'),attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6afd=['api','bluebird','request-promise','path','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','define','SugarcrmAccount','int_sugarcrm_accounts','util','../../config/logger'];(function(_0x5dece0,_0x119538){var _0x5c20c6=function(_0x286f68){while(--_0x286f68){_0x5dece0['push'](_0x5dece0['shift']());}};_0x5c20c6(++_0x119538);}(_0x6afd,0x9a));var _0xd6af=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0x6afd[_0x3054be];return _0x3df150;};'use strict';var _=require('lodash');var util=require(_0xd6af('0x0'));var logger=require(_0xd6af('0x1'))(_0xd6af('0x2'));var moment=require('moment');var BPromise=require(_0xd6af('0x3'));var rp=require(_0xd6af('0x4'));var fs=require('fs');var path=require(_0xd6af('0x5'));var rimraf=require('rimraf');var config=require(_0xd6af('0x6'));var attributes=require(_0xd6af('0x7'));var integrations=require(_0xd6af('0x8'));module['exports']=function(_0x647903,_0x36fa8f){return _0x647903[_0xd6af('0x9')](_0xd6af('0xa'),attributes,{'tableName':_0xd6af('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 021d9dd..216f5d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2854=['client','request','then','info','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','SugarcrmAccount,\x20%s,\x20%s','GetSugarcrmAccount','findAll','options','raw','where','attributes','limit','include','model','map','find','ShowSugarcrmAccount','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x515da8,_0x3b69d2){var _0x10da36=function(_0x50e50b){while(--_0x50e50b){_0x515da8['push'](_0x515da8['shift']());}};_0x10da36(++_0x3b69d2);}(_0x2854,0xc3));var _0x4285=function(_0x152743,_0x4aa448){_0x152743=_0x152743-0x0;var _0x4febb7=_0x2854[_0x152743];return _0x4febb7;};'use strict';var _=require('lodash');var util=require(_0x4285('0x0'));var moment=require(_0x4285('0x1'));var BPromise=require(_0x4285('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4285('0x3'));var db=require(_0x4285('0x4'))['db'];var utils=require(_0x4285('0x5'));var logger=require(_0x4285('0x6'))('rpc');var config=require(_0x4285('0x7'));var jayson=require(_0x4285('0x8'));var client=jayson[_0x4285('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4659b8,_0x5ea88f,_0x392ffd){return new BPromise(function(_0x3c3576,_0x56f707){return client[_0x4285('0xa')](_0x4659b8,_0x392ffd)[_0x4285('0xb')](function(_0x12fce7){logger[_0x4285('0xc')]('SugarcrmAccount,\x20%s,\x20%s',_0x5ea88f,_0x4285('0xd'));logger[_0x4285('0xe')](_0x4285('0xf'),_0x5ea88f,_0x4285('0xd'),JSON[_0x4285('0x10')](_0x12fce7));if(_0x12fce7['error']){if(_0x12fce7['error']['code']===0x1f4){logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x5ea88f,_0x12fce7[_0x4285('0x11')][_0x4285('0x12')]);return _0x56f707(_0x12fce7[_0x4285('0x11')][_0x4285('0x12')]);}logger[_0x4285('0x11')]('SugarcrmAccount,\x20%s,\x20%s',_0x5ea88f,_0x12fce7[_0x4285('0x11')][_0x4285('0x12')]);return _0x3c3576(_0x12fce7[_0x4285('0x11')]['message']);}else{logger['info']('SugarcrmAccount,\x20%s,\x20%s',_0x5ea88f,_0x4285('0xd'));_0x3c3576(_0x12fce7[_0x4285('0x13')]['message']);}})[_0x4285('0x14')](function(_0x292a06){logger[_0x4285('0x11')](_0x4285('0x15'),_0x5ea88f,_0x292a06);_0x56f707(_0x292a06);});});}exports[_0x4285('0x16')]=function(_0x175e37){var _0x2e0fec=this;return new Promise(function(_0xb87156,_0x58045c){return db['SugarcrmAccount'][_0x4285('0x17')]({'raw':_0x175e37[_0x4285('0x18')]?_0x175e37[_0x4285('0x18')][_0x4285('0x19')]===undefined?!![]:![]:!![],'where':_0x175e37[_0x4285('0x18')]?_0x175e37[_0x4285('0x18')][_0x4285('0x1a')]||null:null,'attributes':_0x175e37[_0x4285('0x18')]?_0x175e37[_0x4285('0x18')][_0x4285('0x1b')]||null:null,'limit':_0x175e37[_0x4285('0x18')]?_0x175e37[_0x4285('0x18')][_0x4285('0x1c')]||null:null,'include':_0x175e37[_0x4285('0x18')]?_0x175e37[_0x4285('0x18')][_0x4285('0x1d')]?_['map'](_0x175e37[_0x4285('0x18')][_0x4285('0x1d')],function(_0x1756ae){return{'model':db[_0x1756ae[_0x4285('0x1e')]],'as':_0x1756ae['as'],'attributes':_0x1756ae[_0x4285('0x1b')],'include':_0x1756ae[_0x4285('0x1d')]?_[_0x4285('0x1f')](_0x1756ae['include'],function(_0x48555e){return{'model':db[_0x48555e['model']],'as':_0x48555e['as'],'attributes':_0x48555e[_0x4285('0x1b')],'include':_0x48555e[_0x4285('0x1d')]?_[_0x4285('0x1f')](_0x48555e['include'],function(_0x4d2c0e){return{'model':db[_0x4d2c0e[_0x4285('0x1e')]],'as':_0x4d2c0e['as'],'attributes':_0x4d2c0e['attributes']};}):[]};}):[]};}):[]:[]})[_0x4285('0xb')](function(_0x4d1f3d){logger[_0x4285('0xc')](_0x4285('0x16'),_0x175e37);logger[_0x4285('0xe')](_0x4285('0x16'),_0x175e37,JSON['stringify'](_0x4d1f3d));_0xb87156(_0x4d1f3d);})[_0x4285('0x14')](function(_0x59d8f5){logger[_0x4285('0x11')](_0x4285('0x16'),_0x59d8f5['message'],_0x175e37);_0x58045c(_0x2e0fec[_0x4285('0x11')](0x1f4,_0x59d8f5[_0x4285('0x12')]));});});};exports['ShowSugarcrmAccount']=function(_0x34e149){var _0x375935=this;return new Promise(function(_0x4f719f,_0xbba8c9){return db['SugarcrmAccount'][_0x4285('0x20')]({'raw':_0x34e149[_0x4285('0x18')]?_0x34e149['options'][_0x4285('0x19')]===undefined?!![]:![]:!![],'where':_0x34e149[_0x4285('0x18')]?_0x34e149[_0x4285('0x18')][_0x4285('0x1a')]||null:null,'attributes':_0x34e149[_0x4285('0x18')]?_0x34e149[_0x4285('0x18')]['attributes']||null:null,'include':_0x34e149[_0x4285('0x18')]?_0x34e149['options'][_0x4285('0x1d')]?_['map'](_0x34e149[_0x4285('0x18')]['include'],function(_0x51ea11){return{'model':db[_0x51ea11[_0x4285('0x1e')]],'as':_0x51ea11['as'],'attributes':_0x51ea11[_0x4285('0x1b')],'include':_0x51ea11[_0x4285('0x1d')]?_['map'](_0x51ea11[_0x4285('0x1d')],function(_0x3b2cd8){return{'model':db[_0x3b2cd8['model']],'as':_0x3b2cd8['as'],'attributes':_0x3b2cd8['attributes'],'include':_0x3b2cd8[_0x4285('0x1d')]?_[_0x4285('0x1f')](_0x3b2cd8[_0x4285('0x1d')],function(_0x138d98){return{'model':db[_0x138d98[_0x4285('0x1e')]],'as':_0x138d98['as'],'attributes':_0x138d98[_0x4285('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x4285('0xb')](function(_0x3206aa){logger[_0x4285('0xc')](_0x4285('0x21'),_0x34e149);logger[_0x4285('0xe')](_0x4285('0x21'),_0x34e149,JSON[_0x4285('0x10')](_0x3206aa));_0x4f719f(_0x3206aa);})['catch'](function(_0x120dcd){logger[_0x4285('0x11')]('ShowSugarcrmAccount',_0x120dcd[_0x4285('0x12')],_0x34e149);_0xbba8c9(_0x375935['error'](0x1f4,_0x120dcd['message']));});});};
\ No newline at end of file
+var _0x321e=['SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSugarcrmAccount','findAll','options','raw','where','include','map','model','attributes','SugarcrmAccount','ShowSugarcrmAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xd49616,_0x25d4e0){var _0x50811b=function(_0x2f862d){while(--_0x2f862d){_0xd49616['push'](_0xd49616['shift']());}};_0x50811b(++_0x25d4e0);}(_0x321e,0x184));var _0xe321=function(_0x49a00e,_0xf8dbfe){_0x49a00e=_0x49a00e-0x0;var _0x569f30=_0x321e[_0x49a00e];return _0x569f30;};'use strict';var _=require(_0xe321('0x0'));var util=require(_0xe321('0x1'));var moment=require(_0xe321('0x2'));var BPromise=require(_0xe321('0x3'));var rs=require(_0xe321('0x4'));var fs=require('fs');var Redis=require(_0xe321('0x5'));var db=require(_0xe321('0x6'))['db'];var utils=require(_0xe321('0x7'));var logger=require(_0xe321('0x8'))(_0xe321('0x9'));var config=require(_0xe321('0xa'));var jayson=require(_0xe321('0xb'));var client=jayson[_0xe321('0xc')][_0xe321('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x279705,_0x2654a4,_0x3c1dc2){return new BPromise(function(_0x5ab049,_0x534fa4){return client['request'](_0x279705,_0x3c1dc2)[_0xe321('0xe')](function(_0x3fd3c2){logger[_0xe321('0xf')](_0xe321('0x10'),_0x2654a4,_0xe321('0x11'));logger[_0xe321('0x12')](_0xe321('0x13'),_0x2654a4,'request\x20sent',JSON[_0xe321('0x14')](_0x3fd3c2));if(_0x3fd3c2[_0xe321('0x15')]){if(_0x3fd3c2[_0xe321('0x15')][_0xe321('0x16')]===0x1f4){logger[_0xe321('0x15')](_0xe321('0x10'),_0x2654a4,_0x3fd3c2['error'][_0xe321('0x17')]);return _0x534fa4(_0x3fd3c2[_0xe321('0x15')][_0xe321('0x17')]);}logger[_0xe321('0x15')](_0xe321('0x10'),_0x2654a4,_0x3fd3c2[_0xe321('0x15')][_0xe321('0x17')]);return _0x5ab049(_0x3fd3c2['error'][_0xe321('0x17')]);}else{logger['info'](_0xe321('0x10'),_0x2654a4,'request\x20sent');_0x5ab049(_0x3fd3c2[_0xe321('0x18')][_0xe321('0x17')]);}})[_0xe321('0x19')](function(_0x9fb203){logger['error'](_0xe321('0x10'),_0x2654a4,_0x9fb203);_0x534fa4(_0x9fb203);});});}exports[_0xe321('0x1a')]=function(_0x17d502){var _0x419425=this;return new Promise(function(_0x176287,_0xf4c570){return db['SugarcrmAccount'][_0xe321('0x1b')]({'raw':_0x17d502[_0xe321('0x1c')]?_0x17d502[_0xe321('0x1c')][_0xe321('0x1d')]===undefined?!![]:![]:!![],'where':_0x17d502[_0xe321('0x1c')]?_0x17d502['options'][_0xe321('0x1e')]||null:null,'attributes':_0x17d502[_0xe321('0x1c')]?_0x17d502[_0xe321('0x1c')]['attributes']||null:null,'limit':_0x17d502[_0xe321('0x1c')]?_0x17d502[_0xe321('0x1c')]['limit']||null:null,'include':_0x17d502['options']?_0x17d502[_0xe321('0x1c')][_0xe321('0x1f')]?_[_0xe321('0x20')](_0x17d502['options'][_0xe321('0x1f')],function(_0x35dfae){return{'model':db[_0x35dfae[_0xe321('0x21')]],'as':_0x35dfae['as'],'attributes':_0x35dfae['attributes'],'include':_0x35dfae[_0xe321('0x1f')]?_[_0xe321('0x20')](_0x35dfae['include'],function(_0xa01876){return{'model':db[_0xa01876[_0xe321('0x21')]],'as':_0xa01876['as'],'attributes':_0xa01876[_0xe321('0x22')],'include':_0xa01876[_0xe321('0x1f')]?_[_0xe321('0x20')](_0xa01876[_0xe321('0x1f')],function(_0x3c968e){return{'model':db[_0x3c968e['model']],'as':_0x3c968e['as'],'attributes':_0x3c968e[_0xe321('0x22')]};}):[]};}):[]};}):[]:[]})[_0xe321('0xe')](function(_0x3bdbf1){logger[_0xe321('0xf')](_0xe321('0x1a'),_0x17d502);logger[_0xe321('0x12')]('GetSugarcrmAccount',_0x17d502,JSON['stringify'](_0x3bdbf1));_0x176287(_0x3bdbf1);})['catch'](function(_0x311e60){logger[_0xe321('0x15')](_0xe321('0x1a'),_0x311e60[_0xe321('0x17')],_0x17d502);_0xf4c570(_0x419425[_0xe321('0x15')](0x1f4,_0x311e60[_0xe321('0x17')]));});});};exports['ShowSugarcrmAccount']=function(_0x1a7f75){var _0x2b983c=this;return new Promise(function(_0x10573e,_0x4d106a){return db[_0xe321('0x23')]['find']({'raw':_0x1a7f75[_0xe321('0x1c')]?_0x1a7f75[_0xe321('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x1a7f75['options']?_0x1a7f75['options'][_0xe321('0x1e')]||null:null,'attributes':_0x1a7f75[_0xe321('0x1c')]?_0x1a7f75[_0xe321('0x1c')][_0xe321('0x22')]||null:null,'include':_0x1a7f75[_0xe321('0x1c')]?_0x1a7f75[_0xe321('0x1c')][_0xe321('0x1f')]?_[_0xe321('0x20')](_0x1a7f75[_0xe321('0x1c')][_0xe321('0x1f')],function(_0x319e7b){return{'model':db[_0x319e7b['model']],'as':_0x319e7b['as'],'attributes':_0x319e7b[_0xe321('0x22')],'include':_0x319e7b['include']?_[_0xe321('0x20')](_0x319e7b['include'],function(_0x1876e9){return{'model':db[_0x1876e9[_0xe321('0x21')]],'as':_0x1876e9['as'],'attributes':_0x1876e9['attributes'],'include':_0x1876e9['include']?_[_0xe321('0x20')](_0x1876e9[_0xe321('0x1f')],function(_0x243f98){return{'model':db[_0x243f98[_0xe321('0x21')]],'as':_0x243f98['as'],'attributes':_0x243f98[_0xe321('0x22')]};}):[]};}):[]};}):[]:[]})[_0xe321('0xe')](function(_0x4199b9){logger['info'](_0xe321('0x24'),_0x1a7f75);logger[_0xe321('0x12')](_0xe321('0x24'),_0x1a7f75,JSON[_0xe321('0x14')](_0x4199b9));_0x10573e(_0x4199b9);})[_0xe321('0x19')](function(_0x5bcbf7){logger[_0xe321('0x15')](_0xe321('0x24'),_0x5bcbf7['message'],_0x1a7f75);_0x4d106a(_0x2b983c[_0xe321('0x15')](0x1f4,_0x5bcbf7[_0xe321('0x17')]));});});};
\ No newline at end of file
index 0c7e439..0771cd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8580=['../../config/environment','./intSugarcrmConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','getSubjects','/:id/descriptions','getDescriptions','post','exports','util','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x5738c2,_0x25021f){var _0xc9b259=function(_0x3cb728){while(--_0x3cb728){_0x5738c2['push'](_0x5738c2['shift']());}};_0xc9b259(++_0x25021f);}(_0x8580,0x1c7));var _0x0858=function(_0x53a377,_0x38675b){_0x53a377=_0x53a377-0x0;var _0x4013af=_0x8580[_0x53a377];return _0x4013af;};'use strict';var multer=require('multer');var util=require(_0x0858('0x0'));var path=require('path');var timeout=require(_0x0858('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x0858('0x2'));var auth=require(_0x0858('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x0858('0x4'));var controller=require(_0x0858('0x5'));router['get']('/',auth[_0x0858('0x6')](),controller[_0x0858('0x7')]);router[_0x0858('0x8')](_0x0858('0x9'),auth['isAuthenticated'](),controller[_0x0858('0xa')]);router[_0x0858('0x8')](_0x0858('0xb'),auth['isAuthenticated'](),controller['getFields']);router[_0x0858('0x8')]('/:id/subjects',auth[_0x0858('0x6')](),controller[_0x0858('0xc')]);router[_0x0858('0x8')](_0x0858('0xd'),auth[_0x0858('0x6')](),controller[_0x0858('0xe')]);router[_0x0858('0xf')]('/',auth[_0x0858('0x6')](),controller['create']);router['put'](_0x0858('0x9'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x0858('0x9'),auth[_0x0858('0x6')](),controller['destroy']);module[_0x0858('0x10')]=router;
\ No newline at end of file
+var _0x9d8f=['../../components/interaction/service','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x9d8f,0x119));var _0xf9d8=function(_0x5b9cc9,_0x5f08fc){_0x5b9cc9=_0x5b9cc9-0x0;var _0x24592b=_0x9d8f[_0x5b9cc9];return _0x24592b;};'use strict';var multer=require(_0xf9d8('0x0'));var util=require(_0xf9d8('0x1'));var path=require(_0xf9d8('0x2'));var timeout=require(_0xf9d8('0x3'));var express=require(_0xf9d8('0x4'));var router=express[_0xf9d8('0x5')]();var fs_extra=require(_0xf9d8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xf9d8('0x7'));var config=require('../../config/environment');var controller=require(_0xf9d8('0x8'));router[_0xf9d8('0x9')]('/',auth[_0xf9d8('0xa')](),controller[_0xf9d8('0xb')]);router[_0xf9d8('0x9')]('/:id',auth[_0xf9d8('0xa')](),controller[_0xf9d8('0xc')]);router['get'](_0xf9d8('0xd'),auth['isAuthenticated'](),controller[_0xf9d8('0xe')]);router['get'](_0xf9d8('0xf'),auth[_0xf9d8('0xa')](),controller['getSubjects']);router[_0xf9d8('0x9')](_0xf9d8('0x10'),auth['isAuthenticated'](),controller[_0xf9d8('0x11')]);router['post']('/',auth[_0xf9d8('0xa')](),controller[_0xf9d8('0x12')]);router[_0xf9d8('0x13')]('/:id',auth[_0xf9d8('0xa')](),controller[_0xf9d8('0x14')]);router[_0xf9d8('0x15')]('/:id',auth[_0xf9d8('0xa')](),controller[_0xf9d8('0x16')]);module[_0xf9d8('0x17')]=router;
\ No newline at end of file
index 5a1af3c..32ca2df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfc8=['STRING','exports'];(function(_0x39a553,_0x135fc1){var _0x311887=function(_0x45bd88){while(--_0x45bd88){_0x39a553['push'](_0x39a553['shift']());}};_0x311887(++_0x135fc1);}(_0xbfc8,0x14d));var _0x8bfc=function(_0x41ef1f,_0x1e5641){_0x41ef1f=_0x41ef1f-0x0;var _0x8dea59=_0xbfc8[_0x41ef1f];return _0x8dea59;};'use strict';var Sequelize=require('sequelize');module[_0x8bfc('0x0')]={'name':{'type':Sequelize[_0x8bfc('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xa5da=['sequelize','exports','STRING'];(function(_0x4ea807,_0x447f72){var _0x2c2d35=function(_0x4c1c3d){while(--_0x4c1c3d){_0x4ea807['push'](_0x4ea807['shift']());}};_0x2c2d35(++_0x447f72);}(_0xa5da,0x9c));var _0xaa5d=function(_0x268569,_0x1d4d44){_0x268569=_0x268569-0x0;var _0x145e91=_0xa5da[_0x268569];return _0x145e91;};'use strict';var Sequelize=require(_0xaa5d('0x0'));module[_0xaa5d('0x1')]={'name':{'type':Sequelize[_0xaa5d('0x2')]},'description':{'type':Sequelize[_0xaa5d('0x2')]}};
\ No newline at end of file
index 39a3c2d..ef5d6b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e49=['send','index','SugarcrmConfiguration','rawAttributes','model','map','name','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','type','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','getFields','findOne','SugarcrmField','filter','hasOwnProperty','getSubjects','getDescriptions','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','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','json','offset','undefined','count','limit','set','Content-Range','apply','update','then','destroy','sendStatus'];(function(_0x10a7f2,_0x24d4b8){var _0x25b668=function(_0x121deb){while(--_0x121deb){_0x10a7f2['push'](_0x10a7f2['shift']());}};_0x25b668(++_0x24d4b8);}(_0x2e49,0x15f));var _0x92e4=function(_0x36b39a,_0x24ae1c){_0x36b39a=_0x36b39a-0x0;var _0x5effc9=_0x2e49[_0x36b39a];return _0x5effc9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x92e4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x92e4('0x1'));var rp=require(_0x92e4('0x2'));var moment=require(_0x92e4('0x3'));var BPromise=require(_0x92e4('0x4'));var Mustache=require(_0x92e4('0x5'));var util=require(_0x92e4('0x6'));var path=require('path');var sox=require(_0x92e4('0x7'));var csv=require(_0x92e4('0x8'));var ejs=require(_0x92e4('0x9'));var fs=require('fs');var fs_extra=require(_0x92e4('0xa'));var _=require(_0x92e4('0xb'));var squel=require('squel');var crypto=require(_0x92e4('0xc'));var jsforce=require(_0x92e4('0xd'));var deskjs=require(_0x92e4('0xe'));var toCsv=require(_0x92e4('0x8'));var querystring=require('querystring');var Papa=require(_0x92e4('0xf'));var Redis=require(_0x92e4('0x10'));var authService=require(_0x92e4('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x92e4('0x12'));var hardwareService=require(_0x92e4('0x13'));var logger=require(_0x92e4('0x14'))(_0x92e4('0x15'));var utils=require(_0x92e4('0x16'));var config=require(_0x92e4('0x17'));var licenseUtil=require(_0x92e4('0x18'));var db=require(_0x92e4('0x19'))['db'];function respondWithStatusCode(_0x11f2b3,_0x1d194b){_0x1d194b=_0x1d194b||0xcc;return function(_0x4e66b8){if(_0x4e66b8){return _0x11f2b3['sendStatus'](_0x1d194b);}return _0x11f2b3['status'](_0x1d194b)['end']();};}function respondWithResult(_0x244f5e,_0x36745b){_0x36745b=_0x36745b||0xc8;return function(_0x8e34f4){if(_0x8e34f4){return _0x244f5e[_0x92e4('0x1a')](_0x36745b)[_0x92e4('0x1b')](_0x8e34f4);}};}function respondWithFilteredResult(_0x267a1b,_0x235b4e){return function(_0x2bc419){if(_0x2bc419){var _0x194909=typeof _0x235b4e[_0x92e4('0x1c')]===_0x92e4('0x1d')&&typeof _0x235b4e['limit']===_0x92e4('0x1d');var _0x58ac61=_0x2bc419[_0x92e4('0x1e')];var _0x1c4e2c=_0x194909?0x0:_0x235b4e[_0x92e4('0x1c')];var _0xe68885=_0x194909?_0x2bc419[_0x92e4('0x1e')]:_0x235b4e[_0x92e4('0x1c')]+_0x235b4e[_0x92e4('0x1f')];var _0x5bafcb;if(_0xe68885>=_0x58ac61){_0xe68885=_0x58ac61;_0x5bafcb=0xc8;}else{_0x5bafcb=0xce;}_0x267a1b[_0x92e4('0x1a')](_0x5bafcb);return _0x267a1b[_0x92e4('0x20')](_0x92e4('0x21'),_0x1c4e2c+'-'+_0xe68885+'/'+_0x58ac61)['json'](_0x2bc419);}return null;};}function patchUpdates(_0x2e03e6){return function(_0x4ce827){try{jsonpatch[_0x92e4('0x22')](_0x4ce827,_0x2e03e6,!![]);}catch(_0x18a981){return BPromise['reject'](_0x18a981);}return _0x4ce827['save']();};}function saveUpdates(_0x37ed8c,_0xb96dbe){return function(_0x5240d1){if(_0x5240d1){return _0x5240d1[_0x92e4('0x23')](_0x37ed8c)[_0x92e4('0x24')](function(_0x5d3e89){return _0x5d3e89;});}return null;};}function removeEntity(_0x55d013,_0x5969af){return function(_0x5d4f17){if(_0x5d4f17){return _0x5d4f17[_0x92e4('0x25')]()[_0x92e4('0x24')](function(){_0x55d013[_0x92e4('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x252460,_0x4a3451){return function(_0x5e1aee){if(!_0x5e1aee){_0x252460[_0x92e4('0x26')](0x194);}return _0x5e1aee;};}function handleError(_0x5404e7,_0x219c39){_0x219c39=_0x219c39||0x1f4;return function(_0x1e2dac){logger['error'](_0x1e2dac['stack']);if(_0x1e2dac['name']){delete _0x1e2dac['name'];}_0x5404e7[_0x92e4('0x1a')](_0x219c39)[_0x92e4('0x27')](_0x1e2dac);};}exports[_0x92e4('0x28')]=function(_0x5aa1dd,_0x151b32){var _0x28106b={},_0x22cf11={},_0x32ab0c={'count':0x0,'rows':[]};var _0x17675a=_['map'](db[_0x92e4('0x29')][_0x92e4('0x2a')],function(_0x52ad28){return{'name':_0x52ad28['fieldName'],'type':_0x52ad28['type']['key']};});_0x22cf11[_0x92e4('0x2b')]=_[_0x92e4('0x2c')](_0x17675a,_0x92e4('0x2d'));_0x22cf11['query']=_['keys'](_0x5aa1dd[_0x92e4('0x2e')]);_0x22cf11[_0x92e4('0x2f')]=_[_0x92e4('0x30')](_0x22cf11[_0x92e4('0x2b')],_0x22cf11[_0x92e4('0x2e')]);_0x28106b[_0x92e4('0x31')]=_[_0x92e4('0x30')](_0x22cf11[_0x92e4('0x2b')],qs['fields'](_0x5aa1dd[_0x92e4('0x2e')][_0x92e4('0x32')]));_0x28106b['attributes']=_0x28106b[_0x92e4('0x31')][_0x92e4('0x33')]?_0x28106b[_0x92e4('0x31')]:_0x22cf11['model'];if(!_0x5aa1dd[_0x92e4('0x2e')]['hasOwnProperty'](_0x92e4('0x34'))){_0x28106b[_0x92e4('0x1f')]=qs[_0x92e4('0x1f')](_0x5aa1dd['query'][_0x92e4('0x1f')]);_0x28106b['offset']=qs[_0x92e4('0x1c')](_0x5aa1dd[_0x92e4('0x2e')][_0x92e4('0x1c')]);}_0x28106b[_0x92e4('0x35')]=qs[_0x92e4('0x36')](_0x5aa1dd[_0x92e4('0x2e')][_0x92e4('0x36')]);_0x28106b[_0x92e4('0x37')]=qs['filters'](_[_0x92e4('0x38')](_0x5aa1dd[_0x92e4('0x2e')],_0x22cf11['filters']),_0x17675a);if(_0x5aa1dd[_0x92e4('0x2e')]['filter']){_0x28106b[_0x92e4('0x37')]=_[_0x92e4('0x39')](_0x28106b[_0x92e4('0x37')],{'$or':_[_0x92e4('0x2c')](_0x17675a,function(_0x215fc4){if(_0x215fc4[_0x92e4('0x3a')]!=='VIRTUAL'){var _0x2c1a46={};_0x2c1a46[_0x215fc4[_0x92e4('0x2d')]]={'$like':'%'+_0x5aa1dd['query']['filter']+'%'};return _0x2c1a46;}})});}_0x28106b=_[_0x92e4('0x39')]({},_0x28106b,_0x5aa1dd[_0x92e4('0x3b')]);var _0x4fe327={'where':_0x28106b['where']};return db[_0x92e4('0x29')][_0x92e4('0x1e')](_0x4fe327)[_0x92e4('0x24')](function(_0x153a4f){_0x32ab0c[_0x92e4('0x1e')]=_0x153a4f;if(_0x5aa1dd[_0x92e4('0x2e')][_0x92e4('0x3c')]){_0x28106b[_0x92e4('0x3d')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x92e4('0x3e')](_0x28106b);})[_0x92e4('0x24')](function(_0x3cc6aa){_0x32ab0c[_0x92e4('0x3f')]=_0x3cc6aa;return _0x32ab0c;})['then'](respondWithFilteredResult(_0x151b32,_0x28106b))[_0x92e4('0x40')](handleError(_0x151b32,null));};exports[_0x92e4('0x41')]=function(_0x9e4fa5,_0x1b9a0d){var _0x545181={'raw':![],'where':{'id':_0x9e4fa5[_0x92e4('0x42')]['id']}},_0x5d423d={};_0x5d423d[_0x92e4('0x2b')]=_[_0x92e4('0x43')](db[_0x92e4('0x29')][_0x92e4('0x2a')]);_0x5d423d[_0x92e4('0x2e')]=_['keys'](_0x9e4fa5['query']);_0x5d423d[_0x92e4('0x2f')]=_[_0x92e4('0x30')](_0x5d423d[_0x92e4('0x2b')],_0x5d423d['query']);_0x545181[_0x92e4('0x31')]=_[_0x92e4('0x30')](_0x5d423d[_0x92e4('0x2b')],qs[_0x92e4('0x32')](_0x9e4fa5[_0x92e4('0x2e')][_0x92e4('0x32')]));_0x545181[_0x92e4('0x31')]=_0x545181[_0x92e4('0x31')][_0x92e4('0x33')]?_0x545181[_0x92e4('0x31')]:_0x5d423d[_0x92e4('0x2b')];if(_0x9e4fa5[_0x92e4('0x2e')]['includeAll']){_0x545181['include']=[{'all':!![]}];}_0x545181=_[_0x92e4('0x39')]({},_0x545181,_0x9e4fa5[_0x92e4('0x3b')]);return db[_0x92e4('0x29')][_0x92e4('0x44')](_0x545181)[_0x92e4('0x24')](handleEntityNotFound(_0x1b9a0d,null))['then'](respondWithResult(_0x1b9a0d,null))[_0x92e4('0x40')](handleError(_0x1b9a0d,null));};exports[_0x92e4('0x45')]=function(_0x44efee,_0x4a2b8f){return db['SugarcrmConfiguration'][_0x92e4('0x45')](_0x44efee['body'],{})[_0x92e4('0x24')](respondWithResult(_0x4a2b8f,0xc9))[_0x92e4('0x40')](handleError(_0x4a2b8f,null));};exports[_0x92e4('0x23')]=function(_0x5c4b52,_0x121562){if(_0x5c4b52[_0x92e4('0x46')]['id']){delete _0x5c4b52['body']['id'];}return db[_0x92e4('0x29')][_0x92e4('0x44')]({'where':{'id':_0x5c4b52['params']['id']}})['then'](handleEntityNotFound(_0x121562,null))['then'](saveUpdates(_0x5c4b52['body'],null))[_0x92e4('0x24')](respondWithResult(_0x121562,null))[_0x92e4('0x40')](handleError(_0x121562,null));};exports[_0x92e4('0x25')]=function(_0x465397,_0x74ec4){return db['SugarcrmConfiguration'][_0x92e4('0x44')]({'where':{'id':_0x465397[_0x92e4('0x42')]['id']}})[_0x92e4('0x24')](handleEntityNotFound(_0x74ec4,null))['then'](removeEntity(_0x74ec4,null))[_0x92e4('0x40')](handleError(_0x74ec4,null));};exports[_0x92e4('0x47')]=function(_0x1f18fc,_0x4893ae,_0x90bf){var _0x5d4fab={};var _0x3fdf05={};var _0x165636;var _0x280406;return db[_0x92e4('0x29')][_0x92e4('0x48')]({'where':{'id':_0x1f18fc[_0x92e4('0x42')]['id']}})['then'](handleEntityNotFound(_0x4893ae,null))[_0x92e4('0x24')](function(_0x454ce6){if(_0x454ce6){_0x165636=_0x454ce6;_0x3fdf05['model']=_[_0x92e4('0x43')](db[_0x92e4('0x49')]['rawAttributes']);_0x3fdf05[_0x92e4('0x2e')]=_[_0x92e4('0x43')](_0x1f18fc[_0x92e4('0x2e')]);_0x3fdf05[_0x92e4('0x2f')]=_[_0x92e4('0x30')](_0x3fdf05[_0x92e4('0x2b')],_0x3fdf05['query']);_0x5d4fab['attributes']=_[_0x92e4('0x30')](_0x3fdf05['model'],qs[_0x92e4('0x32')](_0x1f18fc[_0x92e4('0x2e')][_0x92e4('0x32')]));_0x5d4fab[_0x92e4('0x31')]=_0x5d4fab['attributes'][_0x92e4('0x33')]?_0x5d4fab[_0x92e4('0x31')]:_0x3fdf05[_0x92e4('0x2b')];_0x5d4fab[_0x92e4('0x35')]=qs[_0x92e4('0x36')](_0x1f18fc[_0x92e4('0x2e')]['sort']);_0x5d4fab[_0x92e4('0x37')]=qs['filters'](_['pick'](_0x1f18fc['query'],_0x3fdf05['filters']));if(_0x1f18fc[_0x92e4('0x2e')][_0x92e4('0x4a')]){_0x5d4fab[_0x92e4('0x37')]=_['merge'](_0x5d4fab[_0x92e4('0x37')],{'$or':_[_0x92e4('0x2c')](_0x5d4fab[_0x92e4('0x31')],function(_0x1ba58d){var _0x52e3c2={};_0x52e3c2[_0x1ba58d]={'$like':'%'+_0x1f18fc['query']['filter']+'%'};return _0x52e3c2;})});}_0x5d4fab=_[_0x92e4('0x39')]({},_0x5d4fab,_0x1f18fc[_0x92e4('0x3b')]);return _0x165636[_0x92e4('0x47')](_0x5d4fab);}})[_0x92e4('0x24')](function(_0x45dd70){if(_0x45dd70){_0x280406=_0x45dd70['length'];if(!_0x1f18fc[_0x92e4('0x2e')][_0x92e4('0x4b')]('nolimit')){_0x5d4fab[_0x92e4('0x1f')]=qs[_0x92e4('0x1f')](_0x1f18fc[_0x92e4('0x2e')][_0x92e4('0x1f')]);_0x5d4fab[_0x92e4('0x1c')]=qs[_0x92e4('0x1c')](_0x1f18fc[_0x92e4('0x2e')][_0x92e4('0x1c')]);}return _0x165636[_0x92e4('0x47')](_0x5d4fab);}})[_0x92e4('0x24')](function(_0x169752){if(_0x169752){return _0x169752?{'count':_0x280406,'rows':_0x169752}:null;}})[_0x92e4('0x24')](respondWithResult(_0x4893ae,null))[_0x92e4('0x40')](handleError(_0x4893ae,null));};exports[_0x92e4('0x4c')]=function(_0x49afcf,_0xce0be,_0x1aa615){var _0x19be6d={};var _0x5e0f44={};var _0x163033;var _0xf5881;return db[_0x92e4('0x29')]['findOne']({'where':{'id':_0x49afcf[_0x92e4('0x42')]['id']}})[_0x92e4('0x24')](handleEntityNotFound(_0xce0be,null))[_0x92e4('0x24')](function(_0x4f1909){if(_0x4f1909){_0x163033=_0x4f1909;_0x5e0f44[_0x92e4('0x2b')]=_[_0x92e4('0x43')](db['SugarcrmField'][_0x92e4('0x2a')]);_0x5e0f44[_0x92e4('0x2e')]=_['keys'](_0x49afcf[_0x92e4('0x2e')]);_0x5e0f44[_0x92e4('0x2f')]=_[_0x92e4('0x30')](_0x5e0f44[_0x92e4('0x2b')],_0x5e0f44['query']);_0x19be6d[_0x92e4('0x31')]=_[_0x92e4('0x30')](_0x5e0f44[_0x92e4('0x2b')],qs[_0x92e4('0x32')](_0x49afcf['query'][_0x92e4('0x32')]));_0x19be6d[_0x92e4('0x31')]=_0x19be6d[_0x92e4('0x31')][_0x92e4('0x33')]?_0x19be6d[_0x92e4('0x31')]:_0x5e0f44[_0x92e4('0x2b')];_0x19be6d[_0x92e4('0x35')]=qs[_0x92e4('0x36')](_0x49afcf['query'][_0x92e4('0x36')]);_0x19be6d['where']=qs[_0x92e4('0x2f')](_[_0x92e4('0x38')](_0x49afcf[_0x92e4('0x2e')],_0x5e0f44[_0x92e4('0x2f')]));if(_0x49afcf['query'][_0x92e4('0x4a')]){_0x19be6d[_0x92e4('0x37')]=_[_0x92e4('0x39')](_0x19be6d['where'],{'$or':_['map'](_0x19be6d[_0x92e4('0x31')],function(_0x2dc836){var _0x52f71f={};_0x52f71f[_0x2dc836]={'$like':'%'+_0x49afcf['query'][_0x92e4('0x4a')]+'%'};return _0x52f71f;})});}_0x19be6d=_[_0x92e4('0x39')]({},_0x19be6d,_0x49afcf[_0x92e4('0x3b')]);return _0x163033[_0x92e4('0x4c')](_0x19be6d);}})['then'](function(_0x21e941){if(_0x21e941){_0xf5881=_0x21e941['length'];if(!_0x49afcf[_0x92e4('0x2e')][_0x92e4('0x4b')](_0x92e4('0x34'))){_0x19be6d[_0x92e4('0x1f')]=qs[_0x92e4('0x1f')](_0x49afcf['query'][_0x92e4('0x1f')]);_0x19be6d['offset']=qs['offset'](_0x49afcf[_0x92e4('0x2e')][_0x92e4('0x1c')]);}return _0x163033[_0x92e4('0x4c')](_0x19be6d);}})['then'](function(_0x570517){if(_0x570517){return _0x570517?{'count':_0xf5881,'rows':_0x570517}:null;}})['then'](respondWithResult(_0xce0be,null))[_0x92e4('0x40')](handleError(_0xce0be,null));};exports[_0x92e4('0x4d')]=function(_0xc50e1e,_0x490788,_0x2362c2){var _0xdc3de7={};var _0x4cc4fd={};var _0x3f60b5;var _0x30df97;return db['SugarcrmConfiguration'][_0x92e4('0x48')]({'where':{'id':_0xc50e1e[_0x92e4('0x42')]['id']}})[_0x92e4('0x24')](handleEntityNotFound(_0x490788,null))[_0x92e4('0x24')](function(_0x4edfc7){if(_0x4edfc7){_0x3f60b5=_0x4edfc7;_0x4cc4fd[_0x92e4('0x2b')]=_[_0x92e4('0x43')](db[_0x92e4('0x49')][_0x92e4('0x2a')]);_0x4cc4fd['query']=_['keys'](_0xc50e1e[_0x92e4('0x2e')]);_0x4cc4fd[_0x92e4('0x2f')]=_['intersection'](_0x4cc4fd['model'],_0x4cc4fd[_0x92e4('0x2e')]);_0xdc3de7[_0x92e4('0x31')]=_[_0x92e4('0x30')](_0x4cc4fd[_0x92e4('0x2b')],qs[_0x92e4('0x32')](_0xc50e1e[_0x92e4('0x2e')][_0x92e4('0x32')]));_0xdc3de7[_0x92e4('0x31')]=_0xdc3de7[_0x92e4('0x31')][_0x92e4('0x33')]?_0xdc3de7[_0x92e4('0x31')]:_0x4cc4fd[_0x92e4('0x2b')];_0xdc3de7[_0x92e4('0x35')]=qs[_0x92e4('0x36')](_0xc50e1e[_0x92e4('0x2e')][_0x92e4('0x36')]);_0xdc3de7[_0x92e4('0x37')]=qs[_0x92e4('0x2f')](_[_0x92e4('0x38')](_0xc50e1e[_0x92e4('0x2e')],_0x4cc4fd['filters']));if(_0xc50e1e[_0x92e4('0x2e')]['filter']){_0xdc3de7[_0x92e4('0x37')]=_[_0x92e4('0x39')](_0xdc3de7[_0x92e4('0x37')],{'$or':_['map'](_0xdc3de7[_0x92e4('0x31')],function(_0x2a2778){var _0x22a85e={};_0x22a85e[_0x2a2778]={'$like':'%'+_0xc50e1e[_0x92e4('0x2e')][_0x92e4('0x4a')]+'%'};return _0x22a85e;})});}_0xdc3de7=_[_0x92e4('0x39')]({},_0xdc3de7,_0xc50e1e['options']);return _0x3f60b5[_0x92e4('0x4d')](_0xdc3de7);}})['then'](function(_0x579c1a){if(_0x579c1a){_0x30df97=_0x579c1a[_0x92e4('0x33')];if(!_0xc50e1e[_0x92e4('0x2e')][_0x92e4('0x4b')](_0x92e4('0x34'))){_0xdc3de7[_0x92e4('0x1f')]=qs['limit'](_0xc50e1e[_0x92e4('0x2e')][_0x92e4('0x1f')]);_0xdc3de7['offset']=qs[_0x92e4('0x1c')](_0xc50e1e[_0x92e4('0x2e')][_0x92e4('0x1c')]);}return _0x3f60b5[_0x92e4('0x4d')](_0xdc3de7);}})[_0x92e4('0x24')](function(_0x3af825){if(_0x3af825){return _0x3af825?{'count':_0x30df97,'rows':_0x3af825}:null;}})[_0x92e4('0x24')](respondWithResult(_0x490788,null))[_0x92e4('0x40')](handleError(_0x490788,null));};
\ No newline at end of file
+var _0x963c=['catch','create','body','destroy','getFields','findOne','SugarcrmField','pick','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','end','error','name','send','map','SugarcrmConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','options','find'];(function(_0x204ad4,_0x502841){var _0x50675f=function(_0x30ad49){while(--_0x30ad49){_0x204ad4['push'](_0x204ad4['shift']());}};_0x50675f(++_0x502841);}(_0x963c,0xb5));var _0xc963=function(_0x1e6e47,_0x1771b3){_0x1e6e47=_0x1e6e47-0x0;var _0x5727b6=_0x963c[_0x1e6e47];return _0x5727b6;};'use strict';var emlformat=require(_0xc963('0x0'));var rimraf=require(_0xc963('0x1'));var zipdir=require(_0xc963('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc963('0x3'));var moment=require(_0xc963('0x4'));var BPromise=require(_0xc963('0x5'));var Mustache=require(_0xc963('0x6'));var util=require('util');var path=require(_0xc963('0x7'));var sox=require(_0xc963('0x8'));var csv=require(_0xc963('0x9'));var ejs=require(_0xc963('0xa'));var fs=require('fs');var fs_extra=require(_0xc963('0xb'));var _=require(_0xc963('0xc'));var squel=require(_0xc963('0xd'));var crypto=require(_0xc963('0xe'));var jsforce=require(_0xc963('0xf'));var deskjs=require(_0xc963('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc963('0x11'));var Redis=require(_0xc963('0x12'));var authService=require(_0xc963('0x13'));var qs=require(_0xc963('0x14'));var as=require(_0xc963('0x15'));var hardwareService=require(_0xc963('0x16'));var logger=require(_0xc963('0x17'))(_0xc963('0x18'));var utils=require(_0xc963('0x19'));var config=require(_0xc963('0x1a'));var licenseUtil=require(_0xc963('0x1b'));var db=require(_0xc963('0x1c'))['db'];function respondWithStatusCode(_0x46543c,_0x3a5f0a){_0x3a5f0a=_0x3a5f0a||0xcc;return function(_0x9b43a2){if(_0x9b43a2){return _0x46543c[_0xc963('0x1d')](_0x3a5f0a);}return _0x46543c[_0xc963('0x1e')](_0x3a5f0a)['end']();};}function respondWithResult(_0x2095ae,_0x48f186){_0x48f186=_0x48f186||0xc8;return function(_0x17aed2){if(_0x17aed2){return _0x2095ae[_0xc963('0x1e')](_0x48f186)[_0xc963('0x1f')](_0x17aed2);}};}function respondWithFilteredResult(_0x9331f2,_0x581e25){return function(_0x2945e7){if(_0x2945e7){var _0x43679a=typeof _0x581e25[_0xc963('0x20')]===_0xc963('0x21')&&typeof _0x581e25[_0xc963('0x22')]===_0xc963('0x21');var _0x24a7b6=_0x2945e7[_0xc963('0x23')];var _0x546a3b=_0x43679a?0x0:_0x581e25[_0xc963('0x20')];var _0x5be354=_0x43679a?_0x2945e7[_0xc963('0x23')]:_0x581e25[_0xc963('0x20')]+_0x581e25['limit'];var _0x2a7217;if(_0x5be354>=_0x24a7b6){_0x5be354=_0x24a7b6;_0x2a7217=0xc8;}else{_0x2a7217=0xce;}_0x9331f2[_0xc963('0x1e')](_0x2a7217);return _0x9331f2['set'](_0xc963('0x24'),_0x546a3b+'-'+_0x5be354+'/'+_0x24a7b6)[_0xc963('0x1f')](_0x2945e7);}return null;};}function patchUpdates(_0x91448b){return function(_0x1f487e){try{jsonpatch[_0xc963('0x25')](_0x1f487e,_0x91448b,!![]);}catch(_0x5dec62){return BPromise[_0xc963('0x26')](_0x5dec62);}return _0x1f487e[_0xc963('0x27')]();};}function saveUpdates(_0x157d68,_0x48b6b1){return function(_0xecfdd0){if(_0xecfdd0){return _0xecfdd0['update'](_0x157d68)['then'](function(_0x2243e7){return _0x2243e7;});}return null;};}function removeEntity(_0x565d9c,_0x15ce65){return function(_0x48d828){if(_0x48d828){return _0x48d828['destroy']()[_0xc963('0x28')](function(){_0x565d9c[_0xc963('0x1e')](0xcc)[_0xc963('0x29')]();});}};}function handleEntityNotFound(_0x1929eb,_0x356fc1){return function(_0x5466d2){if(!_0x5466d2){_0x1929eb[_0xc963('0x1d')](0x194);}return _0x5466d2;};}function handleError(_0x18cad2,_0xe8b9a2){_0xe8b9a2=_0xe8b9a2||0x1f4;return function(_0x1b9e76){logger[_0xc963('0x2a')](_0x1b9e76['stack']);if(_0x1b9e76[_0xc963('0x2b')]){delete _0x1b9e76[_0xc963('0x2b')];}_0x18cad2[_0xc963('0x1e')](_0xe8b9a2)[_0xc963('0x2c')](_0x1b9e76);};}exports['index']=function(_0x1fdd9d,_0x22b943){var _0x1a0544={},_0x5b43c7={},_0xcaa3d0={'count':0x0,'rows':[]};var _0x4a7ff7=_[_0xc963('0x2d')](db[_0xc963('0x2e')][_0xc963('0x2f')],function(_0x1c1f40){return{'name':_0x1c1f40[_0xc963('0x30')],'type':_0x1c1f40[_0xc963('0x31')][_0xc963('0x32')]};});_0x5b43c7[_0xc963('0x33')]=_['map'](_0x4a7ff7,_0xc963('0x2b'));_0x5b43c7[_0xc963('0x34')]=_[_0xc963('0x35')](_0x1fdd9d['query']);_0x5b43c7[_0xc963('0x36')]=_[_0xc963('0x37')](_0x5b43c7[_0xc963('0x33')],_0x5b43c7[_0xc963('0x34')]);_0x1a0544[_0xc963('0x38')]=_[_0xc963('0x37')](_0x5b43c7[_0xc963('0x33')],qs[_0xc963('0x39')](_0x1fdd9d[_0xc963('0x34')][_0xc963('0x39')]));_0x1a0544['attributes']=_0x1a0544[_0xc963('0x38')][_0xc963('0x3a')]?_0x1a0544['attributes']:_0x5b43c7[_0xc963('0x33')];if(!_0x1fdd9d[_0xc963('0x34')]['hasOwnProperty'](_0xc963('0x3b'))){_0x1a0544[_0xc963('0x22')]=qs[_0xc963('0x22')](_0x1fdd9d[_0xc963('0x34')][_0xc963('0x22')]);_0x1a0544[_0xc963('0x20')]=qs['offset'](_0x1fdd9d[_0xc963('0x34')][_0xc963('0x20')]);}_0x1a0544[_0xc963('0x3c')]=qs[_0xc963('0x3d')](_0x1fdd9d[_0xc963('0x34')][_0xc963('0x3d')]);_0x1a0544[_0xc963('0x3e')]=qs[_0xc963('0x36')](_['pick'](_0x1fdd9d[_0xc963('0x34')],_0x5b43c7['filters']),_0x4a7ff7);if(_0x1fdd9d[_0xc963('0x34')][_0xc963('0x3f')]){_0x1a0544[_0xc963('0x3e')]=_['merge'](_0x1a0544[_0xc963('0x3e')],{'$or':_[_0xc963('0x2d')](_0x4a7ff7,function(_0x397c40){if(_0x397c40[_0xc963('0x31')]!==_0xc963('0x40')){var _0x2400bb={};_0x2400bb[_0x397c40[_0xc963('0x2b')]]={'$like':'%'+_0x1fdd9d['query'][_0xc963('0x3f')]+'%'};return _0x2400bb;}})});}_0x1a0544=_[_0xc963('0x41')]({},_0x1a0544,_0x1fdd9d['options']);var _0x24fdb8={'where':_0x1a0544[_0xc963('0x3e')]};return db['SugarcrmConfiguration'][_0xc963('0x23')](_0x24fdb8)[_0xc963('0x28')](function(_0x2ab48c){_0xcaa3d0['count']=_0x2ab48c;if(_0x1fdd9d[_0xc963('0x34')][_0xc963('0x42')]){_0x1a0544[_0xc963('0x43')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0xc963('0x44')](_0x1a0544);})[_0xc963('0x28')](function(_0x1311bb){_0xcaa3d0[_0xc963('0x45')]=_0x1311bb;return _0xcaa3d0;})[_0xc963('0x28')](respondWithFilteredResult(_0x22b943,_0x1a0544))['catch'](handleError(_0x22b943,null));};exports[_0xc963('0x46')]=function(_0x1636c9,_0xe5b210){var _0xd40e43={'raw':![],'where':{'id':_0x1636c9[_0xc963('0x47')]['id']}},_0x23c9e5={};_0x23c9e5[_0xc963('0x33')]=_[_0xc963('0x35')](db[_0xc963('0x2e')][_0xc963('0x2f')]);_0x23c9e5[_0xc963('0x34')]=_['keys'](_0x1636c9[_0xc963('0x34')]);_0x23c9e5[_0xc963('0x36')]=_[_0xc963('0x37')](_0x23c9e5['model'],_0x23c9e5[_0xc963('0x34')]);_0xd40e43[_0xc963('0x38')]=_['intersection'](_0x23c9e5[_0xc963('0x33')],qs[_0xc963('0x39')](_0x1636c9['query'][_0xc963('0x39')]));_0xd40e43[_0xc963('0x38')]=_0xd40e43[_0xc963('0x38')][_0xc963('0x3a')]?_0xd40e43['attributes']:_0x23c9e5['model'];if(_0x1636c9[_0xc963('0x34')][_0xc963('0x42')]){_0xd40e43['include']=[{'all':!![]}];}_0xd40e43=_['merge']({},_0xd40e43,_0x1636c9[_0xc963('0x48')]);return db[_0xc963('0x2e')][_0xc963('0x49')](_0xd40e43)['then'](handleEntityNotFound(_0xe5b210,null))[_0xc963('0x28')](respondWithResult(_0xe5b210,null))[_0xc963('0x4a')](handleError(_0xe5b210,null));};exports['create']=function(_0x3431d6,_0xa65a01){return db[_0xc963('0x2e')][_0xc963('0x4b')](_0x3431d6[_0xc963('0x4c')],{})[_0xc963('0x28')](respondWithResult(_0xa65a01,0xc9))[_0xc963('0x4a')](handleError(_0xa65a01,null));};exports['update']=function(_0xbf3e0c,_0x16657e){if(_0xbf3e0c[_0xc963('0x4c')]['id']){delete _0xbf3e0c[_0xc963('0x4c')]['id'];}return db[_0xc963('0x2e')][_0xc963('0x49')]({'where':{'id':_0xbf3e0c['params']['id']}})[_0xc963('0x28')](handleEntityNotFound(_0x16657e,null))[_0xc963('0x28')](saveUpdates(_0xbf3e0c[_0xc963('0x4c')],null))[_0xc963('0x28')](respondWithResult(_0x16657e,null))[_0xc963('0x4a')](handleError(_0x16657e,null));};exports[_0xc963('0x4d')]=function(_0x4ea259,_0x222d7d){return db[_0xc963('0x2e')][_0xc963('0x49')]({'where':{'id':_0x4ea259[_0xc963('0x47')]['id']}})[_0xc963('0x28')](handleEntityNotFound(_0x222d7d,null))[_0xc963('0x28')](removeEntity(_0x222d7d,null))[_0xc963('0x4a')](handleError(_0x222d7d,null));};exports[_0xc963('0x4e')]=function(_0x2f68ca,_0x7ee672,_0x4c3428){var _0x11123a={};var _0x152fda={};var _0x35262a;var _0x2ccb83;return db[_0xc963('0x2e')][_0xc963('0x4f')]({'where':{'id':_0x2f68ca[_0xc963('0x47')]['id']}})['then'](handleEntityNotFound(_0x7ee672,null))['then'](function(_0x66b9da){if(_0x66b9da){_0x35262a=_0x66b9da;_0x152fda[_0xc963('0x33')]=_[_0xc963('0x35')](db[_0xc963('0x50')][_0xc963('0x2f')]);_0x152fda['query']=_[_0xc963('0x35')](_0x2f68ca[_0xc963('0x34')]);_0x152fda[_0xc963('0x36')]=_[_0xc963('0x37')](_0x152fda[_0xc963('0x33')],_0x152fda[_0xc963('0x34')]);_0x11123a['attributes']=_[_0xc963('0x37')](_0x152fda[_0xc963('0x33')],qs[_0xc963('0x39')](_0x2f68ca[_0xc963('0x34')][_0xc963('0x39')]));_0x11123a[_0xc963('0x38')]=_0x11123a[_0xc963('0x38')]['length']?_0x11123a[_0xc963('0x38')]:_0x152fda[_0xc963('0x33')];_0x11123a[_0xc963('0x3c')]=qs['sort'](_0x2f68ca[_0xc963('0x34')][_0xc963('0x3d')]);_0x11123a['where']=qs[_0xc963('0x36')](_[_0xc963('0x51')](_0x2f68ca[_0xc963('0x34')],_0x152fda['filters']));if(_0x2f68ca[_0xc963('0x34')][_0xc963('0x3f')]){_0x11123a[_0xc963('0x3e')]=_['merge'](_0x11123a[_0xc963('0x3e')],{'$or':_[_0xc963('0x2d')](_0x11123a['attributes'],function(_0x31aae9){var _0x1f17f7={};_0x1f17f7[_0x31aae9]={'$like':'%'+_0x2f68ca[_0xc963('0x34')][_0xc963('0x3f')]+'%'};return _0x1f17f7;})});}_0x11123a=_[_0xc963('0x41')]({},_0x11123a,_0x2f68ca['options']);return _0x35262a[_0xc963('0x4e')](_0x11123a);}})[_0xc963('0x28')](function(_0x5463db){if(_0x5463db){_0x2ccb83=_0x5463db[_0xc963('0x3a')];if(!_0x2f68ca[_0xc963('0x34')][_0xc963('0x52')](_0xc963('0x3b'))){_0x11123a[_0xc963('0x22')]=qs[_0xc963('0x22')](_0x2f68ca[_0xc963('0x34')]['limit']);_0x11123a['offset']=qs[_0xc963('0x20')](_0x2f68ca[_0xc963('0x34')][_0xc963('0x20')]);}return _0x35262a[_0xc963('0x4e')](_0x11123a);}})[_0xc963('0x28')](function(_0xa7dabc){if(_0xa7dabc){return _0xa7dabc?{'count':_0x2ccb83,'rows':_0xa7dabc}:null;}})['then'](respondWithResult(_0x7ee672,null))[_0xc963('0x4a')](handleError(_0x7ee672,null));};exports[_0xc963('0x53')]=function(_0x5ad619,_0x1367a5,_0xcfbb23){var _0x1b6e0e={};var _0x1700ea={};var _0x503d8b;var _0x1b045b;return db[_0xc963('0x2e')][_0xc963('0x4f')]({'where':{'id':_0x5ad619[_0xc963('0x47')]['id']}})[_0xc963('0x28')](handleEntityNotFound(_0x1367a5,null))[_0xc963('0x28')](function(_0x43b39){if(_0x43b39){_0x503d8b=_0x43b39;_0x1700ea['model']=_[_0xc963('0x35')](db[_0xc963('0x50')]['rawAttributes']);_0x1700ea[_0xc963('0x34')]=_[_0xc963('0x35')](_0x5ad619[_0xc963('0x34')]);_0x1700ea[_0xc963('0x36')]=_[_0xc963('0x37')](_0x1700ea[_0xc963('0x33')],_0x1700ea[_0xc963('0x34')]);_0x1b6e0e[_0xc963('0x38')]=_['intersection'](_0x1700ea[_0xc963('0x33')],qs[_0xc963('0x39')](_0x5ad619['query']['fields']));_0x1b6e0e[_0xc963('0x38')]=_0x1b6e0e[_0xc963('0x38')][_0xc963('0x3a')]?_0x1b6e0e[_0xc963('0x38')]:_0x1700ea['model'];_0x1b6e0e[_0xc963('0x3c')]=qs[_0xc963('0x3d')](_0x5ad619[_0xc963('0x34')][_0xc963('0x3d')]);_0x1b6e0e['where']=qs[_0xc963('0x36')](_['pick'](_0x5ad619[_0xc963('0x34')],_0x1700ea[_0xc963('0x36')]));if(_0x5ad619[_0xc963('0x34')]['filter']){_0x1b6e0e[_0xc963('0x3e')]=_[_0xc963('0x41')](_0x1b6e0e[_0xc963('0x3e')],{'$or':_[_0xc963('0x2d')](_0x1b6e0e[_0xc963('0x38')],function(_0x2528ea){var _0x5beff8={};_0x5beff8[_0x2528ea]={'$like':'%'+_0x5ad619['query'][_0xc963('0x3f')]+'%'};return _0x5beff8;})});}_0x1b6e0e=_[_0xc963('0x41')]({},_0x1b6e0e,_0x5ad619[_0xc963('0x48')]);return _0x503d8b[_0xc963('0x53')](_0x1b6e0e);}})[_0xc963('0x28')](function(_0x39a7ac){if(_0x39a7ac){_0x1b045b=_0x39a7ac['length'];if(!_0x5ad619[_0xc963('0x34')]['hasOwnProperty'](_0xc963('0x3b'))){_0x1b6e0e[_0xc963('0x22')]=qs[_0xc963('0x22')](_0x5ad619[_0xc963('0x34')]['limit']);_0x1b6e0e[_0xc963('0x20')]=qs['offset'](_0x5ad619[_0xc963('0x34')]['offset']);}return _0x503d8b[_0xc963('0x53')](_0x1b6e0e);}})[_0xc963('0x28')](function(_0x1ecccc){if(_0x1ecccc){return _0x1ecccc?{'count':_0x1b045b,'rows':_0x1ecccc}:null;}})[_0xc963('0x28')](respondWithResult(_0x1367a5,null))[_0xc963('0x4a')](handleError(_0x1367a5,null));};exports[_0xc963('0x54')]=function(_0x4b9f13,_0x3cb473,_0x3d8799){var _0x3c30cc={};var _0x19ba7e={};var _0x11c3dc;var _0x133772;return db[_0xc963('0x2e')]['findOne']({'where':{'id':_0x4b9f13['params']['id']}})[_0xc963('0x28')](handleEntityNotFound(_0x3cb473,null))[_0xc963('0x28')](function(_0x15bd34){if(_0x15bd34){_0x11c3dc=_0x15bd34;_0x19ba7e[_0xc963('0x33')]=_[_0xc963('0x35')](db[_0xc963('0x50')]['rawAttributes']);_0x19ba7e['query']=_[_0xc963('0x35')](_0x4b9f13['query']);_0x19ba7e[_0xc963('0x36')]=_[_0xc963('0x37')](_0x19ba7e[_0xc963('0x33')],_0x19ba7e['query']);_0x3c30cc[_0xc963('0x38')]=_[_0xc963('0x37')](_0x19ba7e[_0xc963('0x33')],qs['fields'](_0x4b9f13[_0xc963('0x34')][_0xc963('0x39')]));_0x3c30cc[_0xc963('0x38')]=_0x3c30cc[_0xc963('0x38')][_0xc963('0x3a')]?_0x3c30cc['attributes']:_0x19ba7e[_0xc963('0x33')];_0x3c30cc['order']=qs[_0xc963('0x3d')](_0x4b9f13[_0xc963('0x34')]['sort']);_0x3c30cc[_0xc963('0x3e')]=qs[_0xc963('0x36')](_[_0xc963('0x51')](_0x4b9f13[_0xc963('0x34')],_0x19ba7e[_0xc963('0x36')]));if(_0x4b9f13[_0xc963('0x34')][_0xc963('0x3f')]){_0x3c30cc[_0xc963('0x3e')]=_[_0xc963('0x41')](_0x3c30cc[_0xc963('0x3e')],{'$or':_['map'](_0x3c30cc[_0xc963('0x38')],function(_0x236922){var _0x608579={};_0x608579[_0x236922]={'$like':'%'+_0x4b9f13[_0xc963('0x34')]['filter']+'%'};return _0x608579;})});}_0x3c30cc=_[_0xc963('0x41')]({},_0x3c30cc,_0x4b9f13[_0xc963('0x48')]);return _0x11c3dc['getDescriptions'](_0x3c30cc);}})['then'](function(_0x3546bc){if(_0x3546bc){_0x133772=_0x3546bc[_0xc963('0x3a')];if(!_0x4b9f13[_0xc963('0x34')][_0xc963('0x52')]('nolimit')){_0x3c30cc[_0xc963('0x22')]=qs[_0xc963('0x22')](_0x4b9f13['query']['limit']);_0x3c30cc[_0xc963('0x20')]=qs[_0xc963('0x20')](_0x4b9f13[_0xc963('0x34')]['offset']);}return _0x11c3dc[_0xc963('0x54')](_0x3c30cc);}})[_0xc963('0x28')](function(_0x2057e8){if(_0x2057e8){return _0x2057e8?{'count':_0x133772,'rows':_0x2057e8}:null;}})['then'](respondWithResult(_0x3cb473,null))[_0xc963('0x4a')](handleError(_0x3cb473,null));};
\ No newline at end of file
index 57bac46..392433f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c0c=['../../config/environment','exports','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2dc5b7,_0x3837ba){var _0x4edb5b=function(_0x3ed644){while(--_0x3ed644){_0x2dc5b7['push'](_0x2dc5b7['shift']());}};_0x4edb5b(++_0x3837ba);}(_0x9c0c,0xba));var _0xc9c0=function(_0xe73080,_0x24c56d){_0xe73080=_0xe73080-0x0;var _0x12cbc4=_0x9c0c[_0xe73080];return _0x12cbc4;};'use strict';var _=require(_0xc9c0('0x0'));var util=require(_0xc9c0('0x1'));var logger=require(_0xc9c0('0x2'))(_0xc9c0('0x3'));var moment=require(_0xc9c0('0x4'));var BPromise=require(_0xc9c0('0x5'));var rp=require(_0xc9c0('0x6'));var fs=require('fs');var path=require(_0xc9c0('0x7'));var rimraf=require(_0xc9c0('0x8'));var config=require(_0xc9c0('0x9'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0xc9c0('0xa')]=function(_0x288fa6,_0x5dab5a){return _0x288fa6['define'](_0xc9c0('0xb'),attributes,{'tableName':_0xc9c0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2197=['request-promise','path','../../config/environment','int_sugarcrm_configurations','util','../../config/logger','moment','bluebird'];(function(_0x23eaf2,_0x465cfb){var _0x54efb4=function(_0x5f3727){while(--_0x5f3727){_0x23eaf2['push'](_0x23eaf2['shift']());}};_0x54efb4(++_0x465cfb);}(_0x2197,0x1ec));var _0x7219=function(_0x43b8ce,_0x51c065){_0x43b8ce=_0x43b8ce-0x0;var _0x18fa91=_0x2197[_0x43b8ce];return _0x18fa91;};'use strict';var _=require('lodash');var util=require(_0x7219('0x0'));var logger=require(_0x7219('0x1'))('api');var moment=require(_0x7219('0x2'));var BPromise=require(_0x7219('0x3'));var rp=require(_0x7219('0x4'));var fs=require('fs');var path=require(_0x7219('0x5'));var rimraf=require('rimraf');var config=require(_0x7219('0x6'));var attributes=require('./intSugarcrmConfiguration.attributes');module['exports']=function(_0x1626db,_0x2eb0c1){return _0x1626db['define']('SugarcrmConfiguration',attributes,{'tableName':_0x7219('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6e912bb..175264f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x230c=['http','request','then','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x20589d,_0x55d5bf){var _0x422de9=function(_0x44cbbb){while(--_0x44cbbb){_0x20589d['push'](_0x20589d['shift']());}};_0x422de9(++_0x55d5bf);}(_0x230c,0xa7));var _0xc230=function(_0x1ebce2,_0x10e903){_0x1ebce2=_0x1ebce2-0x0;var _0x4a330c=_0x230c[_0x1ebce2];return _0x4a330c;};'use strict';var _=require(_0xc230('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc230('0x1'));var rs=require(_0xc230('0x2'));var fs=require('fs');var Redis=require(_0xc230('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc230('0x4'));var logger=require(_0xc230('0x5'))(_0xc230('0x6'));var config=require('../../config/environment');var jayson=require(_0xc230('0x7'));var client=jayson[_0xc230('0x8')][_0xc230('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x86dd25,_0x1ab7e8,_0xb2ebf7){return new BPromise(function(_0x466b59,_0x3478f7){return client[_0xc230('0xa')](_0x86dd25,_0xb2ebf7)[_0xc230('0xb')](function(_0xd2cf8e){logger['info'](_0xc230('0xc'),_0x1ab7e8,_0xc230('0xd'));logger[_0xc230('0xe')](_0xc230('0xf'),_0x1ab7e8,_0xc230('0xd'),JSON[_0xc230('0x10')](_0xd2cf8e));if(_0xd2cf8e[_0xc230('0x11')]){if(_0xd2cf8e[_0xc230('0x11')]['code']===0x1f4){logger['error'](_0xc230('0xc'),_0x1ab7e8,_0xd2cf8e[_0xc230('0x11')][_0xc230('0x12')]);return _0x3478f7(_0xd2cf8e[_0xc230('0x11')][_0xc230('0x12')]);}logger[_0xc230('0x11')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x1ab7e8,_0xd2cf8e[_0xc230('0x11')][_0xc230('0x12')]);return _0x466b59(_0xd2cf8e[_0xc230('0x11')]['message']);}else{logger[_0xc230('0x13')](_0xc230('0xc'),_0x1ab7e8,'request\x20sent');_0x466b59(_0xd2cf8e[_0xc230('0x14')]['message']);}})[_0xc230('0x15')](function(_0x1a4990){logger[_0xc230('0x11')](_0xc230('0xc'),_0x1ab7e8,_0x1a4990);_0x3478f7(_0x1a4990);});});}
\ No newline at end of file
+var _0xc036=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x34df9a,_0x3dfedb){var _0x3a1a3e=function(_0x45820b){while(--_0x45820b){_0x34df9a['push'](_0x34df9a['shift']());}};_0x3a1a3e(++_0x3dfedb);}(_0xc036,0x138));var _0x6c03=function(_0x5acaea,_0x442cb0){_0x5acaea=_0x5acaea-0x0;var _0x509dfa=_0xc036[_0x5acaea];return _0x509dfa;};'use strict';var _=require(_0x6c03('0x0'));var util=require('util');var moment=require(_0x6c03('0x1'));var BPromise=require(_0x6c03('0x2'));var rs=require(_0x6c03('0x3'));var fs=require('fs');var Redis=require(_0x6c03('0x4'));var db=require(_0x6c03('0x5'))['db'];var utils=require(_0x6c03('0x6'));var logger=require(_0x6c03('0x7'))(_0x6c03('0x8'));var config=require(_0x6c03('0x9'));var jayson=require(_0x6c03('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x380314,_0x5778f1,_0x58071f){return new BPromise(function(_0x480143,_0xc438d5){return client['request'](_0x380314,_0x58071f)[_0x6c03('0xb')](function(_0x2e02af){logger[_0x6c03('0xc')](_0x6c03('0xd'),_0x5778f1,_0x6c03('0xe'));logger[_0x6c03('0xf')](_0x6c03('0x10'),_0x5778f1,_0x6c03('0xe'),JSON[_0x6c03('0x11')](_0x2e02af));if(_0x2e02af[_0x6c03('0x12')]){if(_0x2e02af[_0x6c03('0x12')]['code']===0x1f4){logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x5778f1,_0x2e02af[_0x6c03('0x12')]['message']);return _0xc438d5(_0x2e02af[_0x6c03('0x12')]['message']);}logger[_0x6c03('0x12')](_0x6c03('0xd'),_0x5778f1,_0x2e02af['error']['message']);return _0x480143(_0x2e02af[_0x6c03('0x12')][_0x6c03('0x13')]);}else{logger[_0x6c03('0xc')](_0x6c03('0xd'),_0x5778f1,_0x6c03('0xe'));_0x480143(_0x2e02af[_0x6c03('0x14')][_0x6c03('0x13')]);}})[_0x6c03('0x15')](function(_0x5d89ce){logger[_0x6c03('0x12')](_0x6c03('0xd'),_0x5778f1,_0x5d89ce);_0xc438d5(_0x5d89ce);});});}
\ No newline at end of file
index 1a81d6e..1bae5e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7a0=['put','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','/:id','show'];(function(_0x25a33c,_0xa49c28){var _0x51fe9b=function(_0x3f1405){while(--_0x3f1405){_0x25a33c['push'](_0x25a33c['shift']());}};_0x51fe9b(++_0xa49c28);}(_0xa7a0,0x7a));var _0x0a7a=function(_0x2d33a8,_0x467975){_0x2d33a8=_0x2d33a8-0x0;var _0x5d62d0=_0xa7a0[_0x2d33a8];return _0x5d62d0;};'use strict';var multer=require(_0x0a7a('0x0'));var util=require(_0x0a7a('0x1'));var path=require('path');var timeout=require(_0x0a7a('0x2'));var express=require(_0x0a7a('0x3'));var router=express[_0x0a7a('0x4')]();var fs_extra=require(_0x0a7a('0x5'));var auth=require(_0x0a7a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0a7a('0x7'));var controller=require(_0x0a7a('0x8'));router[_0x0a7a('0x9')]('/',auth[_0x0a7a('0xa')](),controller['index']);router[_0x0a7a('0x9')](_0x0a7a('0xb'),auth[_0x0a7a('0xa')](),controller[_0x0a7a('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x0a7a('0xd')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x0a7a('0xe')]('/:id',auth[_0x0a7a('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xdbbe=['../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','connect-timeout','express','fs-extra'];(function(_0x40dcd1,_0x5cd1da){var _0x5c056b=function(_0x87a3a7){while(--_0x87a3a7){_0x40dcd1['push'](_0x40dcd1['shift']());}};_0x5c056b(++_0x5cd1da);}(_0xdbbe,0xc8));var _0xedbb=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0xdbbe[_0xbd08b4];return _0x314f1e;};'use strict';var multer=require(_0xedbb('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xedbb('0x1'));var express=require(_0xedbb('0x2'));var router=express['Router']();var fs_extra=require(_0xedbb('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xedbb('0x4'));var config=require('../../config/environment');var controller=require(_0xedbb('0x5'));router[_0xedbb('0x6')]('/',auth[_0xedbb('0x7')](),controller[_0xedbb('0x8')]);router[_0xedbb('0x6')](_0xedbb('0x9'),auth['isAuthenticated'](),controller[_0xedbb('0xa')]);router[_0xedbb('0xb')]('/',auth['isAuthenticated'](),controller[_0xedbb('0xc')]);router[_0xedbb('0xd')](_0xedbb('0x9'),auth[_0xedbb('0x7')](),controller['update']);router[_0xedbb('0xe')](_0xedbb('0x9'),auth[_0xedbb('0x7')](),controller[_0xedbb('0xf')]);module[_0xedbb('0x10')]=router;
\ No newline at end of file
index feed01e..5067f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc05=['exports','string','variable','keyValue','picklist','STRING','ENUM','customVariable','sequelize'];(function(_0x673722,_0x275d7e){var _0x21249c=function(_0x25b4e7){while(--_0x25b4e7){_0x673722['push'](_0x673722['shift']());}};_0x21249c(++_0x275d7e);}(_0xcc05,0x15e));var _0x5cc0=function(_0x8b8f41,_0x56e288){_0x8b8f41=_0x8b8f41-0x0;var _0xe6645f=_0xcc05[_0x8b8f41];return _0xe6645f;};'use strict';var Sequelize=require(_0x5cc0('0x0'));module[_0x5cc0('0x1')]={'type':{'type':Sequelize['ENUM'](_0x5cc0('0x2'),_0x5cc0('0x3'),'customVariable',_0x5cc0('0x4'),_0x5cc0('0x5')),'defaultValue':_0x5cc0('0x2')},'content':{'type':Sequelize[_0x5cc0('0x6')]},'key':{'type':Sequelize[_0x5cc0('0x6')]},'keyType':{'type':Sequelize[_0x5cc0('0x7')]('string','variable',_0x5cc0('0x8'))},'keyContent':{'type':Sequelize[_0x5cc0('0x6')]},'idField':{'type':Sequelize[_0x5cc0('0x6')]},'nameField':{'type':Sequelize[_0x5cc0('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5cc0('0x6')]}};
\ No newline at end of file
+var _0x7c26=['picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x4aca1b,_0x5741eb){var _0x6bdc98=function(_0x1bbfb8){while(--_0x1bbfb8){_0x4aca1b['push'](_0x4aca1b['shift']());}};_0x6bdc98(++_0x5741eb);}(_0x7c26,0x189));var _0x67c2=function(_0x216b43,_0x293026){_0x216b43=_0x216b43-0x0;var _0x43ce31=_0x7c26[_0x216b43];return _0x43ce31;};'use strict';var Sequelize=require(_0x67c2('0x0'));module[_0x67c2('0x1')]={'type':{'type':Sequelize[_0x67c2('0x2')](_0x67c2('0x3'),_0x67c2('0x4'),_0x67c2('0x5'),_0x67c2('0x6'),_0x67c2('0x7')),'defaultValue':_0x67c2('0x3')},'content':{'type':Sequelize[_0x67c2('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x67c2('0x2')](_0x67c2('0x3'),'variable',_0x67c2('0x5'))},'keyContent':{'type':Sequelize[_0x67c2('0x8')]},'idField':{'type':Sequelize[_0x67c2('0x8')]},'nameField':{'type':Sequelize[_0x67c2('0x8')]},'customField':{'type':Sequelize[_0x67c2('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x67c2('0x8')]}};
\ No newline at end of file
index 36fb2f4..e741ba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bd7=['filter','merge','options','include','findAll','rows','catch','params','rawAttributes','includeAll','find','create','body','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','offset','undefined','count','limit','set','Content-Range','json','save','update','then','destroy','error','stack','name','send','SugarcrmField','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x594670,_0x4b9fdd){var _0x36a5b7=function(_0x45471e){while(--_0x45471e){_0x594670['push'](_0x594670['shift']());}};_0x36a5b7(++_0x4b9fdd);}(_0x1bd7,0x9f));var _0x71bd=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1bd7[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x71bd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x71bd('0x1'));var jsonpatch=require(_0x71bd('0x2'));var rp=require('request-promise');var moment=require(_0x71bd('0x3'));var BPromise=require(_0x71bd('0x4'));var Mustache=require(_0x71bd('0x5'));var util=require(_0x71bd('0x6'));var path=require(_0x71bd('0x7'));var sox=require(_0x71bd('0x8'));var csv=require('to-csv');var ejs=require(_0x71bd('0x9'));var fs=require('fs');var fs_extra=require(_0x71bd('0xa'));var _=require(_0x71bd('0xb'));var squel=require(_0x71bd('0xc'));var crypto=require('crypto');var jsforce=require(_0x71bd('0xd'));var deskjs=require(_0x71bd('0xe'));var toCsv=require(_0x71bd('0xf'));var querystring=require(_0x71bd('0x10'));var Papa=require(_0x71bd('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x71bd('0x12'));var hardwareService=require(_0x71bd('0x13'));var logger=require(_0x71bd('0x14'))(_0x71bd('0x15'));var utils=require(_0x71bd('0x16'));var config=require(_0x71bd('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x209d98,_0x2b392d){_0x2b392d=_0x2b392d||0xcc;return function(_0x451ce4){if(_0x451ce4){return _0x209d98['sendStatus'](_0x2b392d);}return _0x209d98[_0x71bd('0x18')](_0x2b392d)[_0x71bd('0x19')]();};}function respondWithResult(_0x582b06,_0x9483ab){_0x9483ab=_0x9483ab||0xc8;return function(_0x2321f0){if(_0x2321f0){return _0x582b06[_0x71bd('0x18')](_0x9483ab)['json'](_0x2321f0);}};}function respondWithFilteredResult(_0x212b32,_0xfbc402){return function(_0x79adde){if(_0x79adde){var _0x1f2cd6=typeof _0xfbc402[_0x71bd('0x1a')]===_0x71bd('0x1b')&&typeof _0xfbc402['limit']===_0x71bd('0x1b');var _0x5b15ed=_0x79adde[_0x71bd('0x1c')];var _0x274edf=_0x1f2cd6?0x0:_0xfbc402[_0x71bd('0x1a')];var _0x2875f9=_0x1f2cd6?_0x79adde[_0x71bd('0x1c')]:_0xfbc402['offset']+_0xfbc402[_0x71bd('0x1d')];var _0x3866d7;if(_0x2875f9>=_0x5b15ed){_0x2875f9=_0x5b15ed;_0x3866d7=0xc8;}else{_0x3866d7=0xce;}_0x212b32['status'](_0x3866d7);return _0x212b32[_0x71bd('0x1e')](_0x71bd('0x1f'),_0x274edf+'-'+_0x2875f9+'/'+_0x5b15ed)[_0x71bd('0x20')](_0x79adde);}return null;};}function patchUpdates(_0xa99c49){return function(_0x866b7d){try{jsonpatch['apply'](_0x866b7d,_0xa99c49,!![]);}catch(_0x45c249){return BPromise['reject'](_0x45c249);}return _0x866b7d[_0x71bd('0x21')]();};}function saveUpdates(_0x117ab3,_0x513e13){return function(_0x20d6d8){if(_0x20d6d8){return _0x20d6d8[_0x71bd('0x22')](_0x117ab3)[_0x71bd('0x23')](function(_0x2e02bc){return _0x2e02bc;});}return null;};}function removeEntity(_0x22f46c,_0x8ebfed){return function(_0x378107){if(_0x378107){return _0x378107[_0x71bd('0x24')]()[_0x71bd('0x23')](function(){_0x22f46c[_0x71bd('0x18')](0xcc)[_0x71bd('0x19')]();});}};}function handleEntityNotFound(_0x6c34cc,_0x26d7a4){return function(_0x4c4069){if(!_0x4c4069){_0x6c34cc['sendStatus'](0x194);}return _0x4c4069;};}function handleError(_0x5d8e5b,_0x1ce8ed){_0x1ce8ed=_0x1ce8ed||0x1f4;return function(_0x9aed2){logger[_0x71bd('0x25')](_0x9aed2[_0x71bd('0x26')]);if(_0x9aed2['name']){delete _0x9aed2[_0x71bd('0x27')];}_0x5d8e5b['status'](_0x1ce8ed)[_0x71bd('0x28')](_0x9aed2);};}exports['index']=function(_0x425c0d,_0xa7ffad){var _0x5b92a2={},_0x2932de={},_0x27ca7c={'count':0x0,'rows':[]};var _0x2967ec=_['map'](db[_0x71bd('0x29')]['rawAttributes'],function(_0x537226){return{'name':_0x537226[_0x71bd('0x2a')],'type':_0x537226[_0x71bd('0x2b')][_0x71bd('0x2c')]};});_0x2932de[_0x71bd('0x2d')]=_[_0x71bd('0x2e')](_0x2967ec,_0x71bd('0x27'));_0x2932de[_0x71bd('0x2f')]=_[_0x71bd('0x30')](_0x425c0d[_0x71bd('0x2f')]);_0x2932de[_0x71bd('0x31')]=_[_0x71bd('0x32')](_0x2932de[_0x71bd('0x2d')],_0x2932de[_0x71bd('0x2f')]);_0x5b92a2[_0x71bd('0x33')]=_[_0x71bd('0x32')](_0x2932de[_0x71bd('0x2d')],qs[_0x71bd('0x34')](_0x425c0d[_0x71bd('0x2f')]['fields']));_0x5b92a2[_0x71bd('0x33')]=_0x5b92a2['attributes'][_0x71bd('0x35')]?_0x5b92a2[_0x71bd('0x33')]:_0x2932de[_0x71bd('0x2d')];if(!_0x425c0d['query'][_0x71bd('0x36')](_0x71bd('0x37'))){_0x5b92a2[_0x71bd('0x1d')]=qs[_0x71bd('0x1d')](_0x425c0d[_0x71bd('0x2f')][_0x71bd('0x1d')]);_0x5b92a2[_0x71bd('0x1a')]=qs['offset'](_0x425c0d[_0x71bd('0x2f')]['offset']);}_0x5b92a2[_0x71bd('0x38')]=qs[_0x71bd('0x39')](_0x425c0d[_0x71bd('0x2f')][_0x71bd('0x39')]);_0x5b92a2[_0x71bd('0x3a')]=qs[_0x71bd('0x31')](_[_0x71bd('0x3b')](_0x425c0d['query'],_0x2932de[_0x71bd('0x31')]),_0x2967ec);if(_0x425c0d['query'][_0x71bd('0x3c')]){_0x5b92a2['where']=_[_0x71bd('0x3d')](_0x5b92a2['where'],{'$or':_[_0x71bd('0x2e')](_0x2967ec,function(_0x4783c2){if(_0x4783c2[_0x71bd('0x2b')]!=='VIRTUAL'){var _0x2606ad={};_0x2606ad[_0x4783c2[_0x71bd('0x27')]]={'$like':'%'+_0x425c0d[_0x71bd('0x2f')][_0x71bd('0x3c')]+'%'};return _0x2606ad;}})});}_0x5b92a2=_['merge']({},_0x5b92a2,_0x425c0d[_0x71bd('0x3e')]);var _0x62bc63={'where':_0x5b92a2[_0x71bd('0x3a')]};return db[_0x71bd('0x29')]['count'](_0x62bc63)[_0x71bd('0x23')](function(_0x16eae2){_0x27ca7c['count']=_0x16eae2;if(_0x425c0d['query']['includeAll']){_0x5b92a2[_0x71bd('0x3f')]=[{'all':!![]}];}return db[_0x71bd('0x29')][_0x71bd('0x40')](_0x5b92a2);})[_0x71bd('0x23')](function(_0x3c8fbe){_0x27ca7c[_0x71bd('0x41')]=_0x3c8fbe;return _0x27ca7c;})['then'](respondWithFilteredResult(_0xa7ffad,_0x5b92a2))[_0x71bd('0x42')](handleError(_0xa7ffad,null));};exports['show']=function(_0x28663d,_0x4b4ce7){var _0x36c7af={'raw':!![],'where':{'id':_0x28663d[_0x71bd('0x43')]['id']}},_0xba252e={};_0xba252e[_0x71bd('0x2d')]=_[_0x71bd('0x30')](db[_0x71bd('0x29')][_0x71bd('0x44')]);_0xba252e[_0x71bd('0x2f')]=_[_0x71bd('0x30')](_0x28663d[_0x71bd('0x2f')]);_0xba252e[_0x71bd('0x31')]=_[_0x71bd('0x32')](_0xba252e['model'],_0xba252e[_0x71bd('0x2f')]);_0x36c7af[_0x71bd('0x33')]=_['intersection'](_0xba252e[_0x71bd('0x2d')],qs[_0x71bd('0x34')](_0x28663d['query'][_0x71bd('0x34')]));_0x36c7af['attributes']=_0x36c7af[_0x71bd('0x33')][_0x71bd('0x35')]?_0x36c7af['attributes']:_0xba252e[_0x71bd('0x2d')];if(_0x28663d[_0x71bd('0x2f')][_0x71bd('0x45')]){_0x36c7af['include']=[{'all':!![]}];}_0x36c7af=_['merge']({},_0x36c7af,_0x28663d['options']);return db[_0x71bd('0x29')][_0x71bd('0x46')](_0x36c7af)[_0x71bd('0x23')](handleEntityNotFound(_0x4b4ce7,null))[_0x71bd('0x23')](respondWithResult(_0x4b4ce7,null))[_0x71bd('0x42')](handleError(_0x4b4ce7,null));};exports['create']=function(_0x1f01ac,_0x2ca169){return db['SugarcrmField'][_0x71bd('0x47')](_0x1f01ac[_0x71bd('0x48')],{})[_0x71bd('0x23')](respondWithResult(_0x2ca169,0xc9))[_0x71bd('0x42')](handleError(_0x2ca169,null));};exports[_0x71bd('0x22')]=function(_0x26c263,_0x22452a){if(_0x26c263[_0x71bd('0x48')]['id']){delete _0x26c263[_0x71bd('0x48')]['id'];}return db['SugarcrmField'][_0x71bd('0x46')]({'where':{'id':_0x26c263[_0x71bd('0x43')]['id']}})[_0x71bd('0x23')](handleEntityNotFound(_0x22452a,null))[_0x71bd('0x23')](saveUpdates(_0x26c263[_0x71bd('0x48')],null))[_0x71bd('0x23')](respondWithResult(_0x22452a,null))[_0x71bd('0x42')](handleError(_0x22452a,null));};exports[_0x71bd('0x24')]=function(_0x4a82e9,_0x5a7afb){return db[_0x71bd('0x29')][_0x71bd('0x46')]({'where':{'id':_0x4a82e9[_0x71bd('0x43')]['id']}})[_0x71bd('0x23')](handleEntityNotFound(_0x5a7afb,null))[_0x71bd('0x23')](removeEntity(_0x5a7afb,null))[_0x71bd('0x42')](handleError(_0x5a7afb,null));};
\ No newline at end of file
+var _0x090a=['rows','catch','show','params','includeAll','find','body','eml-format','rimraf','fast-json-patch','request-promise','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','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','SugarcrmField','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include'];(function(_0x30c7cc,_0x54c445){var _0x4a2e8c=function(_0x105c8e){while(--_0x105c8e){_0x30c7cc['push'](_0x30c7cc['shift']());}};_0x4a2e8c(++_0x54c445);}(_0x090a,0x133));var _0xa090=function(_0x4c3d23,_0x25ed28){_0x4c3d23=_0x4c3d23-0x0;var _0x42e960=_0x090a[_0x4c3d23];return _0x42e960;};'use strict';var emlformat=require(_0xa090('0x0'));var rimraf=require(_0xa090('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa090('0x2'));var rp=require(_0xa090('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa090('0x4'));var util=require('util');var path=require(_0xa090('0x5'));var sox=require(_0xa090('0x6'));var csv=require(_0xa090('0x7'));var ejs=require(_0xa090('0x8'));var fs=require('fs');var fs_extra=require(_0xa090('0x9'));var _=require(_0xa090('0xa'));var squel=require(_0xa090('0xb'));var crypto=require(_0xa090('0xc'));var jsforce=require(_0xa090('0xd'));var deskjs=require(_0xa090('0xe'));var toCsv=require(_0xa090('0x7'));var querystring=require(_0xa090('0xf'));var Papa=require(_0xa090('0x10'));var Redis=require(_0xa090('0x11'));var authService=require(_0xa090('0x12'));var qs=require(_0xa090('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa090('0x14'));var logger=require('../../config/logger')(_0xa090('0x15'));var utils=require(_0xa090('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xa090('0x17'));var db=require(_0xa090('0x18'))['db'];function respondWithStatusCode(_0x46164a,_0x337aad){_0x337aad=_0x337aad||0xcc;return function(_0x168827){if(_0x168827){return _0x46164a[_0xa090('0x19')](_0x337aad);}return _0x46164a['status'](_0x337aad)[_0xa090('0x1a')]();};}function respondWithResult(_0x26d9c7,_0x1407d3){_0x1407d3=_0x1407d3||0xc8;return function(_0x25601e){if(_0x25601e){return _0x26d9c7[_0xa090('0x1b')](_0x1407d3)[_0xa090('0x1c')](_0x25601e);}};}function respondWithFilteredResult(_0xe1f5c9,_0x297e21){return function(_0x1a7314){if(_0x1a7314){var _0x48c5b2=typeof _0x297e21['offset']===_0xa090('0x1d')&&typeof _0x297e21[_0xa090('0x1e')]===_0xa090('0x1d');var _0xd3983=_0x1a7314['count'];var _0x2ad993=_0x48c5b2?0x0:_0x297e21[_0xa090('0x1f')];var _0x19aaf5=_0x48c5b2?_0x1a7314[_0xa090('0x20')]:_0x297e21['offset']+_0x297e21['limit'];var _0x36afd8;if(_0x19aaf5>=_0xd3983){_0x19aaf5=_0xd3983;_0x36afd8=0xc8;}else{_0x36afd8=0xce;}_0xe1f5c9[_0xa090('0x1b')](_0x36afd8);return _0xe1f5c9[_0xa090('0x21')](_0xa090('0x22'),_0x2ad993+'-'+_0x19aaf5+'/'+_0xd3983)[_0xa090('0x1c')](_0x1a7314);}return null;};}function patchUpdates(_0x5e0036){return function(_0x479a66){try{jsonpatch[_0xa090('0x23')](_0x479a66,_0x5e0036,!![]);}catch(_0x553d64){return BPromise['reject'](_0x553d64);}return _0x479a66[_0xa090('0x24')]();};}function saveUpdates(_0x39983b,_0x2f68c6){return function(_0x17693f){if(_0x17693f){return _0x17693f[_0xa090('0x25')](_0x39983b)[_0xa090('0x26')](function(_0x474b6b){return _0x474b6b;});}return null;};}function removeEntity(_0xc60bfd,_0x2f587d){return function(_0x210ae3){if(_0x210ae3){return _0x210ae3[_0xa090('0x27')]()[_0xa090('0x26')](function(){_0xc60bfd[_0xa090('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55a954,_0xfd6cf0){return function(_0x34e50a){if(!_0x34e50a){_0x55a954[_0xa090('0x19')](0x194);}return _0x34e50a;};}function handleError(_0x3f8af2,_0x365f35){_0x365f35=_0x365f35||0x1f4;return function(_0x452734){logger[_0xa090('0x28')](_0x452734[_0xa090('0x29')]);if(_0x452734[_0xa090('0x2a')]){delete _0x452734[_0xa090('0x2a')];}_0x3f8af2[_0xa090('0x1b')](_0x365f35)[_0xa090('0x2b')](_0x452734);};}exports[_0xa090('0x2c')]=function(_0x2f36da,_0x512f0d){var _0xae6cc1={},_0x3e69f8={},_0x23286f={'count':0x0,'rows':[]};var _0x2e18d6=_[_0xa090('0x2d')](db[_0xa090('0x2e')][_0xa090('0x2f')],function(_0x1c21c8){return{'name':_0x1c21c8[_0xa090('0x30')],'type':_0x1c21c8[_0xa090('0x31')]['key']};});_0x3e69f8['model']=_[_0xa090('0x2d')](_0x2e18d6,_0xa090('0x2a'));_0x3e69f8[_0xa090('0x32')]=_[_0xa090('0x33')](_0x2f36da[_0xa090('0x32')]);_0x3e69f8[_0xa090('0x34')]=_[_0xa090('0x35')](_0x3e69f8[_0xa090('0x36')],_0x3e69f8[_0xa090('0x32')]);_0xae6cc1[_0xa090('0x37')]=_[_0xa090('0x35')](_0x3e69f8[_0xa090('0x36')],qs[_0xa090('0x38')](_0x2f36da['query'][_0xa090('0x38')]));_0xae6cc1['attributes']=_0xae6cc1[_0xa090('0x37')][_0xa090('0x39')]?_0xae6cc1[_0xa090('0x37')]:_0x3e69f8['model'];if(!_0x2f36da[_0xa090('0x32')]['hasOwnProperty'](_0xa090('0x3a'))){_0xae6cc1['limit']=qs['limit'](_0x2f36da[_0xa090('0x32')][_0xa090('0x1e')]);_0xae6cc1[_0xa090('0x1f')]=qs['offset'](_0x2f36da[_0xa090('0x32')]['offset']);}_0xae6cc1[_0xa090('0x3b')]=qs[_0xa090('0x3c')](_0x2f36da[_0xa090('0x32')][_0xa090('0x3c')]);_0xae6cc1[_0xa090('0x3d')]=qs[_0xa090('0x34')](_[_0xa090('0x3e')](_0x2f36da[_0xa090('0x32')],_0x3e69f8[_0xa090('0x34')]),_0x2e18d6);if(_0x2f36da[_0xa090('0x32')][_0xa090('0x3f')]){_0xae6cc1[_0xa090('0x3d')]=_[_0xa090('0x40')](_0xae6cc1['where'],{'$or':_[_0xa090('0x2d')](_0x2e18d6,function(_0x33a41d){if(_0x33a41d[_0xa090('0x31')]!==_0xa090('0x41')){var _0x4cb5cc={};_0x4cb5cc[_0x33a41d['name']]={'$like':'%'+_0x2f36da[_0xa090('0x32')][_0xa090('0x3f')]+'%'};return _0x4cb5cc;}})});}_0xae6cc1=_['merge']({},_0xae6cc1,_0x2f36da[_0xa090('0x42')]);var _0xd6908e={'where':_0xae6cc1[_0xa090('0x3d')]};return db['SugarcrmField']['count'](_0xd6908e)[_0xa090('0x26')](function(_0x3f43f2){_0x23286f[_0xa090('0x20')]=_0x3f43f2;if(_0x2f36da[_0xa090('0x32')]['includeAll']){_0xae6cc1[_0xa090('0x43')]=[{'all':!![]}];}return db[_0xa090('0x2e')]['findAll'](_0xae6cc1);})[_0xa090('0x26')](function(_0x2032ea){_0x23286f[_0xa090('0x44')]=_0x2032ea;return _0x23286f;})['then'](respondWithFilteredResult(_0x512f0d,_0xae6cc1))[_0xa090('0x45')](handleError(_0x512f0d,null));};exports[_0xa090('0x46')]=function(_0x49f658,_0x38afa6){var _0x19f357={'raw':!![],'where':{'id':_0x49f658[_0xa090('0x47')]['id']}},_0x3abc8b={};_0x3abc8b[_0xa090('0x36')]=_[_0xa090('0x33')](db[_0xa090('0x2e')]['rawAttributes']);_0x3abc8b['query']=_[_0xa090('0x33')](_0x49f658[_0xa090('0x32')]);_0x3abc8b[_0xa090('0x34')]=_[_0xa090('0x35')](_0x3abc8b[_0xa090('0x36')],_0x3abc8b['query']);_0x19f357[_0xa090('0x37')]=_[_0xa090('0x35')](_0x3abc8b[_0xa090('0x36')],qs['fields'](_0x49f658[_0xa090('0x32')][_0xa090('0x38')]));_0x19f357[_0xa090('0x37')]=_0x19f357[_0xa090('0x37')][_0xa090('0x39')]?_0x19f357['attributes']:_0x3abc8b[_0xa090('0x36')];if(_0x49f658[_0xa090('0x32')][_0xa090('0x48')]){_0x19f357[_0xa090('0x43')]=[{'all':!![]}];}_0x19f357=_[_0xa090('0x40')]({},_0x19f357,_0x49f658[_0xa090('0x42')]);return db[_0xa090('0x2e')][_0xa090('0x49')](_0x19f357)[_0xa090('0x26')](handleEntityNotFound(_0x38afa6,null))['then'](respondWithResult(_0x38afa6,null))[_0xa090('0x45')](handleError(_0x38afa6,null));};exports['create']=function(_0x1bba33,_0x190450){return db[_0xa090('0x2e')]['create'](_0x1bba33[_0xa090('0x4a')],{})[_0xa090('0x26')](respondWithResult(_0x190450,0xc9))[_0xa090('0x45')](handleError(_0x190450,null));};exports[_0xa090('0x25')]=function(_0x549210,_0x3c8358){if(_0x549210[_0xa090('0x4a')]['id']){delete _0x549210[_0xa090('0x4a')]['id'];}return db[_0xa090('0x2e')]['find']({'where':{'id':_0x549210[_0xa090('0x47')]['id']}})[_0xa090('0x26')](handleEntityNotFound(_0x3c8358,null))[_0xa090('0x26')](saveUpdates(_0x549210['body'],null))[_0xa090('0x26')](respondWithResult(_0x3c8358,null))[_0xa090('0x45')](handleError(_0x3c8358,null));};exports[_0xa090('0x27')]=function(_0x2eddeb,_0x2fcd34){return db[_0xa090('0x2e')]['find']({'where':{'id':_0x2eddeb[_0xa090('0x47')]['id']}})['then'](handleEntityNotFound(_0x2fcd34,null))[_0xa090('0x26')](removeEntity(_0x2fcd34,null))['catch'](handleError(_0x2fcd34,null));};
\ No newline at end of file
index 681fea3..274b7ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3238=['moment','request-promise','path','../../config/environment','FieldId','../../config/logger','api'];(function(_0x163459,_0x265db5){var _0x21198b=function(_0x58c70d){while(--_0x58c70d){_0x163459['push'](_0x163459['shift']());}};_0x21198b(++_0x265db5);}(_0x3238,0x1e8));var _0x8323=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3238[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8323('0x0'))(_0x8323('0x1'));var moment=require(_0x8323('0x2'));var BPromise=require('bluebird');var rp=require(_0x8323('0x3'));var fs=require('fs');var path=require(_0x8323('0x4'));var rimraf=require('rimraf');var config=require(_0x8323('0x5'));var attributes=require('./intSugarcrmField.attributes');module['exports']=function(_0x4d660e,_0x108963){return _0x4d660e['define']('SugarcrmField',attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':['idField',_0x8323('0x6')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe25e=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','idField','lodash','util','../../config/logger','api'];(function(_0x567917,_0x1b1a4b){var _0x5a0b19=function(_0x115502){while(--_0x115502){_0x567917['push'](_0x567917['shift']());}};_0x5a0b19(++_0x1b1a4b);}(_0xe25e,0x10a));var _0xee25=function(_0x5bd98b,_0x22bf1c){_0x5bd98b=_0x5bd98b-0x0;var _0x49efe7=_0xe25e[_0x5bd98b];return _0x49efe7;};'use strict';var _=require(_0xee25('0x0'));var util=require(_0xee25('0x1'));var logger=require(_0xee25('0x2'))(_0xee25('0x3'));var moment=require(_0xee25('0x4'));var BPromise=require(_0xee25('0x5'));var rp=require(_0xee25('0x6'));var fs=require('fs');var path=require(_0xee25('0x7'));var rimraf=require(_0xee25('0x8'));var config=require(_0xee25('0x9'));var attributes=require(_0xee25('0xa'));module[_0xee25('0xb')]=function(_0x28f936,_0x3c4d78){return _0x28f936[_0xee25('0xc')](_0xee25('0xd'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0xee25('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 2fb1308..e07e28e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb84f=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','lodash','util','moment','bluebird'];(function(_0x463447,_0x504bb4){var _0x4adb6b=function(_0x27348e){while(--_0x27348e){_0x463447['push'](_0x463447['shift']());}};_0x4adb6b(++_0x504bb4);}(_0xb84f,0x164));var _0xfb84=function(_0x2eb2f7,_0x2b85c6){_0x2eb2f7=_0x2eb2f7-0x0;var _0x5b00f7=_0xb84f[_0x2eb2f7];return _0x5b00f7;};'use strict';var _=require(_0xfb84('0x0'));var util=require(_0xfb84('0x1'));var moment=require(_0xfb84('0x2'));var BPromise=require(_0xfb84('0x3'));var rs=require(_0xfb84('0x4'));var fs=require('fs');var Redis=require(_0xfb84('0x5'));var db=require(_0xfb84('0x6'))['db'];var utils=require(_0xfb84('0x7'));var logger=require('../../config/logger')(_0xfb84('0x8'));var config=require(_0xfb84('0x9'));var jayson=require(_0xfb84('0xa'));var client=jayson[_0xfb84('0xb')][_0xfb84('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1d57db,_0x445e4e,_0x53d78d){return new BPromise(function(_0x1d24f1,_0x1d18f9){return client[_0xfb84('0xd')](_0x1d57db,_0x53d78d)[_0xfb84('0xe')](function(_0x1e1c54){logger['info'](_0xfb84('0xf'),_0x445e4e,_0xfb84('0x10'));logger[_0xfb84('0x11')](_0xfb84('0x12'),_0x445e4e,_0xfb84('0x10'),JSON[_0xfb84('0x13')](_0x1e1c54));if(_0x1e1c54['error']){if(_0x1e1c54[_0xfb84('0x14')][_0xfb84('0x15')]===0x1f4){logger['error'](_0xfb84('0xf'),_0x445e4e,_0x1e1c54[_0xfb84('0x14')][_0xfb84('0x16')]);return _0x1d18f9(_0x1e1c54[_0xfb84('0x14')][_0xfb84('0x16')]);}logger['error'](_0xfb84('0xf'),_0x445e4e,_0x1e1c54[_0xfb84('0x14')][_0xfb84('0x16')]);return _0x1d24f1(_0x1e1c54['error'][_0xfb84('0x16')]);}else{logger[_0xfb84('0x17')]('SugarcrmField,\x20%s,\x20%s',_0x445e4e,_0xfb84('0x10'));_0x1d24f1(_0x1e1c54['result'][_0xfb84('0x16')]);}})['catch'](function(_0x2b8177){logger[_0xfb84('0x14')]('SugarcrmField,\x20%s,\x20%s',_0x445e4e,_0x2b8177);_0x1d18f9(_0x2b8177);});});}
\ No newline at end of file
+var _0x67e0=['info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','then'];(function(_0x4dbba7,_0x34d6d1){var _0x43ef83=function(_0x27acf1){while(--_0x27acf1){_0x4dbba7['push'](_0x4dbba7['shift']());}};_0x43ef83(++_0x34d6d1);}(_0x67e0,0x129));var _0x067e=function(_0x161ab6,_0x51ee5c){_0x161ab6=_0x161ab6-0x0;var _0x437d12=_0x67e0[_0x161ab6];return _0x437d12;};'use strict';var _=require(_0x067e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x067e('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x067e('0x2'));var db=require(_0x067e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x067e('0x4'))('rpc');var config=require(_0x067e('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x067e('0x6')][_0x067e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x492a36,_0x5b9714,_0x1c8b92){return new BPromise(function(_0x51855d,_0x456873){return client['request'](_0x492a36,_0x1c8b92)[_0x067e('0x8')](function(_0x1955fc){logger[_0x067e('0x9')](_0x067e('0xa'),_0x5b9714,_0x067e('0xb'));logger[_0x067e('0xc')](_0x067e('0xd'),_0x5b9714,'request\x20sent',JSON[_0x067e('0xe')](_0x1955fc));if(_0x1955fc[_0x067e('0xf')]){if(_0x1955fc['error'][_0x067e('0x10')]===0x1f4){logger[_0x067e('0xf')]('SugarcrmField,\x20%s,\x20%s',_0x5b9714,_0x1955fc[_0x067e('0xf')]['message']);return _0x456873(_0x1955fc[_0x067e('0xf')]['message']);}logger[_0x067e('0xf')](_0x067e('0xa'),_0x5b9714,_0x1955fc['error'][_0x067e('0x11')]);return _0x51855d(_0x1955fc[_0x067e('0xf')][_0x067e('0x11')]);}else{logger[_0x067e('0x9')](_0x067e('0xa'),_0x5b9714,_0x067e('0xb'));_0x51855d(_0x1955fc['result'][_0x067e('0x11')]);}})['catch'](function(_0x53ca3c){logger[_0x067e('0xf')](_0x067e('0xa'),_0x5b9714,_0x53ca3c);_0x456873(_0x53ca3c);});});}
\ No newline at end of file
index 5a4d12c..c22100b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65f4=['/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','destroy','exports','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0x1e9eab,_0x1bfd13){var _0x1c101d=function(_0x3807ae){while(--_0x3807ae){_0x1e9eab['push'](_0x1e9eab['shift']());}};_0x1c101d(++_0x1bfd13);}(_0x65f4,0x19a));var _0x465f=function(_0x539b89,_0x3220de){_0x539b89=_0x539b89-0x0;var _0x12cd4d=_0x65f4[_0x539b89];return _0x12cd4d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x465f('0x0'));var timeout=require(_0x465f('0x1'));var express=require(_0x465f('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x465f('0x3'));var interaction=require(_0x465f('0x4'));var config=require(_0x465f('0x5'));var controller=require('./intVtigerAccount.controller');router[_0x465f('0x6')]('/',auth[_0x465f('0x7')](),controller[_0x465f('0x8')]);router['get'](_0x465f('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x465f('0x6')](_0x465f('0xa'),auth[_0x465f('0x7')](),controller[_0x465f('0xb')]);router[_0x465f('0x6')](_0x465f('0xc'),auth[_0x465f('0x7')](),controller[_0x465f('0xd')]);router['post']('/',auth[_0x465f('0x7')](),controller[_0x465f('0xe')]);router[_0x465f('0xf')](_0x465f('0xa'),auth[_0x465f('0x7')](),controller[_0x465f('0x10')]);router[_0x465f('0x11')](_0x465f('0x9'),auth[_0x465f('0x7')](),controller['update']);router['delete'](_0x465f('0x9'),auth[_0x465f('0x7')](),controller[_0x465f('0x12')]);module[_0x465f('0x13')]=router;
\ No newline at end of file
+var _0xdb5c=['destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','/:id','delete'];(function(_0xfaafbc,_0xab45d6){var _0x3e398d=function(_0x4d4417){while(--_0x4d4417){_0xfaafbc['push'](_0xfaafbc['shift']());}};_0x3e398d(++_0xab45d6);}(_0xdb5c,0x169));var _0xcdb5=function(_0xc8f6b3,_0x52dcbc){_0xc8f6b3=_0xc8f6b3-0x0;var _0x2e985d=_0xdb5c[_0xc8f6b3];return _0x2e985d;};'use strict';var multer=require(_0xcdb5('0x0'));var util=require(_0xcdb5('0x1'));var path=require(_0xcdb5('0x2'));var timeout=require(_0xcdb5('0x3'));var express=require(_0xcdb5('0x4'));var router=express['Router']();var fs_extra=require(_0xcdb5('0x5'));var auth=require(_0xcdb5('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xcdb5('0x7'));var controller=require(_0xcdb5('0x8'));router[_0xcdb5('0x9')]('/',auth[_0xcdb5('0xa')](),controller[_0xcdb5('0xb')]);router[_0xcdb5('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xcdb5('0xc')]);router[_0xcdb5('0x9')](_0xcdb5('0xd'),auth[_0xcdb5('0xa')](),controller[_0xcdb5('0xe')]);router['get'](_0xcdb5('0xf'),auth[_0xcdb5('0xa')](),controller[_0xcdb5('0x10')]);router['post']('/',auth[_0xcdb5('0xa')](),controller[_0xcdb5('0x11')]);router[_0xcdb5('0x12')](_0xcdb5('0xd'),auth[_0xcdb5('0xa')](),controller[_0xcdb5('0x13')]);router[_0xcdb5('0x14')](_0xcdb5('0x15'),auth[_0xcdb5('0xa')](),controller['update']);router[_0xcdb5('0x16')](_0xcdb5('0x15'),auth[_0xcdb5('0xa')](),controller[_0xcdb5('0x17')]);module['exports']=router;
\ No newline at end of file
index 46d9e65..4f94b76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x480d=['STRING','sequelize'];(function(_0x44c471,_0x2da701){var _0x4d499b=function(_0x1342d4){while(--_0x1342d4){_0x44c471['push'](_0x44c471['shift']());}};_0x4d499b(++_0x2da701);}(_0x480d,0x183));var _0xd480=function(_0x5ad41b,_0x2a42e6){_0x5ad41b=_0x5ad41b-0x0;var _0x5c12ef=_0x480d[_0x5ad41b];return _0x5c12ef;};'use strict';var Sequelize=require(_0xd480('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xd480('0x1')]},'username':{'type':Sequelize[_0xd480('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xd480('0x1')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0xd480('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xd480('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0xd480('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x16f4=['exports','STRING','HelpDesk','sequelize'];(function(_0x590d8c,_0x344eef){var _0x4e475f=function(_0x1f1cf3){while(--_0x1f1cf3){_0x590d8c['push'](_0x590d8c['shift']());}};_0x4e475f(++_0x344eef);}(_0x16f4,0x77));var _0x416f=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x16f4[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require(_0x416f('0x0'));module[_0x416f('0x1')]={'name':{'type':Sequelize[_0x416f('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x416f('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x416f('0x2')],'allowNull':![],'defaultValue':_0x416f('0x3')},'remoteUri':{'type':Sequelize[_0x416f('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x416f('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x416f('0x2')],'allowNull':![]}};
\ No newline at end of file
index 5301830..15e1eda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8db4=['getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','limit','count','set','Content-Range','apply','reject','update','destroy','then','end','error','stack','send','index','VtigerAccount','rawAttributes','type','key','name','keys','intersection','model','attributes','fields','query','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','map','VIRTUAL','options','includeAll','include','findAll','rows','show','params','filters','find','catch','body','getConfigurations','findOne','VtigerConfiguration','order','AccountId','Subjects','getSubjects','channel','Descriptions','VtigerField','md5','getFields','description','remoteUri','serverUrl','accessKey','username','moduleName','slice','substring','format','GET','success','POST','login','result','token','describe','sessionName','reference','owner','includes','remove','editable','false','startsWith','cf_','picklist','picklistValues','vTiger\x20error:\x20','test','statusCode'];(function(_0x233d8f,_0x147d6a){var _0x4428ec=function(_0x53526c){while(--_0x53526c){_0x233d8f['push'](_0x233d8f['shift']());}};_0x4428ec(++_0x147d6a);}(_0x8db4,0x165));var _0x48db=function(_0x14ba9f,_0x15ccec){_0x14ba9f=_0x14ba9f-0x0;var _0x5f33bb=_0x8db4[_0x14ba9f];return _0x5f33bb;};'use strict';var emlformat=require(_0x48db('0x0'));var rimraf=require(_0x48db('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x48db('0x2'));var rp=require(_0x48db('0x3'));var moment=require(_0x48db('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x48db('0x5'));var path=require(_0x48db('0x6'));var sox=require(_0x48db('0x7'));var csv=require(_0x48db('0x8'));var ejs=require(_0x48db('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x48db('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x48db('0xb'));var deskjs=require(_0x48db('0xc'));var toCsv=require(_0x48db('0x8'));var querystring=require('querystring');var Papa=require(_0x48db('0xd'));var Redis=require(_0x48db('0xe'));var authService=require(_0x48db('0xf'));var qs=require(_0x48db('0x10'));var as=require(_0x48db('0x11'));var hardwareService=require(_0x48db('0x12'));var logger=require(_0x48db('0x13'))(_0x48db('0x14'));var utils=require(_0x48db('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x48db('0x16'));var db=require(_0x48db('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5041c2,_0x32aa30){_0x32aa30=_0x32aa30||0xcc;return function(_0x4e3da2){if(_0x4e3da2){return _0x5041c2['sendStatus'](_0x32aa30);}return _0x5041c2[_0x48db('0x18')](_0x32aa30)['end']();};}function respondWithResult(_0x11c920,_0x183e1b){_0x183e1b=_0x183e1b||0xc8;return function(_0x55b246){if(_0x55b246){return _0x11c920[_0x48db('0x18')](_0x183e1b)[_0x48db('0x19')](_0x55b246);}};}function respondWithFilteredResult(_0x4420ee,_0x5a18b0){return function(_0x490e05){if(_0x490e05){var _0x19d5eb=typeof _0x5a18b0[_0x48db('0x1a')]==='undefined'&&typeof _0x5a18b0[_0x48db('0x1b')]==='undefined';var _0x15d484=_0x490e05[_0x48db('0x1c')];var _0x2749a9=_0x19d5eb?0x0:_0x5a18b0[_0x48db('0x1a')];var _0xce120e=_0x19d5eb?_0x490e05[_0x48db('0x1c')]:_0x5a18b0[_0x48db('0x1a')]+_0x5a18b0[_0x48db('0x1b')];var _0x2156e0;if(_0xce120e>=_0x15d484){_0xce120e=_0x15d484;_0x2156e0=0xc8;}else{_0x2156e0=0xce;}_0x4420ee[_0x48db('0x18')](_0x2156e0);return _0x4420ee[_0x48db('0x1d')](_0x48db('0x1e'),_0x2749a9+'-'+_0xce120e+'/'+_0x15d484)['json'](_0x490e05);}return null;};}function patchUpdates(_0x9c9b2){return function(_0x42bcc9){try{jsonpatch[_0x48db('0x1f')](_0x42bcc9,_0x9c9b2,!![]);}catch(_0x380304){return BPromise[_0x48db('0x20')](_0x380304);}return _0x42bcc9['save']();};}function saveUpdates(_0x4d0b38,_0x3e633c){return function(_0x3596e0){if(_0x3596e0){return _0x3596e0[_0x48db('0x21')](_0x4d0b38)['then'](function(_0x172572){return _0x172572;});}return null;};}function removeEntity(_0x118b30,_0x1236df){return function(_0x389bc1){if(_0x389bc1){return _0x389bc1[_0x48db('0x22')]()[_0x48db('0x23')](function(){_0x118b30['status'](0xcc)[_0x48db('0x24')]();});}};}function handleEntityNotFound(_0x1df60e,_0x2f8e9d){return function(_0x43e185){if(!_0x43e185){_0x1df60e['sendStatus'](0x194);}return _0x43e185;};}function handleError(_0x12217d,_0xdc3a71){_0xdc3a71=_0xdc3a71||0x1f4;return function(_0x7d2252){logger[_0x48db('0x25')](_0x7d2252[_0x48db('0x26')]);if(_0x7d2252['name']){delete _0x7d2252['name'];}_0x12217d['status'](_0xdc3a71)[_0x48db('0x27')](_0x7d2252);};}exports[_0x48db('0x28')]=function(_0x325d7a,_0x4a1188){var _0x199661={},_0x30a838={},_0x5846e8={'count':0x0,'rows':[]};var _0x2c7993=_['map'](db[_0x48db('0x29')][_0x48db('0x2a')],function(_0x2fe687){return{'name':_0x2fe687['fieldName'],'type':_0x2fe687[_0x48db('0x2b')][_0x48db('0x2c')]};});_0x30a838['model']=_['map'](_0x2c7993,_0x48db('0x2d'));_0x30a838['query']=_[_0x48db('0x2e')](_0x325d7a['query']);_0x30a838['filters']=_[_0x48db('0x2f')](_0x30a838[_0x48db('0x30')],_0x30a838['query']);_0x199661[_0x48db('0x31')]=_[_0x48db('0x2f')](_0x30a838[_0x48db('0x30')],qs[_0x48db('0x32')](_0x325d7a[_0x48db('0x33')]['fields']));_0x199661[_0x48db('0x31')]=_0x199661['attributes'][_0x48db('0x34')]?_0x199661['attributes']:_0x30a838['model'];if(!_0x325d7a['query'][_0x48db('0x35')](_0x48db('0x36'))){_0x199661[_0x48db('0x1b')]=qs['limit'](_0x325d7a['query']['limit']);_0x199661[_0x48db('0x1a')]=qs[_0x48db('0x1a')](_0x325d7a['query'][_0x48db('0x1a')]);}_0x199661['order']=qs[_0x48db('0x37')](_0x325d7a['query'][_0x48db('0x37')]);_0x199661['where']=qs['filters'](_[_0x48db('0x38')](_0x325d7a[_0x48db('0x33')],_0x30a838['filters']),_0x2c7993);if(_0x325d7a[_0x48db('0x33')][_0x48db('0x39')]){_0x199661['where']=_[_0x48db('0x3a')](_0x199661[_0x48db('0x3b')],{'$or':_[_0x48db('0x3c')](_0x2c7993,function(_0x56e95b){if(_0x56e95b['type']!==_0x48db('0x3d')){var _0x3d0039={};_0x3d0039[_0x56e95b['name']]={'$like':'%'+_0x325d7a[_0x48db('0x33')][_0x48db('0x39')]+'%'};return _0x3d0039;}})});}_0x199661=_[_0x48db('0x3a')]({},_0x199661,_0x325d7a[_0x48db('0x3e')]);var _0x3f19f7={'where':_0x199661['where']};return db[_0x48db('0x29')][_0x48db('0x1c')](_0x3f19f7)['then'](function(_0x40d983){_0x5846e8['count']=_0x40d983;if(_0x325d7a[_0x48db('0x33')][_0x48db('0x3f')]){_0x199661[_0x48db('0x40')]=[{'all':!![]}];}return db[_0x48db('0x29')][_0x48db('0x41')](_0x199661);})[_0x48db('0x23')](function(_0x23d4c6){_0x5846e8[_0x48db('0x42')]=_0x23d4c6;return _0x5846e8;})[_0x48db('0x23')](respondWithFilteredResult(_0x4a1188,_0x199661))['catch'](handleError(_0x4a1188,null));};exports[_0x48db('0x43')]=function(_0x8b3136,_0x23e0c4){var _0x514d57={'raw':![],'where':{'id':_0x8b3136[_0x48db('0x44')]['id']}},_0x3c7341={};_0x3c7341[_0x48db('0x30')]=_[_0x48db('0x2e')](db['VtigerAccount'][_0x48db('0x2a')]);_0x3c7341[_0x48db('0x33')]=_[_0x48db('0x2e')](_0x8b3136[_0x48db('0x33')]);_0x3c7341[_0x48db('0x45')]=_['intersection'](_0x3c7341[_0x48db('0x30')],_0x3c7341['query']);_0x514d57['attributes']=_[_0x48db('0x2f')](_0x3c7341[_0x48db('0x30')],qs['fields'](_0x8b3136['query'][_0x48db('0x32')]));_0x514d57[_0x48db('0x31')]=_0x514d57['attributes'][_0x48db('0x34')]?_0x514d57[_0x48db('0x31')]:_0x3c7341[_0x48db('0x30')];if(_0x8b3136['query'][_0x48db('0x3f')]){_0x514d57[_0x48db('0x40')]=[{'all':!![]}];}_0x514d57=_[_0x48db('0x3a')]({},_0x514d57,_0x8b3136['options']);return db['VtigerAccount'][_0x48db('0x46')](_0x514d57)['then'](handleEntityNotFound(_0x23e0c4,null))[_0x48db('0x23')](respondWithResult(_0x23e0c4,null))[_0x48db('0x47')](handleError(_0x23e0c4,null));};exports['create']=function(_0x22fb09,_0x169cba){return db[_0x48db('0x29')]['create'](_0x22fb09['body'],{})[_0x48db('0x23')](respondWithResult(_0x169cba,0xc9))[_0x48db('0x47')](handleError(_0x169cba,null));};exports[_0x48db('0x21')]=function(_0x7c1a17,_0x254ecb){if(_0x7c1a17[_0x48db('0x48')]['id']){delete _0x7c1a17[_0x48db('0x48')]['id'];}return db['VtigerAccount']['find']({'where':{'id':_0x7c1a17['params']['id']}})['then'](handleEntityNotFound(_0x254ecb,null))['then'](saveUpdates(_0x7c1a17[_0x48db('0x48')],null))['then'](respondWithResult(_0x254ecb,null))[_0x48db('0x47')](handleError(_0x254ecb,null));};exports['destroy']=function(_0x13afa3,_0x28fe51){return db[_0x48db('0x29')][_0x48db('0x46')]({'where':{'id':_0x13afa3[_0x48db('0x44')]['id']}})[_0x48db('0x23')](handleEntityNotFound(_0x28fe51,null))[_0x48db('0x23')](removeEntity(_0x28fe51,null))[_0x48db('0x47')](handleError(_0x28fe51,null));};exports[_0x48db('0x49')]=function(_0x26cc3b,_0x3bba98,_0x42c6e9){var _0x1dd2d0={};var _0x8480a={};var _0x2213c3;var _0x22a2e8;return db['VtigerAccount'][_0x48db('0x4a')]({'where':{'id':_0x26cc3b['params']['id']}})[_0x48db('0x23')](handleEntityNotFound(_0x3bba98,null))[_0x48db('0x23')](function(_0x2834d9){if(_0x2834d9){_0x2213c3=_0x2834d9;_0x8480a[_0x48db('0x30')]=_[_0x48db('0x2e')](db[_0x48db('0x4b')][_0x48db('0x2a')]);_0x8480a[_0x48db('0x33')]=_[_0x48db('0x2e')](_0x26cc3b[_0x48db('0x33')]);_0x8480a[_0x48db('0x45')]=_[_0x48db('0x2f')](_0x8480a['model'],_0x8480a['query']);_0x1dd2d0[_0x48db('0x31')]=_[_0x48db('0x2f')](_0x8480a[_0x48db('0x30')],qs[_0x48db('0x32')](_0x26cc3b['query'][_0x48db('0x32')]));_0x1dd2d0[_0x48db('0x31')]=_0x1dd2d0[_0x48db('0x31')][_0x48db('0x34')]?_0x1dd2d0[_0x48db('0x31')]:_0x8480a[_0x48db('0x30')];_0x1dd2d0[_0x48db('0x4c')]=qs['sort'](_0x26cc3b[_0x48db('0x33')][_0x48db('0x37')]);_0x1dd2d0[_0x48db('0x3b')]=qs[_0x48db('0x45')](_[_0x48db('0x38')](_0x26cc3b[_0x48db('0x33')],_0x8480a['filters']));if(_0x26cc3b[_0x48db('0x33')][_0x48db('0x39')]){_0x1dd2d0[_0x48db('0x3b')]=_[_0x48db('0x3a')](_0x1dd2d0[_0x48db('0x3b')],{'$or':_[_0x48db('0x3c')](_0x1dd2d0[_0x48db('0x31')],function(_0x13e585){var _0x5e98e8={};_0x5e98e8[_0x13e585]={'$like':'%'+_0x26cc3b[_0x48db('0x33')]['filter']+'%'};return _0x5e98e8;})});}_0x1dd2d0=_[_0x48db('0x3a')]({},_0x1dd2d0,_0x26cc3b['options']);return _0x2213c3[_0x48db('0x49')](_0x1dd2d0);}})[_0x48db('0x23')](function(_0x155391){if(_0x155391){_0x22a2e8=_0x155391['length'];if(!_0x26cc3b['query'][_0x48db('0x35')]('nolimit')){_0x1dd2d0[_0x48db('0x1b')]=qs[_0x48db('0x1b')](_0x26cc3b[_0x48db('0x33')][_0x48db('0x1b')]);_0x1dd2d0[_0x48db('0x1a')]=qs['offset'](_0x26cc3b['query'][_0x48db('0x1a')]);}return _0x2213c3['getConfigurations'](_0x1dd2d0);}})['then'](function(_0x2428b7){if(_0x2428b7){return _0x2428b7?{'count':_0x22a2e8,'rows':_0x2428b7}:null;}})[_0x48db('0x23')](respondWithResult(_0x3bba98,null))[_0x48db('0x47')](handleError(_0x3bba98,null));};exports['addConfiguration']=function(_0x24064e,_0xbdb7e5,_0x5063fc){if(_0x24064e[_0x48db('0x48')]['id']){delete _0x24064e[_0x48db('0x48')]['id'];}return db['VtigerAccount']['findOne']({'where':{'id':_0x24064e[_0x48db('0x44')]['id']}})[_0x48db('0x23')](handleEntityNotFound(_0xbdb7e5,null))['then'](function(_0x1817a4){if(_0x1817a4){_0x24064e['body'][_0x48db('0x4d')]=_0x1817a4['id'];_0x24064e[_0x48db('0x48')][_0x48db('0x4e')]=integrations[_0x48db('0x4f')](_0x24064e[_0x48db('0x48')][_0x48db('0x50')],_0x24064e[_0x48db('0x48')][_0x48db('0x2b')]);_0x24064e[_0x48db('0x48')][_0x48db('0x51')]=integrations['getDescriptions'](_0x24064e['body']['channel'],_0x24064e[_0x48db('0x48')][_0x48db('0x2b')]);return db[_0x48db('0x4b')]['create'](_0x24064e[_0x48db('0x48')],{'include':[{'model':db['VtigerField'],'as':'Subjects'},{'model':db[_0x48db('0x52')],'as':'Descriptions'}]});}return null;})[_0x48db('0x23')](respondWithResult(_0xbdb7e5,null))[_0x48db('0x47')](handleError(_0xbdb7e5,null));};var md5=require(_0x48db('0x53'));exports[_0x48db('0x54')]=function(_0xcd0eaf,_0x3594c9,_0x40d480){var _0xe6b72e=null;var _0x2d51bb=null;var _0xdb11a6=null;var _0x595151=null;var _0x36eeff='';return db[_0x48db('0x29')][_0x48db('0x4a')]({'where':{'id':_0xcd0eaf[_0x48db('0x44')]['id']},'attributes':['id',_0x48db('0x2d'),'username',_0x48db('0x55'),'moduleName',_0x48db('0x56'),_0x48db('0x57'),_0x48db('0x58')]})[_0x48db('0x23')](handleEntityNotFound(_0x3594c9,null))[_0x48db('0x23')](function(_0x2cdd68){if(_0x2cdd68){_0xe6b72e=_0x2cdd68[_0x48db('0x59')];_0x2d51bb=_0x2cdd68[_0x48db('0x58')];_0xdb11a6=_0x2cdd68[_0x48db('0x5a')];_0x36eeff=_0x2cdd68['remoteUri'];var _0x1cbe26=_0x36eeff[_0x48db('0x5b')](-0x1);if(_0x1cbe26==='/'){_0x36eeff=_0x36eeff[_0x48db('0x5c')](0x0,_0x36eeff['lastIndexOf'](_0x1cbe26));}_0x595151=util[_0x48db('0x5d')]('%s/webservice.php',_0x36eeff);var _0x1379f0={'method':_0x48db('0x5e'),'uri':_0x595151,'qs':{'operation':'getchallenge','username':_0x2cdd68[_0x48db('0x59')]},'json':!![]};return rp(_0x1379f0);}})['then'](function(_0x355f9e){if(_0x355f9e[_0x48db('0x5f')]){var _0x3a196e={'method':_0x48db('0x60'),'uri':_0x595151,'form':{'operation':_0x48db('0x61'),'username':_0xe6b72e,'accessKey':md5(_0x355f9e[_0x48db('0x62')][_0x48db('0x63')]+_0x2d51bb)},'json':!![]};return rp(_0x3a196e);}})['then'](function(_0x16d74a){if(_0x16d74a[_0x48db('0x5f')]){var _0x45c91f={'method':_0x48db('0x5e'),'uri':_0x595151,'qs':{'operation':_0x48db('0x64'),'username':_0xe6b72e,'sessionName':_0x16d74a[_0x48db('0x62')][_0x48db('0x65')],'elementType':_0xdb11a6},'json':!![]};return rp(_0x45c91f);}})['then'](function(_0x47a5b3){if(_0x47a5b3[_0x48db('0x5f')]){var _0x5caa67=['autogenerated',_0x48db('0x66'),_0x48db('0x67')];_['remove'](_0x47a5b3['result'][_0x48db('0x32')],function(_0x283a09){return _0x5caa67[_0x48db('0x68')](_0x283a09['type'][_0x48db('0x2d')]);});_[_0x48db('0x69')](_0x47a5b3[_0x48db('0x62')][_0x48db('0x32')],function(_0x31e768){return _0x31e768[_0x48db('0x6a')]===_0x48db('0x6b');});return{'count':_0x47a5b3['result'][_0x48db('0x32')][_0x48db('0x34')],'rows':_[_0x48db('0x3c')](_0x47a5b3['result'][_0x48db('0x32')],function(_0x2b9821){return{'id':_0x2b9821[_0x48db('0x2d')],'name':_0x2b9821['label'],'custom':_[_0x48db('0x6c')](_0x2b9821['name'],_0x48db('0x6d'))?!![]:![],'options':_0x2b9821[_0x48db('0x2b')][_0x48db('0x2d')]===_0x48db('0x6e')&&_0x2b9821[_0x48db('0x2b')]['picklistValues'][_0x48db('0x34')]>0x0?_[_0x48db('0x3c')](_0x2b9821[_0x48db('0x2b')][_0x48db('0x6f')],function(_0x349751){return{'name':_0x349751['label'],'value':_0x349751['value']};}):[]};})};}})[_0x48db('0x23')](respondWithResult(_0x3594c9,null))['catch'](function(_0x48d9cb){console['log'](_0x48db('0x70')+_0x48d9cb);var _0x2e7db4=_0xcd0eaf[_0x48db('0x33')][_0x48db('0x71')]?0x1f4:_0x48d9cb[_0x48db('0x72')]||0x1f4;logger[_0x48db('0x25')](_0x48db('0x73'),_0x48db('0x54'),_0x2e7db4,JSON[_0x48db('0x74')](_0x48d9cb));delete _0x48d9cb[_0x48db('0x2d')];if(_0x2e7db4===0x191){_0x2e7db4=0x190;}_0x3594c9[_0x48db('0x18')](_0x2e7db4)[_0x48db('0x27')](_0xcd0eaf[_0x48db('0x33')][_0x48db('0x71')]?{'message':_0x48db('0x75'),'statusCode':_0x48d9cb[_0x48db('0x72')]}:_0x48d9cb);});};
\ No newline at end of file
+var _0xfdd2=['crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../components/integrations/configuration','status','json','offset','undefined','count','limit','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','map','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','VtigerAccount','findAll','catch','show','params','include','find','create','body','getConfigurations','findOne','VtigerConfiguration','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','VtigerField','Descriptions','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf','format','%s/webservice.php','GET','getchallenge','POST','login','result','success','describe','reference','owner','remove','includes','editable','false','label','startsWith','cf_','picklist','picklistValues','log','vTiger\x20error:\x20','statusCode','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel'];(function(_0x450ef7,_0x2f2dda){var _0x2bcd3b=function(_0x4fe820){while(--_0x4fe820){_0x450ef7['push'](_0x450ef7['shift']());}};_0x2bcd3b(++_0x2f2dda);}(_0xfdd2,0xe3));var _0x2fdd=function(_0x3116d6,_0x2d574f){_0x3116d6=_0x3116d6-0x0;var _0x18729d=_0xfdd2[_0x3116d6];return _0x18729d;};'use strict';var emlformat=require(_0x2fdd('0x0'));var rimraf=require(_0x2fdd('0x1'));var zipdir=require(_0x2fdd('0x2'));var jsonpatch=require(_0x2fdd('0x3'));var rp=require(_0x2fdd('0x4'));var moment=require(_0x2fdd('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2fdd('0x6'));var util=require(_0x2fdd('0x7'));var path=require('path');var sox=require(_0x2fdd('0x8'));var csv=require(_0x2fdd('0x9'));var ejs=require(_0x2fdd('0xa'));var fs=require('fs');var fs_extra=require(_0x2fdd('0xb'));var _=require('lodash');var squel=require(_0x2fdd('0xc'));var crypto=require(_0x2fdd('0xd'));var jsforce=require(_0x2fdd('0xe'));var deskjs=require(_0x2fdd('0xf'));var toCsv=require(_0x2fdd('0x9'));var querystring=require(_0x2fdd('0x10'));var Papa=require('papaparse');var Redis=require(_0x2fdd('0x11'));var authService=require(_0x2fdd('0x12'));var qs=require(_0x2fdd('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2fdd('0x14'));var logger=require(_0x2fdd('0x15'))(_0x2fdd('0x16'));var utils=require(_0x2fdd('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x2fdd('0x18'));function respondWithStatusCode(_0x15273c,_0x1354a7){_0x1354a7=_0x1354a7||0xcc;return function(_0x4ebd52){if(_0x4ebd52){return _0x15273c['sendStatus'](_0x1354a7);}return _0x15273c['status'](_0x1354a7)['end']();};}function respondWithResult(_0x526e4e,_0x151028){_0x151028=_0x151028||0xc8;return function(_0x4b4082){if(_0x4b4082){return _0x526e4e[_0x2fdd('0x19')](_0x151028)[_0x2fdd('0x1a')](_0x4b4082);}};}function respondWithFilteredResult(_0x59ef7b,_0x38cb88){return function(_0xb14454){if(_0xb14454){var _0x3546ed=typeof _0x38cb88[_0x2fdd('0x1b')]===_0x2fdd('0x1c')&&typeof _0x38cb88['limit']===_0x2fdd('0x1c');var _0x45b94a=_0xb14454[_0x2fdd('0x1d')];var _0x55f969=_0x3546ed?0x0:_0x38cb88[_0x2fdd('0x1b')];var _0x23bb8d=_0x3546ed?_0xb14454[_0x2fdd('0x1d')]:_0x38cb88['offset']+_0x38cb88[_0x2fdd('0x1e')];var _0x575349;if(_0x23bb8d>=_0x45b94a){_0x23bb8d=_0x45b94a;_0x575349=0xc8;}else{_0x575349=0xce;}_0x59ef7b[_0x2fdd('0x19')](_0x575349);return _0x59ef7b['set']('Content-Range',_0x55f969+'-'+_0x23bb8d+'/'+_0x45b94a)[_0x2fdd('0x1a')](_0xb14454);}return null;};}function patchUpdates(_0x56f34e){return function(_0x34c14e){try{jsonpatch[_0x2fdd('0x1f')](_0x34c14e,_0x56f34e,!![]);}catch(_0x59c21c){return BPromise[_0x2fdd('0x20')](_0x59c21c);}return _0x34c14e[_0x2fdd('0x21')]();};}function saveUpdates(_0x4a061c,_0x10ea20){return function(_0x47cf93){if(_0x47cf93){return _0x47cf93[_0x2fdd('0x22')](_0x4a061c)[_0x2fdd('0x23')](function(_0x4dfe5c){return _0x4dfe5c;});}return null;};}function removeEntity(_0x386514,_0x591bac){return function(_0x2fab59){if(_0x2fab59){return _0x2fab59[_0x2fdd('0x24')]()[_0x2fdd('0x23')](function(){_0x386514[_0x2fdd('0x19')](0xcc)[_0x2fdd('0x25')]();});}};}function handleEntityNotFound(_0x1d29b8,_0x34f54f){return function(_0x138cb0){if(!_0x138cb0){_0x1d29b8[_0x2fdd('0x26')](0x194);}return _0x138cb0;};}function handleError(_0x3f1647,_0x4ef6a8){_0x4ef6a8=_0x4ef6a8||0x1f4;return function(_0x3027e9){logger[_0x2fdd('0x27')](_0x3027e9[_0x2fdd('0x28')]);if(_0x3027e9['name']){delete _0x3027e9[_0x2fdd('0x29')];}_0x3f1647['status'](_0x4ef6a8)['send'](_0x3027e9);};}exports['index']=function(_0x15ebe5,_0x689145){var _0x31a845={},_0x5bdeba={},_0x279513={'count':0x0,'rows':[]};var _0x465a93=_[_0x2fdd('0x2a')](db['VtigerAccount'][_0x2fdd('0x2b')],function(_0x5aa671){return{'name':_0x5aa671['fieldName'],'type':_0x5aa671['type'][_0x2fdd('0x2c')]};});_0x5bdeba[_0x2fdd('0x2d')]=_[_0x2fdd('0x2a')](_0x465a93,_0x2fdd('0x29'));_0x5bdeba[_0x2fdd('0x2e')]=_[_0x2fdd('0x2f')](_0x15ebe5['query']);_0x5bdeba[_0x2fdd('0x30')]=_[_0x2fdd('0x31')](_0x5bdeba[_0x2fdd('0x2d')],_0x5bdeba[_0x2fdd('0x2e')]);_0x31a845[_0x2fdd('0x32')]=_[_0x2fdd('0x31')](_0x5bdeba[_0x2fdd('0x2d')],qs[_0x2fdd('0x33')](_0x15ebe5[_0x2fdd('0x2e')][_0x2fdd('0x33')]));_0x31a845[_0x2fdd('0x32')]=_0x31a845[_0x2fdd('0x32')][_0x2fdd('0x34')]?_0x31a845[_0x2fdd('0x32')]:_0x5bdeba[_0x2fdd('0x2d')];if(!_0x15ebe5[_0x2fdd('0x2e')]['hasOwnProperty'](_0x2fdd('0x35'))){_0x31a845[_0x2fdd('0x1e')]=qs[_0x2fdd('0x1e')](_0x15ebe5['query']['limit']);_0x31a845[_0x2fdd('0x1b')]=qs[_0x2fdd('0x1b')](_0x15ebe5[_0x2fdd('0x2e')][_0x2fdd('0x1b')]);}_0x31a845[_0x2fdd('0x36')]=qs[_0x2fdd('0x37')](_0x15ebe5[_0x2fdd('0x2e')][_0x2fdd('0x37')]);_0x31a845[_0x2fdd('0x38')]=qs['filters'](_[_0x2fdd('0x39')](_0x15ebe5[_0x2fdd('0x2e')],_0x5bdeba[_0x2fdd('0x30')]),_0x465a93);if(_0x15ebe5['query'][_0x2fdd('0x3a')]){_0x31a845[_0x2fdd('0x38')]=_['merge'](_0x31a845[_0x2fdd('0x38')],{'$or':_['map'](_0x465a93,function(_0x12e957){if(_0x12e957[_0x2fdd('0x3b')]!==_0x2fdd('0x3c')){var _0x28e8ad={};_0x28e8ad[_0x12e957['name']]={'$like':'%'+_0x15ebe5[_0x2fdd('0x2e')][_0x2fdd('0x3a')]+'%'};return _0x28e8ad;}})});}_0x31a845=_[_0x2fdd('0x3d')]({},_0x31a845,_0x15ebe5[_0x2fdd('0x3e')]);var _0xe10da2={'where':_0x31a845[_0x2fdd('0x38')]};return db['VtigerAccount'][_0x2fdd('0x1d')](_0xe10da2)[_0x2fdd('0x23')](function(_0x12ef49){_0x279513[_0x2fdd('0x1d')]=_0x12ef49;if(_0x15ebe5['query'][_0x2fdd('0x3f')]){_0x31a845['include']=[{'all':!![]}];}return db[_0x2fdd('0x40')][_0x2fdd('0x41')](_0x31a845);})[_0x2fdd('0x23')](function(_0x5be9ee){_0x279513['rows']=_0x5be9ee;return _0x279513;})[_0x2fdd('0x23')](respondWithFilteredResult(_0x689145,_0x31a845))[_0x2fdd('0x42')](handleError(_0x689145,null));};exports[_0x2fdd('0x43')]=function(_0x30b6d8,_0x367ce8){var _0x5a3fb0={'raw':![],'where':{'id':_0x30b6d8[_0x2fdd('0x44')]['id']}},_0x575912={};_0x575912['model']=_[_0x2fdd('0x2f')](db['VtigerAccount'][_0x2fdd('0x2b')]);_0x575912[_0x2fdd('0x2e')]=_[_0x2fdd('0x2f')](_0x30b6d8[_0x2fdd('0x2e')]);_0x575912[_0x2fdd('0x30')]=_[_0x2fdd('0x31')](_0x575912[_0x2fdd('0x2d')],_0x575912[_0x2fdd('0x2e')]);_0x5a3fb0[_0x2fdd('0x32')]=_[_0x2fdd('0x31')](_0x575912[_0x2fdd('0x2d')],qs[_0x2fdd('0x33')](_0x30b6d8[_0x2fdd('0x2e')][_0x2fdd('0x33')]));_0x5a3fb0[_0x2fdd('0x32')]=_0x5a3fb0['attributes']['length']?_0x5a3fb0[_0x2fdd('0x32')]:_0x575912[_0x2fdd('0x2d')];if(_0x30b6d8[_0x2fdd('0x2e')][_0x2fdd('0x3f')]){_0x5a3fb0[_0x2fdd('0x45')]=[{'all':!![]}];}_0x5a3fb0=_[_0x2fdd('0x3d')]({},_0x5a3fb0,_0x30b6d8['options']);return db[_0x2fdd('0x40')][_0x2fdd('0x46')](_0x5a3fb0)[_0x2fdd('0x23')](handleEntityNotFound(_0x367ce8,null))[_0x2fdd('0x23')](respondWithResult(_0x367ce8,null))['catch'](handleError(_0x367ce8,null));};exports[_0x2fdd('0x47')]=function(_0x113424,_0x37d2d4){return db['VtigerAccount'][_0x2fdd('0x47')](_0x113424[_0x2fdd('0x48')],{})['then'](respondWithResult(_0x37d2d4,0xc9))[_0x2fdd('0x42')](handleError(_0x37d2d4,null));};exports[_0x2fdd('0x22')]=function(_0x457146,_0xcf1eaf){if(_0x457146[_0x2fdd('0x48')]['id']){delete _0x457146[_0x2fdd('0x48')]['id'];}return db[_0x2fdd('0x40')][_0x2fdd('0x46')]({'where':{'id':_0x457146[_0x2fdd('0x44')]['id']}})[_0x2fdd('0x23')](handleEntityNotFound(_0xcf1eaf,null))[_0x2fdd('0x23')](saveUpdates(_0x457146[_0x2fdd('0x48')],null))['then'](respondWithResult(_0xcf1eaf,null))[_0x2fdd('0x42')](handleError(_0xcf1eaf,null));};exports[_0x2fdd('0x24')]=function(_0x2bc2cd,_0x3a333c){return db[_0x2fdd('0x40')]['find']({'where':{'id':_0x2bc2cd['params']['id']}})[_0x2fdd('0x23')](handleEntityNotFound(_0x3a333c,null))['then'](removeEntity(_0x3a333c,null))[_0x2fdd('0x42')](handleError(_0x3a333c,null));};exports[_0x2fdd('0x49')]=function(_0x1683f3,_0x416bd0,_0x4535a8){var _0x2639f9={};var _0x12cf5c={};var _0x3fd8fd;var _0xabda4d;return db[_0x2fdd('0x40')][_0x2fdd('0x4a')]({'where':{'id':_0x1683f3[_0x2fdd('0x44')]['id']}})['then'](handleEntityNotFound(_0x416bd0,null))[_0x2fdd('0x23')](function(_0x53c81f){if(_0x53c81f){_0x3fd8fd=_0x53c81f;_0x12cf5c[_0x2fdd('0x2d')]=_['keys'](db[_0x2fdd('0x4b')]['rawAttributes']);_0x12cf5c[_0x2fdd('0x2e')]=_['keys'](_0x1683f3['query']);_0x12cf5c[_0x2fdd('0x30')]=_[_0x2fdd('0x31')](_0x12cf5c[_0x2fdd('0x2d')],_0x12cf5c[_0x2fdd('0x2e')]);_0x2639f9[_0x2fdd('0x32')]=_[_0x2fdd('0x31')](_0x12cf5c[_0x2fdd('0x2d')],qs[_0x2fdd('0x33')](_0x1683f3[_0x2fdd('0x2e')][_0x2fdd('0x33')]));_0x2639f9[_0x2fdd('0x32')]=_0x2639f9[_0x2fdd('0x32')][_0x2fdd('0x34')]?_0x2639f9[_0x2fdd('0x32')]:_0x12cf5c['model'];_0x2639f9['order']=qs[_0x2fdd('0x37')](_0x1683f3[_0x2fdd('0x2e')]['sort']);_0x2639f9[_0x2fdd('0x38')]=qs['filters'](_['pick'](_0x1683f3[_0x2fdd('0x2e')],_0x12cf5c[_0x2fdd('0x30')]));if(_0x1683f3['query'][_0x2fdd('0x3a')]){_0x2639f9[_0x2fdd('0x38')]=_[_0x2fdd('0x3d')](_0x2639f9[_0x2fdd('0x38')],{'$or':_[_0x2fdd('0x2a')](_0x2639f9[_0x2fdd('0x32')],function(_0xc41c26){var _0x964b32={};_0x964b32[_0xc41c26]={'$like':'%'+_0x1683f3[_0x2fdd('0x2e')]['filter']+'%'};return _0x964b32;})});}_0x2639f9=_['merge']({},_0x2639f9,_0x1683f3[_0x2fdd('0x3e')]);return _0x3fd8fd[_0x2fdd('0x49')](_0x2639f9);}})['then'](function(_0x1064c4){if(_0x1064c4){_0xabda4d=_0x1064c4[_0x2fdd('0x34')];if(!_0x1683f3[_0x2fdd('0x2e')][_0x2fdd('0x4c')](_0x2fdd('0x35'))){_0x2639f9[_0x2fdd('0x1e')]=qs[_0x2fdd('0x1e')](_0x1683f3[_0x2fdd('0x2e')][_0x2fdd('0x1e')]);_0x2639f9['offset']=qs[_0x2fdd('0x1b')](_0x1683f3[_0x2fdd('0x2e')][_0x2fdd('0x1b')]);}return _0x3fd8fd[_0x2fdd('0x49')](_0x2639f9);}})[_0x2fdd('0x23')](function(_0x33cb17){if(_0x33cb17){return _0x33cb17?{'count':_0xabda4d,'rows':_0x33cb17}:null;}})[_0x2fdd('0x23')](respondWithResult(_0x416bd0,null))[_0x2fdd('0x42')](handleError(_0x416bd0,null));};exports[_0x2fdd('0x4d')]=function(_0x221e71,_0x142aca,_0x319679){if(_0x221e71[_0x2fdd('0x48')]['id']){delete _0x221e71[_0x2fdd('0x48')]['id'];}return db[_0x2fdd('0x40')][_0x2fdd('0x4a')]({'where':{'id':_0x221e71['params']['id']}})['then'](handleEntityNotFound(_0x142aca,null))['then'](function(_0x2921b3){if(_0x2921b3){_0x221e71[_0x2fdd('0x48')][_0x2fdd('0x4e')]=_0x2921b3['id'];_0x221e71['body'][_0x2fdd('0x4f')]=integrations[_0x2fdd('0x50')](_0x221e71[_0x2fdd('0x48')][_0x2fdd('0x51')],_0x221e71[_0x2fdd('0x48')][_0x2fdd('0x3b')]);_0x221e71[_0x2fdd('0x48')]['Descriptions']=integrations['getDescriptions'](_0x221e71['body'][_0x2fdd('0x51')],_0x221e71['body'][_0x2fdd('0x3b')]);return db[_0x2fdd('0x4b')][_0x2fdd('0x47')](_0x221e71[_0x2fdd('0x48')],{'include':[{'model':db[_0x2fdd('0x52')],'as':'Subjects'},{'model':db['VtigerField'],'as':_0x2fdd('0x53')}]});}return null;})[_0x2fdd('0x23')](respondWithResult(_0x142aca,null))[_0x2fdd('0x42')](handleError(_0x142aca,null));};var md5=require(_0x2fdd('0x54'));exports[_0x2fdd('0x55')]=function(_0x1d37e5,_0x5d4117,_0x4e211b){var _0xb34f2d=null;var _0x4d20d8=null;var _0x121cce=null;var _0x2cddf2=null;var _0x3ba70c='';return db[_0x2fdd('0x40')][_0x2fdd('0x4a')]({'where':{'id':_0x1d37e5[_0x2fdd('0x44')]['id']},'attributes':['id',_0x2fdd('0x29'),_0x2fdd('0x56'),_0x2fdd('0x57'),_0x2fdd('0x58'),_0x2fdd('0x59'),_0x2fdd('0x5a'),_0x2fdd('0x5b')]})[_0x2fdd('0x23')](handleEntityNotFound(_0x5d4117,null))['then'](function(_0x582f53){if(_0x582f53){_0xb34f2d=_0x582f53['username'];_0x4d20d8=_0x582f53[_0x2fdd('0x5b')];_0x121cce=_0x582f53[_0x2fdd('0x58')];_0x3ba70c=_0x582f53[_0x2fdd('0x59')];var _0x2a2a66=_0x3ba70c[_0x2fdd('0x5c')](-0x1);if(_0x2a2a66==='/'){_0x3ba70c=_0x3ba70c[_0x2fdd('0x5d')](0x0,_0x3ba70c[_0x2fdd('0x5e')](_0x2a2a66));}_0x2cddf2=util[_0x2fdd('0x5f')](_0x2fdd('0x60'),_0x3ba70c);var _0x27131c={'method':_0x2fdd('0x61'),'uri':_0x2cddf2,'qs':{'operation':_0x2fdd('0x62'),'username':_0x582f53[_0x2fdd('0x56')]},'json':!![]};return rp(_0x27131c);}})[_0x2fdd('0x23')](function(_0x15dce6){if(_0x15dce6['success']){var _0x177762={'method':_0x2fdd('0x63'),'uri':_0x2cddf2,'form':{'operation':_0x2fdd('0x64'),'username':_0xb34f2d,'accessKey':md5(_0x15dce6[_0x2fdd('0x65')]['token']+_0x4d20d8)},'json':!![]};return rp(_0x177762);}})['then'](function(_0x58bac7){if(_0x58bac7[_0x2fdd('0x66')]){var _0x150183={'method':_0x2fdd('0x61'),'uri':_0x2cddf2,'qs':{'operation':_0x2fdd('0x67'),'username':_0xb34f2d,'sessionName':_0x58bac7['result']['sessionName'],'elementType':_0x121cce},'json':!![]};return rp(_0x150183);}})['then'](function(_0x253b8f){if(_0x253b8f[_0x2fdd('0x66')]){var _0x56fb1a=['autogenerated',_0x2fdd('0x68'),_0x2fdd('0x69')];_[_0x2fdd('0x6a')](_0x253b8f[_0x2fdd('0x65')][_0x2fdd('0x33')],function(_0x31c963){return _0x56fb1a[_0x2fdd('0x6b')](_0x31c963['type'][_0x2fdd('0x29')]);});_[_0x2fdd('0x6a')](_0x253b8f['result'][_0x2fdd('0x33')],function(_0x33ebf9){return _0x33ebf9[_0x2fdd('0x6c')]===_0x2fdd('0x6d');});return{'count':_0x253b8f[_0x2fdd('0x65')][_0x2fdd('0x33')][_0x2fdd('0x34')],'rows':_['map'](_0x253b8f[_0x2fdd('0x65')][_0x2fdd('0x33')],function(_0x5dfd1e){return{'id':_0x5dfd1e['name'],'name':_0x5dfd1e[_0x2fdd('0x6e')],'custom':_[_0x2fdd('0x6f')](_0x5dfd1e[_0x2fdd('0x29')],_0x2fdd('0x70'))?!![]:![],'options':_0x5dfd1e[_0x2fdd('0x3b')][_0x2fdd('0x29')]===_0x2fdd('0x71')&&_0x5dfd1e[_0x2fdd('0x3b')][_0x2fdd('0x72')][_0x2fdd('0x34')]>0x0?_[_0x2fdd('0x2a')](_0x5dfd1e['type'][_0x2fdd('0x72')],function(_0x6d91c0){return{'name':_0x6d91c0[_0x2fdd('0x6e')],'value':_0x6d91c0['value']};}):[]};})};}})[_0x2fdd('0x23')](respondWithResult(_0x5d4117,null))[_0x2fdd('0x42')](function(_0x578882){console[_0x2fdd('0x73')](_0x2fdd('0x74')+_0x578882);var _0x35dbb5=_0x1d37e5[_0x2fdd('0x2e')]['test']?0x1f4:_0x578882[_0x2fdd('0x75')]||0x1f4;logger[_0x2fdd('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0x2fdd('0x55'),_0x35dbb5,JSON['stringify'](_0x578882));delete _0x578882['name'];if(_0x35dbb5===0x191){_0x35dbb5=0x190;}_0x5d4117[_0x2fdd('0x19')](_0x35dbb5)[_0x2fdd('0x76')](_0x1d37e5['query']['test']?{'message':_0x2fdd('0x77'),'statusCode':_0x578882[_0x2fdd('0x75')]}:_0x578882);});};
\ No newline at end of file
index a7917e5..25c9b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5e1=['int_vtiger_accounts','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount'];(function(_0x13b8ad,_0x59cb47){var _0x4da238=function(_0xf47525){while(--_0xf47525){_0x13b8ad['push'](_0x13b8ad['shift']());}};_0x4da238(++_0x59cb47);}(_0xa5e1,0x1dd));var _0x1a5e=function(_0x16de43,_0x2bb75f){_0x16de43=_0x16de43-0x0;var _0x2aaa5d=_0xa5e1[_0x16de43];return _0x2aaa5d;};'use strict';var _=require('lodash');var util=require(_0x1a5e('0x0'));var logger=require(_0x1a5e('0x1'))(_0x1a5e('0x2'));var moment=require(_0x1a5e('0x3'));var BPromise=require(_0x1a5e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1a5e('0x5'));var rimraf=require(_0x1a5e('0x6'));var config=require(_0x1a5e('0x7'));var attributes=require(_0x1a5e('0x8'));var integrations=require(_0x1a5e('0x9'));module[_0x1a5e('0xa')]=function(_0x2b5785,_0x413ef6){return _0x2b5785[_0x1a5e('0xb')](_0x1a5e('0xc'),attributes,{'tableName':_0x1a5e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x89aa=['define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports'];(function(_0x3cdaed,_0x444cd3){var _0x485b5d=function(_0x17f092){while(--_0x17f092){_0x3cdaed['push'](_0x3cdaed['shift']());}};_0x485b5d(++_0x444cd3);}(_0x89aa,0x112));var _0xa89a=function(_0x2fff20,_0x272796){_0x2fff20=_0x2fff20-0x0;var _0x5a4ee6=_0x89aa[_0x2fff20];return _0x5a4ee6;};'use strict';var _=require(_0xa89a('0x0'));var util=require(_0xa89a('0x1'));var logger=require(_0xa89a('0x2'))(_0xa89a('0x3'));var moment=require(_0xa89a('0x4'));var BPromise=require(_0xa89a('0x5'));var rp=require(_0xa89a('0x6'));var fs=require('fs');var path=require(_0xa89a('0x7'));var rimraf=require(_0xa89a('0x8'));var config=require(_0xa89a('0x9'));var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0xa89a('0xa'));module[_0xa89a('0xb')]=function(_0x3c3803,_0x597be1){return _0x3c3803[_0xa89a('0xc')]('VtigerAccount',attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cc15579..8512376 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb8=['where','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','error','message','catch','VtigerAccount','findAll','options','raw','limit','include','model','attributes','map','then','GetVtigerAccount','stringify','ShowVtigerAccount'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x5eb8,0xb0));var _0x85eb=function(_0x3daa8c,_0x388a87){_0x3daa8c=_0x3daa8c-0x0;var _0x2b1bd7=_0x5eb8[_0x3daa8c];return _0x2b1bd7;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x85eb('0x0'));var BPromise=require(_0x85eb('0x1'));var rs=require(_0x85eb('0x2'));var fs=require('fs');var Redis=require(_0x85eb('0x3'));var db=require(_0x85eb('0x4'))['db'];var utils=require(_0x85eb('0x5'));var logger=require(_0x85eb('0x6'))(_0x85eb('0x7'));var config=require(_0x85eb('0x8'));var jayson=require(_0x85eb('0x9'));var client=jayson[_0x85eb('0xa')][_0x85eb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a8814,_0x16d7b9,_0x3af658){return new BPromise(function(_0x448345,_0x5cd4ec){return client[_0x85eb('0xc')](_0x4a8814,_0x3af658)['then'](function(_0x1f0036){logger[_0x85eb('0xd')](_0x85eb('0xe'),_0x16d7b9,_0x85eb('0xf'));logger[_0x85eb('0x10')](_0x85eb('0x11'),_0x16d7b9,_0x85eb('0xf'),JSON['stringify'](_0x1f0036));if(_0x1f0036[_0x85eb('0x12')]){if(_0x1f0036[_0x85eb('0x12')]['code']===0x1f4){logger[_0x85eb('0x12')](_0x85eb('0xe'),_0x16d7b9,_0x1f0036[_0x85eb('0x12')][_0x85eb('0x13')]);return _0x5cd4ec(_0x1f0036['error']['message']);}logger[_0x85eb('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x16d7b9,_0x1f0036[_0x85eb('0x12')][_0x85eb('0x13')]);return _0x448345(_0x1f0036[_0x85eb('0x12')][_0x85eb('0x13')]);}else{logger[_0x85eb('0xd')]('VtigerAccount,\x20%s,\x20%s',_0x16d7b9,_0x85eb('0xf'));_0x448345(_0x1f0036['result'][_0x85eb('0x13')]);}})[_0x85eb('0x14')](function(_0x3e23e8){logger[_0x85eb('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x16d7b9,_0x3e23e8);_0x5cd4ec(_0x3e23e8);});});}exports['GetVtigerAccount']=function(_0x50d2a8){var _0xe198ca=this;return new Promise(function(_0x39ca96,_0x10cf2f){return db[_0x85eb('0x15')][_0x85eb('0x16')]({'raw':_0x50d2a8[_0x85eb('0x17')]?_0x50d2a8['options'][_0x85eb('0x18')]===undefined?!![]:![]:!![],'where':_0x50d2a8[_0x85eb('0x17')]?_0x50d2a8[_0x85eb('0x17')]['where']||null:null,'attributes':_0x50d2a8['options']?_0x50d2a8['options']['attributes']||null:null,'limit':_0x50d2a8[_0x85eb('0x17')]?_0x50d2a8[_0x85eb('0x17')][_0x85eb('0x19')]||null:null,'include':_0x50d2a8[_0x85eb('0x17')]?_0x50d2a8[_0x85eb('0x17')][_0x85eb('0x1a')]?_['map'](_0x50d2a8['options']['include'],function(_0x298e84){return{'model':db[_0x298e84[_0x85eb('0x1b')]],'as':_0x298e84['as'],'attributes':_0x298e84[_0x85eb('0x1c')],'include':_0x298e84[_0x85eb('0x1a')]?_[_0x85eb('0x1d')](_0x298e84[_0x85eb('0x1a')],function(_0x5dfc96){return{'model':db[_0x5dfc96[_0x85eb('0x1b')]],'as':_0x5dfc96['as'],'attributes':_0x5dfc96[_0x85eb('0x1c')],'include':_0x5dfc96[_0x85eb('0x1a')]?_[_0x85eb('0x1d')](_0x5dfc96[_0x85eb('0x1a')],function(_0x57a03c){return{'model':db[_0x57a03c[_0x85eb('0x1b')]],'as':_0x57a03c['as'],'attributes':_0x57a03c[_0x85eb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x85eb('0x1e')](function(_0x3e7eb9){logger[_0x85eb('0xd')](_0x85eb('0x1f'),_0x50d2a8);logger['debug']('GetVtigerAccount',_0x50d2a8,JSON[_0x85eb('0x20')](_0x3e7eb9));_0x39ca96(_0x3e7eb9);})['catch'](function(_0xa9b14f){logger['error'](_0x85eb('0x1f'),_0xa9b14f[_0x85eb('0x13')],_0x50d2a8);_0x10cf2f(_0xe198ca[_0x85eb('0x12')](0x1f4,_0xa9b14f[_0x85eb('0x13')]));});});};exports[_0x85eb('0x21')]=function(_0xf4ac13){var _0x41ed76=this;return new Promise(function(_0x5decd5,_0x237f19){return db[_0x85eb('0x15')]['find']({'raw':_0xf4ac13[_0x85eb('0x17')]?_0xf4ac13['options']['raw']===undefined?!![]:![]:!![],'where':_0xf4ac13[_0x85eb('0x17')]?_0xf4ac13[_0x85eb('0x17')][_0x85eb('0x22')]||null:null,'attributes':_0xf4ac13[_0x85eb('0x17')]?_0xf4ac13[_0x85eb('0x17')][_0x85eb('0x1c')]||null:null,'include':_0xf4ac13[_0x85eb('0x17')]?_0xf4ac13[_0x85eb('0x17')][_0x85eb('0x1a')]?_[_0x85eb('0x1d')](_0xf4ac13['options'][_0x85eb('0x1a')],function(_0x3a5b87){return{'model':db[_0x3a5b87['model']],'as':_0x3a5b87['as'],'attributes':_0x3a5b87['attributes'],'include':_0x3a5b87[_0x85eb('0x1a')]?_[_0x85eb('0x1d')](_0x3a5b87[_0x85eb('0x1a')],function(_0x12cb4c){return{'model':db[_0x12cb4c[_0x85eb('0x1b')]],'as':_0x12cb4c['as'],'attributes':_0x12cb4c[_0x85eb('0x1c')],'include':_0x12cb4c[_0x85eb('0x1a')]?_[_0x85eb('0x1d')](_0x12cb4c[_0x85eb('0x1a')],function(_0x373e5f){return{'model':db[_0x373e5f[_0x85eb('0x1b')]],'as':_0x373e5f['as'],'attributes':_0x373e5f[_0x85eb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x85eb('0x1e')](function(_0x33605a){logger['info'](_0x85eb('0x21'),_0xf4ac13);logger[_0x85eb('0x10')]('ShowVtigerAccount',_0xf4ac13,JSON['stringify'](_0x33605a));_0x5decd5(_0x33605a);})[_0x85eb('0x14')](function(_0xe22d16){logger['error'](_0x85eb('0x21'),_0xe22d16['message'],_0xf4ac13);_0x237f19(_0x41ed76[_0x85eb('0x12')](0x1f4,_0xe22d16['message']));});});};
\ No newline at end of file
+var _0xa902=['include','map','model','ShowVtigerAccount','VtigerAccount','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetVtigerAccount','findAll','options','raw','where','attributes'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xa902,0x8d));var _0x2a90=function(_0x1c514a,_0x3b7c89){_0x1c514a=_0x1c514a-0x0;var _0x227d07=_0xa902[_0x1c514a];return _0x227d07;};'use strict';var _=require(_0x2a90('0x0'));var util=require(_0x2a90('0x1'));var moment=require(_0x2a90('0x2'));var BPromise=require(_0x2a90('0x3'));var rs=require(_0x2a90('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2a90('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2a90('0x6'));var config=require(_0x2a90('0x7'));var jayson=require(_0x2a90('0x8'));var client=jayson[_0x2a90('0x9')][_0x2a90('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25bcfc,_0x58369a,_0x4109e6){return new BPromise(function(_0x570659,_0x5ec2b9){return client[_0x2a90('0xb')](_0x25bcfc,_0x4109e6)[_0x2a90('0xc')](function(_0xe500bc){logger[_0x2a90('0xd')](_0x2a90('0xe'),_0x58369a,'request\x20sent');logger[_0x2a90('0xf')](_0x2a90('0x10'),_0x58369a,_0x2a90('0x11'),JSON[_0x2a90('0x12')](_0xe500bc));if(_0xe500bc['error']){if(_0xe500bc[_0x2a90('0x13')]['code']===0x1f4){logger[_0x2a90('0x13')]('VtigerAccount,\x20%s,\x20%s',_0x58369a,_0xe500bc[_0x2a90('0x13')]['message']);return _0x5ec2b9(_0xe500bc[_0x2a90('0x13')][_0x2a90('0x14')]);}logger[_0x2a90('0x13')]('VtigerAccount,\x20%s,\x20%s',_0x58369a,_0xe500bc['error']['message']);return _0x570659(_0xe500bc[_0x2a90('0x13')][_0x2a90('0x14')]);}else{logger['info'](_0x2a90('0xe'),_0x58369a,_0x2a90('0x11'));_0x570659(_0xe500bc[_0x2a90('0x15')][_0x2a90('0x14')]);}})[_0x2a90('0x16')](function(_0x37858e){logger[_0x2a90('0x13')](_0x2a90('0xe'),_0x58369a,_0x37858e);_0x5ec2b9(_0x37858e);});});}exports[_0x2a90('0x17')]=function(_0x5c3e4b){var _0x162f0b=this;return new Promise(function(_0x1d9a28,_0x4190ff){return db['VtigerAccount'][_0x2a90('0x18')]({'raw':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1a')]===undefined?!![]:![]:!![],'where':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1b')]||null:null,'attributes':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1c')]||null:null,'limit':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')]['limit']||null:null,'include':_0x5c3e4b[_0x2a90('0x19')]?_0x5c3e4b[_0x2a90('0x19')][_0x2a90('0x1d')]?_[_0x2a90('0x1e')](_0x5c3e4b['options'][_0x2a90('0x1d')],function(_0xd033d){return{'model':db[_0xd033d['model']],'as':_0xd033d['as'],'attributes':_0xd033d[_0x2a90('0x1c')],'include':_0xd033d[_0x2a90('0x1d')]?_[_0x2a90('0x1e')](_0xd033d[_0x2a90('0x1d')],function(_0x2a212c){return{'model':db[_0x2a212c[_0x2a90('0x1f')]],'as':_0x2a212c['as'],'attributes':_0x2a212c[_0x2a90('0x1c')],'include':_0x2a212c[_0x2a90('0x1d')]?_['map'](_0x2a212c[_0x2a90('0x1d')],function(_0x17f978){return{'model':db[_0x17f978[_0x2a90('0x1f')]],'as':_0x17f978['as'],'attributes':_0x17f978[_0x2a90('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x2a90('0xc')](function(_0x5208d8){logger['info'](_0x2a90('0x17'),_0x5c3e4b);logger['debug']('GetVtigerAccount',_0x5c3e4b,JSON['stringify'](_0x5208d8));_0x1d9a28(_0x5208d8);})[_0x2a90('0x16')](function(_0x3c78f5){logger['error']('GetVtigerAccount',_0x3c78f5[_0x2a90('0x14')],_0x5c3e4b);_0x4190ff(_0x162f0b['error'](0x1f4,_0x3c78f5[_0x2a90('0x14')]));});});};exports[_0x2a90('0x20')]=function(_0x3b580f){var _0x27b6b6=this;return new Promise(function(_0xf18d11,_0x11586c){return db[_0x2a90('0x21')]['find']({'raw':_0x3b580f[_0x2a90('0x19')]?_0x3b580f[_0x2a90('0x19')][_0x2a90('0x1a')]===undefined?!![]:![]:!![],'where':_0x3b580f['options']?_0x3b580f[_0x2a90('0x19')][_0x2a90('0x1b')]||null:null,'attributes':_0x3b580f[_0x2a90('0x19')]?_0x3b580f[_0x2a90('0x19')]['attributes']||null:null,'include':_0x3b580f[_0x2a90('0x19')]?_0x3b580f[_0x2a90('0x19')][_0x2a90('0x1d')]?_[_0x2a90('0x1e')](_0x3b580f[_0x2a90('0x19')][_0x2a90('0x1d')],function(_0x4d4149){return{'model':db[_0x4d4149[_0x2a90('0x1f')]],'as':_0x4d4149['as'],'attributes':_0x4d4149[_0x2a90('0x1c')],'include':_0x4d4149[_0x2a90('0x1d')]?_[_0x2a90('0x1e')](_0x4d4149['include'],function(_0x1bab1d){return{'model':db[_0x1bab1d[_0x2a90('0x1f')]],'as':_0x1bab1d['as'],'attributes':_0x1bab1d['attributes'],'include':_0x1bab1d[_0x2a90('0x1d')]?_[_0x2a90('0x1e')](_0x1bab1d['include'],function(_0x5073a4){return{'model':db[_0x5073a4[_0x2a90('0x1f')]],'as':_0x5073a4['as'],'attributes':_0x5073a4[_0x2a90('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x2a90('0xc')](function(_0x4cd36c){logger[_0x2a90('0xd')]('ShowVtigerAccount',_0x3b580f);logger[_0x2a90('0xf')]('ShowVtigerAccount',_0x3b580f,JSON[_0x2a90('0x12')](_0x4cd36c));_0xf18d11(_0x4cd36c);})['catch'](function(_0x5322dc){logger[_0x2a90('0x13')]('ShowVtigerAccount',_0x5322dc[_0x2a90('0x14')],_0x3b580f);_0x11586c(_0x27b6b6[_0x2a90('0x13')](0x1f4,_0x5322dc[_0x2a90('0x14')]));});});};
\ No newline at end of file
index 9331919..77aef54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38ca=['fs-extra','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','connect-timeout','Router'];(function(_0x567d9f,_0x44354c){var _0x28ab37=function(_0x1870ad){while(--_0x1870ad){_0x567d9f['push'](_0x567d9f['shift']());}};_0x28ab37(++_0x44354c);}(_0x38ca,0x1f2));var _0xa38c=function(_0x32cf96,_0x7502d5){_0x32cf96=_0x32cf96-0x0;var _0x125cc1=_0x38ca[_0x32cf96];return _0x125cc1;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xa38c('0x0'));var express=require('express');var router=express[_0xa38c('0x1')]();var fs_extra=require(_0xa38c('0x2'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa38c('0x3'));var controller=require(_0xa38c('0x4'));router[_0xa38c('0x5')]('/',auth[_0xa38c('0x6')](),controller[_0xa38c('0x7')]);router[_0xa38c('0x5')](_0xa38c('0x8'),auth[_0xa38c('0x6')](),controller[_0xa38c('0x9')]);router[_0xa38c('0x5')](_0xa38c('0xa'),auth[_0xa38c('0x6')](),controller['getFields']);router[_0xa38c('0x5')](_0xa38c('0xb'),auth[_0xa38c('0x6')](),controller[_0xa38c('0xc')]);router['get'](_0xa38c('0xd'),auth[_0xa38c('0x6')](),controller['getDescriptions']);router[_0xa38c('0xe')]('/',auth[_0xa38c('0x6')](),controller[_0xa38c('0xf')]);router[_0xa38c('0x10')]('/:id',auth[_0xa38c('0x6')](),controller['update']);router[_0xa38c('0x11')](_0xa38c('0x8'),auth['isAuthenticated'](),controller[_0xa38c('0x12')]);module[_0xa38c('0x13')]=router;
\ No newline at end of file
+var _0x01bc=['index','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put','update','delete','/:id','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated'];(function(_0x1fb9d8,_0x45de17){var _0x175219=function(_0x16e723){while(--_0x16e723){_0x1fb9d8['push'](_0x1fb9d8['shift']());}};_0x175219(++_0x45de17);}(_0x01bc,0x1af));var _0xc01b=function(_0x51b426,_0x40fb3a){_0x51b426=_0x51b426-0x0;var _0x4365b5=_0x01bc[_0x51b426];return _0x4365b5;};'use strict';var multer=require('multer');var util=require(_0xc01b('0x0'));var path=require(_0xc01b('0x1'));var timeout=require(_0xc01b('0x2'));var express=require(_0xc01b('0x3'));var router=express[_0xc01b('0x4')]();var fs_extra=require(_0xc01b('0x5'));var auth=require(_0xc01b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc01b('0x7'));var controller=require('./intVtigerConfiguration.controller');router[_0xc01b('0x8')]('/',auth[_0xc01b('0x9')](),controller[_0xc01b('0xa')]);router[_0xc01b('0x8')]('/:id',auth[_0xc01b('0x9')](),controller['show']);router[_0xc01b('0x8')]('/:id/fields',auth[_0xc01b('0x9')](),controller[_0xc01b('0xb')]);router[_0xc01b('0x8')](_0xc01b('0xc'),auth[_0xc01b('0x9')](),controller[_0xc01b('0xd')]);router[_0xc01b('0x8')](_0xc01b('0xe'),auth[_0xc01b('0x9')](),controller[_0xc01b('0xf')]);router['post']('/',auth[_0xc01b('0x9')](),controller['create']);router[_0xc01b('0x10')]('/:id',auth[_0xc01b('0x9')](),controller[_0xc01b('0x11')]);router[_0xc01b('0x12')](_0xc01b('0x13'),auth[_0xc01b('0x9')](),controller[_0xc01b('0x14')]);module['exports']=router;
\ No newline at end of file
index 2335e02..5625e7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5749=['sequelize','exports','STRING'];(function(_0x3ae3bf,_0x2c3a77){var _0x4fa308=function(_0x290e50){while(--_0x290e50){_0x3ae3bf['push'](_0x3ae3bf['shift']());}};_0x4fa308(++_0x2c3a77);}(_0x5749,0xde));var _0x9574=function(_0x1fc8cd,_0x405ddf){_0x1fc8cd=_0x1fc8cd-0x0;var _0x2fd158=_0x5749[_0x1fc8cd];return _0x2fd158;};'use strict';var Sequelize=require(_0x9574('0x0'));module[_0x9574('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9574('0x2')]}};
\ No newline at end of file
+var _0xd36e=['sequelize','STRING'];(function(_0x438fb3,_0x22d95a){var _0xd63736=function(_0x2090ec){while(--_0x2090ec){_0x438fb3['push'](_0x438fb3['shift']());}};_0xd63736(++_0x22d95a);}(_0xd36e,0x128));var _0xed36=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xd36e[_0x413feb];return _0x40ee88;};'use strict';var Sequelize=require(_0xed36('0x0'));module['exports']={'name':{'type':Sequelize[_0xed36('0x1')]},'description':{'type':Sequelize[_0xed36('0x1')]}};
\ No newline at end of file
index 1418ceb..ca270bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e0f=['catch','show','params','find','create','body','update','destroy','getFields','findOne','VtigerField','rawAttributes','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','reject','then','sendStatus','error','stack','name','send','index','map','VtigerConfiguration','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows'];(function(_0x33b259,_0x2036be){var _0xf95548=function(_0x5b3424){while(--_0x5b3424){_0x33b259['push'](_0x33b259['shift']());}};_0xf95548(++_0x2036be);}(_0x3e0f,0xfc));var _0xf3e0=function(_0x4aa4e6,_0x278c45){_0x4aa4e6=_0x4aa4e6-0x0;var _0x322588=_0x3e0f[_0x4aa4e6];return _0x322588;};'use strict';var emlformat=require(_0xf3e0('0x0'));var rimraf=require(_0xf3e0('0x1'));var zipdir=require(_0xf3e0('0x2'));var jsonpatch=require(_0xf3e0('0x3'));var rp=require('request-promise');var moment=require(_0xf3e0('0x4'));var BPromise=require(_0xf3e0('0x5'));var Mustache=require('mustache');var util=require(_0xf3e0('0x6'));var path=require(_0xf3e0('0x7'));var sox=require(_0xf3e0('0x8'));var csv=require(_0xf3e0('0x9'));var ejs=require(_0xf3e0('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xf3e0('0xb'));var crypto=require(_0xf3e0('0xc'));var jsforce=require(_0xf3e0('0xd'));var deskjs=require(_0xf3e0('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf3e0('0xf'));var Papa=require(_0xf3e0('0x10'));var Redis=require(_0xf3e0('0x11'));var authService=require(_0xf3e0('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf3e0('0x13'));var logger=require('../../config/logger')(_0xf3e0('0x14'));var utils=require(_0xf3e0('0x15'));var config=require(_0xf3e0('0x16'));var licenseUtil=require(_0xf3e0('0x17'));var db=require(_0xf3e0('0x18'))['db'];function respondWithStatusCode(_0x526a5a,_0x18245b){_0x18245b=_0x18245b||0xcc;return function(_0x3089ce){if(_0x3089ce){return _0x526a5a['sendStatus'](_0x18245b);}return _0x526a5a[_0xf3e0('0x19')](_0x18245b)[_0xf3e0('0x1a')]();};}function respondWithResult(_0x432d67,_0x3b33d9){_0x3b33d9=_0x3b33d9||0xc8;return function(_0x6636d2){if(_0x6636d2){return _0x432d67[_0xf3e0('0x19')](_0x3b33d9)[_0xf3e0('0x1b')](_0x6636d2);}};}function respondWithFilteredResult(_0x3daa67,_0x64d4e4){return function(_0x1a3321){if(_0x1a3321){var _0x124acf=typeof _0x64d4e4[_0xf3e0('0x1c')]===_0xf3e0('0x1d')&&typeof _0x64d4e4[_0xf3e0('0x1e')]===_0xf3e0('0x1d');var _0x277264=_0x1a3321[_0xf3e0('0x1f')];var _0x53348d=_0x124acf?0x0:_0x64d4e4[_0xf3e0('0x1c')];var _0x3c26d6=_0x124acf?_0x1a3321['count']:_0x64d4e4['offset']+_0x64d4e4[_0xf3e0('0x1e')];var _0x4f4e9d;if(_0x3c26d6>=_0x277264){_0x3c26d6=_0x277264;_0x4f4e9d=0xc8;}else{_0x4f4e9d=0xce;}_0x3daa67[_0xf3e0('0x19')](_0x4f4e9d);return _0x3daa67['set'](_0xf3e0('0x20'),_0x53348d+'-'+_0x3c26d6+'/'+_0x277264)[_0xf3e0('0x1b')](_0x1a3321);}return null;};}function patchUpdates(_0x20350e){return function(_0x3a1fba){try{jsonpatch['apply'](_0x3a1fba,_0x20350e,!![]);}catch(_0x2ba33a){return BPromise[_0xf3e0('0x21')](_0x2ba33a);}return _0x3a1fba['save']();};}function saveUpdates(_0x12bd9e,_0x7a9393){return function(_0x5bee36){if(_0x5bee36){return _0x5bee36['update'](_0x12bd9e)[_0xf3e0('0x22')](function(_0x38bfe1){return _0x38bfe1;});}return null;};}function removeEntity(_0x2f8141,_0x7ec83){return function(_0x12080f){if(_0x12080f){return _0x12080f['destroy']()[_0xf3e0('0x22')](function(){_0x2f8141[_0xf3e0('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e81af,_0x1800bf){return function(_0x35c413){if(!_0x35c413){_0x2e81af[_0xf3e0('0x23')](0x194);}return _0x35c413;};}function handleError(_0x5311a9,_0x48297e){_0x48297e=_0x48297e||0x1f4;return function(_0xa082aa){logger[_0xf3e0('0x24')](_0xa082aa[_0xf3e0('0x25')]);if(_0xa082aa[_0xf3e0('0x26')]){delete _0xa082aa[_0xf3e0('0x26')];}_0x5311a9[_0xf3e0('0x19')](_0x48297e)[_0xf3e0('0x27')](_0xa082aa);};}exports[_0xf3e0('0x28')]=function(_0x3b6980,_0x7e8a60){var _0x39c8ab={},_0x58fad7={},_0x4f8d43={'count':0x0,'rows':[]};var _0xf08903=_[_0xf3e0('0x29')](db[_0xf3e0('0x2a')]['rawAttributes'],function(_0x436dc6){return{'name':_0x436dc6['fieldName'],'type':_0x436dc6[_0xf3e0('0x2b')]['key']};});_0x58fad7[_0xf3e0('0x2c')]=_[_0xf3e0('0x29')](_0xf08903,_0xf3e0('0x26'));_0x58fad7[_0xf3e0('0x2d')]=_[_0xf3e0('0x2e')](_0x3b6980[_0xf3e0('0x2d')]);_0x58fad7[_0xf3e0('0x2f')]=_[_0xf3e0('0x30')](_0x58fad7['model'],_0x58fad7['query']);_0x39c8ab[_0xf3e0('0x31')]=_[_0xf3e0('0x30')](_0x58fad7[_0xf3e0('0x2c')],qs['fields'](_0x3b6980[_0xf3e0('0x2d')][_0xf3e0('0x32')]));_0x39c8ab[_0xf3e0('0x31')]=_0x39c8ab[_0xf3e0('0x31')][_0xf3e0('0x33')]?_0x39c8ab['attributes']:_0x58fad7[_0xf3e0('0x2c')];if(!_0x3b6980[_0xf3e0('0x2d')][_0xf3e0('0x34')]('nolimit')){_0x39c8ab[_0xf3e0('0x1e')]=qs[_0xf3e0('0x1e')](_0x3b6980[_0xf3e0('0x2d')][_0xf3e0('0x1e')]);_0x39c8ab[_0xf3e0('0x1c')]=qs['offset'](_0x3b6980[_0xf3e0('0x2d')][_0xf3e0('0x1c')]);}_0x39c8ab[_0xf3e0('0x35')]=qs['sort'](_0x3b6980['query'][_0xf3e0('0x36')]);_0x39c8ab[_0xf3e0('0x37')]=qs[_0xf3e0('0x2f')](_[_0xf3e0('0x38')](_0x3b6980[_0xf3e0('0x2d')],_0x58fad7[_0xf3e0('0x2f')]),_0xf08903);if(_0x3b6980[_0xf3e0('0x2d')][_0xf3e0('0x39')]){_0x39c8ab[_0xf3e0('0x37')]=_[_0xf3e0('0x3a')](_0x39c8ab['where'],{'$or':_[_0xf3e0('0x29')](_0xf08903,function(_0x28dbe4){if(_0x28dbe4['type']!==_0xf3e0('0x3b')){var _0x4046ef={};_0x4046ef[_0x28dbe4['name']]={'$like':'%'+_0x3b6980['query'][_0xf3e0('0x39')]+'%'};return _0x4046ef;}})});}_0x39c8ab=_[_0xf3e0('0x3a')]({},_0x39c8ab,_0x3b6980[_0xf3e0('0x3c')]);var _0x2d5876={'where':_0x39c8ab[_0xf3e0('0x37')]};return db['VtigerConfiguration'][_0xf3e0('0x1f')](_0x2d5876)[_0xf3e0('0x22')](function(_0x5a97df){_0x4f8d43[_0xf3e0('0x1f')]=_0x5a97df;if(_0x3b6980[_0xf3e0('0x2d')][_0xf3e0('0x3d')]){_0x39c8ab[_0xf3e0('0x3e')]=[{'all':!![]}];}return db[_0xf3e0('0x2a')]['findAll'](_0x39c8ab);})[_0xf3e0('0x22')](function(_0x58076c){_0x4f8d43[_0xf3e0('0x3f')]=_0x58076c;return _0x4f8d43;})[_0xf3e0('0x22')](respondWithFilteredResult(_0x7e8a60,_0x39c8ab))[_0xf3e0('0x40')](handleError(_0x7e8a60,null));};exports[_0xf3e0('0x41')]=function(_0x514531,_0x8a84fc){var _0x5b4371={'raw':![],'where':{'id':_0x514531[_0xf3e0('0x42')]['id']}},_0x5641f9={};_0x5641f9[_0xf3e0('0x2c')]=_[_0xf3e0('0x2e')](db[_0xf3e0('0x2a')]['rawAttributes']);_0x5641f9[_0xf3e0('0x2d')]=_['keys'](_0x514531[_0xf3e0('0x2d')]);_0x5641f9[_0xf3e0('0x2f')]=_[_0xf3e0('0x30')](_0x5641f9['model'],_0x5641f9[_0xf3e0('0x2d')]);_0x5b4371[_0xf3e0('0x31')]=_['intersection'](_0x5641f9[_0xf3e0('0x2c')],qs[_0xf3e0('0x32')](_0x514531[_0xf3e0('0x2d')][_0xf3e0('0x32')]));_0x5b4371[_0xf3e0('0x31')]=_0x5b4371['attributes'][_0xf3e0('0x33')]?_0x5b4371[_0xf3e0('0x31')]:_0x5641f9[_0xf3e0('0x2c')];if(_0x514531[_0xf3e0('0x2d')][_0xf3e0('0x3d')]){_0x5b4371[_0xf3e0('0x3e')]=[{'all':!![]}];}_0x5b4371=_[_0xf3e0('0x3a')]({},_0x5b4371,_0x514531[_0xf3e0('0x3c')]);return db['VtigerConfiguration'][_0xf3e0('0x43')](_0x5b4371)[_0xf3e0('0x22')](handleEntityNotFound(_0x8a84fc,null))['then'](respondWithResult(_0x8a84fc,null))['catch'](handleError(_0x8a84fc,null));};exports[_0xf3e0('0x44')]=function(_0x1d15d6,_0x1ea8ed){return db[_0xf3e0('0x2a')][_0xf3e0('0x44')](_0x1d15d6[_0xf3e0('0x45')],{})[_0xf3e0('0x22')](respondWithResult(_0x1ea8ed,0xc9))['catch'](handleError(_0x1ea8ed,null));};exports[_0xf3e0('0x46')]=function(_0x2addaf,_0xc37c85){if(_0x2addaf[_0xf3e0('0x45')]['id']){delete _0x2addaf['body']['id'];}return db[_0xf3e0('0x2a')][_0xf3e0('0x43')]({'where':{'id':_0x2addaf[_0xf3e0('0x42')]['id']}})[_0xf3e0('0x22')](handleEntityNotFound(_0xc37c85,null))['then'](saveUpdates(_0x2addaf[_0xf3e0('0x45')],null))[_0xf3e0('0x22')](respondWithResult(_0xc37c85,null))[_0xf3e0('0x40')](handleError(_0xc37c85,null));};exports[_0xf3e0('0x47')]=function(_0x117625,_0x3b3957){return db[_0xf3e0('0x2a')][_0xf3e0('0x43')]({'where':{'id':_0x117625[_0xf3e0('0x42')]['id']}})[_0xf3e0('0x22')](handleEntityNotFound(_0x3b3957,null))['then'](removeEntity(_0x3b3957,null))[_0xf3e0('0x40')](handleError(_0x3b3957,null));};exports[_0xf3e0('0x48')]=function(_0x27e7ff,_0x5853bc,_0x4a0ff2){var _0x5d9bed={};var _0x53225a={};var _0x720ec1;var _0xb25243;return db[_0xf3e0('0x2a')][_0xf3e0('0x49')]({'where':{'id':_0x27e7ff[_0xf3e0('0x42')]['id']}})[_0xf3e0('0x22')](handleEntityNotFound(_0x5853bc,null))[_0xf3e0('0x22')](function(_0x45ba97){if(_0x45ba97){_0x720ec1=_0x45ba97;_0x53225a[_0xf3e0('0x2c')]=_[_0xf3e0('0x2e')](db[_0xf3e0('0x4a')][_0xf3e0('0x4b')]);_0x53225a[_0xf3e0('0x2d')]=_[_0xf3e0('0x2e')](_0x27e7ff[_0xf3e0('0x2d')]);_0x53225a[_0xf3e0('0x2f')]=_[_0xf3e0('0x30')](_0x53225a['model'],_0x53225a[_0xf3e0('0x2d')]);_0x5d9bed[_0xf3e0('0x31')]=_[_0xf3e0('0x30')](_0x53225a[_0xf3e0('0x2c')],qs[_0xf3e0('0x32')](_0x27e7ff['query']['fields']));_0x5d9bed['attributes']=_0x5d9bed[_0xf3e0('0x31')][_0xf3e0('0x33')]?_0x5d9bed['attributes']:_0x53225a[_0xf3e0('0x2c')];_0x5d9bed['order']=qs[_0xf3e0('0x36')](_0x27e7ff[_0xf3e0('0x2d')][_0xf3e0('0x36')]);_0x5d9bed[_0xf3e0('0x37')]=qs[_0xf3e0('0x2f')](_[_0xf3e0('0x38')](_0x27e7ff[_0xf3e0('0x2d')],_0x53225a[_0xf3e0('0x2f')]));if(_0x27e7ff[_0xf3e0('0x2d')][_0xf3e0('0x39')]){_0x5d9bed['where']=_['merge'](_0x5d9bed[_0xf3e0('0x37')],{'$or':_[_0xf3e0('0x29')](_0x5d9bed[_0xf3e0('0x31')],function(_0x36c65a){var _0x277613={};_0x277613[_0x36c65a]={'$like':'%'+_0x27e7ff[_0xf3e0('0x2d')][_0xf3e0('0x39')]+'%'};return _0x277613;})});}_0x5d9bed=_[_0xf3e0('0x3a')]({},_0x5d9bed,_0x27e7ff[_0xf3e0('0x3c')]);return _0x720ec1['getFields'](_0x5d9bed);}})[_0xf3e0('0x22')](function(_0x280045){if(_0x280045){_0xb25243=_0x280045[_0xf3e0('0x33')];if(!_0x27e7ff['query'][_0xf3e0('0x34')](_0xf3e0('0x4c'))){_0x5d9bed['limit']=qs[_0xf3e0('0x1e')](_0x27e7ff[_0xf3e0('0x2d')][_0xf3e0('0x1e')]);_0x5d9bed[_0xf3e0('0x1c')]=qs['offset'](_0x27e7ff[_0xf3e0('0x2d')][_0xf3e0('0x1c')]);}return _0x720ec1[_0xf3e0('0x48')](_0x5d9bed);}})['then'](function(_0x511674){if(_0x511674){return _0x511674?{'count':_0xb25243,'rows':_0x511674}:null;}})['then'](respondWithResult(_0x5853bc,null))[_0xf3e0('0x40')](handleError(_0x5853bc,null));};exports[_0xf3e0('0x4d')]=function(_0x46eadd,_0x3d4595,_0x1fc140){var _0x564ce5={};var _0x255665={};var _0x19c7f0;var _0xd4dbb2;return db['VtigerConfiguration'][_0xf3e0('0x49')]({'where':{'id':_0x46eadd[_0xf3e0('0x42')]['id']}})[_0xf3e0('0x22')](handleEntityNotFound(_0x3d4595,null))[_0xf3e0('0x22')](function(_0x1f0112){if(_0x1f0112){_0x19c7f0=_0x1f0112;_0x255665[_0xf3e0('0x2c')]=_[_0xf3e0('0x2e')](db[_0xf3e0('0x4a')]['rawAttributes']);_0x255665[_0xf3e0('0x2d')]=_[_0xf3e0('0x2e')](_0x46eadd['query']);_0x255665[_0xf3e0('0x2f')]=_['intersection'](_0x255665[_0xf3e0('0x2c')],_0x255665[_0xf3e0('0x2d')]);_0x564ce5[_0xf3e0('0x31')]=_['intersection'](_0x255665[_0xf3e0('0x2c')],qs[_0xf3e0('0x32')](_0x46eadd[_0xf3e0('0x2d')]['fields']));_0x564ce5[_0xf3e0('0x31')]=_0x564ce5['attributes'][_0xf3e0('0x33')]?_0x564ce5['attributes']:_0x255665[_0xf3e0('0x2c')];_0x564ce5[_0xf3e0('0x35')]=qs['sort'](_0x46eadd[_0xf3e0('0x2d')][_0xf3e0('0x36')]);_0x564ce5['where']=qs['filters'](_[_0xf3e0('0x38')](_0x46eadd[_0xf3e0('0x2d')],_0x255665[_0xf3e0('0x2f')]));if(_0x46eadd[_0xf3e0('0x2d')][_0xf3e0('0x39')]){_0x564ce5[_0xf3e0('0x37')]=_[_0xf3e0('0x3a')](_0x564ce5[_0xf3e0('0x37')],{'$or':_[_0xf3e0('0x29')](_0x564ce5[_0xf3e0('0x31')],function(_0x50a91b){var _0x52e39b={};_0x52e39b[_0x50a91b]={'$like':'%'+_0x46eadd['query'][_0xf3e0('0x39')]+'%'};return _0x52e39b;})});}_0x564ce5=_[_0xf3e0('0x3a')]({},_0x564ce5,_0x46eadd[_0xf3e0('0x3c')]);return _0x19c7f0['getSubjects'](_0x564ce5);}})['then'](function(_0x50ae81){if(_0x50ae81){_0xd4dbb2=_0x50ae81[_0xf3e0('0x33')];if(!_0x46eadd[_0xf3e0('0x2d')][_0xf3e0('0x34')]('nolimit')){_0x564ce5[_0xf3e0('0x1e')]=qs[_0xf3e0('0x1e')](_0x46eadd[_0xf3e0('0x2d')][_0xf3e0('0x1e')]);_0x564ce5[_0xf3e0('0x1c')]=qs[_0xf3e0('0x1c')](_0x46eadd[_0xf3e0('0x2d')]['offset']);}return _0x19c7f0[_0xf3e0('0x4d')](_0x564ce5);}})['then'](function(_0x637675){if(_0x637675){return _0x637675?{'count':_0xd4dbb2,'rows':_0x637675}:null;}})[_0xf3e0('0x22')](respondWithResult(_0x3d4595,null))['catch'](handleError(_0x3d4595,null));};exports[_0xf3e0('0x4e')]=function(_0x51e00e,_0x2d02ab,_0x39506d){var _0xe1b760={};var _0x411026={};var _0x53ca82;var _0x59ae7e;return db[_0xf3e0('0x2a')][_0xf3e0('0x49')]({'where':{'id':_0x51e00e['params']['id']}})[_0xf3e0('0x22')](handleEntityNotFound(_0x2d02ab,null))[_0xf3e0('0x22')](function(_0x1ec84c){if(_0x1ec84c){_0x53ca82=_0x1ec84c;_0x411026[_0xf3e0('0x2c')]=_[_0xf3e0('0x2e')](db[_0xf3e0('0x4a')][_0xf3e0('0x4b')]);_0x411026[_0xf3e0('0x2d')]=_[_0xf3e0('0x2e')](_0x51e00e[_0xf3e0('0x2d')]);_0x411026[_0xf3e0('0x2f')]=_['intersection'](_0x411026[_0xf3e0('0x2c')],_0x411026[_0xf3e0('0x2d')]);_0xe1b760[_0xf3e0('0x31')]=_[_0xf3e0('0x30')](_0x411026[_0xf3e0('0x2c')],qs[_0xf3e0('0x32')](_0x51e00e[_0xf3e0('0x2d')][_0xf3e0('0x32')]));_0xe1b760[_0xf3e0('0x31')]=_0xe1b760[_0xf3e0('0x31')]['length']?_0xe1b760[_0xf3e0('0x31')]:_0x411026['model'];_0xe1b760['order']=qs[_0xf3e0('0x36')](_0x51e00e[_0xf3e0('0x2d')]['sort']);_0xe1b760['where']=qs[_0xf3e0('0x2f')](_['pick'](_0x51e00e[_0xf3e0('0x2d')],_0x411026[_0xf3e0('0x2f')]));if(_0x51e00e[_0xf3e0('0x2d')][_0xf3e0('0x39')]){_0xe1b760['where']=_['merge'](_0xe1b760['where'],{'$or':_[_0xf3e0('0x29')](_0xe1b760[_0xf3e0('0x31')],function(_0x79bff0){var _0x4c55ab={};_0x4c55ab[_0x79bff0]={'$like':'%'+_0x51e00e[_0xf3e0('0x2d')][_0xf3e0('0x39')]+'%'};return _0x4c55ab;})});}_0xe1b760=_['merge']({},_0xe1b760,_0x51e00e[_0xf3e0('0x3c')]);return _0x53ca82[_0xf3e0('0x4e')](_0xe1b760);}})[_0xf3e0('0x22')](function(_0xe5b54d){if(_0xe5b54d){_0x59ae7e=_0xe5b54d[_0xf3e0('0x33')];if(!_0x51e00e[_0xf3e0('0x2d')][_0xf3e0('0x34')](_0xf3e0('0x4c'))){_0xe1b760[_0xf3e0('0x1e')]=qs[_0xf3e0('0x1e')](_0x51e00e[_0xf3e0('0x2d')]['limit']);_0xe1b760['offset']=qs[_0xf3e0('0x1c')](_0x51e00e[_0xf3e0('0x2d')][_0xf3e0('0x1c')]);}return _0x53ca82[_0xf3e0('0x4e')](_0xe1b760);}})[_0xf3e0('0x22')](function(_0x5a8c41){if(_0x5a8c41){return _0x5a8c41?{'count':_0x59ae7e,'rows':_0x5a8c41}:null;}})[_0xf3e0('0x22')](respondWithResult(_0x2d02ab,null))[_0xf3e0('0x40')](handleError(_0x2d02ab,null));};
\ No newline at end of file
+var _0x8a11=['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/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','VtigerConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','update','findOne','VtigerField','filter','getFields','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','moment'];(function(_0x510794,_0x120e85){var _0x3bd818=function(_0x34fab5){while(--_0x34fab5){_0x510794['push'](_0x510794['shift']());}};_0x3bd818(++_0x120e85);}(_0x8a11,0x196));var _0x18a1=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x8a11[_0x24237f];return _0x48298e;};'use strict';var emlformat=require(_0x18a1('0x0'));var rimraf=require(_0x18a1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x18a1('0x2'));var rp=require('request-promise');var moment=require(_0x18a1('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x18a1('0x4'));var util=require(_0x18a1('0x5'));var path=require(_0x18a1('0x6'));var sox=require(_0x18a1('0x7'));var csv=require(_0x18a1('0x8'));var ejs=require(_0x18a1('0x9'));var fs=require('fs');var fs_extra=require(_0x18a1('0xa'));var _=require(_0x18a1('0xb'));var squel=require(_0x18a1('0xc'));var crypto=require(_0x18a1('0xd'));var jsforce=require(_0x18a1('0xe'));var deskjs=require(_0x18a1('0xf'));var toCsv=require('to-csv');var querystring=require(_0x18a1('0x10'));var Papa=require('papaparse');var Redis=require(_0x18a1('0x11'));var authService=require(_0x18a1('0x12'));var qs=require(_0x18a1('0x13'));var as=require(_0x18a1('0x14'));var hardwareService=require(_0x18a1('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x18a1('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x18a1('0x17'));var db=require(_0x18a1('0x18'))['db'];function respondWithStatusCode(_0x208ba5,_0x54abdd){_0x54abdd=_0x54abdd||0xcc;return function(_0x8de444){if(_0x8de444){return _0x208ba5[_0x18a1('0x19')](_0x54abdd);}return _0x208ba5[_0x18a1('0x1a')](_0x54abdd)[_0x18a1('0x1b')]();};}function respondWithResult(_0x3238b1,_0x230691){_0x230691=_0x230691||0xc8;return function(_0x45601a){if(_0x45601a){return _0x3238b1[_0x18a1('0x1a')](_0x230691)[_0x18a1('0x1c')](_0x45601a);}};}function respondWithFilteredResult(_0xa14f52,_0x446e92){return function(_0x5a9c44){if(_0x5a9c44){var _0x377bdf=typeof _0x446e92[_0x18a1('0x1d')]===_0x18a1('0x1e')&&typeof _0x446e92[_0x18a1('0x1f')]==='undefined';var _0x573d69=_0x5a9c44[_0x18a1('0x20')];var _0x1b3d93=_0x377bdf?0x0:_0x446e92['offset'];var _0xe39f90=_0x377bdf?_0x5a9c44[_0x18a1('0x20')]:_0x446e92[_0x18a1('0x1d')]+_0x446e92[_0x18a1('0x1f')];var _0x298eff;if(_0xe39f90>=_0x573d69){_0xe39f90=_0x573d69;_0x298eff=0xc8;}else{_0x298eff=0xce;}_0xa14f52[_0x18a1('0x1a')](_0x298eff);return _0xa14f52['set'](_0x18a1('0x21'),_0x1b3d93+'-'+_0xe39f90+'/'+_0x573d69)['json'](_0x5a9c44);}return null;};}function patchUpdates(_0x5f9b08){return function(_0x19da08){try{jsonpatch[_0x18a1('0x22')](_0x19da08,_0x5f9b08,!![]);}catch(_0x34fa27){return BPromise[_0x18a1('0x23')](_0x34fa27);}return _0x19da08[_0x18a1('0x24')]();};}function saveUpdates(_0xc71bd9,_0x14e6c5){return function(_0x1697b4){if(_0x1697b4){return _0x1697b4['update'](_0xc71bd9)[_0x18a1('0x25')](function(_0x4320c8){return _0x4320c8;});}return null;};}function removeEntity(_0x2f1388,_0x221560){return function(_0xb734ab){if(_0xb734ab){return _0xb734ab[_0x18a1('0x26')]()[_0x18a1('0x25')](function(){_0x2f1388[_0x18a1('0x1a')](0xcc)[_0x18a1('0x1b')]();});}};}function handleEntityNotFound(_0x3f655a,_0x5819f0){return function(_0x5a0195){if(!_0x5a0195){_0x3f655a[_0x18a1('0x19')](0x194);}return _0x5a0195;};}function handleError(_0x54eb0e,_0x273c16){_0x273c16=_0x273c16||0x1f4;return function(_0x1c91f8){logger[_0x18a1('0x27')](_0x1c91f8[_0x18a1('0x28')]);if(_0x1c91f8[_0x18a1('0x29')]){delete _0x1c91f8['name'];}_0x54eb0e['status'](_0x273c16)[_0x18a1('0x2a')](_0x1c91f8);};}exports['index']=function(_0x534302,_0x9f4492){var _0x19bf40={},_0x5eb63c={},_0x1aa63a={'count':0x0,'rows':[]};var _0x2df229=_[_0x18a1('0x2b')](db[_0x18a1('0x2c')][_0x18a1('0x2d')],function(_0x44b8d3){return{'name':_0x44b8d3[_0x18a1('0x2e')],'type':_0x44b8d3[_0x18a1('0x2f')][_0x18a1('0x30')]};});_0x5eb63c[_0x18a1('0x31')]=_[_0x18a1('0x2b')](_0x2df229,_0x18a1('0x29'));_0x5eb63c[_0x18a1('0x32')]=_[_0x18a1('0x33')](_0x534302[_0x18a1('0x32')]);_0x5eb63c[_0x18a1('0x34')]=_[_0x18a1('0x35')](_0x5eb63c[_0x18a1('0x31')],_0x5eb63c['query']);_0x19bf40['attributes']=_[_0x18a1('0x35')](_0x5eb63c[_0x18a1('0x31')],qs[_0x18a1('0x36')](_0x534302['query']['fields']));_0x19bf40[_0x18a1('0x37')]=_0x19bf40[_0x18a1('0x37')][_0x18a1('0x38')]?_0x19bf40[_0x18a1('0x37')]:_0x5eb63c['model'];if(!_0x534302[_0x18a1('0x32')][_0x18a1('0x39')](_0x18a1('0x3a'))){_0x19bf40[_0x18a1('0x1f')]=qs['limit'](_0x534302[_0x18a1('0x32')][_0x18a1('0x1f')]);_0x19bf40['offset']=qs[_0x18a1('0x1d')](_0x534302[_0x18a1('0x32')][_0x18a1('0x1d')]);}_0x19bf40[_0x18a1('0x3b')]=qs[_0x18a1('0x3c')](_0x534302[_0x18a1('0x32')][_0x18a1('0x3c')]);_0x19bf40[_0x18a1('0x3d')]=qs['filters'](_[_0x18a1('0x3e')](_0x534302['query'],_0x5eb63c[_0x18a1('0x34')]),_0x2df229);if(_0x534302['query']['filter']){_0x19bf40[_0x18a1('0x3d')]=_[_0x18a1('0x3f')](_0x19bf40[_0x18a1('0x3d')],{'$or':_[_0x18a1('0x2b')](_0x2df229,function(_0x3ffbed){if(_0x3ffbed[_0x18a1('0x2f')]!==_0x18a1('0x40')){var _0x2511e4={};_0x2511e4[_0x3ffbed[_0x18a1('0x29')]]={'$like':'%'+_0x534302[_0x18a1('0x32')]['filter']+'%'};return _0x2511e4;}})});}_0x19bf40=_['merge']({},_0x19bf40,_0x534302[_0x18a1('0x41')]);var _0x5595e5={'where':_0x19bf40[_0x18a1('0x3d')]};return db[_0x18a1('0x2c')][_0x18a1('0x20')](_0x5595e5)[_0x18a1('0x25')](function(_0xa82c46){_0x1aa63a[_0x18a1('0x20')]=_0xa82c46;if(_0x534302['query'][_0x18a1('0x42')]){_0x19bf40[_0x18a1('0x43')]=[{'all':!![]}];}return db['VtigerConfiguration'][_0x18a1('0x44')](_0x19bf40);})['then'](function(_0x4d7f47){_0x1aa63a[_0x18a1('0x45')]=_0x4d7f47;return _0x1aa63a;})['then'](respondWithFilteredResult(_0x9f4492,_0x19bf40))[_0x18a1('0x46')](handleError(_0x9f4492,null));};exports[_0x18a1('0x47')]=function(_0x7565e9,_0x1f6bba){var _0x2f6268={'raw':![],'where':{'id':_0x7565e9[_0x18a1('0x48')]['id']}},_0x540c86={};_0x540c86[_0x18a1('0x31')]=_['keys'](db['VtigerConfiguration']['rawAttributes']);_0x540c86[_0x18a1('0x32')]=_['keys'](_0x7565e9[_0x18a1('0x32')]);_0x540c86['filters']=_[_0x18a1('0x35')](_0x540c86[_0x18a1('0x31')],_0x540c86[_0x18a1('0x32')]);_0x2f6268[_0x18a1('0x37')]=_[_0x18a1('0x35')](_0x540c86[_0x18a1('0x31')],qs['fields'](_0x7565e9['query']['fields']));_0x2f6268['attributes']=_0x2f6268['attributes'][_0x18a1('0x38')]?_0x2f6268[_0x18a1('0x37')]:_0x540c86[_0x18a1('0x31')];if(_0x7565e9[_0x18a1('0x32')][_0x18a1('0x42')]){_0x2f6268['include']=[{'all':!![]}];}_0x2f6268=_['merge']({},_0x2f6268,_0x7565e9[_0x18a1('0x41')]);return db[_0x18a1('0x2c')][_0x18a1('0x49')](_0x2f6268)[_0x18a1('0x25')](handleEntityNotFound(_0x1f6bba,null))[_0x18a1('0x25')](respondWithResult(_0x1f6bba,null))[_0x18a1('0x46')](handleError(_0x1f6bba,null));};exports['create']=function(_0x50b02b,_0x32923b){return db[_0x18a1('0x2c')]['create'](_0x50b02b[_0x18a1('0x4a')],{})[_0x18a1('0x25')](respondWithResult(_0x32923b,0xc9))[_0x18a1('0x46')](handleError(_0x32923b,null));};exports[_0x18a1('0x4b')]=function(_0xd5dfd,_0x328db7){if(_0xd5dfd[_0x18a1('0x4a')]['id']){delete _0xd5dfd[_0x18a1('0x4a')]['id'];}return db['VtigerConfiguration'][_0x18a1('0x49')]({'where':{'id':_0xd5dfd[_0x18a1('0x48')]['id']}})[_0x18a1('0x25')](handleEntityNotFound(_0x328db7,null))['then'](saveUpdates(_0xd5dfd[_0x18a1('0x4a')],null))['then'](respondWithResult(_0x328db7,null))[_0x18a1('0x46')](handleError(_0x328db7,null));};exports[_0x18a1('0x26')]=function(_0x4c59ed,_0xf99d9b){return db[_0x18a1('0x2c')][_0x18a1('0x49')]({'where':{'id':_0x4c59ed[_0x18a1('0x48')]['id']}})['then'](handleEntityNotFound(_0xf99d9b,null))[_0x18a1('0x25')](removeEntity(_0xf99d9b,null))[_0x18a1('0x46')](handleError(_0xf99d9b,null));};exports['getFields']=function(_0x1df119,_0xa4af25,_0x4ba4df){var _0xbce531={};var _0x2b6ebb={};var _0x51acfd;var _0x20a2ca;return db['VtigerConfiguration'][_0x18a1('0x4c')]({'where':{'id':_0x1df119['params']['id']}})[_0x18a1('0x25')](handleEntityNotFound(_0xa4af25,null))[_0x18a1('0x25')](function(_0x5c86b6){if(_0x5c86b6){_0x51acfd=_0x5c86b6;_0x2b6ebb[_0x18a1('0x31')]=_[_0x18a1('0x33')](db[_0x18a1('0x4d')][_0x18a1('0x2d')]);_0x2b6ebb[_0x18a1('0x32')]=_[_0x18a1('0x33')](_0x1df119[_0x18a1('0x32')]);_0x2b6ebb[_0x18a1('0x34')]=_[_0x18a1('0x35')](_0x2b6ebb[_0x18a1('0x31')],_0x2b6ebb['query']);_0xbce531[_0x18a1('0x37')]=_[_0x18a1('0x35')](_0x2b6ebb[_0x18a1('0x31')],qs[_0x18a1('0x36')](_0x1df119[_0x18a1('0x32')][_0x18a1('0x36')]));_0xbce531[_0x18a1('0x37')]=_0xbce531['attributes'][_0x18a1('0x38')]?_0xbce531[_0x18a1('0x37')]:_0x2b6ebb[_0x18a1('0x31')];_0xbce531[_0x18a1('0x3b')]=qs[_0x18a1('0x3c')](_0x1df119[_0x18a1('0x32')][_0x18a1('0x3c')]);_0xbce531['where']=qs['filters'](_['pick'](_0x1df119['query'],_0x2b6ebb['filters']));if(_0x1df119[_0x18a1('0x32')]['filter']){_0xbce531[_0x18a1('0x3d')]=_[_0x18a1('0x3f')](_0xbce531['where'],{'$or':_[_0x18a1('0x2b')](_0xbce531[_0x18a1('0x37')],function(_0x3ac780){var _0x3cd7ea={};_0x3cd7ea[_0x3ac780]={'$like':'%'+_0x1df119['query'][_0x18a1('0x4e')]+'%'};return _0x3cd7ea;})});}_0xbce531=_[_0x18a1('0x3f')]({},_0xbce531,_0x1df119['options']);return _0x51acfd['getFields'](_0xbce531);}})['then'](function(_0x4b694e){if(_0x4b694e){_0x20a2ca=_0x4b694e[_0x18a1('0x38')];if(!_0x1df119['query'][_0x18a1('0x39')](_0x18a1('0x3a'))){_0xbce531[_0x18a1('0x1f')]=qs[_0x18a1('0x1f')](_0x1df119[_0x18a1('0x32')][_0x18a1('0x1f')]);_0xbce531[_0x18a1('0x1d')]=qs['offset'](_0x1df119[_0x18a1('0x32')]['offset']);}return _0x51acfd[_0x18a1('0x4f')](_0xbce531);}})[_0x18a1('0x25')](function(_0x143827){if(_0x143827){return _0x143827?{'count':_0x20a2ca,'rows':_0x143827}:null;}})['then'](respondWithResult(_0xa4af25,null))[_0x18a1('0x46')](handleError(_0xa4af25,null));};exports[_0x18a1('0x50')]=function(_0x53c4a0,_0x3ede6e,_0x511f24){var _0x1bb0d9={};var _0x240e46={};var _0x210b75;var _0x14f06f;return db[_0x18a1('0x2c')][_0x18a1('0x4c')]({'where':{'id':_0x53c4a0[_0x18a1('0x48')]['id']}})[_0x18a1('0x25')](handleEntityNotFound(_0x3ede6e,null))['then'](function(_0x3474dc){if(_0x3474dc){_0x210b75=_0x3474dc;_0x240e46['model']=_[_0x18a1('0x33')](db[_0x18a1('0x4d')][_0x18a1('0x2d')]);_0x240e46['query']=_[_0x18a1('0x33')](_0x53c4a0['query']);_0x240e46[_0x18a1('0x34')]=_[_0x18a1('0x35')](_0x240e46[_0x18a1('0x31')],_0x240e46[_0x18a1('0x32')]);_0x1bb0d9['attributes']=_[_0x18a1('0x35')](_0x240e46['model'],qs[_0x18a1('0x36')](_0x53c4a0[_0x18a1('0x32')][_0x18a1('0x36')]));_0x1bb0d9[_0x18a1('0x37')]=_0x1bb0d9[_0x18a1('0x37')][_0x18a1('0x38')]?_0x1bb0d9[_0x18a1('0x37')]:_0x240e46[_0x18a1('0x31')];_0x1bb0d9[_0x18a1('0x3b')]=qs[_0x18a1('0x3c')](_0x53c4a0[_0x18a1('0x32')][_0x18a1('0x3c')]);_0x1bb0d9[_0x18a1('0x3d')]=qs['filters'](_['pick'](_0x53c4a0[_0x18a1('0x32')],_0x240e46[_0x18a1('0x34')]));if(_0x53c4a0[_0x18a1('0x32')][_0x18a1('0x4e')]){_0x1bb0d9[_0x18a1('0x3d')]=_[_0x18a1('0x3f')](_0x1bb0d9[_0x18a1('0x3d')],{'$or':_[_0x18a1('0x2b')](_0x1bb0d9[_0x18a1('0x37')],function(_0x4f2880){var _0x172f95={};_0x172f95[_0x4f2880]={'$like':'%'+_0x53c4a0[_0x18a1('0x32')][_0x18a1('0x4e')]+'%'};return _0x172f95;})});}_0x1bb0d9=_['merge']({},_0x1bb0d9,_0x53c4a0[_0x18a1('0x41')]);return _0x210b75['getSubjects'](_0x1bb0d9);}})[_0x18a1('0x25')](function(_0x5351b1){if(_0x5351b1){_0x14f06f=_0x5351b1['length'];if(!_0x53c4a0['query'][_0x18a1('0x39')](_0x18a1('0x3a'))){_0x1bb0d9['limit']=qs[_0x18a1('0x1f')](_0x53c4a0[_0x18a1('0x32')]['limit']);_0x1bb0d9[_0x18a1('0x1d')]=qs[_0x18a1('0x1d')](_0x53c4a0[_0x18a1('0x32')][_0x18a1('0x1d')]);}return _0x210b75[_0x18a1('0x50')](_0x1bb0d9);}})[_0x18a1('0x25')](function(_0x218929){if(_0x218929){return _0x218929?{'count':_0x14f06f,'rows':_0x218929}:null;}})['then'](respondWithResult(_0x3ede6e,null))[_0x18a1('0x46')](handleError(_0x3ede6e,null));};exports[_0x18a1('0x51')]=function(_0x4911ed,_0x5d1629,_0x17ddb3){var _0x3716bc={};var _0x1bec64={};var _0x32d285;var _0xa32ca5;return db[_0x18a1('0x2c')][_0x18a1('0x4c')]({'where':{'id':_0x4911ed[_0x18a1('0x48')]['id']}})[_0x18a1('0x25')](handleEntityNotFound(_0x5d1629,null))[_0x18a1('0x25')](function(_0x1315f1){if(_0x1315f1){_0x32d285=_0x1315f1;_0x1bec64[_0x18a1('0x31')]=_[_0x18a1('0x33')](db['VtigerField'][_0x18a1('0x2d')]);_0x1bec64[_0x18a1('0x32')]=_[_0x18a1('0x33')](_0x4911ed[_0x18a1('0x32')]);_0x1bec64[_0x18a1('0x34')]=_['intersection'](_0x1bec64['model'],_0x1bec64[_0x18a1('0x32')]);_0x3716bc['attributes']=_[_0x18a1('0x35')](_0x1bec64[_0x18a1('0x31')],qs[_0x18a1('0x36')](_0x4911ed[_0x18a1('0x32')][_0x18a1('0x36')]));_0x3716bc['attributes']=_0x3716bc[_0x18a1('0x37')][_0x18a1('0x38')]?_0x3716bc['attributes']:_0x1bec64['model'];_0x3716bc[_0x18a1('0x3b')]=qs[_0x18a1('0x3c')](_0x4911ed[_0x18a1('0x32')][_0x18a1('0x3c')]);_0x3716bc[_0x18a1('0x3d')]=qs[_0x18a1('0x34')](_['pick'](_0x4911ed['query'],_0x1bec64[_0x18a1('0x34')]));if(_0x4911ed[_0x18a1('0x32')][_0x18a1('0x4e')]){_0x3716bc['where']=_[_0x18a1('0x3f')](_0x3716bc[_0x18a1('0x3d')],{'$or':_['map'](_0x3716bc['attributes'],function(_0x4d5800){var _0x5ce7b1={};_0x5ce7b1[_0x4d5800]={'$like':'%'+_0x4911ed[_0x18a1('0x32')][_0x18a1('0x4e')]+'%'};return _0x5ce7b1;})});}_0x3716bc=_[_0x18a1('0x3f')]({},_0x3716bc,_0x4911ed[_0x18a1('0x41')]);return _0x32d285['getDescriptions'](_0x3716bc);}})[_0x18a1('0x25')](function(_0x37d62c){if(_0x37d62c){_0xa32ca5=_0x37d62c[_0x18a1('0x38')];if(!_0x4911ed[_0x18a1('0x32')][_0x18a1('0x39')](_0x18a1('0x3a'))){_0x3716bc['limit']=qs['limit'](_0x4911ed[_0x18a1('0x32')][_0x18a1('0x1f')]);_0x3716bc[_0x18a1('0x1d')]=qs[_0x18a1('0x1d')](_0x4911ed[_0x18a1('0x32')][_0x18a1('0x1d')]);}return _0x32d285[_0x18a1('0x51')](_0x3716bc);}})[_0x18a1('0x25')](function(_0x197fc3){if(_0x197fc3){return _0x197fc3?{'count':_0xa32ca5,'rows':_0x197fc3}:null;}})[_0x18a1('0x25')](respondWithResult(_0x5d1629,null))[_0x18a1('0x46')](handleError(_0x5d1629,null));};
\ No newline at end of file
index f85bdc9..72f9c70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e4f=['api','moment','bluebird','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','int_vtiger_configurations','util'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x6e4f,0x15b));var _0xf6e4=function(_0x4f7cac,_0x458a03){_0x4f7cac=_0x4f7cac-0x0;var _0x30b5e9=_0x6e4f[_0x4f7cac];return _0x30b5e9;};'use strict';var _=require('lodash');var util=require(_0xf6e4('0x0'));var logger=require('../../config/logger')(_0xf6e4('0x1'));var moment=require(_0xf6e4('0x2'));var BPromise=require(_0xf6e4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf6e4('0x4'));var rimraf=require(_0xf6e4('0x5'));var config=require(_0xf6e4('0x6'));var attributes=require(_0xf6e4('0x7'));module[_0xf6e4('0x8')]=function(_0x1b4f2d,_0x384114){return _0x1b4f2d[_0xf6e4('0x9')](_0xf6e4('0xa'),attributes,{'tableName':_0xf6e4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8886=['VtigerConfiguration','int_vtiger_configurations','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intVtigerConfiguration.attributes','define'];(function(_0x4940c4,_0x44bf9e){var _0x1f8347=function(_0x304bd3){while(--_0x304bd3){_0x4940c4['push'](_0x4940c4['shift']());}};_0x1f8347(++_0x44bf9e);}(_0x8886,0x92));var _0x6888=function(_0x8a0f59,_0x44dea2){_0x8a0f59=_0x8a0f59-0x0;var _0x2540b6=_0x8886[_0x8a0f59];return _0x2540b6;};'use strict';var _=require(_0x6888('0x0'));var util=require('util');var logger=require(_0x6888('0x1'))(_0x6888('0x2'));var moment=require(_0x6888('0x3'));var BPromise=require(_0x6888('0x4'));var rp=require(_0x6888('0x5'));var fs=require('fs');var path=require(_0x6888('0x6'));var rimraf=require('rimraf');var config=require(_0x6888('0x7'));var attributes=require(_0x6888('0x8'));module['exports']=function(_0x331604,_0x1a2dcf){return _0x331604[_0x6888('0x9')](_0x6888('0xa'),attributes,{'tableName':_0x6888('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5ed2d02..0ce2cff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9db=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','lodash','moment'];(function(_0x30ac6b,_0x4d914c){var _0x38ea8c=function(_0x42ee31){while(--_0x42ee31){_0x30ac6b['push'](_0x30ac6b['shift']());}};_0x38ea8c(++_0x4d914c);}(_0xc9db,0x15e));var _0xbc9d=function(_0x10369e,_0x4b9ef8){_0x10369e=_0x10369e-0x0;var _0x32a79e=_0xc9db[_0x10369e];return _0x32a79e;};'use strict';var _=require(_0xbc9d('0x0'));var util=require('util');var moment=require(_0xbc9d('0x1'));var BPromise=require(_0xbc9d('0x2'));var rs=require(_0xbc9d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbc9d('0x4'))['db'];var utils=require(_0xbc9d('0x5'));var logger=require(_0xbc9d('0x6'))(_0xbc9d('0x7'));var config=require(_0xbc9d('0x8'));var jayson=require(_0xbc9d('0x9'));var client=jayson[_0xbc9d('0xa')][_0xbc9d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x645b41,_0x2db632,_0x4a3f63){return new BPromise(function(_0x57d2b6,_0x3e8cb2){return client[_0xbc9d('0xc')](_0x645b41,_0x4a3f63)[_0xbc9d('0xd')](function(_0x1824c3){logger['info'](_0xbc9d('0xe'),_0x2db632,_0xbc9d('0xf'));logger[_0xbc9d('0x10')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x2db632,_0xbc9d('0xf'),JSON[_0xbc9d('0x11')](_0x1824c3));if(_0x1824c3[_0xbc9d('0x12')]){if(_0x1824c3[_0xbc9d('0x12')][_0xbc9d('0x13')]===0x1f4){logger[_0xbc9d('0x12')](_0xbc9d('0xe'),_0x2db632,_0x1824c3[_0xbc9d('0x12')]['message']);return _0x3e8cb2(_0x1824c3[_0xbc9d('0x12')][_0xbc9d('0x14')]);}logger['error'](_0xbc9d('0xe'),_0x2db632,_0x1824c3[_0xbc9d('0x12')][_0xbc9d('0x14')]);return _0x57d2b6(_0x1824c3['error'][_0xbc9d('0x14')]);}else{logger[_0xbc9d('0x15')](_0xbc9d('0xe'),_0x2db632,_0xbc9d('0xf'));_0x57d2b6(_0x1824c3['result']['message']);}})['catch'](function(_0x1cd513){logger[_0xbc9d('0x12')](_0xbc9d('0xe'),_0x2db632,_0x1cd513);_0x3e8cb2(_0x1cd513);});});}
\ No newline at end of file
+var _0x7aad=['code','VtigerConfiguration,\x20%s,\x20%s','info','result','message','catch','util','bluebird','randomstring','ioredis','../../mysqldb','http','request','then','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4291a6,_0x253fe9){var _0x45e983=function(_0x377ff3){while(--_0x377ff3){_0x4291a6['push'](_0x4291a6['shift']());}};_0x45e983(++_0x253fe9);}(_0x7aad,0x1e1));var _0xd7aa=function(_0x494d1f,_0x3f72ff){_0x494d1f=_0x494d1f-0x0;var _0x457b6e=_0x7aad[_0x494d1f];return _0x457b6e;};'use strict';var _=require('lodash');var util=require(_0xd7aa('0x0'));var moment=require('moment');var BPromise=require(_0xd7aa('0x1'));var rs=require(_0xd7aa('0x2'));var fs=require('fs');var Redis=require(_0xd7aa('0x3'));var db=require(_0xd7aa('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xd7aa('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x328ef7,_0x57ba72,_0x28c71c){return new BPromise(function(_0x3b571f,_0x890396){return client[_0xd7aa('0x6')](_0x328ef7,_0x28c71c)[_0xd7aa('0x7')](function(_0x40a795){logger['info']('VtigerConfiguration,\x20%s,\x20%s',_0x57ba72,_0xd7aa('0x8'));logger[_0xd7aa('0x9')](_0xd7aa('0xa'),_0x57ba72,'request\x20sent',JSON[_0xd7aa('0xb')](_0x40a795));if(_0x40a795[_0xd7aa('0xc')]){if(_0x40a795['error'][_0xd7aa('0xd')]===0x1f4){logger[_0xd7aa('0xc')](_0xd7aa('0xe'),_0x57ba72,_0x40a795[_0xd7aa('0xc')]['message']);return _0x890396(_0x40a795[_0xd7aa('0xc')]['message']);}logger[_0xd7aa('0xc')](_0xd7aa('0xe'),_0x57ba72,_0x40a795['error']['message']);return _0x3b571f(_0x40a795[_0xd7aa('0xc')]['message']);}else{logger[_0xd7aa('0xf')](_0xd7aa('0xe'),_0x57ba72,_0xd7aa('0x8'));_0x3b571f(_0x40a795[_0xd7aa('0x10')][_0xd7aa('0x11')]);}})[_0xd7aa('0x12')](function(_0x45456a){logger[_0xd7aa('0xc')](_0xd7aa('0xe'),_0x57ba72,_0x45456a);_0x890396(_0x45456a);});});}
\ No newline at end of file
index 121303e..f85bce3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6c2=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./intVtigerField.controller','isAuthenticated','index','get','/:id','show','create','put','update','delete','destroy'];(function(_0x442556,_0xb32e25){var _0x4dcc8c=function(_0x3dfeae){while(--_0x3dfeae){_0x442556['push'](_0x442556['shift']());}};_0x4dcc8c(++_0xb32e25);}(_0xd6c2,0xd2));var _0x2d6c=function(_0x313e4c,_0x5c14e2){_0x313e4c=_0x313e4c-0x0;var _0x10169c=_0xd6c2[_0x313e4c];return _0x10169c;};'use strict';var multer=require(_0x2d6c('0x0'));var util=require(_0x2d6c('0x1'));var path=require(_0x2d6c('0x2'));var timeout=require(_0x2d6c('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2d6c('0x4'));var auth=require(_0x2d6c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2d6c('0x6'));var controller=require(_0x2d6c('0x7'));router['get']('/',auth[_0x2d6c('0x8')](),controller[_0x2d6c('0x9')]);router[_0x2d6c('0xa')](_0x2d6c('0xb'),auth[_0x2d6c('0x8')](),controller[_0x2d6c('0xc')]);router['post']('/',auth[_0x2d6c('0x8')](),controller[_0x2d6c('0xd')]);router[_0x2d6c('0xe')](_0x2d6c('0xb'),auth[_0x2d6c('0x8')](),controller[_0x2d6c('0xf')]);router[_0x2d6c('0x10')]('/:id',auth[_0x2d6c('0x8')](),controller[_0x2d6c('0x11')]);module[_0x2d6c('0x12')]=router;
\ No newline at end of file
+var _0x6ffe=['index','/:id','isAuthenticated','show','create','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get'];(function(_0x9b3d89,_0x17672f){var _0x24159=function(_0x29b018){while(--_0x29b018){_0x9b3d89['push'](_0x9b3d89['shift']());}};_0x24159(++_0x17672f);}(_0x6ffe,0x127));var _0xe6ff=function(_0x1e9992,_0x24a7db){_0x1e9992=_0x1e9992-0x0;var _0x4204e2=_0x6ffe[_0x1e9992];return _0x4204e2;};'use strict';var multer=require(_0xe6ff('0x0'));var util=require(_0xe6ff('0x1'));var path=require(_0xe6ff('0x2'));var timeout=require(_0xe6ff('0x3'));var express=require(_0xe6ff('0x4'));var router=express[_0xe6ff('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xe6ff('0x6'));var interaction=require(_0xe6ff('0x7'));var config=require(_0xe6ff('0x8'));var controller=require(_0xe6ff('0x9'));router[_0xe6ff('0xa')]('/',auth['isAuthenticated'](),controller[_0xe6ff('0xb')]);router[_0xe6ff('0xa')](_0xe6ff('0xc'),auth[_0xe6ff('0xd')](),controller[_0xe6ff('0xe')]);router['post']('/',auth[_0xe6ff('0xd')](),controller[_0xe6ff('0xf')]);router['put'](_0xe6ff('0xc'),auth[_0xe6ff('0xd')](),controller['update']);router[_0xe6ff('0x10')](_0xe6ff('0xc'),auth[_0xe6ff('0xd')](),controller[_0xe6ff('0x11')]);module['exports']=router;
\ No newline at end of file
index c981b75..285c4b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5188=['sequelize','ENUM','string','variable','customVariable','picklist','STRING'];(function(_0x365bfc,_0x4491e4){var _0x323af1=function(_0x8e62a5){while(--_0x8e62a5){_0x365bfc['push'](_0x365bfc['shift']());}};_0x323af1(++_0x4491e4);}(_0x5188,0xb6));var _0x8518=function(_0x30809a,_0x186fd8){_0x30809a=_0x30809a-0x0;var _0x4feaf6=_0x5188[_0x30809a];return _0x4feaf6;};'use strict';var Sequelize=require(_0x8518('0x0'));module['exports']={'type':{'type':Sequelize[_0x8518('0x1')](_0x8518('0x2'),_0x8518('0x3'),_0x8518('0x4'),'keyValue',_0x8518('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x8518('0x6')]},'key':{'type':Sequelize[_0x8518('0x6')]},'keyType':{'type':Sequelize[_0x8518('0x1')](_0x8518('0x2'),_0x8518('0x3'),_0x8518('0x4'))},'keyContent':{'type':Sequelize[_0x8518('0x6')]},'idField':{'type':Sequelize[_0x8518('0x6')]},'nameField':{'type':Sequelize[_0x8518('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8518('0x6')]}};
\ No newline at end of file
+var _0x3337=['STRING','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x335f5c,_0xce622c){var _0x27458c=function(_0x108b7f){while(--_0x108b7f){_0x335f5c['push'](_0x335f5c['shift']());}};_0x27458c(++_0xce622c);}(_0x3337,0x101));var _0x7333=function(_0x240ad5,_0x5e125b){_0x240ad5=_0x240ad5-0x0;var _0x9cc8f5=_0x3337[_0x240ad5];return _0x9cc8f5;};'use strict';var Sequelize=require('sequelize');module[_0x7333('0x0')]={'type':{'type':Sequelize[_0x7333('0x1')](_0x7333('0x2'),_0x7333('0x3'),_0x7333('0x4'),_0x7333('0x5'),_0x7333('0x6')),'defaultValue':_0x7333('0x2')},'content':{'type':Sequelize[_0x7333('0x7')]},'key':{'type':Sequelize[_0x7333('0x7')]},'keyType':{'type':Sequelize[_0x7333('0x1')](_0x7333('0x2'),_0x7333('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x7333('0x7')]},'idField':{'type':Sequelize[_0x7333('0x7')]},'nameField':{'type':Sequelize[_0x7333('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7333('0x7')]}};
\ No newline at end of file
index c85ae7e..45fc5a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6242=['nolimit','order','sort','filters','filter','where','merge','options','VtigerField','includeAll','include','findAll','show','rawAttributes','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','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','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','keys','intersection','query','attributes','fields','length'];(function(_0x556406,_0x3ff527){var _0x2c44da=function(_0x30c012){while(--_0x30c012){_0x556406['push'](_0x556406['shift']());}};_0x2c44da(++_0x3ff527);}(_0x6242,0xf7));var _0x2624=function(_0xb7bde,_0x3bedc5){_0xb7bde=_0xb7bde-0x0;var _0x378ce7=_0x6242[_0xb7bde];return _0x378ce7;};'use strict';var emlformat=require(_0x2624('0x0'));var rimraf=require(_0x2624('0x1'));var zipdir=require(_0x2624('0x2'));var jsonpatch=require(_0x2624('0x3'));var rp=require(_0x2624('0x4'));var moment=require(_0x2624('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2624('0x6'));var util=require('util');var path=require(_0x2624('0x7'));var sox=require('sox');var csv=require(_0x2624('0x8'));var ejs=require(_0x2624('0x9'));var fs=require('fs');var fs_extra=require(_0x2624('0xa'));var _=require(_0x2624('0xb'));var squel=require(_0x2624('0xc'));var crypto=require(_0x2624('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2624('0xe'));var toCsv=require(_0x2624('0x8'));var querystring=require(_0x2624('0xf'));var Papa=require(_0x2624('0x10'));var Redis=require(_0x2624('0x11'));var authService=require(_0x2624('0x12'));var qs=require(_0x2624('0x13'));var as=require(_0x2624('0x14'));var hardwareService=require(_0x2624('0x15'));var logger=require(_0x2624('0x16'))(_0x2624('0x17'));var utils=require(_0x2624('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x2624('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x387fec,_0xd21d99){_0xd21d99=_0xd21d99||0xcc;return function(_0x4acbdf){if(_0x4acbdf){return _0x387fec[_0x2624('0x1a')](_0xd21d99);}return _0x387fec[_0x2624('0x1b')](_0xd21d99)[_0x2624('0x1c')]();};}function respondWithResult(_0x456e0c,_0x5f209c){_0x5f209c=_0x5f209c||0xc8;return function(_0x2895c5){if(_0x2895c5){return _0x456e0c[_0x2624('0x1b')](_0x5f209c)[_0x2624('0x1d')](_0x2895c5);}};}function respondWithFilteredResult(_0x175b1a,_0x51dc39){return function(_0x12aa92){if(_0x12aa92){var _0x57cfda=typeof _0x51dc39[_0x2624('0x1e')]===_0x2624('0x1f')&&typeof _0x51dc39[_0x2624('0x20')]==='undefined';var _0x22f326=_0x12aa92[_0x2624('0x21')];var _0x4f095f=_0x57cfda?0x0:_0x51dc39['offset'];var _0x594304=_0x57cfda?_0x12aa92[_0x2624('0x21')]:_0x51dc39[_0x2624('0x1e')]+_0x51dc39['limit'];var _0x2234c5;if(_0x594304>=_0x22f326){_0x594304=_0x22f326;_0x2234c5=0xc8;}else{_0x2234c5=0xce;}_0x175b1a[_0x2624('0x1b')](_0x2234c5);return _0x175b1a[_0x2624('0x22')](_0x2624('0x23'),_0x4f095f+'-'+_0x594304+'/'+_0x22f326)[_0x2624('0x1d')](_0x12aa92);}return null;};}function patchUpdates(_0x125642){return function(_0x48ca92){try{jsonpatch[_0x2624('0x24')](_0x48ca92,_0x125642,!![]);}catch(_0x122218){return BPromise['reject'](_0x122218);}return _0x48ca92[_0x2624('0x25')]();};}function saveUpdates(_0x4c99f7,_0x7c81f5){return function(_0x50a153){if(_0x50a153){return _0x50a153[_0x2624('0x26')](_0x4c99f7)[_0x2624('0x27')](function(_0x462e6b){return _0x462e6b;});}return null;};}function removeEntity(_0x28375c,_0x80d2c6){return function(_0x421c5b){if(_0x421c5b){return _0x421c5b[_0x2624('0x28')]()['then'](function(){_0x28375c[_0x2624('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x48ae60,_0x2f38bd){return function(_0x1d4827){if(!_0x1d4827){_0x48ae60[_0x2624('0x1a')](0x194);}return _0x1d4827;};}function handleError(_0x5946af,_0x5095a3){_0x5095a3=_0x5095a3||0x1f4;return function(_0x1793e8){logger[_0x2624('0x29')](_0x1793e8[_0x2624('0x2a')]);if(_0x1793e8[_0x2624('0x2b')]){delete _0x1793e8['name'];}_0x5946af[_0x2624('0x1b')](_0x5095a3)[_0x2624('0x2c')](_0x1793e8);};}exports[_0x2624('0x2d')]=function(_0x7309ec,_0x529b64){var _0x27b4f8={},_0x1e8c80={},_0x5d73d4={'count':0x0,'rows':[]};var _0x39c274=_[_0x2624('0x2e')](db['VtigerField']['rawAttributes'],function(_0x4a9207){return{'name':_0x4a9207[_0x2624('0x2f')],'type':_0x4a9207[_0x2624('0x30')][_0x2624('0x31')]};});_0x1e8c80[_0x2624('0x32')]=_[_0x2624('0x2e')](_0x39c274,_0x2624('0x2b'));_0x1e8c80['query']=_[_0x2624('0x33')](_0x7309ec['query']);_0x1e8c80['filters']=_[_0x2624('0x34')](_0x1e8c80[_0x2624('0x32')],_0x1e8c80[_0x2624('0x35')]);_0x27b4f8[_0x2624('0x36')]=_[_0x2624('0x34')](_0x1e8c80['model'],qs['fields'](_0x7309ec['query'][_0x2624('0x37')]));_0x27b4f8[_0x2624('0x36')]=_0x27b4f8['attributes'][_0x2624('0x38')]?_0x27b4f8['attributes']:_0x1e8c80[_0x2624('0x32')];if(!_0x7309ec[_0x2624('0x35')]['hasOwnProperty'](_0x2624('0x39'))){_0x27b4f8['limit']=qs[_0x2624('0x20')](_0x7309ec['query'][_0x2624('0x20')]);_0x27b4f8[_0x2624('0x1e')]=qs['offset'](_0x7309ec[_0x2624('0x35')][_0x2624('0x1e')]);}_0x27b4f8[_0x2624('0x3a')]=qs[_0x2624('0x3b')](_0x7309ec[_0x2624('0x35')]['sort']);_0x27b4f8['where']=qs[_0x2624('0x3c')](_['pick'](_0x7309ec[_0x2624('0x35')],_0x1e8c80['filters']),_0x39c274);if(_0x7309ec[_0x2624('0x35')][_0x2624('0x3d')]){_0x27b4f8[_0x2624('0x3e')]=_[_0x2624('0x3f')](_0x27b4f8[_0x2624('0x3e')],{'$or':_[_0x2624('0x2e')](_0x39c274,function(_0x394daa){if(_0x394daa[_0x2624('0x30')]!=='VIRTUAL'){var _0x5db969={};_0x5db969[_0x394daa[_0x2624('0x2b')]]={'$like':'%'+_0x7309ec[_0x2624('0x35')][_0x2624('0x3d')]+'%'};return _0x5db969;}})});}_0x27b4f8=_[_0x2624('0x3f')]({},_0x27b4f8,_0x7309ec[_0x2624('0x40')]);var _0x1f234e={'where':_0x27b4f8['where']};return db[_0x2624('0x41')]['count'](_0x1f234e)['then'](function(_0x1cdabd){_0x5d73d4[_0x2624('0x21')]=_0x1cdabd;if(_0x7309ec[_0x2624('0x35')][_0x2624('0x42')]){_0x27b4f8[_0x2624('0x43')]=[{'all':!![]}];}return db[_0x2624('0x41')][_0x2624('0x44')](_0x27b4f8);})['then'](function(_0x45c26b){_0x5d73d4['rows']=_0x45c26b;return _0x5d73d4;})['then'](respondWithFilteredResult(_0x529b64,_0x27b4f8))['catch'](handleError(_0x529b64,null));};exports[_0x2624('0x45')]=function(_0x5596e0,_0x18c960){var _0x30cdf3={'raw':!![],'where':{'id':_0x5596e0['params']['id']}},_0x290886={};_0x290886[_0x2624('0x32')]=_[_0x2624('0x33')](db[_0x2624('0x41')][_0x2624('0x46')]);_0x290886[_0x2624('0x35')]=_['keys'](_0x5596e0[_0x2624('0x35')]);_0x290886[_0x2624('0x3c')]=_['intersection'](_0x290886['model'],_0x290886[_0x2624('0x35')]);_0x30cdf3[_0x2624('0x36')]=_[_0x2624('0x34')](_0x290886[_0x2624('0x32')],qs[_0x2624('0x37')](_0x5596e0[_0x2624('0x35')][_0x2624('0x37')]));_0x30cdf3['attributes']=_0x30cdf3[_0x2624('0x36')][_0x2624('0x38')]?_0x30cdf3['attributes']:_0x290886[_0x2624('0x32')];if(_0x5596e0['query'][_0x2624('0x42')]){_0x30cdf3['include']=[{'all':!![]}];}_0x30cdf3=_[_0x2624('0x3f')]({},_0x30cdf3,_0x5596e0[_0x2624('0x40')]);return db[_0x2624('0x41')][_0x2624('0x47')](_0x30cdf3)[_0x2624('0x27')](handleEntityNotFound(_0x18c960,null))[_0x2624('0x27')](respondWithResult(_0x18c960,null))[_0x2624('0x48')](handleError(_0x18c960,null));};exports[_0x2624('0x49')]=function(_0x5ebfac,_0x1d6153){return db['VtigerField']['create'](_0x5ebfac[_0x2624('0x4a')],{})[_0x2624('0x27')](respondWithResult(_0x1d6153,0xc9))[_0x2624('0x48')](handleError(_0x1d6153,null));};exports['update']=function(_0xf5f897,_0x45e671){if(_0xf5f897[_0x2624('0x4a')]['id']){delete _0xf5f897[_0x2624('0x4a')]['id'];}return db['VtigerField'][_0x2624('0x47')]({'where':{'id':_0xf5f897[_0x2624('0x4b')]['id']}})[_0x2624('0x27')](handleEntityNotFound(_0x45e671,null))['then'](saveUpdates(_0xf5f897[_0x2624('0x4a')],null))[_0x2624('0x27')](respondWithResult(_0x45e671,null))[_0x2624('0x48')](handleError(_0x45e671,null));};exports['destroy']=function(_0x512aa7,_0x2f12ce){return db[_0x2624('0x41')][_0x2624('0x47')]({'where':{'id':_0x512aa7[_0x2624('0x4b')]['id']}})[_0x2624('0x27')](handleEntityNotFound(_0x2f12ce,null))['then'](removeEntity(_0x2f12ce,null))[_0x2624('0x48')](handleError(_0x2f12ce,null));};
\ No newline at end of file
+var _0xcc74=['offset','limit','undefined','count','set','Content-Range','json','apply','save','update','then','error','name','index','map','VtigerField','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','include','find','create','body','eml-format','zip-dir','fast-json-patch','moment','mustache','path','sox','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/license/util','../../mysqldb','sendStatus','end','status'];(function(_0x324d53,_0x143b53){var _0x1542fb=function(_0x923819){while(--_0x923819){_0x324d53['push'](_0x324d53['shift']());}};_0x1542fb(++_0x143b53);}(_0xcc74,0xab));var _0x4cc7=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0xcc74[_0xb0f7c3];return _0x28ea68;};'use strict';var emlformat=require(_0x4cc7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4cc7('0x1'));var jsonpatch=require(_0x4cc7('0x2'));var rp=require('request-promise');var moment=require(_0x4cc7('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4cc7('0x4'));var util=require('util');var path=require(_0x4cc7('0x5'));var sox=require(_0x4cc7('0x6'));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(_0x4cc7('0x7'));var crypto=require('crypto');var jsforce=require(_0x4cc7('0x8'));var deskjs=require(_0x4cc7('0x9'));var toCsv=require(_0x4cc7('0xa'));var querystring=require(_0x4cc7('0xb'));var Papa=require(_0x4cc7('0xc'));var Redis=require('ioredis');var authService=require(_0x4cc7('0xd'));var qs=require(_0x4cc7('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4cc7('0xf'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x4cc7('0x10'));var db=require(_0x4cc7('0x11'))['db'];function respondWithStatusCode(_0x480ba6,_0x40bb87){_0x40bb87=_0x40bb87||0xcc;return function(_0x4bf30c){if(_0x4bf30c){return _0x480ba6[_0x4cc7('0x12')](_0x40bb87);}return _0x480ba6['status'](_0x40bb87)[_0x4cc7('0x13')]();};}function respondWithResult(_0x581c5b,_0x43b0e7){_0x43b0e7=_0x43b0e7||0xc8;return function(_0x563d6a){if(_0x563d6a){return _0x581c5b[_0x4cc7('0x14')](_0x43b0e7)['json'](_0x563d6a);}};}function respondWithFilteredResult(_0x53105a,_0x6d2f27){return function(_0x1e8d25){if(_0x1e8d25){var _0x3bcf9f=typeof _0x6d2f27[_0x4cc7('0x15')]==='undefined'&&typeof _0x6d2f27[_0x4cc7('0x16')]===_0x4cc7('0x17');var _0x32ca07=_0x1e8d25[_0x4cc7('0x18')];var _0x384552=_0x3bcf9f?0x0:_0x6d2f27[_0x4cc7('0x15')];var _0x17aeae=_0x3bcf9f?_0x1e8d25['count']:_0x6d2f27[_0x4cc7('0x15')]+_0x6d2f27[_0x4cc7('0x16')];var _0x36ec1f;if(_0x17aeae>=_0x32ca07){_0x17aeae=_0x32ca07;_0x36ec1f=0xc8;}else{_0x36ec1f=0xce;}_0x53105a[_0x4cc7('0x14')](_0x36ec1f);return _0x53105a[_0x4cc7('0x19')](_0x4cc7('0x1a'),_0x384552+'-'+_0x17aeae+'/'+_0x32ca07)[_0x4cc7('0x1b')](_0x1e8d25);}return null;};}function patchUpdates(_0x399711){return function(_0xd99bad){try{jsonpatch[_0x4cc7('0x1c')](_0xd99bad,_0x399711,!![]);}catch(_0x36f77b){return BPromise['reject'](_0x36f77b);}return _0xd99bad[_0x4cc7('0x1d')]();};}function saveUpdates(_0x3223b2,_0x530b19){return function(_0x1da925){if(_0x1da925){return _0x1da925[_0x4cc7('0x1e')](_0x3223b2)[_0x4cc7('0x1f')](function(_0x269fff){return _0x269fff;});}return null;};}function removeEntity(_0x1ded12,_0x2c1e23){return function(_0x33f867){if(_0x33f867){return _0x33f867['destroy']()[_0x4cc7('0x1f')](function(){_0x1ded12[_0x4cc7('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x28bb9c,_0x518679){return function(_0x24f4d2){if(!_0x24f4d2){_0x28bb9c['sendStatus'](0x194);}return _0x24f4d2;};}function handleError(_0x35f547,_0x3ddd4e){_0x3ddd4e=_0x3ddd4e||0x1f4;return function(_0x3d1218){logger[_0x4cc7('0x20')](_0x3d1218['stack']);if(_0x3d1218[_0x4cc7('0x21')]){delete _0x3d1218[_0x4cc7('0x21')];}_0x35f547['status'](_0x3ddd4e)['send'](_0x3d1218);};}exports[_0x4cc7('0x22')]=function(_0x10c17a,_0x15b9df){var _0x3f24b0={},_0x241a39={},_0x4a273b={'count':0x0,'rows':[]};var _0x5cc58b=_[_0x4cc7('0x23')](db[_0x4cc7('0x24')][_0x4cc7('0x25')],function(_0x45385c){return{'name':_0x45385c['fieldName'],'type':_0x45385c[_0x4cc7('0x26')][_0x4cc7('0x27')]};});_0x241a39[_0x4cc7('0x28')]=_[_0x4cc7('0x23')](_0x5cc58b,_0x4cc7('0x21'));_0x241a39[_0x4cc7('0x29')]=_[_0x4cc7('0x2a')](_0x10c17a['query']);_0x241a39[_0x4cc7('0x2b')]=_[_0x4cc7('0x2c')](_0x241a39[_0x4cc7('0x28')],_0x241a39[_0x4cc7('0x29')]);_0x3f24b0['attributes']=_[_0x4cc7('0x2c')](_0x241a39[_0x4cc7('0x28')],qs[_0x4cc7('0x2d')](_0x10c17a[_0x4cc7('0x29')]['fields']));_0x3f24b0[_0x4cc7('0x2e')]=_0x3f24b0[_0x4cc7('0x2e')][_0x4cc7('0x2f')]?_0x3f24b0[_0x4cc7('0x2e')]:_0x241a39[_0x4cc7('0x28')];if(!_0x10c17a[_0x4cc7('0x29')]['hasOwnProperty']('nolimit')){_0x3f24b0[_0x4cc7('0x16')]=qs[_0x4cc7('0x16')](_0x10c17a[_0x4cc7('0x29')]['limit']);_0x3f24b0[_0x4cc7('0x15')]=qs[_0x4cc7('0x15')](_0x10c17a['query']['offset']);}_0x3f24b0['order']=qs[_0x4cc7('0x30')](_0x10c17a[_0x4cc7('0x29')][_0x4cc7('0x30')]);_0x3f24b0[_0x4cc7('0x31')]=qs[_0x4cc7('0x2b')](_[_0x4cc7('0x32')](_0x10c17a[_0x4cc7('0x29')],_0x241a39[_0x4cc7('0x2b')]),_0x5cc58b);if(_0x10c17a['query'][_0x4cc7('0x33')]){_0x3f24b0[_0x4cc7('0x31')]=_[_0x4cc7('0x34')](_0x3f24b0[_0x4cc7('0x31')],{'$or':_[_0x4cc7('0x23')](_0x5cc58b,function(_0x5a150d){if(_0x5a150d[_0x4cc7('0x26')]!==_0x4cc7('0x35')){var _0x4c23f9={};_0x4c23f9[_0x5a150d[_0x4cc7('0x21')]]={'$like':'%'+_0x10c17a[_0x4cc7('0x29')][_0x4cc7('0x33')]+'%'};return _0x4c23f9;}})});}_0x3f24b0=_['merge']({},_0x3f24b0,_0x10c17a[_0x4cc7('0x36')]);var _0xd6adc2={'where':_0x3f24b0[_0x4cc7('0x31')]};return db[_0x4cc7('0x24')][_0x4cc7('0x18')](_0xd6adc2)['then'](function(_0x9879f3){_0x4a273b[_0x4cc7('0x18')]=_0x9879f3;if(_0x10c17a[_0x4cc7('0x29')][_0x4cc7('0x37')]){_0x3f24b0['include']=[{'all':!![]}];}return db['VtigerField'][_0x4cc7('0x38')](_0x3f24b0);})[_0x4cc7('0x1f')](function(_0x17cc16){_0x4a273b[_0x4cc7('0x39')]=_0x17cc16;return _0x4a273b;})[_0x4cc7('0x1f')](respondWithFilteredResult(_0x15b9df,_0x3f24b0))[_0x4cc7('0x3a')](handleError(_0x15b9df,null));};exports['show']=function(_0x44151f,_0x2258ba){var _0x4527a2={'raw':!![],'where':{'id':_0x44151f[_0x4cc7('0x3b')]['id']}},_0xb35622={};_0xb35622[_0x4cc7('0x28')]=_[_0x4cc7('0x2a')](db[_0x4cc7('0x24')]['rawAttributes']);_0xb35622['query']=_[_0x4cc7('0x2a')](_0x44151f['query']);_0xb35622[_0x4cc7('0x2b')]=_[_0x4cc7('0x2c')](_0xb35622[_0x4cc7('0x28')],_0xb35622['query']);_0x4527a2[_0x4cc7('0x2e')]=_['intersection'](_0xb35622[_0x4cc7('0x28')],qs[_0x4cc7('0x2d')](_0x44151f[_0x4cc7('0x29')][_0x4cc7('0x2d')]));_0x4527a2[_0x4cc7('0x2e')]=_0x4527a2[_0x4cc7('0x2e')]['length']?_0x4527a2[_0x4cc7('0x2e')]:_0xb35622[_0x4cc7('0x28')];if(_0x44151f[_0x4cc7('0x29')][_0x4cc7('0x37')]){_0x4527a2[_0x4cc7('0x3c')]=[{'all':!![]}];}_0x4527a2=_['merge']({},_0x4527a2,_0x44151f[_0x4cc7('0x36')]);return db['VtigerField'][_0x4cc7('0x3d')](_0x4527a2)[_0x4cc7('0x1f')](handleEntityNotFound(_0x2258ba,null))['then'](respondWithResult(_0x2258ba,null))[_0x4cc7('0x3a')](handleError(_0x2258ba,null));};exports['create']=function(_0x1402e1,_0x1ecf43){return db[_0x4cc7('0x24')][_0x4cc7('0x3e')](_0x1402e1[_0x4cc7('0x3f')],{})[_0x4cc7('0x1f')](respondWithResult(_0x1ecf43,0xc9))[_0x4cc7('0x3a')](handleError(_0x1ecf43,null));};exports[_0x4cc7('0x1e')]=function(_0x5efeab,_0x143b5b){if(_0x5efeab[_0x4cc7('0x3f')]['id']){delete _0x5efeab[_0x4cc7('0x3f')]['id'];}return db[_0x4cc7('0x24')][_0x4cc7('0x3d')]({'where':{'id':_0x5efeab[_0x4cc7('0x3b')]['id']}})[_0x4cc7('0x1f')](handleEntityNotFound(_0x143b5b,null))[_0x4cc7('0x1f')](saveUpdates(_0x5efeab['body'],null))['then'](respondWithResult(_0x143b5b,null))['catch'](handleError(_0x143b5b,null));};exports['destroy']=function(_0x73c070,_0x317c2a){return db['VtigerField']['find']({'where':{'id':_0x73c070['params']['id']}})['then'](handleEntityNotFound(_0x317c2a,null))[_0x4cc7('0x1f')](removeEntity(_0x317c2a,null))[_0x4cc7('0x3a')](handleError(_0x317c2a,null));};
\ No newline at end of file
index 49e859e..b113049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4106=['rimraf','../../config/environment','define','VtigerField','idField','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x558e45,_0x4f5e4f){var _0x3e9075=function(_0x289725){while(--_0x289725){_0x558e45['push'](_0x558e45['shift']());}};_0x3e9075(++_0x4f5e4f);}(_0x4106,0x125));var _0x6410=function(_0x49ba29,_0x388fa2){_0x49ba29=_0x49ba29-0x0;var _0x2c3116=_0x4106[_0x49ba29];return _0x2c3116;};'use strict';var _=require(_0x6410('0x0'));var util=require(_0x6410('0x1'));var logger=require(_0x6410('0x2'))(_0x6410('0x3'));var moment=require('moment');var BPromise=require(_0x6410('0x4'));var rp=require(_0x6410('0x5'));var fs=require('fs');var path=require(_0x6410('0x6'));var rimraf=require(_0x6410('0x7'));var config=require(_0x6410('0x8'));var attributes=require('./intVtigerField.attributes');module['exports']=function(_0x883e64,_0x24187d){return _0x883e64[_0x6410('0x9')](_0x6410('0xa'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0x6410('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x807a=['idField','FieldId','lodash','util','../../config/logger','api','moment','path','../../config/environment','./intVtigerField.attributes','exports','define','VtigerField','vtiger_unique_index'];(function(_0x3f78b0,_0x3e102f){var _0x226432=function(_0x3bb7b5){while(--_0x3bb7b5){_0x3f78b0['push'](_0x3f78b0['shift']());}};_0x226432(++_0x3e102f);}(_0x807a,0x152));var _0xa807=function(_0x94c60e,_0x36f307){_0x94c60e=_0x94c60e-0x0;var _0x230191=_0x807a[_0x94c60e];return _0x230191;};'use strict';var _=require(_0xa807('0x0'));var util=require(_0xa807('0x1'));var logger=require(_0xa807('0x2'))(_0xa807('0x3'));var moment=require(_0xa807('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa807('0x5'));var rimraf=require('rimraf');var config=require(_0xa807('0x6'));var attributes=require(_0xa807('0x7'));module[_0xa807('0x8')]=function(_0x1c779f,_0x16b2ad){return _0x1c779f[_0xa807('0x9')](_0xa807('0xa'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0xa807('0xb'),'fields':[_0xa807('0xc'),_0xa807('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5f5092d..62cfb42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeedf=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','VtigerField,\x20%s,\x20%s','debug','VtigerField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4e5c11,_0x46da33){var _0x35340d=function(_0x542471){while(--_0x542471){_0x4e5c11['push'](_0x4e5c11['shift']());}};_0x35340d(++_0x46da33);}(_0xeedf,0xc9));var _0xfeed=function(_0x3caa7d,_0x58ee3e){_0x3caa7d=_0x3caa7d-0x0;var _0x4c19c3=_0xeedf[_0x3caa7d];return _0x4c19c3;};'use strict';var _=require(_0xfeed('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfeed('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfeed('0x2'));var db=require(_0xfeed('0x3'))['db'];var utils=require(_0xfeed('0x4'));var logger=require(_0xfeed('0x5'))(_0xfeed('0x6'));var config=require(_0xfeed('0x7'));var jayson=require(_0xfeed('0x8'));var client=jayson[_0xfeed('0x9')][_0xfeed('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x35f8e5,_0x5d5701,_0x3183bc){return new BPromise(function(_0x3e7913,_0xeb34ad){return client[_0xfeed('0xb')](_0x35f8e5,_0x3183bc)[_0xfeed('0xc')](function(_0x3ac938){logger[_0xfeed('0xd')](_0xfeed('0xe'),_0x5d5701,'request\x20sent');logger[_0xfeed('0xf')](_0xfeed('0x10'),_0x5d5701,_0xfeed('0x11'),JSON[_0xfeed('0x12')](_0x3ac938));if(_0x3ac938[_0xfeed('0x13')]){if(_0x3ac938[_0xfeed('0x13')][_0xfeed('0x14')]===0x1f4){logger[_0xfeed('0x13')](_0xfeed('0xe'),_0x5d5701,_0x3ac938[_0xfeed('0x13')][_0xfeed('0x15')]);return _0xeb34ad(_0x3ac938['error']['message']);}logger['error'](_0xfeed('0xe'),_0x5d5701,_0x3ac938[_0xfeed('0x13')][_0xfeed('0x15')]);return _0x3e7913(_0x3ac938[_0xfeed('0x13')][_0xfeed('0x15')]);}else{logger[_0xfeed('0xd')](_0xfeed('0xe'),_0x5d5701,_0xfeed('0x11'));_0x3e7913(_0x3ac938['result'][_0xfeed('0x15')]);}})[_0xfeed('0x16')](function(_0x3452d1){logger[_0xfeed('0x13')](_0xfeed('0xe'),_0x5d5701,_0x3452d1);_0xeb34ad(_0x3452d1);});});}
\ No newline at end of file
+var _0xa108=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','stringify','error','VtigerField,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x34217f,_0x4954d9){var _0x533721=function(_0x5ea689){while(--_0x5ea689){_0x34217f['push'](_0x34217f['shift']());}};_0x533721(++_0x4954d9);}(_0xa108,0x15f));var _0x8a10=function(_0x43b548,_0x30ea37){_0x43b548=_0x43b548-0x0;var _0x37f928=_0xa108[_0x43b548];return _0x37f928;};'use strict';var _=require(_0x8a10('0x0'));var util=require('util');var moment=require(_0x8a10('0x1'));var BPromise=require(_0x8a10('0x2'));var rs=require(_0x8a10('0x3'));var fs=require('fs');var Redis=require(_0x8a10('0x4'));var db=require(_0x8a10('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8a10('0x6'))(_0x8a10('0x7'));var config=require(_0x8a10('0x8'));var jayson=require(_0x8a10('0x9'));var client=jayson[_0x8a10('0xa')][_0x8a10('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f27d0,_0x1b6b2a,_0x21c25a){return new BPromise(function(_0x5c37ef,_0x8eeead){return client[_0x8a10('0xc')](_0x4f27d0,_0x21c25a)['then'](function(_0x58e510){logger[_0x8a10('0xd')]('VtigerField,\x20%s,\x20%s',_0x1b6b2a,_0x8a10('0xe'));logger['debug']('VtigerField,\x20%s,\x20%s,\x20%s',_0x1b6b2a,_0x8a10('0xe'),JSON[_0x8a10('0xf')](_0x58e510));if(_0x58e510[_0x8a10('0x10')]){if(_0x58e510[_0x8a10('0x10')]['code']===0x1f4){logger[_0x8a10('0x10')](_0x8a10('0x11'),_0x1b6b2a,_0x58e510[_0x8a10('0x10')][_0x8a10('0x12')]);return _0x8eeead(_0x58e510[_0x8a10('0x10')]['message']);}logger[_0x8a10('0x10')](_0x8a10('0x11'),_0x1b6b2a,_0x58e510[_0x8a10('0x10')]['message']);return _0x5c37ef(_0x58e510[_0x8a10('0x10')][_0x8a10('0x12')]);}else{logger[_0x8a10('0xd')](_0x8a10('0x11'),_0x1b6b2a,_0x8a10('0xe'));_0x5c37ef(_0x58e510[_0x8a10('0x13')][_0x8a10('0x12')]);}})[_0x8a10('0x14')](function(_0x519223){logger['error'](_0x8a10('0x11'),_0x1b6b2a,_0x519223);_0x8eeead(_0x519223);});});}
\ No newline at end of file
index 29b388c..e66a787 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf230=['delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','/:id','update'];(function(_0x56695b,_0x1c6862){var _0x71cc5b=function(_0x1c3d01){while(--_0x1c3d01){_0x56695b['push'](_0x56695b['shift']());}};_0x71cc5b(++_0x1c6862);}(_0xf230,0xea));var _0x0f23=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf230[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x0f23('0x0'));var util=require(_0x0f23('0x1'));var path=require(_0x0f23('0x2'));var timeout=require(_0x0f23('0x3'));var express=require(_0x0f23('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0f23('0x5'));var interaction=require(_0x0f23('0x6'));var config=require(_0x0f23('0x7'));var controller=require('./intZendeskAccount.controller');router[_0x0f23('0x8')]('/',auth[_0x0f23('0x9')](),controller['index']);router[_0x0f23('0x8')]('/:id',auth[_0x0f23('0x9')](),controller['show']);router[_0x0f23('0x8')](_0x0f23('0xa'),auth[_0x0f23('0x9')](),controller[_0x0f23('0xb')]);router['get'](_0x0f23('0xc'),auth['isAuthenticated'](),controller[_0x0f23('0xd')]);router[_0x0f23('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0f23('0xe')](_0x0f23('0xa'),auth[_0x0f23('0x9')](),controller[_0x0f23('0xf')]);router['put'](_0x0f23('0x10'),auth[_0x0f23('0x9')](),controller[_0x0f23('0x11')]);router[_0x0f23('0x12')](_0x0f23('0x10'),auth[_0x0f23('0x9')](),controller[_0x0f23('0x13')]);module[_0x0f23('0x14')]=router;
\ No newline at end of file
+var _0x1b81=['put','/:id','update','delete','destroy','exports','path','fs-extra','../../components/auth/service','../../config/environment','./intZendeskAccount.controller','isAuthenticated','get','/:id/configurations','getConfigurations','post','create'];(function(_0xa74e4c,_0x152094){var _0x5aceaa=function(_0x1ae205){while(--_0x1ae205){_0xa74e4c['push'](_0xa74e4c['shift']());}};_0x5aceaa(++_0x152094);}(_0x1b81,0x7d));var _0x11b8=function(_0x4a246f,_0x375570){_0x4a246f=_0x4a246f-0x0;var _0xc84ca2=_0x1b81[_0x4a246f];return _0xc84ca2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x11b8('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x11b8('0x1'));var auth=require(_0x11b8('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0x11b8('0x3'));var controller=require(_0x11b8('0x4'));router['get']('/',auth[_0x11b8('0x5')](),controller['index']);router[_0x11b8('0x6')]('/:id',auth[_0x11b8('0x5')](),controller['show']);router[_0x11b8('0x6')](_0x11b8('0x7'),auth[_0x11b8('0x5')](),controller[_0x11b8('0x8')]);router[_0x11b8('0x6')]('/:id/fields',auth[_0x11b8('0x5')](),controller['getFields']);router[_0x11b8('0x9')]('/',auth[_0x11b8('0x5')](),controller[_0x11b8('0xa')]);router['post'](_0x11b8('0x7'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x11b8('0xb')](_0x11b8('0xc'),auth[_0x11b8('0x5')](),controller[_0x11b8('0xd')]);router[_0x11b8('0xe')](_0x11b8('0xc'),auth['isAuthenticated'](),controller[_0x11b8('0xf')]);module[_0x11b8('0x10')]=router;
\ No newline at end of file
index c39453f..e64de60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b84=['sequelize','exports','STRING','username','remoteUri','ENUM','password','token','integrationTab','newTab'];(function(_0x5ecadc,_0x1cf9f1){var _0x565037=function(_0x22908b){while(--_0x22908b){_0x5ecadc['push'](_0x5ecadc['shift']());}};_0x565037(++_0x1cf9f1);}(_0x7b84,0x17c));var _0x47b8=function(_0x30a41b,_0x536094){_0x30a41b=_0x30a41b-0x0;var _0x100d22=_0x7b84[_0x30a41b];return _0x100d22;};'use strict';var Sequelize=require(_0x47b8('0x0'));module[_0x47b8('0x1')]={'name':{'type':Sequelize[_0x47b8('0x2')]},'description':{'type':Sequelize[_0x47b8('0x2')]},'username':{'type':Sequelize[_0x47b8('0x2')],'unique':_0x47b8('0x3')},'password':{'type':Sequelize[_0x47b8('0x2')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x47b8('0x2')],'unique':_0x47b8('0x4')},'authType':{'type':Sequelize[_0x47b8('0x5')](_0x47b8('0x6'),_0x47b8('0x7')),'defaultValue':_0x47b8('0x6')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x47b8('0x5')](_0x47b8('0x8'),_0x47b8('0x9')),'defaultValue':_0x47b8('0x8')}};
\ No newline at end of file
+var _0x199c=['STRING','username','remoteUri','password','token','ENUM','integrationTab','newTab'];(function(_0x45595c,_0x35641d){var _0x37c5c3=function(_0x3948df){while(--_0x3948df){_0x45595c['push'](_0x45595c['shift']());}};_0x37c5c3(++_0x35641d);}(_0x199c,0x1d8));var _0xc199=function(_0x426a18,_0x210d36){_0x426a18=_0x426a18-0x0;var _0x1512a5=_0x199c[_0x426a18];return _0x1512a5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc199('0x0')]},'description':{'type':Sequelize[_0xc199('0x0')]},'username':{'type':Sequelize[_0xc199('0x0')],'unique':_0xc199('0x1')},'password':{'type':Sequelize[_0xc199('0x0')]},'token':{'type':Sequelize[_0xc199('0x0')]},'remoteUri':{'type':Sequelize[_0xc199('0x0')],'unique':_0xc199('0x2')},'authType':{'type':Sequelize['ENUM'](_0xc199('0x3'),_0xc199('0x4')),'defaultValue':'password'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xc199('0x5')](_0xc199('0x6'),_0xc199('0x7')),'defaultValue':_0xc199('0x6')}};
\ No newline at end of file
index 688b58b..a4be238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57f8=['fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','update','getConfigurations','findOne','ZendeskConfiguration','hasOwnProperty','addConfiguration','AccountId','channel','Descriptions','ZendeskField','Subjects','username','password','token','authType','remoteUri','slice','substring','GET','format','%s/%s','ticket_fields','Basic\x20%s','headers','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','includes','title','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','destroy','end','error','name','send','map','ZendeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x1ac120,_0x3e7e45){var _0x19b703=function(_0x5f32cb){while(--_0x5f32cb){_0x1ac120['push'](_0x1ac120['shift']());}};_0x19b703(++_0x3e7e45);}(_0x57f8,0x198));var _0x857f=function(_0x5a148f,_0x114dfa){_0x5a148f=_0x5a148f-0x0;var _0x5af2d4=_0x57f8[_0x5a148f];return _0x5af2d4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x857f('0x0'));var zipdir=require(_0x857f('0x1'));var jsonpatch=require(_0x857f('0x2'));var rp=require(_0x857f('0x3'));var moment=require(_0x857f('0x4'));var BPromise=require(_0x857f('0x5'));var Mustache=require(_0x857f('0x6'));var util=require(_0x857f('0x7'));var path=require(_0x857f('0x8'));var sox=require(_0x857f('0x9'));var csv=require(_0x857f('0xa'));var ejs=require(_0x857f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x857f('0xc'));var squel=require(_0x857f('0xd'));var crypto=require(_0x857f('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x857f('0xf'));var toCsv=require(_0x857f('0xa'));var querystring=require(_0x857f('0x10'));var Papa=require('papaparse');var Redis=require(_0x857f('0x11'));var authService=require(_0x857f('0x12'));var qs=require(_0x857f('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x857f('0x14'));var logger=require(_0x857f('0x15'))(_0x857f('0x16'));var utils=require(_0x857f('0x17'));var config=require(_0x857f('0x18'));var licenseUtil=require(_0x857f('0x19'));var db=require(_0x857f('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2e1eda,_0x2d5e26){_0x2d5e26=_0x2d5e26||0xcc;return function(_0x373333){if(_0x373333){return _0x2e1eda[_0x857f('0x1b')](_0x2d5e26);}return _0x2e1eda[_0x857f('0x1c')](_0x2d5e26)['end']();};}function respondWithResult(_0x4bc590,_0x3b09d9){_0x3b09d9=_0x3b09d9||0xc8;return function(_0x5f27b2){if(_0x5f27b2){return _0x4bc590[_0x857f('0x1c')](_0x3b09d9)['json'](_0x5f27b2);}};}function respondWithFilteredResult(_0x1d47bf,_0x134a4f){return function(_0x5c3a69){if(_0x5c3a69){var _0x27e8f1=typeof _0x134a4f[_0x857f('0x1d')]===_0x857f('0x1e')&&typeof _0x134a4f[_0x857f('0x1f')]===_0x857f('0x1e');var _0x38a3c2=_0x5c3a69[_0x857f('0x20')];var _0x429e23=_0x27e8f1?0x0:_0x134a4f[_0x857f('0x1d')];var _0x38a242=_0x27e8f1?_0x5c3a69[_0x857f('0x20')]:_0x134a4f['offset']+_0x134a4f[_0x857f('0x1f')];var _0x1e8fd4;if(_0x38a242>=_0x38a3c2){_0x38a242=_0x38a3c2;_0x1e8fd4=0xc8;}else{_0x1e8fd4=0xce;}_0x1d47bf['status'](_0x1e8fd4);return _0x1d47bf[_0x857f('0x21')](_0x857f('0x22'),_0x429e23+'-'+_0x38a242+'/'+_0x38a3c2)[_0x857f('0x23')](_0x5c3a69);}return null;};}function patchUpdates(_0x484035){return function(_0x57fa8b){try{jsonpatch[_0x857f('0x24')](_0x57fa8b,_0x484035,!![]);}catch(_0x8f278){return BPromise[_0x857f('0x25')](_0x8f278);}return _0x57fa8b['save']();};}function saveUpdates(_0x118237,_0x17a98e){return function(_0xdf8ac3){if(_0xdf8ac3){return _0xdf8ac3['update'](_0x118237)[_0x857f('0x26')](function(_0x14a8ce){return _0x14a8ce;});}return null;};}function removeEntity(_0x50bfb7,_0x3bc543){return function(_0x1a651f){if(_0x1a651f){return _0x1a651f[_0x857f('0x27')]()[_0x857f('0x26')](function(){_0x50bfb7[_0x857f('0x1c')](0xcc)[_0x857f('0x28')]();});}};}function handleEntityNotFound(_0x233a68,_0x2a89ba){return function(_0x181a9e){if(!_0x181a9e){_0x233a68[_0x857f('0x1b')](0x194);}return _0x181a9e;};}function handleError(_0x72f0aa,_0x4782ab){_0x4782ab=_0x4782ab||0x1f4;return function(_0x250731){logger[_0x857f('0x29')](_0x250731['stack']);if(_0x250731[_0x857f('0x2a')]){delete _0x250731[_0x857f('0x2a')];}_0x72f0aa[_0x857f('0x1c')](_0x4782ab)[_0x857f('0x2b')](_0x250731);};}exports['index']=function(_0x40c306,_0x57ceaa){var _0x1b405a={},_0x234048={},_0x45a37f={'count':0x0,'rows':[]};var _0x2ab814=_[_0x857f('0x2c')](db[_0x857f('0x2d')][_0x857f('0x2e')],function(_0xe79241){return{'name':_0xe79241[_0x857f('0x2f')],'type':_0xe79241[_0x857f('0x30')][_0x857f('0x31')]};});_0x234048[_0x857f('0x32')]=_[_0x857f('0x2c')](_0x2ab814,'name');_0x234048[_0x857f('0x33')]=_[_0x857f('0x34')](_0x40c306['query']);_0x234048[_0x857f('0x35')]=_[_0x857f('0x36')](_0x234048['model'],_0x234048[_0x857f('0x33')]);_0x1b405a[_0x857f('0x37')]=_['intersection'](_0x234048[_0x857f('0x32')],qs[_0x857f('0x38')](_0x40c306[_0x857f('0x33')][_0x857f('0x38')]));_0x1b405a['attributes']=_0x1b405a['attributes'][_0x857f('0x39')]?_0x1b405a[_0x857f('0x37')]:_0x234048['model'];if(!_0x40c306[_0x857f('0x33')]['hasOwnProperty'](_0x857f('0x3a'))){_0x1b405a[_0x857f('0x1f')]=qs[_0x857f('0x1f')](_0x40c306[_0x857f('0x33')][_0x857f('0x1f')]);_0x1b405a['offset']=qs['offset'](_0x40c306[_0x857f('0x33')]['offset']);}_0x1b405a[_0x857f('0x3b')]=qs[_0x857f('0x3c')](_0x40c306[_0x857f('0x33')]['sort']);_0x1b405a[_0x857f('0x3d')]=qs[_0x857f('0x35')](_[_0x857f('0x3e')](_0x40c306[_0x857f('0x33')],_0x234048[_0x857f('0x35')]),_0x2ab814);if(_0x40c306[_0x857f('0x33')][_0x857f('0x3f')]){_0x1b405a['where']=_[_0x857f('0x40')](_0x1b405a[_0x857f('0x3d')],{'$or':_[_0x857f('0x2c')](_0x2ab814,function(_0x28ffe4){if(_0x28ffe4[_0x857f('0x30')]!==_0x857f('0x41')){var _0x447f28={};_0x447f28[_0x28ffe4['name']]={'$like':'%'+_0x40c306[_0x857f('0x33')][_0x857f('0x3f')]+'%'};return _0x447f28;}})});}_0x1b405a=_[_0x857f('0x40')]({},_0x1b405a,_0x40c306[_0x857f('0x42')]);var _0x196c95={'where':_0x1b405a[_0x857f('0x3d')]};return db['ZendeskAccount'][_0x857f('0x20')](_0x196c95)[_0x857f('0x26')](function(_0x167e9d){_0x45a37f[_0x857f('0x20')]=_0x167e9d;if(_0x40c306[_0x857f('0x33')][_0x857f('0x43')]){_0x1b405a[_0x857f('0x44')]=[{'all':!![]}];}return db[_0x857f('0x2d')]['findAll'](_0x1b405a);})[_0x857f('0x26')](function(_0x223095){_0x45a37f[_0x857f('0x45')]=_0x223095;return _0x45a37f;})[_0x857f('0x26')](respondWithFilteredResult(_0x57ceaa,_0x1b405a))[_0x857f('0x46')](handleError(_0x57ceaa,null));};exports[_0x857f('0x47')]=function(_0x374b9f,_0x42d922){var _0xb4d7c2={'raw':![],'where':{'id':_0x374b9f[_0x857f('0x48')]['id']}},_0x3e2079={};_0x3e2079[_0x857f('0x32')]=_[_0x857f('0x34')](db[_0x857f('0x2d')]['rawAttributes']);_0x3e2079[_0x857f('0x33')]=_['keys'](_0x374b9f[_0x857f('0x33')]);_0x3e2079[_0x857f('0x35')]=_[_0x857f('0x36')](_0x3e2079[_0x857f('0x32')],_0x3e2079[_0x857f('0x33')]);_0xb4d7c2[_0x857f('0x37')]=_[_0x857f('0x36')](_0x3e2079[_0x857f('0x32')],qs[_0x857f('0x38')](_0x374b9f[_0x857f('0x33')][_0x857f('0x38')]));_0xb4d7c2['attributes']=_0xb4d7c2['attributes'][_0x857f('0x39')]?_0xb4d7c2['attributes']:_0x3e2079[_0x857f('0x32')];if(_0x374b9f['query'][_0x857f('0x43')]){_0xb4d7c2[_0x857f('0x44')]=[{'all':!![]}];}_0xb4d7c2=_[_0x857f('0x40')]({},_0xb4d7c2,_0x374b9f[_0x857f('0x42')]);return db[_0x857f('0x2d')][_0x857f('0x49')](_0xb4d7c2)[_0x857f('0x26')](handleEntityNotFound(_0x42d922,null))[_0x857f('0x26')](respondWithResult(_0x42d922,null))['catch'](handleError(_0x42d922,null));};exports[_0x857f('0x4a')]=function(_0x3b431d,_0x3806d4){return db[_0x857f('0x2d')]['create'](_0x3b431d[_0x857f('0x4b')],{})[_0x857f('0x26')](respondWithResult(_0x3806d4,0xc9))[_0x857f('0x46')](handleError(_0x3806d4,null));};exports[_0x857f('0x4c')]=function(_0x67563,_0x53baae){if(_0x67563[_0x857f('0x4b')]['id']){delete _0x67563[_0x857f('0x4b')]['id'];}return db['ZendeskAccount'][_0x857f('0x49')]({'where':{'id':_0x67563[_0x857f('0x48')]['id']}})['then'](handleEntityNotFound(_0x53baae,null))[_0x857f('0x26')](saveUpdates(_0x67563['body'],null))[_0x857f('0x26')](respondWithResult(_0x53baae,null))[_0x857f('0x46')](handleError(_0x53baae,null));};exports[_0x857f('0x27')]=function(_0x2008d5,_0x58bf27){return db[_0x857f('0x2d')][_0x857f('0x49')]({'where':{'id':_0x2008d5[_0x857f('0x48')]['id']}})[_0x857f('0x26')](handleEntityNotFound(_0x58bf27,null))[_0x857f('0x26')](removeEntity(_0x58bf27,null))['catch'](handleError(_0x58bf27,null));};exports[_0x857f('0x4d')]=function(_0x13ef75,_0x9d8273,_0x2670e6){var _0x3e24a5={};var _0x9edee5={};var _0x12712a;var _0x59164a;return db[_0x857f('0x2d')][_0x857f('0x4e')]({'where':{'id':_0x13ef75[_0x857f('0x48')]['id']}})[_0x857f('0x26')](handleEntityNotFound(_0x9d8273,null))[_0x857f('0x26')](function(_0x153e4e){if(_0x153e4e){_0x12712a=_0x153e4e;_0x9edee5['model']=_[_0x857f('0x34')](db[_0x857f('0x4f')][_0x857f('0x2e')]);_0x9edee5[_0x857f('0x33')]=_[_0x857f('0x34')](_0x13ef75[_0x857f('0x33')]);_0x9edee5[_0x857f('0x35')]=_[_0x857f('0x36')](_0x9edee5['model'],_0x9edee5['query']);_0x3e24a5[_0x857f('0x37')]=_[_0x857f('0x36')](_0x9edee5[_0x857f('0x32')],qs[_0x857f('0x38')](_0x13ef75[_0x857f('0x33')][_0x857f('0x38')]));_0x3e24a5['attributes']=_0x3e24a5[_0x857f('0x37')][_0x857f('0x39')]?_0x3e24a5['attributes']:_0x9edee5[_0x857f('0x32')];_0x3e24a5['order']=qs[_0x857f('0x3c')](_0x13ef75[_0x857f('0x33')]['sort']);_0x3e24a5[_0x857f('0x3d')]=qs[_0x857f('0x35')](_[_0x857f('0x3e')](_0x13ef75[_0x857f('0x33')],_0x9edee5[_0x857f('0x35')]));if(_0x13ef75[_0x857f('0x33')][_0x857f('0x3f')]){_0x3e24a5[_0x857f('0x3d')]=_['merge'](_0x3e24a5[_0x857f('0x3d')],{'$or':_[_0x857f('0x2c')](_0x3e24a5[_0x857f('0x37')],function(_0x7cc7f7){var _0x3c612f={};_0x3c612f[_0x7cc7f7]={'$like':'%'+_0x13ef75[_0x857f('0x33')][_0x857f('0x3f')]+'%'};return _0x3c612f;})});}_0x3e24a5=_[_0x857f('0x40')]({},_0x3e24a5,_0x13ef75[_0x857f('0x42')]);return _0x12712a[_0x857f('0x4d')](_0x3e24a5);}})[_0x857f('0x26')](function(_0x5631fb){if(_0x5631fb){_0x59164a=_0x5631fb[_0x857f('0x39')];if(!_0x13ef75[_0x857f('0x33')][_0x857f('0x50')](_0x857f('0x3a'))){_0x3e24a5['limit']=qs[_0x857f('0x1f')](_0x13ef75['query'][_0x857f('0x1f')]);_0x3e24a5[_0x857f('0x1d')]=qs[_0x857f('0x1d')](_0x13ef75[_0x857f('0x33')]['offset']);}return _0x12712a['getConfigurations'](_0x3e24a5);}})[_0x857f('0x26')](function(_0x3ee981){if(_0x3ee981){return _0x3ee981?{'count':_0x59164a,'rows':_0x3ee981}:null;}})[_0x857f('0x26')](respondWithResult(_0x9d8273,null))['catch'](handleError(_0x9d8273,null));};exports[_0x857f('0x51')]=function(_0x5e42bc,_0x5b505,_0x1d6c1c){if(_0x5e42bc[_0x857f('0x4b')]['id']){delete _0x5e42bc['body']['id'];}return db['ZendeskAccount'][_0x857f('0x4e')]({'where':{'id':_0x5e42bc[_0x857f('0x48')]['id']}})[_0x857f('0x26')](handleEntityNotFound(_0x5b505,null))[_0x857f('0x26')](function(_0x41f9d8){if(_0x41f9d8){_0x5e42bc[_0x857f('0x4b')][_0x857f('0x52')]=_0x41f9d8['id'];_0x5e42bc[_0x857f('0x4b')]['Subjects']=integrations['getSubjects'](_0x5e42bc[_0x857f('0x4b')][_0x857f('0x53')],_0x5e42bc[_0x857f('0x4b')][_0x857f('0x30')]);_0x5e42bc[_0x857f('0x4b')][_0x857f('0x54')]=integrations['getDescriptions'](_0x5e42bc[_0x857f('0x4b')][_0x857f('0x53')],_0x5e42bc[_0x857f('0x4b')][_0x857f('0x30')]);return db[_0x857f('0x4f')][_0x857f('0x4a')](_0x5e42bc[_0x857f('0x4b')],{'include':[{'model':db[_0x857f('0x55')],'as':_0x857f('0x56')},{'model':db[_0x857f('0x55')],'as':'Descriptions'}]});}return null;})[_0x857f('0x26')](respondWithResult(_0x5b505,null))['catch'](handleError(_0x5b505,null));};exports['getFields']=function(_0x35cd3e,_0x48e588,_0x5e5fd9){var _0x2e2cf3='';return db['ZendeskAccount'][_0x857f('0x4e')]({'where':{'id':_0x35cd3e['params']['id']},'attributes':['id',_0x857f('0x57'),_0x857f('0x58'),_0x857f('0x59'),_0x857f('0x5a'),'remoteUri']})[_0x857f('0x26')](handleEntityNotFound(_0x48e588,null))[_0x857f('0x26')](function(_0x3100aa){if(_0x3100aa){_0x2e2cf3=_0x3100aa[_0x857f('0x5b')];var _0x387aaa=_0x2e2cf3[_0x857f('0x5c')](-0x1);if(_0x387aaa==='/'){_0x2e2cf3=_0x2e2cf3[_0x857f('0x5d')](0x0,_0x2e2cf3['lastIndexOf'](_0x387aaa));}var _0x54e75d={'method':_0x857f('0x5e'),'uri':util[_0x857f('0x5f')](_0x857f('0x60'),_0x2e2cf3,_0x857f('0x61')),'json':!![]};switch(_0x3100aa[_0x857f('0x5a')]){case _0x857f('0x58'):_0x54e75d['headers']={'Authorization':util[_0x857f('0x5f')](_0x857f('0x62'),new Buffer(util[_0x857f('0x5f')]('%s:%s',_0x3100aa['username'],_0x3100aa[_0x857f('0x58')]))['toString']('base64'))};break;case _0x857f('0x59'):_0x54e75d[_0x857f('0x63')]={'Authorization':util['format'](_0x857f('0x62'),new Buffer(util[_0x857f('0x5f')]('%s/token:%s',_0x3100aa[_0x857f('0x57')],_0x3100aa[_0x857f('0x59')]))[_0x857f('0x64')](_0x857f('0x65')))};break;default:throw new db[(_0x857f('0x66'))][(_0x857f('0x67'))](_0x857f('0x68'));}return rp(_0x54e75d);}})[_0x857f('0x26')](function(_0x415fd3){if(_0x415fd3){var _0x465857=[_0x857f('0x69'),_0x857f('0x6a'),'group','assignee'];_['remove'](_0x415fd3[_0x857f('0x61')],function(_0x310b18){return _0x465857[_0x857f('0x6b')](_0x310b18[_0x857f('0x30')]);});return{'count':_0x415fd3[_0x857f('0x61')][_0x857f('0x39')],'rows':_[_0x857f('0x2c')](_0x415fd3['ticket_fields'],function(_0x40077e){return{'id':_0x40077e['id'],'name':_0x40077e['position']>0x7?_0x40077e[_0x857f('0x6c')]:_0x40077e['type'],'custom':_0x40077e['position']>0x7?!![]:![],'options':_0x40077e[_0x857f('0x6d')]?_0x40077e['system_field_options']:_0x40077e[_0x857f('0x6e')]?_0x40077e[_0x857f('0x6e')]:[]};})};}})[_0x857f('0x26')](respondWithResult(_0x48e588,null))['catch'](function(_0x45be3d){var _0x19456f=_0x35cd3e[_0x857f('0x33')][_0x857f('0x6f')]?0x1f4:_0x45be3d[_0x857f('0x70')]||0x1f4;logger[_0x857f('0x29')](_0x857f('0x71'),_0x857f('0x72'),_0x19456f,JSON[_0x857f('0x73')](_0x45be3d));delete _0x45be3d['name'];if(_0x19456f===0x191){_0x19456f=0x190;}_0x48e588[_0x857f('0x1c')](_0x19456f)[_0x857f('0x2b')](_0x35cd3e[_0x857f('0x33')][_0x857f('0x6f')]?{'message':'Wrong\x20credentials','statusCode':_0x45be3d[_0x857f('0x70')]}:_0x45be3d);});};
\ No newline at end of file
+var _0xd64b=['undefined','count','Content-Range','apply','update','then','stack','index','map','ZendeskAccount','rawAttributes','fieldName','type','key','model','name','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','rows','catch','show','params','keys','includeAll','include','merge','options','find','create','body','destroy','getConfigurations','findOne','ZendeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','ZendeskField','Descriptions','getFields','username','password','token','remoteUri','substring','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','toString','base64','Sequelize','ValidationError','subject','description','assignee','remove','position','title','system_field_options','custom_field_options','test','statusCode','error','stringify','Wrong\x20credentials','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit'];(function(_0x527bd6,_0x5af65c){var _0x71e3e8=function(_0x5f2033){while(--_0x5f2033){_0x527bd6['push'](_0x527bd6['shift']());}};_0x71e3e8(++_0x5af65c);}(_0xd64b,0xc1));var _0xbd64=function(_0x3af392,_0xe5e91f){_0x3af392=_0x3af392-0x0;var _0x33be9f=_0xd64b[_0x3af392];return _0x33be9f;};'use strict';var emlformat=require(_0xbd64('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbd64('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbd64('0x2'));var moment=require(_0xbd64('0x3'));var BPromise=require(_0xbd64('0x4'));var Mustache=require(_0xbd64('0x5'));var util=require(_0xbd64('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbd64('0x7'));var _=require(_0xbd64('0x8'));var squel=require(_0xbd64('0x9'));var crypto=require(_0xbd64('0xa'));var jsforce=require(_0xbd64('0xb'));var deskjs=require(_0xbd64('0xc'));var toCsv=require(_0xbd64('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbd64('0xe'));var authService=require(_0xbd64('0xf'));var qs=require(_0xbd64('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbd64('0x11'));var logger=require(_0xbd64('0x12'))(_0xbd64('0x13'));var utils=require(_0xbd64('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xbd64('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0xbd64('0x16'));function respondWithStatusCode(_0x2729d8,_0x3a941c){_0x3a941c=_0x3a941c||0xcc;return function(_0x2183e2){if(_0x2183e2){return _0x2729d8[_0xbd64('0x17')](_0x3a941c);}return _0x2729d8[_0xbd64('0x18')](_0x3a941c)[_0xbd64('0x19')]();};}function respondWithResult(_0x269e2f,_0x2b5808){_0x2b5808=_0x2b5808||0xc8;return function(_0x4ae471){if(_0x4ae471){return _0x269e2f[_0xbd64('0x18')](_0x2b5808)[_0xbd64('0x1a')](_0x4ae471);}};}function respondWithFilteredResult(_0x3ff550,_0x32fd34){return function(_0x29fc16){if(_0x29fc16){var _0x49a914=typeof _0x32fd34[_0xbd64('0x1b')]==='undefined'&&typeof _0x32fd34[_0xbd64('0x1c')]===_0xbd64('0x1d');var _0x3aef70=_0x29fc16[_0xbd64('0x1e')];var _0x17d015=_0x49a914?0x0:_0x32fd34[_0xbd64('0x1b')];var _0xa5491d=_0x49a914?_0x29fc16[_0xbd64('0x1e')]:_0x32fd34['offset']+_0x32fd34[_0xbd64('0x1c')];var _0x1f618b;if(_0xa5491d>=_0x3aef70){_0xa5491d=_0x3aef70;_0x1f618b=0xc8;}else{_0x1f618b=0xce;}_0x3ff550['status'](_0x1f618b);return _0x3ff550['set'](_0xbd64('0x1f'),_0x17d015+'-'+_0xa5491d+'/'+_0x3aef70)[_0xbd64('0x1a')](_0x29fc16);}return null;};}function patchUpdates(_0x196d21){return function(_0x39e2eb){try{jsonpatch[_0xbd64('0x20')](_0x39e2eb,_0x196d21,!![]);}catch(_0x816e00){return BPromise['reject'](_0x816e00);}return _0x39e2eb['save']();};}function saveUpdates(_0x6038f,_0x41f2f){return function(_0x12f67b){if(_0x12f67b){return _0x12f67b[_0xbd64('0x21')](_0x6038f)['then'](function(_0x51d118){return _0x51d118;});}return null;};}function removeEntity(_0x28497c,_0x4afaff){return function(_0x46ab38){if(_0x46ab38){return _0x46ab38['destroy']()[_0xbd64('0x22')](function(){_0x28497c[_0xbd64('0x18')](0xcc)[_0xbd64('0x19')]();});}};}function handleEntityNotFound(_0x2d0993,_0x5ae417){return function(_0x9d0fb8){if(!_0x9d0fb8){_0x2d0993[_0xbd64('0x17')](0x194);}return _0x9d0fb8;};}function handleError(_0x13f527,_0x2a44d0){_0x2a44d0=_0x2a44d0||0x1f4;return function(_0x4d1563){logger['error'](_0x4d1563[_0xbd64('0x23')]);if(_0x4d1563['name']){delete _0x4d1563['name'];}_0x13f527[_0xbd64('0x18')](_0x2a44d0)['send'](_0x4d1563);};}exports[_0xbd64('0x24')]=function(_0x5300e8,_0x28199c){var _0x5d8c35={},_0x1db9f3={},_0x3c0eaf={'count':0x0,'rows':[]};var _0x3be63a=_[_0xbd64('0x25')](db[_0xbd64('0x26')][_0xbd64('0x27')],function(_0x4ed44a){return{'name':_0x4ed44a[_0xbd64('0x28')],'type':_0x4ed44a[_0xbd64('0x29')][_0xbd64('0x2a')]};});_0x1db9f3[_0xbd64('0x2b')]=_[_0xbd64('0x25')](_0x3be63a,_0xbd64('0x2c'));_0x1db9f3['query']=_['keys'](_0x5300e8[_0xbd64('0x2d')]);_0x1db9f3['filters']=_[_0xbd64('0x2e')](_0x1db9f3[_0xbd64('0x2b')],_0x1db9f3['query']);_0x5d8c35['attributes']=_[_0xbd64('0x2e')](_0x1db9f3['model'],qs['fields'](_0x5300e8[_0xbd64('0x2d')][_0xbd64('0x2f')]));_0x5d8c35[_0xbd64('0x30')]=_0x5d8c35['attributes'][_0xbd64('0x31')]?_0x5d8c35['attributes']:_0x1db9f3[_0xbd64('0x2b')];if(!_0x5300e8[_0xbd64('0x2d')][_0xbd64('0x32')](_0xbd64('0x33'))){_0x5d8c35[_0xbd64('0x1c')]=qs[_0xbd64('0x1c')](_0x5300e8['query']['limit']);_0x5d8c35[_0xbd64('0x1b')]=qs[_0xbd64('0x1b')](_0x5300e8[_0xbd64('0x2d')][_0xbd64('0x1b')]);}_0x5d8c35[_0xbd64('0x34')]=qs[_0xbd64('0x35')](_0x5300e8['query']['sort']);_0x5d8c35[_0xbd64('0x36')]=qs[_0xbd64('0x37')](_[_0xbd64('0x38')](_0x5300e8['query'],_0x1db9f3['filters']),_0x3be63a);if(_0x5300e8[_0xbd64('0x2d')]['filter']){_0x5d8c35[_0xbd64('0x36')]=_['merge'](_0x5d8c35[_0xbd64('0x36')],{'$or':_[_0xbd64('0x25')](_0x3be63a,function(_0x550221){if(_0x550221[_0xbd64('0x29')]!=='VIRTUAL'){var _0x534091={};_0x534091[_0x550221[_0xbd64('0x2c')]]={'$like':'%'+_0x5300e8[_0xbd64('0x2d')][_0xbd64('0x39')]+'%'};return _0x534091;}})});}_0x5d8c35=_['merge']({},_0x5d8c35,_0x5300e8['options']);var _0x5d6bcf={'where':_0x5d8c35[_0xbd64('0x36')]};return db[_0xbd64('0x26')]['count'](_0x5d6bcf)[_0xbd64('0x22')](function(_0x34b19a){_0x3c0eaf[_0xbd64('0x1e')]=_0x34b19a;if(_0x5300e8[_0xbd64('0x2d')]['includeAll']){_0x5d8c35['include']=[{'all':!![]}];}return db[_0xbd64('0x26')]['findAll'](_0x5d8c35);})['then'](function(_0x231fa6){_0x3c0eaf[_0xbd64('0x3a')]=_0x231fa6;return _0x3c0eaf;})[_0xbd64('0x22')](respondWithFilteredResult(_0x28199c,_0x5d8c35))[_0xbd64('0x3b')](handleError(_0x28199c,null));};exports[_0xbd64('0x3c')]=function(_0x3155b3,_0x247775){var _0x762380={'raw':![],'where':{'id':_0x3155b3[_0xbd64('0x3d')]['id']}},_0x4870fd={};_0x4870fd[_0xbd64('0x2b')]=_['keys'](db[_0xbd64('0x26')][_0xbd64('0x27')]);_0x4870fd[_0xbd64('0x2d')]=_[_0xbd64('0x3e')](_0x3155b3[_0xbd64('0x2d')]);_0x4870fd[_0xbd64('0x37')]=_[_0xbd64('0x2e')](_0x4870fd['model'],_0x4870fd[_0xbd64('0x2d')]);_0x762380['attributes']=_[_0xbd64('0x2e')](_0x4870fd['model'],qs[_0xbd64('0x2f')](_0x3155b3[_0xbd64('0x2d')][_0xbd64('0x2f')]));_0x762380['attributes']=_0x762380[_0xbd64('0x30')]['length']?_0x762380['attributes']:_0x4870fd['model'];if(_0x3155b3[_0xbd64('0x2d')][_0xbd64('0x3f')]){_0x762380[_0xbd64('0x40')]=[{'all':!![]}];}_0x762380=_[_0xbd64('0x41')]({},_0x762380,_0x3155b3[_0xbd64('0x42')]);return db[_0xbd64('0x26')][_0xbd64('0x43')](_0x762380)['then'](handleEntityNotFound(_0x247775,null))[_0xbd64('0x22')](respondWithResult(_0x247775,null))[_0xbd64('0x3b')](handleError(_0x247775,null));};exports[_0xbd64('0x44')]=function(_0x4e5efe,_0x105bee){return db[_0xbd64('0x26')][_0xbd64('0x44')](_0x4e5efe[_0xbd64('0x45')],{})[_0xbd64('0x22')](respondWithResult(_0x105bee,0xc9))['catch'](handleError(_0x105bee,null));};exports[_0xbd64('0x21')]=function(_0x1a9ec8,_0x2a8011){if(_0x1a9ec8[_0xbd64('0x45')]['id']){delete _0x1a9ec8['body']['id'];}return db['ZendeskAccount'][_0xbd64('0x43')]({'where':{'id':_0x1a9ec8[_0xbd64('0x3d')]['id']}})[_0xbd64('0x22')](handleEntityNotFound(_0x2a8011,null))[_0xbd64('0x22')](saveUpdates(_0x1a9ec8[_0xbd64('0x45')],null))[_0xbd64('0x22')](respondWithResult(_0x2a8011,null))[_0xbd64('0x3b')](handleError(_0x2a8011,null));};exports[_0xbd64('0x46')]=function(_0x460158,_0x2709b2){return db[_0xbd64('0x26')][_0xbd64('0x43')]({'where':{'id':_0x460158[_0xbd64('0x3d')]['id']}})[_0xbd64('0x22')](handleEntityNotFound(_0x2709b2,null))[_0xbd64('0x22')](removeEntity(_0x2709b2,null))['catch'](handleError(_0x2709b2,null));};exports[_0xbd64('0x47')]=function(_0x4952db,_0x5ede67,_0x552c95){var _0x4aa662={};var _0xced0ca={};var _0x2f56df;var _0x5480f5;return db[_0xbd64('0x26')][_0xbd64('0x48')]({'where':{'id':_0x4952db[_0xbd64('0x3d')]['id']}})['then'](handleEntityNotFound(_0x5ede67,null))[_0xbd64('0x22')](function(_0x371bad){if(_0x371bad){_0x2f56df=_0x371bad;_0xced0ca[_0xbd64('0x2b')]=_[_0xbd64('0x3e')](db[_0xbd64('0x49')][_0xbd64('0x27')]);_0xced0ca['query']=_['keys'](_0x4952db['query']);_0xced0ca[_0xbd64('0x37')]=_[_0xbd64('0x2e')](_0xced0ca[_0xbd64('0x2b')],_0xced0ca[_0xbd64('0x2d')]);_0x4aa662['attributes']=_[_0xbd64('0x2e')](_0xced0ca[_0xbd64('0x2b')],qs[_0xbd64('0x2f')](_0x4952db[_0xbd64('0x2d')][_0xbd64('0x2f')]));_0x4aa662[_0xbd64('0x30')]=_0x4aa662['attributes'][_0xbd64('0x31')]?_0x4aa662[_0xbd64('0x30')]:_0xced0ca[_0xbd64('0x2b')];_0x4aa662[_0xbd64('0x34')]=qs[_0xbd64('0x35')](_0x4952db[_0xbd64('0x2d')][_0xbd64('0x35')]);_0x4aa662[_0xbd64('0x36')]=qs[_0xbd64('0x37')](_[_0xbd64('0x38')](_0x4952db[_0xbd64('0x2d')],_0xced0ca[_0xbd64('0x37')]));if(_0x4952db['query']['filter']){_0x4aa662[_0xbd64('0x36')]=_[_0xbd64('0x41')](_0x4aa662['where'],{'$or':_['map'](_0x4aa662[_0xbd64('0x30')],function(_0x12bc56){var _0x49051a={};_0x49051a[_0x12bc56]={'$like':'%'+_0x4952db[_0xbd64('0x2d')][_0xbd64('0x39')]+'%'};return _0x49051a;})});}_0x4aa662=_[_0xbd64('0x41')]({},_0x4aa662,_0x4952db[_0xbd64('0x42')]);return _0x2f56df[_0xbd64('0x47')](_0x4aa662);}})[_0xbd64('0x22')](function(_0x2d788){if(_0x2d788){_0x5480f5=_0x2d788[_0xbd64('0x31')];if(!_0x4952db[_0xbd64('0x2d')]['hasOwnProperty'](_0xbd64('0x33'))){_0x4aa662[_0xbd64('0x1c')]=qs[_0xbd64('0x1c')](_0x4952db['query'][_0xbd64('0x1c')]);_0x4aa662[_0xbd64('0x1b')]=qs['offset'](_0x4952db[_0xbd64('0x2d')][_0xbd64('0x1b')]);}return _0x2f56df[_0xbd64('0x47')](_0x4aa662);}})[_0xbd64('0x22')](function(_0x3615bc){if(_0x3615bc){return _0x3615bc?{'count':_0x5480f5,'rows':_0x3615bc}:null;}})[_0xbd64('0x22')](respondWithResult(_0x5ede67,null))['catch'](handleError(_0x5ede67,null));};exports[_0xbd64('0x4a')]=function(_0x1f3bd0,_0xc57eb1,_0x28d899){if(_0x1f3bd0['body']['id']){delete _0x1f3bd0[_0xbd64('0x45')]['id'];}return db[_0xbd64('0x26')]['findOne']({'where':{'id':_0x1f3bd0[_0xbd64('0x3d')]['id']}})['then'](handleEntityNotFound(_0xc57eb1,null))[_0xbd64('0x22')](function(_0x10e269){if(_0x10e269){_0x1f3bd0[_0xbd64('0x45')][_0xbd64('0x4b')]=_0x10e269['id'];_0x1f3bd0['body'][_0xbd64('0x4c')]=integrations[_0xbd64('0x4d')](_0x1f3bd0[_0xbd64('0x45')][_0xbd64('0x4e')],_0x1f3bd0[_0xbd64('0x45')][_0xbd64('0x29')]);_0x1f3bd0['body']['Descriptions']=integrations['getDescriptions'](_0x1f3bd0[_0xbd64('0x45')][_0xbd64('0x4e')],_0x1f3bd0[_0xbd64('0x45')][_0xbd64('0x29')]);return db[_0xbd64('0x49')][_0xbd64('0x44')](_0x1f3bd0['body'],{'include':[{'model':db[_0xbd64('0x4f')],'as':_0xbd64('0x4c')},{'model':db[_0xbd64('0x4f')],'as':_0xbd64('0x50')}]});}return null;})[_0xbd64('0x22')](respondWithResult(_0xc57eb1,null))[_0xbd64('0x3b')](handleError(_0xc57eb1,null));};exports[_0xbd64('0x51')]=function(_0x3d7e47,_0x301f42,_0x18e724){var _0x32e611='';return db[_0xbd64('0x26')]['findOne']({'where':{'id':_0x3d7e47['params']['id']},'attributes':['id',_0xbd64('0x52'),_0xbd64('0x53'),_0xbd64('0x54'),'authType',_0xbd64('0x55')]})['then'](handleEntityNotFound(_0x301f42,null))[_0xbd64('0x22')](function(_0x36ebb5){if(_0x36ebb5){_0x32e611=_0x36ebb5[_0xbd64('0x55')];var _0x819774=_0x32e611['slice'](-0x1);if(_0x819774==='/'){_0x32e611=_0x32e611[_0xbd64('0x56')](0x0,_0x32e611['lastIndexOf'](_0x819774));}var _0x14f79e={'method':_0xbd64('0x57'),'uri':util[_0xbd64('0x58')](_0xbd64('0x59'),_0x32e611,_0xbd64('0x5a')),'json':!![]};switch(_0x36ebb5['authType']){case _0xbd64('0x53'):_0x14f79e[_0xbd64('0x5b')]={'Authorization':util['format'](_0xbd64('0x5c'),new Buffer(util[_0xbd64('0x58')](_0xbd64('0x5d'),_0x36ebb5[_0xbd64('0x52')],_0x36ebb5['password']))[_0xbd64('0x5e')]('base64'))};break;case _0xbd64('0x54'):_0x14f79e[_0xbd64('0x5b')]={'Authorization':util[_0xbd64('0x58')]('Basic\x20%s',new Buffer(util['format']('%s/token:%s',_0x36ebb5['username'],_0x36ebb5[_0xbd64('0x54')]))[_0xbd64('0x5e')](_0xbd64('0x5f')))};break;default:throw new db[(_0xbd64('0x60'))][(_0xbd64('0x61'))]('Unknown\x20authentication\x20type');}return rp(_0x14f79e);}})[_0xbd64('0x22')](function(_0x23de71){if(_0x23de71){var _0xac13e6=[_0xbd64('0x62'),_0xbd64('0x63'),'group',_0xbd64('0x64')];_[_0xbd64('0x65')](_0x23de71[_0xbd64('0x5a')],function(_0x808467){return _0xac13e6['includes'](_0x808467['type']);});return{'count':_0x23de71[_0xbd64('0x5a')][_0xbd64('0x31')],'rows':_[_0xbd64('0x25')](_0x23de71[_0xbd64('0x5a')],function(_0x18b0f0){return{'id':_0x18b0f0['id'],'name':_0x18b0f0[_0xbd64('0x66')]>0x7?_0x18b0f0[_0xbd64('0x67')]:_0x18b0f0[_0xbd64('0x29')],'custom':_0x18b0f0['position']>0x7?!![]:![],'options':_0x18b0f0[_0xbd64('0x68')]?_0x18b0f0['system_field_options']:_0x18b0f0[_0xbd64('0x69')]?_0x18b0f0[_0xbd64('0x69')]:[]};})};}})[_0xbd64('0x22')](respondWithResult(_0x301f42,null))['catch'](function(_0x15b625){var _0x5c30f9=_0x3d7e47['query'][_0xbd64('0x6a')]?0x1f4:_0x15b625[_0xbd64('0x6b')]||0x1f4;logger[_0xbd64('0x6c')]('getFields,\x20%s,\x20%s,\x20%s',_0xbd64('0x51'),_0x5c30f9,JSON[_0xbd64('0x6d')](_0x15b625));delete _0x15b625[_0xbd64('0x2c')];if(_0x5c30f9===0x191){_0x5c30f9=0x190;}_0x301f42[_0xbd64('0x18')](_0x5c30f9)['send'](_0x3d7e47[_0xbd64('0x2d')][_0xbd64('0x6a')]?{'message':_0xbd64('0x6e'),'statusCode':_0x15b625[_0xbd64('0x6b')]}:_0x15b625);});};
\ No newline at end of file
index 2f68fbf..ad020b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8671=['ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x302a64,_0x191bf6){var _0xc4c71e=function(_0xe03a6d){while(--_0xe03a6d){_0x302a64['push'](_0x302a64['shift']());}};_0xc4c71e(++_0x191bf6);}(_0x8671,0x98));var _0x1867=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x8671[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0x1867('0x0'));var util=require(_0x1867('0x1'));var logger=require(_0x1867('0x2'))(_0x1867('0x3'));var moment=require(_0x1867('0x4'));var BPromise=require(_0x1867('0x5'));var rp=require(_0x1867('0x6'));var fs=require('fs');var path=require(_0x1867('0x7'));var rimraf=require(_0x1867('0x8'));var config=require('../../config/environment');var attributes=require(_0x1867('0x9'));var integrations=require(_0x1867('0xa'));module[_0x1867('0xb')]=function(_0x5a6be9,_0x327232){return _0x5a6be9[_0x1867('0xc')](_0x1867('0xd'),attributes,{'tableName':_0x1867('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa1aa=['rimraf','./intZendeskAccount.attributes','../../components/integrations/configuration','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2a205f,_0x5cd755){var _0x18b6da=function(_0x375f9b){while(--_0x375f9b){_0x2a205f['push'](_0x2a205f['shift']());}};_0x18b6da(++_0x5cd755);}(_0xa1aa,0x1dd));var _0xaa1a=function(_0x330eb9,_0x41bcf1){_0x330eb9=_0x330eb9-0x0;var _0x54502a=_0xa1aa[_0x330eb9];return _0x54502a;};'use strict';var _=require(_0xaa1a('0x0'));var util=require(_0xaa1a('0x1'));var logger=require(_0xaa1a('0x2'))(_0xaa1a('0x3'));var moment=require(_0xaa1a('0x4'));var BPromise=require(_0xaa1a('0x5'));var rp=require(_0xaa1a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaa1a('0x7'));var config=require('../../config/environment');var attributes=require(_0xaa1a('0x8'));var integrations=require(_0xaa1a('0x9'));module['exports']=function(_0x107d43,_0x30b664){return _0x107d43[_0xaa1a('0xa')]('ZendeskAccount',attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9c9df98..746672b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6906=['options','raw','where','attributes','limit','include','map','model','GetZendeskAccount','catch','ShowZendeskAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','jayson/promise','client','request','then','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','ZendeskAccount'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x6906,0x1da));var _0x6690=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x6906[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x6690('0x0'));var util=require(_0x6690('0x1'));var moment=require(_0x6690('0x2'));var BPromise=require(_0x6690('0x3'));var rs=require(_0x6690('0x4'));var fs=require('fs');var Redis=require(_0x6690('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6690('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x6690('0x7'));var client=jayson[_0x6690('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x30ac0c,_0x4322fc,_0x422c05){return new BPromise(function(_0x4eeaac,_0x77c874){return client[_0x6690('0x9')](_0x30ac0c,_0x422c05)[_0x6690('0xa')](function(_0x17215c){logger['info'](_0x6690('0xb'),_0x4322fc,'request\x20sent');logger[_0x6690('0xc')](_0x6690('0xd'),_0x4322fc,_0x6690('0xe'),JSON[_0x6690('0xf')](_0x17215c));if(_0x17215c[_0x6690('0x10')]){if(_0x17215c[_0x6690('0x10')]['code']===0x1f4){logger[_0x6690('0x10')](_0x6690('0xb'),_0x4322fc,_0x17215c['error']['message']);return _0x77c874(_0x17215c[_0x6690('0x10')][_0x6690('0x11')]);}logger[_0x6690('0x10')](_0x6690('0xb'),_0x4322fc,_0x17215c['error']['message']);return _0x4eeaac(_0x17215c[_0x6690('0x10')][_0x6690('0x11')]);}else{logger[_0x6690('0x12')]('ZendeskAccount,\x20%s,\x20%s',_0x4322fc,_0x6690('0xe'));_0x4eeaac(_0x17215c[_0x6690('0x13')][_0x6690('0x11')]);}})['catch'](function(_0x15e311){logger[_0x6690('0x10')](_0x6690('0xb'),_0x4322fc,_0x15e311);_0x77c874(_0x15e311);});});}exports['GetZendeskAccount']=function(_0x32ecdc){var _0x5f127e=this;return new Promise(function(_0x24eb3b,_0x2cb5c9){return db[_0x6690('0x14')]['findAll']({'raw':_0x32ecdc[_0x6690('0x15')]?_0x32ecdc[_0x6690('0x15')][_0x6690('0x16')]===undefined?!![]:![]:!![],'where':_0x32ecdc['options']?_0x32ecdc[_0x6690('0x15')][_0x6690('0x17')]||null:null,'attributes':_0x32ecdc['options']?_0x32ecdc['options'][_0x6690('0x18')]||null:null,'limit':_0x32ecdc['options']?_0x32ecdc[_0x6690('0x15')][_0x6690('0x19')]||null:null,'include':_0x32ecdc[_0x6690('0x15')]?_0x32ecdc['options'][_0x6690('0x1a')]?_[_0x6690('0x1b')](_0x32ecdc[_0x6690('0x15')]['include'],function(_0x321468){return{'model':db[_0x321468[_0x6690('0x1c')]],'as':_0x321468['as'],'attributes':_0x321468[_0x6690('0x18')],'include':_0x321468[_0x6690('0x1a')]?_['map'](_0x321468[_0x6690('0x1a')],function(_0x35b7fc){return{'model':db[_0x35b7fc[_0x6690('0x1c')]],'as':_0x35b7fc['as'],'attributes':_0x35b7fc['attributes'],'include':_0x35b7fc[_0x6690('0x1a')]?_[_0x6690('0x1b')](_0x35b7fc['include'],function(_0x282b27){return{'model':db[_0x282b27[_0x6690('0x1c')]],'as':_0x282b27['as'],'attributes':_0x282b27['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x32735d){logger[_0x6690('0x12')](_0x6690('0x1d'),_0x32ecdc);logger[_0x6690('0xc')](_0x6690('0x1d'),_0x32ecdc,JSON[_0x6690('0xf')](_0x32735d));_0x24eb3b(_0x32735d);})[_0x6690('0x1e')](function(_0x54eb8d){logger[_0x6690('0x10')](_0x6690('0x1d'),_0x54eb8d[_0x6690('0x11')],_0x32ecdc);_0x2cb5c9(_0x5f127e[_0x6690('0x10')](0x1f4,_0x54eb8d[_0x6690('0x11')]));});});};exports[_0x6690('0x1f')]=function(_0x2e8d2e){var _0x5708f7=this;return new Promise(function(_0x1ec4a8,_0x81fc0a){return db['ZendeskAccount'][_0x6690('0x20')]({'raw':_0x2e8d2e[_0x6690('0x15')]?_0x2e8d2e['options'][_0x6690('0x16')]===undefined?!![]:![]:!![],'where':_0x2e8d2e['options']?_0x2e8d2e['options']['where']||null:null,'attributes':_0x2e8d2e[_0x6690('0x15')]?_0x2e8d2e[_0x6690('0x15')][_0x6690('0x18')]||null:null,'include':_0x2e8d2e[_0x6690('0x15')]?_0x2e8d2e['options'][_0x6690('0x1a')]?_[_0x6690('0x1b')](_0x2e8d2e[_0x6690('0x15')][_0x6690('0x1a')],function(_0x509f7b){return{'model':db[_0x509f7b['model']],'as':_0x509f7b['as'],'attributes':_0x509f7b[_0x6690('0x18')],'include':_0x509f7b[_0x6690('0x1a')]?_[_0x6690('0x1b')](_0x509f7b[_0x6690('0x1a')],function(_0x4f26f5){return{'model':db[_0x4f26f5[_0x6690('0x1c')]],'as':_0x4f26f5['as'],'attributes':_0x4f26f5[_0x6690('0x18')],'include':_0x4f26f5[_0x6690('0x1a')]?_[_0x6690('0x1b')](_0x4f26f5[_0x6690('0x1a')],function(_0x4b142c){return{'model':db[_0x4b142c[_0x6690('0x1c')]],'as':_0x4b142c['as'],'attributes':_0x4b142c[_0x6690('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x32ac47){logger[_0x6690('0x12')](_0x6690('0x1f'),_0x2e8d2e);logger['debug'](_0x6690('0x1f'),_0x2e8d2e,JSON[_0x6690('0xf')](_0x32ac47));_0x1ec4a8(_0x32ac47);})[_0x6690('0x1e')](function(_0x4a06cd){logger['error']('ShowZendeskAccount',_0x4a06cd[_0x6690('0x11')],_0x2e8d2e);_0x81fc0a(_0x5708f7[_0x6690('0x10')](0x1f4,_0x4a06cd['message']));});});};
\ No newline at end of file
+var _0x2cda=['model','stringify','find','ShowZendeskAccount','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','where','attributes','include','map'];(function(_0x20c0d0,_0x590c2b){var _0x5146e5=function(_0x3f022c){while(--_0x3f022c){_0x20c0d0['push'](_0x20c0d0['shift']());}};_0x5146e5(++_0x590c2b);}(_0x2cda,0x185));var _0xa2cd=function(_0x2725a8,_0x4141ef){_0x2725a8=_0x2725a8-0x0;var _0x385904=_0x2cda[_0x2725a8];return _0x385904;};'use strict';var _=require('lodash');var util=require(_0xa2cd('0x0'));var moment=require('moment');var BPromise=require(_0xa2cd('0x1'));var rs=require(_0xa2cd('0x2'));var fs=require('fs');var Redis=require(_0xa2cd('0x3'));var db=require(_0xa2cd('0x4'))['db'];var utils=require(_0xa2cd('0x5'));var logger=require(_0xa2cd('0x6'))(_0xa2cd('0x7'));var config=require(_0xa2cd('0x8'));var jayson=require(_0xa2cd('0x9'));var client=jayson[_0xa2cd('0xa')][_0xa2cd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54167f,_0x5748b0,_0x22e3ce){return new BPromise(function(_0xce4fec,_0x428623){return client['request'](_0x54167f,_0x22e3ce)[_0xa2cd('0xc')](function(_0x606723){logger[_0xa2cd('0xd')](_0xa2cd('0xe'),_0x5748b0,'request\x20sent');logger[_0xa2cd('0xf')](_0xa2cd('0x10'),_0x5748b0,_0xa2cd('0x11'),JSON['stringify'](_0x606723));if(_0x606723[_0xa2cd('0x12')]){if(_0x606723[_0xa2cd('0x12')][_0xa2cd('0x13')]===0x1f4){logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x5748b0,_0x606723[_0xa2cd('0x12')][_0xa2cd('0x14')]);return _0x428623(_0x606723[_0xa2cd('0x12')][_0xa2cd('0x14')]);}logger['error'](_0xa2cd('0xe'),_0x5748b0,_0x606723['error'][_0xa2cd('0x14')]);return _0xce4fec(_0x606723[_0xa2cd('0x12')][_0xa2cd('0x14')]);}else{logger['info'](_0xa2cd('0xe'),_0x5748b0,'request\x20sent');_0xce4fec(_0x606723[_0xa2cd('0x15')][_0xa2cd('0x14')]);}})[_0xa2cd('0x16')](function(_0x427983){logger[_0xa2cd('0x12')](_0xa2cd('0xe'),_0x5748b0,_0x427983);_0x428623(_0x427983);});});}exports[_0xa2cd('0x17')]=function(_0x4d906f){var _0xee8194=this;return new Promise(function(_0x27a4d2,_0x399c7b){return db[_0xa2cd('0x18')][_0xa2cd('0x19')]({'raw':_0x4d906f['options']?_0x4d906f[_0xa2cd('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4d906f[_0xa2cd('0x1a')]?_0x4d906f[_0xa2cd('0x1a')][_0xa2cd('0x1b')]||null:null,'attributes':_0x4d906f['options']?_0x4d906f[_0xa2cd('0x1a')][_0xa2cd('0x1c')]||null:null,'limit':_0x4d906f['options']?_0x4d906f[_0xa2cd('0x1a')]['limit']||null:null,'include':_0x4d906f[_0xa2cd('0x1a')]?_0x4d906f[_0xa2cd('0x1a')][_0xa2cd('0x1d')]?_[_0xa2cd('0x1e')](_0x4d906f[_0xa2cd('0x1a')][_0xa2cd('0x1d')],function(_0x5993a2){return{'model':db[_0x5993a2['model']],'as':_0x5993a2['as'],'attributes':_0x5993a2[_0xa2cd('0x1c')],'include':_0x5993a2[_0xa2cd('0x1d')]?_['map'](_0x5993a2[_0xa2cd('0x1d')],function(_0x132414){return{'model':db[_0x132414[_0xa2cd('0x1f')]],'as':_0x132414['as'],'attributes':_0x132414['attributes'],'include':_0x132414[_0xa2cd('0x1d')]?_['map'](_0x132414['include'],function(_0x4cfd02){return{'model':db[_0x4cfd02[_0xa2cd('0x1f')]],'as':_0x4cfd02['as'],'attributes':_0x4cfd02[_0xa2cd('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa2cd('0xc')](function(_0x39de9a){logger['info'](_0xa2cd('0x17'),_0x4d906f);logger[_0xa2cd('0xf')](_0xa2cd('0x17'),_0x4d906f,JSON[_0xa2cd('0x20')](_0x39de9a));_0x27a4d2(_0x39de9a);})['catch'](function(_0x5c9161){logger[_0xa2cd('0x12')](_0xa2cd('0x17'),_0x5c9161[_0xa2cd('0x14')],_0x4d906f);_0x399c7b(_0xee8194[_0xa2cd('0x12')](0x1f4,_0x5c9161[_0xa2cd('0x14')]));});});};exports['ShowZendeskAccount']=function(_0x3b6312){var _0x5622a7=this;return new Promise(function(_0x243e02,_0x8ef238){return db[_0xa2cd('0x18')][_0xa2cd('0x21')]({'raw':_0x3b6312[_0xa2cd('0x1a')]?_0x3b6312[_0xa2cd('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x3b6312[_0xa2cd('0x1a')]?_0x3b6312[_0xa2cd('0x1a')][_0xa2cd('0x1b')]||null:null,'attributes':_0x3b6312[_0xa2cd('0x1a')]?_0x3b6312[_0xa2cd('0x1a')][_0xa2cd('0x1c')]||null:null,'include':_0x3b6312[_0xa2cd('0x1a')]?_0x3b6312['options'][_0xa2cd('0x1d')]?_['map'](_0x3b6312[_0xa2cd('0x1a')]['include'],function(_0x3f7312){return{'model':db[_0x3f7312[_0xa2cd('0x1f')]],'as':_0x3f7312['as'],'attributes':_0x3f7312[_0xa2cd('0x1c')],'include':_0x3f7312[_0xa2cd('0x1d')]?_['map'](_0x3f7312[_0xa2cd('0x1d')],function(_0x492181){return{'model':db[_0x492181[_0xa2cd('0x1f')]],'as':_0x492181['as'],'attributes':_0x492181[_0xa2cd('0x1c')],'include':_0x492181[_0xa2cd('0x1d')]?_[_0xa2cd('0x1e')](_0x492181[_0xa2cd('0x1d')],function(_0x46e5cd){return{'model':db[_0x46e5cd[_0xa2cd('0x1f')]],'as':_0x46e5cd['as'],'attributes':_0x46e5cd[_0xa2cd('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a7a49){logger[_0xa2cd('0xd')](_0xa2cd('0x22'),_0x3b6312);logger['debug'](_0xa2cd('0x22'),_0x3b6312,JSON['stringify'](_0x4a7a49));_0x243e02(_0x4a7a49);})['catch'](function(_0x471d63){logger[_0xa2cd('0x12')](_0xa2cd('0x22'),_0x471d63['message'],_0x3b6312);_0x8ef238(_0x5622a7[_0xa2cd('0x12')](0x1f4,_0x471d63[_0xa2cd('0x14')]));});});};
\ No newline at end of file
index 2b68b4d..3b069f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['put','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','post','setTags'];(function(_0x1ff647,_0x247a62){var _0x1ff002=function(_0x71e6c1){while(--_0x71e6c1){_0x1ff647['push'](_0x1ff647['shift']());}};_0x1ff002(++_0x247a62);}(_0x0bb5,0x148));var _0x50bb=function(_0x9a0cc,_0x43107b){_0x9a0cc=_0x9a0cc-0x0;var _0x3acc26=_0x0bb5[_0x9a0cc];return _0x3acc26;};'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/fields',auth[_0x50bb('0xb')](),controller[_0x50bb('0xd')]);router[_0x50bb('0x9')](_0x50bb('0xe'),auth['isAuthenticated'](),controller[_0x50bb('0xf')]);router[_0x50bb('0x9')](_0x50bb('0x10'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x11')]);router[_0x50bb('0x9')](_0x50bb('0x12'),auth['isAuthenticated'](),controller[_0x50bb('0x13')]);router['post']('/',auth[_0x50bb('0xb')](),controller[_0x50bb('0x14')]);router[_0x50bb('0x15')]('/:id/tags',auth[_0x50bb('0xb')](),controller[_0x50bb('0x16')]);router[_0x50bb('0x17')]('/:id',auth[_0x50bb('0xb')](),controller['update']);router[_0x50bb('0x18')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x19')]);module[_0x50bb('0x1a')]=router;
\ No newline at end of file
+var _0x0713=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','post','setTags','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields'];(function(_0x255c68,_0x2ef8ef){var _0x118249=function(_0x212500){while(--_0x212500){_0x255c68['push'](_0x255c68['shift']());}};_0x118249(++_0x2ef8ef);}(_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['getFields']);router[_0x3071('0x8')](_0x3071('0xe'),auth[_0x3071('0x9')](),controller[_0x3071('0xf')]);router[_0x3071('0x8')]('/:id/descriptions',auth[_0x3071('0x9')](),controller[_0x3071('0x10')]);router[_0x3071('0x8')](_0x3071('0x11'),auth[_0x3071('0x9')](),controller['getTags']);router['post']('/',auth[_0x3071('0x9')](),controller['create']);router[_0x3071('0x12')](_0x3071('0x11'),auth['isAuthenticated'](),controller[_0x3071('0x13')]);router['put'](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0x14')]);router[_0x3071('0x15')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0x16')]);module[_0x3071('0x17')]=router;
\ No newline at end of file
index b4ed993..4772d98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf4b=['STRING','exports'];(function(_0x20296a,_0x55056a){var _0x51c005=function(_0x248bd9){while(--_0x248bd9){_0x20296a['push'](_0x20296a['shift']());}};_0x51c005(++_0x55056a);}(_0xbf4b,0x16d));var _0xbbf4=function(_0x3a83c8,_0x489ffd){_0x3a83c8=_0x3a83c8-0x0;var _0x5c89db=_0xbf4b[_0x3a83c8];return _0x5c89db;};'use strict';var Sequelize=require('sequelize');module[_0xbbf4('0x0')]={'name':{'type':Sequelize[_0xbbf4('0x1')]},'description':{'type':Sequelize[_0xbbf4('0x1')]}};
\ No newline at end of file
+var _0xd225=['sequelize','exports','STRING'];(function(_0x176fd0,_0x34a835){var _0x5c3e88=function(_0x3efe47){while(--_0x3efe47){_0x176fd0['push'](_0x176fd0['shift']());}};_0x5c3e88(++_0x34a835);}(_0xd225,0x96));var _0x5d22=function(_0x1f0c58,_0x5b3705){_0x1f0c58=_0x1f0c58-0x0;var _0x32945a=_0xd225[_0x1f0c58];return _0x32945a;};'use strict';var Sequelize=require(_0x5d22('0x0'));module[_0x5d22('0x1')]={'name':{'type':Sequelize[_0x5d22('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 17f420e..50ed4de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f55=['setTags','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','count','offset','limit','apply','reject','update','destroy','then','sendStatus','error','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','type','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','getFields','findOne','ZendeskField','length','pick','getSubjects','hasOwnProperty','getDescriptions','getTags','Tag'];(function(_0x54e060,_0x4e9d1b){var _0x3c6b13=function(_0x57ee95){while(--_0x57ee95){_0x54e060['push'](_0x54e060['shift']());}};_0x3c6b13(++_0x4e9d1b);}(_0x6f55,0xa3));var _0x56f5=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0x6f55[_0x34bc30];return _0x5706de;};'use strict';var emlformat=require(_0x56f5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x56f5('0x1'));var jsonpatch=require(_0x56f5('0x2'));var rp=require('request-promise');var moment=require(_0x56f5('0x3'));var BPromise=require(_0x56f5('0x4'));var Mustache=require(_0x56f5('0x5'));var util=require(_0x56f5('0x6'));var path=require(_0x56f5('0x7'));var sox=require('sox');var csv=require(_0x56f5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x56f5('0x9'));var _=require(_0x56f5('0xa'));var squel=require(_0x56f5('0xb'));var crypto=require('crypto');var jsforce=require(_0x56f5('0xc'));var deskjs=require(_0x56f5('0xd'));var toCsv=require(_0x56f5('0x8'));var querystring=require(_0x56f5('0xe'));var Papa=require(_0x56f5('0xf'));var Redis=require(_0x56f5('0x10'));var authService=require(_0x56f5('0x11'));var qs=require(_0x56f5('0x12'));var as=require(_0x56f5('0x13'));var hardwareService=require(_0x56f5('0x14'));var logger=require(_0x56f5('0x15'))(_0x56f5('0x16'));var utils=require(_0x56f5('0x17'));var config=require(_0x56f5('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3185ef,_0x47143f){_0x47143f=_0x47143f||0xcc;return function(_0x24556f){if(_0x24556f){return _0x3185ef['sendStatus'](_0x47143f);}return _0x3185ef[_0x56f5('0x19')](_0x47143f)[_0x56f5('0x1a')]();};}function respondWithResult(_0x370836,_0x469f48){_0x469f48=_0x469f48||0xc8;return function(_0x430867){if(_0x430867){return _0x370836['status'](_0x469f48)[_0x56f5('0x1b')](_0x430867);}};}function respondWithFilteredResult(_0x3a8ffa,_0x1a2f99){return function(_0x1cd32b){if(_0x1cd32b){var _0x4032e7=typeof _0x1a2f99['offset']==='undefined'&&typeof _0x1a2f99['limit']==='undefined';var _0x5f0d0d=_0x1cd32b[_0x56f5('0x1c')];var _0x4db4b8=_0x4032e7?0x0:_0x1a2f99[_0x56f5('0x1d')];var _0x43e339=_0x4032e7?_0x1cd32b['count']:_0x1a2f99['offset']+_0x1a2f99[_0x56f5('0x1e')];var _0x43c4fd;if(_0x43e339>=_0x5f0d0d){_0x43e339=_0x5f0d0d;_0x43c4fd=0xc8;}else{_0x43c4fd=0xce;}_0x3a8ffa[_0x56f5('0x19')](_0x43c4fd);return _0x3a8ffa['set']('Content-Range',_0x4db4b8+'-'+_0x43e339+'/'+_0x5f0d0d)['json'](_0x1cd32b);}return null;};}function patchUpdates(_0x36a344){return function(_0x3a6296){try{jsonpatch[_0x56f5('0x1f')](_0x3a6296,_0x36a344,!![]);}catch(_0x3a65ca){return BPromise[_0x56f5('0x20')](_0x3a65ca);}return _0x3a6296['save']();};}function saveUpdates(_0x319c93,_0x5725e9){return function(_0x480176){if(_0x480176){return _0x480176[_0x56f5('0x21')](_0x319c93)['then'](function(_0x32cefe){return _0x32cefe;});}return null;};}function removeEntity(_0x271b89,_0x11f59a){return function(_0x5e0b6a){if(_0x5e0b6a){return _0x5e0b6a[_0x56f5('0x22')]()[_0x56f5('0x23')](function(){_0x271b89['status'](0xcc)[_0x56f5('0x1a')]();});}};}function handleEntityNotFound(_0x4da71a,_0x241ab9){return function(_0x3d9a97){if(!_0x3d9a97){_0x4da71a[_0x56f5('0x24')](0x194);}return _0x3d9a97;};}function handleError(_0x305825,_0x38a91a){_0x38a91a=_0x38a91a||0x1f4;return function(_0x515915){logger[_0x56f5('0x25')](_0x515915[_0x56f5('0x26')]);if(_0x515915[_0x56f5('0x27')]){delete _0x515915[_0x56f5('0x27')];}_0x305825[_0x56f5('0x19')](_0x38a91a)[_0x56f5('0x28')](_0x515915);};}exports[_0x56f5('0x29')]=function(_0xa125c7,_0x5b0221){var _0x571a41={},_0x3a1973={},_0x52fbef={'count':0x0,'rows':[]};var _0x250208=_[_0x56f5('0x2a')](db[_0x56f5('0x2b')][_0x56f5('0x2c')],function(_0x31b055){return{'name':_0x31b055['fieldName'],'type':_0x31b055[_0x56f5('0x2d')]['key']};});_0x3a1973[_0x56f5('0x2e')]=_[_0x56f5('0x2a')](_0x250208,_0x56f5('0x27'));_0x3a1973[_0x56f5('0x2f')]=_[_0x56f5('0x30')](_0xa125c7['query']);_0x3a1973[_0x56f5('0x31')]=_[_0x56f5('0x32')](_0x3a1973[_0x56f5('0x2e')],_0x3a1973[_0x56f5('0x2f')]);_0x571a41['attributes']=_['intersection'](_0x3a1973[_0x56f5('0x2e')],qs[_0x56f5('0x33')](_0xa125c7['query']['fields']));_0x571a41[_0x56f5('0x34')]=_0x571a41[_0x56f5('0x34')]['length']?_0x571a41[_0x56f5('0x34')]:_0x3a1973[_0x56f5('0x2e')];if(!_0xa125c7[_0x56f5('0x2f')]['hasOwnProperty'](_0x56f5('0x35'))){_0x571a41[_0x56f5('0x1e')]=qs[_0x56f5('0x1e')](_0xa125c7[_0x56f5('0x2f')][_0x56f5('0x1e')]);_0x571a41['offset']=qs[_0x56f5('0x1d')](_0xa125c7[_0x56f5('0x2f')][_0x56f5('0x1d')]);}_0x571a41[_0x56f5('0x36')]=qs['sort'](_0xa125c7[_0x56f5('0x2f')][_0x56f5('0x37')]);_0x571a41[_0x56f5('0x38')]=qs[_0x56f5('0x31')](_['pick'](_0xa125c7[_0x56f5('0x2f')],_0x3a1973[_0x56f5('0x31')]),_0x250208);if(_0xa125c7[_0x56f5('0x2f')][_0x56f5('0x39')]){_0x571a41[_0x56f5('0x38')]=_[_0x56f5('0x3a')](_0x571a41[_0x56f5('0x38')],{'$or':_['map'](_0x250208,function(_0x5aa716){if(_0x5aa716[_0x56f5('0x2d')]!==_0x56f5('0x3b')){var _0x38d4f5={};_0x38d4f5[_0x5aa716['name']]={'$like':'%'+_0xa125c7[_0x56f5('0x2f')][_0x56f5('0x39')]+'%'};return _0x38d4f5;}})});}_0x571a41=_[_0x56f5('0x3a')]({},_0x571a41,_0xa125c7[_0x56f5('0x3c')]);var _0xea78b0={'where':_0x571a41[_0x56f5('0x38')]};return db[_0x56f5('0x2b')][_0x56f5('0x1c')](_0xea78b0)[_0x56f5('0x23')](function(_0xd090df){_0x52fbef[_0x56f5('0x1c')]=_0xd090df;if(_0xa125c7['query'][_0x56f5('0x3d')]){_0x571a41[_0x56f5('0x3e')]=[{'all':!![]}];}return db[_0x56f5('0x2b')][_0x56f5('0x3f')](_0x571a41);})[_0x56f5('0x23')](function(_0x5c79e5){_0x52fbef['rows']=_0x5c79e5;return _0x52fbef;})[_0x56f5('0x23')](respondWithFilteredResult(_0x5b0221,_0x571a41))[_0x56f5('0x40')](handleError(_0x5b0221,null));};exports[_0x56f5('0x41')]=function(_0x3c38b4,_0x4b1b35){var _0x39d911={'raw':![],'where':{'id':_0x3c38b4[_0x56f5('0x42')]['id']}},_0x2eb470={};_0x2eb470['model']=_['keys'](db['ZendeskConfiguration'][_0x56f5('0x2c')]);_0x2eb470[_0x56f5('0x2f')]=_[_0x56f5('0x30')](_0x3c38b4[_0x56f5('0x2f')]);_0x2eb470[_0x56f5('0x31')]=_[_0x56f5('0x32')](_0x2eb470[_0x56f5('0x2e')],_0x2eb470[_0x56f5('0x2f')]);_0x39d911[_0x56f5('0x34')]=_['intersection'](_0x2eb470[_0x56f5('0x2e')],qs[_0x56f5('0x33')](_0x3c38b4['query']['fields']));_0x39d911[_0x56f5('0x34')]=_0x39d911['attributes']['length']?_0x39d911[_0x56f5('0x34')]:_0x2eb470[_0x56f5('0x2e')];if(_0x3c38b4[_0x56f5('0x2f')][_0x56f5('0x3d')]){_0x39d911[_0x56f5('0x3e')]=[{'all':!![]}];}_0x39d911=_[_0x56f5('0x3a')]({},_0x39d911,_0x3c38b4[_0x56f5('0x3c')]);return db['ZendeskConfiguration'][_0x56f5('0x43')](_0x39d911)[_0x56f5('0x23')](handleEntityNotFound(_0x4b1b35,null))['then'](respondWithResult(_0x4b1b35,null))[_0x56f5('0x40')](handleError(_0x4b1b35,null));};exports[_0x56f5('0x44')]=function(_0x8da87c,_0x107762){return db[_0x56f5('0x2b')]['create'](_0x8da87c['body'],{})['then'](respondWithResult(_0x107762,0xc9))['catch'](handleError(_0x107762,null));};exports[_0x56f5('0x21')]=function(_0x521fa9,_0x27b7f1){if(_0x521fa9[_0x56f5('0x45')]['id']){delete _0x521fa9[_0x56f5('0x45')]['id'];}return db[_0x56f5('0x2b')][_0x56f5('0x43')]({'where':{'id':_0x521fa9[_0x56f5('0x42')]['id']}})[_0x56f5('0x23')](handleEntityNotFound(_0x27b7f1,null))[_0x56f5('0x23')](saveUpdates(_0x521fa9[_0x56f5('0x45')],null))[_0x56f5('0x23')](respondWithResult(_0x27b7f1,null))[_0x56f5('0x40')](handleError(_0x27b7f1,null));};exports['destroy']=function(_0x1097d0,_0x24ae44){return db[_0x56f5('0x2b')][_0x56f5('0x43')]({'where':{'id':_0x1097d0[_0x56f5('0x42')]['id']}})[_0x56f5('0x23')](handleEntityNotFound(_0x24ae44,null))[_0x56f5('0x23')](removeEntity(_0x24ae44,null))[_0x56f5('0x40')](handleError(_0x24ae44,null));};exports[_0x56f5('0x46')]=function(_0x3918dc,_0x1c50ef,_0x2ae9f0){var _0x2a1ec3={};var _0x2eb943={};var _0x1088ec;var _0x686923;return db['ZendeskConfiguration'][_0x56f5('0x47')]({'where':{'id':_0x3918dc[_0x56f5('0x42')]['id']}})[_0x56f5('0x23')](handleEntityNotFound(_0x1c50ef,null))[_0x56f5('0x23')](function(_0x278117){if(_0x278117){_0x1088ec=_0x278117;_0x2eb943[_0x56f5('0x2e')]=_[_0x56f5('0x30')](db[_0x56f5('0x48')][_0x56f5('0x2c')]);_0x2eb943[_0x56f5('0x2f')]=_[_0x56f5('0x30')](_0x3918dc[_0x56f5('0x2f')]);_0x2eb943[_0x56f5('0x31')]=_[_0x56f5('0x32')](_0x2eb943[_0x56f5('0x2e')],_0x2eb943[_0x56f5('0x2f')]);_0x2a1ec3[_0x56f5('0x34')]=_[_0x56f5('0x32')](_0x2eb943[_0x56f5('0x2e')],qs[_0x56f5('0x33')](_0x3918dc['query'][_0x56f5('0x33')]));_0x2a1ec3[_0x56f5('0x34')]=_0x2a1ec3[_0x56f5('0x34')][_0x56f5('0x49')]?_0x2a1ec3[_0x56f5('0x34')]:_0x2eb943[_0x56f5('0x2e')];_0x2a1ec3[_0x56f5('0x36')]=qs[_0x56f5('0x37')](_0x3918dc['query'][_0x56f5('0x37')]);_0x2a1ec3[_0x56f5('0x38')]=qs[_0x56f5('0x31')](_[_0x56f5('0x4a')](_0x3918dc[_0x56f5('0x2f')],_0x2eb943[_0x56f5('0x31')]));if(_0x3918dc[_0x56f5('0x2f')][_0x56f5('0x39')]){_0x2a1ec3[_0x56f5('0x38')]=_[_0x56f5('0x3a')](_0x2a1ec3[_0x56f5('0x38')],{'$or':_[_0x56f5('0x2a')](_0x2a1ec3[_0x56f5('0x34')],function(_0x26c2a4){var _0x3fdfb8={};_0x3fdfb8[_0x26c2a4]={'$like':'%'+_0x3918dc['query'][_0x56f5('0x39')]+'%'};return _0x3fdfb8;})});}_0x2a1ec3=_[_0x56f5('0x3a')]({},_0x2a1ec3,_0x3918dc['options']);return _0x1088ec[_0x56f5('0x46')](_0x2a1ec3);}})[_0x56f5('0x23')](function(_0x274dd7){if(_0x274dd7){_0x686923=_0x274dd7[_0x56f5('0x49')];if(!_0x3918dc[_0x56f5('0x2f')]['hasOwnProperty']('nolimit')){_0x2a1ec3['limit']=qs[_0x56f5('0x1e')](_0x3918dc[_0x56f5('0x2f')][_0x56f5('0x1e')]);_0x2a1ec3[_0x56f5('0x1d')]=qs[_0x56f5('0x1d')](_0x3918dc[_0x56f5('0x2f')][_0x56f5('0x1d')]);}return _0x1088ec[_0x56f5('0x46')](_0x2a1ec3);}})[_0x56f5('0x23')](function(_0x28f36b){if(_0x28f36b){return _0x28f36b?{'count':_0x686923,'rows':_0x28f36b}:null;}})[_0x56f5('0x23')](respondWithResult(_0x1c50ef,null))[_0x56f5('0x40')](handleError(_0x1c50ef,null));};exports['getSubjects']=function(_0x23a6cb,_0x58d58c,_0x3b4632){var _0x17eef3={};var _0x371dd2={};var _0x6ed033;var _0x2e5b2b;return db[_0x56f5('0x2b')][_0x56f5('0x47')]({'where':{'id':_0x23a6cb[_0x56f5('0x42')]['id']}})['then'](handleEntityNotFound(_0x58d58c,null))[_0x56f5('0x23')](function(_0x57a3a8){if(_0x57a3a8){_0x6ed033=_0x57a3a8;_0x371dd2[_0x56f5('0x2e')]=_[_0x56f5('0x30')](db[_0x56f5('0x48')][_0x56f5('0x2c')]);_0x371dd2[_0x56f5('0x2f')]=_[_0x56f5('0x30')](_0x23a6cb[_0x56f5('0x2f')]);_0x371dd2[_0x56f5('0x31')]=_[_0x56f5('0x32')](_0x371dd2[_0x56f5('0x2e')],_0x371dd2[_0x56f5('0x2f')]);_0x17eef3[_0x56f5('0x34')]=_['intersection'](_0x371dd2[_0x56f5('0x2e')],qs['fields'](_0x23a6cb[_0x56f5('0x2f')][_0x56f5('0x33')]));_0x17eef3[_0x56f5('0x34')]=_0x17eef3[_0x56f5('0x34')][_0x56f5('0x49')]?_0x17eef3[_0x56f5('0x34')]:_0x371dd2[_0x56f5('0x2e')];_0x17eef3[_0x56f5('0x36')]=qs[_0x56f5('0x37')](_0x23a6cb['query'][_0x56f5('0x37')]);_0x17eef3[_0x56f5('0x38')]=qs['filters'](_[_0x56f5('0x4a')](_0x23a6cb['query'],_0x371dd2['filters']));if(_0x23a6cb[_0x56f5('0x2f')][_0x56f5('0x39')]){_0x17eef3['where']=_[_0x56f5('0x3a')](_0x17eef3[_0x56f5('0x38')],{'$or':_['map'](_0x17eef3[_0x56f5('0x34')],function(_0x58913a){var _0xbb9d29={};_0xbb9d29[_0x58913a]={'$like':'%'+_0x23a6cb[_0x56f5('0x2f')][_0x56f5('0x39')]+'%'};return _0xbb9d29;})});}_0x17eef3=_['merge']({},_0x17eef3,_0x23a6cb[_0x56f5('0x3c')]);return _0x6ed033[_0x56f5('0x4b')](_0x17eef3);}})[_0x56f5('0x23')](function(_0x53acff){if(_0x53acff){_0x2e5b2b=_0x53acff['length'];if(!_0x23a6cb['query'][_0x56f5('0x4c')]('nolimit')){_0x17eef3[_0x56f5('0x1e')]=qs['limit'](_0x23a6cb['query'][_0x56f5('0x1e')]);_0x17eef3[_0x56f5('0x1d')]=qs[_0x56f5('0x1d')](_0x23a6cb[_0x56f5('0x2f')][_0x56f5('0x1d')]);}return _0x6ed033[_0x56f5('0x4b')](_0x17eef3);}})[_0x56f5('0x23')](function(_0x2b14ce){if(_0x2b14ce){return _0x2b14ce?{'count':_0x2e5b2b,'rows':_0x2b14ce}:null;}})[_0x56f5('0x23')](respondWithResult(_0x58d58c,null))[_0x56f5('0x40')](handleError(_0x58d58c,null));};exports[_0x56f5('0x4d')]=function(_0x1a7f10,_0x364783,_0x17a382){var _0x290c8d={};var _0xeaeba6={};var _0x7fbb92;var _0x13cd08;return db['ZendeskConfiguration'][_0x56f5('0x47')]({'where':{'id':_0x1a7f10[_0x56f5('0x42')]['id']}})['then'](handleEntityNotFound(_0x364783,null))[_0x56f5('0x23')](function(_0x28042f){if(_0x28042f){_0x7fbb92=_0x28042f;_0xeaeba6[_0x56f5('0x2e')]=_[_0x56f5('0x30')](db[_0x56f5('0x48')][_0x56f5('0x2c')]);_0xeaeba6['query']=_[_0x56f5('0x30')](_0x1a7f10[_0x56f5('0x2f')]);_0xeaeba6[_0x56f5('0x31')]=_[_0x56f5('0x32')](_0xeaeba6['model'],_0xeaeba6[_0x56f5('0x2f')]);_0x290c8d[_0x56f5('0x34')]=_['intersection'](_0xeaeba6[_0x56f5('0x2e')],qs['fields'](_0x1a7f10[_0x56f5('0x2f')][_0x56f5('0x33')]));_0x290c8d[_0x56f5('0x34')]=_0x290c8d['attributes'][_0x56f5('0x49')]?_0x290c8d[_0x56f5('0x34')]:_0xeaeba6[_0x56f5('0x2e')];_0x290c8d[_0x56f5('0x36')]=qs[_0x56f5('0x37')](_0x1a7f10[_0x56f5('0x2f')][_0x56f5('0x37')]);_0x290c8d[_0x56f5('0x38')]=qs[_0x56f5('0x31')](_[_0x56f5('0x4a')](_0x1a7f10[_0x56f5('0x2f')],_0xeaeba6['filters']));if(_0x1a7f10[_0x56f5('0x2f')][_0x56f5('0x39')]){_0x290c8d['where']=_[_0x56f5('0x3a')](_0x290c8d['where'],{'$or':_[_0x56f5('0x2a')](_0x290c8d[_0x56f5('0x34')],function(_0x5dda6d){var _0x18cf52={};_0x18cf52[_0x5dda6d]={'$like':'%'+_0x1a7f10[_0x56f5('0x2f')][_0x56f5('0x39')]+'%'};return _0x18cf52;})});}_0x290c8d=_[_0x56f5('0x3a')]({},_0x290c8d,_0x1a7f10[_0x56f5('0x3c')]);return _0x7fbb92[_0x56f5('0x4d')](_0x290c8d);}})['then'](function(_0x2a3431){if(_0x2a3431){_0x13cd08=_0x2a3431[_0x56f5('0x49')];if(!_0x1a7f10[_0x56f5('0x2f')][_0x56f5('0x4c')](_0x56f5('0x35'))){_0x290c8d[_0x56f5('0x1e')]=qs[_0x56f5('0x1e')](_0x1a7f10['query'][_0x56f5('0x1e')]);_0x290c8d[_0x56f5('0x1d')]=qs[_0x56f5('0x1d')](_0x1a7f10['query'][_0x56f5('0x1d')]);}return _0x7fbb92[_0x56f5('0x4d')](_0x290c8d);}})[_0x56f5('0x23')](function(_0x2848e9){if(_0x2848e9){return _0x2848e9?{'count':_0x13cd08,'rows':_0x2848e9}:null;}})[_0x56f5('0x23')](respondWithResult(_0x364783,null))[_0x56f5('0x40')](handleError(_0x364783,null));};exports[_0x56f5('0x4e')]=function(_0x3b1bd3,_0x416f40,_0xcd622e){var _0x52e3f4={};var _0x418ae0={};var _0x1766a1;var _0xe06d26;return db[_0x56f5('0x2b')][_0x56f5('0x47')]({'where':{'id':_0x3b1bd3[_0x56f5('0x42')]['id']}})[_0x56f5('0x23')](handleEntityNotFound(_0x416f40,null))[_0x56f5('0x23')](function(_0x5abc1c){if(_0x5abc1c){_0x1766a1=_0x5abc1c;_0x418ae0[_0x56f5('0x2e')]=_[_0x56f5('0x30')](db[_0x56f5('0x4f')][_0x56f5('0x2c')]);_0x418ae0[_0x56f5('0x2f')]=_[_0x56f5('0x30')](_0x3b1bd3[_0x56f5('0x2f')]);_0x418ae0[_0x56f5('0x31')]=_[_0x56f5('0x32')](_0x418ae0[_0x56f5('0x2e')],_0x418ae0['query']);_0x52e3f4['attributes']=_['intersection'](_0x418ae0['model'],qs[_0x56f5('0x33')](_0x3b1bd3[_0x56f5('0x2f')][_0x56f5('0x33')]));_0x52e3f4[_0x56f5('0x34')]=_0x52e3f4[_0x56f5('0x34')][_0x56f5('0x49')]?_0x52e3f4[_0x56f5('0x34')]:_0x418ae0['model'];_0x52e3f4['order']=qs[_0x56f5('0x37')](_0x3b1bd3[_0x56f5('0x2f')][_0x56f5('0x37')]);_0x52e3f4['where']=qs[_0x56f5('0x31')](_['pick'](_0x3b1bd3[_0x56f5('0x2f')],_0x418ae0[_0x56f5('0x31')]));if(_0x3b1bd3[_0x56f5('0x2f')][_0x56f5('0x39')]){_0x52e3f4[_0x56f5('0x38')]=_['merge'](_0x52e3f4[_0x56f5('0x38')],{'$or':_[_0x56f5('0x2a')](_0x52e3f4[_0x56f5('0x34')],function(_0x4cf689){var _0x570588={};_0x570588[_0x4cf689]={'$like':'%'+_0x3b1bd3[_0x56f5('0x2f')][_0x56f5('0x39')]+'%'};return _0x570588;})});}_0x52e3f4=_[_0x56f5('0x3a')]({},_0x52e3f4,_0x3b1bd3[_0x56f5('0x3c')]);return _0x1766a1[_0x56f5('0x4e')](_0x52e3f4);}})[_0x56f5('0x23')](function(_0x33c08a){if(_0x33c08a){_0xe06d26=_0x33c08a[_0x56f5('0x49')];if(!_0x3b1bd3[_0x56f5('0x2f')][_0x56f5('0x4c')](_0x56f5('0x35'))){_0x52e3f4['limit']=qs[_0x56f5('0x1e')](_0x3b1bd3[_0x56f5('0x2f')][_0x56f5('0x1e')]);_0x52e3f4[_0x56f5('0x1d')]=qs['offset'](_0x3b1bd3[_0x56f5('0x2f')][_0x56f5('0x1d')]);}return _0x1766a1[_0x56f5('0x4e')](_0x52e3f4);}})['then'](function(_0x465463){if(_0x465463){return _0x465463?{'count':_0xe06d26,'rows':_0x465463}:null;}})[_0x56f5('0x23')](respondWithResult(_0x416f40,null))['catch'](handleError(_0x416f40,null));};exports[_0x56f5('0x50')]=function(_0x16772c,_0x4c45a6,_0x4b3e84){if(_0x16772c['body']['id']){delete _0x16772c[_0x56f5('0x45')]['id'];}return db[_0x56f5('0x2b')]['findOne']({'where':{'id':_0x16772c[_0x56f5('0x42')]['id']}})['then'](handleEntityNotFound(_0x4c45a6,null))[_0x56f5('0x23')](function(_0x44d90f){if(_0x44d90f){return _0x44d90f[_0x56f5('0x50')](_0x16772c[_0x56f5('0x45')]['ids']||[]);}return null;})[_0x56f5('0x23')](respondWithResult(_0x4c45a6,null))[_0x56f5('0x40')](handleError(_0x4c45a6,null));};
\ No newline at end of file
+var _0x60a1=['body','update','findOne','ZendeskField','nolimit','getFields','getSubjects','getDescriptions','Tag','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','then','destroy','sendStatus','error','stack','name','map','ZendeskConfiguration','rawAttributes','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','find','create'];(function(_0x243e58,_0x2cdffd){var _0x3925f5=function(_0x561963){while(--_0x561963){_0x243e58['push'](_0x243e58['shift']());}};_0x3925f5(++_0x2cdffd);}(_0x60a1,0x102));var _0x160a=function(_0x3d153d,_0x3383ba){_0x3d153d=_0x3d153d-0x0;var _0x3ab623=_0x60a1[_0x3d153d];return _0x3ab623;};'use strict';var emlformat=require(_0x160a('0x0'));var rimraf=require(_0x160a('0x1'));var zipdir=require(_0x160a('0x2'));var jsonpatch=require(_0x160a('0x3'));var rp=require(_0x160a('0x4'));var moment=require(_0x160a('0x5'));var BPromise=require(_0x160a('0x6'));var Mustache=require(_0x160a('0x7'));var util=require('util');var path=require(_0x160a('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x160a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x160a('0xa'));var squel=require(_0x160a('0xb'));var crypto=require(_0x160a('0xc'));var jsforce=require(_0x160a('0xd'));var deskjs=require(_0x160a('0xe'));var toCsv=require('to-csv');var querystring=require(_0x160a('0xf'));var Papa=require(_0x160a('0x10'));var Redis=require(_0x160a('0x11'));var authService=require(_0x160a('0x12'));var qs=require(_0x160a('0x13'));var as=require(_0x160a('0x14'));var hardwareService=require(_0x160a('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x160a('0x16'));var config=require(_0x160a('0x17'));var licenseUtil=require(_0x160a('0x18'));var db=require(_0x160a('0x19'))['db'];function respondWithStatusCode(_0x36c4c1,_0x4d1362){_0x4d1362=_0x4d1362||0xcc;return function(_0x4de4f8){if(_0x4de4f8){return _0x36c4c1['sendStatus'](_0x4d1362);}return _0x36c4c1[_0x160a('0x1a')](_0x4d1362)[_0x160a('0x1b')]();};}function respondWithResult(_0x3cae27,_0x1285d0){_0x1285d0=_0x1285d0||0xc8;return function(_0x5d5be2){if(_0x5d5be2){return _0x3cae27[_0x160a('0x1a')](_0x1285d0)[_0x160a('0x1c')](_0x5d5be2);}};}function respondWithFilteredResult(_0x125756,_0x1b552e){return function(_0x310e02){if(_0x310e02){var _0x3d99ef=typeof _0x1b552e[_0x160a('0x1d')]===_0x160a('0x1e')&&typeof _0x1b552e[_0x160a('0x1f')]===_0x160a('0x1e');var _0xb49fb7=_0x310e02[_0x160a('0x20')];var _0x19661c=_0x3d99ef?0x0:_0x1b552e['offset'];var _0x29976a=_0x3d99ef?_0x310e02['count']:_0x1b552e[_0x160a('0x1d')]+_0x1b552e[_0x160a('0x1f')];var _0x50b4cc;if(_0x29976a>=_0xb49fb7){_0x29976a=_0xb49fb7;_0x50b4cc=0xc8;}else{_0x50b4cc=0xce;}_0x125756[_0x160a('0x1a')](_0x50b4cc);return _0x125756[_0x160a('0x21')]('Content-Range',_0x19661c+'-'+_0x29976a+'/'+_0xb49fb7)[_0x160a('0x1c')](_0x310e02);}return null;};}function patchUpdates(_0x1162f4){return function(_0x2b9f29){try{jsonpatch[_0x160a('0x22')](_0x2b9f29,_0x1162f4,!![]);}catch(_0x1922de){return BPromise['reject'](_0x1922de);}return _0x2b9f29['save']();};}function saveUpdates(_0x4bbc58,_0x20fd1e){return function(_0x357954){if(_0x357954){return _0x357954['update'](_0x4bbc58)[_0x160a('0x23')](function(_0x52ae61){return _0x52ae61;});}return null;};}function removeEntity(_0x16b4df,_0x289eb1){return function(_0x207cf5){if(_0x207cf5){return _0x207cf5[_0x160a('0x24')]()['then'](function(){_0x16b4df[_0x160a('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xf7bc80,_0x3de765){return function(_0x1a1dee){if(!_0x1a1dee){_0xf7bc80[_0x160a('0x25')](0x194);}return _0x1a1dee;};}function handleError(_0x3a0a8e,_0x1ca89f){_0x1ca89f=_0x1ca89f||0x1f4;return function(_0x2d3786){logger[_0x160a('0x26')](_0x2d3786[_0x160a('0x27')]);if(_0x2d3786[_0x160a('0x28')]){delete _0x2d3786[_0x160a('0x28')];}_0x3a0a8e[_0x160a('0x1a')](_0x1ca89f)['send'](_0x2d3786);};}exports['index']=function(_0x16c2dd,_0x332b81){var _0x769963={},_0x1108b6={},_0x4af258={'count':0x0,'rows':[]};var _0x346358=_[_0x160a('0x29')](db[_0x160a('0x2a')][_0x160a('0x2b')],function(_0x54d7d0){return{'name':_0x54d7d0[_0x160a('0x2c')],'type':_0x54d7d0['type']['key']};});_0x1108b6[_0x160a('0x2d')]=_[_0x160a('0x29')](_0x346358,_0x160a('0x28'));_0x1108b6[_0x160a('0x2e')]=_['keys'](_0x16c2dd['query']);_0x1108b6[_0x160a('0x2f')]=_['intersection'](_0x1108b6[_0x160a('0x2d')],_0x1108b6['query']);_0x769963[_0x160a('0x30')]=_[_0x160a('0x31')](_0x1108b6[_0x160a('0x2d')],qs[_0x160a('0x32')](_0x16c2dd[_0x160a('0x2e')][_0x160a('0x32')]));_0x769963[_0x160a('0x30')]=_0x769963[_0x160a('0x30')][_0x160a('0x33')]?_0x769963[_0x160a('0x30')]:_0x1108b6[_0x160a('0x2d')];if(!_0x16c2dd[_0x160a('0x2e')][_0x160a('0x34')]('nolimit')){_0x769963[_0x160a('0x1f')]=qs[_0x160a('0x1f')](_0x16c2dd[_0x160a('0x2e')][_0x160a('0x1f')]);_0x769963[_0x160a('0x1d')]=qs['offset'](_0x16c2dd['query'][_0x160a('0x1d')]);}_0x769963[_0x160a('0x35')]=qs['sort'](_0x16c2dd[_0x160a('0x2e')][_0x160a('0x36')]);_0x769963[_0x160a('0x37')]=qs[_0x160a('0x2f')](_[_0x160a('0x38')](_0x16c2dd[_0x160a('0x2e')],_0x1108b6['filters']),_0x346358);if(_0x16c2dd[_0x160a('0x2e')][_0x160a('0x39')]){_0x769963['where']=_[_0x160a('0x3a')](_0x769963['where'],{'$or':_[_0x160a('0x29')](_0x346358,function(_0x2452fc){if(_0x2452fc['type']!==_0x160a('0x3b')){var _0x22d663={};_0x22d663[_0x2452fc[_0x160a('0x28')]]={'$like':'%'+_0x16c2dd[_0x160a('0x2e')][_0x160a('0x39')]+'%'};return _0x22d663;}})});}_0x769963=_[_0x160a('0x3a')]({},_0x769963,_0x16c2dd[_0x160a('0x3c')]);var _0x1e0b2e={'where':_0x769963[_0x160a('0x37')]};return db[_0x160a('0x2a')][_0x160a('0x20')](_0x1e0b2e)[_0x160a('0x23')](function(_0xfc9978){_0x4af258['count']=_0xfc9978;if(_0x16c2dd[_0x160a('0x2e')]['includeAll']){_0x769963[_0x160a('0x3d')]=[{'all':!![]}];}return db[_0x160a('0x2a')][_0x160a('0x3e')](_0x769963);})[_0x160a('0x23')](function(_0x4d554b){_0x4af258[_0x160a('0x3f')]=_0x4d554b;return _0x4af258;})['then'](respondWithFilteredResult(_0x332b81,_0x769963))[_0x160a('0x40')](handleError(_0x332b81,null));};exports[_0x160a('0x41')]=function(_0xbae539,_0x3d7d21){var _0x9c06a={'raw':![],'where':{'id':_0xbae539[_0x160a('0x42')]['id']}},_0x5a2a40={};_0x5a2a40[_0x160a('0x2d')]=_[_0x160a('0x43')](db['ZendeskConfiguration'][_0x160a('0x2b')]);_0x5a2a40[_0x160a('0x2e')]=_[_0x160a('0x43')](_0xbae539['query']);_0x5a2a40[_0x160a('0x2f')]=_['intersection'](_0x5a2a40[_0x160a('0x2d')],_0x5a2a40[_0x160a('0x2e')]);_0x9c06a[_0x160a('0x30')]=_[_0x160a('0x31')](_0x5a2a40[_0x160a('0x2d')],qs[_0x160a('0x32')](_0xbae539[_0x160a('0x2e')][_0x160a('0x32')]));_0x9c06a[_0x160a('0x30')]=_0x9c06a[_0x160a('0x30')]['length']?_0x9c06a[_0x160a('0x30')]:_0x5a2a40[_0x160a('0x2d')];if(_0xbae539[_0x160a('0x2e')]['includeAll']){_0x9c06a[_0x160a('0x3d')]=[{'all':!![]}];}_0x9c06a=_[_0x160a('0x3a')]({},_0x9c06a,_0xbae539[_0x160a('0x3c')]);return db[_0x160a('0x2a')][_0x160a('0x44')](_0x9c06a)['then'](handleEntityNotFound(_0x3d7d21,null))['then'](respondWithResult(_0x3d7d21,null))[_0x160a('0x40')](handleError(_0x3d7d21,null));};exports[_0x160a('0x45')]=function(_0x408d22,_0x1a3ce1){return db[_0x160a('0x2a')]['create'](_0x408d22[_0x160a('0x46')],{})[_0x160a('0x23')](respondWithResult(_0x1a3ce1,0xc9))[_0x160a('0x40')](handleError(_0x1a3ce1,null));};exports[_0x160a('0x47')]=function(_0x3bb4f2,_0x388bbc){if(_0x3bb4f2[_0x160a('0x46')]['id']){delete _0x3bb4f2['body']['id'];}return db[_0x160a('0x2a')][_0x160a('0x44')]({'where':{'id':_0x3bb4f2[_0x160a('0x42')]['id']}})[_0x160a('0x23')](handleEntityNotFound(_0x388bbc,null))['then'](saveUpdates(_0x3bb4f2[_0x160a('0x46')],null))[_0x160a('0x23')](respondWithResult(_0x388bbc,null))[_0x160a('0x40')](handleError(_0x388bbc,null));};exports[_0x160a('0x24')]=function(_0x47e85b,_0x2c9e42){return db[_0x160a('0x2a')][_0x160a('0x44')]({'where':{'id':_0x47e85b[_0x160a('0x42')]['id']}})['then'](handleEntityNotFound(_0x2c9e42,null))['then'](removeEntity(_0x2c9e42,null))[_0x160a('0x40')](handleError(_0x2c9e42,null));};exports['getFields']=function(_0x40ed03,_0x50f844,_0x1f4b77){var _0x21a7f3={};var _0x4a77f1={};var _0x4ecbe9;var _0x503fc4;return db[_0x160a('0x2a')][_0x160a('0x48')]({'where':{'id':_0x40ed03[_0x160a('0x42')]['id']}})['then'](handleEntityNotFound(_0x50f844,null))['then'](function(_0x46a628){if(_0x46a628){_0x4ecbe9=_0x46a628;_0x4a77f1['model']=_[_0x160a('0x43')](db[_0x160a('0x49')][_0x160a('0x2b')]);_0x4a77f1[_0x160a('0x2e')]=_[_0x160a('0x43')](_0x40ed03[_0x160a('0x2e')]);_0x4a77f1[_0x160a('0x2f')]=_[_0x160a('0x31')](_0x4a77f1[_0x160a('0x2d')],_0x4a77f1[_0x160a('0x2e')]);_0x21a7f3[_0x160a('0x30')]=_['intersection'](_0x4a77f1[_0x160a('0x2d')],qs['fields'](_0x40ed03['query'][_0x160a('0x32')]));_0x21a7f3[_0x160a('0x30')]=_0x21a7f3[_0x160a('0x30')][_0x160a('0x33')]?_0x21a7f3['attributes']:_0x4a77f1['model'];_0x21a7f3[_0x160a('0x35')]=qs[_0x160a('0x36')](_0x40ed03[_0x160a('0x2e')][_0x160a('0x36')]);_0x21a7f3[_0x160a('0x37')]=qs[_0x160a('0x2f')](_['pick'](_0x40ed03[_0x160a('0x2e')],_0x4a77f1[_0x160a('0x2f')]));if(_0x40ed03[_0x160a('0x2e')][_0x160a('0x39')]){_0x21a7f3[_0x160a('0x37')]=_[_0x160a('0x3a')](_0x21a7f3[_0x160a('0x37')],{'$or':_['map'](_0x21a7f3[_0x160a('0x30')],function(_0x3525ea){var _0x4ad362={};_0x4ad362[_0x3525ea]={'$like':'%'+_0x40ed03['query'][_0x160a('0x39')]+'%'};return _0x4ad362;})});}_0x21a7f3=_[_0x160a('0x3a')]({},_0x21a7f3,_0x40ed03[_0x160a('0x3c')]);return _0x4ecbe9['getFields'](_0x21a7f3);}})[_0x160a('0x23')](function(_0x502acb){if(_0x502acb){_0x503fc4=_0x502acb[_0x160a('0x33')];if(!_0x40ed03[_0x160a('0x2e')][_0x160a('0x34')](_0x160a('0x4a'))){_0x21a7f3[_0x160a('0x1f')]=qs[_0x160a('0x1f')](_0x40ed03[_0x160a('0x2e')][_0x160a('0x1f')]);_0x21a7f3[_0x160a('0x1d')]=qs[_0x160a('0x1d')](_0x40ed03[_0x160a('0x2e')][_0x160a('0x1d')]);}return _0x4ecbe9[_0x160a('0x4b')](_0x21a7f3);}})[_0x160a('0x23')](function(_0x6c91f3){if(_0x6c91f3){return _0x6c91f3?{'count':_0x503fc4,'rows':_0x6c91f3}:null;}})[_0x160a('0x23')](respondWithResult(_0x50f844,null))['catch'](handleError(_0x50f844,null));};exports['getSubjects']=function(_0x1fcb94,_0x405287,_0xa58b93){var _0x5d7d1f={};var _0x534bcd={};var _0x3ba85a;var _0x48ba24;return db[_0x160a('0x2a')][_0x160a('0x48')]({'where':{'id':_0x1fcb94[_0x160a('0x42')]['id']}})[_0x160a('0x23')](handleEntityNotFound(_0x405287,null))[_0x160a('0x23')](function(_0x29a3d3){if(_0x29a3d3){_0x3ba85a=_0x29a3d3;_0x534bcd['model']=_[_0x160a('0x43')](db['ZendeskField'][_0x160a('0x2b')]);_0x534bcd[_0x160a('0x2e')]=_[_0x160a('0x43')](_0x1fcb94[_0x160a('0x2e')]);_0x534bcd['filters']=_[_0x160a('0x31')](_0x534bcd[_0x160a('0x2d')],_0x534bcd[_0x160a('0x2e')]);_0x5d7d1f[_0x160a('0x30')]=_[_0x160a('0x31')](_0x534bcd['model'],qs[_0x160a('0x32')](_0x1fcb94[_0x160a('0x2e')]['fields']));_0x5d7d1f[_0x160a('0x30')]=_0x5d7d1f[_0x160a('0x30')][_0x160a('0x33')]?_0x5d7d1f[_0x160a('0x30')]:_0x534bcd[_0x160a('0x2d')];_0x5d7d1f[_0x160a('0x35')]=qs[_0x160a('0x36')](_0x1fcb94[_0x160a('0x2e')][_0x160a('0x36')]);_0x5d7d1f[_0x160a('0x37')]=qs[_0x160a('0x2f')](_[_0x160a('0x38')](_0x1fcb94[_0x160a('0x2e')],_0x534bcd[_0x160a('0x2f')]));if(_0x1fcb94[_0x160a('0x2e')][_0x160a('0x39')]){_0x5d7d1f[_0x160a('0x37')]=_[_0x160a('0x3a')](_0x5d7d1f['where'],{'$or':_[_0x160a('0x29')](_0x5d7d1f[_0x160a('0x30')],function(_0x183b54){var _0x5840ba={};_0x5840ba[_0x183b54]={'$like':'%'+_0x1fcb94[_0x160a('0x2e')][_0x160a('0x39')]+'%'};return _0x5840ba;})});}_0x5d7d1f=_['merge']({},_0x5d7d1f,_0x1fcb94['options']);return _0x3ba85a['getSubjects'](_0x5d7d1f);}})['then'](function(_0x4139a2){if(_0x4139a2){_0x48ba24=_0x4139a2[_0x160a('0x33')];if(!_0x1fcb94[_0x160a('0x2e')][_0x160a('0x34')](_0x160a('0x4a'))){_0x5d7d1f[_0x160a('0x1f')]=qs['limit'](_0x1fcb94[_0x160a('0x2e')][_0x160a('0x1f')]);_0x5d7d1f[_0x160a('0x1d')]=qs[_0x160a('0x1d')](_0x1fcb94['query'][_0x160a('0x1d')]);}return _0x3ba85a[_0x160a('0x4c')](_0x5d7d1f);}})['then'](function(_0x22d31c){if(_0x22d31c){return _0x22d31c?{'count':_0x48ba24,'rows':_0x22d31c}:null;}})[_0x160a('0x23')](respondWithResult(_0x405287,null))['catch'](handleError(_0x405287,null));};exports[_0x160a('0x4d')]=function(_0x38223e,_0xabc3bd,_0x1a2081){var _0x48c0e7={};var _0x4b833f={};var _0x103982;var _0x3c1583;return db[_0x160a('0x2a')][_0x160a('0x48')]({'where':{'id':_0x38223e[_0x160a('0x42')]['id']}})[_0x160a('0x23')](handleEntityNotFound(_0xabc3bd,null))[_0x160a('0x23')](function(_0x6812f7){if(_0x6812f7){_0x103982=_0x6812f7;_0x4b833f[_0x160a('0x2d')]=_['keys'](db['ZendeskField'][_0x160a('0x2b')]);_0x4b833f[_0x160a('0x2e')]=_['keys'](_0x38223e['query']);_0x4b833f[_0x160a('0x2f')]=_[_0x160a('0x31')](_0x4b833f[_0x160a('0x2d')],_0x4b833f[_0x160a('0x2e')]);_0x48c0e7['attributes']=_[_0x160a('0x31')](_0x4b833f[_0x160a('0x2d')],qs[_0x160a('0x32')](_0x38223e[_0x160a('0x2e')][_0x160a('0x32')]));_0x48c0e7[_0x160a('0x30')]=_0x48c0e7[_0x160a('0x30')]['length']?_0x48c0e7[_0x160a('0x30')]:_0x4b833f[_0x160a('0x2d')];_0x48c0e7[_0x160a('0x35')]=qs[_0x160a('0x36')](_0x38223e['query'][_0x160a('0x36')]);_0x48c0e7[_0x160a('0x37')]=qs[_0x160a('0x2f')](_[_0x160a('0x38')](_0x38223e[_0x160a('0x2e')],_0x4b833f[_0x160a('0x2f')]));if(_0x38223e[_0x160a('0x2e')][_0x160a('0x39')]){_0x48c0e7[_0x160a('0x37')]=_['merge'](_0x48c0e7['where'],{'$or':_[_0x160a('0x29')](_0x48c0e7[_0x160a('0x30')],function(_0x39dcb4){var _0x3352ad={};_0x3352ad[_0x39dcb4]={'$like':'%'+_0x38223e[_0x160a('0x2e')][_0x160a('0x39')]+'%'};return _0x3352ad;})});}_0x48c0e7=_[_0x160a('0x3a')]({},_0x48c0e7,_0x38223e[_0x160a('0x3c')]);return _0x103982[_0x160a('0x4d')](_0x48c0e7);}})['then'](function(_0x3f5b44){if(_0x3f5b44){_0x3c1583=_0x3f5b44[_0x160a('0x33')];if(!_0x38223e['query']['hasOwnProperty'](_0x160a('0x4a'))){_0x48c0e7[_0x160a('0x1f')]=qs['limit'](_0x38223e[_0x160a('0x2e')]['limit']);_0x48c0e7['offset']=qs['offset'](_0x38223e[_0x160a('0x2e')][_0x160a('0x1d')]);}return _0x103982[_0x160a('0x4d')](_0x48c0e7);}})[_0x160a('0x23')](function(_0x48aed2){if(_0x48aed2){return _0x48aed2?{'count':_0x3c1583,'rows':_0x48aed2}:null;}})[_0x160a('0x23')](respondWithResult(_0xabc3bd,null))[_0x160a('0x40')](handleError(_0xabc3bd,null));};exports['getTags']=function(_0x34910c,_0xa30bcc,_0x5af0a5){var _0x1998a7={};var _0x184a11={};var _0x1c2a76;var _0x5298bf;return db[_0x160a('0x2a')]['findOne']({'where':{'id':_0x34910c['params']['id']}})[_0x160a('0x23')](handleEntityNotFound(_0xa30bcc,null))[_0x160a('0x23')](function(_0xd90068){if(_0xd90068){_0x1c2a76=_0xd90068;_0x184a11[_0x160a('0x2d')]=_['keys'](db[_0x160a('0x4e')][_0x160a('0x2b')]);_0x184a11[_0x160a('0x2e')]=_[_0x160a('0x43')](_0x34910c[_0x160a('0x2e')]);_0x184a11['filters']=_[_0x160a('0x31')](_0x184a11[_0x160a('0x2d')],_0x184a11[_0x160a('0x2e')]);_0x1998a7['attributes']=_['intersection'](_0x184a11[_0x160a('0x2d')],qs[_0x160a('0x32')](_0x34910c[_0x160a('0x2e')]['fields']));_0x1998a7['attributes']=_0x1998a7[_0x160a('0x30')][_0x160a('0x33')]?_0x1998a7[_0x160a('0x30')]:_0x184a11[_0x160a('0x2d')];_0x1998a7[_0x160a('0x35')]=qs['sort'](_0x34910c[_0x160a('0x2e')][_0x160a('0x36')]);_0x1998a7[_0x160a('0x37')]=qs[_0x160a('0x2f')](_[_0x160a('0x38')](_0x34910c[_0x160a('0x2e')],_0x184a11['filters']));if(_0x34910c[_0x160a('0x2e')][_0x160a('0x39')]){_0x1998a7['where']=_['merge'](_0x1998a7['where'],{'$or':_[_0x160a('0x29')](_0x1998a7[_0x160a('0x30')],function(_0x2958ac){var _0x1a3778={};_0x1a3778[_0x2958ac]={'$like':'%'+_0x34910c[_0x160a('0x2e')][_0x160a('0x39')]+'%'};return _0x1a3778;})});}_0x1998a7=_[_0x160a('0x3a')]({},_0x1998a7,_0x34910c[_0x160a('0x3c')]);return _0x1c2a76[_0x160a('0x4f')](_0x1998a7);}})[_0x160a('0x23')](function(_0x3002e9){if(_0x3002e9){_0x5298bf=_0x3002e9['length'];if(!_0x34910c[_0x160a('0x2e')]['hasOwnProperty'](_0x160a('0x4a'))){_0x1998a7[_0x160a('0x1f')]=qs[_0x160a('0x1f')](_0x34910c['query']['limit']);_0x1998a7['offset']=qs['offset'](_0x34910c[_0x160a('0x2e')][_0x160a('0x1d')]);}return _0x1c2a76['getTags'](_0x1998a7);}})['then'](function(_0x11f6e5){if(_0x11f6e5){return _0x11f6e5?{'count':_0x5298bf,'rows':_0x11f6e5}:null;}})[_0x160a('0x23')](respondWithResult(_0xa30bcc,null))[_0x160a('0x40')](handleError(_0xa30bcc,null));};exports[_0x160a('0x50')]=function(_0x4d6e14,_0x373af8,_0x333fbf){if(_0x4d6e14['body']['id']){delete _0x4d6e14[_0x160a('0x46')]['id'];}return db[_0x160a('0x2a')][_0x160a('0x48')]({'where':{'id':_0x4d6e14[_0x160a('0x42')]['id']}})[_0x160a('0x23')](handleEntityNotFound(_0x373af8,null))[_0x160a('0x23')](function(_0x4eff8f){if(_0x4eff8f){return _0x4eff8f['setTags'](_0x4d6e14[_0x160a('0x46')][_0x160a('0x51')]||[]);}return null;})[_0x160a('0x23')](respondWithResult(_0x373af8,null))['catch'](handleError(_0x373af8,null));};
\ No newline at end of file
index 8e69ccf..fde71a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e3=['exports','ZendeskConfiguration','int_zendesk_configurations','lodash','util','api','request-promise','rimraf','../../config/environment','./intZendeskConfiguration.attributes'];(function(_0x404303,_0xcf6dee){var _0x2bb9e5=function(_0x3a2e12){while(--_0x3a2e12){_0x404303['push'](_0x404303['shift']());}};_0x2bb9e5(++_0xcf6dee);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0x2ddedd,_0x1148af){_0x2ddedd=_0x2ddedd-0x0;var _0x5055ea=_0xe1e3[_0x2ddedd];return _0x5055ea;};'use strict';var _=require(_0x3e1e('0x0'));var util=require(_0x3e1e('0x1'));var logger=require('../../config/logger')(_0x3e1e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3e1e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3e1e('0x4'));var config=require(_0x3e1e('0x5'));var attributes=require(_0x3e1e('0x6'));module[_0x3e1e('0x7')]=function(_0x40d6d8,_0x25701f){return _0x40d6d8['define'](_0x3e1e('0x8'),attributes,{'tableName':_0x3e1e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcbb=['rimraf','../../config/environment','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','../../config/logger','bluebird','request-promise','path'];(function(_0x2c52d0,_0x5caf45){var _0xa89ad1=function(_0x42f63f){while(--_0x42f63f){_0x2c52d0['push'](_0x2c52d0['shift']());}};_0xa89ad1(++_0x5caf45);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x36d2f6,_0x3db809){_0x36d2f6=_0x36d2f6-0x0;var _0x135b67=_0xfcbb[_0x36d2f6];return _0x135b67;};'use strict';var _=require(_0xbfcb('0x0'));var util=require(_0xbfcb('0x1'));var logger=require(_0xbfcb('0x2'))('api');var moment=require('moment');var BPromise=require(_0xbfcb('0x3'));var rp=require(_0xbfcb('0x4'));var fs=require('fs');var path=require(_0xbfcb('0x5'));var rimraf=require(_0xbfcb('0x6'));var config=require(_0xbfcb('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0x32c2aa,_0x4990c){return _0x32c2aa[_0xbfcb('0x8')](_0xbfcb('0x9'),attributes,{'tableName':_0xbfcb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index caa3ef8..49d4b4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0957=['error','code','message','info','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2515db,_0x3dc4b4){var _0x277268=function(_0x58dbea){while(--_0x58dbea){_0x2515db['push'](_0x2515db['shift']());}};_0x277268(++_0x3dc4b4);}(_0x0957,0x102));var _0x7095=function(_0x5de283,_0x2072cf){_0x5de283=_0x5de283-0x0;var _0x4437dd=_0x0957[_0x5de283];return _0x4437dd;};'use strict';var _=require(_0x7095('0x0'));var util=require(_0x7095('0x1'));var moment=require(_0x7095('0x2'));var BPromise=require(_0x7095('0x3'));var rs=require(_0x7095('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7095('0x5'))['db'];var utils=require(_0x7095('0x6'));var logger=require(_0x7095('0x7'))(_0x7095('0x8'));var config=require('../../config/environment');var jayson=require(_0x7095('0x9'));var client=jayson[_0x7095('0xa')][_0x7095('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x266677,_0x124008,_0x327477){return new BPromise(function(_0x52d034,_0x5148dd){return client[_0x7095('0xc')](_0x266677,_0x327477)[_0x7095('0xd')](function(_0x528447){logger['info'](_0x7095('0xe'),_0x124008,_0x7095('0xf'));logger['debug'](_0x7095('0x10'),_0x124008,_0x7095('0xf'),JSON[_0x7095('0x11')](_0x528447));if(_0x528447[_0x7095('0x12')]){if(_0x528447[_0x7095('0x12')][_0x7095('0x13')]===0x1f4){logger[_0x7095('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0x124008,_0x528447[_0x7095('0x12')]['message']);return _0x5148dd(_0x528447[_0x7095('0x12')][_0x7095('0x14')]);}logger[_0x7095('0x12')](_0x7095('0xe'),_0x124008,_0x528447['error'][_0x7095('0x14')]);return _0x52d034(_0x528447['error'][_0x7095('0x14')]);}else{logger[_0x7095('0x15')](_0x7095('0xe'),_0x124008,_0x7095('0xf'));_0x52d034(_0x528447[_0x7095('0x16')]['message']);}})['catch'](function(_0x54fa0b){logger['error'](_0x7095('0xe'),_0x124008,_0x54fa0b);_0x5148dd(_0x54fa0b);});});}
\ No newline at end of file
+var _0x9d47=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../config/utils'];(function(_0x5058e5,_0x8fa819){var _0xd16bd=function(_0x4790a9){while(--_0x4790a9){_0x5058e5['push'](_0x5058e5['shift']());}};_0xd16bd(++_0x8fa819);}(_0x9d47,0x13c));var _0x79d4=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0x9d47[_0x4baae2];return _0x1a2285;};'use strict';var _=require(_0x79d4('0x0'));var util=require(_0x79d4('0x1'));var moment=require(_0x79d4('0x2'));var BPromise=require('bluebird');var rs=require(_0x79d4('0x3'));var fs=require('fs');var Redis=require(_0x79d4('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x79d4('0x5'));var logger=require(_0x79d4('0x6'))(_0x79d4('0x7'));var config=require(_0x79d4('0x8'));var jayson=require(_0x79d4('0x9'));var client=jayson[_0x79d4('0xa')][_0x79d4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x38bab7,_0x3b0975,_0x59b402){return new BPromise(function(_0x5d467a,_0x160ad3){return client[_0x79d4('0xc')](_0x38bab7,_0x59b402)['then'](function(_0x5b780f){logger[_0x79d4('0xd')](_0x79d4('0xe'),_0x3b0975,_0x79d4('0xf'));logger[_0x79d4('0x10')](_0x79d4('0x11'),_0x3b0975,_0x79d4('0xf'),JSON[_0x79d4('0x12')](_0x5b780f));if(_0x5b780f[_0x79d4('0x13')]){if(_0x5b780f['error'][_0x79d4('0x14')]===0x1f4){logger[_0x79d4('0x13')](_0x79d4('0xe'),_0x3b0975,_0x5b780f[_0x79d4('0x13')]['message']);return _0x160ad3(_0x5b780f['error']['message']);}logger[_0x79d4('0x13')](_0x79d4('0xe'),_0x3b0975,_0x5b780f['error'][_0x79d4('0x15')]);return _0x5d467a(_0x5b780f['error']['message']);}else{logger['info'](_0x79d4('0xe'),_0x3b0975,_0x79d4('0xf'));_0x5d467a(_0x5b780f[_0x79d4('0x16')][_0x79d4('0x15')]);}})['catch'](function(_0x5bf309){logger[_0x79d4('0x13')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3b0975,_0x5bf309);_0x160ad3(_0x5bf309);});});}
\ No newline at end of file
index adb41f2..e93b44f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafa0=['isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get'];(function(_0x2b59e5,_0x104bf9){var _0x41aab2=function(_0x4da655){while(--_0x4da655){_0x2b59e5['push'](_0x2b59e5['shift']());}};_0x41aab2(++_0x104bf9);}(_0xafa0,0x186));var _0x0afa=function(_0x31fe4d,_0x17cea7){_0x31fe4d=_0x31fe4d-0x0;var _0x312f1b=_0xafa0[_0x31fe4d];return _0x312f1b;};'use strict';var multer=require(_0x0afa('0x0'));var util=require(_0x0afa('0x1'));var path=require(_0x0afa('0x2'));var timeout=require(_0x0afa('0x3'));var express=require(_0x0afa('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0afa('0x5'));var interaction=require(_0x0afa('0x6'));var config=require(_0x0afa('0x7'));var controller=require(_0x0afa('0x8'));router[_0x0afa('0x9')]('/',auth[_0x0afa('0xa')](),controller[_0x0afa('0xb')]);router['get'](_0x0afa('0xc'),auth['isAuthenticated'](),controller[_0x0afa('0xd')]);router[_0x0afa('0xe')]('/',auth[_0x0afa('0xa')](),controller[_0x0afa('0xf')]);router[_0x0afa('0x10')](_0x0afa('0xc'),auth[_0x0afa('0xa')](),controller[_0x0afa('0x11')]);router[_0x0afa('0x12')](_0x0afa('0xc'),auth[_0x0afa('0xa')](),controller[_0x0afa('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x74cf=['util','path','connect-timeout','express','../../config/environment','get','/:id','isAuthenticated','post','create','update','delete','multer'];(function(_0x1e6be1,_0x3dddfb){var _0x37934d=function(_0x3f6c7a){while(--_0x3f6c7a){_0x1e6be1['push'](_0x1e6be1['shift']());}};_0x37934d(++_0x3dddfb);}(_0x74cf,0xc2));var _0xf74c=function(_0x4152fa,_0x6dc7a3){_0x4152fa=_0x4152fa-0x0;var _0x3c3779=_0x74cf[_0x4152fa];return _0x3c3779;};'use strict';var multer=require(_0xf74c('0x0'));var util=require(_0xf74c('0x1'));var path=require(_0xf74c('0x2'));var timeout=require(_0xf74c('0x3'));var express=require(_0xf74c('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf74c('0x5'));var controller=require('./intZendeskField.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xf74c('0x6')](_0xf74c('0x7'),auth[_0xf74c('0x8')](),controller['show']);router[_0xf74c('0x9')]('/',auth['isAuthenticated'](),controller[_0xf74c('0xa')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xf74c('0xb')]);router[_0xf74c('0xc')](_0xf74c('0x7'),auth[_0xf74c('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 27a15c4..fb4daa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aa2=['customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable'];(function(_0x4453bf,_0x103276){var _0xfdf8f9=function(_0x5074d3){while(--_0x5074d3){_0x4453bf['push'](_0x4453bf['shift']());}};_0xfdf8f9(++_0x103276);}(_0x1aa2,0x1db));var _0x21aa=function(_0x2c0be1,_0x1e88f2){_0x2c0be1=_0x2c0be1-0x0;var _0x3d4bd2=_0x1aa2[_0x2c0be1];return _0x3d4bd2;};'use strict';var Sequelize=require(_0x21aa('0x0'));module[_0x21aa('0x1')]={'type':{'type':Sequelize[_0x21aa('0x2')](_0x21aa('0x3'),_0x21aa('0x4'),_0x21aa('0x5'),_0x21aa('0x6'),_0x21aa('0x7')),'defaultValue':_0x21aa('0x3')},'content':{'type':Sequelize[_0x21aa('0x8')]},'key':{'type':Sequelize[_0x21aa('0x8')]},'keyType':{'type':Sequelize[_0x21aa('0x2')](_0x21aa('0x3'),_0x21aa('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x21aa('0x8')]},'idField':{'type':Sequelize[_0x21aa('0x8')]},'nameField':{'type':Sequelize[_0x21aa('0x8')]},'customField':{'type':Sequelize[_0x21aa('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x21aa('0x8')]}};
\ No newline at end of file
+var _0x9e51=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x3b0395,_0x4acc43){var _0x499826=function(_0x275ac2){while(--_0x275ac2){_0x3b0395['push'](_0x3b0395['shift']());}};_0x499826(++_0x4acc43);}(_0x9e51,0xd8));var _0x19e5=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0x9e51[_0x2ec461];return _0x28603d;};'use strict';var Sequelize=require(_0x19e5('0x0'));module[_0x19e5('0x1')]={'type':{'type':Sequelize[_0x19e5('0x2')](_0x19e5('0x3'),_0x19e5('0x4'),_0x19e5('0x5'),_0x19e5('0x6'),_0x19e5('0x7')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x19e5('0x2')]('string','variable',_0x19e5('0x5'))},'keyContent':{'type':Sequelize[_0x19e5('0x8')]},'idField':{'type':Sequelize[_0x19e5('0x8')]},'nameField':{'type':Sequelize[_0x19e5('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x19e5('0x8')]}};
\ No newline at end of file
index eedbf0b..25e5971 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5ab=['undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','params','keys','length','find','create','body','catch','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xc5ab,0x19b));var _0xbc5a=function(_0x37944d,_0x4ac112){_0x37944d=_0x37944d-0x0;var _0x5192d5=_0xc5ab[_0x37944d];return _0x5192d5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbc5a('0x0'));var zipdir=require(_0xbc5a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbc5a('0x2'));var moment=require(_0xbc5a('0x3'));var BPromise=require(_0xbc5a('0x4'));var Mustache=require('mustache');var util=require(_0xbc5a('0x5'));var path=require(_0xbc5a('0x6'));var sox=require(_0xbc5a('0x7'));var csv=require(_0xbc5a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbc5a('0x9'));var _=require(_0xbc5a('0xa'));var squel=require(_0xbc5a('0xb'));var crypto=require('crypto');var jsforce=require(_0xbc5a('0xc'));var deskjs=require(_0xbc5a('0xd'));var toCsv=require(_0xbc5a('0x8'));var querystring=require(_0xbc5a('0xe'));var Papa=require(_0xbc5a('0xf'));var Redis=require(_0xbc5a('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbc5a('0x11'));var hardwareService=require(_0xbc5a('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xbc5a('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xbc5a('0x14'));var db=require(_0xbc5a('0x15'))['db'];function respondWithStatusCode(_0x34194d,_0x2a2364){_0x2a2364=_0x2a2364||0xcc;return function(_0x4560ff){if(_0x4560ff){return _0x34194d[_0xbc5a('0x16')](_0x2a2364);}return _0x34194d[_0xbc5a('0x17')](_0x2a2364)[_0xbc5a('0x18')]();};}function respondWithResult(_0x45850d,_0x13ef0c){_0x13ef0c=_0x13ef0c||0xc8;return function(_0x5f3afe){if(_0x5f3afe){return _0x45850d[_0xbc5a('0x17')](_0x13ef0c)[_0xbc5a('0x19')](_0x5f3afe);}};}function respondWithFilteredResult(_0x58d65e,_0x4b62da){return function(_0x30efed){if(_0x30efed){var _0x331e8e=typeof _0x4b62da[_0xbc5a('0x1a')]===_0xbc5a('0x1b')&&typeof _0x4b62da[_0xbc5a('0x1c')]===_0xbc5a('0x1b');var _0x1d94bb=_0x30efed[_0xbc5a('0x1d')];var _0x38ace4=_0x331e8e?0x0:_0x4b62da['offset'];var _0x58c6b2=_0x331e8e?_0x30efed[_0xbc5a('0x1d')]:_0x4b62da[_0xbc5a('0x1a')]+_0x4b62da['limit'];var _0x2be95c;if(_0x58c6b2>=_0x1d94bb){_0x58c6b2=_0x1d94bb;_0x2be95c=0xc8;}else{_0x2be95c=0xce;}_0x58d65e[_0xbc5a('0x17')](_0x2be95c);return _0x58d65e['set'](_0xbc5a('0x1e'),_0x38ace4+'-'+_0x58c6b2+'/'+_0x1d94bb)[_0xbc5a('0x19')](_0x30efed);}return null;};}function patchUpdates(_0x5db1bd){return function(_0x5d51d8){try{jsonpatch[_0xbc5a('0x1f')](_0x5d51d8,_0x5db1bd,!![]);}catch(_0x4e2a25){return BPromise[_0xbc5a('0x20')](_0x4e2a25);}return _0x5d51d8[_0xbc5a('0x21')]();};}function saveUpdates(_0x2c5f73,_0x4a4632){return function(_0x250f9c){if(_0x250f9c){return _0x250f9c[_0xbc5a('0x22')](_0x2c5f73)['then'](function(_0x175841){return _0x175841;});}return null;};}function removeEntity(_0xc32733,_0xda4ae1){return function(_0x181547){if(_0x181547){return _0x181547[_0xbc5a('0x23')]()[_0xbc5a('0x24')](function(){_0xc32733[_0xbc5a('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39201c,_0x1dde73){return function(_0x2a5672){if(!_0x2a5672){_0x39201c[_0xbc5a('0x16')](0x194);}return _0x2a5672;};}function handleError(_0x2ebcc8,_0x42e2e0){_0x42e2e0=_0x42e2e0||0x1f4;return function(_0x512c4a){logger['error'](_0x512c4a[_0xbc5a('0x25')]);if(_0x512c4a[_0xbc5a('0x26')]){delete _0x512c4a[_0xbc5a('0x26')];}_0x2ebcc8[_0xbc5a('0x17')](_0x42e2e0)[_0xbc5a('0x27')](_0x512c4a);};}exports[_0xbc5a('0x28')]=function(_0x5467fa,_0xb2a53a){var _0xe8f451={},_0x2ebf9c={},_0x47347d={'count':0x0,'rows':[]};var _0x4f98ae=_[_0xbc5a('0x29')](db[_0xbc5a('0x2a')][_0xbc5a('0x2b')],function(_0x42e203){return{'name':_0x42e203[_0xbc5a('0x2c')],'type':_0x42e203[_0xbc5a('0x2d')][_0xbc5a('0x2e')]};});_0x2ebf9c[_0xbc5a('0x2f')]=_[_0xbc5a('0x29')](_0x4f98ae,_0xbc5a('0x26'));_0x2ebf9c[_0xbc5a('0x30')]=_['keys'](_0x5467fa[_0xbc5a('0x30')]);_0x2ebf9c[_0xbc5a('0x31')]=_[_0xbc5a('0x32')](_0x2ebf9c[_0xbc5a('0x2f')],_0x2ebf9c[_0xbc5a('0x30')]);_0xe8f451['attributes']=_['intersection'](_0x2ebf9c['model'],qs[_0xbc5a('0x33')](_0x5467fa[_0xbc5a('0x30')][_0xbc5a('0x33')]));_0xe8f451['attributes']=_0xe8f451[_0xbc5a('0x34')]['length']?_0xe8f451[_0xbc5a('0x34')]:_0x2ebf9c[_0xbc5a('0x2f')];if(!_0x5467fa[_0xbc5a('0x30')][_0xbc5a('0x35')](_0xbc5a('0x36'))){_0xe8f451['limit']=qs[_0xbc5a('0x1c')](_0x5467fa[_0xbc5a('0x30')][_0xbc5a('0x1c')]);_0xe8f451['offset']=qs[_0xbc5a('0x1a')](_0x5467fa[_0xbc5a('0x30')]['offset']);}_0xe8f451[_0xbc5a('0x37')]=qs['sort'](_0x5467fa['query'][_0xbc5a('0x38')]);_0xe8f451[_0xbc5a('0x39')]=qs[_0xbc5a('0x31')](_[_0xbc5a('0x3a')](_0x5467fa[_0xbc5a('0x30')],_0x2ebf9c['filters']),_0x4f98ae);if(_0x5467fa['query'][_0xbc5a('0x3b')]){_0xe8f451[_0xbc5a('0x39')]=_[_0xbc5a('0x3c')](_0xe8f451[_0xbc5a('0x39')],{'$or':_[_0xbc5a('0x29')](_0x4f98ae,function(_0x2cbcba){if(_0x2cbcba['type']!==_0xbc5a('0x3d')){var _0x2e3c49={};_0x2e3c49[_0x2cbcba['name']]={'$like':'%'+_0x5467fa[_0xbc5a('0x30')][_0xbc5a('0x3b')]+'%'};return _0x2e3c49;}})});}_0xe8f451=_[_0xbc5a('0x3c')]({},_0xe8f451,_0x5467fa[_0xbc5a('0x3e')]);var _0x35f91a={'where':_0xe8f451[_0xbc5a('0x39')]};return db[_0xbc5a('0x2a')]['count'](_0x35f91a)['then'](function(_0x28d131){_0x47347d[_0xbc5a('0x1d')]=_0x28d131;if(_0x5467fa['query'][_0xbc5a('0x3f')]){_0xe8f451[_0xbc5a('0x40')]=[{'all':!![]}];}return db[_0xbc5a('0x2a')][_0xbc5a('0x41')](_0xe8f451);})['then'](function(_0x1b48e7){_0x47347d['rows']=_0x1b48e7;return _0x47347d;})[_0xbc5a('0x24')](respondWithFilteredResult(_0xb2a53a,_0xe8f451))['catch'](handleError(_0xb2a53a,null));};exports['show']=function(_0x548a32,_0x2ba5b0){var _0x4533e5={'raw':!![],'where':{'id':_0x548a32[_0xbc5a('0x42')]['id']}},_0x3b9723={};_0x3b9723[_0xbc5a('0x2f')]=_[_0xbc5a('0x43')](db[_0xbc5a('0x2a')][_0xbc5a('0x2b')]);_0x3b9723[_0xbc5a('0x30')]=_['keys'](_0x548a32['query']);_0x3b9723['filters']=_[_0xbc5a('0x32')](_0x3b9723[_0xbc5a('0x2f')],_0x3b9723[_0xbc5a('0x30')]);_0x4533e5[_0xbc5a('0x34')]=_[_0xbc5a('0x32')](_0x3b9723[_0xbc5a('0x2f')],qs[_0xbc5a('0x33')](_0x548a32[_0xbc5a('0x30')][_0xbc5a('0x33')]));_0x4533e5[_0xbc5a('0x34')]=_0x4533e5[_0xbc5a('0x34')][_0xbc5a('0x44')]?_0x4533e5[_0xbc5a('0x34')]:_0x3b9723[_0xbc5a('0x2f')];if(_0x548a32['query'][_0xbc5a('0x3f')]){_0x4533e5[_0xbc5a('0x40')]=[{'all':!![]}];}_0x4533e5=_[_0xbc5a('0x3c')]({},_0x4533e5,_0x548a32[_0xbc5a('0x3e')]);return db['ZendeskField'][_0xbc5a('0x45')](_0x4533e5)[_0xbc5a('0x24')](handleEntityNotFound(_0x2ba5b0,null))[_0xbc5a('0x24')](respondWithResult(_0x2ba5b0,null))['catch'](handleError(_0x2ba5b0,null));};exports['create']=function(_0x4afb55,_0x417d76){return db[_0xbc5a('0x2a')][_0xbc5a('0x46')](_0x4afb55[_0xbc5a('0x47')],{})[_0xbc5a('0x24')](respondWithResult(_0x417d76,0xc9))[_0xbc5a('0x48')](handleError(_0x417d76,null));};exports[_0xbc5a('0x22')]=function(_0x1de3a2,_0x4fb045){if(_0x1de3a2[_0xbc5a('0x47')]['id']){delete _0x1de3a2[_0xbc5a('0x47')]['id'];}return db[_0xbc5a('0x2a')][_0xbc5a('0x45')]({'where':{'id':_0x1de3a2[_0xbc5a('0x42')]['id']}})['then'](handleEntityNotFound(_0x4fb045,null))['then'](saveUpdates(_0x1de3a2['body'],null))[_0xbc5a('0x24')](respondWithResult(_0x4fb045,null))[_0xbc5a('0x48')](handleError(_0x4fb045,null));};exports['destroy']=function(_0x1f6dfb,_0x4bbad5){return db[_0xbc5a('0x2a')][_0xbc5a('0x45')]({'where':{'id':_0x1f6dfb[_0xbc5a('0x42')]['id']}})['then'](handleEntityNotFound(_0x4bbad5,null))[_0xbc5a('0x24')](removeEntity(_0x4bbad5,null))[_0xbc5a('0x48')](handleError(_0x4bbad5,null));};
\ No newline at end of file
+var _0xb697=['filter','options','includeAll','include','findAll','rows','params','find','catch','create','body','eml-format','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','sendStatus','error','stack','name','send','map','ZendeskField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','merge','VIRTUAL'];(function(_0x3a00c8,_0x5e8ade){var _0x19005f=function(_0x354b4e){while(--_0x354b4e){_0x3a00c8['push'](_0x3a00c8['shift']());}};_0x19005f(++_0x5e8ade);}(_0xb697,0x99));var _0x7b69=function(_0x466e4b,_0x45b20f){_0x466e4b=_0x466e4b-0x0;var _0x58fef3=_0xb697[_0x466e4b];return _0x58fef3;};'use strict';var emlformat=require(_0x7b69('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7b69('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7b69('0x2'));var BPromise=require(_0x7b69('0x3'));var Mustache=require('mustache');var util=require(_0x7b69('0x4'));var path=require(_0x7b69('0x5'));var sox=require(_0x7b69('0x6'));var csv=require(_0x7b69('0x7'));var ejs=require(_0x7b69('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7b69('0x9'));var squel=require(_0x7b69('0xa'));var crypto=require(_0x7b69('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7b69('0xc'));var Papa=require(_0x7b69('0xd'));var Redis=require(_0x7b69('0xe'));var authService=require(_0x7b69('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7b69('0x10'));var logger=require(_0x7b69('0x11'))(_0x7b69('0x12'));var utils=require(_0x7b69('0x13'));var config=require(_0x7b69('0x14'));var licenseUtil=require(_0x7b69('0x15'));var db=require(_0x7b69('0x16'))['db'];function respondWithStatusCode(_0x47d13c,_0x706725){_0x706725=_0x706725||0xcc;return function(_0xe675a9){if(_0xe675a9){return _0x47d13c['sendStatus'](_0x706725);}return _0x47d13c[_0x7b69('0x17')](_0x706725)['end']();};}function respondWithResult(_0x2b5d80,_0x1c12c9){_0x1c12c9=_0x1c12c9||0xc8;return function(_0x5e9096){if(_0x5e9096){return _0x2b5d80['status'](_0x1c12c9)[_0x7b69('0x18')](_0x5e9096);}};}function respondWithFilteredResult(_0x5f3a20,_0x2c536a){return function(_0xc242f9){if(_0xc242f9){var _0x83b9cf=typeof _0x2c536a[_0x7b69('0x19')]===_0x7b69('0x1a')&&typeof _0x2c536a[_0x7b69('0x1b')]===_0x7b69('0x1a');var _0xd72fad=_0xc242f9[_0x7b69('0x1c')];var _0x1d7673=_0x83b9cf?0x0:_0x2c536a[_0x7b69('0x19')];var _0x3596d6=_0x83b9cf?_0xc242f9['count']:_0x2c536a[_0x7b69('0x19')]+_0x2c536a[_0x7b69('0x1b')];var _0x6573d7;if(_0x3596d6>=_0xd72fad){_0x3596d6=_0xd72fad;_0x6573d7=0xc8;}else{_0x6573d7=0xce;}_0x5f3a20[_0x7b69('0x17')](_0x6573d7);return _0x5f3a20[_0x7b69('0x1d')](_0x7b69('0x1e'),_0x1d7673+'-'+_0x3596d6+'/'+_0xd72fad)[_0x7b69('0x18')](_0xc242f9);}return null;};}function patchUpdates(_0x1fadd6){return function(_0x7a1956){try{jsonpatch['apply'](_0x7a1956,_0x1fadd6,!![]);}catch(_0x3bbb50){return BPromise[_0x7b69('0x1f')](_0x3bbb50);}return _0x7a1956['save']();};}function saveUpdates(_0x2f72d5,_0x6916f8){return function(_0x26978a){if(_0x26978a){return _0x26978a[_0x7b69('0x20')](_0x2f72d5)[_0x7b69('0x21')](function(_0x543d83){return _0x543d83;});}return null;};}function removeEntity(_0x51a034,_0x242c4f){return function(_0x28e488){if(_0x28e488){return _0x28e488[_0x7b69('0x22')]()['then'](function(){_0x51a034['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x153de3,_0x587ad5){return function(_0x5875d1){if(!_0x5875d1){_0x153de3[_0x7b69('0x23')](0x194);}return _0x5875d1;};}function handleError(_0x298f6a,_0x567a14){_0x567a14=_0x567a14||0x1f4;return function(_0x358aec){logger[_0x7b69('0x24')](_0x358aec[_0x7b69('0x25')]);if(_0x358aec[_0x7b69('0x26')]){delete _0x358aec[_0x7b69('0x26')];}_0x298f6a[_0x7b69('0x17')](_0x567a14)[_0x7b69('0x27')](_0x358aec);};}exports['index']=function(_0x11439e,_0x37362a){var _0x152bf9={},_0x292e44={},_0x11b232={'count':0x0,'rows':[]};var _0x2f59c3=_[_0x7b69('0x28')](db[_0x7b69('0x29')][_0x7b69('0x2a')],function(_0x3e657d){return{'name':_0x3e657d[_0x7b69('0x2b')],'type':_0x3e657d[_0x7b69('0x2c')][_0x7b69('0x2d')]};});_0x292e44[_0x7b69('0x2e')]=_[_0x7b69('0x28')](_0x2f59c3,_0x7b69('0x26'));_0x292e44[_0x7b69('0x2f')]=_[_0x7b69('0x30')](_0x11439e['query']);_0x292e44[_0x7b69('0x31')]=_['intersection'](_0x292e44[_0x7b69('0x2e')],_0x292e44[_0x7b69('0x2f')]);_0x152bf9['attributes']=_[_0x7b69('0x32')](_0x292e44['model'],qs[_0x7b69('0x33')](_0x11439e[_0x7b69('0x2f')][_0x7b69('0x33')]));_0x152bf9[_0x7b69('0x34')]=_0x152bf9[_0x7b69('0x34')][_0x7b69('0x35')]?_0x152bf9[_0x7b69('0x34')]:_0x292e44[_0x7b69('0x2e')];if(!_0x11439e[_0x7b69('0x2f')][_0x7b69('0x36')]('nolimit')){_0x152bf9['limit']=qs[_0x7b69('0x1b')](_0x11439e[_0x7b69('0x2f')][_0x7b69('0x1b')]);_0x152bf9[_0x7b69('0x19')]=qs[_0x7b69('0x19')](_0x11439e[_0x7b69('0x2f')][_0x7b69('0x19')]);}_0x152bf9[_0x7b69('0x37')]=qs['sort'](_0x11439e[_0x7b69('0x2f')][_0x7b69('0x38')]);_0x152bf9[_0x7b69('0x39')]=qs[_0x7b69('0x31')](_['pick'](_0x11439e[_0x7b69('0x2f')],_0x292e44[_0x7b69('0x31')]),_0x2f59c3);if(_0x11439e[_0x7b69('0x2f')]['filter']){_0x152bf9[_0x7b69('0x39')]=_[_0x7b69('0x3a')](_0x152bf9[_0x7b69('0x39')],{'$or':_[_0x7b69('0x28')](_0x2f59c3,function(_0x27ea92){if(_0x27ea92[_0x7b69('0x2c')]!==_0x7b69('0x3b')){var _0xf0ee0b={};_0xf0ee0b[_0x27ea92[_0x7b69('0x26')]]={'$like':'%'+_0x11439e['query'][_0x7b69('0x3c')]+'%'};return _0xf0ee0b;}})});}_0x152bf9=_[_0x7b69('0x3a')]({},_0x152bf9,_0x11439e[_0x7b69('0x3d')]);var _0x220a3b={'where':_0x152bf9[_0x7b69('0x39')]};return db[_0x7b69('0x29')]['count'](_0x220a3b)[_0x7b69('0x21')](function(_0x2a40f5){_0x11b232['count']=_0x2a40f5;if(_0x11439e[_0x7b69('0x2f')][_0x7b69('0x3e')]){_0x152bf9[_0x7b69('0x3f')]=[{'all':!![]}];}return db[_0x7b69('0x29')][_0x7b69('0x40')](_0x152bf9);})['then'](function(_0x145cbd){_0x11b232[_0x7b69('0x41')]=_0x145cbd;return _0x11b232;})['then'](respondWithFilteredResult(_0x37362a,_0x152bf9))['catch'](handleError(_0x37362a,null));};exports['show']=function(_0x842051,_0x174ac6){var _0x2da33c={'raw':!![],'where':{'id':_0x842051[_0x7b69('0x42')]['id']}},_0x4b4956={};_0x4b4956['model']=_[_0x7b69('0x30')](db['ZendeskField'][_0x7b69('0x2a')]);_0x4b4956[_0x7b69('0x2f')]=_['keys'](_0x842051[_0x7b69('0x2f')]);_0x4b4956[_0x7b69('0x31')]=_[_0x7b69('0x32')](_0x4b4956[_0x7b69('0x2e')],_0x4b4956['query']);_0x2da33c['attributes']=_[_0x7b69('0x32')](_0x4b4956[_0x7b69('0x2e')],qs[_0x7b69('0x33')](_0x842051[_0x7b69('0x2f')][_0x7b69('0x33')]));_0x2da33c[_0x7b69('0x34')]=_0x2da33c[_0x7b69('0x34')][_0x7b69('0x35')]?_0x2da33c['attributes']:_0x4b4956[_0x7b69('0x2e')];if(_0x842051['query']['includeAll']){_0x2da33c['include']=[{'all':!![]}];}_0x2da33c=_[_0x7b69('0x3a')]({},_0x2da33c,_0x842051[_0x7b69('0x3d')]);return db[_0x7b69('0x29')][_0x7b69('0x43')](_0x2da33c)['then'](handleEntityNotFound(_0x174ac6,null))[_0x7b69('0x21')](respondWithResult(_0x174ac6,null))[_0x7b69('0x44')](handleError(_0x174ac6,null));};exports[_0x7b69('0x45')]=function(_0x36f761,_0x9243ad){return db[_0x7b69('0x29')][_0x7b69('0x45')](_0x36f761[_0x7b69('0x46')],{})[_0x7b69('0x21')](respondWithResult(_0x9243ad,0xc9))['catch'](handleError(_0x9243ad,null));};exports[_0x7b69('0x20')]=function(_0x10c774,_0x2f4fb0){if(_0x10c774[_0x7b69('0x46')]['id']){delete _0x10c774[_0x7b69('0x46')]['id'];}return db[_0x7b69('0x29')][_0x7b69('0x43')]({'where':{'id':_0x10c774[_0x7b69('0x42')]['id']}})[_0x7b69('0x21')](handleEntityNotFound(_0x2f4fb0,null))['then'](saveUpdates(_0x10c774['body'],null))[_0x7b69('0x21')](respondWithResult(_0x2f4fb0,null))[_0x7b69('0x44')](handleError(_0x2f4fb0,null));};exports[_0x7b69('0x22')]=function(_0x2cb9ec,_0xe85d6f){return db['ZendeskField'][_0x7b69('0x43')]({'where':{'id':_0x2cb9ec[_0x7b69('0x42')]['id']}})[_0x7b69('0x21')](handleEntityNotFound(_0xe85d6f,null))[_0x7b69('0x21')](removeEntity(_0xe85d6f,null))[_0x7b69('0x44')](handleError(_0xe85d6f,null));};
\ No newline at end of file
index cc9bcee..36d03c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21ec=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','../../config/logger','api'];(function(_0xdabb59,_0x551bf6){var _0x38bb96=function(_0xc3195d){while(--_0xc3195d){_0xdabb59['push'](_0xdabb59['shift']());}};_0x38bb96(++_0x551bf6);}(_0x21ec,0x1b0));var _0xc21e=function(_0x1b7368,_0x3286ed){_0x1b7368=_0x1b7368-0x0;var _0x25d54c=_0x21ec[_0x1b7368];return _0x25d54c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc21e('0x0'))(_0xc21e('0x1'));var moment=require(_0xc21e('0x2'));var BPromise=require(_0xc21e('0x3'));var rp=require(_0xc21e('0x4'));var fs=require('fs');var path=require(_0xc21e('0x5'));var rimraf=require(_0xc21e('0x6'));var config=require(_0xc21e('0x7'));var attributes=require(_0xc21e('0x8'));module[_0xc21e('0x9')]=function(_0x516727,_0x1d93cf){return _0x516727[_0xc21e('0xa')](_0xc21e('0xb'),attributes,{'tableName':_0xc21e('0xc'),'paranoid':![],'indexes':[{'name':_0xc21e('0xd'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc68b=['zendesk_unique_index','util','api','moment','bluebird','request-promise','path','../../config/environment','./intZendeskField.attributes','int_zendesk_fields'];(function(_0x306064,_0x88fccb){var _0x17d9a2=function(_0x56411c){while(--_0x56411c){_0x306064['push'](_0x306064['shift']());}};_0x17d9a2(++_0x88fccb);}(_0xc68b,0xa1));var _0xbc68=function(_0x38eb40,_0x458cea){_0x38eb40=_0x38eb40-0x0;var _0x499406=_0xc68b[_0x38eb40];return _0x499406;};'use strict';var _=require('lodash');var util=require(_0xbc68('0x0'));var logger=require('../../config/logger')(_0xbc68('0x1'));var moment=require(_0xbc68('0x2'));var BPromise=require(_0xbc68('0x3'));var rp=require(_0xbc68('0x4'));var fs=require('fs');var path=require(_0xbc68('0x5'));var rimraf=require('rimraf');var config=require(_0xbc68('0x6'));var attributes=require(_0xbc68('0x7'));module['exports']=function(_0x492aac,_0x1dde07){return _0x492aac['define']('ZendeskField',attributes,{'tableName':_0xbc68('0x8'),'paranoid':![],'indexes':[{'name':_0xbc68('0x9'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3ff264e..23363e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9808=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','lodash','util','moment'];(function(_0x5e34c6,_0x431682){var _0x301b18=function(_0x8337b4){while(--_0x8337b4){_0x5e34c6['push'](_0x5e34c6['shift']());}};_0x301b18(++_0x431682);}(_0x9808,0x9e));var _0x8980=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0x9808[_0xac151d];return _0x111dba;};'use strict';var _=require(_0x8980('0x0'));var util=require(_0x8980('0x1'));var moment=require(_0x8980('0x2'));var BPromise=require(_0x8980('0x3'));var rs=require(_0x8980('0x4'));var fs=require('fs');var Redis=require(_0x8980('0x5'));var db=require(_0x8980('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8980('0x7'))(_0x8980('0x8'));var config=require(_0x8980('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8980('0xa')][_0x8980('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5c0bd9,_0xbcda13,_0x20e573){return new BPromise(function(_0x389605,_0x14c456){return client[_0x8980('0xc')](_0x5c0bd9,_0x20e573)[_0x8980('0xd')](function(_0x56ae49){logger['info'](_0x8980('0xe'),_0xbcda13,_0x8980('0xf'));logger[_0x8980('0x10')](_0x8980('0x11'),_0xbcda13,'request\x20sent',JSON[_0x8980('0x12')](_0x56ae49));if(_0x56ae49[_0x8980('0x13')]){if(_0x56ae49[_0x8980('0x13')]['code']===0x1f4){logger[_0x8980('0x13')]('ZendeskField,\x20%s,\x20%s',_0xbcda13,_0x56ae49['error'][_0x8980('0x14')]);return _0x14c456(_0x56ae49['error'][_0x8980('0x14')]);}logger[_0x8980('0x13')](_0x8980('0xe'),_0xbcda13,_0x56ae49['error']['message']);return _0x389605(_0x56ae49['error'][_0x8980('0x14')]);}else{logger[_0x8980('0x15')]('ZendeskField,\x20%s,\x20%s',_0xbcda13,'request\x20sent');_0x389605(_0x56ae49['result']['message']);}})[_0x8980('0x16')](function(_0x82b38d){logger[_0x8980('0x13')](_0x8980('0xe'),_0xbcda13,_0x82b38d);_0x14c456(_0x82b38d);});});}
\ No newline at end of file
+var _0x533c=['debug','ZendeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ZendeskField,\x20%s,\x20%s'];(function(_0x41deb8,_0x458105){var _0x1e2084=function(_0x550d48){while(--_0x550d48){_0x41deb8['push'](_0x41deb8['shift']());}};_0x1e2084(++_0x458105);}(_0x533c,0x1d4));var _0xc533=function(_0xaa8ab0,_0x16d380){_0xaa8ab0=_0xaa8ab0-0x0;var _0x266dca=_0x533c[_0xaa8ab0];return _0x266dca;};'use strict';var _=require(_0xc533('0x0'));var util=require(_0xc533('0x1'));var moment=require(_0xc533('0x2'));var BPromise=require(_0xc533('0x3'));var rs=require(_0xc533('0x4'));var fs=require('fs');var Redis=require(_0xc533('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc533('0x6'))(_0xc533('0x7'));var config=require(_0xc533('0x8'));var jayson=require(_0xc533('0x9'));var client=jayson[_0xc533('0xa')][_0xc533('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1dc820,_0x24f826,_0x411727){return new BPromise(function(_0x1e3cc2,_0x3e4e42){return client[_0xc533('0xc')](_0x1dc820,_0x411727)['then'](function(_0x4d9d30){logger[_0xc533('0xd')](_0xc533('0xe'),_0x24f826,'request\x20sent');logger[_0xc533('0xf')](_0xc533('0x10'),_0x24f826,_0xc533('0x11'),JSON[_0xc533('0x12')](_0x4d9d30));if(_0x4d9d30[_0xc533('0x13')]){if(_0x4d9d30[_0xc533('0x13')][_0xc533('0x14')]===0x1f4){logger[_0xc533('0x13')](_0xc533('0xe'),_0x24f826,_0x4d9d30[_0xc533('0x13')][_0xc533('0x15')]);return _0x3e4e42(_0x4d9d30['error'][_0xc533('0x15')]);}logger[_0xc533('0x13')](_0xc533('0xe'),_0x24f826,_0x4d9d30['error'][_0xc533('0x15')]);return _0x1e3cc2(_0x4d9d30['error']['message']);}else{logger[_0xc533('0xd')](_0xc533('0xe'),_0x24f826,_0xc533('0x11'));_0x1e3cc2(_0x4d9d30['result'][_0xc533('0x15')]);}})[_0xc533('0x16')](function(_0x155876){logger[_0xc533('0x13')](_0xc533('0xe'),_0x24f826,_0x155876);_0x3e4e42(_0x155876);});});}
\ No newline at end of file
index 5693866..639d267 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x182a=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','/:id','isAuthenticated','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','put','update','delete','destroy','exports','multer','util','express'];(function(_0x1bbc0d,_0x318e30){var _0x5c9bc8=function(_0x3d9540){while(--_0x3d9540){_0x1bbc0d['push'](_0x1bbc0d['shift']());}};_0x5c9bc8(++_0x318e30);}(_0x182a,0x1e0));var _0xa182=function(_0x3aae2a,_0x2d7717){_0x3aae2a=_0x3aae2a-0x0;var _0x52045a=_0x182a[_0x3aae2a];return _0x52045a;};'use strict';var multer=require(_0xa182('0x0'));var util=require(_0xa182('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa182('0x2'));var router=express[_0xa182('0x3')]();var fs_extra=require(_0xa182('0x4'));var auth=require(_0xa182('0x5'));var interaction=require(_0xa182('0x6'));var config=require(_0xa182('0x7'));var controller=require(_0xa182('0x8'));router[_0xa182('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa182('0x9')](_0xa182('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xa182('0x9')]('/:id/configurations',auth[_0xa182('0xb')](),controller[_0xa182('0xc')]);router[_0xa182('0x9')](_0xa182('0xd'),auth['isAuthenticated'](),controller[_0xa182('0xe')]);router[_0xa182('0xf')]('/',auth[_0xa182('0xb')](),controller[_0xa182('0x10')]);router[_0xa182('0xf')](_0xa182('0x11'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0xa182('0x12')]('/:id',auth[_0xa182('0xb')](),controller[_0xa182('0x13')]);router[_0xa182('0x14')](_0xa182('0xa'),auth['isAuthenticated'](),controller[_0xa182('0x15')]);module[_0xa182('0x16')]=router;
\ No newline at end of file
+var _0x5708=['put','update','delete','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','index','/:id','show','/:id/configurations','isAuthenticated','getConfigurations','/:id/fields','getFields','post','create'];(function(_0x17dafa,_0x1a6ff9){var _0x19785e=function(_0x2f2651){while(--_0x2f2651){_0x17dafa['push'](_0x17dafa['shift']());}};_0x19785e(++_0x1a6ff9);}(_0x5708,0x1e4));var _0x8570=function(_0x5a1cff,_0x104785){_0x5a1cff=_0x5a1cff-0x0;var _0x3028a6=_0x5708[_0x5a1cff];return _0x3028a6;};'use strict';var multer=require(_0x8570('0x0'));var util=require('util');var path=require(_0x8570('0x1'));var timeout=require(_0x8570('0x2'));var express=require(_0x8570('0x3'));var router=express[_0x8570('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8570('0x5'));var interaction=require(_0x8570('0x6'));var config=require(_0x8570('0x7'));var controller=require(_0x8570('0x8'));router[_0x8570('0x9')]('/',auth['isAuthenticated'](),controller[_0x8570('0xa')]);router[_0x8570('0x9')](_0x8570('0xb'),auth['isAuthenticated'](),controller[_0x8570('0xc')]);router['get'](_0x8570('0xd'),auth[_0x8570('0xe')](),controller[_0x8570('0xf')]);router['get'](_0x8570('0x10'),auth['isAuthenticated'](),controller[_0x8570('0x11')]);router[_0x8570('0x12')]('/',auth[_0x8570('0xe')](),controller[_0x8570('0x13')]);router[_0x8570('0x12')](_0x8570('0xd'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x8570('0x14')](_0x8570('0xb'),auth[_0x8570('0xe')](),controller[_0x8570('0x15')]);router[_0x8570('0x16')](_0x8570('0xb'),auth[_0x8570('0xe')](),controller['destroy']);module[_0x8570('0x17')]=router;
\ No newline at end of file
index 00353bd..db3273b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea3=['STRING','sequelize','exports'];(function(_0x151553,_0x295f9c){var _0x1a0ad6=function(_0x3d2fc5){while(--_0x3d2fc5){_0x151553['push'](_0x151553['shift']());}};_0x1a0ad6(++_0x295f9c);}(_0x4ea3,0x70));var _0x34ea=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x4ea3[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require(_0x34ea('0x0'));module[_0x34ea('0x1')]={'name':{'type':Sequelize[_0x34ea('0x2')]},'description':{'type':Sequelize[_0x34ea('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x34ea('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x34ea('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x34ea('0x2')]}};
\ No newline at end of file
+var _0x9bde=['STRING','exports'];(function(_0x3b711c,_0x4b22dc){var _0x2685f0=function(_0x3b5ba6){while(--_0x3b5ba6){_0x3b711c['push'](_0x3b711c['shift']());}};_0x2685f0(++_0x4b22dc);}(_0x9bde,0xe1));var _0xe9bd=function(_0x2b2880,_0x938856){_0x2b2880=_0x2b2880-0x0;var _0x12263b=_0x9bde[_0x2b2880];return _0x12263b;};'use strict';var Sequelize=require('sequelize');module[_0xe9bd('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe9bd('0x1')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0xe9bd('0x1')]},'clientId':{'type':Sequelize[_0xe9bd('0x1')]},'clientSecret':{'type':Sequelize[_0xe9bd('0x1')]},'serverUrl':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'code':{'type':Sequelize[_0xe9bd('0x1')]},'refreshToken':{'type':Sequelize[_0xe9bd('0x1')]}};
\ No newline at end of file
index 301f905..72b30c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f49=['host','clientId','serverUrl','code','zoho.eu','substring','lastIndexOf','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','message','Owner','Subject','Description','WhoId','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','display_label','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','status','end','json','undefined','limit','offset','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','fieldName','type','model','map','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','ZohoAccount','count','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','getConfigurations','findOne','order','addConfiguration','Subjects','getSubjects','Descriptions','getDescriptions','ZohoConfiguration','ZohoField','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','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields'];(function(_0x4c89b9,_0x130518){var _0x299b3b=function(_0xa1b52a){while(--_0xa1b52a){_0x4c89b9['push'](_0x4c89b9['shift']());}};_0x299b3b(++_0x130518);}(_0x9f49,0x1b0));var _0x99f4=function(_0x50275b,_0x1f3bc4){_0x50275b=_0x50275b-0x0;var _0x4c038a=_0x9f49[_0x50275b];return _0x4c038a;};'use strict';var emlformat=require(_0x99f4('0x0'));var rimraf=require(_0x99f4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x99f4('0x2'));var rp=require(_0x99f4('0x3'));var moment=require(_0x99f4('0x4'));var BPromise=require(_0x99f4('0x5'));var Mustache=require(_0x99f4('0x6'));var util=require(_0x99f4('0x7'));var path=require(_0x99f4('0x8'));var sox=require(_0x99f4('0x9'));var csv=require(_0x99f4('0xa'));var ejs=require(_0x99f4('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x99f4('0xc'));var crypto=require(_0x99f4('0xd'));var jsforce=require(_0x99f4('0xe'));var deskjs=require(_0x99f4('0xf'));var toCsv=require(_0x99f4('0xa'));var querystring=require(_0x99f4('0x10'));var Papa=require(_0x99f4('0x11'));var Redis=require(_0x99f4('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x99f4('0x13'));var hardwareService=require(_0x99f4('0x14'));var logger=require(_0x99f4('0x15'))(_0x99f4('0x16'));var utils=require(_0x99f4('0x17'));var config=require(_0x99f4('0x18'));var licenseUtil=require(_0x99f4('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0x99f4('0x1a'));function respondWithStatusCode(_0x1a81a0,_0x529432){_0x529432=_0x529432||0xcc;return function(_0x247c06){if(_0x247c06){return _0x1a81a0['sendStatus'](_0x529432);}return _0x1a81a0[_0x99f4('0x1b')](_0x529432)[_0x99f4('0x1c')]();};}function respondWithResult(_0x43a7c4,_0x3de18){_0x3de18=_0x3de18||0xc8;return function(_0x4b5a19){if(_0x4b5a19){return _0x43a7c4['status'](_0x3de18)[_0x99f4('0x1d')](_0x4b5a19);}};}function respondWithFilteredResult(_0x1aeb49,_0xad63be){return function(_0x3dbc97){if(_0x3dbc97){var _0x4dba2d=typeof _0xad63be['offset']===_0x99f4('0x1e')&&typeof _0xad63be[_0x99f4('0x1f')]===_0x99f4('0x1e');var _0x1e078c=_0x3dbc97['count'];var _0x30956c=_0x4dba2d?0x0:_0xad63be[_0x99f4('0x20')];var _0x599041=_0x4dba2d?_0x3dbc97['count']:_0xad63be['offset']+_0xad63be['limit'];var _0x34b300;if(_0x599041>=_0x1e078c){_0x599041=_0x1e078c;_0x34b300=0xc8;}else{_0x34b300=0xce;}_0x1aeb49[_0x99f4('0x1b')](_0x34b300);return _0x1aeb49[_0x99f4('0x21')](_0x99f4('0x22'),_0x30956c+'-'+_0x599041+'/'+_0x1e078c)[_0x99f4('0x1d')](_0x3dbc97);}return null;};}function patchUpdates(_0x25c3bc){return function(_0x339f74){try{jsonpatch[_0x99f4('0x23')](_0x339f74,_0x25c3bc,!![]);}catch(_0x175201){return BPromise['reject'](_0x175201);}return _0x339f74[_0x99f4('0x24')]();};}function saveUpdates(_0x31273e,_0x4818bc){return function(_0xa1440e){if(_0xa1440e){return _0xa1440e[_0x99f4('0x25')](_0x31273e)[_0x99f4('0x26')](function(_0x2816ac){return _0x2816ac;});}return null;};}function removeEntity(_0x3294f9,_0x48acf5){return function(_0x3d9774){if(_0x3d9774){return _0x3d9774[_0x99f4('0x27')]()['then'](function(){_0x3294f9[_0x99f4('0x1b')](0xcc)[_0x99f4('0x1c')]();});}};}function handleEntityNotFound(_0x15debf,_0x477ff7){return function(_0x56a31f){if(!_0x56a31f){_0x15debf['sendStatus'](0x194);}return _0x56a31f;};}function handleError(_0x3928ec,_0x332ddb){_0x332ddb=_0x332ddb||0x1f4;return function(_0x4e6ac9){logger[_0x99f4('0x28')](_0x4e6ac9[_0x99f4('0x29')]);if(_0x4e6ac9[_0x99f4('0x2a')]){delete _0x4e6ac9[_0x99f4('0x2a')];}_0x3928ec[_0x99f4('0x1b')](_0x332ddb)[_0x99f4('0x2b')](_0x4e6ac9);};}exports[_0x99f4('0x2c')]=function(_0x4c6c69,_0x4f830c){var _0x18a230={},_0x5d1a30={},_0x493f44={'count':0x0,'rows':[]};var _0x594d87=_['map'](db['ZohoAccount']['rawAttributes'],function(_0x20e99a){return{'name':_0x20e99a[_0x99f4('0x2d')],'type':_0x20e99a[_0x99f4('0x2e')]['key']};});_0x5d1a30[_0x99f4('0x2f')]=_[_0x99f4('0x30')](_0x594d87,_0x99f4('0x2a'));_0x5d1a30[_0x99f4('0x31')]=_[_0x99f4('0x32')](_0x4c6c69['query']);_0x5d1a30['filters']=_['intersection'](_0x5d1a30[_0x99f4('0x2f')],_0x5d1a30['query']);_0x18a230[_0x99f4('0x33')]=_[_0x99f4('0x34')](_0x5d1a30[_0x99f4('0x2f')],qs[_0x99f4('0x35')](_0x4c6c69['query'][_0x99f4('0x35')]));_0x18a230['attributes']=_0x18a230[_0x99f4('0x33')]['length']?_0x18a230[_0x99f4('0x33')]:_0x5d1a30[_0x99f4('0x2f')];if(!_0x4c6c69['query'][_0x99f4('0x36')](_0x99f4('0x37'))){_0x18a230['limit']=qs[_0x99f4('0x1f')](_0x4c6c69[_0x99f4('0x31')][_0x99f4('0x1f')]);_0x18a230[_0x99f4('0x20')]=qs[_0x99f4('0x20')](_0x4c6c69[_0x99f4('0x31')][_0x99f4('0x20')]);}_0x18a230['order']=qs[_0x99f4('0x38')](_0x4c6c69['query'][_0x99f4('0x38')]);_0x18a230[_0x99f4('0x39')]=qs[_0x99f4('0x3a')](_[_0x99f4('0x3b')](_0x4c6c69[_0x99f4('0x31')],_0x5d1a30[_0x99f4('0x3a')]),_0x594d87);if(_0x4c6c69[_0x99f4('0x31')][_0x99f4('0x3c')]){_0x18a230[_0x99f4('0x39')]=_[_0x99f4('0x3d')](_0x18a230['where'],{'$or':_['map'](_0x594d87,function(_0x27a803){if(_0x27a803[_0x99f4('0x2e')]!==_0x99f4('0x3e')){var _0x223fc9={};_0x223fc9[_0x27a803[_0x99f4('0x2a')]]={'$like':'%'+_0x4c6c69[_0x99f4('0x31')][_0x99f4('0x3c')]+'%'};return _0x223fc9;}})});}_0x18a230=_[_0x99f4('0x3d')]({},_0x18a230,_0x4c6c69[_0x99f4('0x3f')]);var _0x232445={'where':_0x18a230[_0x99f4('0x39')]};return db[_0x99f4('0x40')][_0x99f4('0x41')](_0x232445)[_0x99f4('0x26')](function(_0x359a01){_0x493f44[_0x99f4('0x41')]=_0x359a01;if(_0x4c6c69[_0x99f4('0x31')][_0x99f4('0x42')]){_0x18a230[_0x99f4('0x43')]=[{'all':!![]}];}return db[_0x99f4('0x40')]['findAll'](_0x18a230);})[_0x99f4('0x26')](function(_0x3f4a33){_0x493f44[_0x99f4('0x44')]=_0x3f4a33;return _0x493f44;})[_0x99f4('0x26')](respondWithFilteredResult(_0x4f830c,_0x18a230))[_0x99f4('0x45')](handleError(_0x4f830c,null));};exports[_0x99f4('0x46')]=function(_0x19c450,_0x58837b){var _0x12921f={'raw':![],'where':{'id':_0x19c450[_0x99f4('0x47')]['id']}},_0x13240d={};_0x13240d[_0x99f4('0x2f')]=_[_0x99f4('0x32')](db[_0x99f4('0x40')][_0x99f4('0x48')]);_0x13240d[_0x99f4('0x31')]=_[_0x99f4('0x32')](_0x19c450['query']);_0x13240d[_0x99f4('0x3a')]=_[_0x99f4('0x34')](_0x13240d[_0x99f4('0x2f')],_0x13240d[_0x99f4('0x31')]);_0x12921f[_0x99f4('0x33')]=_[_0x99f4('0x34')](_0x13240d[_0x99f4('0x2f')],qs[_0x99f4('0x35')](_0x19c450['query']['fields']));_0x12921f[_0x99f4('0x33')]=_0x12921f['attributes'][_0x99f4('0x49')]?_0x12921f[_0x99f4('0x33')]:_0x13240d[_0x99f4('0x2f')];if(_0x19c450[_0x99f4('0x31')][_0x99f4('0x42')]){_0x12921f[_0x99f4('0x43')]=[{'all':!![]}];}_0x12921f=_['merge']({},_0x12921f,_0x19c450[_0x99f4('0x3f')]);return db['ZohoAccount'][_0x99f4('0x4a')](_0x12921f)[_0x99f4('0x26')](handleEntityNotFound(_0x58837b,null))[_0x99f4('0x26')](respondWithResult(_0x58837b,null))['catch'](handleError(_0x58837b,null));};exports[_0x99f4('0x4b')]=function(_0x5031ff,_0x336946){return db[_0x99f4('0x40')][_0x99f4('0x4b')](_0x5031ff[_0x99f4('0x4c')],{})[_0x99f4('0x26')](respondWithResult(_0x336946,0xc9))[_0x99f4('0x45')](handleError(_0x336946,null));};exports[_0x99f4('0x25')]=function(_0x50d8d6,_0x4a488f){if(_0x50d8d6[_0x99f4('0x4c')]['id']){delete _0x50d8d6['body']['id'];}return db[_0x99f4('0x40')][_0x99f4('0x4a')]({'where':{'id':_0x50d8d6[_0x99f4('0x47')]['id']}})[_0x99f4('0x26')](handleEntityNotFound(_0x4a488f,null))[_0x99f4('0x26')](saveUpdates(_0x50d8d6['body'],null))['then'](respondWithResult(_0x4a488f,null))[_0x99f4('0x45')](handleError(_0x4a488f,null));};exports[_0x99f4('0x27')]=function(_0x441dee,_0x5b3a48){return db[_0x99f4('0x40')]['find']({'where':{'id':_0x441dee[_0x99f4('0x47')]['id']}})[_0x99f4('0x26')](handleEntityNotFound(_0x5b3a48,null))[_0x99f4('0x26')](removeEntity(_0x5b3a48,null))['catch'](handleError(_0x5b3a48,null));};exports[_0x99f4('0x4d')]=function(_0x1eb7e2,_0x2b581b,_0xdf7185){var _0x12a984={};var _0x151416={};var _0x13bbb7;var _0x304618;return db[_0x99f4('0x40')][_0x99f4('0x4e')]({'where':{'id':_0x1eb7e2[_0x99f4('0x47')]['id']}})[_0x99f4('0x26')](handleEntityNotFound(_0x2b581b,null))[_0x99f4('0x26')](function(_0x16a296){if(_0x16a296){_0x13bbb7=_0x16a296;_0x151416[_0x99f4('0x2f')]=_[_0x99f4('0x32')](db['ZohoConfiguration'][_0x99f4('0x48')]);_0x151416[_0x99f4('0x31')]=_['keys'](_0x1eb7e2[_0x99f4('0x31')]);_0x151416[_0x99f4('0x3a')]=_[_0x99f4('0x34')](_0x151416[_0x99f4('0x2f')],_0x151416[_0x99f4('0x31')]);_0x12a984[_0x99f4('0x33')]=_[_0x99f4('0x34')](_0x151416['model'],qs['fields'](_0x1eb7e2['query'][_0x99f4('0x35')]));_0x12a984['attributes']=_0x12a984[_0x99f4('0x33')][_0x99f4('0x49')]?_0x12a984[_0x99f4('0x33')]:_0x151416[_0x99f4('0x2f')];_0x12a984[_0x99f4('0x4f')]=qs[_0x99f4('0x38')](_0x1eb7e2['query'][_0x99f4('0x38')]);_0x12a984[_0x99f4('0x39')]=qs[_0x99f4('0x3a')](_[_0x99f4('0x3b')](_0x1eb7e2[_0x99f4('0x31')],_0x151416[_0x99f4('0x3a')]));if(_0x1eb7e2['query'][_0x99f4('0x3c')]){_0x12a984[_0x99f4('0x39')]=_[_0x99f4('0x3d')](_0x12a984[_0x99f4('0x39')],{'$or':_[_0x99f4('0x30')](_0x12a984[_0x99f4('0x33')],function(_0x336617){var _0x4b4eea={};_0x4b4eea[_0x336617]={'$like':'%'+_0x1eb7e2[_0x99f4('0x31')][_0x99f4('0x3c')]+'%'};return _0x4b4eea;})});}_0x12a984=_['merge']({},_0x12a984,_0x1eb7e2['options']);return _0x13bbb7[_0x99f4('0x4d')](_0x12a984);}})['then'](function(_0x4f884e){if(_0x4f884e){_0x304618=_0x4f884e[_0x99f4('0x49')];if(!_0x1eb7e2['query'][_0x99f4('0x36')](_0x99f4('0x37'))){_0x12a984[_0x99f4('0x1f')]=qs['limit'](_0x1eb7e2[_0x99f4('0x31')][_0x99f4('0x1f')]);_0x12a984['offset']=qs['offset'](_0x1eb7e2[_0x99f4('0x31')]['offset']);}return _0x13bbb7[_0x99f4('0x4d')](_0x12a984);}})['then'](function(_0x2a095e){if(_0x2a095e){return _0x2a095e?{'count':_0x304618,'rows':_0x2a095e}:null;}})[_0x99f4('0x26')](respondWithResult(_0x2b581b,null))[_0x99f4('0x45')](handleError(_0x2b581b,null));};exports[_0x99f4('0x50')]=function(_0x38fe44,_0x14960f,_0x355cc7){if(_0x38fe44[_0x99f4('0x4c')]['id']){delete _0x38fe44[_0x99f4('0x4c')]['id'];}return db[_0x99f4('0x40')]['findOne']({'where':{'id':_0x38fe44[_0x99f4('0x47')]['id']}})[_0x99f4('0x26')](handleEntityNotFound(_0x14960f,null))[_0x99f4('0x26')](function(_0x5df2ef){if(_0x5df2ef){_0x38fe44[_0x99f4('0x4c')]['AccountId']=_0x5df2ef['id'];_0x38fe44['body'][_0x99f4('0x51')]=integrations[_0x99f4('0x52')](_0x38fe44[_0x99f4('0x4c')]['channel'],_0x38fe44[_0x99f4('0x4c')][_0x99f4('0x2e')]);_0x38fe44[_0x99f4('0x4c')][_0x99f4('0x53')]=integrations[_0x99f4('0x54')](_0x38fe44['body']['channel'],_0x38fe44[_0x99f4('0x4c')][_0x99f4('0x2e')]);return db[_0x99f4('0x55')]['create'](_0x38fe44[_0x99f4('0x4c')],{'include':[{'model':db[_0x99f4('0x56')],'as':_0x99f4('0x51')},{'model':db[_0x99f4('0x56')],'as':_0x99f4('0x53')}]});}return null;})['then'](respondWithResult(_0x14960f,null))[_0x99f4('0x45')](handleError(_0x14960f,null));};function getAccessToken(_0xc1e07e){return new Promise(function(_0x37556b,_0x5e90bf){var _0x904c83;switch(_0xc1e07e[_0x99f4('0x57')]){case'US':_0x904c83=_0x99f4('0x58');break;case'AU':_0x904c83=_0x99f4('0x59');break;case'EU':_0x904c83=_0x99f4('0x5a');break;case'IN':_0x904c83=_0x99f4('0x5b');break;case'CN':_0x904c83=_0x99f4('0x5c');break;default:_0x904c83=_0x99f4('0x5a');break;}var _0x5c60b7={'method':_0x99f4('0x5d'),'uri':_0x904c83+_0x99f4('0x5e'),'qs':{'refresh_token':_0xc1e07e[_0x99f4('0x5f')],'client_id':_0xc1e07e['clientId'],'client_secret':_0xc1e07e[_0x99f4('0x60')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x5c60b7)['then'](function(_0x56424d){if(_0x56424d[_0x99f4('0x61')]){_0x37556b(_0x56424d['access_token']);}else{_0x5e90bf(_0x99f4('0x62'));}})['catch'](function(_0x19b5e3){_0x5e90bf(_0x19b5e3);});});}exports[_0x99f4('0x63')]=function(_0x304326,_0x1edf77,_0xe1d50f){var _0x2151f5,_0x59472e,_0x51fdca,_0x3a6306,_0x52111e;return db[_0x99f4('0x40')]['findOne']({'where':{'id':_0x304326[_0x99f4('0x47')]['id']},'attributes':['id',_0x99f4('0x64'),_0x99f4('0x57'),_0x99f4('0x65'),_0x99f4('0x60'),_0x99f4('0x66'),_0x99f4('0x67'),_0x99f4('0x5f')]})[_0x99f4('0x26')](handleEntityNotFound(_0x1edf77,null))[_0x99f4('0x26')](function(_0x27847e){_0x52111e=_0x27847e;_0x2151f5=_0x52111e[_0x99f4('0x64')];_0x59472e=_0x2151f5===_0x99f4('0x68')?'eu':'com';_0x51fdca=_0x52111e[_0x99f4('0x66')];var _0x44aa7f=_0x51fdca['slice'](-0x1);if(_0x44aa7f==='/'||_0x44aa7f==='\x5c'||_0x44aa7f===':'){_0x51fdca=_0x51fdca[_0x99f4('0x69')](0x0,_0x51fdca[_0x99f4('0x6a')](_0x44aa7f));}if(!_0x52111e[_0x99f4('0x5f')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x52111e);})[_0x99f4('0x26')](function(_0x48224d){if(_0x48224d){return rp({'method':_0x99f4('0x6b'),'uri':util['format'](_0x99f4('0x6c'),_0x59472e),'qs':{'module':_0x99f4('0x6d')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x48224d},'json':!![]});}})[_0x99f4('0x26')](function(_0x548c46){if(_0x548c46){if(_0x548c46[_0x99f4('0x6e')]&&_0x548c46[_0x99f4('0x6e')][_0x99f4('0x28')]){throw new Error(_0x548c46[_0x99f4('0x6e')][_0x99f4('0x28')][_0x99f4('0x6f')]);}var _0x46c83f=[];var _0x34a215=[];var _0x48cd47=[_0x99f4('0x70'),_0x99f4('0x71'),_0x99f4('0x72'),_0x99f4('0x73'),'Call_Duration',_0x99f4('0x74'),_0x99f4('0x75'),_0x99f4('0x76')];_0x34a215=_[_0x99f4('0x77')](_0x548c46[_0x99f4('0x35')],function(_0x2344a9){return _0x48cd47[_0x99f4('0x78')](_0x2344a9[_0x99f4('0x79')]);});for(var _0x48f858=0x0;_0x48f858<_0x34a215[_0x99f4('0x49')];_0x48f858++){if(_0x34a215[_0x48f858][_0x99f4('0x7a')]===![]){_0x46c83f['push']({'id':_0x34a215[_0x48f858]['id'],'name':_0x34a215[_0x48f858][_0x99f4('0x7b')],'custom':_0x34a215[_0x48f858][_0x99f4('0x7c')],'options':_0x34a215[_0x48f858][_0x99f4('0x7d')]===_0x99f4('0x7e')&&_0x34a215[_0x48f858][_0x99f4('0x7f')]['length']>-0x1?_[_0x99f4('0x30')](_0x34a215[_0x48f858][_0x99f4('0x7f')],function(_0x57886e){return{'name':_0x57886e,'value':_0x57886e};}):[]});}}return{'count':_0x46c83f['length'],'rows':_0x46c83f};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x1edf77,null))[_0x99f4('0x45')](function(_0x41039a){var _0x263ec1=_0x304326[_0x99f4('0x31')][_0x99f4('0x80')]?0x1f4:_0x41039a[_0x99f4('0x81')]||0x1f4;logger[_0x99f4('0x28')](_0x99f4('0x82'),_0x99f4('0x63'),_0x263ec1,JSON[_0x99f4('0x83')](_0x41039a));delete _0x41039a[_0x99f4('0x2a')];if(_0x263ec1===0x191){_0x263ec1=0x190;}_0x1edf77[_0x99f4('0x1b')](_0x263ec1)[_0x99f4('0x2b')](_0x304326[_0x99f4('0x31')]['test']?{'message':_0x99f4('0x84'),'statusCode':_0x41039a[_0x99f4('0x81')]}:_0x41039a);});};
\ No newline at end of file
+var _0xdb63=['VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','fields','create','body','find','destroy','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','ZohoConfiguration','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','POST','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','serverUrl','host','com','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','Calls','Zoho-oauthtoken\x20','response','message','Subject','WhoId','Call_Duration','Call_Result','Call_Start_Time','remove','includes','api_name','push','display_label','custom_field','data_type','pick_list_values','test','stringify','statusCode','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','error','name','map','ZohoAccount','rawAttributes','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter'];(function(_0x30207d,_0x9a4466){var _0x282210=function(_0x3f0b7b){while(--_0x3f0b7b){_0x30207d['push'](_0x30207d['shift']());}};_0x282210(++_0x9a4466);}(_0xdb63,0x132));var _0x3db6=function(_0x41be46,_0x13937f){_0x41be46=_0x41be46-0x0;var _0x41b9ef=_0xdb63[_0x41be46];return _0x41b9ef;};'use strict';var emlformat=require(_0x3db6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3db6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3db6('0x2'));var moment=require(_0x3db6('0x3'));var BPromise=require(_0x3db6('0x4'));var Mustache=require(_0x3db6('0x5'));var util=require(_0x3db6('0x6'));var path=require('path');var sox=require(_0x3db6('0x7'));var csv=require(_0x3db6('0x8'));var ejs=require(_0x3db6('0x9'));var fs=require('fs');var fs_extra=require(_0x3db6('0xa'));var _=require(_0x3db6('0xb'));var squel=require(_0x3db6('0xc'));var crypto=require('crypto');var jsforce=require(_0x3db6('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3db6('0x8'));var querystring=require(_0x3db6('0xe'));var Papa=require(_0x3db6('0xf'));var Redis=require(_0x3db6('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3db6('0x11'));var hardwareService=require(_0x3db6('0x12'));var logger=require('../../config/logger')(_0x3db6('0x13'));var utils=require('../../config/utils');var config=require(_0x3db6('0x14'));var licenseUtil=require(_0x3db6('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0x3db6('0x16'));function respondWithStatusCode(_0x535aea,_0xef4384){_0xef4384=_0xef4384||0xcc;return function(_0xc42efe){if(_0xc42efe){return _0x535aea[_0x3db6('0x17')](_0xef4384);}return _0x535aea[_0x3db6('0x18')](_0xef4384)[_0x3db6('0x19')]();};}function respondWithResult(_0x5431cf,_0x1f85f5){_0x1f85f5=_0x1f85f5||0xc8;return function(_0xe3b062){if(_0xe3b062){return _0x5431cf[_0x3db6('0x18')](_0x1f85f5)[_0x3db6('0x1a')](_0xe3b062);}};}function respondWithFilteredResult(_0x3e027d,_0x3ba351){return function(_0xbe149){if(_0xbe149){var _0x23771c=typeof _0x3ba351[_0x3db6('0x1b')]===_0x3db6('0x1c')&&typeof _0x3ba351['limit']===_0x3db6('0x1c');var _0x38cfa8=_0xbe149[_0x3db6('0x1d')];var _0x279464=_0x23771c?0x0:_0x3ba351[_0x3db6('0x1b')];var _0x45281c=_0x23771c?_0xbe149['count']:_0x3ba351[_0x3db6('0x1b')]+_0x3ba351[_0x3db6('0x1e')];var _0x51713d;if(_0x45281c>=_0x38cfa8){_0x45281c=_0x38cfa8;_0x51713d=0xc8;}else{_0x51713d=0xce;}_0x3e027d[_0x3db6('0x18')](_0x51713d);return _0x3e027d[_0x3db6('0x1f')](_0x3db6('0x20'),_0x279464+'-'+_0x45281c+'/'+_0x38cfa8)['json'](_0xbe149);}return null;};}function patchUpdates(_0x55a269){return function(_0x13e871){try{jsonpatch[_0x3db6('0x21')](_0x13e871,_0x55a269,!![]);}catch(_0x52e65f){return BPromise['reject'](_0x52e65f);}return _0x13e871[_0x3db6('0x22')]();};}function saveUpdates(_0x5e207e,_0x1b4b47){return function(_0x2acd1f){if(_0x2acd1f){return _0x2acd1f[_0x3db6('0x23')](_0x5e207e)['then'](function(_0xda1480){return _0xda1480;});}return null;};}function removeEntity(_0x83bdf3,_0x15ea49){return function(_0x4fe279){if(_0x4fe279){return _0x4fe279['destroy']()[_0x3db6('0x24')](function(){_0x83bdf3['status'](0xcc)[_0x3db6('0x19')]();});}};}function handleEntityNotFound(_0x13106a,_0x44a43c){return function(_0x1aa761){if(!_0x1aa761){_0x13106a['sendStatus'](0x194);}return _0x1aa761;};}function handleError(_0xcfc87f,_0x151727){_0x151727=_0x151727||0x1f4;return function(_0xce28fc){logger[_0x3db6('0x25')](_0xce28fc['stack']);if(_0xce28fc[_0x3db6('0x26')]){delete _0xce28fc[_0x3db6('0x26')];}_0xcfc87f[_0x3db6('0x18')](_0x151727)['send'](_0xce28fc);};}exports['index']=function(_0x3b5c8d,_0x113f5d){var _0x1faf21={},_0x2fd661={},_0xae52c0={'count':0x0,'rows':[]};var _0x3bee1b=_[_0x3db6('0x27')](db[_0x3db6('0x28')][_0x3db6('0x29')],function(_0x3e8a2d){return{'name':_0x3e8a2d['fieldName'],'type':_0x3e8a2d[_0x3db6('0x2a')]['key']};});_0x2fd661[_0x3db6('0x2b')]=_[_0x3db6('0x27')](_0x3bee1b,_0x3db6('0x26'));_0x2fd661[_0x3db6('0x2c')]=_[_0x3db6('0x2d')](_0x3b5c8d[_0x3db6('0x2c')]);_0x2fd661[_0x3db6('0x2e')]=_[_0x3db6('0x2f')](_0x2fd661[_0x3db6('0x2b')],_0x2fd661[_0x3db6('0x2c')]);_0x1faf21[_0x3db6('0x30')]=_[_0x3db6('0x2f')](_0x2fd661['model'],qs['fields'](_0x3b5c8d[_0x3db6('0x2c')]['fields']));_0x1faf21[_0x3db6('0x30')]=_0x1faf21['attributes'][_0x3db6('0x31')]?_0x1faf21['attributes']:_0x2fd661['model'];if(!_0x3b5c8d[_0x3db6('0x2c')][_0x3db6('0x32')](_0x3db6('0x33'))){_0x1faf21['limit']=qs['limit'](_0x3b5c8d[_0x3db6('0x2c')][_0x3db6('0x1e')]);_0x1faf21['offset']=qs[_0x3db6('0x1b')](_0x3b5c8d['query']['offset']);}_0x1faf21[_0x3db6('0x34')]=qs[_0x3db6('0x35')](_0x3b5c8d[_0x3db6('0x2c')][_0x3db6('0x35')]);_0x1faf21[_0x3db6('0x36')]=qs[_0x3db6('0x2e')](_[_0x3db6('0x37')](_0x3b5c8d['query'],_0x2fd661[_0x3db6('0x2e')]),_0x3bee1b);if(_0x3b5c8d[_0x3db6('0x2c')][_0x3db6('0x38')]){_0x1faf21[_0x3db6('0x36')]=_['merge'](_0x1faf21['where'],{'$or':_[_0x3db6('0x27')](_0x3bee1b,function(_0x179ccc){if(_0x179ccc[_0x3db6('0x2a')]!==_0x3db6('0x39')){var _0x1a3d63={};_0x1a3d63[_0x179ccc[_0x3db6('0x26')]]={'$like':'%'+_0x3b5c8d[_0x3db6('0x2c')][_0x3db6('0x38')]+'%'};return _0x1a3d63;}})});}_0x1faf21=_[_0x3db6('0x3a')]({},_0x1faf21,_0x3b5c8d[_0x3db6('0x3b')]);var _0x124c2b={'where':_0x1faf21[_0x3db6('0x36')]};return db[_0x3db6('0x28')][_0x3db6('0x1d')](_0x124c2b)['then'](function(_0x3eae7e){_0xae52c0[_0x3db6('0x1d')]=_0x3eae7e;if(_0x3b5c8d[_0x3db6('0x2c')][_0x3db6('0x3c')]){_0x1faf21[_0x3db6('0x3d')]=[{'all':!![]}];}return db[_0x3db6('0x28')]['findAll'](_0x1faf21);})[_0x3db6('0x24')](function(_0x3cd9a5){_0xae52c0[_0x3db6('0x3e')]=_0x3cd9a5;return _0xae52c0;})['then'](respondWithFilteredResult(_0x113f5d,_0x1faf21))[_0x3db6('0x3f')](handleError(_0x113f5d,null));};exports[_0x3db6('0x40')]=function(_0x14c6a2,_0x5a32f6){var _0x565ea2={'raw':![],'where':{'id':_0x14c6a2[_0x3db6('0x41')]['id']}},_0x19792d={};_0x19792d[_0x3db6('0x2b')]=_[_0x3db6('0x2d')](db[_0x3db6('0x28')][_0x3db6('0x29')]);_0x19792d[_0x3db6('0x2c')]=_[_0x3db6('0x2d')](_0x14c6a2[_0x3db6('0x2c')]);_0x19792d[_0x3db6('0x2e')]=_['intersection'](_0x19792d[_0x3db6('0x2b')],_0x19792d[_0x3db6('0x2c')]);_0x565ea2[_0x3db6('0x30')]=_[_0x3db6('0x2f')](_0x19792d[_0x3db6('0x2b')],qs[_0x3db6('0x42')](_0x14c6a2['query']['fields']));_0x565ea2['attributes']=_0x565ea2[_0x3db6('0x30')][_0x3db6('0x31')]?_0x565ea2['attributes']:_0x19792d[_0x3db6('0x2b')];if(_0x14c6a2[_0x3db6('0x2c')][_0x3db6('0x3c')]){_0x565ea2['include']=[{'all':!![]}];}_0x565ea2=_[_0x3db6('0x3a')]({},_0x565ea2,_0x14c6a2[_0x3db6('0x3b')]);return db[_0x3db6('0x28')]['find'](_0x565ea2)[_0x3db6('0x24')](handleEntityNotFound(_0x5a32f6,null))['then'](respondWithResult(_0x5a32f6,null))[_0x3db6('0x3f')](handleError(_0x5a32f6,null));};exports[_0x3db6('0x43')]=function(_0x1ccab4,_0x684e6c){return db[_0x3db6('0x28')]['create'](_0x1ccab4['body'],{})[_0x3db6('0x24')](respondWithResult(_0x684e6c,0xc9))[_0x3db6('0x3f')](handleError(_0x684e6c,null));};exports[_0x3db6('0x23')]=function(_0x84465b,_0x2de2a5){if(_0x84465b['body']['id']){delete _0x84465b[_0x3db6('0x44')]['id'];}return db[_0x3db6('0x28')][_0x3db6('0x45')]({'where':{'id':_0x84465b[_0x3db6('0x41')]['id']}})['then'](handleEntityNotFound(_0x2de2a5,null))[_0x3db6('0x24')](saveUpdates(_0x84465b['body'],null))[_0x3db6('0x24')](respondWithResult(_0x2de2a5,null))['catch'](handleError(_0x2de2a5,null));};exports[_0x3db6('0x46')]=function(_0x482f17,_0x23db5d){return db[_0x3db6('0x28')][_0x3db6('0x45')]({'where':{'id':_0x482f17[_0x3db6('0x41')]['id']}})[_0x3db6('0x24')](handleEntityNotFound(_0x23db5d,null))[_0x3db6('0x24')](removeEntity(_0x23db5d,null))[_0x3db6('0x3f')](handleError(_0x23db5d,null));};exports[_0x3db6('0x47')]=function(_0x2bf365,_0x3f63c8,_0x3cba83){var _0x1c8945={};var _0x4d6e19={};var _0x26c785;var _0x433be1;return db[_0x3db6('0x28')][_0x3db6('0x48')]({'where':{'id':_0x2bf365[_0x3db6('0x41')]['id']}})[_0x3db6('0x24')](handleEntityNotFound(_0x3f63c8,null))[_0x3db6('0x24')](function(_0x7a0d4f){if(_0x7a0d4f){_0x26c785=_0x7a0d4f;_0x4d6e19[_0x3db6('0x2b')]=_[_0x3db6('0x2d')](db['ZohoConfiguration'][_0x3db6('0x29')]);_0x4d6e19[_0x3db6('0x2c')]=_['keys'](_0x2bf365[_0x3db6('0x2c')]);_0x4d6e19[_0x3db6('0x2e')]=_['intersection'](_0x4d6e19[_0x3db6('0x2b')],_0x4d6e19[_0x3db6('0x2c')]);_0x1c8945[_0x3db6('0x30')]=_[_0x3db6('0x2f')](_0x4d6e19['model'],qs[_0x3db6('0x42')](_0x2bf365['query'][_0x3db6('0x42')]));_0x1c8945['attributes']=_0x1c8945[_0x3db6('0x30')][_0x3db6('0x31')]?_0x1c8945['attributes']:_0x4d6e19[_0x3db6('0x2b')];_0x1c8945[_0x3db6('0x34')]=qs[_0x3db6('0x35')](_0x2bf365[_0x3db6('0x2c')][_0x3db6('0x35')]);_0x1c8945[_0x3db6('0x36')]=qs[_0x3db6('0x2e')](_[_0x3db6('0x37')](_0x2bf365[_0x3db6('0x2c')],_0x4d6e19[_0x3db6('0x2e')]));if(_0x2bf365['query']['filter']){_0x1c8945['where']=_[_0x3db6('0x3a')](_0x1c8945[_0x3db6('0x36')],{'$or':_[_0x3db6('0x27')](_0x1c8945[_0x3db6('0x30')],function(_0x1643df){var _0x3c8f10={};_0x3c8f10[_0x1643df]={'$like':'%'+_0x2bf365[_0x3db6('0x2c')][_0x3db6('0x38')]+'%'};return _0x3c8f10;})});}_0x1c8945=_[_0x3db6('0x3a')]({},_0x1c8945,_0x2bf365['options']);return _0x26c785['getConfigurations'](_0x1c8945);}})[_0x3db6('0x24')](function(_0x4121e2){if(_0x4121e2){_0x433be1=_0x4121e2[_0x3db6('0x31')];if(!_0x2bf365[_0x3db6('0x2c')]['hasOwnProperty']('nolimit')){_0x1c8945[_0x3db6('0x1e')]=qs[_0x3db6('0x1e')](_0x2bf365[_0x3db6('0x2c')][_0x3db6('0x1e')]);_0x1c8945[_0x3db6('0x1b')]=qs[_0x3db6('0x1b')](_0x2bf365[_0x3db6('0x2c')][_0x3db6('0x1b')]);}return _0x26c785[_0x3db6('0x47')](_0x1c8945);}})[_0x3db6('0x24')](function(_0x525911){if(_0x525911){return _0x525911?{'count':_0x433be1,'rows':_0x525911}:null;}})['then'](respondWithResult(_0x3f63c8,null))[_0x3db6('0x3f')](handleError(_0x3f63c8,null));};exports[_0x3db6('0x49')]=function(_0x4ca1da,_0x280f52,_0x35eabe){if(_0x4ca1da['body']['id']){delete _0x4ca1da[_0x3db6('0x44')]['id'];}return db['ZohoAccount'][_0x3db6('0x48')]({'where':{'id':_0x4ca1da[_0x3db6('0x41')]['id']}})[_0x3db6('0x24')](handleEntityNotFound(_0x280f52,null))[_0x3db6('0x24')](function(_0x2a4254){if(_0x2a4254){_0x4ca1da[_0x3db6('0x44')][_0x3db6('0x4a')]=_0x2a4254['id'];_0x4ca1da['body'][_0x3db6('0x4b')]=integrations[_0x3db6('0x4c')](_0x4ca1da[_0x3db6('0x44')][_0x3db6('0x4d')],_0x4ca1da[_0x3db6('0x44')][_0x3db6('0x2a')]);_0x4ca1da[_0x3db6('0x44')][_0x3db6('0x4e')]=integrations['getDescriptions'](_0x4ca1da[_0x3db6('0x44')][_0x3db6('0x4d')],_0x4ca1da['body'][_0x3db6('0x2a')]);return db[_0x3db6('0x4f')][_0x3db6('0x43')](_0x4ca1da[_0x3db6('0x44')],{'include':[{'model':db[_0x3db6('0x50')],'as':_0x3db6('0x4b')},{'model':db['ZohoField'],'as':_0x3db6('0x4e')}]});}return null;})[_0x3db6('0x24')](respondWithResult(_0x280f52,null))[_0x3db6('0x3f')](handleError(_0x280f52,null));};function getAccessToken(_0x554ade){return new Promise(function(_0x5effe1,_0x2eeddc){var _0x1c762;switch(_0x554ade[_0x3db6('0x51')]){case'US':_0x1c762=_0x3db6('0x52');break;case'AU':_0x1c762=_0x3db6('0x53');break;case'EU':_0x1c762=_0x3db6('0x54');break;case'IN':_0x1c762=_0x3db6('0x55');break;case'CN':_0x1c762='https://accounts.zoho.com.cn';break;default:_0x1c762=_0x3db6('0x54');break;}var _0x1e447b={'method':_0x3db6('0x56'),'uri':_0x1c762+'/oauth/v2/token','qs':{'refresh_token':_0x554ade[_0x3db6('0x57')],'client_id':_0x554ade[_0x3db6('0x58')],'client_secret':_0x554ade[_0x3db6('0x59')],'grant_type':_0x3db6('0x5a')},'json':!![]};return rp(_0x1e447b)['then'](function(_0x224262){if(_0x224262[_0x3db6('0x5b')]){_0x5effe1(_0x224262['access_token']);}else{_0x2eeddc(_0x3db6('0x5c'));}})[_0x3db6('0x3f')](function(_0x48bbcf){_0x2eeddc(_0x48bbcf);});});}exports[_0x3db6('0x5d')]=function(_0x58895a,_0x2c2aa0,_0x2765ef){var _0x700384,_0x2f1aa9,_0x51f776,_0x1c3041,_0x3a298e;return db[_0x3db6('0x28')][_0x3db6('0x48')]({'where':{'id':_0x58895a[_0x3db6('0x41')]['id']},'attributes':['id','host',_0x3db6('0x51'),'clientId',_0x3db6('0x59'),_0x3db6('0x5e'),'code',_0x3db6('0x57')]})[_0x3db6('0x24')](handleEntityNotFound(_0x2c2aa0,null))[_0x3db6('0x24')](function(_0xebf0dd){_0x3a298e=_0xebf0dd;_0x700384=_0x3a298e[_0x3db6('0x5f')];_0x2f1aa9=_0x700384==='zoho.eu'?'eu':_0x3db6('0x60');_0x51f776=_0x3a298e[_0x3db6('0x5e')];var _0x5bdd75=_0x51f776['slice'](-0x1);if(_0x5bdd75==='/'||_0x5bdd75==='\x5c'||_0x5bdd75===':'){_0x51f776=_0x51f776[_0x3db6('0x61')](0x0,_0x51f776[_0x3db6('0x62')](_0x5bdd75));}if(!_0x3a298e[_0x3db6('0x57')]){throw new Error(_0x3db6('0x63'));}return getAccessToken(_0x3a298e);})['then'](function(_0x4d505b){if(_0x4d505b){return rp({'method':'GET','uri':util[_0x3db6('0x64')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x2f1aa9),'qs':{'module':_0x3db6('0x65')},'headers':{'Authorization':_0x3db6('0x66')+_0x4d505b},'json':!![]});}})['then'](function(_0x205ceb){if(_0x205ceb){if(_0x205ceb[_0x3db6('0x67')]&&_0x205ceb[_0x3db6('0x67')][_0x3db6('0x25')]){throw new Error(_0x205ceb[_0x3db6('0x67')][_0x3db6('0x25')][_0x3db6('0x68')]);}var _0x25ce9b=[];var _0x396e8e=[];var _0x1d12ab=['Owner',_0x3db6('0x69'),'Description',_0x3db6('0x6a'),_0x3db6('0x6b'),_0x3db6('0x6c'),_0x3db6('0x6d'),'Call_Type'];_0x396e8e=_[_0x3db6('0x6e')](_0x205ceb[_0x3db6('0x42')],function(_0x37ddd4){return _0x1d12ab[_0x3db6('0x6f')](_0x37ddd4[_0x3db6('0x70')]);});for(var _0x11bfd1=0x0;_0x11bfd1<_0x396e8e[_0x3db6('0x31')];_0x11bfd1++){if(_0x396e8e[_0x11bfd1]['system_mandatory']===![]){_0x25ce9b[_0x3db6('0x71')]({'id':_0x396e8e[_0x11bfd1]['id'],'name':_0x396e8e[_0x11bfd1][_0x3db6('0x72')],'custom':_0x396e8e[_0x11bfd1][_0x3db6('0x73')],'options':_0x396e8e[_0x11bfd1][_0x3db6('0x74')]==='picklist'&&_0x396e8e[_0x11bfd1][_0x3db6('0x75')][_0x3db6('0x31')]>-0x1?_[_0x3db6('0x27')](_0x396e8e[_0x11bfd1][_0x3db6('0x75')],function(_0x564e37){return{'name':_0x564e37,'value':_0x564e37};}):[]});}}return{'count':_0x25ce9b['length'],'rows':_0x25ce9b};}else{return{'count':0x0,'rows':[]};}})[_0x3db6('0x24')](respondWithResult(_0x2c2aa0,null))[_0x3db6('0x3f')](function(_0x323937){var _0x3de010=_0x58895a[_0x3db6('0x2c')][_0x3db6('0x76')]?0x1f4:_0x323937['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x3db6('0x5d'),_0x3de010,JSON[_0x3db6('0x77')](_0x323937));delete _0x323937[_0x3db6('0x26')];if(_0x3de010===0x191){_0x3de010=0x190;}_0x2c2aa0[_0x3db6('0x18')](_0x3de010)['send'](_0x58895a['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x323937[_0x3db6('0x78')]}:_0x323937);});};
\ No newline at end of file
index 066795d..abf881b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x111b=['then','parse','refresh_token','refreshToken','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','format','name','clientSecret','host','info','inspect','catch','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./intZohoAccount.attributes','ZohoAccount','zone','changed','code','serverUrl','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','clientId','application/x-www-form-urlencoded'];(function(_0x1fcf30,_0x221e1b){var _0x3c7c3d=function(_0x2bcc14){while(--_0x2bcc14){_0x1fcf30['push'](_0x1fcf30['shift']());}};_0x3c7c3d(++_0x221e1b);}(_0x111b,0x1ee));var _0xb111=function(_0x4baf26,_0x34dc70){_0x4baf26=_0x4baf26-0x0;var _0x3d12c6=_0x111b[_0x4baf26];return _0x3d12c6;};'use strict';var _=require(_0xb111('0x0'));var util=require(_0xb111('0x1'));var logger=require(_0xb111('0x2'))(_0xb111('0x3'));var moment=require(_0xb111('0x4'));var BPromise=require(_0xb111('0x5'));var rp=require(_0xb111('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb111('0x7'));var config=require('../../config/environment');var attributes=require(_0xb111('0x8'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x2fad7d,_0x5320b3){return _0x2fad7d['define'](_0xb111('0x9'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4ddc17,_0x3b27f1,_0x54f320){if(_0x4ddc17['changed'](_0xb111('0xa'))||_0x4ddc17[_0xb111('0xb')]('serverUrl')||_0x4ddc17[_0xb111('0xb')]('clientId')||_0x4ddc17[_0xb111('0xb')]('clientSecret')||_0x4ddc17[_0xb111('0xb')](_0xb111('0xc'))||_0x4ddc17[_0xb111('0xb')]('host')){var _0x3f571e,_0x479edc;_0x3f571e=_0x4ddc17[_0xb111('0xd')];var _0x19d586=_0x3f571e['slice'](-0x1);if(_0x19d586==='/'||_0x19d586==='\x5c'||_0x19d586===':'){_0x3f571e=_0x3f571e[_0xb111('0xe')](0x0,_0x3f571e[_0xb111('0xf')](_0x19d586));}switch(_0x4ddc17[_0xb111('0xa')]){case'US':_0x479edc=_0xb111('0x10');break;case'AU':_0x479edc=_0xb111('0x11');break;case'IN':_0x479edc=_0xb111('0x12');break;case'CN':_0x479edc=_0xb111('0x13');break;default:_0x479edc=_0xb111('0x14');break;}var _0x4d6481={'method':_0xb111('0x15'),'uri':_0x479edc+_0xb111('0x16'),'form':{'grant_type':_0xb111('0x17'),'client_id':_0x4ddc17[_0xb111('0x18')],'client_secret':_0x4ddc17['clientSecret'],'redirect_uri':_0x4ddc17['serverUrl'],'code':_0x4ddc17[_0xb111('0xc')]},'headers':{'Content-Type':_0xb111('0x19')}};return rp(_0x4d6481)[_0xb111('0x1a')](function(_0x22e212){var _0x4e3803=JSON[_0xb111('0x1b')](_0x22e212);if(_0x4e3803[_0xb111('0x1c')]){_0x4ddc17[_0xb111('0x1d')]=_0x4e3803['refresh_token'];logger['info'](util['format'](_0xb111('0x1e'),_0x4ddc17['name'],_0x4ddc17['id']));}else{logger[_0xb111('0x1f')](util['format'](_0xb111('0x20'),_0x4ddc17['name'],_0x4ddc17['id']),util['inspect'](_0x4e3803,{'showHidden':![],'depth':null}));}return _0x54f320(null,_0x3b27f1);})['catch'](function(_0x480dc1){logger[_0xb111('0x1f')](util[_0xb111('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x4ddc17[_0xb111('0x22')],_0x4ddc17['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x54f320(_0x480dc1);});}else{return _0x54f320(null,_0x3b27f1);}},'beforeUpdate':function(_0x3dd718,_0x515045,_0x1171a4){if(_0x3dd718[_0xb111('0xb')](_0xb111('0xa'))||_0x3dd718[_0xb111('0xb')](_0xb111('0xd'))||_0x3dd718[_0xb111('0xb')](_0xb111('0x18'))||_0x3dd718['changed'](_0xb111('0x23'))||_0x3dd718['changed'](_0xb111('0xc'))||_0x3dd718[_0xb111('0xb')](_0xb111('0x24'))){var _0xf96c8c,_0x265f97;_0xf96c8c=_0x3dd718[_0xb111('0xd')];var _0x16b56e=_0xf96c8c['slice'](-0x1);if(_0x16b56e==='/'||_0x16b56e==='\x5c'||_0x16b56e===':'){_0xf96c8c=_0xf96c8c[_0xb111('0xe')](0x0,_0xf96c8c['lastIndexOf'](_0x16b56e));}switch(_0x3dd718['zone']){case'US':_0x265f97=_0xb111('0x10');break;case'AU':_0x265f97=_0xb111('0x11');break;case'IN':_0x265f97='https://accounts.zoho.in';break;case'CN':_0x265f97=_0xb111('0x13');break;default:_0x265f97='https://accounts.zoho.eu';break;}var _0x17d976={'method':_0xb111('0x15'),'uri':_0x265f97+_0xb111('0x16'),'form':{'grant_type':_0xb111('0x17'),'client_id':_0x3dd718[_0xb111('0x18')],'client_secret':_0x3dd718[_0xb111('0x23')],'redirect_uri':_0x3dd718[_0xb111('0xd')],'code':_0x3dd718[_0xb111('0xc')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x17d976)[_0xb111('0x1a')](function(_0x22ae73){var _0x36987c=JSON[_0xb111('0x1b')](_0x22ae73);if(_0x36987c[_0xb111('0x1c')]){_0x3dd718['refreshToken']=_0x36987c[_0xb111('0x1c')];logger[_0xb111('0x25')](util['format']('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3dd718[_0xb111('0x22')],_0x3dd718['id']));}else{logger[_0xb111('0x1f')](util[_0xb111('0x21')](_0xb111('0x20'),_0x3dd718[_0xb111('0x22')],_0x3dd718['id']),util[_0xb111('0x26')](_0x36987c,{'showHidden':![],'depth':null}));}return _0x1171a4(null,_0x515045);})[_0xb111('0x27')](function(_0x4a15f1){logger[_0xb111('0x1f')](util[_0xb111('0x21')](_0xb111('0x20'),_0x3dd718['name'],_0x3dd718['id']),util[_0xb111('0x26')](parsedResult,{'showHidden':![],'depth':null}));return _0x1171a4(_0x4a15f1);});}else{return _0x1171a4(null,_0x515045);}}}});};
\ No newline at end of file
+var _0xdc3c=['bluebird','request-promise','path','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientId','clientSecret','host','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','code','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','info','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','catch','format','https://accounts.zoho.com.au','lodash','../../config/logger','api','moment'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xdc3c,0x1b4));var _0xcdc3=function(_0x5a1747,_0x3b215d){_0x5a1747=_0x5a1747-0x0;var _0x470db1=_0xdc3c[_0x5a1747];return _0x470db1;};'use strict';var _=require(_0xcdc3('0x0'));var util=require('util');var logger=require(_0xcdc3('0x1'))(_0xcdc3('0x2'));var moment=require(_0xcdc3('0x3'));var BPromise=require(_0xcdc3('0x4'));var rp=require(_0xcdc3('0x5'));var fs=require('fs');var path=require(_0xcdc3('0x6'));var rimraf=require(_0xcdc3('0x7'));var config=require(_0xcdc3('0x8'));var attributes=require(_0xcdc3('0x9'));var integrations=require(_0xcdc3('0xa'));module[_0xcdc3('0xb')]=function(_0x45bb35,_0x406814){return _0x45bb35[_0xcdc3('0xc')](_0xcdc3('0xd'),attributes,{'tableName':_0xcdc3('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x58c8f3,_0x4f3d2a,_0x51670a){if(_0x58c8f3[_0xcdc3('0xf')](_0xcdc3('0x10'))||_0x58c8f3[_0xcdc3('0xf')](_0xcdc3('0x11'))||_0x58c8f3[_0xcdc3('0xf')](_0xcdc3('0x12'))||_0x58c8f3[_0xcdc3('0xf')](_0xcdc3('0x13'))||_0x58c8f3[_0xcdc3('0xf')]('code')||_0x58c8f3['changed'](_0xcdc3('0x14'))){var _0x1ea112,_0x1c22c5;_0x1ea112=_0x58c8f3[_0xcdc3('0x11')];var _0x25175e=_0x1ea112[_0xcdc3('0x15')](-0x1);if(_0x25175e==='/'||_0x25175e==='\x5c'||_0x25175e===':'){_0x1ea112=_0x1ea112[_0xcdc3('0x16')](0x0,_0x1ea112[_0xcdc3('0x17')](_0x25175e));}switch(_0x58c8f3['zone']){case'US':_0x1c22c5=_0xcdc3('0x18');break;case'AU':_0x1c22c5='https://accounts.zoho.com.au';break;case'IN':_0x1c22c5=_0xcdc3('0x19');break;case'CN':_0x1c22c5='https://accounts.zoho.com.cn';break;default:_0x1c22c5=_0xcdc3('0x1a');break;}var _0x1855ec={'method':_0xcdc3('0x1b'),'uri':_0x1c22c5+_0xcdc3('0x1c'),'form':{'grant_type':_0xcdc3('0x1d'),'client_id':_0x58c8f3[_0xcdc3('0x12')],'client_secret':_0x58c8f3[_0xcdc3('0x13')],'redirect_uri':_0x58c8f3[_0xcdc3('0x11')],'code':_0x58c8f3[_0xcdc3('0x1e')]},'headers':{'Content-Type':_0xcdc3('0x1f')}};return rp(_0x1855ec)[_0xcdc3('0x20')](function(_0x480c1c){var _0x285adb=JSON[_0xcdc3('0x21')](_0x480c1c);if(_0x285adb[_0xcdc3('0x22')]){_0x58c8f3[_0xcdc3('0x23')]=_0x285adb[_0xcdc3('0x22')];logger[_0xcdc3('0x24')](util['format']('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x58c8f3['name'],_0x58c8f3['id']));}else{logger[_0xcdc3('0x25')](util['format'](_0xcdc3('0x26'),_0x58c8f3[_0xcdc3('0x27')],_0x58c8f3['id']),util[_0xcdc3('0x28')](_0x285adb,{'showHidden':![],'depth':null}));}return _0x51670a(null,_0x4f3d2a);})[_0xcdc3('0x29')](function(_0x158061){logger[_0xcdc3('0x25')](util[_0xcdc3('0x2a')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x58c8f3['name'],_0x58c8f3['id']),util[_0xcdc3('0x28')](parsedResult,{'showHidden':![],'depth':null}));return _0x51670a(_0x158061);});}else{return _0x51670a(null,_0x4f3d2a);}},'beforeUpdate':function(_0x2bc477,_0xaf9fc8,_0x2d822e){if(_0x2bc477['changed'](_0xcdc3('0x10'))||_0x2bc477[_0xcdc3('0xf')]('serverUrl')||_0x2bc477[_0xcdc3('0xf')](_0xcdc3('0x12'))||_0x2bc477['changed'](_0xcdc3('0x13'))||_0x2bc477[_0xcdc3('0xf')](_0xcdc3('0x1e'))||_0x2bc477[_0xcdc3('0xf')](_0xcdc3('0x14'))){var _0x3461c6,_0x32a44d;_0x3461c6=_0x2bc477[_0xcdc3('0x11')];var _0x4e8205=_0x3461c6[_0xcdc3('0x15')](-0x1);if(_0x4e8205==='/'||_0x4e8205==='\x5c'||_0x4e8205===':'){_0x3461c6=_0x3461c6['substring'](0x0,_0x3461c6[_0xcdc3('0x17')](_0x4e8205));}switch(_0x2bc477[_0xcdc3('0x10')]){case'US':_0x32a44d='https://accounts.zoho.com';break;case'AU':_0x32a44d=_0xcdc3('0x2b');break;case'IN':_0x32a44d=_0xcdc3('0x19');break;case'CN':_0x32a44d='https://accounts.zoho.com.cn';break;default:_0x32a44d=_0xcdc3('0x1a');break;}var _0x22a93c={'method':_0xcdc3('0x1b'),'uri':_0x32a44d+_0xcdc3('0x1c'),'form':{'grant_type':_0xcdc3('0x1d'),'client_id':_0x2bc477['clientId'],'client_secret':_0x2bc477[_0xcdc3('0x13')],'redirect_uri':_0x2bc477[_0xcdc3('0x11')],'code':_0x2bc477[_0xcdc3('0x1e')]},'headers':{'Content-Type':_0xcdc3('0x1f')}};return rp(_0x22a93c)[_0xcdc3('0x20')](function(_0x341074){var _0x168632=JSON[_0xcdc3('0x21')](_0x341074);if(_0x168632[_0xcdc3('0x22')]){_0x2bc477['refreshToken']=_0x168632[_0xcdc3('0x22')];logger[_0xcdc3('0x24')](util[_0xcdc3('0x2a')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2bc477[_0xcdc3('0x27')],_0x2bc477['id']));}else{logger[_0xcdc3('0x25')](util[_0xcdc3('0x2a')](_0xcdc3('0x26'),_0x2bc477[_0xcdc3('0x27')],_0x2bc477['id']),util[_0xcdc3('0x28')](_0x168632,{'showHidden':![],'depth':null}));}return _0x2d822e(null,_0xaf9fc8);})[_0xcdc3('0x29')](function(_0x43ef70){logger[_0xcdc3('0x25')](util[_0xcdc3('0x2a')](_0xcdc3('0x26'),_0x2bc477[_0xcdc3('0x27')],_0x2bc477['id']),util[_0xcdc3('0x28')](parsedResult,{'showHidden':![],'depth':null}));return _0x2d822e(_0x43ef70);});}else{return _0x2d822e(null,_0xaf9fc8);}}}});};
\ No newline at end of file
index db3e7de..1a6ac74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81b7=['debug','ShowZohoAccount','find','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','ZohoAccount,\x20%s,\x20%s','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ZohoAccount','raw','options','where','limit','include','map','model','attributes','GetZohoAccount'];(function(_0x156489,_0x2bbaf2){var _0x4d2814=function(_0x405381){while(--_0x405381){_0x156489['push'](_0x156489['shift']());}};_0x4d2814(++_0x2bbaf2);}(_0x81b7,0x1f2));var _0x781b=function(_0x1d5e5e,_0x3730d9){_0x1d5e5e=_0x1d5e5e-0x0;var _0x44981a=_0x81b7[_0x1d5e5e];return _0x44981a;};'use strict';var _=require('lodash');var util=require(_0x781b('0x0'));var moment=require(_0x781b('0x1'));var BPromise=require(_0x781b('0x2'));var rs=require(_0x781b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x781b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x781b('0x5'))(_0x781b('0x6'));var config=require(_0x781b('0x7'));var jayson=require(_0x781b('0x8'));var client=jayson['client'][_0x781b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd9d633,_0x482803,_0x4aa451){return new BPromise(function(_0x3de3cd,_0x33c04b){return client[_0x781b('0xa')](_0xd9d633,_0x4aa451)[_0x781b('0xb')](function(_0x5591d9){logger[_0x781b('0xc')](_0x781b('0xd'),_0x482803,'request\x20sent');logger['debug'](_0x781b('0xe'),_0x482803,'request\x20sent',JSON[_0x781b('0xf')](_0x5591d9));if(_0x5591d9['error']){if(_0x5591d9[_0x781b('0x10')]['code']===0x1f4){logger[_0x781b('0x10')]('ZohoAccount,\x20%s,\x20%s',_0x482803,_0x5591d9[_0x781b('0x10')][_0x781b('0x11')]);return _0x33c04b(_0x5591d9[_0x781b('0x10')][_0x781b('0x11')]);}logger[_0x781b('0x10')]('ZohoAccount,\x20%s,\x20%s',_0x482803,_0x5591d9[_0x781b('0x10')][_0x781b('0x11')]);return _0x3de3cd(_0x5591d9[_0x781b('0x10')][_0x781b('0x11')]);}else{logger['info'](_0x781b('0xd'),_0x482803,'request\x20sent');_0x3de3cd(_0x5591d9[_0x781b('0x12')][_0x781b('0x11')]);}})[_0x781b('0x13')](function(_0x4ac48a){logger[_0x781b('0x10')]('ZohoAccount,\x20%s,\x20%s',_0x482803,_0x4ac48a);_0x33c04b(_0x4ac48a);});});}exports['GetZohoAccount']=function(_0x2c62e5){var _0x177e18=this;return new Promise(function(_0x22d0da,_0x20585e){return db[_0x781b('0x14')]['findAll']({'raw':_0x2c62e5['options']?_0x2c62e5['options'][_0x781b('0x15')]===undefined?!![]:![]:!![],'where':_0x2c62e5[_0x781b('0x16')]?_0x2c62e5[_0x781b('0x16')][_0x781b('0x17')]||null:null,'attributes':_0x2c62e5[_0x781b('0x16')]?_0x2c62e5[_0x781b('0x16')]['attributes']||null:null,'limit':_0x2c62e5[_0x781b('0x16')]?_0x2c62e5[_0x781b('0x16')][_0x781b('0x18')]||null:null,'include':_0x2c62e5['options']?_0x2c62e5[_0x781b('0x16')][_0x781b('0x19')]?_[_0x781b('0x1a')](_0x2c62e5[_0x781b('0x16')]['include'],function(_0x28dcfc){return{'model':db[_0x28dcfc[_0x781b('0x1b')]],'as':_0x28dcfc['as'],'attributes':_0x28dcfc[_0x781b('0x1c')],'include':_0x28dcfc[_0x781b('0x19')]?_[_0x781b('0x1a')](_0x28dcfc['include'],function(_0x226d68){return{'model':db[_0x226d68[_0x781b('0x1b')]],'as':_0x226d68['as'],'attributes':_0x226d68[_0x781b('0x1c')],'include':_0x226d68[_0x781b('0x19')]?_[_0x781b('0x1a')](_0x226d68[_0x781b('0x19')],function(_0x48624d){return{'model':db[_0x48624d['model']],'as':_0x48624d['as'],'attributes':_0x48624d[_0x781b('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x781b('0xb')](function(_0x560449){logger[_0x781b('0xc')](_0x781b('0x1d'),_0x2c62e5);logger[_0x781b('0x1e')](_0x781b('0x1d'),_0x2c62e5,JSON[_0x781b('0xf')](_0x560449));_0x22d0da(_0x560449);})[_0x781b('0x13')](function(_0x1957c4){logger[_0x781b('0x10')](_0x781b('0x1d'),_0x1957c4[_0x781b('0x11')],_0x2c62e5);_0x20585e(_0x177e18[_0x781b('0x10')](0x1f4,_0x1957c4['message']));});});};exports[_0x781b('0x1f')]=function(_0x286a73){var _0x588f91=this;return new Promise(function(_0x536be8,_0xdfe3d4){return db[_0x781b('0x14')][_0x781b('0x20')]({'raw':_0x286a73[_0x781b('0x16')]?_0x286a73[_0x781b('0x16')][_0x781b('0x15')]===undefined?!![]:![]:!![],'where':_0x286a73[_0x781b('0x16')]?_0x286a73[_0x781b('0x16')]['where']||null:null,'attributes':_0x286a73[_0x781b('0x16')]?_0x286a73['options'][_0x781b('0x1c')]||null:null,'include':_0x286a73['options']?_0x286a73[_0x781b('0x16')][_0x781b('0x19')]?_['map'](_0x286a73[_0x781b('0x16')][_0x781b('0x19')],function(_0x1f6838){return{'model':db[_0x1f6838[_0x781b('0x1b')]],'as':_0x1f6838['as'],'attributes':_0x1f6838[_0x781b('0x1c')],'include':_0x1f6838[_0x781b('0x19')]?_['map'](_0x1f6838[_0x781b('0x19')],function(_0x4b62b3){return{'model':db[_0x4b62b3[_0x781b('0x1b')]],'as':_0x4b62b3['as'],'attributes':_0x4b62b3[_0x781b('0x1c')],'include':_0x4b62b3[_0x781b('0x19')]?_[_0x781b('0x1a')](_0x4b62b3[_0x781b('0x19')],function(_0x1ad7d2){return{'model':db[_0x1ad7d2[_0x781b('0x1b')]],'as':_0x1ad7d2['as'],'attributes':_0x1ad7d2[_0x781b('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x781b('0xb')](function(_0x23dad5){logger['info'](_0x781b('0x1f'),_0x286a73);logger[_0x781b('0x1e')](_0x781b('0x1f'),_0x286a73,JSON['stringify'](_0x23dad5));_0x536be8(_0x23dad5);})[_0x781b('0x13')](function(_0x521dc2){logger['error'](_0x781b('0x1f'),_0x521dc2[_0x781b('0x11')],_0x286a73);_0xdfe3d4(_0x588f91[_0x781b('0x10')](0x1f4,_0x521dc2['message']));});});};
\ No newline at end of file
+var _0xde46=['rpc','../../config/environment','jayson/promise','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ZohoAccount','findAll','options','include','map','model','attributes','GetZohoAccount','ShowZohoAccount','find','raw','where','lodash','util','moment','bluebird','../../mysqldb','../../config/logger'];(function(_0x3305de,_0x16582f){var _0x3b5a84=function(_0x57d7e1){while(--_0x57d7e1){_0x3305de['push'](_0x3305de['shift']());}};_0x3b5a84(++_0x16582f);}(_0xde46,0x14e));var _0x6de4=function(_0x3d0d79,_0x3f00bd){_0x3d0d79=_0x3d0d79-0x0;var _0x5503a8=_0xde46[_0x3d0d79];return _0x5503a8;};'use strict';var _=require(_0x6de4('0x0'));var util=require(_0x6de4('0x1'));var moment=require(_0x6de4('0x2'));var BPromise=require(_0x6de4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6de4('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6de4('0x5'))(_0x6de4('0x6'));var config=require(_0x6de4('0x7'));var jayson=require(_0x6de4('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x17f7ae,_0x507ca0,_0xb20ddf){return new BPromise(function(_0x12d3bb,_0x503d50){return client[_0x6de4('0x9')](_0x17f7ae,_0xb20ddf)[_0x6de4('0xa')](function(_0xe81ab9){logger[_0x6de4('0xb')](_0x6de4('0xc'),_0x507ca0,_0x6de4('0xd'));logger[_0x6de4('0xe')](_0x6de4('0xf'),_0x507ca0,_0x6de4('0xd'),JSON[_0x6de4('0x10')](_0xe81ab9));if(_0xe81ab9[_0x6de4('0x11')]){if(_0xe81ab9['error'][_0x6de4('0x12')]===0x1f4){logger[_0x6de4('0x11')](_0x6de4('0xc'),_0x507ca0,_0xe81ab9[_0x6de4('0x11')][_0x6de4('0x13')]);return _0x503d50(_0xe81ab9[_0x6de4('0x11')][_0x6de4('0x13')]);}logger[_0x6de4('0x11')]('ZohoAccount,\x20%s,\x20%s',_0x507ca0,_0xe81ab9[_0x6de4('0x11')]['message']);return _0x12d3bb(_0xe81ab9[_0x6de4('0x11')][_0x6de4('0x13')]);}else{logger[_0x6de4('0xb')]('ZohoAccount,\x20%s,\x20%s',_0x507ca0,_0x6de4('0xd'));_0x12d3bb(_0xe81ab9[_0x6de4('0x14')][_0x6de4('0x13')]);}})[_0x6de4('0x15')](function(_0x4b1584){logger[_0x6de4('0x11')]('ZohoAccount,\x20%s,\x20%s',_0x507ca0,_0x4b1584);_0x503d50(_0x4b1584);});});}exports['GetZohoAccount']=function(_0x162f59){var _0x402003=this;return new Promise(function(_0x2d358d,_0x3ca57f){return db[_0x6de4('0x16')][_0x6de4('0x17')]({'raw':_0x162f59[_0x6de4('0x18')]?_0x162f59[_0x6de4('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x162f59['options']?_0x162f59[_0x6de4('0x18')]['where']||null:null,'attributes':_0x162f59[_0x6de4('0x18')]?_0x162f59[_0x6de4('0x18')]['attributes']||null:null,'limit':_0x162f59[_0x6de4('0x18')]?_0x162f59[_0x6de4('0x18')]['limit']||null:null,'include':_0x162f59[_0x6de4('0x18')]?_0x162f59[_0x6de4('0x18')][_0x6de4('0x19')]?_[_0x6de4('0x1a')](_0x162f59['options'][_0x6de4('0x19')],function(_0x4ff96f){return{'model':db[_0x4ff96f[_0x6de4('0x1b')]],'as':_0x4ff96f['as'],'attributes':_0x4ff96f[_0x6de4('0x1c')],'include':_0x4ff96f[_0x6de4('0x19')]?_[_0x6de4('0x1a')](_0x4ff96f[_0x6de4('0x19')],function(_0x2cc9dd){return{'model':db[_0x2cc9dd[_0x6de4('0x1b')]],'as':_0x2cc9dd['as'],'attributes':_0x2cc9dd[_0x6de4('0x1c')],'include':_0x2cc9dd[_0x6de4('0x19')]?_[_0x6de4('0x1a')](_0x2cc9dd[_0x6de4('0x19')],function(_0x5bbf4d){return{'model':db[_0x5bbf4d[_0x6de4('0x1b')]],'as':_0x5bbf4d['as'],'attributes':_0x5bbf4d[_0x6de4('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x6de4('0xa')](function(_0x5dd6f4){logger[_0x6de4('0xb')](_0x6de4('0x1d'),_0x162f59);logger['debug']('GetZohoAccount',_0x162f59,JSON[_0x6de4('0x10')](_0x5dd6f4));_0x2d358d(_0x5dd6f4);})['catch'](function(_0x534dc0){logger[_0x6de4('0x11')](_0x6de4('0x1d'),_0x534dc0[_0x6de4('0x13')],_0x162f59);_0x3ca57f(_0x402003['error'](0x1f4,_0x534dc0[_0x6de4('0x13')]));});});};exports[_0x6de4('0x1e')]=function(_0x248d8e){var _0x3f3fab=this;return new Promise(function(_0x579a10,_0x149717){return db['ZohoAccount'][_0x6de4('0x1f')]({'raw':_0x248d8e[_0x6de4('0x18')]?_0x248d8e['options'][_0x6de4('0x20')]===undefined?!![]:![]:!![],'where':_0x248d8e[_0x6de4('0x18')]?_0x248d8e[_0x6de4('0x18')][_0x6de4('0x21')]||null:null,'attributes':_0x248d8e['options']?_0x248d8e[_0x6de4('0x18')][_0x6de4('0x1c')]||null:null,'include':_0x248d8e[_0x6de4('0x18')]?_0x248d8e['options'][_0x6de4('0x19')]?_['map'](_0x248d8e['options'][_0x6de4('0x19')],function(_0xf644b9){return{'model':db[_0xf644b9['model']],'as':_0xf644b9['as'],'attributes':_0xf644b9[_0x6de4('0x1c')],'include':_0xf644b9[_0x6de4('0x19')]?_[_0x6de4('0x1a')](_0xf644b9[_0x6de4('0x19')],function(_0x14c6a6){return{'model':db[_0x14c6a6[_0x6de4('0x1b')]],'as':_0x14c6a6['as'],'attributes':_0x14c6a6[_0x6de4('0x1c')],'include':_0x14c6a6[_0x6de4('0x19')]?_[_0x6de4('0x1a')](_0x14c6a6[_0x6de4('0x19')],function(_0x3d9410){return{'model':db[_0x3d9410[_0x6de4('0x1b')]],'as':_0x3d9410['as'],'attributes':_0x3d9410['attributes']};}):[]};}):[]};}):[]:[]})[_0x6de4('0xa')](function(_0x477098){logger[_0x6de4('0xb')](_0x6de4('0x1e'),_0x248d8e);logger[_0x6de4('0xe')]('ShowZohoAccount',_0x248d8e,JSON[_0x6de4('0x10')](_0x477098));_0x579a10(_0x477098);})[_0x6de4('0x15')](function(_0x2a1518){logger[_0x6de4('0x11')](_0x6de4('0x1e'),_0x2a1518[_0x6de4('0x13')],_0x248d8e);_0x149717(_0x3f3fab[_0x6de4('0x11')](0x1f4,_0x2a1518[_0x6de4('0x13')]));});});};
\ No newline at end of file
index 11ae155..0d41529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaee=['../../config/environment','./intZohoConfiguration.controller','isAuthenticated','index','get','/:id/fields','/:id/subjects','/:id/descriptions','create','put','/:id','delete','destroy','exports','path','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x2d4019,_0x346026){var _0x186e5e=function(_0x2b9b8b){while(--_0x2b9b8b){_0x2d4019['push'](_0x2d4019['shift']());}};_0x186e5e(++_0x346026);}(_0xfaee,0x6d));var _0xefae=function(_0x147656,_0x205a15){_0x147656=_0x147656-0x0;var _0x37e1e9=_0xfaee[_0x147656];return _0x37e1e9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xefae('0x0'));var timeout=require('connect-timeout');var express=require(_0xefae('0x1'));var router=express[_0xefae('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xefae('0x3'));var interaction=require(_0xefae('0x4'));var config=require(_0xefae('0x5'));var controller=require(_0xefae('0x6'));router['get']('/',auth[_0xefae('0x7')](),controller[_0xefae('0x8')]);router[_0xefae('0x9')]('/:id',auth[_0xefae('0x7')](),controller['show']);router[_0xefae('0x9')](_0xefae('0xa'),auth[_0xefae('0x7')](),controller['getFields']);router['get'](_0xefae('0xb'),auth[_0xefae('0x7')](),controller['getSubjects']);router[_0xefae('0x9')](_0xefae('0xc'),auth[_0xefae('0x7')](),controller['getDescriptions']);router['post']('/',auth['isAuthenticated'](),controller[_0xefae('0xd')]);router[_0xefae('0xe')](_0xefae('0xf'),auth[_0xefae('0x7')](),controller['update']);router[_0xefae('0x10')]('/:id',auth[_0xefae('0x7')](),controller[_0xefae('0x11')]);module[_0xefae('0x12')]=router;
\ No newline at end of file
+var _0x9298=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','put','/:id','update','delete','destroy','exports','util'];(function(_0x171091,_0x278c21){var _0x54669=function(_0xbac7a7){while(--_0xbac7a7){_0x171091['push'](_0x171091['shift']());}};_0x54669(++_0x278c21);}(_0x9298,0xf9));var _0x8929=function(_0x39bc41,_0x38d7e0){_0x39bc41=_0x39bc41-0x0;var _0x5bcafa=_0x9298[_0x39bc41];return _0x5bcafa;};'use strict';var multer=require('multer');var util=require(_0x8929('0x0'));var path=require(_0x8929('0x1'));var timeout=require(_0x8929('0x2'));var express=require(_0x8929('0x3'));var router=express['Router']();var fs_extra=require(_0x8929('0x4'));var auth=require(_0x8929('0x5'));var interaction=require(_0x8929('0x6'));var config=require(_0x8929('0x7'));var controller=require(_0x8929('0x8'));router[_0x8929('0x9')]('/',auth[_0x8929('0xa')](),controller[_0x8929('0xb')]);router[_0x8929('0x9')]('/:id',auth[_0x8929('0xa')](),controller[_0x8929('0xc')]);router[_0x8929('0x9')]('/:id/fields',auth[_0x8929('0xa')](),controller[_0x8929('0xd')]);router[_0x8929('0x9')](_0x8929('0xe'),auth[_0x8929('0xa')](),controller[_0x8929('0xf')]);router[_0x8929('0x9')](_0x8929('0x10'),auth[_0x8929('0xa')](),controller[_0x8929('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8929('0x12')]);router[_0x8929('0x13')](_0x8929('0x14'),auth[_0x8929('0xa')](),controller[_0x8929('0x15')]);router[_0x8929('0x16')](_0x8929('0x14'),auth[_0x8929('0xa')](),controller[_0x8929('0x17')]);module[_0x8929('0x18')]=router;
\ No newline at end of file
index d881b6c..7c43395 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfecb=['lead','nothing','contact_lead','contact','sequelize','exports','STRING','ENUM'];(function(_0x4cb0d6,_0x5ed0a7){var _0x364d0b=function(_0x38a9df){while(--_0x38a9df){_0x4cb0d6['push'](_0x4cb0d6['shift']());}};_0x364d0b(++_0x5ed0a7);}(_0xfecb,0x1dc));var _0xbfec=function(_0x5b5222,_0x28d298){_0x5b5222=_0x5b5222-0x0;var _0x4eb0d8=_0xfecb[_0x5b5222];return _0x4eb0d8;};'use strict';var Sequelize=require(_0xbfec('0x0'));module[_0xbfec('0x1')]={'name':{'type':Sequelize[_0xbfec('0x2')]},'moduleCreate':{'type':Sequelize[_0xbfec('0x3')](_0xbfec('0x4'),'contact',_0xbfec('0x5')),'defaultValue':_0xbfec('0x4')},'moduleSearch':{'type':Sequelize['ENUM'](_0xbfec('0x6'),_0xbfec('0x7'),_0xbfec('0x4')),'defaultValue':'contact_lead'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5bd3=['contact','nothing','lead','contact_lead','STRING','ENUM'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5bd3,0x1a3));var _0x35bd=function(_0x11c573,_0x9e7c6e){_0x11c573=_0x11c573-0x0;var _0x6b72de=_0x5bd3[_0x11c573];return _0x6b72de;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0x35bd('0x0')]('lead',_0x35bd('0x1'),_0x35bd('0x2')),'defaultValue':_0x35bd('0x3')},'moduleSearch':{'type':Sequelize['ENUM'](_0x35bd('0x4'),_0x35bd('0x1'),'lead'),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0x35bd('0x5')]}};
\ No newline at end of file
index 3c719ea..dd29ed4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fb3=['query','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','findAll','rows','show','params','fields','includeAll','find','catch','create','body','findOne','ZohoField','getFields','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','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','ZohoConfiguration','rawAttributes','fieldName','type','keys','intersection','model'];(function(_0x198eb0,_0x49c509){var _0x9598cb=function(_0x41571a){while(--_0x41571a){_0x198eb0['push'](_0x198eb0['shift']());}};_0x9598cb(++_0x49c509);}(_0x5fb3,0xbf));var _0x35fb=function(_0x32c227,_0x2d7383){_0x32c227=_0x32c227-0x0;var _0x2fb856=_0x5fb3[_0x32c227];return _0x2fb856;};'use strict';var emlformat=require(_0x35fb('0x0'));var rimraf=require(_0x35fb('0x1'));var zipdir=require(_0x35fb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x35fb('0x3'));var BPromise=require(_0x35fb('0x4'));var Mustache=require(_0x35fb('0x5'));var util=require(_0x35fb('0x6'));var path=require(_0x35fb('0x7'));var sox=require(_0x35fb('0x8'));var csv=require(_0x35fb('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x35fb('0xa'));var squel=require(_0x35fb('0xb'));var crypto=require(_0x35fb('0xc'));var jsforce=require(_0x35fb('0xd'));var deskjs=require(_0x35fb('0xe'));var toCsv=require(_0x35fb('0x9'));var querystring=require(_0x35fb('0xf'));var Papa=require(_0x35fb('0x10'));var Redis=require(_0x35fb('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x35fb('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x35fb('0x13'));var logger=require('../../config/logger')(_0x35fb('0x14'));var utils=require(_0x35fb('0x15'));var config=require(_0x35fb('0x16'));var licenseUtil=require(_0x35fb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b88da,_0x38e2c6){_0x38e2c6=_0x38e2c6||0xcc;return function(_0x223f93){if(_0x223f93){return _0x4b88da[_0x35fb('0x18')](_0x38e2c6);}return _0x4b88da['status'](_0x38e2c6)[_0x35fb('0x19')]();};}function respondWithResult(_0x2a6c51,_0x49ddaf){_0x49ddaf=_0x49ddaf||0xc8;return function(_0x2b10f3){if(_0x2b10f3){return _0x2a6c51[_0x35fb('0x1a')](_0x49ddaf)[_0x35fb('0x1b')](_0x2b10f3);}};}function respondWithFilteredResult(_0x2490fe,_0x32bba2){return function(_0x5a9d78){if(_0x5a9d78){var _0x1e6999=typeof _0x32bba2[_0x35fb('0x1c')]===_0x35fb('0x1d')&&typeof _0x32bba2[_0x35fb('0x1e')]===_0x35fb('0x1d');var _0x1f9d03=_0x5a9d78[_0x35fb('0x1f')];var _0x338602=_0x1e6999?0x0:_0x32bba2[_0x35fb('0x1c')];var _0x3848a6=_0x1e6999?_0x5a9d78['count']:_0x32bba2['offset']+_0x32bba2['limit'];var _0x101b93;if(_0x3848a6>=_0x1f9d03){_0x3848a6=_0x1f9d03;_0x101b93=0xc8;}else{_0x101b93=0xce;}_0x2490fe['status'](_0x101b93);return _0x2490fe['set'](_0x35fb('0x20'),_0x338602+'-'+_0x3848a6+'/'+_0x1f9d03)[_0x35fb('0x1b')](_0x5a9d78);}return null;};}function patchUpdates(_0x33dca3){return function(_0x2270bc){try{jsonpatch[_0x35fb('0x21')](_0x2270bc,_0x33dca3,!![]);}catch(_0x376e28){return BPromise[_0x35fb('0x22')](_0x376e28);}return _0x2270bc[_0x35fb('0x23')]();};}function saveUpdates(_0x2b167e,_0x2e7e68){return function(_0x4090ad){if(_0x4090ad){return _0x4090ad[_0x35fb('0x24')](_0x2b167e)[_0x35fb('0x25')](function(_0x553fdd){return _0x553fdd;});}return null;};}function removeEntity(_0x26078b,_0x40b309){return function(_0x59e67d){if(_0x59e67d){return _0x59e67d[_0x35fb('0x26')]()[_0x35fb('0x25')](function(){_0x26078b['status'](0xcc)[_0x35fb('0x19')]();});}};}function handleEntityNotFound(_0x4fe8c4,_0x52afb2){return function(_0x4b0bb7){if(!_0x4b0bb7){_0x4fe8c4[_0x35fb('0x18')](0x194);}return _0x4b0bb7;};}function handleError(_0x5f4fdc,_0x3b9684){_0x3b9684=_0x3b9684||0x1f4;return function(_0x5c67b5){logger[_0x35fb('0x27')](_0x5c67b5[_0x35fb('0x28')]);if(_0x5c67b5[_0x35fb('0x29')]){delete _0x5c67b5[_0x35fb('0x29')];}_0x5f4fdc['status'](_0x3b9684)[_0x35fb('0x2a')](_0x5c67b5);};}exports[_0x35fb('0x2b')]=function(_0x1cea44,_0x301207){var _0x416590={},_0x412c53={},_0x5ba459={'count':0x0,'rows':[]};var _0x5a8aba=_[_0x35fb('0x2c')](db[_0x35fb('0x2d')][_0x35fb('0x2e')],function(_0x10807a){return{'name':_0x10807a[_0x35fb('0x2f')],'type':_0x10807a[_0x35fb('0x30')]['key']};});_0x412c53['model']=_['map'](_0x5a8aba,'name');_0x412c53['query']=_[_0x35fb('0x31')](_0x1cea44['query']);_0x412c53['filters']=_[_0x35fb('0x32')](_0x412c53[_0x35fb('0x33')],_0x412c53['query']);_0x416590['attributes']=_['intersection'](_0x412c53[_0x35fb('0x33')],qs['fields'](_0x1cea44[_0x35fb('0x34')]['fields']));_0x416590[_0x35fb('0x35')]=_0x416590['attributes'][_0x35fb('0x36')]?_0x416590[_0x35fb('0x35')]:_0x412c53[_0x35fb('0x33')];if(!_0x1cea44[_0x35fb('0x34')][_0x35fb('0x37')]('nolimit')){_0x416590[_0x35fb('0x1e')]=qs['limit'](_0x1cea44['query'][_0x35fb('0x1e')]);_0x416590[_0x35fb('0x1c')]=qs[_0x35fb('0x1c')](_0x1cea44[_0x35fb('0x34')][_0x35fb('0x1c')]);}_0x416590[_0x35fb('0x38')]=qs[_0x35fb('0x39')](_0x1cea44[_0x35fb('0x34')][_0x35fb('0x39')]);_0x416590[_0x35fb('0x3a')]=qs[_0x35fb('0x3b')](_[_0x35fb('0x3c')](_0x1cea44[_0x35fb('0x34')],_0x412c53['filters']),_0x5a8aba);if(_0x1cea44[_0x35fb('0x34')][_0x35fb('0x3d')]){_0x416590['where']=_[_0x35fb('0x3e')](_0x416590[_0x35fb('0x3a')],{'$or':_[_0x35fb('0x2c')](_0x5a8aba,function(_0x5a2978){if(_0x5a2978['type']!==_0x35fb('0x3f')){var _0x5a3df1={};_0x5a3df1[_0x5a2978[_0x35fb('0x29')]]={'$like':'%'+_0x1cea44['query'][_0x35fb('0x3d')]+'%'};return _0x5a3df1;}})});}_0x416590=_['merge']({},_0x416590,_0x1cea44[_0x35fb('0x40')]);var _0x2c3586={'where':_0x416590[_0x35fb('0x3a')]};return db[_0x35fb('0x2d')]['count'](_0x2c3586)[_0x35fb('0x25')](function(_0x4c8abd){_0x5ba459[_0x35fb('0x1f')]=_0x4c8abd;if(_0x1cea44[_0x35fb('0x34')]['includeAll']){_0x416590['include']=[{'all':!![]}];}return db[_0x35fb('0x2d')][_0x35fb('0x41')](_0x416590);})[_0x35fb('0x25')](function(_0x427725){_0x5ba459[_0x35fb('0x42')]=_0x427725;return _0x5ba459;})[_0x35fb('0x25')](respondWithFilteredResult(_0x301207,_0x416590))['catch'](handleError(_0x301207,null));};exports[_0x35fb('0x43')]=function(_0x2d4b0f,_0x52c1c5){var _0x34d0fa={'raw':![],'where':{'id':_0x2d4b0f[_0x35fb('0x44')]['id']}},_0x5d55fc={};_0x5d55fc[_0x35fb('0x33')]=_[_0x35fb('0x31')](db[_0x35fb('0x2d')][_0x35fb('0x2e')]);_0x5d55fc['query']=_[_0x35fb('0x31')](_0x2d4b0f[_0x35fb('0x34')]);_0x5d55fc['filters']=_[_0x35fb('0x32')](_0x5d55fc['model'],_0x5d55fc['query']);_0x34d0fa[_0x35fb('0x35')]=_[_0x35fb('0x32')](_0x5d55fc['model'],qs[_0x35fb('0x45')](_0x2d4b0f[_0x35fb('0x34')][_0x35fb('0x45')]));_0x34d0fa[_0x35fb('0x35')]=_0x34d0fa[_0x35fb('0x35')][_0x35fb('0x36')]?_0x34d0fa['attributes']:_0x5d55fc['model'];if(_0x2d4b0f[_0x35fb('0x34')][_0x35fb('0x46')]){_0x34d0fa['include']=[{'all':!![]}];}_0x34d0fa=_[_0x35fb('0x3e')]({},_0x34d0fa,_0x2d4b0f[_0x35fb('0x40')]);return db[_0x35fb('0x2d')][_0x35fb('0x47')](_0x34d0fa)[_0x35fb('0x25')](handleEntityNotFound(_0x52c1c5,null))[_0x35fb('0x25')](respondWithResult(_0x52c1c5,null))[_0x35fb('0x48')](handleError(_0x52c1c5,null));};exports[_0x35fb('0x49')]=function(_0x2cefb6,_0x449527){return db[_0x35fb('0x2d')][_0x35fb('0x49')](_0x2cefb6[_0x35fb('0x4a')],{})[_0x35fb('0x25')](respondWithResult(_0x449527,0xc9))[_0x35fb('0x48')](handleError(_0x449527,null));};exports['update']=function(_0x38eeab,_0x1aaae7){if(_0x38eeab[_0x35fb('0x4a')]['id']){delete _0x38eeab[_0x35fb('0x4a')]['id'];}return db['ZohoConfiguration'][_0x35fb('0x47')]({'where':{'id':_0x38eeab[_0x35fb('0x44')]['id']}})[_0x35fb('0x25')](handleEntityNotFound(_0x1aaae7,null))['then'](saveUpdates(_0x38eeab[_0x35fb('0x4a')],null))[_0x35fb('0x25')](respondWithResult(_0x1aaae7,null))['catch'](handleError(_0x1aaae7,null));};exports[_0x35fb('0x26')]=function(_0x47accf,_0x29cdcf){return db[_0x35fb('0x2d')][_0x35fb('0x47')]({'where':{'id':_0x47accf[_0x35fb('0x44')]['id']}})[_0x35fb('0x25')](handleEntityNotFound(_0x29cdcf,null))[_0x35fb('0x25')](removeEntity(_0x29cdcf,null))[_0x35fb('0x48')](handleError(_0x29cdcf,null));};exports['getFields']=function(_0x43744d,_0x56b442,_0x23cc6f){var _0x5ab031={};var _0x1c05d9={};var _0x444bd3;var _0x1d93c8;return db[_0x35fb('0x2d')][_0x35fb('0x4b')]({'where':{'id':_0x43744d[_0x35fb('0x44')]['id']}})[_0x35fb('0x25')](handleEntityNotFound(_0x56b442,null))[_0x35fb('0x25')](function(_0x179ade){if(_0x179ade){_0x444bd3=_0x179ade;_0x1c05d9[_0x35fb('0x33')]=_[_0x35fb('0x31')](db[_0x35fb('0x4c')][_0x35fb('0x2e')]);_0x1c05d9['query']=_[_0x35fb('0x31')](_0x43744d[_0x35fb('0x34')]);_0x1c05d9[_0x35fb('0x3b')]=_[_0x35fb('0x32')](_0x1c05d9[_0x35fb('0x33')],_0x1c05d9[_0x35fb('0x34')]);_0x5ab031[_0x35fb('0x35')]=_[_0x35fb('0x32')](_0x1c05d9[_0x35fb('0x33')],qs['fields'](_0x43744d[_0x35fb('0x34')][_0x35fb('0x45')]));_0x5ab031[_0x35fb('0x35')]=_0x5ab031[_0x35fb('0x35')]['length']?_0x5ab031[_0x35fb('0x35')]:_0x1c05d9[_0x35fb('0x33')];_0x5ab031[_0x35fb('0x38')]=qs['sort'](_0x43744d[_0x35fb('0x34')][_0x35fb('0x39')]);_0x5ab031[_0x35fb('0x3a')]=qs['filters'](_[_0x35fb('0x3c')](_0x43744d[_0x35fb('0x34')],_0x1c05d9['filters']));if(_0x43744d['query'][_0x35fb('0x3d')]){_0x5ab031[_0x35fb('0x3a')]=_[_0x35fb('0x3e')](_0x5ab031['where'],{'$or':_[_0x35fb('0x2c')](_0x5ab031['attributes'],function(_0x18b838){var _0x39c899={};_0x39c899[_0x18b838]={'$like':'%'+_0x43744d[_0x35fb('0x34')]['filter']+'%'};return _0x39c899;})});}_0x5ab031=_[_0x35fb('0x3e')]({},_0x5ab031,_0x43744d['options']);return _0x444bd3[_0x35fb('0x4d')](_0x5ab031);}})[_0x35fb('0x25')](function(_0x555e3d){if(_0x555e3d){_0x1d93c8=_0x555e3d['length'];if(!_0x43744d['query']['hasOwnProperty'](_0x35fb('0x4e'))){_0x5ab031[_0x35fb('0x1e')]=qs['limit'](_0x43744d[_0x35fb('0x34')]['limit']);_0x5ab031[_0x35fb('0x1c')]=qs[_0x35fb('0x1c')](_0x43744d[_0x35fb('0x34')][_0x35fb('0x1c')]);}return _0x444bd3[_0x35fb('0x4d')](_0x5ab031);}})[_0x35fb('0x25')](function(_0x337f2a){if(_0x337f2a){return _0x337f2a?{'count':_0x1d93c8,'rows':_0x337f2a}:null;}})[_0x35fb('0x25')](respondWithResult(_0x56b442,null))['catch'](handleError(_0x56b442,null));};exports[_0x35fb('0x4f')]=function(_0x397478,_0x2ef13f,_0x3830ae){var _0x17cead={};var _0xe14b34={};var _0x437d07;var _0x5d6e1f;return db[_0x35fb('0x2d')]['findOne']({'where':{'id':_0x397478[_0x35fb('0x44')]['id']}})['then'](handleEntityNotFound(_0x2ef13f,null))[_0x35fb('0x25')](function(_0x2a59a0){if(_0x2a59a0){_0x437d07=_0x2a59a0;_0xe14b34[_0x35fb('0x33')]=_[_0x35fb('0x31')](db['ZohoField']['rawAttributes']);_0xe14b34[_0x35fb('0x34')]=_['keys'](_0x397478[_0x35fb('0x34')]);_0xe14b34['filters']=_[_0x35fb('0x32')](_0xe14b34['model'],_0xe14b34[_0x35fb('0x34')]);_0x17cead[_0x35fb('0x35')]=_[_0x35fb('0x32')](_0xe14b34[_0x35fb('0x33')],qs[_0x35fb('0x45')](_0x397478['query'][_0x35fb('0x45')]));_0x17cead[_0x35fb('0x35')]=_0x17cead[_0x35fb('0x35')][_0x35fb('0x36')]?_0x17cead[_0x35fb('0x35')]:_0xe14b34[_0x35fb('0x33')];_0x17cead[_0x35fb('0x38')]=qs[_0x35fb('0x39')](_0x397478[_0x35fb('0x34')]['sort']);_0x17cead[_0x35fb('0x3a')]=qs['filters'](_['pick'](_0x397478['query'],_0xe14b34['filters']));if(_0x397478[_0x35fb('0x34')][_0x35fb('0x3d')]){_0x17cead[_0x35fb('0x3a')]=_[_0x35fb('0x3e')](_0x17cead[_0x35fb('0x3a')],{'$or':_[_0x35fb('0x2c')](_0x17cead['attributes'],function(_0x52534e){var _0x4b7f2c={};_0x4b7f2c[_0x52534e]={'$like':'%'+_0x397478[_0x35fb('0x34')]['filter']+'%'};return _0x4b7f2c;})});}_0x17cead=_[_0x35fb('0x3e')]({},_0x17cead,_0x397478[_0x35fb('0x40')]);return _0x437d07[_0x35fb('0x4f')](_0x17cead);}})[_0x35fb('0x25')](function(_0x3fcc00){if(_0x3fcc00){_0x5d6e1f=_0x3fcc00[_0x35fb('0x36')];if(!_0x397478['query'][_0x35fb('0x37')]('nolimit')){_0x17cead[_0x35fb('0x1e')]=qs[_0x35fb('0x1e')](_0x397478[_0x35fb('0x34')][_0x35fb('0x1e')]);_0x17cead[_0x35fb('0x1c')]=qs[_0x35fb('0x1c')](_0x397478[_0x35fb('0x34')][_0x35fb('0x1c')]);}return _0x437d07[_0x35fb('0x4f')](_0x17cead);}})[_0x35fb('0x25')](function(_0x4ba636){if(_0x4ba636){return _0x4ba636?{'count':_0x5d6e1f,'rows':_0x4ba636}:null;}})['then'](respondWithResult(_0x2ef13f,null))[_0x35fb('0x48')](handleError(_0x2ef13f,null));};exports['getDescriptions']=function(_0x2e4cbe,_0x42cc4f,_0x2786e7){var _0x15d6bc={};var _0x573011={};var _0x2c73d8;var _0x297a31;return db[_0x35fb('0x2d')][_0x35fb('0x4b')]({'where':{'id':_0x2e4cbe[_0x35fb('0x44')]['id']}})[_0x35fb('0x25')](handleEntityNotFound(_0x42cc4f,null))['then'](function(_0x459763){if(_0x459763){_0x2c73d8=_0x459763;_0x573011[_0x35fb('0x33')]=_[_0x35fb('0x31')](db[_0x35fb('0x4c')][_0x35fb('0x2e')]);_0x573011[_0x35fb('0x34')]=_[_0x35fb('0x31')](_0x2e4cbe['query']);_0x573011[_0x35fb('0x3b')]=_['intersection'](_0x573011[_0x35fb('0x33')],_0x573011[_0x35fb('0x34')]);_0x15d6bc['attributes']=_[_0x35fb('0x32')](_0x573011[_0x35fb('0x33')],qs[_0x35fb('0x45')](_0x2e4cbe[_0x35fb('0x34')][_0x35fb('0x45')]));_0x15d6bc[_0x35fb('0x35')]=_0x15d6bc[_0x35fb('0x35')][_0x35fb('0x36')]?_0x15d6bc[_0x35fb('0x35')]:_0x573011[_0x35fb('0x33')];_0x15d6bc[_0x35fb('0x38')]=qs[_0x35fb('0x39')](_0x2e4cbe['query'][_0x35fb('0x39')]);_0x15d6bc[_0x35fb('0x3a')]=qs['filters'](_[_0x35fb('0x3c')](_0x2e4cbe[_0x35fb('0x34')],_0x573011[_0x35fb('0x3b')]));if(_0x2e4cbe[_0x35fb('0x34')][_0x35fb('0x3d')]){_0x15d6bc['where']=_[_0x35fb('0x3e')](_0x15d6bc['where'],{'$or':_[_0x35fb('0x2c')](_0x15d6bc['attributes'],function(_0x29b092){var _0xd15970={};_0xd15970[_0x29b092]={'$like':'%'+_0x2e4cbe[_0x35fb('0x34')]['filter']+'%'};return _0xd15970;})});}_0x15d6bc=_['merge']({},_0x15d6bc,_0x2e4cbe[_0x35fb('0x40')]);return _0x2c73d8['getDescriptions'](_0x15d6bc);}})['then'](function(_0x268a86){if(_0x268a86){_0x297a31=_0x268a86[_0x35fb('0x36')];if(!_0x2e4cbe[_0x35fb('0x34')][_0x35fb('0x37')](_0x35fb('0x4e'))){_0x15d6bc[_0x35fb('0x1e')]=qs['limit'](_0x2e4cbe['query'][_0x35fb('0x1e')]);_0x15d6bc[_0x35fb('0x1c')]=qs[_0x35fb('0x1c')](_0x2e4cbe[_0x35fb('0x34')][_0x35fb('0x1c')]);}return _0x2c73d8[_0x35fb('0x50')](_0x15d6bc);}})[_0x35fb('0x25')](function(_0x5aaac6){if(_0x5aaac6){return _0x5aaac6?{'count':_0x297a31,'rows':_0x5aaac6}:null;}})['then'](respondWithResult(_0x42cc4f,null))[_0x35fb('0x48')](handleError(_0x42cc4f,null));};
\ No newline at end of file
+var _0xc87f=['api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','undefined','limit','count','offset','status','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','attributes','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','includeAll','findAll','rows','catch','intersection','options','create','body','find','params','findOne','ZohoField','pick','getFields','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x482dc4,_0x14af5a){var _0x51c2de=function(_0x558b8d){while(--_0x558b8d){_0x482dc4['push'](_0x482dc4['shift']());}};_0x51c2de(++_0x14af5a);}(_0xc87f,0x92));var _0xfc87=function(_0x1ff25f,_0x1e1980){_0x1ff25f=_0x1ff25f-0x0;var _0x5ac8b1=_0xc87f[_0x1ff25f];return _0x5ac8b1;};'use strict';var emlformat=require(_0xfc87('0x0'));var rimraf=require(_0xfc87('0x1'));var zipdir=require(_0xfc87('0x2'));var jsonpatch=require(_0xfc87('0x3'));var rp=require(_0xfc87('0x4'));var moment=require(_0xfc87('0x5'));var BPromise=require(_0xfc87('0x6'));var Mustache=require(_0xfc87('0x7'));var util=require(_0xfc87('0x8'));var path=require(_0xfc87('0x9'));var sox=require('sox');var csv=require(_0xfc87('0xa'));var ejs=require(_0xfc87('0xb'));var fs=require('fs');var fs_extra=require(_0xfc87('0xc'));var _=require('lodash');var squel=require(_0xfc87('0xd'));var crypto=require(_0xfc87('0xe'));var jsforce=require(_0xfc87('0xf'));var deskjs=require(_0xfc87('0x10'));var toCsv=require(_0xfc87('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xfc87('0x11'));var authService=require(_0xfc87('0x12'));var qs=require(_0xfc87('0x13'));var as=require(_0xfc87('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfc87('0x15'))(_0xfc87('0x16'));var utils=require(_0xfc87('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xfc87('0x18'));var db=require(_0xfc87('0x19'))['db'];function respondWithStatusCode(_0x290948,_0xd91b30){_0xd91b30=_0xd91b30||0xcc;return function(_0x15bc27){if(_0x15bc27){return _0x290948[_0xfc87('0x1a')](_0xd91b30);}return _0x290948['status'](_0xd91b30)[_0xfc87('0x1b')]();};}function respondWithResult(_0x300719,_0x5c060c){_0x5c060c=_0x5c060c||0xc8;return function(_0x188c6d){if(_0x188c6d){return _0x300719['status'](_0x5c060c)['json'](_0x188c6d);}};}function respondWithFilteredResult(_0x60d84c,_0xc8583a){return function(_0x5eb553){if(_0x5eb553){var _0x44b5ec=typeof _0xc8583a['offset']===_0xfc87('0x1c')&&typeof _0xc8583a[_0xfc87('0x1d')]==='undefined';var _0x41a88e=_0x5eb553['count'];var _0x3e144c=_0x44b5ec?0x0:_0xc8583a['offset'];var _0xf334a9=_0x44b5ec?_0x5eb553[_0xfc87('0x1e')]:_0xc8583a[_0xfc87('0x1f')]+_0xc8583a[_0xfc87('0x1d')];var _0x2f8b63;if(_0xf334a9>=_0x41a88e){_0xf334a9=_0x41a88e;_0x2f8b63=0xc8;}else{_0x2f8b63=0xce;}_0x60d84c[_0xfc87('0x20')](_0x2f8b63);return _0x60d84c[_0xfc87('0x21')](_0xfc87('0x22'),_0x3e144c+'-'+_0xf334a9+'/'+_0x41a88e)[_0xfc87('0x23')](_0x5eb553);}return null;};}function patchUpdates(_0x183395){return function(_0x1311f1){try{jsonpatch[_0xfc87('0x24')](_0x1311f1,_0x183395,!![]);}catch(_0x306f8d){return BPromise[_0xfc87('0x25')](_0x306f8d);}return _0x1311f1[_0xfc87('0x26')]();};}function saveUpdates(_0x40cba7,_0x1e3b7a){return function(_0x28d7f5){if(_0x28d7f5){return _0x28d7f5[_0xfc87('0x27')](_0x40cba7)[_0xfc87('0x28')](function(_0x93f3c4){return _0x93f3c4;});}return null;};}function removeEntity(_0x4c701e,_0x1220f2){return function(_0x4c99b0){if(_0x4c99b0){return _0x4c99b0[_0xfc87('0x29')]()[_0xfc87('0x28')](function(){_0x4c701e[_0xfc87('0x20')](0xcc)[_0xfc87('0x1b')]();});}};}function handleEntityNotFound(_0x18fcf4,_0x14f4cb){return function(_0x1fe158){if(!_0x1fe158){_0x18fcf4['sendStatus'](0x194);}return _0x1fe158;};}function handleError(_0x26cb49,_0x3858a4){_0x3858a4=_0x3858a4||0x1f4;return function(_0x5a4442){logger[_0xfc87('0x2a')](_0x5a4442[_0xfc87('0x2b')]);if(_0x5a4442[_0xfc87('0x2c')]){delete _0x5a4442[_0xfc87('0x2c')];}_0x26cb49['status'](_0x3858a4)[_0xfc87('0x2d')](_0x5a4442);};}exports[_0xfc87('0x2e')]=function(_0x33f4d2,_0x30b8ef){var _0xdeb139={},_0x53a85d={},_0x4e29ff={'count':0x0,'rows':[]};var _0x178a7b=_[_0xfc87('0x2f')](db[_0xfc87('0x30')][_0xfc87('0x31')],function(_0x558553){return{'name':_0x558553[_0xfc87('0x32')],'type':_0x558553[_0xfc87('0x33')][_0xfc87('0x34')]};});_0x53a85d[_0xfc87('0x35')]=_[_0xfc87('0x2f')](_0x178a7b,_0xfc87('0x2c'));_0x53a85d[_0xfc87('0x36')]=_[_0xfc87('0x37')](_0x33f4d2[_0xfc87('0x36')]);_0x53a85d[_0xfc87('0x38')]=_['intersection'](_0x53a85d[_0xfc87('0x35')],_0x53a85d[_0xfc87('0x36')]);_0xdeb139['attributes']=_['intersection'](_0x53a85d[_0xfc87('0x35')],qs[_0xfc87('0x39')](_0x33f4d2['query'][_0xfc87('0x39')]));_0xdeb139['attributes']=_0xdeb139[_0xfc87('0x3a')][_0xfc87('0x3b')]?_0xdeb139['attributes']:_0x53a85d[_0xfc87('0x35')];if(!_0x33f4d2['query'][_0xfc87('0x3c')]('nolimit')){_0xdeb139['limit']=qs[_0xfc87('0x1d')](_0x33f4d2['query'][_0xfc87('0x1d')]);_0xdeb139[_0xfc87('0x1f')]=qs['offset'](_0x33f4d2[_0xfc87('0x36')][_0xfc87('0x1f')]);}_0xdeb139[_0xfc87('0x3d')]=qs[_0xfc87('0x3e')](_0x33f4d2[_0xfc87('0x36')]['sort']);_0xdeb139['where']=qs['filters'](_['pick'](_0x33f4d2[_0xfc87('0x36')],_0x53a85d[_0xfc87('0x38')]),_0x178a7b);if(_0x33f4d2[_0xfc87('0x36')]['filter']){_0xdeb139[_0xfc87('0x3f')]=_[_0xfc87('0x40')](_0xdeb139[_0xfc87('0x3f')],{'$or':_['map'](_0x178a7b,function(_0x11bb54){if(_0x11bb54[_0xfc87('0x33')]!==_0xfc87('0x41')){var _0x138727={};_0x138727[_0x11bb54['name']]={'$like':'%'+_0x33f4d2[_0xfc87('0x36')][_0xfc87('0x42')]+'%'};return _0x138727;}})});}_0xdeb139=_[_0xfc87('0x40')]({},_0xdeb139,_0x33f4d2['options']);var _0x3fb042={'where':_0xdeb139[_0xfc87('0x3f')]};return db[_0xfc87('0x30')][_0xfc87('0x1e')](_0x3fb042)[_0xfc87('0x28')](function(_0x3b9142){_0x4e29ff[_0xfc87('0x1e')]=_0x3b9142;if(_0x33f4d2['query'][_0xfc87('0x43')]){_0xdeb139['include']=[{'all':!![]}];}return db[_0xfc87('0x30')][_0xfc87('0x44')](_0xdeb139);})[_0xfc87('0x28')](function(_0x172bb3){_0x4e29ff[_0xfc87('0x45')]=_0x172bb3;return _0x4e29ff;})[_0xfc87('0x28')](respondWithFilteredResult(_0x30b8ef,_0xdeb139))[_0xfc87('0x46')](handleError(_0x30b8ef,null));};exports['show']=function(_0x54146a,_0x4a0428){var _0x5e642b={'raw':![],'where':{'id':_0x54146a['params']['id']}},_0x2f6991={};_0x2f6991['model']=_[_0xfc87('0x37')](db[_0xfc87('0x30')][_0xfc87('0x31')]);_0x2f6991[_0xfc87('0x36')]=_[_0xfc87('0x37')](_0x54146a[_0xfc87('0x36')]);_0x2f6991[_0xfc87('0x38')]=_[_0xfc87('0x47')](_0x2f6991[_0xfc87('0x35')],_0x2f6991[_0xfc87('0x36')]);_0x5e642b[_0xfc87('0x3a')]=_[_0xfc87('0x47')](_0x2f6991[_0xfc87('0x35')],qs[_0xfc87('0x39')](_0x54146a['query']['fields']));_0x5e642b[_0xfc87('0x3a')]=_0x5e642b[_0xfc87('0x3a')]['length']?_0x5e642b['attributes']:_0x2f6991[_0xfc87('0x35')];if(_0x54146a[_0xfc87('0x36')][_0xfc87('0x43')]){_0x5e642b['include']=[{'all':!![]}];}_0x5e642b=_['merge']({},_0x5e642b,_0x54146a[_0xfc87('0x48')]);return db['ZohoConfiguration']['find'](_0x5e642b)[_0xfc87('0x28')](handleEntityNotFound(_0x4a0428,null))['then'](respondWithResult(_0x4a0428,null))[_0xfc87('0x46')](handleError(_0x4a0428,null));};exports[_0xfc87('0x49')]=function(_0x209c79,_0x5a1b44){return db[_0xfc87('0x30')][_0xfc87('0x49')](_0x209c79[_0xfc87('0x4a')],{})[_0xfc87('0x28')](respondWithResult(_0x5a1b44,0xc9))[_0xfc87('0x46')](handleError(_0x5a1b44,null));};exports[_0xfc87('0x27')]=function(_0x231151,_0x34eba9){if(_0x231151[_0xfc87('0x4a')]['id']){delete _0x231151[_0xfc87('0x4a')]['id'];}return db[_0xfc87('0x30')]['find']({'where':{'id':_0x231151['params']['id']}})['then'](handleEntityNotFound(_0x34eba9,null))['then'](saveUpdates(_0x231151[_0xfc87('0x4a')],null))[_0xfc87('0x28')](respondWithResult(_0x34eba9,null))[_0xfc87('0x46')](handleError(_0x34eba9,null));};exports[_0xfc87('0x29')]=function(_0x519baa,_0x88600f){return db['ZohoConfiguration'][_0xfc87('0x4b')]({'where':{'id':_0x519baa[_0xfc87('0x4c')]['id']}})['then'](handleEntityNotFound(_0x88600f,null))[_0xfc87('0x28')](removeEntity(_0x88600f,null))[_0xfc87('0x46')](handleError(_0x88600f,null));};exports['getFields']=function(_0x3dc786,_0x33d063,_0x5eba4f){var _0x48eade={};var _0x452e4a={};var _0x200222;var _0x13f257;return db[_0xfc87('0x30')][_0xfc87('0x4d')]({'where':{'id':_0x3dc786['params']['id']}})[_0xfc87('0x28')](handleEntityNotFound(_0x33d063,null))['then'](function(_0x889901){if(_0x889901){_0x200222=_0x889901;_0x452e4a['model']=_[_0xfc87('0x37')](db[_0xfc87('0x4e')][_0xfc87('0x31')]);_0x452e4a[_0xfc87('0x36')]=_['keys'](_0x3dc786['query']);_0x452e4a['filters']=_['intersection'](_0x452e4a[_0xfc87('0x35')],_0x452e4a[_0xfc87('0x36')]);_0x48eade[_0xfc87('0x3a')]=_['intersection'](_0x452e4a['model'],qs[_0xfc87('0x39')](_0x3dc786[_0xfc87('0x36')][_0xfc87('0x39')]));_0x48eade[_0xfc87('0x3a')]=_0x48eade[_0xfc87('0x3a')][_0xfc87('0x3b')]?_0x48eade['attributes']:_0x452e4a['model'];_0x48eade['order']=qs['sort'](_0x3dc786['query'][_0xfc87('0x3e')]);_0x48eade[_0xfc87('0x3f')]=qs[_0xfc87('0x38')](_[_0xfc87('0x4f')](_0x3dc786[_0xfc87('0x36')],_0x452e4a['filters']));if(_0x3dc786[_0xfc87('0x36')][_0xfc87('0x42')]){_0x48eade['where']=_[_0xfc87('0x40')](_0x48eade[_0xfc87('0x3f')],{'$or':_[_0xfc87('0x2f')](_0x48eade[_0xfc87('0x3a')],function(_0x14258c){var _0x4523e2={};_0x4523e2[_0x14258c]={'$like':'%'+_0x3dc786[_0xfc87('0x36')][_0xfc87('0x42')]+'%'};return _0x4523e2;})});}_0x48eade=_[_0xfc87('0x40')]({},_0x48eade,_0x3dc786[_0xfc87('0x48')]);return _0x200222[_0xfc87('0x50')](_0x48eade);}})[_0xfc87('0x28')](function(_0xede6eb){if(_0xede6eb){_0x13f257=_0xede6eb[_0xfc87('0x3b')];if(!_0x3dc786[_0xfc87('0x36')][_0xfc87('0x3c')](_0xfc87('0x51'))){_0x48eade[_0xfc87('0x1d')]=qs['limit'](_0x3dc786['query'][_0xfc87('0x1d')]);_0x48eade['offset']=qs[_0xfc87('0x1f')](_0x3dc786[_0xfc87('0x36')][_0xfc87('0x1f')]);}return _0x200222['getFields'](_0x48eade);}})['then'](function(_0x338db1){if(_0x338db1){return _0x338db1?{'count':_0x13f257,'rows':_0x338db1}:null;}})['then'](respondWithResult(_0x33d063,null))[_0xfc87('0x46')](handleError(_0x33d063,null));};exports[_0xfc87('0x52')]=function(_0x8d9638,_0x1385a5,_0x6ffc73){var _0x2777b5={};var _0x39532f={};var _0x1381fe;var _0x1521bf;return db[_0xfc87('0x30')]['findOne']({'where':{'id':_0x8d9638[_0xfc87('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1385a5,null))['then'](function(_0x23fabf){if(_0x23fabf){_0x1381fe=_0x23fabf;_0x39532f[_0xfc87('0x35')]=_[_0xfc87('0x37')](db[_0xfc87('0x4e')][_0xfc87('0x31')]);_0x39532f[_0xfc87('0x36')]=_[_0xfc87('0x37')](_0x8d9638[_0xfc87('0x36')]);_0x39532f['filters']=_[_0xfc87('0x47')](_0x39532f[_0xfc87('0x35')],_0x39532f['query']);_0x2777b5[_0xfc87('0x3a')]=_[_0xfc87('0x47')](_0x39532f['model'],qs['fields'](_0x8d9638[_0xfc87('0x36')][_0xfc87('0x39')]));_0x2777b5['attributes']=_0x2777b5[_0xfc87('0x3a')]['length']?_0x2777b5['attributes']:_0x39532f[_0xfc87('0x35')];_0x2777b5[_0xfc87('0x3d')]=qs[_0xfc87('0x3e')](_0x8d9638[_0xfc87('0x36')][_0xfc87('0x3e')]);_0x2777b5['where']=qs[_0xfc87('0x38')](_[_0xfc87('0x4f')](_0x8d9638[_0xfc87('0x36')],_0x39532f[_0xfc87('0x38')]));if(_0x8d9638[_0xfc87('0x36')][_0xfc87('0x42')]){_0x2777b5['where']=_[_0xfc87('0x40')](_0x2777b5[_0xfc87('0x3f')],{'$or':_['map'](_0x2777b5[_0xfc87('0x3a')],function(_0x403998){var _0x102dc5={};_0x102dc5[_0x403998]={'$like':'%'+_0x8d9638[_0xfc87('0x36')][_0xfc87('0x42')]+'%'};return _0x102dc5;})});}_0x2777b5=_[_0xfc87('0x40')]({},_0x2777b5,_0x8d9638[_0xfc87('0x48')]);return _0x1381fe[_0xfc87('0x52')](_0x2777b5);}})[_0xfc87('0x28')](function(_0x26b9f9){if(_0x26b9f9){_0x1521bf=_0x26b9f9['length'];if(!_0x8d9638[_0xfc87('0x36')][_0xfc87('0x3c')](_0xfc87('0x51'))){_0x2777b5['limit']=qs[_0xfc87('0x1d')](_0x8d9638[_0xfc87('0x36')]['limit']);_0x2777b5[_0xfc87('0x1f')]=qs[_0xfc87('0x1f')](_0x8d9638[_0xfc87('0x36')][_0xfc87('0x1f')]);}return _0x1381fe['getSubjects'](_0x2777b5);}})[_0xfc87('0x28')](function(_0x4d6b18){if(_0x4d6b18){return _0x4d6b18?{'count':_0x1521bf,'rows':_0x4d6b18}:null;}})['then'](respondWithResult(_0x1385a5,null))[_0xfc87('0x46')](handleError(_0x1385a5,null));};exports[_0xfc87('0x53')]=function(_0xb5228b,_0x1e9bea,_0x36d032){var _0x429a53={};var _0xd4aa08={};var _0x5f3aea;var _0x3eb30d;return db[_0xfc87('0x30')][_0xfc87('0x4d')]({'where':{'id':_0xb5228b[_0xfc87('0x4c')]['id']}})[_0xfc87('0x28')](handleEntityNotFound(_0x1e9bea,null))[_0xfc87('0x28')](function(_0x52611a){if(_0x52611a){_0x5f3aea=_0x52611a;_0xd4aa08[_0xfc87('0x35')]=_[_0xfc87('0x37')](db[_0xfc87('0x4e')][_0xfc87('0x31')]);_0xd4aa08[_0xfc87('0x36')]=_['keys'](_0xb5228b['query']);_0xd4aa08[_0xfc87('0x38')]=_['intersection'](_0xd4aa08['model'],_0xd4aa08[_0xfc87('0x36')]);_0x429a53[_0xfc87('0x3a')]=_[_0xfc87('0x47')](_0xd4aa08['model'],qs[_0xfc87('0x39')](_0xb5228b['query'][_0xfc87('0x39')]));_0x429a53['attributes']=_0x429a53[_0xfc87('0x3a')][_0xfc87('0x3b')]?_0x429a53[_0xfc87('0x3a')]:_0xd4aa08[_0xfc87('0x35')];_0x429a53[_0xfc87('0x3d')]=qs[_0xfc87('0x3e')](_0xb5228b[_0xfc87('0x36')][_0xfc87('0x3e')]);_0x429a53[_0xfc87('0x3f')]=qs[_0xfc87('0x38')](_[_0xfc87('0x4f')](_0xb5228b['query'],_0xd4aa08[_0xfc87('0x38')]));if(_0xb5228b[_0xfc87('0x36')][_0xfc87('0x42')]){_0x429a53[_0xfc87('0x3f')]=_[_0xfc87('0x40')](_0x429a53[_0xfc87('0x3f')],{'$or':_[_0xfc87('0x2f')](_0x429a53[_0xfc87('0x3a')],function(_0x501ead){var _0x220123={};_0x220123[_0x501ead]={'$like':'%'+_0xb5228b[_0xfc87('0x36')][_0xfc87('0x42')]+'%'};return _0x220123;})});}_0x429a53=_[_0xfc87('0x40')]({},_0x429a53,_0xb5228b[_0xfc87('0x48')]);return _0x5f3aea['getDescriptions'](_0x429a53);}})[_0xfc87('0x28')](function(_0x282b81){if(_0x282b81){_0x3eb30d=_0x282b81[_0xfc87('0x3b')];if(!_0xb5228b['query'][_0xfc87('0x3c')](_0xfc87('0x51'))){_0x429a53[_0xfc87('0x1d')]=qs[_0xfc87('0x1d')](_0xb5228b['query'][_0xfc87('0x1d')]);_0x429a53['offset']=qs[_0xfc87('0x1f')](_0xb5228b[_0xfc87('0x36')][_0xfc87('0x1f')]);}return _0x5f3aea[_0xfc87('0x53')](_0x429a53);}})['then'](function(_0x3523da){if(_0x3523da){return _0x3523da?{'count':_0x3eb30d,'rows':_0x3523da}:null;}})[_0xfc87('0x28')](respondWithResult(_0x1e9bea,null))[_0xfc87('0x46')](handleError(_0x1e9bea,null));};
\ No newline at end of file
index 84fe691..25cfa20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3d4=['int_zoho_configurations','lodash','util','../../config/logger','api','path','rimraf','../../config/environment','./intZohoConfiguration.attributes','define','ZohoConfiguration'];(function(_0x51c067,_0x18987e){var _0x3d5044=function(_0x35f619){while(--_0x35f619){_0x51c067['push'](_0x51c067['shift']());}};_0x3d5044(++_0x18987e);}(_0xb3d4,0x1cf));var _0x4b3d=function(_0x4f50aa,_0x3c19b1){_0x4f50aa=_0x4f50aa-0x0;var _0x406ba1=_0xb3d4[_0x4f50aa];return _0x406ba1;};'use strict';var _=require(_0x4b3d('0x0'));var util=require(_0x4b3d('0x1'));var logger=require(_0x4b3d('0x2'))(_0x4b3d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4b3d('0x4'));var rimraf=require(_0x4b3d('0x5'));var config=require(_0x4b3d('0x6'));var attributes=require(_0x4b3d('0x7'));module['exports']=function(_0x4c0461,_0x38c497){return _0x4c0461[_0x4b3d('0x8')](_0x4b3d('0x9'),attributes,{'tableName':_0x4b3d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x82d8=['util','../../config/logger','api','request-promise','rimraf','../../config/environment','exports','define','int_zoho_configurations'];(function(_0x2d9bcc,_0x277be8){var _0x3e3daa=function(_0x1097b1){while(--_0x1097b1){_0x2d9bcc['push'](_0x2d9bcc['shift']());}};_0x3e3daa(++_0x277be8);}(_0x82d8,0x90));var _0x882d=function(_0x5b6d77,_0x55b4d2){_0x5b6d77=_0x5b6d77-0x0;var _0x559007=_0x82d8[_0x5b6d77];return _0x559007;};'use strict';var _=require('lodash');var util=require(_0x882d('0x0'));var logger=require(_0x882d('0x1'))(_0x882d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x882d('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x882d('0x4'));var config=require(_0x882d('0x5'));var attributes=require('./intZohoConfiguration.attributes');module[_0x882d('0x6')]=function(_0x4ac07e,_0x4a9a40){return _0x4ac07e[_0x882d('0x7')]('ZohoConfiguration',attributes,{'tableName':_0x882d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de8c9ab..741b539 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0e3=['code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','request','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x44d869,_0x49425f){var _0x1ed521=function(_0x2c2968){while(--_0x2c2968){_0x44d869['push'](_0x44d869['shift']());}};_0x1ed521(++_0x49425f);}(_0xf0e3,0x1a6));var _0x3f0e=function(_0x45b025,_0x206952){_0x45b025=_0x45b025-0x0;var _0x5538d0=_0xf0e3[_0x45b025];return _0x5538d0;};'use strict';var _=require(_0x3f0e('0x0'));var util=require(_0x3f0e('0x1'));var moment=require(_0x3f0e('0x2'));var BPromise=require(_0x3f0e('0x3'));var rs=require(_0x3f0e('0x4'));var fs=require('fs');var Redis=require(_0x3f0e('0x5'));var db=require(_0x3f0e('0x6'))['db'];var utils=require(_0x3f0e('0x7'));var logger=require('../../config/logger')(_0x3f0e('0x8'));var config=require(_0x3f0e('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3f0e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x49ad0e,_0x2f7964,_0x2cd7a3){return new BPromise(function(_0xc678a3,_0x16aa21){return client[_0x3f0e('0xb')](_0x49ad0e,_0x2cd7a3)['then'](function(_0x49779e){logger['info'](_0x3f0e('0xc'),_0x2f7964,_0x3f0e('0xd'));logger[_0x3f0e('0xe')](_0x3f0e('0xf'),_0x2f7964,_0x3f0e('0xd'),JSON[_0x3f0e('0x10')](_0x49779e));if(_0x49779e[_0x3f0e('0x11')]){if(_0x49779e[_0x3f0e('0x11')][_0x3f0e('0x12')]===0x1f4){logger[_0x3f0e('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x2f7964,_0x49779e[_0x3f0e('0x11')][_0x3f0e('0x13')]);return _0x16aa21(_0x49779e[_0x3f0e('0x11')]['message']);}logger[_0x3f0e('0x11')](_0x3f0e('0xc'),_0x2f7964,_0x49779e['error'][_0x3f0e('0x13')]);return _0xc678a3(_0x49779e[_0x3f0e('0x11')][_0x3f0e('0x13')]);}else{logger['info'](_0x3f0e('0xc'),_0x2f7964,_0x3f0e('0xd'));_0xc678a3(_0x49779e['result'][_0x3f0e('0x13')]);}})['catch'](function(_0x445b83){logger[_0x3f0e('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x2f7964,_0x445b83);_0x16aa21(_0x445b83);});});}
\ No newline at end of file
+var _0x8433=['then','info','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','ZohoConfiguration,\x20%s,\x20%s','message','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x35565b,_0x121a93){var _0x396726=function(_0x4e45fc){while(--_0x4e45fc){_0x35565b['push'](_0x35565b['shift']());}};_0x396726(++_0x121a93);}(_0x8433,0xe4));var _0x3843=function(_0x2de020,_0x252df0){_0x2de020=_0x2de020-0x0;var _0x182b7c=_0x8433[_0x2de020];return _0x182b7c;};'use strict';var _=require(_0x3843('0x0'));var util=require(_0x3843('0x1'));var moment=require(_0x3843('0x2'));var BPromise=require(_0x3843('0x3'));var rs=require(_0x3843('0x4'));var fs=require('fs');var Redis=require(_0x3843('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x3843('0x6'));var logger=require(_0x3843('0x7'))(_0x3843('0x8'));var config=require('../../config/environment');var jayson=require(_0x3843('0x9'));var client=jayson[_0x3843('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x38812a,_0x25acbe,_0x247c7d){return new BPromise(function(_0x2f4352,_0x1974d6){return client[_0x3843('0xb')](_0x38812a,_0x247c7d)[_0x3843('0xc')](function(_0x46a021){logger[_0x3843('0xd')]('ZohoConfiguration,\x20%s,\x20%s',_0x25acbe,_0x3843('0xe'));logger['debug'](_0x3843('0xf'),_0x25acbe,_0x3843('0xe'),JSON[_0x3843('0x10')](_0x46a021));if(_0x46a021[_0x3843('0x11')]){if(_0x46a021[_0x3843('0x11')]['code']===0x1f4){logger['error'](_0x3843('0x12'),_0x25acbe,_0x46a021[_0x3843('0x11')][_0x3843('0x13')]);return _0x1974d6(_0x46a021['error']['message']);}logger[_0x3843('0x11')](_0x3843('0x12'),_0x25acbe,_0x46a021[_0x3843('0x11')][_0x3843('0x13')]);return _0x2f4352(_0x46a021['error'][_0x3843('0x13')]);}else{logger[_0x3843('0xd')](_0x3843('0x12'),_0x25acbe,_0x3843('0xe'));_0x2f4352(_0x46a021['result']['message']);}})['catch'](function(_0xb31dbb){logger[_0x3843('0x11')](_0x3843('0x12'),_0x25acbe,_0xb31dbb);_0x1974d6(_0xb31dbb);});});}
\ No newline at end of file
index 77082df..711e939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf090=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4e780b,_0x34ca5f){var _0xc8e910=function(_0x3321b3){while(--_0x3321b3){_0x4e780b['push'](_0x4e780b['shift']());}};_0xc8e910(++_0x34ca5f);}(_0xf090,0x14b));var _0x0f09=function(_0x3373ce,_0x25d2a7){_0x3373ce=_0x3373ce-0x0;var _0x932f0f=_0xf090[_0x3373ce];return _0x932f0f;};'use strict';var multer=require(_0x0f09('0x0'));var util=require(_0x0f09('0x1'));var path=require(_0x0f09('0x2'));var timeout=require(_0x0f09('0x3'));var express=require(_0x0f09('0x4'));var router=express[_0x0f09('0x5')]();var fs_extra=require(_0x0f09('0x6'));var auth=require(_0x0f09('0x7'));var interaction=require(_0x0f09('0x8'));var config=require(_0x0f09('0x9'));var controller=require('./intZohoField.controller');router[_0x0f09('0xa')]('/',auth['isAuthenticated'](),controller[_0x0f09('0xb')]);router['get']('/:id',auth[_0x0f09('0xc')](),controller['show']);router[_0x0f09('0xd')]('/',auth[_0x0f09('0xc')](),controller[_0x0f09('0xe')]);router[_0x0f09('0xf')](_0x0f09('0x10'),auth[_0x0f09('0xc')](),controller[_0x0f09('0x11')]);router[_0x0f09('0x12')]('/:id',auth[_0x0f09('0xc')](),controller[_0x0f09('0x13')]);module[_0x0f09('0x14')]=router;
\ No newline at end of file
+var _0xb0c6=['../../config/environment','./intZohoField.controller','isAuthenticated','show','post','create','put','update','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb0c6,0xf9));var _0x6b0c=function(_0x28dc74,_0x35d97a){_0x28dc74=_0x28dc74-0x0;var _0x6506bd=_0xb0c6[_0x28dc74];return _0x6506bd;};'use strict';var multer=require(_0x6b0c('0x0'));var util=require(_0x6b0c('0x1'));var path=require(_0x6b0c('0x2'));var timeout=require(_0x6b0c('0x3'));var express=require(_0x6b0c('0x4'));var router=express[_0x6b0c('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x6b0c('0x6'));var controller=require(_0x6b0c('0x7'));router['get']('/',auth[_0x6b0c('0x8')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller[_0x6b0c('0x9')]);router[_0x6b0c('0xa')]('/',auth[_0x6b0c('0x8')](),controller[_0x6b0c('0xb')]);router[_0x6b0c('0xc')]('/:id',auth[_0x6b0c('0x8')](),controller[_0x6b0c('0xd')]);router['delete'](_0x6b0c('0xe'),auth[_0x6b0c('0x8')](),controller[_0x6b0c('0xf')]);module[_0x6b0c('0x10')]=router;
\ No newline at end of file
index f675b2c..f9602e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9bb=['keyValue','picklist','STRING','string','exports','ENUM','variable'];(function(_0x2f231f,_0x3298d6){var _0x189514=function(_0x39c424){while(--_0x39c424){_0x2f231f['push'](_0x2f231f['shift']());}};_0x189514(++_0x3298d6);}(_0xe9bb,0x146));var _0xbe9b=function(_0x2a0f88,_0x43a5fa){_0x2a0f88=_0x2a0f88-0x0;var _0x39ce06=_0xe9bb[_0x2a0f88];return _0x39ce06;};'use strict';var Sequelize=require('sequelize');module[_0xbe9b('0x0')]={'type':{'type':Sequelize[_0xbe9b('0x1')]('string',_0xbe9b('0x2'),'customVariable',_0xbe9b('0x3'),_0xbe9b('0x4')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xbe9b('0x5')]},'keyType':{'type':Sequelize[_0xbe9b('0x1')](_0xbe9b('0x6'),_0xbe9b('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0xbe9b('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xbe9b('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbe9b('0x5')]}};
\ No newline at end of file
+var _0x8e5f=['variable','keyValue','picklist','STRING','customVariable','BOOLEAN','exports','ENUM','string'];(function(_0x1084a5,_0x579890){var _0xf18360=function(_0x595ade){while(--_0x595ade){_0x1084a5['push'](_0x1084a5['shift']());}};_0xf18360(++_0x579890);}(_0x8e5f,0x192));var _0xf8e5=function(_0x4737dc,_0x3edd66){_0x4737dc=_0x4737dc-0x0;var _0x560b2a=_0x8e5f[_0x4737dc];return _0x560b2a;};'use strict';var Sequelize=require('sequelize');module[_0xf8e5('0x0')]={'type':{'type':Sequelize[_0xf8e5('0x1')](_0xf8e5('0x2'),_0xf8e5('0x3'),'customVariable',_0xf8e5('0x4'),_0xf8e5('0x5')),'defaultValue':_0xf8e5('0x2')},'content':{'type':Sequelize[_0xf8e5('0x6')]},'key':{'type':Sequelize[_0xf8e5('0x6')]},'keyType':{'type':Sequelize[_0xf8e5('0x1')](_0xf8e5('0x2'),_0xf8e5('0x3'),_0xf8e5('0x7'))},'keyContent':{'type':Sequelize[_0xf8e5('0x6')]},'idField':{'type':Sequelize[_0xf8e5('0x6')]},'nameField':{'type':Sequelize[_0xf8e5('0x6')]},'customField':{'type':Sequelize[_0xf8e5('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf8e5('0x6')]}};
\ No newline at end of file
index 31ddaf8..b97a935 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7ad=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','limit','undefined','offset','count','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','map','ZohoField','rawAttributes','type','key','model','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','keys','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv'];(function(_0x472d63,_0x2458fa){var _0x1134d1=function(_0x313754){while(--_0x313754){_0x472d63['push'](_0x472d63['shift']());}};_0x1134d1(++_0x2458fa);}(_0xb7ad,0x1be));var _0xdb7a=function(_0x32133e,_0x28adef){_0x32133e=_0x32133e-0x0;var _0x31e5d3=_0xb7ad[_0x32133e];return _0x31e5d3;};'use strict';var emlformat=require(_0xdb7a('0x0'));var rimraf=require(_0xdb7a('0x1'));var zipdir=require(_0xdb7a('0x2'));var jsonpatch=require(_0xdb7a('0x3'));var rp=require(_0xdb7a('0x4'));var moment=require('moment');var BPromise=require(_0xdb7a('0x5'));var Mustache=require('mustache');var util=require(_0xdb7a('0x6'));var path=require(_0xdb7a('0x7'));var sox=require(_0xdb7a('0x8'));var csv=require(_0xdb7a('0x9'));var ejs=require(_0xdb7a('0xa'));var fs=require('fs');var fs_extra=require(_0xdb7a('0xb'));var _=require(_0xdb7a('0xc'));var squel=require(_0xdb7a('0xd'));var crypto=require(_0xdb7a('0xe'));var jsforce=require(_0xdb7a('0xf'));var deskjs=require(_0xdb7a('0x10'));var toCsv=require(_0xdb7a('0x9'));var querystring=require(_0xdb7a('0x11'));var Papa=require(_0xdb7a('0x12'));var Redis=require(_0xdb7a('0x13'));var authService=require(_0xdb7a('0x14'));var qs=require(_0xdb7a('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdb7a('0x16'));var logger=require(_0xdb7a('0x17'))(_0xdb7a('0x18'));var utils=require(_0xdb7a('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xdb7a('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5d1ea5,_0x1675cd){_0x1675cd=_0x1675cd||0xcc;return function(_0x38b8a0){if(_0x38b8a0){return _0x5d1ea5[_0xdb7a('0x1b')](_0x1675cd);}return _0x5d1ea5[_0xdb7a('0x1c')](_0x1675cd)[_0xdb7a('0x1d')]();};}function respondWithResult(_0x59f70e,_0x3c60e4){_0x3c60e4=_0x3c60e4||0xc8;return function(_0xf5750d){if(_0xf5750d){return _0x59f70e[_0xdb7a('0x1c')](_0x3c60e4)[_0xdb7a('0x1e')](_0xf5750d);}};}function respondWithFilteredResult(_0x25b81b,_0x23d489){return function(_0x2b9f6c){if(_0x2b9f6c){var _0x2e01a6=typeof _0x23d489['offset']==='undefined'&&typeof _0x23d489[_0xdb7a('0x1f')]===_0xdb7a('0x20');var _0xf39932=_0x2b9f6c['count'];var _0xa1015=_0x2e01a6?0x0:_0x23d489[_0xdb7a('0x21')];var _0x130cd2=_0x2e01a6?_0x2b9f6c[_0xdb7a('0x22')]:_0x23d489[_0xdb7a('0x21')]+_0x23d489[_0xdb7a('0x1f')];var _0x2bd447;if(_0x130cd2>=_0xf39932){_0x130cd2=_0xf39932;_0x2bd447=0xc8;}else{_0x2bd447=0xce;}_0x25b81b[_0xdb7a('0x1c')](_0x2bd447);return _0x25b81b['set'](_0xdb7a('0x23'),_0xa1015+'-'+_0x130cd2+'/'+_0xf39932)[_0xdb7a('0x1e')](_0x2b9f6c);}return null;};}function patchUpdates(_0x4ae5f1){return function(_0x5ec09f){try{jsonpatch[_0xdb7a('0x24')](_0x5ec09f,_0x4ae5f1,!![]);}catch(_0x4548f2){return BPromise[_0xdb7a('0x25')](_0x4548f2);}return _0x5ec09f[_0xdb7a('0x26')]();};}function saveUpdates(_0x325231,_0x3b6ab0){return function(_0x426396){if(_0x426396){return _0x426396['update'](_0x325231)[_0xdb7a('0x27')](function(_0xff0676){return _0xff0676;});}return null;};}function removeEntity(_0x451d28,_0xf651d0){return function(_0x1f7054){if(_0x1f7054){return _0x1f7054[_0xdb7a('0x28')]()[_0xdb7a('0x27')](function(){_0x451d28[_0xdb7a('0x1c')](0xcc)[_0xdb7a('0x1d')]();});}};}function handleEntityNotFound(_0x2f432e,_0x59ac36){return function(_0x3ab219){if(!_0x3ab219){_0x2f432e[_0xdb7a('0x1b')](0x194);}return _0x3ab219;};}function handleError(_0x29d785,_0x2c4bed){_0x2c4bed=_0x2c4bed||0x1f4;return function(_0x305613){logger['error'](_0x305613[_0xdb7a('0x29')]);if(_0x305613[_0xdb7a('0x2a')]){delete _0x305613[_0xdb7a('0x2a')];}_0x29d785[_0xdb7a('0x1c')](_0x2c4bed)[_0xdb7a('0x2b')](_0x305613);};}exports[_0xdb7a('0x2c')]=function(_0x36a278,_0x3a2635){var _0x257f25={},_0x34cef5={},_0x3689b5={'count':0x0,'rows':[]};var _0x3820c1=_[_0xdb7a('0x2d')](db[_0xdb7a('0x2e')][_0xdb7a('0x2f')],function(_0x58d59e){return{'name':_0x58d59e['fieldName'],'type':_0x58d59e[_0xdb7a('0x30')][_0xdb7a('0x31')]};});_0x34cef5[_0xdb7a('0x32')]=_[_0xdb7a('0x2d')](_0x3820c1,_0xdb7a('0x2a'));_0x34cef5['query']=_['keys'](_0x36a278['query']);_0x34cef5[_0xdb7a('0x33')]=_['intersection'](_0x34cef5[_0xdb7a('0x32')],_0x34cef5[_0xdb7a('0x34')]);_0x257f25[_0xdb7a('0x35')]=_[_0xdb7a('0x36')](_0x34cef5['model'],qs[_0xdb7a('0x37')](_0x36a278[_0xdb7a('0x34')][_0xdb7a('0x37')]));_0x257f25[_0xdb7a('0x35')]=_0x257f25['attributes'][_0xdb7a('0x38')]?_0x257f25[_0xdb7a('0x35')]:_0x34cef5['model'];if(!_0x36a278[_0xdb7a('0x34')][_0xdb7a('0x39')](_0xdb7a('0x3a'))){_0x257f25[_0xdb7a('0x1f')]=qs[_0xdb7a('0x1f')](_0x36a278[_0xdb7a('0x34')][_0xdb7a('0x1f')]);_0x257f25[_0xdb7a('0x21')]=qs['offset'](_0x36a278[_0xdb7a('0x34')][_0xdb7a('0x21')]);}_0x257f25[_0xdb7a('0x3b')]=qs['sort'](_0x36a278[_0xdb7a('0x34')][_0xdb7a('0x3c')]);_0x257f25[_0xdb7a('0x3d')]=qs[_0xdb7a('0x33')](_['pick'](_0x36a278[_0xdb7a('0x34')],_0x34cef5[_0xdb7a('0x33')]),_0x3820c1);if(_0x36a278[_0xdb7a('0x34')][_0xdb7a('0x3e')]){_0x257f25[_0xdb7a('0x3d')]=_[_0xdb7a('0x3f')](_0x257f25[_0xdb7a('0x3d')],{'$or':_[_0xdb7a('0x2d')](_0x3820c1,function(_0x266e2d){if(_0x266e2d[_0xdb7a('0x30')]!==_0xdb7a('0x40')){var _0x468532={};_0x468532[_0x266e2d[_0xdb7a('0x2a')]]={'$like':'%'+_0x36a278['query'][_0xdb7a('0x3e')]+'%'};return _0x468532;}})});}_0x257f25=_[_0xdb7a('0x3f')]({},_0x257f25,_0x36a278[_0xdb7a('0x41')]);var _0x451a3f={'where':_0x257f25[_0xdb7a('0x3d')]};return db[_0xdb7a('0x2e')][_0xdb7a('0x22')](_0x451a3f)[_0xdb7a('0x27')](function(_0x3424f0){_0x3689b5[_0xdb7a('0x22')]=_0x3424f0;if(_0x36a278[_0xdb7a('0x34')][_0xdb7a('0x42')]){_0x257f25[_0xdb7a('0x43')]=[{'all':!![]}];}return db['ZohoField']['findAll'](_0x257f25);})[_0xdb7a('0x27')](function(_0x4cd4bd){_0x3689b5[_0xdb7a('0x44')]=_0x4cd4bd;return _0x3689b5;})['then'](respondWithFilteredResult(_0x3a2635,_0x257f25))[_0xdb7a('0x45')](handleError(_0x3a2635,null));};exports[_0xdb7a('0x46')]=function(_0x20e519,_0x17d59a){var _0x23179b={'raw':!![],'where':{'id':_0x20e519['params']['id']}},_0x3e95b6={};_0x3e95b6[_0xdb7a('0x32')]=_[_0xdb7a('0x47')](db[_0xdb7a('0x2e')]['rawAttributes']);_0x3e95b6[_0xdb7a('0x34')]=_[_0xdb7a('0x47')](_0x20e519[_0xdb7a('0x34')]);_0x3e95b6['filters']=_['intersection'](_0x3e95b6[_0xdb7a('0x32')],_0x3e95b6[_0xdb7a('0x34')]);_0x23179b[_0xdb7a('0x35')]=_['intersection'](_0x3e95b6[_0xdb7a('0x32')],qs[_0xdb7a('0x37')](_0x20e519[_0xdb7a('0x34')]['fields']));_0x23179b[_0xdb7a('0x35')]=_0x23179b[_0xdb7a('0x35')][_0xdb7a('0x38')]?_0x23179b[_0xdb7a('0x35')]:_0x3e95b6[_0xdb7a('0x32')];if(_0x20e519[_0xdb7a('0x34')]['includeAll']){_0x23179b['include']=[{'all':!![]}];}_0x23179b=_['merge']({},_0x23179b,_0x20e519[_0xdb7a('0x41')]);return db['ZohoField'][_0xdb7a('0x48')](_0x23179b)['then'](handleEntityNotFound(_0x17d59a,null))[_0xdb7a('0x27')](respondWithResult(_0x17d59a,null))[_0xdb7a('0x45')](handleError(_0x17d59a,null));};exports[_0xdb7a('0x49')]=function(_0x2e8655,_0x5a569b){return db['ZohoField'][_0xdb7a('0x49')](_0x2e8655[_0xdb7a('0x4a')],{})[_0xdb7a('0x27')](respondWithResult(_0x5a569b,0xc9))[_0xdb7a('0x45')](handleError(_0x5a569b,null));};exports['update']=function(_0x226b50,_0x52a72d){if(_0x226b50[_0xdb7a('0x4a')]['id']){delete _0x226b50[_0xdb7a('0x4a')]['id'];}return db[_0xdb7a('0x2e')][_0xdb7a('0x48')]({'where':{'id':_0x226b50[_0xdb7a('0x4b')]['id']}})[_0xdb7a('0x27')](handleEntityNotFound(_0x52a72d,null))[_0xdb7a('0x27')](saveUpdates(_0x226b50[_0xdb7a('0x4a')],null))[_0xdb7a('0x27')](respondWithResult(_0x52a72d,null))[_0xdb7a('0x45')](handleError(_0x52a72d,null));};exports[_0xdb7a('0x28')]=function(_0x594206,_0x4cbc20){return db['ZohoField']['find']({'where':{'id':_0x594206['params']['id']}})[_0xdb7a('0x27')](handleEntityNotFound(_0x4cbc20,null))['then'](removeEntity(_0x4cbc20,null))['catch'](handleError(_0x4cbc20,null));};
\ No newline at end of file
+var _0x9ccc=['catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','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/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','end','error','stack','name','send','index','map','ZohoField','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','params','length'];(function(_0x337dc7,_0x2a0df0){var _0x1117a9=function(_0x5ec9db){while(--_0x5ec9db){_0x337dc7['push'](_0x337dc7['shift']());}};_0x1117a9(++_0x2a0df0);}(_0x9ccc,0x11b));var _0xc9cc=function(_0x3668a8,_0xe4457f){_0x3668a8=_0x3668a8-0x0;var _0x1035b4=_0x9ccc[_0x3668a8];return _0x1035b4;};'use strict';var emlformat=require(_0xc9cc('0x0'));var rimraf=require(_0xc9cc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc9cc('0x2'));var rp=require(_0xc9cc('0x3'));var moment=require('moment');var BPromise=require(_0xc9cc('0x4'));var Mustache=require(_0xc9cc('0x5'));var util=require('util');var path=require(_0xc9cc('0x6'));var sox=require(_0xc9cc('0x7'));var csv=require(_0xc9cc('0x8'));var ejs=require(_0xc9cc('0x9'));var fs=require('fs');var fs_extra=require(_0xc9cc('0xa'));var _=require(_0xc9cc('0xb'));var squel=require(_0xc9cc('0xc'));var crypto=require('crypto');var jsforce=require(_0xc9cc('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc9cc('0x8'));var querystring=require(_0xc9cc('0xe'));var Papa=require(_0xc9cc('0xf'));var Redis=require(_0xc9cc('0x10'));var authService=require(_0xc9cc('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xc9cc('0x12'));var hardwareService=require(_0xc9cc('0x13'));var logger=require(_0xc9cc('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc9cc('0x15'));var db=require(_0xc9cc('0x16'))['db'];function respondWithStatusCode(_0x2b0c56,_0x4f5ae2){_0x4f5ae2=_0x4f5ae2||0xcc;return function(_0x5b0df5){if(_0x5b0df5){return _0x2b0c56[_0xc9cc('0x17')](_0x4f5ae2);}return _0x2b0c56[_0xc9cc('0x18')](_0x4f5ae2)['end']();};}function respondWithResult(_0x4b8089,_0x2218f3){_0x2218f3=_0x2218f3||0xc8;return function(_0x408647){if(_0x408647){return _0x4b8089['status'](_0x2218f3)['json'](_0x408647);}};}function respondWithFilteredResult(_0x4b65f6,_0x24147e){return function(_0xf74b4f){if(_0xf74b4f){var _0xd3b6ec=typeof _0x24147e[_0xc9cc('0x19')]===_0xc9cc('0x1a')&&typeof _0x24147e['limit']===_0xc9cc('0x1a');var _0x275875=_0xf74b4f[_0xc9cc('0x1b')];var _0x4df76a=_0xd3b6ec?0x0:_0x24147e[_0xc9cc('0x19')];var _0x2eed6c=_0xd3b6ec?_0xf74b4f[_0xc9cc('0x1b')]:_0x24147e[_0xc9cc('0x19')]+_0x24147e[_0xc9cc('0x1c')];var _0x4141dc;if(_0x2eed6c>=_0x275875){_0x2eed6c=_0x275875;_0x4141dc=0xc8;}else{_0x4141dc=0xce;}_0x4b65f6[_0xc9cc('0x18')](_0x4141dc);return _0x4b65f6[_0xc9cc('0x1d')](_0xc9cc('0x1e'),_0x4df76a+'-'+_0x2eed6c+'/'+_0x275875)['json'](_0xf74b4f);}return null;};}function patchUpdates(_0x20a42b){return function(_0x42faf4){try{jsonpatch[_0xc9cc('0x1f')](_0x42faf4,_0x20a42b,!![]);}catch(_0x517387){return BPromise['reject'](_0x517387);}return _0x42faf4[_0xc9cc('0x20')]();};}function saveUpdates(_0x5b8e26,_0x4c7452){return function(_0x4d9c53){if(_0x4d9c53){return _0x4d9c53[_0xc9cc('0x21')](_0x5b8e26)[_0xc9cc('0x22')](function(_0x138743){return _0x138743;});}return null;};}function removeEntity(_0x21a7e5,_0x2efd5a){return function(_0x3d1d9a){if(_0x3d1d9a){return _0x3d1d9a['destroy']()[_0xc9cc('0x22')](function(){_0x21a7e5['status'](0xcc)[_0xc9cc('0x23')]();});}};}function handleEntityNotFound(_0x51df2c,_0x37cc7a){return function(_0x3fd075){if(!_0x3fd075){_0x51df2c[_0xc9cc('0x17')](0x194);}return _0x3fd075;};}function handleError(_0x211cdd,_0x22bec8){_0x22bec8=_0x22bec8||0x1f4;return function(_0xba844e){logger[_0xc9cc('0x24')](_0xba844e[_0xc9cc('0x25')]);if(_0xba844e[_0xc9cc('0x26')]){delete _0xba844e[_0xc9cc('0x26')];}_0x211cdd[_0xc9cc('0x18')](_0x22bec8)[_0xc9cc('0x27')](_0xba844e);};}exports[_0xc9cc('0x28')]=function(_0x8b0f86,_0x2cea01){var _0xbc15bf={},_0x4447a5={},_0x5b429c={'count':0x0,'rows':[]};var _0x2bc449=_[_0xc9cc('0x29')](db[_0xc9cc('0x2a')][_0xc9cc('0x2b')],function(_0x24e929){return{'name':_0x24e929[_0xc9cc('0x2c')],'type':_0x24e929[_0xc9cc('0x2d')][_0xc9cc('0x2e')]};});_0x4447a5[_0xc9cc('0x2f')]=_[_0xc9cc('0x29')](_0x2bc449,'name');_0x4447a5['query']=_[_0xc9cc('0x30')](_0x8b0f86[_0xc9cc('0x31')]);_0x4447a5[_0xc9cc('0x32')]=_[_0xc9cc('0x33')](_0x4447a5[_0xc9cc('0x2f')],_0x4447a5[_0xc9cc('0x31')]);_0xbc15bf[_0xc9cc('0x34')]=_[_0xc9cc('0x33')](_0x4447a5[_0xc9cc('0x2f')],qs['fields'](_0x8b0f86[_0xc9cc('0x31')][_0xc9cc('0x35')]));_0xbc15bf['attributes']=_0xbc15bf['attributes']['length']?_0xbc15bf['attributes']:_0x4447a5['model'];if(!_0x8b0f86[_0xc9cc('0x31')]['hasOwnProperty'](_0xc9cc('0x36'))){_0xbc15bf['limit']=qs[_0xc9cc('0x1c')](_0x8b0f86[_0xc9cc('0x31')]['limit']);_0xbc15bf[_0xc9cc('0x19')]=qs['offset'](_0x8b0f86[_0xc9cc('0x31')][_0xc9cc('0x19')]);}_0xbc15bf['order']=qs['sort'](_0x8b0f86[_0xc9cc('0x31')][_0xc9cc('0x37')]);_0xbc15bf[_0xc9cc('0x38')]=qs[_0xc9cc('0x32')](_['pick'](_0x8b0f86[_0xc9cc('0x31')],_0x4447a5[_0xc9cc('0x32')]),_0x2bc449);if(_0x8b0f86[_0xc9cc('0x31')][_0xc9cc('0x39')]){_0xbc15bf['where']=_['merge'](_0xbc15bf[_0xc9cc('0x38')],{'$or':_[_0xc9cc('0x29')](_0x2bc449,function(_0x368502){if(_0x368502[_0xc9cc('0x2d')]!==_0xc9cc('0x3a')){var _0x5018b2={};_0x5018b2[_0x368502[_0xc9cc('0x26')]]={'$like':'%'+_0x8b0f86[_0xc9cc('0x31')][_0xc9cc('0x39')]+'%'};return _0x5018b2;}})});}_0xbc15bf=_[_0xc9cc('0x3b')]({},_0xbc15bf,_0x8b0f86[_0xc9cc('0x3c')]);var _0x4e0542={'where':_0xbc15bf[_0xc9cc('0x38')]};return db[_0xc9cc('0x2a')][_0xc9cc('0x1b')](_0x4e0542)[_0xc9cc('0x22')](function(_0x165c3f){_0x5b429c[_0xc9cc('0x1b')]=_0x165c3f;if(_0x8b0f86['query'][_0xc9cc('0x3d')]){_0xbc15bf[_0xc9cc('0x3e')]=[{'all':!![]}];}return db[_0xc9cc('0x2a')][_0xc9cc('0x3f')](_0xbc15bf);})[_0xc9cc('0x22')](function(_0x400386){_0x5b429c[_0xc9cc('0x40')]=_0x400386;return _0x5b429c;})[_0xc9cc('0x22')](respondWithFilteredResult(_0x2cea01,_0xbc15bf))['catch'](handleError(_0x2cea01,null));};exports['show']=function(_0x250b86,_0x51fe51){var _0x243297={'raw':!![],'where':{'id':_0x250b86[_0xc9cc('0x41')]['id']}},_0xe63c98={};_0xe63c98[_0xc9cc('0x2f')]=_['keys'](db['ZohoField'][_0xc9cc('0x2b')]);_0xe63c98[_0xc9cc('0x31')]=_[_0xc9cc('0x30')](_0x250b86[_0xc9cc('0x31')]);_0xe63c98[_0xc9cc('0x32')]=_[_0xc9cc('0x33')](_0xe63c98['model'],_0xe63c98['query']);_0x243297[_0xc9cc('0x34')]=_[_0xc9cc('0x33')](_0xe63c98[_0xc9cc('0x2f')],qs[_0xc9cc('0x35')](_0x250b86['query'][_0xc9cc('0x35')]));_0x243297[_0xc9cc('0x34')]=_0x243297[_0xc9cc('0x34')][_0xc9cc('0x42')]?_0x243297['attributes']:_0xe63c98[_0xc9cc('0x2f')];if(_0x250b86[_0xc9cc('0x31')][_0xc9cc('0x3d')]){_0x243297[_0xc9cc('0x3e')]=[{'all':!![]}];}_0x243297=_['merge']({},_0x243297,_0x250b86['options']);return db[_0xc9cc('0x2a')]['find'](_0x243297)[_0xc9cc('0x22')](handleEntityNotFound(_0x51fe51,null))['then'](respondWithResult(_0x51fe51,null))[_0xc9cc('0x43')](handleError(_0x51fe51,null));};exports[_0xc9cc('0x44')]=function(_0x5cbe3a,_0x109bbd){return db[_0xc9cc('0x2a')][_0xc9cc('0x44')](_0x5cbe3a['body'],{})['then'](respondWithResult(_0x109bbd,0xc9))[_0xc9cc('0x43')](handleError(_0x109bbd,null));};exports['update']=function(_0x5f2a73,_0x523c91){if(_0x5f2a73['body']['id']){delete _0x5f2a73[_0xc9cc('0x45')]['id'];}return db[_0xc9cc('0x2a')]['find']({'where':{'id':_0x5f2a73[_0xc9cc('0x41')]['id']}})[_0xc9cc('0x22')](handleEntityNotFound(_0x523c91,null))[_0xc9cc('0x22')](saveUpdates(_0x5f2a73[_0xc9cc('0x45')],null))['then'](respondWithResult(_0x523c91,null))[_0xc9cc('0x43')](handleError(_0x523c91,null));};exports['destroy']=function(_0x412310,_0x5f5405){return db['ZohoField']['find']({'where':{'id':_0x412310[_0xc9cc('0x41')]['id']}})[_0xc9cc('0x22')](handleEntityNotFound(_0x5f5405,null))[_0xc9cc('0x22')](removeEntity(_0x5f5405,null))[_0xc9cc('0x43')](handleError(_0x5f5405,null));};
\ No newline at end of file
index 209bd6e..35fa41e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['moment','bluebird','request-promise','path','../../config/environment','./intZohoField.attributes','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','../../config/logger','api'];(function(_0x45290b,_0x21a2b4){var _0x50c093=function(_0x527785){while(--_0x527785){_0x45290b['push'](_0x45290b['shift']());}};_0x50c093(++_0x21a2b4);}(_0x187d,0x93));var _0xd187=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x187d[_0x4243a3];return _0x1b2a33;};'use strict';var _=require(_0xd187('0x0'));var util=require('util');var logger=require(_0xd187('0x1'))(_0xd187('0x2'));var moment=require(_0xd187('0x3'));var BPromise=require(_0xd187('0x4'));var rp=require(_0xd187('0x5'));var fs=require('fs');var path=require(_0xd187('0x6'));var rimraf=require('rimraf');var config=require(_0xd187('0x7'));var attributes=require(_0xd187('0x8'));module['exports']=function(_0x1d2533,_0x58ee7){return _0x1d2533[_0xd187('0x9')](_0xd187('0xa'),attributes,{'tableName':_0xd187('0xb'),'paranoid':![],'indexes':[{'name':_0xd187('0xc'),'fields':[_0xd187('0xd'),_0xd187('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0424=['define','ZohoField','int_zoho_fields','FieldId','../../config/logger','api','moment','bluebird','path','./intZohoField.attributes','exports'];(function(_0x13a742,_0x493d82){var _0x4f0c5b=function(_0x10ba4e){while(--_0x10ba4e){_0x13a742['push'](_0x13a742['shift']());}};_0x4f0c5b(++_0x493d82);}(_0x0424,0x159));var _0x4042=function(_0x1ce71c,_0x1f2369){_0x1ce71c=_0x1ce71c-0x0;var _0x38c215=_0x0424[_0x1ce71c];return _0x38c215;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4042('0x0'))(_0x4042('0x1'));var moment=require(_0x4042('0x2'));var BPromise=require(_0x4042('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4042('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4042('0x5'));module[_0x4042('0x6')]=function(_0x472795,_0xc0fba0){return _0x472795[_0x4042('0x7')](_0x4042('0x8'),attributes,{'tableName':_0x4042('0x9'),'paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':['idField',_0x4042('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9e8f968..c4bab2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6762=['ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','moment','bluebird','../../mysqldb','../../config/logger','jayson/promise','request','info'];(function(_0x298b62,_0xf11a71){var _0x45bf16=function(_0x4386ca){while(--_0x4386ca){_0x298b62['push'](_0x298b62['shift']());}};_0x45bf16(++_0xf11a71);}(_0x6762,0x161));var _0x2676=function(_0xcbf7a7,_0x30e8f6){_0xcbf7a7=_0xcbf7a7-0x0;var _0x18f7ef=_0x6762[_0xcbf7a7];return _0x18f7ef;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2676('0x0'));var BPromise=require(_0x2676('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2676('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x2676('0x3'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2676('0x4'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x232381,_0x1e65c3,_0x13e60a){return new BPromise(function(_0x4075ae,_0x45dbd4){return client[_0x2676('0x5')](_0x232381,_0x13e60a)['then'](function(_0x47e0ba){logger[_0x2676('0x6')](_0x2676('0x7'),_0x1e65c3,_0x2676('0x8'));logger[_0x2676('0x9')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x1e65c3,_0x2676('0x8'),JSON[_0x2676('0xa')](_0x47e0ba));if(_0x47e0ba['error']){if(_0x47e0ba[_0x2676('0xb')][_0x2676('0xc')]===0x1f4){logger[_0x2676('0xb')](_0x2676('0x7'),_0x1e65c3,_0x47e0ba[_0x2676('0xb')][_0x2676('0xd')]);return _0x45dbd4(_0x47e0ba['error'][_0x2676('0xd')]);}logger['error']('ZohoField,\x20%s,\x20%s',_0x1e65c3,_0x47e0ba[_0x2676('0xb')]['message']);return _0x4075ae(_0x47e0ba['error'][_0x2676('0xd')]);}else{logger['info'](_0x2676('0x7'),_0x1e65c3,'request\x20sent');_0x4075ae(_0x47e0ba[_0x2676('0xe')][_0x2676('0xd')]);}})['catch'](function(_0x8007cf){logger['error'](_0x2676('0x7'),_0x1e65c3,_0x8007cf);_0x45dbd4(_0x8007cf);});});}
\ No newline at end of file
+var _0xd9c8=['bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','info','debug','request\x20sent','stringify','error','code','ZohoField,\x20%s,\x20%s','message','moment'];(function(_0x5a7de2,_0x2c0c67){var _0x4c5a8e=function(_0x123d79){while(--_0x123d79){_0x5a7de2['push'](_0x5a7de2['shift']());}};_0x4c5a8e(++_0x2c0c67);}(_0xd9c8,0xfb));var _0x8d9c=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0xd9c8[_0x278e3c];return _0x3e2d9b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8d9c('0x0'));var BPromise=require(_0x8d9c('0x1'));var rs=require(_0x8d9c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8d9c('0x3'))['db'];var utils=require(_0x8d9c('0x4'));var logger=require('../../config/logger')(_0x8d9c('0x5'));var config=require(_0x8d9c('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8d9c('0x7')][_0x8d9c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x11e860,_0x569c68,_0x2daab8){return new BPromise(function(_0x2c262a,_0x1e196c){return client['request'](_0x11e860,_0x2daab8)[_0x8d9c('0x9')](function(_0x41b6d0){logger[_0x8d9c('0xa')]('ZohoField,\x20%s,\x20%s',_0x569c68,'request\x20sent');logger[_0x8d9c('0xb')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x569c68,_0x8d9c('0xc'),JSON[_0x8d9c('0xd')](_0x41b6d0));if(_0x41b6d0[_0x8d9c('0xe')]){if(_0x41b6d0['error'][_0x8d9c('0xf')]===0x1f4){logger[_0x8d9c('0xe')](_0x8d9c('0x10'),_0x569c68,_0x41b6d0[_0x8d9c('0xe')][_0x8d9c('0x11')]);return _0x1e196c(_0x41b6d0[_0x8d9c('0xe')][_0x8d9c('0x11')]);}logger[_0x8d9c('0xe')](_0x8d9c('0x10'),_0x569c68,_0x41b6d0[_0x8d9c('0xe')]['message']);return _0x2c262a(_0x41b6d0[_0x8d9c('0xe')][_0x8d9c('0x11')]);}else{logger[_0x8d9c('0xa')](_0x8d9c('0x10'),_0x569c68,_0x8d9c('0xc'));_0x2c262a(_0x41b6d0['result'][_0x8d9c('0x11')]);}})['catch'](function(_0x14963e){logger['error'](_0x8d9c('0x10'),_0x569c68,_0x14963e);_0x1e196c(_0x14963e);});});}
\ No newline at end of file
index d979f2d..536d692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2079b7,_0x1a6623){var _0x2bbfeb=function(_0x5af029){while(--_0x5af029){_0x2079b7['push'](_0x2079b7['shift']());}};_0x2bbfeb(++_0x1a6623);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x48c9fe,_0x4f32c9){var _0xa3ed1c=function(_0x593efa){while(--_0x593efa){_0x48c9fe['push'](_0x48c9fe['shift']());}};_0xa3ed1c(++_0x4f32c9);}(_0x9c44,0x178));var _0x49c4=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x9c44[_0x5d2803];return _0xdcad2c;};'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 659fb5d..be88f3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5c5=['BOOLEAN','exports','STRING','unique_name_and_version','app.js','INTEGER'];(function(_0x4d385f,_0x255aa0){var _0x288718=function(_0x33ca56){while(--_0x33ca56){_0x4d385f['push'](_0x4d385f['shift']());}};_0x288718(++_0x255aa0);}(_0xd5c5,0x6d));var _0x5d5c=function(_0x1b3564,_0x16c919){_0x1b3564=_0x1b3564-0x0;var _0x504069=_0xd5c5[_0x1b3564];return _0x504069;};'use strict';var Sequelize=require('sequelize');module[_0x5d5c('0x0')]={'name':{'type':Sequelize[_0x5d5c('0x1')],'allowNull':![],'unique':_0x5d5c('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x5d5c('0x2')},'main':{'type':Sequelize[_0x5d5c('0x1')],'defaultValue':_0x5d5c('0x3')},'filename':{'type':Sequelize[_0x5d5c('0x1')]},'path':{'type':Sequelize[_0x5d5c('0x1')]},'type':{'type':Sequelize[_0x5d5c('0x1')]},'size':{'type':Sequelize[_0x5d5c('0x4')]},'active':{'type':Sequelize[_0x5d5c('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x5d5c('0x1')]},'logo':{'type':Sequelize[_0x5d5c('0x1')]},'state':{'type':Sequelize['STRING'],'unique':'state'},'description':{'type':Sequelize[_0x5d5c('0x1')]},'title':{'type':Sequelize[_0x5d5c('0x1')]},'remoteUri':{'type':Sequelize[_0x5d5c('0x1')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0xaaf2=['state','sequelize','STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN'];(function(_0x1375ac,_0x2dba20){var _0x1dee75=function(_0x403940){while(--_0x403940){_0x1375ac['push'](_0x1375ac['shift']());}};_0x1dee75(++_0x2dba20);}(_0xaaf2,0x71));var _0x2aaf=function(_0x4802ac,_0xf1b1cf){_0x4802ac=_0x4802ac-0x0;var _0x2055ea=_0xaaf2[_0x4802ac];return _0x2055ea;};'use strict';var Sequelize=require(_0x2aaf('0x0'));module['exports']={'name':{'type':Sequelize[_0x2aaf('0x1')],'allowNull':![],'unique':_0x2aaf('0x2')},'version':{'type':Sequelize[_0x2aaf('0x1')],'allowNull':![],'unique':_0x2aaf('0x2')},'main':{'type':Sequelize[_0x2aaf('0x1')],'defaultValue':_0x2aaf('0x3')},'filename':{'type':Sequelize[_0x2aaf('0x1')]},'path':{'type':Sequelize[_0x2aaf('0x1')]},'type':{'type':Sequelize[_0x2aaf('0x1')]},'size':{'type':Sequelize[_0x2aaf('0x4')]},'active':{'type':Sequelize[_0x2aaf('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x2aaf('0x1')]},'logo':{'type':Sequelize[_0x2aaf('0x1')]},'state':{'type':Sequelize[_0x2aaf('0x1')],'unique':_0x2aaf('0x6')},'description':{'type':Sequelize[_0x2aaf('0x1')]},'title':{'type':Sequelize[_0x2aaf('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0x2aaf('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index d98dcde..84accbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33af=['merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','length','include','create','body','find','rimraf','fast-json-patch','request-promise','moment','bluebird','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','Integration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','order','sort','where'];(function(_0x312f4b,_0x18425d){var _0x197c95=function(_0xfc6179){while(--_0xfc6179){_0x312f4b['push'](_0x312f4b['shift']());}};_0x197c95(++_0x18425d);}(_0x33af,0xec));var _0xf33a=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x33af[_0x110c3d];return _0x226d67;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf33a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf33a('0x1'));var rp=require(_0xf33a('0x2'));var moment=require(_0xf33a('0x3'));var BPromise=require(_0xf33a('0x4'));var Mustache=require(_0xf33a('0x5'));var util=require(_0xf33a('0x6'));var path=require('path');var sox=require(_0xf33a('0x7'));var csv=require(_0xf33a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf33a('0x9'));var _=require(_0xf33a('0xa'));var squel=require(_0xf33a('0xb'));var crypto=require(_0xf33a('0xc'));var jsforce=require(_0xf33a('0xd'));var deskjs=require(_0xf33a('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf33a('0xf'));var Papa=require(_0xf33a('0x10'));var Redis=require(_0xf33a('0x11'));var authService=require(_0xf33a('0x12'));var qs=require(_0xf33a('0x13'));var as=require(_0xf33a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf33a('0x15'));var utils=require(_0xf33a('0x16'));var config=require(_0xf33a('0x17'));var licenseUtil=require(_0xf33a('0x18'));var db=require(_0xf33a('0x19'))['db'];function respondWithStatusCode(_0x5959c9,_0x9f87bc){_0x9f87bc=_0x9f87bc||0xcc;return function(_0x21b80e){if(_0x21b80e){return _0x5959c9['sendStatus'](_0x9f87bc);}return _0x5959c9['status'](_0x9f87bc)[_0xf33a('0x1a')]();};}function respondWithResult(_0x1b3bf0,_0x17043){_0x17043=_0x17043||0xc8;return function(_0x153bda){if(_0x153bda){return _0x1b3bf0[_0xf33a('0x1b')](_0x17043)[_0xf33a('0x1c')](_0x153bda);}};}function respondWithFilteredResult(_0x45e311,_0x1f2b1b){return function(_0x507cb9){if(_0x507cb9){var _0x441f59=typeof _0x1f2b1b['offset']===_0xf33a('0x1d')&&typeof _0x1f2b1b[_0xf33a('0x1e')]==='undefined';var _0x37e76c=_0x507cb9[_0xf33a('0x1f')];var _0x524109=_0x441f59?0x0:_0x1f2b1b[_0xf33a('0x20')];var _0x23d9e2=_0x441f59?_0x507cb9[_0xf33a('0x1f')]:_0x1f2b1b[_0xf33a('0x20')]+_0x1f2b1b['limit'];var _0x11efa0;if(_0x23d9e2>=_0x37e76c){_0x23d9e2=_0x37e76c;_0x11efa0=0xc8;}else{_0x11efa0=0xce;}_0x45e311[_0xf33a('0x1b')](_0x11efa0);return _0x45e311[_0xf33a('0x21')](_0xf33a('0x22'),_0x524109+'-'+_0x23d9e2+'/'+_0x37e76c)[_0xf33a('0x1c')](_0x507cb9);}return null;};}function patchUpdates(_0x6cdf7b){return function(_0x19986f){try{jsonpatch[_0xf33a('0x23')](_0x19986f,_0x6cdf7b,!![]);}catch(_0x19055e){return BPromise[_0xf33a('0x24')](_0x19055e);}return _0x19986f['save']();};}function saveUpdates(_0x3854b4,_0x272e60){return function(_0x1bf9bc){if(_0x1bf9bc){return _0x1bf9bc[_0xf33a('0x25')](_0x3854b4)[_0xf33a('0x26')](function(_0x51d3fd){return _0x51d3fd;});}return null;};}function removeEntity(_0x44654c,_0x5882ba){return function(_0x492986){if(_0x492986){return _0x492986[_0xf33a('0x27')]()[_0xf33a('0x26')](function(){_0x44654c[_0xf33a('0x1b')](0xcc)[_0xf33a('0x1a')]();});}};}function handleEntityNotFound(_0x4b9801,_0x57cb1d){return function(_0x393005){if(!_0x393005){_0x4b9801['sendStatus'](0x194);}return _0x393005;};}function handleError(_0x4af24a,_0x16ef31){_0x16ef31=_0x16ef31||0x1f4;return function(_0x5f0a53){logger['error'](_0x5f0a53[_0xf33a('0x28')]);if(_0x5f0a53['name']){delete _0x5f0a53[_0xf33a('0x29')];}_0x4af24a['status'](_0x16ef31)[_0xf33a('0x2a')](_0x5f0a53);};}exports[_0xf33a('0x2b')]=function(_0x469741,_0x729fca){var _0x4552c9={},_0x3068a9={},_0x1d19ee={'count':0x0,'rows':[]};var _0x1246ff=_[_0xf33a('0x2c')](db[_0xf33a('0x2d')][_0xf33a('0x2e')],function(_0x8f8ddc){return{'name':_0x8f8ddc[_0xf33a('0x2f')],'type':_0x8f8ddc[_0xf33a('0x30')][_0xf33a('0x31')]};});_0x3068a9['model']=_[_0xf33a('0x2c')](_0x1246ff,_0xf33a('0x29'));_0x3068a9[_0xf33a('0x32')]=_[_0xf33a('0x33')](_0x469741['query']);_0x3068a9[_0xf33a('0x34')]=_[_0xf33a('0x35')](_0x3068a9[_0xf33a('0x36')],_0x3068a9[_0xf33a('0x32')]);_0x4552c9[_0xf33a('0x37')]=_[_0xf33a('0x35')](_0x3068a9['model'],qs[_0xf33a('0x38')](_0x469741[_0xf33a('0x32')][_0xf33a('0x38')]));_0x4552c9[_0xf33a('0x37')]=_0x4552c9[_0xf33a('0x37')]['length']?_0x4552c9['attributes']:_0x3068a9[_0xf33a('0x36')];if(!_0x469741['query']['hasOwnProperty']('nolimit')){_0x4552c9[_0xf33a('0x1e')]=qs[_0xf33a('0x1e')](_0x469741['query'][_0xf33a('0x1e')]);_0x4552c9['offset']=qs[_0xf33a('0x20')](_0x469741[_0xf33a('0x32')][_0xf33a('0x20')]);}_0x4552c9[_0xf33a('0x39')]=qs[_0xf33a('0x3a')](_0x469741[_0xf33a('0x32')]['sort']);_0x4552c9[_0xf33a('0x3b')]=qs[_0xf33a('0x34')](_['pick'](_0x469741[_0xf33a('0x32')],_0x3068a9[_0xf33a('0x34')]),_0x1246ff);if(_0x469741[_0xf33a('0x32')]['filter']){_0x4552c9[_0xf33a('0x3b')]=_[_0xf33a('0x3c')](_0x4552c9[_0xf33a('0x3b')],{'$or':_[_0xf33a('0x2c')](_0x1246ff,function(_0x3ec562){if(_0x3ec562[_0xf33a('0x30')]!==_0xf33a('0x3d')){var _0x128baf={};_0x128baf[_0x3ec562[_0xf33a('0x29')]]={'$like':'%'+_0x469741['query'][_0xf33a('0x3e')]+'%'};return _0x128baf;}})});}_0x4552c9=_[_0xf33a('0x3c')]({},_0x4552c9,_0x469741['options']);var _0x1e8800={'where':_0x4552c9['where']};return db['Integration'][_0xf33a('0x1f')](_0x1e8800)[_0xf33a('0x26')](function(_0x4dada1){_0x1d19ee[_0xf33a('0x1f')]=_0x4dada1;if(_0x469741[_0xf33a('0x32')][_0xf33a('0x3f')]){_0x4552c9['include']=[{'all':!![]}];}return db[_0xf33a('0x2d')][_0xf33a('0x40')](_0x4552c9);})['then'](function(_0x1e9748){_0x1d19ee[_0xf33a('0x41')]=_0x1e9748;return _0x1d19ee;})[_0xf33a('0x26')](respondWithFilteredResult(_0x729fca,_0x4552c9))[_0xf33a('0x42')](handleError(_0x729fca,null));};exports[_0xf33a('0x43')]=function(_0x5044f9,_0x45ae15){var _0x1722e5={'raw':![],'where':{'id':_0x5044f9[_0xf33a('0x44')]['id']}},_0x2325eb={};_0x2325eb[_0xf33a('0x36')]=_['keys'](db[_0xf33a('0x2d')][_0xf33a('0x2e')]);_0x2325eb[_0xf33a('0x32')]=_['keys'](_0x5044f9[_0xf33a('0x32')]);_0x2325eb[_0xf33a('0x34')]=_[_0xf33a('0x35')](_0x2325eb[_0xf33a('0x36')],_0x2325eb[_0xf33a('0x32')]);_0x1722e5[_0xf33a('0x37')]=_['intersection'](_0x2325eb[_0xf33a('0x36')],qs[_0xf33a('0x38')](_0x5044f9[_0xf33a('0x32')][_0xf33a('0x38')]));_0x1722e5[_0xf33a('0x37')]=_0x1722e5['attributes'][_0xf33a('0x45')]?_0x1722e5[_0xf33a('0x37')]:_0x2325eb[_0xf33a('0x36')];if(_0x5044f9['query'][_0xf33a('0x3f')]){_0x1722e5[_0xf33a('0x46')]=[{'all':!![]}];}_0x1722e5=_['merge']({},_0x1722e5,_0x5044f9['options']);return db[_0xf33a('0x2d')]['find'](_0x1722e5)[_0xf33a('0x26')](handleEntityNotFound(_0x45ae15,null))[_0xf33a('0x26')](respondWithResult(_0x45ae15,null))[_0xf33a('0x42')](handleError(_0x45ae15,null));};exports[_0xf33a('0x47')]=function(_0xecc82f,_0x1a98f9){return db[_0xf33a('0x2d')][_0xf33a('0x47')](_0xecc82f[_0xf33a('0x48')],{})[_0xf33a('0x26')](respondWithResult(_0x1a98f9,0xc9))[_0xf33a('0x42')](handleError(_0x1a98f9,null));};exports[_0xf33a('0x25')]=function(_0x190a2b,_0x6b79da){if(_0x190a2b[_0xf33a('0x48')]['id']){delete _0x190a2b[_0xf33a('0x48')]['id'];}return db[_0xf33a('0x2d')][_0xf33a('0x49')]({'where':{'id':_0x190a2b[_0xf33a('0x44')]['id']}})[_0xf33a('0x26')](handleEntityNotFound(_0x6b79da,null))[_0xf33a('0x26')](saveUpdates(_0x190a2b[_0xf33a('0x48')],null))[_0xf33a('0x26')](respondWithResult(_0x6b79da,null))[_0xf33a('0x42')](handleError(_0x6b79da,null));};exports[_0xf33a('0x27')]=function(_0x1b15a1,_0x3bab07){return db[_0xf33a('0x2d')][_0xf33a('0x49')]({'where':{'id':_0x1b15a1['params']['id']}})[_0xf33a('0x26')](handleEntityNotFound(_0x3bab07,null))[_0xf33a('0x26')](removeEntity(_0x3bab07,null))['catch'](handleError(_0x3bab07,null));};
\ No newline at end of file
+var _0x4991=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','Integration','includeAll','include','findAll','rows','show','params','keys','find','create','body','catch','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','map','rawAttributes','fieldName','key','model','query','filters'];(function(_0x130719,_0x2a7018){var _0x159865=function(_0x3a4d06){while(--_0x3a4d06){_0x130719['push'](_0x130719['shift']());}};_0x159865(++_0x2a7018);}(_0x4991,0xf7));var _0x1499=function(_0x5d1a0d,_0x191813){_0x5d1a0d=_0x5d1a0d-0x0;var _0x440b11=_0x4991[_0x5d1a0d];return _0x440b11;};'use strict';var emlformat=require(_0x1499('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1499('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1499('0x2'));var moment=require(_0x1499('0x3'));var BPromise=require(_0x1499('0x4'));var Mustache=require(_0x1499('0x5'));var util=require(_0x1499('0x6'));var path=require(_0x1499('0x7'));var sox=require(_0x1499('0x8'));var csv=require(_0x1499('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1499('0xa'));var _=require(_0x1499('0xb'));var squel=require(_0x1499('0xc'));var crypto=require(_0x1499('0xd'));var jsforce=require(_0x1499('0xe'));var deskjs=require(_0x1499('0xf'));var toCsv=require(_0x1499('0x9'));var querystring=require(_0x1499('0x10'));var Papa=require('papaparse');var Redis=require(_0x1499('0x11'));var authService=require(_0x1499('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1499('0x13'));var hardwareService=require(_0x1499('0x14'));var logger=require('../../config/logger')(_0x1499('0x15'));var utils=require(_0x1499('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3039ce,_0x274bc1){_0x274bc1=_0x274bc1||0xcc;return function(_0x34a928){if(_0x34a928){return _0x3039ce[_0x1499('0x17')](_0x274bc1);}return _0x3039ce[_0x1499('0x18')](_0x274bc1)['end']();};}function respondWithResult(_0x5f34f2,_0x308177){_0x308177=_0x308177||0xc8;return function(_0x4e5195){if(_0x4e5195){return _0x5f34f2[_0x1499('0x18')](_0x308177)[_0x1499('0x19')](_0x4e5195);}};}function respondWithFilteredResult(_0x308318,_0x3ab605){return function(_0x48f654){if(_0x48f654){var _0x1ed43b=typeof _0x3ab605[_0x1499('0x1a')]==='undefined'&&typeof _0x3ab605[_0x1499('0x1b')]===_0x1499('0x1c');var _0x46b364=_0x48f654[_0x1499('0x1d')];var _0x1e45a9=_0x1ed43b?0x0:_0x3ab605[_0x1499('0x1a')];var _0x5b9859=_0x1ed43b?_0x48f654['count']:_0x3ab605['offset']+_0x3ab605[_0x1499('0x1b')];var _0xad534b;if(_0x5b9859>=_0x46b364){_0x5b9859=_0x46b364;_0xad534b=0xc8;}else{_0xad534b=0xce;}_0x308318['status'](_0xad534b);return _0x308318[_0x1499('0x1e')](_0x1499('0x1f'),_0x1e45a9+'-'+_0x5b9859+'/'+_0x46b364)[_0x1499('0x19')](_0x48f654);}return null;};}function patchUpdates(_0x18e4a6){return function(_0x21e887){try{jsonpatch[_0x1499('0x20')](_0x21e887,_0x18e4a6,!![]);}catch(_0x2b0458){return BPromise[_0x1499('0x21')](_0x2b0458);}return _0x21e887[_0x1499('0x22')]();};}function saveUpdates(_0x15bcd4,_0x2bb71f){return function(_0x836081){if(_0x836081){return _0x836081[_0x1499('0x23')](_0x15bcd4)[_0x1499('0x24')](function(_0x4ec57a){return _0x4ec57a;});}return null;};}function removeEntity(_0x1e2c51,_0x2c7f57){return function(_0x5615b4){if(_0x5615b4){return _0x5615b4[_0x1499('0x25')]()[_0x1499('0x24')](function(){_0x1e2c51[_0x1499('0x18')](0xcc)[_0x1499('0x26')]();});}};}function handleEntityNotFound(_0x3968e0,_0x16d036){return function(_0x54f3c2){if(!_0x54f3c2){_0x3968e0['sendStatus'](0x194);}return _0x54f3c2;};}function handleError(_0x12739b,_0x3c9aca){_0x3c9aca=_0x3c9aca||0x1f4;return function(_0x3b9259){logger[_0x1499('0x27')](_0x3b9259[_0x1499('0x28')]);if(_0x3b9259['name']){delete _0x3b9259[_0x1499('0x29')];}_0x12739b['status'](_0x3c9aca)['send'](_0x3b9259);};}exports['index']=function(_0x21d204,_0x103efa){var _0x40932a={},_0x1b460b={},_0x3dad86={'count':0x0,'rows':[]};var _0x388513=_[_0x1499('0x2a')](db['Integration'][_0x1499('0x2b')],function(_0x1a2c99){return{'name':_0x1a2c99[_0x1499('0x2c')],'type':_0x1a2c99['type'][_0x1499('0x2d')]};});_0x1b460b[_0x1499('0x2e')]=_['map'](_0x388513,_0x1499('0x29'));_0x1b460b[_0x1499('0x2f')]=_['keys'](_0x21d204[_0x1499('0x2f')]);_0x1b460b[_0x1499('0x30')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],_0x1b460b[_0x1499('0x2f')]);_0x40932a[_0x1499('0x32')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x21d204[_0x1499('0x2f')][_0x1499('0x33')]));_0x40932a[_0x1499('0x32')]=_0x40932a[_0x1499('0x32')][_0x1499('0x34')]?_0x40932a[_0x1499('0x32')]:_0x1b460b[_0x1499('0x2e')];if(!_0x21d204[_0x1499('0x2f')][_0x1499('0x35')](_0x1499('0x36'))){_0x40932a[_0x1499('0x1b')]=qs['limit'](_0x21d204[_0x1499('0x2f')][_0x1499('0x1b')]);_0x40932a[_0x1499('0x1a')]=qs[_0x1499('0x1a')](_0x21d204[_0x1499('0x2f')][_0x1499('0x1a')]);}_0x40932a[_0x1499('0x37')]=qs[_0x1499('0x38')](_0x21d204[_0x1499('0x2f')][_0x1499('0x38')]);_0x40932a[_0x1499('0x39')]=qs['filters'](_['pick'](_0x21d204[_0x1499('0x2f')],_0x1b460b['filters']),_0x388513);if(_0x21d204[_0x1499('0x2f')]['filter']){_0x40932a[_0x1499('0x39')]=_[_0x1499('0x3a')](_0x40932a[_0x1499('0x39')],{'$or':_[_0x1499('0x2a')](_0x388513,function(_0x531933){if(_0x531933[_0x1499('0x3b')]!=='VIRTUAL'){var _0x2f9c59={};_0x2f9c59[_0x531933[_0x1499('0x29')]]={'$like':'%'+_0x21d204[_0x1499('0x2f')][_0x1499('0x3c')]+'%'};return _0x2f9c59;}})});}_0x40932a=_['merge']({},_0x40932a,_0x21d204[_0x1499('0x3d')]);var _0x815a99={'where':_0x40932a[_0x1499('0x39')]};return db[_0x1499('0x3e')]['count'](_0x815a99)[_0x1499('0x24')](function(_0x4cc411){_0x3dad86[_0x1499('0x1d')]=_0x4cc411;if(_0x21d204[_0x1499('0x2f')][_0x1499('0x3f')]){_0x40932a[_0x1499('0x40')]=[{'all':!![]}];}return db[_0x1499('0x3e')][_0x1499('0x41')](_0x40932a);})[_0x1499('0x24')](function(_0xcb85eb){_0x3dad86[_0x1499('0x42')]=_0xcb85eb;return _0x3dad86;})[_0x1499('0x24')](respondWithFilteredResult(_0x103efa,_0x40932a))['catch'](handleError(_0x103efa,null));};exports[_0x1499('0x43')]=function(_0x5dd36c,_0x2cfdaf){var _0x1af1a1={'raw':![],'where':{'id':_0x5dd36c[_0x1499('0x44')]['id']}},_0x5646cf={};_0x5646cf[_0x1499('0x2e')]=_[_0x1499('0x45')](db[_0x1499('0x3e')][_0x1499('0x2b')]);_0x5646cf['query']=_['keys'](_0x5dd36c[_0x1499('0x2f')]);_0x5646cf[_0x1499('0x30')]=_['intersection'](_0x5646cf[_0x1499('0x2e')],_0x5646cf[_0x1499('0x2f')]);_0x1af1a1['attributes']=_['intersection'](_0x5646cf[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x5dd36c[_0x1499('0x2f')]['fields']));_0x1af1a1[_0x1499('0x32')]=_0x1af1a1[_0x1499('0x32')][_0x1499('0x34')]?_0x1af1a1[_0x1499('0x32')]:_0x5646cf['model'];if(_0x5dd36c[_0x1499('0x2f')][_0x1499('0x3f')]){_0x1af1a1[_0x1499('0x40')]=[{'all':!![]}];}_0x1af1a1=_[_0x1499('0x3a')]({},_0x1af1a1,_0x5dd36c['options']);return db[_0x1499('0x3e')][_0x1499('0x46')](_0x1af1a1)[_0x1499('0x24')](handleEntityNotFound(_0x2cfdaf,null))['then'](respondWithResult(_0x2cfdaf,null))['catch'](handleError(_0x2cfdaf,null));};exports[_0x1499('0x47')]=function(_0x491777,_0x7fa101){return db[_0x1499('0x3e')][_0x1499('0x47')](_0x491777[_0x1499('0x48')],{})[_0x1499('0x24')](respondWithResult(_0x7fa101,0xc9))[_0x1499('0x49')](handleError(_0x7fa101,null));};exports[_0x1499('0x23')]=function(_0x591aa8,_0x420d16){if(_0x591aa8['body']['id']){delete _0x591aa8[_0x1499('0x48')]['id'];}return db[_0x1499('0x3e')]['find']({'where':{'id':_0x591aa8[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x420d16,null))[_0x1499('0x24')](saveUpdates(_0x591aa8['body'],null))[_0x1499('0x24')](respondWithResult(_0x420d16,null))[_0x1499('0x49')](handleError(_0x420d16,null));};exports[_0x1499('0x25')]=function(_0x29ac0f,_0x305599){return db[_0x1499('0x3e')][_0x1499('0x46')]({'where':{'id':_0x29ac0f[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x305599,null))[_0x1499('0x24')](removeEntity(_0x305599,null))['catch'](handleError(_0x305599,null));};
\ No newline at end of file
index 7b66dcc..9b926b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb22=['integrations','lodash','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./integration.attributes','exports','Integration'];(function(_0x2e691d,_0x419e8c){var _0x397307=function(_0x505223){while(--_0x505223){_0x2e691d['push'](_0x2e691d['shift']());}};_0x397307(++_0x419e8c);}(_0xfb22,0x1b9));var _0x2fb2=function(_0x3cb6dc,_0x120dd3){_0x3cb6dc=_0x3cb6dc-0x0;var _0x47ec89=_0xfb22[_0x3cb6dc];return _0x47ec89;};'use strict';var _=require(_0x2fb2('0x0'));var util=require('util');var logger=require(_0x2fb2('0x1'))(_0x2fb2('0x2'));var moment=require('moment');var BPromise=require(_0x2fb2('0x3'));var rp=require(_0x2fb2('0x4'));var fs=require('fs');var path=require(_0x2fb2('0x5'));var rimraf=require('rimraf');var config=require(_0x2fb2('0x6'));var attributes=require(_0x2fb2('0x7'));module[_0x2fb2('0x8')]=function(_0x46c42f,_0x14f54f){return _0x46c42f['define'](_0x2fb2('0x9'),attributes,{'tableName':_0x2fb2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x88b1=['api','moment','bluebird','request-promise','../../config/environment','./integration.attributes','define','Integration','integrations','lodash','util','../../config/logger'];(function(_0x5da059,_0x22a596){var _0x4f5e90=function(_0xb40d07){while(--_0xb40d07){_0x5da059['push'](_0x5da059['shift']());}};_0x4f5e90(++_0x22a596);}(_0x88b1,0x1a1));var _0x188b=function(_0x27c99a,_0x580dce){_0x27c99a=_0x27c99a-0x0;var _0x32babb=_0x88b1[_0x27c99a];return _0x32babb;};'use strict';var _=require(_0x188b('0x0'));var util=require(_0x188b('0x1'));var logger=require(_0x188b('0x2'))(_0x188b('0x3'));var moment=require(_0x188b('0x4'));var BPromise=require(_0x188b('0x5'));var rp=require(_0x188b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x188b('0x7'));var attributes=require(_0x188b('0x8'));module['exports']=function(_0x501977,_0x5dca2d){return _0x501977[_0x188b('0x9')](_0x188b('0xa'),attributes,{'tableName':_0x188b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9e6c6ab..1b52ca3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','Integration,\x20%s,\x20%s','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x32c6e7,_0x540b99){var _0x26b6f4=function(_0x4ec13b){while(--_0x4ec13b){_0x32c6e7['push'](_0x32c6e7['shift']());}};_0x26b6f4(++_0x540b99);}(_0x2ef3,0xba));var _0x32ef=function(_0x337270,_0x1b6d36){_0x337270=_0x337270-0x0;var _0x403603=_0x2ef3[_0x337270];return _0x403603;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('Integration,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('Integration,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+var _0xc2c7=['../../config/logger','jayson/promise','client','http','request','then','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0xc2c7,0x134));var _0x7c2c=function(_0x229d40,_0x3a43d2){_0x229d40=_0x229d40-0x0;var _0x20809f=_0xc2c7[_0x229d40];return _0x20809f;};'use strict';var _=require('lodash');var util=require(_0x7c2c('0x0'));var moment=require(_0x7c2c('0x1'));var BPromise=require(_0x7c2c('0x2'));var rs=require(_0x7c2c('0x3'));var fs=require('fs');var Redis=require(_0x7c2c('0x4'));var db=require(_0x7c2c('0x5'))['db'];var utils=require(_0x7c2c('0x6'));var logger=require(_0x7c2c('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7c2c('0x8'));var client=jayson[_0x7c2c('0x9')][_0x7c2c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54f027,_0x4abe93,_0x5a1027){return new BPromise(function(_0x2274cd,_0x29638d){return client[_0x7c2c('0xb')](_0x54f027,_0x5a1027)[_0x7c2c('0xc')](function(_0x279cff){logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));logger[_0x7c2c('0xf')](_0x7c2c('0x10'),_0x4abe93,_0x7c2c('0xe'),JSON[_0x7c2c('0x11')](_0x279cff));if(_0x279cff[_0x7c2c('0x12')]){if(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x13')]===0x1f4){logger[_0x7c2c('0x12')](_0x7c2c('0xd'),_0x4abe93,_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);return _0x29638d(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}logger[_0x7c2c('0x12')]('Integration,\x20%s,\x20%s',_0x4abe93,_0x279cff['error'][_0x7c2c('0x14')]);return _0x2274cd(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}else{logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));_0x2274cd(_0x279cff['result'][_0x7c2c('0x14')]);}})['catch'](function(_0x1aa355){logger['error'](_0x7c2c('0xd'),_0x4abe93,_0x1aa355);_0x29638d(_0x1aa355);});});}
\ No newline at end of file
index 06db2aa..3c6d2ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./integrationReport.controller','isAuthenticated','index','get','/describe','/:id','create','update','destroy','exports','util'];(function(_0x3c8b4f,_0x798b26){var _0x50a80d=function(_0x358952){while(--_0x358952){_0x3c8b4f['push'](_0x3c8b4f['shift']());}};_0x50a80d(++_0x798b26);}(_0x6d38,0x1ef));var _0x86d3=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x6d38[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require('multer');var util=require(_0x86d3('0x0'));var path=require(_0x86d3('0x1'));var timeout=require(_0x86d3('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x86d3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x86d3('0x4'));var config=require(_0x86d3('0x5'));var controller=require(_0x86d3('0x6'));router['get']('/',auth[_0x86d3('0x7')](),controller[_0x86d3('0x8')]);router[_0x86d3('0x9')](_0x86d3('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x86d3('0x9')](_0x86d3('0xb'),auth[_0x86d3('0x7')](),controller['show']);router['post']('/',auth[_0x86d3('0x7')](),controller[_0x86d3('0xc')]);router['put']('/:id',auth[_0x86d3('0x7')](),controller[_0x86d3('0xd')]);router['delete'](_0x86d3('0xb'),auth['isAuthenticated'](),controller[_0x86d3('0xe')]);module[_0x86d3('0xf')]=router;
\ No newline at end of file
+var _0x4137=['show','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','isAuthenticated','/:id'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x4137,0xf8));var _0x7413=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x4137[_0x46e363];return _0x3fb059;};'use strict';var multer=require(_0x7413('0x0'));var util=require(_0x7413('0x1'));var path=require(_0x7413('0x2'));var timeout=require(_0x7413('0x3'));var express=require(_0x7413('0x4'));var router=express[_0x7413('0x5')]();var fs_extra=require(_0x7413('0x6'));var auth=require(_0x7413('0x7'));var interaction=require(_0x7413('0x8'));var config=require(_0x7413('0x9'));var controller=require(_0x7413('0xa'));router[_0x7413('0xb')]('/',auth['isAuthenticated'](),controller[_0x7413('0xc')]);router[_0x7413('0xb')](_0x7413('0xd'),auth[_0x7413('0xe')](),controller['describe']);router[_0x7413('0xb')](_0x7413('0xf'),auth['isAuthenticated'](),controller[_0x7413('0x10')]);router[_0x7413('0x11')]('/',auth['isAuthenticated'](),controller[_0x7413('0x12')]);router[_0x7413('0x13')](_0x7413('0xf'),auth[_0x7413('0xe')](),controller[_0x7413('0x14')]);router['delete'](_0x7413('0xf'),auth[_0x7413('0xe')](),controller['destroy']);module[_0x7413('0x15')]=router;
\ No newline at end of file
index 26b2d5a..8dc0bfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0db8=['SENT','SENDING','RECEIVED','sequelize','exports','STRING','DATE','BOOLEAN','INTEGER','TEXT'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x0db8,0x1c5));var _0x80db=function(_0x355082,_0x2ef631){_0x355082=_0x355082-0x0;var _0x4517d6=_0x0db8[_0x355082];return _0x4517d6;};'use strict';var Sequelize=require(_0x80db('0x0'));module[_0x80db('0x1')]={'integration':{'type':Sequelize[_0x80db('0x2')]},'eventChannel':{'type':Sequelize[_0x80db('0x2')]},'exitStatus':{'type':Sequelize[_0x80db('0x2')]},'ticketId':{'type':Sequelize[_0x80db('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x80db('0x2')]},'uniqueid':{'type':Sequelize[_0x80db('0x2')]},'calleridnum':{'type':Sequelize[_0x80db('0x2')]},'calleridname':{'type':Sequelize[_0x80db('0x2')]},'queue':{'type':Sequelize[_0x80db('0x2')]},'interface':{'type':Sequelize[_0x80db('0x2')]},'membername':{'type':Sequelize[_0x80db('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x80db('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x80db('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x80db('0x3')]},'talktime':{'type':Sequelize[_0x80db('0x5')]},'agentacw':{'type':Sequelize[_0x80db('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x80db('0x5')]},'reason':{'type':Sequelize[_0x80db('0x2')]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x80db('0x3')]},'agentdump':{'type':Sequelize[_0x80db('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x80db('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x80db('0x2')]},'connectedlinename':{'type':Sequelize[_0x80db('0x2')]},'language':{'type':Sequelize[_0x80db('0x2')]},'accountcode':{'type':Sequelize[_0x80db('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x80db('0x2')]},'priority':{'type':Sequelize[_0x80db('0x2')]},'destchannel':{'type':Sequelize[_0x80db('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x80db('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x80db('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x80db('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x80db('0x2')]},'destpriority':{'type':Sequelize[_0x80db('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x80db('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x80db('0x2')]},'cc':{'type':Sequelize[_0x80db('0x2')]},'attachment':{'type':Sequelize[_0x80db('0x6')]},'html':{'type':Sequelize[_0x80db('0x6')]},'text':{'type':Sequelize[_0x80db('0x6')]},'status':{'type':Sequelize['ENUM'](_0x80db('0x7'),_0x80db('0x8'),_0x80db('0x9'),'FAILED')},'url':{'type':Sequelize[_0x80db('0x2')]},'app':{'type':Sequelize[_0x80db('0x2')]},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0x80db('0x5')]}};
\ No newline at end of file
+var _0x148d=['INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED','sequelize','exports','STRING'];(function(_0x2fb16e,_0x161667){var _0x5e0882=function(_0x4ed56d){while(--_0x4ed56d){_0x2fb16e['push'](_0x2fb16e['shift']());}};_0x5e0882(++_0x161667);}(_0x148d,0x1b9));var _0xd148=function(_0x14f474,_0x1f5759){_0x14f474=_0x14f474-0x0;var _0x462f55=_0x148d[_0x14f474];return _0x462f55;};'use strict';var Sequelize=require(_0xd148('0x0'));module[_0xd148('0x1')]={'integration':{'type':Sequelize[_0xd148('0x2')]},'eventChannel':{'type':Sequelize[_0xd148('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0xd148('0x2')]},'integrationId':{'type':Sequelize[_0xd148('0x3')]},'contacts':{'type':Sequelize[_0xd148('0x2')]},'uniqueid':{'type':Sequelize[_0xd148('0x2')]},'calleridnum':{'type':Sequelize[_0xd148('0x2')]},'calleridname':{'type':Sequelize[_0xd148('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xd148('0x2')]},'agentcalledAt':{'type':Sequelize[_0xd148('0x4')]},'agentconnectAt':{'type':Sequelize[_0xd148('0x4')]},'holdtime':{'type':Sequelize[_0xd148('0x3')]},'agentcomplete':{'type':Sequelize[_0xd148('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0xd148('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xd148('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xd148('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0xd148('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xd148('0x4')]},'lastevent':{'type':Sequelize[_0xd148('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xd148('0x3')]},'channelstatedesc':{'type':Sequelize[_0xd148('0x2')]},'connectedlinenum':{'type':Sequelize[_0xd148('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xd148('0x2')]},'accountcode':{'type':Sequelize[_0xd148('0x2')]},'context':{'type':Sequelize[_0xd148('0x2')]},'exten':{'type':Sequelize[_0xd148('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xd148('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xd148('0x2')]},'destcalleridnum':{'type':Sequelize[_0xd148('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xd148('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xd148('0x2')]},'destlanguage':{'type':Sequelize[_0xd148('0x2')]},'destaccountcode':{'type':Sequelize[_0xd148('0x2')]},'destcontext':{'type':Sequelize[_0xd148('0x2')]},'destexten':{'type':Sequelize[_0xd148('0x2')]},'destpriority':{'type':Sequelize[_0xd148('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0xd148('0x2')]},'from':{'type':Sequelize[_0xd148('0x2')]},'to':{'type':Sequelize[_0xd148('0x2')]},'cc':{'type':Sequelize[_0xd148('0x2')]},'attachment':{'type':Sequelize[_0xd148('0x6')]},'html':{'type':Sequelize[_0xd148('0x6')]},'text':{'type':Sequelize[_0xd148('0x6')]},'status':{'type':Sequelize[_0xd148('0x7')](_0xd148('0x8'),_0xd148('0x9'),_0xd148('0xa'),_0xd148('0xb'))},'url':{'type':Sequelize[_0xd148('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0xd148('0x2')]},'projectId':{'type':Sequelize[_0xd148('0x3')]}};
\ No newline at end of file
index a1b4491..9211520 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08bc=['limit','count','offset','set','Content-Range','apply','save','update','then','error','name','send','index','map','IntegrationReport','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','options','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined'];(function(_0x585b3f,_0x3e2d2b){var _0x20c3cc=function(_0x40d561){while(--_0x40d561){_0x585b3f['push'](_0x585b3f['shift']());}};_0x20c3cc(++_0x3e2d2b);}(_0x08bc,0x116));var _0xc08b=function(_0x491cbe,_0x45c8ba){_0x491cbe=_0x491cbe-0x0;var _0x59449d=_0x08bc[_0x491cbe];return _0x59449d;};'use strict';var emlformat=require(_0xc08b('0x0'));var rimraf=require(_0xc08b('0x1'));var zipdir=require(_0xc08b('0x2'));var jsonpatch=require(_0xc08b('0x3'));var rp=require(_0xc08b('0x4'));var moment=require(_0xc08b('0x5'));var BPromise=require(_0xc08b('0x6'));var Mustache=require(_0xc08b('0x7'));var util=require(_0xc08b('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xc08b('0x9'));var ejs=require(_0xc08b('0xa'));var fs=require('fs');var fs_extra=require(_0xc08b('0xb'));var _=require(_0xc08b('0xc'));var squel=require(_0xc08b('0xd'));var crypto=require(_0xc08b('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc08b('0xf'));var Papa=require('papaparse');var Redis=require(_0xc08b('0x10'));var authService=require(_0xc08b('0x11'));var qs=require(_0xc08b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc08b('0x13'));var logger=require(_0xc08b('0x14'))('api');var utils=require(_0xc08b('0x15'));var config=require(_0xc08b('0x16'));var licenseUtil=require(_0xc08b('0x17'));var db=require(_0xc08b('0x18'))['db'];function respondWithStatusCode(_0x2780a8,_0x2b1045){_0x2b1045=_0x2b1045||0xcc;return function(_0x2eabf8){if(_0x2eabf8){return _0x2780a8[_0xc08b('0x19')](_0x2b1045);}return _0x2780a8[_0xc08b('0x1a')](_0x2b1045)[_0xc08b('0x1b')]();};}function respondWithResult(_0x5dadc0,_0xee0b84){_0xee0b84=_0xee0b84||0xc8;return function(_0x1f684d){if(_0x1f684d){return _0x5dadc0[_0xc08b('0x1a')](_0xee0b84)[_0xc08b('0x1c')](_0x1f684d);}};}function respondWithFilteredResult(_0x205227,_0x31bbb9){return function(_0x35b111){if(_0x35b111){var _0x132422=typeof _0x31bbb9['offset']===_0xc08b('0x1d')&&typeof _0x31bbb9[_0xc08b('0x1e')]===_0xc08b('0x1d');var _0x41b3bf=_0x35b111[_0xc08b('0x1f')];var _0x5b0eaf=_0x132422?0x0:_0x31bbb9[_0xc08b('0x20')];var _0x4d0c65=_0x132422?_0x35b111[_0xc08b('0x1f')]:_0x31bbb9[_0xc08b('0x20')]+_0x31bbb9[_0xc08b('0x1e')];var _0x2ab98d;if(_0x4d0c65>=_0x41b3bf){_0x4d0c65=_0x41b3bf;_0x2ab98d=0xc8;}else{_0x2ab98d=0xce;}_0x205227['status'](_0x2ab98d);return _0x205227[_0xc08b('0x21')](_0xc08b('0x22'),_0x5b0eaf+'-'+_0x4d0c65+'/'+_0x41b3bf)[_0xc08b('0x1c')](_0x35b111);}return null;};}function patchUpdates(_0x55908b){return function(_0x4e5ef3){try{jsonpatch[_0xc08b('0x23')](_0x4e5ef3,_0x55908b,!![]);}catch(_0x69930d){return BPromise['reject'](_0x69930d);}return _0x4e5ef3[_0xc08b('0x24')]();};}function saveUpdates(_0x209947,_0x16b0ab){return function(_0xb42fbf){if(_0xb42fbf){return _0xb42fbf[_0xc08b('0x25')](_0x209947)[_0xc08b('0x26')](function(_0x5945ab){return _0x5945ab;});}return null;};}function removeEntity(_0x29b5c,_0x2bdb8a){return function(_0x3bdefc){if(_0x3bdefc){return _0x3bdefc['destroy']()['then'](function(){_0x29b5c[_0xc08b('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x205da7,_0x38f8ee){return function(_0x491a5f){if(!_0x491a5f){_0x205da7['sendStatus'](0x194);}return _0x491a5f;};}function handleError(_0x29b0fc,_0x2da9be){_0x2da9be=_0x2da9be||0x1f4;return function(_0x2e060c){logger[_0xc08b('0x27')](_0x2e060c['stack']);if(_0x2e060c[_0xc08b('0x28')]){delete _0x2e060c[_0xc08b('0x28')];}_0x29b0fc[_0xc08b('0x1a')](_0x2da9be)[_0xc08b('0x29')](_0x2e060c);};}exports[_0xc08b('0x2a')]=function(_0x35b8cd,_0xfabdd2){var _0x2b18df={},_0x481fa8={},_0x1efda4={'count':0x0,'rows':[]};var _0x5231c5=_[_0xc08b('0x2b')](db[_0xc08b('0x2c')][_0xc08b('0x2d')],function(_0x1c307d){return{'name':_0x1c307d[_0xc08b('0x2e')],'type':_0x1c307d[_0xc08b('0x2f')]['key']};});_0x481fa8[_0xc08b('0x30')]=_['map'](_0x5231c5,'name');_0x481fa8['query']=_[_0xc08b('0x31')](_0x35b8cd[_0xc08b('0x32')]);_0x481fa8[_0xc08b('0x33')]=_[_0xc08b('0x34')](_0x481fa8['model'],_0x481fa8[_0xc08b('0x32')]);_0x2b18df['attributes']=_['intersection'](_0x481fa8[_0xc08b('0x30')],qs[_0xc08b('0x35')](_0x35b8cd[_0xc08b('0x32')]['fields']));_0x2b18df[_0xc08b('0x36')]=_0x2b18df[_0xc08b('0x36')][_0xc08b('0x37')]?_0x2b18df[_0xc08b('0x36')]:_0x481fa8['model'];if(!_0x35b8cd[_0xc08b('0x32')][_0xc08b('0x38')](_0xc08b('0x39'))){_0x2b18df[_0xc08b('0x1e')]=qs[_0xc08b('0x1e')](_0x35b8cd[_0xc08b('0x32')][_0xc08b('0x1e')]);_0x2b18df[_0xc08b('0x20')]=qs[_0xc08b('0x20')](_0x35b8cd[_0xc08b('0x32')]['offset']);}_0x2b18df[_0xc08b('0x3a')]=qs['sort'](_0x35b8cd[_0xc08b('0x32')][_0xc08b('0x3b')]);_0x2b18df[_0xc08b('0x3c')]=qs[_0xc08b('0x33')](_[_0xc08b('0x3d')](_0x35b8cd[_0xc08b('0x32')],_0x481fa8[_0xc08b('0x33')]),_0x5231c5);if(_0x35b8cd[_0xc08b('0x32')][_0xc08b('0x3e')]){_0x2b18df[_0xc08b('0x3c')]=_[_0xc08b('0x3f')](_0x2b18df[_0xc08b('0x3c')],{'$or':_[_0xc08b('0x2b')](_0x5231c5,function(_0x1dde53){if(_0x1dde53[_0xc08b('0x2f')]!==_0xc08b('0x40')){var _0x222285={};_0x222285[_0x1dde53[_0xc08b('0x28')]]={'$like':'%'+_0x35b8cd[_0xc08b('0x32')][_0xc08b('0x3e')]+'%'};return _0x222285;}})});}_0x2b18df=_[_0xc08b('0x3f')]({},_0x2b18df,_0x35b8cd['options']);var _0x4a6786={'where':_0x2b18df[_0xc08b('0x3c')]};return db[_0xc08b('0x2c')][_0xc08b('0x1f')](_0x4a6786)[_0xc08b('0x26')](function(_0x372804){_0x1efda4[_0xc08b('0x1f')]=_0x372804;if(_0x35b8cd[_0xc08b('0x32')][_0xc08b('0x41')]){_0x2b18df[_0xc08b('0x42')]=[{'all':!![]}];}return db['IntegrationReport']['findAll'](_0x2b18df);})[_0xc08b('0x26')](function(_0x33146e){_0x1efda4[_0xc08b('0x43')]=_0x33146e;return _0x1efda4;})[_0xc08b('0x26')](respondWithFilteredResult(_0xfabdd2,_0x2b18df))[_0xc08b('0x44')](handleError(_0xfabdd2,null));};exports[_0xc08b('0x45')]=function(_0x5e693c,_0x7481f1){var _0x384b9b={'raw':![],'where':{'id':_0x5e693c[_0xc08b('0x46')]['id']}},_0x1bc17a={};_0x1bc17a[_0xc08b('0x30')]=_['keys'](db['IntegrationReport'][_0xc08b('0x2d')]);_0x1bc17a[_0xc08b('0x32')]=_[_0xc08b('0x31')](_0x5e693c['query']);_0x1bc17a[_0xc08b('0x33')]=_['intersection'](_0x1bc17a[_0xc08b('0x30')],_0x1bc17a['query']);_0x384b9b[_0xc08b('0x36')]=_[_0xc08b('0x34')](_0x1bc17a[_0xc08b('0x30')],qs[_0xc08b('0x35')](_0x5e693c['query'][_0xc08b('0x35')]));_0x384b9b['attributes']=_0x384b9b['attributes']['length']?_0x384b9b[_0xc08b('0x36')]:_0x1bc17a[_0xc08b('0x30')];if(_0x5e693c[_0xc08b('0x32')][_0xc08b('0x41')]){_0x384b9b[_0xc08b('0x42')]=[{'all':!![]}];}_0x384b9b=_[_0xc08b('0x3f')]({},_0x384b9b,_0x5e693c[_0xc08b('0x47')]);return db[_0xc08b('0x2c')][_0xc08b('0x48')](_0x384b9b)[_0xc08b('0x26')](handleEntityNotFound(_0x7481f1,null))['then'](respondWithResult(_0x7481f1,null))[_0xc08b('0x44')](handleError(_0x7481f1,null));};exports['create']=function(_0x15022e,_0x26e8bf){return db[_0xc08b('0x2c')][_0xc08b('0x49')](_0x15022e['body'],{})[_0xc08b('0x26')](respondWithResult(_0x26e8bf,0xc9))[_0xc08b('0x44')](handleError(_0x26e8bf,null));};exports[_0xc08b('0x25')]=function(_0x3ec174,_0x393e78){if(_0x3ec174[_0xc08b('0x4a')]['id']){delete _0x3ec174['body']['id'];}return db[_0xc08b('0x2c')][_0xc08b('0x48')]({'where':{'id':_0x3ec174[_0xc08b('0x46')]['id']}})[_0xc08b('0x26')](handleEntityNotFound(_0x393e78,null))[_0xc08b('0x26')](saveUpdates(_0x3ec174[_0xc08b('0x4a')],null))[_0xc08b('0x26')](respondWithResult(_0x393e78,null))['catch'](handleError(_0x393e78,null));};exports[_0xc08b('0x4b')]=function(_0x5141f2,_0x251b9f){return db['IntegrationReport'][_0xc08b('0x48')]({'where':{'id':_0x5141f2['params']['id']}})[_0xc08b('0x26')](handleEntityNotFound(_0x251b9f,null))[_0xc08b('0x26')](removeEntity(_0x251b9f,null))[_0xc08b('0x44')](handleError(_0x251b9f,null));};exports['describe']=function(_0x16b67b,_0x309a28){return db[_0xc08b('0x2c')][_0xc08b('0x4c')]()['then'](respondWithResult(_0x309a28,null))[_0xc08b('0x44')](handleError(_0x309a28,null));};
\ No newline at end of file
+var _0xc10b=['util','path','sox','ejs','fs-extra','squel','desk.js','to-csv','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','map','IntegrationReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','type','VIRTUAL','filter','options','include','findAll','rows','show','params','includeAll','find','create','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache'];(function(_0x410e7c,_0x125fe4){var _0x4d1626=function(_0x43a16e){while(--_0x43a16e){_0x410e7c['push'](_0x410e7c['shift']());}};_0x4d1626(++_0x125fe4);}(_0xc10b,0x8f));var _0xbc10=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0xc10b[_0x45783c];return _0x1161da;};'use strict';var emlformat=require(_0xbc10('0x0'));var rimraf=require(_0xbc10('0x1'));var zipdir=require(_0xbc10('0x2'));var jsonpatch=require(_0xbc10('0x3'));var rp=require(_0xbc10('0x4'));var moment=require('moment');var BPromise=require(_0xbc10('0x5'));var Mustache=require(_0xbc10('0x6'));var util=require(_0xbc10('0x7'));var path=require(_0xbc10('0x8'));var sox=require(_0xbc10('0x9'));var csv=require('to-csv');var ejs=require(_0xbc10('0xa'));var fs=require('fs');var fs_extra=require(_0xbc10('0xb'));var _=require('lodash');var squel=require(_0xbc10('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xbc10('0xd'));var toCsv=require(_0xbc10('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbc10('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xbc10('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbc10('0x11'));var logger=require(_0xbc10('0x12'))(_0xbc10('0x13'));var utils=require(_0xbc10('0x14'));var config=require(_0xbc10('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xbc10('0x16'))['db'];function respondWithStatusCode(_0x3806ef,_0x33dfe1){_0x33dfe1=_0x33dfe1||0xcc;return function(_0x474948){if(_0x474948){return _0x3806ef[_0xbc10('0x17')](_0x33dfe1);}return _0x3806ef[_0xbc10('0x18')](_0x33dfe1)['end']();};}function respondWithResult(_0xfa5074,_0xa7ecef){_0xa7ecef=_0xa7ecef||0xc8;return function(_0x1c219c){if(_0x1c219c){return _0xfa5074[_0xbc10('0x18')](_0xa7ecef)[_0xbc10('0x19')](_0x1c219c);}};}function respondWithFilteredResult(_0x5bd468,_0x38d807){return function(_0x5920cd){if(_0x5920cd){var _0x34e579=typeof _0x38d807[_0xbc10('0x1a')]===_0xbc10('0x1b')&&typeof _0x38d807[_0xbc10('0x1c')]==='undefined';var _0x2b701b=_0x5920cd[_0xbc10('0x1d')];var _0x489c19=_0x34e579?0x0:_0x38d807[_0xbc10('0x1a')];var _0x20ab7d=_0x34e579?_0x5920cd[_0xbc10('0x1d')]:_0x38d807[_0xbc10('0x1a')]+_0x38d807['limit'];var _0x166856;if(_0x20ab7d>=_0x2b701b){_0x20ab7d=_0x2b701b;_0x166856=0xc8;}else{_0x166856=0xce;}_0x5bd468[_0xbc10('0x18')](_0x166856);return _0x5bd468[_0xbc10('0x1e')](_0xbc10('0x1f'),_0x489c19+'-'+_0x20ab7d+'/'+_0x2b701b)[_0xbc10('0x19')](_0x5920cd);}return null;};}function patchUpdates(_0x5249bd){return function(_0x138f45){try{jsonpatch['apply'](_0x138f45,_0x5249bd,!![]);}catch(_0x248e9c){return BPromise[_0xbc10('0x20')](_0x248e9c);}return _0x138f45[_0xbc10('0x21')]();};}function saveUpdates(_0x2f74a6,_0x424f72){return function(_0x2f4a45){if(_0x2f4a45){return _0x2f4a45[_0xbc10('0x22')](_0x2f74a6)[_0xbc10('0x23')](function(_0x276945){return _0x276945;});}return null;};}function removeEntity(_0x4a1466,_0x407a80){return function(_0x23dd10){if(_0x23dd10){return _0x23dd10[_0xbc10('0x24')]()[_0xbc10('0x23')](function(){_0x4a1466[_0xbc10('0x18')](0xcc)[_0xbc10('0x25')]();});}};}function handleEntityNotFound(_0x561782,_0x231f98){return function(_0xd200d0){if(!_0xd200d0){_0x561782[_0xbc10('0x17')](0x194);}return _0xd200d0;};}function handleError(_0x4ba0d0,_0x4fb4c6){_0x4fb4c6=_0x4fb4c6||0x1f4;return function(_0x5ea4fe){logger[_0xbc10('0x26')](_0x5ea4fe[_0xbc10('0x27')]);if(_0x5ea4fe[_0xbc10('0x28')]){delete _0x5ea4fe[_0xbc10('0x28')];}_0x4ba0d0[_0xbc10('0x18')](_0x4fb4c6)[_0xbc10('0x29')](_0x5ea4fe);};}exports['index']=function(_0x4c4983,_0x46a1e3){var _0x4a5cea={},_0x794328={},_0xfc0d3a={'count':0x0,'rows':[]};var _0x43d173=_[_0xbc10('0x2a')](db[_0xbc10('0x2b')][_0xbc10('0x2c')],function(_0x48e306){return{'name':_0x48e306[_0xbc10('0x2d')],'type':_0x48e306['type'][_0xbc10('0x2e')]};});_0x794328[_0xbc10('0x2f')]=_[_0xbc10('0x2a')](_0x43d173,_0xbc10('0x28'));_0x794328[_0xbc10('0x30')]=_[_0xbc10('0x31')](_0x4c4983[_0xbc10('0x30')]);_0x794328[_0xbc10('0x32')]=_[_0xbc10('0x33')](_0x794328[_0xbc10('0x2f')],_0x794328[_0xbc10('0x30')]);_0x4a5cea[_0xbc10('0x34')]=_[_0xbc10('0x33')](_0x794328[_0xbc10('0x2f')],qs[_0xbc10('0x35')](_0x4c4983['query'][_0xbc10('0x35')]));_0x4a5cea[_0xbc10('0x34')]=_0x4a5cea[_0xbc10('0x34')][_0xbc10('0x36')]?_0x4a5cea['attributes']:_0x794328['model'];if(!_0x4c4983[_0xbc10('0x30')][_0xbc10('0x37')]('nolimit')){_0x4a5cea['limit']=qs[_0xbc10('0x1c')](_0x4c4983[_0xbc10('0x30')][_0xbc10('0x1c')]);_0x4a5cea[_0xbc10('0x1a')]=qs[_0xbc10('0x1a')](_0x4c4983[_0xbc10('0x30')][_0xbc10('0x1a')]);}_0x4a5cea[_0xbc10('0x38')]=qs[_0xbc10('0x39')](_0x4c4983[_0xbc10('0x30')][_0xbc10('0x39')]);_0x4a5cea[_0xbc10('0x3a')]=qs[_0xbc10('0x32')](_['pick'](_0x4c4983[_0xbc10('0x30')],_0x794328[_0xbc10('0x32')]),_0x43d173);if(_0x4c4983[_0xbc10('0x30')]['filter']){_0x4a5cea[_0xbc10('0x3a')]=_[_0xbc10('0x3b')](_0x4a5cea[_0xbc10('0x3a')],{'$or':_[_0xbc10('0x2a')](_0x43d173,function(_0x282b3b){if(_0x282b3b[_0xbc10('0x3c')]!==_0xbc10('0x3d')){var _0x33ea25={};_0x33ea25[_0x282b3b['name']]={'$like':'%'+_0x4c4983['query'][_0xbc10('0x3e')]+'%'};return _0x33ea25;}})});}_0x4a5cea=_['merge']({},_0x4a5cea,_0x4c4983[_0xbc10('0x3f')]);var _0x308429={'where':_0x4a5cea[_0xbc10('0x3a')]};return db[_0xbc10('0x2b')][_0xbc10('0x1d')](_0x308429)[_0xbc10('0x23')](function(_0x35c743){_0xfc0d3a['count']=_0x35c743;if(_0x4c4983[_0xbc10('0x30')]['includeAll']){_0x4a5cea[_0xbc10('0x40')]=[{'all':!![]}];}return db[_0xbc10('0x2b')][_0xbc10('0x41')](_0x4a5cea);})[_0xbc10('0x23')](function(_0x181314){_0xfc0d3a[_0xbc10('0x42')]=_0x181314;return _0xfc0d3a;})[_0xbc10('0x23')](respondWithFilteredResult(_0x46a1e3,_0x4a5cea))['catch'](handleError(_0x46a1e3,null));};exports[_0xbc10('0x43')]=function(_0x3b74fe,_0x53178b){var _0x2cd5c2={'raw':![],'where':{'id':_0x3b74fe[_0xbc10('0x44')]['id']}},_0x4cff59={};_0x4cff59[_0xbc10('0x2f')]=_[_0xbc10('0x31')](db[_0xbc10('0x2b')][_0xbc10('0x2c')]);_0x4cff59['query']=_[_0xbc10('0x31')](_0x3b74fe['query']);_0x4cff59[_0xbc10('0x32')]=_[_0xbc10('0x33')](_0x4cff59[_0xbc10('0x2f')],_0x4cff59[_0xbc10('0x30')]);_0x2cd5c2[_0xbc10('0x34')]=_['intersection'](_0x4cff59[_0xbc10('0x2f')],qs[_0xbc10('0x35')](_0x3b74fe['query']['fields']));_0x2cd5c2[_0xbc10('0x34')]=_0x2cd5c2[_0xbc10('0x34')][_0xbc10('0x36')]?_0x2cd5c2[_0xbc10('0x34')]:_0x4cff59[_0xbc10('0x2f')];if(_0x3b74fe[_0xbc10('0x30')][_0xbc10('0x45')]){_0x2cd5c2[_0xbc10('0x40')]=[{'all':!![]}];}_0x2cd5c2=_[_0xbc10('0x3b')]({},_0x2cd5c2,_0x3b74fe[_0xbc10('0x3f')]);return db[_0xbc10('0x2b')][_0xbc10('0x46')](_0x2cd5c2)['then'](handleEntityNotFound(_0x53178b,null))['then'](respondWithResult(_0x53178b,null))['catch'](handleError(_0x53178b,null));};exports[_0xbc10('0x47')]=function(_0x2d154c,_0x2cdca1){return db[_0xbc10('0x2b')]['create'](_0x2d154c[_0xbc10('0x48')],{})[_0xbc10('0x23')](respondWithResult(_0x2cdca1,0xc9))[_0xbc10('0x49')](handleError(_0x2cdca1,null));};exports[_0xbc10('0x22')]=function(_0x42fae1,_0x3c116f){if(_0x42fae1[_0xbc10('0x48')]['id']){delete _0x42fae1[_0xbc10('0x48')]['id'];}return db[_0xbc10('0x2b')][_0xbc10('0x46')]({'where':{'id':_0x42fae1[_0xbc10('0x44')]['id']}})[_0xbc10('0x23')](handleEntityNotFound(_0x3c116f,null))[_0xbc10('0x23')](saveUpdates(_0x42fae1[_0xbc10('0x48')],null))[_0xbc10('0x23')](respondWithResult(_0x3c116f,null))[_0xbc10('0x49')](handleError(_0x3c116f,null));};exports[_0xbc10('0x24')]=function(_0x415e43,_0x22ecad){return db[_0xbc10('0x2b')][_0xbc10('0x46')]({'where':{'id':_0x415e43['params']['id']}})[_0xbc10('0x23')](handleEntityNotFound(_0x22ecad,null))[_0xbc10('0x23')](removeEntity(_0x22ecad,null))['catch'](handleError(_0x22ecad,null));};exports['describe']=function(_0x57c713,_0x1b4f08){return db[_0xbc10('0x2b')][_0xbc10('0x4a')]()[_0xbc10('0x23')](respondWithResult(_0x1b4f08,null))['catch'](handleError(_0x1b4f08,null));};
\ No newline at end of file
index ff61d57..230f0f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4243=['exports','report_integration','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./integrationReport.attributes'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x4243,0x17b));var _0x3424=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4243[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3424('0x0'));var util=require(_0x3424('0x1'));var logger=require(_0x3424('0x2'))(_0x3424('0x3'));var moment=require(_0x3424('0x4'));var BPromise=require(_0x3424('0x5'));var rp=require(_0x3424('0x6'));var fs=require('fs');var path=require(_0x3424('0x7'));var rimraf=require(_0x3424('0x8'));var config=require(_0x3424('0x9'));var attributes=require(_0x3424('0xa'));module[_0x3424('0xb')]=function(_0x5bf941,_0x36baad){return _0x5bf941['define']('IntegrationReport',attributes,{'tableName':_0x3424('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c05=['define','IntegrationReport','report_integration','util','../../config/logger','api','moment','bluebird','path','rimraf','exports'];(function(_0x25f4da,_0xf147d1){var _0x3caa0c=function(_0x5bd936){while(--_0x5bd936){_0x25f4da['push'](_0x25f4da['shift']());}};_0x3caa0c(++_0xf147d1);}(_0x1c05,0x12c));var _0x51c0=function(_0x211021,_0xe91475){_0x211021=_0x211021-0x0;var _0x4ba087=_0x1c05[_0x211021];return _0x4ba087;};'use strict';var _=require('lodash');var util=require(_0x51c0('0x0'));var logger=require(_0x51c0('0x1'))(_0x51c0('0x2'));var moment=require(_0x51c0('0x3'));var BPromise=require(_0x51c0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x51c0('0x5'));var rimraf=require(_0x51c0('0x6'));var config=require('../../config/environment');var attributes=require('./integrationReport.attributes');module[_0x51c0('0x7')]=function(_0x3c36fc,_0x1daac6){return _0x3c36fc[_0x51c0('0x8')](_0x51c0('0x9'),attributes,{'tableName':_0x51c0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e8c9b9e..22ba439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['error','message','info','result','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5f5175,_0x3d25d8){var _0x1af827=function(_0x54b17e){while(--_0x54b17e){_0x5f5175['push'](_0x5f5175['shift']());}};_0x1af827(++_0x3d25d8);}(_0xda19,0xd5));var _0x9da1=function(_0x11b1f5,_0x14a5e0){_0x11b1f5=_0x11b1f5-0x0;var _0x54ff40=_0xda19[_0x11b1f5];return _0x54ff40;};'use strict';var _=require('lodash');var util=require(_0x9da1('0x0'));var moment=require(_0x9da1('0x1'));var BPromise=require('bluebird');var rs=require(_0x9da1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9da1('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x9da1('0x4'))(_0x9da1('0x5'));var config=require(_0x9da1('0x6'));var jayson=require(_0x9da1('0x7'));var client=jayson[_0x9da1('0x8')][_0x9da1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x23e4f7,_0x2c3cdd,_0x1c24e6){return new BPromise(function(_0x5e2d18,_0x47df89){return client['request'](_0x23e4f7,_0x1c24e6)['then'](function(_0x417312){logger['info'](_0x9da1('0xa'),_0x2c3cdd,_0x9da1('0xb'));logger[_0x9da1('0xc')](_0x9da1('0xd'),_0x2c3cdd,_0x9da1('0xb'),JSON[_0x9da1('0xe')](_0x417312));if(_0x417312[_0x9da1('0xf')]){if(_0x417312['error']['code']===0x1f4){logger[_0x9da1('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x2c3cdd,_0x417312[_0x9da1('0xf')][_0x9da1('0x10')]);return _0x47df89(_0x417312[_0x9da1('0xf')][_0x9da1('0x10')]);}logger['error'](_0x9da1('0xa'),_0x2c3cdd,_0x417312['error']['message']);return _0x5e2d18(_0x417312[_0x9da1('0xf')]['message']);}else{logger[_0x9da1('0x11')](_0x9da1('0xa'),_0x2c3cdd,_0x9da1('0xb'));_0x5e2d18(_0x417312[_0x9da1('0x12')][_0x9da1('0x10')]);}})['catch'](function(_0x16f75a){logger[_0x9da1('0xf')](_0x9da1('0xa'),_0x2c3cdd,_0x16f75a);_0x47df89(_0x16f75a);});});}
\ No newline at end of file
+var _0xe2fe=['then','info','IntegrationReport,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x36e529,_0x3c10a0){var _0x28fb04=function(_0x72e61f){while(--_0x72e61f){_0x36e529['push'](_0x36e529['shift']());}};_0x28fb04(++_0x3c10a0);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'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']('IntegrationReport,\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
index 97c1588..66cc133 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c90=['addInterval','/:id/sub_intervals/create_many','addIntervals','put','update','delete','destroy','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./interval.controller','isAuthenticated','index','get','/:id','show','/:id/sub_intervals','getIntervals','post','create'];(function(_0x4ef639,_0xe3c056){var _0x22ccd3=function(_0x48628d){while(--_0x48628d){_0x4ef639['push'](_0x4ef639['shift']());}};_0x22ccd3(++_0xe3c056);}(_0x1c90,0x104));var _0x01c9=function(_0x30d7bc,_0x7c8d91){_0x30d7bc=_0x30d7bc-0x0;var _0x59efa8=_0x1c90[_0x30d7bc];return _0x59efa8;};'use strict';var multer=require('multer');var util=require(_0x01c9('0x0'));var path=require(_0x01c9('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x01c9('0x2')]();var fs_extra=require(_0x01c9('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x01c9('0x4'));var config=require(_0x01c9('0x5'));var controller=require(_0x01c9('0x6'));router['get']('/',auth[_0x01c9('0x7')](),controller[_0x01c9('0x8')]);router[_0x01c9('0x9')](_0x01c9('0xa'),auth[_0x01c9('0x7')](),controller[_0x01c9('0xb')]);router[_0x01c9('0x9')](_0x01c9('0xc'),auth['isAuthenticated'](),controller[_0x01c9('0xd')]);router[_0x01c9('0xe')]('/',auth[_0x01c9('0x7')](),controller[_0x01c9('0xf')]);router[_0x01c9('0xe')](_0x01c9('0xc'),auth['isAuthenticated'](),controller[_0x01c9('0x10')]);router[_0x01c9('0xe')](_0x01c9('0x11'),auth['isAuthenticated'](),controller[_0x01c9('0x12')]);router[_0x01c9('0x13')](_0x01c9('0xa'),auth[_0x01c9('0x7')](),controller[_0x01c9('0x14')]);router[_0x01c9('0x15')](_0x01c9('0xa'),auth[_0x01c9('0x7')](),controller[_0x01c9('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x16ce=['getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','./interval.controller','isAuthenticated','index','get','/:id','show','/:id/sub_intervals'];(function(_0x48775e,_0x2970b8){var _0xdb71a7=function(_0x1c595e){while(--_0x1c595e){_0x48775e['push'](_0x48775e['shift']());}};_0xdb71a7(++_0x2970b8);}(_0x16ce,0xfb));var _0xe16c=function(_0x4112f0,_0x24ce14){_0x4112f0=_0x4112f0-0x0;var _0xb4f6c0=_0x16ce[_0x4112f0];return _0xb4f6c0;};'use strict';var multer=require('multer');var util=require(_0xe16c('0x0'));var path=require(_0xe16c('0x1'));var timeout=require(_0xe16c('0x2'));var express=require(_0xe16c('0x3'));var router=express[_0xe16c('0x4')]();var fs_extra=require(_0xe16c('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xe16c('0x6'));router['get']('/',auth[_0xe16c('0x7')](),controller[_0xe16c('0x8')]);router[_0xe16c('0x9')](_0xe16c('0xa'),auth[_0xe16c('0x7')](),controller[_0xe16c('0xb')]);router[_0xe16c('0x9')](_0xe16c('0xc'),auth['isAuthenticated'](),controller[_0xe16c('0xd')]);router[_0xe16c('0xe')]('/',auth[_0xe16c('0x7')](),controller[_0xe16c('0xf')]);router[_0xe16c('0xe')](_0xe16c('0xc'),auth[_0xe16c('0x7')](),controller[_0xe16c('0x10')]);router[_0xe16c('0xe')](_0xe16c('0x11'),auth[_0xe16c('0x7')](),controller['addIntervals']);router[_0xe16c('0x12')](_0xe16c('0xa'),auth[_0xe16c('0x7')](),controller[_0xe16c('0x13')]);router['delete']('/:id',auth[_0xe16c('0x7')](),controller[_0xe16c('0x14')]);module[_0xe16c('0x15')]=router;
\ No newline at end of file
index b7e2d92..ef5399f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb846=['sequelize','STRING'];(function(_0x33fcbb,_0x291d0f){var _0x2efe40=function(_0x2e9442){while(--_0x2e9442){_0x33fcbb['push'](_0x33fcbb['shift']());}};_0x2efe40(++_0x291d0f);}(_0xb846,0x17c));var _0x6b84=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0xb846[_0x513aa5];return _0x1a1a7c;};'use strict';var Sequelize=require(_0x6b84('0x0'));module['exports']={'name':{'type':Sequelize[_0x6b84('0x1')]},'description':{'type':Sequelize[_0x6b84('0x1')]},'interval':{'type':Sequelize[_0x6b84('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0xacfe=['STRING','sequelize','exports'];(function(_0x2e5baf,_0x4b77a1){var _0x4c0797=function(_0x32f4fc){while(--_0x32f4fc){_0x2e5baf['push'](_0x2e5baf['shift']());}};_0x4c0797(++_0x4b77a1);}(_0xacfe,0x1ab));var _0xeacf=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xacfe[_0x618414];return _0x21c19a;};'use strict';var Sequelize=require(_0xeacf('0x0'));module[_0xeacf('0x1')]={'name':{'type':Sequelize[_0xeacf('0x2')]},'description':{'type':Sequelize[_0xeacf('0x2')]},'interval':{'type':Sequelize[_0xeacf('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 644350a..44113f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf863=['filter','where','merge','VIRTUAL','options','Interval','include','find','catch','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','params','addInterval','IntervalId','getIntervals','findOne','order','addIntervals','sequelize','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','offset','undefined','count','limit','set','Content-Range','apply','reject','then','get','Intervals','UserProfileResource','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick'];(function(_0xa4e494,_0x43ed19){var _0x258bb8=function(_0xdcb7b6){while(--_0xdcb7b6){_0xa4e494['push'](_0xa4e494['shift']());}};_0x258bb8(++_0x43ed19);}(_0xf863,0x133));var _0x3f86=function(_0x1ed071,_0x449dcf){_0x1ed071=_0x1ed071-0x0;var _0x1b007c=_0xf863[_0x1ed071];return _0x1b007c;};'use strict';var emlformat=require(_0x3f86('0x0'));var rimraf=require(_0x3f86('0x1'));var zipdir=require(_0x3f86('0x2'));var jsonpatch=require(_0x3f86('0x3'));var rp=require(_0x3f86('0x4'));var moment=require(_0x3f86('0x5'));var BPromise=require(_0x3f86('0x6'));var Mustache=require('mustache');var util=require(_0x3f86('0x7'));var path=require('path');var sox=require(_0x3f86('0x8'));var csv=require(_0x3f86('0x9'));var ejs=require(_0x3f86('0xa'));var fs=require('fs');var fs_extra=require(_0x3f86('0xb'));var _=require(_0x3f86('0xc'));var squel=require('squel');var crypto=require(_0x3f86('0xd'));var jsforce=require(_0x3f86('0xe'));var deskjs=require(_0x3f86('0xf'));var toCsv=require(_0x3f86('0x9'));var querystring=require('querystring');var Papa=require(_0x3f86('0x10'));var Redis=require(_0x3f86('0x11'));var authService=require(_0x3f86('0x12'));var qs=require(_0x3f86('0x13'));var as=require(_0x3f86('0x14'));var hardwareService=require(_0x3f86('0x15'));var logger=require('../../config/logger')(_0x3f86('0x16'));var utils=require('../../config/utils');var config=require(_0x3f86('0x17'));var licenseUtil=require(_0x3f86('0x18'));var db=require(_0x3f86('0x19'))['db'];var extensions=require(_0x3f86('0x1a'));function respondWithStatusCode(_0x1e5a49,_0x18caea){_0x18caea=_0x18caea||0xcc;return function(_0x5db0f1){if(_0x5db0f1){return _0x1e5a49[_0x3f86('0x1b')](_0x18caea);}return _0x1e5a49['status'](_0x18caea)['end']();};}function respondWithResult(_0x5c9de8,_0x5e0d2a){_0x5e0d2a=_0x5e0d2a||0xc8;return function(_0xc989b9){if(_0xc989b9){return _0x5c9de8[_0x3f86('0x1c')](_0x5e0d2a)['json'](_0xc989b9);}};}function respondWithFilteredResult(_0x5ace9d,_0xb07dd9){return function(_0x512f03){if(_0x512f03){var _0x518ec2=typeof _0xb07dd9[_0x3f86('0x1d')]===_0x3f86('0x1e')&&typeof _0xb07dd9['limit']===_0x3f86('0x1e');var _0x4b7a07=_0x512f03[_0x3f86('0x1f')];var _0x270c51=_0x518ec2?0x0:_0xb07dd9[_0x3f86('0x1d')];var _0x43e758=_0x518ec2?_0x512f03[_0x3f86('0x1f')]:_0xb07dd9[_0x3f86('0x1d')]+_0xb07dd9[_0x3f86('0x20')];var _0x4306e8;if(_0x43e758>=_0x4b7a07){_0x43e758=_0x4b7a07;_0x4306e8=0xc8;}else{_0x4306e8=0xce;}_0x5ace9d[_0x3f86('0x1c')](_0x4306e8);return _0x5ace9d[_0x3f86('0x21')](_0x3f86('0x22'),_0x270c51+'-'+_0x43e758+'/'+_0x4b7a07)['json'](_0x512f03);}return null;};}function patchUpdates(_0x1ae175){return function(_0x34be21){try{jsonpatch[_0x3f86('0x23')](_0x34be21,_0x1ae175,!![]);}catch(_0x5b0cc6){return BPromise[_0x3f86('0x24')](_0x5b0cc6);}return _0x34be21['save']();};}function saveUpdates(_0x55f21d,_0x4257c8){return function(_0x20734a){if(_0x20734a){return _0x20734a['update'](_0x55f21d)['then'](function(_0x2e3c1e){return _0x2e3c1e;});}return null;};}function removeEntity(_0x1f9434,_0x373efc){return function(_0x43ef3a){if(_0x43ef3a){return _0x43ef3a['destroy']()[_0x3f86('0x25')](function(){var _0x39cabc=_0x43ef3a[_0x3f86('0x26')]({'plain':!![]});var _0x8a8bb0=_0x3f86('0x27');return db[_0x3f86('0x28')][_0x3f86('0x29')]({'where':{'type':_0x8a8bb0,'resourceId':_0x39cabc['id']}})[_0x3f86('0x25')](function(){return _0x43ef3a;});})['then'](function(){_0x1f9434[_0x3f86('0x1c')](0xcc)[_0x3f86('0x2a')]();});}};}function handleEntityNotFound(_0x275712,_0x4c7ba6){return function(_0x5b0084){if(!_0x5b0084){_0x275712[_0x3f86('0x1b')](0x194);}return _0x5b0084;};}function handleError(_0x3713a2,_0x797008){_0x797008=_0x797008||0x1f4;return function(_0x1b2d01){logger[_0x3f86('0x2b')](_0x1b2d01[_0x3f86('0x2c')]);if(_0x1b2d01['name']){delete _0x1b2d01[_0x3f86('0x2d')];}_0x3713a2['status'](_0x797008)[_0x3f86('0x2e')](_0x1b2d01);};}exports[_0x3f86('0x2f')]=function(_0x2f7cd7,_0x5be794){var _0x3d9601={},_0x5c81a2={},_0x1b5fb5={'count':0x0,'rows':[]};var _0x42f0ed=_[_0x3f86('0x30')](db['Interval'][_0x3f86('0x31')],function(_0x411545){return{'name':_0x411545[_0x3f86('0x32')],'type':_0x411545[_0x3f86('0x33')][_0x3f86('0x34')]};});_0x5c81a2[_0x3f86('0x35')]=_[_0x3f86('0x30')](_0x42f0ed,_0x3f86('0x2d'));_0x5c81a2[_0x3f86('0x36')]=_[_0x3f86('0x37')](_0x2f7cd7[_0x3f86('0x36')]);_0x5c81a2[_0x3f86('0x38')]=_[_0x3f86('0x39')](_0x5c81a2[_0x3f86('0x35')],_0x5c81a2[_0x3f86('0x36')]);_0x3d9601[_0x3f86('0x3a')]=_['intersection'](_0x5c81a2[_0x3f86('0x35')],qs['fields'](_0x2f7cd7['query'][_0x3f86('0x3b')]));_0x3d9601[_0x3f86('0x3a')]=_0x3d9601[_0x3f86('0x3a')][_0x3f86('0x3c')]?_0x3d9601[_0x3f86('0x3a')]:_0x5c81a2[_0x3f86('0x35')];if(!_0x2f7cd7[_0x3f86('0x36')][_0x3f86('0x3d')](_0x3f86('0x3e'))){_0x3d9601['limit']=qs[_0x3f86('0x20')](_0x2f7cd7[_0x3f86('0x36')]['limit']);_0x3d9601['offset']=qs[_0x3f86('0x1d')](_0x2f7cd7[_0x3f86('0x36')][_0x3f86('0x1d')]);}_0x3d9601['order']=qs['sort'](_0x2f7cd7[_0x3f86('0x36')][_0x3f86('0x3f')]);_0x3d9601['where']=qs[_0x3f86('0x38')](_[_0x3f86('0x40')](_0x2f7cd7[_0x3f86('0x36')],_0x5c81a2['filters']),_0x42f0ed);if(_0x2f7cd7['query'][_0x3f86('0x41')]){_0x3d9601[_0x3f86('0x42')]=_[_0x3f86('0x43')](_0x3d9601['where'],{'$or':_['map'](_0x42f0ed,function(_0x4cf20d){if(_0x4cf20d[_0x3f86('0x33')]!==_0x3f86('0x44')){var _0x3f9ff5={};_0x3f9ff5[_0x4cf20d[_0x3f86('0x2d')]]={'$like':'%'+_0x2f7cd7[_0x3f86('0x36')]['filter']+'%'};return _0x3f9ff5;}})});}_0x3d9601=_[_0x3f86('0x43')]({},_0x3d9601,_0x2f7cd7[_0x3f86('0x45')]);var _0x257d94={'where':_0x3d9601[_0x3f86('0x42')]};return db[_0x3f86('0x46')]['count'](_0x257d94)[_0x3f86('0x25')](function(_0x7f78e8){_0x1b5fb5[_0x3f86('0x1f')]=_0x7f78e8;if(_0x2f7cd7['query']['includeAll']){_0x3d9601[_0x3f86('0x47')]=[{'all':!![]}];}return db[_0x3f86('0x46')]['findAll'](_0x3d9601);})['then'](function(_0x5b9cfc){_0x1b5fb5['rows']=_0x5b9cfc;return _0x1b5fb5;})[_0x3f86('0x25')](respondWithFilteredResult(_0x5be794,_0x3d9601))['catch'](handleError(_0x5be794,null));};exports['show']=function(_0x5a2a45,_0x33b11c){var _0x491231={'raw':!![],'where':{'id':_0x5a2a45['params']['id']}},_0x3ed7b4={};_0x3ed7b4[_0x3f86('0x35')]=_['keys'](db[_0x3f86('0x46')][_0x3f86('0x31')]);_0x3ed7b4[_0x3f86('0x36')]=_[_0x3f86('0x37')](_0x5a2a45['query']);_0x3ed7b4[_0x3f86('0x38')]=_[_0x3f86('0x39')](_0x3ed7b4[_0x3f86('0x35')],_0x3ed7b4[_0x3f86('0x36')]);_0x491231[_0x3f86('0x3a')]=_[_0x3f86('0x39')](_0x3ed7b4[_0x3f86('0x35')],qs[_0x3f86('0x3b')](_0x5a2a45[_0x3f86('0x36')]['fields']));_0x491231[_0x3f86('0x3a')]=_0x491231[_0x3f86('0x3a')][_0x3f86('0x3c')]?_0x491231[_0x3f86('0x3a')]:_0x3ed7b4[_0x3f86('0x35')];if(_0x5a2a45[_0x3f86('0x36')]['includeAll']){_0x491231[_0x3f86('0x47')]=[{'all':!![]}];}_0x491231=_[_0x3f86('0x43')]({},_0x491231,_0x5a2a45[_0x3f86('0x45')]);return db[_0x3f86('0x46')][_0x3f86('0x48')](_0x491231)[_0x3f86('0x25')](handleEntityNotFound(_0x33b11c,null))['then'](respondWithResult(_0x33b11c,null))[_0x3f86('0x49')](handleError(_0x33b11c,null));};exports['create']=function(_0x22b39d,_0x42618c){return db[_0x3f86('0x46')][_0x3f86('0x4a')](_0x22b39d[_0x3f86('0x4b')],{})['then'](function(_0x359a1e){var _0x5e9a72=_0x22b39d[_0x3f86('0x4c')][_0x3f86('0x26')]({'plain':!![]});if(!_0x5e9a72)throw new Error(_0x3f86('0x4d'));if(_0x5e9a72[_0x3f86('0x4e')]===_0x3f86('0x4c')){var _0x29adac=_0x359a1e[_0x3f86('0x26')]({'plain':!![]});var _0x485435='Intervals';return db[_0x3f86('0x4f')][_0x3f86('0x48')]({'where':{'name':_0x485435,'userProfileId':_0x5e9a72[_0x3f86('0x50')]},'raw':!![]})[_0x3f86('0x25')](function(_0x173ad1){if(_0x173ad1&&_0x173ad1[_0x3f86('0x51')]===0x0){return db[_0x3f86('0x28')][_0x3f86('0x4a')]({'name':_0x29adac[_0x3f86('0x2d')],'resourceId':_0x29adac['id'],'type':_0x173ad1[_0x3f86('0x2d')],'sectionId':_0x173ad1['id']},{})[_0x3f86('0x25')](function(){return _0x359a1e;});}else{return _0x359a1e;}})[_0x3f86('0x49')](function(_0x40d586){logger['error'](_0x3f86('0x52'),_0x40d586);throw _0x40d586;});}return _0x359a1e;})[_0x3f86('0x25')](respondWithResult(_0x42618c,0xc9))[_0x3f86('0x49')](handleError(_0x42618c,null));};exports[_0x3f86('0x53')]=function(_0x4b3096,_0x13dae6){if(_0x4b3096['body']['id']){delete _0x4b3096['body']['id'];}return db[_0x3f86('0x46')]['find']({'where':{'id':_0x4b3096[_0x3f86('0x54')]['id']}})['then'](handleEntityNotFound(_0x13dae6,null))[_0x3f86('0x25')](saveUpdates(_0x4b3096[_0x3f86('0x4b')],null))[_0x3f86('0x25')](respondWithResult(_0x13dae6,null))[_0x3f86('0x49')](handleError(_0x13dae6,null));};exports['destroy']=function(_0x38bb00,_0x1ac317){return db[_0x3f86('0x46')][_0x3f86('0x48')]({'where':{'id':_0x38bb00[_0x3f86('0x54')]['id']}})['then'](handleEntityNotFound(_0x1ac317,null))[_0x3f86('0x25')](removeEntity(_0x1ac317,null))[_0x3f86('0x49')](handleError(_0x1ac317,null));};exports[_0x3f86('0x55')]=function(_0x349944,_0x32080e,_0x4c735c){if(_0x349944[_0x3f86('0x4b')]['id']){delete _0x349944[_0x3f86('0x4b')]['id'];}return db['Interval'][_0x3f86('0x48')]({'where':{'id':_0x349944[_0x3f86('0x54')]['id']}})[_0x3f86('0x25')](handleEntityNotFound(_0x32080e,null))[_0x3f86('0x25')](function(_0x56f2a8){if(_0x56f2a8){_0x349944[_0x3f86('0x4b')][_0x3f86('0x56')]=_0x56f2a8['id'];return db['Interval'][_0x3f86('0x4a')](_0x349944[_0x3f86('0x4b')]);}})[_0x3f86('0x25')](respondWithResult(_0x32080e,null))[_0x3f86('0x49')](handleError(_0x32080e,null));};exports[_0x3f86('0x57')]=function(_0x486e9f,_0x5ec331,_0x10d807){var _0x2152b6={};var _0x3e2a7f={};var _0x29458b;var _0x22c765;return db['Interval'][_0x3f86('0x58')]({'where':{'id':_0x486e9f[_0x3f86('0x54')]['id']}})['then'](handleEntityNotFound(_0x5ec331,null))[_0x3f86('0x25')](function(_0xd92929){if(_0xd92929){_0x29458b=_0xd92929;_0x3e2a7f['model']=_[_0x3f86('0x37')](db[_0x3f86('0x46')][_0x3f86('0x31')]);_0x3e2a7f['query']=_[_0x3f86('0x37')](_0x486e9f[_0x3f86('0x36')]);_0x3e2a7f[_0x3f86('0x38')]=_[_0x3f86('0x39')](_0x3e2a7f[_0x3f86('0x35')],_0x3e2a7f['query']);_0x2152b6[_0x3f86('0x3a')]=_[_0x3f86('0x39')](_0x3e2a7f[_0x3f86('0x35')],qs[_0x3f86('0x3b')](_0x486e9f['query']['fields']));_0x2152b6[_0x3f86('0x3a')]=_0x2152b6['attributes'][_0x3f86('0x3c')]?_0x2152b6['attributes']:_0x3e2a7f[_0x3f86('0x35')];_0x2152b6[_0x3f86('0x59')]=qs[_0x3f86('0x3f')](_0x486e9f['query']['sort']);_0x2152b6[_0x3f86('0x42')]=qs['filters'](_[_0x3f86('0x40')](_0x486e9f[_0x3f86('0x36')],_0x3e2a7f[_0x3f86('0x38')]));if(_0x486e9f[_0x3f86('0x36')]['filter']){_0x2152b6['where']=_['merge'](_0x2152b6[_0x3f86('0x42')],{'$or':_[_0x3f86('0x30')](_0x2152b6[_0x3f86('0x3a')],function(_0x22d550){var _0x28f9f1={};_0x28f9f1[_0x22d550]={'$like':'%'+_0x486e9f[_0x3f86('0x36')][_0x3f86('0x41')]+'%'};return _0x28f9f1;})});}_0x2152b6=_[_0x3f86('0x43')]({},_0x2152b6,_0x486e9f[_0x3f86('0x45')]);return _0x29458b[_0x3f86('0x57')](_0x2152b6);}})[_0x3f86('0x25')](function(_0x202a5e){if(_0x202a5e){_0x22c765=_0x202a5e[_0x3f86('0x3c')];if(!_0x486e9f[_0x3f86('0x36')][_0x3f86('0x3d')]('nolimit')){_0x2152b6['limit']=qs['limit'](_0x486e9f[_0x3f86('0x36')][_0x3f86('0x20')]);_0x2152b6[_0x3f86('0x1d')]=qs['offset'](_0x486e9f['query'][_0x3f86('0x1d')]);}return _0x29458b[_0x3f86('0x57')](_0x2152b6);}})[_0x3f86('0x25')](function(_0x28d832){if(_0x28d832){return _0x28d832?{'count':_0x22c765,'rows':_0x28d832}:null;}})[_0x3f86('0x25')](respondWithResult(_0x5ec331,null))[_0x3f86('0x49')](handleError(_0x5ec331,null));};exports[_0x3f86('0x5a')]=function(_0x217824,_0x58318e,_0x4c37e5){return db[_0x3f86('0x46')][_0x3f86('0x58')]({'where':{'id':_0x217824[_0x3f86('0x54')]['id']}})[_0x3f86('0x25')](handleEntityNotFound(_0x58318e,null))[_0x3f86('0x25')](function(_0x2b9e22){if(_0x2b9e22){return db[_0x3f86('0x5b')]['transaction'](function(_0x55610e){return db['Interval'][_0x3f86('0x29')]({'where':{'IntervalId':_0x217824[_0x3f86('0x54')]['id']},'transaction':_0x55610e})['then'](function(_0x24842d){var _0x3b53f0=_[_0x3f86('0x30')](_0x217824[_0x3f86('0x4b')],function(_0x17c868){delete _0x17c868['id'];_0x17c868['IntervalId']=_0x217824['params']['id'];return _0x17c868;});return db[_0x3f86('0x46')]['bulkCreate'](_0x3b53f0,{'transaction':_0x55610e});});})[_0x3f86('0x25')](function(){return db[_0x3f86('0x46')][_0x3f86('0x5c')]({'where':{'IntervalId':_0x217824[_0x3f86('0x54')]['id']}});});}})['then'](respondWithResult(_0x58318e,null))['catch'](handleError(_0x58318e,null));};
\ No newline at end of file
+var _0x765e=['order','sort','where','VIRTUAL','filter','merge','options','include','catch','show','params','rawAttributes','fields','includeAll','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','IntervalId','getIntervals','findOne','pick','addIntervals','sequelize','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','../../components/extensions/rewrite','status','end','offset','undefined','limit','count','Content-Range','apply','update','destroy','then','get','Intervals','UserProfileResource','error','stack','name','send','map','Interval','fieldName','type','key','model','keys','filters','intersection','query','attributes','length','hasOwnProperty','nolimit'];(function(_0x3885c6,_0x15f5de){var _0x52267b=function(_0x1f381f){while(--_0x1f381f){_0x3885c6['push'](_0x3885c6['shift']());}};_0x52267b(++_0x15f5de);}(_0x765e,0x131));var _0xe765=function(_0x4ca4a0,_0x24b8df){_0x4ca4a0=_0x4ca4a0-0x0;var _0x3ccea3=_0x765e[_0x4ca4a0];return _0x3ccea3;};'use strict';var emlformat=require(_0xe765('0x0'));var rimraf=require(_0xe765('0x1'));var zipdir=require(_0xe765('0x2'));var jsonpatch=require(_0xe765('0x3'));var rp=require(_0xe765('0x4'));var moment=require(_0xe765('0x5'));var BPromise=require(_0xe765('0x6'));var Mustache=require(_0xe765('0x7'));var util=require(_0xe765('0x8'));var path=require(_0xe765('0x9'));var sox=require(_0xe765('0xa'));var csv=require(_0xe765('0xb'));var ejs=require(_0xe765('0xc'));var fs=require('fs');var fs_extra=require(_0xe765('0xd'));var _=require(_0xe765('0xe'));var squel=require('squel');var crypto=require(_0xe765('0xf'));var jsforce=require(_0xe765('0x10'));var deskjs=require(_0xe765('0x11'));var toCsv=require(_0xe765('0xb'));var querystring=require(_0xe765('0x12'));var Papa=require(_0xe765('0x13'));var Redis=require(_0xe765('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xe765('0x15'));var as=require(_0xe765('0x16'));var hardwareService=require(_0xe765('0x17'));var logger=require('../../config/logger')(_0xe765('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe765('0x19'))['db'];var extensions=require(_0xe765('0x1a'));function respondWithStatusCode(_0x9411a0,_0x27456b){_0x27456b=_0x27456b||0xcc;return function(_0x128285){if(_0x128285){return _0x9411a0['sendStatus'](_0x27456b);}return _0x9411a0[_0xe765('0x1b')](_0x27456b)[_0xe765('0x1c')]();};}function respondWithResult(_0x395312,_0x58dc37){_0x58dc37=_0x58dc37||0xc8;return function(_0x31da3e){if(_0x31da3e){return _0x395312['status'](_0x58dc37)['json'](_0x31da3e);}};}function respondWithFilteredResult(_0x2f673b,_0x1b1cfe){return function(_0x3c887b){if(_0x3c887b){var _0x4856fe=typeof _0x1b1cfe[_0xe765('0x1d')]===_0xe765('0x1e')&&typeof _0x1b1cfe[_0xe765('0x1f')]===_0xe765('0x1e');var _0x2fcb46=_0x3c887b[_0xe765('0x20')];var _0x788b40=_0x4856fe?0x0:_0x1b1cfe[_0xe765('0x1d')];var _0x99e6a9=_0x4856fe?_0x3c887b['count']:_0x1b1cfe[_0xe765('0x1d')]+_0x1b1cfe['limit'];var _0x14a3c3;if(_0x99e6a9>=_0x2fcb46){_0x99e6a9=_0x2fcb46;_0x14a3c3=0xc8;}else{_0x14a3c3=0xce;}_0x2f673b[_0xe765('0x1b')](_0x14a3c3);return _0x2f673b['set'](_0xe765('0x21'),_0x788b40+'-'+_0x99e6a9+'/'+_0x2fcb46)['json'](_0x3c887b);}return null;};}function patchUpdates(_0x1c73c8){return function(_0x368b7e){try{jsonpatch[_0xe765('0x22')](_0x368b7e,_0x1c73c8,!![]);}catch(_0x50970b){return BPromise['reject'](_0x50970b);}return _0x368b7e['save']();};}function saveUpdates(_0x1c6de4,_0x2a4427){return function(_0x43fb76){if(_0x43fb76){return _0x43fb76[_0xe765('0x23')](_0x1c6de4)['then'](function(_0x50cfcb){return _0x50cfcb;});}return null;};}function removeEntity(_0x18ba77,_0x2e2a34){return function(_0x638d6e){if(_0x638d6e){return _0x638d6e[_0xe765('0x24')]()[_0xe765('0x25')](function(){var _0x52bf11=_0x638d6e[_0xe765('0x26')]({'plain':!![]});var _0x5464b4=_0xe765('0x27');return db[_0xe765('0x28')][_0xe765('0x24')]({'where':{'type':_0x5464b4,'resourceId':_0x52bf11['id']}})[_0xe765('0x25')](function(){return _0x638d6e;});})[_0xe765('0x25')](function(){_0x18ba77[_0xe765('0x1b')](0xcc)[_0xe765('0x1c')]();});}};}function handleEntityNotFound(_0x530838,_0x55086d){return function(_0x52476f){if(!_0x52476f){_0x530838['sendStatus'](0x194);}return _0x52476f;};}function handleError(_0xf19724,_0x3f7493){_0x3f7493=_0x3f7493||0x1f4;return function(_0x2fcbc9){logger[_0xe765('0x29')](_0x2fcbc9[_0xe765('0x2a')]);if(_0x2fcbc9['name']){delete _0x2fcbc9[_0xe765('0x2b')];}_0xf19724[_0xe765('0x1b')](_0x3f7493)[_0xe765('0x2c')](_0x2fcbc9);};}exports['index']=function(_0x5947c1,_0x315322){var _0x47d7e7={},_0x477eef={},_0xe81d01={'count':0x0,'rows':[]};var _0x455d38=_[_0xe765('0x2d')](db[_0xe765('0x2e')]['rawAttributes'],function(_0x58401e){return{'name':_0x58401e[_0xe765('0x2f')],'type':_0x58401e[_0xe765('0x30')][_0xe765('0x31')]};});_0x477eef[_0xe765('0x32')]=_[_0xe765('0x2d')](_0x455d38,'name');_0x477eef['query']=_[_0xe765('0x33')](_0x5947c1['query']);_0x477eef[_0xe765('0x34')]=_[_0xe765('0x35')](_0x477eef[_0xe765('0x32')],_0x477eef[_0xe765('0x36')]);_0x47d7e7[_0xe765('0x37')]=_[_0xe765('0x35')](_0x477eef[_0xe765('0x32')],qs['fields'](_0x5947c1['query']['fields']));_0x47d7e7[_0xe765('0x37')]=_0x47d7e7[_0xe765('0x37')][_0xe765('0x38')]?_0x47d7e7[_0xe765('0x37')]:_0x477eef['model'];if(!_0x5947c1[_0xe765('0x36')][_0xe765('0x39')](_0xe765('0x3a'))){_0x47d7e7[_0xe765('0x1f')]=qs['limit'](_0x5947c1[_0xe765('0x36')]['limit']);_0x47d7e7[_0xe765('0x1d')]=qs[_0xe765('0x1d')](_0x5947c1[_0xe765('0x36')][_0xe765('0x1d')]);}_0x47d7e7[_0xe765('0x3b')]=qs[_0xe765('0x3c')](_0x5947c1[_0xe765('0x36')][_0xe765('0x3c')]);_0x47d7e7[_0xe765('0x3d')]=qs[_0xe765('0x34')](_['pick'](_0x5947c1[_0xe765('0x36')],_0x477eef[_0xe765('0x34')]),_0x455d38);if(_0x5947c1[_0xe765('0x36')]['filter']){_0x47d7e7['where']=_['merge'](_0x47d7e7[_0xe765('0x3d')],{'$or':_['map'](_0x455d38,function(_0x1f0db1){if(_0x1f0db1[_0xe765('0x30')]!==_0xe765('0x3e')){var _0x7b6206={};_0x7b6206[_0x1f0db1['name']]={'$like':'%'+_0x5947c1[_0xe765('0x36')][_0xe765('0x3f')]+'%'};return _0x7b6206;}})});}_0x47d7e7=_[_0xe765('0x40')]({},_0x47d7e7,_0x5947c1[_0xe765('0x41')]);var _0x1a01a0={'where':_0x47d7e7[_0xe765('0x3d')]};return db[_0xe765('0x2e')][_0xe765('0x20')](_0x1a01a0)[_0xe765('0x25')](function(_0x1eb14d){_0xe81d01['count']=_0x1eb14d;if(_0x5947c1[_0xe765('0x36')]['includeAll']){_0x47d7e7[_0xe765('0x42')]=[{'all':!![]}];}return db[_0xe765('0x2e')]['findAll'](_0x47d7e7);})[_0xe765('0x25')](function(_0x56bd50){_0xe81d01['rows']=_0x56bd50;return _0xe81d01;})['then'](respondWithFilteredResult(_0x315322,_0x47d7e7))[_0xe765('0x43')](handleError(_0x315322,null));};exports[_0xe765('0x44')]=function(_0x1ded88,_0x54833a){var _0x2de9de={'raw':!![],'where':{'id':_0x1ded88[_0xe765('0x45')]['id']}},_0x3e9b03={};_0x3e9b03[_0xe765('0x32')]=_[_0xe765('0x33')](db[_0xe765('0x2e')][_0xe765('0x46')]);_0x3e9b03[_0xe765('0x36')]=_[_0xe765('0x33')](_0x1ded88['query']);_0x3e9b03[_0xe765('0x34')]=_['intersection'](_0x3e9b03['model'],_0x3e9b03[_0xe765('0x36')]);_0x2de9de['attributes']=_[_0xe765('0x35')](_0x3e9b03[_0xe765('0x32')],qs[_0xe765('0x47')](_0x1ded88['query'][_0xe765('0x47')]));_0x2de9de['attributes']=_0x2de9de[_0xe765('0x37')][_0xe765('0x38')]?_0x2de9de[_0xe765('0x37')]:_0x3e9b03['model'];if(_0x1ded88[_0xe765('0x36')][_0xe765('0x48')]){_0x2de9de[_0xe765('0x42')]=[{'all':!![]}];}_0x2de9de=_[_0xe765('0x40')]({},_0x2de9de,_0x1ded88['options']);return db['Interval']['find'](_0x2de9de)[_0xe765('0x25')](handleEntityNotFound(_0x54833a,null))[_0xe765('0x25')](respondWithResult(_0x54833a,null))[_0xe765('0x43')](handleError(_0x54833a,null));};exports['create']=function(_0x14834c,_0x4d6bbc){return db[_0xe765('0x2e')][_0xe765('0x49')](_0x14834c[_0xe765('0x4a')],{})[_0xe765('0x25')](function(_0x7f132f){var _0x29a10a=_0x14834c['user'][_0xe765('0x26')]({'plain':!![]});if(!_0x29a10a)throw new Error(_0xe765('0x4b'));if(_0x29a10a[_0xe765('0x4c')]===_0xe765('0x4d')){var _0x14c3b5=_0x7f132f[_0xe765('0x26')]({'plain':!![]});var _0x47a23e='Intervals';return db[_0xe765('0x4e')][_0xe765('0x4f')]({'where':{'name':_0x47a23e,'userProfileId':_0x29a10a[_0xe765('0x50')]},'raw':!![]})['then'](function(_0x4e6762){if(_0x4e6762&&_0x4e6762[_0xe765('0x51')]===0x0){return db[_0xe765('0x28')][_0xe765('0x49')]({'name':_0x14c3b5[_0xe765('0x2b')],'resourceId':_0x14c3b5['id'],'type':_0x4e6762[_0xe765('0x2b')],'sectionId':_0x4e6762['id']},{})[_0xe765('0x25')](function(){return _0x7f132f;});}else{return _0x7f132f;}})[_0xe765('0x43')](function(_0x5977bf){logger['error'](_0xe765('0x52'),_0x5977bf);throw _0x5977bf;});}return _0x7f132f;})['then'](respondWithResult(_0x4d6bbc,0xc9))[_0xe765('0x43')](handleError(_0x4d6bbc,null));};exports[_0xe765('0x23')]=function(_0x8bcddb,_0x5504b9){if(_0x8bcddb[_0xe765('0x4a')]['id']){delete _0x8bcddb[_0xe765('0x4a')]['id'];}return db['Interval'][_0xe765('0x4f')]({'where':{'id':_0x8bcddb[_0xe765('0x45')]['id']}})[_0xe765('0x25')](handleEntityNotFound(_0x5504b9,null))[_0xe765('0x25')](saveUpdates(_0x8bcddb[_0xe765('0x4a')],null))[_0xe765('0x25')](respondWithResult(_0x5504b9,null))[_0xe765('0x43')](handleError(_0x5504b9,null));};exports[_0xe765('0x24')]=function(_0x45be53,_0x1f6da3){return db[_0xe765('0x2e')][_0xe765('0x4f')]({'where':{'id':_0x45be53[_0xe765('0x45')]['id']}})['then'](handleEntityNotFound(_0x1f6da3,null))[_0xe765('0x25')](removeEntity(_0x1f6da3,null))[_0xe765('0x43')](handleError(_0x1f6da3,null));};exports[_0xe765('0x53')]=function(_0x3563a2,_0x3ec5b0,_0x3d5553){if(_0x3563a2[_0xe765('0x4a')]['id']){delete _0x3563a2[_0xe765('0x4a')]['id'];}return db[_0xe765('0x2e')]['find']({'where':{'id':_0x3563a2[_0xe765('0x45')]['id']}})['then'](handleEntityNotFound(_0x3ec5b0,null))[_0xe765('0x25')](function(_0x4071c7){if(_0x4071c7){_0x3563a2['body'][_0xe765('0x54')]=_0x4071c7['id'];return db[_0xe765('0x2e')][_0xe765('0x49')](_0x3563a2[_0xe765('0x4a')]);}})[_0xe765('0x25')](respondWithResult(_0x3ec5b0,null))[_0xe765('0x43')](handleError(_0x3ec5b0,null));};exports[_0xe765('0x55')]=function(_0x4a19d8,_0x23f95e,_0x1cbcd3){var _0x5c68ff={};var _0x413849={};var _0xbd99ec;var _0x2b1a64;return db['Interval'][_0xe765('0x56')]({'where':{'id':_0x4a19d8[_0xe765('0x45')]['id']}})[_0xe765('0x25')](handleEntityNotFound(_0x23f95e,null))['then'](function(_0x4d62c1){if(_0x4d62c1){_0xbd99ec=_0x4d62c1;_0x413849['model']=_[_0xe765('0x33')](db[_0xe765('0x2e')]['rawAttributes']);_0x413849['query']=_[_0xe765('0x33')](_0x4a19d8['query']);_0x413849[_0xe765('0x34')]=_[_0xe765('0x35')](_0x413849[_0xe765('0x32')],_0x413849[_0xe765('0x36')]);_0x5c68ff[_0xe765('0x37')]=_[_0xe765('0x35')](_0x413849[_0xe765('0x32')],qs[_0xe765('0x47')](_0x4a19d8[_0xe765('0x36')][_0xe765('0x47')]));_0x5c68ff[_0xe765('0x37')]=_0x5c68ff['attributes'][_0xe765('0x38')]?_0x5c68ff[_0xe765('0x37')]:_0x413849[_0xe765('0x32')];_0x5c68ff[_0xe765('0x3b')]=qs['sort'](_0x4a19d8[_0xe765('0x36')][_0xe765('0x3c')]);_0x5c68ff[_0xe765('0x3d')]=qs['filters'](_[_0xe765('0x57')](_0x4a19d8[_0xe765('0x36')],_0x413849[_0xe765('0x34')]));if(_0x4a19d8[_0xe765('0x36')][_0xe765('0x3f')]){_0x5c68ff[_0xe765('0x3d')]=_[_0xe765('0x40')](_0x5c68ff[_0xe765('0x3d')],{'$or':_[_0xe765('0x2d')](_0x5c68ff[_0xe765('0x37')],function(_0x461f95){var _0x374e31={};_0x374e31[_0x461f95]={'$like':'%'+_0x4a19d8['query'][_0xe765('0x3f')]+'%'};return _0x374e31;})});}_0x5c68ff=_[_0xe765('0x40')]({},_0x5c68ff,_0x4a19d8['options']);return _0xbd99ec[_0xe765('0x55')](_0x5c68ff);}})[_0xe765('0x25')](function(_0x1fe88d){if(_0x1fe88d){_0x2b1a64=_0x1fe88d[_0xe765('0x38')];if(!_0x4a19d8['query'][_0xe765('0x39')](_0xe765('0x3a'))){_0x5c68ff[_0xe765('0x1f')]=qs[_0xe765('0x1f')](_0x4a19d8[_0xe765('0x36')][_0xe765('0x1f')]);_0x5c68ff[_0xe765('0x1d')]=qs[_0xe765('0x1d')](_0x4a19d8['query']['offset']);}return _0xbd99ec[_0xe765('0x55')](_0x5c68ff);}})[_0xe765('0x25')](function(_0x529aaf){if(_0x529aaf){return _0x529aaf?{'count':_0x2b1a64,'rows':_0x529aaf}:null;}})[_0xe765('0x25')](respondWithResult(_0x23f95e,null))[_0xe765('0x43')](handleError(_0x23f95e,null));};exports[_0xe765('0x58')]=function(_0x4cd09a,_0x37cd10,_0x224cf5){return db[_0xe765('0x2e')][_0xe765('0x56')]({'where':{'id':_0x4cd09a[_0xe765('0x45')]['id']}})[_0xe765('0x25')](handleEntityNotFound(_0x37cd10,null))[_0xe765('0x25')](function(_0x28e8a6){if(_0x28e8a6){return db[_0xe765('0x59')]['transaction'](function(_0x1bfd5d){return db['Interval']['destroy']({'where':{'IntervalId':_0x4cd09a['params']['id']},'transaction':_0x1bfd5d})[_0xe765('0x25')](function(_0x1f98cf){var _0x274959=_[_0xe765('0x2d')](_0x4cd09a['body'],function(_0x1d6063){delete _0x1d6063['id'];_0x1d6063[_0xe765('0x54')]=_0x4cd09a[_0xe765('0x45')]['id'];return _0x1d6063;});return db[_0xe765('0x2e')]['bulkCreate'](_0x274959,{'transaction':_0x1bfd5d});});})[_0xe765('0x25')](function(){return db[_0xe765('0x2e')][_0xe765('0x5a')]({'where':{'IntervalId':_0x4cd09a[_0xe765('0x45')]['id']}});});}})['then'](respondWithResult(_0x37cd10,null))['catch'](handleError(_0x37cd10,null));};
\ No newline at end of file
index ec4505f..29f1a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82f8=['../../config/environment','./interval.attributes','../../components/extensions/rewrite','define','Interval','tools_intervals','rewrite','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x515cff,_0x27d4a5){var _0x419c0e=function(_0x4a0ad2){while(--_0x4a0ad2){_0x515cff['push'](_0x515cff['shift']());}};_0x419c0e(++_0x27d4a5);}(_0x82f8,0x157));var _0x882f=function(_0x2b5ee7,_0xf28187){_0x2b5ee7=_0x2b5ee7-0x0;var _0x940bde=_0x82f8[_0x2b5ee7];return _0x940bde;};'use strict';var _=require('lodash');var util=require(_0x882f('0x0'));var logger=require(_0x882f('0x1'))('api');var moment=require(_0x882f('0x2'));var BPromise=require(_0x882f('0x3'));var rp=require(_0x882f('0x4'));var fs=require('fs');var path=require(_0x882f('0x5'));var rimraf=require(_0x882f('0x6'));var config=require(_0x882f('0x7'));var attributes=require(_0x882f('0x8'));var extensions=require(_0x882f('0x9'));module['exports']=function(_0x57fc29,_0x3c414d){return _0x57fc29[_0x882f('0xa')](_0x882f('0xb'),attributes,{'tableName':_0x882f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4f9dd6,_0x3ad83c){extensions['rewrite'](_0x57fc29,_0x4f9dd6);},'afterBulkCreate':function(_0x29c3e8,_0x478c18,_0x3ead6e){_0x3ead6e();extensions['rewrite'](_0x57fc29,_0x29c3e8[0x0]);},'afterUpdate':function(_0x499654,_0x14d89b){extensions[_0x882f('0xd')](_0x57fc29,_0x499654);},'afterDestroy':function(_0x2c05cc,_0x2f2e51){extensions[_0x882f('0xd')](_0x57fc29,_0x2c05cc);}}});};
\ No newline at end of file
+var _0x170b=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./interval.attributes','../../components/extensions/rewrite','exports','define','Interval','tools_intervals','rewrite','lodash','util'];(function(_0x11ed40,_0x568618){var _0x10406d=function(_0x2d8178){while(--_0x2d8178){_0x11ed40['push'](_0x11ed40['shift']());}};_0x10406d(++_0x568618);}(_0x170b,0xae));var _0xb170=function(_0x15388d,_0x26ec2d){_0x15388d=_0x15388d-0x0;var _0x3a9a32=_0x170b[_0x15388d];return _0x3a9a32;};'use strict';var _=require(_0xb170('0x0'));var util=require(_0xb170('0x1'));var logger=require(_0xb170('0x2'))(_0xb170('0x3'));var moment=require('moment');var BPromise=require(_0xb170('0x4'));var rp=require(_0xb170('0x5'));var fs=require('fs');var path=require(_0xb170('0x6'));var rimraf=require(_0xb170('0x7'));var config=require(_0xb170('0x8'));var attributes=require(_0xb170('0x9'));var extensions=require(_0xb170('0xa'));module[_0xb170('0xb')]=function(_0x29a74c,_0x245540){return _0x29a74c[_0xb170('0xc')](_0xb170('0xd'),attributes,{'tableName':_0xb170('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x523df7,_0x2293db){extensions[_0xb170('0xf')](_0x29a74c,_0x523df7);},'afterBulkCreate':function(_0x57be33,_0x344c4a,_0x1f0f38){_0x1f0f38();extensions['rewrite'](_0x29a74c,_0x57be33[0x0]);},'afterUpdate':function(_0x35504b,_0x1e8d40){extensions[_0xb170('0xf')](_0x29a74c,_0x35504b);},'afterDestroy':function(_0xb123a6,_0x278ac2){extensions[_0xb170('0xf')](_0x29a74c,_0xb123a6);}}});};
\ No newline at end of file
index 37fa61c..660f414 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(_0x5e8c32,_0x1b1f3f){var _0x595f7b=function(_0x38840e){while(--_0x38840e){_0x5e8c32['push'](_0x5e8c32['shift']());}};_0x595f7b(++_0x1b1f3f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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(_0x437d7f,_0x1feb46){var _0x31058c=function(_0x49dd1a){while(--_0x49dd1a){_0x437d7f['push'](_0x437d7f['shift']());}};_0x31058c(++_0x1feb46);}(_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);});});}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 863f6d9..493b8f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_0x464364,_0x65fd7a){var _0x582ddc=function(_0x27c9f3){while(--_0x27c9f3){_0x464364['push'](_0x464364['shift']());}};_0x582ddc(++_0x65fd7a);}(_0xdb28,0x106));var _0x8db2=function(_0x31a977,_0x1c70f0){_0x31a977=_0x31a977-0x0;var _0x983896=_0xdb28[_0x31a977];return _0x983896;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['post']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);module[_0x8db2('0x6')]=router;
\ No newline at end of file
+var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x3e3bee,_0x4f91fe){var _0x3ae14c=function(_0x3861a0){while(--_0x3861a0){_0x3e3bee['push'](_0x3e3bee['shift']());}};_0x3ae14c(++_0x4f91fe);}(_0x5f66,0x1a0));var _0x65f6=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x5f66[_0x36eaaa];return _0x461349;};'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
index 3836019..f4dfedd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2e3=['reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','toString','request','utf8','data','end','status','statusCode','json','parse','error','api.jira','write','openIssue','send','body','headers','remoteAddress','connection','bluebird','../../config/logger','api','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','Bug','customfield_11500','email','fields','customfield_11501','customfield_11502','customfield_11503','name','customfield_11504'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xe2e3,0xc3));var _0x3e2e=function(_0x39d544,_0x35c14f){_0x39d544=_0x39d544-0x0;var _0x5a5ff2=_0xe2e3[_0x39d544];return _0x5a5ff2;};'use strict';var BPromise=require(_0x3e2e('0x0'));var https=require('https');var logger=require(_0x3e2e('0x1'))(_0x3e2e('0x2'));var USERNAME='support';var PASSWORD=_0x3e2e('0x3');function openIssue(_0x14992b,_0x549495){var _0x5c1e41={'fields':{'project':{'key':_0x14992b[_0x3e2e('0x4')]||_0x3e2e('0x5')},'summary':(_0x14992b[_0x3e2e('0x6')]||_0x3e2e('0x7'))+_0x3e2e('0x8')+_0x14992b['ip'],'description':_0x14992b[_0x3e2e('0x9')]||JSON[_0x3e2e('0xa')](_0x14992b),'issuetype':{'name':_0x14992b['issuetype']||_0x3e2e('0xb')}}};_0x5c1e41['fields'][_0x3e2e('0xc')]=_0x14992b[_0x3e2e('0xd')];_0x5c1e41[_0x3e2e('0xe')][_0x3e2e('0xf')]=_0x14992b['oldToken'];_0x5c1e41[_0x3e2e('0xe')][_0x3e2e('0x10')]=_0x14992b['newToken'];_0x5c1e41[_0x3e2e('0xe')][_0x3e2e('0x11')]=_0x14992b[_0x3e2e('0x12')];_0x5c1e41[_0x3e2e('0xe')][_0x3e2e('0x13')]=_0x14992b[_0x3e2e('0x14')];_0x5c1e41['fields'][_0x3e2e('0x15')]=_0x14992b['ip'];var _0x504f87={'host':_0x3e2e('0x16'),'port':0x1bb,'path':_0x3e2e('0x17'),'method':_0x3e2e('0x18'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0x3e2e('0x19')]('base64')}};var _0x59d8b4=JSON[_0x3e2e('0xa')](_0x5c1e41);var _0x461bc8=https[_0x3e2e('0x1a')](_0x504f87,function(_0x532c5f){_0x532c5f['setEncoding'](_0x3e2e('0x1b'));var _0x267f8='';_0x532c5f['on'](_0x3e2e('0x1c'),function(_0x30d700){_0x267f8+=_0x30d700;});_0x532c5f['on'](_0x3e2e('0x1d'),function(){if(_0x549495){return _0x549495[_0x3e2e('0x1e')](_0x532c5f[_0x3e2e('0x1f')])[_0x3e2e('0x20')](JSON[_0x3e2e('0x21')](_0x267f8));}});});_0x461bc8['on'](_0x3e2e('0x22'),function(_0x3c343e){if(_0x549495){return _0x549495[_0x3e2e('0x1e')](0x1f4)['json']({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0x3e2e('0x23')}]});}});_0x461bc8[_0x3e2e('0x24')](_0x59d8b4);_0x461bc8[_0x3e2e('0x1d')]();}exports[_0x3e2e('0x25')]=openIssue;exports[_0x3e2e('0x26')]=function(_0x4cf171,_0x235df9){_0x4cf171[_0x3e2e('0x27')]['ip']=_0x4cf171[_0x3e2e('0x28')]['x-forwarded-for']||_0x4cf171['connection'][_0x3e2e('0x29')]||_0x4cf171['socket'][_0x3e2e('0x29')]||_0x4cf171[_0x3e2e('0x2a')]['socket'][_0x3e2e('0x29')];return openIssue(_0x4cf171[_0x3e2e('0x27')],_0x235df9);};
\ No newline at end of file
+var _0xed0a=['fields','customfield_11501','oldToken','newToken','customfield_11503','reason','track.xcallymotion.com','/rest/api/2/issue','application/json','Basic\x20','request','setEncoding','data','status','statusCode','json','parse','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','end','openIssue','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','api','3eAmWpBVP0','key','MOTGUI','Report','\x20from\x20','description','stringify','issuetype','Bug'];(function(_0x20d5c4,_0x502691){var _0x47c08f=function(_0x11ecd3){while(--_0x11ecd3){_0x20d5c4['push'](_0x20d5c4['shift']());}};_0x47c08f(++_0x502691);}(_0xed0a,0x1d4));var _0xaed0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xed0a[_0x20a584];return _0x4b41a8;};'use strict';var BPromise=require(_0xaed0('0x0'));var https=require(_0xaed0('0x1'));var logger=require('../../config/logger')(_0xaed0('0x2'));var USERNAME='support';var PASSWORD=_0xaed0('0x3');function openIssue(_0x2f7090,_0x175f70){var _0xe9309c={'fields':{'project':{'key':_0x2f7090[_0xaed0('0x4')]||_0xaed0('0x5')},'summary':(_0x2f7090['summary']||_0xaed0('0x6'))+_0xaed0('0x7')+_0x2f7090['ip'],'description':_0x2f7090[_0xaed0('0x8')]||JSON[_0xaed0('0x9')](_0x2f7090),'issuetype':{'name':_0x2f7090[_0xaed0('0xa')]||_0xaed0('0xb')}}};_0xe9309c[_0xaed0('0xc')]['customfield_11500']=_0x2f7090['email'];_0xe9309c['fields'][_0xaed0('0xd')]=_0x2f7090[_0xaed0('0xe')];_0xe9309c[_0xaed0('0xc')]['customfield_11502']=_0x2f7090[_0xaed0('0xf')];_0xe9309c[_0xaed0('0xc')][_0xaed0('0x10')]=_0x2f7090['name'];_0xe9309c[_0xaed0('0xc')]['customfield_11504']=_0x2f7090[_0xaed0('0x11')];_0xe9309c[_0xaed0('0xc')]['customfield_10102']=_0x2f7090['ip'];var _0x4be9f9={'host':_0xaed0('0x12'),'port':0x1bb,'path':_0xaed0('0x13'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0xaed0('0x14'),'Authorization':_0xaed0('0x15')+new Buffer(USERNAME+':'+PASSWORD)['toString']('base64')}};var _0x5d3f9c=JSON[_0xaed0('0x9')](_0xe9309c);var _0x2a74da=https[_0xaed0('0x16')](_0x4be9f9,function(_0x154b95){_0x154b95[_0xaed0('0x17')]('utf8');var _0x56b603='';_0x154b95['on'](_0xaed0('0x18'),function(_0x43b2c4){_0x56b603+=_0x43b2c4;});_0x154b95['on']('end',function(){if(_0x175f70){return _0x175f70[_0xaed0('0x19')](_0x154b95[_0xaed0('0x1a')])[_0xaed0('0x1b')](JSON[_0xaed0('0x1c')](_0x56b603));}});});_0x2a74da['on']('error',function(_0x3aedfc){if(_0x175f70){return _0x175f70[_0xaed0('0x19')](0x1f4)[_0xaed0('0x1b')]({'errors':[{'message':_0xaed0('0x1d'),'type':_0xaed0('0x1e')}]});}});_0x2a74da[_0xaed0('0x1f')](_0x5d3f9c);_0x2a74da[_0xaed0('0x20')]();}exports[_0xaed0('0x21')]=openIssue;exports['send']=function(_0x389d44,_0x165a2f){_0x389d44[_0xaed0('0x22')]['ip']=_0x389d44[_0xaed0('0x23')][_0xaed0('0x24')]||_0x389d44[_0xaed0('0x25')]['remoteAddress']||_0x389d44['socket'][_0xaed0('0x26')]||_0x389d44['connection'][_0xaed0('0x27')][_0xaed0('0x26')];return openIssue(_0x389d44[_0xaed0('0x22')],_0x165a2f);};
\ No newline at end of file
index a69b904..8a978f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf109=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put','delete','exports','multer','util','path'];(function(_0x587fb5,_0x59cb3b){var _0x551105=function(_0x5bbef4){while(--_0x5bbef4){_0x587fb5['push'](_0x587fb5['shift']());}};_0x551105(++_0x59cb3b);}(_0xf109,0xce));var _0x9f10=function(_0xef8146,_0x459c34){_0xef8146=_0xef8146-0x0;var _0x5a6cb0=_0xf109[_0xef8146];return _0x5a6cb0;};'use strict';var multer=require(_0x9f10('0x0'));var util=require(_0x9f10('0x1'));var path=require(_0x9f10('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x9f10('0x3'));var auth=require(_0x9f10('0x4'));var interaction=require(_0x9f10('0x5'));var config=require(_0x9f10('0x6'));var controller=require(_0x9f10('0x7'));router[_0x9f10('0x8')]('/',auth[_0x9f10('0x9')](),controller[_0x9f10('0xa')]);router[_0x9f10('0x8')](_0x9f10('0xb'),auth[_0x9f10('0x9')](),controller['describe']);router[_0x9f10('0x8')](_0x9f10('0xc'),auth[_0x9f10('0x9')](),controller[_0x9f10('0xd')]);router[_0x9f10('0xe')]('/',auth['isAuthenticated'](),controller[_0x9f10('0xf')]);router[_0x9f10('0x10')](_0x9f10('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x9f10('0x11')](_0x9f10('0xc'),auth[_0x9f10('0x9')](),controller['destroy']);module[_0x9f10('0x12')]=router;
\ No newline at end of file
+var _0xda55=['../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','isAuthenticated','get','/describe','describe','/:id','show','create','put','update','delete','destroy','multer','util','express','Router','fs-extra'];(function(_0x1d5ba8,_0x412a52){var _0x1022a2=function(_0x187f11){while(--_0x187f11){_0x1d5ba8['push'](_0x1d5ba8['shift']());}};_0x1022a2(++_0x412a52);}(_0xda55,0x6d));var _0x5da5=function(_0x5f05ec,_0x1fdb88){_0x5f05ec=_0x5f05ec-0x0;var _0x20c8ed=_0xda55[_0x5f05ec];return _0x20c8ed;};'use strict';var multer=require(_0x5da5('0x0'));var util=require(_0x5da5('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5da5('0x2'));var router=express[_0x5da5('0x3')]();var fs_extra=require(_0x5da5('0x4'));var auth=require(_0x5da5('0x5'));var interaction=require(_0x5da5('0x6'));var config=require('../../config/environment');var controller=require(_0x5da5('0x7'));router['get']('/',auth[_0x5da5('0x8')](),controller['index']);router[_0x5da5('0x9')](_0x5da5('0xa'),auth[_0x5da5('0x8')](),controller[_0x5da5('0xb')]);router[_0x5da5('0x9')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller[_0x5da5('0xd')]);router['post']('/',auth[_0x5da5('0x8')](),controller[_0x5da5('0xe')]);router[_0x5da5('0xf')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller[_0x5da5('0x10')]);router[_0x5da5('0x11')]('/:id',auth[_0x5da5('0x8')](),controller[_0x5da5('0x12')]);module['exports']=router;
\ No newline at end of file
index 4eb789a..bb447a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x7a54,0x106));var _0x47a5=function(_0x48270d,_0x2c0fa4){_0x48270d=_0x48270d-0x0;var _0x13d73c=_0x7a54[_0x48270d];return _0x13d73c;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x7a54,0x106));var _0x47a5=function(_0x492cfd,_0x1f7735){_0x492cfd=_0x492cfd-0x0;var _0x2563d0=_0x7a54[_0x492cfd];return _0x2563d0;};'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 fece426..282281f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1501=['update','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','then','stack','name','send','index','map','JscriptyAnswerReport','fieldName','type','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','create','body'];(function(_0x4cc239,_0x36418d){var _0xf5bc65=function(_0x1a1d31){while(--_0x1a1d31){_0x4cc239['push'](_0x4cc239['shift']());}};_0xf5bc65(++_0x36418d);}(_0x1501,0x126));var _0x1150=function(_0x4d7f8a,_0x59c9fe){_0x4d7f8a=_0x4d7f8a-0x0;var _0x252cf8=_0x1501[_0x4d7f8a];return _0x252cf8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1150('0x0'));var zipdir=require(_0x1150('0x1'));var jsonpatch=require(_0x1150('0x2'));var rp=require('request-promise');var moment=require(_0x1150('0x3'));var BPromise=require(_0x1150('0x4'));var Mustache=require(_0x1150('0x5'));var util=require(_0x1150('0x6'));var path=require('path');var sox=require(_0x1150('0x7'));var csv=require('to-csv');var ejs=require(_0x1150('0x8'));var fs=require('fs');var fs_extra=require(_0x1150('0x9'));var _=require(_0x1150('0xa'));var squel=require(_0x1150('0xb'));var crypto=require(_0x1150('0xc'));var jsforce=require(_0x1150('0xd'));var deskjs=require(_0x1150('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1150('0xf'));var Redis=require(_0x1150('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1150('0x11'));var hardwareService=require(_0x1150('0x12'));var logger=require(_0x1150('0x13'))(_0x1150('0x14'));var utils=require('../../config/utils');var config=require(_0x1150('0x15'));var licenseUtil=require(_0x1150('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3bcf2e,_0x4ca5ef){_0x4ca5ef=_0x4ca5ef||0xcc;return function(_0x1d2549){if(_0x1d2549){return _0x3bcf2e[_0x1150('0x17')](_0x4ca5ef);}return _0x3bcf2e[_0x1150('0x18')](_0x4ca5ef)[_0x1150('0x19')]();};}function respondWithResult(_0x787aac,_0x18f378){_0x18f378=_0x18f378||0xc8;return function(_0x474069){if(_0x474069){return _0x787aac[_0x1150('0x18')](_0x18f378)['json'](_0x474069);}};}function respondWithFilteredResult(_0x498bab,_0x3cc5e7){return function(_0x146d70){if(_0x146d70){var _0x54df42=typeof _0x3cc5e7[_0x1150('0x1a')]===_0x1150('0x1b')&&typeof _0x3cc5e7[_0x1150('0x1c')]===_0x1150('0x1b');var _0x378eb8=_0x146d70[_0x1150('0x1d')];var _0x35664d=_0x54df42?0x0:_0x3cc5e7['offset'];var _0x517569=_0x54df42?_0x146d70[_0x1150('0x1d')]:_0x3cc5e7[_0x1150('0x1a')]+_0x3cc5e7['limit'];var _0x1bac5b;if(_0x517569>=_0x378eb8){_0x517569=_0x378eb8;_0x1bac5b=0xc8;}else{_0x1bac5b=0xce;}_0x498bab['status'](_0x1bac5b);return _0x498bab[_0x1150('0x1e')]('Content-Range',_0x35664d+'-'+_0x517569+'/'+_0x378eb8)[_0x1150('0x1f')](_0x146d70);}return null;};}function patchUpdates(_0x4bdae2){return function(_0x5a96f8){try{jsonpatch[_0x1150('0x20')](_0x5a96f8,_0x4bdae2,!![]);}catch(_0x2f4fec){return BPromise[_0x1150('0x21')](_0x2f4fec);}return _0x5a96f8[_0x1150('0x22')]();};}function saveUpdates(_0xd10701,_0x3e25da){return function(_0x3f5fcf){if(_0x3f5fcf){return _0x3f5fcf['update'](_0xd10701)['then'](function(_0x30ca9c){return _0x30ca9c;});}return null;};}function removeEntity(_0x28b396,_0x37da51){return function(_0x440b93){if(_0x440b93){return _0x440b93['destroy']()[_0x1150('0x23')](function(){_0x28b396[_0x1150('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b82ba,_0x497ef2){return function(_0x39b1bd){if(!_0x39b1bd){_0x4b82ba[_0x1150('0x17')](0x194);}return _0x39b1bd;};}function handleError(_0x5707ce,_0x2fbda8){_0x2fbda8=_0x2fbda8||0x1f4;return function(_0x1ebf83){logger['error'](_0x1ebf83[_0x1150('0x24')]);if(_0x1ebf83[_0x1150('0x25')]){delete _0x1ebf83[_0x1150('0x25')];}_0x5707ce[_0x1150('0x18')](_0x2fbda8)[_0x1150('0x26')](_0x1ebf83);};}exports[_0x1150('0x27')]=function(_0x213e81,_0x3a88df){var _0x4ad8f3={},_0x32c245={},_0x3b67f9={'count':0x0,'rows':[]};var _0x26f6dd=_[_0x1150('0x28')](db[_0x1150('0x29')]['rawAttributes'],function(_0x1e3691){return{'name':_0x1e3691[_0x1150('0x2a')],'type':_0x1e3691[_0x1150('0x2b')]['key']};});_0x32c245['model']=_[_0x1150('0x28')](_0x26f6dd,_0x1150('0x25'));_0x32c245[_0x1150('0x2c')]=_[_0x1150('0x2d')](_0x213e81[_0x1150('0x2c')]);_0x32c245[_0x1150('0x2e')]=_[_0x1150('0x2f')](_0x32c245['model'],_0x32c245[_0x1150('0x2c')]);_0x4ad8f3[_0x1150('0x30')]=_['intersection'](_0x32c245[_0x1150('0x31')],qs['fields'](_0x213e81['query'][_0x1150('0x32')]));_0x4ad8f3[_0x1150('0x30')]=_0x4ad8f3[_0x1150('0x30')][_0x1150('0x33')]?_0x4ad8f3['attributes']:_0x32c245[_0x1150('0x31')];if(!_0x213e81[_0x1150('0x2c')][_0x1150('0x34')](_0x1150('0x35'))){_0x4ad8f3[_0x1150('0x1c')]=qs[_0x1150('0x1c')](_0x213e81[_0x1150('0x2c')]['limit']);_0x4ad8f3[_0x1150('0x1a')]=qs[_0x1150('0x1a')](_0x213e81[_0x1150('0x2c')]['offset']);}_0x4ad8f3[_0x1150('0x36')]=qs[_0x1150('0x37')](_0x213e81[_0x1150('0x2c')]['sort']);_0x4ad8f3['where']=qs[_0x1150('0x2e')](_[_0x1150('0x38')](_0x213e81[_0x1150('0x2c')],_0x32c245['filters']),_0x26f6dd);if(_0x213e81['query'][_0x1150('0x39')]){_0x4ad8f3[_0x1150('0x3a')]=_['merge'](_0x4ad8f3[_0x1150('0x3a')],{'$or':_[_0x1150('0x28')](_0x26f6dd,function(_0x1435d3){if(_0x1435d3['type']!=='VIRTUAL'){var _0x10572e={};_0x10572e[_0x1435d3[_0x1150('0x25')]]={'$like':'%'+_0x213e81['query'][_0x1150('0x39')]+'%'};return _0x10572e;}})});}_0x4ad8f3=_[_0x1150('0x3b')]({},_0x4ad8f3,_0x213e81[_0x1150('0x3c')]);var _0x51e2cf={'where':_0x4ad8f3[_0x1150('0x3a')]};return db[_0x1150('0x29')][_0x1150('0x1d')](_0x51e2cf)[_0x1150('0x23')](function(_0x10429c){_0x3b67f9[_0x1150('0x1d')]=_0x10429c;if(_0x213e81[_0x1150('0x2c')][_0x1150('0x3d')]){_0x4ad8f3['include']=[{'all':!![]}];}return db[_0x1150('0x29')][_0x1150('0x3e')](_0x4ad8f3);})['then'](function(_0x3e56b6){_0x3b67f9[_0x1150('0x3f')]=_0x3e56b6;return _0x3b67f9;})[_0x1150('0x23')](respondWithFilteredResult(_0x3a88df,_0x4ad8f3))[_0x1150('0x40')](handleError(_0x3a88df,null));};exports[_0x1150('0x41')]=function(_0x15e483,_0x539cff){var _0x11a7ed={'raw':!![],'where':{'id':_0x15e483[_0x1150('0x42')]['id']}},_0x4db1cf={};_0x4db1cf['model']=_[_0x1150('0x2d')](db['JscriptyAnswerReport'][_0x1150('0x43')]);_0x4db1cf[_0x1150('0x2c')]=_[_0x1150('0x2d')](_0x15e483['query']);_0x4db1cf['filters']=_[_0x1150('0x2f')](_0x4db1cf[_0x1150('0x31')],_0x4db1cf['query']);_0x11a7ed[_0x1150('0x30')]=_[_0x1150('0x2f')](_0x4db1cf[_0x1150('0x31')],qs[_0x1150('0x32')](_0x15e483[_0x1150('0x2c')][_0x1150('0x32')]));_0x11a7ed[_0x1150('0x30')]=_0x11a7ed['attributes'][_0x1150('0x33')]?_0x11a7ed[_0x1150('0x30')]:_0x4db1cf[_0x1150('0x31')];if(_0x15e483['query'][_0x1150('0x3d')]){_0x11a7ed[_0x1150('0x44')]=[{'all':!![]}];}_0x11a7ed=_['merge']({},_0x11a7ed,_0x15e483['options']);return db[_0x1150('0x29')]['find'](_0x11a7ed)[_0x1150('0x23')](handleEntityNotFound(_0x539cff,null))[_0x1150('0x23')](respondWithResult(_0x539cff,null))[_0x1150('0x40')](handleError(_0x539cff,null));};exports['create']=function(_0x2160a0,_0x41f1eb){return db[_0x1150('0x29')][_0x1150('0x45')](_0x2160a0[_0x1150('0x46')],{})[_0x1150('0x23')](respondWithResult(_0x41f1eb,0xc9))[_0x1150('0x40')](handleError(_0x41f1eb,null));};exports[_0x1150('0x47')]=function(_0xedd0b7,_0x4f10a1){if(_0xedd0b7[_0x1150('0x46')]['id']){delete _0xedd0b7[_0x1150('0x46')]['id'];}return db['JscriptyAnswerReport']['find']({'where':{'id':_0xedd0b7[_0x1150('0x42')]['id']}})['then'](handleEntityNotFound(_0x4f10a1,null))['then'](saveUpdates(_0xedd0b7['body'],null))[_0x1150('0x23')](respondWithResult(_0x4f10a1,null))[_0x1150('0x40')](handleError(_0x4f10a1,null));};exports['destroy']=function(_0x18bf8b,_0x3e77f1){return db[_0x1150('0x29')]['find']({'where':{'id':_0x18bf8b[_0x1150('0x42')]['id']}})[_0x1150('0x23')](handleEntityNotFound(_0x3e77f1,null))['then'](removeEntity(_0x3e77f1,null))[_0x1150('0x40')](handleError(_0x3e77f1,null));};exports[_0x1150('0x48')]=function(_0x1f9062,_0x357854){return db[_0x1150('0x29')]['describe']()['then'](respondWithResult(_0x357854,null))[_0x1150('0x40')](handleError(_0x357854,null));};
\ No newline at end of file
+var _0xed1f=['where','pick','filter','merge','options','includeAll','include','findAll','rows','then','catch','show','params','keys','create','body','find','describe','eml-format','rimraf','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','error','name','index','map','JscriptyAnswerReport','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort'];(function(_0x2b3868,_0x4a1864){var _0x405e67=function(_0x120bf1){while(--_0x120bf1){_0x2b3868['push'](_0x2b3868['shift']());}};_0x405e67(++_0x4a1864);}(_0xed1f,0x170));var _0xfed1=function(_0x26462c,_0xd20a35){_0x26462c=_0x26462c-0x0;var _0x509a42=_0xed1f[_0x26462c];return _0x509a42;};'use strict';var emlformat=require(_0xfed1('0x0'));var rimraf=require(_0xfed1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfed1('0x2'));var moment=require('moment');var BPromise=require(_0xfed1('0x3'));var Mustache=require('mustache');var util=require(_0xfed1('0x4'));var path=require(_0xfed1('0x5'));var sox=require(_0xfed1('0x6'));var csv=require(_0xfed1('0x7'));var ejs=require(_0xfed1('0x8'));var fs=require('fs');var fs_extra=require(_0xfed1('0x9'));var _=require(_0xfed1('0xa'));var squel=require(_0xfed1('0xb'));var crypto=require(_0xfed1('0xc'));var jsforce=require(_0xfed1('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfed1('0x7'));var querystring=require(_0xfed1('0xe'));var Papa=require(_0xfed1('0xf'));var Redis=require('ioredis');var authService=require(_0xfed1('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfed1('0x11'));var logger=require(_0xfed1('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xfed1('0x13'));var licenseUtil=require(_0xfed1('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x56555a,_0x4e2e26){_0x4e2e26=_0x4e2e26||0xcc;return function(_0x250eb5){if(_0x250eb5){return _0x56555a[_0xfed1('0x15')](_0x4e2e26);}return _0x56555a[_0xfed1('0x16')](_0x4e2e26)[_0xfed1('0x17')]();};}function respondWithResult(_0x58277d,_0x3bb8f7){_0x3bb8f7=_0x3bb8f7||0xc8;return function(_0x3754c2){if(_0x3754c2){return _0x58277d['status'](_0x3bb8f7)['json'](_0x3754c2);}};}function respondWithFilteredResult(_0x176227,_0x38f652){return function(_0x306567){if(_0x306567){var _0x5ed220=typeof _0x38f652[_0xfed1('0x18')]===_0xfed1('0x19')&&typeof _0x38f652[_0xfed1('0x1a')]===_0xfed1('0x19');var _0x5ab809=_0x306567[_0xfed1('0x1b')];var _0x4c492e=_0x5ed220?0x0:_0x38f652[_0xfed1('0x18')];var _0x2b4cd7=_0x5ed220?_0x306567[_0xfed1('0x1b')]:_0x38f652[_0xfed1('0x18')]+_0x38f652[_0xfed1('0x1a')];var _0x2926ac;if(_0x2b4cd7>=_0x5ab809){_0x2b4cd7=_0x5ab809;_0x2926ac=0xc8;}else{_0x2926ac=0xce;}_0x176227[_0xfed1('0x16')](_0x2926ac);return _0x176227[_0xfed1('0x1c')](_0xfed1('0x1d'),_0x4c492e+'-'+_0x2b4cd7+'/'+_0x5ab809)['json'](_0x306567);}return null;};}function patchUpdates(_0xd7bfb7){return function(_0x491497){try{jsonpatch[_0xfed1('0x1e')](_0x491497,_0xd7bfb7,!![]);}catch(_0x3e5ada){return BPromise[_0xfed1('0x1f')](_0x3e5ada);}return _0x491497[_0xfed1('0x20')]();};}function saveUpdates(_0x1eb9cd,_0x4610fd){return function(_0x1748f5){if(_0x1748f5){return _0x1748f5[_0xfed1('0x21')](_0x1eb9cd)['then'](function(_0x578aaa){return _0x578aaa;});}return null;};}function removeEntity(_0xa6d6cf,_0x5c9385){return function(_0x36a818){if(_0x36a818){return _0x36a818[_0xfed1('0x22')]()['then'](function(){_0xa6d6cf[_0xfed1('0x16')](0xcc)[_0xfed1('0x17')]();});}};}function handleEntityNotFound(_0x472dbc,_0x5bce5d){return function(_0x1e8c3e){if(!_0x1e8c3e){_0x472dbc[_0xfed1('0x15')](0x194);}return _0x1e8c3e;};}function handleError(_0x5ec9c4,_0xa04122){_0xa04122=_0xa04122||0x1f4;return function(_0x40da7f){logger[_0xfed1('0x23')](_0x40da7f['stack']);if(_0x40da7f[_0xfed1('0x24')]){delete _0x40da7f[_0xfed1('0x24')];}_0x5ec9c4[_0xfed1('0x16')](_0xa04122)['send'](_0x40da7f);};}exports[_0xfed1('0x25')]=function(_0x46cf02,_0x411182){var _0x1867f6={},_0x221bf7={},_0x27635f={'count':0x0,'rows':[]};var _0x57e741=_[_0xfed1('0x26')](db[_0xfed1('0x27')]['rawAttributes'],function(_0x34e47b){return{'name':_0x34e47b[_0xfed1('0x28')],'type':_0x34e47b[_0xfed1('0x29')]['key']};});_0x221bf7[_0xfed1('0x2a')]=_[_0xfed1('0x26')](_0x57e741,_0xfed1('0x24'));_0x221bf7[_0xfed1('0x2b')]=_['keys'](_0x46cf02[_0xfed1('0x2b')]);_0x221bf7[_0xfed1('0x2c')]=_[_0xfed1('0x2d')](_0x221bf7[_0xfed1('0x2a')],_0x221bf7[_0xfed1('0x2b')]);_0x1867f6['attributes']=_[_0xfed1('0x2d')](_0x221bf7[_0xfed1('0x2a')],qs[_0xfed1('0x2e')](_0x46cf02[_0xfed1('0x2b')][_0xfed1('0x2e')]));_0x1867f6[_0xfed1('0x2f')]=_0x1867f6[_0xfed1('0x2f')][_0xfed1('0x30')]?_0x1867f6['attributes']:_0x221bf7['model'];if(!_0x46cf02['query'][_0xfed1('0x31')](_0xfed1('0x32'))){_0x1867f6['limit']=qs[_0xfed1('0x1a')](_0x46cf02['query']['limit']);_0x1867f6['offset']=qs[_0xfed1('0x18')](_0x46cf02[_0xfed1('0x2b')][_0xfed1('0x18')]);}_0x1867f6['order']=qs['sort'](_0x46cf02[_0xfed1('0x2b')][_0xfed1('0x33')]);_0x1867f6[_0xfed1('0x34')]=qs[_0xfed1('0x2c')](_[_0xfed1('0x35')](_0x46cf02[_0xfed1('0x2b')],_0x221bf7[_0xfed1('0x2c')]),_0x57e741);if(_0x46cf02['query'][_0xfed1('0x36')]){_0x1867f6['where']=_[_0xfed1('0x37')](_0x1867f6[_0xfed1('0x34')],{'$or':_['map'](_0x57e741,function(_0x3adf16){if(_0x3adf16[_0xfed1('0x29')]!=='VIRTUAL'){var _0x32e493={};_0x32e493[_0x3adf16[_0xfed1('0x24')]]={'$like':'%'+_0x46cf02['query']['filter']+'%'};return _0x32e493;}})});}_0x1867f6=_[_0xfed1('0x37')]({},_0x1867f6,_0x46cf02[_0xfed1('0x38')]);var _0x3ec842={'where':_0x1867f6[_0xfed1('0x34')]};return db['JscriptyAnswerReport'][_0xfed1('0x1b')](_0x3ec842)['then'](function(_0x44ef72){_0x27635f['count']=_0x44ef72;if(_0x46cf02[_0xfed1('0x2b')][_0xfed1('0x39')]){_0x1867f6[_0xfed1('0x3a')]=[{'all':!![]}];}return db[_0xfed1('0x27')][_0xfed1('0x3b')](_0x1867f6);})['then'](function(_0x3edf0d){_0x27635f[_0xfed1('0x3c')]=_0x3edf0d;return _0x27635f;})[_0xfed1('0x3d')](respondWithFilteredResult(_0x411182,_0x1867f6))[_0xfed1('0x3e')](handleError(_0x411182,null));};exports[_0xfed1('0x3f')]=function(_0x5bff16,_0x2bc41f){var _0x1bac62={'raw':!![],'where':{'id':_0x5bff16[_0xfed1('0x40')]['id']}},_0x799206={};_0x799206[_0xfed1('0x2a')]=_[_0xfed1('0x41')](db[_0xfed1('0x27')]['rawAttributes']);_0x799206[_0xfed1('0x2b')]=_['keys'](_0x5bff16[_0xfed1('0x2b')]);_0x799206[_0xfed1('0x2c')]=_[_0xfed1('0x2d')](_0x799206[_0xfed1('0x2a')],_0x799206[_0xfed1('0x2b')]);_0x1bac62[_0xfed1('0x2f')]=_[_0xfed1('0x2d')](_0x799206['model'],qs[_0xfed1('0x2e')](_0x5bff16[_0xfed1('0x2b')]['fields']));_0x1bac62[_0xfed1('0x2f')]=_0x1bac62[_0xfed1('0x2f')][_0xfed1('0x30')]?_0x1bac62[_0xfed1('0x2f')]:_0x799206['model'];if(_0x5bff16[_0xfed1('0x2b')][_0xfed1('0x39')]){_0x1bac62[_0xfed1('0x3a')]=[{'all':!![]}];}_0x1bac62=_['merge']({},_0x1bac62,_0x5bff16['options']);return db['JscriptyAnswerReport']['find'](_0x1bac62)[_0xfed1('0x3d')](handleEntityNotFound(_0x2bc41f,null))[_0xfed1('0x3d')](respondWithResult(_0x2bc41f,null))[_0xfed1('0x3e')](handleError(_0x2bc41f,null));};exports[_0xfed1('0x42')]=function(_0x94bf5c,_0x5c9aab){return db['JscriptyAnswerReport'][_0xfed1('0x42')](_0x94bf5c[_0xfed1('0x43')],{})[_0xfed1('0x3d')](respondWithResult(_0x5c9aab,0xc9))['catch'](handleError(_0x5c9aab,null));};exports['update']=function(_0x6c2337,_0x181063){if(_0x6c2337[_0xfed1('0x43')]['id']){delete _0x6c2337[_0xfed1('0x43')]['id'];}return db[_0xfed1('0x27')][_0xfed1('0x44')]({'where':{'id':_0x6c2337['params']['id']}})[_0xfed1('0x3d')](handleEntityNotFound(_0x181063,null))['then'](saveUpdates(_0x6c2337[_0xfed1('0x43')],null))[_0xfed1('0x3d')](respondWithResult(_0x181063,null))['catch'](handleError(_0x181063,null));};exports['destroy']=function(_0x3c4d59,_0x47d49b){return db[_0xfed1('0x27')][_0xfed1('0x44')]({'where':{'id':_0x3c4d59['params']['id']}})[_0xfed1('0x3d')](handleEntityNotFound(_0x47d49b,null))[_0xfed1('0x3d')](removeEntity(_0x47d49b,null))['catch'](handleError(_0x47d49b,null));};exports[_0xfed1('0x45')]=function(_0x4683e7,_0x5120cd){return db['JscriptyAnswerReport'][_0xfed1('0x45')]()[_0xfed1('0x3d')](respondWithResult(_0x5120cd,null))[_0xfed1('0x3e')](handleError(_0x5120cd,null));};
\ No newline at end of file
index 1b40c61..6080145 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56dd=['JscriptyAnswerReport','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./jscriptyAnswerReport.attributes','exports','define'];(function(_0x5d4baa,_0x3d641f){var _0x19743b=function(_0x41d2ba){while(--_0x41d2ba){_0x5d4baa['push'](_0x5d4baa['shift']());}};_0x19743b(++_0x3d641f);}(_0x56dd,0x139));var _0xd56d=function(_0x41ac36,_0x3feb46){_0x41ac36=_0x41ac36-0x0;var _0x3dfb50=_0x56dd[_0x41ac36];return _0x3dfb50;};'use strict';var _=require(_0xd56d('0x0'));var util=require('util');var logger=require(_0xd56d('0x1'))(_0xd56d('0x2'));var moment=require(_0xd56d('0x3'));var BPromise=require(_0xd56d('0x4'));var rp=require(_0xd56d('0x5'));var fs=require('fs');var path=require(_0xd56d('0x6'));var rimraf=require(_0xd56d('0x7'));var config=require('../../config/environment');var attributes=require(_0xd56d('0x8'));module[_0xd56d('0x9')]=function(_0x1cc04d,_0x5d46cb){return _0x1cc04d[_0xd56d('0xa')](_0xd56d('0xb'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf91c=['lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','define','JscriptyAnswerReport'];(function(_0x45985a,_0x478aa3){var _0x3975f3=function(_0x356a26){while(--_0x356a26){_0x45985a['push'](_0x45985a['shift']());}};_0x3975f3(++_0x478aa3);}(_0xf91c,0x136));var _0xcf91=function(_0x3b2d81,_0x3a5ee8){_0x3b2d81=_0x3b2d81-0x0;var _0x1ac262=_0xf91c[_0x3b2d81];return _0x1ac262;};'use strict';var _=require(_0xcf91('0x0'));var util=require(_0xcf91('0x1'));var logger=require(_0xcf91('0x2'))('api');var moment=require(_0xcf91('0x3'));var BPromise=require(_0xcf91('0x4'));var rp=require(_0xcf91('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcf91('0x6'));var config=require(_0xcf91('0x7'));var attributes=require('./jscriptyAnswerReport.attributes');module['exports']=function(_0x1f2c3d,_0x18262b){return _0x1f2c3d[_0xcf91('0x8')](_0xcf91('0x9'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 985a271..6d42522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b23=['message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','JscriptyAnswerReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error'];(function(_0xf56197,_0x3da8f3){var _0x3dd377=function(_0x3fca02){while(--_0x3fca02){_0xf56197['push'](_0xf56197['shift']());}};_0x3dd377(++_0x3da8f3);}(_0x0b23,0x14d));var _0x30b2=function(_0x4694dd,_0x58a6c1){_0x4694dd=_0x4694dd-0x0;var _0xa2fbbc=_0x0b23[_0x4694dd];return _0xa2fbbc;};'use strict';var _=require(_0x30b2('0x0'));var util=require(_0x30b2('0x1'));var moment=require(_0x30b2('0x2'));var BPromise=require(_0x30b2('0x3'));var rs=require(_0x30b2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x30b2('0x5'))['db'];var utils=require(_0x30b2('0x6'));var logger=require('../../config/logger')(_0x30b2('0x7'));var config=require(_0x30b2('0x8'));var jayson=require(_0x30b2('0x9'));var client=jayson[_0x30b2('0xa')][_0x30b2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a49c4,_0x1ae1d6,_0xd6dade){return new BPromise(function(_0x12288c,_0x42bc83){return client['request'](_0x2a49c4,_0xd6dade)[_0x30b2('0xc')](function(_0x4d246e){logger[_0x30b2('0xd')](_0x30b2('0xe'),_0x1ae1d6,'request\x20sent');logger[_0x30b2('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x1ae1d6,_0x30b2('0x10'),JSON[_0x30b2('0x11')](_0x4d246e));if(_0x4d246e['error']){if(_0x4d246e[_0x30b2('0x12')]['code']===0x1f4){logger[_0x30b2('0x12')](_0x30b2('0xe'),_0x1ae1d6,_0x4d246e[_0x30b2('0x12')][_0x30b2('0x13')]);return _0x42bc83(_0x4d246e[_0x30b2('0x12')][_0x30b2('0x13')]);}logger[_0x30b2('0x12')](_0x30b2('0xe'),_0x1ae1d6,_0x4d246e[_0x30b2('0x12')][_0x30b2('0x13')]);return _0x12288c(_0x4d246e['error'][_0x30b2('0x13')]);}else{logger['info'](_0x30b2('0xe'),_0x1ae1d6,_0x30b2('0x10'));_0x12288c(_0x4d246e[_0x30b2('0x14')][_0x30b2('0x13')]);}})[_0x30b2('0x15')](function(_0x5e9e41){logger[_0x30b2('0x12')](_0x30b2('0xe'),_0x1ae1d6,_0x5e9e41);_0x42bc83(_0x5e9e41);});});}
\ No newline at end of file
+var _0x09eb=['request\x20sent','debug','stringify','error','code','message','catch','lodash','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','JscriptyAnswerReport,\x20%s,\x20%s'];(function(_0x5733d8,_0x9dfbe4){var _0x1282d6=function(_0x114a95){while(--_0x114a95){_0x5733d8['push'](_0x5733d8['shift']());}};_0x1282d6(++_0x9dfbe4);}(_0x09eb,0x97));var _0xb09e=function(_0x8e8ca7,_0x5a5e07){_0x8e8ca7=_0x8e8ca7-0x0;var _0x561381=_0x09eb[_0x8e8ca7];return _0x561381;};'use strict';var _=require(_0xb09e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb09e('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb09e('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xb09e('0x3'))(_0xb09e('0x4'));var config=require(_0xb09e('0x5'));var jayson=require(_0xb09e('0x6'));var client=jayson[_0xb09e('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2976a1,_0x308fde,_0x48882d){return new BPromise(function(_0x3b85ad,_0xc6d23e){return client[_0xb09e('0x8')](_0x2976a1,_0x48882d)[_0xb09e('0x9')](function(_0x556437){logger['info'](_0xb09e('0xa'),_0x308fde,_0xb09e('0xb'));logger[_0xb09e('0xc')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x308fde,_0xb09e('0xb'),JSON[_0xb09e('0xd')](_0x556437));if(_0x556437[_0xb09e('0xe')]){if(_0x556437[_0xb09e('0xe')][_0xb09e('0xf')]===0x1f4){logger[_0xb09e('0xe')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x308fde,_0x556437[_0xb09e('0xe')]['message']);return _0xc6d23e(_0x556437['error'][_0xb09e('0x10')]);}logger[_0xb09e('0xe')](_0xb09e('0xa'),_0x308fde,_0x556437['error'][_0xb09e('0x10')]);return _0x3b85ad(_0x556437[_0xb09e('0xe')][_0xb09e('0x10')]);}else{logger['info'](_0xb09e('0xa'),_0x308fde,_0xb09e('0xb'));_0x3b85ad(_0x556437['result'][_0xb09e('0x10')]);}})[_0xb09e('0x11')](function(_0x592c96){logger['error'](_0xb09e('0xa'),_0x308fde,_0x592c96);_0xc6d23e(_0x592c96);});});}
\ No newline at end of file
index c314a23..fa7da23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebeb=['getSessions','/:id/answers','getAnswers','/:id/summary','30s','getSummary','post','/:id/clone','clone','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','index','show','/:id/sessions'];(function(_0x26eb78,_0x571a8c){var _0xfbe852=function(_0x4fdb5b){while(--_0x4fdb5b){_0x26eb78['push'](_0x26eb78['shift']());}};_0xfbe852(++_0x571a8c);}(_0xebeb,0x131));var _0xbebe=function(_0xdcdce9,_0x210041){_0xdcdce9=_0xdcdce9-0x0;var _0x2f8997=_0xebeb[_0xdcdce9];return _0x2f8997;};'use strict';var multer=require('multer');var util=require(_0xbebe('0x0'));var path=require(_0xbebe('0x1'));var timeout=require(_0xbebe('0x2'));var express=require(_0xbebe('0x3'));var router=express[_0xbebe('0x4')]();var fs_extra=require(_0xbebe('0x5'));var auth=require(_0xbebe('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xbebe('0x7'));var controller=require(_0xbebe('0x8'));router[_0xbebe('0x9')]('/',auth[_0xbebe('0xa')](),controller[_0xbebe('0xb')]);router[_0xbebe('0x9')]('/:id',auth[_0xbebe('0xa')](),controller[_0xbebe('0xc')]);router['get'](_0xbebe('0xd'),auth[_0xbebe('0xa')](),controller[_0xbebe('0xe')]);router[_0xbebe('0x9')](_0xbebe('0xf'),auth[_0xbebe('0xa')](),controller[_0xbebe('0x10')]);router['get'](_0xbebe('0x11'),auth[_0xbebe('0xa')](),timeout(_0xbebe('0x12')),controller[_0xbebe('0x13')]);router['post']('/',auth[_0xbebe('0xa')](),controller['create']);router[_0xbebe('0x14')](_0xbebe('0x15'),auth[_0xbebe('0xa')](),controller[_0xbebe('0x16')]);router[_0xbebe('0x17')](_0xbebe('0x18'),auth[_0xbebe('0xa')](),controller[_0xbebe('0x19')]);router[_0xbebe('0x1a')](_0xbebe('0x18'),auth[_0xbebe('0xa')](),controller[_0xbebe('0x1b')]);module[_0xbebe('0x1c')]=router;
\ No newline at end of file
+var _0xd2c4=['fs-extra','../../components/auth/service','./jscriptyProject.controller','get','isAuthenticated','/:id','show','/:id/sessions','getSessions','/:id/answers','getAnswers','/:id/summary','30s','post','create','/:id/clone','clone','put','delete','destroy','exports','multer','path','express','Router'];(function(_0x3585af,_0x355a65){var _0x51ade6=function(_0x3518c3){while(--_0x3518c3){_0x3585af['push'](_0x3585af['shift']());}};_0x51ade6(++_0x355a65);}(_0xd2c4,0x1d7));var _0x4d2c=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xd2c4[_0x3ce3c];return _0x55a2c9;};'use strict';var multer=require(_0x4d2c('0x0'));var util=require('util');var path=require(_0x4d2c('0x1'));var timeout=require('connect-timeout');var express=require(_0x4d2c('0x2'));var router=express[_0x4d2c('0x3')]();var fs_extra=require(_0x4d2c('0x4'));var auth=require(_0x4d2c('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4d2c('0x6'));router[_0x4d2c('0x7')]('/',auth[_0x4d2c('0x8')](),controller['index']);router['get'](_0x4d2c('0x9'),auth[_0x4d2c('0x8')](),controller[_0x4d2c('0xa')]);router['get'](_0x4d2c('0xb'),auth['isAuthenticated'](),controller[_0x4d2c('0xc')]);router['get'](_0x4d2c('0xd'),auth[_0x4d2c('0x8')](),controller[_0x4d2c('0xe')]);router[_0x4d2c('0x7')](_0x4d2c('0xf'),auth[_0x4d2c('0x8')](),timeout(_0x4d2c('0x10')),controller['getSummary']);router[_0x4d2c('0x11')]('/',auth['isAuthenticated'](),controller[_0x4d2c('0x12')]);router[_0x4d2c('0x11')](_0x4d2c('0x13'),auth['isAuthenticated'](),controller[_0x4d2c('0x14')]);router[_0x4d2c('0x15')](_0x4d2c('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x4d2c('0x16')](_0x4d2c('0x9'),auth[_0x4d2c('0x8')](),controller[_0x4d2c('0x17')]);module[_0x4d2c('0x18')]=router;
\ No newline at end of file
index 638c83e..a4816b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4825=['isObjectLike','setDataValue','formData','stringify','isString','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','description','BOOLEAN','sequelize','lodash','exports','name','STRING','TEXT','long'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x4825,0xf9));var _0x5482=function(_0x1cceb6,_0x123dfb){_0x1cceb6=_0x1cceb6-0x0;var _0x431a22=_0x4825[_0x1cceb6];return _0x431a22;};'use strict';var Sequelize=require(_0x5482('0x0'));var _=require(_0x5482('0x1'));var util=require('util');module[_0x5482('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x5482('0x3')},'description':{'type':Sequelize[_0x5482('0x4')]},'formData':{'type':Sequelize[_0x5482('0x5')](_0x5482('0x6')),'set':function(_0x597296){if(_[_0x5482('0x7')](_0x597296)){this[_0x5482('0x8')](_0x5482('0x9'),JSON[_0x5482('0xa')](_0x597296));}else if(_[_0x5482('0xb')](_0x597296)){this[_0x5482('0x8')]('formData',_0x597296);}else{this[_0x5482('0x8')]('formData',util[_0x5482('0xc')](_0x5482('0xd'),this['getDataValue'](_0x5482('0x3'))||'',this['getDataValue'](_0x5482('0xe'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x5482('0xf')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6173=['TEXT','long','isObjectLike','formData','stringify','isString','setDataValue','format','getDataValue','description','BOOLEAN','lodash','util','name','STRING'];(function(_0x48dd92,_0x51b3f1){var _0x679d10=function(_0x11d6e3){while(--_0x11d6e3){_0x48dd92['push'](_0x48dd92['shift']());}};_0x679d10(++_0x51b3f1);}(_0x6173,0x128));var _0x3617=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x6173[_0x160c73];return _0xd9302;};'use strict';var Sequelize=require('sequelize');var _=require(_0x3617('0x0'));var util=require(_0x3617('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x3617('0x2')},'description':{'type':Sequelize[_0x3617('0x3')]},'formData':{'type':Sequelize[_0x3617('0x4')](_0x3617('0x5')),'set':function(_0x491be3){if(_[_0x3617('0x6')](_0x491be3)){this['setDataValue'](_0x3617('0x7'),JSON[_0x3617('0x8')](_0x491be3));}else if(_[_0x3617('0x9')](_0x491be3)){this[_0x3617('0xa')](_0x3617('0x7'),_0x491be3);}else{this['setDataValue'](_0x3617('0x7'),util[_0x3617('0xb')]('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0x3617('0xc')](_0x3617('0x2'))||'',this[_0x3617('0xc')](_0x3617('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x3617('0xe')],'defaultValue':![]}};
\ No newline at end of file
index 3a848ad..7573697 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce3=['destroy','then','get','Projects','UserProfileResource','error','stack','name','send','index','map','JscriptyProject','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','merge','VIRTUAL','filter','options','includeAll','rows','catch','params','rawAttributes','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','clone','createdAt','updatedAt','omit','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','JscriptySessionReport','ProjectId','findAll','getAnswers','findOne','JscriptyAnswerReport','sort','number','toString','indexOf','replace','getSummary','parse','startTime','JscriptyQuestionReport','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','push','now','writeFileSync','format','setHeader','Content-disposition','attachment;\x20filename=','Content-type','text/csv','download','/tmp/Jscripty_Project_%d_Summary_%s.csv','sendStatus','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','offset','undefined','limit','count','set','json','apply','reject','update'];(function(_0x5a6e58,_0x1e52a7){var _0x33e3d3=function(_0x1db2c6){while(--_0x1db2c6){_0x5a6e58['push'](_0x5a6e58['shift']());}};_0x33e3d3(++_0x1e52a7);}(_0x8ce3,0x1b9));var _0x38ce=function(_0x1c4b8d,_0x146a41){_0x1c4b8d=_0x1c4b8d-0x0;var _0x203346=_0x8ce3[_0x1c4b8d];return _0x203346;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x38ce('0x0'));var zipdir=require(_0x38ce('0x1'));var jsonpatch=require(_0x38ce('0x2'));var rp=require(_0x38ce('0x3'));var moment=require(_0x38ce('0x4'));var BPromise=require(_0x38ce('0x5'));var Mustache=require('mustache');var util=require(_0x38ce('0x6'));var path=require(_0x38ce('0x7'));var sox=require(_0x38ce('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x38ce('0x9'));var squel=require(_0x38ce('0xa'));var crypto=require(_0x38ce('0xb'));var jsforce=require(_0x38ce('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x38ce('0xd'));var querystring=require(_0x38ce('0xe'));var Papa=require(_0x38ce('0xf'));var Redis=require(_0x38ce('0x10'));var authService=require(_0x38ce('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x38ce('0x12'));var hardwareService=require(_0x38ce('0x13'));var logger=require(_0x38ce('0x14'))(_0x38ce('0x15'));var utils=require(_0x38ce('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x38ce('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e116b,_0x1fb8db){_0x1fb8db=_0x1fb8db||0xcc;return function(_0x4fa946){if(_0x4fa946){return _0x1e116b['sendStatus'](_0x1fb8db);}return _0x1e116b[_0x38ce('0x18')](_0x1fb8db)[_0x38ce('0x19')]();};}function respondWithResult(_0x1db4fa,_0x2ee659){_0x2ee659=_0x2ee659||0xc8;return function(_0x3fc044){if(_0x3fc044){return _0x1db4fa[_0x38ce('0x18')](_0x2ee659)['json'](_0x3fc044);}};}function respondWithFilteredResult(_0x40cef4,_0x143578){return function(_0x2d4333){if(_0x2d4333){var _0x13b7a2=typeof _0x143578[_0x38ce('0x1a')]===_0x38ce('0x1b')&&typeof _0x143578[_0x38ce('0x1c')]===_0x38ce('0x1b');var _0x5c11bd=_0x2d4333[_0x38ce('0x1d')];var _0x4cc437=_0x13b7a2?0x0:_0x143578[_0x38ce('0x1a')];var _0x4dff53=_0x13b7a2?_0x2d4333[_0x38ce('0x1d')]:_0x143578[_0x38ce('0x1a')]+_0x143578['limit'];var _0x2c07fe;if(_0x4dff53>=_0x5c11bd){_0x4dff53=_0x5c11bd;_0x2c07fe=0xc8;}else{_0x2c07fe=0xce;}_0x40cef4['status'](_0x2c07fe);return _0x40cef4[_0x38ce('0x1e')]('Content-Range',_0x4cc437+'-'+_0x4dff53+'/'+_0x5c11bd)[_0x38ce('0x1f')](_0x2d4333);}return null;};}function patchUpdates(_0x239870){return function(_0x31d72e){try{jsonpatch[_0x38ce('0x20')](_0x31d72e,_0x239870,!![]);}catch(_0xf1c9dc){return BPromise[_0x38ce('0x21')](_0xf1c9dc);}return _0x31d72e['save']();};}function saveUpdates(_0x15b1a7,_0x3d691e){return function(_0x250502){if(_0x250502){return _0x250502[_0x38ce('0x22')](_0x15b1a7)['then'](function(_0x3bde0d){return _0x3bde0d;});}return null;};}function removeEntity(_0x248491,_0x59d51c){return function(_0x360299){if(_0x360299){return _0x360299[_0x38ce('0x23')]()[_0x38ce('0x24')](function(){var _0x4d0adf=_0x360299[_0x38ce('0x25')]({'plain':!![]});var _0x5a5564=_0x38ce('0x26');return db[_0x38ce('0x27')][_0x38ce('0x23')]({'where':{'type':_0x5a5564,'resourceId':_0x4d0adf['id']}})[_0x38ce('0x24')](function(){return _0x360299;});})[_0x38ce('0x24')](function(){_0x248491[_0x38ce('0x18')](0xcc)[_0x38ce('0x19')]();});}};}function handleEntityNotFound(_0x4bf539,_0x19edf6){return function(_0x2202dd){if(!_0x2202dd){_0x4bf539['sendStatus'](0x194);}return _0x2202dd;};}function handleError(_0x53d4fe,_0x35a5fb){_0x35a5fb=_0x35a5fb||0x1f4;return function(_0xf29eb2){logger[_0x38ce('0x28')](_0xf29eb2[_0x38ce('0x29')]);if(_0xf29eb2[_0x38ce('0x2a')]){delete _0xf29eb2[_0x38ce('0x2a')];}_0x53d4fe[_0x38ce('0x18')](_0x35a5fb)[_0x38ce('0x2b')](_0xf29eb2);};}exports[_0x38ce('0x2c')]=function(_0x26eefa,_0x2941bc){var _0x536577={},_0x1156fc={},_0x588f05={'count':0x0,'rows':[]};var _0x38cd52=_[_0x38ce('0x2d')](db[_0x38ce('0x2e')]['rawAttributes'],function(_0x210bed){return{'name':_0x210bed[_0x38ce('0x2f')],'type':_0x210bed[_0x38ce('0x30')][_0x38ce('0x31')]};});_0x1156fc['model']=_[_0x38ce('0x2d')](_0x38cd52,_0x38ce('0x2a'));_0x1156fc[_0x38ce('0x32')]=_[_0x38ce('0x33')](_0x26eefa[_0x38ce('0x32')]);_0x1156fc[_0x38ce('0x34')]=_[_0x38ce('0x35')](_0x1156fc[_0x38ce('0x36')],_0x1156fc[_0x38ce('0x32')]);_0x536577[_0x38ce('0x37')]=_[_0x38ce('0x35')](_0x1156fc[_0x38ce('0x36')],qs[_0x38ce('0x38')](_0x26eefa[_0x38ce('0x32')][_0x38ce('0x38')]));_0x536577[_0x38ce('0x37')]=_0x536577['attributes'][_0x38ce('0x39')]?_0x536577['attributes']:_0x1156fc['model'];if(!_0x26eefa['query'][_0x38ce('0x3a')](_0x38ce('0x3b'))){_0x536577[_0x38ce('0x1c')]=qs['limit'](_0x26eefa['query'][_0x38ce('0x1c')]);_0x536577[_0x38ce('0x1a')]=qs[_0x38ce('0x1a')](_0x26eefa[_0x38ce('0x32')][_0x38ce('0x1a')]);}_0x536577[_0x38ce('0x3c')]=qs['sort'](_0x26eefa[_0x38ce('0x32')]['sort']);_0x536577[_0x38ce('0x3d')]=qs[_0x38ce('0x34')](_[_0x38ce('0x3e')](_0x26eefa[_0x38ce('0x32')],_0x1156fc[_0x38ce('0x34')]),_0x38cd52);if(_0x26eefa['query']['filter']){_0x536577[_0x38ce('0x3d')]=_[_0x38ce('0x3f')](_0x536577['where'],{'$or':_[_0x38ce('0x2d')](_0x38cd52,function(_0x22dce3){if(_0x22dce3[_0x38ce('0x30')]!==_0x38ce('0x40')){var _0x8bb4f7={};_0x8bb4f7[_0x22dce3[_0x38ce('0x2a')]]={'$like':'%'+_0x26eefa[_0x38ce('0x32')][_0x38ce('0x41')]+'%'};return _0x8bb4f7;}})});}_0x536577=_[_0x38ce('0x3f')]({},_0x536577,_0x26eefa[_0x38ce('0x42')]);var _0x648c04={'where':_0x536577[_0x38ce('0x3d')]};return db[_0x38ce('0x2e')][_0x38ce('0x1d')](_0x648c04)[_0x38ce('0x24')](function(_0x3f8d66){_0x588f05[_0x38ce('0x1d')]=_0x3f8d66;if(_0x26eefa[_0x38ce('0x32')][_0x38ce('0x43')]){_0x536577['include']=[{'all':!![]}];}return db['JscriptyProject']['findAll'](_0x536577);})[_0x38ce('0x24')](function(_0x2005fd){_0x588f05[_0x38ce('0x44')]=_0x2005fd;return _0x588f05;})['then'](respondWithFilteredResult(_0x2941bc,_0x536577))[_0x38ce('0x45')](handleError(_0x2941bc,null));};exports['show']=function(_0x4c16f4,_0x3ce828){var _0x52be9c={'raw':![],'where':{'id':_0x4c16f4[_0x38ce('0x46')]['id']}},_0x36360d={};_0x36360d[_0x38ce('0x36')]=_[_0x38ce('0x33')](db[_0x38ce('0x2e')][_0x38ce('0x47')]);_0x36360d[_0x38ce('0x32')]=_[_0x38ce('0x33')](_0x4c16f4['query']);_0x36360d[_0x38ce('0x34')]=_[_0x38ce('0x35')](_0x36360d[_0x38ce('0x36')],_0x36360d[_0x38ce('0x32')]);_0x52be9c[_0x38ce('0x37')]=_[_0x38ce('0x35')](_0x36360d[_0x38ce('0x36')],qs[_0x38ce('0x38')](_0x4c16f4[_0x38ce('0x32')][_0x38ce('0x38')]));_0x52be9c[_0x38ce('0x37')]=_0x52be9c[_0x38ce('0x37')][_0x38ce('0x39')]?_0x52be9c[_0x38ce('0x37')]:_0x36360d[_0x38ce('0x36')];if(_0x4c16f4[_0x38ce('0x32')][_0x38ce('0x43')]){_0x52be9c[_0x38ce('0x48')]=[{'all':!![]}];}_0x52be9c=_['merge']({},_0x52be9c,_0x4c16f4[_0x38ce('0x42')]);return db['JscriptyProject'][_0x38ce('0x49')](_0x52be9c)[_0x38ce('0x24')](handleEntityNotFound(_0x3ce828,null))['then'](respondWithResult(_0x3ce828,null))[_0x38ce('0x45')](handleError(_0x3ce828,null));};exports[_0x38ce('0x4a')]=function(_0x5d9179,_0x86d1c3){return db['JscriptyProject'][_0x38ce('0x4a')](_0x5d9179[_0x38ce('0x4b')],{})['then'](function(_0x2b50e5){var _0x5556e1=_0x5d9179[_0x38ce('0x4c')][_0x38ce('0x25')]({'plain':!![]});if(!_0x5556e1)throw new Error(_0x38ce('0x4d'));if(_0x5556e1[_0x38ce('0x4e')]===_0x38ce('0x4c')){var _0x1ba657=_0x2b50e5[_0x38ce('0x25')]({'plain':!![]});var _0x11541a=_0x38ce('0x26');return db[_0x38ce('0x4f')]['find']({'where':{'name':_0x11541a,'userProfileId':_0x5556e1[_0x38ce('0x50')]},'raw':!![]})[_0x38ce('0x24')](function(_0xd12a5){if(_0xd12a5&&_0xd12a5[_0x38ce('0x51')]===0x0){return db[_0x38ce('0x27')][_0x38ce('0x4a')]({'name':_0x1ba657['name'],'resourceId':_0x1ba657['id'],'type':_0xd12a5['name'],'sectionId':_0xd12a5['id']},{})[_0x38ce('0x24')](function(){return _0x2b50e5;});}else{return _0x2b50e5;}})[_0x38ce('0x45')](function(_0x1ebe26){logger[_0x38ce('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ebe26);throw _0x1ebe26;});}return _0x2b50e5;})[_0x38ce('0x24')](respondWithResult(_0x86d1c3,0xc9))['catch'](handleError(_0x86d1c3,null));};exports[_0x38ce('0x52')]=function(_0x1cfc14,_0x4f28ed){var _0xe02dff={'where':{'id':_0x1cfc14[_0x38ce('0x46')]['id']}},_0x4b8b5e={};_0x4b8b5e[_0x38ce('0x36')]=_['keys'](db[_0x38ce('0x2e')][_0x38ce('0x47')]);_0xe02dff[_0x38ce('0x37')]=_['intersection'](_0x4b8b5e['model'],qs['fields'](_0x1cfc14['query'][_0x38ce('0x38')]));_0xe02dff[_0x38ce('0x37')]=_0xe02dff[_0x38ce('0x37')][_0x38ce('0x39')]?_0xe02dff[_0x38ce('0x37')]:_0x4b8b5e['model'];if(_0x1cfc14['query']['includeAll']){_0xe02dff[_0x38ce('0x48')]=[{'all':!![]}];}_0xe02dff=_[_0x38ce('0x3f')]({},_0xe02dff,_0x1cfc14[_0x38ce('0x42')]);return db[_0x38ce('0x2e')][_0x38ce('0x49')](_0xe02dff)['then'](handleEntityNotFound(_0x4f28ed,null))['then'](function(_0x2a42b6){if(_0x2a42b6){var _0x23d4d8=_0x2a42b6[_0x38ce('0x25')]({'plain':!![]});_0x23d4d8=qs['omit'](_0x23d4d8,['id',_0x38ce('0x53'),_0x38ce('0x54')]);_0x1cfc14['body']=_[_0x38ce('0x55')](_0x1cfc14['body'],['id',_0x38ce('0x53'),'updatedAt']);return db[_0x38ce('0x2e')][_0x38ce('0x4a')](_['merge'](_0x23d4d8,_0x1cfc14[_0x38ce('0x4b')]),{'include':_0x1cfc14[_0x38ce('0x32')][_0x38ce('0x43')]?[{'all':!![]}]:undefined})[_0x38ce('0x24')](function(_0x516535){var _0x3a7475=_0x1cfc14['user'][_0x38ce('0x25')]({'plain':!![]});if(!_0x3a7475)throw new Error(_0x38ce('0x4d'));if(_0x3a7475[_0x38ce('0x4e')]===_0x38ce('0x4c')){var _0x53719e=_0x516535[_0x38ce('0x25')]({'plain':!![]});var _0x323db2='Projects';return db['UserProfileSection'][_0x38ce('0x49')]({'where':{'name':_0x323db2,'userProfileId':_0x3a7475[_0x38ce('0x50')]},'raw':!![]})[_0x38ce('0x24')](function(_0x2ed32f){if(_0x2ed32f&&_0x2ed32f[_0x38ce('0x51')]===0x0){return db[_0x38ce('0x27')][_0x38ce('0x4a')]({'name':_0x53719e['name'],'resourceId':_0x53719e['id'],'type':_0x2ed32f['name'],'sectionId':_0x2ed32f['id']},{})[_0x38ce('0x24')](function(){return _0x516535;});}else{return _0x516535;}})[_0x38ce('0x45')](function(_0x5ed12f){logger[_0x38ce('0x28')](_0x38ce('0x56'),_0x5ed12f);throw _0x5ed12f;});}return _0x516535;});}})[_0x38ce('0x24')](respondWithResult(_0x4f28ed,0xc9))[_0x38ce('0x45')](handleError(_0x4f28ed,null));};exports[_0x38ce('0x22')]=function(_0x24ebd2,_0x3250f0){if(_0x24ebd2[_0x38ce('0x4b')]['id']){delete _0x24ebd2[_0x38ce('0x4b')]['id'];}return db[_0x38ce('0x2e')]['find']({'where':{'id':_0x24ebd2['params']['id']}})[_0x38ce('0x24')](handleEntityNotFound(_0x3250f0,null))[_0x38ce('0x24')](saveUpdates(_0x24ebd2[_0x38ce('0x4b')],null))[_0x38ce('0x24')](respondWithResult(_0x3250f0,null))['catch'](handleError(_0x3250f0,null));};exports[_0x38ce('0x23')]=function(_0x4392dc,_0x15c671){return db[_0x38ce('0x2e')]['find']({'where':{'id':_0x4392dc[_0x38ce('0x46')]['id']}})['then'](handleEntityNotFound(_0x15c671,null))[_0x38ce('0x24')](removeEntity(_0x15c671,null))['catch'](handleError(_0x15c671,null));};exports['getSessions']=function(_0x50d2ec,_0x57526e,_0x441d2f){var _0x110aa3={'raw':!![],'where':{}};var _0x25d6ec={};var _0x1f173f={'count':0x0,'rows':[]};return db[_0x38ce('0x2e')]['findOne']({'where':{'id':_0x50d2ec[_0x38ce('0x46')]['id']}})[_0x38ce('0x24')](handleEntityNotFound(_0x57526e,null))['then'](function(_0xd7e25e){if(_0xd7e25e){_0x25d6ec['model']=_['keys'](db[_0x38ce('0x57')]['rawAttributes']);_0x25d6ec['query']=_[_0x38ce('0x33')](_0x50d2ec[_0x38ce('0x32')]);_0x25d6ec['filters']=_[_0x38ce('0x35')](_0x25d6ec['model'],_0x25d6ec[_0x38ce('0x32')]);_0x110aa3[_0x38ce('0x37')]=_[_0x38ce('0x35')](_0x25d6ec[_0x38ce('0x36')],qs[_0x38ce('0x38')](_0x50d2ec[_0x38ce('0x32')][_0x38ce('0x38')]));_0x110aa3[_0x38ce('0x37')]=_0x110aa3[_0x38ce('0x37')][_0x38ce('0x39')]?_0x110aa3[_0x38ce('0x37')]:_0x25d6ec[_0x38ce('0x36')];if(!_0x50d2ec[_0x38ce('0x32')][_0x38ce('0x3a')](_0x38ce('0x3b'))){_0x110aa3[_0x38ce('0x1c')]=qs['limit'](_0x50d2ec[_0x38ce('0x32')]['limit']);_0x110aa3['offset']=qs[_0x38ce('0x1a')](_0x50d2ec[_0x38ce('0x32')]['offset']);}_0x110aa3['order']=qs['sort'](_0x50d2ec[_0x38ce('0x32')]['sort']);_0x110aa3[_0x38ce('0x3d')]=qs['filters'](_['pick'](_0x50d2ec['query'],_0x25d6ec[_0x38ce('0x34')]));_0x110aa3[_0x38ce('0x3d')][_0x38ce('0x58')]=_0xd7e25e['id'];if(_0x50d2ec['query'][_0x38ce('0x41')]){_0x110aa3[_0x38ce('0x3d')]=_[_0x38ce('0x3f')](_0x110aa3[_0x38ce('0x3d')],{'$or':_[_0x38ce('0x2d')](_0x110aa3[_0x38ce('0x37')],function(_0xbc13f4){var _0x3a58ff={};_0x3a58ff[_0xbc13f4]={'$like':'%'+_0x50d2ec['query'][_0x38ce('0x41')]+'%'};return _0x3a58ff;})});}_0x110aa3=_[_0x38ce('0x3f')]({},_0x110aa3,_0x50d2ec['options']);return db['JscriptySessionReport'][_0x38ce('0x1d')]({'where':_0x110aa3[_0x38ce('0x3d')]})[_0x38ce('0x24')](function(_0x533166){_0x1f173f[_0x38ce('0x1d')]=_0x533166;if(_0x50d2ec[_0x38ce('0x32')][_0x38ce('0x43')]){_0x110aa3[_0x38ce('0x48')]=[{'all':!![]}];}return db[_0x38ce('0x57')][_0x38ce('0x59')](_0x110aa3);})[_0x38ce('0x24')](function(_0x4617c3){_0x1f173f[_0x38ce('0x44')]=_0x4617c3;return _0x1f173f;});}})['then'](respondWithFilteredResult(_0x57526e,_0x110aa3))[_0x38ce('0x45')](handleError(_0x57526e,null));};exports[_0x38ce('0x5a')]=function(_0x255c4c,_0x3de561,_0x489630){var _0x47e078={'raw':!![],'where':{}};var _0x5783c5={};var _0x51036d={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x38ce('0x5b')]({'where':{'id':_0x255c4c[_0x38ce('0x46')]['id']}})[_0x38ce('0x24')](handleEntityNotFound(_0x3de561,null))[_0x38ce('0x24')](function(_0x3b99ed){if(_0x3b99ed){_0x5783c5['model']=_['keys'](db[_0x38ce('0x5c')][_0x38ce('0x47')]);_0x5783c5['query']=_[_0x38ce('0x33')](_0x255c4c['query']);_0x5783c5[_0x38ce('0x34')]=_[_0x38ce('0x35')](_0x5783c5[_0x38ce('0x36')],_0x5783c5[_0x38ce('0x32')]);_0x47e078[_0x38ce('0x37')]=_[_0x38ce('0x35')](_0x5783c5[_0x38ce('0x36')],qs[_0x38ce('0x38')](_0x255c4c[_0x38ce('0x32')][_0x38ce('0x38')]));_0x47e078[_0x38ce('0x37')]=_0x47e078[_0x38ce('0x37')][_0x38ce('0x39')]?_0x47e078[_0x38ce('0x37')]:_0x5783c5[_0x38ce('0x36')];if(!_0x255c4c['query'][_0x38ce('0x3a')](_0x38ce('0x3b'))){_0x47e078[_0x38ce('0x1c')]=qs[_0x38ce('0x1c')](_0x255c4c[_0x38ce('0x32')][_0x38ce('0x1c')]);_0x47e078['offset']=qs[_0x38ce('0x1a')](_0x255c4c['query'][_0x38ce('0x1a')]);}_0x47e078[_0x38ce('0x3c')]=qs[_0x38ce('0x5d')](_0x255c4c[_0x38ce('0x32')][_0x38ce('0x5d')]);_0x47e078[_0x38ce('0x3d')]=qs['filters'](_[_0x38ce('0x3e')](_0x255c4c['query'],_0x5783c5[_0x38ce('0x34')]));_0x47e078[_0x38ce('0x3d')][_0x38ce('0x58')]=_0x3b99ed['id'];if(_0x255c4c[_0x38ce('0x32')]['filter']){_0x47e078[_0x38ce('0x3d')]=_[_0x38ce('0x3f')](_0x47e078['where'],{'$or':_['map'](_0x47e078[_0x38ce('0x37')],function(_0x348413){var _0x308baa={};_0x308baa[_0x348413]={'$like':'%'+_0x255c4c[_0x38ce('0x32')]['filter']+'%'};return _0x308baa;})});}_0x47e078=_[_0x38ce('0x3f')]({},_0x47e078,_0x255c4c[_0x38ce('0x42')]);return db[_0x38ce('0x5c')]['count']({'where':_0x47e078[_0x38ce('0x3d')]})[_0x38ce('0x24')](function(_0x4fc597){_0x51036d[_0x38ce('0x1d')]=_0x4fc597;if(_0x255c4c[_0x38ce('0x32')]['includeAll']){_0x47e078[_0x38ce('0x48')]=[{'all':!![]}];}return db[_0x38ce('0x5c')][_0x38ce('0x59')](_0x47e078);})[_0x38ce('0x24')](function(_0x707373){_0x51036d['rows']=_0x707373;return _0x51036d;});}})[_0x38ce('0x24')](respondWithFilteredResult(_0x3de561,_0x47e078))[_0x38ce('0x45')](handleError(_0x3de561,null));};function char(_0x1b9566){return _0x38ce('0x5e')===typeof _0x1b9566?String['fromCharCode'][_0x38ce('0x20')](null,arguments):_0x1b9566;}function needsEncapsulation(_0x37e19d){return!!_0x37e19d&&(_0x37e19d[_0x38ce('0x5f')]()[_0x38ce('0x60')](char(0xd))>=0x0||_0x37e19d[_0x38ce('0x5f')]()['indexOf'](char(0xa))>=0x0||_0x37e19d['toString']()[_0x38ce('0x60')](char(0x2c))>=0x0||_0x37e19d[_0x38ce('0x5f')]()[_0x38ce('0x60')](char(0x22))>=0x0);}function encapsulate(_0x40a20b){var _0x5a51b9=char(0x22),_0x59ade5='\x5c'+char(0x22),_0x1af22c=_0x40a20b[_0x38ce('0x5f')]()[_0x38ce('0x61')](new RegExp(_0x5a51b9,'g'),_0x59ade5);return _0x5a51b9+_0x1af22c+_0x5a51b9;}exports[_0x38ce('0x62')]=function(_0x516f37,_0x39763b,_0x2f84a3){var _0x4a92b8,_0x5f494d;var _0x4ed35b={'where':{'ProjectId':_0x516f37[_0x38ce('0x46')]['id']}};if(_0x516f37[_0x38ce('0x32')]['startTime']){_0x4ed35b[_0x38ce('0x3d')]['starttime']=JSON[_0x38ce('0x63')](_0x516f37['query'][_0x38ce('0x64')]);}return db['JscriptySessionReport'][_0x38ce('0x59')](_0x4ed35b)[_0x38ce('0x24')](handleEntityNotFound(_0x39763b,null))[_0x38ce('0x24')](function(_0x4db79c){if(_0x4db79c){_0x4a92b8=_0x4db79c;return db[_0x38ce('0x65')]['findAll']({'where':{'SessionId':{'$in':_[_0x38ce('0x2d')](_0x4a92b8,'id')},'ProjectId':_0x516f37[_0x38ce('0x46')]['id']},'order':_0x38ce('0x66')});}})[_0x38ce('0x24')](handleEntityNotFound(_0x39763b,null))[_0x38ce('0x24')](function(_0x3214c1){if(_0x3214c1){_0x5f494d=_0x3214c1;var _0x2e0391={};for(var _0x8efb21=0x0,_0xe9537d=_0x5f494d[_0x38ce('0x39')];_0x8efb21<_0xe9537d;_0x8efb21++){if(!_0x2e0391['hasOwnProperty'](_0x5f494d[_0x8efb21][_0x38ce('0x67')])){_0x2e0391[_0x5f494d[_0x8efb21][_0x38ce('0x67')]]=needsEncapsulation(_0x5f494d[_0x8efb21][_0x38ce('0x68')])?encapsulate(_0x5f494d[_0x8efb21][_0x38ce('0x68')]):_0x5f494d[_0x8efb21][_0x38ce('0x68')];}}var _0x44d6f4=[],_0x556acc={};for(var _0x576c1e=0x0,_0x302db5=_0x4a92b8['length'];_0x576c1e<_0x302db5;_0x576c1e++){_0x556acc={'ProjectId':_0x516f37[_0x38ce('0x46')]['id'],'SessionId':_0x4a92b8[_0x576c1e]['id'],'StartTime':moment(_0x4a92b8[_0x576c1e]['starttime'])['format'](_0x38ce('0x69'))};for(var _0x330f04=0x0,_0xb6b824=_0x5f494d['length'];_0x330f04<_0xb6b824;_0x330f04++){if(_0x5f494d[_0x330f04][_0x38ce('0x6a')]==_0x4a92b8[_0x576c1e]['id']&&_0x2e0391[_0x38ce('0x3a')](_0x5f494d[_0x330f04]['questionId'])){_0x556acc[_0x2e0391[_0x5f494d[_0x330f04][_0x38ce('0x67')]]]=_0x5f494d[_0x330f04]['answer'];}}for(var _0x1e201d in _0x2e0391){if(!_0x556acc['hasOwnProperty'](_0x2e0391[_0x1e201d])){_0x556acc[_0x2e0391[_0x1e201d]]=null;}}_0x44d6f4[_0x38ce('0x6b')](_0x556acc);}return _0x44d6f4;}})[_0x38ce('0x24')](function(_0x197f39){if(!_['isEmpty'](_0x197f39)){var _0x1e27ee=toCsv(_0x197f39);var _0x58d5a7=Date[_0x38ce('0x6c')]();fs[_0x38ce('0x6d')](util[_0x38ce('0x6e')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x516f37[_0x38ce('0x46')]['id'],_0x58d5a7),_0x1e27ee);_0x39763b[_0x38ce('0x6f')](_0x38ce('0x70'),_0x38ce('0x71')+util['format']('Jscripty_Project_%d_Summary_%s.csv',_0x516f37['params']['id'],_0x58d5a7));_0x39763b[_0x38ce('0x6f')](_0x38ce('0x72'),_0x38ce('0x73'));return _0x39763b[_0x38ce('0x74')](util[_0x38ce('0x6e')](_0x38ce('0x75'),_0x516f37[_0x38ce('0x46')]['id'],_0x58d5a7));}else{return _0x39763b[_0x38ce('0x76')](0xcc);}})[_0x38ce('0x45')](handleError(_0x39763b,null));};
\ No newline at end of file
+var _0x66d3=['params','getSessions','findOne','JscriptySessionReport','getAnswers','JscriptyAnswerReport','ProjectId','fromCharCode','toString','indexOf','replace','getSummary','starttime','parse','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','answer','push','isEmpty','now','format','/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','zip-dir','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','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','limit','count','Content-Range','apply','reject','save','update','destroy','get','Projects','then','error','stack','send','index','map','rawAttributes','fieldName','key','model','name','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','JscriptyProject','includeAll','include','findAll','rows','show','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x403c8d,_0x5e3825){var _0x4ca60d=function(_0x9326c1){while(--_0x9326c1){_0x403c8d['push'](_0x403c8d['shift']());}};_0x4ca60d(++_0x5e3825);}(_0x66d3,0x10f));var _0x366d=function(_0x1c9b0c,_0x56f622){_0x1c9b0c=_0x1c9b0c-0x0;var _0x5b7df3=_0x66d3[_0x1c9b0c];return _0x5b7df3;};'use strict';var emlformat=require(_0x366d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x366d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x366d('0x2'));var moment=require(_0x366d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x366d('0x4'));var util=require('util');var path=require(_0x366d('0x5'));var sox=require('sox');var csv=require(_0x366d('0x6'));var ejs=require(_0x366d('0x7'));var fs=require('fs');var fs_extra=require(_0x366d('0x8'));var _=require(_0x366d('0x9'));var squel=require(_0x366d('0xa'));var crypto=require(_0x366d('0xb'));var jsforce=require(_0x366d('0xc'));var deskjs=require(_0x366d('0xd'));var toCsv=require(_0x366d('0x6'));var querystring=require(_0x366d('0xe'));var Papa=require(_0x366d('0xf'));var Redis=require('ioredis');var authService=require(_0x366d('0x10'));var qs=require(_0x366d('0x11'));var as=require(_0x366d('0x12'));var hardwareService=require(_0x366d('0x13'));var logger=require(_0x366d('0x14'))(_0x366d('0x15'));var utils=require(_0x366d('0x16'));var config=require(_0x366d('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x210ed0,_0x797ee){_0x797ee=_0x797ee||0xcc;return function(_0x3dd776){if(_0x3dd776){return _0x210ed0[_0x366d('0x18')](_0x797ee);}return _0x210ed0[_0x366d('0x19')](_0x797ee)[_0x366d('0x1a')]();};}function respondWithResult(_0x4fa003,_0x265292){_0x265292=_0x265292||0xc8;return function(_0x2a3fdb){if(_0x2a3fdb){return _0x4fa003['status'](_0x265292)[_0x366d('0x1b')](_0x2a3fdb);}};}function respondWithFilteredResult(_0x287d17,_0x54a1bb){return function(_0x3da66f){if(_0x3da66f){var _0x309dc6=typeof _0x54a1bb[_0x366d('0x1c')]==='undefined'&&typeof _0x54a1bb[_0x366d('0x1d')]==='undefined';var _0xbc2286=_0x3da66f[_0x366d('0x1e')];var _0x5a1c0a=_0x309dc6?0x0:_0x54a1bb[_0x366d('0x1c')];var _0x235ff2=_0x309dc6?_0x3da66f[_0x366d('0x1e')]:_0x54a1bb[_0x366d('0x1c')]+_0x54a1bb[_0x366d('0x1d')];var _0x4ce0c6;if(_0x235ff2>=_0xbc2286){_0x235ff2=_0xbc2286;_0x4ce0c6=0xc8;}else{_0x4ce0c6=0xce;}_0x287d17[_0x366d('0x19')](_0x4ce0c6);return _0x287d17['set'](_0x366d('0x1f'),_0x5a1c0a+'-'+_0x235ff2+'/'+_0xbc2286)['json'](_0x3da66f);}return null;};}function patchUpdates(_0x5cbe3b){return function(_0x219106){try{jsonpatch[_0x366d('0x20')](_0x219106,_0x5cbe3b,!![]);}catch(_0x5a4a75){return BPromise[_0x366d('0x21')](_0x5a4a75);}return _0x219106[_0x366d('0x22')]();};}function saveUpdates(_0x1ed99c,_0x58d16f){return function(_0x3b5c89){if(_0x3b5c89){return _0x3b5c89[_0x366d('0x23')](_0x1ed99c)['then'](function(_0x3d4941){return _0x3d4941;});}return null;};}function removeEntity(_0x47ebf4,_0x1c9ee9){return function(_0x1326c9){if(_0x1326c9){return _0x1326c9[_0x366d('0x24')]()['then'](function(){var _0x3d3d12=_0x1326c9[_0x366d('0x25')]({'plain':!![]});var _0x2a1d96=_0x366d('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x2a1d96,'resourceId':_0x3d3d12['id']}})[_0x366d('0x27')](function(){return _0x1326c9;});})[_0x366d('0x27')](function(){_0x47ebf4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x10628b,_0x1a593e){return function(_0x31957c){if(!_0x31957c){_0x10628b[_0x366d('0x18')](0x194);}return _0x31957c;};}function handleError(_0x552c86,_0x413307){_0x413307=_0x413307||0x1f4;return function(_0x5dc954){logger[_0x366d('0x28')](_0x5dc954[_0x366d('0x29')]);if(_0x5dc954['name']){delete _0x5dc954['name'];}_0x552c86[_0x366d('0x19')](_0x413307)[_0x366d('0x2a')](_0x5dc954);};}exports[_0x366d('0x2b')]=function(_0x53ea53,_0x2c2517){var _0x2cb209={},_0x460e4c={},_0x2474a2={'count':0x0,'rows':[]};var _0x2950db=_[_0x366d('0x2c')](db['JscriptyProject'][_0x366d('0x2d')],function(_0x546a3e){return{'name':_0x546a3e[_0x366d('0x2e')],'type':_0x546a3e['type'][_0x366d('0x2f')]};});_0x460e4c[_0x366d('0x30')]=_[_0x366d('0x2c')](_0x2950db,_0x366d('0x31'));_0x460e4c['query']=_[_0x366d('0x32')](_0x53ea53[_0x366d('0x33')]);_0x460e4c[_0x366d('0x34')]=_[_0x366d('0x35')](_0x460e4c[_0x366d('0x30')],_0x460e4c[_0x366d('0x33')]);_0x2cb209['attributes']=_['intersection'](_0x460e4c[_0x366d('0x30')],qs[_0x366d('0x36')](_0x53ea53[_0x366d('0x33')][_0x366d('0x36')]));_0x2cb209['attributes']=_0x2cb209[_0x366d('0x37')][_0x366d('0x38')]?_0x2cb209[_0x366d('0x37')]:_0x460e4c[_0x366d('0x30')];if(!_0x53ea53[_0x366d('0x33')][_0x366d('0x39')](_0x366d('0x3a'))){_0x2cb209[_0x366d('0x1d')]=qs[_0x366d('0x1d')](_0x53ea53['query'][_0x366d('0x1d')]);_0x2cb209[_0x366d('0x1c')]=qs[_0x366d('0x1c')](_0x53ea53['query'][_0x366d('0x1c')]);}_0x2cb209[_0x366d('0x3b')]=qs[_0x366d('0x3c')](_0x53ea53[_0x366d('0x33')][_0x366d('0x3c')]);_0x2cb209[_0x366d('0x3d')]=qs['filters'](_[_0x366d('0x3e')](_0x53ea53[_0x366d('0x33')],_0x460e4c[_0x366d('0x34')]),_0x2950db);if(_0x53ea53[_0x366d('0x33')]['filter']){_0x2cb209[_0x366d('0x3d')]=_[_0x366d('0x3f')](_0x2cb209[_0x366d('0x3d')],{'$or':_[_0x366d('0x2c')](_0x2950db,function(_0xe0a188){if(_0xe0a188['type']!==_0x366d('0x40')){var _0x193726={};_0x193726[_0xe0a188[_0x366d('0x31')]]={'$like':'%'+_0x53ea53[_0x366d('0x33')][_0x366d('0x41')]+'%'};return _0x193726;}})});}_0x2cb209=_[_0x366d('0x3f')]({},_0x2cb209,_0x53ea53[_0x366d('0x42')]);var _0x4814b5={'where':_0x2cb209[_0x366d('0x3d')]};return db[_0x366d('0x43')][_0x366d('0x1e')](_0x4814b5)[_0x366d('0x27')](function(_0x1e1081){_0x2474a2[_0x366d('0x1e')]=_0x1e1081;if(_0x53ea53[_0x366d('0x33')][_0x366d('0x44')]){_0x2cb209[_0x366d('0x45')]=[{'all':!![]}];}return db[_0x366d('0x43')][_0x366d('0x46')](_0x2cb209);})[_0x366d('0x27')](function(_0x53c654){_0x2474a2[_0x366d('0x47')]=_0x53c654;return _0x2474a2;})[_0x366d('0x27')](respondWithFilteredResult(_0x2c2517,_0x2cb209))['catch'](handleError(_0x2c2517,null));};exports[_0x366d('0x48')]=function(_0x585a72,_0x1373cb){var _0x5f212e={'raw':![],'where':{'id':_0x585a72['params']['id']}},_0x619931={};_0x619931[_0x366d('0x30')]=_[_0x366d('0x32')](db[_0x366d('0x43')][_0x366d('0x2d')]);_0x619931[_0x366d('0x33')]=_[_0x366d('0x32')](_0x585a72[_0x366d('0x33')]);_0x619931['filters']=_[_0x366d('0x35')](_0x619931[_0x366d('0x30')],_0x619931[_0x366d('0x33')]);_0x5f212e[_0x366d('0x37')]=_[_0x366d('0x35')](_0x619931[_0x366d('0x30')],qs[_0x366d('0x36')](_0x585a72[_0x366d('0x33')][_0x366d('0x36')]));_0x5f212e[_0x366d('0x37')]=_0x5f212e[_0x366d('0x37')]['length']?_0x5f212e[_0x366d('0x37')]:_0x619931[_0x366d('0x30')];if(_0x585a72[_0x366d('0x33')]['includeAll']){_0x5f212e[_0x366d('0x45')]=[{'all':!![]}];}_0x5f212e=_['merge']({},_0x5f212e,_0x585a72[_0x366d('0x42')]);return db[_0x366d('0x43')][_0x366d('0x49')](_0x5f212e)['then'](handleEntityNotFound(_0x1373cb,null))['then'](respondWithResult(_0x1373cb,null))[_0x366d('0x4a')](handleError(_0x1373cb,null));};exports[_0x366d('0x4b')]=function(_0x21a5b4,_0x68ba99){return db[_0x366d('0x43')][_0x366d('0x4b')](_0x21a5b4[_0x366d('0x4c')],{})['then'](function(_0x18f82a){var _0x26153c=_0x21a5b4[_0x366d('0x4d')]['get']({'plain':!![]});if(!_0x26153c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x26153c[_0x366d('0x4e')]===_0x366d('0x4d')){var _0x18e206=_0x18f82a[_0x366d('0x25')]({'plain':!![]});var _0xfffa10=_0x366d('0x26');return db[_0x366d('0x4f')]['find']({'where':{'name':_0xfffa10,'userProfileId':_0x26153c[_0x366d('0x50')]},'raw':!![]})[_0x366d('0x27')](function(_0x3b92a8){if(_0x3b92a8&&_0x3b92a8[_0x366d('0x51')]===0x0){return db[_0x366d('0x52')][_0x366d('0x4b')]({'name':_0x18e206[_0x366d('0x31')],'resourceId':_0x18e206['id'],'type':_0x3b92a8[_0x366d('0x31')],'sectionId':_0x3b92a8['id']},{})[_0x366d('0x27')](function(){return _0x18f82a;});}else{return _0x18f82a;}})[_0x366d('0x4a')](function(_0x39d546){logger['error'](_0x366d('0x53'),_0x39d546);throw _0x39d546;});}return _0x18f82a;})[_0x366d('0x27')](respondWithResult(_0x68ba99,0xc9))['catch'](handleError(_0x68ba99,null));};exports[_0x366d('0x54')]=function(_0x207afe,_0x5d02a0){var _0x3c1a44={'where':{'id':_0x207afe['params']['id']}},_0x129654={};_0x129654[_0x366d('0x30')]=_[_0x366d('0x32')](db[_0x366d('0x43')][_0x366d('0x2d')]);_0x3c1a44['attributes']=_[_0x366d('0x35')](_0x129654['model'],qs[_0x366d('0x36')](_0x207afe[_0x366d('0x33')]['fields']));_0x3c1a44[_0x366d('0x37')]=_0x3c1a44['attributes'][_0x366d('0x38')]?_0x3c1a44[_0x366d('0x37')]:_0x129654[_0x366d('0x30')];if(_0x207afe['query'][_0x366d('0x44')]){_0x3c1a44[_0x366d('0x45')]=[{'all':!![]}];}_0x3c1a44=_[_0x366d('0x3f')]({},_0x3c1a44,_0x207afe[_0x366d('0x42')]);return db['JscriptyProject'][_0x366d('0x49')](_0x3c1a44)[_0x366d('0x27')](handleEntityNotFound(_0x5d02a0,null))[_0x366d('0x27')](function(_0x11b3ef){if(_0x11b3ef){var _0x340705=_0x11b3ef[_0x366d('0x25')]({'plain':!![]});_0x340705=qs[_0x366d('0x55')](_0x340705,['id',_0x366d('0x56'),_0x366d('0x57')]);_0x207afe[_0x366d('0x4c')]=_['omit'](_0x207afe[_0x366d('0x4c')],['id',_0x366d('0x56'),_0x366d('0x57')]);return db[_0x366d('0x43')][_0x366d('0x4b')](_[_0x366d('0x3f')](_0x340705,_0x207afe[_0x366d('0x4c')]),{'include':_0x207afe['query'][_0x366d('0x44')]?[{'all':!![]}]:undefined})[_0x366d('0x27')](function(_0x1da9a1){var _0x3505d7=_0x207afe[_0x366d('0x4d')][_0x366d('0x25')]({'plain':!![]});if(!_0x3505d7)throw new Error(_0x366d('0x58'));if(_0x3505d7[_0x366d('0x4e')]===_0x366d('0x4d')){var _0x4e36ba=_0x1da9a1[_0x366d('0x25')]({'plain':!![]});var _0x398f15='Projects';return db[_0x366d('0x4f')][_0x366d('0x49')]({'where':{'name':_0x398f15,'userProfileId':_0x3505d7[_0x366d('0x50')]},'raw':!![]})[_0x366d('0x27')](function(_0x2ac178){if(_0x2ac178&&_0x2ac178[_0x366d('0x51')]===0x0){return db[_0x366d('0x52')][_0x366d('0x4b')]({'name':_0x4e36ba[_0x366d('0x31')],'resourceId':_0x4e36ba['id'],'type':_0x2ac178[_0x366d('0x31')],'sectionId':_0x2ac178['id']},{})['then'](function(){return _0x1da9a1;});}else{return _0x1da9a1;}})[_0x366d('0x4a')](function(_0x55f363){logger[_0x366d('0x28')](_0x366d('0x53'),_0x55f363);throw _0x55f363;});}return _0x1da9a1;});}})['then'](respondWithResult(_0x5d02a0,0xc9))[_0x366d('0x4a')](handleError(_0x5d02a0,null));};exports[_0x366d('0x23')]=function(_0x278ca2,_0x3acf63){if(_0x278ca2['body']['id']){delete _0x278ca2[_0x366d('0x4c')]['id'];}return db[_0x366d('0x43')][_0x366d('0x49')]({'where':{'id':_0x278ca2[_0x366d('0x59')]['id']}})[_0x366d('0x27')](handleEntityNotFound(_0x3acf63,null))['then'](saveUpdates(_0x278ca2[_0x366d('0x4c')],null))[_0x366d('0x27')](respondWithResult(_0x3acf63,null))[_0x366d('0x4a')](handleError(_0x3acf63,null));};exports[_0x366d('0x24')]=function(_0x32f95e,_0x363861){return db[_0x366d('0x43')][_0x366d('0x49')]({'where':{'id':_0x32f95e[_0x366d('0x59')]['id']}})[_0x366d('0x27')](handleEntityNotFound(_0x363861,null))[_0x366d('0x27')](removeEntity(_0x363861,null))['catch'](handleError(_0x363861,null));};exports[_0x366d('0x5a')]=function(_0x3fa363,_0x3122f2,_0x559df7){var _0x4e932b={'raw':!![],'where':{}};var _0x3c0a7f={};var _0x15d796={'count':0x0,'rows':[]};return db[_0x366d('0x43')][_0x366d('0x5b')]({'where':{'id':_0x3fa363[_0x366d('0x59')]['id']}})[_0x366d('0x27')](handleEntityNotFound(_0x3122f2,null))[_0x366d('0x27')](function(_0x49944d){if(_0x49944d){_0x3c0a7f[_0x366d('0x30')]=_['keys'](db[_0x366d('0x5c')][_0x366d('0x2d')]);_0x3c0a7f[_0x366d('0x33')]=_[_0x366d('0x32')](_0x3fa363['query']);_0x3c0a7f['filters']=_[_0x366d('0x35')](_0x3c0a7f[_0x366d('0x30')],_0x3c0a7f[_0x366d('0x33')]);_0x4e932b[_0x366d('0x37')]=_['intersection'](_0x3c0a7f[_0x366d('0x30')],qs[_0x366d('0x36')](_0x3fa363[_0x366d('0x33')][_0x366d('0x36')]));_0x4e932b[_0x366d('0x37')]=_0x4e932b['attributes'][_0x366d('0x38')]?_0x4e932b[_0x366d('0x37')]:_0x3c0a7f[_0x366d('0x30')];if(!_0x3fa363['query'][_0x366d('0x39')](_0x366d('0x3a'))){_0x4e932b[_0x366d('0x1d')]=qs['limit'](_0x3fa363[_0x366d('0x33')][_0x366d('0x1d')]);_0x4e932b['offset']=qs[_0x366d('0x1c')](_0x3fa363[_0x366d('0x33')][_0x366d('0x1c')]);}_0x4e932b[_0x366d('0x3b')]=qs[_0x366d('0x3c')](_0x3fa363[_0x366d('0x33')][_0x366d('0x3c')]);_0x4e932b[_0x366d('0x3d')]=qs[_0x366d('0x34')](_['pick'](_0x3fa363[_0x366d('0x33')],_0x3c0a7f[_0x366d('0x34')]));_0x4e932b[_0x366d('0x3d')]['ProjectId']=_0x49944d['id'];if(_0x3fa363[_0x366d('0x33')][_0x366d('0x41')]){_0x4e932b[_0x366d('0x3d')]=_[_0x366d('0x3f')](_0x4e932b[_0x366d('0x3d')],{'$or':_[_0x366d('0x2c')](_0x4e932b[_0x366d('0x37')],function(_0x358543){var _0xb01d1a={};_0xb01d1a[_0x358543]={'$like':'%'+_0x3fa363[_0x366d('0x33')]['filter']+'%'};return _0xb01d1a;})});}_0x4e932b=_['merge']({},_0x4e932b,_0x3fa363['options']);return db[_0x366d('0x5c')][_0x366d('0x1e')]({'where':_0x4e932b[_0x366d('0x3d')]})[_0x366d('0x27')](function(_0x97595f){_0x15d796[_0x366d('0x1e')]=_0x97595f;if(_0x3fa363[_0x366d('0x33')][_0x366d('0x44')]){_0x4e932b[_0x366d('0x45')]=[{'all':!![]}];}return db[_0x366d('0x5c')][_0x366d('0x46')](_0x4e932b);})[_0x366d('0x27')](function(_0x398b7f){_0x15d796[_0x366d('0x47')]=_0x398b7f;return _0x15d796;});}})[_0x366d('0x27')](respondWithFilteredResult(_0x3122f2,_0x4e932b))[_0x366d('0x4a')](handleError(_0x3122f2,null));};exports[_0x366d('0x5d')]=function(_0x8e991d,_0x171647,_0x356ae5){var _0x1defa8={'raw':!![],'where':{}};var _0x48c84f={};var _0x190a73={'count':0x0,'rows':[]};return db[_0x366d('0x43')]['findOne']({'where':{'id':_0x8e991d[_0x366d('0x59')]['id']}})[_0x366d('0x27')](handleEntityNotFound(_0x171647,null))[_0x366d('0x27')](function(_0x3dba73){if(_0x3dba73){_0x48c84f['model']=_[_0x366d('0x32')](db[_0x366d('0x5e')]['rawAttributes']);_0x48c84f[_0x366d('0x33')]=_[_0x366d('0x32')](_0x8e991d[_0x366d('0x33')]);_0x48c84f[_0x366d('0x34')]=_[_0x366d('0x35')](_0x48c84f[_0x366d('0x30')],_0x48c84f[_0x366d('0x33')]);_0x1defa8[_0x366d('0x37')]=_[_0x366d('0x35')](_0x48c84f[_0x366d('0x30')],qs[_0x366d('0x36')](_0x8e991d['query']['fields']));_0x1defa8[_0x366d('0x37')]=_0x1defa8['attributes'][_0x366d('0x38')]?_0x1defa8[_0x366d('0x37')]:_0x48c84f['model'];if(!_0x8e991d[_0x366d('0x33')][_0x366d('0x39')](_0x366d('0x3a'))){_0x1defa8['limit']=qs[_0x366d('0x1d')](_0x8e991d[_0x366d('0x33')][_0x366d('0x1d')]);_0x1defa8[_0x366d('0x1c')]=qs[_0x366d('0x1c')](_0x8e991d[_0x366d('0x33')][_0x366d('0x1c')]);}_0x1defa8[_0x366d('0x3b')]=qs[_0x366d('0x3c')](_0x8e991d[_0x366d('0x33')][_0x366d('0x3c')]);_0x1defa8['where']=qs[_0x366d('0x34')](_[_0x366d('0x3e')](_0x8e991d[_0x366d('0x33')],_0x48c84f[_0x366d('0x34')]));_0x1defa8[_0x366d('0x3d')][_0x366d('0x5f')]=_0x3dba73['id'];if(_0x8e991d[_0x366d('0x33')][_0x366d('0x41')]){_0x1defa8['where']=_[_0x366d('0x3f')](_0x1defa8[_0x366d('0x3d')],{'$or':_[_0x366d('0x2c')](_0x1defa8[_0x366d('0x37')],function(_0x19bafd){var _0x52e563={};_0x52e563[_0x19bafd]={'$like':'%'+_0x8e991d['query'][_0x366d('0x41')]+'%'};return _0x52e563;})});}_0x1defa8=_[_0x366d('0x3f')]({},_0x1defa8,_0x8e991d[_0x366d('0x42')]);return db['JscriptyAnswerReport'][_0x366d('0x1e')]({'where':_0x1defa8[_0x366d('0x3d')]})['then'](function(_0x4b9986){_0x190a73['count']=_0x4b9986;if(_0x8e991d[_0x366d('0x33')][_0x366d('0x44')]){_0x1defa8[_0x366d('0x45')]=[{'all':!![]}];}return db[_0x366d('0x5e')][_0x366d('0x46')](_0x1defa8);})[_0x366d('0x27')](function(_0x1cec0c){_0x190a73['rows']=_0x1cec0c;return _0x190a73;});}})[_0x366d('0x27')](respondWithFilteredResult(_0x171647,_0x1defa8))[_0x366d('0x4a')](handleError(_0x171647,null));};function char(_0xdc9f32){return'number'===typeof _0xdc9f32?String[_0x366d('0x60')]['apply'](null,arguments):_0xdc9f32;}function needsEncapsulation(_0x4f1b7b){return!!_0x4f1b7b&&(_0x4f1b7b[_0x366d('0x61')]()[_0x366d('0x62')](char(0xd))>=0x0||_0x4f1b7b[_0x366d('0x61')]()['indexOf'](char(0xa))>=0x0||_0x4f1b7b['toString']()[_0x366d('0x62')](char(0x2c))>=0x0||_0x4f1b7b['toString']()[_0x366d('0x62')](char(0x22))>=0x0);}function encapsulate(_0x428f21){var _0x4d3b99=char(0x22),_0x268f6c='\x5c'+char(0x22),_0x44fd30=_0x428f21[_0x366d('0x61')]()[_0x366d('0x63')](new RegExp(_0x4d3b99,'g'),_0x268f6c);return _0x4d3b99+_0x44fd30+_0x4d3b99;}exports[_0x366d('0x64')]=function(_0x3c8648,_0x153fbc,_0x3b1a5c){var _0x4c1ff9,_0x26b065;var _0x1045df={'where':{'ProjectId':_0x3c8648[_0x366d('0x59')]['id']}};if(_0x3c8648[_0x366d('0x33')]['startTime']){_0x1045df[_0x366d('0x3d')][_0x366d('0x65')]=JSON[_0x366d('0x66')](_0x3c8648[_0x366d('0x33')]['startTime']);}return db[_0x366d('0x5c')][_0x366d('0x46')](_0x1045df)[_0x366d('0x27')](handleEntityNotFound(_0x153fbc,null))[_0x366d('0x27')](function(_0x1712d8){if(_0x1712d8){_0x4c1ff9=_0x1712d8;return db['JscriptyQuestionReport'][_0x366d('0x46')]({'where':{'SessionId':{'$in':_[_0x366d('0x2c')](_0x4c1ff9,'id')},'ProjectId':_0x3c8648[_0x366d('0x59')]['id']},'order':_0x366d('0x67')});}})[_0x366d('0x27')](handleEntityNotFound(_0x153fbc,null))[_0x366d('0x27')](function(_0x810a97){if(_0x810a97){_0x26b065=_0x810a97;var _0x3b7fc7={};for(var _0x284d5f=0x0,_0x1b581c=_0x26b065[_0x366d('0x38')];_0x284d5f<_0x1b581c;_0x284d5f++){if(!_0x3b7fc7[_0x366d('0x39')](_0x26b065[_0x284d5f][_0x366d('0x68')])){_0x3b7fc7[_0x26b065[_0x284d5f][_0x366d('0x68')]]=needsEncapsulation(_0x26b065[_0x284d5f][_0x366d('0x69')])?encapsulate(_0x26b065[_0x284d5f][_0x366d('0x69')]):_0x26b065[_0x284d5f][_0x366d('0x69')];}}var _0x2fa975=[],_0x2f2c0a={};for(var _0x6de995=0x0,_0xd038a=_0x4c1ff9['length'];_0x6de995<_0xd038a;_0x6de995++){_0x2f2c0a={'ProjectId':_0x3c8648['params']['id'],'SessionId':_0x4c1ff9[_0x6de995]['id'],'StartTime':moment(_0x4c1ff9[_0x6de995][_0x366d('0x65')])['format'](_0x366d('0x6a'))};for(var _0xc3911e=0x0,_0x297e54=_0x26b065[_0x366d('0x38')];_0xc3911e<_0x297e54;_0xc3911e++){if(_0x26b065[_0xc3911e]['SessionId']==_0x4c1ff9[_0x6de995]['id']&&_0x3b7fc7[_0x366d('0x39')](_0x26b065[_0xc3911e][_0x366d('0x68')])){_0x2f2c0a[_0x3b7fc7[_0x26b065[_0xc3911e][_0x366d('0x68')]]]=_0x26b065[_0xc3911e][_0x366d('0x6b')];}}for(var _0x341cc8 in _0x3b7fc7){if(!_0x2f2c0a['hasOwnProperty'](_0x3b7fc7[_0x341cc8])){_0x2f2c0a[_0x3b7fc7[_0x341cc8]]=null;}}_0x2fa975[_0x366d('0x6c')](_0x2f2c0a);}return _0x2fa975;}})[_0x366d('0x27')](function(_0x4367e8){if(!_[_0x366d('0x6d')](_0x4367e8)){var _0x1c27f9=toCsv(_0x4367e8);var _0x258742=Date[_0x366d('0x6e')]();fs['writeFileSync'](util[_0x366d('0x6f')](_0x366d('0x70'),_0x3c8648[_0x366d('0x59')]['id'],_0x258742),_0x1c27f9);_0x153fbc[_0x366d('0x71')](_0x366d('0x72'),_0x366d('0x73')+util[_0x366d('0x6f')](_0x366d('0x74'),_0x3c8648[_0x366d('0x59')]['id'],_0x258742));_0x153fbc[_0x366d('0x71')](_0x366d('0x75'),_0x366d('0x76'));return _0x153fbc[_0x366d('0x77')](util['format'](_0x366d('0x70'),_0x3c8648['params']['id'],_0x258742));}else{return _0x153fbc['sendStatus'](0xcc);}})[_0x366d('0x4a')](handleError(_0x153fbc,null));};
\ No newline at end of file
index 9c22fb5..0a2b184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56da=['../../config/environment','./jscriptyProject.attributes','exports','define','JscriptyProject','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x5ab662,_0x13836c){var _0x5ac38f=function(_0x2f7fc1){while(--_0x2f7fc1){_0x5ab662['push'](_0x5ab662['shift']());}};_0x5ac38f(++_0x13836c);}(_0x56da,0x119));var _0xa56d=function(_0xa4928c,_0x16b89c){_0xa4928c=_0xa4928c-0x0;var _0x27cc29=_0x56da[_0xa4928c];return _0x27cc29;};'use strict';var _=require(_0xa56d('0x0'));var util=require('util');var logger=require(_0xa56d('0x1'))(_0xa56d('0x2'));var moment=require('moment');var BPromise=require(_0xa56d('0x3'));var rp=require(_0xa56d('0x4'));var fs=require('fs');var path=require(_0xa56d('0x5'));var rimraf=require(_0xa56d('0x6'));var config=require(_0xa56d('0x7'));var attributes=require(_0xa56d('0x8'));module[_0xa56d('0x9')]=function(_0x14a16e,_0x4751ee){return _0x14a16e[_0xa56d('0xa')](_0xa56d('0xb'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf9d5=['../../config/environment','./jscriptyProject.attributes','define','JscriptyProject','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xf9d5,0x122));var _0x5f9d=function(_0x589162,_0x1e8537){_0x589162=_0x589162-0x0;var _0x2826e6=_0xf9d5[_0x589162];return _0x2826e6;};'use strict';var _=require('lodash');var util=require(_0x5f9d('0x0'));var logger=require(_0x5f9d('0x1'))('api');var moment=require(_0x5f9d('0x2'));var BPromise=require(_0x5f9d('0x3'));var rp=require(_0x5f9d('0x4'));var fs=require('fs');var path=require(_0x5f9d('0x5'));var rimraf=require(_0x5f9d('0x6'));var config=require(_0x5f9d('0x7'));var attributes=require(_0x5f9d('0x8'));module['exports']=function(_0x1fc74c,_0x59027b){return _0x1fc74c[_0x5f9d('0x9')](_0x5f9d('0xa'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f975671..7133fbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x32ecb5,_0x3c7aa1){var _0x493a12=function(_0x2377ef){while(--_0x2377ef){_0x32ecb5['push'](_0x32ecb5['shift']());}};_0x493a12(++_0x3c7aa1);}(_0x70e0,0x17b));var _0x070e=function(_0x564886,_0x192301){_0x564886=_0x564886-0x0;var _0x359459=_0x70e0[_0x564886];return _0x359459;};'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')]('JscriptyProject,\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')]('JscriptyProject,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('JscriptyProject,\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 _0x9bde=['code','message','JscriptyProject,\x20%s,\x20%s','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x27e9b8,_0x28b7d8){var _0x57b36a=function(_0x57a186){while(--_0x57a186){_0x27e9b8['push'](_0x27e9b8['shift']());}};_0x57b36a(++_0x28b7d8);}(_0x9bde,0xe1));var _0xe9bd=function(_0x5d06e5,_0x26a081){_0x5d06e5=_0x5d06e5-0x0;var _0x9e9f8e=_0x9bde[_0x5d06e5];return _0x9e9f8e;};'use strict';var _=require('lodash');var util=require(_0xe9bd('0x0'));var moment=require('moment');var BPromise=require(_0xe9bd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9bd('0x2'));var db=require(_0xe9bd('0x3'))['db'];var utils=require(_0xe9bd('0x4'));var logger=require(_0xe9bd('0x5'))(_0xe9bd('0x6'));var config=require(_0xe9bd('0x7'));var jayson=require(_0xe9bd('0x8'));var client=jayson['client'][_0xe9bd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f18fe,_0x22a438,_0xa66ae2){return new BPromise(function(_0x2d5c75,_0x3ef9e3){return client[_0xe9bd('0xa')](_0x5f18fe,_0xa66ae2)[_0xe9bd('0xb')](function(_0x439abc){logger[_0xe9bd('0xc')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,'request\x20sent');logger[_0xe9bd('0xd')](_0xe9bd('0xe'),_0x22a438,_0xe9bd('0xf'),JSON['stringify'](_0x439abc));if(_0x439abc[_0xe9bd('0x10')]){if(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x11')]===0x1f4){logger[_0xe9bd('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,_0x439abc[_0xe9bd('0x10')]['message']);return _0x3ef9e3(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}logger[_0xe9bd('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,_0x439abc['error'][_0xe9bd('0x12')]);return _0x2d5c75(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}else{logger[_0xe9bd('0xc')](_0xe9bd('0x13'),_0x22a438,_0xe9bd('0xf'));_0x2d5c75(_0x439abc[_0xe9bd('0x14')]['message']);}})[_0xe9bd('0x15')](function(_0x464a1b){logger[_0xe9bd('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,_0x464a1b);_0x3ef9e3(_0x464a1b);});});}
\ No newline at end of file
index c531356..60d52ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x052d=['put','/:id','update','delete','destroy','exports','multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','/describe','isAuthenticated','describe','show','post','create'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x052d,0xa6));var _0xd052=function(_0x645acc,_0x16b8a2){_0x645acc=_0x645acc-0x0;var _0x3a2c8d=_0x052d[_0x645acc];return _0x3a2c8d;};'use strict';var multer=require(_0xd052('0x0'));var util=require('util');var path=require(_0xd052('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd052('0x2')]();var fs_extra=require(_0xd052('0x3'));var auth=require(_0xd052('0x4'));var interaction=require(_0xd052('0x5'));var config=require(_0xd052('0x6'));var controller=require(_0xd052('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xd052('0x8'),auth[_0xd052('0x9')](),controller[_0xd052('0xa')]);router['get']('/:id',auth[_0xd052('0x9')](),controller[_0xd052('0xb')]);router[_0xd052('0xc')]('/',auth[_0xd052('0x9')](),controller[_0xd052('0xd')]);router[_0xd052('0xe')](_0xd052('0xf'),auth[_0xd052('0x9')](),controller[_0xd052('0x10')]);router[_0xd052('0x11')](_0xd052('0xf'),auth[_0xd052('0x9')](),controller[_0xd052('0x12')]);module[_0xd052('0x13')]=router;
\ No newline at end of file
+var _0xa0dc=['exports','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','update','destroy'];(function(_0x503d33,_0x1c8261){var _0x2e6161=function(_0x2df512){while(--_0x2df512){_0x503d33['push'](_0x503d33['shift']());}};_0x2e6161(++_0x1c8261);}(_0xa0dc,0x89));var _0xca0d=function(_0x3a9f54,_0x305073){_0x3a9f54=_0x3a9f54-0x0;var _0xc43555=_0xa0dc[_0x3a9f54];return _0xc43555;};'use strict';var multer=require('multer');var util=require(_0xca0d('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xca0d('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xca0d('0x2'));var interaction=require(_0xca0d('0x3'));var config=require(_0xca0d('0x4'));var controller=require('./jscriptyQuestionReport.controller');router[_0xca0d('0x5')]('/',auth[_0xca0d('0x6')](),controller[_0xca0d('0x7')]);router[_0xca0d('0x5')](_0xca0d('0x8'),auth[_0xca0d('0x6')](),controller[_0xca0d('0x9')]);router['get'](_0xca0d('0xa'),auth[_0xca0d('0x6')](),controller['show']);router[_0xca0d('0xb')]('/',auth[_0xca0d('0x6')](),controller[_0xca0d('0xc')]);router[_0xca0d('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xca0d('0xe')]);router['delete'](_0xca0d('0xa'),auth[_0xca0d('0x6')](),controller[_0xca0d('0xf')]);module[_0xca0d('0x10')]=router;
\ No newline at end of file
index bde0ff5..1d4fbd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x7a54,0x106));var _0x47a5=function(_0x2fadd3,_0x3c47ac){_0x2fadd3=_0x2fadd3-0x0;var _0x2333c6=_0x7a54[_0x2fadd3];return _0x2333c6;};'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(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x7a54,0x106));var _0x47a5=function(_0x563f55,_0x7ed5c){_0x563f55=_0x563f55-0x0;var _0x496b96=_0x7a54[_0x563f55];return _0x496b96;};'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 c1f62fc..12066d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb44=['lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','stack','name','send','index','JscriptyQuestionReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','merge','where','type','options','includeAll','include','findAll','rows','show','params','find','body','catch','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra'];(function(_0x629225,_0x116f71){var _0x317d0f=function(_0x336a4f){while(--_0x336a4f){_0x629225['push'](_0x629225['shift']());}};_0x317d0f(++_0x116f71);}(_0xfb44,0x8d));var _0x4fb4=function(_0x2679ff,_0x4cdb65){_0x2679ff=_0x2679ff-0x0;var _0x1c2939=_0xfb44[_0x2679ff];return _0x1c2939;};'use strict';var emlformat=require(_0x4fb4('0x0'));var rimraf=require(_0x4fb4('0x1'));var zipdir=require(_0x4fb4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4fb4('0x3'));var BPromise=require(_0x4fb4('0x4'));var Mustache=require(_0x4fb4('0x5'));var util=require(_0x4fb4('0x6'));var path=require('path');var sox=require(_0x4fb4('0x7'));var csv=require(_0x4fb4('0x8'));var ejs=require(_0x4fb4('0x9'));var fs=require('fs');var fs_extra=require(_0x4fb4('0xa'));var _=require(_0x4fb4('0xb'));var squel=require(_0x4fb4('0xc'));var crypto=require('crypto');var jsforce=require(_0x4fb4('0xd'));var deskjs=require(_0x4fb4('0xe'));var toCsv=require(_0x4fb4('0x8'));var querystring=require(_0x4fb4('0xf'));var Papa=require(_0x4fb4('0x10'));var Redis=require(_0x4fb4('0x11'));var authService=require(_0x4fb4('0x12'));var qs=require(_0x4fb4('0x13'));var as=require(_0x4fb4('0x14'));var hardwareService=require(_0x4fb4('0x15'));var logger=require(_0x4fb4('0x16'))(_0x4fb4('0x17'));var utils=require(_0x4fb4('0x18'));var config=require(_0x4fb4('0x19'));var licenseUtil=require(_0x4fb4('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23dc86,_0x355e9e){_0x355e9e=_0x355e9e||0xcc;return function(_0x5651ca){if(_0x5651ca){return _0x23dc86[_0x4fb4('0x1b')](_0x355e9e);}return _0x23dc86['status'](_0x355e9e)[_0x4fb4('0x1c')]();};}function respondWithResult(_0xc6097c,_0x2217fc){_0x2217fc=_0x2217fc||0xc8;return function(_0x3d2af9){if(_0x3d2af9){return _0xc6097c[_0x4fb4('0x1d')](_0x2217fc)[_0x4fb4('0x1e')](_0x3d2af9);}};}function respondWithFilteredResult(_0x39d84e,_0x5bdff1){return function(_0x410ad3){if(_0x410ad3){var _0x4710ee=typeof _0x5bdff1[_0x4fb4('0x1f')]===_0x4fb4('0x20')&&typeof _0x5bdff1[_0x4fb4('0x21')]===_0x4fb4('0x20');var _0x519e9c=_0x410ad3['count'];var _0x2c8fcd=_0x4710ee?0x0:_0x5bdff1['offset'];var _0x2bd35b=_0x4710ee?_0x410ad3[_0x4fb4('0x22')]:_0x5bdff1[_0x4fb4('0x1f')]+_0x5bdff1[_0x4fb4('0x21')];var _0xb6639e;if(_0x2bd35b>=_0x519e9c){_0x2bd35b=_0x519e9c;_0xb6639e=0xc8;}else{_0xb6639e=0xce;}_0x39d84e[_0x4fb4('0x1d')](_0xb6639e);return _0x39d84e[_0x4fb4('0x23')]('Content-Range',_0x2c8fcd+'-'+_0x2bd35b+'/'+_0x519e9c)['json'](_0x410ad3);}return null;};}function patchUpdates(_0x5e5e7f){return function(_0x533cfb){try{jsonpatch[_0x4fb4('0x24')](_0x533cfb,_0x5e5e7f,!![]);}catch(_0x206508){return BPromise[_0x4fb4('0x25')](_0x206508);}return _0x533cfb['save']();};}function saveUpdates(_0x22b8b5,_0x583155){return function(_0x1dfeec){if(_0x1dfeec){return _0x1dfeec[_0x4fb4('0x26')](_0x22b8b5)[_0x4fb4('0x27')](function(_0x118d3c){return _0x118d3c;});}return null;};}function removeEntity(_0x1c0ed8,_0x3bfcaf){return function(_0x24ee67){if(_0x24ee67){return _0x24ee67[_0x4fb4('0x28')]()[_0x4fb4('0x27')](function(){_0x1c0ed8[_0x4fb4('0x1d')](0xcc)[_0x4fb4('0x1c')]();});}};}function handleEntityNotFound(_0x20a3b0,_0x4c73ea){return function(_0x2cf1b7){if(!_0x2cf1b7){_0x20a3b0[_0x4fb4('0x1b')](0x194);}return _0x2cf1b7;};}function handleError(_0x228c33,_0x5ea141){_0x5ea141=_0x5ea141||0x1f4;return function(_0x3b4848){logger['error'](_0x3b4848[_0x4fb4('0x29')]);if(_0x3b4848[_0x4fb4('0x2a')]){delete _0x3b4848[_0x4fb4('0x2a')];}_0x228c33[_0x4fb4('0x1d')](_0x5ea141)[_0x4fb4('0x2b')](_0x3b4848);};}exports[_0x4fb4('0x2c')]=function(_0xa51d84,_0xa186b2){var _0x352c55={},_0x170bee={},_0x48e815={'count':0x0,'rows':[]};var _0x2cf3b6=_['map'](db[_0x4fb4('0x2d')][_0x4fb4('0x2e')],function(_0x38cd06){return{'name':_0x38cd06[_0x4fb4('0x2f')],'type':_0x38cd06['type'][_0x4fb4('0x30')]};});_0x170bee[_0x4fb4('0x31')]=_[_0x4fb4('0x32')](_0x2cf3b6,_0x4fb4('0x2a'));_0x170bee[_0x4fb4('0x33')]=_[_0x4fb4('0x34')](_0xa51d84[_0x4fb4('0x33')]);_0x170bee[_0x4fb4('0x35')]=_[_0x4fb4('0x36')](_0x170bee[_0x4fb4('0x31')],_0x170bee['query']);_0x352c55['attributes']=_[_0x4fb4('0x36')](_0x170bee[_0x4fb4('0x31')],qs[_0x4fb4('0x37')](_0xa51d84['query'][_0x4fb4('0x37')]));_0x352c55[_0x4fb4('0x38')]=_0x352c55[_0x4fb4('0x38')][_0x4fb4('0x39')]?_0x352c55[_0x4fb4('0x38')]:_0x170bee[_0x4fb4('0x31')];if(!_0xa51d84[_0x4fb4('0x33')][_0x4fb4('0x3a')](_0x4fb4('0x3b'))){_0x352c55['limit']=qs[_0x4fb4('0x21')](_0xa51d84['query'][_0x4fb4('0x21')]);_0x352c55[_0x4fb4('0x1f')]=qs['offset'](_0xa51d84[_0x4fb4('0x33')][_0x4fb4('0x1f')]);}_0x352c55['order']=qs[_0x4fb4('0x3c')](_0xa51d84['query'][_0x4fb4('0x3c')]);_0x352c55['where']=qs[_0x4fb4('0x35')](_[_0x4fb4('0x3d')](_0xa51d84[_0x4fb4('0x33')],_0x170bee['filters']),_0x2cf3b6);if(_0xa51d84[_0x4fb4('0x33')]['filter']){_0x352c55['where']=_[_0x4fb4('0x3e')](_0x352c55[_0x4fb4('0x3f')],{'$or':_[_0x4fb4('0x32')](_0x2cf3b6,function(_0x5e212e){if(_0x5e212e[_0x4fb4('0x40')]!=='VIRTUAL'){var _0x2c4593={};_0x2c4593[_0x5e212e[_0x4fb4('0x2a')]]={'$like':'%'+_0xa51d84['query']['filter']+'%'};return _0x2c4593;}})});}_0x352c55=_[_0x4fb4('0x3e')]({},_0x352c55,_0xa51d84[_0x4fb4('0x41')]);var _0x834754={'where':_0x352c55[_0x4fb4('0x3f')]};return db['JscriptyQuestionReport'][_0x4fb4('0x22')](_0x834754)['then'](function(_0x49d93b){_0x48e815[_0x4fb4('0x22')]=_0x49d93b;if(_0xa51d84[_0x4fb4('0x33')][_0x4fb4('0x42')]){_0x352c55[_0x4fb4('0x43')]=[{'all':!![]}];}return db[_0x4fb4('0x2d')][_0x4fb4('0x44')](_0x352c55);})[_0x4fb4('0x27')](function(_0x5e51c8){_0x48e815[_0x4fb4('0x45')]=_0x5e51c8;return _0x48e815;})['then'](respondWithFilteredResult(_0xa186b2,_0x352c55))['catch'](handleError(_0xa186b2,null));};exports[_0x4fb4('0x46')]=function(_0x103eab,_0x4f749f){var _0x576c02={'raw':!![],'where':{'id':_0x103eab[_0x4fb4('0x47')]['id']}},_0x390815={};_0x390815[_0x4fb4('0x31')]=_['keys'](db['JscriptyQuestionReport'][_0x4fb4('0x2e')]);_0x390815[_0x4fb4('0x33')]=_[_0x4fb4('0x34')](_0x103eab[_0x4fb4('0x33')]);_0x390815[_0x4fb4('0x35')]=_[_0x4fb4('0x36')](_0x390815['model'],_0x390815[_0x4fb4('0x33')]);_0x576c02[_0x4fb4('0x38')]=_['intersection'](_0x390815[_0x4fb4('0x31')],qs[_0x4fb4('0x37')](_0x103eab[_0x4fb4('0x33')][_0x4fb4('0x37')]));_0x576c02[_0x4fb4('0x38')]=_0x576c02['attributes'][_0x4fb4('0x39')]?_0x576c02[_0x4fb4('0x38')]:_0x390815[_0x4fb4('0x31')];if(_0x103eab['query']['includeAll']){_0x576c02[_0x4fb4('0x43')]=[{'all':!![]}];}_0x576c02=_['merge']({},_0x576c02,_0x103eab['options']);return db[_0x4fb4('0x2d')][_0x4fb4('0x48')](_0x576c02)['then'](handleEntityNotFound(_0x4f749f,null))[_0x4fb4('0x27')](respondWithResult(_0x4f749f,null))['catch'](handleError(_0x4f749f,null));};exports['create']=function(_0xbb8d32,_0xb53c78){return db[_0x4fb4('0x2d')]['create'](_0xbb8d32[_0x4fb4('0x49')],{})['then'](respondWithResult(_0xb53c78,0xc9))['catch'](handleError(_0xb53c78,null));};exports[_0x4fb4('0x26')]=function(_0x4ac303,_0x34ccaa){if(_0x4ac303[_0x4fb4('0x49')]['id']){delete _0x4ac303[_0x4fb4('0x49')]['id'];}return db['JscriptyQuestionReport'][_0x4fb4('0x48')]({'where':{'id':_0x4ac303['params']['id']}})[_0x4fb4('0x27')](handleEntityNotFound(_0x34ccaa,null))[_0x4fb4('0x27')](saveUpdates(_0x4ac303[_0x4fb4('0x49')],null))[_0x4fb4('0x27')](respondWithResult(_0x34ccaa,null))[_0x4fb4('0x4a')](handleError(_0x34ccaa,null));};exports[_0x4fb4('0x28')]=function(_0x31f966,_0x453ca7){return db[_0x4fb4('0x2d')][_0x4fb4('0x48')]({'where':{'id':_0x31f966[_0x4fb4('0x47')]['id']}})['then'](handleEntityNotFound(_0x453ca7,null))[_0x4fb4('0x27')](removeEntity(_0x453ca7,null))[_0x4fb4('0x4a')](handleError(_0x453ca7,null));};exports[_0x4fb4('0x4b')]=function(_0x243051,_0x371d2e){return db[_0x4fb4('0x2d')][_0x4fb4('0x4b')]()['then'](respondWithResult(_0x371d2e,null))['catch'](handleError(_0x371d2e,null));};
\ No newline at end of file
+var _0x01ab=['fieldName','type','map','keys','query','intersection','attributes','model','fields','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','include','findAll','rows','show','length','includeAll','find','catch','create','body','params','describe','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','limit','undefined','count','offset','set','Content-Range','reject','update','then','destroy','sendStatus','error','name','send','index','JscriptyQuestionReport','rawAttributes'];(function(_0x194801,_0x147ece){var _0x18c56c=function(_0x236640){while(--_0x236640){_0x194801['push'](_0x194801['shift']());}};_0x18c56c(++_0x147ece);}(_0x01ab,0xfa));var _0xb01a=function(_0x24487f,_0x9b3ea0){_0x24487f=_0x24487f-0x0;var _0x456456=_0x01ab[_0x24487f];return _0x456456;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb01a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb01a('0x1'));var rp=require(_0xb01a('0x2'));var moment=require('moment');var BPromise=require(_0xb01a('0x3'));var Mustache=require(_0xb01a('0x4'));var util=require(_0xb01a('0x5'));var path=require('path');var sox=require(_0xb01a('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb01a('0x7'));var squel=require(_0xb01a('0x8'));var crypto=require(_0xb01a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xb01a('0xa'));var toCsv=require(_0xb01a('0xb'));var querystring=require(_0xb01a('0xc'));var Papa=require(_0xb01a('0xd'));var Redis=require(_0xb01a('0xe'));var authService=require(_0xb01a('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xb01a('0x10'));var hardwareService=require(_0xb01a('0x11'));var logger=require('../../config/logger')(_0xb01a('0x12'));var utils=require(_0xb01a('0x13'));var config=require(_0xb01a('0x14'));var licenseUtil=require(_0xb01a('0x15'));var db=require(_0xb01a('0x16'))['db'];function respondWithStatusCode(_0x5c8cbb,_0x3cf0a6){_0x3cf0a6=_0x3cf0a6||0xcc;return function(_0x228835){if(_0x228835){return _0x5c8cbb['sendStatus'](_0x3cf0a6);}return _0x5c8cbb[_0xb01a('0x17')](_0x3cf0a6)['end']();};}function respondWithResult(_0x172e4b,_0x27c8f5){_0x27c8f5=_0x27c8f5||0xc8;return function(_0x3009e3){if(_0x3009e3){return _0x172e4b['status'](_0x27c8f5)[_0xb01a('0x18')](_0x3009e3);}};}function respondWithFilteredResult(_0x2a499a,_0x3d45a0){return function(_0x19d2e6){if(_0x19d2e6){var _0x1977ff=typeof _0x3d45a0['offset']==='undefined'&&typeof _0x3d45a0[_0xb01a('0x19')]===_0xb01a('0x1a');var _0x5d7ca7=_0x19d2e6[_0xb01a('0x1b')];var _0x1f0016=_0x1977ff?0x0:_0x3d45a0[_0xb01a('0x1c')];var _0x7d0ea9=_0x1977ff?_0x19d2e6['count']:_0x3d45a0[_0xb01a('0x1c')]+_0x3d45a0[_0xb01a('0x19')];var _0x328ef7;if(_0x7d0ea9>=_0x5d7ca7){_0x7d0ea9=_0x5d7ca7;_0x328ef7=0xc8;}else{_0x328ef7=0xce;}_0x2a499a['status'](_0x328ef7);return _0x2a499a[_0xb01a('0x1d')](_0xb01a('0x1e'),_0x1f0016+'-'+_0x7d0ea9+'/'+_0x5d7ca7)['json'](_0x19d2e6);}return null;};}function patchUpdates(_0x409fc3){return function(_0x1c3bcd){try{jsonpatch['apply'](_0x1c3bcd,_0x409fc3,!![]);}catch(_0x46b671){return BPromise[_0xb01a('0x1f')](_0x46b671);}return _0x1c3bcd['save']();};}function saveUpdates(_0x38efb8,_0x2ec87e){return function(_0x2b24df){if(_0x2b24df){return _0x2b24df[_0xb01a('0x20')](_0x38efb8)[_0xb01a('0x21')](function(_0x1fbfc2){return _0x1fbfc2;});}return null;};}function removeEntity(_0x158fb0,_0x38118d){return function(_0x20eb9a){if(_0x20eb9a){return _0x20eb9a[_0xb01a('0x22')]()[_0xb01a('0x21')](function(){_0x158fb0[_0xb01a('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x14a8fa,_0x22db12){return function(_0x27fb91){if(!_0x27fb91){_0x14a8fa[_0xb01a('0x23')](0x194);}return _0x27fb91;};}function handleError(_0x1eed5b,_0x3c866c){_0x3c866c=_0x3c866c||0x1f4;return function(_0x554d7d){logger[_0xb01a('0x24')](_0x554d7d['stack']);if(_0x554d7d[_0xb01a('0x25')]){delete _0x554d7d[_0xb01a('0x25')];}_0x1eed5b[_0xb01a('0x17')](_0x3c866c)[_0xb01a('0x26')](_0x554d7d);};}exports[_0xb01a('0x27')]=function(_0x294b6a,_0xfd952c){var _0x18ae67={},_0x51680a={},_0x422b3b={'count':0x0,'rows':[]};var _0x38c0bb=_['map'](db[_0xb01a('0x28')][_0xb01a('0x29')],function(_0x4bde34){return{'name':_0x4bde34[_0xb01a('0x2a')],'type':_0x4bde34[_0xb01a('0x2b')]['key']};});_0x51680a['model']=_[_0xb01a('0x2c')](_0x38c0bb,_0xb01a('0x25'));_0x51680a['query']=_[_0xb01a('0x2d')](_0x294b6a[_0xb01a('0x2e')]);_0x51680a['filters']=_[_0xb01a('0x2f')](_0x51680a['model'],_0x51680a[_0xb01a('0x2e')]);_0x18ae67[_0xb01a('0x30')]=_[_0xb01a('0x2f')](_0x51680a[_0xb01a('0x31')],qs[_0xb01a('0x32')](_0x294b6a['query'][_0xb01a('0x32')]));_0x18ae67[_0xb01a('0x30')]=_0x18ae67[_0xb01a('0x30')]['length']?_0x18ae67['attributes']:_0x51680a[_0xb01a('0x31')];if(!_0x294b6a[_0xb01a('0x2e')][_0xb01a('0x33')]('nolimit')){_0x18ae67[_0xb01a('0x19')]=qs[_0xb01a('0x19')](_0x294b6a['query'][_0xb01a('0x19')]);_0x18ae67[_0xb01a('0x1c')]=qs[_0xb01a('0x1c')](_0x294b6a[_0xb01a('0x2e')][_0xb01a('0x1c')]);}_0x18ae67[_0xb01a('0x34')]=qs[_0xb01a('0x35')](_0x294b6a[_0xb01a('0x2e')]['sort']);_0x18ae67[_0xb01a('0x36')]=qs[_0xb01a('0x37')](_[_0xb01a('0x38')](_0x294b6a[_0xb01a('0x2e')],_0x51680a['filters']),_0x38c0bb);if(_0x294b6a[_0xb01a('0x2e')]['filter']){_0x18ae67['where']=_[_0xb01a('0x39')](_0x18ae67['where'],{'$or':_[_0xb01a('0x2c')](_0x38c0bb,function(_0x8c1f0){if(_0x8c1f0[_0xb01a('0x2b')]!==_0xb01a('0x3a')){var _0x44e58f={};_0x44e58f[_0x8c1f0['name']]={'$like':'%'+_0x294b6a[_0xb01a('0x2e')][_0xb01a('0x3b')]+'%'};return _0x44e58f;}})});}_0x18ae67=_['merge']({},_0x18ae67,_0x294b6a[_0xb01a('0x3c')]);var _0x24c8bd={'where':_0x18ae67['where']};return db[_0xb01a('0x28')][_0xb01a('0x1b')](_0x24c8bd)[_0xb01a('0x21')](function(_0x1f4c77){_0x422b3b[_0xb01a('0x1b')]=_0x1f4c77;if(_0x294b6a[_0xb01a('0x2e')]['includeAll']){_0x18ae67[_0xb01a('0x3d')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0xb01a('0x3e')](_0x18ae67);})['then'](function(_0x314c71){_0x422b3b[_0xb01a('0x3f')]=_0x314c71;return _0x422b3b;})[_0xb01a('0x21')](respondWithFilteredResult(_0xfd952c,_0x18ae67))['catch'](handleError(_0xfd952c,null));};exports[_0xb01a('0x40')]=function(_0x45cdb9,_0x64f2b3){var _0x546630={'raw':!![],'where':{'id':_0x45cdb9['params']['id']}},_0xd14ff7={};_0xd14ff7['model']=_[_0xb01a('0x2d')](db[_0xb01a('0x28')][_0xb01a('0x29')]);_0xd14ff7[_0xb01a('0x2e')]=_['keys'](_0x45cdb9[_0xb01a('0x2e')]);_0xd14ff7[_0xb01a('0x37')]=_['intersection'](_0xd14ff7['model'],_0xd14ff7[_0xb01a('0x2e')]);_0x546630['attributes']=_['intersection'](_0xd14ff7[_0xb01a('0x31')],qs[_0xb01a('0x32')](_0x45cdb9[_0xb01a('0x2e')][_0xb01a('0x32')]));_0x546630[_0xb01a('0x30')]=_0x546630[_0xb01a('0x30')][_0xb01a('0x41')]?_0x546630['attributes']:_0xd14ff7[_0xb01a('0x31')];if(_0x45cdb9[_0xb01a('0x2e')][_0xb01a('0x42')]){_0x546630[_0xb01a('0x3d')]=[{'all':!![]}];}_0x546630=_[_0xb01a('0x39')]({},_0x546630,_0x45cdb9[_0xb01a('0x3c')]);return db[_0xb01a('0x28')][_0xb01a('0x43')](_0x546630)[_0xb01a('0x21')](handleEntityNotFound(_0x64f2b3,null))[_0xb01a('0x21')](respondWithResult(_0x64f2b3,null))[_0xb01a('0x44')](handleError(_0x64f2b3,null));};exports[_0xb01a('0x45')]=function(_0x2617d0,_0x455643){return db['JscriptyQuestionReport'][_0xb01a('0x45')](_0x2617d0['body'],{})[_0xb01a('0x21')](respondWithResult(_0x455643,0xc9))['catch'](handleError(_0x455643,null));};exports[_0xb01a('0x20')]=function(_0xd4d544,_0x3d1bf6){if(_0xd4d544['body']['id']){delete _0xd4d544[_0xb01a('0x46')]['id'];}return db[_0xb01a('0x28')]['find']({'where':{'id':_0xd4d544[_0xb01a('0x47')]['id']}})[_0xb01a('0x21')](handleEntityNotFound(_0x3d1bf6,null))[_0xb01a('0x21')](saveUpdates(_0xd4d544[_0xb01a('0x46')],null))[_0xb01a('0x21')](respondWithResult(_0x3d1bf6,null))[_0xb01a('0x44')](handleError(_0x3d1bf6,null));};exports[_0xb01a('0x22')]=function(_0xe41ea2,_0x3d2a98){return db[_0xb01a('0x28')][_0xb01a('0x43')]({'where':{'id':_0xe41ea2['params']['id']}})[_0xb01a('0x21')](handleEntityNotFound(_0x3d2a98,null))['then'](removeEntity(_0x3d2a98,null))[_0xb01a('0x44')](handleError(_0x3d2a98,null));};exports[_0xb01a('0x48')]=function(_0x2f4ad9,_0x2a0d96){return db[_0xb01a('0x28')][_0xb01a('0x48')]()[_0xb01a('0x21')](respondWithResult(_0x2a0d96,null))[_0xb01a('0x44')](handleError(_0x2a0d96,null));};
\ No newline at end of file
index 8436d41..1c2f359 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd300=['request-promise','path','rimraf','../../config/environment','define','util','api','moment'];(function(_0x57a985,_0x130a49){var _0x1b151b=function(_0x5e172a){while(--_0x5e172a){_0x57a985['push'](_0x57a985['shift']());}};_0x1b151b(++_0x130a49);}(_0xd300,0x135));var _0x0d30=function(_0x894278,_0x260254){_0x894278=_0x894278-0x0;var _0x4086fd=_0xd300[_0x894278];return _0x4086fd;};'use strict';var _=require('lodash');var util=require(_0x0d30('0x0'));var logger=require('../../config/logger')(_0x0d30('0x1'));var moment=require(_0x0d30('0x2'));var BPromise=require('bluebird');var rp=require(_0x0d30('0x3'));var fs=require('fs');var path=require(_0x0d30('0x4'));var rimraf=require(_0x0d30('0x5'));var config=require(_0x0d30('0x6'));var attributes=require('./jscriptyQuestionReport.attributes');module['exports']=function(_0x48e6b0,_0x24adf4){return _0x48e6b0[_0x0d30('0x7')]('JscriptyQuestionReport',attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd31a=['bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','JscriptyQuestionReport','report_jscripty_questions','lodash','util','api'];(function(_0xdd1a6,_0x51efa0){var _0x28cfb6=function(_0x2a3ab6){while(--_0x2a3ab6){_0xdd1a6['push'](_0xdd1a6['shift']());}};_0x28cfb6(++_0x51efa0);}(_0xd31a,0x141));var _0xad31=function(_0x232244,_0x145eb5){_0x232244=_0x232244-0x0;var _0x43d4f3=_0xd31a[_0x232244];return _0x43d4f3;};'use strict';var _=require(_0xad31('0x0'));var util=require(_0xad31('0x1'));var logger=require('../../config/logger')(_0xad31('0x2'));var moment=require('moment');var BPromise=require(_0xad31('0x3'));var rp=require(_0xad31('0x4'));var fs=require('fs');var path=require(_0xad31('0x5'));var rimraf=require(_0xad31('0x6'));var config=require(_0xad31('0x7'));var attributes=require(_0xad31('0x8'));module[_0xad31('0x9')]=function(_0x44ee70,_0xb0ebff){return _0x44ee70['define'](_0xad31('0xa'),attributes,{'tableName':_0xad31('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43043c7..2308a75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ec=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','result','message','catch','moment','bluebird','ioredis','../../mysqldb'];(function(_0x3958fe,_0x3c6605){var _0x1f27d6=function(_0x2bfb4a){while(--_0x2bfb4a){_0x3958fe['push'](_0x3958fe['shift']());}};_0x1f27d6(++_0x3c6605);}(_0xc6ec,0x1ca));var _0xcc6e=function(_0x11e03f,_0x20b967){_0x11e03f=_0x11e03f-0x0;var _0x5666fe=_0xc6ec[_0x11e03f];return _0x5666fe;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xcc6e('0x0'));var BPromise=require(_0xcc6e('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcc6e('0x2'));var db=require(_0xcc6e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xcc6e('0x4'))(_0xcc6e('0x5'));var config=require(_0xcc6e('0x6'));var jayson=require(_0xcc6e('0x7'));var client=jayson[_0xcc6e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x22e4df,_0x1c1723,_0x312184){return new BPromise(function(_0x3f2796,_0xb0e5bf){return client[_0xcc6e('0x9')](_0x22e4df,_0x312184)[_0xcc6e('0xa')](function(_0x55a0ea){logger[_0xcc6e('0xb')](_0xcc6e('0xc'),_0x1c1723,_0xcc6e('0xd'));logger[_0xcc6e('0xe')](_0xcc6e('0xf'),_0x1c1723,'request\x20sent',JSON[_0xcc6e('0x10')](_0x55a0ea));if(_0x55a0ea[_0xcc6e('0x11')]){if(_0x55a0ea[_0xcc6e('0x11')][_0xcc6e('0x12')]===0x1f4){logger[_0xcc6e('0x11')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x1c1723,_0x55a0ea[_0xcc6e('0x11')]['message']);return _0xb0e5bf(_0x55a0ea[_0xcc6e('0x11')]['message']);}logger['error'](_0xcc6e('0xc'),_0x1c1723,_0x55a0ea[_0xcc6e('0x11')]['message']);return _0x3f2796(_0x55a0ea[_0xcc6e('0x11')]['message']);}else{logger[_0xcc6e('0xb')](_0xcc6e('0xc'),_0x1c1723,_0xcc6e('0xd'));_0x3f2796(_0x55a0ea[_0xcc6e('0x13')][_0xcc6e('0x14')]);}})[_0xcc6e('0x15')](function(_0x4ae5ac){logger[_0xcc6e('0x11')](_0xcc6e('0xc'),_0x1c1723,_0x4ae5ac);_0xb0e5bf(_0x4ae5ac);});});}
\ No newline at end of file
+var _0x6a66=['info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then'];(function(_0x33ba78,_0xbcaa2d){var _0x24a8a8=function(_0x2c25f5){while(--_0x2c25f5){_0x33ba78['push'](_0x33ba78['shift']());}};_0x24a8a8(++_0xbcaa2d);}(_0x6a66,0xdc));var _0x66a6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6a66[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x66a6('0x0'));var moment=require(_0x66a6('0x1'));var BPromise=require('bluebird');var rs=require(_0x66a6('0x2'));var fs=require('fs');var Redis=require(_0x66a6('0x3'));var db=require(_0x66a6('0x4'))['db'];var utils=require(_0x66a6('0x5'));var logger=require(_0x66a6('0x6'))(_0x66a6('0x7'));var config=require(_0x66a6('0x8'));var jayson=require(_0x66a6('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3acbdb,_0x410730,_0x3f8083){return new BPromise(function(_0x577f20,_0x5529fe){return client['request'](_0x3acbdb,_0x3f8083)[_0x66a6('0xa')](function(_0x15d4d8){logger[_0x66a6('0xb')](_0x66a6('0xc'),_0x410730,_0x66a6('0xd'));logger[_0x66a6('0xe')](_0x66a6('0xf'),_0x410730,_0x66a6('0xd'),JSON['stringify'](_0x15d4d8));if(_0x15d4d8[_0x66a6('0x10')]){if(_0x15d4d8['error'][_0x66a6('0x11')]===0x1f4){logger[_0x66a6('0x10')](_0x66a6('0xc'),_0x410730,_0x15d4d8[_0x66a6('0x10')][_0x66a6('0x12')]);return _0x5529fe(_0x15d4d8[_0x66a6('0x10')]['message']);}logger['error'](_0x66a6('0xc'),_0x410730,_0x15d4d8[_0x66a6('0x10')][_0x66a6('0x12')]);return _0x577f20(_0x15d4d8[_0x66a6('0x10')]['message']);}else{logger['info'](_0x66a6('0xc'),_0x410730,_0x66a6('0xd'));_0x577f20(_0x15d4d8[_0x66a6('0x13')]['message']);}})[_0x66a6('0x14')](function(_0x1c9dbe){logger[_0x66a6('0x10')](_0x66a6('0xc'),_0x410730,_0x1c9dbe);_0x5529fe(_0x1c9dbe);});});}
\ No newline at end of file
index b8b0875..454a385 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a0a=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','delete','destroy'];(function(_0x4858b6,_0x4d4c3f){var _0x187975=function(_0x1a9bcd){while(--_0x1a9bcd){_0x4858b6['push'](_0x4858b6['shift']());}};_0x187975(++_0x4d4c3f);}(_0x6a0a,0x151));var _0xa6a0=function(_0x52a6e3,_0x4a73b4){_0x52a6e3=_0x52a6e3-0x0;var _0x8910d0=_0x6a0a[_0x52a6e3];return _0x8910d0;};'use strict';var multer=require(_0xa6a0('0x0'));var util=require(_0xa6a0('0x1'));var path=require(_0xa6a0('0x2'));var timeout=require(_0xa6a0('0x3'));var express=require(_0xa6a0('0x4'));var router=express[_0xa6a0('0x5')]();var fs_extra=require(_0xa6a0('0x6'));var auth=require(_0xa6a0('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa6a0('0x8'));router[_0xa6a0('0x9')]('/',auth[_0xa6a0('0xa')](),controller[_0xa6a0('0xb')]);router['get'](_0xa6a0('0xc'),auth[_0xa6a0('0xa')](),controller[_0xa6a0('0xd')]);router['get'](_0xa6a0('0xe'),auth[_0xa6a0('0xa')](),controller['show']);router['get']('/:id/questions',auth[_0xa6a0('0xa')](),controller['getQuestions']);router[_0xa6a0('0xf')]('/',auth['isAuthenticated'](),controller[_0xa6a0('0x10')]);router[_0xa6a0('0x11')](_0xa6a0('0xe'),auth[_0xa6a0('0xa')](),controller['update']);router[_0xa6a0('0x12')](_0xa6a0('0xe'),auth[_0xa6a0('0xa')](),controller[_0xa6a0('0x13')]);module[_0xa6a0('0x14')]=router;
\ No newline at end of file
+var _0x4caa=['describe','/:id','getQuestions','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index'];(function(_0x5d8937,_0x5b4f19){var _0x4f346c=function(_0x457316){while(--_0x457316){_0x5d8937['push'](_0x5d8937['shift']());}};_0x4f346c(++_0x5b4f19);}(_0x4caa,0x17d));var _0xa4ca=function(_0x14a321,_0x4889d9){_0x14a321=_0x14a321-0x0;var _0x16dd89=_0x4caa[_0x14a321];return _0x16dd89;};'use strict';var multer=require(_0xa4ca('0x0'));var util=require(_0xa4ca('0x1'));var path=require('path');var timeout=require(_0xa4ca('0x2'));var express=require(_0xa4ca('0x3'));var router=express[_0xa4ca('0x4')]();var fs_extra=require(_0xa4ca('0x5'));var auth=require(_0xa4ca('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./jscriptySessionReport.controller');router[_0xa4ca('0x7')]('/',auth[_0xa4ca('0x8')](),controller[_0xa4ca('0x9')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xa4ca('0xa')]);router['get'](_0xa4ca('0xb'),auth[_0xa4ca('0x8')](),controller['show']);router['get']('/:id/questions',auth[_0xa4ca('0x8')](),controller[_0xa4ca('0xc')]);router['post']('/',auth[_0xa4ca('0x8')](),controller['create']);router[_0xa4ca('0xd')](_0xa4ca('0xb'),auth[_0xa4ca('0x8')](),controller[_0xa4ca('0xe')]);router[_0xa4ca('0xf')]('/:id',auth[_0xa4ca('0x8')](),controller[_0xa4ca('0x10')]);module['exports']=router;
\ No newline at end of file
index dd54165..4f86b69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bdb=['DATE','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize','exports'];(function(_0x19112d,_0x7b5e2){var _0x4d7457=function(_0x135310){while(--_0x135310){_0x19112d['push'](_0x19112d['shift']());}};_0x4d7457(++_0x7b5e2);}(_0x9bdb,0x13c));var _0xb9bd=function(_0x10f602,_0x1279c5){_0x10f602=_0x10f602-0x0;var _0x1d5b87=_0x9bdb[_0x10f602];return _0x1d5b87;};'use strict';var moment=require(_0xb9bd('0x0'));var Sequelize=require(_0xb9bd('0x1'));module[_0xb9bd('0x2')]={'starttime':{'type':Sequelize[_0xb9bd('0x3')],'set':function(_0x55ece7){this[_0xb9bd('0x4')](_0xb9bd('0x5'),_0x55ece7);this[_0xb9bd('0x4')](_0xb9bd('0x6'),moment()[_0xb9bd('0x7')](_0xb9bd('0x8')));}},'endtime':{'type':Sequelize[_0xb9bd('0x3')]},'membername':{'type':Sequelize[_0xb9bd('0x9')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xb9bd('0x9')]},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb9bd('0x9')]},'completed':{'type':Sequelize[_0xb9bd('0xa')],'defaultValue':![]}};
\ No newline at end of file
+var _0x510c=['setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize','exports','DATE'];(function(_0x35d4e9,_0x298c61){var _0x5c2770=function(_0x2f326a){while(--_0x2f326a){_0x35d4e9['push'](_0x35d4e9['shift']());}};_0x5c2770(++_0x298c61);}(_0x510c,0xcd));var _0xc510=function(_0x4ea6ad,_0x79bfd7){_0x4ea6ad=_0x4ea6ad-0x0;var _0x15a270=_0x510c[_0x4ea6ad];return _0x15a270;};'use strict';var moment=require(_0xc510('0x0'));var Sequelize=require(_0xc510('0x1'));module[_0xc510('0x2')]={'starttime':{'type':Sequelize[_0xc510('0x3')],'set':function(_0x797d3d){this[_0xc510('0x4')](_0xc510('0x5'),_0x797d3d);this['setDataValue'](_0xc510('0x6'),moment()[_0xc510('0x7')](_0xc510('0x8')));}},'endtime':{'type':Sequelize[_0xc510('0x3')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0xc510('0x9')]},'queue':{'type':Sequelize[_0xc510('0x9')]},'uniqueid':{'type':Sequelize[_0xc510('0x9')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xc510('0x9')]},'completed':{'type':Sequelize[_0xc510('0xa')],'defaultValue':![]}};
\ No newline at end of file
index 898e131..98de1c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e6=['nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','keys','fields','include','body','find','describe','JscriptyQuestionReport','rawAttributes','hasOwnProperty','SessionId','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','squel','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','offset','undefined','count','limit','Content-Range','reject','save','update','then','destroy','end','stack','name','send','index','map','JscriptySessionReport','type','key','model','query','filters','intersection','attributes','length'];(function(_0x5a95fa,_0x4a2fc9){var _0x1a61b8=function(_0x59f119){while(--_0x59f119){_0x5a95fa['push'](_0x5a95fa['shift']());}};_0x1a61b8(++_0x4a2fc9);}(_0x28e6,0x64));var _0x628e=function(_0xfbc650,_0x4121aa){_0xfbc650=_0xfbc650-0x0;var _0x155e66=_0x28e6[_0xfbc650];return _0x155e66;};'use strict';var emlformat=require(_0x628e('0x0'));var rimraf=require(_0x628e('0x1'));var zipdir=require(_0x628e('0x2'));var jsonpatch=require(_0x628e('0x3'));var rp=require('request-promise');var moment=require(_0x628e('0x4'));var BPromise=require(_0x628e('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x628e('0x6'));var sox=require(_0x628e('0x7'));var csv=require(_0x628e('0x8'));var ejs=require(_0x628e('0x9'));var fs=require('fs');var fs_extra=require(_0x628e('0xa'));var _=require('lodash');var squel=require(_0x628e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x628e('0xc'));var toCsv=require(_0x628e('0x8'));var querystring=require(_0x628e('0xd'));var Papa=require(_0x628e('0xe'));var Redis=require(_0x628e('0xf'));var authService=require(_0x628e('0x10'));var qs=require(_0x628e('0x11'));var as=require(_0x628e('0x12'));var hardwareService=require(_0x628e('0x13'));var logger=require('../../config/logger')(_0x628e('0x14'));var utils=require(_0x628e('0x15'));var config=require(_0x628e('0x16'));var licenseUtil=require(_0x628e('0x17'));var db=require(_0x628e('0x18'))['db'];function respondWithStatusCode(_0x597fbb,_0x3aaed3){_0x3aaed3=_0x3aaed3||0xcc;return function(_0x42ef80){if(_0x42ef80){return _0x597fbb[_0x628e('0x19')](_0x3aaed3);}return _0x597fbb['status'](_0x3aaed3)['end']();};}function respondWithResult(_0x49b848,_0x5df318){_0x5df318=_0x5df318||0xc8;return function(_0x2e68ce){if(_0x2e68ce){return _0x49b848[_0x628e('0x1a')](_0x5df318)['json'](_0x2e68ce);}};}function respondWithFilteredResult(_0x5dcac0,_0x11336a){return function(_0x1a3a4f){if(_0x1a3a4f){var _0xffd6ff=typeof _0x11336a[_0x628e('0x1b')]===_0x628e('0x1c')&&typeof _0x11336a['limit']==='undefined';var _0x26b783=_0x1a3a4f[_0x628e('0x1d')];var _0x55b588=_0xffd6ff?0x0:_0x11336a[_0x628e('0x1b')];var _0x35e95f=_0xffd6ff?_0x1a3a4f[_0x628e('0x1d')]:_0x11336a[_0x628e('0x1b')]+_0x11336a[_0x628e('0x1e')];var _0x12d843;if(_0x35e95f>=_0x26b783){_0x35e95f=_0x26b783;_0x12d843=0xc8;}else{_0x12d843=0xce;}_0x5dcac0[_0x628e('0x1a')](_0x12d843);return _0x5dcac0['set'](_0x628e('0x1f'),_0x55b588+'-'+_0x35e95f+'/'+_0x26b783)['json'](_0x1a3a4f);}return null;};}function patchUpdates(_0x3d6568){return function(_0x2e6961){try{jsonpatch['apply'](_0x2e6961,_0x3d6568,!![]);}catch(_0x45ae3d){return BPromise[_0x628e('0x20')](_0x45ae3d);}return _0x2e6961[_0x628e('0x21')]();};}function saveUpdates(_0x54c401,_0x3ecace){return function(_0x5b7d9a){if(_0x5b7d9a){return _0x5b7d9a[_0x628e('0x22')](_0x54c401)[_0x628e('0x23')](function(_0x3774bf){return _0x3774bf;});}return null;};}function removeEntity(_0x5351d2,_0x5a57f5){return function(_0x496199){if(_0x496199){return _0x496199[_0x628e('0x24')]()['then'](function(){_0x5351d2[_0x628e('0x1a')](0xcc)[_0x628e('0x25')]();});}};}function handleEntityNotFound(_0x5b01dc,_0xbd0e58){return function(_0x1fef7a){if(!_0x1fef7a){_0x5b01dc[_0x628e('0x19')](0x194);}return _0x1fef7a;};}function handleError(_0x239434,_0x3d9f45){_0x3d9f45=_0x3d9f45||0x1f4;return function(_0x19bbde){logger['error'](_0x19bbde[_0x628e('0x26')]);if(_0x19bbde[_0x628e('0x27')]){delete _0x19bbde[_0x628e('0x27')];}_0x239434[_0x628e('0x1a')](_0x3d9f45)[_0x628e('0x28')](_0x19bbde);};}exports[_0x628e('0x29')]=function(_0x27c805,_0x4c6490){var _0x189228={},_0x5c4479={},_0xa1128b={'count':0x0,'rows':[]};var _0x25025a=_[_0x628e('0x2a')](db[_0x628e('0x2b')]['rawAttributes'],function(_0x1003ad){return{'name':_0x1003ad['fieldName'],'type':_0x1003ad[_0x628e('0x2c')][_0x628e('0x2d')]};});_0x5c4479[_0x628e('0x2e')]=_[_0x628e('0x2a')](_0x25025a,_0x628e('0x27'));_0x5c4479[_0x628e('0x2f')]=_['keys'](_0x27c805['query']);_0x5c4479[_0x628e('0x30')]=_[_0x628e('0x31')](_0x5c4479[_0x628e('0x2e')],_0x5c4479['query']);_0x189228[_0x628e('0x32')]=_['intersection'](_0x5c4479[_0x628e('0x2e')],qs['fields'](_0x27c805[_0x628e('0x2f')]['fields']));_0x189228[_0x628e('0x32')]=_0x189228['attributes'][_0x628e('0x33')]?_0x189228[_0x628e('0x32')]:_0x5c4479[_0x628e('0x2e')];if(!_0x27c805[_0x628e('0x2f')]['hasOwnProperty'](_0x628e('0x34'))){_0x189228['limit']=qs[_0x628e('0x1e')](_0x27c805[_0x628e('0x2f')][_0x628e('0x1e')]);_0x189228[_0x628e('0x1b')]=qs['offset'](_0x27c805[_0x628e('0x2f')]['offset']);}_0x189228[_0x628e('0x35')]=qs[_0x628e('0x36')](_0x27c805[_0x628e('0x2f')][_0x628e('0x36')]);_0x189228[_0x628e('0x37')]=qs[_0x628e('0x30')](_[_0x628e('0x38')](_0x27c805[_0x628e('0x2f')],_0x5c4479['filters']),_0x25025a);if(_0x27c805[_0x628e('0x2f')][_0x628e('0x39')]){_0x189228['where']=_[_0x628e('0x3a')](_0x189228[_0x628e('0x37')],{'$or':_[_0x628e('0x2a')](_0x25025a,function(_0x193834){if(_0x193834[_0x628e('0x2c')]!==_0x628e('0x3b')){var _0x16ac6b={};_0x16ac6b[_0x193834[_0x628e('0x27')]]={'$like':'%'+_0x27c805['query'][_0x628e('0x39')]+'%'};return _0x16ac6b;}})});}_0x189228=_[_0x628e('0x3a')]({},_0x189228,_0x27c805[_0x628e('0x3c')]);var _0x1bafc0={'where':_0x189228[_0x628e('0x37')]};return db[_0x628e('0x2b')]['count'](_0x1bafc0)[_0x628e('0x23')](function(_0x45d7ae){_0xa1128b[_0x628e('0x1d')]=_0x45d7ae;if(_0x27c805[_0x628e('0x2f')][_0x628e('0x3d')]){_0x189228['include']=[{'all':!![]}];}return db[_0x628e('0x2b')][_0x628e('0x3e')](_0x189228);})[_0x628e('0x23')](function(_0x1ab528){_0xa1128b[_0x628e('0x3f')]=_0x1ab528;return _0xa1128b;})[_0x628e('0x23')](respondWithFilteredResult(_0x4c6490,_0x189228))[_0x628e('0x40')](handleError(_0x4c6490,null));};exports['show']=function(_0x34db70,_0x53fc6b){var _0x2cf7b9={'raw':!![],'where':{'id':_0x34db70[_0x628e('0x41')]['id']}},_0x87e4a={};_0x87e4a[_0x628e('0x2e')]=_[_0x628e('0x42')](db[_0x628e('0x2b')]['rawAttributes']);_0x87e4a['query']=_['keys'](_0x34db70[_0x628e('0x2f')]);_0x87e4a[_0x628e('0x30')]=_['intersection'](_0x87e4a['model'],_0x87e4a['query']);_0x2cf7b9[_0x628e('0x32')]=_[_0x628e('0x31')](_0x87e4a[_0x628e('0x2e')],qs['fields'](_0x34db70[_0x628e('0x2f')][_0x628e('0x43')]));_0x2cf7b9[_0x628e('0x32')]=_0x2cf7b9[_0x628e('0x32')][_0x628e('0x33')]?_0x2cf7b9['attributes']:_0x87e4a[_0x628e('0x2e')];if(_0x34db70['query'][_0x628e('0x3d')]){_0x2cf7b9[_0x628e('0x44')]=[{'all':!![]}];}_0x2cf7b9=_['merge']({},_0x2cf7b9,_0x34db70[_0x628e('0x3c')]);return db[_0x628e('0x2b')]['find'](_0x2cf7b9)[_0x628e('0x23')](handleEntityNotFound(_0x53fc6b,null))['then'](respondWithResult(_0x53fc6b,null))[_0x628e('0x40')](handleError(_0x53fc6b,null));};exports['create']=function(_0x3aaddf,_0x2e0134){return db[_0x628e('0x2b')]['create'](_0x3aaddf[_0x628e('0x45')],{})['then'](respondWithResult(_0x2e0134,0xc9))['catch'](handleError(_0x2e0134,null));};exports[_0x628e('0x22')]=function(_0x5474f0,_0x25285c){if(_0x5474f0[_0x628e('0x45')]['id']){delete _0x5474f0[_0x628e('0x45')]['id'];}return db[_0x628e('0x2b')][_0x628e('0x46')]({'where':{'id':_0x5474f0[_0x628e('0x41')]['id']}})['then'](handleEntityNotFound(_0x25285c,null))[_0x628e('0x23')](saveUpdates(_0x5474f0[_0x628e('0x45')],null))[_0x628e('0x23')](respondWithResult(_0x25285c,null))[_0x628e('0x40')](handleError(_0x25285c,null));};exports[_0x628e('0x24')]=function(_0x1cf3e2,_0x257347){return db[_0x628e('0x2b')][_0x628e('0x46')]({'where':{'id':_0x1cf3e2['params']['id']}})['then'](handleEntityNotFound(_0x257347,null))[_0x628e('0x23')](removeEntity(_0x257347,null))[_0x628e('0x40')](handleError(_0x257347,null));};exports[_0x628e('0x47')]=function(_0x19c6e9,_0x4e657b){return db[_0x628e('0x2b')][_0x628e('0x47')]()[_0x628e('0x23')](respondWithResult(_0x4e657b,null))[_0x628e('0x40')](handleError(_0x4e657b,null));};exports['getQuestions']=function(_0x2602b5,_0x2a3e0b,_0x228961){var _0x3cf745={'raw':!![],'where':{}};var _0xd9602e={};var _0xb2a38d={'count':0x0,'rows':[]};return db[_0x628e('0x2b')]['findOne']({'where':{'id':_0x2602b5[_0x628e('0x41')]['id']}})[_0x628e('0x23')](handleEntityNotFound(_0x2a3e0b,null))['then'](function(_0x5df8a7){if(_0x5df8a7){_0xd9602e['model']=_[_0x628e('0x42')](db[_0x628e('0x48')][_0x628e('0x49')]);_0xd9602e[_0x628e('0x2f')]=_[_0x628e('0x42')](_0x2602b5[_0x628e('0x2f')]);_0xd9602e['filters']=_[_0x628e('0x31')](_0xd9602e['model'],_0xd9602e[_0x628e('0x2f')]);_0x3cf745['attributes']=_['intersection'](_0xd9602e[_0x628e('0x2e')],qs[_0x628e('0x43')](_0x2602b5[_0x628e('0x2f')]['fields']));_0x3cf745[_0x628e('0x32')]=_0x3cf745['attributes'][_0x628e('0x33')]?_0x3cf745[_0x628e('0x32')]:_0xd9602e[_0x628e('0x2e')];if(!_0x2602b5['query'][_0x628e('0x4a')](_0x628e('0x34'))){_0x3cf745[_0x628e('0x1e')]=qs['limit'](_0x2602b5[_0x628e('0x2f')][_0x628e('0x1e')]);_0x3cf745[_0x628e('0x1b')]=qs[_0x628e('0x1b')](_0x2602b5[_0x628e('0x2f')][_0x628e('0x1b')]);}_0x3cf745['order']=qs[_0x628e('0x36')](_0x2602b5[_0x628e('0x2f')][_0x628e('0x36')]);_0x3cf745[_0x628e('0x37')]=qs['filters'](_[_0x628e('0x38')](_0x2602b5[_0x628e('0x2f')],_0xd9602e['filters']));_0x3cf745[_0x628e('0x37')][_0x628e('0x4b')]=_0x5df8a7['id'];if(_0x2602b5[_0x628e('0x2f')][_0x628e('0x39')]){_0x3cf745[_0x628e('0x37')]=_[_0x628e('0x3a')](_0x3cf745['where'],{'$or':_['map'](_0x3cf745[_0x628e('0x32')],function(_0x227c27){var _0xe60daf={};_0xe60daf[_0x227c27]={'$like':'%'+_0x2602b5[_0x628e('0x2f')][_0x628e('0x39')]+'%'};return _0xe60daf;})});}_0x3cf745=_[_0x628e('0x3a')]({},_0x3cf745,_0x2602b5['options']);return db[_0x628e('0x48')]['count']({'where':_0x3cf745[_0x628e('0x37')]})[_0x628e('0x23')](function(_0x58907c){_0xb2a38d['count']=_0x58907c;if(_0x2602b5[_0x628e('0x2f')][_0x628e('0x3d')]){_0x3cf745[_0x628e('0x44')]=[{'all':!![]}];}return db[_0x628e('0x48')]['findAll'](_0x3cf745);})[_0x628e('0x23')](function(_0x3ea476){_0xb2a38d[_0x628e('0x3f')]=_0x3ea476;return _0xb2a38d;});}})[_0x628e('0x23')](respondWithFilteredResult(_0x2a3e0b,_0x3cf745))[_0x628e('0x40')](handleError(_0x2a3e0b,null));};
\ No newline at end of file
+var _0xfd05=['intersection','model','attributes','fields','length','nolimit','order','sort','filters','where','VIRTUAL','filter','merge','options','JscriptySessionReport','includeAll','include','catch','show','rawAttributes','find','create','body','params','destroy','describe','getQuestions','findOne','JscriptyQuestionReport','hasOwnProperty','pick','SessionId','rows','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','json','apply','save','then','sendStatus','stack','name','send','map','fieldName','type','key','keys','query'];(function(_0x54a60b,_0x18897c){var _0x1e607c=function(_0x20af19){while(--_0x20af19){_0x54a60b['push'](_0x54a60b['shift']());}};_0x1e607c(++_0x18897c);}(_0xfd05,0x165));var _0x5fd0=function(_0x2e89ee,_0x1c93c1){_0x2e89ee=_0x2e89ee-0x0;var _0x2a9209=_0xfd05[_0x2e89ee];return _0x2a9209;};'use strict';var emlformat=require(_0x5fd0('0x0'));var rimraf=require(_0x5fd0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5fd0('0x2'));var rp=require(_0x5fd0('0x3'));var moment=require(_0x5fd0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5fd0('0x5'));var util=require('util');var path=require(_0x5fd0('0x6'));var sox=require(_0x5fd0('0x7'));var csv=require(_0x5fd0('0x8'));var ejs=require(_0x5fd0('0x9'));var fs=require('fs');var fs_extra=require(_0x5fd0('0xa'));var _=require(_0x5fd0('0xb'));var squel=require(_0x5fd0('0xc'));var crypto=require(_0x5fd0('0xd'));var jsforce=require(_0x5fd0('0xe'));var deskjs=require(_0x5fd0('0xf'));var toCsv=require(_0x5fd0('0x8'));var querystring=require(_0x5fd0('0x10'));var Papa=require(_0x5fd0('0x11'));var Redis=require(_0x5fd0('0x12'));var authService=require(_0x5fd0('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x5fd0('0x14'));var hardwareService=require(_0x5fd0('0x15'));var logger=require(_0x5fd0('0x16'))(_0x5fd0('0x17'));var utils=require('../../config/utils');var config=require(_0x5fd0('0x18'));var licenseUtil=require(_0x5fd0('0x19'));var db=require(_0x5fd0('0x1a'))['db'];function respondWithStatusCode(_0x97349a,_0x1a0aa6){_0x1a0aa6=_0x1a0aa6||0xcc;return function(_0xb297c){if(_0xb297c){return _0x97349a['sendStatus'](_0x1a0aa6);}return _0x97349a[_0x5fd0('0x1b')](_0x1a0aa6)[_0x5fd0('0x1c')]();};}function respondWithResult(_0x4c4994,_0x46abcd){_0x46abcd=_0x46abcd||0xc8;return function(_0x38c087){if(_0x38c087){return _0x4c4994['status'](_0x46abcd)['json'](_0x38c087);}};}function respondWithFilteredResult(_0x107a88,_0x2979b0){return function(_0x364e98){if(_0x364e98){var _0x578bfe=typeof _0x2979b0[_0x5fd0('0x1d')]===_0x5fd0('0x1e')&&typeof _0x2979b0['limit']===_0x5fd0('0x1e');var _0x40dd16=_0x364e98[_0x5fd0('0x1f')];var _0x383c44=_0x578bfe?0x0:_0x2979b0[_0x5fd0('0x1d')];var _0x5e28b2=_0x578bfe?_0x364e98[_0x5fd0('0x1f')]:_0x2979b0[_0x5fd0('0x1d')]+_0x2979b0[_0x5fd0('0x20')];var _0x406439;if(_0x5e28b2>=_0x40dd16){_0x5e28b2=_0x40dd16;_0x406439=0xc8;}else{_0x406439=0xce;}_0x107a88[_0x5fd0('0x1b')](_0x406439);return _0x107a88[_0x5fd0('0x21')]('Content-Range',_0x383c44+'-'+_0x5e28b2+'/'+_0x40dd16)[_0x5fd0('0x22')](_0x364e98);}return null;};}function patchUpdates(_0x4d844d){return function(_0x852c1a){try{jsonpatch[_0x5fd0('0x23')](_0x852c1a,_0x4d844d,!![]);}catch(_0x3f6376){return BPromise['reject'](_0x3f6376);}return _0x852c1a[_0x5fd0('0x24')]();};}function saveUpdates(_0x5cada7,_0xc67f87){return function(_0xe3be6c){if(_0xe3be6c){return _0xe3be6c['update'](_0x5cada7)[_0x5fd0('0x25')](function(_0x4a045a){return _0x4a045a;});}return null;};}function removeEntity(_0x54411f,_0x49c0bb){return function(_0x1f0358){if(_0x1f0358){return _0x1f0358['destroy']()[_0x5fd0('0x25')](function(){_0x54411f[_0x5fd0('0x1b')](0xcc)[_0x5fd0('0x1c')]();});}};}function handleEntityNotFound(_0x503275,_0x18cd7e){return function(_0x5aaad0){if(!_0x5aaad0){_0x503275[_0x5fd0('0x26')](0x194);}return _0x5aaad0;};}function handleError(_0x111759,_0xe63642){_0xe63642=_0xe63642||0x1f4;return function(_0xb1c6b7){logger['error'](_0xb1c6b7[_0x5fd0('0x27')]);if(_0xb1c6b7[_0x5fd0('0x28')]){delete _0xb1c6b7[_0x5fd0('0x28')];}_0x111759['status'](_0xe63642)[_0x5fd0('0x29')](_0xb1c6b7);};}exports['index']=function(_0x25e950,_0x568462){var _0x28a218={},_0x4cf49f={},_0x5d4b3b={'count':0x0,'rows':[]};var _0x735bb6=_[_0x5fd0('0x2a')](db['JscriptySessionReport']['rawAttributes'],function(_0x4b763c){return{'name':_0x4b763c[_0x5fd0('0x2b')],'type':_0x4b763c[_0x5fd0('0x2c')][_0x5fd0('0x2d')]};});_0x4cf49f['model']=_[_0x5fd0('0x2a')](_0x735bb6,_0x5fd0('0x28'));_0x4cf49f['query']=_[_0x5fd0('0x2e')](_0x25e950[_0x5fd0('0x2f')]);_0x4cf49f['filters']=_[_0x5fd0('0x30')](_0x4cf49f[_0x5fd0('0x31')],_0x4cf49f[_0x5fd0('0x2f')]);_0x28a218[_0x5fd0('0x32')]=_[_0x5fd0('0x30')](_0x4cf49f[_0x5fd0('0x31')],qs[_0x5fd0('0x33')](_0x25e950[_0x5fd0('0x2f')][_0x5fd0('0x33')]));_0x28a218[_0x5fd0('0x32')]=_0x28a218[_0x5fd0('0x32')][_0x5fd0('0x34')]?_0x28a218[_0x5fd0('0x32')]:_0x4cf49f[_0x5fd0('0x31')];if(!_0x25e950[_0x5fd0('0x2f')]['hasOwnProperty'](_0x5fd0('0x35'))){_0x28a218[_0x5fd0('0x20')]=qs[_0x5fd0('0x20')](_0x25e950[_0x5fd0('0x2f')][_0x5fd0('0x20')]);_0x28a218[_0x5fd0('0x1d')]=qs[_0x5fd0('0x1d')](_0x25e950['query'][_0x5fd0('0x1d')]);}_0x28a218[_0x5fd0('0x36')]=qs[_0x5fd0('0x37')](_0x25e950[_0x5fd0('0x2f')][_0x5fd0('0x37')]);_0x28a218['where']=qs[_0x5fd0('0x38')](_['pick'](_0x25e950[_0x5fd0('0x2f')],_0x4cf49f[_0x5fd0('0x38')]),_0x735bb6);if(_0x25e950['query']['filter']){_0x28a218[_0x5fd0('0x39')]=_['merge'](_0x28a218[_0x5fd0('0x39')],{'$or':_[_0x5fd0('0x2a')](_0x735bb6,function(_0x5b8f18){if(_0x5b8f18['type']!==_0x5fd0('0x3a')){var _0x569253={};_0x569253[_0x5b8f18[_0x5fd0('0x28')]]={'$like':'%'+_0x25e950[_0x5fd0('0x2f')][_0x5fd0('0x3b')]+'%'};return _0x569253;}})});}_0x28a218=_[_0x5fd0('0x3c')]({},_0x28a218,_0x25e950[_0x5fd0('0x3d')]);var _0x2fc9d3={'where':_0x28a218[_0x5fd0('0x39')]};return db[_0x5fd0('0x3e')]['count'](_0x2fc9d3)[_0x5fd0('0x25')](function(_0x510edb){_0x5d4b3b[_0x5fd0('0x1f')]=_0x510edb;if(_0x25e950[_0x5fd0('0x2f')][_0x5fd0('0x3f')]){_0x28a218[_0x5fd0('0x40')]=[{'all':!![]}];}return db[_0x5fd0('0x3e')]['findAll'](_0x28a218);})[_0x5fd0('0x25')](function(_0x1a4963){_0x5d4b3b['rows']=_0x1a4963;return _0x5d4b3b;})[_0x5fd0('0x25')](respondWithFilteredResult(_0x568462,_0x28a218))[_0x5fd0('0x41')](handleError(_0x568462,null));};exports[_0x5fd0('0x42')]=function(_0x217224,_0x1398c1){var _0x955355={'raw':!![],'where':{'id':_0x217224['params']['id']}},_0x16e343={};_0x16e343[_0x5fd0('0x31')]=_[_0x5fd0('0x2e')](db[_0x5fd0('0x3e')][_0x5fd0('0x43')]);_0x16e343[_0x5fd0('0x2f')]=_[_0x5fd0('0x2e')](_0x217224['query']);_0x16e343['filters']=_[_0x5fd0('0x30')](_0x16e343[_0x5fd0('0x31')],_0x16e343[_0x5fd0('0x2f')]);_0x955355[_0x5fd0('0x32')]=_[_0x5fd0('0x30')](_0x16e343[_0x5fd0('0x31')],qs[_0x5fd0('0x33')](_0x217224[_0x5fd0('0x2f')][_0x5fd0('0x33')]));_0x955355['attributes']=_0x955355[_0x5fd0('0x32')][_0x5fd0('0x34')]?_0x955355[_0x5fd0('0x32')]:_0x16e343[_0x5fd0('0x31')];if(_0x217224[_0x5fd0('0x2f')][_0x5fd0('0x3f')]){_0x955355[_0x5fd0('0x40')]=[{'all':!![]}];}_0x955355=_[_0x5fd0('0x3c')]({},_0x955355,_0x217224[_0x5fd0('0x3d')]);return db[_0x5fd0('0x3e')][_0x5fd0('0x44')](_0x955355)['then'](handleEntityNotFound(_0x1398c1,null))[_0x5fd0('0x25')](respondWithResult(_0x1398c1,null))[_0x5fd0('0x41')](handleError(_0x1398c1,null));};exports[_0x5fd0('0x45')]=function(_0x24b2bc,_0x146b6f){return db[_0x5fd0('0x3e')][_0x5fd0('0x45')](_0x24b2bc['body'],{})[_0x5fd0('0x25')](respondWithResult(_0x146b6f,0xc9))[_0x5fd0('0x41')](handleError(_0x146b6f,null));};exports['update']=function(_0x3cfc7b,_0x52b00e){if(_0x3cfc7b[_0x5fd0('0x46')]['id']){delete _0x3cfc7b[_0x5fd0('0x46')]['id'];}return db[_0x5fd0('0x3e')][_0x5fd0('0x44')]({'where':{'id':_0x3cfc7b[_0x5fd0('0x47')]['id']}})['then'](handleEntityNotFound(_0x52b00e,null))[_0x5fd0('0x25')](saveUpdates(_0x3cfc7b[_0x5fd0('0x46')],null))['then'](respondWithResult(_0x52b00e,null))['catch'](handleError(_0x52b00e,null));};exports[_0x5fd0('0x48')]=function(_0x5950eb,_0x4b66e0){return db[_0x5fd0('0x3e')][_0x5fd0('0x44')]({'where':{'id':_0x5950eb[_0x5fd0('0x47')]['id']}})[_0x5fd0('0x25')](handleEntityNotFound(_0x4b66e0,null))[_0x5fd0('0x25')](removeEntity(_0x4b66e0,null))[_0x5fd0('0x41')](handleError(_0x4b66e0,null));};exports['describe']=function(_0x2576da,_0x1d6d84){return db[_0x5fd0('0x3e')][_0x5fd0('0x49')]()[_0x5fd0('0x25')](respondWithResult(_0x1d6d84,null))[_0x5fd0('0x41')](handleError(_0x1d6d84,null));};exports[_0x5fd0('0x4a')]=function(_0x33377b,_0x4c9353,_0x3e42bc){var _0x4b4321={'raw':!![],'where':{}};var _0x571913={};var _0x282900={'count':0x0,'rows':[]};return db[_0x5fd0('0x3e')][_0x5fd0('0x4b')]({'where':{'id':_0x33377b[_0x5fd0('0x47')]['id']}})[_0x5fd0('0x25')](handleEntityNotFound(_0x4c9353,null))[_0x5fd0('0x25')](function(_0x4753b3){if(_0x4753b3){_0x571913[_0x5fd0('0x31')]=_['keys'](db[_0x5fd0('0x4c')]['rawAttributes']);_0x571913['query']=_['keys'](_0x33377b[_0x5fd0('0x2f')]);_0x571913['filters']=_['intersection'](_0x571913[_0x5fd0('0x31')],_0x571913[_0x5fd0('0x2f')]);_0x4b4321['attributes']=_[_0x5fd0('0x30')](_0x571913[_0x5fd0('0x31')],qs['fields'](_0x33377b[_0x5fd0('0x2f')][_0x5fd0('0x33')]));_0x4b4321[_0x5fd0('0x32')]=_0x4b4321[_0x5fd0('0x32')][_0x5fd0('0x34')]?_0x4b4321[_0x5fd0('0x32')]:_0x571913[_0x5fd0('0x31')];if(!_0x33377b[_0x5fd0('0x2f')][_0x5fd0('0x4d')]('nolimit')){_0x4b4321[_0x5fd0('0x20')]=qs['limit'](_0x33377b[_0x5fd0('0x2f')][_0x5fd0('0x20')]);_0x4b4321[_0x5fd0('0x1d')]=qs[_0x5fd0('0x1d')](_0x33377b['query'][_0x5fd0('0x1d')]);}_0x4b4321[_0x5fd0('0x36')]=qs[_0x5fd0('0x37')](_0x33377b[_0x5fd0('0x2f')][_0x5fd0('0x37')]);_0x4b4321[_0x5fd0('0x39')]=qs['filters'](_[_0x5fd0('0x4e')](_0x33377b['query'],_0x571913[_0x5fd0('0x38')]));_0x4b4321[_0x5fd0('0x39')][_0x5fd0('0x4f')]=_0x4753b3['id'];if(_0x33377b['query'][_0x5fd0('0x3b')]){_0x4b4321[_0x5fd0('0x39')]=_[_0x5fd0('0x3c')](_0x4b4321[_0x5fd0('0x39')],{'$or':_[_0x5fd0('0x2a')](_0x4b4321[_0x5fd0('0x32')],function(_0x300607){var _0x3e5043={};_0x3e5043[_0x300607]={'$like':'%'+_0x33377b[_0x5fd0('0x2f')][_0x5fd0('0x3b')]+'%'};return _0x3e5043;})});}_0x4b4321=_[_0x5fd0('0x3c')]({},_0x4b4321,_0x33377b['options']);return db[_0x5fd0('0x4c')]['count']({'where':_0x4b4321[_0x5fd0('0x39')]})[_0x5fd0('0x25')](function(_0xb461b2){_0x282900['count']=_0xb461b2;if(_0x33377b['query'][_0x5fd0('0x3f')]){_0x4b4321[_0x5fd0('0x40')]=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x4b4321);})[_0x5fd0('0x25')](function(_0x523a4e){_0x282900[_0x5fd0('0x50')]=_0x523a4e;return _0x282900;});}})['then'](respondWithFilteredResult(_0x4c9353,_0x4b4321))[_0x5fd0('0x41')](handleError(_0x4c9353,null));};
\ No newline at end of file
index 3e5d83c..df86083 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6050=['../../config/environment','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x1511b9,_0x5f0d30){var _0x1cd71a=function(_0x1e35b3){while(--_0x1e35b3){_0x1511b9['push'](_0x1511b9['shift']());}};_0x1cd71a(++_0x5f0d30);}(_0x6050,0x196));var _0x0605=function(_0x4fa791,_0x913983){_0x4fa791=_0x4fa791-0x0;var _0x3f684e=_0x6050[_0x4fa791];return _0x3f684e;};'use strict';var _=require(_0x0605('0x0'));var util=require(_0x0605('0x1'));var logger=require(_0x0605('0x2'))(_0x0605('0x3'));var moment=require(_0x0605('0x4'));var BPromise=require(_0x0605('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0605('0x6'));var rimraf=require(_0x0605('0x7'));var config=require(_0x0605('0x8'));var attributes=require('./jscriptySessionReport.attributes');module['exports']=function(_0x4aca21,_0xd78d96){return _0x4aca21['define']('JscriptySessionReport',attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7bd0=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport'];(function(_0x1f77cc,_0xacb2df){var _0x1da892=function(_0x32cb83){while(--_0x32cb83){_0x1f77cc['push'](_0x1f77cc['shift']());}};_0x1da892(++_0xacb2df);}(_0x7bd0,0x111));var _0x07bd=function(_0x4e21ba,_0x18097f){_0x4e21ba=_0x4e21ba-0x0;var _0x55b94b=_0x7bd0[_0x4e21ba];return _0x55b94b;};'use strict';var _=require(_0x07bd('0x0'));var util=require(_0x07bd('0x1'));var logger=require(_0x07bd('0x2'))(_0x07bd('0x3'));var moment=require(_0x07bd('0x4'));var BPromise=require(_0x07bd('0x5'));var rp=require(_0x07bd('0x6'));var fs=require('fs');var path=require(_0x07bd('0x7'));var rimraf=require('rimraf');var config=require(_0x07bd('0x8'));var attributes=require(_0x07bd('0x9'));module[_0x07bd('0xa')]=function(_0x313548,_0x3e8349){return _0x313548[_0x07bd('0xb')](_0x07bd('0xc'),attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9c1526a..90456de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['client','http','then','info','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','JscriptySessionReport,\x20%s,\x20%s','message','result','catch','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x309dea,_0x59f1e2){var _0x6e7f1b=function(_0x385a66){while(--_0x385a66){_0x309dea['push'](_0x309dea['shift']());}};_0x6e7f1b(++_0x59f1e2);}(_0x0295,0x1f0));var _0x5029=function(_0x40d5cc,_0xf9d2c7){_0x40d5cc=_0x40d5cc-0x0;var _0x6950af=_0x0295[_0x40d5cc];return _0x6950af;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5029('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5029('0x2'))['db'];var utils=require(_0x5029('0x3'));var logger=require(_0x5029('0x4'))(_0x5029('0x5'));var config=require(_0x5029('0x6'));var jayson=require(_0x5029('0x7'));var client=jayson[_0x5029('0x8')][_0x5029('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b3cd,_0x502a62,_0x54978f){return new BPromise(function(_0x4ee867,_0xf4459b){return client['request'](_0x5b3cd,_0x54978f)[_0x5029('0xa')](function(_0x5bccfc){logger[_0x5029('0xb')]('JscriptySessionReport,\x20%s,\x20%s',_0x502a62,_0x5029('0xc'));logger[_0x5029('0xd')](_0x5029('0xe'),_0x502a62,'request\x20sent',JSON[_0x5029('0xf')](_0x5bccfc));if(_0x5bccfc[_0x5029('0x10')]){if(_0x5bccfc[_0x5029('0x10')]['code']===0x1f4){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc['error']['message']);return _0xf4459b(_0x5bccfc['error']['message']);}logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);return _0x4ee867(_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);}else{logger[_0x5029('0xb')](_0x5029('0x11'),_0x502a62,_0x5029('0xc'));_0x4ee867(_0x5bccfc[_0x5029('0x13')][_0x5029('0x12')]);}})[_0x5029('0x14')](function(_0x3786b5){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x3786b5);_0xf4459b(_0x3786b5);});});}
\ No newline at end of file
+var _0xfb11=['info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then'];(function(_0x49e66,_0x43f4b9){var _0x545549=function(_0x18b28f){while(--_0x18b28f){_0x49e66['push'](_0x49e66['shift']());}};_0x545549(++_0x43f4b9);}(_0xfb11,0x1ad));var _0x1fb1=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0xfb11[_0xb0f7c3];return _0x28ea68;};'use strict';var _=require(_0x1fb1('0x0'));var util=require('util');var moment=require(_0x1fb1('0x1'));var BPromise=require(_0x1fb1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1fb1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1fb1('0x4'));var logger=require('../../config/logger')(_0x1fb1('0x5'));var config=require(_0x1fb1('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x1fb1('0x7')][_0x1fb1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4c098d,_0x1859da,_0x2596c2){return new BPromise(function(_0x34e61a,_0x236b20){return client[_0x1fb1('0x9')](_0x4c098d,_0x2596c2)[_0x1fb1('0xa')](function(_0x438d15){logger[_0x1fb1('0xb')](_0x1fb1('0xc'),_0x1859da,_0x1fb1('0xd'));logger['debug'](_0x1fb1('0xe'),_0x1859da,'request\x20sent',JSON[_0x1fb1('0xf')](_0x438d15));if(_0x438d15['error']){if(_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x11')]===0x1f4){logger[_0x1fb1('0x10')](_0x1fb1('0xc'),_0x1859da,_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);return _0x236b20(_0x438d15['error'][_0x1fb1('0x12')]);}logger[_0x1fb1('0x10')](_0x1fb1('0xc'),_0x1859da,_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);return _0x34e61a(_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);}else{logger[_0x1fb1('0xb')](_0x1fb1('0xc'),_0x1859da,'request\x20sent');_0x34e61a(_0x438d15['result'][_0x1fb1('0x12')]);}})[_0x1fb1('0x13')](function(_0x3924ab){logger['error'](_0x1fb1('0xc'),_0x1859da,_0x3924ab);_0x236b20(_0x3924ab);});});}
\ No newline at end of file
index 06b5fd0..e23d30b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59cf=['/:id','update','exports','multer','util','path','../../components/auth/service','../../components/interaction/service','../../config/environment','get','put'];(function(_0x4e608f,_0x810614){var _0x3292c3=function(_0x4302e4){while(--_0x4302e4){_0x4e608f['push'](_0x4e608f['shift']());}};_0x3292c3(++_0x810614);}(_0x59cf,0x158));var _0xf59c=function(_0x46a3e8,_0x2e1b35){_0x46a3e8=_0x46a3e8-0x0;var _0xf1442e=_0x59cf[_0x46a3e8];return _0xf1442e;};'use strict';var multer=require(_0xf59c('0x0'));var util=require(_0xf59c('0x1'));var path=require(_0xf59c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf59c('0x3'));var interaction=require(_0xf59c('0x4'));var config=require(_0xf59c('0x5'));var controller=require('./license.controller');router[_0xf59c('0x6')]('/',controller['index']);router[_0xf59c('0x7')](_0xf59c('0x8'),auth['isAuthenticated'](),controller[_0xf59c('0x9')]);module[_0xf59c('0xa')]=router;
\ No newline at end of file
+var _0x4f5d=['index','put','/:id','isAuthenticated','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get'];(function(_0xaa2087,_0x26c74d){var _0x324247=function(_0x462216){while(--_0x462216){_0xaa2087['push'](_0xaa2087['shift']());}};_0x324247(++_0x26c74d);}(_0x4f5d,0x1d1));var _0xd4f5=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x4f5d[_0x50a0c2];return _0x5ebadd;};'use strict';var multer=require(_0xd4f5('0x0'));var util=require(_0xd4f5('0x1'));var path=require(_0xd4f5('0x2'));var timeout=require(_0xd4f5('0x3'));var express=require(_0xd4f5('0x4'));var router=express[_0xd4f5('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xd4f5('0x6'));var interaction=require(_0xd4f5('0x7'));var config=require(_0xd4f5('0x8'));var controller=require(_0xd4f5('0x9'));router[_0xd4f5('0xa')]('/',controller[_0xd4f5('0xb')]);router[_0xd4f5('0xc')](_0xd4f5('0xd'),auth[_0xd4f5('0xe')](),controller[_0xd4f5('0xf')]);module[_0xd4f5('0x10')]=router;
\ No newline at end of file
index 0e89131..407bbc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe096=['INTEGER','exports','TEXT','STRING'];(function(_0x21e6f1,_0x4d5eb5){var _0x44a394=function(_0x2d0e0e){while(--_0x2d0e0e){_0x21e6f1['push'](_0x21e6f1['shift']());}};_0x44a394(++_0x4d5eb5);}(_0xe096,0x1b5));var _0x6e09=function(_0x2e655a,_0x6d5799){_0x2e655a=_0x2e655a-0x0;var _0x26f13b=_0xe096[_0x2e655a];return _0x26f13b;};'use strict';var Sequelize=require('sequelize');module[_0x6e09('0x0')]={'license':{'type':Sequelize[_0x6e09('0x1')]},'data1':{'type':Sequelize[_0x6e09('0x2')]},'data2':{'type':Sequelize[_0x6e09('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x6e09('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xdda4=['INTEGER','sequelize','STRING'];(function(_0x337651,_0x2af690){var _0x20893c=function(_0x545dcd){while(--_0x545dcd){_0x337651['push'](_0x337651['shift']());}};_0x20893c(++_0x2af690);}(_0xdda4,0x145));var _0x4dda=function(_0x5317b5,_0x4dfd6e){_0x5317b5=_0x5317b5-0x0;var _0x3b7ce2=_0xdda4[_0x5317b5];return _0x3b7ce2;};'use strict';var Sequelize=require(_0x4dda('0x0'));module['exports']={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0x4dda('0x1')]},'data2':{'type':Sequelize[_0x4dda('0x1')]},'chatLicenseExceeded':{'type':Sequelize[_0x4dda('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index b39e736..605e5a5 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(_0x111d37,_0x2cd552){var _0x43a789=function(_0x2c99c4){while(--_0x2c99c4){_0x111d37['push'](_0x111d37['shift']());}};_0x43a789(++_0x2cd552);}(_0xabce,0x103));var _0xeabc=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xabce[_0x173d7e];return _0x2220d6;};'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 _0x1967=['params','checkLicense','key','demo','catch','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','set','apply','save','update','then','status','error','name','send','index','model','keys','rawAttributes','query','intersection','attributes','fields','merge','getLicense','body','find'];(function(_0x4d90a5,_0x3e3aef){var _0x5a9792=function(_0x1c48e7){while(--_0x1c48e7){_0x4d90a5['push'](_0x4d90a5['shift']());}};_0x5a9792(++_0x3e3aef);}(_0x1967,0x173));var _0x7196=function(_0x2be45a,_0x5e61ff){_0x2be45a=_0x2be45a-0x0;var _0x559924=_0x1967[_0x2be45a];return _0x559924;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7196('0x0'));var zipdir=require(_0x7196('0x1'));var jsonpatch=require(_0x7196('0x2'));var rp=require(_0x7196('0x3'));var moment=require(_0x7196('0x4'));var BPromise=require(_0x7196('0x5'));var Mustache=require(_0x7196('0x6'));var util=require(_0x7196('0x7'));var path=require(_0x7196('0x8'));var sox=require(_0x7196('0x9'));var csv=require('to-csv');var ejs=require(_0x7196('0xa'));var fs=require('fs');var fs_extra=require(_0x7196('0xb'));var _=require(_0x7196('0xc'));var squel=require(_0x7196('0xd'));var crypto=require(_0x7196('0xe'));var jsforce=require(_0x7196('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x7196('0x10'));var querystring=require(_0x7196('0x11'));var Papa=require(_0x7196('0x12'));var Redis=require(_0x7196('0x13'));var authService=require(_0x7196('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7196('0x15'));var logger=require(_0x7196('0x16'))(_0x7196('0x17'));var utils=require(_0x7196('0x18'));var config=require(_0x7196('0x19'));var licenseUtil=require(_0x7196('0x1a'));var db=require(_0x7196('0x1b'))['db'];function respondWithStatusCode(_0x325641,_0x24f1c3){_0x24f1c3=_0x24f1c3||0xcc;return function(_0xba707b){if(_0xba707b){return _0x325641[_0x7196('0x1c')](_0x24f1c3);}return _0x325641['status'](_0x24f1c3)[_0x7196('0x1d')]();};}function respondWithResult(_0x3feccd,_0x3545aa){_0x3545aa=_0x3545aa||0xc8;return function(_0xf098c1){if(_0xf098c1){return _0x3feccd['status'](_0x3545aa)[_0x7196('0x1e')](_0xf098c1);}};}function respondWithFilteredResult(_0x539414,_0xe32933){return function(_0x2590a6){if(_0x2590a6){var _0xf7e97=typeof _0xe32933[_0x7196('0x1f')]===_0x7196('0x20')&&typeof _0xe32933[_0x7196('0x21')]===_0x7196('0x20');var _0x1ed296=_0x2590a6[_0x7196('0x22')];var _0x32fe2b=_0xf7e97?0x0:_0xe32933[_0x7196('0x1f')];var _0x5b716a=_0xf7e97?_0x2590a6['count']:_0xe32933[_0x7196('0x1f')]+_0xe32933[_0x7196('0x21')];var _0x40418d;if(_0x5b716a>=_0x1ed296){_0x5b716a=_0x1ed296;_0x40418d=0xc8;}else{_0x40418d=0xce;}_0x539414['status'](_0x40418d);return _0x539414[_0x7196('0x23')]('Content-Range',_0x32fe2b+'-'+_0x5b716a+'/'+_0x1ed296)['json'](_0x2590a6);}return null;};}function patchUpdates(_0x296e07){return function(_0x627223){try{jsonpatch[_0x7196('0x24')](_0x627223,_0x296e07,!![]);}catch(_0x4ddf78){return BPromise['reject'](_0x4ddf78);}return _0x627223[_0x7196('0x25')]();};}function saveUpdates(_0x3cd8ff,_0x598a26){return function(_0x18649b){if(_0x18649b){return _0x18649b[_0x7196('0x26')](_0x3cd8ff)[_0x7196('0x27')](function(_0x18d389){return _0x18d389;});}return null;};}function removeEntity(_0x38b3d6,_0x549f34){return function(_0x3f8178){if(_0x3f8178){return _0x3f8178['destroy']()[_0x7196('0x27')](function(){_0x38b3d6[_0x7196('0x28')](0xcc)[_0x7196('0x1d')]();});}};}function handleEntityNotFound(_0xa69810,_0x70aa65){return function(_0x43f6a2){if(!_0x43f6a2){_0xa69810['sendStatus'](0x194);}return _0x43f6a2;};}function handleError(_0x57c404,_0x1482e5){_0x1482e5=_0x1482e5||0x1f4;return function(_0x2d284f){logger[_0x7196('0x29')](_0x2d284f['stack']);if(_0x2d284f['name']){delete _0x2d284f[_0x7196('0x2a')];}_0x57c404[_0x7196('0x28')](_0x1482e5)[_0x7196('0x2b')](_0x2d284f);};}var utilLicense=require('../../config/license/util');exports[_0x7196('0x2c')]=function(_0x4ecea1,_0x4fd339){var _0x59d79d={'raw':!![],'where':{'id':0x1}},_0x30151f={};_0x30151f[_0x7196('0x2d')]=_[_0x7196('0x2e')](db['License'][_0x7196('0x2f')]);_0x30151f[_0x7196('0x30')]=_[_0x7196('0x2e')](_0x4ecea1[_0x7196('0x30')]);_0x30151f['filters']=_[_0x7196('0x31')](_0x30151f[_0x7196('0x2d')],_0x30151f[_0x7196('0x30')]);_0x59d79d[_0x7196('0x32')]=_[_0x7196('0x31')](_0x30151f[_0x7196('0x2d')],qs[_0x7196('0x33')](_0x4ecea1[_0x7196('0x30')][_0x7196('0x33')]));_0x59d79d[_0x7196('0x32')]=_0x59d79d[_0x7196('0x32')]['length']?_0x59d79d[_0x7196('0x32')]:_0x30151f['model'];_0x59d79d=_[_0x7196('0x34')]({},_0x59d79d,_0x4ecea1['options']);return utilLicense[_0x7196('0x35')](_0x59d79d)[_0x7196('0x27')](respondWithResult(_0x4fd339,null))['catch'](handleError(_0x4fd339,null));};exports[_0x7196('0x26')]=function(_0x2bcadd,_0x4531d7){if(_0x2bcadd[_0x7196('0x36')]['id']){delete _0x2bcadd[_0x7196('0x36')]['id'];}return db['License'][_0x7196('0x37')]({'where':{'id':_0x2bcadd[_0x7196('0x38')]['id']}})[_0x7196('0x27')](handleEntityNotFound(_0x4531d7,null))[_0x7196('0x27')](function(_0x3e8f98){var _0x123cad=_0x3e8f98['get']({'plain':!![]});return utilLicense[_0x7196('0x39')](_0x123cad,_0x2bcadd[_0x7196('0x36')][_0x7196('0x3a')]);})['then'](function(_0x33831a){if(!_0x33831a[_0x7196('0x3b')]){return saveUpdates(_0x2bcadd[_0x7196('0x36')],null);}return _0x33831a;})[_0x7196('0x27')](respondWithResult(_0x4531d7,null))[_0x7196('0x3c')](handleError(_0x4531d7,null));};
\ No newline at end of file
index 4af89e4..2dae04f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9571=['path','rimraf','../../config/environment','./license.attributes','exports','define','License','util','../../config/logger','api','bluebird','request-promise'];(function(_0x14d968,_0x3c23e8){var _0x381c9f=function(_0x1e9dfe){while(--_0x1e9dfe){_0x14d968['push'](_0x14d968['shift']());}};_0x381c9f(++_0x3c23e8);}(_0x9571,0x11b));var _0x1957=function(_0x1064b8,_0x32e8ac){_0x1064b8=_0x1064b8-0x0;var _0x4a53bd=_0x9571[_0x1064b8];return _0x4a53bd;};'use strict';var _=require('lodash');var util=require(_0x1957('0x0'));var logger=require(_0x1957('0x1'))(_0x1957('0x2'));var moment=require('moment');var BPromise=require(_0x1957('0x3'));var rp=require(_0x1957('0x4'));var fs=require('fs');var path=require(_0x1957('0x5'));var rimraf=require(_0x1957('0x6'));var config=require(_0x1957('0x7'));var attributes=require(_0x1957('0x8'));module[_0x1957('0x9')]=function(_0x5503a1,_0x2ccdec){return _0x5503a1[_0x1957('0xa')](_0x1957('0xb'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e67=['rimraf','./license.attributes','License','license','lodash','util','../../config/logger','moment','bluebird','path'];(function(_0x5546e9,_0x464bba){var _0x347171=function(_0x2b4ac6){while(--_0x2b4ac6){_0x5546e9['push'](_0x5546e9['shift']());}};_0x347171(++_0x464bba);}(_0x2e67,0xa4));var _0x72e6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2e67[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x72e6('0x0'));var util=require(_0x72e6('0x1'));var logger=require(_0x72e6('0x2'))('api');var moment=require(_0x72e6('0x3'));var BPromise=require(_0x72e6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x72e6('0x5'));var rimraf=require(_0x72e6('0x6'));var config=require('../../config/environment');var attributes=require(_0x72e6('0x7'));module['exports']=function(_0x53e5e2,_0x1f3e46){return _0x53e5e2['define'](_0x72e6('0x8'),attributes,{'tableName':_0x72e6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a301f9a..ad24b74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4119=['License,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','stringify','error','code'];(function(_0x39804e,_0x5d5530){var _0x32a258=function(_0x5e9378){while(--_0x5e9378){_0x39804e['push'](_0x39804e['shift']());}};_0x32a258(++_0x5d5530);}(_0x4119,0x118));var _0x9411=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x4119[_0x5e3b04];return _0x1fc44d;};'use strict';var _=require('lodash');var util=require(_0x9411('0x0'));var moment=require(_0x9411('0x1'));var BPromise=require(_0x9411('0x2'));var rs=require(_0x9411('0x3'));var fs=require('fs');var Redis=require(_0x9411('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9411('0x5'));var logger=require(_0x9411('0x6'))(_0x9411('0x7'));var config=require(_0x9411('0x8'));var jayson=require(_0x9411('0x9'));var client=jayson[_0x9411('0xa')][_0x9411('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x15dbb7,_0x2eeba1,_0x54648f){return new BPromise(function(_0xb2e119,_0x3512b8){return client[_0x9411('0xc')](_0x15dbb7,_0x54648f)['then'](function(_0x47e300){logger[_0x9411('0xd')]('License,\x20%s,\x20%s',_0x2eeba1,_0x9411('0xe'));logger[_0x9411('0xf')]('License,\x20%s,\x20%s,\x20%s',_0x2eeba1,_0x9411('0xe'),JSON[_0x9411('0x10')](_0x47e300));if(_0x47e300[_0x9411('0x11')]){if(_0x47e300[_0x9411('0x11')][_0x9411('0x12')]===0x1f4){logger[_0x9411('0x11')](_0x9411('0x13'),_0x2eeba1,_0x47e300[_0x9411('0x11')][_0x9411('0x14')]);return _0x3512b8(_0x47e300[_0x9411('0x11')]['message']);}logger[_0x9411('0x11')]('License,\x20%s,\x20%s',_0x2eeba1,_0x47e300[_0x9411('0x11')][_0x9411('0x14')]);return _0xb2e119(_0x47e300['error'][_0x9411('0x14')]);}else{logger[_0x9411('0xd')]('License,\x20%s,\x20%s',_0x2eeba1,_0x9411('0xe'));_0xb2e119(_0x47e300[_0x9411('0x15')]['message']);}})[_0x9411('0x16')](function(_0x2c47cb){logger['error'](_0x9411('0x13'),_0x2eeba1,_0x2c47cb);_0x3512b8(_0x2c47cb);});});}
\ No newline at end of file
+var _0xbd96=['code','License,\x20%s,\x20%s','message','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','request','then','info','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4b2192,_0x5d1dd2){var _0x1d135d=function(_0x4c7f4d){while(--_0x4c7f4d){_0x4b2192['push'](_0x4b2192['shift']());}};_0x1d135d(++_0x5d1dd2);}(_0xbd96,0x16c));var _0x6bd9=function(_0x29da60,_0x496c11){_0x29da60=_0x29da60-0x0;var _0x215ec8=_0xbd96[_0x29da60];return _0x215ec8;};'use strict';var _=require('lodash');var util=require(_0x6bd9('0x0'));var moment=require(_0x6bd9('0x1'));var BPromise=require(_0x6bd9('0x2'));var rs=require(_0x6bd9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6bd9('0x4'))['db'];var utils=require(_0x6bd9('0x5'));var logger=require(_0x6bd9('0x6'))(_0x6bd9('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x539ee3,_0x462abf,_0x3e60d2){return new BPromise(function(_0x45c428,_0x4984e7){return client[_0x6bd9('0x8')](_0x539ee3,_0x3e60d2)[_0x6bd9('0x9')](function(_0x64e539){logger[_0x6bd9('0xa')]('License,\x20%s,\x20%s',_0x462abf,_0x6bd9('0xb'));logger[_0x6bd9('0xc')](_0x6bd9('0xd'),_0x462abf,_0x6bd9('0xb'),JSON[_0x6bd9('0xe')](_0x64e539));if(_0x64e539[_0x6bd9('0xf')]){if(_0x64e539[_0x6bd9('0xf')][_0x6bd9('0x10')]===0x1f4){logger[_0x6bd9('0xf')](_0x6bd9('0x11'),_0x462abf,_0x64e539[_0x6bd9('0xf')][_0x6bd9('0x12')]);return _0x4984e7(_0x64e539['error'][_0x6bd9('0x12')]);}logger[_0x6bd9('0xf')](_0x6bd9('0x11'),_0x462abf,_0x64e539[_0x6bd9('0xf')][_0x6bd9('0x12')]);return _0x45c428(_0x64e539[_0x6bd9('0xf')][_0x6bd9('0x12')]);}else{logger[_0x6bd9('0xa')](_0x6bd9('0x11'),_0x462abf,_0x6bd9('0xb'));_0x45c428(_0x64e539['result'][_0x6bd9('0x12')]);}})[_0x6bd9('0x13')](function(_0x1fdabb){logger[_0x6bd9('0xf')]('License,\x20%s,\x20%s',_0x462abf,_0x1fdabb);_0x4984e7(_0x1fdabb);});});}
\ No newline at end of file
index 9568368..b3850f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe81d=['getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','post','addDisposition','addAnswer','create','addImap','addSmtp','/:id/interactions','addInteraction','addApplications','/:id/send','send','/:id/users','addAgents','put','/:id','delete','removeDispositions','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp'];(function(_0x25bea7,_0x49ab45){var _0x175952=function(_0x56a0b5){while(--_0x56a0b5){_0x25bea7['push'](_0x25bea7['shift']());}};_0x175952(++_0x49ab45);}(_0xe81d,0x170));var _0xde81=function(_0x2933bd,_0x4ca964){_0x2933bd=_0x2933bd-0x0;var _0xe34777=_0xe81d[_0x2933bd];return _0xe34777;};'use strict';var multer=require(_0xde81('0x0'));var util=require(_0xde81('0x1'));var path=require(_0xde81('0x2'));var timeout=require(_0xde81('0x3'));var express=require(_0xde81('0x4'));var router=express[_0xde81('0x5')]();var fs_extra=require(_0xde81('0x6'));var auth=require(_0xde81('0x7'));var interaction=require(_0xde81('0x8'));var config=require(_0xde81('0x9'));var controller=require(_0xde81('0xa'));router[_0xde81('0xb')]('/',auth[_0xde81('0xc')](),controller[_0xde81('0xd')]);router['get'](_0xde81('0xe'),auth[_0xde81('0xc')](),controller[_0xde81('0xf')]);router[_0xde81('0xb')]('/:id',auth[_0xde81('0xc')](),controller['show']);router['get'](_0xde81('0x10'),auth[_0xde81('0xc')](),controller[_0xde81('0x11')]);router[_0xde81('0xb')](_0xde81('0x12'),auth[_0xde81('0xc')](),controller[_0xde81('0x13')]);router[_0xde81('0xb')](_0xde81('0x14'),auth['isAuthenticated'](),controller[_0xde81('0x15')]);router[_0xde81('0xb')](_0xde81('0x16'),auth['isAuthenticated'](),controller[_0xde81('0x17')]);router[_0xde81('0xb')]('/:id/interactions',auth[_0xde81('0xc')](),controller[_0xde81('0x18')]);router['get'](_0xde81('0x19'),auth[_0xde81('0xc')](),controller[_0xde81('0x1a')]);router['get'](_0xde81('0x1b'),auth[_0xde81('0xc')](),controller[_0xde81('0x1c')]);router[_0xde81('0xb')](_0xde81('0x1d'),auth[_0xde81('0xc')](),controller[_0xde81('0x1e')]);router[_0xde81('0xb')]('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0xde81('0x1f')](_0xde81('0x10'),auth[_0xde81('0xc')](),controller[_0xde81('0x20')]);router['post'](_0xde81('0x12'),auth[_0xde81('0xc')](),controller[_0xde81('0x21')]);router[_0xde81('0x1f')]('/',auth[_0xde81('0xc')](),controller[_0xde81('0x22')]);router[_0xde81('0x1f')]('/:id/in_servers',auth['isAuthenticated'](),controller[_0xde81('0x23')]);router['post'](_0xde81('0x16'),auth[_0xde81('0xc')](),controller[_0xde81('0x24')]);router[_0xde81('0x1f')](_0xde81('0x25'),auth[_0xde81('0xc')](),controller[_0xde81('0x26')]);router[_0xde81('0x1f')](_0xde81('0x19'),auth[_0xde81('0xc')](),controller[_0xde81('0x27')]);router['post'](_0xde81('0x28'),auth[_0xde81('0xc')](),controller[_0xde81('0x29')]);router[_0xde81('0x1f')](_0xde81('0x2a'),auth['isAuthenticated'](),controller[_0xde81('0x2b')]);router[_0xde81('0x2c')](_0xde81('0x2d'),auth[_0xde81('0xc')](),controller['update']);router[_0xde81('0x2e')](_0xde81('0x10'),auth[_0xde81('0xc')](),controller[_0xde81('0x2f')]);router[_0xde81('0x2e')]('/:id/canned_answers',auth['isAuthenticated'](),controller['removeAnswers']);router[_0xde81('0x2e')](_0xde81('0x14'),auth[_0xde81('0xc')](),controller['removeImap']);router[_0xde81('0x2e')](_0xde81('0x16'),auth[_0xde81('0xc')](),controller['removeSmtp']);router[_0xde81('0x2e')](_0xde81('0x2d'),auth[_0xde81('0xc')](),controller['destroy']);router['delete'](_0xde81('0x2a'),auth[_0xde81('0xc')](),controller[_0xde81('0x30')]);module['exports']=router;
\ No newline at end of file
+var _0xa2e4=['/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','post','addDisposition','addAnswer','create','addImap','addSmtp','addInteraction','addApplications','/:id/send','send','addAgents','update','delete','removeDispositions','removeAnswers','removeImap','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','/:id/out_servers','getSmtp','/:id/interactions','getInteractions'];(function(_0x5b94ac,_0x31ed03){var _0x39ec4c=function(_0xacb092){while(--_0xacb092){_0x5b94ac['push'](_0x5b94ac['shift']());}};_0x39ec4c(++_0x31ed03);}(_0xa2e4,0x17f));var _0x4a2e=function(_0x2a9ec5,_0xed23b){_0x2a9ec5=_0x2a9ec5-0x0;var _0x52c7c0=_0xa2e4[_0x2a9ec5];return _0x52c7c0;};'use strict';var multer=require(_0x4a2e('0x0'));var util=require(_0x4a2e('0x1'));var path=require(_0x4a2e('0x2'));var timeout=require(_0x4a2e('0x3'));var express=require(_0x4a2e('0x4'));var router=express[_0x4a2e('0x5')]();var fs_extra=require(_0x4a2e('0x6'));var auth=require(_0x4a2e('0x7'));var interaction=require(_0x4a2e('0x8'));var config=require(_0x4a2e('0x9'));var controller=require('./mailAccount.controller');router[_0x4a2e('0xa')]('/',auth[_0x4a2e('0xb')](),controller[_0x4a2e('0xc')]);router['get']('/describe',auth[_0x4a2e('0xb')](),controller[_0x4a2e('0xd')]);router['get'](_0x4a2e('0xe'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0xf')]);router[_0x4a2e('0xa')](_0x4a2e('0x10'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x11')]);router[_0x4a2e('0xa')](_0x4a2e('0x12'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x13')]);router[_0x4a2e('0xa')](_0x4a2e('0x14'),auth['isAuthenticated'](),controller['getImap']);router[_0x4a2e('0xa')](_0x4a2e('0x15'),auth['isAuthenticated'](),controller[_0x4a2e('0x16')]);router[_0x4a2e('0xa')](_0x4a2e('0x17'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x18')]);router[_0x4a2e('0xa')](_0x4a2e('0x19'),auth['isAuthenticated'](),controller[_0x4a2e('0x1a')]);router['get'](_0x4a2e('0x1b'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x1c')]);router[_0x4a2e('0xa')](_0x4a2e('0x1d'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x1e')]);router[_0x4a2e('0xa')](_0x4a2e('0x1f'),auth['isAuthenticated'](),controller['getAgents']);router[_0x4a2e('0x20')](_0x4a2e('0x10'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x21')]);router[_0x4a2e('0x20')](_0x4a2e('0x12'),auth['isAuthenticated'](),controller[_0x4a2e('0x22')]);router[_0x4a2e('0x20')]('/',auth['isAuthenticated'](),controller[_0x4a2e('0x23')]);router[_0x4a2e('0x20')]('/:id/in_servers',auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x24')]);router[_0x4a2e('0x20')](_0x4a2e('0x15'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x25')]);router[_0x4a2e('0x20')](_0x4a2e('0x17'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x26')]);router[_0x4a2e('0x20')]('/:id/applications',auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x27')]);router[_0x4a2e('0x20')](_0x4a2e('0x28'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x29')]);router[_0x4a2e('0x20')](_0x4a2e('0x1f'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x2a')]);router['put'](_0x4a2e('0xe'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x2b')]);router[_0x4a2e('0x2c')]('/:id/dispositions',auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x2d')]);router[_0x4a2e('0x2c')](_0x4a2e('0x12'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x2e')]);router[_0x4a2e('0x2c')](_0x4a2e('0x14'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x2f')]);router[_0x4a2e('0x2c')]('/:id/out_servers',auth[_0x4a2e('0xb')](),controller['removeSmtp']);router[_0x4a2e('0x2c')](_0x4a2e('0xe'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x30')]);router[_0x4a2e('0x2c')](_0x4a2e('0x1f'),auth[_0x4a2e('0xb')](),controller[_0x4a2e('0x31')]);module[_0x4a2e('0x32')]=router;
\ No newline at end of file
index edc5381..f30f83a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3a8=['STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports'];(function(_0x533daf,_0x19a7bf){var _0x3c161f=function(_0x521824){while(--_0x521824){_0x533daf['push'](_0x533daf['shift']());}};_0x3c161f(++_0x19a7bf);}(_0xc3a8,0xe8));var _0x8c3a=function(_0x5bc95c,_0xfed759){_0x5bc95c=_0x5bc95c-0x0;var _0x3721fc=_0xc3a8[_0x5bc95c];return _0x3721fc;};'use strict';var Sequelize=require(_0x8c3a('0x0'));module[_0x8c3a('0x1')]={'description':{'type':Sequelize[_0x8c3a('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0x8c3a('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x8c3a('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0x8c3a('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x8c3a('0x4')]},'markAsUnread':{'type':Sequelize[_0x8c3a('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8c3a('0x5')},'fontSize':{'type':Sequelize[_0x8c3a('0x6')](0x2)[_0x8c3a('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x8c3a('0x4')],'defaultValue':function(){return _0x8c3a('0x8');}},'notificationSound':{'type':Sequelize[_0x8c3a('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x8c3a('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x8c3a('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x8c3a('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x8c3a('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x8c3a('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x8c3a('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x8c3a('0x3')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x451726){if(!_0x451726)this[_0x8c3a('0xa')](_0x8c3a('0xb'),null);this[_0x8c3a('0xa')](_0x8c3a('0xc'),_0x451726);}}};
\ No newline at end of file
+var _0x0f9f=['BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING'];(function(_0x4552c6,_0x266f63){var _0x4e70c8=function(_0x337fb7){while(--_0x337fb7){_0x4552c6['push'](_0x4552c6['shift']());}};_0x4e70c8(++_0x266f63);}(_0x0f9f,0x1cc));var _0xf0f9=function(_0x1d1cac,_0x2a142c){_0x1d1cac=_0x1d1cac-0x0;var _0x4557a0=_0x0f9f[_0x1d1cac];return _0x4557a0;};'use strict';var Sequelize=require('sequelize');module[_0xf0f9('0x0')]={'description':{'type':Sequelize[_0xf0f9('0x1')]},'name':{'type':Sequelize[_0xf0f9('0x1')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xf0f9('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xf0f9('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0xf0f9('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0xf0f9('0x3')]},'markAsUnread':{'type':Sequelize[_0xf0f9('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xf0f9('0x1')],'allowNull':![],'defaultValue':_0xf0f9('0x4')},'fontSize':{'type':Sequelize[_0xf0f9('0x5')](0x2)[_0xf0f9('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xf0f9('0x3')],'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[_0xf0f9('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf0f9('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf0f9('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf0f9('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf0f9('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf0f9('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0xf0f9('0x7')},'mandatoryDisposition':{'type':Sequelize[_0xf0f9('0x2')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x5ded1c){if(!_0x5ded1c)this[_0xf0f9('0x8')](_0xf0f9('0x9'),null);this[_0xf0f9('0x8')](_0xf0f9('0xa'),_0x5ded1c);}}};
\ No newline at end of file
index 2d2cc45..17b6040 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x198a=['setImap','getSmtp','addSmtp','removeSmtp','MailInteraction','addInteraction','omit','getInteractions','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','MailApplication','bulkCreate','findAndCountAll','priority','getApplications','getMessages','$gte','split','MailMessage','inlineCss','true','CmList','List','CmContact','updatedAt','format','%s\x20<%s>','email','attachments','join','root','server/files/attachments','basename','auth','secure','SendMail','sendMail','List\x20not\x20found','Contacts','messageId','from','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','VerifySmtp','destroy','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','catch','sendStatus','status','end','limit','count','offset','set','json','apply','reject','save','update','get','MailAccounts','stack','name','send','index','MailServerIn','Imap','Smtp','MailAccount','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','show','Pause','mandatoryDispositionPause','rawAttributes','includeAll','body','find','MailServerOut','describe','addDisposition','params','MailAccountId','create','getDispositions','findOne','Disposition','hasOwnProperty','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','ListId','isNil','active','description','cservice','cauthentication','user','cuser','password','pass','authentication','host','port','service','cpassword','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','getImap','addImap','removeImap'];(function(_0x45f07d,_0x113bc9){var _0x6337e=function(_0x28f93c){while(--_0x28f93c){_0x45f07d['push'](_0x45f07d['shift']());}};_0x6337e(++_0x113bc9);}(_0x198a,0x1d5));var _0xa198=function(_0x44cf2e,_0x438308){_0x44cf2e=_0x44cf2e-0x0;var _0x33da7c=_0x198a[_0x44cf2e];return _0x33da7c;};'use strict';var emlformat=require(_0xa198('0x0'));var rimraf=require(_0xa198('0x1'));var zipdir=require(_0xa198('0x2'));var jsonpatch=require(_0xa198('0x3'));var rp=require(_0xa198('0x4'));var moment=require('moment');var BPromise=require(_0xa198('0x5'));var Mustache=require(_0xa198('0x6'));var util=require(_0xa198('0x7'));var path=require(_0xa198('0x8'));var sox=require(_0xa198('0x9'));var csv=require(_0xa198('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa198('0xb'));var _=require(_0xa198('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa198('0xd'));var deskjs=require(_0xa198('0xe'));var toCsv=require(_0xa198('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var htmlToText=require('html-to-text');var juice=require('juice');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa198('0xf'));var as=require(_0xa198('0x10'));var hardwareService=require(_0xa198('0x11'));var logger=require(_0xa198('0x12'))(_0xa198('0x13'));var utils=require('../../config/utils');var config=require(_0xa198('0x14'));var licenseUtil=require(_0xa198('0x15'));var db=require('../../mysqldb')['db'];config[_0xa198('0x16')]=_[_0xa198('0x17')](config[_0xa198('0x16')],{'host':_0xa198('0x18'),'port':0x18eb});var socket=require(_0xa198('0x19'))(new Redis(config['redis']));require('./mailAccount.socket')[_0xa198('0x1a')](socket);var jayson=require(_0xa198('0x1b'));var client=jayson[_0xa198('0x1c')]['http']({'port':0x232b});function respondWithRpcPromise(_0x36d7e0,_0x50bdb6,_0x40b9d6,_0x393c13){return new BPromise(function(_0x55d6f3,_0x34ece5){var _0x5c05f9=_0x393c13||client;return _0x5c05f9[_0xa198('0x1d')](_0x36d7e0,_0x40b9d6)[_0xa198('0x1e')](function(_0x554208){logger[_0xa198('0x1f')](_0xa198('0x20'),_0x50bdb6,_0xa198('0x21'));logger[_0xa198('0x22')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x50bdb6,_0xa198('0x21'),JSON[_0xa198('0x23')](_0x554208));if(_0x554208['error']){if(_0x554208['error'][_0xa198('0x24')]===0x1f4){logger[_0xa198('0x25')]('MailAccount,\x20%s,\x20%s',_0x50bdb6,_0x554208[_0xa198('0x25')][_0xa198('0x26')]);return _0x34ece5(_0x554208['error'][_0xa198('0x26')]);}logger[_0xa198('0x25')](_0xa198('0x20'),_0x50bdb6,_0x554208[_0xa198('0x25')][_0xa198('0x26')]);return _0x55d6f3(_0x554208[_0xa198('0x25')][_0xa198('0x26')]);}else{logger[_0xa198('0x1f')](_0xa198('0x20'),_0x50bdb6,'request\x20sent');_0x55d6f3(_0x554208[_0xa198('0x27')][_0xa198('0x26')]);}})[_0xa198('0x28')](function(_0x1348a1){logger[_0xa198('0x25')](_0xa198('0x20'),_0x50bdb6,_0x1348a1);_0x34ece5(_0x1348a1);});});}function respondWithStatusCode(_0x343a88,_0x3b81f3){_0x3b81f3=_0x3b81f3||0xcc;return function(_0x426690){if(_0x426690){return _0x343a88[_0xa198('0x29')](_0x3b81f3);}return _0x343a88[_0xa198('0x2a')](_0x3b81f3)[_0xa198('0x2b')]();};}function respondWithResult(_0x1c9a21,_0x6ab39){_0x6ab39=_0x6ab39||0xc8;return function(_0x209bbe){if(_0x209bbe){return _0x1c9a21['status'](_0x6ab39)['json'](_0x209bbe);}};}function respondWithFilteredResult(_0x9b7bba,_0x26cc3b){return function(_0x4b5e56){if(_0x4b5e56){var _0x22bb1d=typeof _0x26cc3b['offset']==='undefined'&&typeof _0x26cc3b[_0xa198('0x2c')]==='undefined';var _0x285274=_0x4b5e56[_0xa198('0x2d')];var _0x159a18=_0x22bb1d?0x0:_0x26cc3b[_0xa198('0x2e')];var _0x3d7ef0=_0x22bb1d?_0x4b5e56[_0xa198('0x2d')]:_0x26cc3b[_0xa198('0x2e')]+_0x26cc3b[_0xa198('0x2c')];var _0x50042c;if(_0x3d7ef0>=_0x285274){_0x3d7ef0=_0x285274;_0x50042c=0xc8;}else{_0x50042c=0xce;}_0x9b7bba[_0xa198('0x2a')](_0x50042c);return _0x9b7bba[_0xa198('0x2f')]('Content-Range',_0x159a18+'-'+_0x3d7ef0+'/'+_0x285274)[_0xa198('0x30')](_0x4b5e56);}return null;};}function patchUpdates(_0x4212c1){return function(_0x5f5198){try{jsonpatch[_0xa198('0x31')](_0x5f5198,_0x4212c1,!![]);}catch(_0x647845){return BPromise[_0xa198('0x32')](_0x647845);}return _0x5f5198[_0xa198('0x33')]();};}function saveUpdates(_0x55cab8,_0xc1b5f1){return function(_0x1c6118){if(_0x1c6118){return _0x1c6118[_0xa198('0x34')](_0x55cab8)['then'](function(_0x6354aa){return _0x6354aa;});}return null;};}function removeEntity(_0x333e2b,_0x19b290){return function(_0x2892f4){if(_0x2892f4){return _0x2892f4['destroy']()['then'](function(){var _0x60d59b=_0x2892f4[_0xa198('0x35')]({'plain':!![]});var _0x533c3b=_0xa198('0x36');return db['UserProfileResource']['destroy']({'where':{'type':_0x533c3b,'resourceId':_0x60d59b['id']}})[_0xa198('0x1e')](function(){return _0x2892f4;});})[_0xa198('0x1e')](function(){_0x333e2b[_0xa198('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3dfc37,_0x48ce2d){return function(_0x4ae291){if(!_0x4ae291){_0x3dfc37[_0xa198('0x29')](0x194);}return _0x4ae291;};}function handleError(_0x36050d,_0x50b00b){_0x50b00b=_0x50b00b||0x1f4;return function(_0x1c4df4){logger[_0xa198('0x25')](_0x1c4df4[_0xa198('0x37')]);if(_0x1c4df4[_0xa198('0x38')]){delete _0x1c4df4['name'];}_0x36050d[_0xa198('0x2a')](_0x50b00b)[_0xa198('0x39')](_0x1c4df4);};}exports[_0xa198('0x3a')]=function(_0x136aba,_0x4fb074){var _0x31f243={'include':[{'model':db[_0xa198('0x3b')],'as':_0xa198('0x3c')},{'model':db['MailServerOut'],'as':_0xa198('0x3d')},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x1b977f={},_0x100c52={'count':0x0,'rows':[]};var _0x11838b=_['map'](db[_0xa198('0x3e')]['rawAttributes'],function(_0x243268){return{'name':_0x243268['fieldName'],'type':_0x243268['type'][_0xa198('0x3f')]};});_0x1b977f[_0xa198('0x40')]=_[_0xa198('0x41')](_0x11838b,_0xa198('0x38'));_0x1b977f[_0xa198('0x42')]=_[_0xa198('0x43')](_0x136aba['query']);_0x1b977f[_0xa198('0x44')]=_[_0xa198('0x45')](_0x1b977f[_0xa198('0x40')],_0x1b977f[_0xa198('0x42')]);_0x31f243[_0xa198('0x46')]=_[_0xa198('0x45')](_0x1b977f[_0xa198('0x40')],qs[_0xa198('0x47')](_0x136aba['query'][_0xa198('0x47')]));_0x31f243['attributes']=_0x31f243[_0xa198('0x46')][_0xa198('0x48')]?_0x31f243['attributes']:_0x1b977f[_0xa198('0x40')];if(!_0x136aba[_0xa198('0x42')]['hasOwnProperty'](_0xa198('0x49'))){_0x31f243['limit']=qs[_0xa198('0x2c')](_0x136aba[_0xa198('0x42')][_0xa198('0x2c')]);_0x31f243[_0xa198('0x2e')]=qs[_0xa198('0x2e')](_0x136aba['query'][_0xa198('0x2e')]);}_0x31f243[_0xa198('0x4a')]=qs[_0xa198('0x4b')](_0x136aba['query'][_0xa198('0x4b')]);_0x31f243[_0xa198('0x4c')]=qs[_0xa198('0x44')](_[_0xa198('0x4d')](_0x136aba[_0xa198('0x42')],_0x1b977f[_0xa198('0x44')]),_0x11838b);if(_0x136aba[_0xa198('0x42')][_0xa198('0x4e')]){_0x31f243['where']=_[_0xa198('0x4f')](_0x31f243[_0xa198('0x4c')],{'$or':_[_0xa198('0x41')](_0x11838b,function(_0x286bbf){if(_0x286bbf[_0xa198('0x50')]!==_0xa198('0x51')){var _0x8f2983={};_0x8f2983[_0x286bbf['name']]={'$like':'%'+_0x136aba['query']['filter']+'%'};return _0x8f2983;}})});}_0x31f243=_['merge']({},_0x31f243,_0x136aba[_0xa198('0x52')]);var _0x5c61c8={'where':_0x31f243[_0xa198('0x4c')]};return db[_0xa198('0x3e')][_0xa198('0x2d')](_0x5c61c8)[_0xa198('0x1e')](function(_0x553ccc){_0x100c52[_0xa198('0x2d')]=_0x553ccc;if(_0x136aba[_0xa198('0x42')]['includeAll']){_0x31f243[_0xa198('0x53')]=[{'all':!![]}];}return db[_0xa198('0x3e')][_0xa198('0x54')](_0x31f243);})[_0xa198('0x1e')](function(_0x1da31e){_0x100c52[_0xa198('0x55')]=_0x1da31e;return _0x100c52;})[_0xa198('0x1e')](respondWithFilteredResult(_0x4fb074,_0x31f243))[_0xa198('0x28')](handleError(_0x4fb074,null));};exports[_0xa198('0x56')]=function(_0x5af4c1,_0x3cefca){var _0x1dc2b={'raw':![],'where':{'id':_0x5af4c1['params']['id']},'include':[{'model':db[_0xa198('0x3b')],'as':_0xa198('0x3c')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0xa198('0x57')],'as':_0xa198('0x58')}]},_0x54fba6={};_0x54fba6[_0xa198('0x40')]=_['keys'](db[_0xa198('0x3e')][_0xa198('0x59')]);_0x54fba6[_0xa198('0x42')]=_['keys'](_0x5af4c1[_0xa198('0x42')]);_0x54fba6['filters']=_[_0xa198('0x45')](_0x54fba6[_0xa198('0x40')],_0x54fba6[_0xa198('0x42')]);_0x1dc2b[_0xa198('0x46')]=_[_0xa198('0x45')](_0x54fba6['model'],qs[_0xa198('0x47')](_0x5af4c1['query'][_0xa198('0x47')]));_0x1dc2b[_0xa198('0x46')]=_0x1dc2b[_0xa198('0x46')][_0xa198('0x48')]?_0x1dc2b[_0xa198('0x46')]:_0x54fba6[_0xa198('0x40')];if(_0x5af4c1['query'][_0xa198('0x5a')]){_0x1dc2b[_0xa198('0x53')]=[{'all':!![]}];}_0x1dc2b=_[_0xa198('0x4f')]({},_0x1dc2b,_0x5af4c1[_0xa198('0x52')]);return db['MailAccount']['find'](_0x1dc2b)['then'](handleEntityNotFound(_0x3cefca,null))[_0xa198('0x1e')](respondWithResult(_0x3cefca,null))[_0xa198('0x28')](handleError(_0x3cefca,null));};exports[_0xa198('0x34')]=function(_0x5d7f5d,_0x1c58f4){if(_0x5d7f5d[_0xa198('0x5b')]['id']){delete _0x5d7f5d[_0xa198('0x5b')]['id'];}return db[_0xa198('0x3e')][_0xa198('0x5c')]({'where':{'id':_0x5d7f5d['params']['id']},'include':[{'model':db[_0xa198('0x3b')],'as':_0xa198('0x3c')},{'model':db[_0xa198('0x5d')],'as':_0xa198('0x3d')},{'model':db[_0xa198('0x57')],'as':'mandatoryDispositionPause'}]})[_0xa198('0x1e')](handleEntityNotFound(_0x1c58f4,null))[_0xa198('0x1e')](saveUpdates(_0x5d7f5d[_0xa198('0x5b')],null))[_0xa198('0x1e')](function(_0x47ea7b){if(_0x47ea7b&&_0x5d7f5d['body'][_0xa198('0x3c')]){return db[_0xa198('0x3b')][_0xa198('0x34')](_0x5d7f5d['body']['Imap'],{'where':{'MailAccountId':_0x47ea7b['id']}})[_0xa198('0x1e')](function(){return _0x47ea7b;});}return _0x47ea7b;})[_0xa198('0x1e')](function(_0x3214b7){if(_0x3214b7&&_0x5d7f5d[_0xa198('0x5b')][_0xa198('0x3d')]){return db['MailServerOut'][_0xa198('0x34')](_0x5d7f5d[_0xa198('0x5b')][_0xa198('0x3d')],{'where':{'MailAccountId':_0x3214b7['id']}})[_0xa198('0x1e')](function(){return _0x3214b7;});}return _0x3214b7;})[_0xa198('0x1e')](respondWithResult(_0x1c58f4,null))['catch'](handleError(_0x1c58f4,null));};exports[_0xa198('0x5e')]=function(_0x4587dd,_0x48c8ef){return db[_0xa198('0x3e')][_0xa198('0x5e')]()['then'](respondWithResult(_0x48c8ef,null))[_0xa198('0x28')](handleError(_0x48c8ef,null));};exports[_0xa198('0x5f')]=function(_0x3c6e02,_0xb38e11,_0x359620){if(_0x3c6e02[_0xa198('0x5b')]['id']){delete _0x3c6e02[_0xa198('0x5b')]['id'];}return db[_0xa198('0x3e')][_0xa198('0x5c')]({'where':{'id':_0x3c6e02[_0xa198('0x60')]['id']}})['then'](handleEntityNotFound(_0xb38e11,null))[_0xa198('0x1e')](function(_0x1384e2){if(_0x1384e2){_0x3c6e02['body'][_0xa198('0x61')]=_0x1384e2['id'];return db['Disposition'][_0xa198('0x62')](_0x3c6e02[_0xa198('0x5b')]);}})['then'](respondWithResult(_0xb38e11,null))['catch'](handleError(_0xb38e11,null));};exports[_0xa198('0x63')]=function(_0x2760dc,_0x4920fd,_0x29d06e){var _0x195f65={'raw':![],'where':{}};var _0x486a75={};var _0x1a1b15={'count':0x0,'rows':[]};return db[_0xa198('0x3e')][_0xa198('0x64')]({'where':{'id':_0x2760dc[_0xa198('0x60')]['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x4920fd,null))['then'](function(_0x58c8c7){if(_0x58c8c7){_0x486a75[_0xa198('0x40')]=_['keys'](db[_0xa198('0x65')][_0xa198('0x59')]);_0x486a75['query']=_[_0xa198('0x43')](_0x2760dc[_0xa198('0x42')]);_0x486a75[_0xa198('0x44')]=_[_0xa198('0x45')](_0x486a75['model'],_0x486a75['query']);_0x195f65[_0xa198('0x46')]=_[_0xa198('0x45')](_0x486a75[_0xa198('0x40')],qs['fields'](_0x2760dc[_0xa198('0x42')]['fields']));_0x195f65[_0xa198('0x46')]=_0x195f65['attributes'][_0xa198('0x48')]?_0x195f65['attributes']:_0x486a75[_0xa198('0x40')];if(!_0x2760dc['query'][_0xa198('0x66')](_0xa198('0x49'))){_0x195f65[_0xa198('0x2c')]=qs[_0xa198('0x2c')](_0x2760dc[_0xa198('0x42')]['limit']);_0x195f65['offset']=qs[_0xa198('0x2e')](_0x2760dc[_0xa198('0x42')][_0xa198('0x2e')]);}_0x195f65[_0xa198('0x4a')]=qs['sort'](_0x2760dc[_0xa198('0x42')][_0xa198('0x4b')]);_0x195f65[_0xa198('0x4c')]=qs[_0xa198('0x44')](_[_0xa198('0x4d')](_0x2760dc[_0xa198('0x42')],_0x486a75[_0xa198('0x44')]));_0x195f65[_0xa198('0x4c')]['MailAccountId']=_0x58c8c7['id'];if(_0x2760dc[_0xa198('0x42')][_0xa198('0x4e')]){_0x195f65[_0xa198('0x4c')]=_[_0xa198('0x4f')](_0x195f65[_0xa198('0x4c')],{'$or':_[_0xa198('0x41')](_0x195f65[_0xa198('0x46')],function(_0xdcbbf3){var _0x4ba36c={};_0x4ba36c[_0xdcbbf3]={'$like':'%'+_0x2760dc[_0xa198('0x42')][_0xa198('0x4e')]+'%'};return _0x4ba36c;})});}_0x195f65=_[_0xa198('0x4f')]({},_0x195f65,_0x2760dc[_0xa198('0x52')]);return db[_0xa198('0x65')][_0xa198('0x2d')]({'where':_0x195f65[_0xa198('0x4c')]})[_0xa198('0x1e')](function(_0x1870ec){_0x1a1b15[_0xa198('0x2d')]=_0x1870ec;if(_0x2760dc[_0xa198('0x42')][_0xa198('0x5a')]){_0x195f65[_0xa198('0x53')]=[{'all':!![]}];}return db[_0xa198('0x65')][_0xa198('0x54')](_0x195f65);})[_0xa198('0x1e')](function(_0x318a35){_0x1a1b15['rows']=_0x318a35;return _0x1a1b15;});}})[_0xa198('0x1e')](respondWithFilteredResult(_0x4920fd,_0x195f65))[_0xa198('0x28')](handleError(_0x4920fd,null));};exports[_0xa198('0x67')]=function(_0x1b34fa,_0x3e14c7,_0x4e5187){return db[_0xa198('0x3e')][_0xa198('0x5c')]({'where':{'id':_0x1b34fa['params']['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x3e14c7,null))[_0xa198('0x1e')](function(_0x5af80d){if(_0x5af80d){return _0x5af80d['removeDispositions'](_0x1b34fa['query'][_0xa198('0x68')]);}})['then'](respondWithStatusCode(_0x3e14c7,null))['catch'](handleError(_0x3e14c7,null));};exports['addAnswer']=function(_0x45edd2,_0x26d41a,_0x4f7f81){if(_0x45edd2[_0xa198('0x5b')]['id']){delete _0x45edd2[_0xa198('0x5b')]['id'];}return db[_0xa198('0x3e')][_0xa198('0x5c')]({'where':{'id':_0x45edd2[_0xa198('0x60')]['id']}})['then'](handleEntityNotFound(_0x26d41a,null))[_0xa198('0x1e')](function(_0x2736e1){if(_0x2736e1){_0x45edd2[_0xa198('0x5b')]['MailAccountId']=_0x2736e1['id'];return db[_0xa198('0x69')]['create'](_0x45edd2[_0xa198('0x5b')]);}})[_0xa198('0x1e')](respondWithResult(_0x26d41a,null))[_0xa198('0x28')](handleError(_0x26d41a,null));};exports[_0xa198('0x6a')]=function(_0x4ccc9e,_0x1186ce,_0xeaa16c){var _0x50e992={'raw':![],'where':{}};var _0x5e1dfb={};var _0x278fb7={'count':0x0,'rows':[]};return db[_0xa198('0x3e')][_0xa198('0x64')]({'where':{'id':_0x4ccc9e['params']['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x1186ce,null))[_0xa198('0x1e')](function(_0x30a082){if(_0x30a082){_0x5e1dfb[_0xa198('0x40')]=_[_0xa198('0x43')](db['CannedAnswer'][_0xa198('0x59')]);_0x5e1dfb[_0xa198('0x42')]=_[_0xa198('0x43')](_0x4ccc9e['query']);_0x5e1dfb[_0xa198('0x44')]=_[_0xa198('0x45')](_0x5e1dfb[_0xa198('0x40')],_0x5e1dfb['query']);_0x50e992[_0xa198('0x46')]=_[_0xa198('0x45')](_0x5e1dfb[_0xa198('0x40')],qs['fields'](_0x4ccc9e[_0xa198('0x42')][_0xa198('0x47')]));_0x50e992[_0xa198('0x46')]=_0x50e992[_0xa198('0x46')][_0xa198('0x48')]?_0x50e992['attributes']:_0x5e1dfb['model'];if(!_0x4ccc9e[_0xa198('0x42')][_0xa198('0x66')](_0xa198('0x49'))){_0x50e992['limit']=qs['limit'](_0x4ccc9e[_0xa198('0x42')]['limit']);_0x50e992['offset']=qs[_0xa198('0x2e')](_0x4ccc9e['query'][_0xa198('0x2e')]);}_0x50e992[_0xa198('0x4a')]=qs[_0xa198('0x4b')](_0x4ccc9e[_0xa198('0x42')][_0xa198('0x4b')]);_0x50e992[_0xa198('0x4c')]=qs['filters'](_[_0xa198('0x4d')](_0x4ccc9e[_0xa198('0x42')],_0x5e1dfb[_0xa198('0x44')]));_0x50e992[_0xa198('0x4c')][_0xa198('0x61')]=_0x30a082['id'];if(_0x4ccc9e['query'][_0xa198('0x4e')]){_0x50e992[_0xa198('0x4c')]=_['merge'](_0x50e992[_0xa198('0x4c')],{'$or':_['map'](_0x50e992['attributes'],function(_0x208709){var _0x23ccbf={};_0x23ccbf[_0x208709]={'$like':'%'+_0x4ccc9e[_0xa198('0x42')]['filter']+'%'};return _0x23ccbf;})});}_0x50e992=_[_0xa198('0x4f')]({},_0x50e992,_0x4ccc9e['options']);return db[_0xa198('0x69')][_0xa198('0x2d')]({'where':_0x50e992[_0xa198('0x4c')]})[_0xa198('0x1e')](function(_0x168c8e){_0x278fb7['count']=_0x168c8e;if(_0x4ccc9e['query'][_0xa198('0x5a')]){_0x50e992[_0xa198('0x53')]=[{'all':!![]}];}return db[_0xa198('0x69')][_0xa198('0x54')](_0x50e992);})[_0xa198('0x1e')](function(_0x5df6cc){_0x278fb7['rows']=_0x5df6cc;return _0x278fb7;});}})[_0xa198('0x1e')](respondWithFilteredResult(_0x1186ce,_0x50e992))[_0xa198('0x28')](handleError(_0x1186ce,null));};exports[_0xa198('0x6b')]=function(_0x384058,_0x1575b6,_0x16ccc4){return db[_0xa198('0x3e')][_0xa198('0x5c')]({'where':{'id':_0x384058[_0xa198('0x60')]['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x1575b6,null))[_0xa198('0x1e')](function(_0x317b2b){if(_0x317b2b){return _0x317b2b[_0xa198('0x6b')](_0x384058[_0xa198('0x42')][_0xa198('0x68')]);}})[_0xa198('0x1e')](respondWithStatusCode(_0x1575b6,null))['catch'](handleError(_0x1575b6,null));};exports[_0xa198('0x62')]=function(_0x6e10d5,_0x3fd83f){var _0xd6cae5={'name':_0x6e10d5['body']['name'],'key':_0x6e10d5['body'][_0xa198('0x3f')],'email':_0x6e10d5[_0xa198('0x5b')]['email'],'ListId':_0x6e10d5[_0xa198('0x5b')][_0xa198('0x6c')],'active':!_[_0xa198('0x6d')](_0x6e10d5[_0xa198('0x5b')]['active'])?_0x6e10d5['body'][_0xa198('0x6e')]:!![],'description':_0x6e10d5[_0xa198('0x5b')][_0xa198('0x6f')]||null,'Imap':{},'Smtp':{}};if(_['isNil'](_0x6e10d5[_0xa198('0x5b')][_0xa198('0x70')])){if(_0x6e10d5['body'][_0xa198('0x71')]){_0xd6cae5[_0xa198('0x3c')][_0xa198('0x72')]=_0xd6cae5[_0xa198('0x3d')]['user']=_0x6e10d5[_0xa198('0x5b')][_0xa198('0x73')];_0xd6cae5[_0xa198('0x3c')][_0xa198('0x74')]=_0xd6cae5[_0xa198('0x3d')][_0xa198('0x75')]=_0x6e10d5[_0xa198('0x5b')]['cpassword'];}else{_0xd6cae5[_0xa198('0x3c')][_0xa198('0x76')]=_0xd6cae5[_0xa198('0x3d')][_0xa198('0x76')]=![];}_0xd6cae5[_0xa198('0x3c')][_0xa198('0x77')]=_0x6e10d5[_0xa198('0x5b')][_0xa198('0x3c')][_0xa198('0x77')];_0xd6cae5[_0xa198('0x3c')]['port']=_0x6e10d5[_0xa198('0x5b')][_0xa198('0x3c')][_0xa198('0x78')];_0xd6cae5[_0xa198('0x3d')]['host']=_0x6e10d5[_0xa198('0x5b')]['Smtp'][_0xa198('0x77')];_0xd6cae5[_0xa198('0x3d')][_0xa198('0x78')]=_0x6e10d5[_0xa198('0x5b')][_0xa198('0x3d')]['port'];}else{_0xd6cae5['Imap']['service']=_0xd6cae5[_0xa198('0x3d')][_0xa198('0x79')]=_0x6e10d5['body'][_0xa198('0x70')];_0xd6cae5['Imap'][_0xa198('0x72')]=_0xd6cae5[_0xa198('0x3d')][_0xa198('0x72')]=_0x6e10d5[_0xa198('0x5b')]['cuser'];_0xd6cae5['Imap'][_0xa198('0x74')]=_0xd6cae5[_0xa198('0x3d')]['pass']=_0x6e10d5[_0xa198('0x5b')][_0xa198('0x7a')];}return db[_0xa198('0x3e')][_0xa198('0x62')](_0xd6cae5,{'include':[{'model':db[_0xa198('0x5d')],'as':_0xa198('0x3d')},{'model':db[_0xa198('0x3b')],'as':_0xa198('0x3c')}]})['then'](function(_0x5e3b6e){var _0x3bf82e=_0x6e10d5[_0xa198('0x72')]['get']({'plain':!![]});if(!_0x3bf82e)throw new Error(_0xa198('0x7b'));if(_0x3bf82e[_0xa198('0x7c')]===_0xa198('0x72')){var _0x57abe2=_0x5e3b6e['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xa198('0x36'),'userProfileId':_0x3bf82e[_0xa198('0x7d')]},'raw':!![]})['then'](function(_0x528a88){if(_0x528a88&&_0x528a88[_0xa198('0x7e')]===0x0){return db[_0xa198('0x7f')]['create']({'name':_0x57abe2['name'],'resourceId':_0x57abe2['id'],'type':_0x528a88['name'],'sectionId':_0x528a88['id']},{})[_0xa198('0x1e')](function(){return _0x5e3b6e;});}else{return _0x5e3b6e;}})[_0xa198('0x28')](function(_0x52ddd6){logger[_0xa198('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x52ddd6);throw _0x52ddd6;});}return _0x5e3b6e;})[_0xa198('0x1e')](respondWithResult(_0x3fd83f,0xc9))[_0xa198('0x28')](handleError(_0x3fd83f,null));};exports['getImap']=function(_0x1b6dce,_0xcc0b,_0x478658){return db[_0xa198('0x3e')][_0xa198('0x64')]({'where':{'id':_0x1b6dce[_0xa198('0x60')]['id']}})['then'](handleEntityNotFound(_0xcc0b,null))['then'](function(_0x387a3d){if(_0x387a3d){return _0x387a3d[_0xa198('0x80')]();}return null;})[_0xa198('0x1e')](respondWithResult(_0xcc0b,null))[_0xa198('0x28')](handleError(_0xcc0b,null));};exports[_0xa198('0x81')]=function(_0x1f0af3,_0x5ca7cf,_0x19155b){if(_0x1f0af3['body']['id']){delete _0x1f0af3['body']['id'];}return db[_0xa198('0x3e')][_0xa198('0x5c')]({'where':{'id':_0x1f0af3[_0xa198('0x60')]['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x5ca7cf,null))[_0xa198('0x1e')](function(_0x4147e1){if(_0x4147e1){_0x1f0af3['body']['MailAccountId']=_0x4147e1['id'];return db[_0xa198('0x3b')]['create'](_0x1f0af3[_0xa198('0x5b')]);}})[_0xa198('0x1e')](respondWithResult(_0x5ca7cf,null))['catch'](handleError(_0x5ca7cf,null));};exports[_0xa198('0x82')]=function(_0x18dc3f,_0x16782e,_0x514c3b){return db[_0xa198('0x3e')][_0xa198('0x64')]({'where':{'id':_0x18dc3f[_0xa198('0x60')]['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x16782e,null))[_0xa198('0x1e')](function(_0x43d8d7){if(_0x43d8d7){return _0x43d8d7[_0xa198('0x83')](null);}return null;})['then'](respondWithStatusCode(_0x16782e,null))[_0xa198('0x28')](handleError(_0x16782e,null));};exports[_0xa198('0x84')]=function(_0x506d3b,_0x20b7c5,_0x4bdd84){return db[_0xa198('0x3e')]['findOne']({'where':{'id':_0x506d3b[_0xa198('0x60')]['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x20b7c5,null))[_0xa198('0x1e')](function(_0x3acae5){if(_0x3acae5){return _0x3acae5[_0xa198('0x84')]();}return null;})[_0xa198('0x1e')](respondWithResult(_0x20b7c5,null))[_0xa198('0x28')](handleError(_0x20b7c5,null));};exports[_0xa198('0x85')]=function(_0x2bc792,_0x4ae06d,_0x5f0466){if(_0x2bc792['body']['id']){delete _0x2bc792['body']['id'];}return db['MailAccount']['find']({'where':{'id':_0x2bc792[_0xa198('0x60')]['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x4ae06d,null))[_0xa198('0x1e')](function(_0x2241d0){if(_0x2241d0){_0x2bc792[_0xa198('0x5b')][_0xa198('0x61')]=_0x2241d0['id'];return db[_0xa198('0x5d')]['create'](_0x2bc792[_0xa198('0x5b')]);}})['then'](respondWithResult(_0x4ae06d,null))[_0xa198('0x28')](handleError(_0x4ae06d,null));};exports[_0xa198('0x86')]=function(_0x4a9b1a,_0x592b80,_0x4c4a1b){return db[_0xa198('0x3e')][_0xa198('0x64')]({'where':{'id':_0x4a9b1a['params']['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x592b80,null))[_0xa198('0x1e')](function(_0x52637c){if(_0x52637c){return _0x52637c['setSmtp'](null);}return null;})[_0xa198('0x1e')](respondWithStatusCode(_0x592b80,null))[_0xa198('0x28')](handleError(_0x592b80,null));};exports['addInteraction']=function(_0x27b23e,_0x2509ba,_0x233f0a){return db[_0xa198('0x87')][_0xa198('0x5c')]({'where':{'id':_0x27b23e[_0xa198('0x60')]['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x2509ba,null))[_0xa198('0x1e')](function(_0x300bcb){if(_0x300bcb){return _0x300bcb[_0xa198('0x88')](_0x27b23e[_0xa198('0x5b')]['ids'],_[_0xa198('0x89')](_0x27b23e[_0xa198('0x5b')],[_0xa198('0x68'),'id'])||{});}})[_0xa198('0x1e')](respondWithResult(_0x2509ba,null))['catch'](handleError(_0x2509ba,null));};exports[_0xa198('0x8a')]=function(_0x414456,_0x1fd186,_0x34e2ce){var _0x1995a2={'raw':![],'where':{}};var _0x5d3a13={};var _0x5a6972={'count':0x0,'rows':[]};return db[_0xa198('0x3e')][_0xa198('0x64')]({'where':{'id':_0x414456['params']['id']}})['then'](handleEntityNotFound(_0x1fd186,null))['then'](function(_0x134779){if(_0x134779){_0x5d3a13[_0xa198('0x40')]=_[_0xa198('0x43')](db['MailInteraction'][_0xa198('0x59')]);_0x5d3a13[_0xa198('0x42')]=_['keys'](_0x414456['query']);_0x5d3a13['filters']=_[_0xa198('0x45')](_0x5d3a13['model'],_0x5d3a13[_0xa198('0x42')]);_0x1995a2[_0xa198('0x46')]=_['intersection'](_0x5d3a13[_0xa198('0x40')],qs[_0xa198('0x47')](_0x414456['query']['fields']));_0x1995a2[_0xa198('0x46')]=_0x1995a2['attributes'][_0xa198('0x48')]?_0x1995a2['attributes']:_0x5d3a13['model'];if(!_0x414456[_0xa198('0x42')]['hasOwnProperty'](_0xa198('0x49'))){_0x1995a2[_0xa198('0x2c')]=qs[_0xa198('0x2c')](_0x414456[_0xa198('0x42')]['limit']);_0x1995a2[_0xa198('0x2e')]=qs[_0xa198('0x2e')](_0x414456[_0xa198('0x42')][_0xa198('0x2e')]);}_0x1995a2[_0xa198('0x4a')]=qs[_0xa198('0x4b')](_0x414456['query']['sort']);_0x1995a2[_0xa198('0x4c')]=qs[_0xa198('0x44')](_['pick'](_0x414456[_0xa198('0x42')],_0x5d3a13['filters']));_0x1995a2[_0xa198('0x4c')][_0xa198('0x61')]=_0x134779['id'];if(_0x414456[_0xa198('0x42')][_0xa198('0x4e')]){_0x1995a2[_0xa198('0x4c')]=_[_0xa198('0x4f')](_0x1995a2[_0xa198('0x4c')],{'$or':_[_0xa198('0x41')](_0x1995a2[_0xa198('0x46')],function(_0x566cb9){var _0x167ff3={};_0x167ff3[_0x566cb9]={'$like':'%'+_0x414456[_0xa198('0x42')]['filter']+'%'};return _0x167ff3;})});}_0x1995a2=_[_0xa198('0x4f')]({},_0x1995a2,_0x414456['options']);return db[_0xa198('0x87')]['count']({'where':_0x1995a2[_0xa198('0x4c')]})['then'](function(_0x303119){_0x5a6972['count']=_0x303119;if(_0x414456[_0xa198('0x42')][_0xa198('0x5a')]){_0x1995a2['include']=[{'model':db['CmContact'],'as':_0xa198('0x8b'),'required':![]},{'model':db[_0xa198('0x8c')],'as':_0xa198('0x8d'),'attributes':[_0xa198('0x38'),_0xa198('0x8e'),_0xa198('0x8f')],'required':![]},{'model':db[_0xa198('0x90')],'as':_0xa198('0x91'),'attributes':['id',_0xa198('0x38'),_0xa198('0x92')],'where':_0x414456[_0xa198('0x42')][_0xa198('0x93')]?{'id':_0x414456[_0xa198('0x42')][_0xa198('0x93')]}:undefined,'required':_0x414456[_0xa198('0x42')][_0xa198('0x93')]?!![]:![]}];}return db[_0xa198('0x87')]['findAll'](_0x1995a2);})['then'](function(_0x4488b7){_0x5a6972['rows']=_0x4488b7;return _0x5a6972;});}})[_0xa198('0x1e')](respondWithFilteredResult(_0x1fd186,_0x1995a2))[_0xa198('0x28')](handleError(_0x1fd186,null));};exports[_0xa198('0x94')]=function(_0x2efffb,_0x91e63c,_0x5c29f5){return db[_0xa198('0x3e')]['findOne']({'where':{'id':_0x2efffb['params']['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x91e63c,null))[_0xa198('0x1e')](function(_0x303446){if(_0x303446){return db[_0xa198('0x95')][_0xa198('0x96')](function(_0xed1ab0){return db[_0xa198('0x97')]['destroy']({'where':{'MailAccountId':_0x2efffb['params']['id']},'transaction':_0xed1ab0})[_0xa198('0x1e')](function(_0x438d26){var _0x492721=_[_0xa198('0x41')](_0x2efffb[_0xa198('0x5b')],function(_0x3e46c9){_0x3e46c9[_0xa198('0x61')]=_0x2efffb[_0xa198('0x60')]['id'];return _0x3e46c9;});return db['MailApplication'][_0xa198('0x98')](_0x492721,{'transaction':_0xed1ab0});});})[_0xa198('0x1e')](function(){return db[_0xa198('0x97')][_0xa198('0x99')]({'where':{'MailAccountId':_0x2efffb['params']['id']},'order':_0xa198('0x9a')});});}})[_0xa198('0x1e')](respondWithResult(_0x91e63c,null))[_0xa198('0x28')](handleError(_0x91e63c,null));};exports[_0xa198('0x9b')]=function(_0x1c491a,_0x49ae4a,_0x2d7cb1){var _0x2c4523={};var _0x1399c9={};var _0x3ef579;var _0x14ef3b;return db['MailAccount']['findOne']({'where':{'id':_0x1c491a[_0xa198('0x60')]['id']}})['then'](handleEntityNotFound(_0x49ae4a,null))[_0xa198('0x1e')](function(_0x535a69){if(_0x535a69){_0x3ef579=_0x535a69;_0x1399c9[_0xa198('0x40')]=_[_0xa198('0x43')](db[_0xa198('0x97')][_0xa198('0x59')]);_0x1399c9[_0xa198('0x42')]=_[_0xa198('0x43')](_0x1c491a[_0xa198('0x42')]);_0x1399c9[_0xa198('0x44')]=_[_0xa198('0x45')](_0x1399c9['model'],_0x1399c9[_0xa198('0x42')]);_0x2c4523[_0xa198('0x46')]=_[_0xa198('0x45')](_0x1399c9['model'],qs['fields'](_0x1c491a[_0xa198('0x42')]['fields']));_0x2c4523[_0xa198('0x46')]=_0x2c4523[_0xa198('0x46')][_0xa198('0x48')]?_0x2c4523[_0xa198('0x46')]:_0x1399c9[_0xa198('0x40')];_0x2c4523[_0xa198('0x4a')]=qs[_0xa198('0x4b')](_0x1c491a[_0xa198('0x42')][_0xa198('0x4b')]);_0x2c4523[_0xa198('0x4c')]=qs[_0xa198('0x44')](_[_0xa198('0x4d')](_0x1c491a[_0xa198('0x42')],_0x1399c9[_0xa198('0x44')]));if(_0x1c491a[_0xa198('0x42')][_0xa198('0x4e')]){_0x2c4523[_0xa198('0x4c')]=_['merge'](_0x2c4523[_0xa198('0x4c')],{'$or':_['map'](_0x2c4523[_0xa198('0x46')],function(_0x221742){var _0x23e0e9={};_0x23e0e9[_0x221742]={'$like':'%'+_0x1c491a[_0xa198('0x42')][_0xa198('0x4e')]+'%'};return _0x23e0e9;})});}_0x2c4523=_['merge']({},_0x2c4523,_0x1c491a[_0xa198('0x52')]);return _0x3ef579[_0xa198('0x9b')](_0x2c4523);}})['then'](function(_0x5bda51){if(_0x5bda51){_0x14ef3b=_0x5bda51[_0xa198('0x48')];if(!_0x1c491a[_0xa198('0x42')]['hasOwnProperty']('nolimit')){_0x2c4523['limit']=qs[_0xa198('0x2c')](_0x1c491a[_0xa198('0x42')][_0xa198('0x2c')]);_0x2c4523[_0xa198('0x2e')]=qs[_0xa198('0x2e')](_0x1c491a[_0xa198('0x42')][_0xa198('0x2e')]);}return _0x3ef579[_0xa198('0x9b')](_0x2c4523);}})[_0xa198('0x1e')](function(_0x2f7d87){if(_0x2f7d87){return _0x2f7d87?{'count':_0x14ef3b,'rows':_0x2f7d87}:null;}})[_0xa198('0x1e')](respondWithResult(_0x49ae4a,null))[_0xa198('0x28')](handleError(_0x49ae4a,null));};exports[_0xa198('0x9c')]=function(_0x3be10d,_0x3746e3,_0x22ba95){var _0x16bde4={'raw':!![],'where':{}};var _0x53aa58={};var _0x94a7d={'count':0x0,'rows':[]};return db['MailAccount'][_0xa198('0x64')]({'where':{'id':_0x3be10d[_0xa198('0x60')]['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x3746e3,null))['then'](function(_0x5e3cdf){if(_0x5e3cdf){_0x53aa58['model']=_[_0xa198('0x43')](db['MailMessage'][_0xa198('0x59')]);_0x53aa58[_0xa198('0x42')]=_[_0xa198('0x43')](_0x3be10d[_0xa198('0x42')]);_0x53aa58['filters']=_[_0xa198('0x45')](_0x53aa58['model'],_0x53aa58[_0xa198('0x42')]);_0x16bde4['attributes']=_[_0xa198('0x45')](_0x53aa58[_0xa198('0x40')],qs[_0xa198('0x47')](_0x3be10d[_0xa198('0x42')][_0xa198('0x47')]));_0x16bde4[_0xa198('0x46')]=_0x16bde4['attributes']['length']?_0x16bde4[_0xa198('0x46')]:_0x53aa58[_0xa198('0x40')];if(!_0x3be10d[_0xa198('0x42')]['hasOwnProperty'](_0xa198('0x49'))){_0x16bde4[_0xa198('0x2c')]=qs[_0xa198('0x2c')](_0x3be10d[_0xa198('0x42')][_0xa198('0x2c')]);_0x16bde4[_0xa198('0x2e')]=qs[_0xa198('0x2e')](_0x3be10d[_0xa198('0x42')][_0xa198('0x2e')]);}_0x16bde4[_0xa198('0x4a')]=qs[_0xa198('0x4b')](_0x3be10d[_0xa198('0x42')][_0xa198('0x4b')]);_0x16bde4[_0xa198('0x4c')]=qs[_0xa198('0x44')](_[_0xa198('0x4d')](_0x3be10d[_0xa198('0x42')],_0x53aa58[_0xa198('0x44')]));_0x16bde4[_0xa198('0x4c')][_0xa198('0x61')]=_0x5e3cdf['id'];if(_0x3be10d[_0xa198('0x42')][_0xa198('0x4e')]){_0x16bde4[_0xa198('0x4c')]=_['merge'](_0x16bde4['where'],{'$or':_['map'](_0x16bde4[_0xa198('0x46')],function(_0x57442d){var _0x3eb3b2={};_0x3eb3b2[_0x57442d]={'$like':'%'+_0x3be10d['query'][_0xa198('0x4e')]+'%'};return _0x3eb3b2;})});}if(_0x3be10d[_0xa198('0x42')][_0xa198('0x9d')]){var _0x2b080b=_0x3be10d[_0xa198('0x42')][_0xa198('0x9d')][_0xa198('0x9e')](',');var _0x3e8e25={};_0x3e8e25[_0x2b080b[0x0]]={'$gte':moment(_0x2b080b[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x16bde4['where']=_[_0xa198('0x4f')](_0x16bde4[_0xa198('0x4c')],_0x3e8e25);}_0x16bde4=_[_0xa198('0x4f')]({},_0x16bde4,_0x3be10d[_0xa198('0x52')]);return db[_0xa198('0x9f')]['count']({'where':_0x16bde4[_0xa198('0x4c')]})[_0xa198('0x1e')](function(_0x1f5c60){_0x94a7d[_0xa198('0x2d')]=_0x1f5c60;if(_0x3be10d[_0xa198('0x42')][_0xa198('0x5a')]){_0x16bde4[_0xa198('0x53')]=[{'all':!![]}];}return db['MailMessage'][_0xa198('0x54')](_0x16bde4);})[_0xa198('0x1e')](function(_0x43f3f4){if(_0x3be10d[_0xa198('0x42')][_0xa198('0xa0')]===_0xa198('0xa1')){for(var _0x1a7b3f=0x0;_0x1a7b3f<_0x43f3f4['length'];_0x1a7b3f++){_0x43f3f4[_0x1a7b3f][_0xa198('0x5b')]=juice(_0x43f3f4[_0x1a7b3f]['body']);}}_0x94a7d[_0xa198('0x55')]=_0x43f3f4;return _0x94a7d;});}})[_0xa198('0x1e')](respondWithFilteredResult(_0x3746e3,_0x16bde4))[_0xa198('0x28')](handleError(_0x3746e3,null));};exports[_0xa198('0x39')]=function(_0x49bc29,_0x321026,_0x2f9f86){var _0x3fc878,_0x4acdda={},_0x49d57d;if(_0x49bc29[_0xa198('0x5b')]['to']){_0x49d57d=_0x49bc29[_0xa198('0x5b')]['to']['split'](',')[0x0];}return db[_0xa198('0x3e')][_0xa198('0x5c')]({'where':{'id':_0x49bc29[_0xa198('0x60')]['id']},'include':[{'model':db[_0xa198('0xa2')],'as':_0xa198('0xa3'),'include':[{'model':db[_0xa198('0xa4')],'as':'Contacts','where':{'email':_0x49d57d},'limit':0x1,'order':[[_0xa198('0xa5'),'DESC']]}]},{'model':db['MailServerOut'],'as':_0xa198('0x3d'),'raw':!![]}]})[_0xa198('0x1e')](handleEntityNotFound(_0x321026,null))['then'](function(_0x20c2ee){if(_0x20c2ee){_0x3fc878=_0x20c2ee;if(_0x20c2ee[_0xa198('0x3d')]){if(_[_0xa198('0x6d')](_0x49bc29[_0xa198('0x5b')]['from'])){_0x49bc29[_0xa198('0x5b')]['from']=util[_0xa198('0xa6')](_0xa198('0xa7'),_0x20c2ee[_0xa198('0x38')],_0x20c2ee[_0xa198('0xa8')]||_0x20c2ee['Smtp']['user']);}if(_0x49bc29['body'][_0xa198('0xa9')]&&_0x49bc29[_0xa198('0x5b')][_0xa198('0xa9')]['length']){for(var _0x40cdec=0x0;_0x40cdec<_0x49bc29[_0xa198('0x5b')][_0xa198('0xa9')][_0xa198('0x48')];_0x40cdec+=0x1){_0x49bc29[_0xa198('0x5b')][_0xa198('0xa9')][_0x40cdec]={'filename':_0x49bc29[_0xa198('0x5b')]['attachments'][_0x40cdec][_0xa198('0x38')],'path':path[_0xa198('0xaa')](config[_0xa198('0xab')],_0xa198('0xac'),_0x49bc29[_0xa198('0x5b')][_0xa198('0xa9')][_0x40cdec][_0xa198('0xad')])};}}var _0xd82ac5={'tls':{'rejectUnauthorized':![]}};if(_[_0xa198('0x6d')](_0x20c2ee[_0xa198('0x3d')][_0xa198('0x79')])){if(_0x20c2ee[_0xa198('0x3d')][_0xa198('0x76')]){_0xd82ac5[_0xa198('0xae')]={'user':_0x20c2ee[_0xa198('0x3d')][_0xa198('0x72')],'pass':_0x20c2ee[_0xa198('0x3d')][_0xa198('0x75')]};}_0xd82ac5[_0xa198('0x77')]=_0x20c2ee['Smtp'][_0xa198('0x77')];_0xd82ac5[_0xa198('0x78')]=_0x20c2ee[_0xa198('0x3d')][_0xa198('0x78')];_0xd82ac5['secure']=_0x20c2ee[_0xa198('0x3d')][_0xa198('0xaf')];}else{_0xd82ac5[_0xa198('0x79')]=_0x20c2ee[_0xa198('0x3d')][_0xa198('0x79')];_0xd82ac5[_0xa198('0xae')]={'user':_0x20c2ee[_0xa198('0x3d')][_0xa198('0x72')],'pass':_0x20c2ee[_0xa198('0x3d')][_0xa198('0x75')]};}return respondWithRpcPromise(_0xa198('0xb0'),_0xa198('0xb1'),{'account':_0xd82ac5,'message':_0x49bc29[_0xa198('0x5b')]});}else{throw new Error(_0xa198('0xb2'));}}})['then'](function(_0x5a0eaf){if(_0x5a0eaf){_0x4acdda=_0x5a0eaf;if(_0x3fc878[_0xa198('0xa3')]){if(_0x3fc878['List'][_0xa198('0xb3')][_0xa198('0x48')]){return _0x3fc878[_0xa198('0xa3')][_0xa198('0xb3')][0x0];}else{return db[_0xa198('0xa4')]['create'](_['defaults'](_0x49bc29['body'],{'firstName':_0x49bc29[_0xa198('0x5b')]['to'],'email':_0x49bc29['body']['to'],'phone':_0x49bc29[_0xa198('0x5b')]['to'],'ListId':_0x3fc878[_0xa198('0x6c')]}));}}else{throw new Error(_0xa198('0xb2'));}}})[_0xa198('0x1e')](function(_0x31587e){if(_0x31587e){var _0x24f3c5={'UserId':_0x49bc29[_0xa198('0x72')]['id'],'ContactId':_0x31587e['id'],'MailAccountId':_0x3fc878['id'],'inReplyTo':_0x4acdda[_0xa198('0xb4')],'to':_0x49bc29[_0xa198('0x5b')][_0xa198('0xb5')],'cc':_0x49bc29[_0xa198('0x5b')]['cc'],'subject':_0x49bc29['body'][_0xa198('0xb6')],'attach':_0x49bc29['body'][_0xa198('0xb7')],'firstMsgDirection':_0xa198('0xb8'),'lastMsgAt':moment()[_0xa198('0xa6')](_0xa198('0xb9')),'lastMsgDirection':_0xa198('0xb8'),'Messages':[_[_0xa198('0x4f')](_0x49bc29['body'],{'messageId':_0x4acdda[_0xa198('0xb4')],'sentAt':moment()[_0xa198('0xa6')](_0xa198('0xb9')),'read':!![],'MailAccountId':_0x3fc878['id'],'UserId':_0x49bc29[_0xa198('0x72')]['id'],'ContactId':_0x31587e['id']})]};if(_0x49bc29[_0xa198('0x5b')][_0xa198('0xba')]){_0x24f3c5=_['merge'](_0x24f3c5,_0x49bc29[_0xa198('0x5b')][_0xa198('0xba')]);}return db[_0xa198('0x87')][_0xa198('0x62')](_0x24f3c5,{'include':[{'model':db['MailMessage'],'as':_0xa198('0xbb')}]});}})[_0xa198('0x1e')](respondWithResult(_0x321026,null))['catch'](handleError(_0x321026,null));};exports[_0xa198('0xbc')]=function(_0x3e5ba3,_0x26c052,_0xa1e5bb){return db[_0xa198('0x3e')]['find']({'where':{'id':_0x3e5ba3[_0xa198('0x60')]['id']},'include':[{'model':db[_0xa198('0x5d')],'as':'Smtp','raw':!![]}]})['then'](handleEntityNotFound(_0x26c052,null))[_0xa198('0x1e')](function(_0x63c521){if(_0x63c521&&_0x63c521[_0xa198('0x3d')]){var _0x108d11={'id':_0x63c521['id'],'tls':{'rejectUnauthorized':![]}};if(_0x63c521[_0xa198('0x3d')][_0xa198('0x79')]){_0x108d11[_0xa198('0x79')]=_0x63c521[_0xa198('0x3d')][_0xa198('0x79')];}else{_0x108d11[_0xa198('0x77')]=_0x63c521[_0xa198('0x3d')]['host'];_0x108d11[_0xa198('0x78')]=_0x63c521[_0xa198('0x3d')]['port'];_0x108d11['secure']=_0x63c521[_0xa198('0x3d')][_0xa198('0xaf')];}if(_0x63c521[_0xa198('0x3d')][_0xa198('0x76')]){_0x108d11[_0xa198('0xae')]={'user':_0x63c521[_0xa198('0x3d')]['user'],'pass':_0x63c521[_0xa198('0x3d')][_0xa198('0x75')]};}return respondWithRpcPromise(_0xa198('0xbd'),_0xa198('0xbc'),{'account':_0x108d11});}})['then'](respondWithResult(_0x26c052,null))[_0xa198('0x28')](handleError(_0x26c052,null));};exports[_0xa198('0xbe')]=function(_0x4e767a,_0x3086f0){return db['MailAccount'][_0xa198('0x5c')]({'where':{'id':_0x4e767a[_0xa198('0x60')]['id']}})['then'](handleEntityNotFound(_0x3086f0,null))[_0xa198('0x1e')](function(_0x25d5f2){if(_0x25d5f2&&_0x25d5f2[_0xa198('0x79')]){throw new db['Sequelize'][(_0xa198('0xbf'))](_0xa198('0xc0'));}return _0x25d5f2;})[_0xa198('0x1e')](removeEntity(_0x3086f0,null))[_0xa198('0x28')](handleError(_0x3086f0,null));};exports['addAgents']=function(_0x547a8,_0x543106,_0x15232d){return db[_0xa198('0x3e')][_0xa198('0x5c')]({'where':{'id':_0x547a8[_0xa198('0x60')]['id']}})['then'](handleEntityNotFound(_0x543106,null))[_0xa198('0x1e')](function(_0xb3ef86){if(_0xb3ef86){return _0xb3ef86[_0xa198('0xc1')](_0x547a8[_0xa198('0x5b')][_0xa198('0x68')],_[_0xa198('0x89')](_0x547a8['body'],[_0xa198('0x68'),'id'])||{})[_0xa198('0xc2')](function(_0x16a4cd){for(var _0x124a4a=0x0;_0x124a4a<_0x547a8[_0xa198('0x5b')][_0xa198('0x68')]['length'];_0x124a4a+=0x1){socket[_0xa198('0xc3')]('userMailAccount:save',{'UserId':Number(_0x547a8['body'][_0xa198('0x68')][_0x124a4a]),'MailAccountId':Number(_0x547a8['params']['id'])});}return _0x16a4cd;});}})[_0xa198('0x1e')](respondWithResult(_0x543106,null))['catch'](handleError(_0x543106,null));};exports[_0xa198('0xc4')]=function(_0x5541a9,_0x18ea6f,_0x5daa2f){return db['MailAccount']['find']({'where':{'id':_0x5541a9[_0xa198('0x60')]['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x18ea6f,null))[_0xa198('0x1e')](function(_0x2eb645){if(_0x2eb645){return _0x2eb645[_0xa198('0xc4')](_0x5541a9[_0xa198('0x42')][_0xa198('0x68')])[_0xa198('0x1e')](function(){if(_[_0xa198('0xc5')](_0x5541a9[_0xa198('0x42')]['ids'])){for(var _0x386bd1=0x0;_0x386bd1<_0x5541a9[_0xa198('0x42')]['ids'][_0xa198('0x48')];_0x386bd1+=0x1){socket[_0xa198('0xc3')](_0xa198('0xc6'),{'UserId':Number(_0x5541a9[_0xa198('0x42')]['ids'][_0x386bd1]),'MailAccountId':Number(_0x5541a9[_0xa198('0x60')]['id'])});}}else{socket[_0xa198('0xc3')](_0xa198('0xc6'),{'UserId':Number(_0x5541a9[_0xa198('0x42')][_0xa198('0x68')]),'MailAccountId':Number(_0x5541a9[_0xa198('0x60')]['id'])});}});}})[_0xa198('0x1e')](respondWithStatusCode(_0x18ea6f,null))[_0xa198('0x28')](handleError(_0x18ea6f,null));};exports[_0xa198('0xc7')]=function(_0x269fe7,_0x186acf,_0x40f0ab){var _0x1f0aef={};var _0x3507de={};var _0x1bb038;var _0x37ca36;return db[_0xa198('0x3e')][_0xa198('0x64')]({'where':{'id':_0x269fe7[_0xa198('0x60')]['id']}})[_0xa198('0x1e')](handleEntityNotFound(_0x186acf,null))[_0xa198('0x1e')](function(_0x2ac359){if(_0x2ac359){_0x1bb038=_0x2ac359;_0x3507de[_0xa198('0x40')]=_[_0xa198('0x43')](db['User']['rawAttributes']);_0x3507de[_0xa198('0x42')]=_['keys'](_0x269fe7[_0xa198('0x42')]);_0x3507de[_0xa198('0x44')]=_[_0xa198('0x45')](_0x3507de[_0xa198('0x40')],_0x3507de[_0xa198('0x42')]);_0x1f0aef[_0xa198('0x46')]=_[_0xa198('0x45')](_0x3507de[_0xa198('0x40')],qs[_0xa198('0x47')](_0x269fe7[_0xa198('0x42')][_0xa198('0x47')]));_0x1f0aef[_0xa198('0x46')]=_0x1f0aef[_0xa198('0x46')]['length']?_0x1f0aef[_0xa198('0x46')]:_0x3507de[_0xa198('0x40')];_0x1f0aef[_0xa198('0x4a')]=qs[_0xa198('0x4b')](_0x269fe7[_0xa198('0x42')][_0xa198('0x4b')]);_0x1f0aef[_0xa198('0x4c')]=qs[_0xa198('0x44')](_[_0xa198('0x4d')](_0x269fe7['query'],_0x3507de[_0xa198('0x44')]));if(_0x269fe7[_0xa198('0x42')][_0xa198('0x4e')]){_0x1f0aef[_0xa198('0x4c')]=_[_0xa198('0x4f')](_0x1f0aef[_0xa198('0x4c')],{'$or':_[_0xa198('0x41')](_0x1f0aef['attributes'],function(_0x5eba93){var _0x4353f1={};_0x4353f1[_0x5eba93]={'$like':'%'+_0x269fe7[_0xa198('0x42')][_0xa198('0x4e')]+'%'};return _0x4353f1;})});}_0x1f0aef=_[_0xa198('0x4f')]({},_0x1f0aef,_0x269fe7[_0xa198('0x52')]);return _0x1bb038[_0xa198('0xc7')](_0x1f0aef);}})[_0xa198('0x1e')](function(_0x1ec70c){if(_0x1ec70c){_0x37ca36=_0x1ec70c[_0xa198('0x48')];if(!_0x269fe7[_0xa198('0x42')][_0xa198('0x66')](_0xa198('0x49'))){_0x1f0aef['limit']=qs[_0xa198('0x2c')](_0x269fe7[_0xa198('0x42')][_0xa198('0x2c')]);_0x1f0aef[_0xa198('0x2e')]=qs[_0xa198('0x2e')](_0x269fe7[_0xa198('0x42')]['offset']);}return _0x1bb038[_0xa198('0xc7')](_0x1f0aef);}})[_0xa198('0x1e')](function(_0x5d71fe){if(_0x5d71fe){return _0x5d71fe?{'count':_0x37ca36,'rows':_0x5d71fe}:null;}})[_0xa198('0x1e')](respondWithResult(_0x186acf,null))[_0xa198('0x28')](handleError(_0x186acf,null));};
\ No newline at end of file
+var _0x5610=['name','send','MailServerIn','Imap','MailServerOut','Smtp','mandatoryDispositionPause','map','MailAccount','fieldName','type','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','show','params','Pause','keys','rawAttributes','options','catch','body','find','describe','addDisposition','MailAccountId','findOne','Disposition','includeAll','removeDispositions','ids','CannedAnswer','create','getAnswers','order','removeAnswers','email','ListId','isNil','active','description','cauthentication','user','password','pass','cpassword','authentication','host','port','service','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','getInteractions','MailInteraction','CmContact','Contact','User','fullname','Tag','color','tag','addApplications','transaction','MailApplication','bulkCreate','findAndCountAll','priority','getApplications','getMessages','MailMessage','$gte','YYYY-MM-DD\x20HH:mm:ss','true','split','List','Contacts','updatedAt','DESC','from','format','attachments','join','server/files/attachments','basename','auth','secure','SendMail','List\x20not\x20found','subject','attach','out','messageId','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','omit','spread','emit','removeAgents','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','html-to-text','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./mailAccount.socket','jayson/promise','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','update','destroy','UserProfileResource'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x5610,0x86));var _0x0561=function(_0x1ba7f6,_0x4c763a){_0x1ba7f6=_0x1ba7f6-0x0;var _0x656e55=_0x5610[_0x1ba7f6];return _0x656e55;};'use strict';var emlformat=require(_0x0561('0x0'));var rimraf=require(_0x0561('0x1'));var zipdir=require(_0x0561('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0561('0x3'));var moment=require('moment');var BPromise=require(_0x0561('0x4'));var Mustache=require('mustache');var util=require(_0x0561('0x5'));var path=require(_0x0561('0x6'));var sox=require('sox');var csv=require(_0x0561('0x7'));var ejs=require(_0x0561('0x8'));var fs=require('fs');var fs_extra=require(_0x0561('0x9'));var _=require('lodash');var squel=require(_0x0561('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0561('0xb'));var toCsv=require('to-csv');var querystring=require(_0x0561('0xc'));var Papa=require(_0x0561('0xd'));var htmlToText=require(_0x0561('0xe'));var juice=require('juice');var Redis=require('ioredis');var authService=require(_0x0561('0xf'));var qs=require(_0x0561('0x10'));var as=require(_0x0561('0x11'));var hardwareService=require(_0x0561('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x0561('0x13'));var config=require(_0x0561('0x14'));var licenseUtil=require(_0x0561('0x15'));var db=require(_0x0561('0x16'))['db'];config[_0x0561('0x17')]=_[_0x0561('0x18')](config['redis'],{'host':_0x0561('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0561('0x1a'))['register'](socket);var jayson=require(_0x0561('0x1b'));var client=jayson['client'][_0x0561('0x1c')]({'port':0x232b});function respondWithRpcPromise(_0x8bbfc,_0x2919ed,_0x51e902,_0x410639){return new BPromise(function(_0x8f45d6,_0x609c62){var _0x491a73=_0x410639||client;return _0x491a73[_0x0561('0x1d')](_0x8bbfc,_0x51e902)[_0x0561('0x1e')](function(_0x13bee5){logger[_0x0561('0x1f')](_0x0561('0x20'),_0x2919ed,_0x0561('0x21'));logger['debug'](_0x0561('0x22'),_0x2919ed,_0x0561('0x21'),JSON[_0x0561('0x23')](_0x13bee5));if(_0x13bee5[_0x0561('0x24')]){if(_0x13bee5[_0x0561('0x24')][_0x0561('0x25')]===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x2919ed,_0x13bee5['error'][_0x0561('0x26')]);return _0x609c62(_0x13bee5['error'][_0x0561('0x26')]);}logger['error'](_0x0561('0x20'),_0x2919ed,_0x13bee5[_0x0561('0x24')]['message']);return _0x8f45d6(_0x13bee5[_0x0561('0x24')]['message']);}else{logger[_0x0561('0x1f')](_0x0561('0x20'),_0x2919ed,_0x0561('0x21'));_0x8f45d6(_0x13bee5[_0x0561('0x27')][_0x0561('0x26')]);}})['catch'](function(_0x5a9630){logger[_0x0561('0x24')](_0x0561('0x20'),_0x2919ed,_0x5a9630);_0x609c62(_0x5a9630);});});}function respondWithStatusCode(_0x30b5d6,_0x4120ba){_0x4120ba=_0x4120ba||0xcc;return function(_0x4716d6){if(_0x4716d6){return _0x30b5d6[_0x0561('0x28')](_0x4120ba);}return _0x30b5d6[_0x0561('0x29')](_0x4120ba)[_0x0561('0x2a')]();};}function respondWithResult(_0x24ea6c,_0x9b836){_0x9b836=_0x9b836||0xc8;return function(_0x4e699c){if(_0x4e699c){return _0x24ea6c['status'](_0x9b836)[_0x0561('0x2b')](_0x4e699c);}};}function respondWithFilteredResult(_0x410e5f,_0xfc29f6){return function(_0x1150a6){if(_0x1150a6){var _0x4e82ef=typeof _0xfc29f6[_0x0561('0x2c')]===_0x0561('0x2d')&&typeof _0xfc29f6[_0x0561('0x2e')]===_0x0561('0x2d');var _0x116c1c=_0x1150a6[_0x0561('0x2f')];var _0x596b1e=_0x4e82ef?0x0:_0xfc29f6['offset'];var _0x2a0355=_0x4e82ef?_0x1150a6[_0x0561('0x2f')]:_0xfc29f6[_0x0561('0x2c')]+_0xfc29f6[_0x0561('0x2e')];var _0x5190b2;if(_0x2a0355>=_0x116c1c){_0x2a0355=_0x116c1c;_0x5190b2=0xc8;}else{_0x5190b2=0xce;}_0x410e5f['status'](_0x5190b2);return _0x410e5f[_0x0561('0x30')]('Content-Range',_0x596b1e+'-'+_0x2a0355+'/'+_0x116c1c)[_0x0561('0x2b')](_0x1150a6);}return null;};}function patchUpdates(_0x542137){return function(_0xebf9b5){try{jsonpatch['apply'](_0xebf9b5,_0x542137,!![]);}catch(_0x5a262c){return BPromise[_0x0561('0x31')](_0x5a262c);}return _0xebf9b5['save']();};}function saveUpdates(_0x341c25,_0x2634f2){return function(_0x556808){if(_0x556808){return _0x556808[_0x0561('0x32')](_0x341c25)[_0x0561('0x1e')](function(_0x3e1348){return _0x3e1348;});}return null;};}function removeEntity(_0x279c15,_0x46fe47){return function(_0x584298){if(_0x584298){return _0x584298[_0x0561('0x33')]()[_0x0561('0x1e')](function(){var _0x3c1114=_0x584298['get']({'plain':!![]});var _0x54eb49='MailAccounts';return db[_0x0561('0x34')][_0x0561('0x33')]({'where':{'type':_0x54eb49,'resourceId':_0x3c1114['id']}})[_0x0561('0x1e')](function(){return _0x584298;});})[_0x0561('0x1e')](function(){_0x279c15['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ca47e,_0x2f9271){return function(_0x4db793){if(!_0x4db793){_0x1ca47e[_0x0561('0x28')](0x194);}return _0x4db793;};}function handleError(_0x2c7b5a,_0x441ef7){_0x441ef7=_0x441ef7||0x1f4;return function(_0x3c0f78){logger['error'](_0x3c0f78['stack']);if(_0x3c0f78[_0x0561('0x35')]){delete _0x3c0f78[_0x0561('0x35')];}_0x2c7b5a[_0x0561('0x29')](_0x441ef7)[_0x0561('0x36')](_0x3c0f78);};}exports['index']=function(_0x4f13c9,_0x3d5248){var _0x18ae96={'include':[{'model':db[_0x0561('0x37')],'as':_0x0561('0x38')},{'model':db[_0x0561('0x39')],'as':_0x0561('0x3a')},{'model':db['Pause'],'as':_0x0561('0x3b')}]},_0x287f94={},_0x4cc2a4={'count':0x0,'rows':[]};var _0x9d7d01=_[_0x0561('0x3c')](db[_0x0561('0x3d')]['rawAttributes'],function(_0x1f9a87){return{'name':_0x1f9a87[_0x0561('0x3e')],'type':_0x1f9a87[_0x0561('0x3f')]['key']};});_0x287f94['model']=_[_0x0561('0x3c')](_0x9d7d01,'name');_0x287f94[_0x0561('0x40')]=_['keys'](_0x4f13c9[_0x0561('0x40')]);_0x287f94[_0x0561('0x41')]=_[_0x0561('0x42')](_0x287f94[_0x0561('0x43')],_0x287f94[_0x0561('0x40')]);_0x18ae96['attributes']=_['intersection'](_0x287f94['model'],qs['fields'](_0x4f13c9['query'][_0x0561('0x44')]));_0x18ae96[_0x0561('0x45')]=_0x18ae96[_0x0561('0x45')][_0x0561('0x46')]?_0x18ae96['attributes']:_0x287f94[_0x0561('0x43')];if(!_0x4f13c9[_0x0561('0x40')][_0x0561('0x47')](_0x0561('0x48'))){_0x18ae96[_0x0561('0x2e')]=qs[_0x0561('0x2e')](_0x4f13c9[_0x0561('0x40')][_0x0561('0x2e')]);_0x18ae96[_0x0561('0x2c')]=qs[_0x0561('0x2c')](_0x4f13c9[_0x0561('0x40')][_0x0561('0x2c')]);}_0x18ae96['order']=qs['sort'](_0x4f13c9[_0x0561('0x40')][_0x0561('0x49')]);_0x18ae96[_0x0561('0x4a')]=qs[_0x0561('0x41')](_[_0x0561('0x4b')](_0x4f13c9[_0x0561('0x40')],_0x287f94[_0x0561('0x41')]),_0x9d7d01);if(_0x4f13c9['query'][_0x0561('0x4c')]){_0x18ae96[_0x0561('0x4a')]=_[_0x0561('0x4d')](_0x18ae96[_0x0561('0x4a')],{'$or':_[_0x0561('0x3c')](_0x9d7d01,function(_0x43637f){if(_0x43637f[_0x0561('0x3f')]!==_0x0561('0x4e')){var _0x1aac20={};_0x1aac20[_0x43637f['name']]={'$like':'%'+_0x4f13c9['query'][_0x0561('0x4c')]+'%'};return _0x1aac20;}})});}_0x18ae96=_[_0x0561('0x4d')]({},_0x18ae96,_0x4f13c9['options']);var _0x171ae1={'where':_0x18ae96[_0x0561('0x4a')]};return db['MailAccount'][_0x0561('0x2f')](_0x171ae1)[_0x0561('0x1e')](function(_0x41d399){_0x4cc2a4['count']=_0x41d399;if(_0x4f13c9[_0x0561('0x40')]['includeAll']){_0x18ae96[_0x0561('0x4f')]=[{'all':!![]}];}return db['MailAccount'][_0x0561('0x50')](_0x18ae96);})[_0x0561('0x1e')](function(_0x4b7bf2){_0x4cc2a4[_0x0561('0x51')]=_0x4b7bf2;return _0x4cc2a4;})[_0x0561('0x1e')](respondWithFilteredResult(_0x3d5248,_0x18ae96))['catch'](handleError(_0x3d5248,null));};exports[_0x0561('0x52')]=function(_0x377ce1,_0x21d605){var _0x14028a={'raw':![],'where':{'id':_0x377ce1[_0x0561('0x53')]['id']},'include':[{'model':db[_0x0561('0x37')],'as':_0x0561('0x38')},{'model':db['MailServerOut'],'as':_0x0561('0x3a')},{'model':db[_0x0561('0x54')],'as':'mandatoryDispositionPause'}]},_0x450d18={};_0x450d18[_0x0561('0x43')]=_[_0x0561('0x55')](db[_0x0561('0x3d')][_0x0561('0x56')]);_0x450d18['query']=_[_0x0561('0x55')](_0x377ce1[_0x0561('0x40')]);_0x450d18['filters']=_['intersection'](_0x450d18[_0x0561('0x43')],_0x450d18[_0x0561('0x40')]);_0x14028a[_0x0561('0x45')]=_[_0x0561('0x42')](_0x450d18[_0x0561('0x43')],qs['fields'](_0x377ce1[_0x0561('0x40')][_0x0561('0x44')]));_0x14028a[_0x0561('0x45')]=_0x14028a[_0x0561('0x45')][_0x0561('0x46')]?_0x14028a[_0x0561('0x45')]:_0x450d18['model'];if(_0x377ce1['query']['includeAll']){_0x14028a[_0x0561('0x4f')]=[{'all':!![]}];}_0x14028a=_[_0x0561('0x4d')]({},_0x14028a,_0x377ce1[_0x0561('0x57')]);return db[_0x0561('0x3d')]['find'](_0x14028a)[_0x0561('0x1e')](handleEntityNotFound(_0x21d605,null))['then'](respondWithResult(_0x21d605,null))[_0x0561('0x58')](handleError(_0x21d605,null));};exports[_0x0561('0x32')]=function(_0x1bd87a,_0x1492cc){if(_0x1bd87a[_0x0561('0x59')]['id']){delete _0x1bd87a[_0x0561('0x59')]['id'];}return db[_0x0561('0x3d')][_0x0561('0x5a')]({'where':{'id':_0x1bd87a[_0x0561('0x53')]['id']},'include':[{'model':db[_0x0561('0x37')],'as':'Imap'},{'model':db[_0x0561('0x39')],'as':_0x0561('0x3a')},{'model':db[_0x0561('0x54')],'as':_0x0561('0x3b')}]})[_0x0561('0x1e')](handleEntityNotFound(_0x1492cc,null))[_0x0561('0x1e')](saveUpdates(_0x1bd87a[_0x0561('0x59')],null))[_0x0561('0x1e')](function(_0x367774){if(_0x367774&&_0x1bd87a[_0x0561('0x59')]['Imap']){return db[_0x0561('0x37')][_0x0561('0x32')](_0x1bd87a['body'][_0x0561('0x38')],{'where':{'MailAccountId':_0x367774['id']}})[_0x0561('0x1e')](function(){return _0x367774;});}return _0x367774;})[_0x0561('0x1e')](function(_0x440bb6){if(_0x440bb6&&_0x1bd87a['body'][_0x0561('0x3a')]){return db[_0x0561('0x39')][_0x0561('0x32')](_0x1bd87a[_0x0561('0x59')][_0x0561('0x3a')],{'where':{'MailAccountId':_0x440bb6['id']}})[_0x0561('0x1e')](function(){return _0x440bb6;});}return _0x440bb6;})[_0x0561('0x1e')](respondWithResult(_0x1492cc,null))['catch'](handleError(_0x1492cc,null));};exports[_0x0561('0x5b')]=function(_0x723942,_0x2e2279){return db['MailAccount'][_0x0561('0x5b')]()['then'](respondWithResult(_0x2e2279,null))['catch'](handleError(_0x2e2279,null));};exports[_0x0561('0x5c')]=function(_0x428bbd,_0x5651fb,_0x2b3092){if(_0x428bbd['body']['id']){delete _0x428bbd['body']['id'];}return db[_0x0561('0x3d')][_0x0561('0x5a')]({'where':{'id':_0x428bbd[_0x0561('0x53')]['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x5651fb,null))['then'](function(_0x250055){if(_0x250055){_0x428bbd[_0x0561('0x59')][_0x0561('0x5d')]=_0x250055['id'];return db['Disposition']['create'](_0x428bbd[_0x0561('0x59')]);}})[_0x0561('0x1e')](respondWithResult(_0x5651fb,null))[_0x0561('0x58')](handleError(_0x5651fb,null));};exports['getDispositions']=function(_0x53f81e,_0x511cd0,_0x449a49){var _0x47026a={'raw':![],'where':{}};var _0x5d93f1={};var _0x2c81c8={'count':0x0,'rows':[]};return db[_0x0561('0x3d')][_0x0561('0x5e')]({'where':{'id':_0x53f81e[_0x0561('0x53')]['id']}})['then'](handleEntityNotFound(_0x511cd0,null))[_0x0561('0x1e')](function(_0x571830){if(_0x571830){_0x5d93f1[_0x0561('0x43')]=_[_0x0561('0x55')](db[_0x0561('0x5f')][_0x0561('0x56')]);_0x5d93f1['query']=_[_0x0561('0x55')](_0x53f81e[_0x0561('0x40')]);_0x5d93f1[_0x0561('0x41')]=_[_0x0561('0x42')](_0x5d93f1[_0x0561('0x43')],_0x5d93f1[_0x0561('0x40')]);_0x47026a['attributes']=_['intersection'](_0x5d93f1[_0x0561('0x43')],qs[_0x0561('0x44')](_0x53f81e[_0x0561('0x40')][_0x0561('0x44')]));_0x47026a[_0x0561('0x45')]=_0x47026a[_0x0561('0x45')][_0x0561('0x46')]?_0x47026a[_0x0561('0x45')]:_0x5d93f1['model'];if(!_0x53f81e['query'][_0x0561('0x47')](_0x0561('0x48'))){_0x47026a[_0x0561('0x2e')]=qs[_0x0561('0x2e')](_0x53f81e[_0x0561('0x40')][_0x0561('0x2e')]);_0x47026a[_0x0561('0x2c')]=qs[_0x0561('0x2c')](_0x53f81e[_0x0561('0x40')]['offset']);}_0x47026a['order']=qs[_0x0561('0x49')](_0x53f81e[_0x0561('0x40')][_0x0561('0x49')]);_0x47026a[_0x0561('0x4a')]=qs[_0x0561('0x41')](_[_0x0561('0x4b')](_0x53f81e['query'],_0x5d93f1[_0x0561('0x41')]));_0x47026a[_0x0561('0x4a')][_0x0561('0x5d')]=_0x571830['id'];if(_0x53f81e[_0x0561('0x40')][_0x0561('0x4c')]){_0x47026a['where']=_[_0x0561('0x4d')](_0x47026a[_0x0561('0x4a')],{'$or':_['map'](_0x47026a[_0x0561('0x45')],function(_0x2d25c4){var _0x2ec3f0={};_0x2ec3f0[_0x2d25c4]={'$like':'%'+_0x53f81e[_0x0561('0x40')]['filter']+'%'};return _0x2ec3f0;})});}_0x47026a=_[_0x0561('0x4d')]({},_0x47026a,_0x53f81e[_0x0561('0x57')]);return db[_0x0561('0x5f')][_0x0561('0x2f')]({'where':_0x47026a['where']})['then'](function(_0x143d8c){_0x2c81c8[_0x0561('0x2f')]=_0x143d8c;if(_0x53f81e[_0x0561('0x40')][_0x0561('0x60')]){_0x47026a['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x47026a);})[_0x0561('0x1e')](function(_0x3c5f74){_0x2c81c8[_0x0561('0x51')]=_0x3c5f74;return _0x2c81c8;});}})['then'](respondWithFilteredResult(_0x511cd0,_0x47026a))['catch'](handleError(_0x511cd0,null));};exports['removeDispositions']=function(_0x24f5e6,_0x4c4336,_0x34ebf6){return db['MailAccount']['find']({'where':{'id':_0x24f5e6[_0x0561('0x53')]['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x4c4336,null))[_0x0561('0x1e')](function(_0x5fc90d){if(_0x5fc90d){return _0x5fc90d[_0x0561('0x61')](_0x24f5e6[_0x0561('0x40')][_0x0561('0x62')]);}})[_0x0561('0x1e')](respondWithStatusCode(_0x4c4336,null))[_0x0561('0x58')](handleError(_0x4c4336,null));};exports['addAnswer']=function(_0x2e3577,_0x4dfa2f,_0x109f5f){if(_0x2e3577[_0x0561('0x59')]['id']){delete _0x2e3577['body']['id'];}return db['MailAccount'][_0x0561('0x5a')]({'where':{'id':_0x2e3577[_0x0561('0x53')]['id']}})['then'](handleEntityNotFound(_0x4dfa2f,null))[_0x0561('0x1e')](function(_0x10a36d){if(_0x10a36d){_0x2e3577[_0x0561('0x59')][_0x0561('0x5d')]=_0x10a36d['id'];return db[_0x0561('0x63')][_0x0561('0x64')](_0x2e3577[_0x0561('0x59')]);}})['then'](respondWithResult(_0x4dfa2f,null))['catch'](handleError(_0x4dfa2f,null));};exports[_0x0561('0x65')]=function(_0xeea98f,_0x253a29,_0x219dc7){var _0x31bc5e={'raw':![],'where':{}};var _0x4a742e={};var _0x541784={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0xeea98f[_0x0561('0x53')]['id']}})['then'](handleEntityNotFound(_0x253a29,null))[_0x0561('0x1e')](function(_0x3892fd){if(_0x3892fd){_0x4a742e[_0x0561('0x43')]=_[_0x0561('0x55')](db['CannedAnswer']['rawAttributes']);_0x4a742e[_0x0561('0x40')]=_[_0x0561('0x55')](_0xeea98f['query']);_0x4a742e[_0x0561('0x41')]=_[_0x0561('0x42')](_0x4a742e[_0x0561('0x43')],_0x4a742e['query']);_0x31bc5e[_0x0561('0x45')]=_['intersection'](_0x4a742e[_0x0561('0x43')],qs[_0x0561('0x44')](_0xeea98f[_0x0561('0x40')][_0x0561('0x44')]));_0x31bc5e[_0x0561('0x45')]=_0x31bc5e['attributes']['length']?_0x31bc5e[_0x0561('0x45')]:_0x4a742e['model'];if(!_0xeea98f[_0x0561('0x40')][_0x0561('0x47')](_0x0561('0x48'))){_0x31bc5e[_0x0561('0x2e')]=qs[_0x0561('0x2e')](_0xeea98f[_0x0561('0x40')][_0x0561('0x2e')]);_0x31bc5e[_0x0561('0x2c')]=qs[_0x0561('0x2c')](_0xeea98f[_0x0561('0x40')][_0x0561('0x2c')]);}_0x31bc5e[_0x0561('0x66')]=qs[_0x0561('0x49')](_0xeea98f['query'][_0x0561('0x49')]);_0x31bc5e[_0x0561('0x4a')]=qs['filters'](_[_0x0561('0x4b')](_0xeea98f[_0x0561('0x40')],_0x4a742e[_0x0561('0x41')]));_0x31bc5e['where'][_0x0561('0x5d')]=_0x3892fd['id'];if(_0xeea98f['query'][_0x0561('0x4c')]){_0x31bc5e[_0x0561('0x4a')]=_[_0x0561('0x4d')](_0x31bc5e[_0x0561('0x4a')],{'$or':_[_0x0561('0x3c')](_0x31bc5e[_0x0561('0x45')],function(_0x32007f){var _0x15111b={};_0x15111b[_0x32007f]={'$like':'%'+_0xeea98f[_0x0561('0x40')][_0x0561('0x4c')]+'%'};return _0x15111b;})});}_0x31bc5e=_['merge']({},_0x31bc5e,_0xeea98f[_0x0561('0x57')]);return db[_0x0561('0x63')][_0x0561('0x2f')]({'where':_0x31bc5e[_0x0561('0x4a')]})['then'](function(_0xd1753f){_0x541784[_0x0561('0x2f')]=_0xd1753f;if(_0xeea98f[_0x0561('0x40')]['includeAll']){_0x31bc5e[_0x0561('0x4f')]=[{'all':!![]}];}return db[_0x0561('0x63')][_0x0561('0x50')](_0x31bc5e);})[_0x0561('0x1e')](function(_0x10447d){_0x541784['rows']=_0x10447d;return _0x541784;});}})['then'](respondWithFilteredResult(_0x253a29,_0x31bc5e))[_0x0561('0x58')](handleError(_0x253a29,null));};exports[_0x0561('0x67')]=function(_0x1dfd4e,_0x19f8cb,_0x42bddd){return db[_0x0561('0x3d')][_0x0561('0x5a')]({'where':{'id':_0x1dfd4e['params']['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x19f8cb,null))['then'](function(_0x2a0a6a){if(_0x2a0a6a){return _0x2a0a6a[_0x0561('0x67')](_0x1dfd4e[_0x0561('0x40')][_0x0561('0x62')]);}})[_0x0561('0x1e')](respondWithStatusCode(_0x19f8cb,null))[_0x0561('0x58')](handleError(_0x19f8cb,null));};exports[_0x0561('0x64')]=function(_0x138d6c,_0x1b78b9){var _0x7b562c={'name':_0x138d6c[_0x0561('0x59')]['name'],'key':_0x138d6c[_0x0561('0x59')]['key'],'email':_0x138d6c[_0x0561('0x59')][_0x0561('0x68')],'ListId':_0x138d6c['body'][_0x0561('0x69')],'active':!_[_0x0561('0x6a')](_0x138d6c[_0x0561('0x59')][_0x0561('0x6b')])?_0x138d6c[_0x0561('0x59')]['active']:!![],'description':_0x138d6c[_0x0561('0x59')][_0x0561('0x6c')]||null,'Imap':{},'Smtp':{}};if(_[_0x0561('0x6a')](_0x138d6c[_0x0561('0x59')]['cservice'])){if(_0x138d6c[_0x0561('0x59')][_0x0561('0x6d')]){_0x7b562c[_0x0561('0x38')][_0x0561('0x6e')]=_0x7b562c[_0x0561('0x3a')][_0x0561('0x6e')]=_0x138d6c[_0x0561('0x59')]['cuser'];_0x7b562c[_0x0561('0x38')][_0x0561('0x6f')]=_0x7b562c[_0x0561('0x3a')][_0x0561('0x70')]=_0x138d6c[_0x0561('0x59')][_0x0561('0x71')];}else{_0x7b562c['Imap'][_0x0561('0x72')]=_0x7b562c['Smtp'][_0x0561('0x72')]=![];}_0x7b562c[_0x0561('0x38')][_0x0561('0x73')]=_0x138d6c[_0x0561('0x59')][_0x0561('0x38')][_0x0561('0x73')];_0x7b562c[_0x0561('0x38')]['port']=_0x138d6c[_0x0561('0x59')]['Imap']['port'];_0x7b562c['Smtp'][_0x0561('0x73')]=_0x138d6c[_0x0561('0x59')][_0x0561('0x3a')][_0x0561('0x73')];_0x7b562c[_0x0561('0x3a')][_0x0561('0x74')]=_0x138d6c['body'][_0x0561('0x3a')][_0x0561('0x74')];}else{_0x7b562c[_0x0561('0x38')][_0x0561('0x75')]=_0x7b562c['Smtp'][_0x0561('0x75')]=_0x138d6c[_0x0561('0x59')]['cservice'];_0x7b562c[_0x0561('0x38')]['user']=_0x7b562c[_0x0561('0x3a')]['user']=_0x138d6c[_0x0561('0x59')]['cuser'];_0x7b562c[_0x0561('0x38')][_0x0561('0x6f')]=_0x7b562c[_0x0561('0x3a')][_0x0561('0x70')]=_0x138d6c[_0x0561('0x59')][_0x0561('0x71')];}return db[_0x0561('0x3d')][_0x0561('0x64')](_0x7b562c,{'include':[{'model':db[_0x0561('0x39')],'as':'Smtp'},{'model':db[_0x0561('0x37')],'as':_0x0561('0x38')}]})[_0x0561('0x1e')](function(_0x545b40){var _0x4bfd91=_0x138d6c[_0x0561('0x6e')][_0x0561('0x76')]({'plain':!![]});if(!_0x4bfd91)throw new Error(_0x0561('0x77'));if(_0x4bfd91[_0x0561('0x78')]===_0x0561('0x6e')){var _0x1f5bc9=_0x545b40['get']({'plain':!![]});return db['UserProfileSection'][_0x0561('0x5a')]({'where':{'name':'MailAccounts','userProfileId':_0x4bfd91[_0x0561('0x79')]},'raw':!![]})['then'](function(_0x29da4f){if(_0x29da4f&&_0x29da4f[_0x0561('0x7a')]===0x0){return db['UserProfileResource'][_0x0561('0x64')]({'name':_0x1f5bc9[_0x0561('0x35')],'resourceId':_0x1f5bc9['id'],'type':_0x29da4f['name'],'sectionId':_0x29da4f['id']},{})[_0x0561('0x1e')](function(){return _0x545b40;});}else{return _0x545b40;}})['catch'](function(_0x2cb3cd){logger[_0x0561('0x24')](_0x0561('0x7b'),_0x2cb3cd);throw _0x2cb3cd;});}return _0x545b40;})[_0x0561('0x1e')](respondWithResult(_0x1b78b9,0xc9))[_0x0561('0x58')](handleError(_0x1b78b9,null));};exports[_0x0561('0x7c')]=function(_0x5af81e,_0x35b663,_0x2a44a9){return db[_0x0561('0x3d')][_0x0561('0x5e')]({'where':{'id':_0x5af81e[_0x0561('0x53')]['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x35b663,null))[_0x0561('0x1e')](function(_0x298c46){if(_0x298c46){return _0x298c46['getImap']();}return null;})[_0x0561('0x1e')](respondWithResult(_0x35b663,null))['catch'](handleError(_0x35b663,null));};exports[_0x0561('0x7d')]=function(_0x110d0e,_0x2a6591,_0x503ff3){if(_0x110d0e[_0x0561('0x59')]['id']){delete _0x110d0e[_0x0561('0x59')]['id'];}return db['MailAccount'][_0x0561('0x5a')]({'where':{'id':_0x110d0e['params']['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x2a6591,null))[_0x0561('0x1e')](function(_0x2e34ae){if(_0x2e34ae){_0x110d0e[_0x0561('0x59')][_0x0561('0x5d')]=_0x2e34ae['id'];return db['MailServerIn'][_0x0561('0x64')](_0x110d0e[_0x0561('0x59')]);}})[_0x0561('0x1e')](respondWithResult(_0x2a6591,null))['catch'](handleError(_0x2a6591,null));};exports[_0x0561('0x7e')]=function(_0x5db4aa,_0x2419e4,_0xb01826){return db[_0x0561('0x3d')]['findOne']({'where':{'id':_0x5db4aa[_0x0561('0x53')]['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x2419e4,null))[_0x0561('0x1e')](function(_0x401bd3){if(_0x401bd3){return _0x401bd3[_0x0561('0x7f')](null);}return null;})['then'](respondWithStatusCode(_0x2419e4,null))[_0x0561('0x58')](handleError(_0x2419e4,null));};exports[_0x0561('0x80')]=function(_0x333bf1,_0x31d5bd,_0x335bf9){return db[_0x0561('0x3d')][_0x0561('0x5e')]({'where':{'id':_0x333bf1['params']['id']}})['then'](handleEntityNotFound(_0x31d5bd,null))['then'](function(_0x34c375){if(_0x34c375){return _0x34c375[_0x0561('0x80')]();}return null;})[_0x0561('0x1e')](respondWithResult(_0x31d5bd,null))['catch'](handleError(_0x31d5bd,null));};exports[_0x0561('0x81')]=function(_0x1e300d,_0x3e3619,_0xf1ea38){if(_0x1e300d['body']['id']){delete _0x1e300d['body']['id'];}return db['MailAccount']['find']({'where':{'id':_0x1e300d['params']['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x3e3619,null))[_0x0561('0x1e')](function(_0xffd7bf){if(_0xffd7bf){_0x1e300d[_0x0561('0x59')][_0x0561('0x5d')]=_0xffd7bf['id'];return db[_0x0561('0x39')][_0x0561('0x64')](_0x1e300d[_0x0561('0x59')]);}})[_0x0561('0x1e')](respondWithResult(_0x3e3619,null))[_0x0561('0x58')](handleError(_0x3e3619,null));};exports[_0x0561('0x82')]=function(_0x3077a5,_0x229f55,_0xd880e5){return db[_0x0561('0x3d')]['findOne']({'where':{'id':_0x3077a5[_0x0561('0x53')]['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x229f55,null))[_0x0561('0x1e')](function(_0x5c1aac){if(_0x5c1aac){return _0x5c1aac[_0x0561('0x83')](null);}return null;})[_0x0561('0x1e')](respondWithStatusCode(_0x229f55,null))[_0x0561('0x58')](handleError(_0x229f55,null));};exports[_0x0561('0x84')]=function(_0x3ea909,_0x225da1,_0x18a278){return db['MailInteraction']['find']({'where':{'id':_0x3ea909[_0x0561('0x53')]['id']}})['then'](handleEntityNotFound(_0x225da1,null))[_0x0561('0x1e')](function(_0x149c31){if(_0x149c31){return _0x149c31[_0x0561('0x84')](_0x3ea909[_0x0561('0x59')][_0x0561('0x62')],_['omit'](_0x3ea909['body'],[_0x0561('0x62'),'id'])||{});}})[_0x0561('0x1e')](respondWithResult(_0x225da1,null))[_0x0561('0x58')](handleError(_0x225da1,null));};exports[_0x0561('0x85')]=function(_0x283115,_0x115d8d,_0x2e707d){var _0x3aab05={'raw':![],'where':{}};var _0x35a86c={};var _0xd2f76d={'count':0x0,'rows':[]};return db['MailAccount'][_0x0561('0x5e')]({'where':{'id':_0x283115[_0x0561('0x53')]['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x115d8d,null))['then'](function(_0x4c2523){if(_0x4c2523){_0x35a86c[_0x0561('0x43')]=_[_0x0561('0x55')](db[_0x0561('0x86')][_0x0561('0x56')]);_0x35a86c[_0x0561('0x40')]=_[_0x0561('0x55')](_0x283115['query']);_0x35a86c[_0x0561('0x41')]=_[_0x0561('0x42')](_0x35a86c[_0x0561('0x43')],_0x35a86c[_0x0561('0x40')]);_0x3aab05[_0x0561('0x45')]=_['intersection'](_0x35a86c[_0x0561('0x43')],qs[_0x0561('0x44')](_0x283115[_0x0561('0x40')][_0x0561('0x44')]));_0x3aab05[_0x0561('0x45')]=_0x3aab05[_0x0561('0x45')][_0x0561('0x46')]?_0x3aab05[_0x0561('0x45')]:_0x35a86c[_0x0561('0x43')];if(!_0x283115['query']['hasOwnProperty'](_0x0561('0x48'))){_0x3aab05[_0x0561('0x2e')]=qs[_0x0561('0x2e')](_0x283115[_0x0561('0x40')][_0x0561('0x2e')]);_0x3aab05[_0x0561('0x2c')]=qs['offset'](_0x283115[_0x0561('0x40')][_0x0561('0x2c')]);}_0x3aab05[_0x0561('0x66')]=qs['sort'](_0x283115['query']['sort']);_0x3aab05['where']=qs[_0x0561('0x41')](_[_0x0561('0x4b')](_0x283115[_0x0561('0x40')],_0x35a86c[_0x0561('0x41')]));_0x3aab05[_0x0561('0x4a')][_0x0561('0x5d')]=_0x4c2523['id'];if(_0x283115[_0x0561('0x40')]['filter']){_0x3aab05[_0x0561('0x4a')]=_[_0x0561('0x4d')](_0x3aab05[_0x0561('0x4a')],{'$or':_[_0x0561('0x3c')](_0x3aab05[_0x0561('0x45')],function(_0x3d1590){var _0x19265f={};_0x19265f[_0x3d1590]={'$like':'%'+_0x283115[_0x0561('0x40')][_0x0561('0x4c')]+'%'};return _0x19265f;})});}_0x3aab05=_['merge']({},_0x3aab05,_0x283115['options']);return db[_0x0561('0x86')][_0x0561('0x2f')]({'where':_0x3aab05[_0x0561('0x4a')]})[_0x0561('0x1e')](function(_0x25b893){_0xd2f76d[_0x0561('0x2f')]=_0x25b893;if(_0x283115['query'][_0x0561('0x60')]){_0x3aab05[_0x0561('0x4f')]=[{'model':db[_0x0561('0x87')],'as':_0x0561('0x88'),'required':![]},{'model':db[_0x0561('0x89')],'as':'Owner','attributes':[_0x0561('0x35'),_0x0561('0x8a'),'internal'],'required':![]},{'model':db[_0x0561('0x8b')],'as':'Tags','attributes':['id',_0x0561('0x35'),_0x0561('0x8c')],'where':_0x283115[_0x0561('0x40')]['tag']?{'id':_0x283115['query'][_0x0561('0x8d')]}:undefined,'required':_0x283115[_0x0561('0x40')]['tag']?!![]:![]}];}return db[_0x0561('0x86')]['findAll'](_0x3aab05);})[_0x0561('0x1e')](function(_0x546c6f){_0xd2f76d[_0x0561('0x51')]=_0x546c6f;return _0xd2f76d;});}})['then'](respondWithFilteredResult(_0x115d8d,_0x3aab05))['catch'](handleError(_0x115d8d,null));};exports[_0x0561('0x8e')]=function(_0x580e29,_0x652468,_0x48f949){return db[_0x0561('0x3d')][_0x0561('0x5e')]({'where':{'id':_0x580e29['params']['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x652468,null))[_0x0561('0x1e')](function(_0x3a0cda){if(_0x3a0cda){return db['sequelize'][_0x0561('0x8f')](function(_0x2f9ee9){return db[_0x0561('0x90')][_0x0561('0x33')]({'where':{'MailAccountId':_0x580e29['params']['id']},'transaction':_0x2f9ee9})['then'](function(_0x42d98b){var _0x5209a4=_[_0x0561('0x3c')](_0x580e29['body'],function(_0x1e79d1){_0x1e79d1[_0x0561('0x5d')]=_0x580e29[_0x0561('0x53')]['id'];return _0x1e79d1;});return db[_0x0561('0x90')][_0x0561('0x91')](_0x5209a4,{'transaction':_0x2f9ee9});});})[_0x0561('0x1e')](function(){return db['MailApplication'][_0x0561('0x92')]({'where':{'MailAccountId':_0x580e29[_0x0561('0x53')]['id']},'order':_0x0561('0x93')});});}})[_0x0561('0x1e')](respondWithResult(_0x652468,null))[_0x0561('0x58')](handleError(_0x652468,null));};exports[_0x0561('0x94')]=function(_0x506de1,_0x13330d,_0x2943cf){var _0x84fb26={};var _0x8f4c7b={};var _0x5a747e;var _0x183240;return db['MailAccount'][_0x0561('0x5e')]({'where':{'id':_0x506de1[_0x0561('0x53')]['id']}})['then'](handleEntityNotFound(_0x13330d,null))['then'](function(_0x1b6492){if(_0x1b6492){_0x5a747e=_0x1b6492;_0x8f4c7b[_0x0561('0x43')]=_['keys'](db[_0x0561('0x90')]['rawAttributes']);_0x8f4c7b[_0x0561('0x40')]=_[_0x0561('0x55')](_0x506de1[_0x0561('0x40')]);_0x8f4c7b['filters']=_[_0x0561('0x42')](_0x8f4c7b[_0x0561('0x43')],_0x8f4c7b['query']);_0x84fb26[_0x0561('0x45')]=_['intersection'](_0x8f4c7b['model'],qs[_0x0561('0x44')](_0x506de1[_0x0561('0x40')]['fields']));_0x84fb26[_0x0561('0x45')]=_0x84fb26[_0x0561('0x45')][_0x0561('0x46')]?_0x84fb26[_0x0561('0x45')]:_0x8f4c7b[_0x0561('0x43')];_0x84fb26[_0x0561('0x66')]=qs[_0x0561('0x49')](_0x506de1[_0x0561('0x40')]['sort']);_0x84fb26[_0x0561('0x4a')]=qs[_0x0561('0x41')](_['pick'](_0x506de1[_0x0561('0x40')],_0x8f4c7b[_0x0561('0x41')]));if(_0x506de1[_0x0561('0x40')]['filter']){_0x84fb26['where']=_[_0x0561('0x4d')](_0x84fb26[_0x0561('0x4a')],{'$or':_['map'](_0x84fb26[_0x0561('0x45')],function(_0x2bf94f){var _0x9ba349={};_0x9ba349[_0x2bf94f]={'$like':'%'+_0x506de1['query'][_0x0561('0x4c')]+'%'};return _0x9ba349;})});}_0x84fb26=_['merge']({},_0x84fb26,_0x506de1[_0x0561('0x57')]);return _0x5a747e[_0x0561('0x94')](_0x84fb26);}})[_0x0561('0x1e')](function(_0x25aba0){if(_0x25aba0){_0x183240=_0x25aba0['length'];if(!_0x506de1['query'][_0x0561('0x47')]('nolimit')){_0x84fb26[_0x0561('0x2e')]=qs[_0x0561('0x2e')](_0x506de1[_0x0561('0x40')][_0x0561('0x2e')]);_0x84fb26[_0x0561('0x2c')]=qs[_0x0561('0x2c')](_0x506de1[_0x0561('0x40')][_0x0561('0x2c')]);}return _0x5a747e[_0x0561('0x94')](_0x84fb26);}})[_0x0561('0x1e')](function(_0x736511){if(_0x736511){return _0x736511?{'count':_0x183240,'rows':_0x736511}:null;}})['then'](respondWithResult(_0x13330d,null))[_0x0561('0x58')](handleError(_0x13330d,null));};exports[_0x0561('0x95')]=function(_0x403700,_0x43c415,_0xef3bc7){var _0x1d3db6={'raw':!![],'where':{}};var _0x5740cd={};var _0x4fb2a4={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x403700[_0x0561('0x53')]['id']}})['then'](handleEntityNotFound(_0x43c415,null))[_0x0561('0x1e')](function(_0x526668){if(_0x526668){_0x5740cd['model']=_['keys'](db[_0x0561('0x96')][_0x0561('0x56')]);_0x5740cd[_0x0561('0x40')]=_[_0x0561('0x55')](_0x403700[_0x0561('0x40')]);_0x5740cd[_0x0561('0x41')]=_[_0x0561('0x42')](_0x5740cd[_0x0561('0x43')],_0x5740cd[_0x0561('0x40')]);_0x1d3db6[_0x0561('0x45')]=_[_0x0561('0x42')](_0x5740cd['model'],qs['fields'](_0x403700[_0x0561('0x40')][_0x0561('0x44')]));_0x1d3db6[_0x0561('0x45')]=_0x1d3db6[_0x0561('0x45')]['length']?_0x1d3db6[_0x0561('0x45')]:_0x5740cd[_0x0561('0x43')];if(!_0x403700[_0x0561('0x40')][_0x0561('0x47')](_0x0561('0x48'))){_0x1d3db6[_0x0561('0x2e')]=qs[_0x0561('0x2e')](_0x403700[_0x0561('0x40')]['limit']);_0x1d3db6[_0x0561('0x2c')]=qs[_0x0561('0x2c')](_0x403700[_0x0561('0x40')][_0x0561('0x2c')]);}_0x1d3db6[_0x0561('0x66')]=qs[_0x0561('0x49')](_0x403700['query']['sort']);_0x1d3db6[_0x0561('0x4a')]=qs[_0x0561('0x41')](_[_0x0561('0x4b')](_0x403700[_0x0561('0x40')],_0x5740cd[_0x0561('0x41')]));_0x1d3db6[_0x0561('0x4a')]['MailAccountId']=_0x526668['id'];if(_0x403700['query']['filter']){_0x1d3db6[_0x0561('0x4a')]=_[_0x0561('0x4d')](_0x1d3db6['where'],{'$or':_[_0x0561('0x3c')](_0x1d3db6['attributes'],function(_0x35335b){var _0x2461c8={};_0x2461c8[_0x35335b]={'$like':'%'+_0x403700[_0x0561('0x40')][_0x0561('0x4c')]+'%'};return _0x2461c8;})});}if(_0x403700['query'][_0x0561('0x97')]){var _0x1a971b=_0x403700[_0x0561('0x40')][_0x0561('0x97')]['split'](',');var _0x19574d={};_0x19574d[_0x1a971b[0x0]]={'$gte':moment(_0x1a971b[0x1])['format'](_0x0561('0x98'))};_0x1d3db6['where']=_[_0x0561('0x4d')](_0x1d3db6[_0x0561('0x4a')],_0x19574d);}_0x1d3db6=_[_0x0561('0x4d')]({},_0x1d3db6,_0x403700[_0x0561('0x57')]);return db[_0x0561('0x96')][_0x0561('0x2f')]({'where':_0x1d3db6[_0x0561('0x4a')]})[_0x0561('0x1e')](function(_0x1f0c3d){_0x4fb2a4['count']=_0x1f0c3d;if(_0x403700[_0x0561('0x40')][_0x0561('0x60')]){_0x1d3db6['include']=[{'all':!![]}];}return db['MailMessage'][_0x0561('0x50')](_0x1d3db6);})[_0x0561('0x1e')](function(_0xba3b10){if(_0x403700['query']['inlineCss']===_0x0561('0x99')){for(var _0x11a035=0x0;_0x11a035<_0xba3b10['length'];_0x11a035++){_0xba3b10[_0x11a035][_0x0561('0x59')]=juice(_0xba3b10[_0x11a035][_0x0561('0x59')]);}}_0x4fb2a4[_0x0561('0x51')]=_0xba3b10;return _0x4fb2a4;});}})[_0x0561('0x1e')](respondWithFilteredResult(_0x43c415,_0x1d3db6))['catch'](handleError(_0x43c415,null));};exports[_0x0561('0x36')]=function(_0x10a1f4,_0xe73662,_0x595a57){var _0xd8adec,_0x412bd3={},_0x5041c0;if(_0x10a1f4[_0x0561('0x59')]['to']){_0x5041c0=_0x10a1f4[_0x0561('0x59')]['to'][_0x0561('0x9a')](',')[0x0];}return db['MailAccount'][_0x0561('0x5a')]({'where':{'id':_0x10a1f4[_0x0561('0x53')]['id']},'include':[{'model':db['CmList'],'as':_0x0561('0x9b'),'include':[{'model':db['CmContact'],'as':_0x0561('0x9c'),'where':{'email':_0x5041c0},'limit':0x1,'order':[[_0x0561('0x9d'),_0x0561('0x9e')]]}]},{'model':db[_0x0561('0x39')],'as':_0x0561('0x3a'),'raw':!![]}]})[_0x0561('0x1e')](handleEntityNotFound(_0xe73662,null))[_0x0561('0x1e')](function(_0x9d1a95){if(_0x9d1a95){_0xd8adec=_0x9d1a95;if(_0x9d1a95[_0x0561('0x3a')]){if(_[_0x0561('0x6a')](_0x10a1f4[_0x0561('0x59')][_0x0561('0x9f')])){_0x10a1f4['body'][_0x0561('0x9f')]=util[_0x0561('0xa0')]('%s\x20<%s>',_0x9d1a95[_0x0561('0x35')],_0x9d1a95[_0x0561('0x68')]||_0x9d1a95[_0x0561('0x3a')][_0x0561('0x6e')]);}if(_0x10a1f4[_0x0561('0x59')][_0x0561('0xa1')]&&_0x10a1f4[_0x0561('0x59')][_0x0561('0xa1')][_0x0561('0x46')]){for(var _0x2eaa44=0x0;_0x2eaa44<_0x10a1f4[_0x0561('0x59')][_0x0561('0xa1')][_0x0561('0x46')];_0x2eaa44+=0x1){_0x10a1f4[_0x0561('0x59')][_0x0561('0xa1')][_0x2eaa44]={'filename':_0x10a1f4[_0x0561('0x59')][_0x0561('0xa1')][_0x2eaa44][_0x0561('0x35')],'path':path[_0x0561('0xa2')](config['root'],_0x0561('0xa3'),_0x10a1f4['body'][_0x0561('0xa1')][_0x2eaa44][_0x0561('0xa4')])};}}var _0x47a5a0={'tls':{'rejectUnauthorized':![]}};if(_[_0x0561('0x6a')](_0x9d1a95[_0x0561('0x3a')][_0x0561('0x75')])){if(_0x9d1a95[_0x0561('0x3a')][_0x0561('0x72')]){_0x47a5a0[_0x0561('0xa5')]={'user':_0x9d1a95['Smtp'][_0x0561('0x6e')],'pass':_0x9d1a95[_0x0561('0x3a')][_0x0561('0x70')]};}_0x47a5a0[_0x0561('0x73')]=_0x9d1a95[_0x0561('0x3a')][_0x0561('0x73')];_0x47a5a0[_0x0561('0x74')]=_0x9d1a95['Smtp'][_0x0561('0x74')];_0x47a5a0[_0x0561('0xa6')]=_0x9d1a95[_0x0561('0x3a')][_0x0561('0xa6')];}else{_0x47a5a0[_0x0561('0x75')]=_0x9d1a95[_0x0561('0x3a')][_0x0561('0x75')];_0x47a5a0['auth']={'user':_0x9d1a95[_0x0561('0x3a')][_0x0561('0x6e')],'pass':_0x9d1a95[_0x0561('0x3a')][_0x0561('0x70')]};}return respondWithRpcPromise(_0x0561('0xa7'),'sendMail',{'account':_0x47a5a0,'message':_0x10a1f4[_0x0561('0x59')]});}else{throw new Error('List\x20not\x20found');}}})['then'](function(_0x5a5494){if(_0x5a5494){_0x412bd3=_0x5a5494;if(_0xd8adec['List']){if(_0xd8adec[_0x0561('0x9b')][_0x0561('0x9c')][_0x0561('0x46')]){return _0xd8adec[_0x0561('0x9b')][_0x0561('0x9c')][0x0];}else{return db[_0x0561('0x87')][_0x0561('0x64')](_['defaults'](_0x10a1f4['body'],{'firstName':_0x10a1f4['body']['to'],'email':_0x10a1f4['body']['to'],'phone':_0x10a1f4[_0x0561('0x59')]['to'],'ListId':_0xd8adec[_0x0561('0x69')]}));}}else{throw new Error(_0x0561('0xa8'));}}})[_0x0561('0x1e')](function(_0x25022d){if(_0x25022d){var _0x587771={'UserId':_0x10a1f4[_0x0561('0x6e')]['id'],'ContactId':_0x25022d['id'],'MailAccountId':_0xd8adec['id'],'inReplyTo':_0x412bd3['messageId'],'to':_0x10a1f4[_0x0561('0x59')][_0x0561('0x9f')],'cc':_0x10a1f4[_0x0561('0x59')]['cc'],'subject':_0x10a1f4[_0x0561('0x59')][_0x0561('0xa9')],'attach':_0x10a1f4[_0x0561('0x59')][_0x0561('0xaa')],'firstMsgDirection':_0x0561('0xab'),'lastMsgAt':moment()[_0x0561('0xa0')](_0x0561('0x98')),'lastMsgDirection':_0x0561('0xab'),'Messages':[_[_0x0561('0x4d')](_0x10a1f4[_0x0561('0x59')],{'messageId':_0x412bd3[_0x0561('0xac')],'sentAt':moment()['format'](_0x0561('0x98')),'read':!![],'MailAccountId':_0xd8adec['id'],'UserId':_0x10a1f4['user']['id'],'ContactId':_0x25022d['id']})]};if(_0x10a1f4['body'][_0x0561('0xad')]){_0x587771=_[_0x0561('0x4d')](_0x587771,_0x10a1f4[_0x0561('0x59')][_0x0561('0xad')]);}return db[_0x0561('0x86')]['create'](_0x587771,{'include':[{'model':db[_0x0561('0x96')],'as':_0x0561('0xae')}]});}})[_0x0561('0x1e')](respondWithResult(_0xe73662,null))[_0x0561('0x58')](handleError(_0xe73662,null));};exports[_0x0561('0xaf')]=function(_0xe2ebce,_0x15302d,_0x5a2636){return db[_0x0561('0x3d')][_0x0561('0x5a')]({'where':{'id':_0xe2ebce[_0x0561('0x53')]['id']},'include':[{'model':db[_0x0561('0x39')],'as':_0x0561('0x3a'),'raw':!![]}]})['then'](handleEntityNotFound(_0x15302d,null))[_0x0561('0x1e')](function(_0x5aeb59){if(_0x5aeb59&&_0x5aeb59['Smtp']){var _0x3d2469={'id':_0x5aeb59['id'],'tls':{'rejectUnauthorized':![]}};if(_0x5aeb59['Smtp']['service']){_0x3d2469[_0x0561('0x75')]=_0x5aeb59['Smtp'][_0x0561('0x75')];}else{_0x3d2469['host']=_0x5aeb59[_0x0561('0x3a')][_0x0561('0x73')];_0x3d2469[_0x0561('0x74')]=_0x5aeb59[_0x0561('0x3a')][_0x0561('0x74')];_0x3d2469[_0x0561('0xa6')]=_0x5aeb59[_0x0561('0x3a')][_0x0561('0xa6')];}if(_0x5aeb59[_0x0561('0x3a')][_0x0561('0x72')]){_0x3d2469[_0x0561('0xa5')]={'user':_0x5aeb59[_0x0561('0x3a')]['user'],'pass':_0x5aeb59[_0x0561('0x3a')][_0x0561('0x70')]};}return respondWithRpcPromise(_0x0561('0xb0'),_0x0561('0xaf'),{'account':_0x3d2469});}})[_0x0561('0x1e')](respondWithResult(_0x15302d,null))[_0x0561('0x58')](handleError(_0x15302d,null));};exports[_0x0561('0x33')]=function(_0x370411,_0x31accb){return db['MailAccount'][_0x0561('0x5a')]({'where':{'id':_0x370411['params']['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x31accb,null))[_0x0561('0x1e')](function(_0x19c14f){if(_0x19c14f&&_0x19c14f['service']){throw new db[(_0x0561('0xb1'))][(_0x0561('0xb2'))](_0x0561('0xb3'));}return _0x19c14f;})[_0x0561('0x1e')](removeEntity(_0x31accb,null))[_0x0561('0x58')](handleError(_0x31accb,null));};exports['addAgents']=function(_0x327b8a,_0x43a7c5,_0x1dc548){return db[_0x0561('0x3d')][_0x0561('0x5a')]({'where':{'id':_0x327b8a[_0x0561('0x53')]['id']}})['then'](handleEntityNotFound(_0x43a7c5,null))[_0x0561('0x1e')](function(_0x1e7f93){if(_0x1e7f93){return _0x1e7f93[_0x0561('0xb4')](_0x327b8a[_0x0561('0x59')]['ids'],_[_0x0561('0xb5')](_0x327b8a['body'],['ids','id'])||{})[_0x0561('0xb6')](function(_0x5efe05){for(var _0x4a2605=0x0;_0x4a2605<_0x327b8a[_0x0561('0x59')][_0x0561('0x62')][_0x0561('0x46')];_0x4a2605+=0x1){socket[_0x0561('0xb7')]('userMailAccount:save',{'UserId':Number(_0x327b8a[_0x0561('0x59')][_0x0561('0x62')][_0x4a2605]),'MailAccountId':Number(_0x327b8a[_0x0561('0x53')]['id'])});}return _0x5efe05;});}})[_0x0561('0x1e')](respondWithResult(_0x43a7c5,null))['catch'](handleError(_0x43a7c5,null));};exports['removeAgents']=function(_0x1c067d,_0x1dbcb4,_0x693aef){return db['MailAccount'][_0x0561('0x5a')]({'where':{'id':_0x1c067d[_0x0561('0x53')]['id']}})[_0x0561('0x1e')](handleEntityNotFound(_0x1dbcb4,null))[_0x0561('0x1e')](function(_0x2eb505){if(_0x2eb505){return _0x2eb505[_0x0561('0xb8')](_0x1c067d[_0x0561('0x40')][_0x0561('0x62')])[_0x0561('0x1e')](function(){if(_['isArray'](_0x1c067d[_0x0561('0x40')][_0x0561('0x62')])){for(var _0x25909b=0x0;_0x25909b<_0x1c067d[_0x0561('0x40')][_0x0561('0x62')]['length'];_0x25909b+=0x1){socket[_0x0561('0xb7')](_0x0561('0xb9'),{'UserId':Number(_0x1c067d[_0x0561('0x40')][_0x0561('0x62')][_0x25909b]),'MailAccountId':Number(_0x1c067d[_0x0561('0x53')]['id'])});}}else{socket[_0x0561('0xb7')](_0x0561('0xb9'),{'UserId':Number(_0x1c067d[_0x0561('0x40')][_0x0561('0x62')]),'MailAccountId':Number(_0x1c067d[_0x0561('0x53')]['id'])});}});}})[_0x0561('0x1e')](respondWithStatusCode(_0x1dbcb4,null))['catch'](handleError(_0x1dbcb4,null));};exports[_0x0561('0xba')]=function(_0x2fbd1a,_0x13601c,_0x18f758){var _0x1e1c74={};var _0x5b1d8a={};var _0x56ae2f;var _0x1e144f;return db[_0x0561('0x3d')][_0x0561('0x5e')]({'where':{'id':_0x2fbd1a[_0x0561('0x53')]['id']}})['then'](handleEntityNotFound(_0x13601c,null))[_0x0561('0x1e')](function(_0x3302ae){if(_0x3302ae){_0x56ae2f=_0x3302ae;_0x5b1d8a[_0x0561('0x43')]=_[_0x0561('0x55')](db[_0x0561('0x89')][_0x0561('0x56')]);_0x5b1d8a[_0x0561('0x40')]=_[_0x0561('0x55')](_0x2fbd1a[_0x0561('0x40')]);_0x5b1d8a[_0x0561('0x41')]=_[_0x0561('0x42')](_0x5b1d8a[_0x0561('0x43')],_0x5b1d8a[_0x0561('0x40')]);_0x1e1c74[_0x0561('0x45')]=_[_0x0561('0x42')](_0x5b1d8a[_0x0561('0x43')],qs[_0x0561('0x44')](_0x2fbd1a[_0x0561('0x40')][_0x0561('0x44')]));_0x1e1c74['attributes']=_0x1e1c74[_0x0561('0x45')][_0x0561('0x46')]?_0x1e1c74[_0x0561('0x45')]:_0x5b1d8a[_0x0561('0x43')];_0x1e1c74[_0x0561('0x66')]=qs['sort'](_0x2fbd1a[_0x0561('0x40')][_0x0561('0x49')]);_0x1e1c74['where']=qs[_0x0561('0x41')](_[_0x0561('0x4b')](_0x2fbd1a[_0x0561('0x40')],_0x5b1d8a[_0x0561('0x41')]));if(_0x2fbd1a[_0x0561('0x40')]['filter']){_0x1e1c74[_0x0561('0x4a')]=_['merge'](_0x1e1c74[_0x0561('0x4a')],{'$or':_[_0x0561('0x3c')](_0x1e1c74[_0x0561('0x45')],function(_0x5922fe){var _0x106808={};_0x106808[_0x5922fe]={'$like':'%'+_0x2fbd1a[_0x0561('0x40')]['filter']+'%'};return _0x106808;})});}_0x1e1c74=_[_0x0561('0x4d')]({},_0x1e1c74,_0x2fbd1a['options']);return _0x56ae2f[_0x0561('0xba')](_0x1e1c74);}})['then'](function(_0x11a171){if(_0x11a171){_0x1e144f=_0x11a171['length'];if(!_0x2fbd1a[_0x0561('0x40')][_0x0561('0x47')](_0x0561('0x48'))){_0x1e1c74['limit']=qs[_0x0561('0x2e')](_0x2fbd1a[_0x0561('0x40')]['limit']);_0x1e1c74['offset']=qs['offset'](_0x2fbd1a['query'][_0x0561('0x2c')]);}return _0x56ae2f['getAgents'](_0x1e1c74);}})[_0x0561('0x1e')](function(_0x5ae736){if(_0x5ae736){return _0x5ae736?{'count':_0x1e144f,'rows':_0x5ae736}:null;}})[_0x0561('0x1e')](respondWithResult(_0x13601c,null))[_0x0561('0x58')](handleError(_0x13601c,null));};
\ No newline at end of file
index 4be5d33..d93ac47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c54=['events','../../mysqldb','MailAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x28a5ad,_0x520afa){var _0x176b8a=function(_0x3d71b){while(--_0x3d71b){_0x28a5ad['push'](_0x28a5ad['shift']());}};_0x176b8a(++_0x520afa);}(_0x3c54,0x14d));var _0x43c5=function(_0x28ca77,_0x4fd794){_0x28ca77=_0x28ca77-0x0;var _0x30f74f=_0x3c54[_0x28ca77];return _0x30f74f;};'use strict';var EventEmitter=require(_0x43c5('0x0'));var MailAccount=require(_0x43c5('0x1'))['db'][_0x43c5('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x43c5('0x3')](0x0);var events={'afterCreate':_0x43c5('0x4'),'afterUpdate':_0x43c5('0x5'),'afterDestroy':_0x43c5('0x6')};function emitEvent(_0x4317f9){return function(_0xe50b04,_0x5cc703,_0x564843){MailAccountEvents[_0x43c5('0x7')](_0x4317f9+':'+_0xe50b04['id'],_0xe50b04);MailAccountEvents['emit'](_0x4317f9,_0xe50b04);_0x564843(null);};}for(var e in events){if(events[_0x43c5('0x8')](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0x4489=['update','remove','emit','hook','events','../../mysqldb','setMaxListeners','save'];(function(_0x56b561,_0x185ed1){var _0x29a418=function(_0x3fcc8d){while(--_0x3fcc8d){_0x56b561['push'](_0x56b561['shift']());}};_0x29a418(++_0x185ed1);}(_0x4489,0x164));var _0x9448=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4489[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x9448('0x0'));var MailAccount=require(_0x9448('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x9448('0x2')](0x0);var events={'afterCreate':_0x9448('0x3'),'afterUpdate':_0x9448('0x4'),'afterDestroy':_0x9448('0x5')};function emitEvent(_0x4f7c08){return function(_0x49f6d5,_0x4bf96c,_0x5333bf){MailAccountEvents['emit'](_0x4f7c08+':'+_0x49f6d5['id'],_0x49f6d5);MailAccountEvents[_0x9448('0x6')](_0x4f7c08,_0x49f6d5);_0x5333bf(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount[_0x9448('0x7')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index fdafe6b..c74ccc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc86f=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailAccount.attributes','exports','mail_accounts','util','api'];(function(_0x409deb,_0x2b731){var _0x15a4f7=function(_0x556510){while(--_0x556510){_0x409deb['push'](_0x409deb['shift']());}};_0x15a4f7(++_0x2b731);}(_0xc86f,0x82));var _0xfc86=function(_0x4c8fa9,_0x2a1337){_0x4c8fa9=_0x4c8fa9-0x0;var _0x192648=_0xc86f[_0x4c8fa9];return _0x192648;};'use strict';var _=require('lodash');var util=require(_0xfc86('0x0'));var logger=require('../../config/logger')(_0xfc86('0x1'));var moment=require(_0xfc86('0x2'));var BPromise=require(_0xfc86('0x3'));var rp=require(_0xfc86('0x4'));var fs=require('fs');var path=require(_0xfc86('0x5'));var rimraf=require(_0xfc86('0x6'));var config=require(_0xfc86('0x7'));var attributes=require(_0xfc86('0x8'));module[_0xfc86('0x9')]=function(_0x251f89,_0x54f30a){return _0x251f89['define']('MailAccount',attributes,{'tableName':_0xfc86('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x10aa=['request-promise','path','rimraf','../../config/environment','./mailAccount.attributes','exports','define','MailAccount','lodash','util','../../config/logger','api'];(function(_0x110df6,_0xcb9933){var _0x383c94=function(_0x17180b){while(--_0x17180b){_0x110df6['push'](_0x110df6['shift']());}};_0x383c94(++_0xcb9933);}(_0x10aa,0xec));var _0xa10a=function(_0x1d5d12,_0x5c12f7){_0x1d5d12=_0x1d5d12-0x0;var _0x4d9db3=_0x10aa[_0x1d5d12];return _0x4d9db3;};'use strict';var _=require(_0xa10a('0x0'));var util=require(_0xa10a('0x1'));var logger=require(_0xa10a('0x2'))(_0xa10a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa10a('0x4'));var fs=require('fs');var path=require(_0xa10a('0x5'));var rimraf=require(_0xa10a('0x6'));var config=require(_0xa10a('0x7'));var attributes=require(_0xa10a('0x8'));module[_0xa10a('0x9')]=function(_0x49b0d4,_0x8d4b88){return _0x49b0d4[_0xa10a('0xa')](_0xa10a('0xb'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c36144..4fb8f32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e09=['options','attributes','limit','include','model','map','then','GetMailAccount','stringify','ShowMailAccount','raw','where','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','mapKey','includes','find','account','CmList','List','updatedAt','DESC','MailApplication','Smtp','Applications','applications','list','orderBy','priority','asc','autoclose','push','close','*,*,*,*','Contacts','defaults','create','List\x20not\x20found','contact','messageId','generate','attach','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','update','subject','format','YYYY-MM-DD\x20HH:mm:ss','interaction','created','originTo','originCc','bcc','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','agent','Start','startRouting','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./mailAccount.socket','register','request','info','MailAccount,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','MailAccount','findAll'];(function(_0x4d67b0,_0x52d61c){var _0x2e485c=function(_0x5a865f){while(--_0x5a865f){_0x4d67b0['push'](_0x4d67b0['shift']());}};_0x2e485c(++_0x52d61c);}(_0x1e09,0xbb));var _0x91e0=function(_0x4ad4da,_0x36f574){_0x4ad4da=_0x4ad4da-0x0;var _0x4dc8ad=_0x1e09[_0x4ad4da];return _0x4dc8ad;};'use strict';var _=require(_0x91e0('0x0'));var util=require(_0x91e0('0x1'));var moment=require('moment');var BPromise=require(_0x91e0('0x2'));var rs=require(_0x91e0('0x3'));var fs=require('fs');var Redis=require(_0x91e0('0x4'));var db=require(_0x91e0('0x5'))['db'];var utils=require(_0x91e0('0x6'));var logger=require(_0x91e0('0x7'))(_0x91e0('0x8'));var config=require(_0x91e0('0x9'));var jayson=require(_0x91e0('0xa'));var client=jayson['client'][_0x91e0('0xb')]({'port':0x232c});config[_0x91e0('0xc')]=_['defaults'](config[_0x91e0('0xc')],{'host':_0x91e0('0xd'),'port':0x18eb});var socket=require(_0x91e0('0xe'))(new Redis(config[_0x91e0('0xc')]));require(_0x91e0('0xf'))[_0x91e0('0x10')](socket);function respondWithRpcPromise(_0x5044d5,_0x29d662,_0xe5a86c){return new BPromise(function(_0x671bef,_0x2bda3d){return client[_0x91e0('0x11')](_0x5044d5,_0xe5a86c)['then'](function(_0x51f4b2){logger[_0x91e0('0x12')](_0x91e0('0x13'),_0x29d662,'request\x20sent');logger[_0x91e0('0x14')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x29d662,_0x91e0('0x15'),JSON['stringify'](_0x51f4b2));if(_0x51f4b2[_0x91e0('0x16')]){if(_0x51f4b2[_0x91e0('0x16')][_0x91e0('0x17')]===0x1f4){logger[_0x91e0('0x16')](_0x91e0('0x13'),_0x29d662,_0x51f4b2[_0x91e0('0x16')][_0x91e0('0x18')]);return _0x2bda3d(_0x51f4b2[_0x91e0('0x16')][_0x91e0('0x18')]);}logger[_0x91e0('0x16')](_0x91e0('0x13'),_0x29d662,_0x51f4b2[_0x91e0('0x16')][_0x91e0('0x18')]);return _0x671bef(_0x51f4b2['error'][_0x91e0('0x18')]);}else{logger[_0x91e0('0x12')](_0x91e0('0x13'),_0x29d662,_0x91e0('0x15'));_0x671bef(_0x51f4b2[_0x91e0('0x19')][_0x91e0('0x18')]);}})[_0x91e0('0x1a')](function(_0x4cd09f){logger[_0x91e0('0x16')](_0x91e0('0x13'),_0x29d662,_0x4cd09f);_0x2bda3d(_0x4cd09f);});});}exports['GetMailAccount']=function(_0x1fc924){var _0x52eb1f=this;return new Promise(function(_0x76759a,_0x3aa3b4){return db[_0x91e0('0x1b')][_0x91e0('0x1c')]({'raw':_0x1fc924['options']?_0x1fc924[_0x91e0('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x1fc924[_0x91e0('0x1d')]?_0x1fc924[_0x91e0('0x1d')]['where']||null:null,'attributes':_0x1fc924['options']?_0x1fc924[_0x91e0('0x1d')][_0x91e0('0x1e')]||null:null,'limit':_0x1fc924[_0x91e0('0x1d')]?_0x1fc924[_0x91e0('0x1d')][_0x91e0('0x1f')]||null:null,'include':_0x1fc924[_0x91e0('0x1d')]?_0x1fc924[_0x91e0('0x1d')][_0x91e0('0x20')]?_['map'](_0x1fc924[_0x91e0('0x1d')]['include'],function(_0x1275d2){return{'model':db[_0x1275d2[_0x91e0('0x21')]],'as':_0x1275d2['as'],'attributes':_0x1275d2[_0x91e0('0x1e')],'include':_0x1275d2[_0x91e0('0x20')]?_['map'](_0x1275d2['include'],function(_0x17add9){return{'model':db[_0x17add9[_0x91e0('0x21')]],'as':_0x17add9['as'],'attributes':_0x17add9['attributes'],'include':_0x17add9['include']?_[_0x91e0('0x22')](_0x17add9['include'],function(_0x44c7e6){return{'model':db[_0x44c7e6[_0x91e0('0x21')]],'as':_0x44c7e6['as'],'attributes':_0x44c7e6[_0x91e0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x91e0('0x23')](function(_0x3e3c7b){logger[_0x91e0('0x12')](_0x91e0('0x24'),_0x1fc924);logger[_0x91e0('0x14')](_0x91e0('0x24'),_0x1fc924,JSON[_0x91e0('0x25')](_0x3e3c7b));_0x76759a(_0x3e3c7b);})['catch'](function(_0x7405ab){logger[_0x91e0('0x16')]('GetMailAccount',_0x7405ab[_0x91e0('0x18')],_0x1fc924);_0x3aa3b4(_0x52eb1f['error'](0x1f4,_0x7405ab[_0x91e0('0x18')]));});});};exports[_0x91e0('0x26')]=function(_0x4048ea){var _0x6a8d52=this;return new Promise(function(_0x3b4796,_0x1a60ea){return db[_0x91e0('0x1b')]['find']({'raw':_0x4048ea[_0x91e0('0x1d')]?_0x4048ea[_0x91e0('0x1d')][_0x91e0('0x27')]===undefined?!![]:![]:!![],'where':_0x4048ea[_0x91e0('0x1d')]?_0x4048ea[_0x91e0('0x1d')][_0x91e0('0x28')]||null:null,'attributes':_0x4048ea['options']?_0x4048ea['options'][_0x91e0('0x1e')]||null:null,'include':_0x4048ea[_0x91e0('0x1d')]?_0x4048ea['options'][_0x91e0('0x20')]?_[_0x91e0('0x22')](_0x4048ea[_0x91e0('0x1d')][_0x91e0('0x20')],function(_0x6416ad){return{'model':db[_0x6416ad[_0x91e0('0x21')]],'as':_0x6416ad['as'],'attributes':_0x6416ad[_0x91e0('0x1e')],'include':_0x6416ad[_0x91e0('0x20')]?_[_0x91e0('0x22')](_0x6416ad[_0x91e0('0x20')],function(_0x379918){return{'model':db[_0x379918['model']],'as':_0x379918['as'],'attributes':_0x379918[_0x91e0('0x1e')],'include':_0x379918[_0x91e0('0x20')]?_[_0x91e0('0x22')](_0x379918[_0x91e0('0x20')],function(_0x18270e){return{'model':db[_0x18270e[_0x91e0('0x21')]],'as':_0x18270e['as'],'attributes':_0x18270e[_0x91e0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x91e0('0x23')](function(_0xd84e17){logger[_0x91e0('0x12')](_0x91e0('0x26'),_0x4048ea);logger[_0x91e0('0x14')](_0x91e0('0x26'),_0x4048ea,JSON['stringify'](_0xd84e17));_0x3b4796(_0xd84e17);})[_0x91e0('0x1a')](function(_0x2ff276){logger[_0x91e0('0x16')](_0x91e0('0x26'),_0x2ff276[_0x91e0('0x18')],_0x4048ea);_0x1a60ea(_0x6a8d52['error'](0x1f4,_0x2ff276[_0x91e0('0x18')]));});});};exports[_0x91e0('0x29')]=function(_0x25b134){var _0x307a43=this;return new Promise(function(_0x242d0a,_0xb463f2){var _0x1ad0e4={'body':_0x25b134[_0x91e0('0x2a')],'channel':_0x91e0('0x2b')};var _0x20168f=_[_0x91e0('0x2c')](_[_0x91e0('0x2d')](db[_0x91e0('0x2e')][_0x91e0('0x2f')]),[_0x91e0('0x30'),'updatedAt',_0x91e0('0x31'),_0x91e0('0x32')]);var _0x5ad083=![];if(_0x25b134[_0x91e0('0x2a')]['id']){delete _0x25b134[_0x91e0('0x2a')]['id'];}if(_['isNil'](_0x25b134['body'][_0x91e0('0x33')])){return _0xb463f2(_0x307a43[_0x91e0('0x16')](0x1f4,_0x91e0('0x34')));}if(_[_0x91e0('0x35')](_0x25b134[_0x91e0('0x2a')]['body'])||_0x25b134['body'][_0x91e0('0x2a')]===''){return _0xb463f2(_0x307a43[_0x91e0('0x16')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0x25b134['body'][_0x91e0('0x36')])){return _0xb463f2(_0x307a43[_0x91e0('0x16')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x20168f));}if(!_[_0x91e0('0x37')](_0x20168f,_0x25b134[_0x91e0('0x2a')][_0x91e0('0x36')])){return _0xb463f2(_0x307a43[_0x91e0('0x16')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x20168f));}var _0x1a4d50={};_0x1a4d50[_0x25b134[_0x91e0('0x2a')][_0x91e0('0x36')]]=_0x25b134[_0x91e0('0x2a')][_0x91e0('0x33')];return db[_0x91e0('0x1b')][_0x91e0('0x38')]({'where':{'id':_0x25b134[_0x91e0('0x39')]['id']},'include':[{'model':db[_0x91e0('0x3a')],'as':_0x91e0('0x3b'),'include':[{'model':db[_0x91e0('0x2e')],'as':'Contacts','where':_0x1a4d50,'limit':0x1,'order':[[_0x91e0('0x3c'),_0x91e0('0x3d')]]}]},{'model':db[_0x91e0('0x3e')],'as':'Applications'},{'model':db['MailServerOut'],'as':_0x91e0('0x3f')}]})['then'](function(_0x51e1ab){if(_0x51e1ab&&_0x51e1ab['List']){var _0x30c1c4=_0x51e1ab['get']({'plain':!![]});_0x1ad0e4[_0x91e0('0x39')]=_['omit'](_0x30c1c4,[_0x91e0('0x40'),_0x91e0('0x3b')]);_0x1ad0e4[_0x91e0('0x41')]=_0x30c1c4[_0x91e0('0x40')];_0x1ad0e4[_0x91e0('0x42')]=_0x30c1c4[_0x91e0('0x3b')];_0x1ad0e4['applications']=_[_0x91e0('0x43')](_0x1ad0e4[_0x91e0('0x41')],[_0x91e0('0x44')],[_0x91e0('0x45')]);if(_0x1ad0e4['account']&&_0x1ad0e4['account'][_0x91e0('0x46')]){_0x1ad0e4['applications'][_0x91e0('0x47')]({'id':0x0,'priority':_0x1ad0e4[_0x91e0('0x41')]['length']+0x1,'app':_0x91e0('0x48'),'appdata':_0x91e0('0x46'),'interval':_0x91e0('0x49')});}if(_0x1ad0e4[_0x91e0('0x39')]['Applications']){delete _0x1ad0e4[_0x91e0('0x39')]['Applications'];}if(_0x1ad0e4[_0x91e0('0x39')][_0x91e0('0x3b')]){delete _0x1ad0e4[_0x91e0('0x39')]['List'];}if(_0x30c1c4['List'][_0x91e0('0x4a')]['length']){return _0x30c1c4[_0x91e0('0x3b')]['Contacts'][0x0];}var _0x107af2=_[_0x91e0('0x4b')](_0x25b134[_0x91e0('0x2a')],{'firstName':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x33')],'ListId':_0x30c1c4[_0x91e0('0x32')]});_0x107af2[_0x25b134[_0x91e0('0x2a')][_0x91e0('0x36')]]=_0x25b134[_0x91e0('0x2a')][_0x91e0('0x33')];return db[_0x91e0('0x2e')][_0x91e0('0x4c')](_0x107af2);}else{throw new Error(_0x91e0('0x4d'));}})['then'](function(_0x54ad8a){_0x1ad0e4[_0x91e0('0x4e')]=_0x54ad8a;if(_0x54ad8a){if(!_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')][_0x91e0('0x4f')]){_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')]['messageId']=rs[_0x91e0('0x50')]()+'\x20'+_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')][_0x91e0('0x33')];}var _0x260655={'ContactId':_0x54ad8a['id'],'MailAccountId':_0x25b134[_0x91e0('0x39')]['id'],'inReplyTo':_0x25b134['body'][_0x91e0('0x18')][_0x91e0('0x4f')],'to':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')][_0x91e0('0x33')],'cc':_0x25b134['body'][_0x91e0('0x18')]['cc'],'subject':_0x25b134[_0x91e0('0x2a')]['message']['subject'],'attach':_0x25b134[_0x91e0('0x2a')]['message'][_0x91e0('0x51')],'lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x91e0('0x52')]['find']({'where':{'closed':![],'MailAccountId':_0x25b134[_0x91e0('0x39')]['id']},'include':[{'model':db[_0x91e0('0x53')],'as':_0x91e0('0x54'),'attributes':[_0x91e0('0x4f')],'where':{'messageId':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')][_0x91e0('0x55')]}}]})['then'](function(_0x18afe0){if(_0x18afe0){return[_0x18afe0,![]];}return db[_0x91e0('0x52')][_0x91e0('0x4c')](_0x260655)[_0x91e0('0x23')](function(_0x17560b){return[_0x17560b,!![]];});});}else{throw new Error(_0x91e0('0x56'));}})['spread'](function(_0x2e6fe4,_0x19d854){if(_0x2e6fe4){_0x5ad083=_0x19d854;if(!_0x19d854){return _0x2e6fe4[_0x91e0('0x57')]({'inReplyTo':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')][_0x91e0('0x4f')],'to':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')]['from'],'cc':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')]['cc'],'subject':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')][_0x91e0('0x58')],'attach':_0x2e6fe4[_0x91e0('0x51')]?_0x2e6fe4['attach']:_0x25b134['body'][_0x91e0('0x18')][_0x91e0('0x51')],'substatus':null,'substatusAt':moment()[_0x91e0('0x59')](_0x91e0('0x5a')),'lastMsgAt':moment()[_0x91e0('0x59')](_0x91e0('0x5a')),'lastMsgDirection':'in'});}else{return _0x2e6fe4;}}})['then'](function(_0x152936){_0x1ad0e4[_0x91e0('0x5b')]=_0x152936['get']({'plain':!![]});_0x1ad0e4[_0x91e0('0x5b')][_0x91e0('0x5c')]=_0x5ad083;return db['MailMessage'][_0x91e0('0x4c')]({'body':_0x25b134[_0x91e0('0x2a')]['body'],'MailAccountId':_0x25b134['account']['id'],'MailInteractionId':_0x152936['id'],'direction':'in','ContactId':_0x1ad0e4[_0x91e0('0x4e')]['id'],'messageId':_0x25b134['body'][_0x91e0('0x18')]['messageId'],'from':_0x25b134['body'][_0x91e0('0x18')][_0x91e0('0x33')],'to':_0x25b134[_0x91e0('0x2a')]['message']['to'],'cc':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')]['cc'],'subject':_0x25b134['body'][_0x91e0('0x18')][_0x91e0('0x58')],'attach':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')]['attach'],'Attachments':_0x25b134['body'][_0x91e0('0x18')]['attachments'],'originTo':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')][_0x91e0('0x5d')],'originCc':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')][_0x91e0('0x5e')],'bcc':_0x25b134['body'][_0x91e0('0x18')][_0x91e0('0x5f')],'ChatWebsiteId':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')]['ChatWebsiteId']||null,'originChannel':_0x25b134[_0x91e0('0x2a')][_0x91e0('0x18')][_0x91e0('0x60')]||_0x91e0('0x61'),'ChatOfflineMessageId':_0x25b134['body'][_0x91e0('0x18')][_0x91e0('0x62')]||null},{'include':[{'model':db[_0x91e0('0x63')],'as':_0x91e0('0x64')}]});})[_0x91e0('0x23')](function(_0x39f9f4){_0x1ad0e4[_0x91e0('0x18')]=_0x39f9f4;if(_0x1ad0e4[_0x91e0('0x5b')][_0x91e0('0x65')]){return db[_0x91e0('0x66')][_0x91e0('0x38')]({'attributes':['id',_0x91e0('0x67')],'where':{'id':_0x1ad0e4[_0x91e0('0x5b')][_0x91e0('0x65')]}})[_0x91e0('0x23')](function(_0xaca13f){if(_0xaca13f){_0x1ad0e4[_0x91e0('0x41')][_0x91e0('0x68')]({'id':0x0,'priority':0x0,'app':_0x91e0('0x69'),'appdata':_0xaca13f[_0x91e0('0x67')]+','+(_0x1ad0e4['account']['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x91e0('0x6a'),_0x91e0('0x6b'),_0x1ad0e4);});}return respondWithRpcPromise(_0x91e0('0x6a'),_0x91e0('0x6b'),_0x1ad0e4);})[_0x91e0('0x23')](function(_0x4f0fd0){_0x242d0a(_0x4f0fd0);})[_0x91e0('0x1a')](function(_0x335084){_0xb463f2(_0x307a43[_0x91e0('0x16')](0x1f4,_0x335084[_0x91e0('0x18')]));});});};
\ No newline at end of file
+var _0x4a15=['stringify','error','message','info','result','catch','GetMailAccount','MailAccount','findAll','options','raw','include','map','model','attributes','then','find','where','ShowMailAccount','NotifyMailAccount','body','mail','difference','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','List','Applications','MailServerOut','Smtp','get','applications','list','orderBy','priority','autoclose','push','length','close','*,*,*,*','Contacts','defaults','ListId','create','List\x20not\x20found','contact','messageId','generate','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','update','subject','interaction','created','attachments','originTo','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','UserId','name','unshift','Start','startRouting','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','redis','socket.io-emitter','./mailAccount.socket','request','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s'];(function(_0xd4094e,_0x293ac2){var _0x2996d7=function(_0x260bb1){while(--_0x260bb1){_0xd4094e['push'](_0xd4094e['shift']());}};_0x2996d7(++_0x293ac2);}(_0x4a15,0x11b));var _0x54a1=function(_0x4eaa4c,_0x2f7422){_0x4eaa4c=_0x4eaa4c-0x0;var _0x15aec6=_0x4a15[_0x4eaa4c];return _0x15aec6;};'use strict';var _=require(_0x54a1('0x0'));var util=require(_0x54a1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x54a1('0x2'));var fs=require('fs');var Redis=require(_0x54a1('0x3'));var db=require(_0x54a1('0x4'))['db'];var utils=require(_0x54a1('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x54a1('0x6'));var jayson=require(_0x54a1('0x7'));var client=jayson[_0x54a1('0x8')]['http']({'port':0x232c});config[_0x54a1('0x9')]=_['defaults'](config[_0x54a1('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x54a1('0xa'))(new Redis(config[_0x54a1('0x9')]));require(_0x54a1('0xb'))['register'](socket);function respondWithRpcPromise(_0x41fc30,_0x526ae1,_0x3a5552){return new BPromise(function(_0x4f2f9c,_0x2cb1f7){return client[_0x54a1('0xc')](_0x41fc30,_0x3a5552)['then'](function(_0x294fec){logger['info'](_0x54a1('0xd'),_0x526ae1,_0x54a1('0xe'));logger[_0x54a1('0xf')](_0x54a1('0x10'),_0x526ae1,_0x54a1('0xe'),JSON[_0x54a1('0x11')](_0x294fec));if(_0x294fec[_0x54a1('0x12')]){if(_0x294fec['error']['code']===0x1f4){logger['error'](_0x54a1('0xd'),_0x526ae1,_0x294fec[_0x54a1('0x12')]['message']);return _0x2cb1f7(_0x294fec['error']['message']);}logger[_0x54a1('0x12')]('MailAccount,\x20%s,\x20%s',_0x526ae1,_0x294fec[_0x54a1('0x12')]['message']);return _0x4f2f9c(_0x294fec[_0x54a1('0x12')][_0x54a1('0x13')]);}else{logger[_0x54a1('0x14')](_0x54a1('0xd'),_0x526ae1,_0x54a1('0xe'));_0x4f2f9c(_0x294fec[_0x54a1('0x15')][_0x54a1('0x13')]);}})[_0x54a1('0x16')](function(_0x5133d5){logger['error'](_0x54a1('0xd'),_0x526ae1,_0x5133d5);_0x2cb1f7(_0x5133d5);});});}exports[_0x54a1('0x17')]=function(_0x370c0f){var _0x4c0153=this;return new Promise(function(_0x2bf0e9,_0x597f54){return db[_0x54a1('0x18')][_0x54a1('0x19')]({'raw':_0x370c0f[_0x54a1('0x1a')]?_0x370c0f[_0x54a1('0x1a')][_0x54a1('0x1b')]===undefined?!![]:![]:!![],'where':_0x370c0f[_0x54a1('0x1a')]?_0x370c0f[_0x54a1('0x1a')]['where']||null:null,'attributes':_0x370c0f['options']?_0x370c0f[_0x54a1('0x1a')]['attributes']||null:null,'limit':_0x370c0f[_0x54a1('0x1a')]?_0x370c0f[_0x54a1('0x1a')]['limit']||null:null,'include':_0x370c0f[_0x54a1('0x1a')]?_0x370c0f[_0x54a1('0x1a')][_0x54a1('0x1c')]?_[_0x54a1('0x1d')](_0x370c0f['options'][_0x54a1('0x1c')],function(_0x76a078){return{'model':db[_0x76a078[_0x54a1('0x1e')]],'as':_0x76a078['as'],'attributes':_0x76a078[_0x54a1('0x1f')],'include':_0x76a078['include']?_['map'](_0x76a078[_0x54a1('0x1c')],function(_0x97c411){return{'model':db[_0x97c411[_0x54a1('0x1e')]],'as':_0x97c411['as'],'attributes':_0x97c411['attributes'],'include':_0x97c411[_0x54a1('0x1c')]?_[_0x54a1('0x1d')](_0x97c411[_0x54a1('0x1c')],function(_0x11af5d){return{'model':db[_0x11af5d[_0x54a1('0x1e')]],'as':_0x11af5d['as'],'attributes':_0x11af5d[_0x54a1('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x54a1('0x20')](function(_0x1e2d27){logger[_0x54a1('0x14')](_0x54a1('0x17'),_0x370c0f);logger[_0x54a1('0xf')](_0x54a1('0x17'),_0x370c0f,JSON[_0x54a1('0x11')](_0x1e2d27));_0x2bf0e9(_0x1e2d27);})[_0x54a1('0x16')](function(_0x5c47c5){logger[_0x54a1('0x12')](_0x54a1('0x17'),_0x5c47c5[_0x54a1('0x13')],_0x370c0f);_0x597f54(_0x4c0153['error'](0x1f4,_0x5c47c5['message']));});});};exports['ShowMailAccount']=function(_0x24a2d6){var _0x38e45c=this;return new Promise(function(_0xb83fe2,_0x6252e0){return db[_0x54a1('0x18')][_0x54a1('0x21')]({'raw':_0x24a2d6[_0x54a1('0x1a')]?_0x24a2d6[_0x54a1('0x1a')][_0x54a1('0x1b')]===undefined?!![]:![]:!![],'where':_0x24a2d6[_0x54a1('0x1a')]?_0x24a2d6[_0x54a1('0x1a')][_0x54a1('0x22')]||null:null,'attributes':_0x24a2d6[_0x54a1('0x1a')]?_0x24a2d6[_0x54a1('0x1a')][_0x54a1('0x1f')]||null:null,'include':_0x24a2d6[_0x54a1('0x1a')]?_0x24a2d6[_0x54a1('0x1a')][_0x54a1('0x1c')]?_[_0x54a1('0x1d')](_0x24a2d6[_0x54a1('0x1a')][_0x54a1('0x1c')],function(_0x116ef6){return{'model':db[_0x116ef6[_0x54a1('0x1e')]],'as':_0x116ef6['as'],'attributes':_0x116ef6[_0x54a1('0x1f')],'include':_0x116ef6[_0x54a1('0x1c')]?_['map'](_0x116ef6['include'],function(_0x51240a){return{'model':db[_0x51240a[_0x54a1('0x1e')]],'as':_0x51240a['as'],'attributes':_0x51240a[_0x54a1('0x1f')],'include':_0x51240a[_0x54a1('0x1c')]?_[_0x54a1('0x1d')](_0x51240a[_0x54a1('0x1c')],function(_0x4c0554){return{'model':db[_0x4c0554[_0x54a1('0x1e')]],'as':_0x4c0554['as'],'attributes':_0x4c0554[_0x54a1('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x54a1('0x20')](function(_0x13ce49){logger['info']('ShowMailAccount',_0x24a2d6);logger[_0x54a1('0xf')]('ShowMailAccount',_0x24a2d6,JSON['stringify'](_0x13ce49));_0xb83fe2(_0x13ce49);})[_0x54a1('0x16')](function(_0x2dc27d){logger['error'](_0x54a1('0x23'),_0x2dc27d[_0x54a1('0x13')],_0x24a2d6);_0x6252e0(_0x38e45c[_0x54a1('0x12')](0x1f4,_0x2dc27d[_0x54a1('0x13')]));});});};exports[_0x54a1('0x24')]=function(_0x2790fa){var _0x23ac37=this;return new Promise(function(_0x20a017,_0x1326f3){var _0x30d01a={'body':_0x2790fa[_0x54a1('0x25')],'channel':_0x54a1('0x26')};var _0x2764f6=_[_0x54a1('0x27')](_['keys'](db[_0x54a1('0x28')][_0x54a1('0x29')]),[_0x54a1('0x2a'),_0x54a1('0x2b'),_0x54a1('0x2c'),'ListId']);var _0x3823bf=![];if(_0x2790fa['body']['id']){delete _0x2790fa[_0x54a1('0x25')]['id'];}if(_[_0x54a1('0x2d')](_0x2790fa[_0x54a1('0x25')][_0x54a1('0x2e')])){return _0x1326f3(_0x23ac37[_0x54a1('0x12')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x54a1('0x2d')](_0x2790fa[_0x54a1('0x25')][_0x54a1('0x25')])||_0x2790fa[_0x54a1('0x25')]['body']===''){return _0x1326f3(_0x23ac37[_0x54a1('0x12')](0x1f4,_0x54a1('0x2f')));}if(_[_0x54a1('0x2d')](_0x2790fa[_0x54a1('0x25')][_0x54a1('0x30')])){return _0x1326f3(_0x23ac37['error'](0x1f4,_0x54a1('0x31')+_0x2764f6));}if(!_[_0x54a1('0x32')](_0x2764f6,_0x2790fa[_0x54a1('0x25')][_0x54a1('0x30')])){return _0x1326f3(_0x23ac37[_0x54a1('0x12')](0x1f4,_0x54a1('0x33')+_0x2764f6));}var _0x5b4d1c={};_0x5b4d1c[_0x2790fa[_0x54a1('0x25')][_0x54a1('0x30')]]=_0x2790fa[_0x54a1('0x25')][_0x54a1('0x2e')];return db[_0x54a1('0x18')]['find']({'where':{'id':_0x2790fa[_0x54a1('0x34')]['id']},'include':[{'model':db['CmList'],'as':_0x54a1('0x35'),'include':[{'model':db[_0x54a1('0x28')],'as':'Contacts','where':_0x5b4d1c,'limit':0x1,'order':[[_0x54a1('0x2b'),'DESC']]}]},{'model':db['MailApplication'],'as':_0x54a1('0x36')},{'model':db[_0x54a1('0x37')],'as':_0x54a1('0x38')}]})[_0x54a1('0x20')](function(_0x3ff997){if(_0x3ff997&&_0x3ff997[_0x54a1('0x35')]){var _0x45b4f3=_0x3ff997[_0x54a1('0x39')]({'plain':!![]});_0x30d01a['account']=_['omit'](_0x45b4f3,[_0x54a1('0x36'),_0x54a1('0x35')]);_0x30d01a[_0x54a1('0x3a')]=_0x45b4f3[_0x54a1('0x36')];_0x30d01a[_0x54a1('0x3b')]=_0x45b4f3[_0x54a1('0x35')];_0x30d01a[_0x54a1('0x3a')]=_[_0x54a1('0x3c')](_0x30d01a[_0x54a1('0x3a')],[_0x54a1('0x3d')],['asc']);if(_0x30d01a[_0x54a1('0x34')]&&_0x30d01a['account'][_0x54a1('0x3e')]){_0x30d01a[_0x54a1('0x3a')][_0x54a1('0x3f')]({'id':0x0,'priority':_0x30d01a[_0x54a1('0x3a')][_0x54a1('0x40')]+0x1,'app':_0x54a1('0x41'),'appdata':_0x54a1('0x3e'),'interval':_0x54a1('0x42')});}if(_0x30d01a[_0x54a1('0x34')][_0x54a1('0x36')]){delete _0x30d01a['account'][_0x54a1('0x36')];}if(_0x30d01a[_0x54a1('0x34')]['List']){delete _0x30d01a[_0x54a1('0x34')][_0x54a1('0x35')];}if(_0x45b4f3[_0x54a1('0x35')][_0x54a1('0x43')]['length']){return _0x45b4f3[_0x54a1('0x35')][_0x54a1('0x43')][0x0];}var _0x31580f=_[_0x54a1('0x44')](_0x2790fa[_0x54a1('0x25')],{'firstName':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x2e')],'ListId':_0x45b4f3[_0x54a1('0x45')]});_0x31580f[_0x2790fa[_0x54a1('0x25')][_0x54a1('0x30')]]=_0x2790fa[_0x54a1('0x25')]['from'];return db[_0x54a1('0x28')][_0x54a1('0x46')](_0x31580f);}else{throw new Error(_0x54a1('0x47'));}})[_0x54a1('0x20')](function(_0x5717d5){_0x30d01a[_0x54a1('0x48')]=_0x5717d5;if(_0x5717d5){if(!_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')][_0x54a1('0x49')]){_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')][_0x54a1('0x49')]=rs[_0x54a1('0x4a')]()+'\x20'+_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')]['from'];}var _0x2c761d={'ContactId':_0x5717d5['id'],'MailAccountId':_0x2790fa[_0x54a1('0x34')]['id'],'inReplyTo':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')][_0x54a1('0x49')],'to':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')]['from'],'cc':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')]['cc'],'subject':_0x2790fa[_0x54a1('0x25')]['message']['subject'],'attach':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')][_0x54a1('0x4b')],'lastMsgAt':moment()[_0x54a1('0x4c')](_0x54a1('0x4d')),'lastMsgDirection':'in'};return db[_0x54a1('0x4e')][_0x54a1('0x21')]({'where':{'closed':![],'MailAccountId':_0x2790fa[_0x54a1('0x34')]['id']},'include':[{'model':db[_0x54a1('0x4f')],'as':_0x54a1('0x50'),'attributes':['messageId'],'where':{'messageId':_0x2790fa[_0x54a1('0x25')]['message'][_0x54a1('0x51')]}}]})[_0x54a1('0x20')](function(_0x4d6468){if(_0x4d6468){return[_0x4d6468,![]];}return db[_0x54a1('0x4e')][_0x54a1('0x46')](_0x2c761d)['then'](function(_0x5ca806){return[_0x5ca806,!![]];});});}else{throw new Error(_0x54a1('0x52'));}})['spread'](function(_0x32c859,_0x71462b){if(_0x32c859){_0x3823bf=_0x71462b;if(!_0x71462b){return _0x32c859[_0x54a1('0x53')]({'inReplyTo':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')][_0x54a1('0x49')],'to':_0x2790fa[_0x54a1('0x25')]['message'][_0x54a1('0x2e')],'cc':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')]['cc'],'subject':_0x2790fa[_0x54a1('0x25')]['message'][_0x54a1('0x54')],'attach':_0x32c859[_0x54a1('0x4b')]?_0x32c859[_0x54a1('0x4b')]:_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')][_0x54a1('0x4b')],'substatus':null,'substatusAt':moment()[_0x54a1('0x4c')](_0x54a1('0x4d')),'lastMsgAt':moment()[_0x54a1('0x4c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x32c859;}}})[_0x54a1('0x20')](function(_0x3d5fc2){_0x30d01a[_0x54a1('0x55')]=_0x3d5fc2['get']({'plain':!![]});_0x30d01a[_0x54a1('0x55')][_0x54a1('0x56')]=_0x3823bf;return db[_0x54a1('0x4f')][_0x54a1('0x46')]({'body':_0x2790fa[_0x54a1('0x25')]['body'],'MailAccountId':_0x2790fa[_0x54a1('0x34')]['id'],'MailInteractionId':_0x3d5fc2['id'],'direction':'in','ContactId':_0x30d01a[_0x54a1('0x48')]['id'],'messageId':_0x2790fa['body']['message']['messageId'],'from':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')]['from'],'to':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')]['to'],'cc':_0x2790fa['body'][_0x54a1('0x13')]['cc'],'subject':_0x2790fa['body']['message']['subject'],'attach':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')][_0x54a1('0x4b')],'Attachments':_0x2790fa[_0x54a1('0x25')]['message'][_0x54a1('0x57')],'originTo':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')][_0x54a1('0x58')],'originCc':_0x2790fa[_0x54a1('0x25')]['message'][_0x54a1('0x59')],'bcc':_0x2790fa[_0x54a1('0x25')]['message']['bcc'],'ChatWebsiteId':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')][_0x54a1('0x5a')]||null,'originChannel':_0x2790fa[_0x54a1('0x25')][_0x54a1('0x13')][_0x54a1('0x5b')]||_0x54a1('0x5c'),'ChatOfflineMessageId':_0x2790fa[_0x54a1('0x25')]['message'][_0x54a1('0x5d')]||null},{'include':[{'model':db[_0x54a1('0x5e')],'as':'Attachments'}]});})[_0x54a1('0x20')](function(_0x57dd0a){_0x30d01a[_0x54a1('0x13')]=_0x57dd0a;if(_0x30d01a[_0x54a1('0x55')][_0x54a1('0x5f')]){return db['User']['find']({'attributes':['id',_0x54a1('0x60')],'where':{'id':_0x30d01a[_0x54a1('0x55')][_0x54a1('0x5f')]}})['then'](function(_0x347041){if(_0x347041){_0x30d01a[_0x54a1('0x3a')][_0x54a1('0x61')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x347041[_0x54a1('0x60')]+','+(_0x30d01a[_0x54a1('0x34')]['waitForTheAssignedAgent']||0xa),'interval':_0x54a1('0x42')});}return respondWithRpcPromise(_0x54a1('0x62'),_0x54a1('0x63'),_0x30d01a);});}return respondWithRpcPromise(_0x54a1('0x62'),_0x54a1('0x63'),_0x30d01a);})['then'](function(_0x43a0d8){_0x20a017(_0x43a0d8);})[_0x54a1('0x16')](function(_0x58ab77){_0x1326f3(_0x23ac37[_0x54a1('0x12')](0x1f4,_0x58ab77['message']));});});};
\ No newline at end of file
index 3d7363e..9b98b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9be2=['./mailAccount.events','save','remove','emit','removeListener','register','length'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x9be2,0x85));var _0x29be=function(_0x311e6a,_0x26ec4a){_0x311e6a=_0x311e6a-0x0;var _0x51ca4f=_0x9be2[_0x311e6a];return _0x51ca4f;};'use strict';var MailAccountEvents=require(_0x29be('0x0'));var events=[_0x29be('0x1'),_0x29be('0x2'),'update'];function createListener(_0x4526cf,_0x1b30bc){return function(_0xbf2f62){_0x1b30bc[_0x29be('0x3')](_0x4526cf,_0xbf2f62);};}function removeListener(_0x3f4f2b,_0x2cbc7d){return function(){MailAccountEvents[_0x29be('0x4')](_0x3f4f2b,_0x2cbc7d);};}exports[_0x29be('0x5')]=function(_0x259217){for(var _0x29c580=0x0,_0x2e7936=events[_0x29be('0x6')];_0x29c580<_0x2e7936;_0x29c580++){var _0x4ea096=events[_0x29c580];var _0x40b061=createListener('mailAccount:'+_0x4ea096,_0x259217);MailAccountEvents['on'](_0x4ea096,_0x40b061);}};
\ No newline at end of file
+var _0x576a=['save','remove','update','emit','removeListener','register','length','mailAccount:','./mailAccount.events'];(function(_0x16f92a,_0xe3a479){var _0x1c4381=function(_0x41acd5){while(--_0x41acd5){_0x16f92a['push'](_0x16f92a['shift']());}};_0x1c4381(++_0xe3a479);}(_0x576a,0x8f));var _0xa576=function(_0x45cabb,_0x34d8e7){_0x45cabb=_0x45cabb-0x0;var _0xc4d1a8=_0x576a[_0x45cabb];return _0xc4d1a8;};'use strict';var MailAccountEvents=require(_0xa576('0x0'));var events=[_0xa576('0x1'),_0xa576('0x2'),_0xa576('0x3')];function createListener(_0x2f4b12,_0x410a18){return function(_0x2e5e73){_0x410a18[_0xa576('0x4')](_0x2f4b12,_0x2e5e73);};}function removeListener(_0x240130,_0x173d1a){return function(){MailAccountEvents[_0xa576('0x5')](_0x240130,_0x173d1a);};}exports[_0xa576('0x6')]=function(_0x20ddd0){for(var _0xf6e11f=0x0,_0xcf5e3e=events[_0xa576('0x7')];_0xf6e11f<_0xcf5e3e;_0xf6e11f++){var _0x3fa01e=events[_0xf6e11f];var _0x561f85=createListener(_0xa576('0x8')+_0x3fa01e,_0x20ddd0);MailAccountEvents['on'](_0x3fa01e,_0x561f85);}};
\ No newline at end of file
index cfda80b..2161e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8809=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','show','isAuthenticated','update','delete','exports','util','path','connect-timeout','express'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0x8809,0x1cc));var _0x9880=function(_0x72193d,_0x330a80){_0x72193d=_0x72193d-0x0;var _0x455d4f=_0x8809[_0x72193d];return _0x455d4f;};'use strict';var multer=require('multer');var util=require(_0x9880('0x0'));var path=require(_0x9880('0x1'));var timeout=require(_0x9880('0x2'));var express=require(_0x9880('0x3'));var router=express['Router']();var fs_extra=require(_0x9880('0x4'));var auth=require(_0x9880('0x5'));var interaction=require(_0x9880('0x6'));var config=require(_0x9880('0x7'));var controller=require(_0x9880('0x8'));router[_0x9880('0x9')](_0x9880('0xa'),auth['isAuthenticated'](),controller[_0x9880('0xb')]);router['put'](_0x9880('0xa'),auth[_0x9880('0xc')](),controller[_0x9880('0xd')]);router[_0x9880('0xe')](_0x9880('0xa'),auth[_0x9880('0xc')](),controller['destroy']);module[_0x9880('0xf')]=router;
\ No newline at end of file
+var _0xdb6c=['isAuthenticated','show','put','update','delete','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./mailApplication.controller','get','/:id'];(function(_0x299c7f,_0x49884f){var _0x28dc71=function(_0x37f4fb){while(--_0x37f4fb){_0x299c7f['push'](_0x299c7f['shift']());}};_0x28dc71(++_0x49884f);}(_0xdb6c,0x196));var _0xcdb6=function(_0x13bc1b,_0x3108b4){_0x13bc1b=_0x13bc1b-0x0;var _0x4d0e8b=_0xdb6c[_0x13bc1b];return _0x4d0e8b;};'use strict';var multer=require(_0xcdb6('0x0'));var util=require('util');var path=require(_0xcdb6('0x1'));var timeout=require(_0xcdb6('0x2'));var express=require(_0xcdb6('0x3'));var router=express[_0xcdb6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xcdb6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xcdb6('0x6'));var controller=require(_0xcdb6('0x7'));router[_0xcdb6('0x8')](_0xcdb6('0x9'),auth[_0xcdb6('0xa')](),controller[_0xcdb6('0xb')]);router[_0xcdb6('0xc')](_0xcdb6('0x9'),auth['isAuthenticated'](),controller[_0xcdb6('0xd')]);router[_0xcdb6('0xe')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xcdb6('0xf')]=router;
\ No newline at end of file
index eca02b4..bcd17af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc08b=['INTEGER','STRING','*,*,*,*','sequelize'];(function(_0x432fca,_0xb0b1b5){var _0x3adba4=function(_0x5e3ae4){while(--_0x5e3ae4){_0x432fca['push'](_0x432fca['shift']());}};_0x3adba4(++_0xb0b1b5);}(_0xc08b,0x1af));var _0xbc08=function(_0xb3b958,_0x301729){_0xb3b958=_0xb3b958-0x0;var _0x37b7d8=_0xc08b[_0xb3b958];return _0x37b7d8;};'use strict';var Sequelize=require(_0xbc08('0x0'));module['exports']={'priority':{'type':Sequelize[_0xbc08('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xbc08('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xbc08('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xbc08('0x3')}};
\ No newline at end of file
+var _0x575d=['STRING','noop','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x4c3070,_0xc2fb4c){var _0x536a44=function(_0x1412a5){while(--_0x1412a5){_0x4c3070['push'](_0x4c3070['shift']());}};_0x536a44(++_0xc2fb4c);}(_0x575d,0x1d7));var _0xd575=function(_0x41f5ba,_0xd0ffa8){_0x41f5ba=_0x41f5ba-0x0;var _0x535e03=_0x575d[_0x41f5ba];return _0x535e03;};'use strict';var Sequelize=require(_0xd575('0x0'));module[_0xd575('0x1')]={'priority':{'type':Sequelize[_0xd575('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xd575('0x3')],'allowNull':![],'defaultValue':_0xd575('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xd575('0x3')]},'interval':{'type':Sequelize[_0xd575('0x3')],'defaultValue':_0xd575('0x5')}};
\ No newline at end of file
index 480f60d..2059351 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['limit','count','Content-Range','json','apply','reject','save','then','destroy','error','name','send','params','keys','MailApplication','rawAttributes','query','filters','intersection','model','fields','attributes','includeAll','include','options','find','catch','body','eml-format','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined'];(function(_0x2cd12f,_0x40ce5f){var _0x5e0d8b=function(_0x1490d4){while(--_0x1490d4){_0x2cd12f['push'](_0x2cd12f['shift']());}};_0x5e0d8b(++_0x40ce5f);}(_0xf4eb,0xec));var _0xbf4e=function(_0x223e58,_0x512434){_0x223e58=_0x223e58-0x0;var _0x1e91c7=_0xf4eb[_0x223e58];return _0x1e91c7;};'use strict';var emlformat=require(_0xbf4e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbf4e('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbf4e('0x2'));var path=require(_0xbf4e('0x3'));var sox=require(_0xbf4e('0x4'));var csv=require(_0xbf4e('0x5'));var ejs=require(_0xbf4e('0x6'));var fs=require('fs');var fs_extra=require(_0xbf4e('0x7'));var _=require(_0xbf4e('0x8'));var squel=require('squel');var crypto=require(_0xbf4e('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbf4e('0x5'));var querystring=require(_0xbf4e('0xa'));var Papa=require(_0xbf4e('0xb'));var Redis=require(_0xbf4e('0xc'));var authService=require(_0xbf4e('0xd'));var qs=require(_0xbf4e('0xe'));var as=require(_0xbf4e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xbf4e('0x10'));var utils=require('../../config/utils');var config=require(_0xbf4e('0x11'));var licenseUtil=require(_0xbf4e('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x17fd01,_0x5a3035){_0x5a3035=_0x5a3035||0xcc;return function(_0x56d185){if(_0x56d185){return _0x17fd01[_0xbf4e('0x13')](_0x5a3035);}return _0x17fd01[_0xbf4e('0x14')](_0x5a3035)[_0xbf4e('0x15')]();};}function respondWithResult(_0x302841,_0x3b74bd){_0x3b74bd=_0x3b74bd||0xc8;return function(_0x61bd54){if(_0x61bd54){return _0x302841['status'](_0x3b74bd)['json'](_0x61bd54);}};}function respondWithFilteredResult(_0x180432,_0x1735ae){return function(_0x28fc6b){if(_0x28fc6b){var _0x542909=typeof _0x1735ae[_0xbf4e('0x16')]===_0xbf4e('0x17')&&typeof _0x1735ae[_0xbf4e('0x18')]===_0xbf4e('0x17');var _0x5a631e=_0x28fc6b[_0xbf4e('0x19')];var _0x577c27=_0x542909?0x0:_0x1735ae['offset'];var _0x566ec3=_0x542909?_0x28fc6b['count']:_0x1735ae[_0xbf4e('0x16')]+_0x1735ae[_0xbf4e('0x18')];var _0x1fc800;if(_0x566ec3>=_0x5a631e){_0x566ec3=_0x5a631e;_0x1fc800=0xc8;}else{_0x1fc800=0xce;}_0x180432['status'](_0x1fc800);return _0x180432['set'](_0xbf4e('0x1a'),_0x577c27+'-'+_0x566ec3+'/'+_0x5a631e)[_0xbf4e('0x1b')](_0x28fc6b);}return null;};}function patchUpdates(_0x3be138){return function(_0x3a875b){try{jsonpatch[_0xbf4e('0x1c')](_0x3a875b,_0x3be138,!![]);}catch(_0x1e2a68){return BPromise[_0xbf4e('0x1d')](_0x1e2a68);}return _0x3a875b[_0xbf4e('0x1e')]();};}function saveUpdates(_0xd09e12,_0x376832){return function(_0x30539b){if(_0x30539b){return _0x30539b['update'](_0xd09e12)[_0xbf4e('0x1f')](function(_0x2e7673){return _0x2e7673;});}return null;};}function removeEntity(_0x51648c,_0x31e3f5){return function(_0x30994d){if(_0x30994d){return _0x30994d[_0xbf4e('0x20')]()[_0xbf4e('0x1f')](function(){_0x51648c[_0xbf4e('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x90635e,_0x36688a){return function(_0x3d6863){if(!_0x3d6863){_0x90635e['sendStatus'](0x194);}return _0x3d6863;};}function handleError(_0x2fb490,_0x5e08b1){_0x5e08b1=_0x5e08b1||0x1f4;return function(_0x5bcf71){logger[_0xbf4e('0x21')](_0x5bcf71['stack']);if(_0x5bcf71[_0xbf4e('0x22')]){delete _0x5bcf71[_0xbf4e('0x22')];}_0x2fb490[_0xbf4e('0x14')](_0x5e08b1)[_0xbf4e('0x23')](_0x5bcf71);};}exports['show']=function(_0x2d4686,_0x8e0ab5){var _0x43879d={'raw':!![],'where':{'id':_0x2d4686[_0xbf4e('0x24')]['id']}},_0x4cd4a1={};_0x4cd4a1['model']=_[_0xbf4e('0x25')](db[_0xbf4e('0x26')][_0xbf4e('0x27')]);_0x4cd4a1['query']=_[_0xbf4e('0x25')](_0x2d4686[_0xbf4e('0x28')]);_0x4cd4a1[_0xbf4e('0x29')]=_[_0xbf4e('0x2a')](_0x4cd4a1[_0xbf4e('0x2b')],_0x4cd4a1[_0xbf4e('0x28')]);_0x43879d['attributes']=_[_0xbf4e('0x2a')](_0x4cd4a1[_0xbf4e('0x2b')],qs['fields'](_0x2d4686[_0xbf4e('0x28')][_0xbf4e('0x2c')]));_0x43879d['attributes']=_0x43879d[_0xbf4e('0x2d')]['length']?_0x43879d[_0xbf4e('0x2d')]:_0x4cd4a1['model'];if(_0x2d4686[_0xbf4e('0x28')][_0xbf4e('0x2e')]){_0x43879d[_0xbf4e('0x2f')]=[{'all':!![]}];}_0x43879d=_['merge']({},_0x43879d,_0x2d4686[_0xbf4e('0x30')]);return db[_0xbf4e('0x26')][_0xbf4e('0x31')](_0x43879d)[_0xbf4e('0x1f')](handleEntityNotFound(_0x8e0ab5,null))[_0xbf4e('0x1f')](respondWithResult(_0x8e0ab5,null))[_0xbf4e('0x32')](handleError(_0x8e0ab5,null));};exports['update']=function(_0x99b320,_0x3dbb2b){if(_0x99b320[_0xbf4e('0x33')]['id']){delete _0x99b320[_0xbf4e('0x33')]['id'];}return db[_0xbf4e('0x26')]['find']({'where':{'id':_0x99b320['params']['id']}})['then'](handleEntityNotFound(_0x3dbb2b,null))['then'](saveUpdates(_0x99b320[_0xbf4e('0x33')],null))[_0xbf4e('0x1f')](respondWithResult(_0x3dbb2b,null))[_0xbf4e('0x32')](handleError(_0x3dbb2b,null));};exports[_0xbf4e('0x20')]=function(_0x22ddde,_0x257b74){return db[_0xbf4e('0x26')][_0xbf4e('0x31')]({'where':{'id':_0x22ddde[_0xbf4e('0x24')]['id']}})['then'](handleEntityNotFound(_0x257b74,null))['then'](removeEntity(_0x257b74,null))[_0xbf4e('0x32')](handleError(_0x257b74,null));};
\ No newline at end of file
+var _0xda3f=['includeAll','include','merge','find','catch','body','MailApplication','destroy','rimraf','zip-dir','bluebird','util','path','to-csv','ejs','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','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','stack','name','send','params','model','keys','query','filters','intersection','attributes','fields','length'];(function(_0x5e0a93,_0x2b0a36){var _0x2a1f71=function(_0x5a4991){while(--_0x5a4991){_0x5e0a93['push'](_0x5e0a93['shift']());}};_0x2a1f71(++_0x2b0a36);}(_0xda3f,0xec));var _0xfda3=function(_0xefd7f0,_0x579883){_0xefd7f0=_0xefd7f0-0x0;var _0xe64855=_0xda3f[_0xefd7f0];return _0xe64855;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfda3('0x0'));var zipdir=require(_0xfda3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfda3('0x2'));var Mustache=require('mustache');var util=require(_0xfda3('0x3'));var path=require(_0xfda3('0x4'));var sox=require('sox');var csv=require(_0xfda3('0x5'));var ejs=require(_0xfda3('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfda3('0x7'));var crypto=require(_0xfda3('0x8'));var jsforce=require(_0xfda3('0x9'));var deskjs=require(_0xfda3('0xa'));var toCsv=require(_0xfda3('0x5'));var querystring=require(_0xfda3('0xb'));var Papa=require(_0xfda3('0xc'));var Redis=require(_0xfda3('0xd'));var authService=require(_0xfda3('0xe'));var qs=require(_0xfda3('0xf'));var as=require(_0xfda3('0x10'));var hardwareService=require(_0xfda3('0x11'));var logger=require('../../config/logger')(_0xfda3('0x12'));var utils=require(_0xfda3('0x13'));var config=require(_0xfda3('0x14'));var licenseUtil=require(_0xfda3('0x15'));var db=require(_0xfda3('0x16'))['db'];function respondWithStatusCode(_0x4b77ea,_0x583125){_0x583125=_0x583125||0xcc;return function(_0x5d7d5b){if(_0x5d7d5b){return _0x4b77ea[_0xfda3('0x17')](_0x583125);}return _0x4b77ea[_0xfda3('0x18')](_0x583125)['end']();};}function respondWithResult(_0x501588,_0x587e9b){_0x587e9b=_0x587e9b||0xc8;return function(_0x227d72){if(_0x227d72){return _0x501588[_0xfda3('0x18')](_0x587e9b)['json'](_0x227d72);}};}function respondWithFilteredResult(_0x57a229,_0x533365){return function(_0x80ea80){if(_0x80ea80){var _0x474707=typeof _0x533365[_0xfda3('0x19')]===_0xfda3('0x1a')&&typeof _0x533365[_0xfda3('0x1b')]===_0xfda3('0x1a');var _0x2aadcb=_0x80ea80[_0xfda3('0x1c')];var _0x4680bf=_0x474707?0x0:_0x533365[_0xfda3('0x19')];var _0x54a7c6=_0x474707?_0x80ea80[_0xfda3('0x1c')]:_0x533365[_0xfda3('0x19')]+_0x533365[_0xfda3('0x1b')];var _0x32855a;if(_0x54a7c6>=_0x2aadcb){_0x54a7c6=_0x2aadcb;_0x32855a=0xc8;}else{_0x32855a=0xce;}_0x57a229['status'](_0x32855a);return _0x57a229[_0xfda3('0x1d')](_0xfda3('0x1e'),_0x4680bf+'-'+_0x54a7c6+'/'+_0x2aadcb)[_0xfda3('0x1f')](_0x80ea80);}return null;};}function patchUpdates(_0x51e731){return function(_0x5ad52a){try{jsonpatch[_0xfda3('0x20')](_0x5ad52a,_0x51e731,!![]);}catch(_0x38d428){return BPromise[_0xfda3('0x21')](_0x38d428);}return _0x5ad52a['save']();};}function saveUpdates(_0x3cf5a9,_0xef2535){return function(_0x1e15a8){if(_0x1e15a8){return _0x1e15a8[_0xfda3('0x22')](_0x3cf5a9)[_0xfda3('0x23')](function(_0x2b84b7){return _0x2b84b7;});}return null;};}function removeEntity(_0x2677f6,_0xc6fb9a){return function(_0x16eaa6){if(_0x16eaa6){return _0x16eaa6['destroy']()[_0xfda3('0x23')](function(){_0x2677f6[_0xfda3('0x18')](0xcc)[_0xfda3('0x24')]();});}};}function handleEntityNotFound(_0x4ae9b9,_0x45a977){return function(_0x39e246){if(!_0x39e246){_0x4ae9b9[_0xfda3('0x17')](0x194);}return _0x39e246;};}function handleError(_0x38946d,_0x1cb831){_0x1cb831=_0x1cb831||0x1f4;return function(_0xad9f7b){logger['error'](_0xad9f7b[_0xfda3('0x25')]);if(_0xad9f7b[_0xfda3('0x26')]){delete _0xad9f7b[_0xfda3('0x26')];}_0x38946d[_0xfda3('0x18')](_0x1cb831)[_0xfda3('0x27')](_0xad9f7b);};}exports['show']=function(_0x3c1549,_0x4101b1){var _0x301509={'raw':!![],'where':{'id':_0x3c1549[_0xfda3('0x28')]['id']}},_0x474992={};_0x474992[_0xfda3('0x29')]=_[_0xfda3('0x2a')](db['MailApplication']['rawAttributes']);_0x474992[_0xfda3('0x2b')]=_['keys'](_0x3c1549['query']);_0x474992[_0xfda3('0x2c')]=_[_0xfda3('0x2d')](_0x474992[_0xfda3('0x29')],_0x474992[_0xfda3('0x2b')]);_0x301509[_0xfda3('0x2e')]=_[_0xfda3('0x2d')](_0x474992[_0xfda3('0x29')],qs[_0xfda3('0x2f')](_0x3c1549[_0xfda3('0x2b')]['fields']));_0x301509[_0xfda3('0x2e')]=_0x301509[_0xfda3('0x2e')][_0xfda3('0x30')]?_0x301509[_0xfda3('0x2e')]:_0x474992[_0xfda3('0x29')];if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x31')]){_0x301509[_0xfda3('0x32')]=[{'all':!![]}];}_0x301509=_[_0xfda3('0x33')]({},_0x301509,_0x3c1549['options']);return db['MailApplication'][_0xfda3('0x34')](_0x301509)[_0xfda3('0x23')](handleEntityNotFound(_0x4101b1,null))['then'](respondWithResult(_0x4101b1,null))[_0xfda3('0x35')](handleError(_0x4101b1,null));};exports[_0xfda3('0x22')]=function(_0x28ca96,_0x52ee98){if(_0x28ca96[_0xfda3('0x36')]['id']){delete _0x28ca96[_0xfda3('0x36')]['id'];}return db[_0xfda3('0x37')][_0xfda3('0x34')]({'where':{'id':_0x28ca96[_0xfda3('0x28')]['id']}})['then'](handleEntityNotFound(_0x52ee98,null))[_0xfda3('0x23')](saveUpdates(_0x28ca96[_0xfda3('0x36')],null))[_0xfda3('0x23')](respondWithResult(_0x52ee98,null))['catch'](handleError(_0x52ee98,null));};exports[_0xfda3('0x38')]=function(_0x4854b1,_0x2d9a3f){return db[_0xfda3('0x37')][_0xfda3('0x34')]({'where':{'id':_0x4854b1[_0xfda3('0x28')]['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x2d9a3f,null))[_0xfda3('0x23')](removeEntity(_0x2d9a3f,null))[_0xfda3('0x35')](handleError(_0x2d9a3f,null));};
\ No newline at end of file
index 3a90f92..c8653fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22d0=['define','MailApplication','mail_applications','utf8mb4','lodash','util','../../config/logger','api','moment','request-promise','path','./mailApplication.attributes','exports'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x22d0,0x6c));var _0x022d=function(_0x445c98,_0x132bf7){_0x445c98=_0x445c98-0x0;var _0x2fe913=_0x22d0[_0x445c98];return _0x2fe913;};'use strict';var _=require(_0x022d('0x0'));var util=require(_0x022d('0x1'));var logger=require(_0x022d('0x2'))(_0x022d('0x3'));var moment=require(_0x022d('0x4'));var BPromise=require('bluebird');var rp=require(_0x022d('0x5'));var fs=require('fs');var path=require(_0x022d('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x022d('0x7'));module[_0x022d('0x8')]=function(_0x34c84b,_0x129a1a){return _0x34c84b[_0x022d('0x9')](_0x022d('0xa'),attributes,{'tableName':_0x022d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x022d('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xbbb2=['./mailApplication.attributes','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0xd1a252,_0x16396f){var _0x560ee1=function(_0x35dd90){while(--_0x35dd90){_0xd1a252['push'](_0xd1a252['shift']());}};_0x560ee1(++_0x16396f);}(_0xbbb2,0xbb));var _0x2bbb=function(_0x25d386,_0x108d0d){_0x25d386=_0x25d386-0x0;var _0x857f4a=_0xbbb2[_0x25d386];return _0x857f4a;};'use strict';var _=require(_0x2bbb('0x0'));var util=require(_0x2bbb('0x1'));var logger=require('../../config/logger')(_0x2bbb('0x2'));var moment=require(_0x2bbb('0x3'));var BPromise=require(_0x2bbb('0x4'));var rp=require(_0x2bbb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2bbb('0x6'));var config=require(_0x2bbb('0x7'));var attributes=require(_0x2bbb('0x8'));module['exports']=function(_0x35b676,_0x4018f3){return _0x35b676['define'](_0x2bbb('0x9'),attributes,{'tableName':_0x2bbb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2bbb('0xb'),'collate':_0x2bbb('0xc')});};
\ No newline at end of file
index d952019..1632a1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8abd=['MailApplication','options','raw','stringify','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','UpdateMailApplication'];(function(_0x59fb63,_0x4cc20d){var _0x1c5076=function(_0xc1fa0){while(--_0xc1fa0){_0x59fb63['push'](_0x59fb63['shift']());}};_0x1c5076(++_0x4cc20d);}(_0x8abd,0x13c));var _0xd8ab=function(_0x2cd465,_0x363c86){_0x2cd465=_0x2cd465-0x0;var _0x4fb296=_0x8abd[_0x2cd465];return _0x4fb296;};'use strict';var _=require(_0xd8ab('0x0'));var util=require('util');var moment=require(_0xd8ab('0x1'));var BPromise=require(_0xd8ab('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd8ab('0x3'));var db=require(_0xd8ab('0x4'))['db'];var utils=require(_0xd8ab('0x5'));var logger=require(_0xd8ab('0x6'))('rpc');var config=require(_0xd8ab('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd8ab('0x8')][_0xd8ab('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x14c8b9,_0x423553,_0x470d3f){return new BPromise(function(_0x5cfa28,_0x4297f2){return client[_0xd8ab('0xa')](_0x14c8b9,_0x470d3f)[_0xd8ab('0xb')](function(_0x3e85a4){logger[_0xd8ab('0xc')](_0xd8ab('0xd'),_0x423553,_0xd8ab('0xe'));logger[_0xd8ab('0xf')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x423553,_0xd8ab('0xe'),JSON['stringify'](_0x3e85a4));if(_0x3e85a4[_0xd8ab('0x10')]){if(_0x3e85a4['error'][_0xd8ab('0x11')]===0x1f4){logger['error'](_0xd8ab('0xd'),_0x423553,_0x3e85a4[_0xd8ab('0x10')][_0xd8ab('0x12')]);return _0x4297f2(_0x3e85a4['error'][_0xd8ab('0x12')]);}logger[_0xd8ab('0x10')](_0xd8ab('0xd'),_0x423553,_0x3e85a4[_0xd8ab('0x10')][_0xd8ab('0x12')]);return _0x5cfa28(_0x3e85a4[_0xd8ab('0x10')][_0xd8ab('0x12')]);}else{logger[_0xd8ab('0xc')](_0xd8ab('0xd'),_0x423553,_0xd8ab('0xe'));_0x5cfa28(_0x3e85a4[_0xd8ab('0x13')][_0xd8ab('0x12')]);}})[_0xd8ab('0x14')](function(_0x1e4f92){logger[_0xd8ab('0x10')](_0xd8ab('0xd'),_0x423553,_0x1e4f92);_0x4297f2(_0x1e4f92);});});}exports[_0xd8ab('0x15')]=function(_0x54a28d){var _0x558000=this;return new Promise(function(_0x41c79c,_0x119dae){return db[_0xd8ab('0x16')]['update'](_0x54a28d['body'],{'raw':_0x54a28d[_0xd8ab('0x17')]?_0x54a28d[_0xd8ab('0x17')][_0xd8ab('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x54a28d['options']?_0x54a28d['options']['where']||null:null,'attributes':_0x54a28d['options']?_0x54a28d[_0xd8ab('0x17')]['attributes']||null:null,'limit':_0x54a28d[_0xd8ab('0x17')]?_0x54a28d[_0xd8ab('0x17')]['limit']||null:null})['then'](function(_0x3c2b97){logger[_0xd8ab('0xc')](_0xd8ab('0x15'),_0x54a28d);logger['debug'](_0xd8ab('0x15'),_0x54a28d,JSON[_0xd8ab('0x19')](_0x3c2b97));_0x41c79c(_0x3c2b97);})[_0xd8ab('0x14')](function(_0x3d19cc){logger['error'](_0xd8ab('0x15'),_0x3d19cc['message'],_0x54a28d);_0x119dae(_0x558000['error'](0x1f4,_0x3d19cc[_0xd8ab('0x12')]));});});};
\ No newline at end of file
+var _0xd615=['stringify','error','code','message','result','MailApplication','update','body','options','raw','where','attributes','limit','UpdateMailApplication','catch','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s'];(function(_0x367361,_0x311488){var _0x195d2d=function(_0x2b20a4){while(--_0x2b20a4){_0x367361['push'](_0x367361['shift']());}};_0x195d2d(++_0x311488);}(_0xd615,0x1ef));var _0x5d61=function(_0x39e37d,_0x28dec0){_0x39e37d=_0x39e37d-0x0;var _0x5a917b=_0xd615[_0x39e37d];return _0x5a917b;};'use strict';var _=require('lodash');var util=require(_0x5d61('0x0'));var moment=require(_0x5d61('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5d61('0x2'));var db=require(_0x5d61('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x5d61('0x4'))(_0x5d61('0x5'));var config=require(_0x5d61('0x6'));var jayson=require(_0x5d61('0x7'));var client=jayson[_0x5d61('0x8')][_0x5d61('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x14f0c5,_0x3c95b9,_0x134f70){return new BPromise(function(_0x360d43,_0x3c6011){return client[_0x5d61('0xa')](_0x14f0c5,_0x134f70)[_0x5d61('0xb')](function(_0x439d30){logger[_0x5d61('0xc')](_0x5d61('0xd'),_0x3c95b9,_0x5d61('0xe'));logger[_0x5d61('0xf')](_0x5d61('0x10'),_0x3c95b9,_0x5d61('0xe'),JSON[_0x5d61('0x11')](_0x439d30));if(_0x439d30['error']){if(_0x439d30[_0x5d61('0x12')][_0x5d61('0x13')]===0x1f4){logger[_0x5d61('0x12')](_0x5d61('0xd'),_0x3c95b9,_0x439d30[_0x5d61('0x12')][_0x5d61('0x14')]);return _0x3c6011(_0x439d30['error'][_0x5d61('0x14')]);}logger[_0x5d61('0x12')](_0x5d61('0xd'),_0x3c95b9,_0x439d30[_0x5d61('0x12')][_0x5d61('0x14')]);return _0x360d43(_0x439d30[_0x5d61('0x12')][_0x5d61('0x14')]);}else{logger[_0x5d61('0xc')]('MailApplication,\x20%s,\x20%s',_0x3c95b9,_0x5d61('0xe'));_0x360d43(_0x439d30[_0x5d61('0x15')][_0x5d61('0x14')]);}})['catch'](function(_0x4372c5){logger[_0x5d61('0x12')](_0x5d61('0xd'),_0x3c95b9,_0x4372c5);_0x3c6011(_0x4372c5);});});}exports['UpdateMailApplication']=function(_0x14926c){var _0x340c9b=this;return new Promise(function(_0x240ebd,_0x5a6c88){return db[_0x5d61('0x16')][_0x5d61('0x17')](_0x14926c[_0x5d61('0x18')],{'raw':_0x14926c[_0x5d61('0x19')]?_0x14926c['options'][_0x5d61('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x14926c[_0x5d61('0x19')]?_0x14926c[_0x5d61('0x19')][_0x5d61('0x1b')]||null:null,'attributes':_0x14926c[_0x5d61('0x19')]?_0x14926c[_0x5d61('0x19')][_0x5d61('0x1c')]||null:null,'limit':_0x14926c[_0x5d61('0x19')]?_0x14926c[_0x5d61('0x19')][_0x5d61('0x1d')]||null:null})[_0x5d61('0xb')](function(_0x4f827b){logger[_0x5d61('0xc')](_0x5d61('0x1e'),_0x14926c);logger[_0x5d61('0xf')](_0x5d61('0x1e'),_0x14926c,JSON[_0x5d61('0x11')](_0x4f827b));_0x240ebd(_0x4f827b);})[_0x5d61('0x1f')](function(_0x100790){logger['error'](_0x5d61('0x1e'),_0x100790[_0x5d61('0x14')],_0x14926c);_0x5a6c88(_0x340c9b['error'](0x1f4,_0x100790[_0x5d61('0x14')]));});});};
\ No newline at end of file
index 1187ae3..8401ab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x742b=['getMessages','download','post','addMessage','/:id/tags','tracked','mailinteraction:addtags','addTags','put','mail','update','delete','mailinteraction:destroy','destroy','removeTags','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailInteraction.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/messages'];(function(_0x5f26e0,_0x2fb8dd){var _0x70de5a=function(_0x16ed83){while(--_0x16ed83){_0x5f26e0['push'](_0x5f26e0['shift']());}};_0x70de5a(++_0x2fb8dd);}(_0x742b,0x1bd));var _0xb742=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x742b[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0xb742('0x0'));var util=require('util');var path=require(_0xb742('0x1'));var timeout=require(_0xb742('0x2'));var express=require(_0xb742('0x3'));var router=express[_0xb742('0x4')]();var fs_extra=require(_0xb742('0x5'));var auth=require(_0xb742('0x6'));var interaction=require(_0xb742('0x7'));var config=require(_0xb742('0x8'));var controller=require(_0xb742('0x9'));router[_0xb742('0xa')]('/',auth[_0xb742('0xb')](),controller[_0xb742('0xc')]);router[_0xb742('0xa')](_0xb742('0xd'),auth[_0xb742('0xb')](),controller['describe']);router[_0xb742('0xa')](_0xb742('0xe'),auth[_0xb742('0xb')](),controller[_0xb742('0xf')]);router[_0xb742('0xa')](_0xb742('0x10'),auth[_0xb742('0xb')](),controller[_0xb742('0x11')]);router['get']('/:id/download',auth[_0xb742('0xb')](),controller[_0xb742('0x12')]);router['post']('/',auth[_0xb742('0xb')](),controller['create']);router[_0xb742('0x13')](_0xb742('0x10'),auth[_0xb742('0xb')](),controller[_0xb742('0x14')]);router[_0xb742('0x13')](_0xb742('0x15'),auth[_0xb742('0xb')](),interaction[_0xb742('0x16')]('mail',_0xb742('0x17')),controller[_0xb742('0x18')]);router[_0xb742('0x19')](_0xb742('0xe'),auth['isAuthenticated'](),interaction['tracked'](_0xb742('0x1a'),'mailinteraction:update'),controller[_0xb742('0x1b')]);router[_0xb742('0x1c')](_0xb742('0xe'),auth[_0xb742('0xb')](),interaction[_0xb742('0x16')](_0xb742('0x1a'),_0xb742('0x1d')),controller[_0xb742('0x1e')]);router['delete'](_0xb742('0x15'),auth[_0xb742('0xb')](),controller[_0xb742('0x1f')]);module[_0xb742('0x20')]=router;
\ No newline at end of file
+var _0xd436=['express','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','mail','mailinteraction:addtags','addTags','mailinteraction:update','delete','tracked','mailinteraction:destroy','destroy','/:id/tags','removeTags'];(function(_0x149f8a,_0x350d1c){var _0x104c0e=function(_0x116c5d){while(--_0x116c5d){_0x149f8a['push'](_0x149f8a['shift']());}};_0x104c0e(++_0x350d1c);}(_0xd436,0x129));var _0x6d43=function(_0x2c1101,_0x1909d9){_0x2c1101=_0x2c1101-0x0;var _0x56f52f=_0xd436[_0x2c1101];return _0x56f52f;};'use strict';var express=require(_0x6d43('0x0'));var router=express['Router']();var auth=require(_0x6d43('0x1'));var interaction=require(_0x6d43('0x2'));var controller=require(_0x6d43('0x3'));router['get']('/',auth[_0x6d43('0x4')](),controller['index']);router[_0x6d43('0x5')](_0x6d43('0x6'),auth[_0x6d43('0x4')](),controller[_0x6d43('0x7')]);router[_0x6d43('0x5')](_0x6d43('0x8'),auth[_0x6d43('0x4')](),controller[_0x6d43('0x9')]);router[_0x6d43('0x5')](_0x6d43('0xa'),auth['isAuthenticated'](),controller[_0x6d43('0xb')]);router['get'](_0x6d43('0xc'),auth[_0x6d43('0x4')](),controller[_0x6d43('0xd')]);router[_0x6d43('0xe')]('/',auth[_0x6d43('0x4')](),controller[_0x6d43('0xf')]);router[_0x6d43('0xe')](_0x6d43('0xa'),auth['isAuthenticated'](),controller[_0x6d43('0x10')]);router[_0x6d43('0xe')]('/:id/tags',auth['isAuthenticated'](),interaction['tracked'](_0x6d43('0x11'),_0x6d43('0x12')),controller[_0x6d43('0x13')]);router['put'](_0x6d43('0x8'),auth['isAuthenticated'](),interaction['tracked']('mail',_0x6d43('0x14')),controller['update']);router[_0x6d43('0x15')]('/:id',auth['isAuthenticated'](),interaction[_0x6d43('0x16')](_0x6d43('0x11'),_0x6d43('0x17')),controller[_0x6d43('0x18')]);router[_0x6d43('0x15')](_0x6d43('0x19'),auth['isAuthenticated'](),controller[_0x6d43('0x1a')]);module['exports']=router;
\ No newline at end of file
index ce015f4..af35d7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb589=['TEXT','out','ENUM','iconv','exports','BOOLEAN','DATE','STRING'];(function(_0x17ba7d,_0x3d1ace){var _0x8fd171=function(_0xc08d1f){while(--_0xc08d1f){_0x17ba7d['push'](_0x17ba7d['shift']());}};_0x8fd171(++_0x3d1ace);}(_0xb589,0x143));var _0x9b58=function(_0x4969d0,_0x4a5788){_0x4969d0=_0x4969d0-0x0;var _0x754944=_0xb589[_0x4969d0];return _0x754944;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0x9b58('0x0'));module[_0x9b58('0x1')]={'closed':{'type':Sequelize[_0x9b58('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9b58('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x9b58('0x4')]},'thirdDisposition':{'type':Sequelize[_0x9b58('0x4')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0x9b58('0x4')]},'cc':{'type':Sequelize[_0x9b58('0x5')]('long')},'subject':{'type':Sequelize[_0x9b58('0x5')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x9b58('0x3')]},'substatus':{'type':Sequelize[_0x9b58('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x9b58('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x9b58('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9b58('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x9b58('0x7')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x9b58('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5369=['long','TEXT','ENUM','out','sequelize','iconv','BOOLEAN','DATE','STRING'];(function(_0x4e6090,_0x50fa28){var _0x108ca1=function(_0x34939e){while(--_0x34939e){_0x4e6090['push'](_0x4e6090['shift']());}};_0x108ca1(++_0x50fa28);}(_0x5369,0x17e));var _0x9536=function(_0x457e91,_0xe787bd){_0x457e91=_0x457e91-0x0;var _0x2d6bf8=_0x5369[_0x457e91];return _0x2d6bf8;};'use strict';var Sequelize=require(_0x9536('0x0'));var iconv=require(_0x9536('0x1'));module['exports']={'closed':{'type':Sequelize[_0x9536('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9536('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x9536('0x4')]},'thirdDisposition':{'type':Sequelize[_0x9536('0x4')]},'note':{'type':Sequelize[_0x9536('0x4')]},'inReplyTo':{'type':Sequelize[_0x9536('0x4')](0x1fe)},'to':{'type':Sequelize[_0x9536('0x4')]},'cc':{'type':Sequelize['TEXT'](_0x9536('0x5'))},'subject':{'type':Sequelize[_0x9536('0x6')]()},'attach':{'type':Sequelize[_0x9536('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x9536('0x3')]},'substatus':{'type':Sequelize[_0x9536('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x9536('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9536('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x9536('0x7')]('in',_0x9536('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index e7983bd..b2d9c16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf13=['text','compact','isEmpty','MailAccountId','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getMailAccounts','i.MailAccountId\x20IS\x20NULL','i.MailAccountId\x20IN\x20?','sequelize','toString','keyBy','merge','a.key','a.mandatoryDisposition','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','i.createdAt','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.to','i.ContactId','i.MailAccountId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','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)','groupBy','MailInteractionId','findOne','enableEmailPreview','push','all','rows','show','params','rawAttributes','includeAll','include','options','create','body','destroy','describe','addMessage','ids','getMessages','format','findAll','inlineCss','true','addTags','omit','spread','mailInteractionTags:save','removeTags','unix','join','root','server','files','attachments','Attachments','bcc','get','mkdirSync','each','subject','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','readFileSync','build','writeFileSync','download','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','./mailInteraction.socket','register','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','update','then','sendStatus','name','send','map','TagIds','Tags','split','forEach','MailMessage','plainBody','-id','lastMsgText','trimStart','catch','index','MailInteraction','type','model','keys','filters','attributes','intersection','fields','query','length','hasOwnProperty','nolimit','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','left_join','o.id\x20=\x20i.UserId','mail_accounts','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','$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','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','UserId'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0xbf13,0x173));var _0x3bf1=function(_0x1dc155,_0x3b4f48){_0x1dc155=_0x1dc155-0x0;var _0x22bee3=_0xbf13[_0x1dc155];return _0x22bee3;};'use strict';var emlformat=require(_0x3bf1('0x0'));var rimraf=require(_0x3bf1('0x1'));var zipdir=require(_0x3bf1('0x2'));var jsonpatch=require(_0x3bf1('0x3'));var rp=require(_0x3bf1('0x4'));var moment=require(_0x3bf1('0x5'));var BPromise=require(_0x3bf1('0x6'));var Mustache=require(_0x3bf1('0x7'));var util=require(_0x3bf1('0x8'));var path=require(_0x3bf1('0x9'));var sox=require(_0x3bf1('0xa'));var csv=require(_0x3bf1('0xb'));var ejs=require(_0x3bf1('0xc'));var fs=require('fs');var fs_extra=require(_0x3bf1('0xd'));var _=require('lodash');var squel=require(_0x3bf1('0xe'));var crypto=require(_0x3bf1('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3bf1('0xb'));var querystring=require(_0x3bf1('0x10'));var Papa=require(_0x3bf1('0x11'));var htmlToText=require(_0x3bf1('0x12'));var juice=require(_0x3bf1('0x13'));var Redis=require(_0x3bf1('0x14'));var authService=require(_0x3bf1('0x15'));var qs=require(_0x3bf1('0x16'));var as=require(_0x3bf1('0x17'));var hardwareService=require(_0x3bf1('0x18'));var logger=require('../../config/logger')(_0x3bf1('0x19'));var utils=require(_0x3bf1('0x1a'));var config=require(_0x3bf1('0x1b'));var licenseUtil=require(_0x3bf1('0x1c'));var db=require('../../mysqldb')['db'];config[_0x3bf1('0x1d')]=_['defaults'](config[_0x3bf1('0x1d')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3bf1('0x1e'))[_0x3bf1('0x1f')](socket);function respondWithStatusCode(_0x313efa,_0x9907bf){_0x9907bf=_0x9907bf||0xcc;return function(_0x37e812){if(_0x37e812){return _0x313efa['sendStatus'](_0x9907bf);}return _0x313efa[_0x3bf1('0x20')](_0x9907bf)[_0x3bf1('0x21')]();};}function respondWithResult(_0x25d554,_0x586652){_0x586652=_0x586652||0xc8;return function(_0x359435){if(_0x359435){return _0x25d554[_0x3bf1('0x20')](_0x586652)[_0x3bf1('0x22')](_0x359435);}};}function respondWithFilteredResult(_0x1771a0,_0x3a4f1d){return function(_0x3917ce){if(_0x3917ce){var _0x4b7227=typeof _0x3a4f1d[_0x3bf1('0x23')]==='undefined'&&typeof _0x3a4f1d[_0x3bf1('0x24')]===_0x3bf1('0x25');var _0x2cd190=_0x3917ce['count'];var _0x340a9a=_0x4b7227?0x0:_0x3a4f1d[_0x3bf1('0x23')];var _0x49c188=_0x4b7227?_0x3917ce[_0x3bf1('0x26')]:_0x3a4f1d[_0x3bf1('0x23')]+_0x3a4f1d['limit'];var _0x4b236d;if(_0x49c188>=_0x2cd190){_0x49c188=_0x2cd190;_0x4b236d=0xc8;}else{_0x4b236d=0xce;}_0x1771a0['status'](_0x4b236d);return _0x1771a0[_0x3bf1('0x27')](_0x3bf1('0x28'),_0x340a9a+'-'+_0x49c188+'/'+_0x2cd190)['json'](_0x3917ce);}return null;};}function patchUpdates(_0x5b36f3){return function(_0x9731d){try{jsonpatch[_0x3bf1('0x29')](_0x9731d,_0x5b36f3,!![]);}catch(_0x2c5430){return BPromise['reject'](_0x2c5430);}return _0x9731d['save']();};}function saveUpdates(_0x32f4d7,_0x5cf639){return function(_0x3c319a){if(_0x3c319a){return _0x3c319a[_0x3bf1('0x2a')](_0x32f4d7)['then'](function(_0x44597b){return _0x44597b;});}return null;};}function removeEntity(_0x387f16,_0x48783d){return function(_0x3f6177){if(_0x3f6177){return _0x3f6177['destroy']()[_0x3bf1('0x2b')](function(){_0x387f16['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3450bb,_0x3ee515){return function(_0x240bc7){if(!_0x240bc7){_0x3450bb[_0x3bf1('0x2c')](0x194);}return _0x240bc7;};}function handleError(_0x4e55fd,_0xa0f97d){_0xa0f97d=_0xa0f97d||0x1f4;return function(_0x49408d){logger['error'](_0x49408d['stack']);if(_0x49408d[_0x3bf1('0x2d')]){delete _0x49408d[_0x3bf1('0x2d')];}_0x4e55fd[_0x3bf1('0x20')](_0xa0f97d)[_0x3bf1('0x2e')](_0x49408d);};}function getInteractionUsers(_0x66462d,_0x3b5525){return new BPromise(function(_0x46875f,_0x399b81){try{if(_0x3b5525[_0x66462d['id']]){_0x66462d['Users']=_[_0x3bf1('0x2f')](_0x3b5525[_0x66462d['id']],function(_0x52ce29){return{'id':_0x52ce29['id'],'fullname':_0x52ce29['fullname']};});}}catch(_0x719872){_0x399b81(_0x719872);}_0x46875f(_0x66462d);});}function getInteractionTags(_0x3a71fd,_0x42f05a){return new BPromise(function(_0xedb020,_0x538e86){try{if(_0x3a71fd[_0x3bf1('0x30')]){_0x3a71fd[_0x3bf1('0x31')]=[];_0x3a71fd[_0x3bf1('0x30')][_0x3bf1('0x32')](',')[_0x3bf1('0x33')](function(_0xd0721){_0x3a71fd['Tags']['push'](_0x42f05a[_0xd0721]);});}delete _0x3a71fd[_0x3bf1('0x30')];}catch(_0x4fbe93){_0x538e86(_0x4fbe93);}_0xedb020(_0x3a71fd);});}function getLastMessageText(_0x481e30){return new BPromise(function(_0x50e083,_0x277c00){return db[_0x3bf1('0x34')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x481e30['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x3bf1('0x35')],'order':_0x3bf1('0x36'),'raw':!![]})[_0x3bf1('0x2b')](function(_0x3ad806){if(_0x3ad806&&_0x3ad806[_0x3bf1('0x35')]){_0x481e30[_0x3bf1('0x37')]=_[_0x3bf1('0x38')](_0x3ad806[_0x3bf1('0x35')]);}_0x50e083(_0x481e30);})['catch'](function(_0x1f8832){_0x277c00(_0x1f8832);});});}function updateMailInteraction(_0x280977,_0x457d7b,_0x489df0,_0x54fe37){return new BPromise(function(_0x2e8de3,_0x4c48f1){return getInteractionUsers(_0x280977,_0x489df0)[_0x3bf1('0x2b')](function(_0x34eeea){return getInteractionTags(_0x34eeea,_0x457d7b);})[_0x3bf1('0x2b')](function(_0x2140a4){if(_0x54fe37){_0x2e8de3(getLastMessageText(_0x2140a4));}else{_0x2e8de3(_0x2140a4);}})[_0x3bf1('0x39')](function(_0x39e732){_0x4c48f1(_0x39e732);});});}exports[_0x3bf1('0x3a')]=function(_0x1aadcc,_0x5952a9){var _0x157e5a={},_0x181616={},_0x3cb201={'count':0x0,'rows':[]};var _0x4f9a92=_['map'](db[_0x3bf1('0x3b')]['rawAttributes'],function(_0xfd61a1){return{'name':_0xfd61a1['fieldName'],'type':_0xfd61a1[_0x3bf1('0x3c')]['key']};});_0x181616[_0x3bf1('0x3d')]=_[_0x3bf1('0x2f')](_0x4f9a92,_0x3bf1('0x2d'));_0x181616['query']=_[_0x3bf1('0x3e')](_0x1aadcc['query']);_0x181616[_0x3bf1('0x3f')]=_['intersection'](_0x181616['model'],_0x181616['query']);_0x157e5a[_0x3bf1('0x40')]=_[_0x3bf1('0x41')](_0x181616['model'],qs[_0x3bf1('0x42')](_0x1aadcc[_0x3bf1('0x43')]['fields']));_0x157e5a['attributes']=_0x157e5a[_0x3bf1('0x40')][_0x3bf1('0x44')]?_0x157e5a[_0x3bf1('0x40')]:_0x181616[_0x3bf1('0x3d')];if(!_0x1aadcc[_0x3bf1('0x43')][_0x3bf1('0x45')](_0x3bf1('0x46'))){_0x157e5a[_0x3bf1('0x24')]=qs['limit'](_0x1aadcc[_0x3bf1('0x43')][_0x3bf1('0x24')]);_0x157e5a[_0x3bf1('0x23')]=qs['offset'](_0x1aadcc['query'][_0x3bf1('0x23')]);}_0x157e5a['order']=qs[_0x3bf1('0x47')](_0x1aadcc[_0x3bf1('0x43')][_0x3bf1('0x47')]);_0x157e5a[_0x3bf1('0x48')]=qs[_0x3bf1('0x3f')](_[_0x3bf1('0x49')](_0x1aadcc[_0x3bf1('0x43')],_0x181616[_0x3bf1('0x3f')]),_0x4f9a92);var _0x4122af=[];var _0x553e81=squel[_0x3bf1('0x4a')]()[_0x3bf1('0x4b')]('id')[_0x3bf1('0x4b')](_0x3bf1('0x2d'))[_0x3bf1('0x4b')](_0x3bf1('0x4c'))[_0x3bf1('0x4d')](_0x3bf1('0x4e'));var _0x211011=squel['select']()[_0x3bf1('0x4b')](_0x3bf1('0x4f'))['field'](_0x3bf1('0x50'))['field'](_0x3bf1('0x51'))['from']('user_has_mail_interactions','ui')['left_join'](_0x3bf1('0x52'),'u',_0x3bf1('0x53'));var _0x49c189=squel[_0x3bf1('0x4a')]()['from']('mail_interactions','i')['left_join'](_0x3bf1('0x54'),'c',_0x3bf1('0x55'))[_0x3bf1('0x56')]('users','o',_0x3bf1('0x57'))[_0x3bf1('0x56')](_0x3bf1('0x58'),'a','a.id\x20=\x20i.MailAccountId')[_0x3bf1('0x56')]('mail_messages','me','me.MailInteractionId\x20=\x20i.id')[_0x3bf1('0x56')]('mail_interaction_has_tags','it',_0x3bf1('0x59'))['left_join'](_0x3bf1('0x4e'),'t',_0x3bf1('0x5a'));var _0x12147f=squel['expr']();var _0x2a5183=[];var _0xe36f39=squel[_0x3bf1('0x5b')]();var _0x594de2;if(_0x1aadcc[_0x3bf1('0x43')][_0x3bf1('0x5c')]){_0x594de2=as[_0x3bf1('0x5d')](_0x1aadcc[_0x3bf1('0x43')][_0x3bf1('0x5c')]);var _0x144273=_0x594de2[_0x3bf1('0x5e')];for(var _0x47b3dd=0x0;_0x47b3dd<_0x594de2['conditions'][_0x3bf1('0x44')];_0x47b3dd++){var _0x34d5e6=_0x594de2[_0x3bf1('0x5f')][_0x47b3dd];var _0x4f0400='i';var _0x199a02=_[_0x3bf1('0x60')](_0x4f9a92,['name',_0x34d5e6['field']]);if(!_0x199a02){switch(_0x34d5e6[_0x3bf1('0x4b')]){case _0x3bf1('0x61'):if(_0x34d5e6[_0x3bf1('0x62')]==0x1){_0x49c189[_0x3bf1('0x63')]('`'+_0x34d5e6['field']+_0x3bf1('0x64'));}else{_0x49c189[_0x3bf1('0x63')]('`'+_0x34d5e6[_0x3bf1('0x4b')]+_0x3bf1('0x65'));}break;case'Contact':if(_0x34d5e6['operator']===_0x3bf1('0x66')){if(_0x34d5e6[_0x3bf1('0x62')][_0x3bf1('0x32')]('\x20')['length']>0x1){_0x12147f[_0x144273](_0x3bf1('0x67'),qs[_0x3bf1('0x68')](_0x34d5e6[_0x3bf1('0x62')]),null);}else{var _0x44e55e='%'+_0x34d5e6[_0x3bf1('0x62')]+'%';_0x12147f[_0x144273](_0x3bf1('0x69'),_0x44e55e,_0x44e55e,_0x44e55e);}}else{_0x199a02=_['find'](_0x4f9a92,[_0x3bf1('0x2d'),_0x3bf1('0x6a')]);_0x34d5e6[_0x3bf1('0x4b')]='ContactId';_0x4412df=as[_0x3bf1('0x6b')](_0x4f0400,_0x199a02['type'],_0x34d5e6);_0x12147f[_0x144273](_0x4412df['text'],_0x4412df[_0x3bf1('0x62')][_0x3bf1('0x6c')],_0x4412df[_0x3bf1('0x62')][_0x3bf1('0x21')]);}break;case _0x3bf1('0x6d'):var _0x3d28e5=_0x34d5e6[_0x3bf1('0x62')][_0x3bf1('0x32')](',')[_0x3bf1('0x2f')](function(_0x497770){return Number(_0x497770);});_0x3d28e5[_0x3bf1('0x33')](function(_0x39f0c7){_0xe36f39['or'](_0x3bf1('0x6e'),'%,'+_0x39f0c7+',%');});_0x2a5183=_[_0x3bf1('0x6f')](_0x2a5183,_0x3d28e5);break;case _0x3bf1('0x70'):if(_0x34d5e6[_0x3bf1('0x71')]===_0x3bf1('0x66')){_0x12147f[_0x144273]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x34d5e6['value']+'%',null);}else{_0x199a02=_[_0x3bf1('0x60')](_0x4f9a92,[_0x3bf1('0x2d'),_0x3bf1('0x72')]);_0x34d5e6[_0x3bf1('0x4b')]=_0x3bf1('0x72');_0x4412df=as[_0x3bf1('0x6b')](_0x4f0400,_0x199a02[_0x3bf1('0x3c')],_0x34d5e6);_0x12147f[_0x144273](_0x4412df['text'],_0x4412df[_0x3bf1('0x62')][_0x3bf1('0x6c')],_0x4412df[_0x3bf1('0x62')][_0x3bf1('0x21')]);}break;case _0x3bf1('0x35'):_0x4412df=as[_0x3bf1('0x6b')]('me',null,_0x34d5e6);_0x12147f[_0x144273](_0x4412df[_0x3bf1('0x73')],_0x4412df[_0x3bf1('0x62')][_0x3bf1('0x6c')],_0x4412df['value'][_0x3bf1('0x21')]);break;}}else{var _0x4412df=as[_0x3bf1('0x6b')](_0x4f0400,_0x199a02[_0x3bf1('0x3c')],_0x34d5e6);_0x12147f[_0x144273](_0x4412df[_0x3bf1('0x73')],_0x4412df['value']['start'],_0x4412df['value'][_0x3bf1('0x21')]);}}}else{var _0x254b0e=_(_0x1aadcc[_0x3bf1('0x43')])[_0x3bf1('0x3e')]()[_0x3bf1('0x2f')](function(_0x696aef){return _['some'](_0x4f9a92,[_0x3bf1('0x2d'),_0x696aef])?_0x696aef:undefined;})[_0x3bf1('0x74')]()['value']();if(!_[_0x3bf1('0x75')](_0x254b0e)){_0x254b0e['forEach'](function(_0x301ab4){if(_0x301ab4===_0x3bf1('0x76')){_0x49c189[_0x3bf1('0x48')]('i.MailAccountId\x20IN\x20?',[][_0x3bf1('0x77')](_0x1aadcc['query'][_0x301ab4]));}else if(_0x301ab4===_0x3bf1('0x78')){var _0x3ac14a=JSON[_0x3bf1('0x79')](_0x1aadcc[_0x3bf1('0x43')][_0x301ab4])[_0x3bf1('0x7a')];var _0x299541=JSON[_0x3bf1('0x79')](_0x1aadcc['query'][_0x301ab4])[_0x3bf1('0x7b')];_0x49c189[_0x3bf1('0x48')](_0x3bf1('0x7c'),_0x3ac14a,_0x299541);}else{if(_0x1aadcc[_0x3bf1('0x43')][_0x301ab4]===_0x3bf1('0x7d')){_0x49c189[_0x3bf1('0x48')]('i.'+_0x301ab4+_0x3bf1('0x7e'));}else{_0x49c189['where']('i.'+_0x301ab4+_0x3bf1('0x7f'),_0x1aadcc['query'][_0x301ab4]);}}});}if(_0x1aadcc['query'][_0x3bf1('0x80')]){if(_0x1aadcc['query'][_0x3bf1('0x80')]==0x1){_0x49c189['having'](_0x3bf1('0x81'));}else{_0x49c189['having'](_0x3bf1('0x82'));}}if(_0x1aadcc[_0x3bf1('0x43')]['tag']){_0x2a5183=_['isArray'](_0x1aadcc[_0x3bf1('0x43')]['tag'])?_0x1aadcc['query'][_0x3bf1('0x83')]:new Array(_0x1aadcc[_0x3bf1('0x43')][_0x3bf1('0x83')]);_0x2a5183['forEach'](function(_0x4bebcf){_0xe36f39['or'](_0x3bf1('0x6e'),'%,'+_0x4bebcf+',%');});}if(_0x1aadcc[_0x3bf1('0x43')]['filter']){var _0x1a7fb5=_0x1aadcc[_0x3bf1('0x43')][_0x3bf1('0x84')][_0x3bf1('0x85')]('\x5c','\x5c\x5c')[_0x3bf1('0x85')](/'/g,'\x27\x27');if(qs[_0x3bf1('0x86')](_0x1a7fb5)){_0x12147f['or'](_0x3bf1('0x87'),_0x1a7fb5+'%');}else if(qs[_0x3bf1('0x88')](_0x1a7fb5)){_0x12147f['or'](_0x3bf1('0x89'),_0x1a7fb5+'%');}else{_0x12147f['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x3bf1('0x68')](_0x1a7fb5))['or'](_0x3bf1('0x8a'),qs[_0x3bf1('0x68')](_0x1a7fb5));}}}_0x49c189['where'](_0x12147f);_0x49c189[_0x3bf1('0x8b')](_0x3bf1('0x8c'));var _0x5d2218={'type':db[_0x3bf1('0x8d')][_0x3bf1('0x8e')][_0x3bf1('0x8f')],'raw':!![]};var _0x1c76da=_0x49c189[_0x3bf1('0x90')]();_0x1c76da['field'](_0x3bf1('0x8c'));_0x1c76da[_0x3bf1('0x4b')](_0x3bf1('0x91'),_0x3bf1('0x61'));if(_0x157e5a['order']){_0x157e5a[_0x3bf1('0x92')]['forEach'](function(_0x427266){var _0x472582=_0x427266[0x0]===_0x3bf1('0x93')?_0x427266[0x0]:'i.'+_0x427266[0x0];_0x49c189[_0x3bf1('0x92')](_0x472582,_0x427266[0x1]===_0x3bf1('0x94')?![]:!![]);});}if(!_[_0x3bf1('0x75')](_0x2a5183)){_0x49c189[_0x3bf1('0x63')](_0xe36f39);_0x1c76da[_0x3bf1('0x48')]('t.id\x20IN\x20?',_0x2a5183);}BPromise[_0x3bf1('0x95')]()[_0x3bf1('0x2b')](function(){if(!_0x594de2){if(_0x1aadcc['query'][_0x3bf1('0x76')])return;_0x1c76da[_0x3bf1('0x48')](_0x3bf1('0x96'));_0x49c189[_0x3bf1('0x48')](_0x3bf1('0x96'));return;}if(_0x1aadcc['user'][_0x3bf1('0x97')]!==_0x3bf1('0x98'))return;return _0x1aadcc[_0x3bf1('0x99')][_0x3bf1('0x9a')]({'attributes':['id'],'raw':!![]})[_0x3bf1('0x2b')](function(_0x51f9ba){if(_['isEmpty'](_0x51f9ba)){_0x1c76da['where'](_0x3bf1('0x9b'));_0x49c189[_0x3bf1('0x48')]('i.MailAccountId\x20IS\x20NULL');}else{_0x1c76da[_0x3bf1('0x48')](_0x3bf1('0x9c'),_[_0x3bf1('0x2f')](_0x51f9ba,'id'));_0x49c189[_0x3bf1('0x48')](_0x3bf1('0x9c'),_[_0x3bf1('0x2f')](_0x51f9ba,'id'));}});})[_0x3bf1('0x2b')](function(){if(_0x1aadcc[_0x3bf1('0x99')][_0x3bf1('0x97')]===_0x3bf1('0x98')&&!_0x594de2&&!_0x1aadcc[_0x3bf1('0x43')][_0x3bf1('0x76')])return[];return db[_0x3bf1('0x9d')][_0x3bf1('0x43')](_0x1c76da[_0x3bf1('0x9e')](),_0x5d2218);})[_0x3bf1('0x2b')](function(_0x255bd6){_0x3cb201[_0x3bf1('0x26')]=_0x255bd6[_0x3bf1('0x44')];if(_0x3cb201['count']===0x0)return[];return db[_0x3bf1('0x9d')]['query'](_0x553e81['toString'](),_0x5d2218)[_0x3bf1('0x2b')](function(_0x1a25bf){_0x4122af=_[_0x3bf1('0x9f')](_0x1a25bf,'id');_0x5d2218=_[_0x3bf1('0xa0')](_0x5d2218,{'model':db[_0x3bf1('0x3b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1aadcc['query'][_0x3bf1('0x42')]){_0x157e5a[_0x3bf1('0x40')][_0x3bf1('0x33')](function(_0x3bc201){_0x49c189[_0x3bf1('0x4b')]('i.'+_0x3bc201);});}else{_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0x91'),'unreadMessages');_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xa1'),'Account.key');_0x49c189['field'](_0x3bf1('0xa2'),_0x3bf1('0xa3'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xa4'),_0x3bf1('0x93'));_0x49c189[_0x3bf1('0x4b')]('i.id');_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xa5'));_0x49c189[_0x3bf1('0x4b')]('i.updatedAt');_0x49c189[_0x3bf1('0x4b')]('i.closed');_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xa6'));_0x49c189['field'](_0x3bf1('0xa7'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xa8'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xa9'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xaa'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xab'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xac'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xad'));_0x49c189[_0x3bf1('0x4b')]('i.substatus');_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xae'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xaf'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xb0'));_0x49c189['field']('i.UserId');_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xb1'),_0x3bf1('0xb2'));_0x49c189['field'](_0x3bf1('0xb3'),_0x3bf1('0xb4'));_0x49c189[_0x3bf1('0x4b')]('c.email',_0x3bf1('0xb5'));_0x49c189['field'](_0x3bf1('0xb6'),_0x3bf1('0xb7'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xb8'),_0x3bf1('0xb9'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xba'),'Contact.fax');_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xbb'),_0x3bf1('0xbc'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xbd'),_0x3bf1('0xbe'));_0x49c189[_0x3bf1('0x4b')](_0x3bf1('0xbf'),_0x3bf1('0x30'));}if(_0x157e5a['limit'])_0x49c189['limit'](_0x157e5a[_0x3bf1('0x24')]);if(_0x157e5a[_0x3bf1('0x23')])_0x49c189['offset'](_0x157e5a[_0x3bf1('0x23')]);return db[_0x3bf1('0x9d')][_0x3bf1('0x43')](_0x49c189[_0x3bf1('0x9e')](),_0x5d2218);})[_0x3bf1('0x2b')](function(_0x255f79){if(_0x255f79[_0x3bf1('0x44')]>0x0)_0x211011[_0x3bf1('0x48')]('ui.MailInteractionId\x20IN\x20?',_[_0x3bf1('0x2f')](_0x255f79,'id'));return db[_0x3bf1('0x9d')]['query'](_0x211011[_0x3bf1('0x9e')](),_0x5d2218)[_0x3bf1('0x2b')](function(_0x376542){var _0xa2b553=_[_0x3bf1('0xc0')](_0x376542,_0x3bf1('0xc1'));var _0x2e3b97=[];return db['Setting'][_0x3bf1('0xc2')]({'attributes':[_0x3bf1('0xc3')],'raw':!![]})['then'](function(_0x487d4a){var _0x29959d=_0x487d4a[_0x3bf1('0xc3')];_0x255f79['forEach'](function(_0x1d0bb2){_0x2e3b97[_0x3bf1('0xc4')](updateMailInteraction(_0x1d0bb2,_0x4122af,_0xa2b553,_0x29959d));});return BPromise[_0x3bf1('0xc5')](_0x2e3b97);});});});})[_0x3bf1('0x2b')](function(_0xbe9a38){_0x3cb201[_0x3bf1('0xc6')]=_0xbe9a38;return _0x3cb201;})[_0x3bf1('0x2b')](respondWithFilteredResult(_0x5952a9,_0x157e5a))[_0x3bf1('0x39')](handleError(_0x5952a9,null));};exports[_0x3bf1('0xc7')]=function(_0x5b66e8,_0x3fb453){var _0x156ebe={'raw':![],'where':{'id':_0x5b66e8[_0x3bf1('0xc8')]['id']}},_0x13d567={};_0x13d567[_0x3bf1('0x3d')]=_['keys'](db['MailInteraction'][_0x3bf1('0xc9')]);_0x13d567['query']=_[_0x3bf1('0x3e')](_0x5b66e8['query']);_0x13d567[_0x3bf1('0x3f')]=_['intersection'](_0x13d567[_0x3bf1('0x3d')],_0x13d567[_0x3bf1('0x43')]);_0x156ebe[_0x3bf1('0x40')]=_['intersection'](_0x13d567['model'],qs[_0x3bf1('0x42')](_0x5b66e8[_0x3bf1('0x43')][_0x3bf1('0x42')]));_0x156ebe[_0x3bf1('0x40')]=_0x156ebe['attributes'][_0x3bf1('0x44')]?_0x156ebe[_0x3bf1('0x40')]:_0x13d567[_0x3bf1('0x3d')];if(_0x5b66e8[_0x3bf1('0x43')][_0x3bf1('0xca')]){_0x156ebe[_0x3bf1('0xcb')]=[{'all':!![]}];}_0x156ebe=_[_0x3bf1('0xa0')]({},_0x156ebe,_0x5b66e8[_0x3bf1('0xcc')]);return db['MailInteraction'][_0x3bf1('0x60')](_0x156ebe)['then'](handleEntityNotFound(_0x3fb453,null))[_0x3bf1('0x2b')](respondWithResult(_0x3fb453,null))[_0x3bf1('0x39')](handleError(_0x3fb453,null));};exports[_0x3bf1('0xcd')]=function(_0x33899b,_0x50b368){return db[_0x3bf1('0x3b')][_0x3bf1('0xcd')](_0x33899b[_0x3bf1('0xce')],{})[_0x3bf1('0x2b')](respondWithResult(_0x50b368,0xc9))[_0x3bf1('0x39')](handleError(_0x50b368,null));};exports[_0x3bf1('0x2a')]=function(_0x4dac19,_0x3f8846){if(_0x4dac19[_0x3bf1('0xce')]['id']){delete _0x4dac19['body']['id'];}return db['MailInteraction']['find']({'where':{'id':_0x4dac19['params']['id']}})[_0x3bf1('0x2b')](handleEntityNotFound(_0x3f8846,null))[_0x3bf1('0x2b')](saveUpdates(_0x4dac19[_0x3bf1('0xce')],null))[_0x3bf1('0x2b')](respondWithResult(_0x3f8846,null))['catch'](handleError(_0x3f8846,null));};exports[_0x3bf1('0xcf')]=function(_0x101ef0,_0x34be3b){return db[_0x3bf1('0x3b')][_0x3bf1('0x60')]({'where':{'id':_0x101ef0[_0x3bf1('0xc8')]['id']}})[_0x3bf1('0x2b')](handleEntityNotFound(_0x34be3b,null))[_0x3bf1('0x2b')](removeEntity(_0x34be3b,null))[_0x3bf1('0x39')](handleError(_0x34be3b,null));};exports[_0x3bf1('0xd0')]=function(_0x18ae7b,_0x4611a3){return db[_0x3bf1('0x3b')][_0x3bf1('0xd0')]()[_0x3bf1('0x2b')](respondWithResult(_0x4611a3,null))[_0x3bf1('0x39')](handleError(_0x4611a3,null));};exports[_0x3bf1('0xd1')]=function(_0x167474,_0x4b4c02,_0x11bfca){return db[_0x3bf1('0x34')]['find']({'where':{'id':_0x167474[_0x3bf1('0xc8')]['id']}})[_0x3bf1('0x2b')](handleEntityNotFound(_0x4b4c02,null))[_0x3bf1('0x2b')](function(_0x24fcaf){if(_0x24fcaf){return _0x24fcaf['addMessage'](_0x167474[_0x3bf1('0xce')][_0x3bf1('0xd2')],_['omit'](_0x167474[_0x3bf1('0xce')],[_0x3bf1('0xd2'),'id'])||{});}})[_0x3bf1('0x2b')](respondWithResult(_0x4b4c02,null))[_0x3bf1('0x39')](handleError(_0x4b4c02,null));};exports[_0x3bf1('0xd3')]=function(_0x570fd2,_0x421317,_0x57c2c2){var _0x4cd28b={'raw':![],'where':{}};var _0x41d784={};var _0x2ad373={'count':0x0,'rows':[]};return db[_0x3bf1('0x3b')][_0x3bf1('0xc2')]({'where':{'id':_0x570fd2['params']['id']}})[_0x3bf1('0x2b')](handleEntityNotFound(_0x421317,null))[_0x3bf1('0x2b')](function(_0x58fd8d){if(_0x58fd8d){_0x41d784[_0x3bf1('0x3d')]=_[_0x3bf1('0x3e')](db['MailMessage'][_0x3bf1('0xc9')]);_0x41d784[_0x3bf1('0x43')]=_[_0x3bf1('0x3e')](_0x570fd2[_0x3bf1('0x43')]);_0x41d784['filters']=_[_0x3bf1('0x41')](_0x41d784[_0x3bf1('0x3d')],_0x41d784[_0x3bf1('0x43')]);_0x4cd28b[_0x3bf1('0x40')]=_[_0x3bf1('0x41')](_0x41d784[_0x3bf1('0x3d')],qs[_0x3bf1('0x42')](_0x570fd2[_0x3bf1('0x43')][_0x3bf1('0x42')]));_0x4cd28b[_0x3bf1('0x40')]=_0x4cd28b[_0x3bf1('0x40')][_0x3bf1('0x44')]?_0x4cd28b[_0x3bf1('0x40')]:_0x41d784[_0x3bf1('0x3d')];if(!_0x570fd2[_0x3bf1('0x43')][_0x3bf1('0x45')]('nolimit')){_0x4cd28b['limit']=qs[_0x3bf1('0x24')](_0x570fd2[_0x3bf1('0x43')]['limit']);_0x4cd28b[_0x3bf1('0x23')]=qs[_0x3bf1('0x23')](_0x570fd2[_0x3bf1('0x43')][_0x3bf1('0x23')]);}_0x4cd28b[_0x3bf1('0x92')]=qs['sort'](_0x570fd2[_0x3bf1('0x43')]['sort']);_0x4cd28b[_0x3bf1('0x48')]=qs[_0x3bf1('0x3f')](_[_0x3bf1('0x49')](_0x570fd2[_0x3bf1('0x43')],_0x41d784[_0x3bf1('0x3f')]));_0x4cd28b[_0x3bf1('0x48')][_0x3bf1('0xc1')]=_0x58fd8d['id'];if(_0x570fd2[_0x3bf1('0x43')][_0x3bf1('0x84')]){_0x4cd28b[_0x3bf1('0x48')]=_[_0x3bf1('0xa0')](_0x4cd28b[_0x3bf1('0x48')],{'$or':_[_0x3bf1('0x2f')](_0x4cd28b[_0x3bf1('0x40')],function(_0x4adc71){var _0x122649={};_0x122649[_0x4adc71]={'$like':'%'+_0x570fd2[_0x3bf1('0x43')][_0x3bf1('0x84')]+'%'};return _0x122649;})});}if(_0x570fd2['query'][_0x3bf1('0x7a')]){var _0x7265a=_0x570fd2['query'][_0x3bf1('0x7a')][_0x3bf1('0x32')](',');var _0x4adf95={};_0x4adf95[_0x7265a[0x0]]={'$gte':moment(_0x7265a[0x1])[_0x3bf1('0xd4')]('YYYY-MM-DD\x20HH:mm:ss')};_0x4cd28b[_0x3bf1('0x48')]=_[_0x3bf1('0xa0')](_0x4cd28b['where'],_0x4adf95);}_0x4cd28b=_[_0x3bf1('0xa0')]({},_0x4cd28b,_0x570fd2['options']);return db[_0x3bf1('0x34')][_0x3bf1('0x26')]({'where':_0x4cd28b[_0x3bf1('0x48')]})[_0x3bf1('0x2b')](function(_0x1a0084){_0x2ad373['count']=_0x1a0084;if(_0x570fd2['query'][_0x3bf1('0xca')]){_0x4cd28b[_0x3bf1('0xcb')]=[{'all':!![]}];}return db[_0x3bf1('0x34')][_0x3bf1('0xd5')](_0x4cd28b);})[_0x3bf1('0x2b')](function(_0x52bef9){if(_0x570fd2['query'][_0x3bf1('0xd6')]===_0x3bf1('0xd7')){for(var _0x7933e5=0x0;_0x7933e5<_0x52bef9[_0x3bf1('0x44')];_0x7933e5++){_0x52bef9[_0x7933e5][_0x3bf1('0xce')]=juice(_0x52bef9[_0x7933e5][_0x3bf1('0xce')]);}}_0x2ad373['rows']=_0x52bef9;return _0x2ad373;});}})[_0x3bf1('0x2b')](respondWithFilteredResult(_0x421317,_0x4cd28b))[_0x3bf1('0x39')](handleError(_0x421317,null));};exports[_0x3bf1('0xd8')]=function(_0x1068b2,_0x9ac59b,_0x4fce0c){return db['MailInteraction'][_0x3bf1('0x60')]({'where':{'id':_0x1068b2[_0x3bf1('0xc8')]['id']}})['then'](handleEntityNotFound(_0x9ac59b,null))[_0x3bf1('0x2b')](function(_0x18e70d){if(_0x18e70d){return _0x18e70d['setTags'](_0x1068b2[_0x3bf1('0xce')][_0x3bf1('0xd2')],_[_0x3bf1('0xd9')](_0x1068b2['body'],[_0x3bf1('0xd2'),'id'])||{})[_0x3bf1('0xda')](function(){return db[_0x3bf1('0x6d')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x1068b2[_0x3bf1('0xce')][_0x3bf1('0xd2')]}});})[_0x3bf1('0x2b')](function(_0x1a4efb){socket['emit'](_0x3bf1('0xdb'),{'id':Number(_0x1068b2[_0x3bf1('0xc8')]['id']),'tags':_0x1a4efb||[]});return{'id':Number(_0x1068b2[_0x3bf1('0xc8')]['id']),'tags':_0x1a4efb||[]};});}})[_0x3bf1('0x2b')](respondWithResult(_0x9ac59b,null))[_0x3bf1('0x39')](handleError(_0x9ac59b,null));};exports[_0x3bf1('0xdc')]=function(_0x464bf3,_0x41577b,_0x248e69){return db[_0x3bf1('0x3b')][_0x3bf1('0x60')]({'where':{'id':_0x464bf3[_0x3bf1('0xc8')]['id']}})[_0x3bf1('0x2b')](handleEntityNotFound(_0x41577b,null))['then'](function(_0x1c6408){if(_0x1c6408){return _0x1c6408['removeTags'](_0x464bf3[_0x3bf1('0x43')]['ids']);}})['then'](respondWithStatusCode(_0x41577b,null))[_0x3bf1('0x39')](handleError(_0x41577b,null));};exports['download']=function(_0x5a142a,_0x5110b7){var _0x3fd134=moment()[_0x3bf1('0xdd')]()[_0x3bf1('0x9e')]();var _0x36337a=path[_0x3bf1('0xde')](config[_0x3bf1('0xdf')],_0x3bf1('0xe0'),_0x3bf1('0xe1'),'tmp');var _0xad9fed=path[_0x3bf1('0xde')](config[_0x3bf1('0xdf')],'server',_0x3bf1('0xe1'),_0x3bf1('0xe2'));var _0x445fee=path[_0x3bf1('0xde')](_0x36337a,_0x3fd134);var _0x233771=util[_0x3bf1('0xd4')]('transcript-%d-%s.zip',_0x5a142a[_0x3bf1('0xc8')]['id'],_0x3fd134);var _0x48d901=path[_0x3bf1('0xde')](_0x36337a,_0x233771);var _0x2c3977=[];if(_0x5a142a[_0x3bf1('0x43')][_0x3bf1('0xe2')]){_0x2c3977[_0x3bf1('0xc4')]({'model':db['Attachment'],'as':_0x3bf1('0xe3'),'raw':!![]});}var _0xe26ed0=[{'model':db[_0x3bf1('0x34')],'as':'Messages','attributes':['id',_0x3bf1('0xce'),'from','to','cc',_0x3bf1('0xe4'),'subject',_0x3bf1('0x78')],'where':{'secret':![]},'order':qs[_0x3bf1('0x47')]('id'),'include':_0x2c3977}];return db[_0x3bf1('0x3b')][_0x3bf1('0x60')]({'where':{'id':_0x5a142a[_0x3bf1('0xc8')]['id']},'include':_0xe26ed0})['then'](handleEntityNotFound(_0x5110b7,null))['then'](function(_0x2bf7bd){if(_0x2bf7bd&&_0x2bf7bd['Messages']){var _0x1f1f35=_0x2bf7bd[_0x3bf1('0xe5')]({'plain':!![]});fs[_0x3bf1('0xe6')](_0x445fee);return BPromise[_0x3bf1('0xe7')](_0x1f1f35['Messages'],function(_0x200e72,_0x2c6da9){var _0x3af24a={'from':_0x200e72['from'],'to':_0x200e72['to'],'subject':_0x200e72[_0x3bf1('0xe8')],'html':_0x200e72[_0x3bf1('0xce')],'headers':{'Date':moment(_0x200e72[_0x3bf1('0x78')])['format'](_0x3bf1('0xe9'))},'attachments':[]};if(_0x200e72['cc']){_0x3af24a[_0x3bf1('0xea')]['Cc']=_0x200e72['cc'];}if(_0x200e72[_0x3bf1('0xe4')]){_0x3af24a[_0x3bf1('0xea')][_0x3bf1('0xeb')]=_0x200e72[_0x3bf1('0xe4')];}return new BPromise(function(_0x4d6139,_0x592bb3){if(_0x200e72['Attachments']){for(var _0x5a780c=0x0;_0x5a780c<_0x200e72['Attachments']['length'];_0x5a780c++){var _0x160dd9=_0x200e72['Attachments'][_0x5a780c];var _0x548a62=path[_0x3bf1('0xde')](_0xad9fed,_0x160dd9['basename']);if(fs[_0x3bf1('0xec')](_0x548a62)){_0x3af24a['attachments'][_0x3bf1('0xc4')]({'name':_0x160dd9['name'],'contentType':_0x160dd9[_0x3bf1('0x3c')],'data':fs[_0x3bf1('0xed')](_0x548a62)});}}}emlformat[_0x3bf1('0xee')](_0x3af24a,function(_0x38cdb1,_0x2c210a){if(_0x38cdb1)return _0x592bb3(_0x38cdb1);fs[_0x3bf1('0xef')](path['join'](_0x445fee,util[_0x3bf1('0xd4')]('message%d.eml',_0x2c6da9)),_0x2c210a);return _0x4d6139(_0x2c210a);});});})[_0x3bf1('0x2b')](function(){return new BPromise(function(_0x39e4c6,_0x243a61){zipdir(_0x445fee,{'saveTo':_0x48d901},function(_0x10dd0c,_0x76156d){if(_0x10dd0c)return _0x243a61(_0x10dd0c);return _0x39e4c6(_0x76156d);});})[_0x3bf1('0x2b')](function(){return new BPromise(function(_0x1d7256,_0x4b912e){rimraf(_0x445fee,function(_0x1d71d5){if(_0x1d71d5)_0x4b912e(_0x1d71d5);return _0x1d7256();});});})[_0x3bf1('0x2b')](function(){return _0x5110b7[_0x3bf1('0xf0')](_0x48d901,_0x233771,function(_0x16738d){if(_0x16738d){console[_0x3bf1('0xf1')](_0x3bf1('0xf2'),_0x16738d);}else{fs['unlinkSync'](_0x48d901);}});});});}else{return _0x5110b7[_0x3bf1('0x2c')](0xc8);}})[_0x3bf1('0x39')](handleError(_0x5110b7,null));};
\ No newline at end of file
+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(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xb10b,0x12a));var _0xbb10=function(_0x47c902,_0x220fd2){_0x47c902=_0x47c902-0x0;var _0x1ad6a0=_0xb10b[_0x47c902];return _0x1ad6a0;};'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
index 6981cf0..6881b5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb90=['MailInteraction','MailMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x440bca,_0x4e468a){var _0x14f974=function(_0x36f29e){while(--_0x36f29e){_0x440bca['push'](_0x440bca['shift']());}};_0x14f974(++_0x4e468a);}(_0xbb90,0x83));var _0x0bb9=function(_0x55b506,_0x199349){_0x55b506=_0x55b506-0x0;var _0x4e7069=_0xbb90[_0x55b506];return _0x4e7069;};'use strict';var EventEmitter=require(_0x0bb9('0x0'));var MailInteraction=require(_0x0bb9('0x1'))['db'][_0x0bb9('0x2')];var MailMessage=require(_0x0bb9('0x1'))['db'][_0x0bb9('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x0bb9('0x4')](0x0);var events={'afterCreate':_0x0bb9('0x5'),'afterUpdate':_0x0bb9('0x6'),'afterDestroy':_0x0bb9('0x7')};function emitEvent(_0x20564e){return function(_0x22992b,_0x12c0fb,_0x5059c1){_0x22992b[_0x0bb9('0x8')]({'attributes':['id'],'raw':!![]})[_0x0bb9('0x9')](function(_0x34b00e){_0x22992b[_0x0bb9('0xa')](_0x0bb9('0xb'),_0x34b00e[_0x0bb9('0xc')](function(_0x5687ce){return{'id':_0x5687ce['id']};}));return MailMessage[_0x0bb9('0xd')]({'where':{'MailInteractionId':_0x22992b['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0bb9('0x9')](function(_0x2b3818){_0x22992b['setDataValue'](_0x0bb9('0xe'),_0x2b3818['length']);MailInteractionEvents[_0x0bb9('0xf')](_0x20564e+':'+_0x22992b['id'],_0x22992b);MailInteractionEvents[_0x0bb9('0xf')](_0x20564e,_0x22992b);_0x5059c1(null);})[_0x0bb9('0x10')](_0x5059c1(null));};}for(var e in events){if(events[_0x0bb9('0x11')](e)){var event=events[e];MailInteraction[_0x0bb9('0x12')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
+var _0x9de6=['update','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','MailInteraction','../../mysqldb','MailMessage','setMaxListeners','save'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x9de6,0x92));var _0x69de=function(_0x3fa4ac,_0x44b6ab){_0x3fa4ac=_0x3fa4ac-0x0;var _0x17c25e=_0x9de6[_0x3fa4ac];return _0x17c25e;};'use strict';var EventEmitter=require(_0x69de('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x69de('0x1')];var MailMessage=require(_0x69de('0x2'))['db'][_0x69de('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x69de('0x4')](0x0);var events={'afterCreate':_0x69de('0x5'),'afterUpdate':_0x69de('0x6'),'afterDestroy':'remove'};function emitEvent(_0x4ded08){return function(_0x17e4e1,_0x25cca4,_0x3c280e){_0x17e4e1['getUsers']({'attributes':['id'],'raw':!![]})[_0x69de('0x7')](function(_0x5e741d){_0x17e4e1[_0x69de('0x8')](_0x69de('0x9'),_0x5e741d[_0x69de('0xa')](function(_0x54e28d){return{'id':_0x54e28d['id']};}));return MailMessage[_0x69de('0xb')]({'where':{'MailInteractionId':_0x17e4e1['id'],'direction':'in','read':![]},'raw':!![]});})[_0x69de('0x7')](function(_0x4d5317){_0x17e4e1['setDataValue'](_0x69de('0xc'),_0x4d5317[_0x69de('0xd')]);MailInteractionEvents[_0x69de('0xe')](_0x4ded08+':'+_0x17e4e1['id'],_0x17e4e1);MailInteractionEvents['emit'](_0x4ded08,_0x17e4e1);_0x3c280e(null);})[_0x69de('0xf')](_0x3c280e(null));};}for(var e in events){if(events[_0x69de('0x10')](e)){var event=events[e];MailInteraction[_0x69de('0x11')](e,emitEvent(event));}}module[_0x69de('0x12')]=MailInteractionEvents;
\ No newline at end of file
index 50e04d5..eb7be11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04bf=['update','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./mailInteraction.attributes','exports','mail_interactions','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','changed','closed','get','MailMessage'];(function(_0x527228,_0x2bf9d1){var _0x18fc82=function(_0x301e4f){while(--_0x301e4f){_0x527228['push'](_0x527228['shift']());}};_0x18fc82(++_0x2bf9d1);}(_0x04bf,0xd5));var _0xf04b=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x04bf[_0x46698a];return _0x356db0;};'use strict';var _=require(_0xf04b('0x0'));var util=require(_0xf04b('0x1'));var logger=require(_0xf04b('0x2'))(_0xf04b('0x3'));var moment=require(_0xf04b('0x4'));var BPromise=require(_0xf04b('0x5'));var rp=require(_0xf04b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf04b('0x7'));var attributes=require(_0xf04b('0x8'));module[_0xf04b('0x9')]=function(_0x5a2b0f,_0x4ab9ab){return _0x5a2b0f['define']('MailInteraction',attributes,{'tableName':_0xf04b('0xa'),'paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':['subject','to'],'type':_0xf04b('0xb')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2310fc,_0x32f386,_0x145742){if(_0x2310fc[_0xf04b('0xc')]){_0x2310fc[_0xf04b('0xd')]=moment()[_0xf04b('0xe')](_0xf04b('0xf'));}if(_0x2310fc['closed']){_0x2310fc[_0xf04b('0x10')]=moment()[_0xf04b('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x145742(null,_0x32f386);},'beforeUpdate':function(_0x5e9530,_0x1cc554,_0x740bad){if(_0x5e9530['changed'](_0xf04b('0xc'))){_0x5e9530[_0xf04b('0xd')]=_0x5e9530['substatus']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x5e9530[_0xf04b('0x11')](_0xf04b('0x12'))){_0x5e9530[_0xf04b('0x10')]=moment()['format'](_0xf04b('0xf'));_0x5e9530[_0xf04b('0xc')]=null;_0x5e9530[_0xf04b('0xd')]=null;}_0x740bad(null,_0x5e9530);},'afterUpdate':function(_0x510f90,_0x2cfe5d,_0x10d770){var _0x2041e1=_0x5a2b0f['models'];var _0x576a51=_0x510f90[_0xf04b('0x13')]({'plain':!![]});if(_0x576a51[_0xf04b('0x12')]){return _0x2041e1[_0xf04b('0x14')][_0xf04b('0x15')]({'read':!![]},{'where':{'MailInteractionId':_0x576a51['id']}})[_0xf04b('0x16')](function(){_0x10d770();})[_0xf04b('0x17')](function(_0x32f47b){_0x10d770(_0x32f47b);});}else{_0x10d770();}}},'charset':_0xf04b('0x18'),'collate':_0xf04b('0x19')});};
\ No newline at end of file
+var _0x74db=['bluebird','request-promise','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','format','YYYY-MM-DD\x20HH:mm:ss','changed','substatusAt','closedAt','models','get','MailMessage','update','then','catch','utf8mb4','lodash','../../config/logger','api','moment'];(function(_0x3693c2,_0x13d988){var _0x5d2a7b=function(_0x46e910){while(--_0x46e910){_0x3693c2['push'](_0x3693c2['shift']());}};_0x5d2a7b(++_0x13d988);}(_0x74db,0x11e));var _0xb74d=function(_0x19159a,_0x1cb5c3){_0x19159a=_0x19159a-0x0;var _0xa677f4=_0x74db[_0x19159a];return _0xa677f4;};'use strict';var _=require(_0xb74d('0x0'));var util=require('util');var logger=require(_0xb74d('0x1'))(_0xb74d('0x2'));var moment=require(_0xb74d('0x3'));var BPromise=require(_0xb74d('0x4'));var rp=require(_0xb74d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb74d('0x6'));var config=require(_0xb74d('0x7'));var attributes=require(_0xb74d('0x8'));module[_0xb74d('0x9')]=function(_0x1064be,_0x130ac0){return _0x1064be[_0xb74d('0xa')](_0xb74d('0xb'),attributes,{'tableName':_0xb74d('0xc'),'paranoid':![],'indexes':[{'name':_0xb74d('0xd'),'fields':[_0xb74d('0xe'),'to'],'type':_0xb74d('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x53bf95,_0x127b42,_0x15ecba){if(_0x53bf95[_0xb74d('0x10')]){_0x53bf95['substatusAt']=moment()[_0xb74d('0x11')](_0xb74d('0x12'));}if(_0x53bf95['closed']){_0x53bf95['closedAt']=moment()[_0xb74d('0x11')]('YYYY-MM-DD\x20HH:mm:ss');}_0x15ecba(null,_0x127b42);},'beforeUpdate':function(_0x33ceda,_0x3473c2,_0x126b0b){if(_0x33ceda[_0xb74d('0x13')](_0xb74d('0x10'))){_0x33ceda[_0xb74d('0x14')]=_0x33ceda[_0xb74d('0x10')]?moment()[_0xb74d('0x11')](_0xb74d('0x12')):null;}if(_0x33ceda['changed']('closed')){_0x33ceda[_0xb74d('0x15')]=moment()[_0xb74d('0x11')](_0xb74d('0x12'));_0x33ceda['substatus']=null;_0x33ceda[_0xb74d('0x14')]=null;}_0x126b0b(null,_0x33ceda);},'afterUpdate':function(_0x2534ae,_0xa4e100,_0x20183e){var _0x52f5e9=_0x1064be[_0xb74d('0x16')];var _0x1821e9=_0x2534ae[_0xb74d('0x17')]({'plain':!![]});if(_0x1821e9['closed']){return _0x52f5e9[_0xb74d('0x18')][_0xb74d('0x19')]({'read':!![]},{'where':{'MailInteractionId':_0x1821e9['id']}})[_0xb74d('0x1a')](function(){_0x20183e();})[_0xb74d('0x1b')](function(_0x3b7aa2){_0x20183e(_0x3b7aa2);});}else{_0x20183e();}}},'charset':_0xb74d('0x1c'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 65747e1..86ca804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc492=['info','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','MailInteraction,\x20%s,\x20%s','message','catch','UpdateMailInteraction','update','body','options','raw','where','attributes','limit','MailInteraction','then','addTags','ids','omit','spread','AddTags','lodash','util','moment','ioredis','../../config/logger','rpc','jayson/promise','http','redis','localhost','socket.io-emitter','./mailInteraction.socket','request'];(function(_0xe24ea5,_0x16c9e6){var _0x2483fd=function(_0x440c56){while(--_0x440c56){_0xe24ea5['push'](_0xe24ea5['shift']());}};_0x2483fd(++_0x16c9e6);}(_0xc492,0xd7));var _0x2c49=function(_0x19a7a0,_0x22de2d){_0x19a7a0=_0x19a7a0-0x0;var _0x4fcc15=_0xc492[_0x19a7a0];return _0x4fcc15;};'use strict';var _=require(_0x2c49('0x0'));var util=require(_0x2c49('0x1'));var moment=require(_0x2c49('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2c49('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2c49('0x4'))(_0x2c49('0x5'));var config=require('../../config/environment');var jayson=require(_0x2c49('0x6'));var client=jayson['client'][_0x2c49('0x7')]({'port':0x232a});config[_0x2c49('0x8')]=_['defaults'](config[_0x2c49('0x8')],{'host':_0x2c49('0x9'),'port':0x18eb});var socket=require(_0x2c49('0xa'))(new Redis(config[_0x2c49('0x8')]));require(_0x2c49('0xb'))['register'](socket);function respondWithRpcPromise(_0x3d3e2a,_0x4f64f2,_0x493cd2){return new BPromise(function(_0x4a6340,_0x57c2aa){return client[_0x2c49('0xc')](_0x3d3e2a,_0x493cd2)['then'](function(_0x4260d1){logger[_0x2c49('0xd')]('MailInteraction,\x20%s,\x20%s',_0x4f64f2,_0x2c49('0xe'));logger[_0x2c49('0xf')](_0x2c49('0x10'),_0x4f64f2,_0x2c49('0xe'),JSON[_0x2c49('0x11')](_0x4260d1));if(_0x4260d1[_0x2c49('0x12')]){if(_0x4260d1['error'][_0x2c49('0x13')]===0x1f4){logger[_0x2c49('0x12')](_0x2c49('0x14'),_0x4f64f2,_0x4260d1[_0x2c49('0x12')][_0x2c49('0x15')]);return _0x57c2aa(_0x4260d1['error'][_0x2c49('0x15')]);}logger[_0x2c49('0x12')](_0x2c49('0x14'),_0x4f64f2,_0x4260d1[_0x2c49('0x12')][_0x2c49('0x15')]);return _0x4a6340(_0x4260d1[_0x2c49('0x12')][_0x2c49('0x15')]);}else{logger[_0x2c49('0xd')](_0x2c49('0x14'),_0x4f64f2,_0x2c49('0xe'));_0x4a6340(_0x4260d1['result'][_0x2c49('0x15')]);}})[_0x2c49('0x16')](function(_0x3dfb36){logger[_0x2c49('0x12')]('MailInteraction,\x20%s,\x20%s',_0x4f64f2,_0x3dfb36);_0x57c2aa(_0x3dfb36);});});}exports[_0x2c49('0x17')]=function(_0x578c07){var _0xc7b6cc=this;return new Promise(function(_0x11de5f,_0x573157){return db['MailInteraction'][_0x2c49('0x18')](_0x578c07[_0x2c49('0x19')],{'raw':_0x578c07[_0x2c49('0x1a')]?_0x578c07[_0x2c49('0x1a')][_0x2c49('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x578c07[_0x2c49('0x1a')]?_0x578c07[_0x2c49('0x1a')][_0x2c49('0x1c')]||null:null,'attributes':_0x578c07[_0x2c49('0x1a')]?_0x578c07['options'][_0x2c49('0x1d')]||null:null,'limit':_0x578c07[_0x2c49('0x1a')]?_0x578c07[_0x2c49('0x1a')][_0x2c49('0x1e')]||null:null})['then'](function(_0x147016){logger[_0x2c49('0xd')](_0x2c49('0x17'),_0x578c07);logger[_0x2c49('0xf')]('UpdateMailInteraction',_0x578c07,JSON[_0x2c49('0x11')](_0x147016));_0x11de5f(_0x147016);})[_0x2c49('0x16')](function(_0x25bf3d){logger['error'](_0x2c49('0x17'),_0x25bf3d[_0x2c49('0x15')],_0x578c07);_0x573157(_0xc7b6cc['error'](0x1f4,_0x25bf3d[_0x2c49('0x15')]));});});};exports['AddTagsToMailInteraction']=function(_0x517085){return new Promise(function(_0x12d3c1,_0x4d2564){return db[_0x2c49('0x1f')]['find']({'where':_0x517085[_0x2c49('0x1a')]?_0x517085[_0x2c49('0x1a')][_0x2c49('0x1c')]||null:null})[_0x2c49('0x20')](function(_0x585b04){if(_0x585b04){return _0x585b04[_0x2c49('0x21')](_0x517085[_0x2c49('0x19')][_0x2c49('0x22')],_[_0x2c49('0x23')](_0x517085[_0x2c49('0x19')],['ids','id'])||{});}})[_0x2c49('0x24')](function(_0x53b2b8){logger[_0x2c49('0xd')](_0x2c49('0x25'),_0x517085);logger[_0x2c49('0xf')](_0x2c49('0x25'),_0x517085,JSON[_0x2c49('0x11')](_0x53b2b8));_0x12d3c1(_0x53b2b8);})[_0x2c49('0x16')](function(_0x397ce9){logger[_0x2c49('0x12')](_0x2c49('0x25'),_0x397ce9[_0x2c49('0x15')],_0x517085);_0x4d2564(_this[_0x2c49('0x12')](0x1f4,_0x397ce9[_0x2c49('0x15')]));});});};
\ No newline at end of file
+var _0x002d=['then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateMailInteraction','MailInteraction','options','raw','where','attributes','limit','AddTagsToMailInteraction','find','addTags','body','omit','ids','AddTags','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register'];(function(_0x5d4818,_0x31a12d){var _0x1b352a=function(_0x4e8659){while(--_0x4e8659){_0x5d4818['push'](_0x5d4818['shift']());}};_0x1b352a(++_0x31a12d);}(_0x002d,0xca));var _0xd002=function(_0x24a038,_0x336fac){_0x24a038=_0x24a038-0x0;var _0x1c5b87=_0x002d[_0x24a038];return _0x1c5b87;};'use strict';var _=require(_0xd002('0x0'));var util=require(_0xd002('0x1'));var moment=require(_0xd002('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd002('0x3'));var db=require(_0xd002('0x4'))['db'];var utils=require(_0xd002('0x5'));var logger=require(_0xd002('0x6'))(_0xd002('0x7'));var config=require(_0xd002('0x8'));var jayson=require(_0xd002('0x9'));var client=jayson[_0xd002('0xa')][_0xd002('0xb')]({'port':0x232a});config[_0xd002('0xc')]=_[_0xd002('0xd')](config[_0xd002('0xc')],{'host':_0xd002('0xe'),'port':0x18eb});var socket=require(_0xd002('0xf'))(new Redis(config[_0xd002('0xc')]));require(_0xd002('0x10'))[_0xd002('0x11')](socket);function respondWithRpcPromise(_0x4a6621,_0x55d14a,_0x269cfe){return new BPromise(function(_0x3e283b,_0x2be09b){return client['request'](_0x4a6621,_0x269cfe)[_0xd002('0x12')](function(_0x12dad3){logger[_0xd002('0x13')](_0xd002('0x14'),_0x55d14a,_0xd002('0x15'));logger[_0xd002('0x16')](_0xd002('0x17'),_0x55d14a,_0xd002('0x15'),JSON[_0xd002('0x18')](_0x12dad3));if(_0x12dad3[_0xd002('0x19')]){if(_0x12dad3[_0xd002('0x19')][_0xd002('0x1a')]===0x1f4){logger[_0xd002('0x19')](_0xd002('0x14'),_0x55d14a,_0x12dad3['error']['message']);return _0x2be09b(_0x12dad3['error'][_0xd002('0x1b')]);}logger['error'](_0xd002('0x14'),_0x55d14a,_0x12dad3[_0xd002('0x19')][_0xd002('0x1b')]);return _0x3e283b(_0x12dad3[_0xd002('0x19')][_0xd002('0x1b')]);}else{logger[_0xd002('0x13')](_0xd002('0x14'),_0x55d14a,'request\x20sent');_0x3e283b(_0x12dad3[_0xd002('0x1c')][_0xd002('0x1b')]);}})[_0xd002('0x1d')](function(_0x3b1725){logger[_0xd002('0x19')]('MailInteraction,\x20%s,\x20%s',_0x55d14a,_0x3b1725);_0x2be09b(_0x3b1725);});});}exports[_0xd002('0x1e')]=function(_0x2bfd8c){var _0x33e20b=this;return new Promise(function(_0x2106a2,_0x5f3854){return db[_0xd002('0x1f')]['update'](_0x2bfd8c['body'],{'raw':_0x2bfd8c[_0xd002('0x20')]?_0x2bfd8c[_0xd002('0x20')][_0xd002('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2bfd8c[_0xd002('0x20')]?_0x2bfd8c[_0xd002('0x20')][_0xd002('0x22')]||null:null,'attributes':_0x2bfd8c[_0xd002('0x20')]?_0x2bfd8c[_0xd002('0x20')][_0xd002('0x23')]||null:null,'limit':_0x2bfd8c[_0xd002('0x20')]?_0x2bfd8c[_0xd002('0x20')][_0xd002('0x24')]||null:null})['then'](function(_0x25a29d){logger[_0xd002('0x13')]('UpdateMailInteraction',_0x2bfd8c);logger[_0xd002('0x16')](_0xd002('0x1e'),_0x2bfd8c,JSON[_0xd002('0x18')](_0x25a29d));_0x2106a2(_0x25a29d);})['catch'](function(_0x1c4b8a){logger['error']('UpdateMailInteraction',_0x1c4b8a['message'],_0x2bfd8c);_0x5f3854(_0x33e20b[_0xd002('0x19')](0x1f4,_0x1c4b8a[_0xd002('0x1b')]));});});};exports[_0xd002('0x25')]=function(_0x31e576){return new Promise(function(_0x358509,_0x24722d){return db[_0xd002('0x1f')][_0xd002('0x26')]({'where':_0x31e576[_0xd002('0x20')]?_0x31e576[_0xd002('0x20')]['where']||null:null})[_0xd002('0x12')](function(_0x40da97){if(_0x40da97){return _0x40da97[_0xd002('0x27')](_0x31e576[_0xd002('0x28')]['ids'],_[_0xd002('0x29')](_0x31e576['body'],[_0xd002('0x2a'),'id'])||{});}})['spread'](function(_0x3f271e){logger[_0xd002('0x13')](_0xd002('0x2b'),_0x31e576);logger[_0xd002('0x16')](_0xd002('0x2b'),_0x31e576,JSON[_0xd002('0x18')](_0x3f271e));_0x358509(_0x3f271e);})[_0xd002('0x1d')](function(_0x1c71fa){logger['error'](_0xd002('0x2b'),_0x1c71fa[_0xd002('0x1b')],_0x31e576);_0x24722d(_this[_0xd002('0x19')](0x1f4,_0x1c71fa[_0xd002('0x1b')]));});});};
\ No newline at end of file
index 640c0b4..668fc37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2f3=['mailInteraction:','./mailInteraction.events','save','remove','update','emit','register'];(function(_0x4c676a,_0x518530){var _0x2c5286=function(_0x45563e){while(--_0x45563e){_0x4c676a['push'](_0x4c676a['shift']());}};_0x2c5286(++_0x518530);}(_0xc2f3,0x1c1));var _0x3c2f=function(_0x123113,_0x59abe4){_0x123113=_0x123113-0x0;var _0x38b599=_0xc2f3[_0x123113];return _0x38b599;};'use strict';var MailInteractionEvents=require(_0x3c2f('0x0'));var events=[_0x3c2f('0x1'),_0x3c2f('0x2'),_0x3c2f('0x3')];function createListener(_0x28aaed,_0xb3d431){return function(_0x375218){_0xb3d431[_0x3c2f('0x4')](_0x28aaed,_0x375218);};}function removeListener(_0x104740,_0x312879){return function(){MailInteractionEvents['removeListener'](_0x104740,_0x312879);};}exports[_0x3c2f('0x5')]=function(_0x5c1460){for(var _0x44d224=0x0,_0x4f058e=events['length'];_0x44d224<_0x4f058e;_0x44d224++){var _0x3ab27e=events[_0x44d224];var _0x4270d5=createListener(_0x3c2f('0x6')+_0x3ab27e,_0x5c1460);MailInteractionEvents['on'](_0x3ab27e,_0x4270d5);}};
\ No newline at end of file
+var _0xa423=['save','update','emit','removeListener','register','./mailInteraction.events'];(function(_0x154192,_0x2d360f){var _0x3c2792=function(_0x2e257b){while(--_0x2e257b){_0x154192['push'](_0x154192['shift']());}};_0x3c2792(++_0x2d360f);}(_0xa423,0xc5));var _0x3a42=function(_0x5a6f0d,_0x28bfa5){_0x5a6f0d=_0x5a6f0d-0x0;var _0x13d5f0=_0xa423[_0x5a6f0d];return _0x13d5f0;};'use strict';var MailInteractionEvents=require(_0x3a42('0x0'));var events=[_0x3a42('0x1'),'remove',_0x3a42('0x2')];function createListener(_0x27c632,_0x3e51fc){return function(_0x23d1a4){_0x3e51fc[_0x3a42('0x3')](_0x27c632,_0x23d1a4);};}function removeListener(_0x41bc13,_0x26236e){return function(){MailInteractionEvents[_0x3a42('0x4')](_0x41bc13,_0x26236e);};}exports[_0x3a42('0x5')]=function(_0x6c33f7){for(var _0x5a7320=0x0,_0xfdffa9=events['length'];_0x5a7320<_0xfdffa9;_0x5a7320++){var _0x1f567f=events[_0x5a7320];var _0x453489=createListener('mailInteraction:'+_0x1f567f,_0x6c33f7);MailInteractionEvents['on'](_0x1f567f,_0x453489);}};
\ No newline at end of file
index a1b8d80..759a647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7035=['/describe','describe','/:id','tracked','mail','create','update','put','/:id/accept','accept','/:id/reject','reject','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x324c95,_0x69b68f){var _0x25f8ab=function(_0x384d5c){while(--_0x384d5c){_0x324c95['push'](_0x324c95['shift']());}};_0x25f8ab(++_0x69b68f);}(_0x7035,0x15e));var _0x5703=function(_0xf90e79,_0x5a9fd2){_0xf90e79=_0xf90e79-0x0;var _0x377513=_0x7035[_0xf90e79];return _0x377513;};'use strict';var multer=require(_0x5703('0x0'));var util=require('util');var path=require(_0x5703('0x1'));var timeout=require(_0x5703('0x2'));var express=require('express');var router=express[_0x5703('0x3')]();var fs_extra=require(_0x5703('0x4'));var auth=require(_0x5703('0x5'));var interaction=require(_0x5703('0x6'));var config=require(_0x5703('0x7'));var controller=require('./mailMessage.controller');router[_0x5703('0x8')]('/',auth[_0x5703('0x9')](),controller['index']);router[_0x5703('0x8')](_0x5703('0xa'),auth[_0x5703('0x9')](),controller[_0x5703('0xb')]);router[_0x5703('0x8')](_0x5703('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x5703('0x8')]('/:id/download',auth[_0x5703('0x9')](),controller['download']);router['post']('/',auth[_0x5703('0x9')](),interaction[_0x5703('0xd')](_0x5703('0xe'),'mailmessage:create'),controller[_0x5703('0xf')]);router['put'](_0x5703('0xc'),auth[_0x5703('0x9')](),controller[_0x5703('0x10')]);router[_0x5703('0x11')](_0x5703('0x12'),auth[_0x5703('0x9')](),controller[_0x5703('0x13')]);router[_0x5703('0x11')](_0x5703('0x14'),auth[_0x5703('0x9')](),controller[_0x5703('0x15')]);router['delete'](_0x5703('0xc'),auth[_0x5703('0x9')](),controller[_0x5703('0x16')]);module[_0x5703('0x17')]=router;
\ No newline at end of file
+var _0xfb9c=['/:id/reject','reject','delete','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','/describe','isAuthenticated','describe','/:id','show','/:id/download','download','mail','mailmessage:create','create','put','/:id/accept','accept'];(function(_0x5a37e3,_0x13023e){var _0xef2bcc=function(_0x152905){while(--_0x152905){_0x5a37e3['push'](_0x5a37e3['shift']());}};_0xef2bcc(++_0x13023e);}(_0xfb9c,0xb2));var _0xcfb9=function(_0x845fcc,_0x518cfb){_0x845fcc=_0x845fcc-0x0;var _0x3a0e79=_0xfb9c[_0x845fcc];return _0x3a0e79;};'use strict';var multer=require('multer');var util=require(_0xcfb9('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xcfb9('0x1'));var router=express[_0xcfb9('0x2')]();var fs_extra=require(_0xcfb9('0x3'));var auth=require(_0xcfb9('0x4'));var interaction=require(_0xcfb9('0x5'));var config=require(_0xcfb9('0x6'));var controller=require(_0xcfb9('0x7'));router[_0xcfb9('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xcfb9('0x8')](_0xcfb9('0x9'),auth[_0xcfb9('0xa')](),controller[_0xcfb9('0xb')]);router[_0xcfb9('0x8')](_0xcfb9('0xc'),auth['isAuthenticated'](),controller[_0xcfb9('0xd')]);router[_0xcfb9('0x8')](_0xcfb9('0xe'),auth['isAuthenticated'](),controller[_0xcfb9('0xf')]);router['post']('/',auth[_0xcfb9('0xa')](),interaction['tracked'](_0xcfb9('0x10'),_0xcfb9('0x11')),controller[_0xcfb9('0x12')]);router[_0xcfb9('0x13')]('/:id',auth[_0xcfb9('0xa')](),controller['update']);router[_0xcfb9('0x13')](_0xcfb9('0x14'),auth[_0xcfb9('0xa')](),controller[_0xcfb9('0x15')]);router[_0xcfb9('0x13')](_0xcfb9('0x16'),auth['isAuthenticated'](),controller[_0xcfb9('0x17')]);router[_0xcfb9('0x18')](_0xcfb9('0xc'),auth[_0xcfb9('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index aa52be0..7c0e372 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea5=['STRING','TEXT','DATE','Email','Chat','sequelize','exports','long','medium','BOOLEAN','ENUM','out'];(function(_0x424f90,_0x14e8fe){var _0x249124=function(_0x5e0884){while(--_0x5e0884){_0x424f90['push'](_0x424f90['shift']());}};_0x249124(++_0x14e8fe);}(_0xcea5,0x1a9));var _0x5cea=function(_0xd00585,_0x52539e){_0xd00585=_0xd00585-0x0;var _0x2ff6d3=_0xcea5[_0xd00585];return _0x2ff6d3;};'use strict';var Sequelize=require(_0x5cea('0x0'));var _=require('lodash');module[_0x5cea('0x1')]={'body':{'type':Sequelize['TEXT'](_0x5cea('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x5cea('0x3'))},'read':{'type':Sequelize[_0x5cea('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5cea('0x5')]('in','out'),'defaultValue':_0x5cea('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x5cea('0x7')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize['TEXT'](_0x5cea('0x2'))},'cc':{'type':Sequelize[_0x5cea('0x8')](_0x5cea('0x2'))},'bcc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize[_0x5cea('0x8')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0x5cea('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x5cea('0x9')]},'originTo':{'type':Sequelize[_0x5cea('0x8')](_0x5cea('0x2'))},'originCc':{'type':Sequelize[_0x5cea('0x8')](_0x5cea('0x2'))},'originChannel':{'type':Sequelize['ENUM'](_0x5cea('0xa'),_0x5cea('0xb')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
+var _0x51f2=['STRING','INTEGER','DATE','Email','Chat','sequelize','lodash','exports','TEXT','long','BOOLEAN','ENUM','out'];(function(_0x5b89a0,_0x315a2a){var _0x44d81a=function(_0x2529f4){while(--_0x2529f4){_0x5b89a0['push'](_0x5b89a0['shift']());}};_0x44d81a(++_0x315a2a);}(_0x51f2,0x1cc));var _0x251f=function(_0x4b8c1d,_0x334a3c){_0x4b8c1d=_0x4b8c1d-0x0;var _0x2bdccb=_0x51f2[_0x4b8c1d];return _0x2bdccb;};'use strict';var Sequelize=require(_0x251f('0x0'));var _=require(_0x251f('0x1'));module[_0x251f('0x2')]={'body':{'type':Sequelize[_0x251f('0x3')](_0x251f('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT']('medium')},'read':{'type':Sequelize[_0x251f('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x251f('0x6')]('in',_0x251f('0x7')),'defaultValue':_0x251f('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0x251f('0x8')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x251f('0x3')](_0x251f('0x4'))},'cc':{'type':Sequelize['TEXT'](_0x251f('0x4'))},'bcc':{'type':Sequelize[_0x251f('0x3')](_0x251f('0x4'))},'subject':{'type':Sequelize[_0x251f('0x3')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0x251f('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x251f('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x251f('0xa')]},'originTo':{'type':Sequelize[_0x251f('0x3')](_0x251f('0x4'))},'originCc':{'type':Sequelize[_0x251f('0x3')](_0x251f('0x4'))},'originChannel':{'type':Sequelize['ENUM'](_0x251f('0xb'),_0x251f('0xc')),'defaultValue':_0x251f('0xb'),'allowNull':![]}};
\ No newline at end of file
index cbf0e86..2d21648 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9add=['read','format','UserId','agent','MailInteraction','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','User','fullname','email','internal','manual','channel','event','fromString','EventManager','acceptmessage','get','MailInteractionId','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','contact','interface','SIP/%s','unix','toString','join','server','files','tmp','message-%s.eml','from','bcc','createdAt','Attachment','Attachments','subject','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','type','readFileSync','download','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','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','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','html-to-text','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','client','http','request','then','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','undefined','limit','count','offset','Content-Range','apply','reject','save','update','destroy','status','end','sendStatus','stack','name','send','index','MailMessage','rawAttributes','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','includeAll','findAll','rows','show','params','find','body','describe','create','direction','out','split','MailAccount','findOne','CmList','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','auth','user','pass','attachments','length','root','server/files/attachments','basename','List','SendMail','sendMail','messageId','stringify','mail-interactions','accept','mail'];(function(_0x1d3ce2,_0x263586){var _0xe54d0=function(_0x29bcd1){while(--_0x29bcd1){_0x1d3ce2['push'](_0x1d3ce2['shift']());}};_0xe54d0(++_0x263586);}(_0x9add,0xf6));var _0xd9ad=function(_0x2c04dc,_0x5cc3e0){_0x2c04dc=_0x2c04dc-0x0;var _0x429967=_0x9add[_0x2c04dc];return _0x429967;};'use strict';var emlformat=require(_0xd9ad('0x0'));var rimraf=require(_0xd9ad('0x1'));var zipdir=require(_0xd9ad('0x2'));var jsonpatch=require(_0xd9ad('0x3'));var rp=require('request-promise');var moment=require(_0xd9ad('0x4'));var BPromise=require(_0xd9ad('0x5'));var Mustache=require(_0xd9ad('0x6'));var util=require(_0xd9ad('0x7'));var path=require(_0xd9ad('0x8'));var sox=require(_0xd9ad('0x9'));var csv=require(_0xd9ad('0xa'));var ejs=require(_0xd9ad('0xb'));var fs=require('fs');var fs_extra=require(_0xd9ad('0xc'));var _=require(_0xd9ad('0xd'));var squel=require(_0xd9ad('0xe'));var crypto=require(_0xd9ad('0xf'));var jsforce=require(_0xd9ad('0x10'));var deskjs=require(_0xd9ad('0x11'));var toCsv=require(_0xd9ad('0xa'));var querystring=require(_0xd9ad('0x12'));var Papa=require('papaparse');var Redis=require(_0xd9ad('0x13'));var authService=require(_0xd9ad('0x14'));var qs=require(_0xd9ad('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd9ad('0x16'));var logger=require(_0xd9ad('0x17'))(_0xd9ad('0x18'));var utils=require(_0xd9ad('0x19'));var config=require(_0xd9ad('0x1a'));var licenseUtil=require(_0xd9ad('0x1b'));var htmlToText=require(_0xd9ad('0x1c'));var db=require(_0xd9ad('0x1d'))['db'];config[_0xd9ad('0x1e')]=_[_0xd9ad('0x1f')](config['redis'],{'host':_0xd9ad('0x20'),'port':0x18eb});var socket=require(_0xd9ad('0x21'))(new Redis(config['redis']));require('./mailMessage.socket')[_0xd9ad('0x22')](socket);var jayson=require('jayson/promise');var client=jayson[_0xd9ad('0x23')][_0xd9ad('0x24')]({'port':0x232c});var client9003=jayson[_0xd9ad('0x23')][_0xd9ad('0x24')]({'port':0x232b});var client9002=jayson[_0xd9ad('0x23')][_0xd9ad('0x24')]({'port':0x232a});function respondWithRpcPromise(_0x5a0477,_0x223a5e,_0x5d87f0,_0x59f2df){return new BPromise(function(_0x59fd55,_0x358535){var _0x5465df=_0x59f2df||client;return _0x5465df[_0xd9ad('0x25')](_0x5a0477,_0x5d87f0)[_0xd9ad('0x26')](function(_0x3fb256){logger[_0xd9ad('0x27')](_0xd9ad('0x28'),_0x223a5e,'request\x20sent');logger[_0xd9ad('0x29')](_0xd9ad('0x2a'),_0x223a5e,_0xd9ad('0x2b'),JSON['stringify'](_0x3fb256));if(_0x3fb256[_0xd9ad('0x2c')]){if(_0x3fb256['error'][_0xd9ad('0x2d')]===0x1f4){logger[_0xd9ad('0x2c')](_0xd9ad('0x28'),_0x223a5e,_0x3fb256[_0xd9ad('0x2c')]['message']);return _0x358535(_0x3fb256[_0xd9ad('0x2c')][_0xd9ad('0x2e')]);}logger['error'](_0xd9ad('0x28'),_0x223a5e,_0x3fb256[_0xd9ad('0x2c')][_0xd9ad('0x2e')]);return _0x59fd55(_0x3fb256[_0xd9ad('0x2c')][_0xd9ad('0x2e')]);}else{logger['info'](_0xd9ad('0x28'),_0x223a5e,'request\x20sent');_0x59fd55(_0x3fb256[_0xd9ad('0x2f')][_0xd9ad('0x2e')]);}})[_0xd9ad('0x30')](function(_0x344674){logger[_0xd9ad('0x2c')](_0xd9ad('0x28'),_0x223a5e,_0x344674);_0x358535(_0x344674);});});}function respondWithStatusCode(_0x4cdbd1,_0x470ffe){_0x470ffe=_0x470ffe||0xcc;return function(_0x4e8719){if(_0x4e8719){return _0x4cdbd1['sendStatus'](_0x470ffe);}return _0x4cdbd1['status'](_0x470ffe)['end']();};}function respondWithResult(_0x20b58a,_0x2c6c9c){_0x2c6c9c=_0x2c6c9c||0xc8;return function(_0x390b23){if(_0x390b23){return _0x20b58a['status'](_0x2c6c9c)['json'](_0x390b23);}};}function respondWithFilteredResult(_0xede398,_0xcac1e4){return function(_0x27be09){if(_0x27be09){var _0x4540d1=typeof _0xcac1e4['offset']===_0xd9ad('0x31')&&typeof _0xcac1e4[_0xd9ad('0x32')]===_0xd9ad('0x31');var _0xe8da0a=_0x27be09[_0xd9ad('0x33')];var _0x49ac2f=_0x4540d1?0x0:_0xcac1e4[_0xd9ad('0x34')];var _0x4f0191=_0x4540d1?_0x27be09['count']:_0xcac1e4['offset']+_0xcac1e4[_0xd9ad('0x32')];var _0x39b023;if(_0x4f0191>=_0xe8da0a){_0x4f0191=_0xe8da0a;_0x39b023=0xc8;}else{_0x39b023=0xce;}_0xede398['status'](_0x39b023);return _0xede398['set'](_0xd9ad('0x35'),_0x49ac2f+'-'+_0x4f0191+'/'+_0xe8da0a)['json'](_0x27be09);}return null;};}function patchUpdates(_0x52600e){return function(_0x38ece4){try{jsonpatch[_0xd9ad('0x36')](_0x38ece4,_0x52600e,!![]);}catch(_0x542e5b){return BPromise[_0xd9ad('0x37')](_0x542e5b);}return _0x38ece4[_0xd9ad('0x38')]();};}function saveUpdates(_0x457576,_0x32547){return function(_0x3fab76){if(_0x3fab76){return _0x3fab76[_0xd9ad('0x39')](_0x457576)[_0xd9ad('0x26')](function(_0x3d689f){return _0x3d689f;});}return null;};}function removeEntity(_0x12e0a3,_0x2207c9){return function(_0x3b264d){if(_0x3b264d){return _0x3b264d[_0xd9ad('0x3a')]()[_0xd9ad('0x26')](function(){_0x12e0a3[_0xd9ad('0x3b')](0xcc)[_0xd9ad('0x3c')]();});}};}function handleEntityNotFound(_0x2c19b1,_0x1308bf){return function(_0x2000ce){if(!_0x2000ce){_0x2c19b1[_0xd9ad('0x3d')](0x194);}return _0x2000ce;};}function handleError(_0x421db1,_0x3c3d7c){_0x3c3d7c=_0x3c3d7c||0x1f4;return function(_0x5530c1){logger['error'](_0x5530c1[_0xd9ad('0x3e')]);if(_0x5530c1[_0xd9ad('0x3f')]){delete _0x5530c1['name'];}_0x421db1[_0xd9ad('0x3b')](_0x3c3d7c)[_0xd9ad('0x40')](_0x5530c1);};}exports[_0xd9ad('0x41')]=function(_0x36c72f,_0x2a5028){var _0x34a268={},_0xbd72ee={},_0x1de5bd={'count':0x0,'rows':[]};var _0x1aef2e=_['map'](db[_0xd9ad('0x42')][_0xd9ad('0x43')],function(_0x1a970d){return{'name':_0x1a970d['fieldName'],'type':_0x1a970d['type'][_0xd9ad('0x44')]};});_0xbd72ee[_0xd9ad('0x45')]=_[_0xd9ad('0x46')](_0x1aef2e,'name');_0xbd72ee[_0xd9ad('0x47')]=_[_0xd9ad('0x48')](_0x36c72f[_0xd9ad('0x47')]);_0xbd72ee['filters']=_[_0xd9ad('0x49')](_0xbd72ee[_0xd9ad('0x45')],_0xbd72ee['query']);_0x34a268[_0xd9ad('0x4a')]=_[_0xd9ad('0x49')](_0xbd72ee[_0xd9ad('0x45')],qs[_0xd9ad('0x4b')](_0x36c72f[_0xd9ad('0x47')][_0xd9ad('0x4b')]));_0x34a268[_0xd9ad('0x4a')]=_0x34a268[_0xd9ad('0x4a')]['length']?_0x34a268['attributes']:_0xbd72ee[_0xd9ad('0x45')];if(!_0x36c72f[_0xd9ad('0x47')][_0xd9ad('0x4c')](_0xd9ad('0x4d'))){_0x34a268[_0xd9ad('0x32')]=qs[_0xd9ad('0x32')](_0x36c72f[_0xd9ad('0x47')][_0xd9ad('0x32')]);_0x34a268[_0xd9ad('0x34')]=qs[_0xd9ad('0x34')](_0x36c72f[_0xd9ad('0x47')][_0xd9ad('0x34')]);}_0x34a268[_0xd9ad('0x4e')]=qs[_0xd9ad('0x4f')](_0x36c72f[_0xd9ad('0x47')][_0xd9ad('0x4f')]);_0x34a268[_0xd9ad('0x50')]=qs[_0xd9ad('0x51')](_['pick'](_0x36c72f[_0xd9ad('0x47')],_0xbd72ee['filters']),_0x1aef2e);if(_0x36c72f[_0xd9ad('0x47')][_0xd9ad('0x52')]){_0x34a268[_0xd9ad('0x50')]=_[_0xd9ad('0x53')](_0x34a268[_0xd9ad('0x50')],{'$or':_[_0xd9ad('0x46')](_0x1aef2e,function(_0x56612c){if(_0x56612c['type']!==_0xd9ad('0x54')){var _0x47b9e3={};_0x47b9e3[_0x56612c['name']]={'$like':'%'+_0x36c72f[_0xd9ad('0x47')]['filter']+'%'};return _0x47b9e3;}})});}_0x34a268=_[_0xd9ad('0x53')]({},_0x34a268,_0x36c72f['options']);var _0x2033fb={'where':_0x34a268[_0xd9ad('0x50')]};return db[_0xd9ad('0x42')][_0xd9ad('0x33')](_0x2033fb)[_0xd9ad('0x26')](function(_0x3a5458){_0x1de5bd[_0xd9ad('0x33')]=_0x3a5458;if(_0x36c72f[_0xd9ad('0x47')][_0xd9ad('0x55')]){_0x34a268['include']=[{'all':!![]}];}return db[_0xd9ad('0x42')][_0xd9ad('0x56')](_0x34a268);})[_0xd9ad('0x26')](function(_0x5acd4d){_0x1de5bd[_0xd9ad('0x57')]=_0x5acd4d;return _0x1de5bd;})[_0xd9ad('0x26')](respondWithFilteredResult(_0x2a5028,_0x34a268))[_0xd9ad('0x30')](handleError(_0x2a5028,null));};exports[_0xd9ad('0x58')]=function(_0x5f4792,_0x2f9209){var _0x5b356f={'raw':!![],'where':{'id':_0x5f4792[_0xd9ad('0x59')]['id']}},_0x32febd={};_0x32febd[_0xd9ad('0x45')]=_[_0xd9ad('0x48')](db[_0xd9ad('0x42')][_0xd9ad('0x43')]);_0x32febd[_0xd9ad('0x47')]=_[_0xd9ad('0x48')](_0x5f4792['query']);_0x32febd[_0xd9ad('0x51')]=_[_0xd9ad('0x49')](_0x32febd[_0xd9ad('0x45')],_0x32febd['query']);_0x5b356f[_0xd9ad('0x4a')]=_['intersection'](_0x32febd['model'],qs['fields'](_0x5f4792[_0xd9ad('0x47')]['fields']));_0x5b356f[_0xd9ad('0x4a')]=_0x5b356f[_0xd9ad('0x4a')]['length']?_0x5b356f[_0xd9ad('0x4a')]:_0x32febd[_0xd9ad('0x45')];if(_0x5f4792[_0xd9ad('0x47')]['includeAll']){_0x5b356f['include']=[{'all':!![]}];}_0x5b356f=_[_0xd9ad('0x53')]({},_0x5b356f,_0x5f4792['options']);return db['MailMessage'][_0xd9ad('0x5a')](_0x5b356f)['then'](handleEntityNotFound(_0x2f9209,null))[_0xd9ad('0x26')](respondWithResult(_0x2f9209,null))[_0xd9ad('0x30')](handleError(_0x2f9209,null));};exports['update']=function(_0xba1c31,_0x41533d){if(_0xba1c31[_0xd9ad('0x5b')]['id']){delete _0xba1c31[_0xd9ad('0x5b')]['id'];}return db[_0xd9ad('0x42')][_0xd9ad('0x5a')]({'where':{'id':_0xba1c31[_0xd9ad('0x59')]['id']}})[_0xd9ad('0x26')](handleEntityNotFound(_0x41533d,null))[_0xd9ad('0x26')](saveUpdates(_0xba1c31[_0xd9ad('0x5b')],null))['then'](respondWithResult(_0x41533d,null))['catch'](handleError(_0x41533d,null));};exports[_0xd9ad('0x3a')]=function(_0x109887,_0xe860d){return db['MailMessage']['find']({'where':{'id':_0x109887[_0xd9ad('0x59')]['id']}})[_0xd9ad('0x26')](handleEntityNotFound(_0xe860d,null))['then'](removeEntity(_0xe860d,null))[_0xd9ad('0x30')](handleError(_0xe860d,null));};exports[_0xd9ad('0x5c')]=function(_0x3e02f7,_0x46351a){return db[_0xd9ad('0x42')][_0xd9ad('0x5c')]()['then'](respondWithResult(_0x46351a,null))[_0xd9ad('0x30')](handleError(_0x46351a,null));};exports[_0xd9ad('0x5d')]=function(_0x1f931c,_0x30d625){return db[_0xd9ad('0x42')][_0xd9ad('0x5d')](_0x1f931c['body'])[_0xd9ad('0x26')](function(_0x3851dc){if(_0x3851dc){if(_0x3851dc[_0xd9ad('0x5e')]===_0xd9ad('0x5f')&&!_0x3851dc['secret']){var _0x4b10c1,_0x71f4f1,_0x2a2870;if(_0x1f931c[_0xd9ad('0x5b')]['to']){_0x71f4f1=_0x1f931c[_0xd9ad('0x5b')]['to'][_0xd9ad('0x60')](',')[0x0];}return db[_0xd9ad('0x61')][_0xd9ad('0x62')]({'where':{'id':_0x3851dc['MailAccountId']},'include':[{'model':db[_0xd9ad('0x63')],'as':'List','include':[{'model':db[_0xd9ad('0x64')],'as':_0xd9ad('0x65'),'where':{'email':_0x71f4f1},'limit':0x1,'order':[[_0xd9ad('0x66'),_0xd9ad('0x67')]]}]},{'model':db[_0xd9ad('0x68')],'as':'Smtp','raw':!![]}]})[_0xd9ad('0x26')](function(_0x48d585){_0x4b10c1=_0x48d585;if(_0x4b10c1&&_0x4b10c1[_0xd9ad('0x69')]){var _0x48e2cc={'tls':{'rejectUnauthorized':![]}};if(_[_0xd9ad('0x6a')](_0x4b10c1[_0xd9ad('0x69')][_0xd9ad('0x6b')])){_0x48e2cc[_0xd9ad('0x6c')]=_0x4b10c1['Smtp'][_0xd9ad('0x6c')];_0x48e2cc[_0xd9ad('0x6d')]=_0x4b10c1[_0xd9ad('0x69')][_0xd9ad('0x6d')];_0x48e2cc[_0xd9ad('0x6e')]=_0x4b10c1[_0xd9ad('0x69')][_0xd9ad('0x6e')];if(_0x4b10c1['Smtp'][_0xd9ad('0x6f')]){_0x48e2cc[_0xd9ad('0x70')]={'user':_0x4b10c1[_0xd9ad('0x69')][_0xd9ad('0x71')],'pass':_0x4b10c1[_0xd9ad('0x69')][_0xd9ad('0x72')]};}}else{_0x48e2cc[_0xd9ad('0x6b')]=_0x4b10c1['Smtp']['service'];_0x48e2cc['auth']={'user':_0x4b10c1[_0xd9ad('0x69')]['user'],'pass':_0x4b10c1['Smtp'][_0xd9ad('0x72')]};_0x48e2cc[_0xd9ad('0x6e')]=_0x4b10c1[_0xd9ad('0x69')]['secure'];}if(_0x1f931c[_0xd9ad('0x5b')]['attachments']&&_0x1f931c[_0xd9ad('0x5b')][_0xd9ad('0x73')][_0xd9ad('0x74')]){for(var _0x423060=0x0;_0x423060<_0x1f931c[_0xd9ad('0x5b')][_0xd9ad('0x73')]['length'];_0x423060+=0x1){_0x1f931c[_0xd9ad('0x5b')][_0xd9ad('0x73')][_0x423060]={'filename':_0x1f931c[_0xd9ad('0x5b')][_0xd9ad('0x73')][_0x423060]['name'],'path':path['join'](config[_0xd9ad('0x75')],_0xd9ad('0x76'),_0x1f931c[_0xd9ad('0x5b')]['attachments'][_0x423060][_0xd9ad('0x77')])};}}_0x2a2870={'account':_0x48e2cc,'message':_0x1f931c[_0xd9ad('0x5b')]};return;}})[_0xd9ad('0x26')](function(){if(_0x4b10c1[_0xd9ad('0x78')]){if(_0x4b10c1[_0xd9ad('0x78')][_0xd9ad('0x65')][_0xd9ad('0x74')]){return _0x4b10c1[_0xd9ad('0x78')][_0xd9ad('0x65')][0x0];}else{return db['CmContact']['create'](_['defaults'](_0x1f931c[_0xd9ad('0x5b')],{'firstName':_0x1f931c['body']['to'],'email':_0x1f931c[_0xd9ad('0x5b')]['to'],'phone':_0x1f931c[_0xd9ad('0x5b')]['to'],'ListId':_0x4b10c1['ListId']}));}}else{throw new Error('List\x20not\x20found');}})[_0xd9ad('0x26')](function(){if(_0x2a2870){return respondWithRpcPromise(_0xd9ad('0x79'),_0xd9ad('0x7a'),_0x2a2870,client9003)[_0xd9ad('0x26')](function(_0x53b106){return _0x3851dc['update']({'read':!![],'messageId':_0x53b106[_0xd9ad('0x7b')],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});})[_0xd9ad('0x30')](function(_0x5e4fc4){logger[_0xd9ad('0x2c')]('%s',JSON[_0xd9ad('0x7c')](_0x5e4fc4));return _0x3851dc;});}return _0x3851dc;});}return _0x3851dc;}})[_0xd9ad('0x26')](respondWithResult(_0x30d625,0xc9))[_0xd9ad('0x30')](handleError(_0x30d625,null));};var interaction_log=require(_0xd9ad('0x17'))(_0xd9ad('0x7d'));exports[_0xd9ad('0x7e')]=function(_0xae9e1,_0x176d5d,_0x151847){var _0x31343c={'agent':{},'channel':_0xd9ad('0x7f')};if(_0xae9e1['body']['id']){delete _0xae9e1[_0xd9ad('0x5b')]['id'];}_0xae9e1[_0xd9ad('0x5b')][_0xd9ad('0x80')]=!![];_0xae9e1[_0xd9ad('0x5b')]['readAt']=moment()[_0xd9ad('0x81')]('YYYY-MM-DD\x20HH:mm:ss');_0xae9e1['body']['UserId']=_0xae9e1['body'][_0xd9ad('0x82')]||_0xae9e1[_0xd9ad('0x71')]['id'];_0x31343c[_0xd9ad('0x83')]['id']=_0xae9e1['body'][_0xd9ad('0x82')];return db[_0xd9ad('0x42')][_0xd9ad('0x5a')]({'where':{'id':_0xae9e1[_0xd9ad('0x59')]['id'],'UserId':null}})[_0xd9ad('0x26')](handleEntityNotFound(_0x176d5d,null))[_0xd9ad('0x26')](saveUpdates(_0xae9e1[_0xd9ad('0x5b')],null))[_0xd9ad('0x26')](function(_0x485639){if(_0x485639){_0x31343c[_0xd9ad('0x2e')]=_0x485639['get']({'plain':!![]});return db[_0xd9ad('0x84')][_0xd9ad('0x5a')]({'where':{'id':_0x485639['MailInteractionId']}});}return null;})[_0xd9ad('0x26')](handleEntityNotFound(_0x176d5d,null))['then'](function(_0xd46f2){if(_0xd46f2){return _0xd46f2[_0xd9ad('0x39')]({'UserId':_0xae9e1[_0xd9ad('0x5b')][_0xd9ad('0x82')],'read1stAt':_[_0xd9ad('0x6a')](_0xd46f2[_0xd9ad('0x85')])?moment()[_0xd9ad('0x81')](_0xd9ad('0x86')):undefined});}return null;})[_0xd9ad('0x26')](function(_0xa115c5){if(_0xa115c5){_0x31343c[_0xd9ad('0x87')]=_0xa115c5['get']({'plain':!![]});interaction_log[_0xd9ad('0x27')](_0xd9ad('0x88'),_0xae9e1[_0xd9ad('0x71')]['id'],_0xae9e1[_0xd9ad('0x71')][_0xd9ad('0x3f')],_0xae9e1[_0xd9ad('0x71')]['role'],_0x31343c[_0xd9ad('0x87')]['id'],_0xae9e1['body']?JSON['stringify'](_0xae9e1['body']):_0xd9ad('0x89'));return respondWithRpcPromise(_0xd9ad('0x8a'),_0xd9ad('0x8b'),_0x31343c);}return null;})[_0xd9ad('0x26')](function(_0x5e42f5){var _0x2326a2=_0xd9ad('0x8c')+_0x5e42f5[_0xd9ad('0x2e')][_0xd9ad('0x8d')];return db[_0xd9ad('0x8e')][_0xd9ad('0x47')](_0x2326a2,{'type':db['Sequelize'][_0xd9ad('0x8f')][_0xd9ad('0x90')],'raw':!![]})['then'](function(_0x556565){return _0x556565;});})[_0xd9ad('0x26')](function(_0xfc0616){if(_0xfc0616){_0x31343c[_0xd9ad('0x2e')]['contact']=_0xfc0616[0x0];if(!_0xae9e1['body']['UserId'])return;return db[_0xd9ad('0x91')][_0xd9ad('0x5a')]({'where':{'id':_0xae9e1['body']['UserId'],'role':_0xd9ad('0x83')},'attributes':['id',_0xd9ad('0x3f'),_0xd9ad('0x92'),_0xd9ad('0x93'),_0xd9ad('0x94')],'raw':!![]});}return null;})['then'](function(_0x38844e){if(!_0x38844e)return null;_0x31343c[_0xd9ad('0x2e')][_0xd9ad('0x83')]=_0x38844e;return _0x31343c;})['then'](function(_0x418b6f){if(_0x418b6f){if(_0xae9e1['body'][_0xd9ad('0x95')]){_0x31343c[_0xd9ad('0x2e')]['interface']=util[_0xd9ad('0x81')]('SIP/%s',_0xae9e1[_0xd9ad('0x71')][_0xd9ad('0x3f')]);_0x31343c[_0xd9ad('0x2e')][_0xd9ad('0x96')]=_0x31343c[_0xd9ad('0x96')];_0x31343c[_0xd9ad('0x2e')][_0xd9ad('0x97')]=_0xd9ad('0x7e');_0x31343c['message']['body']=htmlToText[_0xd9ad('0x98')](_0x31343c[_0xd9ad('0x2e')][_0xd9ad('0x5b')]);return respondWithRpcPromise(_0xd9ad('0x99'),'EventManager',{'event':_0xd9ad('0x9a'),'message':_0x31343c[_0xd9ad('0x2e')]},client9002)['then'](function(){return _0x31343c;});}return _0x31343c;}return null;})[_0xd9ad('0x26')](respondWithResult(_0x176d5d,null))[_0xd9ad('0x30')](handleError(_0x176d5d,null));};var interaction_log=require(_0xd9ad('0x17'))(_0xd9ad('0x7d'));exports['reject']=function(_0x516fa0,_0x356ff4,_0x225740){var _0xe7b287={'agent':{},'channel':_0xd9ad('0x7f')};if(_0x516fa0[_0xd9ad('0x5b')]['id']){delete _0x516fa0[_0xd9ad('0x5b')]['id'];}_0x516fa0[_0xd9ad('0x5b')][_0xd9ad('0x82')]=_0x516fa0[_0xd9ad('0x5b')]['UserId']||_0x516fa0['user']['id'];_0xe7b287[_0xd9ad('0x83')]['id']=_0x516fa0[_0xd9ad('0x5b')][_0xd9ad('0x82')];return db[_0xd9ad('0x42')]['find']({'where':{'id':_0x516fa0[_0xd9ad('0x59')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x356ff4,null))[_0xd9ad('0x26')](function(_0x47c2ec){if(_0x47c2ec){_0xe7b287[_0xd9ad('0x2e')]=_0x47c2ec[_0xd9ad('0x9b')]({'plain':!![]});return db[_0xd9ad('0x84')]['find']({'where':{'id':_0x47c2ec[_0xd9ad('0x9c')]}});}return null;})[_0xd9ad('0x26')](handleEntityNotFound(_0x356ff4,null))[_0xd9ad('0x26')](function(_0x223ec9){if(_0x223ec9){_0xe7b287[_0xd9ad('0x87')]=_0x223ec9[_0xd9ad('0x9b')]({'plain':!![]});interaction_log[_0xd9ad('0x27')](_0xd9ad('0x9d'),_0x516fa0[_0xd9ad('0x71')]['id'],_0x516fa0[_0xd9ad('0x71')][_0xd9ad('0x3f')],_0x516fa0[_0xd9ad('0x71')][_0xd9ad('0x9e')],_0xe7b287[_0xd9ad('0x87')]['id'],_0x516fa0[_0xd9ad('0x5b')]?JSON[_0xd9ad('0x7c')](_0x516fa0[_0xd9ad('0x5b')]):_0xd9ad('0x89'));return respondWithRpcPromise(_0xd9ad('0x9f'),_0xd9ad('0xa0'),_0xe7b287);}return null;})['then'](function(_0x42327f){var _0x1e02cf=_0xd9ad('0x8c')+_0x42327f[_0xd9ad('0x2e')][_0xd9ad('0x8d')];return db[_0xd9ad('0x8e')][_0xd9ad('0x47')](_0x1e02cf,{'type':db['Sequelize'][_0xd9ad('0x8f')][_0xd9ad('0x90')],'raw':!![]})['then'](function(_0x13c502){return _0x13c502;});})['then'](function(_0x138d17){if(_0x138d17){_0xe7b287[_0xd9ad('0x2e')][_0xd9ad('0xa1')]=_0x138d17[0x0];if(!_0x516fa0[_0xd9ad('0x5b')][_0xd9ad('0x82')])return;return db[_0xd9ad('0x91')][_0xd9ad('0x5a')]({'where':{'id':_0x516fa0[_0xd9ad('0x5b')][_0xd9ad('0x82')],'role':'agent'},'attributes':['id',_0xd9ad('0x3f'),_0xd9ad('0x92'),_0xd9ad('0x93'),_0xd9ad('0x94')],'raw':!![]});}return null;})[_0xd9ad('0x26')](function(_0x4e5c33){if(!_0x4e5c33)return null;_0xe7b287['message'][_0xd9ad('0x83')]=_0x4e5c33;return _0xe7b287;})['then'](function(_0x7258d8){if(_0x7258d8){_0x7258d8[_0xd9ad('0x2e')][_0xd9ad('0xa2')]=util[_0xd9ad('0x81')](_0xd9ad('0xa3'),_0x516fa0['user'][_0xd9ad('0x3f')]);_0x7258d8[_0xd9ad('0x2e')][_0xd9ad('0x96')]=_0xe7b287[_0xd9ad('0x96')];_0x7258d8[_0xd9ad('0x2e')][_0xd9ad('0x97')]=_0xd9ad('0x37');_0x7258d8[_0xd9ad('0x2e')][_0xd9ad('0x5b')]=htmlToText[_0xd9ad('0x98')](_0xe7b287[_0xd9ad('0x2e')][_0xd9ad('0x5b')]);respondWithRpcPromise(_0xd9ad('0x99'),_0xd9ad('0x99'),{'event':'rejectmessage','message':_0x7258d8[_0xd9ad('0x2e')]},client9002);return _0xe7b287;}return null;})[_0xd9ad('0x26')](respondWithResult(_0x356ff4,null))['catch'](handleError(_0x356ff4,null));};exports['download']=function(_0x38781a,_0x23ec87){var _0x105259=moment()[_0xd9ad('0xa4')]()[_0xd9ad('0xa5')]();var _0x1cc9fb=path[_0xd9ad('0xa6')](config[_0xd9ad('0x75')],_0xd9ad('0xa7'),_0xd9ad('0xa8'),_0xd9ad('0xa9'));var _0x44861f=path['join'](config[_0xd9ad('0x75')],'server','files',_0xd9ad('0x73'));var _0x701cb5=util[_0xd9ad('0x81')](_0xd9ad('0xaa'),_0x105259);return db[_0xd9ad('0x42')][_0xd9ad('0x5a')]({'where':{'id':_0x38781a['params']['id']},'attributes':['id','body',_0xd9ad('0xab'),'to','cc',_0xd9ad('0xac'),'subject',_0xd9ad('0xad')],'include':_0x38781a['query'][_0xd9ad('0x73')]?[{'model':db[_0xd9ad('0xae')],'as':_0xd9ad('0xaf')}]:undefined})['then'](handleEntityNotFound(_0x23ec87,null))[_0xd9ad('0x26')](function(_0x4c1898){if(_0x4c1898){var _0x342e9f=_0x4c1898;var _0x107f45={'from':_0x342e9f[_0xd9ad('0xab')],'to':_0x342e9f['to'],'subject':_0x342e9f[_0xd9ad('0xb0')],'html':_0x342e9f[_0xd9ad('0x5b')],'headers':{'Date':moment(_0x342e9f['createdAt'])[_0xd9ad('0x81')](_0xd9ad('0xb1'))},'attachments':[]};if(_0x4c1898['cc']){_0x107f45[_0xd9ad('0xb2')]['Cc']=_0x4c1898['cc'];}if(_0x4c1898[_0xd9ad('0xac')]){_0x107f45[_0xd9ad('0xb2')][_0xd9ad('0xb3')]=_0x4c1898['bcc'];}return new BPromise(function(_0x3822ed,_0x14fb89){if(_0x4c1898[_0xd9ad('0xaf')]){for(var _0x5ad64f=0x0;_0x5ad64f<_0x4c1898[_0xd9ad('0xaf')]['length'];_0x5ad64f++){var _0x4ff952=_0x4c1898[_0xd9ad('0xaf')][_0x5ad64f];var _0x43f6c2=path[_0xd9ad('0xa6')](_0x44861f,_0x4ff952[_0xd9ad('0x77')]);if(fs[_0xd9ad('0xb4')](_0x43f6c2)){_0x107f45[_0xd9ad('0x73')]['push']({'name':_0x4ff952[_0xd9ad('0x3f')],'contentType':_0x4ff952[_0xd9ad('0xb5')],'data':fs[_0xd9ad('0xb6')](_0x43f6c2)});}}}emlformat['build'](_0x107f45,function(_0x3b4609,_0x5f0ef4){if(_0x3b4609)return _0x14fb89(_0x3b4609);fs['writeFileSync'](path[_0xd9ad('0xa6')](_0x1cc9fb,_0x701cb5),_0x5f0ef4);return _0x3822ed(_0x5f0ef4);});});}})['then'](function(_0x5196e0){if(_0x5196e0){return _0x23ec87[_0xd9ad('0xb7')](path[_0xd9ad('0xa6')](_0x1cc9fb,_0x701cb5),_0x701cb5,function(_0x14f386){if(_0x14f386){console[_0xd9ad('0xb8')](_0xd9ad('0xb9'),_0x14f386);}else{fs[_0xd9ad('0xba')](path[_0xd9ad('0xa6')](_0x1cc9fb,_0x701cb5));}});}})[_0xd9ad('0x30')](handleError(_0x23ec87,null));};
\ No newline at end of file
+var _0x6d3c=['attributes','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','MailMessage','includeAll','findAll','rows','show','params','keys','include','find','body','describe','create','direction','findOne','MailAccountId','CmList','List','Contacts','updatedAt','DESC','MailServerOut','Smtp','host','port','secure','authentication','auth','user','pass','service','attachments','length','join','root','server/files/attachments','basename','CmContact','ListId','List\x20not\x20found','SendMail','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','UserId','agent','MailInteraction','MailInteractionId','interaction','get','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','email','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','User','interface','reject','fromString','rejectmessage','unix','toString','server','files','tmp','message-%s.eml','bcc','createdAt','Attachment','from','subject','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','Attachments','existsSync','push','readFileSync','unlinkSync','bluebird','util','ioredis','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','json','undefined','limit','count','offset','update','destroy','end','sendStatus','stack','name','send','rawAttributes','fieldName','type','model','map','query','filters','intersection','fields'];(function(_0x27fc81,_0x7e81c2){var _0x41fe0b=function(_0x539485){while(--_0x539485){_0x27fc81['push'](_0x27fc81['shift']());}};_0x41fe0b(++_0x7e81c2);}(_0x6d3c,0x109));var _0xc6d3=function(_0xf8ca1b,_0x2c7393){_0xf8ca1b=_0xf8ca1b-0x0;var _0x5c50ff=_0x6d3c[_0xf8ca1b];return _0x5c50ff;};'use strict';var emlformat=require('eml-format');var moment=require('moment');var BPromise=require(_0xc6d3('0x0'));var util=require(_0xc6d3('0x1'));var path=require('path');var fs=require('fs');var _=require('lodash');var Redis=require(_0xc6d3('0x2'));var htmlToText=require('html-to-text');var qs=require(_0xc6d3('0x3'));var logger=require(_0xc6d3('0x4'))(_0xc6d3('0x5'));var interaction_log=require(_0xc6d3('0x4'))(_0xc6d3('0x6'));var config=require(_0xc6d3('0x7'));var db=require(_0xc6d3('0x8'))['db'];config[_0xc6d3('0x9')]=_[_0xc6d3('0xa')](config[_0xc6d3('0x9')],{'host':_0xc6d3('0xb'),'port':0x18eb});var socket=require(_0xc6d3('0xc'))(new Redis(config['redis']));require(_0xc6d3('0xd'))[_0xc6d3('0xe')](socket);var jayson=require(_0xc6d3('0xf'));var client=jayson[_0xc6d3('0x10')][_0xc6d3('0x11')]({'port':0x232c});var client9003=jayson[_0xc6d3('0x10')][_0xc6d3('0x11')]({'port':0x232b});var client9002=jayson['client'][_0xc6d3('0x11')]({'port':0x232a});function respondWithRpcPromise(_0x10a5b6,_0x667f12,_0x5633a8,_0x8433f5){return new BPromise(function(_0x410208,_0x2eff9c){var _0x235ba2=_0x8433f5||client;return _0x235ba2['request'](_0x10a5b6,_0x5633a8)[_0xc6d3('0x12')](function(_0x39263f){logger[_0xc6d3('0x13')](_0xc6d3('0x14'),_0x667f12,_0xc6d3('0x15'));logger['debug'](_0xc6d3('0x16'),_0x667f12,_0xc6d3('0x15'),JSON[_0xc6d3('0x17')](_0x39263f));if(_0x39263f[_0xc6d3('0x18')]){if(_0x39263f[_0xc6d3('0x18')][_0xc6d3('0x19')]===0x1f4){logger[_0xc6d3('0x18')](_0xc6d3('0x14'),_0x667f12,_0x39263f[_0xc6d3('0x18')][_0xc6d3('0x1a')]);return _0x2eff9c(_0x39263f[_0xc6d3('0x18')][_0xc6d3('0x1a')]);}logger[_0xc6d3('0x18')]('MailMessage,\x20%s,\x20%s',_0x667f12,_0x39263f[_0xc6d3('0x18')][_0xc6d3('0x1a')]);return _0x410208(_0x39263f[_0xc6d3('0x18')]['message']);}else{logger[_0xc6d3('0x13')](_0xc6d3('0x14'),_0x667f12,_0xc6d3('0x15'));_0x410208(_0x39263f[_0xc6d3('0x1b')][_0xc6d3('0x1a')]);}})[_0xc6d3('0x1c')](function(_0x120654){logger['error'](_0xc6d3('0x14'),_0x667f12,_0x120654);_0x2eff9c(_0x120654);});});}function respondWithResult(_0x4cb2e6,_0x4f89db){_0x4f89db=_0x4f89db||0xc8;return function(_0x5a568a){if(_0x5a568a){return _0x4cb2e6[_0xc6d3('0x1d')](_0x4f89db)[_0xc6d3('0x1e')](_0x5a568a);}};}function respondWithFilteredResult(_0x44ba7b,_0x1b25e9){return function(_0x20123c){if(_0x20123c){var _0x52a2f4=typeof _0x1b25e9['offset']===_0xc6d3('0x1f')&&typeof _0x1b25e9[_0xc6d3('0x20')]==='undefined';var _0x185a5=_0x20123c[_0xc6d3('0x21')];var _0x3076fa=_0x52a2f4?0x0:_0x1b25e9[_0xc6d3('0x22')];var _0xd9bde1=_0x52a2f4?_0x20123c[_0xc6d3('0x21')]:_0x1b25e9[_0xc6d3('0x22')]+_0x1b25e9[_0xc6d3('0x20')];var _0xca7072;if(_0xd9bde1>=_0x185a5){_0xd9bde1=_0x185a5;_0xca7072=0xc8;}else{_0xca7072=0xce;}_0x44ba7b[_0xc6d3('0x1d')](_0xca7072);return _0x44ba7b['set']('Content-Range',_0x3076fa+'-'+_0xd9bde1+'/'+_0x185a5)[_0xc6d3('0x1e')](_0x20123c);}return null;};}function saveUpdates(_0x1135f5){return function(_0x25707b){if(_0x25707b){return _0x25707b[_0xc6d3('0x23')](_0x1135f5)[_0xc6d3('0x12')](function(_0x3fd1c1){return _0x3fd1c1;});}return null;};}function removeEntity(_0x5548ea){return function(_0x365d00){if(_0x365d00){return _0x365d00[_0xc6d3('0x24')]()[_0xc6d3('0x12')](function(){_0x5548ea[_0xc6d3('0x1d')](0xcc)[_0xc6d3('0x25')]();});}};}function handleEntityNotFound(_0x34cbec){return function(_0x10d5ab){if(!_0x10d5ab){_0x34cbec[_0xc6d3('0x26')](0x194);}return _0x10d5ab;};}function handleError(_0x2fcaa8,_0x2ced4f){_0x2ced4f=_0x2ced4f||0x1f4;return function(_0x551ecd){logger[_0xc6d3('0x18')](_0x551ecd[_0xc6d3('0x27')]);if(_0x551ecd[_0xc6d3('0x28')]){delete _0x551ecd[_0xc6d3('0x28')];}_0x2fcaa8[_0xc6d3('0x1d')](_0x2ced4f)[_0xc6d3('0x29')](_0x551ecd);};}exports['index']=function(_0x418fa6,_0x1ff918){var _0x49e23a={},_0xab81c6={},_0x2e14f7={'count':0x0,'rows':[]};var _0x1bb866=_['map'](db['MailMessage'][_0xc6d3('0x2a')],function(_0x169e66){return{'name':_0x169e66[_0xc6d3('0x2b')],'type':_0x169e66[_0xc6d3('0x2c')]['key']};});_0xab81c6[_0xc6d3('0x2d')]=_[_0xc6d3('0x2e')](_0x1bb866,_0xc6d3('0x28'));_0xab81c6['query']=_['keys'](_0x418fa6[_0xc6d3('0x2f')]);_0xab81c6[_0xc6d3('0x30')]=_[_0xc6d3('0x31')](_0xab81c6[_0xc6d3('0x2d')],_0xab81c6[_0xc6d3('0x2f')]);_0x49e23a['attributes']=_[_0xc6d3('0x31')](_0xab81c6[_0xc6d3('0x2d')],qs[_0xc6d3('0x32')](_0x418fa6[_0xc6d3('0x2f')]['fields']));_0x49e23a['attributes']=_0x49e23a[_0xc6d3('0x33')]['length']?_0x49e23a[_0xc6d3('0x33')]:_0xab81c6[_0xc6d3('0x2d')];if(!_0x418fa6['query'][_0xc6d3('0x34')]('nolimit')){_0x49e23a[_0xc6d3('0x20')]=qs['limit'](_0x418fa6[_0xc6d3('0x2f')]['limit']);_0x49e23a[_0xc6d3('0x22')]=qs[_0xc6d3('0x22')](_0x418fa6['query'][_0xc6d3('0x22')]);}_0x49e23a[_0xc6d3('0x35')]=qs[_0xc6d3('0x36')](_0x418fa6['query']['sort']);_0x49e23a[_0xc6d3('0x37')]=qs['filters'](_['pick'](_0x418fa6['query'],_0xab81c6['filters']),_0x1bb866);if(_0x418fa6[_0xc6d3('0x2f')]['filter']){_0x49e23a[_0xc6d3('0x37')]=_[_0xc6d3('0x38')](_0x49e23a[_0xc6d3('0x37')],{'$or':_[_0xc6d3('0x2e')](_0x1bb866,function(_0xd9d139){if(_0xd9d139['type']!==_0xc6d3('0x39')){var _0x408733={};_0x408733[_0xd9d139[_0xc6d3('0x28')]]={'$like':'%'+_0x418fa6[_0xc6d3('0x2f')][_0xc6d3('0x3a')]+'%'};return _0x408733;}})});}_0x49e23a=_[_0xc6d3('0x38')]({},_0x49e23a,_0x418fa6[_0xc6d3('0x3b')]);var _0x3e868c={'where':_0x49e23a['where']};return db[_0xc6d3('0x3c')]['count'](_0x3e868c)[_0xc6d3('0x12')](function(_0x3299bb){_0x2e14f7[_0xc6d3('0x21')]=_0x3299bb;if(_0x418fa6['query'][_0xc6d3('0x3d')]){_0x49e23a['include']=[{'all':!![]}];}return db[_0xc6d3('0x3c')][_0xc6d3('0x3e')](_0x49e23a);})[_0xc6d3('0x12')](function(_0x5d7345){_0x2e14f7[_0xc6d3('0x3f')]=_0x5d7345;return _0x2e14f7;})['then'](respondWithFilteredResult(_0x1ff918,_0x49e23a))[_0xc6d3('0x1c')](handleError(_0x1ff918,null));};exports[_0xc6d3('0x40')]=function(_0xe6c61,_0x29af39){var _0x110508={'raw':!![],'where':{'id':_0xe6c61[_0xc6d3('0x41')]['id']}},_0x5a1bb3={};_0x5a1bb3['model']=_[_0xc6d3('0x42')](db[_0xc6d3('0x3c')][_0xc6d3('0x2a')]);_0x5a1bb3[_0xc6d3('0x2f')]=_[_0xc6d3('0x42')](_0xe6c61[_0xc6d3('0x2f')]);_0x5a1bb3['filters']=_['intersection'](_0x5a1bb3[_0xc6d3('0x2d')],_0x5a1bb3['query']);_0x110508[_0xc6d3('0x33')]=_['intersection'](_0x5a1bb3['model'],qs['fields'](_0xe6c61['query'][_0xc6d3('0x32')]));_0x110508[_0xc6d3('0x33')]=_0x110508['attributes']['length']?_0x110508[_0xc6d3('0x33')]:_0x5a1bb3[_0xc6d3('0x2d')];if(_0xe6c61[_0xc6d3('0x2f')][_0xc6d3('0x3d')]){_0x110508[_0xc6d3('0x43')]=[{'all':!![]}];}_0x110508=_['merge']({},_0x110508,_0xe6c61['options']);return db[_0xc6d3('0x3c')][_0xc6d3('0x44')](_0x110508)['then'](handleEntityNotFound(_0x29af39,null))[_0xc6d3('0x12')](respondWithResult(_0x29af39,null))[_0xc6d3('0x1c')](handleError(_0x29af39,null));};exports['update']=function(_0x5d777b,_0x1b026d){if(_0x5d777b['body']['id']){delete _0x5d777b[_0xc6d3('0x45')]['id'];}return db[_0xc6d3('0x3c')][_0xc6d3('0x44')]({'where':{'id':_0x5d777b[_0xc6d3('0x41')]['id']}})[_0xc6d3('0x12')](handleEntityNotFound(_0x1b026d,null))[_0xc6d3('0x12')](saveUpdates(_0x5d777b[_0xc6d3('0x45')],null))[_0xc6d3('0x12')](respondWithResult(_0x1b026d,null))[_0xc6d3('0x1c')](handleError(_0x1b026d,null));};exports['destroy']=function(_0x227c19,_0x2d180b){return db[_0xc6d3('0x3c')][_0xc6d3('0x44')]({'where':{'id':_0x227c19[_0xc6d3('0x41')]['id']}})[_0xc6d3('0x12')](handleEntityNotFound(_0x2d180b,null))['then'](removeEntity(_0x2d180b,null))['catch'](handleError(_0x2d180b,null));};exports[_0xc6d3('0x46')]=function(_0x5daa32,_0x18ecf5){return db[_0xc6d3('0x3c')][_0xc6d3('0x46')]()[_0xc6d3('0x12')](respondWithResult(_0x18ecf5,null))[_0xc6d3('0x1c')](handleError(_0x18ecf5,null));};exports[_0xc6d3('0x47')]=function(_0x4352ee,_0x5ddc7e){return db[_0xc6d3('0x3c')]['create'](_0x4352ee[_0xc6d3('0x45')])[_0xc6d3('0x12')](function(_0x3c6844){if(_0x3c6844){if(_0x3c6844[_0xc6d3('0x48')]==='out'&&!_0x3c6844['secret']){var _0x1d9483,_0x4a8705,_0x2292e5;if(_0x4352ee[_0xc6d3('0x45')]['to']){_0x4a8705=_0x4352ee[_0xc6d3('0x45')]['to']['split'](',')[0x0];}return db['MailAccount'][_0xc6d3('0x49')]({'where':{'id':_0x3c6844[_0xc6d3('0x4a')]},'include':[{'model':db[_0xc6d3('0x4b')],'as':_0xc6d3('0x4c'),'include':[{'model':db['CmContact'],'as':_0xc6d3('0x4d'),'where':{'email':_0x4a8705},'limit':0x1,'order':[[_0xc6d3('0x4e'),_0xc6d3('0x4f')]]}]},{'model':db[_0xc6d3('0x50')],'as':_0xc6d3('0x51'),'raw':!![]}]})[_0xc6d3('0x12')](function(_0x5d655d){_0x1d9483=_0x5d655d;if(_0x1d9483&&_0x1d9483[_0xc6d3('0x51')]){var _0xd6112={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x1d9483[_0xc6d3('0x51')]['service'])){_0xd6112[_0xc6d3('0x52')]=_0x1d9483[_0xc6d3('0x51')][_0xc6d3('0x52')];_0xd6112[_0xc6d3('0x53')]=_0x1d9483[_0xc6d3('0x51')][_0xc6d3('0x53')];_0xd6112[_0xc6d3('0x54')]=_0x1d9483[_0xc6d3('0x51')][_0xc6d3('0x54')];if(_0x1d9483[_0xc6d3('0x51')][_0xc6d3('0x55')]){_0xd6112[_0xc6d3('0x56')]={'user':_0x1d9483[_0xc6d3('0x51')][_0xc6d3('0x57')],'pass':_0x1d9483[_0xc6d3('0x51')][_0xc6d3('0x58')]};}}else{_0xd6112[_0xc6d3('0x59')]=_0x1d9483[_0xc6d3('0x51')][_0xc6d3('0x59')];_0xd6112[_0xc6d3('0x56')]={'user':_0x1d9483[_0xc6d3('0x51')][_0xc6d3('0x57')],'pass':_0x1d9483['Smtp']['pass']};_0xd6112['secure']=_0x1d9483[_0xc6d3('0x51')][_0xc6d3('0x54')];}if(_0x4352ee[_0xc6d3('0x45')][_0xc6d3('0x5a')]&&_0x4352ee[_0xc6d3('0x45')][_0xc6d3('0x5a')][_0xc6d3('0x5b')]){for(var _0xfc2a89=0x0;_0xfc2a89<_0x4352ee[_0xc6d3('0x45')]['attachments'][_0xc6d3('0x5b')];_0xfc2a89+=0x1){_0x4352ee[_0xc6d3('0x45')]['attachments'][_0xfc2a89]={'filename':_0x4352ee[_0xc6d3('0x45')][_0xc6d3('0x5a')][_0xfc2a89][_0xc6d3('0x28')],'path':path[_0xc6d3('0x5c')](config[_0xc6d3('0x5d')],_0xc6d3('0x5e'),_0x4352ee['body'][_0xc6d3('0x5a')][_0xfc2a89][_0xc6d3('0x5f')])};}}_0x2292e5={'account':_0xd6112,'message':_0x4352ee['body']};return;}})[_0xc6d3('0x12')](function(){if(_0x1d9483[_0xc6d3('0x4c')]){if(_0x1d9483[_0xc6d3('0x4c')][_0xc6d3('0x4d')][_0xc6d3('0x5b')]){return _0x1d9483['List'][_0xc6d3('0x4d')][0x0];}else{return db[_0xc6d3('0x60')][_0xc6d3('0x47')](_[_0xc6d3('0xa')](_0x4352ee[_0xc6d3('0x45')],{'firstName':_0x4352ee['body']['to'],'email':_0x4352ee[_0xc6d3('0x45')]['to'],'phone':_0x4352ee[_0xc6d3('0x45')]['to'],'ListId':_0x1d9483[_0xc6d3('0x61')]}));}}else{throw new Error(_0xc6d3('0x62'));}})['then'](function(){if(_0x2292e5){return respondWithRpcPromise(_0xc6d3('0x63'),'sendMail',_0x2292e5,client9003)['then'](function(_0x5b6460){return _0x3c6844[_0xc6d3('0x23')]({'read':!![],'messageId':_0x5b6460['messageId'],'sentAt':moment()[_0xc6d3('0x64')](_0xc6d3('0x65'))});})[_0xc6d3('0x1c')](function(_0x219f45){logger[_0xc6d3('0x18')]('%s',JSON[_0xc6d3('0x17')](_0x219f45));return _0x3c6844;});}return _0x3c6844;});}return _0x3c6844;}})['then'](respondWithResult(_0x5ddc7e,0xc9))[_0xc6d3('0x1c')](handleError(_0x5ddc7e,null));};exports[_0xc6d3('0x66')]=function(_0x4ab12a,_0x51b054){var _0x38b947={'agent':{},'channel':_0xc6d3('0x67')};if(_0x4ab12a[_0xc6d3('0x45')]['id']){delete _0x4ab12a[_0xc6d3('0x45')]['id'];}_0x4ab12a[_0xc6d3('0x45')][_0xc6d3('0x68')]=!![];_0x4ab12a['body'][_0xc6d3('0x69')]=moment()[_0xc6d3('0x64')](_0xc6d3('0x65'));_0x4ab12a[_0xc6d3('0x45')][_0xc6d3('0x6a')]=_0x4ab12a[_0xc6d3('0x45')]['UserId']||_0x4ab12a[_0xc6d3('0x57')]['id'];_0x38b947[_0xc6d3('0x6b')]['id']=_0x4ab12a[_0xc6d3('0x45')][_0xc6d3('0x6a')];return db[_0xc6d3('0x3c')][_0xc6d3('0x44')]({'where':{'id':_0x4ab12a[_0xc6d3('0x41')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x51b054,null))['then'](saveUpdates(_0x4ab12a['body'],null))[_0xc6d3('0x12')](function(_0x402501){if(_0x402501){_0x38b947[_0xc6d3('0x1a')]=_0x402501['get']({'plain':!![]});return db[_0xc6d3('0x6c')]['find']({'where':{'id':_0x402501[_0xc6d3('0x6d')]}});}return null;})[_0xc6d3('0x12')](handleEntityNotFound(_0x51b054,null))[_0xc6d3('0x12')](function(_0x2306d4){if(_0x2306d4){return _0x2306d4[_0xc6d3('0x23')]({'UserId':_0x4ab12a[_0xc6d3('0x45')]['UserId'],'read1stAt':_['isNil'](_0x2306d4['read1stAt'])?moment()[_0xc6d3('0x64')](_0xc6d3('0x65')):undefined});}return null;})[_0xc6d3('0x12')](function(_0x3f6510){if(_0x3f6510){_0x38b947[_0xc6d3('0x6e')]=_0x3f6510[_0xc6d3('0x6f')]({'plain':!![]});interaction_log[_0xc6d3('0x13')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4ab12a['user']['id'],_0x4ab12a[_0xc6d3('0x57')][_0xc6d3('0x28')],_0x4ab12a['user'][_0xc6d3('0x70')],_0x38b947[_0xc6d3('0x6e')]['id'],_0x4ab12a[_0xc6d3('0x45')]?JSON[_0xc6d3('0x17')](_0x4ab12a[_0xc6d3('0x45')]):'null');return respondWithRpcPromise(_0xc6d3('0x71'),_0xc6d3('0x72'),_0x38b947);}return null;})['then'](function(_0x1f6e7d){var _0x131acb=_0xc6d3('0x73')+_0x1f6e7d[_0xc6d3('0x1a')][_0xc6d3('0x74')];return db['sequelize'][_0xc6d3('0x2f')](_0x131acb,{'type':db[_0xc6d3('0x75')][_0xc6d3('0x76')][_0xc6d3('0x77')],'raw':!![]})[_0xc6d3('0x12')](function(_0x139672){return _0x139672;});})[_0xc6d3('0x12')](function(_0x4a707a){if(_0x4a707a){_0x38b947[_0xc6d3('0x1a')][_0xc6d3('0x78')]=_0x4a707a[0x0];if(!_0x4ab12a[_0xc6d3('0x45')][_0xc6d3('0x6a')])return;return db['User'][_0xc6d3('0x44')]({'where':{'id':_0x4ab12a[_0xc6d3('0x45')][_0xc6d3('0x6a')],'role':'agent'},'attributes':['id',_0xc6d3('0x28'),'fullname',_0xc6d3('0x79'),_0xc6d3('0x7a')],'raw':!![]});}return null;})[_0xc6d3('0x12')](function(_0x161048){if(!_0x161048)return null;_0x38b947[_0xc6d3('0x1a')][_0xc6d3('0x6b')]=_0x161048;return _0x38b947;})[_0xc6d3('0x12')](function(_0x3896d9){if(_0x3896d9){if(_0x4ab12a[_0xc6d3('0x45')][_0xc6d3('0x7b')]){_0x38b947[_0xc6d3('0x1a')]['interface']=util['format'](_0xc6d3('0x7c'),_0x4ab12a['user'][_0xc6d3('0x28')]);_0x38b947[_0xc6d3('0x1a')][_0xc6d3('0x7d')]=_0x38b947['channel'];_0x38b947[_0xc6d3('0x1a')][_0xc6d3('0x7e')]=_0x38b947[_0xc6d3('0x7d')];_0x38b947[_0xc6d3('0x1a')][_0xc6d3('0x7f')]=_0xc6d3('0x66');_0x38b947[_0xc6d3('0x1a')]['body']=htmlToText['fromString'](_0x38b947[_0xc6d3('0x1a')][_0xc6d3('0x45')]);return respondWithRpcPromise(_0xc6d3('0x80'),_0xc6d3('0x80'),{'event':_0xc6d3('0x81'),'message':_0x38b947[_0xc6d3('0x1a')]},client9002)['then'](function(){return _0x38b947;});}return _0x38b947;}return null;})[_0xc6d3('0x12')](respondWithResult(_0x51b054,null))[_0xc6d3('0x1c')](handleError(_0x51b054,null));};exports['reject']=function(_0x1010f8,_0x28479d){var _0x59442c={'agent':{},'channel':'mail'};if(_0x1010f8[_0xc6d3('0x45')]['id']){delete _0x1010f8[_0xc6d3('0x45')]['id'];}_0x1010f8[_0xc6d3('0x45')][_0xc6d3('0x6a')]=_0x1010f8[_0xc6d3('0x45')]['UserId']||_0x1010f8[_0xc6d3('0x57')]['id'];_0x59442c[_0xc6d3('0x6b')]['id']=_0x1010f8['body'][_0xc6d3('0x6a')];return db[_0xc6d3('0x3c')][_0xc6d3('0x44')]({'where':{'id':_0x1010f8[_0xc6d3('0x41')]['id'],'UserId':null}})[_0xc6d3('0x12')](handleEntityNotFound(_0x28479d,null))['then'](function(_0x47393a){if(_0x47393a){_0x59442c[_0xc6d3('0x1a')]=_0x47393a[_0xc6d3('0x6f')]({'plain':!![]});return db[_0xc6d3('0x6c')][_0xc6d3('0x44')]({'where':{'id':_0x47393a[_0xc6d3('0x6d')]}});}return null;})['then'](handleEntityNotFound(_0x28479d,null))['then'](function(_0x2a1ac9){if(_0x2a1ac9){_0x59442c['interaction']=_0x2a1ac9[_0xc6d3('0x6f')]({'plain':!![]});interaction_log['info'](_0xc6d3('0x82'),_0x1010f8[_0xc6d3('0x57')]['id'],_0x1010f8[_0xc6d3('0x57')][_0xc6d3('0x28')],_0x1010f8[_0xc6d3('0x57')]['role'],_0x59442c[_0xc6d3('0x6e')]['id'],_0x1010f8[_0xc6d3('0x45')]?JSON['stringify'](_0x1010f8[_0xc6d3('0x45')]):_0xc6d3('0x83'));return respondWithRpcPromise(_0xc6d3('0x84'),_0xc6d3('0x85'),_0x59442c);}return null;})[_0xc6d3('0x12')](function(_0x43ab71){var _0x379306='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x43ab71[_0xc6d3('0x1a')][_0xc6d3('0x74')];return db['sequelize'][_0xc6d3('0x2f')](_0x379306,{'type':db[_0xc6d3('0x75')][_0xc6d3('0x76')][_0xc6d3('0x77')],'raw':!![]})[_0xc6d3('0x12')](function(_0x345b1a){return _0x345b1a;});})[_0xc6d3('0x12')](function(_0x284820){if(_0x284820){_0x59442c['message']['contact']=_0x284820[0x0];if(!_0x1010f8[_0xc6d3('0x45')][_0xc6d3('0x6a')])return;return db[_0xc6d3('0x86')]['find']({'where':{'id':_0x1010f8[_0xc6d3('0x45')][_0xc6d3('0x6a')],'role':_0xc6d3('0x6b')},'attributes':['id',_0xc6d3('0x28'),'fullname',_0xc6d3('0x79'),_0xc6d3('0x7a')],'raw':!![]});}return null;})[_0xc6d3('0x12')](function(_0x49c075){if(!_0x49c075)return null;_0x59442c[_0xc6d3('0x1a')][_0xc6d3('0x6b')]=_0x49c075;return _0x59442c;})['then'](function(_0x2ca1fa){if(_0x2ca1fa){_0x2ca1fa['message'][_0xc6d3('0x87')]=util['format'](_0xc6d3('0x7c'),_0x1010f8[_0xc6d3('0x57')][_0xc6d3('0x28')]);_0x2ca1fa['message'][_0xc6d3('0x7d')]=_0x59442c[_0xc6d3('0x7d')];_0x2ca1fa['message'][_0xc6d3('0x7e')]=_0x59442c[_0xc6d3('0x7d')];_0x2ca1fa[_0xc6d3('0x1a')][_0xc6d3('0x7f')]=_0xc6d3('0x88');_0x2ca1fa[_0xc6d3('0x1a')][_0xc6d3('0x45')]=htmlToText[_0xc6d3('0x89')](_0x59442c[_0xc6d3('0x1a')][_0xc6d3('0x45')]);respondWithRpcPromise(_0xc6d3('0x80'),_0xc6d3('0x80'),{'event':_0xc6d3('0x8a'),'message':_0x2ca1fa[_0xc6d3('0x1a')]},client9002);return _0x59442c;}return null;})[_0xc6d3('0x12')](respondWithResult(_0x28479d,null))['catch'](handleError(_0x28479d,null));};exports['download']=function(_0x2ddd7c,_0x4840e8){var _0x72dd90=moment()[_0xc6d3('0x8b')]()[_0xc6d3('0x8c')]();var _0x1494a1=path[_0xc6d3('0x5c')](config[_0xc6d3('0x5d')],_0xc6d3('0x8d'),_0xc6d3('0x8e'),_0xc6d3('0x8f'));var _0x3d97aa=path[_0xc6d3('0x5c')](config[_0xc6d3('0x5d')],'server',_0xc6d3('0x8e'),_0xc6d3('0x5a'));var _0x1dcc80=util[_0xc6d3('0x64')](_0xc6d3('0x90'),_0x72dd90);return db[_0xc6d3('0x3c')][_0xc6d3('0x44')]({'where':{'id':_0x2ddd7c[_0xc6d3('0x41')]['id']},'attributes':['id','body','from','to','cc',_0xc6d3('0x91'),'subject',_0xc6d3('0x92')],'include':_0x2ddd7c[_0xc6d3('0x2f')][_0xc6d3('0x5a')]?[{'model':db[_0xc6d3('0x93')],'as':'Attachments'}]:undefined})[_0xc6d3('0x12')](handleEntityNotFound(_0x4840e8,null))['then'](function(_0x1d8d02){if(_0x1d8d02){var _0x396ad9=_0x1d8d02;var _0x3b8d7c={'from':_0x396ad9[_0xc6d3('0x94')],'to':_0x396ad9['to'],'subject':_0x396ad9[_0xc6d3('0x95')],'html':_0x396ad9[_0xc6d3('0x45')],'headers':{'Date':moment(_0x396ad9[_0xc6d3('0x92')])[_0xc6d3('0x64')](_0xc6d3('0x96'))},'attachments':[]};if(_0x1d8d02['cc']){_0x3b8d7c[_0xc6d3('0x97')]['Cc']=_0x1d8d02['cc'];}if(_0x1d8d02[_0xc6d3('0x91')]){_0x3b8d7c[_0xc6d3('0x97')][_0xc6d3('0x98')]=_0x1d8d02['bcc'];}return new BPromise(function(_0x3fc867,_0x5bb716){if(_0x1d8d02[_0xc6d3('0x99')]){for(var _0x2f6ae8=0x0;_0x2f6ae8<_0x1d8d02[_0xc6d3('0x99')][_0xc6d3('0x5b')];_0x2f6ae8++){var _0x24a79e=_0x1d8d02[_0xc6d3('0x99')][_0x2f6ae8];var _0x1aab07=path['join'](_0x3d97aa,_0x24a79e['basename']);if(fs[_0xc6d3('0x9a')](_0x1aab07)){_0x3b8d7c[_0xc6d3('0x5a')][_0xc6d3('0x9b')]({'name':_0x24a79e[_0xc6d3('0x28')],'contentType':_0x24a79e['type'],'data':fs[_0xc6d3('0x9c')](_0x1aab07)});}}}emlformat['build'](_0x3b8d7c,function(_0x177524,_0x341a24){if(_0x177524)return _0x5bb716(_0x177524);fs['writeFileSync'](path[_0xc6d3('0x5c')](_0x1494a1,_0x1dcc80),_0x341a24);return _0x3fc867(_0x341a24);});});}})['then'](function(_0x12fdf1){if(_0x12fdf1){return _0x4840e8['download'](path[_0xc6d3('0x5c')](_0x1494a1,_0x1dcc80),_0x1dcc80,function(_0x4b40cc){if(!_0x4b40cc)fs[_0xc6d3('0x9d')](path[_0xc6d3('0x5c')](_0x1494a1,_0x1dcc80));});}})['catch'](handleError(_0x4840e8,null));};
\ No newline at end of file
index ca5d56d..08c2e3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77da=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x77da,0x1bb));var _0xa77d=function(_0x32646d,_0x27846b){_0x32646d=_0x32646d-0x0;var _0x318215=_0x77da[_0x32646d];return _0x318215;};'use strict';var EventEmitter=require(_0xa77d('0x0'));var MailMessage=require(_0xa77d('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xa77d('0x2')](0x0);var events={'afterCreate':_0xa77d('0x3'),'afterUpdate':_0xa77d('0x4'),'afterDestroy':_0xa77d('0x5')};function emitEvent(_0x480407){return function(_0x2eba88,_0x30f9e9,_0x8f03d5){MailMessageEvents[_0xa77d('0x6')](_0x480407+':'+_0x2eba88['id'],_0x2eba88);MailMessageEvents[_0xa77d('0x6')](_0x480407,_0x2eba88);_0x8f03d5(null);};}for(var e in events){if(events[_0xa77d('0x7')](e)){var event=events[e];MailMessage[_0xa77d('0x8')](e,emitEvent(event));}}module[_0xa77d('0x9')]=MailMessageEvents;
\ No newline at end of file
+var _0x13bf=['save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','MailMessage','setMaxListeners'];(function(_0x3ed901,_0x319368){var _0x20b08f=function(_0x255167){while(--_0x255167){_0x3ed901['push'](_0x3ed901['shift']());}};_0x20b08f(++_0x319368);}(_0x13bf,0xce));var _0xf13b=function(_0x66894c,_0x1d9ac4){_0x66894c=_0x66894c-0x0;var _0x27c28f=_0x13bf[_0x66894c];return _0x27c28f;};'use strict';var EventEmitter=require(_0xf13b('0x0'));var MailMessage=require(_0xf13b('0x1'))['db'][_0xf13b('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xf13b('0x3')](0x0);var events={'afterCreate':_0xf13b('0x4'),'afterUpdate':_0xf13b('0x5'),'afterDestroy':_0xf13b('0x6')};function emitEvent(_0x5ad103){return function(_0x34503b,_0x3d0ebb,_0x2ca7f3){MailMessageEvents['emit'](_0x5ad103+':'+_0x34503b['id'],_0x34503b);MailMessageEvents[_0xf13b('0x7')](_0x5ad103,_0x34503b);_0x2ca7f3(null);};}for(var e in events){if(events[_0xf13b('0x8')](e)){var event=events[e];MailMessage[_0xf13b('0x9')](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
index e8dc24c..3962b6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2fa=['isNil','UserId','MailInteractionId','then','update','createdAt','error','utf8mb4','lodash','util','api','moment','bluebird','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','fti_mail_messages','subject','FULLTEXT','body','get','toLowerCase','secret'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0xa2fa,0xc5));var _0xaa2f=function(_0x2142fa,_0x1e9945){_0x2142fa=_0x2142fa-0x0;var _0x350983=_0xa2fa[_0x2142fa];return _0x350983;};'use strict';var _=require(_0xaa2f('0x0'));var util=require(_0xaa2f('0x1'));var logger=require('../../config/logger')(_0xaa2f('0x2'));var moment=require(_0xaa2f('0x3'));var BPromise=require(_0xaa2f('0x4'));var rp=require('request-promise');var htmlToText=require('html-to-text');var fs=require('fs');var path=require('path');var rimraf=require(_0xaa2f('0x5'));var config=require(_0xaa2f('0x6'));var attributes=require(_0xaa2f('0x7'));module[_0xaa2f('0x8')]=function(_0x3ccccc,_0x361142){return _0x3ccccc[_0xaa2f('0x9')](_0xaa2f('0xa'),attributes,{'tableName':_0xaa2f('0xb'),'paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':_0xaa2f('0xc'),'fields':['plainBody',_0xaa2f('0xd')],'type':_0xaa2f('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1e1edc,_0x4a1854,_0x2aac72){if(_0x1e1edc[_0xaa2f('0xf')]){_0x1e1edc['plainBody']=htmlToText['fromString'](_0x1e1edc[_0xaa2f('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x2aac72(null,_0x4a1854);},'afterCreate':function(_0x145180,_0x1d6239,_0x4610d0){var _0x59603b=_0x3ccccc['models'];var _0x21517b=_0x145180[_0xaa2f('0x10')]({'plain':!![]});if(_0x21517b['direction'][_0xaa2f('0x11')]()==='in'||_0x21517b['direction'][_0xaa2f('0x11')]()==='out'&&!_0x21517b[_0xaa2f('0x12')]&&!_[_0xaa2f('0x13')](_0x21517b[_0xaa2f('0x14')])){_0x59603b['MailInteraction']['findOne']({'where':{'id':_0x21517b[_0xaa2f('0x15')]}})[_0xaa2f('0x16')](function(_0x4bba60){if(_0x4bba60){_0x4bba60[_0xaa2f('0x17')]({'lastMsgAt':_0x21517b[_0xaa2f('0x18')],'lastMsgDirection':_0x21517b['direction'][_0xaa2f('0x11')]()});}})['catch'](function(_0x56566e){console[_0xaa2f('0x19')](_0x56566e);});}_0x4610d0();}},'charset':_0xaa2f('0x1a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x55bd=['fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','models','get','direction','toLowerCase','secret','UserId','MailInteraction','findOne','then','update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x55bd,0x146));var _0xd55b=function(_0x25aca1,_0x5b976d){_0x25aca1=_0x25aca1-0x0;var _0xa9b87d=_0x55bd[_0x25aca1];return _0xa9b87d;};'use strict';var _=require(_0xd55b('0x0'));var util=require(_0xd55b('0x1'));var logger=require('../../config/logger')(_0xd55b('0x2'));var moment=require(_0xd55b('0x3'));var BPromise=require(_0xd55b('0x4'));var rp=require(_0xd55b('0x5'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0xd55b('0x6'));var rimraf=require(_0xd55b('0x7'));var config=require('../../config/environment');var attributes=require(_0xd55b('0x8'));module[_0xd55b('0x9')]=function(_0x1e40c1,_0x10062b){return _0x1e40c1[_0xd55b('0xa')](_0xd55b('0xb'),attributes,{'tableName':_0xd55b('0xc'),'paranoid':![],'indexes':[{'name':_0xd55b('0xd'),'fields':[_0xd55b('0xd')]},{'name':_0xd55b('0xe'),'fields':[_0xd55b('0xf'),_0xd55b('0x10')],'type':_0xd55b('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0xd71522,_0xbdefea,_0x346e04){if(_0xd71522[_0xd55b('0x12')]){_0xd71522[_0xd55b('0xf')]=htmlToText[_0xd55b('0x13')](_0xd71522[_0xd55b('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x346e04(null,_0xbdefea);},'afterCreate':function(_0x385138,_0x18ba98,_0x3a2dc1){var _0x375633=_0x1e40c1[_0xd55b('0x14')];var _0xb2eb8f=_0x385138[_0xd55b('0x15')]({'plain':!![]});if(_0xb2eb8f['direction']['toLowerCase']()==='in'||_0xb2eb8f[_0xd55b('0x16')][_0xd55b('0x17')]()==='out'&&!_0xb2eb8f[_0xd55b('0x18')]&&!_['isNil'](_0xb2eb8f[_0xd55b('0x19')])){_0x375633[_0xd55b('0x1a')][_0xd55b('0x1b')]({'where':{'id':_0xb2eb8f['MailInteractionId']}})[_0xd55b('0x1c')](function(_0x2cdb33){if(_0x2cdb33){_0x2cdb33[_0xd55b('0x1d')]({'lastMsgAt':_0xb2eb8f[_0xd55b('0x1e')],'lastMsgDirection':_0xb2eb8f[_0xd55b('0x16')][_0xd55b('0x17')]()});}})['catch'](function(_0x51c6e5){console[_0xd55b('0x1f')](_0x51c6e5);});}_0x3a2dc1();}},'charset':_0xd55b('0x20'),'collate':_0xd55b('0x21')});};
\ No newline at end of file
index 3450183..e7f3b57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd943=['CreateMailMessage','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','redis','localhost','./mailMessage.socket','register','request','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','MailMessage','options','raw'];(function(_0x305015,_0x132e80){var _0x4abf8e=function(_0x117d07){while(--_0x117d07){_0x305015['push'](_0x305015['shift']());}};_0x4abf8e(++_0x132e80);}(_0xd943,0x15d));var _0x3d94=function(_0xbcb550,_0x584a6c){_0xbcb550=_0xbcb550-0x0;var _0x132826=_0xd943[_0xbcb550];return _0x132826;};'use strict';var _=require(_0x3d94('0x0'));var util=require(_0x3d94('0x1'));var moment=require(_0x3d94('0x2'));var BPromise=require(_0x3d94('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3d94('0x4'));var db=require(_0x3d94('0x5'))['db'];var utils=require(_0x3d94('0x6'));var logger=require(_0x3d94('0x7'))(_0x3d94('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3d94('0x9')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x3d94('0xa')],{'host':_0x3d94('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3d94('0xc'))[_0x3d94('0xd')](socket);function respondWithRpcPromise(_0x1cc58c,_0x5908a7,_0x182066){return new BPromise(function(_0x4ac968,_0x39e2fa){return client[_0x3d94('0xe')](_0x1cc58c,_0x182066)['then'](function(_0x1897de){logger[_0x3d94('0xf')](_0x3d94('0x10'),_0x5908a7,_0x3d94('0x11'));logger[_0x3d94('0x12')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x5908a7,_0x3d94('0x11'),JSON[_0x3d94('0x13')](_0x1897de));if(_0x1897de[_0x3d94('0x14')]){if(_0x1897de['error'][_0x3d94('0x15')]===0x1f4){logger[_0x3d94('0x14')](_0x3d94('0x10'),_0x5908a7,_0x1897de['error'][_0x3d94('0x16')]);return _0x39e2fa(_0x1897de[_0x3d94('0x14')][_0x3d94('0x16')]);}logger[_0x3d94('0x14')](_0x3d94('0x10'),_0x5908a7,_0x1897de[_0x3d94('0x14')][_0x3d94('0x16')]);return _0x4ac968(_0x1897de[_0x3d94('0x14')]['message']);}else{logger[_0x3d94('0xf')](_0x3d94('0x10'),_0x5908a7,_0x3d94('0x11'));_0x4ac968(_0x1897de[_0x3d94('0x17')][_0x3d94('0x16')]);}})[_0x3d94('0x18')](function(_0xef8b3){logger['error'](_0x3d94('0x10'),_0x5908a7,_0xef8b3);_0x39e2fa(_0xef8b3);});});}exports['CreateMailMessage']=function(_0x28bead){var _0x193934=this;return new Promise(function(_0x16a6d0,_0x1e9ec2){return db[_0x3d94('0x19')]['create'](_0x28bead['body'],{'raw':_0x28bead[_0x3d94('0x1a')]?_0x28bead[_0x3d94('0x1a')][_0x3d94('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x30af25){logger[_0x3d94('0xf')](_0x3d94('0x1c'),_0x28bead);logger[_0x3d94('0x12')](_0x3d94('0x1c'),_0x28bead,JSON[_0x3d94('0x13')](_0x30af25));_0x16a6d0(_0x30af25);})[_0x3d94('0x18')](function(_0x27f978){logger[_0x3d94('0x14')](_0x3d94('0x1c'),_0x27f978[_0x3d94('0x16')],_0x28bead);_0x1e9ec2(_0x193934[_0x3d94('0x14')](0x1f4,_0x27f978[_0x3d94('0x16')]));});});};
\ No newline at end of file
+var _0x7916=['request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateMailMessage','MailMessage','body','options','raw','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','defaults','localhost','./mailMessage.socket','register'];(function(_0x55b24f,_0x380279){var _0xdb2af7=function(_0x5b4e61){while(--_0x5b4e61){_0x55b24f['push'](_0x55b24f['shift']());}};_0xdb2af7(++_0x380279);}(_0x7916,0x128));var _0x6791=function(_0x3352f1,_0x44f381){_0x3352f1=_0x3352f1-0x0;var _0x375811=_0x7916[_0x3352f1];return _0x375811;};'use strict';var _=require(_0x6791('0x0'));var util=require('util');var moment=require(_0x6791('0x1'));var BPromise=require(_0x6791('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6791('0x3'));var db=require(_0x6791('0x4'))['db'];var utils=require(_0x6791('0x5'));var logger=require(_0x6791('0x6'))('rpc');var config=require(_0x6791('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6791('0x8')][_0x6791('0x9')]({'port':0x232a});config['redis']=_[_0x6791('0xa')](config['redis'],{'host':_0x6791('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6791('0xc'))[_0x6791('0xd')](socket);function respondWithRpcPromise(_0x579950,_0xbc3bc6,_0x2769a4){return new BPromise(function(_0x2aeae9,_0x495d9c){return client[_0x6791('0xe')](_0x579950,_0x2769a4)[_0x6791('0xf')](function(_0x2025dd){logger[_0x6791('0x10')](_0x6791('0x11'),_0xbc3bc6,_0x6791('0x12'));logger[_0x6791('0x13')](_0x6791('0x14'),_0xbc3bc6,_0x6791('0x12'),JSON[_0x6791('0x15')](_0x2025dd));if(_0x2025dd[_0x6791('0x16')]){if(_0x2025dd['error']['code']===0x1f4){logger[_0x6791('0x16')]('MailMessage,\x20%s,\x20%s',_0xbc3bc6,_0x2025dd[_0x6791('0x16')]['message']);return _0x495d9c(_0x2025dd[_0x6791('0x16')][_0x6791('0x17')]);}logger['error'](_0x6791('0x11'),_0xbc3bc6,_0x2025dd['error'][_0x6791('0x17')]);return _0x2aeae9(_0x2025dd[_0x6791('0x16')]['message']);}else{logger[_0x6791('0x10')](_0x6791('0x11'),_0xbc3bc6,'request\x20sent');_0x2aeae9(_0x2025dd[_0x6791('0x18')]['message']);}})[_0x6791('0x19')](function(_0x126451){logger[_0x6791('0x16')](_0x6791('0x11'),_0xbc3bc6,_0x126451);_0x495d9c(_0x126451);});});}exports[_0x6791('0x1a')]=function(_0x2bc0ab){var _0x2ba11a=this;return new Promise(function(_0x581d51,_0x4a2922){return db[_0x6791('0x1b')]['create'](_0x2bc0ab[_0x6791('0x1c')],{'raw':_0x2bc0ab[_0x6791('0x1d')]?_0x2bc0ab['options'][_0x6791('0x1e')]===undefined?!![]:![]:!![]})[_0x6791('0xf')](function(_0x15b9ab){logger[_0x6791('0x10')]('CreateMailMessage',_0x2bc0ab);logger[_0x6791('0x13')](_0x6791('0x1a'),_0x2bc0ab,JSON['stringify'](_0x15b9ab));_0x581d51(_0x15b9ab);})['catch'](function(_0x4b23bc){logger[_0x6791('0x16')]('CreateMailMessage',_0x4b23bc[_0x6791('0x17')],_0x2bc0ab);_0x4a2922(_0x2ba11a['error'](0x1f4,_0x4b23bc['message']));});});};
\ No newline at end of file
index e8b9c51..66131ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5279=['./mailMessage.events','save','remove','update','removeListener','register','mailMessage:'];(function(_0x5f46e7,_0x62f9f8){var _0x567e95=function(_0x5cb693){while(--_0x5cb693){_0x5f46e7['push'](_0x5f46e7['shift']());}};_0x567e95(++_0x62f9f8);}(_0x5279,0xa1));var _0x9527=function(_0x1e4f2f,_0x35edfa){_0x1e4f2f=_0x1e4f2f-0x0;var _0xccea89=_0x5279[_0x1e4f2f];return _0xccea89;};'use strict';var MailMessageEvents=require(_0x9527('0x0'));var events=[_0x9527('0x1'),_0x9527('0x2'),_0x9527('0x3')];function createListener(_0x2ba0b6,_0x5971cc){return function(_0x4252ff){_0x5971cc['emit'](_0x2ba0b6,_0x4252ff);};}function removeListener(_0xcf35,_0x187ff2){return function(){MailMessageEvents[_0x9527('0x4')](_0xcf35,_0x187ff2);};}exports[_0x9527('0x5')]=function(_0x19bfa9){for(var _0xbaac4f=0x0,_0x2481cd=events['length'];_0xbaac4f<_0x2481cd;_0xbaac4f++){var _0x356097=events[_0xbaac4f];var _0x312358=createListener(_0x9527('0x6')+_0x356097,_0x19bfa9);MailMessageEvents['on'](_0x356097,_0x312358);}};
\ No newline at end of file
+var _0x2908=['save','remove','update','emit','removeListener','length','mailMessage:','./mailMessage.events'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x2908,0x1ef));var _0x8290=function(_0x1f2e21,_0x31bcbf){_0x1f2e21=_0x1f2e21-0x0;var _0x471265=_0x2908[_0x1f2e21];return _0x471265;};'use strict';var MailMessageEvents=require(_0x8290('0x0'));var events=[_0x8290('0x1'),_0x8290('0x2'),_0x8290('0x3')];function createListener(_0x144d6f,_0x4c1401){return function(_0x4afa4f){_0x4c1401[_0x8290('0x4')](_0x144d6f,_0x4afa4f);};}function removeListener(_0x502985,_0x2f3457){return function(){MailMessageEvents[_0x8290('0x5')](_0x502985,_0x2f3457);};}exports['register']=function(_0x38afc8){for(var _0x5574d0=0x0,_0x35cd63=events[_0x8290('0x6')];_0x5574d0<_0x35cd63;_0x5574d0++){var _0x5a2b80=events[_0x5574d0];var _0xdb344c=createListener(_0x8290('0x7')+_0x5a2b80,_0x38afc8);MailMessageEvents['on'](_0x5a2b80,_0xdb344c);}};
\ No newline at end of file
index cab7695..4ba504d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c1c=['../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','/:id','show','getMembers','/:id/users','getAgents','post','/:id/teams','addTeams','addAgents','put','update','delete','destroy','removeAgents','exports','util','path','express','fs-extra'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x3c1c,0x15a));var _0xc3c1=function(_0x158f01,_0x12af3e){_0x158f01=_0x158f01-0x0;var _0x5ef74e=_0x3c1c[_0x158f01];return _0x5ef74e;};'use strict';var multer=require('multer');var util=require(_0xc3c1('0x0'));var path=require(_0xc3c1('0x1'));var timeout=require('connect-timeout');var express=require(_0xc3c1('0x2'));var router=express['Router']();var fs_extra=require(_0xc3c1('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xc3c1('0x4'));var config=require(_0xc3c1('0x5'));var controller=require(_0xc3c1('0x6'));router[_0xc3c1('0x7')]('/',auth[_0xc3c1('0x8')](),controller[_0xc3c1('0x9')]);router[_0xc3c1('0x7')]('/describe',auth[_0xc3c1('0x8')](),controller['describe']);router['get'](_0xc3c1('0xa'),auth[_0xc3c1('0x8')](),controller[_0xc3c1('0xb')]);router[_0xc3c1('0x7')]('/:id/members',auth['isAuthenticated'](),controller[_0xc3c1('0xc')]);router['get']('/:id/teams',auth[_0xc3c1('0x8')](),controller['getTeams']);router['get'](_0xc3c1('0xd'),auth['isAuthenticated'](),controller[_0xc3c1('0xe')]);router[_0xc3c1('0xf')]('/',auth[_0xc3c1('0x8')](),controller['create']);router[_0xc3c1('0xf')](_0xc3c1('0x10'),auth[_0xc3c1('0x8')](),controller[_0xc3c1('0x11')]);router[_0xc3c1('0xf')](_0xc3c1('0xd'),auth[_0xc3c1('0x8')](),controller[_0xc3c1('0x12')]);router[_0xc3c1('0x13')](_0xc3c1('0xa'),auth[_0xc3c1('0x8')](),controller[_0xc3c1('0x14')]);router[_0xc3c1('0x15')](_0xc3c1('0xa'),auth['isAuthenticated'](),controller[_0xc3c1('0x16')]);router[_0xc3c1('0x15')](_0xc3c1('0x10'),auth[_0xc3c1('0x8')](),controller['removeTeams']);router['delete'](_0xc3c1('0xd'),auth[_0xc3c1('0x8')](),controller[_0xc3c1('0x17')]);module[_0xc3c1('0x18')]=router;
\ No newline at end of file
+var _0x1d85=['get','isAuthenticated','/describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','addAgents','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller'];(function(_0x16f894,_0x1a6200){var _0x28a717=function(_0x291850){while(--_0x291850){_0x16f894['push'](_0x16f894['shift']());}};_0x28a717(++_0x1a6200);}(_0x1d85,0x9e));var _0x51d8=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x1d85[_0x8c43de];return _0xa6591b;};'use strict';var multer=require(_0x51d8('0x0'));var util=require(_0x51d8('0x1'));var path=require(_0x51d8('0x2'));var timeout=require(_0x51d8('0x3'));var express=require(_0x51d8('0x4'));var router=express['Router']();var fs_extra=require(_0x51d8('0x5'));var auth=require(_0x51d8('0x6'));var interaction=require(_0x51d8('0x7'));var config=require(_0x51d8('0x8'));var controller=require(_0x51d8('0x9'));router[_0x51d8('0xa')]('/',auth[_0x51d8('0xb')](),controller['index']);router[_0x51d8('0xa')](_0x51d8('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x51d8('0xa')](_0x51d8('0xd'),auth[_0x51d8('0xb')](),controller[_0x51d8('0xe')]);router[_0x51d8('0xa')](_0x51d8('0xf'),auth[_0x51d8('0xb')](),controller[_0x51d8('0x10')]);router[_0x51d8('0xa')](_0x51d8('0x11'),auth[_0x51d8('0xb')](),controller[_0x51d8('0x12')]);router['get'](_0x51d8('0x13'),auth[_0x51d8('0xb')](),controller[_0x51d8('0x14')]);router['post']('/',auth[_0x51d8('0xb')](),controller[_0x51d8('0x15')]);router[_0x51d8('0x16')](_0x51d8('0x11'),auth[_0x51d8('0xb')](),controller[_0x51d8('0x17')]);router['post'](_0x51d8('0x13'),auth[_0x51d8('0xb')](),controller[_0x51d8('0x18')]);router['put'](_0x51d8('0xd'),auth[_0x51d8('0xb')](),controller[_0x51d8('0x19')]);router[_0x51d8('0x1a')](_0x51d8('0xd'),auth[_0x51d8('0xb')](),controller[_0x51d8('0x1b')]);router['delete'](_0x51d8('0x11'),auth['isAuthenticated'](),controller['removeTeams']);router[_0x51d8('0x1a')](_0x51d8('0x13'),auth[_0x51d8('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 2278ae7..563fd14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaf9=['name','INTEGER','rrmemory','beepall','roundrobin','sequelize','STRING'];(function(_0x4ea503,_0xde7a49){var _0x2d9b72=function(_0x173201){while(--_0x173201){_0x4ea503['push'](_0x4ea503['shift']());}};_0x2d9b72(++_0xde7a49);}(_0xdaf9,0x178));var _0x9daf=function(_0x28c90b,_0x480fdb){_0x28c90b=_0x28c90b-0x0;var _0x4983a8=_0xdaf9[_0x28c90b];return _0x4983a8;};'use strict';var Sequelize=require(_0x9daf('0x0'));module['exports']={'name':{'type':Sequelize[_0x9daf('0x1')],'unique':_0x9daf('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x9daf('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x9daf('0x4'),_0x9daf('0x5'),_0x9daf('0x6'))}};
\ No newline at end of file
+var _0x60dd=['exports','STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize'];(function(_0x13524d,_0x505b49){var _0x9918b4=function(_0xef1f0a){while(--_0xef1f0a){_0x13524d['push'](_0x13524d['shift']());}};_0x9918b4(++_0x505b49);}(_0x60dd,0x143));var _0xd60d=function(_0xb8e51d,_0xd974ee){_0xb8e51d=_0xb8e51d-0x0;var _0x4d3cfa=_0x60dd[_0xb8e51d];return _0x4d3cfa;};'use strict';var Sequelize=require(_0xd60d('0x0'));module[_0xd60d('0x1')]={'name':{'type':Sequelize[_0xd60d('0x2')],'unique':_0xd60d('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xd60d('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd60d('0x5')](_0xd60d('0x6'),_0xd60d('0x7'),_0xd60d('0x8'))}};
\ No newline at end of file
index b053039..c686e21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5884=['autoAssociation','params','describe','getMembers','findOne','UserMailQueue','hasOwnProperty','nolimit','order','MailQueueId','findAll','User','map','UserId','mailPause','updatedAt','createdAt','%s/%s','getTeams','Team','addTeams','ids','Agents','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','userMailQueue:save','removeTeams','select','field','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','compact','value','addAgents','omit','spread','emit','removeAgents','isArray','userMailQueue:remove','getAgents','eml-format','rimraf','request-promise','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','get','UserProfileResource','destroy','error','stack','name','send','MailQueue','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','sort','where','pick','filter','type','VIRTUAL','options','includeAll','include','rows','catch','show','merge','find','create','body','user','role'];(function(_0x31a5b1,_0x19a993){var _0x1b210a=function(_0x26bf5c){while(--_0x26bf5c){_0x31a5b1['push'](_0x31a5b1['shift']());}};_0x1b210a(++_0x19a993);}(_0x5884,0x144));var _0x4588=function(_0x2f86a4,_0x1b0a63){_0x2f86a4=_0x2f86a4-0x0;var _0x4ca225=_0x5884[_0x2f86a4];return _0x4ca225;};'use strict';var emlformat=require(_0x4588('0x0'));var rimraf=require(_0x4588('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4588('0x2'));var moment=require('moment');var BPromise=require(_0x4588('0x3'));var Mustache=require(_0x4588('0x4'));var util=require(_0x4588('0x5'));var path=require(_0x4588('0x6'));var sox=require('sox');var csv=require(_0x4588('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4588('0x8'));var squel=require(_0x4588('0x9'));var crypto=require(_0x4588('0xa'));var jsforce=require(_0x4588('0xb'));var deskjs=require(_0x4588('0xc'));var toCsv=require(_0x4588('0x7'));var querystring=require(_0x4588('0xd'));var Papa=require('papaparse');var Redis=require(_0x4588('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4588('0xf'));var hardwareService=require(_0x4588('0x10'));var logger=require(_0x4588('0x11'))(_0x4588('0x12'));var utils=require(_0x4588('0x13'));var config=require(_0x4588('0x14'));var licenseUtil=require(_0x4588('0x15'));var db=require(_0x4588('0x16'))['db'];config[_0x4588('0x17')]=_[_0x4588('0x18')](config[_0x4588('0x17')],{'host':_0x4588('0x19'),'port':0x18eb});var socket=require(_0x4588('0x1a'))(new Redis(config['redis']));require('./mailQueue.socket')[_0x4588('0x1b')](socket);function respondWithStatusCode(_0x41df3f,_0x293e4d){_0x293e4d=_0x293e4d||0xcc;return function(_0x47df0b){if(_0x47df0b){return _0x41df3f[_0x4588('0x1c')](_0x293e4d);}return _0x41df3f['status'](_0x293e4d)[_0x4588('0x1d')]();};}function respondWithResult(_0x5ee006,_0x34471e){_0x34471e=_0x34471e||0xc8;return function(_0x29559b){if(_0x29559b){return _0x5ee006[_0x4588('0x1e')](_0x34471e)[_0x4588('0x1f')](_0x29559b);}};}function respondWithFilteredResult(_0x189b14,_0x417091){return function(_0x352a4d){if(_0x352a4d){var _0x5b99ac=typeof _0x417091['offset']===_0x4588('0x20')&&typeof _0x417091[_0x4588('0x21')]===_0x4588('0x20');var _0x445460=_0x352a4d['count'];var _0x45d46e=_0x5b99ac?0x0:_0x417091['offset'];var _0x25e771=_0x5b99ac?_0x352a4d[_0x4588('0x22')]:_0x417091[_0x4588('0x23')]+_0x417091[_0x4588('0x21')];var _0x3b28eb;if(_0x25e771>=_0x445460){_0x25e771=_0x445460;_0x3b28eb=0xc8;}else{_0x3b28eb=0xce;}_0x189b14[_0x4588('0x1e')](_0x3b28eb);return _0x189b14[_0x4588('0x24')](_0x4588('0x25'),_0x45d46e+'-'+_0x25e771+'/'+_0x445460)[_0x4588('0x1f')](_0x352a4d);}return null;};}function patchUpdates(_0x5cae39){return function(_0x57f7f9){try{jsonpatch[_0x4588('0x26')](_0x57f7f9,_0x5cae39,!![]);}catch(_0x46fb5e){return BPromise['reject'](_0x46fb5e);}return _0x57f7f9['save']();};}function saveUpdates(_0x4cfede,_0x689993){return function(_0x2d853f){if(_0x2d853f){return _0x2d853f[_0x4588('0x27')](_0x4cfede)[_0x4588('0x28')](function(_0x8bb126){return _0x8bb126;});}return null;};}function removeEntity(_0x16e0d7,_0x4db688){return function(_0x3a94fe){if(_0x3a94fe){return _0x3a94fe['destroy']()[_0x4588('0x28')](function(){var _0xb2e3b9=_0x3a94fe[_0x4588('0x29')]({'plain':!![]});var _0x57a2ff='MailQueues';return db[_0x4588('0x2a')][_0x4588('0x2b')]({'where':{'type':_0x57a2ff,'resourceId':_0xb2e3b9['id']}})[_0x4588('0x28')](function(){return _0x3a94fe;});})[_0x4588('0x28')](function(){_0x16e0d7['status'](0xcc)[_0x4588('0x1d')]();});}};}function handleEntityNotFound(_0xa10b2e,_0x395f1a){return function(_0x44cc6c){if(!_0x44cc6c){_0xa10b2e['sendStatus'](0x194);}return _0x44cc6c;};}function handleError(_0x277b1f,_0x272edf){_0x272edf=_0x272edf||0x1f4;return function(_0x2b211c){logger[_0x4588('0x2c')](_0x2b211c[_0x4588('0x2d')]);if(_0x2b211c[_0x4588('0x2e')]){delete _0x2b211c[_0x4588('0x2e')];}_0x277b1f[_0x4588('0x1e')](_0x272edf)[_0x4588('0x2f')](_0x2b211c);};}exports['index']=function(_0x5a279d,_0x107862){var _0xeccd68={},_0x23e728={},_0x2f877e={'count':0x0,'rows':[]};var _0x1ca2ac=_['map'](db[_0x4588('0x30')][_0x4588('0x31')],function(_0x7aa16c){return{'name':_0x7aa16c[_0x4588('0x32')],'type':_0x7aa16c['type'][_0x4588('0x33')]};});_0x23e728[_0x4588('0x34')]=_['map'](_0x1ca2ac,'name');_0x23e728[_0x4588('0x35')]=_[_0x4588('0x36')](_0x5a279d['query']);_0x23e728[_0x4588('0x37')]=_['intersection'](_0x23e728['model'],_0x23e728['query']);_0xeccd68[_0x4588('0x38')]=_[_0x4588('0x39')](_0x23e728['model'],qs[_0x4588('0x3a')](_0x5a279d[_0x4588('0x35')][_0x4588('0x3a')]));_0xeccd68['attributes']=_0xeccd68[_0x4588('0x38')][_0x4588('0x3b')]?_0xeccd68[_0x4588('0x38')]:_0x23e728[_0x4588('0x34')];if(!_0x5a279d[_0x4588('0x35')]['hasOwnProperty']('nolimit')){_0xeccd68[_0x4588('0x21')]=qs[_0x4588('0x21')](_0x5a279d[_0x4588('0x35')][_0x4588('0x21')]);_0xeccd68[_0x4588('0x23')]=qs[_0x4588('0x23')](_0x5a279d[_0x4588('0x35')]['offset']);}_0xeccd68['order']=qs[_0x4588('0x3c')](_0x5a279d[_0x4588('0x35')][_0x4588('0x3c')]);_0xeccd68[_0x4588('0x3d')]=qs[_0x4588('0x37')](_[_0x4588('0x3e')](_0x5a279d[_0x4588('0x35')],_0x23e728[_0x4588('0x37')]),_0x1ca2ac);if(_0x5a279d[_0x4588('0x35')][_0x4588('0x3f')]){_0xeccd68['where']=_['merge'](_0xeccd68[_0x4588('0x3d')],{'$or':_['map'](_0x1ca2ac,function(_0x44b92f){if(_0x44b92f[_0x4588('0x40')]!==_0x4588('0x41')){var _0x6f571={};_0x6f571[_0x44b92f['name']]={'$like':'%'+_0x5a279d[_0x4588('0x35')]['filter']+'%'};return _0x6f571;}})});}_0xeccd68=_['merge']({},_0xeccd68,_0x5a279d[_0x4588('0x42')]);var _0x551c3c={'where':_0xeccd68['where']};return db[_0x4588('0x30')][_0x4588('0x22')](_0x551c3c)[_0x4588('0x28')](function(_0x5c71fd){_0x2f877e[_0x4588('0x22')]=_0x5c71fd;if(_0x5a279d['query'][_0x4588('0x43')]){_0xeccd68[_0x4588('0x44')]=[{'all':!![]}];}return db[_0x4588('0x30')]['findAll'](_0xeccd68);})[_0x4588('0x28')](function(_0x390050){_0x2f877e[_0x4588('0x45')]=_0x390050;return _0x2f877e;})[_0x4588('0x28')](respondWithFilteredResult(_0x107862,_0xeccd68))[_0x4588('0x46')](handleError(_0x107862,null));};exports[_0x4588('0x47')]=function(_0x325733,_0x4742b1){var _0xe51d6a={'raw':!![],'where':{'id':_0x325733['params']['id']}},_0x374ca7={};_0x374ca7[_0x4588('0x34')]=_['keys'](db[_0x4588('0x30')]['rawAttributes']);_0x374ca7[_0x4588('0x35')]=_[_0x4588('0x36')](_0x325733[_0x4588('0x35')]);_0x374ca7[_0x4588('0x37')]=_[_0x4588('0x39')](_0x374ca7[_0x4588('0x34')],_0x374ca7[_0x4588('0x35')]);_0xe51d6a[_0x4588('0x38')]=_[_0x4588('0x39')](_0x374ca7[_0x4588('0x34')],qs['fields'](_0x325733[_0x4588('0x35')]['fields']));_0xe51d6a[_0x4588('0x38')]=_0xe51d6a[_0x4588('0x38')]['length']?_0xe51d6a[_0x4588('0x38')]:_0x374ca7['model'];if(_0x325733['query'][_0x4588('0x43')]){_0xe51d6a[_0x4588('0x44')]=[{'all':!![]}];}_0xe51d6a=_[_0x4588('0x48')]({},_0xe51d6a,_0x325733[_0x4588('0x42')]);return db['MailQueue'][_0x4588('0x49')](_0xe51d6a)[_0x4588('0x28')](handleEntityNotFound(_0x4742b1,null))[_0x4588('0x28')](respondWithResult(_0x4742b1,null))['catch'](handleError(_0x4742b1,null));};exports[_0x4588('0x4a')]=function(_0x441adb,_0x47a98c){return db['MailQueue'][_0x4588('0x4a')](_0x441adb[_0x4588('0x4b')],{})['then'](function(_0x59fca3){var _0x4871e3=_0x441adb[_0x4588('0x4c')][_0x4588('0x29')]({'plain':!![]});if(!_0x4871e3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4871e3[_0x4588('0x4d')]==='user'){var _0x108de7=_0x59fca3[_0x4588('0x29')]({'plain':!![]});var _0x35c5fb='MailQueues';return db['UserProfileSection'][_0x4588('0x49')]({'where':{'name':_0x35c5fb,'userProfileId':_0x4871e3['userProfileId']},'raw':!![]})[_0x4588('0x28')](function(_0xc6aefc){if(_0xc6aefc&&_0xc6aefc[_0x4588('0x4e')]===0x0){return db['UserProfileResource'][_0x4588('0x4a')]({'name':_0x108de7[_0x4588('0x2e')],'resourceId':_0x108de7['id'],'type':_0xc6aefc[_0x4588('0x2e')],'sectionId':_0xc6aefc['id']},{})[_0x4588('0x28')](function(){return _0x59fca3;});}else{return _0x59fca3;}})[_0x4588('0x46')](function(_0x2e6d3e){logger[_0x4588('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e6d3e);throw _0x2e6d3e;});}return _0x59fca3;})['then'](respondWithResult(_0x47a98c,0xc9))['catch'](handleError(_0x47a98c,null));};exports[_0x4588('0x27')]=function(_0x206ff6,_0x510948){if(_0x206ff6['body']['id']){delete _0x206ff6[_0x4588('0x4b')]['id'];}return db[_0x4588('0x30')][_0x4588('0x49')]({'where':{'id':_0x206ff6[_0x4588('0x4f')]['id']}})[_0x4588('0x28')](handleEntityNotFound(_0x510948,null))[_0x4588('0x28')](saveUpdates(_0x206ff6[_0x4588('0x4b')],null))[_0x4588('0x28')](respondWithResult(_0x510948,null))[_0x4588('0x46')](handleError(_0x510948,null));};exports[_0x4588('0x2b')]=function(_0x594483,_0x91c813){return db[_0x4588('0x30')][_0x4588('0x49')]({'where':{'id':_0x594483[_0x4588('0x4f')]['id']}})[_0x4588('0x28')](handleEntityNotFound(_0x91c813,null))[_0x4588('0x28')](removeEntity(_0x91c813,null))[_0x4588('0x46')](handleError(_0x91c813,null));};exports[_0x4588('0x50')]=function(_0x2310b7,_0x299b45){return db[_0x4588('0x30')]['describe']()[_0x4588('0x28')](respondWithResult(_0x299b45,null))['catch'](handleError(_0x299b45,null));};exports[_0x4588('0x51')]=function(_0x2f31d0,_0x2b4ba9,_0x147390){var _0x3f220e={'raw':!![],'where':{}},_0x2d1ea3={},_0x18786f;return db[_0x4588('0x30')][_0x4588('0x52')]({'where':{'id':_0x2f31d0[_0x4588('0x4f')]['id']}})[_0x4588('0x28')](handleEntityNotFound(_0x2b4ba9,null))['then'](function(_0x192d4f){if(_0x192d4f){_0x18786f=_0x192d4f['get']({'plain':!![]});_0x2d1ea3['model']=_[_0x4588('0x36')](db[_0x4588('0x53')][_0x4588('0x31')]);_0x2d1ea3['query']=_[_0x4588('0x36')](_0x2f31d0['query']);_0x2d1ea3[_0x4588('0x37')]=_[_0x4588('0x39')](_0x2d1ea3[_0x4588('0x34')],_0x2d1ea3[_0x4588('0x35')]);_0x3f220e[_0x4588('0x38')]=_[_0x4588('0x39')](_0x2d1ea3[_0x4588('0x34')],qs[_0x4588('0x3a')](_0x2f31d0[_0x4588('0x35')][_0x4588('0x3a')]));_0x3f220e[_0x4588('0x38')]=_0x3f220e[_0x4588('0x38')][_0x4588('0x3b')]?_0x3f220e['attributes']:_0x2d1ea3[_0x4588('0x34')];if(!_0x2f31d0[_0x4588('0x35')][_0x4588('0x54')](_0x4588('0x55'))){_0x3f220e[_0x4588('0x21')]=qs['limit'](_0x2f31d0[_0x4588('0x35')][_0x4588('0x21')]);_0x3f220e[_0x4588('0x23')]=qs[_0x4588('0x23')](_0x2f31d0[_0x4588('0x35')][_0x4588('0x23')]);}_0x3f220e[_0x4588('0x56')]=qs[_0x4588('0x3c')](_0x2f31d0[_0x4588('0x35')]['sort']);_0x3f220e[_0x4588('0x3d')]=qs[_0x4588('0x37')](_[_0x4588('0x3e')](_0x2f31d0['query'],_0x2d1ea3[_0x4588('0x37')]));_0x3f220e[_0x4588('0x3d')][_0x4588('0x57')]=_0x192d4f['id'];if(_0x2f31d0[_0x4588('0x35')][_0x4588('0x3f')]){_0x3f220e[_0x4588('0x3d')]=_[_0x4588('0x48')](_0x3f220e['where'],{'$or':_['map'](_0x3f220e[_0x4588('0x38')],function(_0x48be14){var _0x36108c={};_0x36108c[_0x48be14]={'$like':'%'+_0x2f31d0['query'][_0x4588('0x3f')]+'%'};return _0x36108c;})});}_0x3f220e=_[_0x4588('0x48')]({},_0x3f220e,_0x2f31d0[_0x4588('0x42')]);return db[_0x4588('0x53')][_0x4588('0x58')](_0x3f220e);}})[_0x4588('0x28')](function(_0x509284){if(_0x509284){return db[_0x4588('0x59')]['findAndCountAll']({'where':{'id':_[_0x4588('0x5a')](_0x509284,_0x4588('0x5b')),'role':'agent'},'attributes':['id',_0x4588('0x2e'),_0x4588('0x5c'),_0x4588('0x5d'),_0x4588('0x5e')]});}})['then'](function(_0x735f44){if(_0x735f44){return{'count':_0x735f44[_0x4588('0x22')],'rows':_[_0x4588('0x5a')](_0x735f44[_0x4588('0x45')],function(_0xe92b1){return{'membername':_0xe92b1[_0x4588('0x2e')],'UserId':_0xe92b1['id'],'queue_name':_0x18786f[_0x4588('0x2e')],'MailQueueId':_0x18786f['id'],'interface':util['format'](_0x4588('0x5f'),'SIP',_0xe92b1['name']),'penalty':0x0,'paused':_0xe92b1['mailPause'],'createdAt':_0xe92b1[_0x4588('0x5e')],'updatedAt':_0xe92b1[_0x4588('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4588('0x28')](respondWithFilteredResult(_0x2b4ba9,_0x3f220e))['catch'](handleError(_0x2b4ba9,null));};exports[_0x4588('0x60')]=function(_0x2a1753,_0x15e583,_0x2d4bb8){var _0x5b4275={};var _0x2d30dd={};var _0x5c6709;var _0x5a4896;return db['MailQueue']['findOne']({'where':{'id':_0x2a1753['params']['id']}})[_0x4588('0x28')](handleEntityNotFound(_0x15e583,null))[_0x4588('0x28')](function(_0x1656ef){if(_0x1656ef){_0x5c6709=_0x1656ef;_0x2d30dd['model']=_[_0x4588('0x36')](db[_0x4588('0x61')][_0x4588('0x31')]);_0x2d30dd[_0x4588('0x35')]=_['keys'](_0x2a1753[_0x4588('0x35')]);_0x2d30dd[_0x4588('0x37')]=_['intersection'](_0x2d30dd[_0x4588('0x34')],_0x2d30dd[_0x4588('0x35')]);_0x5b4275[_0x4588('0x38')]=_['intersection'](_0x2d30dd[_0x4588('0x34')],qs[_0x4588('0x3a')](_0x2a1753['query']['fields']));_0x5b4275['attributes']=_0x5b4275[_0x4588('0x38')]['length']?_0x5b4275['attributes']:_0x2d30dd[_0x4588('0x34')];_0x5b4275[_0x4588('0x56')]=qs[_0x4588('0x3c')](_0x2a1753['query'][_0x4588('0x3c')]);_0x5b4275[_0x4588('0x3d')]=qs[_0x4588('0x37')](_[_0x4588('0x3e')](_0x2a1753['query'],_0x2d30dd['filters']));if(_0x2a1753[_0x4588('0x35')]['filter']){_0x5b4275['where']=_[_0x4588('0x48')](_0x5b4275['where'],{'$or':_[_0x4588('0x5a')](_0x5b4275[_0x4588('0x38')],function(_0x28f7b){var _0x581de1={};_0x581de1[_0x28f7b]={'$like':'%'+_0x2a1753['query']['filter']+'%'};return _0x581de1;})});}_0x5b4275=_[_0x4588('0x48')]({},_0x5b4275,_0x2a1753['options']);return _0x5c6709[_0x4588('0x60')](_0x5b4275);}})[_0x4588('0x28')](function(_0x36ed81){if(_0x36ed81){_0x5a4896=_0x36ed81[_0x4588('0x3b')];if(!_0x2a1753[_0x4588('0x35')][_0x4588('0x54')](_0x4588('0x55'))){_0x5b4275[_0x4588('0x21')]=qs[_0x4588('0x21')](_0x2a1753[_0x4588('0x35')][_0x4588('0x21')]);_0x5b4275['offset']=qs[_0x4588('0x23')](_0x2a1753[_0x4588('0x35')][_0x4588('0x23')]);}return _0x5c6709['getTeams'](_0x5b4275);}})[_0x4588('0x28')](function(_0x20e83a){if(_0x20e83a){return _0x20e83a?{'count':_0x5a4896,'rows':_0x20e83a}:null;}})[_0x4588('0x28')](respondWithResult(_0x15e583,null))[_0x4588('0x46')](handleError(_0x15e583,null));};exports[_0x4588('0x62')]=function(_0x37fdd9,_0x14aa51,_0xa666db){var _0x45c88f=_0x37fdd9[_0x4588('0x4b')][_0x4588('0x63')];return db[_0x4588('0x61')][_0x4588('0x58')]({'where':{'id':_0x45c88f},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4588('0x64'),'attributes':['id',_0x4588('0x2e'),'online',_0x4588('0x65'),'interface'],'raw':!![]}]})[_0x4588('0x28')](function(_0x3a076e){if(_0x3a076e){var _0x3b7d3d=_[_0x4588('0x66')](_0x3a076e,function(_0x329f02){var _0x3e5cf0=_0x329f02[_0x4588('0x29')]({'plain':!![]});return _0x3e5cf0[_0x4588('0x64')];});return db[_0x4588('0x30')][_0x4588('0x49')]({'where':{'id':_0x37fdd9['params']['id']}})[_0x4588('0x28')](function(_0xb0661c){return db[_0x4588('0x67')][_0x4588('0x68')](function(_0x3f19cd){return _0xb0661c[_0x4588('0x62')](_0x45c88f,{'transaction':_0x3f19cd})[_0x4588('0x28')](function(){return BPromise[_0x4588('0x69')](_0x3b7d3d,function(_0x274273){return db[_0x4588('0x53')][_0x4588('0x6a')]({'where':{'UserId':_0x274273['id'],'MailQueueId':_0x37fdd9['params']['id']},'transaction':_0x3f19cd});});})[_0x4588('0x28')](function(){_0x3b7d3d[_0x4588('0x6b')](function(_0x1679ee){socket['emit'](_0x4588('0x6c'),{'UserId':_0x1679ee['id'],'MailQueueId':_0xb0661c['id']});});});});});}})[_0x4588('0x28')](respondWithStatusCode(_0x14aa51,null))['catch'](handleError(_0x14aa51,null));};exports[_0x4588('0x6d')]=function(_0xa6e44,_0x1a98a1,_0xd0d200){return db[_0x4588('0x61')][_0x4588('0x58')]({'where':{'id':_0xa6e44[_0x4588('0x35')]['ids']},'attributes':['id'],'include':[{'model':db[_0x4588('0x59')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x4588('0x28')](handleEntityNotFound(_0x1a98a1,null))[_0x4588('0x28')](function(_0x4937b3){var _0x497166=_['map'](_0x4937b3,'id');var _0xa18127=[];var _0xba21e7=[];var _0x417aab=squel[_0x4588('0x6e')]();_0x417aab[_0x4588('0x6f')]('tq.TeamId')[_0x4588('0x70')]('team_has_mail_queues','tq')['join'](_0x4588('0x71'),'ut',_0x4588('0x72'))['where'](_0x4588('0x73'),_0xa6e44[_0x4588('0x4f')]['id']);for(var _0x2d618b=0x0;_0x2d618b<_0x4937b3[_0x4588('0x3b')];_0x2d618b+=0x1){let _0xccde4=_0x4937b3[_0x2d618b];for(var _0x5b4ead=0x0;_0x5b4ead<_0xccde4[_0x4588('0x64')]['length'];_0x5b4ead+=0x1){let _0x58349f=_0xccde4[_0x4588('0x64')][_0x5b4ead];var _0x57e2f4=_0x417aab['clone']();_0x57e2f4[_0x4588('0x3d')](_0x4588('0x74'),_0x58349f['id']);_0xba21e7[_0x4588('0x75')](db['sequelize'][_0x4588('0x35')](_0x57e2f4[_0x4588('0x76')](),{'type':db['sequelize'][_0x4588('0x77')][_0x4588('0x78')]})['then'](function(_0x55ad78){if(_0x55ad78[_0x4588('0x3b')]===0x1){return _0x58349f['id'];}else{var _0x39bec0=_[_0x4588('0x79')](_[_0x4588('0x5a')](_0x55ad78,_0x4588('0x7a')),function(_0x3bfc53){return _[_0x4588('0x7b')](_0x497166,_0x3bfc53);});if(_0x39bec0){return _0x58349f['id'];}}}));}}return BPromise['all'](_0xba21e7)['then'](function(_0x1391b9){_0xa18127=_(_0xa18127)['union'](_0x1391b9)[_0x4588('0x7c')]()[_0x4588('0x7d')]();return db[_0x4588('0x30')][_0x4588('0x49')]({'where':{'id':_0xa6e44[_0x4588('0x4f')]['id']}})[_0x4588('0x28')](function(_0x1e2e70){return db[_0x4588('0x67')][_0x4588('0x68')](function(_0x465527){return _0x1e2e70[_0x4588('0x6d')](_0xa6e44[_0x4588('0x35')][_0x4588('0x63')],{'transaction':_0x465527})[_0x4588('0x28')](function(){if(!_['isEmpty'](_0xa18127)){return _0x1e2e70['removeAgents'](_0xa18127,{'transaction':_0x465527});}})[_0x4588('0x28')](function(){_0xa18127[_0x4588('0x6b')](function(_0x6005ef){socket['emit']('userMailQueue:remove',{'UserId':_0x6005ef,'MailQueueId':_0x1e2e70['id']});});});});});});})['then'](respondWithStatusCode(_0x1a98a1,null))[_0x4588('0x46')](handleError(_0x1a98a1,null));};exports[_0x4588('0x7e')]=function(_0x335384,_0x1ad7b5,_0x3892fa){return db[_0x4588('0x30')]['find']({'where':{'id':_0x335384[_0x4588('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1ad7b5,null))[_0x4588('0x28')](function(_0x44faa2){if(_0x44faa2){return _0x44faa2[_0x4588('0x7e')](_0x335384['body']['ids'],_[_0x4588('0x7f')](_0x335384[_0x4588('0x4b')],[_0x4588('0x63'),'id'])||{})[_0x4588('0x80')](function(_0x3a353c){for(var _0x2bee32=0x0;_0x2bee32<_0x335384[_0x4588('0x4b')][_0x4588('0x63')][_0x4588('0x3b')];_0x2bee32+=0x1){socket[_0x4588('0x81')](_0x4588('0x6c'),{'UserId':Number(_0x335384[_0x4588('0x4b')][_0x4588('0x63')][_0x2bee32]),'MailQueueId':Number(_0x335384['params']['id'])});}return _0x3a353c;});}})[_0x4588('0x28')](respondWithResult(_0x1ad7b5,null))['catch'](handleError(_0x1ad7b5,null));};exports[_0x4588('0x82')]=function(_0x358354,_0x456356,_0x17c4b2){return db['MailQueue'][_0x4588('0x49')]({'where':{'id':_0x358354['params']['id']}})[_0x4588('0x28')](handleEntityNotFound(_0x456356,null))[_0x4588('0x28')](function(_0x1342bd){if(_0x1342bd){return _0x1342bd[_0x4588('0x82')](_0x358354['query'][_0x4588('0x63')])[_0x4588('0x28')](function(){if(_[_0x4588('0x83')](_0x358354[_0x4588('0x35')][_0x4588('0x63')])){for(var _0x5b43fa=0x0;_0x5b43fa<_0x358354[_0x4588('0x35')][_0x4588('0x63')][_0x4588('0x3b')];_0x5b43fa+=0x1){socket[_0x4588('0x81')](_0x4588('0x84'),{'UserId':Number(_0x358354[_0x4588('0x35')]['ids'][_0x5b43fa]),'MailQueueId':Number(_0x358354['params']['id'])});}}else{socket['emit']('userMailQueue:remove',{'UserId':Number(_0x358354[_0x4588('0x35')]['ids']),'MailQueueId':Number(_0x358354[_0x4588('0x4f')]['id'])});}});}})[_0x4588('0x28')](respondWithStatusCode(_0x456356,null))[_0x4588('0x46')](handleError(_0x456356,null));};exports[_0x4588('0x85')]=function(_0x3ba5d6,_0x5b8450,_0x2ca333){var _0x4d5db4={};var _0xa2ce02={};var _0x2dd726;var _0x568761;return db[_0x4588('0x30')][_0x4588('0x52')]({'where':{'id':_0x3ba5d6[_0x4588('0x4f')]['id']}})[_0x4588('0x28')](handleEntityNotFound(_0x5b8450,null))[_0x4588('0x28')](function(_0x2b9d77){if(_0x2b9d77){_0x2dd726=_0x2b9d77;_0xa2ce02[_0x4588('0x34')]=_[_0x4588('0x36')](db[_0x4588('0x59')][_0x4588('0x31')]);_0xa2ce02['query']=_['keys'](_0x3ba5d6[_0x4588('0x35')]);_0xa2ce02['filters']=_[_0x4588('0x39')](_0xa2ce02[_0x4588('0x34')],_0xa2ce02[_0x4588('0x35')]);_0x4d5db4[_0x4588('0x38')]=_[_0x4588('0x39')](_0xa2ce02[_0x4588('0x34')],qs[_0x4588('0x3a')](_0x3ba5d6['query'][_0x4588('0x3a')]));_0x4d5db4['attributes']=_0x4d5db4[_0x4588('0x38')][_0x4588('0x3b')]?_0x4d5db4[_0x4588('0x38')]:_0xa2ce02[_0x4588('0x34')];_0x4d5db4[_0x4588('0x56')]=qs[_0x4588('0x3c')](_0x3ba5d6[_0x4588('0x35')][_0x4588('0x3c')]);_0x4d5db4[_0x4588('0x3d')]=qs[_0x4588('0x37')](_[_0x4588('0x3e')](_0x3ba5d6[_0x4588('0x35')],_0xa2ce02[_0x4588('0x37')]));if(_0x3ba5d6[_0x4588('0x35')][_0x4588('0x3f')]){_0x4d5db4['where']=_[_0x4588('0x48')](_0x4d5db4[_0x4588('0x3d')],{'$or':_['map'](_0x4d5db4[_0x4588('0x38')],function(_0x5807a3){var _0x112bef={};_0x112bef[_0x5807a3]={'$like':'%'+_0x3ba5d6[_0x4588('0x35')]['filter']+'%'};return _0x112bef;})});}_0x4d5db4=_['merge']({},_0x4d5db4,_0x3ba5d6[_0x4588('0x42')]);return _0x2dd726[_0x4588('0x85')](_0x4d5db4);}})['then'](function(_0x1d9ace){if(_0x1d9ace){_0x568761=_0x1d9ace[_0x4588('0x3b')];if(!_0x3ba5d6['query']['hasOwnProperty'](_0x4588('0x55'))){_0x4d5db4['limit']=qs['limit'](_0x3ba5d6['query']['limit']);_0x4d5db4[_0x4588('0x23')]=qs['offset'](_0x3ba5d6[_0x4588('0x35')][_0x4588('0x23')]);}return _0x2dd726[_0x4588('0x85')](_0x4d5db4);}})['then'](function(_0xf108aa){if(_0xf108aa){return _0xf108aa?{'count':_0x568761,'rows':_0xf108aa}:null;}})[_0x4588('0x28')](respondWithResult(_0x5b8450,null))[_0x4588('0x46')](handleError(_0x5b8450,null));};
\ No newline at end of file
+var _0xe1ee=['create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserMailQueue','MailQueueId','options','findAll','findAndCountAll','UserId','agent','mailPause','updatedAt','SIP','createdAt','getTeams','addTeams','ids','Team','User','Agents','interface','flatMap','sequelize','transaction','each','findOrCreate','emit','userMailQueue:save','removeTeams','select','field','tq.TeamId','team_has_mail_queues','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','SELECT','every','TeamId','includes','all','union','isEmpty','forEach','userMailQueue:remove','addAgents','omit','spread','removeAgents','getAgents','findOne','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','MailQueues','UserProfileResource','error','stack','name','send','index','MailQueue','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','rows','catch','show','params','includeAll','find'];(function(_0x45fc6a,_0x166adb){var _0x14bcfd=function(_0x3ba718){while(--_0x3ba718){_0x45fc6a['push'](_0x45fc6a['shift']());}};_0x14bcfd(++_0x166adb);}(_0xe1ee,0x158));var _0xee1e=function(_0xc0cbf,_0x22f493){_0xc0cbf=_0xc0cbf-0x0;var _0x24a0ac=_0xe1ee[_0xc0cbf];return _0x24a0ac;};'use strict';var emlformat=require(_0xee1e('0x0'));var rimraf=require(_0xee1e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xee1e('0x2'));var rp=require(_0xee1e('0x3'));var moment=require('moment');var BPromise=require(_0xee1e('0x4'));var Mustache=require('mustache');var util=require(_0xee1e('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xee1e('0x6'));var ejs=require(_0xee1e('0x7'));var fs=require('fs');var fs_extra=require(_0xee1e('0x8'));var _=require(_0xee1e('0x9'));var squel=require('squel');var crypto=require(_0xee1e('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xee1e('0xb'));var Papa=require(_0xee1e('0xc'));var Redis=require(_0xee1e('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xee1e('0xe'));var hardwareService=require(_0xee1e('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0xee1e('0x10'));var config=require(_0xee1e('0x11'));var licenseUtil=require(_0xee1e('0x12'));var db=require(_0xee1e('0x13'))['db'];config[_0xee1e('0x14')]=_['defaults'](config[_0xee1e('0x14')],{'host':_0xee1e('0x15'),'port':0x18eb});var socket=require(_0xee1e('0x16'))(new Redis(config[_0xee1e('0x14')]));require(_0xee1e('0x17'))[_0xee1e('0x18')](socket);function respondWithStatusCode(_0x4f2bf7,_0x1ce0a1){_0x1ce0a1=_0x1ce0a1||0xcc;return function(_0x4aae90){if(_0x4aae90){return _0x4f2bf7[_0xee1e('0x19')](_0x1ce0a1);}return _0x4f2bf7['status'](_0x1ce0a1)[_0xee1e('0x1a')]();};}function respondWithResult(_0x506707,_0x1cf869){_0x1cf869=_0x1cf869||0xc8;return function(_0x258d80){if(_0x258d80){return _0x506707[_0xee1e('0x1b')](_0x1cf869)[_0xee1e('0x1c')](_0x258d80);}};}function respondWithFilteredResult(_0xfa6f13,_0x18c1f2){return function(_0xd6cb33){if(_0xd6cb33){var _0x518044=typeof _0x18c1f2[_0xee1e('0x1d')]===_0xee1e('0x1e')&&typeof _0x18c1f2[_0xee1e('0x1f')]===_0xee1e('0x1e');var _0x2934c5=_0xd6cb33[_0xee1e('0x20')];var _0x3b190b=_0x518044?0x0:_0x18c1f2['offset'];var _0x3de38e=_0x518044?_0xd6cb33[_0xee1e('0x20')]:_0x18c1f2['offset']+_0x18c1f2[_0xee1e('0x1f')];var _0x2080ef;if(_0x3de38e>=_0x2934c5){_0x3de38e=_0x2934c5;_0x2080ef=0xc8;}else{_0x2080ef=0xce;}_0xfa6f13['status'](_0x2080ef);return _0xfa6f13[_0xee1e('0x21')](_0xee1e('0x22'),_0x3b190b+'-'+_0x3de38e+'/'+_0x2934c5)[_0xee1e('0x1c')](_0xd6cb33);}return null;};}function patchUpdates(_0x178549){return function(_0x2cad73){try{jsonpatch[_0xee1e('0x23')](_0x2cad73,_0x178549,!![]);}catch(_0x4c2e00){return BPromise[_0xee1e('0x24')](_0x4c2e00);}return _0x2cad73[_0xee1e('0x25')]();};}function saveUpdates(_0x2d5921,_0x5c8d99){return function(_0x1887c7){if(_0x1887c7){return _0x1887c7[_0xee1e('0x26')](_0x2d5921)[_0xee1e('0x27')](function(_0x5697ab){return _0x5697ab;});}return null;};}function removeEntity(_0x575161,_0x461708){return function(_0xa53a1a){if(_0xa53a1a){return _0xa53a1a[_0xee1e('0x28')]()[_0xee1e('0x27')](function(){var _0x930a6c=_0xa53a1a[_0xee1e('0x29')]({'plain':!![]});var _0xc50b85=_0xee1e('0x2a');return db[_0xee1e('0x2b')][_0xee1e('0x28')]({'where':{'type':_0xc50b85,'resourceId':_0x930a6c['id']}})['then'](function(){return _0xa53a1a;});})[_0xee1e('0x27')](function(){_0x575161['status'](0xcc)[_0xee1e('0x1a')]();});}};}function handleEntityNotFound(_0x2ff884,_0x3e0408){return function(_0x4ed630){if(!_0x4ed630){_0x2ff884['sendStatus'](0x194);}return _0x4ed630;};}function handleError(_0x1ee4b3,_0x330a3f){_0x330a3f=_0x330a3f||0x1f4;return function(_0x58066d){logger[_0xee1e('0x2c')](_0x58066d[_0xee1e('0x2d')]);if(_0x58066d['name']){delete _0x58066d[_0xee1e('0x2e')];}_0x1ee4b3[_0xee1e('0x1b')](_0x330a3f)[_0xee1e('0x2f')](_0x58066d);};}exports[_0xee1e('0x30')]=function(_0x56a88b,_0x2ecc0e){var _0x332d10={},_0xd54a6d={},_0x44654f={'count':0x0,'rows':[]};var _0x382e86=_['map'](db[_0xee1e('0x31')][_0xee1e('0x32')],function(_0x1267ed){return{'name':_0x1267ed[_0xee1e('0x33')],'type':_0x1267ed[_0xee1e('0x34')][_0xee1e('0x35')]};});_0xd54a6d['model']=_[_0xee1e('0x36')](_0x382e86,_0xee1e('0x2e'));_0xd54a6d[_0xee1e('0x37')]=_[_0xee1e('0x38')](_0x56a88b['query']);_0xd54a6d[_0xee1e('0x39')]=_[_0xee1e('0x3a')](_0xd54a6d['model'],_0xd54a6d[_0xee1e('0x37')]);_0x332d10[_0xee1e('0x3b')]=_['intersection'](_0xd54a6d['model'],qs['fields'](_0x56a88b[_0xee1e('0x37')][_0xee1e('0x3c')]));_0x332d10['attributes']=_0x332d10[_0xee1e('0x3b')][_0xee1e('0x3d')]?_0x332d10['attributes']:_0xd54a6d[_0xee1e('0x3e')];if(!_0x56a88b['query'][_0xee1e('0x3f')](_0xee1e('0x40'))){_0x332d10[_0xee1e('0x1f')]=qs[_0xee1e('0x1f')](_0x56a88b[_0xee1e('0x37')][_0xee1e('0x1f')]);_0x332d10['offset']=qs[_0xee1e('0x1d')](_0x56a88b[_0xee1e('0x37')]['offset']);}_0x332d10[_0xee1e('0x41')]=qs[_0xee1e('0x42')](_0x56a88b[_0xee1e('0x37')]['sort']);_0x332d10[_0xee1e('0x43')]=qs[_0xee1e('0x39')](_[_0xee1e('0x44')](_0x56a88b['query'],_0xd54a6d['filters']),_0x382e86);if(_0x56a88b['query'][_0xee1e('0x45')]){_0x332d10[_0xee1e('0x43')]=_[_0xee1e('0x46')](_0x332d10[_0xee1e('0x43')],{'$or':_[_0xee1e('0x36')](_0x382e86,function(_0x790b07){if(_0x790b07[_0xee1e('0x34')]!==_0xee1e('0x47')){var _0x4a8461={};_0x4a8461[_0x790b07[_0xee1e('0x2e')]]={'$like':'%'+_0x56a88b['query'][_0xee1e('0x45')]+'%'};return _0x4a8461;}})});}_0x332d10=_[_0xee1e('0x46')]({},_0x332d10,_0x56a88b['options']);var _0x686b43={'where':_0x332d10[_0xee1e('0x43')]};return db[_0xee1e('0x31')][_0xee1e('0x20')](_0x686b43)[_0xee1e('0x27')](function(_0x411384){_0x44654f[_0xee1e('0x20')]=_0x411384;if(_0x56a88b['query']['includeAll']){_0x332d10[_0xee1e('0x48')]=[{'all':!![]}];}return db[_0xee1e('0x31')]['findAll'](_0x332d10);})[_0xee1e('0x27')](function(_0x2b4ced){_0x44654f[_0xee1e('0x49')]=_0x2b4ced;return _0x44654f;})[_0xee1e('0x27')](respondWithFilteredResult(_0x2ecc0e,_0x332d10))[_0xee1e('0x4a')](handleError(_0x2ecc0e,null));};exports[_0xee1e('0x4b')]=function(_0x247ed5,_0x394a66){var _0x4f4920={'raw':!![],'where':{'id':_0x247ed5[_0xee1e('0x4c')]['id']}},_0x4ba8bb={};_0x4ba8bb[_0xee1e('0x3e')]=_['keys'](db[_0xee1e('0x31')][_0xee1e('0x32')]);_0x4ba8bb[_0xee1e('0x37')]=_['keys'](_0x247ed5['query']);_0x4ba8bb[_0xee1e('0x39')]=_[_0xee1e('0x3a')](_0x4ba8bb[_0xee1e('0x3e')],_0x4ba8bb[_0xee1e('0x37')]);_0x4f4920[_0xee1e('0x3b')]=_['intersection'](_0x4ba8bb['model'],qs[_0xee1e('0x3c')](_0x247ed5[_0xee1e('0x37')][_0xee1e('0x3c')]));_0x4f4920[_0xee1e('0x3b')]=_0x4f4920[_0xee1e('0x3b')][_0xee1e('0x3d')]?_0x4f4920[_0xee1e('0x3b')]:_0x4ba8bb[_0xee1e('0x3e')];if(_0x247ed5[_0xee1e('0x37')][_0xee1e('0x4d')]){_0x4f4920[_0xee1e('0x48')]=[{'all':!![]}];}_0x4f4920=_[_0xee1e('0x46')]({},_0x4f4920,_0x247ed5['options']);return db[_0xee1e('0x31')][_0xee1e('0x4e')](_0x4f4920)[_0xee1e('0x27')](handleEntityNotFound(_0x394a66,null))[_0xee1e('0x27')](respondWithResult(_0x394a66,null))[_0xee1e('0x4a')](handleError(_0x394a66,null));};exports[_0xee1e('0x4f')]=function(_0x39638c,_0x22d411){return db[_0xee1e('0x31')][_0xee1e('0x4f')](_0x39638c[_0xee1e('0x50')],{})[_0xee1e('0x27')](function(_0x3533c5){var _0x89757d=_0x39638c['user'][_0xee1e('0x29')]({'plain':!![]});if(!_0x89757d)throw new Error(_0xee1e('0x51'));if(_0x89757d[_0xee1e('0x52')]===_0xee1e('0x53')){var _0x475487=_0x3533c5[_0xee1e('0x29')]({'plain':!![]});var _0x4abcff=_0xee1e('0x2a');return db[_0xee1e('0x54')][_0xee1e('0x4e')]({'where':{'name':_0x4abcff,'userProfileId':_0x89757d[_0xee1e('0x55')]},'raw':!![]})[_0xee1e('0x27')](function(_0x1fe0d9){if(_0x1fe0d9&&_0x1fe0d9[_0xee1e('0x56')]===0x0){return db['UserProfileResource'][_0xee1e('0x4f')]({'name':_0x475487['name'],'resourceId':_0x475487['id'],'type':_0x1fe0d9['name'],'sectionId':_0x1fe0d9['id']},{})[_0xee1e('0x27')](function(){return _0x3533c5;});}else{return _0x3533c5;}})['catch'](function(_0x256679){logger['error'](_0xee1e('0x57'),_0x256679);throw _0x256679;});}return _0x3533c5;})[_0xee1e('0x27')](respondWithResult(_0x22d411,0xc9))['catch'](handleError(_0x22d411,null));};exports[_0xee1e('0x26')]=function(_0x39e73f,_0x79f947){if(_0x39e73f[_0xee1e('0x50')]['id']){delete _0x39e73f[_0xee1e('0x50')]['id'];}return db[_0xee1e('0x31')][_0xee1e('0x4e')]({'where':{'id':_0x39e73f[_0xee1e('0x4c')]['id']}})[_0xee1e('0x27')](handleEntityNotFound(_0x79f947,null))[_0xee1e('0x27')](saveUpdates(_0x39e73f[_0xee1e('0x50')],null))[_0xee1e('0x27')](respondWithResult(_0x79f947,null))[_0xee1e('0x4a')](handleError(_0x79f947,null));};exports[_0xee1e('0x28')]=function(_0x5dae48,_0x4b82d5){return db[_0xee1e('0x31')][_0xee1e('0x4e')]({'where':{'id':_0x5dae48['params']['id']}})[_0xee1e('0x27')](handleEntityNotFound(_0x4b82d5,null))[_0xee1e('0x27')](removeEntity(_0x4b82d5,null))[_0xee1e('0x4a')](handleError(_0x4b82d5,null));};exports[_0xee1e('0x58')]=function(_0x1d4b77,_0x2075de){return db[_0xee1e('0x31')][_0xee1e('0x58')]()['then'](respondWithResult(_0x2075de,null))[_0xee1e('0x4a')](handleError(_0x2075de,null));};exports[_0xee1e('0x59')]=function(_0x1ca42f,_0x49e57d,_0x164fc3){var _0x58dfea={'raw':!![],'where':{}},_0x107575={},_0x117d2a;return db[_0xee1e('0x31')]['findOne']({'where':{'id':_0x1ca42f['params']['id']}})[_0xee1e('0x27')](handleEntityNotFound(_0x49e57d,null))[_0xee1e('0x27')](function(_0x19a9c9){if(_0x19a9c9){_0x117d2a=_0x19a9c9['get']({'plain':!![]});_0x107575[_0xee1e('0x3e')]=_[_0xee1e('0x38')](db[_0xee1e('0x5a')][_0xee1e('0x32')]);_0x107575[_0xee1e('0x37')]=_[_0xee1e('0x38')](_0x1ca42f['query']);_0x107575[_0xee1e('0x39')]=_[_0xee1e('0x3a')](_0x107575['model'],_0x107575[_0xee1e('0x37')]);_0x58dfea[_0xee1e('0x3b')]=_[_0xee1e('0x3a')](_0x107575[_0xee1e('0x3e')],qs[_0xee1e('0x3c')](_0x1ca42f[_0xee1e('0x37')][_0xee1e('0x3c')]));_0x58dfea[_0xee1e('0x3b')]=_0x58dfea[_0xee1e('0x3b')][_0xee1e('0x3d')]?_0x58dfea['attributes']:_0x107575[_0xee1e('0x3e')];if(!_0x1ca42f[_0xee1e('0x37')]['hasOwnProperty'](_0xee1e('0x40'))){_0x58dfea[_0xee1e('0x1f')]=qs[_0xee1e('0x1f')](_0x1ca42f['query'][_0xee1e('0x1f')]);_0x58dfea[_0xee1e('0x1d')]=qs[_0xee1e('0x1d')](_0x1ca42f['query'][_0xee1e('0x1d')]);}_0x58dfea[_0xee1e('0x41')]=qs['sort'](_0x1ca42f[_0xee1e('0x37')][_0xee1e('0x42')]);_0x58dfea['where']=qs[_0xee1e('0x39')](_[_0xee1e('0x44')](_0x1ca42f['query'],_0x107575[_0xee1e('0x39')]));_0x58dfea[_0xee1e('0x43')][_0xee1e('0x5b')]=_0x19a9c9['id'];if(_0x1ca42f['query'][_0xee1e('0x45')]){_0x58dfea[_0xee1e('0x43')]=_[_0xee1e('0x46')](_0x58dfea['where'],{'$or':_['map'](_0x58dfea[_0xee1e('0x3b')],function(_0x32310f){var _0x5d9dda={};_0x5d9dda[_0x32310f]={'$like':'%'+_0x1ca42f[_0xee1e('0x37')][_0xee1e('0x45')]+'%'};return _0x5d9dda;})});}_0x58dfea=_[_0xee1e('0x46')]({},_0x58dfea,_0x1ca42f[_0xee1e('0x5c')]);return db[_0xee1e('0x5a')][_0xee1e('0x5d')](_0x58dfea);}})[_0xee1e('0x27')](function(_0x59ad3e){if(_0x59ad3e){return db['User'][_0xee1e('0x5e')]({'where':{'id':_[_0xee1e('0x36')](_0x59ad3e,_0xee1e('0x5f')),'role':_0xee1e('0x60')},'attributes':['id',_0xee1e('0x2e'),_0xee1e('0x61'),_0xee1e('0x62'),'createdAt']});}})[_0xee1e('0x27')](function(_0x8aa9f4){if(_0x8aa9f4){return{'count':_0x8aa9f4[_0xee1e('0x20')],'rows':_[_0xee1e('0x36')](_0x8aa9f4[_0xee1e('0x49')],function(_0x21c0b5){return{'membername':_0x21c0b5['name'],'UserId':_0x21c0b5['id'],'queue_name':_0x117d2a[_0xee1e('0x2e')],'MailQueueId':_0x117d2a['id'],'interface':util['format']('%s/%s',_0xee1e('0x63'),_0x21c0b5['name']),'penalty':0x0,'paused':_0x21c0b5[_0xee1e('0x61')],'createdAt':_0x21c0b5[_0xee1e('0x64')],'updatedAt':_0x21c0b5[_0xee1e('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x49e57d,_0x58dfea))[_0xee1e('0x4a')](handleError(_0x49e57d,null));};exports[_0xee1e('0x65')]=function(_0x57c340,_0x564be0,_0x105b58){var _0x10ed29={};var _0x63ddb1={};var _0x1083e9;var _0x538e60;return db[_0xee1e('0x31')]['findOne']({'where':{'id':_0x57c340[_0xee1e('0x4c')]['id']}})[_0xee1e('0x27')](handleEntityNotFound(_0x564be0,null))[_0xee1e('0x27')](function(_0x4086ad){if(_0x4086ad){_0x1083e9=_0x4086ad;_0x63ddb1[_0xee1e('0x3e')]=_[_0xee1e('0x38')](db['Team'][_0xee1e('0x32')]);_0x63ddb1[_0xee1e('0x37')]=_[_0xee1e('0x38')](_0x57c340[_0xee1e('0x37')]);_0x63ddb1['filters']=_[_0xee1e('0x3a')](_0x63ddb1[_0xee1e('0x3e')],_0x63ddb1[_0xee1e('0x37')]);_0x10ed29[_0xee1e('0x3b')]=_[_0xee1e('0x3a')](_0x63ddb1[_0xee1e('0x3e')],qs['fields'](_0x57c340[_0xee1e('0x37')][_0xee1e('0x3c')]));_0x10ed29[_0xee1e('0x3b')]=_0x10ed29['attributes'][_0xee1e('0x3d')]?_0x10ed29[_0xee1e('0x3b')]:_0x63ddb1[_0xee1e('0x3e')];_0x10ed29[_0xee1e('0x41')]=qs[_0xee1e('0x42')](_0x57c340[_0xee1e('0x37')][_0xee1e('0x42')]);_0x10ed29[_0xee1e('0x43')]=qs[_0xee1e('0x39')](_['pick'](_0x57c340['query'],_0x63ddb1[_0xee1e('0x39')]));if(_0x57c340[_0xee1e('0x37')]['filter']){_0x10ed29[_0xee1e('0x43')]=_[_0xee1e('0x46')](_0x10ed29[_0xee1e('0x43')],{'$or':_[_0xee1e('0x36')](_0x10ed29[_0xee1e('0x3b')],function(_0x1b78ba){var _0x344d9d={};_0x344d9d[_0x1b78ba]={'$like':'%'+_0x57c340['query']['filter']+'%'};return _0x344d9d;})});}_0x10ed29=_[_0xee1e('0x46')]({},_0x10ed29,_0x57c340[_0xee1e('0x5c')]);return _0x1083e9[_0xee1e('0x65')](_0x10ed29);}})['then'](function(_0x416306){if(_0x416306){_0x538e60=_0x416306['length'];if(!_0x57c340['query'][_0xee1e('0x3f')](_0xee1e('0x40'))){_0x10ed29[_0xee1e('0x1f')]=qs[_0xee1e('0x1f')](_0x57c340[_0xee1e('0x37')][_0xee1e('0x1f')]);_0x10ed29[_0xee1e('0x1d')]=qs[_0xee1e('0x1d')](_0x57c340[_0xee1e('0x37')][_0xee1e('0x1d')]);}return _0x1083e9[_0xee1e('0x65')](_0x10ed29);}})[_0xee1e('0x27')](function(_0x4f4ed9){if(_0x4f4ed9){return _0x4f4ed9?{'count':_0x538e60,'rows':_0x4f4ed9}:null;}})[_0xee1e('0x27')](respondWithResult(_0x564be0,null))[_0xee1e('0x4a')](handleError(_0x564be0,null));};exports[_0xee1e('0x66')]=function(_0x1bc690,_0x562625,_0x58f6e4){var _0x54330a=_0x1bc690[_0xee1e('0x50')][_0xee1e('0x67')];return db[_0xee1e('0x68')][_0xee1e('0x5d')]({'where':{'id':_0x54330a},'attributes':['id'],'include':[{'model':db[_0xee1e('0x69')],'as':_0xee1e('0x6a'),'attributes':['id','name','online','voicePause',_0xee1e('0x6b')],'raw':!![]}]})[_0xee1e('0x27')](function(_0x3ca3b2){if(_0x3ca3b2){var _0x174794=_[_0xee1e('0x6c')](_0x3ca3b2,function(_0x5b766f){var _0x20851e=_0x5b766f['get']({'plain':!![]});return _0x20851e[_0xee1e('0x6a')];});return db[_0xee1e('0x31')][_0xee1e('0x4e')]({'where':{'id':_0x1bc690['params']['id']}})[_0xee1e('0x27')](function(_0x1f3c07){return db[_0xee1e('0x6d')][_0xee1e('0x6e')](function(_0x515ee9){return _0x1f3c07[_0xee1e('0x66')](_0x54330a,{'transaction':_0x515ee9})[_0xee1e('0x27')](function(){return BPromise[_0xee1e('0x6f')](_0x174794,function(_0xff413d){return db[_0xee1e('0x5a')][_0xee1e('0x70')]({'where':{'UserId':_0xff413d['id'],'MailQueueId':_0x1bc690[_0xee1e('0x4c')]['id']},'transaction':_0x515ee9});});})[_0xee1e('0x27')](function(){_0x174794['forEach'](function(_0x53b697){socket[_0xee1e('0x71')](_0xee1e('0x72'),{'UserId':_0x53b697['id'],'MailQueueId':_0x1f3c07['id']});});});});});}})[_0xee1e('0x27')](respondWithStatusCode(_0x562625,null))[_0xee1e('0x4a')](handleError(_0x562625,null));};exports[_0xee1e('0x73')]=function(_0x2f91e8,_0x371e27,_0x5d8a9b){return db[_0xee1e('0x68')]['findAll']({'where':{'id':_0x2f91e8['query'][_0xee1e('0x67')]},'attributes':['id'],'include':[{'model':db[_0xee1e('0x69')],'as':_0xee1e('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x371e27,null))[_0xee1e('0x27')](function(_0x1e75e2){var _0x88f175=_['map'](_0x1e75e2,'id');var _0x1500d6=[];var _0x25c160=[];var _0xdf3155=squel[_0xee1e('0x74')]();_0xdf3155[_0xee1e('0x75')](_0xee1e('0x76'))['from'](_0xee1e('0x77'),'tq')['join']('user_has_teams','ut',_0xee1e('0x78'))[_0xee1e('0x43')](_0xee1e('0x79'),_0x2f91e8[_0xee1e('0x4c')]['id']);for(var _0x2b0bec=0x0;_0x2b0bec<_0x1e75e2[_0xee1e('0x3d')];_0x2b0bec+=0x1){let _0x426dcb=_0x1e75e2[_0x2b0bec];for(var _0x46da2f=0x0;_0x46da2f<_0x426dcb[_0xee1e('0x6a')]['length'];_0x46da2f+=0x1){let _0x3b8894=_0x426dcb['Agents'][_0x46da2f];var _0x5db744=_0xdf3155[_0xee1e('0x7a')]();_0x5db744[_0xee1e('0x43')](_0xee1e('0x7b'),_0x3b8894['id']);_0x25c160[_0xee1e('0x7c')](db[_0xee1e('0x6d')]['query'](_0x5db744[_0xee1e('0x7d')](),{'type':db[_0xee1e('0x6d')]['QueryTypes'][_0xee1e('0x7e')]})[_0xee1e('0x27')](function(_0x5f487a){if(_0x5f487a[_0xee1e('0x3d')]===0x1){return _0x3b8894['id'];}else{var _0x9e055f=_[_0xee1e('0x7f')](_[_0xee1e('0x36')](_0x5f487a,_0xee1e('0x80')),function(_0x50a04f){return _[_0xee1e('0x81')](_0x88f175,_0x50a04f);});if(_0x9e055f){return _0x3b8894['id'];}}}));}}return BPromise[_0xee1e('0x82')](_0x25c160)['then'](function(_0x267e7d){_0x1500d6=_(_0x1500d6)[_0xee1e('0x83')](_0x267e7d)['compact']()['value']();return db[_0xee1e('0x31')][_0xee1e('0x4e')]({'where':{'id':_0x2f91e8[_0xee1e('0x4c')]['id']}})[_0xee1e('0x27')](function(_0x30f358){return db['sequelize'][_0xee1e('0x6e')](function(_0x49f900){return _0x30f358[_0xee1e('0x73')](_0x2f91e8[_0xee1e('0x37')][_0xee1e('0x67')],{'transaction':_0x49f900})['then'](function(){if(!_[_0xee1e('0x84')](_0x1500d6)){return _0x30f358['removeAgents'](_0x1500d6,{'transaction':_0x49f900});}})[_0xee1e('0x27')](function(){_0x1500d6[_0xee1e('0x85')](function(_0xaf80){socket[_0xee1e('0x71')](_0xee1e('0x86'),{'UserId':_0xaf80,'MailQueueId':_0x30f358['id']});});});});});});})[_0xee1e('0x27')](respondWithStatusCode(_0x371e27,null))[_0xee1e('0x4a')](handleError(_0x371e27,null));};exports[_0xee1e('0x87')]=function(_0x3416e5,_0x46863a,_0xfa9441){return db['MailQueue'][_0xee1e('0x4e')]({'where':{'id':_0x3416e5[_0xee1e('0x4c')]['id']}})[_0xee1e('0x27')](handleEntityNotFound(_0x46863a,null))[_0xee1e('0x27')](function(_0x564672){if(_0x564672){return _0x564672[_0xee1e('0x87')](_0x3416e5[_0xee1e('0x50')][_0xee1e('0x67')],_[_0xee1e('0x88')](_0x3416e5['body'],['ids','id'])||{})[_0xee1e('0x89')](function(_0x182e04){for(var _0x49c8e2=0x0;_0x49c8e2<_0x3416e5[_0xee1e('0x50')][_0xee1e('0x67')][_0xee1e('0x3d')];_0x49c8e2+=0x1){socket[_0xee1e('0x71')]('userMailQueue:save',{'UserId':Number(_0x3416e5['body'][_0xee1e('0x67')][_0x49c8e2]),'MailQueueId':Number(_0x3416e5[_0xee1e('0x4c')]['id'])});}return _0x182e04;});}})[_0xee1e('0x27')](respondWithResult(_0x46863a,null))['catch'](handleError(_0x46863a,null));};exports[_0xee1e('0x8a')]=function(_0x3e3543,_0x3829b2,_0x38e893){return db[_0xee1e('0x31')][_0xee1e('0x4e')]({'where':{'id':_0x3e3543[_0xee1e('0x4c')]['id']}})[_0xee1e('0x27')](handleEntityNotFound(_0x3829b2,null))[_0xee1e('0x27')](function(_0x513b1a){if(_0x513b1a){return _0x513b1a[_0xee1e('0x8a')](_0x3e3543['query'][_0xee1e('0x67')])[_0xee1e('0x27')](function(){if(_['isArray'](_0x3e3543[_0xee1e('0x37')][_0xee1e('0x67')])){for(var _0x4a5d4b=0x0;_0x4a5d4b<_0x3e3543[_0xee1e('0x37')][_0xee1e('0x67')][_0xee1e('0x3d')];_0x4a5d4b+=0x1){socket['emit']('userMailQueue:remove',{'UserId':Number(_0x3e3543[_0xee1e('0x37')][_0xee1e('0x67')][_0x4a5d4b]),'MailQueueId':Number(_0x3e3543[_0xee1e('0x4c')]['id'])});}}else{socket['emit'](_0xee1e('0x86'),{'UserId':Number(_0x3e3543[_0xee1e('0x37')][_0xee1e('0x67')]),'MailQueueId':Number(_0x3e3543[_0xee1e('0x4c')]['id'])});}});}})[_0xee1e('0x27')](respondWithStatusCode(_0x3829b2,null))[_0xee1e('0x4a')](handleError(_0x3829b2,null));};exports[_0xee1e('0x8b')]=function(_0x3c486c,_0x48273b,_0x60c857){var _0x47db1f={};var _0x5e5e7e={};var _0x2eb578;var _0x130076;return db[_0xee1e('0x31')][_0xee1e('0x8c')]({'where':{'id':_0x3c486c[_0xee1e('0x4c')]['id']}})[_0xee1e('0x27')](handleEntityNotFound(_0x48273b,null))[_0xee1e('0x27')](function(_0x2dba77){if(_0x2dba77){_0x2eb578=_0x2dba77;_0x5e5e7e[_0xee1e('0x3e')]=_[_0xee1e('0x38')](db[_0xee1e('0x69')][_0xee1e('0x32')]);_0x5e5e7e[_0xee1e('0x37')]=_[_0xee1e('0x38')](_0x3c486c[_0xee1e('0x37')]);_0x5e5e7e[_0xee1e('0x39')]=_[_0xee1e('0x3a')](_0x5e5e7e[_0xee1e('0x3e')],_0x5e5e7e[_0xee1e('0x37')]);_0x47db1f[_0xee1e('0x3b')]=_[_0xee1e('0x3a')](_0x5e5e7e[_0xee1e('0x3e')],qs[_0xee1e('0x3c')](_0x3c486c['query'][_0xee1e('0x3c')]));_0x47db1f[_0xee1e('0x3b')]=_0x47db1f[_0xee1e('0x3b')][_0xee1e('0x3d')]?_0x47db1f[_0xee1e('0x3b')]:_0x5e5e7e[_0xee1e('0x3e')];_0x47db1f[_0xee1e('0x41')]=qs[_0xee1e('0x42')](_0x3c486c['query'][_0xee1e('0x42')]);_0x47db1f['where']=qs[_0xee1e('0x39')](_[_0xee1e('0x44')](_0x3c486c['query'],_0x5e5e7e[_0xee1e('0x39')]));if(_0x3c486c['query'][_0xee1e('0x45')]){_0x47db1f[_0xee1e('0x43')]=_[_0xee1e('0x46')](_0x47db1f[_0xee1e('0x43')],{'$or':_[_0xee1e('0x36')](_0x47db1f[_0xee1e('0x3b')],function(_0x211477){var _0x2281ac={};_0x2281ac[_0x211477]={'$like':'%'+_0x3c486c[_0xee1e('0x37')][_0xee1e('0x45')]+'%'};return _0x2281ac;})});}_0x47db1f=_[_0xee1e('0x46')]({},_0x47db1f,_0x3c486c['options']);return _0x2eb578[_0xee1e('0x8b')](_0x47db1f);}})[_0xee1e('0x27')](function(_0x182486){if(_0x182486){_0x130076=_0x182486[_0xee1e('0x3d')];if(!_0x3c486c[_0xee1e('0x37')][_0xee1e('0x3f')](_0xee1e('0x40'))){_0x47db1f[_0xee1e('0x1f')]=qs[_0xee1e('0x1f')](_0x3c486c[_0xee1e('0x37')][_0xee1e('0x1f')]);_0x47db1f[_0xee1e('0x1d')]=qs['offset'](_0x3c486c['query'][_0xee1e('0x1d')]);}return _0x2eb578['getAgents'](_0x47db1f);}})[_0xee1e('0x27')](function(_0x196630){if(_0x196630){return _0x196630?{'count':_0x130076,'rows':_0x196630}:null;}})[_0xee1e('0x27')](respondWithResult(_0x48273b,null))[_0xee1e('0x4a')](handleError(_0x48273b,null));};
\ No newline at end of file
index 99d4f4c..26afe8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9ab=['hook','exports','events','../../mysqldb','MailQueue','setMaxListeners','save','update','remove','hasOwnProperty'];(function(_0x4001ad,_0x1e22dd){var _0x4c7ec2=function(_0x24cb8a){while(--_0x24cb8a){_0x4001ad['push'](_0x4001ad['shift']());}};_0x4c7ec2(++_0x1e22dd);}(_0xd9ab,0x12e));var _0xbd9a=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xd9ab[_0x465028];return _0xb783d4;};'use strict';var EventEmitter=require(_0xbd9a('0x0'));var MailQueue=require(_0xbd9a('0x1'))['db'][_0xbd9a('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xbd9a('0x3')](0x0);var events={'afterCreate':_0xbd9a('0x4'),'afterUpdate':_0xbd9a('0x5'),'afterDestroy':_0xbd9a('0x6')};function emitEvent(_0x444ff5){return function(_0x1dc216,_0x11f843,_0x5dce8b){MailQueueEvents['emit'](_0x444ff5+':'+_0x1dc216['id'],_0x1dc216);MailQueueEvents['emit'](_0x444ff5,_0x1dc216);_0x5dce8b(null);};}for(var e in events){if(events[_0xbd9a('0x7')](e)){var event=events[e];MailQueue[_0xbd9a('0x8')](e,emitEvent(event));}}module[_0xbd9a('0x9')]=MailQueueEvents;
\ No newline at end of file
+var _0x82fa=['../../mysqldb','save','remove','emit','hook','exports','events'];(function(_0x229c4a,_0x46ea16){var _0x5af4f1=function(_0x29a899){while(--_0x29a899){_0x229c4a['push'](_0x229c4a['shift']());}};_0x5af4f1(++_0x46ea16);}(_0x82fa,0x180));var _0xa82f=function(_0x5636c6,_0x4962cf){_0x5636c6=_0x5636c6-0x0;var _0x2382ff=_0x82fa[_0x5636c6];return _0x2382ff;};'use strict';var EventEmitter=require(_0xa82f('0x0'));var MailQueue=require(_0xa82f('0x1'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa82f('0x2'),'afterUpdate':'update','afterDestroy':_0xa82f('0x3')};function emitEvent(_0x56f11e){return function(_0xce4c8b,_0x6b77bd,_0x2ca1fb){MailQueueEvents[_0xa82f('0x4')](_0x56f11e+':'+_0xce4c8b['id'],_0xce4c8b);MailQueueEvents[_0xa82f('0x4')](_0x56f11e,_0xce4c8b);_0x2ca1fb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0xa82f('0x5')](e,emitEvent(event));}}module[_0xa82f('0x6')]=MailQueueEvents;
\ No newline at end of file
index 367e14d..e82a1f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ce=['mail_queues','lodash','util','../../config/logger','moment','bluebird','path','../../config/environment','./mailQueue.attributes','exports','define'];(function(_0x4eb45f,_0x52875c){var _0x466297=function(_0x4f314){while(--_0x4f314){_0x4eb45f['push'](_0x4eb45f['shift']());}};_0x466297(++_0x52875c);}(_0xf8ce,0x85));var _0xef8c=function(_0x4024e7,_0xef7fb2){_0x4024e7=_0x4024e7-0x0;var _0x47352c=_0xf8ce[_0x4024e7];return _0x47352c;};'use strict';var _=require(_0xef8c('0x0'));var util=require(_0xef8c('0x1'));var logger=require(_0xef8c('0x2'))('api');var moment=require(_0xef8c('0x3'));var BPromise=require(_0xef8c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xef8c('0x5'));var rimraf=require('rimraf');var config=require(_0xef8c('0x6'));var attributes=require(_0xef8c('0x7'));module[_0xef8c('0x8')]=function(_0x58368d,_0x39baea){return _0x58368d[_0xef8c('0x9')]('MailQueue',attributes,{'tableName':_0xef8c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2339=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./mailQueue.attributes','define','MailQueue','mail_queues','lodash','util'];(function(_0x6d7aad,_0x380beb){var _0x11f83f=function(_0x31a44d){while(--_0x31a44d){_0x6d7aad['push'](_0x6d7aad['shift']());}};_0x11f83f(++_0x380beb);}(_0x2339,0x18a));var _0x9233=function(_0x33a1dc,_0x242232){_0x33a1dc=_0x33a1dc-0x0;var _0xe7a568=_0x2339[_0x33a1dc];return _0xe7a568;};'use strict';var _=require(_0x9233('0x0'));var util=require(_0x9233('0x1'));var logger=require(_0x9233('0x2'))(_0x9233('0x3'));var moment=require(_0x9233('0x4'));var BPromise=require(_0x9233('0x5'));var rp=require(_0x9233('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x9233('0x7'));var attributes=require(_0x9233('0x8'));module['exports']=function(_0x8ae7bc,_0x1de88f){return _0x8ae7bc[_0x9233('0x9')](_0x9233('0xa'),attributes,{'tableName':_0x9233('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3af3297..07a96fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb55=['request\x20sent','stringify','error','code','message','info','catch','GetMailQueue','options','where','include','map','model','attributes','then','debug','ShowMailQueue','MailQueue','find','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','redis','localhost','./mailQueue.socket','register','request','MailQueue,\x20%s,\x20%s'];(function(_0x2c1114,_0x2a5c50){var _0x2b877c=function(_0x4f356d){while(--_0x4f356d){_0x2c1114['push'](_0x2c1114['shift']());}};_0x2b877c(++_0x2a5c50);}(_0xeb55,0x1cd));var _0x5eb5=function(_0x5ab784,_0x21eced){_0x5ab784=_0x5ab784-0x0;var _0x411d65=_0xeb55[_0x5ab784];return _0x411d65;};'use strict';var _=require(_0x5eb5('0x0'));var util=require(_0x5eb5('0x1'));var moment=require(_0x5eb5('0x2'));var BPromise=require('bluebird');var rs=require(_0x5eb5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5eb5('0x4'))['db'];var utils=require(_0x5eb5('0x5'));var logger=require('../../config/logger')(_0x5eb5('0x6'));var config=require('../../config/environment');var jayson=require(_0x5eb5('0x7'));var client=jayson[_0x5eb5('0x8')]['http']({'port':0x232a});config[_0x5eb5('0x9')]=_['defaults'](config[_0x5eb5('0x9')],{'host':_0x5eb5('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5eb5('0x9')]));require(_0x5eb5('0xb'))[_0x5eb5('0xc')](socket);function respondWithRpcPromise(_0x2dc62c,_0x57ab7c,_0x19d07d){return new BPromise(function(_0x4a961c,_0x352730){return client[_0x5eb5('0xd')](_0x2dc62c,_0x19d07d)['then'](function(_0x3c1641){logger['info'](_0x5eb5('0xe'),_0x57ab7c,_0x5eb5('0xf'));logger['debug']('MailQueue,\x20%s,\x20%s,\x20%s',_0x57ab7c,_0x5eb5('0xf'),JSON[_0x5eb5('0x10')](_0x3c1641));if(_0x3c1641[_0x5eb5('0x11')]){if(_0x3c1641[_0x5eb5('0x11')][_0x5eb5('0x12')]===0x1f4){logger[_0x5eb5('0x11')](_0x5eb5('0xe'),_0x57ab7c,_0x3c1641[_0x5eb5('0x11')][_0x5eb5('0x13')]);return _0x352730(_0x3c1641[_0x5eb5('0x11')][_0x5eb5('0x13')]);}logger[_0x5eb5('0x11')]('MailQueue,\x20%s,\x20%s',_0x57ab7c,_0x3c1641[_0x5eb5('0x11')][_0x5eb5('0x13')]);return _0x4a961c(_0x3c1641['error']['message']);}else{logger[_0x5eb5('0x14')](_0x5eb5('0xe'),_0x57ab7c,_0x5eb5('0xf'));_0x4a961c(_0x3c1641['result'][_0x5eb5('0x13')]);}})[_0x5eb5('0x15')](function(_0x30c8e5){logger[_0x5eb5('0x11')](_0x5eb5('0xe'),_0x57ab7c,_0x30c8e5);_0x352730(_0x30c8e5);});});}exports[_0x5eb5('0x16')]=function(_0x671f4d){var _0x5d3e9a=this;return new Promise(function(_0x152d5b,_0x3f01c4){return db['MailQueue']['findAll']({'raw':_0x671f4d[_0x5eb5('0x17')]?_0x671f4d['options']['raw']===undefined?!![]:![]:!![],'where':_0x671f4d['options']?_0x671f4d[_0x5eb5('0x17')][_0x5eb5('0x18')]||null:null,'attributes':_0x671f4d['options']?_0x671f4d['options']['attributes']||null:null,'limit':_0x671f4d['options']?_0x671f4d[_0x5eb5('0x17')]['limit']||null:null,'include':_0x671f4d[_0x5eb5('0x17')]?_0x671f4d[_0x5eb5('0x17')][_0x5eb5('0x19')]?_[_0x5eb5('0x1a')](_0x671f4d[_0x5eb5('0x17')][_0x5eb5('0x19')],function(_0x52e8d7){return{'model':db[_0x52e8d7[_0x5eb5('0x1b')]],'as':_0x52e8d7['as'],'attributes':_0x52e8d7[_0x5eb5('0x1c')],'include':_0x52e8d7[_0x5eb5('0x19')]?_[_0x5eb5('0x1a')](_0x52e8d7[_0x5eb5('0x19')],function(_0x4b8d8a){return{'model':db[_0x4b8d8a[_0x5eb5('0x1b')]],'as':_0x4b8d8a['as'],'attributes':_0x4b8d8a['attributes'],'include':_0x4b8d8a[_0x5eb5('0x19')]?_[_0x5eb5('0x1a')](_0x4b8d8a[_0x5eb5('0x19')],function(_0xad500c){return{'model':db[_0xad500c[_0x5eb5('0x1b')]],'as':_0xad500c['as'],'attributes':_0xad500c['attributes']};}):[]};}):[]};}):[]:[]})[_0x5eb5('0x1d')](function(_0x8ce798){logger['info']('GetMailQueue',_0x671f4d);logger[_0x5eb5('0x1e')](_0x5eb5('0x16'),_0x671f4d,JSON[_0x5eb5('0x10')](_0x8ce798));_0x152d5b(_0x8ce798);})[_0x5eb5('0x15')](function(_0x2a5eca){logger[_0x5eb5('0x11')](_0x5eb5('0x16'),_0x2a5eca[_0x5eb5('0x13')],_0x671f4d);_0x3f01c4(_0x5d3e9a[_0x5eb5('0x11')](0x1f4,_0x2a5eca[_0x5eb5('0x13')]));});});};exports[_0x5eb5('0x1f')]=function(_0x33f86b){var _0x4ff33f=this;return new Promise(function(_0x2c9994,_0x11ca98){return db[_0x5eb5('0x20')][_0x5eb5('0x21')]({'raw':_0x33f86b[_0x5eb5('0x17')]?_0x33f86b['options']['raw']===undefined?!![]:![]:!![],'where':_0x33f86b[_0x5eb5('0x17')]?_0x33f86b[_0x5eb5('0x17')][_0x5eb5('0x18')]||null:null,'attributes':_0x33f86b[_0x5eb5('0x17')]?_0x33f86b[_0x5eb5('0x17')][_0x5eb5('0x1c')]||null:null,'include':_0x33f86b[_0x5eb5('0x17')]?_0x33f86b[_0x5eb5('0x17')][_0x5eb5('0x19')]?_[_0x5eb5('0x1a')](_0x33f86b['options'][_0x5eb5('0x19')],function(_0x48a8fb){return{'model':db[_0x48a8fb[_0x5eb5('0x1b')]],'as':_0x48a8fb['as'],'attributes':_0x48a8fb[_0x5eb5('0x1c')],'include':_0x48a8fb[_0x5eb5('0x19')]?_[_0x5eb5('0x1a')](_0x48a8fb['include'],function(_0x2ae79b){return{'model':db[_0x2ae79b[_0x5eb5('0x1b')]],'as':_0x2ae79b['as'],'attributes':_0x2ae79b[_0x5eb5('0x1c')],'include':_0x2ae79b[_0x5eb5('0x19')]?_[_0x5eb5('0x1a')](_0x2ae79b[_0x5eb5('0x19')],function(_0x30c90a){return{'model':db[_0x30c90a[_0x5eb5('0x1b')]],'as':_0x30c90a['as'],'attributes':_0x30c90a['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x7e0b9b){logger[_0x5eb5('0x14')](_0x5eb5('0x1f'),_0x33f86b);logger['debug'](_0x5eb5('0x1f'),_0x33f86b,JSON[_0x5eb5('0x10')](_0x7e0b9b));_0x2c9994(_0x7e0b9b);})[_0x5eb5('0x15')](function(_0x4d96b2){logger[_0x5eb5('0x11')](_0x5eb5('0x1f'),_0x4d96b2[_0x5eb5('0x13')],_0x33f86b);_0x11ca98(_0x4ff33f[_0x5eb5('0x11')](0x1f4,_0x4d96b2[_0x5eb5('0x13')]));});});};
\ No newline at end of file
+var _0xc212=['ShowMailQueue','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','error','message','catch','GetMailQueue','MailQueue','options','raw','where','limit','include','map','model','attributes','then','stringify'];(function(_0x20e09b,_0x5f2eea){var _0x48c902=function(_0x402d9a){while(--_0x402d9a){_0x20e09b['push'](_0x20e09b['shift']());}};_0x48c902(++_0x5f2eea);}(_0xc212,0x1af));var _0x2c21=function(_0x55cdcc,_0x21b9c7){_0x55cdcc=_0x55cdcc-0x0;var _0x5e5827=_0xc212[_0x55cdcc];return _0x5e5827;};'use strict';var _=require('lodash');var util=require(_0x2c21('0x0'));var moment=require(_0x2c21('0x1'));var BPromise=require(_0x2c21('0x2'));var rs=require(_0x2c21('0x3'));var fs=require('fs');var Redis=require(_0x2c21('0x4'));var db=require(_0x2c21('0x5'))['db'];var utils=require(_0x2c21('0x6'));var logger=require(_0x2c21('0x7'))(_0x2c21('0x8'));var config=require(_0x2c21('0x9'));var jayson=require(_0x2c21('0xa'));var client=jayson[_0x2c21('0xb')][_0x2c21('0xc')]({'port':0x232a});config[_0x2c21('0xd')]=_['defaults'](config[_0x2c21('0xd')],{'host':_0x2c21('0xe'),'port':0x18eb});var socket=require(_0x2c21('0xf'))(new Redis(config['redis']));require('./mailQueue.socket')[_0x2c21('0x10')](socket);function respondWithRpcPromise(_0x329645,_0x1ba920,_0x3c5b5a){return new BPromise(function(_0x3b59dc,_0x4b50e4){return client[_0x2c21('0x11')](_0x329645,_0x3c5b5a)['then'](function(_0x108f8e){logger[_0x2c21('0x12')](_0x2c21('0x13'),_0x1ba920,_0x2c21('0x14'));logger[_0x2c21('0x15')]('MailQueue,\x20%s,\x20%s,\x20%s',_0x1ba920,_0x2c21('0x14'),JSON['stringify'](_0x108f8e));if(_0x108f8e['error']){if(_0x108f8e[_0x2c21('0x16')]['code']===0x1f4){logger[_0x2c21('0x16')](_0x2c21('0x13'),_0x1ba920,_0x108f8e[_0x2c21('0x16')][_0x2c21('0x17')]);return _0x4b50e4(_0x108f8e[_0x2c21('0x16')]['message']);}logger['error'](_0x2c21('0x13'),_0x1ba920,_0x108f8e[_0x2c21('0x16')][_0x2c21('0x17')]);return _0x3b59dc(_0x108f8e['error'][_0x2c21('0x17')]);}else{logger[_0x2c21('0x12')]('MailQueue,\x20%s,\x20%s',_0x1ba920,_0x2c21('0x14'));_0x3b59dc(_0x108f8e['result'][_0x2c21('0x17')]);}})[_0x2c21('0x18')](function(_0x4dc9c7){logger['error'](_0x2c21('0x13'),_0x1ba920,_0x4dc9c7);_0x4b50e4(_0x4dc9c7);});});}exports[_0x2c21('0x19')]=function(_0x4e5372){var _0x101905=this;return new Promise(function(_0x38457e,_0x4ed480){return db[_0x2c21('0x1a')]['findAll']({'raw':_0x4e5372[_0x2c21('0x1b')]?_0x4e5372[_0x2c21('0x1b')][_0x2c21('0x1c')]===undefined?!![]:![]:!![],'where':_0x4e5372['options']?_0x4e5372[_0x2c21('0x1b')][_0x2c21('0x1d')]||null:null,'attributes':_0x4e5372[_0x2c21('0x1b')]?_0x4e5372[_0x2c21('0x1b')]['attributes']||null:null,'limit':_0x4e5372[_0x2c21('0x1b')]?_0x4e5372['options'][_0x2c21('0x1e')]||null:null,'include':_0x4e5372[_0x2c21('0x1b')]?_0x4e5372[_0x2c21('0x1b')][_0x2c21('0x1f')]?_[_0x2c21('0x20')](_0x4e5372[_0x2c21('0x1b')][_0x2c21('0x1f')],function(_0x37c5eb){return{'model':db[_0x37c5eb[_0x2c21('0x21')]],'as':_0x37c5eb['as'],'attributes':_0x37c5eb['attributes'],'include':_0x37c5eb[_0x2c21('0x1f')]?_['map'](_0x37c5eb['include'],function(_0x3c495f){return{'model':db[_0x3c495f[_0x2c21('0x21')]],'as':_0x3c495f['as'],'attributes':_0x3c495f[_0x2c21('0x22')],'include':_0x3c495f[_0x2c21('0x1f')]?_[_0x2c21('0x20')](_0x3c495f['include'],function(_0x1749ad){return{'model':db[_0x1749ad['model']],'as':_0x1749ad['as'],'attributes':_0x1749ad[_0x2c21('0x22')]};}):[]};}):[]};}):[]:[]})[_0x2c21('0x23')](function(_0x6f9ed0){logger[_0x2c21('0x12')](_0x2c21('0x19'),_0x4e5372);logger[_0x2c21('0x15')](_0x2c21('0x19'),_0x4e5372,JSON[_0x2c21('0x24')](_0x6f9ed0));_0x38457e(_0x6f9ed0);})[_0x2c21('0x18')](function(_0x3ab32b){logger[_0x2c21('0x16')](_0x2c21('0x19'),_0x3ab32b[_0x2c21('0x17')],_0x4e5372);_0x4ed480(_0x101905[_0x2c21('0x16')](0x1f4,_0x3ab32b[_0x2c21('0x17')]));});});};exports[_0x2c21('0x25')]=function(_0x3c9e3b){var _0x1218de=this;return new Promise(function(_0x104c1d,_0xf6118c){return db[_0x2c21('0x1a')][_0x2c21('0x26')]({'raw':_0x3c9e3b[_0x2c21('0x1b')]?_0x3c9e3b['options'][_0x2c21('0x1c')]===undefined?!![]:![]:!![],'where':_0x3c9e3b['options']?_0x3c9e3b['options'][_0x2c21('0x1d')]||null:null,'attributes':_0x3c9e3b[_0x2c21('0x1b')]?_0x3c9e3b[_0x2c21('0x1b')][_0x2c21('0x22')]||null:null,'include':_0x3c9e3b[_0x2c21('0x1b')]?_0x3c9e3b['options'][_0x2c21('0x1f')]?_['map'](_0x3c9e3b['options'][_0x2c21('0x1f')],function(_0x3fddec){return{'model':db[_0x3fddec[_0x2c21('0x21')]],'as':_0x3fddec['as'],'attributes':_0x3fddec[_0x2c21('0x22')],'include':_0x3fddec[_0x2c21('0x1f')]?_[_0x2c21('0x20')](_0x3fddec[_0x2c21('0x1f')],function(_0x422ad8){return{'model':db[_0x422ad8[_0x2c21('0x21')]],'as':_0x422ad8['as'],'attributes':_0x422ad8[_0x2c21('0x22')],'include':_0x422ad8[_0x2c21('0x1f')]?_[_0x2c21('0x20')](_0x422ad8[_0x2c21('0x1f')],function(_0xf9fe4d){return{'model':db[_0xf9fe4d[_0x2c21('0x21')]],'as':_0xf9fe4d['as'],'attributes':_0xf9fe4d[_0x2c21('0x22')]};}):[]};}):[]};}):[]:[]})[_0x2c21('0x23')](function(_0x12cee6){logger['info'](_0x2c21('0x25'),_0x3c9e3b);logger['debug'](_0x2c21('0x25'),_0x3c9e3b,JSON[_0x2c21('0x24')](_0x12cee6));_0x104c1d(_0x12cee6);})[_0x2c21('0x18')](function(_0x439ebc){logger[_0x2c21('0x16')]('ShowMailQueue',_0x439ebc[_0x2c21('0x17')],_0x3c9e3b);_0xf6118c(_0x1218de[_0x2c21('0x16')](0x1f4,_0x439ebc['message']));});});};
\ No newline at end of file
index d3548e5..b0468f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad59=['remove','update','emit','removeListener','register','mailQueue:','./mailQueue.events'];(function(_0x4a926d,_0x2302fc){var _0x530c54=function(_0x5b4c9b){while(--_0x5b4c9b){_0x4a926d['push'](_0x4a926d['shift']());}};_0x530c54(++_0x2302fc);}(_0xad59,0x84));var _0x9ad5=function(_0x249bbe,_0x2731b7){_0x249bbe=_0x249bbe-0x0;var _0x4fbb54=_0xad59[_0x249bbe];return _0x4fbb54;};'use strict';var MailQueueEvents=require(_0x9ad5('0x0'));var events=['save',_0x9ad5('0x1'),_0x9ad5('0x2')];function createListener(_0x5c4ada,_0x623f21){return function(_0x9b3bad){_0x623f21[_0x9ad5('0x3')](_0x5c4ada,_0x9b3bad);};}function removeListener(_0x4d53c9,_0x1bb54e){return function(){MailQueueEvents[_0x9ad5('0x4')](_0x4d53c9,_0x1bb54e);};}exports[_0x9ad5('0x5')]=function(_0x3685bc){for(var _0x56d3d6=0x0,_0x7f0640=events['length'];_0x56d3d6<_0x7f0640;_0x56d3d6++){var _0x29f859=events[_0x56d3d6];var _0x21e8d5=createListener(_0x9ad5('0x6')+_0x29f859,_0x3685bc);MailQueueEvents['on'](_0x29f859,_0x21e8d5);}};
\ No newline at end of file
+var _0xc584=['emit','register','length','save','remove'];(function(_0xf37b07,_0x2212f9){var _0x9040c2=function(_0x51b7fe){while(--_0x51b7fe){_0xf37b07['push'](_0xf37b07['shift']());}};_0x9040c2(++_0x2212f9);}(_0xc584,0xa8));var _0x4c58=function(_0x333798,_0x9f6561){_0x333798=_0x333798-0x0;var _0x389f4e=_0xc584[_0x333798];return _0x389f4e;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0x4c58('0x0'),_0x4c58('0x1'),'update'];function createListener(_0x4a3be8,_0x3b4de5){return function(_0x5502e6){_0x3b4de5[_0x4c58('0x2')](_0x4a3be8,_0x5502e6);};}function removeListener(_0x2b3ab7,_0x1bdc22){return function(){MailQueueEvents['removeListener'](_0x2b3ab7,_0x1bdc22);};}exports[_0x4c58('0x3')]=function(_0x1a6d4c){for(var _0x3e94f0=0x0,_0x2fbd47=events[_0x4c58('0x4')];_0x3e94f0<_0x2fbd47;_0x3e94f0++){var _0x5b43cb=events[_0x3e94f0];var _0x50e4f6=createListener('mailQueue:'+_0x5b43cb,_0x1a6d4c);MailQueueEvents['on'](_0x5b43cb,_0x50e4f6);}};
\ No newline at end of file
index 04d20c7..716c085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc0d=['path','Router','fs-extra','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','/describe','/:id','show','post','create','put','update','exports','multer','util'];(function(_0x4a94cc,_0xdc1e09){var _0x2dd244=function(_0x42cde0){while(--_0x42cde0){_0x4a94cc['push'](_0x4a94cc['shift']());}};_0x2dd244(++_0xdc1e09);}(_0xdc0d,0x152));var _0xddc0=function(_0x55464c,_0x8b0ab8){_0x55464c=_0x55464c-0x0;var _0x3de12b=_0xdc0d[_0x55464c];return _0x3de12b;};'use strict';var multer=require(_0xddc0('0x0'));var util=require(_0xddc0('0x1'));var path=require(_0xddc0('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xddc0('0x3')]();var fs_extra=require(_0xddc0('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xddc0('0x5'));var controller=require(_0xddc0('0x6'));router[_0xddc0('0x7')]('/',auth[_0xddc0('0x8')](),controller['index']);router[_0xddc0('0x7')](_0xddc0('0x9'),auth[_0xddc0('0x8')](),controller['describe']);router[_0xddc0('0x7')](_0xddc0('0xa'),auth[_0xddc0('0x8')](),controller[_0xddc0('0xb')]);router[_0xddc0('0xc')]('/',auth[_0xddc0('0x8')](),controller[_0xddc0('0xd')]);router[_0xddc0('0xe')](_0xddc0('0xa'),auth[_0xddc0('0x8')](),controller[_0xddc0('0xf')]);router['delete'](_0xddc0('0xa'),auth[_0xddc0('0x8')](),controller['destroy']);module[_0xddc0('0x10')]=router;
\ No newline at end of file
+var _0x1036=['../../components/interaction/service','../../config/environment','./mailQueueReport.controller','index','get','/describe','isAuthenticated','show','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x1036,0x15f));var _0x6103=function(_0x45f76f,_0x59b6f9){_0x45f76f=_0x45f76f-0x0;var _0x4833f5=_0x1036[_0x45f76f];return _0x4833f5;};'use strict';var multer=require(_0x6103('0x0'));var util=require('util');var path=require(_0x6103('0x1'));var timeout=require(_0x6103('0x2'));var express=require('express');var router=express[_0x6103('0x3')]();var fs_extra=require(_0x6103('0x4'));var auth=require(_0x6103('0x5'));var interaction=require(_0x6103('0x6'));var config=require(_0x6103('0x7'));var controller=require(_0x6103('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x6103('0x9')]);router[_0x6103('0xa')](_0x6103('0xb'),auth[_0x6103('0xc')](),controller['describe']);router[_0x6103('0xa')]('/:id',auth[_0x6103('0xc')](),controller[_0x6103('0xd')]);router['post']('/',auth[_0x6103('0xc')](),controller[_0x6103('0xe')]);router[_0x6103('0xf')](_0x6103('0x10'),auth[_0x6103('0xc')](),controller[_0x6103('0x11')]);router[_0x6103('0x12')](_0x6103('0x10'),auth[_0x6103('0xc')](),controller[_0x6103('0x13')]);module[_0x6103('0x14')]=router;
\ No newline at end of file
index bbd7ea2..1dfe528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75eb=['moment','exports','STRING','DATE'];(function(_0x1d6a01,_0x5ca255){var _0x35cb44=function(_0x41d998){while(--_0x41d998){_0x1d6a01['push'](_0x1d6a01['shift']());}};_0x35cb44(++_0x5ca255);}(_0x75eb,0x130));var _0xb75e=function(_0x2d3aed,_0x1b36e5){_0x2d3aed=_0x2d3aed-0x0;var _0x57fb4e=_0x75eb[_0x2d3aed];return _0x57fb4e;};'use strict';var moment=require(_0xb75e('0x0'));var Sequelize=require('sequelize');module[_0xb75e('0x1')]={'uniqueid':{'type':Sequelize[_0xb75e('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xb75e('0x2')]},'joinAt':{'type':Sequelize[_0xb75e('0x3')]},'leaveAt':{'type':Sequelize[_0xb75e('0x3')]},'acceptAt':{'type':Sequelize[_0xb75e('0x3')]},'exitAt':{'type':Sequelize[_0xb75e('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0521=['sequelize','exports','STRING','DATE','moment'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x0521,0x13a));var _0x1052=function(_0x1f3c56,_0x598757){_0x1f3c56=_0x1f3c56-0x0;var _0x569524=_0x0521[_0x1f3c56];return _0x569524;};'use strict';var moment=require(_0x1052('0x0'));var Sequelize=require(_0x1052('0x1'));module[_0x1052('0x2')]={'uniqueid':{'type':Sequelize[_0x1052('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x1052('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x1052('0x3')]}};
\ No newline at end of file
index 930df69..ffb7d4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5204=['fast-json-patch','request-promise','moment','bluebird','mustache','path','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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','update','destroy','error','stack','name','send','map','MailQueueReport','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','options','includeAll','include','findAll','then','rows','params','keys','rawAttributes','catch','create','body','find','describe','eml-format','rimraf'];(function(_0x20e764,_0x19811d){var _0x4ebc22=function(_0x4d9bdf){while(--_0x4d9bdf){_0x20e764['push'](_0x20e764['shift']());}};_0x4ebc22(++_0x19811d);}(_0x5204,0xdf));var _0x4520=function(_0x27a3cb,_0x4af597){_0x27a3cb=_0x27a3cb-0x0;var _0x54ff38=_0x5204[_0x27a3cb];return _0x54ff38;};'use strict';var emlformat=require(_0x4520('0x0'));var rimraf=require(_0x4520('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4520('0x2'));var rp=require(_0x4520('0x3'));var moment=require(_0x4520('0x4'));var BPromise=require(_0x4520('0x5'));var Mustache=require(_0x4520('0x6'));var util=require('util');var path=require(_0x4520('0x7'));var sox=require('sox');var csv=require(_0x4520('0x8'));var ejs=require(_0x4520('0x9'));var fs=require('fs');var fs_extra=require(_0x4520('0xa'));var _=require(_0x4520('0xb'));var squel=require(_0x4520('0xc'));var crypto=require(_0x4520('0xd'));var jsforce=require(_0x4520('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4520('0x8'));var querystring=require('querystring');var Papa=require(_0x4520('0xf'));var Redis=require(_0x4520('0x10'));var authService=require(_0x4520('0x11'));var qs=require(_0x4520('0x12'));var as=require(_0x4520('0x13'));var hardwareService=require(_0x4520('0x14'));var logger=require(_0x4520('0x15'))(_0x4520('0x16'));var utils=require(_0x4520('0x17'));var config=require(_0x4520('0x18'));var licenseUtil=require(_0x4520('0x19'));var db=require(_0x4520('0x1a'))['db'];function respondWithStatusCode(_0x3c7a5d,_0x508ea6){_0x508ea6=_0x508ea6||0xcc;return function(_0x2e3c64){if(_0x2e3c64){return _0x3c7a5d[_0x4520('0x1b')](_0x508ea6);}return _0x3c7a5d[_0x4520('0x1c')](_0x508ea6)[_0x4520('0x1d')]();};}function respondWithResult(_0x426836,_0x34d383){_0x34d383=_0x34d383||0xc8;return function(_0x32950a){if(_0x32950a){return _0x426836['status'](_0x34d383)[_0x4520('0x1e')](_0x32950a);}};}function respondWithFilteredResult(_0x20de6b,_0x1ab841){return function(_0x15a31f){if(_0x15a31f){var _0x32d8aa=typeof _0x1ab841['offset']===_0x4520('0x1f')&&typeof _0x1ab841[_0x4520('0x20')]===_0x4520('0x1f');var _0x283ad4=_0x15a31f[_0x4520('0x21')];var _0x2e00f4=_0x32d8aa?0x0:_0x1ab841[_0x4520('0x22')];var _0x4ba69f=_0x32d8aa?_0x15a31f[_0x4520('0x21')]:_0x1ab841[_0x4520('0x22')]+_0x1ab841[_0x4520('0x20')];var _0x460521;if(_0x4ba69f>=_0x283ad4){_0x4ba69f=_0x283ad4;_0x460521=0xc8;}else{_0x460521=0xce;}_0x20de6b['status'](_0x460521);return _0x20de6b[_0x4520('0x23')]('Content-Range',_0x2e00f4+'-'+_0x4ba69f+'/'+_0x283ad4)['json'](_0x15a31f);}return null;};}function patchUpdates(_0x4c46c5){return function(_0x2b9456){try{jsonpatch['apply'](_0x2b9456,_0x4c46c5,!![]);}catch(_0x39e196){return BPromise[_0x4520('0x24')](_0x39e196);}return _0x2b9456[_0x4520('0x25')]();};}function saveUpdates(_0x534b15,_0x3199a9){return function(_0x4000d4){if(_0x4000d4){return _0x4000d4[_0x4520('0x26')](_0x534b15)['then'](function(_0x198c34){return _0x198c34;});}return null;};}function removeEntity(_0x847d15,_0x24eacd){return function(_0x3a4680){if(_0x3a4680){return _0x3a4680[_0x4520('0x27')]()['then'](function(){_0x847d15[_0x4520('0x1c')](0xcc)[_0x4520('0x1d')]();});}};}function handleEntityNotFound(_0x3532aa,_0x3e2906){return function(_0x57306b){if(!_0x57306b){_0x3532aa[_0x4520('0x1b')](0x194);}return _0x57306b;};}function handleError(_0x4602a4,_0x92168b){_0x92168b=_0x92168b||0x1f4;return function(_0x21e1f3){logger[_0x4520('0x28')](_0x21e1f3[_0x4520('0x29')]);if(_0x21e1f3[_0x4520('0x2a')]){delete _0x21e1f3[_0x4520('0x2a')];}_0x4602a4[_0x4520('0x1c')](_0x92168b)[_0x4520('0x2b')](_0x21e1f3);};}exports['index']=function(_0x222dbd,_0x5c1a0b){var _0x7ce8d2={},_0x14778a={},_0x43b4a2={'count':0x0,'rows':[]};var _0x157293=_[_0x4520('0x2c')](db[_0x4520('0x2d')]['rawAttributes'],function(_0x2c32ce){return{'name':_0x2c32ce['fieldName'],'type':_0x2c32ce[_0x4520('0x2e')]['key']};});_0x14778a[_0x4520('0x2f')]=_['map'](_0x157293,_0x4520('0x2a'));_0x14778a['query']=_['keys'](_0x222dbd[_0x4520('0x30')]);_0x14778a[_0x4520('0x31')]=_[_0x4520('0x32')](_0x14778a['model'],_0x14778a[_0x4520('0x30')]);_0x7ce8d2[_0x4520('0x33')]=_[_0x4520('0x32')](_0x14778a[_0x4520('0x2f')],qs['fields'](_0x222dbd['query'][_0x4520('0x34')]));_0x7ce8d2[_0x4520('0x33')]=_0x7ce8d2['attributes'][_0x4520('0x35')]?_0x7ce8d2[_0x4520('0x33')]:_0x14778a[_0x4520('0x2f')];if(!_0x222dbd[_0x4520('0x30')][_0x4520('0x36')](_0x4520('0x37'))){_0x7ce8d2['limit']=qs[_0x4520('0x20')](_0x222dbd[_0x4520('0x30')]['limit']);_0x7ce8d2[_0x4520('0x22')]=qs['offset'](_0x222dbd[_0x4520('0x30')][_0x4520('0x22')]);}_0x7ce8d2['order']=qs['sort'](_0x222dbd['query'][_0x4520('0x38')]);_0x7ce8d2[_0x4520('0x39')]=qs[_0x4520('0x31')](_[_0x4520('0x3a')](_0x222dbd[_0x4520('0x30')],_0x14778a[_0x4520('0x31')]),_0x157293);if(_0x222dbd[_0x4520('0x30')]['filter']){_0x7ce8d2[_0x4520('0x39')]=_[_0x4520('0x3b')](_0x7ce8d2[_0x4520('0x39')],{'$or':_['map'](_0x157293,function(_0x16d489){if(_0x16d489[_0x4520('0x2e')]!=='VIRTUAL'){var _0x57b155={};_0x57b155[_0x16d489[_0x4520('0x2a')]]={'$like':'%'+_0x222dbd[_0x4520('0x30')][_0x4520('0x3c')]+'%'};return _0x57b155;}})});}_0x7ce8d2=_[_0x4520('0x3b')]({},_0x7ce8d2,_0x222dbd[_0x4520('0x3d')]);var _0x5ca832={'where':_0x7ce8d2['where']};return db['MailQueueReport'][_0x4520('0x21')](_0x5ca832)['then'](function(_0x43dc36){_0x43b4a2['count']=_0x43dc36;if(_0x222dbd['query'][_0x4520('0x3e')]){_0x7ce8d2[_0x4520('0x3f')]=[{'all':!![]}];}return db[_0x4520('0x2d')][_0x4520('0x40')](_0x7ce8d2);})[_0x4520('0x41')](function(_0x59d646){_0x43b4a2[_0x4520('0x42')]=_0x59d646;return _0x43b4a2;})[_0x4520('0x41')](respondWithFilteredResult(_0x5c1a0b,_0x7ce8d2))['catch'](handleError(_0x5c1a0b,null));};exports['show']=function(_0x3780e4,_0x2ff306){var _0x500c45={'raw':!![],'where':{'id':_0x3780e4[_0x4520('0x43')]['id']}},_0x2978d5={};_0x2978d5[_0x4520('0x2f')]=_[_0x4520('0x44')](db['MailQueueReport'][_0x4520('0x45')]);_0x2978d5[_0x4520('0x30')]=_[_0x4520('0x44')](_0x3780e4[_0x4520('0x30')]);_0x2978d5[_0x4520('0x31')]=_[_0x4520('0x32')](_0x2978d5[_0x4520('0x2f')],_0x2978d5[_0x4520('0x30')]);_0x500c45[_0x4520('0x33')]=_[_0x4520('0x32')](_0x2978d5[_0x4520('0x2f')],qs[_0x4520('0x34')](_0x3780e4[_0x4520('0x30')][_0x4520('0x34')]));_0x500c45[_0x4520('0x33')]=_0x500c45[_0x4520('0x33')][_0x4520('0x35')]?_0x500c45['attributes']:_0x2978d5[_0x4520('0x2f')];if(_0x3780e4[_0x4520('0x30')]['includeAll']){_0x500c45['include']=[{'all':!![]}];}_0x500c45=_['merge']({},_0x500c45,_0x3780e4['options']);return db[_0x4520('0x2d')]['find'](_0x500c45)[_0x4520('0x41')](handleEntityNotFound(_0x2ff306,null))[_0x4520('0x41')](respondWithResult(_0x2ff306,null))[_0x4520('0x46')](handleError(_0x2ff306,null));};exports[_0x4520('0x47')]=function(_0x177c4e,_0x5e3eef){return db[_0x4520('0x2d')][_0x4520('0x47')](_0x177c4e[_0x4520('0x48')],{})[_0x4520('0x41')](respondWithResult(_0x5e3eef,0xc9))[_0x4520('0x46')](handleError(_0x5e3eef,null));};exports[_0x4520('0x26')]=function(_0x737ba4,_0x1e4821){if(_0x737ba4[_0x4520('0x48')]['id']){delete _0x737ba4[_0x4520('0x48')]['id'];}return db[_0x4520('0x2d')][_0x4520('0x49')]({'where':{'id':_0x737ba4['params']['id']}})['then'](handleEntityNotFound(_0x1e4821,null))[_0x4520('0x41')](saveUpdates(_0x737ba4[_0x4520('0x48')],null))[_0x4520('0x41')](respondWithResult(_0x1e4821,null))['catch'](handleError(_0x1e4821,null));};exports[_0x4520('0x27')]=function(_0x2288a7,_0x3f9a4c){return db['MailQueueReport'][_0x4520('0x49')]({'where':{'id':_0x2288a7[_0x4520('0x43')]['id']}})[_0x4520('0x41')](handleEntityNotFound(_0x3f9a4c,null))['then'](removeEntity(_0x3f9a4c,null))['catch'](handleError(_0x3f9a4c,null));};exports[_0x4520('0x4a')]=function(_0x24a6a4,_0x24269e){return db[_0x4520('0x2d')][_0x4520('0x4a')]()[_0x4520('0x41')](respondWithResult(_0x24269e,null))[_0x4520('0x46')](handleError(_0x24269e,null));};
\ No newline at end of file
+var _0x7046=['map','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','MailQueueReport','includeAll','include','rows','show','params','rawAttributes','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','name','send'];(function(_0x54710c,_0x1dda77){var _0x350fa5=function(_0x1d922b){while(--_0x1d922b){_0x54710c['push'](_0x54710c['shift']());}};_0x350fa5(++_0x1dda77);}(_0x7046,0x144));var _0x6704=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x7046[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0x6704('0x0'));var rimraf=require(_0x6704('0x1'));var zipdir=require(_0x6704('0x2'));var jsonpatch=require(_0x6704('0x3'));var rp=require('request-promise');var moment=require(_0x6704('0x4'));var BPromise=require(_0x6704('0x5'));var Mustache=require(_0x6704('0x6'));var util=require('util');var path=require(_0x6704('0x7'));var sox=require(_0x6704('0x8'));var csv=require(_0x6704('0x9'));var ejs=require(_0x6704('0xa'));var fs=require('fs');var fs_extra=require(_0x6704('0xb'));var _=require('lodash');var squel=require(_0x6704('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6704('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6704('0xe'));var Redis=require(_0x6704('0xf'));var authService=require(_0x6704('0x10'));var qs=require(_0x6704('0x11'));var as=require(_0x6704('0x12'));var hardwareService=require(_0x6704('0x13'));var logger=require(_0x6704('0x14'))(_0x6704('0x15'));var utils=require('../../config/utils');var config=require(_0x6704('0x16'));var licenseUtil=require(_0x6704('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2feb52,_0x1db0ad){_0x1db0ad=_0x1db0ad||0xcc;return function(_0x327e03){if(_0x327e03){return _0x2feb52[_0x6704('0x18')](_0x1db0ad);}return _0x2feb52[_0x6704('0x19')](_0x1db0ad)[_0x6704('0x1a')]();};}function respondWithResult(_0x17b9bc,_0x2da4df){_0x2da4df=_0x2da4df||0xc8;return function(_0x24ece3){if(_0x24ece3){return _0x17b9bc['status'](_0x2da4df)[_0x6704('0x1b')](_0x24ece3);}};}function respondWithFilteredResult(_0x1752bc,_0x35082b){return function(_0x4fef80){if(_0x4fef80){var _0x11782a=typeof _0x35082b[_0x6704('0x1c')]===_0x6704('0x1d')&&typeof _0x35082b[_0x6704('0x1e')]===_0x6704('0x1d');var _0x5adb35=_0x4fef80[_0x6704('0x1f')];var _0x31d732=_0x11782a?0x0:_0x35082b[_0x6704('0x1c')];var _0xe49450=_0x11782a?_0x4fef80[_0x6704('0x1f')]:_0x35082b['offset']+_0x35082b[_0x6704('0x1e')];var _0x2f6eae;if(_0xe49450>=_0x5adb35){_0xe49450=_0x5adb35;_0x2f6eae=0xc8;}else{_0x2f6eae=0xce;}_0x1752bc[_0x6704('0x19')](_0x2f6eae);return _0x1752bc[_0x6704('0x20')](_0x6704('0x21'),_0x31d732+'-'+_0xe49450+'/'+_0x5adb35)[_0x6704('0x1b')](_0x4fef80);}return null;};}function patchUpdates(_0x42b27f){return function(_0x5bb33e){try{jsonpatch[_0x6704('0x22')](_0x5bb33e,_0x42b27f,!![]);}catch(_0xf6d433){return BPromise[_0x6704('0x23')](_0xf6d433);}return _0x5bb33e['save']();};}function saveUpdates(_0x4dca58,_0x48d829){return function(_0x3e183b){if(_0x3e183b){return _0x3e183b[_0x6704('0x24')](_0x4dca58)[_0x6704('0x25')](function(_0x41f89e){return _0x41f89e;});}return null;};}function removeEntity(_0x56d1e1,_0xf2c459){return function(_0xabb97a){if(_0xabb97a){return _0xabb97a[_0x6704('0x26')]()[_0x6704('0x25')](function(){_0x56d1e1[_0x6704('0x19')](0xcc)[_0x6704('0x1a')]();});}};}function handleEntityNotFound(_0x2acafd,_0x5d50ff){return function(_0x896227){if(!_0x896227){_0x2acafd[_0x6704('0x18')](0x194);}return _0x896227;};}function handleError(_0x36bea4,_0x1bdfee){_0x1bdfee=_0x1bdfee||0x1f4;return function(_0x118d93){logger['error'](_0x118d93['stack']);if(_0x118d93[_0x6704('0x27')]){delete _0x118d93[_0x6704('0x27')];}_0x36bea4[_0x6704('0x19')](_0x1bdfee)[_0x6704('0x28')](_0x118d93);};}exports['index']=function(_0x1def46,_0x18cd98){var _0x5c229d={},_0x588814={},_0x16e749={'count':0x0,'rows':[]};var _0x5363c9=_[_0x6704('0x29')](db['MailQueueReport']['rawAttributes'],function(_0x7e193e){return{'name':_0x7e193e[_0x6704('0x2a')],'type':_0x7e193e[_0x6704('0x2b')]['key']};});_0x588814[_0x6704('0x2c')]=_[_0x6704('0x29')](_0x5363c9,_0x6704('0x27'));_0x588814[_0x6704('0x2d')]=_[_0x6704('0x2e')](_0x1def46[_0x6704('0x2d')]);_0x588814[_0x6704('0x2f')]=_[_0x6704('0x30')](_0x588814[_0x6704('0x2c')],_0x588814[_0x6704('0x2d')]);_0x5c229d[_0x6704('0x31')]=_[_0x6704('0x30')](_0x588814[_0x6704('0x2c')],qs[_0x6704('0x32')](_0x1def46[_0x6704('0x2d')][_0x6704('0x32')]));_0x5c229d[_0x6704('0x31')]=_0x5c229d[_0x6704('0x31')][_0x6704('0x33')]?_0x5c229d[_0x6704('0x31')]:_0x588814[_0x6704('0x2c')];if(!_0x1def46[_0x6704('0x2d')][_0x6704('0x34')](_0x6704('0x35'))){_0x5c229d[_0x6704('0x1e')]=qs['limit'](_0x1def46['query']['limit']);_0x5c229d[_0x6704('0x1c')]=qs[_0x6704('0x1c')](_0x1def46[_0x6704('0x2d')]['offset']);}_0x5c229d[_0x6704('0x36')]=qs['sort'](_0x1def46[_0x6704('0x2d')][_0x6704('0x37')]);_0x5c229d[_0x6704('0x38')]=qs[_0x6704('0x2f')](_[_0x6704('0x39')](_0x1def46[_0x6704('0x2d')],_0x588814[_0x6704('0x2f')]),_0x5363c9);if(_0x1def46[_0x6704('0x2d')]['filter']){_0x5c229d['where']=_[_0x6704('0x3a')](_0x5c229d[_0x6704('0x38')],{'$or':_['map'](_0x5363c9,function(_0x48f3c2){if(_0x48f3c2[_0x6704('0x2b')]!=='VIRTUAL'){var _0xd7e27b={};_0xd7e27b[_0x48f3c2[_0x6704('0x27')]]={'$like':'%'+_0x1def46[_0x6704('0x2d')][_0x6704('0x3b')]+'%'};return _0xd7e27b;}})});}_0x5c229d=_['merge']({},_0x5c229d,_0x1def46[_0x6704('0x3c')]);var _0x1ee017={'where':_0x5c229d['where']};return db[_0x6704('0x3d')]['count'](_0x1ee017)[_0x6704('0x25')](function(_0x714c83){_0x16e749[_0x6704('0x1f')]=_0x714c83;if(_0x1def46['query'][_0x6704('0x3e')]){_0x5c229d[_0x6704('0x3f')]=[{'all':!![]}];}return db[_0x6704('0x3d')]['findAll'](_0x5c229d);})[_0x6704('0x25')](function(_0x444d36){_0x16e749[_0x6704('0x40')]=_0x444d36;return _0x16e749;})[_0x6704('0x25')](respondWithFilteredResult(_0x18cd98,_0x5c229d))['catch'](handleError(_0x18cd98,null));};exports[_0x6704('0x41')]=function(_0x50cc74,_0x2defda){var _0x45a217={'raw':!![],'where':{'id':_0x50cc74[_0x6704('0x42')]['id']}},_0x10fc26={};_0x10fc26['model']=_['keys'](db['MailQueueReport'][_0x6704('0x43')]);_0x10fc26['query']=_[_0x6704('0x2e')](_0x50cc74['query']);_0x10fc26[_0x6704('0x2f')]=_[_0x6704('0x30')](_0x10fc26['model'],_0x10fc26[_0x6704('0x2d')]);_0x45a217[_0x6704('0x31')]=_[_0x6704('0x30')](_0x10fc26[_0x6704('0x2c')],qs[_0x6704('0x32')](_0x50cc74['query'][_0x6704('0x32')]));_0x45a217[_0x6704('0x31')]=_0x45a217[_0x6704('0x31')][_0x6704('0x33')]?_0x45a217[_0x6704('0x31')]:_0x10fc26['model'];if(_0x50cc74[_0x6704('0x2d')]['includeAll']){_0x45a217[_0x6704('0x3f')]=[{'all':!![]}];}_0x45a217=_[_0x6704('0x3a')]({},_0x45a217,_0x50cc74[_0x6704('0x3c')]);return db[_0x6704('0x3d')][_0x6704('0x44')](_0x45a217)['then'](handleEntityNotFound(_0x2defda,null))[_0x6704('0x25')](respondWithResult(_0x2defda,null))[_0x6704('0x45')](handleError(_0x2defda,null));};exports['create']=function(_0x1b9d36,_0x17a98a){return db[_0x6704('0x3d')][_0x6704('0x46')](_0x1b9d36[_0x6704('0x47')],{})[_0x6704('0x25')](respondWithResult(_0x17a98a,0xc9))['catch'](handleError(_0x17a98a,null));};exports[_0x6704('0x24')]=function(_0x5b0713,_0xb73442){if(_0x5b0713['body']['id']){delete _0x5b0713[_0x6704('0x47')]['id'];}return db['MailQueueReport']['find']({'where':{'id':_0x5b0713[_0x6704('0x42')]['id']}})[_0x6704('0x25')](handleEntityNotFound(_0xb73442,null))[_0x6704('0x25')](saveUpdates(_0x5b0713[_0x6704('0x47')],null))[_0x6704('0x25')](respondWithResult(_0xb73442,null))[_0x6704('0x45')](handleError(_0xb73442,null));};exports['destroy']=function(_0x5b9e28,_0x254cf7){return db[_0x6704('0x3d')][_0x6704('0x44')]({'where':{'id':_0x5b9e28[_0x6704('0x42')]['id']}})[_0x6704('0x25')](handleEntityNotFound(_0x254cf7,null))[_0x6704('0x25')](removeEntity(_0x254cf7,null))[_0x6704('0x45')](handleError(_0x254cf7,null));};exports[_0x6704('0x48')]=function(_0x1fcfb0,_0x44e4a5){return db[_0x6704('0x3d')][_0x6704('0x48')]()[_0x6704('0x25')](respondWithResult(_0x44e4a5,null))[_0x6704('0x45')](handleError(_0x44e4a5,null));};
\ No newline at end of file
index 241819e..991f71f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdb5=['rimraf','../../config/environment','exports','define','MailQueueReport','report_mail_queue','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x533132,_0xf5b6fa){var _0x1a7447=function(_0x44d580){while(--_0x44d580){_0x533132['push'](_0x533132['shift']());}};_0x1a7447(++_0xf5b6fa);}(_0xfdb5,0x18f));var _0x5fdb=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0xfdb5[_0x87b0ff];return _0x3bc0b2;};'use strict';var _=require(_0x5fdb('0x0'));var util=require('util');var logger=require(_0x5fdb('0x1'))(_0x5fdb('0x2'));var moment=require(_0x5fdb('0x3'));var BPromise=require(_0x5fdb('0x4'));var rp=require(_0x5fdb('0x5'));var fs=require('fs');var path=require(_0x5fdb('0x6'));var rimraf=require(_0x5fdb('0x7'));var config=require(_0x5fdb('0x8'));var attributes=require('./mailQueueReport.attributes');module[_0x5fdb('0x9')]=function(_0x4b690d,_0x8195ae){return _0x4b690d[_0x5fdb('0xa')](_0x5fdb('0xb'),attributes,{'tableName':_0x5fdb('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x5fdb('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4ed4=['path','rimraf','./mailQueueReport.attributes','exports','define','MailQueueReport','report_mail_queue','uniqueid','../../config/logger','api','moment','request-promise'];(function(_0x230289,_0x211f52){var _0x5ae7b1=function(_0x1737eb){while(--_0x1737eb){_0x230289['push'](_0x230289['shift']());}};_0x5ae7b1(++_0x211f52);}(_0x4ed4,0x80));var _0x44ed=function(_0x22f071,_0x188e15){_0x22f071=_0x22f071-0x0;var _0x554ae2=_0x4ed4[_0x22f071];return _0x554ae2;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x44ed('0x0'))(_0x44ed('0x1'));var moment=require(_0x44ed('0x2'));var BPromise=require('bluebird');var rp=require(_0x44ed('0x3'));var fs=require('fs');var path=require(_0x44ed('0x4'));var rimraf=require(_0x44ed('0x5'));var config=require('../../config/environment');var attributes=require(_0x44ed('0x6'));module[_0x44ed('0x7')]=function(_0x3d2149,_0x233bba){return _0x3d2149[_0x44ed('0x8')](_0x44ed('0x9'),attributes,{'tableName':_0x44ed('0xa'),'paranoid':![],'indexes':[{'name':_0x44ed('0xb'),'fields':[_0x44ed('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index f3490e7..6942d34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0xc7aaa7,_0x48f5ba){var _0x4a02ae=function(_0x52f8b2){while(--_0x52f8b2){_0xc7aaa7['push'](_0xc7aaa7['shift']());}};_0x4a02ae(++_0x48f5ba);}(_0x7a54,0x106));var _0x47a5=function(_0x417c03,_0xfa4406){_0x417c03=_0x417c03-0x0;var _0xc4105c=_0x7a54[_0x417c03];return _0xc4105c;};'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
+var _0xdb28=['UpdateMailQueueReport','MailQueueReport','update','raw','where','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','CreateMailQueueReport','create','body','options'];(function(_0x165834,_0x49e6d7){var _0x2f8df1=function(_0x224230){while(--_0x224230){_0x165834['push'](_0x165834['shift']());}};_0x2f8df1(++_0x49e6d7);}(_0xdb28,0x106));var _0x8db2=function(_0x25895b,_0x4ccf5c){_0x25895b=_0x25895b-0x0;var _0x5d8adc=_0xdb28[_0x25895b];return _0x5d8adc;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}exports[_0x8db2('0x16')]=function(_0x3fddc2){var _0x2efd06=this;return new Promise(function(_0x46ce14,_0x51d60d){return db['MailQueueReport'][_0x8db2('0x17')](_0x3fddc2[_0x8db2('0x18')],{'raw':_0x3fddc2[_0x8db2('0x19')]?_0x3fddc2[_0x8db2('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x8db2('0xc')](function(_0x36a9ff){logger[_0x8db2('0x14')](_0x8db2('0x16'),_0x3fddc2);logger[_0x8db2('0xf')]('CreateMailQueueReport',_0x3fddc2,JSON[_0x8db2('0x10')](_0x36a9ff));_0x46ce14(_0x36a9ff);})[_0x8db2('0x15')](function(_0x18f69c){logger[_0x8db2('0x11')](_0x8db2('0x16'),_0x18f69c[_0x8db2('0x13')],_0x3fddc2);_0x51d60d(_0x2efd06[_0x8db2('0x11')](0x1f4,_0x18f69c['message']));});});};exports[_0x8db2('0x1a')]=function(_0x4f6516){var _0x5725f0=this;return new Promise(function(_0x52a9ca,_0x4d923c){return db[_0x8db2('0x1b')][_0x8db2('0x1c')](_0x4f6516[_0x8db2('0x18')],{'raw':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f6516['options']?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1e')]||null:null,'attributes':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')]['attributes']||null:null,'limit':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1f')]||null:null})[_0x8db2('0xc')](function(_0xbe5ece){logger[_0x8db2('0x14')](_0x8db2('0x1a'),_0x4f6516);logger[_0x8db2('0xf')](_0x8db2('0x1a'),_0x4f6516,JSON['stringify'](_0xbe5ece));_0x52a9ca(_0xbe5ece);})[_0x8db2('0x15')](function(_0x50b28d){logger['error'](_0x8db2('0x1a'),_0x50b28d[_0x8db2('0x13')],_0x4f6516);_0x4d923c(_0x5725f0[_0x8db2('0x11')](0x1f4,_0x50b28d['message']));});});};
\ No newline at end of file
index 106b2eb..25c2e4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x997a83,_0x4e971f){var _0x58b0c4=function(_0x94ff29){while(--_0x94ff29){_0x997a83['push'](_0x997a83['shift']());}};_0x58b0c4(++_0x4e971f);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x22810f,_0x129dff){var _0x49f32f=function(_0x3e20e1){while(--_0x3e20e1){_0x22810f['push'](_0x22810f['shift']());}};_0x49f32f(++_0x129dff);}(_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 4849832..0b1f863 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x407f=['INTEGER','INBOX','STRING','BOOLEAN'];(function(_0x2fbaf9,_0x7642){var _0x3249f0=function(_0x44466b){while(--_0x44466b){_0x2fbaf9['push'](_0x2fbaf9['shift']());}};_0x3249f0(++_0x7642);}(_0x407f,0xc2));var _0xf407=function(_0x1ef35d,_0x4ae9eb){_0x1ef35d=_0x1ef35d-0x0;var _0xf195f3=_0x407f[_0x1ef35d];return _0xf195f3;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xf407('0x0')]},'authentication':{'type':Sequelize[_0xf407('0x1')],'defaultValue':!![]},'user':{'type':Sequelize[_0xf407('0x0')]},'password':{'type':Sequelize[_0xf407('0x0')]},'port':{'type':Sequelize[_0xf407('0x2')]},'tls':{'type':Sequelize[_0xf407('0x1')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xf407('0x0')],'defaultValue':_0xf407('0x3')},'connTimeout':{'type':Sequelize[_0xf407('0x2')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xf407('0x2')],'defaultValue':0x5},'service':{'type':Sequelize[_0xf407('0x0')]}};
\ No newline at end of file
+var _0x8f59=['BOOLEAN','INTEGER','INBOX','sequelize','exports','STRING'];(function(_0x507b0e,_0x4ecd65){var _0xbde6f5=function(_0x409e11){while(--_0x409e11){_0x507b0e['push'](_0x507b0e['shift']());}};_0xbde6f5(++_0x4ecd65);}(_0x8f59,0x11d));var _0x98f5=function(_0x1b3f63,_0x5578c9){_0x1b3f63=_0x1b3f63-0x0;var _0x39005d=_0x8f59[_0x1b3f63];return _0x39005d;};'use strict';var Sequelize=require(_0x98f5('0x0'));module[_0x98f5('0x1')]={'description':{'type':Sequelize[_0x98f5('0x2')]},'host':{'type':Sequelize[_0x98f5('0x2')]},'authentication':{'type':Sequelize[_0x98f5('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0x98f5('0x2')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x98f5('0x4')]},'tls':{'type':Sequelize[_0x98f5('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x98f5('0x2')],'defaultValue':_0x98f5('0x5')},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x98f5('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0x98f5('0x2')]}};
\ No newline at end of file
index 2483ea3..c05c68f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ec6=['../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','define','MailServerIn','lodash','util'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0x7ec6,0xf8));var _0x67ec=function(_0x29e2ba,_0x1b171f){_0x29e2ba=_0x29e2ba-0x0;var _0x5c5920=_0x7ec6[_0x29e2ba];return _0x5c5920;};'use strict';var _=require(_0x67ec('0x0'));var util=require(_0x67ec('0x1'));var logger=require(_0x67ec('0x2'))('api');var moment=require('moment');var BPromise=require(_0x67ec('0x3'));var rp=require(_0x67ec('0x4'));var fs=require('fs');var path=require(_0x67ec('0x5'));var rimraf=require(_0x67ec('0x6'));var config=require(_0x67ec('0x7'));var attributes=require('./mailServerIn.attributes');module['exports']=function(_0x637fb6,_0x3c07d8){return _0x637fb6[_0x67ec('0x8')](_0x67ec('0x9'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbbfa=['exports','define','MailServerIn','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x90a7d5,_0x3a8040){var _0x4f10d5=function(_0x3f21de){while(--_0x3f21de){_0x90a7d5['push'](_0x90a7d5['shift']());}};_0x4f10d5(++_0x3a8040);}(_0xbbfa,0x179));var _0xabbf=function(_0x2a4da6,_0x5e7f66){_0x2a4da6=_0x2a4da6-0x0;var _0x21f384=_0xbbfa[_0x2a4da6];return _0x21f384;};'use strict';var _=require('lodash');var util=require(_0xabbf('0x0'));var logger=require(_0xabbf('0x1'))(_0xabbf('0x2'));var moment=require(_0xabbf('0x3'));var BPromise=require('bluebird');var rp=require(_0xabbf('0x4'));var fs=require('fs');var path=require(_0xabbf('0x5'));var rimraf=require(_0xabbf('0x6'));var config=require(_0xabbf('0x7'));var attributes=require('./mailServerIn.attributes');module[_0xabbf('0x8')]=function(_0x348d83,_0x4a16e9){return _0x348d83[_0xabbf('0x9')](_0xabbf('0xa'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a01f8b6..8c3af42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca07=['include','model','map','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','then','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailServerIn','MailServerIn','findAll','options','where','attributes','limit'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0xca07,0xb1));var _0x7ca0=function(_0x2ab332,_0x509ca8){_0x2ab332=_0x2ab332-0x0;var _0x2055df=_0xca07[_0x2ab332];return _0x2055df;};'use strict';var _=require('lodash');var util=require(_0x7ca0('0x0'));var moment=require('moment');var BPromise=require(_0x7ca0('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7ca0('0x2'));var db=require(_0x7ca0('0x3'))['db'];var utils=require(_0x7ca0('0x4'));var logger=require('../../config/logger')(_0x7ca0('0x5'));var config=require(_0x7ca0('0x6'));var jayson=require(_0x7ca0('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x51a2ba,_0x3c29ad,_0x3934cd){return new BPromise(function(_0x530ce7,_0x2e7f4b){return client['request'](_0x51a2ba,_0x3934cd)[_0x7ca0('0x8')](function(_0x5d7f49){logger['info'](_0x7ca0('0x9'),_0x3c29ad,'request\x20sent');logger[_0x7ca0('0xa')](_0x7ca0('0xb'),_0x3c29ad,_0x7ca0('0xc'),JSON[_0x7ca0('0xd')](_0x5d7f49));if(_0x5d7f49[_0x7ca0('0xe')]){if(_0x5d7f49['error'][_0x7ca0('0xf')]===0x1f4){logger[_0x7ca0('0xe')](_0x7ca0('0x9'),_0x3c29ad,_0x5d7f49[_0x7ca0('0xe')][_0x7ca0('0x10')]);return _0x2e7f4b(_0x5d7f49['error'][_0x7ca0('0x10')]);}logger[_0x7ca0('0xe')](_0x7ca0('0x9'),_0x3c29ad,_0x5d7f49[_0x7ca0('0xe')][_0x7ca0('0x10')]);return _0x530ce7(_0x5d7f49[_0x7ca0('0xe')][_0x7ca0('0x10')]);}else{logger['info']('MailServerIn,\x20%s,\x20%s',_0x3c29ad,'request\x20sent');_0x530ce7(_0x5d7f49[_0x7ca0('0x11')][_0x7ca0('0x10')]);}})[_0x7ca0('0x12')](function(_0x1cbd1d){logger[_0x7ca0('0xe')](_0x7ca0('0x9'),_0x3c29ad,_0x1cbd1d);_0x2e7f4b(_0x1cbd1d);});});}exports[_0x7ca0('0x13')]=function(_0x59e466){var _0x2da9e3=this;return new Promise(function(_0x885c54,_0x4fd71a){return db[_0x7ca0('0x14')][_0x7ca0('0x15')]({'raw':_0x59e466[_0x7ca0('0x16')]?_0x59e466[_0x7ca0('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x59e466[_0x7ca0('0x16')]?_0x59e466[_0x7ca0('0x16')][_0x7ca0('0x17')]||null:null,'attributes':_0x59e466['options']?_0x59e466[_0x7ca0('0x16')][_0x7ca0('0x18')]||null:null,'limit':_0x59e466[_0x7ca0('0x16')]?_0x59e466[_0x7ca0('0x16')][_0x7ca0('0x19')]||null:null,'include':_0x59e466[_0x7ca0('0x16')]?_0x59e466['options']['include']?_['map'](_0x59e466[_0x7ca0('0x16')][_0x7ca0('0x1a')],function(_0x445ea6){return{'model':db[_0x445ea6[_0x7ca0('0x1b')]],'as':_0x445ea6['as'],'attributes':_0x445ea6[_0x7ca0('0x18')],'include':_0x445ea6[_0x7ca0('0x1a')]?_[_0x7ca0('0x1c')](_0x445ea6[_0x7ca0('0x1a')],function(_0x54e547){return{'model':db[_0x54e547['model']],'as':_0x54e547['as'],'attributes':_0x54e547[_0x7ca0('0x18')],'include':_0x54e547[_0x7ca0('0x1a')]?_[_0x7ca0('0x1c')](_0x54e547['include'],function(_0x4272ea){return{'model':db[_0x4272ea[_0x7ca0('0x1b')]],'as':_0x4272ea['as'],'attributes':_0x4272ea[_0x7ca0('0x18')]};}):[]};}):[]};}):[]:[]})[_0x7ca0('0x8')](function(_0x1958ad){logger['info'](_0x7ca0('0x13'),_0x59e466);logger[_0x7ca0('0xa')](_0x7ca0('0x13'),_0x59e466,JSON[_0x7ca0('0xd')](_0x1958ad));_0x885c54(_0x1958ad);})[_0x7ca0('0x12')](function(_0x4d487f){logger[_0x7ca0('0xe')](_0x7ca0('0x13'),_0x4d487f[_0x7ca0('0x10')],_0x59e466);_0x4fd71a(_0x2da9e3[_0x7ca0('0xe')](0x1f4,_0x4d487f['message']));});});};
\ No newline at end of file
+var _0x6e65=['info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetMailServerIn','options','raw','limit','include','model','map','attributes','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','then'];(function(_0x426930,_0x1a97c2){var _0x4e29ab=function(_0x5aca1d){while(--_0x5aca1d){_0x426930['push'](_0x426930['shift']());}};_0x4e29ab(++_0x1a97c2);}(_0x6e65,0x1c5));var _0x56e6=function(_0x347999,_0x315e31){_0x347999=_0x347999-0x0;var _0x48aec3=_0x6e65[_0x347999];return _0x48aec3;};'use strict';var _=require(_0x56e6('0x0'));var util=require('util');var moment=require(_0x56e6('0x1'));var BPromise=require(_0x56e6('0x2'));var rs=require(_0x56e6('0x3'));var fs=require('fs');var Redis=require(_0x56e6('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x56e6('0x5'))(_0x56e6('0x6'));var config=require(_0x56e6('0x7'));var jayson=require(_0x56e6('0x8'));var client=jayson['client'][_0x56e6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f1ab9,_0x5dd5c0,_0x3fd896){return new BPromise(function(_0x587f3b,_0x55e9de){return client['request'](_0x1f1ab9,_0x3fd896)[_0x56e6('0xa')](function(_0x5cbc9f){logger[_0x56e6('0xb')](_0x56e6('0xc'),_0x5dd5c0,_0x56e6('0xd'));logger[_0x56e6('0xe')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x5dd5c0,'request\x20sent',JSON[_0x56e6('0xf')](_0x5cbc9f));if(_0x5cbc9f[_0x56e6('0x10')]){if(_0x5cbc9f['error'][_0x56e6('0x11')]===0x1f4){logger['error']('MailServerIn,\x20%s,\x20%s',_0x5dd5c0,_0x5cbc9f[_0x56e6('0x10')][_0x56e6('0x12')]);return _0x55e9de(_0x5cbc9f[_0x56e6('0x10')][_0x56e6('0x12')]);}logger[_0x56e6('0x10')](_0x56e6('0xc'),_0x5dd5c0,_0x5cbc9f[_0x56e6('0x10')][_0x56e6('0x12')]);return _0x587f3b(_0x5cbc9f[_0x56e6('0x10')][_0x56e6('0x12')]);}else{logger[_0x56e6('0xb')](_0x56e6('0xc'),_0x5dd5c0,_0x56e6('0xd'));_0x587f3b(_0x5cbc9f[_0x56e6('0x13')]['message']);}})['catch'](function(_0x3590c3){logger['error']('MailServerIn,\x20%s,\x20%s',_0x5dd5c0,_0x3590c3);_0x55e9de(_0x3590c3);});});}exports[_0x56e6('0x14')]=function(_0x3ae6a1){var _0x4baa02=this;return new Promise(function(_0x4497d9,_0x1278f0){return db['MailServerIn']['findAll']({'raw':_0x3ae6a1['options']?_0x3ae6a1[_0x56e6('0x15')][_0x56e6('0x16')]===undefined?!![]:![]:!![],'where':_0x3ae6a1[_0x56e6('0x15')]?_0x3ae6a1['options']['where']||null:null,'attributes':_0x3ae6a1[_0x56e6('0x15')]?_0x3ae6a1[_0x56e6('0x15')]['attributes']||null:null,'limit':_0x3ae6a1['options']?_0x3ae6a1[_0x56e6('0x15')][_0x56e6('0x17')]||null:null,'include':_0x3ae6a1['options']?_0x3ae6a1[_0x56e6('0x15')][_0x56e6('0x18')]?_['map'](_0x3ae6a1[_0x56e6('0x15')][_0x56e6('0x18')],function(_0xbe57ad){return{'model':db[_0xbe57ad[_0x56e6('0x19')]],'as':_0xbe57ad['as'],'attributes':_0xbe57ad['attributes'],'include':_0xbe57ad[_0x56e6('0x18')]?_[_0x56e6('0x1a')](_0xbe57ad[_0x56e6('0x18')],function(_0x496ee3){return{'model':db[_0x496ee3['model']],'as':_0x496ee3['as'],'attributes':_0x496ee3[_0x56e6('0x1b')],'include':_0x496ee3[_0x56e6('0x18')]?_[_0x56e6('0x1a')](_0x496ee3[_0x56e6('0x18')],function(_0xaf828d){return{'model':db[_0xaf828d[_0x56e6('0x19')]],'as':_0xaf828d['as'],'attributes':_0xaf828d['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x284949){logger['info']('GetMailServerIn',_0x3ae6a1);logger[_0x56e6('0xe')](_0x56e6('0x14'),_0x3ae6a1,JSON[_0x56e6('0xf')](_0x284949));_0x4497d9(_0x284949);})[_0x56e6('0x1c')](function(_0x57a686){logger[_0x56e6('0x10')]('GetMailServerIn',_0x57a686['message'],_0x3ae6a1);_0x1278f0(_0x4baa02[_0x56e6('0x10')](0x1f4,_0x57a686[_0x56e6('0x12')]));});});};
\ No newline at end of file
index f1e7d35..95b1b96 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(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x7a54,0x106));var _0x47a5=function(_0x258f27,_0x5a8444){_0x258f27=_0x258f27-0x0;var _0x33ab8c=_0x7a54[_0x258f27];return _0x33ab8c;};'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(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x7a54,0x106));var _0x47a5=function(_0x3b66f6,_0x153432){_0x3b66f6=_0x3b66f6-0x0;var _0x55a457=_0x7a54[_0x3b66f6];return _0x55a457;};'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 e20e644..8047fba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74cc=['BOOLEAN','sequelize','exports','STRING','INTEGER'];(function(_0x2b5b76,_0x38ce26){var _0x172d26=function(_0x5553c0){while(--_0x5553c0){_0x2b5b76['push'](_0x2b5b76['shift']());}};_0x172d26(++_0x38ce26);}(_0x74cc,0x1b4));var _0xc74c=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x74cc[_0x4154a6];return _0x3b2786;};'use strict';var Sequelize=require(_0xc74c('0x0'));module[_0xc74c('0x1')]={'description':{'type':Sequelize[_0xc74c('0x2')]},'host':{'type':Sequelize[_0xc74c('0x2')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0xc74c('0x2')]},'port':{'type':Sequelize[_0xc74c('0x3')]},'secure':{'type':Sequelize[_0xc74c('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0xc74c('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6201=['STRING','BOOLEAN','exports'];(function(_0x5c2c72,_0x22cf09){var _0x11c44c=function(_0x37bcca){while(--_0x37bcca){_0x5c2c72['push'](_0x5c2c72['shift']());}};_0x11c44c(++_0x22cf09);}(_0x6201,0xbf));var _0x1620=function(_0x20211f,_0x3797a2){_0x20211f=_0x20211f-0x0;var _0xbbae5c=_0x6201[_0x20211f];return _0xbbae5c;};'use strict';var Sequelize=require('sequelize');module[_0x1620('0x0')]={'description':{'type':Sequelize[_0x1620('0x1')]},'host':{'type':Sequelize[_0x1620('0x1')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x1620('0x1')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0x1620('0x2')],'defaultValue':![]},'service':{'type':Sequelize[_0x1620('0x1')]},'authentication':{'type':Sequelize[_0x1620('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 8472fc8..d1c10ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f6f=['index','map','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','sort','where','pick','filters','filter','merge','VIRTUAL','options','MailServerOut','include','findAll','rows','params','includeAll','find','create','body','catch','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','ejs','jsforce','to-csv','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','error','stack','name','send'];(function(_0x4e9192,_0x4eefef){var _0x295c41=function(_0xd5b216){while(--_0xd5b216){_0x4e9192['push'](_0x4e9192['shift']());}};_0x295c41(++_0x4eefef);}(_0x2f6f,0x64));var _0xf2f6=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x2f6f[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0xf2f6('0x0'));var rimraf=require(_0xf2f6('0x1'));var zipdir=require(_0xf2f6('0x2'));var jsonpatch=require(_0xf2f6('0x3'));var rp=require(_0xf2f6('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf2f6('0x5'));var util=require(_0xf2f6('0x6'));var path=require(_0xf2f6('0x7'));var sox=require(_0xf2f6('0x8'));var csv=require('to-csv');var ejs=require(_0xf2f6('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf2f6('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xf2f6('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xf2f6('0xc'));var qs=require(_0xf2f6('0xd'));var as=require(_0xf2f6('0xe'));var hardwareService=require(_0xf2f6('0xf'));var logger=require(_0xf2f6('0x10'))(_0xf2f6('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf2f6('0x12'));var db=require(_0xf2f6('0x13'))['db'];function respondWithStatusCode(_0x19cad2,_0xc16052){_0xc16052=_0xc16052||0xcc;return function(_0x35559c){if(_0x35559c){return _0x19cad2['sendStatus'](_0xc16052);}return _0x19cad2[_0xf2f6('0x14')](_0xc16052)[_0xf2f6('0x15')]();};}function respondWithResult(_0x206198,_0xfa190a){_0xfa190a=_0xfa190a||0xc8;return function(_0x2668ce){if(_0x2668ce){return _0x206198[_0xf2f6('0x14')](_0xfa190a)[_0xf2f6('0x16')](_0x2668ce);}};}function respondWithFilteredResult(_0x5d8293,_0xff1f35){return function(_0x3bc7f3){if(_0x3bc7f3){var _0x4b038b=typeof _0xff1f35[_0xf2f6('0x17')]===_0xf2f6('0x18')&&typeof _0xff1f35[_0xf2f6('0x19')]===_0xf2f6('0x18');var _0x202d81=_0x3bc7f3[_0xf2f6('0x1a')];var _0x1aa9d4=_0x4b038b?0x0:_0xff1f35['offset'];var _0x1cf5cb=_0x4b038b?_0x3bc7f3[_0xf2f6('0x1a')]:_0xff1f35[_0xf2f6('0x17')]+_0xff1f35[_0xf2f6('0x19')];var _0x2df166;if(_0x1cf5cb>=_0x202d81){_0x1cf5cb=_0x202d81;_0x2df166=0xc8;}else{_0x2df166=0xce;}_0x5d8293[_0xf2f6('0x14')](_0x2df166);return _0x5d8293['set'](_0xf2f6('0x1b'),_0x1aa9d4+'-'+_0x1cf5cb+'/'+_0x202d81)[_0xf2f6('0x16')](_0x3bc7f3);}return null;};}function patchUpdates(_0x57bd8c){return function(_0x42c834){try{jsonpatch[_0xf2f6('0x1c')](_0x42c834,_0x57bd8c,!![]);}catch(_0x2bf26c){return BPromise['reject'](_0x2bf26c);}return _0x42c834[_0xf2f6('0x1d')]();};}function saveUpdates(_0x4b041b,_0x1932d2){return function(_0x37b2c3){if(_0x37b2c3){return _0x37b2c3['update'](_0x4b041b)[_0xf2f6('0x1e')](function(_0x375863){return _0x375863;});}return null;};}function removeEntity(_0x36bbf5,_0x1d075a){return function(_0x2ffa2b){if(_0x2ffa2b){return _0x2ffa2b[_0xf2f6('0x1f')]()['then'](function(){_0x36bbf5['status'](0xcc)[_0xf2f6('0x15')]();});}};}function handleEntityNotFound(_0x5a5e2e,_0x463724){return function(_0x1c01ef){if(!_0x1c01ef){_0x5a5e2e['sendStatus'](0x194);}return _0x1c01ef;};}function handleError(_0x221b61,_0x267397){_0x267397=_0x267397||0x1f4;return function(_0x2bb832){logger[_0xf2f6('0x20')](_0x2bb832[_0xf2f6('0x21')]);if(_0x2bb832[_0xf2f6('0x22')]){delete _0x2bb832['name'];}_0x221b61[_0xf2f6('0x14')](_0x267397)[_0xf2f6('0x23')](_0x2bb832);};}exports[_0xf2f6('0x24')]=function(_0x1aaef6,_0x5e3f90){var _0x4f3b1f={},_0x4125da={},_0x3cf543={'count':0x0,'rows':[]};var _0x2ed741=_[_0xf2f6('0x25')](db['MailServerOut'][_0xf2f6('0x26')],function(_0x227b5a){return{'name':_0x227b5a[_0xf2f6('0x27')],'type':_0x227b5a[_0xf2f6('0x28')][_0xf2f6('0x29')]};});_0x4125da[_0xf2f6('0x2a')]=_['map'](_0x2ed741,_0xf2f6('0x22'));_0x4125da['query']=_[_0xf2f6('0x2b')](_0x1aaef6[_0xf2f6('0x2c')]);_0x4125da['filters']=_['intersection'](_0x4125da[_0xf2f6('0x2a')],_0x4125da[_0xf2f6('0x2c')]);_0x4f3b1f[_0xf2f6('0x2d')]=_[_0xf2f6('0x2e')](_0x4125da[_0xf2f6('0x2a')],qs[_0xf2f6('0x2f')](_0x1aaef6[_0xf2f6('0x2c')][_0xf2f6('0x2f')]));_0x4f3b1f[_0xf2f6('0x2d')]=_0x4f3b1f['attributes'][_0xf2f6('0x30')]?_0x4f3b1f[_0xf2f6('0x2d')]:_0x4125da[_0xf2f6('0x2a')];if(!_0x1aaef6['query']['hasOwnProperty']('nolimit')){_0x4f3b1f[_0xf2f6('0x19')]=qs[_0xf2f6('0x19')](_0x1aaef6['query'][_0xf2f6('0x19')]);_0x4f3b1f[_0xf2f6('0x17')]=qs[_0xf2f6('0x17')](_0x1aaef6[_0xf2f6('0x2c')][_0xf2f6('0x17')]);}_0x4f3b1f['order']=qs[_0xf2f6('0x31')](_0x1aaef6[_0xf2f6('0x2c')][_0xf2f6('0x31')]);_0x4f3b1f[_0xf2f6('0x32')]=qs['filters'](_[_0xf2f6('0x33')](_0x1aaef6['query'],_0x4125da[_0xf2f6('0x34')]),_0x2ed741);if(_0x1aaef6['query'][_0xf2f6('0x35')]){_0x4f3b1f[_0xf2f6('0x32')]=_[_0xf2f6('0x36')](_0x4f3b1f[_0xf2f6('0x32')],{'$or':_[_0xf2f6('0x25')](_0x2ed741,function(_0xdbc9a7){if(_0xdbc9a7[_0xf2f6('0x28')]!==_0xf2f6('0x37')){var _0x430a6e={};_0x430a6e[_0xdbc9a7[_0xf2f6('0x22')]]={'$like':'%'+_0x1aaef6[_0xf2f6('0x2c')]['filter']+'%'};return _0x430a6e;}})});}_0x4f3b1f=_[_0xf2f6('0x36')]({},_0x4f3b1f,_0x1aaef6[_0xf2f6('0x38')]);var _0x58e69e={'where':_0x4f3b1f[_0xf2f6('0x32')]};return db[_0xf2f6('0x39')][_0xf2f6('0x1a')](_0x58e69e)['then'](function(_0x2c88d4){_0x3cf543[_0xf2f6('0x1a')]=_0x2c88d4;if(_0x1aaef6[_0xf2f6('0x2c')]['includeAll']){_0x4f3b1f[_0xf2f6('0x3a')]=[{'all':!![]}];}return db[_0xf2f6('0x39')][_0xf2f6('0x3b')](_0x4f3b1f);})[_0xf2f6('0x1e')](function(_0x12a0ba){_0x3cf543[_0xf2f6('0x3c')]=_0x12a0ba;return _0x3cf543;})[_0xf2f6('0x1e')](respondWithFilteredResult(_0x5e3f90,_0x4f3b1f))['catch'](handleError(_0x5e3f90,null));};exports['show']=function(_0x4a06df,_0x213e36){var _0x3c5943={'raw':!![],'where':{'id':_0x4a06df[_0xf2f6('0x3d')]['id']}},_0x5cdde8={};_0x5cdde8[_0xf2f6('0x2a')]=_[_0xf2f6('0x2b')](db[_0xf2f6('0x39')][_0xf2f6('0x26')]);_0x5cdde8[_0xf2f6('0x2c')]=_[_0xf2f6('0x2b')](_0x4a06df[_0xf2f6('0x2c')]);_0x5cdde8[_0xf2f6('0x34')]=_[_0xf2f6('0x2e')](_0x5cdde8[_0xf2f6('0x2a')],_0x5cdde8[_0xf2f6('0x2c')]);_0x3c5943[_0xf2f6('0x2d')]=_[_0xf2f6('0x2e')](_0x5cdde8[_0xf2f6('0x2a')],qs[_0xf2f6('0x2f')](_0x4a06df[_0xf2f6('0x2c')][_0xf2f6('0x2f')]));_0x3c5943[_0xf2f6('0x2d')]=_0x3c5943[_0xf2f6('0x2d')][_0xf2f6('0x30')]?_0x3c5943[_0xf2f6('0x2d')]:_0x5cdde8['model'];if(_0x4a06df['query'][_0xf2f6('0x3e')]){_0x3c5943[_0xf2f6('0x3a')]=[{'all':!![]}];}_0x3c5943=_[_0xf2f6('0x36')]({},_0x3c5943,_0x4a06df[_0xf2f6('0x38')]);return db[_0xf2f6('0x39')][_0xf2f6('0x3f')](_0x3c5943)[_0xf2f6('0x1e')](handleEntityNotFound(_0x213e36,null))['then'](respondWithResult(_0x213e36,null))['catch'](handleError(_0x213e36,null));};exports[_0xf2f6('0x40')]=function(_0x239461,_0x37193e){return db[_0xf2f6('0x39')][_0xf2f6('0x40')](_0x239461[_0xf2f6('0x41')],{})[_0xf2f6('0x1e')](respondWithResult(_0x37193e,0xc9))[_0xf2f6('0x42')](handleError(_0x37193e,null));};exports[_0xf2f6('0x43')]=function(_0x500801,_0x3da466){if(_0x500801[_0xf2f6('0x41')]['id']){delete _0x500801['body']['id'];}return db[_0xf2f6('0x39')]['find']({'where':{'id':_0x500801[_0xf2f6('0x3d')]['id']}})[_0xf2f6('0x1e')](handleEntityNotFound(_0x3da466,null))[_0xf2f6('0x1e')](saveUpdates(_0x500801[_0xf2f6('0x41')],null))['then'](respondWithResult(_0x3da466,null))['catch'](handleError(_0x3da466,null));};exports[_0xf2f6('0x1f')]=function(_0x561cea,_0x5d2340){return db['MailServerOut'][_0xf2f6('0x3f')]({'where':{'id':_0x561cea[_0xf2f6('0x3d')]['id']}})[_0xf2f6('0x1e')](handleEntityNotFound(_0x5d2340,null))[_0xf2f6('0x1e')](removeEntity(_0x5d2340,null))[_0xf2f6('0x42')](handleError(_0x5d2340,null));};
\ No newline at end of file
+var _0x9901=['keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','name','index','map','MailServerOut','rawAttributes','fieldName','type','key'];(function(_0x223394,_0x5aaca0){var _0x4e0278=function(_0x2cc63f){while(--_0x2cc63f){_0x223394['push'](_0x223394['shift']());}};_0x4e0278(++_0x5aaca0);}(_0x9901,0x152));var _0x1990=function(_0x9ba57c,_0x5ecc0d){_0x9ba57c=_0x9ba57c-0x0;var _0x627a6e=_0x9901[_0x9ba57c];return _0x627a6e;};'use strict';var emlformat=require(_0x1990('0x0'));var rimraf=require(_0x1990('0x1'));var zipdir=require(_0x1990('0x2'));var jsonpatch=require(_0x1990('0x3'));var rp=require('request-promise');var moment=require(_0x1990('0x4'));var BPromise=require(_0x1990('0x5'));var Mustache=require(_0x1990('0x6'));var util=require(_0x1990('0x7'));var path=require(_0x1990('0x8'));var sox=require(_0x1990('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1990('0xa'));var _=require(_0x1990('0xb'));var squel=require(_0x1990('0xc'));var crypto=require('crypto');var jsforce=require(_0x1990('0xd'));var deskjs=require(_0x1990('0xe'));var toCsv=require(_0x1990('0xf'));var querystring=require(_0x1990('0x10'));var Papa=require(_0x1990('0x11'));var Redis=require(_0x1990('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x1990('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1990('0x14'));var logger=require(_0x1990('0x15'))(_0x1990('0x16'));var utils=require(_0x1990('0x17'));var config=require(_0x1990('0x18'));var licenseUtil=require(_0x1990('0x19'));var db=require(_0x1990('0x1a'))['db'];function respondWithStatusCode(_0xa26621,_0x4a7297){_0x4a7297=_0x4a7297||0xcc;return function(_0x2355e7){if(_0x2355e7){return _0xa26621[_0x1990('0x1b')](_0x4a7297);}return _0xa26621[_0x1990('0x1c')](_0x4a7297)['end']();};}function respondWithResult(_0x180643,_0x2c724c){_0x2c724c=_0x2c724c||0xc8;return function(_0x579c2a){if(_0x579c2a){return _0x180643[_0x1990('0x1c')](_0x2c724c)['json'](_0x579c2a);}};}function respondWithFilteredResult(_0x1d09db,_0x29746f){return function(_0x1a7d09){if(_0x1a7d09){var _0x3c18a9=typeof _0x29746f[_0x1990('0x1d')]===_0x1990('0x1e')&&typeof _0x29746f[_0x1990('0x1f')]==='undefined';var _0x1bc2fe=_0x1a7d09[_0x1990('0x20')];var _0x53326e=_0x3c18a9?0x0:_0x29746f['offset'];var _0x499954=_0x3c18a9?_0x1a7d09[_0x1990('0x20')]:_0x29746f[_0x1990('0x1d')]+_0x29746f[_0x1990('0x1f')];var _0x3f2ccd;if(_0x499954>=_0x1bc2fe){_0x499954=_0x1bc2fe;_0x3f2ccd=0xc8;}else{_0x3f2ccd=0xce;}_0x1d09db[_0x1990('0x1c')](_0x3f2ccd);return _0x1d09db[_0x1990('0x21')](_0x1990('0x22'),_0x53326e+'-'+_0x499954+'/'+_0x1bc2fe)[_0x1990('0x23')](_0x1a7d09);}return null;};}function patchUpdates(_0x429b35){return function(_0x54dbd9){try{jsonpatch[_0x1990('0x24')](_0x54dbd9,_0x429b35,!![]);}catch(_0x5b4309){return BPromise[_0x1990('0x25')](_0x5b4309);}return _0x54dbd9[_0x1990('0x26')]();};}function saveUpdates(_0x252a95,_0x34ed03){return function(_0x2174e9){if(_0x2174e9){return _0x2174e9[_0x1990('0x27')](_0x252a95)[_0x1990('0x28')](function(_0x443426){return _0x443426;});}return null;};}function removeEntity(_0x3cf665,_0x527bf4){return function(_0x5a6efa){if(_0x5a6efa){return _0x5a6efa[_0x1990('0x29')]()['then'](function(){_0x3cf665[_0x1990('0x1c')](0xcc)[_0x1990('0x2a')]();});}};}function handleEntityNotFound(_0x4109b3,_0x541c61){return function(_0x58bc00){if(!_0x58bc00){_0x4109b3[_0x1990('0x1b')](0x194);}return _0x58bc00;};}function handleError(_0x1e536c,_0x3f2315){_0x3f2315=_0x3f2315||0x1f4;return function(_0x218637){logger[_0x1990('0x2b')](_0x218637['stack']);if(_0x218637[_0x1990('0x2c')]){delete _0x218637[_0x1990('0x2c')];}_0x1e536c['status'](_0x3f2315)['send'](_0x218637);};}exports[_0x1990('0x2d')]=function(_0x6ee5a,_0x1eac27){var _0x223fcd={},_0x2c3e91={},_0x7b4baa={'count':0x0,'rows':[]};var _0x1f52df=_[_0x1990('0x2e')](db[_0x1990('0x2f')][_0x1990('0x30')],function(_0x47ae14){return{'name':_0x47ae14[_0x1990('0x31')],'type':_0x47ae14[_0x1990('0x32')][_0x1990('0x33')]};});_0x2c3e91['model']=_[_0x1990('0x2e')](_0x1f52df,_0x1990('0x2c'));_0x2c3e91['query']=_[_0x1990('0x34')](_0x6ee5a[_0x1990('0x35')]);_0x2c3e91[_0x1990('0x36')]=_[_0x1990('0x37')](_0x2c3e91[_0x1990('0x38')],_0x2c3e91[_0x1990('0x35')]);_0x223fcd['attributes']=_[_0x1990('0x37')](_0x2c3e91['model'],qs[_0x1990('0x39')](_0x6ee5a[_0x1990('0x35')]['fields']));_0x223fcd[_0x1990('0x3a')]=_0x223fcd[_0x1990('0x3a')][_0x1990('0x3b')]?_0x223fcd['attributes']:_0x2c3e91['model'];if(!_0x6ee5a[_0x1990('0x35')][_0x1990('0x3c')](_0x1990('0x3d'))){_0x223fcd[_0x1990('0x1f')]=qs[_0x1990('0x1f')](_0x6ee5a[_0x1990('0x35')][_0x1990('0x1f')]);_0x223fcd[_0x1990('0x1d')]=qs[_0x1990('0x1d')](_0x6ee5a['query'][_0x1990('0x1d')]);}_0x223fcd['order']=qs['sort'](_0x6ee5a[_0x1990('0x35')][_0x1990('0x3e')]);_0x223fcd[_0x1990('0x3f')]=qs['filters'](_['pick'](_0x6ee5a[_0x1990('0x35')],_0x2c3e91[_0x1990('0x36')]),_0x1f52df);if(_0x6ee5a[_0x1990('0x35')][_0x1990('0x40')]){_0x223fcd[_0x1990('0x3f')]=_[_0x1990('0x41')](_0x223fcd['where'],{'$or':_['map'](_0x1f52df,function(_0x39943e){if(_0x39943e['type']!==_0x1990('0x42')){var _0x270851={};_0x270851[_0x39943e[_0x1990('0x2c')]]={'$like':'%'+_0x6ee5a[_0x1990('0x35')][_0x1990('0x40')]+'%'};return _0x270851;}})});}_0x223fcd=_[_0x1990('0x41')]({},_0x223fcd,_0x6ee5a[_0x1990('0x43')]);var _0x4fe003={'where':_0x223fcd[_0x1990('0x3f')]};return db[_0x1990('0x2f')][_0x1990('0x20')](_0x4fe003)[_0x1990('0x28')](function(_0x316717){_0x7b4baa['count']=_0x316717;if(_0x6ee5a['query'][_0x1990('0x44')]){_0x223fcd[_0x1990('0x45')]=[{'all':!![]}];}return db[_0x1990('0x2f')][_0x1990('0x46')](_0x223fcd);})[_0x1990('0x28')](function(_0x3e323a){_0x7b4baa[_0x1990('0x47')]=_0x3e323a;return _0x7b4baa;})[_0x1990('0x28')](respondWithFilteredResult(_0x1eac27,_0x223fcd))[_0x1990('0x48')](handleError(_0x1eac27,null));};exports[_0x1990('0x49')]=function(_0x34ff6f,_0x292fcd){var _0x3b56dd={'raw':!![],'where':{'id':_0x34ff6f[_0x1990('0x4a')]['id']}},_0x3c3348={};_0x3c3348['model']=_[_0x1990('0x34')](db[_0x1990('0x2f')][_0x1990('0x30')]);_0x3c3348[_0x1990('0x35')]=_['keys'](_0x34ff6f[_0x1990('0x35')]);_0x3c3348[_0x1990('0x36')]=_['intersection'](_0x3c3348['model'],_0x3c3348[_0x1990('0x35')]);_0x3b56dd['attributes']=_['intersection'](_0x3c3348[_0x1990('0x38')],qs['fields'](_0x34ff6f[_0x1990('0x35')][_0x1990('0x39')]));_0x3b56dd['attributes']=_0x3b56dd[_0x1990('0x3a')][_0x1990('0x3b')]?_0x3b56dd['attributes']:_0x3c3348[_0x1990('0x38')];if(_0x34ff6f[_0x1990('0x35')][_0x1990('0x44')]){_0x3b56dd[_0x1990('0x45')]=[{'all':!![]}];}_0x3b56dd=_[_0x1990('0x41')]({},_0x3b56dd,_0x34ff6f['options']);return db[_0x1990('0x2f')][_0x1990('0x4b')](_0x3b56dd)['then'](handleEntityNotFound(_0x292fcd,null))['then'](respondWithResult(_0x292fcd,null))[_0x1990('0x48')](handleError(_0x292fcd,null));};exports[_0x1990('0x4c')]=function(_0x545c71,_0x4660bc){return db[_0x1990('0x2f')]['create'](_0x545c71[_0x1990('0x4d')],{})['then'](respondWithResult(_0x4660bc,0xc9))['catch'](handleError(_0x4660bc,null));};exports['update']=function(_0x5f43d0,_0x4d4f31){if(_0x5f43d0[_0x1990('0x4d')]['id']){delete _0x5f43d0[_0x1990('0x4d')]['id'];}return db['MailServerOut'][_0x1990('0x4b')]({'where':{'id':_0x5f43d0[_0x1990('0x4a')]['id']}})[_0x1990('0x28')](handleEntityNotFound(_0x4d4f31,null))['then'](saveUpdates(_0x5f43d0[_0x1990('0x4d')],null))['then'](respondWithResult(_0x4d4f31,null))[_0x1990('0x48')](handleError(_0x4d4f31,null));};exports[_0x1990('0x29')]=function(_0x556f70,_0x2ab3c5){return db[_0x1990('0x2f')][_0x1990('0x4b')]({'where':{'id':_0x556f70[_0x1990('0x4a')]['id']}})[_0x1990('0x28')](handleEntityNotFound(_0x2ab3c5,null))[_0x1990('0x28')](removeEntity(_0x2ab3c5,null))['catch'](handleError(_0x2ab3c5,null));};
\ No newline at end of file
index 78f1287..1c58a0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f68=['define','MailServerOut','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes','exports'];(function(_0x416109,_0x4f8619){var _0xf9c380=function(_0x50ce89){while(--_0x50ce89){_0x416109['push'](_0x416109['shift']());}};_0xf9c380(++_0x4f8619);}(_0x4f68,0x13a));var _0x84f6=function(_0x4c3dca,_0x47f55f){_0x4c3dca=_0x4c3dca-0x0;var _0x581a1e=_0x4f68[_0x4c3dca];return _0x581a1e;};'use strict';var _=require(_0x84f6('0x0'));var util=require(_0x84f6('0x1'));var logger=require(_0x84f6('0x2'))('api');var moment=require(_0x84f6('0x3'));var BPromise=require(_0x84f6('0x4'));var rp=require(_0x84f6('0x5'));var fs=require('fs');var path=require(_0x84f6('0x6'));var rimraf=require(_0x84f6('0x7'));var config=require(_0x84f6('0x8'));var attributes=require(_0x84f6('0x9'));module[_0x84f6('0xa')]=function(_0x43ef3b,_0x3273eb){return _0x43ef3b[_0x84f6('0xb')](_0x84f6('0xc'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x755a=['rimraf','../../config/environment','./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out','lodash','../../config/logger','request-promise','path'];(function(_0x2b49fb,_0x444362){var _0x769e1a=function(_0x58c1c1){while(--_0x58c1c1){_0x2b49fb['push'](_0x2b49fb['shift']());}};_0x769e1a(++_0x444362);}(_0x755a,0x75));var _0xa755=function(_0x33fc43,_0x4b9e92){_0x33fc43=_0x33fc43-0x0;var _0x5666a9=_0x755a[_0x33fc43];return _0x5666a9;};'use strict';var _=require(_0xa755('0x0'));var util=require('util');var logger=require(_0xa755('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa755('0x2'));var fs=require('fs');var path=require(_0xa755('0x3'));var rimraf=require(_0xa755('0x4'));var config=require(_0xa755('0x5'));var attributes=require(_0xa755('0x6'));module[_0xa755('0x7')]=function(_0x289e05,_0x14fc3a){return _0x289e05[_0xa755('0x8')](_0xa755('0x9'),attributes,{'tableName':_0xa755('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a41a33f..e391efd 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','MailServerOut,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x4114dd,_0x2ad862){var _0x26f44c=function(_0xad2246){while(--_0xad2246){_0x4114dd['push'](_0x4114dd['shift']());}};_0x26f44c(++_0x2ad862);}(_0xadb5,0xad));var _0x5adb=function(_0x259d90,_0x4259f7){_0x259d90=_0x259d90-0x0;var _0x526c4c=_0xadb5[_0x259d90];return _0x526c4c;};'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']('MailServerOut,\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 _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x353e55,_0x35c4dc){var _0x47a553=function(_0x4d9f36){while(--_0x4d9f36){_0x353e55['push'](_0x353e55['shift']());}};_0x47a553(++_0x35c4dc);}(_0xdb28,0x106));var _0x8db2=function(_0x52c21f,_0x3aa4bc){_0x52c21f=_0x52c21f-0x0;var _0x3e3ce4=_0xdb28[_0x52c21f];return _0x3e3ce4;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
index 3ee9b01..bb95768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9812=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','delete','destroy','path','connect-timeout','express'];(function(_0x5a34e5,_0x2aa9e9){var _0x3f98a5=function(_0x2043e5){while(--_0x2043e5){_0x5a34e5['push'](_0x5a34e5['shift']());}};_0x3f98a5(++_0x2aa9e9);}(_0x9812,0x1dd));var _0x2981=function(_0x220904,_0x5976cc){_0x220904=_0x220904-0x0;var _0x526df1=_0x9812[_0x220904];return _0x526df1;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2981('0x0'));var timeout=require(_0x2981('0x1'));var express=require(_0x2981('0x2'));var router=express['Router']();var fs_extra=require(_0x2981('0x3'));var auth=require(_0x2981('0x4'));var interaction=require(_0x2981('0x5'));var config=require(_0x2981('0x6'));var controller=require(_0x2981('0x7'));router[_0x2981('0x8')]('/',auth[_0x2981('0x9')](),controller['index']);router[_0x2981('0x8')](_0x2981('0xa'),auth[_0x2981('0x9')](),controller[_0x2981('0xb')]);router[_0x2981('0x8')](_0x2981('0xc'),auth['isAuthenticated'](),controller[_0x2981('0xd')]);router[_0x2981('0xe')]('/',auth[_0x2981('0x9')](),controller[_0x2981('0xf')]);router[_0x2981('0x10')](_0x2981('0xc'),auth[_0x2981('0x9')](),controller[_0x2981('0x11')]);router[_0x2981('0x12')](_0x2981('0xc'),auth[_0x2981('0x9')](),controller[_0x2981('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xda87=['delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','index','get','/describe','isAuthenticated','describe','/:id','post','create','put','update'];(function(_0x421cf8,_0x23152c){var _0x145c48=function(_0x565862){while(--_0x565862){_0x421cf8['push'](_0x421cf8['shift']());}};_0x145c48(++_0x23152c);}(_0xda87,0x1ba));var _0x7da8=function(_0x36fbef,_0x4ffc84){_0x36fbef=_0x36fbef-0x0;var _0x45e270=_0xda87[_0x36fbef];return _0x45e270;};'use strict';var multer=require(_0x7da8('0x0'));var util=require(_0x7da8('0x1'));var path=require('path');var timeout=require(_0x7da8('0x2'));var express=require(_0x7da8('0x3'));var router=express[_0x7da8('0x4')]();var fs_extra=require(_0x7da8('0x5'));var auth=require(_0x7da8('0x6'));var interaction=require(_0x7da8('0x7'));var config=require(_0x7da8('0x8'));var controller=require(_0x7da8('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x7da8('0xa')]);router[_0x7da8('0xb')](_0x7da8('0xc'),auth[_0x7da8('0xd')](),controller[_0x7da8('0xe')]);router[_0x7da8('0xb')](_0x7da8('0xf'),auth['isAuthenticated'](),controller['show']);router[_0x7da8('0x10')]('/',auth[_0x7da8('0xd')](),controller[_0x7da8('0x11')]);router[_0x7da8('0x12')]('/:id',auth[_0x7da8('0xd')](),controller[_0x7da8('0x13')]);router[_0x7da8('0x14')](_0x7da8('0xf'),auth['isAuthenticated'](),controller[_0x7da8('0x15')]);module['exports']=router;
\ No newline at end of file
index 7de2b08..fbb425a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf767=['name','exports','STRING'];(function(_0x10e988,_0x272453){var _0x37ed93=function(_0x4f40c4){while(--_0x4f40c4){_0x10e988['push'](_0x10e988['shift']());}};_0x37ed93(++_0x272453);}(_0xf767,0x76));var _0x7f76=function(_0x36fbef,_0x4ffc84){_0x36fbef=_0x36fbef-0x0;var _0x45e270=_0xf767[_0x36fbef];return _0x45e270;};'use strict';var Sequelize=require('sequelize');module[_0x7f76('0x0')]={'name':{'type':Sequelize[_0x7f76('0x1')],'unique':_0x7f76('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x7f76('0x1')]}};
\ No newline at end of file
+var _0x01d9=['sequelize','exports','STRING','name'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x01d9,0x6c));var _0x901d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x01d9[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x901d('0x0'));module[_0x901d('0x1')]={'name':{'type':Sequelize[_0x901d('0x2')],'unique':_0x901d('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 0f5b2ae..74aefc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3272=['set','apply','reject','save','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','VIRTUAL','merge','MailSubstatus','includeAll','include','findAll','rows','catch','show','options','find','create','body','describe','rimraf','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit'];(function(_0x2e504f,_0x8f3280){var _0x5c084d=function(_0x30fb67){while(--_0x30fb67){_0x2e504f['push'](_0x2e504f['shift']());}};_0x5c084d(++_0x8f3280);}(_0x3272,0x77));var _0x2327=function(_0x438d36,_0x546585){_0x438d36=_0x438d36-0x0;var _0x3bdf55=_0x3272[_0x438d36];return _0x3bdf55;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2327('0x0'));var zipdir=require(_0x2327('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2327('0x2'));var moment=require(_0x2327('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2327('0x4'));var util=require(_0x2327('0x5'));var path=require('path');var sox=require(_0x2327('0x6'));var csv=require(_0x2327('0x7'));var ejs=require(_0x2327('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2327('0x9'));var squel=require('squel');var crypto=require(_0x2327('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x2327('0xb'));var toCsv=require(_0x2327('0x7'));var querystring=require(_0x2327('0xc'));var Papa=require('papaparse');var Redis=require(_0x2327('0xd'));var authService=require(_0x2327('0xe'));var qs=require(_0x2327('0xf'));var as=require(_0x2327('0x10'));var hardwareService=require(_0x2327('0x11'));var logger=require('../../config/logger')(_0x2327('0x12'));var utils=require(_0x2327('0x13'));var config=require(_0x2327('0x14'));var licenseUtil=require(_0x2327('0x15'));var db=require(_0x2327('0x16'))['db'];function respondWithStatusCode(_0x573f3d,_0x6132a4){_0x6132a4=_0x6132a4||0xcc;return function(_0x4d4c76){if(_0x4d4c76){return _0x573f3d[_0x2327('0x17')](_0x6132a4);}return _0x573f3d[_0x2327('0x18')](_0x6132a4)[_0x2327('0x19')]();};}function respondWithResult(_0x4f094f,_0x42473f){_0x42473f=_0x42473f||0xc8;return function(_0x3b5fbe){if(_0x3b5fbe){return _0x4f094f[_0x2327('0x18')](_0x42473f)[_0x2327('0x1a')](_0x3b5fbe);}};}function respondWithFilteredResult(_0x5c8f90,_0x1c0993){return function(_0xef4214){if(_0xef4214){var _0x2ca458=typeof _0x1c0993[_0x2327('0x1b')]==='undefined'&&typeof _0x1c0993['limit']===_0x2327('0x1c');var _0x3d744d=_0xef4214[_0x2327('0x1d')];var _0x318a0d=_0x2ca458?0x0:_0x1c0993[_0x2327('0x1b')];var _0x50bae7=_0x2ca458?_0xef4214[_0x2327('0x1d')]:_0x1c0993[_0x2327('0x1b')]+_0x1c0993[_0x2327('0x1e')];var _0x52abae;if(_0x50bae7>=_0x3d744d){_0x50bae7=_0x3d744d;_0x52abae=0xc8;}else{_0x52abae=0xce;}_0x5c8f90[_0x2327('0x18')](_0x52abae);return _0x5c8f90[_0x2327('0x1f')]('Content-Range',_0x318a0d+'-'+_0x50bae7+'/'+_0x3d744d)[_0x2327('0x1a')](_0xef4214);}return null;};}function patchUpdates(_0x244ece){return function(_0x3b88d6){try{jsonpatch[_0x2327('0x20')](_0x3b88d6,_0x244ece,!![]);}catch(_0x289842){return BPromise[_0x2327('0x21')](_0x289842);}return _0x3b88d6[_0x2327('0x22')]();};}function saveUpdates(_0x51cdd9,_0x465eb2){return function(_0x3eef7d){if(_0x3eef7d){return _0x3eef7d[_0x2327('0x23')](_0x51cdd9)[_0x2327('0x24')](function(_0x5b2460){return _0x5b2460;});}return null;};}function removeEntity(_0x38f133,_0x1520fb){return function(_0x3669a3){if(_0x3669a3){return _0x3669a3[_0x2327('0x25')]()[_0x2327('0x24')](function(){_0x38f133[_0x2327('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a015,_0x4338df){return function(_0x34982d){if(!_0x34982d){_0x51a015['sendStatus'](0x194);}return _0x34982d;};}function handleError(_0x59e576,_0x114fb2){_0x114fb2=_0x114fb2||0x1f4;return function(_0x37e082){logger[_0x2327('0x26')](_0x37e082[_0x2327('0x27')]);if(_0x37e082['name']){delete _0x37e082[_0x2327('0x28')];}_0x59e576['status'](_0x114fb2)['send'](_0x37e082);};}exports[_0x2327('0x29')]=function(_0x18439f,_0x382557){var _0x7ae10a={},_0x323613={},_0x306831={'count':0x0,'rows':[]};var _0x2d893d=_[_0x2327('0x2a')](db['MailSubstatus'][_0x2327('0x2b')],function(_0x52ef7a){return{'name':_0x52ef7a[_0x2327('0x2c')],'type':_0x52ef7a[_0x2327('0x2d')][_0x2327('0x2e')]};});_0x323613[_0x2327('0x2f')]=_['map'](_0x2d893d,_0x2327('0x28'));_0x323613[_0x2327('0x30')]=_[_0x2327('0x31')](_0x18439f[_0x2327('0x30')]);_0x323613[_0x2327('0x32')]=_[_0x2327('0x33')](_0x323613[_0x2327('0x2f')],_0x323613[_0x2327('0x30')]);_0x7ae10a[_0x2327('0x34')]=_[_0x2327('0x33')](_0x323613['model'],qs[_0x2327('0x35')](_0x18439f[_0x2327('0x30')][_0x2327('0x35')]));_0x7ae10a[_0x2327('0x34')]=_0x7ae10a[_0x2327('0x34')][_0x2327('0x36')]?_0x7ae10a[_0x2327('0x34')]:_0x323613[_0x2327('0x2f')];if(!_0x18439f[_0x2327('0x30')][_0x2327('0x37')]('nolimit')){_0x7ae10a[_0x2327('0x1e')]=qs[_0x2327('0x1e')](_0x18439f['query'][_0x2327('0x1e')]);_0x7ae10a[_0x2327('0x1b')]=qs['offset'](_0x18439f[_0x2327('0x30')][_0x2327('0x1b')]);}_0x7ae10a[_0x2327('0x38')]=qs[_0x2327('0x39')](_0x18439f[_0x2327('0x30')][_0x2327('0x39')]);_0x7ae10a['where']=qs['filters'](_[_0x2327('0x3a')](_0x18439f['query'],_0x323613[_0x2327('0x32')]),_0x2d893d);if(_0x18439f[_0x2327('0x30')][_0x2327('0x3b')]){_0x7ae10a[_0x2327('0x3c')]=_['merge'](_0x7ae10a[_0x2327('0x3c')],{'$or':_[_0x2327('0x2a')](_0x2d893d,function(_0x590ec4){if(_0x590ec4[_0x2327('0x2d')]!==_0x2327('0x3d')){var _0x500233={};_0x500233[_0x590ec4['name']]={'$like':'%'+_0x18439f[_0x2327('0x30')]['filter']+'%'};return _0x500233;}})});}_0x7ae10a=_[_0x2327('0x3e')]({},_0x7ae10a,_0x18439f['options']);var _0x4fde16={'where':_0x7ae10a['where']};return db[_0x2327('0x3f')][_0x2327('0x1d')](_0x4fde16)['then'](function(_0xc11348){_0x306831['count']=_0xc11348;if(_0x18439f['query'][_0x2327('0x40')]){_0x7ae10a[_0x2327('0x41')]=[{'all':!![]}];}return db[_0x2327('0x3f')][_0x2327('0x42')](_0x7ae10a);})[_0x2327('0x24')](function(_0x153c91){_0x306831[_0x2327('0x43')]=_0x153c91;return _0x306831;})[_0x2327('0x24')](respondWithFilteredResult(_0x382557,_0x7ae10a))[_0x2327('0x44')](handleError(_0x382557,null));};exports[_0x2327('0x45')]=function(_0x24c60d,_0x14cdcc){var _0x2bafb4={'raw':!![],'where':{'id':_0x24c60d['params']['id']}},_0x22d160={};_0x22d160[_0x2327('0x2f')]=_['keys'](db[_0x2327('0x3f')]['rawAttributes']);_0x22d160['query']=_[_0x2327('0x31')](_0x24c60d[_0x2327('0x30')]);_0x22d160[_0x2327('0x32')]=_['intersection'](_0x22d160[_0x2327('0x2f')],_0x22d160['query']);_0x2bafb4[_0x2327('0x34')]=_[_0x2327('0x33')](_0x22d160[_0x2327('0x2f')],qs[_0x2327('0x35')](_0x24c60d[_0x2327('0x30')][_0x2327('0x35')]));_0x2bafb4['attributes']=_0x2bafb4[_0x2327('0x34')]['length']?_0x2bafb4['attributes']:_0x22d160[_0x2327('0x2f')];if(_0x24c60d[_0x2327('0x30')][_0x2327('0x40')]){_0x2bafb4[_0x2327('0x41')]=[{'all':!![]}];}_0x2bafb4=_['merge']({},_0x2bafb4,_0x24c60d[_0x2327('0x46')]);return db['MailSubstatus'][_0x2327('0x47')](_0x2bafb4)[_0x2327('0x24')](handleEntityNotFound(_0x14cdcc,null))[_0x2327('0x24')](respondWithResult(_0x14cdcc,null))[_0x2327('0x44')](handleError(_0x14cdcc,null));};exports[_0x2327('0x48')]=function(_0x3a8a20,_0x3d4845){return db[_0x2327('0x3f')][_0x2327('0x48')](_0x3a8a20[_0x2327('0x49')],{})['then'](respondWithResult(_0x3d4845,0xc9))[_0x2327('0x44')](handleError(_0x3d4845,null));};exports[_0x2327('0x23')]=function(_0x5470ba,_0x1b3fd8){if(_0x5470ba[_0x2327('0x49')]['id']){delete _0x5470ba[_0x2327('0x49')]['id'];}return db[_0x2327('0x3f')][_0x2327('0x47')]({'where':{'id':_0x5470ba['params']['id']}})[_0x2327('0x24')](handleEntityNotFound(_0x1b3fd8,null))['then'](saveUpdates(_0x5470ba['body'],null))['then'](respondWithResult(_0x1b3fd8,null))[_0x2327('0x44')](handleError(_0x1b3fd8,null));};exports[_0x2327('0x25')]=function(_0x4d1ad9,_0x4e473d){return db[_0x2327('0x3f')][_0x2327('0x47')]({'where':{'id':_0x4d1ad9['params']['id']}})[_0x2327('0x24')](handleEntityNotFound(_0x4e473d,null))[_0x2327('0x24')](removeEntity(_0x4e473d,null))[_0x2327('0x44')](handleError(_0x4e473d,null));};exports['describe']=function(_0x537538,_0x5abc30){return db['MailSubstatus'][_0x2327('0x4a')]()[_0x2327('0x24')](respondWithResult(_0x5abc30,null))['catch'](handleError(_0x5abc30,null));};
\ No newline at end of file
+var _0x91c1=['create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','destroy','then','error','stack','name','index','MailSubstatus','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','where','VIRTUAL','includeAll','findAll','rows','show','params','include','options','find','catch'];(function(_0x4ac580,_0x2ab5ec){var _0x3bd631=function(_0x4f47b8){while(--_0x4f47b8){_0x4ac580['push'](_0x4ac580['shift']());}};_0x3bd631(++_0x2ab5ec);}(_0x91c1,0x133));var _0x191c=function(_0x55ff3e,_0x41077f){_0x55ff3e=_0x55ff3e-0x0;var _0x2709eb=_0x91c1[_0x55ff3e];return _0x2709eb;};'use strict';var emlformat=require(_0x191c('0x0'));var rimraf=require(_0x191c('0x1'));var zipdir=require(_0x191c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x191c('0x3'));var moment=require(_0x191c('0x4'));var BPromise=require(_0x191c('0x5'));var Mustache=require(_0x191c('0x6'));var util=require(_0x191c('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x191c('0x8'));var ejs=require(_0x191c('0x9'));var fs=require('fs');var fs_extra=require(_0x191c('0xa'));var _=require(_0x191c('0xb'));var squel=require(_0x191c('0xc'));var crypto=require(_0x191c('0xd'));var jsforce=require(_0x191c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x191c('0x8'));var querystring=require(_0x191c('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x191c('0x10'));var qs=require(_0x191c('0x11'));var as=require(_0x191c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x191c('0x13'))(_0x191c('0x14'));var utils=require(_0x191c('0x15'));var config=require(_0x191c('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x422475,_0x2742ba){_0x2742ba=_0x2742ba||0xcc;return function(_0x539312){if(_0x539312){return _0x422475[_0x191c('0x17')](_0x2742ba);}return _0x422475[_0x191c('0x18')](_0x2742ba)[_0x191c('0x19')]();};}function respondWithResult(_0x2bd634,_0x15cc9a){_0x15cc9a=_0x15cc9a||0xc8;return function(_0x2148fe){if(_0x2148fe){return _0x2bd634[_0x191c('0x18')](_0x15cc9a)[_0x191c('0x1a')](_0x2148fe);}};}function respondWithFilteredResult(_0x3b0936,_0xbaeeca){return function(_0x32357b){if(_0x32357b){var _0x2d468b=typeof _0xbaeeca[_0x191c('0x1b')]==='undefined'&&typeof _0xbaeeca[_0x191c('0x1c')]===_0x191c('0x1d');var _0x5db636=_0x32357b[_0x191c('0x1e')];var _0x18507d=_0x2d468b?0x0:_0xbaeeca[_0x191c('0x1b')];var _0x190dea=_0x2d468b?_0x32357b[_0x191c('0x1e')]:_0xbaeeca[_0x191c('0x1b')]+_0xbaeeca['limit'];var _0x2ed916;if(_0x190dea>=_0x5db636){_0x190dea=_0x5db636;_0x2ed916=0xc8;}else{_0x2ed916=0xce;}_0x3b0936['status'](_0x2ed916);return _0x3b0936[_0x191c('0x1f')]('Content-Range',_0x18507d+'-'+_0x190dea+'/'+_0x5db636)['json'](_0x32357b);}return null;};}function patchUpdates(_0x535c5c){return function(_0x19c4dc){try{jsonpatch[_0x191c('0x20')](_0x19c4dc,_0x535c5c,!![]);}catch(_0x489c74){return BPromise[_0x191c('0x21')](_0x489c74);}return _0x19c4dc[_0x191c('0x22')]();};}function saveUpdates(_0x1e8d51,_0xbe0dcb){return function(_0xe0ac2f){if(_0xe0ac2f){return _0xe0ac2f[_0x191c('0x23')](_0x1e8d51)['then'](function(_0x33887f){return _0x33887f;});}return null;};}function removeEntity(_0x1337b6,_0x5ee747){return function(_0x27060e){if(_0x27060e){return _0x27060e[_0x191c('0x24')]()[_0x191c('0x25')](function(){_0x1337b6[_0x191c('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x13b5ee,_0x375d94){return function(_0x2e03a3){if(!_0x2e03a3){_0x13b5ee[_0x191c('0x17')](0x194);}return _0x2e03a3;};}function handleError(_0x71818f,_0x5f1657){_0x5f1657=_0x5f1657||0x1f4;return function(_0x5d5354){logger[_0x191c('0x26')](_0x5d5354[_0x191c('0x27')]);if(_0x5d5354['name']){delete _0x5d5354[_0x191c('0x28')];}_0x71818f[_0x191c('0x18')](_0x5f1657)['send'](_0x5d5354);};}exports[_0x191c('0x29')]=function(_0x5b3ab3,_0x184933){var _0x10bdbb={},_0x5d6c44={},_0x2cb9a8={'count':0x0,'rows':[]};var _0x31ccd4=_['map'](db[_0x191c('0x2a')]['rawAttributes'],function(_0x4c460e){return{'name':_0x4c460e[_0x191c('0x2b')],'type':_0x4c460e[_0x191c('0x2c')][_0x191c('0x2d')]};});_0x5d6c44[_0x191c('0x2e')]=_[_0x191c('0x2f')](_0x31ccd4,_0x191c('0x28'));_0x5d6c44[_0x191c('0x30')]=_[_0x191c('0x31')](_0x5b3ab3[_0x191c('0x30')]);_0x5d6c44['filters']=_[_0x191c('0x32')](_0x5d6c44[_0x191c('0x2e')],_0x5d6c44[_0x191c('0x30')]);_0x10bdbb[_0x191c('0x33')]=_['intersection'](_0x5d6c44[_0x191c('0x2e')],qs[_0x191c('0x34')](_0x5b3ab3[_0x191c('0x30')][_0x191c('0x34')]));_0x10bdbb[_0x191c('0x33')]=_0x10bdbb[_0x191c('0x33')][_0x191c('0x35')]?_0x10bdbb[_0x191c('0x33')]:_0x5d6c44[_0x191c('0x2e')];if(!_0x5b3ab3[_0x191c('0x30')][_0x191c('0x36')](_0x191c('0x37'))){_0x10bdbb[_0x191c('0x1c')]=qs[_0x191c('0x1c')](_0x5b3ab3['query'][_0x191c('0x1c')]);_0x10bdbb[_0x191c('0x1b')]=qs[_0x191c('0x1b')](_0x5b3ab3[_0x191c('0x30')][_0x191c('0x1b')]);}_0x10bdbb[_0x191c('0x38')]=qs[_0x191c('0x39')](_0x5b3ab3['query'][_0x191c('0x39')]);_0x10bdbb['where']=qs[_0x191c('0x3a')](_[_0x191c('0x3b')](_0x5b3ab3['query'],_0x5d6c44[_0x191c('0x3a')]),_0x31ccd4);if(_0x5b3ab3[_0x191c('0x30')][_0x191c('0x3c')]){_0x10bdbb['where']=_[_0x191c('0x3d')](_0x10bdbb[_0x191c('0x3e')],{'$or':_[_0x191c('0x2f')](_0x31ccd4,function(_0x1a4ff7){if(_0x1a4ff7['type']!==_0x191c('0x3f')){var _0x3a2c02={};_0x3a2c02[_0x1a4ff7[_0x191c('0x28')]]={'$like':'%'+_0x5b3ab3[_0x191c('0x30')]['filter']+'%'};return _0x3a2c02;}})});}_0x10bdbb=_[_0x191c('0x3d')]({},_0x10bdbb,_0x5b3ab3['options']);var _0x4c8278={'where':_0x10bdbb[_0x191c('0x3e')]};return db['MailSubstatus']['count'](_0x4c8278)[_0x191c('0x25')](function(_0x24704c){_0x2cb9a8['count']=_0x24704c;if(_0x5b3ab3[_0x191c('0x30')][_0x191c('0x40')]){_0x10bdbb['include']=[{'all':!![]}];}return db['MailSubstatus'][_0x191c('0x41')](_0x10bdbb);})[_0x191c('0x25')](function(_0x25b020){_0x2cb9a8[_0x191c('0x42')]=_0x25b020;return _0x2cb9a8;})['then'](respondWithFilteredResult(_0x184933,_0x10bdbb))['catch'](handleError(_0x184933,null));};exports[_0x191c('0x43')]=function(_0x2ca696,_0x50f349){var _0x31d493={'raw':!![],'where':{'id':_0x2ca696[_0x191c('0x44')]['id']}},_0x28556b={};_0x28556b[_0x191c('0x2e')]=_[_0x191c('0x31')](db[_0x191c('0x2a')]['rawAttributes']);_0x28556b[_0x191c('0x30')]=_[_0x191c('0x31')](_0x2ca696['query']);_0x28556b[_0x191c('0x3a')]=_[_0x191c('0x32')](_0x28556b['model'],_0x28556b[_0x191c('0x30')]);_0x31d493[_0x191c('0x33')]=_[_0x191c('0x32')](_0x28556b[_0x191c('0x2e')],qs['fields'](_0x2ca696[_0x191c('0x30')][_0x191c('0x34')]));_0x31d493[_0x191c('0x33')]=_0x31d493[_0x191c('0x33')]['length']?_0x31d493[_0x191c('0x33')]:_0x28556b[_0x191c('0x2e')];if(_0x2ca696[_0x191c('0x30')][_0x191c('0x40')]){_0x31d493[_0x191c('0x45')]=[{'all':!![]}];}_0x31d493=_[_0x191c('0x3d')]({},_0x31d493,_0x2ca696[_0x191c('0x46')]);return db[_0x191c('0x2a')][_0x191c('0x47')](_0x31d493)[_0x191c('0x25')](handleEntityNotFound(_0x50f349,null))[_0x191c('0x25')](respondWithResult(_0x50f349,null))[_0x191c('0x48')](handleError(_0x50f349,null));};exports[_0x191c('0x49')]=function(_0x538712,_0x40fb95){return db[_0x191c('0x2a')][_0x191c('0x49')](_0x538712[_0x191c('0x4a')],{})['then'](respondWithResult(_0x40fb95,0xc9))[_0x191c('0x48')](handleError(_0x40fb95,null));};exports['update']=function(_0x24a0df,_0x4b6a99){if(_0x24a0df[_0x191c('0x4a')]['id']){delete _0x24a0df[_0x191c('0x4a')]['id'];}return db[_0x191c('0x2a')]['find']({'where':{'id':_0x24a0df[_0x191c('0x44')]['id']}})[_0x191c('0x25')](handleEntityNotFound(_0x4b6a99,null))[_0x191c('0x25')](saveUpdates(_0x24a0df[_0x191c('0x4a')],null))['then'](respondWithResult(_0x4b6a99,null))['catch'](handleError(_0x4b6a99,null));};exports[_0x191c('0x24')]=function(_0x4b178d,_0x2612b6){return db[_0x191c('0x2a')][_0x191c('0x47')]({'where':{'id':_0x4b178d[_0x191c('0x44')]['id']}})[_0x191c('0x25')](handleEntityNotFound(_0x2612b6,null))[_0x191c('0x25')](removeEntity(_0x2612b6,null))[_0x191c('0x48')](handleError(_0x2612b6,null));};exports[_0x191c('0x4b')]=function(_0x4db9cd,_0x354c51){return db[_0x191c('0x2a')][_0x191c('0x4b')]()['then'](respondWithResult(_0x354c51,null))[_0x191c('0x48')](handleError(_0x354c51,null));};
\ No newline at end of file
index ee01cf6..081397d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9d9=['mail_substatuses','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','MailSubstatus'];(function(_0x533f37,_0x45d65b){var _0x3cf949=function(_0x482fac){while(--_0x482fac){_0x533f37['push'](_0x533f37['shift']());}};_0x3cf949(++_0x45d65b);}(_0xb9d9,0x17a));var _0x9b9d=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xb9d9[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x9b9d('0x0'));var util=require(_0x9b9d('0x1'));var logger=require('../../config/logger')(_0x9b9d('0x2'));var moment=require(_0x9b9d('0x3'));var BPromise=require(_0x9b9d('0x4'));var rp=require(_0x9b9d('0x5'));var fs=require('fs');var path=require(_0x9b9d('0x6'));var rimraf=require(_0x9b9d('0x7'));var config=require(_0x9b9d('0x8'));var attributes=require('./mailSubstatus.attributes');module[_0x9b9d('0x9')]=function(_0x329863,_0x26c883){return _0x329863[_0x9b9d('0xa')](_0x9b9d('0xb'),attributes,{'tableName':_0x9b9d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeebf=['exports','MailSubstatus','mail_substatuses','util','../../config/logger','api','moment','request-promise','rimraf','./mailSubstatus.attributes'];(function(_0x1b9d6f,_0x4e990b){var _0x46b98b=function(_0x52b6b6){while(--_0x52b6b6){_0x1b9d6f['push'](_0x1b9d6f['shift']());}};_0x46b98b(++_0x4e990b);}(_0xeebf,0x143));var _0xfeeb=function(_0x4e3abe,_0x23d12a){_0x4e3abe=_0x4e3abe-0x0;var _0x26409c=_0xeebf[_0x4e3abe];return _0x26409c;};'use strict';var _=require('lodash');var util=require(_0xfeeb('0x0'));var logger=require(_0xfeeb('0x1'))(_0xfeeb('0x2'));var moment=require(_0xfeeb('0x3'));var BPromise=require('bluebird');var rp=require(_0xfeeb('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfeeb('0x5'));var config=require('../../config/environment');var attributes=require(_0xfeeb('0x6'));module[_0xfeeb('0x7')]=function(_0x2377ed,_0xcb55ec){return _0x2377ed['define'](_0xfeeb('0x8'),attributes,{'tableName':_0xfeeb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 64d6827..937542e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb90a=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util'];(function(_0x50e0e4,_0x56cb23){var _0x4e990c=function(_0x472fff){while(--_0x472fff){_0x50e0e4['push'](_0x50e0e4['shift']());}};_0x4e990c(++_0x56cb23);}(_0xb90a,0x88));var _0xab90=function(_0x2649be,_0x3fd86a){_0x2649be=_0x2649be-0x0;var _0x1593d4=_0xb90a[_0x2649be];return _0x1593d4;};'use strict';var _=require(_0xab90('0x0'));var util=require(_0xab90('0x1'));var moment=require(_0xab90('0x2'));var BPromise=require(_0xab90('0x3'));var rs=require(_0xab90('0x4'));var fs=require('fs');var Redis=require(_0xab90('0x5'));var db=require(_0xab90('0x6'))['db'];var utils=require(_0xab90('0x7'));var logger=require(_0xab90('0x8'))('rpc');var config=require(_0xab90('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xab90('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xd442fe,_0x59520c,_0x1cc04a){return new BPromise(function(_0x4be620,_0x26e36a){return client[_0xab90('0xb')](_0xd442fe,_0x1cc04a)[_0xab90('0xc')](function(_0x7ca798){logger['info'](_0xab90('0xd'),_0x59520c,_0xab90('0xe'));logger[_0xab90('0xf')](_0xab90('0x10'),_0x59520c,_0xab90('0xe'),JSON[_0xab90('0x11')](_0x7ca798));if(_0x7ca798['error']){if(_0x7ca798[_0xab90('0x12')]['code']===0x1f4){logger[_0xab90('0x12')](_0xab90('0xd'),_0x59520c,_0x7ca798[_0xab90('0x12')][_0xab90('0x13')]);return _0x26e36a(_0x7ca798[_0xab90('0x12')]['message']);}logger[_0xab90('0x12')](_0xab90('0xd'),_0x59520c,_0x7ca798[_0xab90('0x12')][_0xab90('0x13')]);return _0x4be620(_0x7ca798[_0xab90('0x12')][_0xab90('0x13')]);}else{logger[_0xab90('0x14')](_0xab90('0xd'),_0x59520c,'request\x20sent');_0x4be620(_0x7ca798[_0xab90('0x15')]['message']);}})[_0xab90('0x16')](function(_0x2dad5b){logger['error'](_0xab90('0xd'),_0x59520c,_0x2dad5b);_0x26e36a(_0x2dad5b);});});}
\ No newline at end of file
+var _0x5685=['../../config/utils','../../config/logger','rpc','client','http','request','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x31d948,_0x220b75){var _0x1a1748=function(_0x4cc2f8){while(--_0x4cc2f8){_0x31d948['push'](_0x31d948['shift']());}};_0x1a1748(++_0x220b75);}(_0x5685,0x198));var _0x5568=function(_0x211de6,_0x3fd557){_0x211de6=_0x211de6-0x0;var _0x102863=_0x5685[_0x211de6];return _0x102863;};'use strict';var _=require(_0x5568('0x0'));var util=require('util');var moment=require(_0x5568('0x1'));var BPromise=require(_0x5568('0x2'));var rs=require(_0x5568('0x3'));var fs=require('fs');var Redis=require(_0x5568('0x4'));var db=require(_0x5568('0x5'))['db'];var utils=require(_0x5568('0x6'));var logger=require(_0x5568('0x7'))(_0x5568('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5568('0x9')][_0x5568('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3419ab,_0x3ec332,_0x41997e){return new BPromise(function(_0x4d74f7,_0x299001){return client[_0x5568('0xb')](_0x3419ab,_0x41997e)[_0x5568('0xc')](function(_0x562851){logger[_0x5568('0xd')](_0x5568('0xe'),_0x3ec332,_0x5568('0xf'));logger[_0x5568('0x10')](_0x5568('0x11'),_0x3ec332,'request\x20sent',JSON[_0x5568('0x12')](_0x562851));if(_0x562851[_0x5568('0x13')]){if(_0x562851[_0x5568('0x13')][_0x5568('0x14')]===0x1f4){logger[_0x5568('0x13')](_0x5568('0xe'),_0x3ec332,_0x562851[_0x5568('0x13')][_0x5568('0x15')]);return _0x299001(_0x562851[_0x5568('0x13')][_0x5568('0x15')]);}logger[_0x5568('0x13')](_0x5568('0xe'),_0x3ec332,_0x562851[_0x5568('0x13')]['message']);return _0x4d74f7(_0x562851[_0x5568('0x13')]['message']);}else{logger['info'](_0x5568('0xe'),_0x3ec332,'request\x20sent');_0x4d74f7(_0x562851[_0x5568('0x16')]['message']);}})['catch'](function(_0x8ebe40){logger[_0x5568('0x13')](_0x5568('0xe'),_0x3ec332,_0x8ebe40);_0x299001(_0x8ebe40);});});}
\ No newline at end of file
index 18f527a..8ddd15c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cc1=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','delete','destroy'];(function(_0x2b8722,_0x50d540){var _0x20c180=function(_0x595b40){while(--_0x595b40){_0x2b8722['push'](_0x2b8722['shift']());}};_0x20c180(++_0x50d540);}(_0x6cc1,0x18d));var _0x16cc=function(_0x32729c,_0xf5afd8){_0x32729c=_0x32729c-0x0;var _0x482cfd=_0x6cc1[_0x32729c];return _0x482cfd;};'use strict';var multer=require(_0x16cc('0x0'));var util=require(_0x16cc('0x1'));var path=require(_0x16cc('0x2'));var timeout=require(_0x16cc('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x16cc('0x4'));var auth=require(_0x16cc('0x5'));var interaction=require(_0x16cc('0x6'));var config=require(_0x16cc('0x7'));var controller=require(_0x16cc('0x8'));router[_0x16cc('0x9')]('/',auth[_0x16cc('0xa')](),controller[_0x16cc('0xb')]);router[_0x16cc('0x9')](_0x16cc('0xc'),auth['isAuthenticated'](),controller[_0x16cc('0xd')]);router['get'](_0x16cc('0xe'),auth[_0x16cc('0xa')](),controller['show']);router['post']('/',auth[_0x16cc('0xa')](),controller['create']);router['put'](_0x16cc('0xe'),auth[_0x16cc('0xa')](),controller['update']);router[_0x16cc('0xf')]('/:id',auth[_0x16cc('0xa')](),controller[_0x16cc('0x10')]);module[_0x16cc('0x11')]=router;
\ No newline at end of file
+var _0x065e=['delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x2158a8,_0x335f85){var _0x4b1071=function(_0x2b9124){while(--_0x2b9124){_0x2158a8['push'](_0x2158a8['shift']());}};_0x4b1071(++_0x335f85);}(_0x065e,0x1f0));var _0xe065=function(_0x3ce15d,_0x13bf9b){_0x3ce15d=_0x3ce15d-0x0;var _0x163ae4=_0x065e[_0x3ce15d];return _0x163ae4;};'use strict';var multer=require(_0xe065('0x0'));var util=require(_0xe065('0x1'));var path=require(_0xe065('0x2'));var timeout=require(_0xe065('0x3'));var express=require('express');var router=express[_0xe065('0x4')]();var fs_extra=require(_0xe065('0x5'));var auth=require(_0xe065('0x6'));var interaction=require(_0xe065('0x7'));var config=require('../../config/environment');var controller=require(_0xe065('0x8'));router[_0xe065('0x9')]('/',auth[_0xe065('0xa')](),controller[_0xe065('0xb')]);router[_0xe065('0x9')](_0xe065('0xc'),auth[_0xe065('0xa')](),controller[_0xe065('0xd')]);router[_0xe065('0x9')](_0xe065('0xe'),auth['isAuthenticated'](),controller[_0xe065('0xf')]);router[_0xe065('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xe065('0xe'),auth[_0xe065('0xa')](),controller['update']);router[_0xe065('0x11')]('/:id',auth[_0xe065('0xa')](),controller['destroy']);module[_0xe065('0x12')]=router;
\ No newline at end of file
index 8c25a10..9719e75 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(_0x4d9f50,_0x4a3c90){var _0x2023d7=function(_0x15bfa2){while(--_0x15bfa2){_0x4d9f50['push'](_0x4d9f50['shift']());}};_0x2023d7(++_0x4a3c90);}(_0xaa88,0x137));var _0x8aa8=function(_0x3e69ae,_0x366e8d){_0x3e69ae=_0x3e69ae-0x0;var _0x3d7f42=_0xaa88[_0x3e69ae];return _0x3d7f42;};'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 _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x587d32,_0x45a0c5){var _0x5552f8=function(_0x5f2ff2){while(--_0x5f2ff2){_0x587d32['push'](_0x587d32['shift']());}};_0x5552f8(++_0x45a0c5);}(_0x4b84,0x1cc));var _0x44b8=function(_0x1bc762,_0x523eb3){_0x1bc762=_0x1bc762-0x0;var _0x40f70c=_0x4b84[_0x1bc762];return _0x40f70c;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index 03cd233..1d38c0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x546c=['index','map','MailTransferReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','sort','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send'];(function(_0x271f33,_0x2b5caa){var _0x220c1e=function(_0x266ae6){while(--_0x266ae6){_0x271f33['push'](_0x271f33['shift']());}};_0x220c1e(++_0x2b5caa);}(_0x546c,0x19a));var _0xc546=function(_0x21d9d6,_0x58c02f){_0x21d9d6=_0x21d9d6-0x0;var _0x36ba48=_0x546c[_0x21d9d6];return _0x36ba48;};'use strict';var emlformat=require(_0xc546('0x0'));var rimraf=require(_0xc546('0x1'));var zipdir=require(_0xc546('0x2'));var jsonpatch=require(_0xc546('0x3'));var rp=require(_0xc546('0x4'));var moment=require(_0xc546('0x5'));var BPromise=require(_0xc546('0x6'));var Mustache=require(_0xc546('0x7'));var util=require(_0xc546('0x8'));var path=require(_0xc546('0x9'));var sox=require(_0xc546('0xa'));var csv=require(_0xc546('0xb'));var ejs=require(_0xc546('0xc'));var fs=require('fs');var fs_extra=require(_0xc546('0xd'));var _=require(_0xc546('0xe'));var squel=require('squel');var crypto=require(_0xc546('0xf'));var jsforce=require(_0xc546('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xc546('0xb'));var querystring=require(_0xc546('0x11'));var Papa=require(_0xc546('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc546('0x13'));var as=require(_0xc546('0x14'));var hardwareService=require(_0xc546('0x15'));var logger=require('../../config/logger')(_0xc546('0x16'));var utils=require(_0xc546('0x17'));var config=require(_0xc546('0x18'));var licenseUtil=require(_0xc546('0x19'));var db=require(_0xc546('0x1a'))['db'];function respondWithStatusCode(_0x53150a,_0x3be0e3){_0x3be0e3=_0x3be0e3||0xcc;return function(_0x1bb3e8){if(_0x1bb3e8){return _0x53150a['sendStatus'](_0x3be0e3);}return _0x53150a[_0xc546('0x1b')](_0x3be0e3)[_0xc546('0x1c')]();};}function respondWithResult(_0x48995c,_0x46bc22){_0x46bc22=_0x46bc22||0xc8;return function(_0x5b15f1){if(_0x5b15f1){return _0x48995c[_0xc546('0x1b')](_0x46bc22)[_0xc546('0x1d')](_0x5b15f1);}};}function respondWithFilteredResult(_0x1fef87,_0x85c5d2){return function(_0x565c7d){if(_0x565c7d){var _0x5ab25d=typeof _0x85c5d2[_0xc546('0x1e')]===_0xc546('0x1f')&&typeof _0x85c5d2[_0xc546('0x20')]===_0xc546('0x1f');var _0x4f1fcc=_0x565c7d['count'];var _0x4c20b8=_0x5ab25d?0x0:_0x85c5d2[_0xc546('0x1e')];var _0x37ac0b=_0x5ab25d?_0x565c7d[_0xc546('0x21')]:_0x85c5d2[_0xc546('0x1e')]+_0x85c5d2[_0xc546('0x20')];var _0x433663;if(_0x37ac0b>=_0x4f1fcc){_0x37ac0b=_0x4f1fcc;_0x433663=0xc8;}else{_0x433663=0xce;}_0x1fef87['status'](_0x433663);return _0x1fef87[_0xc546('0x22')](_0xc546('0x23'),_0x4c20b8+'-'+_0x37ac0b+'/'+_0x4f1fcc)['json'](_0x565c7d);}return null;};}function patchUpdates(_0x1a1085){return function(_0x39ab20){try{jsonpatch[_0xc546('0x24')](_0x39ab20,_0x1a1085,!![]);}catch(_0x559cb1){return BPromise[_0xc546('0x25')](_0x559cb1);}return _0x39ab20[_0xc546('0x26')]();};}function saveUpdates(_0x6c3e58,_0x1d666e){return function(_0x315695){if(_0x315695){return _0x315695[_0xc546('0x27')](_0x6c3e58)[_0xc546('0x28')](function(_0x456739){return _0x456739;});}return null;};}function removeEntity(_0xe7a78a,_0x4f8798){return function(_0x4921f8){if(_0x4921f8){return _0x4921f8[_0xc546('0x29')]()[_0xc546('0x28')](function(){_0xe7a78a[_0xc546('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c688c,_0x93d5f){return function(_0x1eaf85){if(!_0x1eaf85){_0x2c688c['sendStatus'](0x194);}return _0x1eaf85;};}function handleError(_0x142bb0,_0x33058c){_0x33058c=_0x33058c||0x1f4;return function(_0x449bfa){logger[_0xc546('0x2a')](_0x449bfa[_0xc546('0x2b')]);if(_0x449bfa['name']){delete _0x449bfa[_0xc546('0x2c')];}_0x142bb0['status'](_0x33058c)[_0xc546('0x2d')](_0x449bfa);};}exports[_0xc546('0x2e')]=function(_0x21362c,_0x2163a1){var _0x3c5199={},_0x4ff53e={},_0x91895c={'count':0x0,'rows':[]};var _0x576b64=_[_0xc546('0x2f')](db[_0xc546('0x30')][_0xc546('0x31')],function(_0x19d062){return{'name':_0x19d062[_0xc546('0x32')],'type':_0x19d062[_0xc546('0x33')]['key']};});_0x4ff53e[_0xc546('0x34')]=_[_0xc546('0x2f')](_0x576b64,_0xc546('0x2c'));_0x4ff53e[_0xc546('0x35')]=_[_0xc546('0x36')](_0x21362c[_0xc546('0x35')]);_0x4ff53e[_0xc546('0x37')]=_[_0xc546('0x38')](_0x4ff53e[_0xc546('0x34')],_0x4ff53e[_0xc546('0x35')]);_0x3c5199[_0xc546('0x39')]=_[_0xc546('0x38')](_0x4ff53e[_0xc546('0x34')],qs['fields'](_0x21362c['query'][_0xc546('0x3a')]));_0x3c5199[_0xc546('0x39')]=_0x3c5199[_0xc546('0x39')][_0xc546('0x3b')]?_0x3c5199['attributes']:_0x4ff53e[_0xc546('0x34')];if(!_0x21362c['query']['hasOwnProperty']('nolimit')){_0x3c5199[_0xc546('0x20')]=qs[_0xc546('0x20')](_0x21362c[_0xc546('0x35')][_0xc546('0x20')]);_0x3c5199[_0xc546('0x1e')]=qs[_0xc546('0x1e')](_0x21362c[_0xc546('0x35')][_0xc546('0x1e')]);}_0x3c5199['order']=qs[_0xc546('0x3c')](_0x21362c['query']['sort']);_0x3c5199['where']=qs[_0xc546('0x37')](_['pick'](_0x21362c[_0xc546('0x35')],_0x4ff53e[_0xc546('0x37')]),_0x576b64);if(_0x21362c[_0xc546('0x35')][_0xc546('0x3d')]){_0x3c5199['where']=_[_0xc546('0x3e')](_0x3c5199['where'],{'$or':_['map'](_0x576b64,function(_0x1d349a){if(_0x1d349a[_0xc546('0x33')]!==_0xc546('0x3f')){var _0x47e92e={};_0x47e92e[_0x1d349a['name']]={'$like':'%'+_0x21362c['query']['filter']+'%'};return _0x47e92e;}})});}_0x3c5199=_[_0xc546('0x3e')]({},_0x3c5199,_0x21362c['options']);var _0x43ff7f={'where':_0x3c5199['where']};return db[_0xc546('0x30')]['count'](_0x43ff7f)[_0xc546('0x28')](function(_0xc0da5d){_0x91895c[_0xc546('0x21')]=_0xc0da5d;if(_0x21362c[_0xc546('0x35')][_0xc546('0x40')]){_0x3c5199[_0xc546('0x41')]=[{'all':!![]}];}return db[_0xc546('0x30')][_0xc546('0x42')](_0x3c5199);})[_0xc546('0x28')](function(_0x25c6f3){_0x91895c[_0xc546('0x43')]=_0x25c6f3;return _0x91895c;})[_0xc546('0x28')](respondWithFilteredResult(_0x2163a1,_0x3c5199))[_0xc546('0x44')](handleError(_0x2163a1,null));};exports[_0xc546('0x45')]=function(_0x43cade,_0x127c48){var _0x3a78ff={'raw':!![],'where':{'id':_0x43cade[_0xc546('0x46')]['id']}},_0x48b557={};_0x48b557[_0xc546('0x34')]=_[_0xc546('0x36')](db['MailTransferReport']['rawAttributes']);_0x48b557[_0xc546('0x35')]=_[_0xc546('0x36')](_0x43cade[_0xc546('0x35')]);_0x48b557[_0xc546('0x37')]=_[_0xc546('0x38')](_0x48b557[_0xc546('0x34')],_0x48b557[_0xc546('0x35')]);_0x3a78ff[_0xc546('0x39')]=_[_0xc546('0x38')](_0x48b557[_0xc546('0x34')],qs['fields'](_0x43cade['query'][_0xc546('0x3a')]));_0x3a78ff[_0xc546('0x39')]=_0x3a78ff['attributes'][_0xc546('0x3b')]?_0x3a78ff[_0xc546('0x39')]:_0x48b557[_0xc546('0x34')];if(_0x43cade[_0xc546('0x35')][_0xc546('0x40')]){_0x3a78ff[_0xc546('0x41')]=[{'all':!![]}];}_0x3a78ff=_[_0xc546('0x3e')]({},_0x3a78ff,_0x43cade[_0xc546('0x47')]);return db[_0xc546('0x30')][_0xc546('0x48')](_0x3a78ff)[_0xc546('0x28')](handleEntityNotFound(_0x127c48,null))['then'](respondWithResult(_0x127c48,null))[_0xc546('0x44')](handleError(_0x127c48,null));};exports[_0xc546('0x49')]=function(_0x25ecf8,_0xe1aed4){return db[_0xc546('0x30')]['create'](_0x25ecf8[_0xc546('0x4a')],{})['then'](respondWithResult(_0xe1aed4,0xc9))[_0xc546('0x44')](handleError(_0xe1aed4,null));};exports[_0xc546('0x27')]=function(_0xa0b9fb,_0x4df065){if(_0xa0b9fb[_0xc546('0x4a')]['id']){delete _0xa0b9fb[_0xc546('0x4a')]['id'];}return db[_0xc546('0x30')][_0xc546('0x48')]({'where':{'id':_0xa0b9fb[_0xc546('0x46')]['id']}})['then'](handleEntityNotFound(_0x4df065,null))[_0xc546('0x28')](saveUpdates(_0xa0b9fb['body'],null))[_0xc546('0x28')](respondWithResult(_0x4df065,null))[_0xc546('0x44')](handleError(_0x4df065,null));};exports[_0xc546('0x29')]=function(_0x4754ed,_0x38992e){return db['MailTransferReport'][_0xc546('0x48')]({'where':{'id':_0x4754ed[_0xc546('0x46')]['id']}})['then'](handleEntityNotFound(_0x38992e,null))[_0xc546('0x28')](removeEntity(_0x38992e,null))['catch'](handleError(_0x38992e,null));};exports[_0xc546('0x4b')]=function(_0x53bb65,_0x6af8f4){return db[_0xc546('0x30')]['describe']()[_0xc546('0x28')](respondWithResult(_0x6af8f4,null))['catch'](handleError(_0x6af8f4,null));};
\ No newline at end of file
+var _0xe475=['body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','MailTransferReport','rawAttributes','type','key','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create'];(function(_0x56916d,_0x37b935){var _0x2b7f1f=function(_0x206eb1){while(--_0x206eb1){_0x56916d['push'](_0x56916d['shift']());}};_0x2b7f1f(++_0x37b935);}(_0xe475,0x9f));var _0x5e47=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe475[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x5e47('0x0'));var rimraf=require(_0x5e47('0x1'));var zipdir=require(_0x5e47('0x2'));var jsonpatch=require(_0x5e47('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5e47('0x4'));var Mustache=require(_0x5e47('0x5'));var util=require(_0x5e47('0x6'));var path=require(_0x5e47('0x7'));var sox=require(_0x5e47('0x8'));var csv=require(_0x5e47('0x9'));var ejs=require(_0x5e47('0xa'));var fs=require('fs');var fs_extra=require(_0x5e47('0xb'));var _=require(_0x5e47('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5e47('0xd'));var deskjs=require(_0x5e47('0xe'));var toCsv=require(_0x5e47('0x9'));var querystring=require(_0x5e47('0xf'));var Papa=require('papaparse');var Redis=require(_0x5e47('0x10'));var authService=require(_0x5e47('0x11'));var qs=require(_0x5e47('0x12'));var as=require(_0x5e47('0x13'));var hardwareService=require(_0x5e47('0x14'));var logger=require('../../config/logger')(_0x5e47('0x15'));var utils=require(_0x5e47('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5e47('0x17'));var db=require(_0x5e47('0x18'))['db'];function respondWithStatusCode(_0x5c80d0,_0x4f2f6c){_0x4f2f6c=_0x4f2f6c||0xcc;return function(_0x5a20a5){if(_0x5a20a5){return _0x5c80d0[_0x5e47('0x19')](_0x4f2f6c);}return _0x5c80d0[_0x5e47('0x1a')](_0x4f2f6c)[_0x5e47('0x1b')]();};}function respondWithResult(_0x385b5b,_0x3b4054){_0x3b4054=_0x3b4054||0xc8;return function(_0x3dbd37){if(_0x3dbd37){return _0x385b5b[_0x5e47('0x1a')](_0x3b4054)[_0x5e47('0x1c')](_0x3dbd37);}};}function respondWithFilteredResult(_0x568b9f,_0x3c6ba9){return function(_0x3a7dd3){if(_0x3a7dd3){var _0x406955=typeof _0x3c6ba9[_0x5e47('0x1d')]==='undefined'&&typeof _0x3c6ba9['limit']===_0x5e47('0x1e');var _0x40aea5=_0x3a7dd3[_0x5e47('0x1f')];var _0x35cd2c=_0x406955?0x0:_0x3c6ba9[_0x5e47('0x1d')];var _0x5be286=_0x406955?_0x3a7dd3[_0x5e47('0x1f')]:_0x3c6ba9[_0x5e47('0x1d')]+_0x3c6ba9[_0x5e47('0x20')];var _0x165d73;if(_0x5be286>=_0x40aea5){_0x5be286=_0x40aea5;_0x165d73=0xc8;}else{_0x165d73=0xce;}_0x568b9f['status'](_0x165d73);return _0x568b9f[_0x5e47('0x21')](_0x5e47('0x22'),_0x35cd2c+'-'+_0x5be286+'/'+_0x40aea5)[_0x5e47('0x1c')](_0x3a7dd3);}return null;};}function patchUpdates(_0x203f7e){return function(_0x58d4a2){try{jsonpatch[_0x5e47('0x23')](_0x58d4a2,_0x203f7e,!![]);}catch(_0x13fa81){return BPromise[_0x5e47('0x24')](_0x13fa81);}return _0x58d4a2[_0x5e47('0x25')]();};}function saveUpdates(_0x1e0e3b,_0x5f4bc6){return function(_0x3adbe7){if(_0x3adbe7){return _0x3adbe7[_0x5e47('0x26')](_0x1e0e3b)[_0x5e47('0x27')](function(_0x5cc565){return _0x5cc565;});}return null;};}function removeEntity(_0x171a4e,_0x21ece6){return function(_0xa62621){if(_0xa62621){return _0xa62621[_0x5e47('0x28')]()[_0x5e47('0x27')](function(){_0x171a4e[_0x5e47('0x1a')](0xcc)[_0x5e47('0x1b')]();});}};}function handleEntityNotFound(_0x18e75a,_0x36a2c8){return function(_0x3c65d3){if(!_0x3c65d3){_0x18e75a[_0x5e47('0x19')](0x194);}return _0x3c65d3;};}function handleError(_0x4fbac2,_0x530ade){_0x530ade=_0x530ade||0x1f4;return function(_0x53ecce){logger[_0x5e47('0x29')](_0x53ecce[_0x5e47('0x2a')]);if(_0x53ecce[_0x5e47('0x2b')]){delete _0x53ecce[_0x5e47('0x2b')];}_0x4fbac2[_0x5e47('0x1a')](_0x530ade)[_0x5e47('0x2c')](_0x53ecce);};}exports['index']=function(_0x4e427c,_0x511beb){var _0x5bc6ab={},_0x34acaf={},_0x19ed4c={'count':0x0,'rows':[]};var _0x1f7741=_['map'](db[_0x5e47('0x2d')][_0x5e47('0x2e')],function(_0x1adb30){return{'name':_0x1adb30['fieldName'],'type':_0x1adb30[_0x5e47('0x2f')][_0x5e47('0x30')]};});_0x34acaf['model']=_[_0x5e47('0x31')](_0x1f7741,_0x5e47('0x2b'));_0x34acaf[_0x5e47('0x32')]=_[_0x5e47('0x33')](_0x4e427c['query']);_0x34acaf[_0x5e47('0x34')]=_[_0x5e47('0x35')](_0x34acaf[_0x5e47('0x36')],_0x34acaf[_0x5e47('0x32')]);_0x5bc6ab['attributes']=_[_0x5e47('0x35')](_0x34acaf[_0x5e47('0x36')],qs[_0x5e47('0x37')](_0x4e427c['query'][_0x5e47('0x37')]));_0x5bc6ab['attributes']=_0x5bc6ab[_0x5e47('0x38')][_0x5e47('0x39')]?_0x5bc6ab[_0x5e47('0x38')]:_0x34acaf['model'];if(!_0x4e427c[_0x5e47('0x32')][_0x5e47('0x3a')](_0x5e47('0x3b'))){_0x5bc6ab[_0x5e47('0x20')]=qs[_0x5e47('0x20')](_0x4e427c[_0x5e47('0x32')][_0x5e47('0x20')]);_0x5bc6ab[_0x5e47('0x1d')]=qs[_0x5e47('0x1d')](_0x4e427c[_0x5e47('0x32')][_0x5e47('0x1d')]);}_0x5bc6ab['order']=qs[_0x5e47('0x3c')](_0x4e427c[_0x5e47('0x32')]['sort']);_0x5bc6ab[_0x5e47('0x3d')]=qs['filters'](_[_0x5e47('0x3e')](_0x4e427c[_0x5e47('0x32')],_0x34acaf[_0x5e47('0x34')]),_0x1f7741);if(_0x4e427c['query'][_0x5e47('0x3f')]){_0x5bc6ab[_0x5e47('0x3d')]=_[_0x5e47('0x40')](_0x5bc6ab[_0x5e47('0x3d')],{'$or':_['map'](_0x1f7741,function(_0x4de109){if(_0x4de109[_0x5e47('0x2f')]!==_0x5e47('0x41')){var _0x129ccf={};_0x129ccf[_0x4de109[_0x5e47('0x2b')]]={'$like':'%'+_0x4e427c[_0x5e47('0x32')][_0x5e47('0x3f')]+'%'};return _0x129ccf;}})});}_0x5bc6ab=_[_0x5e47('0x40')]({},_0x5bc6ab,_0x4e427c[_0x5e47('0x42')]);var _0x5b4bb1={'where':_0x5bc6ab['where']};return db[_0x5e47('0x2d')]['count'](_0x5b4bb1)[_0x5e47('0x27')](function(_0x48d718){_0x19ed4c[_0x5e47('0x1f')]=_0x48d718;if(_0x4e427c[_0x5e47('0x32')][_0x5e47('0x43')]){_0x5bc6ab[_0x5e47('0x44')]=[{'all':!![]}];}return db[_0x5e47('0x2d')][_0x5e47('0x45')](_0x5bc6ab);})[_0x5e47('0x27')](function(_0x5ddf16){_0x19ed4c[_0x5e47('0x46')]=_0x5ddf16;return _0x19ed4c;})[_0x5e47('0x27')](respondWithFilteredResult(_0x511beb,_0x5bc6ab))[_0x5e47('0x47')](handleError(_0x511beb,null));};exports[_0x5e47('0x48')]=function(_0x25ef22,_0x860dc5){var _0x40c235={'raw':!![],'where':{'id':_0x25ef22[_0x5e47('0x49')]['id']}},_0x4e5fe8={};_0x4e5fe8[_0x5e47('0x36')]=_[_0x5e47('0x33')](db[_0x5e47('0x2d')]['rawAttributes']);_0x4e5fe8[_0x5e47('0x32')]=_[_0x5e47('0x33')](_0x25ef22['query']);_0x4e5fe8[_0x5e47('0x34')]=_[_0x5e47('0x35')](_0x4e5fe8['model'],_0x4e5fe8[_0x5e47('0x32')]);_0x40c235[_0x5e47('0x38')]=_['intersection'](_0x4e5fe8['model'],qs[_0x5e47('0x37')](_0x25ef22[_0x5e47('0x32')][_0x5e47('0x37')]));_0x40c235['attributes']=_0x40c235[_0x5e47('0x38')][_0x5e47('0x39')]?_0x40c235[_0x5e47('0x38')]:_0x4e5fe8['model'];if(_0x25ef22[_0x5e47('0x32')][_0x5e47('0x43')]){_0x40c235[_0x5e47('0x44')]=[{'all':!![]}];}_0x40c235=_[_0x5e47('0x40')]({},_0x40c235,_0x25ef22['options']);return db[_0x5e47('0x2d')]['find'](_0x40c235)[_0x5e47('0x27')](handleEntityNotFound(_0x860dc5,null))[_0x5e47('0x27')](respondWithResult(_0x860dc5,null))[_0x5e47('0x47')](handleError(_0x860dc5,null));};exports[_0x5e47('0x4a')]=function(_0x3f367c,_0x3571f6){return db['MailTransferReport'][_0x5e47('0x4a')](_0x3f367c[_0x5e47('0x4b')],{})[_0x5e47('0x27')](respondWithResult(_0x3571f6,0xc9))[_0x5e47('0x47')](handleError(_0x3571f6,null));};exports[_0x5e47('0x26')]=function(_0xcc4230,_0x85bfa4){if(_0xcc4230['body']['id']){delete _0xcc4230[_0x5e47('0x4b')]['id'];}return db['MailTransferReport'][_0x5e47('0x4c')]({'where':{'id':_0xcc4230['params']['id']}})['then'](handleEntityNotFound(_0x85bfa4,null))[_0x5e47('0x27')](saveUpdates(_0xcc4230[_0x5e47('0x4b')],null))[_0x5e47('0x27')](respondWithResult(_0x85bfa4,null))[_0x5e47('0x47')](handleError(_0x85bfa4,null));};exports['destroy']=function(_0x35fef7,_0x457ba8){return db[_0x5e47('0x2d')][_0x5e47('0x4c')]({'where':{'id':_0x35fef7[_0x5e47('0x49')]['id']}})[_0x5e47('0x27')](handleEntityNotFound(_0x457ba8,null))[_0x5e47('0x27')](removeEntity(_0x457ba8,null))[_0x5e47('0x47')](handleError(_0x457ba8,null));};exports[_0x5e47('0x4d')]=function(_0x25d329,_0x366760){return db[_0x5e47('0x2d')][_0x5e47('0x4d')]()[_0x5e47('0x27')](respondWithResult(_0x366760,null))['catch'](handleError(_0x366760,null));};
\ No newline at end of file
index 9bef643..551873b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x982c=['path','rimraf','../../config/environment','exports','define','MailTransferReport','report_mail_transfer','uniqueid','util','moment','bluebird'];(function(_0x3da625,_0x4ade48){var _0x59bd9e=function(_0x20389e){while(--_0x20389e){_0x3da625['push'](_0x3da625['shift']());}};_0x59bd9e(++_0x4ade48);}(_0x982c,0xd9));var _0xc982=function(_0x6052ae,_0xac25e){_0x6052ae=_0x6052ae-0x0;var _0x104fcb=_0x982c[_0x6052ae];return _0x104fcb;};'use strict';var _=require('lodash');var util=require(_0xc982('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xc982('0x1'));var BPromise=require(_0xc982('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc982('0x3'));var rimraf=require(_0xc982('0x4'));var config=require(_0xc982('0x5'));var attributes=require('./mailTransferReport.attributes');module[_0xc982('0x6')]=function(_0x56b56f,_0x5ad398){return _0x56b56f[_0xc982('0x7')](_0xc982('0x8'),attributes,{'tableName':_0xc982('0x9'),'paranoid':![],'indexes':[{'name':_0xc982('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd50=['util','../../config/logger','api','moment','bluebird','request-promise','exports','define','MailTransferReport','uniqueid'];(function(_0xe331a1,_0x6ec3fe){var _0xdc6ab5=function(_0x1aa440){while(--_0x1aa440){_0xe331a1['push'](_0xe331a1['shift']());}};_0xdc6ab5(++_0x6ec3fe);}(_0xdd50,0x172));var _0x0dd5=function(_0x13cab0,_0x14d825){_0x13cab0=_0x13cab0-0x0;var _0x38804f=_0xdd50[_0x13cab0];return _0x38804f;};'use strict';var _=require('lodash');var util=require(_0x0dd5('0x0'));var logger=require(_0x0dd5('0x1'))(_0x0dd5('0x2'));var moment=require(_0x0dd5('0x3'));var BPromise=require(_0x0dd5('0x4'));var rp=require(_0x0dd5('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailTransferReport.attributes');module[_0x0dd5('0x6')]=function(_0x4f6b13,_0x9471f5){return _0x4f6b13[_0x0dd5('0x7')](_0x0dd5('0x8'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0x0dd5('0x9'),'fields':[_0x0dd5('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index ffe3f03..9a9ffa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcec0=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','lodash','moment','bluebird','randomstring'];(function(_0x64faf7,_0x7edeca){var _0x28a7c9=function(_0x4990c1){while(--_0x4990c1){_0x64faf7['push'](_0x64faf7['shift']());}};_0x28a7c9(++_0x7edeca);}(_0xcec0,0x1ca));var _0x0cec=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xcec0[_0x376b45];return _0x2341b3;};'use strict';var _=require(_0x0cec('0x0'));var util=require('util');var moment=require(_0x0cec('0x1'));var BPromise=require(_0x0cec('0x2'));var rs=require(_0x0cec('0x3'));var fs=require('fs');var Redis=require(_0x0cec('0x4'));var db=require(_0x0cec('0x5'))['db'];var utils=require(_0x0cec('0x6'));var logger=require(_0x0cec('0x7'))(_0x0cec('0x8'));var config=require(_0x0cec('0x9'));var jayson=require(_0x0cec('0xa'));var client=jayson[_0x0cec('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x19d028,_0x10572a,_0x4dc1a9){return new BPromise(function(_0x3186d7,_0x401179){return client[_0x0cec('0xc')](_0x19d028,_0x4dc1a9)['then'](function(_0x1f905c){logger['info'](_0x0cec('0xd'),_0x10572a,_0x0cec('0xe'));logger[_0x0cec('0xf')](_0x0cec('0x10'),_0x10572a,'request\x20sent',JSON[_0x0cec('0x11')](_0x1f905c));if(_0x1f905c[_0x0cec('0x12')]){if(_0x1f905c[_0x0cec('0x12')]['code']===0x1f4){logger[_0x0cec('0x12')](_0x0cec('0xd'),_0x10572a,_0x1f905c[_0x0cec('0x12')][_0x0cec('0x13')]);return _0x401179(_0x1f905c['error']['message']);}logger[_0x0cec('0x12')](_0x0cec('0xd'),_0x10572a,_0x1f905c['error'][_0x0cec('0x13')]);return _0x3186d7(_0x1f905c[_0x0cec('0x12')][_0x0cec('0x13')]);}else{logger[_0x0cec('0x14')]('MailTransferReport,\x20%s,\x20%s',_0x10572a,_0x0cec('0xe'));_0x3186d7(_0x1f905c['result']['message']);}})[_0x0cec('0x15')](function(_0x2a30f7){logger[_0x0cec('0x12')]('MailTransferReport,\x20%s,\x20%s',_0x10572a,_0x2a30f7);_0x401179(_0x2a30f7);});});}
\ No newline at end of file
+var _0x9a8c=['../../mysqldb','../../config/environment','jayson/promise','http','request','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','catch','lodash','moment','randomstring','ioredis'];(function(_0xc36d01,_0x3bf1a6){var _0xecb231=function(_0x2fb301){while(--_0x2fb301){_0xc36d01['push'](_0xc36d01['shift']());}};_0xecb231(++_0x3bf1a6);}(_0x9a8c,0x19a));var _0xc9a8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9a8c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc9a8('0x0'));var util=require('util');var moment=require(_0xc9a8('0x1'));var BPromise=require('bluebird');var rs=require(_0xc9a8('0x2'));var fs=require('fs');var Redis=require(_0xc9a8('0x3'));var db=require(_0xc9a8('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xc9a8('0x5'));var jayson=require(_0xc9a8('0x6'));var client=jayson['client'][_0xc9a8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x108189,_0xad32c4,_0x8dbf65){return new BPromise(function(_0x8576f1,_0x787683){return client[_0xc9a8('0x8')](_0x108189,_0x8dbf65)['then'](function(_0x451488){logger['info'](_0xc9a8('0x9'),_0xad32c4,_0xc9a8('0xa'));logger[_0xc9a8('0xb')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0xad32c4,'request\x20sent',JSON['stringify'](_0x451488));if(_0x451488[_0xc9a8('0xc')]){if(_0x451488[_0xc9a8('0xc')][_0xc9a8('0xd')]===0x1f4){logger[_0xc9a8('0xc')](_0xc9a8('0x9'),_0xad32c4,_0x451488['error'][_0xc9a8('0xe')]);return _0x787683(_0x451488[_0xc9a8('0xc')][_0xc9a8('0xe')]);}logger[_0xc9a8('0xc')](_0xc9a8('0x9'),_0xad32c4,_0x451488['error'][_0xc9a8('0xe')]);return _0x8576f1(_0x451488[_0xc9a8('0xc')][_0xc9a8('0xe')]);}else{logger[_0xc9a8('0xf')]('MailTransferReport,\x20%s,\x20%s',_0xad32c4,_0xc9a8('0xa'));_0x8576f1(_0x451488[_0xc9a8('0x10')][_0xc9a8('0xe')]);}})[_0xc9a8('0x11')](function(_0x4a31e0){logger[_0xc9a8('0xc')](_0xc9a8('0x9'),_0xad32c4,_0x4a31e0);_0x787683(_0x4a31e0);});});}
\ No newline at end of file
index c86169f..e4a60e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x574f=['post','put','update','delete','destroy','multer','connect-timeout','Router','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x229681,_0x3d7c3c){var _0x3f0544=function(_0x27193c){while(--_0x27193c){_0x229681['push'](_0x229681['shift']());}};_0x3f0544(++_0x3d7c3c);}(_0x574f,0x95));var _0xf574=function(_0xfafea,_0x66895){_0xfafea=_0xfafea-0x0;var _0x37cc09=_0x574f[_0xfafea];return _0x37cc09;};'use strict';var multer=require(_0xf574('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf574('0x1'));var express=require('express');var router=express[_0xf574('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf574('0x3'));var controller=require('./memberReport.controller');router[_0xf574('0x4')]('/',auth[_0xf574('0x5')](),controller[_0xf574('0x6')]);router[_0xf574('0x4')](_0xf574('0x7'),auth[_0xf574('0x5')](),controller[_0xf574('0x8')]);router['get'](_0xf574('0x9'),auth['isAuthenticated'](),controller[_0xf574('0xa')]);router[_0xf574('0xb')]('/',auth[_0xf574('0x5')](),controller['create']);router[_0xf574('0xc')](_0xf574('0x9'),auth[_0xf574('0x5')](),controller[_0xf574('0xd')]);router[_0xf574('0xe')]('/:id',auth[_0xf574('0x5')](),controller[_0xf574('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x61e2=['post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','show'];(function(_0x2093f0,_0x1f903c){var _0x37829f=function(_0x27d3bc){while(--_0x27d3bc){_0x2093f0['push'](_0x2093f0['shift']());}};_0x37829f(++_0x1f903c);}(_0x61e2,0x7f));var _0x261e=function(_0x5efaec,_0x5601dd){_0x5efaec=_0x5efaec-0x0;var _0x12ef71=_0x61e2[_0x5efaec];return _0x12ef71;};'use strict';var multer=require(_0x261e('0x0'));var util=require(_0x261e('0x1'));var path=require(_0x261e('0x2'));var timeout=require('connect-timeout');var express=require(_0x261e('0x3'));var router=express[_0x261e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x261e('0x5'));var interaction=require(_0x261e('0x6'));var config=require(_0x261e('0x7'));var controller=require('./memberReport.controller');router[_0x261e('0x8')]('/',auth[_0x261e('0x9')](),controller['index']);router[_0x261e('0x8')]('/describe',auth[_0x261e('0x9')](),controller[_0x261e('0xa')]);router[_0x261e('0x8')](_0x261e('0xb'),auth[_0x261e('0x9')](),controller[_0x261e('0xc')]);router[_0x261e('0xd')]('/',auth[_0x261e('0x9')](),controller[_0x261e('0xe')]);router[_0x261e('0xf')]('/:id',auth[_0x261e('0x9')](),controller[_0x261e('0x10')]);router[_0x261e('0x11')](_0x261e('0xb'),auth[_0x261e('0x9')](),controller[_0x261e('0x12')]);module[_0x261e('0x13')]=router;
\ No newline at end of file
index 60de41e..133de22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf403=['talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]','sequelize','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','getDataValue','setDataValue','exitAt'];(function(_0xa98302,_0x844f27){var _0x1ad8e3=function(_0x57e51d){while(--_0x57e51d){_0xa98302['push'](_0xa98302['shift']());}};_0x1ad8e3(++_0x844f27);}(_0xf403,0x1d3));var _0x3f40=function(_0x58ea15,_0x5056d4){_0x58ea15=_0x58ea15-0x0;var _0x52d2f9=_0xf403[_0x58ea15];return _0x52d2f9;};'use strict';var Sequelize=require(_0x3f40('0x0'));var moment=require('moment');module[_0x3f40('0x1')]={'channel':{'type':Sequelize[_0x3f40('0x2')]},'membername':{'type':Sequelize[_0x3f40('0x2')]},'interface':{'type':Sequelize[_0x3f40('0x2')]},'type':{'type':Sequelize[_0x3f40('0x2')],'defaultValue':_0x3f40('0x3'),'comment':_0x3f40('0x4')},'duration':{'type':Sequelize[_0x3f40('0x5')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x33f742){var _0x22d5e6=moment(_0x33f742);var _0x24fb9e=moment(this[_0x3f40('0x6')]('enterAt'));var _0x1dffe8=_0x22d5e6['diff'](_0x24fb9e,'seconds');this[_0x3f40('0x7')](_0x3f40('0x8'),_0x33f742);this[_0x3f40('0x7')]('duration',_0x1dffe8||null);}},'data1':{'type':Sequelize['STRING'],'comment':_0x3f40('0x9')},'data2':{'type':Sequelize[_0x3f40('0x2')],'comment':_0x3f40('0xa')},'data3':{'type':Sequelize['STRING'],'comment':_0x3f40('0xb')},'data4':{'type':Sequelize[_0x3f40('0x2')],'comment':_0x3f40('0xc')},'data5':{'type':Sequelize['STRING'],'comment':_0x3f40('0xd')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0x3f40('0x5')]},'uniqueid':{'type':Sequelize[_0x3f40('0x2')]}};
\ No newline at end of file
+var _0xb377=['setDataValue','exitAt','duration','talk:[start]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','diff','seconds'];(function(_0x97406,_0x26f75b){var _0x48e0c9=function(_0x2d7108){while(--_0x2d7108){_0x97406['push'](_0x97406['shift']());}};_0x48e0c9(++_0x26f75b);}(_0xb377,0x1b6));var _0x7b37=function(_0x24e7a6,_0xe2d576){_0x24e7a6=_0x24e7a6-0x0;var _0x6f656f=_0xb377[_0x24e7a6];return _0x6f656f;};'use strict';var Sequelize=require(_0x7b37('0x0'));var moment=require(_0x7b37('0x1'));module[_0x7b37('0x2')]={'channel':{'type':Sequelize[_0x7b37('0x3')]},'membername':{'type':Sequelize[_0x7b37('0x3')]},'interface':{'type':Sequelize[_0x7b37('0x3')]},'type':{'type':Sequelize[_0x7b37('0x3')],'defaultValue':_0x7b37('0x4'),'comment':_0x7b37('0x5')},'duration':{'type':Sequelize[_0x7b37('0x6')]},'enterAt':{'type':Sequelize[_0x7b37('0x7')]},'exitAt':{'type':Sequelize[_0x7b37('0x7')],'set':function(_0x58edf9){var _0x516b62=moment(_0x58edf9);var _0x409d34=moment(this['getDataValue']('enterAt'));var _0x3de992=_0x516b62[_0x7b37('0x8')](_0x409d34,_0x7b37('0x9'));this[_0x7b37('0xa')](_0x7b37('0xb'),_0x58edf9);this[_0x7b37('0xa')](_0x7b37('0xc'),_0x3de992||null);}},'data1':{'type':Sequelize[_0x7b37('0x3')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0x7b37('0x3')],'comment':_0x7b37('0xd')},'data3':{'type':Sequelize['STRING'],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0x7b37('0x3')],'comment':_0x7b37('0xe')},'data5':{'type':Sequelize[_0x7b37('0x3')],'comment':_0x7b37('0xf')},'role':{'type':Sequelize[_0x7b37('0x3')]},'internal':{'type':Sequelize[_0x7b37('0x6')]},'uniqueid':{'type':Sequelize[_0x7b37('0x3')]}};
\ No newline at end of file
index 521f245..b83c921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['path','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','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','map','MemberReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','catch','show','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0x34e8,0x12c));var _0x834e=function(_0x52da5,_0x84abfd){_0x52da5=_0x52da5-0x0;var _0x43edbb=_0x34e8[_0x52da5];return _0x43edbb;};'use strict';var emlformat=require(_0x834e('0x0'));var rimraf=require(_0x834e('0x1'));var zipdir=require(_0x834e('0x2'));var jsonpatch=require(_0x834e('0x3'));var rp=require('request-promise');var moment=require(_0x834e('0x4'));var BPromise=require(_0x834e('0x5'));var Mustache=require(_0x834e('0x6'));var util=require(_0x834e('0x7'));var path=require(_0x834e('0x8'));var sox=require(_0x834e('0x9'));var csv=require(_0x834e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x834e('0xb'));var _=require('lodash');var squel=require(_0x834e('0xc'));var crypto=require(_0x834e('0xd'));var jsforce=require(_0x834e('0xe'));var deskjs=require(_0x834e('0xf'));var toCsv=require(_0x834e('0xa'));var querystring=require(_0x834e('0x10'));var Papa=require(_0x834e('0x11'));var Redis=require(_0x834e('0x12'));var authService=require(_0x834e('0x13'));var qs=require(_0x834e('0x14'));var as=require(_0x834e('0x15'));var hardwareService=require(_0x834e('0x16'));var logger=require(_0x834e('0x17'))(_0x834e('0x18'));var utils=require(_0x834e('0x19'));var config=require(_0x834e('0x1a'));var licenseUtil=require(_0x834e('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e5b6d,_0x6cd9b9){_0x6cd9b9=_0x6cd9b9||0xcc;return function(_0x58a27e){if(_0x58a27e){return _0x5e5b6d[_0x834e('0x1c')](_0x6cd9b9);}return _0x5e5b6d[_0x834e('0x1d')](_0x6cd9b9)[_0x834e('0x1e')]();};}function respondWithResult(_0x21cc0a,_0x50e860){_0x50e860=_0x50e860||0xc8;return function(_0x43156c){if(_0x43156c){return _0x21cc0a[_0x834e('0x1d')](_0x50e860)['json'](_0x43156c);}};}function respondWithFilteredResult(_0x316205,_0x4a9cdc){return function(_0x38a8cd){if(_0x38a8cd){var _0x36d443=typeof _0x4a9cdc['offset']===_0x834e('0x1f')&&typeof _0x4a9cdc[_0x834e('0x20')]===_0x834e('0x1f');var _0x50b3f6=_0x38a8cd[_0x834e('0x21')];var _0x211e9a=_0x36d443?0x0:_0x4a9cdc[_0x834e('0x22')];var _0xb993a1=_0x36d443?_0x38a8cd[_0x834e('0x21')]:_0x4a9cdc[_0x834e('0x22')]+_0x4a9cdc[_0x834e('0x20')];var _0x595515;if(_0xb993a1>=_0x50b3f6){_0xb993a1=_0x50b3f6;_0x595515=0xc8;}else{_0x595515=0xce;}_0x316205[_0x834e('0x1d')](_0x595515);return _0x316205[_0x834e('0x23')](_0x834e('0x24'),_0x211e9a+'-'+_0xb993a1+'/'+_0x50b3f6)[_0x834e('0x25')](_0x38a8cd);}return null;};}function patchUpdates(_0x4ab05d){return function(_0x45a630){try{jsonpatch[_0x834e('0x26')](_0x45a630,_0x4ab05d,!![]);}catch(_0x5a05c0){return BPromise[_0x834e('0x27')](_0x5a05c0);}return _0x45a630[_0x834e('0x28')]();};}function saveUpdates(_0x8d406e,_0x5c55ca){return function(_0x4e3f48){if(_0x4e3f48){return _0x4e3f48[_0x834e('0x29')](_0x8d406e)[_0x834e('0x2a')](function(_0x589dde){return _0x589dde;});}return null;};}function removeEntity(_0x25ee1d,_0x1dc1e0){return function(_0x58f4fd){if(_0x58f4fd){return _0x58f4fd[_0x834e('0x2b')]()[_0x834e('0x2a')](function(){_0x25ee1d[_0x834e('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24fcf7,_0x3e310f){return function(_0x5e1cc5){if(!_0x5e1cc5){_0x24fcf7['sendStatus'](0x194);}return _0x5e1cc5;};}function handleError(_0x1e713a,_0x508a1d){_0x508a1d=_0x508a1d||0x1f4;return function(_0x2826ec){logger[_0x834e('0x2c')](_0x2826ec[_0x834e('0x2d')]);if(_0x2826ec[_0x834e('0x2e')]){delete _0x2826ec[_0x834e('0x2e')];}_0x1e713a[_0x834e('0x1d')](_0x508a1d)['send'](_0x2826ec);};}exports['index']=function(_0x4dc64a,_0x58c1d7){var _0x2c7a8d={},_0x567cea={},_0x106d6a={'count':0x0,'rows':[]};var _0x5dacc1=_[_0x834e('0x2f')](db[_0x834e('0x30')][_0x834e('0x31')],function(_0x1e026a){return{'name':_0x1e026a[_0x834e('0x32')],'type':_0x1e026a[_0x834e('0x33')][_0x834e('0x34')]};});_0x567cea[_0x834e('0x35')]=_[_0x834e('0x2f')](_0x5dacc1,'name');_0x567cea[_0x834e('0x36')]=_['keys'](_0x4dc64a[_0x834e('0x36')]);_0x567cea[_0x834e('0x37')]=_[_0x834e('0x38')](_0x567cea[_0x834e('0x35')],_0x567cea[_0x834e('0x36')]);_0x2c7a8d[_0x834e('0x39')]=_[_0x834e('0x38')](_0x567cea[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x4dc64a[_0x834e('0x36')]['fields']));_0x2c7a8d[_0x834e('0x39')]=_0x2c7a8d[_0x834e('0x39')][_0x834e('0x3b')]?_0x2c7a8d[_0x834e('0x39')]:_0x567cea['model'];if(!_0x4dc64a[_0x834e('0x36')][_0x834e('0x3c')]('nolimit')){_0x2c7a8d['limit']=qs['limit'](_0x4dc64a[_0x834e('0x36')][_0x834e('0x20')]);_0x2c7a8d[_0x834e('0x22')]=qs[_0x834e('0x22')](_0x4dc64a[_0x834e('0x36')][_0x834e('0x22')]);}_0x2c7a8d['order']=qs[_0x834e('0x3d')](_0x4dc64a['query'][_0x834e('0x3d')]);_0x2c7a8d[_0x834e('0x3e')]=qs['filters'](_[_0x834e('0x3f')](_0x4dc64a[_0x834e('0x36')],_0x567cea['filters']),_0x5dacc1);if(_0x4dc64a['query'][_0x834e('0x40')]){_0x2c7a8d[_0x834e('0x3e')]=_[_0x834e('0x41')](_0x2c7a8d[_0x834e('0x3e')],{'$or':_[_0x834e('0x2f')](_0x5dacc1,function(_0x4ca43c){if(_0x4ca43c[_0x834e('0x33')]!=='VIRTUAL'){var _0x50c243={};_0x50c243[_0x4ca43c[_0x834e('0x2e')]]={'$like':'%'+_0x4dc64a['query'][_0x834e('0x40')]+'%'};return _0x50c243;}})});}_0x2c7a8d=_[_0x834e('0x41')]({},_0x2c7a8d,_0x4dc64a[_0x834e('0x42')]);var _0x3c59af={'where':_0x2c7a8d[_0x834e('0x3e')]};return db['MemberReport'][_0x834e('0x21')](_0x3c59af)[_0x834e('0x2a')](function(_0x38f266){_0x106d6a['count']=_0x38f266;if(_0x4dc64a[_0x834e('0x36')][_0x834e('0x43')]){_0x2c7a8d['include']=[{'all':!![]}];}return db[_0x834e('0x30')]['findAll'](_0x2c7a8d);})[_0x834e('0x2a')](function(_0x585335){_0x106d6a['rows']=_0x585335;return _0x106d6a;})['then'](respondWithFilteredResult(_0x58c1d7,_0x2c7a8d))[_0x834e('0x44')](handleError(_0x58c1d7,null));};exports[_0x834e('0x45')]=function(_0x3bcbf4,_0xbc1571){var _0x8ad264={'raw':!![],'where':{'id':_0x3bcbf4[_0x834e('0x46')]['id']}},_0x23feea={};_0x23feea['model']=_[_0x834e('0x47')](db['MemberReport'][_0x834e('0x31')]);_0x23feea['query']=_[_0x834e('0x47')](_0x3bcbf4['query']);_0x23feea[_0x834e('0x37')]=_[_0x834e('0x38')](_0x23feea['model'],_0x23feea[_0x834e('0x36')]);_0x8ad264[_0x834e('0x39')]=_[_0x834e('0x38')](_0x23feea[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x3bcbf4[_0x834e('0x36')][_0x834e('0x3a')]));_0x8ad264[_0x834e('0x39')]=_0x8ad264[_0x834e('0x39')][_0x834e('0x3b')]?_0x8ad264['attributes']:_0x23feea[_0x834e('0x35')];if(_0x3bcbf4[_0x834e('0x36')]['includeAll']){_0x8ad264[_0x834e('0x48')]=[{'all':!![]}];}_0x8ad264=_[_0x834e('0x41')]({},_0x8ad264,_0x3bcbf4[_0x834e('0x42')]);return db[_0x834e('0x30')][_0x834e('0x49')](_0x8ad264)[_0x834e('0x2a')](handleEntityNotFound(_0xbc1571,null))['then'](respondWithResult(_0xbc1571,null))['catch'](handleError(_0xbc1571,null));};exports[_0x834e('0x4a')]=function(_0x1a5444,_0x30568e){return db[_0x834e('0x30')][_0x834e('0x4a')](_0x1a5444[_0x834e('0x4b')],{})[_0x834e('0x2a')](respondWithResult(_0x30568e,0xc9))[_0x834e('0x44')](handleError(_0x30568e,null));};exports[_0x834e('0x29')]=function(_0x390c45,_0xf02f0d){if(_0x390c45[_0x834e('0x4b')]['id']){delete _0x390c45[_0x834e('0x4b')]['id'];}return db[_0x834e('0x30')][_0x834e('0x49')]({'where':{'id':_0x390c45[_0x834e('0x46')]['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0xf02f0d,null))[_0x834e('0x2a')](saveUpdates(_0x390c45[_0x834e('0x4b')],null))[_0x834e('0x2a')](respondWithResult(_0xf02f0d,null))['catch'](handleError(_0xf02f0d,null));};exports[_0x834e('0x2b')]=function(_0x1f08b9,_0x4e73e0){return db[_0x834e('0x30')][_0x834e('0x49')]({'where':{'id':_0x1f08b9['params']['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0x4e73e0,null))[_0x834e('0x2a')](removeEntity(_0x4e73e0,null))[_0x834e('0x44')](handleError(_0x4e73e0,null));};exports[_0x834e('0x4c')]=function(_0x4288e4,_0xb77aab){return db[_0x834e('0x30')]['describe']()[_0x834e('0x2a')](respondWithResult(_0xb77aab,null))[_0x834e('0x44')](handleError(_0xb77aab,null));};
\ No newline at end of file
+var _0x3e74=['show','params','options','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','json','undefined','limit','offset','count','status','set','Content-Range','apply','save','update','then','destroy','sendStatus','name','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows'];(function(_0x191bd6,_0xd2f243){var _0x421121=function(_0x4f5dff){while(--_0x4f5dff){_0x191bd6['push'](_0x191bd6['shift']());}};_0x421121(++_0xd2f243);}(_0x3e74,0x175));var _0x43e7=function(_0x12b135,_0x36ff13){_0x12b135=_0x12b135-0x0;var _0x4ddcf8=_0x3e74[_0x12b135];return _0x4ddcf8;};'use strict';var emlformat=require(_0x43e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43e7('0x1'));var jsonpatch=require(_0x43e7('0x2'));var rp=require(_0x43e7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x43e7('0x4'));var util=require('util');var path=require(_0x43e7('0x5'));var sox=require(_0x43e7('0x6'));var csv=require(_0x43e7('0x7'));var ejs=require(_0x43e7('0x8'));var fs=require('fs');var fs_extra=require(_0x43e7('0x9'));var _=require('lodash');var squel=require(_0x43e7('0xa'));var crypto=require(_0x43e7('0xb'));var jsforce=require(_0x43e7('0xc'));var deskjs=require(_0x43e7('0xd'));var toCsv=require(_0x43e7('0x7'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43e7('0xf'));var as=require(_0x43e7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x43e7('0x11'))('api');var utils=require(_0x43e7('0x12'));var config=require(_0x43e7('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x43e7('0x14'))['db'];function respondWithStatusCode(_0xc960ea,_0x2718d3){_0x2718d3=_0x2718d3||0xcc;return function(_0x3bb83f){if(_0x3bb83f){return _0xc960ea['sendStatus'](_0x2718d3);}return _0xc960ea['status'](_0x2718d3)[_0x43e7('0x15')]();};}function respondWithResult(_0x21fdd3,_0x44b0bd){_0x44b0bd=_0x44b0bd||0xc8;return function(_0x51b974){if(_0x51b974){return _0x21fdd3['status'](_0x44b0bd)[_0x43e7('0x16')](_0x51b974);}};}function respondWithFilteredResult(_0x14c146,_0x203378){return function(_0x328445){if(_0x328445){var _0x4de324=typeof _0x203378['offset']===_0x43e7('0x17')&&typeof _0x203378[_0x43e7('0x18')]===_0x43e7('0x17');var _0x5d346f=_0x328445['count'];var _0x446986=_0x4de324?0x0:_0x203378[_0x43e7('0x19')];var _0x9037d3=_0x4de324?_0x328445[_0x43e7('0x1a')]:_0x203378[_0x43e7('0x19')]+_0x203378[_0x43e7('0x18')];var _0x619236;if(_0x9037d3>=_0x5d346f){_0x9037d3=_0x5d346f;_0x619236=0xc8;}else{_0x619236=0xce;}_0x14c146[_0x43e7('0x1b')](_0x619236);return _0x14c146[_0x43e7('0x1c')](_0x43e7('0x1d'),_0x446986+'-'+_0x9037d3+'/'+_0x5d346f)[_0x43e7('0x16')](_0x328445);}return null;};}function patchUpdates(_0x177ee1){return function(_0x4b5d64){try{jsonpatch[_0x43e7('0x1e')](_0x4b5d64,_0x177ee1,!![]);}catch(_0x3c6625){return BPromise['reject'](_0x3c6625);}return _0x4b5d64[_0x43e7('0x1f')]();};}function saveUpdates(_0x3e281e,_0x3945bb){return function(_0x28aacc){if(_0x28aacc){return _0x28aacc[_0x43e7('0x20')](_0x3e281e)[_0x43e7('0x21')](function(_0x54a9e7){return _0x54a9e7;});}return null;};}function removeEntity(_0x454359,_0x4eea52){return function(_0x4c9df3){if(_0x4c9df3){return _0x4c9df3[_0x43e7('0x22')]()[_0x43e7('0x21')](function(){_0x454359['status'](0xcc)[_0x43e7('0x15')]();});}};}function handleEntityNotFound(_0x4ca5cf,_0x326dab){return function(_0x5c5e67){if(!_0x5c5e67){_0x4ca5cf[_0x43e7('0x23')](0x194);}return _0x5c5e67;};}function handleError(_0x1b5f50,_0x20888b){_0x20888b=_0x20888b||0x1f4;return function(_0x405f85){logger['error'](_0x405f85['stack']);if(_0x405f85[_0x43e7('0x24')]){delete _0x405f85['name'];}_0x1b5f50[_0x43e7('0x1b')](_0x20888b)[_0x43e7('0x25')](_0x405f85);};}exports[_0x43e7('0x26')]=function(_0xb1fc63,_0x5087d7){var _0x33a1a5={},_0x4690a6={},_0x45b675={'count':0x0,'rows':[]};var _0x50f9f5=_[_0x43e7('0x27')](db[_0x43e7('0x28')][_0x43e7('0x29')],function(_0x31b2a6){return{'name':_0x31b2a6[_0x43e7('0x2a')],'type':_0x31b2a6[_0x43e7('0x2b')][_0x43e7('0x2c')]};});_0x4690a6[_0x43e7('0x2d')]=_[_0x43e7('0x27')](_0x50f9f5,_0x43e7('0x24'));_0x4690a6['query']=_[_0x43e7('0x2e')](_0xb1fc63[_0x43e7('0x2f')]);_0x4690a6[_0x43e7('0x30')]=_[_0x43e7('0x31')](_0x4690a6[_0x43e7('0x2d')],_0x4690a6['query']);_0x33a1a5[_0x43e7('0x32')]=_[_0x43e7('0x31')](_0x4690a6[_0x43e7('0x2d')],qs[_0x43e7('0x33')](_0xb1fc63['query']['fields']));_0x33a1a5['attributes']=_0x33a1a5[_0x43e7('0x32')][_0x43e7('0x34')]?_0x33a1a5[_0x43e7('0x32')]:_0x4690a6[_0x43e7('0x2d')];if(!_0xb1fc63[_0x43e7('0x2f')][_0x43e7('0x35')]('nolimit')){_0x33a1a5['limit']=qs['limit'](_0xb1fc63['query']['limit']);_0x33a1a5['offset']=qs['offset'](_0xb1fc63[_0x43e7('0x2f')]['offset']);}_0x33a1a5[_0x43e7('0x36')]=qs[_0x43e7('0x37')](_0xb1fc63[_0x43e7('0x2f')][_0x43e7('0x37')]);_0x33a1a5[_0x43e7('0x38')]=qs[_0x43e7('0x30')](_[_0x43e7('0x39')](_0xb1fc63['query'],_0x4690a6['filters']),_0x50f9f5);if(_0xb1fc63['query'][_0x43e7('0x3a')]){_0x33a1a5[_0x43e7('0x38')]=_[_0x43e7('0x3b')](_0x33a1a5[_0x43e7('0x38')],{'$or':_[_0x43e7('0x27')](_0x50f9f5,function(_0x1ed538){if(_0x1ed538[_0x43e7('0x2b')]!==_0x43e7('0x3c')){var _0x55c798={};_0x55c798[_0x1ed538[_0x43e7('0x24')]]={'$like':'%'+_0xb1fc63[_0x43e7('0x2f')]['filter']+'%'};return _0x55c798;}})});}_0x33a1a5=_[_0x43e7('0x3b')]({},_0x33a1a5,_0xb1fc63['options']);var _0x44d8e4={'where':_0x33a1a5[_0x43e7('0x38')]};return db[_0x43e7('0x28')][_0x43e7('0x1a')](_0x44d8e4)[_0x43e7('0x21')](function(_0x234d8f){_0x45b675['count']=_0x234d8f;if(_0xb1fc63['query'][_0x43e7('0x3d')]){_0x33a1a5[_0x43e7('0x3e')]=[{'all':!![]}];}return db[_0x43e7('0x28')][_0x43e7('0x3f')](_0x33a1a5);})[_0x43e7('0x21')](function(_0x4a4a85){_0x45b675[_0x43e7('0x40')]=_0x4a4a85;return _0x45b675;})[_0x43e7('0x21')](respondWithFilteredResult(_0x5087d7,_0x33a1a5))['catch'](handleError(_0x5087d7,null));};exports[_0x43e7('0x41')]=function(_0x51a69c,_0x2ad8ef){var _0x504101={'raw':!![],'where':{'id':_0x51a69c[_0x43e7('0x42')]['id']}},_0x3d81ae={};_0x3d81ae[_0x43e7('0x2d')]=_[_0x43e7('0x2e')](db['MemberReport']['rawAttributes']);_0x3d81ae[_0x43e7('0x2f')]=_[_0x43e7('0x2e')](_0x51a69c[_0x43e7('0x2f')]);_0x3d81ae[_0x43e7('0x30')]=_['intersection'](_0x3d81ae['model'],_0x3d81ae['query']);_0x504101[_0x43e7('0x32')]=_['intersection'](_0x3d81ae[_0x43e7('0x2d')],qs['fields'](_0x51a69c['query'][_0x43e7('0x33')]));_0x504101['attributes']=_0x504101[_0x43e7('0x32')][_0x43e7('0x34')]?_0x504101[_0x43e7('0x32')]:_0x3d81ae[_0x43e7('0x2d')];if(_0x51a69c['query'][_0x43e7('0x3d')]){_0x504101[_0x43e7('0x3e')]=[{'all':!![]}];}_0x504101=_[_0x43e7('0x3b')]({},_0x504101,_0x51a69c[_0x43e7('0x43')]);return db[_0x43e7('0x28')][_0x43e7('0x44')](_0x504101)['then'](handleEntityNotFound(_0x2ad8ef,null))['then'](respondWithResult(_0x2ad8ef,null))[_0x43e7('0x45')](handleError(_0x2ad8ef,null));};exports[_0x43e7('0x46')]=function(_0x212841,_0x4c00a8){return db['MemberReport']['create'](_0x212841[_0x43e7('0x47')],{})[_0x43e7('0x21')](respondWithResult(_0x4c00a8,0xc9))['catch'](handleError(_0x4c00a8,null));};exports[_0x43e7('0x20')]=function(_0x47686e,_0x3c96fe){if(_0x47686e['body']['id']){delete _0x47686e['body']['id'];}return db['MemberReport']['find']({'where':{'id':_0x47686e[_0x43e7('0x42')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x3c96fe,null))['then'](saveUpdates(_0x47686e[_0x43e7('0x47')],null))[_0x43e7('0x21')](respondWithResult(_0x3c96fe,null))[_0x43e7('0x45')](handleError(_0x3c96fe,null));};exports[_0x43e7('0x22')]=function(_0x4a0ce5,_0x2718d5){return db['MemberReport']['find']({'where':{'id':_0x4a0ce5[_0x43e7('0x42')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x2718d5,null))[_0x43e7('0x21')](removeEntity(_0x2718d5,null))[_0x43e7('0x45')](handleError(_0x2718d5,null));};exports[_0x43e7('0x48')]=function(_0x2351cf,_0x1cd87c){return db[_0x43e7('0x28')][_0x43e7('0x48')]()[_0x43e7('0x21')](respondWithResult(_0x1cd87c,null))['catch'](handleError(_0x1cd87c,null));};
\ No newline at end of file
index 5335e96..4fc1f3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5914=['./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername','interface','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5b5af1,_0x1db01b){var _0x45ab7b=function(_0x1e353a){while(--_0x1e353a){_0x5b5af1['push'](_0x5b5af1['shift']());}};_0x45ab7b(++_0x1db01b);}(_0x5914,0x198));var _0x4591=function(_0x4af898,_0x319230){_0x4af898=_0x4af898-0x0;var _0x4820b7=_0x5914[_0x4af898];return _0x4820b7;};'use strict';var _=require(_0x4591('0x0'));var util=require('util');var logger=require(_0x4591('0x1'))(_0x4591('0x2'));var moment=require(_0x4591('0x3'));var BPromise=require(_0x4591('0x4'));var rp=require(_0x4591('0x5'));var fs=require('fs');var path=require(_0x4591('0x6'));var rimraf=require(_0x4591('0x7'));var config=require('../../config/environment');var attributes=require(_0x4591('0x8'));module[_0x4591('0x9')]=function(_0x558d8d,_0x1e6bed){return _0x558d8d[_0x4591('0xa')](_0x4591('0xb'),attributes,{'tableName':_0x4591('0xc'),'paranoid':![],'indexes':[{'name':_0x4591('0xd'),'fields':[_0x4591('0xe'),_0x4591('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x78cb=['request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','report_member','membername_interface','interface','lodash','util','../../config/logger','api','moment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x78cb,0x113));var _0xb78c=function(_0x57a2e1,_0x708336){_0x57a2e1=_0x57a2e1-0x0;var _0x5eede0=_0x78cb[_0x57a2e1];return _0x5eede0;};'use strict';var _=require(_0xb78c('0x0'));var util=require(_0xb78c('0x1'));var logger=require(_0xb78c('0x2'))(_0xb78c('0x3'));var moment=require(_0xb78c('0x4'));var BPromise=require('bluebird');var rp=require(_0xb78c('0x5'));var fs=require('fs');var path=require(_0xb78c('0x6'));var rimraf=require(_0xb78c('0x7'));var config=require(_0xb78c('0x8'));var attributes=require(_0xb78c('0x9'));module[_0xb78c('0xa')]=function(_0x50ab89,_0xb66590){return _0x50ab89['define']('MemberReport',attributes,{'tableName':_0xb78c('0xb'),'paranoid':![],'indexes':[{'name':_0xb78c('0xc'),'fields':['membername',_0xb78c('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 9dad0f4..8fc2ed0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b8e=['create','body','UpdateMemberReport','debug','lodash','moment','bluebird','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','MemberReport,\x20%s,\x20%s','message','result','catch','GetMemberReport','MemberReport','options','raw','attributes','include','map','model','CreateMemberReport'];(function(_0x1029da,_0x4f5487){var _0x18730e=function(_0x1e4085){while(--_0x1e4085){_0x1029da['push'](_0x1029da['shift']());}};_0x18730e(++_0x4f5487);}(_0x9b8e,0x158));var _0xe9b8=function(_0x441269,_0x5c0500){_0x441269=_0x441269-0x0;var _0x505fa7=_0x9b8e[_0x441269];return _0x505fa7;};'use strict';var _=require(_0xe9b8('0x0'));var util=require('util');var moment=require(_0xe9b8('0x1'));var BPromise=require(_0xe9b8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe9b8('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xe9b8('0x4'))(_0xe9b8('0x5'));var config=require('../../config/environment');var jayson=require(_0xe9b8('0x6'));var client=jayson[_0xe9b8('0x7')][_0xe9b8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x260234,_0x4ae5fa,_0x3b67fe){return new BPromise(function(_0x4fe774,_0x536372){return client[_0xe9b8('0x9')](_0x260234,_0x3b67fe)[_0xe9b8('0xa')](function(_0x65e43c){logger[_0xe9b8('0xb')]('MemberReport,\x20%s,\x20%s',_0x4ae5fa,_0xe9b8('0xc'));logger['debug'](_0xe9b8('0xd'),_0x4ae5fa,_0xe9b8('0xc'),JSON[_0xe9b8('0xe')](_0x65e43c));if(_0x65e43c[_0xe9b8('0xf')]){if(_0x65e43c[_0xe9b8('0xf')][_0xe9b8('0x10')]===0x1f4){logger[_0xe9b8('0xf')](_0xe9b8('0x11'),_0x4ae5fa,_0x65e43c[_0xe9b8('0xf')][_0xe9b8('0x12')]);return _0x536372(_0x65e43c[_0xe9b8('0xf')][_0xe9b8('0x12')]);}logger[_0xe9b8('0xf')]('MemberReport,\x20%s,\x20%s',_0x4ae5fa,_0x65e43c['error']['message']);return _0x4fe774(_0x65e43c['error'][_0xe9b8('0x12')]);}else{logger['info']('MemberReport,\x20%s,\x20%s',_0x4ae5fa,_0xe9b8('0xc'));_0x4fe774(_0x65e43c[_0xe9b8('0x13')][_0xe9b8('0x12')]);}})[_0xe9b8('0x14')](function(_0x592bf3){logger[_0xe9b8('0xf')]('MemberReport,\x20%s,\x20%s',_0x4ae5fa,_0x592bf3);_0x536372(_0x592bf3);});});}exports[_0xe9b8('0x15')]=function(_0xe435b0){var _0x347214=this;return new Promise(function(_0x3e8123,_0x2c55a8){return db[_0xe9b8('0x16')]['findAll']({'raw':_0xe435b0[_0xe9b8('0x17')]?_0xe435b0['options'][_0xe9b8('0x18')]===undefined?!![]:![]:!![],'where':_0xe435b0[_0xe9b8('0x17')]?_0xe435b0[_0xe9b8('0x17')]['where']||null:null,'attributes':_0xe435b0[_0xe9b8('0x17')]?_0xe435b0[_0xe9b8('0x17')][_0xe9b8('0x19')]||null:null,'limit':_0xe435b0[_0xe9b8('0x17')]?_0xe435b0[_0xe9b8('0x17')]['limit']||null:null,'include':_0xe435b0[_0xe9b8('0x17')]?_0xe435b0['options'][_0xe9b8('0x1a')]?_[_0xe9b8('0x1b')](_0xe435b0[_0xe9b8('0x17')][_0xe9b8('0x1a')],function(_0x427570){return{'model':db[_0x427570['model']],'as':_0x427570['as'],'attributes':_0x427570['attributes'],'include':_0x427570[_0xe9b8('0x1a')]?_[_0xe9b8('0x1b')](_0x427570[_0xe9b8('0x1a')],function(_0x53e0b8){return{'model':db[_0x53e0b8['model']],'as':_0x53e0b8['as'],'attributes':_0x53e0b8[_0xe9b8('0x19')],'include':_0x53e0b8['include']?_[_0xe9b8('0x1b')](_0x53e0b8['include'],function(_0x45f2e9){return{'model':db[_0x45f2e9[_0xe9b8('0x1c')]],'as':_0x45f2e9['as'],'attributes':_0x45f2e9[_0xe9b8('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x79ea75){logger['info'](_0xe9b8('0x15'),_0xe435b0);logger['debug'](_0xe9b8('0x15'),_0xe435b0,JSON[_0xe9b8('0xe')](_0x79ea75));_0x3e8123(_0x79ea75);})[_0xe9b8('0x14')](function(_0x38ba68){logger[_0xe9b8('0xf')](_0xe9b8('0x15'),_0x38ba68[_0xe9b8('0x12')],_0xe435b0);_0x2c55a8(_0x347214[_0xe9b8('0xf')](0x1f4,_0x38ba68['message']));});});};exports[_0xe9b8('0x1d')]=function(_0x4ce101){var _0x2b8fe5=this;return new Promise(function(_0x1347a5,_0x372b05){return db['MemberReport'][_0xe9b8('0x1e')](_0x4ce101[_0xe9b8('0x1f')],{'raw':_0x4ce101[_0xe9b8('0x17')]?_0x4ce101[_0xe9b8('0x17')][_0xe9b8('0x18')]===undefined?!![]:![]:!![]})[_0xe9b8('0xa')](function(_0x49af74){logger['info']('CreateMemberReport',_0x4ce101);logger['debug'](_0xe9b8('0x1d'),_0x4ce101,JSON[_0xe9b8('0xe')](_0x49af74));_0x1347a5(_0x49af74);})[_0xe9b8('0x14')](function(_0x522fa3){logger[_0xe9b8('0xf')]('CreateMemberReport',_0x522fa3['message'],_0x4ce101);_0x372b05(_0x2b8fe5[_0xe9b8('0xf')](0x1f4,_0x522fa3[_0xe9b8('0x12')]));});});};exports['UpdateMemberReport']=function(_0x356f64){var _0x40468a=this;return new Promise(function(_0x28ad0f,_0x1d8bd6){return db[_0xe9b8('0x16')]['update'](_0x356f64['body'],{'raw':_0x356f64[_0xe9b8('0x17')]?_0x356f64['options'][_0xe9b8('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x356f64['options']?_0x356f64['options']['where']||null:null,'attributes':_0x356f64[_0xe9b8('0x17')]?_0x356f64['options'][_0xe9b8('0x19')]||null:null,'limit':_0x356f64['options']?_0x356f64['options']['limit']||null:null})[_0xe9b8('0xa')](function(_0x32260b){logger[_0xe9b8('0xb')](_0xe9b8('0x20'),_0x356f64);logger[_0xe9b8('0x21')](_0xe9b8('0x20'),_0x356f64,JSON[_0xe9b8('0xe')](_0x32260b));_0x28ad0f(_0x32260b);})[_0xe9b8('0x14')](function(_0x11230a){logger['error']('UpdateMemberReport',_0x11230a[_0xe9b8('0x12')],_0x356f64);_0x1d8bd6(_0x40468a['error'](0x1f4,_0x11230a[_0xe9b8('0x12')]));});});};
\ No newline at end of file
+var _0xba0d=['info','request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','MemberReport,\x20%s,\x20%s','message','result','catch','GetMemberReport','MemberReport','findAll','options','attributes','limit','include','map','model','then','debug','create','body','raw','CreateMemberReport','UpdateMemberReport','update','where','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request'];(function(_0x317561,_0x62fc9e){var _0x2e8c40=function(_0x44effc){while(--_0x44effc){_0x317561['push'](_0x317561['shift']());}};_0x2e8c40(++_0x62fc9e);}(_0xba0d,0x8e));var _0xdba0=function(_0x5eca01,_0x3f02c8){_0x5eca01=_0x5eca01-0x0;var _0x4987c7=_0xba0d[_0x5eca01];return _0x4987c7;};'use strict';var _=require(_0xdba0('0x0'));var util=require('util');var moment=require(_0xdba0('0x1'));var BPromise=require(_0xdba0('0x2'));var rs=require(_0xdba0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdba0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xdba0('0x5'))(_0xdba0('0x6'));var config=require(_0xdba0('0x7'));var jayson=require(_0xdba0('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x220299,_0x3ab016,_0x423097){return new BPromise(function(_0x2c20c4,_0x5aeceb){return client[_0xdba0('0x9')](_0x220299,_0x423097)['then'](function(_0x4ff5f5){logger[_0xdba0('0xa')]('MemberReport,\x20%s,\x20%s',_0x3ab016,_0xdba0('0xb'));logger['debug'](_0xdba0('0xc'),_0x3ab016,_0xdba0('0xb'),JSON[_0xdba0('0xd')](_0x4ff5f5));if(_0x4ff5f5[_0xdba0('0xe')]){if(_0x4ff5f5[_0xdba0('0xe')][_0xdba0('0xf')]===0x1f4){logger[_0xdba0('0xe')](_0xdba0('0x10'),_0x3ab016,_0x4ff5f5['error']['message']);return _0x5aeceb(_0x4ff5f5[_0xdba0('0xe')][_0xdba0('0x11')]);}logger[_0xdba0('0xe')](_0xdba0('0x10'),_0x3ab016,_0x4ff5f5[_0xdba0('0xe')][_0xdba0('0x11')]);return _0x2c20c4(_0x4ff5f5[_0xdba0('0xe')]['message']);}else{logger[_0xdba0('0xa')](_0xdba0('0x10'),_0x3ab016,_0xdba0('0xb'));_0x2c20c4(_0x4ff5f5[_0xdba0('0x12')][_0xdba0('0x11')]);}})[_0xdba0('0x13')](function(_0x316a23){logger[_0xdba0('0xe')](_0xdba0('0x10'),_0x3ab016,_0x316a23);_0x5aeceb(_0x316a23);});});}exports[_0xdba0('0x14')]=function(_0x479a46){var _0x2b75e7=this;return new Promise(function(_0x5e954c,_0x1cdf6c){return db[_0xdba0('0x15')][_0xdba0('0x16')]({'raw':_0x479a46[_0xdba0('0x17')]?_0x479a46['options']['raw']===undefined?!![]:![]:!![],'where':_0x479a46[_0xdba0('0x17')]?_0x479a46[_0xdba0('0x17')]['where']||null:null,'attributes':_0x479a46[_0xdba0('0x17')]?_0x479a46[_0xdba0('0x17')][_0xdba0('0x18')]||null:null,'limit':_0x479a46['options']?_0x479a46[_0xdba0('0x17')][_0xdba0('0x19')]||null:null,'include':_0x479a46[_0xdba0('0x17')]?_0x479a46[_0xdba0('0x17')][_0xdba0('0x1a')]?_[_0xdba0('0x1b')](_0x479a46[_0xdba0('0x17')][_0xdba0('0x1a')],function(_0x21932d){return{'model':db[_0x21932d[_0xdba0('0x1c')]],'as':_0x21932d['as'],'attributes':_0x21932d[_0xdba0('0x18')],'include':_0x21932d['include']?_[_0xdba0('0x1b')](_0x21932d[_0xdba0('0x1a')],function(_0x4873de){return{'model':db[_0x4873de[_0xdba0('0x1c')]],'as':_0x4873de['as'],'attributes':_0x4873de['attributes'],'include':_0x4873de[_0xdba0('0x1a')]?_[_0xdba0('0x1b')](_0x4873de['include'],function(_0x4ad40f){return{'model':db[_0x4ad40f[_0xdba0('0x1c')]],'as':_0x4ad40f['as'],'attributes':_0x4ad40f[_0xdba0('0x18')]};}):[]};}):[]};}):[]:[]})[_0xdba0('0x1d')](function(_0x3c7f03){logger[_0xdba0('0xa')](_0xdba0('0x14'),_0x479a46);logger[_0xdba0('0x1e')]('GetMemberReport',_0x479a46,JSON['stringify'](_0x3c7f03));_0x5e954c(_0x3c7f03);})[_0xdba0('0x13')](function(_0x1d91a3){logger[_0xdba0('0xe')](_0xdba0('0x14'),_0x1d91a3['message'],_0x479a46);_0x1cdf6c(_0x2b75e7['error'](0x1f4,_0x1d91a3[_0xdba0('0x11')]));});});};exports['CreateMemberReport']=function(_0x3cb358){var _0x5b89af=this;return new Promise(function(_0x26bb2b,_0x3fe90e){return db['MemberReport'][_0xdba0('0x1f')](_0x3cb358[_0xdba0('0x20')],{'raw':_0x3cb358[_0xdba0('0x17')]?_0x3cb358[_0xdba0('0x17')][_0xdba0('0x21')]===undefined?!![]:![]:!![]})[_0xdba0('0x1d')](function(_0x2665bc){logger['info']('CreateMemberReport',_0x3cb358);logger[_0xdba0('0x1e')](_0xdba0('0x22'),_0x3cb358,JSON[_0xdba0('0xd')](_0x2665bc));_0x26bb2b(_0x2665bc);})[_0xdba0('0x13')](function(_0x1f98cf){logger['error']('CreateMemberReport',_0x1f98cf[_0xdba0('0x11')],_0x3cb358);_0x3fe90e(_0x5b89af[_0xdba0('0xe')](0x1f4,_0x1f98cf['message']));});});};exports[_0xdba0('0x23')]=function(_0x4b7734){var _0x266ff2=this;return new Promise(function(_0x9a2340,_0x398f51){return db[_0xdba0('0x15')][_0xdba0('0x24')](_0x4b7734[_0xdba0('0x20')],{'raw':_0x4b7734[_0xdba0('0x17')]?_0x4b7734['options'][_0xdba0('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b7734['options']?_0x4b7734['options'][_0xdba0('0x25')]||null:null,'attributes':_0x4b7734[_0xdba0('0x17')]?_0x4b7734['options'][_0xdba0('0x18')]||null:null,'limit':_0x4b7734[_0xdba0('0x17')]?_0x4b7734['options']['limit']||null:null})['then'](function(_0x4feb14){logger[_0xdba0('0xa')]('UpdateMemberReport',_0x4b7734);logger['debug'](_0xdba0('0x23'),_0x4b7734,JSON['stringify'](_0x4feb14));_0x9a2340(_0x4feb14);})[_0xdba0('0x13')](function(_0x21c6fb){logger[_0xdba0('0xe')](_0xdba0('0x23'),_0x21c6fb[_0xdba0('0x11')],_0x4b7734);_0x398f51(_0x266ff2[_0xdba0('0xe')](0x1f4,_0x21c6fb[_0xdba0('0x11')]));});});};
\ No newline at end of file
index 9365e27..69b995f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e61=['../../components/interaction/service','./migration.controller','get','index','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x2f2089,_0x5f2982){var _0x348830=function(_0x5de729){while(--_0x5de729){_0x2f2089['push'](_0x2f2089['shift']());}};_0x348830(++_0x5f2982);}(_0x5e61,0x126));var _0x15e6=function(_0x3d4ed0,_0x1192f4){_0x3d4ed0=_0x3d4ed0-0x0;var _0x4cc0a5=_0x5e61[_0x3d4ed0];return _0x4cc0a5;};'use strict';var multer=require(_0x15e6('0x0'));var util=require('util');var path=require(_0x15e6('0x1'));var timeout=require(_0x15e6('0x2'));var express=require('express');var router=express[_0x15e6('0x3')]();var fs_extra=require(_0x15e6('0x4'));var auth=require(_0x15e6('0x5'));var interaction=require(_0x15e6('0x6'));var config=require('../../config/environment');var controller=require(_0x15e6('0x7'));router[_0x15e6('0x8')]('/',controller[_0x15e6('0x9')]);module['exports']=router;
\ No newline at end of file
+var _0xcc6c=['exports','multer','util','path','fs-extra','../../config/environment','./migration.controller','get','index'];(function(_0x1dd7eb,_0x13b76a){var _0x3e6f1b=function(_0x2b5079){while(--_0x2b5079){_0x1dd7eb['push'](_0x1dd7eb['shift']());}};_0x3e6f1b(++_0x13b76a);}(_0xcc6c,0x133));var _0xccc6=function(_0x339137,_0x2ecdee){_0x339137=_0x339137-0x0;var _0x15ef5b=_0xcc6c[_0x339137];return _0x15ef5b;};'use strict';var multer=require(_0xccc6('0x0'));var util=require(_0xccc6('0x1'));var path=require(_0xccc6('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xccc6('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xccc6('0x4'));var controller=require(_0xccc6('0x5'));router[_0xccc6('0x6')]('/',controller[_0xccc6('0x7')]);module[_0xccc6('0x8')]=router;
\ No newline at end of file
index 9cf4e95..171b214 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4c5=['version','exports'];(function(_0x434379,_0x6db607){var _0x3314f2=function(_0x3b636a){while(--_0x3b636a){_0x434379['push'](_0x434379['shift']());}};_0x3314f2(++_0x6db607);}(_0xf4c5,0x183));var _0x5f4c=function(_0x14490c,_0x50e8ab){_0x14490c=_0x14490c-0x0;var _0x2f6825=_0xf4c5[_0x14490c];return _0x2f6825;};'use strict';var Sequelize=require('sequelize');module[_0x5f4c('0x0')]={'version':{'type':Sequelize['STRING'],'unique':_0x5f4c('0x1')}};
\ No newline at end of file
+var _0xffda=['exports','STRING','sequelize'];(function(_0x22b1dd,_0x5c715c){var _0x107e5d=function(_0x435206){while(--_0x435206){_0x22b1dd['push'](_0x22b1dd['shift']());}};_0x107e5d(++_0x5c715c);}(_0xffda,0x1d0));var _0xaffd=function(_0x1d083b,_0x39283a){_0x1d083b=_0x1d083b-0x0;var _0x33a18d=_0xffda[_0x1d083b];return _0x33a18d;};'use strict';var Sequelize=require(_0xaffd('0x0'));module[_0xaffd('0x1')]={'version':{'type':Sequelize[_0xaffd('0x2')],'unique':'version'}};
\ No newline at end of file
index d25d44d..1e7c3e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb0=['name','send','index','map','Migration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','rows','eml-format','request-promise','bluebird','mustache','util','path','sox','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','end','error','stack'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x3cb0,0xde));var _0x03cb=function(_0x161f0,_0x355cc0){_0x161f0=_0x161f0-0x0;var _0x5212a8=_0x3cb0[_0x161f0];return _0x5212a8;};'use strict';var emlformat=require(_0x03cb('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x03cb('0x1'));var moment=require('moment');var BPromise=require(_0x03cb('0x2'));var Mustache=require(_0x03cb('0x3'));var util=require(_0x03cb('0x4'));var path=require(_0x03cb('0x5'));var sox=require(_0x03cb('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x03cb('0x7'));var squel=require(_0x03cb('0x8'));var crypto=require('crypto');var jsforce=require(_0x03cb('0x9'));var deskjs=require(_0x03cb('0xa'));var toCsv=require(_0x03cb('0xb'));var querystring=require(_0x03cb('0xc'));var Papa=require('papaparse');var Redis=require(_0x03cb('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x03cb('0xe'));var hardwareService=require(_0x03cb('0xf'));var logger=require(_0x03cb('0x10'))('api');var utils=require(_0x03cb('0x11'));var config=require(_0x03cb('0x12'));var licenseUtil=require(_0x03cb('0x13'));var db=require(_0x03cb('0x14'))['db'];function respondWithStatusCode(_0x5cdb7e,_0x37857f){_0x37857f=_0x37857f||0xcc;return function(_0x120174){if(_0x120174){return _0x5cdb7e[_0x03cb('0x15')](_0x37857f);}return _0x5cdb7e[_0x03cb('0x16')](_0x37857f)['end']();};}function respondWithResult(_0x396670,_0xf9cf22){_0xf9cf22=_0xf9cf22||0xc8;return function(_0x8f3f77){if(_0x8f3f77){return _0x396670['status'](_0xf9cf22)[_0x03cb('0x17')](_0x8f3f77);}};}function respondWithFilteredResult(_0x266b9c,_0x38ba5c){return function(_0x1938ee){if(_0x1938ee){var _0x4452db=typeof _0x38ba5c[_0x03cb('0x18')]===_0x03cb('0x19')&&typeof _0x38ba5c[_0x03cb('0x1a')]==='undefined';var _0x89c89f=_0x1938ee['count'];var _0x38fe3e=_0x4452db?0x0:_0x38ba5c[_0x03cb('0x18')];var _0x48d4fc=_0x4452db?_0x1938ee[_0x03cb('0x1b')]:_0x38ba5c['offset']+_0x38ba5c[_0x03cb('0x1a')];var _0x5353d5;if(_0x48d4fc>=_0x89c89f){_0x48d4fc=_0x89c89f;_0x5353d5=0xc8;}else{_0x5353d5=0xce;}_0x266b9c['status'](_0x5353d5);return _0x266b9c[_0x03cb('0x1c')](_0x03cb('0x1d'),_0x38fe3e+'-'+_0x48d4fc+'/'+_0x89c89f)[_0x03cb('0x17')](_0x1938ee);}return null;};}function patchUpdates(_0x151977){return function(_0x2fa410){try{jsonpatch[_0x03cb('0x1e')](_0x2fa410,_0x151977,!![]);}catch(_0x480bbb){return BPromise[_0x03cb('0x1f')](_0x480bbb);}return _0x2fa410['save']();};}function saveUpdates(_0x5c1f12,_0x37bcbe){return function(_0x4362c6){if(_0x4362c6){return _0x4362c6[_0x03cb('0x20')](_0x5c1f12)[_0x03cb('0x21')](function(_0x101be4){return _0x101be4;});}return null;};}function removeEntity(_0x13cf65,_0xb7d858){return function(_0x3df66d){if(_0x3df66d){return _0x3df66d[_0x03cb('0x22')]()[_0x03cb('0x21')](function(){_0x13cf65['status'](0xcc)[_0x03cb('0x23')]();});}};}function handleEntityNotFound(_0x189282,_0x42581f){return function(_0x324db3){if(!_0x324db3){_0x189282['sendStatus'](0x194);}return _0x324db3;};}function handleError(_0x3efbc4,_0x409fd9){_0x409fd9=_0x409fd9||0x1f4;return function(_0x34c4bf){logger[_0x03cb('0x24')](_0x34c4bf[_0x03cb('0x25')]);if(_0x34c4bf[_0x03cb('0x26')]){delete _0x34c4bf[_0x03cb('0x26')];}_0x3efbc4[_0x03cb('0x16')](_0x409fd9)[_0x03cb('0x27')](_0x34c4bf);};}exports[_0x03cb('0x28')]=function(_0x61e8fb,_0x1fbc8e){var _0x26285a={},_0x6bb424={},_0x4067a1={'count':0x0,'rows':[]};var _0x50a451=_[_0x03cb('0x29')](db[_0x03cb('0x2a')][_0x03cb('0x2b')],function(_0x3d89d8){return{'name':_0x3d89d8[_0x03cb('0x2c')],'type':_0x3d89d8['type'][_0x03cb('0x2d')]};});_0x6bb424[_0x03cb('0x2e')]=_[_0x03cb('0x29')](_0x50a451,_0x03cb('0x26'));_0x6bb424[_0x03cb('0x2f')]=_[_0x03cb('0x30')](_0x61e8fb['query']);_0x6bb424[_0x03cb('0x31')]=_[_0x03cb('0x32')](_0x6bb424[_0x03cb('0x2e')],_0x6bb424['query']);_0x26285a['attributes']=_[_0x03cb('0x32')](_0x6bb424['model'],qs[_0x03cb('0x33')](_0x61e8fb[_0x03cb('0x2f')]['fields']));_0x26285a[_0x03cb('0x34')]=_0x26285a[_0x03cb('0x34')][_0x03cb('0x35')]?_0x26285a['attributes']:_0x6bb424[_0x03cb('0x2e')];if(!_0x61e8fb[_0x03cb('0x2f')][_0x03cb('0x36')]('nolimit')){_0x26285a[_0x03cb('0x1a')]=qs[_0x03cb('0x1a')](_0x61e8fb[_0x03cb('0x2f')]['limit']);_0x26285a['offset']=qs[_0x03cb('0x18')](_0x61e8fb[_0x03cb('0x2f')][_0x03cb('0x18')]);}_0x26285a['order']=qs[_0x03cb('0x37')](_0x61e8fb[_0x03cb('0x2f')][_0x03cb('0x37')]);_0x26285a['where']=qs[_0x03cb('0x31')](_[_0x03cb('0x38')](_0x61e8fb[_0x03cb('0x2f')],_0x6bb424['filters']),_0x50a451);if(_0x61e8fb[_0x03cb('0x2f')][_0x03cb('0x39')]){_0x26285a[_0x03cb('0x3a')]=_['merge'](_0x26285a[_0x03cb('0x3a')],{'$or':_[_0x03cb('0x29')](_0x50a451,function(_0x2b0b5b){if(_0x2b0b5b['type']!==_0x03cb('0x3b')){var _0x115a2a={};_0x115a2a[_0x2b0b5b[_0x03cb('0x26')]]={'$like':'%'+_0x61e8fb[_0x03cb('0x2f')][_0x03cb('0x39')]+'%'};return _0x115a2a;}})});}_0x26285a=_[_0x03cb('0x3c')]({},_0x26285a,_0x61e8fb[_0x03cb('0x3d')]);var _0x4c3db6={'where':_0x26285a[_0x03cb('0x3a')]};return db[_0x03cb('0x2a')][_0x03cb('0x1b')](_0x4c3db6)[_0x03cb('0x21')](function(_0x18eea4){_0x4067a1[_0x03cb('0x1b')]=_0x18eea4;if(_0x61e8fb[_0x03cb('0x2f')][_0x03cb('0x3e')]){_0x26285a[_0x03cb('0x3f')]=[{'all':!![]}];}return db[_0x03cb('0x2a')]['findAll'](_0x26285a);})[_0x03cb('0x21')](function(_0x2b5ee7){_0x4067a1[_0x03cb('0x40')]=_0x2b5ee7;return _0x4067a1;})[_0x03cb('0x21')](respondWithFilteredResult(_0x1fbc8e,_0x26285a))['catch'](handleError(_0x1fbc8e,null));};
\ No newline at end of file
+var _0xb62c=['stack','name','send','map','fieldName','type','key','query','filters','intersection','model','attributes','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','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','set','Content-Range','apply','save','update','then','destroy'];(function(_0x253b45,_0x32b9da){var _0x3e1947=function(_0x442fed){while(--_0x442fed){_0x253b45['push'](_0x253b45['shift']());}};_0x3e1947(++_0x32b9da);}(_0xb62c,0x15e));var _0xcb62=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb62c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xcb62('0x0'));var rimraf=require(_0xcb62('0x1'));var zipdir=require(_0xcb62('0x2'));var jsonpatch=require(_0xcb62('0x3'));var rp=require(_0xcb62('0x4'));var moment=require('moment');var BPromise=require(_0xcb62('0x5'));var Mustache=require('mustache');var util=require(_0xcb62('0x6'));var path=require(_0xcb62('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xcb62('0x8'));var fs=require('fs');var fs_extra=require(_0xcb62('0x9'));var _=require(_0xcb62('0xa'));var squel=require(_0xcb62('0xb'));var crypto=require(_0xcb62('0xc'));var jsforce=require(_0xcb62('0xd'));var deskjs=require(_0xcb62('0xe'));var toCsv=require(_0xcb62('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xcb62('0x10'));var authService=require(_0xcb62('0x11'));var qs=require(_0xcb62('0x12'));var as=require(_0xcb62('0x13'));var hardwareService=require(_0xcb62('0x14'));var logger=require(_0xcb62('0x15'))(_0xcb62('0x16'));var utils=require('../../config/utils');var config=require(_0xcb62('0x17'));var licenseUtil=require(_0xcb62('0x18'));var db=require(_0xcb62('0x19'))['db'];function respondWithStatusCode(_0x3be6ad,_0x15656c){_0x15656c=_0x15656c||0xcc;return function(_0x8de52b){if(_0x8de52b){return _0x3be6ad[_0xcb62('0x1a')](_0x15656c);}return _0x3be6ad[_0xcb62('0x1b')](_0x15656c)[_0xcb62('0x1c')]();};}function respondWithResult(_0x2255cd,_0x4b9f9d){_0x4b9f9d=_0x4b9f9d||0xc8;return function(_0x465aef){if(_0x465aef){return _0x2255cd[_0xcb62('0x1b')](_0x4b9f9d)[_0xcb62('0x1d')](_0x465aef);}};}function respondWithFilteredResult(_0x2b171f,_0x3a3128){return function(_0x424b8f){if(_0x424b8f){var _0x1fdf12=typeof _0x3a3128[_0xcb62('0x1e')]===_0xcb62('0x1f')&&typeof _0x3a3128[_0xcb62('0x20')]===_0xcb62('0x1f');var _0x5f04b8=_0x424b8f['count'];var _0x147976=_0x1fdf12?0x0:_0x3a3128['offset'];var _0x5ac7ee=_0x1fdf12?_0x424b8f['count']:_0x3a3128[_0xcb62('0x1e')]+_0x3a3128[_0xcb62('0x20')];var _0x3de9e0;if(_0x5ac7ee>=_0x5f04b8){_0x5ac7ee=_0x5f04b8;_0x3de9e0=0xc8;}else{_0x3de9e0=0xce;}_0x2b171f[_0xcb62('0x1b')](_0x3de9e0);return _0x2b171f[_0xcb62('0x21')](_0xcb62('0x22'),_0x147976+'-'+_0x5ac7ee+'/'+_0x5f04b8)['json'](_0x424b8f);}return null;};}function patchUpdates(_0x224ef3){return function(_0x18f8ae){try{jsonpatch[_0xcb62('0x23')](_0x18f8ae,_0x224ef3,!![]);}catch(_0x2de822){return BPromise['reject'](_0x2de822);}return _0x18f8ae[_0xcb62('0x24')]();};}function saveUpdates(_0x572b68,_0x36e712){return function(_0x113ccd){if(_0x113ccd){return _0x113ccd[_0xcb62('0x25')](_0x572b68)[_0xcb62('0x26')](function(_0x190c93){return _0x190c93;});}return null;};}function removeEntity(_0x4b4fcb,_0xcdb038){return function(_0x1329f3){if(_0x1329f3){return _0x1329f3[_0xcb62('0x27')]()[_0xcb62('0x26')](function(){_0x4b4fcb[_0xcb62('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x50ef77,_0x41cbf0){return function(_0x42ea0d){if(!_0x42ea0d){_0x50ef77[_0xcb62('0x1a')](0x194);}return _0x42ea0d;};}function handleError(_0xd6de60,_0x39584d){_0x39584d=_0x39584d||0x1f4;return function(_0x3b37b6){logger['error'](_0x3b37b6[_0xcb62('0x28')]);if(_0x3b37b6[_0xcb62('0x29')]){delete _0x3b37b6[_0xcb62('0x29')];}_0xd6de60[_0xcb62('0x1b')](_0x39584d)[_0xcb62('0x2a')](_0x3b37b6);};}exports['index']=function(_0x51f9be,_0x4d6809){var _0x3f7a80={},_0x1aa6e5={},_0x505dbc={'count':0x0,'rows':[]};var _0x21c3e7=_[_0xcb62('0x2b')](db['Migration']['rawAttributes'],function(_0x292e73){return{'name':_0x292e73[_0xcb62('0x2c')],'type':_0x292e73[_0xcb62('0x2d')][_0xcb62('0x2e')]};});_0x1aa6e5['model']=_[_0xcb62('0x2b')](_0x21c3e7,_0xcb62('0x29'));_0x1aa6e5[_0xcb62('0x2f')]=_['keys'](_0x51f9be[_0xcb62('0x2f')]);_0x1aa6e5[_0xcb62('0x30')]=_[_0xcb62('0x31')](_0x1aa6e5[_0xcb62('0x32')],_0x1aa6e5[_0xcb62('0x2f')]);_0x3f7a80[_0xcb62('0x33')]=_[_0xcb62('0x31')](_0x1aa6e5['model'],qs['fields'](_0x51f9be['query']['fields']));_0x3f7a80[_0xcb62('0x33')]=_0x3f7a80['attributes']['length']?_0x3f7a80[_0xcb62('0x33')]:_0x1aa6e5[_0xcb62('0x32')];if(!_0x51f9be[_0xcb62('0x2f')][_0xcb62('0x34')]('nolimit')){_0x3f7a80['limit']=qs['limit'](_0x51f9be[_0xcb62('0x2f')][_0xcb62('0x20')]);_0x3f7a80[_0xcb62('0x1e')]=qs[_0xcb62('0x1e')](_0x51f9be[_0xcb62('0x2f')][_0xcb62('0x1e')]);}_0x3f7a80['order']=qs[_0xcb62('0x35')](_0x51f9be[_0xcb62('0x2f')][_0xcb62('0x35')]);_0x3f7a80[_0xcb62('0x36')]=qs[_0xcb62('0x30')](_[_0xcb62('0x37')](_0x51f9be[_0xcb62('0x2f')],_0x1aa6e5[_0xcb62('0x30')]),_0x21c3e7);if(_0x51f9be[_0xcb62('0x2f')][_0xcb62('0x38')]){_0x3f7a80['where']=_[_0xcb62('0x39')](_0x3f7a80[_0xcb62('0x36')],{'$or':_['map'](_0x21c3e7,function(_0x502e17){if(_0x502e17['type']!==_0xcb62('0x3a')){var _0x469f8b={};_0x469f8b[_0x502e17[_0xcb62('0x29')]]={'$like':'%'+_0x51f9be[_0xcb62('0x2f')][_0xcb62('0x38')]+'%'};return _0x469f8b;}})});}_0x3f7a80=_['merge']({},_0x3f7a80,_0x51f9be[_0xcb62('0x3b')]);var _0x3a236f={'where':_0x3f7a80[_0xcb62('0x36')]};return db['Migration'][_0xcb62('0x3c')](_0x3a236f)[_0xcb62('0x26')](function(_0x3dbd2b){_0x505dbc[_0xcb62('0x3c')]=_0x3dbd2b;if(_0x51f9be[_0xcb62('0x2f')][_0xcb62('0x3d')]){_0x3f7a80[_0xcb62('0x3e')]=[{'all':!![]}];}return db['Migration'][_0xcb62('0x3f')](_0x3f7a80);})['then'](function(_0xdb594e){_0x505dbc['rows']=_0xdb594e;return _0x505dbc;})[_0xcb62('0x26')](respondWithFilteredResult(_0x4d6809,_0x3f7a80))[_0xcb62('0x40')](handleError(_0x4d6809,null));};
\ No newline at end of file
index 33c5f71..98faa78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x212b=['Migration','migrations','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./migration.attributes','define'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x212b,0x1bc));var _0xb212=function(_0x38318d,_0x55cbbc){_0x38318d=_0x38318d-0x0;var _0x5c3442=_0x212b[_0x38318d];return _0x5c3442;};'use strict';var _=require(_0xb212('0x0'));var util=require(_0xb212('0x1'));var logger=require(_0xb212('0x2'))(_0xb212('0x3'));var moment=require(_0xb212('0x4'));var BPromise=require('bluebird');var rp=require(_0xb212('0x5'));var fs=require('fs');var path=require(_0xb212('0x6'));var rimraf=require(_0xb212('0x7'));var config=require(_0xb212('0x8'));var attributes=require(_0xb212('0x9'));module['exports']=function(_0x1f446b,_0x2b9829){return _0x1f446b[_0xb212('0xa')](_0xb212('0xb'),attributes,{'tableName':_0xb212('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf4f9=['../../config/environment','./migration.attributes','exports','Migration','migrations','lodash','api','moment','bluebird','rimraf'];(function(_0x1cfba8,_0x4a1097){var _0x274c47=function(_0x18b91b){while(--_0x18b91b){_0x1cfba8['push'](_0x1cfba8['shift']());}};_0x274c47(++_0x4a1097);}(_0xf4f9,0xaf));var _0x9f4f=function(_0x5133f3,_0x45c348){_0x5133f3=_0x5133f3-0x0;var _0xece283=_0xf4f9[_0x5133f3];return _0xece283;};'use strict';var _=require(_0x9f4f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x9f4f('0x1'));var moment=require(_0x9f4f('0x2'));var BPromise=require(_0x9f4f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9f4f('0x4'));var config=require(_0x9f4f('0x5'));var attributes=require(_0x9f4f('0x6'));module[_0x9f4f('0x7')]=function(_0x4b4c4d,_0x55b53f){return _0x4b4c4d['define'](_0x9f4f('0x8'),attributes,{'tableName':_0x9f4f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f04e4c9..a2f03a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b59=['ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','Migration,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x56dd58,_0xb1287d){var _0x103e75=function(_0x369507){while(--_0x369507){_0x56dd58['push'](_0x56dd58['shift']());}};_0x103e75(++_0xb1287d);}(_0x3b59,0x9c));var _0x93b5=function(_0x3e45a6,_0x576195){_0x3e45a6=_0x3e45a6-0x0;var _0x4751f7=_0x3b59[_0x3e45a6];return _0x4751f7;};'use strict';var _=require(_0x93b5('0x0'));var util=require(_0x93b5('0x1'));var moment=require(_0x93b5('0x2'));var BPromise=require(_0x93b5('0x3'));var rs=require(_0x93b5('0x4'));var fs=require('fs');var Redis=require(_0x93b5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x93b5('0x6'));var logger=require('../../config/logger')(_0x93b5('0x7'));var config=require(_0x93b5('0x8'));var jayson=require(_0x93b5('0x9'));var client=jayson[_0x93b5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3ecbe3,_0x34650d,_0x4485b6){return new BPromise(function(_0x484849,_0x8e475e){return client[_0x93b5('0xb')](_0x3ecbe3,_0x4485b6)[_0x93b5('0xc')](function(_0x176049){logger[_0x93b5('0xd')]('Migration,\x20%s,\x20%s',_0x34650d,_0x93b5('0xe'));logger[_0x93b5('0xf')](_0x93b5('0x10'),_0x34650d,_0x93b5('0xe'),JSON[_0x93b5('0x11')](_0x176049));if(_0x176049['error']){if(_0x176049[_0x93b5('0x12')][_0x93b5('0x13')]===0x1f4){logger['error'](_0x93b5('0x14'),_0x34650d,_0x176049[_0x93b5('0x12')][_0x93b5('0x15')]);return _0x8e475e(_0x176049[_0x93b5('0x12')][_0x93b5('0x15')]);}logger['error'](_0x93b5('0x14'),_0x34650d,_0x176049[_0x93b5('0x12')]['message']);return _0x484849(_0x176049[_0x93b5('0x12')][_0x93b5('0x15')]);}else{logger[_0x93b5('0xd')]('Migration,\x20%s,\x20%s',_0x34650d,_0x93b5('0xe'));_0x484849(_0x176049['result']['message']);}})[_0x93b5('0x16')](function(_0x5a12fd){logger[_0x93b5('0x12')](_0x93b5('0x14'),_0x34650d,_0x5a12fd);_0x8e475e(_0x5a12fd);});});}
\ No newline at end of file
+var _0x3670=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','randomstring'];(function(_0x3e6a06,_0x5ddcd6){var _0xcdc571=function(_0x5b0d06){while(--_0x5b0d06){_0x3e6a06['push'](_0x3e6a06['shift']());}};_0xcdc571(++_0x5ddcd6);}(_0x3670,0x16c));var _0x0367=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3670[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x0367('0x0'));var moment=require(_0x0367('0x1'));var BPromise=require(_0x0367('0x2'));var rs=require(_0x0367('0x3'));var fs=require('fs');var Redis=require(_0x0367('0x4'));var db=require(_0x0367('0x5'))['db'];var utils=require(_0x0367('0x6'));var logger=require('../../config/logger')(_0x0367('0x7'));var config=require(_0x0367('0x8'));var jayson=require(_0x0367('0x9'));var client=jayson[_0x0367('0xa')][_0x0367('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xfd4f41,_0x43b2e9,_0x55f08e){return new BPromise(function(_0x298a55,_0x1e6351){return client[_0x0367('0xc')](_0xfd4f41,_0x55f08e)[_0x0367('0xd')](function(_0x3eb81f){logger[_0x0367('0xe')](_0x0367('0xf'),_0x43b2e9,_0x0367('0x10'));logger['debug'](_0x0367('0x11'),_0x43b2e9,'request\x20sent',JSON[_0x0367('0x12')](_0x3eb81f));if(_0x3eb81f[_0x0367('0x13')]){if(_0x3eb81f[_0x0367('0x13')][_0x0367('0x14')]===0x1f4){logger[_0x0367('0x13')](_0x0367('0xf'),_0x43b2e9,_0x3eb81f[_0x0367('0x13')][_0x0367('0x15')]);return _0x1e6351(_0x3eb81f['error'][_0x0367('0x15')]);}logger[_0x0367('0x13')]('Migration,\x20%s,\x20%s',_0x43b2e9,_0x3eb81f[_0x0367('0x13')][_0x0367('0x15')]);return _0x298a55(_0x3eb81f[_0x0367('0x13')]['message']);}else{logger[_0x0367('0xe')](_0x0367('0xf'),_0x43b2e9,_0x0367('0x10'));_0x298a55(_0x3eb81f[_0x0367('0x16')]['message']);}})['catch'](function(_0x2109ee){logger[_0x0367('0x13')](_0x0367('0xf'),_0x43b2e9,_0x2109ee);_0x1e6351(_0x2109ee);});});}
\ No newline at end of file
index 9ecc1ae..789e3fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22ca=['../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','index','get','/:id','isAuthenticated','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x5ca5bc,_0x5b8a9d){var _0x26ca86=function(_0x1ad9a6){while(--_0x1ad9a6){_0x5ca5bc['push'](_0x5ca5bc['shift']());}};_0x26ca86(++_0x5b8a9d);}(_0x22ca,0x1d9));var _0xa22c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x22ca[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xa22c('0x0'));var util=require(_0xa22c('0x1'));var path=require(_0xa22c('0x2'));var timeout=require(_0xa22c('0x3'));var express=require(_0xa22c('0x4'));var router=express[_0xa22c('0x5')]();var fs_extra=require(_0xa22c('0x6'));var auth=require(_0xa22c('0x7'));var interaction=require(_0xa22c('0x8'));var config=require(_0xa22c('0x9'));var controller=require(_0xa22c('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0xa22c('0xb')]);router[_0xa22c('0xc')](_0xa22c('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xa22c('0xe')](),controller[_0xa22c('0xf')]);router[_0xa22c('0x10')](_0xa22c('0xd'),auth[_0xa22c('0xe')](),controller['update']);router[_0xa22c('0x11')](_0xa22c('0xd'),auth['isAuthenticated'](),controller[_0xa22c('0x12')]);module[_0xa22c('0x13')]=router;
\ No newline at end of file
+var _0x7753=['../../components/interaction/service','./network.controller','get','index','show','post','isAuthenticated','create','put','update','delete','/:id','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x19717b,_0x20931a){var _0x26ee47=function(_0x4b12ba){while(--_0x4b12ba){_0x19717b['push'](_0x19717b['shift']());}};_0x26ee47(++_0x20931a);}(_0x7753,0xfd));var _0x3775=function(_0x5bf2b3,_0xfcd364){_0x5bf2b3=_0x5bf2b3-0x0;var _0x5e8a9b=_0x7753[_0x5bf2b3];return _0x5e8a9b;};'use strict';var multer=require(_0x3775('0x0'));var util=require(_0x3775('0x1'));var path=require(_0x3775('0x2'));var timeout=require(_0x3775('0x3'));var express=require(_0x3775('0x4'));var router=express['Router']();var fs_extra=require(_0x3775('0x5'));var auth=require(_0x3775('0x6'));var interaction=require(_0x3775('0x7'));var config=require('../../config/environment');var controller=require(_0x3775('0x8'));router[_0x3775('0x9')]('/',auth['isAuthenticated'](),controller[_0x3775('0xa')]);router[_0x3775('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x3775('0xb')]);router[_0x3775('0xc')]('/',auth[_0x3775('0xd')](),controller[_0x3775('0xe')]);router[_0x3775('0xf')]('/:id',auth[_0x3775('0xd')](),controller[_0x3775('0x10')]);router[_0x3775('0x11')](_0x3775('0x12'),auth[_0x3775('0xd')](),controller[_0x3775('0x13')]);module['exports']=router;
\ No newline at end of file
index 6fe2e4e..c66637d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35b5=['stun','turn','STRING','sequelize','exports','ENUM','externip'];(function(_0x54dcdb,_0x338da5){var _0x9ab1b2=function(_0x31d28d){while(--_0x31d28d){_0x54dcdb['push'](_0x54dcdb['shift']());}};_0x9ab1b2(++_0x338da5);}(_0x35b5,0x137));var _0x535b=function(_0x32c22d,_0x183fd1){_0x32c22d=_0x32c22d-0x0;var _0x520d93=_0x35b5[_0x32c22d];return _0x520d93;};'use strict';var Sequelize=require(_0x535b('0x0'));module[_0x535b('0x1')]={'type':{'type':Sequelize[_0x535b('0x2')]('localnet',_0x535b('0x3'),_0x535b('0x4'),_0x535b('0x5'))},'value':{'type':Sequelize[_0x535b('0x6')]},'username':{'type':Sequelize[_0x535b('0x6')]},'password':{'type':Sequelize[_0x535b('0x6')]}};
\ No newline at end of file
+var _0x9ccd=['turn','STRING','exports','ENUM','localnet','externip','stun'];(function(_0x23450f,_0x4401fa){var _0x511591=function(_0x51dbda){while(--_0x51dbda){_0x23450f['push'](_0x23450f['shift']());}};_0x511591(++_0x4401fa);}(_0x9ccd,0xcd));var _0xd9cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9ccd[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0xd9cc('0x0')]={'type':{'type':Sequelize[_0xd9cc('0x1')](_0xd9cc('0x2'),_0xd9cc('0x3'),_0xd9cc('0x4'),_0xd9cc('0x5'))},'value':{'type':Sequelize[_0xd9cc('0x6')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xd9cc('0x6')]}};
\ No newline at end of file
index 33ba14f..2fdb1b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab09=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','then','info','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','code','message','Network,\x20%s,\x20%s','result','catch','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','end','stack','name','send','index','map','Network','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','keys','rawAttributes','find','create','sequelize','findAll','body','toUpperCase','STUN','join','server/files/templates/stun_multiple.ejs','utf8','writeFileSync','Reload','res_stun_monitor.so','TURN','readFileSync','root','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','render','format','toLowerCase','transaction','/etc/asterisk/stun_xcally.conf','chan_sip.so','/etc/asterisk/sip_xcally_%s.conf','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x22bdd3,_0x552e50){var _0x44d9d9=function(_0x2b4ab9){while(--_0x2b4ab9){_0x22bdd3['push'](_0x22bdd3['shift']());}};_0x44d9d9(++_0x552e50);}(_0xab09,0x6a));var _0x9ab0=function(_0x1d92f8,_0xe82340){_0x1d92f8=_0x1d92f8-0x0;var _0x56dba3=_0xab09[_0x1d92f8];return _0x56dba3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9ab0('0x0'));var zipdir=require(_0x9ab0('0x1'));var jsonpatch=require(_0x9ab0('0x2'));var rp=require(_0x9ab0('0x3'));var moment=require(_0x9ab0('0x4'));var BPromise=require(_0x9ab0('0x5'));var Mustache=require(_0x9ab0('0x6'));var util=require(_0x9ab0('0x7'));var path=require(_0x9ab0('0x8'));var sox=require(_0x9ab0('0x9'));var csv=require(_0x9ab0('0xa'));var ejs=require(_0x9ab0('0xb'));var fs=require('fs');var fs_extra=require(_0x9ab0('0xc'));var _=require(_0x9ab0('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9ab0('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9ab0('0xf'));var Papa=require(_0x9ab0('0x10'));var Redis=require(_0x9ab0('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9ab0('0x12'));var as=require(_0x9ab0('0x13'));var hardwareService=require(_0x9ab0('0x14'));var logger=require(_0x9ab0('0x15'))(_0x9ab0('0x16'));var utils=require('../../config/utils');var config=require(_0x9ab0('0x17'));var licenseUtil=require(_0x9ab0('0x18'));var db=require(_0x9ab0('0x19'))['db'];var jayson=require(_0x9ab0('0x1a'));var client=jayson[_0x9ab0('0x1b')][_0x9ab0('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x53cc61,_0xb0e901,_0x261e6f,_0xb3d368){return new BPromise(function(_0x3a5dfd,_0x5e9b92){var _0x149165=_0xb3d368||client;return _0x149165['request'](_0x53cc61,_0x261e6f)[_0x9ab0('0x1d')](function(_0x4dcf82){logger[_0x9ab0('0x1e')]('Network,\x20%s,\x20%s',_0xb0e901,_0x9ab0('0x1f'));logger[_0x9ab0('0x20')](_0x9ab0('0x21'),_0xb0e901,_0x9ab0('0x1f'),JSON['stringify'](_0x4dcf82));if(_0x4dcf82[_0x9ab0('0x22')]){if(_0x4dcf82[_0x9ab0('0x22')][_0x9ab0('0x23')]===0x1f4){logger['error']('Network,\x20%s,\x20%s',_0xb0e901,_0x4dcf82['error']['message']);return _0x5e9b92(_0x4dcf82[_0x9ab0('0x22')][_0x9ab0('0x24')]);}logger[_0x9ab0('0x22')]('Network,\x20%s,\x20%s',_0xb0e901,_0x4dcf82[_0x9ab0('0x22')][_0x9ab0('0x24')]);return _0x3a5dfd(_0x4dcf82[_0x9ab0('0x22')][_0x9ab0('0x24')]);}else{logger[_0x9ab0('0x1e')](_0x9ab0('0x25'),_0xb0e901,_0x9ab0('0x1f'));_0x3a5dfd(_0x4dcf82[_0x9ab0('0x26')]['message']);}})[_0x9ab0('0x27')](function(_0x2b7a11){logger[_0x9ab0('0x22')]('Network,\x20%s,\x20%s',_0xb0e901,_0x2b7a11);_0x5e9b92(_0x2b7a11);});});}function respondWithStatusCode(_0x172011,_0x4c5a5f){_0x4c5a5f=_0x4c5a5f||0xcc;return function(_0x46b44e){if(_0x46b44e){return _0x172011[_0x9ab0('0x28')](_0x4c5a5f);}return _0x172011[_0x9ab0('0x29')](_0x4c5a5f)['end']();};}function respondWithResult(_0x52b3e6,_0x46746d){_0x46746d=_0x46746d||0xc8;return function(_0x6ea1f1){if(_0x6ea1f1){return _0x52b3e6[_0x9ab0('0x29')](_0x46746d)[_0x9ab0('0x2a')](_0x6ea1f1);}};}function respondWithFilteredResult(_0x514afa,_0x2ab6e9){return function(_0x212b6a){if(_0x212b6a){var _0x10572d=typeof _0x2ab6e9[_0x9ab0('0x2b')]===_0x9ab0('0x2c')&&typeof _0x2ab6e9[_0x9ab0('0x2d')]===_0x9ab0('0x2c');var _0xbb29df=_0x212b6a[_0x9ab0('0x2e')];var _0x367b31=_0x10572d?0x0:_0x2ab6e9['offset'];var _0x3c3274=_0x10572d?_0x212b6a[_0x9ab0('0x2e')]:_0x2ab6e9[_0x9ab0('0x2b')]+_0x2ab6e9[_0x9ab0('0x2d')];var _0x401037;if(_0x3c3274>=_0xbb29df){_0x3c3274=_0xbb29df;_0x401037=0xc8;}else{_0x401037=0xce;}_0x514afa[_0x9ab0('0x29')](_0x401037);return _0x514afa['set'](_0x9ab0('0x2f'),_0x367b31+'-'+_0x3c3274+'/'+_0xbb29df)['json'](_0x212b6a);}return null;};}function patchUpdates(_0x2e2af8){return function(_0x4d4a52){try{jsonpatch[_0x9ab0('0x30')](_0x4d4a52,_0x2e2af8,!![]);}catch(_0x1f4521){return BPromise[_0x9ab0('0x31')](_0x1f4521);}return _0x4d4a52[_0x9ab0('0x32')]();};}function saveUpdates(_0x15d659,_0x176e07){return function(_0x51af03){if(_0x51af03){return _0x51af03[_0x9ab0('0x33')](_0x15d659)[_0x9ab0('0x1d')](function(_0x3fc23d){return _0x3fc23d;});}return null;};}function removeEntity(_0x1b297a,_0xa94eb3){return function(_0xe3f2c1){if(_0xe3f2c1){return _0xe3f2c1[_0x9ab0('0x34')]()['then'](function(){_0x1b297a[_0x9ab0('0x29')](0xcc)[_0x9ab0('0x35')]();});}};}function handleEntityNotFound(_0x3b9525,_0x4f739a){return function(_0xcac469){if(!_0xcac469){_0x3b9525[_0x9ab0('0x28')](0x194);}return _0xcac469;};}function handleError(_0x3d6f9d,_0x29039a){_0x29039a=_0x29039a||0x1f4;return function(_0x5267d1){logger[_0x9ab0('0x22')](_0x5267d1[_0x9ab0('0x36')]);if(_0x5267d1[_0x9ab0('0x37')]){delete _0x5267d1[_0x9ab0('0x37')];}_0x3d6f9d['status'](_0x29039a)[_0x9ab0('0x38')](_0x5267d1);};}exports[_0x9ab0('0x39')]=function(_0x1e17ba,_0x21d655){var _0x2434cd={},_0x2ccb6c={},_0x1b2abd={'count':0x0,'rows':[]};var _0xe4cef8=_[_0x9ab0('0x3a')](db[_0x9ab0('0x3b')]['rawAttributes'],function(_0x202999){return{'name':_0x202999[_0x9ab0('0x3c')],'type':_0x202999[_0x9ab0('0x3d')]['key']};});_0x2ccb6c[_0x9ab0('0x3e')]=_['map'](_0xe4cef8,_0x9ab0('0x37'));_0x2ccb6c[_0x9ab0('0x3f')]=_['keys'](_0x1e17ba[_0x9ab0('0x3f')]);_0x2ccb6c[_0x9ab0('0x40')]=_[_0x9ab0('0x41')](_0x2ccb6c['model'],_0x2ccb6c['query']);_0x2434cd[_0x9ab0('0x42')]=_[_0x9ab0('0x41')](_0x2ccb6c['model'],qs[_0x9ab0('0x43')](_0x1e17ba[_0x9ab0('0x3f')][_0x9ab0('0x43')]));_0x2434cd[_0x9ab0('0x42')]=_0x2434cd['attributes'][_0x9ab0('0x44')]?_0x2434cd[_0x9ab0('0x42')]:_0x2ccb6c[_0x9ab0('0x3e')];if(!_0x1e17ba[_0x9ab0('0x3f')][_0x9ab0('0x45')](_0x9ab0('0x46'))){_0x2434cd[_0x9ab0('0x2d')]=qs[_0x9ab0('0x2d')](_0x1e17ba[_0x9ab0('0x3f')][_0x9ab0('0x2d')]);_0x2434cd[_0x9ab0('0x2b')]=qs[_0x9ab0('0x2b')](_0x1e17ba[_0x9ab0('0x3f')][_0x9ab0('0x2b')]);}_0x2434cd[_0x9ab0('0x47')]=qs['sort'](_0x1e17ba[_0x9ab0('0x3f')]['sort']);_0x2434cd[_0x9ab0('0x48')]=qs[_0x9ab0('0x40')](_[_0x9ab0('0x49')](_0x1e17ba[_0x9ab0('0x3f')],_0x2ccb6c['filters']),_0xe4cef8);if(_0x1e17ba[_0x9ab0('0x3f')][_0x9ab0('0x4a')]){_0x2434cd[_0x9ab0('0x48')]=_[_0x9ab0('0x4b')](_0x2434cd[_0x9ab0('0x48')],{'$or':_[_0x9ab0('0x3a')](_0xe4cef8,function(_0x17479f){if(_0x17479f[_0x9ab0('0x3d')]!==_0x9ab0('0x4c')){var _0x4f1530={};_0x4f1530[_0x17479f[_0x9ab0('0x37')]]={'$like':'%'+_0x1e17ba['query']['filter']+'%'};return _0x4f1530;}})});}_0x2434cd=_['merge']({},_0x2434cd,_0x1e17ba[_0x9ab0('0x4d')]);var _0x34b9f4={'where':_0x2434cd['where']};return db[_0x9ab0('0x3b')][_0x9ab0('0x2e')](_0x34b9f4)[_0x9ab0('0x1d')](function(_0x19d5d2){_0x1b2abd[_0x9ab0('0x2e')]=_0x19d5d2;if(_0x1e17ba[_0x9ab0('0x3f')][_0x9ab0('0x4e')]){_0x2434cd[_0x9ab0('0x4f')]=[{'all':!![]}];}return db['Network']['findAll'](_0x2434cd);})[_0x9ab0('0x1d')](function(_0x4db354){_0x1b2abd[_0x9ab0('0x50')]=_0x4db354;return _0x1b2abd;})[_0x9ab0('0x1d')](respondWithFilteredResult(_0x21d655,_0x2434cd))[_0x9ab0('0x27')](handleError(_0x21d655,null));};exports[_0x9ab0('0x51')]=function(_0x4157cc,_0x2aa22c){var _0x58dd68={'raw':!![],'where':{'id':_0x4157cc[_0x9ab0('0x52')]['id']}},_0x25d9c1={};_0x25d9c1['model']=_[_0x9ab0('0x53')](db[_0x9ab0('0x3b')][_0x9ab0('0x54')]);_0x25d9c1['query']=_['keys'](_0x4157cc[_0x9ab0('0x3f')]);_0x25d9c1[_0x9ab0('0x40')]=_[_0x9ab0('0x41')](_0x25d9c1[_0x9ab0('0x3e')],_0x25d9c1['query']);_0x58dd68[_0x9ab0('0x42')]=_['intersection'](_0x25d9c1['model'],qs[_0x9ab0('0x43')](_0x4157cc[_0x9ab0('0x3f')]['fields']));_0x58dd68[_0x9ab0('0x42')]=_0x58dd68['attributes'][_0x9ab0('0x44')]?_0x58dd68[_0x9ab0('0x42')]:_0x25d9c1['model'];if(_0x4157cc['query'][_0x9ab0('0x4e')]){_0x58dd68['include']=[{'all':!![]}];}_0x58dd68=_[_0x9ab0('0x4b')]({},_0x58dd68,_0x4157cc['options']);return db['Network'][_0x9ab0('0x55')](_0x58dd68)[_0x9ab0('0x1d')](handleEntityNotFound(_0x2aa22c,null))[_0x9ab0('0x1d')](respondWithResult(_0x2aa22c,null))[_0x9ab0('0x27')](handleError(_0x2aa22c,null));};exports[_0x9ab0('0x56')]=function(_0x2dd7c6,_0x3baecd,_0x390b38){var _0x2c2c7d;return db[_0x9ab0('0x57')]['transaction'](function(_0x36c4cd){return db['Network'][_0x9ab0('0x56')](_0x2dd7c6['body'],{'raw':!![]})[_0x9ab0('0x1d')](function(_0x3b7e9b){_0x2c2c7d=_0x3b7e9b;return db['Network'][_0x9ab0('0x58')]({'where':{'type':_0x2dd7c6[_0x9ab0('0x59')]['type']},'raw':!![]});})[_0x9ab0('0x1d')](function(_0x2b7e50){if(_0x2c2c7d[_0x9ab0('0x3d')][_0x9ab0('0x5a')]()==_0x9ab0('0x5b')){var _0xf74c85=fs['readFileSync'](path[_0x9ab0('0x5c')](config['root'],_0x9ab0('0x5d')),_0x9ab0('0x5e'));var _0x597340=ejs['render'](_0xf74c85,{'networks':_0x2b7e50||[]});fs[_0x9ab0('0x5f')]('/etc/asterisk/stun_xcally.conf',_0x597340);return respondWithRpcPromise(_0x9ab0('0x60'),'create',{'module':_0x9ab0('0x61')});}else if(_0x2c2c7d['type'][_0x9ab0('0x5a')]()==_0x9ab0('0x62')){var _0x383161=fs[_0x9ab0('0x63')](path[_0x9ab0('0x5c')](config[_0x9ab0('0x64')],_0x9ab0('0x65')),_0x9ab0('0x5e'));var _0x133429=ejs['render'](_0x383161,{'networks':_0x2b7e50||[]});fs[_0x9ab0('0x5f')](_0x9ab0('0x66'),_0x133429);return respondWithRpcPromise('Reload',_0x9ab0('0x56'),{'module':_0x9ab0('0x61')});}else{var _0x4507f6=fs['readFileSync'](path[_0x9ab0('0x5c')](config[_0x9ab0('0x64')],_0x9ab0('0x67')),_0x9ab0('0x5e'));var _0x164cac=ejs[_0x9ab0('0x68')](_0x4507f6,{'networks':_0x2b7e50||[]});fs[_0x9ab0('0x5f')](util[_0x9ab0('0x69')]('/etc/asterisk/sip_xcally_%s.conf',_0x2dd7c6['body'][_0x9ab0('0x3d')][_0x9ab0('0x6a')]()),_0x164cac);return respondWithRpcPromise(_0x9ab0('0x60'),'create',{'module':'chan_sip.so'});}return null;})[_0x9ab0('0x1d')](function(){return _0x2c2c7d;});})[_0x9ab0('0x1d')](respondWithResult(_0x3baecd,0xc9))[_0x9ab0('0x27')](handleError(_0x3baecd,null));};exports['update']=function(_0x26cd6e,_0x1a5a1e,_0x4f0580){var _0x4e572c;return db[_0x9ab0('0x57')][_0x9ab0('0x6b')](function(_0x3a3e98){return db[_0x9ab0('0x3b')][_0x9ab0('0x55')]({'where':{'id':_0x26cd6e[_0x9ab0('0x52')]['id']}})[_0x9ab0('0x1d')](handleEntityNotFound(_0x1a5a1e,null))[_0x9ab0('0x1d')](saveUpdates(_0x26cd6e[_0x9ab0('0x59')],null))[_0x9ab0('0x1d')](function(_0x505653){if(_0x505653){_0x4e572c=_0x505653;return db[_0x9ab0('0x3b')][_0x9ab0('0x58')]({'where':{'type':_0x4e572c['type']},'raw':!![]});}return null;})['then'](function(_0x558a8e){if(_0x4e572c[_0x9ab0('0x3d')]['toUpperCase']()==_0x9ab0('0x5b')){var _0x1488e8=fs[_0x9ab0('0x63')](path[_0x9ab0('0x5c')](config[_0x9ab0('0x64')],_0x9ab0('0x5d')),_0x9ab0('0x5e'));var _0x263e32=ejs['render'](_0x1488e8,{'networks':_0x558a8e||[]});fs[_0x9ab0('0x5f')](_0x9ab0('0x6c'),_0x263e32);return respondWithRpcPromise(_0x9ab0('0x60'),_0x9ab0('0x33'),{'module':_0x9ab0('0x61')});}else if(_0x4e572c[_0x9ab0('0x3d')][_0x9ab0('0x5a')]()==_0x9ab0('0x62')){var _0x361382=fs[_0x9ab0('0x63')](path['join'](config[_0x9ab0('0x64')],'server/files/templates/turn_multiple.ejs'),_0x9ab0('0x5e'));var _0x16eabd=ejs[_0x9ab0('0x68')](_0x361382,{'networks':_0x558a8e||[]});fs['writeFileSync'](_0x9ab0('0x66'),_0x16eabd);return respondWithRpcPromise('Reload',_0x9ab0('0x33'),{'module':_0x9ab0('0x61')});}else{var _0x1becdc=fs[_0x9ab0('0x63')](path['join'](config[_0x9ab0('0x64')],_0x9ab0('0x67')),_0x9ab0('0x5e'));var _0x3e5b5a=ejs[_0x9ab0('0x68')](_0x1becdc,{'networks':_0x558a8e||[]});fs[_0x9ab0('0x5f')](util[_0x9ab0('0x69')]('/etc/asterisk/sip_xcally_%s.conf',_0x26cd6e[_0x9ab0('0x59')][_0x9ab0('0x3d')][_0x9ab0('0x6a')]()),_0x3e5b5a);return respondWithRpcPromise(_0x9ab0('0x60'),_0x9ab0('0x33'),{'module':_0x9ab0('0x6d')});}return null;})[_0x9ab0('0x1d')](function(_0x4e89b1){if(_0x4e89b1){return _0x4e572c;}return null;});})[_0x9ab0('0x1d')](respondWithResult(_0x1a5a1e,null))['catch'](handleError(_0x1a5a1e,null));};exports[_0x9ab0('0x34')]=function(_0x52656d,_0x4f2473,_0x555a2f){var _0x12cbc3;return db['Network']['find']({'where':{'id':_0x52656d['params']['id']}})['then'](function(_0x5ea873){_0x12cbc3=_0x5ea873;return _0x5ea873;})[_0x9ab0('0x1d')](handleEntityNotFound(_0x4f2473,null))['then'](removeEntity(_0x4f2473,null))[_0x9ab0('0x1d')](function(){if(_0x12cbc3){return db[_0x9ab0('0x3b')]['findAll']({'where':{'type':_0x12cbc3[_0x9ab0('0x3d')]},'raw':!![]});}})[_0x9ab0('0x1d')](function(_0x1d2309){if(_0x12cbc3[_0x9ab0('0x3d')][_0x9ab0('0x5a')]()==_0x9ab0('0x5b')){var _0x4bbee2=fs[_0x9ab0('0x63')](path[_0x9ab0('0x5c')](config[_0x9ab0('0x64')],_0x9ab0('0x5d')),_0x9ab0('0x5e'));var _0x3eb6d3=ejs[_0x9ab0('0x68')](_0x4bbee2,{'networks':_0x1d2309||[]});fs[_0x9ab0('0x5f')](_0x9ab0('0x6c'),_0x3eb6d3);return respondWithRpcPromise('Reload',_0x9ab0('0x34'),{'module':_0x9ab0('0x61')});}else if(_0x12cbc3[_0x9ab0('0x3d')][_0x9ab0('0x5a')]()==_0x9ab0('0x62')){var _0x1edd84=fs[_0x9ab0('0x63')](path[_0x9ab0('0x5c')](config[_0x9ab0('0x64')],_0x9ab0('0x65')),_0x9ab0('0x5e'));var _0x4ae435=ejs['render'](_0x1edd84,{'networks':_0x1d2309||[]});fs[_0x9ab0('0x5f')]('/etc/asterisk/turn_xcally.conf',_0x4ae435);return respondWithRpcPromise('Reload',_0x9ab0('0x34'),{'module':_0x9ab0('0x61')});}else{var _0x45762f=fs[_0x9ab0('0x63')](path[_0x9ab0('0x5c')](config[_0x9ab0('0x64')],_0x9ab0('0x67')),_0x9ab0('0x5e'));var _0x39063b=ejs['render'](_0x45762f,{'networks':_0x1d2309||[]});fs[_0x9ab0('0x5f')](util['format'](_0x9ab0('0x6e'),_0x52656d[_0x9ab0('0x59')][_0x9ab0('0x3d')][_0x9ab0('0x6a')]()),_0x39063b);return respondWithRpcPromise('Reload','destroy',{'module':_0x9ab0('0x6d')});}return null;})[_0x9ab0('0x27')](handleError(_0x4f2473,null));};
\ No newline at end of file
+var _0x5c7f=['request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','jayson/promise','client','http','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','name','send','map','Network','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','model','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','show','params','rawAttributes','include','create','sequelize','transaction','body','STUN','readFileSync','root','utf8','render','writeFileSync','Reload','res_stun_monitor.so','join','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','find','toUpperCase','server/files/templates/stun_multiple.ejs','TURN','toLowerCase','/etc/asterisk/stun_xcally.conf','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0x5c7f,0x67));var _0xf5c7=function(_0x32b542,_0x4512fa){_0x32b542=_0x32b542-0x0;var _0x554d54=_0x5c7f[_0x32b542];return _0x554d54;};'use strict';var emlformat=require(_0xf5c7('0x0'));var rimraf=require(_0xf5c7('0x1'));var zipdir=require(_0xf5c7('0x2'));var jsonpatch=require(_0xf5c7('0x3'));var rp=require(_0xf5c7('0x4'));var moment=require(_0xf5c7('0x5'));var BPromise=require(_0xf5c7('0x6'));var Mustache=require('mustache');var util=require(_0xf5c7('0x7'));var path=require(_0xf5c7('0x8'));var sox=require(_0xf5c7('0x9'));var csv=require(_0xf5c7('0xa'));var ejs=require(_0xf5c7('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf5c7('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf5c7('0xd'));var deskjs=require(_0xf5c7('0xe'));var toCsv=require(_0xf5c7('0xa'));var querystring=require(_0xf5c7('0xf'));var Papa=require(_0xf5c7('0x10'));var Redis=require(_0xf5c7('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xf5c7('0x12'));var as=require(_0xf5c7('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf5c7('0x14'))(_0xf5c7('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf5c7('0x16'));var db=require(_0xf5c7('0x17'))['db'];var jayson=require(_0xf5c7('0x18'));var client=jayson[_0xf5c7('0x19')][_0xf5c7('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x455ca2,_0x3eeeaf,_0x32536e,_0x5f3b64){return new BPromise(function(_0x166f44,_0x29ab03){var _0x4bfbdc=_0x5f3b64||client;return _0x4bfbdc['request'](_0x455ca2,_0x32536e)['then'](function(_0x51bfee){logger[_0xf5c7('0x1b')](_0xf5c7('0x1c'),_0x3eeeaf,_0xf5c7('0x1d'));logger[_0xf5c7('0x1e')](_0xf5c7('0x1f'),_0x3eeeaf,'request\x20sent',JSON[_0xf5c7('0x20')](_0x51bfee));if(_0x51bfee['error']){if(_0x51bfee['error'][_0xf5c7('0x21')]===0x1f4){logger[_0xf5c7('0x22')]('Network,\x20%s,\x20%s',_0x3eeeaf,_0x51bfee[_0xf5c7('0x22')][_0xf5c7('0x23')]);return _0x29ab03(_0x51bfee[_0xf5c7('0x22')][_0xf5c7('0x23')]);}logger[_0xf5c7('0x22')]('Network,\x20%s,\x20%s',_0x3eeeaf,_0x51bfee[_0xf5c7('0x22')][_0xf5c7('0x23')]);return _0x166f44(_0x51bfee[_0xf5c7('0x22')][_0xf5c7('0x23')]);}else{logger[_0xf5c7('0x1b')](_0xf5c7('0x1c'),_0x3eeeaf,_0xf5c7('0x1d'));_0x166f44(_0x51bfee[_0xf5c7('0x24')]['message']);}})[_0xf5c7('0x25')](function(_0x30a6a5){logger[_0xf5c7('0x22')](_0xf5c7('0x1c'),_0x3eeeaf,_0x30a6a5);_0x29ab03(_0x30a6a5);});});}function respondWithStatusCode(_0x294dfc,_0x661e8c){_0x661e8c=_0x661e8c||0xcc;return function(_0x25aee7){if(_0x25aee7){return _0x294dfc['sendStatus'](_0x661e8c);}return _0x294dfc[_0xf5c7('0x26')](_0x661e8c)['end']();};}function respondWithResult(_0x5970c3,_0x23af6f){_0x23af6f=_0x23af6f||0xc8;return function(_0x46048d){if(_0x46048d){return _0x5970c3[_0xf5c7('0x26')](_0x23af6f)[_0xf5c7('0x27')](_0x46048d);}};}function respondWithFilteredResult(_0x586975,_0x24c98d){return function(_0x401850){if(_0x401850){var _0x54f255=typeof _0x24c98d[_0xf5c7('0x28')]===_0xf5c7('0x29')&&typeof _0x24c98d[_0xf5c7('0x2a')]===_0xf5c7('0x29');var _0x11dc36=_0x401850['count'];var _0x4e3833=_0x54f255?0x0:_0x24c98d[_0xf5c7('0x28')];var _0x38125d=_0x54f255?_0x401850[_0xf5c7('0x2b')]:_0x24c98d[_0xf5c7('0x28')]+_0x24c98d[_0xf5c7('0x2a')];var _0x3f8561;if(_0x38125d>=_0x11dc36){_0x38125d=_0x11dc36;_0x3f8561=0xc8;}else{_0x3f8561=0xce;}_0x586975[_0xf5c7('0x26')](_0x3f8561);return _0x586975[_0xf5c7('0x2c')](_0xf5c7('0x2d'),_0x4e3833+'-'+_0x38125d+'/'+_0x11dc36)[_0xf5c7('0x27')](_0x401850);}return null;};}function patchUpdates(_0x53204f){return function(_0x3414ee){try{jsonpatch[_0xf5c7('0x2e')](_0x3414ee,_0x53204f,!![]);}catch(_0x3c1e3d){return BPromise[_0xf5c7('0x2f')](_0x3c1e3d);}return _0x3414ee[_0xf5c7('0x30')]();};}function saveUpdates(_0x20d304,_0xe7a320){return function(_0xc5db53){if(_0xc5db53){return _0xc5db53[_0xf5c7('0x31')](_0x20d304)[_0xf5c7('0x32')](function(_0x1c00a9){return _0x1c00a9;});}return null;};}function removeEntity(_0xd0c875,_0x435143){return function(_0x4a66ba){if(_0x4a66ba){return _0x4a66ba[_0xf5c7('0x33')]()[_0xf5c7('0x32')](function(){_0xd0c875[_0xf5c7('0x26')](0xcc)[_0xf5c7('0x34')]();});}};}function handleEntityNotFound(_0x1623c9,_0x121f95){return function(_0x47987d){if(!_0x47987d){_0x1623c9[_0xf5c7('0x35')](0x194);}return _0x47987d;};}function handleError(_0x403b4b,_0x54f565){_0x54f565=_0x54f565||0x1f4;return function(_0x3e5595){logger['error'](_0x3e5595['stack']);if(_0x3e5595[_0xf5c7('0x36')]){delete _0x3e5595[_0xf5c7('0x36')];}_0x403b4b[_0xf5c7('0x26')](_0x54f565)[_0xf5c7('0x37')](_0x3e5595);};}exports['index']=function(_0x510f14,_0x371f88){var _0x284401={},_0x498db5={},_0x1a14e4={'count':0x0,'rows':[]};var _0xc97eb3=_[_0xf5c7('0x38')](db[_0xf5c7('0x39')]['rawAttributes'],function(_0x35b05a){return{'name':_0x35b05a[_0xf5c7('0x3a')],'type':_0x35b05a[_0xf5c7('0x3b')][_0xf5c7('0x3c')]};});_0x498db5['model']=_[_0xf5c7('0x38')](_0xc97eb3,_0xf5c7('0x36'));_0x498db5[_0xf5c7('0x3d')]=_[_0xf5c7('0x3e')](_0x510f14[_0xf5c7('0x3d')]);_0x498db5[_0xf5c7('0x3f')]=_[_0xf5c7('0x40')](_0x498db5['model'],_0x498db5[_0xf5c7('0x3d')]);_0x284401[_0xf5c7('0x41')]=_['intersection'](_0x498db5['model'],qs[_0xf5c7('0x42')](_0x510f14[_0xf5c7('0x3d')][_0xf5c7('0x42')]));_0x284401[_0xf5c7('0x41')]=_0x284401['attributes'][_0xf5c7('0x43')]?_0x284401[_0xf5c7('0x41')]:_0x498db5[_0xf5c7('0x44')];if(!_0x510f14[_0xf5c7('0x3d')]['hasOwnProperty'](_0xf5c7('0x45'))){_0x284401[_0xf5c7('0x2a')]=qs[_0xf5c7('0x2a')](_0x510f14['query'][_0xf5c7('0x2a')]);_0x284401['offset']=qs[_0xf5c7('0x28')](_0x510f14[_0xf5c7('0x3d')][_0xf5c7('0x28')]);}_0x284401[_0xf5c7('0x46')]=qs[_0xf5c7('0x47')](_0x510f14['query'][_0xf5c7('0x47')]);_0x284401[_0xf5c7('0x48')]=qs['filters'](_[_0xf5c7('0x49')](_0x510f14[_0xf5c7('0x3d')],_0x498db5[_0xf5c7('0x3f')]),_0xc97eb3);if(_0x510f14[_0xf5c7('0x3d')]['filter']){_0x284401[_0xf5c7('0x48')]=_['merge'](_0x284401[_0xf5c7('0x48')],{'$or':_['map'](_0xc97eb3,function(_0x2aebe7){if(_0x2aebe7[_0xf5c7('0x3b')]!==_0xf5c7('0x4a')){var _0x3d090e={};_0x3d090e[_0x2aebe7[_0xf5c7('0x36')]]={'$like':'%'+_0x510f14[_0xf5c7('0x3d')][_0xf5c7('0x4b')]+'%'};return _0x3d090e;}})});}_0x284401=_[_0xf5c7('0x4c')]({},_0x284401,_0x510f14[_0xf5c7('0x4d')]);var _0x375689={'where':_0x284401['where']};return db[_0xf5c7('0x39')][_0xf5c7('0x2b')](_0x375689)[_0xf5c7('0x32')](function(_0xf211ac){_0x1a14e4['count']=_0xf211ac;if(_0x510f14[_0xf5c7('0x3d')][_0xf5c7('0x4e')]){_0x284401['include']=[{'all':!![]}];}return db[_0xf5c7('0x39')][_0xf5c7('0x4f')](_0x284401);})['then'](function(_0x3183ec){_0x1a14e4['rows']=_0x3183ec;return _0x1a14e4;})[_0xf5c7('0x32')](respondWithFilteredResult(_0x371f88,_0x284401))[_0xf5c7('0x25')](handleError(_0x371f88,null));};exports[_0xf5c7('0x50')]=function(_0x248416,_0x196127){var _0x52d111={'raw':!![],'where':{'id':_0x248416[_0xf5c7('0x51')]['id']}},_0x4fa89d={};_0x4fa89d[_0xf5c7('0x44')]=_[_0xf5c7('0x3e')](db[_0xf5c7('0x39')][_0xf5c7('0x52')]);_0x4fa89d[_0xf5c7('0x3d')]=_[_0xf5c7('0x3e')](_0x248416[_0xf5c7('0x3d')]);_0x4fa89d[_0xf5c7('0x3f')]=_[_0xf5c7('0x40')](_0x4fa89d[_0xf5c7('0x44')],_0x4fa89d[_0xf5c7('0x3d')]);_0x52d111['attributes']=_[_0xf5c7('0x40')](_0x4fa89d['model'],qs[_0xf5c7('0x42')](_0x248416[_0xf5c7('0x3d')][_0xf5c7('0x42')]));_0x52d111[_0xf5c7('0x41')]=_0x52d111[_0xf5c7('0x41')]['length']?_0x52d111[_0xf5c7('0x41')]:_0x4fa89d[_0xf5c7('0x44')];if(_0x248416[_0xf5c7('0x3d')][_0xf5c7('0x4e')]){_0x52d111[_0xf5c7('0x53')]=[{'all':!![]}];}_0x52d111=_[_0xf5c7('0x4c')]({},_0x52d111,_0x248416[_0xf5c7('0x4d')]);return db['Network']['find'](_0x52d111)[_0xf5c7('0x32')](handleEntityNotFound(_0x196127,null))[_0xf5c7('0x32')](respondWithResult(_0x196127,null))[_0xf5c7('0x25')](handleError(_0x196127,null));};exports[_0xf5c7('0x54')]=function(_0x1dc904,_0x1112ea,_0x5c3c38){var _0x500d8b;return db[_0xf5c7('0x55')][_0xf5c7('0x56')](function(_0x3761ca){return db[_0xf5c7('0x39')]['create'](_0x1dc904[_0xf5c7('0x57')],{'raw':!![]})[_0xf5c7('0x32')](function(_0x4acaee){_0x500d8b=_0x4acaee;return db[_0xf5c7('0x39')][_0xf5c7('0x4f')]({'where':{'type':_0x1dc904[_0xf5c7('0x57')]['type']},'raw':!![]});})[_0xf5c7('0x32')](function(_0x5ef9c6){if(_0x500d8b[_0xf5c7('0x3b')]['toUpperCase']()==_0xf5c7('0x58')){var _0x281ffd=fs[_0xf5c7('0x59')](path['join'](config[_0xf5c7('0x5a')],'server/files/templates/stun_multiple.ejs'),_0xf5c7('0x5b'));var _0x3ff21c=ejs[_0xf5c7('0x5c')](_0x281ffd,{'networks':_0x5ef9c6||[]});fs[_0xf5c7('0x5d')]('/etc/asterisk/stun_xcally.conf',_0x3ff21c);return respondWithRpcPromise(_0xf5c7('0x5e'),_0xf5c7('0x54'),{'module':_0xf5c7('0x5f')});}else if(_0x500d8b[_0xf5c7('0x3b')]['toUpperCase']()=='TURN'){var _0xa50292=fs[_0xf5c7('0x59')](path[_0xf5c7('0x60')](config[_0xf5c7('0x5a')],_0xf5c7('0x61')),_0xf5c7('0x5b'));var _0x4f8123=ejs[_0xf5c7('0x5c')](_0xa50292,{'networks':_0x5ef9c6||[]});fs[_0xf5c7('0x5d')](_0xf5c7('0x62'),_0x4f8123);return respondWithRpcPromise(_0xf5c7('0x5e'),_0xf5c7('0x54'),{'module':_0xf5c7('0x5f')});}else{var _0x4a4b8c=fs['readFileSync'](path[_0xf5c7('0x60')](config[_0xf5c7('0x5a')],_0xf5c7('0x63')),_0xf5c7('0x5b'));var _0x120bd7=ejs['render'](_0x4a4b8c,{'networks':_0x5ef9c6||[]});fs[_0xf5c7('0x5d')](util['format'](_0xf5c7('0x64'),_0x1dc904[_0xf5c7('0x57')]['type']['toLowerCase']()),_0x120bd7);return respondWithRpcPromise(_0xf5c7('0x5e'),_0xf5c7('0x54'),{'module':'chan_sip.so'});}return null;})['then'](function(){return _0x500d8b;});})[_0xf5c7('0x32')](respondWithResult(_0x1112ea,0xc9))[_0xf5c7('0x25')](handleError(_0x1112ea,null));};exports[_0xf5c7('0x31')]=function(_0x369d26,_0x19da67,_0x5ae379){var _0x36cc9b;return db[_0xf5c7('0x55')][_0xf5c7('0x56')](function(_0x4f8177){return db[_0xf5c7('0x39')][_0xf5c7('0x65')]({'where':{'id':_0x369d26[_0xf5c7('0x51')]['id']}})[_0xf5c7('0x32')](handleEntityNotFound(_0x19da67,null))[_0xf5c7('0x32')](saveUpdates(_0x369d26['body'],null))['then'](function(_0x4dc324){if(_0x4dc324){_0x36cc9b=_0x4dc324;return db[_0xf5c7('0x39')]['findAll']({'where':{'type':_0x36cc9b[_0xf5c7('0x3b')]},'raw':!![]});}return null;})[_0xf5c7('0x32')](function(_0x47701e){if(_0x36cc9b[_0xf5c7('0x3b')][_0xf5c7('0x66')]()==_0xf5c7('0x58')){var _0xc4bc65=fs[_0xf5c7('0x59')](path['join'](config['root'],_0xf5c7('0x67')),'utf8');var _0x584bd9=ejs[_0xf5c7('0x5c')](_0xc4bc65,{'networks':_0x47701e||[]});fs[_0xf5c7('0x5d')]('/etc/asterisk/stun_xcally.conf',_0x584bd9);return respondWithRpcPromise(_0xf5c7('0x5e'),'update',{'module':'res_stun_monitor.so'});}else if(_0x36cc9b[_0xf5c7('0x3b')][_0xf5c7('0x66')]()==_0xf5c7('0x68')){var _0x551b8c=fs[_0xf5c7('0x59')](path[_0xf5c7('0x60')](config[_0xf5c7('0x5a')],_0xf5c7('0x61')),_0xf5c7('0x5b'));var _0x10cb19=ejs[_0xf5c7('0x5c')](_0x551b8c,{'networks':_0x47701e||[]});fs['writeFileSync'](_0xf5c7('0x62'),_0x10cb19);return respondWithRpcPromise(_0xf5c7('0x5e'),'update',{'module':_0xf5c7('0x5f')});}else{var _0x4c0922=fs[_0xf5c7('0x59')](path[_0xf5c7('0x60')](config[_0xf5c7('0x5a')],'server/files/templates/network.ejs'),_0xf5c7('0x5b'));var _0x3cb883=ejs['render'](_0x4c0922,{'networks':_0x47701e||[]});fs[_0xf5c7('0x5d')](util['format'](_0xf5c7('0x64'),_0x369d26[_0xf5c7('0x57')][_0xf5c7('0x3b')][_0xf5c7('0x69')]()),_0x3cb883);return respondWithRpcPromise(_0xf5c7('0x5e'),_0xf5c7('0x31'),{'module':'chan_sip.so'});}return null;})[_0xf5c7('0x32')](function(_0x7d5ab4){if(_0x7d5ab4){return _0x36cc9b;}return null;});})['then'](respondWithResult(_0x19da67,null))[_0xf5c7('0x25')](handleError(_0x19da67,null));};exports[_0xf5c7('0x33')]=function(_0x3ada65,_0x4208fe,_0x5e2845){var _0xf217c2;return db['Network'][_0xf5c7('0x65')]({'where':{'id':_0x3ada65[_0xf5c7('0x51')]['id']}})[_0xf5c7('0x32')](function(_0x1b7bc3){_0xf217c2=_0x1b7bc3;return _0x1b7bc3;})[_0xf5c7('0x32')](handleEntityNotFound(_0x4208fe,null))[_0xf5c7('0x32')](removeEntity(_0x4208fe,null))[_0xf5c7('0x32')](function(){if(_0xf217c2){return db['Network'][_0xf5c7('0x4f')]({'where':{'type':_0xf217c2[_0xf5c7('0x3b')]},'raw':!![]});}})[_0xf5c7('0x32')](function(_0x35b5ba){if(_0xf217c2['type'][_0xf5c7('0x66')]()==_0xf5c7('0x58')){var _0x5e0b6e=fs[_0xf5c7('0x59')](path[_0xf5c7('0x60')](config[_0xf5c7('0x5a')],_0xf5c7('0x67')),_0xf5c7('0x5b'));var _0x3bb8f3=ejs['render'](_0x5e0b6e,{'networks':_0x35b5ba||[]});fs[_0xf5c7('0x5d')](_0xf5c7('0x6a'),_0x3bb8f3);return respondWithRpcPromise(_0xf5c7('0x5e'),_0xf5c7('0x33'),{'module':'res_stun_monitor.so'});}else if(_0xf217c2['type'][_0xf5c7('0x66')]()==_0xf5c7('0x68')){var _0x5d0b9d=fs[_0xf5c7('0x59')](path[_0xf5c7('0x60')](config['root'],_0xf5c7('0x61')),_0xf5c7('0x5b'));var _0x39c120=ejs[_0xf5c7('0x5c')](_0x5d0b9d,{'networks':_0x35b5ba||[]});fs[_0xf5c7('0x5d')]('/etc/asterisk/turn_xcally.conf',_0x39c120);return respondWithRpcPromise(_0xf5c7('0x5e'),_0xf5c7('0x33'),{'module':_0xf5c7('0x5f')});}else{var _0x38108d=fs['readFileSync'](path[_0xf5c7('0x60')](config['root'],'server/files/templates/network.ejs'),_0xf5c7('0x5b'));var _0x181cf1=ejs[_0xf5c7('0x5c')](_0x38108d,{'networks':_0x35b5ba||[]});fs[_0xf5c7('0x5d')](util['format'](_0xf5c7('0x64'),_0x3ada65[_0xf5c7('0x57')][_0xf5c7('0x3b')][_0xf5c7('0x69')]()),_0x181cf1);return respondWithRpcPromise(_0xf5c7('0x5e'),_0xf5c7('0x33'),{'module':'chan_sip.so'});}return null;})[_0xf5c7('0x25')](handleError(_0x4208fe,null));};
\ No newline at end of file
index 5298383..5e53bc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x235a=['exports','Network','network','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./network.attributes'];(function(_0x45513e,_0x433f83){var _0x59331f=function(_0x3d2c8c){while(--_0x3d2c8c){_0x45513e['push'](_0x45513e['shift']());}};_0x59331f(++_0x433f83);}(_0x235a,0x1ef));var _0xa235=function(_0x350e23,_0x12d586){_0x350e23=_0x350e23-0x0;var _0x548ec9=_0x235a[_0x350e23];return _0x548ec9;};'use strict';var _=require(_0xa235('0x0'));var util=require(_0xa235('0x1'));var logger=require(_0xa235('0x2'))('api');var moment=require(_0xa235('0x3'));var BPromise=require('bluebird');var rp=require(_0xa235('0x4'));var fs=require('fs');var path=require(_0xa235('0x5'));var rimraf=require(_0xa235('0x6'));var config=require(_0xa235('0x7'));var attributes=require(_0xa235('0x8'));module[_0xa235('0x9')]=function(_0x2961c8,_0x1707fc){return _0x2961c8['define'](_0xa235('0xa'),attributes,{'tableName':_0xa235('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbc9d=['./network.attributes','exports','define','network','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment'];(function(_0x4a8600,_0x1e723e){var _0x4458b6=function(_0x4b4b37){while(--_0x4b4b37){_0x4a8600['push'](_0x4a8600['shift']());}};_0x4458b6(++_0x1e723e);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x456e1e,_0x201061){_0x456e1e=_0x456e1e-0x0;var _0xa098f9=_0xbc9d[_0x456e1e];return _0xa098f9;};'use strict';var _=require(_0xdbc9('0x0'));var util=require(_0xdbc9('0x1'));var logger=require(_0xdbc9('0x2'))(_0xdbc9('0x3'));var moment=require(_0xdbc9('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xdbc9('0x5'));var config=require(_0xdbc9('0x6'));var attributes=require(_0xdbc9('0x7'));module[_0xdbc9('0x8')]=function(_0x6ab397,_0x7c4c55){return _0x6ab397[_0xdbc9('0x9')]('Network',attributes,{'tableName':_0xdbc9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c72946c..f39eb5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a54,0x106));var _0x47a5=function(_0x4efef2,_0x3c0640){_0x4efef2=_0x4efef2-0x0;var _0x12529b=_0x7a54[_0x4efef2];return _0x12529b;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+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(_0x3334ff,_0x63b8d1){var _0x10a672=function(_0x45b035){while(--_0x45b035){_0x3334ff['push'](_0x3334ff['shift']());}};_0x10a672(++_0x63b8d1);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'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 cbb457f..9d57f83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8518=['/:id/send','send','put','update','delete','removeDispositions','removeAnswers','multer','util','Router','../../components/auth/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','post','create','/:id/dispositions','addDisposition','addAnswer','/:id/notify','notify','addApplications','addAgents'];(function(_0x102051,_0x3cb66d){var _0x224af2=function(_0x3ab49a){while(--_0x3ab49a){_0x102051['push'](_0x102051['shift']());}};_0x224af2(++_0x3cb66d);}(_0x8518,0x179));var _0x8851=function(_0x412942,_0x3b9cbb){_0x412942=_0x412942-0x0;var _0x32ce0d=_0x8518[_0x412942];return _0x32ce0d;};'use strict';var multer=require(_0x8851('0x0'));var util=require(_0x8851('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8851('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x8851('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x8851('0x4'));var controller=require(_0x8851('0x5'));router[_0x8851('0x6')]('/',auth[_0x8851('0x7')](),controller[_0x8851('0x8')]);router[_0x8851('0x6')](_0x8851('0x9'),auth[_0x8851('0x7')](),controller['describe']);router[_0x8851('0x6')](_0x8851('0xa'),auth['isAuthenticated'](),controller[_0x8851('0xb')]);router[_0x8851('0x6')]('/:id/dispositions',auth[_0x8851('0x7')](),controller[_0x8851('0xc')]);router[_0x8851('0x6')](_0x8851('0xd'),auth[_0x8851('0x7')](),controller[_0x8851('0xe')]);router[_0x8851('0x6')](_0x8851('0xf'),auth[_0x8851('0x7')](),controller[_0x8851('0x10')]);router[_0x8851('0x6')](_0x8851('0x11'),auth['isAuthenticated'](),controller[_0x8851('0x12')]);router[_0x8851('0x6')](_0x8851('0x13'),auth[_0x8851('0x7')](),controller[_0x8851('0x14')]);router[_0x8851('0x15')]('/',auth[_0x8851('0x7')](),controller[_0x8851('0x16')]);router[_0x8851('0x15')](_0x8851('0x17'),auth[_0x8851('0x7')](),controller[_0x8851('0x18')]);router[_0x8851('0x15')](_0x8851('0xd'),auth[_0x8851('0x7')](),controller[_0x8851('0x19')]);router[_0x8851('0x15')](_0x8851('0x1a'),controller[_0x8851('0x1b')]);router[_0x8851('0x15')](_0x8851('0xf'),auth[_0x8851('0x7')](),controller[_0x8851('0x1c')]);router[_0x8851('0x15')](_0x8851('0x13'),auth[_0x8851('0x7')](),controller[_0x8851('0x1d')]);router[_0x8851('0x15')](_0x8851('0x1e'),auth[_0x8851('0x7')](),controller[_0x8851('0x1f')]);router[_0x8851('0x20')]('/:id',auth[_0x8851('0x7')](),controller[_0x8851('0x21')]);router[_0x8851('0x22')](_0x8851('0xa'),auth[_0x8851('0x7')](),controller['destroy']);router['delete'](_0x8851('0x17'),auth[_0x8851('0x7')](),controller[_0x8851('0x23')]);router[_0x8851('0x22')](_0x8851('0xd'),auth[_0x8851('0x7')](),controller[_0x8851('0x24')]);router[_0x8851('0x22')](_0x8851('0x13'),auth['isAuthenticated'](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x1ac6=['/:id/interactions','getInteractions','/:id/users','post','create','addDisposition','/:id/canned_answers','addAnswer','/:id/notify','notify','addApplications','/:id/send','send','put','destroy','delete','removeDispositions','removeAgents','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getAnswers','getApplications'];(function(_0x45bf86,_0x75586e){var _0x1f02b7=function(_0x1ea8a3){while(--_0x1ea8a3){_0x45bf86['push'](_0x45bf86['shift']());}};_0x1f02b7(++_0x75586e);}(_0x1ac6,0x1aa));var _0x61ac=function(_0x478970,_0x5df032){_0x478970=_0x478970-0x0;var _0x1759f1=_0x1ac6[_0x478970];return _0x1759f1;};'use strict';var multer=require(_0x61ac('0x0'));var util=require(_0x61ac('0x1'));var path=require(_0x61ac('0x2'));var timeout=require(_0x61ac('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x61ac('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x61ac('0x5'));var config=require('../../config/environment');var controller=require('./openchannelAccount.controller');router[_0x61ac('0x6')]('/',auth[_0x61ac('0x7')](),controller[_0x61ac('0x8')]);router[_0x61ac('0x6')](_0x61ac('0x9'),auth[_0x61ac('0x7')](),controller[_0x61ac('0xa')]);router[_0x61ac('0x6')](_0x61ac('0xb'),auth[_0x61ac('0x7')](),controller[_0x61ac('0xc')]);router['get'](_0x61ac('0xd'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x61ac('0x6')]('/:id/canned_answers',auth[_0x61ac('0x7')](),controller[_0x61ac('0xe')]);router['get']('/:id/applications',auth[_0x61ac('0x7')](),controller[_0x61ac('0xf')]);router['get'](_0x61ac('0x10'),auth['isAuthenticated'](),controller[_0x61ac('0x11')]);router[_0x61ac('0x6')](_0x61ac('0x12'),auth[_0x61ac('0x7')](),controller['getAgents']);router[_0x61ac('0x13')]('/',auth[_0x61ac('0x7')](),controller[_0x61ac('0x14')]);router[_0x61ac('0x13')](_0x61ac('0xd'),auth['isAuthenticated'](),controller[_0x61ac('0x15')]);router[_0x61ac('0x13')](_0x61ac('0x16'),auth[_0x61ac('0x7')](),controller[_0x61ac('0x17')]);router[_0x61ac('0x13')](_0x61ac('0x18'),controller[_0x61ac('0x19')]);router['post']('/:id/applications',auth[_0x61ac('0x7')](),controller[_0x61ac('0x1a')]);router[_0x61ac('0x13')]('/:id/users',auth[_0x61ac('0x7')](),controller['addAgents']);router[_0x61ac('0x13')](_0x61ac('0x1b'),auth[_0x61ac('0x7')](),controller[_0x61ac('0x1c')]);router[_0x61ac('0x1d')](_0x61ac('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x61ac('0xb'),auth[_0x61ac('0x7')](),controller[_0x61ac('0x1e')]);router[_0x61ac('0x1f')](_0x61ac('0xd'),auth[_0x61ac('0x7')](),controller[_0x61ac('0x20')]);router['delete']('/:id/canned_answers',auth[_0x61ac('0x7')](),controller['removeAnswers']);router[_0x61ac('0x1f')](_0x61ac('0x12'),auth['isAuthenticated'](),controller[_0x61ac('0x21')]);module['exports']=router;
\ No newline at end of file
index 985a56e..a4a6a29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf74a=['setDataValue','mandatoryDisposition','randomstring','exports','name','STRING','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xf74a,0xf9));var _0xaf74=function(_0x32077f,_0x59b3bc){_0x32077f=_0x32077f-0x0;var _0x2b2a14=_0xf74a[_0x32077f];return _0x2b2a14;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xaf74('0x0'));module[_0xaf74('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xaf74('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xaf74('0x3')]},'token':{'type':Sequelize[_0xaf74('0x3')],'defaultValue':function(){return rs[_0xaf74('0x4')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xaf74('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xaf74('0x5')],'defaultValue':function(){return _0xaf74('0x6');}},'notificationSound':{'type':Sequelize[_0xaf74('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xaf74('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xaf74('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xaf74('0x3')]},'queueTransfer':{'type':Sequelize[_0xaf74('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xaf74('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xaf74('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0xaf74('0x9')},'mandatoryDisposition':{'type':Sequelize[_0xaf74('0x7')],'defaultValue':![],'comment':_0xaf74('0xa'),'set':function(_0x45ed30){if(!_0x45ed30)this[_0xaf74('0xb')]('mandatoryDispositionPauseId',null);this[_0xaf74('0xb')](_0xaf74('0xc'),_0x45ed30);}}};
\ No newline at end of file
+var _0xe497=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x3815e8,_0x293b3f){var _0x577353=function(_0x58d036){while(--_0x58d036){_0x3815e8['push'](_0x3815e8['shift']());}};_0x577353(++_0x293b3f);}(_0xe497,0x17b));var _0x7e49=function(_0x28662a,_0x23692c){_0x28662a=_0x28662a-0x0;var _0x52b34e=_0xe497[_0x28662a];return _0x52b34e;};'use strict';var Sequelize=require(_0x7e49('0x0'));var rs=require(_0x7e49('0x1'));module[_0x7e49('0x2')]={'name':{'type':Sequelize[_0x7e49('0x3')],'unique':_0x7e49('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0x7e49('0x3')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x7e49('0x5')]();}},'replyUri':{'type':Sequelize[_0x7e49('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'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[_0x7e49('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x7e49('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x7e49('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0x7e49('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x7e49('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x7e49('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7e49('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x7e49('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x7e49('0x6')],'defaultValue':![],'comment':_0x7e49('0x9'),'set':function(_0x467d32){if(!_0x467d32)this[_0x7e49('0xa')](_0x7e49('0xb'),null);this['setDataValue'](_0x7e49('0xc'),_0x467d32);}}};
\ No newline at end of file
index 0e567fa..f8b17ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47b6=['../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','jayson/promise','client','http','request','then','OpenchannelAccount,\x20%s,\x20%s','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','get','UserProfileResource','stack','name','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','includeAll','rows','show','length','include','options','create','body','user','role','OpenchannelAccounts','UserProfileSection','find','userProfileId','autoAssociation','params','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','pick','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','openchannel','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','from','from\x20is\x20mandatory','isNil','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','CmList','List','Contacts','DESC','OpenchannelApplication','account','applications','Applications','priority','asc','defaults','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','interaction','created','autoclose','unmanaged','OpenchannelMessage','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','*,*,*,*','forcedOwnership','startRouting','Start','EventManager','addApplications','findOne','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','removeAgents','isArray','emit','userOpenchannelAccount:remove','getAgents','send','out','Messages','dataValues','eml-format','zip-dir','request-promise','moment','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'];(function(_0x55e46f,_0x38daa0){var _0x32bfb0=function(_0x39b5ec){while(--_0x39b5ec){_0x55e46f['push'](_0x55e46f['shift']());}};_0x32bfb0(++_0x38daa0);}(_0x47b6,0xa8));var _0x647b=function(_0x4b174a,_0x33a017){_0x4b174a=_0x4b174a-0x0;var _0x3cd7bf=_0x47b6[_0x4b174a];return _0x3cd7bf;};'use strict';var emlformat=require(_0x647b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x647b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x647b('0x2'));var moment=require(_0x647b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x647b('0x4'));var util=require(_0x647b('0x5'));var path=require('path');var sox=require(_0x647b('0x6'));var csv=require(_0x647b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x647b('0x8'));var _=require(_0x647b('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x647b('0xa'));var deskjs=require(_0x647b('0xb'));var toCsv=require(_0x647b('0x7'));var querystring=require('querystring');var Papa=require(_0x647b('0xc'));var Redis=require(_0x647b('0xd'));var authService=require(_0x647b('0xe'));var qs=require(_0x647b('0xf'));var as=require(_0x647b('0x10'));var hardwareService=require(_0x647b('0x11'));var logger=require(_0x647b('0x12'))(_0x647b('0x13'));var utils=require('../../config/utils');var config=require(_0x647b('0x14'));var licenseUtil=require(_0x647b('0x15'));var db=require(_0x647b('0x16'))['db'];config[_0x647b('0x17')]=_['defaults'](config[_0x647b('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x647b('0x18'))(new Redis(config['redis']));require('./openchannelAccount.socket')[_0x647b('0x19')](socket);var jayson=require(_0x647b('0x1a'));var client=jayson[_0x647b('0x1b')][_0x647b('0x1c')]({'port':0x232c});var client9002=jayson[_0x647b('0x1b')][_0x647b('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x2c69fa,_0x519d53,_0x2f030e,_0x105cff){return new BPromise(function(_0x5e0948,_0x3913b4){var _0x384c74=_0x105cff||client;return _0x384c74[_0x647b('0x1d')](_0x2c69fa,_0x2f030e)[_0x647b('0x1e')](function(_0x2b1c5a){logger['info'](_0x647b('0x1f'),_0x519d53,'request\x20sent');logger['debug'](_0x647b('0x20'),_0x519d53,'request\x20sent',JSON[_0x647b('0x21')](_0x2b1c5a));if(_0x2b1c5a[_0x647b('0x22')]){if(_0x2b1c5a[_0x647b('0x22')][_0x647b('0x23')]===0x1f4){logger[_0x647b('0x22')](_0x647b('0x1f'),_0x519d53,_0x2b1c5a[_0x647b('0x22')]['message']);return _0x3913b4(_0x2b1c5a['error'][_0x647b('0x24')]);}logger[_0x647b('0x22')]('OpenchannelAccount,\x20%s,\x20%s',_0x519d53,_0x2b1c5a[_0x647b('0x22')][_0x647b('0x24')]);return _0x5e0948(_0x2b1c5a['error'][_0x647b('0x24')]);}else{logger[_0x647b('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x519d53,_0x647b('0x26'));_0x5e0948(_0x2b1c5a[_0x647b('0x27')][_0x647b('0x24')]);}})[_0x647b('0x28')](function(_0x126d0e){logger[_0x647b('0x22')](_0x647b('0x1f'),_0x519d53,_0x126d0e);_0x3913b4(_0x126d0e);});});}function respondWithStatusCode(_0x569dfb,_0xa3e96b){_0xa3e96b=_0xa3e96b||0xcc;return function(_0x2828af){if(_0x2828af){return _0x569dfb[_0x647b('0x29')](_0xa3e96b);}return _0x569dfb[_0x647b('0x2a')](_0xa3e96b)[_0x647b('0x2b')]();};}function respondWithResult(_0x389472,_0x164f55){_0x164f55=_0x164f55||0xc8;return function(_0x56e5a8){if(_0x56e5a8){return _0x389472[_0x647b('0x2a')](_0x164f55)[_0x647b('0x2c')](_0x56e5a8);}};}function respondWithFilteredResult(_0x562583,_0x4f6f85){return function(_0x294c16){if(_0x294c16){var _0x4e9536=typeof _0x4f6f85[_0x647b('0x2d')]===_0x647b('0x2e')&&typeof _0x4f6f85[_0x647b('0x2f')]===_0x647b('0x2e');var _0x20b0b4=_0x294c16[_0x647b('0x30')];var _0x1a9dcf=_0x4e9536?0x0:_0x4f6f85[_0x647b('0x2d')];var _0x3eabd5=_0x4e9536?_0x294c16[_0x647b('0x30')]:_0x4f6f85[_0x647b('0x2d')]+_0x4f6f85[_0x647b('0x2f')];var _0x15bb11;if(_0x3eabd5>=_0x20b0b4){_0x3eabd5=_0x20b0b4;_0x15bb11=0xc8;}else{_0x15bb11=0xce;}_0x562583[_0x647b('0x2a')](_0x15bb11);return _0x562583[_0x647b('0x31')](_0x647b('0x32'),_0x1a9dcf+'-'+_0x3eabd5+'/'+_0x20b0b4)['json'](_0x294c16);}return null;};}function patchUpdates(_0xfd598f){return function(_0x2139ac){try{jsonpatch['apply'](_0x2139ac,_0xfd598f,!![]);}catch(_0x10763c){return BPromise[_0x647b('0x33')](_0x10763c);}return _0x2139ac['save']();};}function saveUpdates(_0x4e3f7e,_0x1e30f5){return function(_0x5ef5a9){if(_0x5ef5a9){return _0x5ef5a9[_0x647b('0x34')](_0x4e3f7e)[_0x647b('0x1e')](function(_0x282359){return _0x282359;});}return null;};}function removeEntity(_0x413ecf,_0x4d7c64){return function(_0x187bba){if(_0x187bba){return _0x187bba[_0x647b('0x35')]()[_0x647b('0x1e')](function(){var _0x135a99=_0x187bba[_0x647b('0x36')]({'plain':!![]});var _0x306e8d='OpenchannelAccounts';return db[_0x647b('0x37')][_0x647b('0x35')]({'where':{'type':_0x306e8d,'resourceId':_0x135a99['id']}})[_0x647b('0x1e')](function(){return _0x187bba;});})['then'](function(){_0x413ecf[_0x647b('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x381459,_0x129d28){return function(_0xf041d3){if(!_0xf041d3){_0x381459[_0x647b('0x29')](0x194);}return _0xf041d3;};}function handleError(_0x134caf,_0x45b46a){_0x45b46a=_0x45b46a||0x1f4;return function(_0x20e154){logger[_0x647b('0x22')](_0x20e154[_0x647b('0x38')]);if(_0x20e154[_0x647b('0x39')]){delete _0x20e154[_0x647b('0x39')];}_0x134caf[_0x647b('0x2a')](_0x45b46a)['send'](_0x20e154);};}exports['index']=function(_0xbb546c,_0x8c1f27){var _0x1d3a40={'include':[{'model':db[_0x647b('0x3a')],'as':_0x647b('0x3b')}]},_0x48d5b1={},_0x28ff3c={'count':0x0,'rows':[]};var _0x169e11=_[_0x647b('0x3c')](db[_0x647b('0x3d')][_0x647b('0x3e')],function(_0x2b35d4){return{'name':_0x2b35d4[_0x647b('0x3f')],'type':_0x2b35d4[_0x647b('0x40')][_0x647b('0x41')]};});_0x48d5b1[_0x647b('0x42')]=_[_0x647b('0x3c')](_0x169e11,'name');_0x48d5b1[_0x647b('0x43')]=_[_0x647b('0x44')](_0xbb546c[_0x647b('0x43')]);_0x48d5b1[_0x647b('0x45')]=_[_0x647b('0x46')](_0x48d5b1['model'],_0x48d5b1[_0x647b('0x43')]);_0x1d3a40[_0x647b('0x47')]=_[_0x647b('0x46')](_0x48d5b1['model'],qs[_0x647b('0x48')](_0xbb546c[_0x647b('0x43')][_0x647b('0x48')]));_0x1d3a40['attributes']=_0x1d3a40[_0x647b('0x47')]['length']?_0x1d3a40[_0x647b('0x47')]:_0x48d5b1[_0x647b('0x42')];if(!_0xbb546c[_0x647b('0x43')][_0x647b('0x49')](_0x647b('0x4a'))){_0x1d3a40[_0x647b('0x2f')]=qs[_0x647b('0x2f')](_0xbb546c[_0x647b('0x43')][_0x647b('0x2f')]);_0x1d3a40[_0x647b('0x2d')]=qs[_0x647b('0x2d')](_0xbb546c['query'][_0x647b('0x2d')]);}_0x1d3a40[_0x647b('0x4b')]=qs[_0x647b('0x4c')](_0xbb546c[_0x647b('0x43')]['sort']);_0x1d3a40['where']=qs[_0x647b('0x45')](_['pick'](_0xbb546c[_0x647b('0x43')],_0x48d5b1[_0x647b('0x45')]),_0x169e11);if(_0xbb546c[_0x647b('0x43')][_0x647b('0x4d')]){_0x1d3a40[_0x647b('0x4e')]=_[_0x647b('0x4f')](_0x1d3a40[_0x647b('0x4e')],{'$or':_[_0x647b('0x3c')](_0x169e11,function(_0x5e6bf6){if(_0x5e6bf6[_0x647b('0x40')]!==_0x647b('0x50')){var _0x458a17={};_0x458a17[_0x5e6bf6[_0x647b('0x39')]]={'$like':'%'+_0xbb546c['query']['filter']+'%'};return _0x458a17;}})});}_0x1d3a40=_[_0x647b('0x4f')]({},_0x1d3a40,_0xbb546c['options']);var _0x548adf={'where':_0x1d3a40[_0x647b('0x4e')]};return db[_0x647b('0x3d')][_0x647b('0x30')](_0x548adf)[_0x647b('0x1e')](function(_0x5a83ea){_0x28ff3c[_0x647b('0x30')]=_0x5a83ea;if(_0xbb546c[_0x647b('0x43')][_0x647b('0x51')]){_0x1d3a40['include']=[{'all':!![]}];}return db[_0x647b('0x3d')]['findAll'](_0x1d3a40);})['then'](function(_0x2e2c4d){_0x28ff3c[_0x647b('0x52')]=_0x2e2c4d;return _0x28ff3c;})[_0x647b('0x1e')](respondWithFilteredResult(_0x8c1f27,_0x1d3a40))[_0x647b('0x28')](handleError(_0x8c1f27,null));};exports[_0x647b('0x53')]=function(_0x5615a5,_0x2da47b){var _0x14daff={'raw':![],'where':{'id':_0x5615a5['params']['id']},'include':[{'model':db[_0x647b('0x3a')],'as':_0x647b('0x3b')}]},_0x4f2458={};_0x4f2458['model']=_[_0x647b('0x44')](db['OpenchannelAccount'][_0x647b('0x3e')]);_0x4f2458[_0x647b('0x43')]=_[_0x647b('0x44')](_0x5615a5['query']);_0x4f2458[_0x647b('0x45')]=_[_0x647b('0x46')](_0x4f2458[_0x647b('0x42')],_0x4f2458['query']);_0x14daff[_0x647b('0x47')]=_[_0x647b('0x46')](_0x4f2458['model'],qs['fields'](_0x5615a5[_0x647b('0x43')][_0x647b('0x48')]));_0x14daff[_0x647b('0x47')]=_0x14daff[_0x647b('0x47')][_0x647b('0x54')]?_0x14daff[_0x647b('0x47')]:_0x4f2458['model'];if(_0x5615a5['query'][_0x647b('0x51')]){_0x14daff[_0x647b('0x55')]=[{'all':!![]}];}_0x14daff=_[_0x647b('0x4f')]({},_0x14daff,_0x5615a5[_0x647b('0x56')]);return db['OpenchannelAccount']['find'](_0x14daff)[_0x647b('0x1e')](handleEntityNotFound(_0x2da47b,null))[_0x647b('0x1e')](respondWithResult(_0x2da47b,null))[_0x647b('0x28')](handleError(_0x2da47b,null));};exports['create']=function(_0x579711,_0x5c14b9){return db[_0x647b('0x3d')][_0x647b('0x57')](_0x579711[_0x647b('0x58')],{})['then'](function(_0x15c123){var _0x771d72=_0x579711[_0x647b('0x59')][_0x647b('0x36')]({'plain':!![]});if(!_0x771d72)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x771d72[_0x647b('0x5a')]===_0x647b('0x59')){var _0x34db32=_0x15c123[_0x647b('0x36')]({'plain':!![]});var _0x3fd5c7=_0x647b('0x5b');return db[_0x647b('0x5c')][_0x647b('0x5d')]({'where':{'name':_0x3fd5c7,'userProfileId':_0x771d72[_0x647b('0x5e')]},'raw':!![]})[_0x647b('0x1e')](function(_0x367d93){if(_0x367d93&&_0x367d93[_0x647b('0x5f')]===0x0){return db[_0x647b('0x37')][_0x647b('0x57')]({'name':_0x34db32['name'],'resourceId':_0x34db32['id'],'type':_0x367d93[_0x647b('0x39')],'sectionId':_0x367d93['id']},{})['then'](function(){return _0x15c123;});}else{return _0x15c123;}})[_0x647b('0x28')](function(_0x4db536){logger[_0x647b('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4db536);throw _0x4db536;});}return _0x15c123;})[_0x647b('0x1e')](respondWithResult(_0x5c14b9,0xc9))[_0x647b('0x28')](handleError(_0x5c14b9,null));};exports[_0x647b('0x34')]=function(_0x3b703a,_0x2858d4){if(_0x3b703a[_0x647b('0x58')]['id']){delete _0x3b703a[_0x647b('0x58')]['id'];}return db[_0x647b('0x3d')][_0x647b('0x5d')]({'where':{'id':_0x3b703a['params']['id']},'include':[{'model':db[_0x647b('0x3a')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x2858d4,null))['then'](saveUpdates(_0x3b703a['body'],null))[_0x647b('0x1e')](respondWithResult(_0x2858d4,null))['catch'](handleError(_0x2858d4,null));};exports[_0x647b('0x35')]=function(_0x335459,_0x503af2){return db[_0x647b('0x3d')][_0x647b('0x5d')]({'where':{'id':_0x335459[_0x647b('0x60')]['id']}})['then'](handleEntityNotFound(_0x503af2,null))[_0x647b('0x1e')](removeEntity(_0x503af2,null))['catch'](handleError(_0x503af2,null));};exports[_0x647b('0x61')]=function(_0x329dfc,_0x2929b8){return db['OpenchannelAccount'][_0x647b('0x61')]()['then'](respondWithResult(_0x2929b8,null))[_0x647b('0x28')](handleError(_0x2929b8,null));};exports[_0x647b('0x62')]=function(_0x9f5b9,_0x513a3c,_0xa14618){if(_0x9f5b9[_0x647b('0x58')]['id']){delete _0x9f5b9[_0x647b('0x58')]['id'];}return db['OpenchannelAccount'][_0x647b('0x5d')]({'where':{'id':_0x9f5b9['params']['id']}})['then'](handleEntityNotFound(_0x513a3c,null))[_0x647b('0x1e')](function(_0x2ee9a8){if(_0x2ee9a8){_0x9f5b9['body'][_0x647b('0x63')]=_0x2ee9a8['id'];return db[_0x647b('0x64')][_0x647b('0x57')](_0x9f5b9[_0x647b('0x58')]);}})[_0x647b('0x1e')](respondWithResult(_0x513a3c,null))[_0x647b('0x28')](handleError(_0x513a3c,null));};exports[_0x647b('0x65')]=function(_0x1dc6c3,_0x10f8a7,_0x4f1a90){var _0x3e30e1={'raw':![],'where':{}};var _0x3cabf7={};var _0x5e8c18={'count':0x0,'rows':[]};return db[_0x647b('0x3d')]['findOne']({'where':{'id':_0x1dc6c3[_0x647b('0x60')]['id']}})['then'](handleEntityNotFound(_0x10f8a7,null))[_0x647b('0x1e')](function(_0x358eb9){if(_0x358eb9){_0x3cabf7['model']=_[_0x647b('0x44')](db[_0x647b('0x64')][_0x647b('0x3e')]);_0x3cabf7[_0x647b('0x43')]=_[_0x647b('0x44')](_0x1dc6c3['query']);_0x3cabf7[_0x647b('0x45')]=_['intersection'](_0x3cabf7[_0x647b('0x42')],_0x3cabf7[_0x647b('0x43')]);_0x3e30e1[_0x647b('0x47')]=_['intersection'](_0x3cabf7[_0x647b('0x42')],qs[_0x647b('0x48')](_0x1dc6c3[_0x647b('0x43')][_0x647b('0x48')]));_0x3e30e1[_0x647b('0x47')]=_0x3e30e1[_0x647b('0x47')][_0x647b('0x54')]?_0x3e30e1[_0x647b('0x47')]:_0x3cabf7['model'];if(!_0x1dc6c3['query'][_0x647b('0x49')](_0x647b('0x4a'))){_0x3e30e1[_0x647b('0x2f')]=qs['limit'](_0x1dc6c3['query'][_0x647b('0x2f')]);_0x3e30e1[_0x647b('0x2d')]=qs['offset'](_0x1dc6c3[_0x647b('0x43')][_0x647b('0x2d')]);}_0x3e30e1[_0x647b('0x4b')]=qs[_0x647b('0x4c')](_0x1dc6c3['query'][_0x647b('0x4c')]);_0x3e30e1[_0x647b('0x4e')]=qs[_0x647b('0x45')](_[_0x647b('0x66')](_0x1dc6c3['query'],_0x3cabf7[_0x647b('0x45')]));_0x3e30e1['where'][_0x647b('0x63')]=_0x358eb9['id'];if(_0x1dc6c3[_0x647b('0x43')][_0x647b('0x4d')]){_0x3e30e1[_0x647b('0x4e')]=_[_0x647b('0x4f')](_0x3e30e1[_0x647b('0x4e')],{'$or':_['map'](_0x3e30e1[_0x647b('0x47')],function(_0xeaf19e){var _0x3a7fe1={};_0x3a7fe1[_0xeaf19e]={'$like':'%'+_0x1dc6c3[_0x647b('0x43')]['filter']+'%'};return _0x3a7fe1;})});}_0x3e30e1=_[_0x647b('0x4f')]({},_0x3e30e1,_0x1dc6c3[_0x647b('0x56')]);return db[_0x647b('0x64')][_0x647b('0x30')]({'where':_0x3e30e1['where']})['then'](function(_0xdcbf2a){_0x5e8c18['count']=_0xdcbf2a;if(_0x1dc6c3[_0x647b('0x43')][_0x647b('0x51')]){_0x3e30e1[_0x647b('0x55')]=[{'all':!![]}];}return db[_0x647b('0x64')][_0x647b('0x67')](_0x3e30e1);})[_0x647b('0x1e')](function(_0x3d77a7){_0x5e8c18[_0x647b('0x52')]=_0x3d77a7;return _0x5e8c18;});}})[_0x647b('0x1e')](respondWithFilteredResult(_0x10f8a7,_0x3e30e1))[_0x647b('0x28')](handleError(_0x10f8a7,null));};exports[_0x647b('0x68')]=function(_0xa8fe55,_0x44c3e1,_0x28adbf){return db[_0x647b('0x3d')][_0x647b('0x5d')]({'where':{'id':_0xa8fe55[_0x647b('0x60')]['id']}})['then'](handleEntityNotFound(_0x44c3e1,null))['then'](function(_0xd82c87){if(_0xd82c87){return _0xd82c87[_0x647b('0x68')](_0xa8fe55['query'][_0x647b('0x69')]);}})[_0x647b('0x1e')](respondWithStatusCode(_0x44c3e1,null))[_0x647b('0x28')](handleError(_0x44c3e1,null));};exports[_0x647b('0x6a')]=function(_0x3e8761,_0x214040,_0x5bfd92){if(_0x3e8761['body']['id']){delete _0x3e8761[_0x647b('0x58')]['id'];}return db['OpenchannelAccount'][_0x647b('0x5d')]({'where':{'id':_0x3e8761[_0x647b('0x60')]['id']}})[_0x647b('0x1e')](handleEntityNotFound(_0x214040,null))['then'](function(_0x11e992){if(_0x11e992){_0x3e8761[_0x647b('0x58')][_0x647b('0x63')]=_0x11e992['id'];return db[_0x647b('0x6b')][_0x647b('0x57')](_0x3e8761[_0x647b('0x58')]);}})[_0x647b('0x1e')](respondWithResult(_0x214040,null))[_0x647b('0x28')](handleError(_0x214040,null));};exports[_0x647b('0x6c')]=function(_0x438849,_0x5b274b,_0x5d6438){var _0xf5c0dd={'raw':![],'where':{}};var _0x506d25={};var _0x1b10ea={'count':0x0,'rows':[]};return db[_0x647b('0x3d')]['findOne']({'where':{'id':_0x438849[_0x647b('0x60')]['id']}})[_0x647b('0x1e')](handleEntityNotFound(_0x5b274b,null))[_0x647b('0x1e')](function(_0x949b0a){if(_0x949b0a){_0x506d25['model']=_[_0x647b('0x44')](db[_0x647b('0x6b')][_0x647b('0x3e')]);_0x506d25['query']=_[_0x647b('0x44')](_0x438849['query']);_0x506d25[_0x647b('0x45')]=_[_0x647b('0x46')](_0x506d25[_0x647b('0x42')],_0x506d25[_0x647b('0x43')]);_0xf5c0dd['attributes']=_[_0x647b('0x46')](_0x506d25[_0x647b('0x42')],qs['fields'](_0x438849[_0x647b('0x43')][_0x647b('0x48')]));_0xf5c0dd[_0x647b('0x47')]=_0xf5c0dd['attributes'][_0x647b('0x54')]?_0xf5c0dd[_0x647b('0x47')]:_0x506d25[_0x647b('0x42')];if(!_0x438849['query'][_0x647b('0x49')](_0x647b('0x4a'))){_0xf5c0dd[_0x647b('0x2f')]=qs['limit'](_0x438849['query'][_0x647b('0x2f')]);_0xf5c0dd[_0x647b('0x2d')]=qs[_0x647b('0x2d')](_0x438849['query'][_0x647b('0x2d')]);}_0xf5c0dd[_0x647b('0x4b')]=qs[_0x647b('0x4c')](_0x438849[_0x647b('0x43')]['sort']);_0xf5c0dd[_0x647b('0x4e')]=qs[_0x647b('0x45')](_[_0x647b('0x66')](_0x438849['query'],_0x506d25[_0x647b('0x45')]));_0xf5c0dd[_0x647b('0x4e')][_0x647b('0x63')]=_0x949b0a['id'];if(_0x438849[_0x647b('0x43')][_0x647b('0x4d')]){_0xf5c0dd[_0x647b('0x4e')]=_[_0x647b('0x4f')](_0xf5c0dd[_0x647b('0x4e')],{'$or':_[_0x647b('0x3c')](_0xf5c0dd[_0x647b('0x47')],function(_0x47a834){var _0x44673e={};_0x44673e[_0x47a834]={'$like':'%'+_0x438849[_0x647b('0x43')][_0x647b('0x4d')]+'%'};return _0x44673e;})});}_0xf5c0dd=_['merge']({},_0xf5c0dd,_0x438849[_0x647b('0x56')]);return db[_0x647b('0x6b')][_0x647b('0x30')]({'where':_0xf5c0dd['where']})[_0x647b('0x1e')](function(_0x189cfc){_0x1b10ea['count']=_0x189cfc;if(_0x438849[_0x647b('0x43')][_0x647b('0x51')]){_0xf5c0dd[_0x647b('0x55')]=[{'all':!![]}];}return db[_0x647b('0x6b')][_0x647b('0x67')](_0xf5c0dd);})[_0x647b('0x1e')](function(_0x4d1273){_0x1b10ea[_0x647b('0x52')]=_0x4d1273;return _0x1b10ea;});}})[_0x647b('0x1e')](respondWithFilteredResult(_0x5b274b,_0xf5c0dd))['catch'](handleError(_0x5b274b,null));};exports[_0x647b('0x6d')]=function(_0x2fa144,_0xb95147,_0x2ce27a){return db[_0x647b('0x3d')][_0x647b('0x5d')]({'where':{'id':_0x2fa144[_0x647b('0x60')]['id']}})[_0x647b('0x1e')](handleEntityNotFound(_0xb95147,null))['then'](function(_0x172b37){if(_0x172b37){return _0x172b37['removeAnswers'](_0x2fa144[_0x647b('0x43')]['ids']);}})[_0x647b('0x1e')](respondWithStatusCode(_0xb95147,null))[_0x647b('0x28')](handleError(_0xb95147,null));};exports[_0x647b('0x6e')]=function(_0x2abd52,_0x4d7af9,_0x3a8ed4){var _0x3af91c={'body':_0x2abd52[_0x647b('0x58')],'channel':_0x647b('0x6f')};var _0x3f2937=[];var _0x1c3497=[];var _0x7286f8={};var _0x199fb4=![];return db[_0x647b('0x70')][_0x647b('0x61')]()['then'](function(_0x5b44fd){if(!_0x5b44fd){throw new db[(_0x647b('0x71'))][(_0x647b('0x72'))](_0x647b('0x73'));}_0x3f2937=_[_0x647b('0x74')](_[_0x647b('0x44')](_0x5b44fd),[_0x647b('0x75'),_0x647b('0x76')]);_0x1c3497=_[_0x647b('0x74')](_[_0x647b('0x44')](_0x5b44fd),[_0x647b('0x75'),_0x647b('0x76'),'CompanyId',_0x647b('0x77')]);if(_0x2abd52[_0x647b('0x58')]['id']){delete _0x2abd52[_0x647b('0x58')]['id'];}if(_['isNil'](_0x2abd52[_0x647b('0x58')][_0x647b('0x78')])){throw new db[(_0x647b('0x71'))][(_0x647b('0x72'))](_0x647b('0x79'));}if(_[_0x647b('0x7a')](_0x2abd52[_0x647b('0x58')][_0x647b('0x58')])||_0x2abd52[_0x647b('0x58')][_0x647b('0x58')]===''){throw new db[(_0x647b('0x71'))]['ValidationError'](_0x647b('0x7b'));}if(_[_0x647b('0x7a')](_0x2abd52[_0x647b('0x58')][_0x647b('0x7c')])){throw new db['Sequelize'][(_0x647b('0x72'))](_0x647b('0x7d')+_0x1c3497);}if(!_[_0x647b('0x7e')](_0x1c3497,_0x2abd52[_0x647b('0x58')]['mapKey'])){throw new db[(_0x647b('0x71'))][(_0x647b('0x72'))](_0x647b('0x7f')+_0x1c3497);}_0x7286f8[_0x2abd52[_0x647b('0x58')][_0x647b('0x7c')]]=_0x2abd52[_0x647b('0x58')][_0x647b('0x78')];})[_0x647b('0x1e')](function(){return db[_0x647b('0x3d')][_0x647b('0x5d')]({'where':{'id':_0x2abd52['params']['id']},'include':[{'model':db[_0x647b('0x80')],'as':_0x647b('0x81'),'include':[{'model':db['CmContact'],'as':_0x647b('0x82'),'where':_0x7286f8,'limit':0x1,'order':[[_0x647b('0x76'),_0x647b('0x83')]]}]},{'model':db[_0x647b('0x84')],'as':'Applications'}]});})[_0x647b('0x1e')](handleEntityNotFound(_0x4d7af9,null))['then'](function(_0x1e6400){if(_0x1e6400&&_0x1e6400[_0x647b('0x81')]){_0x3af91c[_0x647b('0x85')]=_0x1e6400;_0x3af91c[_0x647b('0x86')]=_0x1e6400[_0x647b('0x87')];_0x3af91c['list']=_0x1e6400[_0x647b('0x81')];_0x3af91c[_0x647b('0x86')]=_['orderBy'](_0x3af91c['applications'],[_0x647b('0x88')],[_0x647b('0x89')]);if(_0x3af91c['account']['Applications']){delete _0x3af91c['account'][_0x647b('0x87')];}if(_0x3af91c[_0x647b('0x85')][_0x647b('0x81')]&&_0x3af91c[_0x647b('0x85')][_0x647b('0x81')]['Contacts'][_0x647b('0x54')]){return _0x3af91c['account'][_0x647b('0x81')][_0x647b('0x82')][0x0];}var _0x2187a7=_[_0x647b('0x8a')](_0x2abd52[_0x647b('0x58')],{'firstName':_0x2abd52[_0x647b('0x58')]['from'],'ListId':_0x1e6400[_0x647b('0x77')]});_0x2187a7[_0x2abd52[_0x647b('0x58')][_0x647b('0x7c')]]=_0x2abd52['body'][_0x647b('0x78')];return db[_0x647b('0x70')][_0x647b('0x57')](_0x2187a7,{'fields':_0x3f2937,'raw':!![]});}})[_0x647b('0x1e')](handleEntityNotFound(_0x4d7af9,null))[_0x647b('0x1e')](function(_0x3e6507){_0x3af91c[_0x647b('0x8b')]=_0x3e6507;if(_0x3e6507){var _0xa1691c={'ContactId':_0x3e6507['id'],'OpenchannelAccountId':_0x2abd52[_0x647b('0x60')]['id'],'from':(_0x3e6507[_0x647b('0x8c')]||'')+'\x20'+(_0x3e6507[_0x647b('0x8d')]||'')};var _0x42850f={'OpenchannelAccountId':_0x2abd52[_0x647b('0x60')]['id'],'closed':![]};if(_0x2abd52[_0x647b('0x58')]['threadId']){_0x42850f[_0x647b('0x8e')]=_0x2abd52[_0x647b('0x58')]['threadId'];return db[_0x647b('0x8f')][_0x647b('0x5d')]({'where':_0x42850f})[_0x647b('0x1e')](function(_0x2f43db){if(_0x2f43db){return[_0x2f43db,![]];}_0xa1691c[_0x647b('0x8e')]=_0x2abd52['body']['threadId'];_0xa1691c[_0x647b('0x90')]=_0x2abd52[_0x647b('0x58')][_0x647b('0x90')];return db['OpenchannelInteraction'][_0x647b('0x57')](_0xa1691c)[_0x647b('0x1e')](function(_0x1bf782){return[_0x1bf782,!![]];});});}else{_0x42850f['threadId']=null;}_0x42850f[_0x647b('0x91')]=_0x3e6507['id'];return db[_0x647b('0x8f')][_0x647b('0x5d')]({'where':_0x42850f})['then'](function(_0x3d3306){if(_0x3d3306){return[_0x3d3306,![]];}return db[_0x647b('0x8f')][_0x647b('0x57')](_0xa1691c)[_0x647b('0x1e')](function(_0x425326){return[_0x425326,!![]];});});}})[_0x647b('0x92')](function(_0x4aa533,_0x2d8852){if(_0x4aa533){_0x199fb4=_0x2d8852;if(!_0x2d8852){var _0x2a3aa8={'from':(_0x3af91c['contact'][_0x647b('0x8c')]||'')+'\x20'+(_0x3af91c[_0x647b('0x8b')][_0x647b('0x8d')]||'')};if(_0x2abd52['body']['threadId']&&_0x2abd52['body'][_0x647b('0x93')]&&_0x2abd52[_0x647b('0x58')]['threadId']!=_0x2abd52['body']['messageId']){_0x2a3aa8[_0x647b('0x8e')]=_0x2abd52[_0x647b('0x58')][_0x647b('0x93')];}return _0x4aa533['update'](_0x2a3aa8);}else{return _0x4aa533;}}})[_0x647b('0x1e')](function(_0x500805){_0x3af91c['interaction']=_0x500805['get']({'plain':!![]});_0x3af91c[_0x647b('0x94')][_0x647b('0x95')]=_0x199fb4;if(_0x3af91c[_0x647b('0x94')][_0x647b('0x95')]){if(_0x3af91c[_0x647b('0x85')][_0x647b('0x96')]){_0x3af91c[_0x647b('0x86')]['push']({'id':0x0,'priority':_0x3af91c[_0x647b('0x86')][_0x647b('0x54')]+0x1,'app':'close','appdata':_0x647b('0x97'),'interval':'*,*,*,*'});}}return db[_0x647b('0x98')][_0x647b('0x57')]({'body':_0x2abd52['body']['body'],'OpenchannelAccountId':_0x2abd52[_0x647b('0x60')]['id'],'OpenchannelInteractionId':_0x500805['id'],'direction':'in','ContactId':_0x3af91c[_0x647b('0x8b')]['id'],'AttachmentId':_0x2abd52[_0x647b('0x58')][_0x647b('0x99')]});})['then'](function(_0x2327d2){_0x3af91c['message']=_0x2327d2;if(_0x3af91c[_0x647b('0x94')][_0x647b('0x9a')]){return db[_0x647b('0x9b')][_0x647b('0x5d')]({'attributes':['id',_0x647b('0x39')],'where':{'id':_0x3af91c[_0x647b('0x94')]['UserId']}})['then'](function(_0x4b953e){if(_0x4b953e){_0x3af91c['applications'][_0x647b('0x9c')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4b953e['name']+','+(_0x3af91c[_0x647b('0x85')][_0x647b('0x9d')]||0xa),'interval':_0x647b('0x9e')});_0x3af91c[_0x647b('0x9f')]=![];}return respondWithRpcPromise('Start',_0x647b('0xa0'),_0x3af91c);});}return respondWithRpcPromise(_0x647b('0xa1'),_0x647b('0xa0'),_0x3af91c);})['then'](function(_0x5e71d2){respondWithRpcPromise(_0x647b('0xa2'),_0x647b('0xa2'),{'event':_0x647b('0x6e'),'message':_0x5e71d2},client9002);return _0x5e71d2;})[_0x647b('0x1e')](respondWithResult(_0x4d7af9,null))['catch'](handleError(_0x4d7af9,null));};exports[_0x647b('0xa3')]=function(_0x2ac4ba,_0x13fed9,_0x14470c){return db[_0x647b('0x3d')][_0x647b('0xa4')]({'where':{'id':_0x2ac4ba['params']['id']}})[_0x647b('0x1e')](handleEntityNotFound(_0x13fed9,null))[_0x647b('0x1e')](function(_0x39979f){if(_0x39979f){return db[_0x647b('0xa5')][_0x647b('0xa6')](function(_0x55812e){return db[_0x647b('0x84')][_0x647b('0x35')]({'where':{'OpenchannelAccountId':_0x2ac4ba[_0x647b('0x60')]['id']},'transaction':_0x55812e})[_0x647b('0x1e')](function(_0x48c3e4){var _0x5ac6cb=_['map'](_0x2ac4ba[_0x647b('0x58')],function(_0x51c8aa){_0x51c8aa['OpenchannelAccountId']=_0x2ac4ba[_0x647b('0x60')]['id'];return _0x51c8aa;});return db[_0x647b('0x84')][_0x647b('0xa7')](_0x5ac6cb,{'transaction':_0x55812e});});})[_0x647b('0x1e')](function(){return db['OpenchannelApplication'][_0x647b('0xa8')]({'where':{'OpenchannelAccountId':_0x2ac4ba[_0x647b('0x60')]['id']},'order':'priority'});});}})['then'](respondWithResult(_0x13fed9,null))[_0x647b('0x28')](handleError(_0x13fed9,null));};exports[_0x647b('0xa9')]=function(_0x5c49c9,_0x498700,_0x2a0925){var _0x176aab={};var _0x45e3e5={};var _0x11801c;var _0x1cba36;return db[_0x647b('0x3d')]['findOne']({'where':{'id':_0x5c49c9[_0x647b('0x60')]['id']}})[_0x647b('0x1e')](handleEntityNotFound(_0x498700,null))[_0x647b('0x1e')](function(_0x41b6e3){if(_0x41b6e3){_0x11801c=_0x41b6e3;_0x45e3e5[_0x647b('0x42')]=_['keys'](db['OpenchannelApplication'][_0x647b('0x3e')]);_0x45e3e5[_0x647b('0x43')]=_['keys'](_0x5c49c9['query']);_0x45e3e5['filters']=_['intersection'](_0x45e3e5[_0x647b('0x42')],_0x45e3e5[_0x647b('0x43')]);_0x176aab['attributes']=_['intersection'](_0x45e3e5[_0x647b('0x42')],qs['fields'](_0x5c49c9[_0x647b('0x43')][_0x647b('0x48')]));_0x176aab[_0x647b('0x47')]=_0x176aab[_0x647b('0x47')][_0x647b('0x54')]?_0x176aab['attributes']:_0x45e3e5[_0x647b('0x42')];_0x176aab[_0x647b('0x4b')]=qs[_0x647b('0x4c')](_0x5c49c9['query'][_0x647b('0x4c')]);_0x176aab['where']=qs[_0x647b('0x45')](_['pick'](_0x5c49c9[_0x647b('0x43')],_0x45e3e5[_0x647b('0x45')]));if(_0x5c49c9[_0x647b('0x43')][_0x647b('0x4d')]){_0x176aab[_0x647b('0x4e')]=_[_0x647b('0x4f')](_0x176aab[_0x647b('0x4e')],{'$or':_[_0x647b('0x3c')](_0x176aab[_0x647b('0x47')],function(_0x1f6047){var _0x40e5a8={};_0x40e5a8[_0x1f6047]={'$like':'%'+_0x5c49c9[_0x647b('0x43')][_0x647b('0x4d')]+'%'};return _0x40e5a8;})});}_0x176aab=_[_0x647b('0x4f')]({},_0x176aab,_0x5c49c9[_0x647b('0x56')]);return _0x11801c[_0x647b('0xa9')](_0x176aab);}})[_0x647b('0x1e')](function(_0x4d8aaf){if(_0x4d8aaf){_0x1cba36=_0x4d8aaf[_0x647b('0x54')];if(!_0x5c49c9[_0x647b('0x43')][_0x647b('0x49')](_0x647b('0x4a'))){_0x176aab[_0x647b('0x2f')]=qs[_0x647b('0x2f')](_0x5c49c9[_0x647b('0x43')][_0x647b('0x2f')]);_0x176aab[_0x647b('0x2d')]=qs[_0x647b('0x2d')](_0x5c49c9[_0x647b('0x43')]['offset']);}return _0x11801c[_0x647b('0xa9')](_0x176aab);}})['then'](function(_0x6bace4){if(_0x6bace4){return _0x6bace4?{'count':_0x1cba36,'rows':_0x6bace4}:null;}})[_0x647b('0x1e')](respondWithResult(_0x498700,null))[_0x647b('0x28')](handleError(_0x498700,null));};exports['getInteractions']=function(_0x54e35b,_0x4cb82b,_0x32af66){var _0xe69453={'raw':![],'where':{}};var _0x38f107={};var _0x9cda5={'count':0x0,'rows':[]};return db[_0x647b('0x3d')][_0x647b('0xa4')]({'where':{'id':_0x54e35b[_0x647b('0x60')]['id']}})['then'](handleEntityNotFound(_0x4cb82b,null))[_0x647b('0x1e')](function(_0xd8c85d){if(_0xd8c85d){_0x38f107[_0x647b('0x42')]=_['keys'](db[_0x647b('0x8f')][_0x647b('0x3e')]);_0x38f107[_0x647b('0x43')]=_[_0x647b('0x44')](_0x54e35b[_0x647b('0x43')]);_0x38f107['filters']=_[_0x647b('0x46')](_0x38f107[_0x647b('0x42')],_0x38f107[_0x647b('0x43')]);_0xe69453['attributes']=_[_0x647b('0x46')](_0x38f107[_0x647b('0x42')],qs['fields'](_0x54e35b[_0x647b('0x43')][_0x647b('0x48')]));_0xe69453[_0x647b('0x47')]=_0xe69453[_0x647b('0x47')][_0x647b('0x54')]?_0xe69453['attributes']:_0x38f107[_0x647b('0x42')];if(!_0x54e35b['query'][_0x647b('0x49')](_0x647b('0x4a'))){_0xe69453[_0x647b('0x2f')]=qs[_0x647b('0x2f')](_0x54e35b['query']['limit']);_0xe69453[_0x647b('0x2d')]=qs[_0x647b('0x2d')](_0x54e35b[_0x647b('0x43')][_0x647b('0x2d')]);}_0xe69453[_0x647b('0x4b')]=qs[_0x647b('0x4c')](_0x54e35b[_0x647b('0x43')][_0x647b('0x4c')]);_0xe69453[_0x647b('0x4e')]=qs[_0x647b('0x45')](_[_0x647b('0x66')](_0x54e35b['query'],_0x38f107[_0x647b('0x45')]));_0xe69453[_0x647b('0x4e')]['OpenchannelAccountId']=_0xd8c85d['id'];if(_0x54e35b['query'][_0x647b('0x4d')]){_0xe69453[_0x647b('0x4e')]=_['merge'](_0xe69453[_0x647b('0x4e')],{'$or':_[_0x647b('0x3c')](_0xe69453['attributes'],function(_0x18f05e){var _0x2fa8ed={};_0x2fa8ed[_0x18f05e]={'$like':'%'+_0x54e35b[_0x647b('0x43')][_0x647b('0x4d')]+'%'};return _0x2fa8ed;})});}_0xe69453=_[_0x647b('0x4f')]({},_0xe69453,_0x54e35b[_0x647b('0x56')]);return db[_0x647b('0x8f')]['count']({'where':_0xe69453['where']})['then'](function(_0x4c4f0d){_0x9cda5['count']=_0x4c4f0d;if(_0x54e35b['query']['includeAll']){_0xe69453['include']=[{'model':db[_0x647b('0x70')],'as':'Contact','required':![]},{'model':db[_0x647b('0x9b')],'as':_0x647b('0xaa'),'attributes':['name',_0x647b('0xab'),_0x647b('0xac')],'required':![]},{'model':db[_0x647b('0xad')],'as':_0x647b('0xae'),'attributes':['id',_0x647b('0x39'),_0x647b('0xaf')],'where':_0x54e35b[_0x647b('0x43')][_0x647b('0xb0')]?{'id':_0x54e35b['query']['tag']}:undefined,'required':_0x54e35b[_0x647b('0x43')][_0x647b('0xb0')]?!![]:![]}];}return db[_0x647b('0x8f')][_0x647b('0x67')](_0xe69453);})[_0x647b('0x1e')](function(_0xe4ff99){_0x9cda5[_0x647b('0x52')]=_0xe4ff99;return _0x9cda5;});}})[_0x647b('0x1e')](respondWithFilteredResult(_0x4cb82b,_0xe69453))[_0x647b('0x28')](handleError(_0x4cb82b,null));};exports[_0x647b('0xb1')]=function(_0x2381b1,_0x4b32a6,_0x44d8fe){return db[_0x647b('0x3d')][_0x647b('0x5d')]({'where':{'id':_0x2381b1[_0x647b('0x60')]['id']}})['then'](handleEntityNotFound(_0x4b32a6,null))['then'](function(_0x1987c4){if(_0x1987c4){return _0x1987c4[_0x647b('0xb1')](_0x2381b1[_0x647b('0x58')]['ids'],_[_0x647b('0xb2')](_0x2381b1[_0x647b('0x58')],[_0x647b('0x69'),'id'])||{})['spread'](function(_0x125a30){for(var _0x49e3c6=0x0;_0x49e3c6<_0x2381b1['body']['ids']['length'];_0x49e3c6+=0x1){socket['emit']('userOpenchannelAccount:save',{'UserId':Number(_0x2381b1[_0x647b('0x58')][_0x647b('0x69')][_0x49e3c6]),'OpenchannelAccountId':Number(_0x2381b1[_0x647b('0x60')]['id'])});}return _0x125a30;});}})[_0x647b('0x1e')](respondWithResult(_0x4b32a6,null))[_0x647b('0x28')](handleError(_0x4b32a6,null));};exports[_0x647b('0xb3')]=function(_0x3dfcad,_0x495cb4,_0x2fe9e3){return db[_0x647b('0x3d')][_0x647b('0x5d')]({'where':{'id':_0x3dfcad['params']['id']}})[_0x647b('0x1e')](handleEntityNotFound(_0x495cb4,null))[_0x647b('0x1e')](function(_0x31231d){if(_0x31231d){return _0x31231d[_0x647b('0xb3')](_0x3dfcad[_0x647b('0x43')]['ids'])[_0x647b('0x1e')](function(){if(_[_0x647b('0xb4')](_0x3dfcad[_0x647b('0x43')]['ids'])){for(var _0xe9ca08=0x0;_0xe9ca08<_0x3dfcad['query'][_0x647b('0x69')][_0x647b('0x54')];_0xe9ca08+=0x1){socket[_0x647b('0xb5')](_0x647b('0xb6'),{'UserId':Number(_0x3dfcad[_0x647b('0x43')][_0x647b('0x69')][_0xe9ca08]),'OpenchannelAccountId':Number(_0x3dfcad[_0x647b('0x60')]['id'])});}}else{socket[_0x647b('0xb5')]('userOpenchannelAccount:remove',{'UserId':Number(_0x3dfcad['query']['ids']),'OpenchannelAccountId':Number(_0x3dfcad[_0x647b('0x60')]['id'])});}});}})[_0x647b('0x1e')](respondWithStatusCode(_0x495cb4,null))[_0x647b('0x28')](handleError(_0x495cb4,null));};exports[_0x647b('0xb7')]=function(_0x5704e5,_0x3aa846,_0x3a4d3b){var _0x54d341={};var _0x4cbf53={};var _0x1cb420;var _0x75b8ad;return db[_0x647b('0x3d')][_0x647b('0xa4')]({'where':{'id':_0x5704e5['params']['id']}})['then'](handleEntityNotFound(_0x3aa846,null))[_0x647b('0x1e')](function(_0x1537c8){if(_0x1537c8){_0x1cb420=_0x1537c8;_0x4cbf53['model']=_[_0x647b('0x44')](db['User'][_0x647b('0x3e')]);_0x4cbf53['query']=_[_0x647b('0x44')](_0x5704e5[_0x647b('0x43')]);_0x4cbf53[_0x647b('0x45')]=_[_0x647b('0x46')](_0x4cbf53[_0x647b('0x42')],_0x4cbf53[_0x647b('0x43')]);_0x54d341['attributes']=_[_0x647b('0x46')](_0x4cbf53['model'],qs['fields'](_0x5704e5[_0x647b('0x43')][_0x647b('0x48')]));_0x54d341[_0x647b('0x47')]=_0x54d341[_0x647b('0x47')][_0x647b('0x54')]?_0x54d341['attributes']:_0x4cbf53[_0x647b('0x42')];_0x54d341[_0x647b('0x4b')]=qs[_0x647b('0x4c')](_0x5704e5['query'][_0x647b('0x4c')]);_0x54d341['where']=qs[_0x647b('0x45')](_[_0x647b('0x66')](_0x5704e5[_0x647b('0x43')],_0x4cbf53[_0x647b('0x45')]));if(_0x5704e5[_0x647b('0x43')][_0x647b('0x4d')]){_0x54d341[_0x647b('0x4e')]=_[_0x647b('0x4f')](_0x54d341[_0x647b('0x4e')],{'$or':_[_0x647b('0x3c')](_0x54d341[_0x647b('0x47')],function(_0x590f1d){var _0x2bfc36={};_0x2bfc36[_0x590f1d]={'$like':'%'+_0x5704e5['query'][_0x647b('0x4d')]+'%'};return _0x2bfc36;})});}_0x54d341=_[_0x647b('0x4f')]({},_0x54d341,_0x5704e5[_0x647b('0x56')]);return _0x1cb420['getAgents'](_0x54d341);}})[_0x647b('0x1e')](function(_0x201088){if(_0x201088){_0x75b8ad=_0x201088[_0x647b('0x54')];if(!_0x5704e5[_0x647b('0x43')][_0x647b('0x49')](_0x647b('0x4a'))){_0x54d341[_0x647b('0x2f')]=qs['limit'](_0x5704e5['query'][_0x647b('0x2f')]);_0x54d341[_0x647b('0x2d')]=qs[_0x647b('0x2d')](_0x5704e5[_0x647b('0x43')]['offset']);}return _0x1cb420['getAgents'](_0x54d341);}})['then'](function(_0x5114b0){if(_0x5114b0){return _0x5114b0?{'count':_0x75b8ad,'rows':_0x5114b0}:null;}})[_0x647b('0x1e')](respondWithResult(_0x3aa846,null))['catch'](handleError(_0x3aa846,null));};exports[_0x647b('0xb8')]=function(_0x2d949f,_0x39eed1,_0xe47b7c){var _0x161e7f,_0x26a1c8,_0x2e61b2;if(_['isNil'](_0x2d949f[_0x647b('0x58')][_0x647b('0x58')])||_0x2d949f['body'][_0x647b('0x58')]===''){throw new db[(_0x647b('0x71'))][(_0x647b('0x72'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x647b('0x7a')](_0x2d949f['body']['to'])){}_0x161e7f=_0x2d949f[_0x647b('0x58')]['to'];return db[_0x647b('0x3d')]['findOne']({'where':{'id':_0x2d949f[_0x647b('0x60')]['id']}})[_0x647b('0x1e')](handleEntityNotFound(_0x39eed1,null))['then'](function(_0x100e9f){if(_0x100e9f){return db['OpenchannelAccount']['find']({'where':{'id':_0x100e9f['id']},'include':[{'model':db['CmList'],'as':_0x647b('0x81'),'include':[{'model':db[_0x647b('0x70')],'as':'Contacts','where':{[_0x100e9f[_0x647b('0x7c')]]:_0x161e7f},'limit':0x1,'order':[[_0x647b('0x76'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x39eed1,null))[_0x647b('0x1e')](function(_0x3c7a3e){if(_0x3c7a3e&&_0x3c7a3e[_0x647b('0x81')]){_0x26a1c8=_0x3c7a3e[_0x647b('0x36')]({'plain':!![]});if(_0x26a1c8[_0x647b('0x81')]&&_0x26a1c8[_0x647b('0x81')][_0x647b('0x82')]['length']){return _0x26a1c8['List'][_0x647b('0x82')][0x0];}return db['CmContact']['create'](_[_0x647b('0x8a')](_0x2d949f['body'],{'firstName':_0x161e7f,[_0x3c7a3e['mapKey']]:_0x161e7f,'phone':_0x161e7f,'ListId':_0x26a1c8[_0x647b('0x77')]}));}})[_0x647b('0x1e')](handleEntityNotFound(_0x39eed1,null))[_0x647b('0x1e')](function(_0x556a0a){if(_0x556a0a){_0x2e61b2=_0x556a0a;return db[_0x647b('0x8f')][_0x647b('0x5d')]({'where':{'ContactId':_0x2e61b2['id'],'closed':![],'OpenchannelAccountId':_0x26a1c8['id']}})[_0x647b('0x1e')](function(_0x1c6032){if(_0x1c6032){return[_0x1c6032,![]];}return db[_0x647b('0x8f')][_0x647b('0x57')]({'UserId':_0x2d949f[_0x647b('0x59')]['id'],'ContactId':_0x2e61b2['id'],'OpenchannelAccountId':_0x26a1c8['id'],'lastMsgDirection':_0x647b('0xb9'),'Messages':[_[_0x647b('0x4f')](_0x2d949f[_0x647b('0x58')],{'read':![],'body':_0x2d949f[_0x647b('0x58')][_0x647b('0x58')],'OpenchannelAccountId':_0x26a1c8['id'],'UserId':_0x2d949f['user']['id'],'ContactId':_0x2e61b2['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0x647b('0xba')}]})[_0x647b('0x1e')](function(_0x182031){return[_0x182031,!![]];});});}})['spread'](function(_0x474bc9,_0x26d360){if(_0x26d360){return _0x474bc9;}return db['OpenchannelMessage'][_0x647b('0x57')](_['merge'](_0x2d949f['body'],{'read':![],'body':_0x2d949f[_0x647b('0x58')][_0x647b('0x58')],'OpenchannelAccountId':_0x26a1c8['id'],'OpenchannelInteractionId':_0x474bc9['id'],'UserId':_0x2d949f['user']['id'],'ContactId':_0x2e61b2['id']}))[_0x647b('0x1e')](function(_0x36b6b7){_0x474bc9[_0x647b('0xbb')][_0x647b('0xba')]=[];_0x474bc9[_0x647b('0xbb')]['Messages']['push'](_0x36b6b7['dataValues']);return _0x474bc9;});});}})[_0x647b('0x1e')](respondWithResult(_0x39eed1,null))[_0x647b('0x28')](handleError(_0x39eed1,null));};
\ No newline at end of file
+var _0x43f7=['destroy','get','OpenchannelAccounts','name','send','Pause','mandatoryDispositionPause','map','OpenchannelAccount','fieldName','type','keys','filters','intersection','model','query','attributes','fields','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','params','describe','OpenchannelAccountId','Disposition','length','hasOwnProperty','rows','ids','addAnswer','CannedAnswer','findOne','removeAnswers','notify','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','from','from\x20is\x20mandatory','isNil','mapKey','includes','CmList','List','CmContact','Contacts','OpenchannelApplication','Applications','account','applications','list','orderBy','priority','asc','ListId','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','spread','messageId','interaction','created','autoclose','push','AttachmentId','User','UserId','unshift','agent','forcedOwnership','startRouting','addApplications','sequelize','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','fullname','internal','Tag','Tags','color','tag','addAgents','omit','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','body\x20is\x20mandatory\x20and\x20not\x20empty','DESC','out','OpenchannelMessage','Messages','dataValues','fast-json-patch','request-promise','moment','bluebird','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/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','http','client','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','end','json','offset','undefined','count','status','set','apply','reject','save','update'];(function(_0x5210a2,_0x4f5288){var _0x597bd9=function(_0x3cadb0){while(--_0x3cadb0){_0x5210a2['push'](_0x5210a2['shift']());}};_0x597bd9(++_0x4f5288);}(_0x43f7,0x12f));var _0x743f=function(_0x444109,_0x49a453){_0x444109=_0x444109-0x0;var _0x4fa8a5=_0x43f7[_0x444109];return _0x4fa8a5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x743f('0x0'));var rp=require(_0x743f('0x1'));var moment=require(_0x743f('0x2'));var BPromise=require(_0x743f('0x3'));var Mustache=require('mustache');var util=require(_0x743f('0x4'));var path=require(_0x743f('0x5'));var sox=require('sox');var csv=require(_0x743f('0x6'));var ejs=require(_0x743f('0x7'));var fs=require('fs');var fs_extra=require(_0x743f('0x8'));var _=require(_0x743f('0x9'));var squel=require(_0x743f('0xa'));var crypto=require(_0x743f('0xb'));var jsforce=require(_0x743f('0xc'));var deskjs=require(_0x743f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x743f('0xe'));var Papa=require(_0x743f('0xf'));var Redis=require(_0x743f('0x10'));var authService=require(_0x743f('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x743f('0x12'));var hardwareService=require(_0x743f('0x13'));var logger=require(_0x743f('0x14'))(_0x743f('0x15'));var utils=require('../../config/utils');var config=require(_0x743f('0x16'));var licenseUtil=require(_0x743f('0x17'));var db=require('../../mysqldb')['db'];config[_0x743f('0x18')]=_[_0x743f('0x19')](config[_0x743f('0x18')],{'host':_0x743f('0x1a'),'port':0x18eb});var socket=require(_0x743f('0x1b'))(new Redis(config[_0x743f('0x18')]));require(_0x743f('0x1c'))[_0x743f('0x1d')](socket);var jayson=require(_0x743f('0x1e'));var client=jayson['client'][_0x743f('0x1f')]({'port':0x232c});var client9002=jayson[_0x743f('0x20')][_0x743f('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x57d8df,_0x595c04,_0x53527e,_0x3cac05){return new BPromise(function(_0x22dece,_0x294abd){var _0x5c6184=_0x3cac05||client;return _0x5c6184[_0x743f('0x21')](_0x57d8df,_0x53527e)[_0x743f('0x22')](function(_0x5706d1){logger[_0x743f('0x23')](_0x743f('0x24'),_0x595c04,_0x743f('0x25'));logger[_0x743f('0x26')](_0x743f('0x27'),_0x595c04,_0x743f('0x25'),JSON[_0x743f('0x28')](_0x5706d1));if(_0x5706d1['error']){if(_0x5706d1[_0x743f('0x29')][_0x743f('0x2a')]===0x1f4){logger[_0x743f('0x29')](_0x743f('0x24'),_0x595c04,_0x5706d1[_0x743f('0x29')]['message']);return _0x294abd(_0x5706d1[_0x743f('0x29')]['message']);}logger[_0x743f('0x29')]('OpenchannelAccount,\x20%s,\x20%s',_0x595c04,_0x5706d1['error'][_0x743f('0x2b')]);return _0x22dece(_0x5706d1['error'][_0x743f('0x2b')]);}else{logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x595c04,_0x743f('0x25'));_0x22dece(_0x5706d1[_0x743f('0x2c')][_0x743f('0x2b')]);}})[_0x743f('0x2d')](function(_0x47059d){logger[_0x743f('0x29')](_0x743f('0x24'),_0x595c04,_0x47059d);_0x294abd(_0x47059d);});});}function respondWithStatusCode(_0x5b42b2,_0xb161de){_0xb161de=_0xb161de||0xcc;return function(_0x562bc0){if(_0x562bc0){return _0x5b42b2['sendStatus'](_0xb161de);}return _0x5b42b2['status'](_0xb161de)[_0x743f('0x2e')]();};}function respondWithResult(_0x36bdb8,_0x3c1c97){_0x3c1c97=_0x3c1c97||0xc8;return function(_0x26bd8e){if(_0x26bd8e){return _0x36bdb8['status'](_0x3c1c97)[_0x743f('0x2f')](_0x26bd8e);}};}function respondWithFilteredResult(_0x5166ea,_0x20a4da){return function(_0x24e200){if(_0x24e200){var _0xc768af=typeof _0x20a4da[_0x743f('0x30')]==='undefined'&&typeof _0x20a4da['limit']===_0x743f('0x31');var _0x33463f=_0x24e200['count'];var _0x233689=_0xc768af?0x0:_0x20a4da['offset'];var _0x93cd20=_0xc768af?_0x24e200[_0x743f('0x32')]:_0x20a4da['offset']+_0x20a4da['limit'];var _0x143722;if(_0x93cd20>=_0x33463f){_0x93cd20=_0x33463f;_0x143722=0xc8;}else{_0x143722=0xce;}_0x5166ea[_0x743f('0x33')](_0x143722);return _0x5166ea[_0x743f('0x34')]('Content-Range',_0x233689+'-'+_0x93cd20+'/'+_0x33463f)[_0x743f('0x2f')](_0x24e200);}return null;};}function patchUpdates(_0x2005ef){return function(_0x390dd4){try{jsonpatch[_0x743f('0x35')](_0x390dd4,_0x2005ef,!![]);}catch(_0x4d1d30){return BPromise[_0x743f('0x36')](_0x4d1d30);}return _0x390dd4[_0x743f('0x37')]();};}function saveUpdates(_0x13fd36,_0x368920){return function(_0x4a3e17){if(_0x4a3e17){return _0x4a3e17[_0x743f('0x38')](_0x13fd36)[_0x743f('0x22')](function(_0x566135){return _0x566135;});}return null;};}function removeEntity(_0x43c1ce,_0x157f59){return function(_0x3fd5ed){if(_0x3fd5ed){return _0x3fd5ed[_0x743f('0x39')]()[_0x743f('0x22')](function(){var _0x91f152=_0x3fd5ed[_0x743f('0x3a')]({'plain':!![]});var _0x73f5bd=_0x743f('0x3b');return db['UserProfileResource'][_0x743f('0x39')]({'where':{'type':_0x73f5bd,'resourceId':_0x91f152['id']}})[_0x743f('0x22')](function(){return _0x3fd5ed;});})['then'](function(){_0x43c1ce[_0x743f('0x33')](0xcc)['end']();});}};}function handleEntityNotFound(_0x22549a,_0x22381c){return function(_0x247889){if(!_0x247889){_0x22549a['sendStatus'](0x194);}return _0x247889;};}function handleError(_0x473bc6,_0x5d75e9){_0x5d75e9=_0x5d75e9||0x1f4;return function(_0x22d987){logger[_0x743f('0x29')](_0x22d987['stack']);if(_0x22d987[_0x743f('0x3c')]){delete _0x22d987['name'];}_0x473bc6['status'](_0x5d75e9)[_0x743f('0x3d')](_0x22d987);};}exports['index']=function(_0x1927d9,_0x11a018){var _0x1be5c4={'include':[{'model':db[_0x743f('0x3e')],'as':_0x743f('0x3f')}]},_0xd26f63={},_0x544e41={'count':0x0,'rows':[]};var _0x3552dd=_[_0x743f('0x40')](db[_0x743f('0x41')]['rawAttributes'],function(_0x3f209){return{'name':_0x3f209[_0x743f('0x42')],'type':_0x3f209[_0x743f('0x43')]['key']};});_0xd26f63['model']=_['map'](_0x3552dd,'name');_0xd26f63['query']=_[_0x743f('0x44')](_0x1927d9['query']);_0xd26f63[_0x743f('0x45')]=_[_0x743f('0x46')](_0xd26f63[_0x743f('0x47')],_0xd26f63[_0x743f('0x48')]);_0x1be5c4[_0x743f('0x49')]=_[_0x743f('0x46')](_0xd26f63['model'],qs[_0x743f('0x4a')](_0x1927d9[_0x743f('0x48')][_0x743f('0x4a')]));_0x1be5c4[_0x743f('0x49')]=_0x1be5c4[_0x743f('0x49')]['length']?_0x1be5c4[_0x743f('0x49')]:_0xd26f63[_0x743f('0x47')];if(!_0x1927d9[_0x743f('0x48')]['hasOwnProperty'](_0x743f('0x4b'))){_0x1be5c4[_0x743f('0x4c')]=qs[_0x743f('0x4c')](_0x1927d9['query'][_0x743f('0x4c')]);_0x1be5c4['offset']=qs[_0x743f('0x30')](_0x1927d9['query'][_0x743f('0x30')]);}_0x1be5c4[_0x743f('0x4d')]=qs[_0x743f('0x4e')](_0x1927d9[_0x743f('0x48')][_0x743f('0x4e')]);_0x1be5c4[_0x743f('0x4f')]=qs['filters'](_[_0x743f('0x50')](_0x1927d9[_0x743f('0x48')],_0xd26f63[_0x743f('0x45')]),_0x3552dd);if(_0x1927d9[_0x743f('0x48')]['filter']){_0x1be5c4['where']=_[_0x743f('0x51')](_0x1be5c4[_0x743f('0x4f')],{'$or':_['map'](_0x3552dd,function(_0x1794c5){if(_0x1794c5[_0x743f('0x43')]!==_0x743f('0x52')){var _0x16577c={};_0x16577c[_0x1794c5[_0x743f('0x3c')]]={'$like':'%'+_0x1927d9[_0x743f('0x48')][_0x743f('0x53')]+'%'};return _0x16577c;}})});}_0x1be5c4=_[_0x743f('0x51')]({},_0x1be5c4,_0x1927d9[_0x743f('0x54')]);var _0x2025e6={'where':_0x1be5c4[_0x743f('0x4f')]};return db[_0x743f('0x41')]['count'](_0x2025e6)['then'](function(_0x23bac1){_0x544e41[_0x743f('0x32')]=_0x23bac1;if(_0x1927d9[_0x743f('0x48')][_0x743f('0x55')]){_0x1be5c4[_0x743f('0x56')]=[{'all':!![]}];}return db[_0x743f('0x41')][_0x743f('0x57')](_0x1be5c4);})[_0x743f('0x22')](function(_0x1d1839){_0x544e41['rows']=_0x1d1839;return _0x544e41;})[_0x743f('0x22')](respondWithFilteredResult(_0x11a018,_0x1be5c4))[_0x743f('0x2d')](handleError(_0x11a018,null));};exports[_0x743f('0x58')]=function(_0x2c483a,_0x225564){var _0x4134f7={'raw':![],'where':{'id':_0x2c483a['params']['id']},'include':[{'model':db['Pause'],'as':_0x743f('0x3f')}]},_0x1e2b39={};_0x1e2b39['model']=_[_0x743f('0x44')](db['OpenchannelAccount'][_0x743f('0x59')]);_0x1e2b39['query']=_['keys'](_0x2c483a[_0x743f('0x48')]);_0x1e2b39[_0x743f('0x45')]=_[_0x743f('0x46')](_0x1e2b39[_0x743f('0x47')],_0x1e2b39[_0x743f('0x48')]);_0x4134f7['attributes']=_[_0x743f('0x46')](_0x1e2b39[_0x743f('0x47')],qs[_0x743f('0x4a')](_0x2c483a[_0x743f('0x48')][_0x743f('0x4a')]));_0x4134f7[_0x743f('0x49')]=_0x4134f7[_0x743f('0x49')]['length']?_0x4134f7[_0x743f('0x49')]:_0x1e2b39['model'];if(_0x2c483a['query']['includeAll']){_0x4134f7[_0x743f('0x56')]=[{'all':!![]}];}_0x4134f7=_[_0x743f('0x51')]({},_0x4134f7,_0x2c483a['options']);return db[_0x743f('0x41')]['find'](_0x4134f7)[_0x743f('0x22')](handleEntityNotFound(_0x225564,null))['then'](respondWithResult(_0x225564,null))[_0x743f('0x2d')](handleError(_0x225564,null));};exports[_0x743f('0x5a')]=function(_0x4b5dde,_0x50b9de){return db[_0x743f('0x41')][_0x743f('0x5a')](_0x4b5dde[_0x743f('0x5b')],{})[_0x743f('0x22')](function(_0x42df0f){var _0x555138=_0x4b5dde[_0x743f('0x5c')][_0x743f('0x3a')]({'plain':!![]});if(!_0x555138)throw new Error(_0x743f('0x5d'));if(_0x555138[_0x743f('0x5e')]===_0x743f('0x5c')){var _0x2fe669=_0x42df0f['get']({'plain':!![]});var _0x49918c='OpenchannelAccounts';return db[_0x743f('0x5f')][_0x743f('0x60')]({'where':{'name':_0x49918c,'userProfileId':_0x555138['userProfileId']},'raw':!![]})['then'](function(_0x1caa53){if(_0x1caa53&&_0x1caa53[_0x743f('0x61')]===0x0){return db['UserProfileResource'][_0x743f('0x5a')]({'name':_0x2fe669[_0x743f('0x3c')],'resourceId':_0x2fe669['id'],'type':_0x1caa53['name'],'sectionId':_0x1caa53['id']},{})[_0x743f('0x22')](function(){return _0x42df0f;});}else{return _0x42df0f;}})[_0x743f('0x2d')](function(_0x11b0e7){logger[_0x743f('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x11b0e7);throw _0x11b0e7;});}return _0x42df0f;})[_0x743f('0x22')](respondWithResult(_0x50b9de,0xc9))[_0x743f('0x2d')](handleError(_0x50b9de,null));};exports['update']=function(_0x25321f,_0x25bc47){if(_0x25321f[_0x743f('0x5b')]['id']){delete _0x25321f['body']['id'];}return db[_0x743f('0x41')][_0x743f('0x60')]({'where':{'id':_0x25321f['params']['id']},'include':[{'model':db['Pause'],'as':_0x743f('0x3f')}]})[_0x743f('0x22')](handleEntityNotFound(_0x25bc47,null))[_0x743f('0x22')](saveUpdates(_0x25321f[_0x743f('0x5b')],null))[_0x743f('0x22')](respondWithResult(_0x25bc47,null))[_0x743f('0x2d')](handleError(_0x25bc47,null));};exports[_0x743f('0x39')]=function(_0x4b2aae,_0x5484a8){return db[_0x743f('0x41')][_0x743f('0x60')]({'where':{'id':_0x4b2aae[_0x743f('0x62')]['id']}})['then'](handleEntityNotFound(_0x5484a8,null))[_0x743f('0x22')](removeEntity(_0x5484a8,null))['catch'](handleError(_0x5484a8,null));};exports[_0x743f('0x63')]=function(_0x275d1e,_0x476685){return db[_0x743f('0x41')]['describe']()[_0x743f('0x22')](respondWithResult(_0x476685,null))[_0x743f('0x2d')](handleError(_0x476685,null));};exports['addDisposition']=function(_0x3c6984,_0x365071,_0x299741){if(_0x3c6984[_0x743f('0x5b')]['id']){delete _0x3c6984['body']['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x3c6984[_0x743f('0x62')]['id']}})['then'](handleEntityNotFound(_0x365071,null))[_0x743f('0x22')](function(_0x3b741e){if(_0x3b741e){_0x3c6984[_0x743f('0x5b')][_0x743f('0x64')]=_0x3b741e['id'];return db[_0x743f('0x65')][_0x743f('0x5a')](_0x3c6984[_0x743f('0x5b')]);}})[_0x743f('0x22')](respondWithResult(_0x365071,null))[_0x743f('0x2d')](handleError(_0x365071,null));};exports['getDispositions']=function(_0x5519eb,_0x5064fa,_0x2548d5){var _0x3e58c2={'raw':![],'where':{}};var _0xdaaa03={};var _0x5755a7={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x5519eb[_0x743f('0x62')]['id']}})[_0x743f('0x22')](handleEntityNotFound(_0x5064fa,null))[_0x743f('0x22')](function(_0x17720b){if(_0x17720b){_0xdaaa03[_0x743f('0x47')]=_['keys'](db['Disposition'][_0x743f('0x59')]);_0xdaaa03[_0x743f('0x48')]=_[_0x743f('0x44')](_0x5519eb[_0x743f('0x48')]);_0xdaaa03[_0x743f('0x45')]=_[_0x743f('0x46')](_0xdaaa03[_0x743f('0x47')],_0xdaaa03['query']);_0x3e58c2[_0x743f('0x49')]=_['intersection'](_0xdaaa03[_0x743f('0x47')],qs[_0x743f('0x4a')](_0x5519eb[_0x743f('0x48')][_0x743f('0x4a')]));_0x3e58c2['attributes']=_0x3e58c2[_0x743f('0x49')][_0x743f('0x66')]?_0x3e58c2['attributes']:_0xdaaa03[_0x743f('0x47')];if(!_0x5519eb['query'][_0x743f('0x67')]('nolimit')){_0x3e58c2[_0x743f('0x4c')]=qs[_0x743f('0x4c')](_0x5519eb['query'][_0x743f('0x4c')]);_0x3e58c2['offset']=qs['offset'](_0x5519eb['query'][_0x743f('0x30')]);}_0x3e58c2[_0x743f('0x4d')]=qs[_0x743f('0x4e')](_0x5519eb[_0x743f('0x48')][_0x743f('0x4e')]);_0x3e58c2[_0x743f('0x4f')]=qs[_0x743f('0x45')](_[_0x743f('0x50')](_0x5519eb[_0x743f('0x48')],_0xdaaa03['filters']));_0x3e58c2[_0x743f('0x4f')][_0x743f('0x64')]=_0x17720b['id'];if(_0x5519eb['query'][_0x743f('0x53')]){_0x3e58c2['where']=_[_0x743f('0x51')](_0x3e58c2['where'],{'$or':_[_0x743f('0x40')](_0x3e58c2[_0x743f('0x49')],function(_0x38f67b){var _0x1f6647={};_0x1f6647[_0x38f67b]={'$like':'%'+_0x5519eb[_0x743f('0x48')][_0x743f('0x53')]+'%'};return _0x1f6647;})});}_0x3e58c2=_[_0x743f('0x51')]({},_0x3e58c2,_0x5519eb['options']);return db[_0x743f('0x65')][_0x743f('0x32')]({'where':_0x3e58c2[_0x743f('0x4f')]})[_0x743f('0x22')](function(_0x1c92c5){_0x5755a7[_0x743f('0x32')]=_0x1c92c5;if(_0x5519eb[_0x743f('0x48')][_0x743f('0x55')]){_0x3e58c2[_0x743f('0x56')]=[{'all':!![]}];}return db[_0x743f('0x65')][_0x743f('0x57')](_0x3e58c2);})[_0x743f('0x22')](function(_0x11eb5c){_0x5755a7[_0x743f('0x68')]=_0x11eb5c;return _0x5755a7;});}})[_0x743f('0x22')](respondWithFilteredResult(_0x5064fa,_0x3e58c2))['catch'](handleError(_0x5064fa,null));};exports['removeDispositions']=function(_0x3e120f,_0x46c3cd,_0x1e1297){return db[_0x743f('0x41')]['find']({'where':{'id':_0x3e120f[_0x743f('0x62')]['id']}})['then'](handleEntityNotFound(_0x46c3cd,null))[_0x743f('0x22')](function(_0x2450f5){if(_0x2450f5){return _0x2450f5['removeDispositions'](_0x3e120f[_0x743f('0x48')][_0x743f('0x69')]);}})[_0x743f('0x22')](respondWithStatusCode(_0x46c3cd,null))[_0x743f('0x2d')](handleError(_0x46c3cd,null));};exports[_0x743f('0x6a')]=function(_0x1a03a7,_0x5a1dae,_0x599ad0){if(_0x1a03a7[_0x743f('0x5b')]['id']){delete _0x1a03a7['body']['id'];}return db[_0x743f('0x41')][_0x743f('0x60')]({'where':{'id':_0x1a03a7[_0x743f('0x62')]['id']}})[_0x743f('0x22')](handleEntityNotFound(_0x5a1dae,null))[_0x743f('0x22')](function(_0x5856be){if(_0x5856be){_0x1a03a7[_0x743f('0x5b')][_0x743f('0x64')]=_0x5856be['id'];return db[_0x743f('0x6b')]['create'](_0x1a03a7['body']);}})['then'](respondWithResult(_0x5a1dae,null))['catch'](handleError(_0x5a1dae,null));};exports['getAnswers']=function(_0x569d1d,_0x58726a,_0x4b72d0){var _0x59764e={'raw':![],'where':{}};var _0x35a933={};var _0x2f4761={'count':0x0,'rows':[]};return db[_0x743f('0x41')][_0x743f('0x6c')]({'where':{'id':_0x569d1d[_0x743f('0x62')]['id']}})['then'](handleEntityNotFound(_0x58726a,null))[_0x743f('0x22')](function(_0x18be59){if(_0x18be59){_0x35a933[_0x743f('0x47')]=_[_0x743f('0x44')](db[_0x743f('0x6b')][_0x743f('0x59')]);_0x35a933[_0x743f('0x48')]=_[_0x743f('0x44')](_0x569d1d[_0x743f('0x48')]);_0x35a933[_0x743f('0x45')]=_[_0x743f('0x46')](_0x35a933[_0x743f('0x47')],_0x35a933['query']);_0x59764e[_0x743f('0x49')]=_[_0x743f('0x46')](_0x35a933[_0x743f('0x47')],qs[_0x743f('0x4a')](_0x569d1d['query'][_0x743f('0x4a')]));_0x59764e[_0x743f('0x49')]=_0x59764e[_0x743f('0x49')][_0x743f('0x66')]?_0x59764e[_0x743f('0x49')]:_0x35a933['model'];if(!_0x569d1d['query'][_0x743f('0x67')](_0x743f('0x4b'))){_0x59764e[_0x743f('0x4c')]=qs['limit'](_0x569d1d['query'][_0x743f('0x4c')]);_0x59764e[_0x743f('0x30')]=qs[_0x743f('0x30')](_0x569d1d[_0x743f('0x48')][_0x743f('0x30')]);}_0x59764e[_0x743f('0x4d')]=qs[_0x743f('0x4e')](_0x569d1d['query'][_0x743f('0x4e')]);_0x59764e['where']=qs[_0x743f('0x45')](_[_0x743f('0x50')](_0x569d1d['query'],_0x35a933[_0x743f('0x45')]));_0x59764e['where'][_0x743f('0x64')]=_0x18be59['id'];if(_0x569d1d[_0x743f('0x48')][_0x743f('0x53')]){_0x59764e[_0x743f('0x4f')]=_[_0x743f('0x51')](_0x59764e[_0x743f('0x4f')],{'$or':_[_0x743f('0x40')](_0x59764e[_0x743f('0x49')],function(_0x5b22d4){var _0x32da87={};_0x32da87[_0x5b22d4]={'$like':'%'+_0x569d1d[_0x743f('0x48')][_0x743f('0x53')]+'%'};return _0x32da87;})});}_0x59764e=_[_0x743f('0x51')]({},_0x59764e,_0x569d1d[_0x743f('0x54')]);return db[_0x743f('0x6b')][_0x743f('0x32')]({'where':_0x59764e[_0x743f('0x4f')]})[_0x743f('0x22')](function(_0x5a00fd){_0x2f4761[_0x743f('0x32')]=_0x5a00fd;if(_0x569d1d[_0x743f('0x48')][_0x743f('0x55')]){_0x59764e[_0x743f('0x56')]=[{'all':!![]}];}return db[_0x743f('0x6b')][_0x743f('0x57')](_0x59764e);})[_0x743f('0x22')](function(_0x178840){_0x2f4761[_0x743f('0x68')]=_0x178840;return _0x2f4761;});}})[_0x743f('0x22')](respondWithFilteredResult(_0x58726a,_0x59764e))[_0x743f('0x2d')](handleError(_0x58726a,null));};exports[_0x743f('0x6d')]=function(_0x170272,_0x3e41ed,_0x20326f){return db[_0x743f('0x41')][_0x743f('0x60')]({'where':{'id':_0x170272[_0x743f('0x62')]['id']}})['then'](handleEntityNotFound(_0x3e41ed,null))['then'](function(_0x186483){if(_0x186483){return _0x186483[_0x743f('0x6d')](_0x170272['query'][_0x743f('0x69')]);}})[_0x743f('0x22')](respondWithStatusCode(_0x3e41ed,null))['catch'](handleError(_0x3e41ed,null));};exports[_0x743f('0x6e')]=function(_0x26db8c,_0x46858b,_0xc3e69b){var _0x390493={'body':_0x26db8c['body'],'channel':'openchannel'};var _0x45f18f=[];var _0x4d790c=[];var _0x3021fb={};var _0xfaf2df=![];return db['CmContact'][_0x743f('0x63')]()[_0x743f('0x22')](function(_0x147411){if(!_0x147411){throw new db[(_0x743f('0x6f'))][(_0x743f('0x70'))](_0x743f('0x71'));}_0x45f18f=_[_0x743f('0x72')](_[_0x743f('0x44')](_0x147411),[_0x743f('0x73'),_0x743f('0x74')]);_0x4d790c=_[_0x743f('0x72')](_[_0x743f('0x44')](_0x147411),[_0x743f('0x73'),_0x743f('0x74'),_0x743f('0x75'),'ListId']);if(_0x26db8c['body']['id']){delete _0x26db8c[_0x743f('0x5b')]['id'];}if(_['isNil'](_0x26db8c[_0x743f('0x5b')][_0x743f('0x76')])){throw new db[(_0x743f('0x6f'))][(_0x743f('0x70'))](_0x743f('0x77'));}if(_[_0x743f('0x78')](_0x26db8c[_0x743f('0x5b')][_0x743f('0x5b')])||_0x26db8c[_0x743f('0x5b')]['body']===''){throw new db[(_0x743f('0x6f'))][(_0x743f('0x70'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x743f('0x78')](_0x26db8c['body'][_0x743f('0x79')])){throw new db[(_0x743f('0x6f'))][(_0x743f('0x70'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4d790c);}if(!_[_0x743f('0x7a')](_0x4d790c,_0x26db8c[_0x743f('0x5b')]['mapKey'])){throw new db[(_0x743f('0x6f'))][(_0x743f('0x70'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4d790c);}_0x3021fb[_0x26db8c[_0x743f('0x5b')][_0x743f('0x79')]]=_0x26db8c[_0x743f('0x5b')][_0x743f('0x76')];})['then'](function(){return db[_0x743f('0x41')][_0x743f('0x60')]({'where':{'id':_0x26db8c[_0x743f('0x62')]['id']},'include':[{'model':db[_0x743f('0x7b')],'as':_0x743f('0x7c'),'include':[{'model':db[_0x743f('0x7d')],'as':_0x743f('0x7e'),'where':_0x3021fb,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x743f('0x7f')],'as':_0x743f('0x80')}]});})[_0x743f('0x22')](handleEntityNotFound(_0x46858b,null))[_0x743f('0x22')](function(_0x497ff8){if(_0x497ff8&&_0x497ff8[_0x743f('0x7c')]){_0x390493[_0x743f('0x81')]=_0x497ff8;_0x390493[_0x743f('0x82')]=_0x497ff8[_0x743f('0x80')];_0x390493[_0x743f('0x83')]=_0x497ff8['List'];_0x390493[_0x743f('0x82')]=_[_0x743f('0x84')](_0x390493[_0x743f('0x82')],[_0x743f('0x85')],[_0x743f('0x86')]);if(_0x390493[_0x743f('0x81')][_0x743f('0x80')]){delete _0x390493[_0x743f('0x81')][_0x743f('0x80')];}if(_0x390493['account'][_0x743f('0x7c')]&&_0x390493[_0x743f('0x81')][_0x743f('0x7c')][_0x743f('0x7e')]['length']){return _0x390493['account'][_0x743f('0x7c')][_0x743f('0x7e')][0x0];}var _0x56c0e2=_[_0x743f('0x19')](_0x26db8c[_0x743f('0x5b')],{'firstName':_0x26db8c[_0x743f('0x5b')]['from'],'ListId':_0x497ff8[_0x743f('0x87')]});_0x56c0e2[_0x26db8c[_0x743f('0x5b')][_0x743f('0x79')]]=_0x26db8c[_0x743f('0x5b')][_0x743f('0x76')];return db['CmContact'][_0x743f('0x5a')](_0x56c0e2,{'fields':_0x45f18f,'raw':!![]});}})[_0x743f('0x22')](handleEntityNotFound(_0x46858b,null))[_0x743f('0x22')](function(_0x512d40){_0x390493[_0x743f('0x88')]=_0x512d40;if(_0x512d40){var _0x58d4b6={'ContactId':_0x512d40['id'],'OpenchannelAccountId':_0x26db8c['params']['id'],'from':(_0x512d40[_0x743f('0x89')]||'')+'\x20'+(_0x512d40[_0x743f('0x8a')]||'')};var _0x51be87={'OpenchannelAccountId':_0x26db8c[_0x743f('0x62')]['id'],'closed':![]};if(_0x26db8c[_0x743f('0x5b')][_0x743f('0x8b')]){_0x51be87[_0x743f('0x8b')]=_0x26db8c[_0x743f('0x5b')][_0x743f('0x8b')];return db[_0x743f('0x8c')][_0x743f('0x60')]({'where':_0x51be87})['then'](function(_0x3e80c7){if(_0x3e80c7){return[_0x3e80c7,![]];}_0x58d4b6[_0x743f('0x8b')]=_0x26db8c['body'][_0x743f('0x8b')];_0x58d4b6[_0x743f('0x8d')]=_0x26db8c[_0x743f('0x5b')][_0x743f('0x8d')];return db[_0x743f('0x8c')]['create'](_0x58d4b6)['then'](function(_0x4841d8){return[_0x4841d8,!![]];});});}else{_0x51be87[_0x743f('0x8b')]=null;}_0x51be87['ContactId']=_0x512d40['id'];return db[_0x743f('0x8c')]['find']({'where':_0x51be87})[_0x743f('0x22')](function(_0x212d4a){if(_0x212d4a){return[_0x212d4a,![]];}return db[_0x743f('0x8c')][_0x743f('0x5a')](_0x58d4b6)['then'](function(_0x5dd5ae){return[_0x5dd5ae,!![]];});});}})[_0x743f('0x8e')](function(_0x510e7b,_0x21d5e7){if(_0x510e7b){_0xfaf2df=_0x21d5e7;if(!_0x21d5e7){var _0xd9773c={'from':(_0x390493[_0x743f('0x88')][_0x743f('0x89')]||'')+'\x20'+(_0x390493['contact']['lastName']||'')};if(_0x26db8c[_0x743f('0x5b')][_0x743f('0x8b')]&&_0x26db8c[_0x743f('0x5b')]['messageId']&&_0x26db8c['body'][_0x743f('0x8b')]!=_0x26db8c['body'][_0x743f('0x8f')]){_0xd9773c['threadId']=_0x26db8c[_0x743f('0x5b')][_0x743f('0x8f')];}return _0x510e7b[_0x743f('0x38')](_0xd9773c);}else{return _0x510e7b;}}})[_0x743f('0x22')](function(_0x3cbccd){_0x390493[_0x743f('0x90')]=_0x3cbccd[_0x743f('0x3a')]({'plain':!![]});_0x390493[_0x743f('0x90')][_0x743f('0x91')]=_0xfaf2df;if(_0x390493[_0x743f('0x90')][_0x743f('0x91')]){if(_0x390493[_0x743f('0x81')][_0x743f('0x92')]){_0x390493[_0x743f('0x82')][_0x743f('0x93')]({'id':0x0,'priority':_0x390493[_0x743f('0x82')][_0x743f('0x66')]+0x1,'app':'close','appdata':'unmanaged','interval':'*,*,*,*'});}}return db['OpenchannelMessage'][_0x743f('0x5a')]({'body':_0x26db8c['body'][_0x743f('0x5b')],'OpenchannelAccountId':_0x26db8c['params']['id'],'OpenchannelInteractionId':_0x3cbccd['id'],'direction':'in','ContactId':_0x390493[_0x743f('0x88')]['id'],'AttachmentId':_0x26db8c[_0x743f('0x5b')][_0x743f('0x94')]});})[_0x743f('0x22')](function(_0x94f30e){_0x390493['message']=_0x94f30e;if(_0x390493[_0x743f('0x90')]['UserId']){return db[_0x743f('0x95')][_0x743f('0x60')]({'attributes':['id',_0x743f('0x3c')],'where':{'id':_0x390493[_0x743f('0x90')][_0x743f('0x96')]}})[_0x743f('0x22')](function(_0x5eacfd){if(_0x5eacfd){_0x390493[_0x743f('0x82')][_0x743f('0x97')]({'id':0x0,'priority':0x0,'app':_0x743f('0x98'),'appdata':_0x5eacfd[_0x743f('0x3c')]+','+(_0x390493[_0x743f('0x81')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});_0x390493[_0x743f('0x99')]=![];}return respondWithRpcPromise('Start',_0x743f('0x9a'),_0x390493);});}return respondWithRpcPromise('Start',_0x743f('0x9a'),_0x390493);})[_0x743f('0x22')](function(_0x18579d){respondWithRpcPromise('EventManager','EventManager',{'event':_0x743f('0x6e'),'message':_0x18579d},client9002);return _0x18579d;})[_0x743f('0x22')](respondWithResult(_0x46858b,null))[_0x743f('0x2d')](handleError(_0x46858b,null));};exports[_0x743f('0x9b')]=function(_0x5a73c5,_0x16542d,_0x2420e7){return db[_0x743f('0x41')][_0x743f('0x6c')]({'where':{'id':_0x5a73c5['params']['id']}})[_0x743f('0x22')](handleEntityNotFound(_0x16542d,null))[_0x743f('0x22')](function(_0x59263e){if(_0x59263e){return db[_0x743f('0x9c')]['transaction'](function(_0xcb0bd3){return db[_0x743f('0x7f')][_0x743f('0x39')]({'where':{'OpenchannelAccountId':_0x5a73c5['params']['id']},'transaction':_0xcb0bd3})[_0x743f('0x22')](function(_0x3cfc21){var _0x480b92=_['map'](_0x5a73c5[_0x743f('0x5b')],function(_0x3eb300){_0x3eb300[_0x743f('0x64')]=_0x5a73c5['params']['id'];return _0x3eb300;});return db[_0x743f('0x7f')][_0x743f('0x9d')](_0x480b92,{'transaction':_0xcb0bd3});});})[_0x743f('0x22')](function(){return db[_0x743f('0x7f')][_0x743f('0x9e')]({'where':{'OpenchannelAccountId':_0x5a73c5[_0x743f('0x62')]['id']},'order':_0x743f('0x85')});});}})['then'](respondWithResult(_0x16542d,null))[_0x743f('0x2d')](handleError(_0x16542d,null));};exports['getApplications']=function(_0x268a31,_0x54292f,_0x568b67){var _0x22cc84={};var _0x55f5c4={};var _0x5e1f0;var _0x2a5605;return db[_0x743f('0x41')]['findOne']({'where':{'id':_0x268a31['params']['id']}})['then'](handleEntityNotFound(_0x54292f,null))[_0x743f('0x22')](function(_0x1bb95b){if(_0x1bb95b){_0x5e1f0=_0x1bb95b;_0x55f5c4['model']=_[_0x743f('0x44')](db[_0x743f('0x7f')][_0x743f('0x59')]);_0x55f5c4[_0x743f('0x48')]=_[_0x743f('0x44')](_0x268a31[_0x743f('0x48')]);_0x55f5c4[_0x743f('0x45')]=_[_0x743f('0x46')](_0x55f5c4['model'],_0x55f5c4[_0x743f('0x48')]);_0x22cc84[_0x743f('0x49')]=_[_0x743f('0x46')](_0x55f5c4[_0x743f('0x47')],qs[_0x743f('0x4a')](_0x268a31[_0x743f('0x48')][_0x743f('0x4a')]));_0x22cc84['attributes']=_0x22cc84[_0x743f('0x49')][_0x743f('0x66')]?_0x22cc84[_0x743f('0x49')]:_0x55f5c4[_0x743f('0x47')];_0x22cc84[_0x743f('0x4d')]=qs[_0x743f('0x4e')](_0x268a31[_0x743f('0x48')][_0x743f('0x4e')]);_0x22cc84['where']=qs[_0x743f('0x45')](_['pick'](_0x268a31['query'],_0x55f5c4[_0x743f('0x45')]));if(_0x268a31[_0x743f('0x48')][_0x743f('0x53')]){_0x22cc84['where']=_[_0x743f('0x51')](_0x22cc84[_0x743f('0x4f')],{'$or':_[_0x743f('0x40')](_0x22cc84[_0x743f('0x49')],function(_0x4cfef9){var _0x18a527={};_0x18a527[_0x4cfef9]={'$like':'%'+_0x268a31[_0x743f('0x48')][_0x743f('0x53')]+'%'};return _0x18a527;})});}_0x22cc84=_['merge']({},_0x22cc84,_0x268a31[_0x743f('0x54')]);return _0x5e1f0[_0x743f('0x9f')](_0x22cc84);}})['then'](function(_0x3e3b01){if(_0x3e3b01){_0x2a5605=_0x3e3b01[_0x743f('0x66')];if(!_0x268a31['query'][_0x743f('0x67')]('nolimit')){_0x22cc84[_0x743f('0x4c')]=qs[_0x743f('0x4c')](_0x268a31['query'][_0x743f('0x4c')]);_0x22cc84[_0x743f('0x30')]=qs[_0x743f('0x30')](_0x268a31[_0x743f('0x48')]['offset']);}return _0x5e1f0[_0x743f('0x9f')](_0x22cc84);}})[_0x743f('0x22')](function(_0xde8d4f){if(_0xde8d4f){return _0xde8d4f?{'count':_0x2a5605,'rows':_0xde8d4f}:null;}})[_0x743f('0x22')](respondWithResult(_0x54292f,null))['catch'](handleError(_0x54292f,null));};exports[_0x743f('0xa0')]=function(_0x48f423,_0x53b6ec,_0x18edee){var _0x3b22d4={'raw':![],'where':{}};var _0x4e6748={};var _0x65d3e={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x743f('0x6c')]({'where':{'id':_0x48f423[_0x743f('0x62')]['id']}})[_0x743f('0x22')](handleEntityNotFound(_0x53b6ec,null))[_0x743f('0x22')](function(_0x217c63){if(_0x217c63){_0x4e6748[_0x743f('0x47')]=_['keys'](db[_0x743f('0x8c')][_0x743f('0x59')]);_0x4e6748['query']=_[_0x743f('0x44')](_0x48f423[_0x743f('0x48')]);_0x4e6748[_0x743f('0x45')]=_[_0x743f('0x46')](_0x4e6748['model'],_0x4e6748['query']);_0x3b22d4[_0x743f('0x49')]=_[_0x743f('0x46')](_0x4e6748[_0x743f('0x47')],qs[_0x743f('0x4a')](_0x48f423['query'][_0x743f('0x4a')]));_0x3b22d4[_0x743f('0x49')]=_0x3b22d4[_0x743f('0x49')][_0x743f('0x66')]?_0x3b22d4[_0x743f('0x49')]:_0x4e6748[_0x743f('0x47')];if(!_0x48f423[_0x743f('0x48')][_0x743f('0x67')]('nolimit')){_0x3b22d4['limit']=qs[_0x743f('0x4c')](_0x48f423['query']['limit']);_0x3b22d4['offset']=qs[_0x743f('0x30')](_0x48f423[_0x743f('0x48')][_0x743f('0x30')]);}_0x3b22d4[_0x743f('0x4d')]=qs[_0x743f('0x4e')](_0x48f423[_0x743f('0x48')][_0x743f('0x4e')]);_0x3b22d4[_0x743f('0x4f')]=qs['filters'](_[_0x743f('0x50')](_0x48f423[_0x743f('0x48')],_0x4e6748[_0x743f('0x45')]));_0x3b22d4[_0x743f('0x4f')]['OpenchannelAccountId']=_0x217c63['id'];if(_0x48f423[_0x743f('0x48')][_0x743f('0x53')]){_0x3b22d4[_0x743f('0x4f')]=_['merge'](_0x3b22d4[_0x743f('0x4f')],{'$or':_[_0x743f('0x40')](_0x3b22d4[_0x743f('0x49')],function(_0x38ddf1){var _0x5a6bff={};_0x5a6bff[_0x38ddf1]={'$like':'%'+_0x48f423[_0x743f('0x48')]['filter']+'%'};return _0x5a6bff;})});}_0x3b22d4=_['merge']({},_0x3b22d4,_0x48f423[_0x743f('0x54')]);return db[_0x743f('0x8c')]['count']({'where':_0x3b22d4[_0x743f('0x4f')]})[_0x743f('0x22')](function(_0xdff5ba){_0x65d3e['count']=_0xdff5ba;if(_0x48f423[_0x743f('0x48')][_0x743f('0x55')]){_0x3b22d4['include']=[{'model':db[_0x743f('0x7d')],'as':_0x743f('0xa1'),'required':![]},{'model':db[_0x743f('0x95')],'as':'Owner','attributes':[_0x743f('0x3c'),_0x743f('0xa2'),_0x743f('0xa3')],'required':![]},{'model':db[_0x743f('0xa4')],'as':_0x743f('0xa5'),'attributes':['id',_0x743f('0x3c'),_0x743f('0xa6')],'where':_0x48f423[_0x743f('0x48')][_0x743f('0xa7')]?{'id':_0x48f423['query']['tag']}:undefined,'required':_0x48f423[_0x743f('0x48')][_0x743f('0xa7')]?!![]:![]}];}return db[_0x743f('0x8c')][_0x743f('0x57')](_0x3b22d4);})[_0x743f('0x22')](function(_0x30003f){_0x65d3e[_0x743f('0x68')]=_0x30003f;return _0x65d3e;});}})[_0x743f('0x22')](respondWithFilteredResult(_0x53b6ec,_0x3b22d4))[_0x743f('0x2d')](handleError(_0x53b6ec,null));};exports[_0x743f('0xa8')]=function(_0x1be42b,_0x131c7a,_0x1a6fb5){return db['OpenchannelAccount'][_0x743f('0x60')]({'where':{'id':_0x1be42b[_0x743f('0x62')]['id']}})[_0x743f('0x22')](handleEntityNotFound(_0x131c7a,null))[_0x743f('0x22')](function(_0x3ae0f9){if(_0x3ae0f9){return _0x3ae0f9['addAgents'](_0x1be42b[_0x743f('0x5b')][_0x743f('0x69')],_[_0x743f('0xa9')](_0x1be42b[_0x743f('0x5b')],[_0x743f('0x69'),'id'])||{})[_0x743f('0x8e')](function(_0x36d755){for(var _0x225255=0x0;_0x225255<_0x1be42b[_0x743f('0x5b')]['ids'][_0x743f('0x66')];_0x225255+=0x1){socket['emit']('userOpenchannelAccount:save',{'UserId':Number(_0x1be42b[_0x743f('0x5b')]['ids'][_0x225255]),'OpenchannelAccountId':Number(_0x1be42b[_0x743f('0x62')]['id'])});}return _0x36d755;});}})['then'](respondWithResult(_0x131c7a,null))[_0x743f('0x2d')](handleError(_0x131c7a,null));};exports[_0x743f('0xaa')]=function(_0x46f055,_0x314f87,_0x1111e4){return db[_0x743f('0x41')][_0x743f('0x60')]({'where':{'id':_0x46f055[_0x743f('0x62')]['id']}})['then'](handleEntityNotFound(_0x314f87,null))[_0x743f('0x22')](function(_0x55f9bc){if(_0x55f9bc){return _0x55f9bc[_0x743f('0xaa')](_0x46f055[_0x743f('0x48')][_0x743f('0x69')])['then'](function(){if(_[_0x743f('0xab')](_0x46f055['query'][_0x743f('0x69')])){for(var _0x6e7a68=0x0;_0x6e7a68<_0x46f055[_0x743f('0x48')][_0x743f('0x69')]['length'];_0x6e7a68+=0x1){socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0x46f055[_0x743f('0x48')]['ids'][_0x6e7a68]),'OpenchannelAccountId':Number(_0x46f055[_0x743f('0x62')]['id'])});}}else{socket['emit'](_0x743f('0xac'),{'UserId':Number(_0x46f055['query']['ids']),'OpenchannelAccountId':Number(_0x46f055[_0x743f('0x62')]['id'])});}});}})[_0x743f('0x22')](respondWithStatusCode(_0x314f87,null))[_0x743f('0x2d')](handleError(_0x314f87,null));};exports['getAgents']=function(_0x1576e0,_0x4b9e56,_0x12d5ca){var _0x4d2231={};var _0x172a5d={};var _0x593255;var _0x1f31a5;return db[_0x743f('0x41')]['findOne']({'where':{'id':_0x1576e0[_0x743f('0x62')]['id']}})[_0x743f('0x22')](handleEntityNotFound(_0x4b9e56,null))[_0x743f('0x22')](function(_0x4efdd2){if(_0x4efdd2){_0x593255=_0x4efdd2;_0x172a5d[_0x743f('0x47')]=_[_0x743f('0x44')](db[_0x743f('0x95')][_0x743f('0x59')]);_0x172a5d[_0x743f('0x48')]=_[_0x743f('0x44')](_0x1576e0[_0x743f('0x48')]);_0x172a5d[_0x743f('0x45')]=_[_0x743f('0x46')](_0x172a5d['model'],_0x172a5d['query']);_0x4d2231[_0x743f('0x49')]=_[_0x743f('0x46')](_0x172a5d[_0x743f('0x47')],qs[_0x743f('0x4a')](_0x1576e0[_0x743f('0x48')][_0x743f('0x4a')]));_0x4d2231[_0x743f('0x49')]=_0x4d2231[_0x743f('0x49')][_0x743f('0x66')]?_0x4d2231[_0x743f('0x49')]:_0x172a5d['model'];_0x4d2231[_0x743f('0x4d')]=qs[_0x743f('0x4e')](_0x1576e0[_0x743f('0x48')]['sort']);_0x4d2231[_0x743f('0x4f')]=qs[_0x743f('0x45')](_[_0x743f('0x50')](_0x1576e0[_0x743f('0x48')],_0x172a5d[_0x743f('0x45')]));if(_0x1576e0[_0x743f('0x48')][_0x743f('0x53')]){_0x4d2231['where']=_[_0x743f('0x51')](_0x4d2231['where'],{'$or':_[_0x743f('0x40')](_0x4d2231[_0x743f('0x49')],function(_0x1af1ef){var _0x35140e={};_0x35140e[_0x1af1ef]={'$like':'%'+_0x1576e0[_0x743f('0x48')][_0x743f('0x53')]+'%'};return _0x35140e;})});}_0x4d2231=_[_0x743f('0x51')]({},_0x4d2231,_0x1576e0['options']);return _0x593255[_0x743f('0xad')](_0x4d2231);}})[_0x743f('0x22')](function(_0x28383e){if(_0x28383e){_0x1f31a5=_0x28383e[_0x743f('0x66')];if(!_0x1576e0[_0x743f('0x48')][_0x743f('0x67')]('nolimit')){_0x4d2231[_0x743f('0x4c')]=qs[_0x743f('0x4c')](_0x1576e0[_0x743f('0x48')]['limit']);_0x4d2231[_0x743f('0x30')]=qs[_0x743f('0x30')](_0x1576e0['query'][_0x743f('0x30')]);}return _0x593255[_0x743f('0xad')](_0x4d2231);}})['then'](function(_0x1f380e){if(_0x1f380e){return _0x1f380e?{'count':_0x1f31a5,'rows':_0x1f380e}:null;}})[_0x743f('0x22')](respondWithResult(_0x4b9e56,null))[_0x743f('0x2d')](handleError(_0x4b9e56,null));};exports[_0x743f('0x3d')]=function(_0x44d17d,_0x3e07ae,_0x41911f){var _0x2e3a73,_0x3e65c8,_0x44e0dc;if(_[_0x743f('0x78')](_0x44d17d[_0x743f('0x5b')]['body'])||_0x44d17d[_0x743f('0x5b')][_0x743f('0x5b')]===''){throw new db[(_0x743f('0x6f'))]['ValidationError'](_0x743f('0xae'));}if(_[_0x743f('0x78')](_0x44d17d[_0x743f('0x5b')]['to'])){}_0x2e3a73=_0x44d17d[_0x743f('0x5b')]['to'];return db[_0x743f('0x41')][_0x743f('0x6c')]({'where':{'id':_0x44d17d['params']['id']}})[_0x743f('0x22')](handleEntityNotFound(_0x3e07ae,null))[_0x743f('0x22')](function(_0xa67951){if(_0xa67951){return db['OpenchannelAccount'][_0x743f('0x60')]({'where':{'id':_0xa67951['id']},'include':[{'model':db['CmList'],'as':_0x743f('0x7c'),'include':[{'model':db[_0x743f('0x7d')],'as':'Contacts','where':{[_0xa67951[_0x743f('0x79')]]:_0x2e3a73},'limit':0x1,'order':[[_0x743f('0x74'),_0x743f('0xaf')]]}]}]})['then'](handleEntityNotFound(_0x3e07ae,null))[_0x743f('0x22')](function(_0x1fd038){if(_0x1fd038&&_0x1fd038[_0x743f('0x7c')]){_0x3e65c8=_0x1fd038['get']({'plain':!![]});if(_0x3e65c8[_0x743f('0x7c')]&&_0x3e65c8[_0x743f('0x7c')][_0x743f('0x7e')][_0x743f('0x66')]){return _0x3e65c8[_0x743f('0x7c')]['Contacts'][0x0];}return db[_0x743f('0x7d')][_0x743f('0x5a')](_[_0x743f('0x19')](_0x44d17d[_0x743f('0x5b')],{'firstName':_0x2e3a73,[_0x1fd038[_0x743f('0x79')]]:_0x2e3a73,'phone':_0x2e3a73,'ListId':_0x3e65c8[_0x743f('0x87')]}));}})[_0x743f('0x22')](handleEntityNotFound(_0x3e07ae,null))[_0x743f('0x22')](function(_0x4f288d){if(_0x4f288d){_0x44e0dc=_0x4f288d;return db[_0x743f('0x8c')]['find']({'where':{'ContactId':_0x44e0dc['id'],'closed':![],'OpenchannelAccountId':_0x3e65c8['id']}})[_0x743f('0x22')](function(_0x13c55b){if(_0x13c55b){return[_0x13c55b,![]];}return db['OpenchannelInteraction'][_0x743f('0x5a')]({'UserId':_0x44d17d['user']['id'],'ContactId':_0x44e0dc['id'],'OpenchannelAccountId':_0x3e65c8['id'],'lastMsgDirection':_0x743f('0xb0'),'Messages':[_[_0x743f('0x51')](_0x44d17d[_0x743f('0x5b')],{'read':![],'body':_0x44d17d[_0x743f('0x5b')][_0x743f('0x5b')],'OpenchannelAccountId':_0x3e65c8['id'],'UserId':_0x44d17d[_0x743f('0x5c')]['id'],'ContactId':_0x44e0dc['id']})]},{'include':[{'model':db[_0x743f('0xb1')],'as':_0x743f('0xb2')}]})[_0x743f('0x22')](function(_0x41f8ee){return[_0x41f8ee,!![]];});});}})[_0x743f('0x8e')](function(_0x54284b,_0x4335a3){if(_0x4335a3){return _0x54284b;}return db[_0x743f('0xb1')][_0x743f('0x5a')](_[_0x743f('0x51')](_0x44d17d[_0x743f('0x5b')],{'read':![],'body':_0x44d17d[_0x743f('0x5b')][_0x743f('0x5b')],'OpenchannelAccountId':_0x3e65c8['id'],'OpenchannelInteractionId':_0x54284b['id'],'UserId':_0x44d17d[_0x743f('0x5c')]['id'],'ContactId':_0x44e0dc['id']}))['then'](function(_0x107b99){_0x54284b[_0x743f('0xb3')][_0x743f('0xb2')]=[];_0x54284b['dataValues'][_0x743f('0xb2')][_0x743f('0x93')](_0x107b99[_0x743f('0xb3')]);return _0x54284b;});});}})[_0x743f('0x22')](respondWithResult(_0x3e07ae,null))[_0x743f('0x2d')](handleError(_0x3e07ae,null));};
\ No newline at end of file
index 9c522b0..1590dfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa571=['hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelAccount','setMaxListeners','update','remove','emit'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xa571,0x107));var _0x1a57=function(_0x13400b,_0x50bdc6){_0x13400b=_0x13400b-0x0;var _0x36c777=_0xa571[_0x13400b];return _0x36c777;};'use strict';var EventEmitter=require(_0x1a57('0x0'));var OpenchannelAccount=require(_0x1a57('0x1'))['db'][_0x1a57('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x1a57('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1a57('0x4'),'afterDestroy':_0x1a57('0x5')};function emitEvent(_0x4d5f7a){return function(_0x5ec815,_0x1f2c44,_0x5067fa){OpenchannelAccountEvents[_0x1a57('0x6')](_0x4d5f7a+':'+_0x5ec815['id'],_0x5ec815);OpenchannelAccountEvents[_0x1a57('0x6')](_0x4d5f7a,_0x5ec815);_0x5067fa(null);};}for(var e in events){if(events[_0x1a57('0x7')](e)){var event=events[e];OpenchannelAccount[_0x1a57('0x8')](e,emitEvent(event));}}module[_0x1a57('0x9')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xb688=['../../mysqldb','OpenchannelAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x2d015c,_0x31bb7e){var _0x403093=function(_0x2dc795){while(--_0x2dc795){_0x2d015c['push'](_0x2d015c['shift']());}};_0x403093(++_0x31bb7e);}(_0xb688,0xcf));var _0x8b68=function(_0x2cebda,_0x38d823){_0x2cebda=_0x2cebda-0x0;var _0x29eb8e=_0xb688[_0x2cebda];return _0x29eb8e;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require(_0x8b68('0x0'))['db'][_0x8b68('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x8b68('0x2')](0x0);var events={'afterCreate':_0x8b68('0x3'),'afterUpdate':_0x8b68('0x4'),'afterDestroy':_0x8b68('0x5')};function emitEvent(_0x4e281c){return function(_0x41030e,_0x27925d,_0x30f33d){OpenchannelAccountEvents[_0x8b68('0x6')](_0x4e281c+':'+_0x41030e['id'],_0x41030e);OpenchannelAccountEvents['emit'](_0x4e281c,_0x41030e);_0x30f33d(null);};}for(var e in events){if(events[_0x8b68('0x7')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0x8b68('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
index e47503b..d6d721e 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(_0x4ab4c1,_0x52400d){var _0x220b4f=function(_0x547bf3){while(--_0x547bf3){_0x4ab4c1['push'](_0x4ab4c1['shift']());}};_0x220b4f(++_0x52400d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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(_0x357b3a,_0x467699){var _0x2cfa01=function(_0x97e89d){while(--_0x97e89d){_0x357b3a['push'](_0x357b3a['shift']());}};_0x2cfa01(++_0x467699);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'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 e440e19..5e1b0ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['OpenchannelAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','request','then','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x17abd9,_0x5dd6c1){_0x17abd9=_0x17abd9-0x0;var _0x4be5b1=_0x9ffd[_0x17abd9];return _0x4be5b1;};'use strict';var _=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var moment=require(_0xd9ff('0x2'));var BPromise=require('bluebird');var rs=require(_0xd9ff('0x3'));var fs=require('fs');var Redis=require(_0xd9ff('0x4'));var db=require(_0xd9ff('0x5'))['db'];var utils=require(_0xd9ff('0x6'));var logger=require('../../config/logger')(_0xd9ff('0x7'));var config=require(_0xd9ff('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd9ff('0x9')][_0xd9ff('0xa')]({'port':0x232a});config[_0xd9ff('0xb')]=_[_0xd9ff('0xc')](config[_0xd9ff('0xb')],{'host':_0xd9ff('0xd'),'port':0x18eb});var socket=require(_0xd9ff('0xe'))(new Redis(config[_0xd9ff('0xb')]));require(_0xd9ff('0xf'))['register'](socket);function respondWithRpcPromise(_0x54a555,_0x567f79,_0x5aa954){return new BPromise(function(_0x2355ab,_0x2fd77a){return client[_0xd9ff('0x10')](_0x54a555,_0x5aa954)[_0xd9ff('0x11')](function(_0x37d2c0){logger[_0xd9ff('0x12')](_0xd9ff('0x13'),_0x567f79,_0xd9ff('0x14'));logger['debug']('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x567f79,_0xd9ff('0x14'),JSON[_0xd9ff('0x15')](_0x37d2c0));if(_0x37d2c0[_0xd9ff('0x16')]){if(_0x37d2c0[_0xd9ff('0x16')][_0xd9ff('0x17')]===0x1f4){logger['error'](_0xd9ff('0x13'),_0x567f79,_0x37d2c0[_0xd9ff('0x16')]['message']);return _0x2fd77a(_0x37d2c0[_0xd9ff('0x16')]['message']);}logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x567f79,_0x37d2c0['error'][_0xd9ff('0x18')]);return _0x2355ab(_0x37d2c0['error'][_0xd9ff('0x18')]);}else{logger[_0xd9ff('0x12')](_0xd9ff('0x13'),_0x567f79,_0xd9ff('0x14'));_0x2355ab(_0x37d2c0[_0xd9ff('0x19')][_0xd9ff('0x18')]);}})[_0xd9ff('0x1a')](function(_0x128588){logger[_0xd9ff('0x16')](_0xd9ff('0x13'),_0x567f79,_0x128588);_0x2fd77a(_0x128588);});});}
\ No newline at end of file
+var _0x2e54=['client','http','defaults','localhost','redis','./openchannelAccount.socket','register','request','info','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','result','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x5608a3,_0x535ba9){var _0x57cf98=function(_0x2400e3){while(--_0x2400e3){_0x5608a3['push'](_0x5608a3['shift']());}};_0x57cf98(++_0x535ba9);}(_0x2e54,0x1dd));var _0x42e5=function(_0x259c4d,_0x110464){_0x259c4d=_0x259c4d-0x0;var _0x104697=_0x2e54[_0x259c4d];return _0x104697;};'use strict';var _=require(_0x42e5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x42e5('0x1'));var rs=require(_0x42e5('0x2'));var fs=require('fs');var Redis=require(_0x42e5('0x3'));var db=require(_0x42e5('0x4'))['db'];var utils=require(_0x42e5('0x5'));var logger=require(_0x42e5('0x6'))(_0x42e5('0x7'));var config=require('../../config/environment');var jayson=require(_0x42e5('0x8'));var client=jayson[_0x42e5('0x9')][_0x42e5('0xa')]({'port':0x232a});config['redis']=_[_0x42e5('0xb')](config['redis'],{'host':_0x42e5('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x42e5('0xd')]));require(_0x42e5('0xe'))[_0x42e5('0xf')](socket);function respondWithRpcPromise(_0x15f9f1,_0x206bf3,_0x1e5d2d){return new BPromise(function(_0xe1ab4b,_0x2fa2f0){return client[_0x42e5('0x10')](_0x15f9f1,_0x1e5d2d)['then'](function(_0x456298){logger[_0x42e5('0x11')]('OpenchannelAccount,\x20%s,\x20%s',_0x206bf3,_0x42e5('0x12'));logger[_0x42e5('0x13')](_0x42e5('0x14'),_0x206bf3,_0x42e5('0x12'),JSON[_0x42e5('0x15')](_0x456298));if(_0x456298[_0x42e5('0x16')]){if(_0x456298[_0x42e5('0x16')][_0x42e5('0x17')]===0x1f4){logger[_0x42e5('0x16')](_0x42e5('0x18'),_0x206bf3,_0x456298['error'][_0x42e5('0x19')]);return _0x2fa2f0(_0x456298[_0x42e5('0x16')][_0x42e5('0x19')]);}logger[_0x42e5('0x16')](_0x42e5('0x18'),_0x206bf3,_0x456298[_0x42e5('0x16')][_0x42e5('0x19')]);return _0xe1ab4b(_0x456298[_0x42e5('0x16')][_0x42e5('0x19')]);}else{logger[_0x42e5('0x11')](_0x42e5('0x18'),_0x206bf3,_0x42e5('0x12'));_0xe1ab4b(_0x456298[_0x42e5('0x1a')][_0x42e5('0x19')]);}})['catch'](function(_0x1460c0){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x206bf3,_0x1460c0);_0x2fa2f0(_0x1460c0);});});}
\ No newline at end of file
index e5cc6a1..226fcc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x028d=['register','length','openchannelAccount:','save','remove','emit'];(function(_0x54b0cc,_0x59857d){var _0x246277=function(_0x113710){while(--_0x113710){_0x54b0cc['push'](_0x54b0cc['shift']());}};_0x246277(++_0x59857d);}(_0x028d,0xff));var _0xd028=function(_0x586319,_0xf3ac9a){_0x586319=_0x586319-0x0;var _0x2127d2=_0x028d[_0x586319];return _0x2127d2;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0xd028('0x0'),_0xd028('0x1'),'update'];function createListener(_0x35e90f,_0x362847){return function(_0x157cf4){_0x362847[_0xd028('0x2')](_0x35e90f,_0x157cf4);};}function removeListener(_0x2dc43c,_0x67d150){return function(){OpenchannelAccountEvents['removeListener'](_0x2dc43c,_0x67d150);};}exports[_0xd028('0x3')]=function(_0x4592fd){for(var _0x20588f=0x0,_0x35b879=events[_0xd028('0x4')];_0x20588f<_0x35b879;_0x20588f++){var _0xb35f34=events[_0x20588f];var _0xab6e68=createListener(_0xd028('0x5')+_0xb35f34,_0x4592fd);OpenchannelAccountEvents['on'](_0xb35f34,_0xab6e68);}};
\ No newline at end of file
+var _0x55ea=['remove','emit','removeListener','length','openchannelAccount:','./openchannelAccount.events','save'];(function(_0x4d7f3f,_0x4d2803){var _0x5d67cc=function(_0x2c37f4){while(--_0x2c37f4){_0x4d7f3f['push'](_0x4d7f3f['shift']());}};_0x5d67cc(++_0x4d2803);}(_0x55ea,0xc9));var _0xa55e=function(_0x185678,_0x11d999){_0x185678=_0x185678-0x0;var _0x419103=_0x55ea[_0x185678];return _0x419103;};'use strict';var OpenchannelAccountEvents=require(_0xa55e('0x0'));var events=[_0xa55e('0x1'),_0xa55e('0x2'),'update'];function createListener(_0x2b5bc7,_0x26b2ef){return function(_0x17dd4d){_0x26b2ef[_0xa55e('0x3')](_0x2b5bc7,_0x17dd4d);};}function removeListener(_0x95af3d,_0x54f178){return function(){OpenchannelAccountEvents[_0xa55e('0x4')](_0x95af3d,_0x54f178);};}exports['register']=function(_0x515646){for(var _0x588751=0x0,_0x5a009c=events[_0xa55e('0x5')];_0x588751<_0x5a009c;_0x588751++){var _0x20f2ac=events[_0x588751];var _0x30b885=createListener(_0xa55e('0x6')+_0x20f2ac,_0x515646);OpenchannelAccountEvents['on'](_0x20f2ac,_0x30b885);}};
\ No newline at end of file
index 57d529c..0e5e7ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eb4=['post','create','put','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./openchannelApplication.controller','get','isAuthenticated','index','/:id','show'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0x1eb4,0x83));var _0x41eb=function(_0x288f31,_0x3b17c9){_0x288f31=_0x288f31-0x0;var _0x43974c=_0x1eb4[_0x288f31];return _0x43974c;};'use strict';var multer=require(_0x41eb('0x0'));var util=require('util');var path=require(_0x41eb('0x1'));var timeout=require(_0x41eb('0x2'));var express=require(_0x41eb('0x3'));var router=express[_0x41eb('0x4')]();var fs_extra=require(_0x41eb('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x41eb('0x6'));var config=require('../../config/environment');var controller=require(_0x41eb('0x7'));router[_0x41eb('0x8')]('/',auth[_0x41eb('0x9')](),controller[_0x41eb('0xa')]);router[_0x41eb('0x8')](_0x41eb('0xb'),auth['isAuthenticated'](),controller[_0x41eb('0xc')]);router[_0x41eb('0xd')]('/',auth[_0x41eb('0x9')](),controller[_0x41eb('0xe')]);router[_0x41eb('0xf')](_0x41eb('0xb'),auth[_0x41eb('0x9')](),controller['update']);router[_0x41eb('0x10')]('/:id',auth[_0x41eb('0x9')](),controller['destroy']);module[_0x41eb('0x11')]=router;
\ No newline at end of file
+var _0x642e=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','create','update','delete','destroy','exports','multer','util','connect-timeout','Router'];(function(_0x35faf2,_0x56a899){var _0x113601=function(_0x386004){while(--_0x386004){_0x35faf2['push'](_0x35faf2['shift']());}};_0x113601(++_0x56a899);}(_0x642e,0x119));var _0xe642=function(_0x4a10af,_0x4a225f){_0x4a10af=_0x4a10af-0x0;var _0x46b257=_0x642e[_0x4a10af];return _0x46b257;};'use strict';var multer=require(_0xe642('0x0'));var util=require(_0xe642('0x1'));var path=require('path');var timeout=require(_0xe642('0x2'));var express=require('express');var router=express[_0xe642('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xe642('0x4'));var config=require(_0xe642('0x5'));var controller=require('./openchannelApplication.controller');router[_0xe642('0x6')]('/',auth[_0xe642('0x7')](),controller[_0xe642('0x8')]);router[_0xe642('0x6')](_0xe642('0x9'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xe642('0x7')](),controller[_0xe642('0xa')]);router['put'](_0xe642('0x9'),auth[_0xe642('0x7')](),controller[_0xe642('0xb')]);router[_0xe642('0xc')](_0xe642('0x9'),auth[_0xe642('0x7')](),controller[_0xe642('0xd')]);module[_0xe642('0xe')]=router;
\ No newline at end of file
index f890f9c..110bcc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49db=['exports','INTEGER','STRING','noop','*,*,*,*','sequelize'];(function(_0x10fd35,_0x1cde71){var _0x4a5686=function(_0x42f8e6){while(--_0x42f8e6){_0x10fd35['push'](_0x10fd35['shift']());}};_0x4a5686(++_0x1cde71);}(_0x49db,0xc5));var _0xb49d=function(_0x304db2,_0x555667){_0x304db2=_0x304db2-0x0;var _0x6e8220=_0x49db[_0x304db2];return _0x6e8220;};'use strict';var Sequelize=require(_0xb49d('0x0'));module[_0xb49d('0x1')]={'priority':{'type':Sequelize[_0xb49d('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xb49d('0x3')],'allowNull':![],'defaultValue':_0xb49d('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xb49d('0x3')]},'interval':{'type':Sequelize[_0xb49d('0x3')],'defaultValue':_0xb49d('0x5')}};
\ No newline at end of file
+var _0x8a42=['STRING','noop','TEXT','sequelize','INTEGER'];(function(_0x1218e8,_0x2336dc){var _0x2a6a89=function(_0x3bf793){while(--_0x3bf793){_0x1218e8['push'](_0x1218e8['shift']());}};_0x2a6a89(++_0x2336dc);}(_0x8a42,0x80));var _0x28a4=function(_0x38a755,_0x1187e5){_0x38a755=_0x38a755-0x0;var _0x3d9735=_0x8a42[_0x38a755];return _0x3d9735;};'use strict';var Sequelize=require(_0x28a4('0x0'));module['exports']={'priority':{'type':Sequelize[_0x28a4('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x28a4('0x2')],'allowNull':![],'defaultValue':_0x28a4('0x3')},'appdata':{'type':Sequelize[_0x28a4('0x4')]()},'description':{'type':Sequelize[_0x28a4('0x2')]},'interval':{'type':Sequelize[_0x28a4('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 617df2f..7e53c5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e50=['offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','name','send','index','map','OpenchannelApplication','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','catch','show','params','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json'];(function(_0x2e3282,_0x28b367){var _0x2cc760=function(_0x35076f){while(--_0x35076f){_0x2e3282['push'](_0x2e3282['shift']());}};_0x2cc760(++_0x28b367);}(_0x2e50,0x1e6));var _0x02e5=function(_0x5d6e30,_0xc21d51){_0x5d6e30=_0x5d6e30-0x0;var _0x3d3f3b=_0x2e50[_0x5d6e30];return _0x3d3f3b;};'use strict';var emlformat=require(_0x02e5('0x0'));var rimraf=require(_0x02e5('0x1'));var zipdir=require(_0x02e5('0x2'));var jsonpatch=require(_0x02e5('0x3'));var rp=require(_0x02e5('0x4'));var moment=require(_0x02e5('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x02e5('0x6'));var path=require(_0x02e5('0x7'));var sox=require(_0x02e5('0x8'));var csv=require(_0x02e5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x02e5('0xa'));var _=require(_0x02e5('0xb'));var squel=require('squel');var crypto=require(_0x02e5('0xc'));var jsforce=require(_0x02e5('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x02e5('0x9'));var querystring=require('querystring');var Papa=require(_0x02e5('0xe'));var Redis=require(_0x02e5('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x02e5('0x10'));var as=require(_0x02e5('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x02e5('0x12'))(_0x02e5('0x13'));var utils=require(_0x02e5('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x02e5('0x15'))['db'];function respondWithStatusCode(_0x326a3f,_0x4753bb){_0x4753bb=_0x4753bb||0xcc;return function(_0x208201){if(_0x208201){return _0x326a3f['sendStatus'](_0x4753bb);}return _0x326a3f[_0x02e5('0x16')](_0x4753bb)[_0x02e5('0x17')]();};}function respondWithResult(_0x4523ce,_0x374529){_0x374529=_0x374529||0xc8;return function(_0x50061e){if(_0x50061e){return _0x4523ce[_0x02e5('0x16')](_0x374529)[_0x02e5('0x18')](_0x50061e);}};}function respondWithFilteredResult(_0x413891,_0x432b73){return function(_0x2e8450){if(_0x2e8450){var _0x4c8530=typeof _0x432b73[_0x02e5('0x19')]===_0x02e5('0x1a')&&typeof _0x432b73[_0x02e5('0x1b')]===_0x02e5('0x1a');var _0x3d6920=_0x2e8450['count'];var _0xf50a43=_0x4c8530?0x0:_0x432b73[_0x02e5('0x19')];var _0x3a86ca=_0x4c8530?_0x2e8450[_0x02e5('0x1c')]:_0x432b73['offset']+_0x432b73[_0x02e5('0x1b')];var _0x52f068;if(_0x3a86ca>=_0x3d6920){_0x3a86ca=_0x3d6920;_0x52f068=0xc8;}else{_0x52f068=0xce;}_0x413891['status'](_0x52f068);return _0x413891[_0x02e5('0x1d')](_0x02e5('0x1e'),_0xf50a43+'-'+_0x3a86ca+'/'+_0x3d6920)[_0x02e5('0x18')](_0x2e8450);}return null;};}function patchUpdates(_0x102f6c){return function(_0x1343c3){try{jsonpatch[_0x02e5('0x1f')](_0x1343c3,_0x102f6c,!![]);}catch(_0x48e382){return BPromise['reject'](_0x48e382);}return _0x1343c3[_0x02e5('0x20')]();};}function saveUpdates(_0x50f34a,_0xd52f02){return function(_0x459427){if(_0x459427){return _0x459427[_0x02e5('0x21')](_0x50f34a)[_0x02e5('0x22')](function(_0x5a417a){return _0x5a417a;});}return null;};}function removeEntity(_0x18fa77,_0x4fcbb0){return function(_0x4c9713){if(_0x4c9713){return _0x4c9713[_0x02e5('0x23')]()[_0x02e5('0x22')](function(){_0x18fa77[_0x02e5('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18b78b,_0x16fa70){return function(_0xff10d9){if(!_0xff10d9){_0x18b78b[_0x02e5('0x24')](0x194);}return _0xff10d9;};}function handleError(_0x131804,_0x417f30){_0x417f30=_0x417f30||0x1f4;return function(_0x30412d){logger[_0x02e5('0x25')](_0x30412d['stack']);if(_0x30412d[_0x02e5('0x26')]){delete _0x30412d[_0x02e5('0x26')];}_0x131804[_0x02e5('0x16')](_0x417f30)[_0x02e5('0x27')](_0x30412d);};}exports[_0x02e5('0x28')]=function(_0x4677e3,_0x1336b1){var _0x3b1aea={},_0xffee29={},_0x3cbda0={'count':0x0,'rows':[]};var _0x32de9f=_[_0x02e5('0x29')](db[_0x02e5('0x2a')][_0x02e5('0x2b')],function(_0xedbe6f){return{'name':_0xedbe6f[_0x02e5('0x2c')],'type':_0xedbe6f['type'][_0x02e5('0x2d')]};});_0xffee29[_0x02e5('0x2e')]=_[_0x02e5('0x29')](_0x32de9f,_0x02e5('0x26'));_0xffee29[_0x02e5('0x2f')]=_[_0x02e5('0x30')](_0x4677e3[_0x02e5('0x2f')]);_0xffee29['filters']=_[_0x02e5('0x31')](_0xffee29['model'],_0xffee29['query']);_0x3b1aea[_0x02e5('0x32')]=_[_0x02e5('0x31')](_0xffee29[_0x02e5('0x2e')],qs[_0x02e5('0x33')](_0x4677e3[_0x02e5('0x2f')][_0x02e5('0x33')]));_0x3b1aea['attributes']=_0x3b1aea['attributes'][_0x02e5('0x34')]?_0x3b1aea[_0x02e5('0x32')]:_0xffee29['model'];if(!_0x4677e3[_0x02e5('0x2f')][_0x02e5('0x35')](_0x02e5('0x36'))){_0x3b1aea[_0x02e5('0x1b')]=qs[_0x02e5('0x1b')](_0x4677e3[_0x02e5('0x2f')][_0x02e5('0x1b')]);_0x3b1aea['offset']=qs[_0x02e5('0x19')](_0x4677e3[_0x02e5('0x2f')][_0x02e5('0x19')]);}_0x3b1aea[_0x02e5('0x37')]=qs['sort'](_0x4677e3['query'][_0x02e5('0x38')]);_0x3b1aea[_0x02e5('0x39')]=qs[_0x02e5('0x3a')](_[_0x02e5('0x3b')](_0x4677e3[_0x02e5('0x2f')],_0xffee29[_0x02e5('0x3a')]),_0x32de9f);if(_0x4677e3[_0x02e5('0x2f')][_0x02e5('0x3c')]){_0x3b1aea['where']=_[_0x02e5('0x3d')](_0x3b1aea[_0x02e5('0x39')],{'$or':_[_0x02e5('0x29')](_0x32de9f,function(_0x495139){if(_0x495139[_0x02e5('0x3e')]!==_0x02e5('0x3f')){var _0xfb16c2={};_0xfb16c2[_0x495139[_0x02e5('0x26')]]={'$like':'%'+_0x4677e3[_0x02e5('0x2f')][_0x02e5('0x3c')]+'%'};return _0xfb16c2;}})});}_0x3b1aea=_[_0x02e5('0x3d')]({},_0x3b1aea,_0x4677e3[_0x02e5('0x40')]);var _0x21315d={'where':_0x3b1aea[_0x02e5('0x39')]};return db[_0x02e5('0x2a')][_0x02e5('0x1c')](_0x21315d)[_0x02e5('0x22')](function(_0x26e0c6){_0x3cbda0[_0x02e5('0x1c')]=_0x26e0c6;if(_0x4677e3['query'][_0x02e5('0x41')]){_0x3b1aea[_0x02e5('0x42')]=[{'all':!![]}];}return db[_0x02e5('0x2a')]['findAll'](_0x3b1aea);})[_0x02e5('0x22')](function(_0x5da697){_0x3cbda0['rows']=_0x5da697;return _0x3cbda0;})['then'](respondWithFilteredResult(_0x1336b1,_0x3b1aea))[_0x02e5('0x43')](handleError(_0x1336b1,null));};exports[_0x02e5('0x44')]=function(_0x25973a,_0x29bb2e){var _0xac902c={'raw':!![],'where':{'id':_0x25973a[_0x02e5('0x45')]['id']}},_0x1c03cb={};_0x1c03cb['model']=_[_0x02e5('0x30')](db[_0x02e5('0x2a')][_0x02e5('0x2b')]);_0x1c03cb[_0x02e5('0x2f')]=_[_0x02e5('0x30')](_0x25973a[_0x02e5('0x2f')]);_0x1c03cb[_0x02e5('0x3a')]=_['intersection'](_0x1c03cb['model'],_0x1c03cb[_0x02e5('0x2f')]);_0xac902c[_0x02e5('0x32')]=_[_0x02e5('0x31')](_0x1c03cb[_0x02e5('0x2e')],qs['fields'](_0x25973a[_0x02e5('0x2f')][_0x02e5('0x33')]));_0xac902c[_0x02e5('0x32')]=_0xac902c['attributes']['length']?_0xac902c[_0x02e5('0x32')]:_0x1c03cb['model'];if(_0x25973a['query']['includeAll']){_0xac902c['include']=[{'all':!![]}];}_0xac902c=_['merge']({},_0xac902c,_0x25973a[_0x02e5('0x40')]);return db[_0x02e5('0x2a')]['find'](_0xac902c)['then'](handleEntityNotFound(_0x29bb2e,null))[_0x02e5('0x22')](respondWithResult(_0x29bb2e,null))[_0x02e5('0x43')](handleError(_0x29bb2e,null));};exports[_0x02e5('0x46')]=function(_0x54c607,_0x5753db){return db[_0x02e5('0x2a')][_0x02e5('0x46')](_0x54c607['body'],{})[_0x02e5('0x22')](respondWithResult(_0x5753db,0xc9))['catch'](handleError(_0x5753db,null));};exports[_0x02e5('0x21')]=function(_0x3b0c5b,_0xe5f6f2){if(_0x3b0c5b['body']['id']){delete _0x3b0c5b[_0x02e5('0x47')]['id'];}return db[_0x02e5('0x2a')][_0x02e5('0x48')]({'where':{'id':_0x3b0c5b[_0x02e5('0x45')]['id']}})[_0x02e5('0x22')](handleEntityNotFound(_0xe5f6f2,null))[_0x02e5('0x22')](saveUpdates(_0x3b0c5b[_0x02e5('0x47')],null))[_0x02e5('0x22')](respondWithResult(_0xe5f6f2,null))['catch'](handleError(_0xe5f6f2,null));};exports[_0x02e5('0x23')]=function(_0x53e77f,_0x2f9cbd){return db[_0x02e5('0x2a')][_0x02e5('0x48')]({'where':{'id':_0x53e77f[_0x02e5('0x45')]['id']}})['then'](handleEntityNotFound(_0x2f9cbd,null))['then'](removeEntity(_0x2f9cbd,null))[_0x02e5('0x43')](handleError(_0x2f9cbd,null));};
\ No newline at end of file
+var _0x11ed=['../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','sendStatus','name','send','index','OpenchannelApplication','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','find','create','body','catch','update','params','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils'];(function(_0x183ee1,_0x52d9d5){var _0x9fa479=function(_0x264788){while(--_0x264788){_0x183ee1['push'](_0x183ee1['shift']());}};_0x9fa479(++_0x52d9d5);}(_0x11ed,0x11a));var _0xd11e=function(_0x140991,_0xa0456b){_0x140991=_0x140991-0x0;var _0x45cfed=_0x11ed[_0x140991];return _0x45cfed;};'use strict';var emlformat=require(_0xd11e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd11e('0x1'));var jsonpatch=require(_0xd11e('0x2'));var rp=require('request-promise');var moment=require(_0xd11e('0x3'));var BPromise=require(_0xd11e('0x4'));var Mustache=require(_0xd11e('0x5'));var util=require('util');var path=require(_0xd11e('0x6'));var sox=require('sox');var csv=require(_0xd11e('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd11e('0x8'));var _=require(_0xd11e('0x9'));var squel=require(_0xd11e('0xa'));var crypto=require('crypto');var jsforce=require(_0xd11e('0xb'));var deskjs=require(_0xd11e('0xc'));var toCsv=require(_0xd11e('0x7'));var querystring=require(_0xd11e('0xd'));var Papa=require(_0xd11e('0xe'));var Redis=require(_0xd11e('0xf'));var authService=require(_0xd11e('0x10'));var qs=require(_0xd11e('0x11'));var as=require(_0xd11e('0x12'));var hardwareService=require(_0xd11e('0x13'));var logger=require(_0xd11e('0x14'))('api');var utils=require(_0xd11e('0x15'));var config=require(_0xd11e('0x16'));var licenseUtil=require(_0xd11e('0x17'));var db=require(_0xd11e('0x18'))['db'];function respondWithStatusCode(_0x5386ec,_0x5c1545){_0x5c1545=_0x5c1545||0xcc;return function(_0x4f4174){if(_0x4f4174){return _0x5386ec['sendStatus'](_0x5c1545);}return _0x5386ec[_0xd11e('0x19')](_0x5c1545)[_0xd11e('0x1a')]();};}function respondWithResult(_0x4e0bcc,_0x175512){_0x175512=_0x175512||0xc8;return function(_0x55aaff){if(_0x55aaff){return _0x4e0bcc[_0xd11e('0x19')](_0x175512)['json'](_0x55aaff);}};}function respondWithFilteredResult(_0x2e74e8,_0x49b4c5){return function(_0x14905f){if(_0x14905f){var _0x442cf0=typeof _0x49b4c5[_0xd11e('0x1b')]===_0xd11e('0x1c')&&typeof _0x49b4c5[_0xd11e('0x1d')]===_0xd11e('0x1c');var _0x9180c2=_0x14905f[_0xd11e('0x1e')];var _0x512195=_0x442cf0?0x0:_0x49b4c5['offset'];var _0x2e3301=_0x442cf0?_0x14905f['count']:_0x49b4c5[_0xd11e('0x1b')]+_0x49b4c5['limit'];var _0x2f437b;if(_0x2e3301>=_0x9180c2){_0x2e3301=_0x9180c2;_0x2f437b=0xc8;}else{_0x2f437b=0xce;}_0x2e74e8['status'](_0x2f437b);return _0x2e74e8[_0xd11e('0x1f')](_0xd11e('0x20'),_0x512195+'-'+_0x2e3301+'/'+_0x9180c2)[_0xd11e('0x21')](_0x14905f);}return null;};}function patchUpdates(_0x536fec){return function(_0x27892d){try{jsonpatch[_0xd11e('0x22')](_0x27892d,_0x536fec,!![]);}catch(_0x1cfbc5){return BPromise[_0xd11e('0x23')](_0x1cfbc5);}return _0x27892d[_0xd11e('0x24')]();};}function saveUpdates(_0x15ab9d,_0x366cec){return function(_0x2fb44f){if(_0x2fb44f){return _0x2fb44f['update'](_0x15ab9d)[_0xd11e('0x25')](function(_0x2d5879){return _0x2d5879;});}return null;};}function removeEntity(_0x324ce2,_0x1a8c1f){return function(_0x3d97a9){if(_0x3d97a9){return _0x3d97a9['destroy']()[_0xd11e('0x25')](function(){_0x324ce2['status'](0xcc)[_0xd11e('0x1a')]();});}};}function handleEntityNotFound(_0x3770bc,_0x563521){return function(_0x1d1bc5){if(!_0x1d1bc5){_0x3770bc[_0xd11e('0x26')](0x194);}return _0x1d1bc5;};}function handleError(_0x3d13aa,_0x24bf7f){_0x24bf7f=_0x24bf7f||0x1f4;return function(_0x1792e4){logger['error'](_0x1792e4['stack']);if(_0x1792e4['name']){delete _0x1792e4[_0xd11e('0x27')];}_0x3d13aa['status'](_0x24bf7f)[_0xd11e('0x28')](_0x1792e4);};}exports[_0xd11e('0x29')]=function(_0x25c778,_0x187f1f){var _0x506f4a={},_0x19ca42={},_0x16e4ee={'count':0x0,'rows':[]};var _0x1cd44d=_['map'](db[_0xd11e('0x2a')][_0xd11e('0x2b')],function(_0x1fdfe5){return{'name':_0x1fdfe5[_0xd11e('0x2c')],'type':_0x1fdfe5[_0xd11e('0x2d')][_0xd11e('0x2e')]};});_0x19ca42[_0xd11e('0x2f')]=_[_0xd11e('0x30')](_0x1cd44d,'name');_0x19ca42[_0xd11e('0x31')]=_[_0xd11e('0x32')](_0x25c778[_0xd11e('0x31')]);_0x19ca42[_0xd11e('0x33')]=_[_0xd11e('0x34')](_0x19ca42[_0xd11e('0x2f')],_0x19ca42[_0xd11e('0x31')]);_0x506f4a[_0xd11e('0x35')]=_[_0xd11e('0x34')](_0x19ca42[_0xd11e('0x2f')],qs['fields'](_0x25c778[_0xd11e('0x31')][_0xd11e('0x36')]));_0x506f4a[_0xd11e('0x35')]=_0x506f4a[_0xd11e('0x35')][_0xd11e('0x37')]?_0x506f4a[_0xd11e('0x35')]:_0x19ca42['model'];if(!_0x25c778[_0xd11e('0x31')][_0xd11e('0x38')](_0xd11e('0x39'))){_0x506f4a[_0xd11e('0x1d')]=qs['limit'](_0x25c778[_0xd11e('0x31')]['limit']);_0x506f4a[_0xd11e('0x1b')]=qs['offset'](_0x25c778[_0xd11e('0x31')][_0xd11e('0x1b')]);}_0x506f4a[_0xd11e('0x3a')]=qs[_0xd11e('0x3b')](_0x25c778[_0xd11e('0x31')]['sort']);_0x506f4a[_0xd11e('0x3c')]=qs[_0xd11e('0x33')](_[_0xd11e('0x3d')](_0x25c778['query'],_0x19ca42[_0xd11e('0x33')]),_0x1cd44d);if(_0x25c778['query'][_0xd11e('0x3e')]){_0x506f4a[_0xd11e('0x3c')]=_[_0xd11e('0x3f')](_0x506f4a['where'],{'$or':_['map'](_0x1cd44d,function(_0x5f31e3){if(_0x5f31e3[_0xd11e('0x2d')]!==_0xd11e('0x40')){var _0x480dfe={};_0x480dfe[_0x5f31e3[_0xd11e('0x27')]]={'$like':'%'+_0x25c778[_0xd11e('0x31')][_0xd11e('0x3e')]+'%'};return _0x480dfe;}})});}_0x506f4a=_[_0xd11e('0x3f')]({},_0x506f4a,_0x25c778[_0xd11e('0x41')]);var _0x29cb16={'where':_0x506f4a[_0xd11e('0x3c')]};return db[_0xd11e('0x2a')][_0xd11e('0x1e')](_0x29cb16)['then'](function(_0x75fdb9){_0x16e4ee[_0xd11e('0x1e')]=_0x75fdb9;if(_0x25c778[_0xd11e('0x31')][_0xd11e('0x42')]){_0x506f4a[_0xd11e('0x43')]=[{'all':!![]}];}return db[_0xd11e('0x2a')][_0xd11e('0x44')](_0x506f4a);})[_0xd11e('0x25')](function(_0x4a5915){_0x16e4ee[_0xd11e('0x45')]=_0x4a5915;return _0x16e4ee;})['then'](respondWithFilteredResult(_0x187f1f,_0x506f4a))['catch'](handleError(_0x187f1f,null));};exports['show']=function(_0x24e4e0,_0x3d86cc){var _0xfc6877={'raw':!![],'where':{'id':_0x24e4e0['params']['id']}},_0x527686={};_0x527686[_0xd11e('0x2f')]=_[_0xd11e('0x32')](db[_0xd11e('0x2a')][_0xd11e('0x2b')]);_0x527686[_0xd11e('0x31')]=_[_0xd11e('0x32')](_0x24e4e0[_0xd11e('0x31')]);_0x527686['filters']=_[_0xd11e('0x34')](_0x527686[_0xd11e('0x2f')],_0x527686[_0xd11e('0x31')]);_0xfc6877[_0xd11e('0x35')]=_[_0xd11e('0x34')](_0x527686[_0xd11e('0x2f')],qs[_0xd11e('0x36')](_0x24e4e0[_0xd11e('0x31')][_0xd11e('0x36')]));_0xfc6877['attributes']=_0xfc6877[_0xd11e('0x35')][_0xd11e('0x37')]?_0xfc6877[_0xd11e('0x35')]:_0x527686[_0xd11e('0x2f')];if(_0x24e4e0[_0xd11e('0x31')]['includeAll']){_0xfc6877['include']=[{'all':!![]}];}_0xfc6877=_['merge']({},_0xfc6877,_0x24e4e0['options']);return db[_0xd11e('0x2a')][_0xd11e('0x46')](_0xfc6877)[_0xd11e('0x25')](handleEntityNotFound(_0x3d86cc,null))[_0xd11e('0x25')](respondWithResult(_0x3d86cc,null))['catch'](handleError(_0x3d86cc,null));};exports['create']=function(_0x1c4b31,_0x47a4ac){return db[_0xd11e('0x2a')][_0xd11e('0x47')](_0x1c4b31[_0xd11e('0x48')],{})['then'](respondWithResult(_0x47a4ac,0xc9))[_0xd11e('0x49')](handleError(_0x47a4ac,null));};exports[_0xd11e('0x4a')]=function(_0x605f32,_0x215b63){if(_0x605f32[_0xd11e('0x48')]['id']){delete _0x605f32[_0xd11e('0x48')]['id'];}return db[_0xd11e('0x2a')]['find']({'where':{'id':_0x605f32[_0xd11e('0x4b')]['id']}})[_0xd11e('0x25')](handleEntityNotFound(_0x215b63,null))['then'](saveUpdates(_0x605f32['body'],null))[_0xd11e('0x25')](respondWithResult(_0x215b63,null))['catch'](handleError(_0x215b63,null));};exports['destroy']=function(_0xd1635a,_0x38aebf){return db[_0xd11e('0x2a')][_0xd11e('0x46')]({'where':{'id':_0xd1635a[_0xd11e('0x4b')]['id']}})[_0xd11e('0x25')](handleEntityNotFound(_0x38aebf,null))['then'](removeEntity(_0x38aebf,null))[_0xd11e('0x49')](handleError(_0x38aebf,null));};
\ No newline at end of file
index 826af42..cd73508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0c6=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0xb301d4,_0x27ed18){var _0x3b5bde=function(_0x1fbc5f){while(--_0x1fbc5f){_0xb301d4['push'](_0xb301d4['shift']());}};_0x3b5bde(++_0x27ed18);}(_0xc0c6,0x139));var _0x6c0c=function(_0xaf3871,_0x4f9558){_0xaf3871=_0xaf3871-0x0;var _0xa259f5=_0xc0c6[_0xaf3871];return _0xa259f5;};'use strict';var _=require(_0x6c0c('0x0'));var util=require(_0x6c0c('0x1'));var logger=require(_0x6c0c('0x2'))(_0x6c0c('0x3'));var moment=require(_0x6c0c('0x4'));var BPromise=require(_0x6c0c('0x5'));var rp=require(_0x6c0c('0x6'));var fs=require('fs');var path=require(_0x6c0c('0x7'));var rimraf=require(_0x6c0c('0x8'));var config=require('../../config/environment');var attributes=require('./openchannelApplication.attributes');module[_0x6c0c('0x9')]=function(_0x18905c,_0x158169){return _0x18905c[_0x6c0c('0xa')]('OpenchannelApplication',attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x6c0c('0xb')});};
\ No newline at end of file
+var _0x272b=['OpenchannelApplication','openchannel_applications','utf8mb4','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment','./openchannelApplication.attributes','exports','define'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x272b,0x1a3));var _0xb272=function(_0xdd82b4,_0x5cd8b8){_0xdd82b4=_0xdd82b4-0x0;var _0x549bb2=_0x272b[_0xdd82b4];return _0x549bb2;};'use strict';var _=require(_0xb272('0x0'));var util=require('util');var logger=require(_0xb272('0x1'))(_0xb272('0x2'));var moment=require(_0xb272('0x3'));var BPromise=require(_0xb272('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb272('0x5'));var rimraf=require('rimraf');var config=require(_0xb272('0x6'));var attributes=require(_0xb272('0x7'));module[_0xb272('0x8')]=function(_0x41c115,_0x4d1157){return _0x41c115[_0xb272('0x9')](_0xb272('0xa'),attributes,{'tableName':_0xb272('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb272('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 8a4e78c..bb09868 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a01=['UpdateOpenchannelApplication','options','where','attributes','limit','then','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelApplication,\x20%s,\x20%s','message','result'];(function(_0x1bddc8,_0x31c45f){var _0x2aef3d=function(_0x151dec){while(--_0x151dec){_0x1bddc8['push'](_0x1bddc8['shift']());}};_0x2aef3d(++_0x31c45f);}(_0x3a01,0x13f));var _0x13a0=function(_0x51048f,_0xadb01d){_0x51048f=_0x51048f-0x0;var _0x480419=_0x3a01[_0x51048f];return _0x480419;};'use strict';var _=require(_0x13a0('0x0'));var util=require(_0x13a0('0x1'));var moment=require(_0x13a0('0x2'));var BPromise=require(_0x13a0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13a0('0x4'));var db=require(_0x13a0('0x5'))['db'];var utils=require(_0x13a0('0x6'));var logger=require(_0x13a0('0x7'))('rpc');var config=require(_0x13a0('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x31152e,_0x436be1,_0x57cb5c){return new BPromise(function(_0x3bf794,_0x4fca3c){return client['request'](_0x31152e,_0x57cb5c)['then'](function(_0x17a1a5){logger[_0x13a0('0x9')]('OpenchannelApplication,\x20%s,\x20%s',_0x436be1,_0x13a0('0xa'));logger[_0x13a0('0xb')](_0x13a0('0xc'),_0x436be1,_0x13a0('0xa'),JSON[_0x13a0('0xd')](_0x17a1a5));if(_0x17a1a5[_0x13a0('0xe')]){if(_0x17a1a5['error'][_0x13a0('0xf')]===0x1f4){logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x436be1,_0x17a1a5[_0x13a0('0xe')]['message']);return _0x4fca3c(_0x17a1a5[_0x13a0('0xe')]['message']);}logger[_0x13a0('0xe')](_0x13a0('0x10'),_0x436be1,_0x17a1a5['error'][_0x13a0('0x11')]);return _0x3bf794(_0x17a1a5[_0x13a0('0xe')][_0x13a0('0x11')]);}else{logger[_0x13a0('0x9')]('OpenchannelApplication,\x20%s,\x20%s',_0x436be1,_0x13a0('0xa'));_0x3bf794(_0x17a1a5[_0x13a0('0x12')][_0x13a0('0x11')]);}})['catch'](function(_0x1dd1e2){logger[_0x13a0('0xe')](_0x13a0('0x10'),_0x436be1,_0x1dd1e2);_0x4fca3c(_0x1dd1e2);});});}exports[_0x13a0('0x13')]=function(_0x5a0930){var _0x12649b=this;return new Promise(function(_0x3f5bb7,_0x274d10){return db['OpenchannelApplication']['update'](_0x5a0930['body'],{'raw':_0x5a0930['options']?_0x5a0930[_0x13a0('0x14')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a0930[_0x13a0('0x14')]?_0x5a0930[_0x13a0('0x14')][_0x13a0('0x15')]||null:null,'attributes':_0x5a0930[_0x13a0('0x14')]?_0x5a0930[_0x13a0('0x14')][_0x13a0('0x16')]||null:null,'limit':_0x5a0930[_0x13a0('0x14')]?_0x5a0930[_0x13a0('0x14')][_0x13a0('0x17')]||null:null})[_0x13a0('0x18')](function(_0xf9ed37){logger['info']('UpdateOpenchannelApplication',_0x5a0930);logger[_0x13a0('0xb')]('UpdateOpenchannelApplication',_0x5a0930,JSON[_0x13a0('0xd')](_0xf9ed37));_0x3f5bb7(_0xf9ed37);})[_0x13a0('0x19')](function(_0x4d9175){logger[_0x13a0('0xe')](_0x13a0('0x13'),_0x4d9175['message'],_0x5a0930);_0x274d10(_0x12649b['error'](0x1f4,_0x4d9175[_0x13a0('0x11')]));});});};
\ No newline at end of file
+var _0x1a62=['request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1a62,0x91));var _0x21a6=function(_0x2e5f80,_0x2227b1){_0x2e5f80=_0x2e5f80-0x0;var _0x5e58cb=_0x1a62[_0x2e5f80];return _0x5e58cb;};'use strict';var _=require(_0x21a6('0x0'));var util=require(_0x21a6('0x1'));var moment=require('moment');var BPromise=require(_0x21a6('0x2'));var rs=require(_0x21a6('0x3'));var fs=require('fs');var Redis=require(_0x21a6('0x4'));var db=require(_0x21a6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x21a6('0x6'))(_0x21a6('0x7'));var config=require(_0x21a6('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x21a6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x167686,_0x42cca8,_0x44c994){return new BPromise(function(_0x60ace3,_0x109cc2){return client[_0x21a6('0xa')](_0x167686,_0x44c994)[_0x21a6('0xb')](function(_0x1e2fdd){logger[_0x21a6('0xc')](_0x21a6('0xd'),_0x42cca8,_0x21a6('0xe'));logger[_0x21a6('0xf')](_0x21a6('0x10'),_0x42cca8,_0x21a6('0xe'),JSON[_0x21a6('0x11')](_0x1e2fdd));if(_0x1e2fdd[_0x21a6('0x12')]){if(_0x1e2fdd[_0x21a6('0x12')][_0x21a6('0x13')]===0x1f4){logger['error'](_0x21a6('0xd'),_0x42cca8,_0x1e2fdd[_0x21a6('0x12')][_0x21a6('0x14')]);return _0x109cc2(_0x1e2fdd['error'][_0x21a6('0x14')]);}logger['error'](_0x21a6('0xd'),_0x42cca8,_0x1e2fdd[_0x21a6('0x12')][_0x21a6('0x14')]);return _0x60ace3(_0x1e2fdd[_0x21a6('0x12')][_0x21a6('0x14')]);}else{logger[_0x21a6('0xc')](_0x21a6('0xd'),_0x42cca8,_0x21a6('0xe'));_0x60ace3(_0x1e2fdd[_0x21a6('0x15')][_0x21a6('0x14')]);}})[_0x21a6('0x16')](function(_0x366dde){logger['error'](_0x21a6('0xd'),_0x42cca8,_0x366dde);_0x109cc2(_0x366dde);});});}exports[_0x21a6('0x17')]=function(_0xee5c6e){var _0x39d35f=this;return new Promise(function(_0x317ee8,_0x1d5c9e){return db[_0x21a6('0x18')][_0x21a6('0x19')](_0xee5c6e[_0x21a6('0x1a')],{'raw':_0xee5c6e[_0x21a6('0x1b')]?_0xee5c6e[_0x21a6('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xee5c6e[_0x21a6('0x1b')]?_0xee5c6e[_0x21a6('0x1b')][_0x21a6('0x1c')]||null:null,'attributes':_0xee5c6e['options']?_0xee5c6e[_0x21a6('0x1b')][_0x21a6('0x1d')]||null:null,'limit':_0xee5c6e['options']?_0xee5c6e[_0x21a6('0x1b')][_0x21a6('0x1e')]||null:null})[_0x21a6('0xb')](function(_0x22fc7e){logger[_0x21a6('0xc')]('UpdateOpenchannelApplication',_0xee5c6e);logger['debug'](_0x21a6('0x17'),_0xee5c6e,JSON[_0x21a6('0x11')](_0x22fc7e));_0x317ee8(_0x22fc7e);})[_0x21a6('0x16')](function(_0x226a16){logger[_0x21a6('0x12')](_0x21a6('0x17'),_0x226a16[_0x21a6('0x14')],_0xee5c6e);_0x1d5c9e(_0x39d35f[_0x21a6('0x12')](0x1f4,_0x226a16[_0x21a6('0x14')]));});});};
\ No newline at end of file
index 1b33906..edb2e98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62df=['openchannelinteraction:addtags','addTags','put','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','removeTags','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./openchannelInteraction.controller','get','/describe','isAuthenticated','describe','/:id','show','/:id/messages','/:id/download','download','create','post','addMessage','/:id/tags','tracked','openchannel'];(function(_0x351509,_0x54725c){var _0x4e9861=function(_0x54f92c){while(--_0x54f92c){_0x351509['push'](_0x351509['shift']());}};_0x4e9861(++_0x54725c);}(_0x62df,0x149));var _0xf62d=function(_0xe81aa2,_0x232cfe){_0xe81aa2=_0xe81aa2-0x0;var _0x1230fb=_0x62df[_0xe81aa2];return _0x1230fb;};'use strict';var multer=require(_0xf62d('0x0'));var util=require(_0xf62d('0x1'));var path=require('path');var timeout=require(_0xf62d('0x2'));var express=require(_0xf62d('0x3'));var router=express['Router']();var fs_extra=require(_0xf62d('0x4'));var auth=require(_0xf62d('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xf62d('0x6'));var controller=require(_0xf62d('0x7'));router[_0xf62d('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xf62d('0x9'),auth[_0xf62d('0xa')](),controller[_0xf62d('0xb')]);router[_0xf62d('0x8')](_0xf62d('0xc'),auth[_0xf62d('0xa')](),controller[_0xf62d('0xd')]);router['get'](_0xf62d('0xe'),auth[_0xf62d('0xa')](),controller['getMessages']);router[_0xf62d('0x8')](_0xf62d('0xf'),auth['isAuthenticated'](),controller[_0xf62d('0x10')]);router['post']('/',auth[_0xf62d('0xa')](),controller[_0xf62d('0x11')]);router[_0xf62d('0x12')]('/:id/messages',auth['isAuthenticated'](),controller[_0xf62d('0x13')]);router[_0xf62d('0x12')](_0xf62d('0x14'),auth[_0xf62d('0xa')](),interaction[_0xf62d('0x15')](_0xf62d('0x16'),_0xf62d('0x17')),controller[_0xf62d('0x18')]);router[_0xf62d('0x19')](_0xf62d('0xc'),auth['isAuthenticated'](),interaction[_0xf62d('0x15')](_0xf62d('0x16'),_0xf62d('0x1a')),controller[_0xf62d('0x1b')]);router[_0xf62d('0x1c')](_0xf62d('0xc'),auth[_0xf62d('0xa')](),interaction[_0xf62d('0x15')](_0xf62d('0x16'),_0xf62d('0x1d')),controller['destroy']);router[_0xf62d('0x1c')](_0xf62d('0x14'),auth['isAuthenticated'](),controller[_0xf62d('0x1e')]);module[_0xf62d('0x1f')]=router;
\ No newline at end of file
+var _0xb1cd=['update','/:id','openchannelinteraction:destroy','destroy','delete','removeTags','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','openchannel','openchannelinteraction:addtags','addTags','tracked','openchannelinteraction:update'];(function(_0x152121,_0x120c53){var _0x592a85=function(_0x241cab){while(--_0x241cab){_0x152121['push'](_0x152121['shift']());}};_0x592a85(++_0x120c53);}(_0xb1cd,0x6a));var _0xdb1c=function(_0x34b01e,_0x24b49f){_0x34b01e=_0x34b01e-0x0;var _0x5d596c=_0xb1cd[_0x34b01e];return _0x5d596c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xdb1c('0x0'));var timeout=require(_0xdb1c('0x1'));var express=require('express');var router=express[_0xdb1c('0x2')]();var fs_extra=require(_0xdb1c('0x3'));var auth=require(_0xdb1c('0x4'));var interaction=require(_0xdb1c('0x5'));var config=require(_0xdb1c('0x6'));var controller=require(_0xdb1c('0x7'));router[_0xdb1c('0x8')]('/',auth[_0xdb1c('0x9')](),controller[_0xdb1c('0xa')]);router[_0xdb1c('0x8')](_0xdb1c('0xb'),auth[_0xdb1c('0x9')](),controller[_0xdb1c('0xc')]);router['get']('/:id',auth[_0xdb1c('0x9')](),controller['show']);router[_0xdb1c('0x8')](_0xdb1c('0xd'),auth['isAuthenticated'](),controller[_0xdb1c('0xe')]);router['get'](_0xdb1c('0xf'),auth[_0xdb1c('0x9')](),controller[_0xdb1c('0x10')]);router[_0xdb1c('0x11')]('/',auth[_0xdb1c('0x9')](),controller[_0xdb1c('0x12')]);router[_0xdb1c('0x11')](_0xdb1c('0xd'),auth['isAuthenticated'](),controller[_0xdb1c('0x13')]);router['post'](_0xdb1c('0x14'),auth['isAuthenticated'](),interaction['tracked'](_0xdb1c('0x15'),_0xdb1c('0x16')),controller[_0xdb1c('0x17')]);router['put']('/:id',auth['isAuthenticated'](),interaction[_0xdb1c('0x18')](_0xdb1c('0x15'),_0xdb1c('0x19')),controller[_0xdb1c('0x1a')]);router['delete'](_0xdb1c('0x1b'),auth[_0xdb1c('0x9')](),interaction[_0xdb1c('0x18')](_0xdb1c('0x15'),_0xdb1c('0x1c')),controller[_0xdb1c('0x1d')]);router[_0xdb1c('0x1e')](_0xdb1c('0x14'),auth[_0xdb1c('0x9')](),controller[_0xdb1c('0x1f')]);module[_0xdb1c('0x20')]=router;
\ No newline at end of file
index b8ac8cc..54f835d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1360=['DATE','STRING','ENUM','out','BOOLEAN'];(function(_0x11d541,_0xc8fe9){var _0x3e612a=function(_0x4f5e9d){while(--_0x4f5e9d){_0x11d541['push'](_0x11d541['shift']());}};_0x3e612a(++_0xc8fe9);}(_0x1360,0xd6));var _0x0136=function(_0x2583a7,_0x3beef9){_0x2583a7=_0x2583a7-0x0;var _0x35de7b=_0x1360[_0x2583a7];return _0x35de7b;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0x0136('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0136('0x1')]},'disposition':{'type':Sequelize[_0x0136('0x2')]},'secondDisposition':{'type':Sequelize[_0x0136('0x2')]},'thirdDisposition':{'type':Sequelize[_0x0136('0x2')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x0136('0x1')]},'threadId':{'type':Sequelize[_0x0136('0x2')]},'externalUrl':{'type':Sequelize[_0x0136('0x2')]},'lastMsgAt':{'type':Sequelize[_0x0136('0x1')]},'lastMsgDirection':{'type':Sequelize[_0x0136('0x3')]('in',_0x0136('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x6340=['out','sequelize','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0x5f7d79,_0x546143){var _0x577319=function(_0x217aac){while(--_0x217aac){_0x5f7d79['push'](_0x5f7d79['shift']());}};_0x577319(++_0x546143);}(_0x6340,0x71));var _0x0634=function(_0x2a1e2d,_0x195473){_0x2a1e2d=_0x2a1e2d-0x0;var _0x32b8cc=_0x6340[_0x2a1e2d];return _0x32b8cc;};'use strict';var Sequelize=require(_0x0634('0x0'));module[_0x0634('0x1')]={'closed':{'type':Sequelize[_0x0634('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0634('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x0634('0x4')]},'thirdDisposition':{'type':Sequelize[_0x0634('0x4')]},'note':{'type':Sequelize[_0x0634('0x4')]},'read1stAt':{'type':Sequelize[_0x0634('0x3')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0x0634('0x4')]},'lastMsgAt':{'type':Sequelize[_0x0634('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x0634('0x5')]('in',_0x0634('0x6')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x0634('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x0634('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 59d3365..a28c413 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3c3=['../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','Users','map','fullname','Tags','TagIds','split','forEach','push','catch','OpenchannelInteraction','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','select','field','from','tools_tags','u.fullname','ui.OpenchannelInteractionId','left_join','u.id\x20=\x20ui.UserId','openchannel_interactions','users','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','value','find','ContactId','buildExpression','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','UserId','start','body','keys','some','compact','isEmpty','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','read','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','getFullTextValue','i.from\x20LIKE\x20?','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)','contactName','DESC','t.id\x20IN\x20?','resolve','OpenchannelAccountId','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','user','getOpenchannelAccounts','toString','sequelize','keyBy','merge','Account.mandatoryDisposition','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','OpenchannelInteractionId','all','rows','params','includeAll','create','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','format','include','findAll','addTags','setTags','spread','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','CmContact','firstName','lastName','Messages','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','N.A.','YYYY-MM-DD\x20HH:mm:ss','disposition','threadId','Public','Private','Attachment','basename','createReadStream','pipe','direction','System','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x53a26c,_0x2bea90){var _0x5238c5=function(_0x2a7aa){while(--_0x2a7aa){_0x53a26c['push'](_0x53a26c['shift']());}};_0x5238c5(++_0x2bea90);}(_0xe3c3,0x1b6));var _0x3e3c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe3c3[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3e3c('0x0'));var jsonpatch=require(_0x3e3c('0x1'));var rp=require(_0x3e3c('0x2'));var moment=require(_0x3e3c('0x3'));var BPromise=require(_0x3e3c('0x4'));var Mustache=require(_0x3e3c('0x5'));var util=require('util');var path=require(_0x3e3c('0x6'));var sox=require(_0x3e3c('0x7'));var csv=require(_0x3e3c('0x8'));var ejs=require(_0x3e3c('0x9'));var fs=require('fs');var fs_extra=require(_0x3e3c('0xa'));var _=require(_0x3e3c('0xb'));var squel=require(_0x3e3c('0xc'));var crypto=require(_0x3e3c('0xd'));var jsforce=require(_0x3e3c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x3e3c('0x8'));var querystring=require(_0x3e3c('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3e3c('0x10'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x3e3c('0x11'));var hardwareService=require(_0x3e3c('0x12'));var logger=require(_0x3e3c('0x13'))(_0x3e3c('0x14'));var utils=require(_0x3e3c('0x15'));var config=require(_0x3e3c('0x16'));var licenseUtil=require(_0x3e3c('0x17'));var db=require(_0x3e3c('0x18'))['db'];config[_0x3e3c('0x19')]=_[_0x3e3c('0x1a')](config[_0x3e3c('0x19')],{'host':_0x3e3c('0x1b'),'port':0x18eb});var socket=require(_0x3e3c('0x1c'))(new Redis(config[_0x3e3c('0x19')]));require('./openchannelInteraction.socket')[_0x3e3c('0x1d')](socket);function respondWithStatusCode(_0x4fae5b,_0x36844b){_0x36844b=_0x36844b||0xcc;return function(_0x33f635){if(_0x33f635){return _0x4fae5b[_0x3e3c('0x1e')](_0x36844b);}return _0x4fae5b[_0x3e3c('0x1f')](_0x36844b)['end']();};}function respondWithResult(_0x4451c4,_0x97c315){_0x97c315=_0x97c315||0xc8;return function(_0x5f7999){if(_0x5f7999){return _0x4451c4[_0x3e3c('0x1f')](_0x97c315)[_0x3e3c('0x20')](_0x5f7999);}};}function respondWithFilteredResult(_0xa9611d,_0x35bea0){return function(_0x4aa2b3){if(_0x4aa2b3){var _0x5d3ace=typeof _0x35bea0[_0x3e3c('0x21')]===_0x3e3c('0x22')&&typeof _0x35bea0[_0x3e3c('0x23')]===_0x3e3c('0x22');var _0x56533=_0x4aa2b3['count'];var _0x5848ab=_0x5d3ace?0x0:_0x35bea0[_0x3e3c('0x21')];var _0x33ab09=_0x5d3ace?_0x4aa2b3[_0x3e3c('0x24')]:_0x35bea0[_0x3e3c('0x21')]+_0x35bea0[_0x3e3c('0x23')];var _0x467985;if(_0x33ab09>=_0x56533){_0x33ab09=_0x56533;_0x467985=0xc8;}else{_0x467985=0xce;}_0xa9611d[_0x3e3c('0x1f')](_0x467985);return _0xa9611d[_0x3e3c('0x25')](_0x3e3c('0x26'),_0x5848ab+'-'+_0x33ab09+'/'+_0x56533)['json'](_0x4aa2b3);}return null;};}function patchUpdates(_0x2fc788){return function(_0x369671){try{jsonpatch[_0x3e3c('0x27')](_0x369671,_0x2fc788,!![]);}catch(_0x2f74ab){return BPromise[_0x3e3c('0x28')](_0x2f74ab);}return _0x369671[_0x3e3c('0x29')]();};}function saveUpdates(_0x54eabe,_0x2a2614){return function(_0x3bd85c){if(_0x3bd85c){return _0x3bd85c['update'](_0x54eabe)[_0x3e3c('0x2a')](function(_0x3fdaf1){return _0x3fdaf1;});}return null;};}function removeEntity(_0x517153,_0x485dd3){return function(_0x3ebf24){if(_0x3ebf24){return _0x3ebf24[_0x3e3c('0x2b')]()[_0x3e3c('0x2a')](function(){_0x517153[_0x3e3c('0x1f')](0xcc)[_0x3e3c('0x2c')]();});}};}function handleEntityNotFound(_0x40f6eb,_0x316035){return function(_0x5270ae){if(!_0x5270ae){_0x40f6eb['sendStatus'](0x194);}return _0x5270ae;};}function handleError(_0x472d97,_0x3459a1){_0x3459a1=_0x3459a1||0x1f4;return function(_0x481965){logger[_0x3e3c('0x2d')](_0x481965[_0x3e3c('0x2e')]);if(_0x481965[_0x3e3c('0x2f')]){delete _0x481965[_0x3e3c('0x2f')];}_0x472d97[_0x3e3c('0x1f')](_0x3459a1)['send'](_0x481965);};}function getInteractionUsers(_0x34b682,_0x267687){return new BPromise(function(_0x12d67c,_0x529324){try{if(_0x267687[_0x34b682['id']]){_0x34b682[_0x3e3c('0x30')]=_[_0x3e3c('0x31')](_0x267687[_0x34b682['id']],function(_0x1d518c){return{'id':_0x1d518c['id'],'fullname':_0x1d518c[_0x3e3c('0x32')]};});}}catch(_0x3c3932){_0x529324(_0x3c3932);}_0x12d67c(_0x34b682);});}function getInteractionTags(_0x55e47c,_0x1e78bd){return new BPromise(function(_0x2fdb42,_0x17ce5b){try{if(_0x55e47c['TagIds']){_0x55e47c[_0x3e3c('0x33')]=[];_0x55e47c[_0x3e3c('0x34')][_0x3e3c('0x35')](',')[_0x3e3c('0x36')](function(_0x88c9f7){_0x55e47c[_0x3e3c('0x33')][_0x3e3c('0x37')](_0x1e78bd[_0x88c9f7]);});}delete _0x55e47c[_0x3e3c('0x34')];}catch(_0x3e4f98){_0x17ce5b(_0x3e4f98);}_0x2fdb42(_0x55e47c);});}function updateOpenchannelInteraction(_0x1b7128,_0x16024f,_0x4c75a2){return new BPromise(function(_0x400f4a,_0x573884){return getInteractionUsers(_0x1b7128,_0x4c75a2)[_0x3e3c('0x2a')](function(_0x27c948){return getInteractionTags(_0x27c948,_0x16024f);})['then'](function(_0x10ef42){_0x400f4a(_0x10ef42);})[_0x3e3c('0x38')](function(_0x412f56){_0x573884(_0x412f56);});});}exports['index']=function(_0x5b677a,_0x3e3df7){var _0x4f39cf={},_0x14ad9e={},_0x31fc97={'count':0x0,'rows':[]};var _0x1c8dcf=_[_0x3e3c('0x31')](db[_0x3e3c('0x39')][_0x3e3c('0x3a')],function(_0x15afac){return{'name':_0x15afac[_0x3e3c('0x3b')],'type':_0x15afac[_0x3e3c('0x3c')][_0x3e3c('0x3d')]};});_0x14ad9e[_0x3e3c('0x3e')]=_['map'](_0x1c8dcf,'name');_0x14ad9e[_0x3e3c('0x3f')]=_['keys'](_0x5b677a[_0x3e3c('0x3f')]);_0x14ad9e['filters']=_[_0x3e3c('0x40')](_0x14ad9e['model'],_0x14ad9e[_0x3e3c('0x3f')]);_0x4f39cf['attributes']=_[_0x3e3c('0x40')](_0x14ad9e[_0x3e3c('0x3e')],qs['fields'](_0x5b677a[_0x3e3c('0x3f')][_0x3e3c('0x41')]));_0x4f39cf[_0x3e3c('0x42')]=_0x4f39cf[_0x3e3c('0x42')][_0x3e3c('0x43')]?_0x4f39cf['attributes']:_0x14ad9e[_0x3e3c('0x3e')];if(!_0x5b677a[_0x3e3c('0x3f')][_0x3e3c('0x44')]('nolimit')){_0x4f39cf[_0x3e3c('0x23')]=qs['limit'](_0x5b677a['query'][_0x3e3c('0x23')]);_0x4f39cf[_0x3e3c('0x21')]=qs[_0x3e3c('0x21')](_0x5b677a[_0x3e3c('0x3f')][_0x3e3c('0x21')]);}_0x4f39cf[_0x3e3c('0x45')]=qs[_0x3e3c('0x46')](_0x5b677a[_0x3e3c('0x3f')][_0x3e3c('0x46')]);_0x4f39cf[_0x3e3c('0x47')]=qs[_0x3e3c('0x48')](_[_0x3e3c('0x49')](_0x5b677a[_0x3e3c('0x3f')],_0x14ad9e['filters']),_0x1c8dcf);var _0x5e4241=[];var _0x311c13=squel[_0x3e3c('0x4a')]()[_0x3e3c('0x4b')]('id')['field'](_0x3e3c('0x2f'))[_0x3e3c('0x4b')]('color')[_0x3e3c('0x4c')](_0x3e3c('0x4d'));var _0x31d990=squel[_0x3e3c('0x4a')]()[_0x3e3c('0x4b')]('u.id')[_0x3e3c('0x4b')](_0x3e3c('0x4e'))['field'](_0x3e3c('0x4f'))[_0x3e3c('0x4c')]('user_has_openchannel_interactions','ui')[_0x3e3c('0x50')]('users','u',_0x3e3c('0x51'));var _0x494dbb=squel[_0x3e3c('0x4a')]()[_0x3e3c('0x4c')](_0x3e3c('0x52'),'i')[_0x3e3c('0x50')]('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join'](_0x3e3c('0x53'),'o',_0x3e3c('0x54'))['left_join'](_0x3e3c('0x55'),'a',_0x3e3c('0x56'))[_0x3e3c('0x50')]('openchannel_messages','me','me.OpenchannelInteractionId\x20=\x20i.id')['left_join'](_0x3e3c('0x57'),'it',_0x3e3c('0x58'))['left_join'](_0x3e3c('0x4d'),'t',_0x3e3c('0x59'));var _0xf90be3=squel[_0x3e3c('0x5a')]();var _0x1357d9=[];var _0x4bae9b=squel[_0x3e3c('0x5a')]();var _0x5316ee;if(_0x5b677a[_0x3e3c('0x3f')]['search']){_0x5316ee=as[_0x3e3c('0x5b')](_0x5b677a[_0x3e3c('0x3f')][_0x3e3c('0x5c')]);var _0x233a89=_0x5316ee['sqlOperator'];for(var _0x341a8c=0x0;_0x341a8c<_0x5316ee['conditions']['length'];_0x341a8c++){var _0xad9e19=_0x5316ee['conditions'][_0x341a8c];var _0x2970ea='i';var _0x1a66ee=_['find'](_0x1c8dcf,[_0x3e3c('0x2f'),_0xad9e19['field']]);if(!_0x1a66ee){switch(_0xad9e19[_0x3e3c('0x4b')]){case _0x3e3c('0x5d'):if(_0xad9e19['value']==0x1){_0x494dbb[_0x3e3c('0x5e')]('`'+_0xad9e19[_0x3e3c('0x4b')]+_0x3e3c('0x5f'));}else{_0x494dbb['having']('`'+_0xad9e19['field']+_0x3e3c('0x60'));}break;case _0x3e3c('0x61'):if(_0xad9e19[_0x3e3c('0x62')]===_0x3e3c('0x63')){if(_0xad9e19[_0x3e3c('0x64')][_0x3e3c('0x35')]('\x20')[_0x3e3c('0x43')]>0x1){_0xf90be3[_0x233a89]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0xad9e19[_0x3e3c('0x64')]),null);}else{var _0x25c9a6='%'+_0xad9e19[_0x3e3c('0x64')]+'%';_0xf90be3[_0x233a89]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x25c9a6,_0x25c9a6,_0x25c9a6);}}else{_0x1a66ee=_[_0x3e3c('0x65')](_0x1c8dcf,[_0x3e3c('0x2f'),_0x3e3c('0x66')]);_0xad9e19[_0x3e3c('0x4b')]=_0x3e3c('0x66');_0x283dd=as[_0x3e3c('0x67')](_0x2970ea,_0x1a66ee[_0x3e3c('0x3c')],_0xad9e19);_0xf90be3[_0x233a89](_0x283dd[_0x3e3c('0x68')],_0x283dd[_0x3e3c('0x64')]['start'],_0x283dd[_0x3e3c('0x64')]['end']);}break;case _0x3e3c('0x69'):var _0x4510e1=_0xad9e19['value'][_0x3e3c('0x35')](',')[_0x3e3c('0x31')](function(_0x3c7b11){return Number(_0x3c7b11);});_0x4510e1[_0x3e3c('0x36')](function(_0x33c4f7){_0x4bae9b['or'](_0x3e3c('0x6a'),'%,'+_0x33c4f7+',%');});_0x1357d9=_[_0x3e3c('0x6b')](_0x1357d9,_0x4510e1);break;case _0x3e3c('0x6c'):if(_0xad9e19['operator']===_0x3e3c('0x63')){_0xf90be3[_0x233a89]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0xad9e19[_0x3e3c('0x64')]+'%',null);}else{_0x1a66ee=_['find'](_0x1c8dcf,[_0x3e3c('0x2f'),_0x3e3c('0x6d')]);_0xad9e19[_0x3e3c('0x4b')]='UserId';_0x283dd=as[_0x3e3c('0x67')](_0x2970ea,_0x1a66ee[_0x3e3c('0x3c')],_0xad9e19);_0xf90be3[_0x233a89](_0x283dd['text'],_0x283dd[_0x3e3c('0x64')][_0x3e3c('0x6e')],_0x283dd[_0x3e3c('0x64')][_0x3e3c('0x2c')]);}break;case _0x3e3c('0x6f'):_0x283dd=as[_0x3e3c('0x67')]('me',null,_0xad9e19);_0xf90be3[_0x233a89](_0x283dd[_0x3e3c('0x68')],_0x283dd[_0x3e3c('0x64')][_0x3e3c('0x6e')],_0x283dd['value'][_0x3e3c('0x2c')]);break;}}else{var _0x283dd=as[_0x3e3c('0x67')](_0x2970ea,_0x1a66ee['type'],_0xad9e19);_0xf90be3[_0x233a89](_0x283dd[_0x3e3c('0x68')],_0x283dd['value']['start'],_0x283dd[_0x3e3c('0x64')]['end']);}}}else{var _0x430062=_(_0x5b677a['query'])[_0x3e3c('0x70')]()[_0x3e3c('0x31')](function(_0x12a97c){return _[_0x3e3c('0x71')](_0x1c8dcf,[_0x3e3c('0x2f'),_0x12a97c])?_0x12a97c:undefined;})[_0x3e3c('0x72')]()[_0x3e3c('0x64')]();if(!_[_0x3e3c('0x73')](_0x430062)){_0x430062[_0x3e3c('0x36')](function(_0xe4454f){if(_0xe4454f==='OpenchannelAccountId'){_0x494dbb[_0x3e3c('0x47')](_0x3e3c('0x74'),[][_0x3e3c('0x75')](_0x5b677a['query'][_0xe4454f]));}else if(_0xe4454f===_0x3e3c('0x76')){var _0x5244d6=JSON[_0x3e3c('0x77')](_0x5b677a[_0x3e3c('0x3f')][_0xe4454f])[_0x3e3c('0x78')];var _0x4fb987=JSON[_0x3e3c('0x77')](_0x5b677a[_0x3e3c('0x3f')][_0xe4454f])['$lte'];_0x494dbb['where'](_0x3e3c('0x79'),_0x5244d6,_0x4fb987);}else{if(_0x5b677a['query'][_0xe4454f]===_0x3e3c('0x7a')){_0x494dbb[_0x3e3c('0x47')]('i.'+_0xe4454f+'\x20IS\x20NULL');}else{_0x494dbb['where']('i.'+_0xe4454f+'\x20=\x20?',_0x5b677a[_0x3e3c('0x3f')][_0xe4454f]);}}});}if(_0x5b677a[_0x3e3c('0x3f')]['read']){if(_0x5b677a['query'][_0x3e3c('0x7b')]==0x1){_0x494dbb[_0x3e3c('0x5e')]('`unreadMessages`\x20=\x200');}else{_0x494dbb[_0x3e3c('0x5e')](_0x3e3c('0x7c'));}}if(_0x5b677a[_0x3e3c('0x3f')]['tag']){_0x1357d9=_[_0x3e3c('0x7d')](_0x5b677a[_0x3e3c('0x3f')][_0x3e3c('0x7e')])?_0x5b677a[_0x3e3c('0x3f')]['tag']:new Array(_0x5b677a[_0x3e3c('0x3f')][_0x3e3c('0x7e')]);_0x1357d9[_0x3e3c('0x36')](function(_0x383dab){_0x4bae9b['or'](_0x3e3c('0x6a'),'%,'+_0x383dab+',%');});}if(_0x5b677a['query'][_0x3e3c('0x7f')]){var _0x49b99c=_0x5b677a[_0x3e3c('0x3f')][_0x3e3c('0x7f')][_0x3e3c('0x80')]('\x5c','\x5c\x5c')[_0x3e3c('0x80')](/'/g,'\x27\x27');if(qs[_0x3e3c('0x81')](_0x49b99c)){_0xf90be3['or'](_0x3e3c('0x82'),_0x49b99c+'%');}else{_0xf90be3['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x3e3c('0x83')](_0x49b99c))['or'](_0x3e3c('0x84'),_0x49b99c+'%')['or'](_0x3e3c('0x85'),_0x49b99c+'%');}}}_0x494dbb[_0x3e3c('0x47')](_0xf90be3);_0x494dbb[_0x3e3c('0x86')]('i.id');var _0x7159a3={'type':db[_0x3e3c('0x87')][_0x3e3c('0x88')][_0x3e3c('0x89')],'raw':!![]};var _0x34a08e=_0x494dbb[_0x3e3c('0x8a')]();_0x34a08e['field'](_0x3e3c('0x8b'));_0x34a08e[_0x3e3c('0x4b')](_0x3e3c('0x8c'),_0x3e3c('0x5d'));if(_0x4f39cf['order']){_0x4f39cf[_0x3e3c('0x45')][_0x3e3c('0x36')](function(_0x54a83a){var _0x35c8d0=_0x54a83a[0x0]===_0x3e3c('0x8d')?_0x54a83a[0x0]:'i.'+_0x54a83a[0x0];_0x494dbb[_0x3e3c('0x45')](_0x35c8d0,_0x54a83a[0x1]===_0x3e3c('0x8e')?![]:!![]);});}if(!_[_0x3e3c('0x73')](_0x1357d9)){_0x494dbb['having'](_0x4bae9b);_0x34a08e[_0x3e3c('0x47')](_0x3e3c('0x8f'),_0x1357d9);}BPromise[_0x3e3c('0x90')]()['then'](function(){if(!_0x5316ee){if(_0x5b677a[_0x3e3c('0x3f')][_0x3e3c('0x91')])return;_0x34a08e[_0x3e3c('0x47')](_0x3e3c('0x92'));_0x494dbb[_0x3e3c('0x47')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x5b677a['user'][_0x3e3c('0x93')]!=='agent')return;return _0x5b677a[_0x3e3c('0x94')][_0x3e3c('0x95')]({'attributes':['id'],'raw':!![]})[_0x3e3c('0x2a')](function(_0x46f3f8){if(_[_0x3e3c('0x73')](_0x46f3f8)){_0x34a08e[_0x3e3c('0x47')]('i.OpenchannelAccountId\x20IS\x20NULL');_0x494dbb[_0x3e3c('0x47')]('i.OpenchannelAccountId\x20IS\x20NULL');}else{_0x34a08e[_0x3e3c('0x47')]('i.OpenchannelAccountId\x20IN\x20?',_['map'](_0x46f3f8,'id'));_0x494dbb[_0x3e3c('0x47')](_0x3e3c('0x74'),_[_0x3e3c('0x31')](_0x46f3f8,'id'));}});})[_0x3e3c('0x2a')](function(){if(_0x5b677a[_0x3e3c('0x94')][_0x3e3c('0x93')]==='agent'&&!_0x5316ee&&!_0x5b677a[_0x3e3c('0x3f')][_0x3e3c('0x91')])return[];return db['sequelize'][_0x3e3c('0x3f')](_0x34a08e[_0x3e3c('0x96')](),_0x7159a3);})['then'](function(_0x212997){_0x31fc97[_0x3e3c('0x24')]=_0x212997['length'];if(_0x31fc97[_0x3e3c('0x24')]===0x0)return[];return db[_0x3e3c('0x97')]['query'](_0x311c13[_0x3e3c('0x96')](),_0x7159a3)['then'](function(_0x26b556){_0x5e4241=_[_0x3e3c('0x98')](_0x26b556,'id');_0x7159a3=_[_0x3e3c('0x99')](_0x7159a3,{'model':db['OpenchannelInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5b677a[_0x3e3c('0x3f')][_0x3e3c('0x41')]){_0x4f39cf[_0x3e3c('0x42')]['forEach'](function(_0x53c3ab){_0x494dbb[_0x3e3c('0x4b')]('i.'+_0x53c3ab);});}else{_0x494dbb[_0x3e3c('0x4b')](_0x3e3c('0x8c'),'unreadMessages');_0x494dbb['field']('a.key','Account.key');_0x494dbb[_0x3e3c('0x4b')]('a.mandatoryDisposition',_0x3e3c('0x9a'));_0x494dbb[_0x3e3c('0x4b')]('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',_0x3e3c('0x8d'));_0x494dbb['field'](_0x3e3c('0x9b'));_0x494dbb[_0x3e3c('0x4b')](_0x3e3c('0x9c'),'Contact.firstName');_0x494dbb[_0x3e3c('0x4b')](_0x3e3c('0x9d'),_0x3e3c('0x9e'));_0x494dbb['field'](_0x3e3c('0x9f'),'Contact.email');_0x494dbb[_0x3e3c('0x4b')]('c.phone',_0x3e3c('0xa0'));_0x494dbb['field']('c.mobile',_0x3e3c('0xa1'));_0x494dbb['field'](_0x3e3c('0xa2'),_0x3e3c('0xa3'));_0x494dbb[_0x3e3c('0x4b')](_0x3e3c('0xa4'),_0x3e3c('0xa5'));_0x494dbb[_0x3e3c('0x4b')](_0x3e3c('0xa6'),_0x3e3c('0xa7'));_0x494dbb[_0x3e3c('0x4b')](_0x3e3c('0xa8'),_0x3e3c('0x34'));}if(_0x4f39cf[_0x3e3c('0x23')])_0x494dbb['limit'](_0x4f39cf[_0x3e3c('0x23')]);if(_0x4f39cf['offset'])_0x494dbb[_0x3e3c('0x21')](_0x4f39cf[_0x3e3c('0x21')]);return db['sequelize'][_0x3e3c('0x3f')](_0x494dbb['toString'](),_0x7159a3);})['then'](function(_0x5a5580){if(_0x5a5580[_0x3e3c('0x43')]>0x0)_0x31d990[_0x3e3c('0x47')](_0x3e3c('0xa9'),_[_0x3e3c('0x31')](_0x5a5580,'id'));return db[_0x3e3c('0x97')][_0x3e3c('0x3f')](_0x31d990[_0x3e3c('0x96')](),_0x7159a3)[_0x3e3c('0x2a')](function(_0x1b1da7){var _0x3e7cde=_['groupBy'](_0x1b1da7,_0x3e3c('0xaa'));var _0x4acaf6=[];_0x5a5580[_0x3e3c('0x36')](function(_0x55ebd7){_0x4acaf6[_0x3e3c('0x37')](updateOpenchannelInteraction(_0x55ebd7,_0x5e4241,_0x3e7cde));});return BPromise[_0x3e3c('0xab')](_0x4acaf6);});});})[_0x3e3c('0x2a')](function(_0x1ec7ab){_0x31fc97[_0x3e3c('0xac')]=_0x1ec7ab;return _0x31fc97;})[_0x3e3c('0x2a')](respondWithFilteredResult(_0x3e3df7,_0x4f39cf))['catch'](handleError(_0x3e3df7,null));};exports['show']=function(_0x2cf7cb,_0x581c36){var _0x4fa4da={};if(_0x2cf7cb['query']['type']&&_0x2cf7cb[_0x3e3c('0x3f')][_0x3e3c('0x3c')]==='from'){_0x4fa4da[_0x3e3c('0x4c')]=_0x2cf7cb[_0x3e3c('0xad')]['id'];}else{_0x4fa4da['id']=_0x2cf7cb[_0x3e3c('0xad')]['id'];}var _0x382397={'raw':![],'where':_0x4fa4da},_0x37ab85={};_0x37ab85[_0x3e3c('0x3e')]=_[_0x3e3c('0x70')](db[_0x3e3c('0x39')][_0x3e3c('0x3a')]);_0x37ab85['query']=_['keys'](_0x2cf7cb[_0x3e3c('0x3f')]);_0x37ab85[_0x3e3c('0x48')]=_[_0x3e3c('0x40')](_0x37ab85[_0x3e3c('0x3e')],_0x37ab85[_0x3e3c('0x3f')]);_0x382397[_0x3e3c('0x42')]=_['intersection'](_0x37ab85[_0x3e3c('0x3e')],qs[_0x3e3c('0x41')](_0x2cf7cb['query']['fields']));_0x382397[_0x3e3c('0x42')]=_0x382397[_0x3e3c('0x42')]['length']?_0x382397[_0x3e3c('0x42')]:_0x37ab85[_0x3e3c('0x3e')];if(_0x2cf7cb['query'][_0x3e3c('0xae')]){_0x382397['include']=[{'all':!![]}];}_0x382397=_[_0x3e3c('0x99')]({},_0x382397,_0x2cf7cb['options']);return db[_0x3e3c('0x39')][_0x3e3c('0x65')](_0x382397)[_0x3e3c('0x2a')](handleEntityNotFound(_0x581c36,null))['then'](respondWithResult(_0x581c36,null))[_0x3e3c('0x38')](handleError(_0x581c36,null));};exports[_0x3e3c('0xaf')]=function(_0x2a0be4,_0x40b718){return db['OpenchannelInteraction'][_0x3e3c('0xaf')](_0x2a0be4[_0x3e3c('0x6f')],{})[_0x3e3c('0x2a')](respondWithResult(_0x40b718,0xc9))[_0x3e3c('0x38')](handleError(_0x40b718,null));};exports['update']=function(_0x593b2c,_0xcf6473){if(_0x593b2c['body']['id']){delete _0x593b2c[_0x3e3c('0x6f')]['id'];}return db[_0x3e3c('0x39')][_0x3e3c('0x65')]({'where':{'id':_0x593b2c[_0x3e3c('0xad')]['id']}})[_0x3e3c('0x2a')](handleEntityNotFound(_0xcf6473,null))[_0x3e3c('0x2a')](saveUpdates(_0x593b2c['body'],null))[_0x3e3c('0x2a')](respondWithResult(_0xcf6473,null))['catch'](handleError(_0xcf6473,null));};exports[_0x3e3c('0x2b')]=function(_0x2ab1fe,_0x221dd4){return db[_0x3e3c('0x39')][_0x3e3c('0x65')]({'where':{'id':_0x2ab1fe[_0x3e3c('0xad')]['id']}})[_0x3e3c('0x2a')](handleEntityNotFound(_0x221dd4,null))[_0x3e3c('0x2a')](removeEntity(_0x221dd4,null))[_0x3e3c('0x38')](handleError(_0x221dd4,null));};exports[_0x3e3c('0xb0')]=function(_0x237e60,_0x2860cc){return db[_0x3e3c('0x39')][_0x3e3c('0xb0')]()[_0x3e3c('0x2a')](respondWithResult(_0x2860cc,null))['catch'](handleError(_0x2860cc,null));};exports[_0x3e3c('0xb1')]=function(_0x311718,_0x3534ad,_0x3d764b){return db[_0x3e3c('0xb2')][_0x3e3c('0x65')]({'where':{'id':_0x311718[_0x3e3c('0xad')]['id']}})[_0x3e3c('0x2a')](handleEntityNotFound(_0x3534ad,null))[_0x3e3c('0x2a')](function(_0x42567f){if(_0x42567f){return _0x42567f[_0x3e3c('0xb1')](_0x311718[_0x3e3c('0x6f')][_0x3e3c('0xb3')],_[_0x3e3c('0xb4')](_0x311718[_0x3e3c('0x6f')],['ids','id'])||{});}})['then'](respondWithResult(_0x3534ad,null))['catch'](handleError(_0x3534ad,null));};exports[_0x3e3c('0xb5')]=function(_0x1ab5fa,_0x21d3d6,_0x8a2acd){var _0x57786a={'raw':![],'where':{}};var _0x33e9a5={};var _0x3b2269={'count':0x0,'rows':[]};return db[_0x3e3c('0x39')][_0x3e3c('0xb6')]({'where':{'id':_0x1ab5fa[_0x3e3c('0xad')]['id']}})[_0x3e3c('0x2a')](handleEntityNotFound(_0x21d3d6,null))['then'](function(_0x2e9b68){if(_0x2e9b68){_0x33e9a5[_0x3e3c('0x3e')]=_['keys'](db['OpenchannelMessage'][_0x3e3c('0x3a')]);_0x33e9a5[_0x3e3c('0x3f')]=_[_0x3e3c('0x70')](_0x1ab5fa[_0x3e3c('0x3f')]);_0x33e9a5[_0x3e3c('0x48')]=_[_0x3e3c('0x40')](_0x33e9a5[_0x3e3c('0x3e')],_0x33e9a5['query']);_0x57786a['attributes']=_['intersection'](_0x33e9a5[_0x3e3c('0x3e')],qs['fields'](_0x1ab5fa['query']['fields']));_0x57786a[_0x3e3c('0x42')]=_0x57786a[_0x3e3c('0x42')][_0x3e3c('0x43')]?_0x57786a[_0x3e3c('0x42')]:_0x33e9a5[_0x3e3c('0x3e')];if(!_0x1ab5fa[_0x3e3c('0x3f')]['hasOwnProperty']('nolimit')){_0x57786a[_0x3e3c('0x23')]=qs['limit'](_0x1ab5fa['query']['limit']);_0x57786a[_0x3e3c('0x21')]=qs[_0x3e3c('0x21')](_0x1ab5fa[_0x3e3c('0x3f')][_0x3e3c('0x21')]);}_0x57786a[_0x3e3c('0x45')]=qs[_0x3e3c('0x46')](_0x1ab5fa[_0x3e3c('0x3f')][_0x3e3c('0x46')]);_0x57786a[_0x3e3c('0x47')]=qs['filters'](_[_0x3e3c('0x49')](_0x1ab5fa['query'],_0x33e9a5[_0x3e3c('0x48')]));_0x57786a[_0x3e3c('0x47')][_0x3e3c('0xaa')]=_0x2e9b68['id'];if(_0x1ab5fa[_0x3e3c('0x3f')][_0x3e3c('0x7f')]){_0x57786a[_0x3e3c('0x47')]=_['merge'](_0x57786a[_0x3e3c('0x47')],{'$or':_['map'](_0x57786a[_0x3e3c('0x42')],function(_0x49c7cc){var _0x454ab1={};_0x454ab1[_0x49c7cc]={'$like':'%'+_0x1ab5fa['query'][_0x3e3c('0x7f')]+'%'};return _0x454ab1;})});}if(_0x1ab5fa[_0x3e3c('0x3f')][_0x3e3c('0x78')]){var _0xb5b35a=_0x1ab5fa[_0x3e3c('0x3f')][_0x3e3c('0x78')][_0x3e3c('0x35')](',');var _0x55a18b={};_0x55a18b[_0xb5b35a[0x0]]={'$gte':moment(_0xb5b35a[0x1])[_0x3e3c('0xb7')]('YYYY-MM-DD\x20HH:mm:ss')};_0x57786a[_0x3e3c('0x47')]=_['merge'](_0x57786a[_0x3e3c('0x47')],_0x55a18b);}_0x57786a=_['merge']({},_0x57786a,_0x1ab5fa['options']);return db[_0x3e3c('0xb2')][_0x3e3c('0x24')]({'where':_0x57786a[_0x3e3c('0x47')]})[_0x3e3c('0x2a')](function(_0x2f1d28){_0x3b2269['count']=_0x2f1d28;if(_0x1ab5fa[_0x3e3c('0x3f')]['includeAll']){_0x57786a[_0x3e3c('0xb8')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0x3e3c('0xb9')](_0x57786a);})[_0x3e3c('0x2a')](function(_0x5463ad){_0x3b2269[_0x3e3c('0xac')]=_0x5463ad;return _0x3b2269;});}})[_0x3e3c('0x2a')](respondWithFilteredResult(_0x21d3d6,_0x57786a))['catch'](handleError(_0x21d3d6,null));};exports[_0x3e3c('0xba')]=function(_0x1089b3,_0x3db84b,_0x4e4f5d){return db[_0x3e3c('0x39')][_0x3e3c('0x65')]({'where':{'id':_0x1089b3[_0x3e3c('0xad')]['id']}})['then'](handleEntityNotFound(_0x3db84b,null))['then'](function(_0x42e17d){if(_0x42e17d){return _0x42e17d[_0x3e3c('0xbb')](_0x1089b3[_0x3e3c('0x6f')][_0x3e3c('0xb3')],_['omit'](_0x1089b3[_0x3e3c('0x6f')],[_0x3e3c('0xb3'),'id'])||{})[_0x3e3c('0xbc')](function(){return db[_0x3e3c('0x69')][_0x3e3c('0xb9')]({'attributes':['id',_0x3e3c('0x2f'),'color'],'where':{'id':_0x1089b3[_0x3e3c('0x6f')][_0x3e3c('0xb3')]}});})[_0x3e3c('0x2a')](function(_0x37bbd2){socket[_0x3e3c('0xbd')](_0x3e3c('0xbe'),{'id':Number(_0x1089b3[_0x3e3c('0xad')]['id']),'tags':_0x37bbd2||[]});return{'id':Number(_0x1089b3[_0x3e3c('0xad')]['id']),'tags':_0x37bbd2||[]};});}})[_0x3e3c('0x2a')](respondWithResult(_0x3db84b,null))[_0x3e3c('0x38')](handleError(_0x3db84b,null));};exports[_0x3e3c('0xbf')]=function(_0x3095a3,_0x785ebc,_0x4ac4dc){return db['OpenchannelInteraction'][_0x3e3c('0x65')]({'where':{'id':_0x3095a3[_0x3e3c('0xad')]['id']}})[_0x3e3c('0x2a')](handleEntityNotFound(_0x785ebc,null))[_0x3e3c('0x2a')](function(_0x2bd5c8){if(_0x2bd5c8){return _0x2bd5c8[_0x3e3c('0xbf')](_0x3095a3['query'][_0x3e3c('0xb3')]);}})[_0x3e3c('0x2a')](respondWithStatusCode(_0x785ebc,null))[_0x3e3c('0x38')](handleError(_0x785ebc,null));};exports[_0x3e3c('0xc0')]=function(_0x33bc2b,_0x4b7806){var _0x4f02db=moment()[_0x3e3c('0xc1')]()[_0x3e3c('0x96')]();var _0x587e52=path[_0x3e3c('0xc2')](config[_0x3e3c('0xc3')],_0x3e3c('0xc4'),_0x3e3c('0xc5'),_0x3e3c('0xc6'));var _0xcb797=path[_0x3e3c('0xc2')](config[_0x3e3c('0xc3')],_0x3e3c('0xc4'),_0x3e3c('0xc5'),_0x3e3c('0xc7'));var _0x3529d5=path['join'](_0x587e52,_0x4f02db);var _0x3802da=util[_0x3e3c('0xb7')]('transcript-%d-%s.zip',_0x33bc2b['params']['id'],_0x4f02db);var _0x6bcfad=path[_0x3e3c('0xc2')](_0x587e52,_0x3802da);var _0x35cef9=[];_0x35cef9['push']({'model':db[_0x3e3c('0x6c')],'as':_0x3e3c('0x6c'),'attributes':['id',_0x3e3c('0x32')],'raw':!![]});_0x35cef9[_0x3e3c('0x37')]({'model':db[_0x3e3c('0xc8')],'as':_0x3e3c('0x61'),'attributes':['id',_0x3e3c('0xc9'),_0x3e3c('0xca')],'raw':!![]});if(_0x33bc2b['query'][_0x3e3c('0xc7')]){_0x35cef9[_0x3e3c('0x37')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x20daa7=[{'model':db[_0x3e3c('0xb2')],'as':_0x3e3c('0xcb'),'attributes':['id',_0x3e3c('0x6f'),'createdAt','direction',_0x3e3c('0xcc'),_0x3e3c('0x7b')],'include':_0x35cef9}];_0x20daa7['push']({'model':db[_0x3e3c('0xcd')],'as':_0x3e3c('0xce'),'attributes':['id',_0x3e3c('0x2f')]});_0x20daa7[_0x3e3c('0x37')]({'model':db[_0x3e3c('0x6c')],'as':_0x3e3c('0xcf'),'attributes':['id',_0x3e3c('0x32')]});return db[_0x3e3c('0x39')][_0x3e3c('0x65')]({'where':{'id':_0x33bc2b['params']['id']},'include':_0x20daa7})[_0x3e3c('0x2a')](handleEntityNotFound(_0x4b7806,null))[_0x3e3c('0x2a')](function(_0x2c280f){if(_0x2c280f){var _0x5ca169=_0x2c280f[_0x3e3c('0xd0')]({'plain':!![]});fs[_0x3e3c('0xd1')](_0x3529d5);var _0x3d8e8b={'channel':_0x3e3c('0xd2'),'account':_0x5ca169[_0x3e3c('0xce')][_0x3e3c('0x2f')],'agent':_0x5ca169[_0x3e3c('0xcf')]?_0x5ca169[_0x3e3c('0xcf')]['fullname']:_0x3e3c('0xd3'),'createdAt':moment(_0x5ca169[_0x3e3c('0x76')])['format'](_0x3e3c('0xd4'))['toString'](),'closedAt':_0x5ca169['closed']?moment(_0x5ca169['closedAt'])['format'](_0x3e3c('0xd4'))[_0x3e3c('0x96')]():'','disposition':_0x5ca169[_0x3e3c('0xd5')],'visibility':_0x5ca169[_0x3e3c('0xd6')]?_0x3e3c('0xd7'):_0x3e3c('0xd8'),'messages':_(_0x5ca169[_0x3e3c('0xcb')])[_0x3e3c('0x7f')]({'secret':![]})[_0x3e3c('0x31')](function(_0x1b32d1){if(_0x1b32d1[_0x3e3c('0xd9')]){var _0x43f1b7=path[_0x3e3c('0xc2')](_0xcb797,_0x1b32d1[_0x3e3c('0xd9')][_0x3e3c('0xda')]);if(fs['existsSync'](_0x43f1b7)){fs[_0x3e3c('0xdb')](_0x43f1b7)[_0x3e3c('0xdc')](fs['createWriteStream'](path[_0x3e3c('0xc2')](_0x3529d5,_0x1b32d1[_0x3e3c('0xd9')][_0x3e3c('0xda')])));}}return{'date':moment(_0x1b32d1[_0x3e3c('0x76')])[_0x3e3c('0xb7')](_0x3e3c('0xd4'))[_0x3e3c('0x96')](),'sender':_0x1b32d1[_0x3e3c('0xdd')]==='out'?_0x1b32d1[_0x3e3c('0x6c')]?_0x1b32d1[_0x3e3c('0x6c')][_0x3e3c('0x32')]:_0x3e3c('0xde'):_0x1b32d1[_0x3e3c('0x61')][_0x3e3c('0xc9')]+(_0x1b32d1['Contact'][_0x3e3c('0xca')]?'\x20'+_0x1b32d1[_0x3e3c('0x61')][_0x3e3c('0xca')]:''),'body':_0x1b32d1[_0x3e3c('0xd9')]?_0x1b32d1['Attachment'][_0x3e3c('0xda')]:_0x1b32d1['body'],'direction':_0x1b32d1[_0x3e3c('0xdd')]==='out'?'A':'C','secret':_0x1b32d1[_0x3e3c('0xcc')],'read':_0x1b32d1['read'],'attachment':_0x1b32d1[_0x3e3c('0xd9')]};})[_0x3e3c('0x64')]()};return ejs[_0x3e3c('0xdf')](path[_0x3e3c('0xc2')](config[_0x3e3c('0xc3')],_0x3e3c('0xc4'),'views',_0x3e3c('0xe0')),{'interaction':_0x3d8e8b})[_0x3e3c('0x2a')](function(_0x19950a){var _0x149ca8=path[_0x3e3c('0xc2')](_0x3529d5,_0x3e3c('0xe1')+_0x5ca169['id']+'-'+_0x4f02db+_0x3e3c('0xe2'));var _0x4418e3={'path':_0x149ca8,'channel':_0x3e3c('0xd2'),'interactionId':_0x5ca169['id']};return pdf[_0x3e3c('0xe3')](_0x19950a,_0x4418e3);})[_0x3e3c('0x2a')](function(){return new BPromise(function(_0x2dc9b6,_0x28dcf8){zipdir(_0x3529d5,{'saveTo':_0x6bcfad},function(_0x4f2638,_0x2423a6){if(_0x4f2638)return _0x28dcf8(_0x4f2638);return _0x2dc9b6(_0x2423a6);});})[_0x3e3c('0x2a')](function(){return new BPromise(function(_0x340abc,_0x2ba640){rimraf(_0x3529d5,function(_0x4fc12c){if(_0x4fc12c)_0x2ba640(_0x4fc12c);return _0x340abc();});});})[_0x3e3c('0x2a')](function(){return _0x4b7806['download'](_0x6bcfad,_0x3802da,function(_0x5787fc){if(_0x5787fc){console[_0x3e3c('0xe4')](_0x3e3c('0xe5'),_0x5787fc);}else{fs[_0x3e3c('0xe6')](_0x6bcfad);}});});});}else{return _0x4b7806[_0x3e3c('0x1e')](0xc8);}})[_0x3e3c('0x38')](handleError(_0x4b7806,null));};
\ No newline at end of file
+var _0xb80c=['rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','u.id','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','me.OpenchannelInteractionId\x20=\x20i.id','expr','parseSearch','search','sqlOperator','length','find','unreadMessages','value','`\x20=\x200','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','ContactId','buildExpression','text','start','Tag','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','compact','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','isEmpty','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','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','i.*','c.firstName','Contact.firstName','c.lastName','c.email','Contact.phone','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','show','from','OpenchannelInteraction','includeAll','include','options','create','update','params','describe','addMessage','OpenchannelMessage','ids','omit','findOne','rows','addTags','setTags','spread','findAll','emit','openchannelInteractionTags:save','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','CmContact','firstName','lastName','Attachment','Messages','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','Public','Private','existsSync','createReadStream','createWriteStream','basename','out','System','direction','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Openchannel','createPdfFromHTML','download','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','name','send','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','index'];(function(_0x341c44,_0x2e1057){var _0x2bda72=function(_0x11d26a){while(--_0x11d26a){_0x341c44['push'](_0x341c44['shift']());}};_0x2bda72(++_0x2e1057);}(_0xb80c,0xba));var _0xcb80=function(_0x4c6513,_0x15b9d1){_0x4c6513=_0x4c6513-0x0;var _0x158989=_0xb80c[_0x4c6513];return _0x158989;};'use strict';var emlformat=require(_0xcb80('0x0'));var rimraf=require(_0xcb80('0x1'));var zipdir=require(_0xcb80('0x2'));var jsonpatch=require(_0xcb80('0x3'));var rp=require(_0xcb80('0x4'));var moment=require(_0xcb80('0x5'));var BPromise=require(_0xcb80('0x6'));var Mustache=require(_0xcb80('0x7'));var util=require(_0xcb80('0x8'));var path=require(_0xcb80('0x9'));var sox=require(_0xcb80('0xa'));var csv=require(_0xcb80('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcb80('0xc'));var _=require('lodash');var squel=require(_0xcb80('0xd'));var crypto=require(_0xcb80('0xe'));var jsforce=require(_0xcb80('0xf'));var deskjs=require(_0xcb80('0x10'));var toCsv=require(_0xcb80('0xb'));var querystring=require(_0xcb80('0x11'));var Papa=require(_0xcb80('0x12'));var Redis=require(_0xcb80('0x13'));var authService=require(_0xcb80('0x14'));var qs=require(_0xcb80('0x15'));var as=require(_0xcb80('0x16'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xcb80('0x17'));var logger=require(_0xcb80('0x18'))('api');var utils=require('../../config/utils');var config=require(_0xcb80('0x19'));var licenseUtil=require(_0xcb80('0x1a'));var db=require(_0xcb80('0x1b'))['db'];config[_0xcb80('0x1c')]=_['defaults'](config[_0xcb80('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xcb80('0x1d'))(new Redis(config[_0xcb80('0x1c')]));require(_0xcb80('0x1e'))[_0xcb80('0x1f')](socket);function respondWithStatusCode(_0x5e7573,_0x90e581){_0x90e581=_0x90e581||0xcc;return function(_0x15f51b){if(_0x15f51b){return _0x5e7573[_0xcb80('0x20')](_0x90e581);}return _0x5e7573[_0xcb80('0x21')](_0x90e581)[_0xcb80('0x22')]();};}function respondWithResult(_0x1936af,_0x2d747e){_0x2d747e=_0x2d747e||0xc8;return function(_0x259164){if(_0x259164){return _0x1936af[_0xcb80('0x21')](_0x2d747e)['json'](_0x259164);}};}function respondWithFilteredResult(_0x48a404,_0x168050){return function(_0x11b4f5){if(_0x11b4f5){var _0x2cbac3=typeof _0x168050[_0xcb80('0x23')]===_0xcb80('0x24')&&typeof _0x168050[_0xcb80('0x25')]==='undefined';var _0xcfb783=_0x11b4f5[_0xcb80('0x26')];var _0x50fc92=_0x2cbac3?0x0:_0x168050[_0xcb80('0x23')];var _0x365683=_0x2cbac3?_0x11b4f5[_0xcb80('0x26')]:_0x168050['offset']+_0x168050[_0xcb80('0x25')];var _0xee7509;if(_0x365683>=_0xcfb783){_0x365683=_0xcfb783;_0xee7509=0xc8;}else{_0xee7509=0xce;}_0x48a404[_0xcb80('0x21')](_0xee7509);return _0x48a404[_0xcb80('0x27')](_0xcb80('0x28'),_0x50fc92+'-'+_0x365683+'/'+_0xcfb783)['json'](_0x11b4f5);}return null;};}function patchUpdates(_0x2872e3){return function(_0x2035bc){try{jsonpatch['apply'](_0x2035bc,_0x2872e3,!![]);}catch(_0x189126){return BPromise[_0xcb80('0x29')](_0x189126);}return _0x2035bc[_0xcb80('0x2a')]();};}function saveUpdates(_0x1804d1,_0x4db884){return function(_0x380402){if(_0x380402){return _0x380402['update'](_0x1804d1)[_0xcb80('0x2b')](function(_0x3ddc5f){return _0x3ddc5f;});}return null;};}function removeEntity(_0x344236,_0x34b329){return function(_0x133fe6){if(_0x133fe6){return _0x133fe6[_0xcb80('0x2c')]()[_0xcb80('0x2b')](function(){_0x344236[_0xcb80('0x21')](0xcc)[_0xcb80('0x22')]();});}};}function handleEntityNotFound(_0x14fef0,_0x567b3c){return function(_0x1ed4a8){if(!_0x1ed4a8){_0x14fef0[_0xcb80('0x20')](0x194);}return _0x1ed4a8;};}function handleError(_0x5b032d,_0x577133){_0x577133=_0x577133||0x1f4;return function(_0x9b1663){logger[_0xcb80('0x2d')](_0x9b1663[_0xcb80('0x2e')]);if(_0x9b1663[_0xcb80('0x2f')]){delete _0x9b1663[_0xcb80('0x2f')];}_0x5b032d['status'](_0x577133)[_0xcb80('0x30')](_0x9b1663);};}function getInteractionUsers(_0x40ff50,_0x4af9fe){return new BPromise(function(_0x32db89,_0x1698bb){try{if(_0x4af9fe[_0x40ff50['id']]){_0x40ff50[_0xcb80('0x31')]=_[_0xcb80('0x32')](_0x4af9fe[_0x40ff50['id']],function(_0x5c2b03){return{'id':_0x5c2b03['id'],'fullname':_0x5c2b03[_0xcb80('0x33')]};});}}catch(_0x174a72){_0x1698bb(_0x174a72);}_0x32db89(_0x40ff50);});}function getInteractionTags(_0x5c396e,_0x1813f9){return new BPromise(function(_0x4ad501,_0x4fbc87){try{if(_0x5c396e[_0xcb80('0x34')]){_0x5c396e[_0xcb80('0x35')]=[];_0x5c396e[_0xcb80('0x34')][_0xcb80('0x36')](',')[_0xcb80('0x37')](function(_0x183728){_0x5c396e['Tags'][_0xcb80('0x38')](_0x1813f9[_0x183728]);});}delete _0x5c396e[_0xcb80('0x34')];}catch(_0xbccf5e){_0x4fbc87(_0xbccf5e);}_0x4ad501(_0x5c396e);});}function updateOpenchannelInteraction(_0x5242ec,_0x441979,_0x5e9af1){return new BPromise(function(_0x953fab,_0x3e2436){return getInteractionUsers(_0x5242ec,_0x5e9af1)[_0xcb80('0x2b')](function(_0x1c3ed7){return getInteractionTags(_0x1c3ed7,_0x441979);})['then'](function(_0x4028a4){_0x953fab(_0x4028a4);})[_0xcb80('0x39')](function(_0x202ca7){_0x3e2436(_0x202ca7);});});}exports[_0xcb80('0x3a')]=function(_0x5ac47d,_0x23b668){var _0x123a81={},_0x307838={},_0x372da0={'count':0x0,'rows':[]};var _0x4ef517=_['map'](db['OpenchannelInteraction'][_0xcb80('0x3b')],function(_0xee6e1a){return{'name':_0xee6e1a[_0xcb80('0x3c')],'type':_0xee6e1a[_0xcb80('0x3d')]['key']};});_0x307838['model']=_['map'](_0x4ef517,_0xcb80('0x2f'));_0x307838[_0xcb80('0x3e')]=_[_0xcb80('0x3f')](_0x5ac47d['query']);_0x307838[_0xcb80('0x40')]=_[_0xcb80('0x41')](_0x307838[_0xcb80('0x42')],_0x307838['query']);_0x123a81[_0xcb80('0x43')]=_[_0xcb80('0x41')](_0x307838['model'],qs[_0xcb80('0x44')](_0x5ac47d['query'][_0xcb80('0x44')]));_0x123a81[_0xcb80('0x43')]=_0x123a81[_0xcb80('0x43')]['length']?_0x123a81[_0xcb80('0x43')]:_0x307838['model'];if(!_0x5ac47d['query'][_0xcb80('0x45')](_0xcb80('0x46'))){_0x123a81[_0xcb80('0x25')]=qs[_0xcb80('0x25')](_0x5ac47d[_0xcb80('0x3e')]['limit']);_0x123a81[_0xcb80('0x23')]=qs[_0xcb80('0x23')](_0x5ac47d['query'][_0xcb80('0x23')]);}_0x123a81[_0xcb80('0x47')]=qs['sort'](_0x5ac47d[_0xcb80('0x3e')][_0xcb80('0x48')]);_0x123a81[_0xcb80('0x49')]=qs[_0xcb80('0x40')](_[_0xcb80('0x4a')](_0x5ac47d[_0xcb80('0x3e')],_0x307838[_0xcb80('0x40')]),_0x4ef517);var _0x27eece=[];var _0x3d7f4d=squel[_0xcb80('0x4b')]()[_0xcb80('0x4c')]('id')[_0xcb80('0x4c')](_0xcb80('0x2f'))['field'](_0xcb80('0x4d'))['from']('tools_tags');var _0x2b7fd0=squel['select']()[_0xcb80('0x4c')](_0xcb80('0x4e'))[_0xcb80('0x4c')]('u.fullname')[_0xcb80('0x4c')](_0xcb80('0x4f'))['from'](_0xcb80('0x50'),'ui')[_0xcb80('0x51')](_0xcb80('0x52'),'u',_0xcb80('0x53'));var _0x3c943b=squel[_0xcb80('0x4b')]()['from'](_0xcb80('0x54'),'i')[_0xcb80('0x51')](_0xcb80('0x55'),'c',_0xcb80('0x56'))[_0xcb80('0x51')](_0xcb80('0x52'),'o',_0xcb80('0x57'))[_0xcb80('0x51')](_0xcb80('0x58'),'a',_0xcb80('0x59'))[_0xcb80('0x51')]('openchannel_messages','me',_0xcb80('0x5a'))[_0xcb80('0x51')]('openchannel_interaction_has_tags','it','it.OpenchannelInteractionId\x20=\x20i.id')['left_join']('tools_tags','t','t.id\x20=\x20it.TagId');var _0x438dbc=squel[_0xcb80('0x5b')]();var _0x37d0b7=[];var _0x4f6384=squel[_0xcb80('0x5b')]();var _0x3e6830;if(_0x5ac47d[_0xcb80('0x3e')]['search']){_0x3e6830=as[_0xcb80('0x5c')](_0x5ac47d[_0xcb80('0x3e')][_0xcb80('0x5d')]);var _0x6fa3fa=_0x3e6830[_0xcb80('0x5e')];for(var _0x3fa376=0x0;_0x3fa376<_0x3e6830['conditions'][_0xcb80('0x5f')];_0x3fa376++){var _0x9a6f04=_0x3e6830['conditions'][_0x3fa376];var _0x5e4187='i';var _0x8d99bb=_[_0xcb80('0x60')](_0x4ef517,['name',_0x9a6f04[_0xcb80('0x4c')]]);if(!_0x8d99bb){switch(_0x9a6f04[_0xcb80('0x4c')]){case _0xcb80('0x61'):if(_0x9a6f04[_0xcb80('0x62')]==0x1){_0x3c943b['having']('`'+_0x9a6f04[_0xcb80('0x4c')]+_0xcb80('0x63'));}else{_0x3c943b[_0xcb80('0x64')]('`'+_0x9a6f04['field']+_0xcb80('0x65'));}break;case _0xcb80('0x66'):if(_0x9a6f04[_0xcb80('0x67')]===_0xcb80('0x68')){if(_0x9a6f04[_0xcb80('0x62')][_0xcb80('0x36')]('\x20')['length']>0x1){_0x438dbc[_0x6fa3fa](_0xcb80('0x69'),qs[_0xcb80('0x6a')](_0x9a6f04[_0xcb80('0x62')]),null);}else{var _0x50f78a='%'+_0x9a6f04['value']+'%';_0x438dbc[_0x6fa3fa]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x50f78a,_0x50f78a,_0x50f78a);}}else{_0x8d99bb=_[_0xcb80('0x60')](_0x4ef517,[_0xcb80('0x2f'),'ContactId']);_0x9a6f04[_0xcb80('0x4c')]=_0xcb80('0x6b');_0x43e2de=as[_0xcb80('0x6c')](_0x5e4187,_0x8d99bb['type'],_0x9a6f04);_0x438dbc[_0x6fa3fa](_0x43e2de[_0xcb80('0x6d')],_0x43e2de[_0xcb80('0x62')][_0xcb80('0x6e')],_0x43e2de[_0xcb80('0x62')]['end']);}break;case _0xcb80('0x6f'):var _0x41f5a0=_0x9a6f04[_0xcb80('0x62')]['split'](',')['map'](function(_0x51ec79){return Number(_0x51ec79);});_0x41f5a0['forEach'](function(_0x3e6dca){_0x4f6384['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x3e6dca+',%');});_0x37d0b7=_['union'](_0x37d0b7,_0x41f5a0);break;case _0xcb80('0x70'):if(_0x9a6f04['operator']===_0xcb80('0x68')){_0x438dbc[_0x6fa3fa](_0xcb80('0x71'),'%'+_0x9a6f04[_0xcb80('0x62')]+'%',null);}else{_0x8d99bb=_['find'](_0x4ef517,[_0xcb80('0x2f'),_0xcb80('0x72')]);_0x9a6f04['field']='UserId';_0x43e2de=as[_0xcb80('0x6c')](_0x5e4187,_0x8d99bb['type'],_0x9a6f04);_0x438dbc[_0x6fa3fa](_0x43e2de[_0xcb80('0x6d')],_0x43e2de[_0xcb80('0x62')][_0xcb80('0x6e')],_0x43e2de[_0xcb80('0x62')][_0xcb80('0x22')]);}break;case _0xcb80('0x73'):_0x43e2de=as[_0xcb80('0x6c')]('me',null,_0x9a6f04);_0x438dbc[_0x6fa3fa](_0x43e2de['text'],_0x43e2de[_0xcb80('0x62')][_0xcb80('0x6e')],_0x43e2de[_0xcb80('0x62')]['end']);break;}}else{var _0x43e2de=as[_0xcb80('0x6c')](_0x5e4187,_0x8d99bb[_0xcb80('0x3d')],_0x9a6f04);_0x438dbc[_0x6fa3fa](_0x43e2de[_0xcb80('0x6d')],_0x43e2de[_0xcb80('0x62')][_0xcb80('0x6e')],_0x43e2de[_0xcb80('0x62')]['end']);}}}else{var _0x4149ba=_(_0x5ac47d['query'])['keys']()[_0xcb80('0x32')](function(_0x319216){return _['some'](_0x4ef517,[_0xcb80('0x2f'),_0x319216])?_0x319216:undefined;})[_0xcb80('0x74')]()['value']();if(!_['isEmpty'](_0x4149ba)){_0x4149ba[_0xcb80('0x37')](function(_0x4b5b79){if(_0x4b5b79===_0xcb80('0x75')){_0x3c943b[_0xcb80('0x49')](_0xcb80('0x76'),[][_0xcb80('0x77')](_0x5ac47d[_0xcb80('0x3e')][_0x4b5b79]));}else if(_0x4b5b79===_0xcb80('0x78')){var _0x1dcf4c=JSON[_0xcb80('0x79')](_0x5ac47d[_0xcb80('0x3e')][_0x4b5b79])[_0xcb80('0x7a')];var _0x596d54=JSON['parse'](_0x5ac47d[_0xcb80('0x3e')][_0x4b5b79])['$lte'];_0x3c943b['where'](_0xcb80('0x7b'),_0x1dcf4c,_0x596d54);}else{if(_0x5ac47d['query'][_0x4b5b79]===_0xcb80('0x7c')){_0x3c943b[_0xcb80('0x49')]('i.'+_0x4b5b79+_0xcb80('0x7d'));}else{_0x3c943b['where']('i.'+_0x4b5b79+_0xcb80('0x7e'),_0x5ac47d[_0xcb80('0x3e')][_0x4b5b79]);}}});}if(_0x5ac47d[_0xcb80('0x3e')]['read']){if(_0x5ac47d['query'][_0xcb80('0x7f')]==0x1){_0x3c943b[_0xcb80('0x64')](_0xcb80('0x80'));}else{_0x3c943b[_0xcb80('0x64')](_0xcb80('0x81'));}}if(_0x5ac47d['query'][_0xcb80('0x82')]){_0x37d0b7=_[_0xcb80('0x83')](_0x5ac47d['query'][_0xcb80('0x82')])?_0x5ac47d[_0xcb80('0x3e')][_0xcb80('0x82')]:new Array(_0x5ac47d[_0xcb80('0x3e')]['tag']);_0x37d0b7[_0xcb80('0x37')](function(_0x138f75){_0x4f6384['or'](_0xcb80('0x84'),'%,'+_0x138f75+',%');});}if(_0x5ac47d[_0xcb80('0x3e')][_0xcb80('0x85')]){var _0x106adc=_0x5ac47d['query'][_0xcb80('0x85')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xcb80('0x86')](_0x106adc)){_0x438dbc['or'](_0xcb80('0x87'),_0x106adc+'%');}else{_0x438dbc['or'](_0xcb80('0x88'),qs['getFullTextValue'](_0x106adc))['or'](_0xcb80('0x89'),_0x106adc+'%')['or'](_0xcb80('0x8a'),_0x106adc+'%');}}}_0x3c943b[_0xcb80('0x49')](_0x438dbc);_0x3c943b[_0xcb80('0x8b')](_0xcb80('0x8c'));var _0x34a365={'type':db[_0xcb80('0x8d')][_0xcb80('0x8e')]['SELECT'],'raw':!![]};var _0x420515=_0x3c943b['clone']();_0x420515[_0xcb80('0x4c')](_0xcb80('0x8c'));_0x420515[_0xcb80('0x4c')](_0xcb80('0x8f'),'unreadMessages');if(_0x123a81[_0xcb80('0x47')]){_0x123a81[_0xcb80('0x47')][_0xcb80('0x37')](function(_0x3d3193){var _0x2f1ded=_0x3d3193[0x0]===_0xcb80('0x90')?_0x3d3193[0x0]:'i.'+_0x3d3193[0x0];_0x3c943b[_0xcb80('0x47')](_0x2f1ded,_0x3d3193[0x1]===_0xcb80('0x91')?![]:!![]);});}if(!_['isEmpty'](_0x37d0b7)){_0x3c943b[_0xcb80('0x64')](_0x4f6384);_0x420515[_0xcb80('0x49')](_0xcb80('0x92'),_0x37d0b7);}BPromise[_0xcb80('0x93')]()[_0xcb80('0x2b')](function(){if(!_0x3e6830){if(_0x5ac47d['query'][_0xcb80('0x75')])return;_0x420515[_0xcb80('0x49')](_0xcb80('0x94'));_0x3c943b[_0xcb80('0x49')](_0xcb80('0x94'));return;}if(_0x5ac47d[_0xcb80('0x95')][_0xcb80('0x96')]!==_0xcb80('0x97'))return;return _0x5ac47d[_0xcb80('0x95')][_0xcb80('0x98')]({'attributes':['id'],'raw':!![]})[_0xcb80('0x2b')](function(_0x1a793e){if(_[_0xcb80('0x99')](_0x1a793e)){_0x420515[_0xcb80('0x49')](_0xcb80('0x9a'));_0x3c943b[_0xcb80('0x49')](_0xcb80('0x9a'));}else{_0x420515[_0xcb80('0x49')](_0xcb80('0x76'),_[_0xcb80('0x32')](_0x1a793e,'id'));_0x3c943b[_0xcb80('0x49')](_0xcb80('0x76'),_[_0xcb80('0x32')](_0x1a793e,'id'));}});})[_0xcb80('0x2b')](function(){if(_0x5ac47d['user'][_0xcb80('0x96')]===_0xcb80('0x97')&&!_0x3e6830&&!_0x5ac47d[_0xcb80('0x3e')][_0xcb80('0x75')])return[];return db[_0xcb80('0x9b')][_0xcb80('0x3e')](_0x420515[_0xcb80('0x9c')](),_0x34a365);})['then'](function(_0x37f3cf){_0x372da0[_0xcb80('0x26')]=_0x37f3cf[_0xcb80('0x5f')];if(_0x372da0['count']===0x0)return[];return db[_0xcb80('0x9b')][_0xcb80('0x3e')](_0x3d7f4d[_0xcb80('0x9c')](),_0x34a365)[_0xcb80('0x2b')](function(_0x518820){_0x27eece=_[_0xcb80('0x9d')](_0x518820,'id');_0x34a365=_[_0xcb80('0x9e')](_0x34a365,{'model':db['OpenchannelInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5ac47d[_0xcb80('0x3e')][_0xcb80('0x44')]){_0x123a81[_0xcb80('0x43')][_0xcb80('0x37')](function(_0x321db6){_0x3c943b[_0xcb80('0x4c')]('i.'+_0x321db6);});}else{_0x3c943b[_0xcb80('0x4c')](_0xcb80('0x8f'),_0xcb80('0x61'));_0x3c943b['field'](_0xcb80('0x9f'),_0xcb80('0xa0'));_0x3c943b['field'](_0xcb80('0xa1'),_0xcb80('0xa2'));_0x3c943b['field'](_0xcb80('0xa3'),'contactName');_0x3c943b[_0xcb80('0x4c')](_0xcb80('0xa4'));_0x3c943b['field'](_0xcb80('0xa5'),_0xcb80('0xa6'));_0x3c943b['field'](_0xcb80('0xa7'),'Contact.lastName');_0x3c943b[_0xcb80('0x4c')](_0xcb80('0xa8'),'Contact.email');_0x3c943b[_0xcb80('0x4c')]('c.phone',_0xcb80('0xa9'));_0x3c943b['field']('c.mobile','Contact.mobile');_0x3c943b[_0xcb80('0x4c')](_0xcb80('0xaa'),_0xcb80('0xab'));_0x3c943b[_0xcb80('0x4c')](_0xcb80('0xac'),_0xcb80('0xad'));_0x3c943b[_0xcb80('0x4c')](_0xcb80('0xae'),'Owner.internal');_0x3c943b['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0xcb80('0x34'));}if(_0x123a81[_0xcb80('0x25')])_0x3c943b['limit'](_0x123a81[_0xcb80('0x25')]);if(_0x123a81[_0xcb80('0x23')])_0x3c943b[_0xcb80('0x23')](_0x123a81[_0xcb80('0x23')]);return db[_0xcb80('0x9b')][_0xcb80('0x3e')](_0x3c943b[_0xcb80('0x9c')](),_0x34a365);})['then'](function(_0x1f16ae){if(_0x1f16ae[_0xcb80('0x5f')]>0x0)_0x2b7fd0[_0xcb80('0x49')](_0xcb80('0xaf'),_[_0xcb80('0x32')](_0x1f16ae,'id'));return db[_0xcb80('0x9b')][_0xcb80('0x3e')](_0x2b7fd0[_0xcb80('0x9c')](),_0x34a365)[_0xcb80('0x2b')](function(_0x4f3394){var _0x140b96=_[_0xcb80('0xb0')](_0x4f3394,_0xcb80('0xb1'));var _0x9a0189=[];_0x1f16ae[_0xcb80('0x37')](function(_0x31f7a3){_0x9a0189[_0xcb80('0x38')](updateOpenchannelInteraction(_0x31f7a3,_0x27eece,_0x140b96));});return BPromise[_0xcb80('0xb2')](_0x9a0189);});});})[_0xcb80('0x2b')](function(_0x4a00e7){_0x372da0['rows']=_0x4a00e7;return _0x372da0;})[_0xcb80('0x2b')](respondWithFilteredResult(_0x23b668,_0x123a81))[_0xcb80('0x39')](handleError(_0x23b668,null));};exports[_0xcb80('0xb3')]=function(_0x3959b5,_0x2d2f4f){var _0x26af50={};if(_0x3959b5[_0xcb80('0x3e')][_0xcb80('0x3d')]&&_0x3959b5['query'][_0xcb80('0x3d')]===_0xcb80('0xb4')){_0x26af50[_0xcb80('0xb4')]=_0x3959b5['params']['id'];}else{_0x26af50['id']=_0x3959b5['params']['id'];}var _0x4386dd={'raw':![],'where':_0x26af50},_0x54d43f={};_0x54d43f['model']=_[_0xcb80('0x3f')](db[_0xcb80('0xb5')]['rawAttributes']);_0x54d43f[_0xcb80('0x3e')]=_[_0xcb80('0x3f')](_0x3959b5[_0xcb80('0x3e')]);_0x54d43f['filters']=_['intersection'](_0x54d43f[_0xcb80('0x42')],_0x54d43f[_0xcb80('0x3e')]);_0x4386dd[_0xcb80('0x43')]=_[_0xcb80('0x41')](_0x54d43f['model'],qs['fields'](_0x3959b5[_0xcb80('0x3e')][_0xcb80('0x44')]));_0x4386dd[_0xcb80('0x43')]=_0x4386dd[_0xcb80('0x43')][_0xcb80('0x5f')]?_0x4386dd['attributes']:_0x54d43f[_0xcb80('0x42')];if(_0x3959b5[_0xcb80('0x3e')][_0xcb80('0xb6')]){_0x4386dd[_0xcb80('0xb7')]=[{'all':!![]}];}_0x4386dd=_[_0xcb80('0x9e')]({},_0x4386dd,_0x3959b5[_0xcb80('0xb8')]);return db[_0xcb80('0xb5')][_0xcb80('0x60')](_0x4386dd)[_0xcb80('0x2b')](handleEntityNotFound(_0x2d2f4f,null))[_0xcb80('0x2b')](respondWithResult(_0x2d2f4f,null))[_0xcb80('0x39')](handleError(_0x2d2f4f,null));};exports[_0xcb80('0xb9')]=function(_0x1294bf,_0x402257){return db[_0xcb80('0xb5')][_0xcb80('0xb9')](_0x1294bf['body'],{})[_0xcb80('0x2b')](respondWithResult(_0x402257,0xc9))[_0xcb80('0x39')](handleError(_0x402257,null));};exports[_0xcb80('0xba')]=function(_0x30e4ab,_0x233808){if(_0x30e4ab[_0xcb80('0x73')]['id']){delete _0x30e4ab[_0xcb80('0x73')]['id'];}return db[_0xcb80('0xb5')][_0xcb80('0x60')]({'where':{'id':_0x30e4ab[_0xcb80('0xbb')]['id']}})[_0xcb80('0x2b')](handleEntityNotFound(_0x233808,null))['then'](saveUpdates(_0x30e4ab[_0xcb80('0x73')],null))[_0xcb80('0x2b')](respondWithResult(_0x233808,null))[_0xcb80('0x39')](handleError(_0x233808,null));};exports[_0xcb80('0x2c')]=function(_0x5d3707,_0x30f6e5){return db['OpenchannelInteraction']['find']({'where':{'id':_0x5d3707['params']['id']}})[_0xcb80('0x2b')](handleEntityNotFound(_0x30f6e5,null))[_0xcb80('0x2b')](removeEntity(_0x30f6e5,null))[_0xcb80('0x39')](handleError(_0x30f6e5,null));};exports['describe']=function(_0x339d5b,_0x3cf4be){return db[_0xcb80('0xb5')][_0xcb80('0xbc')]()[_0xcb80('0x2b')](respondWithResult(_0x3cf4be,null))[_0xcb80('0x39')](handleError(_0x3cf4be,null));};exports[_0xcb80('0xbd')]=function(_0x510344,_0x297533,_0x445898){return db[_0xcb80('0xbe')][_0xcb80('0x60')]({'where':{'id':_0x510344[_0xcb80('0xbb')]['id']}})['then'](handleEntityNotFound(_0x297533,null))[_0xcb80('0x2b')](function(_0x56405c){if(_0x56405c){return _0x56405c[_0xcb80('0xbd')](_0x510344['body'][_0xcb80('0xbf')],_[_0xcb80('0xc0')](_0x510344['body'],[_0xcb80('0xbf'),'id'])||{});}})[_0xcb80('0x2b')](respondWithResult(_0x297533,null))[_0xcb80('0x39')](handleError(_0x297533,null));};exports['getMessages']=function(_0x3c0323,_0x2aef2f,_0x26c672){var _0x5088f9={'raw':![],'where':{}};var _0x59c68f={};var _0x40b41c={'count':0x0,'rows':[]};return db[_0xcb80('0xb5')][_0xcb80('0xc1')]({'where':{'id':_0x3c0323['params']['id']}})[_0xcb80('0x2b')](handleEntityNotFound(_0x2aef2f,null))[_0xcb80('0x2b')](function(_0x31db05){if(_0x31db05){_0x59c68f[_0xcb80('0x42')]=_['keys'](db[_0xcb80('0xbe')][_0xcb80('0x3b')]);_0x59c68f[_0xcb80('0x3e')]=_['keys'](_0x3c0323[_0xcb80('0x3e')]);_0x59c68f['filters']=_[_0xcb80('0x41')](_0x59c68f[_0xcb80('0x42')],_0x59c68f['query']);_0x5088f9[_0xcb80('0x43')]=_[_0xcb80('0x41')](_0x59c68f[_0xcb80('0x42')],qs[_0xcb80('0x44')](_0x3c0323['query']['fields']));_0x5088f9['attributes']=_0x5088f9[_0xcb80('0x43')][_0xcb80('0x5f')]?_0x5088f9[_0xcb80('0x43')]:_0x59c68f[_0xcb80('0x42')];if(!_0x3c0323[_0xcb80('0x3e')][_0xcb80('0x45')](_0xcb80('0x46'))){_0x5088f9['limit']=qs[_0xcb80('0x25')](_0x3c0323[_0xcb80('0x3e')][_0xcb80('0x25')]);_0x5088f9[_0xcb80('0x23')]=qs[_0xcb80('0x23')](_0x3c0323[_0xcb80('0x3e')]['offset']);}_0x5088f9[_0xcb80('0x47')]=qs[_0xcb80('0x48')](_0x3c0323['query'][_0xcb80('0x48')]);_0x5088f9[_0xcb80('0x49')]=qs[_0xcb80('0x40')](_[_0xcb80('0x4a')](_0x3c0323['query'],_0x59c68f[_0xcb80('0x40')]));_0x5088f9[_0xcb80('0x49')]['OpenchannelInteractionId']=_0x31db05['id'];if(_0x3c0323[_0xcb80('0x3e')]['filter']){_0x5088f9[_0xcb80('0x49')]=_['merge'](_0x5088f9[_0xcb80('0x49')],{'$or':_[_0xcb80('0x32')](_0x5088f9['attributes'],function(_0x5eb9f9){var _0x1dd0e4={};_0x1dd0e4[_0x5eb9f9]={'$like':'%'+_0x3c0323[_0xcb80('0x3e')][_0xcb80('0x85')]+'%'};return _0x1dd0e4;})});}if(_0x3c0323[_0xcb80('0x3e')][_0xcb80('0x7a')]){var _0x55a9f4=_0x3c0323[_0xcb80('0x3e')][_0xcb80('0x7a')][_0xcb80('0x36')](',');var _0x35d39f={};_0x35d39f[_0x55a9f4[0x0]]={'$gte':moment(_0x55a9f4[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x5088f9[_0xcb80('0x49')]=_[_0xcb80('0x9e')](_0x5088f9[_0xcb80('0x49')],_0x35d39f);}_0x5088f9=_[_0xcb80('0x9e')]({},_0x5088f9,_0x3c0323['options']);return db[_0xcb80('0xbe')][_0xcb80('0x26')]({'where':_0x5088f9['where']})['then'](function(_0x18d696){_0x40b41c[_0xcb80('0x26')]=_0x18d696;if(_0x3c0323[_0xcb80('0x3e')][_0xcb80('0xb6')]){_0x5088f9['include']=[{'all':!![]}];}return db[_0xcb80('0xbe')]['findAll'](_0x5088f9);})['then'](function(_0x4e7f67){_0x40b41c[_0xcb80('0xc2')]=_0x4e7f67;return _0x40b41c;});}})['then'](respondWithFilteredResult(_0x2aef2f,_0x5088f9))[_0xcb80('0x39')](handleError(_0x2aef2f,null));};exports[_0xcb80('0xc3')]=function(_0x3c5a86,_0x580286,_0x4e1623){return db[_0xcb80('0xb5')]['find']({'where':{'id':_0x3c5a86['params']['id']}})[_0xcb80('0x2b')](handleEntityNotFound(_0x580286,null))[_0xcb80('0x2b')](function(_0x86fa0c){if(_0x86fa0c){return _0x86fa0c[_0xcb80('0xc4')](_0x3c5a86[_0xcb80('0x73')][_0xcb80('0xbf')],_['omit'](_0x3c5a86[_0xcb80('0x73')],['ids','id'])||{})[_0xcb80('0xc5')](function(){return db[_0xcb80('0x6f')][_0xcb80('0xc6')]({'attributes':['id',_0xcb80('0x2f'),'color'],'where':{'id':_0x3c5a86[_0xcb80('0x73')][_0xcb80('0xbf')]}});})['then'](function(_0x30ad02){socket[_0xcb80('0xc7')](_0xcb80('0xc8'),{'id':Number(_0x3c5a86[_0xcb80('0xbb')]['id']),'tags':_0x30ad02||[]});return{'id':Number(_0x3c5a86[_0xcb80('0xbb')]['id']),'tags':_0x30ad02||[]};});}})[_0xcb80('0x2b')](respondWithResult(_0x580286,null))[_0xcb80('0x39')](handleError(_0x580286,null));};exports['removeTags']=function(_0x18508b,_0x3d88bd,_0x12ce41){return db[_0xcb80('0xb5')][_0xcb80('0x60')]({'where':{'id':_0x18508b[_0xcb80('0xbb')]['id']}})[_0xcb80('0x2b')](handleEntityNotFound(_0x3d88bd,null))[_0xcb80('0x2b')](function(_0x445521){if(_0x445521){return _0x445521['removeTags'](_0x18508b[_0xcb80('0x3e')][_0xcb80('0xbf')]);}})['then'](respondWithStatusCode(_0x3d88bd,null))['catch'](handleError(_0x3d88bd,null));};exports['download']=function(_0x42c81a,_0x31e77f){var _0x3fcfdb=moment()['unix']()[_0xcb80('0x9c')]();var _0xb467c5=path[_0xcb80('0xc9')](config[_0xcb80('0xca')],_0xcb80('0xcb'),_0xcb80('0xcc'),_0xcb80('0xcd'));var _0x121580=path['join'](config[_0xcb80('0xca')],_0xcb80('0xcb'),'files',_0xcb80('0xce'));var _0x390478=path[_0xcb80('0xc9')](_0xb467c5,_0x3fcfdb);var _0x29bf3a=util[_0xcb80('0xcf')](_0xcb80('0xd0'),_0x42c81a[_0xcb80('0xbb')]['id'],_0x3fcfdb);var _0x4d0f61=path[_0xcb80('0xc9')](_0xb467c5,_0x29bf3a);var _0x2c3c76=[];_0x2c3c76['push']({'model':db[_0xcb80('0x70')],'as':_0xcb80('0x70'),'attributes':['id','fullname'],'raw':!![]});_0x2c3c76[_0xcb80('0x38')]({'model':db[_0xcb80('0xd1')],'as':'Contact','attributes':['id',_0xcb80('0xd2'),_0xcb80('0xd3')],'raw':!![]});if(_0x42c81a[_0xcb80('0x3e')][_0xcb80('0xce')]){_0x2c3c76[_0xcb80('0x38')]({'model':db[_0xcb80('0xd4')],'as':_0xcb80('0xd4'),'raw':!![]});}var _0x384efb=[{'model':db[_0xcb80('0xbe')],'as':_0xcb80('0xd5'),'attributes':['id',_0xcb80('0x73'),_0xcb80('0x78'),'direction',_0xcb80('0xd6'),'read'],'include':_0x2c3c76}];_0x384efb['push']({'model':db[_0xcb80('0xd7')],'as':_0xcb80('0xd8'),'attributes':['id',_0xcb80('0x2f')]});_0x384efb[_0xcb80('0x38')]({'model':db[_0xcb80('0x70')],'as':_0xcb80('0xd9'),'attributes':['id',_0xcb80('0x33')]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x42c81a[_0xcb80('0xbb')]['id']},'include':_0x384efb})[_0xcb80('0x2b')](handleEntityNotFound(_0x31e77f,null))[_0xcb80('0x2b')](function(_0x2ad93d){if(_0x2ad93d){var _0xe68a1c=_0x2ad93d[_0xcb80('0xda')]({'plain':!![]});fs[_0xcb80('0xdb')](_0x390478);var _0x9e65be={'channel':'Openchannel','account':_0xe68a1c[_0xcb80('0xd8')][_0xcb80('0x2f')],'agent':_0xe68a1c['Owner']?_0xe68a1c['Owner'][_0xcb80('0x33')]:_0xcb80('0xdc'),'createdAt':moment(_0xe68a1c['createdAt'])['format'](_0xcb80('0xdd'))[_0xcb80('0x9c')](),'closedAt':_0xe68a1c[_0xcb80('0xde')]?moment(_0xe68a1c[_0xcb80('0xdf')])[_0xcb80('0xcf')]('YYYY-MM-DD\x20HH:mm:ss')[_0xcb80('0x9c')]():'','disposition':_0xe68a1c[_0xcb80('0xe0')],'visibility':_0xe68a1c['threadId']?_0xcb80('0xe1'):_0xcb80('0xe2'),'messages':_(_0xe68a1c['Messages'])[_0xcb80('0x85')]({'secret':![]})['map'](function(_0x25d746){if(_0x25d746['Attachment']){var _0x46cd3c=path[_0xcb80('0xc9')](_0x121580,_0x25d746['Attachment']['basename']);if(fs[_0xcb80('0xe3')](_0x46cd3c)){fs[_0xcb80('0xe4')](_0x46cd3c)['pipe'](fs[_0xcb80('0xe5')](path['join'](_0x390478,_0x25d746['Attachment'][_0xcb80('0xe6')])));}}return{'date':moment(_0x25d746[_0xcb80('0x78')])[_0xcb80('0xcf')](_0xcb80('0xdd'))[_0xcb80('0x9c')](),'sender':_0x25d746['direction']===_0xcb80('0xe7')?_0x25d746['User']?_0x25d746[_0xcb80('0x70')][_0xcb80('0x33')]:_0xcb80('0xe8'):_0x25d746[_0xcb80('0x66')][_0xcb80('0xd2')]+(_0x25d746[_0xcb80('0x66')][_0xcb80('0xd3')]?'\x20'+_0x25d746[_0xcb80('0x66')][_0xcb80('0xd3')]:''),'body':_0x25d746[_0xcb80('0xd4')]?_0x25d746[_0xcb80('0xd4')][_0xcb80('0xe6')]:_0x25d746['body'],'direction':_0x25d746[_0xcb80('0xe9')]===_0xcb80('0xe7')?'A':'C','secret':_0x25d746[_0xcb80('0xd6')],'read':_0x25d746[_0xcb80('0x7f')],'attachment':_0x25d746[_0xcb80('0xd4')]};})[_0xcb80('0x62')]()};return ejs[_0xcb80('0xea')](path[_0xcb80('0xc9')](config[_0xcb80('0xca')],_0xcb80('0xcb'),_0xcb80('0xeb'),_0xcb80('0xec')),{'interaction':_0x9e65be})[_0xcb80('0x2b')](function(_0x1d708f){var _0x2dcf77=path[_0xcb80('0xc9')](_0x390478,_0xcb80('0xed')+_0xe68a1c['id']+'-'+_0x3fcfdb+_0xcb80('0xee'));var _0x173a79={'path':_0x2dcf77,'channel':_0xcb80('0xef'),'interactionId':_0xe68a1c['id']};return pdf[_0xcb80('0xf0')](_0x1d708f,_0x173a79);})[_0xcb80('0x2b')](function(){return new BPromise(function(_0x43aaa7,_0x11b246){zipdir(_0x390478,{'saveTo':_0x4d0f61},function(_0x3de994,_0x140b89){if(_0x3de994)return _0x11b246(_0x3de994);return _0x43aaa7(_0x140b89);});})[_0xcb80('0x2b')](function(){return new BPromise(function(_0x1e112e,_0x3b9d86){rimraf(_0x390478,function(_0x3fe6d5){if(_0x3fe6d5)_0x3b9d86(_0x3fe6d5);return _0x1e112e();});});})['then'](function(){return _0x31e77f[_0xcb80('0xf1')](_0x4d0f61,_0x29bf3a,function(_0x24ee8a){if(_0x24ee8a){console[_0xcb80('0xf2')](_0xcb80('0xf3'),_0x24ee8a);}else{fs[_0xcb80('0xf4')](_0x4d0f61);}});});});}else{return _0x31e77f[_0xcb80('0x20')](0xc8);}})['catch'](handleError(_0x31e77f,null));};
\ No newline at end of file
index f621848..8164cfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f19=['setDataValue','Users','unreadMessages','length','emit','hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','remove','getUsers','then'];(function(_0x3b79be,_0x479546){var _0x23bf08=function(_0x537836){while(--_0x537836){_0x3b79be['push'](_0x3b79be['shift']());}};_0x23bf08(++_0x479546);}(_0x9f19,0xd9));var _0x99f1=function(_0x39a6cc,_0x5eaf32){_0x39a6cc=_0x39a6cc-0x0;var _0x2ccef8=_0x9f19[_0x39a6cc];return _0x2ccef8;};'use strict';var EventEmitter=require(_0x99f1('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0x99f1('0x1'))['db'][_0x99f1('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x99f1('0x3')](0x0);var events={'afterCreate':_0x99f1('0x4'),'afterUpdate':'update','afterDestroy':_0x99f1('0x5')};function emitEvent(_0x49a3c5){return function(_0x14d32c,_0x376a6d,_0x11b75c){_0x14d32c[_0x99f1('0x6')]({'attributes':['id'],'raw':!![]})[_0x99f1('0x7')](function(_0x376150){_0x14d32c[_0x99f1('0x8')](_0x99f1('0x9'),_0x376150['map'](function(_0x21884d){return{'id':_0x21884d['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x14d32c['id'],'direction':'in','read':![]},'raw':!![]});})[_0x99f1('0x7')](function(_0x4ed00c){_0x14d32c['setDataValue'](_0x99f1('0xa'),_0x4ed00c[_0x99f1('0xb')]);OpenchannelInteractionEvents[_0x99f1('0xc')](_0x49a3c5+':'+_0x14d32c['id'],_0x14d32c);OpenchannelInteractionEvents[_0x99f1('0xc')](_0x49a3c5,_0x14d32c);_0x11b75c(null);})['catch'](_0x11b75c(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x99f1('0xd')](e,emitEvent(event));}}module[_0x99f1('0xe')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xde8b=['setDataValue','unreadMessages','emit','catch','hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','remove','then','Users','map','findAll'];(function(_0x1e73fc,_0x533750){var _0xeceac4=function(_0x2c6dda){while(--_0x2c6dda){_0x1e73fc['push'](_0x1e73fc['shift']());}};_0xeceac4(++_0x533750);}(_0xde8b,0xb6));var _0xbde8=function(_0x164bfb,_0x3d7831){_0x164bfb=_0x164bfb-0x0;var _0x1d95ca=_0xde8b[_0x164bfb];return _0x1d95ca;};'use strict';var EventEmitter=require(_0xbde8('0x0'));var OpenchannelInteraction=require(_0xbde8('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0xbde8('0x1'))['db'][_0xbde8('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xbde8('0x3')](0x0);var events={'afterCreate':_0xbde8('0x4'),'afterUpdate':'update','afterDestroy':_0xbde8('0x5')};function emitEvent(_0x9c114e){return function(_0x180fcb,_0x2c50db,_0x1fc0ed){_0x180fcb['getUsers']({'attributes':['id'],'raw':!![]})[_0xbde8('0x6')](function(_0x3f7ad3){_0x180fcb['setDataValue'](_0xbde8('0x7'),_0x3f7ad3[_0xbde8('0x8')](function(_0xef6023){return{'id':_0xef6023['id']};}));return OpenchannelMessage[_0xbde8('0x9')]({'where':{'OpenchannelInteractionId':_0x180fcb['id'],'direction':'in','read':![]},'raw':!![]});})[_0xbde8('0x6')](function(_0x24ed20){_0x180fcb[_0xbde8('0xa')](_0xbde8('0xb'),_0x24ed20['length']);OpenchannelInteractionEvents[_0xbde8('0xc')](_0x9c114e+':'+_0x180fcb['id'],_0x180fcb);OpenchannelInteractionEvents[_0xbde8('0xc')](_0x9c114e,_0x180fcb);_0x1fc0ed(null);})[_0xbde8('0xd')](_0x1fc0ed(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0xbde8('0xe')](e,emitEvent(event));}}module[_0xbde8('0xf')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 6f9dc0e..c8daf83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa095=['openchannel_interactions','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelInteraction.attributes','define','OpenchannelInteraction'];(function(_0x5ddc05,_0x34459d){var _0x6d4d55=function(_0x5031f9){while(--_0x5031f9){_0x5ddc05['push'](_0x5ddc05['shift']());}};_0x6d4d55(++_0x34459d);}(_0xa095,0x7b));var _0x5a09=function(_0x16771d,_0x224c60){_0x16771d=_0x16771d-0x0;var _0x386f11=_0xa095[_0x16771d];return _0x386f11;};'use strict';var _=require(_0x5a09('0x0'));var util=require(_0x5a09('0x1'));var logger=require(_0x5a09('0x2'))(_0x5a09('0x3'));var moment=require(_0x5a09('0x4'));var BPromise=require(_0x5a09('0x5'));var rp=require(_0x5a09('0x6'));var fs=require('fs');var path=require(_0x5a09('0x7'));var rimraf=require(_0x5a09('0x8'));var config=require(_0x5a09('0x9'));var attributes=require(_0x5a09('0xa'));module['exports']=function(_0xdc755d,_0x5a73e7){return _0xdc755d[_0x5a09('0xb')](_0x5a09('0xc'),attributes,{'tableName':_0x5a09('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x42c7ed,_0x2a5f9d,_0x1b694b){if(_0x42c7ed['changed']('closed')){_0x42c7ed[_0x5a09('0xe')]=moment()[_0x5a09('0xf')](_0x5a09('0x10'));}_0x1b694b(null,_0x42c7ed);}}});};
\ No newline at end of file
+var _0x60b7=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelInteraction.attributes','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','closed'];(function(_0x27e82c,_0x4f3a1b){var _0x2cfe45=function(_0x3f7dd7){while(--_0x3f7dd7){_0x27e82c['push'](_0x27e82c['shift']());}};_0x2cfe45(++_0x4f3a1b);}(_0x60b7,0x1a1));var _0x760b=function(_0x2c6fb9,_0xc7d7c0){_0x2c6fb9=_0x2c6fb9-0x0;var _0x49fd5e=_0x60b7[_0x2c6fb9];return _0x49fd5e;};'use strict';var _=require(_0x760b('0x0'));var util=require('util');var logger=require(_0x760b('0x1'))(_0x760b('0x2'));var moment=require(_0x760b('0x3'));var BPromise=require(_0x760b('0x4'));var rp=require(_0x760b('0x5'));var fs=require('fs');var path=require(_0x760b('0x6'));var rimraf=require(_0x760b('0x7'));var config=require(_0x760b('0x8'));var attributes=require(_0x760b('0x9'));module['exports']=function(_0x298861,_0x1049a6){return _0x298861['define'](_0x760b('0xa'),attributes,{'tableName':_0x760b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x760b('0xc'),'collate':_0x760b('0xd'),'hooks':{'beforeUpdate':function(_0x56552c,_0xd59de5,_0x202e2e){if(_0x56552c['changed'](_0x760b('0xe'))){_0x56552c[_0x760b('0xf')]=moment()[_0x760b('0x10')](_0x760b('0x11'));}_0x202e2e(null,_0x56552c);}}});};
\ No newline at end of file
index 04c3dfb..86f24dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a89=['socket.io-emitter','./openchannelInteraction.socket','register','then','info','OpenchannelInteraction,\x20%s,\x20%s','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','limit','AddTagsToOpenchannelInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost'];(function(_0x3d38bd,_0xf83b34){var _0x52edc2=function(_0x15442d){while(--_0x15442d){_0x3d38bd['push'](_0x3d38bd['shift']());}};_0x52edc2(++_0xf83b34);}(_0x2a89,0xfb));var _0x92a8=function(_0x54e80e,_0x2c4c56){_0x54e80e=_0x54e80e-0x0;var _0xbe8ce8=_0x2a89[_0x54e80e];return _0xbe8ce8;};'use strict';var _=require(_0x92a8('0x0'));var util=require(_0x92a8('0x1'));var moment=require('moment');var BPromise=require(_0x92a8('0x2'));var rs=require(_0x92a8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x92a8('0x4'))['db'];var utils=require(_0x92a8('0x5'));var logger=require(_0x92a8('0x6'))(_0x92a8('0x7'));var config=require('../../config/environment');var jayson=require(_0x92a8('0x8'));var client=jayson[_0x92a8('0x9')]['http']({'port':0x232a});config[_0x92a8('0xa')]=_[_0x92a8('0xb')](config[_0x92a8('0xa')],{'host':_0x92a8('0xc'),'port':0x18eb});var socket=require(_0x92a8('0xd'))(new Redis(config[_0x92a8('0xa')]));require(_0x92a8('0xe'))[_0x92a8('0xf')](socket);function respondWithRpcPromise(_0x37f7e8,_0x32f4a7,_0x8a6535){return new BPromise(function(_0x1a5e8d,_0x1fef86){return client['request'](_0x37f7e8,_0x8a6535)[_0x92a8('0x10')](function(_0x4fc5f3){logger[_0x92a8('0x11')](_0x92a8('0x12'),_0x32f4a7,'request\x20sent');logger[_0x92a8('0x13')](_0x92a8('0x14'),_0x32f4a7,'request\x20sent',JSON[_0x92a8('0x15')](_0x4fc5f3));if(_0x4fc5f3[_0x92a8('0x16')]){if(_0x4fc5f3['error'][_0x92a8('0x17')]===0x1f4){logger[_0x92a8('0x16')](_0x92a8('0x12'),_0x32f4a7,_0x4fc5f3[_0x92a8('0x16')]['message']);return _0x1fef86(_0x4fc5f3['error'][_0x92a8('0x18')]);}logger[_0x92a8('0x16')]('OpenchannelInteraction,\x20%s,\x20%s',_0x32f4a7,_0x4fc5f3['error'][_0x92a8('0x18')]);return _0x1a5e8d(_0x4fc5f3[_0x92a8('0x16')][_0x92a8('0x18')]);}else{logger['info'](_0x92a8('0x12'),_0x32f4a7,_0x92a8('0x19'));_0x1a5e8d(_0x4fc5f3[_0x92a8('0x1a')][_0x92a8('0x18')]);}})[_0x92a8('0x1b')](function(_0x643454){logger[_0x92a8('0x16')](_0x92a8('0x12'),_0x32f4a7,_0x643454);_0x1fef86(_0x643454);});});}exports[_0x92a8('0x1c')]=function(_0x52395c){var _0x389df4=this;return new Promise(function(_0x4fcd3f,_0xf820c1){return db[_0x92a8('0x1d')][_0x92a8('0x1e')](_0x52395c[_0x92a8('0x1f')],{'raw':_0x52395c[_0x92a8('0x20')]?_0x52395c['options'][_0x92a8('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x52395c[_0x92a8('0x20')]?_0x52395c[_0x92a8('0x20')][_0x92a8('0x22')]||null:null,'attributes':_0x52395c[_0x92a8('0x20')]?_0x52395c[_0x92a8('0x20')][_0x92a8('0x23')]||null:null,'limit':_0x52395c[_0x92a8('0x20')]?_0x52395c[_0x92a8('0x20')][_0x92a8('0x24')]||null:null})[_0x92a8('0x10')](function(_0x572b4c){logger['info'](_0x92a8('0x1c'),_0x52395c);logger['debug']('UpdateOpenchannelInteraction',_0x52395c,JSON['stringify'](_0x572b4c));_0x4fcd3f(_0x572b4c);})[_0x92a8('0x1b')](function(_0x32e218){logger[_0x92a8('0x16')](_0x92a8('0x1c'),_0x32e218[_0x92a8('0x18')],_0x52395c);_0xf820c1(_0x389df4[_0x92a8('0x16')](0x1f4,_0x32e218[_0x92a8('0x18')]));});});};exports[_0x92a8('0x25')]=function(_0x325885){return new Promise(function(_0x2c242b,_0xbf8e6d){return db[_0x92a8('0x1d')][_0x92a8('0x26')]({'where':_0x325885['options']?_0x325885['options'][_0x92a8('0x22')]||null:null})[_0x92a8('0x10')](function(_0xb7ed58){if(_0xb7ed58){return _0xb7ed58[_0x92a8('0x27')](_0x325885['body'][_0x92a8('0x28')],_[_0x92a8('0x29')](_0x325885[_0x92a8('0x1f')],[_0x92a8('0x28'),'id'])||{});}})[_0x92a8('0x2a')](function(_0x4c6aed){logger[_0x92a8('0x11')](_0x92a8('0x2b'),_0x325885);logger['debug'](_0x92a8('0x2b'),_0x325885,JSON[_0x92a8('0x15')](_0x4c6aed));_0x2c242b(_0x4c6aed);})[_0x92a8('0x1b')](function(_0x23d3c3){logger[_0x92a8('0x16')]('AddTags',_0x23d3c3['message'],_0x325885);_0xbf8e6d(_this[_0x92a8('0x16')](0x1f4,_0x23d3c3[_0x92a8('0x18')]));});});};
\ No newline at end of file
+var _0xd7b9=['limit','then','find','where','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','info','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','OpenchannelInteraction,\x20%s,\x20%s','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','attributes'];(function(_0x4cc05e,_0x1b35f6){var _0x67b35e=function(_0x2650f6){while(--_0x2650f6){_0x4cc05e['push'](_0x4cc05e['shift']());}};_0x67b35e(++_0x1b35f6);}(_0xd7b9,0x1be));var _0x9d7b=function(_0x43a4c2,_0x4e400f){_0x43a4c2=_0x43a4c2-0x0;var _0x3cd4fb=_0xd7b9[_0x43a4c2];return _0x3cd4fb;};'use strict';var _=require(_0x9d7b('0x0'));var util=require(_0x9d7b('0x1'));var moment=require(_0x9d7b('0x2'));var BPromise=require(_0x9d7b('0x3'));var rs=require(_0x9d7b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9d7b('0x5'))['db'];var utils=require(_0x9d7b('0x6'));var logger=require(_0x9d7b('0x7'))('rpc');var config=require(_0x9d7b('0x8'));var jayson=require(_0x9d7b('0x9'));var client=jayson[_0x9d7b('0xa')]['http']({'port':0x232a});config[_0x9d7b('0xb')]=_['defaults'](config[_0x9d7b('0xb')],{'host':_0x9d7b('0xc'),'port':0x18eb});var socket=require(_0x9d7b('0xd'))(new Redis(config[_0x9d7b('0xb')]));require(_0x9d7b('0xe'))[_0x9d7b('0xf')](socket);function respondWithRpcPromise(_0x14e070,_0x372412,_0x43ce63){return new BPromise(function(_0x14aec3,_0x1f1f79){return client['request'](_0x14e070,_0x43ce63)['then'](function(_0x146137){logger[_0x9d7b('0x10')]('OpenchannelInteraction,\x20%s,\x20%s',_0x372412,_0x9d7b('0x11'));logger[_0x9d7b('0x12')](_0x9d7b('0x13'),_0x372412,'request\x20sent',JSON[_0x9d7b('0x14')](_0x146137));if(_0x146137[_0x9d7b('0x15')]){if(_0x146137[_0x9d7b('0x15')][_0x9d7b('0x16')]===0x1f4){logger[_0x9d7b('0x15')]('OpenchannelInteraction,\x20%s,\x20%s',_0x372412,_0x146137[_0x9d7b('0x15')][_0x9d7b('0x17')]);return _0x1f1f79(_0x146137[_0x9d7b('0x15')][_0x9d7b('0x17')]);}logger['error'](_0x9d7b('0x18'),_0x372412,_0x146137[_0x9d7b('0x15')][_0x9d7b('0x17')]);return _0x14aec3(_0x146137['error'][_0x9d7b('0x17')]);}else{logger[_0x9d7b('0x10')](_0x9d7b('0x18'),_0x372412,'request\x20sent');_0x14aec3(_0x146137[_0x9d7b('0x19')][_0x9d7b('0x17')]);}})[_0x9d7b('0x1a')](function(_0x2fed88){logger[_0x9d7b('0x15')](_0x9d7b('0x18'),_0x372412,_0x2fed88);_0x1f1f79(_0x2fed88);});});}exports[_0x9d7b('0x1b')]=function(_0x1d8019){var _0x3a2b1e=this;return new Promise(function(_0x2a1aa5,_0x16e36d){return db[_0x9d7b('0x1c')][_0x9d7b('0x1d')](_0x1d8019[_0x9d7b('0x1e')],{'raw':_0x1d8019['options']?_0x1d8019[_0x9d7b('0x1f')][_0x9d7b('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d8019[_0x9d7b('0x1f')]?_0x1d8019['options']['where']||null:null,'attributes':_0x1d8019['options']?_0x1d8019[_0x9d7b('0x1f')][_0x9d7b('0x21')]||null:null,'limit':_0x1d8019[_0x9d7b('0x1f')]?_0x1d8019[_0x9d7b('0x1f')][_0x9d7b('0x22')]||null:null})[_0x9d7b('0x23')](function(_0x2e193e){logger[_0x9d7b('0x10')]('UpdateOpenchannelInteraction',_0x1d8019);logger['debug'](_0x9d7b('0x1b'),_0x1d8019,JSON[_0x9d7b('0x14')](_0x2e193e));_0x2a1aa5(_0x2e193e);})['catch'](function(_0x1111a8){logger['error']('UpdateOpenchannelInteraction',_0x1111a8[_0x9d7b('0x17')],_0x1d8019);_0x16e36d(_0x3a2b1e[_0x9d7b('0x15')](0x1f4,_0x1111a8[_0x9d7b('0x17')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x19d21d){return new Promise(function(_0x442a47,_0x477621){return db[_0x9d7b('0x1c')][_0x9d7b('0x24')]({'where':_0x19d21d[_0x9d7b('0x1f')]?_0x19d21d['options'][_0x9d7b('0x25')]||null:null})['then'](function(_0x1e34a8){if(_0x1e34a8){return _0x1e34a8['addTags'](_0x19d21d['body']['ids'],_['omit'](_0x19d21d['body'],['ids','id'])||{});}})[_0x9d7b('0x26')](function(_0x56dea5){logger['info'](_0x9d7b('0x27'),_0x19d21d);logger['debug']('AddTags',_0x19d21d,JSON[_0x9d7b('0x14')](_0x56dea5));_0x442a47(_0x56dea5);})[_0x9d7b('0x1a')](function(_0x1fd89a){logger['error']('AddTags',_0x1fd89a[_0x9d7b('0x17')],_0x19d21d);_0x477621(_this[_0x9d7b('0x15')](0x1f4,_0x1fd89a[_0x9d7b('0x17')]));});});};
\ No newline at end of file
index c521a0d..8ca6630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5014=['register','openchannelInteraction:','./openchannelInteraction.events','save','remove'];(function(_0x954b3a,_0x10a7c1){var _0x3a313e=function(_0x1070ad){while(--_0x1070ad){_0x954b3a['push'](_0x954b3a['shift']());}};_0x3a313e(++_0x10a7c1);}(_0x5014,0x70));var _0x4501=function(_0xd703d8,_0x549fb1){_0xd703d8=_0xd703d8-0x0;var _0x5c31f0=_0x5014[_0xd703d8];return _0x5c31f0;};'use strict';var OpenchannelInteractionEvents=require(_0x4501('0x0'));var events=[_0x4501('0x1'),_0x4501('0x2'),'update'];function createListener(_0x537937,_0x1bec4f){return function(_0x3851ed){_0x1bec4f['emit'](_0x537937,_0x3851ed);};}function removeListener(_0x526f7b,_0x3240cf){return function(){OpenchannelInteractionEvents['removeListener'](_0x526f7b,_0x3240cf);};}exports[_0x4501('0x3')]=function(_0x5ef2f3){for(var _0x31a190=0x0,_0x1871b3=events['length'];_0x31a190<_0x1871b3;_0x31a190++){var _0x3028bc=events[_0x31a190];var _0x5f2d5d=createListener(_0x4501('0x4')+_0x3028bc,_0x5ef2f3);OpenchannelInteractionEvents['on'](_0x3028bc,_0x5f2d5d);}};
\ No newline at end of file
+var _0xea30=['remove','update','register','length','./openchannelInteraction.events','save'];(function(_0x3bf0d4,_0x572800){var _0x10d373=function(_0x5eb293){while(--_0x5eb293){_0x3bf0d4['push'](_0x3bf0d4['shift']());}};_0x10d373(++_0x572800);}(_0xea30,0xb2));var _0x0ea3=function(_0x557ddc,_0x2e24e0){_0x557ddc=_0x557ddc-0x0;var _0x1363a7=_0xea30[_0x557ddc];return _0x1363a7;};'use strict';var OpenchannelInteractionEvents=require(_0x0ea3('0x0'));var events=[_0x0ea3('0x1'),_0x0ea3('0x2'),_0x0ea3('0x3')];function createListener(_0x323811,_0x5c92cd){return function(_0x775480){_0x5c92cd['emit'](_0x323811,_0x775480);};}function removeListener(_0x4586e3,_0x2c6f6b){return function(){OpenchannelInteractionEvents['removeListener'](_0x4586e3,_0x2c6f6b);};}exports[_0x0ea3('0x4')]=function(_0x3a0ce1){for(var _0x586642=0x0,_0x4768dd=events[_0x0ea3('0x5')];_0x586642<_0x4768dd;_0x586642++){var _0x4a82fa=events[_0x586642];var _0x379adf=createListener('openchannelInteraction:'+_0x4a82fa,_0x3a0ce1);OpenchannelInteractionEvents['on'](_0x4a82fa,_0x379adf);}};
\ No newline at end of file
index d6639e9..899be74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','create','update','put','/:id/accept','accept','/:id/reject','exports','multer','util','path','express','Router'];(function(_0x289b5d,_0x216742){var _0x56bf8b=function(_0x3f64ae){while(--_0x3f64ae){_0x289b5d['push'](_0x289b5d['shift']());}};_0x56bf8b(++_0x216742);}(_0xe706,0xa3));var _0x6e70=function(_0xe90ec9,_0x29e6cc){_0xe90ec9=_0xe90ec9-0x0;var _0x1c10fc=_0xe706[_0xe90ec9];return _0x1c10fc;};'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')](),interaction[_0x6e70('0x12')](_0x6e70('0x13'),_0x6e70('0x14')),controller[_0x6e70('0x15')]);router['put']('/:id',auth[_0x6e70('0xb')](),controller[_0x6e70('0x16')]);router[_0x6e70('0x17')](_0x6e70('0x18'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x19')]);router[_0x6e70('0x17')](_0x6e70('0x1a'),auth['isAuthenticated'](),controller['reject']);router['delete'](_0x6e70('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0x6e70('0x1b')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports'];(function(_0x30ada3,_0x1e908c){var _0x247067=function(_0x1379e5){while(--_0x1379e5){_0x30ada3['push'](_0x30ada3['shift']());}};_0x247067(++_0x1e908c);}(_0xedd9,0xfc));var _0x9edd=function(_0x25d4d1,_0x2fe9ce){_0x25d4d1=_0x25d4d1-0x0;var _0x4d9335=_0xedd9[_0x25d4d1];return _0x4d9335;};'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['show']);router[_0x9edd('0xf')]('/',auth['isAuthenticated'](),interaction[_0x9edd('0x10')](_0x9edd('0x11'),'openchannelmessage:create'),controller[_0x9edd('0x12')]);router[_0x9edd('0x13')]('/:id',auth[_0x9edd('0xa')](),controller[_0x9edd('0x14')]);router[_0x9edd('0x13')](_0x9edd('0x15'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x16')]);router[_0x9edd('0x13')](_0x9edd('0x17'),auth['isAuthenticated'](),controller[_0x9edd('0x18')]);router[_0x9edd('0x19')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x1a')]);module[_0x9edd('0x1b')]=router;
\ No newline at end of file
index 24f739a..100f65a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b6c=['TEXT','sequelize','exports','medium','BOOLEAN','out','DATE'];(function(_0x51cd23,_0x273cbe){var _0x22f2c8=function(_0x515cd5){while(--_0x515cd5){_0x51cd23['push'](_0x51cd23['shift']());}};_0x22f2c8(++_0x273cbe);}(_0x4b6c,0x14a));var _0xc4b6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b6c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xc4b6('0x0'));module[_0xc4b6('0x1')]={'body':{'type':Sequelize['TEXT'](_0xc4b6('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xc4b6('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0xc4b6('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xc4b6('0x4')),'defaultValue':_0xc4b6('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0xc4b6('0x5')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xc4b6('0x6')]}};
\ No newline at end of file
+var _0xb9be=['out','sequelize','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xb9be,0xc5));var _0xeb9b=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xb9be[_0x1d1779];return _0x2377e9;};'use strict';var Sequelize=require(_0xeb9b('0x0'));module[_0xeb9b('0x1')]={'body':{'type':Sequelize[_0xeb9b('0x2')](_0xeb9b('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xeb9b('0x5')]('in',_0xeb9b('0x6')),'defaultValue':_0xeb9b('0x6'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xeb9b('0x2')]}};
\ No newline at end of file
index b1f90f0..0c95a8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd03=['OpenchannelMessage,\x20%s,\x20%s','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','stack','name','send','index','map','OpenchannelMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','body','describe','../../config/logger','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','OpenchannelInteractionId','isNil','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','acceptMessage','ContactId','sequelize','QueryTypes','User','agent','email','internal','manual','SIP/%s','channel','event','EventManager','acceptmessage','openchannel-interactions','openchannel','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','SELECT','contact','interface','rejectmessage','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelMessage.socket','register','client','http','request','then','info'];(function(_0x3a0a6d,_0x5a718d){var _0x3677ac=function(_0x4a3512){while(--_0x4a3512){_0x3a0a6d['push'](_0x3a0a6d['shift']());}};_0x3677ac(++_0x5a718d);}(_0xdd03,0x165));var _0x3dd0=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xdd03[_0x167cc1];return _0x10bc4b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3dd0('0x0'));var jsonpatch=require(_0x3dd0('0x1'));var rp=require(_0x3dd0('0x2'));var moment=require(_0x3dd0('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3dd0('0x4'));var path=require(_0x3dd0('0x5'));var sox=require(_0x3dd0('0x6'));var csv=require('to-csv');var ejs=require(_0x3dd0('0x7'));var fs=require('fs');var fs_extra=require(_0x3dd0('0x8'));var _=require(_0x3dd0('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3dd0('0xa'));var deskjs=require(_0x3dd0('0xb'));var toCsv=require(_0x3dd0('0xc'));var querystring=require('querystring');var Papa=require(_0x3dd0('0xd'));var Redis=require(_0x3dd0('0xe'));var authService=require(_0x3dd0('0xf'));var qs=require(_0x3dd0('0x10'));var as=require(_0x3dd0('0x11'));var hardwareService=require(_0x3dd0('0x12'));var logger=require('../../config/logger')(_0x3dd0('0x13'));var utils=require('../../config/utils');var config=require(_0x3dd0('0x14'));var licenseUtil=require(_0x3dd0('0x15'));var db=require(_0x3dd0('0x16'))['db'];config[_0x3dd0('0x17')]=_[_0x3dd0('0x18')](config[_0x3dd0('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x3dd0('0x19'))(new Redis(config[_0x3dd0('0x17')]));require(_0x3dd0('0x1a'))[_0x3dd0('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x3dd0('0x1c')][_0x3dd0('0x1d')]({'port':0x232c});var client9002=jayson['client'][_0x3dd0('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x3c525d,_0x814793,_0x452643,_0x17a8c5){return new BPromise(function(_0x2049b8,_0x64edcb){var _0x1be67a=_0x17a8c5||client;return _0x1be67a[_0x3dd0('0x1e')](_0x3c525d,_0x452643)[_0x3dd0('0x1f')](function(_0x5aad3d){logger[_0x3dd0('0x20')](_0x3dd0('0x21'),_0x814793,_0x3dd0('0x22'));logger['debug'](_0x3dd0('0x23'),_0x814793,_0x3dd0('0x22'),JSON[_0x3dd0('0x24')](_0x5aad3d));if(_0x5aad3d['error']){if(_0x5aad3d['error'][_0x3dd0('0x25')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x814793,_0x5aad3d['error']['message']);return _0x64edcb(_0x5aad3d[_0x3dd0('0x26')][_0x3dd0('0x27')]);}logger[_0x3dd0('0x26')]('OpenchannelMessage,\x20%s,\x20%s',_0x814793,_0x5aad3d['error']['message']);return _0x2049b8(_0x5aad3d[_0x3dd0('0x26')][_0x3dd0('0x27')]);}else{logger[_0x3dd0('0x20')](_0x3dd0('0x21'),_0x814793,_0x3dd0('0x22'));_0x2049b8(_0x5aad3d[_0x3dd0('0x28')][_0x3dd0('0x27')]);}})[_0x3dd0('0x29')](function(_0x56a37c){logger['error'](_0x3dd0('0x21'),_0x814793,_0x56a37c);_0x64edcb(_0x56a37c);});});}function respondWithStatusCode(_0x519101,_0x221642){_0x221642=_0x221642||0xcc;return function(_0x3babca){if(_0x3babca){return _0x519101[_0x3dd0('0x2a')](_0x221642);}return _0x519101[_0x3dd0('0x2b')](_0x221642)['end']();};}function respondWithResult(_0x375571,_0x393050){_0x393050=_0x393050||0xc8;return function(_0x5de894){if(_0x5de894){return _0x375571['status'](_0x393050)['json'](_0x5de894);}};}function respondWithFilteredResult(_0x1554d0,_0x536747){return function(_0x1b74fe){if(_0x1b74fe){var _0x5b1741=typeof _0x536747[_0x3dd0('0x2c')]===_0x3dd0('0x2d')&&typeof _0x536747[_0x3dd0('0x2e')]===_0x3dd0('0x2d');var _0x3d0fa6=_0x1b74fe[_0x3dd0('0x2f')];var _0x452406=_0x5b1741?0x0:_0x536747['offset'];var _0x33964e=_0x5b1741?_0x1b74fe[_0x3dd0('0x2f')]:_0x536747['offset']+_0x536747[_0x3dd0('0x2e')];var _0x2abfce;if(_0x33964e>=_0x3d0fa6){_0x33964e=_0x3d0fa6;_0x2abfce=0xc8;}else{_0x2abfce=0xce;}_0x1554d0[_0x3dd0('0x2b')](_0x2abfce);return _0x1554d0[_0x3dd0('0x30')](_0x3dd0('0x31'),_0x452406+'-'+_0x33964e+'/'+_0x3d0fa6)[_0x3dd0('0x32')](_0x1b74fe);}return null;};}function patchUpdates(_0x4404c2){return function(_0x580a32){try{jsonpatch[_0x3dd0('0x33')](_0x580a32,_0x4404c2,!![]);}catch(_0x5a7007){return BPromise[_0x3dd0('0x34')](_0x5a7007);}return _0x580a32[_0x3dd0('0x35')]();};}function saveUpdates(_0x5ee68b,_0x3c400f){return function(_0x5523a1){if(_0x5523a1){return _0x5523a1[_0x3dd0('0x36')](_0x5ee68b)[_0x3dd0('0x1f')](function(_0x4da40b){return _0x4da40b;});}return null;};}function removeEntity(_0x3be65a,_0x36cf9b){return function(_0x50f1de){if(_0x50f1de){return _0x50f1de[_0x3dd0('0x37')]()[_0x3dd0('0x1f')](function(){_0x3be65a[_0x3dd0('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29cde7,_0x48e776){return function(_0x2b6b18){if(!_0x2b6b18){_0x29cde7[_0x3dd0('0x2a')](0x194);}return _0x2b6b18;};}function handleError(_0x30a973,_0x6b478f){_0x6b478f=_0x6b478f||0x1f4;return function(_0x454f2e){logger[_0x3dd0('0x26')](_0x454f2e[_0x3dd0('0x38')]);if(_0x454f2e[_0x3dd0('0x39')]){delete _0x454f2e['name'];}_0x30a973[_0x3dd0('0x2b')](_0x6b478f)[_0x3dd0('0x3a')](_0x454f2e);};}exports[_0x3dd0('0x3b')]=function(_0x5a1fb9,_0x5ae968){var _0x8be0c4={},_0x4c46df={},_0x17fa3b={'count':0x0,'rows':[]};var _0x1d6692=_[_0x3dd0('0x3c')](db[_0x3dd0('0x3d')][_0x3dd0('0x3e')],function(_0x4e818a){return{'name':_0x4e818a[_0x3dd0('0x3f')],'type':_0x4e818a[_0x3dd0('0x40')][_0x3dd0('0x41')]};});_0x4c46df[_0x3dd0('0x42')]=_['map'](_0x1d6692,_0x3dd0('0x39'));_0x4c46df[_0x3dd0('0x43')]=_[_0x3dd0('0x44')](_0x5a1fb9[_0x3dd0('0x43')]);_0x4c46df[_0x3dd0('0x45')]=_[_0x3dd0('0x46')](_0x4c46df[_0x3dd0('0x42')],_0x4c46df[_0x3dd0('0x43')]);_0x8be0c4[_0x3dd0('0x47')]=_['intersection'](_0x4c46df[_0x3dd0('0x42')],qs[_0x3dd0('0x48')](_0x5a1fb9[_0x3dd0('0x43')][_0x3dd0('0x48')]));_0x8be0c4[_0x3dd0('0x47')]=_0x8be0c4['attributes'][_0x3dd0('0x49')]?_0x8be0c4[_0x3dd0('0x47')]:_0x4c46df['model'];if(!_0x5a1fb9[_0x3dd0('0x43')][_0x3dd0('0x4a')](_0x3dd0('0x4b'))){_0x8be0c4[_0x3dd0('0x2e')]=qs[_0x3dd0('0x2e')](_0x5a1fb9[_0x3dd0('0x43')][_0x3dd0('0x2e')]);_0x8be0c4[_0x3dd0('0x2c')]=qs[_0x3dd0('0x2c')](_0x5a1fb9[_0x3dd0('0x43')][_0x3dd0('0x2c')]);}_0x8be0c4['order']=qs[_0x3dd0('0x4c')](_0x5a1fb9['query'][_0x3dd0('0x4c')]);_0x8be0c4[_0x3dd0('0x4d')]=qs['filters'](_[_0x3dd0('0x4e')](_0x5a1fb9[_0x3dd0('0x43')],_0x4c46df[_0x3dd0('0x45')]),_0x1d6692);if(_0x5a1fb9[_0x3dd0('0x43')][_0x3dd0('0x4f')]){_0x8be0c4[_0x3dd0('0x4d')]=_[_0x3dd0('0x50')](_0x8be0c4[_0x3dd0('0x4d')],{'$or':_[_0x3dd0('0x3c')](_0x1d6692,function(_0x9a7480){if(_0x9a7480[_0x3dd0('0x40')]!==_0x3dd0('0x51')){var _0x367dcd={};_0x367dcd[_0x9a7480[_0x3dd0('0x39')]]={'$like':'%'+_0x5a1fb9[_0x3dd0('0x43')][_0x3dd0('0x4f')]+'%'};return _0x367dcd;}})});}_0x8be0c4=_[_0x3dd0('0x50')]({},_0x8be0c4,_0x5a1fb9[_0x3dd0('0x52')]);var _0x12a083={'where':_0x8be0c4['where']};return db[_0x3dd0('0x3d')][_0x3dd0('0x2f')](_0x12a083)['then'](function(_0x2fdc7e){_0x17fa3b[_0x3dd0('0x2f')]=_0x2fdc7e;if(_0x5a1fb9['query'][_0x3dd0('0x53')]){_0x8be0c4[_0x3dd0('0x54')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0x3dd0('0x55')](_0x8be0c4);})[_0x3dd0('0x1f')](function(_0x1f5221){_0x17fa3b['rows']=_0x1f5221;return _0x17fa3b;})['then'](respondWithFilteredResult(_0x5ae968,_0x8be0c4))[_0x3dd0('0x29')](handleError(_0x5ae968,null));};exports[_0x3dd0('0x56')]=function(_0x2ae5a6,_0x3b6eea){var _0x25ab0b={'raw':!![],'where':{'id':_0x2ae5a6[_0x3dd0('0x57')]['id']}},_0x298cfc={};_0x298cfc[_0x3dd0('0x42')]=_[_0x3dd0('0x44')](db[_0x3dd0('0x3d')][_0x3dd0('0x3e')]);_0x298cfc[_0x3dd0('0x43')]=_[_0x3dd0('0x44')](_0x2ae5a6[_0x3dd0('0x43')]);_0x298cfc[_0x3dd0('0x45')]=_[_0x3dd0('0x46')](_0x298cfc['model'],_0x298cfc[_0x3dd0('0x43')]);_0x25ab0b['attributes']=_[_0x3dd0('0x46')](_0x298cfc[_0x3dd0('0x42')],qs[_0x3dd0('0x48')](_0x2ae5a6[_0x3dd0('0x43')][_0x3dd0('0x48')]));_0x25ab0b[_0x3dd0('0x47')]=_0x25ab0b['attributes']['length']?_0x25ab0b[_0x3dd0('0x47')]:_0x298cfc[_0x3dd0('0x42')];if(_0x2ae5a6[_0x3dd0('0x43')][_0x3dd0('0x53')]){_0x25ab0b['include']=[{'all':!![]}];}_0x25ab0b=_[_0x3dd0('0x50')]({},_0x25ab0b,_0x2ae5a6['options']);return db[_0x3dd0('0x3d')][_0x3dd0('0x58')](_0x25ab0b)['then'](handleEntityNotFound(_0x3b6eea,null))[_0x3dd0('0x1f')](respondWithResult(_0x3b6eea,null))[_0x3dd0('0x29')](handleError(_0x3b6eea,null));};exports['create']=function(_0xa498ed,_0x92df32){return db[_0x3dd0('0x3d')]['create'](_0xa498ed[_0x3dd0('0x59')],{})[_0x3dd0('0x1f')](respondWithResult(_0x92df32,0xc9))[_0x3dd0('0x29')](handleError(_0x92df32,null));};exports['update']=function(_0x38fab4,_0x584616){if(_0x38fab4[_0x3dd0('0x59')]['id']){delete _0x38fab4[_0x3dd0('0x59')]['id'];}return db[_0x3dd0('0x3d')][_0x3dd0('0x58')]({'where':{'id':_0x38fab4[_0x3dd0('0x57')]['id']}})[_0x3dd0('0x1f')](handleEntityNotFound(_0x584616,null))[_0x3dd0('0x1f')](saveUpdates(_0x38fab4[_0x3dd0('0x59')],null))[_0x3dd0('0x1f')](respondWithResult(_0x584616,null))[_0x3dd0('0x29')](handleError(_0x584616,null));};exports[_0x3dd0('0x37')]=function(_0x42ae13,_0x59a2d7){return db[_0x3dd0('0x3d')]['find']({'where':{'id':_0x42ae13[_0x3dd0('0x57')]['id']}})[_0x3dd0('0x1f')](handleEntityNotFound(_0x59a2d7,null))[_0x3dd0('0x1f')](removeEntity(_0x59a2d7,null))[_0x3dd0('0x29')](handleError(_0x59a2d7,null));};exports[_0x3dd0('0x5a')]=function(_0x17591f,_0x14c2fa){return db[_0x3dd0('0x3d')][_0x3dd0('0x5a')]()[_0x3dd0('0x1f')](respondWithResult(_0x14c2fa,null))[_0x3dd0('0x29')](handleError(_0x14c2fa,null));};var interaction_log=require(_0x3dd0('0x5b'))('openchannel-interactions');exports[_0x3dd0('0x5c')]=function(_0x57e14a,_0x5cd0ff,_0x166071){var _0x3c4eb6={'agent':{},'channel':'openchannel'};if(_0x57e14a[_0x3dd0('0x59')]['id']){delete _0x57e14a[_0x3dd0('0x59')]['id'];}_0x57e14a[_0x3dd0('0x59')][_0x3dd0('0x5d')]=!![];_0x57e14a[_0x3dd0('0x59')][_0x3dd0('0x5e')]=moment()[_0x3dd0('0x5f')](_0x3dd0('0x60'));_0x57e14a['body'][_0x3dd0('0x61')]=_0x57e14a[_0x3dd0('0x59')][_0x3dd0('0x61')]||_0x57e14a[_0x3dd0('0x62')]['id'];_0x3c4eb6['agent']['id']=_0x57e14a[_0x3dd0('0x59')][_0x3dd0('0x61')];return db[_0x3dd0('0x3d')]['find']({'where':{'id':_0x57e14a[_0x3dd0('0x57')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5cd0ff,null))['then'](saveUpdates(_0x57e14a['body'],null))[_0x3dd0('0x1f')](function(_0x5ce91a){if(_0x5ce91a){_0x3c4eb6['message']=_0x5ce91a[_0x3dd0('0x63')]({'plain':!![]});return db['OpenchannelInteraction'][_0x3dd0('0x58')]({'where':{'id':_0x5ce91a[_0x3dd0('0x64')]}});}return null;})[_0x3dd0('0x1f')](handleEntityNotFound(_0x5cd0ff,null))[_0x3dd0('0x1f')](function(_0x55a006){if(_0x55a006){return _0x55a006[_0x3dd0('0x36')]({'UserId':_0x57e14a[_0x3dd0('0x59')][_0x3dd0('0x61')],'read1stAt':_[_0x3dd0('0x65')](_0x55a006['read1stAt'])?moment()[_0x3dd0('0x5f')](_0x3dd0('0x60')):undefined});}return null;})[_0x3dd0('0x1f')](function(_0x5d2192){if(_0x5d2192){_0x3c4eb6[_0x3dd0('0x66')]=_0x5d2192['get']({'plain':!![]});interaction_log[_0x3dd0('0x20')](_0x3dd0('0x67'),_0x57e14a[_0x3dd0('0x62')]['id'],_0x57e14a['user'][_0x3dd0('0x39')],_0x57e14a[_0x3dd0('0x62')]['role'],_0x3c4eb6[_0x3dd0('0x66')]['id'],_0x57e14a['body']?JSON['stringify'](_0x57e14a[_0x3dd0('0x59')]):_0x3dd0('0x68'));return respondWithRpcPromise('AcceptMessage',_0x3dd0('0x69'),_0x3c4eb6);}return null;})[_0x3dd0('0x1f')](function(_0x51c724){var _0x4a52ec='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x51c724[_0x3dd0('0x27')][_0x3dd0('0x6a')];return db[_0x3dd0('0x6b')]['query'](_0x4a52ec,{'type':db['Sequelize'][_0x3dd0('0x6c')]['SELECT'],'raw':!![]})[_0x3dd0('0x1f')](function(_0x3f02a5){return _0x3f02a5;});})[_0x3dd0('0x1f')](function(_0x2ea9b1){if(_0x2ea9b1){_0x3c4eb6['message']['contact']=_0x2ea9b1[0x0];if(!_0x57e14a[_0x3dd0('0x59')][_0x3dd0('0x61')])return;return db[_0x3dd0('0x6d')][_0x3dd0('0x58')]({'where':{'id':_0x57e14a[_0x3dd0('0x59')][_0x3dd0('0x61')],'role':_0x3dd0('0x6e')},'attributes':['id',_0x3dd0('0x39'),'fullname',_0x3dd0('0x6f'),_0x3dd0('0x70')],'raw':!![]});}return null;})['then'](function(_0x292201){if(!_0x292201)return null;_0x3c4eb6[_0x3dd0('0x27')][_0x3dd0('0x6e')]=_0x292201;return _0x3c4eb6;})[_0x3dd0('0x1f')](function(_0x5d49ac){if(_0x5d49ac){if(_0x57e14a[_0x3dd0('0x59')][_0x3dd0('0x71')]){_0x3c4eb6[_0x3dd0('0x27')]['interface']=util[_0x3dd0('0x5f')](_0x3dd0('0x72'),_0x57e14a[_0x3dd0('0x62')]['name']);_0x3c4eb6[_0x3dd0('0x27')]['channel']=_0x3c4eb6[_0x3dd0('0x73')];_0x3c4eb6[_0x3dd0('0x27')][_0x3dd0('0x74')]='accept';return respondWithRpcPromise(_0x3dd0('0x75'),_0x3dd0('0x75'),{'event':_0x3dd0('0x76'),'message':_0x3c4eb6[_0x3dd0('0x27')]},client9002)['then'](function(){return _0x3c4eb6;});}return _0x3c4eb6;}return null;})[_0x3dd0('0x1f')](respondWithResult(_0x5cd0ff,null))['catch'](handleError(_0x5cd0ff,null));};var interaction_log=require(_0x3dd0('0x5b'))(_0x3dd0('0x77'));exports[_0x3dd0('0x34')]=function(_0x507ed9,_0x5cea1e,_0x4eef53){var _0x1c294a={'agent':{},'channel':_0x3dd0('0x78')};if(_0x507ed9[_0x3dd0('0x59')]['id']){delete _0x507ed9[_0x3dd0('0x59')]['id'];}_0x507ed9[_0x3dd0('0x59')]['UserId']=_0x507ed9[_0x3dd0('0x59')][_0x3dd0('0x61')]||_0x507ed9[_0x3dd0('0x62')]['id'];_0x1c294a[_0x3dd0('0x6e')]['id']=_0x507ed9[_0x3dd0('0x59')][_0x3dd0('0x61')];return db[_0x3dd0('0x3d')][_0x3dd0('0x58')]({'where':{'id':_0x507ed9['params']['id'],'UserId':null}})[_0x3dd0('0x1f')](handleEntityNotFound(_0x5cea1e,null))[_0x3dd0('0x1f')](function(_0x5d96ba){if(_0x5d96ba){_0x1c294a[_0x3dd0('0x27')]=_0x5d96ba[_0x3dd0('0x63')]({'plain':!![]});return db['OpenchannelInteraction'][_0x3dd0('0x58')]({'where':{'id':_0x5d96ba[_0x3dd0('0x64')]}});}return null;})[_0x3dd0('0x1f')](handleEntityNotFound(_0x5cea1e,null))[_0x3dd0('0x1f')](function(_0x467bee){if(_0x467bee){_0x1c294a[_0x3dd0('0x66')]=_0x467bee[_0x3dd0('0x63')]({'plain':!![]});interaction_log[_0x3dd0('0x20')](_0x3dd0('0x79'),_0x507ed9[_0x3dd0('0x62')]['id'],_0x507ed9[_0x3dd0('0x62')][_0x3dd0('0x39')],_0x507ed9['user']['role'],_0x1c294a[_0x3dd0('0x66')]['id'],_0x507ed9[_0x3dd0('0x59')]?JSON[_0x3dd0('0x24')](_0x507ed9[_0x3dd0('0x59')]):_0x3dd0('0x68'));return respondWithRpcPromise(_0x3dd0('0x7a'),_0x3dd0('0x7b'),_0x1c294a);}return null;})[_0x3dd0('0x1f')](function(_0x39dde7){var _0x872003=_0x3dd0('0x7c')+_0x39dde7[_0x3dd0('0x27')][_0x3dd0('0x6a')];return db[_0x3dd0('0x6b')][_0x3dd0('0x43')](_0x872003,{'type':db[_0x3dd0('0x7d')][_0x3dd0('0x6c')][_0x3dd0('0x7e')],'raw':!![]})[_0x3dd0('0x1f')](function(_0x2f1e3d){return _0x2f1e3d;});})[_0x3dd0('0x1f')](function(_0x2b2a07){if(_0x2b2a07){_0x1c294a[_0x3dd0('0x27')][_0x3dd0('0x7f')]=_0x2b2a07[0x0];if(!_0x507ed9[_0x3dd0('0x59')][_0x3dd0('0x61')])return;return db[_0x3dd0('0x6d')][_0x3dd0('0x58')]({'where':{'id':_0x507ed9[_0x3dd0('0x59')]['UserId'],'role':_0x3dd0('0x6e')},'attributes':['id',_0x3dd0('0x39'),'fullname',_0x3dd0('0x6f'),'internal'],'raw':!![]});}return null;})['then'](function(_0x293709){if(!_0x293709)return null;_0x1c294a[_0x3dd0('0x27')][_0x3dd0('0x6e')]=_0x293709;return _0x1c294a;})[_0x3dd0('0x1f')](function(_0x7ff2fc){if(_0x7ff2fc){_0x7ff2fc[_0x3dd0('0x27')][_0x3dd0('0x80')]=util[_0x3dd0('0x5f')](_0x3dd0('0x72'),_0x507ed9[_0x3dd0('0x62')][_0x3dd0('0x39')]);_0x7ff2fc[_0x3dd0('0x27')]['channel']=_0x1c294a[_0x3dd0('0x73')];_0x7ff2fc[_0x3dd0('0x27')][_0x3dd0('0x74')]=_0x3dd0('0x34');respondWithRpcPromise('EventManager',_0x3dd0('0x75'),{'event':_0x3dd0('0x81'),'message':_0x7ff2fc['message']},client9002);return _0x1c294a;}return null;})[_0x3dd0('0x1f')](respondWithResult(_0x5cea1e,null))[_0x3dd0('0x29')](handleError(_0x5cea1e,null));};
\ No newline at end of file
+var _0x9505=['set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','OpenchannelMessage','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','describe','openchannel-interactions','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','openchannel','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','ContactId','Sequelize','rejectmessage','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','end','status','json','offset','undefined','limit','count'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x9505,0x1e5));var _0x5950=function(_0x1b92e1,_0x47dd33){_0x1b92e1=_0x1b92e1-0x0;var _0x4a0aab=_0x9505[_0x1b92e1];return _0x4a0aab;};'use strict';var emlformat=require(_0x5950('0x0'));var rimraf=require(_0x5950('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5950('0x2'));var rp=require(_0x5950('0x3'));var moment=require(_0x5950('0x4'));var BPromise=require(_0x5950('0x5'));var Mustache=require(_0x5950('0x6'));var util=require('util');var path=require('path');var sox=require(_0x5950('0x7'));var csv=require(_0x5950('0x8'));var ejs=require(_0x5950('0x9'));var fs=require('fs');var fs_extra=require(_0x5950('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5950('0xb'));var jsforce=require(_0x5950('0xc'));var deskjs=require(_0x5950('0xd'));var toCsv=require(_0x5950('0x8'));var querystring=require(_0x5950('0xe'));var Papa=require(_0x5950('0xf'));var Redis=require(_0x5950('0x10'));var authService=require(_0x5950('0x11'));var qs=require(_0x5950('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5950('0x13'));var logger=require(_0x5950('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x5950('0x15'));var licenseUtil=require(_0x5950('0x16'));var db=require(_0x5950('0x17'))['db'];config[_0x5950('0x18')]=_[_0x5950('0x19')](config[_0x5950('0x18')],{'host':_0x5950('0x1a'),'port':0x18eb});var socket=require(_0x5950('0x1b'))(new Redis(config[_0x5950('0x18')]));require(_0x5950('0x1c'))[_0x5950('0x1d')](socket);var jayson=require(_0x5950('0x1e'));var client=jayson[_0x5950('0x1f')][_0x5950('0x20')]({'port':0x232c});var client9002=jayson[_0x5950('0x1f')][_0x5950('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x4ad4d8,_0x3c469d,_0x26f3c3,_0x10839e){return new BPromise(function(_0xface83,_0x4e6be3){var _0x5a99e8=_0x10839e||client;return _0x5a99e8[_0x5950('0x21')](_0x4ad4d8,_0x26f3c3)[_0x5950('0x22')](function(_0x3a7821){logger[_0x5950('0x23')](_0x5950('0x24'),_0x3c469d,'request\x20sent');logger['debug'](_0x5950('0x25'),_0x3c469d,_0x5950('0x26'),JSON[_0x5950('0x27')](_0x3a7821));if(_0x3a7821['error']){if(_0x3a7821[_0x5950('0x28')][_0x5950('0x29')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x3c469d,_0x3a7821['error']['message']);return _0x4e6be3(_0x3a7821[_0x5950('0x28')][_0x5950('0x2a')]);}logger[_0x5950('0x28')](_0x5950('0x24'),_0x3c469d,_0x3a7821['error'][_0x5950('0x2a')]);return _0xface83(_0x3a7821[_0x5950('0x28')][_0x5950('0x2a')]);}else{logger[_0x5950('0x23')](_0x5950('0x24'),_0x3c469d,_0x5950('0x26'));_0xface83(_0x3a7821[_0x5950('0x2b')]['message']);}})['catch'](function(_0x1b2265){logger[_0x5950('0x28')](_0x5950('0x24'),_0x3c469d,_0x1b2265);_0x4e6be3(_0x1b2265);});});}function respondWithStatusCode(_0xfa0238,_0x128241){_0x128241=_0x128241||0xcc;return function(_0x58167b){if(_0x58167b){return _0xfa0238['sendStatus'](_0x128241);}return _0xfa0238['status'](_0x128241)[_0x5950('0x2c')]();};}function respondWithResult(_0x2ca436,_0xfc543b){_0xfc543b=_0xfc543b||0xc8;return function(_0x3b91f6){if(_0x3b91f6){return _0x2ca436[_0x5950('0x2d')](_0xfc543b)[_0x5950('0x2e')](_0x3b91f6);}};}function respondWithFilteredResult(_0x2ff8a3,_0x2dfd08){return function(_0x179b24){if(_0x179b24){var _0x3a3cc0=typeof _0x2dfd08[_0x5950('0x2f')]===_0x5950('0x30')&&typeof _0x2dfd08[_0x5950('0x31')]===_0x5950('0x30');var _0x1670ae=_0x179b24[_0x5950('0x32')];var _0x10f4d4=_0x3a3cc0?0x0:_0x2dfd08[_0x5950('0x2f')];var _0x33aa23=_0x3a3cc0?_0x179b24[_0x5950('0x32')]:_0x2dfd08[_0x5950('0x2f')]+_0x2dfd08[_0x5950('0x31')];var _0x32cbb1;if(_0x33aa23>=_0x1670ae){_0x33aa23=_0x1670ae;_0x32cbb1=0xc8;}else{_0x32cbb1=0xce;}_0x2ff8a3[_0x5950('0x2d')](_0x32cbb1);return _0x2ff8a3[_0x5950('0x33')](_0x5950('0x34'),_0x10f4d4+'-'+_0x33aa23+'/'+_0x1670ae)[_0x5950('0x2e')](_0x179b24);}return null;};}function patchUpdates(_0x28b562){return function(_0x4dc324){try{jsonpatch[_0x5950('0x35')](_0x4dc324,_0x28b562,!![]);}catch(_0x391a41){return BPromise[_0x5950('0x36')](_0x391a41);}return _0x4dc324[_0x5950('0x37')]();};}function saveUpdates(_0x3ec6da,_0x4b87c1){return function(_0x498dbf){if(_0x498dbf){return _0x498dbf[_0x5950('0x38')](_0x3ec6da)[_0x5950('0x22')](function(_0x55ab95){return _0x55ab95;});}return null;};}function removeEntity(_0x411728,_0x56da47){return function(_0x10fbe2){if(_0x10fbe2){return _0x10fbe2[_0x5950('0x39')]()[_0x5950('0x22')](function(){_0x411728['status'](0xcc)[_0x5950('0x2c')]();});}};}function handleEntityNotFound(_0x5e12ec,_0x3ff491){return function(_0x112cf0){if(!_0x112cf0){_0x5e12ec[_0x5950('0x3a')](0x194);}return _0x112cf0;};}function handleError(_0x2b2c54,_0x5f12b6){_0x5f12b6=_0x5f12b6||0x1f4;return function(_0x478108){logger[_0x5950('0x28')](_0x478108[_0x5950('0x3b')]);if(_0x478108['name']){delete _0x478108[_0x5950('0x3c')];}_0x2b2c54[_0x5950('0x2d')](_0x5f12b6)['send'](_0x478108);};}exports['index']=function(_0x57c990,_0x28f130){var _0x15d6ad={},_0x372052={},_0x6cde4={'count':0x0,'rows':[]};var _0x3a8ed0=_['map'](db['OpenchannelMessage']['rawAttributes'],function(_0x4b534a){return{'name':_0x4b534a[_0x5950('0x3d')],'type':_0x4b534a[_0x5950('0x3e')][_0x5950('0x3f')]};});_0x372052[_0x5950('0x40')]=_['map'](_0x3a8ed0,_0x5950('0x3c'));_0x372052[_0x5950('0x41')]=_['keys'](_0x57c990[_0x5950('0x41')]);_0x372052[_0x5950('0x42')]=_[_0x5950('0x43')](_0x372052[_0x5950('0x40')],_0x372052[_0x5950('0x41')]);_0x15d6ad[_0x5950('0x44')]=_[_0x5950('0x43')](_0x372052['model'],qs[_0x5950('0x45')](_0x57c990['query'][_0x5950('0x45')]));_0x15d6ad[_0x5950('0x44')]=_0x15d6ad['attributes'][_0x5950('0x46')]?_0x15d6ad[_0x5950('0x44')]:_0x372052[_0x5950('0x40')];if(!_0x57c990[_0x5950('0x41')]['hasOwnProperty'](_0x5950('0x47'))){_0x15d6ad[_0x5950('0x31')]=qs[_0x5950('0x31')](_0x57c990[_0x5950('0x41')]['limit']);_0x15d6ad[_0x5950('0x2f')]=qs[_0x5950('0x2f')](_0x57c990[_0x5950('0x41')]['offset']);}_0x15d6ad[_0x5950('0x48')]=qs['sort'](_0x57c990[_0x5950('0x41')][_0x5950('0x49')]);_0x15d6ad[_0x5950('0x4a')]=qs[_0x5950('0x42')](_[_0x5950('0x4b')](_0x57c990[_0x5950('0x41')],_0x372052[_0x5950('0x42')]),_0x3a8ed0);if(_0x57c990['query'][_0x5950('0x4c')]){_0x15d6ad[_0x5950('0x4a')]=_[_0x5950('0x4d')](_0x15d6ad[_0x5950('0x4a')],{'$or':_[_0x5950('0x4e')](_0x3a8ed0,function(_0x52ba16){if(_0x52ba16['type']!==_0x5950('0x4f')){var _0x44189e={};_0x44189e[_0x52ba16[_0x5950('0x3c')]]={'$like':'%'+_0x57c990['query'][_0x5950('0x4c')]+'%'};return _0x44189e;}})});}_0x15d6ad=_[_0x5950('0x4d')]({},_0x15d6ad,_0x57c990[_0x5950('0x50')]);var _0x4eae97={'where':_0x15d6ad['where']};return db['OpenchannelMessage'][_0x5950('0x32')](_0x4eae97)[_0x5950('0x22')](function(_0x3d1a2d){_0x6cde4[_0x5950('0x32')]=_0x3d1a2d;if(_0x57c990[_0x5950('0x41')][_0x5950('0x51')]){_0x15d6ad[_0x5950('0x52')]=[{'all':!![]}];}return db[_0x5950('0x53')][_0x5950('0x54')](_0x15d6ad);})['then'](function(_0x16737d){_0x6cde4[_0x5950('0x55')]=_0x16737d;return _0x6cde4;})[_0x5950('0x22')](respondWithFilteredResult(_0x28f130,_0x15d6ad))[_0x5950('0x56')](handleError(_0x28f130,null));};exports[_0x5950('0x57')]=function(_0xf4c16b,_0x28e4c7){var _0xda37ac={'raw':!![],'where':{'id':_0xf4c16b[_0x5950('0x58')]['id']}},_0x1d545c={};_0x1d545c['model']=_[_0x5950('0x59')](db[_0x5950('0x53')][_0x5950('0x5a')]);_0x1d545c[_0x5950('0x41')]=_['keys'](_0xf4c16b['query']);_0x1d545c[_0x5950('0x42')]=_[_0x5950('0x43')](_0x1d545c['model'],_0x1d545c[_0x5950('0x41')]);_0xda37ac[_0x5950('0x44')]=_[_0x5950('0x43')](_0x1d545c[_0x5950('0x40')],qs[_0x5950('0x45')](_0xf4c16b[_0x5950('0x41')]['fields']));_0xda37ac[_0x5950('0x44')]=_0xda37ac[_0x5950('0x44')]['length']?_0xda37ac[_0x5950('0x44')]:_0x1d545c[_0x5950('0x40')];if(_0xf4c16b[_0x5950('0x41')]['includeAll']){_0xda37ac[_0x5950('0x52')]=[{'all':!![]}];}_0xda37ac=_[_0x5950('0x4d')]({},_0xda37ac,_0xf4c16b[_0x5950('0x50')]);return db[_0x5950('0x53')][_0x5950('0x5b')](_0xda37ac)[_0x5950('0x22')](handleEntityNotFound(_0x28e4c7,null))[_0x5950('0x22')](respondWithResult(_0x28e4c7,null))[_0x5950('0x56')](handleError(_0x28e4c7,null));};exports[_0x5950('0x5c')]=function(_0x4e34b4,_0xc03641){return db[_0x5950('0x53')][_0x5950('0x5c')](_0x4e34b4[_0x5950('0x5d')],{})[_0x5950('0x22')](respondWithResult(_0xc03641,0xc9))[_0x5950('0x56')](handleError(_0xc03641,null));};exports[_0x5950('0x38')]=function(_0x5cb5eb,_0x308be8){if(_0x5cb5eb['body']['id']){delete _0x5cb5eb[_0x5950('0x5d')]['id'];}return db['OpenchannelMessage'][_0x5950('0x5b')]({'where':{'id':_0x5cb5eb[_0x5950('0x58')]['id']}})['then'](handleEntityNotFound(_0x308be8,null))[_0x5950('0x22')](saveUpdates(_0x5cb5eb['body'],null))[_0x5950('0x22')](respondWithResult(_0x308be8,null))[_0x5950('0x56')](handleError(_0x308be8,null));};exports['destroy']=function(_0x5c743b,_0x34fc6e){return db[_0x5950('0x53')][_0x5950('0x5b')]({'where':{'id':_0x5c743b[_0x5950('0x58')]['id']}})[_0x5950('0x22')](handleEntityNotFound(_0x34fc6e,null))[_0x5950('0x22')](removeEntity(_0x34fc6e,null))[_0x5950('0x56')](handleError(_0x34fc6e,null));};exports[_0x5950('0x5e')]=function(_0x5bb971,_0x5ae165){return db[_0x5950('0x53')]['describe']()[_0x5950('0x22')](respondWithResult(_0x5ae165,null))[_0x5950('0x56')](handleError(_0x5ae165,null));};var interaction_log=require(_0x5950('0x14'))(_0x5950('0x5f'));exports[_0x5950('0x60')]=function(_0x55e16d,_0x2ce1c2,_0x13eec7){var _0x369b05={'agent':{},'channel':'openchannel'};if(_0x55e16d['body']['id']){delete _0x55e16d[_0x5950('0x5d')]['id'];}_0x55e16d['body'][_0x5950('0x61')]=!![];_0x55e16d[_0x5950('0x5d')]['readAt']=moment()[_0x5950('0x62')](_0x5950('0x63'));_0x55e16d[_0x5950('0x5d')][_0x5950('0x64')]=_0x55e16d[_0x5950('0x5d')][_0x5950('0x64')]||_0x55e16d['user']['id'];_0x369b05[_0x5950('0x65')]['id']=_0x55e16d[_0x5950('0x5d')][_0x5950('0x64')];return db['OpenchannelMessage']['find']({'where':{'id':_0x55e16d[_0x5950('0x58')]['id'],'UserId':null}})[_0x5950('0x22')](handleEntityNotFound(_0x2ce1c2,null))[_0x5950('0x22')](saveUpdates(_0x55e16d[_0x5950('0x5d')],null))[_0x5950('0x22')](function(_0x245738){if(_0x245738){_0x369b05['message']=_0x245738[_0x5950('0x66')]({'plain':!![]});return db[_0x5950('0x67')][_0x5950('0x5b')]({'where':{'id':_0x245738[_0x5950('0x68')]}});}return null;})['then'](handleEntityNotFound(_0x2ce1c2,null))[_0x5950('0x22')](function(_0x4aa2ab){if(_0x4aa2ab){return _0x4aa2ab['update']({'UserId':_0x55e16d[_0x5950('0x5d')]['UserId'],'read1stAt':_[_0x5950('0x69')](_0x4aa2ab['read1stAt'])?moment()[_0x5950('0x62')](_0x5950('0x63')):undefined});}return null;})['then'](function(_0x44e9de){if(_0x44e9de){_0x369b05[_0x5950('0x6a')]=_0x44e9de[_0x5950('0x66')]({'plain':!![]});interaction_log['info'](_0x5950('0x6b'),_0x55e16d[_0x5950('0x6c')]['id'],_0x55e16d[_0x5950('0x6c')][_0x5950('0x3c')],_0x55e16d[_0x5950('0x6c')][_0x5950('0x6d')],_0x369b05[_0x5950('0x6a')]['id'],_0x55e16d[_0x5950('0x5d')]?JSON['stringify'](_0x55e16d[_0x5950('0x5d')]):_0x5950('0x6e'));return respondWithRpcPromise(_0x5950('0x6f'),_0x5950('0x70'),_0x369b05);}return null;})['then'](function(_0x29bd2e){var _0x3d2c59=_0x5950('0x71')+_0x29bd2e[_0x5950('0x2a')]['ContactId'];return db['sequelize'][_0x5950('0x41')](_0x3d2c59,{'type':db['Sequelize'][_0x5950('0x72')][_0x5950('0x73')],'raw':!![]})[_0x5950('0x22')](function(_0x2ca3eb){return _0x2ca3eb;});})[_0x5950('0x22')](function(_0x57d5f7){if(_0x57d5f7){_0x369b05[_0x5950('0x2a')][_0x5950('0x74')]=_0x57d5f7[0x0];if(!_0x55e16d['body']['UserId'])return;return db[_0x5950('0x75')][_0x5950('0x5b')]({'where':{'id':_0x55e16d[_0x5950('0x5d')][_0x5950('0x64')],'role':_0x5950('0x65')},'attributes':['id','name',_0x5950('0x76'),_0x5950('0x77'),_0x5950('0x78')],'raw':!![]});}return null;})[_0x5950('0x22')](function(_0x850a74){if(!_0x850a74)return null;_0x369b05[_0x5950('0x2a')][_0x5950('0x65')]=_0x850a74;return _0x369b05;})[_0x5950('0x22')](function(_0x50131d){if(_0x50131d){if(_0x55e16d['body'][_0x5950('0x79')]){_0x369b05[_0x5950('0x2a')][_0x5950('0x7a')]=util[_0x5950('0x62')](_0x5950('0x7b'),_0x55e16d['user']['name']);_0x369b05[_0x5950('0x2a')][_0x5950('0x7c')]=_0x369b05['channel'];_0x369b05[_0x5950('0x2a')][_0x5950('0x7d')]=_0x369b05[_0x5950('0x7c')];_0x369b05[_0x5950('0x2a')][_0x5950('0x7e')]='accept';return respondWithRpcPromise(_0x5950('0x7f'),'EventManager',{'event':'acceptmessage','message':_0x369b05[_0x5950('0x2a')]},client9002)[_0x5950('0x22')](function(){return _0x369b05;});}return _0x369b05;}return null;})[_0x5950('0x22')](respondWithResult(_0x2ce1c2,null))['catch'](handleError(_0x2ce1c2,null));};var interaction_log=require(_0x5950('0x14'))(_0x5950('0x5f'));exports[_0x5950('0x36')]=function(_0x595575,_0x4fdaa7,_0x39df9a){var _0x3406cf={'agent':{},'channel':_0x5950('0x80')};if(_0x595575[_0x5950('0x5d')]['id']){delete _0x595575[_0x5950('0x5d')]['id'];}_0x595575[_0x5950('0x5d')][_0x5950('0x64')]=_0x595575['body'][_0x5950('0x64')]||_0x595575['user']['id'];_0x3406cf[_0x5950('0x65')]['id']=_0x595575[_0x5950('0x5d')][_0x5950('0x64')];return db[_0x5950('0x53')][_0x5950('0x5b')]({'where':{'id':_0x595575[_0x5950('0x58')]['id'],'UserId':null}})[_0x5950('0x22')](handleEntityNotFound(_0x4fdaa7,null))['then'](function(_0x4796bf){if(_0x4796bf){_0x3406cf[_0x5950('0x2a')]=_0x4796bf[_0x5950('0x66')]({'plain':!![]});return db[_0x5950('0x67')]['find']({'where':{'id':_0x4796bf[_0x5950('0x68')]}});}return null;})[_0x5950('0x22')](handleEntityNotFound(_0x4fdaa7,null))['then'](function(_0x5cd122){if(_0x5cd122){_0x3406cf[_0x5950('0x6a')]=_0x5cd122[_0x5950('0x66')]({'plain':!![]});interaction_log[_0x5950('0x23')](_0x5950('0x81'),_0x595575[_0x5950('0x6c')]['id'],_0x595575['user']['name'],_0x595575[_0x5950('0x6c')]['role'],_0x3406cf[_0x5950('0x6a')]['id'],_0x595575['body']?JSON['stringify'](_0x595575[_0x5950('0x5d')]):'null');return respondWithRpcPromise(_0x5950('0x82'),'rejectMessage',_0x3406cf);}return null;})[_0x5950('0x22')](function(_0x57d6f1){var _0x450805=_0x5950('0x71')+_0x57d6f1[_0x5950('0x2a')][_0x5950('0x83')];return db['sequelize'][_0x5950('0x41')](_0x450805,{'type':db[_0x5950('0x84')]['QueryTypes'][_0x5950('0x73')],'raw':!![]})['then'](function(_0x3521ff){return _0x3521ff;});})[_0x5950('0x22')](function(_0x564ba2){if(_0x564ba2){_0x3406cf[_0x5950('0x2a')]['contact']=_0x564ba2[0x0];if(!_0x595575['body']['UserId'])return;return db[_0x5950('0x75')][_0x5950('0x5b')]({'where':{'id':_0x595575[_0x5950('0x5d')][_0x5950('0x64')],'role':_0x5950('0x65')},'attributes':['id',_0x5950('0x3c'),'fullname','email',_0x5950('0x78')],'raw':!![]});}return null;})['then'](function(_0x42702d){if(!_0x42702d)return null;_0x3406cf['message'][_0x5950('0x65')]=_0x42702d;return _0x3406cf;})[_0x5950('0x22')](function(_0x1c8c14){if(_0x1c8c14){_0x1c8c14['message'][_0x5950('0x7a')]=util[_0x5950('0x62')](_0x5950('0x7b'),_0x595575['user'][_0x5950('0x3c')]);_0x1c8c14['message'][_0x5950('0x7c')]=_0x3406cf[_0x5950('0x7c')];_0x1c8c14[_0x5950('0x2a')][_0x5950('0x7d')]=_0x3406cf['channel'];_0x1c8c14['message'][_0x5950('0x7e')]=_0x5950('0x36');respondWithRpcPromise(_0x5950('0x7f'),_0x5950('0x7f'),{'event':_0x5950('0x85'),'message':_0x1c8c14[_0x5950('0x2a')]},client9002);return _0x3406cf;}return null;})['then'](respondWithResult(_0x4fdaa7,null))['catch'](handleError(_0x4fdaa7,null));};
\ No newline at end of file
index 4052de6..c5ed442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd2a=['setMaxListeners','save','remove','emit','hook','exports','events','../../mysqldb','OpenchannelMessage'];(function(_0x157a8a,_0x34d072){var _0x5bf33f=function(_0x4fc182){while(--_0x4fc182){_0x157a8a['push'](_0x157a8a['shift']());}};_0x5bf33f(++_0x34d072);}(_0xcd2a,0x15c));var _0xacd2=function(_0x246f92,_0xcf7bd4){_0x246f92=_0x246f92-0x0;var _0x2b8e7d=_0xcd2a[_0x246f92];return _0x2b8e7d;};'use strict';var EventEmitter=require(_0xacd2('0x0'));var OpenchannelMessage=require(_0xacd2('0x1'))['db'][_0xacd2('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xacd2('0x3')](0x0);var events={'afterCreate':_0xacd2('0x4'),'afterUpdate':'update','afterDestroy':_0xacd2('0x5')};function emitEvent(_0x86923a){return function(_0x3fec8c,_0x456e04,_0x2d458d){OpenchannelMessageEvents[_0xacd2('0x6')](_0x86923a+':'+_0x3fec8c['id'],_0x3fec8c);OpenchannelMessageEvents[_0xacd2('0x6')](_0x86923a,_0x3fec8c);_0x2d458d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0xacd2('0x7')](e,emitEvent(event));}}module[_0xacd2('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xfbcf=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x7f704c,_0x122fcc){var _0x49d761=function(_0x2b12c7){while(--_0x2b12c7){_0x7f704c['push'](_0x7f704c['shift']());}};_0x49d761(++_0x122fcc);}(_0xfbcf,0x16e));var _0xffbc=function(_0x13839b,_0x4c624e){_0x13839b=_0x13839b-0x0;var _0x8ea7db=_0xfbcf[_0x13839b];return _0x8ea7db;};'use strict';var EventEmitter=require(_0xffbc('0x0'));var OpenchannelMessage=require(_0xffbc('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xffbc('0x2'),'afterUpdate':_0xffbc('0x3'),'afterDestroy':_0xffbc('0x4')};function emitEvent(_0x2a41d7){return function(_0x2440e9,_0x44647e,_0x12722e){OpenchannelMessageEvents['emit'](_0x2a41d7+':'+_0x2440e9['id'],_0x2440e9);OpenchannelMessageEvents[_0xffbc('0x5')](_0x2a41d7,_0x2440e9);_0x12722e(null);};}for(var e in events){if(events[_0xffbc('0x6')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0xffbc('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
index 28f2e76..611e027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0598=['util','api','request-promise','path','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','models','toLowerCase','direction','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','createdAt','catch','secret','CmContact','describe','then','OpenchannelAccount','find','OpenchannelAccountId','Contact','get','replyUri','info','format','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','length','Interaction','omit','POST','method','GET','Message\x20%d\x20forwarded\x20to\x20%s','threadId','update','error','afterCreate','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0xfcb005,_0x3c6e51){var _0x3d6bc1=function(_0x38dd43){while(--_0x38dd43){_0xfcb005['push'](_0xfcb005['shift']());}};_0x3d6bc1(++_0x3c6e51);}(_0x0598,0x92));var _0x8059=function(_0x2d54c7,_0x173718){_0x2d54c7=_0x2d54c7-0x0;var _0x3c3568=_0x0598[_0x2d54c7];return _0x3c3568;};'use strict';var _=require(_0x8059('0x0'));var util=require(_0x8059('0x1'));var logger=require('../../config/logger')(_0x8059('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8059('0x3'));var fs=require('fs');var path=require(_0x8059('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./openchannelMessage.attributes');module[_0x8059('0x5')]=function(_0xa7d7c1,_0x512c0f){return _0xa7d7c1['define'](_0x8059('0x6'),attributes,{'tableName':_0x8059('0x7'),'paranoid':![],'indexes':[{'name':_0x8059('0x8'),'fields':[_0x8059('0x9')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4d1010,_0x89dda1,_0x1bf5fd){var _0x336f85=_0xa7d7c1[_0x8059('0xa')];var _0x283b63=_0x4d1010['get']({'plain':!![]});if(_0x283b63['direction'][_0x8059('0xb')]()==='in'||_0x283b63[_0x8059('0xc')]['toLowerCase']()==='out'&&!_0x283b63['secret']&&!_[_0x8059('0xd')](_0x283b63[_0x8059('0xe')])){_0x336f85[_0x8059('0xf')][_0x8059('0x10')]({'where':{'id':_0x283b63[_0x8059('0x11')]}})['then'](function(_0x11218f){if(_0x11218f){_0x11218f['update']({'lastMsgAt':_0x283b63[_0x8059('0x12')],'lastMsgDirection':_0x283b63['direction'][_0x8059('0xb')]()});}})[_0x8059('0x13')](function(_0x4810fd){console['error'](_0x4810fd);});}if(_0x283b63['direction']==='out'&&!_0x283b63[_0x8059('0x14')]){var _0x239195;_0x336f85[_0x8059('0x15')][_0x8059('0x16')]()[_0x8059('0x17')](function(_0x4b6d55){return _0x336f85[_0x8059('0x18')][_0x8059('0x19')]({'where':{'id':_0x283b63[_0x8059('0x1a')]},'include':[{'model':_0x336f85[_0x8059('0xf')],'as':'Interactions','where':{'id':_0x283b63[_0x8059('0x11')]},'limit':0x1,'include':[{'model':_0x336f85['CmContact'],'as':_0x8059('0x1b'),'attributes':_['keys'](_0x4b6d55)}]}]});})[_0x8059('0x17')](function(_0x56d794){_0x239195=_0x56d794[_0x8059('0x1c')]({'plain':!![]});if(_0x239195&&_0x239195[_0x8059('0x1d')]){logger[_0x8059('0x1e')]('OpenchannelMessage,\x20%s,\x20%s','afterCreate',util[_0x8059('0x1f')](_0x8059('0x20'),_0x283b63['id'],_0x239195[_0x8059('0x1d')]));if(_0x239195[_0x8059('0x21')]&&_0x239195['Interactions'][_0x8059('0x22')]){_0x283b63[_0x8059('0x23')]=_[_0x8059('0x24')](_0x239195['Interactions'][0x0],_0x8059('0x1b'));_0x283b63[_0x8059('0x1b')]=_0x239195[_0x8059('0x21')][0x0][_0x8059('0x1b')];}var _0x89dda1={'method':_0x8059('0x25'),'uri':encodeURI(_0x239195[_0x8059('0x1d')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x89dda1[_0x8059('0x26')]){case _0x8059('0x27'):_0x89dda1['qs']=_0x283b63;break;case _0x8059('0x25'):_0x89dda1['body']=_0x283b63;break;}return rp(_0x89dda1)[_0x8059('0x17')](function(_0x19b95a){logger[_0x8059('0x1e')]('OpenchannelMessage,\x20%s,\x20%s','afterCreate',util['format'](_0x8059('0x28'),_0x283b63['id'],_0x239195[_0x8059('0x1d')]));if(_0x19b95a[_0x8059('0x9')][_0x8059('0x29')]&&_0x19b95a['body'][_0x8059('0x29')]!=_0x283b63['Interaction'][_0x8059('0x29')]){return _0x336f85[_0x8059('0xf')]['update']({'threadId':_0x19b95a[_0x8059('0x9')][_0x8059('0x29')]},{'logging':!![],'where':{'id':_0x283b63[_0x8059('0x23')]['id']}});}else{return;}})[_0x8059('0x17')](function(){return _0x4d1010[_0x8059('0x2a')]({'read':!![]});})[_0x8059('0x13')](function(_0x46b6a1){logger[_0x8059('0x2b')]('OpenchannelMessage,\x20%s,\x20%s',_0x8059('0x2c'),util[_0x8059('0x2d')](_0x46b6a1,{'showHidden':![],'depth':null}));_0x1bf5fd();});}else{_0x1bf5fd();}})[_0x8059('0x2e')](function(){_0x1bf5fd();});}else{_0x1bf5fd();}}},'charset':_0x8059('0x2f'),'collate':_0x8059('0x30')});};
\ No newline at end of file
+var _0xb10b=['OpenchannelAccount','find','OpenchannelAccountId','Interactions','Contact','keys','info','OpenchannelMessage,\x20%s,\x20%s','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','Interaction','omit','method','GET','POST','afterCreate','format','Message\x20%d\x20forwarded\x20to\x20%s','threadId','finally','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','get','direction','toLowerCase','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','update','createdAt','catch','error','out','CmContact','describe','then'];(function(_0x5d01d1,_0x511ae8){var _0x1526dd=function(_0x5b6ba7){while(--_0x5b6ba7){_0x5d01d1['push'](_0x5d01d1['shift']());}};_0x1526dd(++_0x511ae8);}(_0xb10b,0x12a));var _0xbb10=function(_0x251669,_0x4cfefe){_0x251669=_0x251669-0x0;var _0x476916=_0xb10b[_0x251669];return _0x476916;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var logger=require(_0xbb10('0x1'))(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb10('0x4'));var fs=require('fs');var path=require(_0xbb10('0x5'));var rimraf=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var attributes=require(_0xbb10('0x8'));module[_0xbb10('0x9')]=function(_0x481979,_0x328583){return _0x481979[_0xbb10('0xa')]('OpenchannelMessage',attributes,{'tableName':_0xbb10('0xb'),'paranoid':![],'indexes':[{'name':_0xbb10('0xc'),'fields':[_0xbb10('0xd')],'type':_0xbb10('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2353ef,_0x1ce33e,_0x229887){var _0xa3adc8=_0x481979['models'];var _0x4e47f8=_0x2353ef[_0xbb10('0xf')]({'plain':!![]});if(_0x4e47f8[_0xbb10('0x10')][_0xbb10('0x11')]()==='in'||_0x4e47f8['direction'][_0xbb10('0x11')]()==='out'&&!_0x4e47f8[_0xbb10('0x12')]&&!_[_0xbb10('0x13')](_0x4e47f8[_0xbb10('0x14')])){_0xa3adc8[_0xbb10('0x15')][_0xbb10('0x16')]({'where':{'id':_0x4e47f8[_0xbb10('0x17')]}})['then'](function(_0x26e021){if(_0x26e021){_0x26e021[_0xbb10('0x18')]({'lastMsgAt':_0x4e47f8[_0xbb10('0x19')],'lastMsgDirection':_0x4e47f8[_0xbb10('0x10')][_0xbb10('0x11')]()});}})[_0xbb10('0x1a')](function(_0x24a57b){console[_0xbb10('0x1b')](_0x24a57b);});}if(_0x4e47f8[_0xbb10('0x10')]===_0xbb10('0x1c')&&!_0x4e47f8['secret']){var _0x2eca0f;_0xa3adc8[_0xbb10('0x1d')][_0xbb10('0x1e')]()[_0xbb10('0x1f')](function(_0x378da8){return _0xa3adc8[_0xbb10('0x20')][_0xbb10('0x21')]({'where':{'id':_0x4e47f8[_0xbb10('0x22')]},'include':[{'model':_0xa3adc8[_0xbb10('0x15')],'as':_0xbb10('0x23'),'where':{'id':_0x4e47f8['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0xa3adc8[_0xbb10('0x1d')],'as':_0xbb10('0x24'),'attributes':_[_0xbb10('0x25')](_0x378da8)}]}]});})[_0xbb10('0x1f')](function(_0xdf237d){_0x2eca0f=_0xdf237d[_0xbb10('0xf')]({'plain':!![]});if(_0x2eca0f&&_0x2eca0f['replyUri']){logger[_0xbb10('0x26')](_0xbb10('0x27'),'afterCreate',util['format'](_0xbb10('0x28'),_0x4e47f8['id'],_0x2eca0f[_0xbb10('0x29')]));if(_0x2eca0f[_0xbb10('0x23')]&&_0x2eca0f[_0xbb10('0x23')][_0xbb10('0x2a')]){_0x4e47f8[_0xbb10('0x2b')]=_[_0xbb10('0x2c')](_0x2eca0f[_0xbb10('0x23')][0x0],_0xbb10('0x24'));_0x4e47f8[_0xbb10('0x24')]=_0x2eca0f[_0xbb10('0x23')][0x0][_0xbb10('0x24')];}var _0x1ce33e={'method':'POST','uri':encodeURI(_0x2eca0f['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1ce33e[_0xbb10('0x2d')]){case _0xbb10('0x2e'):_0x1ce33e['qs']=_0x4e47f8;break;case _0xbb10('0x2f'):_0x1ce33e['body']=_0x4e47f8;break;}return rp(_0x1ce33e)[_0xbb10('0x1f')](function(_0x24d586){logger[_0xbb10('0x26')](_0xbb10('0x27'),_0xbb10('0x30'),util[_0xbb10('0x31')](_0xbb10('0x32'),_0x4e47f8['id'],_0x2eca0f['replyUri']));if(_0x24d586[_0xbb10('0xd')][_0xbb10('0x33')]&&_0x24d586[_0xbb10('0xd')][_0xbb10('0x33')]!=_0x4e47f8[_0xbb10('0x2b')][_0xbb10('0x33')]){return _0xa3adc8['OpenchannelInteraction'][_0xbb10('0x18')]({'threadId':_0x24d586['body'][_0xbb10('0x33')]},{'logging':!![],'where':{'id':_0x4e47f8['Interaction']['id']}});}else{return;}})[_0xbb10('0x1f')](function(){return _0x2353ef[_0xbb10('0x18')]({'read':!![]});})[_0xbb10('0x1a')](function(_0x491db4){logger['error'](_0xbb10('0x27'),_0xbb10('0x30'),util['inspect'](_0x491db4,{'showHidden':![],'depth':null}));_0x229887();});}else{_0x229887();}})[_0xbb10('0x34')](function(){_0x229887();});}else{_0x229887();}}},'charset':_0xbb10('0x35'),'collate':_0xbb10('0x36')});};
\ No newline at end of file
index f0851b3..ec52df8 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(_0x4d143b,_0x318dd2){var _0x4097f6=function(_0x526d6a){while(--_0x526d6a){_0x4d143b['push'](_0x4d143b['shift']());}};_0x4097f6(++_0x318dd2);}(_0xadb5,0xad));var _0x5adb=function(_0x14e666,_0x1a2561){_0x14e666=_0x14e666-0x0;var _0x3e77fd=_0xadb5[_0x14e666];return _0x3e77fd;};'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(_0x399138,_0x11d660){var _0x2b617c=function(_0x1c7c81){while(--_0x1c7c81){_0x399138['push'](_0x399138['shift']());}};_0x2b617c(++_0x11d660);}(_0x2ef3,0xba));var _0x32ef=function(_0x18e8fb,_0x1fd23a){_0x18e8fb=_0x18e8fb-0x0;var _0xda0592=_0x2ef3[_0x18e8fb];return _0xda0592;};'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 4bab21b..32ee4de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8958=['removeListener','length','openchannelMessage:','save'];(function(_0x180cd0,_0x386c6e){var _0x49fc32=function(_0x551c2c){while(--_0x551c2c){_0x180cd0['push'](_0x180cd0['shift']());}};_0x49fc32(++_0x386c6e);}(_0x8958,0x93));var _0x8895=function(_0x2692f1,_0xdfa6e){_0x2692f1=_0x2692f1-0x0;var _0x262a14=_0x8958[_0x2692f1];return _0x262a14;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0x8895('0x0'),'remove','update'];function createListener(_0x5baab1,_0x4cea64){return function(_0x418b66){_0x4cea64['emit'](_0x5baab1,_0x418b66);};}function removeListener(_0x38d5d7,_0xce4955){return function(){OpenchannelMessageEvents[_0x8895('0x1')](_0x38d5d7,_0xce4955);};}exports['register']=function(_0x22fa52){for(var _0x2f03ad=0x0,_0x124e1e=events[_0x8895('0x2')];_0x2f03ad<_0x124e1e;_0x2f03ad++){var _0x33013a=events[_0x2f03ad];var _0x51376b=createListener(_0x8895('0x3')+_0x33013a,_0x22fa52);OpenchannelMessageEvents['on'](_0x33013a,_0x51376b);}};
\ No newline at end of file
+var _0x145a=['removeListener','register','length','openchannelMessage:','./openchannelMessage.events','save','remove','update','emit'];(function(_0x278447,_0x105922){var _0x55d401=function(_0x55272b){while(--_0x55272b){_0x278447['push'](_0x278447['shift']());}};_0x55d401(++_0x105922);}(_0x145a,0x100));var _0xa145=function(_0x2438ff,_0x4b3a06){_0x2438ff=_0x2438ff-0x0;var _0x37dd4e=_0x145a[_0x2438ff];return _0x37dd4e;};'use strict';var OpenchannelMessageEvents=require(_0xa145('0x0'));var events=[_0xa145('0x1'),_0xa145('0x2'),_0xa145('0x3')];function createListener(_0x243f99,_0x5b0814){return function(_0x7e690c){_0x5b0814[_0xa145('0x4')](_0x243f99,_0x7e690c);};}function removeListener(_0x2a053c,_0x2e0beb){return function(){OpenchannelMessageEvents[_0xa145('0x5')](_0x2a053c,_0x2e0beb);};}exports[_0xa145('0x6')]=function(_0x474599){for(var _0x1e7224=0x0,_0x4c6aaa=events[_0xa145('0x7')];_0x1e7224<_0x4c6aaa;_0x1e7224++){var _0x1a2c12=events[_0x1e7224];var _0x26a577=createListener(_0xa145('0x8')+_0x1a2c12,_0x474599);OpenchannelMessageEvents['on'](_0x1a2c12,_0x26a577);}};
\ No newline at end of file
index 0799696..7c9d4c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c9b=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/members','/:id/users','getAgents','post','create','/:id/teams','addAgents','put','update','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout'];(function(_0x4ddf44,_0x2051be){var _0xc278d1=function(_0x235eb7){while(--_0x235eb7){_0x4ddf44['push'](_0x4ddf44['shift']());}};_0xc278d1(++_0x2051be);}(_0x7c9b,0x1ea));var _0xb7c9=function(_0x1494e1,_0x48675f){_0x1494e1=_0x1494e1-0x0;var _0x1482b8=_0x7c9b[_0x1494e1];return _0x1482b8;};'use strict';var multer=require(_0xb7c9('0x0'));var util=require('util');var path=require(_0xb7c9('0x1'));var timeout=require(_0xb7c9('0x2'));var express=require(_0xb7c9('0x3'));var router=express[_0xb7c9('0x4')]();var fs_extra=require(_0xb7c9('0x5'));var auth=require(_0xb7c9('0x6'));var interaction=require(_0xb7c9('0x7'));var config=require(_0xb7c9('0x8'));var controller=require(_0xb7c9('0x9'));router[_0xb7c9('0xa')]('/',auth[_0xb7c9('0xb')](),controller[_0xb7c9('0xc')]);router[_0xb7c9('0xa')](_0xb7c9('0xd'),auth['isAuthenticated'](),controller[_0xb7c9('0xe')]);router['get'](_0xb7c9('0xf'),auth[_0xb7c9('0xb')](),controller['show']);router[_0xb7c9('0xa')](_0xb7c9('0x10'),auth[_0xb7c9('0xb')](),controller['getMembers']);router[_0xb7c9('0xa')]('/:id/teams',auth[_0xb7c9('0xb')](),controller['getTeams']);router[_0xb7c9('0xa')](_0xb7c9('0x11'),auth[_0xb7c9('0xb')](),controller[_0xb7c9('0x12')]);router[_0xb7c9('0x13')]('/',auth['isAuthenticated'](),controller[_0xb7c9('0x14')]);router['post'](_0xb7c9('0x15'),auth[_0xb7c9('0xb')](),controller['addTeams']);router[_0xb7c9('0x13')](_0xb7c9('0x11'),auth[_0xb7c9('0xb')](),controller[_0xb7c9('0x16')]);router[_0xb7c9('0x17')](_0xb7c9('0xf'),auth['isAuthenticated'](),controller[_0xb7c9('0x18')]);router['delete'](_0xb7c9('0xf'),auth[_0xb7c9('0xb')](),controller[_0xb7c9('0x19')]);router['delete']('/:id/teams',auth[_0xb7c9('0xb')](),controller[_0xb7c9('0x1a')]);router['delete'](_0xb7c9('0x11'),auth[_0xb7c9('0xb')](),controller[_0xb7c9('0x1b')]);module[_0xb7c9('0x1c')]=router;
\ No newline at end of file
+var _0xbe0a=['destroy','removeTeams','removeAgents','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/teams','getTeams','/:id/users','getAgents','create','addTeams','post','put','update','delete'];(function(_0x32947b,_0x269dde){var _0x52885f=function(_0x37367e){while(--_0x37367e){_0x32947b['push'](_0x32947b['shift']());}};_0x52885f(++_0x269dde);}(_0xbe0a,0x153));var _0xabe0=function(_0x1798dd,_0x3d2a72){_0x1798dd=_0x1798dd-0x0;var _0x1f9659=_0xbe0a[_0x1798dd];return _0x1f9659;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xabe0('0x0'));var timeout=require(_0xabe0('0x1'));var express=require(_0xabe0('0x2'));var router=express[_0xabe0('0x3')]();var fs_extra=require(_0xabe0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xabe0('0x5'));var config=require(_0xabe0('0x6'));var controller=require(_0xabe0('0x7'));router[_0xabe0('0x8')]('/',auth['isAuthenticated'](),controller[_0xabe0('0x9')]);router[_0xabe0('0x8')](_0xabe0('0xa'),auth[_0xabe0('0xb')](),controller[_0xabe0('0xc')]);router[_0xabe0('0x8')](_0xabe0('0xd'),auth[_0xabe0('0xb')](),controller[_0xabe0('0xe')]);router['get']('/:id/members',auth[_0xabe0('0xb')](),controller['getMembers']);router['get'](_0xabe0('0xf'),auth[_0xabe0('0xb')](),controller[_0xabe0('0x10')]);router[_0xabe0('0x8')](_0xabe0('0x11'),auth[_0xabe0('0xb')](),controller[_0xabe0('0x12')]);router['post']('/',auth['isAuthenticated'](),controller[_0xabe0('0x13')]);router['post'](_0xabe0('0xf'),auth[_0xabe0('0xb')](),controller[_0xabe0('0x14')]);router[_0xabe0('0x15')](_0xabe0('0x11'),auth[_0xabe0('0xb')](),controller['addAgents']);router[_0xabe0('0x16')](_0xabe0('0xd'),auth[_0xabe0('0xb')](),controller[_0xabe0('0x17')]);router[_0xabe0('0x18')](_0xabe0('0xd'),auth[_0xabe0('0xb')](),controller[_0xabe0('0x19')]);router[_0xabe0('0x18')](_0xabe0('0xf'),auth[_0xabe0('0xb')](),controller[_0xabe0('0x1a')]);router[_0xabe0('0x18')](_0xabe0('0x11'),auth[_0xabe0('0xb')](),controller[_0xabe0('0x1b')]);module['exports']=router;
\ No newline at end of file
index 2615536..d6982be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cab=['beepall','roundrobin','sequelize','exports','STRING','INTEGER','ENUM','rrmemory'];(function(_0xc3790a,_0x3a8611){var _0x3380a8=function(_0x2a0a68){while(--_0x2a0a68){_0xc3790a['push'](_0xc3790a['shift']());}};_0x3380a8(++_0x3a8611);}(_0x5cab,0xf2));var _0xb5ca=function(_0x5ade66,_0x49caf6){_0x5ade66=_0x5ade66-0x0;var _0x12113f=_0x5cab[_0x5ade66];return _0x12113f;};'use strict';var Sequelize=require(_0xb5ca('0x0'));module[_0xb5ca('0x1')]={'name':{'type':Sequelize[_0xb5ca('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb5ca('0x2')]},'timeout':{'type':Sequelize[_0xb5ca('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb5ca('0x4')](_0xb5ca('0x5'),_0xb5ca('0x6'),_0xb5ca('0x7'))}};
\ No newline at end of file
+var _0xf9d4=['beepall','roundrobin','exports','STRING','name','ENUM','rrmemory'];(function(_0x431d47,_0x297de3){var _0x4c5f4f=function(_0x20f655){while(--_0x20f655){_0x431d47['push'](_0x431d47['shift']());}};_0x4c5f4f(++_0x297de3);}(_0xf9d4,0x17c));var _0x4f9d=function(_0x465fb8,_0x165188){_0x465fb8=_0x465fb8-0x0;var _0x5c959f=_0xf9d4[_0x465fb8];return _0x5c959f;};'use strict';var Sequelize=require('sequelize');module[_0x4f9d('0x0')]={'name':{'type':Sequelize[_0x4f9d('0x1')],'unique':_0x4f9d('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4f9d('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4f9d('0x3')](_0x4f9d('0x4'),_0x4f9d('0x5'),_0x4f9d('0x6'))}};
\ No newline at end of file
index 9015afc..08b6fe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b12=['role','get','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMembers','findOne','UserOpenchannelQueue','OpenchannelQueueId','findAndCountAll','agent','openchannelPause','updatedAt','createdAt','format','getTeams','Team','addTeams','ids','interface','Agents','transaction','each','forEach','emit','userOpenchannelQueue:save','User','select','from','team_has_openchannel_queues','join','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','all','compact','value','removeTeams','isEmpty','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','to-csv','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','OpenchannelQueues','UserProfileResource','error','stack','name','send','OpenchannelQueue','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','include','findAll','rows','catch','show','params','includeAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x47a366,_0x3918c4){var _0x5dd54e=function(_0x23d473){while(--_0x23d473){_0x47a366['push'](_0x47a366['shift']());}};_0x5dd54e(++_0x3918c4);}(_0x2b12,0xb4));var _0x22b1=function(_0x159b60,_0x2997b9){_0x159b60=_0x159b60-0x0;var _0x5aa670=_0x2b12[_0x159b60];return _0x5aa670;};'use strict';var emlformat=require(_0x22b1('0x0'));var rimraf=require(_0x22b1('0x1'));var zipdir=require(_0x22b1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x22b1('0x3'));var moment=require(_0x22b1('0x4'));var BPromise=require(_0x22b1('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x22b1('0x6'));var sox=require('sox');var csv=require(_0x22b1('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x22b1('0x8'));var _=require(_0x22b1('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x22b1('0xa'));var toCsv=require('to-csv');var querystring=require(_0x22b1('0xb'));var Papa=require(_0x22b1('0xc'));var Redis=require(_0x22b1('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x22b1('0xe'));var hardwareService=require(_0x22b1('0xf'));var logger=require('../../config/logger')(_0x22b1('0x10'));var utils=require(_0x22b1('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x22b1('0x12'));var db=require(_0x22b1('0x13'))['db'];config[_0x22b1('0x14')]=_[_0x22b1('0x15')](config['redis'],{'host':_0x22b1('0x16'),'port':0x18eb});var socket=require(_0x22b1('0x17'))(new Redis(config['redis']));require('./openchannelQueue.socket')[_0x22b1('0x18')](socket);function respondWithStatusCode(_0x460c5c,_0x186d5e){_0x186d5e=_0x186d5e||0xcc;return function(_0x4fa823){if(_0x4fa823){return _0x460c5c[_0x22b1('0x19')](_0x186d5e);}return _0x460c5c[_0x22b1('0x1a')](_0x186d5e)[_0x22b1('0x1b')]();};}function respondWithResult(_0x4e80a0,_0x1951a9){_0x1951a9=_0x1951a9||0xc8;return function(_0xe2ef87){if(_0xe2ef87){return _0x4e80a0['status'](_0x1951a9)['json'](_0xe2ef87);}};}function respondWithFilteredResult(_0x50828b,_0x4b4e7f){return function(_0x556f65){if(_0x556f65){var _0x117055=typeof _0x4b4e7f[_0x22b1('0x1c')]===_0x22b1('0x1d')&&typeof _0x4b4e7f[_0x22b1('0x1e')]===_0x22b1('0x1d');var _0x2dc149=_0x556f65['count'];var _0x24bd66=_0x117055?0x0:_0x4b4e7f[_0x22b1('0x1c')];var _0x3fc824=_0x117055?_0x556f65[_0x22b1('0x1f')]:_0x4b4e7f['offset']+_0x4b4e7f[_0x22b1('0x1e')];var _0x4c406f;if(_0x3fc824>=_0x2dc149){_0x3fc824=_0x2dc149;_0x4c406f=0xc8;}else{_0x4c406f=0xce;}_0x50828b[_0x22b1('0x1a')](_0x4c406f);return _0x50828b['set'](_0x22b1('0x20'),_0x24bd66+'-'+_0x3fc824+'/'+_0x2dc149)['json'](_0x556f65);}return null;};}function patchUpdates(_0x5a1130){return function(_0x1d45a0){try{jsonpatch[_0x22b1('0x21')](_0x1d45a0,_0x5a1130,!![]);}catch(_0x2cd62d){return BPromise[_0x22b1('0x22')](_0x2cd62d);}return _0x1d45a0[_0x22b1('0x23')]();};}function saveUpdates(_0x1eb434,_0x372d20){return function(_0x5d901a){if(_0x5d901a){return _0x5d901a[_0x22b1('0x24')](_0x1eb434)[_0x22b1('0x25')](function(_0x509140){return _0x509140;});}return null;};}function removeEntity(_0x4e7593,_0x55221c){return function(_0x53aa91){if(_0x53aa91){return _0x53aa91[_0x22b1('0x26')]()[_0x22b1('0x25')](function(){var _0x419e39=_0x53aa91['get']({'plain':!![]});var _0xec4be6=_0x22b1('0x27');return db[_0x22b1('0x28')][_0x22b1('0x26')]({'where':{'type':_0xec4be6,'resourceId':_0x419e39['id']}})['then'](function(){return _0x53aa91;});})['then'](function(){_0x4e7593[_0x22b1('0x1a')](0xcc)[_0x22b1('0x1b')]();});}};}function handleEntityNotFound(_0x24346e,_0x47cd7c){return function(_0xb47384){if(!_0xb47384){_0x24346e[_0x22b1('0x19')](0x194);}return _0xb47384;};}function handleError(_0xab165b,_0x106a36){_0x106a36=_0x106a36||0x1f4;return function(_0xd7a981){logger[_0x22b1('0x29')](_0xd7a981[_0x22b1('0x2a')]);if(_0xd7a981[_0x22b1('0x2b')]){delete _0xd7a981[_0x22b1('0x2b')];}_0xab165b['status'](_0x106a36)[_0x22b1('0x2c')](_0xd7a981);};}exports['index']=function(_0x3b138a,_0xcfe666){var _0x23ed68={},_0x182b79={},_0x4d344a={'count':0x0,'rows':[]};var _0x4c37d3=_['map'](db[_0x22b1('0x2d')][_0x22b1('0x2e')],function(_0xaf8fe7){return{'name':_0xaf8fe7[_0x22b1('0x2f')],'type':_0xaf8fe7[_0x22b1('0x30')][_0x22b1('0x31')]};});_0x182b79[_0x22b1('0x32')]=_[_0x22b1('0x33')](_0x4c37d3,_0x22b1('0x2b'));_0x182b79[_0x22b1('0x34')]=_[_0x22b1('0x35')](_0x3b138a[_0x22b1('0x34')]);_0x182b79[_0x22b1('0x36')]=_[_0x22b1('0x37')](_0x182b79[_0x22b1('0x32')],_0x182b79['query']);_0x23ed68[_0x22b1('0x38')]=_[_0x22b1('0x37')](_0x182b79[_0x22b1('0x32')],qs['fields'](_0x3b138a[_0x22b1('0x34')][_0x22b1('0x39')]));_0x23ed68[_0x22b1('0x38')]=_0x23ed68['attributes'][_0x22b1('0x3a')]?_0x23ed68[_0x22b1('0x38')]:_0x182b79[_0x22b1('0x32')];if(!_0x3b138a[_0x22b1('0x34')][_0x22b1('0x3b')](_0x22b1('0x3c'))){_0x23ed68[_0x22b1('0x1e')]=qs[_0x22b1('0x1e')](_0x3b138a[_0x22b1('0x34')][_0x22b1('0x1e')]);_0x23ed68[_0x22b1('0x1c')]=qs['offset'](_0x3b138a[_0x22b1('0x34')]['offset']);}_0x23ed68[_0x22b1('0x3d')]=qs['sort'](_0x3b138a['query'][_0x22b1('0x3e')]);_0x23ed68[_0x22b1('0x3f')]=qs['filters'](_[_0x22b1('0x40')](_0x3b138a[_0x22b1('0x34')],_0x182b79[_0x22b1('0x36')]),_0x4c37d3);if(_0x3b138a[_0x22b1('0x34')][_0x22b1('0x41')]){_0x23ed68['where']=_[_0x22b1('0x42')](_0x23ed68['where'],{'$or':_['map'](_0x4c37d3,function(_0xa79161){if(_0xa79161['type']!=='VIRTUAL'){var _0xdcb5f={};_0xdcb5f[_0xa79161[_0x22b1('0x2b')]]={'$like':'%'+_0x3b138a[_0x22b1('0x34')][_0x22b1('0x41')]+'%'};return _0xdcb5f;}})});}_0x23ed68=_[_0x22b1('0x42')]({},_0x23ed68,_0x3b138a['options']);var _0x4567e5={'where':_0x23ed68[_0x22b1('0x3f')]};return db[_0x22b1('0x2d')][_0x22b1('0x1f')](_0x4567e5)[_0x22b1('0x25')](function(_0x1b949e){_0x4d344a[_0x22b1('0x1f')]=_0x1b949e;if(_0x3b138a[_0x22b1('0x34')]['includeAll']){_0x23ed68[_0x22b1('0x43')]=[{'all':!![]}];}return db['OpenchannelQueue'][_0x22b1('0x44')](_0x23ed68);})[_0x22b1('0x25')](function(_0x4ab328){_0x4d344a[_0x22b1('0x45')]=_0x4ab328;return _0x4d344a;})[_0x22b1('0x25')](respondWithFilteredResult(_0xcfe666,_0x23ed68))[_0x22b1('0x46')](handleError(_0xcfe666,null));};exports[_0x22b1('0x47')]=function(_0x1de787,_0x52b4ec){var _0x4f77df={'raw':!![],'where':{'id':_0x1de787[_0x22b1('0x48')]['id']}},_0x35e229={};_0x35e229[_0x22b1('0x32')]=_[_0x22b1('0x35')](db[_0x22b1('0x2d')][_0x22b1('0x2e')]);_0x35e229[_0x22b1('0x34')]=_[_0x22b1('0x35')](_0x1de787[_0x22b1('0x34')]);_0x35e229[_0x22b1('0x36')]=_[_0x22b1('0x37')](_0x35e229[_0x22b1('0x32')],_0x35e229[_0x22b1('0x34')]);_0x4f77df['attributes']=_[_0x22b1('0x37')](_0x35e229['model'],qs[_0x22b1('0x39')](_0x1de787['query'][_0x22b1('0x39')]));_0x4f77df[_0x22b1('0x38')]=_0x4f77df['attributes'][_0x22b1('0x3a')]?_0x4f77df[_0x22b1('0x38')]:_0x35e229['model'];if(_0x1de787[_0x22b1('0x34')][_0x22b1('0x49')]){_0x4f77df[_0x22b1('0x43')]=[{'all':!![]}];}_0x4f77df=_['merge']({},_0x4f77df,_0x1de787[_0x22b1('0x4a')]);return db[_0x22b1('0x2d')][_0x22b1('0x4b')](_0x4f77df)['then'](handleEntityNotFound(_0x52b4ec,null))[_0x22b1('0x25')](respondWithResult(_0x52b4ec,null))['catch'](handleError(_0x52b4ec,null));};exports[_0x22b1('0x4c')]=function(_0x508b8b,_0x1307cf){return db[_0x22b1('0x2d')][_0x22b1('0x4c')](_0x508b8b[_0x22b1('0x4d')],{})[_0x22b1('0x25')](function(_0x7878c1){var _0x373906=_0x508b8b[_0x22b1('0x4e')]['get']({'plain':!![]});if(!_0x373906)throw new Error(_0x22b1('0x4f'));if(_0x373906[_0x22b1('0x50')]==='user'){var _0x200c9b=_0x7878c1[_0x22b1('0x51')]({'plain':!![]});var _0x198318=_0x22b1('0x27');return db[_0x22b1('0x52')][_0x22b1('0x4b')]({'where':{'name':_0x198318,'userProfileId':_0x373906['userProfileId']},'raw':!![]})['then'](function(_0x15a1b2){if(_0x15a1b2&&_0x15a1b2['autoAssociation']===0x0){return db[_0x22b1('0x28')][_0x22b1('0x4c')]({'name':_0x200c9b[_0x22b1('0x2b')],'resourceId':_0x200c9b['id'],'type':_0x15a1b2[_0x22b1('0x2b')],'sectionId':_0x15a1b2['id']},{})['then'](function(){return _0x7878c1;});}else{return _0x7878c1;}})[_0x22b1('0x46')](function(_0xae3827){logger[_0x22b1('0x29')](_0x22b1('0x53'),_0xae3827);throw _0xae3827;});}return _0x7878c1;})[_0x22b1('0x25')](respondWithResult(_0x1307cf,0xc9))[_0x22b1('0x46')](handleError(_0x1307cf,null));};exports['update']=function(_0x170f91,_0x220aed){if(_0x170f91[_0x22b1('0x4d')]['id']){delete _0x170f91[_0x22b1('0x4d')]['id'];}return db[_0x22b1('0x2d')][_0x22b1('0x4b')]({'where':{'id':_0x170f91[_0x22b1('0x48')]['id']}})[_0x22b1('0x25')](handleEntityNotFound(_0x220aed,null))[_0x22b1('0x25')](saveUpdates(_0x170f91[_0x22b1('0x4d')],null))[_0x22b1('0x25')](respondWithResult(_0x220aed,null))['catch'](handleError(_0x220aed,null));};exports[_0x22b1('0x26')]=function(_0x4c378f,_0x58288c){return db['OpenchannelQueue'][_0x22b1('0x4b')]({'where':{'id':_0x4c378f[_0x22b1('0x48')]['id']}})[_0x22b1('0x25')](handleEntityNotFound(_0x58288c,null))[_0x22b1('0x25')](removeEntity(_0x58288c,null))[_0x22b1('0x46')](handleError(_0x58288c,null));};exports['describe']=function(_0x1a2ccb,_0x54597d){return db[_0x22b1('0x2d')]['describe']()[_0x22b1('0x25')](respondWithResult(_0x54597d,null))[_0x22b1('0x46')](handleError(_0x54597d,null));};exports[_0x22b1('0x54')]=function(_0x55faae,_0x244b2e,_0x264bc3){var _0x1259ab={'raw':!![],'where':{}},_0x225311={},_0x240b14;return db[_0x22b1('0x2d')][_0x22b1('0x55')]({'where':{'id':_0x55faae[_0x22b1('0x48')]['id']}})[_0x22b1('0x25')](handleEntityNotFound(_0x244b2e,null))[_0x22b1('0x25')](function(_0x4fe2e9){if(_0x4fe2e9){_0x240b14=_0x4fe2e9[_0x22b1('0x51')]({'plain':!![]});_0x225311[_0x22b1('0x32')]=_[_0x22b1('0x35')](db[_0x22b1('0x56')][_0x22b1('0x2e')]);_0x225311[_0x22b1('0x34')]=_[_0x22b1('0x35')](_0x55faae['query']);_0x225311[_0x22b1('0x36')]=_[_0x22b1('0x37')](_0x225311[_0x22b1('0x32')],_0x225311[_0x22b1('0x34')]);_0x1259ab['attributes']=_[_0x22b1('0x37')](_0x225311['model'],qs[_0x22b1('0x39')](_0x55faae['query'][_0x22b1('0x39')]));_0x1259ab[_0x22b1('0x38')]=_0x1259ab[_0x22b1('0x38')][_0x22b1('0x3a')]?_0x1259ab['attributes']:_0x225311['model'];if(!_0x55faae[_0x22b1('0x34')][_0x22b1('0x3b')](_0x22b1('0x3c'))){_0x1259ab[_0x22b1('0x1e')]=qs[_0x22b1('0x1e')](_0x55faae['query'][_0x22b1('0x1e')]);_0x1259ab[_0x22b1('0x1c')]=qs[_0x22b1('0x1c')](_0x55faae[_0x22b1('0x34')][_0x22b1('0x1c')]);}_0x1259ab['order']=qs[_0x22b1('0x3e')](_0x55faae[_0x22b1('0x34')][_0x22b1('0x3e')]);_0x1259ab[_0x22b1('0x3f')]=qs[_0x22b1('0x36')](_[_0x22b1('0x40')](_0x55faae[_0x22b1('0x34')],_0x225311[_0x22b1('0x36')]));_0x1259ab[_0x22b1('0x3f')][_0x22b1('0x57')]=_0x4fe2e9['id'];if(_0x55faae[_0x22b1('0x34')][_0x22b1('0x41')]){_0x1259ab[_0x22b1('0x3f')]=_[_0x22b1('0x42')](_0x1259ab[_0x22b1('0x3f')],{'$or':_[_0x22b1('0x33')](_0x1259ab[_0x22b1('0x38')],function(_0x489542){var _0xd92abc={};_0xd92abc[_0x489542]={'$like':'%'+_0x55faae[_0x22b1('0x34')]['filter']+'%'};return _0xd92abc;})});}_0x1259ab=_[_0x22b1('0x42')]({},_0x1259ab,_0x55faae[_0x22b1('0x4a')]);return db[_0x22b1('0x56')][_0x22b1('0x44')](_0x1259ab);}})[_0x22b1('0x25')](function(_0x193823){if(_0x193823){return db['User'][_0x22b1('0x58')]({'where':{'id':_['map'](_0x193823,'UserId'),'role':_0x22b1('0x59')},'attributes':['id',_0x22b1('0x2b'),_0x22b1('0x5a'),_0x22b1('0x5b'),_0x22b1('0x5c')]});}})[_0x22b1('0x25')](function(_0x20f867){if(_0x20f867){return{'count':_0x20f867[_0x22b1('0x1f')],'rows':_[_0x22b1('0x33')](_0x20f867[_0x22b1('0x45')],function(_0x36ee82){return{'membername':_0x36ee82[_0x22b1('0x2b')],'UserId':_0x36ee82['id'],'queue_name':_0x240b14[_0x22b1('0x2b')],'OpenchannelQueueId':_0x240b14['id'],'interface':util[_0x22b1('0x5d')]('%s/%s','SIP',_0x36ee82['name']),'penalty':0x0,'paused':_0x36ee82[_0x22b1('0x5a')],'createdAt':_0x36ee82[_0x22b1('0x5c')],'updatedAt':_0x36ee82[_0x22b1('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x22b1('0x25')](respondWithFilteredResult(_0x244b2e,_0x1259ab))['catch'](handleError(_0x244b2e,null));};exports[_0x22b1('0x5e')]=function(_0x3b0584,_0x1a4c06,_0x3a7e8f){var _0x3155e5={};var _0x2d5341={};var _0x46c8a2;var _0xd87962;return db[_0x22b1('0x2d')][_0x22b1('0x55')]({'where':{'id':_0x3b0584[_0x22b1('0x48')]['id']}})[_0x22b1('0x25')](handleEntityNotFound(_0x1a4c06,null))['then'](function(_0xf058cc){if(_0xf058cc){_0x46c8a2=_0xf058cc;_0x2d5341[_0x22b1('0x32')]=_[_0x22b1('0x35')](db[_0x22b1('0x5f')][_0x22b1('0x2e')]);_0x2d5341['query']=_[_0x22b1('0x35')](_0x3b0584['query']);_0x2d5341[_0x22b1('0x36')]=_[_0x22b1('0x37')](_0x2d5341[_0x22b1('0x32')],_0x2d5341[_0x22b1('0x34')]);_0x3155e5['attributes']=_[_0x22b1('0x37')](_0x2d5341[_0x22b1('0x32')],qs['fields'](_0x3b0584[_0x22b1('0x34')][_0x22b1('0x39')]));_0x3155e5[_0x22b1('0x38')]=_0x3155e5[_0x22b1('0x38')][_0x22b1('0x3a')]?_0x3155e5[_0x22b1('0x38')]:_0x2d5341['model'];_0x3155e5[_0x22b1('0x3d')]=qs[_0x22b1('0x3e')](_0x3b0584[_0x22b1('0x34')][_0x22b1('0x3e')]);_0x3155e5[_0x22b1('0x3f')]=qs[_0x22b1('0x36')](_['pick'](_0x3b0584[_0x22b1('0x34')],_0x2d5341[_0x22b1('0x36')]));if(_0x3b0584[_0x22b1('0x34')][_0x22b1('0x41')]){_0x3155e5['where']=_[_0x22b1('0x42')](_0x3155e5['where'],{'$or':_['map'](_0x3155e5[_0x22b1('0x38')],function(_0x1abd2c){var _0xc48d53={};_0xc48d53[_0x1abd2c]={'$like':'%'+_0x3b0584['query'][_0x22b1('0x41')]+'%'};return _0xc48d53;})});}_0x3155e5=_[_0x22b1('0x42')]({},_0x3155e5,_0x3b0584[_0x22b1('0x4a')]);return _0x46c8a2['getTeams'](_0x3155e5);}})[_0x22b1('0x25')](function(_0x355228){if(_0x355228){_0xd87962=_0x355228[_0x22b1('0x3a')];if(!_0x3b0584[_0x22b1('0x34')][_0x22b1('0x3b')](_0x22b1('0x3c'))){_0x3155e5[_0x22b1('0x1e')]=qs[_0x22b1('0x1e')](_0x3b0584[_0x22b1('0x34')]['limit']);_0x3155e5[_0x22b1('0x1c')]=qs[_0x22b1('0x1c')](_0x3b0584[_0x22b1('0x34')]['offset']);}return _0x46c8a2[_0x22b1('0x5e')](_0x3155e5);}})['then'](function(_0x566e24){if(_0x566e24){return _0x566e24?{'count':_0xd87962,'rows':_0x566e24}:null;}})[_0x22b1('0x25')](respondWithResult(_0x1a4c06,null))[_0x22b1('0x46')](handleError(_0x1a4c06,null));};exports[_0x22b1('0x60')]=function(_0x23f0e6,_0x2f610c,_0x5785a4){var _0x1ca5c5=_0x23f0e6[_0x22b1('0x4d')][_0x22b1('0x61')];return db[_0x22b1('0x5f')]['findAll']({'where':{'id':_0x1ca5c5},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x22b1('0x2b'),'online','voicePause',_0x22b1('0x62')],'raw':!![]}]})[_0x22b1('0x25')](function(_0x4a57a0){if(_0x4a57a0){var _0x13747e=_['flatMap'](_0x4a57a0,function(_0x78f8b3){var _0x146eb3=_0x78f8b3[_0x22b1('0x51')]({'plain':!![]});return _0x146eb3[_0x22b1('0x63')];});return db[_0x22b1('0x2d')][_0x22b1('0x4b')]({'where':{'id':_0x23f0e6[_0x22b1('0x48')]['id']}})[_0x22b1('0x25')](function(_0x5747f0){return db['sequelize'][_0x22b1('0x64')](function(_0x1e2b4f){return _0x5747f0[_0x22b1('0x60')](_0x1ca5c5,{'transaction':_0x1e2b4f})[_0x22b1('0x25')](function(){return BPromise[_0x22b1('0x65')](_0x13747e,function(_0x308e25){return db[_0x22b1('0x56')]['findOrCreate']({'where':{'UserId':_0x308e25['id'],'OpenchannelQueueId':_0x23f0e6['params']['id']},'transaction':_0x1e2b4f});});})[_0x22b1('0x25')](function(){_0x13747e[_0x22b1('0x66')](function(_0x3ea7e1){socket[_0x22b1('0x67')](_0x22b1('0x68'),{'UserId':_0x3ea7e1['id'],'OpenchannelQueueId':_0x5747f0['id']});});});});});}})[_0x22b1('0x25')](respondWithStatusCode(_0x2f610c,null))[_0x22b1('0x46')](handleError(_0x2f610c,null));};exports['removeTeams']=function(_0x3ce965,_0x3e9d16,_0x4b2ed8){return db[_0x22b1('0x5f')][_0x22b1('0x44')]({'where':{'id':_0x3ce965[_0x22b1('0x34')][_0x22b1('0x61')]},'attributes':['id'],'include':[{'model':db[_0x22b1('0x69')],'as':_0x22b1('0x63'),'attributes':['id'],'raw':!![]}]})[_0x22b1('0x25')](handleEntityNotFound(_0x3e9d16,null))[_0x22b1('0x25')](function(_0x4fccf0){var _0xc86e25=_['map'](_0x4fccf0,'id');var _0x421164=[];var _0xed5859=[];var _0xcfc38d=squel[_0x22b1('0x6a')]();_0xcfc38d['field']('tq.TeamId')[_0x22b1('0x6b')](_0x22b1('0x6c'),'tq')[_0x22b1('0x6d')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x22b1('0x3f')]('OpenchannelQueueId\x20=\x20?',_0x3ce965['params']['id']);for(var _0x1708c5=0x0;_0x1708c5<_0x4fccf0[_0x22b1('0x3a')];_0x1708c5+=0x1){let _0x180d63=_0x4fccf0[_0x1708c5];for(var _0x23ddea=0x0;_0x23ddea<_0x180d63[_0x22b1('0x63')][_0x22b1('0x3a')];_0x23ddea+=0x1){let _0x355d2a=_0x180d63[_0x22b1('0x63')][_0x23ddea];var _0x33cccf=_0xcfc38d[_0x22b1('0x6e')]();_0x33cccf[_0x22b1('0x3f')](_0x22b1('0x6f'),_0x355d2a['id']);_0xed5859[_0x22b1('0x70')](db[_0x22b1('0x71')][_0x22b1('0x34')](_0x33cccf[_0x22b1('0x72')](),{'type':db[_0x22b1('0x71')][_0x22b1('0x73')][_0x22b1('0x74')]})[_0x22b1('0x25')](function(_0x374637){if(_0x374637[_0x22b1('0x3a')]===0x1){return _0x355d2a['id'];}else{var _0x3c8472=_[_0x22b1('0x75')](_[_0x22b1('0x33')](_0x374637,_0x22b1('0x76')),function(_0x237ea1){return _['includes'](_0xc86e25,_0x237ea1);});if(_0x3c8472){return _0x355d2a['id'];}}}));}}return BPromise[_0x22b1('0x77')](_0xed5859)[_0x22b1('0x25')](function(_0x4bb5c9){_0x421164=_(_0x421164)['union'](_0x4bb5c9)[_0x22b1('0x78')]()[_0x22b1('0x79')]();return db['OpenchannelQueue'][_0x22b1('0x4b')]({'where':{'id':_0x3ce965[_0x22b1('0x48')]['id']}})[_0x22b1('0x25')](function(_0xc3bc6e){return db[_0x22b1('0x71')][_0x22b1('0x64')](function(_0x5a571b){return _0xc3bc6e[_0x22b1('0x7a')](_0x3ce965[_0x22b1('0x34')][_0x22b1('0x61')],{'transaction':_0x5a571b})[_0x22b1('0x25')](function(){if(!_[_0x22b1('0x7b')](_0x421164)){return _0xc3bc6e['removeAgents'](_0x421164,{'transaction':_0x5a571b});}})[_0x22b1('0x25')](function(){_0x421164[_0x22b1('0x66')](function(_0x4dfe48){socket[_0x22b1('0x67')]('userOpenchannelQueue:remove',{'UserId':_0x4dfe48,'OpenchannelQueueId':_0xc3bc6e['id']});});});});});});})['then'](respondWithStatusCode(_0x3e9d16,null))[_0x22b1('0x46')](handleError(_0x3e9d16,null));};exports[_0x22b1('0x7c')]=function(_0x4ecff1,_0x377cd4,_0x42d5d5){return db['OpenchannelQueue'][_0x22b1('0x4b')]({'where':{'id':_0x4ecff1['params']['id']}})[_0x22b1('0x25')](handleEntityNotFound(_0x377cd4,null))[_0x22b1('0x25')](function(_0x30684b){if(_0x30684b){return _0x30684b[_0x22b1('0x7c')](_0x4ecff1[_0x22b1('0x4d')]['ids'],_[_0x22b1('0x7d')](_0x4ecff1[_0x22b1('0x4d')],['ids','id'])||{})[_0x22b1('0x7e')](function(_0x4210c5){for(var _0x1a5a23=0x0;_0x1a5a23<_0x4ecff1[_0x22b1('0x4d')][_0x22b1('0x61')]['length'];_0x1a5a23+=0x1){socket['emit']('userOpenchannelQueue:save',{'UserId':Number(_0x4ecff1['body']['ids'][_0x1a5a23]),'OpenchannelQueueId':Number(_0x4ecff1['params']['id'])});}return _0x4210c5;});}})[_0x22b1('0x25')](respondWithResult(_0x377cd4,null))[_0x22b1('0x46')](handleError(_0x377cd4,null));};exports[_0x22b1('0x7f')]=function(_0x227041,_0x282071,_0x2606c1){return db[_0x22b1('0x2d')][_0x22b1('0x4b')]({'where':{'id':_0x227041['params']['id']}})[_0x22b1('0x25')](handleEntityNotFound(_0x282071,null))[_0x22b1('0x25')](function(_0x5ba9fc){if(_0x5ba9fc){return _0x5ba9fc['removeAgents'](_0x227041['query']['ids'])[_0x22b1('0x25')](function(){if(_[_0x22b1('0x80')](_0x227041[_0x22b1('0x34')][_0x22b1('0x61')])){for(var _0xb9adf3=0x0;_0xb9adf3<_0x227041[_0x22b1('0x34')][_0x22b1('0x61')][_0x22b1('0x3a')];_0xb9adf3+=0x1){socket[_0x22b1('0x67')]('userOpenchannelQueue:remove',{'UserId':Number(_0x227041['query'][_0x22b1('0x61')][_0xb9adf3]),'OpenchannelQueueId':Number(_0x227041[_0x22b1('0x48')]['id'])});}}else{socket[_0x22b1('0x67')]('userOpenchannelQueue:remove',{'UserId':Number(_0x227041[_0x22b1('0x34')]['ids']),'OpenchannelQueueId':Number(_0x227041['params']['id'])});}});}})[_0x22b1('0x25')](respondWithStatusCode(_0x282071,null))['catch'](handleError(_0x282071,null));};exports[_0x22b1('0x81')]=function(_0x105aa4,_0x3f2354,_0x14bb86){var _0x5bd3d9={};var _0x56c75d={};var _0xe867c6;var _0x160241;return db[_0x22b1('0x2d')][_0x22b1('0x55')]({'where':{'id':_0x105aa4[_0x22b1('0x48')]['id']}})[_0x22b1('0x25')](handleEntityNotFound(_0x3f2354,null))[_0x22b1('0x25')](function(_0xc36e13){if(_0xc36e13){_0xe867c6=_0xc36e13;_0x56c75d[_0x22b1('0x32')]=_[_0x22b1('0x35')](db[_0x22b1('0x69')][_0x22b1('0x2e')]);_0x56c75d[_0x22b1('0x34')]=_['keys'](_0x105aa4['query']);_0x56c75d[_0x22b1('0x36')]=_[_0x22b1('0x37')](_0x56c75d[_0x22b1('0x32')],_0x56c75d['query']);_0x5bd3d9[_0x22b1('0x38')]=_[_0x22b1('0x37')](_0x56c75d[_0x22b1('0x32')],qs[_0x22b1('0x39')](_0x105aa4[_0x22b1('0x34')]['fields']));_0x5bd3d9[_0x22b1('0x38')]=_0x5bd3d9[_0x22b1('0x38')]['length']?_0x5bd3d9['attributes']:_0x56c75d['model'];_0x5bd3d9[_0x22b1('0x3d')]=qs[_0x22b1('0x3e')](_0x105aa4['query'][_0x22b1('0x3e')]);_0x5bd3d9[_0x22b1('0x3f')]=qs[_0x22b1('0x36')](_[_0x22b1('0x40')](_0x105aa4[_0x22b1('0x34')],_0x56c75d['filters']));if(_0x105aa4['query']['filter']){_0x5bd3d9[_0x22b1('0x3f')]=_[_0x22b1('0x42')](_0x5bd3d9['where'],{'$or':_[_0x22b1('0x33')](_0x5bd3d9[_0x22b1('0x38')],function(_0x124dbe){var _0x2ed881={};_0x2ed881[_0x124dbe]={'$like':'%'+_0x105aa4['query'][_0x22b1('0x41')]+'%'};return _0x2ed881;})});}_0x5bd3d9=_[_0x22b1('0x42')]({},_0x5bd3d9,_0x105aa4[_0x22b1('0x4a')]);return _0xe867c6['getAgents'](_0x5bd3d9);}})[_0x22b1('0x25')](function(_0x69820c){if(_0x69820c){_0x160241=_0x69820c[_0x22b1('0x3a')];if(!_0x105aa4['query'][_0x22b1('0x3b')](_0x22b1('0x3c'))){_0x5bd3d9[_0x22b1('0x1e')]=qs[_0x22b1('0x1e')](_0x105aa4[_0x22b1('0x34')]['limit']);_0x5bd3d9[_0x22b1('0x1c')]=qs[_0x22b1('0x1c')](_0x105aa4[_0x22b1('0x34')][_0x22b1('0x1c')]);}return _0xe867c6[_0x22b1('0x81')](_0x5bd3d9);}})[_0x22b1('0x25')](function(_0x51433b){if(_0x51433b){return _0x51433b?{'count':_0x160241,'rows':_0x51433b}:null;}})[_0x22b1('0x25')](respondWithResult(_0x3f2354,null))['catch'](handleError(_0x3f2354,null));};
\ No newline at end of file
+var _0xe74b=['keys','rawAttributes','includeAll','find','catch','create','user','role','userProfileId','autoAssociation','update','body','describe','findOne','UserOpenchannelQueue','order','pick','OpenchannelQueueId','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','addTeams','User','Agents','online','voicePause','flatMap','sequelize','transaction','findOrCreate','forEach','emit','userOpenchannelQueue:save','removeTeams','Team','ids','select','field','tq.TeamId','from','team_has_openchannel_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','spread','isArray','getAgents','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','redis','defaults','localhost','./openchannelQueue.socket','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','destroy','then','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','OpenchannelQueue','fieldName','type','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','include','findAll','show','params'];(function(_0x4dc645,_0x12cca1){var _0x2c7d8a=function(_0x55a718){while(--_0x55a718){_0x4dc645['push'](_0x4dc645['shift']());}};_0x2c7d8a(++_0x12cca1);}(_0xe74b,0xd2));var _0xbe74=function(_0x3dea76,_0x13aafc){_0x3dea76=_0x3dea76-0x0;var _0x2a2dd5=_0xe74b[_0x3dea76];return _0x2a2dd5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xbe74('0x0'));var jsonpatch=require(_0xbe74('0x1'));var rp=require('request-promise');var moment=require(_0xbe74('0x2'));var BPromise=require(_0xbe74('0x3'));var Mustache=require(_0xbe74('0x4'));var util=require('util');var path=require(_0xbe74('0x5'));var sox=require(_0xbe74('0x6'));var csv=require(_0xbe74('0x7'));var ejs=require(_0xbe74('0x8'));var fs=require('fs');var fs_extra=require(_0xbe74('0x9'));var _=require(_0xbe74('0xa'));var squel=require(_0xbe74('0xb'));var crypto=require('crypto');var jsforce=require(_0xbe74('0xc'));var deskjs=require(_0xbe74('0xd'));var toCsv=require(_0xbe74('0x7'));var querystring=require(_0xbe74('0xe'));var Papa=require(_0xbe74('0xf'));var Redis=require(_0xbe74('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbe74('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbe74('0x12'));var logger=require(_0xbe74('0x13'))('api');var utils=require(_0xbe74('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xbe74('0x15'))['db'];config[_0xbe74('0x16')]=_[_0xbe74('0x17')](config[_0xbe74('0x16')],{'host':_0xbe74('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbe74('0x16')]));require(_0xbe74('0x19'))['register'](socket);function respondWithStatusCode(_0x3d5eda,_0x486cde){_0x486cde=_0x486cde||0xcc;return function(_0x398769){if(_0x398769){return _0x3d5eda[_0xbe74('0x1a')](_0x486cde);}return _0x3d5eda[_0xbe74('0x1b')](_0x486cde)['end']();};}function respondWithResult(_0x55bb7d,_0x4e1303){_0x4e1303=_0x4e1303||0xc8;return function(_0x1f8df4){if(_0x1f8df4){return _0x55bb7d[_0xbe74('0x1b')](_0x4e1303)[_0xbe74('0x1c')](_0x1f8df4);}};}function respondWithFilteredResult(_0x3a6f29,_0x210ee4){return function(_0x5d452e){if(_0x5d452e){var _0x552414=typeof _0x210ee4[_0xbe74('0x1d')]==='undefined'&&typeof _0x210ee4[_0xbe74('0x1e')]===_0xbe74('0x1f');var _0x4b7e83=_0x5d452e['count'];var _0x13b9ce=_0x552414?0x0:_0x210ee4[_0xbe74('0x1d')];var _0x45085a=_0x552414?_0x5d452e[_0xbe74('0x20')]:_0x210ee4[_0xbe74('0x1d')]+_0x210ee4[_0xbe74('0x1e')];var _0x3fd7cb;if(_0x45085a>=_0x4b7e83){_0x45085a=_0x4b7e83;_0x3fd7cb=0xc8;}else{_0x3fd7cb=0xce;}_0x3a6f29[_0xbe74('0x1b')](_0x3fd7cb);return _0x3a6f29['set'](_0xbe74('0x21'),_0x13b9ce+'-'+_0x45085a+'/'+_0x4b7e83)[_0xbe74('0x1c')](_0x5d452e);}return null;};}function patchUpdates(_0x322986){return function(_0x177bd4){try{jsonpatch[_0xbe74('0x22')](_0x177bd4,_0x322986,!![]);}catch(_0xc72f04){return BPromise[_0xbe74('0x23')](_0xc72f04);}return _0x177bd4[_0xbe74('0x24')]();};}function saveUpdates(_0x7f815e,_0x1ac283){return function(_0xab9e7c){if(_0xab9e7c){return _0xab9e7c['update'](_0x7f815e)['then'](function(_0x2089ca){return _0x2089ca;});}return null;};}function removeEntity(_0x57ad9d,_0xe2494c){return function(_0x230d49){if(_0x230d49){return _0x230d49[_0xbe74('0x25')]()[_0xbe74('0x26')](function(){var _0x54a755=_0x230d49[_0xbe74('0x27')]({'plain':!![]});var _0x23f642=_0xbe74('0x28');return db[_0xbe74('0x29')]['destroy']({'where':{'type':_0x23f642,'resourceId':_0x54a755['id']}})['then'](function(){return _0x230d49;});})[_0xbe74('0x26')](function(){_0x57ad9d[_0xbe74('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xc8605,_0x53a735){return function(_0x379d17){if(!_0x379d17){_0xc8605[_0xbe74('0x1a')](0x194);}return _0x379d17;};}function handleError(_0x50d177,_0x401da7){_0x401da7=_0x401da7||0x1f4;return function(_0x2b34c2){logger[_0xbe74('0x2a')](_0x2b34c2[_0xbe74('0x2b')]);if(_0x2b34c2[_0xbe74('0x2c')]){delete _0x2b34c2[_0xbe74('0x2c')];}_0x50d177[_0xbe74('0x1b')](_0x401da7)[_0xbe74('0x2d')](_0x2b34c2);};}exports[_0xbe74('0x2e')]=function(_0x1b9f09,_0x5b8ece){var _0x33917b={},_0xc04a08={},_0x504f54={'count':0x0,'rows':[]};var _0xd46979=_[_0xbe74('0x2f')](db[_0xbe74('0x30')]['rawAttributes'],function(_0x3e434f){return{'name':_0x3e434f[_0xbe74('0x31')],'type':_0x3e434f[_0xbe74('0x32')][_0xbe74('0x33')]};});_0xc04a08[_0xbe74('0x34')]=_[_0xbe74('0x2f')](_0xd46979,'name');_0xc04a08['query']=_['keys'](_0x1b9f09['query']);_0xc04a08[_0xbe74('0x35')]=_[_0xbe74('0x36')](_0xc04a08[_0xbe74('0x34')],_0xc04a08[_0xbe74('0x37')]);_0x33917b[_0xbe74('0x38')]=_[_0xbe74('0x36')](_0xc04a08[_0xbe74('0x34')],qs[_0xbe74('0x39')](_0x1b9f09[_0xbe74('0x37')][_0xbe74('0x39')]));_0x33917b[_0xbe74('0x38')]=_0x33917b[_0xbe74('0x38')][_0xbe74('0x3a')]?_0x33917b[_0xbe74('0x38')]:_0xc04a08['model'];if(!_0x1b9f09[_0xbe74('0x37')][_0xbe74('0x3b')](_0xbe74('0x3c'))){_0x33917b[_0xbe74('0x1e')]=qs[_0xbe74('0x1e')](_0x1b9f09[_0xbe74('0x37')][_0xbe74('0x1e')]);_0x33917b['offset']=qs[_0xbe74('0x1d')](_0x1b9f09[_0xbe74('0x37')][_0xbe74('0x1d')]);}_0x33917b['order']=qs[_0xbe74('0x3d')](_0x1b9f09['query']['sort']);_0x33917b[_0xbe74('0x3e')]=qs['filters'](_['pick'](_0x1b9f09[_0xbe74('0x37')],_0xc04a08[_0xbe74('0x35')]),_0xd46979);if(_0x1b9f09[_0xbe74('0x37')][_0xbe74('0x3f')]){_0x33917b[_0xbe74('0x3e')]=_[_0xbe74('0x40')](_0x33917b[_0xbe74('0x3e')],{'$or':_[_0xbe74('0x2f')](_0xd46979,function(_0x57bc59){if(_0x57bc59[_0xbe74('0x32')]!=='VIRTUAL'){var _0x175355={};_0x175355[_0x57bc59[_0xbe74('0x2c')]]={'$like':'%'+_0x1b9f09[_0xbe74('0x37')][_0xbe74('0x3f')]+'%'};return _0x175355;}})});}_0x33917b=_[_0xbe74('0x40')]({},_0x33917b,_0x1b9f09[_0xbe74('0x41')]);var _0x245f45={'where':_0x33917b[_0xbe74('0x3e')]};return db['OpenchannelQueue'][_0xbe74('0x20')](_0x245f45)['then'](function(_0x12fee8){_0x504f54[_0xbe74('0x20')]=_0x12fee8;if(_0x1b9f09[_0xbe74('0x37')]['includeAll']){_0x33917b[_0xbe74('0x42')]=[{'all':!![]}];}return db[_0xbe74('0x30')][_0xbe74('0x43')](_0x33917b);})[_0xbe74('0x26')](function(_0x39e4b4){_0x504f54['rows']=_0x39e4b4;return _0x504f54;})[_0xbe74('0x26')](respondWithFilteredResult(_0x5b8ece,_0x33917b))['catch'](handleError(_0x5b8ece,null));};exports[_0xbe74('0x44')]=function(_0x20a489,_0x2ea567){var _0x13a32c={'raw':!![],'where':{'id':_0x20a489[_0xbe74('0x45')]['id']}},_0x88d57={};_0x88d57['model']=_[_0xbe74('0x46')](db[_0xbe74('0x30')][_0xbe74('0x47')]);_0x88d57[_0xbe74('0x37')]=_[_0xbe74('0x46')](_0x20a489[_0xbe74('0x37')]);_0x88d57[_0xbe74('0x35')]=_['intersection'](_0x88d57[_0xbe74('0x34')],_0x88d57[_0xbe74('0x37')]);_0x13a32c[_0xbe74('0x38')]=_[_0xbe74('0x36')](_0x88d57[_0xbe74('0x34')],qs['fields'](_0x20a489[_0xbe74('0x37')][_0xbe74('0x39')]));_0x13a32c[_0xbe74('0x38')]=_0x13a32c[_0xbe74('0x38')][_0xbe74('0x3a')]?_0x13a32c[_0xbe74('0x38')]:_0x88d57['model'];if(_0x20a489[_0xbe74('0x37')][_0xbe74('0x48')]){_0x13a32c[_0xbe74('0x42')]=[{'all':!![]}];}_0x13a32c=_['merge']({},_0x13a32c,_0x20a489[_0xbe74('0x41')]);return db[_0xbe74('0x30')][_0xbe74('0x49')](_0x13a32c)[_0xbe74('0x26')](handleEntityNotFound(_0x2ea567,null))[_0xbe74('0x26')](respondWithResult(_0x2ea567,null))[_0xbe74('0x4a')](handleError(_0x2ea567,null));};exports[_0xbe74('0x4b')]=function(_0x52e024,_0x41222f){return db[_0xbe74('0x30')][_0xbe74('0x4b')](_0x52e024['body'],{})[_0xbe74('0x26')](function(_0x27c745){var _0xda2f3c=_0x52e024[_0xbe74('0x4c')][_0xbe74('0x27')]({'plain':!![]});if(!_0xda2f3c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xda2f3c[_0xbe74('0x4d')]===_0xbe74('0x4c')){var _0x589678=_0x27c745[_0xbe74('0x27')]({'plain':!![]});var _0xa62b5='OpenchannelQueues';return db['UserProfileSection'][_0xbe74('0x49')]({'where':{'name':_0xa62b5,'userProfileId':_0xda2f3c[_0xbe74('0x4e')]},'raw':!![]})[_0xbe74('0x26')](function(_0x2e2c3d){if(_0x2e2c3d&&_0x2e2c3d[_0xbe74('0x4f')]===0x0){return db[_0xbe74('0x29')]['create']({'name':_0x589678[_0xbe74('0x2c')],'resourceId':_0x589678['id'],'type':_0x2e2c3d[_0xbe74('0x2c')],'sectionId':_0x2e2c3d['id']},{})['then'](function(){return _0x27c745;});}else{return _0x27c745;}})[_0xbe74('0x4a')](function(_0x290c92){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x290c92);throw _0x290c92;});}return _0x27c745;})[_0xbe74('0x26')](respondWithResult(_0x41222f,0xc9))[_0xbe74('0x4a')](handleError(_0x41222f,null));};exports[_0xbe74('0x50')]=function(_0x828a3e,_0x57f59c){if(_0x828a3e[_0xbe74('0x51')]['id']){delete _0x828a3e[_0xbe74('0x51')]['id'];}return db['OpenchannelQueue'][_0xbe74('0x49')]({'where':{'id':_0x828a3e[_0xbe74('0x45')]['id']}})[_0xbe74('0x26')](handleEntityNotFound(_0x57f59c,null))[_0xbe74('0x26')](saveUpdates(_0x828a3e[_0xbe74('0x51')],null))[_0xbe74('0x26')](respondWithResult(_0x57f59c,null))['catch'](handleError(_0x57f59c,null));};exports[_0xbe74('0x25')]=function(_0x49c192,_0x5098e3){return db[_0xbe74('0x30')][_0xbe74('0x49')]({'where':{'id':_0x49c192[_0xbe74('0x45')]['id']}})[_0xbe74('0x26')](handleEntityNotFound(_0x5098e3,null))[_0xbe74('0x26')](removeEntity(_0x5098e3,null))['catch'](handleError(_0x5098e3,null));};exports[_0xbe74('0x52')]=function(_0x521a0f,_0x85929d){return db[_0xbe74('0x30')][_0xbe74('0x52')]()[_0xbe74('0x26')](respondWithResult(_0x85929d,null))[_0xbe74('0x4a')](handleError(_0x85929d,null));};exports['getMembers']=function(_0x355193,_0x12a4a4,_0x280758){var _0x46da13={'raw':!![],'where':{}},_0x250756={},_0x575d2b;return db[_0xbe74('0x30')][_0xbe74('0x53')]({'where':{'id':_0x355193[_0xbe74('0x45')]['id']}})[_0xbe74('0x26')](handleEntityNotFound(_0x12a4a4,null))['then'](function(_0x3537dc){if(_0x3537dc){_0x575d2b=_0x3537dc[_0xbe74('0x27')]({'plain':!![]});_0x250756[_0xbe74('0x34')]=_[_0xbe74('0x46')](db[_0xbe74('0x54')][_0xbe74('0x47')]);_0x250756['query']=_[_0xbe74('0x46')](_0x355193[_0xbe74('0x37')]);_0x250756['filters']=_[_0xbe74('0x36')](_0x250756[_0xbe74('0x34')],_0x250756[_0xbe74('0x37')]);_0x46da13['attributes']=_[_0xbe74('0x36')](_0x250756[_0xbe74('0x34')],qs[_0xbe74('0x39')](_0x355193[_0xbe74('0x37')]['fields']));_0x46da13['attributes']=_0x46da13[_0xbe74('0x38')][_0xbe74('0x3a')]?_0x46da13[_0xbe74('0x38')]:_0x250756[_0xbe74('0x34')];if(!_0x355193[_0xbe74('0x37')][_0xbe74('0x3b')](_0xbe74('0x3c'))){_0x46da13[_0xbe74('0x1e')]=qs[_0xbe74('0x1e')](_0x355193[_0xbe74('0x37')]['limit']);_0x46da13[_0xbe74('0x1d')]=qs['offset'](_0x355193['query']['offset']);}_0x46da13[_0xbe74('0x55')]=qs[_0xbe74('0x3d')](_0x355193[_0xbe74('0x37')][_0xbe74('0x3d')]);_0x46da13[_0xbe74('0x3e')]=qs[_0xbe74('0x35')](_[_0xbe74('0x56')](_0x355193[_0xbe74('0x37')],_0x250756[_0xbe74('0x35')]));_0x46da13[_0xbe74('0x3e')][_0xbe74('0x57')]=_0x3537dc['id'];if(_0x355193[_0xbe74('0x37')][_0xbe74('0x3f')]){_0x46da13[_0xbe74('0x3e')]=_[_0xbe74('0x40')](_0x46da13['where'],{'$or':_['map'](_0x46da13['attributes'],function(_0x168aec){var _0x72f0a7={};_0x72f0a7[_0x168aec]={'$like':'%'+_0x355193[_0xbe74('0x37')][_0xbe74('0x3f')]+'%'};return _0x72f0a7;})});}_0x46da13=_[_0xbe74('0x40')]({},_0x46da13,_0x355193[_0xbe74('0x41')]);return db[_0xbe74('0x54')][_0xbe74('0x43')](_0x46da13);}})[_0xbe74('0x26')](function(_0x3cd465){if(_0x3cd465){return db['User'][_0xbe74('0x58')]({'where':{'id':_[_0xbe74('0x2f')](_0x3cd465,_0xbe74('0x59')),'role':_0xbe74('0x5a')},'attributes':['id',_0xbe74('0x2c'),_0xbe74('0x5b'),_0xbe74('0x5c'),_0xbe74('0x5d')]});}})[_0xbe74('0x26')](function(_0x490704){if(_0x490704){return{'count':_0x490704[_0xbe74('0x20')],'rows':_['map'](_0x490704['rows'],function(_0x195f22){return{'membername':_0x195f22['name'],'UserId':_0x195f22['id'],'queue_name':_0x575d2b['name'],'OpenchannelQueueId':_0x575d2b['id'],'interface':util[_0xbe74('0x5e')](_0xbe74('0x5f'),_0xbe74('0x60'),_0x195f22[_0xbe74('0x2c')]),'penalty':0x0,'paused':_0x195f22[_0xbe74('0x5b')],'createdAt':_0x195f22[_0xbe74('0x5d')],'updatedAt':_0x195f22[_0xbe74('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x12a4a4,_0x46da13))[_0xbe74('0x4a')](handleError(_0x12a4a4,null));};exports['getTeams']=function(_0x432199,_0x18ef25,_0x23fab7){var _0x28c0c6={};var _0x32eb4d={};var _0x3db17e;var _0x5de97a;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x432199['params']['id']}})[_0xbe74('0x26')](handleEntityNotFound(_0x18ef25,null))['then'](function(_0xf8edfc){if(_0xf8edfc){_0x3db17e=_0xf8edfc;_0x32eb4d['model']=_['keys'](db['Team']['rawAttributes']);_0x32eb4d[_0xbe74('0x37')]=_[_0xbe74('0x46')](_0x432199[_0xbe74('0x37')]);_0x32eb4d[_0xbe74('0x35')]=_[_0xbe74('0x36')](_0x32eb4d[_0xbe74('0x34')],_0x32eb4d[_0xbe74('0x37')]);_0x28c0c6['attributes']=_['intersection'](_0x32eb4d['model'],qs['fields'](_0x432199[_0xbe74('0x37')][_0xbe74('0x39')]));_0x28c0c6[_0xbe74('0x38')]=_0x28c0c6[_0xbe74('0x38')][_0xbe74('0x3a')]?_0x28c0c6[_0xbe74('0x38')]:_0x32eb4d['model'];_0x28c0c6[_0xbe74('0x55')]=qs['sort'](_0x432199[_0xbe74('0x37')][_0xbe74('0x3d')]);_0x28c0c6[_0xbe74('0x3e')]=qs[_0xbe74('0x35')](_[_0xbe74('0x56')](_0x432199['query'],_0x32eb4d[_0xbe74('0x35')]));if(_0x432199['query'][_0xbe74('0x3f')]){_0x28c0c6['where']=_['merge'](_0x28c0c6[_0xbe74('0x3e')],{'$or':_[_0xbe74('0x2f')](_0x28c0c6[_0xbe74('0x38')],function(_0x5c742b){var _0x10ed45={};_0x10ed45[_0x5c742b]={'$like':'%'+_0x432199['query'][_0xbe74('0x3f')]+'%'};return _0x10ed45;})});}_0x28c0c6=_['merge']({},_0x28c0c6,_0x432199[_0xbe74('0x41')]);return _0x3db17e[_0xbe74('0x61')](_0x28c0c6);}})[_0xbe74('0x26')](function(_0x1e2a6e){if(_0x1e2a6e){_0x5de97a=_0x1e2a6e[_0xbe74('0x3a')];if(!_0x432199[_0xbe74('0x37')]['hasOwnProperty'](_0xbe74('0x3c'))){_0x28c0c6[_0xbe74('0x1e')]=qs[_0xbe74('0x1e')](_0x432199[_0xbe74('0x37')][_0xbe74('0x1e')]);_0x28c0c6[_0xbe74('0x1d')]=qs[_0xbe74('0x1d')](_0x432199['query'][_0xbe74('0x1d')]);}return _0x3db17e[_0xbe74('0x61')](_0x28c0c6);}})['then'](function(_0x25977a){if(_0x25977a){return _0x25977a?{'count':_0x5de97a,'rows':_0x25977a}:null;}})[_0xbe74('0x26')](respondWithResult(_0x18ef25,null))[_0xbe74('0x4a')](handleError(_0x18ef25,null));};exports[_0xbe74('0x62')]=function(_0x5a6621,_0x51d39a,_0x5daae8){var _0x1f54bc=_0x5a6621[_0xbe74('0x51')]['ids'];return db['Team'][_0xbe74('0x43')]({'where':{'id':_0x1f54bc},'attributes':['id'],'include':[{'model':db[_0xbe74('0x63')],'as':_0xbe74('0x64'),'attributes':['id',_0xbe74('0x2c'),_0xbe74('0x65'),_0xbe74('0x66'),'interface'],'raw':!![]}]})[_0xbe74('0x26')](function(_0x478369){if(_0x478369){var _0x2db6d7=_[_0xbe74('0x67')](_0x478369,function(_0x5f3d37){var _0xda317c=_0x5f3d37['get']({'plain':!![]});return _0xda317c['Agents'];});return db['OpenchannelQueue'][_0xbe74('0x49')]({'where':{'id':_0x5a6621[_0xbe74('0x45')]['id']}})[_0xbe74('0x26')](function(_0xf44b0a){return db[_0xbe74('0x68')][_0xbe74('0x69')](function(_0x57d181){return _0xf44b0a[_0xbe74('0x62')](_0x1f54bc,{'transaction':_0x57d181})[_0xbe74('0x26')](function(){return BPromise['each'](_0x2db6d7,function(_0x41d7c4){return db['UserOpenchannelQueue'][_0xbe74('0x6a')]({'where':{'UserId':_0x41d7c4['id'],'OpenchannelQueueId':_0x5a6621[_0xbe74('0x45')]['id']},'transaction':_0x57d181});});})['then'](function(){_0x2db6d7[_0xbe74('0x6b')](function(_0x169492){socket[_0xbe74('0x6c')](_0xbe74('0x6d'),{'UserId':_0x169492['id'],'OpenchannelQueueId':_0xf44b0a['id']});});});});});}})['then'](respondWithStatusCode(_0x51d39a,null))[_0xbe74('0x4a')](handleError(_0x51d39a,null));};exports[_0xbe74('0x6e')]=function(_0x1335c0,_0x215e54,_0x374d9f){return db[_0xbe74('0x6f')][_0xbe74('0x43')]({'where':{'id':_0x1335c0[_0xbe74('0x37')][_0xbe74('0x70')]},'attributes':['id'],'include':[{'model':db[_0xbe74('0x63')],'as':_0xbe74('0x64'),'attributes':['id'],'raw':!![]}]})[_0xbe74('0x26')](handleEntityNotFound(_0x215e54,null))['then'](function(_0x372291){var _0xe707c5=_[_0xbe74('0x2f')](_0x372291,'id');var _0xdabdc=[];var _0x347fa1=[];var _0x551ca9=squel[_0xbe74('0x71')]();_0x551ca9[_0xbe74('0x72')](_0xbe74('0x73'))[_0xbe74('0x74')](_0xbe74('0x75'),'tq')['join'](_0xbe74('0x76'),'ut',_0xbe74('0x77'))['where'](_0xbe74('0x78'),_0x1335c0[_0xbe74('0x45')]['id']);for(var _0x3fac10=0x0;_0x3fac10<_0x372291[_0xbe74('0x3a')];_0x3fac10+=0x1){let _0x250bdf=_0x372291[_0x3fac10];for(var _0x4a8c97=0x0;_0x4a8c97<_0x250bdf[_0xbe74('0x64')][_0xbe74('0x3a')];_0x4a8c97+=0x1){let _0x552908=_0x250bdf[_0xbe74('0x64')][_0x4a8c97];var _0x16ca9d=_0x551ca9[_0xbe74('0x79')]();_0x16ca9d['where'](_0xbe74('0x7a'),_0x552908['id']);_0x347fa1[_0xbe74('0x7b')](db[_0xbe74('0x68')][_0xbe74('0x37')](_0x16ca9d[_0xbe74('0x7c')](),{'type':db['sequelize'][_0xbe74('0x7d')][_0xbe74('0x7e')]})['then'](function(_0x54b15a){if(_0x54b15a['length']===0x1){return _0x552908['id'];}else{var _0x33f2f8=_[_0xbe74('0x7f')](_[_0xbe74('0x2f')](_0x54b15a,_0xbe74('0x80')),function(_0x4af73d){return _[_0xbe74('0x81')](_0xe707c5,_0x4af73d);});if(_0x33f2f8){return _0x552908['id'];}}}));}}return BPromise[_0xbe74('0x82')](_0x347fa1)[_0xbe74('0x26')](function(_0x49af95){_0xdabdc=_(_0xdabdc)[_0xbe74('0x83')](_0x49af95)[_0xbe74('0x84')]()['value']();return db[_0xbe74('0x30')][_0xbe74('0x49')]({'where':{'id':_0x1335c0[_0xbe74('0x45')]['id']}})[_0xbe74('0x26')](function(_0x34eacb){return db['sequelize'][_0xbe74('0x69')](function(_0x2f14e2){return _0x34eacb[_0xbe74('0x6e')](_0x1335c0[_0xbe74('0x37')][_0xbe74('0x70')],{'transaction':_0x2f14e2})[_0xbe74('0x26')](function(){if(!_[_0xbe74('0x85')](_0xdabdc)){return _0x34eacb[_0xbe74('0x86')](_0xdabdc,{'transaction':_0x2f14e2});}})[_0xbe74('0x26')](function(){_0xdabdc[_0xbe74('0x6b')](function(_0x572a1d){socket['emit'](_0xbe74('0x87'),{'UserId':_0x572a1d,'OpenchannelQueueId':_0x34eacb['id']});});});});});});})[_0xbe74('0x26')](respondWithStatusCode(_0x215e54,null))['catch'](handleError(_0x215e54,null));};exports['addAgents']=function(_0x2e552b,_0x215e6a,_0x4754d0){return db[_0xbe74('0x30')][_0xbe74('0x49')]({'where':{'id':_0x2e552b[_0xbe74('0x45')]['id']}})[_0xbe74('0x26')](handleEntityNotFound(_0x215e6a,null))[_0xbe74('0x26')](function(_0xc9316c){if(_0xc9316c){return _0xc9316c[_0xbe74('0x88')](_0x2e552b[_0xbe74('0x51')]['ids'],_['omit'](_0x2e552b[_0xbe74('0x51')],[_0xbe74('0x70'),'id'])||{})[_0xbe74('0x89')](function(_0x537abb){for(var _0x314f6a=0x0;_0x314f6a<_0x2e552b[_0xbe74('0x51')][_0xbe74('0x70')][_0xbe74('0x3a')];_0x314f6a+=0x1){socket['emit']('userOpenchannelQueue:save',{'UserId':Number(_0x2e552b[_0xbe74('0x51')][_0xbe74('0x70')][_0x314f6a]),'OpenchannelQueueId':Number(_0x2e552b[_0xbe74('0x45')]['id'])});}return _0x537abb;});}})[_0xbe74('0x26')](respondWithResult(_0x215e6a,null))[_0xbe74('0x4a')](handleError(_0x215e6a,null));};exports[_0xbe74('0x86')]=function(_0x1c4cbd,_0x30a6d2,_0xfe23e){return db[_0xbe74('0x30')][_0xbe74('0x49')]({'where':{'id':_0x1c4cbd['params']['id']}})[_0xbe74('0x26')](handleEntityNotFound(_0x30a6d2,null))['then'](function(_0x43db5e){if(_0x43db5e){return _0x43db5e['removeAgents'](_0x1c4cbd[_0xbe74('0x37')][_0xbe74('0x70')])['then'](function(){if(_[_0xbe74('0x8a')](_0x1c4cbd[_0xbe74('0x37')][_0xbe74('0x70')])){for(var _0x29d522=0x0;_0x29d522<_0x1c4cbd['query'][_0xbe74('0x70')][_0xbe74('0x3a')];_0x29d522+=0x1){socket['emit']('userOpenchannelQueue:remove',{'UserId':Number(_0x1c4cbd[_0xbe74('0x37')]['ids'][_0x29d522]),'OpenchannelQueueId':Number(_0x1c4cbd[_0xbe74('0x45')]['id'])});}}else{socket['emit'](_0xbe74('0x87'),{'UserId':Number(_0x1c4cbd['query'][_0xbe74('0x70')]),'OpenchannelQueueId':Number(_0x1c4cbd[_0xbe74('0x45')]['id'])});}});}})['then'](respondWithStatusCode(_0x30a6d2,null))[_0xbe74('0x4a')](handleError(_0x30a6d2,null));};exports['getAgents']=function(_0x1f8d99,_0x2e7d7f,_0x20455d){var _0x2a3637={};var _0x125ba3={};var _0x254183;var _0x402a91;return db[_0xbe74('0x30')][_0xbe74('0x53')]({'where':{'id':_0x1f8d99['params']['id']}})[_0xbe74('0x26')](handleEntityNotFound(_0x2e7d7f,null))[_0xbe74('0x26')](function(_0x6d0293){if(_0x6d0293){_0x254183=_0x6d0293;_0x125ba3[_0xbe74('0x34')]=_[_0xbe74('0x46')](db[_0xbe74('0x63')][_0xbe74('0x47')]);_0x125ba3[_0xbe74('0x37')]=_[_0xbe74('0x46')](_0x1f8d99[_0xbe74('0x37')]);_0x125ba3[_0xbe74('0x35')]=_[_0xbe74('0x36')](_0x125ba3[_0xbe74('0x34')],_0x125ba3[_0xbe74('0x37')]);_0x2a3637['attributes']=_['intersection'](_0x125ba3[_0xbe74('0x34')],qs[_0xbe74('0x39')](_0x1f8d99['query']['fields']));_0x2a3637[_0xbe74('0x38')]=_0x2a3637['attributes']['length']?_0x2a3637[_0xbe74('0x38')]:_0x125ba3[_0xbe74('0x34')];_0x2a3637[_0xbe74('0x55')]=qs[_0xbe74('0x3d')](_0x1f8d99[_0xbe74('0x37')][_0xbe74('0x3d')]);_0x2a3637[_0xbe74('0x3e')]=qs[_0xbe74('0x35')](_[_0xbe74('0x56')](_0x1f8d99[_0xbe74('0x37')],_0x125ba3[_0xbe74('0x35')]));if(_0x1f8d99[_0xbe74('0x37')][_0xbe74('0x3f')]){_0x2a3637[_0xbe74('0x3e')]=_[_0xbe74('0x40')](_0x2a3637[_0xbe74('0x3e')],{'$or':_['map'](_0x2a3637['attributes'],function(_0xa5da40){var _0x30ba05={};_0x30ba05[_0xa5da40]={'$like':'%'+_0x1f8d99['query'][_0xbe74('0x3f')]+'%'};return _0x30ba05;})});}_0x2a3637=_[_0xbe74('0x40')]({},_0x2a3637,_0x1f8d99[_0xbe74('0x41')]);return _0x254183[_0xbe74('0x8b')](_0x2a3637);}})[_0xbe74('0x26')](function(_0x42cc14){if(_0x42cc14){_0x402a91=_0x42cc14[_0xbe74('0x3a')];if(!_0x1f8d99[_0xbe74('0x37')][_0xbe74('0x3b')](_0xbe74('0x3c'))){_0x2a3637[_0xbe74('0x1e')]=qs[_0xbe74('0x1e')](_0x1f8d99[_0xbe74('0x37')][_0xbe74('0x1e')]);_0x2a3637[_0xbe74('0x1d')]=qs['offset'](_0x1f8d99[_0xbe74('0x37')]['offset']);}return _0x254183[_0xbe74('0x8b')](_0x2a3637);}})[_0xbe74('0x26')](function(_0x10646f){if(_0x10646f){return _0x10646f?{'count':_0x402a91,'rows':_0x10646f}:null;}})[_0xbe74('0x26')](respondWithResult(_0x2e7d7f,null))[_0xbe74('0x4a')](handleError(_0x2e7d7f,null));};
\ No newline at end of file
index 0035cf5..05d0035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8972=['exports','../../mysqldb','OpenchannelQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x8972,0x76));var _0x2897=function(_0x4a956f,_0x2e8d5c){_0x4a956f=_0x4a956f-0x0;var _0x48571a=_0x8972[_0x4a956f];return _0x48571a;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0x2897('0x0'))['db'][_0x2897('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x2897('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2897('0x3'),'afterDestroy':_0x2897('0x4')};function emitEvent(_0x4def7e){return function(_0x37f3d6,_0x1ff381,_0x39342d){OpenchannelQueueEvents[_0x2897('0x5')](_0x4def7e+':'+_0x37f3d6['id'],_0x37f3d6);OpenchannelQueueEvents['emit'](_0x4def7e,_0x37f3d6);_0x39342d(null);};}for(var e in events){if(events[_0x2897('0x6')](e)){var event=events[e];OpenchannelQueue[_0x2897('0x7')](e,emitEvent(event));}}module[_0x2897('0x8')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x1b1e=['events','../../mysqldb','OpenchannelQueue','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x36284b,_0x2b7436){var _0x23c34a=function(_0x14f579){while(--_0x14f579){_0x36284b['push'](_0x36284b['shift']());}};_0x23c34a(++_0x2b7436);}(_0x1b1e,0xbe));var _0xe1b1=function(_0x369ee0,_0x57a15c){_0x369ee0=_0x369ee0-0x0;var _0x493a06=_0x1b1e[_0x369ee0];return _0x493a06;};'use strict';var EventEmitter=require(_0xe1b1('0x0'));var OpenchannelQueue=require(_0xe1b1('0x1'))['db'][_0xe1b1('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xe1b1('0x3')](0x0);var events={'afterCreate':_0xe1b1('0x4'),'afterUpdate':'update','afterDestroy':_0xe1b1('0x5')};function emitEvent(_0x5b6af5){return function(_0x57d237,_0x137ce7,_0x273a04){OpenchannelQueueEvents[_0xe1b1('0x6')](_0x5b6af5+':'+_0x57d237['id'],_0x57d237);OpenchannelQueueEvents[_0xe1b1('0x6')](_0x5b6af5,_0x57d237);_0x273a04(null);};}for(var e in events){if(events[_0xe1b1('0x7')](e)){var event=events[e];OpenchannelQueue[_0xe1b1('0x8')](e,emitEvent(event));}}module[_0xe1b1('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
index 83435ff..5ec8969 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0539=['bluebird','request-promise','rimraf','../../config/environment','./openchannelQueue.attributes','exports','OpenchannelQueue','lodash','util','../../config/logger','api','moment'];(function(_0x37574f,_0x55684c){var _0x6c6d03=function(_0x2e4ff5){while(--_0x2e4ff5){_0x37574f['push'](_0x37574f['shift']());}};_0x6c6d03(++_0x55684c);}(_0x0539,0x103));var _0x9053=function(_0x5846fe,_0x803adc){_0x5846fe=_0x5846fe-0x0;var _0x1ff45a=_0x0539[_0x5846fe];return _0x1ff45a;};'use strict';var _=require(_0x9053('0x0'));var util=require(_0x9053('0x1'));var logger=require(_0x9053('0x2'))(_0x9053('0x3'));var moment=require(_0x9053('0x4'));var BPromise=require(_0x9053('0x5'));var rp=require(_0x9053('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9053('0x7'));var config=require(_0x9053('0x8'));var attributes=require(_0x9053('0x9'));module[_0x9053('0xa')]=function(_0x243488,_0x3693fd){return _0x243488['define'](_0x9053('0xb'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e1b=['openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','OpenchannelQueue'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x2e1b,0x1eb));var _0xb2e1=function(_0x69ab09,_0x2bf490){_0x69ab09=_0x69ab09-0x0;var _0x2f9b4c=_0x2e1b[_0x69ab09];return _0x2f9b4c;};'use strict';var _=require(_0xb2e1('0x0'));var util=require(_0xb2e1('0x1'));var logger=require(_0xb2e1('0x2'))(_0xb2e1('0x3'));var moment=require(_0xb2e1('0x4'));var BPromise=require(_0xb2e1('0x5'));var rp=require(_0xb2e1('0x6'));var fs=require('fs');var path=require(_0xb2e1('0x7'));var rimraf=require(_0xb2e1('0x8'));var config=require(_0xb2e1('0x9'));var attributes=require(_0xb2e1('0xa'));module[_0xb2e1('0xb')]=function(_0x50f600,_0x3026fb){return _0x50f600['define'](_0xb2e1('0xc'),attributes,{'tableName':_0xb2e1('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8d2a7b4..4146285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad57=['then','info','OpenchannelQueue,\x20%s,\x20%s','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowOpenchannelQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','request'];(function(_0x3719b6,_0x31f62a){var _0x599c6d=function(_0x4a0829){while(--_0x4a0829){_0x3719b6['push'](_0x3719b6['shift']());}};_0x599c6d(++_0x31f62a);}(_0xad57,0x1e5));var _0x7ad5=function(_0xb0599c,_0x91220e){_0xb0599c=_0xb0599c-0x0;var _0xd5a288=_0xad57[_0xb0599c];return _0xd5a288;};'use strict';var _=require(_0x7ad5('0x0'));var util=require(_0x7ad5('0x1'));var moment=require(_0x7ad5('0x2'));var BPromise=require(_0x7ad5('0x3'));var rs=require(_0x7ad5('0x4'));var fs=require('fs');var Redis=require(_0x7ad5('0x5'));var db=require(_0x7ad5('0x6'))['db'];var utils=require(_0x7ad5('0x7'));var logger=require(_0x7ad5('0x8'))(_0x7ad5('0x9'));var config=require(_0x7ad5('0xa'));var jayson=require(_0x7ad5('0xb'));var client=jayson[_0x7ad5('0xc')][_0x7ad5('0xd')]({'port':0x232a});config[_0x7ad5('0xe')]=_[_0x7ad5('0xf')](config[_0x7ad5('0xe')],{'host':_0x7ad5('0x10'),'port':0x18eb});var socket=require(_0x7ad5('0x11'))(new Redis(config[_0x7ad5('0xe')]));require(_0x7ad5('0x12'))[_0x7ad5('0x13')](socket);function respondWithRpcPromise(_0x433a67,_0x40a94f,_0x14972b){return new BPromise(function(_0x58b21b,_0x79d5e5){return client[_0x7ad5('0x14')](_0x433a67,_0x14972b)[_0x7ad5('0x15')](function(_0x34e0f5){logger[_0x7ad5('0x16')](_0x7ad5('0x17'),_0x40a94f,'request\x20sent');logger[_0x7ad5('0x18')](_0x7ad5('0x19'),_0x40a94f,_0x7ad5('0x1a'),JSON[_0x7ad5('0x1b')](_0x34e0f5));if(_0x34e0f5[_0x7ad5('0x1c')]){if(_0x34e0f5['error'][_0x7ad5('0x1d')]===0x1f4){logger[_0x7ad5('0x1c')]('OpenchannelQueue,\x20%s,\x20%s',_0x40a94f,_0x34e0f5[_0x7ad5('0x1c')][_0x7ad5('0x1e')]);return _0x79d5e5(_0x34e0f5[_0x7ad5('0x1c')][_0x7ad5('0x1e')]);}logger[_0x7ad5('0x1c')](_0x7ad5('0x17'),_0x40a94f,_0x34e0f5[_0x7ad5('0x1c')]['message']);return _0x58b21b(_0x34e0f5[_0x7ad5('0x1c')][_0x7ad5('0x1e')]);}else{logger['info'](_0x7ad5('0x17'),_0x40a94f,_0x7ad5('0x1a'));_0x58b21b(_0x34e0f5[_0x7ad5('0x1f')][_0x7ad5('0x1e')]);}})[_0x7ad5('0x20')](function(_0xfd6a0a){logger[_0x7ad5('0x1c')](_0x7ad5('0x17'),_0x40a94f,_0xfd6a0a);_0x79d5e5(_0xfd6a0a);});});}exports[_0x7ad5('0x21')]=function(_0x263a04){var _0x30a3af=this;return new Promise(function(_0x1dacb8,_0x4ed908){return db[_0x7ad5('0x22')][_0x7ad5('0x23')]({'raw':_0x263a04[_0x7ad5('0x24')]?_0x263a04[_0x7ad5('0x24')][_0x7ad5('0x25')]===undefined?!![]:![]:!![],'where':_0x263a04['options']?_0x263a04[_0x7ad5('0x24')][_0x7ad5('0x26')]||null:null,'attributes':_0x263a04['options']?_0x263a04[_0x7ad5('0x24')][_0x7ad5('0x27')]||null:null,'limit':_0x263a04[_0x7ad5('0x24')]?_0x263a04[_0x7ad5('0x24')][_0x7ad5('0x28')]||null:null,'include':_0x263a04[_0x7ad5('0x24')]?_0x263a04['options'][_0x7ad5('0x29')]?_[_0x7ad5('0x2a')](_0x263a04['options'][_0x7ad5('0x29')],function(_0x249d0b){return{'model':db[_0x249d0b['model']],'as':_0x249d0b['as'],'attributes':_0x249d0b[_0x7ad5('0x27')],'include':_0x249d0b[_0x7ad5('0x29')]?_[_0x7ad5('0x2a')](_0x249d0b[_0x7ad5('0x29')],function(_0x770347){return{'model':db[_0x770347[_0x7ad5('0x2b')]],'as':_0x770347['as'],'attributes':_0x770347[_0x7ad5('0x27')],'include':_0x770347[_0x7ad5('0x29')]?_[_0x7ad5('0x2a')](_0x770347[_0x7ad5('0x29')],function(_0x1b8700){return{'model':db[_0x1b8700[_0x7ad5('0x2b')]],'as':_0x1b8700['as'],'attributes':_0x1b8700[_0x7ad5('0x27')]};}):[]};}):[]};}):[]:[]})[_0x7ad5('0x15')](function(_0x40d543){logger[_0x7ad5('0x16')]('GetOpenchannelQueue',_0x263a04);logger['debug'](_0x7ad5('0x21'),_0x263a04,JSON[_0x7ad5('0x1b')](_0x40d543));_0x1dacb8(_0x40d543);})[_0x7ad5('0x20')](function(_0x4a1da5){logger[_0x7ad5('0x1c')]('GetOpenchannelQueue',_0x4a1da5[_0x7ad5('0x1e')],_0x263a04);_0x4ed908(_0x30a3af['error'](0x1f4,_0x4a1da5[_0x7ad5('0x1e')]));});});};exports[_0x7ad5('0x2c')]=function(_0x14f8ee){var _0x2d35f4=this;return new Promise(function(_0x3aa09c,_0x103230){return db[_0x7ad5('0x22')][_0x7ad5('0x2d')]({'raw':_0x14f8ee[_0x7ad5('0x24')]?_0x14f8ee[_0x7ad5('0x24')][_0x7ad5('0x25')]===undefined?!![]:![]:!![],'where':_0x14f8ee[_0x7ad5('0x24')]?_0x14f8ee[_0x7ad5('0x24')][_0x7ad5('0x26')]||null:null,'attributes':_0x14f8ee[_0x7ad5('0x24')]?_0x14f8ee[_0x7ad5('0x24')][_0x7ad5('0x27')]||null:null,'include':_0x14f8ee[_0x7ad5('0x24')]?_0x14f8ee['options'][_0x7ad5('0x29')]?_['map'](_0x14f8ee[_0x7ad5('0x24')]['include'],function(_0x44bc81){return{'model':db[_0x44bc81[_0x7ad5('0x2b')]],'as':_0x44bc81['as'],'attributes':_0x44bc81[_0x7ad5('0x27')],'include':_0x44bc81[_0x7ad5('0x29')]?_[_0x7ad5('0x2a')](_0x44bc81[_0x7ad5('0x29')],function(_0x2c5cc7){return{'model':db[_0x2c5cc7[_0x7ad5('0x2b')]],'as':_0x2c5cc7['as'],'attributes':_0x2c5cc7[_0x7ad5('0x27')],'include':_0x2c5cc7['include']?_[_0x7ad5('0x2a')](_0x2c5cc7['include'],function(_0x3f9251){return{'model':db[_0x3f9251[_0x7ad5('0x2b')]],'as':_0x3f9251['as'],'attributes':_0x3f9251['attributes']};}):[]};}):[]};}):[]:[]})[_0x7ad5('0x15')](function(_0x13bd7f){logger[_0x7ad5('0x16')](_0x7ad5('0x2c'),_0x14f8ee);logger[_0x7ad5('0x18')]('ShowOpenchannelQueue',_0x14f8ee,JSON[_0x7ad5('0x1b')](_0x13bd7f));_0x3aa09c(_0x13bd7f);})[_0x7ad5('0x20')](function(_0x5693f0){logger['error']('ShowOpenchannelQueue',_0x5693f0[_0x7ad5('0x1e')],_0x14f8ee);_0x103230(_0x2d35f4['error'](0x1f4,_0x5693f0['message']));});});};
\ No newline at end of file
+var _0xbaf0=['client','http','redis','localhost','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','findAll','options','raw','where','attributes','limit','map','include','model','GetOpenchannelQueue','stringify','ShowOpenchannelQueue','OpenchannelQueue','find','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','jayson/promise'];(function(_0x55727d,_0x21c37c){var _0x181c95=function(_0x207bdc){while(--_0x207bdc){_0x55727d['push'](_0x55727d['shift']());}};_0x181c95(++_0x21c37c);}(_0xbaf0,0xac));var _0x0baf=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xbaf0[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x0baf('0x0'));var util=require(_0x0baf('0x1'));var moment=require(_0x0baf('0x2'));var BPromise=require(_0x0baf('0x3'));var rs=require(_0x0baf('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0baf('0x5'));var logger=require('../../config/logger')(_0x0baf('0x6'));var config=require('../../config/environment');var jayson=require(_0x0baf('0x7'));var client=jayson[_0x0baf('0x8')][_0x0baf('0x9')]({'port':0x232a});config[_0x0baf('0xa')]=_['defaults'](config[_0x0baf('0xa')],{'host':_0x0baf('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./openchannelQueue.socket')['register'](socket);function respondWithRpcPromise(_0x276ddf,_0x3695e3,_0xfaf27c){return new BPromise(function(_0x144c8c,_0x12b105){return client[_0x0baf('0xc')](_0x276ddf,_0xfaf27c)[_0x0baf('0xd')](function(_0x170da0){logger[_0x0baf('0xe')](_0x0baf('0xf'),_0x3695e3,_0x0baf('0x10'));logger[_0x0baf('0x11')]('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x3695e3,_0x0baf('0x10'),JSON['stringify'](_0x170da0));if(_0x170da0[_0x0baf('0x12')]){if(_0x170da0[_0x0baf('0x12')][_0x0baf('0x13')]===0x1f4){logger[_0x0baf('0x12')](_0x0baf('0xf'),_0x3695e3,_0x170da0['error'][_0x0baf('0x14')]);return _0x12b105(_0x170da0[_0x0baf('0x12')][_0x0baf('0x14')]);}logger[_0x0baf('0x12')](_0x0baf('0xf'),_0x3695e3,_0x170da0[_0x0baf('0x12')][_0x0baf('0x14')]);return _0x144c8c(_0x170da0[_0x0baf('0x12')]['message']);}else{logger[_0x0baf('0xe')](_0x0baf('0xf'),_0x3695e3,_0x0baf('0x10'));_0x144c8c(_0x170da0[_0x0baf('0x15')][_0x0baf('0x14')]);}})['catch'](function(_0xe385e8){logger[_0x0baf('0x12')](_0x0baf('0xf'),_0x3695e3,_0xe385e8);_0x12b105(_0xe385e8);});});}exports['GetOpenchannelQueue']=function(_0x22a3b6){var _0x7aa7d=this;return new Promise(function(_0x91c3c6,_0x37f464){return db['OpenchannelQueue'][_0x0baf('0x16')]({'raw':_0x22a3b6[_0x0baf('0x17')]?_0x22a3b6[_0x0baf('0x17')][_0x0baf('0x18')]===undefined?!![]:![]:!![],'where':_0x22a3b6['options']?_0x22a3b6[_0x0baf('0x17')][_0x0baf('0x19')]||null:null,'attributes':_0x22a3b6[_0x0baf('0x17')]?_0x22a3b6[_0x0baf('0x17')][_0x0baf('0x1a')]||null:null,'limit':_0x22a3b6['options']?_0x22a3b6[_0x0baf('0x17')][_0x0baf('0x1b')]||null:null,'include':_0x22a3b6[_0x0baf('0x17')]?_0x22a3b6[_0x0baf('0x17')]['include']?_[_0x0baf('0x1c')](_0x22a3b6['options'][_0x0baf('0x1d')],function(_0x4cb80b){return{'model':db[_0x4cb80b[_0x0baf('0x1e')]],'as':_0x4cb80b['as'],'attributes':_0x4cb80b[_0x0baf('0x1a')],'include':_0x4cb80b['include']?_[_0x0baf('0x1c')](_0x4cb80b['include'],function(_0x4ceb7b){return{'model':db[_0x4ceb7b[_0x0baf('0x1e')]],'as':_0x4ceb7b['as'],'attributes':_0x4ceb7b['attributes'],'include':_0x4ceb7b[_0x0baf('0x1d')]?_['map'](_0x4ceb7b[_0x0baf('0x1d')],function(_0xbc978e){return{'model':db[_0xbc978e[_0x0baf('0x1e')]],'as':_0xbc978e['as'],'attributes':_0xbc978e[_0x0baf('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1eff66){logger['info']('GetOpenchannelQueue',_0x22a3b6);logger[_0x0baf('0x11')](_0x0baf('0x1f'),_0x22a3b6,JSON[_0x0baf('0x20')](_0x1eff66));_0x91c3c6(_0x1eff66);})['catch'](function(_0x1a6a10){logger[_0x0baf('0x12')](_0x0baf('0x1f'),_0x1a6a10[_0x0baf('0x14')],_0x22a3b6);_0x37f464(_0x7aa7d[_0x0baf('0x12')](0x1f4,_0x1a6a10[_0x0baf('0x14')]));});});};exports[_0x0baf('0x21')]=function(_0x3690df){var _0x545c81=this;return new Promise(function(_0x279fee,_0x3dbad5){return db[_0x0baf('0x22')][_0x0baf('0x23')]({'raw':_0x3690df[_0x0baf('0x17')]?_0x3690df['options'][_0x0baf('0x18')]===undefined?!![]:![]:!![],'where':_0x3690df[_0x0baf('0x17')]?_0x3690df['options'][_0x0baf('0x19')]||null:null,'attributes':_0x3690df['options']?_0x3690df['options']['attributes']||null:null,'include':_0x3690df['options']?_0x3690df[_0x0baf('0x17')]['include']?_[_0x0baf('0x1c')](_0x3690df['options']['include'],function(_0x2383fd){return{'model':db[_0x2383fd['model']],'as':_0x2383fd['as'],'attributes':_0x2383fd[_0x0baf('0x1a')],'include':_0x2383fd[_0x0baf('0x1d')]?_[_0x0baf('0x1c')](_0x2383fd['include'],function(_0x477c18){return{'model':db[_0x477c18['model']],'as':_0x477c18['as'],'attributes':_0x477c18[_0x0baf('0x1a')],'include':_0x477c18[_0x0baf('0x1d')]?_[_0x0baf('0x1c')](_0x477c18[_0x0baf('0x1d')],function(_0x4226a2){return{'model':db[_0x4226a2['model']],'as':_0x4226a2['as'],'attributes':_0x4226a2[_0x0baf('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0baf('0xd')](function(_0x444094){logger[_0x0baf('0xe')](_0x0baf('0x21'),_0x3690df);logger[_0x0baf('0x11')](_0x0baf('0x21'),_0x3690df,JSON[_0x0baf('0x20')](_0x444094));_0x279fee(_0x444094);})['catch'](function(_0x4abccb){logger[_0x0baf('0x12')](_0x0baf('0x21'),_0x4abccb[_0x0baf('0x14')],_0x3690df);_0x3dbad5(_0x545c81[_0x0baf('0x12')](0x1f4,_0x4abccb[_0x0baf('0x14')]));});});};
\ No newline at end of file
index 8a87b49..a21e414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7df=['update','emit','register','length','openchannelQueue:','save','remove'];(function(_0xa3ca0f,_0x456a23){var _0x529ee7=function(_0x343778){while(--_0x343778){_0xa3ca0f['push'](_0xa3ca0f['shift']());}};_0x529ee7(++_0x456a23);}(_0xc7df,0xd0));var _0xfc7d=function(_0x2780df,_0x3e9f41){_0x2780df=_0x2780df-0x0;var _0x2862a1=_0xc7df[_0x2780df];return _0x2862a1;};'use strict';var OpenchannelQueueEvents=require('./openchannelQueue.events');var events=[_0xfc7d('0x0'),_0xfc7d('0x1'),_0xfc7d('0x2')];function createListener(_0x2e7946,_0x2e7e7a){return function(_0x57e65c){_0x2e7e7a[_0xfc7d('0x3')](_0x2e7946,_0x57e65c);};}function removeListener(_0x2ca4d8,_0x2509e6){return function(){OpenchannelQueueEvents['removeListener'](_0x2ca4d8,_0x2509e6);};}exports[_0xfc7d('0x4')]=function(_0x12bd38){for(var _0x47da35=0x0,_0x24d2ad=events[_0xfc7d('0x5')];_0x47da35<_0x24d2ad;_0x47da35++){var _0x4fadba=events[_0x47da35];var _0x596dc9=createListener(_0xfc7d('0x6')+_0x4fadba,_0x12bd38);OpenchannelQueueEvents['on'](_0x4fadba,_0x596dc9);}};
\ No newline at end of file
+var _0xd7bd=['removeListener','openchannelQueue:','./openchannelQueue.events','save','remove','update','emit'];(function(_0x190d0f,_0x3e312e){var _0x392f0e=function(_0xd7788d){while(--_0xd7788d){_0x190d0f['push'](_0x190d0f['shift']());}};_0x392f0e(++_0x3e312e);}(_0xd7bd,0x1a6));var _0xdd7b=function(_0x14a513,_0x3239f){_0x14a513=_0x14a513-0x0;var _0x47236c=_0xd7bd[_0x14a513];return _0x47236c;};'use strict';var OpenchannelQueueEvents=require(_0xdd7b('0x0'));var events=[_0xdd7b('0x1'),_0xdd7b('0x2'),_0xdd7b('0x3')];function createListener(_0x1d96c4,_0x2a020d){return function(_0x1f95bb){_0x2a020d[_0xdd7b('0x4')](_0x1d96c4,_0x1f95bb);};}function removeListener(_0x4bb5dd,_0x223066){return function(){OpenchannelQueueEvents[_0xdd7b('0x5')](_0x4bb5dd,_0x223066);};}exports['register']=function(_0x4eabdd){for(var _0x36b1cc=0x0,_0x4938a3=events['length'];_0x36b1cc<_0x4938a3;_0x36b1cc++){var _0x5afe6c=events[_0x36b1cc];var _0x35bb90=createListener(_0xdd7b('0x6')+_0x5afe6c,_0x4eabdd);OpenchannelQueueEvents['on'](_0x5afe6c,_0x35bb90);}};
\ No newline at end of file
index 981a47d..cf14bf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x378c=['describe','/:id','post','put','update','destroy','exports','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x5d897,_0x469fee){var _0xc60754=function(_0x540ea9){while(--_0x540ea9){_0x5d897['push'](_0x5d897['shift']());}};_0xc60754(++_0x469fee);}(_0x378c,0x1c1));var _0xc378=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x378c[_0x4a53d];return _0x27410e;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xc378('0x0'));var express=require(_0xc378('0x1'));var router=express['Router']();var fs_extra=require(_0xc378('0x2'));var auth=require(_0xc378('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xc378('0x4'));var controller=require(_0xc378('0x5'));router[_0xc378('0x6')]('/',auth[_0xc378('0x7')](),controller[_0xc378('0x8')]);router['get'](_0xc378('0x9'),auth[_0xc378('0x7')](),controller[_0xc378('0xa')]);router['get'](_0xc378('0xb'),auth[_0xc378('0x7')](),controller['show']);router[_0xc378('0xc')]('/',auth[_0xc378('0x7')](),controller['create']);router[_0xc378('0xd')]('/:id',auth[_0xc378('0x7')](),controller[_0xc378('0xe')]);router['delete'](_0xc378('0xb'),auth[_0xc378('0x7')](),controller[_0xc378('0xf')]);module[_0xc378('0x10')]=router;
\ No newline at end of file
+var _0x0882=['destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','post','create','put','/:id','update','delete'];(function(_0x5a2d3f,_0x27b04e){var _0x5c65d8=function(_0x2d1965){while(--_0x2d1965){_0x5a2d3f['push'](_0x5a2d3f['shift']());}};_0x5c65d8(++_0x27b04e);}(_0x0882,0x16b));var _0x2088=function(_0x220f3f,_0x11c540){_0x220f3f=_0x220f3f-0x0;var _0x1f170e=_0x0882[_0x220f3f];return _0x1f170e;};'use strict';var multer=require(_0x2088('0x0'));var util=require(_0x2088('0x1'));var path=require(_0x2088('0x2'));var timeout=require('connect-timeout');var express=require(_0x2088('0x3'));var router=express[_0x2088('0x4')]();var fs_extra=require(_0x2088('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2088('0x6'));var config=require(_0x2088('0x7'));var controller=require('./openchannelQueueReport.controller');router[_0x2088('0x8')]('/',auth[_0x2088('0x9')](),controller['index']);router[_0x2088('0x8')]('/describe',auth[_0x2088('0x9')](),controller[_0x2088('0xa')]);router[_0x2088('0x8')]('/:id',auth[_0x2088('0x9')](),controller['show']);router[_0x2088('0xb')]('/',auth[_0x2088('0x9')](),controller[_0x2088('0xc')]);router[_0x2088('0xd')](_0x2088('0xe'),auth[_0x2088('0x9')](),controller[_0x2088('0xf')]);router[_0x2088('0x10')](_0x2088('0xe'),auth[_0x2088('0x9')](),controller[_0x2088('0x11')]);module[_0x2088('0x12')]=router;
\ No newline at end of file
index 1796c72..f4a5024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb768=['DATE','moment','exports','STRING'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xb768,0x7d));var _0x8b76=function(_0x18bf20,_0x23f00d){_0x18bf20=_0x18bf20-0x0;var _0xc51620=_0xb768[_0x18bf20];return _0xc51620;};'use strict';var moment=require(_0x8b76('0x0'));var Sequelize=require('sequelize');module[_0x8b76('0x1')]={'uniqueid':{'type':Sequelize[_0x8b76('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x8b76('0x3')]},'leaveAt':{'type':Sequelize[_0x8b76('0x3')]},'acceptAt':{'type':Sequelize[_0x8b76('0x3')]},'exitAt':{'type':Sequelize[_0x8b76('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x80c3=['moment','STRING','DATE'];(function(_0x1ed938,_0x3ee138){var _0x30b8a1=function(_0x4b7103){while(--_0x4b7103){_0x1ed938['push'](_0x1ed938['shift']());}};_0x30b8a1(++_0x3ee138);}(_0x80c3,0x18f));var _0x380c=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x80c3[_0x33032e];return _0x13316b;};'use strict';var moment=require(_0x380c('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x380c('0x1')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x380c('0x2')]},'leaveAt':{'type':Sequelize[_0x380c('0x2')]},'acceptAt':{'type':Sequelize[_0x380c('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2e83119..11d0b7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5381=['create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','send','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','sort','where','filters','pick','filter','VIRTUAL','OpenchannelQueueReport','includeAll','include','findAll','rows','catch','show','length','merge','options','find'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x5381,0x130));var _0x1538=function(_0x3590e8,_0x27285c){_0x3590e8=_0x3590e8-0x0;var _0x125172=_0x5381[_0x3590e8];return _0x125172;};'use strict';var emlformat=require(_0x1538('0x0'));var rimraf=require(_0x1538('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1538('0x2'));var rp=require(_0x1538('0x3'));var moment=require(_0x1538('0x4'));var BPromise=require(_0x1538('0x5'));var Mustache=require(_0x1538('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x1538('0x7'));var ejs=require(_0x1538('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1538('0x9'));var squel=require(_0x1538('0xa'));var crypto=require('crypto');var jsforce=require(_0x1538('0xb'));var deskjs=require(_0x1538('0xc'));var toCsv=require(_0x1538('0x7'));var querystring=require('querystring');var Papa=require(_0x1538('0xd'));var Redis=require(_0x1538('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x1538('0xf'));var as=require(_0x1538('0x10'));var hardwareService=require(_0x1538('0x11'));var logger=require('../../config/logger')(_0x1538('0x12'));var utils=require(_0x1538('0x13'));var config=require(_0x1538('0x14'));var licenseUtil=require(_0x1538('0x15'));var db=require(_0x1538('0x16'))['db'];function respondWithStatusCode(_0x755e67,_0x474f99){_0x474f99=_0x474f99||0xcc;return function(_0x46f836){if(_0x46f836){return _0x755e67[_0x1538('0x17')](_0x474f99);}return _0x755e67['status'](_0x474f99)['end']();};}function respondWithResult(_0x3ce21d,_0x2908d3){_0x2908d3=_0x2908d3||0xc8;return function(_0x2d2c56){if(_0x2d2c56){return _0x3ce21d[_0x1538('0x18')](_0x2908d3)[_0x1538('0x19')](_0x2d2c56);}};}function respondWithFilteredResult(_0x11f5b9,_0xe744cd){return function(_0x46eed2){if(_0x46eed2){var _0x2a2279=typeof _0xe744cd[_0x1538('0x1a')]===_0x1538('0x1b')&&typeof _0xe744cd['limit']===_0x1538('0x1b');var _0x564229=_0x46eed2[_0x1538('0x1c')];var _0x224a61=_0x2a2279?0x0:_0xe744cd[_0x1538('0x1a')];var _0xa7db75=_0x2a2279?_0x46eed2['count']:_0xe744cd[_0x1538('0x1a')]+_0xe744cd[_0x1538('0x1d')];var _0x3d78d2;if(_0xa7db75>=_0x564229){_0xa7db75=_0x564229;_0x3d78d2=0xc8;}else{_0x3d78d2=0xce;}_0x11f5b9[_0x1538('0x18')](_0x3d78d2);return _0x11f5b9[_0x1538('0x1e')](_0x1538('0x1f'),_0x224a61+'-'+_0xa7db75+'/'+_0x564229)[_0x1538('0x19')](_0x46eed2);}return null;};}function patchUpdates(_0x2be30f){return function(_0x4b66c9){try{jsonpatch[_0x1538('0x20')](_0x4b66c9,_0x2be30f,!![]);}catch(_0x293220){return BPromise[_0x1538('0x21')](_0x293220);}return _0x4b66c9[_0x1538('0x22')]();};}function saveUpdates(_0xc5791,_0x3c501b){return function(_0x89ff3d){if(_0x89ff3d){return _0x89ff3d[_0x1538('0x23')](_0xc5791)[_0x1538('0x24')](function(_0x2e25a1){return _0x2e25a1;});}return null;};}function removeEntity(_0x51d03d,_0x373fbc){return function(_0x2fa7cf){if(_0x2fa7cf){return _0x2fa7cf[_0x1538('0x25')]()[_0x1538('0x24')](function(){_0x51d03d['status'](0xcc)[_0x1538('0x26')]();});}};}function handleEntityNotFound(_0x175b80,_0xa0ce2){return function(_0x258f6d){if(!_0x258f6d){_0x175b80[_0x1538('0x17')](0x194);}return _0x258f6d;};}function handleError(_0x4db4e0,_0x4afbcb){_0x4afbcb=_0x4afbcb||0x1f4;return function(_0x17e2ee){logger['error'](_0x17e2ee[_0x1538('0x27')]);if(_0x17e2ee[_0x1538('0x28')]){delete _0x17e2ee[_0x1538('0x28')];}_0x4db4e0['status'](_0x4afbcb)[_0x1538('0x29')](_0x17e2ee);};}exports[_0x1538('0x2a')]=function(_0x43158f,_0x16ed73){var _0xd7c1e2={},_0x25c914={},_0x5a70f7={'count':0x0,'rows':[]};var _0x200777=_[_0x1538('0x2b')](db['OpenchannelQueueReport']['rawAttributes'],function(_0xb7c1c1){return{'name':_0xb7c1c1[_0x1538('0x2c')],'type':_0xb7c1c1[_0x1538('0x2d')][_0x1538('0x2e')]};});_0x25c914[_0x1538('0x2f')]=_[_0x1538('0x2b')](_0x200777,'name');_0x25c914[_0x1538('0x30')]=_[_0x1538('0x31')](_0x43158f['query']);_0x25c914['filters']=_[_0x1538('0x32')](_0x25c914[_0x1538('0x2f')],_0x25c914[_0x1538('0x30')]);_0xd7c1e2[_0x1538('0x33')]=_[_0x1538('0x32')](_0x25c914[_0x1538('0x2f')],qs[_0x1538('0x34')](_0x43158f[_0x1538('0x30')][_0x1538('0x34')]));_0xd7c1e2[_0x1538('0x33')]=_0xd7c1e2[_0x1538('0x33')]['length']?_0xd7c1e2[_0x1538('0x33')]:_0x25c914[_0x1538('0x2f')];if(!_0x43158f[_0x1538('0x30')][_0x1538('0x35')]('nolimit')){_0xd7c1e2[_0x1538('0x1d')]=qs['limit'](_0x43158f[_0x1538('0x30')][_0x1538('0x1d')]);_0xd7c1e2[_0x1538('0x1a')]=qs[_0x1538('0x1a')](_0x43158f['query'][_0x1538('0x1a')]);}_0xd7c1e2['order']=qs[_0x1538('0x36')](_0x43158f[_0x1538('0x30')]['sort']);_0xd7c1e2[_0x1538('0x37')]=qs[_0x1538('0x38')](_[_0x1538('0x39')](_0x43158f[_0x1538('0x30')],_0x25c914[_0x1538('0x38')]),_0x200777);if(_0x43158f['query'][_0x1538('0x3a')]){_0xd7c1e2[_0x1538('0x37')]=_['merge'](_0xd7c1e2[_0x1538('0x37')],{'$or':_['map'](_0x200777,function(_0x19b572){if(_0x19b572['type']!==_0x1538('0x3b')){var _0x573d64={};_0x573d64[_0x19b572[_0x1538('0x28')]]={'$like':'%'+_0x43158f[_0x1538('0x30')][_0x1538('0x3a')]+'%'};return _0x573d64;}})});}_0xd7c1e2=_['merge']({},_0xd7c1e2,_0x43158f['options']);var _0x3cd970={'where':_0xd7c1e2[_0x1538('0x37')]};return db[_0x1538('0x3c')][_0x1538('0x1c')](_0x3cd970)[_0x1538('0x24')](function(_0x21a073){_0x5a70f7[_0x1538('0x1c')]=_0x21a073;if(_0x43158f[_0x1538('0x30')][_0x1538('0x3d')]){_0xd7c1e2[_0x1538('0x3e')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0x1538('0x3f')](_0xd7c1e2);})['then'](function(_0x2332cf){_0x5a70f7[_0x1538('0x40')]=_0x2332cf;return _0x5a70f7;})[_0x1538('0x24')](respondWithFilteredResult(_0x16ed73,_0xd7c1e2))[_0x1538('0x41')](handleError(_0x16ed73,null));};exports[_0x1538('0x42')]=function(_0x10c223,_0x216f84){var _0x26c86d={'raw':!![],'where':{'id':_0x10c223['params']['id']}},_0x3e4639={};_0x3e4639[_0x1538('0x2f')]=_[_0x1538('0x31')](db['OpenchannelQueueReport']['rawAttributes']);_0x3e4639[_0x1538('0x30')]=_[_0x1538('0x31')](_0x10c223[_0x1538('0x30')]);_0x3e4639['filters']=_['intersection'](_0x3e4639[_0x1538('0x2f')],_0x3e4639[_0x1538('0x30')]);_0x26c86d[_0x1538('0x33')]=_[_0x1538('0x32')](_0x3e4639['model'],qs['fields'](_0x10c223[_0x1538('0x30')][_0x1538('0x34')]));_0x26c86d[_0x1538('0x33')]=_0x26c86d['attributes'][_0x1538('0x43')]?_0x26c86d[_0x1538('0x33')]:_0x3e4639[_0x1538('0x2f')];if(_0x10c223[_0x1538('0x30')][_0x1538('0x3d')]){_0x26c86d[_0x1538('0x3e')]=[{'all':!![]}];}_0x26c86d=_[_0x1538('0x44')]({},_0x26c86d,_0x10c223[_0x1538('0x45')]);return db['OpenchannelQueueReport'][_0x1538('0x46')](_0x26c86d)[_0x1538('0x24')](handleEntityNotFound(_0x216f84,null))[_0x1538('0x24')](respondWithResult(_0x216f84,null))[_0x1538('0x41')](handleError(_0x216f84,null));};exports[_0x1538('0x47')]=function(_0x36b161,_0x48bd70){return db[_0x1538('0x3c')][_0x1538('0x47')](_0x36b161['body'],{})[_0x1538('0x24')](respondWithResult(_0x48bd70,0xc9))[_0x1538('0x41')](handleError(_0x48bd70,null));};exports['update']=function(_0x156e2e,_0x4b388f){if(_0x156e2e[_0x1538('0x48')]['id']){delete _0x156e2e[_0x1538('0x48')]['id'];}return db[_0x1538('0x3c')]['find']({'where':{'id':_0x156e2e[_0x1538('0x49')]['id']}})[_0x1538('0x24')](handleEntityNotFound(_0x4b388f,null))[_0x1538('0x24')](saveUpdates(_0x156e2e[_0x1538('0x48')],null))[_0x1538('0x24')](respondWithResult(_0x4b388f,null))[_0x1538('0x41')](handleError(_0x4b388f,null));};exports[_0x1538('0x25')]=function(_0x5c4313,_0x62a329){return db['OpenchannelQueueReport'][_0x1538('0x46')]({'where':{'id':_0x5c4313[_0x1538('0x49')]['id']}})['then'](handleEntityNotFound(_0x62a329,null))['then'](removeEntity(_0x62a329,null))[_0x1538('0x41')](handleError(_0x62a329,null));};exports[_0x1538('0x4a')]=function(_0x477f51,_0x58200e){return db['OpenchannelQueueReport']['describe']()[_0x1538('0x24')](respondWithResult(_0x58200e,null))['catch'](handleError(_0x58200e,null));};
\ No newline at end of file
+var _0x67a1=['jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','count','set','apply','reject','save','update','then','destroy','end','error','stack','name','send','OpenchannelQueueReport','key','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','map','type','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto'];(function(_0x3ab519,_0x5ce56e){var _0x562490=function(_0x45bf40){while(--_0x45bf40){_0x3ab519['push'](_0x3ab519['shift']());}};_0x562490(++_0x5ce56e);}(_0x67a1,0x16d));var _0x167a=function(_0x35e02c,_0xa22a5c){_0x35e02c=_0x35e02c-0x0;var _0x564a2e=_0x67a1[_0x35e02c];return _0x564a2e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x167a('0x0'));var zipdir=require(_0x167a('0x1'));var jsonpatch=require(_0x167a('0x2'));var rp=require(_0x167a('0x3'));var moment=require(_0x167a('0x4'));var BPromise=require(_0x167a('0x5'));var Mustache=require(_0x167a('0x6'));var util=require(_0x167a('0x7'));var path=require(_0x167a('0x8'));var sox=require(_0x167a('0x9'));var csv=require(_0x167a('0xa'));var ejs=require(_0x167a('0xb'));var fs=require('fs');var fs_extra=require(_0x167a('0xc'));var _=require('lodash');var squel=require(_0x167a('0xd'));var crypto=require(_0x167a('0xe'));var jsforce=require(_0x167a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x167a('0xa'));var querystring=require(_0x167a('0x10'));var Papa=require('papaparse');var Redis=require(_0x167a('0x11'));var authService=require(_0x167a('0x12'));var qs=require(_0x167a('0x13'));var as=require(_0x167a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x167a('0x15'))(_0x167a('0x16'));var utils=require(_0x167a('0x17'));var config=require(_0x167a('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54650e,_0x154239){_0x154239=_0x154239||0xcc;return function(_0x17d23a){if(_0x17d23a){return _0x54650e[_0x167a('0x19')](_0x154239);}return _0x54650e[_0x167a('0x1a')](_0x154239)['end']();};}function respondWithResult(_0x16dfb4,_0xc6cc22){_0xc6cc22=_0xc6cc22||0xc8;return function(_0x562bc9){if(_0x562bc9){return _0x16dfb4[_0x167a('0x1a')](_0xc6cc22)[_0x167a('0x1b')](_0x562bc9);}};}function respondWithFilteredResult(_0x1feced,_0x25ca7b){return function(_0x59f95c){if(_0x59f95c){var _0x40a652=typeof _0x25ca7b[_0x167a('0x1c')]===_0x167a('0x1d')&&typeof _0x25ca7b['limit']===_0x167a('0x1d');var _0x3c2162=_0x59f95c[_0x167a('0x1e')];var _0x170eeb=_0x40a652?0x0:_0x25ca7b[_0x167a('0x1c')];var _0x20dceb=_0x40a652?_0x59f95c['count']:_0x25ca7b[_0x167a('0x1c')]+_0x25ca7b['limit'];var _0x2a2445;if(_0x20dceb>=_0x3c2162){_0x20dceb=_0x3c2162;_0x2a2445=0xc8;}else{_0x2a2445=0xce;}_0x1feced[_0x167a('0x1a')](_0x2a2445);return _0x1feced[_0x167a('0x1f')]('Content-Range',_0x170eeb+'-'+_0x20dceb+'/'+_0x3c2162)['json'](_0x59f95c);}return null;};}function patchUpdates(_0x1c28df){return function(_0x1074fa){try{jsonpatch[_0x167a('0x20')](_0x1074fa,_0x1c28df,!![]);}catch(_0x5685b4){return BPromise[_0x167a('0x21')](_0x5685b4);}return _0x1074fa[_0x167a('0x22')]();};}function saveUpdates(_0x2ae92f,_0x3dcea9){return function(_0x516027){if(_0x516027){return _0x516027[_0x167a('0x23')](_0x2ae92f)[_0x167a('0x24')](function(_0x5b9cbc){return _0x5b9cbc;});}return null;};}function removeEntity(_0x6fa477,_0x5e9a58){return function(_0x15bb6b){if(_0x15bb6b){return _0x15bb6b[_0x167a('0x25')]()[_0x167a('0x24')](function(){_0x6fa477[_0x167a('0x1a')](0xcc)[_0x167a('0x26')]();});}};}function handleEntityNotFound(_0x1b35f7,_0x54124d){return function(_0x416a73){if(!_0x416a73){_0x1b35f7['sendStatus'](0x194);}return _0x416a73;};}function handleError(_0x4cac98,_0x2295d5){_0x2295d5=_0x2295d5||0x1f4;return function(_0x3333dc){logger[_0x167a('0x27')](_0x3333dc[_0x167a('0x28')]);if(_0x3333dc['name']){delete _0x3333dc[_0x167a('0x29')];}_0x4cac98[_0x167a('0x1a')](_0x2295d5)[_0x167a('0x2a')](_0x3333dc);};}exports['index']=function(_0x32f88d,_0x371828){var _0x16520c={},_0x9561b4={},_0x1cdeb3={'count':0x0,'rows':[]};var _0x2c329c=_['map'](db[_0x167a('0x2b')]['rawAttributes'],function(_0x32ff7e){return{'name':_0x32ff7e['fieldName'],'type':_0x32ff7e['type'][_0x167a('0x2c')]};});_0x9561b4['model']=_['map'](_0x2c329c,_0x167a('0x29'));_0x9561b4[_0x167a('0x2d')]=_[_0x167a('0x2e')](_0x32f88d[_0x167a('0x2d')]);_0x9561b4[_0x167a('0x2f')]=_['intersection'](_0x9561b4[_0x167a('0x30')],_0x9561b4[_0x167a('0x2d')]);_0x16520c['attributes']=_[_0x167a('0x31')](_0x9561b4[_0x167a('0x30')],qs['fields'](_0x32f88d[_0x167a('0x2d')][_0x167a('0x32')]));_0x16520c[_0x167a('0x33')]=_0x16520c['attributes'][_0x167a('0x34')]?_0x16520c[_0x167a('0x33')]:_0x9561b4[_0x167a('0x30')];if(!_0x32f88d['query'][_0x167a('0x35')](_0x167a('0x36'))){_0x16520c['limit']=qs[_0x167a('0x37')](_0x32f88d[_0x167a('0x2d')][_0x167a('0x37')]);_0x16520c[_0x167a('0x1c')]=qs[_0x167a('0x1c')](_0x32f88d[_0x167a('0x2d')]['offset']);}_0x16520c['order']=qs['sort'](_0x32f88d['query'][_0x167a('0x38')]);_0x16520c[_0x167a('0x39')]=qs[_0x167a('0x2f')](_[_0x167a('0x3a')](_0x32f88d[_0x167a('0x2d')],_0x9561b4['filters']),_0x2c329c);if(_0x32f88d[_0x167a('0x2d')][_0x167a('0x3b')]){_0x16520c[_0x167a('0x39')]=_['merge'](_0x16520c[_0x167a('0x39')],{'$or':_[_0x167a('0x3c')](_0x2c329c,function(_0x52b955){if(_0x52b955[_0x167a('0x3d')]!=='VIRTUAL'){var _0x592432={};_0x592432[_0x52b955['name']]={'$like':'%'+_0x32f88d[_0x167a('0x2d')][_0x167a('0x3b')]+'%'};return _0x592432;}})});}_0x16520c=_[_0x167a('0x3e')]({},_0x16520c,_0x32f88d[_0x167a('0x3f')]);var _0x1d9294={'where':_0x16520c['where']};return db['OpenchannelQueueReport']['count'](_0x1d9294)[_0x167a('0x24')](function(_0x28cbfb){_0x1cdeb3[_0x167a('0x1e')]=_0x28cbfb;if(_0x32f88d[_0x167a('0x2d')][_0x167a('0x40')]){_0x16520c[_0x167a('0x41')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0x167a('0x42')](_0x16520c);})[_0x167a('0x24')](function(_0x2d9d53){_0x1cdeb3[_0x167a('0x43')]=_0x2d9d53;return _0x1cdeb3;})[_0x167a('0x24')](respondWithFilteredResult(_0x371828,_0x16520c))[_0x167a('0x44')](handleError(_0x371828,null));};exports[_0x167a('0x45')]=function(_0x11c5e9,_0x39c0f6){var _0x10e5f7={'raw':!![],'where':{'id':_0x11c5e9[_0x167a('0x46')]['id']}},_0x344436={};_0x344436[_0x167a('0x30')]=_[_0x167a('0x2e')](db[_0x167a('0x2b')][_0x167a('0x47')]);_0x344436['query']=_[_0x167a('0x2e')](_0x11c5e9[_0x167a('0x2d')]);_0x344436[_0x167a('0x2f')]=_['intersection'](_0x344436[_0x167a('0x30')],_0x344436[_0x167a('0x2d')]);_0x10e5f7[_0x167a('0x33')]=_[_0x167a('0x31')](_0x344436[_0x167a('0x30')],qs['fields'](_0x11c5e9[_0x167a('0x2d')][_0x167a('0x32')]));_0x10e5f7[_0x167a('0x33')]=_0x10e5f7[_0x167a('0x33')]['length']?_0x10e5f7[_0x167a('0x33')]:_0x344436[_0x167a('0x30')];if(_0x11c5e9[_0x167a('0x2d')][_0x167a('0x40')]){_0x10e5f7['include']=[{'all':!![]}];}_0x10e5f7=_[_0x167a('0x3e')]({},_0x10e5f7,_0x11c5e9['options']);return db[_0x167a('0x2b')][_0x167a('0x48')](_0x10e5f7)[_0x167a('0x24')](handleEntityNotFound(_0x39c0f6,null))['then'](respondWithResult(_0x39c0f6,null))['catch'](handleError(_0x39c0f6,null));};exports[_0x167a('0x49')]=function(_0x5c3da3,_0x28e714){return db[_0x167a('0x2b')]['create'](_0x5c3da3[_0x167a('0x4a')],{})[_0x167a('0x24')](respondWithResult(_0x28e714,0xc9))[_0x167a('0x44')](handleError(_0x28e714,null));};exports[_0x167a('0x23')]=function(_0x4fd199,_0x5d6164){if(_0x4fd199[_0x167a('0x4a')]['id']){delete _0x4fd199[_0x167a('0x4a')]['id'];}return db[_0x167a('0x2b')][_0x167a('0x48')]({'where':{'id':_0x4fd199['params']['id']}})['then'](handleEntityNotFound(_0x5d6164,null))[_0x167a('0x24')](saveUpdates(_0x4fd199[_0x167a('0x4a')],null))[_0x167a('0x24')](respondWithResult(_0x5d6164,null))['catch'](handleError(_0x5d6164,null));};exports[_0x167a('0x25')]=function(_0x1568cd,_0x4c5222){return db['OpenchannelQueueReport'][_0x167a('0x48')]({'where':{'id':_0x1568cd[_0x167a('0x46')]['id']}})[_0x167a('0x24')](handleEntityNotFound(_0x4c5222,null))[_0x167a('0x24')](removeEntity(_0x4c5222,null))[_0x167a('0x44')](handleError(_0x4c5222,null));};exports[_0x167a('0x4b')]=function(_0x401b85,_0x419dd2){return db[_0x167a('0x2b')][_0x167a('0x4b')]()['then'](respondWithResult(_0x419dd2,null))['catch'](handleError(_0x419dd2,null));};
\ No newline at end of file
index 0682012..53a9735 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['bluebird','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','../../config/logger','api','moment'];(function(_0x17615d,_0x3ef58b){var _0x1f6dc8=function(_0x12b9cc){while(--_0x12b9cc){_0x17615d['push'](_0x17615d['shift']());}};_0x1f6dc8(++_0x3ef58b);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xc4aa[_0x1caf6a];return _0x1bf493;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ef3=['define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./openchannelQueueReport.attributes','exports'];(function(_0x1cc2f8,_0x1deaf7){var _0x266b52=function(_0x500fb7){while(--_0x500fb7){_0x1cc2f8['push'](_0x1cc2f8['shift']());}};_0x266b52(++_0x1deaf7);}(_0x2ef3,0xba));var _0x32ef=function(_0x572908,_0x1c9d27){_0x572908=_0x572908-0x0;var _0xfae401=_0x2ef3[_0x572908];return _0xfae401;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var logger=require(_0x32ef('0x2'))(_0x32ef('0x3'));var moment=require(_0x32ef('0x4'));var BPromise=require(_0x32ef('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x32ef('0x6'));var rimraf=require(_0x32ef('0x7'));var config=require('../../config/environment');var attributes=require(_0x32ef('0x8'));module[_0x32ef('0x9')]=function(_0x4c8104,_0x5dfa09){return _0x4c8104[_0x32ef('0xa')](_0x32ef('0xb'),attributes,{'tableName':_0x32ef('0xc'),'paranoid':![],'indexes':[{'name':_0x32ef('0xd'),'fields':[_0x32ef('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 51294af..f2fb402 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96f2=['then','info','OpenchannelQueueReport,\x20%s,\x20%s','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','CreateOpenchannelQueueReport','create','body','options','stringify','update','raw','attributes','limit','UpdateOpenchannelQueueReport','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request'];(function(_0x1e8090,_0x382318){var _0xe5ba14=function(_0x45d697){while(--_0x45d697){_0x1e8090['push'](_0x1e8090['shift']());}};_0xe5ba14(++_0x382318);}(_0x96f2,0xb0));var _0x296f=function(_0x7d4709,_0x1e1943){_0x7d4709=_0x7d4709-0x0;var _0x3b67c1=_0x96f2[_0x7d4709];return _0x3b67c1;};'use strict';var _=require(_0x296f('0x0'));var util=require('util');var moment=require(_0x296f('0x1'));var BPromise=require(_0x296f('0x2'));var rs=require(_0x296f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x296f('0x4'))['db'];var utils=require(_0x296f('0x5'));var logger=require(_0x296f('0x6'))('rpc');var config=require(_0x296f('0x7'));var jayson=require(_0x296f('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x164031,_0x1d019f,_0x2dc0ca){return new BPromise(function(_0x28f708,_0x30ed43){return client[_0x296f('0x9')](_0x164031,_0x2dc0ca)[_0x296f('0xa')](function(_0x3ea699){logger[_0x296f('0xb')](_0x296f('0xc'),_0x1d019f,'request\x20sent');logger[_0x296f('0xd')](_0x296f('0xe'),_0x1d019f,_0x296f('0xf'),JSON['stringify'](_0x3ea699));if(_0x3ea699[_0x296f('0x10')]){if(_0x3ea699[_0x296f('0x10')][_0x296f('0x11')]===0x1f4){logger[_0x296f('0x10')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x1d019f,_0x3ea699['error']['message']);return _0x30ed43(_0x3ea699[_0x296f('0x10')][_0x296f('0x12')]);}logger[_0x296f('0x10')](_0x296f('0xc'),_0x1d019f,_0x3ea699['error'][_0x296f('0x12')]);return _0x28f708(_0x3ea699['error']['message']);}else{logger[_0x296f('0xb')](_0x296f('0xc'),_0x1d019f,_0x296f('0xf'));_0x28f708(_0x3ea699[_0x296f('0x13')]['message']);}})['catch'](function(_0x3e3860){logger['error'](_0x296f('0xc'),_0x1d019f,_0x3e3860);_0x30ed43(_0x3e3860);});});}exports[_0x296f('0x14')]=function(_0xfc0b87){var _0x48725e=this;return new Promise(function(_0xcc2b48,_0x3b7db8){return db['OpenchannelQueueReport'][_0x296f('0x15')](_0xfc0b87[_0x296f('0x16')],{'raw':_0xfc0b87[_0x296f('0x17')]?_0xfc0b87[_0x296f('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x296f('0xa')](function(_0x474721){logger[_0x296f('0xb')]('CreateOpenchannelQueueReport',_0xfc0b87);logger[_0x296f('0xd')](_0x296f('0x14'),_0xfc0b87,JSON[_0x296f('0x18')](_0x474721));_0xcc2b48(_0x474721);})['catch'](function(_0x2a9a1c){logger[_0x296f('0x10')](_0x296f('0x14'),_0x2a9a1c['message'],_0xfc0b87);_0x3b7db8(_0x48725e['error'](0x1f4,_0x2a9a1c[_0x296f('0x12')]));});});};exports['UpdateOpenchannelQueueReport']=function(_0x54a0af){var _0xf39fb=this;return new Promise(function(_0x513d59,_0x4ab133){return db['OpenchannelQueueReport'][_0x296f('0x19')](_0x54a0af[_0x296f('0x16')],{'raw':_0x54a0af[_0x296f('0x17')]?_0x54a0af[_0x296f('0x17')][_0x296f('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x54a0af[_0x296f('0x17')]?_0x54a0af['options']['where']||null:null,'attributes':_0x54a0af[_0x296f('0x17')]?_0x54a0af['options'][_0x296f('0x1b')]||null:null,'limit':_0x54a0af[_0x296f('0x17')]?_0x54a0af[_0x296f('0x17')][_0x296f('0x1c')]||null:null})[_0x296f('0xa')](function(_0x28d624){logger['info'](_0x296f('0x1d'),_0x54a0af);logger['debug'](_0x296f('0x1d'),_0x54a0af,JSON[_0x296f('0x18')](_0x28d624));_0x513d59(_0x28d624);})[_0x296f('0x1e')](function(_0x3aa271){logger[_0x296f('0x10')](_0x296f('0x1d'),_0x3aa271[_0x296f('0x12')],_0x54a0af);_0x4ab133(_0xf39fb[_0x296f('0x10')](0x1f4,_0x3aa271[_0x296f('0x12')]));});});};
\ No newline at end of file
+var _0x955f=['../../mysqldb','rpc','jayson/promise','client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','create','body','options','raw','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','OpenchannelQueueReport','where','attributes','limit','lodash','util','moment','bluebird','randomstring'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x955f,0x1eb));var _0xf955=function(_0x4a8501,_0x2a5c8a){_0x4a8501=_0x4a8501-0x0;var _0x2904c9=_0x955f[_0x4a8501];return _0x2904c9;};'use strict';var _=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var moment=require(_0xf955('0x2'));var BPromise=require(_0xf955('0x3'));var rs=require(_0xf955('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf955('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf955('0x6'));var config=require('../../config/environment');var jayson=require(_0xf955('0x7'));var client=jayson[_0xf955('0x8')][_0xf955('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x59d5b3,_0x18432f,_0x20c096){return new BPromise(function(_0x4f58fb,_0x254b38){return client[_0xf955('0xa')](_0x59d5b3,_0x20c096)[_0xf955('0xb')](function(_0x38b190){logger[_0xf955('0xc')](_0xf955('0xd'),_0x18432f,_0xf955('0xe'));logger['debug'](_0xf955('0xf'),_0x18432f,'request\x20sent',JSON[_0xf955('0x10')](_0x38b190));if(_0x38b190[_0xf955('0x11')]){if(_0x38b190[_0xf955('0x11')]['code']===0x1f4){logger[_0xf955('0x11')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x18432f,_0x38b190[_0xf955('0x11')]['message']);return _0x254b38(_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);}logger[_0xf955('0x11')](_0xf955('0xd'),_0x18432f,_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);return _0x4f58fb(_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);}else{logger[_0xf955('0xc')](_0xf955('0xd'),_0x18432f,'request\x20sent');_0x4f58fb(_0x38b190[_0xf955('0x13')]['message']);}})[_0xf955('0x14')](function(_0x3a814f){logger[_0xf955('0x11')](_0xf955('0xd'),_0x18432f,_0x3a814f);_0x254b38(_0x3a814f);});});}exports['CreateOpenchannelQueueReport']=function(_0x5ac6cb){var _0x1e20d1=this;return new Promise(function(_0xe6de5c,_0x3c49c0){return db['OpenchannelQueueReport'][_0xf955('0x15')](_0x5ac6cb[_0xf955('0x16')],{'raw':_0x5ac6cb[_0xf955('0x17')]?_0x5ac6cb[_0xf955('0x17')][_0xf955('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x17d86a){logger[_0xf955('0xc')](_0xf955('0x19'),_0x5ac6cb);logger['debug'](_0xf955('0x19'),_0x5ac6cb,JSON['stringify'](_0x17d86a));_0xe6de5c(_0x17d86a);})[_0xf955('0x14')](function(_0x43b078){logger[_0xf955('0x11')](_0xf955('0x19'),_0x43b078[_0xf955('0x12')],_0x5ac6cb);_0x3c49c0(_0x1e20d1['error'](0x1f4,_0x43b078[_0xf955('0x12')]));});});};exports[_0xf955('0x1a')]=function(_0x3585c7){var _0x13a1a7=this;return new Promise(function(_0x17dec2,_0x102e36){return db[_0xf955('0x1b')]['update'](_0x3585c7[_0xf955('0x16')],{'raw':_0x3585c7[_0xf955('0x17')]?_0x3585c7[_0xf955('0x17')][_0xf955('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3585c7[_0xf955('0x17')]?_0x3585c7[_0xf955('0x17')][_0xf955('0x1c')]||null:null,'attributes':_0x3585c7['options']?_0x3585c7[_0xf955('0x17')][_0xf955('0x1d')]||null:null,'limit':_0x3585c7[_0xf955('0x17')]?_0x3585c7[_0xf955('0x17')][_0xf955('0x1e')]||null:null})[_0xf955('0xb')](function(_0x4d4af0){logger[_0xf955('0xc')](_0xf955('0x1a'),_0x3585c7);logger['debug'](_0xf955('0x1a'),_0x3585c7,JSON[_0xf955('0x10')](_0x4d4af0));_0x17dec2(_0x4d4af0);})[_0xf955('0x14')](function(_0x1ef794){logger['error'](_0xf955('0x1a'),_0x1ef794['message'],_0x3585c7);_0x102e36(_0x13a1a7[_0xf955('0x11')](0x1f4,_0x1ef794[_0xf955('0x12')]));});});};
\ No newline at end of file
index 449ed5c..492e58c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a9f=['./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x47878f,_0x48d3bf){var _0x4b05b8=function(_0x3d6597){while(--_0x3d6597){_0x47878f['push'](_0x47878f['shift']());}};_0x4b05b8(++_0x48d3bf);}(_0x3a9f,0x195));var _0xf3a9=function(_0x289891,_0x49a0fa){_0x289891=_0x289891-0x0;var _0x31cf2e=_0x3a9f[_0x289891];return _0x31cf2e;};'use strict';var multer=require(_0xf3a9('0x0'));var util=require(_0xf3a9('0x1'));var path=require(_0xf3a9('0x2'));var timeout=require(_0xf3a9('0x3'));var express=require(_0xf3a9('0x4'));var router=express[_0xf3a9('0x5')]();var fs_extra=require(_0xf3a9('0x6'));var auth=require(_0xf3a9('0x7'));var interaction=require(_0xf3a9('0x8'));var config=require('../../config/environment');var controller=require(_0xf3a9('0x9'));router[_0xf3a9('0xa')]('/',auth[_0xf3a9('0xb')](),controller[_0xf3a9('0xc')]);router[_0xf3a9('0xa')](_0xf3a9('0xd'),auth[_0xf3a9('0xb')](),controller[_0xf3a9('0xe')]);router['get']('/:id',auth[_0xf3a9('0xb')](),controller[_0xf3a9('0xf')]);router[_0xf3a9('0x10')]('/',auth['isAuthenticated'](),controller[_0xf3a9('0x11')]);router[_0xf3a9('0x12')](_0xf3a9('0x13'),auth[_0xf3a9('0xb')](),controller[_0xf3a9('0x14')]);router[_0xf3a9('0x15')](_0xf3a9('0x13'),auth[_0xf3a9('0xb')](),controller[_0xf3a9('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x7dff=['path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','post','create','put','/:id','delete','destroy','exports','util'];(function(_0x1cccd2,_0x3f4287){var _0x48be1f=function(_0x2fe189){while(--_0x2fe189){_0x1cccd2['push'](_0x1cccd2['shift']());}};_0x48be1f(++_0x3f4287);}(_0x7dff,0x153));var _0xf7df=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x7dff[_0xc4001c];return _0x49f7bc;};'use strict';var multer=require('multer');var util=require(_0xf7df('0x0'));var path=require(_0xf7df('0x1'));var timeout=require('connect-timeout');var express=require(_0xf7df('0x2'));var router=express['Router']();var fs_extra=require(_0xf7df('0x3'));var auth=require(_0xf7df('0x4'));var interaction=require(_0xf7df('0x5'));var config=require(_0xf7df('0x6'));var controller=require(_0xf7df('0x7'));router[_0xf7df('0x8')]('/',auth[_0xf7df('0x9')](),controller[_0xf7df('0xa')]);router[_0xf7df('0x8')](_0xf7df('0xb'),auth[_0xf7df('0x9')](),controller[_0xf7df('0xc')]);router[_0xf7df('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xf7df('0xd')]('/',auth['isAuthenticated'](),controller[_0xf7df('0xe')]);router[_0xf7df('0xf')](_0xf7df('0x10'),auth['isAuthenticated'](),controller['update']);router[_0xf7df('0x11')](_0xf7df('0x10'),auth[_0xf7df('0x9')](),controller[_0xf7df('0x12')]);module[_0xf7df('0x13')]=router;
\ No newline at end of file
index bd1ff9b..cfc2a0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x27efcf,_0x320952){var _0xdb0237=function(_0x2a7389){while(--_0x2a7389){_0x27efcf['push'](_0x27efcf['shift']());}};_0xdb0237(++_0x320952);}(_0x9c44,0x178));var _0x49c4=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x9c44[_0x36c5b0];return _0xf19333;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
+var _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x471e0e,_0x3b8f16){var _0x952309=function(_0x58c63a){while(--_0x58c63a){_0x471e0e['push'](_0x471e0e['shift']());}};_0x952309(++_0x3b8f16);}(_0x70e0,0x17b));var _0x070e=function(_0x2ca98f,_0x3b72b4){_0x2ca98f=_0x2ca98f-0x0;var _0x132dd0=_0x70e0[_0x2ca98f];return _0x132dd0;};'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
index 4626a53..fc8cb02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d6e=['status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','OpenchannelTransferReport','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','sort','where','pick','VIRTUAL','includeAll','include','findAll','show','params','merge','options','find','catch','create','body','describe','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0xbec1c3,_0x4589df){var _0x496fde=function(_0x98354a){while(--_0x98354a){_0xbec1c3['push'](_0xbec1c3['shift']());}};_0x496fde(++_0x4589df);}(_0x7d6e,0x107));var _0xe7d6=function(_0x356d1b,_0x2a9fb7){_0x356d1b=_0x356d1b-0x0;var _0x4c2ca4=_0x7d6e[_0x356d1b];return _0x4c2ca4;};'use strict';var emlformat=require(_0xe7d6('0x0'));var rimraf=require(_0xe7d6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe7d6('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe7d6('0x3'));var Mustache=require(_0xe7d6('0x4'));var util=require(_0xe7d6('0x5'));var path=require(_0xe7d6('0x6'));var sox=require('sox');var csv=require(_0xe7d6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe7d6('0x8'));var _=require(_0xe7d6('0x9'));var squel=require(_0xe7d6('0xa'));var crypto=require(_0xe7d6('0xb'));var jsforce=require(_0xe7d6('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe7d6('0x7'));var querystring=require('querystring');var Papa=require(_0xe7d6('0xd'));var Redis=require(_0xe7d6('0xe'));var authService=require(_0xe7d6('0xf'));var qs=require(_0xe7d6('0x10'));var as=require(_0xe7d6('0x11'));var hardwareService=require(_0xe7d6('0x12'));var logger=require(_0xe7d6('0x13'))(_0xe7d6('0x14'));var utils=require('../../config/utils');var config=require(_0xe7d6('0x15'));var licenseUtil=require(_0xe7d6('0x16'));var db=require(_0xe7d6('0x17'))['db'];function respondWithStatusCode(_0x226e45,_0x33e67a){_0x33e67a=_0x33e67a||0xcc;return function(_0x3d636a){if(_0x3d636a){return _0x226e45[_0xe7d6('0x18')](_0x33e67a);}return _0x226e45[_0xe7d6('0x19')](_0x33e67a)[_0xe7d6('0x1a')]();};}function respondWithResult(_0x13ed26,_0x38f9fb){_0x38f9fb=_0x38f9fb||0xc8;return function(_0x15f23a){if(_0x15f23a){return _0x13ed26[_0xe7d6('0x19')](_0x38f9fb)[_0xe7d6('0x1b')](_0x15f23a);}};}function respondWithFilteredResult(_0x1945b7,_0x257ade){return function(_0x56f2ce){if(_0x56f2ce){var _0x3f9a3b=typeof _0x257ade[_0xe7d6('0x1c')]===_0xe7d6('0x1d')&&typeof _0x257ade[_0xe7d6('0x1e')]===_0xe7d6('0x1d');var _0x222307=_0x56f2ce[_0xe7d6('0x1f')];var _0x4ac22d=_0x3f9a3b?0x0:_0x257ade[_0xe7d6('0x1c')];var _0x2f5e5b=_0x3f9a3b?_0x56f2ce[_0xe7d6('0x1f')]:_0x257ade[_0xe7d6('0x1c')]+_0x257ade[_0xe7d6('0x1e')];var _0x1b7125;if(_0x2f5e5b>=_0x222307){_0x2f5e5b=_0x222307;_0x1b7125=0xc8;}else{_0x1b7125=0xce;}_0x1945b7[_0xe7d6('0x19')](_0x1b7125);return _0x1945b7['set'](_0xe7d6('0x20'),_0x4ac22d+'-'+_0x2f5e5b+'/'+_0x222307)['json'](_0x56f2ce);}return null;};}function patchUpdates(_0x219091){return function(_0x1e69a3){try{jsonpatch[_0xe7d6('0x21')](_0x1e69a3,_0x219091,!![]);}catch(_0x28db4e){return BPromise[_0xe7d6('0x22')](_0x28db4e);}return _0x1e69a3[_0xe7d6('0x23')]();};}function saveUpdates(_0x28b3c9,_0x5b9588){return function(_0x4824ad){if(_0x4824ad){return _0x4824ad[_0xe7d6('0x24')](_0x28b3c9)[_0xe7d6('0x25')](function(_0x533739){return _0x533739;});}return null;};}function removeEntity(_0x28f704,_0x2f54e3){return function(_0x3e4ed7){if(_0x3e4ed7){return _0x3e4ed7[_0xe7d6('0x26')]()[_0xe7d6('0x25')](function(){_0x28f704[_0xe7d6('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ff2d1,_0x29a617){return function(_0x5c76fb){if(!_0x5c76fb){_0x2ff2d1[_0xe7d6('0x18')](0x194);}return _0x5c76fb;};}function handleError(_0x414381,_0xe016d0){_0xe016d0=_0xe016d0||0x1f4;return function(_0x4a60b4){logger[_0xe7d6('0x27')](_0x4a60b4[_0xe7d6('0x28')]);if(_0x4a60b4[_0xe7d6('0x29')]){delete _0x4a60b4[_0xe7d6('0x29')];}_0x414381[_0xe7d6('0x19')](_0xe016d0)[_0xe7d6('0x2a')](_0x4a60b4);};}exports['index']=function(_0x88c891,_0x379684){var _0x485135={},_0x29ff51={},_0x5b10ae={'count':0x0,'rows':[]};var _0x11c585=_[_0xe7d6('0x2b')](db[_0xe7d6('0x2c')][_0xe7d6('0x2d')],function(_0xe54eda){return{'name':_0xe54eda[_0xe7d6('0x2e')],'type':_0xe54eda[_0xe7d6('0x2f')]['key']};});_0x29ff51['model']=_[_0xe7d6('0x2b')](_0x11c585,'name');_0x29ff51[_0xe7d6('0x30')]=_[_0xe7d6('0x31')](_0x88c891['query']);_0x29ff51[_0xe7d6('0x32')]=_[_0xe7d6('0x33')](_0x29ff51[_0xe7d6('0x34')],_0x29ff51['query']);_0x485135[_0xe7d6('0x35')]=_[_0xe7d6('0x33')](_0x29ff51[_0xe7d6('0x34')],qs[_0xe7d6('0x36')](_0x88c891[_0xe7d6('0x30')][_0xe7d6('0x36')]));_0x485135[_0xe7d6('0x35')]=_0x485135[_0xe7d6('0x35')]['length']?_0x485135['attributes']:_0x29ff51['model'];if(!_0x88c891[_0xe7d6('0x30')][_0xe7d6('0x37')]('nolimit')){_0x485135[_0xe7d6('0x1e')]=qs['limit'](_0x88c891[_0xe7d6('0x30')][_0xe7d6('0x1e')]);_0x485135['offset']=qs['offset'](_0x88c891['query'][_0xe7d6('0x1c')]);}_0x485135['order']=qs[_0xe7d6('0x38')](_0x88c891[_0xe7d6('0x30')]['sort']);_0x485135[_0xe7d6('0x39')]=qs[_0xe7d6('0x32')](_[_0xe7d6('0x3a')](_0x88c891[_0xe7d6('0x30')],_0x29ff51[_0xe7d6('0x32')]),_0x11c585);if(_0x88c891[_0xe7d6('0x30')]['filter']){_0x485135[_0xe7d6('0x39')]=_['merge'](_0x485135['where'],{'$or':_[_0xe7d6('0x2b')](_0x11c585,function(_0x3690ea){if(_0x3690ea[_0xe7d6('0x2f')]!==_0xe7d6('0x3b')){var _0x13d2ff={};_0x13d2ff[_0x3690ea[_0xe7d6('0x29')]]={'$like':'%'+_0x88c891[_0xe7d6('0x30')]['filter']+'%'};return _0x13d2ff;}})});}_0x485135=_['merge']({},_0x485135,_0x88c891['options']);var _0x15c2f9={'where':_0x485135[_0xe7d6('0x39')]};return db[_0xe7d6('0x2c')][_0xe7d6('0x1f')](_0x15c2f9)[_0xe7d6('0x25')](function(_0x3da24f){_0x5b10ae[_0xe7d6('0x1f')]=_0x3da24f;if(_0x88c891[_0xe7d6('0x30')][_0xe7d6('0x3c')]){_0x485135[_0xe7d6('0x3d')]=[{'all':!![]}];}return db[_0xe7d6('0x2c')][_0xe7d6('0x3e')](_0x485135);})[_0xe7d6('0x25')](function(_0xb14909){_0x5b10ae['rows']=_0xb14909;return _0x5b10ae;})['then'](respondWithFilteredResult(_0x379684,_0x485135))['catch'](handleError(_0x379684,null));};exports[_0xe7d6('0x3f')]=function(_0x28e331,_0x5967bf){var _0x382561={'raw':!![],'where':{'id':_0x28e331[_0xe7d6('0x40')]['id']}},_0x35d7e3={};_0x35d7e3[_0xe7d6('0x34')]=_[_0xe7d6('0x31')](db[_0xe7d6('0x2c')][_0xe7d6('0x2d')]);_0x35d7e3[_0xe7d6('0x30')]=_[_0xe7d6('0x31')](_0x28e331['query']);_0x35d7e3['filters']=_[_0xe7d6('0x33')](_0x35d7e3['model'],_0x35d7e3[_0xe7d6('0x30')]);_0x382561[_0xe7d6('0x35')]=_[_0xe7d6('0x33')](_0x35d7e3[_0xe7d6('0x34')],qs[_0xe7d6('0x36')](_0x28e331[_0xe7d6('0x30')]['fields']));_0x382561[_0xe7d6('0x35')]=_0x382561[_0xe7d6('0x35')]['length']?_0x382561[_0xe7d6('0x35')]:_0x35d7e3[_0xe7d6('0x34')];if(_0x28e331[_0xe7d6('0x30')][_0xe7d6('0x3c')]){_0x382561['include']=[{'all':!![]}];}_0x382561=_[_0xe7d6('0x41')]({},_0x382561,_0x28e331[_0xe7d6('0x42')]);return db[_0xe7d6('0x2c')][_0xe7d6('0x43')](_0x382561)[_0xe7d6('0x25')](handleEntityNotFound(_0x5967bf,null))[_0xe7d6('0x25')](respondWithResult(_0x5967bf,null))[_0xe7d6('0x44')](handleError(_0x5967bf,null));};exports[_0xe7d6('0x45')]=function(_0x56f15,_0x538f64){return db['OpenchannelTransferReport'][_0xe7d6('0x45')](_0x56f15[_0xe7d6('0x46')],{})[_0xe7d6('0x25')](respondWithResult(_0x538f64,0xc9))[_0xe7d6('0x44')](handleError(_0x538f64,null));};exports['update']=function(_0x400959,_0x221aa4){if(_0x400959[_0xe7d6('0x46')]['id']){delete _0x400959['body']['id'];}return db[_0xe7d6('0x2c')][_0xe7d6('0x43')]({'where':{'id':_0x400959[_0xe7d6('0x40')]['id']}})[_0xe7d6('0x25')](handleEntityNotFound(_0x221aa4,null))[_0xe7d6('0x25')](saveUpdates(_0x400959[_0xe7d6('0x46')],null))[_0xe7d6('0x25')](respondWithResult(_0x221aa4,null))[_0xe7d6('0x44')](handleError(_0x221aa4,null));};exports[_0xe7d6('0x26')]=function(_0xcd1caa,_0xc82253){return db[_0xe7d6('0x2c')][_0xe7d6('0x43')]({'where':{'id':_0xcd1caa[_0xe7d6('0x40')]['id']}})[_0xe7d6('0x25')](handleEntityNotFound(_0xc82253,null))[_0xe7d6('0x25')](removeEntity(_0xc82253,null))[_0xe7d6('0x44')](handleError(_0xc82253,null));};exports['describe']=function(_0x557eaa,_0x43f663){return db[_0xe7d6('0x2c')][_0xe7d6('0x47')]()[_0xe7d6('0x25')](respondWithResult(_0x43f663,null))[_0xe7d6('0x44')](handleError(_0x43f663,null));};
\ No newline at end of file
+var _0x04b6=['../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','name','map','rawAttributes','fieldName','model','keys','filters','intersection','query','attributes','fields','length','order','sort','where','filter','merge','VIRTUAL','options','OpenchannelTransferReport','includeAll','include','rows','catch','show','params','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api'];(function(_0x2ee4bd,_0x929f0e){var _0x2ba397=function(_0xf66800){while(--_0xf66800){_0x2ee4bd['push'](_0x2ee4bd['shift']());}};_0x2ba397(++_0x929f0e);}(_0x04b6,0x1e0));var _0x604b=function(_0x590851,_0x496bee){_0x590851=_0x590851-0x0;var _0x3b0115=_0x04b6[_0x590851];return _0x3b0115;};'use strict';var emlformat=require(_0x604b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x604b('0x1'));var jsonpatch=require(_0x604b('0x2'));var rp=require(_0x604b('0x3'));var moment=require(_0x604b('0x4'));var BPromise=require(_0x604b('0x5'));var Mustache=require(_0x604b('0x6'));var util=require(_0x604b('0x7'));var path=require(_0x604b('0x8'));var sox=require(_0x604b('0x9'));var csv=require(_0x604b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x604b('0xb'));var _=require(_0x604b('0xc'));var squel=require(_0x604b('0xd'));var crypto=require('crypto');var jsforce=require(_0x604b('0xe'));var deskjs=require(_0x604b('0xf'));var toCsv=require(_0x604b('0xa'));var querystring=require(_0x604b('0x10'));var Papa=require(_0x604b('0x11'));var Redis=require(_0x604b('0x12'));var authService=require(_0x604b('0x13'));var qs=require(_0x604b('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x604b('0x15'));var logger=require(_0x604b('0x16'))(_0x604b('0x17'));var utils=require('../../config/utils');var config=require(_0x604b('0x18'));var licenseUtil=require(_0x604b('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c3d7d,_0x316242){_0x316242=_0x316242||0xcc;return function(_0x39d940){if(_0x39d940){return _0x4c3d7d[_0x604b('0x1a')](_0x316242);}return _0x4c3d7d[_0x604b('0x1b')](_0x316242)[_0x604b('0x1c')]();};}function respondWithResult(_0x5f4ad5,_0x31bf89){_0x31bf89=_0x31bf89||0xc8;return function(_0x119a64){if(_0x119a64){return _0x5f4ad5[_0x604b('0x1b')](_0x31bf89)[_0x604b('0x1d')](_0x119a64);}};}function respondWithFilteredResult(_0x2aecb3,_0x27ab60){return function(_0xd9fba6){if(_0xd9fba6){var _0x541015=typeof _0x27ab60[_0x604b('0x1e')]==='undefined'&&typeof _0x27ab60[_0x604b('0x1f')]===_0x604b('0x20');var _0x4d0732=_0xd9fba6[_0x604b('0x21')];var _0x1c03cf=_0x541015?0x0:_0x27ab60['offset'];var _0x5a149c=_0x541015?_0xd9fba6['count']:_0x27ab60['offset']+_0x27ab60['limit'];var _0x580f8b;if(_0x5a149c>=_0x4d0732){_0x5a149c=_0x4d0732;_0x580f8b=0xc8;}else{_0x580f8b=0xce;}_0x2aecb3['status'](_0x580f8b);return _0x2aecb3['set'](_0x604b('0x22'),_0x1c03cf+'-'+_0x5a149c+'/'+_0x4d0732)['json'](_0xd9fba6);}return null;};}function patchUpdates(_0x3ac365){return function(_0x5de665){try{jsonpatch[_0x604b('0x23')](_0x5de665,_0x3ac365,!![]);}catch(_0x5e2561){return BPromise[_0x604b('0x24')](_0x5e2561);}return _0x5de665[_0x604b('0x25')]();};}function saveUpdates(_0xa44ced,_0x118c2b){return function(_0x3241de){if(_0x3241de){return _0x3241de[_0x604b('0x26')](_0xa44ced)[_0x604b('0x27')](function(_0x408822){return _0x408822;});}return null;};}function removeEntity(_0x340a53,_0xdbfb12){return function(_0x5c4bbe){if(_0x5c4bbe){return _0x5c4bbe[_0x604b('0x28')]()[_0x604b('0x27')](function(){_0x340a53['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x9780df,_0x12f05b){return function(_0x5310fc){if(!_0x5310fc){_0x9780df[_0x604b('0x1a')](0x194);}return _0x5310fc;};}function handleError(_0x28f0fd,_0x40da5e){_0x40da5e=_0x40da5e||0x1f4;return function(_0x2e5319){logger[_0x604b('0x29')](_0x2e5319['stack']);if(_0x2e5319[_0x604b('0x2a')]){delete _0x2e5319['name'];}_0x28f0fd[_0x604b('0x1b')](_0x40da5e)['send'](_0x2e5319);};}exports['index']=function(_0x36bd4f,_0x140e6b){var _0x5bef10={},_0xd29268={},_0x4f4de5={'count':0x0,'rows':[]};var _0x5d594c=_[_0x604b('0x2b')](db['OpenchannelTransferReport'][_0x604b('0x2c')],function(_0x2a8bb6){return{'name':_0x2a8bb6[_0x604b('0x2d')],'type':_0x2a8bb6['type']['key']};});_0xd29268[_0x604b('0x2e')]=_[_0x604b('0x2b')](_0x5d594c,_0x604b('0x2a'));_0xd29268['query']=_[_0x604b('0x2f')](_0x36bd4f['query']);_0xd29268[_0x604b('0x30')]=_[_0x604b('0x31')](_0xd29268[_0x604b('0x2e')],_0xd29268[_0x604b('0x32')]);_0x5bef10[_0x604b('0x33')]=_[_0x604b('0x31')](_0xd29268[_0x604b('0x2e')],qs[_0x604b('0x34')](_0x36bd4f[_0x604b('0x32')][_0x604b('0x34')]));_0x5bef10[_0x604b('0x33')]=_0x5bef10['attributes'][_0x604b('0x35')]?_0x5bef10[_0x604b('0x33')]:_0xd29268[_0x604b('0x2e')];if(!_0x36bd4f[_0x604b('0x32')]['hasOwnProperty']('nolimit')){_0x5bef10[_0x604b('0x1f')]=qs[_0x604b('0x1f')](_0x36bd4f[_0x604b('0x32')][_0x604b('0x1f')]);_0x5bef10[_0x604b('0x1e')]=qs[_0x604b('0x1e')](_0x36bd4f[_0x604b('0x32')][_0x604b('0x1e')]);}_0x5bef10[_0x604b('0x36')]=qs[_0x604b('0x37')](_0x36bd4f[_0x604b('0x32')][_0x604b('0x37')]);_0x5bef10[_0x604b('0x38')]=qs['filters'](_['pick'](_0x36bd4f['query'],_0xd29268['filters']),_0x5d594c);if(_0x36bd4f['query'][_0x604b('0x39')]){_0x5bef10[_0x604b('0x38')]=_[_0x604b('0x3a')](_0x5bef10['where'],{'$or':_['map'](_0x5d594c,function(_0x3f4f54){if(_0x3f4f54['type']!==_0x604b('0x3b')){var _0x433395={};_0x433395[_0x3f4f54[_0x604b('0x2a')]]={'$like':'%'+_0x36bd4f[_0x604b('0x32')]['filter']+'%'};return _0x433395;}})});}_0x5bef10=_[_0x604b('0x3a')]({},_0x5bef10,_0x36bd4f[_0x604b('0x3c')]);var _0x54e403={'where':_0x5bef10[_0x604b('0x38')]};return db[_0x604b('0x3d')][_0x604b('0x21')](_0x54e403)[_0x604b('0x27')](function(_0x5f3076){_0x4f4de5[_0x604b('0x21')]=_0x5f3076;if(_0x36bd4f['query'][_0x604b('0x3e')]){_0x5bef10[_0x604b('0x3f')]=[{'all':!![]}];}return db[_0x604b('0x3d')]['findAll'](_0x5bef10);})['then'](function(_0x396b4a){_0x4f4de5[_0x604b('0x40')]=_0x396b4a;return _0x4f4de5;})[_0x604b('0x27')](respondWithFilteredResult(_0x140e6b,_0x5bef10))[_0x604b('0x41')](handleError(_0x140e6b,null));};exports[_0x604b('0x42')]=function(_0x1408bb,_0x2ae4bd){var _0x24afdf={'raw':!![],'where':{'id':_0x1408bb[_0x604b('0x43')]['id']}},_0x297fc5={};_0x297fc5[_0x604b('0x2e')]=_[_0x604b('0x2f')](db[_0x604b('0x3d')]['rawAttributes']);_0x297fc5[_0x604b('0x32')]=_[_0x604b('0x2f')](_0x1408bb[_0x604b('0x32')]);_0x297fc5[_0x604b('0x30')]=_[_0x604b('0x31')](_0x297fc5[_0x604b('0x2e')],_0x297fc5[_0x604b('0x32')]);_0x24afdf[_0x604b('0x33')]=_['intersection'](_0x297fc5[_0x604b('0x2e')],qs['fields'](_0x1408bb[_0x604b('0x32')][_0x604b('0x34')]));_0x24afdf[_0x604b('0x33')]=_0x24afdf['attributes'][_0x604b('0x35')]?_0x24afdf[_0x604b('0x33')]:_0x297fc5[_0x604b('0x2e')];if(_0x1408bb[_0x604b('0x32')]['includeAll']){_0x24afdf[_0x604b('0x3f')]=[{'all':!![]}];}_0x24afdf=_[_0x604b('0x3a')]({},_0x24afdf,_0x1408bb['options']);return db['OpenchannelTransferReport'][_0x604b('0x44')](_0x24afdf)[_0x604b('0x27')](handleEntityNotFound(_0x2ae4bd,null))[_0x604b('0x27')](respondWithResult(_0x2ae4bd,null))[_0x604b('0x41')](handleError(_0x2ae4bd,null));};exports[_0x604b('0x45')]=function(_0x17cd0f,_0x66e510){return db[_0x604b('0x3d')][_0x604b('0x45')](_0x17cd0f[_0x604b('0x46')],{})[_0x604b('0x27')](respondWithResult(_0x66e510,0xc9))[_0x604b('0x41')](handleError(_0x66e510,null));};exports['update']=function(_0xedfce6,_0x119794){if(_0xedfce6[_0x604b('0x46')]['id']){delete _0xedfce6[_0x604b('0x46')]['id'];}return db[_0x604b('0x3d')][_0x604b('0x44')]({'where':{'id':_0xedfce6[_0x604b('0x43')]['id']}})[_0x604b('0x27')](handleEntityNotFound(_0x119794,null))[_0x604b('0x27')](saveUpdates(_0xedfce6['body'],null))['then'](respondWithResult(_0x119794,null))[_0x604b('0x41')](handleError(_0x119794,null));};exports[_0x604b('0x28')]=function(_0x5edfaf,_0x2c052){return db[_0x604b('0x3d')][_0x604b('0x44')]({'where':{'id':_0x5edfaf['params']['id']}})[_0x604b('0x27')](handleEntityNotFound(_0x2c052,null))[_0x604b('0x27')](removeEntity(_0x2c052,null))[_0x604b('0x41')](handleError(_0x2c052,null));};exports[_0x604b('0x47')]=function(_0x40ac6b,_0x401a4d){return db['OpenchannelTransferReport'][_0x604b('0x47')]()['then'](respondWithResult(_0x401a4d,null))[_0x604b('0x41')](handleError(_0x401a4d,null));};
\ No newline at end of file
index 5edc44e..2cf3fc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ee5=['api','moment','bluebird','path','rimraf','OpenchannelTransferReport','uniqueid','lodash','util','../../config/logger'];(function(_0x11ab0b,_0x4d603a){var _0x5c3c7a=function(_0x454467){while(--_0x454467){_0x11ab0b['push'](_0x11ab0b['shift']());}};_0x5c3c7a(++_0x4d603a);}(_0x2ee5,0xf7));var _0x52ee=function(_0x226f10,_0x50ffd7){_0x226f10=_0x226f10-0x0;var _0x2f280c=_0x2ee5[_0x226f10];return _0x2f280c;};'use strict';var _=require(_0x52ee('0x0'));var util=require(_0x52ee('0x1'));var logger=require(_0x52ee('0x2'))(_0x52ee('0x3'));var moment=require(_0x52ee('0x4'));var BPromise=require(_0x52ee('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x52ee('0x6'));var rimraf=require(_0x52ee('0x7'));var config=require('../../config/environment');var attributes=require('./openchannelTransferReport.attributes');module['exports']=function(_0xc67c8b,_0x375303){return _0xc67c8b['define'](_0x52ee('0x8'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x52ee('0x9'),'fields':[_0x52ee('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5058=['api','moment','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','uniqueid','util','../../config/logger'];(function(_0x2509f1,_0x5c9f8c){var _0x410842=function(_0x1b1eeb){while(--_0x1b1eeb){_0x2509f1['push'](_0x2509f1['shift']());}};_0x410842(++_0x5c9f8c);}(_0x5058,0x15d));var _0x8505=function(_0x209bbf,_0x2e2375){_0x209bbf=_0x209bbf-0x0;var _0x592d4b=_0x5058[_0x209bbf];return _0x592d4b;};'use strict';var _=require('lodash');var util=require(_0x8505('0x0'));var logger=require(_0x8505('0x1'))(_0x8505('0x2'));var moment=require(_0x8505('0x3'));var BPromise=require('bluebird');var rp=require(_0x8505('0x4'));var fs=require('fs');var path=require(_0x8505('0x5'));var rimraf=require(_0x8505('0x6'));var config=require(_0x8505('0x7'));var attributes=require(_0x8505('0x8'));module[_0x8505('0x9')]=function(_0x3d86e3,_0x383648){return _0x3d86e3[_0x8505('0xa')](_0x8505('0xb'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x8505('0xc'),'fields':[_0x8505('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index d9fdbe3..87bcadb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2494=['../../config/utils','../../config/environment','client','http','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error','message','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4b4586,_0x3560e0){var _0x282891=function(_0x2bf0c8){while(--_0x2bf0c8){_0x4b4586['push'](_0x4b4586['shift']());}};_0x282891(++_0x3560e0);}(_0x2494,0x82));var _0x4249=function(_0x542eb5,_0x9d713b){_0x542eb5=_0x542eb5-0x0;var _0xe8056d=_0x2494[_0x542eb5];return _0xe8056d;};'use strict';var _=require(_0x4249('0x0'));var util=require('util');var moment=require(_0x4249('0x1'));var BPromise=require(_0x4249('0x2'));var rs=require(_0x4249('0x3'));var fs=require('fs');var Redis=require(_0x4249('0x4'));var db=require(_0x4249('0x5'))['db'];var utils=require(_0x4249('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x4249('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4249('0x8')][_0x4249('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xed716a,_0x5b1b17,_0x326336){return new BPromise(function(_0x2b7934,_0x21060d){return client['request'](_0xed716a,_0x326336)['then'](function(_0x3efaa6){logger[_0x4249('0xa')](_0x4249('0xb'),_0x5b1b17,_0x4249('0xc'));logger[_0x4249('0xd')](_0x4249('0xe'),_0x5b1b17,_0x4249('0xc'),JSON['stringify'](_0x3efaa6));if(_0x3efaa6['error']){if(_0x3efaa6[_0x4249('0xf')]['code']===0x1f4){logger[_0x4249('0xf')](_0x4249('0xb'),_0x5b1b17,_0x3efaa6['error'][_0x4249('0x10')]);return _0x21060d(_0x3efaa6[_0x4249('0xf')]['message']);}logger[_0x4249('0xf')](_0x4249('0xb'),_0x5b1b17,_0x3efaa6[_0x4249('0xf')][_0x4249('0x10')]);return _0x2b7934(_0x3efaa6[_0x4249('0xf')][_0x4249('0x10')]);}else{logger['info'](_0x4249('0xb'),_0x5b1b17,_0x4249('0xc'));_0x2b7934(_0x3efaa6['result'][_0x4249('0x10')]);}})['catch'](function(_0x501e9c){logger['error'](_0x4249('0xb'),_0x5b1b17,_0x501e9c);_0x21060d(_0x501e9c);});});}
\ No newline at end of file
+var _0x7579=['message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1e76e8,_0x41ec55){var _0x2d7a1f=function(_0x15a0bd){while(--_0x15a0bd){_0x1e76e8['push'](_0x1e76e8['shift']());}};_0x2d7a1f(++_0x41ec55);}(_0x7579,0x1e2));var _0x9757=function(_0x4cbea8,_0xf5fde7){_0x4cbea8=_0x4cbea8-0x0;var _0x1ea1c7=_0x7579[_0x4cbea8];return _0x1ea1c7;};'use strict';var _=require(_0x9757('0x0'));var util=require(_0x9757('0x1'));var moment=require(_0x9757('0x2'));var BPromise=require(_0x9757('0x3'));var rs=require(_0x9757('0x4'));var fs=require('fs');var Redis=require(_0x9757('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9757('0x6'));var logger=require(_0x9757('0x7'))(_0x9757('0x8'));var config=require(_0x9757('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x9757('0xa')][_0x9757('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4757e9,_0x4b5446,_0x28a14a){return new BPromise(function(_0x51a1c8,_0x2d65dd){return client[_0x9757('0xc')](_0x4757e9,_0x28a14a)[_0x9757('0xd')](function(_0x5b5749){logger[_0x9757('0xe')](_0x9757('0xf'),_0x4b5446,_0x9757('0x10'));logger[_0x9757('0x11')](_0x9757('0x12'),_0x4b5446,_0x9757('0x10'),JSON[_0x9757('0x13')](_0x5b5749));if(_0x5b5749[_0x9757('0x14')]){if(_0x5b5749[_0x9757('0x14')][_0x9757('0x15')]===0x1f4){logger[_0x9757('0x14')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x4b5446,_0x5b5749[_0x9757('0x14')][_0x9757('0x16')]);return _0x2d65dd(_0x5b5749[_0x9757('0x14')]['message']);}logger[_0x9757('0x14')](_0x9757('0xf'),_0x4b5446,_0x5b5749[_0x9757('0x14')][_0x9757('0x16')]);return _0x51a1c8(_0x5b5749[_0x9757('0x14')][_0x9757('0x16')]);}else{logger[_0x9757('0xe')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x4b5446,_0x9757('0x10'));_0x51a1c8(_0x5b5749['result'][_0x9757('0x16')]);}})[_0x9757('0x17')](function(_0xad2a22){logger[_0x9757('0x14')](_0x9757('0xf'),_0x4b5446,_0xad2a22);_0x2d65dd(_0xad2a22);});});}
\ No newline at end of file
index f3393e8..330ca44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd027=['isAuthenticated','show','post','create','put','update','delete','destroy','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','index','/:id'];(function(_0x4706a6,_0x5a1c63){var _0x1bb705=function(_0x484ebb){while(--_0x484ebb){_0x4706a6['push'](_0x4706a6['shift']());}};_0x1bb705(++_0x5a1c63);}(_0xd027,0x197));var _0x7d02=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd027[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x7d02('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7d02('0x1'));var router=express[_0x7d02('0x2')]();var fs_extra=require(_0x7d02('0x3'));var auth=require(_0x7d02('0x4'));var interaction=require(_0x7d02('0x5'));var config=require(_0x7d02('0x6'));var controller=require(_0x7d02('0x7'));router[_0x7d02('0x8')]('/',auth['isAuthenticated'](),controller[_0x7d02('0x9')]);router[_0x7d02('0x8')](_0x7d02('0xa'),auth[_0x7d02('0xb')](),controller[_0x7d02('0xc')]);router[_0x7d02('0xd')]('/',auth[_0x7d02('0xb')](),controller[_0x7d02('0xe')]);router[_0x7d02('0xf')](_0x7d02('0xa'),auth[_0x7d02('0xb')](),controller[_0x7d02('0x10')]);router[_0x7d02('0x11')]('/:id',auth[_0x7d02('0xb')](),controller[_0x7d02('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xff83=['get','/:id','show','post','create','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index'];(function(_0x371fa3,_0x1f5c69){var _0x3ed36a=function(_0x462e77){while(--_0x462e77){_0x371fa3['push'](_0x371fa3['shift']());}};_0x3ed36a(++_0x1f5c69);}(_0xff83,0xee));var _0x3ff8=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xff83[_0x31e29a];return _0x32d892;};'use strict';var multer=require('multer');var util=require(_0x3ff8('0x0'));var path=require(_0x3ff8('0x1'));var timeout=require('connect-timeout');var express=require(_0x3ff8('0x2'));var router=express[_0x3ff8('0x3')]();var fs_extra=require(_0x3ff8('0x4'));var auth=require(_0x3ff8('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3ff8('0x6'));var controller=require('./pause.controller');router['get']('/',auth[_0x3ff8('0x7')](),controller[_0x3ff8('0x8')]);router[_0x3ff8('0x9')](_0x3ff8('0xa'),auth[_0x3ff8('0x7')](),controller[_0x3ff8('0xb')]);router[_0x3ff8('0xc')]('/',auth['isAuthenticated'](),controller[_0x3ff8('0xd')]);router[_0x3ff8('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x3ff8('0xf')]);router[_0x3ff8('0x10')](_0x3ff8('0xa'),auth[_0x3ff8('0x7')](),controller[_0x3ff8('0x11')]);module[_0x3ff8('0x12')]=router;
\ No newline at end of file
index b4665ea..aee307e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2162=['sequelize','exports','STRING'];(function(_0xaa0d3a,_0xa4f8c9){var _0x27725b=function(_0x5c6689){while(--_0x5c6689){_0xaa0d3a['push'](_0xaa0d3a['shift']());}};_0x27725b(++_0xa4f8c9);}(_0x2162,0xfc));var _0x2216=function(_0x10a0e7,_0x5cd95d){_0x10a0e7=_0x10a0e7-0x0;var _0x293b07=_0x2162[_0x10a0e7];return _0x293b07;};'use strict';var Sequelize=require(_0x2216('0x0'));module[_0x2216('0x1')]={'name':{'type':Sequelize[_0x2216('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x2216('0x2')]}};
\ No newline at end of file
+var _0x59fa=['exports','STRING','name','sequelize'];(function(_0x524ee8,_0x3f8972){var _0x56d0fa=function(_0xc1451e){while(--_0xc1451e){_0x524ee8['push'](_0x524ee8['shift']());}};_0x56d0fa(++_0x3f8972);}(_0x59fa,0x15f));var _0xa59f=function(_0xb9f8ff,_0x1f32b7){_0xb9f8ff=_0xb9f8ff-0x0;var _0x3052d7=_0x59fa[_0xb9f8ff];return _0x3052d7;};'use strict';var Sequelize=require(_0xa59f('0x0'));module[_0xa59f('0x1')]={'name':{'type':Sequelize[_0xa59f('0x2')],'unique':_0xa59f('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xa59f('0x2')]}};
\ No newline at end of file
index fb22225..edf5b27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeec=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','count','offset','set','Content-Range','reject','update','then','get','Pauses','UserProfileResource','destroy','end','stack','name','index','map','Pause','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','options','includeAll','findAll','rows','catch','show','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse'];(function(_0x2dd1e5,_0x305d0d){var _0x180af0=function(_0x53339b){while(--_0x53339b){_0x2dd1e5['push'](_0x2dd1e5['shift']());}};_0x180af0(++_0x305d0d);}(_0xfeec,0x8f));var _0xcfee=function(_0x4fe33b,_0x38b44f){_0x4fe33b=_0x4fe33b-0x0;var _0x28f23f=_0xfeec[_0x4fe33b];return _0x28f23f;};'use strict';var emlformat=require(_0xcfee('0x0'));var rimraf=require(_0xcfee('0x1'));var zipdir=require(_0xcfee('0x2'));var jsonpatch=require(_0xcfee('0x3'));var rp=require('request-promise');var moment=require(_0xcfee('0x4'));var BPromise=require(_0xcfee('0x5'));var Mustache=require(_0xcfee('0x6'));var util=require(_0xcfee('0x7'));var path=require('path');var sox=require(_0xcfee('0x8'));var csv=require(_0xcfee('0x9'));var ejs=require(_0xcfee('0xa'));var fs=require('fs');var fs_extra=require(_0xcfee('0xb'));var _=require(_0xcfee('0xc'));var squel=require(_0xcfee('0xd'));var crypto=require('crypto');var jsforce=require(_0xcfee('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xcfee('0x9'));var querystring=require(_0xcfee('0xf'));var Papa=require(_0xcfee('0x10'));var Redis=require(_0xcfee('0x11'));var authService=require(_0xcfee('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xcfee('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xcfee('0x14'));var config=require(_0xcfee('0x15'));var licenseUtil=require(_0xcfee('0x16'));var db=require(_0xcfee('0x17'))['db'];function respondWithStatusCode(_0xe1a65b,_0x5809f6){_0x5809f6=_0x5809f6||0xcc;return function(_0x1a2e2d){if(_0x1a2e2d){return _0xe1a65b[_0xcfee('0x18')](_0x5809f6);}return _0xe1a65b[_0xcfee('0x19')](_0x5809f6)['end']();};}function respondWithResult(_0x2b7ffb,_0x416a45){_0x416a45=_0x416a45||0xc8;return function(_0x273056){if(_0x273056){return _0x2b7ffb[_0xcfee('0x19')](_0x416a45)[_0xcfee('0x1a')](_0x273056);}};}function respondWithFilteredResult(_0x555564,_0x269aa5){return function(_0x45266a){if(_0x45266a){var _0x38054d=typeof _0x269aa5['offset']==='undefined'&&typeof _0x269aa5['limit']==='undefined';var _0x26cb51=_0x45266a[_0xcfee('0x1b')];var _0x267841=_0x38054d?0x0:_0x269aa5[_0xcfee('0x1c')];var _0x24974d=_0x38054d?_0x45266a[_0xcfee('0x1b')]:_0x269aa5['offset']+_0x269aa5['limit'];var _0x51307a;if(_0x24974d>=_0x26cb51){_0x24974d=_0x26cb51;_0x51307a=0xc8;}else{_0x51307a=0xce;}_0x555564[_0xcfee('0x19')](_0x51307a);return _0x555564[_0xcfee('0x1d')](_0xcfee('0x1e'),_0x267841+'-'+_0x24974d+'/'+_0x26cb51)[_0xcfee('0x1a')](_0x45266a);}return null;};}function patchUpdates(_0x1c73da){return function(_0x481346){try{jsonpatch['apply'](_0x481346,_0x1c73da,!![]);}catch(_0xfd7bc3){return BPromise[_0xcfee('0x1f')](_0xfd7bc3);}return _0x481346['save']();};}function saveUpdates(_0x264699,_0x4dcb90){return function(_0x5c8d7e){if(_0x5c8d7e){return _0x5c8d7e[_0xcfee('0x20')](_0x264699)['then'](function(_0x12de29){return _0x12de29;});}return null;};}function removeEntity(_0x28548e,_0x320243){return function(_0x139598){if(_0x139598){return _0x139598['destroy']()[_0xcfee('0x21')](function(){var _0x563e9c=_0x139598[_0xcfee('0x22')]({'plain':!![]});var _0x5e30b7=_0xcfee('0x23');return db[_0xcfee('0x24')][_0xcfee('0x25')]({'where':{'type':_0x5e30b7,'resourceId':_0x563e9c['id']}})[_0xcfee('0x21')](function(){return _0x139598;});})[_0xcfee('0x21')](function(){_0x28548e[_0xcfee('0x19')](0xcc)[_0xcfee('0x26')]();});}};}function handleEntityNotFound(_0x352431,_0x345f78){return function(_0x1be2e1){if(!_0x1be2e1){_0x352431[_0xcfee('0x18')](0x194);}return _0x1be2e1;};}function handleError(_0x37c2a8,_0x1781bf){_0x1781bf=_0x1781bf||0x1f4;return function(_0x17e931){logger['error'](_0x17e931[_0xcfee('0x27')]);if(_0x17e931[_0xcfee('0x28')]){delete _0x17e931[_0xcfee('0x28')];}_0x37c2a8[_0xcfee('0x19')](_0x1781bf)['send'](_0x17e931);};}exports[_0xcfee('0x29')]=function(_0xfa447e,_0x16f64c){var _0x7d268b={},_0x298d76={},_0x993b53={'count':0x0,'rows':[]};var _0x538f77=_[_0xcfee('0x2a')](db[_0xcfee('0x2b')][_0xcfee('0x2c')],function(_0x3a5082){return{'name':_0x3a5082[_0xcfee('0x2d')],'type':_0x3a5082[_0xcfee('0x2e')][_0xcfee('0x2f')]};});_0x298d76[_0xcfee('0x30')]=_[_0xcfee('0x2a')](_0x538f77,'name');_0x298d76[_0xcfee('0x31')]=_[_0xcfee('0x32')](_0xfa447e[_0xcfee('0x31')]);_0x298d76[_0xcfee('0x33')]=_[_0xcfee('0x34')](_0x298d76[_0xcfee('0x30')],_0x298d76[_0xcfee('0x31')]);_0x7d268b['attributes']=_[_0xcfee('0x34')](_0x298d76[_0xcfee('0x30')],qs[_0xcfee('0x35')](_0xfa447e[_0xcfee('0x31')][_0xcfee('0x35')]));_0x7d268b[_0xcfee('0x36')]=_0x7d268b[_0xcfee('0x36')]['length']?_0x7d268b[_0xcfee('0x36')]:_0x298d76['model'];if(!_0xfa447e[_0xcfee('0x31')][_0xcfee('0x37')](_0xcfee('0x38'))){_0x7d268b[_0xcfee('0x39')]=qs[_0xcfee('0x39')](_0xfa447e[_0xcfee('0x31')][_0xcfee('0x39')]);_0x7d268b[_0xcfee('0x1c')]=qs[_0xcfee('0x1c')](_0xfa447e[_0xcfee('0x31')][_0xcfee('0x1c')]);}_0x7d268b[_0xcfee('0x3a')]=qs[_0xcfee('0x3b')](_0xfa447e[_0xcfee('0x31')][_0xcfee('0x3b')]);_0x7d268b[_0xcfee('0x3c')]=qs['filters'](_[_0xcfee('0x3d')](_0xfa447e[_0xcfee('0x31')],_0x298d76['filters']),_0x538f77);if(_0xfa447e['query']['filter']){_0x7d268b[_0xcfee('0x3c')]=_[_0xcfee('0x3e')](_0x7d268b[_0xcfee('0x3c')],{'$or':_[_0xcfee('0x2a')](_0x538f77,function(_0x1425bb){if(_0x1425bb[_0xcfee('0x2e')]!=='VIRTUAL'){var _0x7b10b={};_0x7b10b[_0x1425bb[_0xcfee('0x28')]]={'$like':'%'+_0xfa447e[_0xcfee('0x31')]['filter']+'%'};return _0x7b10b;}})});}_0x7d268b=_['merge']({},_0x7d268b,_0xfa447e[_0xcfee('0x3f')]);var _0xdea1={'where':_0x7d268b[_0xcfee('0x3c')]};return db['Pause'][_0xcfee('0x1b')](_0xdea1)['then'](function(_0x31366e){_0x993b53[_0xcfee('0x1b')]=_0x31366e;if(_0xfa447e[_0xcfee('0x31')][_0xcfee('0x40')]){_0x7d268b['include']=[{'all':!![]}];}return db[_0xcfee('0x2b')][_0xcfee('0x41')](_0x7d268b);})[_0xcfee('0x21')](function(_0x47a9cb){_0x993b53[_0xcfee('0x42')]=_0x47a9cb;return _0x993b53;})[_0xcfee('0x21')](respondWithFilteredResult(_0x16f64c,_0x7d268b))[_0xcfee('0x43')](handleError(_0x16f64c,null));};exports[_0xcfee('0x44')]=function(_0x1c8a2e,_0x6ba1f8){var _0x247ff6={'raw':!![],'where':{'id':_0x1c8a2e['params']['id']}},_0x5623a6={};_0x5623a6[_0xcfee('0x30')]=_['keys'](db[_0xcfee('0x2b')][_0xcfee('0x2c')]);_0x5623a6[_0xcfee('0x31')]=_[_0xcfee('0x32')](_0x1c8a2e[_0xcfee('0x31')]);_0x5623a6[_0xcfee('0x33')]=_[_0xcfee('0x34')](_0x5623a6[_0xcfee('0x30')],_0x5623a6[_0xcfee('0x31')]);_0x247ff6[_0xcfee('0x36')]=_[_0xcfee('0x34')](_0x5623a6[_0xcfee('0x30')],qs['fields'](_0x1c8a2e[_0xcfee('0x31')][_0xcfee('0x35')]));_0x247ff6[_0xcfee('0x36')]=_0x247ff6[_0xcfee('0x36')][_0xcfee('0x45')]?_0x247ff6['attributes']:_0x5623a6[_0xcfee('0x30')];if(_0x1c8a2e[_0xcfee('0x31')][_0xcfee('0x40')]){_0x247ff6['include']=[{'all':!![]}];}_0x247ff6=_[_0xcfee('0x3e')]({},_0x247ff6,_0x1c8a2e[_0xcfee('0x3f')]);return db[_0xcfee('0x2b')]['find'](_0x247ff6)[_0xcfee('0x21')](handleEntityNotFound(_0x6ba1f8,null))[_0xcfee('0x21')](respondWithResult(_0x6ba1f8,null))[_0xcfee('0x43')](handleError(_0x6ba1f8,null));};exports['create']=function(_0x113274,_0x218473){return db[_0xcfee('0x2b')][_0xcfee('0x46')](_0x113274[_0xcfee('0x47')],{})['then'](function(_0x68ccf7){var _0x583d0b=_0x113274[_0xcfee('0x48')][_0xcfee('0x22')]({'plain':!![]});if(!_0x583d0b)throw new Error(_0xcfee('0x49'));if(_0x583d0b[_0xcfee('0x4a')]===_0xcfee('0x48')){var _0x137aed=_0x68ccf7[_0xcfee('0x22')]({'plain':!![]});var _0x1a6aac='Pauses';return db[_0xcfee('0x4b')][_0xcfee('0x4c')]({'where':{'name':_0x1a6aac,'userProfileId':_0x583d0b[_0xcfee('0x4d')]},'raw':!![]})[_0xcfee('0x21')](function(_0x5dc969){if(_0x5dc969&&_0x5dc969['autoAssociation']===0x0){return db[_0xcfee('0x24')][_0xcfee('0x46')]({'name':_0x137aed[_0xcfee('0x28')],'resourceId':_0x137aed['id'],'type':_0x5dc969[_0xcfee('0x28')],'sectionId':_0x5dc969['id']},{})[_0xcfee('0x21')](function(){return _0x68ccf7;});}else{return _0x68ccf7;}})[_0xcfee('0x43')](function(_0x2264f3){logger['error'](_0xcfee('0x4e'),_0x2264f3);throw _0x2264f3;});}return _0x68ccf7;})[_0xcfee('0x21')](respondWithResult(_0x218473,0xc9))[_0xcfee('0x43')](handleError(_0x218473,null));};exports[_0xcfee('0x20')]=function(_0x45d55b,_0x3f43e4){if(_0x45d55b['body']['id']){delete _0x45d55b[_0xcfee('0x47')]['id'];}return db[_0xcfee('0x2b')][_0xcfee('0x4c')]({'where':{'id':_0x45d55b[_0xcfee('0x4f')]['id']}})[_0xcfee('0x21')](handleEntityNotFound(_0x3f43e4,null))['then'](saveUpdates(_0x45d55b[_0xcfee('0x47')],null))[_0xcfee('0x21')](respondWithResult(_0x3f43e4,null))[_0xcfee('0x43')](handleError(_0x3f43e4,null));};exports[_0xcfee('0x25')]=function(_0x1abf4f,_0x59f8de){return db['Pause'][_0xcfee('0x4c')]({'where':{'id':_0x1abf4f[_0xcfee('0x4f')]['id']}})['then'](handleEntityNotFound(_0x59f8de,null))[_0xcfee('0x21')](removeEntity(_0x59f8de,null))[_0xcfee('0x43')](handleError(_0x59f8de,null));};
\ No newline at end of file
+var _0xffc3=['destroy','error','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','VIRTUAL','merge','options','count','includeAll','include','Pause','findAll','rows','catch','show','params','find','create','body','user','role','Pauses','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','bluebird','mustache','util','path','to-csv','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','get','UserProfileResource'];(function(_0x265003,_0xf0f023){var _0x33c743=function(_0x326a5d){while(--_0x326a5d){_0x265003['push'](_0x265003['shift']());}};_0x33c743(++_0xf0f023);}(_0xffc3,0xd8));var _0x3ffc=function(_0x3eed67,_0x30196a){_0x3eed67=_0x3eed67-0x0;var _0x5112de=_0xffc3[_0x3eed67];return _0x5112de;};'use strict';var emlformat=require(_0x3ffc('0x0'));var rimraf=require(_0x3ffc('0x1'));var zipdir=require(_0x3ffc('0x2'));var jsonpatch=require(_0x3ffc('0x3'));var rp=require(_0x3ffc('0x4'));var moment=require(_0x3ffc('0x5'));var BPromise=require(_0x3ffc('0x6'));var Mustache=require(_0x3ffc('0x7'));var util=require(_0x3ffc('0x8'));var path=require(_0x3ffc('0x9'));var sox=require('sox');var csv=require(_0x3ffc('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3ffc('0xb'));var squel=require(_0x3ffc('0xc'));var crypto=require('crypto');var jsforce=require(_0x3ffc('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3ffc('0xa'));var querystring=require(_0x3ffc('0xe'));var Papa=require('papaparse');var Redis=require(_0x3ffc('0xf'));var authService=require(_0x3ffc('0x10'));var qs=require(_0x3ffc('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3ffc('0x12'));var logger=require(_0x3ffc('0x13'))(_0x3ffc('0x14'));var utils=require(_0x3ffc('0x15'));var config=require(_0x3ffc('0x16'));var licenseUtil=require(_0x3ffc('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x29ae37,_0x3267d6){_0x3267d6=_0x3267d6||0xcc;return function(_0xa0a947){if(_0xa0a947){return _0x29ae37['sendStatus'](_0x3267d6);}return _0x29ae37[_0x3ffc('0x18')](_0x3267d6)[_0x3ffc('0x19')]();};}function respondWithResult(_0xc021d7,_0xcd34bd){_0xcd34bd=_0xcd34bd||0xc8;return function(_0x54d9ca){if(_0x54d9ca){return _0xc021d7['status'](_0xcd34bd)[_0x3ffc('0x1a')](_0x54d9ca);}};}function respondWithFilteredResult(_0x1951bd,_0xf839ad){return function(_0x578a1d){if(_0x578a1d){var _0x42a4de=typeof _0xf839ad[_0x3ffc('0x1b')]===_0x3ffc('0x1c')&&typeof _0xf839ad[_0x3ffc('0x1d')]===_0x3ffc('0x1c');var _0x39ac81=_0x578a1d['count'];var _0x377b42=_0x42a4de?0x0:_0xf839ad[_0x3ffc('0x1b')];var _0x430bd5=_0x42a4de?_0x578a1d['count']:_0xf839ad[_0x3ffc('0x1b')]+_0xf839ad[_0x3ffc('0x1d')];var _0x474aa2;if(_0x430bd5>=_0x39ac81){_0x430bd5=_0x39ac81;_0x474aa2=0xc8;}else{_0x474aa2=0xce;}_0x1951bd[_0x3ffc('0x18')](_0x474aa2);return _0x1951bd[_0x3ffc('0x1e')](_0x3ffc('0x1f'),_0x377b42+'-'+_0x430bd5+'/'+_0x39ac81)['json'](_0x578a1d);}return null;};}function patchUpdates(_0x1a654a){return function(_0x4f3cdf){try{jsonpatch[_0x3ffc('0x20')](_0x4f3cdf,_0x1a654a,!![]);}catch(_0x365346){return BPromise[_0x3ffc('0x21')](_0x365346);}return _0x4f3cdf[_0x3ffc('0x22')]();};}function saveUpdates(_0x727f7e,_0x4c514f){return function(_0x431bc7){if(_0x431bc7){return _0x431bc7[_0x3ffc('0x23')](_0x727f7e)[_0x3ffc('0x24')](function(_0x3e5441){return _0x3e5441;});}return null;};}function removeEntity(_0x3417d5,_0x16d949){return function(_0x4b7c85){if(_0x4b7c85){return _0x4b7c85['destroy']()[_0x3ffc('0x24')](function(){var _0x52de45=_0x4b7c85[_0x3ffc('0x25')]({'plain':!![]});var _0x12cb0a='Pauses';return db[_0x3ffc('0x26')][_0x3ffc('0x27')]({'where':{'type':_0x12cb0a,'resourceId':_0x52de45['id']}})['then'](function(){return _0x4b7c85;});})[_0x3ffc('0x24')](function(){_0x3417d5[_0x3ffc('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x429d94,_0x516172){return function(_0x17c0be){if(!_0x17c0be){_0x429d94['sendStatus'](0x194);}return _0x17c0be;};}function handleError(_0x5cd36c,_0x331e23){_0x331e23=_0x331e23||0x1f4;return function(_0x2d2b43){logger[_0x3ffc('0x28')](_0x2d2b43['stack']);if(_0x2d2b43[_0x3ffc('0x29')]){delete _0x2d2b43[_0x3ffc('0x29')];}_0x5cd36c[_0x3ffc('0x18')](_0x331e23)[_0x3ffc('0x2a')](_0x2d2b43);};}exports[_0x3ffc('0x2b')]=function(_0x2bc232,_0x4c65d8){var _0x4a32db={},_0xee46dc={},_0x410482={'count':0x0,'rows':[]};var _0x6bf4bd=_['map'](db['Pause'][_0x3ffc('0x2c')],function(_0x51397f){return{'name':_0x51397f[_0x3ffc('0x2d')],'type':_0x51397f[_0x3ffc('0x2e')][_0x3ffc('0x2f')]};});_0xee46dc[_0x3ffc('0x30')]=_[_0x3ffc('0x31')](_0x6bf4bd,_0x3ffc('0x29'));_0xee46dc[_0x3ffc('0x32')]=_[_0x3ffc('0x33')](_0x2bc232[_0x3ffc('0x32')]);_0xee46dc[_0x3ffc('0x34')]=_[_0x3ffc('0x35')](_0xee46dc['model'],_0xee46dc[_0x3ffc('0x32')]);_0x4a32db['attributes']=_[_0x3ffc('0x35')](_0xee46dc['model'],qs[_0x3ffc('0x36')](_0x2bc232['query'][_0x3ffc('0x36')]));_0x4a32db[_0x3ffc('0x37')]=_0x4a32db[_0x3ffc('0x37')][_0x3ffc('0x38')]?_0x4a32db[_0x3ffc('0x37')]:_0xee46dc[_0x3ffc('0x30')];if(!_0x2bc232[_0x3ffc('0x32')][_0x3ffc('0x39')](_0x3ffc('0x3a'))){_0x4a32db[_0x3ffc('0x1d')]=qs['limit'](_0x2bc232[_0x3ffc('0x32')][_0x3ffc('0x1d')]);_0x4a32db[_0x3ffc('0x1b')]=qs[_0x3ffc('0x1b')](_0x2bc232[_0x3ffc('0x32')][_0x3ffc('0x1b')]);}_0x4a32db[_0x3ffc('0x3b')]=qs['sort'](_0x2bc232[_0x3ffc('0x32')]['sort']);_0x4a32db[_0x3ffc('0x3c')]=qs['filters'](_[_0x3ffc('0x3d')](_0x2bc232[_0x3ffc('0x32')],_0xee46dc[_0x3ffc('0x34')]),_0x6bf4bd);if(_0x2bc232[_0x3ffc('0x32')][_0x3ffc('0x3e')]){_0x4a32db['where']=_['merge'](_0x4a32db[_0x3ffc('0x3c')],{'$or':_[_0x3ffc('0x31')](_0x6bf4bd,function(_0x2a572e){if(_0x2a572e['type']!==_0x3ffc('0x3f')){var _0x2d4884={};_0x2d4884[_0x2a572e[_0x3ffc('0x29')]]={'$like':'%'+_0x2bc232[_0x3ffc('0x32')][_0x3ffc('0x3e')]+'%'};return _0x2d4884;}})});}_0x4a32db=_[_0x3ffc('0x40')]({},_0x4a32db,_0x2bc232[_0x3ffc('0x41')]);var _0x6baa65={'where':_0x4a32db[_0x3ffc('0x3c')]};return db['Pause']['count'](_0x6baa65)[_0x3ffc('0x24')](function(_0x512954){_0x410482[_0x3ffc('0x42')]=_0x512954;if(_0x2bc232['query'][_0x3ffc('0x43')]){_0x4a32db[_0x3ffc('0x44')]=[{'all':!![]}];}return db[_0x3ffc('0x45')][_0x3ffc('0x46')](_0x4a32db);})[_0x3ffc('0x24')](function(_0x1dc61){_0x410482[_0x3ffc('0x47')]=_0x1dc61;return _0x410482;})[_0x3ffc('0x24')](respondWithFilteredResult(_0x4c65d8,_0x4a32db))[_0x3ffc('0x48')](handleError(_0x4c65d8,null));};exports[_0x3ffc('0x49')]=function(_0xab5c92,_0x36ef49){var _0x18b3c4={'raw':!![],'where':{'id':_0xab5c92[_0x3ffc('0x4a')]['id']}},_0x2303e6={};_0x2303e6['model']=_[_0x3ffc('0x33')](db[_0x3ffc('0x45')][_0x3ffc('0x2c')]);_0x2303e6['query']=_['keys'](_0xab5c92[_0x3ffc('0x32')]);_0x2303e6['filters']=_['intersection'](_0x2303e6[_0x3ffc('0x30')],_0x2303e6['query']);_0x18b3c4[_0x3ffc('0x37')]=_['intersection'](_0x2303e6[_0x3ffc('0x30')],qs['fields'](_0xab5c92['query'][_0x3ffc('0x36')]));_0x18b3c4[_0x3ffc('0x37')]=_0x18b3c4[_0x3ffc('0x37')][_0x3ffc('0x38')]?_0x18b3c4[_0x3ffc('0x37')]:_0x2303e6[_0x3ffc('0x30')];if(_0xab5c92[_0x3ffc('0x32')][_0x3ffc('0x43')]){_0x18b3c4[_0x3ffc('0x44')]=[{'all':!![]}];}_0x18b3c4=_[_0x3ffc('0x40')]({},_0x18b3c4,_0xab5c92[_0x3ffc('0x41')]);return db[_0x3ffc('0x45')][_0x3ffc('0x4b')](_0x18b3c4)[_0x3ffc('0x24')](handleEntityNotFound(_0x36ef49,null))['then'](respondWithResult(_0x36ef49,null))['catch'](handleError(_0x36ef49,null));};exports[_0x3ffc('0x4c')]=function(_0x4a72b2,_0x5b35fd){return db[_0x3ffc('0x45')][_0x3ffc('0x4c')](_0x4a72b2[_0x3ffc('0x4d')],{})[_0x3ffc('0x24')](function(_0x34a147){var _0x1785da=_0x4a72b2[_0x3ffc('0x4e')]['get']({'plain':!![]});if(!_0x1785da)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1785da[_0x3ffc('0x4f')]===_0x3ffc('0x4e')){var _0x380118=_0x34a147[_0x3ffc('0x25')]({'plain':!![]});var _0x22cad0=_0x3ffc('0x50');return db[_0x3ffc('0x51')][_0x3ffc('0x4b')]({'where':{'name':_0x22cad0,'userProfileId':_0x1785da[_0x3ffc('0x52')]},'raw':!![]})[_0x3ffc('0x24')](function(_0x58fa4a){if(_0x58fa4a&&_0x58fa4a[_0x3ffc('0x53')]===0x0){return db[_0x3ffc('0x26')][_0x3ffc('0x4c')]({'name':_0x380118[_0x3ffc('0x29')],'resourceId':_0x380118['id'],'type':_0x58fa4a['name'],'sectionId':_0x58fa4a['id']},{})[_0x3ffc('0x24')](function(){return _0x34a147;});}else{return _0x34a147;}})[_0x3ffc('0x48')](function(_0x382080){logger['error'](_0x3ffc('0x54'),_0x382080);throw _0x382080;});}return _0x34a147;})[_0x3ffc('0x24')](respondWithResult(_0x5b35fd,0xc9))[_0x3ffc('0x48')](handleError(_0x5b35fd,null));};exports[_0x3ffc('0x23')]=function(_0x2449ca,_0x40b1b5){if(_0x2449ca[_0x3ffc('0x4d')]['id']){delete _0x2449ca[_0x3ffc('0x4d')]['id'];}return db[_0x3ffc('0x45')][_0x3ffc('0x4b')]({'where':{'id':_0x2449ca[_0x3ffc('0x4a')]['id']}})[_0x3ffc('0x24')](handleEntityNotFound(_0x40b1b5,null))[_0x3ffc('0x24')](saveUpdates(_0x2449ca[_0x3ffc('0x4d')],null))[_0x3ffc('0x24')](respondWithResult(_0x40b1b5,null))[_0x3ffc('0x48')](handleError(_0x40b1b5,null));};exports[_0x3ffc('0x27')]=function(_0xa1cb0a,_0x52a9e0){return db[_0x3ffc('0x45')][_0x3ffc('0x4b')]({'where':{'id':_0xa1cb0a[_0x3ffc('0x4a')]['id']}})[_0x3ffc('0x24')](handleEntityNotFound(_0x52a9e0,null))[_0x3ffc('0x24')](removeEntity(_0x52a9e0,null))[_0x3ffc('0x48')](handleError(_0x52a9e0,null));};
\ No newline at end of file
index 3a41b4c..ff73e62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['./pause.attributes','exports','define','tools_pauses','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x1a8f86,_0x5ed9c4){var _0x20d876=function(_0x596e1b){while(--_0x596e1b){_0x1a8f86['push'](_0x1a8f86['shift']());}};_0x20d876(++_0x5ed9c4);}(_0x55ca,0x126));var _0xa55c=function(_0x396466,_0xe9857b){_0x396466=_0x396466-0x0;var _0x5e9ab4=_0x55ca[_0x396466];return _0x5e9ab4;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('Pause',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55ca=['./pause.attributes','exports','define','tools_pauses','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x254abd,_0x1ab7f0){var _0x31bf1b=function(_0x447fd8){while(--_0x447fd8){_0x254abd['push'](_0x254abd['shift']());}};_0x31bf1b(++_0x1ab7f0);}(_0x55ca,0x126));var _0xa55c=function(_0x1989e2,_0x5a3b47){_0x1989e2=_0x1989e2-0x0;var _0x218d38=_0x55ca[_0x1989e2];return _0x218d38;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('Pause',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9f84395..8ee42d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x287a62,_0x1e8043){var _0x2d04c1=function(_0x10aaae){while(--_0x10aaae){_0x287a62['push'](_0x287a62['shift']());}};_0x2d04c1(++_0x1e8043);}(_0x7a54,0x106));var _0x47a5=function(_0x1c8f48,_0x556173){_0x1c8f48=_0x1c8f48-0x0;var _0x12aeb8=_0x7a54[_0x1c8f48];return _0x12aeb8;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _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(_0x8d4dd4,_0x1b5ae3){var _0x84f319=function(_0xbedb07){while(--_0xbedb07){_0x8d4dd4['push'](_0x8d4dd4['shift']());}};_0x84f319(++_0x1b5ae3);}(_0xb10b,0x12a));var _0xbb10=function(_0xd0e677,_0x42939d){_0xd0e677=_0xd0e677-0x0;var _0x18aeb9=_0xb10b[_0xd0e677];return _0x18aeb9;};'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 b76c905..409eb66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6334=['../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','/:id','show','/:id/download','download','diskStorage','join','root','format','%s-%s%s','extname','now','originalname','post','file','upload','webhookPost','put','update','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x5e65a0,_0xa32677){var _0x5ebb07=function(_0x3f87b2){while(--_0x3f87b2){_0x5e65a0['push'](_0x5e65a0['shift']());}};_0x5ebb07(++_0xa32677);}(_0x6334,0x119));var _0x4633=function(_0x1a5687,_0xc2188f){_0x1a5687=_0x1a5687-0x0;var _0x257d5c=_0x6334[_0x1a5687];return _0x257d5c;};'use strict';var multer=require(_0x4633('0x0'));var util=require(_0x4633('0x1'));var path=require(_0x4633('0x2'));var timeout=require(_0x4633('0x3'));var express=require(_0x4633('0x4'));var router=express[_0x4633('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4633('0x6'));var interaction=require(_0x4633('0x7'));var config=require(_0x4633('0x8'));var controller=require(_0x4633('0x9'));router[_0x4633('0xa')]('/',auth[_0x4633('0xb')](),controller[_0x4633('0xc')]);router['get'](_0x4633('0xd'),controller['webhookGet']);router[_0x4633('0xa')](_0x4633('0xe'),auth['isAuthenticated'](),controller[_0x4633('0xf')]);router[_0x4633('0xa')](_0x4633('0x10'),auth['isAuthenticated'](),controller[_0x4633('0x11')]);var upload=multer({'storage':multer[_0x4633('0x12')]({'destination':function(_0x5157a7,_0x6a63b,_0x3d5182){_0x3d5182(null,path[_0x4633('0x13')](config[_0x4633('0x14')],'server/files/plugins'));},'filename':function(_0x73b5e4,_0xad405,_0x438e87){_0xad405['originalname']=_0xad405['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x438e87(null,util[_0x4633('0x15')](_0x4633('0x16'),path['basename'](_0xad405['originalname'],path[_0x4633('0x17')](_0xad405['originalname'])),Date[_0x4633('0x18')](),path[_0x4633('0x17')](_0xad405[_0x4633('0x19')])));}})});router[_0x4633('0x1a')]('/',upload['single'](_0x4633('0x1b')),controller[_0x4633('0x1c')]);router[_0x4633('0x1a')]('/webhook',controller[_0x4633('0x1d')]);router[_0x4633('0x1e')](_0x4633('0xe'),auth[_0x4633('0xb')](),controller[_0x4633('0x1f')]);router['delete'](_0x4633('0xe'),auth[_0x4633('0xb')](),controller['delete']);module['exports']=router;
\ No newline at end of file
+var _0x579c=['../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','webhookGet','/:id','show','/:id/download','diskStorage','join','root','server/files/plugins','originalname','replace','%s-%s%s','extname','file','upload','post','/webhook','webhookPost','put','update','delete','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x8e7351,_0x34dfa3){var _0x8250f3=function(_0x5f0969){while(--_0x5f0969){_0x8e7351['push'](_0x8e7351['shift']());}};_0x8250f3(++_0x34dfa3);}(_0x579c,0xda));var _0xc579=function(_0x4e5f74,_0x18bf46){_0x4e5f74=_0x4e5f74-0x0;var _0x44fcc6=_0x579c[_0x4e5f74];return _0x44fcc6;};'use strict';var multer=require(_0xc579('0x0'));var util=require(_0xc579('0x1'));var path=require(_0xc579('0x2'));var timeout=require(_0xc579('0x3'));var express=require(_0xc579('0x4'));var router=express['Router']();var fs_extra=require(_0xc579('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc579('0x6'));var config=require(_0xc579('0x7'));var controller=require(_0xc579('0x8'));router[_0xc579('0x9')]('/',auth[_0xc579('0xa')](),controller[_0xc579('0xb')]);router[_0xc579('0x9')]('/webhook',controller[_0xc579('0xc')]);router[_0xc579('0x9')](_0xc579('0xd'),auth[_0xc579('0xa')](),controller[_0xc579('0xe')]);router[_0xc579('0x9')](_0xc579('0xf'),auth[_0xc579('0xa')](),controller['download']);var upload=multer({'storage':multer[_0xc579('0x10')]({'destination':function(_0x2048bc,_0x17e37f,_0x3684b7){_0x3684b7(null,path[_0xc579('0x11')](config[_0xc579('0x12')],_0xc579('0x13')));},'filename':function(_0x1905b7,_0x421812,_0x441028){_0x421812[_0xc579('0x14')]=_0x421812['originalname'][_0xc579('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x441028(null,util['format'](_0xc579('0x16'),path['basename'](_0x421812[_0xc579('0x14')],path['extname'](_0x421812[_0xc579('0x14')])),Date['now'](),path[_0xc579('0x17')](_0x421812[_0xc579('0x14')])));}})});router['post']('/',upload['single'](_0xc579('0x18')),controller[_0xc579('0x19')]);router[_0xc579('0x1a')](_0xc579('0x1b'),controller[_0xc579('0x1c')]);router[_0xc579('0x1d')](_0xc579('0xd'),auth[_0xc579('0xa')](),controller[_0xc579('0x1e')]);router[_0xc579('0x1f')]('/:id',auth[_0xc579('0xa')](),controller[_0xc579('0x1f')]);module['exports']=router;
\ No newline at end of file
index 9133ff4..3b1a533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x668d=['BOOLEAN','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','STRING','sequelize','ENUM','html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'];(function(_0x2a7b59,_0x2996f3){var _0x1f3a82=function(_0x38b6b4){while(--_0x38b6b4){_0x2a7b59['push'](_0x2a7b59['shift']());}};_0x1f3a82(++_0x2996f3);}(_0x668d,0x7e));var _0xd668=function(_0x149474,_0x42adca){_0x149474=_0x149474-0x0;var _0x3bb539=_0x668d[_0x149474];return _0x3bb539;};'use strict';var Sequelize=require(_0xd668('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xd668('0x1')](_0xd668('0x2'),_0xd668('0x3'))},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize[_0xd668('0x4')]},'path':{'type':Sequelize['STRING'],'comment':_0xd668('0x5')},'active':{'type':Sequelize[_0xd668('0x6')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize[_0xd668('0x1')]('adminOnly',_0xd668('0x7'),_0xd668('0x8'),_0xd668('0x9')),'defaultValue':_0xd668('0x8'),'comment':_0xd668('0xa')},'icon':{'type':Sequelize[_0xd668('0xb')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0xd668('0xb')]},'scriptName':{'type':Sequelize[_0xd668('0xb')]},'scriptPath':{'type':Sequelize[_0xd668('0xb')]}};
\ No newline at end of file
+var _0xc644=['always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','html','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','agentOnly'];(function(_0x5ca353,_0x21eb37){var _0x4f2fe5=function(_0x14cd1b){while(--_0x14cd1b){_0x5ca353['push'](_0x5ca353['shift']());}};_0x4f2fe5(++_0x21eb37);}(_0xc644,0x123));var _0x4c64=function(_0x1a32fe,_0xdab6ac){_0x1a32fe=_0x1a32fe-0x0;var _0x1abca6=_0xc644[_0x1a32fe];return _0x1abca6;};'use strict';var Sequelize=require(_0x4c64('0x0'));module[_0x4c64('0x1')]={'name':{'type':Sequelize[_0x4c64('0x2')]},'type':{'type':Sequelize['ENUM'](_0x4c64('0x3'),'script')},'description':{'type':Sequelize[_0x4c64('0x4')]},'version':{'type':Sequelize[_0x4c64('0x4')]},'path':{'type':Sequelize['STRING'],'comment':_0x4c64('0x5')},'active':{'type':Sequelize[_0x4c64('0x6')],'defaultValue':0x0,'comment':_0x4c64('0x7')},'sidebar':{'type':Sequelize['ENUM']('adminOnly',_0x4c64('0x8'),_0x4c64('0x9'),_0x4c64('0xa')),'defaultValue':_0x4c64('0x9'),'comment':_0x4c64('0xb')},'icon':{'type':Sequelize[_0x4c64('0x2')]},'adminUrl':{'type':Sequelize[_0x4c64('0x2')]},'agentUrl':{'type':Sequelize[_0x4c64('0x2')]},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize[_0x4c64('0x2')]}};
\ No newline at end of file
index 227c26a..d72d089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd006=['headers','content-type','statusCode','content-length','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','extract-zip','rimraf','archiver','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','./plugin.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','then','get','UserProfileResource','error','stack','name','index','Plugin','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','params','download','find','root','server/files/plugins','%s.zip','createWriteStream','zip','warning','code','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','join','basename','node_modules/**/*','attachments/**/*','finalize','existsSync','Sequelize','format','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','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','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','views','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','version','html','admin','plugins','Warning:\x20admin\x20view\x20not\x20specified','test','Warning:\x20agent\x20view\x20not\x20specified','create','body','role','userProfileId','user','UserProfileSection','Plugins','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','delete','webhookGet','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','%s%s'];(function(_0x137d1d,_0x35c663){var _0x485108=function(_0x108a2a){while(--_0x108a2a){_0x137d1d['push'](_0x137d1d['shift']());}};_0x485108(++_0x35c663);}(_0xd006,0x164));var _0x6d00=function(_0x1e9424,_0x191cba){_0x1e9424=_0x1e9424-0x0;var _0x1bd96c=_0xd006[_0x1e9424];return _0x1bd96c;};'use strict';var emlformat=require(_0x6d00('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6d00('0x1'));var jsonpatch=require(_0x6d00('0x2'));var rp=require(_0x6d00('0x3'));var moment=require('moment');var BPromise=require(_0x6d00('0x4'));var Mustache=require(_0x6d00('0x5'));var util=require(_0x6d00('0x6'));var path=require(_0x6d00('0x7'));var sox=require(_0x6d00('0x8'));var csv=require(_0x6d00('0x9'));var ejs=require(_0x6d00('0xa'));var fs=require('fs');var fs_extra=require(_0x6d00('0xb'));var _=require(_0x6d00('0xc'));var squel=require(_0x6d00('0xd'));var crypto=require('crypto');var jsforce=require(_0x6d00('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6d00('0x9'));var querystring=require(_0x6d00('0xf'));var Papa=require(_0x6d00('0x10'));var extract=require(_0x6d00('0x11'));var rimraf=require(_0x6d00('0x12'));var archiver=require(_0x6d00('0x13'));var Redis=require(_0x6d00('0x14'));var authService=require(_0x6d00('0x15'));var qs=require(_0x6d00('0x16'));var as=require(_0x6d00('0x17'));var hardwareService=require(_0x6d00('0x18'));var logger=require(_0x6d00('0x19'))(_0x6d00('0x1a'));var utils=require('../../config/utils');var config=require(_0x6d00('0x1b'));var licenseUtil=require(_0x6d00('0x1c'));var db=require(_0x6d00('0x1d'))['db'];config[_0x6d00('0x1e')]=_[_0x6d00('0x1f')](config[_0x6d00('0x1e')],{'host':_0x6d00('0x20'),'port':0x18eb});var socket=require(_0x6d00('0x21'))(new Redis(config[_0x6d00('0x1e')]));require(_0x6d00('0x22'))[_0x6d00('0x23')](socket);function respondWithStatusCode(_0x5d6f28,_0x4b29e1){_0x4b29e1=_0x4b29e1||0xcc;return function(_0x34656d){if(_0x34656d){return _0x5d6f28[_0x6d00('0x24')](_0x4b29e1);}return _0x5d6f28[_0x6d00('0x25')](_0x4b29e1)[_0x6d00('0x26')]();};}function respondWithResult(_0x4f4d82,_0x3cdd4f){_0x3cdd4f=_0x3cdd4f||0xc8;return function(_0x52ba46){if(_0x52ba46){return _0x4f4d82[_0x6d00('0x25')](_0x3cdd4f)[_0x6d00('0x27')](_0x52ba46);}};}function respondWithFilteredResult(_0x1c92e8,_0x12003f){return function(_0x4e86bf){if(_0x4e86bf){var _0x3e0b48=typeof _0x12003f['offset']===_0x6d00('0x28')&&typeof _0x12003f[_0x6d00('0x29')]===_0x6d00('0x28');var _0x197750=_0x4e86bf[_0x6d00('0x2a')];var _0x43c7b5=_0x3e0b48?0x0:_0x12003f[_0x6d00('0x2b')];var _0x410f43=_0x3e0b48?_0x4e86bf[_0x6d00('0x2a')]:_0x12003f[_0x6d00('0x2b')]+_0x12003f[_0x6d00('0x29')];var _0x3299ff;if(_0x410f43>=_0x197750){_0x410f43=_0x197750;_0x3299ff=0xc8;}else{_0x3299ff=0xce;}_0x1c92e8['status'](_0x3299ff);return _0x1c92e8[_0x6d00('0x2c')](_0x6d00('0x2d'),_0x43c7b5+'-'+_0x410f43+'/'+_0x197750)[_0x6d00('0x27')](_0x4e86bf);}return null;};}function patchUpdates(_0x5da2f1){return function(_0x3a1105){try{jsonpatch[_0x6d00('0x2e')](_0x3a1105,_0x5da2f1,!![]);}catch(_0x58bbb6){return BPromise['reject'](_0x58bbb6);}return _0x3a1105[_0x6d00('0x2f')]();};}function saveUpdates(_0xd620f6,_0x55fbe5){return function(_0x22b28d){if(_0x22b28d){return _0x22b28d[_0x6d00('0x30')](_0xd620f6)['then'](function(_0x40e59b){return _0x40e59b;});}return null;};}function removeEntity(_0x56631c,_0x207edd){return function(_0x20f06b){if(_0x20f06b){return _0x20f06b[_0x6d00('0x31')]()[_0x6d00('0x32')](function(){var _0x1c1bd9=_0x20f06b[_0x6d00('0x33')]({'plain':!![]});var _0x19cb9e='Plugins';return db[_0x6d00('0x34')][_0x6d00('0x31')]({'where':{'type':_0x19cb9e,'resourceId':_0x1c1bd9['id']}})[_0x6d00('0x32')](function(){return _0x20f06b;});})[_0x6d00('0x32')](function(){_0x56631c[_0x6d00('0x25')](0xcc)[_0x6d00('0x26')]();});}};}function handleEntityNotFound(_0x4465f2,_0x4201df){return function(_0x3afa0f){if(!_0x3afa0f){_0x4465f2[_0x6d00('0x24')](0x194);}return _0x3afa0f;};}function handleError(_0x59abeb,_0x4f9fc8){_0x4f9fc8=_0x4f9fc8||0x1f4;return function(_0x48eab0){logger[_0x6d00('0x35')](_0x48eab0[_0x6d00('0x36')]);if(_0x48eab0['name']){delete _0x48eab0[_0x6d00('0x37')];}_0x59abeb[_0x6d00('0x25')](_0x4f9fc8)['send'](_0x48eab0);};}exports[_0x6d00('0x38')]=function(_0x55425e,_0x4cbafa){var _0x2bcdef={},_0x38ebcb={},_0x90fca4={'count':0x0,'rows':[]};var _0x47ed01=_['map'](db[_0x6d00('0x39')][_0x6d00('0x3a')],function(_0xfdf79b){return{'name':_0xfdf79b[_0x6d00('0x3b')],'type':_0xfdf79b[_0x6d00('0x3c')][_0x6d00('0x3d')]};});_0x38ebcb['model']=_[_0x6d00('0x3e')](_0x47ed01,'name');_0x38ebcb[_0x6d00('0x3f')]=_[_0x6d00('0x40')](_0x55425e['query']);_0x38ebcb[_0x6d00('0x41')]=_[_0x6d00('0x42')](_0x38ebcb[_0x6d00('0x43')],_0x38ebcb[_0x6d00('0x3f')]);_0x2bcdef[_0x6d00('0x44')]=_[_0x6d00('0x42')](_0x38ebcb[_0x6d00('0x43')],qs[_0x6d00('0x45')](_0x55425e[_0x6d00('0x3f')][_0x6d00('0x45')]));_0x2bcdef[_0x6d00('0x44')]=_0x2bcdef[_0x6d00('0x44')][_0x6d00('0x46')]?_0x2bcdef[_0x6d00('0x44')]:_0x38ebcb[_0x6d00('0x43')];if(!_0x55425e['query'][_0x6d00('0x47')](_0x6d00('0x48'))){_0x2bcdef['limit']=qs['limit'](_0x55425e[_0x6d00('0x3f')][_0x6d00('0x29')]);_0x2bcdef[_0x6d00('0x2b')]=qs[_0x6d00('0x2b')](_0x55425e[_0x6d00('0x3f')]['offset']);}_0x2bcdef['order']=qs[_0x6d00('0x49')](_0x55425e[_0x6d00('0x3f')]['sort']);_0x2bcdef[_0x6d00('0x4a')]=qs['filters'](_[_0x6d00('0x4b')](_0x55425e[_0x6d00('0x3f')],_0x38ebcb[_0x6d00('0x41')]),_0x47ed01);if(_0x55425e['query'][_0x6d00('0x4c')]){_0x2bcdef[_0x6d00('0x4a')]=_[_0x6d00('0x4d')](_0x2bcdef[_0x6d00('0x4a')],{'$or':_[_0x6d00('0x3e')](_0x47ed01,function(_0x1950a3){if(_0x1950a3[_0x6d00('0x3c')]!==_0x6d00('0x4e')){var _0xe2f8f9={};_0xe2f8f9[_0x1950a3['name']]={'$like':'%'+_0x55425e[_0x6d00('0x3f')]['filter']+'%'};return _0xe2f8f9;}})});}_0x2bcdef=_[_0x6d00('0x4d')]({},_0x2bcdef,_0x55425e[_0x6d00('0x4f')]);var _0x1a182b={'where':_0x2bcdef[_0x6d00('0x4a')]};return db[_0x6d00('0x39')][_0x6d00('0x2a')](_0x1a182b)['then'](function(_0x4fd2aa){_0x90fca4[_0x6d00('0x2a')]=_0x4fd2aa;if(_0x55425e[_0x6d00('0x3f')]['includeAll']){_0x2bcdef[_0x6d00('0x50')]=[{'all':!![]}];}return db['Plugin'][_0x6d00('0x51')](_0x2bcdef);})[_0x6d00('0x32')](function(_0x34718c){_0x90fca4[_0x6d00('0x52')]=_0x34718c;return _0x90fca4;})[_0x6d00('0x32')](respondWithFilteredResult(_0x4cbafa,_0x2bcdef))[_0x6d00('0x53')](handleError(_0x4cbafa,null));};exports['show']=function(_0x5ddf0d,_0x28d9d5){var _0x2cdf47={'raw':!![],'where':{'id':_0x5ddf0d[_0x6d00('0x54')]['id']}},_0x19da43={};_0x19da43[_0x6d00('0x43')]=_[_0x6d00('0x40')](db[_0x6d00('0x39')]['rawAttributes']);_0x19da43[_0x6d00('0x3f')]=_['keys'](_0x5ddf0d[_0x6d00('0x3f')]);_0x19da43[_0x6d00('0x41')]=_[_0x6d00('0x42')](_0x19da43[_0x6d00('0x43')],_0x19da43['query']);_0x2cdf47[_0x6d00('0x44')]=_[_0x6d00('0x42')](_0x19da43['model'],qs['fields'](_0x5ddf0d[_0x6d00('0x3f')]['fields']));_0x2cdf47[_0x6d00('0x44')]=_0x2cdf47[_0x6d00('0x44')][_0x6d00('0x46')]?_0x2cdf47[_0x6d00('0x44')]:_0x19da43[_0x6d00('0x43')];if(_0x5ddf0d[_0x6d00('0x3f')]['includeAll']){_0x2cdf47[_0x6d00('0x50')]=[{'all':!![]}];}_0x2cdf47=_[_0x6d00('0x4d')]({},_0x2cdf47,_0x5ddf0d[_0x6d00('0x4f')]);return db[_0x6d00('0x39')]['find'](_0x2cdf47)[_0x6d00('0x32')](handleEntityNotFound(_0x28d9d5,null))[_0x6d00('0x32')](respondWithResult(_0x28d9d5,null))[_0x6d00('0x53')](handleError(_0x28d9d5,null));};exports[_0x6d00('0x55')]=function(_0x1f646b,_0x1e1ed1,_0x4d1b43){return db['Plugin'][_0x6d00('0x56')]({'where':{'id':_0x1f646b[_0x6d00('0x54')]['id']},'attributes':['name',_0x6d00('0x7')],'raw':!![]})[_0x6d00('0x32')](handleEntityNotFound(_0x1e1ed1,null))[_0x6d00('0x32')](function(_0x33102a){if(_0x33102a){var _0x302032=path['join'](config[_0x6d00('0x57')],_0x6d00('0x58'),util['format'](_0x6d00('0x59'),path['basename'](_0x33102a[_0x6d00('0x7')])));var _0x5b87ff=fs[_0x6d00('0x5a')](_0x302032);var _0x5c7e00=archiver(_0x6d00('0x5b'),{'zlib':{'level':0x9}});_0x5c7e00['on'](_0x6d00('0x5c'),function(_0x56bd3b){if(_0x56bd3b[_0x6d00('0x5d')]==='ENOENT'){logger['error'](_0x56bd3b);}else{throw new db['Sequelize'][(_0x6d00('0x5e'))](_0x6d00('0x5f'));}});_0x5c7e00['on']('error',function(_0x4acb62){throw new db['Sequelize']['Error'](_0x6d00('0x5f'));});_0x5c7e00[_0x6d00('0x60')](_0x5b87ff);_0x5c7e00[_0x6d00('0x61')](_0x6d00('0x62'),{'cwd':path['join'](config['root'],_0x6d00('0x58'),path[_0x6d00('0x63')](_0x33102a[_0x6d00('0x7')])),'ignore':[path[_0x6d00('0x64')](path[_0x6d00('0x65')](_0x33102a[_0x6d00('0x7')]),_0x6d00('0x66')),path[_0x6d00('0x64')](path[_0x6d00('0x65')](_0x33102a[_0x6d00('0x7')]),_0x6d00('0x67'))],'nodir':!![]})[_0x6d00('0x68')]();_0x5b87ff['on']('close',function(){if(!fs[_0x6d00('0x69')](_0x302032)){throw new db[(_0x6d00('0x6a'))]['Error']('Plugin\x20not\x20found');}return _0x1e1ed1[_0x6d00('0x55')](_0x302032,util[_0x6d00('0x6b')](_0x6d00('0x59'),path[_0x6d00('0x65')](_0x33102a[_0x6d00('0x7')])),function(_0x305939){if(_0x305939){throw new db['Sequelize']['Error'](_0x6d00('0x6c'));}fs[_0x6d00('0x6d')](_0x302032);logger[_0x6d00('0x6e')]('Download\x20completed');logger[_0x6d00('0x6e')](_0x6d00('0x6f'));});});}return null;})[_0x6d00('0x53')](handleError(_0x1e1ed1,null));};exports[_0x6d00('0x70')]=function(_0x5182d0,_0x27ce2c,_0x4c11ea){var _0x156929=path[_0x6d00('0x65')](_0x5182d0['file'][_0x6d00('0x71')],path[_0x6d00('0x72')](_0x5182d0['file'][_0x6d00('0x71')]));var _0x4a2347=path['join'](config[_0x6d00('0x57')],_0x6d00('0x58'),_0x5182d0[_0x6d00('0x73')][_0x6d00('0x71')]);var _0x5b5018=path[_0x6d00('0x64')](config['root'],'server/files/plugins',_0x156929);logger[_0x6d00('0x6e')]('Plugin\x20upload\x20filepath:\x20%s',_0x4a2347);logger[_0x6d00('0x6e')](_0x6d00('0x74'),_0x5b5018);try{fs[_0x6d00('0x75')](_0x4a2347,parseInt(_0x6d00('0x76'),0x8));extract(_0x4a2347,{'dir':_0x5b5018},function(_0x31f3bc){if(_0x31f3bc){logger[_0x6d00('0x35')](_0x31f3bc);handleError(_0x31f3bc,!![]);};var _0x3d4ebb=fs[_0x6d00('0x77')](_0x5b5018);if(_0x3d4ebb[_0x6d00('0x46')]>0x1){removeReferences(_0x4a2347,_0x5b5018);logger[_0x6d00('0x35')]('Invalid\x20plugin\x20structure');return _0x4c11ea(new Error(_0x6d00('0x78')));}var _0x357a87=fs[_0x6d00('0x79')](path[_0x6d00('0x64')](_0x5b5018,_0x3d4ebb[0x0]));if(_0x357a87[_0x6d00('0x7a')]()){removeReferences(_0x4a2347,_0x5b5018);logger[_0x6d00('0x35')]('Invalid\x20plugin\x20structure');return _0x4c11ea(new Error(_0x6d00('0x78')));}if(_0x357a87[_0x6d00('0x7b')]()){var _0x3f7f80=fs[_0x6d00('0x77')](path[_0x6d00('0x64')](_0x5b5018,_0x3d4ebb[0x0]));if(_0x3f7f80[_0x6d00('0x46')]===0x0){removeReferences(_0x4a2347,_0x5b5018);logger[_0x6d00('0x35')](_0x6d00('0x78'));return _0x4c11ea(new Error('Invalid\x20plugin\x20structure'));}var _0x5dd53a=_0x3f7f80[_0x6d00('0x7c')](function(_0x252aba){return _0x252aba===_0x6d00('0x7d');});if(!_0x5dd53a){return _0x4c11ea(new Error(_0x6d00('0x7e')));}var _0x4f1578=fs[_0x6d00('0x7f')](path[_0x6d00('0x64')](_0x5b5018,_0x3d4ebb[0x0],_0x6d00('0x7d')));var _0x56f87b=JSON[_0x6d00('0x80')](_0x4f1578);if('undefined'==typeof _0x56f87b[_0x6d00('0x37')]){return _0x4c11ea(new Error(_0x6d00('0x81')));}if('undefined'==typeof _0x56f87b[_0x6d00('0x3c')]){return _0x4c11ea(new Error(_0x6d00('0x82')));}if('undefined'==typeof _0x56f87b['version']){return _0x4c11ea(new Error(_0x6d00('0x83')));}if(_0x6d00('0x28')==typeof _0x56f87b[_0x6d00('0x84')]){return _0x4c11ea(new Error(_0x6d00('0x85')));}if(_0x56f87b['type']==='html'){if(_0x6d00('0x28')==typeof _0x56f87b[_0x6d00('0x84')][_0x6d00('0x86')]){return _0x4c11ea(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x6d00('0x28')==typeof _0x56f87b[_0x6d00('0x84')][_0x6d00('0x86')]['admin']&&_0x6d00('0x28')==typeof _0x56f87b['parameters'][_0x6d00('0x86')][_0x6d00('0x87')]){return _0x4c11ea(new Error(_0x6d00('0x88')));}}else if(_0x56f87b[_0x6d00('0x3c')]===_0x6d00('0x89')){if(_0x6d00('0x28')==typeof _0x56f87b[_0x6d00('0x84')][_0x6d00('0x8a')]){return _0x4c11ea(new Error(_0x6d00('0x8b')));}if(_0x6d00('0x28')==typeof _0x56f87b[_0x6d00('0x84')]['scriptPath']){return _0x4c11ea(new Error(_0x6d00('0x8c')));}}else{return _0x4c11ea(new Error(_0x6d00('0x8d')));}var _0x572fb2=_0x56f87b[_0x6d00('0x37')];var _0x42ccd6=_0x56f87b['description'];var _0x314db9=_0x56f87b['type'];var _0x4607f5=_0x56f87b[_0x6d00('0x8e')]?_0x56f87b[_0x6d00('0x8e')]:_0x6d00('0x8f');var _0xf61a07=_0x56f87b[_0x6d00('0x90')]?_0x56f87b[_0x6d00('0x90')]:'icon-apps';var _0x357123='';var _0x471d7f='';var _0x2a206f='';var _0x5b8596='';var _0x34aba5=_0x56f87b[_0x6d00('0x91')];if(_0x314db9===_0x6d00('0x92')){if('undefined'!=typeof _0x56f87b[_0x6d00('0x84')]['views'][_0x6d00('0x93')]){var _0x3159e8=_0x56f87b[_0x6d00('0x84')][_0x6d00('0x86')][_0x6d00('0x93')];if(!/^(f|ht)tps?:\/\//i['test'](_0x3159e8)){_0x357123=path[_0x6d00('0x64')](_0x6d00('0x94'),_0x156929,_0x3d4ebb[0x0],_0x3159e8);}else{_0x357123=_0x3159e8;}}else{logger[_0x6d00('0x6e')](_0x6d00('0x95'));}if(_0x6d00('0x28')!=typeof _0x56f87b[_0x6d00('0x84')][_0x6d00('0x86')][_0x6d00('0x87')]){var _0x2146f1=_0x56f87b['parameters'][_0x6d00('0x86')][_0x6d00('0x87')];if(!/^(f|ht)tps?:\/\//i[_0x6d00('0x96')](_0x2146f1)){_0x471d7f=path[_0x6d00('0x64')]('plugins',_0x156929,_0x3d4ebb[0x0],_0x2146f1);}else{_0x471d7f=_0x2146f1;}}else{logger['info'](_0x6d00('0x97'));}}else if(_0x314db9===_0x6d00('0x89')){_0x2a206f=_0x56f87b[_0x6d00('0x84')][_0x6d00('0x8a')];_0x5b8596=_0x56f87b[_0x6d00('0x84')]['scriptPath'];if(_0x6d00('0x28')!=typeof _0x56f87b[_0x6d00('0x84')]['views']){if(_0x6d00('0x28')!=typeof _0x56f87b[_0x6d00('0x84')][_0x6d00('0x86')][_0x6d00('0x93')]){var _0x3159e8=_0x56f87b[_0x6d00('0x84')][_0x6d00('0x86')][_0x6d00('0x93')];if(!/^(f|ht)tps?:\/\//i[_0x6d00('0x96')](_0x3159e8)){_0x357123=path[_0x6d00('0x64')]('plugins',_0x156929,_0x3d4ebb[0x0],_0x3159e8);}else{_0x357123=_0x3159e8;}}if(_0x6d00('0x28')!=typeof _0x56f87b[_0x6d00('0x84')][_0x6d00('0x86')]['agent']){var _0x2146f1=_0x56f87b[_0x6d00('0x84')][_0x6d00('0x86')][_0x6d00('0x87')];if(!/^(f|ht)tps?:\/\//i['test'](_0x2146f1)){_0x471d7f=path['join'](_0x6d00('0x94'),_0x156929,_0x3d4ebb[0x0],_0x2146f1);}else{_0x471d7f=_0x2146f1;}}}}var _0x566191={'name':_0x572fb2,'description':_0x42ccd6,'path':path['join'](_0x156929,_0x3d4ebb[0x0]),'type':_0x314db9,'sidebar':_0x4607f5,'icon':_0xf61a07,'adminUrl':_0x357123,'agentUrl':_0x471d7f,'scriptName':_0x2a206f,'scriptPath':_0x5b8596,'version':_0x34aba5};removeReferences(_0x4a2347,null);return db[_0x6d00('0x39')][_0x6d00('0x98')](_0x566191)[_0x6d00('0x32')](function(_0x211801){var _0x578ca8={'role':_0x5182d0[_0x6d00('0x99')][_0x6d00('0x9a')],'userProfileId':_0x5182d0[_0x6d00('0x99')][_0x6d00('0x9b')]};if(!_0x578ca8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x578ca8[_0x6d00('0x9a')]===_0x6d00('0x9c')){var _0x5af6fd=_0x211801['get']({'plain':!![]});return db[_0x6d00('0x9d')][_0x6d00('0x56')]({'where':{'name':_0x6d00('0x9e'),'userProfileId':_0x578ca8['userProfileId']},'raw':!![]})['then'](function(_0x355c2e){if(_0x355c2e&&_0x355c2e[_0x6d00('0x9f')]===0x0){return db[_0x6d00('0x34')][_0x6d00('0x98')]({'name':_0x5af6fd[_0x6d00('0x37')],'resourceId':_0x5af6fd['id'],'type':_0x355c2e[_0x6d00('0x37')],'sectionId':_0x355c2e['id']},{})[_0x6d00('0x32')](function(){return _0x211801;});}else{return _0x211801;}})[_0x6d00('0x53')](function(_0x40b567){logger['error'](_0x6d00('0xa0'),_0x40b567);throw _0x40b567;});}return _0x211801;})[_0x6d00('0x32')](respondWithResult(_0x27ce2c,null))[_0x6d00('0x53')](handleError(_0x27ce2c,null));}});}catch(_0x26fb59){_0x27ce2c[_0x6d00('0x25')](0x1f4)[_0x6d00('0xa1')](_0x26fb59);}};function removeReferences(_0x656607,_0x405527){try{if(_0x656607){fs[_0x6d00('0x6d')](_0x656607);logger['info'](_0x6d00('0xa2'));}if(_0x405527){rimraf(_0x405527,function(){});logger[_0x6d00('0x6e')]('Extracted\x20folder\x20removed');}}catch(_0x2a433d){logger['error'](_0x2a433d);}}exports[_0x6d00('0x30')]=function(_0x364e9e,_0x28e885,_0x44d66e){return db['Plugin'][_0x6d00('0x56')]({'where':{'id':_0x364e9e[_0x6d00('0x54')]['id']}})[_0x6d00('0x32')](handleEntityNotFound(_0x28e885,null))['then'](saveUpdates(_0x364e9e[_0x6d00('0x99')],null))[_0x6d00('0x32')](respondWithResult(_0x28e885,null))[_0x6d00('0x53')](handleError(_0x28e885,null));};exports[_0x6d00('0xa3')]=function(_0x56fd6f,_0x27248c,_0x545256){return db[_0x6d00('0x39')][_0x6d00('0x56')]({'where':{'id':_0x56fd6f[_0x6d00('0x54')]['id']}})['then'](function(_0x1f066f){if(_0x1f066f){return _0x1f066f[_0x6d00('0x31')]();}})[_0x6d00('0x32')](function(_0xe535eb){rimraf(path['join'](config[_0x6d00('0x57')],_0x6d00('0x58'),path['dirname'](_0xe535eb[_0x6d00('0x7')])),function(){});return _0xe535eb;})[_0x6d00('0x32')](handleEntityNotFound(_0x27248c,null))['then'](respondWithStatusCode(_0x27248c,null))[_0x6d00('0x53')](handleError(_0x27248c,null));};exports[_0x6d00('0xa4')]=function(_0x97260e,_0x218e4c,_0x5cc54b){return BPromise['resolve']()[_0x6d00('0x32')](function(){if(!_0x97260e[_0x6d00('0x3f')]['path']){throw new Error(_0x6d00('0xa5'));}if(!_0x97260e[_0x6d00('0x3f')][_0x6d00('0xa6')]){throw new Error(_0x6d00('0xa7'));}var _0x552177=_0x97260e[_0x6d00('0x3f')][_0x6d00('0xa8')]?_0x97260e['query'][_0x6d00('0xa8')]+':'+_0x97260e[_0x6d00('0x3f')][_0x6d00('0xa6')]:'http://localhost:'+_0x97260e[_0x6d00('0x3f')][_0x6d00('0xa6')];var _0x254aca=_0x97260e[_0x6d00('0x3f')][_0x6d00('0x27')]?_0x97260e[_0x6d00('0x3f')][_0x6d00('0x27')]:!![];var _0xd3a1aa=_0x97260e['query']['encoding']?_0x97260e[_0x6d00('0x3f')][_0x6d00('0xa9')]:null;var _0x42fc76={'method':_0x97260e[_0x6d00('0xaa')],'uri':util[_0x6d00('0x6b')](_0x6d00('0xab'),_0x552177,_0x97260e[_0x6d00('0x3f')][_0x6d00('0x7')]),'json':_0x254aca,'resolveWithFullResponse':!![],'encoding':_0xd3a1aa,'qs':_0x97260e[_0x6d00('0x3f')]};if(_0x97260e[_0x6d00('0xac')]){_0x42fc76[_0x6d00('0xac')]=_0x97260e[_0x6d00('0xac')];if(_0x42fc76['headers']['content-length']){delete _0x42fc76['headers']['content-length'];}}if(_0x42fc76[_0x6d00('0xac')][_0x6d00('0xad')]){delete _0x42fc76[_0x6d00('0xac')][_0x6d00('0xad')];}return rp(_0x42fc76);})[_0x6d00('0x32')](function(_0x3f3ffd){if(_0x3f3ffd){_0x218e4c[_0x6d00('0x2c')](_0x3f3ffd[_0x6d00('0xac')]);logger[_0x6d00('0x6e')](_0x3f3ffd[_0x6d00('0x99')]);if(_['endsWith'](_0x97260e[_0x6d00('0x3f')][_0x6d00('0x7')],'download')&&_0x3f3ffd['statusCode']==0x1f4){return _0x218e4c[_0x6d00('0x24')](_0x3f3ffd['statusCode']);}else{return _0x218e4c[_0x6d00('0x25')](_0x3f3ffd[_0x6d00('0xae')])[_0x6d00('0xa1')](_0x3f3ffd[_0x6d00('0x99')]);}}else{return _0x218e4c[_0x6d00('0x24')](0xc8);}})[_0x6d00('0x53')](handleError(_0x218e4c,null));};exports['webhookPost']=function(_0x41c29e,_0xd86578,_0x37837d){return BPromise['resolve']()[_0x6d00('0x32')](function(){if(!_0x41c29e[_0x6d00('0x3f')][_0x6d00('0x7')]){throw new Error(_0x6d00('0xa5'));}if(!_0x41c29e[_0x6d00('0x3f')]['port']){throw new Error(_0x6d00('0xa7'));}var _0x3d3e2b=_0x41c29e[_0x6d00('0x3f')]['hostname']?_0x41c29e[_0x6d00('0x3f')][_0x6d00('0xa8')]+':'+_0x41c29e[_0x6d00('0x3f')][_0x6d00('0xa6')]:'http://localhost:'+_0x41c29e[_0x6d00('0x3f')][_0x6d00('0xa6')];var _0x6f50c3=_0x41c29e[_0x6d00('0x3f')][_0x6d00('0x27')]?_0x41c29e[_0x6d00('0x3f')][_0x6d00('0x27')]:!![];var _0x922e58=_0x41c29e[_0x6d00('0x3f')][_0x6d00('0xa9')]?_0x41c29e[_0x6d00('0x3f')][_0x6d00('0xa9')]:null;var _0x574f30={'method':_0x41c29e[_0x6d00('0xaa')],'uri':util[_0x6d00('0x6b')](_0x6d00('0xab'),_0x3d3e2b,_0x41c29e['query']['path']),'json':_0x6f50c3,'resolveWithFullResponse':!![],'encoding':_0x922e58,'body':_0x41c29e['body']};if(_0x41c29e[_0x6d00('0xac')]){_0x574f30[_0x6d00('0xac')]=_0x41c29e[_0x6d00('0xac')];if(_0x574f30['headers']['content-length']){delete _0x574f30['headers'][_0x6d00('0xaf')];}}if(_0x574f30[_0x6d00('0xac')][_0x6d00('0xad')]){delete _0x574f30[_0x6d00('0xac')]['content-type'];}return rp(_0x574f30);})[_0x6d00('0x32')](function(_0x2befa4){if(_0x2befa4){_0xd86578[_0x6d00('0x2c')](_0x2befa4[_0x6d00('0xac')]);logger[_0x6d00('0x6e')](_0x2befa4[_0x6d00('0x99')]);return _0xd86578[_0x6d00('0x25')](_0x2befa4[_0x6d00('0xae')])[_0x6d00('0xa1')](_0x2befa4[_0x6d00('0x99')]);}else{return _0xd86578[_0x6d00('0x24')](0xc8);}})[_0x6d00('0x53')](handleError(_0xd86578,null));};
\ No newline at end of file
+var _0xb2da=['params','find','join','root','server/files/plugins','format','%s.zip','createWriteStream','zip','warning','code','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','basename','node_modules/**/*','finalize','close','existsSync','Sequelize','download','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','info','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','Invalid\x20plugin\x20structure','lstatSync','isFile','readdirSync','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','html','parameters','views','Invalid\x20manifest:\x20views\x20missing','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','admin','test','plugins','scriptName','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','headers','content-length','content-type','endsWith','statusCode','webhookPost','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','register','sendStatus','end','status','json','undefined','limit','offset','set','Content-Range','apply','update','then','destroy','get','Plugins','UserProfileResource','error','stack','name','send','index','map','Plugin','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','rows','catch','show'];(function(_0x15cddf,_0x1e37c6){var _0x62b7e5=function(_0x383605){while(--_0x383605){_0x15cddf['push'](_0x15cddf['shift']());}};_0x62b7e5(++_0x1e37c6);}(_0xb2da,0x1b6));var _0xab2d=function(_0x5af020,_0x456db7){_0x5af020=_0x5af020-0x0;var _0x425137=_0xb2da[_0x5af020];return _0x425137;};'use strict';var emlformat=require(_0xab2d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xab2d('0x1'));var jsonpatch=require(_0xab2d('0x2'));var rp=require(_0xab2d('0x3'));var moment=require(_0xab2d('0x4'));var BPromise=require(_0xab2d('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xab2d('0x6'));var sox=require(_0xab2d('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xab2d('0x8'));var _=require(_0xab2d('0x9'));var squel=require(_0xab2d('0xa'));var crypto=require(_0xab2d('0xb'));var jsforce=require(_0xab2d('0xc'));var deskjs=require(_0xab2d('0xd'));var toCsv=require('to-csv');var querystring=require(_0xab2d('0xe'));var Papa=require(_0xab2d('0xf'));var extract=require(_0xab2d('0x10'));var rimraf=require('rimraf');var archiver=require(_0xab2d('0x11'));var Redis=require(_0xab2d('0x12'));var authService=require(_0xab2d('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xab2d('0x14'));var hardwareService=require(_0xab2d('0x15'));var logger=require('../../config/logger')(_0xab2d('0x16'));var utils=require(_0xab2d('0x17'));var config=require(_0xab2d('0x18'));var licenseUtil=require(_0xab2d('0x19'));var db=require('../../mysqldb')['db'];config[_0xab2d('0x1a')]=_[_0xab2d('0x1b')](config[_0xab2d('0x1a')],{'host':_0xab2d('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./plugin.socket')[_0xab2d('0x1d')](socket);function respondWithStatusCode(_0x3e63d5,_0x7e1e52){_0x7e1e52=_0x7e1e52||0xcc;return function(_0x8e099a){if(_0x8e099a){return _0x3e63d5[_0xab2d('0x1e')](_0x7e1e52);}return _0x3e63d5['status'](_0x7e1e52)[_0xab2d('0x1f')]();};}function respondWithResult(_0x2c1e96,_0x118a85){_0x118a85=_0x118a85||0xc8;return function(_0x499942){if(_0x499942){return _0x2c1e96[_0xab2d('0x20')](_0x118a85)[_0xab2d('0x21')](_0x499942);}};}function respondWithFilteredResult(_0x34843c,_0x372150){return function(_0x3352d6){if(_0x3352d6){var _0x4eb59f=typeof _0x372150['offset']===_0xab2d('0x22')&&typeof _0x372150[_0xab2d('0x23')]===_0xab2d('0x22');var _0x3aaebf=_0x3352d6['count'];var _0x543fa6=_0x4eb59f?0x0:_0x372150['offset'];var _0x4bfbc3=_0x4eb59f?_0x3352d6['count']:_0x372150[_0xab2d('0x24')]+_0x372150[_0xab2d('0x23')];var _0x81727a;if(_0x4bfbc3>=_0x3aaebf){_0x4bfbc3=_0x3aaebf;_0x81727a=0xc8;}else{_0x81727a=0xce;}_0x34843c[_0xab2d('0x20')](_0x81727a);return _0x34843c[_0xab2d('0x25')](_0xab2d('0x26'),_0x543fa6+'-'+_0x4bfbc3+'/'+_0x3aaebf)[_0xab2d('0x21')](_0x3352d6);}return null;};}function patchUpdates(_0x2ff0bb){return function(_0x583342){try{jsonpatch[_0xab2d('0x27')](_0x583342,_0x2ff0bb,!![]);}catch(_0x175aa9){return BPromise['reject'](_0x175aa9);}return _0x583342['save']();};}function saveUpdates(_0x40c4b8,_0x489493){return function(_0xa405ea){if(_0xa405ea){return _0xa405ea[_0xab2d('0x28')](_0x40c4b8)[_0xab2d('0x29')](function(_0x1fe7b8){return _0x1fe7b8;});}return null;};}function removeEntity(_0x55f97a,_0x5eafff){return function(_0x3b143b){if(_0x3b143b){return _0x3b143b[_0xab2d('0x2a')]()[_0xab2d('0x29')](function(){var _0x398775=_0x3b143b[_0xab2d('0x2b')]({'plain':!![]});var _0x25e665=_0xab2d('0x2c');return db[_0xab2d('0x2d')][_0xab2d('0x2a')]({'where':{'type':_0x25e665,'resourceId':_0x398775['id']}})[_0xab2d('0x29')](function(){return _0x3b143b;});})[_0xab2d('0x29')](function(){_0x55f97a[_0xab2d('0x20')](0xcc)[_0xab2d('0x1f')]();});}};}function handleEntityNotFound(_0x451b55,_0x27858a){return function(_0x571d9e){if(!_0x571d9e){_0x451b55[_0xab2d('0x1e')](0x194);}return _0x571d9e;};}function handleError(_0x5d7139,_0x31dc7c){_0x31dc7c=_0x31dc7c||0x1f4;return function(_0x52bf7c){logger[_0xab2d('0x2e')](_0x52bf7c[_0xab2d('0x2f')]);if(_0x52bf7c[_0xab2d('0x30')]){delete _0x52bf7c[_0xab2d('0x30')];}_0x5d7139[_0xab2d('0x20')](_0x31dc7c)[_0xab2d('0x31')](_0x52bf7c);};}exports[_0xab2d('0x32')]=function(_0xc3f833,_0x3e0b2b){var _0x476d68={},_0x528620={},_0x561e61={'count':0x0,'rows':[]};var _0x33f924=_[_0xab2d('0x33')](db[_0xab2d('0x34')][_0xab2d('0x35')],function(_0x471def){return{'name':_0x471def[_0xab2d('0x36')],'type':_0x471def[_0xab2d('0x37')][_0xab2d('0x38')]};});_0x528620[_0xab2d('0x39')]=_[_0xab2d('0x33')](_0x33f924,_0xab2d('0x30'));_0x528620[_0xab2d('0x3a')]=_[_0xab2d('0x3b')](_0xc3f833[_0xab2d('0x3a')]);_0x528620[_0xab2d('0x3c')]=_[_0xab2d('0x3d')](_0x528620[_0xab2d('0x39')],_0x528620[_0xab2d('0x3a')]);_0x476d68[_0xab2d('0x3e')]=_[_0xab2d('0x3d')](_0x528620[_0xab2d('0x39')],qs[_0xab2d('0x3f')](_0xc3f833[_0xab2d('0x3a')][_0xab2d('0x3f')]));_0x476d68['attributes']=_0x476d68[_0xab2d('0x3e')][_0xab2d('0x40')]?_0x476d68[_0xab2d('0x3e')]:_0x528620[_0xab2d('0x39')];if(!_0xc3f833['query'][_0xab2d('0x41')](_0xab2d('0x42'))){_0x476d68[_0xab2d('0x23')]=qs[_0xab2d('0x23')](_0xc3f833[_0xab2d('0x3a')][_0xab2d('0x23')]);_0x476d68['offset']=qs[_0xab2d('0x24')](_0xc3f833[_0xab2d('0x3a')]['offset']);}_0x476d68[_0xab2d('0x43')]=qs[_0xab2d('0x44')](_0xc3f833[_0xab2d('0x3a')]['sort']);_0x476d68[_0xab2d('0x45')]=qs[_0xab2d('0x3c')](_[_0xab2d('0x46')](_0xc3f833[_0xab2d('0x3a')],_0x528620['filters']),_0x33f924);if(_0xc3f833['query'][_0xab2d('0x47')]){_0x476d68[_0xab2d('0x45')]=_[_0xab2d('0x48')](_0x476d68['where'],{'$or':_['map'](_0x33f924,function(_0x19a377){if(_0x19a377[_0xab2d('0x37')]!==_0xab2d('0x49')){var _0x2195af={};_0x2195af[_0x19a377[_0xab2d('0x30')]]={'$like':'%'+_0xc3f833['query'][_0xab2d('0x47')]+'%'};return _0x2195af;}})});}_0x476d68=_[_0xab2d('0x48')]({},_0x476d68,_0xc3f833[_0xab2d('0x4a')]);var _0x1104b0={'where':_0x476d68['where']};return db[_0xab2d('0x34')][_0xab2d('0x4b')](_0x1104b0)['then'](function(_0x42632e){_0x561e61[_0xab2d('0x4b')]=_0x42632e;if(_0xc3f833['query'][_0xab2d('0x4c')]){_0x476d68[_0xab2d('0x4d')]=[{'all':!![]}];}return db['Plugin']['findAll'](_0x476d68);})[_0xab2d('0x29')](function(_0x1e7727){_0x561e61[_0xab2d('0x4e')]=_0x1e7727;return _0x561e61;})[_0xab2d('0x29')](respondWithFilteredResult(_0x3e0b2b,_0x476d68))[_0xab2d('0x4f')](handleError(_0x3e0b2b,null));};exports[_0xab2d('0x50')]=function(_0x532ae1,_0x34d623){var _0x2aa14a={'raw':!![],'where':{'id':_0x532ae1[_0xab2d('0x51')]['id']}},_0x32ea21={};_0x32ea21['model']=_[_0xab2d('0x3b')](db['Plugin'][_0xab2d('0x35')]);_0x32ea21['query']=_[_0xab2d('0x3b')](_0x532ae1[_0xab2d('0x3a')]);_0x32ea21['filters']=_[_0xab2d('0x3d')](_0x32ea21['model'],_0x32ea21['query']);_0x2aa14a[_0xab2d('0x3e')]=_[_0xab2d('0x3d')](_0x32ea21[_0xab2d('0x39')],qs[_0xab2d('0x3f')](_0x532ae1[_0xab2d('0x3a')]['fields']));_0x2aa14a[_0xab2d('0x3e')]=_0x2aa14a[_0xab2d('0x3e')][_0xab2d('0x40')]?_0x2aa14a[_0xab2d('0x3e')]:_0x32ea21[_0xab2d('0x39')];if(_0x532ae1[_0xab2d('0x3a')][_0xab2d('0x4c')]){_0x2aa14a[_0xab2d('0x4d')]=[{'all':!![]}];}_0x2aa14a=_['merge']({},_0x2aa14a,_0x532ae1[_0xab2d('0x4a')]);return db['Plugin'][_0xab2d('0x52')](_0x2aa14a)[_0xab2d('0x29')](handleEntityNotFound(_0x34d623,null))[_0xab2d('0x29')](respondWithResult(_0x34d623,null))['catch'](handleError(_0x34d623,null));};exports['download']=function(_0x5c4e9d,_0x1150fa,_0x28495b){return db[_0xab2d('0x34')]['find']({'where':{'id':_0x5c4e9d['params']['id']},'attributes':[_0xab2d('0x30'),_0xab2d('0x6')],'raw':!![]})[_0xab2d('0x29')](handleEntityNotFound(_0x1150fa,null))[_0xab2d('0x29')](function(_0x2f7dd0){if(_0x2f7dd0){var _0x3841ca=path[_0xab2d('0x53')](config[_0xab2d('0x54')],_0xab2d('0x55'),util[_0xab2d('0x56')](_0xab2d('0x57'),path['basename'](_0x2f7dd0[_0xab2d('0x6')])));var _0x27d0c4=fs[_0xab2d('0x58')](_0x3841ca);var _0x103c08=archiver(_0xab2d('0x59'),{'zlib':{'level':0x9}});_0x103c08['on'](_0xab2d('0x5a'),function(_0x38db5d){if(_0x38db5d[_0xab2d('0x5b')]===_0xab2d('0x5c')){logger['error'](_0x38db5d);}else{throw new db['Sequelize'][(_0xab2d('0x5d'))](_0xab2d('0x5e'));}});_0x103c08['on'](_0xab2d('0x2e'),function(_0x45ff0c){throw new db['Sequelize'][(_0xab2d('0x5d'))](_0xab2d('0x5e'));});_0x103c08[_0xab2d('0x5f')](_0x27d0c4);_0x103c08[_0xab2d('0x60')](_0xab2d('0x61'),{'cwd':path[_0xab2d('0x53')](config['root'],'server/files/plugins',path[_0xab2d('0x62')](_0x2f7dd0[_0xab2d('0x6')])),'ignore':[path['join'](path[_0xab2d('0x63')](_0x2f7dd0['path']),_0xab2d('0x64')),path[_0xab2d('0x53')](path[_0xab2d('0x63')](_0x2f7dd0[_0xab2d('0x6')]),'attachments/**/*')],'nodir':!![]})[_0xab2d('0x65')]();_0x27d0c4['on'](_0xab2d('0x66'),function(){if(!fs[_0xab2d('0x67')](_0x3841ca)){throw new db[(_0xab2d('0x68'))][(_0xab2d('0x5d'))]('Plugin\x20not\x20found');}return _0x1150fa[_0xab2d('0x69')](_0x3841ca,util[_0xab2d('0x56')]('%s.zip',path[_0xab2d('0x63')](_0x2f7dd0[_0xab2d('0x6')])),function(_0x59c564){if(_0x59c564){throw new db[(_0xab2d('0x68'))][(_0xab2d('0x5d'))](_0xab2d('0x6a'));}fs[_0xab2d('0x6b')](_0x3841ca);logger['info'](_0xab2d('0x6c'));logger['info'](_0xab2d('0x6d'));});});}return null;})['catch'](handleError(_0x1150fa,null));};exports[_0xab2d('0x6e')]=function(_0x5da339,_0x105e48,_0x1a3c85){var _0x5b7ec3=path['basename'](_0x5da339[_0xab2d('0x6f')][_0xab2d('0x70')],path['extname'](_0x5da339[_0xab2d('0x6f')][_0xab2d('0x70')]));var _0x4f9b8e=path[_0xab2d('0x53')](config[_0xab2d('0x54')],_0xab2d('0x55'),_0x5da339[_0xab2d('0x6f')][_0xab2d('0x70')]);var _0xe9a297=path[_0xab2d('0x53')](config[_0xab2d('0x54')],'server/files/plugins',_0x5b7ec3);logger[_0xab2d('0x71')]('Plugin\x20upload\x20filepath:\x20%s',_0x4f9b8e);logger[_0xab2d('0x71')](_0xab2d('0x72'),_0xe9a297);try{fs[_0xab2d('0x73')](_0x4f9b8e,parseInt(_0xab2d('0x74'),0x8));extract(_0x4f9b8e,{'dir':_0xe9a297},function(_0x425121){if(_0x425121){logger['error'](_0x425121);handleError(_0x425121,!![]);};var _0x16a045=fs['readdirSync'](_0xe9a297);if(_0x16a045['length']>0x1){removeReferences(_0x4f9b8e,_0xe9a297);logger[_0xab2d('0x2e')](_0xab2d('0x75'));return _0x1a3c85(new Error('Invalid\x20plugin\x20structure'));}var _0x392012=fs[_0xab2d('0x76')](path['join'](_0xe9a297,_0x16a045[0x0]));if(_0x392012[_0xab2d('0x77')]()){removeReferences(_0x4f9b8e,_0xe9a297);logger[_0xab2d('0x2e')]('Invalid\x20plugin\x20structure');return _0x1a3c85(new Error(_0xab2d('0x75')));}if(_0x392012['isDirectory']()){var _0x449e40=fs[_0xab2d('0x78')](path[_0xab2d('0x53')](_0xe9a297,_0x16a045[0x0]));if(_0x449e40['length']===0x0){removeReferences(_0x4f9b8e,_0xe9a297);logger[_0xab2d('0x2e')]('Invalid\x20plugin\x20structure');return _0x1a3c85(new Error('Invalid\x20plugin\x20structure'));}var _0x3791f8=_0x449e40[_0xab2d('0x79')](function(_0x1d09e9){return _0x1d09e9===_0xab2d('0x7a');});if(!_0x3791f8){return _0x1a3c85(new Error(_0xab2d('0x7b')));}var _0x17f0c6=fs[_0xab2d('0x7c')](path[_0xab2d('0x53')](_0xe9a297,_0x16a045[0x0],_0xab2d('0x7a')));var _0x37206b=JSON[_0xab2d('0x7d')](_0x17f0c6);if(_0xab2d('0x22')==typeof _0x37206b[_0xab2d('0x30')]){return _0x1a3c85(new Error(_0xab2d('0x7e')));}if(_0xab2d('0x22')==typeof _0x37206b[_0xab2d('0x37')]){return _0x1a3c85(new Error(_0xab2d('0x7f')));}if(_0xab2d('0x22')==typeof _0x37206b[_0xab2d('0x80')]){return _0x1a3c85(new Error(_0xab2d('0x81')));}if(_0xab2d('0x22')==typeof _0x37206b['parameters']){return _0x1a3c85(new Error(_0xab2d('0x82')));}if(_0x37206b['type']===_0xab2d('0x83')){if(_0xab2d('0x22')==typeof _0x37206b[_0xab2d('0x84')][_0xab2d('0x85')]){return _0x1a3c85(new Error(_0xab2d('0x86')));}if(_0xab2d('0x22')==typeof _0x37206b[_0xab2d('0x84')][_0xab2d('0x85')]['admin']&&_0xab2d('0x22')==typeof _0x37206b['parameters'][_0xab2d('0x85')][_0xab2d('0x87')]){return _0x1a3c85(new Error(_0xab2d('0x88')));}}else if(_0x37206b[_0xab2d('0x37')]===_0xab2d('0x89')){if(_0xab2d('0x22')==typeof _0x37206b[_0xab2d('0x84')]['scriptName']){return _0x1a3c85(new Error(_0xab2d('0x8a')));}if('undefined'==typeof _0x37206b['parameters'][_0xab2d('0x8b')]){return _0x1a3c85(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x1a3c85(new Error(_0xab2d('0x8c')));}var _0x18c766=_0x37206b[_0xab2d('0x30')];var _0x5f3ccb=_0x37206b['description'];var _0x4df94b=_0x37206b[_0xab2d('0x37')];var _0x298cdb=_0x37206b[_0xab2d('0x8d')]?_0x37206b[_0xab2d('0x8d')]:_0xab2d('0x8e');var _0x129f93=_0x37206b['icon']?_0x37206b[_0xab2d('0x8f')]:'icon-apps';var _0x4ec099='';var _0x13205e='';var _0x16289b='';var _0x562957='';var _0x1653d2=_0x37206b['version'];if(_0x4df94b==='html'){if('undefined'!=typeof _0x37206b['parameters'][_0xab2d('0x85')]['admin']){var _0x4e8efa=_0x37206b[_0xab2d('0x84')][_0xab2d('0x85')][_0xab2d('0x90')];if(!/^(f|ht)tps?:\/\//i[_0xab2d('0x91')](_0x4e8efa)){_0x4ec099=path['join']('plugins',_0x5b7ec3,_0x16a045[0x0],_0x4e8efa);}else{_0x4ec099=_0x4e8efa;}}else{logger[_0xab2d('0x71')]('Warning:\x20admin\x20view\x20not\x20specified');}if(_0xab2d('0x22')!=typeof _0x37206b['parameters'][_0xab2d('0x85')]['agent']){var _0x3f5699=_0x37206b[_0xab2d('0x84')][_0xab2d('0x85')][_0xab2d('0x87')];if(!/^(f|ht)tps?:\/\//i['test'](_0x3f5699)){_0x13205e=path['join'](_0xab2d('0x92'),_0x5b7ec3,_0x16a045[0x0],_0x3f5699);}else{_0x13205e=_0x3f5699;}}else{logger[_0xab2d('0x71')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x4df94b===_0xab2d('0x89')){_0x16289b=_0x37206b[_0xab2d('0x84')][_0xab2d('0x93')];_0x562957=_0x37206b[_0xab2d('0x84')][_0xab2d('0x8b')];if(_0xab2d('0x22')!=typeof _0x37206b[_0xab2d('0x84')]['views']){if(_0xab2d('0x22')!=typeof _0x37206b[_0xab2d('0x84')]['views'][_0xab2d('0x90')]){var _0x4e8efa=_0x37206b[_0xab2d('0x84')][_0xab2d('0x85')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xab2d('0x91')](_0x4e8efa)){_0x4ec099=path[_0xab2d('0x53')](_0xab2d('0x92'),_0x5b7ec3,_0x16a045[0x0],_0x4e8efa);}else{_0x4ec099=_0x4e8efa;}}if('undefined'!=typeof _0x37206b[_0xab2d('0x84')][_0xab2d('0x85')][_0xab2d('0x87')]){var _0x3f5699=_0x37206b[_0xab2d('0x84')][_0xab2d('0x85')][_0xab2d('0x87')];if(!/^(f|ht)tps?:\/\//i['test'](_0x3f5699)){_0x13205e=path[_0xab2d('0x53')](_0xab2d('0x92'),_0x5b7ec3,_0x16a045[0x0],_0x3f5699);}else{_0x13205e=_0x3f5699;}}}}var _0x4b88b1={'name':_0x18c766,'description':_0x5f3ccb,'path':path[_0xab2d('0x53')](_0x5b7ec3,_0x16a045[0x0]),'type':_0x4df94b,'sidebar':_0x298cdb,'icon':_0x129f93,'adminUrl':_0x4ec099,'agentUrl':_0x13205e,'scriptName':_0x16289b,'scriptPath':_0x562957,'version':_0x1653d2};removeReferences(_0x4f9b8e,null);return db['Plugin']['create'](_0x4b88b1)[_0xab2d('0x29')](function(_0x4c5a33){var _0x413f96={'role':_0x5da339['body']['role'],'userProfileId':_0x5da339[_0xab2d('0x94')]['userProfileId']};if(!_0x413f96)throw new Error(_0xab2d('0x95'));if(_0x413f96['role']==='user'){var _0x17a0e5=_0x4c5a33[_0xab2d('0x2b')]({'plain':!![]});return db[_0xab2d('0x96')][_0xab2d('0x52')]({'where':{'name':_0xab2d('0x2c'),'userProfileId':_0x413f96[_0xab2d('0x97')]},'raw':!![]})[_0xab2d('0x29')](function(_0x4be162){if(_0x4be162&&_0x4be162[_0xab2d('0x98')]===0x0){return db[_0xab2d('0x2d')][_0xab2d('0x99')]({'name':_0x17a0e5[_0xab2d('0x30')],'resourceId':_0x17a0e5['id'],'type':_0x4be162['name'],'sectionId':_0x4be162['id']},{})['then'](function(){return _0x4c5a33;});}else{return _0x4c5a33;}})['catch'](function(_0x1c1e45){logger[_0xab2d('0x2e')](_0xab2d('0x9a'),_0x1c1e45);throw _0x1c1e45;});}return _0x4c5a33;})[_0xab2d('0x29')](respondWithResult(_0x105e48,null))[_0xab2d('0x4f')](handleError(_0x105e48,null));}});}catch(_0x1948c6){_0x105e48[_0xab2d('0x20')](0x1f4)['send'](_0x1948c6);}};function removeReferences(_0x4f3bed,_0xc329fe){try{if(_0x4f3bed){fs[_0xab2d('0x6b')](_0x4f3bed);logger[_0xab2d('0x71')](_0xab2d('0x9b'));}if(_0xc329fe){rimraf(_0xc329fe,function(){});logger[_0xab2d('0x71')](_0xab2d('0x9c'));}}catch(_0x186793){logger[_0xab2d('0x2e')](_0x186793);}}exports[_0xab2d('0x28')]=function(_0x2956c9,_0x40af7c,_0x1a603d){return db[_0xab2d('0x34')][_0xab2d('0x52')]({'where':{'id':_0x2956c9[_0xab2d('0x51')]['id']}})[_0xab2d('0x29')](handleEntityNotFound(_0x40af7c,null))['then'](saveUpdates(_0x2956c9[_0xab2d('0x94')],null))['then'](respondWithResult(_0x40af7c,null))['catch'](handleError(_0x40af7c,null));};exports[_0xab2d('0x9d')]=function(_0x1fd51a,_0x27fbd2,_0x5b02d9){return db[_0xab2d('0x34')][_0xab2d('0x52')]({'where':{'id':_0x1fd51a['params']['id']}})[_0xab2d('0x29')](function(_0x505516){if(_0x505516){return _0x505516[_0xab2d('0x2a')]();}})[_0xab2d('0x29')](function(_0x80922a){rimraf(path[_0xab2d('0x53')](config[_0xab2d('0x54')],_0xab2d('0x55'),path['dirname'](_0x80922a[_0xab2d('0x6')])),function(){});return _0x80922a;})[_0xab2d('0x29')](handleEntityNotFound(_0x27fbd2,null))[_0xab2d('0x29')](respondWithStatusCode(_0x27fbd2,null))[_0xab2d('0x4f')](handleError(_0x27fbd2,null));};exports[_0xab2d('0x9e')]=function(_0x191f40,_0x3b6ac5,_0x18116e){return BPromise[_0xab2d('0x9f')]()[_0xab2d('0x29')](function(){if(!_0x191f40[_0xab2d('0x3a')]['path']){throw new Error(_0xab2d('0xa0'));}if(!_0x191f40['query'][_0xab2d('0xa1')]){throw new Error(_0xab2d('0xa2'));}var _0x5d7f8d=_0x191f40[_0xab2d('0x3a')][_0xab2d('0xa3')]?_0x191f40[_0xab2d('0x3a')][_0xab2d('0xa3')]+':'+_0x191f40['query'][_0xab2d('0xa1')]:_0xab2d('0xa4')+_0x191f40[_0xab2d('0x3a')][_0xab2d('0xa1')];var _0x263c57=_0x191f40['query'][_0xab2d('0x21')]?_0x191f40[_0xab2d('0x3a')][_0xab2d('0x21')]:!![];var _0x43c5f1=_0x191f40[_0xab2d('0x3a')]['encoding']?_0x191f40[_0xab2d('0x3a')][_0xab2d('0xa5')]:null;var _0x4b88c4={'method':_0x191f40[_0xab2d('0xa6')],'uri':util['format']('%s%s',_0x5d7f8d,_0x191f40['query'][_0xab2d('0x6')]),'json':_0x263c57,'resolveWithFullResponse':!![],'encoding':_0x43c5f1,'qs':_0x191f40[_0xab2d('0x3a')]};if(_0x191f40[_0xab2d('0xa7')]){_0x4b88c4[_0xab2d('0xa7')]=_0x191f40['headers'];if(_0x4b88c4[_0xab2d('0xa7')]['content-length']){delete _0x4b88c4['headers'][_0xab2d('0xa8')];}}if(_0x4b88c4[_0xab2d('0xa7')][_0xab2d('0xa9')]){delete _0x4b88c4[_0xab2d('0xa7')][_0xab2d('0xa9')];}return rp(_0x4b88c4);})['then'](function(_0x3a0f61){if(_0x3a0f61){_0x3b6ac5['set'](_0x3a0f61[_0xab2d('0xa7')]);logger['info'](_0x3a0f61[_0xab2d('0x94')]);if(_[_0xab2d('0xaa')](_0x191f40[_0xab2d('0x3a')][_0xab2d('0x6')],_0xab2d('0x69'))&&_0x3a0f61[_0xab2d('0xab')]==0x1f4){return _0x3b6ac5[_0xab2d('0x1e')](_0x3a0f61['statusCode']);}else{return _0x3b6ac5[_0xab2d('0x20')](_0x3a0f61['statusCode'])['send'](_0x3a0f61[_0xab2d('0x94')]);}}else{return _0x3b6ac5['sendStatus'](0xc8);}})['catch'](handleError(_0x3b6ac5,null));};exports[_0xab2d('0xac')]=function(_0x5564e3,_0x3d2865,_0x1cc585){return BPromise[_0xab2d('0x9f')]()[_0xab2d('0x29')](function(){if(!_0x5564e3['query'][_0xab2d('0x6')]){throw new Error(_0xab2d('0xa0'));}if(!_0x5564e3[_0xab2d('0x3a')][_0xab2d('0xa1')]){throw new Error(_0xab2d('0xa2'));}var _0x27a1c9=_0x5564e3[_0xab2d('0x3a')][_0xab2d('0xa3')]?_0x5564e3[_0xab2d('0x3a')][_0xab2d('0xa3')]+':'+_0x5564e3[_0xab2d('0x3a')]['port']:_0xab2d('0xa4')+_0x5564e3['query'][_0xab2d('0xa1')];var _0xc32482=_0x5564e3[_0xab2d('0x3a')][_0xab2d('0x21')]?_0x5564e3[_0xab2d('0x3a')]['json']:!![];var _0x147349=_0x5564e3[_0xab2d('0x3a')][_0xab2d('0xa5')]?_0x5564e3[_0xab2d('0x3a')][_0xab2d('0xa5')]:null;var _0x157512={'method':_0x5564e3[_0xab2d('0xa6')],'uri':util['format']('%s%s',_0x27a1c9,_0x5564e3[_0xab2d('0x3a')][_0xab2d('0x6')]),'json':_0xc32482,'resolveWithFullResponse':!![],'encoding':_0x147349,'body':_0x5564e3['body']};if(_0x5564e3['headers']){_0x157512[_0xab2d('0xa7')]=_0x5564e3[_0xab2d('0xa7')];if(_0x157512[_0xab2d('0xa7')][_0xab2d('0xa8')]){delete _0x157512['headers'][_0xab2d('0xa8')];}}if(_0x157512[_0xab2d('0xa7')][_0xab2d('0xa9')]){delete _0x157512[_0xab2d('0xa7')][_0xab2d('0xa9')];}return rp(_0x157512);})[_0xab2d('0x29')](function(_0x44f8b4){if(_0x44f8b4){_0x3d2865[_0xab2d('0x25')](_0x44f8b4[_0xab2d('0xa7')]);logger[_0xab2d('0x71')](_0x44f8b4[_0xab2d('0x94')]);return _0x3d2865['status'](_0x44f8b4[_0xab2d('0xab')])['send'](_0x44f8b4[_0xab2d('0x94')]);}else{return _0x3d2865[_0xab2d('0x1e')](0xc8);}})[_0xab2d('0x4f')](handleError(_0x3d2865,null));};
\ No newline at end of file
index 6c20c63..9cd610a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef96=['emit','hasOwnProperty','exports','events','../../mysqldb','Plugin','setMaxListeners','save','update'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xef96,0x162));var _0x6ef9=function(_0x2b7888,_0x3c16c7){_0x2b7888=_0x2b7888-0x0;var _0x4431c7=_0xef96[_0x2b7888];return _0x4431c7;};'use strict';var EventEmitter=require(_0x6ef9('0x0'));var Plugin=require(_0x6ef9('0x1'))['db'][_0x6ef9('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x6ef9('0x3')](0x0);var events={'afterCreate':_0x6ef9('0x4'),'afterUpdate':_0x6ef9('0x5'),'afterDestroy':'remove'};function emitEvent(_0x55b811){return function(_0x1eb2c2,_0x5391ed,_0x500b0c){PluginEvents[_0x6ef9('0x6')](_0x55b811+':'+_0x1eb2c2['id'],_0x1eb2c2);PluginEvents[_0x6ef9('0x6')](_0x55b811,_0x1eb2c2);_0x500b0c(null);};}for(var e in events){if(events[_0x6ef9('0x7')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module[_0x6ef9('0x8')]=PluginEvents;
\ No newline at end of file
+var _0x11e5=['emit','hasOwnProperty','hook','events','Plugin','setMaxListeners','update','remove'];(function(_0x2e6248,_0x3d7b75){var _0x20cce3=function(_0x3a542c){while(--_0x3a542c){_0x2e6248['push'](_0x2e6248['shift']());}};_0x20cce3(++_0x3d7b75);}(_0x11e5,0x8b));var _0x511e=function(_0x32d6fd,_0x2b6541){_0x32d6fd=_0x32d6fd-0x0;var _0x548066=_0x11e5[_0x32d6fd];return _0x548066;};'use strict';var EventEmitter=require(_0x511e('0x0'));var Plugin=require('../../mysqldb')['db'][_0x511e('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0x511e('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x511e('0x3'),'afterDestroy':_0x511e('0x4')};function emitEvent(_0x101e06){return function(_0x5cab33,_0x249e4d,_0x4fbd4f){PluginEvents['emit'](_0x101e06+':'+_0x5cab33['id'],_0x5cab33);PluginEvents[_0x511e('0x5')](_0x101e06,_0x5cab33);_0x4fbd4f(null);};}for(var e in events){if(events[_0x511e('0x6')](e)){var event=events[e];Plugin[_0x511e('0x7')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index 2ec69a0..21483c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84b8=['../../config/environment','Plugin','plugins','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x4b8dad,_0x1b4eb3){var _0x3c719a=function(_0x31ab57){while(--_0x31ab57){_0x4b8dad['push'](_0x4b8dad['shift']());}};_0x3c719a(++_0x1b4eb3);}(_0x84b8,0x7c));var _0x884b=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0x84b8[_0x2df507];return _0x1f7167;};'use strict';var _=require(_0x884b('0x0'));var util=require(_0x884b('0x1'));var logger=require(_0x884b('0x2'))('api');var moment=require(_0x884b('0x3'));var BPromise=require(_0x884b('0x4'));var rp=require(_0x884b('0x5'));var fs=require('fs');var path=require(_0x884b('0x6'));var rimraf=require(_0x884b('0x7'));var config=require(_0x884b('0x8'));var attributes=require('./plugin.attributes');module['exports']=function(_0x58c748,_0x2941b5){return _0x58c748['define'](_0x884b('0x9'),attributes,{'tableName':_0x884b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0e1a=['exports','define','Plugin','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./plugin.attributes'];(function(_0x239790,_0x39c001){var _0x381946=function(_0x3ba508){while(--_0x3ba508){_0x239790['push'](_0x239790['shift']());}};_0x381946(++_0x39c001);}(_0x0e1a,0xf3));var _0xa0e1=function(_0x4d57bc,_0x4e1575){_0x4d57bc=_0x4d57bc-0x0;var _0x5ca226=_0x0e1a[_0x4d57bc];return _0x5ca226;};'use strict';var _=require(_0xa0e1('0x0'));var util=require(_0xa0e1('0x1'));var logger=require(_0xa0e1('0x2'))(_0xa0e1('0x3'));var moment=require(_0xa0e1('0x4'));var BPromise=require(_0xa0e1('0x5'));var rp=require(_0xa0e1('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa0e1('0x7'));var attributes=require(_0xa0e1('0x8'));module[_0xa0e1('0x9')]=function(_0x48b4cf,_0x1d1435){return _0x48b4cf[_0xa0e1('0xa')](_0xa0e1('0xb'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 230390c..2c78180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f11=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','message','Plugin,\x20%s,\x20%s','result','catch','CreatePlugin','Plugin','body','options','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x29c9eb,_0x3d680b){var _0x438352=function(_0x1e5198){while(--_0x1e5198){_0x29c9eb['push'](_0x29c9eb['shift']());}};_0x438352(++_0x3d680b);}(_0x0f11,0xe7));var _0x10f1=function(_0x5db43b,_0x4e8619){_0x5db43b=_0x5db43b-0x0;var _0x3eca35=_0x0f11[_0x5db43b];return _0x3eca35;};'use strict';var _=require('lodash');var util=require(_0x10f1('0x0'));var moment=require(_0x10f1('0x1'));var BPromise=require(_0x10f1('0x2'));var rs=require(_0x10f1('0x3'));var fs=require('fs');var Redis=require(_0x10f1('0x4'));var db=require(_0x10f1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x10f1('0x6'))(_0x10f1('0x7'));var config=require(_0x10f1('0x8'));var jayson=require(_0x10f1('0x9'));var client=jayson[_0x10f1('0xa')][_0x10f1('0xb')]({'port':0x232a});config[_0x10f1('0xc')]=_[_0x10f1('0xd')](config[_0x10f1('0xc')],{'host':_0x10f1('0xe'),'port':0x18eb});var socket=require(_0x10f1('0xf'))(new Redis(config[_0x10f1('0xc')]));require('./plugin.socket')[_0x10f1('0x10')](socket);function respondWithRpcPromise(_0x209c97,_0x163f6e,_0xad798){return new BPromise(function(_0x446d15,_0x1a8fc9){return client[_0x10f1('0x11')](_0x209c97,_0xad798)[_0x10f1('0x12')](function(_0x57668d){logger[_0x10f1('0x13')]('Plugin,\x20%s,\x20%s',_0x163f6e,_0x10f1('0x14'));logger[_0x10f1('0x15')](_0x10f1('0x16'),_0x163f6e,_0x10f1('0x14'),JSON[_0x10f1('0x17')](_0x57668d));if(_0x57668d[_0x10f1('0x18')]){if(_0x57668d[_0x10f1('0x18')]['code']===0x1f4){logger[_0x10f1('0x18')]('Plugin,\x20%s,\x20%s',_0x163f6e,_0x57668d[_0x10f1('0x18')]['message']);return _0x1a8fc9(_0x57668d[_0x10f1('0x18')][_0x10f1('0x19')]);}logger[_0x10f1('0x18')](_0x10f1('0x1a'),_0x163f6e,_0x57668d[_0x10f1('0x18')]['message']);return _0x446d15(_0x57668d[_0x10f1('0x18')][_0x10f1('0x19')]);}else{logger['info']('Plugin,\x20%s,\x20%s',_0x163f6e,_0x10f1('0x14'));_0x446d15(_0x57668d[_0x10f1('0x1b')][_0x10f1('0x19')]);}})[_0x10f1('0x1c')](function(_0x3d6c2b){logger[_0x10f1('0x18')]('Plugin,\x20%s,\x20%s',_0x163f6e,_0x3d6c2b);_0x1a8fc9(_0x3d6c2b);});});}exports[_0x10f1('0x1d')]=function(_0x58a653){var _0x48d591=this;return new Promise(function(_0x2e7d2e,_0x171b06){return db[_0x10f1('0x1e')]['create'](_0x58a653[_0x10f1('0x1f')],{'raw':_0x58a653[_0x10f1('0x20')]?_0x58a653['options'][_0x10f1('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x4c01c3){logger['info'](_0x10f1('0x1d'),_0x58a653);logger[_0x10f1('0x15')](_0x10f1('0x1d'),_0x58a653,JSON['stringify'](_0x4c01c3));_0x2e7d2e(_0x4c01c3);})['catch'](function(_0x2d1a2a){logger['error'](_0x10f1('0x1d'),_0x2d1a2a[_0x10f1('0x19')],_0x58a653);_0x171b06(_0x48d591[_0x10f1('0x18')](0x1f4,_0x2d1a2a[_0x10f1('0x19')]));});});};
\ No newline at end of file
+var _0x8bac=['CreatePlugin','catch','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','request','then','Plugin,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','Plugin','create','body','options','raw','info'];(function(_0x31e628,_0x333e64){var _0x37584=function(_0x2a1623){while(--_0x2a1623){_0x31e628['push'](_0x31e628['shift']());}};_0x37584(++_0x333e64);}(_0x8bac,0x110));var _0xc8ba=function(_0x4ab99,_0x219ed2){_0x4ab99=_0x4ab99-0x0;var _0x29e39c=_0x8bac[_0x4ab99];return _0x29e39c;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc8ba('0x0'));var fs=require('fs');var Redis=require(_0xc8ba('0x1'));var db=require(_0xc8ba('0x2'))['db'];var utils=require(_0xc8ba('0x3'));var logger=require(_0xc8ba('0x4'))(_0xc8ba('0x5'));var config=require(_0xc8ba('0x6'));var jayson=require(_0xc8ba('0x7'));var client=jayson[_0xc8ba('0x8')]['http']({'port':0x232a});config['redis']=_[_0xc8ba('0x9')](config[_0xc8ba('0xa')],{'host':_0xc8ba('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc8ba('0xa')]));require('./plugin.socket')['register'](socket);function respondWithRpcPromise(_0x36b434,_0x1bc991,_0x40123a){return new BPromise(function(_0x8669b8,_0x1c5fc7){return client[_0xc8ba('0xc')](_0x36b434,_0x40123a)[_0xc8ba('0xd')](function(_0x17b3d9){logger['info'](_0xc8ba('0xe'),_0x1bc991,_0xc8ba('0xf'));logger[_0xc8ba('0x10')]('Plugin,\x20%s,\x20%s,\x20%s',_0x1bc991,'request\x20sent',JSON[_0xc8ba('0x11')](_0x17b3d9));if(_0x17b3d9[_0xc8ba('0x12')]){if(_0x17b3d9[_0xc8ba('0x12')][_0xc8ba('0x13')]===0x1f4){logger['error'](_0xc8ba('0xe'),_0x1bc991,_0x17b3d9['error'][_0xc8ba('0x14')]);return _0x1c5fc7(_0x17b3d9[_0xc8ba('0x12')][_0xc8ba('0x14')]);}logger['error'](_0xc8ba('0xe'),_0x1bc991,_0x17b3d9[_0xc8ba('0x12')][_0xc8ba('0x14')]);return _0x8669b8(_0x17b3d9[_0xc8ba('0x12')]['message']);}else{logger['info'](_0xc8ba('0xe'),_0x1bc991,_0xc8ba('0xf'));_0x8669b8(_0x17b3d9[_0xc8ba('0x15')]['message']);}})['catch'](function(_0x596b05){logger[_0xc8ba('0x12')](_0xc8ba('0xe'),_0x1bc991,_0x596b05);_0x1c5fc7(_0x596b05);});});}exports['CreatePlugin']=function(_0x56a9fc){var _0x16b636=this;return new Promise(function(_0x5fa389,_0x435b41){return db[_0xc8ba('0x16')][_0xc8ba('0x17')](_0x56a9fc[_0xc8ba('0x18')],{'raw':_0x56a9fc[_0xc8ba('0x19')]?_0x56a9fc[_0xc8ba('0x19')][_0xc8ba('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x571e08){logger[_0xc8ba('0x1b')](_0xc8ba('0x1c'),_0x56a9fc);logger[_0xc8ba('0x10')](_0xc8ba('0x1c'),_0x56a9fc,JSON['stringify'](_0x571e08));_0x5fa389(_0x571e08);})[_0xc8ba('0x1d')](function(_0x4f17ae){logger[_0xc8ba('0x12')](_0xc8ba('0x1c'),_0x4f17ae['message'],_0x56a9fc);_0x435b41(_0x16b636[_0xc8ba('0x12')](0x1f4,_0x4f17ae[_0xc8ba('0x14')]));});});};
\ No newline at end of file
index 69517c6..52214ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa77c=['emit','removeListener','register','length','plugin:','./plugin.events','save','update'];(function(_0x485d7b,_0x3f3b52){var _0x899877=function(_0x34639c){while(--_0x34639c){_0x485d7b['push'](_0x485d7b['shift']());}};_0x899877(++_0x3f3b52);}(_0xa77c,0x6d));var _0xca77=function(_0x4bbd78,_0x5e4b51){_0x4bbd78=_0x4bbd78-0x0;var _0x42526e=_0xa77c[_0x4bbd78];return _0x42526e;};'use strict';var PluginEvents=require(_0xca77('0x0'));var events=[_0xca77('0x1'),'remove',_0xca77('0x2')];function createListener(_0x1bb6df,_0x4535f0){return function(_0x5a2143){_0x4535f0[_0xca77('0x3')](_0x1bb6df,_0x5a2143);};}function removeListener(_0x1309d2,_0x26b3a0){return function(){PluginEvents[_0xca77('0x4')](_0x1309d2,_0x26b3a0);};}exports[_0xca77('0x5')]=function(_0x4c81db){for(var _0x576205=0x0,_0x4b34e0=events[_0xca77('0x6')];_0x576205<_0x4b34e0;_0x576205++){var _0x5e575f=events[_0x576205];var _0x46bb82=createListener(_0xca77('0x7')+_0x5e575f,_0x4c81db);PluginEvents['on'](_0x5e575f,_0x46bb82);}};
\ No newline at end of file
+var _0x4c85=['register','length','plugin:','./plugin.events','save','remove','emit','removeListener'];(function(_0x2eda79,_0x45c698){var _0x5443e6=function(_0x3fc0e5){while(--_0x3fc0e5){_0x2eda79['push'](_0x2eda79['shift']());}};_0x5443e6(++_0x45c698);}(_0x4c85,0xf3));var _0x54c8=function(_0x3ec13e,_0x4e5c4d){_0x3ec13e=_0x3ec13e-0x0;var _0x5a02ff=_0x4c85[_0x3ec13e];return _0x5a02ff;};'use strict';var PluginEvents=require(_0x54c8('0x0'));var events=[_0x54c8('0x1'),_0x54c8('0x2'),'update'];function createListener(_0x552729,_0x3ad3e4){return function(_0x282525){_0x3ad3e4[_0x54c8('0x3')](_0x552729,_0x282525);};}function removeListener(_0x462675,_0x5f37b6){return function(){PluginEvents[_0x54c8('0x4')](_0x462675,_0x5f37b6);};}exports[_0x54c8('0x5')]=function(_0x364d58){for(var _0x3e06f7=0x0,_0x14cffd=events[_0x54c8('0x6')];_0x3e06f7<_0x14cffd;_0x3e06f7++){var _0x368eef=events[_0x3e06f7];var _0x550c32=createListener(_0x54c8('0x7')+_0x368eef,_0x364d58);PluginEvents['on'](_0x368eef,_0x550c32);}};
\ No newline at end of file
index e026b5f..1df5f6c 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(_0x2df2e6,_0xe93959){var _0x1831dc=function(_0x24a555){while(--_0x24a555){_0x2df2e6['push'](_0x2df2e6['shift']());}};_0x1831dc(++_0xe93959);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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(_0x1107eb,_0x1bd38f){var _0x2ea608=function(_0x4f8b78){while(--_0x4f8b78){_0x1107eb['push'](_0x1107eb['shift']());}};_0x2ea608(++_0x1bd38f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'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 253dfeb..fbf7901 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1339=['body','params','delete','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','status','json','error','stack','name','npm\x20install','info','then','reject','motion2','catch','show','describe','create','../../files/plugins','cwd','chdir','start','dump','send','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty'];(function(_0x39bfb6,_0x4272c8){var _0x23fef9=function(_0x5f83c1){while(--_0x5f83c1){_0x39bfb6['push'](_0x39bfb6['shift']());}};_0x23fef9(++_0x4272c8);}(_0x1339,0x1ed));var _0x9133=function(_0x55ffe8,_0x1236df){_0x55ffe8=_0x55ffe8-0x0;var _0x289b3f=_0x1339[_0x55ffe8];return _0x289b3f;};'use strict';var _=require('lodash');var pm2=require('../../config/pm2');var logger=require(_0x9133('0x0'))(_0x9133('0x1'));var path=require(_0x9133('0x2'));var exec=require(_0x9133('0x3'))[_0x9133('0x4')];var BPromise=require(_0x9133('0x5'));function handleEntityNotFound(_0x176e80,_0x110c51){return function(_0x558345){if(!_0x558345){_0x176e80[_0x9133('0x6')](0x194);;}return _0x558345;};}function respondWithResult(_0x855473,_0x379915){_0x379915=_0x379915||0xc8;return function(_0x539af6){if(_0x539af6){return _0x855473[_0x9133('0x7')](_0x379915)[_0x9133('0x8')](_0x539af6);}return null;};}function handleError(_0x3059c4,_0x431a55){_0x431a55=_0x431a55||0x1f4;return function(_0x261698){logger[_0x9133('0x9')](_0x261698[_0x9133('0xa')]);if(_0x261698[_0x9133('0xb')]){delete _0x261698[_0x9133('0xb')];}_0x3059c4[_0x9133('0x7')](_0x431a55)['send'](_0x261698);};}function execChildProcess(){return new BPromise(function(_0x3f9650,_0x3533fa){exec(_0x9133('0xc'),function(_0x452481,_0x3b8f89,_0x244ced){logger['info'](_0x3b8f89);logger[_0x9133('0xd')](_0x244ced);if(_0x452481){logger[_0x9133('0x9')](_0x452481);return _0x3533fa(_0x452481);}return _0x3f9650(_0x3b8f89);});});}exports['index']=function(_0x5283a3,_0x10475c){return pm2['list']()[_0x9133('0xe')](function(_0x439e1a){if(_0x439e1a){var _0x17dfd1=_[_0x9133('0xf')](_0x439e1a,function(_0x31847a){return _0x31847a[_0x9133('0xb')]==='express'||_0x31847a[_0x9133('0xb')]===_0x9133('0x10');});return{'rows':_0x17dfd1,'count':_0x17dfd1['length']};}return null;})[_0x9133('0xe')](respondWithResult(_0x10475c,null))[_0x9133('0x11')](handleError(_0x10475c,null));};exports[_0x9133('0x12')]=function(_0x427663,_0x4a2c4f){return pm2[_0x9133('0x13')](_0x427663['params']['id'])[_0x9133('0xe')](respondWithResult(_0x4a2c4f,null))['then'](handleEntityNotFound(_0x4a2c4f,null))[_0x9133('0x11')](handleError(_0x4a2c4f,null));};exports[_0x9133('0x14')]=function(_0x5e8620,_0x38dd60){if(_0x5e8620['body'][_0x9133('0xb')]&&_0x5e8620['body']['script']){var _0x2f7354=path['join'](__dirname,_0x9133('0x15'),_0x5e8620['body']['script']);var _0x4c846e=process[_0x9133('0x16')]();process[_0x9133('0x17')](path['dirname'](_0x2f7354));return execChildProcess()[_0x9133('0xe')](function(_0x3f5d0e){process[_0x9133('0x17')](_0x4c846e);return pm2[_0x9133('0x18')]({'name':_0x5e8620['body'][_0x9133('0xb')],'script':_0x2f7354});})['then'](function(_0x187e32){pm2[_0x9133('0x19')]();return _0x187e32[0x0];})[_0x9133('0xe')](respondWithResult(_0x38dd60,0xc9))[_0x9133('0x11')](handleError(_0x38dd60,null));}else{return _0x38dd60[_0x9133('0x7')](0x1f4)[_0x9133('0x1a')]({'message':_0x9133('0x1b')});}};exports[_0x9133('0x1c')]=function(_0x1b6b3e,_0x46050b){if(_0x1b6b3e['body']['id']){delete _0x1b6b3e['body']['id'];}var _0x477bf1={'online':_0x9133('0x1d'),'stopped':_0x9133('0x1e')};if(_0x477bf1[_0x9133('0x1f')](_0x1b6b3e['body']['status'])){return pm2[_0x477bf1[_0x1b6b3e[_0x9133('0x20')][_0x9133('0x7')]]](_0x1b6b3e[_0x9133('0x21')]['id'])[_0x9133('0xe')](respondWithResult(_0x46050b,0xc8))[_0x9133('0x11')](handleError(_0x46050b,null));}else{return _0x46050b[_0x9133('0x7')](0x1f4)['send']({'message':'Unknown\x20status'});}};exports['destroy']=function(_0x1ad222,_0x4a4a8e){if(_0x1ad222[_0x9133('0x20')]['id']){delete _0x1ad222[_0x9133('0x20')]['id'];}if(_0x1ad222['params']['id']){return pm2[_0x9133('0x22')](_0x1ad222['params']['id'])[_0x9133('0xe')](function(_0x26ca56){pm2[_0x9133('0x19')]();return _0x26ca56[0x0];})['then'](respondWithResult(_0x4a4a8e,null))[_0x9133('0x11')](handleError(_0x4a4a8e,null));}else{return _0x4a4a8e[_0x9133('0x7')](0x1f4)[_0x9133('0x1a')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
+var _0x3140=['send','npm\x20install','info','error','index','then','reject','express','length','catch','params','create','body','script','join','../../files/plugins','cwd','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','update','stop','hasOwnProperty','Unknown\x20status','destroy','lodash','../../config/pm2','../../config/logger','api','exec','bluebird','sendStatus','status','json','name'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x3140,0xaf));var _0x0314=function(_0x413b13,_0x4a25de){_0x413b13=_0x413b13-0x0;var _0x1cad2e=_0x3140[_0x413b13];return _0x1cad2e;};'use strict';var _=require(_0x0314('0x0'));var pm2=require(_0x0314('0x1'));var logger=require(_0x0314('0x2'))(_0x0314('0x3'));var path=require('path');var exec=require('child_process')[_0x0314('0x4')];var BPromise=require(_0x0314('0x5'));function handleEntityNotFound(_0x1c0f66,_0x3e4284){return function(_0x254566){if(!_0x254566){_0x1c0f66[_0x0314('0x6')](0x194);;}return _0x254566;};}function respondWithResult(_0x9e308d,_0xf87d26){_0xf87d26=_0xf87d26||0xc8;return function(_0x11ee94){if(_0x11ee94){return _0x9e308d[_0x0314('0x7')](_0xf87d26)[_0x0314('0x8')](_0x11ee94);}return null;};}function handleError(_0x495b27,_0x26031f){_0x26031f=_0x26031f||0x1f4;return function(_0x2d87d2){logger['error'](_0x2d87d2['stack']);if(_0x2d87d2[_0x0314('0x9')]){delete _0x2d87d2['name'];}_0x495b27[_0x0314('0x7')](_0x26031f)[_0x0314('0xa')](_0x2d87d2);};}function execChildProcess(){return new BPromise(function(_0x3a7713,_0x376da9){exec(_0x0314('0xb'),function(_0x3e9964,_0x516448,_0xe78fb9){logger[_0x0314('0xc')](_0x516448);logger[_0x0314('0xc')](_0xe78fb9);if(_0x3e9964){logger[_0x0314('0xd')](_0x3e9964);return _0x376da9(_0x3e9964);}return _0x3a7713(_0x516448);});});}exports[_0x0314('0xe')]=function(_0x4318d6,_0x149b67){return pm2['list']()[_0x0314('0xf')](function(_0xbe0b07){if(_0xbe0b07){var _0x1316a0=_[_0x0314('0x10')](_0xbe0b07,function(_0x40566e){return _0x40566e[_0x0314('0x9')]===_0x0314('0x11')||_0x40566e[_0x0314('0x9')]==='motion2';});return{'rows':_0x1316a0,'count':_0x1316a0[_0x0314('0x12')]};}return null;})[_0x0314('0xf')](respondWithResult(_0x149b67,null))[_0x0314('0x13')](handleError(_0x149b67,null));};exports['show']=function(_0x6c48cb,_0x5f2e82){return pm2['describe'](_0x6c48cb[_0x0314('0x14')]['id'])[_0x0314('0xf')](respondWithResult(_0x5f2e82,null))['then'](handleEntityNotFound(_0x5f2e82,null))[_0x0314('0x13')](handleError(_0x5f2e82,null));};exports[_0x0314('0x15')]=function(_0x583ffa,_0x1a25cf){if(_0x583ffa['body'][_0x0314('0x9')]&&_0x583ffa[_0x0314('0x16')][_0x0314('0x17')]){var _0x77ddfd=path[_0x0314('0x18')](__dirname,_0x0314('0x19'),_0x583ffa['body']['script']);var _0x20305b=process[_0x0314('0x1a')]();process[_0x0314('0x1b')](path[_0x0314('0x1c')](_0x77ddfd));return execChildProcess()[_0x0314('0xf')](function(_0xd7638b){process['chdir'](_0x20305b);return pm2[_0x0314('0x1d')]({'name':_0x583ffa[_0x0314('0x16')]['name'],'script':_0x77ddfd});})[_0x0314('0xf')](function(_0xfc4893){pm2[_0x0314('0x1e')]();return _0xfc4893[0x0];})[_0x0314('0xf')](respondWithResult(_0x1a25cf,0xc9))[_0x0314('0x13')](handleError(_0x1a25cf,null));}else{return _0x1a25cf[_0x0314('0x7')](0x1f4)['send']({'message':_0x0314('0x1f')});}};exports[_0x0314('0x20')]=function(_0x2d636b,_0x47c2d1){if(_0x2d636b[_0x0314('0x16')]['id']){delete _0x2d636b[_0x0314('0x16')]['id'];}var _0x47c102={'online':'restart','stopped':_0x0314('0x21')};if(_0x47c102[_0x0314('0x22')](_0x2d636b['body'][_0x0314('0x7')])){return pm2[_0x47c102[_0x2d636b[_0x0314('0x16')]['status']]](_0x2d636b['params']['id'])[_0x0314('0xf')](respondWithResult(_0x47c2d1,0xc8))[_0x0314('0x13')](handleError(_0x47c2d1,null));}else{return _0x47c2d1['status'](0x1f4)[_0x0314('0xa')]({'message':_0x0314('0x23')});}};exports[_0x0314('0x24')]=function(_0x4da71c,_0x5b82b2){if(_0x4da71c[_0x0314('0x16')]['id']){delete _0x4da71c[_0x0314('0x16')]['id'];}if(_0x4da71c[_0x0314('0x14')]['id']){return pm2['delete'](_0x4da71c[_0x0314('0x14')]['id'])['then'](function(_0x52700f){pm2[_0x0314('0x1e')]();return _0x52700f[0x0];})[_0x0314('0xf')](respondWithResult(_0x5b82b2,null))[_0x0314('0x13')](handleError(_0x5b82b2,null));}else{return _0x5b82b2['status'](0x1f4)[_0x0314('0xa')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
index 135bd19..cf1029a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x280d=['connect-timeout','express','Router','fs-extra','../../components/auth/service','./realtime.controller','get','getQueues','exports','multer','util','path'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x280d,0x69));var _0xd280=function(_0x1fd100,_0x59a4f6){_0x1fd100=_0x1fd100-0x0;var _0x1c7399=_0x280d[_0x1fd100];return _0x1c7399;};'use strict';var multer=require(_0xd280('0x0'));var util=require(_0xd280('0x1'));var path=require(_0xd280('0x2'));var timeout=require(_0xd280('0x3'));var express=require(_0xd280('0x4'));var router=express[_0xd280('0x5')]();var fs_extra=require(_0xd280('0x6'));var auth=require(_0xd280('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd280('0x8'));router[_0xd280('0x9')]('/queues',auth['isAuthenticated'](),controller[_0xd280('0xa')]);module[_0xd280('0xb')]=router;
\ No newline at end of file
+var _0xd47f=['get','/queues','isAuthenticated','getQueues','exports','express','../../components/auth/service','./realtime.controller'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xd47f,0x1bd));var _0xfd47=function(_0xb98e6e,_0xe56cbc){_0xb98e6e=_0xb98e6e-0x0;var _0x26751c=_0xd47f[_0xb98e6e];return _0x26751c;};'use strict';var express=require(_0xfd47('0x0'));var router=express['Router']();var auth=require(_0xfd47('0x1'));var controller=require(_0xfd47('0x2'));router[_0xfd47('0x3')](_0xfd47('0x4'),auth[_0xfd47('0x5')](),controller[_0xfd47('0x6')]);module[_0xfd47('0x7')]=router;
\ No newline at end of file
index 25e7dab..802a622 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1964=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','Realtime,\x20%s,\x20%s','request\x20sent','debug','Realtime,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','offset','limit','count','set','Content-Range','json','apply','reject','save','update','stack','name','send','getQueues','mail','chat','sms','openchannel','fax','whatsapp','voice','resolve','query','channel','includes','toLowerCase','Invalid\x20channel','startCase','Queue','map','rawAttributes','fieldName','type','getOptions','user','role','userProfileId','QueueCampaigns','filter','UserProfile','getResources','findAndCountAll','format','result','loggedIn','available','waiting','paused','outbound','push','originated','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','rows','get','loggedInDb','talking','pTalking','merge','pick','getAgents','online','length','find','UserId','User','QueueId','Pause','findAll','agent','agents','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0xb38733,_0x377776){var _0x6e0a81=function(_0x5a164a){while(--_0x5a164a){_0xb38733['push'](_0xb38733['shift']());}};_0x6e0a81(++_0x377776);}(_0x1964,0x6b));var _0x4196=function(_0x5b4e46,_0xe6008d){_0x5b4e46=_0x5b4e46-0x0;var _0x5a229f=_0x1964[_0x5b4e46];return _0x5a229f;};'use strict';var emlformat=require(_0x4196('0x0'));var rimraf=require(_0x4196('0x1'));var zipdir=require(_0x4196('0x2'));var jsonpatch=require(_0x4196('0x3'));var rp=require(_0x4196('0x4'));var moment=require(_0x4196('0x5'));var BPromise=require(_0x4196('0x6'));var Mustache=require(_0x4196('0x7'));var util=require('util');var path=require(_0x4196('0x8'));var sox=require(_0x4196('0x9'));var csv=require('to-csv');var ejs=require(_0x4196('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4196('0xb'));var squel=require(_0x4196('0xc'));var crypto=require('crypto');var jsforce=require(_0x4196('0xd'));var deskjs=require(_0x4196('0xe'));var toCsv=require(_0x4196('0xf'));var querystring=require(_0x4196('0x10'));var Papa=require(_0x4196('0x11'));var Redis=require(_0x4196('0x12'));var authService=require(_0x4196('0x13'));var qs=require(_0x4196('0x14'));var as=require(_0x4196('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4196('0x16'))(_0x4196('0x17'));var utils=require(_0x4196('0x18'));var config=require(_0x4196('0x19'));var licenseUtil=require(_0x4196('0x1a'));var db=require(_0x4196('0x1b'))['db'];var jayson=require(_0x4196('0x1c'));var client=jayson[_0x4196('0x1d')][_0x4196('0x1e')]({'port':0x232a});var routingClient=jayson[_0x4196('0x1d')]['http']({'port':0x232c});function respondWithRpcPromise(_0x6063cf,_0x1dbe57,_0x327852,_0x24a2c1){return new BPromise(function(_0x2b0211,_0x420d14){var _0x2de6a8=_0x24a2c1||client;return _0x2de6a8[_0x4196('0x1f')](_0x6063cf,_0x327852)[_0x4196('0x20')](function(_0x126471){logger[_0x4196('0x21')](_0x4196('0x22'),_0x1dbe57,_0x4196('0x23'));logger[_0x4196('0x24')](_0x4196('0x25'),_0x1dbe57,_0x4196('0x23'),JSON[_0x4196('0x26')](_0x126471));if(_0x126471['error']){if(_0x126471[_0x4196('0x27')][_0x4196('0x28')]===0x1f4){logger[_0x4196('0x27')]('Realtime,\x20%s,\x20%s',_0x1dbe57,_0x126471[_0x4196('0x27')]['message']);return _0x420d14(_0x126471[_0x4196('0x27')][_0x4196('0x29')]);}logger['error'](_0x4196('0x22'),_0x1dbe57,_0x126471['error'][_0x4196('0x29')]);return _0x2b0211(_0x126471[_0x4196('0x27')]['message']);}else{logger['info'](_0x4196('0x22'),_0x1dbe57,_0x4196('0x23'));_0x2b0211(_0x126471['result'][_0x4196('0x29')]);}})[_0x4196('0x2a')](function(_0x29b474){logger[_0x4196('0x27')]('Realtime,\x20%s,\x20%s',_0x1dbe57,_0x29b474);_0x420d14(_0x29b474);});});}function respondWithStatusCode(_0xd306f0,_0x25e8f2){_0x25e8f2=_0x25e8f2||0xcc;return function(_0x4ef624){if(_0x4ef624){return _0xd306f0[_0x4196('0x2b')](_0x25e8f2);}return _0xd306f0[_0x4196('0x2c')](_0x25e8f2)[_0x4196('0x2d')]();};}function respondWithResult(_0x210cb3,_0x9f8d90){_0x9f8d90=_0x9f8d90||0xc8;return function(_0x9a5a17){if(_0x9a5a17){return _0x210cb3[_0x4196('0x2c')](_0x9f8d90)['json'](_0x9a5a17);}};}function respondWithFilteredResult(_0x1d95f3,_0xccf26c){return function(_0x165967){if(_0x165967){var _0x3e9058=typeof _0xccf26c[_0x4196('0x2e')]==='undefined'&&typeof _0xccf26c[_0x4196('0x2f')]==='undefined';var _0x2dfd8b=_0x165967[_0x4196('0x30')];var _0x2e5eb5=_0x3e9058?0x0:_0xccf26c[_0x4196('0x2e')];var _0x15cb76=_0x3e9058?_0x165967[_0x4196('0x30')]:_0xccf26c[_0x4196('0x2e')]+_0xccf26c[_0x4196('0x2f')];var _0x55c00f;if(_0x15cb76>=_0x2dfd8b){_0x15cb76=_0x2dfd8b;_0x55c00f=0xc8;}else{_0x55c00f=0xce;}_0x1d95f3[_0x4196('0x2c')](_0x55c00f);return _0x1d95f3[_0x4196('0x31')](_0x4196('0x32'),_0x2e5eb5+'-'+_0x15cb76+'/'+_0x2dfd8b)[_0x4196('0x33')](_0x165967);}return null;};}function patchUpdates(_0xa3860a){return function(_0x515228){try{jsonpatch[_0x4196('0x34')](_0x515228,_0xa3860a,!![]);}catch(_0x21ea43){return BPromise[_0x4196('0x35')](_0x21ea43);}return _0x515228[_0x4196('0x36')]();};}function saveUpdates(_0x5aa2a4,_0x30d968){return function(_0x520362){if(_0x520362){return _0x520362[_0x4196('0x37')](_0x5aa2a4)[_0x4196('0x20')](function(_0xb21239){return _0xb21239;});}return null;};}function removeEntity(_0x1b67dd,_0x32dd5a){return function(_0x29d22d){if(_0x29d22d){return _0x29d22d['destroy']()[_0x4196('0x20')](function(){_0x1b67dd[_0x4196('0x2c')](0xcc)[_0x4196('0x2d')]();});}};}function handleEntityNotFound(_0x229776,_0x3a2328){return function(_0x1f7466){if(!_0x1f7466){_0x229776['sendStatus'](0x194);}return _0x1f7466;};}function handleError(_0x29c79d,_0x26d58d){_0x26d58d=_0x26d58d||0x1f4;return function(_0x4be2d9){logger['error'](_0x4be2d9[_0x4196('0x38')]);if(_0x4be2d9[_0x4196('0x39')]){delete _0x4be2d9[_0x4196('0x39')];}_0x29c79d[_0x4196('0x2c')](_0x26d58d)[_0x4196('0x3a')](_0x4be2d9);};}exports[_0x4196('0x3b')]=function(_0x5bd998,_0x5f1b9d){var _0x4aaa74=[_0x4196('0x3c'),_0x4196('0x3d'),_0x4196('0x3e'),_0x4196('0x3f'),_0x4196('0x40'),_0x4196('0x41'),_0x4196('0x42')];var _0x4b5b79={'count':0x0,'rows':[]},_0x4266ac={},_0x5eb7e7;Promise[_0x4196('0x43')]()['then'](function(){if(_0x5bd998[_0x4196('0x44')][_0x4196('0x45')]){if(!_[_0x4196('0x46')](_0x4aaa74,_0x5bd998[_0x4196('0x44')][_0x4196('0x45')][_0x4196('0x47')]()))throw new Error(_0x4196('0x48'));_0x5eb7e7=_0x5bd998[_0x4196('0x44')]['channel'][_0x4196('0x47')]();}var _0x36dac1=_[_0x4196('0x49')](_0x5eb7e7)+_0x4196('0x4a');var _0x3e8d4f=_[_0x4196('0x4b')](db[_0x36dac1][_0x4196('0x4c')],function(_0x570715){return{'name':_0x570715[_0x4196('0x4d')],'type':_0x570715[_0x4196('0x4e')]['key']};});_0x4266ac=qs[_0x4196('0x4f')](_0x3e8d4f,_0x5bd998);if(_0x5bd998[_0x4196('0x50')][_0x4196('0x51')]==='user'){var _0x273f2d={'params':{'id':_0x5bd998[_0x4196('0x50')][_0x4196('0x52')]},'query':{'section':_0x5eb7e7===_0x4196('0x42')&&_0x5bd998['query'][_0x4196('0x4e')]==='outbound'?_0x4196('0x53'):_[_0x4196('0x49')](_0x5eb7e7)+'Queues','type':_0x5bd998[_0x4196('0x44')][_0x4196('0x4e')],'nolimit':!![],'sort':'name','filter':_0x5bd998[_0x4196('0x44')][_0x4196('0x54')]}};return db[_0x4196('0x55')][_0x4196('0x56')](_0x273f2d);}return db[_0x36dac1][_0x4196('0x57')](_0x4266ac);})[_0x4196('0x20')](function(_0x10c4a8){_0x4b5b79[_0x4196('0x30')]=_0x10c4a8[_0x4196('0x30')];var _0x9018ab=_0x5eb7e7===_0x4196('0x42')?client:routingClient;return _0x9018ab['request'](_[_0x4196('0x49')](_0x5eb7e7)+'Queues',_0x5bd998)[_0x4196('0x20')](function(_0x238e93){if(_0x238e93['error'])throw new Error(util[_0x4196('0x58')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x5eb7e7));var _0x3bdd8a=_0x238e93[_0x4196('0x59')];var _0xd3e821=[_0x4196('0x5a'),_0x4196('0x5b'),_0x4196('0x5c'),'talking',_0x4196('0x5d')];if(_0x5eb7e7===_0x4196('0x42')&&_0x5bd998[_0x4196('0x44')][_0x4196('0x4e')]===_0x4196('0x5e')){_0xd3e821[_0x4196('0x5f')]('pTalking',_0x4196('0x60'),_0x4196('0x29'),_0x4196('0x61'),_0x4196('0x62'),_0x4196('0x63'),_0x4196('0x64'),_0x4196('0x65'),_0x4196('0x66'),_0x4196('0x67'),_0x4196('0x68'),'erlangBusyFactor',_0x4196('0x69'),_0x4196('0x6a'),_0x4196('0x6b'),_0x4196('0x6c'),_0x4196('0x6d'),_0x4196('0x6e'),'predictiveIntervalDroppedCallsTimeout',_0x4196('0x6f'),'predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime');}var _0x9a10af=_0x10c4a8[_0x4196('0x70')][_0x4196('0x4b')](function(_0x4d42e1){var _0x2f5089=_0x4d42e1[_0x4196('0x71')]({'plain':!![]});_0x2f5089[_0x4196('0x5d')]=0x0;_0x2f5089[_0x4196('0x72')]=0x0;_0x2f5089[_0x4196('0x5a')]=0x0;_0x2f5089['available']=0x0;_0x2f5089[_0x4196('0x5d')]=0x0;_0x2f5089[_0x4196('0x5c')]=0x0;if(_0x5eb7e7===_0x4196('0x42')){_0x2f5089[_0x4196('0x73')]=0x0;if(_0x5bd998[_0x4196('0x44')]['type']===_0x4196('0x5e')){_0x2f5089[_0x4196('0x74')]=0x0;_0x2f5089['originated']=0x0;}}_0x2f5089['agents']=[];var _0x2958d1=_['find'](_0x3bdd8a[_0x4196('0x70')],['id',_0x2f5089['id']]);if(_0x2958d1)_[_0x4196('0x75')](_0x2f5089,_[_0x4196('0x76')](_0x2958d1,_0xd3e821));if(_0x5eb7e7===_0x4196('0x42')){return _0x4d42e1[_0x4196('0x77')]({'attributes':['id',_0x4196('0x39'),_0x4196('0x78')],'joinTableAttributes':[],'raw':!![]})['then'](function(_0x198dfc){return _0x4d42e1['getMembers']({'raw':!![]})[_0x4196('0x20')](function(_0x2bacaa){for(var _0x31a741=0x0;_0x31a741<_0x198dfc[_0x4196('0x79')];_0x31a741++){var _0x1876d4=_[_0x4196('0x7a')](_0x2bacaa,[_0x4196('0x7b'),_0x198dfc[_0x31a741]['id']]);var _0x495f74={'id':_0x198dfc[_0x31a741]['id'],'name':_0x198dfc[_0x31a741]['name'],'online':Boolean(_0x198dfc[_0x31a741][_0x4196('0x78')]),'paused':_0x1876d4?Boolean(_0x1876d4[_0x4196('0x5d')]):![]};if(_0x495f74[_0x4196('0x78')])_0x2f5089['loggedInDb']++;if(_0x495f74['paused'])_0x2f5089['paused']++;_0x2f5089['agents'][_0x4196('0x5f')](_0x495f74);}return _0x2f5089;});});}else{var _0x3b3293=_0x4196('0x7c')+_[_0x4196('0x49')](_0x5eb7e7)+_0x4196('0x4a');var _0x55b3c3=_['startCase'](_0x5eb7e7)+_0x4196('0x7d');var _0x427abb=_0x5eb7e7+_0x4196('0x7e');return db[_0x3b3293][_0x4196('0x7f')]({'where':{['userQueueKey']:_0x4d42e1['id']},'raw':!![]})[_0x4196('0x20')](function(_0x1eb025){return db[_0x4196('0x7c')][_0x4196('0x7f')]({'attributes':['id',_0x4196('0x39'),_0x4196('0x78'),_0x427abb],'where':{'id':_[_0x4196('0x4b')](_0x1eb025,_0x4196('0x7b')),'role':_0x4196('0x80')},'raw':!![]});})[_0x4196('0x20')](function(_0x1fdb85){for(var _0x2a777b=0x0;_0x2a777b<_0x1fdb85['length'];_0x2a777b++){var _0x25c133={'id':_0x1fdb85[_0x2a777b]['id'],'name':_0x1fdb85[_0x2a777b][_0x4196('0x39')],'online':Boolean(_0x1fdb85[_0x2a777b][_0x4196('0x78')]),'paused':Boolean(_0x1fdb85[_0x2a777b][_0x427abb])};if(_0x25c133[_0x4196('0x78')])_0x2f5089[_0x4196('0x72')]++;if(_0x25c133[_0x4196('0x5d')])_0x2f5089['paused']++;_0x2f5089[_0x4196('0x81')][_0x4196('0x5f')](_0x25c133);}return _0x2f5089;});}});return Promise[_0x4196('0x82')](_0x9a10af);});})[_0x4196('0x20')](function(_0xe81090){_0x4b5b79[_0x4196('0x70')]=_0xe81090;return _0x4b5b79;})[_0x4196('0x20')](respondWithFilteredResult(_0x5f1b9d,_0x4266ac))[_0x4196('0x2a')](handleError(_0x5f1b9d,null));};
\ No newline at end of file
+var _0x68b3=['dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','paused','loggedInDb','talking','agents','find','merge','pick','getAgents','length','UserId','online','User','Pause','findAll','QueueId','agent','all','catch','util','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','../../mysqldb','client','http','offset','undefined','limit','count','status','set','json','error','stack','name','send','getQueues','mail','sms','openchannel','fax','voice','then','query','channel','includes','toLowerCase','Invalid\x20channel','startCase','Queue','map','rawAttributes','fieldName','type','getOptions','user','role','userProfileId','outbound','QueueCampaigns','Queues','filter','UserProfile','getResources','findAndCountAll','request','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','push','originated','message','dialMethod','Trunk','startProgressive','erlangCalls','erlangAbandonmentRate'];(function(_0x37a7e2,_0x5c26e7){var _0x5d7354=function(_0x37bc76){while(--_0x37bc76){_0x37a7e2['push'](_0x37a7e2['shift']());}};_0x5d7354(++_0x5c26e7);}(_0x68b3,0x1d8));var _0x368b=function(_0x48b11d,_0x2e1988){_0x48b11d=_0x48b11d-0x0;var _0x42e973=_0x68b3[_0x48b11d];return _0x42e973;};'use strict';var util=require(_0x368b('0x0'));var _=require(_0x368b('0x1'));var jayson=require(_0x368b('0x2'));var qs=require(_0x368b('0x3'));var logger=require(_0x368b('0x4'))('api');var db=require(_0x368b('0x5'))['db'];var client=jayson[_0x368b('0x6')][_0x368b('0x7')]({'port':0x232a});var routingClient=jayson[_0x368b('0x6')]['http']({'port':0x232c});function respondWithFilteredResult(_0x12eb8f,_0x41b15b){return function(_0x104dad){if(_0x104dad){var _0x23584a=typeof _0x41b15b[_0x368b('0x8')]===_0x368b('0x9')&&typeof _0x41b15b[_0x368b('0xa')]===_0x368b('0x9');var _0x23622f=_0x104dad[_0x368b('0xb')];var _0x2a7b9f=_0x23584a?0x0:_0x41b15b['offset'];var _0x160e12=_0x23584a?_0x104dad[_0x368b('0xb')]:_0x41b15b[_0x368b('0x8')]+_0x41b15b['limit'];var _0x4463dc;if(_0x160e12>=_0x23622f){_0x160e12=_0x23622f;_0x4463dc=0xc8;}else{_0x4463dc=0xce;}_0x12eb8f[_0x368b('0xc')](_0x4463dc);return _0x12eb8f[_0x368b('0xd')]('Content-Range',_0x2a7b9f+'-'+_0x160e12+'/'+_0x23622f)[_0x368b('0xe')](_0x104dad);}return null;};}function handleError(_0x847dcb,_0x514dc7){_0x514dc7=_0x514dc7||0x1f4;return function(_0x109a90){logger[_0x368b('0xf')](_0x109a90[_0x368b('0x10')]);if(_0x109a90[_0x368b('0x11')]){delete _0x109a90[_0x368b('0x11')];}_0x847dcb['status'](_0x514dc7)[_0x368b('0x12')](_0x109a90);};}exports[_0x368b('0x13')]=function(_0x4ce41b,_0x1c5e5b){var _0x2aabb9=[_0x368b('0x14'),'chat',_0x368b('0x15'),_0x368b('0x16'),_0x368b('0x17'),'whatsapp',_0x368b('0x18')];var _0x1b9e65={'count':0x0,'rows':[]},_0x1c2956={},_0x540f57;Promise['resolve']()[_0x368b('0x19')](function(){if(_0x4ce41b[_0x368b('0x1a')][_0x368b('0x1b')]){if(!_[_0x368b('0x1c')](_0x2aabb9,_0x4ce41b[_0x368b('0x1a')]['channel'][_0x368b('0x1d')]()))throw new Error(_0x368b('0x1e'));_0x540f57=_0x4ce41b[_0x368b('0x1a')][_0x368b('0x1b')][_0x368b('0x1d')]();}var _0x26b206=_[_0x368b('0x1f')](_0x540f57)+_0x368b('0x20');var _0x508e48=_[_0x368b('0x21')](db[_0x26b206][_0x368b('0x22')],function(_0x18869a){return{'name':_0x18869a[_0x368b('0x23')],'type':_0x18869a[_0x368b('0x24')]['key']};});_0x1c2956=qs[_0x368b('0x25')](_0x508e48,_0x4ce41b);if(_0x4ce41b[_0x368b('0x26')][_0x368b('0x27')]===_0x368b('0x26')){var _0x77a269={'params':{'id':_0x4ce41b[_0x368b('0x26')][_0x368b('0x28')]},'query':{'section':_0x540f57===_0x368b('0x18')&&_0x4ce41b[_0x368b('0x1a')][_0x368b('0x24')]===_0x368b('0x29')?_0x368b('0x2a'):_[_0x368b('0x1f')](_0x540f57)+_0x368b('0x2b'),'type':_0x4ce41b[_0x368b('0x1a')][_0x368b('0x24')],'nolimit':!![],'sort':_0x368b('0x11'),'filter':_0x4ce41b[_0x368b('0x1a')][_0x368b('0x2c')]}};return db[_0x368b('0x2d')][_0x368b('0x2e')](_0x77a269);}return db[_0x26b206][_0x368b('0x2f')](_0x1c2956);})[_0x368b('0x19')](function(_0x3c80b5){_0x1b9e65['count']=_0x3c80b5['count'];var _0x381324=_0x540f57===_0x368b('0x18')?client:routingClient;return _0x381324[_0x368b('0x30')](_[_0x368b('0x1f')](_0x540f57)+'Queues',_0x4ce41b)[_0x368b('0x19')](function(_0x1f3ed3){if(_0x1f3ed3[_0x368b('0xf')])throw new Error(util[_0x368b('0x31')](_0x368b('0x32'),_0x540f57));var _0x4d8410=_0x1f3ed3[_0x368b('0x33')];var _0x424fab=[_0x368b('0x34'),_0x368b('0x35'),'waiting','talking','paused'];if(_0x540f57===_0x368b('0x18')&&_0x4ce41b[_0x368b('0x1a')][_0x368b('0x24')]===_0x368b('0x29')){_0x424fab[_0x368b('0x36')]('pTalking',_0x368b('0x37'),_0x368b('0x38'),'dialActive',_0x368b('0x39'),_0x368b('0x3a'),'startPredictive',_0x368b('0x3b'),_0x368b('0x3c'),'erlangCallToSecond',_0x368b('0x3d'),'erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold',_0x368b('0x3e'),_0x368b('0x3f'),_0x368b('0x40'),_0x368b('0x41'),_0x368b('0x42'),_0x368b('0x43'),_0x368b('0x44'),_0x368b('0x45'));}var _0x439e00=_0x3c80b5[_0x368b('0x46')]['map'](function(_0x204c52){var _0x1f60ea=_0x204c52['get']({'plain':!![]});_0x1f60ea[_0x368b('0x47')]=0x0;_0x1f60ea[_0x368b('0x48')]=0x0;_0x1f60ea[_0x368b('0x34')]=0x0;_0x1f60ea[_0x368b('0x35')]=0x0;_0x1f60ea[_0x368b('0x47')]=0x0;_0x1f60ea['waiting']=0x0;if(_0x540f57===_0x368b('0x18')){_0x1f60ea[_0x368b('0x49')]=0x0;if(_0x4ce41b[_0x368b('0x1a')][_0x368b('0x24')]==='outbound'){_0x1f60ea['pTalking']=0x0;_0x1f60ea[_0x368b('0x37')]=0x0;}}_0x1f60ea[_0x368b('0x4a')]=[];var _0x7d8fb4=_[_0x368b('0x4b')](_0x4d8410[_0x368b('0x46')],['id',_0x1f60ea['id']]);if(_0x7d8fb4)_[_0x368b('0x4c')](_0x1f60ea,_[_0x368b('0x4d')](_0x7d8fb4,_0x424fab));if(_0x540f57===_0x368b('0x18')){return _0x204c52[_0x368b('0x4e')]({'attributes':['id',_0x368b('0x11'),'online'],'joinTableAttributes':[],'raw':!![]})[_0x368b('0x19')](function(_0x179e46){return _0x204c52['getMembers']({'raw':!![]})[_0x368b('0x19')](function(_0x1ea901){for(var _0x3a9b1f=0x0;_0x3a9b1f<_0x179e46[_0x368b('0x4f')];_0x3a9b1f++){var _0x5ee007=_[_0x368b('0x4b')](_0x1ea901,[_0x368b('0x50'),_0x179e46[_0x3a9b1f]['id']]);var _0x4a0275={'id':_0x179e46[_0x3a9b1f]['id'],'name':_0x179e46[_0x3a9b1f][_0x368b('0x11')],'online':Boolean(_0x179e46[_0x3a9b1f][_0x368b('0x51')]),'paused':_0x5ee007?Boolean(_0x5ee007[_0x368b('0x47')]):![]};if(_0x4a0275['online'])_0x1f60ea[_0x368b('0x48')]++;if(_0x4a0275[_0x368b('0x47')])_0x1f60ea[_0x368b('0x47')]++;_0x1f60ea['agents']['push'](_0x4a0275);}return _0x1f60ea;});});}else{var _0x74c26=_0x368b('0x52')+_['startCase'](_0x540f57)+_0x368b('0x20');var _0x1c2e5f=_0x540f57+_0x368b('0x53');return db[_0x74c26][_0x368b('0x54')]({'where':{[_[_0x368b('0x1f')](_0x540f57)+_0x368b('0x55')]:_0x204c52['id']},'raw':!![]})[_0x368b('0x19')](function(_0x269cf5){return db[_0x368b('0x52')][_0x368b('0x54')]({'attributes':['id',_0x368b('0x11'),_0x368b('0x51'),_0x1c2e5f],'where':{'id':_[_0x368b('0x21')](_0x269cf5,'UserId'),'role':_0x368b('0x56')},'raw':!![]});})[_0x368b('0x19')](function(_0xe79f4c){for(var _0xf95817=0x0;_0xf95817<_0xe79f4c[_0x368b('0x4f')];_0xf95817++){var _0x5a827e={'id':_0xe79f4c[_0xf95817]['id'],'name':_0xe79f4c[_0xf95817]['name'],'online':Boolean(_0xe79f4c[_0xf95817][_0x368b('0x51')]),'paused':Boolean(_0xe79f4c[_0xf95817][_0x1c2e5f])};if(_0x5a827e[_0x368b('0x51')])_0x1f60ea[_0x368b('0x48')]++;if(_0x5a827e['paused'])_0x1f60ea[_0x368b('0x47')]++;_0x1f60ea[_0x368b('0x4a')][_0x368b('0x36')](_0x5a827e);}return _0x1f60ea;});}});return Promise[_0x368b('0x57')](_0x439e00);});})[_0x368b('0x19')](function(_0x1fdc4b){_0x1b9e65[_0x368b('0x46')]=_0x1fdc4b;return _0x1b9e65;})[_0x368b('0x19')](respondWithFilteredResult(_0x1c5e5b,_0x1c2956))[_0x368b('0x58')](handleError(_0x1c5e5b,null));};
\ No newline at end of file
diff --git a/server/api/realtime/realtime.model.js b/server/api/realtime/realtime.model.js
deleted file mode 100644 (file)
index f9d4e54..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 _0xf2a1=['exports','define','Realtime','lodash','moment','bluebird','rimraf','../../config/environment'];(function(_0x2b00d7,_0x4d9bc2){var _0xe2b296=function(_0x127148){while(--_0x127148){_0x2b00d7['push'](_0x2b00d7['shift']());}};_0xe2b296(++_0x4d9bc2);}(_0xf2a1,0xbb));var _0x1f2a=function(_0x51dc37,_0x4d4a39){_0x51dc37=_0x51dc37-0x0;var _0x1fe2b1=_0xf2a1[_0x51dc37];return _0x1fe2b1;};'use strict';var _=require(_0x1f2a('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x1f2a('0x1'));var BPromise=require(_0x1f2a('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1f2a('0x3'));var config=require(_0x1f2a('0x4'));;module[_0x1f2a('0x5')]=function(_0x1e47e0,_0x20dc99){return _0x1e47e0[_0x1f2a('0x6')](_0x1f2a('0x7'),[],{});};
\ No newline at end of file
index 20b8a73..ffa07d2 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(_0x3f995f,_0x27cefe){var _0x2ac1f2=function(_0x1bd60e){while(--_0x1bd60e){_0x3f995f['push'](_0x3f995f['shift']());}};_0x2ac1f2(++_0x27cefe);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x423097,_0x8a09f4){_0x423097=_0x423097-0x0;var _0x3a73f1=_0xcb91[_0x423097];return _0x3a73f1;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x7d8d4,_0x188cad){var _0x4ce02a=function(_0x417d37){while(--_0x417d37){_0x7d8d4['push'](_0x7d8d4['shift']());}};_0x4ce02a(++_0x188cad);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xf2f332,_0x299fbf){_0xf2f332=_0xf2f332-0x0;var _0x56cce3=_0xcb91[_0xf2f332];return _0x56cce3;};'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 bd84408..bb841b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cb5=['INTEGER','STRING','DATE','sequelize','exports'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0x4cb5,0x8f));var _0x54cb=function(_0x2dec70,_0x46171d){_0x2dec70=_0x2dec70-0x0;var _0x6cee09=_0x4cb5[_0x2dec70];return _0x6cee09;};'use strict';var Sequelize=require(_0x54cb('0x0'));module[_0x54cb('0x1')]={'state':{'type':Sequelize[_0x54cb('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x54cb('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0x54cb('0x3')]},'starttime':{'type':Sequelize[_0x54cb('0x4')]},'responsetime':{'type':Sequelize[_0x54cb('0x4')]},'ringtime':{'type':Sequelize[_0x54cb('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x54cb('0x3')]},'campaigntype':{'type':Sequelize[_0x54cb('0x3')]},'membername':{'type':Sequelize[_0x54cb('0x3')]}};
\ No newline at end of file
+var _0x9300=['sequelize','STRING','DATE'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x9300,0x153));var _0x0930=function(_0x28d7b5,_0x1305a4){_0x28d7b5=_0x28d7b5-0x0;var _0x1ed035=_0x9300[_0x28d7b5];return _0x1ed035;};'use strict';var Sequelize=require(_0x0930('0x0'));module['exports']={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x0930('0x1')]},'scheduledat':{'type':Sequelize[_0x0930('0x2')]},'uniqueid':{'type':Sequelize[_0x0930('0x1')]},'starttime':{'type':Sequelize[_0x0930('0x2')]},'responsetime':{'type':Sequelize[_0x0930('0x2')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x0930('0x1')]},'campaigntype':{'type':Sequelize[_0x0930('0x1')]},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 918383a..18721ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51d1=['request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','define','report_agent_preview','lodash','util','../../config/logger','api','moment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x51d1,0x10f));var _0x151d=function(_0x545a3a,_0x3123aa){_0x545a3a=_0x545a3a-0x0;var _0x5a5493=_0x51d1[_0x545a3a];return _0x5a5493;};'use strict';var _=require(_0x151d('0x0'));var util=require(_0x151d('0x1'));var logger=require(_0x151d('0x2'))(_0x151d('0x3'));var moment=require(_0x151d('0x4'));var BPromise=require('bluebird');var rp=require(_0x151d('0x5'));var fs=require('fs');var path=require(_0x151d('0x6'));var rimraf=require(_0x151d('0x7'));var config=require(_0x151d('0x8'));var attributes=require(_0x151d('0x9'));module['exports']=function(_0x326127,_0x197de9){return _0x326127[_0x151d('0xa')]('ReportAgentPreview',attributes,{'tableName':_0x151d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed5f=['exports','define','ReportAgentPreview','util','api','moment','bluebird','request-promise','path','../../config/environment','./reportAgentPreview.attributes'];(function(_0x597b0e,_0x5835a1){var _0x30a1fd=function(_0x320055){while(--_0x320055){_0x597b0e['push'](_0x597b0e['shift']());}};_0x30a1fd(++_0x5835a1);}(_0xed5f,0x71));var _0xfed5=function(_0x33ce4c,_0x368071){_0x33ce4c=_0x33ce4c-0x0;var _0x2b549f=_0xed5f[_0x33ce4c];return _0x2b549f;};'use strict';var _=require('lodash');var util=require(_0xfed5('0x0'));var logger=require('../../config/logger')(_0xfed5('0x1'));var moment=require(_0xfed5('0x2'));var BPromise=require(_0xfed5('0x3'));var rp=require(_0xfed5('0x4'));var fs=require('fs');var path=require(_0xfed5('0x5'));var rimraf=require('rimraf');var config=require(_0xfed5('0x6'));var attributes=require(_0xfed5('0x7'));module[_0xfed5('0x8')]=function(_0x3a1ec6,_0x2c8702){return _0x3a1ec6[_0xfed5('0x9')](_0xfed5('0xa'),attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c1f4186..97bdca4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f25=['body','options','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateReportAgentPreview','ReportAgentPreview'];(function(_0x336376,_0xe4b28d){var _0x1d2a8e=function(_0x3afe68){while(--_0x3afe68){_0x336376['push'](_0x336376['shift']());}};_0x1d2a8e(++_0xe4b28d);}(_0x1f25,0xe3));var _0x51f2=function(_0x41bf82,_0xa062d6){_0x41bf82=_0x41bf82-0x0;var _0x517060=_0x1f25[_0x41bf82];return _0x517060;};'use strict';var _=require(_0x51f2('0x0'));var util=require('util');var moment=require(_0x51f2('0x1'));var BPromise=require(_0x51f2('0x2'));var rs=require(_0x51f2('0x3'));var fs=require('fs');var Redis=require(_0x51f2('0x4'));var db=require(_0x51f2('0x5'))['db'];var utils=require(_0x51f2('0x6'));var logger=require(_0x51f2('0x7'))(_0x51f2('0x8'));var config=require(_0x51f2('0x9'));var jayson=require(_0x51f2('0xa'));var client=jayson[_0x51f2('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x245919,_0x38e40a,_0x202fa5){return new BPromise(function(_0x1b2d8c,_0x5056fc){return client[_0x51f2('0xc')](_0x245919,_0x202fa5)[_0x51f2('0xd')](function(_0xb86c5d){logger[_0x51f2('0xe')](_0x51f2('0xf'),_0x38e40a,_0x51f2('0x10'));logger['debug'](_0x51f2('0x11'),_0x38e40a,'request\x20sent',JSON[_0x51f2('0x12')](_0xb86c5d));if(_0xb86c5d['error']){if(_0xb86c5d[_0x51f2('0x13')][_0x51f2('0x14')]===0x1f4){logger[_0x51f2('0x13')]('ReportAgentPreview,\x20%s,\x20%s',_0x38e40a,_0xb86c5d[_0x51f2('0x13')]['message']);return _0x5056fc(_0xb86c5d[_0x51f2('0x13')][_0x51f2('0x15')]);}logger[_0x51f2('0x13')]('ReportAgentPreview,\x20%s,\x20%s',_0x38e40a,_0xb86c5d[_0x51f2('0x13')]['message']);return _0x1b2d8c(_0xb86c5d['error'][_0x51f2('0x15')]);}else{logger[_0x51f2('0xe')](_0x51f2('0xf'),_0x38e40a,_0x51f2('0x10'));_0x1b2d8c(_0xb86c5d['result'][_0x51f2('0x15')]);}})[_0x51f2('0x16')](function(_0x21ed2c){logger[_0x51f2('0x13')](_0x51f2('0xf'),_0x38e40a,_0x21ed2c);_0x5056fc(_0x21ed2c);});});}exports[_0x51f2('0x17')]=function(_0x4aa65d){var _0x48528c=this;return new Promise(function(_0x304b4f,_0x1f759b){return db[_0x51f2('0x18')]['create'](_0x4aa65d[_0x51f2('0x19')],{'raw':_0x4aa65d[_0x51f2('0x1a')]?_0x4aa65d[_0x51f2('0x1a')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x4d44ee){logger[_0x51f2('0xe')](_0x51f2('0x17'),_0x4aa65d);logger[_0x51f2('0x1b')](_0x51f2('0x17'),_0x4aa65d,JSON['stringify'](_0x4d44ee));_0x304b4f(_0x4d44ee);})[_0x51f2('0x16')](function(_0x3f2935){logger[_0x51f2('0x13')](_0x51f2('0x17'),_0x3f2935['message'],_0x4aa65d);_0x1f759b(_0x48528c[_0x51f2('0x13')](0x1f4,_0x3f2935[_0x51f2('0x15')]));});});};
\ No newline at end of file
+var _0xe8e9=['lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','CreateReportAgentPreview','create','body','options','raw','stringify'];(function(_0x408f68,_0x525932){var _0x1b1a03=function(_0x32818c){while(--_0x32818c){_0x408f68['push'](_0x408f68['shift']());}};_0x1b1a03(++_0x525932);}(_0xe8e9,0x129));var _0x9e8e=function(_0xd548b2,_0x2ad027){_0xd548b2=_0xd548b2-0x0;var _0x1288a0=_0xe8e9[_0xd548b2];return _0x1288a0;};'use strict';var _=require(_0x9e8e('0x0'));var util=require(_0x9e8e('0x1'));var moment=require('moment');var BPromise=require(_0x9e8e('0x2'));var rs=require(_0x9e8e('0x3'));var fs=require('fs');var Redis=require(_0x9e8e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9e8e('0x5'));var logger=require(_0x9e8e('0x6'))(_0x9e8e('0x7'));var config=require(_0x9e8e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9e8e('0x9')][_0x9e8e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x8f14ad,_0x18343e,_0x3e9047){return new BPromise(function(_0x5615ad,_0x232b2b){return client[_0x9e8e('0xb')](_0x8f14ad,_0x3e9047)[_0x9e8e('0xc')](function(_0x869571){logger[_0x9e8e('0xd')](_0x9e8e('0xe'),_0x18343e,_0x9e8e('0xf'));logger[_0x9e8e('0x10')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x18343e,'request\x20sent',JSON['stringify'](_0x869571));if(_0x869571[_0x9e8e('0x11')]){if(_0x869571[_0x9e8e('0x11')]['code']===0x1f4){logger[_0x9e8e('0x11')](_0x9e8e('0xe'),_0x18343e,_0x869571['error'][_0x9e8e('0x12')]);return _0x232b2b(_0x869571['error'][_0x9e8e('0x12')]);}logger[_0x9e8e('0x11')](_0x9e8e('0xe'),_0x18343e,_0x869571[_0x9e8e('0x11')][_0x9e8e('0x12')]);return _0x5615ad(_0x869571[_0x9e8e('0x11')][_0x9e8e('0x12')]);}else{logger[_0x9e8e('0xd')](_0x9e8e('0xe'),_0x18343e,'request\x20sent');_0x5615ad(_0x869571[_0x9e8e('0x13')]['message']);}})[_0x9e8e('0x14')](function(_0x218785){logger[_0x9e8e('0x11')](_0x9e8e('0xe'),_0x18343e,_0x218785);_0x232b2b(_0x218785);});});}exports[_0x9e8e('0x15')]=function(_0x5dce9f){var _0x179f04=this;return new Promise(function(_0xa76dbb,_0x148388){return db['ReportAgentPreview'][_0x9e8e('0x16')](_0x5dce9f[_0x9e8e('0x17')],{'raw':_0x5dce9f[_0x9e8e('0x18')]?_0x5dce9f[_0x9e8e('0x18')][_0x9e8e('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x407f3c){logger[_0x9e8e('0xd')](_0x9e8e('0x15'),_0x5dce9f);logger['debug'](_0x9e8e('0x15'),_0x5dce9f,JSON[_0x9e8e('0x1a')](_0x407f3c));_0xa76dbb(_0x407f3c);})[_0x9e8e('0x14')](function(_0x15b397){logger[_0x9e8e('0x11')]('CreateReportAgentPreview',_0x15b397[_0x9e8e('0x12')],_0x5dce9f);_0x148388(_0x179f04[_0x9e8e('0x11')](0x1f4,_0x15b397['message']));});});};
\ No newline at end of file
index 723c94b..53b5cd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83d3=['/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/chat/queues/:id/notify','chat','showChatQueues','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','multer','util','path','../../components/auth/service','./rpc.controller','/voice/channels','isAuthenticated','voiceChannels','get','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceQueues','/chat/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','showVoiceQueues','put','/voice/queues/:id','updateVoiceQueue','/outbound','outbound','outboundChannels','/agents','agentCapacity','/telephones','telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','smsQueuesWaitingInteractions'];(function(_0x412376,_0x482fc2){var _0xae59bf=function(_0x6e8d7e){while(--_0x6e8d7e){_0x412376['push'](_0x412376['shift']());}};_0xae59bf(++_0x482fc2);}(_0x83d3,0x15d));var _0x383d=function(_0x15b192,_0x38c235){_0x15b192=_0x15b192-0x0;var _0x396e73=_0x83d3[_0x15b192];return _0x396e73;};'use strict';var multer=require(_0x383d('0x0'));var util=require(_0x383d('0x1'));var path=require(_0x383d('0x2'));var express=require('express');var router=express['Router']();var auth=require(_0x383d('0x3'));var controller=require(_0x383d('0x4'));router['get'](_0x383d('0x5'),auth[_0x383d('0x6')](),controller[_0x383d('0x7')]);router[_0x383d('0x8')]('/voice/channels/:uniqueid/mixmonitor',auth[_0x383d('0x6')](),controller[_0x383d('0x9')]);router[_0x383d('0x8')](_0x383d('0xa'),auth[_0x383d('0x6')](),controller['voiceChannelStopMixMonitor']);router[_0x383d('0x8')]('/voice/queues',auth[_0x383d('0x6')](),controller[_0x383d('0xb')]);router[_0x383d('0x8')](_0x383d('0xc'),auth[_0x383d('0x6')](),controller['chatQueues']);router[_0x383d('0x8')]('/mail/queues',auth[_0x383d('0x6')](),controller[_0x383d('0xd')]);router[_0x383d('0x8')](_0x383d('0xe'),auth['isAuthenticated'](),controller[_0x383d('0xf')]);router[_0x383d('0x8')](_0x383d('0x10'),auth[_0x383d('0x6')](),controller[_0x383d('0x11')]);router[_0x383d('0x8')]('/sms/queues',auth[_0x383d('0x6')](),controller[_0x383d('0x12')]);router['get'](_0x383d('0x13'),auth['isAuthenticated'](),controller[_0x383d('0x14')]);router['get'](_0x383d('0x15'),auth[_0x383d('0x6')](),controller[_0x383d('0x16')]);router['get'](_0x383d('0x17'),auth[_0x383d('0x6')](),controller[_0x383d('0x18')]);router[_0x383d('0x8')](_0x383d('0x19'),auth[_0x383d('0x6')](),controller[_0x383d('0x1a')]);router['get']('/voice/queues/channels/:uniqueid',auth[_0x383d('0x6')](),controller[_0x383d('0x1b')]);router[_0x383d('0x8')](_0x383d('0x1c'),auth[_0x383d('0x6')](),controller[_0x383d('0x1d')]);router[_0x383d('0x8')](_0x383d('0x1e'),auth[_0x383d('0x6')](),controller['voiceQueuesChannelRedirect']);router[_0x383d('0x8')]('/voice/queues/:id',auth[_0x383d('0x6')](),controller[_0x383d('0x1f')]);router[_0x383d('0x20')](_0x383d('0x21'),auth[_0x383d('0x6')](),controller[_0x383d('0x22')]);router[_0x383d('0x8')](_0x383d('0x23'),auth[_0x383d('0x6')](),controller[_0x383d('0x24')]);router[_0x383d('0x8')]('/outbound/channels',auth[_0x383d('0x6')](),controller[_0x383d('0x25')]);router['get'](_0x383d('0x26'),auth[_0x383d('0x6')](),controller['agents']);router['put']('/agents/:id/capacity',auth[_0x383d('0x6')](),controller[_0x383d('0x27')]);router[_0x383d('0x8')](_0x383d('0x28'),auth['isAuthenticated'](),controller[_0x383d('0x29')]);router['get'](_0x383d('0x2a'),auth['isAuthenticated'](),controller[_0x383d('0x2b')]);router['get'](_0x383d('0x2c'),auth[_0x383d('0x6')](),controller[_0x383d('0x2d')]);router[_0x383d('0x8')](_0x383d('0x2e'),auth['isAuthenticated'](),controller[_0x383d('0x2f')]);router[_0x383d('0x8')](_0x383d('0x30'),auth[_0x383d('0x6')](),controller[_0x383d('0x31')]);router[_0x383d('0x8')](_0x383d('0x32'),auth[_0x383d('0x6')](),controller[_0x383d('0x33')]);router['get'](_0x383d('0x34'),auth[_0x383d('0x6')](),controller['openchannelQueuesWaitingInteractions']);router[_0x383d('0x8')](_0x383d('0x35'),auth[_0x383d('0x6')](),controller[_0x383d('0x36')]);router[_0x383d('0x8')]('/sms/queues/waitinginteractions',auth[_0x383d('0x6')](),controller[_0x383d('0x37')]);router[_0x383d('0x8')](_0x383d('0x38'),auth['isAuthenticated'](),controller[_0x383d('0x39')]);router['get'](_0x383d('0x3a'),auth['isAuthenticated'](),controller[_0x383d('0x3b')]);router[_0x383d('0x3c')](_0x383d('0x3d'),auth[_0x383d('0x6')](),controller[_0x383d('0x3e')](_0x383d('0x3f')));router[_0x383d('0x8')]('/mail/queues/:id',auth['isAuthenticated'](),controller['showMailQueues']);router[_0x383d('0x3c')](_0x383d('0x40'),auth[_0x383d('0x6')](),controller['queueNotify'](_0x383d('0x41')));router['get']('/chat/queues/:id',auth[_0x383d('0x6')](),controller[_0x383d('0x42')]);router['post']('/fax/queues/:id/notify',auth[_0x383d('0x6')](),controller[_0x383d('0x3e')]('fax'));router[_0x383d('0x8')](_0x383d('0x43'),auth[_0x383d('0x6')](),controller[_0x383d('0x44')]);router[_0x383d('0x3c')](_0x383d('0x45'),auth[_0x383d('0x6')](),controller[_0x383d('0x3e')](_0x383d('0x46')));router[_0x383d('0x8')](_0x383d('0x47'),auth[_0x383d('0x6')](),controller[_0x383d('0x48')]);router['post']('/sms/queues/:id/notify',auth[_0x383d('0x6')](),controller[_0x383d('0x3e')]('sms'));router[_0x383d('0x3c')](_0x383d('0x49'),auth['isAuthenticated'](),controller['queueNotify'](_0x383d('0x4a')));router[_0x383d('0x8')](_0x383d('0x4b'),auth['isAuthenticated'](),controller[_0x383d('0x4c')]);router[_0x383d('0x8')](_0x383d('0x4d'),auth['isAuthenticated'](),controller[_0x383d('0x4e')]);router[_0x383d('0x3c')](_0x383d('0x4f'),auth[_0x383d('0x6')](),controller[_0x383d('0x50')]);module['exports']=router;
\ No newline at end of file
+var _0x82d4=['queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','/chat/queues/:id','showChatQueues','/fax/queues/:id','showFaxQueues','openchannel','/openchannel/queues/:id','showOpenchannelQueues','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','multer','util','path','express','Router','./rpc.controller','get','/voice/channels','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','outbound','/outbound/channels','outboundChannels','/agents','agents','/agents/:id/capacity','/telephones','telephones','trunks','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post'];(function(_0x10d52b,_0xc6a4f1){var _0x2bf44a=function(_0x286009){while(--_0x286009){_0x10d52b['push'](_0x10d52b['shift']());}};_0x2bf44a(++_0xc6a4f1);}(_0x82d4,0x15b));var _0x482d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x82d4[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x482d('0x0'));var util=require(_0x482d('0x1'));var path=require(_0x482d('0x2'));var express=require(_0x482d('0x3'));var router=express[_0x482d('0x4')]();var auth=require('../../components/auth/service');var controller=require(_0x482d('0x5'));router[_0x482d('0x6')](_0x482d('0x7'),auth['isAuthenticated'](),controller['voiceChannels']);router['get'](_0x482d('0x8'),auth[_0x482d('0x9')](),controller[_0x482d('0xa')]);router[_0x482d('0x6')](_0x482d('0xb'),auth['isAuthenticated'](),controller[_0x482d('0xc')]);router['get']('/voice/queues',auth['isAuthenticated'](),controller[_0x482d('0xd')]);router[_0x482d('0x6')](_0x482d('0xe'),auth[_0x482d('0x9')](),controller[_0x482d('0xf')]);router[_0x482d('0x6')](_0x482d('0x10'),auth[_0x482d('0x9')](),controller[_0x482d('0x11')]);router[_0x482d('0x6')](_0x482d('0x12'),auth[_0x482d('0x9')](),controller['mailAccounts']);router['get']('/openchannel/queues',auth['isAuthenticated'](),controller[_0x482d('0x13')]);router[_0x482d('0x6')](_0x482d('0x14'),auth['isAuthenticated'](),controller[_0x482d('0x15')]);router['get'](_0x482d('0x16'),auth[_0x482d('0x9')](),controller[_0x482d('0x17')]);router[_0x482d('0x6')](_0x482d('0x18'),auth[_0x482d('0x9')](),controller[_0x482d('0x19')]);router[_0x482d('0x6')](_0x482d('0x1a'),auth[_0x482d('0x9')](),controller[_0x482d('0x1b')]);router[_0x482d('0x6')](_0x482d('0x1c'),auth[_0x482d('0x9')](),controller[_0x482d('0x1d')]);router[_0x482d('0x6')](_0x482d('0x1e'),auth[_0x482d('0x9')](),controller[_0x482d('0x1f')]);router[_0x482d('0x6')](_0x482d('0x20'),auth[_0x482d('0x9')](),controller[_0x482d('0x21')]);router[_0x482d('0x6')](_0x482d('0x22'),auth[_0x482d('0x9')](),controller[_0x482d('0x23')]);router['get'](_0x482d('0x24'),auth[_0x482d('0x9')](),controller[_0x482d('0x25')]);router[_0x482d('0x26')]('/voice/queues/:id',auth['isAuthenticated'](),controller[_0x482d('0x27')]);router[_0x482d('0x6')]('/outbound',auth['isAuthenticated'](),controller[_0x482d('0x28')]);router[_0x482d('0x6')](_0x482d('0x29'),auth[_0x482d('0x9')](),controller[_0x482d('0x2a')]);router[_0x482d('0x6')](_0x482d('0x2b'),auth[_0x482d('0x9')](),controller[_0x482d('0x2c')]);router[_0x482d('0x26')](_0x482d('0x2d'),auth[_0x482d('0x9')](),controller['agentCapacity']);router[_0x482d('0x6')](_0x482d('0x2e'),auth[_0x482d('0x9')](),controller[_0x482d('0x2f')]);router[_0x482d('0x6')]('/trunks',auth[_0x482d('0x9')](),controller[_0x482d('0x30')]);router[_0x482d('0x6')]('/campaigns',auth[_0x482d('0x9')](),controller[_0x482d('0x31')]);router[_0x482d('0x6')](_0x482d('0x32'),auth['isAuthenticated'](),controller[_0x482d('0x33')]);router[_0x482d('0x6')](_0x482d('0x34'),auth[_0x482d('0x9')](),controller['chatQueuesWaitingInteractions']);router[_0x482d('0x6')](_0x482d('0x35'),auth[_0x482d('0x9')](),controller[_0x482d('0x36')]);router[_0x482d('0x6')]('/openchannel/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0x482d('0x37')]);router['get'](_0x482d('0x38'),auth[_0x482d('0x9')](),controller[_0x482d('0x39')]);router[_0x482d('0x6')]('/sms/queues/waitinginteractions',auth[_0x482d('0x9')](),controller[_0x482d('0x3a')]);router[_0x482d('0x6')](_0x482d('0x3b'),auth[_0x482d('0x9')](),controller['whatsappQueuesWaitingInteractions']);router['get'](_0x482d('0x3c'),auth[_0x482d('0x9')](),controller[_0x482d('0x3d')]);router[_0x482d('0x3e')]('/mail/queues/:id/notify',auth[_0x482d('0x9')](),controller[_0x482d('0x3f')](_0x482d('0x40')));router[_0x482d('0x6')](_0x482d('0x41'),auth['isAuthenticated'](),controller[_0x482d('0x42')]);router[_0x482d('0x3e')](_0x482d('0x43'),auth[_0x482d('0x9')](),controller[_0x482d('0x3f')]('chat'));router[_0x482d('0x6')](_0x482d('0x44'),auth[_0x482d('0x9')](),controller[_0x482d('0x45')]);router[_0x482d('0x3e')]('/fax/queues/:id/notify',auth[_0x482d('0x9')](),controller[_0x482d('0x3f')]('fax'));router[_0x482d('0x6')](_0x482d('0x46'),auth[_0x482d('0x9')](),controller[_0x482d('0x47')]);router[_0x482d('0x3e')]('/openchannel/queues/:id/notify',auth['isAuthenticated'](),controller['queueNotify'](_0x482d('0x48')));router['get'](_0x482d('0x49'),auth[_0x482d('0x9')](),controller[_0x482d('0x4a')]);router[_0x482d('0x3e')]('/sms/queues/:id/notify',auth[_0x482d('0x9')](),controller[_0x482d('0x3f')]('sms'));router[_0x482d('0x3e')]('/whatsapp/queues/:id/notify',auth[_0x482d('0x9')](),controller[_0x482d('0x3f')](_0x482d('0x4b')));router[_0x482d('0x6')](_0x482d('0x4c'),auth[_0x482d('0x9')](),controller[_0x482d('0x4d')]);router[_0x482d('0x6')](_0x482d('0x4e'),auth[_0x482d('0x9')](),controller[_0x482d('0x4f')]);router['post'](_0x482d('0x50'),auth['isAuthenticated'](),controller[_0x482d('0x51')]);module['exports']=router;
\ No newline at end of file
index af41f17..3f8c26c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','queue_id','uniq','value','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','Website','Account','Queue','\x20Queue\x20not\x20found','Message','findOne','Interaction','update','queue','MessageId','InteractionId','From','QueueId','TransferReport','create','queueTransferTimeout','*,*,*,*','agentNotify','channel','chat','User','\x20Message\x20not\x20found','Start','agentTransferTimeout','bluebird','moment','util','../../mysqldb','../../config/logger','api','jayson/promise','http','client','request','then','error','code','message','result','catch','status','json','sendStatus','name','send','isNil','rows','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','VoiceChannelStopMixMonitor','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','format','length','updateAttributes','MemberReport','findOrCreate','INTERACTION','interface','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','capacity','telephones','trunks','campaigns','Campaigns','chatQueues','ChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions'];(function(_0x204b0c,_0x212e5f){var _0x3832cb=function(_0x4e3558){while(--_0x4e3558){_0x204b0c['push'](_0x204b0c['shift']());}};_0x3832cb(++_0x212e5f);}(_0x5fc3,0xa8));var _0x35fc=function(_0x8afdd0,_0x548ad1){_0x8afdd0=_0x8afdd0-0x0;var _0x3de7ac=_0x5fc3[_0x8afdd0];return _0x3de7ac;};'use strict';var BPromise=require(_0x35fc('0x0'));var moment=require(_0x35fc('0x1'));var _=require('lodash');var util=require(_0x35fc('0x2'));var db=require(_0x35fc('0x3'))['db'];var logger=require(_0x35fc('0x4'))(_0x35fc('0x5'));var jayson=require(_0x35fc('0x6'));var amiClient=jayson['client'][_0x35fc('0x7')]({'port':0x232a});var mailClient=jayson[_0x35fc('0x8')][_0x35fc('0x7')]({'port':0x232b});var routingClient=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){var _0x1e5f90=_0x16e153?_0x16e153:amiClient;return _0x1e5f90[_0x35fc('0x9')](_0x19a0d1,_0x508b32)[_0x35fc('0xa')](function(_0x2051ab){if(_0x2051ab['error']){if(_0x2051ab[_0x35fc('0xb')][_0x35fc('0xc')]===0x1f4){return _0xc72d93(_0x2051ab['error'][_0x35fc('0xd')]);}return _0x27524f(_0x2051ab[_0x35fc('0xb')]['message']);}else{_0x27524f(_0x2051ab[_0x35fc('0xe')]);}})[_0x35fc('0xf')](function(_0x5469f5){_0xc72d93(_0x5469f5);});});}function respondWithResult(_0x4cbe74,_0x409357){_0x409357=_0x409357||0xc8;return function(_0x5d462a){if(_0x5d462a){return _0x4cbe74[_0x35fc('0x10')](_0x409357)[_0x35fc('0x11')](_0x5d462a);}return _0x4cbe74[_0x35fc('0x12')](0x194);};}function handleError(_0x29730f,_0x38d9f2){_0x38d9f2=_0x38d9f2||0x1f4;return function(_0x5cfe94){logger['error'](_0x5cfe94['stack']);if(_0x5cfe94['name']){delete _0x5cfe94[_0x35fc('0x13')];}_0x29730f[_0x35fc('0x10')](_0x38d9f2)[_0x35fc('0x14')](_0x5cfe94);};}function findById(_0x154958){return function(_0x227a49){if(!_[_0x35fc('0x15')](_0x154958)&&!_['isNil'](_0x227a49)&&!_[_0x35fc('0x15')](_0x227a49[_0x35fc('0x16')])){return _['find'](_0x227a49[_0x35fc('0x16')],function(_0x363e47){return _0x363e47['id']==_0x154958;});}return null;};}exports[_0x35fc('0x17')]=function(_0x5f56c6,_0x1a86e9){return respondWithRpcPromise(_0x35fc('0x18'),_0x5f56c6[_0x35fc('0x19')])['then'](respondWithResult(_0x1a86e9,null))[_0x35fc('0xf')](handleError(_0x1a86e9,null));};exports[_0x35fc('0x1a')]=function(_0x3229d1,_0x251a1f){return respondWithRpcPromise(_0x35fc('0x1b'),_[_0x35fc('0x1c')](_0x3229d1[_0x35fc('0x19')],_0x3229d1[_0x35fc('0x1d')]))[_0x35fc('0xa')](respondWithResult(_0x251a1f,null))[_0x35fc('0xf')](handleError(_0x251a1f,null));};exports['voiceChannelStopMixMonitor']=function(_0x323aee,_0xd5399f){return respondWithRpcPromise(_0x35fc('0x1e'),_[_0x35fc('0x1c')](_0x323aee[_0x35fc('0x19')],_0x323aee['params']))[_0x35fc('0xa')](respondWithResult(_0xd5399f,null))[_0x35fc('0xf')](handleError(_0xd5399f,null));};exports['voiceQueues']=function(_0x265324,_0x5a93df){return respondWithRpcPromise(_0x35fc('0x1f'),_0x265324['query'])[_0x35fc('0xa')](respondWithResult(_0x5a93df,null))['catch'](handleError(_0x5a93df,null));};exports[_0x35fc('0x20')]=function(_0xdfab9f,_0x5cb986){return respondWithRpcPromise('VoiceQueues',_0xdfab9f[_0x35fc('0x19')])['then'](findById(_0xdfab9f[_0x35fc('0x1d')]['id']))[_0x35fc('0xa')](respondWithResult(_0x5cb986,null))['catch'](handleError(_0x5cb986,null));};exports[_0x35fc('0x21')]=function(_0x645eac,_0x383837){return respondWithRpcPromise(_0x35fc('0x22'),_[_0x35fc('0x1c')](_0x645eac[_0x35fc('0x23')],_0x645eac[_0x35fc('0x1d')]))[_0x35fc('0xa')](respondWithResult(_0x383837,null))['catch'](handleError(_0x383837,null));};exports[_0x35fc('0x24')]=function(_0x220931,_0x22af18){return respondWithRpcPromise('VoiceQueuesPreview',_[_0x35fc('0x1c')](_0x220931[_0x35fc('0x19')],_0x220931[_0x35fc('0x1d')]))[_0x35fc('0xa')](respondWithResult(_0x22af18,null))[_0x35fc('0xf')](handleError(_0x22af18,null));};exports[_0x35fc('0x25')]=function(_0x222ddb,_0x37b435){return respondWithRpcPromise(_0x35fc('0x26'),_0x222ddb[_0x35fc('0x19')])['then'](respondWithResult(_0x37b435,null))['catch'](handleError(_0x37b435,null));};exports[_0x35fc('0x27')]=function(_0x4af5fe,_0x37b394){return respondWithRpcPromise(_0x35fc('0x28'),_[_0x35fc('0x1c')](_0x4af5fe[_0x35fc('0x19')],_0x4af5fe[_0x35fc('0x1d')]))[_0x35fc('0xa')](respondWithResult(_0x37b394,null))['catch'](handleError(_0x37b394,null));};exports[_0x35fc('0x29')]=function(_0x330a14,_0x46b9ef){return respondWithRpcPromise(_0x35fc('0x2a'),_[_0x35fc('0x1c')](_0x330a14[_0x35fc('0x19')],_0x330a14['params']))[_0x35fc('0xa')](respondWithResult(_0x46b9ef,null))[_0x35fc('0xf')](handleError(_0x46b9ef,null));};exports[_0x35fc('0x2b')]=function(_0x52f53d,_0x2c657d){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0x35fc('0x1c')](_0x52f53d[_0x35fc('0x19')],_0x52f53d[_0x35fc('0x1d')]))[_0x35fc('0xa')](respondWithResult(_0x2c657d,null))['catch'](handleError(_0x2c657d,null));};exports['outbound']=function(_0x59e4fb,_0x20f5fe){return respondWithRpcPromise('Outbound',_0x59e4fb[_0x35fc('0x19')])['then'](respondWithResult(_0x20f5fe,null))[_0x35fc('0xf')](handleError(_0x20f5fe,null));};exports[_0x35fc('0x2c')]=function(_0x2ca9ac,_0x22b724){return respondWithRpcPromise(_0x35fc('0x2d'),_0x2ca9ac[_0x35fc('0x19')])[_0x35fc('0xa')](respondWithResult(_0x22b724,null))['catch'](handleError(_0x22b724,null));};exports[_0x35fc('0x2e')]=function(_0x16087d,_0x4e0ce3){var _0x1feda5;return respondWithRpcPromise(_0x35fc('0x2f'),_0x16087d[_0x35fc('0x19')])[_0x35fc('0xa')](function(_0x813866){_0x1feda5=_0x813866;return respondWithRpcPromise(_0x35fc('0x2f'),_0x16087d['query'],routingClient);})[_0x35fc('0xa')](function(_0x267858){return _[_0x35fc('0x1c')]({},_0x267858,_0x1feda5);})['then'](respondWithResult(_0x4e0ce3,null))[_0x35fc('0xf')](handleError(_0x4e0ce3,null));};exports[_0x35fc('0x30')]=function(_0x596919,_0x237548){if(_0x596919[_0x35fc('0x23')]&&_0x596919[_0x35fc('0x23')][_0x35fc('0x31')]&&_0x596919[_0x35fc('0x32')]&&_0x596919[_0x35fc('0x32')][_0x35fc('0x13')]){for(var _0x3ec51f in _0x596919['body']['interaction']){if(_0x596919[_0x35fc('0x23')][_0x35fc('0x31')]['hasOwnProperty'](_0x3ec51f)){db['MemberReport']['findAll']({'where':{'channel':_0x3ec51f,'membername':_0x596919[_0x35fc('0x32')][_0x35fc('0x13')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x596919[_0x35fc('0x23')][_0x35fc('0x31')][_0x3ec51f]&&_0x596919[_0x35fc('0x23')][_0x35fc('0x31')][_0x3ec51f]['length']?{'$notIn':_0x596919['body']['interaction'][_0x3ec51f]}:{'$ne':null}}})['then'](function(_0x56bdb9){var _0xb26e3f=moment()[_0x35fc('0x33')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x119925=0x0,_0x56cf1f=_0x56bdb9[_0x35fc('0x34')];_0x119925<_0x56cf1f;_0x119925+=0x1){_0x56bdb9[_0x119925][_0x35fc('0x35')]({'exitAt':_0xb26e3f});}});for(var _0x350237=0x0;_0x350237<_0x596919[_0x35fc('0x23')][_0x35fc('0x31')][_0x3ec51f]['length'];_0x350237+=0x1){db[_0x35fc('0x36')][_0x35fc('0x37')]({'where':{'channel':_0x3ec51f,'membername':_0x596919['user'][_0x35fc('0x13')],'type':_0x35fc('0x38'),'uniqueid':_0x596919[_0x35fc('0x23')][_0x35fc('0x31')][_0x3ec51f][_0x350237],'exitAt':null},'defaults':{'channel':_0x3ec51f,'membername':_0x596919['user'][_0x35fc('0x13')],'interface':_['isNil'](_0x596919['user'][_0x35fc('0x39')])?util[_0x35fc('0x33')](_0x35fc('0x3a'),_0x596919[_0x35fc('0x32')][_0x35fc('0x13')]):_0x596919[_0x35fc('0x32')][_0x35fc('0x39')],'type':_0x35fc('0x38'),'enterAt':moment()['format'](_0x35fc('0x3b')),'role':_0x35fc('0x3c'),'internal':_0x596919[_0x35fc('0x32')][_0x35fc('0x3d')],'uniqueid':_0x596919[_0x35fc('0x23')][_0x35fc('0x31')][_0x3ec51f][_0x350237]}});}}}}return respondWithRpcPromise(_0x35fc('0x3e'),{'id':_0x596919[_0x35fc('0x1d')]['id'],'capacity':_0x596919[_0x35fc('0x23')][_0x35fc('0x3f')]},routingClient)[_0x35fc('0xa')](respondWithResult(_0x237548,null))[_0x35fc('0xf')](handleError(_0x237548,null));};exports[_0x35fc('0x40')]=function(_0x3146e2,_0x59c666){return respondWithRpcPromise('Telephones',_0x3146e2[_0x35fc('0x19')])[_0x35fc('0xa')](respondWithResult(_0x59c666,null))[_0x35fc('0xf')](handleError(_0x59c666,null));};exports[_0x35fc('0x41')]=function(_0x3ee296,_0x3e6494){return respondWithRpcPromise('Trunks',_0x3ee296['query'])[_0x35fc('0xa')](respondWithResult(_0x3e6494,null))[_0x35fc('0xf')](handleError(_0x3e6494,null));};exports[_0x35fc('0x42')]=function(_0x38bc78,_0x5b2595){return respondWithRpcPromise(_0x35fc('0x43'),_0x38bc78[_0x35fc('0x19')])['then'](respondWithResult(_0x5b2595,null))[_0x35fc('0xf')](handleError(_0x5b2595,null));};exports[_0x35fc('0x44')]=function(_0x590faa,_0x3e12e4){return respondWithRpcPromise(_0x35fc('0x45'),_0x590faa[_0x35fc('0x19')],routingClient)[_0x35fc('0xa')](respondWithResult(_0x3e12e4,null))['catch'](handleError(_0x3e12e4,null));};exports['showChatQueues']=function(_0x502a15,_0x240338){return respondWithRpcPromise(_0x35fc('0x45'),_0x502a15['query'],routingClient)[_0x35fc('0xa')](findById(_0x502a15[_0x35fc('0x1d')]['id']))[_0x35fc('0xa')](respondWithResult(_0x240338,null))[_0x35fc('0xf')](handleError(_0x240338,null));};exports[_0x35fc('0x46')]=function(_0x538be0,_0x2d9d45){return respondWithRpcPromise(_0x35fc('0x47'),_0x538be0[_0x35fc('0x19')],routingClient)['then'](respondWithResult(_0x2d9d45,null))[_0x35fc('0xf')](handleError(_0x2d9d45,null));};exports[_0x35fc('0x48')]=function(_0x47fb1a,_0x35a676){return respondWithRpcPromise(_0x35fc('0x47'),_0x47fb1a[_0x35fc('0x19')],routingClient)[_0x35fc('0xa')](findById(_0x47fb1a[_0x35fc('0x1d')]['id']))[_0x35fc('0xa')](respondWithResult(_0x35a676,null))[_0x35fc('0xf')](handleError(_0x35a676,null));};exports[_0x35fc('0x49')]=function(_0x53a79d,_0x10a5b8){return respondWithRpcPromise(_0x35fc('0x4a'),_0x53a79d[_0x35fc('0x19')],mailClient)['then'](respondWithResult(_0x10a5b8,null))[_0x35fc('0xf')](handleError(_0x10a5b8,null));};exports['openchannelQueues']=function(_0x4ceacc,_0x5d4a39){return respondWithRpcPromise(_0x35fc('0x4b'),_0x4ceacc[_0x35fc('0x19')],routingClient)[_0x35fc('0xa')](respondWithResult(_0x5d4a39,null))[_0x35fc('0xf')](handleError(_0x5d4a39,null));};exports[_0x35fc('0x4c')]=function(_0x4bbea0,_0x579f5a){return respondWithRpcPromise('OpenchannelQueues',_0x4bbea0['query'],routingClient)['then'](findById(_0x4bbea0[_0x35fc('0x1d')]['id']))[_0x35fc('0xa')](respondWithResult(_0x579f5a,null))[_0x35fc('0xf')](handleError(_0x579f5a,null));};exports[_0x35fc('0x4d')]=function(_0x511e8b,_0x458eb8){return respondWithRpcPromise(_0x35fc('0x4e'),_0x511e8b[_0x35fc('0x19')],routingClient)[_0x35fc('0xa')](respondWithResult(_0x458eb8,null))[_0x35fc('0xf')](handleError(_0x458eb8,null));};exports[_0x35fc('0x4f')]=function(_0x27071b,_0x2127e0){return respondWithRpcPromise(_0x35fc('0x4e'),_0x27071b['query'],routingClient)[_0x35fc('0xa')](findById(_0x27071b['params']['id']))[_0x35fc('0xa')](respondWithResult(_0x2127e0,null))[_0x35fc('0xf')](handleError(_0x2127e0,null));};exports[_0x35fc('0x50')]=function(_0x2bc76c,_0x4bdde7){return respondWithRpcPromise(_0x35fc('0x51'),_0x2bc76c['query'],routingClient)['then'](respondWithResult(_0x4bdde7,null))['catch'](handleError(_0x4bdde7,null));};exports[_0x35fc('0x52')]=function(_0x5dfeb7,_0x3c9027){return respondWithRpcPromise('WhatsappQueues',_0x5dfeb7[_0x35fc('0x19')],routingClient)['then'](findById(_0x5dfeb7[_0x35fc('0x1d')]['id']))[_0x35fc('0xa')](respondWithResult(_0x3c9027,null))[_0x35fc('0xf')](handleError(_0x3c9027,null));};exports[_0x35fc('0x53')]=function(_0x5c2ec0,_0x3d0ecc){return respondWithRpcPromise(_0x35fc('0x54'),_0x5c2ec0[_0x35fc('0x19')],routingClient)['then'](respondWithResult(_0x3d0ecc,null))[_0x35fc('0xf')](handleError(_0x3d0ecc,null));};exports[_0x35fc('0x55')]=function(_0x37764b,_0x3c1b56){return respondWithRpcPromise(_0x35fc('0x54'),_0x37764b[_0x35fc('0x19')],routingClient)[_0x35fc('0xa')](findById(_0x37764b[_0x35fc('0x1d')]['id']))['then'](respondWithResult(_0x3c1b56,null))[_0x35fc('0xf')](handleError(_0x3c1b56,null));};exports[_0x35fc('0x56')]=function(_0x2600d2,_0x4a926d){return respondWithRpcPromise(_0x35fc('0x57'),_0x2600d2[_0x35fc('0x19')])['then'](respondWithResult(_0x4a926d,null))['catch'](handleError(_0x4a926d,null));};exports[_0x35fc('0x58')]=function(_0x4835c2,_0x223ad3){return respondWithRpcPromise(_0x35fc('0x59'),_0x4835c2[_0x35fc('0x19')],routingClient)[_0x35fc('0xa')](respondWithResult(_0x223ad3,null))[_0x35fc('0xf')](handleError(_0x223ad3,null));};exports[_0x35fc('0x5a')]=function(_0x13f602,_0x104b1d){return respondWithRpcPromise(_0x35fc('0x5b'),_0x13f602[_0x35fc('0x19')],routingClient)[_0x35fc('0xa')](respondWithResult(_0x104b1d,null))[_0x35fc('0xf')](handleError(_0x104b1d,null));};exports[_0x35fc('0x5c')]=function(_0x9f034e,_0x184f28){return respondWithRpcPromise(_0x35fc('0x5d'),_0x9f034e[_0x35fc('0x19')],routingClient)[_0x35fc('0xa')](respondWithResult(_0x184f28,null))[_0x35fc('0xf')](handleError(_0x184f28,null));};exports[_0x35fc('0x5e')]=function(_0x4ba1b0,_0x1797d0){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x4ba1b0[_0x35fc('0x19')],routingClient)[_0x35fc('0xa')](function(_0x2185ce){if(_0x4ba1b0[_0x35fc('0x19')][_0x35fc('0x5f')]!==undefined){var _0x3f56f4=_(_0x2185ce[_0x35fc('0x16')])[_0x35fc('0x60')]([_0x4ba1b0[_0x35fc('0x19')][_0x35fc('0x5f')],_0x4ba1b0[_0x35fc('0x1d')]['id']])['map'](_0x35fc('0x61'))[_0x35fc('0x62')]()[_0x35fc('0x63')]();return _0x2185ce[_0x35fc('0x16')][_0x35fc('0x60')](function(_0x41a6de){return _0x3f56f4['indexOf'](_0x41a6de[_0x35fc('0x61')])>-0x1;});}else{return _0x2185ce[_0x35fc('0x16')][_0x35fc('0x60')](function(_0x23206d){return _0x23206d[_0x35fc('0x61')]===parseInt(_0x4ba1b0[_0x35fc('0x1d')]['id']);});}})[_0x35fc('0xa')](respondWithResult(_0x1797d0,null))[_0x35fc('0xf')](handleError(_0x1797d0,null));};exports[_0x35fc('0x64')]=function(_0x5f23d8,_0x28f02b){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x5f23d8[_0x35fc('0x19')],routingClient)[_0x35fc('0xa')](respondWithResult(_0x28f02b,null))['catch'](handleError(_0x28f02b,null));};exports[_0x35fc('0x65')]=function(_0x41002a,_0xcaa49){return respondWithRpcPromise(_0x35fc('0x66'),_0x41002a[_0x35fc('0x19')],routingClient)[_0x35fc('0xa')](respondWithResult(_0xcaa49,null))[_0x35fc('0xf')](handleError(_0xcaa49,null));};exports[_0x35fc('0x67')]=function(_0x25ee61,_0x5806bf){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x25ee61['query'],routingClient)['then'](respondWithResult(_0x5806bf,null))[_0x35fc('0xf')](handleError(_0x5806bf,null));};exports[_0x35fc('0x68')]=function(_0x8fc410){return function(_0x1f5cbc,_0x35ef53){var _0x4f535a,_0x226fdf;var _0x19682e=_[_0x35fc('0x69')](_0x8fc410);var _0x169ea2=_0x8fc410==='chat'?_0x35fc('0x6a'):_0x35fc('0x6b');return db[_0x19682e+_0x35fc('0x6c')]['findOne']({'raw':!![],'where':{'id':_0x1f5cbc[_0x35fc('0x1d')]['id']}})[_0x35fc('0xa')](function(_0x319033){if(_[_0x35fc('0x15')](_0x319033)){throw new Error(_0x19682e+_0x35fc('0x6d'));}_0x4f535a=_0x319033;return db[_0x19682e+_0x35fc('0x6e')][_0x35fc('0x6f')]({'where':{'id':_0x1f5cbc[_0x35fc('0x23')]['messageId']},'include':[{'model':db[_0x19682e+_0x35fc('0x70')],'as':_0x35fc('0x70')},{'model':db[_0x19682e+_0x169ea2],'as':_0x35fc('0x6b')}]});})[_0x35fc('0xa')](function(_0x221c5b){if(_[_0x35fc('0x15')](_0x221c5b)){throw new Error(_0x19682e+'\x20Message\x20not\x20found');}_0x226fdf=_0x221c5b;return _0x221c5b[_0x35fc('0x71')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x4855ee={'uniqueid':_0x8fc410+'.'+_0x226fdf['id']+'.'+_0x226fdf[_0x35fc('0x70')]['id'],'FromUserId':_0x1f5cbc['user']['id'],'type':_0x35fc('0x72')};_0x4855ee[_0x19682e+_0x35fc('0x73')]=_0x226fdf['id'];_0x4855ee[_0x19682e+_0x35fc('0x74')]=_0x226fdf['Interaction']['id'];_0x4855ee[_0x35fc('0x75')+_0x19682e+_0x169ea2+'Id']=_0x226fdf[_0x35fc('0x6b')]['id'];_0x4855ee['To'+_0x19682e+_0x35fc('0x76')]=_0x4f535a['id'];return db[_0x19682e+_0x35fc('0x77')][_0x35fc('0x78')](_0x4855ee);})['then'](function(){return respondWithRpcPromise('Start',{'channel':_0x8fc410,'interaction':_0x226fdf['Interaction'],'message':_0x226fdf,'account':_0x226fdf[_0x35fc('0x6b')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x4f535a[_0x35fc('0x13')]+','+(_0x226fdf[_0x35fc('0x6b')][_0x35fc('0x79')]||0x12c),'interval':_0x35fc('0x7a')}]},routingClient);})['then'](respondWithResult(_0x35ef53,null))[_0x35fc('0xf')](handleError(_0x35ef53,null));};};exports[_0x35fc('0x7b')]=function(_0x312827,_0x47c507){var _0x128286,_0x175cc7;if(_[_0x35fc('0x15')](_0x312827['body']['channel'])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x32b9e1=_0x312827[_0x35fc('0x23')][_0x35fc('0x7c')];var _0x3858a9=_['capitalize'](_0x32b9e1);var _0x3ead4e=_0x32b9e1===_0x35fc('0x7d')?'Website':'Account';return db[_0x35fc('0x7e')][_0x35fc('0x6f')]({'raw':!![],'where':{'id':_0x312827[_0x35fc('0x1d')]['id'],'role':'agent'}})['then'](function(_0x134e60){if(_[_0x35fc('0x15')](_0x134e60)){throw new Error('Agent\x20not\x20found');}_0x128286=_0x134e60;return db[_0x3858a9+_0x35fc('0x6e')][_0x35fc('0x6f')]({'where':{'id':_0x312827[_0x35fc('0x23')]['messageId']},'include':[{'model':db[_0x3858a9+_0x35fc('0x70')],'as':_0x35fc('0x70')},{'model':db[_0x3858a9+_0x3ead4e],'as':_0x35fc('0x6b')}]});})[_0x35fc('0xa')](function(_0x4fd676){if(_[_0x35fc('0x15')](_0x4fd676)){throw new Error(_0x3858a9+_0x35fc('0x7f'));}_0x175cc7=_0x4fd676;return _0x4fd676[_0x35fc('0x71')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x96dfc={'uniqueid':_0x32b9e1+'.'+_0x175cc7['id']+'.'+_0x175cc7[_0x35fc('0x70')]['id'],'FromUserId':_0x312827[_0x35fc('0x32')]['id'],'type':'queue','ToUserId':_0x128286['id']};_0x96dfc[_0x3858a9+_0x35fc('0x73')]=_0x175cc7['id'];_0x96dfc[_0x3858a9+_0x35fc('0x74')]=_0x175cc7['Interaction']['id'];_0x96dfc[_0x35fc('0x75')+_0x3858a9+_0x3ead4e+'Id']=_0x175cc7[_0x35fc('0x6b')]['id'];return db[_0x3858a9+_0x35fc('0x77')][_0x35fc('0x78')](_0x96dfc);})[_0x35fc('0xa')](function(){return respondWithRpcPromise(_0x35fc('0x80'),{'channel':_0x32b9e1,'interaction':_0x175cc7[_0x35fc('0x70')],'message':_0x175cc7,'account':_0x175cc7[_0x35fc('0x6b')],'applications':[{'id':0x0,'priority':0x1,'app':_0x35fc('0x3c'),'appdata':_0x128286['name']+','+(_0x175cc7[_0x35fc('0x6b')][_0x35fc('0x81')]||0x12c),'interval':_0x35fc('0x7a')}]},routingClient);})[_0x35fc('0xa')](respondWithResult(_0x47c507,null))['catch'](handleError(_0x47c507,null));};
\ No newline at end of file
+var _0x2675=['request','error','result','catch','status','json','sendStatus','name','send','isNil','rows','find','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','then','voiceChannelStopMixMonitor','params','voiceQueues','VoiceQueues','updateVoiceQueue','body','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','merge','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','findAll','INTERACTION','length','format','MemberReport','findOrCreate','interface','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','telephones','Telephones','trunks','Trunks','Campaigns','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','showOpenchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','type','map','queue_id','indexOf','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','\x20Queue\x20not\x20found','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Agent\x20not\x20found','Message','findOne','agentTransferTimeout','bluebird','../../mysqldb','../../config/logger','jayson/promise','client','http'];(function(_0x4aa1b1,_0x56b523){var _0x1961c4=function(_0x3baa15){while(--_0x3baa15){_0x4aa1b1['push'](_0x4aa1b1['shift']());}};_0x1961c4(++_0x56b523);}(_0x2675,0x75));var _0x5267=function(_0x1893e7,_0x1f73e2){_0x1893e7=_0x1893e7-0x0;var _0x2bffae=_0x2675[_0x1893e7];return _0x2bffae;};'use strict';var BPromise=require(_0x5267('0x0'));var moment=require('moment');var _=require('lodash');var util=require('util');var db=require(_0x5267('0x1'))['db'];var logger=require(_0x5267('0x2'))('api');var jayson=require(_0x5267('0x3'));var amiClient=jayson[_0x5267('0x4')]['http']({'port':0x232a});var mailClient=jayson[_0x5267('0x4')][_0x5267('0x5')]({'port':0x232b});var routingClient=jayson[_0x5267('0x4')][_0x5267('0x5')]({'port':0x232c});function respondWithRpcPromise(_0x20f065,_0xc56cd5,_0x527c16){return new BPromise(function(_0x9e0a27,_0x46bfdf){var _0x506fd7=_0x527c16?_0x527c16:amiClient;return _0x506fd7[_0x5267('0x6')](_0x20f065,_0xc56cd5)['then'](function(_0x3ff4e9){if(_0x3ff4e9[_0x5267('0x7')]){if(_0x3ff4e9[_0x5267('0x7')]['code']===0x1f4){return _0x46bfdf(_0x3ff4e9[_0x5267('0x7')]['message']);}return _0x9e0a27(_0x3ff4e9[_0x5267('0x7')]['message']);}else{_0x9e0a27(_0x3ff4e9[_0x5267('0x8')]);}})[_0x5267('0x9')](function(_0x268a8a){_0x46bfdf(_0x268a8a);});});}function respondWithResult(_0x1f9be3,_0x1d7090){_0x1d7090=_0x1d7090||0xc8;return function(_0x1171b9){if(_0x1171b9){return _0x1f9be3[_0x5267('0xa')](_0x1d7090)[_0x5267('0xb')](_0x1171b9);}return _0x1f9be3[_0x5267('0xc')](0x194);};}function handleError(_0x1e2d3b,_0x16e5a7){_0x16e5a7=_0x16e5a7||0x1f4;return function(_0x29349a){logger[_0x5267('0x7')](_0x29349a['stack']);if(_0x29349a['name']){delete _0x29349a[_0x5267('0xd')];}_0x1e2d3b[_0x5267('0xa')](_0x16e5a7)[_0x5267('0xe')](_0x29349a);};}function findById(_0x3f5344){return function(_0x46b2c2){if(!_[_0x5267('0xf')](_0x3f5344)&&!_[_0x5267('0xf')](_0x46b2c2)&&!_[_0x5267('0xf')](_0x46b2c2[_0x5267('0x10')])){return _[_0x5267('0x11')](_0x46b2c2[_0x5267('0x10')],function(_0x1ab03){return _0x1ab03['id']==_0x3f5344;});}return null;};}exports['voiceChannels']=function(_0x18f32e,_0x2afd38){return respondWithRpcPromise('VoiceChannels',_0x18f32e[_0x5267('0x12')])['then'](respondWithResult(_0x2afd38,null))[_0x5267('0x9')](handleError(_0x2afd38,null));};exports[_0x5267('0x13')]=function(_0x39c0c3,_0x2a9f99){return respondWithRpcPromise(_0x5267('0x14'),_['merge'](_0x39c0c3[_0x5267('0x12')],_0x39c0c3['params']))[_0x5267('0x15')](respondWithResult(_0x2a9f99,null))[_0x5267('0x9')](handleError(_0x2a9f99,null));};exports[_0x5267('0x16')]=function(_0x56dd95,_0x499f19){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_['merge'](_0x56dd95['query'],_0x56dd95[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x499f19,null))[_0x5267('0x9')](handleError(_0x499f19,null));};exports[_0x5267('0x18')]=function(_0x11c8ea,_0x40d1be){return respondWithRpcPromise(_0x5267('0x19'),_0x11c8ea[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x40d1be,null))['catch'](handleError(_0x40d1be,null));};exports['showVoiceQueues']=function(_0x354111,_0x472938){return respondWithRpcPromise('VoiceQueues',_0x354111[_0x5267('0x12')])['then'](findById(_0x354111['params']['id']))[_0x5267('0x15')](respondWithResult(_0x472938,null))[_0x5267('0x9')](handleError(_0x472938,null));};exports[_0x5267('0x1a')]=function(_0x2d2ace,_0x33c431){return respondWithRpcPromise('UpdateVoiceQueue',_['merge'](_0x2d2ace[_0x5267('0x1b')],_0x2d2ace[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x33c431,null))['catch'](handleError(_0x33c431,null));};exports['voiceQueuesPreview']=function(_0xbe7922,_0x3ef2a8){return respondWithRpcPromise(_0x5267('0x1c'),_['merge'](_0xbe7922['query'],_0xbe7922[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x3ef2a8,null))[_0x5267('0x9')](handleError(_0x3ef2a8,null));};exports[_0x5267('0x1d')]=function(_0x5bbb83,_0x33e456){return respondWithRpcPromise(_0x5267('0x1e'),_0x5bbb83[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x33e456,null))[_0x5267('0x9')](handleError(_0x33e456,null));};exports[_0x5267('0x1f')]=function(_0x341bae,_0x1dda95){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x341bae[_0x5267('0x12')],_0x341bae['params']))[_0x5267('0x15')](respondWithResult(_0x1dda95,null))[_0x5267('0x9')](handleError(_0x1dda95,null));};exports[_0x5267('0x20')]=function(_0x3a729c,_0x4ac4a0){return respondWithRpcPromise(_0x5267('0x21'),_[_0x5267('0x22')](_0x3a729c[_0x5267('0x12')],_0x3a729c[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x4ac4a0,null))[_0x5267('0x9')](handleError(_0x4ac4a0,null));};exports[_0x5267('0x23')]=function(_0xa0ea89,_0x484b77){return respondWithRpcPromise(_0x5267('0x24'),_['merge'](_0xa0ea89[_0x5267('0x12')],_0xa0ea89[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x484b77,null))[_0x5267('0x9')](handleError(_0x484b77,null));};exports[_0x5267('0x25')]=function(_0x33ecd7,_0x465ad9){return respondWithRpcPromise('Outbound',_0x33ecd7[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x465ad9,null))[_0x5267('0x9')](handleError(_0x465ad9,null));};exports[_0x5267('0x26')]=function(_0x82cea7,_0x21eabf){return respondWithRpcPromise(_0x5267('0x27'),_0x82cea7['query'])[_0x5267('0x15')](respondWithResult(_0x21eabf,null))['catch'](handleError(_0x21eabf,null));};exports[_0x5267('0x28')]=function(_0x5c0cdf,_0x4dee66){var _0x51bddd;return respondWithRpcPromise(_0x5267('0x29'),_0x5c0cdf['query'])[_0x5267('0x15')](function(_0x146476){_0x51bddd=_0x146476;return respondWithRpcPromise(_0x5267('0x29'),_0x5c0cdf[_0x5267('0x12')],routingClient);})['then'](function(_0x456b33){return _[_0x5267('0x22')]({},_0x456b33,_0x51bddd);})['then'](respondWithResult(_0x4dee66,null))['catch'](handleError(_0x4dee66,null));};exports[_0x5267('0x2a')]=function(_0x560cdf,_0x12df83){if(_0x560cdf[_0x5267('0x1b')]&&_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')]&&_0x560cdf[_0x5267('0x2c')]&&_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')]){for(var _0x5697b3 in _0x560cdf['body'][_0x5267('0x2b')]){if(_0x560cdf['body'][_0x5267('0x2b')][_0x5267('0x2d')](_0x5697b3)){db['MemberReport'][_0x5267('0x2e')]({'where':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')],'type':_0x5267('0x2f'),'exitAt':null,'uniqueid':_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')][_0x5697b3]&&_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')][_0x5697b3][_0x5267('0x30')]?{'$notIn':_0x560cdf['body'][_0x5267('0x2b')][_0x5697b3]}:{'$ne':null}}})[_0x5267('0x15')](function(_0x19b015){var _0x45241a=moment()[_0x5267('0x31')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x3d15ac=0x0,_0x4e0132=_0x19b015[_0x5267('0x30')];_0x3d15ac<_0x4e0132;_0x3d15ac+=0x1){_0x19b015[_0x3d15ac]['updateAttributes']({'exitAt':_0x45241a});}});for(var _0x4ae9f9=0x0;_0x4ae9f9<_0x560cdf[_0x5267('0x1b')]['interaction'][_0x5697b3][_0x5267('0x30')];_0x4ae9f9+=0x1){db[_0x5267('0x32')][_0x5267('0x33')]({'where':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')]['name'],'type':_0x5267('0x2f'),'uniqueid':_0x560cdf['body']['interaction'][_0x5697b3][_0x4ae9f9],'exitAt':null},'defaults':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')],'interface':_['isNil'](_0x560cdf['user'][_0x5267('0x34')])?util[_0x5267('0x31')](_0x5267('0x35'),_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')]):_0x560cdf[_0x5267('0x2c')][_0x5267('0x34')],'type':_0x5267('0x2f'),'enterAt':moment()[_0x5267('0x31')](_0x5267('0x36')),'role':_0x5267('0x37'),'internal':_0x560cdf[_0x5267('0x2c')][_0x5267('0x38')],'uniqueid':_0x560cdf[_0x5267('0x1b')]['interaction'][_0x5697b3][_0x4ae9f9]}});}}}}return respondWithRpcPromise(_0x5267('0x39'),{'id':_0x560cdf[_0x5267('0x17')]['id'],'capacity':_0x560cdf[_0x5267('0x1b')]['capacity']},routingClient)[_0x5267('0x15')](respondWithResult(_0x12df83,null))[_0x5267('0x9')](handleError(_0x12df83,null));};exports[_0x5267('0x3a')]=function(_0x2a97f1,_0x119546){return respondWithRpcPromise(_0x5267('0x3b'),_0x2a97f1['query'])[_0x5267('0x15')](respondWithResult(_0x119546,null))['catch'](handleError(_0x119546,null));};exports[_0x5267('0x3c')]=function(_0x30fcd2,_0xa49fd7){return respondWithRpcPromise(_0x5267('0x3d'),_0x30fcd2[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0xa49fd7,null))[_0x5267('0x9')](handleError(_0xa49fd7,null));};exports['campaigns']=function(_0x57ca8f,_0x200855){return respondWithRpcPromise(_0x5267('0x3e'),_0x57ca8f['query'])[_0x5267('0x15')](respondWithResult(_0x200855,null))['catch'](handleError(_0x200855,null));};exports['chatQueues']=function(_0x1eeb21,_0x79cee1){return respondWithRpcPromise(_0x5267('0x3f'),_0x1eeb21[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x79cee1,null))[_0x5267('0x9')](handleError(_0x79cee1,null));};exports[_0x5267('0x40')]=function(_0x3fd8f9,_0xf0b5a9){return respondWithRpcPromise(_0x5267('0x3f'),_0x3fd8f9['query'],routingClient)[_0x5267('0x15')](findById(_0x3fd8f9[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0xf0b5a9,null))[_0x5267('0x9')](handleError(_0xf0b5a9,null));};exports[_0x5267('0x41')]=function(_0x34c205,_0x552211){return respondWithRpcPromise(_0x5267('0x42'),_0x34c205['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x552211,null))[_0x5267('0x9')](handleError(_0x552211,null));};exports[_0x5267('0x43')]=function(_0x4a72c3,_0x1593ce){return respondWithRpcPromise(_0x5267('0x42'),_0x4a72c3[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0x4a72c3[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x1593ce,null))['catch'](handleError(_0x1593ce,null));};exports[_0x5267('0x44')]=function(_0x190d02,_0x186667){return respondWithRpcPromise(_0x5267('0x45'),_0x190d02['query'],mailClient)['then'](respondWithResult(_0x186667,null))[_0x5267('0x9')](handleError(_0x186667,null));};exports['openchannelQueues']=function(_0x3f5cda,_0x47059c){return respondWithRpcPromise('OpenchannelQueues',_0x3f5cda['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x47059c,null))[_0x5267('0x9')](handleError(_0x47059c,null));};exports[_0x5267('0x46')]=function(_0x537f75,_0x457dca){return respondWithRpcPromise(_0x5267('0x47'),_0x537f75[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0x537f75['params']['id']))['then'](respondWithResult(_0x457dca,null))['catch'](handleError(_0x457dca,null));};exports[_0x5267('0x48')]=function(_0x2457a3,_0x45ee25){return respondWithRpcPromise(_0x5267('0x49'),_0x2457a3[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x45ee25,null))[_0x5267('0x9')](handleError(_0x45ee25,null));};exports[_0x5267('0x4a')]=function(_0x486b02,_0x1ddfad){return respondWithRpcPromise(_0x5267('0x49'),_0x486b02['query'],routingClient)[_0x5267('0x15')](findById(_0x486b02[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x1ddfad,null))[_0x5267('0x9')](handleError(_0x1ddfad,null));};exports[_0x5267('0x4b')]=function(_0xde1ecd,_0x4915f4){return respondWithRpcPromise(_0x5267('0x4c'),_0xde1ecd[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x4915f4,null))[_0x5267('0x9')](handleError(_0x4915f4,null));};exports[_0x5267('0x4d')]=function(_0xd9bcf9,_0x4aac32){return respondWithRpcPromise(_0x5267('0x4c'),_0xd9bcf9[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0xd9bcf9[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x4aac32,null))[_0x5267('0x9')](handleError(_0x4aac32,null));};exports['faxQueues']=function(_0x283423,_0x41299c){return respondWithRpcPromise(_0x5267('0x4e'),_0x283423[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x41299c,null))['catch'](handleError(_0x41299c,null));};exports['showFaxQueues']=function(_0x910f97,_0x5cca85){return respondWithRpcPromise(_0x5267('0x4e'),_0x910f97['query'],routingClient)[_0x5267('0x15')](findById(_0x910f97[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x5cca85,null))[_0x5267('0x9')](handleError(_0x5cca85,null));};exports[_0x5267('0x4f')]=function(_0xa92aa5,_0x21338f){return respondWithRpcPromise(_0x5267('0x50'),_0xa92aa5['query'])['then'](respondWithResult(_0x21338f,null))['catch'](handleError(_0x21338f,null));};exports[_0x5267('0x51')]=function(_0x28a101,_0x2ab2be){return respondWithRpcPromise(_0x5267('0x52'),_0x28a101['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x2ab2be,null))[_0x5267('0x9')](handleError(_0x2ab2be,null));};exports[_0x5267('0x53')]=function(_0xc3ac3f,_0x5a0e73){return respondWithRpcPromise(_0x5267('0x54'),_0xc3ac3f[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x5a0e73,null))[_0x5267('0x9')](handleError(_0x5a0e73,null));};exports[_0x5267('0x55')]=function(_0x4a9995,_0x47e235){return respondWithRpcPromise(_0x5267('0x56'),_0x4a9995[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x47e235,null))['catch'](handleError(_0x47e235,null));};exports[_0x5267('0x57')]=function(_0x2e7f8a,_0x35b302){return respondWithRpcPromise(_0x5267('0x56'),_0x2e7f8a[_0x5267('0x12')],routingClient)['then'](function(_0x4643ae){if(_0x2e7f8a[_0x5267('0x12')]['type']!==undefined){var _0x26c628=_(_0x4643ae[_0x5267('0x10')])[_0x5267('0x58')]([_0x2e7f8a[_0x5267('0x12')][_0x5267('0x59')],_0x2e7f8a[_0x5267('0x17')]['id']])[_0x5267('0x5a')](_0x5267('0x5b'))['uniq']()['value']();return _0x4643ae[_0x5267('0x10')][_0x5267('0x58')](function(_0x3f729f){return _0x26c628[_0x5267('0x5c')](_0x3f729f['queue_id'])>-0x1;});}else{return _0x4643ae[_0x5267('0x10')]['filter'](function(_0x2988a1){return _0x2988a1[_0x5267('0x5b')]===parseInt(_0x2e7f8a[_0x5267('0x17')]['id']);});}})[_0x5267('0x15')](respondWithResult(_0x35b302,null))['catch'](handleError(_0x35b302,null));};exports['smsQueuesWaitingInteractions']=function(_0x3a67a0,_0x3e2cf5){return respondWithRpcPromise(_0x5267('0x5d'),_0x3a67a0[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x3e2cf5,null))[_0x5267('0x9')](handleError(_0x3e2cf5,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x1b8d72,_0x4a05c9){return respondWithRpcPromise(_0x5267('0x5e'),_0x1b8d72['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x4a05c9,null))[_0x5267('0x9')](handleError(_0x4a05c9,null));};exports[_0x5267('0x5f')]=function(_0x87aa90,_0x164cc1){return respondWithRpcPromise(_0x5267('0x60'),_0x87aa90[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x164cc1,null))[_0x5267('0x9')](handleError(_0x164cc1,null));};exports[_0x5267('0x61')]=function(_0x555c8){return function(_0x531bb9,_0x40c7b5){var _0x14baf4,_0x4d9ec9;var _0xde179f=_[_0x5267('0x62')](_0x555c8);var _0x3ebda6=_0x555c8===_0x5267('0x63')?_0x5267('0x64'):_0x5267('0x65');return db[_0xde179f+_0x5267('0x66')]['findOne']({'raw':!![],'where':{'id':_0x531bb9[_0x5267('0x17')]['id']}})[_0x5267('0x15')](function(_0x2543a4){if(_[_0x5267('0xf')](_0x2543a4)){throw new Error(_0xde179f+_0x5267('0x67'));}_0x14baf4=_0x2543a4;return db[_0xde179f+'Message']['findOne']({'where':{'id':_0x531bb9[_0x5267('0x1b')][_0x5267('0x68')]},'include':[{'model':db[_0xde179f+_0x5267('0x69')],'as':_0x5267('0x69')},{'model':db[_0xde179f+_0x3ebda6],'as':'Account'}]});})[_0x5267('0x15')](function(_0x3cc775){if(_[_0x5267('0xf')](_0x3cc775)){throw new Error(_0xde179f+_0x5267('0x6a'));}_0x4d9ec9=_0x3cc775;return _0x3cc775[_0x5267('0x6b')]({'read':0x0,'readAt':null,'UserId':null});})[_0x5267('0x15')](function(){var _0x2b38f2={'uniqueid':_0x555c8+'.'+_0x4d9ec9['id']+'.'+_0x4d9ec9[_0x5267('0x69')]['id'],'FromUserId':_0x531bb9[_0x5267('0x2c')]['id'],'type':_0x5267('0x6c')};_0x2b38f2[_0xde179f+_0x5267('0x6d')]=_0x4d9ec9['id'];_0x2b38f2[_0xde179f+_0x5267('0x6e')]=_0x4d9ec9[_0x5267('0x69')]['id'];_0x2b38f2['From'+_0xde179f+_0x3ebda6+'Id']=_0x4d9ec9[_0x5267('0x65')]['id'];_0x2b38f2['To'+_0xde179f+_0x5267('0x6f')]=_0x14baf4['id'];return db[_0xde179f+_0x5267('0x70')][_0x5267('0x71')](_0x2b38f2);})[_0x5267('0x15')](function(){return respondWithRpcPromise(_0x5267('0x72'),{'channel':_0x555c8,'interaction':_0x4d9ec9[_0x5267('0x69')],'message':_0x4d9ec9,'account':_0x4d9ec9[_0x5267('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5267('0x6c'),'appdata':_0x14baf4[_0x5267('0xd')]+','+(_0x4d9ec9[_0x5267('0x65')][_0x5267('0x73')]||0x12c),'interval':_0x5267('0x74')}]},routingClient);})[_0x5267('0x15')](respondWithResult(_0x40c7b5,null))[_0x5267('0x9')](handleError(_0x40c7b5,null));};};exports[_0x5267('0x75')]=function(_0x28884b,_0x35a4a3){var _0x7ecf0e,_0x676556;if(_[_0x5267('0xf')](_0x28884b[_0x5267('0x1b')][_0x5267('0x76')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x339f3f=_0x28884b[_0x5267('0x1b')][_0x5267('0x76')];var _0x405eb4=_[_0x5267('0x62')](_0x339f3f);var _0x557749=_0x339f3f===_0x5267('0x63')?_0x5267('0x64'):'Account';return db['User']['findOne']({'raw':!![],'where':{'id':_0x28884b[_0x5267('0x17')]['id'],'role':'agent'}})[_0x5267('0x15')](function(_0x54422c){if(_['isNil'](_0x54422c)){throw new Error(_0x5267('0x77'));}_0x7ecf0e=_0x54422c;return db[_0x405eb4+_0x5267('0x78')][_0x5267('0x79')]({'where':{'id':_0x28884b[_0x5267('0x1b')][_0x5267('0x68')]},'include':[{'model':db[_0x405eb4+'Interaction'],'as':'Interaction'},{'model':db[_0x405eb4+_0x557749],'as':_0x5267('0x65')}]});})[_0x5267('0x15')](function(_0x1a6245){if(_[_0x5267('0xf')](_0x1a6245)){throw new Error(_0x405eb4+_0x5267('0x6a'));}_0x676556=_0x1a6245;return _0x1a6245['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x5267('0x15')](function(){var _0x5bece1={'uniqueid':_0x339f3f+'.'+_0x676556['id']+'.'+_0x676556['Interaction']['id'],'FromUserId':_0x28884b[_0x5267('0x2c')]['id'],'type':'queue','ToUserId':_0x7ecf0e['id']};_0x5bece1[_0x405eb4+'MessageId']=_0x676556['id'];_0x5bece1[_0x405eb4+_0x5267('0x6e')]=_0x676556[_0x5267('0x69')]['id'];_0x5bece1['From'+_0x405eb4+_0x557749+'Id']=_0x676556['Account']['id'];return db[_0x405eb4+'TransferReport'][_0x5267('0x71')](_0x5bece1);})['then'](function(){return respondWithRpcPromise(_0x5267('0x72'),{'channel':_0x339f3f,'interaction':_0x676556['Interaction'],'message':_0x676556,'account':_0x676556[_0x5267('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5267('0x37'),'appdata':_0x7ecf0e['name']+','+(_0x676556[_0x5267('0x65')][_0x5267('0x7a')]||0x12c),'interval':_0x5267('0x74')}]},routingClient);})[_0x5267('0x15')](respondWithResult(_0x35a4a3,null))[_0x5267('0x9')](handleError(_0x35a4a3,null));};
\ No newline at end of file
index 254ac4f..a6193fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad4d=['fs-extra','../../components/auth/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','/:id','show','/:id/run','run','post','create','put','update','delete','destroy','multer','util','path','express','Router'];(function(_0x52b504,_0x432c22){var _0xd8b964=function(_0x42432b){while(--_0x42432b){_0x52b504['push'](_0x52b504['shift']());}};_0xd8b964(++_0x432c22);}(_0xad4d,0x1b3));var _0xdad4=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0xad4d[_0x4ff09b];return _0x3f5c2e;};'use strict';var multer=require(_0xdad4('0x0'));var util=require(_0xdad4('0x1'));var path=require(_0xdad4('0x2'));var timeout=require('connect-timeout');var express=require(_0xdad4('0x3'));var router=express[_0xdad4('0x4')]();var fs_extra=require(_0xdad4('0x5'));var auth=require(_0xdad4('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xdad4('0x7'));var controller=require(_0xdad4('0x8'));router[_0xdad4('0x9')]('/',auth[_0xdad4('0xa')](),controller[_0xdad4('0xb')]);router[_0xdad4('0x9')](_0xdad4('0xc'),auth['isAuthenticated'](),controller[_0xdad4('0xd')]);router[_0xdad4('0x9')](_0xdad4('0xe'),auth['isAuthenticated'](),controller[_0xdad4('0xf')]);router[_0xdad4('0x10')]('/',auth[_0xdad4('0xa')](),controller[_0xdad4('0x11')]);router[_0xdad4('0x12')]('/:id',auth[_0xdad4('0xa')](),controller[_0xdad4('0x13')]);router[_0xdad4('0x14')]('/:id',auth[_0xdad4('0xa')](),controller[_0xdad4('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xb26f=['create','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./schedule.controller','isAuthenticated','index','/:id','show','get','/:id/run','run','post'];(function(_0x42f009,_0x5e27b1){var _0x22a1e0=function(_0x297993){while(--_0x297993){_0x42f009['push'](_0x42f009['shift']());}};_0x22a1e0(++_0x5e27b1);}(_0xb26f,0xec));var _0xfb26=function(_0x11cd17,_0x489e02){_0x11cd17=_0x11cd17-0x0;var _0x3343ad=_0xb26f[_0x11cd17];return _0x3343ad;};'use strict';var multer=require(_0xfb26('0x0'));var util=require('util');var path=require(_0xfb26('0x1'));var timeout=require('connect-timeout');var express=require(_0xfb26('0x2'));var router=express[_0xfb26('0x3')]();var fs_extra=require(_0xfb26('0x4'));var auth=require(_0xfb26('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfb26('0x6'));var controller=require(_0xfb26('0x7'));router['get']('/',auth[_0xfb26('0x8')](),controller[_0xfb26('0x9')]);router['get'](_0xfb26('0xa'),auth[_0xfb26('0x8')](),controller[_0xfb26('0xb')]);router[_0xfb26('0xc')](_0xfb26('0xd'),auth[_0xfb26('0x8')](),controller[_0xfb26('0xe')]);router[_0xfb26('0xf')]('/',auth[_0xfb26('0x8')](),controller[_0xfb26('0x10')]);router['put'](_0xfb26('0xa'),auth['isAuthenticated'](),controller[_0xfb26('0x11')]);router[_0xfb26('0x12')](_0xfb26('0xa'),auth['isAuthenticated'](),controller[_0xfb26('0x13')]);module[_0xfb26('0x14')]=router;
\ No newline at end of file
index 33f7c0a..cb1f235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a0b=['quarters','days','hours','minutes','csv','pdf','xlsx','custom','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years'];(function(_0x7d768c,_0x1295d3){var _0x20720d=function(_0x281788){while(--_0x281788){_0x7d768c['push'](_0x7d768c['shift']());}};_0x20720d(++_0x1295d3);}(_0x0a0b,0x1cb));var _0xb0a0=function(_0x3321c1,_0x504db1){_0x3321c1=_0x3321c1-0x0;var _0x45f06b=_0x0a0b[_0x3321c1];return _0x45f06b;};'use strict';var Sequelize=require(_0xb0a0('0x0'));module[_0xb0a0('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xb0a0('0x2')]},'active':{'type':Sequelize[_0xb0a0('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xb0a0('0x4')},'startAt':{'type':Sequelize[_0xb0a0('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0xb0a0('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xb0a0('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xb0a0('0x7')](_0xb0a0('0x8'),_0xb0a0('0x9'),'months','weeks',_0xb0a0('0xa'),_0xb0a0('0xb'),_0xb0a0('0xc')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0xb0a0('0x7')](_0xb0a0('0xd'),_0xb0a0('0xe'),_0xb0a0('0xf')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0xb0a0('0x7')](_0xb0a0('0x10'),'default'),'allowNull':![],'defaultValue':_0xb0a0('0x10')},'sendMail':{'type':Sequelize[_0xb0a0('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0xb0a0('0x2')]},'cc':{'type':Sequelize[_0xb0a0('0x11')]},'bcc':{'type':Sequelize[_0xb0a0('0x11')]},'sendIfEmpty':{'type':Sequelize[_0xb0a0('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x5432=['custom','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','ENUM','years','quarters','weeks','hours','minutes','days','pdf','xlsx','csv'];(function(_0x5b7407,_0xf6b271){var _0x29dc64=function(_0x259c5c){while(--_0x259c5c){_0x5b7407['push'](_0x5b7407['shift']());}};_0x29dc64(++_0xf6b271);}(_0x5432,0x92));var _0x2543=function(_0x3732e9,_0x36ce12){_0x3732e9=_0x3732e9-0x0;var _0x1a637f=_0x5432[_0x3732e9];return _0x1a637f;};'use strict';var Sequelize=require(_0x2543('0x0'));module[_0x2543('0x1')]={'name':{'type':Sequelize[_0x2543('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x2543('0x2')]},'active':{'type':Sequelize[_0x2543('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x2543('0x2')],'allowNull':![],'defaultValue':_0x2543('0x4')},'startAt':{'type':Sequelize[_0x2543('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x2543('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x2543('0x6')](_0x2543('0x7'),_0x2543('0x8'),'months',_0x2543('0x9'),'days',_0x2543('0xa'),_0x2543('0xb')),'allowNull':![],'defaultValue':_0x2543('0xc')},'output':{'type':Sequelize['ENUM']('csv',_0x2543('0xd'),_0x2543('0xe')),'allowNull':![],'defaultValue':_0x2543('0xf')},'type':{'type':Sequelize['ENUM'](_0x2543('0x10'),'default'),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x2543('0x11')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize[_0x2543('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index f1b7e09..52c86f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x327b=['query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','includeAll','include','findAll','rows','catch','params','merge','options','find','create','body','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','../../config/schedule','run','zip-dir','fast-json-patch','request-promise','path','to-csv','ejs','lodash','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','save','then','destroy','get','Scheduler','UserProfileResource','stack','name','send','map','Schedule','rawAttributes','fieldName','type','model'];(function(_0x14873a,_0x4fec94){var _0x34b709=function(_0x3e2487){while(--_0x3e2487){_0x14873a['push'](_0x14873a['shift']());}};_0x34b709(++_0x4fec94);}(_0x327b,0x1bc));var _0xb327=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x327b[_0x36c5b0];return _0xf19333;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb327('0x0'));var jsonpatch=require(_0xb327('0x1'));var rp=require(_0xb327('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xb327('0x3'));var sox=require('sox');var csv=require(_0xb327('0x4'));var ejs=require(_0xb327('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb327('0x6'));var squel=require('squel');var crypto=require(_0xb327('0x7'));var jsforce=require('jsforce');var deskjs=require(_0xb327('0x8'));var toCsv=require(_0xb327('0x4'));var querystring=require(_0xb327('0x9'));var Papa=require('papaparse');var Redis=require(_0xb327('0xa'));var authService=require('../../components/auth/service');var qs=require(_0xb327('0xb'));var as=require(_0xb327('0xc'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb327('0xd'))('api');var utils=require(_0xb327('0xe'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb327('0xf'))['db'];function respondWithStatusCode(_0x5d19dc,_0x1e440d){_0x1e440d=_0x1e440d||0xcc;return function(_0x316443){if(_0x316443){return _0x5d19dc['sendStatus'](_0x1e440d);}return _0x5d19dc[_0xb327('0x10')](_0x1e440d)[_0xb327('0x11')]();};}function respondWithResult(_0x2fc09f,_0x106ab3){_0x106ab3=_0x106ab3||0xc8;return function(_0x6947d8){if(_0x6947d8){return _0x2fc09f[_0xb327('0x10')](_0x106ab3)[_0xb327('0x12')](_0x6947d8);}};}function respondWithFilteredResult(_0x27a1c9,_0x491408){return function(_0x1d4bdd){if(_0x1d4bdd){var _0x796a88=typeof _0x491408[_0xb327('0x13')]===_0xb327('0x14')&&typeof _0x491408[_0xb327('0x15')]==='undefined';var _0x1125b9=_0x1d4bdd[_0xb327('0x16')];var _0x39e07f=_0x796a88?0x0:_0x491408['offset'];var _0xc9b87f=_0x796a88?_0x1d4bdd[_0xb327('0x16')]:_0x491408[_0xb327('0x13')]+_0x491408[_0xb327('0x15')];var _0x3a6be1;if(_0xc9b87f>=_0x1125b9){_0xc9b87f=_0x1125b9;_0x3a6be1=0xc8;}else{_0x3a6be1=0xce;}_0x27a1c9[_0xb327('0x10')](_0x3a6be1);return _0x27a1c9['set'](_0xb327('0x17'),_0x39e07f+'-'+_0xc9b87f+'/'+_0x1125b9)[_0xb327('0x12')](_0x1d4bdd);}return null;};}function patchUpdates(_0x4f7968){return function(_0x3a6fdb){try{jsonpatch['apply'](_0x3a6fdb,_0x4f7968,!![]);}catch(_0x4df56b){return BPromise['reject'](_0x4df56b);}return _0x3a6fdb[_0xb327('0x18')]();};}function saveUpdates(_0x3a7499,_0x276eec){return function(_0x3cd805){if(_0x3cd805){return _0x3cd805['update'](_0x3a7499)[_0xb327('0x19')](function(_0x5f203b){return _0x5f203b;});}return null;};}function removeEntity(_0xe84b71,_0x10338a){return function(_0x17c85f){if(_0x17c85f){return _0x17c85f[_0xb327('0x1a')]()[_0xb327('0x19')](function(){var _0x3d142a=_0x17c85f[_0xb327('0x1b')]({'plain':!![]});var _0x5e3184=_0xb327('0x1c');return db[_0xb327('0x1d')][_0xb327('0x1a')]({'where':{'type':_0x5e3184,'resourceId':_0x3d142a['id']}})[_0xb327('0x19')](function(){return _0x17c85f;});})[_0xb327('0x19')](function(){_0xe84b71[_0xb327('0x10')](0xcc)[_0xb327('0x11')]();});}};}function handleEntityNotFound(_0x263e3b,_0x3e7c93){return function(_0x154b67){if(!_0x154b67){_0x263e3b['sendStatus'](0x194);}return _0x154b67;};}function handleError(_0x8d72c,_0x14d26){_0x14d26=_0x14d26||0x1f4;return function(_0x7a74ed){logger['error'](_0x7a74ed[_0xb327('0x1e')]);if(_0x7a74ed['name']){delete _0x7a74ed[_0xb327('0x1f')];}_0x8d72c['status'](_0x14d26)[_0xb327('0x20')](_0x7a74ed);};}exports['index']=function(_0x350280,_0x586532){var _0x4b273a={},_0x20ab96={},_0x26cc05={'count':0x0,'rows':[]};var _0x4851e4=_[_0xb327('0x21')](db[_0xb327('0x22')][_0xb327('0x23')],function(_0x4616a7){return{'name':_0x4616a7[_0xb327('0x24')],'type':_0x4616a7[_0xb327('0x25')]['key']};});_0x20ab96[_0xb327('0x26')]=_[_0xb327('0x21')](_0x4851e4,_0xb327('0x1f'));_0x20ab96[_0xb327('0x27')]=_[_0xb327('0x28')](_0x350280[_0xb327('0x27')]);_0x20ab96['filters']=_['intersection'](_0x20ab96[_0xb327('0x26')],_0x20ab96['query']);_0x4b273a['attributes']=_[_0xb327('0x29')](_0x20ab96['model'],qs['fields'](_0x350280[_0xb327('0x27')][_0xb327('0x2a')]));_0x4b273a[_0xb327('0x2b')]=_0x4b273a['attributes'][_0xb327('0x2c')]?_0x4b273a[_0xb327('0x2b')]:_0x20ab96[_0xb327('0x26')];if(!_0x350280[_0xb327('0x27')][_0xb327('0x2d')](_0xb327('0x2e'))){_0x4b273a[_0xb327('0x15')]=qs[_0xb327('0x15')](_0x350280[_0xb327('0x27')][_0xb327('0x15')]);_0x4b273a[_0xb327('0x13')]=qs['offset'](_0x350280[_0xb327('0x27')][_0xb327('0x13')]);}_0x4b273a[_0xb327('0x2f')]=qs['sort'](_0x350280[_0xb327('0x27')][_0xb327('0x30')]);_0x4b273a[_0xb327('0x31')]=qs[_0xb327('0x32')](_[_0xb327('0x33')](_0x350280[_0xb327('0x27')],_0x20ab96[_0xb327('0x32')]),_0x4851e4);if(_0x350280[_0xb327('0x27')]['filter']){_0x4b273a[_0xb327('0x31')]=_['merge'](_0x4b273a[_0xb327('0x31')],{'$or':_[_0xb327('0x21')](_0x4851e4,function(_0x39d453){if(_0x39d453[_0xb327('0x25')]!==_0xb327('0x34')){var _0x395afe={};_0x395afe[_0x39d453[_0xb327('0x1f')]]={'$like':'%'+_0x350280[_0xb327('0x27')]['filter']+'%'};return _0x395afe;}})});}_0x4b273a=_['merge']({},_0x4b273a,_0x350280['options']);var _0x227c07={'where':_0x4b273a[_0xb327('0x31')]};return db[_0xb327('0x22')][_0xb327('0x16')](_0x227c07)['then'](function(_0x30af37){_0x26cc05[_0xb327('0x16')]=_0x30af37;if(_0x350280['query'][_0xb327('0x35')]){_0x4b273a[_0xb327('0x36')]=[{'all':!![]}];}return db[_0xb327('0x22')][_0xb327('0x37')](_0x4b273a);})[_0xb327('0x19')](function(_0x5baf70){_0x26cc05[_0xb327('0x38')]=_0x5baf70;return _0x26cc05;})['then'](respondWithFilteredResult(_0x586532,_0x4b273a))[_0xb327('0x39')](handleError(_0x586532,null));};exports['show']=function(_0x5347c7,_0x10703a){var _0x35222c={'raw':![],'where':{'id':_0x5347c7[_0xb327('0x3a')]['id']}},_0x3b4893={};_0x3b4893['model']=_['keys'](db[_0xb327('0x22')][_0xb327('0x23')]);_0x3b4893[_0xb327('0x27')]=_[_0xb327('0x28')](_0x5347c7[_0xb327('0x27')]);_0x3b4893[_0xb327('0x32')]=_[_0xb327('0x29')](_0x3b4893[_0xb327('0x26')],_0x3b4893[_0xb327('0x27')]);_0x35222c[_0xb327('0x2b')]=_[_0xb327('0x29')](_0x3b4893[_0xb327('0x26')],qs['fields'](_0x5347c7[_0xb327('0x27')][_0xb327('0x2a')]));_0x35222c[_0xb327('0x2b')]=_0x35222c[_0xb327('0x2b')]['length']?_0x35222c[_0xb327('0x2b')]:_0x3b4893[_0xb327('0x26')];if(_0x5347c7[_0xb327('0x27')][_0xb327('0x35')]){_0x35222c[_0xb327('0x36')]=[{'all':!![]}];}_0x35222c=_[_0xb327('0x3b')]({},_0x35222c,_0x5347c7[_0xb327('0x3c')]);return db['Schedule'][_0xb327('0x3d')](_0x35222c)['then'](handleEntityNotFound(_0x10703a,null))[_0xb327('0x19')](respondWithResult(_0x10703a,null))['catch'](handleError(_0x10703a,null));};exports[_0xb327('0x3e')]=function(_0xcf918e,_0x2538bd){return db[_0xb327('0x22')]['create'](_0xcf918e[_0xb327('0x3f')],{})['then'](function(_0x2761cc){var _0x52af06=_0xcf918e['user']['get']({'plain':!![]});if(!_0x52af06)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x52af06['role']==='user'){var _0x235850=_0x2761cc[_0xb327('0x1b')]({'plain':!![]});var _0x408c17=_0xb327('0x1c');return db[_0xb327('0x40')][_0xb327('0x3d')]({'where':{'name':_0x408c17,'userProfileId':_0x52af06[_0xb327('0x41')]},'raw':!![]})[_0xb327('0x19')](function(_0x192806){if(_0x192806&&_0x192806['autoAssociation']===0x0){return db[_0xb327('0x1d')][_0xb327('0x3e')]({'name':_0x235850[_0xb327('0x1f')],'resourceId':_0x235850['id'],'type':_0x192806[_0xb327('0x1f')],'sectionId':_0x192806['id']},{})['then'](function(){return _0x2761cc;});}else{return _0x2761cc;}})[_0xb327('0x39')](function(_0x570bdf){logger['error'](_0xb327('0x42'),_0x570bdf);throw _0x570bdf;});}return _0x2761cc;})[_0xb327('0x19')](respondWithResult(_0x2538bd,0xc9))[_0xb327('0x39')](handleError(_0x2538bd,null));};exports['update']=function(_0x17cb7a,_0xf28897){if(_0x17cb7a[_0xb327('0x3f')]['id']){delete _0x17cb7a[_0xb327('0x3f')]['id'];}return db['Schedule'][_0xb327('0x3d')]({'where':{'id':_0x17cb7a[_0xb327('0x3a')]['id']}})['then'](handleEntityNotFound(_0xf28897,null))[_0xb327('0x19')](saveUpdates(_0x17cb7a[_0xb327('0x3f')],null))[_0xb327('0x19')](respondWithResult(_0xf28897,null))[_0xb327('0x39')](handleError(_0xf28897,null));};exports[_0xb327('0x1a')]=function(_0xda5803,_0x5a9f9e){return db['Schedule'][_0xb327('0x3d')]({'where':{'id':_0xda5803[_0xb327('0x3a')]['id']}})[_0xb327('0x19')](handleEntityNotFound(_0x5a9f9e,null))[_0xb327('0x19')](removeEntity(_0x5a9f9e,null))[_0xb327('0x39')](handleError(_0x5a9f9e,null));};exports['run']=function(_0x29ef66,_0x11da00,_0x8d7375){var _0x33e803=require(_0xb327('0x43'));return db['Schedule']['find']({'where':{'id':_0x29ef66['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x11da00,null))[_0xb327('0x19')](function(){_0x33e803[_0xb327('0x44')](_0x29ef66[_0xb327('0x3a')]['id']);})[_0xb327('0x19')](respondWithStatusCode(_0x11da00,null))[_0xb327('0x39')](handleError(_0x11da00,null));};
\ No newline at end of file
+var _0xf53e=['filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','keys','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','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','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','Scheduler','end','stack','name','index','map','Schedule','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x2f6584,_0xe78e04){var _0x444426=function(_0x11133f){while(--_0x11133f){_0x2f6584['push'](_0x2f6584['shift']());}};_0x444426(++_0xe78e04);}(_0xf53e,0x181));var _0xef53=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf53e[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xef53('0x0'));var rimraf=require(_0xef53('0x1'));var zipdir=require(_0xef53('0x2'));var jsonpatch=require(_0xef53('0x3'));var rp=require(_0xef53('0x4'));var moment=require(_0xef53('0x5'));var BPromise=require(_0xef53('0x6'));var Mustache=require(_0xef53('0x7'));var util=require('util');var path=require(_0xef53('0x8'));var sox=require('sox');var csv=require(_0xef53('0x9'));var ejs=require(_0xef53('0xa'));var fs=require('fs');var fs_extra=require(_0xef53('0xb'));var _=require(_0xef53('0xc'));var squel=require(_0xef53('0xd'));var crypto=require(_0xef53('0xe'));var jsforce=require(_0xef53('0xf'));var deskjs=require(_0xef53('0x10'));var toCsv=require(_0xef53('0x9'));var querystring=require('querystring');var Papa=require(_0xef53('0x11'));var Redis=require(_0xef53('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xef53('0x13'));var as=require(_0xef53('0x14'));var hardwareService=require(_0xef53('0x15'));var logger=require(_0xef53('0x16'))(_0xef53('0x17'));var utils=require(_0xef53('0x18'));var config=require(_0xef53('0x19'));var licenseUtil=require(_0xef53('0x1a'));var db=require(_0xef53('0x1b'))['db'];function respondWithStatusCode(_0x1d3a03,_0x35b8d2){_0x35b8d2=_0x35b8d2||0xcc;return function(_0x53dc8b){if(_0x53dc8b){return _0x1d3a03[_0xef53('0x1c')](_0x35b8d2);}return _0x1d3a03[_0xef53('0x1d')](_0x35b8d2)['end']();};}function respondWithResult(_0x1692e0,_0x18847d){_0x18847d=_0x18847d||0xc8;return function(_0xca18e2){if(_0xca18e2){return _0x1692e0[_0xef53('0x1d')](_0x18847d)[_0xef53('0x1e')](_0xca18e2);}};}function respondWithFilteredResult(_0x156e67,_0x4d7de9){return function(_0x420fab){if(_0x420fab){var _0x458872=typeof _0x4d7de9[_0xef53('0x1f')]===_0xef53('0x20')&&typeof _0x4d7de9[_0xef53('0x21')]===_0xef53('0x20');var _0x443ee9=_0x420fab[_0xef53('0x22')];var _0x4ccf6b=_0x458872?0x0:_0x4d7de9[_0xef53('0x1f')];var _0x5e4ee6=_0x458872?_0x420fab[_0xef53('0x22')]:_0x4d7de9[_0xef53('0x1f')]+_0x4d7de9['limit'];var _0x1f56a6;if(_0x5e4ee6>=_0x443ee9){_0x5e4ee6=_0x443ee9;_0x1f56a6=0xc8;}else{_0x1f56a6=0xce;}_0x156e67[_0xef53('0x1d')](_0x1f56a6);return _0x156e67[_0xef53('0x23')](_0xef53('0x24'),_0x4ccf6b+'-'+_0x5e4ee6+'/'+_0x443ee9)[_0xef53('0x1e')](_0x420fab);}return null;};}function patchUpdates(_0x9e860c){return function(_0x5f3375){try{jsonpatch[_0xef53('0x25')](_0x5f3375,_0x9e860c,!![]);}catch(_0x58484d){return BPromise[_0xef53('0x26')](_0x58484d);}return _0x5f3375[_0xef53('0x27')]();};}function saveUpdates(_0x4ec37c,_0x4cc70b){return function(_0xc4c1e6){if(_0xc4c1e6){return _0xc4c1e6['update'](_0x4ec37c)[_0xef53('0x28')](function(_0x12533d){return _0x12533d;});}return null;};}function removeEntity(_0x53ba5c,_0xe9cf90){return function(_0xed03ef){if(_0xed03ef){return _0xed03ef[_0xef53('0x29')]()[_0xef53('0x28')](function(){var _0x44f24d=_0xed03ef[_0xef53('0x2a')]({'plain':!![]});var _0x4905bf=_0xef53('0x2b');return db['UserProfileResource'][_0xef53('0x29')]({'where':{'type':_0x4905bf,'resourceId':_0x44f24d['id']}})[_0xef53('0x28')](function(){return _0xed03ef;});})[_0xef53('0x28')](function(){_0x53ba5c['status'](0xcc)[_0xef53('0x2c')]();});}};}function handleEntityNotFound(_0x3d58c0,_0x565a9f){return function(_0x48e644){if(!_0x48e644){_0x3d58c0['sendStatus'](0x194);}return _0x48e644;};}function handleError(_0x100aef,_0x386f18){_0x386f18=_0x386f18||0x1f4;return function(_0x3f0bac){logger['error'](_0x3f0bac[_0xef53('0x2d')]);if(_0x3f0bac['name']){delete _0x3f0bac[_0xef53('0x2e')];}_0x100aef[_0xef53('0x1d')](_0x386f18)['send'](_0x3f0bac);};}exports[_0xef53('0x2f')]=function(_0x2822f5,_0x1839f9){var _0x776590={},_0x43303f={},_0x45b4f0={'count':0x0,'rows':[]};var _0x1fe9b2=_[_0xef53('0x30')](db[_0xef53('0x31')]['rawAttributes'],function(_0x151af7){return{'name':_0x151af7['fieldName'],'type':_0x151af7[_0xef53('0x32')][_0xef53('0x33')]};});_0x43303f[_0xef53('0x34')]=_['map'](_0x1fe9b2,'name');_0x43303f[_0xef53('0x35')]=_['keys'](_0x2822f5['query']);_0x43303f[_0xef53('0x36')]=_['intersection'](_0x43303f[_0xef53('0x34')],_0x43303f[_0xef53('0x35')]);_0x776590['attributes']=_[_0xef53('0x37')](_0x43303f[_0xef53('0x34')],qs[_0xef53('0x38')](_0x2822f5[_0xef53('0x35')][_0xef53('0x38')]));_0x776590[_0xef53('0x39')]=_0x776590[_0xef53('0x39')][_0xef53('0x3a')]?_0x776590['attributes']:_0x43303f[_0xef53('0x34')];if(!_0x2822f5['query'][_0xef53('0x3b')](_0xef53('0x3c'))){_0x776590['limit']=qs[_0xef53('0x21')](_0x2822f5[_0xef53('0x35')][_0xef53('0x21')]);_0x776590[_0xef53('0x1f')]=qs['offset'](_0x2822f5['query'][_0xef53('0x1f')]);}_0x776590[_0xef53('0x3d')]=qs[_0xef53('0x3e')](_0x2822f5[_0xef53('0x35')][_0xef53('0x3e')]);_0x776590[_0xef53('0x3f')]=qs['filters'](_[_0xef53('0x40')](_0x2822f5[_0xef53('0x35')],_0x43303f[_0xef53('0x36')]),_0x1fe9b2);if(_0x2822f5[_0xef53('0x35')][_0xef53('0x41')]){_0x776590[_0xef53('0x3f')]=_[_0xef53('0x42')](_0x776590[_0xef53('0x3f')],{'$or':_['map'](_0x1fe9b2,function(_0x19d450){if(_0x19d450[_0xef53('0x32')]!==_0xef53('0x43')){var _0x320503={};_0x320503[_0x19d450[_0xef53('0x2e')]]={'$like':'%'+_0x2822f5[_0xef53('0x35')][_0xef53('0x41')]+'%'};return _0x320503;}})});}_0x776590=_[_0xef53('0x42')]({},_0x776590,_0x2822f5[_0xef53('0x44')]);var _0x5a6069={'where':_0x776590[_0xef53('0x3f')]};return db[_0xef53('0x31')][_0xef53('0x22')](_0x5a6069)[_0xef53('0x28')](function(_0x482eec){_0x45b4f0[_0xef53('0x22')]=_0x482eec;if(_0x2822f5[_0xef53('0x35')]['includeAll']){_0x776590[_0xef53('0x45')]=[{'all':!![]}];}return db['Schedule'][_0xef53('0x46')](_0x776590);})['then'](function(_0x58f108){_0x45b4f0[_0xef53('0x47')]=_0x58f108;return _0x45b4f0;})[_0xef53('0x28')](respondWithFilteredResult(_0x1839f9,_0x776590))[_0xef53('0x48')](handleError(_0x1839f9,null));};exports[_0xef53('0x49')]=function(_0x1dd892,_0x3acb9b){var _0x40df42={'raw':![],'where':{'id':_0x1dd892[_0xef53('0x4a')]['id']}},_0x42cef9={};_0x42cef9[_0xef53('0x34')]=_['keys'](db[_0xef53('0x31')][_0xef53('0x4b')]);_0x42cef9[_0xef53('0x35')]=_[_0xef53('0x4c')](_0x1dd892['query']);_0x42cef9[_0xef53('0x36')]=_[_0xef53('0x37')](_0x42cef9['model'],_0x42cef9[_0xef53('0x35')]);_0x40df42[_0xef53('0x39')]=_['intersection'](_0x42cef9[_0xef53('0x34')],qs['fields'](_0x1dd892[_0xef53('0x35')]['fields']));_0x40df42[_0xef53('0x39')]=_0x40df42[_0xef53('0x39')][_0xef53('0x3a')]?_0x40df42[_0xef53('0x39')]:_0x42cef9[_0xef53('0x34')];if(_0x1dd892[_0xef53('0x35')]['includeAll']){_0x40df42[_0xef53('0x45')]=[{'all':!![]}];}_0x40df42=_[_0xef53('0x42')]({},_0x40df42,_0x1dd892[_0xef53('0x44')]);return db[_0xef53('0x31')]['find'](_0x40df42)[_0xef53('0x28')](handleEntityNotFound(_0x3acb9b,null))[_0xef53('0x28')](respondWithResult(_0x3acb9b,null))[_0xef53('0x48')](handleError(_0x3acb9b,null));};exports[_0xef53('0x4d')]=function(_0xd643b1,_0x5de9c6){return db[_0xef53('0x31')]['create'](_0xd643b1[_0xef53('0x4e')],{})[_0xef53('0x28')](function(_0x19db70){var _0x318f56=_0xd643b1['user'][_0xef53('0x2a')]({'plain':!![]});if(!_0x318f56)throw new Error(_0xef53('0x4f'));if(_0x318f56[_0xef53('0x50')]===_0xef53('0x51')){var _0x4cb145=_0x19db70[_0xef53('0x2a')]({'plain':!![]});var _0x2efbdb=_0xef53('0x2b');return db[_0xef53('0x52')][_0xef53('0x53')]({'where':{'name':_0x2efbdb,'userProfileId':_0x318f56[_0xef53('0x54')]},'raw':!![]})[_0xef53('0x28')](function(_0x2cc695){if(_0x2cc695&&_0x2cc695[_0xef53('0x55')]===0x0){return db[_0xef53('0x56')][_0xef53('0x4d')]({'name':_0x4cb145[_0xef53('0x2e')],'resourceId':_0x4cb145['id'],'type':_0x2cc695[_0xef53('0x2e')],'sectionId':_0x2cc695['id']},{})[_0xef53('0x28')](function(){return _0x19db70;});}else{return _0x19db70;}})[_0xef53('0x48')](function(_0xd420f8){logger[_0xef53('0x57')](_0xef53('0x58'),_0xd420f8);throw _0xd420f8;});}return _0x19db70;})['then'](respondWithResult(_0x5de9c6,0xc9))[_0xef53('0x48')](handleError(_0x5de9c6,null));};exports['update']=function(_0x290dbe,_0x2bc76b){if(_0x290dbe[_0xef53('0x4e')]['id']){delete _0x290dbe[_0xef53('0x4e')]['id'];}return db[_0xef53('0x31')][_0xef53('0x53')]({'where':{'id':_0x290dbe[_0xef53('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2bc76b,null))[_0xef53('0x28')](saveUpdates(_0x290dbe[_0xef53('0x4e')],null))['then'](respondWithResult(_0x2bc76b,null))['catch'](handleError(_0x2bc76b,null));};exports['destroy']=function(_0x3d4cd8,_0x5a64bc){return db[_0xef53('0x31')]['find']({'where':{'id':_0x3d4cd8['params']['id']}})['then'](handleEntityNotFound(_0x5a64bc,null))[_0xef53('0x28')](removeEntity(_0x5a64bc,null))[_0xef53('0x48')](handleError(_0x5a64bc,null));};exports[_0xef53('0x59')]=function(_0x425d05,_0x222282,_0x4e0c0b){var _0x47fcbc=require('../../config/schedule');return db[_0xef53('0x31')][_0xef53('0x53')]({'where':{'id':_0x425d05[_0xef53('0x4a')]['id']},'raw':!![]})[_0xef53('0x28')](handleEntityNotFound(_0x222282,null))[_0xef53('0x28')](function(){_0x47fcbc[_0xef53('0x59')](_0x425d05[_0xef53('0x4a')]['id']);})[_0xef53('0x28')](respondWithStatusCode(_0x222282,null))[_0xef53('0x48')](handleError(_0x222282,null));};
\ No newline at end of file
index 234f201..3cc8c65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fd6=['../../config/environment','./schedule.attributes','exports','Schedule','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf'];(function(_0x3d1ce2,_0x28b894){var _0x41ca30=function(_0xe82b75){while(--_0xe82b75){_0x3d1ce2['push'](_0x3d1ce2['shift']());}};_0x41ca30(++_0x28b894);}(_0x1fd6,0x1e8));var _0x61fd=function(_0x5e6573,_0x22d690){_0x5e6573=_0x5e6573-0x0;var _0x864fdb=_0x1fd6[_0x5e6573];return _0x864fdb;};'use strict';var _=require(_0x61fd('0x0'));var util=require(_0x61fd('0x1'));var logger=require(_0x61fd('0x2'))('api');var moment=require(_0x61fd('0x3'));var BPromise=require(_0x61fd('0x4'));var rp=require(_0x61fd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x61fd('0x6'));var config=require(_0x61fd('0x7'));var attributes=require(_0x61fd('0x8'));module[_0x61fd('0x9')]=function(_0x1331c,_0x5e3a9b){return _0x1331c['define'](_0x61fd('0xa'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcc43=['Schedule','tools_schedules','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./schedule.attributes','exports','define'];(function(_0x4f566c,_0x1bd302){var _0x3a11c9=function(_0x23dbce){while(--_0x23dbce){_0x4f566c['push'](_0x4f566c['shift']());}};_0x3a11c9(++_0x1bd302);}(_0xcc43,0x18a));var _0x3cc4=function(_0x304090,_0x49f013){_0x304090=_0x304090-0x0;var _0x356685=_0xcc43[_0x304090];return _0x356685;};'use strict';var _=require(_0x3cc4('0x0'));var util=require(_0x3cc4('0x1'));var logger=require(_0x3cc4('0x2'))(_0x3cc4('0x3'));var moment=require(_0x3cc4('0x4'));var BPromise=require(_0x3cc4('0x5'));var rp=require(_0x3cc4('0x6'));var fs=require('fs');var path=require(_0x3cc4('0x7'));var rimraf=require(_0x3cc4('0x8'));var config=require('../../config/environment');var attributes=require(_0x3cc4('0x9'));module[_0x3cc4('0xa')]=function(_0x43bc47,_0x412757){return _0x43bc47[_0x3cc4('0xb')](_0x3cc4('0xc'),attributes,{'tableName':_0x3cc4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 71e2468..eae032c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd391=['debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Schedule,\x20%s,\x20%s','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent'];(function(_0x141749,_0x477b04){var _0x3e6932=function(_0x47b3f2){while(--_0x47b3f2){_0x141749['push'](_0x141749['shift']());}};_0x3e6932(++_0x477b04);}(_0xd391,0x81));var _0x1d39=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xd391[_0x5d6456];return _0x4d66c1;};'use strict';var _=require(_0x1d39('0x0'));var util=require('util');var moment=require(_0x1d39('0x1'));var BPromise=require(_0x1d39('0x2'));var rs=require(_0x1d39('0x3'));var fs=require('fs');var Redis=require(_0x1d39('0x4'));var db=require(_0x1d39('0x5'))['db'];var utils=require(_0x1d39('0x6'));var logger=require(_0x1d39('0x7'))(_0x1d39('0x8'));var config=require(_0x1d39('0x9'));var jayson=require(_0x1d39('0xa'));var client=jayson[_0x1d39('0xb')][_0x1d39('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x40b09c,_0x3cc9b2,_0x2ce3eb){return new BPromise(function(_0xffab72,_0x28334f){return client['request'](_0x40b09c,_0x2ce3eb)['then'](function(_0x34d3e0){logger[_0x1d39('0xd')]('Schedule,\x20%s,\x20%s',_0x3cc9b2,_0x1d39('0xe'));logger[_0x1d39('0xf')](_0x1d39('0x10'),_0x3cc9b2,_0x1d39('0xe'),JSON[_0x1d39('0x11')](_0x34d3e0));if(_0x34d3e0['error']){if(_0x34d3e0[_0x1d39('0x12')][_0x1d39('0x13')]===0x1f4){logger[_0x1d39('0x12')]('Schedule,\x20%s,\x20%s',_0x3cc9b2,_0x34d3e0[_0x1d39('0x12')]['message']);return _0x28334f(_0x34d3e0['error'][_0x1d39('0x14')]);}logger['error'](_0x1d39('0x15'),_0x3cc9b2,_0x34d3e0[_0x1d39('0x12')][_0x1d39('0x14')]);return _0xffab72(_0x34d3e0[_0x1d39('0x12')][_0x1d39('0x14')]);}else{logger[_0x1d39('0xd')](_0x1d39('0x15'),_0x3cc9b2,_0x1d39('0xe'));_0xffab72(_0x34d3e0[_0x1d39('0x16')]['message']);}})[_0x1d39('0x17')](function(_0xe60971){logger['error']('Schedule,\x20%s,\x20%s',_0x3cc9b2,_0xe60971);_0x28334f(_0xe60971);});});}
\ No newline at end of file
+var _0xee99=['randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','bluebird'];(function(_0x3c51af,_0x1991ce){var _0xeb10d9=function(_0xa91e64){while(--_0xa91e64){_0x3c51af['push'](_0x3c51af['shift']());}};_0xeb10d9(++_0x1991ce);}(_0xee99,0x1a1));var _0x9ee9=function(_0xfc6949,_0x5a5ad1){_0xfc6949=_0xfc6949-0x0;var _0x5ea62c=_0xee99[_0xfc6949];return _0x5ea62c;};'use strict';var _=require(_0x9ee9('0x0'));var util=require('util');var moment=require(_0x9ee9('0x1'));var BPromise=require(_0x9ee9('0x2'));var rs=require(_0x9ee9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9ee9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9ee9('0x5'))(_0x9ee9('0x6'));var config=require(_0x9ee9('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9ee9('0x8')][_0x9ee9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50f95a,_0x369922,_0x43ce28){return new BPromise(function(_0x5596da,_0x16b641){return client['request'](_0x50f95a,_0x43ce28)[_0x9ee9('0xa')](function(_0x169c58){logger[_0x9ee9('0xb')](_0x9ee9('0xc'),_0x369922,_0x9ee9('0xd'));logger[_0x9ee9('0xe')](_0x9ee9('0xf'),_0x369922,'request\x20sent',JSON['stringify'](_0x169c58));if(_0x169c58['error']){if(_0x169c58[_0x9ee9('0x10')]['code']===0x1f4){logger[_0x9ee9('0x10')]('Schedule,\x20%s,\x20%s',_0x369922,_0x169c58['error'][_0x9ee9('0x11')]);return _0x16b641(_0x169c58[_0x9ee9('0x10')][_0x9ee9('0x11')]);}logger[_0x9ee9('0x10')](_0x9ee9('0xc'),_0x369922,_0x169c58['error'][_0x9ee9('0x11')]);return _0x5596da(_0x169c58[_0x9ee9('0x10')]['message']);}else{logger[_0x9ee9('0xb')]('Schedule,\x20%s,\x20%s',_0x369922,_0x9ee9('0xd'));_0x5596da(_0x169c58[_0x9ee9('0x12')][_0x9ee9('0x11')]);}})[_0x9ee9('0x13')](function(_0x596d7a){logger[_0x9ee9('0x10')]('Schedule,\x20%s,\x20%s',_0x369922,_0x596d7a);_0x16b641(_0x596d7a);});});}
\ No newline at end of file
index a38c4fa..f7e941f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x395c=['exports','multer','util','express','Router','../../components/auth/service','../../config/environment','./screenRecording.controller','index','get','isAuthenticated','describe','/:id','show','/:id/download','download','put','delete','destroy'];(function(_0x3188ad,_0x52b55b){var _0x555bd5=function(_0x5df148){while(--_0x5df148){_0x3188ad['push'](_0x3188ad['shift']());}};_0x555bd5(++_0x52b55b);}(_0x395c,0xbf));var _0xc395=function(_0x465506,_0x1aff48){_0x465506=_0x465506-0x0;var _0x6c5e95=_0x395c[_0x465506];return _0x6c5e95;};'use strict';var multer=require(_0xc395('0x0'));var util=require(_0xc395('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc395('0x2'));var router=express[_0xc395('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc395('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc395('0x5'));var controller=require(_0xc395('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xc395('0x7')]);router[_0xc395('0x8')]('/describe',auth[_0xc395('0x9')](),controller[_0xc395('0xa')]);router[_0xc395('0x8')](_0xc395('0xb'),auth[_0xc395('0x9')](),controller[_0xc395('0xc')]);router[_0xc395('0x8')](_0xc395('0xd'),auth[_0xc395('0x9')](),controller[_0xc395('0xe')]);router['post']('/',auth[_0xc395('0x9')](),controller['create']);router[_0xc395('0xf')]('/:id',auth[_0xc395('0x9')](),controller['update']);router[_0xc395('0x10')](_0xc395('0xb'),auth[_0xc395('0x9')](),controller[_0xc395('0x11')]);module[_0xc395('0x12')]=router;
\ No newline at end of file
+var _0x8ba8=['../../components/interaction/service','../../config/environment','./screenRecording.controller','get','index','/describe','isAuthenticated','describe','show','/:id/download','download','post','create','put','/:id','delete','exports','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x414005,_0x483267){var _0x4b50f7=function(_0x6d98b4){while(--_0x6d98b4){_0x414005['push'](_0x414005['shift']());}};_0x4b50f7(++_0x483267);}(_0x8ba8,0xb2));var _0x88ba=function(_0x24e97b,_0x114d11){_0x24e97b=_0x24e97b-0x0;var _0x3537e4=_0x8ba8[_0x24e97b];return _0x3537e4;};'use strict';var multer=require('multer');var util=require(_0x88ba('0x0'));var path=require(_0x88ba('0x1'));var timeout=require('connect-timeout');var express=require(_0x88ba('0x2'));var router=express[_0x88ba('0x3')]();var fs_extra=require(_0x88ba('0x4'));var auth=require(_0x88ba('0x5'));var interaction=require(_0x88ba('0x6'));var config=require(_0x88ba('0x7'));var controller=require(_0x88ba('0x8'));router[_0x88ba('0x9')]('/',auth['isAuthenticated'](),controller[_0x88ba('0xa')]);router[_0x88ba('0x9')](_0x88ba('0xb'),auth[_0x88ba('0xc')](),controller[_0x88ba('0xd')]);router[_0x88ba('0x9')]('/:id',auth[_0x88ba('0xc')](),controller[_0x88ba('0xe')]);router[_0x88ba('0x9')](_0x88ba('0xf'),auth['isAuthenticated'](),controller[_0x88ba('0x10')]);router[_0x88ba('0x11')]('/',auth[_0x88ba('0xc')](),controller[_0x88ba('0x12')]);router[_0x88ba('0x13')](_0x88ba('0x14'),auth['isAuthenticated'](),controller['update']);router[_0x88ba('0x15')]('/:id',auth[_0x88ba('0xc')](),controller['destroy']);module[_0x88ba('0x16')]=router;
\ No newline at end of file
index 36af3c0..1e84661 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe785=['VIRTUAL','getDataValue','value','STRING','replace','setDataValue','INTEGER','startedAt','subtract','closedAt','duration','DATE','format','toString','MM-DD-YYYY\x20HH:mm','createdAt','sequelize','moment','../../config/environment','exports'];(function(_0x22a13d,_0x4d686a){var _0x20b290=function(_0x100af2){while(--_0x100af2){_0x22a13d['push'](_0x22a13d['shift']());}};_0x20b290(++_0x4d686a);}(_0xe785,0x128));var _0x5e78=function(_0x4aab3b,_0x356fcc){_0x4aab3b=_0x4aab3b-0x0;var _0xe7304f=_0xe785[_0x4aab3b];return _0xe7304f;};'use strict';var Sequelize=require(_0x5e78('0x0'));var moment=require(_0x5e78('0x1'));var path=require('path');var config=require(_0x5e78('0x2'));module[_0x5e78('0x3')]={'format':{'type':Sequelize[_0x5e78('0x4')],'get':function(){return this[_0x5e78('0x5')]('value')?path['extname'](this[_0x5e78('0x5')](_0x5e78('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x5e78('0x7')]},'channel':{'type':Sequelize[_0x5e78('0x7')]},'value':{'type':Sequelize['STRING'],'set':function(_0x525cfa){var _0x1d32e7=_0x525cfa[_0x5e78('0x8')](/\\/g,'/');this[_0x5e78('0x9')]('value',_0x1d32e7);}},'rating':{'type':Sequelize[_0x5e78('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x5de5e){this['setDataValue'](_0x5e78('0xb'),moment()[_0x5e78('0xc')](_0x5de5e,'ms'));this['setDataValue'](_0x5e78('0xd'),moment());this[_0x5e78('0x9')](_0x5e78('0xe'),_0x5de5e);}},'startedAt':{'type':Sequelize[_0x5e78('0xf')],'get':function(){return moment(this[_0x5e78('0x5')](_0x5e78('0xb')))[_0x5e78('0x10')]('MM-DD-YYYY\x20HH:mm')[_0x5e78('0x11')]();}},'closedAt':{'type':Sequelize[_0x5e78('0xf')],'get':function(){return moment(this[_0x5e78('0x5')]('closedAt'))[_0x5e78('0x10')](_0x5e78('0x12'))[_0x5e78('0x11')]();}},'createdAt':{'type':Sequelize[_0x5e78('0xf')],'get':function(){return moment(this['getDataValue'](_0x5e78('0x13')))[_0x5e78('0x10')](_0x5e78('0x12'))[_0x5e78('0x11')]();}},'updatedAt':{'type':Sequelize[_0x5e78('0xf')],'get':function(){return moment(this[_0x5e78('0x5')]('updatedAt'))['format'](_0x5e78('0x12'))[_0x5e78('0x11')]();}}};
\ No newline at end of file
+var _0x751c=['INTEGER','startedAt','subtract','duration','format','MM-DD-YYYY\x20HH:mm','toString','DATE','createdAt','updatedAt','sequelize','moment','path','exports','getDataValue','extname','value','STRING','setDataValue'];(function(_0x378b3d,_0x577b8d){var _0x36c737=function(_0x1aa1e8){while(--_0x1aa1e8){_0x378b3d['push'](_0x378b3d['shift']());}};_0x36c737(++_0x577b8d);}(_0x751c,0x69));var _0xc751=function(_0x16323f,_0x2f8048){_0x16323f=_0x16323f-0x0;var _0x5934da=_0x751c[_0x16323f];return _0x5934da;};'use strict';var Sequelize=require(_0xc751('0x0'));var moment=require(_0xc751('0x1'));var path=require(_0xc751('0x2'));var config=require('../../config/environment');module[_0xc751('0x3')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xc751('0x4')]('value')?path[_0xc751('0x5')](this[_0xc751('0x4')](_0xc751('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0xc751('0x7')]},'channel':{'type':Sequelize[_0xc751('0x7')]},'value':{'type':Sequelize['STRING'],'set':function(_0x12d079){var _0x2df8c6=_0x12d079['replace'](/\\/g,'/');this[_0xc751('0x8')](_0xc751('0x6'),_0x2df8c6);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xc751('0x9')],'set':function(_0xec967e){this[_0xc751('0x8')](_0xc751('0xa'),moment()[_0xc751('0xb')](_0xec967e,'ms'));this['setDataValue']('closedAt',moment());this['setDataValue'](_0xc751('0xc'),_0xec967e);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xc751('0x4')]('startedAt'))[_0xc751('0xd')](_0xc751('0xe'))[_0xc751('0xf')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xc751('0x4')]('closedAt'))[_0xc751('0xd')]('MM-DD-YYYY\x20HH:mm')[_0xc751('0xf')]();}},'createdAt':{'type':Sequelize[_0xc751('0x10')],'get':function(){return moment(this[_0xc751('0x4')](_0xc751('0x11')))[_0xc751('0xd')]('MM-DD-YYYY\x20HH:mm')[_0xc751('0xf')]();}},'updatedAt':{'type':Sequelize[_0xc751('0x10')],'get':function(){return moment(this[_0xc751('0x4')](_0xc751('0x12')))[_0xc751('0xd')](_0xc751('0xe'))['toString']();}}};
\ No newline at end of file
index 51ec8df..8fed561 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac31=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','ScreenRecording','rawAttributes','type','key','model','differenceBy','format','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','options','then','includeAll','findAll','rows','catch','params','find','create','body','createdAt','closedAt','value','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','%s.cypher','existsSync','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher'];(function(_0x5055f1,_0x3cbb87){var _0x28a9f0=function(_0x31433d){while(--_0x31433d){_0x5055f1['push'](_0x5055f1['shift']());}};_0x28a9f0(++_0x3cbb87);}(_0xac31,0xca));var _0x1ac3=function(_0x3ca058,_0x339ad7){_0x3ca058=_0x3ca058-0x0;var _0x5a1963=_0xac31[_0x3ca058];return _0x5a1963;};'use strict';var emlformat=require(_0x1ac3('0x0'));var rimraf=require(_0x1ac3('0x1'));var zipdir=require(_0x1ac3('0x2'));var jsonpatch=require(_0x1ac3('0x3'));var rp=require(_0x1ac3('0x4'));var moment=require(_0x1ac3('0x5'));var BPromise=require(_0x1ac3('0x6'));var Mustache=require('mustache');var util=require(_0x1ac3('0x7'));var path=require(_0x1ac3('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1ac3('0x9'));var fs=require('fs');var fs_extra=require(_0x1ac3('0xa'));var _=require(_0x1ac3('0xb'));var squel=require(_0x1ac3('0xc'));var crypto=require(_0x1ac3('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1ac3('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1ac3('0xf'));var Papa=require(_0x1ac3('0x10'));var Redis=require(_0x1ac3('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1ac3('0x12'));var as=require(_0x1ac3('0x13'));var hardwareService=require(_0x1ac3('0x14'));var logger=require(_0x1ac3('0x15'))(_0x1ac3('0x16'));var utils=require(_0x1ac3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x1ac3('0x18'));var db=require(_0x1ac3('0x19'))['db'];function respondWithStatusCode(_0x2eeabf,_0x2338b9){_0x2338b9=_0x2338b9||0xcc;return function(_0x50d3b6){if(_0x50d3b6){return _0x2eeabf[_0x1ac3('0x1a')](_0x2338b9);}return _0x2eeabf[_0x1ac3('0x1b')](_0x2338b9)[_0x1ac3('0x1c')]();};}function respondWithResult(_0x2def9f,_0x53cc35){_0x53cc35=_0x53cc35||0xc8;return function(_0x24bb5e){if(_0x24bb5e){return _0x2def9f[_0x1ac3('0x1b')](_0x53cc35)['json'](_0x24bb5e);}};}function respondWithFilteredResult(_0x29a7b3,_0x1f9641){return function(_0x38b52a){if(_0x38b52a){var _0x51f1e4=typeof _0x1f9641[_0x1ac3('0x1d')]===_0x1ac3('0x1e')&&typeof _0x1f9641[_0x1ac3('0x1f')]==='undefined';var _0x195683=_0x38b52a['count'];var _0x291616=_0x51f1e4?0x0:_0x1f9641[_0x1ac3('0x1d')];var _0x20091d=_0x51f1e4?_0x38b52a[_0x1ac3('0x20')]:_0x1f9641[_0x1ac3('0x1d')]+_0x1f9641['limit'];var _0x136e73;if(_0x20091d>=_0x195683){_0x20091d=_0x195683;_0x136e73=0xc8;}else{_0x136e73=0xce;}_0x29a7b3[_0x1ac3('0x1b')](_0x136e73);return _0x29a7b3[_0x1ac3('0x21')](_0x1ac3('0x22'),_0x291616+'-'+_0x20091d+'/'+_0x195683)['json'](_0x38b52a);}return null;};}function patchUpdates(_0x48d18a){return function(_0x2879d8){try{jsonpatch[_0x1ac3('0x23')](_0x2879d8,_0x48d18a,!![]);}catch(_0x14070b){return BPromise[_0x1ac3('0x24')](_0x14070b);}return _0x2879d8[_0x1ac3('0x25')]();};}function saveUpdates(_0x319988,_0x23b767){return function(_0x10912a){if(_0x10912a){return _0x10912a[_0x1ac3('0x26')](_0x319988)['then'](function(_0x1e277f){return _0x1e277f;});}return null;};}function removeEntity(_0x231b7f,_0x4b19f2){return function(_0x2b5182){if(_0x2b5182){return _0x2b5182[_0x1ac3('0x27')]()['then'](function(){_0x231b7f[_0x1ac3('0x1b')](0xcc)[_0x1ac3('0x1c')]();});}};}function handleEntityNotFound(_0x145486,_0x2dfdb7){return function(_0x10db3d){if(!_0x10db3d){_0x145486['sendStatus'](0x194);}return _0x10db3d;};}function handleError(_0x5a2ab2,_0x503a64){_0x503a64=_0x503a64||0x1f4;return function(_0x528807){logger['error'](_0x528807[_0x1ac3('0x28')]);if(_0x528807['name']){delete _0x528807[_0x1ac3('0x29')];}_0x5a2ab2[_0x1ac3('0x1b')](_0x503a64)[_0x1ac3('0x2a')](_0x528807);};}exports[_0x1ac3('0x2b')]=function(_0x4b3d3c,_0x61441d){var _0x541da0={},_0x2ddd73={},_0x4000b0={'count':0x0,'rows':[]};var _0x440aed=_[_0x1ac3('0x2c')](db[_0x1ac3('0x2d')][_0x1ac3('0x2e')],function(_0x9c17c2){return{'name':_0x9c17c2['fieldName'],'type':_0x9c17c2[_0x1ac3('0x2f')][_0x1ac3('0x30')]};});_0x2ddd73[_0x1ac3('0x31')]=_[_0x1ac3('0x32')](_['map'](_0x440aed,_0x1ac3('0x29')),[_0x1ac3('0x33')]);_0x2ddd73[_0x1ac3('0x34')]=_[_0x1ac3('0x35')](_0x4b3d3c[_0x1ac3('0x34')]);_0x2ddd73['filters']=_[_0x1ac3('0x36')](_0x2ddd73[_0x1ac3('0x31')],_0x2ddd73[_0x1ac3('0x34')]);_0x541da0[_0x1ac3('0x37')]=_[_0x1ac3('0x36')](_0x2ddd73[_0x1ac3('0x31')],qs['fields'](_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x38')]));_0x541da0[_0x1ac3('0x37')]=_0x541da0[_0x1ac3('0x37')]['length']?_0x541da0[_0x1ac3('0x37')]:_0x2ddd73[_0x1ac3('0x31')];if(!_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x39')](_0x1ac3('0x3a'))){_0x541da0[_0x1ac3('0x1f')]=qs[_0x1ac3('0x1f')](_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x1f')]);_0x541da0['offset']=qs[_0x1ac3('0x1d')](_0x4b3d3c[_0x1ac3('0x34')]['offset']);}_0x541da0[_0x1ac3('0x3b')]=qs[_0x1ac3('0x3c')](_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x3c')]);_0x541da0[_0x1ac3('0x3d')]=qs[_0x1ac3('0x3e')](_[_0x1ac3('0x3f')](_0x4b3d3c[_0x1ac3('0x34')],_0x2ddd73['filters']),_0x440aed);if(_0x4b3d3c[_0x1ac3('0x34')]['filter']){_0x541da0[_0x1ac3('0x3d')]=_[_0x1ac3('0x40')](_0x541da0[_0x1ac3('0x3d')],{'$or':_[_0x1ac3('0x2c')](_0x440aed,function(_0x3141ae){if(_0x3141ae[_0x1ac3('0x2f')]!=='VIRTUAL'){var _0x3b5c1c={};_0x3b5c1c[_0x3141ae[_0x1ac3('0x29')]]={'$like':'%'+_0x4b3d3c[_0x1ac3('0x34')]['filter']+'%'};return _0x3b5c1c;}})});}_0x541da0=_[_0x1ac3('0x40')]({},_0x541da0,_0x4b3d3c[_0x1ac3('0x41')]);var _0x5cec6b={'where':_0x541da0[_0x1ac3('0x3d')]};return db[_0x1ac3('0x2d')][_0x1ac3('0x20')](_0x5cec6b)[_0x1ac3('0x42')](function(_0x466a45){_0x4000b0[_0x1ac3('0x20')]=_0x466a45;if(_0x4b3d3c[_0x1ac3('0x34')][_0x1ac3('0x43')]){_0x541da0['include']=[{'all':!![]}];}return db[_0x1ac3('0x2d')][_0x1ac3('0x44')](_0x541da0);})[_0x1ac3('0x42')](function(_0x254a77){_0x4000b0[_0x1ac3('0x45')]=_0x254a77;return _0x4000b0;})[_0x1ac3('0x42')](respondWithFilteredResult(_0x61441d,_0x541da0))[_0x1ac3('0x46')](handleError(_0x61441d,null));};exports['show']=function(_0x4edc4d,_0x2c2099){var _0x3f60ca={'raw':![],'where':{'id':_0x4edc4d[_0x1ac3('0x47')]['id']}},_0x4972d1={};_0x4972d1[_0x1ac3('0x31')]=_['keys'](db[_0x1ac3('0x2d')]['rawAttributes']);_0x4972d1[_0x1ac3('0x34')]=_[_0x1ac3('0x35')](_0x4edc4d[_0x1ac3('0x34')]);_0x4972d1[_0x1ac3('0x3e')]=_['intersection'](_0x4972d1[_0x1ac3('0x31')],_0x4972d1[_0x1ac3('0x34')]);_0x3f60ca[_0x1ac3('0x37')]=_[_0x1ac3('0x36')](_0x4972d1[_0x1ac3('0x31')],qs['fields'](_0x4edc4d[_0x1ac3('0x34')][_0x1ac3('0x38')]));_0x3f60ca[_0x1ac3('0x37')]=_0x3f60ca[_0x1ac3('0x37')]['length']?_0x3f60ca[_0x1ac3('0x37')]:_0x4972d1[_0x1ac3('0x31')];if(_0x4edc4d[_0x1ac3('0x34')][_0x1ac3('0x43')]){_0x3f60ca['include']=[{'all':!![]}];}_0x3f60ca=_[_0x1ac3('0x40')]({},_0x3f60ca,_0x4edc4d[_0x1ac3('0x41')]);return db[_0x1ac3('0x2d')][_0x1ac3('0x48')](_0x3f60ca)['then'](handleEntityNotFound(_0x2c2099,null))[_0x1ac3('0x42')](respondWithResult(_0x2c2099,null))['catch'](handleError(_0x2c2099,null));};exports[_0x1ac3('0x49')]=function(_0x10bcaf,_0x2e3347){return db[_0x1ac3('0x2d')][_0x1ac3('0x49')](_0x10bcaf[_0x1ac3('0x4a')],{})[_0x1ac3('0x42')](respondWithResult(_0x2e3347,0xc9))['catch'](handleError(_0x2e3347,null));};exports['update']=function(_0xe8f33c,_0x249c2d){if(_0xe8f33c[_0x1ac3('0x4a')]['id']){delete _0xe8f33c['body']['id'];}delete _0xe8f33c['body']['duration'];delete _0xe8f33c[_0x1ac3('0x4a')][_0x1ac3('0x4b')];delete _0xe8f33c['body'][_0x1ac3('0x4c')];delete _0xe8f33c[_0x1ac3('0x4a')][_0x1ac3('0x4d')];return db[_0x1ac3('0x2d')]['find']({'where':{'id':_0xe8f33c['params']['id']}})[_0x1ac3('0x42')](handleEntityNotFound(_0x249c2d,null))[_0x1ac3('0x42')](saveUpdates(_0xe8f33c['body'],null))[_0x1ac3('0x42')](respondWithResult(_0x249c2d,null))['catch'](handleError(_0x249c2d,null));};exports['describe']=function(_0x2d628d,_0x220dd0){return db['ScreenRecording'][_0x1ac3('0x4e')]()['then'](respondWithResult(_0x220dd0,null))[_0x1ac3('0x46')](handleError(_0x220dd0,null));};exports[_0x1ac3('0x4f')]=function(_0x3586b9,_0x3a0320,_0x34ad43){var _0x40e9c7=require(_0x1ac3('0x50'));var _0x331374=![];var _0xeb7e49={};if(_0x3586b9[_0x1ac3('0x34')][_0x1ac3('0x2f')]&&_0x3586b9['query']['type']===_0x1ac3('0x51')){_0xeb7e49[_0x1ac3('0x51')]=_0x3586b9[_0x1ac3('0x47')]['id'];}else{_0xeb7e49['id']=_0x3586b9[_0x1ac3('0x47')]['id'];}return db[_0x1ac3('0x2d')][_0x1ac3('0x48')]({'where':_0xeb7e49,'attributes':['id',_0x1ac3('0x4d')],'raw':!![]})[_0x1ac3('0x42')](handleEntityNotFound(_0x3a0320,null))[_0x1ac3('0x42')](function(_0x3149f6){if(_0x3149f6){var _0x541bba=path[_0x1ac3('0x52')](config[_0x1ac3('0x53')],_0x1ac3('0x54'),_0x3149f6[_0x1ac3('0x4d')]);var _0x20c195=util['format'](_0x1ac3('0x55'),_0x541bba);if(fs[_0x1ac3('0x56')](_0x20c195)){_0x331374=!![];return _0x40e9c7['decryptFile'](_0x20c195,_0x541bba,config['secrets']['recording'])[_0x1ac3('0x42')](function(){return _0x3149f6;});}return _0x3149f6;}})[_0x1ac3('0x42')](function(_0x2a1f66){if(_0x2a1f66){var _0x5ad546=path[_0x1ac3('0x52')](config['root'],'server/files/screen_recordings',_0x2a1f66['value']);if(!fs['existsSync'](_0x5ad546)){throw new db[(_0x1ac3('0x57'))][(_0x1ac3('0x58'))](_0x1ac3('0x59'));}if(_0x2a1f66[_0x1ac3('0x5a')]){return _0x3a0320[_0x1ac3('0x4f')](_0x5ad546,_0x2a1f66['filename']+path[_0x1ac3('0x5b')](_0x5ad546),function(){if(_0x331374){fs[_0x1ac3('0x5c')](_0x5ad546);}});}else{return _0x3a0320['download'](_0x5ad546,function(_0x2bcb4b){if(_0x331374){fs[_0x1ac3('0x5c')](_0x5ad546);}});}}})[_0x1ac3('0x46')](function(_0x2e79b2){if(_0x2e79b2[_0x1ac3('0x5d')]==='ScreenRecording\x20not\x20found'){_0x3a0320[_0x1ac3('0x1b')](0x194)[_0x1ac3('0x2a')](_0x1ac3('0x5e'));}else{return handleError(_0x3a0320,null);}});};exports[_0x1ac3('0x27')]=function(_0x4cfa04,_0x19407a){return db[_0x1ac3('0x2d')][_0x1ac3('0x48')]({'where':{'id':_0x4cfa04[_0x1ac3('0x47')]['id']}})[_0x1ac3('0x42')](function(_0x1ac283){if(_['isNil'](_0x1ac283)){throw new ReferenceError('Entity\x20not\x20found');}return _0x1ac283;})['then'](function(_0x582fe2){var _0x3b930b=path['join'](config[_0x1ac3('0x53')],_0x1ac3('0x54'),_0x582fe2[_0x1ac3('0x4d')]);logger[_0x1ac3('0x5f')](_0x1ac3('0x60'),_0x3b930b);if(!_[_0x1ac3('0x61')](_0x582fe2['value'])&&fs[_0x1ac3('0x56')](_0x3b930b)){logger[_0x1ac3('0x5f')](_0x1ac3('0x62')+_0x3b930b+_0x1ac3('0x63'));fs['unlinkSync'](_0x3b930b);}_0x3b930b=_0x3b930b+_0x1ac3('0x64');if(!_[_0x1ac3('0x61')](_0x582fe2[_0x1ac3('0x4d')])&&fs[_0x1ac3('0x56')](_0x3b930b)){logger[_0x1ac3('0x5f')]('File:\x20\x22'+_0x3b930b+_0x1ac3('0x63'));fs['unlinkSync'](_0x3b930b);}return _0x582fe2;})['then'](function(_0x402507){if(!_0x402507)throw new InternalError();return _0x402507[_0x1ac3('0x27')]();})[_0x1ac3('0x42')](function(){_0x19407a[_0x1ac3('0x1b')](0xcc)[_0x1ac3('0x1c')]();})[_0x1ac3('0x46')](handleError(_0x19407a,null));};
\ No newline at end of file
+var _0x24ca=['server/files/screen_recordings','Sequelize','ScreenRecording\x20not\x20found','filename','message','Not\x20found','Entity\x20not\x20found','info','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','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','../../mysqldb','status','end','json','limit','undefined','count','offset','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','key','differenceBy','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','type','VIRTUAL','options','ScreenRecording','include','findAll','rows','catch','show','model','includeAll','find','create','body','duration','createdAt','closedAt','params','describe','download','uniqueid','value','root','format','%s.cypher','existsSync','decryptFile','secrets','recording','join'];(function(_0x1fd742,_0x216051){var _0x4f299a=function(_0x757e7){while(--_0x757e7){_0x1fd742['push'](_0x1fd742['shift']());}};_0x4f299a(++_0x216051);}(_0x24ca,0x1bc));var _0xa24c=function(_0x582d0b,_0x28f609){_0x582d0b=_0x582d0b-0x0;var _0x2e93e1=_0x24ca[_0x582d0b];return _0x2e93e1;};'use strict';var emlformat=require(_0xa24c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa24c('0x1'));var jsonpatch=require(_0xa24c('0x2'));var rp=require(_0xa24c('0x3'));var moment=require('moment');var BPromise=require(_0xa24c('0x4'));var Mustache=require(_0xa24c('0x5'));var util=require(_0xa24c('0x6'));var path=require(_0xa24c('0x7'));var sox=require(_0xa24c('0x8'));var csv=require(_0xa24c('0x9'));var ejs=require(_0xa24c('0xa'));var fs=require('fs');var fs_extra=require(_0xa24c('0xb'));var _=require(_0xa24c('0xc'));var squel=require(_0xa24c('0xd'));var crypto=require(_0xa24c('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xa24c('0xf'));var toCsv=require(_0xa24c('0x9'));var querystring=require(_0xa24c('0x10'));var Papa=require('papaparse');var Redis=require(_0xa24c('0x11'));var authService=require(_0xa24c('0x12'));var qs=require(_0xa24c('0x13'));var as=require(_0xa24c('0x14'));var hardwareService=require(_0xa24c('0x15'));var logger=require(_0xa24c('0x16'))(_0xa24c('0x17'));var utils=require(_0xa24c('0x18'));var config=require(_0xa24c('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xa24c('0x1a'))['db'];function respondWithStatusCode(_0x11090c,_0xcee4fe){_0xcee4fe=_0xcee4fe||0xcc;return function(_0x2c2af8){if(_0x2c2af8){return _0x11090c['sendStatus'](_0xcee4fe);}return _0x11090c[_0xa24c('0x1b')](_0xcee4fe)[_0xa24c('0x1c')]();};}function respondWithResult(_0x26ff28,_0x2fcd8b){_0x2fcd8b=_0x2fcd8b||0xc8;return function(_0x1cb08e){if(_0x1cb08e){return _0x26ff28[_0xa24c('0x1b')](_0x2fcd8b)[_0xa24c('0x1d')](_0x1cb08e);}};}function respondWithFilteredResult(_0x5d4727,_0x47a063){return function(_0xb80781){if(_0xb80781){var _0x87aa90=typeof _0x47a063['offset']==='undefined'&&typeof _0x47a063[_0xa24c('0x1e')]===_0xa24c('0x1f');var _0x5c479e=_0xb80781[_0xa24c('0x20')];var _0x5de3e6=_0x87aa90?0x0:_0x47a063[_0xa24c('0x21')];var _0x2a610a=_0x87aa90?_0xb80781[_0xa24c('0x20')]:_0x47a063[_0xa24c('0x21')]+_0x47a063['limit'];var _0x16d363;if(_0x2a610a>=_0x5c479e){_0x2a610a=_0x5c479e;_0x16d363=0xc8;}else{_0x16d363=0xce;}_0x5d4727[_0xa24c('0x1b')](_0x16d363);return _0x5d4727[_0xa24c('0x22')]('Content-Range',_0x5de3e6+'-'+_0x2a610a+'/'+_0x5c479e)['json'](_0xb80781);}return null;};}function patchUpdates(_0x506424){return function(_0x4cd77e){try{jsonpatch[_0xa24c('0x23')](_0x4cd77e,_0x506424,!![]);}catch(_0x174b69){return BPromise[_0xa24c('0x24')](_0x174b69);}return _0x4cd77e[_0xa24c('0x25')]();};}function saveUpdates(_0x51a275,_0x30ec21){return function(_0x5f299e){if(_0x5f299e){return _0x5f299e[_0xa24c('0x26')](_0x51a275)[_0xa24c('0x27')](function(_0x4a1cda){return _0x4a1cda;});}return null;};}function removeEntity(_0x346ee8,_0x363d52){return function(_0x43a0c0){if(_0x43a0c0){return _0x43a0c0[_0xa24c('0x28')]()[_0xa24c('0x27')](function(){_0x346ee8['status'](0xcc)[_0xa24c('0x1c')]();});}};}function handleEntityNotFound(_0x5cc9cb,_0x2365f9){return function(_0x3951ae){if(!_0x3951ae){_0x5cc9cb[_0xa24c('0x29')](0x194);}return _0x3951ae;};}function handleError(_0x51dc3f,_0x1beb55){_0x1beb55=_0x1beb55||0x1f4;return function(_0x31c4d9){logger[_0xa24c('0x2a')](_0x31c4d9[_0xa24c('0x2b')]);if(_0x31c4d9[_0xa24c('0x2c')]){delete _0x31c4d9[_0xa24c('0x2c')];}_0x51dc3f[_0xa24c('0x1b')](_0x1beb55)['send'](_0x31c4d9);};}exports[_0xa24c('0x2d')]=function(_0x28675f,_0x152120){var _0x12dbdc={},_0x5e491e={},_0x21d2a8={'count':0x0,'rows':[]};var _0xc96ce7=_[_0xa24c('0x2e')](db['ScreenRecording'][_0xa24c('0x2f')],function(_0x3dcb1b){return{'name':_0x3dcb1b[_0xa24c('0x30')],'type':_0x3dcb1b['type'][_0xa24c('0x31')]};});_0x5e491e['model']=_[_0xa24c('0x32')](_[_0xa24c('0x2e')](_0xc96ce7,_0xa24c('0x2c')),['format']);_0x5e491e[_0xa24c('0x33')]=_[_0xa24c('0x34')](_0x28675f[_0xa24c('0x33')]);_0x5e491e['filters']=_[_0xa24c('0x35')](_0x5e491e['model'],_0x5e491e[_0xa24c('0x33')]);_0x12dbdc[_0xa24c('0x36')]=_['intersection'](_0x5e491e['model'],qs[_0xa24c('0x37')](_0x28675f[_0xa24c('0x33')][_0xa24c('0x37')]));_0x12dbdc[_0xa24c('0x36')]=_0x12dbdc[_0xa24c('0x36')][_0xa24c('0x38')]?_0x12dbdc[_0xa24c('0x36')]:_0x5e491e['model'];if(!_0x28675f[_0xa24c('0x33')][_0xa24c('0x39')](_0xa24c('0x3a'))){_0x12dbdc[_0xa24c('0x1e')]=qs[_0xa24c('0x1e')](_0x28675f[_0xa24c('0x33')][_0xa24c('0x1e')]);_0x12dbdc[_0xa24c('0x21')]=qs[_0xa24c('0x21')](_0x28675f[_0xa24c('0x33')]['offset']);}_0x12dbdc[_0xa24c('0x3b')]=qs[_0xa24c('0x3c')](_0x28675f[_0xa24c('0x33')][_0xa24c('0x3c')]);_0x12dbdc['where']=qs['filters'](_[_0xa24c('0x3d')](_0x28675f['query'],_0x5e491e[_0xa24c('0x3e')]),_0xc96ce7);if(_0x28675f[_0xa24c('0x33')][_0xa24c('0x3f')]){_0x12dbdc[_0xa24c('0x40')]=_[_0xa24c('0x41')](_0x12dbdc['where'],{'$or':_['map'](_0xc96ce7,function(_0x3121e){if(_0x3121e[_0xa24c('0x42')]!==_0xa24c('0x43')){var _0x213dc3={};_0x213dc3[_0x3121e[_0xa24c('0x2c')]]={'$like':'%'+_0x28675f[_0xa24c('0x33')]['filter']+'%'};return _0x213dc3;}})});}_0x12dbdc=_['merge']({},_0x12dbdc,_0x28675f[_0xa24c('0x44')]);var _0x1ce83e={'where':_0x12dbdc[_0xa24c('0x40')]};return db[_0xa24c('0x45')][_0xa24c('0x20')](_0x1ce83e)['then'](function(_0x171c51){_0x21d2a8[_0xa24c('0x20')]=_0x171c51;if(_0x28675f['query']['includeAll']){_0x12dbdc[_0xa24c('0x46')]=[{'all':!![]}];}return db[_0xa24c('0x45')][_0xa24c('0x47')](_0x12dbdc);})['then'](function(_0x58ac8b){_0x21d2a8[_0xa24c('0x48')]=_0x58ac8b;return _0x21d2a8;})[_0xa24c('0x27')](respondWithFilteredResult(_0x152120,_0x12dbdc))[_0xa24c('0x49')](handleError(_0x152120,null));};exports[_0xa24c('0x4a')]=function(_0x3f640e,_0x1b7faf){var _0x23d1e0={'raw':![],'where':{'id':_0x3f640e['params']['id']}},_0x394d19={};_0x394d19['model']=_[_0xa24c('0x34')](db[_0xa24c('0x45')][_0xa24c('0x2f')]);_0x394d19['query']=_[_0xa24c('0x34')](_0x3f640e[_0xa24c('0x33')]);_0x394d19[_0xa24c('0x3e')]=_[_0xa24c('0x35')](_0x394d19[_0xa24c('0x4b')],_0x394d19[_0xa24c('0x33')]);_0x23d1e0[_0xa24c('0x36')]=_[_0xa24c('0x35')](_0x394d19[_0xa24c('0x4b')],qs[_0xa24c('0x37')](_0x3f640e['query'][_0xa24c('0x37')]));_0x23d1e0[_0xa24c('0x36')]=_0x23d1e0[_0xa24c('0x36')]['length']?_0x23d1e0[_0xa24c('0x36')]:_0x394d19[_0xa24c('0x4b')];if(_0x3f640e[_0xa24c('0x33')][_0xa24c('0x4c')]){_0x23d1e0[_0xa24c('0x46')]=[{'all':!![]}];}_0x23d1e0=_[_0xa24c('0x41')]({},_0x23d1e0,_0x3f640e[_0xa24c('0x44')]);return db[_0xa24c('0x45')][_0xa24c('0x4d')](_0x23d1e0)[_0xa24c('0x27')](handleEntityNotFound(_0x1b7faf,null))[_0xa24c('0x27')](respondWithResult(_0x1b7faf,null))['catch'](handleError(_0x1b7faf,null));};exports[_0xa24c('0x4e')]=function(_0x96b977,_0x42028b){return db[_0xa24c('0x45')][_0xa24c('0x4e')](_0x96b977[_0xa24c('0x4f')],{})[_0xa24c('0x27')](respondWithResult(_0x42028b,0xc9))[_0xa24c('0x49')](handleError(_0x42028b,null));};exports[_0xa24c('0x26')]=function(_0x4f56ae,_0x540da8){if(_0x4f56ae[_0xa24c('0x4f')]['id']){delete _0x4f56ae['body']['id'];}delete _0x4f56ae[_0xa24c('0x4f')][_0xa24c('0x50')];delete _0x4f56ae['body'][_0xa24c('0x51')];delete _0x4f56ae[_0xa24c('0x4f')][_0xa24c('0x52')];delete _0x4f56ae['body']['value'];return db[_0xa24c('0x45')]['find']({'where':{'id':_0x4f56ae[_0xa24c('0x53')]['id']}})[_0xa24c('0x27')](handleEntityNotFound(_0x540da8,null))[_0xa24c('0x27')](saveUpdates(_0x4f56ae[_0xa24c('0x4f')],null))[_0xa24c('0x27')](respondWithResult(_0x540da8,null))[_0xa24c('0x49')](handleError(_0x540da8,null));};exports[_0xa24c('0x54')]=function(_0x286d57,_0x22a0db){return db[_0xa24c('0x45')]['describe']()[_0xa24c('0x27')](respondWithResult(_0x22a0db,null))[_0xa24c('0x49')](handleError(_0x22a0db,null));};exports[_0xa24c('0x55')]=function(_0x513271,_0x5bde94,_0x487cc9){var _0x2da4f0=require('../../components/encryptor');var _0x4757ff=![];var _0x21d0fc={};if(_0x513271['query'][_0xa24c('0x42')]&&_0x513271[_0xa24c('0x33')][_0xa24c('0x42')]===_0xa24c('0x56')){_0x21d0fc[_0xa24c('0x56')]=_0x513271[_0xa24c('0x53')]['id'];}else{_0x21d0fc['id']=_0x513271[_0xa24c('0x53')]['id'];}return db[_0xa24c('0x45')]['find']({'where':_0x21d0fc,'attributes':['id',_0xa24c('0x57')],'raw':!![]})['then'](handleEntityNotFound(_0x5bde94,null))['then'](function(_0x565f0a){if(_0x565f0a){var _0x5bd2af=path['join'](config[_0xa24c('0x58')],'server/files/screen_recordings',_0x565f0a[_0xa24c('0x57')]);var _0x3fd3f9=util[_0xa24c('0x59')](_0xa24c('0x5a'),_0x5bd2af);if(fs[_0xa24c('0x5b')](_0x3fd3f9)){_0x4757ff=!![];return _0x2da4f0[_0xa24c('0x5c')](_0x3fd3f9,_0x5bd2af,config[_0xa24c('0x5d')][_0xa24c('0x5e')])[_0xa24c('0x27')](function(){return _0x565f0a;});}return _0x565f0a;}})[_0xa24c('0x27')](function(_0x303b7d){if(_0x303b7d){var _0x37dbbd=path[_0xa24c('0x5f')](config[_0xa24c('0x58')],_0xa24c('0x60'),_0x303b7d['value']);if(!fs[_0xa24c('0x5b')](_0x37dbbd)){throw new db[(_0xa24c('0x61'))]['ValidationError'](_0xa24c('0x62'));}if(_0x303b7d[_0xa24c('0x63')]){return _0x5bde94[_0xa24c('0x55')](_0x37dbbd,_0x303b7d[_0xa24c('0x63')]+path['extname'](_0x37dbbd),function(){if(_0x4757ff){fs['unlink'](_0x37dbbd);}});}else{return _0x5bde94[_0xa24c('0x55')](_0x37dbbd,function(_0x5e9631){if(_0x4757ff){fs['unlink'](_0x37dbbd);}});}}})[_0xa24c('0x49')](function(_0x2515b1){if(_0x2515b1[_0xa24c('0x64')]===_0xa24c('0x62')){_0x5bde94['status'](0x194)['send'](_0xa24c('0x65'));}else{return handleError(_0x5bde94,null);}});};exports['destroy']=function(_0x52a895,_0xfcc193){return db[_0xa24c('0x45')][_0xa24c('0x4d')]({'where':{'id':_0x52a895['params']['id']}})[_0xa24c('0x27')](function(_0x128e5b){if(_['isNil'](_0x128e5b)){throw new ReferenceError(_0xa24c('0x66'));}return _0x128e5b;})[_0xa24c('0x27')](function(_0x3096bf){var _0x4bee5c=path[_0xa24c('0x5f')](config[_0xa24c('0x58')],_0xa24c('0x60'),_0x3096bf[_0xa24c('0x57')]);logger[_0xa24c('0x67')]('cancellazione\x20fisica\x20documento\x20%s',_0x4bee5c);if(!_[_0xa24c('0x68')](_0x3096bf[_0xa24c('0x57')])&&fs[_0xa24c('0x5b')](_0x4bee5c)){logger[_0xa24c('0x67')](_0xa24c('0x69')+_0x4bee5c+_0xa24c('0x6a'));fs[_0xa24c('0x6b')](_0x4bee5c);}_0x4bee5c=_0x4bee5c+'.cypher';if(!_[_0xa24c('0x68')](_0x3096bf[_0xa24c('0x57')])&&fs['existsSync'](_0x4bee5c)){logger[_0xa24c('0x67')](_0xa24c('0x69')+_0x4bee5c+_0xa24c('0x6a'));fs[_0xa24c('0x6b')](_0x4bee5c);}return _0x3096bf;})[_0xa24c('0x27')](function(_0x3a241a){if(!_0x3a241a)throw new InternalError();return _0x3a241a[_0xa24c('0x28')]();})[_0xa24c('0x27')](function(){_0xfcc193[_0xa24c('0x1b')](0xcc)[_0xa24c('0x1c')]();})['catch'](handleError(_0xfcc193,null));};
\ No newline at end of file
index 3df241a..aa3f282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f8c=['exports','define','ScreenRecording','interactionid','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes'];(function(_0x1ec98f,_0x3e0aa4){var _0x409e54=function(_0x1f8473){while(--_0x1f8473){_0x1ec98f['push'](_0x1ec98f['shift']());}};_0x409e54(++_0x3e0aa4);}(_0x4f8c,0x1e4));var _0xc4f8=function(_0x5715a5,_0x4a1eb1){_0x5715a5=_0x5715a5-0x0;var _0x3fbf05=_0x4f8c[_0x5715a5];return _0x3fbf05;};'use strict';var _=require('lodash');var util=require(_0xc4f8('0x0'));var logger=require(_0xc4f8('0x1'))(_0xc4f8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc4f8('0x3'));var fs=require('fs');var path=require(_0xc4f8('0x4'));var rimraf=require(_0xc4f8('0x5'));var config=require(_0xc4f8('0x6'));var attributes=require(_0xc4f8('0x7'));module[_0xc4f8('0x8')]=function(_0xd83fc4,_0x2b4a23){return _0xd83fc4[_0xc4f8('0x9')](_0xc4f8('0xa'),attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0xc4f8('0xb'),'fields':[_0xc4f8('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x47b2=['api','moment','request-promise','rimraf','../../config/environment','./screenRecording.attributes','exports','define','screen_recordings','interactionid','lodash','util','../../config/logger'];(function(_0x2a24a4,_0x2e393a){var _0x423270=function(_0x435e93){while(--_0x435e93){_0x2a24a4['push'](_0x2a24a4['shift']());}};_0x423270(++_0x2e393a);}(_0x47b2,0x1b7));var _0x247b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x47b2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x247b('0x0'));var util=require(_0x247b('0x1'));var logger=require(_0x247b('0x2'))(_0x247b('0x3'));var moment=require(_0x247b('0x4'));var BPromise=require('bluebird');var rp=require(_0x247b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x247b('0x6'));var config=require(_0x247b('0x7'));var attributes=require(_0x247b('0x8'));module[_0x247b('0x9')]=function(_0x2a0c70,_0x38ce92){return _0x2a0c70[_0x247b('0xa')]('ScreenRecording',attributes,{'tableName':_0x247b('0xb'),'paranoid':![],'indexes':[{'name':_0x247b('0xc'),'fields':[_0x247b('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 8535dca..a214779 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbd0=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','ScreenRecording,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x3ff34f,_0x4c01df){var _0x86ad1b=function(_0x91cfd6){while(--_0x91cfd6){_0x3ff34f['push'](_0x3ff34f['shift']());}};_0x86ad1b(++_0x4c01df);}(_0xcbd0,0x177));var _0x0cbd=function(_0xbb0a56,_0x55f636){_0xbb0a56=_0xbb0a56-0x0;var _0xac97cd=_0xcbd0[_0xbb0a56];return _0xac97cd;};'use strict';var _=require(_0x0cbd('0x0'));var util=require(_0x0cbd('0x1'));var moment=require(_0x0cbd('0x2'));var BPromise=require('bluebird');var rs=require(_0x0cbd('0x3'));var fs=require('fs');var Redis=require(_0x0cbd('0x4'));var db=require(_0x0cbd('0x5'))['db'];var utils=require(_0x0cbd('0x6'));var logger=require(_0x0cbd('0x7'))(_0x0cbd('0x8'));var config=require(_0x0cbd('0x9'));var jayson=require(_0x0cbd('0xa'));var client=jayson[_0x0cbd('0xb')][_0x0cbd('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x980a25,_0x36e14e,_0x4f5936){return new BPromise(function(_0x37a4cb,_0x472c2a){return client[_0x0cbd('0xd')](_0x980a25,_0x4f5936)['then'](function(_0x39471d){logger[_0x0cbd('0xe')](_0x0cbd('0xf'),_0x36e14e,_0x0cbd('0x10'));logger['debug'](_0x0cbd('0x11'),_0x36e14e,_0x0cbd('0x10'),JSON['stringify'](_0x39471d));if(_0x39471d[_0x0cbd('0x12')]){if(_0x39471d[_0x0cbd('0x12')][_0x0cbd('0x13')]===0x1f4){logger['error']('ScreenRecording,\x20%s,\x20%s',_0x36e14e,_0x39471d[_0x0cbd('0x12')][_0x0cbd('0x14')]);return _0x472c2a(_0x39471d['error'][_0x0cbd('0x14')]);}logger[_0x0cbd('0x12')]('ScreenRecording,\x20%s,\x20%s',_0x36e14e,_0x39471d[_0x0cbd('0x12')][_0x0cbd('0x14')]);return _0x37a4cb(_0x39471d['error']['message']);}else{logger['info'](_0x0cbd('0xf'),_0x36e14e,_0x0cbd('0x10'));_0x37a4cb(_0x39471d['result']['message']);}})[_0x0cbd('0x15')](function(_0x1a6b52){logger[_0x0cbd('0x12')](_0x0cbd('0xf'),_0x36e14e,_0x1a6b52);_0x472c2a(_0x1a6b52);});});}
\ No newline at end of file
+var _0xe033=['message','ScreenRecording,\x20%s,\x20%s','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','jayson/promise','http','request','then','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0xe47165,_0x167a03){var _0x30b557=function(_0x4a17b5){while(--_0x4a17b5){_0xe47165['push'](_0xe47165['shift']());}};_0x30b557(++_0x167a03);}(_0xe033,0x1d0));var _0x3e03=function(_0x28a7c7,_0x117711){_0x28a7c7=_0x28a7c7-0x0;var _0x3e36d3=_0xe033[_0x28a7c7];return _0x3e36d3;};'use strict';var _=require(_0x3e03('0x0'));var util=require('util');var moment=require(_0x3e03('0x1'));var BPromise=require(_0x3e03('0x2'));var rs=require(_0x3e03('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e03('0x4'))['db'];var utils=require(_0x3e03('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x3e03('0x6'));var client=jayson['client'][_0x3e03('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x532980,_0x56e3d2,_0xeb38ed){return new BPromise(function(_0x23163c,_0x56d506){return client[_0x3e03('0x8')](_0x532980,_0xeb38ed)[_0x3e03('0x9')](function(_0x2b5ddd){logger['info']('ScreenRecording,\x20%s,\x20%s',_0x56e3d2,_0x3e03('0xa'));logger[_0x3e03('0xb')](_0x3e03('0xc'),_0x56e3d2,_0x3e03('0xa'),JSON[_0x3e03('0xd')](_0x2b5ddd));if(_0x2b5ddd[_0x3e03('0xe')]){if(_0x2b5ddd[_0x3e03('0xe')][_0x3e03('0xf')]===0x1f4){logger[_0x3e03('0xe')]('ScreenRecording,\x20%s,\x20%s',_0x56e3d2,_0x2b5ddd[_0x3e03('0xe')][_0x3e03('0x10')]);return _0x56d506(_0x2b5ddd[_0x3e03('0xe')][_0x3e03('0x10')]);}logger['error']('ScreenRecording,\x20%s,\x20%s',_0x56e3d2,_0x2b5ddd[_0x3e03('0xe')]['message']);return _0x23163c(_0x2b5ddd['error'][_0x3e03('0x10')]);}else{logger['info'](_0x3e03('0x11'),_0x56e3d2,_0x3e03('0xa'));_0x23163c(_0x2b5ddd[_0x3e03('0x12')][_0x3e03('0x10')]);}})[_0x3e03('0x13')](function(_0x181f5c){logger[_0x3e03('0xe')](_0x3e03('0x11'),_0x56e3d2,_0x181f5c);_0x56d506(_0x181f5c);});});}
\ No newline at end of file
index ca84dc8..00a18a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb40e=['logologin','single','addLogoLogin','preferred','addPreferred','favicon','isAuthenticated','exports','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./setting.controller','get','index','/now','getDate','/:id','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','format','logo','extname','originalname','post','/:id/logo','file','addLogo','%s%s'];(function(_0x4c4d1e,_0x58efca){var _0x2141ce=function(_0x1967c1){while(--_0x1967c1){_0x4c4d1e['push'](_0x4c4d1e['shift']());}};_0x2141ce(++_0x58efca);}(_0xb40e,0x1e8));var _0xeb40=function(_0x265aa2,_0x220072){_0x265aa2=_0x265aa2-0x0;var _0x447a3a=_0xb40e[_0x265aa2];return _0x447a3a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xeb40('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xeb40('0x1')]();var fs_extra=require(_0xeb40('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xeb40('0x3'));var config=require(_0xeb40('0x4'));var controller=require(_0xeb40('0x5'));router[_0xeb40('0x6')]('/',auth['isAuthenticated'](),controller[_0xeb40('0x7')]);router[_0xeb40('0x6')](_0xeb40('0x8'),controller[_0xeb40('0x9')]);router[_0xeb40('0x6')](_0xeb40('0xa'),controller['show']);router['get']('/:id/logo',controller[_0xeb40('0xb')]);router[_0xeb40('0x6')](_0xeb40('0xc'),controller[_0xeb40('0xd')]);router['get'](_0xeb40('0xe'),controller['gdpr']);router[_0xeb40('0x6')](_0xeb40('0xf'),controller[_0xeb40('0x10')]);router[_0xeb40('0x6')](_0xeb40('0x11'),controller[_0xeb40('0x12')]);var upload=multer({'storage':multer[_0xeb40('0x13')]({'destination':function(_0x4ed7d9,_0xb7cca,_0x49e37d){_0x49e37d(null,path[_0xeb40('0x14')](config[_0xeb40('0x15')],_0xeb40('0x16')));},'filename':function(_0x3bb023,_0x21638,_0x4d2b92){_0x4d2b92(null,util[_0xeb40('0x17')]('%s%s',_0xeb40('0x18'),path[_0xeb40('0x19')](_0x21638[_0xeb40('0x1a')])));}})});router[_0xeb40('0x1b')](_0xeb40('0x1c'),upload['single'](_0xeb40('0x1d')),controller[_0xeb40('0x1e')]);var upload=multer({'storage':multer[_0xeb40('0x13')]({'destination':function(_0x1140fb,_0x50f0e7,_0xbf7371){_0xbf7371(null,path['join'](config[_0xeb40('0x15')],'server/files/images/logos/'));},'filename':function(_0x562b14,_0x51acfd,_0x1b650b){_0x1b650b(null,util[_0xeb40('0x17')](_0xeb40('0x1f'),_0xeb40('0x20'),path[_0xeb40('0x19')](_0x51acfd[_0xeb40('0x1a')])));}})});router[_0xeb40('0x1b')](_0xeb40('0xc'),upload[_0xeb40('0x21')]('file'),controller[_0xeb40('0x22')]);var upload=multer({'storage':multer[_0xeb40('0x13')]({'destination':function(_0x20ab4d,_0xc4cda,_0x27ee79){_0x27ee79(null,path[_0xeb40('0x14')](config[_0xeb40('0x15')],_0xeb40('0x16')));},'filename':function(_0x2f1bb4,_0x261b52,_0x588609){_0x588609(null,util['format'](_0xeb40('0x1f'),_0xeb40('0x23'),path[_0xeb40('0x19')](_0x261b52['originalname'])));}})});router[_0xeb40('0x1b')](_0xeb40('0xf'),upload[_0xeb40('0x21')]('file'),controller[_0xeb40('0x24')]);var upload=multer({'storage':multer[_0xeb40('0x13')]({'destination':function(_0x1a819b,_0xb63a81,_0x1845eb){_0x1845eb(null,path[_0xeb40('0x14')](config[_0xeb40('0x15')],_0xeb40('0x16')));},'filename':function(_0x5a6a83,_0x17a960,_0x3c34be){_0x3c34be(null,util[_0xeb40('0x17')]('%s%s',_0xeb40('0x25'),path[_0xeb40('0x19')](_0x17a960[_0xeb40('0x1a')])));}})});router['post'](_0xeb40('0x11'),upload[_0xeb40('0x21')](_0xeb40('0x1d')),controller['addFavicon']);router['put'](_0xeb40('0xa'),auth[_0xeb40('0x26')](),controller['update']);module[_0xeb40('0x27')]=router;
\ No newline at end of file
+var _0x25a6=['addPreferred','addFavicon','put','update','exports','multer','path','connect-timeout','../../components/auth/service','../../components/interaction/service','./setting.controller','get','isAuthenticated','index','/now','getDate','/:id','show','/:id/logo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','format','logo','extname','originalname','post','single','file','server/files/images/logos/','%s%s','logologin','preferred'];(function(_0x21f017,_0x380dd1){var _0x1e1041=function(_0x38068a){while(--_0x38068a){_0x21f017['push'](_0x21f017['shift']());}};_0x1e1041(++_0x380dd1);}(_0x25a6,0xa9));var _0x625a=function(_0x4cd55f,_0x4162ee){_0x4cd55f=_0x4cd55f-0x0;var _0xce89aa=_0x25a6[_0x4cd55f];return _0xce89aa;};'use strict';var multer=require(_0x625a('0x0'));var util=require('util');var path=require(_0x625a('0x1'));var timeout=require(_0x625a('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x625a('0x3'));var interaction=require(_0x625a('0x4'));var config=require('../../config/environment');var controller=require(_0x625a('0x5'));router[_0x625a('0x6')]('/',auth[_0x625a('0x7')](),controller[_0x625a('0x8')]);router[_0x625a('0x6')](_0x625a('0x9'),controller[_0x625a('0xa')]);router[_0x625a('0x6')](_0x625a('0xb'),controller[_0x625a('0xc')]);router[_0x625a('0x6')](_0x625a('0xd'),controller['getLogo']);router[_0x625a('0x6')](_0x625a('0xe'),controller[_0x625a('0xf')]);router[_0x625a('0x6')](_0x625a('0x10'),controller[_0x625a('0x11')]);router[_0x625a('0x6')](_0x625a('0x12'),controller[_0x625a('0x13')]);router[_0x625a('0x6')](_0x625a('0x14'),controller[_0x625a('0x15')]);var upload=multer({'storage':multer[_0x625a('0x16')]({'destination':function(_0xd4ab8,_0x2842a7,_0x5b30f2){_0x5b30f2(null,path[_0x625a('0x17')](config[_0x625a('0x18')],'server/files/images/logos/'));},'filename':function(_0x3b95fe,_0x4c9aef,_0x3f7268){_0x3f7268(null,util[_0x625a('0x19')]('%s%s',_0x625a('0x1a'),path[_0x625a('0x1b')](_0x4c9aef[_0x625a('0x1c')])));}})});router[_0x625a('0x1d')](_0x625a('0xd'),upload[_0x625a('0x1e')](_0x625a('0x1f')),controller['addLogo']);var upload=multer({'storage':multer[_0x625a('0x16')]({'destination':function(_0x2242cc,_0x556475,_0x9a1b53){_0x9a1b53(null,path[_0x625a('0x17')](config[_0x625a('0x18')],_0x625a('0x20')));},'filename':function(_0x270e00,_0x1ad4ce,_0x89de4b){_0x89de4b(null,util[_0x625a('0x19')](_0x625a('0x21'),_0x625a('0x22'),path['extname'](_0x1ad4ce[_0x625a('0x1c')])));}})});router['post'](_0x625a('0xe'),upload['single']('file'),controller['addLogoLogin']);var upload=multer({'storage':multer[_0x625a('0x16')]({'destination':function(_0x457212,_0x5a1e4d,_0x10e7e7){_0x10e7e7(null,path[_0x625a('0x17')](config[_0x625a('0x18')],_0x625a('0x20')));},'filename':function(_0x29cae3,_0x451d21,_0x1f6c6a){_0x1f6c6a(null,util['format']('%s%s',_0x625a('0x23'),path[_0x625a('0x1b')](_0x451d21[_0x625a('0x1c')])));}})});router[_0x625a('0x1d')]('/:id/preferred',upload[_0x625a('0x1e')](_0x625a('0x1f')),controller[_0x625a('0x24')]);var upload=multer({'storage':multer[_0x625a('0x16')]({'destination':function(_0x384c23,_0x1ef0ff,_0x4ac893){_0x4ac893(null,path[_0x625a('0x17')](config[_0x625a('0x18')],_0x625a('0x20')));},'filename':function(_0x2cd02f,_0x1a6c68,_0x1e4c22){_0x1e4c22(null,util['format'](_0x625a('0x21'),'favicon',path['extname'](_0x1a6c68[_0x625a('0x1c')])));}})});router[_0x625a('0x1d')](_0x625a('0x14'),upload['single'](_0x625a('0x1f')),controller[_0x625a('0x25')]);router[_0x625a('0x26')](_0x625a('0xb'),auth['isAuthenticated'](),controller[_0x625a('0x27')]);module[_0x625a('0x28')]=router;
\ No newline at end of file
index 36da9a3..6bd626b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['exports','INTEGER','min_internal','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate','UNSIGNED'];(function(_0x441f45,_0x16130c){var _0x2bc267=function(_0x44f8a4){while(--_0x44f8a4){_0x441f45['push'](_0x441f45['shift']());}};_0x2bc267(++_0x16130c);}(_0x1261,0x144));var _0x1126=function(_0x276468,_0x29685a){_0x276468=_0x276468-0x0;var _0x36dc3a=_0x1261[_0x276468];return _0x36dc3a;};'use strict';var Sequelize=require('sequelize');module[_0x1126('0x0')]={'min_internal':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x2'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x5')},'logo':{'type':Sequelize[_0x1126('0x4')]},'defaultLogo':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize['STRING']},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x1126('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x1126('0x4')]},'turnaddr':{'type':Sequelize[_0x1126('0x4')]},'turnusername':{'type':Sequelize[_0x1126('0x4')]},'turnpassword':{'type':Sequelize[_0x1126('0x4')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x1126('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x7')},'chatTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x1126('0x4')]},'defaultPreferred':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize['STRING']},'allowedLoginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x1126('0x4')]},'defaultFavicon':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x1126('0x1')]},'transcribeRegion':{'type':Sequelize[_0x1126('0x4')]},'sentiment':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x1126('0x1')]},'sentimentRegion':{'type':Sequelize[_0x1126('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize['STRING']},'googleSsoEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x1126('0x1')](0x2)[_0x1126('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2ef3=['min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','UNSIGNED','sequelize','exports','INTEGER','min_internal'];(function(_0x170784,_0x38a28a){var _0x3de581=function(_0x11865b){while(--_0x11865b){_0x170784['push'](_0x170784['shift']());}};_0x3de581(++_0x38a28a);}(_0x2ef3,0xba));var _0x32ef=function(_0x3e7307,_0x9dbced){_0x3e7307=_0x3e7307-0x0;var _0x2fdc80=_0x2ef3[_0x3e7307];return _0x2fdc80;};'use strict';var Sequelize=require(_0x32ef('0x0'));module[_0x32ef('0x1')]={'min_internal':{'type':Sequelize[_0x32ef('0x2')](0xb),'unique':_0x32ef('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x32ef('0x2')](0xb),'unique':_0x32ef('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':_0x32ef('0x6')},'logo':{'type':Sequelize['STRING']},'defaultLogo':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x32ef('0x5')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize['STRING']},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x32ef('0x5')]},'turnaddr':{'type':Sequelize[_0x32ef('0x5')]},'turnusername':{'type':Sequelize[_0x32ef('0x5')]},'turnpassword':{'type':Sequelize[_0x32ef('0x5')]},'pageTitle':{'type':Sequelize[_0x32ef('0x5')]},'defaultPageTitle':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':_0x32ef('0x8')},'enableEmailPreview':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'split':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x32ef('0x5')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize['STRING']},'allowedLoginAttempts':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x32ef('0x5')]},'defaultFavicon':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x32ef('0x2')]},'transcribeRegion':{'type':Sequelize[_0x32ef('0x5')]},'sentiment':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize['INTEGER']},'sentimentRegion':{'type':Sequelize[_0x32ef('0x5')]},'language':{'type':Sequelize[_0x32ef('0x5')]},'bucket':{'type':Sequelize[_0x32ef('0x5')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x32ef('0x2')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x32ef('0x2')](0x2)[_0x32ef('0x9')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x32ef('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x32ef('0x7')],'defaultValue':![]}};
\ No newline at end of file
index cf59c4e..0b1e267 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f93=['../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','then','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','keys','query','filters','intersection','attributes','model','nolimit','order','sort','pick','where','VIRTUAL','filter','merge','Setting','include','rows','params','fields','length','includeAll','options','update','body','find','addLogo','file','filename','logo','addLogoLogin','getLogo','server/files/images/logos','loginLogo','defaultLogo','defaultLoginLogo','join','root','toLower','default_logo.svg','default','upperFirst','custom','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','getLicense','favicon','defaultFavicon','existsSync','default_loginLogo.svg','gdpr','securePassword','preferred','defaultPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','utcOffset','format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x423adb,_0x3b93d5){var _0x214325=function(_0x3aa3e0){while(--_0x3aa3e0){_0x423adb['push'](_0x423adb['shift']());}};_0x214325(++_0x3b93d5);}(_0x0f93,0x66));var _0x30f9=function(_0x4e2cb4,_0x203c87){_0x4e2cb4=_0x4e2cb4-0x0;var _0x237b10=_0x0f93[_0x4e2cb4];return _0x237b10;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x30f9('0x0'));var zipdir=require(_0x30f9('0x1'));var jsonpatch=require(_0x30f9('0x2'));var rp=require(_0x30f9('0x3'));var moment=require(_0x30f9('0x4'));var BPromise=require(_0x30f9('0x5'));var Mustache=require(_0x30f9('0x6'));var util=require(_0x30f9('0x7'));var path=require(_0x30f9('0x8'));var sox=require(_0x30f9('0x9'));var csv=require(_0x30f9('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x30f9('0xb'));var _=require(_0x30f9('0xc'));var squel=require(_0x30f9('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x30f9('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x30f9('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x30f9('0x10'));var as=require(_0x30f9('0x11'));var hardwareService=require(_0x30f9('0x12'));var logger=require('../../config/logger')(_0x30f9('0x13'));var utils=require(_0x30f9('0x14'));var config=require(_0x30f9('0x15'));var licenseUtil=require(_0x30f9('0x16'));var db=require(_0x30f9('0x17'))['db'];var jayson=require(_0x30f9('0x18'));var client=jayson[_0x30f9('0x19')][_0x30f9('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x58fd08,_0x400415,_0xd73e00,_0x1e5143){return new BPromise(function(_0x25c44d,_0x33434a){var _0x4f0491=_0x1e5143||client;return _0x4f0491[_0x30f9('0x1b')](_0x58fd08,_0xd73e00)['then'](function(_0x10b98d){logger[_0x30f9('0x1c')](_0x30f9('0x1d'),_0x400415,'request\x20sent');logger[_0x30f9('0x1e')](_0x30f9('0x1f'),_0x400415,_0x30f9('0x20'),JSON[_0x30f9('0x21')](_0x10b98d));if(_0x10b98d['error']){if(_0x10b98d[_0x30f9('0x22')][_0x30f9('0x23')]===0x1f4){logger[_0x30f9('0x22')](_0x30f9('0x1d'),_0x400415,_0x10b98d['error']['message']);return _0x33434a(_0x10b98d['error'][_0x30f9('0x24')]);}logger[_0x30f9('0x22')]('Setting,\x20%s,\x20%s',_0x400415,_0x10b98d[_0x30f9('0x22')][_0x30f9('0x24')]);return _0x25c44d(_0x10b98d[_0x30f9('0x22')][_0x30f9('0x24')]);}else{logger['info'](_0x30f9('0x1d'),_0x400415,'request\x20sent');_0x25c44d(_0x10b98d[_0x30f9('0x25')]['message']);}})[_0x30f9('0x26')](function(_0x50fe60){logger['error']('Setting,\x20%s,\x20%s',_0x400415,_0x50fe60);_0x33434a(_0x50fe60);});});}function respondWithStatusCode(_0x225398,_0x55ab07){_0x55ab07=_0x55ab07||0xcc;return function(_0x3b20c3){if(_0x3b20c3){return _0x225398['sendStatus'](_0x55ab07);}return _0x225398[_0x30f9('0x27')](_0x55ab07)['end']();};}function respondWithResult(_0x3f9d76,_0x51b05d){_0x51b05d=_0x51b05d||0xc8;return function(_0x4ad3c5){if(_0x4ad3c5){return _0x3f9d76['status'](_0x51b05d)[_0x30f9('0x28')](_0x4ad3c5);}};}function respondWithFilteredResult(_0x396eaa,_0x3daecf){return function(_0x57bfec){if(_0x57bfec){var _0x427884=typeof _0x3daecf['offset']===_0x30f9('0x29')&&typeof _0x3daecf[_0x30f9('0x2a')]===_0x30f9('0x29');var _0x24f5fe=_0x57bfec[_0x30f9('0x2b')];var _0x534389=_0x427884?0x0:_0x3daecf[_0x30f9('0x2c')];var _0x52ee08=_0x427884?_0x57bfec['count']:_0x3daecf[_0x30f9('0x2c')]+_0x3daecf['limit'];var _0x3ec85d;if(_0x52ee08>=_0x24f5fe){_0x52ee08=_0x24f5fe;_0x3ec85d=0xc8;}else{_0x3ec85d=0xce;}_0x396eaa[_0x30f9('0x27')](_0x3ec85d);return _0x396eaa[_0x30f9('0x2d')](_0x30f9('0x2e'),_0x534389+'-'+_0x52ee08+'/'+_0x24f5fe)[_0x30f9('0x28')](_0x57bfec);}return null;};}function patchUpdates(_0x33f335){return function(_0x48e539){try{jsonpatch['apply'](_0x48e539,_0x33f335,!![]);}catch(_0x3d801c){return BPromise[_0x30f9('0x2f')](_0x3d801c);}return _0x48e539[_0x30f9('0x30')]();};}function saveUpdates(_0x4df5a2,_0x292aa9){return function(_0x2d2eaa){if(_0x2d2eaa){return _0x2d2eaa['update'](_0x4df5a2)[_0x30f9('0x31')](function(_0x12245f){return _0x12245f;});}return null;};}function removeEntity(_0x434d4e,_0x599095){return function(_0x3b9c8e){if(_0x3b9c8e){return _0x3b9c8e[_0x30f9('0x32')]()[_0x30f9('0x31')](function(){_0x434d4e[_0x30f9('0x27')](0xcc)[_0x30f9('0x33')]();});}};}function handleEntityNotFound(_0x4345d3,_0x100af6){return function(_0x4a8eec){if(!_0x4a8eec){_0x4345d3[_0x30f9('0x34')](0x194);}return _0x4a8eec;};}function handleError(_0x42bca0,_0x1a09a4){_0x1a09a4=_0x1a09a4||0x1f4;return function(_0x4003c9){logger[_0x30f9('0x22')](_0x4003c9[_0x30f9('0x35')]);if(_0x4003c9[_0x30f9('0x36')]){delete _0x4003c9[_0x30f9('0x36')];}_0x42bca0[_0x30f9('0x27')](_0x1a09a4)[_0x30f9('0x37')](_0x4003c9);};}exports[_0x30f9('0x38')]=function(_0xf9431d,_0x2ab960){var _0x15b0ec={},_0x3d7601={},_0xb0c97c={'count':0x0,'rows':[]};var _0x3d6fc0=_[_0x30f9('0x39')](db['Setting'][_0x30f9('0x3a')],function(_0x1c510d){return{'name':_0x1c510d[_0x30f9('0x3b')],'type':_0x1c510d[_0x30f9('0x3c')]['key']};});_0x3d7601['model']=_[_0x30f9('0x39')](_0x3d6fc0,'name');_0x3d7601['query']=_[_0x30f9('0x3d')](_0xf9431d[_0x30f9('0x3e')]);_0x3d7601[_0x30f9('0x3f')]=_[_0x30f9('0x40')](_0x3d7601['model'],_0x3d7601[_0x30f9('0x3e')]);_0x15b0ec[_0x30f9('0x41')]=_['intersection'](_0x3d7601['model'],qs['fields'](_0xf9431d['query']['fields']));_0x15b0ec[_0x30f9('0x41')]=_0x15b0ec['attributes']['length']?_0x15b0ec[_0x30f9('0x41')]:_0x3d7601[_0x30f9('0x42')];if(!_0xf9431d[_0x30f9('0x3e')]['hasOwnProperty'](_0x30f9('0x43'))){_0x15b0ec[_0x30f9('0x2a')]=qs[_0x30f9('0x2a')](_0xf9431d[_0x30f9('0x3e')][_0x30f9('0x2a')]);_0x15b0ec[_0x30f9('0x2c')]=qs[_0x30f9('0x2c')](_0xf9431d[_0x30f9('0x3e')][_0x30f9('0x2c')]);}_0x15b0ec[_0x30f9('0x44')]=qs[_0x30f9('0x45')](_0xf9431d[_0x30f9('0x3e')][_0x30f9('0x45')]);_0x15b0ec['where']=qs[_0x30f9('0x3f')](_[_0x30f9('0x46')](_0xf9431d[_0x30f9('0x3e')],_0x3d7601[_0x30f9('0x3f')]),_0x3d6fc0);if(_0xf9431d[_0x30f9('0x3e')]['filter']){_0x15b0ec[_0x30f9('0x47')]=_['merge'](_0x15b0ec[_0x30f9('0x47')],{'$or':_[_0x30f9('0x39')](_0x3d6fc0,function(_0x51bfc6){if(_0x51bfc6['type']!==_0x30f9('0x48')){var _0x4f6f76={};_0x4f6f76[_0x51bfc6['name']]={'$like':'%'+_0xf9431d[_0x30f9('0x3e')][_0x30f9('0x49')]+'%'};return _0x4f6f76;}})});}_0x15b0ec=_[_0x30f9('0x4a')]({},_0x15b0ec,_0xf9431d['options']);var _0x2a74d4={'where':_0x15b0ec[_0x30f9('0x47')]};return db[_0x30f9('0x4b')][_0x30f9('0x2b')](_0x2a74d4)['then'](function(_0x15ce85){_0xb0c97c['count']=_0x15ce85;if(_0xf9431d[_0x30f9('0x3e')]['includeAll']){_0x15b0ec[_0x30f9('0x4c')]=[{'all':!![]}];}return db['Setting']['findAll'](_0x15b0ec);})[_0x30f9('0x31')](function(_0x3e2859){_0xb0c97c[_0x30f9('0x4d')]=_0x3e2859;return _0xb0c97c;})[_0x30f9('0x31')](respondWithFilteredResult(_0x2ab960,_0x15b0ec))[_0x30f9('0x26')](handleError(_0x2ab960,null));};exports['show']=function(_0x181eb3,_0x452286){var _0x445f87={'raw':![],'where':{'id':_0x181eb3[_0x30f9('0x4e')]['id']}},_0x48c9d2={};_0x48c9d2[_0x30f9('0x42')]=_['keys'](db[_0x30f9('0x4b')][_0x30f9('0x3a')]);_0x48c9d2['query']=_[_0x30f9('0x3d')](_0x181eb3[_0x30f9('0x3e')]);_0x48c9d2['filters']=_[_0x30f9('0x40')](_0x48c9d2[_0x30f9('0x42')],_0x48c9d2[_0x30f9('0x3e')]);_0x445f87[_0x30f9('0x41')]=_[_0x30f9('0x40')](_0x48c9d2[_0x30f9('0x42')],qs[_0x30f9('0x4f')](_0x181eb3['query'][_0x30f9('0x4f')]));_0x445f87['attributes']=_0x445f87[_0x30f9('0x41')][_0x30f9('0x50')]?_0x445f87[_0x30f9('0x41')]:_0x48c9d2[_0x30f9('0x42')];if(_0x181eb3[_0x30f9('0x3e')][_0x30f9('0x51')]){_0x445f87['include']=[{'all':!![]}];}_0x445f87=_[_0x30f9('0x4a')]({},_0x445f87,_0x181eb3[_0x30f9('0x52')]);return db[_0x30f9('0x4b')]['find'](_0x445f87)[_0x30f9('0x31')](handleEntityNotFound(_0x452286,null))[_0x30f9('0x31')](respondWithResult(_0x452286,null))['catch'](handleError(_0x452286,null));};exports[_0x30f9('0x53')]=function(_0x44eacd,_0xa9fba5){if(_0x44eacd[_0x30f9('0x54')]['id']){delete _0x44eacd['body']['id'];}return db['Setting'][_0x30f9('0x55')]({'where':{'id':_0x44eacd[_0x30f9('0x4e')]['id']}})['then'](handleEntityNotFound(_0xa9fba5,null))[_0x30f9('0x31')](saveUpdates(_0x44eacd['body'],null))['then'](respondWithResult(_0xa9fba5,null))[_0x30f9('0x26')](handleError(_0xa9fba5,null));};exports[_0x30f9('0x56')]=function(_0x45acad,_0x256b19,_0x3f5531){if(_0x45acad[_0x30f9('0x57')]&&_0x45acad[_0x30f9('0x57')][_0x30f9('0x58')]){_0x45acad[_0x30f9('0x54')][_0x30f9('0x59')]=_0x45acad[_0x30f9('0x57')][_0x30f9('0x58')];}return db[_0x30f9('0x4b')][_0x30f9('0x55')]({'where':{'id':_0x45acad[_0x30f9('0x4e')]['id']}})[_0x30f9('0x31')](handleEntityNotFound(_0x256b19,null))['then'](saveUpdates(_0x45acad[_0x30f9('0x54')],null))['then'](respondWithResult(_0x256b19,null))[_0x30f9('0x26')](handleError(_0x256b19,null));};exports[_0x30f9('0x5a')]=function(_0x41aebd,_0x5a6e0a,_0x4ae71d){if(_0x41aebd[_0x30f9('0x57')]&&_0x41aebd['file'][_0x30f9('0x58')]){_0x41aebd['body']['loginLogo']=_0x41aebd[_0x30f9('0x57')]['filename'];}return db[_0x30f9('0x4b')][_0x30f9('0x55')]({'where':{'id':_0x41aebd[_0x30f9('0x4e')]['id']}})[_0x30f9('0x31')](handleEntityNotFound(_0x5a6e0a,null))[_0x30f9('0x31')](saveUpdates(_0x41aebd[_0x30f9('0x54')],null))[_0x30f9('0x31')](respondWithResult(_0x5a6e0a,null))['catch'](handleError(_0x5a6e0a,null));};var utilLicense=require(_0x30f9('0x16'));exports[_0x30f9('0x5b')]=function(_0x238d23,_0x1e9c44,_0x1b62ba){var _0x4566bf=_0x30f9('0x5c');var _0x556351={'custom':![]};return utilLicense['getLicense']()[_0x30f9('0x31')](function(_0x3b20b6){if(_0x3b20b6){_0x556351=_0x3b20b6;}return db[_0x30f9('0x4b')]['find']({'where':{'id':_0x238d23['params']['id']},'attributes':[_0x30f9('0x59'),_0x30f9('0x5d'),'preferred','favicon',_0x30f9('0x5e'),_0x30f9('0x5f'),'defaultPreferred','defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x1e9c44,null))[_0x30f9('0x31')](function(_0x44a784){if(_0x44a784){var _0x57258e=_0x44a784['logo']&&fs['existsSync'](path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x4566bf,_[_0x30f9('0x62')](_0x44a784[_0x30f9('0x59')])))?path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x4566bf,_[_0x30f9('0x62')](_0x44a784[_0x30f9('0x59')])):path[_0x30f9('0x60')](config['root'],_0x4566bf,_[_0x30f9('0x62')](_0x30f9('0x63')));var _0x378293=_0x30f9('0x64')+_[_0x30f9('0x65')](_0x30f9('0x59'));if(_0x44a784[_0x378293]||!_0x556351[_0x30f9('0x66')]){_0x57258e=path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x4566bf,_['toLower'](_0x30f9('0x63')));}if(!fs['existsSync'](_0x57258e)){throw new db[(_0x30f9('0x67'))][(_0x30f9('0x68'))](_['upperFirst']('logo')+_0x30f9('0x69'));}return _0x1e9c44[_0x30f9('0x6a')](_0x57258e);}})[_0x30f9('0x26')](handleError(_0x1e9c44,null));};var utilLicense=require('../../config/license/util');exports[_0x30f9('0x6b')]=function(_0x3d420b,_0x55fba3,_0x3b8d8a){var _0x2e8f92=_0x30f9('0x5c');var _0x3be697={'custom':![]};return utilLicense[_0x30f9('0x6c')]()['then'](function(_0x3b74b0){if(_0x3b74b0){_0x3be697=_0x3b74b0;}return db[_0x30f9('0x4b')]['find']({'where':{'id':_0x3d420b[_0x30f9('0x4e')]['id']},'attributes':['logo',_0x30f9('0x5d'),'preferred',_0x30f9('0x6d'),_0x30f9('0x5e'),_0x30f9('0x5f'),'defaultPreferred',_0x30f9('0x6e')],'raw':!![]});})[_0x30f9('0x31')](handleEntityNotFound(_0x55fba3,null))[_0x30f9('0x31')](function(_0x3a0c9d){if(_0x3a0c9d){var _0x10082a=_0x3a0c9d[_0x30f9('0x5d')]&&fs[_0x30f9('0x6f')](path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x2e8f92,_[_0x30f9('0x62')](_0x3a0c9d[_0x30f9('0x5d')])))?path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x2e8f92,_[_0x30f9('0x62')](_0x3a0c9d['loginLogo'])):path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x2e8f92,_['toLower'](_0x30f9('0x70')));var _0x113def=_0x30f9('0x64')+_[_0x30f9('0x65')]('loginLogo');if(_0x3a0c9d[_0x113def]||!_0x3be697[_0x30f9('0x66')]){_0x10082a=path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x2e8f92,_[_0x30f9('0x62')](_0x30f9('0x70')));}if(!fs['existsSync'](_0x10082a)){throw new db[(_0x30f9('0x67'))][(_0x30f9('0x68'))](_[_0x30f9('0x65')](_0x30f9('0x5d'))+_0x30f9('0x69'));}return _0x55fba3[_0x30f9('0x6a')](_0x10082a);}})[_0x30f9('0x26')](handleError(_0x55fba3,null));};exports[_0x30f9('0x71')]=function(_0x141b64,_0x5a326a){return db[_0x30f9('0x4b')]['find']({'where':{'id':_0x141b64[_0x30f9('0x4e')]['id']},'attributes':[_0x30f9('0x72')]})['then'](respondWithResult(_0x5a326a,null))[_0x30f9('0x26')](handleError(_0x5a326a,null));};exports['addPreferred']=function(_0x3feae7,_0x57fa25,_0x495602){if(_0x3feae7[_0x30f9('0x57')]&&_0x3feae7[_0x30f9('0x57')][_0x30f9('0x58')]){_0x3feae7['body'][_0x30f9('0x73')]=_0x3feae7[_0x30f9('0x57')]['filename'];}return db[_0x30f9('0x4b')][_0x30f9('0x55')]({'where':{'id':_0x3feae7[_0x30f9('0x4e')]['id']}})[_0x30f9('0x31')](handleEntityNotFound(_0x57fa25,null))['then'](saveUpdates(_0x3feae7[_0x30f9('0x54')],null))[_0x30f9('0x31')](respondWithResult(_0x57fa25,null))[_0x30f9('0x26')](handleError(_0x57fa25,null));};var utilLicense=require(_0x30f9('0x16'));exports['getPreferred']=function(_0x468675,_0x9915fd,_0x259d6a){var _0x14cef9=_0x30f9('0x5c');var _0x95f48b={'custom':![]};return utilLicense[_0x30f9('0x6c')]()[_0x30f9('0x31')](function(_0x41ede6){if(_0x41ede6){_0x95f48b=_0x41ede6;}return db[_0x30f9('0x4b')][_0x30f9('0x55')]({'where':{'id':_0x468675[_0x30f9('0x4e')]['id']},'attributes':[_0x30f9('0x59'),'loginLogo',_0x30f9('0x73'),_0x30f9('0x6d'),_0x30f9('0x5e'),_0x30f9('0x5f'),_0x30f9('0x74'),_0x30f9('0x6e')],'raw':!![]});})[_0x30f9('0x31')](handleEntityNotFound(_0x9915fd,null))[_0x30f9('0x31')](function(_0x2a508e){if(_0x2a508e){var _0x490de7=_0x2a508e[_0x30f9('0x73')]&&fs['existsSync'](path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x14cef9,_['toLower'](_0x2a508e[_0x30f9('0x73')])))?path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x14cef9,_[_0x30f9('0x62')](_0x2a508e[_0x30f9('0x73')])):path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x14cef9,_[_0x30f9('0x62')](_0x30f9('0x75')));var _0x31901d='default'+_[_0x30f9('0x65')](_0x30f9('0x73'));if(_0x2a508e[_0x31901d]||!_0x95f48b['custom']||!_0x95f48b[_0x30f9('0x73')]){_0x490de7=path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x14cef9,_[_0x30f9('0x62')](_0x30f9('0x75')));}if(!fs[_0x30f9('0x6f')](_0x490de7)){throw new db[(_0x30f9('0x67'))]['ValidationError'](_['upperFirst']('preferred')+_0x30f9('0x69'));}return _0x9915fd[_0x30f9('0x6a')](_0x490de7);}})[_0x30f9('0x26')](handleError(_0x9915fd,null));};exports[_0x30f9('0x76')]=function(_0x9c8597,_0x3b0006,_0x380417){if(_0x9c8597[_0x30f9('0x57')]&&_0x9c8597[_0x30f9('0x57')][_0x30f9('0x58')]){_0x9c8597[_0x30f9('0x54')][_0x30f9('0x6d')]=_0x9c8597['file'][_0x30f9('0x58')];}return db['Setting'][_0x30f9('0x55')]({'where':{'id':_0x9c8597[_0x30f9('0x4e')]['id']}})[_0x30f9('0x31')](handleEntityNotFound(_0x3b0006,null))[_0x30f9('0x31')](saveUpdates(_0x9c8597['body'],null))['then'](respondWithResult(_0x3b0006,null))['catch'](handleError(_0x3b0006,null));};var utilLicense=require('../../config/license/util');exports[_0x30f9('0x77')]=function(_0x4fe293,_0x197fea,_0x5dc11d){var _0x57d1fc=_0x30f9('0x5c');var _0x1ff880={'custom':![]};return utilLicense[_0x30f9('0x6c')]()['then'](function(_0x32c6e5){if(_0x32c6e5){_0x1ff880=_0x32c6e5;}return db['Setting'][_0x30f9('0x55')]({'where':{'id':_0x4fe293['params']['id']},'attributes':[_0x30f9('0x59'),_0x30f9('0x5d'),'preferred',_0x30f9('0x6d'),_0x30f9('0x5e'),'defaultLoginLogo','defaultPreferred',_0x30f9('0x6e')],'raw':!![]});})['then'](handleEntityNotFound(_0x197fea,null))[_0x30f9('0x31')](function(_0x5b7b0c){if(_0x5b7b0c){var _0xdbffe3=_0x5b7b0c[_0x30f9('0x6d')]&&fs[_0x30f9('0x6f')](path['join'](config['root'],_0x57d1fc,_[_0x30f9('0x62')](_0x5b7b0c['favicon'])))?path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x57d1fc,_[_0x30f9('0x62')](_0x5b7b0c[_0x30f9('0x6d')])):path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x57d1fc,_[_0x30f9('0x62')](_0x30f9('0x78')));var _0x4797f4=_0x30f9('0x64')+_[_0x30f9('0x65')](_0x30f9('0x6d'));if(_0x5b7b0c[_0x4797f4]||!_0x1ff880[_0x30f9('0x66')]){_0xdbffe3=path[_0x30f9('0x60')](config[_0x30f9('0x61')],_0x57d1fc,_[_0x30f9('0x62')](_0x30f9('0x78')));}if(!fs['existsSync'](_0xdbffe3)){throw new db[(_0x30f9('0x67'))][(_0x30f9('0x68'))](_[_0x30f9('0x65')]('favicon')+'\x20not\x20found');}return _0x197fea['download'](_0xdbffe3);}})[_0x30f9('0x26')](handleError(_0x197fea,null));};exports['getDate']=function(_0xa97410,_0x106783){var _0x525e13={'offset':moment()[_0x30f9('0x79')]()};_0x525e13['now']=moment()[_0x30f9('0x79')](_0x525e13[_0x30f9('0x2c')])[_0x30f9('0x7a')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x106783[_0x30f9('0x27')](0xc8)[_0x30f9('0x37')](_0x525e13);};
\ No newline at end of file
+var _0x4422=['pick','filter','merge','type','options','includeAll','include','Setting','rows','show','find','body','params','addLogo','file','logo','filename','loginLogo','getLogo','preferred','favicon','defaultLoginLogo','defaultFavicon','join','root','toLower','default','custom','existsSync','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','server/files/images/logos','getLicense','defaultPreferred','default_loginLogo.svg','upperFirst','gdpr','securePassword','addPreferred','defaultLogo','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','utcOffset','now','format','eml-format','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where'];(function(_0x2eb9df,_0x5bd3ee){var _0x42771e=function(_0x2cc3a4){while(--_0x2cc3a4){_0x2eb9df['push'](_0x2eb9df['shift']());}};_0x42771e(++_0x5bd3ee);}(_0x4422,0xab));var _0x2442=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x4422[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require(_0x2442('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2442('0x1'));var rp=require('request-promise');var moment=require(_0x2442('0x2'));var BPromise=require(_0x2442('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2442('0x4'));var sox=require(_0x2442('0x5'));var csv=require(_0x2442('0x6'));var ejs=require(_0x2442('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2442('0x8'));var squel=require(_0x2442('0x9'));var crypto=require(_0x2442('0xa'));var jsforce=require(_0x2442('0xb'));var deskjs=require(_0x2442('0xc'));var toCsv=require(_0x2442('0x6'));var querystring=require('querystring');var Papa=require(_0x2442('0xd'));var Redis=require(_0x2442('0xe'));var authService=require(_0x2442('0xf'));var qs=require(_0x2442('0x10'));var as=require(_0x2442('0x11'));var hardwareService=require(_0x2442('0x12'));var logger=require(_0x2442('0x13'))(_0x2442('0x14'));var utils=require('../../config/utils');var config=require(_0x2442('0x15'));var licenseUtil=require(_0x2442('0x16'));var db=require(_0x2442('0x17'))['db'];var jayson=require(_0x2442('0x18'));var client=jayson[_0x2442('0x19')][_0x2442('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x232f78,_0x48556e,_0x2c5c74,_0x1b565c){return new BPromise(function(_0x3d89d4,_0x120a43){var _0x565a8b=_0x1b565c||client;return _0x565a8b[_0x2442('0x1b')](_0x232f78,_0x2c5c74)[_0x2442('0x1c')](function(_0x48879e){logger[_0x2442('0x1d')](_0x2442('0x1e'),_0x48556e,'request\x20sent');logger[_0x2442('0x1f')](_0x2442('0x20'),_0x48556e,_0x2442('0x21'),JSON[_0x2442('0x22')](_0x48879e));if(_0x48879e[_0x2442('0x23')]){if(_0x48879e['error'][_0x2442('0x24')]===0x1f4){logger[_0x2442('0x23')](_0x2442('0x1e'),_0x48556e,_0x48879e['error'][_0x2442('0x25')]);return _0x120a43(_0x48879e[_0x2442('0x23')][_0x2442('0x25')]);}logger['error'](_0x2442('0x1e'),_0x48556e,_0x48879e['error']['message']);return _0x3d89d4(_0x48879e[_0x2442('0x23')][_0x2442('0x25')]);}else{logger[_0x2442('0x1d')](_0x2442('0x1e'),_0x48556e,_0x2442('0x21'));_0x3d89d4(_0x48879e[_0x2442('0x26')][_0x2442('0x25')]);}})[_0x2442('0x27')](function(_0x3a81f5){logger[_0x2442('0x23')](_0x2442('0x1e'),_0x48556e,_0x3a81f5);_0x120a43(_0x3a81f5);});});}function respondWithStatusCode(_0x21472b,_0x33f1a6){_0x33f1a6=_0x33f1a6||0xcc;return function(_0x435e38){if(_0x435e38){return _0x21472b['sendStatus'](_0x33f1a6);}return _0x21472b[_0x2442('0x28')](_0x33f1a6)['end']();};}function respondWithResult(_0x2d5c8e,_0x49004f){_0x49004f=_0x49004f||0xc8;return function(_0x2d71bd){if(_0x2d71bd){return _0x2d5c8e[_0x2442('0x28')](_0x49004f)[_0x2442('0x29')](_0x2d71bd);}};}function respondWithFilteredResult(_0x1d72bf,_0x4a29b1){return function(_0x1f53fc){if(_0x1f53fc){var _0xa97738=typeof _0x4a29b1[_0x2442('0x2a')]===_0x2442('0x2b')&&typeof _0x4a29b1['limit']===_0x2442('0x2b');var _0x5f326f=_0x1f53fc[_0x2442('0x2c')];var _0x15bf63=_0xa97738?0x0:_0x4a29b1[_0x2442('0x2a')];var _0x416a37=_0xa97738?_0x1f53fc['count']:_0x4a29b1[_0x2442('0x2a')]+_0x4a29b1[_0x2442('0x2d')];var _0x556279;if(_0x416a37>=_0x5f326f){_0x416a37=_0x5f326f;_0x556279=0xc8;}else{_0x556279=0xce;}_0x1d72bf[_0x2442('0x28')](_0x556279);return _0x1d72bf[_0x2442('0x2e')](_0x2442('0x2f'),_0x15bf63+'-'+_0x416a37+'/'+_0x5f326f)[_0x2442('0x29')](_0x1f53fc);}return null;};}function patchUpdates(_0x318559){return function(_0x4cdb32){try{jsonpatch['apply'](_0x4cdb32,_0x318559,!![]);}catch(_0x2287cc){return BPromise[_0x2442('0x30')](_0x2287cc);}return _0x4cdb32[_0x2442('0x31')]();};}function saveUpdates(_0x1a78cb,_0x19dd66){return function(_0x586a0f){if(_0x586a0f){return _0x586a0f[_0x2442('0x32')](_0x1a78cb)['then'](function(_0x1a2f2f){return _0x1a2f2f;});}return null;};}function removeEntity(_0x57f9be,_0x5181a0){return function(_0x41a809){if(_0x41a809){return _0x41a809['destroy']()[_0x2442('0x1c')](function(){_0x57f9be[_0x2442('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c0138,_0x4bf46e){return function(_0x32f707){if(!_0x32f707){_0x1c0138[_0x2442('0x33')](0x194);}return _0x32f707;};}function handleError(_0x27997a,_0x54d456){_0x54d456=_0x54d456||0x1f4;return function(_0x1a2f3f){logger[_0x2442('0x23')](_0x1a2f3f[_0x2442('0x34')]);if(_0x1a2f3f[_0x2442('0x35')]){delete _0x1a2f3f[_0x2442('0x35')];}_0x27997a['status'](_0x54d456)[_0x2442('0x36')](_0x1a2f3f);};}exports[_0x2442('0x37')]=function(_0x5c2fcc,_0x51b2a9){var _0x39bd50={},_0x5cdef5={},_0x5dafaa={'count':0x0,'rows':[]};var _0x242359=_[_0x2442('0x38')](db['Setting'][_0x2442('0x39')],function(_0x164ec5){return{'name':_0x164ec5[_0x2442('0x3a')],'type':_0x164ec5['type'][_0x2442('0x3b')]};});_0x5cdef5[_0x2442('0x3c')]=_[_0x2442('0x38')](_0x242359,_0x2442('0x35'));_0x5cdef5[_0x2442('0x3d')]=_[_0x2442('0x3e')](_0x5c2fcc['query']);_0x5cdef5[_0x2442('0x3f')]=_[_0x2442('0x40')](_0x5cdef5[_0x2442('0x3c')],_0x5cdef5['query']);_0x39bd50[_0x2442('0x41')]=_[_0x2442('0x40')](_0x5cdef5[_0x2442('0x3c')],qs[_0x2442('0x42')](_0x5c2fcc['query'][_0x2442('0x42')]));_0x39bd50[_0x2442('0x41')]=_0x39bd50[_0x2442('0x41')][_0x2442('0x43')]?_0x39bd50[_0x2442('0x41')]:_0x5cdef5[_0x2442('0x3c')];if(!_0x5c2fcc[_0x2442('0x3d')]['hasOwnProperty'](_0x2442('0x44'))){_0x39bd50['limit']=qs[_0x2442('0x2d')](_0x5c2fcc['query']['limit']);_0x39bd50[_0x2442('0x2a')]=qs['offset'](_0x5c2fcc[_0x2442('0x3d')]['offset']);}_0x39bd50['order']=qs[_0x2442('0x45')](_0x5c2fcc[_0x2442('0x3d')]['sort']);_0x39bd50[_0x2442('0x46')]=qs['filters'](_[_0x2442('0x47')](_0x5c2fcc[_0x2442('0x3d')],_0x5cdef5[_0x2442('0x3f')]),_0x242359);if(_0x5c2fcc[_0x2442('0x3d')][_0x2442('0x48')]){_0x39bd50['where']=_[_0x2442('0x49')](_0x39bd50['where'],{'$or':_[_0x2442('0x38')](_0x242359,function(_0x5b59a0){if(_0x5b59a0[_0x2442('0x4a')]!=='VIRTUAL'){var _0x18edba={};_0x18edba[_0x5b59a0[_0x2442('0x35')]]={'$like':'%'+_0x5c2fcc['query'][_0x2442('0x48')]+'%'};return _0x18edba;}})});}_0x39bd50=_[_0x2442('0x49')]({},_0x39bd50,_0x5c2fcc[_0x2442('0x4b')]);var _0x16c791={'where':_0x39bd50[_0x2442('0x46')]};return db['Setting']['count'](_0x16c791)[_0x2442('0x1c')](function(_0x2660d9){_0x5dafaa['count']=_0x2660d9;if(_0x5c2fcc[_0x2442('0x3d')][_0x2442('0x4c')]){_0x39bd50[_0x2442('0x4d')]=[{'all':!![]}];}return db[_0x2442('0x4e')]['findAll'](_0x39bd50);})[_0x2442('0x1c')](function(_0x102820){_0x5dafaa[_0x2442('0x4f')]=_0x102820;return _0x5dafaa;})[_0x2442('0x1c')](respondWithFilteredResult(_0x51b2a9,_0x39bd50))[_0x2442('0x27')](handleError(_0x51b2a9,null));};exports[_0x2442('0x50')]=function(_0x3b50f3,_0x396917){var _0xbdaabc={'raw':![],'where':{'id':_0x3b50f3['params']['id']}},_0x58fd21={};_0x58fd21['model']=_[_0x2442('0x3e')](db[_0x2442('0x4e')]['rawAttributes']);_0x58fd21[_0x2442('0x3d')]=_[_0x2442('0x3e')](_0x3b50f3['query']);_0x58fd21[_0x2442('0x3f')]=_[_0x2442('0x40')](_0x58fd21['model'],_0x58fd21[_0x2442('0x3d')]);_0xbdaabc['attributes']=_[_0x2442('0x40')](_0x58fd21[_0x2442('0x3c')],qs[_0x2442('0x42')](_0x3b50f3[_0x2442('0x3d')][_0x2442('0x42')]));_0xbdaabc[_0x2442('0x41')]=_0xbdaabc['attributes'][_0x2442('0x43')]?_0xbdaabc['attributes']:_0x58fd21[_0x2442('0x3c')];if(_0x3b50f3['query'][_0x2442('0x4c')]){_0xbdaabc[_0x2442('0x4d')]=[{'all':!![]}];}_0xbdaabc=_['merge']({},_0xbdaabc,_0x3b50f3[_0x2442('0x4b')]);return db[_0x2442('0x4e')][_0x2442('0x51')](_0xbdaabc)['then'](handleEntityNotFound(_0x396917,null))[_0x2442('0x1c')](respondWithResult(_0x396917,null))[_0x2442('0x27')](handleError(_0x396917,null));};exports['update']=function(_0x5d43ef,_0x4420e3){if(_0x5d43ef[_0x2442('0x52')]['id']){delete _0x5d43ef['body']['id'];}return db[_0x2442('0x4e')][_0x2442('0x51')]({'where':{'id':_0x5d43ef[_0x2442('0x53')]['id']}})[_0x2442('0x1c')](handleEntityNotFound(_0x4420e3,null))['then'](saveUpdates(_0x5d43ef[_0x2442('0x52')],null))['then'](respondWithResult(_0x4420e3,null))['catch'](handleError(_0x4420e3,null));};exports[_0x2442('0x54')]=function(_0x12f24b,_0x4da763,_0x5698fa){if(_0x12f24b['file']&&_0x12f24b[_0x2442('0x55')]['filename']){_0x12f24b['body'][_0x2442('0x56')]=_0x12f24b['file'][_0x2442('0x57')];}return db[_0x2442('0x4e')][_0x2442('0x51')]({'where':{'id':_0x12f24b['params']['id']}})[_0x2442('0x1c')](handleEntityNotFound(_0x4da763,null))[_0x2442('0x1c')](saveUpdates(_0x12f24b[_0x2442('0x52')],null))[_0x2442('0x1c')](respondWithResult(_0x4da763,null))[_0x2442('0x27')](handleError(_0x4da763,null));};exports['addLogoLogin']=function(_0x42c458,_0x5c9186,_0x505b25){if(_0x42c458['file']&&_0x42c458[_0x2442('0x55')]['filename']){_0x42c458[_0x2442('0x52')][_0x2442('0x58')]=_0x42c458[_0x2442('0x55')][_0x2442('0x57')];}return db[_0x2442('0x4e')][_0x2442('0x51')]({'where':{'id':_0x42c458[_0x2442('0x53')]['id']}})[_0x2442('0x1c')](handleEntityNotFound(_0x5c9186,null))['then'](saveUpdates(_0x42c458[_0x2442('0x52')],null))[_0x2442('0x1c')](respondWithResult(_0x5c9186,null))[_0x2442('0x27')](handleError(_0x5c9186,null));};var utilLicense=require(_0x2442('0x16'));exports[_0x2442('0x59')]=function(_0x762355,_0x4ca52,_0x37d77b){var _0x495225='server/files/images/logos';var _0x1ce2f3={'custom':![]};return utilLicense['getLicense']()[_0x2442('0x1c')](function(_0x15bad4){if(_0x15bad4){_0x1ce2f3=_0x15bad4;}return db[_0x2442('0x4e')][_0x2442('0x51')]({'where':{'id':_0x762355[_0x2442('0x53')]['id']},'attributes':[_0x2442('0x56'),_0x2442('0x58'),_0x2442('0x5a'),_0x2442('0x5b'),'defaultLogo',_0x2442('0x5c'),'defaultPreferred',_0x2442('0x5d')],'raw':!![]});})[_0x2442('0x1c')](handleEntityNotFound(_0x4ca52,null))['then'](function(_0x48afd7){if(_0x48afd7){var _0x4172a6=_0x48afd7[_0x2442('0x56')]&&fs['existsSync'](path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x495225,_[_0x2442('0x60')](_0x48afd7[_0x2442('0x56')])))?path['join'](config[_0x2442('0x5f')],_0x495225,_[_0x2442('0x60')](_0x48afd7[_0x2442('0x56')])):path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x495225,_[_0x2442('0x60')]('default_logo.svg'));var _0x48d4d5=_0x2442('0x61')+_['upperFirst'](_0x2442('0x56'));if(_0x48afd7[_0x48d4d5]||!_0x1ce2f3[_0x2442('0x62')]){_0x4172a6=path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x495225,_['toLower']('default_logo.svg'));}if(!fs[_0x2442('0x63')](_0x4172a6)){throw new db[(_0x2442('0x64'))][(_0x2442('0x65'))](_['upperFirst']('logo')+_0x2442('0x66'));}return _0x4ca52[_0x2442('0x67')](_0x4172a6);}})[_0x2442('0x27')](handleError(_0x4ca52,null));};var utilLicense=require(_0x2442('0x16'));exports[_0x2442('0x68')]=function(_0xc77139,_0x53eafc,_0x16dcbf){var _0x52757d=_0x2442('0x69');var _0xc5d87f={'custom':![]};return utilLicense[_0x2442('0x6a')]()['then'](function(_0x25884c){if(_0x25884c){_0xc5d87f=_0x25884c;}return db[_0x2442('0x4e')][_0x2442('0x51')]({'where':{'id':_0xc77139[_0x2442('0x53')]['id']},'attributes':['logo',_0x2442('0x58'),_0x2442('0x5a'),_0x2442('0x5b'),'defaultLogo',_0x2442('0x5c'),_0x2442('0x6b'),'defaultFavicon'],'raw':!![]});})[_0x2442('0x1c')](handleEntityNotFound(_0x53eafc,null))[_0x2442('0x1c')](function(_0x4e07ea){if(_0x4e07ea){var _0x3bfd79=_0x4e07ea['loginLogo']&&fs['existsSync'](path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x52757d,_[_0x2442('0x60')](_0x4e07ea[_0x2442('0x58')])))?path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x52757d,_[_0x2442('0x60')](_0x4e07ea[_0x2442('0x58')])):path[_0x2442('0x5e')](config['root'],_0x52757d,_[_0x2442('0x60')](_0x2442('0x6c')));var _0x3b6771='default'+_['upperFirst'](_0x2442('0x58'));if(_0x4e07ea[_0x3b6771]||!_0xc5d87f[_0x2442('0x62')]){_0x3bfd79=path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x52757d,_[_0x2442('0x60')](_0x2442('0x6c')));}if(!fs['existsSync'](_0x3bfd79)){throw new db[(_0x2442('0x64'))][(_0x2442('0x65'))](_[_0x2442('0x6d')](_0x2442('0x58'))+_0x2442('0x66'));}return _0x53eafc[_0x2442('0x67')](_0x3bfd79);}})['catch'](handleError(_0x53eafc,null));};exports[_0x2442('0x6e')]=function(_0x586fc1,_0x232c3b){return db[_0x2442('0x4e')][_0x2442('0x51')]({'where':{'id':_0x586fc1[_0x2442('0x53')]['id']},'attributes':[_0x2442('0x6f')]})[_0x2442('0x1c')](respondWithResult(_0x232c3b,null))[_0x2442('0x27')](handleError(_0x232c3b,null));};exports[_0x2442('0x70')]=function(_0x2869b6,_0x3a7fab,_0xc19a1f){if(_0x2869b6['file']&&_0x2869b6[_0x2442('0x55')][_0x2442('0x57')]){_0x2869b6[_0x2442('0x52')]['preferred']=_0x2869b6[_0x2442('0x55')][_0x2442('0x57')];}return db[_0x2442('0x4e')]['find']({'where':{'id':_0x2869b6['params']['id']}})[_0x2442('0x1c')](handleEntityNotFound(_0x3a7fab,null))[_0x2442('0x1c')](saveUpdates(_0x2869b6['body'],null))[_0x2442('0x1c')](respondWithResult(_0x3a7fab,null))[_0x2442('0x27')](handleError(_0x3a7fab,null));};var utilLicense=require('../../config/license/util');exports['getPreferred']=function(_0x2f7988,_0xa82d49,_0x2d57a7){var _0x5ea032='server/files/images/logos';var _0x361786={'custom':![]};return utilLicense[_0x2442('0x6a')]()[_0x2442('0x1c')](function(_0x40b7ba){if(_0x40b7ba){_0x361786=_0x40b7ba;}return db[_0x2442('0x4e')][_0x2442('0x51')]({'where':{'id':_0x2f7988[_0x2442('0x53')]['id']},'attributes':['logo','loginLogo',_0x2442('0x5a'),_0x2442('0x5b'),_0x2442('0x71'),_0x2442('0x5c'),'defaultPreferred',_0x2442('0x5d')],'raw':!![]});})[_0x2442('0x1c')](handleEntityNotFound(_0xa82d49,null))[_0x2442('0x1c')](function(_0x16e8af){if(_0x16e8af){var _0x16a516=_0x16e8af[_0x2442('0x5a')]&&fs['existsSync'](path[_0x2442('0x5e')](config['root'],_0x5ea032,_[_0x2442('0x60')](_0x16e8af[_0x2442('0x5a')])))?path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x5ea032,_[_0x2442('0x60')](_0x16e8af[_0x2442('0x5a')])):path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x5ea032,_['toLower'](_0x2442('0x72')));var _0x48f8a4=_0x2442('0x61')+_[_0x2442('0x6d')](_0x2442('0x5a'));if(_0x16e8af[_0x48f8a4]||!_0x361786[_0x2442('0x62')]||!_0x361786[_0x2442('0x5a')]){_0x16a516=path['join'](config['root'],_0x5ea032,_[_0x2442('0x60')]('default_preferred.png'));}if(!fs['existsSync'](_0x16a516)){throw new db['Sequelize'][(_0x2442('0x65'))](_[_0x2442('0x6d')](_0x2442('0x5a'))+_0x2442('0x66'));}return _0xa82d49[_0x2442('0x67')](_0x16a516);}})[_0x2442('0x27')](handleError(_0xa82d49,null));};exports[_0x2442('0x73')]=function(_0x4bcffa,_0x339248,_0x3a98e9){if(_0x4bcffa[_0x2442('0x55')]&&_0x4bcffa[_0x2442('0x55')]['filename']){_0x4bcffa['body'][_0x2442('0x5b')]=_0x4bcffa['file'][_0x2442('0x57')];}return db[_0x2442('0x4e')]['find']({'where':{'id':_0x4bcffa[_0x2442('0x53')]['id']}})[_0x2442('0x1c')](handleEntityNotFound(_0x339248,null))[_0x2442('0x1c')](saveUpdates(_0x4bcffa[_0x2442('0x52')],null))[_0x2442('0x1c')](respondWithResult(_0x339248,null))['catch'](handleError(_0x339248,null));};var utilLicense=require('../../config/license/util');exports[_0x2442('0x74')]=function(_0x14e8c1,_0x434825,_0x3fc91f){var _0x5e52de='server/files/images/logos';var _0x1e7b5e={'custom':![]};return utilLicense[_0x2442('0x6a')]()[_0x2442('0x1c')](function(_0x37b5bb){if(_0x37b5bb){_0x1e7b5e=_0x37b5bb;}return db[_0x2442('0x4e')]['find']({'where':{'id':_0x14e8c1[_0x2442('0x53')]['id']},'attributes':['logo',_0x2442('0x58'),_0x2442('0x5a'),_0x2442('0x5b'),_0x2442('0x71'),'defaultLoginLogo',_0x2442('0x6b'),_0x2442('0x5d')],'raw':!![]});})[_0x2442('0x1c')](handleEntityNotFound(_0x434825,null))[_0x2442('0x1c')](function(_0xa89951){if(_0xa89951){var _0x5bee6f=_0xa89951['favicon']&&fs['existsSync'](path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x5e52de,_[_0x2442('0x60')](_0xa89951[_0x2442('0x5b')])))?path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x5e52de,_[_0x2442('0x60')](_0xa89951[_0x2442('0x5b')])):path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x5e52de,_[_0x2442('0x60')](_0x2442('0x75')));var _0xf0c8a0=_0x2442('0x61')+_[_0x2442('0x6d')]('favicon');if(_0xa89951[_0xf0c8a0]||!_0x1e7b5e[_0x2442('0x62')]){_0x5bee6f=path[_0x2442('0x5e')](config[_0x2442('0x5f')],_0x5e52de,_[_0x2442('0x60')](_0x2442('0x75')));}if(!fs[_0x2442('0x63')](_0x5bee6f)){throw new db[(_0x2442('0x64'))][(_0x2442('0x65'))](_[_0x2442('0x6d')]('favicon')+_0x2442('0x66'));}return _0x434825[_0x2442('0x67')](_0x5bee6f);}})[_0x2442('0x27')](handleError(_0x434825,null));};exports['getDate']=function(_0x5aba5a,_0x29950a){var _0x30aa35={'offset':moment()[_0x2442('0x76')]()};_0x30aa35[_0x2442('0x77')]=moment()[_0x2442('0x76')](_0x30aa35[_0x2442('0x2a')])[_0x2442('0x78')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x29950a['status'](0xc8)[_0x2442('0x36')](_0x30aa35);};
\ No newline at end of file
index 478d827..bbf43ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./setting.attributes','exports','Setting','util'];(function(_0x2efd1,_0xb668c7){var _0x20ec91=function(_0x5bd040){while(--_0x5bd040){_0x2efd1['push'](_0x2efd1['shift']());}};_0x20ec91(++_0xb668c7);}(_0xedd9,0xfc));var _0x9edd=function(_0x328cf7,_0x2c7d51){_0x328cf7=_0x328cf7-0x0;var _0x9e596d=_0xedd9[_0x328cf7];return _0x9e596d;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./setting.attributes','exports','Setting','util'];(function(_0x8a9e7a,_0x1999d2){var _0xb97caf=function(_0x22e0e1){while(--_0x22e0e1){_0x8a9e7a['push'](_0x8a9e7a['shift']());}};_0xb97caf(++_0x1999d2);}(_0xedd9,0xfc));var _0x9edd=function(_0x548db1,_0x43f879){_0x548db1=_0x548db1-0x0;var _0x29c94f=_0xedd9[_0x548db1];return _0x29c94f;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b8dd120..84fba08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8cd=['error','code','Setting,\x20%s,\x20%s','message','result','catch','find','options','raw','where','include','map','model','attributes','then','ShowSetting','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x219dda,_0x5c1155){var _0x1bceb9=function(_0x1c1e20){while(--_0x1c1e20){_0x219dda['push'](_0x219dda['shift']());}};_0x1bceb9(++_0x5c1155);}(_0xe8cd,0x6d));var _0xde8c=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xe8cd[_0x491a7f];return _0x3d8f44;};'use strict';var _=require(_0xde8c('0x0'));var util=require(_0xde8c('0x1'));var moment=require('moment');var BPromise=require(_0xde8c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xde8c('0x3'));var db=require(_0xde8c('0x4'))['db'];var utils=require(_0xde8c('0x5'));var logger=require('../../config/logger')(_0xde8c('0x6'));var config=require(_0xde8c('0x7'));var jayson=require(_0xde8c('0x8'));var client=jayson['client'][_0xde8c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x520ff9,_0x51c504,_0xad7398){return new BPromise(function(_0x53e101,_0x4605c7){return client[_0xde8c('0xa')](_0x520ff9,_0xad7398)['then'](function(_0x4a8bd6){logger['info']('Setting,\x20%s,\x20%s',_0x51c504,'request\x20sent');logger[_0xde8c('0xb')](_0xde8c('0xc'),_0x51c504,_0xde8c('0xd'),JSON[_0xde8c('0xe')](_0x4a8bd6));if(_0x4a8bd6['error']){if(_0x4a8bd6[_0xde8c('0xf')][_0xde8c('0x10')]===0x1f4){logger['error'](_0xde8c('0x11'),_0x51c504,_0x4a8bd6[_0xde8c('0xf')][_0xde8c('0x12')]);return _0x4605c7(_0x4a8bd6[_0xde8c('0xf')]['message']);}logger[_0xde8c('0xf')](_0xde8c('0x11'),_0x51c504,_0x4a8bd6[_0xde8c('0xf')][_0xde8c('0x12')]);return _0x53e101(_0x4a8bd6[_0xde8c('0xf')][_0xde8c('0x12')]);}else{logger['info'](_0xde8c('0x11'),_0x51c504,'request\x20sent');_0x53e101(_0x4a8bd6[_0xde8c('0x13')][_0xde8c('0x12')]);}})[_0xde8c('0x14')](function(_0x329b4f){logger['error'](_0xde8c('0x11'),_0x51c504,_0x329b4f);_0x4605c7(_0x329b4f);});});}exports['ShowSetting']=function(_0x39cb7e){var _0x127ffa=this;return new Promise(function(_0x59df64,_0x2800fa){return db['Setting'][_0xde8c('0x15')]({'raw':_0x39cb7e[_0xde8c('0x16')]?_0x39cb7e[_0xde8c('0x16')][_0xde8c('0x17')]===undefined?!![]:![]:!![],'where':_0x39cb7e[_0xde8c('0x16')]?_0x39cb7e[_0xde8c('0x16')][_0xde8c('0x18')]||null:null,'attributes':_0x39cb7e[_0xde8c('0x16')]?_0x39cb7e['options']['attributes']||null:null,'include':_0x39cb7e['options']?_0x39cb7e[_0xde8c('0x16')][_0xde8c('0x19')]?_[_0xde8c('0x1a')](_0x39cb7e[_0xde8c('0x16')][_0xde8c('0x19')],function(_0x499483){return{'model':db[_0x499483[_0xde8c('0x1b')]],'as':_0x499483['as'],'attributes':_0x499483['attributes'],'include':_0x499483[_0xde8c('0x19')]?_[_0xde8c('0x1a')](_0x499483[_0xde8c('0x19')],function(_0x3cdf76){return{'model':db[_0x3cdf76['model']],'as':_0x3cdf76['as'],'attributes':_0x3cdf76[_0xde8c('0x1c')],'include':_0x3cdf76[_0xde8c('0x19')]?_[_0xde8c('0x1a')](_0x3cdf76[_0xde8c('0x19')],function(_0x552634){return{'model':db[_0x552634[_0xde8c('0x1b')]],'as':_0x552634['as'],'attributes':_0x552634[_0xde8c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xde8c('0x1d')](function(_0x53cf54){logger['info']('ShowSetting',_0x39cb7e);logger[_0xde8c('0xb')]('ShowSetting',_0x39cb7e,JSON['stringify'](_0x53cf54));_0x59df64(_0x53cf54);})['catch'](function(_0x49397f){logger[_0xde8c('0xf')](_0xde8c('0x1e'),_0x49397f[_0xde8c('0x12')],_0x39cb7e);_0x2800fa(_0x127ffa[_0xde8c('0xf')](0x1f4,_0x49397f[_0xde8c('0x12')]));});});};
\ No newline at end of file
+var _0xdb5c=['options','raw','where','attributes','include','map','model','then','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','Setting,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','ShowSetting','Setting','find'];(function(_0x5c8811,_0x4f77d5){var _0x2c0941=function(_0x30e2bc){while(--_0x30e2bc){_0x5c8811['push'](_0x5c8811['shift']());}};_0x2c0941(++_0x4f77d5);}(_0xdb5c,0x169));var _0xcdb5=function(_0x31eee0,_0x182433){_0x31eee0=_0x31eee0-0x0;var _0x1c3bd3=_0xdb5c[_0x31eee0];return _0x1c3bd3;};'use strict';var _=require(_0xcdb5('0x0'));var util=require(_0xcdb5('0x1'));var moment=require(_0xcdb5('0x2'));var BPromise=require('bluebird');var rs=require(_0xcdb5('0x3'));var fs=require('fs');var Redis=require(_0xcdb5('0x4'));var db=require(_0xcdb5('0x5'))['db'];var utils=require(_0xcdb5('0x6'));var logger=require(_0xcdb5('0x7'))(_0xcdb5('0x8'));var config=require(_0xcdb5('0x9'));var jayson=require(_0xcdb5('0xa'));var client=jayson[_0xcdb5('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x274d05,_0x34a09b,_0x4d7d5a){return new BPromise(function(_0x40daa8,_0x2dbf25){return client['request'](_0x274d05,_0x4d7d5a)['then'](function(_0x2978c3){logger[_0xcdb5('0xc')](_0xcdb5('0xd'),_0x34a09b,_0xcdb5('0xe'));logger['debug']('Setting,\x20%s,\x20%s,\x20%s',_0x34a09b,_0xcdb5('0xe'),JSON[_0xcdb5('0xf')](_0x2978c3));if(_0x2978c3[_0xcdb5('0x10')]){if(_0x2978c3[_0xcdb5('0x10')][_0xcdb5('0x11')]===0x1f4){logger[_0xcdb5('0x10')](_0xcdb5('0xd'),_0x34a09b,_0x2978c3[_0xcdb5('0x10')][_0xcdb5('0x12')]);return _0x2dbf25(_0x2978c3[_0xcdb5('0x10')][_0xcdb5('0x12')]);}logger[_0xcdb5('0x10')]('Setting,\x20%s,\x20%s',_0x34a09b,_0x2978c3[_0xcdb5('0x10')][_0xcdb5('0x12')]);return _0x40daa8(_0x2978c3[_0xcdb5('0x10')][_0xcdb5('0x12')]);}else{logger['info'](_0xcdb5('0xd'),_0x34a09b,_0xcdb5('0xe'));_0x40daa8(_0x2978c3['result'][_0xcdb5('0x12')]);}})[_0xcdb5('0x13')](function(_0x104c45){logger['error']('Setting,\x20%s,\x20%s',_0x34a09b,_0x104c45);_0x2dbf25(_0x104c45);});});}exports[_0xcdb5('0x14')]=function(_0x4ad98c){var _0x5217a8=this;return new Promise(function(_0x1d930a,_0x534028){return db[_0xcdb5('0x15')][_0xcdb5('0x16')]({'raw':_0x4ad98c[_0xcdb5('0x17')]?_0x4ad98c[_0xcdb5('0x17')][_0xcdb5('0x18')]===undefined?!![]:![]:!![],'where':_0x4ad98c[_0xcdb5('0x17')]?_0x4ad98c[_0xcdb5('0x17')][_0xcdb5('0x19')]||null:null,'attributes':_0x4ad98c[_0xcdb5('0x17')]?_0x4ad98c['options'][_0xcdb5('0x1a')]||null:null,'include':_0x4ad98c[_0xcdb5('0x17')]?_0x4ad98c['options'][_0xcdb5('0x1b')]?_[_0xcdb5('0x1c')](_0x4ad98c[_0xcdb5('0x17')][_0xcdb5('0x1b')],function(_0x23445f){return{'model':db[_0x23445f[_0xcdb5('0x1d')]],'as':_0x23445f['as'],'attributes':_0x23445f[_0xcdb5('0x1a')],'include':_0x23445f['include']?_['map'](_0x23445f['include'],function(_0x17ea84){return{'model':db[_0x17ea84['model']],'as':_0x17ea84['as'],'attributes':_0x17ea84[_0xcdb5('0x1a')],'include':_0x17ea84[_0xcdb5('0x1b')]?_[_0xcdb5('0x1c')](_0x17ea84[_0xcdb5('0x1b')],function(_0x2df03c){return{'model':db[_0x2df03c[_0xcdb5('0x1d')]],'as':_0x2df03c['as'],'attributes':_0x2df03c[_0xcdb5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xcdb5('0x1e')](function(_0x418ce4){logger[_0xcdb5('0xc')]('ShowSetting',_0x4ad98c);logger[_0xcdb5('0x1f')]('ShowSetting',_0x4ad98c,JSON[_0xcdb5('0xf')](_0x418ce4));_0x1d930a(_0x418ce4);})[_0xcdb5('0x13')](function(_0x3e7060){logger[_0xcdb5('0x10')]('ShowSetting',_0x3e7060['message'],_0x4ad98c);_0x534028(_0x5217a8[_0xcdb5('0x10')](0x1f4,_0x3e7060[_0xcdb5('0x12')]));});});};
\ No newline at end of file
index 5005652..20fe493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/send','status','addAgents','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated'];(function(_0x1b2255,_0x3de34f){var _0x33e57d=function(_0x2f9cce){while(--_0x2f9cce){_0x1b2255['push'](_0x1b2255['shift']());}};_0x33e57d(++_0x3de34f);}(_0x814b,0x1a2));var _0xb814=function(_0x406e46,_0x5799cb){_0x406e46=_0x406e46-0x0;var _0x4a3742=_0x814b[_0x406e46];return _0x4a3742;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0xa')](_0xb814('0x16'),auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0xa')](_0xb814('0x18'),controller[_0xb814('0x19')]);router[_0xb814('0xa')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router[_0xb814('0x1c')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x1e')]);router['post'](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x1f')]);router[_0xb814('0x1c')]('/:id/notify',controller['notify']);router['post'](_0xb814('0x14'),auth['isAuthenticated'](),controller['addApplications']);router[_0xb814('0x1c')](_0xb814('0x20'),auth[_0xb814('0xb')](),controller['send']);router[_0xb814('0x1c')]('/:id/status',controller[_0xb814('0x21')]);router[_0xb814('0x1c')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x22')]);router[_0xb814('0x23')](_0xb814('0xe'),auth['isAuthenticated'](),controller[_0xb814('0x24')]);router['delete'](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x25')]);router[_0xb814('0x26')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x27')]);router['delete'](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x28')]);router[_0xb814('0x26')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x29')]);module[_0xb814('0x2a')]=router;
\ No newline at end of file
+var _0x9957=['getInteractions','statusGet','/:id/users','getAgents','post','create','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/status','status','addAgents','/:id','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications','/:id/interactions'];(function(_0x5151e8,_0x95e17b){var _0x19c4fc=function(_0x554764){while(--_0x554764){_0x5151e8['push'](_0x5151e8['shift']());}};_0x19c4fc(++_0x95e17b);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/canned_answers',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x9')](_0x7995('0x14'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router['get']('/:id/status',controller[_0x7995('0x16')]);router[_0x7995('0x9')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x1a')]);router['post'](_0x7995('0xf'),auth['isAuthenticated'](),controller[_0x7995('0x1b')]);router[_0x7995('0x19')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router[_0x7995('0x19')]('/:id/notify',controller['notify']);router[_0x7995('0x19')]('/:id/applications',auth['isAuthenticated'](),controller[_0x7995('0x1e')]);router[_0x7995('0x19')]('/:id/send',auth[_0x7995('0xa')](),controller['send']);router['post'](_0x7995('0x1f'),controller[_0x7995('0x20')]);router[_0x7995('0x19')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x21')]);router['put'](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x23')]);router[_0x7995('0x24')](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x25')]);router[_0x7995('0x24')]('/:id/dispositions',auth[_0x7995('0xa')](),controller[_0x7995('0x26')]);router[_0x7995('0x24')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x27')]);router['delete'](_0x7995('0x17'),auth['isAuthenticated'](),controller[_0x7995('0x28')]);module[_0x7995('0x29')]=router;
\ No newline at end of file
index c31d00a..00b118d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec4f=['generate','ENUM','twilio','connectel','clicksend','plivo','clickatell','bandwidth','csc','infobip','intelepeer','BOOLEAN','TEXT','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','sequelize','randomstring','name','STRING'];(function(_0x28dd5f,_0x58f45b){var _0x26a117=function(_0x1933e8){while(--_0x1933e8){_0x28dd5f['push'](_0x28dd5f['shift']());}};_0x26a117(++_0x58f45b);}(_0xec4f,0x18b));var _0xfec4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xec4f[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xfec4('0x0'));var rs=require(_0xfec4('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xfec4('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0xfec4('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0xfec4('0x3')],'defaultValue':function(){return rs[_0xfec4('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xfec4('0x5')](_0xfec4('0x6'),'skebby',_0xfec4('0x7'),_0xfec4('0x8'),_0xfec4('0x9'),_0xfec4('0xa'),_0xfec4('0xb'),_0xfec4('0xc'),_0xfec4('0xd'),_0xfec4('0xe'))},'accountSid':{'type':Sequelize[_0xfec4('0x3')]},'authId':{'type':Sequelize[_0xfec4('0x3')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0xfec4('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0xfec4('0x3')]},'password':{'type':Sequelize[_0xfec4('0x3')]},'apiKey':{'type':Sequelize[_0xfec4('0x3')]},'applicationId':{'type':Sequelize[_0xfec4('0x3')]},'accountId':{'type':Sequelize[_0xfec4('0x3')]},'senderString':{'type':Sequelize[_0xfec4('0x3')]},'deliveryReport':{'type':Sequelize[_0xfec4('0xf')],'defaultValue':![]},'description':{'type':Sequelize[_0xfec4('0x3')]},'notificationTemplate':{'type':Sequelize[_0xfec4('0x10')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xfec4('0xf')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xfec4('0xf')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xfec4('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xfec4('0xf')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xfec4('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xfec4('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xfec4('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xfec4('0x11')],'comment':_0xfec4('0x12')},'mandatoryDisposition':{'type':Sequelize[_0xfec4('0xf')],'defaultValue':![],'comment':_0xfec4('0x13'),'set':function(_0x15a4f8){if(!_0x15a4f8)this[_0xfec4('0x14')]('mandatoryDispositionPauseId',null);this[_0xfec4('0x14')]('mandatoryDisposition',_0x15a4f8);}}};
\ No newline at end of file
+var _0x7b5f=['clickatell','bandwidth','csc','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','randomstring','exports','STRING','name','ENUM','twilio','skebby','connectel','plivo'];(function(_0x42d2bc,_0x1872a7){var _0x254d46=function(_0x264bfd){while(--_0x264bfd){_0x42d2bc['push'](_0x42d2bc['shift']());}};_0x254d46(++_0x1872a7);}(_0x7b5f,0x1c3));var _0xf7b5=function(_0x5c6949,_0x2d825a){_0x5c6949=_0x5c6949-0x0;var _0x2389c3=_0x7b5f[_0x5c6949];return _0x2389c3;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xf7b5('0x0'));module[_0xf7b5('0x1')]={'name':{'type':Sequelize[_0xf7b5('0x2')],'unique':_0xf7b5('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0xf7b5('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0xf7b5('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0xf7b5('0x2')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0xf7b5('0x2')]},'type':{'type':Sequelize[_0xf7b5('0x4')](_0xf7b5('0x5'),_0xf7b5('0x6'),_0xf7b5('0x7'),'clicksend',_0xf7b5('0x8'),_0xf7b5('0x9'),_0xf7b5('0xa'),_0xf7b5('0xb'),'infobip','intelepeer')},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize[_0xf7b5('0x2')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0xf7b5('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0xf7b5('0x2')]},'password':{'type':Sequelize[_0xf7b5('0x2')]},'apiKey':{'type':Sequelize[_0xf7b5('0x2')]},'applicationId':{'type':Sequelize[_0xf7b5('0x2')]},'accountId':{'type':Sequelize[_0xf7b5('0x2')]},'senderString':{'type':Sequelize[_0xf7b5('0x2')]},'deliveryReport':{'type':Sequelize[_0xf7b5('0xc')],'defaultValue':![]},'description':{'type':Sequelize[_0xf7b5('0x2')]},'notificationTemplate':{'type':Sequelize[_0xf7b5('0xd')],'defaultValue':function(){return _0xf7b5('0xe');}},'notificationSound':{'type':Sequelize[_0xf7b5('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf7b5('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf7b5('0xc')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf7b5('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf7b5('0xc')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf7b5('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xf7b5('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf7b5('0xf')],'comment':_0xf7b5('0x10')},'mandatoryDisposition':{'type':Sequelize[_0xf7b5('0xc')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x25749f){if(!_0x25749f)this[_0xf7b5('0x11')](_0xf7b5('0x12'),null);this['setDataValue'](_0xf7b5('0x13'),_0x25749f);}}};
\ No newline at end of file
index a9fe4fd..9ad328d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6336=['merge','VIRTUAL','options','includeAll','findAll','rows','show','length','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','addDisposition','SmsAccountId','Disposition','getDispositions','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','notify','SmsApplication','Applications','account','applications','orderBy','priority','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','difference','updatedAt','CompanyId','ListId','mobile','twilio','from','From','messageId','MessageSid','skebby','sender','connectel','clicksend','Text','infobip','results','csc','clickatell','text','replyMessageId','bandwidth','intelepeer','isNil','from\x20is\x20mandatory','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','list','Contacts','contact','interaction','created','autoclose','close','unmanaged','*,*,*,*','SmsMessage','UserId','unshift','agent','Start','startRouting','receiveMessage','debug','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','stringify','Content-Type','text/xml','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','SmsInteraction','Contact','User','Owner','internal','Tag','color','tag','to\x20is\x20mandatory','List','DESC','Messages','spread','push','received\x20delivery\x20report\x20from','inspect','statusInt','message_id','status_code','groupName','DELIVERED','redif','update','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','omit','removeAgents','isArray','emit','userSmsAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsAccount.socket','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','error','message','catch','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','get','SmsAccounts','UserProfileResource','destroy','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where'];(function(_0x36b8cb,_0x57e2e1){var _0x11fdc5=function(_0x415e2c){while(--_0x415e2c){_0x36b8cb['push'](_0x36b8cb['shift']());}};_0x11fdc5(++_0x57e2e1);}(_0x6336,0x16a));var _0x6633=function(_0x20f7be,_0x32a432){_0x20f7be=_0x20f7be-0x0;var _0x46032e=_0x6336[_0x20f7be];return _0x46032e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6633('0x0'));var zipdir=require(_0x6633('0x1'));var jsonpatch=require(_0x6633('0x2'));var rp=require(_0x6633('0x3'));var moment=require(_0x6633('0x4'));var BPromise=require(_0x6633('0x5'));var Mustache=require('mustache');var util=require(_0x6633('0x6'));var path=require(_0x6633('0x7'));var sox=require(_0x6633('0x8'));var csv=require(_0x6633('0x9'));var ejs=require(_0x6633('0xa'));var fs=require('fs');var fs_extra=require(_0x6633('0xb'));var _=require(_0x6633('0xc'));var squel=require(_0x6633('0xd'));var crypto=require('crypto');var jsforce=require(_0x6633('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6633('0xf'));var Papa=require(_0x6633('0x10'));var Redis=require(_0x6633('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6633('0x12'));var as=require(_0x6633('0x13'));var hardwareService=require(_0x6633('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x6633('0x15'));var config=require(_0x6633('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x6633('0x17'))['db'];config['redis']=_[_0x6633('0x18')](config[_0x6633('0x19')],{'host':_0x6633('0x1a'),'port':0x18eb});var socket=require(_0x6633('0x1b'))(new Redis(config[_0x6633('0x19')]));require(_0x6633('0x1c'))['register'](socket);var jayson=require(_0x6633('0x1d'));var client=jayson[_0x6633('0x1e')][_0x6633('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x31fe5e,_0x4116ea,_0x387da0,_0x2d2750){return new BPromise(function(_0x47a352,_0x7ed4ac){var _0xa12690=_0x2d2750||client;return _0xa12690[_0x6633('0x20')](_0x31fe5e,_0x387da0)[_0x6633('0x21')](function(_0x3ee127){logger[_0x6633('0x22')](_0x6633('0x23'),_0x4116ea,_0x6633('0x24'));logger['debug'](_0x6633('0x25'),_0x4116ea,_0x6633('0x24'),JSON['stringify'](_0x3ee127));if(_0x3ee127[_0x6633('0x26')]){if(_0x3ee127['error']['code']===0x1f4){logger[_0x6633('0x26')](_0x6633('0x23'),_0x4116ea,_0x3ee127[_0x6633('0x26')][_0x6633('0x27')]);return _0x7ed4ac(_0x3ee127['error'][_0x6633('0x27')]);}logger[_0x6633('0x26')](_0x6633('0x23'),_0x4116ea,_0x3ee127[_0x6633('0x26')][_0x6633('0x27')]);return _0x47a352(_0x3ee127[_0x6633('0x26')]['message']);}else{logger[_0x6633('0x22')](_0x6633('0x23'),_0x4116ea,_0x6633('0x24'));_0x47a352(_0x3ee127['result']['message']);}})[_0x6633('0x28')](function(_0x32f765){logger[_0x6633('0x26')](_0x6633('0x23'),_0x4116ea,_0x32f765);_0x7ed4ac(_0x32f765);});});}function respondWithStatusCode(_0x116b1e,_0x32d9c7){_0x32d9c7=_0x32d9c7||0xcc;return function(_0x1215f6){if(_0x1215f6){return _0x116b1e[_0x6633('0x29')](_0x32d9c7);}return _0x116b1e['status'](_0x32d9c7)['end']();};}function respondWithResult(_0x4d00a1,_0x225b8d){_0x225b8d=_0x225b8d||0xc8;return function(_0x502bef){if(_0x502bef){return _0x4d00a1[_0x6633('0x2a')](_0x225b8d)[_0x6633('0x2b')](_0x502bef);}};}function respondWithFilteredResult(_0x421f9f,_0x4220be){return function(_0x42814c){if(_0x42814c){var _0x4a5d6d=typeof _0x4220be['offset']===_0x6633('0x2c')&&typeof _0x4220be[_0x6633('0x2d')]===_0x6633('0x2c');var _0xa8a6f1=_0x42814c[_0x6633('0x2e')];var _0x25bd5e=_0x4a5d6d?0x0:_0x4220be[_0x6633('0x2f')];var _0x11b037=_0x4a5d6d?_0x42814c['count']:_0x4220be['offset']+_0x4220be[_0x6633('0x2d')];var _0x2a051;if(_0x11b037>=_0xa8a6f1){_0x11b037=_0xa8a6f1;_0x2a051=0xc8;}else{_0x2a051=0xce;}_0x421f9f[_0x6633('0x2a')](_0x2a051);return _0x421f9f[_0x6633('0x30')](_0x6633('0x31'),_0x25bd5e+'-'+_0x11b037+'/'+_0xa8a6f1)[_0x6633('0x2b')](_0x42814c);}return null;};}function patchUpdates(_0x54c877){return function(_0x39bdca){try{jsonpatch[_0x6633('0x32')](_0x39bdca,_0x54c877,!![]);}catch(_0x50126d){return BPromise[_0x6633('0x33')](_0x50126d);}return _0x39bdca[_0x6633('0x34')]();};}function saveUpdates(_0x461ac8,_0x925af9){return function(_0xd16393){if(_0xd16393){return _0xd16393['update'](_0x461ac8)[_0x6633('0x21')](function(_0x48219a){return _0x48219a;});}return null;};}function removeEntity(_0x10f91d,_0x3152e8){return function(_0x1f32f7){if(_0x1f32f7){return _0x1f32f7['destroy']()[_0x6633('0x21')](function(){var _0x5f4b0e=_0x1f32f7[_0x6633('0x35')]({'plain':!![]});var _0x42f97b=_0x6633('0x36');return db[_0x6633('0x37')][_0x6633('0x38')]({'where':{'type':_0x42f97b,'resourceId':_0x5f4b0e['id']}})['then'](function(){return _0x1f32f7;});})[_0x6633('0x21')](function(){_0x10f91d[_0x6633('0x2a')](0xcc)[_0x6633('0x39')]();});}};}function handleEntityNotFound(_0x55785a,_0x33c2b5){return function(_0x38d214){if(!_0x38d214){_0x55785a[_0x6633('0x29')](0x194);}return _0x38d214;};}function handleError(_0x214adb,_0x4a3346){_0x4a3346=_0x4a3346||0x1f4;return function(_0x4d1fb2){logger[_0x6633('0x26')](_0x4d1fb2[_0x6633('0x3a')]);if(_0x4d1fb2[_0x6633('0x3b')]){delete _0x4d1fb2[_0x6633('0x3b')];}_0x214adb[_0x6633('0x2a')](_0x4a3346)[_0x6633('0x3c')](_0x4d1fb2);};}exports[_0x6633('0x3d')]=function(_0x22e172,_0x10eaaa){var _0x3bb7bb={'include':[{'model':db[_0x6633('0x3e')],'as':_0x6633('0x3f')}]},_0x32e2ba={},_0x49be48={'count':0x0,'rows':[]};var _0x8c4e58=_[_0x6633('0x40')](db[_0x6633('0x41')][_0x6633('0x42')],function(_0x4a93fc){return{'name':_0x4a93fc[_0x6633('0x43')],'type':_0x4a93fc[_0x6633('0x44')][_0x6633('0x45')]};});_0x32e2ba['model']=_[_0x6633('0x40')](_0x8c4e58,'name');_0x32e2ba[_0x6633('0x46')]=_[_0x6633('0x47')](_0x22e172[_0x6633('0x46')]);_0x32e2ba['filters']=_[_0x6633('0x48')](_0x32e2ba[_0x6633('0x49')],_0x32e2ba[_0x6633('0x46')]);_0x3bb7bb[_0x6633('0x4a')]=_[_0x6633('0x48')](_0x32e2ba[_0x6633('0x49')],qs[_0x6633('0x4b')](_0x22e172[_0x6633('0x46')][_0x6633('0x4b')]));_0x3bb7bb[_0x6633('0x4a')]=_0x3bb7bb['attributes']['length']?_0x3bb7bb['attributes']:_0x32e2ba['model'];if(!_0x22e172['query'][_0x6633('0x4c')](_0x6633('0x4d'))){_0x3bb7bb[_0x6633('0x2d')]=qs[_0x6633('0x2d')](_0x22e172[_0x6633('0x46')][_0x6633('0x2d')]);_0x3bb7bb[_0x6633('0x2f')]=qs[_0x6633('0x2f')](_0x22e172[_0x6633('0x46')][_0x6633('0x2f')]);}_0x3bb7bb[_0x6633('0x4e')]=qs[_0x6633('0x4f')](_0x22e172[_0x6633('0x46')][_0x6633('0x4f')]);_0x3bb7bb['where']=qs[_0x6633('0x50')](_[_0x6633('0x51')](_0x22e172[_0x6633('0x46')],_0x32e2ba['filters']),_0x8c4e58);if(_0x22e172['query'][_0x6633('0x52')]){_0x3bb7bb[_0x6633('0x53')]=_[_0x6633('0x54')](_0x3bb7bb[_0x6633('0x53')],{'$or':_[_0x6633('0x40')](_0x8c4e58,function(_0x2f6082){if(_0x2f6082[_0x6633('0x44')]!==_0x6633('0x55')){var _0x3b6e8d={};_0x3b6e8d[_0x2f6082[_0x6633('0x3b')]]={'$like':'%'+_0x22e172[_0x6633('0x46')][_0x6633('0x52')]+'%'};return _0x3b6e8d;}})});}_0x3bb7bb=_['merge']({},_0x3bb7bb,_0x22e172[_0x6633('0x56')]);var _0x2d8ac9={'where':_0x3bb7bb['where']};return db[_0x6633('0x41')]['count'](_0x2d8ac9)[_0x6633('0x21')](function(_0x4fa3b1){_0x49be48['count']=_0x4fa3b1;if(_0x22e172[_0x6633('0x46')][_0x6633('0x57')]){_0x3bb7bb['include']=[{'all':!![]}];}return db[_0x6633('0x41')][_0x6633('0x58')](_0x3bb7bb);})[_0x6633('0x21')](function(_0xb82048){_0x49be48[_0x6633('0x59')]=_0xb82048;return _0x49be48;})[_0x6633('0x21')](respondWithFilteredResult(_0x10eaaa,_0x3bb7bb))['catch'](handleError(_0x10eaaa,null));};exports[_0x6633('0x5a')]=function(_0x55301a,_0x427bc8){var _0x260a10={'raw':![],'where':{'id':_0x55301a['params']['id']},'include':[{'model':db[_0x6633('0x3e')],'as':_0x6633('0x3f')}]},_0x2b7681={};_0x2b7681[_0x6633('0x49')]=_[_0x6633('0x47')](db[_0x6633('0x41')][_0x6633('0x42')]);_0x2b7681[_0x6633('0x46')]=_[_0x6633('0x47')](_0x55301a[_0x6633('0x46')]);_0x2b7681['filters']=_['intersection'](_0x2b7681[_0x6633('0x49')],_0x2b7681[_0x6633('0x46')]);_0x260a10['attributes']=_[_0x6633('0x48')](_0x2b7681[_0x6633('0x49')],qs[_0x6633('0x4b')](_0x55301a[_0x6633('0x46')][_0x6633('0x4b')]));_0x260a10[_0x6633('0x4a')]=_0x260a10[_0x6633('0x4a')][_0x6633('0x5b')]?_0x260a10[_0x6633('0x4a')]:_0x2b7681[_0x6633('0x49')];if(_0x55301a['query'][_0x6633('0x57')]){_0x260a10[_0x6633('0x5c')]=[{'all':!![]}];}_0x260a10=_[_0x6633('0x54')]({},_0x260a10,_0x55301a[_0x6633('0x56')]);return db[_0x6633('0x41')][_0x6633('0x5d')](_0x260a10)['then'](handleEntityNotFound(_0x427bc8,null))['then'](respondWithResult(_0x427bc8,null))[_0x6633('0x28')](handleError(_0x427bc8,null));};exports[_0x6633('0x5e')]=function(_0x296fc9,_0x2e80fd){return db[_0x6633('0x41')][_0x6633('0x5e')](_0x296fc9['body'],{})[_0x6633('0x21')](function(_0x52e2f8){var _0x21384d=_0x296fc9[_0x6633('0x5f')][_0x6633('0x35')]({'plain':!![]});if(!_0x21384d)throw new Error(_0x6633('0x60'));if(_0x21384d[_0x6633('0x61')]===_0x6633('0x5f')){var _0xcd69f5=_0x52e2f8[_0x6633('0x35')]({'plain':!![]});var _0x5c150a='SmsAccounts';return db[_0x6633('0x62')][_0x6633('0x5d')]({'where':{'name':_0x5c150a,'userProfileId':_0x21384d[_0x6633('0x63')]},'raw':!![]})[_0x6633('0x21')](function(_0x1762d1){if(_0x1762d1&&_0x1762d1[_0x6633('0x64')]===0x0){return db[_0x6633('0x37')][_0x6633('0x5e')]({'name':_0xcd69f5[_0x6633('0x3b')],'resourceId':_0xcd69f5['id'],'type':_0x1762d1[_0x6633('0x3b')],'sectionId':_0x1762d1['id']},{})[_0x6633('0x21')](function(){return _0x52e2f8;});}else{return _0x52e2f8;}})['catch'](function(_0x362d4e){logger['error'](_0x6633('0x65'),_0x362d4e);throw _0x362d4e;});}return _0x52e2f8;})[_0x6633('0x21')](respondWithResult(_0x2e80fd,0xc9))[_0x6633('0x28')](handleError(_0x2e80fd,null));};exports['update']=function(_0x26d03a,_0x26b21f){if(_0x26d03a[_0x6633('0x66')]['id']){delete _0x26d03a[_0x6633('0x66')]['id'];}return db[_0x6633('0x41')]['find']({'where':{'id':_0x26d03a['params']['id']},'include':[{'model':db[_0x6633('0x3e')],'as':_0x6633('0x3f')}]})['then'](handleEntityNotFound(_0x26b21f,null))[_0x6633('0x21')](saveUpdates(_0x26d03a[_0x6633('0x66')],null))[_0x6633('0x21')](respondWithResult(_0x26b21f,null))['catch'](handleError(_0x26b21f,null));};exports[_0x6633('0x38')]=function(_0x536691,_0x3e005a){return db[_0x6633('0x41')]['find']({'where':{'id':_0x536691[_0x6633('0x67')]['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x3e005a,null))[_0x6633('0x21')](removeEntity(_0x3e005a,null))[_0x6633('0x28')](handleError(_0x3e005a,null));};exports['describe']=function(_0xcdf366,_0x36448f){return db[_0x6633('0x41')]['describe']()[_0x6633('0x21')](respondWithResult(_0x36448f,null))[_0x6633('0x28')](handleError(_0x36448f,null));};exports[_0x6633('0x68')]=function(_0x3f7c9b,_0x1fd710,_0x2561e3){if(_0x3f7c9b[_0x6633('0x66')]['id']){delete _0x3f7c9b[_0x6633('0x66')]['id'];}return db['SmsAccount'][_0x6633('0x5d')]({'where':{'id':_0x3f7c9b[_0x6633('0x67')]['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x1fd710,null))['then'](function(_0x3b2e9c){if(_0x3b2e9c){_0x3f7c9b[_0x6633('0x66')][_0x6633('0x69')]=_0x3b2e9c['id'];return db[_0x6633('0x6a')][_0x6633('0x5e')](_0x3f7c9b['body']);}})[_0x6633('0x21')](respondWithResult(_0x1fd710,null))[_0x6633('0x28')](handleError(_0x1fd710,null));};exports[_0x6633('0x6b')]=function(_0x5bb10d,_0x3c9f07,_0x2cbe65){var _0x106e99={'raw':![],'where':{}};var _0x302e3f={};var _0x44205a={'count':0x0,'rows':[]};return db[_0x6633('0x41')]['findOne']({'where':{'id':_0x5bb10d[_0x6633('0x67')]['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x3c9f07,null))[_0x6633('0x21')](function(_0x469f05){if(_0x469f05){_0x302e3f[_0x6633('0x49')]=_[_0x6633('0x47')](db[_0x6633('0x6a')][_0x6633('0x42')]);_0x302e3f[_0x6633('0x46')]=_['keys'](_0x5bb10d[_0x6633('0x46')]);_0x302e3f[_0x6633('0x50')]=_[_0x6633('0x48')](_0x302e3f[_0x6633('0x49')],_0x302e3f[_0x6633('0x46')]);_0x106e99[_0x6633('0x4a')]=_[_0x6633('0x48')](_0x302e3f['model'],qs[_0x6633('0x4b')](_0x5bb10d[_0x6633('0x46')][_0x6633('0x4b')]));_0x106e99[_0x6633('0x4a')]=_0x106e99['attributes']['length']?_0x106e99[_0x6633('0x4a')]:_0x302e3f['model'];if(!_0x5bb10d[_0x6633('0x46')][_0x6633('0x4c')](_0x6633('0x4d'))){_0x106e99[_0x6633('0x2d')]=qs[_0x6633('0x2d')](_0x5bb10d[_0x6633('0x46')][_0x6633('0x2d')]);_0x106e99['offset']=qs[_0x6633('0x2f')](_0x5bb10d['query'][_0x6633('0x2f')]);}_0x106e99[_0x6633('0x4e')]=qs[_0x6633('0x4f')](_0x5bb10d[_0x6633('0x46')][_0x6633('0x4f')]);_0x106e99[_0x6633('0x53')]=qs['filters'](_[_0x6633('0x51')](_0x5bb10d[_0x6633('0x46')],_0x302e3f['filters']));_0x106e99[_0x6633('0x53')]['SmsAccountId']=_0x469f05['id'];if(_0x5bb10d[_0x6633('0x46')][_0x6633('0x52')]){_0x106e99[_0x6633('0x53')]=_[_0x6633('0x54')](_0x106e99['where'],{'$or':_[_0x6633('0x40')](_0x106e99[_0x6633('0x4a')],function(_0x324990){var _0x179f69={};_0x179f69[_0x324990]={'$like':'%'+_0x5bb10d['query'][_0x6633('0x52')]+'%'};return _0x179f69;})});}_0x106e99=_[_0x6633('0x54')]({},_0x106e99,_0x5bb10d[_0x6633('0x56')]);return db['Disposition'][_0x6633('0x2e')]({'where':_0x106e99[_0x6633('0x53')]})[_0x6633('0x21')](function(_0x1053ac){_0x44205a[_0x6633('0x2e')]=_0x1053ac;if(_0x5bb10d[_0x6633('0x46')][_0x6633('0x57')]){_0x106e99['include']=[{'all':!![]}];}return db[_0x6633('0x6a')][_0x6633('0x58')](_0x106e99);})[_0x6633('0x21')](function(_0x327505){_0x44205a['rows']=_0x327505;return _0x44205a;});}})[_0x6633('0x21')](respondWithFilteredResult(_0x3c9f07,_0x106e99))[_0x6633('0x28')](handleError(_0x3c9f07,null));};exports[_0x6633('0x6c')]=function(_0x2e48ea,_0x3faeeb,_0x7864d4){return db['SmsAccount'][_0x6633('0x5d')]({'where':{'id':_0x2e48ea[_0x6633('0x67')]['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x3faeeb,null))['then'](function(_0x422ffb){if(_0x422ffb){return _0x422ffb[_0x6633('0x6c')](_0x2e48ea[_0x6633('0x46')][_0x6633('0x6d')]);}})[_0x6633('0x21')](respondWithStatusCode(_0x3faeeb,null))[_0x6633('0x28')](handleError(_0x3faeeb,null));};exports[_0x6633('0x6e')]=function(_0x496739,_0x3ad326,_0x9594e4){if(_0x496739[_0x6633('0x66')]['id']){delete _0x496739['body']['id'];}return db[_0x6633('0x41')]['find']({'where':{'id':_0x496739['params']['id']}})['then'](handleEntityNotFound(_0x3ad326,null))['then'](function(_0x3a9b0f){if(_0x3a9b0f){_0x496739[_0x6633('0x66')][_0x6633('0x69')]=_0x3a9b0f['id'];return db[_0x6633('0x6f')][_0x6633('0x5e')](_0x496739[_0x6633('0x66')]);}})[_0x6633('0x21')](respondWithResult(_0x3ad326,null))['catch'](handleError(_0x3ad326,null));};exports[_0x6633('0x70')]=function(_0x2a5cbe,_0x8a703,_0x3b2a59){var _0x4c3176={'raw':![],'where':{}};var _0x1caba3={};var _0x1c1598={'count':0x0,'rows':[]};return db[_0x6633('0x41')][_0x6633('0x71')]({'where':{'id':_0x2a5cbe[_0x6633('0x67')]['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x8a703,null))[_0x6633('0x21')](function(_0x139f57){if(_0x139f57){_0x1caba3[_0x6633('0x49')]=_[_0x6633('0x47')](db[_0x6633('0x6f')][_0x6633('0x42')]);_0x1caba3['query']=_[_0x6633('0x47')](_0x2a5cbe['query']);_0x1caba3[_0x6633('0x50')]=_[_0x6633('0x48')](_0x1caba3[_0x6633('0x49')],_0x1caba3['query']);_0x4c3176[_0x6633('0x4a')]=_['intersection'](_0x1caba3['model'],qs[_0x6633('0x4b')](_0x2a5cbe['query'][_0x6633('0x4b')]));_0x4c3176['attributes']=_0x4c3176[_0x6633('0x4a')][_0x6633('0x5b')]?_0x4c3176['attributes']:_0x1caba3[_0x6633('0x49')];if(!_0x2a5cbe[_0x6633('0x46')][_0x6633('0x4c')](_0x6633('0x4d'))){_0x4c3176[_0x6633('0x2d')]=qs['limit'](_0x2a5cbe[_0x6633('0x46')][_0x6633('0x2d')]);_0x4c3176[_0x6633('0x2f')]=qs[_0x6633('0x2f')](_0x2a5cbe[_0x6633('0x46')]['offset']);}_0x4c3176['order']=qs['sort'](_0x2a5cbe[_0x6633('0x46')][_0x6633('0x4f')]);_0x4c3176[_0x6633('0x53')]=qs['filters'](_[_0x6633('0x51')](_0x2a5cbe['query'],_0x1caba3[_0x6633('0x50')]));_0x4c3176[_0x6633('0x53')]['SmsAccountId']=_0x139f57['id'];if(_0x2a5cbe[_0x6633('0x46')][_0x6633('0x52')]){_0x4c3176[_0x6633('0x53')]=_[_0x6633('0x54')](_0x4c3176['where'],{'$or':_[_0x6633('0x40')](_0x4c3176['attributes'],function(_0x35d416){var _0x2f60fa={};_0x2f60fa[_0x35d416]={'$like':'%'+_0x2a5cbe[_0x6633('0x46')][_0x6633('0x52')]+'%'};return _0x2f60fa;})});}_0x4c3176=_['merge']({},_0x4c3176,_0x2a5cbe[_0x6633('0x56')]);return db['CannedAnswer'][_0x6633('0x2e')]({'where':_0x4c3176[_0x6633('0x53')]})['then'](function(_0x513ad2){_0x1c1598[_0x6633('0x2e')]=_0x513ad2;if(_0x2a5cbe[_0x6633('0x46')][_0x6633('0x57')]){_0x4c3176[_0x6633('0x5c')]=[{'all':!![]}];}return db['CannedAnswer'][_0x6633('0x58')](_0x4c3176);})[_0x6633('0x21')](function(_0x5b295f){_0x1c1598['rows']=_0x5b295f;return _0x1c1598;});}})[_0x6633('0x21')](respondWithFilteredResult(_0x8a703,_0x4c3176))[_0x6633('0x28')](handleError(_0x8a703,null));};exports[_0x6633('0x72')]=function(_0x2b985a,_0x2083c6,_0x58fb76){return db[_0x6633('0x41')][_0x6633('0x5d')]({'where':{'id':_0x2b985a['params']['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x2083c6,null))[_0x6633('0x21')](function(_0x15faad){if(_0x15faad){return _0x15faad[_0x6633('0x72')](_0x2b985a['query'][_0x6633('0x6d')]);}})[_0x6633('0x21')](respondWithStatusCode(_0x2083c6,null))['catch'](handleError(_0x2083c6,null));};exports[_0x6633('0x73')]=function(_0x50acd4,_0x591ca7,_0x5dfedd){var _0x630e9f={'channel':'sms'};var _0x44931b=[];var _0xebe5ac=[];var _0x513ed4={};return db[_0x6633('0x41')][_0x6633('0x5d')]({'where':{'id':_0x50acd4[_0x6633('0x67')]['id']},'include':[{'model':db[_0x6633('0x74')],'as':_0x6633('0x75')}]})[_0x6633('0x21')](handleEntityNotFound(_0x591ca7,null))['then'](function(_0x9bb6df){_0x630e9f[_0x6633('0x76')]=_0x9bb6df;_0x630e9f[_0x6633('0x77')]=_[_0x6633('0x78')](_0x9bb6df[_0x6633('0x75')],[_0x6633('0x79')],['asc']);if(_0x630e9f[_0x6633('0x76')][_0x6633('0x75')]){delete _0x630e9f[_0x6633('0x76')][_0x6633('0x75')];}return db[_0x6633('0x7a')][_0x6633('0x7b')]();})[_0x6633('0x21')](function(_0x2b9970){if(!_0x2b9970){throw new db[(_0x6633('0x7c'))][(_0x6633('0x7d'))](_0x6633('0x7e'));}_0x44931b=_['difference'](_['keys'](_0x2b9970),[_0x6633('0x7f'),'updatedAt']);_0xebe5ac=_[_0x6633('0x80')](_['keys'](_0x2b9970),[_0x6633('0x7f'),_0x6633('0x81'),_0x6633('0x82'),_0x6633('0x83')]);_0x630e9f['body']={'mapKey':_0x6633('0x84')};if(_0x630e9f[_0x6633('0x76')]['type']){switch(_0x630e9f['account'][_0x6633('0x44')]){case _0x6633('0x85'):_0x630e9f[_0x6633('0x66')][_0x6633('0x86')]=_0x50acd4[_0x6633('0x66')][_0x6633('0x87')];_0x630e9f['body'][_0x6633('0x66')]=_0x50acd4['body']['Body'];_0x630e9f['body'][_0x6633('0x88')]=_0x50acd4[_0x6633('0x66')][_0x6633('0x89')];break;case _0x6633('0x8a'):_0x630e9f[_0x6633('0x66')][_0x6633('0x86')]='+'+_0x50acd4['body'][_0x6633('0x8b')];_0x630e9f[_0x6633('0x66')][_0x6633('0x66')]=_0x50acd4[_0x6633('0x66')]['text'];break;case _0x6633('0x8c'):_0x630e9f[_0x6633('0x66')][_0x6633('0x86')]=_0x50acd4['body'][_0x6633('0x86')];_0x630e9f[_0x6633('0x66')]['body']=_0x50acd4['body'][_0x6633('0x27')];break;case _0x6633('0x8d'):_0x630e9f[_0x6633('0x66')][_0x6633('0x86')]=_0x50acd4[_0x6633('0x66')][_0x6633('0x86')];_0x630e9f[_0x6633('0x66')][_0x6633('0x66')]=_0x50acd4[_0x6633('0x66')][_0x6633('0x66')];_0x630e9f[_0x6633('0x66')][_0x6633('0x88')]=_0x50acd4[_0x6633('0x66')]['message_id'];break;case'plivo':_0x630e9f[_0x6633('0x66')]['from']=_0x50acd4[_0x6633('0x66')][_0x6633('0x87')];_0x630e9f[_0x6633('0x66')][_0x6633('0x66')]=_0x50acd4['body'][_0x6633('0x8e')];_0x630e9f['body'][_0x6633('0x88')]=_0x50acd4[_0x6633('0x66')]['MessageUUID'];break;case _0x6633('0x8f'):_0x630e9f[_0x6633('0x66')][_0x6633('0x86')]='+'+_0x50acd4[_0x6633('0x66')][_0x6633('0x90')][0x0][_0x6633('0x86')];_0x630e9f[_0x6633('0x66')][_0x6633('0x66')]=_0x50acd4[_0x6633('0x66')][_0x6633('0x90')][0x0]['text'];_0x630e9f[_0x6633('0x66')][_0x6633('0x88')]=_0x50acd4['body'][_0x6633('0x90')][0x0]['messageId'];break;case _0x6633('0x91'):_0x630e9f['body'][_0x6633('0x86')]=_0x50acd4['body']['originatingAddress'];_0x630e9f[_0x6633('0x66')][_0x6633('0x66')]=_0x50acd4['body']['segmentedMessage']['message'];break;case _0x6633('0x92'):_0x630e9f[_0x6633('0x66')][_0x6633('0x86')]=_0x50acd4[_0x6633('0x66')]['fromNumber'];_0x630e9f['body'][_0x6633('0x66')]=_0x50acd4['body'][_0x6633('0x93')];_0x630e9f[_0x6633('0x66')][_0x6633('0x88')]=_0x50acd4[_0x6633('0x66')][_0x6633('0x94')];break;case _0x6633('0x95'):_0x630e9f[_0x6633('0x66')][_0x6633('0x88')]=_0x50acd4[_0x6633('0x66')][0x0][_0x6633('0x27')]['id'];_0x630e9f[_0x6633('0x66')][_0x6633('0x86')]=_0x50acd4[_0x6633('0x66')][0x0][_0x6633('0x27')][_0x6633('0x86')];_0x630e9f[_0x6633('0x66')]['body']=_0x50acd4['body'][0x0][_0x6633('0x27')][_0x6633('0x93')];break;case _0x6633('0x96'):_0x630e9f['body'][_0x6633('0x86')]=_0x50acd4[_0x6633('0x66')][_0x6633('0x86')];_0x630e9f[_0x6633('0x66')][_0x6633('0x66')]=_0x50acd4[_0x6633('0x66')][_0x6633('0x27')];_0x630e9f[_0x6633('0x66')][_0x6633('0x88')]=_0x50acd4[_0x6633('0x66')]['refid'];break;}}if(_0x630e9f['body']['id']){delete _0x630e9f['body']['id'];}if(_[_0x6633('0x97')](_0x630e9f['body'][_0x6633('0x86')])){throw new db[(_0x6633('0x7c'))][(_0x6633('0x7d'))](_0x6633('0x98'));}if(_[_0x6633('0x97')](_0x630e9f['body'][_0x6633('0x66')])||_0x630e9f['body']['body']===''){throw new db['Sequelize'][(_0x6633('0x7d'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x6633('0x97')](_0x630e9f[_0x6633('0x66')][_0x6633('0x99')])){throw new db[(_0x6633('0x7c'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xebe5ac);}if(!_[_0x6633('0x9a')](_0xebe5ac,_0x630e9f['body'][_0x6633('0x99')])){throw new db[(_0x6633('0x7c'))][(_0x6633('0x7d'))](_0x6633('0x9b')+_0xebe5ac);}_0x513ed4[_0x630e9f[_0x6633('0x66')]['mapKey']]=_0x630e9f[_0x6633('0x66')]['from'];return db[_0x6633('0x9c')][_0x6633('0x5d')]({'where':{'id':_0x630e9f[_0x6633('0x76')][_0x6633('0x83')]},'include':[{'model':db[_0x6633('0x7a')],'as':'Contacts','where':_0x513ed4,'limit':0x1,'order':[[_0x6633('0x81'),'DESC']]}]});})[_0x6633('0x21')](handleEntityNotFound(_0x591ca7,null))['then'](function(_0x300c17){if(_0x300c17){_0x630e9f[_0x6633('0x9d')]=_['omit'](_0x300c17,[_0x6633('0x9e')]);if(_0x300c17['Contacts'][_0x6633('0x5b')]){return _0x300c17[_0x6633('0x9e')][0x0];}var _0x5cd4d2=_[_0x6633('0x18')](_0x630e9f[_0x6633('0x66')],{'firstName':_0x630e9f['body']['from'],'ListId':_0x300c17['id']});_0x5cd4d2[_0x630e9f['body'][_0x6633('0x99')]]=_0x630e9f[_0x6633('0x66')][_0x6633('0x86')];return db['CmContact'][_0x6633('0x5e')](_0x5cd4d2,{'fields':_0x44931b,'raw':!![]});}})['then'](handleEntityNotFound(_0x591ca7,null))[_0x6633('0x21')](function(_0x2f0f12){if(_0x2f0f12){_0x630e9f[_0x6633('0x9f')]=_0x2f0f12;var _0x547a69={'ContactId':_0x2f0f12['id'],'phone':_0x630e9f[_0x6633('0x66')][_0x6633('0x86')],'SmsAccountId':_0x50acd4[_0x6633('0x67')]['id']};var _0xb595e4={'ContactId':_0x2f0f12['id'],'SmsAccountId':_0x50acd4[_0x6633('0x67')]['id'],'closed':![]};return db['SmsInteraction'][_0x6633('0x5d')]({'where':_0xb595e4})[_0x6633('0x21')](function(_0x2d72ae){if(_0x2d72ae){return[_0x2d72ae,![]];}return db['SmsInteraction'][_0x6633('0x5e')](_0x547a69)[_0x6633('0x21')](function(_0x3dbe61){return[_0x3dbe61,!![]];});});}})['spread'](function(_0x31e3b7,_0x4b70d4){_0x630e9f[_0x6633('0xa0')]=_0x31e3b7[_0x6633('0x35')]({'plain':!![]});_0x630e9f['interaction'][_0x6633('0xa1')]=![];if(_0x4b70d4){if(_0x630e9f[_0x6633('0x76')][_0x6633('0xa2')]){_0x630e9f['applications']['push']({'id':0x0,'priority':_0x630e9f[_0x6633('0x77')][_0x6633('0x5b')]+0x1,'app':_0x6633('0xa3'),'appdata':_0x6633('0xa4'),'interval':_0x6633('0xa5')});}_0x630e9f[_0x6633('0xa0')]['created']=!![];}return db[_0x6633('0xa6')][_0x6633('0x5e')]({'phone':_0x630e9f['body'][_0x6633('0x86')],'messageId':_0x630e9f[_0x6633('0x66')][_0x6633('0x88')],'body':_0x630e9f['body'][_0x6633('0x66')],'SmsAccountId':_0x50acd4[_0x6633('0x67')]['id'],'SmsInteractionId':_0x31e3b7['id'],'direction':'in','ContactId':_0x31e3b7['ContactId'],'AttachmentId':_0x630e9f[_0x6633('0x66')]['AttachmentId']});})[_0x6633('0x21')](function(_0x21cd90){_0x630e9f['message']=_0x21cd90;if(_0x630e9f[_0x6633('0xa0')]['UserId']){return db['User']['find']({'attributes':['id','name'],'where':{'id':_0x630e9f['interaction'][_0x6633('0xa7')]}})[_0x6633('0x21')](function(_0x5b80f6){if(_0x5b80f6){_0x630e9f[_0x6633('0x77')][_0x6633('0xa8')]({'id':0x0,'priority':0x0,'app':_0x6633('0xa9'),'appdata':_0x5b80f6['name']+','+(_0x630e9f['account']['waitForTheAssignedAgent']||0xa),'interval':_0x6633('0xa5')});}return respondWithRpcPromise(_0x6633('0xaa'),_0x6633('0xab'),_0x630e9f);});}return respondWithRpcPromise(_0x6633('0xaa'),_0x6633('0xab'),_0x630e9f);})['then'](function(_0x6ba2ea){if(_0x6ba2ea){var _0x551a1b=0xc8;var _0x29f68c=_0x6633('0xac');logger['info'](_0x6633('0x25'),_0x29f68c,_0x551a1b,'entity\x20found');logger[_0x6633('0xad')](_0x6633('0xae'),_0x29f68c,_0x551a1b,_0x6633('0xaf'),JSON[_0x6633('0xb0')](_0x6ba2ea));if(_0x630e9f[_0x6633('0x76')]['type']===_0x6633('0x85')){return _0x591ca7[_0x6633('0x2a')](_0x551a1b)['set'](_0x6633('0xb1'),_0x6633('0xb2'))['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x591ca7[_0x6633('0x2a')](_0x551a1b)[_0x6633('0x2b')](_0x6ba2ea);}}})[_0x6633('0x28')](handleError(_0x591ca7,null));};exports['addApplications']=function(_0x500af5,_0x2a038f,_0x1fc2a8){return db[_0x6633('0x41')][_0x6633('0x71')]({'where':{'id':_0x500af5[_0x6633('0x67')]['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x2a038f,null))[_0x6633('0x21')](function(_0x4c3ecd){if(_0x4c3ecd){return db[_0x6633('0xb3')][_0x6633('0xb4')](function(_0x1ccbbb){return db[_0x6633('0x74')][_0x6633('0x38')]({'where':{'SmsAccountId':_0x500af5[_0x6633('0x67')]['id']},'transaction':_0x1ccbbb})[_0x6633('0x21')](function(_0x444211){var _0x1e41a6=_[_0x6633('0x40')](_0x500af5[_0x6633('0x66')],function(_0x128672){_0x128672[_0x6633('0x69')]=_0x500af5[_0x6633('0x67')]['id'];return _0x128672;});return db[_0x6633('0x74')][_0x6633('0xb5')](_0x1e41a6,{'transaction':_0x1ccbbb});});})[_0x6633('0x21')](function(){return db['SmsApplication'][_0x6633('0xb6')]({'where':{'SmsAccountId':_0x500af5['params']['id']},'order':_0x6633('0x79')});});}})[_0x6633('0x21')](respondWithResult(_0x2a038f,null))[_0x6633('0x28')](handleError(_0x2a038f,null));};exports[_0x6633('0xb7')]=function(_0xef24b7,_0xb1fcf2,_0x1483a1){var _0x1ea545={};var _0x595a2c={};var _0x98a63;var _0x5b9b6d;return db[_0x6633('0x41')][_0x6633('0x71')]({'where':{'id':_0xef24b7[_0x6633('0x67')]['id']}})[_0x6633('0x21')](handleEntityNotFound(_0xb1fcf2,null))[_0x6633('0x21')](function(_0x2eb07a){if(_0x2eb07a){_0x98a63=_0x2eb07a;_0x595a2c[_0x6633('0x49')]=_[_0x6633('0x47')](db['SmsApplication'][_0x6633('0x42')]);_0x595a2c['query']=_[_0x6633('0x47')](_0xef24b7['query']);_0x595a2c[_0x6633('0x50')]=_[_0x6633('0x48')](_0x595a2c['model'],_0x595a2c['query']);_0x1ea545['attributes']=_['intersection'](_0x595a2c[_0x6633('0x49')],qs[_0x6633('0x4b')](_0xef24b7[_0x6633('0x46')][_0x6633('0x4b')]));_0x1ea545[_0x6633('0x4a')]=_0x1ea545[_0x6633('0x4a')][_0x6633('0x5b')]?_0x1ea545[_0x6633('0x4a')]:_0x595a2c[_0x6633('0x49')];_0x1ea545[_0x6633('0x4e')]=qs[_0x6633('0x4f')](_0xef24b7[_0x6633('0x46')]['sort']);_0x1ea545[_0x6633('0x53')]=qs[_0x6633('0x50')](_['pick'](_0xef24b7[_0x6633('0x46')],_0x595a2c[_0x6633('0x50')]));if(_0xef24b7[_0x6633('0x46')][_0x6633('0x52')]){_0x1ea545[_0x6633('0x53')]=_['merge'](_0x1ea545[_0x6633('0x53')],{'$or':_[_0x6633('0x40')](_0x1ea545[_0x6633('0x4a')],function(_0x4b825e){var _0x4b7db2={};_0x4b7db2[_0x4b825e]={'$like':'%'+_0xef24b7[_0x6633('0x46')][_0x6633('0x52')]+'%'};return _0x4b7db2;})});}_0x1ea545=_[_0x6633('0x54')]({},_0x1ea545,_0xef24b7[_0x6633('0x56')]);return _0x98a63['getApplications'](_0x1ea545);}})[_0x6633('0x21')](function(_0xa0a5aa){if(_0xa0a5aa){_0x5b9b6d=_0xa0a5aa[_0x6633('0x5b')];if(!_0xef24b7[_0x6633('0x46')][_0x6633('0x4c')](_0x6633('0x4d'))){_0x1ea545[_0x6633('0x2d')]=qs['limit'](_0xef24b7['query'][_0x6633('0x2d')]);_0x1ea545[_0x6633('0x2f')]=qs['offset'](_0xef24b7[_0x6633('0x46')][_0x6633('0x2f')]);}return _0x98a63[_0x6633('0xb7')](_0x1ea545);}})[_0x6633('0x21')](function(_0x667d5d){if(_0x667d5d){return _0x667d5d?{'count':_0x5b9b6d,'rows':_0x667d5d}:null;}})['then'](respondWithResult(_0xb1fcf2,null))[_0x6633('0x28')](handleError(_0xb1fcf2,null));};exports[_0x6633('0xb8')]=function(_0x13bf23,_0x1756ae,_0x523257){var _0x9ede9e={'raw':![],'where':{}};var _0x4c07f3={};var _0x597c4e={'count':0x0,'rows':[]};return db[_0x6633('0x41')][_0x6633('0x71')]({'where':{'id':_0x13bf23[_0x6633('0x67')]['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x1756ae,null))[_0x6633('0x21')](function(_0x441fcc){if(_0x441fcc){_0x4c07f3[_0x6633('0x49')]=_['keys'](db[_0x6633('0xb9')]['rawAttributes']);_0x4c07f3[_0x6633('0x46')]=_[_0x6633('0x47')](_0x13bf23['query']);_0x4c07f3[_0x6633('0x50')]=_['intersection'](_0x4c07f3[_0x6633('0x49')],_0x4c07f3['query']);_0x9ede9e[_0x6633('0x4a')]=_[_0x6633('0x48')](_0x4c07f3['model'],qs['fields'](_0x13bf23[_0x6633('0x46')][_0x6633('0x4b')]));_0x9ede9e[_0x6633('0x4a')]=_0x9ede9e[_0x6633('0x4a')]['length']?_0x9ede9e['attributes']:_0x4c07f3['model'];if(!_0x13bf23[_0x6633('0x46')][_0x6633('0x4c')](_0x6633('0x4d'))){_0x9ede9e[_0x6633('0x2d')]=qs[_0x6633('0x2d')](_0x13bf23[_0x6633('0x46')][_0x6633('0x2d')]);_0x9ede9e[_0x6633('0x2f')]=qs['offset'](_0x13bf23[_0x6633('0x46')][_0x6633('0x2f')]);}_0x9ede9e[_0x6633('0x4e')]=qs[_0x6633('0x4f')](_0x13bf23[_0x6633('0x46')]['sort']);_0x9ede9e[_0x6633('0x53')]=qs[_0x6633('0x50')](_[_0x6633('0x51')](_0x13bf23[_0x6633('0x46')],_0x4c07f3['filters']));_0x9ede9e[_0x6633('0x53')][_0x6633('0x69')]=_0x441fcc['id'];if(_0x13bf23[_0x6633('0x46')][_0x6633('0x52')]){_0x9ede9e[_0x6633('0x53')]=_['merge'](_0x9ede9e[_0x6633('0x53')],{'$or':_[_0x6633('0x40')](_0x9ede9e[_0x6633('0x4a')],function(_0x5a6012){var _0x210993={};_0x210993[_0x5a6012]={'$like':'%'+_0x13bf23[_0x6633('0x46')]['filter']+'%'};return _0x210993;})});}_0x9ede9e=_[_0x6633('0x54')]({},_0x9ede9e,_0x13bf23[_0x6633('0x56')]);return db[_0x6633('0xb9')][_0x6633('0x2e')]({'where':_0x9ede9e[_0x6633('0x53')]})[_0x6633('0x21')](function(_0x1d0a67){_0x597c4e['count']=_0x1d0a67;if(_0x13bf23[_0x6633('0x46')][_0x6633('0x57')]){_0x9ede9e[_0x6633('0x5c')]=[{'model':db[_0x6633('0x7a')],'as':_0x6633('0xba'),'required':![]},{'model':db[_0x6633('0xbb')],'as':_0x6633('0xbc'),'attributes':[_0x6633('0x3b'),'fullname',_0x6633('0xbd')],'required':![]},{'model':db[_0x6633('0xbe')],'as':'Tags','attributes':['id','name',_0x6633('0xbf')],'where':_0x13bf23[_0x6633('0x46')][_0x6633('0xc0')]?{'id':_0x13bf23[_0x6633('0x46')]['tag']}:undefined,'required':_0x13bf23[_0x6633('0x46')][_0x6633('0xc0')]?!![]:![]}];}return db['SmsInteraction']['findAll'](_0x9ede9e);})[_0x6633('0x21')](function(_0x4d373c){_0x597c4e[_0x6633('0x59')]=_0x4d373c;return _0x597c4e;});}})[_0x6633('0x21')](respondWithFilteredResult(_0x1756ae,_0x9ede9e))[_0x6633('0x28')](handleError(_0x1756ae,null));};exports[_0x6633('0x3c')]=function(_0x94ded1,_0x3d0c8e,_0xd96ff4){var _0x57806a,_0xa72029,_0x147e83;if(_[_0x6633('0x97')](_0x94ded1[_0x6633('0x66')][_0x6633('0x66')])||_0x94ded1[_0x6633('0x66')][_0x6633('0x66')]===''){throw new db[(_0x6633('0x7c'))][(_0x6633('0x7d'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x6633('0x97')](_0x94ded1[_0x6633('0x66')]['to'])){throw new db[(_0x6633('0x7c'))][(_0x6633('0x7d'))](_0x6633('0xc1'));}_0x57806a=_0x94ded1['body']['to'];return db['SmsAccount'][_0x6633('0x5d')]({'where':{'id':_0x94ded1[_0x6633('0x67')]['id']},'include':[{'model':db['CmList'],'as':_0x6633('0xc2'),'include':[{'model':db[_0x6633('0x7a')],'as':_0x6633('0x9e'),'where':{'mobile':_0x57806a},'limit':0x1,'order':[[_0x6633('0x81'),_0x6633('0xc3')]]}]}]})['then'](handleEntityNotFound(_0x3d0c8e,null))[_0x6633('0x21')](function(_0x381cfa){if(_0x381cfa&&_0x381cfa[_0x6633('0xc2')]){_0xa72029=_0x381cfa[_0x6633('0x35')]({'plain':!![]});if(_0xa72029[_0x6633('0xc2')]&&_0xa72029['List']['Contacts']['length']){return _0xa72029[_0x6633('0xc2')]['Contacts'][0x0];}return db[_0x6633('0x7a')][_0x6633('0x5e')](_[_0x6633('0x18')](_0x94ded1[_0x6633('0x66')],{'firstName':_0x57806a,'mobile':_0x57806a,'phone':_0x57806a,'ListId':_0xa72029[_0x6633('0x83')]}));}})[_0x6633('0x21')](handleEntityNotFound(_0x3d0c8e,null))[_0x6633('0x21')](function(_0x1f4521){if(_0x1f4521){_0x147e83=_0x1f4521;return db['SmsInteraction'][_0x6633('0x5d')]({'where':{'ContactId':_0x147e83['id'],'closed':![],'SmsAccountId':_0xa72029['id']}})[_0x6633('0x21')](function(_0x1c0cd0){if(_0x1c0cd0){return[_0x1c0cd0,![]];}return db['SmsInteraction'][_0x6633('0x5e')]({'UserId':_0x94ded1[_0x6633('0x5f')]['id'],'ContactId':_0x147e83['id'],'SmsAccountId':_0xa72029['id'],'phone':_0x57806a,'firstMsgDirection':'out','Messages':[_['merge'](_0x94ded1['body'],{'read':![],'body':_0x94ded1[_0x6633('0x66')][_0x6633('0x66')],'phone':_0x57806a,'SmsAccountId':_0xa72029['id'],'UserId':_0x94ded1[_0x6633('0x5f')]['id'],'ContactId':_0x147e83['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0x6633('0xc4')}]})[_0x6633('0x21')](function(_0x10e081){return[_0x10e081,!![]];});});}})[_0x6633('0xc5')](function(_0x41e719,_0x1c6189){if(_0x1c6189){return _0x41e719;}return db[_0x6633('0xa6')][_0x6633('0x5e')](_[_0x6633('0x54')](_0x94ded1[_0x6633('0x66')],{'read':![],'body':_0x94ded1['body'][_0x6633('0x66')],'phone':_0x57806a,'SmsAccountId':_0xa72029['id'],'SmsInteractionId':_0x41e719['id'],'UserId':_0x94ded1[_0x6633('0x5f')]['id'],'ContactId':_0x147e83['id']}))[_0x6633('0x21')](function(_0x1f675c){_0x41e719['dataValues']['Messages']=[];_0x41e719['dataValues'][_0x6633('0xc4')][_0x6633('0xc6')](_0x1f675c['dataValues']);return _0x41e719;});})[_0x6633('0x21')](respondWithResult(_0x3d0c8e,null))[_0x6633('0x28')](handleError(_0x3d0c8e,null));};exports[_0x6633('0x2a')]=function(_0x2130f0,_0x541186,_0x4748bd){if(_0x2130f0[_0x6633('0x66')]['id']){delete _0x2130f0[_0x6633('0x66')]['id'];}var _0x57d284,_0x4d42fa,_0xfb130f;return db['SmsAccount'][_0x6633('0x5d')]({'where':{'id':_0x2130f0[_0x6633('0x67')]['id']}})['then'](handleEntityNotFound(_0x541186,null))[_0x6633('0x21')](function(_0xa749ba){if(_0xa749ba){_0xfb130f=_0xa749ba;logger[_0x6633('0xad')](_0x6633('0x25'),'status',_0x6633('0xc7'),_0xa749ba[_0x6633('0x44')],util[_0x6633('0xc8')](_0x2130f0[_0x6633('0x66')],{'showHidden':![],'depth':null}));switch(_0xa749ba['type']){case'skebby':if(_0x2130f0[_0x6633('0x66')]['skebby_dispatch_id']&&_0x2130f0[_0x6633('0x66')]['status']){_0x4d42fa=_0x2130f0[_0x6633('0x66')]['status'];return db[_0x6633('0xa6')][_0x6633('0x5d')]({'where':{'messageId':_0x2130f0['body']['skebby_dispatch_id']}});}break;case _0x6633('0x8c'):if(_0x2130f0[_0x6633('0x66')]['requestid']&&_0x2130f0[_0x6633('0x66')][_0x6633('0xc9')]){_0x4d42fa=_0x2130f0[_0x6633('0x66')][_0x6633('0xc9')];return db[_0x6633('0xa6')][_0x6633('0x5d')]({'where':{'messageId':_0x2130f0['body']['requestid']}});}break;case _0x6633('0x8d'):if(_0x2130f0['body'][_0x6633('0xca')]&&_0x2130f0[_0x6633('0x66')][_0x6633('0xcb')]){_0x4d42fa=_0x2130f0['body'][_0x6633('0xcb')];return db[_0x6633('0xa6')][_0x6633('0x5d')]({'where':{'messageId':_0x2130f0[_0x6633('0x66')][_0x6633('0xca')]}});}break;case'infobip':var _0x223f2e=_0x2130f0['body'][_0x6633('0x90')][0x0];if(_0x223f2e[_0x6633('0x88')]&&_0x223f2e[_0x6633('0x2a')][_0x6633('0xcc')]===_0x6633('0xcd')){_0x4d42fa=_0x223f2e[_0x6633('0x2a')][_0x6633('0xcc')];return db[_0x6633('0xa6')][_0x6633('0x5d')]({'where':{'messageId':_0x223f2e[_0x6633('0x88')]}});}break;case _0x6633('0x92'):if(_0x2130f0[_0x6633('0x66')]['messageId']&&_0x2130f0[_0x6633('0x66')][_0x6633('0x2a')]){_0x4d42fa=_0x2130f0[_0x6633('0x66')][_0x6633('0x2a')];return db[_0x6633('0xa6')][_0x6633('0x5d')]({'where':{'messageId':_0x2130f0['body']['messageId']}});}break;case _0x6633('0x95'):if(_0x2130f0[_0x6633('0x66')][0x0][_0x6633('0x27')]['id']){_0x4d42fa=_0x2130f0['body'][0x0][_0x6633('0x44')];return db[_0x6633('0xa6')]['find']({'where':{'messageId':_0x2130f0[_0x6633('0x66')][0x0][_0x6633('0x27')]['id']}});}break;case _0x6633('0x96'):if(_0x2130f0[_0x6633('0x66')]['redif']&&_0x2130f0[_0x6633('0x66')]['status']){_0x4d42fa=_0x2130f0[_0x6633('0x66')][_0x6633('0x2a')];return db['SmsMessage'][_0x6633('0x5d')]({'where':{'messageId':_0x2130f0[_0x6633('0x66')][_0x6633('0xce')]}});}break;}}})[_0x6633('0x21')](handleEntityNotFound(_0x541186,null))['then'](function(_0x32a909){if(_0x32a909){_0x57d284=_0x32a909;switch(_0xfb130f[_0x6633('0x44')]){case _0x6633('0x8a'):if(_0x4d42fa==='DELIVERED'){return _0x57d284['update']({'read':!![]});}else{logger[_0x6633('0x26')](_0x6633('0x25'),'status','skebby',util[_0x6633('0xc8')](_0x2130f0[_0x6633('0x66')],{'showHidden':![],'depth':null}));}break;case _0x6633('0x8c'):if(_0x4d42fa==='1'){return _0x57d284[_0x6633('0xcf')]({'read':!![]});}else{logger[_0x6633('0x26')](_0x6633('0x25'),_0x6633('0x2a'),_0x6633('0x8a'),util[_0x6633('0xc8')](_0x2130f0['body'],{'showHidden':![],'depth':null}));}break;case _0x6633('0x8d'):if(!_0x2130f0[_0x6633('0x66')]['error_code']&&_0x4d42fa>=0xc8&&_0x4d42fa<=0xce){return _0x57d284[_0x6633('0xcf')]({'read':!![]});}else{logger[_0x6633('0x26')](_0x6633('0x25'),_0x6633('0x2a'),_0x6633('0x8d'),util[_0x6633('0xc8')](_0x2130f0[_0x6633('0x66')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x183f78=_0x2130f0[_0x6633('0x66')]['results'][0x0];if(_0x183f78[_0x6633('0x2a')]['groupName']==='DELIVERED'){return _0x57d284[_0x6633('0xcf')]({'read':!![]});}else{logger[_0x6633('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x6633('0x2a'),_0x6633('0x8f'),util['inspect'](_0x2130f0['body'],{'showHidden':![],'depth':null}));}break;case _0x6633('0x92'):if(_0x4d42fa==_0x6633('0xd0')||_0x4d42fa==_0x6633('0xd1')){return _0x57d284[_0x6633('0xcf')]({'read':!![]});}else{logger[_0x6633('0x26')](_0x6633('0x25'),'status',_0x6633('0x92'),util[_0x6633('0xc8')](_0x2130f0[_0x6633('0x66')],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x4d42fa==_0x6633('0xd2')){return _0x57d284[_0x6633('0xcf')]({'read':!![]});}else{logger[_0x6633('0x26')](_0x6633('0x25'),_0x6633('0x2a'),_0x6633('0x95'),util[_0x6633('0xc8')](_0x2130f0['body'],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x4d42fa===_0x6633('0xd3')||_0x4d42fa===_0x6633('0xd4')){return _0x57d284[_0x6633('0xcf')]({'read':!![]});}else{logger[_0x6633('0x26')](_0x6633('0x25'),_0x6633('0x2a'),_0x6633('0x96'),util[_0x6633('0xc8')](_0x2130f0[_0x6633('0x66')],{'showHidden':![],'depth':null}));}break;}return _0x57d284;}})[_0x6633('0x21')](respondWithResult(_0x541186,null))[_0x6633('0x28')](handleError(_0x541186,null));};exports[_0x6633('0xd5')]=function(_0x3dffec,_0x592604,_0xf93098){var _0x1276b8,_0x329b7b,_0x21e7fa;return db[_0x6633('0x41')][_0x6633('0x5d')]({'where':{'id':_0x3dffec['params']['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x592604,null))[_0x6633('0x21')](function(_0xeaf134){if(_0xeaf134){_0x21e7fa=_0xeaf134;logger[_0x6633('0xad')](_0x6633('0x25'),_0x6633('0x2a'),_0x6633('0xc7'),_0xeaf134[_0x6633('0x44')],util[_0x6633('0xc8')](_0x3dffec['query'],{'showHidden':![],'depth':null}));switch(_0xeaf134[_0x6633('0x44')]){case _0x6633('0x91'):if(_0x3dffec[_0x6633('0x46')][_0x6633('0xd6')]&&_0x3dffec['query']['state']){_0x329b7b=_0x3dffec[_0x6633('0x46')][_0x6633('0xd7')];return db['SmsMessage'][_0x6633('0x5d')]({'where':{'messageId':_0x3dffec[_0x6633('0x46')]['message-id']}});}break;}}})[_0x6633('0x21')](handleEntityNotFound(_0x592604,null))['then'](function(_0x4824da){if(_0x4824da){_0x1276b8=_0x4824da;switch(_0x21e7fa[_0x6633('0x44')]){case _0x6633('0x91'):if(_0x329b7b==='2'||_0x329b7b==='6'){return _0x1276b8[_0x6633('0xcf')]({'read':!![]});}else{logger[_0x6633('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x6633('0x2a'),_0x6633('0x91'),util[_0x6633('0xc8')](_0x3dffec['query'],{'showHidden':![],'depth':null}));};break;}return _0x1276b8;}})[_0x6633('0x21')](respondWithResult(_0x592604,null))[_0x6633('0x28')](handleError(_0x592604,null));};exports[_0x6633('0xd8')]=function(_0x48c940,_0x4079ab,_0xd74bab){return db['SmsAccount'][_0x6633('0x5d')]({'where':{'id':_0x48c940[_0x6633('0x67')]['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x4079ab,null))[_0x6633('0x21')](function(_0x3fcc86){if(_0x3fcc86){return _0x3fcc86[_0x6633('0xd8')](_0x48c940[_0x6633('0x66')][_0x6633('0x6d')],_[_0x6633('0xd9')](_0x48c940[_0x6633('0x66')],[_0x6633('0x6d'),'id'])||{})[_0x6633('0xc5')](function(_0x28a0fd){for(var _0x53dba8=0x0;_0x53dba8<_0x48c940[_0x6633('0x66')]['ids'][_0x6633('0x5b')];_0x53dba8+=0x1){socket['emit']('userSmsAccount:save',{'UserId':Number(_0x48c940['body'][_0x6633('0x6d')][_0x53dba8]),'SmsAccountId':Number(_0x48c940[_0x6633('0x67')]['id'])});}return _0x28a0fd;});}})[_0x6633('0x21')](respondWithResult(_0x4079ab,null))[_0x6633('0x28')](handleError(_0x4079ab,null));};exports[_0x6633('0xda')]=function(_0x30011f,_0x515ee5,_0x55eec2){return db['SmsAccount'][_0x6633('0x5d')]({'where':{'id':_0x30011f['params']['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x515ee5,null))[_0x6633('0x21')](function(_0x19c6d3){if(_0x19c6d3){return _0x19c6d3[_0x6633('0xda')](_0x30011f['query'][_0x6633('0x6d')])[_0x6633('0x21')](function(){if(_[_0x6633('0xdb')](_0x30011f['query']['ids'])){for(var _0x2be223=0x0;_0x2be223<_0x30011f['query'][_0x6633('0x6d')][_0x6633('0x5b')];_0x2be223+=0x1){socket[_0x6633('0xdc')]('userSmsAccount:remove',{'UserId':Number(_0x30011f[_0x6633('0x46')][_0x6633('0x6d')][_0x2be223]),'SmsAccountId':Number(_0x30011f[_0x6633('0x67')]['id'])});}}else{socket[_0x6633('0xdc')](_0x6633('0xdd'),{'UserId':Number(_0x30011f[_0x6633('0x46')][_0x6633('0x6d')]),'SmsAccountId':Number(_0x30011f[_0x6633('0x67')]['id'])});}});}})[_0x6633('0x21')](respondWithStatusCode(_0x515ee5,null))[_0x6633('0x28')](handleError(_0x515ee5,null));};exports[_0x6633('0xde')]=function(_0x5987cf,_0x5ea372,_0x1682d3){var _0x43b6bc={};var _0x1e5d14={};var _0x571980;var _0x785df1;return db['SmsAccount'][_0x6633('0x71')]({'where':{'id':_0x5987cf[_0x6633('0x67')]['id']}})[_0x6633('0x21')](handleEntityNotFound(_0x5ea372,null))[_0x6633('0x21')](function(_0x358aad){if(_0x358aad){_0x571980=_0x358aad;_0x1e5d14[_0x6633('0x49')]=_[_0x6633('0x47')](db[_0x6633('0xbb')]['rawAttributes']);_0x1e5d14[_0x6633('0x46')]=_[_0x6633('0x47')](_0x5987cf[_0x6633('0x46')]);_0x1e5d14[_0x6633('0x50')]=_[_0x6633('0x48')](_0x1e5d14['model'],_0x1e5d14[_0x6633('0x46')]);_0x43b6bc[_0x6633('0x4a')]=_['intersection'](_0x1e5d14['model'],qs['fields'](_0x5987cf[_0x6633('0x46')]['fields']));_0x43b6bc['attributes']=_0x43b6bc[_0x6633('0x4a')][_0x6633('0x5b')]?_0x43b6bc[_0x6633('0x4a')]:_0x1e5d14[_0x6633('0x49')];_0x43b6bc[_0x6633('0x4e')]=qs[_0x6633('0x4f')](_0x5987cf[_0x6633('0x46')][_0x6633('0x4f')]);_0x43b6bc['where']=qs[_0x6633('0x50')](_[_0x6633('0x51')](_0x5987cf['query'],_0x1e5d14[_0x6633('0x50')]));if(_0x5987cf['query']['filter']){_0x43b6bc['where']=_[_0x6633('0x54')](_0x43b6bc[_0x6633('0x53')],{'$or':_[_0x6633('0x40')](_0x43b6bc[_0x6633('0x4a')],function(_0x844996){var _0x54e90b={};_0x54e90b[_0x844996]={'$like':'%'+_0x5987cf[_0x6633('0x46')][_0x6633('0x52')]+'%'};return _0x54e90b;})});}_0x43b6bc=_[_0x6633('0x54')]({},_0x43b6bc,_0x5987cf[_0x6633('0x56')]);return _0x571980[_0x6633('0xde')](_0x43b6bc);}})[_0x6633('0x21')](function(_0xbcd4f2){if(_0xbcd4f2){_0x785df1=_0xbcd4f2[_0x6633('0x5b')];if(!_0x5987cf[_0x6633('0x46')][_0x6633('0x4c')](_0x6633('0x4d'))){_0x43b6bc[_0x6633('0x2d')]=qs[_0x6633('0x2d')](_0x5987cf[_0x6633('0x46')]['limit']);_0x43b6bc[_0x6633('0x2f')]=qs[_0x6633('0x2f')](_0x5987cf['query']['offset']);}return _0x571980['getAgents'](_0x43b6bc);}})['then'](function(_0x2ab8a5){if(_0x2ab8a5){return _0x2ab8a5?{'count':_0x785df1,'rows':_0x2ab8a5}:null;}})['then'](respondWithResult(_0x5ea372,null))['catch'](handleError(_0x5ea372,null));};
\ No newline at end of file
+var _0xae6e=['socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','SmsAccount,\x20%s,\x20%s','request\x20sent','error','message','info','result','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','get','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','model','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','intersection','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SmsAccounts','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','SmsAccountId','Disposition','findOne','options','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','rows','sms','SmsApplication','account','applications','orderBy','priority','asc','Applications','CmContact','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','mobile','twilio','from','From','messageId','skebby','sender','clicksend','message_id','plivo','MessageUUID','infobip','results','csc','segmentedMessage','clickatell','text','replyMessageId','intelepeer','isNil','Sequelize','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','CmList','ListId','list','omit','Contacts','contact','SmsInteraction','spread','interaction','autoclose','close','unmanaged','*,*,*,*','created','SmsMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','debug','Content-Type','text/xml','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','sequelize','transaction','findAndCountAll','order','getApplications','getInteractions','Owner','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','out','Messages','dataValues','push','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','connectel','requestid','statusInt','groupName','DELIVERED','bandwidth','redif','error_code','RECEIVED_BY_RECIPIENT','message-delivered','ACCEPTD','statusGet','state','message-id','addAgents','emit','userSmsAccount:save','removeAgents','userSmsAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost'];(function(_0x2c0d32,_0x467b6e){var _0x2f7b10=function(_0x245491){while(--_0x245491){_0x2c0d32['push'](_0x2c0d32['shift']());}};_0x2f7b10(++_0x467b6e);}(_0xae6e,0x19f));var _0xeae6=function(_0x3811a5,_0x116322){_0x3811a5=_0x3811a5-0x0;var _0x1e2e18=_0xae6e[_0x3811a5];return _0x1e2e18;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeae6('0x0'));var zipdir=require(_0xeae6('0x1'));var jsonpatch=require(_0xeae6('0x2'));var rp=require(_0xeae6('0x3'));var moment=require(_0xeae6('0x4'));var BPromise=require(_0xeae6('0x5'));var Mustache=require('mustache');var util=require(_0xeae6('0x6'));var path=require(_0xeae6('0x7'));var sox=require(_0xeae6('0x8'));var csv=require(_0xeae6('0x9'));var ejs=require(_0xeae6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeae6('0xb'));var squel=require(_0xeae6('0xc'));var crypto=require(_0xeae6('0xd'));var jsforce=require(_0xeae6('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xeae6('0x9'));var querystring=require(_0xeae6('0xf'));var Papa=require(_0xeae6('0x10'));var Redis=require(_0xeae6('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xeae6('0x12'));var as=require(_0xeae6('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xeae6('0x14'));var utils=require(_0xeae6('0x15'));var config=require(_0xeae6('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xeae6('0x17'))['db'];config[_0xeae6('0x18')]=_[_0xeae6('0x19')](config[_0xeae6('0x18')],{'host':_0xeae6('0x1a'),'port':0x18eb});var socket=require(_0xeae6('0x1b'))(new Redis(config[_0xeae6('0x18')]));require(_0xeae6('0x1c'))[_0xeae6('0x1d')](socket);var jayson=require(_0xeae6('0x1e'));var client=jayson[_0xeae6('0x1f')][_0xeae6('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x244642,_0x2dc897,_0x39d09a,_0x508db9){return new BPromise(function(_0x274e4b,_0x222128){var _0x2d3c58=_0x508db9||client;return _0x2d3c58[_0xeae6('0x21')](_0x244642,_0x39d09a)['then'](function(_0x500259){logger['info'](_0xeae6('0x22'),_0x2dc897,_0xeae6('0x23'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x2dc897,_0xeae6('0x23'),JSON['stringify'](_0x500259));if(_0x500259[_0xeae6('0x24')]){if(_0x500259[_0xeae6('0x24')]['code']===0x1f4){logger[_0xeae6('0x24')](_0xeae6('0x22'),_0x2dc897,_0x500259[_0xeae6('0x24')][_0xeae6('0x25')]);return _0x222128(_0x500259['error']['message']);}logger[_0xeae6('0x24')]('SmsAccount,\x20%s,\x20%s',_0x2dc897,_0x500259[_0xeae6('0x24')][_0xeae6('0x25')]);return _0x274e4b(_0x500259[_0xeae6('0x24')][_0xeae6('0x25')]);}else{logger[_0xeae6('0x26')](_0xeae6('0x22'),_0x2dc897,'request\x20sent');_0x274e4b(_0x500259[_0xeae6('0x27')]['message']);}})['catch'](function(_0x2647e8){logger['error'](_0xeae6('0x22'),_0x2dc897,_0x2647e8);_0x222128(_0x2647e8);});});}function respondWithStatusCode(_0x527791,_0x5edeb2){_0x5edeb2=_0x5edeb2||0xcc;return function(_0x512c50){if(_0x512c50){return _0x527791[_0xeae6('0x28')](_0x5edeb2);}return _0x527791[_0xeae6('0x29')](_0x5edeb2)[_0xeae6('0x2a')]();};}function respondWithResult(_0x38e99a,_0x46db48){_0x46db48=_0x46db48||0xc8;return function(_0x499fed){if(_0x499fed){return _0x38e99a['status'](_0x46db48)[_0xeae6('0x2b')](_0x499fed);}};}function respondWithFilteredResult(_0x2a5d2e,_0x49067b){return function(_0xbb8550){if(_0xbb8550){var _0x14297e=typeof _0x49067b[_0xeae6('0x2c')]==='undefined'&&typeof _0x49067b[_0xeae6('0x2d')]===_0xeae6('0x2e');var _0x10053f=_0xbb8550['count'];var _0x70c87e=_0x14297e?0x0:_0x49067b[_0xeae6('0x2c')];var _0x1370d7=_0x14297e?_0xbb8550[_0xeae6('0x2f')]:_0x49067b[_0xeae6('0x2c')]+_0x49067b['limit'];var _0x4e4849;if(_0x1370d7>=_0x10053f){_0x1370d7=_0x10053f;_0x4e4849=0xc8;}else{_0x4e4849=0xce;}_0x2a5d2e[_0xeae6('0x29')](_0x4e4849);return _0x2a5d2e[_0xeae6('0x30')](_0xeae6('0x31'),_0x70c87e+'-'+_0x1370d7+'/'+_0x10053f)[_0xeae6('0x2b')](_0xbb8550);}return null;};}function patchUpdates(_0x597a45){return function(_0x28c5d8){try{jsonpatch[_0xeae6('0x32')](_0x28c5d8,_0x597a45,!![]);}catch(_0x415e51){return BPromise['reject'](_0x415e51);}return _0x28c5d8[_0xeae6('0x33')]();};}function saveUpdates(_0x55ad07,_0x1cdbf0){return function(_0x22f110){if(_0x22f110){return _0x22f110[_0xeae6('0x34')](_0x55ad07)[_0xeae6('0x35')](function(_0xc00847){return _0xc00847;});}return null;};}function removeEntity(_0x280947,_0x1c18bd){return function(_0x2f5e0d){if(_0x2f5e0d){return _0x2f5e0d[_0xeae6('0x36')]()[_0xeae6('0x35')](function(){var _0x3363a1=_0x2f5e0d[_0xeae6('0x37')]({'plain':!![]});var _0x36546b='SmsAccounts';return db[_0xeae6('0x38')][_0xeae6('0x36')]({'where':{'type':_0x36546b,'resourceId':_0x3363a1['id']}})[_0xeae6('0x35')](function(){return _0x2f5e0d;});})[_0xeae6('0x35')](function(){_0x280947[_0xeae6('0x29')](0xcc)[_0xeae6('0x2a')]();});}};}function handleEntityNotFound(_0x299c49,_0x4b29dc){return function(_0x5226dc){if(!_0x5226dc){_0x299c49[_0xeae6('0x28')](0x194);}return _0x5226dc;};}function handleError(_0x4d2303,_0x5b3647){_0x5b3647=_0x5b3647||0x1f4;return function(_0x65c530){logger[_0xeae6('0x24')](_0x65c530[_0xeae6('0x39')]);if(_0x65c530[_0xeae6('0x3a')]){delete _0x65c530['name'];}_0x4d2303['status'](_0x5b3647)['send'](_0x65c530);};}exports[_0xeae6('0x3b')]=function(_0x57718e,_0xb013a0){var _0x39546b={'include':[{'model':db[_0xeae6('0x3c')],'as':_0xeae6('0x3d')}]},_0x18ec02={},_0x412f4a={'count':0x0,'rows':[]};var _0x50cbd6=_[_0xeae6('0x3e')](db[_0xeae6('0x3f')][_0xeae6('0x40')],function(_0x4b230d){return{'name':_0x4b230d[_0xeae6('0x41')],'type':_0x4b230d[_0xeae6('0x42')]['key']};});_0x18ec02[_0xeae6('0x43')]=_[_0xeae6('0x3e')](_0x50cbd6,_0xeae6('0x3a'));_0x18ec02[_0xeae6('0x44')]=_[_0xeae6('0x45')](_0x57718e[_0xeae6('0x44')]);_0x18ec02[_0xeae6('0x46')]=_['intersection'](_0x18ec02[_0xeae6('0x43')],_0x18ec02[_0xeae6('0x44')]);_0x39546b[_0xeae6('0x47')]=_['intersection'](_0x18ec02[_0xeae6('0x43')],qs[_0xeae6('0x48')](_0x57718e[_0xeae6('0x44')][_0xeae6('0x48')]));_0x39546b['attributes']=_0x39546b[_0xeae6('0x47')]['length']?_0x39546b[_0xeae6('0x47')]:_0x18ec02[_0xeae6('0x43')];if(!_0x57718e[_0xeae6('0x44')][_0xeae6('0x49')](_0xeae6('0x4a'))){_0x39546b[_0xeae6('0x2d')]=qs['limit'](_0x57718e[_0xeae6('0x44')][_0xeae6('0x2d')]);_0x39546b[_0xeae6('0x2c')]=qs[_0xeae6('0x2c')](_0x57718e[_0xeae6('0x44')]['offset']);}_0x39546b['order']=qs[_0xeae6('0x4b')](_0x57718e[_0xeae6('0x44')]['sort']);_0x39546b[_0xeae6('0x4c')]=qs[_0xeae6('0x46')](_[_0xeae6('0x4d')](_0x57718e['query'],_0x18ec02[_0xeae6('0x46')]),_0x50cbd6);if(_0x57718e[_0xeae6('0x44')][_0xeae6('0x4e')]){_0x39546b['where']=_[_0xeae6('0x4f')](_0x39546b[_0xeae6('0x4c')],{'$or':_[_0xeae6('0x3e')](_0x50cbd6,function(_0x468f4f){if(_0x468f4f['type']!==_0xeae6('0x50')){var _0xfaf364={};_0xfaf364[_0x468f4f[_0xeae6('0x3a')]]={'$like':'%'+_0x57718e[_0xeae6('0x44')]['filter']+'%'};return _0xfaf364;}})});}_0x39546b=_[_0xeae6('0x4f')]({},_0x39546b,_0x57718e['options']);var _0x453172={'where':_0x39546b[_0xeae6('0x4c')]};return db[_0xeae6('0x3f')]['count'](_0x453172)[_0xeae6('0x35')](function(_0x5607fe){_0x412f4a['count']=_0x5607fe;if(_0x57718e[_0xeae6('0x44')][_0xeae6('0x51')]){_0x39546b[_0xeae6('0x52')]=[{'all':!![]}];}return db['SmsAccount'][_0xeae6('0x53')](_0x39546b);})['then'](function(_0x1d177b){_0x412f4a['rows']=_0x1d177b;return _0x412f4a;})[_0xeae6('0x35')](respondWithFilteredResult(_0xb013a0,_0x39546b))[_0xeae6('0x54')](handleError(_0xb013a0,null));};exports[_0xeae6('0x55')]=function(_0x28dfc2,_0x45f975){var _0x9d69a9={'raw':![],'where':{'id':_0x28dfc2['params']['id']},'include':[{'model':db[_0xeae6('0x3c')],'as':'mandatoryDispositionPause'}]},_0x5429bf={};_0x5429bf[_0xeae6('0x43')]=_['keys'](db[_0xeae6('0x3f')][_0xeae6('0x40')]);_0x5429bf[_0xeae6('0x44')]=_['keys'](_0x28dfc2[_0xeae6('0x44')]);_0x5429bf[_0xeae6('0x46')]=_[_0xeae6('0x56')](_0x5429bf[_0xeae6('0x43')],_0x5429bf[_0xeae6('0x44')]);_0x9d69a9['attributes']=_[_0xeae6('0x56')](_0x5429bf[_0xeae6('0x43')],qs['fields'](_0x28dfc2[_0xeae6('0x44')]['fields']));_0x9d69a9[_0xeae6('0x47')]=_0x9d69a9[_0xeae6('0x47')][_0xeae6('0x57')]?_0x9d69a9[_0xeae6('0x47')]:_0x5429bf[_0xeae6('0x43')];if(_0x28dfc2['query'][_0xeae6('0x51')]){_0x9d69a9[_0xeae6('0x52')]=[{'all':!![]}];}_0x9d69a9=_[_0xeae6('0x4f')]({},_0x9d69a9,_0x28dfc2['options']);return db[_0xeae6('0x3f')]['find'](_0x9d69a9)[_0xeae6('0x35')](handleEntityNotFound(_0x45f975,null))[_0xeae6('0x35')](respondWithResult(_0x45f975,null))[_0xeae6('0x54')](handleError(_0x45f975,null));};exports[_0xeae6('0x58')]=function(_0x6540b7,_0xe2af65){return db[_0xeae6('0x3f')][_0xeae6('0x58')](_0x6540b7[_0xeae6('0x59')],{})[_0xeae6('0x35')](function(_0x54118c){var _0x47d225=_0x6540b7[_0xeae6('0x5a')][_0xeae6('0x37')]({'plain':!![]});if(!_0x47d225)throw new Error(_0xeae6('0x5b'));if(_0x47d225[_0xeae6('0x5c')]===_0xeae6('0x5a')){var _0x6d11bf=_0x54118c[_0xeae6('0x37')]({'plain':!![]});var _0x691775=_0xeae6('0x5d');return db['UserProfileSection'][_0xeae6('0x5e')]({'where':{'name':_0x691775,'userProfileId':_0x47d225[_0xeae6('0x5f')]},'raw':!![]})['then'](function(_0xc1f9e4){if(_0xc1f9e4&&_0xc1f9e4[_0xeae6('0x60')]===0x0){return db['UserProfileResource']['create']({'name':_0x6d11bf[_0xeae6('0x3a')],'resourceId':_0x6d11bf['id'],'type':_0xc1f9e4[_0xeae6('0x3a')],'sectionId':_0xc1f9e4['id']},{})['then'](function(){return _0x54118c;});}else{return _0x54118c;}})[_0xeae6('0x54')](function(_0x37de16){logger[_0xeae6('0x24')](_0xeae6('0x61'),_0x37de16);throw _0x37de16;});}return _0x54118c;})[_0xeae6('0x35')](respondWithResult(_0xe2af65,0xc9))[_0xeae6('0x54')](handleError(_0xe2af65,null));};exports[_0xeae6('0x34')]=function(_0x1428a9,_0x5df30b){if(_0x1428a9[_0xeae6('0x59')]['id']){delete _0x1428a9[_0xeae6('0x59')]['id'];}return db[_0xeae6('0x3f')]['find']({'where':{'id':_0x1428a9[_0xeae6('0x62')]['id']},'include':[{'model':db['Pause'],'as':_0xeae6('0x3d')}]})[_0xeae6('0x35')](handleEntityNotFound(_0x5df30b,null))[_0xeae6('0x35')](saveUpdates(_0x1428a9[_0xeae6('0x59')],null))[_0xeae6('0x35')](respondWithResult(_0x5df30b,null))[_0xeae6('0x54')](handleError(_0x5df30b,null));};exports['destroy']=function(_0x1459a4,_0x23ec93){return db['SmsAccount'][_0xeae6('0x5e')]({'where':{'id':_0x1459a4[_0xeae6('0x62')]['id']}})[_0xeae6('0x35')](handleEntityNotFound(_0x23ec93,null))['then'](removeEntity(_0x23ec93,null))[_0xeae6('0x54')](handleError(_0x23ec93,null));};exports[_0xeae6('0x63')]=function(_0x4d5189,_0x3db393){return db[_0xeae6('0x3f')][_0xeae6('0x63')]()[_0xeae6('0x35')](respondWithResult(_0x3db393,null))[_0xeae6('0x54')](handleError(_0x3db393,null));};exports['addDisposition']=function(_0x4107b8,_0x597840,_0x4cf858){if(_0x4107b8[_0xeae6('0x59')]['id']){delete _0x4107b8[_0xeae6('0x59')]['id'];}return db[_0xeae6('0x3f')][_0xeae6('0x5e')]({'where':{'id':_0x4107b8['params']['id']}})['then'](handleEntityNotFound(_0x597840,null))[_0xeae6('0x35')](function(_0x39c311){if(_0x39c311){_0x4107b8[_0xeae6('0x59')][_0xeae6('0x64')]=_0x39c311['id'];return db[_0xeae6('0x65')][_0xeae6('0x58')](_0x4107b8[_0xeae6('0x59')]);}})[_0xeae6('0x35')](respondWithResult(_0x597840,null))[_0xeae6('0x54')](handleError(_0x597840,null));};exports['getDispositions']=function(_0x2c1dc9,_0xb79758,_0x249d16){var _0x172f46={'raw':![],'where':{}};var _0x4b80a0={};var _0x284f43={'count':0x0,'rows':[]};return db[_0xeae6('0x3f')][_0xeae6('0x66')]({'where':{'id':_0x2c1dc9[_0xeae6('0x62')]['id']}})['then'](handleEntityNotFound(_0xb79758,null))[_0xeae6('0x35')](function(_0x5ae71a){if(_0x5ae71a){_0x4b80a0[_0xeae6('0x43')]=_[_0xeae6('0x45')](db[_0xeae6('0x65')][_0xeae6('0x40')]);_0x4b80a0['query']=_[_0xeae6('0x45')](_0x2c1dc9[_0xeae6('0x44')]);_0x4b80a0[_0xeae6('0x46')]=_['intersection'](_0x4b80a0[_0xeae6('0x43')],_0x4b80a0[_0xeae6('0x44')]);_0x172f46['attributes']=_[_0xeae6('0x56')](_0x4b80a0[_0xeae6('0x43')],qs[_0xeae6('0x48')](_0x2c1dc9[_0xeae6('0x44')][_0xeae6('0x48')]));_0x172f46['attributes']=_0x172f46[_0xeae6('0x47')][_0xeae6('0x57')]?_0x172f46[_0xeae6('0x47')]:_0x4b80a0[_0xeae6('0x43')];if(!_0x2c1dc9['query'][_0xeae6('0x49')](_0xeae6('0x4a'))){_0x172f46['limit']=qs[_0xeae6('0x2d')](_0x2c1dc9[_0xeae6('0x44')][_0xeae6('0x2d')]);_0x172f46['offset']=qs[_0xeae6('0x2c')](_0x2c1dc9[_0xeae6('0x44')]['offset']);}_0x172f46['order']=qs[_0xeae6('0x4b')](_0x2c1dc9[_0xeae6('0x44')][_0xeae6('0x4b')]);_0x172f46[_0xeae6('0x4c')]=qs[_0xeae6('0x46')](_['pick'](_0x2c1dc9['query'],_0x4b80a0[_0xeae6('0x46')]));_0x172f46[_0xeae6('0x4c')][_0xeae6('0x64')]=_0x5ae71a['id'];if(_0x2c1dc9[_0xeae6('0x44')][_0xeae6('0x4e')]){_0x172f46[_0xeae6('0x4c')]=_[_0xeae6('0x4f')](_0x172f46[_0xeae6('0x4c')],{'$or':_['map'](_0x172f46[_0xeae6('0x47')],function(_0x1d7b47){var _0x2bc176={};_0x2bc176[_0x1d7b47]={'$like':'%'+_0x2c1dc9[_0xeae6('0x44')]['filter']+'%'};return _0x2bc176;})});}_0x172f46=_[_0xeae6('0x4f')]({},_0x172f46,_0x2c1dc9[_0xeae6('0x67')]);return db['Disposition'][_0xeae6('0x2f')]({'where':_0x172f46[_0xeae6('0x4c')]})['then'](function(_0xe9b871){_0x284f43[_0xeae6('0x2f')]=_0xe9b871;if(_0x2c1dc9[_0xeae6('0x44')][_0xeae6('0x51')]){_0x172f46[_0xeae6('0x52')]=[{'all':!![]}];}return db[_0xeae6('0x65')][_0xeae6('0x53')](_0x172f46);})['then'](function(_0x7fc98d){_0x284f43['rows']=_0x7fc98d;return _0x284f43;});}})['then'](respondWithFilteredResult(_0xb79758,_0x172f46))[_0xeae6('0x54')](handleError(_0xb79758,null));};exports[_0xeae6('0x68')]=function(_0x25a72a,_0xf756d7,_0x2a466b){return db[_0xeae6('0x3f')]['find']({'where':{'id':_0x25a72a[_0xeae6('0x62')]['id']}})[_0xeae6('0x35')](handleEntityNotFound(_0xf756d7,null))[_0xeae6('0x35')](function(_0x4daeb6){if(_0x4daeb6){return _0x4daeb6['removeDispositions'](_0x25a72a[_0xeae6('0x44')][_0xeae6('0x69')]);}})[_0xeae6('0x35')](respondWithStatusCode(_0xf756d7,null))[_0xeae6('0x54')](handleError(_0xf756d7,null));};exports[_0xeae6('0x6a')]=function(_0x590888,_0x29b848,_0x1fe3e8){if(_0x590888['body']['id']){delete _0x590888[_0xeae6('0x59')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x590888[_0xeae6('0x62')]['id']}})['then'](handleEntityNotFound(_0x29b848,null))[_0xeae6('0x35')](function(_0x1c5ade){if(_0x1c5ade){_0x590888[_0xeae6('0x59')][_0xeae6('0x64')]=_0x1c5ade['id'];return db[_0xeae6('0x6b')][_0xeae6('0x58')](_0x590888['body']);}})[_0xeae6('0x35')](respondWithResult(_0x29b848,null))['catch'](handleError(_0x29b848,null));};exports[_0xeae6('0x6c')]=function(_0x46aa35,_0x472673,_0x3ae548){var _0x359438={'raw':![],'where':{}};var _0xd4ec08={};var _0x538013={'count':0x0,'rows':[]};return db['SmsAccount'][_0xeae6('0x66')]({'where':{'id':_0x46aa35[_0xeae6('0x62')]['id']}})[_0xeae6('0x35')](handleEntityNotFound(_0x472673,null))[_0xeae6('0x35')](function(_0x3bb8d6){if(_0x3bb8d6){_0xd4ec08[_0xeae6('0x43')]=_['keys'](db[_0xeae6('0x6b')][_0xeae6('0x40')]);_0xd4ec08[_0xeae6('0x44')]=_[_0xeae6('0x45')](_0x46aa35[_0xeae6('0x44')]);_0xd4ec08['filters']=_[_0xeae6('0x56')](_0xd4ec08['model'],_0xd4ec08[_0xeae6('0x44')]);_0x359438[_0xeae6('0x47')]=_[_0xeae6('0x56')](_0xd4ec08[_0xeae6('0x43')],qs[_0xeae6('0x48')](_0x46aa35['query']['fields']));_0x359438[_0xeae6('0x47')]=_0x359438[_0xeae6('0x47')][_0xeae6('0x57')]?_0x359438[_0xeae6('0x47')]:_0xd4ec08[_0xeae6('0x43')];if(!_0x46aa35[_0xeae6('0x44')][_0xeae6('0x49')]('nolimit')){_0x359438[_0xeae6('0x2d')]=qs[_0xeae6('0x2d')](_0x46aa35[_0xeae6('0x44')][_0xeae6('0x2d')]);_0x359438[_0xeae6('0x2c')]=qs['offset'](_0x46aa35[_0xeae6('0x44')][_0xeae6('0x2c')]);}_0x359438['order']=qs[_0xeae6('0x4b')](_0x46aa35[_0xeae6('0x44')][_0xeae6('0x4b')]);_0x359438['where']=qs['filters'](_['pick'](_0x46aa35[_0xeae6('0x44')],_0xd4ec08['filters']));_0x359438[_0xeae6('0x4c')]['SmsAccountId']=_0x3bb8d6['id'];if(_0x46aa35['query'][_0xeae6('0x4e')]){_0x359438['where']=_[_0xeae6('0x4f')](_0x359438[_0xeae6('0x4c')],{'$or':_[_0xeae6('0x3e')](_0x359438[_0xeae6('0x47')],function(_0x77b020){var _0x1ea493={};_0x1ea493[_0x77b020]={'$like':'%'+_0x46aa35[_0xeae6('0x44')][_0xeae6('0x4e')]+'%'};return _0x1ea493;})});}_0x359438=_[_0xeae6('0x4f')]({},_0x359438,_0x46aa35[_0xeae6('0x67')]);return db[_0xeae6('0x6b')][_0xeae6('0x2f')]({'where':_0x359438['where']})['then'](function(_0x4c06d7){_0x538013[_0xeae6('0x2f')]=_0x4c06d7;if(_0x46aa35['query'][_0xeae6('0x51')]){_0x359438[_0xeae6('0x52')]=[{'all':!![]}];}return db['CannedAnswer'][_0xeae6('0x53')](_0x359438);})[_0xeae6('0x35')](function(_0x2062b5){_0x538013[_0xeae6('0x6d')]=_0x2062b5;return _0x538013;});}})[_0xeae6('0x35')](respondWithFilteredResult(_0x472673,_0x359438))[_0xeae6('0x54')](handleError(_0x472673,null));};exports['removeAnswers']=function(_0x47f426,_0x3d31ac,_0x528c5f){return db['SmsAccount'][_0xeae6('0x5e')]({'where':{'id':_0x47f426[_0xeae6('0x62')]['id']}})['then'](handleEntityNotFound(_0x3d31ac,null))[_0xeae6('0x35')](function(_0x473b70){if(_0x473b70){return _0x473b70['removeAnswers'](_0x47f426[_0xeae6('0x44')][_0xeae6('0x69')]);}})[_0xeae6('0x35')](respondWithStatusCode(_0x3d31ac,null))[_0xeae6('0x54')](handleError(_0x3d31ac,null));};exports['notify']=function(_0x13ce11,_0x1e9095,_0x3ecf48){var _0x430013={'channel':_0xeae6('0x6e')};var _0xa63e76=[];var _0x56c6b2=[];var _0x595638={};return db[_0xeae6('0x3f')]['find']({'where':{'id':_0x13ce11[_0xeae6('0x62')]['id']},'include':[{'model':db[_0xeae6('0x6f')],'as':'Applications'}]})[_0xeae6('0x35')](handleEntityNotFound(_0x1e9095,null))[_0xeae6('0x35')](function(_0x45559a){_0x430013[_0xeae6('0x70')]=_0x45559a;_0x430013[_0xeae6('0x71')]=_[_0xeae6('0x72')](_0x45559a['Applications'],[_0xeae6('0x73')],[_0xeae6('0x74')]);if(_0x430013[_0xeae6('0x70')][_0xeae6('0x75')]){delete _0x430013[_0xeae6('0x70')]['Applications'];}return db[_0xeae6('0x76')][_0xeae6('0x63')]();})[_0xeae6('0x35')](function(_0x2d2f77){if(!_0x2d2f77){throw new db['Sequelize']['ValidationError'](_0xeae6('0x77'));}_0xa63e76=_[_0xeae6('0x78')](_[_0xeae6('0x45')](_0x2d2f77),[_0xeae6('0x79'),_0xeae6('0x7a')]);_0x56c6b2=_[_0xeae6('0x78')](_[_0xeae6('0x45')](_0x2d2f77),[_0xeae6('0x79'),_0xeae6('0x7a'),_0xeae6('0x7b'),'ListId']);_0x430013[_0xeae6('0x59')]={'mapKey':_0xeae6('0x7c')};if(_0x430013[_0xeae6('0x70')][_0xeae6('0x42')]){switch(_0x430013[_0xeae6('0x70')]['type']){case _0xeae6('0x7d'):_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')]=_0x13ce11[_0xeae6('0x59')][_0xeae6('0x7f')];_0x430013[_0xeae6('0x59')][_0xeae6('0x59')]=_0x13ce11[_0xeae6('0x59')]['Body'];_0x430013['body'][_0xeae6('0x80')]=_0x13ce11[_0xeae6('0x59')]['MessageSid'];break;case _0xeae6('0x81'):_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')]='+'+_0x13ce11['body'][_0xeae6('0x82')];_0x430013['body'][_0xeae6('0x59')]=_0x13ce11[_0xeae6('0x59')]['text'];break;case'connectel':_0x430013['body'][_0xeae6('0x7e')]=_0x13ce11[_0xeae6('0x59')][_0xeae6('0x7e')];_0x430013['body'][_0xeae6('0x59')]=_0x13ce11['body']['message'];break;case _0xeae6('0x83'):_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')]=_0x13ce11[_0xeae6('0x59')][_0xeae6('0x7e')];_0x430013['body'][_0xeae6('0x59')]=_0x13ce11['body'][_0xeae6('0x59')];_0x430013[_0xeae6('0x59')][_0xeae6('0x80')]=_0x13ce11['body'][_0xeae6('0x84')];break;case _0xeae6('0x85'):_0x430013['body'][_0xeae6('0x7e')]=_0x13ce11[_0xeae6('0x59')][_0xeae6('0x7f')];_0x430013[_0xeae6('0x59')]['body']=_0x13ce11[_0xeae6('0x59')]['Text'];_0x430013[_0xeae6('0x59')][_0xeae6('0x80')]=_0x13ce11['body'][_0xeae6('0x86')];break;case _0xeae6('0x87'):_0x430013[_0xeae6('0x59')]['from']='+'+_0x13ce11[_0xeae6('0x59')][_0xeae6('0x88')][0x0]['from'];_0x430013['body'][_0xeae6('0x59')]=_0x13ce11[_0xeae6('0x59')][_0xeae6('0x88')][0x0]['text'];_0x430013[_0xeae6('0x59')]['messageId']=_0x13ce11[_0xeae6('0x59')][_0xeae6('0x88')][0x0][_0xeae6('0x80')];break;case _0xeae6('0x89'):_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')]=_0x13ce11['body']['originatingAddress'];_0x430013['body'][_0xeae6('0x59')]=_0x13ce11[_0xeae6('0x59')][_0xeae6('0x8a')][_0xeae6('0x25')];break;case _0xeae6('0x8b'):_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')]=_0x13ce11[_0xeae6('0x59')]['fromNumber'];_0x430013[_0xeae6('0x59')][_0xeae6('0x59')]=_0x13ce11['body'][_0xeae6('0x8c')];_0x430013[_0xeae6('0x59')][_0xeae6('0x80')]=_0x13ce11['body'][_0xeae6('0x8d')];break;case'bandwidth':_0x430013[_0xeae6('0x59')][_0xeae6('0x80')]=_0x13ce11[_0xeae6('0x59')][0x0]['message']['id'];_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')]=_0x13ce11[_0xeae6('0x59')][0x0][_0xeae6('0x25')][_0xeae6('0x7e')];_0x430013['body'][_0xeae6('0x59')]=_0x13ce11[_0xeae6('0x59')][0x0][_0xeae6('0x25')]['text'];break;case _0xeae6('0x8e'):_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')]=_0x13ce11[_0xeae6('0x59')][_0xeae6('0x7e')];_0x430013[_0xeae6('0x59')][_0xeae6('0x59')]=_0x13ce11[_0xeae6('0x59')][_0xeae6('0x25')];_0x430013[_0xeae6('0x59')][_0xeae6('0x80')]=_0x13ce11[_0xeae6('0x59')]['refid'];break;}}if(_0x430013[_0xeae6('0x59')]['id']){delete _0x430013[_0xeae6('0x59')]['id'];}if(_[_0xeae6('0x8f')](_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')])){throw new db[(_0xeae6('0x90'))][(_0xeae6('0x91'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x430013[_0xeae6('0x59')]['body'])||_0x430013['body'][_0xeae6('0x59')]===''){throw new db[(_0xeae6('0x90'))][(_0xeae6('0x91'))](_0xeae6('0x92'));}if(_[_0xeae6('0x8f')](_0x430013[_0xeae6('0x59')]['mapKey'])){throw new db[(_0xeae6('0x90'))][(_0xeae6('0x91'))](_0xeae6('0x93')+_0x56c6b2);}if(!_[_0xeae6('0x94')](_0x56c6b2,_0x430013[_0xeae6('0x59')]['mapKey'])){throw new db[(_0xeae6('0x90'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x56c6b2);}_0x595638[_0x430013[_0xeae6('0x59')][_0xeae6('0x95')]]=_0x430013[_0xeae6('0x59')]['from'];return db[_0xeae6('0x96')][_0xeae6('0x5e')]({'where':{'id':_0x430013[_0xeae6('0x70')][_0xeae6('0x97')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x595638,'limit':0x1,'order':[[_0xeae6('0x7a'),'DESC']]}]});})[_0xeae6('0x35')](handleEntityNotFound(_0x1e9095,null))[_0xeae6('0x35')](function(_0x5d3f2d){if(_0x5d3f2d){_0x430013[_0xeae6('0x98')]=_[_0xeae6('0x99')](_0x5d3f2d,[_0xeae6('0x9a')]);if(_0x5d3f2d[_0xeae6('0x9a')][_0xeae6('0x57')]){return _0x5d3f2d[_0xeae6('0x9a')][0x0];}var _0x267086=_[_0xeae6('0x19')](_0x430013['body'],{'firstName':_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')],'ListId':_0x5d3f2d['id']});_0x267086[_0x430013[_0xeae6('0x59')][_0xeae6('0x95')]]=_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')];return db[_0xeae6('0x76')][_0xeae6('0x58')](_0x267086,{'fields':_0xa63e76,'raw':!![]});}})[_0xeae6('0x35')](handleEntityNotFound(_0x1e9095,null))[_0xeae6('0x35')](function(_0x4cf8cd){if(_0x4cf8cd){_0x430013[_0xeae6('0x9b')]=_0x4cf8cd;var _0x265b47={'ContactId':_0x4cf8cd['id'],'phone':_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')],'SmsAccountId':_0x13ce11[_0xeae6('0x62')]['id']};var _0x3b4faf={'ContactId':_0x4cf8cd['id'],'SmsAccountId':_0x13ce11['params']['id'],'closed':![]};return db[_0xeae6('0x9c')][_0xeae6('0x5e')]({'where':_0x3b4faf})[_0xeae6('0x35')](function(_0x660501){if(_0x660501){return[_0x660501,![]];}return db[_0xeae6('0x9c')]['create'](_0x265b47)[_0xeae6('0x35')](function(_0xd952f5){return[_0xd952f5,!![]];});});}})[_0xeae6('0x9d')](function(_0x204cb1,_0x25fc32){_0x430013[_0xeae6('0x9e')]=_0x204cb1[_0xeae6('0x37')]({'plain':!![]});_0x430013['interaction']['created']=![];if(_0x25fc32){if(_0x430013[_0xeae6('0x70')][_0xeae6('0x9f')]){_0x430013[_0xeae6('0x71')]['push']({'id':0x0,'priority':_0x430013['applications'][_0xeae6('0x57')]+0x1,'app':_0xeae6('0xa0'),'appdata':_0xeae6('0xa1'),'interval':_0xeae6('0xa2')});}_0x430013[_0xeae6('0x9e')][_0xeae6('0xa3')]=!![];}return db[_0xeae6('0xa4')]['create']({'phone':_0x430013[_0xeae6('0x59')][_0xeae6('0x7e')],'messageId':_0x430013['body'][_0xeae6('0x80')],'body':_0x430013['body'][_0xeae6('0x59')],'SmsAccountId':_0x13ce11[_0xeae6('0x62')]['id'],'SmsInteractionId':_0x204cb1['id'],'direction':'in','ContactId':_0x204cb1['ContactId'],'AttachmentId':_0x430013[_0xeae6('0x59')][_0xeae6('0xa5')]});})[_0xeae6('0x35')](function(_0x44e94d){_0x430013[_0xeae6('0x25')]=_0x44e94d;if(_0x430013[_0xeae6('0x9e')][_0xeae6('0xa6')]){return db[_0xeae6('0xa7')]['find']({'attributes':['id',_0xeae6('0x3a')],'where':{'id':_0x430013['interaction'][_0xeae6('0xa6')]}})[_0xeae6('0x35')](function(_0x1fad0a){if(_0x1fad0a){_0x430013[_0xeae6('0x71')][_0xeae6('0xa8')]({'id':0x0,'priority':0x0,'app':_0xeae6('0xa9'),'appdata':_0x1fad0a['name']+','+(_0x430013[_0xeae6('0x70')][_0xeae6('0xaa')]||0xa),'interval':_0xeae6('0xa2')});}return respondWithRpcPromise(_0xeae6('0xab'),_0xeae6('0xac'),_0x430013);});}return respondWithRpcPromise(_0xeae6('0xab'),_0xeae6('0xac'),_0x430013);})[_0xeae6('0x35')](function(_0x42f6cb){if(_0x42f6cb){var _0x28d15d=0xc8;var _0x5786f2='receiveMessage';logger[_0xeae6('0x26')](_0xeae6('0xad'),_0x5786f2,_0x28d15d,_0xeae6('0xae'));logger[_0xeae6('0xaf')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x5786f2,_0x28d15d,_0xeae6('0xae'),JSON['stringify'](_0x42f6cb));if(_0x430013[_0xeae6('0x70')][_0xeae6('0x42')]==='twilio'){return _0x1e9095[_0xeae6('0x29')](_0x28d15d)[_0xeae6('0x30')](_0xeae6('0xb0'),_0xeae6('0xb1'))[_0xeae6('0xb2')](_0xeae6('0xb3'));}else{return _0x1e9095[_0xeae6('0x29')](_0x28d15d)[_0xeae6('0x2b')](_0x42f6cb);}}})[_0xeae6('0x54')](handleError(_0x1e9095,null));};exports['addApplications']=function(_0x17c430,_0x19ffb4,_0x5cb31e){return db[_0xeae6('0x3f')]['findOne']({'where':{'id':_0x17c430[_0xeae6('0x62')]['id']}})['then'](handleEntityNotFound(_0x19ffb4,null))[_0xeae6('0x35')](function(_0x3abfc1){if(_0x3abfc1){return db[_0xeae6('0xb4')][_0xeae6('0xb5')](function(_0x284dbc){return db[_0xeae6('0x6f')][_0xeae6('0x36')]({'where':{'SmsAccountId':_0x17c430['params']['id']},'transaction':_0x284dbc})[_0xeae6('0x35')](function(_0x2cd180){var _0x33aaf9=_[_0xeae6('0x3e')](_0x17c430[_0xeae6('0x59')],function(_0x11fabe){_0x11fabe[_0xeae6('0x64')]=_0x17c430[_0xeae6('0x62')]['id'];return _0x11fabe;});return db[_0xeae6('0x6f')]['bulkCreate'](_0x33aaf9,{'transaction':_0x284dbc});});})[_0xeae6('0x35')](function(){return db[_0xeae6('0x6f')][_0xeae6('0xb6')]({'where':{'SmsAccountId':_0x17c430['params']['id']},'order':_0xeae6('0x73')});});}})[_0xeae6('0x35')](respondWithResult(_0x19ffb4,null))[_0xeae6('0x54')](handleError(_0x19ffb4,null));};exports['getApplications']=function(_0x18517e,_0x5156e2,_0x3e0367){var _0x47b425={};var _0x4c4e5c={};var _0x50a4c3;var _0x26d536;return db[_0xeae6('0x3f')][_0xeae6('0x66')]({'where':{'id':_0x18517e[_0xeae6('0x62')]['id']}})[_0xeae6('0x35')](handleEntityNotFound(_0x5156e2,null))['then'](function(_0x34b6d2){if(_0x34b6d2){_0x50a4c3=_0x34b6d2;_0x4c4e5c[_0xeae6('0x43')]=_[_0xeae6('0x45')](db[_0xeae6('0x6f')]['rawAttributes']);_0x4c4e5c[_0xeae6('0x44')]=_[_0xeae6('0x45')](_0x18517e[_0xeae6('0x44')]);_0x4c4e5c[_0xeae6('0x46')]=_[_0xeae6('0x56')](_0x4c4e5c['model'],_0x4c4e5c[_0xeae6('0x44')]);_0x47b425[_0xeae6('0x47')]=_[_0xeae6('0x56')](_0x4c4e5c[_0xeae6('0x43')],qs[_0xeae6('0x48')](_0x18517e[_0xeae6('0x44')][_0xeae6('0x48')]));_0x47b425['attributes']=_0x47b425[_0xeae6('0x47')]['length']?_0x47b425[_0xeae6('0x47')]:_0x4c4e5c[_0xeae6('0x43')];_0x47b425[_0xeae6('0xb7')]=qs[_0xeae6('0x4b')](_0x18517e['query']['sort']);_0x47b425['where']=qs[_0xeae6('0x46')](_[_0xeae6('0x4d')](_0x18517e[_0xeae6('0x44')],_0x4c4e5c[_0xeae6('0x46')]));if(_0x18517e[_0xeae6('0x44')][_0xeae6('0x4e')]){_0x47b425[_0xeae6('0x4c')]=_[_0xeae6('0x4f')](_0x47b425[_0xeae6('0x4c')],{'$or':_['map'](_0x47b425[_0xeae6('0x47')],function(_0x124423){var _0x13a06f={};_0x13a06f[_0x124423]={'$like':'%'+_0x18517e['query']['filter']+'%'};return _0x13a06f;})});}_0x47b425=_[_0xeae6('0x4f')]({},_0x47b425,_0x18517e[_0xeae6('0x67')]);return _0x50a4c3[_0xeae6('0xb8')](_0x47b425);}})[_0xeae6('0x35')](function(_0x717fa8){if(_0x717fa8){_0x26d536=_0x717fa8[_0xeae6('0x57')];if(!_0x18517e[_0xeae6('0x44')][_0xeae6('0x49')](_0xeae6('0x4a'))){_0x47b425[_0xeae6('0x2d')]=qs[_0xeae6('0x2d')](_0x18517e['query']['limit']);_0x47b425[_0xeae6('0x2c')]=qs[_0xeae6('0x2c')](_0x18517e[_0xeae6('0x44')][_0xeae6('0x2c')]);}return _0x50a4c3['getApplications'](_0x47b425);}})[_0xeae6('0x35')](function(_0x170ede){if(_0x170ede){return _0x170ede?{'count':_0x26d536,'rows':_0x170ede}:null;}})[_0xeae6('0x35')](respondWithResult(_0x5156e2,null))['catch'](handleError(_0x5156e2,null));};exports[_0xeae6('0xb9')]=function(_0x304b8c,_0xba52e,_0x23b2d9){var _0xc4f3e8={'raw':![],'where':{}};var _0x51e4b8={};var _0x473f57={'count':0x0,'rows':[]};return db[_0xeae6('0x3f')][_0xeae6('0x66')]({'where':{'id':_0x304b8c[_0xeae6('0x62')]['id']}})[_0xeae6('0x35')](handleEntityNotFound(_0xba52e,null))[_0xeae6('0x35')](function(_0x50c42d){if(_0x50c42d){_0x51e4b8[_0xeae6('0x43')]=_[_0xeae6('0x45')](db[_0xeae6('0x9c')]['rawAttributes']);_0x51e4b8[_0xeae6('0x44')]=_[_0xeae6('0x45')](_0x304b8c[_0xeae6('0x44')]);_0x51e4b8[_0xeae6('0x46')]=_['intersection'](_0x51e4b8[_0xeae6('0x43')],_0x51e4b8['query']);_0xc4f3e8[_0xeae6('0x47')]=_[_0xeae6('0x56')](_0x51e4b8[_0xeae6('0x43')],qs['fields'](_0x304b8c[_0xeae6('0x44')][_0xeae6('0x48')]));_0xc4f3e8['attributes']=_0xc4f3e8[_0xeae6('0x47')][_0xeae6('0x57')]?_0xc4f3e8[_0xeae6('0x47')]:_0x51e4b8['model'];if(!_0x304b8c[_0xeae6('0x44')]['hasOwnProperty']('nolimit')){_0xc4f3e8[_0xeae6('0x2d')]=qs[_0xeae6('0x2d')](_0x304b8c[_0xeae6('0x44')]['limit']);_0xc4f3e8['offset']=qs['offset'](_0x304b8c[_0xeae6('0x44')]['offset']);}_0xc4f3e8['order']=qs['sort'](_0x304b8c[_0xeae6('0x44')][_0xeae6('0x4b')]);_0xc4f3e8[_0xeae6('0x4c')]=qs[_0xeae6('0x46')](_[_0xeae6('0x4d')](_0x304b8c[_0xeae6('0x44')],_0x51e4b8[_0xeae6('0x46')]));_0xc4f3e8['where']['SmsAccountId']=_0x50c42d['id'];if(_0x304b8c[_0xeae6('0x44')][_0xeae6('0x4e')]){_0xc4f3e8[_0xeae6('0x4c')]=_[_0xeae6('0x4f')](_0xc4f3e8[_0xeae6('0x4c')],{'$or':_[_0xeae6('0x3e')](_0xc4f3e8['attributes'],function(_0x4ba212){var _0x3d9407={};_0x3d9407[_0x4ba212]={'$like':'%'+_0x304b8c[_0xeae6('0x44')]['filter']+'%'};return _0x3d9407;})});}_0xc4f3e8=_[_0xeae6('0x4f')]({},_0xc4f3e8,_0x304b8c[_0xeae6('0x67')]);return db[_0xeae6('0x9c')][_0xeae6('0x2f')]({'where':_0xc4f3e8[_0xeae6('0x4c')]})['then'](function(_0x4188c1){_0x473f57[_0xeae6('0x2f')]=_0x4188c1;if(_0x304b8c[_0xeae6('0x44')][_0xeae6('0x51')]){_0xc4f3e8['include']=[{'model':db[_0xeae6('0x76')],'as':'Contact','required':![]},{'model':db[_0xeae6('0xa7')],'as':_0xeae6('0xba'),'attributes':[_0xeae6('0x3a'),'fullname',_0xeae6('0xbb')],'required':![]},{'model':db[_0xeae6('0xbc')],'as':_0xeae6('0xbd'),'attributes':['id','name',_0xeae6('0xbe')],'where':_0x304b8c[_0xeae6('0x44')]['tag']?{'id':_0x304b8c[_0xeae6('0x44')]['tag']}:undefined,'required':_0x304b8c['query'][_0xeae6('0xbf')]?!![]:![]}];}return db['SmsInteraction'][_0xeae6('0x53')](_0xc4f3e8);})[_0xeae6('0x35')](function(_0x44a6ad){_0x473f57[_0xeae6('0x6d')]=_0x44a6ad;return _0x473f57;});}})[_0xeae6('0x35')](respondWithFilteredResult(_0xba52e,_0xc4f3e8))[_0xeae6('0x54')](handleError(_0xba52e,null));};exports[_0xeae6('0xb2')]=function(_0x13a35c,_0x48d164,_0x3321c5){var _0x1e5028,_0x4f2cef,_0x16f7d4;if(_['isNil'](_0x13a35c['body'][_0xeae6('0x59')])||_0x13a35c['body'][_0xeae6('0x59')]===''){throw new db[(_0xeae6('0x90'))][(_0xeae6('0x91'))](_0xeae6('0x92'));}if(_[_0xeae6('0x8f')](_0x13a35c[_0xeae6('0x59')]['to'])){throw new db['Sequelize'][(_0xeae6('0x91'))](_0xeae6('0xc0'));}_0x1e5028=_0x13a35c[_0xeae6('0x59')]['to'];return db[_0xeae6('0x3f')][_0xeae6('0x5e')]({'where':{'id':_0x13a35c[_0xeae6('0x62')]['id']},'include':[{'model':db[_0xeae6('0x96')],'as':_0xeae6('0xc1'),'include':[{'model':db[_0xeae6('0x76')],'as':_0xeae6('0x9a'),'where':{'mobile':_0x1e5028},'limit':0x1,'order':[[_0xeae6('0x7a'),'DESC']]}]}]})[_0xeae6('0x35')](handleEntityNotFound(_0x48d164,null))[_0xeae6('0x35')](function(_0x3d98f3){if(_0x3d98f3&&_0x3d98f3['List']){_0x4f2cef=_0x3d98f3[_0xeae6('0x37')]({'plain':!![]});if(_0x4f2cef[_0xeae6('0xc1')]&&_0x4f2cef[_0xeae6('0xc1')][_0xeae6('0x9a')][_0xeae6('0x57')]){return _0x4f2cef[_0xeae6('0xc1')]['Contacts'][0x0];}return db[_0xeae6('0x76')][_0xeae6('0x58')](_['defaults'](_0x13a35c[_0xeae6('0x59')],{'firstName':_0x1e5028,'mobile':_0x1e5028,'phone':_0x1e5028,'ListId':_0x4f2cef['ListId']}));}})[_0xeae6('0x35')](handleEntityNotFound(_0x48d164,null))[_0xeae6('0x35')](function(_0x574e08){if(_0x574e08){_0x16f7d4=_0x574e08;return db['SmsInteraction'][_0xeae6('0x5e')]({'where':{'ContactId':_0x16f7d4['id'],'closed':![],'SmsAccountId':_0x4f2cef['id']}})[_0xeae6('0x35')](function(_0x358c6b){if(_0x358c6b){return[_0x358c6b,![]];}return db['SmsInteraction'][_0xeae6('0x58')]({'UserId':_0x13a35c['user']['id'],'ContactId':_0x16f7d4['id'],'SmsAccountId':_0x4f2cef['id'],'phone':_0x1e5028,'firstMsgDirection':_0xeae6('0xc2'),'Messages':[_['merge'](_0x13a35c[_0xeae6('0x59')],{'read':![],'body':_0x13a35c[_0xeae6('0x59')][_0xeae6('0x59')],'phone':_0x1e5028,'SmsAccountId':_0x4f2cef['id'],'UserId':_0x13a35c[_0xeae6('0x5a')]['id'],'ContactId':_0x16f7d4['id']})]},{'include':[{'model':db[_0xeae6('0xa4')],'as':_0xeae6('0xc3')}]})[_0xeae6('0x35')](function(_0x56e224){return[_0x56e224,!![]];});});}})['spread'](function(_0x40ec2d,_0x552542){if(_0x552542){return _0x40ec2d;}return db[_0xeae6('0xa4')][_0xeae6('0x58')](_['merge'](_0x13a35c[_0xeae6('0x59')],{'read':![],'body':_0x13a35c[_0xeae6('0x59')][_0xeae6('0x59')],'phone':_0x1e5028,'SmsAccountId':_0x4f2cef['id'],'SmsInteractionId':_0x40ec2d['id'],'UserId':_0x13a35c['user']['id'],'ContactId':_0x16f7d4['id']}))['then'](function(_0x4ab526){_0x40ec2d['dataValues'][_0xeae6('0xc3')]=[];_0x40ec2d[_0xeae6('0xc4')][_0xeae6('0xc3')][_0xeae6('0xc5')](_0x4ab526[_0xeae6('0xc4')]);return _0x40ec2d;});})[_0xeae6('0x35')](respondWithResult(_0x48d164,null))['catch'](handleError(_0x48d164,null));};exports[_0xeae6('0x29')]=function(_0x5ed92c,_0x4565c7,_0x27dcd7){if(_0x5ed92c[_0xeae6('0x59')]['id']){delete _0x5ed92c['body']['id'];}var _0x55a179,_0x330fc4,_0x9f2ca4;return db[_0xeae6('0x3f')][_0xeae6('0x5e')]({'where':{'id':_0x5ed92c[_0xeae6('0x62')]['id']}})[_0xeae6('0x35')](handleEntityNotFound(_0x4565c7,null))['then'](function(_0x1ab9fd){if(_0x1ab9fd){_0x9f2ca4=_0x1ab9fd;logger[_0xeae6('0xaf')](_0xeae6('0xad'),_0xeae6('0x29'),_0xeae6('0xc6'),_0x1ab9fd[_0xeae6('0x42')],util[_0xeae6('0xc7')](_0x5ed92c[_0xeae6('0x59')],{'showHidden':![],'depth':null}));switch(_0x1ab9fd['type']){case _0xeae6('0x81'):if(_0x5ed92c[_0xeae6('0x59')]['skebby_dispatch_id']&&_0x5ed92c[_0xeae6('0x59')][_0xeae6('0x29')]){_0x330fc4=_0x5ed92c[_0xeae6('0x59')][_0xeae6('0x29')];return db[_0xeae6('0xa4')][_0xeae6('0x5e')]({'where':{'messageId':_0x5ed92c[_0xeae6('0x59')][_0xeae6('0xc8')]}});}break;case _0xeae6('0xc9'):if(_0x5ed92c[_0xeae6('0x59')][_0xeae6('0xca')]&&_0x5ed92c[_0xeae6('0x59')][_0xeae6('0xcb')]){_0x330fc4=_0x5ed92c[_0xeae6('0x59')][_0xeae6('0xcb')];return db[_0xeae6('0xa4')][_0xeae6('0x5e')]({'where':{'messageId':_0x5ed92c[_0xeae6('0x59')][_0xeae6('0xca')]}});}break;case _0xeae6('0x83'):if(_0x5ed92c[_0xeae6('0x59')][_0xeae6('0x84')]&&_0x5ed92c[_0xeae6('0x59')]['status_code']){_0x330fc4=_0x5ed92c[_0xeae6('0x59')]['status_code'];return db['SmsMessage'][_0xeae6('0x5e')]({'where':{'messageId':_0x5ed92c[_0xeae6('0x59')]['message_id']}});}break;case _0xeae6('0x87'):var _0x3f838e=_0x5ed92c[_0xeae6('0x59')][_0xeae6('0x88')][0x0];if(_0x3f838e[_0xeae6('0x80')]&&_0x3f838e[_0xeae6('0x29')][_0xeae6('0xcc')]===_0xeae6('0xcd')){_0x330fc4=_0x3f838e[_0xeae6('0x29')][_0xeae6('0xcc')];return db['SmsMessage'][_0xeae6('0x5e')]({'where':{'messageId':_0x3f838e[_0xeae6('0x80')]}});}break;case _0xeae6('0x8b'):if(_0x5ed92c[_0xeae6('0x59')]['messageId']&&_0x5ed92c[_0xeae6('0x59')][_0xeae6('0x29')]){_0x330fc4=_0x5ed92c['body'][_0xeae6('0x29')];return db[_0xeae6('0xa4')]['find']({'where':{'messageId':_0x5ed92c[_0xeae6('0x59')][_0xeae6('0x80')]}});}break;case _0xeae6('0xce'):if(_0x5ed92c[_0xeae6('0x59')][0x0]['message']['id']){_0x330fc4=_0x5ed92c[_0xeae6('0x59')][0x0][_0xeae6('0x42')];return db[_0xeae6('0xa4')][_0xeae6('0x5e')]({'where':{'messageId':_0x5ed92c[_0xeae6('0x59')][0x0][_0xeae6('0x25')]['id']}});}break;case _0xeae6('0x8e'):if(_0x5ed92c['body'][_0xeae6('0xcf')]&&_0x5ed92c[_0xeae6('0x59')]['status']){_0x330fc4=_0x5ed92c[_0xeae6('0x59')][_0xeae6('0x29')];return db[_0xeae6('0xa4')][_0xeae6('0x5e')]({'where':{'messageId':_0x5ed92c['body']['redif']}});}break;}}})[_0xeae6('0x35')](handleEntityNotFound(_0x4565c7,null))[_0xeae6('0x35')](function(_0x162f6b){if(_0x162f6b){_0x55a179=_0x162f6b;switch(_0x9f2ca4[_0xeae6('0x42')]){case _0xeae6('0x81'):if(_0x330fc4===_0xeae6('0xcd')){return _0x55a179[_0xeae6('0x34')]({'read':!![]});}else{logger[_0xeae6('0x24')](_0xeae6('0xad'),'status',_0xeae6('0x81'),util['inspect'](_0x5ed92c[_0xeae6('0x59')],{'showHidden':![],'depth':null}));}break;case _0xeae6('0xc9'):if(_0x330fc4==='1'){return _0x55a179['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status','skebby',util[_0xeae6('0xc7')](_0x5ed92c[_0xeae6('0x59')],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x5ed92c[_0xeae6('0x59')][_0xeae6('0xd0')]&&_0x330fc4>=0xc8&&_0x330fc4<=0xce){return _0x55a179[_0xeae6('0x34')]({'read':!![]});}else{logger[_0xeae6('0x24')](_0xeae6('0xad'),_0xeae6('0x29'),_0xeae6('0x83'),util['inspect'](_0x5ed92c[_0xeae6('0x59')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x13724b=_0x5ed92c[_0xeae6('0x59')][_0xeae6('0x88')][0x0];if(_0x13724b[_0xeae6('0x29')]['groupName']===_0xeae6('0xcd')){return _0x55a179['update']({'read':!![]});}else{logger[_0xeae6('0x24')](_0xeae6('0xad'),'status','infobip',util[_0xeae6('0xc7')](_0x5ed92c[_0xeae6('0x59')],{'showHidden':![],'depth':null}));}break;case _0xeae6('0x8b'):if(_0x330fc4=='DELIVERED_TO_GATEWAY'||_0x330fc4==_0xeae6('0xd1')){return _0x55a179['update']({'read':!![]});}else{logger['error'](_0xeae6('0xad'),_0xeae6('0x29'),_0xeae6('0x8b'),util[_0xeae6('0xc7')](_0x5ed92c['body'],{'showHidden':![],'depth':null}));}break;case _0xeae6('0xce'):if(_0x330fc4==_0xeae6('0xd2')){return _0x55a179[_0xeae6('0x34')]({'read':!![]});}else{logger[_0xeae6('0x24')](_0xeae6('0xad'),'status',_0xeae6('0xce'),util['inspect'](_0x5ed92c[_0xeae6('0x59')],{'showHidden':![],'depth':null}));}break;case _0xeae6('0x8e'):if(_0x330fc4==='DELIVRD'||_0x330fc4===_0xeae6('0xd3')){return _0x55a179[_0xeae6('0x34')]({'read':!![]});}else{logger[_0xeae6('0x24')](_0xeae6('0xad'),_0xeae6('0x29'),'intelepeer',util['inspect'](_0x5ed92c[_0xeae6('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x55a179;}})[_0xeae6('0x35')](respondWithResult(_0x4565c7,null))[_0xeae6('0x54')](handleError(_0x4565c7,null));};exports[_0xeae6('0xd4')]=function(_0x1e5099,_0x242302,_0x3717ef){var _0x1c12ec,_0x137d6b,_0x1ed945;return db[_0xeae6('0x3f')]['find']({'where':{'id':_0x1e5099['params']['id']}})[_0xeae6('0x35')](handleEntityNotFound(_0x242302,null))[_0xeae6('0x35')](function(_0xd577fe){if(_0xd577fe){_0x1ed945=_0xd577fe;logger[_0xeae6('0xaf')](_0xeae6('0xad'),_0xeae6('0x29'),_0xeae6('0xc6'),_0xd577fe['type'],util[_0xeae6('0xc7')](_0x1e5099[_0xeae6('0x44')],{'showHidden':![],'depth':null}));switch(_0xd577fe[_0xeae6('0x42')]){case _0xeae6('0x89'):if(_0x1e5099[_0xeae6('0x44')]['message-id']&&_0x1e5099[_0xeae6('0x44')][_0xeae6('0xd5')]){_0x137d6b=_0x1e5099[_0xeae6('0x44')]['state'];return db[_0xeae6('0xa4')][_0xeae6('0x5e')]({'where':{'messageId':_0x1e5099[_0xeae6('0x44')][_0xeae6('0xd6')]}});}break;}}})[_0xeae6('0x35')](handleEntityNotFound(_0x242302,null))[_0xeae6('0x35')](function(_0x3f9c27){if(_0x3f9c27){_0x1c12ec=_0x3f9c27;switch(_0x1ed945[_0xeae6('0x42')]){case _0xeae6('0x89'):if(_0x137d6b==='2'||_0x137d6b==='6'){return _0x1c12ec[_0xeae6('0x34')]({'read':!![]});}else{logger['error'](_0xeae6('0xad'),_0xeae6('0x29'),'csc',util['inspect'](_0x1e5099[_0xeae6('0x44')],{'showHidden':![],'depth':null}));};break;}return _0x1c12ec;}})['then'](respondWithResult(_0x242302,null))[_0xeae6('0x54')](handleError(_0x242302,null));};exports[_0xeae6('0xd7')]=function(_0x1c1db9,_0x34a884,_0x158a22){return db[_0xeae6('0x3f')][_0xeae6('0x5e')]({'where':{'id':_0x1c1db9[_0xeae6('0x62')]['id']}})[_0xeae6('0x35')](handleEntityNotFound(_0x34a884,null))[_0xeae6('0x35')](function(_0x12db5d){if(_0x12db5d){return _0x12db5d[_0xeae6('0xd7')](_0x1c1db9[_0xeae6('0x59')]['ids'],_[_0xeae6('0x99')](_0x1c1db9['body'],[_0xeae6('0x69'),'id'])||{})[_0xeae6('0x9d')](function(_0x456dae){for(var _0x507086=0x0;_0x507086<_0x1c1db9['body'][_0xeae6('0x69')][_0xeae6('0x57')];_0x507086+=0x1){socket[_0xeae6('0xd8')](_0xeae6('0xd9'),{'UserId':Number(_0x1c1db9[_0xeae6('0x59')]['ids'][_0x507086]),'SmsAccountId':Number(_0x1c1db9[_0xeae6('0x62')]['id'])});}return _0x456dae;});}})[_0xeae6('0x35')](respondWithResult(_0x34a884,null))[_0xeae6('0x54')](handleError(_0x34a884,null));};exports[_0xeae6('0xda')]=function(_0x4f579a,_0xef8f65,_0x495089){return db[_0xeae6('0x3f')][_0xeae6('0x5e')]({'where':{'id':_0x4f579a[_0xeae6('0x62')]['id']}})[_0xeae6('0x35')](handleEntityNotFound(_0xef8f65,null))[_0xeae6('0x35')](function(_0xbe0fb9){if(_0xbe0fb9){return _0xbe0fb9[_0xeae6('0xda')](_0x4f579a[_0xeae6('0x44')]['ids'])['then'](function(){if(_['isArray'](_0x4f579a[_0xeae6('0x44')][_0xeae6('0x69')])){for(var _0xa88bd7=0x0;_0xa88bd7<_0x4f579a[_0xeae6('0x44')][_0xeae6('0x69')][_0xeae6('0x57')];_0xa88bd7+=0x1){socket['emit'](_0xeae6('0xdb'),{'UserId':Number(_0x4f579a[_0xeae6('0x44')][_0xeae6('0x69')][_0xa88bd7]),'SmsAccountId':Number(_0x4f579a['params']['id'])});}}else{socket[_0xeae6('0xd8')](_0xeae6('0xdb'),{'UserId':Number(_0x4f579a['query']['ids']),'SmsAccountId':Number(_0x4f579a['params']['id'])});}});}})[_0xeae6('0x35')](respondWithStatusCode(_0xef8f65,null))[_0xeae6('0x54')](handleError(_0xef8f65,null));};exports[_0xeae6('0xdc')]=function(_0x2d56d2,_0x1d0e2b,_0x3bc0a2){var _0x17f7fe={};var _0xd5b56={};var _0x4a3106;var _0x40eb92;return db[_0xeae6('0x3f')][_0xeae6('0x66')]({'where':{'id':_0x2d56d2[_0xeae6('0x62')]['id']}})[_0xeae6('0x35')](handleEntityNotFound(_0x1d0e2b,null))[_0xeae6('0x35')](function(_0x484cc4){if(_0x484cc4){_0x4a3106=_0x484cc4;_0xd5b56[_0xeae6('0x43')]=_['keys'](db[_0xeae6('0xa7')][_0xeae6('0x40')]);_0xd5b56[_0xeae6('0x44')]=_[_0xeae6('0x45')](_0x2d56d2['query']);_0xd5b56['filters']=_['intersection'](_0xd5b56[_0xeae6('0x43')],_0xd5b56['query']);_0x17f7fe[_0xeae6('0x47')]=_[_0xeae6('0x56')](_0xd5b56[_0xeae6('0x43')],qs['fields'](_0x2d56d2[_0xeae6('0x44')][_0xeae6('0x48')]));_0x17f7fe[_0xeae6('0x47')]=_0x17f7fe[_0xeae6('0x47')][_0xeae6('0x57')]?_0x17f7fe[_0xeae6('0x47')]:_0xd5b56[_0xeae6('0x43')];_0x17f7fe[_0xeae6('0xb7')]=qs[_0xeae6('0x4b')](_0x2d56d2[_0xeae6('0x44')][_0xeae6('0x4b')]);_0x17f7fe['where']=qs[_0xeae6('0x46')](_[_0xeae6('0x4d')](_0x2d56d2[_0xeae6('0x44')],_0xd5b56['filters']));if(_0x2d56d2['query'][_0xeae6('0x4e')]){_0x17f7fe['where']=_[_0xeae6('0x4f')](_0x17f7fe[_0xeae6('0x4c')],{'$or':_[_0xeae6('0x3e')](_0x17f7fe['attributes'],function(_0x49543c){var _0x678813={};_0x678813[_0x49543c]={'$like':'%'+_0x2d56d2[_0xeae6('0x44')][_0xeae6('0x4e')]+'%'};return _0x678813;})});}_0x17f7fe=_[_0xeae6('0x4f')]({},_0x17f7fe,_0x2d56d2['options']);return _0x4a3106[_0xeae6('0xdc')](_0x17f7fe);}})['then'](function(_0x27dbaa){if(_0x27dbaa){_0x40eb92=_0x27dbaa[_0xeae6('0x57')];if(!_0x2d56d2[_0xeae6('0x44')][_0xeae6('0x49')](_0xeae6('0x4a'))){_0x17f7fe[_0xeae6('0x2d')]=qs[_0xeae6('0x2d')](_0x2d56d2[_0xeae6('0x44')][_0xeae6('0x2d')]);_0x17f7fe['offset']=qs[_0xeae6('0x2c')](_0x2d56d2[_0xeae6('0x44')]['offset']);}return _0x4a3106['getAgents'](_0x17f7fe);}})[_0xeae6('0x35')](function(_0xe7cfc7){if(_0xe7cfc7){return _0xe7cfc7?{'count':_0x40eb92,'rows':_0xe7cfc7}:null;}})['then'](respondWithResult(_0x1d0e2b,null))[_0xeae6('0x54')](handleError(_0x1d0e2b,null));};
\ No newline at end of file
index 67f58f9..539d3cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b8f=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsAccount'];(function(_0xf01193,_0x5f4398){var _0x3d1f8c=function(_0x4befdb){while(--_0x4befdb){_0xf01193['push'](_0xf01193['shift']());}};_0x3d1f8c(++_0x5f4398);}(_0x1b8f,0x15d));var _0xf1b8=function(_0x578264,_0x5c333d){_0x578264=_0x578264-0x0;var _0x3b1c13=_0x1b8f[_0x578264];return _0x3b1c13;};'use strict';var EventEmitter=require(_0xf1b8('0x0'));var SmsAccount=require(_0xf1b8('0x1'))['db'][_0xf1b8('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xf1b8('0x3')](0x0);var events={'afterCreate':_0xf1b8('0x4'),'afterUpdate':_0xf1b8('0x5'),'afterDestroy':_0xf1b8('0x6')};function emitEvent(_0x30ab39){return function(_0x32f97f,_0x1217f1,_0x50eb3a){SmsAccountEvents[_0xf1b8('0x7')](_0x30ab39+':'+_0x32f97f['id'],_0x32f97f);SmsAccountEvents['emit'](_0x30ab39,_0x32f97f);_0x50eb3a(null);};}for(var e in events){if(events[_0xf1b8('0x8')](e)){var event=events[e];SmsAccount[_0xf1b8('0x9')](e,emitEvent(event));}}module[_0xf1b8('0xa')]=SmsAccountEvents;
\ No newline at end of file
+var _0xab91=['hasOwnProperty','exports','events','../../mysqldb','SmsAccount','save','remove','emit'];(function(_0x483430,_0x42af86){var _0x393080=function(_0x244a7b){while(--_0x244a7b){_0x483430['push'](_0x483430['shift']());}};_0x393080(++_0x42af86);}(_0xab91,0x1f2));var _0x1ab9=function(_0x5e6cea,_0x24b02a){_0x5e6cea=_0x5e6cea-0x0;var _0x55a315=_0xab91[_0x5e6cea];return _0x55a315;};'use strict';var EventEmitter=require(_0x1ab9('0x0'));var SmsAccount=require(_0x1ab9('0x1'))['db'][_0x1ab9('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1ab9('0x3'),'afterUpdate':'update','afterDestroy':_0x1ab9('0x4')};function emitEvent(_0x97bc81){return function(_0x57383e,_0x1ef14e,_0x2d8378){SmsAccountEvents[_0x1ab9('0x5')](_0x97bc81+':'+_0x57383e['id'],_0x57383e);SmsAccountEvents['emit'](_0x97bc81,_0x57383e);_0x2d8378(null);};}for(var e in events){if(events[_0x1ab9('0x6')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x1ab9('0x7')]=SmsAccountEvents;
\ No newline at end of file
index 4840b42..36436a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c99=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsAccount.attributes','exports','define','SmsAccount','lodash','util','../../config/logger'];(function(_0x4abe54,_0x50d361){var _0x3698f5=function(_0x89301d){while(--_0x89301d){_0x4abe54['push'](_0x4abe54['shift']());}};_0x3698f5(++_0x50d361);}(_0x5c99,0x97));var _0x95c9=function(_0x2bf799,_0x3d81dc){_0x2bf799=_0x2bf799-0x0;var _0x220479=_0x5c99[_0x2bf799];return _0x220479;};'use strict';var _=require(_0x95c9('0x0'));var util=require(_0x95c9('0x1'));var logger=require(_0x95c9('0x2'))(_0x95c9('0x3'));var moment=require(_0x95c9('0x4'));var BPromise=require(_0x95c9('0x5'));var rp=require(_0x95c9('0x6'));var fs=require('fs');var path=require(_0x95c9('0x7'));var rimraf=require(_0x95c9('0x8'));var config=require(_0x95c9('0x9'));var attributes=require(_0x95c9('0xa'));module[_0x95c9('0xb')]=function(_0xd9eb80,_0x20c55b){return _0xd9eb80[_0x95c9('0xc')](_0x95c9('0xd'),attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xec60=['request-promise','path','rimraf','../../config/environment','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','util','../../config/logger','moment','bluebird'];(function(_0x57b3df,_0x445081){var _0x206656=function(_0x16aeb3){while(--_0x16aeb3){_0x57b3df['push'](_0x57b3df['shift']());}};_0x206656(++_0x445081);}(_0xec60,0x1f3));var _0x0ec6=function(_0xbb95f8,_0x519c8c){_0xbb95f8=_0xbb95f8-0x0;var _0x155ae9=_0xec60[_0xbb95f8];return _0x155ae9;};'use strict';var _=require(_0x0ec6('0x0'));var util=require(_0x0ec6('0x1'));var logger=require(_0x0ec6('0x2'))('api');var moment=require(_0x0ec6('0x3'));var BPromise=require(_0x0ec6('0x4'));var rp=require(_0x0ec6('0x5'));var fs=require('fs');var path=require(_0x0ec6('0x6'));var rimraf=require(_0x0ec6('0x7'));var config=require(_0x0ec6('0x8'));var attributes=require(_0x0ec6('0x9'));module[_0x0ec6('0xa')]=function(_0x340af2,_0x5202db){return _0x340af2[_0x0ec6('0xb')](_0x0ec6('0xc'),attributes,{'tableName':_0x0ec6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c01eb13..3faac1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60fe=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','./smsAccount.socket','register','request','then','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','SmsAccount,\x20%s,\x20%s','message','info','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','attributes','include','model','map','lodash'];(function(_0x2ba150,_0x839b3e){var _0x17227a=function(_0x307f6b){while(--_0x307f6b){_0x2ba150['push'](_0x2ba150['shift']());}};_0x17227a(++_0x839b3e);}(_0x60fe,0xb3));var _0xe60f=function(_0x42e675,_0x4f24ef){_0x42e675=_0x42e675-0x0;var _0x1e18b9=_0x60fe[_0x42e675];return _0x1e18b9;};'use strict';var _=require(_0xe60f('0x0'));var util=require(_0xe60f('0x1'));var moment=require(_0xe60f('0x2'));var BPromise=require(_0xe60f('0x3'));var rs=require(_0xe60f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe60f('0x5'))['db'];var utils=require(_0xe60f('0x6'));var logger=require(_0xe60f('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xe60f('0x8'));var client=jayson[_0xe60f('0x9')][_0xe60f('0xa')]({'port':0x232a});config[_0xe60f('0xb')]=_[_0xe60f('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe60f('0xb')]));require(_0xe60f('0xd'))[_0xe60f('0xe')](socket);function respondWithRpcPromise(_0x223213,_0x1ccae7,_0x514337){return new BPromise(function(_0x65a642,_0x163ecd){return client[_0xe60f('0xf')](_0x223213,_0x514337)[_0xe60f('0x10')](function(_0x5cfcfb){logger['info']('SmsAccount,\x20%s,\x20%s',_0x1ccae7,_0xe60f('0x11'));logger[_0xe60f('0x12')](_0xe60f('0x13'),_0x1ccae7,'request\x20sent',JSON[_0xe60f('0x14')](_0x5cfcfb));if(_0x5cfcfb[_0xe60f('0x15')]){if(_0x5cfcfb[_0xe60f('0x15')]['code']===0x1f4){logger[_0xe60f('0x15')](_0xe60f('0x16'),_0x1ccae7,_0x5cfcfb[_0xe60f('0x15')][_0xe60f('0x17')]);return _0x163ecd(_0x5cfcfb['error'][_0xe60f('0x17')]);}logger['error'](_0xe60f('0x16'),_0x1ccae7,_0x5cfcfb[_0xe60f('0x15')][_0xe60f('0x17')]);return _0x65a642(_0x5cfcfb[_0xe60f('0x15')]['message']);}else{logger[_0xe60f('0x18')]('SmsAccount,\x20%s,\x20%s',_0x1ccae7,'request\x20sent');_0x65a642(_0x5cfcfb[_0xe60f('0x19')]['message']);}})[_0xe60f('0x1a')](function(_0x49c0f1){logger['error'](_0xe60f('0x16'),_0x1ccae7,_0x49c0f1);_0x163ecd(_0x49c0f1);});});}exports[_0xe60f('0x1b')]=function(_0x5c3b7a){var _0x1ae50c=this;return new Promise(function(_0x8a77b6,_0x29c38d){return db[_0xe60f('0x1c')][_0xe60f('0x1d')]({'raw':_0x5c3b7a[_0xe60f('0x1e')]?_0x5c3b7a[_0xe60f('0x1e')][_0xe60f('0x1f')]===undefined?!![]:![]:!![],'where':_0x5c3b7a[_0xe60f('0x1e')]?_0x5c3b7a[_0xe60f('0x1e')]['where']||null:null,'attributes':_0x5c3b7a[_0xe60f('0x1e')]?_0x5c3b7a[_0xe60f('0x1e')][_0xe60f('0x20')]||null:null,'include':_0x5c3b7a[_0xe60f('0x1e')]?_0x5c3b7a[_0xe60f('0x1e')]['include']?_['map'](_0x5c3b7a[_0xe60f('0x1e')][_0xe60f('0x21')],function(_0x4124d2){return{'model':db[_0x4124d2['model']],'as':_0x4124d2['as'],'attributes':_0x4124d2[_0xe60f('0x20')],'include':_0x4124d2[_0xe60f('0x21')]?_['map'](_0x4124d2[_0xe60f('0x21')],function(_0x558d86){return{'model':db[_0x558d86[_0xe60f('0x22')]],'as':_0x558d86['as'],'attributes':_0x558d86[_0xe60f('0x20')],'include':_0x558d86[_0xe60f('0x21')]?_[_0xe60f('0x23')](_0x558d86[_0xe60f('0x21')],function(_0x43b96b){return{'model':db[_0x43b96b[_0xe60f('0x22')]],'as':_0x43b96b['as'],'attributes':_0x43b96b[_0xe60f('0x20')]};}):[]};}):[]};}):[]:[]})[_0xe60f('0x10')](function(_0x2df995){logger[_0xe60f('0x18')](_0xe60f('0x1b'),_0x5c3b7a);logger[_0xe60f('0x12')]('ShowSmsAccount',_0x5c3b7a,JSON[_0xe60f('0x14')](_0x2df995));_0x8a77b6(_0x2df995);})[_0xe60f('0x1a')](function(_0x2fac10){logger[_0xe60f('0x15')](_0xe60f('0x1b'),_0x2fac10[_0xe60f('0x17')],_0x5c3b7a);_0x29c38d(_0x1ae50c['error'](0x1f4,_0x2fac10['message']));});});};
\ No newline at end of file
+var _0xff3a=['find','options','where','include','map','model','attributes','ShowSmsAccount','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','SmsAccount'];(function(_0x1d1fdf,_0x33ba5a){var _0x3521d6=function(_0x53281c){while(--_0x53281c){_0x1d1fdf['push'](_0x1d1fdf['shift']());}};_0x3521d6(++_0x33ba5a);}(_0xff3a,0x188));var _0xaff3=function(_0x31df81,_0xcfc5ac){_0x31df81=_0x31df81-0x0;var _0x1c9b04=_0xff3a[_0x31df81];return _0x1c9b04;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xaff3('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaff3('0x1'));var db=require(_0xaff3('0x2'))['db'];var utils=require(_0xaff3('0x3'));var logger=require(_0xaff3('0x4'))(_0xaff3('0x5'));var config=require(_0xaff3('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xaff3('0x7')][_0xaff3('0x8')]({'port':0x232a});config[_0xaff3('0x9')]=_[_0xaff3('0xa')](config[_0xaff3('0x9')],{'host':_0xaff3('0xb'),'port':0x18eb});var socket=require(_0xaff3('0xc'))(new Redis(config[_0xaff3('0x9')]));require('./smsAccount.socket')['register'](socket);function respondWithRpcPromise(_0x27a052,_0x55fd53,_0x3edc3b){return new BPromise(function(_0x513da7,_0x49ad7a){return client[_0xaff3('0xd')](_0x27a052,_0x3edc3b)['then'](function(_0x13aa63){logger[_0xaff3('0xe')](_0xaff3('0xf'),_0x55fd53,_0xaff3('0x10'));logger[_0xaff3('0x11')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x55fd53,_0xaff3('0x10'),JSON[_0xaff3('0x12')](_0x13aa63));if(_0x13aa63[_0xaff3('0x13')]){if(_0x13aa63[_0xaff3('0x13')][_0xaff3('0x14')]===0x1f4){logger[_0xaff3('0x13')](_0xaff3('0xf'),_0x55fd53,_0x13aa63[_0xaff3('0x13')][_0xaff3('0x15')]);return _0x49ad7a(_0x13aa63['error'][_0xaff3('0x15')]);}logger['error']('SmsAccount,\x20%s,\x20%s',_0x55fd53,_0x13aa63[_0xaff3('0x13')]['message']);return _0x513da7(_0x13aa63[_0xaff3('0x13')][_0xaff3('0x15')]);}else{logger[_0xaff3('0xe')](_0xaff3('0xf'),_0x55fd53,_0xaff3('0x10'));_0x513da7(_0x13aa63['result'][_0xaff3('0x15')]);}})[_0xaff3('0x16')](function(_0x1a5401){logger['error']('SmsAccount,\x20%s,\x20%s',_0x55fd53,_0x1a5401);_0x49ad7a(_0x1a5401);});});}exports['ShowSmsAccount']=function(_0x3e99f7){var _0x57d7be=this;return new Promise(function(_0x28a288,_0x2b9086){return db[_0xaff3('0x17')][_0xaff3('0x18')]({'raw':_0x3e99f7[_0xaff3('0x19')]?_0x3e99f7[_0xaff3('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x3e99f7['options']?_0x3e99f7['options'][_0xaff3('0x1a')]||null:null,'attributes':_0x3e99f7[_0xaff3('0x19')]?_0x3e99f7['options']['attributes']||null:null,'include':_0x3e99f7['options']?_0x3e99f7[_0xaff3('0x19')][_0xaff3('0x1b')]?_['map'](_0x3e99f7[_0xaff3('0x19')]['include'],function(_0x241f4e){return{'model':db[_0x241f4e['model']],'as':_0x241f4e['as'],'attributes':_0x241f4e['attributes'],'include':_0x241f4e[_0xaff3('0x1b')]?_[_0xaff3('0x1c')](_0x241f4e[_0xaff3('0x1b')],function(_0x3bc972){return{'model':db[_0x3bc972[_0xaff3('0x1d')]],'as':_0x3bc972['as'],'attributes':_0x3bc972['attributes'],'include':_0x3bc972['include']?_[_0xaff3('0x1c')](_0x3bc972[_0xaff3('0x1b')],function(_0x20f84b){return{'model':db[_0x20f84b['model']],'as':_0x20f84b['as'],'attributes':_0x20f84b[_0xaff3('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x240864){logger[_0xaff3('0xe')]('ShowSmsAccount',_0x3e99f7);logger['debug'](_0xaff3('0x1f'),_0x3e99f7,JSON[_0xaff3('0x12')](_0x240864));_0x28a288(_0x240864);})[_0xaff3('0x16')](function(_0x59ca99){logger['error']('ShowSmsAccount',_0x59ca99[_0xaff3('0x15')],_0x3e99f7);_0x2b9086(_0x57d7be[_0xaff3('0x13')](0x1f4,_0x59ca99[_0xaff3('0x15')]));});});};
\ No newline at end of file
index d1aa937..ebe96af 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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'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 dbaf12b..879b9a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['Router','fs-extra','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x5130ba,_0x2cb7d8){var _0x3e199d=function(_0x52c2a9){while(--_0x52c2a9){_0x5130ba['push'](_0x5130ba['shift']());}};_0x3e199d(++_0x2cb7d8);}(_0x7217,0x19e));var _0x7721=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x7217[_0x139a3c];return _0x2b375b;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0xd')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);module[_0x7721('0x12')]=router;
\ No newline at end of file
+var _0x3e74=['path','connect-timeout','express','../../components/auth/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer'];(function(_0x6cbff6,_0x3b59f8){var _0x390e52=function(_0xff24a){while(--_0xff24a){_0x6cbff6['push'](_0x6cbff6['shift']());}};_0x390e52(++_0x3b59f8);}(_0x3e74,0x175));var _0x43e7=function(_0x4eb555,_0x5b0b27){_0x4eb555=_0x4eb555-0x0;var _0x1139e6=_0x3e74[_0x4eb555];return _0x1139e6;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0xc')]('/',auth[_0x43e7('0x8')](),controller['create']);router[_0x43e7('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x43e7('0xe')]);router[_0x43e7('0xf')]('/:id',auth[_0x43e7('0x8')](),controller['destroy']);module[_0x43e7('0x10')]=router;
\ No newline at end of file
index 4cb5339..76a8ece 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0824=['exports','STRING','TEXT','sequelize'];(function(_0x256452,_0x1e36a3){var _0x3bcfee=function(_0x3efd00){while(--_0x3efd00){_0x256452['push'](_0x256452['shift']());}};_0x3bcfee(++_0x1e36a3);}(_0x0824,0x1bb));var _0x4082=function(_0x42743a,_0x1cd9bd){_0x42743a=_0x42743a-0x0;var _0x4a56ae=_0x0824[_0x42743a];return _0x4a56ae;};'use strict';var Sequelize=require(_0x4082('0x0'));module[_0x4082('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x4082('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x4082('0x3')]()},'description':{'type':Sequelize[_0x4082('0x2')]},'interval':{'type':Sequelize[_0x4082('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x2171=['*,*,*,*','sequelize','exports','INTEGER','noop','TEXT','STRING'];(function(_0x46ae5a,_0x2a38d0){var _0x434986=function(_0x22735d){while(--_0x22735d){_0x46ae5a['push'](_0x46ae5a['shift']());}};_0x434986(++_0x2a38d0);}(_0x2171,0x16d));var _0x1217=function(_0x2db495,_0x3706a0){_0x2db495=_0x2db495-0x0;var _0x4b4da0=_0x2171[_0x2db495];return _0x4b4da0;};'use strict';var Sequelize=require(_0x1217('0x0'));module[_0x1217('0x1')]={'priority':{'type':Sequelize[_0x1217('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x1217('0x3')},'appdata':{'type':Sequelize[_0x1217('0x4')]()},'description':{'type':Sequelize[_0x1217('0x5')]},'interval':{'type':Sequelize[_0x1217('0x5')],'defaultValue':_0x1217('0x6')}};
\ No newline at end of file
index c1784ba..baa6d75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84bb=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','count','offset','limit','Content-Range','json','apply','reject','save','update','then','destroy','end','error','name','send','index','map','SmsApplication','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','find','eml-format','rimraf','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','../../config/license/hardware','../../config/logger'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x84bb,0x81));var _0xb84b=function(_0x5ceb6f,_0x28522e){_0x5ceb6f=_0x5ceb6f-0x0;var _0x5aa54f=_0x84bb[_0x5ceb6f];return _0x5aa54f;};'use strict';var emlformat=require(_0xb84b('0x0'));var rimraf=require(_0xb84b('0x1'));var zipdir=require(_0xb84b('0x2'));var jsonpatch=require(_0xb84b('0x3'));var rp=require('request-promise');var moment=require(_0xb84b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb84b('0x5'));var util=require(_0xb84b('0x6'));var path=require(_0xb84b('0x7'));var sox=require(_0xb84b('0x8'));var csv=require(_0xb84b('0x9'));var ejs=require(_0xb84b('0xa'));var fs=require('fs');var fs_extra=require(_0xb84b('0xb'));var _=require('lodash');var squel=require(_0xb84b('0xc'));var crypto=require(_0xb84b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb84b('0xe'));var toCsv=require('to-csv');var querystring=require(_0xb84b('0xf'));var Papa=require(_0xb84b('0x10'));var Redis=require(_0xb84b('0x11'));var authService=require(_0xb84b('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb84b('0x13'));var logger=require(_0xb84b('0x14'))(_0xb84b('0x15'));var utils=require(_0xb84b('0x16'));var config=require(_0xb84b('0x17'));var licenseUtil=require(_0xb84b('0x18'));var db=require(_0xb84b('0x19'))['db'];function respondWithStatusCode(_0x3f35bf,_0x2f814c){_0x2f814c=_0x2f814c||0xcc;return function(_0x248372){if(_0x248372){return _0x3f35bf[_0xb84b('0x1a')](_0x2f814c);}return _0x3f35bf['status'](_0x2f814c)['end']();};}function respondWithResult(_0x2d4821,_0x147d64){_0x147d64=_0x147d64||0xc8;return function(_0x2a118e){if(_0x2a118e){return _0x2d4821[_0xb84b('0x1b')](_0x147d64)['json'](_0x2a118e);}};}function respondWithFilteredResult(_0x42512f,_0x3d28c2){return function(_0x58bda1){if(_0x58bda1){var _0x42a634=typeof _0x3d28c2['offset']==='undefined'&&typeof _0x3d28c2['limit']===_0xb84b('0x1c');var _0x2f8ee9=_0x58bda1[_0xb84b('0x1d')];var _0xc83367=_0x42a634?0x0:_0x3d28c2[_0xb84b('0x1e')];var _0x3720f8=_0x42a634?_0x58bda1[_0xb84b('0x1d')]:_0x3d28c2[_0xb84b('0x1e')]+_0x3d28c2[_0xb84b('0x1f')];var _0x306405;if(_0x3720f8>=_0x2f8ee9){_0x3720f8=_0x2f8ee9;_0x306405=0xc8;}else{_0x306405=0xce;}_0x42512f[_0xb84b('0x1b')](_0x306405);return _0x42512f['set'](_0xb84b('0x20'),_0xc83367+'-'+_0x3720f8+'/'+_0x2f8ee9)[_0xb84b('0x21')](_0x58bda1);}return null;};}function patchUpdates(_0x302ffa){return function(_0x349370){try{jsonpatch[_0xb84b('0x22')](_0x349370,_0x302ffa,!![]);}catch(_0x4991e2){return BPromise[_0xb84b('0x23')](_0x4991e2);}return _0x349370[_0xb84b('0x24')]();};}function saveUpdates(_0x169421,_0x1802bf){return function(_0x43ed9b){if(_0x43ed9b){return _0x43ed9b[_0xb84b('0x25')](_0x169421)[_0xb84b('0x26')](function(_0x2be4d8){return _0x2be4d8;});}return null;};}function removeEntity(_0x125a06,_0x29fffc){return function(_0x5b7452){if(_0x5b7452){return _0x5b7452[_0xb84b('0x27')]()[_0xb84b('0x26')](function(){_0x125a06[_0xb84b('0x1b')](0xcc)[_0xb84b('0x28')]();});}};}function handleEntityNotFound(_0x4f5488,_0x5eaea8){return function(_0xe0a8dc){if(!_0xe0a8dc){_0x4f5488['sendStatus'](0x194);}return _0xe0a8dc;};}function handleError(_0x4e210b,_0x504805){_0x504805=_0x504805||0x1f4;return function(_0x6ddd5c){logger[_0xb84b('0x29')](_0x6ddd5c['stack']);if(_0x6ddd5c[_0xb84b('0x2a')]){delete _0x6ddd5c[_0xb84b('0x2a')];}_0x4e210b['status'](_0x504805)[_0xb84b('0x2b')](_0x6ddd5c);};}exports[_0xb84b('0x2c')]=function(_0x134278,_0x366dfd){var _0x10ac39={},_0x12bad5={},_0x19fa79={'count':0x0,'rows':[]};var _0x4fef95=_[_0xb84b('0x2d')](db[_0xb84b('0x2e')][_0xb84b('0x2f')],function(_0x1296de){return{'name':_0x1296de['fieldName'],'type':_0x1296de[_0xb84b('0x30')][_0xb84b('0x31')]};});_0x12bad5[_0xb84b('0x32')]=_[_0xb84b('0x2d')](_0x4fef95,_0xb84b('0x2a'));_0x12bad5[_0xb84b('0x33')]=_['keys'](_0x134278[_0xb84b('0x33')]);_0x12bad5[_0xb84b('0x34')]=_[_0xb84b('0x35')](_0x12bad5['model'],_0x12bad5[_0xb84b('0x33')]);_0x10ac39[_0xb84b('0x36')]=_['intersection'](_0x12bad5['model'],qs[_0xb84b('0x37')](_0x134278[_0xb84b('0x33')][_0xb84b('0x37')]));_0x10ac39[_0xb84b('0x36')]=_0x10ac39[_0xb84b('0x36')]['length']?_0x10ac39[_0xb84b('0x36')]:_0x12bad5[_0xb84b('0x32')];if(!_0x134278[_0xb84b('0x33')][_0xb84b('0x38')](_0xb84b('0x39'))){_0x10ac39[_0xb84b('0x1f')]=qs[_0xb84b('0x1f')](_0x134278['query'][_0xb84b('0x1f')]);_0x10ac39[_0xb84b('0x1e')]=qs[_0xb84b('0x1e')](_0x134278[_0xb84b('0x33')]['offset']);}_0x10ac39[_0xb84b('0x3a')]=qs['sort'](_0x134278[_0xb84b('0x33')]['sort']);_0x10ac39[_0xb84b('0x3b')]=qs[_0xb84b('0x34')](_[_0xb84b('0x3c')](_0x134278[_0xb84b('0x33')],_0x12bad5[_0xb84b('0x34')]),_0x4fef95);if(_0x134278['query'][_0xb84b('0x3d')]){_0x10ac39['where']=_[_0xb84b('0x3e')](_0x10ac39[_0xb84b('0x3b')],{'$or':_['map'](_0x4fef95,function(_0x450b5b){if(_0x450b5b[_0xb84b('0x30')]!=='VIRTUAL'){var _0x33de7f={};_0x33de7f[_0x450b5b[_0xb84b('0x2a')]]={'$like':'%'+_0x134278[_0xb84b('0x33')][_0xb84b('0x3d')]+'%'};return _0x33de7f;}})});}_0x10ac39=_[_0xb84b('0x3e')]({},_0x10ac39,_0x134278[_0xb84b('0x3f')]);var _0x3b568b={'where':_0x10ac39[_0xb84b('0x3b')]};return db[_0xb84b('0x2e')][_0xb84b('0x1d')](_0x3b568b)['then'](function(_0x5e77a0){_0x19fa79[_0xb84b('0x1d')]=_0x5e77a0;if(_0x134278[_0xb84b('0x33')][_0xb84b('0x40')]){_0x10ac39[_0xb84b('0x41')]=[{'all':!![]}];}return db[_0xb84b('0x2e')][_0xb84b('0x42')](_0x10ac39);})[_0xb84b('0x26')](function(_0x56e11e){_0x19fa79[_0xb84b('0x43')]=_0x56e11e;return _0x19fa79;})[_0xb84b('0x26')](respondWithFilteredResult(_0x366dfd,_0x10ac39))[_0xb84b('0x44')](handleError(_0x366dfd,null));};exports[_0xb84b('0x45')]=function(_0x3cfc22,_0x31d37c){var _0x32dffd={'raw':!![],'where':{'id':_0x3cfc22[_0xb84b('0x46')]['id']}},_0x2dae61={};_0x2dae61['model']=_['keys'](db[_0xb84b('0x2e')][_0xb84b('0x2f')]);_0x2dae61[_0xb84b('0x33')]=_['keys'](_0x3cfc22[_0xb84b('0x33')]);_0x2dae61['filters']=_[_0xb84b('0x35')](_0x2dae61['model'],_0x2dae61[_0xb84b('0x33')]);_0x32dffd[_0xb84b('0x36')]=_['intersection'](_0x2dae61[_0xb84b('0x32')],qs['fields'](_0x3cfc22[_0xb84b('0x33')][_0xb84b('0x37')]));_0x32dffd[_0xb84b('0x36')]=_0x32dffd['attributes'][_0xb84b('0x47')]?_0x32dffd[_0xb84b('0x36')]:_0x2dae61[_0xb84b('0x32')];if(_0x3cfc22[_0xb84b('0x33')]['includeAll']){_0x32dffd[_0xb84b('0x41')]=[{'all':!![]}];}_0x32dffd=_[_0xb84b('0x3e')]({},_0x32dffd,_0x3cfc22[_0xb84b('0x3f')]);return db[_0xb84b('0x2e')]['find'](_0x32dffd)[_0xb84b('0x26')](handleEntityNotFound(_0x31d37c,null))[_0xb84b('0x26')](respondWithResult(_0x31d37c,null))[_0xb84b('0x44')](handleError(_0x31d37c,null));};exports[_0xb84b('0x48')]=function(_0x339151,_0x1e368c){return db[_0xb84b('0x2e')][_0xb84b('0x48')](_0x339151[_0xb84b('0x49')],{})[_0xb84b('0x26')](respondWithResult(_0x1e368c,0xc9))['catch'](handleError(_0x1e368c,null));};exports[_0xb84b('0x25')]=function(_0x640841,_0x494344){if(_0x640841[_0xb84b('0x49')]['id']){delete _0x640841['body']['id'];}return db[_0xb84b('0x2e')][_0xb84b('0x4a')]({'where':{'id':_0x640841[_0xb84b('0x46')]['id']}})[_0xb84b('0x26')](handleEntityNotFound(_0x494344,null))['then'](saveUpdates(_0x640841[_0xb84b('0x49')],null))[_0xb84b('0x26')](respondWithResult(_0x494344,null))[_0xb84b('0x44')](handleError(_0x494344,null));};exports['destroy']=function(_0x426f7d,_0x37055f){return db[_0xb84b('0x2e')][_0xb84b('0x4a')]({'where':{'id':_0x426f7d['params']['id']}})['then'](handleEntityNotFound(_0x37055f,null))[_0xb84b('0x26')](removeEntity(_0x37055f,null))[_0xb84b('0x44')](handleError(_0x37055f,null));};
\ No newline at end of file
+var _0xf4b3=['limit','count','set','reject','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','SmsApplication','includeAll','include','findAll','rows','show','params','options','find','create','body','catch','rimraf','zip-dir','request-promise','bluebird','ejs','lodash','squel','jsforce','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x335a61,_0x21b879){var _0x48a02b=function(_0x2978a8){while(--_0x2978a8){_0x335a61['push'](_0x335a61['shift']());}};_0x48a02b(++_0x21b879);}(_0xf4b3,0xeb));var _0x3f4b=function(_0x4b4517,_0x5dbf6a){_0x4b4517=_0x4b4517-0x0;var _0x48278b=_0xf4b3[_0x4b4517];return _0x48278b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3f4b('0x0'));var zipdir=require(_0x3f4b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3f4b('0x2'));var moment=require('moment');var BPromise=require(_0x3f4b('0x3'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3f4b('0x4'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3f4b('0x5'));var squel=require(_0x3f4b('0x6'));var crypto=require('crypto');var jsforce=require(_0x3f4b('0x7'));var deskjs=require('desk.js');var toCsv=require(_0x3f4b('0x8'));var querystring=require('querystring');var Papa=require(_0x3f4b('0x9'));var Redis=require(_0x3f4b('0xa'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3f4b('0xb'));var hardwareService=require(_0x3f4b('0xc'));var logger=require('../../config/logger')('api');var utils=require(_0x3f4b('0xd'));var config=require('../../config/environment');var licenseUtil=require(_0x3f4b('0xe'));var db=require(_0x3f4b('0xf'))['db'];function respondWithStatusCode(_0x5c386d,_0x4452d4){_0x4452d4=_0x4452d4||0xcc;return function(_0xb867db){if(_0xb867db){return _0x5c386d[_0x3f4b('0x10')](_0x4452d4);}return _0x5c386d[_0x3f4b('0x11')](_0x4452d4)[_0x3f4b('0x12')]();};}function respondWithResult(_0x5c9235,_0x537883){_0x537883=_0x537883||0xc8;return function(_0x2cf1b8){if(_0x2cf1b8){return _0x5c9235[_0x3f4b('0x11')](_0x537883)[_0x3f4b('0x13')](_0x2cf1b8);}};}function respondWithFilteredResult(_0xbfdd6e,_0x56eaef){return function(_0x3a58e7){if(_0x3a58e7){var _0x568bf3=typeof _0x56eaef[_0x3f4b('0x14')]==='undefined'&&typeof _0x56eaef[_0x3f4b('0x15')]==='undefined';var _0xc69361=_0x3a58e7[_0x3f4b('0x16')];var _0x1e3450=_0x568bf3?0x0:_0x56eaef[_0x3f4b('0x14')];var _0x1de370=_0x568bf3?_0x3a58e7['count']:_0x56eaef[_0x3f4b('0x14')]+_0x56eaef[_0x3f4b('0x15')];var _0x258135;if(_0x1de370>=_0xc69361){_0x1de370=_0xc69361;_0x258135=0xc8;}else{_0x258135=0xce;}_0xbfdd6e['status'](_0x258135);return _0xbfdd6e[_0x3f4b('0x17')]('Content-Range',_0x1e3450+'-'+_0x1de370+'/'+_0xc69361)['json'](_0x3a58e7);}return null;};}function patchUpdates(_0x24e640){return function(_0x40bcdb){try{jsonpatch['apply'](_0x40bcdb,_0x24e640,!![]);}catch(_0x17b19d){return BPromise[_0x3f4b('0x18')](_0x17b19d);}return _0x40bcdb['save']();};}function saveUpdates(_0x531779,_0x14982f){return function(_0x411057){if(_0x411057){return _0x411057[_0x3f4b('0x19')](_0x531779)[_0x3f4b('0x1a')](function(_0x41e418){return _0x41e418;});}return null;};}function removeEntity(_0x5df1c2,_0x15f59e){return function(_0xfce13d){if(_0xfce13d){return _0xfce13d[_0x3f4b('0x1b')]()['then'](function(){_0x5df1c2['status'](0xcc)[_0x3f4b('0x12')]();});}};}function handleEntityNotFound(_0x1556e2,_0x2433e7){return function(_0x1a5800){if(!_0x1a5800){_0x1556e2[_0x3f4b('0x10')](0x194);}return _0x1a5800;};}function handleError(_0x5872d7,_0x57294d){_0x57294d=_0x57294d||0x1f4;return function(_0x5c87ce){logger[_0x3f4b('0x1c')](_0x5c87ce['stack']);if(_0x5c87ce[_0x3f4b('0x1d')]){delete _0x5c87ce['name'];}_0x5872d7['status'](_0x57294d)[_0x3f4b('0x1e')](_0x5c87ce);};}exports[_0x3f4b('0x1f')]=function(_0x58681b,_0x81e370){var _0x204d2b={},_0xb44d20={},_0x7a54f0={'count':0x0,'rows':[]};var _0x80f47d=_[_0x3f4b('0x20')](db['SmsApplication'][_0x3f4b('0x21')],function(_0x482b2d){return{'name':_0x482b2d[_0x3f4b('0x22')],'type':_0x482b2d[_0x3f4b('0x23')][_0x3f4b('0x24')]};});_0xb44d20[_0x3f4b('0x25')]=_[_0x3f4b('0x20')](_0x80f47d,'name');_0xb44d20['query']=_[_0x3f4b('0x26')](_0x58681b['query']);_0xb44d20[_0x3f4b('0x27')]=_[_0x3f4b('0x28')](_0xb44d20[_0x3f4b('0x25')],_0xb44d20[_0x3f4b('0x29')]);_0x204d2b['attributes']=_[_0x3f4b('0x28')](_0xb44d20[_0x3f4b('0x25')],qs[_0x3f4b('0x2a')](_0x58681b[_0x3f4b('0x29')][_0x3f4b('0x2a')]));_0x204d2b[_0x3f4b('0x2b')]=_0x204d2b[_0x3f4b('0x2b')][_0x3f4b('0x2c')]?_0x204d2b['attributes']:_0xb44d20[_0x3f4b('0x25')];if(!_0x58681b[_0x3f4b('0x29')]['hasOwnProperty'](_0x3f4b('0x2d'))){_0x204d2b[_0x3f4b('0x15')]=qs[_0x3f4b('0x15')](_0x58681b[_0x3f4b('0x29')][_0x3f4b('0x15')]);_0x204d2b[_0x3f4b('0x14')]=qs[_0x3f4b('0x14')](_0x58681b[_0x3f4b('0x29')][_0x3f4b('0x14')]);}_0x204d2b['order']=qs[_0x3f4b('0x2e')](_0x58681b[_0x3f4b('0x29')]['sort']);_0x204d2b[_0x3f4b('0x2f')]=qs[_0x3f4b('0x27')](_[_0x3f4b('0x30')](_0x58681b[_0x3f4b('0x29')],_0xb44d20[_0x3f4b('0x27')]),_0x80f47d);if(_0x58681b['query'][_0x3f4b('0x31')]){_0x204d2b[_0x3f4b('0x2f')]=_[_0x3f4b('0x32')](_0x204d2b['where'],{'$or':_[_0x3f4b('0x20')](_0x80f47d,function(_0x3fe8ae){if(_0x3fe8ae[_0x3f4b('0x23')]!==_0x3f4b('0x33')){var _0x29577f={};_0x29577f[_0x3fe8ae['name']]={'$like':'%'+_0x58681b[_0x3f4b('0x29')]['filter']+'%'};return _0x29577f;}})});}_0x204d2b=_['merge']({},_0x204d2b,_0x58681b['options']);var _0x50c23f={'where':_0x204d2b[_0x3f4b('0x2f')]};return db[_0x3f4b('0x34')]['count'](_0x50c23f)['then'](function(_0x10a1ee){_0x7a54f0['count']=_0x10a1ee;if(_0x58681b[_0x3f4b('0x29')][_0x3f4b('0x35')]){_0x204d2b[_0x3f4b('0x36')]=[{'all':!![]}];}return db[_0x3f4b('0x34')][_0x3f4b('0x37')](_0x204d2b);})[_0x3f4b('0x1a')](function(_0x55e4b9){_0x7a54f0[_0x3f4b('0x38')]=_0x55e4b9;return _0x7a54f0;})[_0x3f4b('0x1a')](respondWithFilteredResult(_0x81e370,_0x204d2b))['catch'](handleError(_0x81e370,null));};exports[_0x3f4b('0x39')]=function(_0x208734,_0x1174e4){var _0x206df0={'raw':!![],'where':{'id':_0x208734[_0x3f4b('0x3a')]['id']}},_0x1c6555={};_0x1c6555[_0x3f4b('0x25')]=_[_0x3f4b('0x26')](db[_0x3f4b('0x34')][_0x3f4b('0x21')]);_0x1c6555[_0x3f4b('0x29')]=_[_0x3f4b('0x26')](_0x208734['query']);_0x1c6555[_0x3f4b('0x27')]=_['intersection'](_0x1c6555[_0x3f4b('0x25')],_0x1c6555[_0x3f4b('0x29')]);_0x206df0[_0x3f4b('0x2b')]=_[_0x3f4b('0x28')](_0x1c6555[_0x3f4b('0x25')],qs[_0x3f4b('0x2a')](_0x208734[_0x3f4b('0x29')]['fields']));_0x206df0[_0x3f4b('0x2b')]=_0x206df0[_0x3f4b('0x2b')][_0x3f4b('0x2c')]?_0x206df0[_0x3f4b('0x2b')]:_0x1c6555[_0x3f4b('0x25')];if(_0x208734[_0x3f4b('0x29')]['includeAll']){_0x206df0[_0x3f4b('0x36')]=[{'all':!![]}];}_0x206df0=_['merge']({},_0x206df0,_0x208734[_0x3f4b('0x3b')]);return db['SmsApplication'][_0x3f4b('0x3c')](_0x206df0)[_0x3f4b('0x1a')](handleEntityNotFound(_0x1174e4,null))[_0x3f4b('0x1a')](respondWithResult(_0x1174e4,null))['catch'](handleError(_0x1174e4,null));};exports[_0x3f4b('0x3d')]=function(_0x21f48b,_0x13c890){return db[_0x3f4b('0x34')]['create'](_0x21f48b[_0x3f4b('0x3e')],{})['then'](respondWithResult(_0x13c890,0xc9))[_0x3f4b('0x3f')](handleError(_0x13c890,null));};exports['update']=function(_0x3b14c5,_0x445cdf){if(_0x3b14c5[_0x3f4b('0x3e')]['id']){delete _0x3b14c5[_0x3f4b('0x3e')]['id'];}return db['SmsApplication'][_0x3f4b('0x3c')]({'where':{'id':_0x3b14c5[_0x3f4b('0x3a')]['id']}})[_0x3f4b('0x1a')](handleEntityNotFound(_0x445cdf,null))[_0x3f4b('0x1a')](saveUpdates(_0x3b14c5[_0x3f4b('0x3e')],null))['then'](respondWithResult(_0x445cdf,null))[_0x3f4b('0x3f')](handleError(_0x445cdf,null));};exports[_0x3f4b('0x1b')]=function(_0x945979,_0x3a36f8){return db[_0x3f4b('0x34')][_0x3f4b('0x3c')]({'where':{'id':_0x945979[_0x3f4b('0x3a')]['id']}})['then'](handleEntityNotFound(_0x3a36f8,null))[_0x3f4b('0x1a')](removeEntity(_0x3a36f8,null))[_0x3f4b('0x3f')](handleError(_0x3a36f8,null));};
\ No newline at end of file
index bcbc2c5..199b328 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea15=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xea15,0x1c9));var _0x5ea1=function(_0x301bee,_0x91a563){_0x301bee=_0x301bee-0x0;var _0x3fbdbc=_0xea15[_0x301bee];return _0x3fbdbc;};'use strict';var _=require(_0x5ea1('0x0'));var util=require(_0x5ea1('0x1'));var logger=require(_0x5ea1('0x2'))(_0x5ea1('0x3'));var moment=require(_0x5ea1('0x4'));var BPromise=require(_0x5ea1('0x5'));var rp=require(_0x5ea1('0x6'));var fs=require('fs');var path=require(_0x5ea1('0x7'));var rimraf=require(_0x5ea1('0x8'));var config=require(_0x5ea1('0x9'));var attributes=require(_0x5ea1('0xa'));module[_0x5ea1('0xb')]=function(_0x5e029e,_0x5aa928){return _0x5e029e[_0x5ea1('0xc')](_0x5ea1('0xd'),attributes,{'tableName':_0x5ea1('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5ea1('0xf'),'collate':_0x5ea1('0x10')});};
\ No newline at end of file
+var _0x627a=['rimraf','../../config/environment','exports','define','SmsApplication','utf8mb4','lodash','util','api','bluebird','request-promise','path'];(function(_0x22eb78,_0x58a44c){var _0x2e886d=function(_0x1d6ef1){while(--_0x1d6ef1){_0x22eb78['push'](_0x22eb78['shift']());}};_0x2e886d(++_0x58a44c);}(_0x627a,0xae));var _0xa627=function(_0x1630b3,_0x56559d){_0x1630b3=_0x1630b3-0x0;var _0x4acaa3=_0x627a[_0x1630b3];return _0x4acaa3;};'use strict';var _=require(_0xa627('0x0'));var util=require(_0xa627('0x1'));var logger=require('../../config/logger')(_0xa627('0x2'));var moment=require('moment');var BPromise=require(_0xa627('0x3'));var rp=require(_0xa627('0x4'));var fs=require('fs');var path=require(_0xa627('0x5'));var rimraf=require(_0xa627('0x6'));var config=require(_0xa627('0x7'));var attributes=require('./smsApplication.attributes');module[_0xa627('0x8')]=function(_0x529f96,_0x32ce44){return _0x529f96[_0xa627('0x9')](_0xa627('0xa'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa627('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index d92825b..980c9d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf94=['error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s'];(function(_0x3705e1,_0x3beecd){var _0x393ed3=function(_0x3434ac){while(--_0x3434ac){_0x3705e1['push'](_0x3705e1['shift']());}};_0x393ed3(++_0x3beecd);}(_0xdf94,0xad));var _0x4df9=function(_0x2661d1,_0x117780){_0x2661d1=_0x2661d1-0x0;var _0x41e138=_0xdf94[_0x2661d1];return _0x41e138;};'use strict';var _=require('lodash');var util=require(_0x4df9('0x0'));var moment=require(_0x4df9('0x1'));var BPromise=require(_0x4df9('0x2'));var rs=require(_0x4df9('0x3'));var fs=require('fs');var Redis=require(_0x4df9('0x4'));var db=require(_0x4df9('0x5'))['db'];var utils=require(_0x4df9('0x6'));var logger=require(_0x4df9('0x7'))(_0x4df9('0x8'));var config=require(_0x4df9('0x9'));var jayson=require(_0x4df9('0xa'));var client=jayson[_0x4df9('0xb')][_0x4df9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2f46e3,_0x34faba,_0x2fac37){return new BPromise(function(_0x39ebc3,_0xf808f0){return client['request'](_0x2f46e3,_0x2fac37)[_0x4df9('0xd')](function(_0x3eaca1){logger[_0x4df9('0xe')](_0x4df9('0xf'),_0x34faba,_0x4df9('0x10'));logger[_0x4df9('0x11')](_0x4df9('0x12'),_0x34faba,'request\x20sent',JSON['stringify'](_0x3eaca1));if(_0x3eaca1[_0x4df9('0x13')]){if(_0x3eaca1['error'][_0x4df9('0x14')]===0x1f4){logger[_0x4df9('0x13')](_0x4df9('0xf'),_0x34faba,_0x3eaca1[_0x4df9('0x13')]['message']);return _0xf808f0(_0x3eaca1[_0x4df9('0x13')][_0x4df9('0x15')]);}logger[_0x4df9('0x13')]('SmsApplication,\x20%s,\x20%s',_0x34faba,_0x3eaca1[_0x4df9('0x13')][_0x4df9('0x15')]);return _0x39ebc3(_0x3eaca1[_0x4df9('0x13')]['message']);}else{logger[_0x4df9('0xe')]('SmsApplication,\x20%s,\x20%s',_0x34faba,_0x4df9('0x10'));_0x39ebc3(_0x3eaca1[_0x4df9('0x16')][_0x4df9('0x15')]);}})[_0x4df9('0x17')](function(_0x5d2910){logger[_0x4df9('0x13')](_0x4df9('0xf'),_0x34faba,_0x5d2910);_0xf808f0(_0x5d2910);});});}
\ No newline at end of file
+var _0x5532=['then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request'];(function(_0x2c5428,_0x190faa){var _0x22c9d1=function(_0x1f2bb3){while(--_0x1f2bb3){_0x2c5428['push'](_0x2c5428['shift']());}};_0x22c9d1(++_0x190faa);}(_0x5532,0x19a));var _0x2553=function(_0x343607,_0x3ae467){_0x343607=_0x343607-0x0;var _0x30ec22=_0x5532[_0x343607];return _0x30ec22;};'use strict';var _=require(_0x2553('0x0'));var util=require(_0x2553('0x1'));var moment=require(_0x2553('0x2'));var BPromise=require('bluebird');var rs=require(_0x2553('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2553('0x4'))['db'];var utils=require(_0x2553('0x5'));var logger=require(_0x2553('0x6'))('rpc');var config=require(_0x2553('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2553('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2d718e,_0x568778,_0x302c6d){return new BPromise(function(_0x40dc15,_0x338583){return client[_0x2553('0x9')](_0x2d718e,_0x302c6d)[_0x2553('0xa')](function(_0x183d20){logger[_0x2553('0xb')](_0x2553('0xc'),_0x568778,_0x2553('0xd'));logger[_0x2553('0xe')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x568778,_0x2553('0xd'),JSON[_0x2553('0xf')](_0x183d20));if(_0x183d20[_0x2553('0x10')]){if(_0x183d20['error'][_0x2553('0x11')]===0x1f4){logger[_0x2553('0x10')]('SmsApplication,\x20%s,\x20%s',_0x568778,_0x183d20['error'][_0x2553('0x12')]);return _0x338583(_0x183d20['error'][_0x2553('0x12')]);}logger[_0x2553('0x10')](_0x2553('0xc'),_0x568778,_0x183d20['error']['message']);return _0x40dc15(_0x183d20[_0x2553('0x10')][_0x2553('0x12')]);}else{logger[_0x2553('0xb')](_0x2553('0xc'),_0x568778,_0x2553('0xd'));_0x40dc15(_0x183d20[_0x2553('0x13')]['message']);}})[_0x2553('0x14')](function(_0x4db92a){logger['error'](_0x2553('0xc'),_0x568778,_0x4db92a);_0x338583(_0x4db92a);});});}
\ No newline at end of file
index 5f096b4..4c86380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03e=['exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','smsinteraction:update','update','delete','smsinteraction:destroy','destroy','removeTags'];(function(_0x4fb5e7,_0x5061fb){var _0x6e6328=function(_0x451480){while(--_0x451480){_0x4fb5e7['push'](_0x4fb5e7['shift']());}};_0x6e6328(++_0x5061fb);}(_0xb03e,0x1eb));var _0xeb03=function(_0x43c55f,_0x47900b){_0x43c55f=_0x43c55f-0x0;var _0x1c6fcc=_0xb03e[_0x43c55f];return _0x1c6fcc;};'use strict';var multer=require('multer');var util=require(_0xeb03('0x0'));var path=require(_0xeb03('0x1'));var timeout=require(_0xeb03('0x2'));var express=require(_0xeb03('0x3'));var router=express[_0xeb03('0x4')]();var fs_extra=require(_0xeb03('0x5'));var auth=require(_0xeb03('0x6'));var interaction=require(_0xeb03('0x7'));var config=require(_0xeb03('0x8'));var controller=require(_0xeb03('0x9'));router[_0xeb03('0xa')]('/',auth[_0xeb03('0xb')](),controller['index']);router[_0xeb03('0xa')](_0xeb03('0xc'),auth[_0xeb03('0xb')](),controller[_0xeb03('0xd')]);router[_0xeb03('0xa')](_0xeb03('0xe'),auth['isAuthenticated'](),controller[_0xeb03('0xf')]);router[_0xeb03('0xa')](_0xeb03('0x10'),auth['isAuthenticated'](),controller[_0xeb03('0x11')]);router['get'](_0xeb03('0x12'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x13')]);router[_0xeb03('0x14')]('/',auth[_0xeb03('0xb')](),controller[_0xeb03('0x15')]);router[_0xeb03('0x14')](_0xeb03('0x10'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x16')]);router[_0xeb03('0x14')](_0xeb03('0x17'),auth['isAuthenticated'](),interaction[_0xeb03('0x18')](_0xeb03('0x19'),_0xeb03('0x1a')),controller[_0xeb03('0x1b')]);router['put'](_0xeb03('0xe'),auth[_0xeb03('0xb')](),interaction[_0xeb03('0x18')]('sms',_0xeb03('0x1c')),controller[_0xeb03('0x1d')]);router[_0xeb03('0x1e')](_0xeb03('0xe'),auth[_0xeb03('0xb')](),interaction[_0xeb03('0x18')](_0xeb03('0x19'),_0xeb03('0x1f')),controller[_0xeb03('0x20')]);router[_0xeb03('0x1e')](_0xeb03('0x17'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x21')]);module[_0xeb03('0x22')]=router;
\ No newline at end of file
+var _0x0972=['tracked','sms','addTags','put','update','delete','smsinteraction:destroy','destroy','removeTags','exports','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags'];(function(_0x5a4c28,_0x535904){var _0x4f29fa=function(_0x9e9818){while(--_0x9e9818){_0x5a4c28['push'](_0x5a4c28['shift']());}};_0x4f29fa(++_0x535904);}(_0x0972,0x64));var _0x2097=function(_0x34fbee,_0x564592){_0x34fbee=_0x34fbee-0x0;var _0x241fa5=_0x0972[_0x34fbee];return _0x241fa5;};'use strict';var multer=require('multer');var util=require(_0x2097('0x0'));var path=require('path');var timeout=require(_0x2097('0x1'));var express=require('express');var router=express[_0x2097('0x2')]();var fs_extra=require(_0x2097('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x2097('0x4'));var config=require(_0x2097('0x5'));var controller=require(_0x2097('0x6'));router[_0x2097('0x7')]('/',auth[_0x2097('0x8')](),controller[_0x2097('0x9')]);router[_0x2097('0x7')]('/describe',auth[_0x2097('0x8')](),controller[_0x2097('0xa')]);router[_0x2097('0x7')](_0x2097('0xb'),auth[_0x2097('0x8')](),controller['show']);router[_0x2097('0x7')](_0x2097('0xc'),auth[_0x2097('0x8')](),controller[_0x2097('0xd')]);router[_0x2097('0x7')](_0x2097('0xe'),auth[_0x2097('0x8')](),controller[_0x2097('0xf')]);router[_0x2097('0x10')]('/',auth[_0x2097('0x8')](),controller[_0x2097('0x11')]);router[_0x2097('0x10')](_0x2097('0xc'),auth[_0x2097('0x8')](),controller[_0x2097('0x12')]);router[_0x2097('0x10')](_0x2097('0x13'),auth[_0x2097('0x8')](),interaction[_0x2097('0x14')](_0x2097('0x15'),'smsinteraction:addtags'),controller[_0x2097('0x16')]);router[_0x2097('0x17')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x2097('0x15'),'smsinteraction:update'),controller[_0x2097('0x18')]);router[_0x2097('0x19')](_0x2097('0xb'),auth[_0x2097('0x8')](),interaction[_0x2097('0x14')]('sms',_0x2097('0x1a')),controller[_0x2097('0x1b')]);router[_0x2097('0x19')](_0x2097('0x13'),auth[_0x2097('0x8')](),controller[_0x2097('0x1c')]);module[_0x2097('0x1d')]=router;
\ No newline at end of file
index fc0f1be..ebed4cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8098=['STRING','ENUM','exports','BOOLEAN','DATE'];(function(_0x3a6efd,_0x2a5102){var _0x487b9a=function(_0x104f89){while(--_0x104f89){_0x3a6efd['push'](_0x3a6efd['shift']());}};_0x487b9a(++_0x2a5102);}(_0x8098,0x1ba));var _0x8809=function(_0x1096a8,_0x3e78e7){_0x1096a8=_0x1096a8-0x0;var _0x842787=_0x8098[_0x1096a8];return _0x842787;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x8809('0x0')]={'closed':{'type':Sequelize[_0x8809('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8809('0x2')]},'disposition':{'type':Sequelize[_0x8809('0x3')]},'secondDisposition':{'type':Sequelize[_0x8809('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x8809('0x3')]},'phone':{'type':Sequelize[_0x8809('0x3')]},'read1stAt':{'type':Sequelize[_0x8809('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x8809('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8809('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x8809('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x8809('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0xdb94=['DATE','STRING','out','ENUM','BOOLEAN','moment','exports'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0xdb94,0xe5));var _0x4db9=function(_0x4dc13d,_0x382986){_0x4dc13d=_0x4dc13d-0x0;var _0x1bc6d7=_0xdb94[_0x4dc13d];return _0x1bc6d7;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x4db9('0x0'));module[_0x4db9('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x4db9('0x2')]},'disposition':{'type':Sequelize[_0x4db9('0x3')]},'secondDisposition':{'type':Sequelize[_0x4db9('0x3')]},'thirdDisposition':{'type':Sequelize[_0x4db9('0x3')]},'note':{'type':Sequelize[_0x4db9('0x3')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x4db9('0x2')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x4db9('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x4db9('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x4db9('0x5')]('in',_0x4db9('0x4')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x4db9('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 2433364..4574d3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77bb=['nolimit','order','sort','where','pick','select','field','name','color','from','tools_tags','u.id','ui.SmsInteractionId','user_has_sms_interactions','left_join','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','sms_accounts','sms_messages','me.SmsInteractionId\x20=\x20i.id','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','UserId','text','body','some','compact','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','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','Sequelize','QueryTypes','SELECT','i.id','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','role','agent','sequelize','toString','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.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','contactName','i.*','Contact.lastName','c.email','Contact.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.SmsInteractionId\x20IN\x20?','groupBy','all','rows','catch','show','params','includeAll','include','create','describe','addMessage','SmsMessage','ids','omit','hasOwnProperty','format','findAll','addTags','setTags','emit','smsInteractionTags:save','removeTags','download','unix','join','root','server','files','transcript-%d-%s.zip','CmContact','lastName','Messages','createdAt','direction','secret','SmsAccount','Account','get','mkdirSync','Owner','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','disposition','out','System','views','downloadInteraction.ejs','transcript-','.pdf','Sms','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','send','Users','map','fullname','TagIds','Tags','split','forEach','push','index','SmsInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0x77bb,0x194));var _0xb77b=function(_0x4cf0a9,_0x450e21){_0x4cf0a9=_0x4cf0a9-0x0;var _0x388b93=_0x77bb[_0x4cf0a9];return _0x388b93;};'use strict';var emlformat=require(_0xb77b('0x0'));var rimraf=require(_0xb77b('0x1'));var zipdir=require(_0xb77b('0x2'));var jsonpatch=require(_0xb77b('0x3'));var rp=require('request-promise');var moment=require(_0xb77b('0x4'));var BPromise=require(_0xb77b('0x5'));var Mustache=require(_0xb77b('0x6'));var util=require(_0xb77b('0x7'));var path=require(_0xb77b('0x8'));var sox=require(_0xb77b('0x9'));var csv=require(_0xb77b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb77b('0xb'));var _=require('lodash');var squel=require(_0xb77b('0xc'));var crypto=require(_0xb77b('0xd'));var jsforce=require(_0xb77b('0xe'));var deskjs=require(_0xb77b('0xf'));var toCsv=require(_0xb77b('0xa'));var querystring=require(_0xb77b('0x10'));var Papa=require(_0xb77b('0x11'));var Redis=require(_0xb77b('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb77b('0x13'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xb77b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xb77b('0x15'));var config=require(_0xb77b('0x16'));var licenseUtil=require(_0xb77b('0x17'));var db=require(_0xb77b('0x18'))['db'];config[_0xb77b('0x19')]=_[_0xb77b('0x1a')](config[_0xb77b('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xb77b('0x1b'))(new Redis(config[_0xb77b('0x19')]));require(_0xb77b('0x1c'))[_0xb77b('0x1d')](socket);function respondWithStatusCode(_0xa15e94,_0x49a9ea){_0x49a9ea=_0x49a9ea||0xcc;return function(_0x23606f){if(_0x23606f){return _0xa15e94['sendStatus'](_0x49a9ea);}return _0xa15e94[_0xb77b('0x1e')](_0x49a9ea)[_0xb77b('0x1f')]();};}function respondWithResult(_0x29457c,_0x154348){_0x154348=_0x154348||0xc8;return function(_0x18d799){if(_0x18d799){return _0x29457c['status'](_0x154348)[_0xb77b('0x20')](_0x18d799);}};}function respondWithFilteredResult(_0x4ec00f,_0x1e1a6e){return function(_0x3faef6){if(_0x3faef6){var _0xe8dd9b=typeof _0x1e1a6e[_0xb77b('0x21')]===_0xb77b('0x22')&&typeof _0x1e1a6e[_0xb77b('0x23')]===_0xb77b('0x22');var _0x2639d2=_0x3faef6[_0xb77b('0x24')];var _0x1d04f8=_0xe8dd9b?0x0:_0x1e1a6e[_0xb77b('0x21')];var _0x27b703=_0xe8dd9b?_0x3faef6[_0xb77b('0x24')]:_0x1e1a6e[_0xb77b('0x21')]+_0x1e1a6e['limit'];var _0x3c27d2;if(_0x27b703>=_0x2639d2){_0x27b703=_0x2639d2;_0x3c27d2=0xc8;}else{_0x3c27d2=0xce;}_0x4ec00f[_0xb77b('0x1e')](_0x3c27d2);return _0x4ec00f[_0xb77b('0x25')](_0xb77b('0x26'),_0x1d04f8+'-'+_0x27b703+'/'+_0x2639d2)[_0xb77b('0x20')](_0x3faef6);}return null;};}function patchUpdates(_0x4f6b43){return function(_0x183206){try{jsonpatch[_0xb77b('0x27')](_0x183206,_0x4f6b43,!![]);}catch(_0xa7f480){return BPromise[_0xb77b('0x28')](_0xa7f480);}return _0x183206[_0xb77b('0x29')]();};}function saveUpdates(_0x8f31c4,_0x1d2728){return function(_0x214bd7){if(_0x214bd7){return _0x214bd7[_0xb77b('0x2a')](_0x8f31c4)[_0xb77b('0x2b')](function(_0x3fb74f){return _0x3fb74f;});}return null;};}function removeEntity(_0x14c9cb,_0x254247){return function(_0xa385ec){if(_0xa385ec){return _0xa385ec[_0xb77b('0x2c')]()[_0xb77b('0x2b')](function(){_0x14c9cb[_0xb77b('0x1e')](0xcc)[_0xb77b('0x1f')]();});}};}function handleEntityNotFound(_0x23391c,_0x4f4d28){return function(_0x56b366){if(!_0x56b366){_0x23391c[_0xb77b('0x2d')](0x194);}return _0x56b366;};}function handleError(_0x3d1c0f,_0x148d14){_0x148d14=_0x148d14||0x1f4;return function(_0x2ccb86){logger['error'](_0x2ccb86[_0xb77b('0x2e')]);if(_0x2ccb86['name']){delete _0x2ccb86['name'];}_0x3d1c0f['status'](_0x148d14)[_0xb77b('0x2f')](_0x2ccb86);};}function getInteractionUsers(_0x11fccb,_0x185be4){return new BPromise(function(_0x4709d9,_0x389e03){try{if(_0x185be4[_0x11fccb['id']]){_0x11fccb[_0xb77b('0x30')]=_[_0xb77b('0x31')](_0x185be4[_0x11fccb['id']],function(_0x33d45d){return{'id':_0x33d45d['id'],'fullname':_0x33d45d[_0xb77b('0x32')]};});}}catch(_0x337e55){_0x389e03(_0x337e55);}_0x4709d9(_0x11fccb);});}function getInteractionTags(_0x499c80,_0x59c7de){return new BPromise(function(_0x502fd6,_0x3b3fce){try{if(_0x499c80[_0xb77b('0x33')]){_0x499c80[_0xb77b('0x34')]=[];_0x499c80[_0xb77b('0x33')][_0xb77b('0x35')](',')[_0xb77b('0x36')](function(_0x759f4b){_0x499c80[_0xb77b('0x34')][_0xb77b('0x37')](_0x59c7de[_0x759f4b]);});}delete _0x499c80[_0xb77b('0x33')];}catch(_0xee7fb5){_0x3b3fce(_0xee7fb5);}_0x502fd6(_0x499c80);});}function updateSmsInteraction(_0x4f9a7b,_0x430d35,_0x4af250){return new BPromise(function(_0x448939,_0x1d7e22){return getInteractionUsers(_0x4f9a7b,_0x4af250)['then'](function(_0x504736){return getInteractionTags(_0x504736,_0x430d35);})[_0xb77b('0x2b')](function(_0xa16c8b){_0x448939(_0xa16c8b);})['catch'](function(_0x1e9f1a){_0x1d7e22(_0x1e9f1a);});});}exports[_0xb77b('0x38')]=function(_0x2a7a58,_0x234b61){var _0x3ef217={},_0x4c03c2={},_0x24072e={'count':0x0,'rows':[]};var _0x24d0d8=_[_0xb77b('0x31')](db[_0xb77b('0x39')][_0xb77b('0x3a')],function(_0x37f6b4){return{'name':_0x37f6b4[_0xb77b('0x3b')],'type':_0x37f6b4[_0xb77b('0x3c')][_0xb77b('0x3d')]};});_0x4c03c2[_0xb77b('0x3e')]=_[_0xb77b('0x31')](_0x24d0d8,'name');_0x4c03c2[_0xb77b('0x3f')]=_[_0xb77b('0x40')](_0x2a7a58[_0xb77b('0x3f')]);_0x4c03c2[_0xb77b('0x41')]=_[_0xb77b('0x42')](_0x4c03c2['model'],_0x4c03c2[_0xb77b('0x3f')]);_0x3ef217[_0xb77b('0x43')]=_['intersection'](_0x4c03c2[_0xb77b('0x3e')],qs[_0xb77b('0x44')](_0x2a7a58[_0xb77b('0x3f')]['fields']));_0x3ef217['attributes']=_0x3ef217[_0xb77b('0x43')][_0xb77b('0x45')]?_0x3ef217[_0xb77b('0x43')]:_0x4c03c2['model'];if(!_0x2a7a58[_0xb77b('0x3f')]['hasOwnProperty'](_0xb77b('0x46'))){_0x3ef217[_0xb77b('0x23')]=qs[_0xb77b('0x23')](_0x2a7a58[_0xb77b('0x3f')]['limit']);_0x3ef217['offset']=qs[_0xb77b('0x21')](_0x2a7a58[_0xb77b('0x3f')][_0xb77b('0x21')]);}_0x3ef217[_0xb77b('0x47')]=qs[_0xb77b('0x48')](_0x2a7a58[_0xb77b('0x3f')]['sort']);_0x3ef217[_0xb77b('0x49')]=qs[_0xb77b('0x41')](_[_0xb77b('0x4a')](_0x2a7a58['query'],_0x4c03c2['filters']),_0x24d0d8);var _0x4ce077=[];var _0x202bf4=squel[_0xb77b('0x4b')]()['field']('id')[_0xb77b('0x4c')](_0xb77b('0x4d'))[_0xb77b('0x4c')](_0xb77b('0x4e'))[_0xb77b('0x4f')](_0xb77b('0x50'));var _0x54ec9e=squel[_0xb77b('0x4b')]()[_0xb77b('0x4c')](_0xb77b('0x51'))['field']('u.fullname')[_0xb77b('0x4c')](_0xb77b('0x52'))[_0xb77b('0x4f')](_0xb77b('0x53'),'ui')[_0xb77b('0x54')]('users','u',_0xb77b('0x55'));var _0x527c2d=squel['select']()[_0xb77b('0x4f')](_0xb77b('0x56'),'i')[_0xb77b('0x54')](_0xb77b('0x57'),'c',_0xb77b('0x58'))[_0xb77b('0x54')](_0xb77b('0x59'),'o',_0xb77b('0x5a'))['left_join'](_0xb77b('0x5b'),'a','a.id\x20=\x20i.SmsAccountId')[_0xb77b('0x54')](_0xb77b('0x5c'),'me',_0xb77b('0x5d'))['left_join']('sms_interaction_has_tags','it',_0xb77b('0x5e'))[_0xb77b('0x54')](_0xb77b('0x50'),'t',_0xb77b('0x5f'));var _0x5275e2=squel[_0xb77b('0x60')]();var _0x79e285=[];var _0x4eb3cc=squel['expr']();var _0x531f27;if(_0x2a7a58[_0xb77b('0x3f')][_0xb77b('0x61')]){_0x531f27=as['parseSearch'](_0x2a7a58[_0xb77b('0x3f')][_0xb77b('0x61')]);var _0x2e9469=_0x531f27[_0xb77b('0x62')];for(var _0x4dff5c=0x0;_0x4dff5c<_0x531f27[_0xb77b('0x63')][_0xb77b('0x45')];_0x4dff5c++){var _0x1a779a=_0x531f27[_0xb77b('0x63')][_0x4dff5c];var _0x4e9fd3='i';var _0x3355fb=_['find'](_0x24d0d8,[_0xb77b('0x4d'),_0x1a779a[_0xb77b('0x4c')]]);if(!_0x3355fb){switch(_0x1a779a[_0xb77b('0x4c')]){case _0xb77b('0x64'):if(_0x1a779a[_0xb77b('0x65')]==0x1){_0x527c2d['having']('`'+_0x1a779a[_0xb77b('0x4c')]+_0xb77b('0x66'));}else{_0x527c2d[_0xb77b('0x67')]('`'+_0x1a779a[_0xb77b('0x4c')]+_0xb77b('0x68'));}break;case _0xb77b('0x69'):if(_0x1a779a['operator']===_0xb77b('0x6a')){if(_0x1a779a['value'][_0xb77b('0x35')]('\x20')[_0xb77b('0x45')]>0x1){_0x5275e2[_0x2e9469]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xb77b('0x6b')](_0x1a779a['value']),null);}else{var _0x1a6a9a='%'+_0x1a779a['value']+'%';_0x5275e2[_0x2e9469](_0xb77b('0x6c'),_0x1a6a9a,_0x1a6a9a,_0x1a6a9a);}}else{_0x3355fb=_[_0xb77b('0x6d')](_0x24d0d8,[_0xb77b('0x4d'),_0xb77b('0x6e')]);_0x1a779a[_0xb77b('0x4c')]=_0xb77b('0x6e');_0x4cb1a2=as[_0xb77b('0x6f')](_0x4e9fd3,_0x3355fb[_0xb77b('0x3c')],_0x1a779a);_0x5275e2[_0x2e9469](_0x4cb1a2['text'],_0x4cb1a2[_0xb77b('0x65')][_0xb77b('0x70')],_0x4cb1a2[_0xb77b('0x65')]['end']);}break;case _0xb77b('0x71'):var _0x434afa=_0x1a779a[_0xb77b('0x65')][_0xb77b('0x35')](',')[_0xb77b('0x31')](function(_0x456697){return Number(_0x456697);});_0x434afa[_0xb77b('0x36')](function(_0x552685){_0x4eb3cc['or'](_0xb77b('0x72'),'%,'+_0x552685+',%');});_0x79e285=_[_0xb77b('0x73')](_0x79e285,_0x434afa);break;case _0xb77b('0x74'):if(_0x1a779a[_0xb77b('0x75')]==='$substring'){_0x5275e2[_0x2e9469]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x1a779a[_0xb77b('0x65')]+'%',null);}else{_0x3355fb=_[_0xb77b('0x6d')](_0x24d0d8,[_0xb77b('0x4d'),_0xb77b('0x76')]);_0x1a779a[_0xb77b('0x4c')]='UserId';_0x4cb1a2=as[_0xb77b('0x6f')](_0x4e9fd3,_0x3355fb[_0xb77b('0x3c')],_0x1a779a);_0x5275e2[_0x2e9469](_0x4cb1a2[_0xb77b('0x77')],_0x4cb1a2[_0xb77b('0x65')][_0xb77b('0x70')],_0x4cb1a2[_0xb77b('0x65')]['end']);}break;case _0xb77b('0x78'):_0x4cb1a2=as['buildExpression']('me',null,_0x1a779a);_0x5275e2[_0x2e9469](_0x4cb1a2[_0xb77b('0x77')],_0x4cb1a2[_0xb77b('0x65')][_0xb77b('0x70')],_0x4cb1a2[_0xb77b('0x65')]['end']);break;}}else{var _0x4cb1a2=as[_0xb77b('0x6f')](_0x4e9fd3,_0x3355fb['type'],_0x1a779a);_0x5275e2[_0x2e9469](_0x4cb1a2[_0xb77b('0x77')],_0x4cb1a2['value'][_0xb77b('0x70')],_0x4cb1a2[_0xb77b('0x65')][_0xb77b('0x1f')]);}}}else{var _0x18bc11=_(_0x2a7a58[_0xb77b('0x3f')])[_0xb77b('0x40')]()['map'](function(_0x159a59){return _[_0xb77b('0x79')](_0x24d0d8,['name',_0x159a59])?_0x159a59:undefined;})[_0xb77b('0x7a')]()['value']();if(!_['isEmpty'](_0x18bc11)){_0x18bc11[_0xb77b('0x36')](function(_0x22535c){if(_0x22535c===_0xb77b('0x7b')){_0x527c2d[_0xb77b('0x49')](_0xb77b('0x7c'),[][_0xb77b('0x7d')](_0x2a7a58[_0xb77b('0x3f')][_0x22535c]));}else if(_0x22535c==='createdAt'){var _0x11d045=JSON[_0xb77b('0x7e')](_0x2a7a58[_0xb77b('0x3f')][_0x22535c])[_0xb77b('0x7f')];var _0x552b8c=JSON['parse'](_0x2a7a58[_0xb77b('0x3f')][_0x22535c])['$lte'];_0x527c2d[_0xb77b('0x49')](_0xb77b('0x80'),_0x11d045,_0x552b8c);}else{if(_0x2a7a58[_0xb77b('0x3f')][_0x22535c]===_0xb77b('0x81')){_0x527c2d[_0xb77b('0x49')]('i.'+_0x22535c+_0xb77b('0x82'));}else{_0x527c2d[_0xb77b('0x49')]('i.'+_0x22535c+_0xb77b('0x83'),_0x2a7a58[_0xb77b('0x3f')][_0x22535c]);}}});}if(_0x2a7a58['query'][_0xb77b('0x84')]){if(_0x2a7a58[_0xb77b('0x3f')][_0xb77b('0x84')]==0x1){_0x527c2d['having']('`unreadMessages`\x20=\x200');}else{_0x527c2d['having'](_0xb77b('0x85'));}}if(_0x2a7a58[_0xb77b('0x3f')][_0xb77b('0x86')]){_0x79e285=_[_0xb77b('0x87')](_0x2a7a58[_0xb77b('0x3f')][_0xb77b('0x86')])?_0x2a7a58[_0xb77b('0x3f')][_0xb77b('0x86')]:new Array(_0x2a7a58['query']['tag']);_0x79e285['forEach'](function(_0x1955ff){_0x4eb3cc['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1955ff+',%');});}if(_0x2a7a58[_0xb77b('0x3f')][_0xb77b('0x88')]){var _0x4be6d8=_0x2a7a58[_0xb77b('0x3f')][_0xb77b('0x88')][_0xb77b('0x89')]('\x5c','\x5c\x5c')[_0xb77b('0x89')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x4be6d8)){_0x5275e2['or']('i.id\x20LIKE\x20?',_0x4be6d8+'%')['or'](_0xb77b('0x8a'),_0x4be6d8+'%');}else{_0x5275e2['or'](_0xb77b('0x8b'),qs['getFullTextValue'](_0x4be6d8))['or'](_0xb77b('0x8c'),_0x4be6d8+'%');}}}_0x527c2d[_0xb77b('0x49')](_0x5275e2);_0x527c2d[_0xb77b('0x8d')]('i.id');var _0x20a2a1={'type':db[_0xb77b('0x8e')][_0xb77b('0x8f')][_0xb77b('0x90')],'raw':!![]};var _0x1350ad=_0x527c2d['clone']();_0x1350ad[_0xb77b('0x4c')](_0xb77b('0x91'));_0x1350ad['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xb77b('0x64'));if(_0x3ef217[_0xb77b('0x47')]){_0x3ef217[_0xb77b('0x47')][_0xb77b('0x36')](function(_0x440e32){var _0x3c6319=_0x440e32[0x0]==='contactName'?_0x440e32[0x0]:'i.'+_0x440e32[0x0];_0x527c2d['order'](_0x3c6319,_0x440e32[0x1]===_0xb77b('0x92')?![]:!![]);});}if(!_[_0xb77b('0x93')](_0x79e285)){_0x527c2d[_0xb77b('0x67')](_0x4eb3cc);_0x1350ad[_0xb77b('0x49')](_0xb77b('0x94'),_0x79e285);}BPromise[_0xb77b('0x95')]()[_0xb77b('0x2b')](function(){if(!_0x531f27){if(_0x2a7a58[_0xb77b('0x3f')][_0xb77b('0x7b')])return;_0x1350ad['where'](_0xb77b('0x96'));_0x527c2d[_0xb77b('0x49')](_0xb77b('0x96'));return;}if(_0x2a7a58[_0xb77b('0x97')]['role']!=='agent')return;return _0x2a7a58[_0xb77b('0x97')][_0xb77b('0x98')]({'attributes':['id'],'raw':!![]})['then'](function(_0x14983c){if(_[_0xb77b('0x93')](_0x14983c)){_0x1350ad['where'](_0xb77b('0x99'));_0x527c2d[_0xb77b('0x49')]('i.SmsAccountId\x20IS\x20NULL');}else{_0x1350ad[_0xb77b('0x49')]('i.SmsAccountId\x20IN\x20?',_[_0xb77b('0x31')](_0x14983c,'id'));_0x527c2d[_0xb77b('0x49')](_0xb77b('0x7c'),_[_0xb77b('0x31')](_0x14983c,'id'));}});})[_0xb77b('0x2b')](function(){if(_0x2a7a58[_0xb77b('0x97')][_0xb77b('0x9a')]===_0xb77b('0x9b')&&!_0x531f27&&!_0x2a7a58[_0xb77b('0x3f')][_0xb77b('0x7b')])return[];return db[_0xb77b('0x9c')][_0xb77b('0x3f')](_0x1350ad[_0xb77b('0x9d')](),_0x20a2a1);})[_0xb77b('0x2b')](function(_0x5e8ea3){_0x24072e[_0xb77b('0x24')]=_0x5e8ea3[_0xb77b('0x45')];if(_0x24072e['count']===0x0)return[];return db[_0xb77b('0x9c')][_0xb77b('0x3f')](_0x202bf4['toString'](),_0x20a2a1)[_0xb77b('0x2b')](function(_0xb66b06){_0x4ce077=_[_0xb77b('0x9e')](_0xb66b06,'id');_0x20a2a1=_[_0xb77b('0x9f')](_0x20a2a1,{'model':db[_0xb77b('0x39')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2a7a58['query'][_0xb77b('0x44')]){_0x3ef217['attributes']['forEach'](function(_0x23fbad){_0x527c2d['field']('i.'+_0x23fbad);});}else{_0x527c2d[_0xb77b('0x4c')](_0xb77b('0xa0'),_0xb77b('0x64'));_0x527c2d[_0xb77b('0x4c')](_0xb77b('0xa1'),'Account.key');_0x527c2d[_0xb77b('0x4c')](_0xb77b('0xa2'),_0xb77b('0xa3'));_0x527c2d[_0xb77b('0x4c')](_0xb77b('0xa4'),_0xb77b('0xa5'));_0x527c2d['field'](_0xb77b('0xa6'));_0x527c2d['field']('c.firstName','Contact.firstName');_0x527c2d[_0xb77b('0x4c')]('c.lastName',_0xb77b('0xa7'));_0x527c2d[_0xb77b('0x4c')](_0xb77b('0xa8'),_0xb77b('0xa9'));_0x527c2d[_0xb77b('0x4c')](_0xb77b('0xaa'),_0xb77b('0xab'));_0x527c2d[_0xb77b('0x4c')](_0xb77b('0xac'),_0xb77b('0xad'));_0x527c2d[_0xb77b('0x4c')](_0xb77b('0xae'),_0xb77b('0xaf'));_0x527c2d['field'](_0xb77b('0xb0'),_0xb77b('0xb1'));_0x527c2d['field'](_0xb77b('0xb2'),_0xb77b('0xb3'));_0x527c2d['field'](_0xb77b('0xb4'),_0xb77b('0x33'));}if(_0x3ef217[_0xb77b('0x23')])_0x527c2d[_0xb77b('0x23')](_0x3ef217[_0xb77b('0x23')]);if(_0x3ef217[_0xb77b('0x21')])_0x527c2d['offset'](_0x3ef217[_0xb77b('0x21')]);return db[_0xb77b('0x9c')][_0xb77b('0x3f')](_0x527c2d['toString'](),_0x20a2a1);})['then'](function(_0x41f247){if(_0x41f247[_0xb77b('0x45')]>0x0)_0x54ec9e['where'](_0xb77b('0xb5'),_[_0xb77b('0x31')](_0x41f247,'id'));return db['sequelize'][_0xb77b('0x3f')](_0x54ec9e[_0xb77b('0x9d')](),_0x20a2a1)[_0xb77b('0x2b')](function(_0x4f7a3f){var _0x30ed4f=_[_0xb77b('0xb6')](_0x4f7a3f,'SmsInteractionId');var _0x5cb9ee=[];_0x41f247['forEach'](function(_0x139efd){_0x5cb9ee[_0xb77b('0x37')](updateSmsInteraction(_0x139efd,_0x4ce077,_0x30ed4f));});return BPromise[_0xb77b('0xb7')](_0x5cb9ee);});});})[_0xb77b('0x2b')](function(_0x1a2088){_0x24072e[_0xb77b('0xb8')]=_0x1a2088;return _0x24072e;})[_0xb77b('0x2b')](respondWithFilteredResult(_0x234b61,_0x3ef217))[_0xb77b('0xb9')](handleError(_0x234b61,null));};exports[_0xb77b('0xba')]=function(_0x3aa5f4,_0xde004c){var _0x3cc4a4={'raw':![],'where':{'id':_0x3aa5f4[_0xb77b('0xbb')]['id']}},_0x59e228={};_0x59e228[_0xb77b('0x3e')]=_[_0xb77b('0x40')](db[_0xb77b('0x39')][_0xb77b('0x3a')]);_0x59e228['query']=_[_0xb77b('0x40')](_0x3aa5f4[_0xb77b('0x3f')]);_0x59e228[_0xb77b('0x41')]=_[_0xb77b('0x42')](_0x59e228[_0xb77b('0x3e')],_0x59e228[_0xb77b('0x3f')]);_0x3cc4a4[_0xb77b('0x43')]=_['intersection'](_0x59e228[_0xb77b('0x3e')],qs[_0xb77b('0x44')](_0x3aa5f4['query']['fields']));_0x3cc4a4['attributes']=_0x3cc4a4[_0xb77b('0x43')]['length']?_0x3cc4a4[_0xb77b('0x43')]:_0x59e228[_0xb77b('0x3e')];if(_0x3aa5f4[_0xb77b('0x3f')][_0xb77b('0xbc')]){_0x3cc4a4[_0xb77b('0xbd')]=[{'all':!![]}];}_0x3cc4a4=_[_0xb77b('0x9f')]({},_0x3cc4a4,_0x3aa5f4['options']);return db[_0xb77b('0x39')][_0xb77b('0x6d')](_0x3cc4a4)[_0xb77b('0x2b')](handleEntityNotFound(_0xde004c,null))['then'](respondWithResult(_0xde004c,null))[_0xb77b('0xb9')](handleError(_0xde004c,null));};exports[_0xb77b('0xbe')]=function(_0x3df6cd,_0x2cf93e){return db[_0xb77b('0x39')][_0xb77b('0xbe')](_0x3df6cd[_0xb77b('0x78')],{})[_0xb77b('0x2b')](respondWithResult(_0x2cf93e,0xc9))[_0xb77b('0xb9')](handleError(_0x2cf93e,null));};exports[_0xb77b('0x2a')]=function(_0x183121,_0x4cb345){if(_0x183121[_0xb77b('0x78')]['id']){delete _0x183121[_0xb77b('0x78')]['id'];}return db[_0xb77b('0x39')]['find']({'where':{'id':_0x183121[_0xb77b('0xbb')]['id']}})[_0xb77b('0x2b')](handleEntityNotFound(_0x4cb345,null))['then'](saveUpdates(_0x183121[_0xb77b('0x78')],null))[_0xb77b('0x2b')](respondWithResult(_0x4cb345,null))[_0xb77b('0xb9')](handleError(_0x4cb345,null));};exports[_0xb77b('0x2c')]=function(_0x1e51aa,_0x440509){return db[_0xb77b('0x39')]['find']({'where':{'id':_0x1e51aa[_0xb77b('0xbb')]['id']}})['then'](handleEntityNotFound(_0x440509,null))[_0xb77b('0x2b')](removeEntity(_0x440509,null))[_0xb77b('0xb9')](handleError(_0x440509,null));};exports[_0xb77b('0xbf')]=function(_0x393923,_0x4bfdb0){return db[_0xb77b('0x39')]['describe']()[_0xb77b('0x2b')](respondWithResult(_0x4bfdb0,null))['catch'](handleError(_0x4bfdb0,null));};exports[_0xb77b('0xc0')]=function(_0x1007e2,_0x21f9c3,_0x3a7109){return db[_0xb77b('0xc1')]['find']({'where':{'id':_0x1007e2['params']['id']}})[_0xb77b('0x2b')](handleEntityNotFound(_0x21f9c3,null))['then'](function(_0x1f1485){if(_0x1f1485){return _0x1f1485[_0xb77b('0xc0')](_0x1007e2[_0xb77b('0x78')][_0xb77b('0xc2')],_[_0xb77b('0xc3')](_0x1007e2[_0xb77b('0x78')],[_0xb77b('0xc2'),'id'])||{});}})[_0xb77b('0x2b')](respondWithResult(_0x21f9c3,null))[_0xb77b('0xb9')](handleError(_0x21f9c3,null));};exports['getMessages']=function(_0x1f1397,_0x51620b,_0x40ad41){var _0x243216={'raw':![],'where':{}};var _0x928d56={};var _0x2cf099={'count':0x0,'rows':[]};return db['SmsInteraction']['findOne']({'where':{'id':_0x1f1397[_0xb77b('0xbb')]['id']}})[_0xb77b('0x2b')](handleEntityNotFound(_0x51620b,null))[_0xb77b('0x2b')](function(_0x455229){if(_0x455229){_0x928d56[_0xb77b('0x3e')]=_[_0xb77b('0x40')](db[_0xb77b('0xc1')][_0xb77b('0x3a')]);_0x928d56['query']=_[_0xb77b('0x40')](_0x1f1397[_0xb77b('0x3f')]);_0x928d56[_0xb77b('0x41')]=_[_0xb77b('0x42')](_0x928d56[_0xb77b('0x3e')],_0x928d56[_0xb77b('0x3f')]);_0x243216['attributes']=_[_0xb77b('0x42')](_0x928d56[_0xb77b('0x3e')],qs[_0xb77b('0x44')](_0x1f1397[_0xb77b('0x3f')][_0xb77b('0x44')]));_0x243216[_0xb77b('0x43')]=_0x243216['attributes'][_0xb77b('0x45')]?_0x243216[_0xb77b('0x43')]:_0x928d56[_0xb77b('0x3e')];if(!_0x1f1397['query'][_0xb77b('0xc4')](_0xb77b('0x46'))){_0x243216['limit']=qs['limit'](_0x1f1397[_0xb77b('0x3f')][_0xb77b('0x23')]);_0x243216['offset']=qs[_0xb77b('0x21')](_0x1f1397[_0xb77b('0x3f')][_0xb77b('0x21')]);}_0x243216[_0xb77b('0x47')]=qs[_0xb77b('0x48')](_0x1f1397[_0xb77b('0x3f')]['sort']);_0x243216['where']=qs['filters'](_[_0xb77b('0x4a')](_0x1f1397[_0xb77b('0x3f')],_0x928d56[_0xb77b('0x41')]));_0x243216['where']['SmsInteractionId']=_0x455229['id'];if(_0x1f1397[_0xb77b('0x3f')][_0xb77b('0x88')]){_0x243216[_0xb77b('0x49')]=_['merge'](_0x243216[_0xb77b('0x49')],{'$or':_[_0xb77b('0x31')](_0x243216[_0xb77b('0x43')],function(_0x39eabf){var _0x4df4bf={};_0x4df4bf[_0x39eabf]={'$like':'%'+_0x1f1397[_0xb77b('0x3f')][_0xb77b('0x88')]+'%'};return _0x4df4bf;})});}if(_0x1f1397[_0xb77b('0x3f')][_0xb77b('0x7f')]){var _0x16fb1a=_0x1f1397[_0xb77b('0x3f')][_0xb77b('0x7f')]['split'](',');var _0x33b3d1={};_0x33b3d1[_0x16fb1a[0x0]]={'$gte':moment(_0x16fb1a[0x1])[_0xb77b('0xc5')]('YYYY-MM-DD\x20HH:mm:ss')};_0x243216['where']=_['merge'](_0x243216['where'],_0x33b3d1);}_0x243216=_[_0xb77b('0x9f')]({},_0x243216,_0x1f1397['options']);return db[_0xb77b('0xc1')][_0xb77b('0x24')]({'where':_0x243216[_0xb77b('0x49')]})[_0xb77b('0x2b')](function(_0x4eda70){_0x2cf099[_0xb77b('0x24')]=_0x4eda70;if(_0x1f1397[_0xb77b('0x3f')][_0xb77b('0xbc')]){_0x243216['include']=[{'all':!![]}];}return db[_0xb77b('0xc1')][_0xb77b('0xc6')](_0x243216);})[_0xb77b('0x2b')](function(_0x2bbf97){_0x2cf099[_0xb77b('0xb8')]=_0x2bbf97;return _0x2cf099;});}})['then'](respondWithFilteredResult(_0x51620b,_0x243216))['catch'](handleError(_0x51620b,null));};exports[_0xb77b('0xc7')]=function(_0x43f5bd,_0x584c25,_0x397a05){return db[_0xb77b('0x39')][_0xb77b('0x6d')]({'where':{'id':_0x43f5bd[_0xb77b('0xbb')]['id']}})[_0xb77b('0x2b')](handleEntityNotFound(_0x584c25,null))[_0xb77b('0x2b')](function(_0x5b2e32){if(_0x5b2e32){return _0x5b2e32[_0xb77b('0xc8')](_0x43f5bd[_0xb77b('0x78')][_0xb77b('0xc2')],_['omit'](_0x43f5bd[_0xb77b('0x78')],[_0xb77b('0xc2'),'id'])||{})['spread'](function(){return db[_0xb77b('0x71')][_0xb77b('0xc6')]({'attributes':['id',_0xb77b('0x4d'),'color'],'where':{'id':_0x43f5bd[_0xb77b('0x78')][_0xb77b('0xc2')]}});})['then'](function(_0x154013){socket[_0xb77b('0xc9')](_0xb77b('0xca'),{'id':Number(_0x43f5bd['params']['id']),'tags':_0x154013||[]});return{'id':Number(_0x43f5bd[_0xb77b('0xbb')]['id']),'tags':_0x154013||[]};});}})[_0xb77b('0x2b')](respondWithResult(_0x584c25,null))[_0xb77b('0xb9')](handleError(_0x584c25,null));};exports['removeTags']=function(_0x108b50,_0x21ff50,_0x5f4e7a){return db[_0xb77b('0x39')][_0xb77b('0x6d')]({'where':{'id':_0x108b50[_0xb77b('0xbb')]['id']}})[_0xb77b('0x2b')](handleEntityNotFound(_0x21ff50,null))[_0xb77b('0x2b')](function(_0x3680a0){if(_0x3680a0){return _0x3680a0[_0xb77b('0xcb')](_0x108b50['query'][_0xb77b('0xc2')]);}})[_0xb77b('0x2b')](respondWithStatusCode(_0x21ff50,null))[_0xb77b('0xb9')](handleError(_0x21ff50,null));};exports[_0xb77b('0xcc')]=function(_0x111466,_0x792b00){var _0x20e505=moment()[_0xb77b('0xcd')]()[_0xb77b('0x9d')]();var _0x25ac62=path[_0xb77b('0xce')](config[_0xb77b('0xcf')],_0xb77b('0xd0'),'files','tmp');var _0x5eb7fa=path[_0xb77b('0xce')](config[_0xb77b('0xcf')],'server',_0xb77b('0xd1'),'attachments');var _0x248525=path[_0xb77b('0xce')](_0x25ac62,_0x20e505);var _0x551dcc=util[_0xb77b('0xc5')](_0xb77b('0xd2'),_0x111466[_0xb77b('0xbb')]['id'],_0x20e505);var _0x2b6fff=path['join'](_0x25ac62,_0x551dcc);var _0x55cd8b=[];_0x55cd8b[_0xb77b('0x37')]({'model':db[_0xb77b('0x74')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x55cd8b[_0xb77b('0x37')]({'model':db[_0xb77b('0xd3')],'as':_0xb77b('0x69'),'attributes':['id','firstName',_0xb77b('0xd4')],'raw':!![]});var _0x3b861f=[{'model':db[_0xb77b('0xc1')],'as':_0xb77b('0xd5'),'attributes':['id',_0xb77b('0x78'),_0xb77b('0xd6'),_0xb77b('0xd7'),_0xb77b('0xd8'),_0xb77b('0x84')],'include':_0x55cd8b}];_0x3b861f['push']({'model':db[_0xb77b('0xd9')],'as':_0xb77b('0xda'),'attributes':['id',_0xb77b('0x4d')]});_0x3b861f['push']({'model':db['User'],'as':'Owner','attributes':['id',_0xb77b('0x32')]});return db[_0xb77b('0x39')][_0xb77b('0x6d')]({'where':{'id':_0x111466[_0xb77b('0xbb')]['id']},'include':_0x3b861f})[_0xb77b('0x2b')](handleEntityNotFound(_0x792b00,null))[_0xb77b('0x2b')](function(_0xf318cb){if(_0xf318cb){var _0x5f10af=_0xf318cb[_0xb77b('0xdb')]({'plain':!![]});fs[_0xb77b('0xdc')](_0x248525);var _0x44a02f={'channel':'Sms','account':_0x5f10af[_0xb77b('0xda')][_0xb77b('0x4d')],'agent':_0x5f10af[_0xb77b('0xdd')]?_0x5f10af['Owner'][_0xb77b('0x32')]:'N.A.','createdAt':moment(_0x5f10af[_0xb77b('0xd6')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xb77b('0x9d')](),'closedAt':_0x5f10af[_0xb77b('0xde')]?moment(_0x5f10af[_0xb77b('0xdf')])['format'](_0xb77b('0xe0'))[_0xb77b('0x9d')]():'','disposition':_0x5f10af[_0xb77b('0xe1')],'messages':_(_0x5f10af['Messages'])[_0xb77b('0x88')]({'secret':![]})[_0xb77b('0x31')](function(_0x8e3cf2){return{'date':moment(_0x8e3cf2[_0xb77b('0xd6')])[_0xb77b('0xc5')](_0xb77b('0xe0'))[_0xb77b('0x9d')](),'sender':_0x8e3cf2['direction']===_0xb77b('0xe2')?_0x8e3cf2[_0xb77b('0x74')]?_0x8e3cf2[_0xb77b('0x74')][_0xb77b('0x32')]:_0xb77b('0xe3'):_0x8e3cf2[_0xb77b('0x69')]['firstName']+(_0x8e3cf2[_0xb77b('0x69')][_0xb77b('0xd4')]?'\x20'+_0x8e3cf2[_0xb77b('0x69')]['lastName']:''),'body':_0x8e3cf2[_0xb77b('0x78')],'direction':_0x8e3cf2[_0xb77b('0xd7')]===_0xb77b('0xe2')?'A':'C','secret':_0x8e3cf2[_0xb77b('0xd8')],'read':_0x8e3cf2[_0xb77b('0x84')]};})[_0xb77b('0x65')]()};return ejs['renderFile'](path['join'](config[_0xb77b('0xcf')],_0xb77b('0xd0'),_0xb77b('0xe4'),_0xb77b('0xe5')),{'interaction':_0x44a02f})[_0xb77b('0x2b')](function(_0x1e3bf3){var _0x280d39=path[_0xb77b('0xce')](_0x248525,_0xb77b('0xe6')+_0x5f10af['id']+'-'+_0x20e505+_0xb77b('0xe7'));var _0x36a72f={'path':_0x280d39,'channel':_0xb77b('0xe8'),'interactionId':_0x5f10af['id']};return pdf[_0xb77b('0xe9')](_0x1e3bf3,_0x36a72f);})[_0xb77b('0x2b')](function(){return new BPromise(function(_0x367939,_0x5c5d8c){zipdir(_0x248525,{'saveTo':_0x2b6fff},function(_0x5e4a7b,_0x7b6b6d){if(_0x5e4a7b)return _0x5c5d8c(_0x5e4a7b);return _0x367939(_0x7b6b6d);});})['then'](function(){return new BPromise(function(_0x5aabab,_0x4ae913){rimraf(_0x248525,function(_0x14a468){if(_0x14a468)_0x4ae913(_0x14a468);return _0x5aabab();});});})[_0xb77b('0x2b')](function(){return _0x792b00[_0xb77b('0xcc')](_0x2b6fff,_0x551dcc,function(_0x88e516){if(_0x88e516){console[_0xb77b('0xea')](_0xb77b('0xeb'),_0x88e516);}else{fs[_0xb77b('0xec')](_0x2b6fff);}});});});}else{return _0x792b00[_0xb77b('0x2d')](0xc8);}})[_0xb77b('0xb9')](handleError(_0x792b00,null));};
\ No newline at end of file
+var _0x142c=['isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','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','clone','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','keyBy','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','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','i.*','c.firstName','Contact.firstName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','show','includeAll','include','merge','options','create','params','describe','addMessage','SmsMessage','ids','findOne','nolimit','sort','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','setTags','omit','spread','emit','smsInteractionTags:save','removeTags','download','join','root','files','tmp','server','attachments','format','transcript-%d-%s.zip','CmContact','firstName','Messages','createdAt','direction','SmsAccount','Account','Owner','get','mkdirSync','Sms','N.A.','closed','closedAt','disposition','out','System','lastName','views','downloadInteraction.ejs','transcript-','.pdf','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','lodash','crypto','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','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','Users','map','fullname','TagIds','Tags','push','catch','index','SmsInteraction','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','where','pick','select','color','from','field','u.id','ui.SmsInteractionId','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_messages','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','unreadMessages','having','`\x20>\x200','Contact','operator','$substring','value','split','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','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?','UserId','body','some','compact'];(function(_0x572f9b,_0x166714){var _0x32c21f=function(_0x4b9b46){while(--_0x4b9b46){_0x572f9b['push'](_0x572f9b['shift']());}};_0x32c21f(++_0x166714);}(_0x142c,0x163));var _0xc142=function(_0x166c76,_0x37bf78){_0x166c76=_0x166c76-0x0;var _0x1a5afd=_0x142c[_0x166c76];return _0x1a5afd;};'use strict';var emlformat=require(_0xc142('0x0'));var rimraf=require(_0xc142('0x1'));var zipdir=require(_0xc142('0x2'));var jsonpatch=require(_0xc142('0x3'));var rp=require(_0xc142('0x4'));var moment=require(_0xc142('0x5'));var BPromise=require(_0xc142('0x6'));var Mustache=require(_0xc142('0x7'));var util=require(_0xc142('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xc142('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc142('0xa'));var squel=require('squel');var crypto=require(_0xc142('0xb'));var jsforce=require(_0xc142('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc142('0x9'));var querystring=require(_0xc142('0xd'));var Papa=require(_0xc142('0xe'));var Redis=require('ioredis');var authService=require(_0xc142('0xf'));var qs=require(_0xc142('0x10'));var as=require(_0xc142('0x11'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xc142('0x12'));var logger=require(_0xc142('0x13'))(_0xc142('0x14'));var utils=require(_0xc142('0x15'));var config=require(_0xc142('0x16'));var licenseUtil=require(_0xc142('0x17'));var db=require(_0xc142('0x18'))['db'];config[_0xc142('0x19')]=_['defaults'](config[_0xc142('0x19')],{'host':_0xc142('0x1a'),'port':0x18eb});var socket=require(_0xc142('0x1b'))(new Redis(config['redis']));require(_0xc142('0x1c'))[_0xc142('0x1d')](socket);function respondWithStatusCode(_0x56f6d0,_0x5d312e){_0x5d312e=_0x5d312e||0xcc;return function(_0x506243){if(_0x506243){return _0x56f6d0['sendStatus'](_0x5d312e);}return _0x56f6d0['status'](_0x5d312e)['end']();};}function respondWithResult(_0xa49676,_0x52eb81){_0x52eb81=_0x52eb81||0xc8;return function(_0x502cee){if(_0x502cee){return _0xa49676['status'](_0x52eb81)[_0xc142('0x1e')](_0x502cee);}};}function respondWithFilteredResult(_0x45b244,_0x51072c){return function(_0x288bc4){if(_0x288bc4){var _0x2ec20a=typeof _0x51072c['offset']===_0xc142('0x1f')&&typeof _0x51072c[_0xc142('0x20')]==='undefined';var _0x216f48=_0x288bc4[_0xc142('0x21')];var _0x42666f=_0x2ec20a?0x0:_0x51072c[_0xc142('0x22')];var _0x11e7a4=_0x2ec20a?_0x288bc4[_0xc142('0x21')]:_0x51072c[_0xc142('0x22')]+_0x51072c['limit'];var _0x2f71c8;if(_0x11e7a4>=_0x216f48){_0x11e7a4=_0x216f48;_0x2f71c8=0xc8;}else{_0x2f71c8=0xce;}_0x45b244[_0xc142('0x23')](_0x2f71c8);return _0x45b244[_0xc142('0x24')](_0xc142('0x25'),_0x42666f+'-'+_0x11e7a4+'/'+_0x216f48)[_0xc142('0x1e')](_0x288bc4);}return null;};}function patchUpdates(_0x351d96){return function(_0x401e68){try{jsonpatch[_0xc142('0x26')](_0x401e68,_0x351d96,!![]);}catch(_0x3b5586){return BPromise[_0xc142('0x27')](_0x3b5586);}return _0x401e68[_0xc142('0x28')]();};}function saveUpdates(_0x44b224,_0x5a227d){return function(_0x5e8ffb){if(_0x5e8ffb){return _0x5e8ffb[_0xc142('0x29')](_0x44b224)[_0xc142('0x2a')](function(_0x58ee2d){return _0x58ee2d;});}return null;};}function removeEntity(_0x1238a2,_0x42f112){return function(_0x2f7364){if(_0x2f7364){return _0x2f7364[_0xc142('0x2b')]()[_0xc142('0x2a')](function(){_0x1238a2['status'](0xcc)[_0xc142('0x2c')]();});}};}function handleEntityNotFound(_0x3437d9,_0x42c0c7){return function(_0x2a026b){if(!_0x2a026b){_0x3437d9[_0xc142('0x2d')](0x194);}return _0x2a026b;};}function handleError(_0x50adeb,_0x33e4c3){_0x33e4c3=_0x33e4c3||0x1f4;return function(_0x3e994b){logger[_0xc142('0x2e')](_0x3e994b[_0xc142('0x2f')]);if(_0x3e994b[_0xc142('0x30')]){delete _0x3e994b['name'];}_0x50adeb[_0xc142('0x23')](_0x33e4c3)[_0xc142('0x31')](_0x3e994b);};}function getInteractionUsers(_0x56a6f7,_0x3474f2){return new BPromise(function(_0x55f958,_0x22235a){try{if(_0x3474f2[_0x56a6f7['id']]){_0x56a6f7[_0xc142('0x32')]=_[_0xc142('0x33')](_0x3474f2[_0x56a6f7['id']],function(_0x2b6025){return{'id':_0x2b6025['id'],'fullname':_0x2b6025[_0xc142('0x34')]};});}}catch(_0x22a672){_0x22235a(_0x22a672);}_0x55f958(_0x56a6f7);});}function getInteractionTags(_0x446899,_0x1fb906){return new BPromise(function(_0x8ec47f,_0x18d35f){try{if(_0x446899[_0xc142('0x35')]){_0x446899[_0xc142('0x36')]=[];_0x446899['TagIds']['split'](',')['forEach'](function(_0x49fa3c){_0x446899[_0xc142('0x36')][_0xc142('0x37')](_0x1fb906[_0x49fa3c]);});}delete _0x446899[_0xc142('0x35')];}catch(_0x2781c4){_0x18d35f(_0x2781c4);}_0x8ec47f(_0x446899);});}function updateSmsInteraction(_0x172303,_0xdc4148,_0x494ad0){return new BPromise(function(_0x355ebd,_0x15e6fd){return getInteractionUsers(_0x172303,_0x494ad0)[_0xc142('0x2a')](function(_0x372620){return getInteractionTags(_0x372620,_0xdc4148);})[_0xc142('0x2a')](function(_0x5ccf9d){_0x355ebd(_0x5ccf9d);})[_0xc142('0x38')](function(_0x389202){_0x15e6fd(_0x389202);});});}exports[_0xc142('0x39')]=function(_0x44c586,_0x2a5729){var _0x3387cd={},_0x2bf406={},_0x3e0551={'count':0x0,'rows':[]};var _0x4cb705=_[_0xc142('0x33')](db[_0xc142('0x3a')][_0xc142('0x3b')],function(_0x437f2a){return{'name':_0x437f2a[_0xc142('0x3c')],'type':_0x437f2a[_0xc142('0x3d')][_0xc142('0x3e')]};});_0x2bf406['model']=_['map'](_0x4cb705,_0xc142('0x30'));_0x2bf406[_0xc142('0x3f')]=_[_0xc142('0x40')](_0x44c586['query']);_0x2bf406[_0xc142('0x41')]=_[_0xc142('0x42')](_0x2bf406[_0xc142('0x43')],_0x2bf406['query']);_0x3387cd[_0xc142('0x44')]=_[_0xc142('0x42')](_0x2bf406[_0xc142('0x43')],qs[_0xc142('0x45')](_0x44c586['query'][_0xc142('0x45')]));_0x3387cd['attributes']=_0x3387cd[_0xc142('0x44')][_0xc142('0x46')]?_0x3387cd[_0xc142('0x44')]:_0x2bf406[_0xc142('0x43')];if(!_0x44c586['query'][_0xc142('0x47')]('nolimit')){_0x3387cd[_0xc142('0x20')]=qs['limit'](_0x44c586[_0xc142('0x3f')]['limit']);_0x3387cd[_0xc142('0x22')]=qs[_0xc142('0x22')](_0x44c586[_0xc142('0x3f')][_0xc142('0x22')]);}_0x3387cd[_0xc142('0x48')]=qs['sort'](_0x44c586[_0xc142('0x3f')]['sort']);_0x3387cd[_0xc142('0x49')]=qs[_0xc142('0x41')](_[_0xc142('0x4a')](_0x44c586['query'],_0x2bf406[_0xc142('0x41')]),_0x4cb705);var _0x80be37=[];var _0xa9456c=squel[_0xc142('0x4b')]()['field']('id')['field'](_0xc142('0x30'))['field'](_0xc142('0x4c'))[_0xc142('0x4d')]('tools_tags');var _0x15672f=squel[_0xc142('0x4b')]()[_0xc142('0x4e')](_0xc142('0x4f'))[_0xc142('0x4e')]('u.fullname')['field'](_0xc142('0x50'))['from'](_0xc142('0x51'),'ui')[_0xc142('0x52')](_0xc142('0x53'),'u',_0xc142('0x54'));var _0x57022d=squel[_0xc142('0x4b')]()[_0xc142('0x4d')]('sms_interactions','i')['left_join'](_0xc142('0x55'),'c',_0xc142('0x56'))[_0xc142('0x52')](_0xc142('0x53'),'o',_0xc142('0x57'))['left_join']('sms_accounts','a','a.id\x20=\x20i.SmsAccountId')[_0xc142('0x52')](_0xc142('0x58'),'me','me.SmsInteractionId\x20=\x20i.id')[_0xc142('0x52')](_0xc142('0x59'),'it',_0xc142('0x5a'))['left_join']('tools_tags','t',_0xc142('0x5b'));var _0x3a8489=squel[_0xc142('0x5c')]();var _0x5d81cc=[];var _0x74500=squel['expr']();var _0x3edf95;if(_0x44c586[_0xc142('0x3f')][_0xc142('0x5d')]){_0x3edf95=as[_0xc142('0x5e')](_0x44c586[_0xc142('0x3f')][_0xc142('0x5d')]);var _0x244d32=_0x3edf95[_0xc142('0x5f')];for(var _0x4a5501=0x0;_0x4a5501<_0x3edf95[_0xc142('0x60')]['length'];_0x4a5501++){var _0x2c12b9=_0x3edf95[_0xc142('0x60')][_0x4a5501];var _0x22900b='i';var _0x17cbe7=_['find'](_0x4cb705,[_0xc142('0x30'),_0x2c12b9[_0xc142('0x4e')]]);if(!_0x17cbe7){switch(_0x2c12b9[_0xc142('0x4e')]){case _0xc142('0x61'):if(_0x2c12b9['value']==0x1){_0x57022d[_0xc142('0x62')]('`'+_0x2c12b9[_0xc142('0x4e')]+'`\x20=\x200');}else{_0x57022d[_0xc142('0x62')]('`'+_0x2c12b9[_0xc142('0x4e')]+_0xc142('0x63'));}break;case _0xc142('0x64'):if(_0x2c12b9[_0xc142('0x65')]===_0xc142('0x66')){if(_0x2c12b9[_0xc142('0x67')][_0xc142('0x68')]('\x20')[_0xc142('0x46')]>0x1){_0x3a8489[_0x244d32]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xc142('0x69')](_0x2c12b9[_0xc142('0x67')]),null);}else{var _0x56d9a6='%'+_0x2c12b9[_0xc142('0x67')]+'%';_0x3a8489[_0x244d32](_0xc142('0x6a'),_0x56d9a6,_0x56d9a6,_0x56d9a6);}}else{_0x17cbe7=_[_0xc142('0x6b')](_0x4cb705,[_0xc142('0x30'),'ContactId']);_0x2c12b9[_0xc142('0x4e')]='ContactId';_0x15e3fb=as[_0xc142('0x6c')](_0x22900b,_0x17cbe7[_0xc142('0x3d')],_0x2c12b9);_0x3a8489[_0x244d32](_0x15e3fb[_0xc142('0x6d')],_0x15e3fb['value'][_0xc142('0x6e')],_0x15e3fb[_0xc142('0x67')][_0xc142('0x2c')]);}break;case _0xc142('0x6f'):var _0x5a8000=_0x2c12b9[_0xc142('0x67')][_0xc142('0x68')](',')[_0xc142('0x33')](function(_0xb19f37){return Number(_0xb19f37);});_0x5a8000[_0xc142('0x70')](function(_0x1adc3a){_0x74500['or'](_0xc142('0x71'),'%,'+_0x1adc3a+',%');});_0x5d81cc=_[_0xc142('0x72')](_0x5d81cc,_0x5a8000);break;case _0xc142('0x73'):if(_0x2c12b9[_0xc142('0x65')]===_0xc142('0x66')){_0x3a8489[_0x244d32](_0xc142('0x74'),'%'+_0x2c12b9[_0xc142('0x67')]+'%',null);}else{_0x17cbe7=_[_0xc142('0x6b')](_0x4cb705,['name',_0xc142('0x75')]);_0x2c12b9[_0xc142('0x4e')]=_0xc142('0x75');_0x15e3fb=as[_0xc142('0x6c')](_0x22900b,_0x17cbe7[_0xc142('0x3d')],_0x2c12b9);_0x3a8489[_0x244d32](_0x15e3fb[_0xc142('0x6d')],_0x15e3fb[_0xc142('0x67')][_0xc142('0x6e')],_0x15e3fb[_0xc142('0x67')]['end']);}break;case _0xc142('0x76'):_0x15e3fb=as[_0xc142('0x6c')]('me',null,_0x2c12b9);_0x3a8489[_0x244d32](_0x15e3fb['text'],_0x15e3fb[_0xc142('0x67')]['start'],_0x15e3fb[_0xc142('0x67')]['end']);break;}}else{var _0x15e3fb=as[_0xc142('0x6c')](_0x22900b,_0x17cbe7['type'],_0x2c12b9);_0x3a8489[_0x244d32](_0x15e3fb[_0xc142('0x6d')],_0x15e3fb[_0xc142('0x67')]['start'],_0x15e3fb['value'][_0xc142('0x2c')]);}}}else{var _0x526bc1=_(_0x44c586[_0xc142('0x3f')])[_0xc142('0x40')]()[_0xc142('0x33')](function(_0x1f4786){return _[_0xc142('0x77')](_0x4cb705,[_0xc142('0x30'),_0x1f4786])?_0x1f4786:undefined;})[_0xc142('0x78')]()[_0xc142('0x67')]();if(!_[_0xc142('0x79')](_0x526bc1)){_0x526bc1[_0xc142('0x70')](function(_0x4b99fb){if(_0x4b99fb===_0xc142('0x7a')){_0x57022d['where'](_0xc142('0x7b'),[][_0xc142('0x7c')](_0x44c586[_0xc142('0x3f')][_0x4b99fb]));}else if(_0x4b99fb==='createdAt'){var _0x5857b9=JSON[_0xc142('0x7d')](_0x44c586['query'][_0x4b99fb])[_0xc142('0x7e')];var _0x17d3ca=JSON[_0xc142('0x7d')](_0x44c586['query'][_0x4b99fb])[_0xc142('0x7f')];_0x57022d['where'](_0xc142('0x80'),_0x5857b9,_0x17d3ca);}else{if(_0x44c586[_0xc142('0x3f')][_0x4b99fb]==='null'){_0x57022d[_0xc142('0x49')]('i.'+_0x4b99fb+_0xc142('0x81'));}else{_0x57022d[_0xc142('0x49')]('i.'+_0x4b99fb+_0xc142('0x82'),_0x44c586['query'][_0x4b99fb]);}}});}if(_0x44c586[_0xc142('0x3f')][_0xc142('0x83')]){if(_0x44c586['query'][_0xc142('0x83')]==0x1){_0x57022d[_0xc142('0x62')](_0xc142('0x84'));}else{_0x57022d[_0xc142('0x62')](_0xc142('0x85'));}}if(_0x44c586[_0xc142('0x3f')][_0xc142('0x86')]){_0x5d81cc=_[_0xc142('0x87')](_0x44c586['query'][_0xc142('0x86')])?_0x44c586['query'][_0xc142('0x86')]:new Array(_0x44c586[_0xc142('0x3f')][_0xc142('0x86')]);_0x5d81cc[_0xc142('0x70')](function(_0x302f93){_0x74500['or'](_0xc142('0x71'),'%,'+_0x302f93+',%');});}if(_0x44c586['query'][_0xc142('0x88')]){var _0x2716f2=_0x44c586['query'][_0xc142('0x88')][_0xc142('0x89')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x2716f2)){_0x3a8489['or']('i.id\x20LIKE\x20?',_0x2716f2+'%')['or'](_0xc142('0x8a'),_0x2716f2+'%');}else{_0x3a8489['or'](_0xc142('0x8b'),qs[_0xc142('0x69')](_0x2716f2))['or'](_0xc142('0x8c'),_0x2716f2+'%');}}}_0x57022d[_0xc142('0x49')](_0x3a8489);_0x57022d[_0xc142('0x8d')](_0xc142('0x8e'));var _0x1ad819={'type':db[_0xc142('0x8f')][_0xc142('0x90')]['SELECT'],'raw':!![]};var _0x27aa19=_0x57022d[_0xc142('0x91')]();_0x27aa19[_0xc142('0x4e')](_0xc142('0x8e'));_0x27aa19[_0xc142('0x4e')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xc142('0x61'));if(_0x3387cd['order']){_0x3387cd[_0xc142('0x48')][_0xc142('0x70')](function(_0x510e7e){var _0xb7c58e=_0x510e7e[0x0]===_0xc142('0x92')?_0x510e7e[0x0]:'i.'+_0x510e7e[0x0];_0x57022d[_0xc142('0x48')](_0xb7c58e,_0x510e7e[0x1]===_0xc142('0x93')?![]:!![]);});}if(!_[_0xc142('0x79')](_0x5d81cc)){_0x57022d['having'](_0x74500);_0x27aa19[_0xc142('0x49')](_0xc142('0x94'),_0x5d81cc);}BPromise[_0xc142('0x95')]()[_0xc142('0x2a')](function(){if(!_0x3edf95){if(_0x44c586[_0xc142('0x3f')][_0xc142('0x7a')])return;_0x27aa19[_0xc142('0x49')](_0xc142('0x96'));_0x57022d[_0xc142('0x49')](_0xc142('0x96'));return;}if(_0x44c586[_0xc142('0x97')]['role']!==_0xc142('0x98'))return;return _0x44c586[_0xc142('0x97')][_0xc142('0x99')]({'attributes':['id'],'raw':!![]})['then'](function(_0x3cbbe2){if(_[_0xc142('0x79')](_0x3cbbe2)){_0x27aa19[_0xc142('0x49')](_0xc142('0x9a'));_0x57022d[_0xc142('0x49')](_0xc142('0x9a'));}else{_0x27aa19[_0xc142('0x49')](_0xc142('0x7b'),_[_0xc142('0x33')](_0x3cbbe2,'id'));_0x57022d[_0xc142('0x49')](_0xc142('0x7b'),_[_0xc142('0x33')](_0x3cbbe2,'id'));}});})['then'](function(){if(_0x44c586[_0xc142('0x97')]['role']===_0xc142('0x98')&&!_0x3edf95&&!_0x44c586[_0xc142('0x3f')][_0xc142('0x7a')])return[];return db[_0xc142('0x9b')][_0xc142('0x3f')](_0x27aa19['toString'](),_0x1ad819);})[_0xc142('0x2a')](function(_0x1d10f2){_0x3e0551[_0xc142('0x21')]=_0x1d10f2[_0xc142('0x46')];if(_0x3e0551[_0xc142('0x21')]===0x0)return[];return db[_0xc142('0x9b')][_0xc142('0x3f')](_0xa9456c[_0xc142('0x9c')](),_0x1ad819)[_0xc142('0x2a')](function(_0x15f039){_0x80be37=_[_0xc142('0x9d')](_0x15f039,'id');_0x1ad819=_['merge'](_0x1ad819,{'model':db[_0xc142('0x3a')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x44c586[_0xc142('0x3f')][_0xc142('0x45')]){_0x3387cd[_0xc142('0x44')][_0xc142('0x70')](function(_0x2ff78d){_0x57022d['field']('i.'+_0x2ff78d);});}else{_0x57022d[_0xc142('0x4e')](_0xc142('0x9e'),'unreadMessages');_0x57022d['field'](_0xc142('0x9f'),_0xc142('0xa0'));_0x57022d[_0xc142('0x4e')]('a.mandatoryDisposition',_0xc142('0xa1'));_0x57022d[_0xc142('0x4e')](_0xc142('0xa2'),'contactName');_0x57022d[_0xc142('0x4e')](_0xc142('0xa3'));_0x57022d[_0xc142('0x4e')](_0xc142('0xa4'),_0xc142('0xa5'));_0x57022d[_0xc142('0x4e')]('c.lastName',_0xc142('0xa6'));_0x57022d['field'](_0xc142('0xa7'),_0xc142('0xa8'));_0x57022d[_0xc142('0x4e')](_0xc142('0xa9'),_0xc142('0xaa'));_0x57022d[_0xc142('0x4e')](_0xc142('0xab'),_0xc142('0xac'));_0x57022d['field']('c.fax','Contact.fax');_0x57022d[_0xc142('0x4e')](_0xc142('0xad'),_0xc142('0xae'));_0x57022d[_0xc142('0x4e')](_0xc142('0xaf'),_0xc142('0xb0'));_0x57022d[_0xc142('0x4e')](_0xc142('0xb1'),'TagIds');}if(_0x3387cd['limit'])_0x57022d[_0xc142('0x20')](_0x3387cd[_0xc142('0x20')]);if(_0x3387cd[_0xc142('0x22')])_0x57022d[_0xc142('0x22')](_0x3387cd[_0xc142('0x22')]);return db[_0xc142('0x9b')]['query'](_0x57022d['toString'](),_0x1ad819);})[_0xc142('0x2a')](function(_0x4cb145){if(_0x4cb145[_0xc142('0x46')]>0x0)_0x15672f[_0xc142('0x49')](_0xc142('0xb2'),_[_0xc142('0x33')](_0x4cb145,'id'));return db[_0xc142('0x9b')]['query'](_0x15672f['toString'](),_0x1ad819)['then'](function(_0x460515){var _0x42db36=_[_0xc142('0xb3')](_0x460515,_0xc142('0xb4'));var _0x47a3b5=[];_0x4cb145[_0xc142('0x70')](function(_0x304cbc){_0x47a3b5[_0xc142('0x37')](updateSmsInteraction(_0x304cbc,_0x80be37,_0x42db36));});return BPromise[_0xc142('0xb5')](_0x47a3b5);});});})[_0xc142('0x2a')](function(_0xd5fff4){_0x3e0551['rows']=_0xd5fff4;return _0x3e0551;})[_0xc142('0x2a')](respondWithFilteredResult(_0x2a5729,_0x3387cd))[_0xc142('0x38')](handleError(_0x2a5729,null));};exports[_0xc142('0xb6')]=function(_0x458b5f,_0xf9856d){var _0x2c92f9={'raw':![],'where':{'id':_0x458b5f['params']['id']}},_0x243ef0={};_0x243ef0[_0xc142('0x43')]=_[_0xc142('0x40')](db[_0xc142('0x3a')][_0xc142('0x3b')]);_0x243ef0[_0xc142('0x3f')]=_[_0xc142('0x40')](_0x458b5f[_0xc142('0x3f')]);_0x243ef0['filters']=_[_0xc142('0x42')](_0x243ef0[_0xc142('0x43')],_0x243ef0[_0xc142('0x3f')]);_0x2c92f9[_0xc142('0x44')]=_[_0xc142('0x42')](_0x243ef0[_0xc142('0x43')],qs[_0xc142('0x45')](_0x458b5f['query']['fields']));_0x2c92f9[_0xc142('0x44')]=_0x2c92f9[_0xc142('0x44')][_0xc142('0x46')]?_0x2c92f9[_0xc142('0x44')]:_0x243ef0[_0xc142('0x43')];if(_0x458b5f[_0xc142('0x3f')][_0xc142('0xb7')]){_0x2c92f9[_0xc142('0xb8')]=[{'all':!![]}];}_0x2c92f9=_[_0xc142('0xb9')]({},_0x2c92f9,_0x458b5f[_0xc142('0xba')]);return db[_0xc142('0x3a')][_0xc142('0x6b')](_0x2c92f9)['then'](handleEntityNotFound(_0xf9856d,null))['then'](respondWithResult(_0xf9856d,null))['catch'](handleError(_0xf9856d,null));};exports[_0xc142('0xbb')]=function(_0x57a41f,_0x147e11){return db[_0xc142('0x3a')][_0xc142('0xbb')](_0x57a41f[_0xc142('0x76')],{})[_0xc142('0x2a')](respondWithResult(_0x147e11,0xc9))[_0xc142('0x38')](handleError(_0x147e11,null));};exports[_0xc142('0x29')]=function(_0x31dce9,_0x2b6dbe){if(_0x31dce9['body']['id']){delete _0x31dce9['body']['id'];}return db['SmsInteraction'][_0xc142('0x6b')]({'where':{'id':_0x31dce9[_0xc142('0xbc')]['id']}})[_0xc142('0x2a')](handleEntityNotFound(_0x2b6dbe,null))[_0xc142('0x2a')](saveUpdates(_0x31dce9[_0xc142('0x76')],null))['then'](respondWithResult(_0x2b6dbe,null))[_0xc142('0x38')](handleError(_0x2b6dbe,null));};exports[_0xc142('0x2b')]=function(_0x3fcedf,_0x1261ec){return db[_0xc142('0x3a')][_0xc142('0x6b')]({'where':{'id':_0x3fcedf[_0xc142('0xbc')]['id']}})['then'](handleEntityNotFound(_0x1261ec,null))['then'](removeEntity(_0x1261ec,null))['catch'](handleError(_0x1261ec,null));};exports[_0xc142('0xbd')]=function(_0x1129d8,_0x93f160){return db[_0xc142('0x3a')][_0xc142('0xbd')]()[_0xc142('0x2a')](respondWithResult(_0x93f160,null))[_0xc142('0x38')](handleError(_0x93f160,null));};exports[_0xc142('0xbe')]=function(_0x1e0b8b,_0x4917e7,_0xdaf62a){return db[_0xc142('0xbf')]['find']({'where':{'id':_0x1e0b8b[_0xc142('0xbc')]['id']}})['then'](handleEntityNotFound(_0x4917e7,null))[_0xc142('0x2a')](function(_0x4587ff){if(_0x4587ff){return _0x4587ff[_0xc142('0xbe')](_0x1e0b8b[_0xc142('0x76')][_0xc142('0xc0')],_['omit'](_0x1e0b8b['body'],['ids','id'])||{});}})[_0xc142('0x2a')](respondWithResult(_0x4917e7,null))['catch'](handleError(_0x4917e7,null));};exports['getMessages']=function(_0x3e997a,_0x14f528,_0x33c281){var _0x30d202={'raw':![],'where':{}};var _0x16ddef={};var _0x396950={'count':0x0,'rows':[]};return db[_0xc142('0x3a')][_0xc142('0xc1')]({'where':{'id':_0x3e997a[_0xc142('0xbc')]['id']}})[_0xc142('0x2a')](handleEntityNotFound(_0x14f528,null))[_0xc142('0x2a')](function(_0x49fb95){if(_0x49fb95){_0x16ddef['model']=_['keys'](db[_0xc142('0xbf')][_0xc142('0x3b')]);_0x16ddef['query']=_[_0xc142('0x40')](_0x3e997a[_0xc142('0x3f')]);_0x16ddef[_0xc142('0x41')]=_[_0xc142('0x42')](_0x16ddef[_0xc142('0x43')],_0x16ddef['query']);_0x30d202['attributes']=_[_0xc142('0x42')](_0x16ddef[_0xc142('0x43')],qs[_0xc142('0x45')](_0x3e997a[_0xc142('0x3f')][_0xc142('0x45')]));_0x30d202[_0xc142('0x44')]=_0x30d202['attributes']['length']?_0x30d202[_0xc142('0x44')]:_0x16ddef[_0xc142('0x43')];if(!_0x3e997a['query']['hasOwnProperty'](_0xc142('0xc2'))){_0x30d202[_0xc142('0x20')]=qs['limit'](_0x3e997a[_0xc142('0x3f')][_0xc142('0x20')]);_0x30d202[_0xc142('0x22')]=qs[_0xc142('0x22')](_0x3e997a['query'][_0xc142('0x22')]);}_0x30d202[_0xc142('0x48')]=qs[_0xc142('0xc3')](_0x3e997a[_0xc142('0x3f')][_0xc142('0xc3')]);_0x30d202['where']=qs[_0xc142('0x41')](_['pick'](_0x3e997a[_0xc142('0x3f')],_0x16ddef[_0xc142('0x41')]));_0x30d202[_0xc142('0x49')][_0xc142('0xb4')]=_0x49fb95['id'];if(_0x3e997a[_0xc142('0x3f')][_0xc142('0x88')]){_0x30d202[_0xc142('0x49')]=_['merge'](_0x30d202['where'],{'$or':_[_0xc142('0x33')](_0x30d202[_0xc142('0x44')],function(_0x1e9bc1){var _0x1f7ecf={};_0x1f7ecf[_0x1e9bc1]={'$like':'%'+_0x3e997a[_0xc142('0x3f')][_0xc142('0x88')]+'%'};return _0x1f7ecf;})});}if(_0x3e997a[_0xc142('0x3f')][_0xc142('0x7e')]){var _0x1bfee2=_0x3e997a[_0xc142('0x3f')][_0xc142('0x7e')][_0xc142('0x68')](',');var _0x231b29={};_0x231b29[_0x1bfee2[0x0]]={'$gte':moment(_0x1bfee2[0x1])['format'](_0xc142('0xc4'))};_0x30d202['where']=_['merge'](_0x30d202[_0xc142('0x49')],_0x231b29);}_0x30d202=_[_0xc142('0xb9')]({},_0x30d202,_0x3e997a[_0xc142('0xba')]);return db[_0xc142('0xbf')][_0xc142('0x21')]({'where':_0x30d202[_0xc142('0x49')]})[_0xc142('0x2a')](function(_0xd8091c){_0x396950[_0xc142('0x21')]=_0xd8091c;if(_0x3e997a['query'][_0xc142('0xb7')]){_0x30d202['include']=[{'all':!![]}];}return db[_0xc142('0xbf')][_0xc142('0xc5')](_0x30d202);})[_0xc142('0x2a')](function(_0x47d7c3){_0x396950[_0xc142('0xc6')]=_0x47d7c3;return _0x396950;});}})[_0xc142('0x2a')](respondWithFilteredResult(_0x14f528,_0x30d202))[_0xc142('0x38')](handleError(_0x14f528,null));};exports['addTags']=function(_0x6a3c4,_0x55f447,_0x4a5a39){return db[_0xc142('0x3a')][_0xc142('0x6b')]({'where':{'id':_0x6a3c4[_0xc142('0xbc')]['id']}})[_0xc142('0x2a')](handleEntityNotFound(_0x55f447,null))[_0xc142('0x2a')](function(_0x22a17c){if(_0x22a17c){return _0x22a17c[_0xc142('0xc7')](_0x6a3c4['body'][_0xc142('0xc0')],_[_0xc142('0xc8')](_0x6a3c4['body'],[_0xc142('0xc0'),'id'])||{})[_0xc142('0xc9')](function(){return db[_0xc142('0x6f')][_0xc142('0xc5')]({'attributes':['id',_0xc142('0x30'),'color'],'where':{'id':_0x6a3c4[_0xc142('0x76')][_0xc142('0xc0')]}});})[_0xc142('0x2a')](function(_0x2e2823){socket[_0xc142('0xca')](_0xc142('0xcb'),{'id':Number(_0x6a3c4[_0xc142('0xbc')]['id']),'tags':_0x2e2823||[]});return{'id':Number(_0x6a3c4['params']['id']),'tags':_0x2e2823||[]};});}})[_0xc142('0x2a')](respondWithResult(_0x55f447,null))[_0xc142('0x38')](handleError(_0x55f447,null));};exports['removeTags']=function(_0x548ea2,_0x5a6a21,_0x2994ce){return db['SmsInteraction'][_0xc142('0x6b')]({'where':{'id':_0x548ea2[_0xc142('0xbc')]['id']}})[_0xc142('0x2a')](handleEntityNotFound(_0x5a6a21,null))[_0xc142('0x2a')](function(_0x457341){if(_0x457341){return _0x457341[_0xc142('0xcc')](_0x548ea2[_0xc142('0x3f')][_0xc142('0xc0')]);}})[_0xc142('0x2a')](respondWithStatusCode(_0x5a6a21,null))[_0xc142('0x38')](handleError(_0x5a6a21,null));};exports[_0xc142('0xcd')]=function(_0x231055,_0x24791c){var _0x392441=moment()['unix']()[_0xc142('0x9c')]();var _0x5e6b48=path[_0xc142('0xce')](config[_0xc142('0xcf')],'server',_0xc142('0xd0'),_0xc142('0xd1'));var _0x320378=path[_0xc142('0xce')](config['root'],_0xc142('0xd2'),_0xc142('0xd0'),_0xc142('0xd3'));var _0x5a95aa=path[_0xc142('0xce')](_0x5e6b48,_0x392441);var _0x1d9642=util[_0xc142('0xd4')](_0xc142('0xd5'),_0x231055[_0xc142('0xbc')]['id'],_0x392441);var _0x3ecb81=path['join'](_0x5e6b48,_0x1d9642);var _0x5047f1=[];_0x5047f1['push']({'model':db[_0xc142('0x73')],'as':_0xc142('0x73'),'attributes':['id',_0xc142('0x34')],'raw':!![]});_0x5047f1[_0xc142('0x37')]({'model':db[_0xc142('0xd6')],'as':_0xc142('0x64'),'attributes':['id',_0xc142('0xd7'),'lastName'],'raw':!![]});var _0x279222=[{'model':db['SmsMessage'],'as':_0xc142('0xd8'),'attributes':['id','body',_0xc142('0xd9'),_0xc142('0xda'),'secret',_0xc142('0x83')],'include':_0x5047f1}];_0x279222[_0xc142('0x37')]({'model':db[_0xc142('0xdb')],'as':_0xc142('0xdc'),'attributes':['id',_0xc142('0x30')]});_0x279222[_0xc142('0x37')]({'model':db[_0xc142('0x73')],'as':_0xc142('0xdd'),'attributes':['id',_0xc142('0x34')]});return db[_0xc142('0x3a')][_0xc142('0x6b')]({'where':{'id':_0x231055[_0xc142('0xbc')]['id']},'include':_0x279222})['then'](handleEntityNotFound(_0x24791c,null))[_0xc142('0x2a')](function(_0x521763){if(_0x521763){var _0x732b64=_0x521763[_0xc142('0xde')]({'plain':!![]});fs[_0xc142('0xdf')](_0x5a95aa);var _0x2d82a8={'channel':_0xc142('0xe0'),'account':_0x732b64[_0xc142('0xdc')][_0xc142('0x30')],'agent':_0x732b64[_0xc142('0xdd')]?_0x732b64[_0xc142('0xdd')][_0xc142('0x34')]:_0xc142('0xe1'),'createdAt':moment(_0x732b64[_0xc142('0xd9')])[_0xc142('0xd4')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x732b64[_0xc142('0xe2')]?moment(_0x732b64[_0xc142('0xe3')])[_0xc142('0xd4')](_0xc142('0xc4'))[_0xc142('0x9c')]():'','disposition':_0x732b64[_0xc142('0xe4')],'messages':_(_0x732b64['Messages'])[_0xc142('0x88')]({'secret':![]})[_0xc142('0x33')](function(_0x428873){return{'date':moment(_0x428873[_0xc142('0xd9')])[_0xc142('0xd4')](_0xc142('0xc4'))[_0xc142('0x9c')](),'sender':_0x428873[_0xc142('0xda')]===_0xc142('0xe5')?_0x428873['User']?_0x428873[_0xc142('0x73')]['fullname']:_0xc142('0xe6'):_0x428873[_0xc142('0x64')][_0xc142('0xd7')]+(_0x428873[_0xc142('0x64')]['lastName']?'\x20'+_0x428873[_0xc142('0x64')][_0xc142('0xe7')]:''),'body':_0x428873['body'],'direction':_0x428873[_0xc142('0xda')]==='out'?'A':'C','secret':_0x428873['secret'],'read':_0x428873['read']};})[_0xc142('0x67')]()};return ejs['renderFile'](path[_0xc142('0xce')](config[_0xc142('0xcf')],_0xc142('0xd2'),_0xc142('0xe8'),_0xc142('0xe9')),{'interaction':_0x2d82a8})[_0xc142('0x2a')](function(_0x3ccd26){var _0x491f73=path[_0xc142('0xce')](_0x5a95aa,_0xc142('0xea')+_0x732b64['id']+'-'+_0x392441+_0xc142('0xeb'));var _0x38f537={'path':_0x491f73,'channel':_0xc142('0xe0'),'interactionId':_0x732b64['id']};return pdf['createPdfFromHTML'](_0x3ccd26,_0x38f537);})['then'](function(){return new BPromise(function(_0x50441b,_0x4afeb7){zipdir(_0x5a95aa,{'saveTo':_0x3ecb81},function(_0x348def,_0x1e764b){if(_0x348def)return _0x4afeb7(_0x348def);return _0x50441b(_0x1e764b);});})['then'](function(){return new BPromise(function(_0x88d4c3,_0x59bb17){rimraf(_0x5a95aa,function(_0x1c1749){if(_0x1c1749)_0x59bb17(_0x1c1749);return _0x88d4c3();});});})[_0xc142('0x2a')](function(){return _0x24791c['download'](_0x3ecb81,_0x1d9642,function(_0x942738){if(_0x942738){console[_0xc142('0xec')](_0xc142('0xed'),_0x942738);}else{fs['unlinkSync'](_0x3ecb81);}});});});}else{return _0x24791c[_0xc142('0x2d')](0xc8);}})[_0xc142('0x38')](handleError(_0x24791c,null));};
\ No newline at end of file
index 570583b..bd37f48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430c=['setMaxListeners','getUsers','setDataValue','Users','map','findAll','then','length','emit','catch','hook','events','../../mysqldb','SmsMessage'];(function(_0x3d38ae,_0x51102b){var _0x3757ee=function(_0x22bac8){while(--_0x22bac8){_0x3d38ae['push'](_0x3d38ae['shift']());}};_0x3757ee(++_0x51102b);}(_0x430c,0x1a1));var _0xc430=function(_0x523adf,_0x3e1620){_0x523adf=_0x523adf-0x0;var _0x283870=_0x430c[_0x523adf];return _0x283870;};'use strict';var EventEmitter=require(_0xc430('0x0'));var SmsInteraction=require('../../mysqldb')['db']['SmsInteraction'];var SmsMessage=require(_0xc430('0x1'))['db'][_0xc430('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xc430('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x47d8b9){return function(_0x338a82,_0x2408f5,_0x50b256){_0x338a82[_0xc430('0x4')]({'attributes':['id'],'raw':!![]})['then'](function(_0x212354){_0x338a82[_0xc430('0x5')](_0xc430('0x6'),_0x212354[_0xc430('0x7')](function(_0x2e23f8){return{'id':_0x2e23f8['id']};}));return SmsMessage[_0xc430('0x8')]({'where':{'SmsInteractionId':_0x338a82['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc430('0x9')](function(_0x115814){_0x338a82[_0xc430('0x5')]('unreadMessages',_0x115814[_0xc430('0xa')]);SmsInteractionEvents[_0xc430('0xb')](_0x47d8b9+':'+_0x338a82['id'],_0x338a82);SmsInteractionEvents['emit'](_0x47d8b9,_0x338a82);_0x50b256(null);})[_0xc430('0xc')](_0x50b256(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0xc430('0xd')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0x2da6=['setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','update','getUsers','then'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x2da6,0x1dd));var _0x62da=function(_0x18c25c,_0x3ec26d){_0x18c25c=_0x18c25c-0x0;var _0x1660f2=_0x2da6[_0x18c25c];return _0x1660f2;};'use strict';var EventEmitter=require(_0x62da('0x0'));var SmsInteraction=require(_0x62da('0x1'))['db'][_0x62da('0x2')];var SmsMessage=require(_0x62da('0x1'))['db'][_0x62da('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x62da('0x4')](0x0);var events={'afterCreate':_0x62da('0x5'),'afterUpdate':_0x62da('0x6'),'afterDestroy':'remove'};function emitEvent(_0x4a8428){return function(_0xe28204,_0x3163df,_0x3a59f8){_0xe28204[_0x62da('0x7')]({'attributes':['id'],'raw':!![]})[_0x62da('0x8')](function(_0x9d9139){_0xe28204[_0x62da('0x9')](_0x62da('0xa'),_0x9d9139[_0x62da('0xb')](function(_0x4cfc5d){return{'id':_0x4cfc5d['id']};}));return SmsMessage[_0x62da('0xc')]({'where':{'SmsInteractionId':_0xe28204['id'],'direction':'in','read':![]},'raw':!![]});})[_0x62da('0x8')](function(_0x2a3d7c){_0xe28204[_0x62da('0x9')]('unreadMessages',_0x2a3d7c[_0x62da('0xd')]);SmsInteractionEvents[_0x62da('0xe')](_0x4a8428+':'+_0xe28204['id'],_0xe28204);SmsInteractionEvents[_0x62da('0xe')](_0x4a8428,_0xe28204);_0x3a59f8(null);})[_0x62da('0xf')](_0x3a59f8(null));};}for(var e in events){if(events[_0x62da('0x10')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x62da('0x11')]=SmsInteractionEvents;
\ No newline at end of file
index cdc8b71..9cb84ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a3=['request-promise','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x61a3,0x10b));var _0x361a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x61a3[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x361a('0x0'));var util=require(_0x361a('0x1'));var logger=require(_0x361a('0x2'))(_0x361a('0x3'));var moment=require(_0x361a('0x4'));var BPromise=require('bluebird');var rp=require(_0x361a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x361a('0x6'));var config=require(_0x361a('0x7'));var attributes=require(_0x361a('0x8'));module[_0x361a('0x9')]=function(_0x4a2056,_0x11eb50){return _0x4a2056[_0x361a('0xa')](_0x361a('0xb'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x13e622,_0x2ddacf,_0x419cd0){if(_0x13e622[_0x361a('0xc')](_0x361a('0xd'))){_0x13e622['closedAt']=moment()[_0x361a('0xe')](_0x361a('0xf'));}_0x419cd0(null,_0x13e622);}}});};
\ No newline at end of file
+var _0x716a=['api','bluebird','request-promise','rimraf','./smsInteraction.attributes','exports','define','SmsInteraction','changed','closed','closedAt','format','lodash','util'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x716a,0xa6));var _0xa716=function(_0x37ffea,_0x25b006){_0x37ffea=_0x37ffea-0x0;var _0x2e2615=_0x716a[_0x37ffea];return _0x2e2615;};'use strict';var _=require(_0xa716('0x0'));var util=require(_0xa716('0x1'));var logger=require('../../config/logger')(_0xa716('0x2'));var moment=require('moment');var BPromise=require(_0xa716('0x3'));var rp=require(_0xa716('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa716('0x5'));var config=require('../../config/environment');var attributes=require(_0xa716('0x6'));module[_0xa716('0x7')]=function(_0xafcc1a,_0x42ee66){return _0xafcc1a[_0xa716('0x8')](_0xa716('0x9'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xc7a2e5,_0xd9f920,_0x2dd908){if(_0xc7a2e5[_0xa716('0xa')](_0xa716('0xb'))){_0xc7a2e5[_0xa716('0xc')]=moment()[_0xa716('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x2dd908(null,_0xc7a2e5);}}});};
\ No newline at end of file
index 45c2203..7e0c533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6868=['../../config/logger','rpc','../../config/environment','http','defaults','redis','localhost','socket.io-emitter','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','UpdateSmsInteraction','SmsInteraction','update','options','where','limit','catch','AddTagsToSmsInteraction','addTags','body','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x194353,_0x3f234a){var _0x272282=function(_0x2424bb){while(--_0x2424bb){_0x194353['push'](_0x194353['shift']());}};_0x272282(++_0x3f234a);}(_0x6868,0x148));var _0x8686=function(_0x28e89b,_0x16742d){_0x28e89b=_0x28e89b-0x0;var _0xa40968=_0x6868[_0x28e89b];return _0xa40968;};'use strict';var _=require(_0x8686('0x0'));var util=require(_0x8686('0x1'));var moment=require(_0x8686('0x2'));var BPromise=require(_0x8686('0x3'));var rs=require(_0x8686('0x4'));var fs=require('fs');var Redis=require(_0x8686('0x5'));var db=require(_0x8686('0x6'))['db'];var utils=require(_0x8686('0x7'));var logger=require(_0x8686('0x8'))(_0x8686('0x9'));var config=require(_0x8686('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8686('0xb')]({'port':0x232a});config['redis']=_[_0x8686('0xc')](config[_0x8686('0xd')],{'host':_0x8686('0xe'),'port':0x18eb});var socket=require(_0x8686('0xf'))(new Redis(config['redis']));require('./smsInteraction.socket')[_0x8686('0x10')](socket);function respondWithRpcPromise(_0x18e653,_0x27dbc6,_0x30e39c){return new BPromise(function(_0x58f439,_0xe4445d){return client[_0x8686('0x11')](_0x18e653,_0x30e39c)[_0x8686('0x12')](function(_0x83b225){logger[_0x8686('0x13')](_0x8686('0x14'),_0x27dbc6,_0x8686('0x15'));logger[_0x8686('0x16')]('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x27dbc6,'request\x20sent',JSON[_0x8686('0x17')](_0x83b225));if(_0x83b225[_0x8686('0x18')]){if(_0x83b225['error'][_0x8686('0x19')]===0x1f4){logger[_0x8686('0x18')](_0x8686('0x14'),_0x27dbc6,_0x83b225['error'][_0x8686('0x1a')]);return _0xe4445d(_0x83b225[_0x8686('0x18')]['message']);}logger['error'](_0x8686('0x14'),_0x27dbc6,_0x83b225[_0x8686('0x18')][_0x8686('0x1a')]);return _0x58f439(_0x83b225[_0x8686('0x18')]['message']);}else{logger[_0x8686('0x13')](_0x8686('0x14'),_0x27dbc6,_0x8686('0x15'));_0x58f439(_0x83b225[_0x8686('0x1b')][_0x8686('0x1a')]);}})['catch'](function(_0x4f1ca9){logger[_0x8686('0x18')]('SmsInteraction,\x20%s,\x20%s',_0x27dbc6,_0x4f1ca9);_0xe4445d(_0x4f1ca9);});});}exports[_0x8686('0x1c')]=function(_0x497791){var _0x46b0b8=this;return new Promise(function(_0xff7993,_0x152b97){return db[_0x8686('0x1d')][_0x8686('0x1e')](_0x497791['body'],{'raw':_0x497791['options']?_0x497791[_0x8686('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x497791[_0x8686('0x1f')]?_0x497791[_0x8686('0x1f')][_0x8686('0x20')]||null:null,'attributes':_0x497791['options']?_0x497791[_0x8686('0x1f')]['attributes']||null:null,'limit':_0x497791['options']?_0x497791[_0x8686('0x1f')][_0x8686('0x21')]||null:null})[_0x8686('0x12')](function(_0x485653){logger[_0x8686('0x13')](_0x8686('0x1c'),_0x497791);logger['debug'](_0x8686('0x1c'),_0x497791,JSON['stringify'](_0x485653));_0xff7993(_0x485653);})[_0x8686('0x22')](function(_0x4f87e2){logger[_0x8686('0x18')](_0x8686('0x1c'),_0x4f87e2['message'],_0x497791);_0x152b97(_0x46b0b8[_0x8686('0x18')](0x1f4,_0x4f87e2[_0x8686('0x1a')]));});});};exports[_0x8686('0x23')]=function(_0x2db6b0){return new Promise(function(_0x11ec09,_0x1fde65){return db['SmsInteraction']['find']({'where':_0x2db6b0[_0x8686('0x1f')]?_0x2db6b0[_0x8686('0x1f')][_0x8686('0x20')]||null:null})['then'](function(_0x35b870){if(_0x35b870){return _0x35b870[_0x8686('0x24')](_0x2db6b0[_0x8686('0x25')][_0x8686('0x26')],_[_0x8686('0x27')](_0x2db6b0[_0x8686('0x25')],['ids','id'])||{});}})[_0x8686('0x28')](function(_0xb73cc1){logger[_0x8686('0x13')](_0x8686('0x29'),_0x2db6b0);logger[_0x8686('0x16')]('AddTags',_0x2db6b0,JSON[_0x8686('0x17')](_0xb73cc1));_0x11ec09(_0xb73cc1);})['catch'](function(_0x150e8f){logger['error']('AddTags',_0x150e8f[_0x8686('0x1a')],_0x2db6b0);_0x1fde65(_this[_0x8686('0x18')](0x1f4,_0x150e8f[_0x8686('0x1a')]));});});};
\ No newline at end of file
+var _0x0d13=['message','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','limit','find','omit','ids','AddTags','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x5bc5fe,_0x2afaef){var _0x298ea7=function(_0x1c6bd5){while(--_0x1c6bd5){_0x5bc5fe['push'](_0x5bc5fe['shift']());}};_0x298ea7(++_0x2afaef);}(_0x0d13,0x89));var _0x30d1=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0x0d13[_0x34bc30];return _0x5706de;};'use strict';var _=require(_0x30d1('0x0'));var util=require(_0x30d1('0x1'));var moment=require(_0x30d1('0x2'));var BPromise=require(_0x30d1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x30d1('0x4'));var db=require(_0x30d1('0x5'))['db'];var utils=require(_0x30d1('0x6'));var logger=require(_0x30d1('0x7'))(_0x30d1('0x8'));var config=require(_0x30d1('0x9'));var jayson=require(_0x30d1('0xa'));var client=jayson[_0x30d1('0xb')][_0x30d1('0xc')]({'port':0x232a});config[_0x30d1('0xd')]=_[_0x30d1('0xe')](config['redis'],{'host':_0x30d1('0xf'),'port':0x18eb});var socket=require(_0x30d1('0x10'))(new Redis(config[_0x30d1('0xd')]));require(_0x30d1('0x11'))[_0x30d1('0x12')](socket);function respondWithRpcPromise(_0x2a9c71,_0x53eb8c,_0xab8af9){return new BPromise(function(_0x11e704,_0x2842ae){return client['request'](_0x2a9c71,_0xab8af9)[_0x30d1('0x13')](function(_0x525529){logger[_0x30d1('0x14')](_0x30d1('0x15'),_0x53eb8c,_0x30d1('0x16'));logger[_0x30d1('0x17')](_0x30d1('0x18'),_0x53eb8c,_0x30d1('0x16'),JSON[_0x30d1('0x19')](_0x525529));if(_0x525529[_0x30d1('0x1a')]){if(_0x525529['error']['code']===0x1f4){logger['error'](_0x30d1('0x15'),_0x53eb8c,_0x525529[_0x30d1('0x1a')][_0x30d1('0x1b')]);return _0x2842ae(_0x525529['error'][_0x30d1('0x1b')]);}logger[_0x30d1('0x1a')]('SmsInteraction,\x20%s,\x20%s',_0x53eb8c,_0x525529[_0x30d1('0x1a')][_0x30d1('0x1b')]);return _0x11e704(_0x525529[_0x30d1('0x1a')][_0x30d1('0x1b')]);}else{logger[_0x30d1('0x14')](_0x30d1('0x15'),_0x53eb8c,_0x30d1('0x16'));_0x11e704(_0x525529['result'][_0x30d1('0x1b')]);}})['catch'](function(_0x10b569){logger['error'](_0x30d1('0x15'),_0x53eb8c,_0x10b569);_0x2842ae(_0x10b569);});});}exports[_0x30d1('0x1c')]=function(_0x1d714e){var _0x1f440a=this;return new Promise(function(_0x53edc1,_0x3939cc){return db[_0x30d1('0x1d')][_0x30d1('0x1e')](_0x1d714e[_0x30d1('0x1f')],{'raw':_0x1d714e[_0x30d1('0x20')]?_0x1d714e['options'][_0x30d1('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d714e[_0x30d1('0x20')]?_0x1d714e[_0x30d1('0x20')][_0x30d1('0x22')]||null:null,'attributes':_0x1d714e[_0x30d1('0x20')]?_0x1d714e[_0x30d1('0x20')]['attributes']||null:null,'limit':_0x1d714e[_0x30d1('0x20')]?_0x1d714e[_0x30d1('0x20')][_0x30d1('0x23')]||null:null})['then'](function(_0x1cdc4c){logger[_0x30d1('0x14')](_0x30d1('0x1c'),_0x1d714e);logger[_0x30d1('0x17')](_0x30d1('0x1c'),_0x1d714e,JSON[_0x30d1('0x19')](_0x1cdc4c));_0x53edc1(_0x1cdc4c);})['catch'](function(_0x17797d){logger[_0x30d1('0x1a')](_0x30d1('0x1c'),_0x17797d[_0x30d1('0x1b')],_0x1d714e);_0x3939cc(_0x1f440a[_0x30d1('0x1a')](0x1f4,_0x17797d[_0x30d1('0x1b')]));});});};exports['AddTagsToSmsInteraction']=function(_0x2b009a){return new Promise(function(_0x176c3e,_0x53898c){return db[_0x30d1('0x1d')][_0x30d1('0x24')]({'where':_0x2b009a[_0x30d1('0x20')]?_0x2b009a[_0x30d1('0x20')]['where']||null:null})['then'](function(_0x18f153){if(_0x18f153){return _0x18f153['addTags'](_0x2b009a[_0x30d1('0x1f')]['ids'],_[_0x30d1('0x25')](_0x2b009a[_0x30d1('0x1f')],[_0x30d1('0x26'),'id'])||{});}})['spread'](function(_0x339304){logger[_0x30d1('0x14')](_0x30d1('0x27'),_0x2b009a);logger[_0x30d1('0x17')](_0x30d1('0x27'),_0x2b009a,JSON[_0x30d1('0x19')](_0x339304));_0x176c3e(_0x339304);})[_0x30d1('0x28')](function(_0xbbcc4a){logger[_0x30d1('0x1a')](_0x30d1('0x27'),_0xbbcc4a[_0x30d1('0x1b')],_0x2b009a);_0x53898c(_this[_0x30d1('0x1a')](0x1f4,_0xbbcc4a[_0x30d1('0x1b')]));});});};
\ No newline at end of file
index 1b431fd..c3b6d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb9=['update','register','length','save','remove'];(function(_0x44f974,_0x4db616){var _0x805dbd=function(_0x1a56b7){while(--_0x1a56b7){_0x44f974['push'](_0x44f974['shift']());}};_0x805dbd(++_0x4db616);}(_0x5eb9,0x8f));var _0x95eb=function(_0x2ba054,_0x4cfa79){_0x2ba054=_0x2ba054-0x0;var _0x5d2153=_0x5eb9[_0x2ba054];return _0x5d2153;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x95eb('0x0'),_0x95eb('0x1'),_0x95eb('0x2')];function createListener(_0x537263,_0xc72d90){return function(_0x5bd20f){_0xc72d90['emit'](_0x537263,_0x5bd20f);};}function removeListener(_0x361f75,_0x4b4e0f){return function(){SmsInteractionEvents['removeListener'](_0x361f75,_0x4b4e0f);};}exports[_0x95eb('0x3')]=function(_0x2aeb90){for(var _0x20b779=0x0,_0x29ae4f=events[_0x95eb('0x4')];_0x20b779<_0x29ae4f;_0x20b779++){var _0x1f19f6=events[_0x20b779];var _0x4e04b4=createListener('smsInteraction:'+_0x1f19f6,_0x2aeb90);SmsInteractionEvents['on'](_0x1f19f6,_0x4e04b4);}};
\ No newline at end of file
+var _0x414a=['emit','removeListener','register','./smsInteraction.events','save','update'];(function(_0x5eb22e,_0x27cbac){var _0x27fed5=function(_0x565467){while(--_0x565467){_0x5eb22e['push'](_0x5eb22e['shift']());}};_0x27fed5(++_0x27cbac);}(_0x414a,0x1cb));var _0xa414=function(_0x26eabb,_0x4a8128){_0x26eabb=_0x26eabb-0x0;var _0x4551f=_0x414a[_0x26eabb];return _0x4551f;};'use strict';var SmsInteractionEvents=require(_0xa414('0x0'));var events=[_0xa414('0x1'),'remove',_0xa414('0x2')];function createListener(_0x3bf928,_0x4d6c10){return function(_0x4ab679){_0x4d6c10[_0xa414('0x3')](_0x3bf928,_0x4ab679);};}function removeListener(_0x1db9df,_0x3ebce2){return function(){SmsInteractionEvents[_0xa414('0x4')](_0x1db9df,_0x3ebce2);};}exports[_0xa414('0x5')]=function(_0x11ee30){for(var _0x55d7d4=0x0,_0x12121d=events['length'];_0x55d7d4<_0x12121d;_0x55d7d4++){var _0x50e38c=events[_0x55d7d4];var _0x5b5bec=createListener('smsInteraction:'+_0x50e38c,_0x11ee30);SmsInteractionEvents['on'](_0x50e38c,_0x5b5bec);}};
\ No newline at end of file
index 3a3b02e..7320ccf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa25d=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','post','tracked','sms','smsmessage:create','create','/:id/status','status','put','/:id','/:id/accept','accept','reject','delete','destroy'];(function(_0x3f2bac,_0x39c2a2){var _0x57db6a=function(_0x2ada9e){while(--_0x2ada9e){_0x3f2bac['push'](_0x3f2bac['shift']());}};_0x57db6a(++_0x39c2a2);}(_0xa25d,0x194));var _0xda25=function(_0x34c4e1,_0x310387){_0x34c4e1=_0x34c4e1-0x0;var _0x5a11ef=_0xa25d[_0x34c4e1];return _0x5a11ef;};'use strict';var multer=require(_0xda25('0x0'));var util=require(_0xda25('0x1'));var path=require(_0xda25('0x2'));var timeout=require(_0xda25('0x3'));var express=require(_0xda25('0x4'));var router=express[_0xda25('0x5')]();var fs_extra=require(_0xda25('0x6'));var auth=require(_0xda25('0x7'));var interaction=require(_0xda25('0x8'));var config=require(_0xda25('0x9'));var controller=require(_0xda25('0xa'));router[_0xda25('0xb')]('/',auth[_0xda25('0xc')](),controller[_0xda25('0xd')]);router[_0xda25('0xb')](_0xda25('0xe'),auth[_0xda25('0xc')](),controller[_0xda25('0xf')]);router[_0xda25('0xb')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xda25('0x10')]('/',auth['isAuthenticated'](),interaction[_0xda25('0x11')](_0xda25('0x12'),_0xda25('0x13')),controller[_0xda25('0x14')]);router[_0xda25('0x10')](_0xda25('0x15'),controller[_0xda25('0x16')]);router[_0xda25('0x17')](_0xda25('0x18'),auth[_0xda25('0xc')](),controller['update']);router[_0xda25('0x17')](_0xda25('0x19'),auth[_0xda25('0xc')](),controller[_0xda25('0x1a')]);router[_0xda25('0x17')]('/:id/reject',auth[_0xda25('0xc')](),controller[_0xda25('0x1b')]);router[_0xda25('0x1c')](_0xda25('0x18'),auth['isAuthenticated'](),controller[_0xda25('0x1d')]);module[_0xda25('0x1e')]=router;
\ No newline at end of file
+var _0xf525=['get','index','isAuthenticated','/:id','tracked','sms','smsmessage:create','create','post','/:id/status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../config/environment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf525,0x13f));var _0x5f52=function(_0x1d095d,_0x99995d){_0x1d095d=_0x1d095d-0x0;var _0x118854=_0xf525[_0x1d095d];return _0x118854;};'use strict';var multer=require(_0x5f52('0x0'));var util=require(_0x5f52('0x1'));var path=require('path');var timeout=require(_0x5f52('0x2'));var express=require(_0x5f52('0x3'));var router=express[_0x5f52('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5f52('0x5'));var controller=require('./smsMessage.controller');router[_0x5f52('0x6')]('/',auth['isAuthenticated'](),controller[_0x5f52('0x7')]);router[_0x5f52('0x6')]('/describe',auth[_0x5f52('0x8')](),controller['describe']);router[_0x5f52('0x6')](_0x5f52('0x9'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x5f52('0x8')](),interaction[_0x5f52('0xa')](_0x5f52('0xb'),_0x5f52('0xc')),controller[_0x5f52('0xd')]);router[_0x5f52('0xe')](_0x5f52('0xf'),controller['status']);router[_0x5f52('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x5f52('0x11')]);router[_0x5f52('0x10')](_0x5f52('0x12'),auth[_0x5f52('0x8')](),controller[_0x5f52('0x13')]);router['put'](_0x5f52('0x14'),auth[_0x5f52('0x8')](),controller[_0x5f52('0x15')]);router[_0x5f52('0x16')](_0x5f52('0x9'),auth[_0x5f52('0x8')](),controller[_0x5f52('0x17')]);module[_0x5f52('0x18')]=router;
\ No newline at end of file
index 5d8d7c8..fc541c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ff9=['TEXT','BOOLEAN','out','DATE','STRING','sequelize','exports'];(function(_0xe49945,_0x3ee2b5){var _0x131227=function(_0x13078d){while(--_0x13078d){_0xe49945['push'](_0xe49945['shift']());}};_0x131227(++_0x3ee2b5);}(_0x1ff9,0x15c));var _0x91ff=function(_0x4e9e17,_0x213114){_0x4e9e17=_0x4e9e17-0x0;var _0x113231=_0x1ff9[_0x4e9e17];return _0x113231;};'use strict';var Sequelize=require(_0x91ff('0x0'));module[_0x91ff('0x1')]={'body':{'type':Sequelize[_0x91ff('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x91ff('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x91ff('0x4')),'defaultValue':_0x91ff('0x4'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x91ff('0x5')]},'secret':{'type':Sequelize[_0x91ff('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x91ff('0x6')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xdadf=['sequelize','TEXT','medium','ENUM','out','STRING','DATE','BOOLEAN'];(function(_0x188603,_0xb47229){var _0x15f435=function(_0x18bdcb){while(--_0x18bdcb){_0x188603['push'](_0x188603['shift']());}};_0x15f435(++_0xb47229);}(_0xdadf,0xc8));var _0xfdad=function(_0x84356f,_0x56b1a1){_0x84356f=_0x84356f-0x0;var _0x27ace5=_0xdadf[_0x84356f];return _0x27ace5;};'use strict';var Sequelize=require(_0xfdad('0x0'));module['exports']={'body':{'type':Sequelize[_0xfdad('0x1')](_0xfdad('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xfdad('0x3')]('in',_0xfdad('0x4')),'defaultValue':_0xfdad('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xfdad('0x5')](0xbe)},'phone':{'type':Sequelize[_0xfdad('0x5')]},'readAt':{'type':Sequelize[_0xfdad('0x6')]},'secret':{'type':Sequelize[_0xfdad('0x7')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xfdad('0x1')]}};
\ No newline at end of file
index 119bb45..a0da04c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcf0=['order','sort','where','pick','filter','merge','count','includeAll','findAll','show','params','include','options','create','body','find','describe','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteractionId','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','contact','User','fullname','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','sms','SmsInteraction','RejectMessage','rejectMessage','Sequelize','email','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','messageId','indexOf','sent','delivered','plivio','infobip','results','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','info','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','catch','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','destroy','name','index','map','SmsMessage','rawAttributes','fieldName','type','keys','query','filters','intersection','model','attributes','fields','length','nolimit'];(function(_0x594da0,_0xdf95fe){var _0x38d021=function(_0x472625){while(--_0x472625){_0x594da0['push'](_0x594da0['shift']());}};_0x38d021(++_0xdf95fe);}(_0xbcf0,0xd6));var _0x0bcf=function(_0x4914e2,_0x48be8f){_0x4914e2=_0x4914e2-0x0;var _0x2dcd07=_0xbcf0[_0x4914e2];return _0x2dcd07;};'use strict';var emlformat=require(_0x0bcf('0x0'));var rimraf=require(_0x0bcf('0x1'));var zipdir=require(_0x0bcf('0x2'));var jsonpatch=require(_0x0bcf('0x3'));var rp=require(_0x0bcf('0x4'));var moment=require('moment');var BPromise=require(_0x0bcf('0x5'));var Mustache=require('mustache');var util=require(_0x0bcf('0x6'));var path=require(_0x0bcf('0x7'));var sox=require(_0x0bcf('0x8'));var csv=require('to-csv');var ejs=require(_0x0bcf('0x9'));var fs=require('fs');var fs_extra=require(_0x0bcf('0xa'));var _=require(_0x0bcf('0xb'));var squel=require(_0x0bcf('0xc'));var crypto=require('crypto');var jsforce=require(_0x0bcf('0xd'));var deskjs=require(_0x0bcf('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0bcf('0xf'));var Papa=require('papaparse');var Redis=require(_0x0bcf('0x10'));var authService=require(_0x0bcf('0x11'));var qs=require(_0x0bcf('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x0bcf('0x13'))(_0x0bcf('0x14'));var utils=require(_0x0bcf('0x15'));var config=require(_0x0bcf('0x16'));var licenseUtil=require(_0x0bcf('0x17'));var db=require(_0x0bcf('0x18'))['db'];config[_0x0bcf('0x19')]=_[_0x0bcf('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0bcf('0x1b'))(new Redis(config[_0x0bcf('0x19')]));require(_0x0bcf('0x1c'))[_0x0bcf('0x1d')](socket);var jayson=require(_0x0bcf('0x1e'));var client=jayson[_0x0bcf('0x1f')][_0x0bcf('0x20')]({'port':0x232c});var client9002=jayson[_0x0bcf('0x1f')][_0x0bcf('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x288ea7,_0x14ef0a,_0x32c9c1,_0x46355f){return new BPromise(function(_0x51b838,_0x4ac56a){var _0x5b1780=_0x46355f||client;return _0x5b1780['request'](_0x288ea7,_0x32c9c1)['then'](function(_0x1ed14f){logger[_0x0bcf('0x21')](_0x0bcf('0x22'),_0x14ef0a,'request\x20sent');logger[_0x0bcf('0x23')](_0x0bcf('0x24'),_0x14ef0a,'request\x20sent',JSON[_0x0bcf('0x25')](_0x1ed14f));if(_0x1ed14f['error']){if(_0x1ed14f['error'][_0x0bcf('0x26')]===0x1f4){logger[_0x0bcf('0x27')]('SmsMessage,\x20%s,\x20%s',_0x14ef0a,_0x1ed14f['error'][_0x0bcf('0x28')]);return _0x4ac56a(_0x1ed14f['error'][_0x0bcf('0x28')]);}logger[_0x0bcf('0x27')]('SmsMessage,\x20%s,\x20%s',_0x14ef0a,_0x1ed14f[_0x0bcf('0x27')][_0x0bcf('0x28')]);return _0x51b838(_0x1ed14f['error'][_0x0bcf('0x28')]);}else{logger[_0x0bcf('0x21')]('SmsMessage,\x20%s,\x20%s',_0x14ef0a,_0x0bcf('0x29'));_0x51b838(_0x1ed14f['result'][_0x0bcf('0x28')]);}})[_0x0bcf('0x2a')](function(_0x1061a0){logger[_0x0bcf('0x27')](_0x0bcf('0x22'),_0x14ef0a,_0x1061a0);_0x4ac56a(_0x1061a0);});});}function respondWithStatusCode(_0x5dd44b,_0x5e315f){_0x5e315f=_0x5e315f||0xcc;return function(_0x23228d){if(_0x23228d){return _0x5dd44b[_0x0bcf('0x2b')](_0x5e315f);}return _0x5dd44b[_0x0bcf('0x2c')](_0x5e315f)[_0x0bcf('0x2d')]();};}function respondWithResult(_0x24eeaa,_0x3b039f){_0x3b039f=_0x3b039f||0xc8;return function(_0x3dc430){if(_0x3dc430){return _0x24eeaa[_0x0bcf('0x2c')](_0x3b039f)[_0x0bcf('0x2e')](_0x3dc430);}};}function respondWithFilteredResult(_0x1efba0,_0xb9501c){return function(_0x3a556a){if(_0x3a556a){var _0x33dd6e=typeof _0xb9501c['offset']===_0x0bcf('0x2f')&&typeof _0xb9501c[_0x0bcf('0x30')]===_0x0bcf('0x2f');var _0x2738dc=_0x3a556a['count'];var _0x220429=_0x33dd6e?0x0:_0xb9501c[_0x0bcf('0x31')];var _0xc52581=_0x33dd6e?_0x3a556a['count']:_0xb9501c[_0x0bcf('0x31')]+_0xb9501c['limit'];var _0x129ada;if(_0xc52581>=_0x2738dc){_0xc52581=_0x2738dc;_0x129ada=0xc8;}else{_0x129ada=0xce;}_0x1efba0[_0x0bcf('0x2c')](_0x129ada);return _0x1efba0[_0x0bcf('0x32')](_0x0bcf('0x33'),_0x220429+'-'+_0xc52581+'/'+_0x2738dc)['json'](_0x3a556a);}return null;};}function patchUpdates(_0x139298){return function(_0x1b66fc){try{jsonpatch[_0x0bcf('0x34')](_0x1b66fc,_0x139298,!![]);}catch(_0x17c7f4){return BPromise[_0x0bcf('0x35')](_0x17c7f4);}return _0x1b66fc[_0x0bcf('0x36')]();};}function saveUpdates(_0x59dcf8,_0x498e1f){return function(_0x46cf66){if(_0x46cf66){return _0x46cf66[_0x0bcf('0x37')](_0x59dcf8)[_0x0bcf('0x38')](function(_0x3b8585){return _0x3b8585;});}return null;};}function removeEntity(_0x548f9d,_0x445903){return function(_0x31113d){if(_0x31113d){return _0x31113d[_0x0bcf('0x39')]()['then'](function(){_0x548f9d[_0x0bcf('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b43b6,_0x74030d){return function(_0x5aee17){if(!_0x5aee17){_0x3b43b6[_0x0bcf('0x2b')](0x194);}return _0x5aee17;};}function handleError(_0x1a95af,_0x1d9db3){_0x1d9db3=_0x1d9db3||0x1f4;return function(_0x487b32){logger[_0x0bcf('0x27')](_0x487b32['stack']);if(_0x487b32[_0x0bcf('0x3a')]){delete _0x487b32[_0x0bcf('0x3a')];}_0x1a95af[_0x0bcf('0x2c')](_0x1d9db3)['send'](_0x487b32);};}exports[_0x0bcf('0x3b')]=function(_0x5e2a89,_0x5085c7){var _0x377db1={},_0x3e0e75={},_0x19a755={'count':0x0,'rows':[]};var _0x57dc64=_[_0x0bcf('0x3c')](db[_0x0bcf('0x3d')][_0x0bcf('0x3e')],function(_0x2c61da){return{'name':_0x2c61da[_0x0bcf('0x3f')],'type':_0x2c61da[_0x0bcf('0x40')]['key']};});_0x3e0e75['model']=_['map'](_0x57dc64,_0x0bcf('0x3a'));_0x3e0e75['query']=_[_0x0bcf('0x41')](_0x5e2a89[_0x0bcf('0x42')]);_0x3e0e75[_0x0bcf('0x43')]=_[_0x0bcf('0x44')](_0x3e0e75[_0x0bcf('0x45')],_0x3e0e75[_0x0bcf('0x42')]);_0x377db1[_0x0bcf('0x46')]=_[_0x0bcf('0x44')](_0x3e0e75[_0x0bcf('0x45')],qs[_0x0bcf('0x47')](_0x5e2a89[_0x0bcf('0x42')][_0x0bcf('0x47')]));_0x377db1[_0x0bcf('0x46')]=_0x377db1[_0x0bcf('0x46')][_0x0bcf('0x48')]?_0x377db1['attributes']:_0x3e0e75['model'];if(!_0x5e2a89[_0x0bcf('0x42')]['hasOwnProperty'](_0x0bcf('0x49'))){_0x377db1[_0x0bcf('0x30')]=qs[_0x0bcf('0x30')](_0x5e2a89[_0x0bcf('0x42')][_0x0bcf('0x30')]);_0x377db1[_0x0bcf('0x31')]=qs['offset'](_0x5e2a89[_0x0bcf('0x42')][_0x0bcf('0x31')]);}_0x377db1[_0x0bcf('0x4a')]=qs['sort'](_0x5e2a89['query'][_0x0bcf('0x4b')]);_0x377db1[_0x0bcf('0x4c')]=qs[_0x0bcf('0x43')](_[_0x0bcf('0x4d')](_0x5e2a89['query'],_0x3e0e75[_0x0bcf('0x43')]),_0x57dc64);if(_0x5e2a89[_0x0bcf('0x42')][_0x0bcf('0x4e')]){_0x377db1[_0x0bcf('0x4c')]=_[_0x0bcf('0x4f')](_0x377db1[_0x0bcf('0x4c')],{'$or':_[_0x0bcf('0x3c')](_0x57dc64,function(_0x435f02){if(_0x435f02[_0x0bcf('0x40')]!=='VIRTUAL'){var _0x1f4250={};_0x1f4250[_0x435f02['name']]={'$like':'%'+_0x5e2a89[_0x0bcf('0x42')][_0x0bcf('0x4e')]+'%'};return _0x1f4250;}})});}_0x377db1=_[_0x0bcf('0x4f')]({},_0x377db1,_0x5e2a89['options']);var _0x4a6f52={'where':_0x377db1[_0x0bcf('0x4c')]};return db[_0x0bcf('0x3d')][_0x0bcf('0x50')](_0x4a6f52)['then'](function(_0xd7b22a){_0x19a755[_0x0bcf('0x50')]=_0xd7b22a;if(_0x5e2a89[_0x0bcf('0x42')][_0x0bcf('0x51')]){_0x377db1['include']=[{'all':!![]}];}return db[_0x0bcf('0x3d')][_0x0bcf('0x52')](_0x377db1);})[_0x0bcf('0x38')](function(_0xb73e1f){_0x19a755['rows']=_0xb73e1f;return _0x19a755;})[_0x0bcf('0x38')](respondWithFilteredResult(_0x5085c7,_0x377db1))[_0x0bcf('0x2a')](handleError(_0x5085c7,null));};exports[_0x0bcf('0x53')]=function(_0x67216f,_0x33b057){var _0x353bd9={'raw':!![],'where':{'id':_0x67216f[_0x0bcf('0x54')]['id']}},_0x323149={};_0x323149['model']=_[_0x0bcf('0x41')](db[_0x0bcf('0x3d')][_0x0bcf('0x3e')]);_0x323149[_0x0bcf('0x42')]=_['keys'](_0x67216f[_0x0bcf('0x42')]);_0x323149['filters']=_[_0x0bcf('0x44')](_0x323149[_0x0bcf('0x45')],_0x323149[_0x0bcf('0x42')]);_0x353bd9[_0x0bcf('0x46')]=_['intersection'](_0x323149['model'],qs[_0x0bcf('0x47')](_0x67216f['query'][_0x0bcf('0x47')]));_0x353bd9[_0x0bcf('0x46')]=_0x353bd9[_0x0bcf('0x46')][_0x0bcf('0x48')]?_0x353bd9['attributes']:_0x323149[_0x0bcf('0x45')];if(_0x67216f[_0x0bcf('0x42')][_0x0bcf('0x51')]){_0x353bd9[_0x0bcf('0x55')]=[{'all':!![]}];}_0x353bd9=_['merge']({},_0x353bd9,_0x67216f[_0x0bcf('0x56')]);return db['SmsMessage']['find'](_0x353bd9)[_0x0bcf('0x38')](handleEntityNotFound(_0x33b057,null))[_0x0bcf('0x38')](respondWithResult(_0x33b057,null))[_0x0bcf('0x2a')](handleError(_0x33b057,null));};exports[_0x0bcf('0x57')]=function(_0x3365c2,_0x230626){return db['SmsMessage'][_0x0bcf('0x57')](_0x3365c2[_0x0bcf('0x58')],{})['then'](respondWithResult(_0x230626,0xc9))[_0x0bcf('0x2a')](handleError(_0x230626,null));};exports[_0x0bcf('0x37')]=function(_0x5b3ac3,_0x5a2f87){if(_0x5b3ac3['body']['id']){delete _0x5b3ac3[_0x0bcf('0x58')]['id'];}return db['SmsMessage'][_0x0bcf('0x59')]({'where':{'id':_0x5b3ac3[_0x0bcf('0x54')]['id']}})[_0x0bcf('0x38')](handleEntityNotFound(_0x5a2f87,null))[_0x0bcf('0x38')](saveUpdates(_0x5b3ac3[_0x0bcf('0x58')],null))['then'](respondWithResult(_0x5a2f87,null))[_0x0bcf('0x2a')](handleError(_0x5a2f87,null));};exports[_0x0bcf('0x39')]=function(_0x15730b,_0x38707a){return db[_0x0bcf('0x3d')][_0x0bcf('0x59')]({'where':{'id':_0x15730b['params']['id']}})['then'](handleEntityNotFound(_0x38707a,null))[_0x0bcf('0x38')](removeEntity(_0x38707a,null))[_0x0bcf('0x2a')](handleError(_0x38707a,null));};exports[_0x0bcf('0x5a')]=function(_0x4bd816,_0x3e23ed){return db[_0x0bcf('0x3d')][_0x0bcf('0x5a')]()[_0x0bcf('0x38')](respondWithResult(_0x3e23ed,null))[_0x0bcf('0x2a')](handleError(_0x3e23ed,null));};var interaction_log=require(_0x0bcf('0x13'))('sms-interactions');exports[_0x0bcf('0x5b')]=function(_0x32a0e8,_0x5431fc,_0xdb1071){var _0x22f1c8={'agent':{},'channel':'sms'};if(_0x32a0e8[_0x0bcf('0x58')]['id']){delete _0x32a0e8[_0x0bcf('0x58')]['id'];}_0x32a0e8[_0x0bcf('0x58')][_0x0bcf('0x5c')]=!![];_0x32a0e8[_0x0bcf('0x58')][_0x0bcf('0x5d')]=moment()[_0x0bcf('0x5e')](_0x0bcf('0x5f'));_0x32a0e8[_0x0bcf('0x58')][_0x0bcf('0x60')]=_0x32a0e8[_0x0bcf('0x58')]['UserId']||_0x32a0e8['user']['id'];_0x22f1c8[_0x0bcf('0x61')]['id']=_0x32a0e8[_0x0bcf('0x58')][_0x0bcf('0x60')];return db['SmsMessage'][_0x0bcf('0x59')]({'where':{'id':_0x32a0e8[_0x0bcf('0x54')]['id'],'UserId':null}})[_0x0bcf('0x38')](handleEntityNotFound(_0x5431fc,null))['then'](saveUpdates(_0x32a0e8[_0x0bcf('0x58')],null))['then'](function(_0x328ab6){if(_0x328ab6){_0x22f1c8[_0x0bcf('0x28')]=_0x328ab6[_0x0bcf('0x62')]({'plain':!![]});return db['SmsInteraction'][_0x0bcf('0x59')]({'where':{'id':_0x328ab6[_0x0bcf('0x63')]}});}return null;})[_0x0bcf('0x38')](handleEntityNotFound(_0x5431fc,null))[_0x0bcf('0x38')](function(_0x5902ae){if(_0x5902ae){return _0x5902ae['update']({'UserId':_0x32a0e8[_0x0bcf('0x58')][_0x0bcf('0x60')],'read1stAt':_['isNil'](_0x5902ae['read1stAt'])?moment()[_0x0bcf('0x5e')](_0x0bcf('0x5f')):undefined});}return null;})['then'](function(_0xdbae30){if(_0xdbae30){_0x22f1c8[_0x0bcf('0x64')]=_0xdbae30[_0x0bcf('0x62')]({'plain':!![]});interaction_log['info'](_0x0bcf('0x65'),_0x32a0e8['user']['id'],_0x32a0e8[_0x0bcf('0x66')]['name'],_0x32a0e8[_0x0bcf('0x66')][_0x0bcf('0x67')],_0x22f1c8['interaction']['id'],_0x32a0e8[_0x0bcf('0x58')]?JSON[_0x0bcf('0x25')](_0x32a0e8[_0x0bcf('0x58')]):_0x0bcf('0x68'));return respondWithRpcPromise(_0x0bcf('0x69'),_0x0bcf('0x6a'),_0x22f1c8);}return null;})[_0x0bcf('0x38')](function(_0x4ddfbf){var _0x47ee68=_0x0bcf('0x6b')+_0x4ddfbf[_0x0bcf('0x28')][_0x0bcf('0x6c')];return db['sequelize']['query'](_0x47ee68,{'type':db['Sequelize'][_0x0bcf('0x6d')]['SELECT'],'raw':!![]})[_0x0bcf('0x38')](function(_0xefe50e){return _0xefe50e;});})[_0x0bcf('0x38')](function(_0x1644f2){if(_0x1644f2){_0x22f1c8[_0x0bcf('0x28')][_0x0bcf('0x6e')]=_0x1644f2[0x0];if(!_0x32a0e8['body'][_0x0bcf('0x60')])return;return db[_0x0bcf('0x6f')][_0x0bcf('0x59')]({'where':{'id':_0x32a0e8['body'][_0x0bcf('0x60')],'role':_0x0bcf('0x61')},'attributes':['id','name',_0x0bcf('0x70'),'email',_0x0bcf('0x71')],'raw':!![]});}return null;})[_0x0bcf('0x38')](function(_0x27399a){if(!_0x27399a)return null;_0x22f1c8['message'][_0x0bcf('0x61')]=_0x27399a;return _0x22f1c8;})[_0x0bcf('0x38')](function(_0x3c2eb6){if(_0x3c2eb6){if(_0x32a0e8[_0x0bcf('0x58')][_0x0bcf('0x72')]){_0x22f1c8['message'][_0x0bcf('0x73')]=util[_0x0bcf('0x5e')](_0x0bcf('0x74'),_0x32a0e8[_0x0bcf('0x66')][_0x0bcf('0x3a')]);_0x22f1c8[_0x0bcf('0x28')][_0x0bcf('0x75')]=_0x22f1c8[_0x0bcf('0x75')];_0x22f1c8['message'][_0x0bcf('0x76')]=_0x0bcf('0x5b');return respondWithRpcPromise(_0x0bcf('0x77'),_0x0bcf('0x77'),{'event':_0x0bcf('0x78'),'message':_0x22f1c8[_0x0bcf('0x28')]},client9002)[_0x0bcf('0x38')](function(){return _0x22f1c8;});}return _0x22f1c8;}return null;})[_0x0bcf('0x38')](respondWithResult(_0x5431fc,null))[_0x0bcf('0x2a')](handleError(_0x5431fc,null));};var interaction_log=require('../../config/logger')('sms-interactions');exports['reject']=function(_0x41424a,_0x5cfd88,_0x3474f1){var _0xbf622b={'agent':{},'channel':_0x0bcf('0x79')};if(_0x41424a[_0x0bcf('0x58')]['id']){delete _0x41424a[_0x0bcf('0x58')]['id'];}_0x41424a[_0x0bcf('0x58')]['UserId']=_0x41424a[_0x0bcf('0x58')][_0x0bcf('0x60')]||_0x41424a[_0x0bcf('0x66')]['id'];_0xbf622b[_0x0bcf('0x61')]['id']=_0x41424a[_0x0bcf('0x58')]['UserId'];return db[_0x0bcf('0x3d')][_0x0bcf('0x59')]({'where':{'id':_0x41424a[_0x0bcf('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5cfd88,null))['then'](function(_0x5e5c47){if(_0x5e5c47){_0xbf622b[_0x0bcf('0x28')]=_0x5e5c47[_0x0bcf('0x62')]({'plain':!![]});return db[_0x0bcf('0x7a')][_0x0bcf('0x59')]({'where':{'id':_0x5e5c47[_0x0bcf('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x5cfd88,null))[_0x0bcf('0x38')](function(_0x27c7b8){if(_0x27c7b8){_0xbf622b[_0x0bcf('0x64')]=_0x27c7b8[_0x0bcf('0x62')]({'plain':!![]});interaction_log[_0x0bcf('0x21')]('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x41424a[_0x0bcf('0x66')]['id'],_0x41424a[_0x0bcf('0x66')][_0x0bcf('0x3a')],_0x41424a[_0x0bcf('0x66')]['role'],_0xbf622b[_0x0bcf('0x64')]['id'],_0x41424a[_0x0bcf('0x58')]?JSON[_0x0bcf('0x25')](_0x41424a[_0x0bcf('0x58')]):_0x0bcf('0x68'));return respondWithRpcPromise(_0x0bcf('0x7b'),_0x0bcf('0x7c'),_0xbf622b);}return null;})[_0x0bcf('0x38')](function(_0x3f650f){var _0x5c62c2='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3f650f['message'][_0x0bcf('0x6c')];return db['sequelize']['query'](_0x5c62c2,{'type':db[_0x0bcf('0x7d')][_0x0bcf('0x6d')]['SELECT'],'raw':!![]})[_0x0bcf('0x38')](function(_0x3a081a){return _0x3a081a;});})[_0x0bcf('0x38')](function(_0x3a23f0){if(_0x3a23f0){_0xbf622b[_0x0bcf('0x28')][_0x0bcf('0x6e')]=_0x3a23f0[0x0];if(!_0x41424a[_0x0bcf('0x58')][_0x0bcf('0x60')])return;return db[_0x0bcf('0x6f')][_0x0bcf('0x59')]({'where':{'id':_0x41424a[_0x0bcf('0x58')][_0x0bcf('0x60')],'role':'agent'},'attributes':['id','name',_0x0bcf('0x70'),_0x0bcf('0x7e'),_0x0bcf('0x71')],'raw':!![]});}return null;})[_0x0bcf('0x38')](function(_0x4ccf0b){if(!_0x4ccf0b)return null;_0xbf622b[_0x0bcf('0x28')]['agent']=_0x4ccf0b;return _0xbf622b;})['then'](function(_0x441872){if(_0x441872){_0x441872['message'][_0x0bcf('0x73')]=util['format']('SIP/%s',_0x41424a['user'][_0x0bcf('0x3a')]);_0x441872['message'][_0x0bcf('0x75')]=_0xbf622b[_0x0bcf('0x75')];_0x441872['message']['event']='reject';respondWithRpcPromise('EventManager','EventManager',{'event':'rejectmessage','message':_0x441872[_0x0bcf('0x28')]},client9002);return _0xbf622b;}return null;})[_0x0bcf('0x38')](respondWithResult(_0x5cfd88,null))['catch'](handleError(_0x5cfd88,null));};exports['status']=function(_0xe7a6e,_0x53f22e,_0x43bcf4){if(_0xe7a6e[_0x0bcf('0x58')]['id']){delete _0xe7a6e[_0x0bcf('0x58')]['id'];}var _0xe1149a;return db[_0x0bcf('0x3d')]['find']({'where':{'id':_0xe7a6e[_0x0bcf('0x54')]['id']}})[_0x0bcf('0x38')](handleEntityNotFound(_0x53f22e,null))[_0x0bcf('0x38')](function(_0x5cd94c){if(_0x5cd94c){_0xe1149a=_0x5cd94c;return db['SmsAccount']['find']({'where':{'id':_0x5cd94c[_0x0bcf('0x7f')]}});}})[_0x0bcf('0x38')](handleEntityNotFound(_0x53f22e,null))['then'](function(_0x109b7e){if(_0x109b7e){logger[_0x0bcf('0x23')](_0x0bcf('0x24'),_0x0bcf('0x2c'),_0x0bcf('0x80'),_0x109b7e['type'],util[_0x0bcf('0x81')](_0xe7a6e['body'],{'showHidden':![],'depth':null}));switch(_0x109b7e['type']){case _0x0bcf('0x82'):if(_0xe7a6e[_0x0bcf('0x58')][_0x0bcf('0x83')]&&_0xe7a6e[_0x0bcf('0x58')][_0x0bcf('0x83')]===_0xe1149a['messageId']){return _0xe1149a['update']({'read':!![]});}else{logger['error'](_0x0bcf('0x84'),_0x0bcf('0x2c'),_0x0bcf('0x82'),util[_0x0bcf('0x81')](_0xe7a6e[_0x0bcf('0x58')],{'showHidden':![],'depth':null}));}break;case _0x0bcf('0x85'):if(_0xe7a6e[_0x0bcf('0x58')][_0x0bcf('0x86')]&&_0xe7a6e[_0x0bcf('0x58')][_0x0bcf('0x86')]===_0xe1149a[_0x0bcf('0x87')]&&_[_0x0bcf('0x88')]([_0x0bcf('0x89'),_0x0bcf('0x8a')],_0xe7a6e['body']['Status'])>=0x0){return _0xe1149a['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x0bcf('0x2c'),_0x0bcf('0x8b'),util[_0x0bcf('0x81')](_0xe7a6e[_0x0bcf('0x58')],{'showHidden':![],'depth':null}));}break;case _0x0bcf('0x8c'):var _0x1eac17=_0xe7a6e[_0x0bcf('0x58')][_0x0bcf('0x8d')][0x0];if(_0x1eac17[_0x0bcf('0x2c')][_0x0bcf('0x8e')]===_0x0bcf('0x8f')){return _0xe1149a['update']({'read':!![]});}else{logger[_0x0bcf('0x27')](_0x0bcf('0x84'),_0x0bcf('0x2c'),_0x0bcf('0x8c'),util[_0x0bcf('0x81')](_0xe7a6e['body'],{'showHidden':![],'depth':null}));}break;}return _0xe1149a;}})[_0x0bcf('0x38')](respondWithResult(_0x53f22e,null))[_0x0bcf('0x2a')](handleError(_0x53f22e,null));};
\ No newline at end of file
+var _0xfb11=['desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','save','update','destroy','stack','name','send','index','map','SmsMessage','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','findAll','rows','show','rawAttributes','include','find','create','body','params','describe','sms-interactions','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','SmsInteraction','SmsInteractionId','isNil','interaction','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','interface','SIP/%s','channel','event','EventManager','acceptmessage','../../config/logger','sms','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','internal','motionChannel','reject','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','inspect','plivo','sent','delivered','plivio','infobip','results','DELIVERED','eml-format','zip-dir','fast-json-patch','moment','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce'];(function(_0x5774be,_0x2259d3){var _0x4914b4=function(_0x1eebc3){while(--_0x1eebc3){_0x5774be['push'](_0x5774be['shift']());}};_0x4914b4(++_0x2259d3);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xfb11[_0x2b10c6];return _0x3789d2;};'use strict';var emlformat=require(_0x1fb1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1fb1('0x1'));var jsonpatch=require(_0x1fb1('0x2'));var rp=require('request-promise');var moment=require(_0x1fb1('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1fb1('0x4'));var util=require('util');var path=require(_0x1fb1('0x5'));var sox=require(_0x1fb1('0x6'));var csv=require('to-csv');var ejs=require(_0x1fb1('0x7'));var fs=require('fs');var fs_extra=require(_0x1fb1('0x8'));var _=require('lodash');var squel=require(_0x1fb1('0x9'));var crypto=require(_0x1fb1('0xa'));var jsforce=require(_0x1fb1('0xb'));var deskjs=require(_0x1fb1('0xc'));var toCsv=require(_0x1fb1('0xd'));var querystring=require(_0x1fb1('0xe'));var Papa=require(_0x1fb1('0xf'));var Redis=require(_0x1fb1('0x10'));var authService=require(_0x1fb1('0x11'));var qs=require(_0x1fb1('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1fb1('0x13'));var logger=require('../../config/logger')(_0x1fb1('0x14'));var utils=require('../../config/utils');var config=require(_0x1fb1('0x15'));var licenseUtil=require(_0x1fb1('0x16'));var db=require(_0x1fb1('0x17'))['db'];config[_0x1fb1('0x18')]=_[_0x1fb1('0x19')](config[_0x1fb1('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x1fb1('0x1a'))(new Redis(config[_0x1fb1('0x18')]));require(_0x1fb1('0x1b'))[_0x1fb1('0x1c')](socket);var jayson=require(_0x1fb1('0x1d'));var client=jayson[_0x1fb1('0x1e')][_0x1fb1('0x1f')]({'port':0x232c});var client9002=jayson[_0x1fb1('0x1e')][_0x1fb1('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x4cbe42,_0x5c8d23,_0x34045e,_0x113988){return new BPromise(function(_0x3924ab,_0x5e0f16){var _0x161ca3=_0x113988||client;return _0x161ca3[_0x1fb1('0x20')](_0x4cbe42,_0x34045e)[_0x1fb1('0x21')](function(_0x34076b){logger[_0x1fb1('0x22')](_0x1fb1('0x23'),_0x5c8d23,_0x1fb1('0x24'));logger[_0x1fb1('0x25')](_0x1fb1('0x26'),_0x5c8d23,'request\x20sent',JSON[_0x1fb1('0x27')](_0x34076b));if(_0x34076b['error']){if(_0x34076b['error'][_0x1fb1('0x28')]===0x1f4){logger[_0x1fb1('0x29')](_0x1fb1('0x23'),_0x5c8d23,_0x34076b['error'][_0x1fb1('0x2a')]);return _0x5e0f16(_0x34076b['error']['message']);}logger['error'](_0x1fb1('0x23'),_0x5c8d23,_0x34076b[_0x1fb1('0x29')][_0x1fb1('0x2a')]);return _0x3924ab(_0x34076b[_0x1fb1('0x29')][_0x1fb1('0x2a')]);}else{logger['info'](_0x1fb1('0x23'),_0x5c8d23,_0x1fb1('0x24'));_0x3924ab(_0x34076b[_0x1fb1('0x2b')][_0x1fb1('0x2a')]);}})[_0x1fb1('0x2c')](function(_0x1353a4){logger[_0x1fb1('0x29')](_0x1fb1('0x23'),_0x5c8d23,_0x1353a4);_0x5e0f16(_0x1353a4);});});}function respondWithStatusCode(_0x530a5e,_0x1b25b3){_0x1b25b3=_0x1b25b3||0xcc;return function(_0x1aac7d){if(_0x1aac7d){return _0x530a5e[_0x1fb1('0x2d')](_0x1b25b3);}return _0x530a5e[_0x1fb1('0x2e')](_0x1b25b3)[_0x1fb1('0x2f')]();};}function respondWithResult(_0x29e1bd,_0x1a74c4){_0x1a74c4=_0x1a74c4||0xc8;return function(_0x15992c){if(_0x15992c){return _0x29e1bd[_0x1fb1('0x2e')](_0x1a74c4)[_0x1fb1('0x30')](_0x15992c);}};}function respondWithFilteredResult(_0x5e99e7,_0x497017){return function(_0x39fc43){if(_0x39fc43){var _0xe8ec0a=typeof _0x497017[_0x1fb1('0x31')]==='undefined'&&typeof _0x497017[_0x1fb1('0x32')]===_0x1fb1('0x33');var _0x90d8ef=_0x39fc43[_0x1fb1('0x34')];var _0x5402e9=_0xe8ec0a?0x0:_0x497017[_0x1fb1('0x31')];var _0x30c8eb=_0xe8ec0a?_0x39fc43['count']:_0x497017[_0x1fb1('0x31')]+_0x497017['limit'];var _0x5aa6bb;if(_0x30c8eb>=_0x90d8ef){_0x30c8eb=_0x90d8ef;_0x5aa6bb=0xc8;}else{_0x5aa6bb=0xce;}_0x5e99e7[_0x1fb1('0x2e')](_0x5aa6bb);return _0x5e99e7[_0x1fb1('0x35')]('Content-Range',_0x5402e9+'-'+_0x30c8eb+'/'+_0x90d8ef)[_0x1fb1('0x30')](_0x39fc43);}return null;};}function patchUpdates(_0x149753){return function(_0x109bf9){try{jsonpatch[_0x1fb1('0x36')](_0x109bf9,_0x149753,!![]);}catch(_0x32d797){return BPromise['reject'](_0x32d797);}return _0x109bf9[_0x1fb1('0x37')]();};}function saveUpdates(_0x366af4,_0x9ad059){return function(_0x300000){if(_0x300000){return _0x300000[_0x1fb1('0x38')](_0x366af4)[_0x1fb1('0x21')](function(_0x28e986){return _0x28e986;});}return null;};}function removeEntity(_0x2a9a57,_0x72a80d){return function(_0x4d49a4){if(_0x4d49a4){return _0x4d49a4[_0x1fb1('0x39')]()['then'](function(){_0x2a9a57[_0x1fb1('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x37078c,_0x4f5020){return function(_0x5dcce7){if(!_0x5dcce7){_0x37078c[_0x1fb1('0x2d')](0x194);}return _0x5dcce7;};}function handleError(_0x6522f9,_0x30df85){_0x30df85=_0x30df85||0x1f4;return function(_0x4700b4){logger['error'](_0x4700b4[_0x1fb1('0x3a')]);if(_0x4700b4[_0x1fb1('0x3b')]){delete _0x4700b4[_0x1fb1('0x3b')];}_0x6522f9['status'](_0x30df85)[_0x1fb1('0x3c')](_0x4700b4);};}exports[_0x1fb1('0x3d')]=function(_0x228235,_0x314381){var _0x2fe697={},_0xccc5bf={},_0xcfb507={'count':0x0,'rows':[]};var _0x537e5c=_[_0x1fb1('0x3e')](db[_0x1fb1('0x3f')]['rawAttributes'],function(_0x473894){return{'name':_0x473894['fieldName'],'type':_0x473894[_0x1fb1('0x40')][_0x1fb1('0x41')]};});_0xccc5bf[_0x1fb1('0x42')]=_[_0x1fb1('0x3e')](_0x537e5c,_0x1fb1('0x3b'));_0xccc5bf[_0x1fb1('0x43')]=_[_0x1fb1('0x44')](_0x228235[_0x1fb1('0x43')]);_0xccc5bf[_0x1fb1('0x45')]=_[_0x1fb1('0x46')](_0xccc5bf[_0x1fb1('0x42')],_0xccc5bf[_0x1fb1('0x43')]);_0x2fe697[_0x1fb1('0x47')]=_[_0x1fb1('0x46')](_0xccc5bf[_0x1fb1('0x42')],qs['fields'](_0x228235[_0x1fb1('0x43')][_0x1fb1('0x48')]));_0x2fe697[_0x1fb1('0x47')]=_0x2fe697[_0x1fb1('0x47')]['length']?_0x2fe697['attributes']:_0xccc5bf[_0x1fb1('0x42')];if(!_0x228235[_0x1fb1('0x43')][_0x1fb1('0x49')](_0x1fb1('0x4a'))){_0x2fe697[_0x1fb1('0x32')]=qs[_0x1fb1('0x32')](_0x228235[_0x1fb1('0x43')][_0x1fb1('0x32')]);_0x2fe697[_0x1fb1('0x31')]=qs[_0x1fb1('0x31')](_0x228235['query'][_0x1fb1('0x31')]);}_0x2fe697['order']=qs['sort'](_0x228235[_0x1fb1('0x43')][_0x1fb1('0x4b')]);_0x2fe697[_0x1fb1('0x4c')]=qs[_0x1fb1('0x45')](_['pick'](_0x228235['query'],_0xccc5bf[_0x1fb1('0x45')]),_0x537e5c);if(_0x228235[_0x1fb1('0x43')][_0x1fb1('0x4d')]){_0x2fe697[_0x1fb1('0x4c')]=_[_0x1fb1('0x4e')](_0x2fe697[_0x1fb1('0x4c')],{'$or':_[_0x1fb1('0x3e')](_0x537e5c,function(_0x293bdb){if(_0x293bdb[_0x1fb1('0x40')]!=='VIRTUAL'){var _0x596866={};_0x596866[_0x293bdb[_0x1fb1('0x3b')]]={'$like':'%'+_0x228235['query'][_0x1fb1('0x4d')]+'%'};return _0x596866;}})});}_0x2fe697=_[_0x1fb1('0x4e')]({},_0x2fe697,_0x228235[_0x1fb1('0x4f')]);var _0x467bf1={'where':_0x2fe697[_0x1fb1('0x4c')]};return db[_0x1fb1('0x3f')]['count'](_0x467bf1)[_0x1fb1('0x21')](function(_0x14db9e){_0xcfb507[_0x1fb1('0x34')]=_0x14db9e;if(_0x228235['query'][_0x1fb1('0x50')]){_0x2fe697['include']=[{'all':!![]}];}return db[_0x1fb1('0x3f')][_0x1fb1('0x51')](_0x2fe697);})[_0x1fb1('0x21')](function(_0x5d037e){_0xcfb507[_0x1fb1('0x52')]=_0x5d037e;return _0xcfb507;})[_0x1fb1('0x21')](respondWithFilteredResult(_0x314381,_0x2fe697))['catch'](handleError(_0x314381,null));};exports[_0x1fb1('0x53')]=function(_0x263161,_0x31a4ef){var _0x5771d5={'raw':!![],'where':{'id':_0x263161['params']['id']}},_0x58a576={};_0x58a576[_0x1fb1('0x42')]=_[_0x1fb1('0x44')](db[_0x1fb1('0x3f')][_0x1fb1('0x54')]);_0x58a576[_0x1fb1('0x43')]=_[_0x1fb1('0x44')](_0x263161['query']);_0x58a576['filters']=_[_0x1fb1('0x46')](_0x58a576[_0x1fb1('0x42')],_0x58a576[_0x1fb1('0x43')]);_0x5771d5[_0x1fb1('0x47')]=_['intersection'](_0x58a576['model'],qs[_0x1fb1('0x48')](_0x263161['query'][_0x1fb1('0x48')]));_0x5771d5['attributes']=_0x5771d5[_0x1fb1('0x47')]['length']?_0x5771d5[_0x1fb1('0x47')]:_0x58a576[_0x1fb1('0x42')];if(_0x263161[_0x1fb1('0x43')][_0x1fb1('0x50')]){_0x5771d5[_0x1fb1('0x55')]=[{'all':!![]}];}_0x5771d5=_['merge']({},_0x5771d5,_0x263161['options']);return db[_0x1fb1('0x3f')][_0x1fb1('0x56')](_0x5771d5)['then'](handleEntityNotFound(_0x31a4ef,null))['then'](respondWithResult(_0x31a4ef,null))[_0x1fb1('0x2c')](handleError(_0x31a4ef,null));};exports[_0x1fb1('0x57')]=function(_0x2d1c9a,_0x210f0b){return db[_0x1fb1('0x3f')][_0x1fb1('0x57')](_0x2d1c9a['body'],{})[_0x1fb1('0x21')](respondWithResult(_0x210f0b,0xc9))[_0x1fb1('0x2c')](handleError(_0x210f0b,null));};exports[_0x1fb1('0x38')]=function(_0x285df6,_0x12949f){if(_0x285df6[_0x1fb1('0x58')]['id']){delete _0x285df6[_0x1fb1('0x58')]['id'];}return db['SmsMessage'][_0x1fb1('0x56')]({'where':{'id':_0x285df6[_0x1fb1('0x59')]['id']}})[_0x1fb1('0x21')](handleEntityNotFound(_0x12949f,null))['then'](saveUpdates(_0x285df6[_0x1fb1('0x58')],null))[_0x1fb1('0x21')](respondWithResult(_0x12949f,null))[_0x1fb1('0x2c')](handleError(_0x12949f,null));};exports['destroy']=function(_0x1b924e,_0x2b232b){return db[_0x1fb1('0x3f')][_0x1fb1('0x56')]({'where':{'id':_0x1b924e[_0x1fb1('0x59')]['id']}})[_0x1fb1('0x21')](handleEntityNotFound(_0x2b232b,null))['then'](removeEntity(_0x2b232b,null))['catch'](handleError(_0x2b232b,null));};exports[_0x1fb1('0x5a')]=function(_0x1d7478,_0x32b126){return db[_0x1fb1('0x3f')][_0x1fb1('0x5a')]()[_0x1fb1('0x21')](respondWithResult(_0x32b126,null))[_0x1fb1('0x2c')](handleError(_0x32b126,null));};var interaction_log=require('../../config/logger')(_0x1fb1('0x5b'));exports[_0x1fb1('0x5c')]=function(_0x444efc,_0x2c0c36,_0x37505c){var _0xd87c55={'agent':{},'channel':'sms'};if(_0x444efc[_0x1fb1('0x58')]['id']){delete _0x444efc[_0x1fb1('0x58')]['id'];}_0x444efc[_0x1fb1('0x58')][_0x1fb1('0x5d')]=!![];_0x444efc[_0x1fb1('0x58')]['readAt']=moment()[_0x1fb1('0x5e')](_0x1fb1('0x5f'));_0x444efc['body'][_0x1fb1('0x60')]=_0x444efc['body'][_0x1fb1('0x60')]||_0x444efc[_0x1fb1('0x61')]['id'];_0xd87c55[_0x1fb1('0x62')]['id']=_0x444efc[_0x1fb1('0x58')]['UserId'];return db[_0x1fb1('0x3f')][_0x1fb1('0x56')]({'where':{'id':_0x444efc[_0x1fb1('0x59')]['id'],'UserId':null}})[_0x1fb1('0x21')](handleEntityNotFound(_0x2c0c36,null))['then'](saveUpdates(_0x444efc[_0x1fb1('0x58')],null))['then'](function(_0xe9aa33){if(_0xe9aa33){_0xd87c55[_0x1fb1('0x2a')]=_0xe9aa33['get']({'plain':!![]});return db[_0x1fb1('0x63')][_0x1fb1('0x56')]({'where':{'id':_0xe9aa33[_0x1fb1('0x64')]}});}return null;})[_0x1fb1('0x21')](handleEntityNotFound(_0x2c0c36,null))[_0x1fb1('0x21')](function(_0x2f50bf){if(_0x2f50bf){return _0x2f50bf[_0x1fb1('0x38')]({'UserId':_0x444efc['body'][_0x1fb1('0x60')],'read1stAt':_[_0x1fb1('0x65')](_0x2f50bf['read1stAt'])?moment()['format'](_0x1fb1('0x5f')):undefined});}return null;})[_0x1fb1('0x21')](function(_0x43a9da){if(_0x43a9da){_0xd87c55[_0x1fb1('0x66')]=_0x43a9da[_0x1fb1('0x67')]({'plain':!![]});interaction_log[_0x1fb1('0x22')](_0x1fb1('0x68'),_0x444efc['user']['id'],_0x444efc[_0x1fb1('0x61')][_0x1fb1('0x3b')],_0x444efc[_0x1fb1('0x61')][_0x1fb1('0x69')],_0xd87c55[_0x1fb1('0x66')]['id'],_0x444efc[_0x1fb1('0x58')]?JSON[_0x1fb1('0x27')](_0x444efc[_0x1fb1('0x58')]):_0x1fb1('0x6a'));return respondWithRpcPromise('AcceptMessage',_0x1fb1('0x6b'),_0xd87c55);}return null;})[_0x1fb1('0x21')](function(_0x557305){var _0x4c33ce=_0x1fb1('0x6c')+_0x557305[_0x1fb1('0x2a')]['ContactId'];return db[_0x1fb1('0x6d')][_0x1fb1('0x43')](_0x4c33ce,{'type':db[_0x1fb1('0x6e')][_0x1fb1('0x6f')][_0x1fb1('0x70')],'raw':!![]})[_0x1fb1('0x21')](function(_0x39617b){return _0x39617b;});})[_0x1fb1('0x21')](function(_0x3e6652){if(_0x3e6652){_0xd87c55[_0x1fb1('0x2a')][_0x1fb1('0x71')]=_0x3e6652[0x0];if(!_0x444efc[_0x1fb1('0x58')][_0x1fb1('0x60')])return;return db[_0x1fb1('0x72')][_0x1fb1('0x56')]({'where':{'id':_0x444efc[_0x1fb1('0x58')][_0x1fb1('0x60')],'role':_0x1fb1('0x62')},'attributes':['id',_0x1fb1('0x3b'),_0x1fb1('0x73'),_0x1fb1('0x74'),'internal'],'raw':!![]});}return null;})['then'](function(_0x3adab6){if(!_0x3adab6)return null;_0xd87c55['message'][_0x1fb1('0x62')]=_0x3adab6;return _0xd87c55;})[_0x1fb1('0x21')](function(_0x54592a){if(_0x54592a){if(_0x444efc['body']['manual']){_0xd87c55['message'][_0x1fb1('0x75')]=util[_0x1fb1('0x5e')](_0x1fb1('0x76'),_0x444efc[_0x1fb1('0x61')][_0x1fb1('0x3b')]);_0xd87c55[_0x1fb1('0x2a')][_0x1fb1('0x77')]=_0xd87c55[_0x1fb1('0x77')];_0xd87c55['message']['motionChannel']=_0xd87c55[_0x1fb1('0x77')];_0xd87c55[_0x1fb1('0x2a')][_0x1fb1('0x78')]=_0x1fb1('0x5c');return respondWithRpcPromise(_0x1fb1('0x79'),_0x1fb1('0x79'),{'event':_0x1fb1('0x7a'),'message':_0xd87c55[_0x1fb1('0x2a')]},client9002)[_0x1fb1('0x21')](function(){return _0xd87c55;});}return _0xd87c55;}return null;})[_0x1fb1('0x21')](respondWithResult(_0x2c0c36,null))['catch'](handleError(_0x2c0c36,null));};var interaction_log=require(_0x1fb1('0x7b'))(_0x1fb1('0x5b'));exports['reject']=function(_0x320371,_0x3fd837,_0x48e66f){var _0x1761e0={'agent':{},'channel':_0x1fb1('0x7c')};if(_0x320371[_0x1fb1('0x58')]['id']){delete _0x320371[_0x1fb1('0x58')]['id'];}_0x320371['body'][_0x1fb1('0x60')]=_0x320371[_0x1fb1('0x58')]['UserId']||_0x320371[_0x1fb1('0x61')]['id'];_0x1761e0['agent']['id']=_0x320371['body'][_0x1fb1('0x60')];return db[_0x1fb1('0x3f')][_0x1fb1('0x56')]({'where':{'id':_0x320371[_0x1fb1('0x59')]['id'],'UserId':null}})[_0x1fb1('0x21')](handleEntityNotFound(_0x3fd837,null))[_0x1fb1('0x21')](function(_0x56efbc){if(_0x56efbc){_0x1761e0[_0x1fb1('0x2a')]=_0x56efbc[_0x1fb1('0x67')]({'plain':!![]});return db[_0x1fb1('0x63')][_0x1fb1('0x56')]({'where':{'id':_0x56efbc['SmsInteractionId']}});}return null;})[_0x1fb1('0x21')](handleEntityNotFound(_0x3fd837,null))[_0x1fb1('0x21')](function(_0x5dd570){if(_0x5dd570){_0x1761e0['interaction']=_0x5dd570[_0x1fb1('0x67')]({'plain':!![]});interaction_log[_0x1fb1('0x22')](_0x1fb1('0x7d'),_0x320371[_0x1fb1('0x61')]['id'],_0x320371['user'][_0x1fb1('0x3b')],_0x320371['user']['role'],_0x1761e0['interaction']['id'],_0x320371['body']?JSON[_0x1fb1('0x27')](_0x320371[_0x1fb1('0x58')]):_0x1fb1('0x6a'));return respondWithRpcPromise(_0x1fb1('0x7e'),_0x1fb1('0x7f'),_0x1761e0);}return null;})[_0x1fb1('0x21')](function(_0x5acf57){var _0x410402=_0x1fb1('0x6c')+_0x5acf57[_0x1fb1('0x2a')][_0x1fb1('0x80')];return db[_0x1fb1('0x6d')][_0x1fb1('0x43')](_0x410402,{'type':db['Sequelize'][_0x1fb1('0x6f')][_0x1fb1('0x70')],'raw':!![]})[_0x1fb1('0x21')](function(_0x1dbc01){return _0x1dbc01;});})[_0x1fb1('0x21')](function(_0x4abfb7){if(_0x4abfb7){_0x1761e0[_0x1fb1('0x2a')][_0x1fb1('0x71')]=_0x4abfb7[0x0];if(!_0x320371[_0x1fb1('0x58')][_0x1fb1('0x60')])return;return db[_0x1fb1('0x72')][_0x1fb1('0x56')]({'where':{'id':_0x320371['body']['UserId'],'role':'agent'},'attributes':['id',_0x1fb1('0x3b'),'fullname','email',_0x1fb1('0x81')],'raw':!![]});}return null;})[_0x1fb1('0x21')](function(_0x194aee){if(!_0x194aee)return null;_0x1761e0[_0x1fb1('0x2a')][_0x1fb1('0x62')]=_0x194aee;return _0x1761e0;})[_0x1fb1('0x21')](function(_0x47a193){if(_0x47a193){_0x47a193[_0x1fb1('0x2a')][_0x1fb1('0x75')]=util[_0x1fb1('0x5e')](_0x1fb1('0x76'),_0x320371[_0x1fb1('0x61')][_0x1fb1('0x3b')]);_0x47a193[_0x1fb1('0x2a')][_0x1fb1('0x77')]=_0x1761e0[_0x1fb1('0x77')];_0x47a193['message'][_0x1fb1('0x82')]=_0x1761e0[_0x1fb1('0x77')];_0x47a193[_0x1fb1('0x2a')][_0x1fb1('0x78')]=_0x1fb1('0x83');respondWithRpcPromise('EventManager',_0x1fb1('0x79'),{'event':'rejectmessage','message':_0x47a193[_0x1fb1('0x2a')]},client9002);return _0x1761e0;}return null;})['then'](respondWithResult(_0x3fd837,null))['catch'](handleError(_0x3fd837,null));};exports[_0x1fb1('0x2e')]=function(_0x5c175c,_0x49e286,_0x48413e){if(_0x5c175c[_0x1fb1('0x58')]['id']){delete _0x5c175c['body']['id'];}var _0x2e5b91;return db[_0x1fb1('0x3f')][_0x1fb1('0x56')]({'where':{'id':_0x5c175c[_0x1fb1('0x59')]['id']}})[_0x1fb1('0x21')](handleEntityNotFound(_0x49e286,null))['then'](function(_0x10df48){if(_0x10df48){_0x2e5b91=_0x10df48;return db[_0x1fb1('0x84')][_0x1fb1('0x56')]({'where':{'id':_0x10df48[_0x1fb1('0x85')]}});}})[_0x1fb1('0x21')](handleEntityNotFound(_0x49e286,null))[_0x1fb1('0x21')](function(_0x92869){if(_0x92869){logger[_0x1fb1('0x25')](_0x1fb1('0x26'),_0x1fb1('0x2e'),_0x1fb1('0x86'),_0x92869[_0x1fb1('0x40')],util['inspect'](_0x5c175c['body'],{'showHidden':![],'depth':null}));switch(_0x92869[_0x1fb1('0x40')]){case _0x1fb1('0x87'):if(_0x5c175c[_0x1fb1('0x58')][_0x1fb1('0x88')]&&_0x5c175c['body'][_0x1fb1('0x88')]===_0x2e5b91[_0x1fb1('0x89')]){return _0x2e5b91[_0x1fb1('0x38')]({'read':!![]});}else{logger[_0x1fb1('0x29')](_0x1fb1('0x8a'),'status',_0x1fb1('0x87'),util[_0x1fb1('0x8b')](_0x5c175c[_0x1fb1('0x58')],{'showHidden':![],'depth':null}));}break;case _0x1fb1('0x8c'):if(_0x5c175c[_0x1fb1('0x58')]['MessageUUID']&&_0x5c175c[_0x1fb1('0x58')]['MessageUUID']===_0x2e5b91[_0x1fb1('0x89')]&&_['indexOf']([_0x1fb1('0x8d'),_0x1fb1('0x8e')],_0x5c175c[_0x1fb1('0x58')]['Status'])>=0x0){return _0x2e5b91[_0x1fb1('0x38')]({'read':!![]});}else{logger[_0x1fb1('0x29')](_0x1fb1('0x8a'),_0x1fb1('0x2e'),_0x1fb1('0x8f'),util[_0x1fb1('0x8b')](_0x5c175c[_0x1fb1('0x58')],{'showHidden':![],'depth':null}));}break;case _0x1fb1('0x90'):var _0x508dda=_0x5c175c['body'][_0x1fb1('0x91')][0x0];if(_0x508dda[_0x1fb1('0x2e')]['groupName']===_0x1fb1('0x92')){return _0x2e5b91[_0x1fb1('0x38')]({'read':!![]});}else{logger[_0x1fb1('0x29')](_0x1fb1('0x8a'),_0x1fb1('0x2e'),_0x1fb1('0x90'),util[_0x1fb1('0x8b')](_0x5c175c[_0x1fb1('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x2e5b91;}})['then'](respondWithResult(_0x49e286,null))['catch'](handleError(_0x49e286,null));};
\ No newline at end of file
index a420770..d472d02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac51=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update','remove'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0xac51,0x185));var _0x1ac5=function(_0x4a2b2c,_0x1f22e8){_0x4a2b2c=_0x4a2b2c-0x0;var _0x5a1fad=_0xac51[_0x4a2b2c];return _0x5a1fad;};'use strict';var EventEmitter=require(_0x1ac5('0x0'));var SmsMessage=require(_0x1ac5('0x1'))['db'][_0x1ac5('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x1ac5('0x3')](0x0);var events={'afterCreate':_0x1ac5('0x4'),'afterUpdate':_0x1ac5('0x5'),'afterDestroy':_0x1ac5('0x6')};function emitEvent(_0x52f0db){return function(_0x12c26a,_0x1b70f0,_0x35bed3){SmsMessageEvents[_0x1ac5('0x7')](_0x52f0db+':'+_0x12c26a['id'],_0x12c26a);SmsMessageEvents[_0x1ac5('0x7')](_0x52f0db,_0x12c26a);_0x35bed3(null);};}for(var e in events){if(events[_0x1ac5('0x8')](e)){var event=events[e];SmsMessage[_0x1ac5('0x9')](e,emitEvent(event));}}module[_0x1ac5('0xa')]=SmsMessageEvents;
\ No newline at end of file
+var _0x48bd=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x48bd,0x1a2));var _0xd48b=function(_0x3122ed,_0x30fc57){_0x3122ed=_0x3122ed-0x0;var _0x1b07a1=_0x48bd[_0x3122ed];return _0x1b07a1;};'use strict';var EventEmitter=require(_0xd48b('0x0'));var SmsMessage=require(_0xd48b('0x1'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xd48b('0x2')](0x0);var events={'afterCreate':_0xd48b('0x3'),'afterUpdate':_0xd48b('0x4'),'afterDestroy':_0xd48b('0x5')};function emitEvent(_0x3f0775){return function(_0x51e661,_0x61c76c,_0x4a6a4a){SmsMessageEvents[_0xd48b('0x6')](_0x3f0775+':'+_0x51e661['id'],_0x51e661);SmsMessageEvents[_0xd48b('0x6')](_0x3f0775,_0x51e661);_0x4a6a4a(null);};}for(var e in events){if(events[_0xd48b('0x7')](e)){var event=events[e];SmsMessage[_0xd48b('0x8')](e,emitEvent(event));}}module[_0xd48b('0x9')]=SmsMessageEvents;
\ No newline at end of file
index 31b1acc..f83fb02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbac=['utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./smsMessage.attributes','SmsMessage','messageId','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','SmsInteraction','findOne','SmsInteractionId','then','update','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','authToken','phone','accountSid','messages','remote','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','&password=','GET','split','user_key','session_key','internal_order_id','deliveryReport','read','inspect','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','Missing\x20parameters:\x20authToken','clicksend','senderString','format','POST','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','head','message_id','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','/api/sms/messages/','%s:%s','https://api.plivo.com/v1/Account/%s/Message/','infobip','baseUrl','/auth/1/session','application/json','IBSSO\x20','csc','crypto','login','text','timestamp','keys','sort','apiKey','createHash','md5','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','accountId','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','refid','status','Token\x20not\x20received','finally'];(function(_0xbbe2f3,_0x5ad0ef){var _0xf08a0b=function(_0x37a8ae){while(--_0x37a8ae){_0xbbe2f3['push'](_0xbbe2f3['shift']());}};_0xf08a0b(++_0x5ad0ef);}(_0xfbac,0x167));var _0xcfba=function(_0x2d9069,_0x3f26ef){_0x2d9069=_0x2d9069-0x0;var _0x65b981=_0xfbac[_0x2d9069];return _0x65b981;};'use strict';var _=require('lodash');var util=require(_0xcfba('0x0'));var logger=require(_0xcfba('0x1'))(_0xcfba('0x2'));var moment=require(_0xcfba('0x3'));var BPromise=require(_0xcfba('0x4'));var rp=require(_0xcfba('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xcfba('0x6'));var attributes=require(_0xcfba('0x7'));module['exports']=function(_0x4eec09,_0x3bb3af){return _0x4eec09['define'](_0xcfba('0x8'),attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0xcfba('0x9'),'fields':[_0xcfba('0x9')]},{'name':'fti_sms_messages','fields':[_0xcfba('0xa')],'type':_0xcfba('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xb47f0e,_0x460f01,_0x12d959){var _0x44af2e=_0x4eec09[_0xcfba('0xc')];var _0x4779bc=_0xb47f0e[_0xcfba('0xd')]({'plain':!![]});if(_0x4779bc[_0xcfba('0xe')][_0xcfba('0xf')]()==='in'||_0x4779bc[_0xcfba('0xe')]['toLowerCase']()==='out'&&!_0x4779bc[_0xcfba('0x10')]&&!_[_0xcfba('0x11')](_0x4779bc['UserId'])){_0x44af2e[_0xcfba('0x12')][_0xcfba('0x13')]({'where':{'id':_0x4779bc[_0xcfba('0x14')]}})[_0xcfba('0x15')](function(_0x2333ee){if(_0x2333ee){_0x2333ee[_0xcfba('0x16')]({'lastMsgAt':_0x4779bc[_0xcfba('0x17')],'lastMsgDirection':_0x4779bc[_0xcfba('0xe')][_0xcfba('0xf')]()});}})[_0xcfba('0x18')](function(_0x231192){console[_0xcfba('0x19')](_0x231192);});}if(_0x4779bc[_0xcfba('0xe')]==='out'&&!_0x4779bc[_0xcfba('0x10')]){var _0x1d7be2;_0x44af2e[_0xcfba('0x1a')][_0xcfba('0x1b')]({'where':{'id':_0x4779bc[_0xcfba('0x1c')]},'raw':!![]})[_0xcfba('0x15')](function(_0x112955){_0x1d7be2=_0x112955;if(_0x1d7be2&&_0x1d7be2['type']){switch(_0x1d7be2[_0xcfba('0x1d')]){case _0xcfba('0x1e'):var _0x35cec9=require('twilio');if(_0x1d7be2['accountSid']&&_0x1d7be2[_0xcfba('0x1f')]&&_0x1d7be2[_0xcfba('0x20')]){var _0x40a0df=new _0x35cec9(_0x1d7be2[_0xcfba('0x21')],_0x1d7be2[_0xcfba('0x1f')]);_0x40a0df[_0xcfba('0x22')]['create']({'body':_0x4779bc[_0xcfba('0xa')],'to':_0x4779bc['phone'],'from':_0x1d7be2[_0xcfba('0x20')],'statusCallback':_0x1d7be2[_0xcfba('0x23')]+'/api/sms/messages/'+_0x4779bc['id']+_0xcfba('0x24')+_0x1d7be2[_0xcfba('0x25')]})[_0xcfba('0x15')](function(_0x3fb061){if(_0x3fb061['sid']){return _0xb47f0e['update']({'messageId':_0x3fb061[_0xcfba('0x26')]});}})[_0xcfba('0x18')](function(_0x200a77){logger['error'](_0xcfba('0x27'),'afterCreate',_0xcfba('0x1e'),util['inspect'](_0x200a77,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xcfba('0x27'),_0xcfba('0x28'),'twilio',_0xcfba('0x29'));}break;case _0xcfba('0x2a'):var _0x69bb2f=_0xcfba('0x2b');if(_0x1d7be2[_0xcfba('0x2c')]&&_0x1d7be2[_0xcfba('0x2d')]){var _0x2ee85c={'recipient':[_0x4779bc[_0xcfba('0x20')]],'message':_0x4779bc['body'],'message_type':_0x1d7be2[_0xcfba('0x2e')]};if(_0x1d7be2['smsMethod']&&_0x1d7be2['smsMethod']!=='SI'){_0x2ee85c[_0xcfba('0x2f')]=_0x1d7be2['phone'];}var _0x4ee341={'url':_0x69bb2f+'login?username='+_0x1d7be2[_0xcfba('0x2c')]+_0xcfba('0x30')+_0x1d7be2[_0xcfba('0x2d')],'method':_0xcfba('0x31')};rp(_0x4ee341)[_0xcfba('0x15')](function(_0x1aaf34){var _0x1a0a80=_0x1aaf34[_0xcfba('0x32')](';');var _0x5b0db9={'user_key':_0x1a0a80[0x0],'session_key':_0x1a0a80[0x1]};_0x4ee341={'url':_0x69bb2f+'sms','method':'POST','headers':{'user_key':_0x5b0db9[_0xcfba('0x33')],'Session_key':_0x5b0db9[_0xcfba('0x34')]},'json':!![],'body':_0x2ee85c};return rp(_0x4ee341);})['then'](function(_0x34f60b){if(_0x34f60b['total_sent']>=0x1){var _0x3a3366={'messageId':_0x34f60b[_0xcfba('0x35')]};if(_0x1d7be2[_0xcfba('0x2e')]!=='GP'||!_0x1d7be2[_0xcfba('0x36')]){_0x3a3366[_0xcfba('0x37')]=!![];}return _0xb47f0e[_0xcfba('0x16')](_0x3a3366);}else{return logger[_0xcfba('0x19')](_0xcfba('0x27'),'afterCreate',_0xcfba('0x2a'),util[_0xcfba('0x38')](_0x34f60b,{'showHidden':![],'depth':null}));}})[_0xcfba('0x18')](function(_0x3abf9d){return logger[_0xcfba('0x19')](_0xcfba('0x27'),_0xcfba('0x28'),'skebby',util[_0xcfba('0x38')](_0x3abf9d,{'showHidden':![],'depth':null}));});}else{logger[_0xcfba('0x19')](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x2a'),'Missing\x20parameters:\x20username,\x20password');}break;case'connectel':if(_0x1d7be2[_0xcfba('0x1f')]){var _0x5d970f={'recipient':_0x4779bc[_0xcfba('0x20')],'message':_0x4779bc[_0xcfba('0xa')],'sender':_0x1d7be2['senderString']||_0x1d7be2[_0xcfba('0x20')],'authorization':_0x1d7be2[_0xcfba('0x1f')]};var _0x460f01={'method':'POST','uri':_0xcfba('0x39'),'body':_0x5d970f,'json':!![]};rp(_0x460f01)[_0xcfba('0x15')](function(_0x335f28){var _0x39f058={'messageId':_0x335f28[_0xcfba('0x3a')]};if(!_0x1d7be2[_0xcfba('0x36')]){_0x39f058[_0xcfba('0x37')]=!![];}return _0xb47f0e['update'](_0x39f058);})[_0xcfba('0x18')](function(_0x43c206){logger['error'](_0xcfba('0x27'),'afterCreate',_0xcfba('0x3b'),util['inspect'](_0x43c206,{'showHidden':![],'depth':null}));});}else{logger[_0xcfba('0x19')](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x3b'),_0xcfba('0x3c'));}break;case _0xcfba('0x3d'):if(_0x1d7be2['username']&&_0x1d7be2[_0xcfba('0x2d')]){var _0x5d970f={'messages':[{'source':'xCALLY\x20Motion','to':_0x4779bc[_0xcfba('0x20')],'body':_0x4779bc[_0xcfba('0xa')],'from':_0x1d7be2[_0xcfba('0x3e')]||_0x1d7be2[_0xcfba('0x20')]}]};var _0x18d77f=util[_0xcfba('0x3f')]('%s:%s',_0x1d7be2['username'],_0x1d7be2['password']);var _0x460f01={'method':_0xcfba('0x40'),'uri':_0xcfba('0x41'),'body':_0x5d970f,'headers':{'Authorization':util[_0xcfba('0x3f')](_0xcfba('0x42'),new Buffer(_0x18d77f)[_0xcfba('0x43')](_0xcfba('0x44')))},'json':!![]};rp(_0x460f01)[_0xcfba('0x15')](function(_0x813013){if(_0x813013['http_code']>=0xc8&&_0x813013[_0xcfba('0x45')]<=0xce){if(_0x813013[_0xcfba('0x46')]&&_0x813013[_0xcfba('0x46')][_0xcfba('0x47')]>0x0){var _0x36ba07=_[_0xcfba('0x48')](_0x813013[_0xcfba('0x46')]['messages']);var _0x1c2f9b={'messageId':_0x36ba07[_0xcfba('0x49')]};if(!_0x1d7be2[_0xcfba('0x36')]){_0x1c2f9b[_0xcfba('0x37')]=!![];}return _0xb47f0e['update'](_0x1c2f9b);}else{logger[_0xcfba('0x19')](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x4a'),util[_0xcfba('0x38')](_0x813013,{'showHidden':![],'depth':null}));}}else{logger[_0xcfba('0x19')](_0xcfba('0x27'),'afterCreate','clickSend',util[_0xcfba('0x38')](_0x813013,{'showHidden':![],'depth':null}));}})[_0xcfba('0x18')](function(_0x3a5b52){logger[_0xcfba('0x19')](_0xcfba('0x27'),_0xcfba('0x28'),'clickSend',util['inspect'](_0x3a5b52,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xcfba('0x27'),'afterCreate',_0xcfba('0x4a'),_0xcfba('0x4b'));}break;case _0xcfba('0x4c'):if(_0x1d7be2[_0xcfba('0x4d')]&&_0x1d7be2['authToken']){var _0x5d970f={'dst':_0x4779bc[_0xcfba('0x20')],'text':_0x4779bc[_0xcfba('0xa')],'src':_0x1d7be2[_0xcfba('0x3e')]||_0x1d7be2[_0xcfba('0x20')],'url':_0x1d7be2[_0xcfba('0x23')]+_0xcfba('0x4e')+_0x4779bc['id']+_0xcfba('0x24')+_0x1d7be2[_0xcfba('0x25')]};var _0x18d77f=util['format'](_0xcfba('0x4f'),_0x1d7be2[_0xcfba('0x4d')],_0x1d7be2[_0xcfba('0x1f')]);var _0x460f01={'method':_0xcfba('0x40'),'uri':util[_0xcfba('0x3f')](_0xcfba('0x50'),_0x1d7be2[_0xcfba('0x4d')]),'body':_0x5d970f,'headers':{'Authorization':util[_0xcfba('0x3f')](_0xcfba('0x42'),new Buffer(_0x18d77f)[_0xcfba('0x43')](_0xcfba('0x44')))},'json':!![]};rp(_0x460f01)[_0xcfba('0x15')](function(_0xbf1c0a){var _0x5f36ac={'messageId':_0xbf1c0a['message_uuid'][0x0]};return _0xb47f0e[_0xcfba('0x16')](_0x5f36ac);})[_0xcfba('0x18')](function(_0x28cd32){logger[_0xcfba('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xcfba('0x28'),_0xcfba('0x4c'),util[_0xcfba('0x38')](_0x28cd32,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x4c'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0xcfba('0x51'):if(_0x1d7be2[_0xcfba('0x2c')]&&_0x1d7be2[_0xcfba('0x2d')]){if(_0x1d7be2[_0xcfba('0x52')]){var _0x542f71={'method':'POST','uri':_0x1d7be2[_0xcfba('0x52')]+_0xcfba('0x53'),'body':{'username':_0x1d7be2['username'],'password':_0x1d7be2['password']},'json':!![]};return rp(_0x542f71)[_0xcfba('0x15')](function(_0x4cf3ef){var _0x3e9cf7={'method':_0xcfba('0x40'),'uri':_0x1d7be2[_0xcfba('0x52')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x1d7be2[_0xcfba('0x20')],'destinations':[{'to':_0x4779bc[_0xcfba('0x20')]}],'text':_0x4779bc[_0xcfba('0xa')],'notifyUrl':_0x1d7be2[_0xcfba('0x23')]+'/api/sms/messages/'+_0x4779bc['id']+_0xcfba('0x24')+_0x1d7be2[_0xcfba('0x25')],'notifyContentType':_0xcfba('0x54'),'callbackData':_0x1d7be2[_0xcfba('0x20')]+';'+_0x4779bc[_0xcfba('0xa')]}]},'headers':{'Authorization':_0xcfba('0x55')+_0x4cf3ef['token']},'json':!![]};return rp(_0x3e9cf7)[_0xcfba('0x15')](function(_0x331691){if(_0x331691[_0xcfba('0x22')]){var _0x48c81a={'messageId':_0x331691[_0xcfba('0x22')][0x0]['messageId']};if(!_0x1d7be2[_0xcfba('0x36')]){_0x48c81a[_0xcfba('0x37')]=!![];}return _0xb47f0e[_0xcfba('0x16')](_0x48c81a);}else{return logger[_0xcfba('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xcfba('0x28'),_0xcfba('0x51'),util[_0xcfba('0x38')](_0x331691,{'showHidden':![],'depth':null}));}});})[_0xcfba('0x18')](function(_0x57fb01){return logger[_0xcfba('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xcfba('0x28'),_0xcfba('0x51'),util[_0xcfba('0x38')](_0x57fb01,{'showHidden':![],'depth':null}));});}else{logger[_0xcfba('0x19')](_0xcfba('0x27'),'afterCreate',_0xcfba('0x51'),'Missing\x20parameters:\x20base_url');}}else{logger[_0xcfba('0x19')](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x51'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xcfba('0x56'):var _0x5f5150=require(_0xcfba('0x57'));if(_0x1d7be2['apiKey']){var _0x453312={};_0x453312[_0xcfba('0x58')]=_0x1d7be2['username'];_0x453312['phone']=_0x4779bc[_0xcfba('0x20')];_0x453312[_0xcfba('0x2f')]=_0x1d7be2['phone'];_0x453312[_0xcfba('0x59')]=_0x4779bc[_0xcfba('0xa')];_0x453312[_0xcfba('0x5a')]=+new Date();var _0x385df0='';var _0xa554d0='';var _0x53c8f0=Object[_0xcfba('0x5b')](_0x453312);_0x53c8f0[_0xcfba('0x5c')]();for(var _0x587fe1=0x0;_0x587fe1<_0x53c8f0['length'];_0x587fe1++){if(_0x385df0!=''){_0x385df0+='&';}_0x385df0+=_0x53c8f0[_0x587fe1]+'='+encodeURIComponent(_0x453312[_0x53c8f0[_0x587fe1]]);_0xa554d0+=_0x453312[_0x53c8f0[_0x587fe1]];}_0xa554d0+=_0x1d7be2[_0xcfba('0x5d')];_0xa554d0=_0x5f5150[_0xcfba('0x5e')](_0xcfba('0x5f'))[_0xcfba('0x16')](_0xa554d0)['digest']('hex');if(_0x385df0!==''){_0x385df0+='&';}_0x385df0+='signature='+_0xa554d0;var _0x4ee341={'method':_0xcfba('0x31'),'uri':_0x1d7be2[_0xcfba('0x52')]+_0xcfba('0x60')+_0x385df0,'json':!![]};return rp(_0x4ee341)[_0xcfba('0x15')](function(_0x407012){var _0x4257c0=Object[_0xcfba('0x5b')](_0x407012);if(_0x407012[_0x4257c0[0x0]][_0xcfba('0x19')]&&parseInt(_0x407012[_0x4257c0[0x0]]['error'])===0x0){var _0xbfad3e={'messageId':_0x407012[_0x4257c0[0x0]][_0xcfba('0x61')]};if(!_0x1d7be2[_0xcfba('0x36')]){_0xbfad3e[_0xcfba('0x37')]=!![];}return _0xb47f0e[_0xcfba('0x16')](_0xbfad3e);}else{return logger[_0xcfba('0x19')](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x56'),util[_0xcfba('0x38')](_0x407012['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x182d7d){return logger[_0xcfba('0x19')](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x56'),util[_0xcfba('0x38')](_0x182d7d,{'showHidden':![],'depth':null}));});}else{logger[_0xcfba('0x19')](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x56'),_0xcfba('0x62'));}break;case _0xcfba('0x63'):if(_0x1d7be2[_0xcfba('0x5d')]){var _0x59e6f9={'method':_0xcfba('0x40'),'uri':_0xcfba('0x64'),'headers':{'Authorization':_0x1d7be2[_0xcfba('0x5d')]},'body':{'content':_0x4779bc[_0xcfba('0xa')],'to':[_0x4779bc['phone']],'from':_0x1d7be2[_0xcfba('0x20')],'binary':![],'clientMessageId':_0xcfba('0x65'),'charset':_0xcfba('0x66')},'json':!![]};rp(_0x59e6f9)[_0xcfba('0x15')](function(_0x274650){if(!_0x274650['error']){var _0x152db6={'messageId':_0x274650[_0xcfba('0x22')][0x0][_0xcfba('0x67')]};if(!_0x1d7be2[_0xcfba('0x36')]){_0x152db6[_0xcfba('0x37')]=!![];}return _0xb47f0e[_0xcfba('0x16')](_0x152db6);}else{return logger[_0xcfba('0x19')](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x63'),util[_0xcfba('0x38')](_0x274650['error'],{'showHidden':![],'depth':null}));}})[_0xcfba('0x18')](function(_0x51c5d9){return logger['error'](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x63'),util[_0xcfba('0x38')](_0x51c5d9,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x63'),_0xcfba('0x62'));}break;case _0xcfba('0x68'):if(_0x1d7be2[_0xcfba('0x2c')]&&_0x1d7be2[_0xcfba('0x2d')]){var _0x18d77f=util[_0xcfba('0x3f')](_0xcfba('0x4f'),_0x1d7be2[_0xcfba('0x2c')],_0x1d7be2[_0xcfba('0x2d')]);var _0x460f01={'method':_0xcfba('0x40'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x1d7be2[_0xcfba('0x69')]+_0xcfba('0x6a'),'body':{'to':[_0x4779bc[_0xcfba('0x20')]],'text':_0x4779bc[_0xcfba('0xa')],'from':_0x1d7be2[_0xcfba('0x20')],'applicationId':_0x1d7be2[_0xcfba('0x6b')]},'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x18d77f)[_0xcfba('0x43')](_0xcfba('0x44')))},'json':!![]};rp(_0x460f01)[_0xcfba('0x15')](function(_0x312234){if(_0x312234['id']){var _0xc06ab3={'messageId':_0x312234['id']};return _0xb47f0e['update'](_0xc06ab3);}else{logger['error'](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x68'),util['inspect'](_0x312234,{'showHidden':![],'depth':null}));}})[_0xcfba('0x18')](function(_0x58c4c5){logger[_0xcfba('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xcfba('0x28'),_0xcfba('0x68'),util[_0xcfba('0x38')](_0x58c4c5,{'showHidden':![],'depth':null}));});}else{logger[_0xcfba('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xcfba('0x28'),_0xcfba('0x68'),_0xcfba('0x4b'));}break;case _0xcfba('0x6c'):if(_0x1d7be2[_0xcfba('0x5d')]){var _0x24f36e={};var _0x4ee341={'method':'POST','uri':_0xcfba('0x6d'),'headers':{'Authorization':'Bearer\x20'+_0x1d7be2[_0xcfba('0x5d')],'Content-Type':_0xcfba('0x54')},'body':{'from':_0x1d7be2[_0xcfba('0x20')],'to':_0x4779bc[_0xcfba('0x20')],'text':_0x4779bc[_0xcfba('0xa')]},'json':!![]};return rp(_0x4ee341)[_0xcfba('0x15')](function(_0x8233f1){if(_0x8233f1['code']==0xca){_0x24f36e[_0xcfba('0x6e')]=_0x8233f1;var _0x5f3b89={'method':_0xcfba('0x40'),'uri':_0xcfba('0x6f'),'headers':{'Authorization':_0xcfba('0x70')+_0x1d7be2[_0xcfba('0x5d')],'Content-Type':_0xcfba('0x54')},'body':{'refid':_0x24f36e[_0xcfba('0x6e')][_0xcfba('0x71')]},'json':!![]};return rp(_0x5f3b89)[_0xcfba('0x15')](function(_0x204b61){_0x24f36e[_0xcfba('0x72')]=_0x204b61;var _0x1d7df9={'messageId':_0x24f36e['message']['refid'],'read':!![]};return _0xb47f0e[_0xcfba('0x16')](_0x1d7df9);});}else{return logger[_0xcfba('0x19')](_0xcfba('0x27'),_0xcfba('0x28'),_0xcfba('0x6c'),util[_0xcfba('0x38')](_0x8233f1,{'showHidden':![],'depth':null}));}})[_0xcfba('0x18')](function(_0x4c9770){return logger[_0xcfba('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xcfba('0x6c'),util['inspect'](_0x4c9770,{'showHidden':![],'depth':null}));});}else{return logger[_0xcfba('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xcfba('0x28'),'intelepeer',_0xcfba('0x73'));}break;}}})[_0xcfba('0x74')](function(){_0x12d959();});}else{_0x12d959();}}},'charset':_0xcfba('0x75'),'collate':_0xcfba('0x76')});};
\ No newline at end of file
+var _0x2bd6=['get','direction','toLowerCase','out','secret','isNil','UserId','findOne','then','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','remote','/api/sms/messages/','/status?token=','token','sid','update','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','&password=','GET','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','senderString','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','head','message_id','clickSend','authId','https://api.plivo.com/v1/Account/%s/Message/','plivo','Missing\x20parameters:\x20authId,\x20authToken','infobip','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','login','text','timestamp','sort','length','digest','hex','baseUrl','/external/get/send.php?','keys','id_sms','Missing\x20parameters:\x20apiKey','clickatell','apiKey','https://platform.clickatell.com/messages','uuid','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','status','refid','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./smsMessage.attributes','define','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models'];(function(_0x2d9e51,_0x45f4ea){var _0x256a82=function(_0x150a42){while(--_0x150a42){_0x2d9e51['push'](_0x2d9e51['shift']());}};_0x256a82(++_0x45f4ea);}(_0x2bd6,0x1f4));var _0x62bd=function(_0x5f1617,_0x46277b){_0x5f1617=_0x5f1617-0x0;var _0x3af5da=_0x2bd6[_0x5f1617];return _0x3af5da;};'use strict';var _=require(_0x62bd('0x0'));var util=require(_0x62bd('0x1'));var logger=require(_0x62bd('0x2'))(_0x62bd('0x3'));var moment=require(_0x62bd('0x4'));var BPromise=require('bluebird');var rp=require(_0x62bd('0x5'));var fs=require('fs');var path=require(_0x62bd('0x6'));var rimraf=require(_0x62bd('0x7'));var config=require('../../config/environment');var attributes=require(_0x62bd('0x8'));module['exports']=function(_0x4b8aa7,_0x3c267e){return _0x4b8aa7[_0x62bd('0x9')]('SmsMessage',attributes,{'tableName':_0x62bd('0xa'),'paranoid':![],'indexes':[{'name':_0x62bd('0xb'),'fields':['messageId']},{'name':_0x62bd('0xc'),'fields':[_0x62bd('0xd')],'type':_0x62bd('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x15085e,_0x429d3f,_0x341a2c){var _0x4423f2=_0x4b8aa7[_0x62bd('0xf')];var _0x3c582f=_0x15085e[_0x62bd('0x10')]({'plain':!![]});if(_0x3c582f['direction']['toLowerCase']()==='in'||_0x3c582f[_0x62bd('0x11')][_0x62bd('0x12')]()===_0x62bd('0x13')&&!_0x3c582f[_0x62bd('0x14')]&&!_[_0x62bd('0x15')](_0x3c582f[_0x62bd('0x16')])){_0x4423f2['SmsInteraction'][_0x62bd('0x17')]({'where':{'id':_0x3c582f['SmsInteractionId']}})[_0x62bd('0x18')](function(_0x5dc408){if(_0x5dc408){_0x5dc408['update']({'lastMsgAt':_0x3c582f[_0x62bd('0x19')],'lastMsgDirection':_0x3c582f[_0x62bd('0x11')][_0x62bd('0x12')]()});}})[_0x62bd('0x1a')](function(_0x1d178b){console[_0x62bd('0x1b')](_0x1d178b);});}if(_0x3c582f[_0x62bd('0x11')]===_0x62bd('0x13')&&!_0x3c582f['secret']){var _0x421658;_0x4423f2[_0x62bd('0x1c')][_0x62bd('0x1d')]({'where':{'id':_0x3c582f[_0x62bd('0x1e')]},'raw':!![]})['then'](function(_0x3d050b){_0x421658=_0x3d050b;if(_0x421658&&_0x421658[_0x62bd('0x1f')]){switch(_0x421658[_0x62bd('0x1f')]){case _0x62bd('0x20'):var _0x503298=require(_0x62bd('0x20'));if(_0x421658[_0x62bd('0x21')]&&_0x421658[_0x62bd('0x22')]&&_0x421658[_0x62bd('0x23')]){var _0x482bff=new _0x503298(_0x421658[_0x62bd('0x21')],_0x421658[_0x62bd('0x22')]);_0x482bff[_0x62bd('0x24')][_0x62bd('0x25')]({'body':_0x3c582f['body'],'to':_0x3c582f[_0x62bd('0x23')],'from':_0x421658[_0x62bd('0x23')],'statusCallback':_0x421658[_0x62bd('0x26')]+_0x62bd('0x27')+_0x3c582f['id']+_0x62bd('0x28')+_0x421658[_0x62bd('0x29')]})[_0x62bd('0x18')](function(_0x304cf0){if(_0x304cf0[_0x62bd('0x2a')]){return _0x15085e[_0x62bd('0x2b')]({'messageId':_0x304cf0[_0x62bd('0x2a')]});}})[_0x62bd('0x1a')](function(_0x45e4f2){logger['error'](_0x62bd('0x2c'),_0x62bd('0x2d'),'twilio',util[_0x62bd('0x2e')](_0x45e4f2,{'showHidden':![],'depth':null}));});}else{logger[_0x62bd('0x1b')](_0x62bd('0x2c'),'afterCreate',_0x62bd('0x20'),_0x62bd('0x2f'));}break;case _0x62bd('0x30'):var _0x28ac58=_0x62bd('0x31');if(_0x421658[_0x62bd('0x32')]&&_0x421658[_0x62bd('0x33')]){var _0x53c2fd={'recipient':[_0x3c582f[_0x62bd('0x23')]],'message':_0x3c582f['body'],'message_type':_0x421658[_0x62bd('0x34')]};if(_0x421658[_0x62bd('0x34')]&&_0x421658[_0x62bd('0x34')]!=='SI'){_0x53c2fd[_0x62bd('0x35')]=_0x421658[_0x62bd('0x23')];}var _0x21fe77={'url':_0x28ac58+'login?username='+_0x421658[_0x62bd('0x32')]+_0x62bd('0x36')+_0x421658[_0x62bd('0x33')],'method':_0x62bd('0x37')};rp(_0x21fe77)[_0x62bd('0x18')](function(_0x578ed4){var _0x2d64e7=_0x578ed4['split'](';');var _0x509095={'user_key':_0x2d64e7[0x0],'session_key':_0x2d64e7[0x1]};_0x21fe77={'url':_0x28ac58+_0x62bd('0x38'),'method':_0x62bd('0x39'),'headers':{'user_key':_0x509095[_0x62bd('0x3a')],'Session_key':_0x509095[_0x62bd('0x3b')]},'json':!![],'body':_0x53c2fd};return rp(_0x21fe77);})[_0x62bd('0x18')](function(_0x5dd5e6){if(_0x5dd5e6[_0x62bd('0x3c')]>=0x1){var _0x17ba8c={'messageId':_0x5dd5e6[_0x62bd('0x3d')]};if(_0x421658[_0x62bd('0x34')]!=='GP'||!_0x421658[_0x62bd('0x3e')]){_0x17ba8c[_0x62bd('0x3f')]=!![];}return _0x15085e[_0x62bd('0x2b')](_0x17ba8c);}else{return logger[_0x62bd('0x1b')](_0x62bd('0x2c'),'afterCreate',_0x62bd('0x30'),util['inspect'](_0x5dd5e6,{'showHidden':![],'depth':null}));}})[_0x62bd('0x1a')](function(_0x5d904e){return logger[_0x62bd('0x1b')](_0x62bd('0x2c'),'afterCreate',_0x62bd('0x30'),util[_0x62bd('0x2e')](_0x5d904e,{'showHidden':![],'depth':null}));});}else{logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x30'),_0x62bd('0x40'));}break;case _0x62bd('0x41'):if(_0x421658['authToken']){var _0x306b03={'recipient':_0x3c582f[_0x62bd('0x23')],'message':_0x3c582f[_0x62bd('0xd')],'sender':_0x421658[_0x62bd('0x42')]||_0x421658[_0x62bd('0x23')],'authorization':_0x421658[_0x62bd('0x22')]};var _0x429d3f={'method':_0x62bd('0x39'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x306b03,'json':!![]};rp(_0x429d3f)[_0x62bd('0x18')](function(_0x51ab8b){var _0x15e51d={'messageId':_0x51ab8b[_0x62bd('0x43')]};if(!_0x421658[_0x62bd('0x3e')]){_0x15e51d[_0x62bd('0x3f')]=!![];}return _0x15085e[_0x62bd('0x2b')](_0x15e51d);})['catch'](function(_0x1d3c9e){logger[_0x62bd('0x1b')](_0x62bd('0x2c'),'afterCreate',_0x62bd('0x41'),util['inspect'](_0x1d3c9e,{'showHidden':![],'depth':null}));});}else{logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x41'),_0x62bd('0x44'));}break;case _0x62bd('0x45'):if(_0x421658[_0x62bd('0x32')]&&_0x421658[_0x62bd('0x33')]){var _0x306b03={'messages':[{'source':_0x62bd('0x46'),'to':_0x3c582f[_0x62bd('0x23')],'body':_0x3c582f['body'],'from':_0x421658[_0x62bd('0x42')]||_0x421658[_0x62bd('0x23')]}]};var _0x29a0f7=util[_0x62bd('0x47')](_0x62bd('0x48'),_0x421658[_0x62bd('0x32')],_0x421658[_0x62bd('0x33')]);var _0x429d3f={'method':_0x62bd('0x39'),'uri':_0x62bd('0x49'),'body':_0x306b03,'headers':{'Authorization':util[_0x62bd('0x47')](_0x62bd('0x4a'),new Buffer(_0x29a0f7)[_0x62bd('0x4b')](_0x62bd('0x4c')))},'json':!![]};rp(_0x429d3f)[_0x62bd('0x18')](function(_0x555660){if(_0x555660['http_code']>=0xc8&&_0x555660[_0x62bd('0x4d')]<=0xce){if(_0x555660['data']&&_0x555660[_0x62bd('0x4e')][_0x62bd('0x4f')]>0x0){var _0x39202e=_[_0x62bd('0x50')](_0x555660[_0x62bd('0x4e')][_0x62bd('0x24')]);var _0xd0ae1b={'messageId':_0x39202e[_0x62bd('0x51')]};if(!_0x421658['deliveryReport']){_0xd0ae1b['read']=!![];}return _0x15085e[_0x62bd('0x2b')](_0xd0ae1b);}else{logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),'clickSend',util[_0x62bd('0x2e')](_0x555660,{'showHidden':![],'depth':null}));}}else{logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x52'),util[_0x62bd('0x2e')](_0x555660,{'showHidden':![],'depth':null}));}})['catch'](function(_0x377108){logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x52'),util[_0x62bd('0x2e')](_0x377108,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x62bd('0x52'),_0x62bd('0x40'));}break;case'plivo':if(_0x421658[_0x62bd('0x53')]&&_0x421658[_0x62bd('0x22')]){var _0x306b03={'dst':_0x3c582f['phone'],'text':_0x3c582f['body'],'src':_0x421658[_0x62bd('0x42')]||_0x421658[_0x62bd('0x23')],'url':_0x421658[_0x62bd('0x26')]+_0x62bd('0x27')+_0x3c582f['id']+'/status?token='+_0x421658['token']};var _0x29a0f7=util[_0x62bd('0x47')]('%s:%s',_0x421658[_0x62bd('0x53')],_0x421658[_0x62bd('0x22')]);var _0x429d3f={'method':'POST','uri':util[_0x62bd('0x47')](_0x62bd('0x54'),_0x421658[_0x62bd('0x53')]),'body':_0x306b03,'headers':{'Authorization':util[_0x62bd('0x47')]('Basic\x20%s',new Buffer(_0x29a0f7)[_0x62bd('0x4b')](_0x62bd('0x4c')))},'json':!![]};rp(_0x429d3f)[_0x62bd('0x18')](function(_0x27967d){var _0x2fb311={'messageId':_0x27967d['message_uuid'][0x0]};return _0x15085e[_0x62bd('0x2b')](_0x2fb311);})[_0x62bd('0x1a')](function(_0x3ed61c){logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x55'),util[_0x62bd('0x2e')](_0x3ed61c,{'showHidden':![],'depth':null}));});}else{logger[_0x62bd('0x1b')](_0x62bd('0x2c'),'afterCreate',_0x62bd('0x55'),_0x62bd('0x56'));}break;case _0x62bd('0x57'):if(_0x421658[_0x62bd('0x32')]&&_0x421658['password']){if(_0x421658['baseUrl']){var _0x449663={'method':_0x62bd('0x39'),'uri':_0x421658['baseUrl']+_0x62bd('0x58'),'body':{'username':_0x421658[_0x62bd('0x32')],'password':_0x421658[_0x62bd('0x33')]},'json':!![]};return rp(_0x449663)[_0x62bd('0x18')](function(_0x37de16){var _0x2a9a2d={'method':'POST','uri':_0x421658['baseUrl']+_0x62bd('0x59'),'body':{'messages':[{'from':_0x421658[_0x62bd('0x23')],'destinations':[{'to':_0x3c582f[_0x62bd('0x23')]}],'text':_0x3c582f[_0x62bd('0xd')],'notifyUrl':_0x421658[_0x62bd('0x26')]+'/api/sms/messages/'+_0x3c582f['id']+'/status?token='+_0x421658[_0x62bd('0x29')],'notifyContentType':_0x62bd('0x5a'),'callbackData':_0x421658[_0x62bd('0x23')]+';'+_0x3c582f['body']}]},'headers':{'Authorization':_0x62bd('0x5b')+_0x37de16[_0x62bd('0x29')]},'json':!![]};return rp(_0x2a9a2d)['then'](function(_0x409b6d){if(_0x409b6d['messages']){var _0x54c010={'messageId':_0x409b6d[_0x62bd('0x24')][0x0][_0x62bd('0xb')]};if(!_0x421658['deliveryReport']){_0x54c010['read']=!![];}return _0x15085e[_0x62bd('0x2b')](_0x54c010);}else{return logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),'infobip',util[_0x62bd('0x2e')](_0x409b6d,{'showHidden':![],'depth':null}));}});})[_0x62bd('0x1a')](function(_0x95ab4){return logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),'infobip',util['inspect'](_0x95ab4,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x57'),_0x62bd('0x5c'));}}else{logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),'infobip',_0x62bd('0x40'));}break;case _0x62bd('0x5d'):var _0xdff9d9=require(_0x62bd('0x5e'));if(_0x421658['apiKey']){var _0x3779c6={};_0x3779c6[_0x62bd('0x5f')]=_0x421658[_0x62bd('0x32')];_0x3779c6[_0x62bd('0x23')]=_0x3c582f[_0x62bd('0x23')];_0x3779c6['sender']=_0x421658['phone'];_0x3779c6[_0x62bd('0x60')]=_0x3c582f[_0x62bd('0xd')];_0x3779c6[_0x62bd('0x61')]=+new Date();var _0x3c532c='';var _0x586b90='';var _0x5e0bfa=Object['keys'](_0x3779c6);_0x5e0bfa[_0x62bd('0x62')]();for(var _0x93a9e1=0x0;_0x93a9e1<_0x5e0bfa[_0x62bd('0x63')];_0x93a9e1++){if(_0x3c532c!=''){_0x3c532c+='&';}_0x3c532c+=_0x5e0bfa[_0x93a9e1]+'='+encodeURIComponent(_0x3779c6[_0x5e0bfa[_0x93a9e1]]);_0x586b90+=_0x3779c6[_0x5e0bfa[_0x93a9e1]];}_0x586b90+=_0x421658['apiKey'];_0x586b90=_0xdff9d9['createHash']('md5')[_0x62bd('0x2b')](_0x586b90)[_0x62bd('0x64')](_0x62bd('0x65'));if(_0x3c532c!==''){_0x3c532c+='&';}_0x3c532c+='signature='+_0x586b90;var _0x21fe77={'method':'GET','uri':_0x421658[_0x62bd('0x66')]+_0x62bd('0x67')+_0x3c532c,'json':!![]};return rp(_0x21fe77)['then'](function(_0x516e61){var _0x945c75=Object[_0x62bd('0x68')](_0x516e61);if(_0x516e61[_0x945c75[0x0]][_0x62bd('0x1b')]&&parseInt(_0x516e61[_0x945c75[0x0]][_0x62bd('0x1b')])===0x0){var _0x3f9762={'messageId':_0x516e61[_0x945c75[0x0]][_0x62bd('0x69')]};if(!_0x421658[_0x62bd('0x3e')]){_0x3f9762['read']=!![];}return _0x15085e[_0x62bd('0x2b')](_0x3f9762);}else{return logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x5d'),util['inspect'](_0x516e61[_0x62bd('0x1b')],{'showHidden':![],'depth':null}));}})[_0x62bd('0x1a')](function(_0x3779e9){return logger['error'](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x5d'),util[_0x62bd('0x2e')](_0x3779e9,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','csc',_0x62bd('0x6a'));}break;case _0x62bd('0x6b'):if(_0x421658[_0x62bd('0x6c')]){var _0x460add={'method':_0x62bd('0x39'),'uri':_0x62bd('0x6d'),'headers':{'Authorization':_0x421658[_0x62bd('0x6c')]},'body':{'content':_0x3c582f[_0x62bd('0xd')],'to':[_0x3c582f[_0x62bd('0x23')]],'from':_0x421658[_0x62bd('0x23')],'binary':![],'clientMessageId':_0x62bd('0x6e'),'charset':'UTF-8'},'json':!![]};rp(_0x460add)['then'](function(_0xae41a0){if(!_0xae41a0[_0x62bd('0x1b')]){var _0x44369f={'messageId':_0xae41a0['messages'][0x0][_0x62bd('0x6f')]};if(!_0x421658['deliveryReport']){_0x44369f[_0x62bd('0x3f')]=!![];}return _0x15085e[_0x62bd('0x2b')](_0x44369f);}else{return logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x6b'),util[_0x62bd('0x2e')](_0xae41a0[_0x62bd('0x1b')],{'showHidden':![],'depth':null}));}})[_0x62bd('0x1a')](function(_0x5b464f){return logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),'clickatell',util['inspect'](_0x5b464f,{'showHidden':![],'depth':null}));});}else{logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x6b'),_0x62bd('0x6a'));}break;case _0x62bd('0x70'):if(_0x421658[_0x62bd('0x32')]&&_0x421658[_0x62bd('0x33')]){var _0x29a0f7=util[_0x62bd('0x47')](_0x62bd('0x48'),_0x421658['username'],_0x421658['password']);var _0x429d3f={'method':'POST','uri':_0x62bd('0x71')+_0x421658[_0x62bd('0x72')]+_0x62bd('0x73'),'body':{'to':[_0x3c582f[_0x62bd('0x23')]],'text':_0x3c582f[_0x62bd('0xd')],'from':_0x421658[_0x62bd('0x23')],'applicationId':_0x421658[_0x62bd('0x74')]},'headers':{'Authorization':util['format'](_0x62bd('0x4a'),new Buffer(_0x29a0f7)[_0x62bd('0x4b')]('base64'))},'json':!![]};rp(_0x429d3f)[_0x62bd('0x18')](function(_0x5106f7){if(_0x5106f7['id']){var _0x4bfd57={'messageId':_0x5106f7['id']};return _0x15085e['update'](_0x4bfd57);}else{logger[_0x62bd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x62bd('0x2d'),_0x62bd('0x70'),util['inspect'](_0x5106f7,{'showHidden':![],'depth':null}));}})['catch'](function(_0x2311c7){logger[_0x62bd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x62bd('0x2d'),'bandwidth',util[_0x62bd('0x2e')](_0x2311c7,{'showHidden':![],'depth':null}));});}else{logger[_0x62bd('0x1b')](_0x62bd('0x2c'),'afterCreate','bandwidth',_0x62bd('0x40'));}break;case _0x62bd('0x75'):if(_0x421658[_0x62bd('0x6c')]){var _0x424a05={};var _0x21fe77={'method':_0x62bd('0x39'),'uri':_0x62bd('0x76'),'headers':{'Authorization':'Bearer\x20'+_0x421658[_0x62bd('0x6c')],'Content-Type':'application/json'},'body':{'from':_0x421658[_0x62bd('0x23')],'to':_0x3c582f['phone'],'text':_0x3c582f['body']},'json':!![]};return rp(_0x21fe77)[_0x62bd('0x18')](function(_0x1620d0){if(_0x1620d0[_0x62bd('0x77')]==0xca){_0x424a05[_0x62bd('0x78')]=_0x1620d0;var _0x4f0c7b={'method':'POST','uri':_0x62bd('0x79'),'headers':{'Authorization':_0x62bd('0x7a')+_0x421658[_0x62bd('0x6c')],'Content-Type':_0x62bd('0x5a')},'body':{'refid':_0x424a05[_0x62bd('0x78')]['refid']},'json':!![]};return rp(_0x4f0c7b)[_0x62bd('0x18')](function(_0x1de0c0){_0x424a05[_0x62bd('0x7b')]=_0x1de0c0;var _0x598d8c={'messageId':_0x424a05[_0x62bd('0x78')][_0x62bd('0x7c')],'read':!![]};return _0x15085e[_0x62bd('0x2b')](_0x598d8c);});}else{return logger[_0x62bd('0x1b')](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x75'),util[_0x62bd('0x2e')](_0x1620d0,{'showHidden':![],'depth':null}));}})[_0x62bd('0x1a')](function(_0x8f6c66){return logger[_0x62bd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x62bd('0x2d'),'intelepeer',util['inspect'](_0x8f6c66,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x62bd('0x2c'),_0x62bd('0x2d'),_0x62bd('0x75'),_0x62bd('0x7d'));}break;}}})[_0x62bd('0x7e')](function(){_0x341a2c();});}else{_0x341a2c();}}},'charset':_0x62bd('0x7f'),'collate':_0x62bd('0x80')});};
\ No newline at end of file
index 0ff24d7..03bca38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ac3=['body','options','raw','then','stringify','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./smsMessage.socket','request','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','request\x20sent','result','catch','CreateSmsMessage','SmsMessage','create'];(function(_0xc68434,_0x619fd7){var _0x5d9f75=function(_0x3811c1){while(--_0x3811c1){_0xc68434['push'](_0xc68434['shift']());}};_0x5d9f75(++_0x619fd7);}(_0x1ac3,0xd1));var _0x31ac=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x1ac3[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x31ac('0x0'));var util=require(_0x31ac('0x1'));var moment=require('moment');var BPromise=require(_0x31ac('0x2'));var rs=require(_0x31ac('0x3'));var fs=require('fs');var Redis=require(_0x31ac('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x31ac('0x5'))(_0x31ac('0x6'));var config=require(_0x31ac('0x7'));var jayson=require(_0x31ac('0x8'));var client=jayson[_0x31ac('0x9')][_0x31ac('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x31ac('0xb')],{'host':_0x31ac('0xc'),'port':0x18eb});var socket=require(_0x31ac('0xd'))(new Redis(config[_0x31ac('0xb')]));require(_0x31ac('0xe'))['register'](socket);function respondWithRpcPromise(_0x27cd4f,_0x5e4726,_0x58d9ce){return new BPromise(function(_0x3f6b4e,_0x306316){return client[_0x31ac('0xf')](_0x27cd4f,_0x58d9ce)['then'](function(_0xa0da75){logger['info'](_0x31ac('0x10'),_0x5e4726,'request\x20sent');logger[_0x31ac('0x11')](_0x31ac('0x12'),_0x5e4726,'request\x20sent',JSON['stringify'](_0xa0da75));if(_0xa0da75[_0x31ac('0x13')]){if(_0xa0da75[_0x31ac('0x13')][_0x31ac('0x14')]===0x1f4){logger[_0x31ac('0x13')]('SmsMessage,\x20%s,\x20%s',_0x5e4726,_0xa0da75[_0x31ac('0x13')][_0x31ac('0x15')]);return _0x306316(_0xa0da75[_0x31ac('0x13')][_0x31ac('0x15')]);}logger[_0x31ac('0x13')]('SmsMessage,\x20%s,\x20%s',_0x5e4726,_0xa0da75[_0x31ac('0x13')][_0x31ac('0x15')]);return _0x3f6b4e(_0xa0da75[_0x31ac('0x13')][_0x31ac('0x15')]);}else{logger[_0x31ac('0x16')](_0x31ac('0x10'),_0x5e4726,_0x31ac('0x17'));_0x3f6b4e(_0xa0da75[_0x31ac('0x18')][_0x31ac('0x15')]);}})[_0x31ac('0x19')](function(_0x470a2d){logger[_0x31ac('0x13')]('SmsMessage,\x20%s,\x20%s',_0x5e4726,_0x470a2d);_0x306316(_0x470a2d);});});}exports[_0x31ac('0x1a')]=function(_0x1d60ea){var _0x54aec4=this;return new Promise(function(_0x59d643,_0xe6aaa2){return db[_0x31ac('0x1b')][_0x31ac('0x1c')](_0x1d60ea[_0x31ac('0x1d')],{'raw':_0x1d60ea[_0x31ac('0x1e')]?_0x1d60ea['options'][_0x31ac('0x1f')]===undefined?!![]:![]:!![]})[_0x31ac('0x20')](function(_0x2ebb68){logger[_0x31ac('0x16')](_0x31ac('0x1a'),_0x1d60ea);logger['debug'](_0x31ac('0x1a'),_0x1d60ea,JSON[_0x31ac('0x21')](_0x2ebb68));_0x59d643(_0x2ebb68);})[_0x31ac('0x19')](function(_0x154129){logger['error']('CreateSmsMessage',_0x154129['message'],_0x1d60ea);_0xe6aaa2(_0x54aec4['error'](0x1f4,_0x154129[_0x31ac('0x15')]));});});};
\ No newline at end of file
+var _0x40d6=['localhost','socket.io-emitter','./smsMessage.socket','register','request','then','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','create','options','CreateSmsMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x5f28a3,_0x931d53){var _0x1db8aa=function(_0x33348d){while(--_0x33348d){_0x5f28a3['push'](_0x5f28a3['shift']());}};_0x1db8aa(++_0x931d53);}(_0x40d6,0x1bf));var _0x640d=function(_0x4b1b64,_0x3d3bb3){_0x4b1b64=_0x4b1b64-0x0;var _0x3f3626=_0x40d6[_0x4b1b64];return _0x3f3626;};'use strict';var _=require(_0x640d('0x0'));var util=require(_0x640d('0x1'));var moment=require(_0x640d('0x2'));var BPromise=require(_0x640d('0x3'));var rs=require(_0x640d('0x4'));var fs=require('fs');var Redis=require(_0x640d('0x5'));var db=require(_0x640d('0x6'))['db'];var utils=require(_0x640d('0x7'));var logger=require('../../config/logger')(_0x640d('0x8'));var config=require(_0x640d('0x9'));var jayson=require(_0x640d('0xa'));var client=jayson[_0x640d('0xb')][_0x640d('0xc')]({'port':0x232a});config[_0x640d('0xd')]=_[_0x640d('0xe')](config[_0x640d('0xd')],{'host':_0x640d('0xf'),'port':0x18eb});var socket=require(_0x640d('0x10'))(new Redis(config[_0x640d('0xd')]));require(_0x640d('0x11'))[_0x640d('0x12')](socket);function respondWithRpcPromise(_0x26a133,_0x329884,_0x24061f){return new BPromise(function(_0x59d93f,_0x1bbdbb){return client[_0x640d('0x13')](_0x26a133,_0x24061f)[_0x640d('0x14')](function(_0xefbeaf){logger['info'](_0x640d('0x15'),_0x329884,_0x640d('0x16'));logger[_0x640d('0x17')](_0x640d('0x18'),_0x329884,_0x640d('0x16'),JSON[_0x640d('0x19')](_0xefbeaf));if(_0xefbeaf['error']){if(_0xefbeaf[_0x640d('0x1a')]['code']===0x1f4){logger[_0x640d('0x1a')](_0x640d('0x15'),_0x329884,_0xefbeaf['error'][_0x640d('0x1b')]);return _0x1bbdbb(_0xefbeaf[_0x640d('0x1a')][_0x640d('0x1b')]);}logger[_0x640d('0x1a')](_0x640d('0x15'),_0x329884,_0xefbeaf[_0x640d('0x1a')]['message']);return _0x59d93f(_0xefbeaf['error'][_0x640d('0x1b')]);}else{logger[_0x640d('0x1c')]('SmsMessage,\x20%s,\x20%s',_0x329884,_0x640d('0x16'));_0x59d93f(_0xefbeaf['result'][_0x640d('0x1b')]);}})[_0x640d('0x1d')](function(_0x28a6e9){logger[_0x640d('0x1a')](_0x640d('0x15'),_0x329884,_0x28a6e9);_0x1bbdbb(_0x28a6e9);});});}exports['CreateSmsMessage']=function(_0x524838){var _0x3b3d44=this;return new Promise(function(_0x28426e,_0x1f2b36){return db['SmsMessage'][_0x640d('0x1e')](_0x524838['body'],{'raw':_0x524838['options']?_0x524838[_0x640d('0x1f')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xfea052){logger[_0x640d('0x1c')]('CreateSmsMessage',_0x524838);logger[_0x640d('0x17')](_0x640d('0x20'),_0x524838,JSON['stringify'](_0xfea052));_0x28426e(_0xfea052);})[_0x640d('0x1d')](function(_0xf6de5f){logger[_0x640d('0x1a')](_0x640d('0x20'),_0xf6de5f[_0x640d('0x1b')],_0x524838);_0x1f2b36(_0x3b3d44[_0x640d('0x1a')](0x1f4,_0xf6de5f[_0x640d('0x1b')]));});});};
\ No newline at end of file
index 3912564..57dd89b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1485=['save','remove','update','emit','removeListener','./smsMessage.events'];(function(_0x8eb7f9,_0x4b6566){var _0x336ce2=function(_0x1762b3){while(--_0x1762b3){_0x8eb7f9['push'](_0x8eb7f9['shift']());}};_0x336ce2(++_0x4b6566);}(_0x1485,0x155));var _0x5148=function(_0x27c178,_0x2f2ea4){_0x27c178=_0x27c178-0x0;var _0x26c240=_0x1485[_0x27c178];return _0x26c240;};'use strict';var SmsMessageEvents=require(_0x5148('0x0'));var events=[_0x5148('0x1'),_0x5148('0x2'),_0x5148('0x3')];function createListener(_0x5236f0,_0x4288f4){return function(_0x4b7eb0){_0x4288f4[_0x5148('0x4')](_0x5236f0,_0x4b7eb0);};}function removeListener(_0x3ecc10,_0x195a83){return function(){SmsMessageEvents[_0x5148('0x5')](_0x3ecc10,_0x195a83);};}exports['register']=function(_0x24d67a){for(var _0x791f24=0x0,_0x2b81bd=events['length'];_0x791f24<_0x2b81bd;_0x791f24++){var _0x5253ac=events[_0x791f24];var _0x50acb6=createListener('smsMessage:'+_0x5253ac,_0x24d67a);SmsMessageEvents['on'](_0x5253ac,_0x50acb6);}};
\ No newline at end of file
+var _0x9f7b=['register','length','smsMessage:','./smsMessage.events','remove','update','emit','removeListener'];(function(_0x4d8dc3,_0x585fd1){var _0x9b03d9=function(_0x7a31d5){while(--_0x7a31d5){_0x4d8dc3['push'](_0x4d8dc3['shift']());}};_0x9b03d9(++_0x585fd1);}(_0x9f7b,0x7b));var _0xb9f7=function(_0x44204e,_0x5693b9){_0x44204e=_0x44204e-0x0;var _0x1f70aa=_0x9f7b[_0x44204e];return _0x1f70aa;};'use strict';var SmsMessageEvents=require(_0xb9f7('0x0'));var events=['save',_0xb9f7('0x1'),_0xb9f7('0x2')];function createListener(_0x3e0a0b,_0x4470ce){return function(_0x2f1ec8){_0x4470ce[_0xb9f7('0x3')](_0x3e0a0b,_0x2f1ec8);};}function removeListener(_0x43b680,_0x421132){return function(){SmsMessageEvents[_0xb9f7('0x4')](_0x43b680,_0x421132);};}exports[_0xb9f7('0x5')]=function(_0x390386){for(var _0x215dc4=0x0,_0x14094b=events[_0xb9f7('0x6')];_0x215dc4<_0x14094b;_0x215dc4++){var _0x19b0a1=events[_0x215dc4];var _0x2128e4=createListener(_0xb9f7('0x7')+_0x19b0a1,_0x390386);SmsMessageEvents['on'](_0x19b0a1,_0x2128e4);}};
\ No newline at end of file
index df2a243..071aa3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f57=['isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','create','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./smsQueue.controller','get'];(function(_0x32d824,_0x5a0ac5){var _0x2e88e5=function(_0x418ed0){while(--_0x418ed0){_0x32d824['push'](_0x32d824['shift']());}};_0x2e88e5(++_0x5a0ac5);}(_0x7f57,0xc8));var _0x77f5=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0x7f57[_0x4ff09b];return _0x3f5c2e;};'use strict';var multer=require(_0x77f5('0x0'));var util=require(_0x77f5('0x1'));var path=require(_0x77f5('0x2'));var timeout=require(_0x77f5('0x3'));var express=require(_0x77f5('0x4'));var router=express['Router']();var fs_extra=require(_0x77f5('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x77f5('0x6'));var config=require(_0x77f5('0x7'));var controller=require(_0x77f5('0x8'));router[_0x77f5('0x9')]('/',auth[_0x77f5('0xa')](),controller[_0x77f5('0xb')]);router[_0x77f5('0x9')](_0x77f5('0xc'),auth['isAuthenticated'](),controller[_0x77f5('0xd')]);router['get'](_0x77f5('0xe'),auth['isAuthenticated'](),controller[_0x77f5('0xf')]);router[_0x77f5('0x9')](_0x77f5('0x10'),auth[_0x77f5('0xa')](),controller[_0x77f5('0x11')]);router[_0x77f5('0x9')](_0x77f5('0x12'),auth[_0x77f5('0xa')](),controller['getTeams']);router[_0x77f5('0x9')](_0x77f5('0x13'),auth[_0x77f5('0xa')](),controller[_0x77f5('0x14')]);router['post']('/',auth[_0x77f5('0xa')](),controller[_0x77f5('0x15')]);router[_0x77f5('0x16')](_0x77f5('0x12'),auth[_0x77f5('0xa')](),controller[_0x77f5('0x17')]);router[_0x77f5('0x16')](_0x77f5('0x13'),auth[_0x77f5('0xa')](),controller[_0x77f5('0x18')]);router[_0x77f5('0x19')]('/:id',auth[_0x77f5('0xa')](),controller[_0x77f5('0x1a')]);router[_0x77f5('0x1b')]('/:id',auth[_0x77f5('0xa')](),controller[_0x77f5('0x1c')]);router['delete'](_0x77f5('0x12'),auth[_0x77f5('0xa')](),controller[_0x77f5('0x1d')]);router[_0x77f5('0x1b')]('/:id/users',auth[_0x77f5('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x75ba=['delete','destroy','removeTeams','removeAgents','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','post','create','addTeams','put','update'];(function(_0xadbd68,_0x9b8cc7){var _0x41f007=function(_0x13afc8){while(--_0x13afc8){_0xadbd68['push'](_0xadbd68['shift']());}};_0x41f007(++_0x9b8cc7);}(_0x75ba,0x163));var _0xa75b=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0x75ba[_0x34bc30];return _0x5706de;};'use strict';var multer=require(_0xa75b('0x0'));var util=require(_0xa75b('0x1'));var path=require(_0xa75b('0x2'));var timeout=require(_0xa75b('0x3'));var express=require('express');var router=express[_0xa75b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa75b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa75b('0x6'));var controller=require(_0xa75b('0x7'));router[_0xa75b('0x8')]('/',auth[_0xa75b('0x9')](),controller[_0xa75b('0xa')]);router[_0xa75b('0x8')](_0xa75b('0xb'),auth[_0xa75b('0x9')](),controller['describe']);router[_0xa75b('0x8')](_0xa75b('0xc'),auth[_0xa75b('0x9')](),controller[_0xa75b('0xd')]);router[_0xa75b('0x8')]('/:id/members',auth[_0xa75b('0x9')](),controller[_0xa75b('0xe')]);router[_0xa75b('0x8')](_0xa75b('0xf'),auth[_0xa75b('0x9')](),controller[_0xa75b('0x10')]);router[_0xa75b('0x8')](_0xa75b('0x11'),auth[_0xa75b('0x9')](),controller['getAgents']);router[_0xa75b('0x12')]('/',auth[_0xa75b('0x9')](),controller[_0xa75b('0x13')]);router[_0xa75b('0x12')](_0xa75b('0xf'),auth[_0xa75b('0x9')](),controller[_0xa75b('0x14')]);router[_0xa75b('0x12')](_0xa75b('0x11'),auth[_0xa75b('0x9')](),controller['addAgents']);router[_0xa75b('0x15')](_0xa75b('0xc'),auth[_0xa75b('0x9')](),controller[_0xa75b('0x16')]);router[_0xa75b('0x17')](_0xa75b('0xc'),auth['isAuthenticated'](),controller[_0xa75b('0x18')]);router['delete'](_0xa75b('0xf'),auth[_0xa75b('0x9')](),controller[_0xa75b('0x19')]);router[_0xa75b('0x17')]('/:id/users',auth[_0xa75b('0x9')](),controller[_0xa75b('0x1a')]);module['exports']=router;
\ No newline at end of file
index 064f964..bebed80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc17e=['sequelize','exports','STRING','name','INTEGER','ENUM','roundrobin'];(function(_0x24ace2,_0x33c072){var _0x8cad81=function(_0x2377b7){while(--_0x2377b7){_0x24ace2['push'](_0x24ace2['shift']());}};_0x8cad81(++_0x33c072);}(_0xc17e,0xc4));var _0xec17=function(_0x4ba811,_0x4428f2){_0x4ba811=_0x4ba811-0x0;var _0x3b616f=_0xc17e[_0x4ba811];return _0x3b616f;};'use strict';var Sequelize=require(_0xec17('0x0'));module[_0xec17('0x1')]={'name':{'type':Sequelize[_0xec17('0x2')],'unique':_0xec17('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xec17('0x2')]},'timeout':{'type':Sequelize[_0xec17('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xec17('0x5')]('rrmemory','beepall',_0xec17('0x6'))}};
\ No newline at end of file
+var _0x9638=['exports','STRING','name','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x3bb1af,_0x3ab969){var _0x444f58=function(_0x3cd609){while(--_0x3cd609){_0x3bb1af['push'](_0x3bb1af['shift']());}};_0x444f58(++_0x3ab969);}(_0x9638,0x19d));var _0x8963=function(_0x5363a3,_0x3c6310){_0x5363a3=_0x5363a3-0x0;var _0x4cd0c6=_0x9638[_0x5363a3];return _0x4cd0c6;};'use strict';var Sequelize=require('sequelize');module[_0x8963('0x0')]={'name':{'type':Sequelize[_0x8963('0x1')],'unique':_0x8963('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x8963('0x1')]},'timeout':{'type':Sequelize[_0x8963('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x8963('0x4'),_0x8963('0x5'),_0x8963('0x6'))}};
\ No newline at end of file
index 14e6c6a..762b886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a8b=['updatedAt','createdAt','format','SIP','getTeams','ids','Agents','online','interface','flatMap','addTeams','each','findOrCreate','forEach','emit','userSmsQueue:save','Team','select','field','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','transaction','removeTeams','removeAgents','addAgents','omit','spread','isArray','userSmsQueue:remove','getAgents','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','./smsQueue.socket','register','sendStatus','status','end','json','limit','undefined','count','offset','apply','update','then','destroy','get','error','stack','name','send','index','map','SmsQueue','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','show','params','includeAll','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserSmsQueue','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause'];(function(_0xcc0a36,_0x395550){var _0x21f53d=function(_0x32fdda){while(--_0x32fdda){_0xcc0a36['push'](_0xcc0a36['shift']());}};_0x21f53d(++_0x395550);}(_0x1a8b,0xbd));var _0xb1a8=function(_0x34f29c,_0x31063f){_0x34f29c=_0x34f29c-0x0;var _0x1ae41b=_0x1a8b[_0x34f29c];return _0x1ae41b;};'use strict';var emlformat=require(_0xb1a8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb1a8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb1a8('0x2'));var moment=require(_0xb1a8('0x3'));var BPromise=require(_0xb1a8('0x4'));var Mustache=require(_0xb1a8('0x5'));var util=require(_0xb1a8('0x6'));var path=require(_0xb1a8('0x7'));var sox=require(_0xb1a8('0x8'));var csv=require('to-csv');var ejs=require(_0xb1a8('0x9'));var fs=require('fs');var fs_extra=require(_0xb1a8('0xa'));var _=require(_0xb1a8('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb1a8('0xc'));var deskjs=require(_0xb1a8('0xd'));var toCsv=require(_0xb1a8('0xe'));var querystring=require(_0xb1a8('0xf'));var Papa=require(_0xb1a8('0x10'));var Redis=require(_0xb1a8('0x11'));var authService=require(_0xb1a8('0x12'));var qs=require(_0xb1a8('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb1a8('0x14'));var logger=require(_0xb1a8('0x15'))(_0xb1a8('0x16'));var utils=require(_0xb1a8('0x17'));var config=require(_0xb1a8('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xb1a8('0x19'))['db'];config[_0xb1a8('0x1a')]=_[_0xb1a8('0x1b')](config[_0xb1a8('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb1a8('0x1a')]));require(_0xb1a8('0x1c'))[_0xb1a8('0x1d')](socket);function respondWithStatusCode(_0x465e3f,_0x2f3f16){_0x2f3f16=_0x2f3f16||0xcc;return function(_0x5034c6){if(_0x5034c6){return _0x465e3f[_0xb1a8('0x1e')](_0x2f3f16);}return _0x465e3f[_0xb1a8('0x1f')](_0x2f3f16)[_0xb1a8('0x20')]();};}function respondWithResult(_0x256569,_0x2546d9){_0x2546d9=_0x2546d9||0xc8;return function(_0x411714){if(_0x411714){return _0x256569[_0xb1a8('0x1f')](_0x2546d9)[_0xb1a8('0x21')](_0x411714);}};}function respondWithFilteredResult(_0x19388a,_0x2b07cd){return function(_0x86b495){if(_0x86b495){var _0x5a7839=typeof _0x2b07cd['offset']==='undefined'&&typeof _0x2b07cd[_0xb1a8('0x22')]===_0xb1a8('0x23');var _0x24e48a=_0x86b495[_0xb1a8('0x24')];var _0x5275b5=_0x5a7839?0x0:_0x2b07cd[_0xb1a8('0x25')];var _0x1c13d9=_0x5a7839?_0x86b495[_0xb1a8('0x24')]:_0x2b07cd[_0xb1a8('0x25')]+_0x2b07cd[_0xb1a8('0x22')];var _0x292aa3;if(_0x1c13d9>=_0x24e48a){_0x1c13d9=_0x24e48a;_0x292aa3=0xc8;}else{_0x292aa3=0xce;}_0x19388a[_0xb1a8('0x1f')](_0x292aa3);return _0x19388a['set']('Content-Range',_0x5275b5+'-'+_0x1c13d9+'/'+_0x24e48a)[_0xb1a8('0x21')](_0x86b495);}return null;};}function patchUpdates(_0x277cf9){return function(_0x3cce03){try{jsonpatch[_0xb1a8('0x26')](_0x3cce03,_0x277cf9,!![]);}catch(_0x3219ea){return BPromise['reject'](_0x3219ea);}return _0x3cce03['save']();};}function saveUpdates(_0x470aa0,_0x428508){return function(_0x17385f){if(_0x17385f){return _0x17385f[_0xb1a8('0x27')](_0x470aa0)[_0xb1a8('0x28')](function(_0xaf38ec){return _0xaf38ec;});}return null;};}function removeEntity(_0x3d28f0,_0x18a9b3){return function(_0x4a1cac){if(_0x4a1cac){return _0x4a1cac[_0xb1a8('0x29')]()[_0xb1a8('0x28')](function(){var _0x1ec294=_0x4a1cac[_0xb1a8('0x2a')]({'plain':!![]});var _0x52451c='SmsQueues';return db['UserProfileResource'][_0xb1a8('0x29')]({'where':{'type':_0x52451c,'resourceId':_0x1ec294['id']}})[_0xb1a8('0x28')](function(){return _0x4a1cac;});})[_0xb1a8('0x28')](function(){_0x3d28f0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x355de1,_0x513d71){return function(_0x4f74f1){if(!_0x4f74f1){_0x355de1[_0xb1a8('0x1e')](0x194);}return _0x4f74f1;};}function handleError(_0x314edb,_0x78dbbe){_0x78dbbe=_0x78dbbe||0x1f4;return function(_0x1ff431){logger[_0xb1a8('0x2b')](_0x1ff431[_0xb1a8('0x2c')]);if(_0x1ff431[_0xb1a8('0x2d')]){delete _0x1ff431['name'];}_0x314edb[_0xb1a8('0x1f')](_0x78dbbe)[_0xb1a8('0x2e')](_0x1ff431);};}exports[_0xb1a8('0x2f')]=function(_0x25b3f0,_0x523ed1){var _0x22ae21={},_0x2f501a={},_0x59ea14={'count':0x0,'rows':[]};var _0x521a2f=_[_0xb1a8('0x30')](db[_0xb1a8('0x31')][_0xb1a8('0x32')],function(_0x25ec74){return{'name':_0x25ec74['fieldName'],'type':_0x25ec74[_0xb1a8('0x33')][_0xb1a8('0x34')]};});_0x2f501a[_0xb1a8('0x35')]=_[_0xb1a8('0x30')](_0x521a2f,_0xb1a8('0x2d'));_0x2f501a[_0xb1a8('0x36')]=_[_0xb1a8('0x37')](_0x25b3f0[_0xb1a8('0x36')]);_0x2f501a[_0xb1a8('0x38')]=_[_0xb1a8('0x39')](_0x2f501a[_0xb1a8('0x35')],_0x2f501a['query']);_0x22ae21[_0xb1a8('0x3a')]=_[_0xb1a8('0x39')](_0x2f501a[_0xb1a8('0x35')],qs['fields'](_0x25b3f0[_0xb1a8('0x36')][_0xb1a8('0x3b')]));_0x22ae21[_0xb1a8('0x3a')]=_0x22ae21[_0xb1a8('0x3a')][_0xb1a8('0x3c')]?_0x22ae21['attributes']:_0x2f501a[_0xb1a8('0x35')];if(!_0x25b3f0[_0xb1a8('0x36')][_0xb1a8('0x3d')](_0xb1a8('0x3e'))){_0x22ae21[_0xb1a8('0x22')]=qs[_0xb1a8('0x22')](_0x25b3f0['query']['limit']);_0x22ae21['offset']=qs[_0xb1a8('0x25')](_0x25b3f0[_0xb1a8('0x36')][_0xb1a8('0x25')]);}_0x22ae21[_0xb1a8('0x3f')]=qs[_0xb1a8('0x40')](_0x25b3f0[_0xb1a8('0x36')]['sort']);_0x22ae21[_0xb1a8('0x41')]=qs[_0xb1a8('0x38')](_[_0xb1a8('0x42')](_0x25b3f0['query'],_0x2f501a[_0xb1a8('0x38')]),_0x521a2f);if(_0x25b3f0['query'][_0xb1a8('0x43')]){_0x22ae21['where']=_[_0xb1a8('0x44')](_0x22ae21[_0xb1a8('0x41')],{'$or':_[_0xb1a8('0x30')](_0x521a2f,function(_0x50a6e9){if(_0x50a6e9[_0xb1a8('0x33')]!==_0xb1a8('0x45')){var _0xa063f3={};_0xa063f3[_0x50a6e9['name']]={'$like':'%'+_0x25b3f0[_0xb1a8('0x36')]['filter']+'%'};return _0xa063f3;}})});}_0x22ae21=_[_0xb1a8('0x44')]({},_0x22ae21,_0x25b3f0[_0xb1a8('0x46')]);var _0x22f629={'where':_0x22ae21[_0xb1a8('0x41')]};return db[_0xb1a8('0x31')][_0xb1a8('0x24')](_0x22f629)[_0xb1a8('0x28')](function(_0x5ae8eb){_0x59ea14[_0xb1a8('0x24')]=_0x5ae8eb;if(_0x25b3f0[_0xb1a8('0x36')]['includeAll']){_0x22ae21[_0xb1a8('0x47')]=[{'all':!![]}];}return db[_0xb1a8('0x31')][_0xb1a8('0x48')](_0x22ae21);})[_0xb1a8('0x28')](function(_0x47ffec){_0x59ea14[_0xb1a8('0x49')]=_0x47ffec;return _0x59ea14;})['then'](respondWithFilteredResult(_0x523ed1,_0x22ae21))['catch'](handleError(_0x523ed1,null));};exports[_0xb1a8('0x4a')]=function(_0x2dfee8,_0x1c0033){var _0x2150c0={'raw':!![],'where':{'id':_0x2dfee8[_0xb1a8('0x4b')]['id']}},_0xad948={};_0xad948[_0xb1a8('0x35')]=_[_0xb1a8('0x37')](db[_0xb1a8('0x31')][_0xb1a8('0x32')]);_0xad948[_0xb1a8('0x36')]=_['keys'](_0x2dfee8[_0xb1a8('0x36')]);_0xad948['filters']=_[_0xb1a8('0x39')](_0xad948['model'],_0xad948[_0xb1a8('0x36')]);_0x2150c0[_0xb1a8('0x3a')]=_[_0xb1a8('0x39')](_0xad948[_0xb1a8('0x35')],qs[_0xb1a8('0x3b')](_0x2dfee8['query']['fields']));_0x2150c0[_0xb1a8('0x3a')]=_0x2150c0[_0xb1a8('0x3a')][_0xb1a8('0x3c')]?_0x2150c0[_0xb1a8('0x3a')]:_0xad948[_0xb1a8('0x35')];if(_0x2dfee8[_0xb1a8('0x36')][_0xb1a8('0x4c')]){_0x2150c0[_0xb1a8('0x47')]=[{'all':!![]}];}_0x2150c0=_[_0xb1a8('0x44')]({},_0x2150c0,_0x2dfee8[_0xb1a8('0x46')]);return db[_0xb1a8('0x31')][_0xb1a8('0x4d')](_0x2150c0)[_0xb1a8('0x28')](handleEntityNotFound(_0x1c0033,null))[_0xb1a8('0x28')](respondWithResult(_0x1c0033,null))[_0xb1a8('0x4e')](handleError(_0x1c0033,null));};exports[_0xb1a8('0x4f')]=function(_0x99df5d,_0x37abdf){return db['SmsQueue']['create'](_0x99df5d[_0xb1a8('0x50')],{})[_0xb1a8('0x28')](function(_0x50bebd){var _0x3b3857=_0x99df5d[_0xb1a8('0x51')]['get']({'plain':!![]});if(!_0x3b3857)throw new Error(_0xb1a8('0x52'));if(_0x3b3857[_0xb1a8('0x53')]===_0xb1a8('0x51')){var _0x207780=_0x50bebd[_0xb1a8('0x2a')]({'plain':!![]});var _0x15049d='SmsQueues';return db['UserProfileSection'][_0xb1a8('0x4d')]({'where':{'name':_0x15049d,'userProfileId':_0x3b3857[_0xb1a8('0x54')]},'raw':!![]})['then'](function(_0x533a6d){if(_0x533a6d&&_0x533a6d[_0xb1a8('0x55')]===0x0){return db[_0xb1a8('0x56')][_0xb1a8('0x4f')]({'name':_0x207780['name'],'resourceId':_0x207780['id'],'type':_0x533a6d['name'],'sectionId':_0x533a6d['id']},{})['then'](function(){return _0x50bebd;});}else{return _0x50bebd;}})['catch'](function(_0x3f0be5){logger[_0xb1a8('0x2b')](_0xb1a8('0x57'),_0x3f0be5);throw _0x3f0be5;});}return _0x50bebd;})[_0xb1a8('0x28')](respondWithResult(_0x37abdf,0xc9))[_0xb1a8('0x4e')](handleError(_0x37abdf,null));};exports[_0xb1a8('0x27')]=function(_0x10656c,_0x1449a7){if(_0x10656c[_0xb1a8('0x50')]['id']){delete _0x10656c[_0xb1a8('0x50')]['id'];}return db[_0xb1a8('0x31')][_0xb1a8('0x4d')]({'where':{'id':_0x10656c[_0xb1a8('0x4b')]['id']}})[_0xb1a8('0x28')](handleEntityNotFound(_0x1449a7,null))[_0xb1a8('0x28')](saveUpdates(_0x10656c[_0xb1a8('0x50')],null))['then'](respondWithResult(_0x1449a7,null))[_0xb1a8('0x4e')](handleError(_0x1449a7,null));};exports[_0xb1a8('0x29')]=function(_0x1e255a,_0x949991){return db['SmsQueue']['find']({'where':{'id':_0x1e255a[_0xb1a8('0x4b')]['id']}})[_0xb1a8('0x28')](handleEntityNotFound(_0x949991,null))['then'](removeEntity(_0x949991,null))[_0xb1a8('0x4e')](handleError(_0x949991,null));};exports[_0xb1a8('0x58')]=function(_0x24fd1a,_0x558575){return db['SmsQueue'][_0xb1a8('0x58')]()[_0xb1a8('0x28')](respondWithResult(_0x558575,null))[_0xb1a8('0x4e')](handleError(_0x558575,null));};exports['getMembers']=function(_0x28d7ea,_0x514000,_0x2f1f41){var _0x76e3b7={'raw':!![],'where':{}},_0x1cb7df={},_0x104f4c;return db[_0xb1a8('0x31')][_0xb1a8('0x59')]({'where':{'id':_0x28d7ea[_0xb1a8('0x4b')]['id']}})[_0xb1a8('0x28')](handleEntityNotFound(_0x514000,null))[_0xb1a8('0x28')](function(_0x3a01d5){if(_0x3a01d5){_0x104f4c=_0x3a01d5[_0xb1a8('0x2a')]({'plain':!![]});_0x1cb7df[_0xb1a8('0x35')]=_['keys'](db[_0xb1a8('0x5a')]['rawAttributes']);_0x1cb7df[_0xb1a8('0x36')]=_[_0xb1a8('0x37')](_0x28d7ea[_0xb1a8('0x36')]);_0x1cb7df[_0xb1a8('0x38')]=_[_0xb1a8('0x39')](_0x1cb7df[_0xb1a8('0x35')],_0x1cb7df[_0xb1a8('0x36')]);_0x76e3b7[_0xb1a8('0x3a')]=_['intersection'](_0x1cb7df[_0xb1a8('0x35')],qs['fields'](_0x28d7ea['query'][_0xb1a8('0x3b')]));_0x76e3b7[_0xb1a8('0x3a')]=_0x76e3b7[_0xb1a8('0x3a')][_0xb1a8('0x3c')]?_0x76e3b7['attributes']:_0x1cb7df[_0xb1a8('0x35')];if(!_0x28d7ea['query'][_0xb1a8('0x3d')](_0xb1a8('0x3e'))){_0x76e3b7[_0xb1a8('0x22')]=qs[_0xb1a8('0x22')](_0x28d7ea[_0xb1a8('0x36')]['limit']);_0x76e3b7[_0xb1a8('0x25')]=qs['offset'](_0x28d7ea[_0xb1a8('0x36')][_0xb1a8('0x25')]);}_0x76e3b7[_0xb1a8('0x3f')]=qs[_0xb1a8('0x40')](_0x28d7ea[_0xb1a8('0x36')]['sort']);_0x76e3b7[_0xb1a8('0x41')]=qs[_0xb1a8('0x38')](_[_0xb1a8('0x42')](_0x28d7ea['query'],_0x1cb7df['filters']));_0x76e3b7[_0xb1a8('0x41')][_0xb1a8('0x5b')]=_0x3a01d5['id'];if(_0x28d7ea['query']['filter']){_0x76e3b7[_0xb1a8('0x41')]=_['merge'](_0x76e3b7[_0xb1a8('0x41')],{'$or':_[_0xb1a8('0x30')](_0x76e3b7['attributes'],function(_0x1d9926){var _0x550a6e={};_0x550a6e[_0x1d9926]={'$like':'%'+_0x28d7ea[_0xb1a8('0x36')][_0xb1a8('0x43')]+'%'};return _0x550a6e;})});}_0x76e3b7=_['merge']({},_0x76e3b7,_0x28d7ea[_0xb1a8('0x46')]);return db[_0xb1a8('0x5a')][_0xb1a8('0x48')](_0x76e3b7);}})[_0xb1a8('0x28')](function(_0x1af0db){if(_0x1af0db){return db[_0xb1a8('0x5c')][_0xb1a8('0x5d')]({'where':{'id':_['map'](_0x1af0db,_0xb1a8('0x5e')),'role':_0xb1a8('0x5f')},'attributes':['id',_0xb1a8('0x2d'),_0xb1a8('0x60'),_0xb1a8('0x61'),_0xb1a8('0x62')]});}})[_0xb1a8('0x28')](function(_0x5747c7){if(_0x5747c7){return{'count':_0x5747c7[_0xb1a8('0x24')],'rows':_[_0xb1a8('0x30')](_0x5747c7[_0xb1a8('0x49')],function(_0x4fb5b0){return{'membername':_0x4fb5b0[_0xb1a8('0x2d')],'UserId':_0x4fb5b0['id'],'queue_name':_0x104f4c[_0xb1a8('0x2d')],'SmsQueueId':_0x104f4c['id'],'interface':util[_0xb1a8('0x63')]('%s/%s',_0xb1a8('0x64'),_0x4fb5b0[_0xb1a8('0x2d')]),'penalty':0x0,'paused':_0x4fb5b0[_0xb1a8('0x60')],'createdAt':_0x4fb5b0[_0xb1a8('0x62')],'updatedAt':_0x4fb5b0[_0xb1a8('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xb1a8('0x28')](respondWithFilteredResult(_0x514000,_0x76e3b7))[_0xb1a8('0x4e')](handleError(_0x514000,null));};exports['getTeams']=function(_0x37c8ed,_0x3bf3aa,_0x106aa7){var _0x1b1524={};var _0x335a45={};var _0x20ad32;var _0x2ffb3a;return db[_0xb1a8('0x31')][_0xb1a8('0x59')]({'where':{'id':_0x37c8ed[_0xb1a8('0x4b')]['id']}})[_0xb1a8('0x28')](handleEntityNotFound(_0x3bf3aa,null))['then'](function(_0x4d4687){if(_0x4d4687){_0x20ad32=_0x4d4687;_0x335a45[_0xb1a8('0x35')]=_[_0xb1a8('0x37')](db['Team'][_0xb1a8('0x32')]);_0x335a45[_0xb1a8('0x36')]=_[_0xb1a8('0x37')](_0x37c8ed[_0xb1a8('0x36')]);_0x335a45['filters']=_['intersection'](_0x335a45['model'],_0x335a45[_0xb1a8('0x36')]);_0x1b1524['attributes']=_['intersection'](_0x335a45[_0xb1a8('0x35')],qs[_0xb1a8('0x3b')](_0x37c8ed[_0xb1a8('0x36')]['fields']));_0x1b1524['attributes']=_0x1b1524['attributes'][_0xb1a8('0x3c')]?_0x1b1524['attributes']:_0x335a45[_0xb1a8('0x35')];_0x1b1524['order']=qs[_0xb1a8('0x40')](_0x37c8ed[_0xb1a8('0x36')][_0xb1a8('0x40')]);_0x1b1524['where']=qs['filters'](_[_0xb1a8('0x42')](_0x37c8ed[_0xb1a8('0x36')],_0x335a45['filters']));if(_0x37c8ed[_0xb1a8('0x36')][_0xb1a8('0x43')]){_0x1b1524[_0xb1a8('0x41')]=_[_0xb1a8('0x44')](_0x1b1524[_0xb1a8('0x41')],{'$or':_[_0xb1a8('0x30')](_0x1b1524['attributes'],function(_0x388c33){var _0x118008={};_0x118008[_0x388c33]={'$like':'%'+_0x37c8ed[_0xb1a8('0x36')][_0xb1a8('0x43')]+'%'};return _0x118008;})});}_0x1b1524=_['merge']({},_0x1b1524,_0x37c8ed['options']);return _0x20ad32[_0xb1a8('0x65')](_0x1b1524);}})[_0xb1a8('0x28')](function(_0x5f47aa){if(_0x5f47aa){_0x2ffb3a=_0x5f47aa[_0xb1a8('0x3c')];if(!_0x37c8ed['query']['hasOwnProperty'](_0xb1a8('0x3e'))){_0x1b1524[_0xb1a8('0x22')]=qs[_0xb1a8('0x22')](_0x37c8ed[_0xb1a8('0x36')][_0xb1a8('0x22')]);_0x1b1524[_0xb1a8('0x25')]=qs[_0xb1a8('0x25')](_0x37c8ed[_0xb1a8('0x36')][_0xb1a8('0x25')]);}return _0x20ad32[_0xb1a8('0x65')](_0x1b1524);}})[_0xb1a8('0x28')](function(_0x184b96){if(_0x184b96){return _0x184b96?{'count':_0x2ffb3a,'rows':_0x184b96}:null;}})[_0xb1a8('0x28')](respondWithResult(_0x3bf3aa,null))['catch'](handleError(_0x3bf3aa,null));};exports['addTeams']=function(_0x1aba57,_0x58f732,_0x38024b){var _0x1ffa3a=_0x1aba57[_0xb1a8('0x50')][_0xb1a8('0x66')];return db['Team'][_0xb1a8('0x48')]({'where':{'id':_0x1ffa3a},'attributes':['id'],'include':[{'model':db[_0xb1a8('0x5c')],'as':_0xb1a8('0x67'),'attributes':['id','name',_0xb1a8('0x68'),'voicePause',_0xb1a8('0x69')],'raw':!![]}]})[_0xb1a8('0x28')](function(_0x111b4f){if(_0x111b4f){var _0x5ccc23=_[_0xb1a8('0x6a')](_0x111b4f,function(_0x1ffc4c){var _0x46373f=_0x1ffc4c[_0xb1a8('0x2a')]({'plain':!![]});return _0x46373f[_0xb1a8('0x67')];});return db['SmsQueue']['find']({'where':{'id':_0x1aba57[_0xb1a8('0x4b')]['id']}})[_0xb1a8('0x28')](function(_0x5ea27b){return db['sequelize']['transaction'](function(_0x36828f){return _0x5ea27b[_0xb1a8('0x6b')](_0x1ffa3a,{'transaction':_0x36828f})['then'](function(){return BPromise[_0xb1a8('0x6c')](_0x5ccc23,function(_0x521729){return db[_0xb1a8('0x5a')][_0xb1a8('0x6d')]({'where':{'UserId':_0x521729['id'],'SmsQueueId':_0x1aba57[_0xb1a8('0x4b')]['id']},'transaction':_0x36828f});});})[_0xb1a8('0x28')](function(){_0x5ccc23[_0xb1a8('0x6e')](function(_0x558e43){socket[_0xb1a8('0x6f')](_0xb1a8('0x70'),{'UserId':_0x558e43['id'],'SmsQueueId':_0x5ea27b['id']});});});});});}})[_0xb1a8('0x28')](respondWithStatusCode(_0x58f732,null))[_0xb1a8('0x4e')](handleError(_0x58f732,null));};exports['removeTeams']=function(_0x2af17e,_0x2f57c9,_0x48d209){return db[_0xb1a8('0x71')]['findAll']({'where':{'id':_0x2af17e[_0xb1a8('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0xb1a8('0x5c')],'as':_0xb1a8('0x67'),'attributes':['id'],'raw':!![]}]})[_0xb1a8('0x28')](handleEntityNotFound(_0x2f57c9,null))[_0xb1a8('0x28')](function(_0x4dc288){var _0x258924=_[_0xb1a8('0x30')](_0x4dc288,'id');var _0x348a50=[];var _0x3850c1=[];var _0x196efe=squel[_0xb1a8('0x72')]();_0x196efe[_0xb1a8('0x73')](_0xb1a8('0x74'))[_0xb1a8('0x75')](_0xb1a8('0x76'),'tq')[_0xb1a8('0x77')](_0xb1a8('0x78'),'ut',_0xb1a8('0x79'))[_0xb1a8('0x41')](_0xb1a8('0x7a'),_0x2af17e[_0xb1a8('0x4b')]['id']);for(var _0x7f7efa=0x0;_0x7f7efa<_0x4dc288[_0xb1a8('0x3c')];_0x7f7efa+=0x1){let _0x479ebe=_0x4dc288[_0x7f7efa];for(var _0x2fd71c=0x0;_0x2fd71c<_0x479ebe[_0xb1a8('0x67')]['length'];_0x2fd71c+=0x1){let _0x135e11=_0x479ebe['Agents'][_0x2fd71c];var _0x60ba42=_0x196efe[_0xb1a8('0x7b')]();_0x60ba42[_0xb1a8('0x41')]('ut.UserId\x20=\x20?',_0x135e11['id']);_0x3850c1['push'](db[_0xb1a8('0x7c')][_0xb1a8('0x36')](_0x60ba42[_0xb1a8('0x7d')](),{'type':db['sequelize'][_0xb1a8('0x7e')][_0xb1a8('0x7f')]})[_0xb1a8('0x28')](function(_0x3dee55){if(_0x3dee55[_0xb1a8('0x3c')]===0x1){return _0x135e11['id'];}else{var _0xc5ca2d=_[_0xb1a8('0x80')](_[_0xb1a8('0x30')](_0x3dee55,_0xb1a8('0x81')),function(_0x4296d0){return _[_0xb1a8('0x82')](_0x258924,_0x4296d0);});if(_0xc5ca2d){return _0x135e11['id'];}}}));}}return BPromise[_0xb1a8('0x83')](_0x3850c1)['then'](function(_0x42ae88){_0x348a50=_(_0x348a50)[_0xb1a8('0x84')](_0x42ae88)[_0xb1a8('0x85')]()['value']();return db[_0xb1a8('0x31')]['find']({'where':{'id':_0x2af17e[_0xb1a8('0x4b')]['id']}})['then'](function(_0x481dc9){return db[_0xb1a8('0x7c')][_0xb1a8('0x86')](function(_0x5c0a49){return _0x481dc9[_0xb1a8('0x87')](_0x2af17e[_0xb1a8('0x36')][_0xb1a8('0x66')],{'transaction':_0x5c0a49})[_0xb1a8('0x28')](function(){if(!_['isEmpty'](_0x348a50)){return _0x481dc9[_0xb1a8('0x88')](_0x348a50,{'transaction':_0x5c0a49});}})[_0xb1a8('0x28')](function(){_0x348a50[_0xb1a8('0x6e')](function(_0x537938){socket[_0xb1a8('0x6f')]('userSmsQueue:remove',{'UserId':_0x537938,'SmsQueueId':_0x481dc9['id']});});});});});});})[_0xb1a8('0x28')](respondWithStatusCode(_0x2f57c9,null))[_0xb1a8('0x4e')](handleError(_0x2f57c9,null));};exports[_0xb1a8('0x89')]=function(_0x16e438,_0x987bf0,_0x266975){return db[_0xb1a8('0x31')][_0xb1a8('0x4d')]({'where':{'id':_0x16e438[_0xb1a8('0x4b')]['id']}})[_0xb1a8('0x28')](handleEntityNotFound(_0x987bf0,null))['then'](function(_0x3dddde){if(_0x3dddde){return _0x3dddde[_0xb1a8('0x89')](_0x16e438[_0xb1a8('0x50')][_0xb1a8('0x66')],_[_0xb1a8('0x8a')](_0x16e438[_0xb1a8('0x50')],[_0xb1a8('0x66'),'id'])||{})[_0xb1a8('0x8b')](function(_0x19bfc3){for(var _0x42dab7=0x0;_0x42dab7<_0x16e438[_0xb1a8('0x50')][_0xb1a8('0x66')][_0xb1a8('0x3c')];_0x42dab7+=0x1){socket[_0xb1a8('0x6f')](_0xb1a8('0x70'),{'UserId':Number(_0x16e438['body'][_0xb1a8('0x66')][_0x42dab7]),'SmsQueueId':Number(_0x16e438[_0xb1a8('0x4b')]['id'])});}return _0x19bfc3;});}})[_0xb1a8('0x28')](respondWithResult(_0x987bf0,null))['catch'](handleError(_0x987bf0,null));};exports['removeAgents']=function(_0x5f2897,_0x5892a8,_0xccbe0d){return db['SmsQueue'][_0xb1a8('0x4d')]({'where':{'id':_0x5f2897['params']['id']}})[_0xb1a8('0x28')](handleEntityNotFound(_0x5892a8,null))[_0xb1a8('0x28')](function(_0x2bd1ab){if(_0x2bd1ab){return _0x2bd1ab['removeAgents'](_0x5f2897[_0xb1a8('0x36')][_0xb1a8('0x66')])[_0xb1a8('0x28')](function(){if(_[_0xb1a8('0x8c')](_0x5f2897[_0xb1a8('0x36')]['ids'])){for(var _0x19f357=0x0;_0x19f357<_0x5f2897[_0xb1a8('0x36')][_0xb1a8('0x66')][_0xb1a8('0x3c')];_0x19f357+=0x1){socket[_0xb1a8('0x6f')](_0xb1a8('0x8d'),{'UserId':Number(_0x5f2897[_0xb1a8('0x36')][_0xb1a8('0x66')][_0x19f357]),'SmsQueueId':Number(_0x5f2897[_0xb1a8('0x4b')]['id'])});}}else{socket[_0xb1a8('0x6f')](_0xb1a8('0x8d'),{'UserId':Number(_0x5f2897['query']['ids']),'SmsQueueId':Number(_0x5f2897['params']['id'])});}});}})[_0xb1a8('0x28')](respondWithStatusCode(_0x5892a8,null))['catch'](handleError(_0x5892a8,null));};exports[_0xb1a8('0x8e')]=function(_0x41ba9b,_0x357368,_0x1e6cb1){var _0x2aff99={};var _0x391b67={};var _0x38c857;var _0x5019a1;return db[_0xb1a8('0x31')]['findOne']({'where':{'id':_0x41ba9b[_0xb1a8('0x4b')]['id']}})[_0xb1a8('0x28')](handleEntityNotFound(_0x357368,null))[_0xb1a8('0x28')](function(_0x5b884a){if(_0x5b884a){_0x38c857=_0x5b884a;_0x391b67[_0xb1a8('0x35')]=_[_0xb1a8('0x37')](db[_0xb1a8('0x5c')][_0xb1a8('0x32')]);_0x391b67[_0xb1a8('0x36')]=_[_0xb1a8('0x37')](_0x41ba9b[_0xb1a8('0x36')]);_0x391b67['filters']=_['intersection'](_0x391b67[_0xb1a8('0x35')],_0x391b67['query']);_0x2aff99['attributes']=_[_0xb1a8('0x39')](_0x391b67[_0xb1a8('0x35')],qs['fields'](_0x41ba9b[_0xb1a8('0x36')][_0xb1a8('0x3b')]));_0x2aff99[_0xb1a8('0x3a')]=_0x2aff99[_0xb1a8('0x3a')]['length']?_0x2aff99[_0xb1a8('0x3a')]:_0x391b67[_0xb1a8('0x35')];_0x2aff99['order']=qs[_0xb1a8('0x40')](_0x41ba9b[_0xb1a8('0x36')][_0xb1a8('0x40')]);_0x2aff99[_0xb1a8('0x41')]=qs[_0xb1a8('0x38')](_[_0xb1a8('0x42')](_0x41ba9b[_0xb1a8('0x36')],_0x391b67[_0xb1a8('0x38')]));if(_0x41ba9b[_0xb1a8('0x36')]['filter']){_0x2aff99['where']=_['merge'](_0x2aff99[_0xb1a8('0x41')],{'$or':_[_0xb1a8('0x30')](_0x2aff99['attributes'],function(_0x459de6){var _0x2717ba={};_0x2717ba[_0x459de6]={'$like':'%'+_0x41ba9b[_0xb1a8('0x36')][_0xb1a8('0x43')]+'%'};return _0x2717ba;})});}_0x2aff99=_[_0xb1a8('0x44')]({},_0x2aff99,_0x41ba9b[_0xb1a8('0x46')]);return _0x38c857[_0xb1a8('0x8e')](_0x2aff99);}})[_0xb1a8('0x28')](function(_0x3a8b83){if(_0x3a8b83){_0x5019a1=_0x3a8b83[_0xb1a8('0x3c')];if(!_0x41ba9b[_0xb1a8('0x36')][_0xb1a8('0x3d')](_0xb1a8('0x3e'))){_0x2aff99['limit']=qs[_0xb1a8('0x22')](_0x41ba9b[_0xb1a8('0x36')]['limit']);_0x2aff99[_0xb1a8('0x25')]=qs[_0xb1a8('0x25')](_0x41ba9b[_0xb1a8('0x36')][_0xb1a8('0x25')]);}return _0x38c857[_0xb1a8('0x8e')](_0x2aff99);}})[_0xb1a8('0x28')](function(_0x24834f){if(_0x24834f){return _0x24834f?{'count':_0x5019a1,'rows':_0x24834f}:null;}})[_0xb1a8('0x28')](respondWithResult(_0x357368,null))[_0xb1a8('0x4e')](handleError(_0x357368,null));};
\ No newline at end of file
+var _0xaa23=['autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','SmsQueueId','map','UserSmsQueue','User','findAndCountAll','agent','smsPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','findOne','Team','addTeams','ids','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','userSmsQueue:save','removeTeams','Agents','select','field','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','all','value','isEmpty','forEach','emit','userSmsQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','save','update','then','destroy','SmsQueues','UserProfileResource','error','name','send','index','SmsQueue','fieldName','type','key','model','keys','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','user','get','UserProfileSection','userProfileId'];(function(_0x381005,_0x2b3564){var _0x7fb157=function(_0x1e1ae0){while(--_0x1e1ae0){_0x381005['push'](_0x381005['shift']());}};_0x7fb157(++_0x2b3564);}(_0xaa23,0x158));var _0x3aa2=function(_0x5f0488,_0x6c662f){_0x5f0488=_0x5f0488-0x0;var _0x27740d=_0xaa23[_0x5f0488];return _0x27740d;};'use strict';var emlformat=require(_0x3aa2('0x0'));var rimraf=require(_0x3aa2('0x1'));var zipdir=require(_0x3aa2('0x2'));var jsonpatch=require(_0x3aa2('0x3'));var rp=require(_0x3aa2('0x4'));var moment=require(_0x3aa2('0x5'));var BPromise=require(_0x3aa2('0x6'));var Mustache=require('mustache');var util=require(_0x3aa2('0x7'));var path=require('path');var sox=require(_0x3aa2('0x8'));var csv=require(_0x3aa2('0x9'));var ejs=require(_0x3aa2('0xa'));var fs=require('fs');var fs_extra=require(_0x3aa2('0xb'));var _=require(_0x3aa2('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3aa2('0xd'));var deskjs=require(_0x3aa2('0xe'));var toCsv=require('to-csv');var querystring=require(_0x3aa2('0xf'));var Papa=require(_0x3aa2('0x10'));var Redis=require(_0x3aa2('0x11'));var authService=require(_0x3aa2('0x12'));var qs=require(_0x3aa2('0x13'));var as=require(_0x3aa2('0x14'));var hardwareService=require(_0x3aa2('0x15'));var logger=require(_0x3aa2('0x16'))(_0x3aa2('0x17'));var utils=require(_0x3aa2('0x18'));var config=require(_0x3aa2('0x19'));var licenseUtil=require(_0x3aa2('0x1a'));var db=require(_0x3aa2('0x1b'))['db'];config['redis']=_[_0x3aa2('0x1c')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3aa2('0x1d'))(new Redis(config['redis']));require('./smsQueue.socket')[_0x3aa2('0x1e')](socket);function respondWithStatusCode(_0x1f4944,_0x88c919){_0x88c919=_0x88c919||0xcc;return function(_0x31a351){if(_0x31a351){return _0x1f4944[_0x3aa2('0x1f')](_0x88c919);}return _0x1f4944[_0x3aa2('0x20')](_0x88c919)[_0x3aa2('0x21')]();};}function respondWithResult(_0x2ae262,_0x3ea55e){_0x3ea55e=_0x3ea55e||0xc8;return function(_0x2b9d49){if(_0x2b9d49){return _0x2ae262[_0x3aa2('0x20')](_0x3ea55e)['json'](_0x2b9d49);}};}function respondWithFilteredResult(_0x115790,_0x1beef4){return function(_0x671b94){if(_0x671b94){var _0x42e245=typeof _0x1beef4[_0x3aa2('0x22')]===_0x3aa2('0x23')&&typeof _0x1beef4[_0x3aa2('0x24')]===_0x3aa2('0x23');var _0x739a20=_0x671b94[_0x3aa2('0x25')];var _0x42d26b=_0x42e245?0x0:_0x1beef4['offset'];var _0x8d9add=_0x42e245?_0x671b94[_0x3aa2('0x25')]:_0x1beef4[_0x3aa2('0x22')]+_0x1beef4[_0x3aa2('0x24')];var _0x42055e;if(_0x8d9add>=_0x739a20){_0x8d9add=_0x739a20;_0x42055e=0xc8;}else{_0x42055e=0xce;}_0x115790['status'](_0x42055e);return _0x115790['set'](_0x3aa2('0x26'),_0x42d26b+'-'+_0x8d9add+'/'+_0x739a20)[_0x3aa2('0x27')](_0x671b94);}return null;};}function patchUpdates(_0x3c29c6){return function(_0x14fe3e){try{jsonpatch['apply'](_0x14fe3e,_0x3c29c6,!![]);}catch(_0x23a426){return BPromise['reject'](_0x23a426);}return _0x14fe3e[_0x3aa2('0x28')]();};}function saveUpdates(_0x50ce0c,_0x5cd83a){return function(_0x51f2f3){if(_0x51f2f3){return _0x51f2f3[_0x3aa2('0x29')](_0x50ce0c)[_0x3aa2('0x2a')](function(_0x3397d4){return _0x3397d4;});}return null;};}function removeEntity(_0x3237cb,_0x4f1040){return function(_0xf94b99){if(_0xf94b99){return _0xf94b99[_0x3aa2('0x2b')]()[_0x3aa2('0x2a')](function(){var _0x67df25=_0xf94b99['get']({'plain':!![]});var _0x369802=_0x3aa2('0x2c');return db[_0x3aa2('0x2d')]['destroy']({'where':{'type':_0x369802,'resourceId':_0x67df25['id']}})['then'](function(){return _0xf94b99;});})[_0x3aa2('0x2a')](function(){_0x3237cb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x30b7a5,_0x5a2fe4){return function(_0x409200){if(!_0x409200){_0x30b7a5[_0x3aa2('0x1f')](0x194);}return _0x409200;};}function handleError(_0x49c7c0,_0x1cb885){_0x1cb885=_0x1cb885||0x1f4;return function(_0x3eef9e){logger[_0x3aa2('0x2e')](_0x3eef9e['stack']);if(_0x3eef9e[_0x3aa2('0x2f')]){delete _0x3eef9e['name'];}_0x49c7c0['status'](_0x1cb885)[_0x3aa2('0x30')](_0x3eef9e);};}exports[_0x3aa2('0x31')]=function(_0x4968dd,_0x554907){var _0x3c5ea9={},_0x1e4ff4={},_0x1e98d7={'count':0x0,'rows':[]};var _0xd26a2f=_['map'](db[_0x3aa2('0x32')]['rawAttributes'],function(_0x58de1e){return{'name':_0x58de1e[_0x3aa2('0x33')],'type':_0x58de1e[_0x3aa2('0x34')][_0x3aa2('0x35')]};});_0x1e4ff4[_0x3aa2('0x36')]=_['map'](_0xd26a2f,_0x3aa2('0x2f'));_0x1e4ff4['query']=_[_0x3aa2('0x37')](_0x4968dd['query']);_0x1e4ff4['filters']=_[_0x3aa2('0x38')](_0x1e4ff4[_0x3aa2('0x36')],_0x1e4ff4[_0x3aa2('0x39')]);_0x3c5ea9['attributes']=_[_0x3aa2('0x38')](_0x1e4ff4[_0x3aa2('0x36')],qs['fields'](_0x4968dd[_0x3aa2('0x39')][_0x3aa2('0x3a')]));_0x3c5ea9[_0x3aa2('0x3b')]=_0x3c5ea9[_0x3aa2('0x3b')][_0x3aa2('0x3c')]?_0x3c5ea9['attributes']:_0x1e4ff4[_0x3aa2('0x36')];if(!_0x4968dd[_0x3aa2('0x39')][_0x3aa2('0x3d')](_0x3aa2('0x3e'))){_0x3c5ea9[_0x3aa2('0x24')]=qs[_0x3aa2('0x24')](_0x4968dd[_0x3aa2('0x39')]['limit']);_0x3c5ea9[_0x3aa2('0x22')]=qs['offset'](_0x4968dd[_0x3aa2('0x39')][_0x3aa2('0x22')]);}_0x3c5ea9[_0x3aa2('0x3f')]=qs[_0x3aa2('0x40')](_0x4968dd[_0x3aa2('0x39')][_0x3aa2('0x40')]);_0x3c5ea9['where']=qs['filters'](_[_0x3aa2('0x41')](_0x4968dd['query'],_0x1e4ff4[_0x3aa2('0x42')]),_0xd26a2f);if(_0x4968dd[_0x3aa2('0x39')][_0x3aa2('0x43')]){_0x3c5ea9[_0x3aa2('0x44')]=_[_0x3aa2('0x45')](_0x3c5ea9[_0x3aa2('0x44')],{'$or':_['map'](_0xd26a2f,function(_0x5236f6){if(_0x5236f6[_0x3aa2('0x34')]!=='VIRTUAL'){var _0x273d33={};_0x273d33[_0x5236f6[_0x3aa2('0x2f')]]={'$like':'%'+_0x4968dd[_0x3aa2('0x39')][_0x3aa2('0x43')]+'%'};return _0x273d33;}})});}_0x3c5ea9=_[_0x3aa2('0x45')]({},_0x3c5ea9,_0x4968dd[_0x3aa2('0x46')]);var _0x897b9f={'where':_0x3c5ea9[_0x3aa2('0x44')]};return db[_0x3aa2('0x32')][_0x3aa2('0x25')](_0x897b9f)[_0x3aa2('0x2a')](function(_0x5e35bb){_0x1e98d7['count']=_0x5e35bb;if(_0x4968dd[_0x3aa2('0x39')][_0x3aa2('0x47')]){_0x3c5ea9[_0x3aa2('0x48')]=[{'all':!![]}];}return db['SmsQueue'][_0x3aa2('0x49')](_0x3c5ea9);})[_0x3aa2('0x2a')](function(_0x44f728){_0x1e98d7[_0x3aa2('0x4a')]=_0x44f728;return _0x1e98d7;})[_0x3aa2('0x2a')](respondWithFilteredResult(_0x554907,_0x3c5ea9))[_0x3aa2('0x4b')](handleError(_0x554907,null));};exports[_0x3aa2('0x4c')]=function(_0xb28f87,_0x15c08b){var _0x84c4f9={'raw':!![],'where':{'id':_0xb28f87[_0x3aa2('0x4d')]['id']}},_0x2041b7={};_0x2041b7[_0x3aa2('0x36')]=_[_0x3aa2('0x37')](db['SmsQueue'][_0x3aa2('0x4e')]);_0x2041b7[_0x3aa2('0x39')]=_[_0x3aa2('0x37')](_0xb28f87['query']);_0x2041b7['filters']=_['intersection'](_0x2041b7[_0x3aa2('0x36')],_0x2041b7['query']);_0x84c4f9['attributes']=_[_0x3aa2('0x38')](_0x2041b7[_0x3aa2('0x36')],qs[_0x3aa2('0x3a')](_0xb28f87[_0x3aa2('0x39')][_0x3aa2('0x3a')]));_0x84c4f9[_0x3aa2('0x3b')]=_0x84c4f9['attributes'][_0x3aa2('0x3c')]?_0x84c4f9['attributes']:_0x2041b7[_0x3aa2('0x36')];if(_0xb28f87[_0x3aa2('0x39')][_0x3aa2('0x47')]){_0x84c4f9['include']=[{'all':!![]}];}_0x84c4f9=_[_0x3aa2('0x45')]({},_0x84c4f9,_0xb28f87['options']);return db[_0x3aa2('0x32')][_0x3aa2('0x4f')](_0x84c4f9)[_0x3aa2('0x2a')](handleEntityNotFound(_0x15c08b,null))['then'](respondWithResult(_0x15c08b,null))[_0x3aa2('0x4b')](handleError(_0x15c08b,null));};exports[_0x3aa2('0x50')]=function(_0x800b48,_0x2e3528){return db[_0x3aa2('0x32')][_0x3aa2('0x50')](_0x800b48['body'],{})['then'](function(_0xf66b33){var _0x30a577=_0x800b48[_0x3aa2('0x51')]['get']({'plain':!![]});if(!_0x30a577)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x30a577['role']==='user'){var _0x34cef5=_0xf66b33[_0x3aa2('0x52')]({'plain':!![]});var _0x31a4c2='SmsQueues';return db[_0x3aa2('0x53')][_0x3aa2('0x4f')]({'where':{'name':_0x31a4c2,'userProfileId':_0x30a577[_0x3aa2('0x54')]},'raw':!![]})[_0x3aa2('0x2a')](function(_0x16c513){if(_0x16c513&&_0x16c513[_0x3aa2('0x55')]===0x0){return db['UserProfileResource'][_0x3aa2('0x50')]({'name':_0x34cef5[_0x3aa2('0x2f')],'resourceId':_0x34cef5['id'],'type':_0x16c513[_0x3aa2('0x2f')],'sectionId':_0x16c513['id']},{})[_0x3aa2('0x2a')](function(){return _0xf66b33;});}else{return _0xf66b33;}})['catch'](function(_0x4f009a){logger[_0x3aa2('0x2e')](_0x3aa2('0x56'),_0x4f009a);throw _0x4f009a;});}return _0xf66b33;})['then'](respondWithResult(_0x2e3528,0xc9))[_0x3aa2('0x4b')](handleError(_0x2e3528,null));};exports[_0x3aa2('0x29')]=function(_0x14a303,_0x4009fc){if(_0x14a303[_0x3aa2('0x57')]['id']){delete _0x14a303[_0x3aa2('0x57')]['id'];}return db[_0x3aa2('0x32')][_0x3aa2('0x4f')]({'where':{'id':_0x14a303[_0x3aa2('0x4d')]['id']}})[_0x3aa2('0x2a')](handleEntityNotFound(_0x4009fc,null))[_0x3aa2('0x2a')](saveUpdates(_0x14a303['body'],null))[_0x3aa2('0x2a')](respondWithResult(_0x4009fc,null))[_0x3aa2('0x4b')](handleError(_0x4009fc,null));};exports[_0x3aa2('0x2b')]=function(_0x5b6c18,_0x3788c4){return db[_0x3aa2('0x32')]['find']({'where':{'id':_0x5b6c18[_0x3aa2('0x4d')]['id']}})[_0x3aa2('0x2a')](handleEntityNotFound(_0x3788c4,null))[_0x3aa2('0x2a')](removeEntity(_0x3788c4,null))[_0x3aa2('0x4b')](handleError(_0x3788c4,null));};exports[_0x3aa2('0x58')]=function(_0x4e95fd,_0x94d751){return db[_0x3aa2('0x32')][_0x3aa2('0x58')]()[_0x3aa2('0x2a')](respondWithResult(_0x94d751,null))[_0x3aa2('0x4b')](handleError(_0x94d751,null));};exports[_0x3aa2('0x59')]=function(_0x259e4a,_0x5329f2,_0x17630a){var _0x219498={'raw':!![],'where':{}},_0x3aa575={},_0x21d792;return db[_0x3aa2('0x32')]['findOne']({'where':{'id':_0x259e4a[_0x3aa2('0x4d')]['id']}})[_0x3aa2('0x2a')](handleEntityNotFound(_0x5329f2,null))[_0x3aa2('0x2a')](function(_0x56b980){if(_0x56b980){_0x21d792=_0x56b980['get']({'plain':!![]});_0x3aa575[_0x3aa2('0x36')]=_['keys'](db['UserSmsQueue'][_0x3aa2('0x4e')]);_0x3aa575[_0x3aa2('0x39')]=_[_0x3aa2('0x37')](_0x259e4a[_0x3aa2('0x39')]);_0x3aa575[_0x3aa2('0x42')]=_[_0x3aa2('0x38')](_0x3aa575[_0x3aa2('0x36')],_0x3aa575[_0x3aa2('0x39')]);_0x219498['attributes']=_[_0x3aa2('0x38')](_0x3aa575[_0x3aa2('0x36')],qs[_0x3aa2('0x3a')](_0x259e4a[_0x3aa2('0x39')][_0x3aa2('0x3a')]));_0x219498[_0x3aa2('0x3b')]=_0x219498['attributes'][_0x3aa2('0x3c')]?_0x219498[_0x3aa2('0x3b')]:_0x3aa575[_0x3aa2('0x36')];if(!_0x259e4a['query'][_0x3aa2('0x3d')]('nolimit')){_0x219498['limit']=qs[_0x3aa2('0x24')](_0x259e4a[_0x3aa2('0x39')]['limit']);_0x219498[_0x3aa2('0x22')]=qs['offset'](_0x259e4a[_0x3aa2('0x39')][_0x3aa2('0x22')]);}_0x219498['order']=qs[_0x3aa2('0x40')](_0x259e4a[_0x3aa2('0x39')][_0x3aa2('0x40')]);_0x219498[_0x3aa2('0x44')]=qs[_0x3aa2('0x42')](_[_0x3aa2('0x41')](_0x259e4a['query'],_0x3aa575['filters']));_0x219498[_0x3aa2('0x44')][_0x3aa2('0x5a')]=_0x56b980['id'];if(_0x259e4a['query'][_0x3aa2('0x43')]){_0x219498[_0x3aa2('0x44')]=_['merge'](_0x219498[_0x3aa2('0x44')],{'$or':_[_0x3aa2('0x5b')](_0x219498[_0x3aa2('0x3b')],function(_0x2528d0){var _0x20327c={};_0x20327c[_0x2528d0]={'$like':'%'+_0x259e4a[_0x3aa2('0x39')]['filter']+'%'};return _0x20327c;})});}_0x219498=_[_0x3aa2('0x45')]({},_0x219498,_0x259e4a[_0x3aa2('0x46')]);return db[_0x3aa2('0x5c')][_0x3aa2('0x49')](_0x219498);}})[_0x3aa2('0x2a')](function(_0x10c339){if(_0x10c339){return db[_0x3aa2('0x5d')][_0x3aa2('0x5e')]({'where':{'id':_[_0x3aa2('0x5b')](_0x10c339,'UserId'),'role':_0x3aa2('0x5f')},'attributes':['id',_0x3aa2('0x2f'),_0x3aa2('0x60'),_0x3aa2('0x61'),_0x3aa2('0x62')]});}})[_0x3aa2('0x2a')](function(_0x4c3e86){if(_0x4c3e86){return{'count':_0x4c3e86['count'],'rows':_[_0x3aa2('0x5b')](_0x4c3e86[_0x3aa2('0x4a')],function(_0x5a0c6d){return{'membername':_0x5a0c6d[_0x3aa2('0x2f')],'UserId':_0x5a0c6d['id'],'queue_name':_0x21d792['name'],'SmsQueueId':_0x21d792['id'],'interface':util[_0x3aa2('0x63')](_0x3aa2('0x64'),_0x3aa2('0x65'),_0x5a0c6d[_0x3aa2('0x2f')]),'penalty':0x0,'paused':_0x5a0c6d[_0x3aa2('0x60')],'createdAt':_0x5a0c6d[_0x3aa2('0x62')],'updatedAt':_0x5a0c6d['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x3aa2('0x2a')](respondWithFilteredResult(_0x5329f2,_0x219498))[_0x3aa2('0x4b')](handleError(_0x5329f2,null));};exports[_0x3aa2('0x66')]=function(_0x7dc2f0,_0x32271e,_0x430558){var _0xda0619={};var _0x387ce9={};var _0x145f1a;var _0xaad84f;return db[_0x3aa2('0x32')][_0x3aa2('0x67')]({'where':{'id':_0x7dc2f0['params']['id']}})[_0x3aa2('0x2a')](handleEntityNotFound(_0x32271e,null))[_0x3aa2('0x2a')](function(_0x17274b){if(_0x17274b){_0x145f1a=_0x17274b;_0x387ce9[_0x3aa2('0x36')]=_[_0x3aa2('0x37')](db[_0x3aa2('0x68')][_0x3aa2('0x4e')]);_0x387ce9[_0x3aa2('0x39')]=_[_0x3aa2('0x37')](_0x7dc2f0[_0x3aa2('0x39')]);_0x387ce9[_0x3aa2('0x42')]=_[_0x3aa2('0x38')](_0x387ce9['model'],_0x387ce9[_0x3aa2('0x39')]);_0xda0619['attributes']=_[_0x3aa2('0x38')](_0x387ce9[_0x3aa2('0x36')],qs[_0x3aa2('0x3a')](_0x7dc2f0[_0x3aa2('0x39')][_0x3aa2('0x3a')]));_0xda0619[_0x3aa2('0x3b')]=_0xda0619['attributes'][_0x3aa2('0x3c')]?_0xda0619['attributes']:_0x387ce9[_0x3aa2('0x36')];_0xda0619[_0x3aa2('0x3f')]=qs[_0x3aa2('0x40')](_0x7dc2f0[_0x3aa2('0x39')][_0x3aa2('0x40')]);_0xda0619['where']=qs[_0x3aa2('0x42')](_[_0x3aa2('0x41')](_0x7dc2f0[_0x3aa2('0x39')],_0x387ce9[_0x3aa2('0x42')]));if(_0x7dc2f0[_0x3aa2('0x39')][_0x3aa2('0x43')]){_0xda0619[_0x3aa2('0x44')]=_[_0x3aa2('0x45')](_0xda0619['where'],{'$or':_[_0x3aa2('0x5b')](_0xda0619[_0x3aa2('0x3b')],function(_0x4e2cd7){var _0x2d7b6={};_0x2d7b6[_0x4e2cd7]={'$like':'%'+_0x7dc2f0[_0x3aa2('0x39')][_0x3aa2('0x43')]+'%'};return _0x2d7b6;})});}_0xda0619=_[_0x3aa2('0x45')]({},_0xda0619,_0x7dc2f0[_0x3aa2('0x46')]);return _0x145f1a[_0x3aa2('0x66')](_0xda0619);}})[_0x3aa2('0x2a')](function(_0x395ab4){if(_0x395ab4){_0xaad84f=_0x395ab4[_0x3aa2('0x3c')];if(!_0x7dc2f0['query']['hasOwnProperty']('nolimit')){_0xda0619[_0x3aa2('0x24')]=qs[_0x3aa2('0x24')](_0x7dc2f0['query'][_0x3aa2('0x24')]);_0xda0619[_0x3aa2('0x22')]=qs['offset'](_0x7dc2f0[_0x3aa2('0x39')][_0x3aa2('0x22')]);}return _0x145f1a[_0x3aa2('0x66')](_0xda0619);}})['then'](function(_0x45afb4){if(_0x45afb4){return _0x45afb4?{'count':_0xaad84f,'rows':_0x45afb4}:null;}})[_0x3aa2('0x2a')](respondWithResult(_0x32271e,null))[_0x3aa2('0x4b')](handleError(_0x32271e,null));};exports[_0x3aa2('0x69')]=function(_0x369add,_0x987916,_0x3875f8){var _0x2f2fbe=_0x369add[_0x3aa2('0x57')][_0x3aa2('0x6a')];return db[_0x3aa2('0x68')][_0x3aa2('0x49')]({'where':{'id':_0x2f2fbe},'attributes':['id'],'include':[{'model':db[_0x3aa2('0x5d')],'as':'Agents','attributes':['id',_0x3aa2('0x2f'),_0x3aa2('0x6b'),_0x3aa2('0x6c'),_0x3aa2('0x6d')],'raw':!![]}]})[_0x3aa2('0x2a')](function(_0x4e82d8){if(_0x4e82d8){var _0x58cc0f=_[_0x3aa2('0x6e')](_0x4e82d8,function(_0x20b1cd){var _0x1ebead=_0x20b1cd[_0x3aa2('0x52')]({'plain':!![]});return _0x1ebead['Agents'];});return db[_0x3aa2('0x32')][_0x3aa2('0x4f')]({'where':{'id':_0x369add[_0x3aa2('0x4d')]['id']}})[_0x3aa2('0x2a')](function(_0x209ddd){return db[_0x3aa2('0x6f')][_0x3aa2('0x70')](function(_0x142ce7){return _0x209ddd[_0x3aa2('0x69')](_0x2f2fbe,{'transaction':_0x142ce7})[_0x3aa2('0x2a')](function(){return BPromise[_0x3aa2('0x71')](_0x58cc0f,function(_0x590b7a){return db[_0x3aa2('0x5c')][_0x3aa2('0x72')]({'where':{'UserId':_0x590b7a['id'],'SmsQueueId':_0x369add['params']['id']},'transaction':_0x142ce7});});})[_0x3aa2('0x2a')](function(){_0x58cc0f['forEach'](function(_0x4ca731){socket['emit'](_0x3aa2('0x73'),{'UserId':_0x4ca731['id'],'SmsQueueId':_0x209ddd['id']});});});});});}})['then'](respondWithStatusCode(_0x987916,null))[_0x3aa2('0x4b')](handleError(_0x987916,null));};exports[_0x3aa2('0x74')]=function(_0x4f50e9,_0x1ad1a4,_0x40c023){return db[_0x3aa2('0x68')][_0x3aa2('0x49')]({'where':{'id':_0x4f50e9[_0x3aa2('0x39')][_0x3aa2('0x6a')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3aa2('0x75'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x1ad1a4,null))[_0x3aa2('0x2a')](function(_0x4f6209){var _0x221f9b=_['map'](_0x4f6209,'id');var _0x1db528=[];var _0x34808b=[];var _0x90aaad=squel[_0x3aa2('0x76')]();_0x90aaad[_0x3aa2('0x77')]('tq.TeamId')[_0x3aa2('0x78')]('team_has_sms_queues','tq')[_0x3aa2('0x79')](_0x3aa2('0x7a'),'ut',_0x3aa2('0x7b'))[_0x3aa2('0x44')](_0x3aa2('0x7c'),_0x4f50e9['params']['id']);for(var _0x33f33d=0x0;_0x33f33d<_0x4f6209[_0x3aa2('0x3c')];_0x33f33d+=0x1){let _0x111b03=_0x4f6209[_0x33f33d];for(var _0x5ecb03=0x0;_0x5ecb03<_0x111b03[_0x3aa2('0x75')][_0x3aa2('0x3c')];_0x5ecb03+=0x1){let _0x3997a9=_0x111b03[_0x3aa2('0x75')][_0x5ecb03];var _0x5acfcb=_0x90aaad['clone']();_0x5acfcb[_0x3aa2('0x44')](_0x3aa2('0x7d'),_0x3997a9['id']);_0x34808b[_0x3aa2('0x7e')](db[_0x3aa2('0x6f')][_0x3aa2('0x39')](_0x5acfcb['toString'](),{'type':db['sequelize'][_0x3aa2('0x7f')][_0x3aa2('0x80')]})[_0x3aa2('0x2a')](function(_0x566372){if(_0x566372[_0x3aa2('0x3c')]===0x1){return _0x3997a9['id'];}else{var _0x11b484=_[_0x3aa2('0x81')](_['map'](_0x566372,_0x3aa2('0x82')),function(_0x2bcd17){return _['includes'](_0x221f9b,_0x2bcd17);});if(_0x11b484){return _0x3997a9['id'];}}}));}}return BPromise[_0x3aa2('0x83')](_0x34808b)[_0x3aa2('0x2a')](function(_0x27de89){_0x1db528=_(_0x1db528)['union'](_0x27de89)['compact']()[_0x3aa2('0x84')]();return db['SmsQueue']['find']({'where':{'id':_0x4f50e9['params']['id']}})[_0x3aa2('0x2a')](function(_0x279d61){return db['sequelize'][_0x3aa2('0x70')](function(_0xd20087){return _0x279d61[_0x3aa2('0x74')](_0x4f50e9[_0x3aa2('0x39')][_0x3aa2('0x6a')],{'transaction':_0xd20087})['then'](function(){if(!_[_0x3aa2('0x85')](_0x1db528)){return _0x279d61['removeAgents'](_0x1db528,{'transaction':_0xd20087});}})['then'](function(){_0x1db528[_0x3aa2('0x86')](function(_0x41da6c){socket[_0x3aa2('0x87')](_0x3aa2('0x88'),{'UserId':_0x41da6c,'SmsQueueId':_0x279d61['id']});});});});});});})['then'](respondWithStatusCode(_0x1ad1a4,null))[_0x3aa2('0x4b')](handleError(_0x1ad1a4,null));};exports[_0x3aa2('0x89')]=function(_0x3ccfd,_0xe0df1f,_0x297eb3){return db[_0x3aa2('0x32')][_0x3aa2('0x4f')]({'where':{'id':_0x3ccfd[_0x3aa2('0x4d')]['id']}})[_0x3aa2('0x2a')](handleEntityNotFound(_0xe0df1f,null))['then'](function(_0x3adac9){if(_0x3adac9){return _0x3adac9[_0x3aa2('0x89')](_0x3ccfd[_0x3aa2('0x57')][_0x3aa2('0x6a')],_[_0x3aa2('0x8a')](_0x3ccfd[_0x3aa2('0x57')],[_0x3aa2('0x6a'),'id'])||{})[_0x3aa2('0x8b')](function(_0x330513){for(var _0x579fd5=0x0;_0x579fd5<_0x3ccfd[_0x3aa2('0x57')][_0x3aa2('0x6a')][_0x3aa2('0x3c')];_0x579fd5+=0x1){socket[_0x3aa2('0x87')](_0x3aa2('0x73'),{'UserId':Number(_0x3ccfd[_0x3aa2('0x57')][_0x3aa2('0x6a')][_0x579fd5]),'SmsQueueId':Number(_0x3ccfd[_0x3aa2('0x4d')]['id'])});}return _0x330513;});}})[_0x3aa2('0x2a')](respondWithResult(_0xe0df1f,null))['catch'](handleError(_0xe0df1f,null));};exports[_0x3aa2('0x8c')]=function(_0x507d8a,_0x260776,_0x3b1761){return db['SmsQueue'][_0x3aa2('0x4f')]({'where':{'id':_0x507d8a[_0x3aa2('0x4d')]['id']}})[_0x3aa2('0x2a')](handleEntityNotFound(_0x260776,null))[_0x3aa2('0x2a')](function(_0x248bf3){if(_0x248bf3){return _0x248bf3[_0x3aa2('0x8c')](_0x507d8a['query'][_0x3aa2('0x6a')])['then'](function(){if(_[_0x3aa2('0x8d')](_0x507d8a['query'][_0x3aa2('0x6a')])){for(var _0x539c6=0x0;_0x539c6<_0x507d8a[_0x3aa2('0x39')][_0x3aa2('0x6a')]['length'];_0x539c6+=0x1){socket[_0x3aa2('0x87')]('userSmsQueue:remove',{'UserId':Number(_0x507d8a[_0x3aa2('0x39')][_0x3aa2('0x6a')][_0x539c6]),'SmsQueueId':Number(_0x507d8a[_0x3aa2('0x4d')]['id'])});}}else{socket[_0x3aa2('0x87')](_0x3aa2('0x88'),{'UserId':Number(_0x507d8a['query']['ids']),'SmsQueueId':Number(_0x507d8a['params']['id'])});}});}})[_0x3aa2('0x2a')](respondWithStatusCode(_0x260776,null))['catch'](handleError(_0x260776,null));};exports[_0x3aa2('0x8e')]=function(_0x30d1af,_0x24ad40,_0x42c145){var _0x4597ae={};var _0x3a5e33={};var _0x30856d;var _0x3b7ac0;return db[_0x3aa2('0x32')][_0x3aa2('0x67')]({'where':{'id':_0x30d1af[_0x3aa2('0x4d')]['id']}})[_0x3aa2('0x2a')](handleEntityNotFound(_0x24ad40,null))[_0x3aa2('0x2a')](function(_0x1271ed){if(_0x1271ed){_0x30856d=_0x1271ed;_0x3a5e33[_0x3aa2('0x36')]=_['keys'](db[_0x3aa2('0x5d')]['rawAttributes']);_0x3a5e33[_0x3aa2('0x39')]=_[_0x3aa2('0x37')](_0x30d1af[_0x3aa2('0x39')]);_0x3a5e33['filters']=_['intersection'](_0x3a5e33[_0x3aa2('0x36')],_0x3a5e33['query']);_0x4597ae['attributes']=_[_0x3aa2('0x38')](_0x3a5e33['model'],qs['fields'](_0x30d1af[_0x3aa2('0x39')]['fields']));_0x4597ae[_0x3aa2('0x3b')]=_0x4597ae[_0x3aa2('0x3b')]['length']?_0x4597ae[_0x3aa2('0x3b')]:_0x3a5e33[_0x3aa2('0x36')];_0x4597ae[_0x3aa2('0x3f')]=qs[_0x3aa2('0x40')](_0x30d1af[_0x3aa2('0x39')]['sort']);_0x4597ae[_0x3aa2('0x44')]=qs[_0x3aa2('0x42')](_['pick'](_0x30d1af[_0x3aa2('0x39')],_0x3a5e33[_0x3aa2('0x42')]));if(_0x30d1af[_0x3aa2('0x39')][_0x3aa2('0x43')]){_0x4597ae[_0x3aa2('0x44')]=_[_0x3aa2('0x45')](_0x4597ae[_0x3aa2('0x44')],{'$or':_[_0x3aa2('0x5b')](_0x4597ae[_0x3aa2('0x3b')],function(_0x3c7bc4){var _0x1c2e1c={};_0x1c2e1c[_0x3c7bc4]={'$like':'%'+_0x30d1af['query'][_0x3aa2('0x43')]+'%'};return _0x1c2e1c;})});}_0x4597ae=_[_0x3aa2('0x45')]({},_0x4597ae,_0x30d1af[_0x3aa2('0x46')]);return _0x30856d[_0x3aa2('0x8e')](_0x4597ae);}})[_0x3aa2('0x2a')](function(_0x2bf715){if(_0x2bf715){_0x3b7ac0=_0x2bf715['length'];if(!_0x30d1af[_0x3aa2('0x39')][_0x3aa2('0x3d')]('nolimit')){_0x4597ae[_0x3aa2('0x24')]=qs['limit'](_0x30d1af[_0x3aa2('0x39')]['limit']);_0x4597ae[_0x3aa2('0x22')]=qs['offset'](_0x30d1af[_0x3aa2('0x39')]['offset']);}return _0x30856d[_0x3aa2('0x8e')](_0x4597ae);}})[_0x3aa2('0x2a')](function(_0x39c100){if(_0x39c100){return _0x39c100?{'count':_0x3b7ac0,'rows':_0x39c100}:null;}})[_0x3aa2('0x2a')](respondWithResult(_0x24ad40,null))[_0x3aa2('0x4b')](handleError(_0x24ad40,null));};
\ No newline at end of file
index a554e5d..f9991f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7e1=['remove','hasOwnProperty','hook','exports','events','../../mysqldb','SmsQueue','setMaxListeners','save','update'];(function(_0x42d709,_0x1f5bda){var _0x41d422=function(_0x3bf560){while(--_0x3bf560){_0x42d709['push'](_0x42d709['shift']());}};_0x41d422(++_0x1f5bda);}(_0xc7e1,0x7c));var _0x1c7e=function(_0x49f740,_0x49872d){_0x49f740=_0x49f740-0x0;var _0x8d8463=_0xc7e1[_0x49f740];return _0x8d8463;};'use strict';var EventEmitter=require(_0x1c7e('0x0'));var SmsQueue=require(_0x1c7e('0x1'))['db'][_0x1c7e('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x1c7e('0x3')](0x0);var events={'afterCreate':_0x1c7e('0x4'),'afterUpdate':_0x1c7e('0x5'),'afterDestroy':_0x1c7e('0x6')};function emitEvent(_0x4d3c93){return function(_0x2ad558,_0xdea7d5,_0x4c3279){SmsQueueEvents['emit'](_0x4d3c93+':'+_0x2ad558['id'],_0x2ad558);SmsQueueEvents['emit'](_0x4d3c93,_0x2ad558);_0x4c3279(null);};}for(var e in events){if(events[_0x1c7e('0x7')](e)){var event=events[e];SmsQueue[_0x1c7e('0x8')](e,emitEvent(event));}}module[_0x1c7e('0x9')]=SmsQueueEvents;
\ No newline at end of file
+var _0xab57=['events','../../mysqldb','SmsQueue','setMaxListeners','save','update','remove','hasOwnProperty','hook'];(function(_0x3f0e22,_0x443d47){var _0x1691e9=function(_0xfd1bb4){while(--_0xfd1bb4){_0x3f0e22['push'](_0x3f0e22['shift']());}};_0x1691e9(++_0x443d47);}(_0xab57,0x14d));var _0x7ab5=function(_0x1312c7,_0x1609ff){_0x1312c7=_0x1312c7-0x0;var _0x35130c=_0xab57[_0x1312c7];return _0x35130c;};'use strict';var EventEmitter=require(_0x7ab5('0x0'));var SmsQueue=require(_0x7ab5('0x1'))['db'][_0x7ab5('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x7ab5('0x3')](0x0);var events={'afterCreate':_0x7ab5('0x4'),'afterUpdate':_0x7ab5('0x5'),'afterDestroy':_0x7ab5('0x6')};function emitEvent(_0x2681e6){return function(_0x364181,_0x4cac77,_0x45b749){SmsQueueEvents['emit'](_0x2681e6+':'+_0x364181['id'],_0x364181);SmsQueueEvents['emit'](_0x2681e6,_0x364181);_0x45b749(null);};}for(var e in events){if(events[_0x7ab5('0x7')](e)){var event=events[e];SmsQueue[_0x7ab5('0x8')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
index 96af847..1f25890 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee6a=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./smsQueue.attributes','exports','define','SmsQueue','sms_queues'];(function(_0x49f1b9,_0x43b2e9){var _0x32e290=function(_0x47a92a){while(--_0x47a92a){_0x49f1b9['push'](_0x49f1b9['shift']());}};_0x32e290(++_0x43b2e9);}(_0xee6a,0x8c));var _0xaee6=function(_0x3dd5b5,_0x37b8d6){_0x3dd5b5=_0x3dd5b5-0x0;var _0xcdde1f=_0xee6a[_0x3dd5b5];return _0xcdde1f;};'use strict';var _=require(_0xaee6('0x0'));var util=require(_0xaee6('0x1'));var logger=require(_0xaee6('0x2'))(_0xaee6('0x3'));var moment=require(_0xaee6('0x4'));var BPromise=require(_0xaee6('0x5'));var rp=require(_0xaee6('0x6'));var fs=require('fs');var path=require(_0xaee6('0x7'));var rimraf=require('rimraf');var config=require(_0xaee6('0x8'));var attributes=require(_0xaee6('0x9'));module[_0xaee6('0xa')]=function(_0x57f260,_0x112a10){return _0x57f260[_0xaee6('0xb')](_0xaee6('0xc'),attributes,{'tableName':_0xaee6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6da0=['request-promise','path','rimraf','../../config/environment','./smsQueue.attributes','exports','define','../../config/logger','moment'];(function(_0x49253a,_0x2c347d){var _0x749351=function(_0x291645){while(--_0x291645){_0x49253a['push'](_0x49253a['shift']());}};_0x749351(++_0x2c347d);}(_0x6da0,0x154));var _0x06da=function(_0x4df2c2,_0x58527e){_0x4df2c2=_0x4df2c2-0x0;var _0x28b167=_0x6da0[_0x4df2c2];return _0x28b167;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x06da('0x0'))('api');var moment=require(_0x06da('0x1'));var BPromise=require('bluebird');var rp=require(_0x06da('0x2'));var fs=require('fs');var path=require(_0x06da('0x3'));var rimraf=require(_0x06da('0x4'));var config=require(_0x06da('0x5'));var attributes=require(_0x06da('0x6'));module[_0x06da('0x7')]=function(_0x1d4ea9,_0x8bade9){return _0x1d4ea9[_0x06da('0x8')]('SmsQueue',attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d17203..c9150c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f30=['where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','debug','stringify','error','code','SmsQueue,\x20%s,\x20%s','message','info','request\x20sent','result','GetSmsQueue','SmsQueue','findAll','options','raw','limit','include','map','attributes','model','catch','ShowSmsQueue','find'];(function(_0x2e48b2,_0x78904e){var _0x3f05ab=function(_0x4bc3b4){while(--_0x4bc3b4){_0x2e48b2['push'](_0x2e48b2['shift']());}};_0x3f05ab(++_0x78904e);}(_0x3f30,0x1ed));var _0x03f3=function(_0x3a1d29,_0x3dc67b){_0x3a1d29=_0x3a1d29-0x0;var _0x2c9ee9=_0x3f30[_0x3a1d29];return _0x2c9ee9;};'use strict';var _=require(_0x03f3('0x0'));var util=require(_0x03f3('0x1'));var moment=require(_0x03f3('0x2'));var BPromise=require(_0x03f3('0x3'));var rs=require(_0x03f3('0x4'));var fs=require('fs');var Redis=require(_0x03f3('0x5'));var db=require(_0x03f3('0x6'))['db'];var utils=require(_0x03f3('0x7'));var logger=require('../../config/logger')(_0x03f3('0x8'));var config=require('../../config/environment');var jayson=require(_0x03f3('0x9'));var client=jayson[_0x03f3('0xa')][_0x03f3('0xb')]({'port':0x232a});config[_0x03f3('0xc')]=_[_0x03f3('0xd')](config['redis'],{'host':_0x03f3('0xe'),'port':0x18eb});var socket=require(_0x03f3('0xf'))(new Redis(config['redis']));require('./smsQueue.socket')[_0x03f3('0x10')](socket);function respondWithRpcPromise(_0x5a74c6,_0x5b9d26,_0x5829c1){return new BPromise(function(_0x449a32,_0x420109){return client['request'](_0x5a74c6,_0x5829c1)[_0x03f3('0x11')](function(_0x221694){logger['info']('SmsQueue,\x20%s,\x20%s',_0x5b9d26,'request\x20sent');logger[_0x03f3('0x12')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0x5b9d26,'request\x20sent',JSON[_0x03f3('0x13')](_0x221694));if(_0x221694[_0x03f3('0x14')]){if(_0x221694[_0x03f3('0x14')][_0x03f3('0x15')]===0x1f4){logger['error'](_0x03f3('0x16'),_0x5b9d26,_0x221694[_0x03f3('0x14')]['message']);return _0x420109(_0x221694['error'][_0x03f3('0x17')]);}logger[_0x03f3('0x14')](_0x03f3('0x16'),_0x5b9d26,_0x221694[_0x03f3('0x14')][_0x03f3('0x17')]);return _0x449a32(_0x221694[_0x03f3('0x14')][_0x03f3('0x17')]);}else{logger[_0x03f3('0x18')](_0x03f3('0x16'),_0x5b9d26,_0x03f3('0x19'));_0x449a32(_0x221694[_0x03f3('0x1a')][_0x03f3('0x17')]);}})['catch'](function(_0x5d44bd){logger[_0x03f3('0x14')]('SmsQueue,\x20%s,\x20%s',_0x5b9d26,_0x5d44bd);_0x420109(_0x5d44bd);});});}exports[_0x03f3('0x1b')]=function(_0x1bd7e7){var _0x271b19=this;return new Promise(function(_0xc1254,_0x33f5ff){return db[_0x03f3('0x1c')][_0x03f3('0x1d')]({'raw':_0x1bd7e7['options']?_0x1bd7e7[_0x03f3('0x1e')][_0x03f3('0x1f')]===undefined?!![]:![]:!![],'where':_0x1bd7e7[_0x03f3('0x1e')]?_0x1bd7e7[_0x03f3('0x1e')]['where']||null:null,'attributes':_0x1bd7e7[_0x03f3('0x1e')]?_0x1bd7e7[_0x03f3('0x1e')]['attributes']||null:null,'limit':_0x1bd7e7[_0x03f3('0x1e')]?_0x1bd7e7[_0x03f3('0x1e')][_0x03f3('0x20')]||null:null,'include':_0x1bd7e7[_0x03f3('0x1e')]?_0x1bd7e7[_0x03f3('0x1e')][_0x03f3('0x21')]?_[_0x03f3('0x22')](_0x1bd7e7['options'][_0x03f3('0x21')],function(_0x352844){return{'model':db[_0x352844['model']],'as':_0x352844['as'],'attributes':_0x352844[_0x03f3('0x23')],'include':_0x352844['include']?_[_0x03f3('0x22')](_0x352844[_0x03f3('0x21')],function(_0x1cccab){return{'model':db[_0x1cccab[_0x03f3('0x24')]],'as':_0x1cccab['as'],'attributes':_0x1cccab['attributes'],'include':_0x1cccab[_0x03f3('0x21')]?_[_0x03f3('0x22')](_0x1cccab[_0x03f3('0x21')],function(_0x385e80){return{'model':db[_0x385e80[_0x03f3('0x24')]],'as':_0x385e80['as'],'attributes':_0x385e80[_0x03f3('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xd953be){logger['info'](_0x03f3('0x1b'),_0x1bd7e7);logger[_0x03f3('0x12')]('GetSmsQueue',_0x1bd7e7,JSON[_0x03f3('0x13')](_0xd953be));_0xc1254(_0xd953be);})[_0x03f3('0x25')](function(_0x7a058f){logger[_0x03f3('0x14')](_0x03f3('0x1b'),_0x7a058f[_0x03f3('0x17')],_0x1bd7e7);_0x33f5ff(_0x271b19[_0x03f3('0x14')](0x1f4,_0x7a058f['message']));});});};exports[_0x03f3('0x26')]=function(_0x615cac){var _0x21d373=this;return new Promise(function(_0x559017,_0x1989d6){return db[_0x03f3('0x1c')][_0x03f3('0x27')]({'raw':_0x615cac[_0x03f3('0x1e')]?_0x615cac['options'][_0x03f3('0x1f')]===undefined?!![]:![]:!![],'where':_0x615cac[_0x03f3('0x1e')]?_0x615cac[_0x03f3('0x1e')][_0x03f3('0x28')]||null:null,'attributes':_0x615cac[_0x03f3('0x1e')]?_0x615cac[_0x03f3('0x1e')][_0x03f3('0x23')]||null:null,'include':_0x615cac['options']?_0x615cac[_0x03f3('0x1e')]['include']?_[_0x03f3('0x22')](_0x615cac['options'][_0x03f3('0x21')],function(_0x7d860b){return{'model':db[_0x7d860b[_0x03f3('0x24')]],'as':_0x7d860b['as'],'attributes':_0x7d860b[_0x03f3('0x23')],'include':_0x7d860b['include']?_[_0x03f3('0x22')](_0x7d860b['include'],function(_0x3c6be6){return{'model':db[_0x3c6be6[_0x03f3('0x24')]],'as':_0x3c6be6['as'],'attributes':_0x3c6be6['attributes'],'include':_0x3c6be6[_0x03f3('0x21')]?_[_0x03f3('0x22')](_0x3c6be6[_0x03f3('0x21')],function(_0x1b816e){return{'model':db[_0x1b816e[_0x03f3('0x24')]],'as':_0x1b816e['as'],'attributes':_0x1b816e[_0x03f3('0x23')]};}):[]};}):[]};}):[]:[]})[_0x03f3('0x11')](function(_0x103117){logger[_0x03f3('0x18')](_0x03f3('0x26'),_0x615cac);logger[_0x03f3('0x12')](_0x03f3('0x26'),_0x615cac,JSON[_0x03f3('0x13')](_0x103117));_0x559017(_0x103117);})['catch'](function(_0x4f5b76){logger[_0x03f3('0x14')](_0x03f3('0x26'),_0x4f5b76[_0x03f3('0x17')],_0x615cac);_0x1989d6(_0x21d373[_0x03f3('0x14')](0x1f4,_0x4f5b76['message']));});});};
\ No newline at end of file
+var _0xd657=['code','message','info','result','catch','GetSmsQueue','SmsQueue','options','raw','where','attributes','limit','map','include','model','debug','stringify','ShowSmsQueue','find','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','SmsQueue,\x20%s,\x20%s','request\x20sent','SmsQueue,\x20%s,\x20%s,\x20%s','error'];(function(_0x34b167,_0x5bf6b8){var _0x9bcc7a=function(_0x148423){while(--_0x148423){_0x34b167['push'](_0x34b167['shift']());}};_0x9bcc7a(++_0x5bf6b8);}(_0xd657,0x65));var _0x7d65=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd657[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7d65('0x0'));var util=require(_0x7d65('0x1'));var moment=require(_0x7d65('0x2'));var BPromise=require(_0x7d65('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7d65('0x4'));var db=require(_0x7d65('0x5'))['db'];var utils=require(_0x7d65('0x6'));var logger=require(_0x7d65('0x7'))(_0x7d65('0x8'));var config=require('../../config/environment');var jayson=require(_0x7d65('0x9'));var client=jayson[_0x7d65('0xa')][_0x7d65('0xb')]({'port':0x232a});config[_0x7d65('0xc')]=_[_0x7d65('0xd')](config[_0x7d65('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x7d65('0xe'))(new Redis(config[_0x7d65('0xc')]));require('./smsQueue.socket')[_0x7d65('0xf')](socket);function respondWithRpcPromise(_0x4a7adb,_0x2e8c01,_0x5ec735){return new BPromise(function(_0x997ffd,_0x411bbf){return client[_0x7d65('0x10')](_0x4a7adb,_0x5ec735)[_0x7d65('0x11')](function(_0x17699a){logger['info'](_0x7d65('0x12'),_0x2e8c01,_0x7d65('0x13'));logger['debug'](_0x7d65('0x14'),_0x2e8c01,_0x7d65('0x13'),JSON['stringify'](_0x17699a));if(_0x17699a['error']){if(_0x17699a[_0x7d65('0x15')][_0x7d65('0x16')]===0x1f4){logger[_0x7d65('0x15')](_0x7d65('0x12'),_0x2e8c01,_0x17699a[_0x7d65('0x15')][_0x7d65('0x17')]);return _0x411bbf(_0x17699a[_0x7d65('0x15')][_0x7d65('0x17')]);}logger[_0x7d65('0x15')](_0x7d65('0x12'),_0x2e8c01,_0x17699a[_0x7d65('0x15')][_0x7d65('0x17')]);return _0x997ffd(_0x17699a[_0x7d65('0x15')][_0x7d65('0x17')]);}else{logger[_0x7d65('0x18')](_0x7d65('0x12'),_0x2e8c01,_0x7d65('0x13'));_0x997ffd(_0x17699a[_0x7d65('0x19')][_0x7d65('0x17')]);}})[_0x7d65('0x1a')](function(_0x1c91af){logger[_0x7d65('0x15')]('SmsQueue,\x20%s,\x20%s',_0x2e8c01,_0x1c91af);_0x411bbf(_0x1c91af);});});}exports[_0x7d65('0x1b')]=function(_0x50cfdf){var _0x35aa61=this;return new Promise(function(_0x4b62b9,_0x2fe321){return db[_0x7d65('0x1c')]['findAll']({'raw':_0x50cfdf[_0x7d65('0x1d')]?_0x50cfdf[_0x7d65('0x1d')][_0x7d65('0x1e')]===undefined?!![]:![]:!![],'where':_0x50cfdf['options']?_0x50cfdf[_0x7d65('0x1d')][_0x7d65('0x1f')]||null:null,'attributes':_0x50cfdf['options']?_0x50cfdf['options'][_0x7d65('0x20')]||null:null,'limit':_0x50cfdf[_0x7d65('0x1d')]?_0x50cfdf[_0x7d65('0x1d')][_0x7d65('0x21')]||null:null,'include':_0x50cfdf[_0x7d65('0x1d')]?_0x50cfdf[_0x7d65('0x1d')]['include']?_[_0x7d65('0x22')](_0x50cfdf[_0x7d65('0x1d')][_0x7d65('0x23')],function(_0xabdc55){return{'model':db[_0xabdc55[_0x7d65('0x24')]],'as':_0xabdc55['as'],'attributes':_0xabdc55[_0x7d65('0x20')],'include':_0xabdc55[_0x7d65('0x23')]?_['map'](_0xabdc55['include'],function(_0x3d2bcc){return{'model':db[_0x3d2bcc[_0x7d65('0x24')]],'as':_0x3d2bcc['as'],'attributes':_0x3d2bcc[_0x7d65('0x20')],'include':_0x3d2bcc[_0x7d65('0x23')]?_[_0x7d65('0x22')](_0x3d2bcc['include'],function(_0x4a03ad){return{'model':db[_0x4a03ad[_0x7d65('0x24')]],'as':_0x4a03ad['as'],'attributes':_0x4a03ad[_0x7d65('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x34e828){logger[_0x7d65('0x18')](_0x7d65('0x1b'),_0x50cfdf);logger[_0x7d65('0x25')]('GetSmsQueue',_0x50cfdf,JSON[_0x7d65('0x26')](_0x34e828));_0x4b62b9(_0x34e828);})[_0x7d65('0x1a')](function(_0x10a6e4){logger[_0x7d65('0x15')](_0x7d65('0x1b'),_0x10a6e4['message'],_0x50cfdf);_0x2fe321(_0x35aa61[_0x7d65('0x15')](0x1f4,_0x10a6e4[_0x7d65('0x17')]));});});};exports[_0x7d65('0x27')]=function(_0x51fccf){var _0x3e948b=this;return new Promise(function(_0x5877c2,_0x51bbbf){return db['SmsQueue'][_0x7d65('0x28')]({'raw':_0x51fccf['options']?_0x51fccf[_0x7d65('0x1d')][_0x7d65('0x1e')]===undefined?!![]:![]:!![],'where':_0x51fccf[_0x7d65('0x1d')]?_0x51fccf[_0x7d65('0x1d')][_0x7d65('0x1f')]||null:null,'attributes':_0x51fccf['options']?_0x51fccf[_0x7d65('0x1d')]['attributes']||null:null,'include':_0x51fccf[_0x7d65('0x1d')]?_0x51fccf[_0x7d65('0x1d')][_0x7d65('0x23')]?_[_0x7d65('0x22')](_0x51fccf[_0x7d65('0x1d')][_0x7d65('0x23')],function(_0x2e63d1){return{'model':db[_0x2e63d1[_0x7d65('0x24')]],'as':_0x2e63d1['as'],'attributes':_0x2e63d1[_0x7d65('0x20')],'include':_0x2e63d1[_0x7d65('0x23')]?_[_0x7d65('0x22')](_0x2e63d1[_0x7d65('0x23')],function(_0x522d7f){return{'model':db[_0x522d7f['model']],'as':_0x522d7f['as'],'attributes':_0x522d7f[_0x7d65('0x20')],'include':_0x522d7f['include']?_[_0x7d65('0x22')](_0x522d7f[_0x7d65('0x23')],function(_0x452f76){return{'model':db[_0x452f76[_0x7d65('0x24')]],'as':_0x452f76['as'],'attributes':_0x452f76[_0x7d65('0x20')]};}):[]};}):[]};}):[]:[]})[_0x7d65('0x11')](function(_0x2b8682){logger[_0x7d65('0x18')]('ShowSmsQueue',_0x51fccf);logger[_0x7d65('0x25')](_0x7d65('0x27'),_0x51fccf,JSON[_0x7d65('0x26')](_0x2b8682));_0x5877c2(_0x2b8682);})['catch'](function(_0x73900c){logger[_0x7d65('0x15')](_0x7d65('0x27'),_0x73900c['message'],_0x51fccf);_0x51bbbf(_0x3e948b['error'](0x1f4,_0x73900c[_0x7d65('0x17')]));});});};
\ No newline at end of file
index fe8baa5..9cd8d35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb05=['emit','removeListener','register','length','smsQueue:'];(function(_0xe461c4,_0x450df6){var _0x45bcae=function(_0x446424){while(--_0x446424){_0xe461c4['push'](_0xe461c4['shift']());}};_0x45bcae(++_0x450df6);}(_0xfb05,0x1ef));var _0x5fb0=function(_0x411017,_0x4a8117){_0x411017=_0x411017-0x0;var _0x2adeea=_0xfb05[_0x411017];return _0x2adeea;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=['save','remove','update'];function createListener(_0x14895c,_0x363ec8){return function(_0x5b8841){_0x363ec8[_0x5fb0('0x0')](_0x14895c,_0x5b8841);};}function removeListener(_0x13b2a2,_0x1d7cfd){return function(){SmsQueueEvents[_0x5fb0('0x1')](_0x13b2a2,_0x1d7cfd);};}exports[_0x5fb0('0x2')]=function(_0xe65e9c){for(var _0x22ebec=0x0,_0x3c2051=events[_0x5fb0('0x3')];_0x22ebec<_0x3c2051;_0x22ebec++){var _0x495d77=events[_0x22ebec];var _0x49bf87=createListener(_0x5fb0('0x4')+_0x495d77,_0xe65e9c);SmsQueueEvents['on'](_0x495d77,_0x49bf87);}};
\ No newline at end of file
+var _0x3032=['update','emit','removeListener','register','length','smsQueue:','./smsQueue.events','save','remove'];(function(_0x3ad0f9,_0x346b76){var _0x49fedc=function(_0x3fd974){while(--_0x3fd974){_0x3ad0f9['push'](_0x3ad0f9['shift']());}};_0x49fedc(++_0x346b76);}(_0x3032,0xd5));var _0x2303=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3032[_0x3dd15e];return _0x231fd0;};'use strict';var SmsQueueEvents=require(_0x2303('0x0'));var events=[_0x2303('0x1'),_0x2303('0x2'),_0x2303('0x3')];function createListener(_0x1597bb,_0x590189){return function(_0xeaa959){_0x590189[_0x2303('0x4')](_0x1597bb,_0xeaa959);};}function removeListener(_0x5606c0,_0x4b469c){return function(){SmsQueueEvents[_0x2303('0x5')](_0x5606c0,_0x4b469c);};}exports[_0x2303('0x6')]=function(_0x1c34a7){for(var _0xf3177f=0x0,_0x332e07=events[_0x2303('0x7')];_0xf3177f<_0x332e07;_0xf3177f++){var _0x47769b=events[_0xf3177f];var _0xb181ba=createListener(_0x2303('0x8')+_0x47769b,_0x1c34a7);SmsQueueEvents['on'](_0x47769b,_0xb181ba);}};
\ No newline at end of file
index 4532315..72af992 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8338=['get','/describe','isAuthenticated','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','index'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0x8338,0x140));var _0x8833=function(_0x185df,_0x3e0eda){_0x185df=_0x185df-0x0;var _0x10cc7a=_0x8338[_0x185df];return _0x10cc7a;};'use strict';var multer=require(_0x8833('0x0'));var util=require(_0x8833('0x1'));var path=require(_0x8833('0x2'));var timeout=require(_0x8833('0x3'));var express=require(_0x8833('0x4'));var router=express[_0x8833('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8833('0x6'));var interaction=require(_0x8833('0x7'));var config=require(_0x8833('0x8'));var controller=require('./smsQueueReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x8833('0x9')]);router[_0x8833('0xa')](_0x8833('0xb'),auth[_0x8833('0xc')](),controller[_0x8833('0xd')]);router[_0x8833('0xa')](_0x8833('0xe'),auth['isAuthenticated'](),controller[_0x8833('0xf')]);router['post']('/',auth[_0x8833('0xc')](),controller[_0x8833('0x10')]);router[_0x8833('0x11')]('/:id',auth[_0x8833('0xc')](),controller[_0x8833('0x12')]);router[_0x8833('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x8833('0x14')]);module[_0x8833('0x15')]=router;
\ No newline at end of file
+var _0xcb95=['put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','post','create'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0xcb95,0xb5));var _0x5cb9=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xcb95[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0x5cb9('0x0'));var util=require(_0x5cb9('0x1'));var path=require(_0x5cb9('0x2'));var timeout=require('connect-timeout');var express=require(_0x5cb9('0x3'));var router=express[_0x5cb9('0x4')]();var fs_extra=require(_0x5cb9('0x5'));var auth=require(_0x5cb9('0x6'));var interaction=require(_0x5cb9('0x7'));var config=require(_0x5cb9('0x8'));var controller=require('./smsQueueReport.controller');router[_0x5cb9('0x9')]('/',auth[_0x5cb9('0xa')](),controller['index']);router[_0x5cb9('0x9')](_0x5cb9('0xb'),auth[_0x5cb9('0xa')](),controller[_0x5cb9('0xc')]);router[_0x5cb9('0x9')](_0x5cb9('0xd'),auth[_0x5cb9('0xa')](),controller[_0x5cb9('0xe')]);router[_0x5cb9('0xf')]('/',auth[_0x5cb9('0xa')](),controller[_0x5cb9('0x10')]);router[_0x5cb9('0x11')](_0x5cb9('0xd'),auth[_0x5cb9('0xa')](),controller[_0x5cb9('0x12')]);router[_0x5cb9('0x13')](_0x5cb9('0xd'),auth[_0x5cb9('0xa')](),controller[_0x5cb9('0x14')]);module[_0x5cb9('0x15')]=router;
\ No newline at end of file
index c788341..05f6ed8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dbe=['STRING','DATE','moment','sequelize','exports'];(function(_0x57c3c1,_0xbb2076){var _0x3ae5da=function(_0x586f43){while(--_0x586f43){_0x57c3c1['push'](_0x57c3c1['shift']());}};_0x3ae5da(++_0xbb2076);}(_0x9dbe,0x174));var _0xe9db=function(_0xea64c3,_0x5d78e7){_0xea64c3=_0xea64c3-0x0;var _0x426a12=_0x9dbe[_0xea64c3];return _0x426a12;};'use strict';var moment=require(_0xe9db('0x0'));var Sequelize=require(_0xe9db('0x1'));module[_0xe9db('0x2')]={'uniqueid':{'type':Sequelize[_0xe9db('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xe9db('0x3')]},'joinAt':{'type':Sequelize[_0xe9db('0x4')]},'leaveAt':{'type':Sequelize[_0xe9db('0x4')]},'acceptAt':{'type':Sequelize[_0xe9db('0x4')]},'exitAt':{'type':Sequelize[_0xe9db('0x4')]},'reason':{'type':Sequelize[_0xe9db('0x3')]}};
\ No newline at end of file
+var _0x949a=['STRING','DATE','moment'];(function(_0xa3e0f7,_0x1b06db){var _0x4ce604=function(_0x29df1e){while(--_0x29df1e){_0xa3e0f7['push'](_0xa3e0f7['shift']());}};_0x4ce604(++_0x1b06db);}(_0x949a,0x1d3));var _0xa949=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x949a[_0x321bb2];return _0x9c12ed;};'use strict';var moment=require(_0xa949('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xa949('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xa949('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xa949('0x2')]},'acceptAt':{'type':Sequelize[_0xa949('0x2')]},'exitAt':{'type':Sequelize[_0xa949('0x2')]},'reason':{'type':Sequelize[_0xa949('0x1')]}};
\ No newline at end of file
index b3cd7f7..b534372 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x360b=['moment','bluebird','mustache','util','path','fs-extra','lodash','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','keys','SmsQueueReport','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x13f6f4,_0xce8351){var _0xa72d52=function(_0x34c5d3){while(--_0x34c5d3){_0x13f6f4['push'](_0x13f6f4['shift']());}};_0xa72d52(++_0xce8351);}(_0x360b,0xdc));var _0xb360=function(_0x178b66,_0x3d4a0a){_0x178b66=_0x178b66-0x0;var _0x48bc24=_0x360b[_0x178b66];return _0x48bc24;};'use strict';var emlformat=require(_0xb360('0x0'));var rimraf=require(_0xb360('0x1'));var zipdir=require(_0xb360('0x2'));var jsonpatch=require(_0xb360('0x3'));var rp=require(_0xb360('0x4'));var moment=require(_0xb360('0x5'));var BPromise=require(_0xb360('0x6'));var Mustache=require(_0xb360('0x7'));var util=require(_0xb360('0x8'));var path=require(_0xb360('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb360('0xa'));var _=require(_0xb360('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb360('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb360('0xd'));var Redis=require(_0xb360('0xe'));var authService=require(_0xb360('0xf'));var qs=require(_0xb360('0x10'));var as=require(_0xb360('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb360('0x12'))(_0xb360('0x13'));var utils=require(_0xb360('0x14'));var config=require(_0xb360('0x15'));var licenseUtil=require(_0xb360('0x16'));var db=require(_0xb360('0x17'))['db'];function respondWithStatusCode(_0x55f3f2,_0x2e0399){_0x2e0399=_0x2e0399||0xcc;return function(_0x380fc7){if(_0x380fc7){return _0x55f3f2[_0xb360('0x18')](_0x2e0399);}return _0x55f3f2[_0xb360('0x19')](_0x2e0399)[_0xb360('0x1a')]();};}function respondWithResult(_0x2605c9,_0xee8927){_0xee8927=_0xee8927||0xc8;return function(_0x485771){if(_0x485771){return _0x2605c9[_0xb360('0x19')](_0xee8927)[_0xb360('0x1b')](_0x485771);}};}function respondWithFilteredResult(_0x1ba7ba,_0x1fa990){return function(_0x517774){if(_0x517774){var _0x524202=typeof _0x1fa990[_0xb360('0x1c')]==='undefined'&&typeof _0x1fa990[_0xb360('0x1d')]===_0xb360('0x1e');var _0x1a36ca=_0x517774[_0xb360('0x1f')];var _0x254e74=_0x524202?0x0:_0x1fa990[_0xb360('0x1c')];var _0x9a3d9b=_0x524202?_0x517774['count']:_0x1fa990['offset']+_0x1fa990[_0xb360('0x1d')];var _0x4e2f68;if(_0x9a3d9b>=_0x1a36ca){_0x9a3d9b=_0x1a36ca;_0x4e2f68=0xc8;}else{_0x4e2f68=0xce;}_0x1ba7ba[_0xb360('0x19')](_0x4e2f68);return _0x1ba7ba[_0xb360('0x20')](_0xb360('0x21'),_0x254e74+'-'+_0x9a3d9b+'/'+_0x1a36ca)['json'](_0x517774);}return null;};}function patchUpdates(_0x3ab678){return function(_0x7131c3){try{jsonpatch[_0xb360('0x22')](_0x7131c3,_0x3ab678,!![]);}catch(_0x23a713){return BPromise[_0xb360('0x23')](_0x23a713);}return _0x7131c3[_0xb360('0x24')]();};}function saveUpdates(_0xf35f19,_0xaa01ec){return function(_0xbaa6ee){if(_0xbaa6ee){return _0xbaa6ee[_0xb360('0x25')](_0xf35f19)[_0xb360('0x26')](function(_0x239ef0){return _0x239ef0;});}return null;};}function removeEntity(_0x36eab1,_0x56bf34){return function(_0xf949e5){if(_0xf949e5){return _0xf949e5[_0xb360('0x27')]()['then'](function(){_0x36eab1[_0xb360('0x19')](0xcc)[_0xb360('0x1a')]();});}};}function handleEntityNotFound(_0x109634,_0x1cddb0){return function(_0x208ae6){if(!_0x208ae6){_0x109634[_0xb360('0x18')](0x194);}return _0x208ae6;};}function handleError(_0x193bd1,_0x58d1cd){_0x58d1cd=_0x58d1cd||0x1f4;return function(_0x42abb9){logger[_0xb360('0x28')](_0x42abb9[_0xb360('0x29')]);if(_0x42abb9[_0xb360('0x2a')]){delete _0x42abb9[_0xb360('0x2a')];}_0x193bd1[_0xb360('0x19')](_0x58d1cd)['send'](_0x42abb9);};}exports['index']=function(_0x41f44d,_0x15f0e4){var _0xceb320={},_0x3160a4={},_0x90591d={'count':0x0,'rows':[]};var _0x45301b=_[_0xb360('0x2b')](db['SmsQueueReport'][_0xb360('0x2c')],function(_0x51dcd5){return{'name':_0x51dcd5[_0xb360('0x2d')],'type':_0x51dcd5[_0xb360('0x2e')]['key']};});_0x3160a4['model']=_[_0xb360('0x2b')](_0x45301b,_0xb360('0x2a'));_0x3160a4[_0xb360('0x2f')]=_['keys'](_0x41f44d[_0xb360('0x2f')]);_0x3160a4[_0xb360('0x30')]=_[_0xb360('0x31')](_0x3160a4[_0xb360('0x32')],_0x3160a4[_0xb360('0x2f')]);_0xceb320[_0xb360('0x33')]=_[_0xb360('0x31')](_0x3160a4['model'],qs['fields'](_0x41f44d[_0xb360('0x2f')][_0xb360('0x34')]));_0xceb320[_0xb360('0x33')]=_0xceb320['attributes'][_0xb360('0x35')]?_0xceb320[_0xb360('0x33')]:_0x3160a4['model'];if(!_0x41f44d[_0xb360('0x2f')][_0xb360('0x36')](_0xb360('0x37'))){_0xceb320[_0xb360('0x1d')]=qs['limit'](_0x41f44d[_0xb360('0x2f')][_0xb360('0x1d')]);_0xceb320['offset']=qs['offset'](_0x41f44d[_0xb360('0x2f')][_0xb360('0x1c')]);}_0xceb320[_0xb360('0x38')]=qs[_0xb360('0x39')](_0x41f44d[_0xb360('0x2f')]['sort']);_0xceb320[_0xb360('0x3a')]=qs['filters'](_[_0xb360('0x3b')](_0x41f44d[_0xb360('0x2f')],_0x3160a4['filters']),_0x45301b);if(_0x41f44d[_0xb360('0x2f')][_0xb360('0x3c')]){_0xceb320[_0xb360('0x3a')]=_[_0xb360('0x3d')](_0xceb320[_0xb360('0x3a')],{'$or':_[_0xb360('0x2b')](_0x45301b,function(_0xa4bf02){if(_0xa4bf02[_0xb360('0x2e')]!=='VIRTUAL'){var _0x24015d={};_0x24015d[_0xa4bf02['name']]={'$like':'%'+_0x41f44d['query'][_0xb360('0x3c')]+'%'};return _0x24015d;}})});}_0xceb320=_[_0xb360('0x3d')]({},_0xceb320,_0x41f44d[_0xb360('0x3e')]);var _0x410cc2={'where':_0xceb320[_0xb360('0x3a')]};return db['SmsQueueReport']['count'](_0x410cc2)[_0xb360('0x26')](function(_0x2784a7){_0x90591d[_0xb360('0x1f')]=_0x2784a7;if(_0x41f44d[_0xb360('0x2f')][_0xb360('0x3f')]){_0xceb320[_0xb360('0x40')]=[{'all':!![]}];}return db['SmsQueueReport'][_0xb360('0x41')](_0xceb320);})['then'](function(_0x3b9669){_0x90591d[_0xb360('0x42')]=_0x3b9669;return _0x90591d;})[_0xb360('0x26')](respondWithFilteredResult(_0x15f0e4,_0xceb320))[_0xb360('0x43')](handleError(_0x15f0e4,null));};exports[_0xb360('0x44')]=function(_0x50bff3,_0x51f162){var _0x3e6eaf={'raw':!![],'where':{'id':_0x50bff3['params']['id']}},_0x3e5f73={};_0x3e5f73['model']=_[_0xb360('0x45')](db[_0xb360('0x46')][_0xb360('0x2c')]);_0x3e5f73[_0xb360('0x2f')]=_[_0xb360('0x45')](_0x50bff3[_0xb360('0x2f')]);_0x3e5f73[_0xb360('0x30')]=_[_0xb360('0x31')](_0x3e5f73[_0xb360('0x32')],_0x3e5f73[_0xb360('0x2f')]);_0x3e6eaf[_0xb360('0x33')]=_['intersection'](_0x3e5f73['model'],qs[_0xb360('0x34')](_0x50bff3['query']['fields']));_0x3e6eaf[_0xb360('0x33')]=_0x3e6eaf['attributes'][_0xb360('0x35')]?_0x3e6eaf['attributes']:_0x3e5f73[_0xb360('0x32')];if(_0x50bff3[_0xb360('0x2f')][_0xb360('0x3f')]){_0x3e6eaf[_0xb360('0x40')]=[{'all':!![]}];}_0x3e6eaf=_[_0xb360('0x3d')]({},_0x3e6eaf,_0x50bff3[_0xb360('0x3e')]);return db[_0xb360('0x46')]['find'](_0x3e6eaf)[_0xb360('0x26')](handleEntityNotFound(_0x51f162,null))[_0xb360('0x26')](respondWithResult(_0x51f162,null))[_0xb360('0x43')](handleError(_0x51f162,null));};exports[_0xb360('0x47')]=function(_0x46cb04,_0x41368d){return db['SmsQueueReport'][_0xb360('0x47')](_0x46cb04['body'],{})['then'](respondWithResult(_0x41368d,0xc9))['catch'](handleError(_0x41368d,null));};exports[_0xb360('0x25')]=function(_0x556216,_0x307ca0){if(_0x556216[_0xb360('0x48')]['id']){delete _0x556216[_0xb360('0x48')]['id'];}return db['SmsQueueReport'][_0xb360('0x49')]({'where':{'id':_0x556216[_0xb360('0x4a')]['id']}})[_0xb360('0x26')](handleEntityNotFound(_0x307ca0,null))[_0xb360('0x26')](saveUpdates(_0x556216[_0xb360('0x48')],null))[_0xb360('0x26')](respondWithResult(_0x307ca0,null))[_0xb360('0x43')](handleError(_0x307ca0,null));};exports['destroy']=function(_0x3f4d73,_0x7787d7){return db[_0xb360('0x46')]['find']({'where':{'id':_0x3f4d73[_0xb360('0x4a')]['id']}})[_0xb360('0x26')](handleEntityNotFound(_0x7787d7,null))[_0xb360('0x26')](removeEntity(_0x7787d7,null))['catch'](handleError(_0x7787d7,null));};exports['describe']=function(_0x17bc11,_0x26f006){return db[_0xb360('0x46')]['describe']()['then'](respondWithResult(_0x26f006,null))[_0xb360('0x43')](handleError(_0x26f006,null));};
\ No newline at end of file
+var _0x09b2=['type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','params','keys','length','SmsQueueReport','find','create','body','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','rawAttributes','fieldName'];(function(_0x51c819,_0xd812db){var _0x15c5d2=function(_0x2977f0){while(--_0x2977f0){_0x51c819['push'](_0x51c819['shift']());}};_0x15c5d2(++_0xd812db);}(_0x09b2,0x17c));var _0x209b=function(_0x436030,_0x3344ff){_0x436030=_0x436030-0x0;var _0x4ced92=_0x09b2[_0x436030];return _0x4ced92;};'use strict';var emlformat=require(_0x209b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x209b('0x1'));var jsonpatch=require(_0x209b('0x2'));var rp=require('request-promise');var moment=require(_0x209b('0x3'));var BPromise=require(_0x209b('0x4'));var Mustache=require('mustache');var util=require(_0x209b('0x5'));var path=require('path');var sox=require(_0x209b('0x6'));var csv=require(_0x209b('0x7'));var ejs=require(_0x209b('0x8'));var fs=require('fs');var fs_extra=require(_0x209b('0x9'));var _=require(_0x209b('0xa'));var squel=require(_0x209b('0xb'));var crypto=require('crypto');var jsforce=require(_0x209b('0xc'));var deskjs=require(_0x209b('0xd'));var toCsv=require(_0x209b('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x209b('0xe'));var hardwareService=require(_0x209b('0xf'));var logger=require(_0x209b('0x10'))('api');var utils=require(_0x209b('0x11'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x209b('0x12'))['db'];function respondWithStatusCode(_0x16f884,_0x4caa42){_0x4caa42=_0x4caa42||0xcc;return function(_0x11144f){if(_0x11144f){return _0x16f884[_0x209b('0x13')](_0x4caa42);}return _0x16f884[_0x209b('0x14')](_0x4caa42)[_0x209b('0x15')]();};}function respondWithResult(_0x4414e1,_0x247482){_0x247482=_0x247482||0xc8;return function(_0x2b2da0){if(_0x2b2da0){return _0x4414e1[_0x209b('0x14')](_0x247482)[_0x209b('0x16')](_0x2b2da0);}};}function respondWithFilteredResult(_0x1ad173,_0x2d907b){return function(_0x2b6752){if(_0x2b6752){var _0x24729e=typeof _0x2d907b[_0x209b('0x17')]==='undefined'&&typeof _0x2d907b[_0x209b('0x18')]==='undefined';var _0x3a7dc8=_0x2b6752[_0x209b('0x19')];var _0x43b502=_0x24729e?0x0:_0x2d907b[_0x209b('0x17')];var _0x357a2b=_0x24729e?_0x2b6752[_0x209b('0x19')]:_0x2d907b['offset']+_0x2d907b[_0x209b('0x18')];var _0x19e3ca;if(_0x357a2b>=_0x3a7dc8){_0x357a2b=_0x3a7dc8;_0x19e3ca=0xc8;}else{_0x19e3ca=0xce;}_0x1ad173['status'](_0x19e3ca);return _0x1ad173[_0x209b('0x1a')](_0x209b('0x1b'),_0x43b502+'-'+_0x357a2b+'/'+_0x3a7dc8)[_0x209b('0x16')](_0x2b6752);}return null;};}function patchUpdates(_0xc8acdd){return function(_0x5ebdbe){try{jsonpatch[_0x209b('0x1c')](_0x5ebdbe,_0xc8acdd,!![]);}catch(_0x422b5c){return BPromise[_0x209b('0x1d')](_0x422b5c);}return _0x5ebdbe[_0x209b('0x1e')]();};}function saveUpdates(_0x27c3a7,_0xea52f7){return function(_0x3e1064){if(_0x3e1064){return _0x3e1064[_0x209b('0x1f')](_0x27c3a7)[_0x209b('0x20')](function(_0x3e98c5){return _0x3e98c5;});}return null;};}function removeEntity(_0x4b97cb,_0x3761b7){return function(_0x3cb318){if(_0x3cb318){return _0x3cb318[_0x209b('0x21')]()[_0x209b('0x20')](function(){_0x4b97cb[_0x209b('0x14')](0xcc)[_0x209b('0x15')]();});}};}function handleEntityNotFound(_0x10d5a8,_0x380db9){return function(_0x2ecd7e){if(!_0x2ecd7e){_0x10d5a8['sendStatus'](0x194);}return _0x2ecd7e;};}function handleError(_0x63b024,_0x645b6c){_0x645b6c=_0x645b6c||0x1f4;return function(_0x4de75e){logger[_0x209b('0x22')](_0x4de75e[_0x209b('0x23')]);if(_0x4de75e[_0x209b('0x24')]){delete _0x4de75e[_0x209b('0x24')];}_0x63b024['status'](_0x645b6c)['send'](_0x4de75e);};}exports[_0x209b('0x25')]=function(_0x3b0721,_0x3188db){var _0x4b9729={},_0x7e5c5a={},_0x2417ab={'count':0x0,'rows':[]};var _0x5415ed=_['map'](db['SmsQueueReport'][_0x209b('0x26')],function(_0x5a1721){return{'name':_0x5a1721[_0x209b('0x27')],'type':_0x5a1721[_0x209b('0x28')][_0x209b('0x29')]};});_0x7e5c5a[_0x209b('0x2a')]=_[_0x209b('0x2b')](_0x5415ed,'name');_0x7e5c5a[_0x209b('0x2c')]=_['keys'](_0x3b0721[_0x209b('0x2c')]);_0x7e5c5a[_0x209b('0x2d')]=_[_0x209b('0x2e')](_0x7e5c5a[_0x209b('0x2a')],_0x7e5c5a['query']);_0x4b9729[_0x209b('0x2f')]=_['intersection'](_0x7e5c5a[_0x209b('0x2a')],qs[_0x209b('0x30')](_0x3b0721[_0x209b('0x2c')][_0x209b('0x30')]));_0x4b9729[_0x209b('0x2f')]=_0x4b9729[_0x209b('0x2f')]['length']?_0x4b9729['attributes']:_0x7e5c5a[_0x209b('0x2a')];if(!_0x3b0721[_0x209b('0x2c')][_0x209b('0x31')](_0x209b('0x32'))){_0x4b9729[_0x209b('0x18')]=qs[_0x209b('0x18')](_0x3b0721[_0x209b('0x2c')][_0x209b('0x18')]);_0x4b9729[_0x209b('0x17')]=qs[_0x209b('0x17')](_0x3b0721[_0x209b('0x2c')][_0x209b('0x17')]);}_0x4b9729['order']=qs[_0x209b('0x33')](_0x3b0721['query'][_0x209b('0x33')]);_0x4b9729[_0x209b('0x34')]=qs[_0x209b('0x2d')](_[_0x209b('0x35')](_0x3b0721[_0x209b('0x2c')],_0x7e5c5a['filters']),_0x5415ed);if(_0x3b0721[_0x209b('0x2c')][_0x209b('0x36')]){_0x4b9729[_0x209b('0x34')]=_[_0x209b('0x37')](_0x4b9729[_0x209b('0x34')],{'$or':_[_0x209b('0x2b')](_0x5415ed,function(_0xa9f6cb){if(_0xa9f6cb[_0x209b('0x28')]!==_0x209b('0x38')){var _0x40f099={};_0x40f099[_0xa9f6cb['name']]={'$like':'%'+_0x3b0721[_0x209b('0x2c')][_0x209b('0x36')]+'%'};return _0x40f099;}})});}_0x4b9729=_[_0x209b('0x37')]({},_0x4b9729,_0x3b0721[_0x209b('0x39')]);var _0x27faf2={'where':_0x4b9729[_0x209b('0x34')]};return db['SmsQueueReport']['count'](_0x27faf2)[_0x209b('0x20')](function(_0x26fefb){_0x2417ab[_0x209b('0x19')]=_0x26fefb;if(_0x3b0721[_0x209b('0x2c')][_0x209b('0x3a')]){_0x4b9729[_0x209b('0x3b')]=[{'all':!![]}];}return db['SmsQueueReport']['findAll'](_0x4b9729);})[_0x209b('0x20')](function(_0x33c3c9){_0x2417ab['rows']=_0x33c3c9;return _0x2417ab;})[_0x209b('0x20')](respondWithFilteredResult(_0x3188db,_0x4b9729))[_0x209b('0x3c')](handleError(_0x3188db,null));};exports[_0x209b('0x3d')]=function(_0x177ebf,_0x8b22a8){var _0x479e2f={'raw':!![],'where':{'id':_0x177ebf[_0x209b('0x3e')]['id']}},_0x3a5a85={};_0x3a5a85[_0x209b('0x2a')]=_[_0x209b('0x3f')](db['SmsQueueReport'][_0x209b('0x26')]);_0x3a5a85[_0x209b('0x2c')]=_['keys'](_0x177ebf[_0x209b('0x2c')]);_0x3a5a85['filters']=_[_0x209b('0x2e')](_0x3a5a85[_0x209b('0x2a')],_0x3a5a85['query']);_0x479e2f[_0x209b('0x2f')]=_[_0x209b('0x2e')](_0x3a5a85[_0x209b('0x2a')],qs[_0x209b('0x30')](_0x177ebf[_0x209b('0x2c')][_0x209b('0x30')]));_0x479e2f[_0x209b('0x2f')]=_0x479e2f[_0x209b('0x2f')][_0x209b('0x40')]?_0x479e2f['attributes']:_0x3a5a85[_0x209b('0x2a')];if(_0x177ebf[_0x209b('0x2c')][_0x209b('0x3a')]){_0x479e2f['include']=[{'all':!![]}];}_0x479e2f=_[_0x209b('0x37')]({},_0x479e2f,_0x177ebf[_0x209b('0x39')]);return db[_0x209b('0x41')][_0x209b('0x42')](_0x479e2f)[_0x209b('0x20')](handleEntityNotFound(_0x8b22a8,null))[_0x209b('0x20')](respondWithResult(_0x8b22a8,null))['catch'](handleError(_0x8b22a8,null));};exports[_0x209b('0x43')]=function(_0x24b1d1,_0xf86998){return db[_0x209b('0x41')][_0x209b('0x43')](_0x24b1d1[_0x209b('0x44')],{})['then'](respondWithResult(_0xf86998,0xc9))[_0x209b('0x3c')](handleError(_0xf86998,null));};exports[_0x209b('0x1f')]=function(_0x199252,_0x1d44e4){if(_0x199252[_0x209b('0x44')]['id']){delete _0x199252[_0x209b('0x44')]['id'];}return db[_0x209b('0x41')]['find']({'where':{'id':_0x199252['params']['id']}})[_0x209b('0x20')](handleEntityNotFound(_0x1d44e4,null))[_0x209b('0x20')](saveUpdates(_0x199252['body'],null))[_0x209b('0x20')](respondWithResult(_0x1d44e4,null))[_0x209b('0x3c')](handleError(_0x1d44e4,null));};exports['destroy']=function(_0x383a17,_0x50cac3){return db['SmsQueueReport']['find']({'where':{'id':_0x383a17[_0x209b('0x3e')]['id']}})['then'](handleEntityNotFound(_0x50cac3,null))[_0x209b('0x20')](removeEntity(_0x50cac3,null))[_0x209b('0x3c')](handleError(_0x50cac3,null));};exports[_0x209b('0x45')]=function(_0xc60275,_0x40d40e){return db[_0x209b('0x41')]['describe']()[_0x209b('0x20')](respondWithResult(_0x40d40e,null))[_0x209b('0x3c')](handleError(_0x40d40e,null));};
\ No newline at end of file
index 62e460d..67deff4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid','lodash','util'];(function(_0x2adae0,_0x4fa150){var _0x4bbb68=function(_0x5952bb){while(--_0x5952bb){_0x2adae0['push'](_0x2adae0['shift']());}};_0x4bbb68(++_0x4fa150);}(_0xe706,0xa3));var _0x6e70=function(_0x4f3487,_0x143272){_0x4f3487=_0x4f3487-0x0;var _0x58d74f=_0xe706[_0x4f3487];return _0x58d74f;};'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'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index ea8db3c..8a2b657 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4a8=['body','where','attributes','limit','UpdateSmsQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','then','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','SmsQueueReport','create','options','raw','CreateSmsQueueReport','update'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb4a8,0x1f4));var _0x8b4a=function(_0x38841c,_0x1af0bf){_0x38841c=_0x38841c-0x0;var _0x500610=_0xb4a8[_0x38841c];return _0x500610;};'use strict';var _=require(_0x8b4a('0x0'));var util=require(_0x8b4a('0x1'));var moment=require(_0x8b4a('0x2'));var BPromise=require(_0x8b4a('0x3'));var rs=require(_0x8b4a('0x4'));var fs=require('fs');var Redis=require(_0x8b4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8b4a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x8b4a('0x7'));var jayson=require(_0x8b4a('0x8'));var client=jayson[_0x8b4a('0x9')][_0x8b4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2cfc52,_0x23ab30,_0x31450f){return new BPromise(function(_0x291808,_0x499cbb){return client['request'](_0x2cfc52,_0x31450f)[_0x8b4a('0xb')](function(_0x1c7048){logger['info'](_0x8b4a('0xc'),_0x23ab30,'request\x20sent');logger[_0x8b4a('0xd')](_0x8b4a('0xe'),_0x23ab30,_0x8b4a('0xf'),JSON[_0x8b4a('0x10')](_0x1c7048));if(_0x1c7048[_0x8b4a('0x11')]){if(_0x1c7048[_0x8b4a('0x11')]['code']===0x1f4){logger[_0x8b4a('0x11')](_0x8b4a('0xc'),_0x23ab30,_0x1c7048['error'][_0x8b4a('0x12')]);return _0x499cbb(_0x1c7048['error'][_0x8b4a('0x12')]);}logger['error'](_0x8b4a('0xc'),_0x23ab30,_0x1c7048[_0x8b4a('0x11')][_0x8b4a('0x12')]);return _0x291808(_0x1c7048[_0x8b4a('0x11')][_0x8b4a('0x12')]);}else{logger[_0x8b4a('0x13')](_0x8b4a('0xc'),_0x23ab30,_0x8b4a('0xf'));_0x291808(_0x1c7048[_0x8b4a('0x14')][_0x8b4a('0x12')]);}})[_0x8b4a('0x15')](function(_0x5ac09b){logger[_0x8b4a('0x11')](_0x8b4a('0xc'),_0x23ab30,_0x5ac09b);_0x499cbb(_0x5ac09b);});});}exports['CreateSmsQueueReport']=function(_0x4eaaaa){var _0x340bce=this;return new Promise(function(_0x295153,_0x232b08){return db[_0x8b4a('0x16')][_0x8b4a('0x17')](_0x4eaaaa['body'],{'raw':_0x4eaaaa[_0x8b4a('0x18')]?_0x4eaaaa[_0x8b4a('0x18')][_0x8b4a('0x19')]===undefined?!![]:![]:!![]})[_0x8b4a('0xb')](function(_0xc30fb2){logger[_0x8b4a('0x13')](_0x8b4a('0x1a'),_0x4eaaaa);logger[_0x8b4a('0xd')](_0x8b4a('0x1a'),_0x4eaaaa,JSON[_0x8b4a('0x10')](_0xc30fb2));_0x295153(_0xc30fb2);})[_0x8b4a('0x15')](function(_0x5f2906){logger[_0x8b4a('0x11')](_0x8b4a('0x1a'),_0x5f2906[_0x8b4a('0x12')],_0x4eaaaa);_0x232b08(_0x340bce['error'](0x1f4,_0x5f2906['message']));});});};exports['UpdateSmsQueueReport']=function(_0x52dec8){var _0x330623=this;return new Promise(function(_0x1342f8,_0xa20e37){return db[_0x8b4a('0x16')][_0x8b4a('0x1b')](_0x52dec8[_0x8b4a('0x1c')],{'raw':_0x52dec8[_0x8b4a('0x18')]?_0x52dec8[_0x8b4a('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x52dec8['options']?_0x52dec8[_0x8b4a('0x18')][_0x8b4a('0x1d')]||null:null,'attributes':_0x52dec8['options']?_0x52dec8[_0x8b4a('0x18')][_0x8b4a('0x1e')]||null:null,'limit':_0x52dec8[_0x8b4a('0x18')]?_0x52dec8[_0x8b4a('0x18')][_0x8b4a('0x1f')]||null:null})[_0x8b4a('0xb')](function(_0x1d6630){logger['info'](_0x8b4a('0x20'),_0x52dec8);logger[_0x8b4a('0xd')](_0x8b4a('0x20'),_0x52dec8,JSON[_0x8b4a('0x10')](_0x1d6630));_0x1342f8(_0x1d6630);})[_0x8b4a('0x15')](function(_0x44c05d){logger[_0x8b4a('0x11')]('UpdateSmsQueueReport',_0x44c05d['message'],_0x52dec8);_0xa20e37(_0x330623['error'](0x1f4,_0x44c05d[_0x8b4a('0x12')]));});});};
\ No newline at end of file
+var _0x57de=['ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','request','info','request\x20sent','debug','error','message','SmsQueueReport,\x20%s,\x20%s','result','catch','CreateSmsQueueReport','SmsQueueReport','create','body','options','stringify','UpdateSmsQueueReport','update','raw','where','attributes','limit','lodash','util','moment','bluebird','randomstring'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0x57de,0x1cc));var _0xe57d=function(_0x2bbc07,_0x1e2168){_0x2bbc07=_0x2bbc07-0x0;var _0x6879e4=_0x57de[_0x2bbc07];return _0x6879e4;};'use strict';var _=require(_0xe57d('0x0'));var util=require(_0xe57d('0x1'));var moment=require(_0xe57d('0x2'));var BPromise=require(_0xe57d('0x3'));var rs=require(_0xe57d('0x4'));var fs=require('fs');var Redis=require(_0xe57d('0x5'));var db=require(_0xe57d('0x6'))['db'];var utils=require(_0xe57d('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xe57d('0x8'));var jayson=require(_0xe57d('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5737a5,_0xb2ef53,_0x426ad4){return new BPromise(function(_0xbd2480,_0x5b9c4c){return client[_0xe57d('0xa')](_0x5737a5,_0x426ad4)['then'](function(_0x554860){logger[_0xe57d('0xb')]('SmsQueueReport,\x20%s,\x20%s',_0xb2ef53,_0xe57d('0xc'));logger[_0xe57d('0xd')]('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0xb2ef53,_0xe57d('0xc'),JSON['stringify'](_0x554860));if(_0x554860[_0xe57d('0xe')]){if(_0x554860[_0xe57d('0xe')]['code']===0x1f4){logger['error']('SmsQueueReport,\x20%s,\x20%s',_0xb2ef53,_0x554860[_0xe57d('0xe')][_0xe57d('0xf')]);return _0x5b9c4c(_0x554860[_0xe57d('0xe')][_0xe57d('0xf')]);}logger[_0xe57d('0xe')](_0xe57d('0x10'),_0xb2ef53,_0x554860['error'][_0xe57d('0xf')]);return _0xbd2480(_0x554860[_0xe57d('0xe')]['message']);}else{logger['info'](_0xe57d('0x10'),_0xb2ef53,_0xe57d('0xc'));_0xbd2480(_0x554860[_0xe57d('0x11')][_0xe57d('0xf')]);}})[_0xe57d('0x12')](function(_0x5c5195){logger[_0xe57d('0xe')]('SmsQueueReport,\x20%s,\x20%s',_0xb2ef53,_0x5c5195);_0x5b9c4c(_0x5c5195);});});}exports[_0xe57d('0x13')]=function(_0x200486){var _0x4b6e34=this;return new Promise(function(_0x36efd5,_0x29a587){return db[_0xe57d('0x14')][_0xe57d('0x15')](_0x200486[_0xe57d('0x16')],{'raw':_0x200486[_0xe57d('0x17')]?_0x200486[_0xe57d('0x17')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x561df2){logger[_0xe57d('0xb')](_0xe57d('0x13'),_0x200486);logger[_0xe57d('0xd')](_0xe57d('0x13'),_0x200486,JSON[_0xe57d('0x18')](_0x561df2));_0x36efd5(_0x561df2);})[_0xe57d('0x12')](function(_0x5b926c){logger[_0xe57d('0xe')](_0xe57d('0x13'),_0x5b926c['message'],_0x200486);_0x29a587(_0x4b6e34['error'](0x1f4,_0x5b926c[_0xe57d('0xf')]));});});};exports[_0xe57d('0x19')]=function(_0x15c4d6){var _0x4ca481=this;return new Promise(function(_0x1bedc9,_0x595935){return db['SmsQueueReport'][_0xe57d('0x1a')](_0x15c4d6[_0xe57d('0x16')],{'raw':_0x15c4d6[_0xe57d('0x17')]?_0x15c4d6['options'][_0xe57d('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x15c4d6['options']?_0x15c4d6['options'][_0xe57d('0x1c')]||null:null,'attributes':_0x15c4d6[_0xe57d('0x17')]?_0x15c4d6['options'][_0xe57d('0x1d')]||null:null,'limit':_0x15c4d6[_0xe57d('0x17')]?_0x15c4d6['options'][_0xe57d('0x1e')]||null:null})['then'](function(_0xcd3fd){logger[_0xe57d('0xb')](_0xe57d('0x19'),_0x15c4d6);logger[_0xe57d('0xd')]('UpdateSmsQueueReport',_0x15c4d6,JSON[_0xe57d('0x18')](_0xcd3fd));_0x1bedc9(_0xcd3fd);})[_0xe57d('0x12')](function(_0x1f254a){logger[_0xe57d('0xe')](_0xe57d('0x19'),_0x1f254a['message'],_0x15c4d6);_0x595935(_0x4ca481[_0xe57d('0xe')](0x1f4,_0x1f254a[_0xe57d('0xf')]));});});};
\ No newline at end of file
index 1d8b67a..741a9e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0e=['/describe','isAuthenticated','describe','/:id','post','create','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsTransferReport.controller','index','get'];(function(_0x49280e,_0x35139b){var _0x180358=function(_0x39b1dc){while(--_0x39b1dc){_0x49280e['push'](_0x49280e['shift']());}};_0x180358(++_0x35139b);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x2ed312,_0x54b4c2){_0x2ed312=_0x2ed312-0x0;var _0x5d1886=_0x8d0e[_0x2ed312];return _0x5d1886;};'use strict';var multer=require(_0xe8d0('0x0'));var util=require(_0xe8d0('0x1'));var path=require(_0xe8d0('0x2'));var timeout=require(_0xe8d0('0x3'));var express=require(_0xe8d0('0x4'));var router=express[_0xe8d0('0x5')]();var fs_extra=require(_0xe8d0('0x6'));var auth=require(_0xe8d0('0x7'));var interaction=require(_0xe8d0('0x8'));var config=require('../../config/environment');var controller=require(_0xe8d0('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xe8d0('0xa')]);router[_0xe8d0('0xb')](_0xe8d0('0xc'),auth[_0xe8d0('0xd')](),controller[_0xe8d0('0xe')]);router[_0xe8d0('0xb')](_0xe8d0('0xf'),auth[_0xe8d0('0xd')](),controller['show']);router[_0xe8d0('0x10')]('/',auth[_0xe8d0('0xd')](),controller[_0xe8d0('0x11')]);router['put']('/:id',auth[_0xe8d0('0xd')](),controller[_0xe8d0('0x12')]);router[_0xe8d0('0x13')](_0xe8d0('0xf'),auth[_0xe8d0('0xd')](),controller[_0xe8d0('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x04de=['describe','get','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','/describe','isAuthenticated'];(function(_0x599f3b,_0x39f042){var _0x196894=function(_0x524dea){while(--_0x524dea){_0x599f3b['push'](_0x599f3b['shift']());}};_0x196894(++_0x39f042);}(_0x04de,0x107));var _0xe04d=function(_0x55a802,_0x77d099){_0x55a802=_0x55a802-0x0;var _0x2d535=_0x04de[_0x55a802];return _0x2d535;};'use strict';var multer=require(_0xe04d('0x0'));var util=require(_0xe04d('0x1'));var path=require(_0xe04d('0x2'));var timeout=require(_0xe04d('0x3'));var express=require(_0xe04d('0x4'));var router=express[_0xe04d('0x5')]();var fs_extra=require(_0xe04d('0x6'));var auth=require(_0xe04d('0x7'));var interaction=require(_0xe04d('0x8'));var config=require(_0xe04d('0x9'));var controller=require(_0xe04d('0xa'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xe04d('0xb'),auth[_0xe04d('0xc')](),controller[_0xe04d('0xd')]);router[_0xe04d('0xe')](_0xe04d('0xf'),auth[_0xe04d('0xc')](),controller[_0xe04d('0x10')]);router[_0xe04d('0x11')]('/',auth['isAuthenticated'](),controller[_0xe04d('0x12')]);router[_0xe04d('0x13')](_0xe04d('0xf'),auth[_0xe04d('0xc')](),controller[_0xe04d('0x14')]);router[_0xe04d('0x15')](_0xe04d('0xf'),auth[_0xe04d('0xc')](),controller[_0xe04d('0x16')]);module['exports']=router;
\ No newline at end of file
index df4d0e7..7759c3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x179163,_0x516295){var _0x5a2cb2=function(_0x4f503d){while(--_0x4f503d){_0x179163['push'](_0x179163['shift']());}};_0x5a2cb2(++_0x516295);}(_0x00bb,0x1d8));var _0xb00b=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x00bb[_0x491a7f];return _0x3d8f44;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x45283b,_0xe68902){var _0x1b23f9=function(_0x34f4d9){while(--_0x34f4d9){_0x45283b['push'](_0x45283b['shift']());}};_0x1b23f9(++_0xe68902);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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 7868be0..b0b25e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe94=['reject','save','update','then','destroy','end','error','name','send','SmsTransferReport','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','count','offset','limit','set','Content-Range','json','apply'];(function(_0x59aa4f,_0x66d7c3){var _0x2c6aaf=function(_0x272140){while(--_0x272140){_0x59aa4f['push'](_0x59aa4f['shift']());}};_0x2c6aaf(++_0x66d7c3);}(_0xfe94,0x7b));var _0x4fe9=function(_0x411d08,_0x31bb00){_0x411d08=_0x411d08-0x0;var _0x45b506=_0xfe94[_0x411d08];return _0x45b506;};'use strict';var emlformat=require(_0x4fe9('0x0'));var rimraf=require(_0x4fe9('0x1'));var zipdir=require(_0x4fe9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4fe9('0x3'));var BPromise=require(_0x4fe9('0x4'));var Mustache=require(_0x4fe9('0x5'));var util=require('util');var path=require(_0x4fe9('0x6'));var sox=require(_0x4fe9('0x7'));var csv=require(_0x4fe9('0x8'));var ejs=require(_0x4fe9('0x9'));var fs=require('fs');var fs_extra=require(_0x4fe9('0xa'));var _=require(_0x4fe9('0xb'));var squel=require('squel');var crypto=require(_0x4fe9('0xc'));var jsforce=require(_0x4fe9('0xd'));var deskjs=require(_0x4fe9('0xe'));var toCsv=require(_0x4fe9('0x8'));var querystring=require(_0x4fe9('0xf'));var Papa=require(_0x4fe9('0x10'));var Redis=require(_0x4fe9('0x11'));var authService=require(_0x4fe9('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x4fe9('0x13'));var hardwareService=require(_0x4fe9('0x14'));var logger=require(_0x4fe9('0x15'))(_0x4fe9('0x16'));var utils=require(_0x4fe9('0x17'));var config=require(_0x4fe9('0x18'));var licenseUtil=require(_0x4fe9('0x19'));var db=require(_0x4fe9('0x1a'))['db'];function respondWithStatusCode(_0x197cdf,_0x3e599a){_0x3e599a=_0x3e599a||0xcc;return function(_0x2ad4b6){if(_0x2ad4b6){return _0x197cdf[_0x4fe9('0x1b')](_0x3e599a);}return _0x197cdf[_0x4fe9('0x1c')](_0x3e599a)['end']();};}function respondWithResult(_0x4bd263,_0x3ad92a){_0x3ad92a=_0x3ad92a||0xc8;return function(_0x31f9c1){if(_0x31f9c1){return _0x4bd263[_0x4fe9('0x1c')](_0x3ad92a)['json'](_0x31f9c1);}};}function respondWithFilteredResult(_0x575991,_0x5482a0){return function(_0x2c83f4){if(_0x2c83f4){var _0x2183b4=typeof _0x5482a0['offset']===_0x4fe9('0x1d')&&typeof _0x5482a0['limit']==='undefined';var _0xdbea8c=_0x2c83f4[_0x4fe9('0x1e')];var _0x45b40a=_0x2183b4?0x0:_0x5482a0['offset'];var _0x2896b5=_0x2183b4?_0x2c83f4[_0x4fe9('0x1e')]:_0x5482a0[_0x4fe9('0x1f')]+_0x5482a0[_0x4fe9('0x20')];var _0x315dc7;if(_0x2896b5>=_0xdbea8c){_0x2896b5=_0xdbea8c;_0x315dc7=0xc8;}else{_0x315dc7=0xce;}_0x575991['status'](_0x315dc7);return _0x575991[_0x4fe9('0x21')](_0x4fe9('0x22'),_0x45b40a+'-'+_0x2896b5+'/'+_0xdbea8c)[_0x4fe9('0x23')](_0x2c83f4);}return null;};}function patchUpdates(_0x395d20){return function(_0x28df13){try{jsonpatch[_0x4fe9('0x24')](_0x28df13,_0x395d20,!![]);}catch(_0x4046cb){return BPromise[_0x4fe9('0x25')](_0x4046cb);}return _0x28df13[_0x4fe9('0x26')]();};}function saveUpdates(_0x159e5c,_0x470216){return function(_0x4f36db){if(_0x4f36db){return _0x4f36db[_0x4fe9('0x27')](_0x159e5c)[_0x4fe9('0x28')](function(_0x3bc6fd){return _0x3bc6fd;});}return null;};}function removeEntity(_0x2286bc,_0x232aa0){return function(_0x4e63f6){if(_0x4e63f6){return _0x4e63f6[_0x4fe9('0x29')]()['then'](function(){_0x2286bc[_0x4fe9('0x1c')](0xcc)[_0x4fe9('0x2a')]();});}};}function handleEntityNotFound(_0x4f9edf,_0x37873a){return function(_0x568458){if(!_0x568458){_0x4f9edf['sendStatus'](0x194);}return _0x568458;};}function handleError(_0x4965a0,_0x1c0a6f){_0x1c0a6f=_0x1c0a6f||0x1f4;return function(_0x3efc1f){logger[_0x4fe9('0x2b')](_0x3efc1f['stack']);if(_0x3efc1f[_0x4fe9('0x2c')]){delete _0x3efc1f['name'];}_0x4965a0[_0x4fe9('0x1c')](_0x1c0a6f)[_0x4fe9('0x2d')](_0x3efc1f);};}exports['index']=function(_0x27ecdb,_0x58c056){var _0x432d85={},_0x5f094c={},_0x4e67f0={'count':0x0,'rows':[]};var _0x28418e=_['map'](db[_0x4fe9('0x2e')][_0x4fe9('0x2f')],function(_0x579191){return{'name':_0x579191[_0x4fe9('0x30')],'type':_0x579191[_0x4fe9('0x31')][_0x4fe9('0x32')]};});_0x5f094c[_0x4fe9('0x33')]=_[_0x4fe9('0x34')](_0x28418e,_0x4fe9('0x2c'));_0x5f094c['query']=_[_0x4fe9('0x35')](_0x27ecdb[_0x4fe9('0x36')]);_0x5f094c[_0x4fe9('0x37')]=_[_0x4fe9('0x38')](_0x5f094c[_0x4fe9('0x33')],_0x5f094c['query']);_0x432d85[_0x4fe9('0x39')]=_[_0x4fe9('0x38')](_0x5f094c[_0x4fe9('0x33')],qs[_0x4fe9('0x3a')](_0x27ecdb[_0x4fe9('0x36')][_0x4fe9('0x3a')]));_0x432d85[_0x4fe9('0x39')]=_0x432d85[_0x4fe9('0x39')][_0x4fe9('0x3b')]?_0x432d85[_0x4fe9('0x39')]:_0x5f094c[_0x4fe9('0x33')];if(!_0x27ecdb[_0x4fe9('0x36')][_0x4fe9('0x3c')]('nolimit')){_0x432d85[_0x4fe9('0x20')]=qs[_0x4fe9('0x20')](_0x27ecdb[_0x4fe9('0x36')][_0x4fe9('0x20')]);_0x432d85[_0x4fe9('0x1f')]=qs[_0x4fe9('0x1f')](_0x27ecdb[_0x4fe9('0x36')]['offset']);}_0x432d85[_0x4fe9('0x3d')]=qs[_0x4fe9('0x3e')](_0x27ecdb[_0x4fe9('0x36')][_0x4fe9('0x3e')]);_0x432d85[_0x4fe9('0x3f')]=qs[_0x4fe9('0x37')](_[_0x4fe9('0x40')](_0x27ecdb[_0x4fe9('0x36')],_0x5f094c['filters']),_0x28418e);if(_0x27ecdb[_0x4fe9('0x36')][_0x4fe9('0x41')]){_0x432d85[_0x4fe9('0x3f')]=_[_0x4fe9('0x42')](_0x432d85[_0x4fe9('0x3f')],{'$or':_[_0x4fe9('0x34')](_0x28418e,function(_0x1c65e7){if(_0x1c65e7[_0x4fe9('0x31')]!==_0x4fe9('0x43')){var _0x15985c={};_0x15985c[_0x1c65e7[_0x4fe9('0x2c')]]={'$like':'%'+_0x27ecdb[_0x4fe9('0x36')][_0x4fe9('0x41')]+'%'};return _0x15985c;}})});}_0x432d85=_['merge']({},_0x432d85,_0x27ecdb[_0x4fe9('0x44')]);var _0x4d6b6b={'where':_0x432d85[_0x4fe9('0x3f')]};return db[_0x4fe9('0x2e')][_0x4fe9('0x1e')](_0x4d6b6b)[_0x4fe9('0x28')](function(_0x5b049c){_0x4e67f0[_0x4fe9('0x1e')]=_0x5b049c;if(_0x27ecdb['query'][_0x4fe9('0x45')]){_0x432d85[_0x4fe9('0x46')]=[{'all':!![]}];}return db[_0x4fe9('0x2e')][_0x4fe9('0x47')](_0x432d85);})[_0x4fe9('0x28')](function(_0x275920){_0x4e67f0[_0x4fe9('0x48')]=_0x275920;return _0x4e67f0;})['then'](respondWithFilteredResult(_0x58c056,_0x432d85))[_0x4fe9('0x49')](handleError(_0x58c056,null));};exports[_0x4fe9('0x4a')]=function(_0x2ee35d,_0x35485d){var _0x4786d7={'raw':!![],'where':{'id':_0x2ee35d[_0x4fe9('0x4b')]['id']}},_0x393a8c={};_0x393a8c[_0x4fe9('0x33')]=_[_0x4fe9('0x35')](db['SmsTransferReport'][_0x4fe9('0x2f')]);_0x393a8c['query']=_[_0x4fe9('0x35')](_0x2ee35d[_0x4fe9('0x36')]);_0x393a8c['filters']=_['intersection'](_0x393a8c['model'],_0x393a8c[_0x4fe9('0x36')]);_0x4786d7[_0x4fe9('0x39')]=_[_0x4fe9('0x38')](_0x393a8c[_0x4fe9('0x33')],qs['fields'](_0x2ee35d[_0x4fe9('0x36')][_0x4fe9('0x3a')]));_0x4786d7[_0x4fe9('0x39')]=_0x4786d7[_0x4fe9('0x39')][_0x4fe9('0x3b')]?_0x4786d7[_0x4fe9('0x39')]:_0x393a8c[_0x4fe9('0x33')];if(_0x2ee35d[_0x4fe9('0x36')]['includeAll']){_0x4786d7[_0x4fe9('0x46')]=[{'all':!![]}];}_0x4786d7=_[_0x4fe9('0x42')]({},_0x4786d7,_0x2ee35d[_0x4fe9('0x44')]);return db[_0x4fe9('0x2e')]['find'](_0x4786d7)[_0x4fe9('0x28')](handleEntityNotFound(_0x35485d,null))[_0x4fe9('0x28')](respondWithResult(_0x35485d,null))[_0x4fe9('0x49')](handleError(_0x35485d,null));};exports[_0x4fe9('0x4c')]=function(_0x4b4fe5,_0x2ef56d){return db[_0x4fe9('0x2e')][_0x4fe9('0x4c')](_0x4b4fe5[_0x4fe9('0x4d')],{})[_0x4fe9('0x28')](respondWithResult(_0x2ef56d,0xc9))[_0x4fe9('0x49')](handleError(_0x2ef56d,null));};exports[_0x4fe9('0x27')]=function(_0x4f5dab,_0x1c81b2){if(_0x4f5dab[_0x4fe9('0x4d')]['id']){delete _0x4f5dab[_0x4fe9('0x4d')]['id'];}return db[_0x4fe9('0x2e')][_0x4fe9('0x4e')]({'where':{'id':_0x4f5dab['params']['id']}})[_0x4fe9('0x28')](handleEntityNotFound(_0x1c81b2,null))['then'](saveUpdates(_0x4f5dab[_0x4fe9('0x4d')],null))[_0x4fe9('0x28')](respondWithResult(_0x1c81b2,null))[_0x4fe9('0x49')](handleError(_0x1c81b2,null));};exports['destroy']=function(_0x39f432,_0x49c9d7){return db[_0x4fe9('0x2e')]['find']({'where':{'id':_0x39f432['params']['id']}})[_0x4fe9('0x28')](handleEntityNotFound(_0x49c9d7,null))[_0x4fe9('0x28')](removeEntity(_0x49c9d7,null))[_0x4fe9('0x49')](handleError(_0x49c9d7,null));};exports[_0x4fe9('0x4f')]=function(_0x49f6a5,_0x3d43e8){return db[_0x4fe9('0x2e')][_0x4fe9('0x4f')]()['then'](respondWithResult(_0x3d43e8,null))['catch'](handleError(_0x3d43e8,null));};
\ No newline at end of file
+var _0x12dd=['params','intersection','options','find','create','body','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','key','model','keys','query','fields','attributes','length','nolimit','order','sort','where','filters','VIRTUAL','filter','merge','includeAll','include','rows','catch','show'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0x12dd,0x18d));var _0xd12d=function(_0x31786e,_0x21d759){_0x31786e=_0x31786e-0x0;var _0x495c1d=_0x12dd[_0x31786e];return _0x495c1d;};'use strict';var emlformat=require(_0xd12d('0x0'));var rimraf=require(_0xd12d('0x1'));var zipdir=require(_0xd12d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd12d('0x3'));var BPromise=require(_0xd12d('0x4'));var Mustache=require(_0xd12d('0x5'));var util=require(_0xd12d('0x6'));var path=require(_0xd12d('0x7'));var sox=require(_0xd12d('0x8'));var csv=require(_0xd12d('0x9'));var ejs=require(_0xd12d('0xa'));var fs=require('fs');var fs_extra=require(_0xd12d('0xb'));var _=require('lodash');var squel=require(_0xd12d('0xc'));var crypto=require(_0xd12d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xd12d('0xe'));var toCsv=require(_0xd12d('0x9'));var querystring=require(_0xd12d('0xf'));var Papa=require(_0xd12d('0x10'));var Redis=require(_0xd12d('0x11'));var authService=require(_0xd12d('0x12'));var qs=require(_0xd12d('0x13'));var as=require(_0xd12d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd12d('0x15'))(_0xd12d('0x16'));var utils=require(_0xd12d('0x17'));var config=require(_0xd12d('0x18'));var licenseUtil=require(_0xd12d('0x19'));var db=require(_0xd12d('0x1a'))['db'];function respondWithStatusCode(_0x1ec4a8,_0x2515d8){_0x2515d8=_0x2515d8||0xcc;return function(_0x571f47){if(_0x571f47){return _0x1ec4a8[_0xd12d('0x1b')](_0x2515d8);}return _0x1ec4a8[_0xd12d('0x1c')](_0x2515d8)[_0xd12d('0x1d')]();};}function respondWithResult(_0x5b4458,_0x8f173d){_0x8f173d=_0x8f173d||0xc8;return function(_0x3aa92c){if(_0x3aa92c){return _0x5b4458[_0xd12d('0x1c')](_0x8f173d)[_0xd12d('0x1e')](_0x3aa92c);}};}function respondWithFilteredResult(_0x382eba,_0x13cea7){return function(_0x35f532){if(_0x35f532){var _0x446b53=typeof _0x13cea7[_0xd12d('0x1f')]==='undefined'&&typeof _0x13cea7[_0xd12d('0x20')]==='undefined';var _0x35e649=_0x35f532[_0xd12d('0x21')];var _0x267c15=_0x446b53?0x0:_0x13cea7[_0xd12d('0x1f')];var _0x346086=_0x446b53?_0x35f532[_0xd12d('0x21')]:_0x13cea7[_0xd12d('0x1f')]+_0x13cea7[_0xd12d('0x20')];var _0x465b9e;if(_0x346086>=_0x35e649){_0x346086=_0x35e649;_0x465b9e=0xc8;}else{_0x465b9e=0xce;}_0x382eba[_0xd12d('0x1c')](_0x465b9e);return _0x382eba[_0xd12d('0x22')]('Content-Range',_0x267c15+'-'+_0x346086+'/'+_0x35e649)[_0xd12d('0x1e')](_0x35f532);}return null;};}function patchUpdates(_0x449a05){return function(_0x201fef){try{jsonpatch[_0xd12d('0x23')](_0x201fef,_0x449a05,!![]);}catch(_0x450dfa){return BPromise[_0xd12d('0x24')](_0x450dfa);}return _0x201fef[_0xd12d('0x25')]();};}function saveUpdates(_0xf66d42,_0x48c038){return function(_0x51d036){if(_0x51d036){return _0x51d036[_0xd12d('0x26')](_0xf66d42)['then'](function(_0x53d7dc){return _0x53d7dc;});}return null;};}function removeEntity(_0x283572,_0x2ae531){return function(_0x361adc){if(_0x361adc){return _0x361adc[_0xd12d('0x27')]()[_0xd12d('0x28')](function(){_0x283572[_0xd12d('0x1c')](0xcc)[_0xd12d('0x1d')]();});}};}function handleEntityNotFound(_0x323806,_0x414c8d){return function(_0x4004bd){if(!_0x4004bd){_0x323806[_0xd12d('0x1b')](0x194);}return _0x4004bd;};}function handleError(_0x74688a,_0x4a414e){_0x4a414e=_0x4a414e||0x1f4;return function(_0x10dfb5){logger[_0xd12d('0x29')](_0x10dfb5[_0xd12d('0x2a')]);if(_0x10dfb5[_0xd12d('0x2b')]){delete _0x10dfb5[_0xd12d('0x2b')];}_0x74688a[_0xd12d('0x1c')](_0x4a414e)[_0xd12d('0x2c')](_0x10dfb5);};}exports[_0xd12d('0x2d')]=function(_0x23c91f,_0x18f346){var _0x161b7e={},_0x6d2c76={},_0x17ebb8={'count':0x0,'rows':[]};var _0xdd48=_[_0xd12d('0x2e')](db[_0xd12d('0x2f')][_0xd12d('0x30')],function(_0x51afe8){return{'name':_0x51afe8[_0xd12d('0x31')],'type':_0x51afe8[_0xd12d('0x32')][_0xd12d('0x33')]};});_0x6d2c76[_0xd12d('0x34')]=_[_0xd12d('0x2e')](_0xdd48,_0xd12d('0x2b'));_0x6d2c76['query']=_[_0xd12d('0x35')](_0x23c91f[_0xd12d('0x36')]);_0x6d2c76['filters']=_['intersection'](_0x6d2c76['model'],_0x6d2c76[_0xd12d('0x36')]);_0x161b7e['attributes']=_['intersection'](_0x6d2c76[_0xd12d('0x34')],qs[_0xd12d('0x37')](_0x23c91f[_0xd12d('0x36')][_0xd12d('0x37')]));_0x161b7e[_0xd12d('0x38')]=_0x161b7e[_0xd12d('0x38')][_0xd12d('0x39')]?_0x161b7e[_0xd12d('0x38')]:_0x6d2c76[_0xd12d('0x34')];if(!_0x23c91f['query']['hasOwnProperty'](_0xd12d('0x3a'))){_0x161b7e[_0xd12d('0x20')]=qs[_0xd12d('0x20')](_0x23c91f[_0xd12d('0x36')][_0xd12d('0x20')]);_0x161b7e[_0xd12d('0x1f')]=qs[_0xd12d('0x1f')](_0x23c91f[_0xd12d('0x36')][_0xd12d('0x1f')]);}_0x161b7e[_0xd12d('0x3b')]=qs[_0xd12d('0x3c')](_0x23c91f[_0xd12d('0x36')][_0xd12d('0x3c')]);_0x161b7e[_0xd12d('0x3d')]=qs[_0xd12d('0x3e')](_['pick'](_0x23c91f['query'],_0x6d2c76[_0xd12d('0x3e')]),_0xdd48);if(_0x23c91f[_0xd12d('0x36')]['filter']){_0x161b7e[_0xd12d('0x3d')]=_['merge'](_0x161b7e[_0xd12d('0x3d')],{'$or':_['map'](_0xdd48,function(_0xd91ca3){if(_0xd91ca3['type']!==_0xd12d('0x3f')){var _0x3391f1={};_0x3391f1[_0xd91ca3['name']]={'$like':'%'+_0x23c91f['query'][_0xd12d('0x40')]+'%'};return _0x3391f1;}})});}_0x161b7e=_[_0xd12d('0x41')]({},_0x161b7e,_0x23c91f['options']);var _0x57a9b5={'where':_0x161b7e[_0xd12d('0x3d')]};return db[_0xd12d('0x2f')]['count'](_0x57a9b5)[_0xd12d('0x28')](function(_0x4e7f01){_0x17ebb8[_0xd12d('0x21')]=_0x4e7f01;if(_0x23c91f[_0xd12d('0x36')][_0xd12d('0x42')]){_0x161b7e[_0xd12d('0x43')]=[{'all':!![]}];}return db['SmsTransferReport']['findAll'](_0x161b7e);})[_0xd12d('0x28')](function(_0x5df8de){_0x17ebb8[_0xd12d('0x44')]=_0x5df8de;return _0x17ebb8;})[_0xd12d('0x28')](respondWithFilteredResult(_0x18f346,_0x161b7e))[_0xd12d('0x45')](handleError(_0x18f346,null));};exports[_0xd12d('0x46')]=function(_0x47036b,_0x2f6f17){var _0x5b669a={'raw':!![],'where':{'id':_0x47036b[_0xd12d('0x47')]['id']}},_0x373add={};_0x373add[_0xd12d('0x34')]=_['keys'](db[_0xd12d('0x2f')]['rawAttributes']);_0x373add[_0xd12d('0x36')]=_['keys'](_0x47036b[_0xd12d('0x36')]);_0x373add['filters']=_[_0xd12d('0x48')](_0x373add[_0xd12d('0x34')],_0x373add[_0xd12d('0x36')]);_0x5b669a[_0xd12d('0x38')]=_[_0xd12d('0x48')](_0x373add[_0xd12d('0x34')],qs[_0xd12d('0x37')](_0x47036b['query'][_0xd12d('0x37')]));_0x5b669a['attributes']=_0x5b669a[_0xd12d('0x38')][_0xd12d('0x39')]?_0x5b669a[_0xd12d('0x38')]:_0x373add[_0xd12d('0x34')];if(_0x47036b[_0xd12d('0x36')][_0xd12d('0x42')]){_0x5b669a[_0xd12d('0x43')]=[{'all':!![]}];}_0x5b669a=_[_0xd12d('0x41')]({},_0x5b669a,_0x47036b[_0xd12d('0x49')]);return db[_0xd12d('0x2f')][_0xd12d('0x4a')](_0x5b669a)[_0xd12d('0x28')](handleEntityNotFound(_0x2f6f17,null))[_0xd12d('0x28')](respondWithResult(_0x2f6f17,null))[_0xd12d('0x45')](handleError(_0x2f6f17,null));};exports[_0xd12d('0x4b')]=function(_0x4fd6c0,_0x31d8cd){return db[_0xd12d('0x2f')][_0xd12d('0x4b')](_0x4fd6c0[_0xd12d('0x4c')],{})[_0xd12d('0x28')](respondWithResult(_0x31d8cd,0xc9))[_0xd12d('0x45')](handleError(_0x31d8cd,null));};exports[_0xd12d('0x26')]=function(_0x10ccdd,_0x5aa9fb){if(_0x10ccdd['body']['id']){delete _0x10ccdd[_0xd12d('0x4c')]['id'];}return db['SmsTransferReport'][_0xd12d('0x4a')]({'where':{'id':_0x10ccdd['params']['id']}})['then'](handleEntityNotFound(_0x5aa9fb,null))[_0xd12d('0x28')](saveUpdates(_0x10ccdd['body'],null))['then'](respondWithResult(_0x5aa9fb,null))['catch'](handleError(_0x5aa9fb,null));};exports['destroy']=function(_0x351036,_0xaed58c){return db['SmsTransferReport'][_0xd12d('0x4a')]({'where':{'id':_0x351036[_0xd12d('0x47')]['id']}})[_0xd12d('0x28')](handleEntityNotFound(_0xaed58c,null))[_0xd12d('0x28')](removeEntity(_0xaed58c,null))[_0xd12d('0x45')](handleError(_0xaed58c,null));};exports['describe']=function(_0x58eb4d,_0x34b663){return db[_0xd12d('0x2f')][_0xd12d('0x4d')]()['then'](respondWithResult(_0x34b663,null))[_0xd12d('0x45')](handleError(_0x34b663,null));};
\ No newline at end of file
index 7a0e419..80486a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24e2=['rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','uniqueid','lodash','util','api','moment','bluebird','request-promise'];(function(_0x9cb341,_0x2469a5){var _0x4f5790=function(_0x56deee){while(--_0x56deee){_0x9cb341['push'](_0x9cb341['shift']());}};_0x4f5790(++_0x2469a5);}(_0x24e2,0x1c1));var _0x224e=function(_0x55f2f4,_0x20b686){_0x55f2f4=_0x55f2f4-0x0;var _0x3bcdbb=_0x24e2[_0x55f2f4];return _0x3bcdbb;};'use strict';var _=require(_0x224e('0x0'));var util=require(_0x224e('0x1'));var logger=require('../../config/logger')(_0x224e('0x2'));var moment=require(_0x224e('0x3'));var BPromise=require(_0x224e('0x4'));var rp=require(_0x224e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x224e('0x6'));var config=require(_0x224e('0x7'));var attributes=require(_0x224e('0x8'));module[_0x224e('0x9')]=function(_0x565234,_0x2a76e8){return _0x565234[_0x224e('0xa')](_0x224e('0xb'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x224e('0xc'),'fields':[_0x224e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd2b4=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsTransferReport.attributes','exports','SmsTransferReport','uniqueid','util','api'];(function(_0xbf19d7,_0x58b2bf){var _0x376e11=function(_0x5ab888){while(--_0x5ab888){_0xbf19d7['push'](_0xbf19d7['shift']());}};_0x376e11(++_0x58b2bf);}(_0xd2b4,0xa6));var _0x4d2b=function(_0x11f0e3,_0x5170bc){_0x11f0e3=_0x11f0e3-0x0;var _0x2892e8=_0xd2b4[_0x11f0e3];return _0x2892e8;};'use strict';var _=require('lodash');var util=require(_0x4d2b('0x0'));var logger=require('../../config/logger')(_0x4d2b('0x1'));var moment=require(_0x4d2b('0x2'));var BPromise=require(_0x4d2b('0x3'));var rp=require(_0x4d2b('0x4'));var fs=require('fs');var path=require(_0x4d2b('0x5'));var rimraf=require(_0x4d2b('0x6'));var config=require(_0x4d2b('0x7'));var attributes=require(_0x4d2b('0x8'));module[_0x4d2b('0x9')]=function(_0x168b12,_0x5d1f36){return _0x168b12['define'](_0x4d2b('0xa'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x4d2b('0xb'),'fields':[_0x4d2b('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index e0c87d4..ff8fc64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ce=['message','info','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xd7ce,0x16b));var _0xed7c=function(_0x356e8d,_0x24c719){_0x356e8d=_0x356e8d-0x0;var _0x39e65a=_0xd7ce[_0x356e8d];return _0x39e65a;};'use strict';var _=require(_0xed7c('0x0'));var util=require(_0xed7c('0x1'));var moment=require(_0xed7c('0x2'));var BPromise=require(_0xed7c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xed7c('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xed7c('0x5'));var jayson=require(_0xed7c('0x6'));var client=jayson[_0xed7c('0x7')][_0xed7c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x34bbd7,_0x43a9e7,_0x41afb9){return new BPromise(function(_0x270db6,_0x190af8){return client[_0xed7c('0x9')](_0x34bbd7,_0x41afb9)[_0xed7c('0xa')](function(_0x2a2a61){logger['info'](_0xed7c('0xb'),_0x43a9e7,_0xed7c('0xc'));logger[_0xed7c('0xd')](_0xed7c('0xe'),_0x43a9e7,_0xed7c('0xc'),JSON[_0xed7c('0xf')](_0x2a2a61));if(_0x2a2a61['error']){if(_0x2a2a61[_0xed7c('0x10')]['code']===0x1f4){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x43a9e7,_0x2a2a61[_0xed7c('0x10')][_0xed7c('0x11')]);return _0x190af8(_0x2a2a61[_0xed7c('0x10')]['message']);}logger['error'](_0xed7c('0xb'),_0x43a9e7,_0x2a2a61['error'][_0xed7c('0x11')]);return _0x270db6(_0x2a2a61[_0xed7c('0x10')]['message']);}else{logger[_0xed7c('0x12')](_0xed7c('0xb'),_0x43a9e7,'request\x20sent');_0x270db6(_0x2a2a61['result'][_0xed7c('0x11')]);}})[_0xed7c('0x13')](function(_0x358e3b){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x43a9e7,_0x358e3b);_0x190af8(_0x358e3b);});});}
\ No newline at end of file
+var _0x98a8=['request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3f0482,_0x346c5f){var _0x42607a=function(_0x4ebf49){while(--_0x4ebf49){_0x3f0482['push'](_0x3f0482['shift']());}};_0x42607a(++_0x346c5f);}(_0x98a8,0x12c));var _0x898a=function(_0x29fff8,_0x219ed1){_0x29fff8=_0x29fff8-0x0;var _0x41bcbb=_0x98a8[_0x29fff8];return _0x41bcbb;};'use strict';var _=require(_0x898a('0x0'));var util=require(_0x898a('0x1'));var moment=require(_0x898a('0x2'));var BPromise=require(_0x898a('0x3'));var rs=require(_0x898a('0x4'));var fs=require('fs');var Redis=require(_0x898a('0x5'));var db=require(_0x898a('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x898a('0x7'))(_0x898a('0x8'));var config=require(_0x898a('0x9'));var jayson=require(_0x898a('0xa'));var client=jayson[_0x898a('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3aadc2,_0x564583,_0xfa8c50){return new BPromise(function(_0x4fbce5,_0x42021d){return client[_0x898a('0xc')](_0x3aadc2,_0xfa8c50)[_0x898a('0xd')](function(_0x96b636){logger[_0x898a('0xe')](_0x898a('0xf'),_0x564583,_0x898a('0x10'));logger[_0x898a('0x11')](_0x898a('0x12'),_0x564583,'request\x20sent',JSON[_0x898a('0x13')](_0x96b636));if(_0x96b636['error']){if(_0x96b636[_0x898a('0x14')]['code']===0x1f4){logger[_0x898a('0x14')](_0x898a('0xf'),_0x564583,_0x96b636[_0x898a('0x14')]['message']);return _0x42021d(_0x96b636['error']['message']);}logger[_0x898a('0x14')](_0x898a('0xf'),_0x564583,_0x96b636[_0x898a('0x14')][_0x898a('0x15')]);return _0x4fbce5(_0x96b636[_0x898a('0x14')][_0x898a('0x15')]);}else{logger['info'](_0x898a('0xf'),_0x564583,'request\x20sent');_0x4fbce5(_0x96b636[_0x898a('0x16')]['message']);}})[_0x898a('0x17')](function(_0x4fb05b){logger[_0x898a('0x14')]('SmsTransferReport,\x20%s,\x20%s',_0x564583,_0x4fb05b);_0x42021d(_0x4fb05b);});});}
\ No newline at end of file
index 0887d70..b38bc11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe961=['post','create','put','update','delete','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','get','isAuthenticated','/:id','show','/:id/download','download','join','root','server/files/sounds/original/','originalname','replace','%s-%s%s','basename','now'];(function(_0x2181b1,_0x569637){var _0x530548=function(_0x4b31f1){while(--_0x4b31f1){_0x2181b1['push'](_0x2181b1['shift']());}};_0x530548(++_0x569637);}(_0xe961,0xb4));var _0x1e96=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xe961[_0x4fc9e6];return _0x551d28;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1e96('0x0'));var timeout=require(_0x1e96('0x1'));var express=require(_0x1e96('0x2'));var router=express[_0x1e96('0x3')]();var fs_extra=require(_0x1e96('0x4'));var auth=require(_0x1e96('0x5'));var interaction=require(_0x1e96('0x6'));var config=require(_0x1e96('0x7'));var controller=require(_0x1e96('0x8'));router[_0x1e96('0x9')]('/',auth[_0x1e96('0xa')](),controller['index']);router[_0x1e96('0x9')](_0x1e96('0xb'),auth['isAuthenticated'](),controller[_0x1e96('0xc')]);router[_0x1e96('0x9')](_0x1e96('0xd'),auth[_0x1e96('0xa')](),controller[_0x1e96('0xe')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x529b26,_0x2466d1,_0x1d532a){_0x1d532a(null,path[_0x1e96('0xf')](config[_0x1e96('0x10')],_0x1e96('0x11')));},'filename':function(_0x961e45,_0x4302f2,_0x539633){_0x4302f2[_0x1e96('0x12')]=_0x4302f2[_0x1e96('0x12')][_0x1e96('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x539633(null,util['format'](_0x1e96('0x14'),path[_0x1e96('0x15')](_0x4302f2[_0x1e96('0x12')],path['extname'](_0x4302f2['originalname'])),Date[_0x1e96('0x16')](),path['extname'](_0x4302f2[_0x1e96('0x12')])));}})});router[_0x1e96('0x17')]('/',upload['single']('file'),controller[_0x1e96('0x18')]);router[_0x1e96('0x19')](_0x1e96('0xb'),auth[_0x1e96('0xa')](),controller[_0x1e96('0x1a')]);router['delete'](_0x1e96('0xb'),auth[_0x1e96('0xa')](),controller[_0x1e96('0x1b')]);module[_0x1e96('0x1c')]=router;
\ No newline at end of file
+var _0x4c49=['/:id/download','diskStorage','join','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','extname','post','single','file','create','put','update','delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./sound.controller','isAuthenticated','index','/:id','show'];(function(_0x3be6c1,_0x424a9e){var _0x33086c=function(_0xb77874){while(--_0xb77874){_0x3be6c1['push'](_0x3be6c1['shift']());}};_0x33086c(++_0x424a9e);}(_0x4c49,0xc6));var _0x94c4=function(_0x14e67b,_0x18dc05){_0x14e67b=_0x14e67b-0x0;var _0x2f615b=_0x4c49[_0x14e67b];return _0x2f615b;};'use strict';var multer=require(_0x94c4('0x0'));var util=require(_0x94c4('0x1'));var path=require('path');var timeout=require(_0x94c4('0x2'));var express=require('express');var router=express[_0x94c4('0x3')]();var fs_extra=require(_0x94c4('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x94c4('0x5'));var config=require(_0x94c4('0x6'));var controller=require(_0x94c4('0x7'));router['get']('/',auth[_0x94c4('0x8')](),controller[_0x94c4('0x9')]);router['get'](_0x94c4('0xa'),auth[_0x94c4('0x8')](),controller[_0x94c4('0xb')]);router['get'](_0x94c4('0xc'),auth[_0x94c4('0x8')](),controller['download']);var upload=multer({'storage':multer[_0x94c4('0xd')]({'destination':function(_0x3787b1,_0x5a448a,_0x40d738){_0x40d738(null,path[_0x94c4('0xe')](config['root'],_0x94c4('0xf')));},'filename':function(_0x8c61ee,_0x30baed,_0x5ccc79){_0x30baed[_0x94c4('0x10')]=_0x30baed[_0x94c4('0x10')][_0x94c4('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5ccc79(null,util[_0x94c4('0x12')](_0x94c4('0x13'),path[_0x94c4('0x14')](_0x30baed[_0x94c4('0x10')],path[_0x94c4('0x15')](_0x30baed[_0x94c4('0x10')])),Date['now'](),path[_0x94c4('0x15')](_0x30baed[_0x94c4('0x10')])));}})});router[_0x94c4('0x16')]('/',upload[_0x94c4('0x17')](_0x94c4('0x18')),controller[_0x94c4('0x19')]);router[_0x94c4('0x1a')](_0x94c4('0xa'),auth[_0x94c4('0x8')](),controller[_0x94c4('0x1b')]);router[_0x94c4('0x1c')](_0x94c4('0xa'),auth[_0x94c4('0x8')](),controller[_0x94c4('0x1c')]);module[_0x94c4('0x1d')]=router;
\ No newline at end of file
index 388fedf..5df80c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8c0=['BIGINT','INTEGER','sequelize','STRING','name','FLOAT'];(function(_0x28e189,_0xcd9979){var _0x38f4f2=function(_0x39fb58){while(--_0x39fb58){_0x28e189['push'](_0x28e189['shift']());}};_0x38f4f2(++_0xcd9979);}(_0xb8c0,0x7a));var _0x0b8c=function(_0x4dfb62,_0x9a3a13){_0x4dfb62=_0x4dfb62-0x0;var _0x426b11=_0xb8c0[_0x4dfb62];return _0x426b11;};'use strict';var Sequelize=require(_0x0b8c('0x0'));module['exports']={'name':{'type':Sequelize[_0x0b8c('0x1')],'unique':_0x0b8c('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x0b8c('0x1')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0x0b8c('0x1')]},'original_format':{'type':Sequelize[_0x0b8c('0x1')]},'original_duration':{'type':Sequelize[_0x0b8c('0x3')]},'original_sampleCount':{'type':Sequelize[_0x0b8c('0x4')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0x0b8c('0x1')]},'converted_duration':{'type':Sequelize[_0x0b8c('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x0b8c('0x4')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0x0b8c('0x5')]}};
\ No newline at end of file
+var _0xd8b8=['INTEGER','sequelize','name','STRING','FLOAT','BIGINT'];(function(_0x464f28,_0x143bdc){var _0x281e96=function(_0x28ca26){while(--_0x28ca26){_0x464f28['push'](_0x464f28['shift']());}};_0x281e96(++_0x143bdc);}(_0xd8b8,0x67));var _0x8d8b=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xd8b8[_0x1cc8fe];return _0x230054;};'use strict';var Sequelize=require(_0x8d8b('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x8d8b('0x1'),'allowNull':![]},'save_name':{'type':Sequelize[_0x8d8b('0x2')]},'display_name':{'type':Sequelize[_0x8d8b('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0x8d8b('0x2')]},'original_format':{'type':Sequelize[_0x8d8b('0x2')]},'original_duration':{'type':Sequelize[_0x8d8b('0x3')]},'original_sampleCount':{'type':Sequelize[_0x8d8b('0x4')]},'original_channelCount':{'type':Sequelize[_0x8d8b('0x5')]},'original_bitRate':{'type':Sequelize[_0x8d8b('0x4')]},'original_sampleRate':{'type':Sequelize[_0x8d8b('0x5')]},'converted_format':{'type':Sequelize[_0x8d8b('0x2')]},'converted_duration':{'type':Sequelize[_0x8d8b('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x8d8b('0x4')]},'converted_channelCount':{'type':Sequelize[_0x8d8b('0x5')]},'converted_bitRate':{'type':Sequelize[_0x8d8b('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x8d8b('0x5')]}};
\ No newline at end of file
index edbc206..3a21994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd678=['sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','then','get','UserProfileResource','error','stack','name','send','index','map','Sound','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','rawAttributes','length','find','download','save_name','converted_format','join','root','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','format','%s.%s','create','basename','file','extname','originalname','filename','substring','wav','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','bitRate','converted_sampleRate','body','role','userProfileId','user','UserProfileSection','Sounds','autoAssociation','pick','description','delete','destroy','server/files/sounds/original','original_format','unlinkSync','eml-format','fast-json-patch','moment','mustache','util','path'];(function(_0x3e4c83,_0x452e37){var _0x39d6d7=function(_0x814bc9){while(--_0x814bc9){_0x3e4c83['push'](_0x3e4c83['shift']());}};_0x39d6d7(++_0x452e37);}(_0xd678,0x7b));var _0x8d67=function(_0x26da89,_0x264785){_0x26da89=_0x26da89-0x0;var _0xc95b7b=_0xd678[_0x26da89];return _0xc95b7b;};'use strict';var emlformat=require(_0x8d67('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8d67('0x1'));var rp=require('request-promise');var moment=require(_0x8d67('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x8d67('0x3'));var util=require(_0x8d67('0x4'));var path=require(_0x8d67('0x5'));var sox=require(_0x8d67('0x6'));var csv=require(_0x8d67('0x7'));var ejs=require(_0x8d67('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8d67('0x9'));var crypto=require(_0x8d67('0xa'));var jsforce=require(_0x8d67('0xb'));var deskjs=require(_0x8d67('0xc'));var toCsv=require(_0x8d67('0x7'));var querystring=require(_0x8d67('0xd'));var Papa=require(_0x8d67('0xe'));var Redis=require(_0x8d67('0xf'));var authService=require(_0x8d67('0x10'));var qs=require(_0x8d67('0x11'));var as=require(_0x8d67('0x12'));var hardwareService=require(_0x8d67('0x13'));var logger=require(_0x8d67('0x14'))(_0x8d67('0x15'));var utils=require(_0x8d67('0x16'));var config=require(_0x8d67('0x17'));var licenseUtil=require(_0x8d67('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x20b405,_0x421185){_0x421185=_0x421185||0xcc;return function(_0xd0cca){if(_0xd0cca){return _0x20b405[_0x8d67('0x19')](_0x421185);}return _0x20b405[_0x8d67('0x1a')](_0x421185)[_0x8d67('0x1b')]();};}function respondWithResult(_0x5388bc,_0x16b32e){_0x16b32e=_0x16b32e||0xc8;return function(_0x4a098c){if(_0x4a098c){return _0x5388bc['status'](_0x16b32e)[_0x8d67('0x1c')](_0x4a098c);}};}function respondWithFilteredResult(_0x3f3f76,_0xbe909e){return function(_0x29c97e){if(_0x29c97e){var _0x249cc5=typeof _0xbe909e['offset']===_0x8d67('0x1d')&&typeof _0xbe909e[_0x8d67('0x1e')]==='undefined';var _0x40f343=_0x29c97e[_0x8d67('0x1f')];var _0x131e32=_0x249cc5?0x0:_0xbe909e[_0x8d67('0x20')];var _0x37559c=_0x249cc5?_0x29c97e[_0x8d67('0x1f')]:_0xbe909e[_0x8d67('0x20')]+_0xbe909e['limit'];var _0x4e63e2;if(_0x37559c>=_0x40f343){_0x37559c=_0x40f343;_0x4e63e2=0xc8;}else{_0x4e63e2=0xce;}_0x3f3f76['status'](_0x4e63e2);return _0x3f3f76[_0x8d67('0x21')]('Content-Range',_0x131e32+'-'+_0x37559c+'/'+_0x40f343)[_0x8d67('0x1c')](_0x29c97e);}return null;};}function patchUpdates(_0x1b8cae){return function(_0x1e381a){try{jsonpatch[_0x8d67('0x22')](_0x1e381a,_0x1b8cae,!![]);}catch(_0x39c3c2){return BPromise[_0x8d67('0x23')](_0x39c3c2);}return _0x1e381a[_0x8d67('0x24')]();};}function saveUpdates(_0x16f525,_0x2446c5){return function(_0x558079){if(_0x558079){return _0x558079[_0x8d67('0x25')](_0x16f525)[_0x8d67('0x26')](function(_0x42af96){return _0x42af96;});}return null;};}function removeEntity(_0x84974e,_0x43fe83){return function(_0x5a7c2d){if(_0x5a7c2d){return _0x5a7c2d['destroy']()[_0x8d67('0x26')](function(){var _0x25762d=_0x5a7c2d[_0x8d67('0x27')]({'plain':!![]});var _0x40a9d2='Sounds';return db[_0x8d67('0x28')]['destroy']({'where':{'type':_0x40a9d2,'resourceId':_0x25762d['id']}})[_0x8d67('0x26')](function(){return _0x5a7c2d;});})[_0x8d67('0x26')](function(){_0x84974e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x20dc26,_0x596175){return function(_0x51b407){if(!_0x51b407){_0x20dc26[_0x8d67('0x19')](0x194);}return _0x51b407;};}function handleError(_0x362dd4,_0x312327){_0x312327=_0x312327||0x1f4;return function(_0x15ce81){logger[_0x8d67('0x29')](_0x15ce81[_0x8d67('0x2a')]);if(_0x15ce81[_0x8d67('0x2b')]){delete _0x15ce81['name'];}_0x362dd4['status'](_0x312327)[_0x8d67('0x2c')](_0x15ce81);};}exports[_0x8d67('0x2d')]=function(_0x58c419,_0x3c7e31){var _0x4607e3={},_0x54a3e3={},_0x6ad0ad={'count':0x0,'rows':[]};var _0x5400ea=_[_0x8d67('0x2e')](db[_0x8d67('0x2f')]['rawAttributes'],function(_0x13cd77){return{'name':_0x13cd77[_0x8d67('0x30')],'type':_0x13cd77[_0x8d67('0x31')][_0x8d67('0x32')]};});_0x54a3e3[_0x8d67('0x33')]=_['map'](_0x5400ea,_0x8d67('0x2b'));_0x54a3e3[_0x8d67('0x34')]=_['keys'](_0x58c419[_0x8d67('0x34')]);_0x54a3e3[_0x8d67('0x35')]=_[_0x8d67('0x36')](_0x54a3e3[_0x8d67('0x33')],_0x54a3e3['query']);_0x4607e3['attributes']=_[_0x8d67('0x36')](_0x54a3e3[_0x8d67('0x33')],qs[_0x8d67('0x37')](_0x58c419['query'][_0x8d67('0x37')]));_0x4607e3[_0x8d67('0x38')]=_0x4607e3[_0x8d67('0x38')]['length']?_0x4607e3[_0x8d67('0x38')]:_0x54a3e3['model'];if(!_0x58c419[_0x8d67('0x34')][_0x8d67('0x39')](_0x8d67('0x3a'))){_0x4607e3[_0x8d67('0x1e')]=qs['limit'](_0x58c419['query'][_0x8d67('0x1e')]);_0x4607e3[_0x8d67('0x20')]=qs[_0x8d67('0x20')](_0x58c419[_0x8d67('0x34')]['offset']);}_0x4607e3[_0x8d67('0x3b')]=qs['sort'](_0x58c419[_0x8d67('0x34')][_0x8d67('0x3c')]);_0x4607e3['where']=qs[_0x8d67('0x35')](_['pick'](_0x58c419['query'],_0x54a3e3['filters']),_0x5400ea);if(_0x58c419['query'][_0x8d67('0x3d')]){_0x4607e3[_0x8d67('0x3e')]=_[_0x8d67('0x3f')](_0x4607e3[_0x8d67('0x3e')],{'$or':_[_0x8d67('0x2e')](_0x5400ea,function(_0x506e7e){if(_0x506e7e[_0x8d67('0x31')]!==_0x8d67('0x40')){var _0x1ec6d9={};_0x1ec6d9[_0x506e7e[_0x8d67('0x2b')]]={'$like':'%'+_0x58c419['query'][_0x8d67('0x3d')]+'%'};return _0x1ec6d9;}})});}_0x4607e3=_[_0x8d67('0x3f')]({},_0x4607e3,_0x58c419[_0x8d67('0x41')]);var _0x15e298={'where':_0x4607e3['where']};return db[_0x8d67('0x2f')]['count'](_0x15e298)['then'](function(_0x371c24){_0x6ad0ad[_0x8d67('0x1f')]=_0x371c24;if(_0x58c419[_0x8d67('0x34')][_0x8d67('0x42')]){_0x4607e3[_0x8d67('0x43')]=[{'all':!![]}];}return db['Sound']['findAll'](_0x4607e3);})['then'](function(_0xdbc48a){_0x6ad0ad[_0x8d67('0x44')]=_0xdbc48a;return _0x6ad0ad;})['then'](respondWithFilteredResult(_0x3c7e31,_0x4607e3))[_0x8d67('0x45')](handleError(_0x3c7e31,null));};exports[_0x8d67('0x46')]=function(_0x3955dd,_0x83c822){var _0x55bb7a={'raw':!![],'where':{'id':_0x3955dd[_0x8d67('0x47')]['id']}},_0xb81da8={};_0xb81da8['model']=_[_0x8d67('0x48')](db[_0x8d67('0x2f')][_0x8d67('0x49')]);_0xb81da8[_0x8d67('0x34')]=_[_0x8d67('0x48')](_0x3955dd[_0x8d67('0x34')]);_0xb81da8[_0x8d67('0x35')]=_[_0x8d67('0x36')](_0xb81da8[_0x8d67('0x33')],_0xb81da8[_0x8d67('0x34')]);_0x55bb7a['attributes']=_[_0x8d67('0x36')](_0xb81da8[_0x8d67('0x33')],qs[_0x8d67('0x37')](_0x3955dd[_0x8d67('0x34')][_0x8d67('0x37')]));_0x55bb7a['attributes']=_0x55bb7a[_0x8d67('0x38')][_0x8d67('0x4a')]?_0x55bb7a['attributes']:_0xb81da8['model'];if(_0x3955dd[_0x8d67('0x34')][_0x8d67('0x42')]){_0x55bb7a[_0x8d67('0x43')]=[{'all':!![]}];}_0x55bb7a=_['merge']({},_0x55bb7a,_0x3955dd['options']);return db['Sound'][_0x8d67('0x4b')](_0x55bb7a)['then'](handleEntityNotFound(_0x83c822,null))['then'](respondWithResult(_0x83c822,null))[_0x8d67('0x45')](handleError(_0x83c822,null));};exports[_0x8d67('0x4c')]=function(_0x262e81,_0x5e080c,_0x26e947){return db[_0x8d67('0x2f')]['find']({'where':{'id':_0x262e81[_0x8d67('0x47')]['id']},'attributes':[_0x8d67('0x2b'),_0x8d67('0x4d'),_0x8d67('0x4e')],'raw':!![]})[_0x8d67('0x26')](handleEntityNotFound(_0x5e080c,null))['then'](function(_0x173925){if(_0x173925){if(!fs['existsSync'](path[_0x8d67('0x4f')](config[_0x8d67('0x50')],_0x8d67('0x51'),_0x173925[_0x8d67('0x4d')]+'.'+_0x173925[_0x8d67('0x4e')]))){throw new db['Sequelize'][(_0x8d67('0x52'))](_0x8d67('0x53'));}return _0x5e080c[_0x8d67('0x4c')](path[_0x8d67('0x4f')](config[_0x8d67('0x50')],_0x8d67('0x51'),util[_0x8d67('0x54')](_0x8d67('0x55'),_0x173925[_0x8d67('0x4d')],_0x173925[_0x8d67('0x4e')])),util[_0x8d67('0x54')](_0x8d67('0x55'),_0x173925['name'],_0x173925['converted_format']));}return null;})['catch'](handleError(_0x5e080c,null));};exports[_0x8d67('0x56')]=function(_0x353c74,_0x51d498,_0x24edff){var _0xc8736={'name':path[_0x8d67('0x57')](_0x353c74[_0x8d67('0x58')]['originalname'],path[_0x8d67('0x59')](_0x353c74[_0x8d67('0x58')][_0x8d67('0x5a')])),'save_name':path[_0x8d67('0x57')](_0x353c74['file'][_0x8d67('0x5b')],path[_0x8d67('0x59')](_0x353c74[_0x8d67('0x58')][_0x8d67('0x5b')])),'original_format':path[_0x8d67('0x59')](_0x353c74[_0x8d67('0x58')][_0x8d67('0x5a')])[_0x8d67('0x5c')](0x1),'converted_format':_0x8d67('0x5d')};var _0x28fdfc=path['join'](config[_0x8d67('0x50')],'server/files/sounds/original',_0x353c74[_0x8d67('0x58')][_0x8d67('0x5b')]);var _0x3898e3=path[_0x8d67('0x4f')](config[_0x8d67('0x50')],_0x8d67('0x51'),util['format'](_0x8d67('0x55'),path['basename'](_0x353c74[_0x8d67('0x58')][_0x8d67('0x5b')],path[_0x8d67('0x59')](_0x353c74[_0x8d67('0x58')][_0x8d67('0x5b')])),_0xc8736[_0x8d67('0x4e')]));logger[_0x8d67('0x5e')](_0x8d67('0x5f'),_0x28fdfc);logger[_0x8d67('0x5e')](_0x8d67('0x60'),_0x3898e3);try{fs[_0x8d67('0x61')](_0x28fdfc,parseInt(_0x8d67('0x62'),0x8));var _0x15e21b=sox[_0x8d67('0x63')](_0x28fdfc,_0x3898e3,{'sampleRate':0x1f40,'format':_0x8d67('0x5d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x15e21b['on'](_0x8d67('0x29'),function(_0x1c3084){fs['unlinkSync'](_0x28fdfc);_0x51d498[_0x8d67('0x1a')](0x1f4)['send'](_0x1c3084);});_0x15e21b['on']('src',function(_0x67c1aa){_0xc8736[_0x8d67('0x64')]=isNaN(_0x67c1aa[_0x8d67('0x65')])?null:_0x67c1aa[_0x8d67('0x65')]*0x3e8;_0xc8736[_0x8d67('0x66')]=isNaN(_0x67c1aa[_0x8d67('0x67')])?null:_0x67c1aa['sampleCount'];_0xc8736[_0x8d67('0x68')]=isNaN(_0x67c1aa[_0x8d67('0x69')])?null:_0x67c1aa[_0x8d67('0x69')];_0xc8736[_0x8d67('0x6a')]=isNaN(_0x67c1aa['bitRate'])?null:_0x67c1aa['bitRate'];_0xc8736[_0x8d67('0x6b')]=isNaN(_0x67c1aa[_0x8d67('0x6c')])?null:_0x67c1aa[_0x8d67('0x6c')];});_0x15e21b['on'](_0x8d67('0x6d'),function(_0x3c124e){_0xc8736[_0x8d67('0x6e')]=isNaN(_0x3c124e[_0x8d67('0x65')])?null:_0x3c124e[_0x8d67('0x65')]*0x3e8;_0xc8736[_0x8d67('0x6f')]=isNaN(_0x3c124e[_0x8d67('0x67')])?null:_0x3c124e[_0x8d67('0x67')];_0xc8736[_0x8d67('0x70')]=isNaN(_0x3c124e[_0x8d67('0x69')])?null:_0x3c124e[_0x8d67('0x69')];_0xc8736['converted_bitRate']=isNaN(_0x3c124e[_0x8d67('0x71')])?null:_0x3c124e[_0x8d67('0x71')];_0xc8736[_0x8d67('0x72')]=isNaN(_0x3c124e[_0x8d67('0x6c')])?null:_0x3c124e[_0x8d67('0x6c')];});_0x15e21b['on']('end',function(){fs[_0x8d67('0x61')](_0x3898e3,parseInt(_0x8d67('0x62'),0x8));return db['Sound'][_0x8d67('0x56')](_0xc8736)[_0x8d67('0x26')](function(_0x2de64b){var _0x13edec={'role':_0x353c74[_0x8d67('0x73')][_0x8d67('0x74')],'userProfileId':_0x353c74['body'][_0x8d67('0x75')]};if(!_0x13edec)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x13edec[_0x8d67('0x74')]===_0x8d67('0x76')){var _0x14cd4f=_0x2de64b[_0x8d67('0x27')]({'plain':!![]});return db[_0x8d67('0x77')][_0x8d67('0x4b')]({'where':{'name':_0x8d67('0x78'),'userProfileId':_0x13edec['userProfileId']},'raw':!![]})[_0x8d67('0x26')](function(_0x347546){if(_0x347546&&_0x347546[_0x8d67('0x79')]===0x0){return db[_0x8d67('0x28')]['create']({'name':_0x14cd4f['name'],'resourceId':_0x14cd4f['id'],'type':_0x347546[_0x8d67('0x2b')],'sectionId':_0x347546['id']},{})[_0x8d67('0x26')](function(){return _0x2de64b;});}else{return _0x2de64b;}})['catch'](function(_0x20e1fa){logger[_0x8d67('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x20e1fa);throw _0x20e1fa;});}return _0x2de64b;})[_0x8d67('0x26')](respondWithResult(_0x51d498,null))[_0x8d67('0x45')](handleError(_0x51d498,null));});_0x15e21b['start']();}catch(_0xe0805d){_0x51d498[_0x8d67('0x1a')](0x1f4)[_0x8d67('0x2c')](_0xe0805d);}};exports[_0x8d67('0x25')]=function(_0x38aea2,_0x401b7a,_0x1ec531){return db[_0x8d67('0x2f')][_0x8d67('0x4b')]({'where':{'id':_0x38aea2[_0x8d67('0x47')]['id']}})[_0x8d67('0x26')](handleEntityNotFound(_0x401b7a,null))[_0x8d67('0x26')](saveUpdates(_[_0x8d67('0x7a')](_0x38aea2[_0x8d67('0x73')],[_0x8d67('0x2b'),_0x8d67('0x7b')]),null))[_0x8d67('0x26')](respondWithResult(_0x401b7a,null))['catch'](handleError(_0x401b7a,null));};exports[_0x8d67('0x7c')]=function(_0x5399e7,_0x4c68dc,_0x5bdaa7){return db['Sound'][_0x8d67('0x4b')]({'where':{'id':_0x5399e7[_0x8d67('0x47')]['id']}})['then'](function(_0xb702b7){if(_0xb702b7){return _0xb702b7[_0x8d67('0x7d')]();}})['then'](function(_0x45bf89){var _0x47efe1=path['join'](config[_0x8d67('0x50')],_0x8d67('0x7e'),util['format'](_0x8d67('0x55'),_0x45bf89[_0x8d67('0x4d')],_0x45bf89[_0x8d67('0x7f')]));var _0x43f903=path[_0x8d67('0x4f')](config[_0x8d67('0x50')],_0x8d67('0x51'),util['format'](_0x8d67('0x55'),_0x45bf89[_0x8d67('0x4d')],_0x45bf89['converted_format']));fs['unlinkSync'](_0x47efe1);fs[_0x8d67('0x80')](_0x43f903);return _0x45bf89;})[_0x8d67('0x26')](function(_0x2990c3){if(_0x2990c3){return _0x4c68dc[_0x8d67('0x1a')](0xcc)[_0x8d67('0x1b')]();}})[_0x8d67('0x26')](handleEntityNotFound(_0x4c68dc,null))[_0x8d67('0x45')](handleError(_0x4c68dc,null));};
\ No newline at end of file
+var _0xe9d0=['moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','UserProfileResource','error','stack','name','send','map','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','options','Sound','include','rows','catch','show','params','keys','merge','download','save_name','converted_format','root','server/files/sounds/converted','Sound\x20not\x20found','create','basename','file','originalname','extname','filename','wav','join','server/files/sounds/original','%s.%s','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_channelCount','converted_bitRate','converted_sampleRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','find','Sounds','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','pick','description','format','eml-format','zip-dir','request-promise'];(function(_0x1a8f86,_0x5ed9c4){var _0x20d876=function(_0x596e1b){while(--_0x596e1b){_0x1a8f86['push'](_0x1a8f86['shift']());}};_0x20d876(++_0x5ed9c4);}(_0xe9d0,0x73));var _0x0e9d=function(_0x323e3d,_0x27c504){_0x323e3d=_0x323e3d-0x0;var _0x941c8c=_0xe9d0[_0x323e3d];return _0x941c8c;};'use strict';var emlformat=require(_0x0e9d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0e9d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0e9d('0x2'));var moment=require(_0x0e9d('0x3'));var BPromise=require(_0x0e9d('0x4'));var Mustache=require('mustache');var util=require(_0x0e9d('0x5'));var path=require('path');var sox=require(_0x0e9d('0x6'));var csv=require(_0x0e9d('0x7'));var ejs=require(_0x0e9d('0x8'));var fs=require('fs');var fs_extra=require(_0x0e9d('0x9'));var _=require(_0x0e9d('0xa'));var squel=require(_0x0e9d('0xb'));var crypto=require(_0x0e9d('0xc'));var jsforce=require(_0x0e9d('0xd'));var deskjs=require(_0x0e9d('0xe'));var toCsv=require(_0x0e9d('0x7'));var querystring=require(_0x0e9d('0xf'));var Papa=require(_0x0e9d('0x10'));var Redis=require(_0x0e9d('0x11'));var authService=require(_0x0e9d('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x0e9d('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x0e9d('0x14'));var config=require(_0x0e9d('0x15'));var licenseUtil=require(_0x0e9d('0x16'));var db=require(_0x0e9d('0x17'))['db'];function respondWithStatusCode(_0x38d348,_0x2348ca){_0x2348ca=_0x2348ca||0xcc;return function(_0x5ba2fc){if(_0x5ba2fc){return _0x38d348[_0x0e9d('0x18')](_0x2348ca);}return _0x38d348[_0x0e9d('0x19')](_0x2348ca)[_0x0e9d('0x1a')]();};}function respondWithResult(_0x3a322d,_0xeda697){_0xeda697=_0xeda697||0xc8;return function(_0x40b9dc){if(_0x40b9dc){return _0x3a322d[_0x0e9d('0x19')](_0xeda697)[_0x0e9d('0x1b')](_0x40b9dc);}};}function respondWithFilteredResult(_0x1709a1,_0x186007){return function(_0x8dac35){if(_0x8dac35){var _0x4a2c5f=typeof _0x186007[_0x0e9d('0x1c')]===_0x0e9d('0x1d')&&typeof _0x186007[_0x0e9d('0x1e')]===_0x0e9d('0x1d');var _0x226b54=_0x8dac35[_0x0e9d('0x1f')];var _0x2bb437=_0x4a2c5f?0x0:_0x186007['offset'];var _0x2454e6=_0x4a2c5f?_0x8dac35['count']:_0x186007[_0x0e9d('0x1c')]+_0x186007[_0x0e9d('0x1e')];var _0x4d05e8;if(_0x2454e6>=_0x226b54){_0x2454e6=_0x226b54;_0x4d05e8=0xc8;}else{_0x4d05e8=0xce;}_0x1709a1[_0x0e9d('0x19')](_0x4d05e8);return _0x1709a1[_0x0e9d('0x20')](_0x0e9d('0x21'),_0x2bb437+'-'+_0x2454e6+'/'+_0x226b54)[_0x0e9d('0x1b')](_0x8dac35);}return null;};}function patchUpdates(_0x18c91a){return function(_0x5805b9){try{jsonpatch['apply'](_0x5805b9,_0x18c91a,!![]);}catch(_0xb4e92a){return BPromise['reject'](_0xb4e92a);}return _0x5805b9[_0x0e9d('0x22')]();};}function saveUpdates(_0x4103ad,_0x2277bc){return function(_0x4483e6){if(_0x4483e6){return _0x4483e6[_0x0e9d('0x23')](_0x4103ad)[_0x0e9d('0x24')](function(_0x2ba3cf){return _0x2ba3cf;});}return null;};}function removeEntity(_0x40ca0c,_0x3dc80f){return function(_0x2f4b45){if(_0x2f4b45){return _0x2f4b45[_0x0e9d('0x25')]()['then'](function(){var _0x4c5867=_0x2f4b45['get']({'plain':!![]});var _0x5667a6='Sounds';return db[_0x0e9d('0x26')][_0x0e9d('0x25')]({'where':{'type':_0x5667a6,'resourceId':_0x4c5867['id']}})[_0x0e9d('0x24')](function(){return _0x2f4b45;});})[_0x0e9d('0x24')](function(){_0x40ca0c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xbc695d,_0x7a866c){return function(_0x4a140c){if(!_0x4a140c){_0xbc695d[_0x0e9d('0x18')](0x194);}return _0x4a140c;};}function handleError(_0xbdef3,_0x1934de){_0x1934de=_0x1934de||0x1f4;return function(_0x3a9000){logger[_0x0e9d('0x27')](_0x3a9000[_0x0e9d('0x28')]);if(_0x3a9000[_0x0e9d('0x29')]){delete _0x3a9000[_0x0e9d('0x29')];}_0xbdef3[_0x0e9d('0x19')](_0x1934de)[_0x0e9d('0x2a')](_0x3a9000);};}exports['index']=function(_0x2103cf,_0x11d2bf){var _0x52f725={},_0x333a2a={},_0x24d82a={'count':0x0,'rows':[]};var _0x5cd35c=_[_0x0e9d('0x2b')](db['Sound'][_0x0e9d('0x2c')],function(_0x46fc19){return{'name':_0x46fc19['fieldName'],'type':_0x46fc19[_0x0e9d('0x2d')][_0x0e9d('0x2e')]};});_0x333a2a[_0x0e9d('0x2f')]=_[_0x0e9d('0x2b')](_0x5cd35c,_0x0e9d('0x29'));_0x333a2a['query']=_['keys'](_0x2103cf[_0x0e9d('0x30')]);_0x333a2a[_0x0e9d('0x31')]=_[_0x0e9d('0x32')](_0x333a2a[_0x0e9d('0x2f')],_0x333a2a[_0x0e9d('0x30')]);_0x52f725[_0x0e9d('0x33')]=_[_0x0e9d('0x32')](_0x333a2a['model'],qs[_0x0e9d('0x34')](_0x2103cf[_0x0e9d('0x30')]['fields']));_0x52f725[_0x0e9d('0x33')]=_0x52f725[_0x0e9d('0x33')][_0x0e9d('0x35')]?_0x52f725[_0x0e9d('0x33')]:_0x333a2a[_0x0e9d('0x2f')];if(!_0x2103cf[_0x0e9d('0x30')]['hasOwnProperty'](_0x0e9d('0x36'))){_0x52f725[_0x0e9d('0x1e')]=qs[_0x0e9d('0x1e')](_0x2103cf[_0x0e9d('0x30')][_0x0e9d('0x1e')]);_0x52f725[_0x0e9d('0x1c')]=qs[_0x0e9d('0x1c')](_0x2103cf[_0x0e9d('0x30')][_0x0e9d('0x1c')]);}_0x52f725['order']=qs[_0x0e9d('0x37')](_0x2103cf[_0x0e9d('0x30')][_0x0e9d('0x37')]);_0x52f725[_0x0e9d('0x38')]=qs[_0x0e9d('0x31')](_['pick'](_0x2103cf[_0x0e9d('0x30')],_0x333a2a['filters']),_0x5cd35c);if(_0x2103cf['query'][_0x0e9d('0x39')]){_0x52f725[_0x0e9d('0x38')]=_['merge'](_0x52f725['where'],{'$or':_[_0x0e9d('0x2b')](_0x5cd35c,function(_0x283106){if(_0x283106['type']!=='VIRTUAL'){var _0x28759e={};_0x28759e[_0x283106[_0x0e9d('0x29')]]={'$like':'%'+_0x2103cf['query'][_0x0e9d('0x39')]+'%'};return _0x28759e;}})});}_0x52f725=_['merge']({},_0x52f725,_0x2103cf[_0x0e9d('0x3a')]);var _0x49938f={'where':_0x52f725[_0x0e9d('0x38')]};return db[_0x0e9d('0x3b')][_0x0e9d('0x1f')](_0x49938f)[_0x0e9d('0x24')](function(_0x395daa){_0x24d82a[_0x0e9d('0x1f')]=_0x395daa;if(_0x2103cf[_0x0e9d('0x30')]['includeAll']){_0x52f725[_0x0e9d('0x3c')]=[{'all':!![]}];}return db[_0x0e9d('0x3b')]['findAll'](_0x52f725);})[_0x0e9d('0x24')](function(_0x5b6492){_0x24d82a[_0x0e9d('0x3d')]=_0x5b6492;return _0x24d82a;})[_0x0e9d('0x24')](respondWithFilteredResult(_0x11d2bf,_0x52f725))[_0x0e9d('0x3e')](handleError(_0x11d2bf,null));};exports[_0x0e9d('0x3f')]=function(_0x437697,_0x589380){var _0x5e2151={'raw':!![],'where':{'id':_0x437697[_0x0e9d('0x40')]['id']}},_0x38457d={};_0x38457d['model']=_[_0x0e9d('0x41')](db[_0x0e9d('0x3b')][_0x0e9d('0x2c')]);_0x38457d[_0x0e9d('0x30')]=_['keys'](_0x437697[_0x0e9d('0x30')]);_0x38457d[_0x0e9d('0x31')]=_[_0x0e9d('0x32')](_0x38457d[_0x0e9d('0x2f')],_0x38457d['query']);_0x5e2151[_0x0e9d('0x33')]=_[_0x0e9d('0x32')](_0x38457d[_0x0e9d('0x2f')],qs[_0x0e9d('0x34')](_0x437697[_0x0e9d('0x30')][_0x0e9d('0x34')]));_0x5e2151[_0x0e9d('0x33')]=_0x5e2151['attributes'][_0x0e9d('0x35')]?_0x5e2151[_0x0e9d('0x33')]:_0x38457d['model'];if(_0x437697['query']['includeAll']){_0x5e2151[_0x0e9d('0x3c')]=[{'all':!![]}];}_0x5e2151=_[_0x0e9d('0x42')]({},_0x5e2151,_0x437697[_0x0e9d('0x3a')]);return db[_0x0e9d('0x3b')]['find'](_0x5e2151)[_0x0e9d('0x24')](handleEntityNotFound(_0x589380,null))[_0x0e9d('0x24')](respondWithResult(_0x589380,null))[_0x0e9d('0x3e')](handleError(_0x589380,null));};exports[_0x0e9d('0x43')]=function(_0x2f7caa,_0x38d667,_0x393904){return db['Sound']['find']({'where':{'id':_0x2f7caa[_0x0e9d('0x40')]['id']},'attributes':[_0x0e9d('0x29'),_0x0e9d('0x44'),_0x0e9d('0x45')],'raw':!![]})[_0x0e9d('0x24')](handleEntityNotFound(_0x38d667,null))['then'](function(_0x485645){if(_0x485645){if(!fs['existsSync'](path['join'](config[_0x0e9d('0x46')],_0x0e9d('0x47'),_0x485645[_0x0e9d('0x44')]+'.'+_0x485645[_0x0e9d('0x45')]))){throw new db['Sequelize']['ValidationError'](_0x0e9d('0x48'));}return _0x38d667['download'](path['join'](config['root'],_0x0e9d('0x47'),util['format']('%s.%s',_0x485645[_0x0e9d('0x44')],_0x485645[_0x0e9d('0x45')])),util['format']('%s.%s',_0x485645[_0x0e9d('0x29')],_0x485645['converted_format']));}return null;})[_0x0e9d('0x3e')](handleError(_0x38d667,null));};exports[_0x0e9d('0x49')]=function(_0x29c069,_0x3785b9,_0x54fa31){var _0x24b47f={'name':path[_0x0e9d('0x4a')](_0x29c069[_0x0e9d('0x4b')][_0x0e9d('0x4c')],path[_0x0e9d('0x4d')](_0x29c069['file'][_0x0e9d('0x4c')])),'save_name':path[_0x0e9d('0x4a')](_0x29c069[_0x0e9d('0x4b')][_0x0e9d('0x4e')],path[_0x0e9d('0x4d')](_0x29c069['file'][_0x0e9d('0x4e')])),'original_format':path[_0x0e9d('0x4d')](_0x29c069[_0x0e9d('0x4b')][_0x0e9d('0x4c')])['substring'](0x1),'converted_format':_0x0e9d('0x4f')};var _0x550558=path[_0x0e9d('0x50')](config[_0x0e9d('0x46')],_0x0e9d('0x51'),_0x29c069[_0x0e9d('0x4b')]['filename']);var _0x46557f=path[_0x0e9d('0x50')](config[_0x0e9d('0x46')],_0x0e9d('0x47'),util['format'](_0x0e9d('0x52'),path[_0x0e9d('0x4a')](_0x29c069[_0x0e9d('0x4b')]['filename'],path[_0x0e9d('0x4d')](_0x29c069['file']['filename'])),_0x24b47f[_0x0e9d('0x45')]));logger[_0x0e9d('0x53')](_0x0e9d('0x54'),_0x550558);logger[_0x0e9d('0x53')](_0x0e9d('0x55'),_0x46557f);try{fs[_0x0e9d('0x56')](_0x550558,parseInt(_0x0e9d('0x57'),0x8));var _0x205b3d=sox[_0x0e9d('0x58')](_0x550558,_0x46557f,{'sampleRate':0x1f40,'format':_0x0e9d('0x4f'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x205b3d['on'](_0x0e9d('0x27'),function(_0x115e5e){fs[_0x0e9d('0x59')](_0x550558);_0x3785b9[_0x0e9d('0x19')](0x1f4)[_0x0e9d('0x2a')](_0x115e5e);});_0x205b3d['on'](_0x0e9d('0x5a'),function(_0x5c96ec){_0x24b47f[_0x0e9d('0x5b')]=isNaN(_0x5c96ec[_0x0e9d('0x5c')])?null:_0x5c96ec[_0x0e9d('0x5c')]*0x3e8;_0x24b47f[_0x0e9d('0x5d')]=isNaN(_0x5c96ec[_0x0e9d('0x5e')])?null:_0x5c96ec['sampleCount'];_0x24b47f[_0x0e9d('0x5f')]=isNaN(_0x5c96ec[_0x0e9d('0x60')])?null:_0x5c96ec[_0x0e9d('0x60')];_0x24b47f['original_bitRate']=isNaN(_0x5c96ec[_0x0e9d('0x61')])?null:_0x5c96ec[_0x0e9d('0x61')];_0x24b47f[_0x0e9d('0x62')]=isNaN(_0x5c96ec[_0x0e9d('0x63')])?null:_0x5c96ec[_0x0e9d('0x63')];});_0x205b3d['on'](_0x0e9d('0x64'),function(_0x4d6b23){_0x24b47f[_0x0e9d('0x65')]=isNaN(_0x4d6b23[_0x0e9d('0x5c')])?null:_0x4d6b23['duration']*0x3e8;_0x24b47f['converted_sampleCount']=isNaN(_0x4d6b23[_0x0e9d('0x5e')])?null:_0x4d6b23['sampleCount'];_0x24b47f[_0x0e9d('0x66')]=isNaN(_0x4d6b23[_0x0e9d('0x60')])?null:_0x4d6b23['channelCount'];_0x24b47f[_0x0e9d('0x67')]=isNaN(_0x4d6b23['bitRate'])?null:_0x4d6b23[_0x0e9d('0x61')];_0x24b47f[_0x0e9d('0x68')]=isNaN(_0x4d6b23[_0x0e9d('0x63')])?null:_0x4d6b23[_0x0e9d('0x63')];});_0x205b3d['on'](_0x0e9d('0x1a'),function(){fs['chmodSync'](_0x46557f,parseInt(_0x0e9d('0x57'),0x8));return db[_0x0e9d('0x3b')]['create'](_0x24b47f)[_0x0e9d('0x24')](function(_0x556964){var _0x22c589={'role':_0x29c069[_0x0e9d('0x69')]['role'],'userProfileId':_0x29c069[_0x0e9d('0x69')][_0x0e9d('0x6a')]};if(!_0x22c589)throw new Error(_0x0e9d('0x6b'));if(_0x22c589[_0x0e9d('0x6c')]===_0x0e9d('0x6d')){var _0x4b774d=_0x556964[_0x0e9d('0x6e')]({'plain':!![]});return db[_0x0e9d('0x6f')][_0x0e9d('0x70')]({'where':{'name':_0x0e9d('0x71'),'userProfileId':_0x22c589[_0x0e9d('0x6a')]},'raw':!![]})[_0x0e9d('0x24')](function(_0x223afe){if(_0x223afe&&_0x223afe['autoAssociation']===0x0){return db[_0x0e9d('0x26')]['create']({'name':_0x4b774d[_0x0e9d('0x29')],'resourceId':_0x4b774d['id'],'type':_0x223afe[_0x0e9d('0x29')],'sectionId':_0x223afe['id']},{})[_0x0e9d('0x24')](function(){return _0x556964;});}else{return _0x556964;}})[_0x0e9d('0x3e')](function(_0x48b354){logger[_0x0e9d('0x27')](_0x0e9d('0x72'),_0x48b354);throw _0x48b354;});}return _0x556964;})[_0x0e9d('0x24')](respondWithResult(_0x3785b9,null))[_0x0e9d('0x3e')](handleError(_0x3785b9,null));});_0x205b3d['start']();}catch(_0x45091e){_0x3785b9[_0x0e9d('0x19')](0x1f4)[_0x0e9d('0x2a')](_0x45091e);}};exports[_0x0e9d('0x23')]=function(_0x20e4d4,_0x4e858d,_0x41516e){return db['Sound'][_0x0e9d('0x70')]({'where':{'id':_0x20e4d4[_0x0e9d('0x40')]['id']}})[_0x0e9d('0x24')](handleEntityNotFound(_0x4e858d,null))[_0x0e9d('0x24')](saveUpdates(_[_0x0e9d('0x73')](_0x20e4d4['body'],['name',_0x0e9d('0x74')]),null))[_0x0e9d('0x24')](respondWithResult(_0x4e858d,null))[_0x0e9d('0x3e')](handleError(_0x4e858d,null));};exports['delete']=function(_0x4b752a,_0xa25924,_0x5374c7){return db[_0x0e9d('0x3b')][_0x0e9d('0x70')]({'where':{'id':_0x4b752a[_0x0e9d('0x40')]['id']}})[_0x0e9d('0x24')](function(_0x1eab29){if(_0x1eab29){return _0x1eab29[_0x0e9d('0x25')]();}})['then'](function(_0x6c6ec8){var _0x29e01b=path['join'](config[_0x0e9d('0x46')],_0x0e9d('0x51'),util['format']('%s.%s',_0x6c6ec8[_0x0e9d('0x44')],_0x6c6ec8['original_format']));var _0x2a8b7b=path['join'](config['root'],'server/files/sounds/converted',util[_0x0e9d('0x75')]('%s.%s',_0x6c6ec8['save_name'],_0x6c6ec8[_0x0e9d('0x45')]));fs['unlinkSync'](_0x29e01b);fs[_0x0e9d('0x59')](_0x2a8b7b);return _0x6c6ec8;})[_0x0e9d('0x24')](function(_0x39bb73){if(_0x39bb73){return _0xa25924[_0x0e9d('0x19')](0xcc)[_0x0e9d('0x1a')]();}})[_0x0e9d('0x24')](handleEntityNotFound(_0xa25924,null))[_0x0e9d('0x3e')](handleError(_0xa25924,null));};
\ No newline at end of file
index b6b1447..c0f86e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79fc=['request-promise','path','rimraf','exports','define','Sound','tools_sounds','util','../../config/logger'];(function(_0xdd5f37,_0xf2669f){var _0xa4e92f=function(_0x494333){while(--_0x494333){_0xdd5f37['push'](_0xdd5f37['shift']());}};_0xa4e92f(++_0xf2669f);}(_0x79fc,0x1db));var _0xc79f=function(_0x55a89e,_0x1a05ab){_0x55a89e=_0x55a89e-0x0;var _0x3aa2bd=_0x79fc[_0x55a89e];return _0x3aa2bd;};'use strict';var _=require('lodash');var util=require(_0xc79f('0x0'));var logger=require(_0xc79f('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc79f('0x2'));var fs=require('fs');var path=require(_0xc79f('0x3'));var rimraf=require(_0xc79f('0x4'));var config=require('../../config/environment');var attributes=require('./sound.attributes');module[_0xc79f('0x5')]=function(_0x43d4f5,_0xc97a8d){return _0x43d4f5[_0xc79f('0x6')](_0xc79f('0x7'),attributes,{'tableName':_0xc79f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5f89=['exports','Sound','tools_sounds','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x5f89,0x147));var _0x95f8=function(_0x573170,_0x1141a8){_0x573170=_0x573170-0x0;var _0x5952a1=_0x5f89[_0x573170];return _0x5952a1;};'use strict';var _=require(_0x95f8('0x0'));var util=require(_0x95f8('0x1'));var logger=require(_0x95f8('0x2'))('api');var moment=require(_0x95f8('0x3'));var BPromise=require(_0x95f8('0x4'));var rp=require(_0x95f8('0x5'));var fs=require('fs');var path=require(_0x95f8('0x6'));var rimraf=require(_0x95f8('0x7'));var config=require(_0x95f8('0x8'));var attributes=require('./sound.attributes');module[_0x95f8('0x9')]=function(_0x5e9581,_0x55fa42){return _0x5e9581['define'](_0x95f8('0xa'),attributes,{'tableName':_0x95f8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 19de882..ead0be0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ab3=['catch','lodash','util','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','http','request','then','Sound,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','ShowSound','find','options','where','attributes','include','model','map'];(function(_0x6ff97c,_0x5e35fe){var _0x469a87=function(_0x21c41f){while(--_0x21c41f){_0x6ff97c['push'](_0x6ff97c['shift']());}};_0x469a87(++_0x5e35fe);}(_0x9ab3,0x119));var _0x39ab=function(_0xe61fed,_0x2e25df){_0xe61fed=_0xe61fed-0x0;var _0x54d253=_0x9ab3[_0xe61fed];return _0x54d253;};'use strict';var _=require(_0x39ab('0x0'));var util=require(_0x39ab('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x39ab('0x2'));var fs=require('fs');var Redis=require(_0x39ab('0x3'));var db=require(_0x39ab('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x39ab('0x5'));var config=require('../../config/environment');var jayson=require(_0x39ab('0x6'));var client=jayson['client'][_0x39ab('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x134855,_0x2b536f,_0x3df886){return new BPromise(function(_0x3d380d,_0x570eac){return client[_0x39ab('0x8')](_0x134855,_0x3df886)[_0x39ab('0x9')](function(_0x4ea160){logger['info'](_0x39ab('0xa'),_0x2b536f,_0x39ab('0xb'));logger[_0x39ab('0xc')]('Sound,\x20%s,\x20%s,\x20%s',_0x2b536f,'request\x20sent',JSON[_0x39ab('0xd')](_0x4ea160));if(_0x4ea160[_0x39ab('0xe')]){if(_0x4ea160[_0x39ab('0xe')][_0x39ab('0xf')]===0x1f4){logger[_0x39ab('0xe')](_0x39ab('0xa'),_0x2b536f,_0x4ea160[_0x39ab('0xe')][_0x39ab('0x10')]);return _0x570eac(_0x4ea160[_0x39ab('0xe')][_0x39ab('0x10')]);}logger['error'](_0x39ab('0xa'),_0x2b536f,_0x4ea160[_0x39ab('0xe')][_0x39ab('0x10')]);return _0x3d380d(_0x4ea160[_0x39ab('0xe')][_0x39ab('0x10')]);}else{logger[_0x39ab('0x11')]('Sound,\x20%s,\x20%s',_0x2b536f,_0x39ab('0xb'));_0x3d380d(_0x4ea160[_0x39ab('0x12')][_0x39ab('0x10')]);}})['catch'](function(_0x23559b){logger[_0x39ab('0xe')](_0x39ab('0xa'),_0x2b536f,_0x23559b);_0x570eac(_0x23559b);});});}exports[_0x39ab('0x13')]=function(_0x35b07a){var _0x47ac0d=this;return new Promise(function(_0x2e25ef,_0x4bd74b){return db['Sound'][_0x39ab('0x14')]({'raw':_0x35b07a[_0x39ab('0x15')]?_0x35b07a[_0x39ab('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x35b07a['options']?_0x35b07a[_0x39ab('0x15')][_0x39ab('0x16')]||null:null,'attributes':_0x35b07a['options']?_0x35b07a[_0x39ab('0x15')][_0x39ab('0x17')]||null:null,'include':_0x35b07a[_0x39ab('0x15')]?_0x35b07a[_0x39ab('0x15')]['include']?_['map'](_0x35b07a[_0x39ab('0x15')][_0x39ab('0x18')],function(_0x5037de){return{'model':db[_0x5037de[_0x39ab('0x19')]],'as':_0x5037de['as'],'attributes':_0x5037de[_0x39ab('0x17')],'include':_0x5037de[_0x39ab('0x18')]?_['map'](_0x5037de[_0x39ab('0x18')],function(_0x5bc132){return{'model':db[_0x5bc132['model']],'as':_0x5bc132['as'],'attributes':_0x5bc132[_0x39ab('0x17')],'include':_0x5bc132[_0x39ab('0x18')]?_[_0x39ab('0x1a')](_0x5bc132[_0x39ab('0x18')],function(_0x701640){return{'model':db[_0x701640[_0x39ab('0x19')]],'as':_0x701640['as'],'attributes':_0x701640[_0x39ab('0x17')]};}):[]};}):[]};}):[]:[]})[_0x39ab('0x9')](function(_0x59e0d3){logger[_0x39ab('0x11')]('ShowSound',_0x35b07a);logger['debug'](_0x39ab('0x13'),_0x35b07a,JSON['stringify'](_0x59e0d3));_0x2e25ef(_0x59e0d3);})[_0x39ab('0x1b')](function(_0x5c4483){logger[_0x39ab('0xe')](_0x39ab('0x13'),_0x5c4483[_0x39ab('0x10')],_0x35b07a);_0x4bd74b(_0x47ac0d[_0x39ab('0xe')](0x1f4,_0x5c4483[_0x39ab('0x10')]));});});};
\ No newline at end of file
+var _0x0bb5=['catch','ShowSound','find','options','map','include','model','attributes','then','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','request','info','request\x20sent','debug','stringify','error','Sound,\x20%s,\x20%s','message','result'];(function(_0x13accf,_0x1dec08){var _0x3b4890=function(_0x226c43){while(--_0x226c43){_0x13accf['push'](_0x13accf['shift']());}};_0x3b4890(++_0x1dec08);}(_0x0bb5,0xab));var _0x50bb=function(_0x3d4b83,_0xb5fb35){_0x3d4b83=_0x3d4b83-0x0;var _0xdb21ec=_0x0bb5[_0x3d4b83];return _0xdb21ec;};'use strict';var _=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var moment=require('moment');var BPromise=require(_0x50bb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x50bb('0x3'));var db=require(_0x50bb('0x4'))['db'];var utils=require(_0x50bb('0x5'));var logger=require('../../config/logger')(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x50bb('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x34b90e,_0x3b102f,_0x431484){return new BPromise(function(_0x52c380,_0x55463d){return client[_0x50bb('0x9')](_0x34b90e,_0x431484)['then'](function(_0x1cff7e){logger[_0x50bb('0xa')]('Sound,\x20%s,\x20%s',_0x3b102f,_0x50bb('0xb'));logger[_0x50bb('0xc')]('Sound,\x20%s,\x20%s,\x20%s',_0x3b102f,_0x50bb('0xb'),JSON[_0x50bb('0xd')](_0x1cff7e));if(_0x1cff7e[_0x50bb('0xe')]){if(_0x1cff7e[_0x50bb('0xe')]['code']===0x1f4){logger['error'](_0x50bb('0xf'),_0x3b102f,_0x1cff7e[_0x50bb('0xe')][_0x50bb('0x10')]);return _0x55463d(_0x1cff7e[_0x50bb('0xe')][_0x50bb('0x10')]);}logger[_0x50bb('0xe')]('Sound,\x20%s,\x20%s',_0x3b102f,_0x1cff7e[_0x50bb('0xe')][_0x50bb('0x10')]);return _0x52c380(_0x1cff7e[_0x50bb('0xe')][_0x50bb('0x10')]);}else{logger[_0x50bb('0xa')]('Sound,\x20%s,\x20%s',_0x3b102f,'request\x20sent');_0x52c380(_0x1cff7e[_0x50bb('0x11')][_0x50bb('0x10')]);}})[_0x50bb('0x12')](function(_0x374c8b){logger[_0x50bb('0xe')](_0x50bb('0xf'),_0x3b102f,_0x374c8b);_0x55463d(_0x374c8b);});});}exports[_0x50bb('0x13')]=function(_0x13a973){var _0x463d7a=this;return new Promise(function(_0x1f0791,_0x4a0897){return db['Sound'][_0x50bb('0x14')]({'raw':_0x13a973[_0x50bb('0x15')]?_0x13a973[_0x50bb('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x13a973[_0x50bb('0x15')]?_0x13a973[_0x50bb('0x15')]['where']||null:null,'attributes':_0x13a973[_0x50bb('0x15')]?_0x13a973['options']['attributes']||null:null,'include':_0x13a973[_0x50bb('0x15')]?_0x13a973[_0x50bb('0x15')]['include']?_[_0x50bb('0x16')](_0x13a973[_0x50bb('0x15')][_0x50bb('0x17')],function(_0x2929bc){return{'model':db[_0x2929bc[_0x50bb('0x18')]],'as':_0x2929bc['as'],'attributes':_0x2929bc['attributes'],'include':_0x2929bc[_0x50bb('0x17')]?_['map'](_0x2929bc[_0x50bb('0x17')],function(_0x61060e){return{'model':db[_0x61060e[_0x50bb('0x18')]],'as':_0x61060e['as'],'attributes':_0x61060e[_0x50bb('0x19')],'include':_0x61060e[_0x50bb('0x17')]?_[_0x50bb('0x16')](_0x61060e[_0x50bb('0x17')],function(_0x40e9a1){return{'model':db[_0x40e9a1['model']],'as':_0x40e9a1['as'],'attributes':_0x40e9a1[_0x50bb('0x19')]};}):[]};}):[]};}):[]:[]})[_0x50bb('0x1a')](function(_0x30cd32){logger[_0x50bb('0xa')](_0x50bb('0x13'),_0x13a973);logger[_0x50bb('0xc')]('ShowSound',_0x13a973,JSON['stringify'](_0x30cd32));_0x1f0791(_0x30cd32);})['catch'](function(_0x24e565){logger['error'](_0x50bb('0x13'),_0x24e565[_0x50bb('0x10')],_0x13a973);_0x4a0897(_0x463d7a['error'](0x1f4,_0x24e565['message']));});});};
\ No newline at end of file
index 6335ca6..a7f5eba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','update','delete','destroy'];(function(_0x114d65,_0x4b15d8){var _0x482e91=function(_0x384deb){while(--_0x384deb){_0x114d65['push'](_0x114d65['shift']());}};_0x482e91(++_0x4b15d8);}(_0x5f66,0x1a0));var _0x65f6=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x5f66[_0x31e29a];return _0x32d892;};'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('./squareMessage.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0xb')]('/',auth[_0x65f6('0x8')](),controller[_0x65f6('0xc')]);router['put']('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0xe')](_0x65f6('0x9'),auth['isAuthenticated'](),controller[_0x65f6('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x5f66=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','update','delete','destroy'];(function(_0x54b269,_0x109d2a){var _0x830623=function(_0x4dead0){while(--_0x4dead0){_0x54b269['push'](_0x54b269['shift']());}};_0x830623(++_0x109d2a);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x5f66[_0x4154a6];return _0x3b2786;};'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('./squareMessage.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0xb')]('/',auth[_0x65f6('0x8')](),controller[_0x65f6('0xc')]);router['put']('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0xe')](_0x65f6('0x9'),auth['isAuthenticated'](),controller[_0x65f6('0xf')]);module['exports']=router;
\ No newline at end of file
index f777eca..bd3ce19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c88=['TEXT','medium','ENUM','out','sequelize','STRING'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0x9c88,0x1cc));var _0x89c8=function(_0x384231,_0x50be41){_0x384231=_0x384231-0x0;var _0x2480bf=_0x9c88[_0x384231];return _0x2480bf;};'use strict';var Sequelize=require(_0x89c8('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x89c8('0x1')]},'body':{'type':Sequelize[_0x89c8('0x2')](_0x89c8('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x89c8('0x4')]('in','out'),'defaultValue':_0x89c8('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0x89c8('0x1')]},'providerResponse':{'type':Sequelize[_0x89c8('0x2')]}};
\ No newline at end of file
+var _0x70da=['exports','STRING','medium','ENUM','out','TEXT','sequelize'];(function(_0x4b49c9,_0x290d55){var _0xab2d67=function(_0x3a8e9c){while(--_0x3a8e9c){_0x4b49c9['push'](_0x4b49c9['shift']());}};_0xab2d67(++_0x290d55);}(_0x70da,0x102));var _0xa70d=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x70da[_0x413feb];return _0x40ee88;};'use strict';var Sequelize=require(_0xa70d('0x0'));module[_0xa70d('0x1')]={'uniqueid':{'type':Sequelize[_0xa70d('0x2')]},'body':{'type':Sequelize['TEXT'](_0xa70d('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0xa70d('0x4')]('in','out'),'defaultValue':_0xa70d('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0xa70d('0x2')]},'providerResponse':{'type':Sequelize[_0xa70d('0x6')]}};
\ No newline at end of file
index 1d7dcf9..90f0490 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42f2=['lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','map','SquareMessage','rawAttributes','fieldName','type','model','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','order','sort','pick','filter','merge','where','VIRTUAL','include','findAll','rows','catch','show','params','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra'];(function(_0x690ac8,_0x17a0cb){var _0x5f060b=function(_0xc86e62){while(--_0xc86e62){_0x690ac8['push'](_0x690ac8['shift']());}};_0x5f060b(++_0x17a0cb);}(_0x42f2,0x1f4));var _0x242f=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0x42f2[_0x34843e];return _0x598f7f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x242f('0x0'));var zipdir=require(_0x242f('0x1'));var jsonpatch=require(_0x242f('0x2'));var rp=require(_0x242f('0x3'));var moment=require('moment');var BPromise=require(_0x242f('0x4'));var Mustache=require(_0x242f('0x5'));var util=require(_0x242f('0x6'));var path=require(_0x242f('0x7'));var sox=require(_0x242f('0x8'));var csv=require(_0x242f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x242f('0xa'));var _=require(_0x242f('0xb'));var squel=require(_0x242f('0xc'));var crypto=require(_0x242f('0xd'));var jsforce=require(_0x242f('0xe'));var deskjs=require(_0x242f('0xf'));var toCsv=require(_0x242f('0x9'));var querystring=require('querystring');var Papa=require(_0x242f('0x10'));var Redis=require(_0x242f('0x11'));var authService=require(_0x242f('0x12'));var qs=require(_0x242f('0x13'));var as=require(_0x242f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x242f('0x15'))(_0x242f('0x16'));var utils=require(_0x242f('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x242f('0x18'))['db'];function respondWithStatusCode(_0x1674cc,_0x444ec4){_0x444ec4=_0x444ec4||0xcc;return function(_0x370333){if(_0x370333){return _0x1674cc[_0x242f('0x19')](_0x444ec4);}return _0x1674cc[_0x242f('0x1a')](_0x444ec4)[_0x242f('0x1b')]();};}function respondWithResult(_0x427774,_0x28cbd1){_0x28cbd1=_0x28cbd1||0xc8;return function(_0x3928db){if(_0x3928db){return _0x427774[_0x242f('0x1a')](_0x28cbd1)[_0x242f('0x1c')](_0x3928db);}};}function respondWithFilteredResult(_0x38412a,_0x56249c){return function(_0xa54050){if(_0xa54050){var _0x55ed7e=typeof _0x56249c[_0x242f('0x1d')]==='undefined'&&typeof _0x56249c['limit']===_0x242f('0x1e');var _0x19d474=_0xa54050[_0x242f('0x1f')];var _0x149707=_0x55ed7e?0x0:_0x56249c['offset'];var _0x2568da=_0x55ed7e?_0xa54050[_0x242f('0x1f')]:_0x56249c['offset']+_0x56249c[_0x242f('0x20')];var _0xea0a4b;if(_0x2568da>=_0x19d474){_0x2568da=_0x19d474;_0xea0a4b=0xc8;}else{_0xea0a4b=0xce;}_0x38412a['status'](_0xea0a4b);return _0x38412a[_0x242f('0x21')](_0x242f('0x22'),_0x149707+'-'+_0x2568da+'/'+_0x19d474)[_0x242f('0x1c')](_0xa54050);}return null;};}function patchUpdates(_0x3a8d70){return function(_0x3e94fe){try{jsonpatch['apply'](_0x3e94fe,_0x3a8d70,!![]);}catch(_0x45d77f){return BPromise[_0x242f('0x23')](_0x45d77f);}return _0x3e94fe[_0x242f('0x24')]();};}function saveUpdates(_0xcc5136,_0x3a97f5){return function(_0x10d585){if(_0x10d585){return _0x10d585[_0x242f('0x25')](_0xcc5136)[_0x242f('0x26')](function(_0x1b0882){return _0x1b0882;});}return null;};}function removeEntity(_0x3b5c99,_0x37b181){return function(_0x356268){if(_0x356268){return _0x356268[_0x242f('0x27')]()[_0x242f('0x26')](function(){_0x3b5c99[_0x242f('0x1a')](0xcc)[_0x242f('0x1b')]();});}};}function handleEntityNotFound(_0x5ba8f7,_0x20a356){return function(_0x208384){if(!_0x208384){_0x5ba8f7[_0x242f('0x19')](0x194);}return _0x208384;};}function handleError(_0x3d9fa6,_0x582cfd){_0x582cfd=_0x582cfd||0x1f4;return function(_0x456e4a){logger[_0x242f('0x28')](_0x456e4a[_0x242f('0x29')]);if(_0x456e4a['name']){delete _0x456e4a[_0x242f('0x2a')];}_0x3d9fa6['status'](_0x582cfd)['send'](_0x456e4a);};}exports['index']=function(_0x884bbb,_0x58d713){var _0x229427={},_0x30e1bb={},_0x5a9b1e={'count':0x0,'rows':[]};var _0x744a=_[_0x242f('0x2b')](db[_0x242f('0x2c')][_0x242f('0x2d')],function(_0x452116){return{'name':_0x452116[_0x242f('0x2e')],'type':_0x452116[_0x242f('0x2f')]['key']};});_0x30e1bb[_0x242f('0x30')]=_[_0x242f('0x2b')](_0x744a,'name');_0x30e1bb['query']=_[_0x242f('0x31')](_0x884bbb['query']);_0x30e1bb[_0x242f('0x32')]=_[_0x242f('0x33')](_0x30e1bb['model'],_0x30e1bb['query']);_0x229427[_0x242f('0x34')]=_[_0x242f('0x33')](_0x30e1bb[_0x242f('0x30')],qs[_0x242f('0x35')](_0x884bbb[_0x242f('0x36')]['fields']));_0x229427[_0x242f('0x34')]=_0x229427[_0x242f('0x34')][_0x242f('0x37')]?_0x229427[_0x242f('0x34')]:_0x30e1bb[_0x242f('0x30')];if(!_0x884bbb[_0x242f('0x36')][_0x242f('0x38')]('nolimit')){_0x229427[_0x242f('0x20')]=qs['limit'](_0x884bbb[_0x242f('0x36')][_0x242f('0x20')]);_0x229427[_0x242f('0x1d')]=qs[_0x242f('0x1d')](_0x884bbb['query']['offset']);}_0x229427[_0x242f('0x39')]=qs[_0x242f('0x3a')](_0x884bbb['query'][_0x242f('0x3a')]);_0x229427['where']=qs['filters'](_[_0x242f('0x3b')](_0x884bbb['query'],_0x30e1bb[_0x242f('0x32')]),_0x744a);if(_0x884bbb['query'][_0x242f('0x3c')]){_0x229427['where']=_[_0x242f('0x3d')](_0x229427[_0x242f('0x3e')],{'$or':_[_0x242f('0x2b')](_0x744a,function(_0x521dee){if(_0x521dee[_0x242f('0x2f')]!==_0x242f('0x3f')){var _0x5c95e8={};_0x5c95e8[_0x521dee[_0x242f('0x2a')]]={'$like':'%'+_0x884bbb[_0x242f('0x36')]['filter']+'%'};return _0x5c95e8;}})});}_0x229427=_['merge']({},_0x229427,_0x884bbb['options']);var _0x4cb00f={'where':_0x229427[_0x242f('0x3e')]};return db['SquareMessage'][_0x242f('0x1f')](_0x4cb00f)[_0x242f('0x26')](function(_0x4e88e){_0x5a9b1e[_0x242f('0x1f')]=_0x4e88e;if(_0x884bbb[_0x242f('0x36')]['includeAll']){_0x229427[_0x242f('0x40')]=[{'all':!![]}];}return db[_0x242f('0x2c')][_0x242f('0x41')](_0x229427);})[_0x242f('0x26')](function(_0x19965e){_0x5a9b1e[_0x242f('0x42')]=_0x19965e;return _0x5a9b1e;})[_0x242f('0x26')](respondWithFilteredResult(_0x58d713,_0x229427))[_0x242f('0x43')](handleError(_0x58d713,null));};exports[_0x242f('0x44')]=function(_0x25993a,_0x57ed41){var _0x76c777={'raw':!![],'where':{'id':_0x25993a[_0x242f('0x45')]['id']}},_0x262c51={};_0x262c51[_0x242f('0x30')]=_[_0x242f('0x31')](db[_0x242f('0x2c')][_0x242f('0x2d')]);_0x262c51[_0x242f('0x36')]=_[_0x242f('0x31')](_0x25993a[_0x242f('0x36')]);_0x262c51[_0x242f('0x32')]=_[_0x242f('0x33')](_0x262c51[_0x242f('0x30')],_0x262c51[_0x242f('0x36')]);_0x76c777[_0x242f('0x34')]=_[_0x242f('0x33')](_0x262c51['model'],qs['fields'](_0x25993a[_0x242f('0x36')][_0x242f('0x35')]));_0x76c777[_0x242f('0x34')]=_0x76c777[_0x242f('0x34')][_0x242f('0x37')]?_0x76c777[_0x242f('0x34')]:_0x262c51[_0x242f('0x30')];if(_0x25993a['query']['includeAll']){_0x76c777[_0x242f('0x40')]=[{'all':!![]}];}_0x76c777=_[_0x242f('0x3d')]({},_0x76c777,_0x25993a['options']);return db[_0x242f('0x2c')][_0x242f('0x46')](_0x76c777)[_0x242f('0x26')](handleEntityNotFound(_0x57ed41,null))[_0x242f('0x26')](respondWithResult(_0x57ed41,null))[_0x242f('0x43')](handleError(_0x57ed41,null));};exports[_0x242f('0x47')]=function(_0x232953,_0x4d4b73){return db[_0x242f('0x2c')][_0x242f('0x47')](_0x232953[_0x242f('0x48')],{})['then'](respondWithResult(_0x4d4b73,0xc9))['catch'](handleError(_0x4d4b73,null));};exports[_0x242f('0x25')]=function(_0x40ef21,_0x4aedb2){if(_0x40ef21[_0x242f('0x48')]['id']){delete _0x40ef21['body']['id'];}return db[_0x242f('0x2c')][_0x242f('0x46')]({'where':{'id':_0x40ef21[_0x242f('0x45')]['id']}})['then'](handleEntityNotFound(_0x4aedb2,null))[_0x242f('0x26')](saveUpdates(_0x40ef21['body'],null))[_0x242f('0x26')](respondWithResult(_0x4aedb2,null))[_0x242f('0x43')](handleError(_0x4aedb2,null));};exports[_0x242f('0x27')]=function(_0x49a167,_0x56389a){return db[_0x242f('0x2c')][_0x242f('0x46')]({'where':{'id':_0x49a167[_0x242f('0x45')]['id']}})[_0x242f('0x26')](handleEntityNotFound(_0x56389a,null))[_0x242f('0x26')](removeEntity(_0x56389a,null))[_0x242f('0x43')](handleError(_0x56389a,null));};
\ No newline at end of file
+var _0x0ec5=['rows','show','params','keys','length','create','body','catch','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','undefined','limit','count','offset','Content-Range','json','apply','reject','save','then','error','stack','index','SquareMessage','rawAttributes','fieldName','type','key','map','query','filters','model','attributes','intersection','fields','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','name','options','includeAll','include','findAll'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0ec5,0x9e));var _0x50ec=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x0ec5[_0x422905];return _0x33dc6c;};'use strict';var emlformat=require(_0x50ec('0x0'));var rimraf=require(_0x50ec('0x1'));var zipdir=require(_0x50ec('0x2'));var jsonpatch=require(_0x50ec('0x3'));var rp=require(_0x50ec('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x50ec('0x5'));var util=require('util');var path=require(_0x50ec('0x6'));var sox=require(_0x50ec('0x7'));var csv=require(_0x50ec('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x50ec('0x9'));var _=require(_0x50ec('0xa'));var squel=require('squel');var crypto=require(_0x50ec('0xb'));var jsforce=require(_0x50ec('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x50ec('0x8'));var querystring=require(_0x50ec('0xd'));var Papa=require(_0x50ec('0xe'));var Redis=require(_0x50ec('0xf'));var authService=require(_0x50ec('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x50ec('0x11'));var hardwareService=require(_0x50ec('0x12'));var logger=require(_0x50ec('0x13'))(_0x50ec('0x14'));var utils=require('../../config/utils');var config=require(_0x50ec('0x15'));var licenseUtil=require(_0x50ec('0x16'));var db=require(_0x50ec('0x17'))['db'];function respondWithStatusCode(_0x11c087,_0x289ed4){_0x289ed4=_0x289ed4||0xcc;return function(_0x560a3f){if(_0x560a3f){return _0x11c087['sendStatus'](_0x289ed4);}return _0x11c087[_0x50ec('0x18')](_0x289ed4)[_0x50ec('0x19')]();};}function respondWithResult(_0x44e59c,_0x482eec){_0x482eec=_0x482eec||0xc8;return function(_0x38095d){if(_0x38095d){return _0x44e59c[_0x50ec('0x18')](_0x482eec)['json'](_0x38095d);}};}function respondWithFilteredResult(_0xbd0956,_0x35f249){return function(_0x1c8025){if(_0x1c8025){var _0x1eaf5a=typeof _0x35f249['offset']===_0x50ec('0x1a')&&typeof _0x35f249[_0x50ec('0x1b')]===_0x50ec('0x1a');var _0x4326ae=_0x1c8025[_0x50ec('0x1c')];var _0x2571b0=_0x1eaf5a?0x0:_0x35f249['offset'];var _0x223c49=_0x1eaf5a?_0x1c8025[_0x50ec('0x1c')]:_0x35f249[_0x50ec('0x1d')]+_0x35f249[_0x50ec('0x1b')];var _0x3a511b;if(_0x223c49>=_0x4326ae){_0x223c49=_0x4326ae;_0x3a511b=0xc8;}else{_0x3a511b=0xce;}_0xbd0956[_0x50ec('0x18')](_0x3a511b);return _0xbd0956['set'](_0x50ec('0x1e'),_0x2571b0+'-'+_0x223c49+'/'+_0x4326ae)[_0x50ec('0x1f')](_0x1c8025);}return null;};}function patchUpdates(_0x3c5d2d){return function(_0x3f4238){try{jsonpatch[_0x50ec('0x20')](_0x3f4238,_0x3c5d2d,!![]);}catch(_0x21c9c1){return BPromise[_0x50ec('0x21')](_0x21c9c1);}return _0x3f4238[_0x50ec('0x22')]();};}function saveUpdates(_0x4f39ca,_0x5c918c){return function(_0x1b7be4){if(_0x1b7be4){return _0x1b7be4['update'](_0x4f39ca)['then'](function(_0x452ad6){return _0x452ad6;});}return null;};}function removeEntity(_0x1a5867,_0x24c617){return function(_0x1517f5){if(_0x1517f5){return _0x1517f5['destroy']()[_0x50ec('0x23')](function(){_0x1a5867[_0x50ec('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24f76c,_0x43ac54){return function(_0x62d5ce){if(!_0x62d5ce){_0x24f76c['sendStatus'](0x194);}return _0x62d5ce;};}function handleError(_0x22e4cc,_0x1242a4){_0x1242a4=_0x1242a4||0x1f4;return function(_0x34c8a7){logger[_0x50ec('0x24')](_0x34c8a7[_0x50ec('0x25')]);if(_0x34c8a7['name']){delete _0x34c8a7['name'];}_0x22e4cc[_0x50ec('0x18')](_0x1242a4)['send'](_0x34c8a7);};}exports[_0x50ec('0x26')]=function(_0x5e5f98,_0x409b94){var _0x4ac712={},_0x1fe4c9={},_0x592076={'count':0x0,'rows':[]};var _0x1fcafe=_['map'](db[_0x50ec('0x27')][_0x50ec('0x28')],function(_0x3920b5){return{'name':_0x3920b5[_0x50ec('0x29')],'type':_0x3920b5[_0x50ec('0x2a')][_0x50ec('0x2b')]};});_0x1fe4c9['model']=_[_0x50ec('0x2c')](_0x1fcafe,'name');_0x1fe4c9['query']=_['keys'](_0x5e5f98[_0x50ec('0x2d')]);_0x1fe4c9[_0x50ec('0x2e')]=_['intersection'](_0x1fe4c9[_0x50ec('0x2f')],_0x1fe4c9[_0x50ec('0x2d')]);_0x4ac712[_0x50ec('0x30')]=_[_0x50ec('0x31')](_0x1fe4c9[_0x50ec('0x2f')],qs[_0x50ec('0x32')](_0x5e5f98[_0x50ec('0x2d')][_0x50ec('0x32')]));_0x4ac712['attributes']=_0x4ac712[_0x50ec('0x30')]['length']?_0x4ac712['attributes']:_0x1fe4c9[_0x50ec('0x2f')];if(!_0x5e5f98['query'][_0x50ec('0x33')]('nolimit')){_0x4ac712[_0x50ec('0x1b')]=qs[_0x50ec('0x1b')](_0x5e5f98[_0x50ec('0x2d')][_0x50ec('0x1b')]);_0x4ac712[_0x50ec('0x1d')]=qs['offset'](_0x5e5f98[_0x50ec('0x2d')][_0x50ec('0x1d')]);}_0x4ac712[_0x50ec('0x34')]=qs[_0x50ec('0x35')](_0x5e5f98['query'][_0x50ec('0x35')]);_0x4ac712['where']=qs[_0x50ec('0x2e')](_[_0x50ec('0x36')](_0x5e5f98[_0x50ec('0x2d')],_0x1fe4c9[_0x50ec('0x2e')]),_0x1fcafe);if(_0x5e5f98[_0x50ec('0x2d')][_0x50ec('0x37')]){_0x4ac712[_0x50ec('0x38')]=_[_0x50ec('0x39')](_0x4ac712['where'],{'$or':_['map'](_0x1fcafe,function(_0x415b8b){if(_0x415b8b[_0x50ec('0x2a')]!==_0x50ec('0x3a')){var _0x1dc169={};_0x1dc169[_0x415b8b[_0x50ec('0x3b')]]={'$like':'%'+_0x5e5f98['query'][_0x50ec('0x37')]+'%'};return _0x1dc169;}})});}_0x4ac712=_[_0x50ec('0x39')]({},_0x4ac712,_0x5e5f98[_0x50ec('0x3c')]);var _0x5435bc={'where':_0x4ac712['where']};return db[_0x50ec('0x27')][_0x50ec('0x1c')](_0x5435bc)[_0x50ec('0x23')](function(_0x1b43f5){_0x592076[_0x50ec('0x1c')]=_0x1b43f5;if(_0x5e5f98[_0x50ec('0x2d')][_0x50ec('0x3d')]){_0x4ac712[_0x50ec('0x3e')]=[{'all':!![]}];}return db[_0x50ec('0x27')][_0x50ec('0x3f')](_0x4ac712);})[_0x50ec('0x23')](function(_0x18bd2b){_0x592076[_0x50ec('0x40')]=_0x18bd2b;return _0x592076;})[_0x50ec('0x23')](respondWithFilteredResult(_0x409b94,_0x4ac712))['catch'](handleError(_0x409b94,null));};exports[_0x50ec('0x41')]=function(_0x4c84a6,_0x241437){var _0x4a5422={'raw':!![],'where':{'id':_0x4c84a6[_0x50ec('0x42')]['id']}},_0x2f969d={};_0x2f969d['model']=_[_0x50ec('0x43')](db[_0x50ec('0x27')][_0x50ec('0x28')]);_0x2f969d[_0x50ec('0x2d')]=_[_0x50ec('0x43')](_0x4c84a6[_0x50ec('0x2d')]);_0x2f969d[_0x50ec('0x2e')]=_[_0x50ec('0x31')](_0x2f969d[_0x50ec('0x2f')],_0x2f969d[_0x50ec('0x2d')]);_0x4a5422[_0x50ec('0x30')]=_['intersection'](_0x2f969d['model'],qs[_0x50ec('0x32')](_0x4c84a6[_0x50ec('0x2d')]['fields']));_0x4a5422[_0x50ec('0x30')]=_0x4a5422[_0x50ec('0x30')][_0x50ec('0x44')]?_0x4a5422['attributes']:_0x2f969d['model'];if(_0x4c84a6[_0x50ec('0x2d')][_0x50ec('0x3d')]){_0x4a5422['include']=[{'all':!![]}];}_0x4a5422=_['merge']({},_0x4a5422,_0x4c84a6[_0x50ec('0x3c')]);return db['SquareMessage']['find'](_0x4a5422)['then'](handleEntityNotFound(_0x241437,null))['then'](respondWithResult(_0x241437,null))['catch'](handleError(_0x241437,null));};exports[_0x50ec('0x45')]=function(_0x246346,_0x20e624){return db[_0x50ec('0x27')][_0x50ec('0x45')](_0x246346[_0x50ec('0x46')],{})['then'](respondWithResult(_0x20e624,0xc9))[_0x50ec('0x47')](handleError(_0x20e624,null));};exports['update']=function(_0x274ee5,_0x79b3a3){if(_0x274ee5[_0x50ec('0x46')]['id']){delete _0x274ee5[_0x50ec('0x46')]['id'];}return db[_0x50ec('0x27')][_0x50ec('0x48')]({'where':{'id':_0x274ee5[_0x50ec('0x42')]['id']}})[_0x50ec('0x23')](handleEntityNotFound(_0x79b3a3,null))[_0x50ec('0x23')](saveUpdates(_0x274ee5['body'],null))[_0x50ec('0x23')](respondWithResult(_0x79b3a3,null))[_0x50ec('0x47')](handleError(_0x79b3a3,null));};exports[_0x50ec('0x49')]=function(_0xfc842,_0xc3a19f){return db[_0x50ec('0x27')][_0x50ec('0x48')]({'where':{'id':_0xfc842[_0x50ec('0x42')]['id']}})[_0x50ec('0x23')](handleEntityNotFound(_0xc3a19f,null))['then'](removeEntity(_0xc3a19f,null))['catch'](handleError(_0xc3a19f,null));};
\ No newline at end of file
index 06efa4a..0b4f76f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6608=['../../config/logger','bluebird','request-promise','path','rimraf','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x6608,0x8e));var _0x8660=function(_0x11161f,_0x557df1){_0x11161f=_0x11161f-0x0;var _0x24bddf=_0x6608[_0x11161f];return _0x24bddf;};'use strict';var _=require(_0x8660('0x0'));var util=require(_0x8660('0x1'));var logger=require(_0x8660('0x2'))('api');var moment=require('moment');var BPromise=require(_0x8660('0x3'));var rp=require(_0x8660('0x4'));var fs=require('fs');var path=require(_0x8660('0x5'));var rimraf=require(_0x8660('0x6'));var config=require('../../config/environment');var attributes=require(_0x8660('0x7'));module[_0x8660('0x8')]=function(_0x3104ee,_0x2c8cc1){return _0x3104ee[_0x8660('0x9')](_0x8660('0xa'),attributes,{'tableName':_0x8660('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x17a1=['exports','define','square_messages','lodash','util','api','moment','request-promise','rimraf','../../config/environment','./squareMessage.attributes'];(function(_0x24e2b2,_0x3a3ea1){var _0x140861=function(_0x2f59cb){while(--_0x2f59cb){_0x24e2b2['push'](_0x24e2b2['shift']());}};_0x140861(++_0x3a3ea1);}(_0x17a1,0xc9));var _0x117a=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0x17a1[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require(_0x117a('0x0'));var util=require(_0x117a('0x1'));var logger=require('../../config/logger')(_0x117a('0x2'));var moment=require(_0x117a('0x3'));var BPromise=require('bluebird');var rp=require(_0x117a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x117a('0x5'));var config=require(_0x117a('0x6'));var attributes=require(_0x117a('0x7'));module[_0x117a('0x8')]=function(_0x4b25a6,_0x135297){return _0x4b25a6[_0x117a('0x9')]('SquareMessage',attributes,{'tableName':_0x117a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 102c106..5f424a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6381=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','lodash'];(function(_0x32403a,_0x558fdf){var _0x3df4c9=function(_0x16e06c){while(--_0x16e06c){_0x32403a['push'](_0x32403a['shift']());}};_0x3df4c9(++_0x558fdf);}(_0x6381,0x1a3));var _0x1638=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6381[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x1638('0x0'));var util=require('util');var moment=require(_0x1638('0x1'));var BPromise=require(_0x1638('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1638('0x3'));var db=require(_0x1638('0x4'))['db'];var utils=require(_0x1638('0x5'));var logger=require(_0x1638('0x6'))('rpc');var config=require(_0x1638('0x7'));var jayson=require(_0x1638('0x8'));var client=jayson['client'][_0x1638('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x30f5f8,_0x4af8fd,_0x30f0d3){return new BPromise(function(_0x280c44,_0x3520ba){return client[_0x1638('0xa')](_0x30f5f8,_0x30f0d3)[_0x1638('0xb')](function(_0x5a8e16){logger[_0x1638('0xc')](_0x1638('0xd'),_0x4af8fd,_0x1638('0xe'));logger[_0x1638('0xf')](_0x1638('0x10'),_0x4af8fd,'request\x20sent',JSON[_0x1638('0x11')](_0x5a8e16));if(_0x5a8e16[_0x1638('0x12')]){if(_0x5a8e16['error'][_0x1638('0x13')]===0x1f4){logger['error']('SquareMessage,\x20%s,\x20%s',_0x4af8fd,_0x5a8e16[_0x1638('0x12')]['message']);return _0x3520ba(_0x5a8e16['error'][_0x1638('0x14')]);}logger[_0x1638('0x12')]('SquareMessage,\x20%s,\x20%s',_0x4af8fd,_0x5a8e16[_0x1638('0x12')][_0x1638('0x14')]);return _0x280c44(_0x5a8e16[_0x1638('0x12')][_0x1638('0x14')]);}else{logger[_0x1638('0xc')]('SquareMessage,\x20%s,\x20%s',_0x4af8fd,'request\x20sent');_0x280c44(_0x5a8e16['result'][_0x1638('0x14')]);}})[_0x1638('0x15')](function(_0x4508d5){logger[_0x1638('0x12')]('SquareMessage,\x20%s,\x20%s',_0x4af8fd,_0x4508d5);_0x3520ba(_0x4508d5);});});}exports[_0x1638('0x16')]=function(_0x543c6c){var _0xe6015=this;return new Promise(function(_0x6dba25,_0xd46efc){return db[_0x1638('0x17')][_0x1638('0x18')](_0x543c6c[_0x1638('0x19')],{'raw':_0x543c6c[_0x1638('0x1a')]?_0x543c6c['options'][_0x1638('0x1b')]===undefined?!![]:![]:!![]})[_0x1638('0xb')](function(_0x41c9e2){logger[_0x1638('0xc')](_0x1638('0x16'),_0x543c6c);logger[_0x1638('0xf')](_0x1638('0x16'),_0x543c6c,JSON[_0x1638('0x11')](_0x41c9e2));_0x6dba25(_0x41c9e2);})[_0x1638('0x15')](function(_0xf81ea3){logger[_0x1638('0x12')](_0x1638('0x16'),_0xf81ea3['message'],_0x543c6c);_0xd46efc(_0xe6015[_0x1638('0x12')](0x1f4,_0xf81ea3['message']));});});};
\ No newline at end of file
+var _0x46c3=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareMessage','SquareMessage','options','raw','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x46c3,0x8c));var _0x346c=function(_0x4ef0e6,_0xbefccd){_0x4ef0e6=_0x4ef0e6-0x0;var _0x4f9ebe=_0x46c3[_0x4ef0e6];return _0x4f9ebe;};'use strict';var _=require(_0x346c('0x0'));var util=require(_0x346c('0x1'));var moment=require(_0x346c('0x2'));var BPromise=require(_0x346c('0x3'));var rs=require(_0x346c('0x4'));var fs=require('fs');var Redis=require(_0x346c('0x5'));var db=require(_0x346c('0x6'))['db'];var utils=require(_0x346c('0x7'));var logger=require(_0x346c('0x8'))(_0x346c('0x9'));var config=require('../../config/environment');var jayson=require(_0x346c('0xa'));var client=jayson['client'][_0x346c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xff24ac,_0x3dfe6c,_0x1eb8e7){return new BPromise(function(_0x125dde,_0x4cb102){return client[_0x346c('0xc')](_0xff24ac,_0x1eb8e7)['then'](function(_0x4d6457){logger[_0x346c('0xd')](_0x346c('0xe'),_0x3dfe6c,_0x346c('0xf'));logger[_0x346c('0x10')](_0x346c('0x11'),_0x3dfe6c,_0x346c('0xf'),JSON[_0x346c('0x12')](_0x4d6457));if(_0x4d6457[_0x346c('0x13')]){if(_0x4d6457['error']['code']===0x1f4){logger['error'](_0x346c('0xe'),_0x3dfe6c,_0x4d6457[_0x346c('0x13')]['message']);return _0x4cb102(_0x4d6457[_0x346c('0x13')][_0x346c('0x14')]);}logger['error']('SquareMessage,\x20%s,\x20%s',_0x3dfe6c,_0x4d6457[_0x346c('0x13')][_0x346c('0x14')]);return _0x125dde(_0x4d6457[_0x346c('0x13')][_0x346c('0x14')]);}else{logger['info']('SquareMessage,\x20%s,\x20%s',_0x3dfe6c,'request\x20sent');_0x125dde(_0x4d6457[_0x346c('0x15')][_0x346c('0x14')]);}})[_0x346c('0x16')](function(_0x4b2fb5){logger[_0x346c('0x13')](_0x346c('0xe'),_0x3dfe6c,_0x4b2fb5);_0x4cb102(_0x4b2fb5);});});}exports[_0x346c('0x17')]=function(_0x8df047){var _0x5cbd66=this;return new Promise(function(_0x5b4f0e,_0x1376be){return db[_0x346c('0x18')]['create'](_0x8df047['body'],{'raw':_0x8df047[_0x346c('0x19')]?_0x8df047['options'][_0x346c('0x1a')]===undefined?!![]:![]:!![]})[_0x346c('0x1b')](function(_0x1520e4){logger[_0x346c('0xd')](_0x346c('0x17'),_0x8df047);logger[_0x346c('0x10')]('CreateSquareMessage',_0x8df047,JSON['stringify'](_0x1520e4));_0x5b4f0e(_0x1520e4);})[_0x346c('0x16')](function(_0x7a8b3){logger['error'](_0x346c('0x17'),_0x7a8b3['message'],_0x8df047);_0x1376be(_0x5cbd66[_0x346c('0x13')](0x1f4,_0x7a8b3[_0x346c('0x14')]));});});};
\ No newline at end of file
index a81ca1f..cd526f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x116d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','show','/:id/test','test','create','put','/:id','update','delete','destroy','exports','multer','util','express','Router','fs-extra'];(function(_0x3b767d,_0x2d5aa7){var _0x439d41=function(_0x99fc88){while(--_0x99fc88){_0x3b767d['push'](_0x3b767d['shift']());}};_0x439d41(++_0x2d5aa7);}(_0x116d,0x79));var _0xd116=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x116d[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0xd116('0x0'));var util=require(_0xd116('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd116('0x2'));var router=express[_0xd116('0x3')]();var fs_extra=require(_0xd116('0x4'));var auth=require(_0xd116('0x5'));var interaction=require(_0xd116('0x6'));var config=require(_0xd116('0x7'));var controller=require(_0xd116('0x8'));router[_0xd116('0x9')]('/',auth[_0xd116('0xa')](),controller['index']);router[_0xd116('0x9')]('/:id',auth[_0xd116('0xa')](),controller[_0xd116('0xb')]);router[_0xd116('0x9')](_0xd116('0xc'),auth[_0xd116('0xa')](),timeout('15s'),controller[_0xd116('0xd')]);router['post']('/',auth[_0xd116('0xa')](),controller[_0xd116('0xe')]);router[_0xd116('0xf')](_0xd116('0x10'),auth[_0xd116('0xa')](),controller[_0xd116('0x11')]);router[_0xd116('0x12')](_0xd116('0x10'),auth[_0xd116('0xa')](),controller[_0xd116('0x13')]);module[_0xd116('0x14')]=router;
\ No newline at end of file
+var _0xe54b=['util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./squareOdbc.controller','get','isAuthenticated','index','/:id','show','/:id/test','15s','test','create','put','update','destroy','multer'];(function(_0x46a79f,_0x2c23d6){var _0x3ddb0d=function(_0x25b551){while(--_0x25b551){_0x46a79f['push'](_0x46a79f['shift']());}};_0x3ddb0d(++_0x2c23d6);}(_0xe54b,0x18f));var _0xbe54=function(_0x437dad,_0x373630){_0x437dad=_0x437dad-0x0;var _0x3421bf=_0xe54b[_0x437dad];return _0x3421bf;};'use strict';var multer=require(_0xbe54('0x0'));var util=require(_0xbe54('0x1'));var path=require('path');var timeout=require(_0xbe54('0x2'));var express=require(_0xbe54('0x3'));var router=express['Router']();var fs_extra=require(_0xbe54('0x4'));var auth=require(_0xbe54('0x5'));var interaction=require(_0xbe54('0x6'));var config=require('../../config/environment');var controller=require(_0xbe54('0x7'));router[_0xbe54('0x8')]('/',auth[_0xbe54('0x9')](),controller[_0xbe54('0xa')]);router[_0xbe54('0x8')](_0xbe54('0xb'),auth['isAuthenticated'](),controller[_0xbe54('0xc')]);router[_0xbe54('0x8')](_0xbe54('0xd'),auth[_0xbe54('0x9')](),timeout(_0xbe54('0xe')),controller[_0xbe54('0xf')]);router['post']('/',auth[_0xbe54('0x9')](),controller[_0xbe54('0x10')]);router[_0xbe54('0x11')](_0xbe54('0xb'),auth[_0xbe54('0x9')](),controller[_0xbe54('0x12')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xbe54('0x13')]);module['exports']=router;
\ No newline at end of file
index 72f7b20..c3ecf41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc722=['sequelize','exports','STRING'];(function(_0xf80a73,_0x36ab73){var _0x4ff2ca=function(_0x13dade){while(--_0x13dade){_0xf80a73['push'](_0xf80a73['shift']());}};_0x4ff2ca(++_0x36ab73);}(_0xc722,0x198));var _0x2c72=function(_0x495659,_0x1d76c2){_0x495659=_0x495659-0x0;var _0x111d16=_0xc722[_0x495659];return _0x111d16;};'use strict';var Sequelize=require(_0x2c72('0x0'));module[_0x2c72('0x1')]={'name':{'type':Sequelize[_0x2c72('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0x2c72('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6fae=['STRING','exports'];(function(_0x562f0a,_0x1593f5){var _0x1b2cba=function(_0x452780){while(--_0x452780){_0x562f0a['push'](_0x562f0a['shift']());}};_0x1b2cba(++_0x1593f5);}(_0x6fae,0x12b));var _0xe6fa=function(_0x40dbc9,_0x243b91){_0x40dbc9=_0x40dbc9-0x0;var _0x183351=_0x6fae[_0x40dbc9];return _0x183351;};'use strict';var Sequelize=require('sequelize');module[_0xe6fa('0x0')]={'name':{'type':Sequelize[_0xe6fa('0x1')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0xe6fa('0x1')]},'description':{'type':Sequelize[_0xe6fa('0x1')]}};
\ No newline at end of file
index 4b8eedc..3a0913b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3609=['sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','keys','length','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','test','dsn','odbc','openSync','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','offset','count','limit','status','set','apply','save','update','then','get','ODBC','UserProfileResource','destroy','stack','name','send','index','map','SquareOdbc','rawAttributes','type','key','query','intersection','model','attributes','fields','hasOwnProperty','nolimit'];(function(_0x4b2975,_0x2be462){var _0x3bc9e8=function(_0x4d1a7e){while(--_0x4d1a7e){_0x4b2975['push'](_0x4b2975['shift']());}};_0x3bc9e8(++_0x2be462);}(_0x3609,0x119));var _0x9360=function(_0xa65d00,_0x54807f){_0xa65d00=_0xa65d00-0x0;var _0x5c2e44=_0x3609[_0xa65d00];return _0x5c2e44;};'use strict';var emlformat=require(_0x9360('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9360('0x1'));var jsonpatch=require(_0x9360('0x2'));var rp=require(_0x9360('0x3'));var moment=require('moment');var BPromise=require(_0x9360('0x4'));var Mustache=require(_0x9360('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x9360('0x6'));var ejs=require(_0x9360('0x7'));var fs=require('fs');var fs_extra=require(_0x9360('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9360('0x9'));var jsforce=require(_0x9360('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x9360('0x6'));var querystring=require(_0x9360('0xb'));var Papa=require('papaparse');var Redis=require(_0x9360('0xc'));var authService=require(_0x9360('0xd'));var qs=require(_0x9360('0xe'));var as=require(_0x9360('0xf'));var hardwareService=require(_0x9360('0x10'));var logger=require(_0x9360('0x11'))(_0x9360('0x12'));var utils=require(_0x9360('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x9360('0x14'));var db=require(_0x9360('0x15'))['db'];function respondWithStatusCode(_0x3cbba9,_0x41aa54){_0x41aa54=_0x41aa54||0xcc;return function(_0x3e28ac){if(_0x3e28ac){return _0x3cbba9[_0x9360('0x16')](_0x41aa54);}return _0x3cbba9['status'](_0x41aa54)[_0x9360('0x17')]();};}function respondWithResult(_0x394110,_0x130ee0){_0x130ee0=_0x130ee0||0xc8;return function(_0x23b178){if(_0x23b178){return _0x394110['status'](_0x130ee0)[_0x9360('0x18')](_0x23b178);}};}function respondWithFilteredResult(_0x30deea,_0xda710f){return function(_0x3b11fd){if(_0x3b11fd){var _0x4a59ab=typeof _0xda710f['offset']===_0x9360('0x19')&&typeof _0xda710f['limit']===_0x9360('0x19');var _0x12989d=_0x3b11fd['count'];var _0x2c356f=_0x4a59ab?0x0:_0xda710f[_0x9360('0x1a')];var _0x57fafa=_0x4a59ab?_0x3b11fd[_0x9360('0x1b')]:_0xda710f['offset']+_0xda710f[_0x9360('0x1c')];var _0x563c5b;if(_0x57fafa>=_0x12989d){_0x57fafa=_0x12989d;_0x563c5b=0xc8;}else{_0x563c5b=0xce;}_0x30deea[_0x9360('0x1d')](_0x563c5b);return _0x30deea[_0x9360('0x1e')]('Content-Range',_0x2c356f+'-'+_0x57fafa+'/'+_0x12989d)[_0x9360('0x18')](_0x3b11fd);}return null;};}function patchUpdates(_0xead030){return function(_0x12d9b2){try{jsonpatch[_0x9360('0x1f')](_0x12d9b2,_0xead030,!![]);}catch(_0x19d15d){return BPromise['reject'](_0x19d15d);}return _0x12d9b2[_0x9360('0x20')]();};}function saveUpdates(_0x1d7b7b,_0x196b3e){return function(_0x43c464){if(_0x43c464){return _0x43c464[_0x9360('0x21')](_0x1d7b7b)[_0x9360('0x22')](function(_0x547c7b){return _0x547c7b;});}return null;};}function removeEntity(_0x31606e,_0x16c367){return function(_0x39ab2a){if(_0x39ab2a){return _0x39ab2a['destroy']()[_0x9360('0x22')](function(){var _0x1f1c2e=_0x39ab2a[_0x9360('0x23')]({'plain':!![]});var _0x339b9d=_0x9360('0x24');return db[_0x9360('0x25')][_0x9360('0x26')]({'where':{'type':_0x339b9d,'resourceId':_0x1f1c2e['id']}})[_0x9360('0x22')](function(){return _0x39ab2a;});})['then'](function(){_0x31606e[_0x9360('0x1d')](0xcc)[_0x9360('0x17')]();});}};}function handleEntityNotFound(_0x8ac592,_0x270e41){return function(_0x5d0ba4){if(!_0x5d0ba4){_0x8ac592[_0x9360('0x16')](0x194);}return _0x5d0ba4;};}function handleError(_0x455a26,_0x386473){_0x386473=_0x386473||0x1f4;return function(_0x4849e9){logger['error'](_0x4849e9[_0x9360('0x27')]);if(_0x4849e9[_0x9360('0x28')]){delete _0x4849e9['name'];}_0x455a26['status'](_0x386473)[_0x9360('0x29')](_0x4849e9);};}exports[_0x9360('0x2a')]=function(_0x342636,_0x5031a6){var _0x519f74={},_0x3cf868={},_0x11f755={'count':0x0,'rows':[]};var _0x3c8a46=_[_0x9360('0x2b')](db[_0x9360('0x2c')][_0x9360('0x2d')],function(_0x393cbd){return{'name':_0x393cbd['fieldName'],'type':_0x393cbd[_0x9360('0x2e')][_0x9360('0x2f')]};});_0x3cf868['model']=_['map'](_0x3c8a46,_0x9360('0x28'));_0x3cf868[_0x9360('0x30')]=_['keys'](_0x342636[_0x9360('0x30')]);_0x3cf868['filters']=_[_0x9360('0x31')](_0x3cf868[_0x9360('0x32')],_0x3cf868[_0x9360('0x30')]);_0x519f74[_0x9360('0x33')]=_[_0x9360('0x31')](_0x3cf868[_0x9360('0x32')],qs['fields'](_0x342636['query'][_0x9360('0x34')]));_0x519f74[_0x9360('0x33')]=_0x519f74[_0x9360('0x33')]['length']?_0x519f74['attributes']:_0x3cf868[_0x9360('0x32')];if(!_0x342636[_0x9360('0x30')][_0x9360('0x35')](_0x9360('0x36'))){_0x519f74[_0x9360('0x1c')]=qs['limit'](_0x342636[_0x9360('0x30')][_0x9360('0x1c')]);_0x519f74[_0x9360('0x1a')]=qs[_0x9360('0x1a')](_0x342636[_0x9360('0x30')][_0x9360('0x1a')]);}_0x519f74['order']=qs[_0x9360('0x37')](_0x342636[_0x9360('0x30')][_0x9360('0x37')]);_0x519f74['where']=qs[_0x9360('0x38')](_[_0x9360('0x39')](_0x342636[_0x9360('0x30')],_0x3cf868['filters']),_0x3c8a46);if(_0x342636[_0x9360('0x30')]['filter']){_0x519f74[_0x9360('0x3a')]=_[_0x9360('0x3b')](_0x519f74[_0x9360('0x3a')],{'$or':_[_0x9360('0x2b')](_0x3c8a46,function(_0x3cc556){if(_0x3cc556[_0x9360('0x2e')]!==_0x9360('0x3c')){var _0x207a8f={};_0x207a8f[_0x3cc556[_0x9360('0x28')]]={'$like':'%'+_0x342636[_0x9360('0x30')][_0x9360('0x3d')]+'%'};return _0x207a8f;}})});}_0x519f74=_['merge']({},_0x519f74,_0x342636[_0x9360('0x3e')]);var _0x29df37={'where':_0x519f74[_0x9360('0x3a')]};return db[_0x9360('0x2c')]['count'](_0x29df37)[_0x9360('0x22')](function(_0x162526){_0x11f755[_0x9360('0x1b')]=_0x162526;if(_0x342636[_0x9360('0x30')][_0x9360('0x3f')]){_0x519f74[_0x9360('0x40')]=[{'all':!![]}];}return db[_0x9360('0x2c')][_0x9360('0x41')](_0x519f74);})[_0x9360('0x22')](function(_0x1ddf8c){_0x11f755['rows']=_0x1ddf8c;return _0x11f755;})['then'](respondWithFilteredResult(_0x5031a6,_0x519f74))['catch'](handleError(_0x5031a6,null));};exports[_0x9360('0x42')]=function(_0x2d038d,_0x5f2efe){var _0x401689={'raw':!![],'where':{'id':_0x2d038d['params']['id']}},_0x4825ed={};_0x4825ed[_0x9360('0x32')]=_['keys'](db['SquareOdbc'][_0x9360('0x2d')]);_0x4825ed[_0x9360('0x30')]=_[_0x9360('0x43')](_0x2d038d[_0x9360('0x30')]);_0x4825ed[_0x9360('0x38')]=_[_0x9360('0x31')](_0x4825ed[_0x9360('0x32')],_0x4825ed['query']);_0x401689[_0x9360('0x33')]=_[_0x9360('0x31')](_0x4825ed['model'],qs['fields'](_0x2d038d[_0x9360('0x30')]['fields']));_0x401689['attributes']=_0x401689['attributes'][_0x9360('0x44')]?_0x401689[_0x9360('0x33')]:_0x4825ed[_0x9360('0x32')];if(_0x2d038d[_0x9360('0x30')][_0x9360('0x3f')]){_0x401689[_0x9360('0x40')]=[{'all':!![]}];}_0x401689=_[_0x9360('0x3b')]({},_0x401689,_0x2d038d[_0x9360('0x3e')]);return db['SquareOdbc'][_0x9360('0x45')](_0x401689)[_0x9360('0x22')](handleEntityNotFound(_0x5f2efe,null))[_0x9360('0x22')](respondWithResult(_0x5f2efe,null))[_0x9360('0x46')](handleError(_0x5f2efe,null));};exports[_0x9360('0x47')]=function(_0x281521,_0x39a481){return db[_0x9360('0x2c')][_0x9360('0x47')](_0x281521[_0x9360('0x48')],{})[_0x9360('0x22')](function(_0x5f7a27){var _0x47c9c6=_0x281521[_0x9360('0x49')][_0x9360('0x23')]({'plain':!![]});if(!_0x47c9c6)throw new Error(_0x9360('0x4a'));if(_0x47c9c6[_0x9360('0x4b')]===_0x9360('0x49')){var _0x51b870=_0x5f7a27['get']({'plain':!![]});var _0x512cc0=_0x9360('0x24');return db[_0x9360('0x4c')][_0x9360('0x45')]({'where':{'name':_0x512cc0,'userProfileId':_0x47c9c6['userProfileId']},'raw':!![]})[_0x9360('0x22')](function(_0x169fb2){if(_0x169fb2&&_0x169fb2[_0x9360('0x4d')]===0x0){return db[_0x9360('0x25')][_0x9360('0x47')]({'name':_0x51b870[_0x9360('0x28')],'resourceId':_0x51b870['id'],'type':_0x169fb2[_0x9360('0x28')],'sectionId':_0x169fb2['id']},{})[_0x9360('0x22')](function(){return _0x5f7a27;});}else{return _0x5f7a27;}})[_0x9360('0x46')](function(_0x517217){logger['error'](_0x9360('0x4e'),_0x517217);throw _0x517217;});}return _0x5f7a27;})['then'](respondWithResult(_0x39a481,0xc9))[_0x9360('0x46')](handleError(_0x39a481,null));};exports['update']=function(_0x1b81a5,_0x462c48){if(_0x1b81a5['body']['id']){delete _0x1b81a5[_0x9360('0x48')]['id'];}return db['SquareOdbc'][_0x9360('0x45')]({'where':{'id':_0x1b81a5['params']['id']}})[_0x9360('0x22')](handleEntityNotFound(_0x462c48,null))[_0x9360('0x22')](saveUpdates(_0x1b81a5[_0x9360('0x48')],null))['then'](respondWithResult(_0x462c48,null))['catch'](handleError(_0x462c48,null));};exports[_0x9360('0x26')]=function(_0x18e6ed,_0x55894c){return db['SquareOdbc'][_0x9360('0x45')]({'where':{'id':_0x18e6ed[_0x9360('0x4f')]['id']}})[_0x9360('0x22')](handleEntityNotFound(_0x55894c,null))['then'](removeEntity(_0x55894c,null))[_0x9360('0x46')](handleError(_0x55894c,null));};exports[_0x9360('0x50')]=function(_0xa37271,_0x4902af,_0x127aaf){var _0x23af10;return db[_0x9360('0x2c')][_0x9360('0x45')]({'where':{'id':_0xa37271[_0x9360('0x4f')]['id']},'attributes':['id',_0x9360('0x51')]})[_0x9360('0x22')](handleEntityNotFound(_0x4902af,null))[_0x9360('0x22')](function(_0x1c929f){if(_0x1c929f){var _0x2c9461=require(_0x9360('0x52'))();_0x2c9461[_0x9360('0x53')](_0x1c929f[_0x9360('0x51')]);_0x2c9461['closeSync']();return _0x1c929f;}})[_0x9360('0x22')](respondWithResult(_0x4902af,null))[_0x9360('0x46')](handleError(_0x4902af,null));};
\ No newline at end of file
+var _0x1fd8=['SquareOdbc','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','params','keys','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','test','dsn','odbc','openSync','closeSync','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','get','ODBC','UserProfileResource','end','error','name','send','index'];(function(_0x544941,_0x42eedf){var _0x3be7de=function(_0xfbdf5b){while(--_0xfbdf5b){_0x544941['push'](_0x544941['shift']());}};_0x3be7de(++_0x42eedf);}(_0x1fd8,0x83));var _0x81fd=function(_0x1787df,_0x435a15){_0x1787df=_0x1787df-0x0;var _0x2e73df=_0x1fd8[_0x1787df];return _0x2e73df;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x81fd('0x0'));var zipdir=require(_0x81fd('0x1'));var jsonpatch=require(_0x81fd('0x2'));var rp=require('request-promise');var moment=require(_0x81fd('0x3'));var BPromise=require(_0x81fd('0x4'));var Mustache=require(_0x81fd('0x5'));var util=require(_0x81fd('0x6'));var path=require(_0x81fd('0x7'));var sox=require(_0x81fd('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x81fd('0x9'));var _=require(_0x81fd('0xa'));var squel=require(_0x81fd('0xb'));var crypto=require(_0x81fd('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x81fd('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x81fd('0xe'));var authService=require(_0x81fd('0xf'));var qs=require(_0x81fd('0x10'));var as=require(_0x81fd('0x11'));var hardwareService=require(_0x81fd('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x81fd('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x81fd('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1efdfc,_0x33490a){_0x33490a=_0x33490a||0xcc;return function(_0x457bec){if(_0x457bec){return _0x1efdfc[_0x81fd('0x15')](_0x33490a);}return _0x1efdfc[_0x81fd('0x16')](_0x33490a)['end']();};}function respondWithResult(_0x3a3fcc,_0xacfc14){_0xacfc14=_0xacfc14||0xc8;return function(_0x29ad95){if(_0x29ad95){return _0x3a3fcc[_0x81fd('0x16')](_0xacfc14)[_0x81fd('0x17')](_0x29ad95);}};}function respondWithFilteredResult(_0x3fd914,_0x554986){return function(_0x19cb7){if(_0x19cb7){var _0x4fa239=typeof _0x554986['offset']===_0x81fd('0x18')&&typeof _0x554986[_0x81fd('0x19')]===_0x81fd('0x18');var _0x10673b=_0x19cb7[_0x81fd('0x1a')];var _0x1adaa8=_0x4fa239?0x0:_0x554986['offset'];var _0x326ab1=_0x4fa239?_0x19cb7[_0x81fd('0x1a')]:_0x554986[_0x81fd('0x1b')]+_0x554986[_0x81fd('0x19')];var _0x2d148a;if(_0x326ab1>=_0x10673b){_0x326ab1=_0x10673b;_0x2d148a=0xc8;}else{_0x2d148a=0xce;}_0x3fd914[_0x81fd('0x16')](_0x2d148a);return _0x3fd914[_0x81fd('0x1c')](_0x81fd('0x1d'),_0x1adaa8+'-'+_0x326ab1+'/'+_0x10673b)['json'](_0x19cb7);}return null;};}function patchUpdates(_0x200bb9){return function(_0x3dcbf9){try{jsonpatch[_0x81fd('0x1e')](_0x3dcbf9,_0x200bb9,!![]);}catch(_0x425662){return BPromise[_0x81fd('0x1f')](_0x425662);}return _0x3dcbf9[_0x81fd('0x20')]();};}function saveUpdates(_0x3ac127,_0x3c2174){return function(_0x36a754){if(_0x36a754){return _0x36a754['update'](_0x3ac127)[_0x81fd('0x21')](function(_0x5bbdd0){return _0x5bbdd0;});}return null;};}function removeEntity(_0x5522fc,_0x3cf8cb){return function(_0x2e7ef4){if(_0x2e7ef4){return _0x2e7ef4[_0x81fd('0x22')]()['then'](function(){var _0x591859=_0x2e7ef4[_0x81fd('0x23')]({'plain':!![]});var _0x36dfac=_0x81fd('0x24');return db[_0x81fd('0x25')][_0x81fd('0x22')]({'where':{'type':_0x36dfac,'resourceId':_0x591859['id']}})[_0x81fd('0x21')](function(){return _0x2e7ef4;});})['then'](function(){_0x5522fc[_0x81fd('0x16')](0xcc)[_0x81fd('0x26')]();});}};}function handleEntityNotFound(_0x56f202,_0x3552c2){return function(_0x2b3ae6){if(!_0x2b3ae6){_0x56f202[_0x81fd('0x15')](0x194);}return _0x2b3ae6;};}function handleError(_0x22b534,_0x359ec1){_0x359ec1=_0x359ec1||0x1f4;return function(_0x59543b){logger[_0x81fd('0x27')](_0x59543b['stack']);if(_0x59543b[_0x81fd('0x28')]){delete _0x59543b[_0x81fd('0x28')];}_0x22b534[_0x81fd('0x16')](_0x359ec1)[_0x81fd('0x29')](_0x59543b);};}exports[_0x81fd('0x2a')]=function(_0x8a4247,_0x5b7a77){var _0x5cb583={},_0x2cf64c={},_0x52456b={'count':0x0,'rows':[]};var _0x4fe5d9=_['map'](db[_0x81fd('0x2b')][_0x81fd('0x2c')],function(_0x1ee51c){return{'name':_0x1ee51c[_0x81fd('0x2d')],'type':_0x1ee51c[_0x81fd('0x2e')][_0x81fd('0x2f')]};});_0x2cf64c[_0x81fd('0x30')]=_[_0x81fd('0x31')](_0x4fe5d9,'name');_0x2cf64c[_0x81fd('0x32')]=_['keys'](_0x8a4247[_0x81fd('0x32')]);_0x2cf64c[_0x81fd('0x33')]=_[_0x81fd('0x34')](_0x2cf64c['model'],_0x2cf64c[_0x81fd('0x32')]);_0x5cb583[_0x81fd('0x35')]=_[_0x81fd('0x34')](_0x2cf64c['model'],qs[_0x81fd('0x36')](_0x8a4247[_0x81fd('0x32')]['fields']));_0x5cb583['attributes']=_0x5cb583['attributes'][_0x81fd('0x37')]?_0x5cb583[_0x81fd('0x35')]:_0x2cf64c[_0x81fd('0x30')];if(!_0x8a4247[_0x81fd('0x32')][_0x81fd('0x38')](_0x81fd('0x39'))){_0x5cb583[_0x81fd('0x19')]=qs['limit'](_0x8a4247[_0x81fd('0x32')]['limit']);_0x5cb583[_0x81fd('0x1b')]=qs['offset'](_0x8a4247[_0x81fd('0x32')]['offset']);}_0x5cb583[_0x81fd('0x3a')]=qs[_0x81fd('0x3b')](_0x8a4247[_0x81fd('0x32')][_0x81fd('0x3b')]);_0x5cb583[_0x81fd('0x3c')]=qs[_0x81fd('0x33')](_[_0x81fd('0x3d')](_0x8a4247['query'],_0x2cf64c[_0x81fd('0x33')]),_0x4fe5d9);if(_0x8a4247['query'][_0x81fd('0x3e')]){_0x5cb583[_0x81fd('0x3c')]=_[_0x81fd('0x3f')](_0x5cb583[_0x81fd('0x3c')],{'$or':_[_0x81fd('0x31')](_0x4fe5d9,function(_0x208de8){if(_0x208de8[_0x81fd('0x2e')]!=='VIRTUAL'){var _0x456410={};_0x456410[_0x208de8[_0x81fd('0x28')]]={'$like':'%'+_0x8a4247['query'][_0x81fd('0x3e')]+'%'};return _0x456410;}})});}_0x5cb583=_[_0x81fd('0x3f')]({},_0x5cb583,_0x8a4247['options']);var _0x367805={'where':_0x5cb583[_0x81fd('0x3c')]};return db[_0x81fd('0x2b')][_0x81fd('0x1a')](_0x367805)[_0x81fd('0x21')](function(_0x31e326){_0x52456b[_0x81fd('0x1a')]=_0x31e326;if(_0x8a4247[_0x81fd('0x32')][_0x81fd('0x40')]){_0x5cb583[_0x81fd('0x41')]=[{'all':!![]}];}return db[_0x81fd('0x2b')][_0x81fd('0x42')](_0x5cb583);})[_0x81fd('0x21')](function(_0x37b85c){_0x52456b[_0x81fd('0x43')]=_0x37b85c;return _0x52456b;})[_0x81fd('0x21')](respondWithFilteredResult(_0x5b7a77,_0x5cb583))['catch'](handleError(_0x5b7a77,null));};exports['show']=function(_0x3a0f27,_0xf31960){var _0x5dbc28={'raw':!![],'where':{'id':_0x3a0f27[_0x81fd('0x44')]['id']}},_0x5b3f2b={};_0x5b3f2b[_0x81fd('0x30')]=_[_0x81fd('0x45')](db[_0x81fd('0x2b')][_0x81fd('0x2c')]);_0x5b3f2b['query']=_[_0x81fd('0x45')](_0x3a0f27['query']);_0x5b3f2b[_0x81fd('0x33')]=_['intersection'](_0x5b3f2b[_0x81fd('0x30')],_0x5b3f2b[_0x81fd('0x32')]);_0x5dbc28[_0x81fd('0x35')]=_['intersection'](_0x5b3f2b[_0x81fd('0x30')],qs[_0x81fd('0x36')](_0x3a0f27[_0x81fd('0x32')][_0x81fd('0x36')]));_0x5dbc28[_0x81fd('0x35')]=_0x5dbc28[_0x81fd('0x35')][_0x81fd('0x37')]?_0x5dbc28[_0x81fd('0x35')]:_0x5b3f2b['model'];if(_0x3a0f27[_0x81fd('0x32')][_0x81fd('0x40')]){_0x5dbc28[_0x81fd('0x41')]=[{'all':!![]}];}_0x5dbc28=_['merge']({},_0x5dbc28,_0x3a0f27[_0x81fd('0x46')]);return db[_0x81fd('0x2b')]['find'](_0x5dbc28)[_0x81fd('0x21')](handleEntityNotFound(_0xf31960,null))[_0x81fd('0x21')](respondWithResult(_0xf31960,null))['catch'](handleError(_0xf31960,null));};exports[_0x81fd('0x47')]=function(_0x351d38,_0xd8daef){return db['SquareOdbc'][_0x81fd('0x47')](_0x351d38[_0x81fd('0x48')],{})['then'](function(_0x187561){var _0x3d7e7b=_0x351d38[_0x81fd('0x49')][_0x81fd('0x23')]({'plain':!![]});if(!_0x3d7e7b)throw new Error(_0x81fd('0x4a'));if(_0x3d7e7b['role']===_0x81fd('0x49')){var _0x4fe925=_0x187561[_0x81fd('0x23')]({'plain':!![]});var _0xb9e45f='ODBC';return db[_0x81fd('0x4b')]['find']({'where':{'name':_0xb9e45f,'userProfileId':_0x3d7e7b[_0x81fd('0x4c')]},'raw':!![]})[_0x81fd('0x21')](function(_0x27c5b4){if(_0x27c5b4&&_0x27c5b4[_0x81fd('0x4d')]===0x0){return db['UserProfileResource'][_0x81fd('0x47')]({'name':_0x4fe925['name'],'resourceId':_0x4fe925['id'],'type':_0x27c5b4[_0x81fd('0x28')],'sectionId':_0x27c5b4['id']},{})[_0x81fd('0x21')](function(){return _0x187561;});}else{return _0x187561;}})[_0x81fd('0x4e')](function(_0x1baaac){logger['error'](_0x81fd('0x4f'),_0x1baaac);throw _0x1baaac;});}return _0x187561;})[_0x81fd('0x21')](respondWithResult(_0xd8daef,0xc9))['catch'](handleError(_0xd8daef,null));};exports[_0x81fd('0x50')]=function(_0x5e80ea,_0x359680){if(_0x5e80ea['body']['id']){delete _0x5e80ea[_0x81fd('0x48')]['id'];}return db['SquareOdbc'][_0x81fd('0x51')]({'where':{'id':_0x5e80ea[_0x81fd('0x44')]['id']}})[_0x81fd('0x21')](handleEntityNotFound(_0x359680,null))[_0x81fd('0x21')](saveUpdates(_0x5e80ea[_0x81fd('0x48')],null))[_0x81fd('0x21')](respondWithResult(_0x359680,null))['catch'](handleError(_0x359680,null));};exports['destroy']=function(_0x1dbc85,_0x9a7492){return db[_0x81fd('0x2b')]['find']({'where':{'id':_0x1dbc85[_0x81fd('0x44')]['id']}})['then'](handleEntityNotFound(_0x9a7492,null))[_0x81fd('0x21')](removeEntity(_0x9a7492,null))[_0x81fd('0x4e')](handleError(_0x9a7492,null));};exports[_0x81fd('0x52')]=function(_0x63926c,_0x481054,_0x31fe0d){var _0x2575ad;return db['SquareOdbc'][_0x81fd('0x51')]({'where':{'id':_0x63926c[_0x81fd('0x44')]['id']},'attributes':['id',_0x81fd('0x53')]})[_0x81fd('0x21')](handleEntityNotFound(_0x481054,null))['then'](function(_0x5402eb){if(_0x5402eb){var _0x1516e6=require(_0x81fd('0x54'))();_0x1516e6[_0x81fd('0x55')](_0x5402eb[_0x81fd('0x53')]);_0x1516e6[_0x81fd('0x56')]();return _0x5402eb;}})[_0x81fd('0x21')](respondWithResult(_0x481054,null))[_0x81fd('0x4e')](handleError(_0x481054,null));};
\ No newline at end of file
index d460296..b24cf8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa79=['api','bluebird','request-promise','path','exports','define','lodash','util','../../config/logger'];(function(_0x40004e,_0x11e33d){var _0x1bf37a=function(_0x29913f){while(--_0x29913f){_0x40004e['push'](_0x40004e['shift']());}};_0x1bf37a(++_0x11e33d);}(_0xaa79,0x10b));var _0x9aa7=function(_0x447415,_0xa4b5bb){_0x447415=_0x447415-0x0;var _0x4d96d8=_0xaa79[_0x447415];return _0x4d96d8;};'use strict';var _=require(_0x9aa7('0x0'));var util=require(_0x9aa7('0x1'));var logger=require(_0x9aa7('0x2'))(_0x9aa7('0x3'));var moment=require('moment');var BPromise=require(_0x9aa7('0x4'));var rp=require(_0x9aa7('0x5'));var fs=require('fs');var path=require(_0x9aa7('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./squareOdbc.attributes');module[_0x9aa7('0x7')]=function(_0x133565,_0x4f41b7){return _0x133565[_0x9aa7('0x8')]('SquareOdbc',attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5e9a=['define','SquareOdbc','lodash','util','../../config/logger','api','request-promise','path','rimraf','./squareOdbc.attributes'];(function(_0xd1c39b,_0x16f0c6){var _0x58f5bc=function(_0x412cf3){while(--_0x412cf3){_0xd1c39b['push'](_0xd1c39b['shift']());}};_0x58f5bc(++_0x16f0c6);}(_0x5e9a,0x160));var _0xa5e9=function(_0x17e7e0,_0x4248ee){_0x17e7e0=_0x17e7e0-0x0;var _0x886e37=_0x5e9a[_0x17e7e0];return _0x886e37;};'use strict';var _=require(_0xa5e9('0x0'));var util=require(_0xa5e9('0x1'));var logger=require(_0xa5e9('0x2'))(_0xa5e9('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa5e9('0x4'));var fs=require('fs');var path=require(_0xa5e9('0x5'));var rimraf=require(_0xa5e9('0x6'));var config=require('../../config/environment');var attributes=require(_0xa5e9('0x7'));module['exports']=function(_0x55ec0b,_0x126d09){return _0x55ec0b[_0xa5e9('0x8')](_0xa5e9('0x9'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c092aa3..2c19336 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2130=['SquareOdbc','options','raw','attributes','include','map','model','ShowSquareOdbc','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareOdbc,\x20%s,\x20%s','message','result','catch'];(function(_0x50667a,_0x86eb28){var _0x4987e5=function(_0x4482b1){while(--_0x4482b1){_0x50667a['push'](_0x50667a['shift']());}};_0x4987e5(++_0x86eb28);}(_0x2130,0x1b5));var _0x0213=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x2130[_0x13e741];return _0x3f8bb3;};'use strict';var _=require(_0x0213('0x0'));var util=require(_0x0213('0x1'));var moment=require(_0x0213('0x2'));var BPromise=require('bluebird');var rs=require(_0x0213('0x3'));var fs=require('fs');var Redis=require(_0x0213('0x4'));var db=require(_0x0213('0x5'))['db'];var utils=require(_0x0213('0x6'));var logger=require(_0x0213('0x7'))(_0x0213('0x8'));var config=require(_0x0213('0x9'));var jayson=require(_0x0213('0xa'));var client=jayson[_0x0213('0xb')][_0x0213('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1a0593,_0x5c62f2,_0x14111e){return new BPromise(function(_0x218609,_0xebfd4f){return client[_0x0213('0xd')](_0x1a0593,_0x14111e)[_0x0213('0xe')](function(_0x5d4c4f){logger[_0x0213('0xf')]('SquareOdbc,\x20%s,\x20%s',_0x5c62f2,_0x0213('0x10'));logger['debug'](_0x0213('0x11'),_0x5c62f2,_0x0213('0x10'),JSON[_0x0213('0x12')](_0x5d4c4f));if(_0x5d4c4f[_0x0213('0x13')]){if(_0x5d4c4f[_0x0213('0x13')][_0x0213('0x14')]===0x1f4){logger[_0x0213('0x13')](_0x0213('0x15'),_0x5c62f2,_0x5d4c4f['error'][_0x0213('0x16')]);return _0xebfd4f(_0x5d4c4f[_0x0213('0x13')][_0x0213('0x16')]);}logger[_0x0213('0x13')]('SquareOdbc,\x20%s,\x20%s',_0x5c62f2,_0x5d4c4f[_0x0213('0x13')][_0x0213('0x16')]);return _0x218609(_0x5d4c4f['error'][_0x0213('0x16')]);}else{logger[_0x0213('0xf')](_0x0213('0x15'),_0x5c62f2,_0x0213('0x10'));_0x218609(_0x5d4c4f[_0x0213('0x17')]['message']);}})[_0x0213('0x18')](function(_0x3eba96){logger['error'](_0x0213('0x15'),_0x5c62f2,_0x3eba96);_0xebfd4f(_0x3eba96);});});}exports['ShowSquareOdbc']=function(_0x3ddeee){var _0x5a0cd7=this;return new Promise(function(_0x4983c9,_0x1bedac){return db[_0x0213('0x19')]['find']({'raw':_0x3ddeee[_0x0213('0x1a')]?_0x3ddeee['options'][_0x0213('0x1b')]===undefined?!![]:![]:!![],'where':_0x3ddeee[_0x0213('0x1a')]?_0x3ddeee[_0x0213('0x1a')]['where']||null:null,'attributes':_0x3ddeee[_0x0213('0x1a')]?_0x3ddeee['options'][_0x0213('0x1c')]||null:null,'include':_0x3ddeee['options']?_0x3ddeee[_0x0213('0x1a')][_0x0213('0x1d')]?_[_0x0213('0x1e')](_0x3ddeee[_0x0213('0x1a')][_0x0213('0x1d')],function(_0x14f127){return{'model':db[_0x14f127['model']],'as':_0x14f127['as'],'attributes':_0x14f127['attributes'],'include':_0x14f127[_0x0213('0x1d')]?_['map'](_0x14f127[_0x0213('0x1d')],function(_0x5c611e){return{'model':db[_0x5c611e['model']],'as':_0x5c611e['as'],'attributes':_0x5c611e[_0x0213('0x1c')],'include':_0x5c611e[_0x0213('0x1d')]?_[_0x0213('0x1e')](_0x5c611e[_0x0213('0x1d')],function(_0x263741){return{'model':db[_0x263741[_0x0213('0x1f')]],'as':_0x263741['as'],'attributes':_0x263741[_0x0213('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x0213('0xe')](function(_0xf4617){logger[_0x0213('0xf')](_0x0213('0x20'),_0x3ddeee);logger['debug'](_0x0213('0x20'),_0x3ddeee,JSON['stringify'](_0xf4617));_0x4983c9(_0xf4617);})[_0x0213('0x18')](function(_0x4f8a48){logger[_0x0213('0x13')]('ShowSquareOdbc',_0x4f8a48[_0x0213('0x16')],_0x3ddeee);_0x1bedac(_0x5a0cd7[_0x0213('0x13')](0x1f4,_0x4f8a48['message']));});});};
\ No newline at end of file
+var _0xdbec=['raw','where','attributes','map','model','include','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','ShowSquareOdbc','SquareOdbc','options'];(function(_0x23ef25,_0x2620c5){var _0x3fb5f9=function(_0x37e8bd){while(--_0x37e8bd){_0x23ef25['push'](_0x23ef25['shift']());}};_0x3fb5f9(++_0x2620c5);}(_0xdbec,0x1e2));var _0xcdbe=function(_0x295728,_0x42f09f){_0x295728=_0x295728-0x0;var _0x56ef3e=_0xdbec[_0x295728];return _0x56ef3e;};'use strict';var _=require(_0xcdbe('0x0'));var util=require(_0xcdbe('0x1'));var moment=require('moment');var BPromise=require(_0xcdbe('0x2'));var rs=require(_0xcdbe('0x3'));var fs=require('fs');var Redis=require(_0xcdbe('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xcdbe('0x5'));var logger=require(_0xcdbe('0x6'))('rpc');var config=require(_0xcdbe('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xcdbe('0x8')][_0xcdbe('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1dd907,_0x3a8860,_0x25fb90){return new BPromise(function(_0x2b2b53,_0x2588ab){return client['request'](_0x1dd907,_0x25fb90)[_0xcdbe('0xa')](function(_0x4a911c){logger[_0xcdbe('0xb')](_0xcdbe('0xc'),_0x3a8860,_0xcdbe('0xd'));logger[_0xcdbe('0xe')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x3a8860,_0xcdbe('0xd'),JSON[_0xcdbe('0xf')](_0x4a911c));if(_0x4a911c[_0xcdbe('0x10')]){if(_0x4a911c[_0xcdbe('0x10')]['code']===0x1f4){logger[_0xcdbe('0x10')](_0xcdbe('0xc'),_0x3a8860,_0x4a911c[_0xcdbe('0x10')][_0xcdbe('0x11')]);return _0x2588ab(_0x4a911c[_0xcdbe('0x10')]['message']);}logger['error'](_0xcdbe('0xc'),_0x3a8860,_0x4a911c[_0xcdbe('0x10')][_0xcdbe('0x11')]);return _0x2b2b53(_0x4a911c[_0xcdbe('0x10')]['message']);}else{logger[_0xcdbe('0xb')](_0xcdbe('0xc'),_0x3a8860,_0xcdbe('0xd'));_0x2b2b53(_0x4a911c['result'][_0xcdbe('0x11')]);}})[_0xcdbe('0x12')](function(_0x24be25){logger[_0xcdbe('0x10')](_0xcdbe('0xc'),_0x3a8860,_0x24be25);_0x2588ab(_0x24be25);});});}exports[_0xcdbe('0x13')]=function(_0x27cbf7){var _0x682923=this;return new Promise(function(_0x2aae35,_0x557335){return db[_0xcdbe('0x14')]['find']({'raw':_0x27cbf7[_0xcdbe('0x15')]?_0x27cbf7['options'][_0xcdbe('0x16')]===undefined?!![]:![]:!![],'where':_0x27cbf7[_0xcdbe('0x15')]?_0x27cbf7['options'][_0xcdbe('0x17')]||null:null,'attributes':_0x27cbf7['options']?_0x27cbf7['options'][_0xcdbe('0x18')]||null:null,'include':_0x27cbf7[_0xcdbe('0x15')]?_0x27cbf7[_0xcdbe('0x15')]['include']?_[_0xcdbe('0x19')](_0x27cbf7[_0xcdbe('0x15')]['include'],function(_0x3a8516){return{'model':db[_0x3a8516[_0xcdbe('0x1a')]],'as':_0x3a8516['as'],'attributes':_0x3a8516['attributes'],'include':_0x3a8516[_0xcdbe('0x1b')]?_[_0xcdbe('0x19')](_0x3a8516['include'],function(_0xf69a79){return{'model':db[_0xf69a79[_0xcdbe('0x1a')]],'as':_0xf69a79['as'],'attributes':_0xf69a79[_0xcdbe('0x18')],'include':_0xf69a79['include']?_[_0xcdbe('0x19')](_0xf69a79[_0xcdbe('0x1b')],function(_0x1b16b5){return{'model':db[_0x1b16b5[_0xcdbe('0x1a')]],'as':_0x1b16b5['as'],'attributes':_0x1b16b5[_0xcdbe('0x18')]};}):[]};}):[]};}):[]:[]})[_0xcdbe('0xa')](function(_0x1eb6e7){logger[_0xcdbe('0xb')](_0xcdbe('0x13'),_0x27cbf7);logger[_0xcdbe('0xe')]('ShowSquareOdbc',_0x27cbf7,JSON[_0xcdbe('0xf')](_0x1eb6e7));_0x2aae35(_0x1eb6e7);})['catch'](function(_0x509e36){logger[_0xcdbe('0x10')]('ShowSquareOdbc',_0x509e36[_0xcdbe('0x11')],_0x27cbf7);_0x557335(_0x682923[_0xcdbe('0x10')](0x1f4,_0x509e36['message']));});});};
\ No newline at end of file
index b3db8ad..d29cd48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6888=['../../components/auth/service','./squareProject.controller','get','isAuthenticated','index','/:id','show','/:id/users','getUsers','create','post','addUsers','put','update','destroy','delete','removeUsers','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0xcf1738,_0x3dfbad){var _0x1eded3=function(_0x38d495){while(--_0x38d495){_0xcf1738['push'](_0xcf1738['shift']());}};_0x1eded3(++_0x3dfbad);}(_0x6888,0xd2));var _0x8688=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x6888[_0xa148b7];return _0x51efd3;};'use strict';var multer=require(_0x8688('0x0'));var util=require('util');var path=require(_0x8688('0x1'));var timeout=require(_0x8688('0x2'));var express=require(_0x8688('0x3'));var router=express[_0x8688('0x4')]();var fs_extra=require(_0x8688('0x5'));var auth=require(_0x8688('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8688('0x7'));router[_0x8688('0x8')]('/',auth[_0x8688('0x9')](),controller[_0x8688('0xa')]);router[_0x8688('0x8')](_0x8688('0xb'),auth['isAuthenticated'](),controller[_0x8688('0xc')]);router[_0x8688('0x8')](_0x8688('0xd'),auth[_0x8688('0x9')](),controller[_0x8688('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8688('0xf')]);router[_0x8688('0x10')](_0x8688('0xd'),auth[_0x8688('0x9')](),controller[_0x8688('0x11')]);router[_0x8688('0x12')](_0x8688('0xb'),auth[_0x8688('0x9')](),controller[_0x8688('0x13')]);router['delete'](_0x8688('0xb'),auth[_0x8688('0x9')](),controller[_0x8688('0x14')]);router[_0x8688('0x15')](_0x8688('0xd'),auth[_0x8688('0x9')](),controller[_0x8688('0x16')]);module[_0x8688('0x17')]=router;
\ No newline at end of file
+var _0x9805=['post','addUsers','put','update','destroy','delete','removeUsers','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/users','getUsers'];(function(_0x25099e,_0xa57640){var _0xac5520=function(_0x531fd9){while(--_0x531fd9){_0x25099e['push'](_0x25099e['shift']());}};_0xac5520(++_0xa57640);}(_0x9805,0x18f));var _0x5980=function(_0x19dbc0,_0x180cad){_0x19dbc0=_0x19dbc0-0x0;var _0xf0b964=_0x9805[_0x19dbc0];return _0xf0b964;};'use strict';var multer=require(_0x5980('0x0'));var util=require(_0x5980('0x1'));var path=require(_0x5980('0x2'));var timeout=require(_0x5980('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5980('0x4'));var auth=require(_0x5980('0x5'));var interaction=require(_0x5980('0x6'));var config=require(_0x5980('0x7'));var controller=require('./squareProject.controller');router['get']('/',auth[_0x5980('0x8')](),controller[_0x5980('0x9')]);router[_0x5980('0xa')](_0x5980('0xb'),auth[_0x5980('0x8')](),controller[_0x5980('0xc')]);router[_0x5980('0xa')](_0x5980('0xd'),auth[_0x5980('0x8')](),controller[_0x5980('0xe')]);router[_0x5980('0xf')]('/',auth[_0x5980('0x8')](),controller['create']);router['post'](_0x5980('0xd'),auth[_0x5980('0x8')](),controller[_0x5980('0x10')]);router[_0x5980('0x11')]('/:id',auth[_0x5980('0x8')](),controller[_0x5980('0x12')]);router['delete']('/:id',auth[_0x5980('0x8')](),controller[_0x5980('0x13')]);router[_0x5980('0x14')](_0x5980('0xd'),auth[_0x5980('0x8')](),controller[_0x5980('0x15')]);module[_0x5980('0x16')]=router;
\ No newline at end of file
index c335831..aa738a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6dc=['preproduction','toString','production','utf8','DATE','exports','STRING','name','TEXT','long','getDataValue'];(function(_0x2d8c3e,_0x31a977){var _0x4884c2=function(_0x3c3c13){while(--_0x3c3c13){_0x2d8c3e['push'](_0x2d8c3e['shift']());}};_0x4884c2(++_0x31a977);}(_0xb6dc,0xaa));var _0xcb6d=function(_0xbfe32b,_0x9e7ab6){_0xbfe32b=_0xbfe32b-0x0;var _0x5ac4f0=_0xb6dc[_0xbfe32b];return _0x5ac4f0;};'use strict';var Sequelize=require('sequelize');module[_0xcb6d('0x0')]={'name':{'type':Sequelize[_0xcb6d('0x1')],'unique':_0xcb6d('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xcb6d('0x1')]},'notes':{'type':Sequelize[_0xcb6d('0x3')]},'preproduction':{'type':Sequelize['BLOB'](_0xcb6d('0x4')),'get':function(){if(this[_0xcb6d('0x5')](_0xcb6d('0x6'))){return this['getDataValue'](_0xcb6d('0x6'))[_0xcb6d('0x7')]('utf8');}}},'production':{'type':Sequelize['BLOB'](_0xcb6d('0x4')),'get':function(){if(this[_0xcb6d('0x5')](_0xcb6d('0x8'))){return this[_0xcb6d('0x5')]('production')[_0xcb6d('0x7')](_0xcb6d('0x9'));}}},'savedAt':{'type':Sequelize[_0xcb6d('0xa')]},'publishedAt':{'type':Sequelize[_0xcb6d('0xa')]}};
\ No newline at end of file
+var _0xa661=['production','DATE','sequelize','exports','STRING','name','TEXT','BLOB','long','getDataValue','toString','utf8'];(function(_0x6e35a2,_0x175fec){var _0x1fd901=function(_0xf1b00f){while(--_0xf1b00f){_0x6e35a2['push'](_0x6e35a2['shift']());}};_0x1fd901(++_0x175fec);}(_0xa661,0xf2));var _0x1a66=function(_0x37dd7b,_0x29619d){_0x37dd7b=_0x37dd7b-0x0;var _0x548856=_0xa661[_0x37dd7b];return _0x548856;};'use strict';var Sequelize=require(_0x1a66('0x0'));module[_0x1a66('0x1')]={'name':{'type':Sequelize[_0x1a66('0x2')],'unique':_0x1a66('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize[_0x1a66('0x4')]},'preproduction':{'type':Sequelize[_0x1a66('0x5')](_0x1a66('0x6')),'get':function(){if(this[_0x1a66('0x7')]('preproduction')){return this['getDataValue']('preproduction')[_0x1a66('0x8')](_0x1a66('0x9'));}}},'production':{'type':Sequelize[_0x1a66('0x5')](_0x1a66('0x6')),'get':function(){if(this[_0x1a66('0x7')](_0x1a66('0xa'))){return this['getDataValue'](_0x1a66('0xa'))[_0x1a66('0x8')](_0x1a66('0x9'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x1a66('0xb')]}};
\ No newline at end of file
index 5a3cde7..6ee860b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x839a=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','end','json','offset','limit','count','set','apply','reject','save','update','then','SquareProjects','destroy','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','query','keys','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','include','rows','catch','show','length','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addUsers','ids','removeUsers','isArray','emit','userSquareProject:remove','User','getUsers','eml-format','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis'];(function(_0x3b2369,_0x4c68b9){var _0x5a1367=function(_0x58ddcf){while(--_0x58ddcf){_0x3b2369['push'](_0x3b2369['shift']());}};_0x5a1367(++_0x4c68b9);}(_0x839a,0xb6));var _0xa839=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x839a[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require(_0xa839('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa839('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa839('0x2'));var moment=require(_0xa839('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa839('0x4'));var util=require(_0xa839('0x5'));var path=require(_0xa839('0x6'));var sox=require(_0xa839('0x7'));var csv=require(_0xa839('0x8'));var ejs=require(_0xa839('0x9'));var fs=require('fs');var fs_extra=require(_0xa839('0xa'));var _=require(_0xa839('0xb'));var squel=require(_0xa839('0xc'));var crypto=require(_0xa839('0xd'));var jsforce=require(_0xa839('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa839('0x8'));var querystring=require(_0xa839('0xf'));var Papa=require(_0xa839('0x10'));var Redis=require(_0xa839('0x11'));var authService=require(_0xa839('0x12'));var qs=require(_0xa839('0x13'));var as=require(_0xa839('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa839('0x15'))(_0xa839('0x16'));var utils=require(_0xa839('0x17'));var config=require(_0xa839('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xa839('0x19'))['db'];config['redis']=_[_0xa839('0x1a')](config[_0xa839('0x1b')],{'host':_0xa839('0x1c'),'port':0x18eb});var socket=require(_0xa839('0x1d'))(new Redis(config['redis']));require(_0xa839('0x1e'))[_0xa839('0x1f')](socket);function respondWithStatusCode(_0x2ba471,_0x129936){_0x129936=_0x129936||0xcc;return function(_0x220828){if(_0x220828){return _0x2ba471[_0xa839('0x20')](_0x129936);}return _0x2ba471[_0xa839('0x21')](_0x129936)[_0xa839('0x22')]();};}function respondWithResult(_0x48df60,_0x17b313){_0x17b313=_0x17b313||0xc8;return function(_0x1affbb){if(_0x1affbb){return _0x48df60[_0xa839('0x21')](_0x17b313)[_0xa839('0x23')](_0x1affbb);}};}function respondWithFilteredResult(_0x1c69f7,_0x2be5ef){return function(_0x5cc483){if(_0x5cc483){var _0x3c9cab=typeof _0x2be5ef[_0xa839('0x24')]==='undefined'&&typeof _0x2be5ef[_0xa839('0x25')]==='undefined';var _0x3a0675=_0x5cc483['count'];var _0x242e7e=_0x3c9cab?0x0:_0x2be5ef[_0xa839('0x24')];var _0x1a1404=_0x3c9cab?_0x5cc483[_0xa839('0x26')]:_0x2be5ef[_0xa839('0x24')]+_0x2be5ef[_0xa839('0x25')];var _0x22fba8;if(_0x1a1404>=_0x3a0675){_0x1a1404=_0x3a0675;_0x22fba8=0xc8;}else{_0x22fba8=0xce;}_0x1c69f7[_0xa839('0x21')](_0x22fba8);return _0x1c69f7[_0xa839('0x27')]('Content-Range',_0x242e7e+'-'+_0x1a1404+'/'+_0x3a0675)[_0xa839('0x23')](_0x5cc483);}return null;};}function patchUpdates(_0x37f3b6){return function(_0x5d6fd9){try{jsonpatch[_0xa839('0x28')](_0x5d6fd9,_0x37f3b6,!![]);}catch(_0x37f49c){return BPromise[_0xa839('0x29')](_0x37f49c);}return _0x5d6fd9[_0xa839('0x2a')]();};}function saveUpdates(_0x401bbe,_0x43930a){return function(_0x5b3e9e){if(_0x5b3e9e){return _0x5b3e9e[_0xa839('0x2b')](_0x401bbe)[_0xa839('0x2c')](function(_0x155f4a){return _0x155f4a;});}return null;};}function removeEntity(_0x5e1a90,_0x9c0d3e){return function(_0x1276b6){if(_0x1276b6){return _0x1276b6['destroy']()[_0xa839('0x2c')](function(){var _0xc83411=_0x1276b6['get']({'plain':!![]});var _0x4fa2b5=_0xa839('0x2d');return db['UserProfileResource'][_0xa839('0x2e')]({'where':{'type':_0x4fa2b5,'resourceId':_0xc83411['id']}})[_0xa839('0x2c')](function(){return _0x1276b6;});})[_0xa839('0x2c')](function(){_0x5e1a90[_0xa839('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x433bbd,_0x583baf){return function(_0x1a5e44){if(!_0x1a5e44){_0x433bbd[_0xa839('0x20')](0x194);}return _0x1a5e44;};}function handleError(_0x16eefc,_0x354e69){_0x354e69=_0x354e69||0x1f4;return function(_0x3c1fd2){logger[_0xa839('0x2f')](_0x3c1fd2[_0xa839('0x30')]);if(_0x3c1fd2['name']){delete _0x3c1fd2[_0xa839('0x31')];}_0x16eefc[_0xa839('0x21')](_0x354e69)[_0xa839('0x32')](_0x3c1fd2);};}exports[_0xa839('0x33')]=function(_0x388eef,_0x1b1f74){var _0x404508={},_0xb33ee0={},_0x260a89={'count':0x0,'rows':[]};var _0x4f6421=_[_0xa839('0x34')](db[_0xa839('0x35')][_0xa839('0x36')],function(_0x3ba1b6){return{'name':_0x3ba1b6[_0xa839('0x37')],'type':_0x3ba1b6[_0xa839('0x38')]['key']};});_0xb33ee0['model']=_[_0xa839('0x34')](_0x4f6421,'name');_0xb33ee0[_0xa839('0x39')]=_[_0xa839('0x3a')](_0x388eef[_0xa839('0x39')]);_0xb33ee0['filters']=_[_0xa839('0x3b')](_0xb33ee0[_0xa839('0x3c')],_0xb33ee0[_0xa839('0x39')]);_0x404508['attributes']=_[_0xa839('0x3b')](_0xb33ee0[_0xa839('0x3c')],qs[_0xa839('0x3d')](_0x388eef[_0xa839('0x39')][_0xa839('0x3d')]));_0x404508[_0xa839('0x3e')]=_0x404508['attributes']['length']?_0x404508[_0xa839('0x3e')]:_0xb33ee0[_0xa839('0x3c')];if(!_0x388eef[_0xa839('0x39')][_0xa839('0x3f')](_0xa839('0x40'))){_0x404508[_0xa839('0x25')]=qs[_0xa839('0x25')](_0x388eef[_0xa839('0x39')][_0xa839('0x25')]);_0x404508['offset']=qs[_0xa839('0x24')](_0x388eef[_0xa839('0x39')][_0xa839('0x24')]);}_0x404508[_0xa839('0x41')]=qs[_0xa839('0x42')](_0x388eef['query'][_0xa839('0x42')]);_0x404508[_0xa839('0x43')]=qs[_0xa839('0x44')](_[_0xa839('0x45')](_0x388eef[_0xa839('0x39')],_0xb33ee0[_0xa839('0x44')]),_0x4f6421);if(_0x388eef[_0xa839('0x39')]['filter']){_0x404508['where']=_[_0xa839('0x46')](_0x404508['where'],{'$or':_[_0xa839('0x34')](_0x4f6421,function(_0x378a1a){if(_0x378a1a[_0xa839('0x38')]!==_0xa839('0x47')){var _0x2e62bd={};_0x2e62bd[_0x378a1a[_0xa839('0x31')]]={'$like':'%'+_0x388eef[_0xa839('0x39')][_0xa839('0x48')]+'%'};return _0x2e62bd;}})});}_0x404508=_[_0xa839('0x46')]({},_0x404508,_0x388eef[_0xa839('0x49')]);var _0x269b63={'where':_0x404508['where']};return db[_0xa839('0x35')][_0xa839('0x26')](_0x269b63)[_0xa839('0x2c')](function(_0x45cfd0){_0x260a89['count']=_0x45cfd0;if(_0x388eef[_0xa839('0x39')]['includeAll']){_0x404508[_0xa839('0x4a')]=[{'all':!![]}];}return db[_0xa839('0x35')]['findAll'](_0x404508);})[_0xa839('0x2c')](function(_0xea7a31){_0x260a89[_0xa839('0x4b')]=_0xea7a31;return _0x260a89;})[_0xa839('0x2c')](respondWithFilteredResult(_0x1b1f74,_0x404508))[_0xa839('0x4c')](handleError(_0x1b1f74,null));};exports[_0xa839('0x4d')]=function(_0x3f9738,_0x9175b0){var _0x55b575={'raw':![],'where':{'id':_0x3f9738['params']['id']}},_0x380520={};_0x380520[_0xa839('0x3c')]=_[_0xa839('0x3a')](db['SquareProject'][_0xa839('0x36')]);_0x380520[_0xa839('0x39')]=_[_0xa839('0x3a')](_0x3f9738[_0xa839('0x39')]);_0x380520[_0xa839('0x44')]=_['intersection'](_0x380520['model'],_0x380520[_0xa839('0x39')]);_0x55b575[_0xa839('0x3e')]=_[_0xa839('0x3b')](_0x380520[_0xa839('0x3c')],qs[_0xa839('0x3d')](_0x3f9738[_0xa839('0x39')][_0xa839('0x3d')]));_0x55b575['attributes']=_0x55b575[_0xa839('0x3e')][_0xa839('0x4e')]?_0x55b575[_0xa839('0x3e')]:_0x380520['model'];if(_0x3f9738[_0xa839('0x39')]['includeAll']){_0x55b575[_0xa839('0x4a')]=[{'all':!![]}];}_0x55b575=_[_0xa839('0x46')]({},_0x55b575,_0x3f9738['options']);return db[_0xa839('0x35')][_0xa839('0x4f')](_0x55b575)[_0xa839('0x2c')](handleEntityNotFound(_0x9175b0,null))[_0xa839('0x2c')](respondWithResult(_0x9175b0,null))['catch'](handleError(_0x9175b0,null));};exports[_0xa839('0x50')]=function(_0x3a470a,_0x30670d){return db[_0xa839('0x35')]['create'](_0x3a470a[_0xa839('0x51')],{})[_0xa839('0x2c')](function(_0x59d372){var _0x462b5a=_0x3a470a[_0xa839('0x52')][_0xa839('0x53')]({'plain':!![]});if(!_0x462b5a)throw new Error(_0xa839('0x54'));if(_0x462b5a[_0xa839('0x55')]==='user'){var _0xe13084=_0x59d372[_0xa839('0x53')]({'plain':!![]});var _0x2deb13=_0xa839('0x2d');return db[_0xa839('0x56')][_0xa839('0x4f')]({'where':{'name':_0x2deb13,'userProfileId':_0x462b5a[_0xa839('0x57')]},'raw':!![]})[_0xa839('0x2c')](function(_0x147504){if(_0x147504&&_0x147504[_0xa839('0x58')]===0x0){return db[_0xa839('0x59')][_0xa839('0x50')]({'name':_0xe13084[_0xa839('0x31')],'resourceId':_0xe13084['id'],'type':_0x147504[_0xa839('0x31')],'sectionId':_0x147504['id']},{})[_0xa839('0x2c')](function(){return _0x59d372;});}else{return _0x59d372;}})['catch'](function(_0x1c2098){logger[_0xa839('0x2f')](_0xa839('0x5a'),_0x1c2098);throw _0x1c2098;});}return _0x59d372;})[_0xa839('0x2c')](respondWithResult(_0x30670d,0xc9))[_0xa839('0x4c')](handleError(_0x30670d,null));};exports[_0xa839('0x2b')]=function(_0x3600bf,_0x433d4b){if(_0x3600bf[_0xa839('0x51')]['id']){delete _0x3600bf[_0xa839('0x51')]['id'];}return db['SquareProject'][_0xa839('0x4f')]({'where':{'id':_0x3600bf[_0xa839('0x5b')]['id']}})[_0xa839('0x2c')](handleEntityNotFound(_0x433d4b,null))[_0xa839('0x2c')](saveUpdates(_0x3600bf[_0xa839('0x51')],null))[_0xa839('0x2c')](respondWithResult(_0x433d4b,null))[_0xa839('0x4c')](handleError(_0x433d4b,null));};exports[_0xa839('0x2e')]=function(_0xb128fe,_0x31712e){return db[_0xa839('0x35')][_0xa839('0x4f')]({'where':{'id':_0xb128fe[_0xa839('0x5b')]['id']}})[_0xa839('0x2c')](handleEntityNotFound(_0x31712e,null))[_0xa839('0x2c')](removeEntity(_0x31712e,null))[_0xa839('0x4c')](handleError(_0x31712e,null));};exports['addUsers']=function(_0x364cf5,_0x5a6a0a,_0x29c03b){return db['SquareProject']['find']({'where':{'id':_0x364cf5[_0xa839('0x5b')]['id']}})[_0xa839('0x2c')](handleEntityNotFound(_0x5a6a0a,null))[_0xa839('0x2c')](function(_0x9968ff){if(_0x9968ff){return _0x9968ff[_0xa839('0x5c')](_0x364cf5[_0xa839('0x51')]['ids'],_['omit'](_0x364cf5[_0xa839('0x51')],[_0xa839('0x5d'),'id'])||{});}})[_0xa839('0x2c')](respondWithResult(_0x5a6a0a,null))[_0xa839('0x4c')](handleError(_0x5a6a0a,null));};exports['removeUsers']=function(_0x44162c,_0x47a508,_0x35095b){return db['SquareProject'][_0xa839('0x4f')]({'where':{'id':_0x44162c[_0xa839('0x5b')]['id']}})['then'](handleEntityNotFound(_0x47a508,null))[_0xa839('0x2c')](function(_0x35566f){if(_0x35566f){return _0x35566f[_0xa839('0x5e')](_0x44162c['query'][_0xa839('0x5d')])[_0xa839('0x2c')](function(){if(_[_0xa839('0x5f')](_0x44162c[_0xa839('0x39')][_0xa839('0x5d')])){for(var _0x1819a5=0x0;_0x1819a5<_0x44162c[_0xa839('0x39')][_0xa839('0x5d')][_0xa839('0x4e')];_0x1819a5+=0x1){socket[_0xa839('0x60')]('userSquareProject:remove',{'UserId':Number(_0x44162c[_0xa839('0x39')][_0xa839('0x5d')][_0x1819a5]),'SquareProjectId':Number(_0x44162c['params']['id'])});}}else{socket[_0xa839('0x60')](_0xa839('0x61'),{'UserId':Number(_0x44162c[_0xa839('0x39')]['ids']),'SquareProjectId':Number(_0x44162c[_0xa839('0x5b')]['id'])});}});}})[_0xa839('0x2c')](respondWithStatusCode(_0x47a508,null))['catch'](handleError(_0x47a508,null));};exports['getUsers']=function(_0x42368e,_0x1aadca,_0x4ba2f9){var _0x4baa87={};var _0x39bf36={};var _0x7965ff;var _0x2436ec;return db[_0xa839('0x35')]['findOne']({'where':{'id':_0x42368e[_0xa839('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1aadca,null))[_0xa839('0x2c')](function(_0x1c91b1){if(_0x1c91b1){_0x7965ff=_0x1c91b1;_0x39bf36[_0xa839('0x3c')]=_[_0xa839('0x3a')](db[_0xa839('0x62')][_0xa839('0x36')]);_0x39bf36[_0xa839('0x39')]=_[_0xa839('0x3a')](_0x42368e['query']);_0x39bf36[_0xa839('0x44')]=_[_0xa839('0x3b')](_0x39bf36[_0xa839('0x3c')],_0x39bf36['query']);_0x4baa87['attributes']=_[_0xa839('0x3b')](_0x39bf36[_0xa839('0x3c')],qs['fields'](_0x42368e[_0xa839('0x39')][_0xa839('0x3d')]));_0x4baa87[_0xa839('0x3e')]=_0x4baa87[_0xa839('0x3e')][_0xa839('0x4e')]?_0x4baa87['attributes']:_0x39bf36['model'];_0x4baa87['order']=qs[_0xa839('0x42')](_0x42368e['query'][_0xa839('0x42')]);_0x4baa87[_0xa839('0x43')]=qs[_0xa839('0x44')](_[_0xa839('0x45')](_0x42368e['query'],_0x39bf36['filters']));if(_0x42368e[_0xa839('0x39')][_0xa839('0x48')]){_0x4baa87[_0xa839('0x43')]=_[_0xa839('0x46')](_0x4baa87[_0xa839('0x43')],{'$or':_[_0xa839('0x34')](_0x4baa87[_0xa839('0x3e')],function(_0x2a004a){var _0x33c42c={};_0x33c42c[_0x2a004a]={'$like':'%'+_0x42368e[_0xa839('0x39')][_0xa839('0x48')]+'%'};return _0x33c42c;})});}_0x4baa87=_['merge']({},_0x4baa87,_0x42368e[_0xa839('0x49')]);return _0x7965ff[_0xa839('0x63')](_0x4baa87);}})[_0xa839('0x2c')](function(_0x399c2c){if(_0x399c2c){_0x2436ec=_0x399c2c[_0xa839('0x4e')];if(!_0x42368e[_0xa839('0x39')][_0xa839('0x3f')](_0xa839('0x40'))){_0x4baa87[_0xa839('0x25')]=qs[_0xa839('0x25')](_0x42368e[_0xa839('0x39')][_0xa839('0x25')]);_0x4baa87[_0xa839('0x24')]=qs[_0xa839('0x24')](_0x42368e[_0xa839('0x39')][_0xa839('0x24')]);}return _0x7965ff['getUsers'](_0x4baa87);}})[_0xa839('0x2c')](function(_0x326264){if(_0x326264){return _0x326264?{'count':_0x2436ec,'rows':_0x326264}:null;}})[_0xa839('0x2c')](respondWithResult(_0x1aadca,null))[_0xa839('0x4c')](handleError(_0x1aadca,null));};
\ No newline at end of file
+var _0x543c=['rows','catch','show','params','rawAttributes','includeAll','options','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','User','order','merge','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','save','update','then','SquareProjects','UserProfileResource','destroy','error','stack','name','index','SquareProject','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','map','filter'];(function(_0x58c86a,_0x602654){var _0x2bb374=function(_0x1302a9){while(--_0x1302a9){_0x58c86a['push'](_0x58c86a['shift']());}};_0x2bb374(++_0x602654);}(_0x543c,0xd3));var _0xc543=function(_0x59eacf,_0x56ec4a){_0x59eacf=_0x59eacf-0x0;var _0x5d74f2=_0x543c[_0x59eacf];return _0x5d74f2;};'use strict';var emlformat=require(_0xc543('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc543('0x1'));var jsonpatch=require(_0xc543('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc543('0x3'));var Mustache=require(_0xc543('0x4'));var util=require(_0xc543('0x5'));var path=require(_0xc543('0x6'));var sox=require(_0xc543('0x7'));var csv=require(_0xc543('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc543('0x9'));var _=require(_0xc543('0xa'));var squel=require(_0xc543('0xb'));var crypto=require(_0xc543('0xc'));var jsforce=require(_0xc543('0xd'));var deskjs=require(_0xc543('0xe'));var toCsv=require(_0xc543('0x8'));var querystring=require(_0xc543('0xf'));var Papa=require(_0xc543('0x10'));var Redis=require('ioredis');var authService=require(_0xc543('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xc543('0x12'));var hardwareService=require(_0xc543('0x13'));var logger=require(_0xc543('0x14'))('api');var utils=require(_0xc543('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc543('0x16'))['db'];config[_0xc543('0x17')]=_['defaults'](config[_0xc543('0x17')],{'host':_0xc543('0x18'),'port':0x18eb});var socket=require(_0xc543('0x19'))(new Redis(config[_0xc543('0x17')]));require('./squareProject.socket')[_0xc543('0x1a')](socket);function respondWithStatusCode(_0x205a95,_0x2fdb73){_0x2fdb73=_0x2fdb73||0xcc;return function(_0x43852f){if(_0x43852f){return _0x205a95[_0xc543('0x1b')](_0x2fdb73);}return _0x205a95['status'](_0x2fdb73)[_0xc543('0x1c')]();};}function respondWithResult(_0x552eb7,_0x5ac521){_0x5ac521=_0x5ac521||0xc8;return function(_0x4fb62f){if(_0x4fb62f){return _0x552eb7[_0xc543('0x1d')](_0x5ac521)['json'](_0x4fb62f);}};}function respondWithFilteredResult(_0x36aba4,_0x96709){return function(_0x414cbc){if(_0x414cbc){var _0x20e282=typeof _0x96709[_0xc543('0x1e')]===_0xc543('0x1f')&&typeof _0x96709['limit']===_0xc543('0x1f');var _0x70a6af=_0x414cbc[_0xc543('0x20')];var _0x227232=_0x20e282?0x0:_0x96709[_0xc543('0x1e')];var _0x3ae447=_0x20e282?_0x414cbc[_0xc543('0x20')]:_0x96709['offset']+_0x96709[_0xc543('0x21')];var _0x361e11;if(_0x3ae447>=_0x70a6af){_0x3ae447=_0x70a6af;_0x361e11=0xc8;}else{_0x361e11=0xce;}_0x36aba4['status'](_0x361e11);return _0x36aba4[_0xc543('0x22')](_0xc543('0x23'),_0x227232+'-'+_0x3ae447+'/'+_0x70a6af)['json'](_0x414cbc);}return null;};}function patchUpdates(_0x19b8a3){return function(_0x38b7cc){try{jsonpatch['apply'](_0x38b7cc,_0x19b8a3,!![]);}catch(_0x14d309){return BPromise['reject'](_0x14d309);}return _0x38b7cc[_0xc543('0x24')]();};}function saveUpdates(_0x18892c,_0x824d){return function(_0x51fabe){if(_0x51fabe){return _0x51fabe[_0xc543('0x25')](_0x18892c)['then'](function(_0x5cbcd4){return _0x5cbcd4;});}return null;};}function removeEntity(_0x1df856,_0x8675a){return function(_0x1f3ba1){if(_0x1f3ba1){return _0x1f3ba1['destroy']()[_0xc543('0x26')](function(){var _0x5155b3=_0x1f3ba1['get']({'plain':!![]});var _0x56ecf4=_0xc543('0x27');return db[_0xc543('0x28')][_0xc543('0x29')]({'where':{'type':_0x56ecf4,'resourceId':_0x5155b3['id']}})[_0xc543('0x26')](function(){return _0x1f3ba1;});})[_0xc543('0x26')](function(){_0x1df856[_0xc543('0x1d')](0xcc)[_0xc543('0x1c')]();});}};}function handleEntityNotFound(_0x68a495,_0x410766){return function(_0x3cdce3){if(!_0x3cdce3){_0x68a495[_0xc543('0x1b')](0x194);}return _0x3cdce3;};}function handleError(_0xb6839b,_0x4447a8){_0x4447a8=_0x4447a8||0x1f4;return function(_0x35d958){logger[_0xc543('0x2a')](_0x35d958[_0xc543('0x2b')]);if(_0x35d958['name']){delete _0x35d958[_0xc543('0x2c')];}_0xb6839b['status'](_0x4447a8)['send'](_0x35d958);};}exports[_0xc543('0x2d')]=function(_0x44ed14,_0x12ad69){var _0x469b52={},_0x58a3b2={},_0x246564={'count':0x0,'rows':[]};var _0x42fc88=_['map'](db[_0xc543('0x2e')]['rawAttributes'],function(_0x4e9c2d){return{'name':_0x4e9c2d[_0xc543('0x2f')],'type':_0x4e9c2d[_0xc543('0x30')][_0xc543('0x31')]};});_0x58a3b2[_0xc543('0x32')]=_['map'](_0x42fc88,_0xc543('0x2c'));_0x58a3b2[_0xc543('0x33')]=_[_0xc543('0x34')](_0x44ed14[_0xc543('0x33')]);_0x58a3b2[_0xc543('0x35')]=_['intersection'](_0x58a3b2[_0xc543('0x32')],_0x58a3b2['query']);_0x469b52[_0xc543('0x36')]=_[_0xc543('0x37')](_0x58a3b2[_0xc543('0x32')],qs[_0xc543('0x38')](_0x44ed14['query'][_0xc543('0x38')]));_0x469b52[_0xc543('0x36')]=_0x469b52[_0xc543('0x36')][_0xc543('0x39')]?_0x469b52['attributes']:_0x58a3b2[_0xc543('0x32')];if(!_0x44ed14[_0xc543('0x33')][_0xc543('0x3a')](_0xc543('0x3b'))){_0x469b52[_0xc543('0x21')]=qs[_0xc543('0x21')](_0x44ed14[_0xc543('0x33')][_0xc543('0x21')]);_0x469b52[_0xc543('0x1e')]=qs[_0xc543('0x1e')](_0x44ed14[_0xc543('0x33')][_0xc543('0x1e')]);}_0x469b52['order']=qs[_0xc543('0x3c')](_0x44ed14[_0xc543('0x33')][_0xc543('0x3c')]);_0x469b52[_0xc543('0x3d')]=qs[_0xc543('0x35')](_[_0xc543('0x3e')](_0x44ed14['query'],_0x58a3b2['filters']),_0x42fc88);if(_0x44ed14[_0xc543('0x33')]['filter']){_0x469b52[_0xc543('0x3d')]=_['merge'](_0x469b52[_0xc543('0x3d')],{'$or':_[_0xc543('0x3f')](_0x42fc88,function(_0x3bc9e7){if(_0x3bc9e7[_0xc543('0x30')]!=='VIRTUAL'){var _0x4e545b={};_0x4e545b[_0x3bc9e7['name']]={'$like':'%'+_0x44ed14[_0xc543('0x33')][_0xc543('0x40')]+'%'};return _0x4e545b;}})});}_0x469b52=_['merge']({},_0x469b52,_0x44ed14['options']);var _0x278a3d={'where':_0x469b52['where']};return db[_0xc543('0x2e')][_0xc543('0x20')](_0x278a3d)['then'](function(_0x3b92d5){_0x246564[_0xc543('0x20')]=_0x3b92d5;if(_0x44ed14[_0xc543('0x33')]['includeAll']){_0x469b52['include']=[{'all':!![]}];}return db['SquareProject']['findAll'](_0x469b52);})[_0xc543('0x26')](function(_0x2f83f7){_0x246564[_0xc543('0x41')]=_0x2f83f7;return _0x246564;})[_0xc543('0x26')](respondWithFilteredResult(_0x12ad69,_0x469b52))[_0xc543('0x42')](handleError(_0x12ad69,null));};exports[_0xc543('0x43')]=function(_0x40fa1d,_0xad9ff){var _0x1be1c0={'raw':![],'where':{'id':_0x40fa1d[_0xc543('0x44')]['id']}},_0x3c2508={};_0x3c2508[_0xc543('0x32')]=_['keys'](db[_0xc543('0x2e')][_0xc543('0x45')]);_0x3c2508[_0xc543('0x33')]=_[_0xc543('0x34')](_0x40fa1d['query']);_0x3c2508[_0xc543('0x35')]=_[_0xc543('0x37')](_0x3c2508[_0xc543('0x32')],_0x3c2508[_0xc543('0x33')]);_0x1be1c0['attributes']=_[_0xc543('0x37')](_0x3c2508[_0xc543('0x32')],qs[_0xc543('0x38')](_0x40fa1d[_0xc543('0x33')][_0xc543('0x38')]));_0x1be1c0['attributes']=_0x1be1c0[_0xc543('0x36')][_0xc543('0x39')]?_0x1be1c0['attributes']:_0x3c2508[_0xc543('0x32')];if(_0x40fa1d[_0xc543('0x33')][_0xc543('0x46')]){_0x1be1c0['include']=[{'all':!![]}];}_0x1be1c0=_['merge']({},_0x1be1c0,_0x40fa1d[_0xc543('0x47')]);return db['SquareProject'][_0xc543('0x48')](_0x1be1c0)[_0xc543('0x26')](handleEntityNotFound(_0xad9ff,null))[_0xc543('0x26')](respondWithResult(_0xad9ff,null))['catch'](handleError(_0xad9ff,null));};exports[_0xc543('0x49')]=function(_0x35df40,_0xe772e0){return db[_0xc543('0x2e')][_0xc543('0x49')](_0x35df40[_0xc543('0x4a')],{})['then'](function(_0x5830ce){var _0x529157=_0x35df40['user'][_0xc543('0x4b')]({'plain':!![]});if(!_0x529157)throw new Error(_0xc543('0x4c'));if(_0x529157[_0xc543('0x4d')]==='user'){var _0x41d88f=_0x5830ce['get']({'plain':!![]});var _0x42e510='SquareProjects';return db['UserProfileSection']['find']({'where':{'name':_0x42e510,'userProfileId':_0x529157[_0xc543('0x4e')]},'raw':!![]})[_0xc543('0x26')](function(_0x59d37a){if(_0x59d37a&&_0x59d37a[_0xc543('0x4f')]===0x0){return db[_0xc543('0x28')][_0xc543('0x49')]({'name':_0x41d88f[_0xc543('0x2c')],'resourceId':_0x41d88f['id'],'type':_0x59d37a['name'],'sectionId':_0x59d37a['id']},{})[_0xc543('0x26')](function(){return _0x5830ce;});}else{return _0x5830ce;}})[_0xc543('0x42')](function(_0x2de49b){logger[_0xc543('0x2a')](_0xc543('0x50'),_0x2de49b);throw _0x2de49b;});}return _0x5830ce;})[_0xc543('0x26')](respondWithResult(_0xe772e0,0xc9))[_0xc543('0x42')](handleError(_0xe772e0,null));};exports['update']=function(_0x4dba93,_0x24270c){if(_0x4dba93[_0xc543('0x4a')]['id']){delete _0x4dba93['body']['id'];}return db[_0xc543('0x2e')][_0xc543('0x48')]({'where':{'id':_0x4dba93[_0xc543('0x44')]['id']}})[_0xc543('0x26')](handleEntityNotFound(_0x24270c,null))[_0xc543('0x26')](saveUpdates(_0x4dba93[_0xc543('0x4a')],null))[_0xc543('0x26')](respondWithResult(_0x24270c,null))[_0xc543('0x42')](handleError(_0x24270c,null));};exports[_0xc543('0x29')]=function(_0x4fa2d7,_0x23925f){return db[_0xc543('0x2e')][_0xc543('0x48')]({'where':{'id':_0x4fa2d7['params']['id']}})['then'](handleEntityNotFound(_0x23925f,null))['then'](removeEntity(_0x23925f,null))[_0xc543('0x42')](handleError(_0x23925f,null));};exports[_0xc543('0x51')]=function(_0x225576,_0x2a06e5,_0x2f0ac2){return db[_0xc543('0x2e')]['find']({'where':{'id':_0x225576[_0xc543('0x44')]['id']}})['then'](handleEntityNotFound(_0x2a06e5,null))['then'](function(_0x52c37b){if(_0x52c37b){return _0x52c37b[_0xc543('0x51')](_0x225576[_0xc543('0x4a')][_0xc543('0x52')],_[_0xc543('0x53')](_0x225576[_0xc543('0x4a')],[_0xc543('0x52'),'id'])||{});}})[_0xc543('0x26')](respondWithResult(_0x2a06e5,null))[_0xc543('0x42')](handleError(_0x2a06e5,null));};exports[_0xc543('0x54')]=function(_0x335cf5,_0x4e000f,_0x12faa9){return db['SquareProject']['find']({'where':{'id':_0x335cf5['params']['id']}})['then'](handleEntityNotFound(_0x4e000f,null))[_0xc543('0x26')](function(_0x14d2af){if(_0x14d2af){return _0x14d2af[_0xc543('0x54')](_0x335cf5['query']['ids'])['then'](function(){if(_[_0xc543('0x55')](_0x335cf5[_0xc543('0x33')][_0xc543('0x52')])){for(var _0x57b116=0x0;_0x57b116<_0x335cf5[_0xc543('0x33')][_0xc543('0x52')][_0xc543('0x39')];_0x57b116+=0x1){socket[_0xc543('0x56')]('userSquareProject:remove',{'UserId':Number(_0x335cf5['query'][_0xc543('0x52')][_0x57b116]),'SquareProjectId':Number(_0x335cf5[_0xc543('0x44')]['id'])});}}else{socket[_0xc543('0x56')](_0xc543('0x57'),{'UserId':Number(_0x335cf5[_0xc543('0x33')][_0xc543('0x52')]),'SquareProjectId':Number(_0x335cf5[_0xc543('0x44')]['id'])});}});}})[_0xc543('0x26')](respondWithStatusCode(_0x4e000f,null))[_0xc543('0x42')](handleError(_0x4e000f,null));};exports[_0xc543('0x58')]=function(_0x6a393f,_0x3faccb,_0x5b6d59){var _0x4c7c89={};var _0x55d48d={};var _0x5b628e;var _0x39cc29;return db['SquareProject']['findOne']({'where':{'id':_0x6a393f[_0xc543('0x44')]['id']}})['then'](handleEntityNotFound(_0x3faccb,null))[_0xc543('0x26')](function(_0x1facbb){if(_0x1facbb){_0x5b628e=_0x1facbb;_0x55d48d[_0xc543('0x32')]=_[_0xc543('0x34')](db[_0xc543('0x59')]['rawAttributes']);_0x55d48d[_0xc543('0x33')]=_[_0xc543('0x34')](_0x6a393f['query']);_0x55d48d['filters']=_[_0xc543('0x37')](_0x55d48d[_0xc543('0x32')],_0x55d48d[_0xc543('0x33')]);_0x4c7c89[_0xc543('0x36')]=_['intersection'](_0x55d48d[_0xc543('0x32')],qs[_0xc543('0x38')](_0x6a393f[_0xc543('0x33')][_0xc543('0x38')]));_0x4c7c89['attributes']=_0x4c7c89[_0xc543('0x36')][_0xc543('0x39')]?_0x4c7c89[_0xc543('0x36')]:_0x55d48d[_0xc543('0x32')];_0x4c7c89[_0xc543('0x5a')]=qs['sort'](_0x6a393f['query'][_0xc543('0x3c')]);_0x4c7c89[_0xc543('0x3d')]=qs['filters'](_[_0xc543('0x3e')](_0x6a393f[_0xc543('0x33')],_0x55d48d['filters']));if(_0x6a393f[_0xc543('0x33')][_0xc543('0x40')]){_0x4c7c89['where']=_[_0xc543('0x5b')](_0x4c7c89[_0xc543('0x3d')],{'$or':_[_0xc543('0x3f')](_0x4c7c89[_0xc543('0x36')],function(_0x89f07f){var _0x12b0ea={};_0x12b0ea[_0x89f07f]={'$like':'%'+_0x6a393f[_0xc543('0x33')][_0xc543('0x40')]+'%'};return _0x12b0ea;})});}_0x4c7c89=_[_0xc543('0x5b')]({},_0x4c7c89,_0x6a393f['options']);return _0x5b628e[_0xc543('0x58')](_0x4c7c89);}})[_0xc543('0x26')](function(_0x25664f){if(_0x25664f){_0x39cc29=_0x25664f[_0xc543('0x39')];if(!_0x6a393f[_0xc543('0x33')]['hasOwnProperty'](_0xc543('0x3b'))){_0x4c7c89[_0xc543('0x21')]=qs[_0xc543('0x21')](_0x6a393f[_0xc543('0x33')][_0xc543('0x21')]);_0x4c7c89['offset']=qs[_0xc543('0x1e')](_0x6a393f[_0xc543('0x33')][_0xc543('0x1e')]);}return _0x5b628e[_0xc543('0x58')](_0x4c7c89);}})[_0xc543('0x26')](function(_0x427363){if(_0x427363){return _0x427363?{'count':_0x39cc29,'rows':_0x427363}:null;}})[_0xc543('0x26')](respondWithResult(_0x3faccb,null))['catch'](handleError(_0x3faccb,null));};
\ No newline at end of file
index 0e914b8..3aec424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e01=['update','remove','emit','hasOwnProperty','hook','exports','events','setMaxListeners','save'];(function(_0x503950,_0x5022eb){var _0x1657a9=function(_0x4c1e8f){while(--_0x4c1e8f){_0x503950['push'](_0x503950['shift']());}};_0x1657a9(++_0x5022eb);}(_0x8e01,0x7b));var _0x18e0=function(_0x20121a,_0x3661e6){_0x20121a=_0x20121a-0x0;var _0x2e4151=_0x8e01[_0x20121a];return _0x2e4151;};'use strict';var EventEmitter=require(_0x18e0('0x0'));var SquareProject=require('../../mysqldb')['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x18e0('0x1')](0x0);var events={'afterCreate':_0x18e0('0x2'),'afterUpdate':_0x18e0('0x3'),'afterDestroy':_0x18e0('0x4')};function emitEvent(_0x23e2ef){return function(_0x9628f8,_0x31484f,_0x2fe2a0){SquareProjectEvents[_0x18e0('0x5')](_0x23e2ef+':'+_0x9628f8['id'],_0x9628f8);SquareProjectEvents['emit'](_0x23e2ef,_0x9628f8);_0x2fe2a0(null);};}for(var e in events){if(events[_0x18e0('0x6')](e)){var event=events[e];SquareProject[_0x18e0('0x7')](e,emitEvent(event));}}module[_0x18e0('0x8')]=SquareProjectEvents;
\ No newline at end of file
+var _0xed17=['emit','hasOwnProperty','hook','exports','events','SquareProject','setMaxListeners','save','update'];(function(_0x4b174a,_0x33a017){var _0x3cd7bf=function(_0x44ccd9){while(--_0x44ccd9){_0x4b174a['push'](_0x4b174a['shift']());}};_0x3cd7bf(++_0x33a017);}(_0xed17,0x94));var _0x7ed1=function(_0x215e5f,_0x321e4f){_0x215e5f=_0x215e5f-0x0;var _0x4ba505=_0xed17[_0x215e5f];return _0x4ba505;};'use strict';var EventEmitter=require(_0x7ed1('0x0'));var SquareProject=require('../../mysqldb')['db'][_0x7ed1('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x7ed1('0x2')](0x0);var events={'afterCreate':_0x7ed1('0x3'),'afterUpdate':_0x7ed1('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2497e5){return function(_0x1cf8f6,_0x54890,_0x159d1e){SquareProjectEvents['emit'](_0x2497e5+':'+_0x1cf8f6['id'],_0x1cf8f6);SquareProjectEvents[_0x7ed1('0x5')](_0x2497e5,_0x1cf8f6);_0x159d1e(null);};}for(var e in events){if(events[_0x7ed1('0x6')](e)){var event=events[e];SquareProject[_0x7ed1('0x7')](e,emitEvent(event));}}module[_0x7ed1('0x8')]=SquareProjectEvents;
\ No newline at end of file
index 0c9845b..122c0b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa876=['../../config/environment','./squareProject.attributes','exports','SquareProject','square_projects','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','util','../../config/logger','api','moment','bluebird','path'];(function(_0x590b61,_0x4c4335){var _0x1a14dc=function(_0x2ff4f6){while(--_0x2ff4f6){_0x590b61['push'](_0x590b61['shift']());}};_0x1a14dc(++_0x4c4335);}(_0xa876,0x13d));var _0x6a87=function(_0x4a7e21,_0x324ce0){_0x4a7e21=_0x4a7e21-0x0;var _0x2b19dc=_0xa876[_0x4a7e21];return _0x2b19dc;};'use strict';var _=require('lodash');var util=require(_0x6a87('0x0'));var logger=require(_0x6a87('0x1'))(_0x6a87('0x2'));var moment=require(_0x6a87('0x3'));var BPromise=require(_0x6a87('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6a87('0x5'));var rimraf=require('rimraf');var config=require(_0x6a87('0x6'));var attributes=require(_0x6a87('0x7'));module[_0x6a87('0x8')]=function(_0x39bdfb,_0x5b9418){return _0x39bdfb['define'](_0x6a87('0x9'),attributes,{'tableName':_0x6a87('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4ece05,_0x226fdb,_0x9b49e5){if(_0x4ece05[_0x6a87('0xb')](_0x6a87('0xc'))){_0x4ece05[_0x6a87('0xd')]=moment()[_0x6a87('0xe')](_0x6a87('0xf'));}if(_0x4ece05['changed'](_0x6a87('0x10'))){_0x4ece05['publishedAt']=moment()[_0x6a87('0xe')](_0x6a87('0xf'));}_0x9b49e5(null,_0x4ece05);}}});};
\ No newline at end of file
+var _0xcd18=['util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./squareProject.attributes','define','square_projects','changed','preproduction','format','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0x4a0fdd,_0x5da918){var _0x2124c7=function(_0x3ec2fe){while(--_0x3ec2fe){_0x4a0fdd['push'](_0x4a0fdd['shift']());}};_0x2124c7(++_0x5da918);}(_0xcd18,0x12b));var _0x8cd1=function(_0x345aa0,_0x111b0e){_0x345aa0=_0x345aa0-0x0;var _0x524f36=_0xcd18[_0x345aa0];return _0x524f36;};'use strict';var _=require(_0x8cd1('0x0'));var util=require(_0x8cd1('0x1'));var logger=require(_0x8cd1('0x2'))('api');var moment=require(_0x8cd1('0x3'));var BPromise=require(_0x8cd1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8cd1('0x5'));var rimraf=require(_0x8cd1('0x6'));var config=require(_0x8cd1('0x7'));var attributes=require(_0x8cd1('0x8'));module['exports']=function(_0x53556b,_0x16f6e1){return _0x53556b[_0x8cd1('0x9')]('SquareProject',attributes,{'tableName':_0x8cd1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3576c0,_0x274c5b,_0x2fe8dc){if(_0x3576c0[_0x8cd1('0xb')](_0x8cd1('0xc'))){_0x3576c0['savedAt']=moment()[_0x8cd1('0xd')](_0x8cd1('0xe'));}if(_0x3576c0['changed']('production')){_0x3576c0['publishedAt']=moment()[_0x8cd1('0xd')](_0x8cd1('0xe'));}_0x2fe8dc(null,_0x3576c0);}}});};
\ No newline at end of file
index e74e8b6..5ee9e60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa09a=['./squareProject.socket','register','request','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','ShowSquareProject','SquareProject','options','where','map','include','model','attributes','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter'];(function(_0x223726,_0x88bf53){var _0x42038e=function(_0x29ef16){while(--_0x29ef16){_0x223726['push'](_0x223726['shift']());}};_0x42038e(++_0x88bf53);}(_0xa09a,0xe6));var _0xaa09=function(_0x1a36d0,_0x11f4bd){_0x1a36d0=_0x1a36d0-0x0;var _0x36845e=_0xa09a[_0x1a36d0];return _0x36845e;};'use strict';var _=require(_0xaa09('0x0'));var util=require(_0xaa09('0x1'));var moment=require(_0xaa09('0x2'));var BPromise=require('bluebird');var rs=require(_0xaa09('0x3'));var fs=require('fs');var Redis=require(_0xaa09('0x4'));var db=require(_0xaa09('0x5'))['db'];var utils=require(_0xaa09('0x6'));var logger=require(_0xaa09('0x7'))('rpc');var config=require(_0xaa09('0x8'));var jayson=require(_0xaa09('0x9'));var client=jayson[_0xaa09('0xa')][_0xaa09('0xb')]({'port':0x232a});config[_0xaa09('0xc')]=_['defaults'](config[_0xaa09('0xc')],{'host':_0xaa09('0xd'),'port':0x18eb});var socket=require(_0xaa09('0xe'))(new Redis(config[_0xaa09('0xc')]));require(_0xaa09('0xf'))[_0xaa09('0x10')](socket);function respondWithRpcPromise(_0x412cc9,_0x15b8d3,_0x534a4a){return new BPromise(function(_0x1ef53d,_0x858fec){return client[_0xaa09('0x11')](_0x412cc9,_0x534a4a)['then'](function(_0x57b18d){logger[_0xaa09('0x12')](_0xaa09('0x13'),_0x15b8d3,_0xaa09('0x14'));logger[_0xaa09('0x15')]('SquareProject,\x20%s,\x20%s,\x20%s',_0x15b8d3,_0xaa09('0x14'),JSON[_0xaa09('0x16')](_0x57b18d));if(_0x57b18d[_0xaa09('0x17')]){if(_0x57b18d['error'][_0xaa09('0x18')]===0x1f4){logger[_0xaa09('0x17')](_0xaa09('0x13'),_0x15b8d3,_0x57b18d[_0xaa09('0x17')]['message']);return _0x858fec(_0x57b18d[_0xaa09('0x17')]['message']);}logger['error'](_0xaa09('0x13'),_0x15b8d3,_0x57b18d[_0xaa09('0x17')][_0xaa09('0x19')]);return _0x1ef53d(_0x57b18d['error'][_0xaa09('0x19')]);}else{logger[_0xaa09('0x12')]('SquareProject,\x20%s,\x20%s',_0x15b8d3,_0xaa09('0x14'));_0x1ef53d(_0x57b18d[_0xaa09('0x1a')]['message']);}})['catch'](function(_0x173d65){logger[_0xaa09('0x17')]('SquareProject,\x20%s,\x20%s',_0x15b8d3,_0x173d65);_0x858fec(_0x173d65);});});}exports[_0xaa09('0x1b')]=function(_0x22f3ef){var _0x1d9e2c=this;return new Promise(function(_0x3b3f31,_0x4ab186){return db[_0xaa09('0x1c')]['find']({'raw':_0x22f3ef[_0xaa09('0x1d')]?_0x22f3ef[_0xaa09('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x22f3ef['options']?_0x22f3ef[_0xaa09('0x1d')][_0xaa09('0x1e')]||null:null,'attributes':_0x22f3ef[_0xaa09('0x1d')]?_0x22f3ef[_0xaa09('0x1d')]['attributes']||null:null,'include':_0x22f3ef[_0xaa09('0x1d')]?_0x22f3ef['options']['include']?_[_0xaa09('0x1f')](_0x22f3ef[_0xaa09('0x1d')][_0xaa09('0x20')],function(_0x4fd835){return{'model':db[_0x4fd835['model']],'as':_0x4fd835['as'],'attributes':_0x4fd835['attributes'],'include':_0x4fd835[_0xaa09('0x20')]?_[_0xaa09('0x1f')](_0x4fd835[_0xaa09('0x20')],function(_0x3e237f){return{'model':db[_0x3e237f[_0xaa09('0x21')]],'as':_0x3e237f['as'],'attributes':_0x3e237f['attributes'],'include':_0x3e237f[_0xaa09('0x20')]?_[_0xaa09('0x1f')](_0x3e237f[_0xaa09('0x20')],function(_0xed1f12){return{'model':db[_0xed1f12[_0xaa09('0x21')]],'as':_0xed1f12['as'],'attributes':_0xed1f12[_0xaa09('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x264a5a){logger['info'](_0xaa09('0x1b'),_0x22f3ef);logger[_0xaa09('0x15')](_0xaa09('0x1b'),_0x22f3ef,JSON['stringify'](_0x264a5a));_0x3b3f31(_0x264a5a);})['catch'](function(_0x5724c6){logger['error'](_0xaa09('0x1b'),_0x5724c6['message'],_0x22f3ef);_0x4ab186(_0x1d9e2c[_0xaa09('0x17')](0x1f4,_0x5724c6[_0xaa09('0x19')]));});});};
\ No newline at end of file
+var _0x5aba=['lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','client','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','request','info','request\x20sent','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareProject,\x20%s,\x20%s','message','result','ShowSquareProject','SquareProject','find','options','where','map','include','attributes','model','then','debug','catch'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0x5aba,0x90));var _0xa5ab=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x5aba[_0x24f31b];return _0x488401;};'use strict';var _=require(_0xa5ab('0x0'));var util=require(_0xa5ab('0x1'));var moment=require(_0xa5ab('0x2'));var BPromise=require(_0xa5ab('0x3'));var rs=require(_0xa5ab('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa5ab('0x5'));var logger=require(_0xa5ab('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa5ab('0x7')]['http']({'port':0x232a});config[_0xa5ab('0x8')]=_[_0xa5ab('0x9')](config[_0xa5ab('0x8')],{'host':_0xa5ab('0xa'),'port':0x18eb});var socket=require(_0xa5ab('0xb'))(new Redis(config[_0xa5ab('0x8')]));require(_0xa5ab('0xc'))[_0xa5ab('0xd')](socket);function respondWithRpcPromise(_0x4a8278,_0x33df4b,_0x5a11b2){return new BPromise(function(_0xb04066,_0x1affdc){return client[_0xa5ab('0xe')](_0x4a8278,_0x5a11b2)['then'](function(_0x469e22){logger[_0xa5ab('0xf')]('SquareProject,\x20%s,\x20%s',_0x33df4b,_0xa5ab('0x10'));logger['debug'](_0xa5ab('0x11'),_0x33df4b,_0xa5ab('0x10'),JSON[_0xa5ab('0x12')](_0x469e22));if(_0x469e22['error']){if(_0x469e22[_0xa5ab('0x13')][_0xa5ab('0x14')]===0x1f4){logger[_0xa5ab('0x13')](_0xa5ab('0x15'),_0x33df4b,_0x469e22[_0xa5ab('0x13')][_0xa5ab('0x16')]);return _0x1affdc(_0x469e22[_0xa5ab('0x13')][_0xa5ab('0x16')]);}logger[_0xa5ab('0x13')](_0xa5ab('0x15'),_0x33df4b,_0x469e22[_0xa5ab('0x13')][_0xa5ab('0x16')]);return _0xb04066(_0x469e22['error'][_0xa5ab('0x16')]);}else{logger['info']('SquareProject,\x20%s,\x20%s',_0x33df4b,'request\x20sent');_0xb04066(_0x469e22[_0xa5ab('0x17')][_0xa5ab('0x16')]);}})['catch'](function(_0x19955c){logger[_0xa5ab('0x13')]('SquareProject,\x20%s,\x20%s',_0x33df4b,_0x19955c);_0x1affdc(_0x19955c);});});}exports[_0xa5ab('0x18')]=function(_0x23bf1e){var _0x17974f=this;return new Promise(function(_0x2410e8,_0xe43d61){return db[_0xa5ab('0x19')][_0xa5ab('0x1a')]({'raw':_0x23bf1e[_0xa5ab('0x1b')]?_0x23bf1e[_0xa5ab('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x23bf1e[_0xa5ab('0x1b')]?_0x23bf1e[_0xa5ab('0x1b')][_0xa5ab('0x1c')]||null:null,'attributes':_0x23bf1e[_0xa5ab('0x1b')]?_0x23bf1e[_0xa5ab('0x1b')]['attributes']||null:null,'include':_0x23bf1e[_0xa5ab('0x1b')]?_0x23bf1e['options']['include']?_[_0xa5ab('0x1d')](_0x23bf1e[_0xa5ab('0x1b')][_0xa5ab('0x1e')],function(_0x4b6d00){return{'model':db[_0x4b6d00['model']],'as':_0x4b6d00['as'],'attributes':_0x4b6d00[_0xa5ab('0x1f')],'include':_0x4b6d00['include']?_[_0xa5ab('0x1d')](_0x4b6d00[_0xa5ab('0x1e')],function(_0x5c0668){return{'model':db[_0x5c0668[_0xa5ab('0x20')]],'as':_0x5c0668['as'],'attributes':_0x5c0668['attributes'],'include':_0x5c0668['include']?_['map'](_0x5c0668[_0xa5ab('0x1e')],function(_0x3c51ab){return{'model':db[_0x3c51ab[_0xa5ab('0x20')]],'as':_0x3c51ab['as'],'attributes':_0x3c51ab[_0xa5ab('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xa5ab('0x21')](function(_0x2367e6){logger[_0xa5ab('0xf')](_0xa5ab('0x18'),_0x23bf1e);logger[_0xa5ab('0x22')](_0xa5ab('0x18'),_0x23bf1e,JSON[_0xa5ab('0x12')](_0x2367e6));_0x2410e8(_0x2367e6);})[_0xa5ab('0x23')](function(_0x1427bd){logger[_0xa5ab('0x13')](_0xa5ab('0x18'),_0x1427bd['message'],_0x23bf1e);_0xe43d61(_0x17974f['error'](0x1f4,_0x1427bd['message']));});});};
\ No newline at end of file
index c234311..4178253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5caf=['squareProject:','./squareProject.events','save','remove','update','emit','removeListener','register','length'];(function(_0x4e76d5,_0x27792b){var _0x4a12aa=function(_0x575654){while(--_0x575654){_0x4e76d5['push'](_0x4e76d5['shift']());}};_0x4a12aa(++_0x27792b);}(_0x5caf,0xc7));var _0xf5ca=function(_0x1b72f8,_0x2cba5b){_0x1b72f8=_0x1b72f8-0x0;var _0x40685a=_0x5caf[_0x1b72f8];return _0x40685a;};'use strict';var SquareProjectEvents=require(_0xf5ca('0x0'));var events=[_0xf5ca('0x1'),_0xf5ca('0x2'),_0xf5ca('0x3')];function createListener(_0x278f1f,_0x4095f2){return function(_0x2fce78){_0x4095f2[_0xf5ca('0x4')](_0x278f1f,_0x2fce78);};}function removeListener(_0x4e7bf9,_0x175a64){return function(){SquareProjectEvents[_0xf5ca('0x5')](_0x4e7bf9,_0x175a64);};}exports[_0xf5ca('0x6')]=function(_0x2a7fc3){for(var _0x7b9448=0x0,_0x4a4710=events[_0xf5ca('0x7')];_0x7b9448<_0x4a4710;_0x7b9448++){var _0x6cccbe=events[_0x7b9448];var _0x2f0a95=createListener(_0xf5ca('0x8')+_0x6cccbe,_0x2a7fc3);SquareProjectEvents['on'](_0x6cccbe,_0x2f0a95);}};
\ No newline at end of file
+var _0x3632=['./squareProject.events','save','remove','emit','removeListener','length'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x3632,0x1aa));var _0x2363=function(_0x4b0305,_0x3ac505){_0x4b0305=_0x4b0305-0x0;var _0x17f7fd=_0x3632[_0x4b0305];return _0x17f7fd;};'use strict';var SquareProjectEvents=require(_0x2363('0x0'));var events=[_0x2363('0x1'),_0x2363('0x2'),'update'];function createListener(_0x3adf6d,_0x111b2c){return function(_0x4f54ed){_0x111b2c[_0x2363('0x3')](_0x3adf6d,_0x4f54ed);};}function removeListener(_0x3c1267,_0x2edc7b){return function(){SquareProjectEvents[_0x2363('0x4')](_0x3c1267,_0x2edc7b);};}exports['register']=function(_0x3117ac){for(var _0x597b1e=0x0,_0xe9a684=events[_0x2363('0x5')];_0x597b1e<_0xe9a684;_0x597b1e++){var _0xcec338=events[_0x597b1e];var _0x4a9491=createListener('squareProject:'+_0xcec338,_0x3117ac);SquareProjectEvents['on'](_0xcec338,_0x4a9491);}};
\ No newline at end of file
index f329c6e..c9aa9d8 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(_0x225194,_0x1ffe79){var _0x309bb0=function(_0x4bcba2){while(--_0x4bcba2){_0x225194['push'](_0x225194['shift']());}};_0x309bb0(++_0x1ffe79);}(_0x1cb9,0x14e));var _0x91cb=function(_0x54ddc6,_0x3207da){_0x54ddc6=_0x54ddc6-0x0;var _0x34f387=_0x1cb9[_0x54ddc6];return _0x34f387;};'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 _0x814b=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','post','create','put','delete','destroy','exports'];(function(_0x26f4a3,_0x31ab45){var _0x105987=function(_0x1d2560){while(--_0x1d2560){_0x26f4a3['push'](_0x26f4a3['shift']());}};_0x105987(++_0x31ab45);}(_0x814b,0x1a2));var _0xb814=function(_0x2c96f6,_0x877207){_0x2c96f6=_0x2c96f6-0x0;var _0x6d4808=_0x814b[_0x2c96f6];return _0x6d4808;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0x10')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0x12')](_0xb814('0xc'),auth[_0xb814('0xb')](),controller['update']);router[_0xb814('0x13')]('/:id',auth[_0xb814('0xb')](),controller[_0xb814('0x14')]);module[_0xb814('0x15')]=router;
\ No newline at end of file
index 820b638..76793b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb138=['getDataValue','substring','lastIndexOf','sequelize','exports','STRING'];(function(_0x19a357,_0x5ca8b9){var _0x50b8af=function(_0x51d383){while(--_0x51d383){_0x19a357['push'](_0x19a357['shift']());}};_0x50b8af(++_0x5ca8b9);}(_0xb138,0x1dd));var _0x8b13=function(_0x5a1b44,_0x4aea7b){_0x5a1b44=_0x5a1b44-0x0;var _0x9448c6=_0xb138[_0x5a1b44];return _0x9448c6;};'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 _0x9c5a=['getDataValue','savePath','lastIndexOf','sequelize','exports','STRING','VIRTUAL'];(function(_0x289aaf,_0x2615f6){var _0x1c0f18=function(_0x50ea8e){while(--_0x50ea8e){_0x289aaf['push'](_0x289aaf['shift']());}};_0x1c0f18(++_0x2615f6);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x319e32,_0x2eb022){_0x319e32=_0x319e32-0x0;var _0x5007be=_0x9c5a[_0x319e32];return _0x5007be;};'use strict';var Sequelize=require(_0xa9c5('0x0'));module[_0xa9c5('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xa9c5('0x2')]},'calleridname':{'type':Sequelize[_0xa9c5('0x2')]},'context':{'type':Sequelize[_0xa9c5('0x2')]},'extension':{'type':Sequelize[_0xa9c5('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xa9c5('0x2')]},'dnid':{'type':Sequelize[_0xa9c5('0x2')]},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize[_0xa9c5('0x2')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0xa9c5('0x2')]},'format':{'type':Sequelize[_0xa9c5('0x3')],'get':function(){var _0x4cb597='';var _0x4b6db6=this[_0xa9c5('0x4')](_0xa9c5('0x5'));if(_0x4b6db6){_0x4cb597=_0x4b6db6['substring'](_0x4b6db6[_0xa9c5('0x6')]('.'));}return _0x4cb597;}}};
\ No newline at end of file
index a77db59..e4bdcbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eec=['create','body','download','../../components/encryptor','uniqueid','savePath','format','existsSync','decryptFile','secrets','recording','SquareRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','destroy','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','unlinkSync','.cypher','File:\x20\x22','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SquareRecording','includeAll','include','findAll','rows','catch','show','params','find'];(function(_0x486ab6,_0x257c0a){var _0x1ce5ea=function(_0x1443a5){while(--_0x1443a5){_0x486ab6['push'](_0x486ab6['shift']());}};_0x1ce5ea(++_0x257c0a);}(_0x1eec,0x1a5));var _0xc1ee=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0x1eec[_0x2d2c16];return _0x53f2fb;};'use strict';var emlformat=require(_0xc1ee('0x0'));var rimraf=require(_0xc1ee('0x1'));var zipdir=require(_0xc1ee('0x2'));var jsonpatch=require(_0xc1ee('0x3'));var rp=require('request-promise');var moment=require(_0xc1ee('0x4'));var BPromise=require(_0xc1ee('0x5'));var Mustache=require(_0xc1ee('0x6'));var util=require(_0xc1ee('0x7'));var path=require(_0xc1ee('0x8'));var sox=require(_0xc1ee('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc1ee('0xa'));var _=require('lodash');var squel=require(_0xc1ee('0xb'));var crypto=require(_0xc1ee('0xc'));var jsforce=require(_0xc1ee('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc1ee('0xe'));var querystring=require(_0xc1ee('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc1ee('0x10'));var qs=require(_0xc1ee('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc1ee('0x12'));var logger=require(_0xc1ee('0x13'))(_0xc1ee('0x14'));var utils=require(_0xc1ee('0x15'));var config=require(_0xc1ee('0x16'));var licenseUtil=require(_0xc1ee('0x17'));var db=require(_0xc1ee('0x18'))['db'];function respondWithStatusCode(_0x24c4bd,_0x4d7e3d){_0x4d7e3d=_0x4d7e3d||0xcc;return function(_0x2c2f6d){if(_0x2c2f6d){return _0x24c4bd[_0xc1ee('0x19')](_0x4d7e3d);}return _0x24c4bd[_0xc1ee('0x1a')](_0x4d7e3d)[_0xc1ee('0x1b')]();};}function respondWithResult(_0x40674d,_0x3a6704){_0x3a6704=_0x3a6704||0xc8;return function(_0x18b3fd){if(_0x18b3fd){return _0x40674d['status'](_0x3a6704)[_0xc1ee('0x1c')](_0x18b3fd);}};}function respondWithFilteredResult(_0x347b9c,_0xde864){return function(_0x44121c){if(_0x44121c){var _0x24c37a=typeof _0xde864[_0xc1ee('0x1d')]==='undefined'&&typeof _0xde864[_0xc1ee('0x1e')]===_0xc1ee('0x1f');var _0xc69b07=_0x44121c[_0xc1ee('0x20')];var _0x3d721b=_0x24c37a?0x0:_0xde864[_0xc1ee('0x1d')];var _0xf9a12d=_0x24c37a?_0x44121c[_0xc1ee('0x20')]:_0xde864[_0xc1ee('0x1d')]+_0xde864[_0xc1ee('0x1e')];var _0x4fb457;if(_0xf9a12d>=_0xc69b07){_0xf9a12d=_0xc69b07;_0x4fb457=0xc8;}else{_0x4fb457=0xce;}_0x347b9c[_0xc1ee('0x1a')](_0x4fb457);return _0x347b9c[_0xc1ee('0x21')](_0xc1ee('0x22'),_0x3d721b+'-'+_0xf9a12d+'/'+_0xc69b07)[_0xc1ee('0x1c')](_0x44121c);}return null;};}function patchUpdates(_0x462826){return function(_0x23be59){try{jsonpatch[_0xc1ee('0x23')](_0x23be59,_0x462826,!![]);}catch(_0x4668c4){return BPromise[_0xc1ee('0x24')](_0x4668c4);}return _0x23be59[_0xc1ee('0x25')]();};}function saveUpdates(_0x274f2d,_0x476a0f){return function(_0x574584){if(_0x574584){return _0x574584[_0xc1ee('0x26')](_0x274f2d)['then'](function(_0x3f2c5c){return _0x3f2c5c;});}return null;};}function removeEntity(_0x32243f,_0x18ea71){return function(_0x15cbcf){if(_0x15cbcf){return _0x15cbcf['destroy']()[_0xc1ee('0x27')](function(){_0x32243f[_0xc1ee('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e8b49,_0x5bb5ed){return function(_0x7c913b){if(!_0x7c913b){_0x4e8b49['sendStatus'](0x194);}return _0x7c913b;};}function handleError(_0x5329fe,_0x4ea7be){_0x4ea7be=_0x4ea7be||0x1f4;return function(_0x17ef52){logger[_0xc1ee('0x28')](_0x17ef52[_0xc1ee('0x29')]);if(_0x17ef52[_0xc1ee('0x2a')]){delete _0x17ef52[_0xc1ee('0x2a')];}_0x5329fe[_0xc1ee('0x1a')](_0x4ea7be)[_0xc1ee('0x2b')](_0x17ef52);};}exports['index']=function(_0x4434c1,_0x2fcba6){var _0x5d2eb4={},_0x47dd1f={},_0x5eac22={'count':0x0,'rows':[]};var _0x18c0b8=_['map'](db['SquareRecording'][_0xc1ee('0x2c')],function(_0x257f3b){return{'name':_0x257f3b['fieldName'],'type':_0x257f3b[_0xc1ee('0x2d')][_0xc1ee('0x2e')]};});_0x47dd1f[_0xc1ee('0x2f')]=_[_0xc1ee('0x30')](_0x18c0b8,_0xc1ee('0x2a'));_0x47dd1f[_0xc1ee('0x31')]=_[_0xc1ee('0x32')](_0x4434c1[_0xc1ee('0x31')]);_0x47dd1f[_0xc1ee('0x33')]=_[_0xc1ee('0x34')](_0x47dd1f[_0xc1ee('0x2f')],_0x47dd1f[_0xc1ee('0x31')]);_0x5d2eb4[_0xc1ee('0x35')]=_[_0xc1ee('0x34')](_0x47dd1f[_0xc1ee('0x2f')],qs[_0xc1ee('0x36')](_0x4434c1[_0xc1ee('0x31')][_0xc1ee('0x36')]));_0x5d2eb4[_0xc1ee('0x35')]=_0x5d2eb4['attributes']['length']?_0x5d2eb4['attributes']:_0x47dd1f['model'];if(!_0x4434c1[_0xc1ee('0x31')][_0xc1ee('0x37')](_0xc1ee('0x38'))){_0x5d2eb4[_0xc1ee('0x1e')]=qs[_0xc1ee('0x1e')](_0x4434c1[_0xc1ee('0x31')][_0xc1ee('0x1e')]);_0x5d2eb4[_0xc1ee('0x1d')]=qs[_0xc1ee('0x1d')](_0x4434c1[_0xc1ee('0x31')]['offset']);}_0x5d2eb4[_0xc1ee('0x39')]=qs[_0xc1ee('0x3a')](_0x4434c1[_0xc1ee('0x31')]['sort']);_0x5d2eb4[_0xc1ee('0x3b')]=qs[_0xc1ee('0x33')](_[_0xc1ee('0x3c')](_0x4434c1[_0xc1ee('0x31')],_0x47dd1f['filters']),_0x18c0b8);if(_0x4434c1[_0xc1ee('0x31')][_0xc1ee('0x3d')]){_0x5d2eb4[_0xc1ee('0x3b')]=_[_0xc1ee('0x3e')](_0x5d2eb4[_0xc1ee('0x3b')],{'$or':_[_0xc1ee('0x30')](_0x18c0b8,function(_0x4ccae3){if(_0x4ccae3[_0xc1ee('0x2d')]!==_0xc1ee('0x3f')){var _0x2dbb24={};_0x2dbb24[_0x4ccae3[_0xc1ee('0x2a')]]={'$like':'%'+_0x4434c1[_0xc1ee('0x31')][_0xc1ee('0x3d')]+'%'};return _0x2dbb24;}})});}_0x5d2eb4=_['merge']({},_0x5d2eb4,_0x4434c1[_0xc1ee('0x40')]);var _0x537a60={'where':_0x5d2eb4[_0xc1ee('0x3b')]};return db[_0xc1ee('0x41')]['count'](_0x537a60)[_0xc1ee('0x27')](function(_0x5c8f5f){_0x5eac22[_0xc1ee('0x20')]=_0x5c8f5f;if(_0x4434c1[_0xc1ee('0x31')][_0xc1ee('0x42')]){_0x5d2eb4[_0xc1ee('0x43')]=[{'all':!![]}];}return db[_0xc1ee('0x41')][_0xc1ee('0x44')](_0x5d2eb4);})[_0xc1ee('0x27')](function(_0x41f008){_0x5eac22[_0xc1ee('0x45')]=_0x41f008;return _0x5eac22;})[_0xc1ee('0x27')](respondWithFilteredResult(_0x2fcba6,_0x5d2eb4))[_0xc1ee('0x46')](handleError(_0x2fcba6,null));};exports[_0xc1ee('0x47')]=function(_0x4f6883,_0x5759c7){var _0x40ac14={'raw':!![],'where':{'id':_0x4f6883[_0xc1ee('0x48')]['id']}},_0x54f839={};_0x54f839[_0xc1ee('0x2f')]=_[_0xc1ee('0x32')](db[_0xc1ee('0x41')][_0xc1ee('0x2c')]);_0x54f839[_0xc1ee('0x31')]=_[_0xc1ee('0x32')](_0x4f6883[_0xc1ee('0x31')]);_0x54f839[_0xc1ee('0x33')]=_['intersection'](_0x54f839['model'],_0x54f839[_0xc1ee('0x31')]);_0x40ac14[_0xc1ee('0x35')]=_['intersection'](_0x54f839['model'],qs[_0xc1ee('0x36')](_0x4f6883['query']['fields']));_0x40ac14[_0xc1ee('0x35')]=_0x40ac14[_0xc1ee('0x35')]['length']?_0x40ac14[_0xc1ee('0x35')]:_0x54f839['model'];if(_0x4f6883[_0xc1ee('0x31')][_0xc1ee('0x42')]){_0x40ac14['include']=[{'all':!![]}];}_0x40ac14=_[_0xc1ee('0x3e')]({},_0x40ac14,_0x4f6883[_0xc1ee('0x40')]);return db[_0xc1ee('0x41')][_0xc1ee('0x49')](_0x40ac14)[_0xc1ee('0x27')](handleEntityNotFound(_0x5759c7,null))[_0xc1ee('0x27')](respondWithResult(_0x5759c7,null))[_0xc1ee('0x46')](handleError(_0x5759c7,null));};exports[_0xc1ee('0x4a')]=function(_0x2312e4,_0x5545a){return db[_0xc1ee('0x41')]['create'](_0x2312e4[_0xc1ee('0x4b')],{})[_0xc1ee('0x27')](respondWithResult(_0x5545a,0xc9))[_0xc1ee('0x46')](handleError(_0x5545a,null));};exports[_0xc1ee('0x26')]=function(_0x48c75c,_0x1f38dd){if(_0x48c75c[_0xc1ee('0x4b')]['id']){delete _0x48c75c['body']['id'];}return db[_0xc1ee('0x41')]['find']({'where':{'id':_0x48c75c['params']['id']}})[_0xc1ee('0x27')](handleEntityNotFound(_0x1f38dd,null))['then'](saveUpdates(_0x48c75c['body'],null))[_0xc1ee('0x27')](respondWithResult(_0x1f38dd,null))[_0xc1ee('0x46')](handleError(_0x1f38dd,null));};exports[_0xc1ee('0x4c')]=function(_0x5a5696,_0x4691a4,_0x18ba20){var _0xc7ff5f=require(_0xc1ee('0x4d'));var _0x375ec3=![];var _0x58c456={};if(_0x5a5696['query']['type']&&_0x5a5696[_0xc1ee('0x31')][_0xc1ee('0x2d')]===_0xc1ee('0x4e')){_0x58c456['uniqueid']=_0x5a5696[_0xc1ee('0x48')]['id'];}else{_0x58c456['id']=_0x5a5696['params']['id'];}return db[_0xc1ee('0x41')][_0xc1ee('0x49')]({'where':_0x58c456,'attributes':['id',_0xc1ee('0x4f'),'filename'],'raw':!![]})['then'](handleEntityNotFound(_0x4691a4,null))[_0xc1ee('0x27')](function(_0x160c9e){if(_0x160c9e){var _0x2fcabf=_0x160c9e[_0xc1ee('0x4f')];var _0xa1936a=util[_0xc1ee('0x50')]('%s.cypher',_0x2fcabf);if(fs[_0xc1ee('0x51')](_0xa1936a)){_0x375ec3=!![];return _0xc7ff5f[_0xc1ee('0x52')](_0xa1936a,_0x2fcabf,config[_0xc1ee('0x53')][_0xc1ee('0x54')])[_0xc1ee('0x27')](function(){return _0x160c9e;});}return _0x160c9e;}})[_0xc1ee('0x27')](function(_0x8a78c8){if(_0x8a78c8){var _0xeb746f=_0x8a78c8[_0xc1ee('0x4f')];if(!fs[_0xc1ee('0x51')](_0xeb746f)){throw new db['Sequelize']['ValidationError'](_0xc1ee('0x55'));}if(_0x8a78c8[_0xc1ee('0x56')]){return _0x4691a4[_0xc1ee('0x4c')](_0xeb746f,_0x8a78c8[_0xc1ee('0x56')]+path[_0xc1ee('0x57')](_0xeb746f),function(){if(_0x375ec3){fs['unlink'](_0xeb746f);}});}else{return _0x4691a4[_0xc1ee('0x4c')](_0xeb746f,function(_0x548c2c){if(_0x375ec3){fs[_0xc1ee('0x58')](_0xeb746f);}});}}})[_0xc1ee('0x46')](function(_0x15754a){if(_0x15754a[_0xc1ee('0x59')]==='SquareRecording\x20not\x20found'){_0x4691a4['status'](0x194)[_0xc1ee('0x2b')](_0xc1ee('0x5a'));}else{return handleError(_0x4691a4,null);}});};exports[_0xc1ee('0x5b')]=function(_0x59e3cc,_0x560e70){return db['SquareRecording'][_0xc1ee('0x49')]({'where':{'id':_0x59e3cc[_0xc1ee('0x48')]['id']}})[_0xc1ee('0x27')](function(_0x4bec53){if(_['isNil'](_0x4bec53)){throw new ReferenceError(_0xc1ee('0x5c'));}return _0x4bec53;})[_0xc1ee('0x27')](function(_0x2cdd31){var _0x2d9b4e=_0x2cdd31[_0xc1ee('0x4f')];logger[_0xc1ee('0x5d')](_0xc1ee('0x5e'),_0x2d9b4e);if(!_[_0xc1ee('0x5f')](_0x2cdd31['savePath'])&&fs[_0xc1ee('0x51')](_0x2d9b4e)){logger[_0xc1ee('0x5d')]('File:\x20\x22'+_0x2d9b4e+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xc1ee('0x60')](_0x2d9b4e);}_0x2d9b4e=_0x2d9b4e+_0xc1ee('0x61');if(!_[_0xc1ee('0x5f')](_0x2cdd31[_0xc1ee('0x4f')])&&fs[_0xc1ee('0x51')](_0x2d9b4e)){logger['info'](_0xc1ee('0x62')+_0x2d9b4e+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x2d9b4e);}return _0x2cdd31;})['then'](function(_0x2cf314){if(!_0x2cf314)throw new InternalError();return _0x2cf314[_0xc1ee('0x5b')]();})[_0xc1ee('0x27')](function(){_0x560e70[_0xc1ee('0x1a')](0xcc)[_0xc1ee('0x1b')]();})[_0xc1ee('0x46')](handleError(_0x560e70,null));};
\ No newline at end of file
+var _0x2784=['download','../../components/encryptor','uniqueid','format','%s.cypher','existsSync','decryptFile','secrets','savePath','Sequelize','ValidationError','SquareRecording\x20not\x20found','filename','extname','unlink','Not\x20found','isNil','Entity\x20not\x20found','info','File:\x20\x22','unlinkSync','.cypher','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','json','offset','limit','undefined','count','status','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','map','SquareRecording','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','rows','catch','show','intersection','includeAll','include','create','body','find','params'];(function(_0xfb0cfd,_0x500179){var _0x2fd8aa=function(_0xccb501){while(--_0xccb501){_0xfb0cfd['push'](_0xfb0cfd['shift']());}};_0x2fd8aa(++_0x500179);}(_0x2784,0x196));var _0x4278=function(_0x55f122,_0x56edaf){_0x55f122=_0x55f122-0x0;var _0x1a28d6=_0x2784[_0x55f122];return _0x1a28d6;};'use strict';var emlformat=require(_0x4278('0x0'));var rimraf=require(_0x4278('0x1'));var zipdir=require(_0x4278('0x2'));var jsonpatch=require(_0x4278('0x3'));var rp=require('request-promise');var moment=require(_0x4278('0x4'));var BPromise=require(_0x4278('0x5'));var Mustache=require(_0x4278('0x6'));var util=require('util');var path=require(_0x4278('0x7'));var sox=require('sox');var csv=require(_0x4278('0x8'));var ejs=require(_0x4278('0x9'));var fs=require('fs');var fs_extra=require(_0x4278('0xa'));var _=require(_0x4278('0xb'));var squel=require(_0x4278('0xc'));var crypto=require(_0x4278('0xd'));var jsforce=require(_0x4278('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4278('0x8'));var querystring=require(_0x4278('0xf'));var Papa=require(_0x4278('0x10'));var Redis=require('ioredis');var authService=require(_0x4278('0x11'));var qs=require(_0x4278('0x12'));var as=require(_0x4278('0x13'));var hardwareService=require(_0x4278('0x14'));var logger=require(_0x4278('0x15'))(_0x4278('0x16'));var utils=require('../../config/utils');var config=require(_0x4278('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x4278('0x18'))['db'];function respondWithStatusCode(_0x404d59,_0xc344f0){_0xc344f0=_0xc344f0||0xcc;return function(_0x8f9264){if(_0x8f9264){return _0x404d59[_0x4278('0x19')](_0xc344f0);}return _0x404d59['status'](_0xc344f0)['end']();};}function respondWithResult(_0x2048ac,_0x1ae20a){_0x1ae20a=_0x1ae20a||0xc8;return function(_0x433058){if(_0x433058){return _0x2048ac['status'](_0x1ae20a)[_0x4278('0x1a')](_0x433058);}};}function respondWithFilteredResult(_0x53d2dd,_0x187e0a){return function(_0x26d0cc){if(_0x26d0cc){var _0xb9121d=typeof _0x187e0a[_0x4278('0x1b')]==='undefined'&&typeof _0x187e0a[_0x4278('0x1c')]===_0x4278('0x1d');var _0x2d201b=_0x26d0cc['count'];var _0x49814e=_0xb9121d?0x0:_0x187e0a['offset'];var _0x57b3fe=_0xb9121d?_0x26d0cc[_0x4278('0x1e')]:_0x187e0a['offset']+_0x187e0a['limit'];var _0x2b8af5;if(_0x57b3fe>=_0x2d201b){_0x57b3fe=_0x2d201b;_0x2b8af5=0xc8;}else{_0x2b8af5=0xce;}_0x53d2dd[_0x4278('0x1f')](_0x2b8af5);return _0x53d2dd[_0x4278('0x20')](_0x4278('0x21'),_0x49814e+'-'+_0x57b3fe+'/'+_0x2d201b)[_0x4278('0x1a')](_0x26d0cc);}return null;};}function patchUpdates(_0x32e695){return function(_0x23bce1){try{jsonpatch['apply'](_0x23bce1,_0x32e695,!![]);}catch(_0x746f90){return BPromise[_0x4278('0x22')](_0x746f90);}return _0x23bce1['save']();};}function saveUpdates(_0x4a65a9,_0x20830a){return function(_0x54b9ad){if(_0x54b9ad){return _0x54b9ad[_0x4278('0x23')](_0x4a65a9)[_0x4278('0x24')](function(_0x2f558d){return _0x2f558d;});}return null;};}function removeEntity(_0x4399f6,_0x517397){return function(_0x587231){if(_0x587231){return _0x587231[_0x4278('0x25')]()[_0x4278('0x24')](function(){_0x4399f6[_0x4278('0x1f')](0xcc)[_0x4278('0x26')]();});}};}function handleEntityNotFound(_0x3f7c28,_0x14e20d){return function(_0x56773d){if(!_0x56773d){_0x3f7c28[_0x4278('0x19')](0x194);}return _0x56773d;};}function handleError(_0x134499,_0x28df94){_0x28df94=_0x28df94||0x1f4;return function(_0x27f057){logger[_0x4278('0x27')](_0x27f057[_0x4278('0x28')]);if(_0x27f057[_0x4278('0x29')]){delete _0x27f057['name'];}_0x134499[_0x4278('0x1f')](_0x28df94)[_0x4278('0x2a')](_0x27f057);};}exports['index']=function(_0x3ae50e,_0x3f3f60){var _0xb2a255={},_0x41a1a7={},_0x25c08a={'count':0x0,'rows':[]};var _0x358f86=_[_0x4278('0x2b')](db[_0x4278('0x2c')][_0x4278('0x2d')],function(_0x43eb8f){return{'name':_0x43eb8f[_0x4278('0x2e')],'type':_0x43eb8f[_0x4278('0x2f')][_0x4278('0x30')]};});_0x41a1a7['model']=_[_0x4278('0x2b')](_0x358f86,'name');_0x41a1a7[_0x4278('0x31')]=_[_0x4278('0x32')](_0x3ae50e[_0x4278('0x31')]);_0x41a1a7[_0x4278('0x33')]=_['intersection'](_0x41a1a7[_0x4278('0x34')],_0x41a1a7[_0x4278('0x31')]);_0xb2a255[_0x4278('0x35')]=_['intersection'](_0x41a1a7[_0x4278('0x34')],qs['fields'](_0x3ae50e[_0x4278('0x31')][_0x4278('0x36')]));_0xb2a255[_0x4278('0x35')]=_0xb2a255[_0x4278('0x35')][_0x4278('0x37')]?_0xb2a255['attributes']:_0x41a1a7[_0x4278('0x34')];if(!_0x3ae50e[_0x4278('0x31')][_0x4278('0x38')]('nolimit')){_0xb2a255[_0x4278('0x1c')]=qs['limit'](_0x3ae50e[_0x4278('0x31')][_0x4278('0x1c')]);_0xb2a255[_0x4278('0x1b')]=qs['offset'](_0x3ae50e[_0x4278('0x31')][_0x4278('0x1b')]);}_0xb2a255[_0x4278('0x39')]=qs['sort'](_0x3ae50e[_0x4278('0x31')][_0x4278('0x3a')]);_0xb2a255[_0x4278('0x3b')]=qs[_0x4278('0x33')](_[_0x4278('0x3c')](_0x3ae50e[_0x4278('0x31')],_0x41a1a7[_0x4278('0x33')]),_0x358f86);if(_0x3ae50e[_0x4278('0x31')]['filter']){_0xb2a255['where']=_['merge'](_0xb2a255['where'],{'$or':_[_0x4278('0x2b')](_0x358f86,function(_0x1f2ca7){if(_0x1f2ca7[_0x4278('0x2f')]!=='VIRTUAL'){var _0x1b5e1e={};_0x1b5e1e[_0x1f2ca7[_0x4278('0x29')]]={'$like':'%'+_0x3ae50e['query'][_0x4278('0x3d')]+'%'};return _0x1b5e1e;}})});}_0xb2a255=_[_0x4278('0x3e')]({},_0xb2a255,_0x3ae50e[_0x4278('0x3f')]);var _0x4d5d9c={'where':_0xb2a255[_0x4278('0x3b')]};return db[_0x4278('0x2c')][_0x4278('0x1e')](_0x4d5d9c)[_0x4278('0x24')](function(_0x466b5f){_0x25c08a[_0x4278('0x1e')]=_0x466b5f;if(_0x3ae50e[_0x4278('0x31')]['includeAll']){_0xb2a255['include']=[{'all':!![]}];}return db[_0x4278('0x2c')]['findAll'](_0xb2a255);})[_0x4278('0x24')](function(_0x507a8a){_0x25c08a[_0x4278('0x40')]=_0x507a8a;return _0x25c08a;})[_0x4278('0x24')](respondWithFilteredResult(_0x3f3f60,_0xb2a255))[_0x4278('0x41')](handleError(_0x3f3f60,null));};exports[_0x4278('0x42')]=function(_0x42a0df,_0x3861b2){var _0x467ed9={'raw':!![],'where':{'id':_0x42a0df['params']['id']}},_0x428d72={};_0x428d72[_0x4278('0x34')]=_['keys'](db[_0x4278('0x2c')][_0x4278('0x2d')]);_0x428d72['query']=_[_0x4278('0x32')](_0x42a0df[_0x4278('0x31')]);_0x428d72['filters']=_[_0x4278('0x43')](_0x428d72[_0x4278('0x34')],_0x428d72[_0x4278('0x31')]);_0x467ed9['attributes']=_[_0x4278('0x43')](_0x428d72[_0x4278('0x34')],qs['fields'](_0x42a0df[_0x4278('0x31')]['fields']));_0x467ed9[_0x4278('0x35')]=_0x467ed9[_0x4278('0x35')]['length']?_0x467ed9[_0x4278('0x35')]:_0x428d72['model'];if(_0x42a0df[_0x4278('0x31')][_0x4278('0x44')]){_0x467ed9[_0x4278('0x45')]=[{'all':!![]}];}_0x467ed9=_['merge']({},_0x467ed9,_0x42a0df[_0x4278('0x3f')]);return db['SquareRecording']['find'](_0x467ed9)[_0x4278('0x24')](handleEntityNotFound(_0x3861b2,null))[_0x4278('0x24')](respondWithResult(_0x3861b2,null))[_0x4278('0x41')](handleError(_0x3861b2,null));};exports[_0x4278('0x46')]=function(_0x38a98a,_0x4749d7){return db['SquareRecording'][_0x4278('0x46')](_0x38a98a[_0x4278('0x47')],{})[_0x4278('0x24')](respondWithResult(_0x4749d7,0xc9))['catch'](handleError(_0x4749d7,null));};exports['update']=function(_0x3b56b9,_0x37fd85){if(_0x3b56b9[_0x4278('0x47')]['id']){delete _0x3b56b9[_0x4278('0x47')]['id'];}return db[_0x4278('0x2c')][_0x4278('0x48')]({'where':{'id':_0x3b56b9[_0x4278('0x49')]['id']}})['then'](handleEntityNotFound(_0x37fd85,null))[_0x4278('0x24')](saveUpdates(_0x3b56b9[_0x4278('0x47')],null))[_0x4278('0x24')](respondWithResult(_0x37fd85,null))['catch'](handleError(_0x37fd85,null));};exports[_0x4278('0x4a')]=function(_0x1a481d,_0x584d32,_0x20067f){var _0x3b398d=require(_0x4278('0x4b'));var _0x3734d6=![];var _0x566282={};if(_0x1a481d[_0x4278('0x31')]['type']&&_0x1a481d['query']['type']===_0x4278('0x4c')){_0x566282[_0x4278('0x4c')]=_0x1a481d['params']['id'];}else{_0x566282['id']=_0x1a481d[_0x4278('0x49')]['id'];}return db[_0x4278('0x2c')][_0x4278('0x48')]({'where':_0x566282,'attributes':['id','savePath','filename'],'raw':!![]})[_0x4278('0x24')](handleEntityNotFound(_0x584d32,null))[_0x4278('0x24')](function(_0x52ff6a){if(_0x52ff6a){var _0x1b47b9=_0x52ff6a['savePath'];var _0x1eea04=util[_0x4278('0x4d')](_0x4278('0x4e'),_0x1b47b9);if(fs[_0x4278('0x4f')](_0x1eea04)){_0x3734d6=!![];return _0x3b398d[_0x4278('0x50')](_0x1eea04,_0x1b47b9,config[_0x4278('0x51')]['recording'])[_0x4278('0x24')](function(){return _0x52ff6a;});}return _0x52ff6a;}})['then'](function(_0x10347d){if(_0x10347d){var _0x5e6d40=_0x10347d[_0x4278('0x52')];if(!fs[_0x4278('0x4f')](_0x5e6d40)){throw new db[(_0x4278('0x53'))][(_0x4278('0x54'))](_0x4278('0x55'));}if(_0x10347d[_0x4278('0x56')]){return _0x584d32[_0x4278('0x4a')](_0x5e6d40,_0x10347d[_0x4278('0x56')]+path[_0x4278('0x57')](_0x5e6d40),function(){if(_0x3734d6){fs[_0x4278('0x58')](_0x5e6d40);}});}else{return _0x584d32[_0x4278('0x4a')](_0x5e6d40,function(_0x1f70f1){if(_0x3734d6){fs['unlink'](_0x5e6d40);}});}}})[_0x4278('0x41')](function(_0x19e108){if(_0x19e108['message']==='SquareRecording\x20not\x20found'){_0x584d32['status'](0x194)['send'](_0x4278('0x59'));}else{return handleError(_0x584d32,null);}});};exports[_0x4278('0x25')]=function(_0x244bb5,_0x370f40){return db[_0x4278('0x2c')][_0x4278('0x48')]({'where':{'id':_0x244bb5[_0x4278('0x49')]['id']}})[_0x4278('0x24')](function(_0x4a7ae1){if(_[_0x4278('0x5a')](_0x4a7ae1)){throw new ReferenceError(_0x4278('0x5b'));}return _0x4a7ae1;})[_0x4278('0x24')](function(_0x5455d8){var _0x244170=_0x5455d8[_0x4278('0x52')];logger[_0x4278('0x5c')]('cancellazione\x20fisica\x20documento\x20%s',_0x244170);if(!_[_0x4278('0x5a')](_0x5455d8['savePath'])&&fs['existsSync'](_0x244170)){logger[_0x4278('0x5c')](_0x4278('0x5d')+_0x244170+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x4278('0x5e')](_0x244170);}_0x244170=_0x244170+_0x4278('0x5f');if(!_[_0x4278('0x5a')](_0x5455d8[_0x4278('0x52')])&&fs[_0x4278('0x4f')](_0x244170)){logger[_0x4278('0x5c')](_0x4278('0x5d')+_0x244170+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x244170);}return _0x5455d8;})['then'](function(_0x5aee6a){if(!_0x5aee6a)throw new InternalError();return _0x5aee6a[_0x4278('0x25')]();})[_0x4278('0x24')](function(){_0x370f40[_0x4278('0x1f')](0xcc)[_0x4278('0x26')]();})[_0x4278('0x41')](handleError(_0x370f40,null));};
\ No newline at end of file
index ec95ad0..7e888fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf105=['define','SquareRecording','square_recordings','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./squareRecording.attributes','exports'];(function(_0x3e88f0,_0x27d2b0){var _0x106a66=function(_0x4c2fab){while(--_0x4c2fab){_0x3e88f0['push'](_0x3e88f0['shift']());}};_0x106a66(++_0x27d2b0);}(_0xf105,0x1b0));var _0x5f10=function(_0x40e6f6,_0x348f3c){_0x40e6f6=_0x40e6f6-0x0;var _0x473d21=_0xf105[_0x40e6f6];return _0x473d21;};'use strict';var _=require(_0x5f10('0x0'));var util=require(_0x5f10('0x1'));var logger=require(_0x5f10('0x2'))(_0x5f10('0x3'));var moment=require(_0x5f10('0x4'));var BPromise=require(_0x5f10('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5f10('0x6'));var rimraf=require('rimraf');var config=require(_0x5f10('0x7'));var attributes=require(_0x5f10('0x8'));module[_0x5f10('0x9')]=function(_0x1b7489,_0x46b6f2){return _0x1b7489[_0x5f10('0xa')](_0x5f10('0xb'),attributes,{'tableName':_0x5f10('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4f81=['./squareRecording.attributes','define','SquareRecording','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x478508,_0x2de437){var _0x3f3241=function(_0x59af99){while(--_0x59af99){_0x478508['push'](_0x478508['shift']());}};_0x3f3241(++_0x2de437);}(_0x4f81,0x1e3));var _0x14f8=function(_0x1fd21d,_0x2b8db8){_0x1fd21d=_0x1fd21d-0x0;var _0x4696ed=_0x4f81[_0x1fd21d];return _0x4696ed;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x14f8('0x0'))('api');var moment=require(_0x14f8('0x1'));var BPromise=require(_0x14f8('0x2'));var rp=require(_0x14f8('0x3'));var fs=require('fs');var path=require(_0x14f8('0x4'));var rimraf=require(_0x14f8('0x5'));var config=require(_0x14f8('0x6'));var attributes=require(_0x14f8('0x7'));module['exports']=function(_0x33baf0,_0x510822){return _0x33baf0[_0x14f8('0x8')](_0x14f8('0x9'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 02b2c46..b1f5883 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b7c=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','info','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s','error','code','SquareRecording,\x20%s,\x20%s','message','catch','SquareRecording','create','body','options','raw','then','CreateSquareRecording','debug','stringify','lodash','util'];(function(_0x443d97,_0x567cda){var _0x315cb1=function(_0x284e68){while(--_0x284e68){_0x443d97['push'](_0x443d97['shift']());}};_0x315cb1(++_0x567cda);}(_0x4b7c,0x14e));var _0xc4b7=function(_0x589c1c,_0xf4d1e3){_0x589c1c=_0x589c1c-0x0;var _0x125f1f=_0x4b7c[_0x589c1c];return _0x125f1f;};'use strict';var _=require(_0xc4b7('0x0'));var util=require(_0xc4b7('0x1'));var moment=require(_0xc4b7('0x2'));var BPromise=require('bluebird');var rs=require(_0xc4b7('0x3'));var fs=require('fs');var Redis=require(_0xc4b7('0x4'));var db=require(_0xc4b7('0x5'))['db'];var utils=require(_0xc4b7('0x6'));var logger=require(_0xc4b7('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc4b7('0x8')][_0xc4b7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x292df8,_0x4f0512,_0x2c5be8){return new BPromise(function(_0x332633,_0x1a45a9){return client[_0xc4b7('0xa')](_0x292df8,_0x2c5be8)['then'](function(_0x296738){logger[_0xc4b7('0xb')]('SquareRecording,\x20%s,\x20%s',_0x4f0512,_0xc4b7('0xc'));logger['debug'](_0xc4b7('0xd'),_0x4f0512,_0xc4b7('0xc'),JSON['stringify'](_0x296738));if(_0x296738['error']){if(_0x296738[_0xc4b7('0xe')][_0xc4b7('0xf')]===0x1f4){logger[_0xc4b7('0xe')](_0xc4b7('0x10'),_0x4f0512,_0x296738[_0xc4b7('0xe')][_0xc4b7('0x11')]);return _0x1a45a9(_0x296738[_0xc4b7('0xe')]['message']);}logger[_0xc4b7('0xe')](_0xc4b7('0x10'),_0x4f0512,_0x296738[_0xc4b7('0xe')][_0xc4b7('0x11')]);return _0x332633(_0x296738[_0xc4b7('0xe')][_0xc4b7('0x11')]);}else{logger[_0xc4b7('0xb')]('SquareRecording,\x20%s,\x20%s',_0x4f0512,_0xc4b7('0xc'));_0x332633(_0x296738['result'][_0xc4b7('0x11')]);}})[_0xc4b7('0x12')](function(_0x46f93f){logger[_0xc4b7('0xe')]('SquareRecording,\x20%s,\x20%s',_0x4f0512,_0x46f93f);_0x1a45a9(_0x46f93f);});});}exports['CreateSquareRecording']=function(_0x31e768){var _0xe3b637=this;return new Promise(function(_0x53b189,_0x1921ba){return db[_0xc4b7('0x13')][_0xc4b7('0x14')](_0x31e768[_0xc4b7('0x15')],{'raw':_0x31e768[_0xc4b7('0x16')]?_0x31e768[_0xc4b7('0x16')][_0xc4b7('0x17')]===undefined?!![]:![]:!![]})[_0xc4b7('0x18')](function(_0x58f99e){logger['info'](_0xc4b7('0x19'),_0x31e768);logger[_0xc4b7('0x1a')](_0xc4b7('0x19'),_0x31e768,JSON[_0xc4b7('0x1b')](_0x58f99e));_0x53b189(_0x58f99e);})[_0xc4b7('0x12')](function(_0x2d575c){logger['error'](_0xc4b7('0x19'),_0x2d575c[_0xc4b7('0x11')],_0x31e768);_0x1921ba(_0xe3b637[_0xc4b7('0xe')](0x1f4,_0x2d575c[_0xc4b7('0x11')]));});});};
\ No newline at end of file
+var _0x609e=['debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','SquareRecording,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','SquareRecording','create','options','raw','then','CreateSquareRecording'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x609e,0xf1));var _0xe609=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x609e[_0x46aff0];return _0x9d78cf;};'use strict';var _=require(_0xe609('0x0'));var util=require(_0xe609('0x1'));var moment=require(_0xe609('0x2'));var BPromise=require(_0xe609('0x3'));var rs=require(_0xe609('0x4'));var fs=require('fs');var Redis=require(_0xe609('0x5'));var db=require(_0xe609('0x6'))['db'];var utils=require(_0xe609('0x7'));var logger=require(_0xe609('0x8'))(_0xe609('0x9'));var config=require(_0xe609('0xa'));var jayson=require(_0xe609('0xb'));var client=jayson['client'][_0xe609('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3f450b,_0x3a4811,_0x3a11c3){return new BPromise(function(_0xe011c4,_0x2caacd){return client[_0xe609('0xd')](_0x3f450b,_0x3a11c3)['then'](function(_0x5a0b23){logger[_0xe609('0xe')](_0xe609('0xf'),_0x3a4811,_0xe609('0x10'));logger['debug']('SquareRecording,\x20%s,\x20%s,\x20%s',_0x3a4811,_0xe609('0x10'),JSON[_0xe609('0x11')](_0x5a0b23));if(_0x5a0b23[_0xe609('0x12')]){if(_0x5a0b23[_0xe609('0x12')][_0xe609('0x13')]===0x1f4){logger[_0xe609('0x12')]('SquareRecording,\x20%s,\x20%s',_0x3a4811,_0x5a0b23[_0xe609('0x12')]['message']);return _0x2caacd(_0x5a0b23['error'][_0xe609('0x14')]);}logger[_0xe609('0x12')](_0xe609('0xf'),_0x3a4811,_0x5a0b23['error'][_0xe609('0x14')]);return _0xe011c4(_0x5a0b23[_0xe609('0x12')]['message']);}else{logger['info'](_0xe609('0xf'),_0x3a4811,_0xe609('0x10'));_0xe011c4(_0x5a0b23[_0xe609('0x15')]['message']);}})[_0xe609('0x16')](function(_0x449438){logger[_0xe609('0x12')](_0xe609('0xf'),_0x3a4811,_0x449438);_0x2caacd(_0x449438);});});}exports['CreateSquareRecording']=function(_0x33056c){var _0x4c075d=this;return new Promise(function(_0x2ffbfa,_0x76f98a){return db[_0xe609('0x17')][_0xe609('0x18')](_0x33056c['body'],{'raw':_0x33056c[_0xe609('0x19')]?_0x33056c[_0xe609('0x19')][_0xe609('0x1a')]===undefined?!![]:![]:!![]})[_0xe609('0x1b')](function(_0x4d98fa){logger[_0xe609('0xe')](_0xe609('0x1c'),_0x33056c);logger[_0xe609('0x1d')](_0xe609('0x1c'),_0x33056c,JSON[_0xe609('0x11')](_0x4d98fa));_0x2ffbfa(_0x4d98fa);})[_0xe609('0x16')](function(_0x475e1f){logger[_0xe609('0x12')](_0xe609('0x1c'),_0x475e1f[_0xe609('0x14')],_0x33056c);_0x76f98a(_0x4c075d[_0xe609('0x12')](0x1f4,_0x475e1f[_0xe609('0x14')]));});});};
\ No newline at end of file
index 57cd03d..a74616f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x15f6cc,_0x52b4e4){var _0xd2cb0d=function(_0xe16283){while(--_0xe16283){_0x15f6cc['push'](_0x15f6cc['shift']());}};_0xd2cb0d(++_0x52b4e4);}(_0xe706,0xa3));var _0x6e70=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0xe706[_0x4bb66f];return _0xf2772f;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _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(_0x2635ac,_0x5c6108){var _0x693d1e=function(_0x4e614b){while(--_0x4e614b){_0x2635ac['push'](_0x2635ac['shift']());}};_0x693d1e(++_0x5c6108);}(_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('./squareReport.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 d5da31f..18fa445 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a2c=['sequelize','STRING','DATE','BOOLEAN'];(function(_0x51995c,_0x3d4b11){var _0x118397=function(_0x71c241){while(--_0x71c241){_0x51995c['push'](_0x51995c['shift']());}};_0x118397(++_0x3d4b11);}(_0x8a2c,0xb8));var _0xc8a2=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0x8a2c[_0x288f5e];return _0x476cc9;};'use strict';var Sequelize=require(_0xc8a2('0x0'));module['exports']={'network':{'type':Sequelize[_0xc8a2('0x1')]},'network_script':{'type':Sequelize[_0xc8a2('0x1')]},'request':{'type':Sequelize[_0xc8a2('0x1')]},'channel':{'type':Sequelize[_0xc8a2('0x1')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xc8a2('0x1')]},'uniqueid':{'type':Sequelize[_0xc8a2('0x1')]},'version':{'type':Sequelize[_0xc8a2('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xc8a2('0x1')]},'callingpres':{'type':Sequelize[_0xc8a2('0x1')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0xc8a2('0x1')]},'callingtns':{'type':Sequelize[_0xc8a2('0x1')]},'dnid':{'type':Sequelize[_0xc8a2('0x1')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xc8a2('0x1')]},'extension':{'type':Sequelize[_0xc8a2('0x1')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xc8a2('0x1')]},'threadid':{'type':Sequelize[_0xc8a2('0x1')]},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xc8a2('0x2')]},'leaveAt':{'type':Sequelize[_0xc8a2('0x2')]},'bot':{'type':Sequelize[_0xc8a2('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3ddc=['DATE','BOOLEAN','sequelize','exports','STRING'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x3ddc,0x110));var _0xc3dd=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x3ddc[_0x126558];return _0x1f6d14;};'use strict';var Sequelize=require(_0xc3dd('0x0'));module[_0xc3dd('0x1')]={'network':{'type':Sequelize[_0xc3dd('0x2')]},'network_script':{'type':Sequelize[_0xc3dd('0x2')]},'request':{'type':Sequelize[_0xc3dd('0x2')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xc3dd('0x2')]},'type':{'type':Sequelize[_0xc3dd('0x2')]},'uniqueid':{'type':Sequelize[_0xc3dd('0x2')]},'version':{'type':Sequelize[_0xc3dd('0x2')]},'callerid':{'type':Sequelize[_0xc3dd('0x2')]},'calleridname':{'type':Sequelize[_0xc3dd('0x2')]},'callingpres':{'type':Sequelize[_0xc3dd('0x2')]},'callingani2':{'type':Sequelize[_0xc3dd('0x2')]},'callington':{'type':Sequelize[_0xc3dd('0x2')]},'callingtns':{'type':Sequelize[_0xc3dd('0x2')]},'dnid':{'type':Sequelize[_0xc3dd('0x2')]},'rdnis':{'type':Sequelize[_0xc3dd('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0xc3dd('0x2')]},'priority':{'type':Sequelize[_0xc3dd('0x2')]},'enhanced':{'type':Sequelize[_0xc3dd('0x2')]},'accountcode':{'type':Sequelize[_0xc3dd('0x2')]},'threadid':{'type':Sequelize[_0xc3dd('0x2')]},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xc3dd('0x3')]},'leaveAt':{'type':Sequelize[_0xc3dd('0x3')]},'bot':{'type':Sequelize[_0xc3dd('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 0b6f851..571919e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cc6=['sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','then','destroy','error','name','send','map','SquareReport','type','key','model','query','filters','intersection','attributes','fields','length','sort','where','pick','filter','merge','VIRTUAL','includeAll','rows','catch','show','params','keys','rawAttributes','include','options','find','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x26e96c,_0x4a7303){var _0x263e38=function(_0x51fa81){while(--_0x51fa81){_0x26e96c['push'](_0x26e96c['shift']());}};_0x263e38(++_0x4a7303);}(_0x8cc6,0x10d));var _0x68cc=function(_0x4c2496,_0x19d512){_0x4c2496=_0x4c2496-0x0;var _0x3e1834=_0x8cc6[_0x4c2496];return _0x3e1834;};'use strict';var emlformat=require(_0x68cc('0x0'));var rimraf=require(_0x68cc('0x1'));var zipdir=require(_0x68cc('0x2'));var jsonpatch=require(_0x68cc('0x3'));var rp=require(_0x68cc('0x4'));var moment=require(_0x68cc('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x68cc('0x6'));var util=require(_0x68cc('0x7'));var path=require(_0x68cc('0x8'));var sox=require('sox');var csv=require(_0x68cc('0x9'));var ejs=require(_0x68cc('0xa'));var fs=require('fs');var fs_extra=require(_0x68cc('0xb'));var _=require(_0x68cc('0xc'));var squel=require(_0x68cc('0xd'));var crypto=require('crypto');var jsforce=require(_0x68cc('0xe'));var deskjs=require(_0x68cc('0xf'));var toCsv=require(_0x68cc('0x9'));var querystring=require(_0x68cc('0x10'));var Papa=require('papaparse');var Redis=require(_0x68cc('0x11'));var authService=require(_0x68cc('0x12'));var qs=require(_0x68cc('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x68cc('0x14'));var logger=require(_0x68cc('0x15'))(_0x68cc('0x16'));var utils=require(_0x68cc('0x17'));var config=require(_0x68cc('0x18'));var licenseUtil=require(_0x68cc('0x19'));var db=require(_0x68cc('0x1a'))['db'];function respondWithStatusCode(_0x2343e8,_0x3e0eb8){_0x3e0eb8=_0x3e0eb8||0xcc;return function(_0x3c3d24){if(_0x3c3d24){return _0x2343e8[_0x68cc('0x1b')](_0x3e0eb8);}return _0x2343e8[_0x68cc('0x1c')](_0x3e0eb8)[_0x68cc('0x1d')]();};}function respondWithResult(_0x50ce5b,_0x4fba45){_0x4fba45=_0x4fba45||0xc8;return function(_0x3b3e69){if(_0x3b3e69){return _0x50ce5b['status'](_0x4fba45)[_0x68cc('0x1e')](_0x3b3e69);}};}function respondWithFilteredResult(_0x4a6039,_0x3ac5ce){return function(_0x1bc07a){if(_0x1bc07a){var _0x2ba690=typeof _0x3ac5ce[_0x68cc('0x1f')]==='undefined'&&typeof _0x3ac5ce[_0x68cc('0x20')]===_0x68cc('0x21');var _0x12c9f1=_0x1bc07a[_0x68cc('0x22')];var _0x2a1bf7=_0x2ba690?0x0:_0x3ac5ce['offset'];var _0x4952ee=_0x2ba690?_0x1bc07a['count']:_0x3ac5ce[_0x68cc('0x1f')]+_0x3ac5ce[_0x68cc('0x20')];var _0x208fde;if(_0x4952ee>=_0x12c9f1){_0x4952ee=_0x12c9f1;_0x208fde=0xc8;}else{_0x208fde=0xce;}_0x4a6039['status'](_0x208fde);return _0x4a6039['set'](_0x68cc('0x23'),_0x2a1bf7+'-'+_0x4952ee+'/'+_0x12c9f1)[_0x68cc('0x1e')](_0x1bc07a);}return null;};}function patchUpdates(_0x23dcae){return function(_0x6e0cf0){try{jsonpatch[_0x68cc('0x24')](_0x6e0cf0,_0x23dcae,!![]);}catch(_0xcae2ff){return BPromise[_0x68cc('0x25')](_0xcae2ff);}return _0x6e0cf0[_0x68cc('0x26')]();};}function saveUpdates(_0x3e3e87,_0x2ed238){return function(_0x594b4b){if(_0x594b4b){return _0x594b4b['update'](_0x3e3e87)[_0x68cc('0x27')](function(_0x1e6f18){return _0x1e6f18;});}return null;};}function removeEntity(_0x342787,_0xfd7164){return function(_0x3c04be){if(_0x3c04be){return _0x3c04be[_0x68cc('0x28')]()['then'](function(){_0x342787[_0x68cc('0x1c')](0xcc)[_0x68cc('0x1d')]();});}};}function handleEntityNotFound(_0x5a0b99,_0x328786){return function(_0x408f99){if(!_0x408f99){_0x5a0b99[_0x68cc('0x1b')](0x194);}return _0x408f99;};}function handleError(_0x5235cf,_0x27edc8){_0x27edc8=_0x27edc8||0x1f4;return function(_0x4f9222){logger[_0x68cc('0x29')](_0x4f9222['stack']);if(_0x4f9222[_0x68cc('0x2a')]){delete _0x4f9222[_0x68cc('0x2a')];}_0x5235cf[_0x68cc('0x1c')](_0x27edc8)[_0x68cc('0x2b')](_0x4f9222);};}exports['index']=function(_0x20be6e,_0x265bec){var _0x117ca6={},_0x5ad3c7={},_0x237a5c={'count':0x0,'rows':[]};var _0x1ea011=_[_0x68cc('0x2c')](db[_0x68cc('0x2d')]['rawAttributes'],function(_0x511d9e){return{'name':_0x511d9e['fieldName'],'type':_0x511d9e[_0x68cc('0x2e')][_0x68cc('0x2f')]};});_0x5ad3c7[_0x68cc('0x30')]=_[_0x68cc('0x2c')](_0x1ea011,_0x68cc('0x2a'));_0x5ad3c7[_0x68cc('0x31')]=_['keys'](_0x20be6e[_0x68cc('0x31')]);_0x5ad3c7[_0x68cc('0x32')]=_[_0x68cc('0x33')](_0x5ad3c7[_0x68cc('0x30')],_0x5ad3c7['query']);_0x117ca6[_0x68cc('0x34')]=_['intersection'](_0x5ad3c7[_0x68cc('0x30')],qs[_0x68cc('0x35')](_0x20be6e[_0x68cc('0x31')]['fields']));_0x117ca6[_0x68cc('0x34')]=_0x117ca6[_0x68cc('0x34')][_0x68cc('0x36')]?_0x117ca6[_0x68cc('0x34')]:_0x5ad3c7[_0x68cc('0x30')];if(!_0x20be6e[_0x68cc('0x31')]['hasOwnProperty']('nolimit')){_0x117ca6[_0x68cc('0x20')]=qs[_0x68cc('0x20')](_0x20be6e[_0x68cc('0x31')][_0x68cc('0x20')]);_0x117ca6[_0x68cc('0x1f')]=qs[_0x68cc('0x1f')](_0x20be6e[_0x68cc('0x31')][_0x68cc('0x1f')]);}_0x117ca6['order']=qs[_0x68cc('0x37')](_0x20be6e[_0x68cc('0x31')][_0x68cc('0x37')]);_0x117ca6[_0x68cc('0x38')]=qs[_0x68cc('0x32')](_[_0x68cc('0x39')](_0x20be6e[_0x68cc('0x31')],_0x5ad3c7[_0x68cc('0x32')]),_0x1ea011);if(_0x20be6e[_0x68cc('0x31')][_0x68cc('0x3a')]){_0x117ca6['where']=_[_0x68cc('0x3b')](_0x117ca6[_0x68cc('0x38')],{'$or':_['map'](_0x1ea011,function(_0x2a0065){if(_0x2a0065['type']!==_0x68cc('0x3c')){var _0x551e52={};_0x551e52[_0x2a0065[_0x68cc('0x2a')]]={'$like':'%'+_0x20be6e['query'][_0x68cc('0x3a')]+'%'};return _0x551e52;}})});}_0x117ca6=_['merge']({},_0x117ca6,_0x20be6e['options']);var _0x588ac4={'where':_0x117ca6['where']};return db[_0x68cc('0x2d')][_0x68cc('0x22')](_0x588ac4)['then'](function(_0x28713b){_0x237a5c[_0x68cc('0x22')]=_0x28713b;if(_0x20be6e[_0x68cc('0x31')][_0x68cc('0x3d')]){_0x117ca6['include']=[{'all':!![]}];}return db[_0x68cc('0x2d')]['findAll'](_0x117ca6);})[_0x68cc('0x27')](function(_0x8ddf4f){_0x237a5c[_0x68cc('0x3e')]=_0x8ddf4f;return _0x237a5c;})[_0x68cc('0x27')](respondWithFilteredResult(_0x265bec,_0x117ca6))[_0x68cc('0x3f')](handleError(_0x265bec,null));};exports[_0x68cc('0x40')]=function(_0x469287,_0x33012c){var _0x27fd60={'raw':!![],'where':{'id':_0x469287[_0x68cc('0x41')]['id']}},_0x58b30b={};_0x58b30b[_0x68cc('0x30')]=_[_0x68cc('0x42')](db[_0x68cc('0x2d')][_0x68cc('0x43')]);_0x58b30b['query']=_[_0x68cc('0x42')](_0x469287[_0x68cc('0x31')]);_0x58b30b['filters']=_['intersection'](_0x58b30b[_0x68cc('0x30')],_0x58b30b[_0x68cc('0x31')]);_0x27fd60[_0x68cc('0x34')]=_[_0x68cc('0x33')](_0x58b30b[_0x68cc('0x30')],qs['fields'](_0x469287[_0x68cc('0x31')][_0x68cc('0x35')]));_0x27fd60[_0x68cc('0x34')]=_0x27fd60[_0x68cc('0x34')][_0x68cc('0x36')]?_0x27fd60[_0x68cc('0x34')]:_0x58b30b[_0x68cc('0x30')];if(_0x469287[_0x68cc('0x31')][_0x68cc('0x3d')]){_0x27fd60[_0x68cc('0x44')]=[{'all':!![]}];}_0x27fd60=_[_0x68cc('0x3b')]({},_0x27fd60,_0x469287[_0x68cc('0x45')]);return db[_0x68cc('0x2d')][_0x68cc('0x46')](_0x27fd60)[_0x68cc('0x27')](handleEntityNotFound(_0x33012c,null))[_0x68cc('0x27')](respondWithResult(_0x33012c,null))[_0x68cc('0x3f')](handleError(_0x33012c,null));};exports['create']=function(_0x45c234,_0x161bea){return db['SquareReport']['create'](_0x45c234[_0x68cc('0x47')],{})[_0x68cc('0x27')](respondWithResult(_0x161bea,0xc9))['catch'](handleError(_0x161bea,null));};exports[_0x68cc('0x48')]=function(_0x25078d,_0x456362){if(_0x25078d[_0x68cc('0x47')]['id']){delete _0x25078d['body']['id'];}return db[_0x68cc('0x2d')][_0x68cc('0x46')]({'where':{'id':_0x25078d[_0x68cc('0x41')]['id']}})[_0x68cc('0x27')](handleEntityNotFound(_0x456362,null))[_0x68cc('0x27')](saveUpdates(_0x25078d[_0x68cc('0x47')],null))[_0x68cc('0x27')](respondWithResult(_0x456362,null))[_0x68cc('0x3f')](handleError(_0x456362,null));};exports[_0x68cc('0x28')]=function(_0x2bb44f,_0x5852b5){return db[_0x68cc('0x2d')][_0x68cc('0x46')]({'where':{'id':_0x2bb44f[_0x68cc('0x41')]['id']}})['then'](handleEntityNotFound(_0x5852b5,null))[_0x68cc('0x27')](removeEntity(_0x5852b5,null))['catch'](handleError(_0x5852b5,null));};exports['describe']=function(_0x14cc37,_0x3296f8){return db[_0x68cc('0x2d')][_0x68cc('0x49')]()[_0x68cc('0x27')](respondWithResult(_0x3296f8,null))[_0x68cc('0x3f')](handleError(_0x3296f8,null));};
\ No newline at end of file
+var _0x6add=['../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','stack','name','index','map','rawAttributes','fieldName','key','model','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','type','VIRTUAL','options','SquareReport','findAll','rows','catch','show','params','keys','includeAll','include','create','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x4d1dc8,_0xe40232){var _0x273632=function(_0x4c3fc0){while(--_0x4c3fc0){_0x4d1dc8['push'](_0x4d1dc8['shift']());}};_0x273632(++_0xe40232);}(_0x6add,0x1bc));var _0xd6ad=function(_0x3cd3af,_0xe21747){_0x3cd3af=_0x3cd3af-0x0;var _0x3da65a=_0x6add[_0x3cd3af];return _0x3da65a;};'use strict';var emlformat=require(_0xd6ad('0x0'));var rimraf=require(_0xd6ad('0x1'));var zipdir=require(_0xd6ad('0x2'));var jsonpatch=require(_0xd6ad('0x3'));var rp=require(_0xd6ad('0x4'));var moment=require(_0xd6ad('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd6ad('0x6'));var path=require('path');var sox=require(_0xd6ad('0x7'));var csv=require(_0xd6ad('0x8'));var ejs=require(_0xd6ad('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd6ad('0xa'));var squel=require(_0xd6ad('0xb'));var crypto=require(_0xd6ad('0xc'));var jsforce=require(_0xd6ad('0xd'));var deskjs=require(_0xd6ad('0xe'));var toCsv=require(_0xd6ad('0x8'));var querystring=require(_0xd6ad('0xf'));var Papa=require(_0xd6ad('0x10'));var Redis=require(_0xd6ad('0x11'));var authService=require(_0xd6ad('0x12'));var qs=require(_0xd6ad('0x13'));var as=require(_0xd6ad('0x14'));var hardwareService=require(_0xd6ad('0x15'));var logger=require(_0xd6ad('0x16'))(_0xd6ad('0x17'));var utils=require('../../config/utils');var config=require(_0xd6ad('0x18'));var licenseUtil=require(_0xd6ad('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x56bb26,_0xe65260){_0xe65260=_0xe65260||0xcc;return function(_0x306b03){if(_0x306b03){return _0x56bb26[_0xd6ad('0x1a')](_0xe65260);}return _0x56bb26[_0xd6ad('0x1b')](_0xe65260)[_0xd6ad('0x1c')]();};}function respondWithResult(_0x121b6d,_0x32b67d){_0x32b67d=_0x32b67d||0xc8;return function(_0x4454cc){if(_0x4454cc){return _0x121b6d[_0xd6ad('0x1b')](_0x32b67d)[_0xd6ad('0x1d')](_0x4454cc);}};}function respondWithFilteredResult(_0x2b08ab,_0x27d17a){return function(_0xa959a3){if(_0xa959a3){var _0x2dd0ad=typeof _0x27d17a[_0xd6ad('0x1e')]===_0xd6ad('0x1f')&&typeof _0x27d17a[_0xd6ad('0x20')]===_0xd6ad('0x1f');var _0x409129=_0xa959a3[_0xd6ad('0x21')];var _0x166d2a=_0x2dd0ad?0x0:_0x27d17a[_0xd6ad('0x1e')];var _0x18c56c=_0x2dd0ad?_0xa959a3[_0xd6ad('0x21')]:_0x27d17a['offset']+_0x27d17a[_0xd6ad('0x20')];var _0x229a11;if(_0x18c56c>=_0x409129){_0x18c56c=_0x409129;_0x229a11=0xc8;}else{_0x229a11=0xce;}_0x2b08ab[_0xd6ad('0x1b')](_0x229a11);return _0x2b08ab[_0xd6ad('0x22')](_0xd6ad('0x23'),_0x166d2a+'-'+_0x18c56c+'/'+_0x409129)[_0xd6ad('0x1d')](_0xa959a3);}return null;};}function patchUpdates(_0x3b928c){return function(_0x9ede7e){try{jsonpatch[_0xd6ad('0x24')](_0x9ede7e,_0x3b928c,!![]);}catch(_0x1d1306){return BPromise['reject'](_0x1d1306);}return _0x9ede7e[_0xd6ad('0x25')]();};}function saveUpdates(_0x3a1cca,_0x1c923a){return function(_0x1a5955){if(_0x1a5955){return _0x1a5955[_0xd6ad('0x26')](_0x3a1cca)['then'](function(_0x13c1af){return _0x13c1af;});}return null;};}function removeEntity(_0x2dc881,_0x333843){return function(_0x1f2667){if(_0x1f2667){return _0x1f2667['destroy']()[_0xd6ad('0x27')](function(){_0x2dc881[_0xd6ad('0x1b')](0xcc)[_0xd6ad('0x1c')]();});}};}function handleEntityNotFound(_0x152fab,_0x61daf9){return function(_0x4d47ae){if(!_0x4d47ae){_0x152fab[_0xd6ad('0x1a')](0x194);}return _0x4d47ae;};}function handleError(_0x4c1b81,_0x2bf3d2){_0x2bf3d2=_0x2bf3d2||0x1f4;return function(_0x1c0335){logger[_0xd6ad('0x28')](_0x1c0335[_0xd6ad('0x29')]);if(_0x1c0335[_0xd6ad('0x2a')]){delete _0x1c0335[_0xd6ad('0x2a')];}_0x4c1b81[_0xd6ad('0x1b')](_0x2bf3d2)['send'](_0x1c0335);};}exports[_0xd6ad('0x2b')]=function(_0x3f937d,_0x5863ef){var _0x213267={},_0x57817b={},_0x3e58d3={'count':0x0,'rows':[]};var _0x7e1544=_[_0xd6ad('0x2c')](db['SquareReport'][_0xd6ad('0x2d')],function(_0x3778e5){return{'name':_0x3778e5[_0xd6ad('0x2e')],'type':_0x3778e5['type'][_0xd6ad('0x2f')]};});_0x57817b[_0xd6ad('0x30')]=_['map'](_0x7e1544,'name');_0x57817b['query']=_['keys'](_0x3f937d['query']);_0x57817b[_0xd6ad('0x31')]=_[_0xd6ad('0x32')](_0x57817b[_0xd6ad('0x30')],_0x57817b[_0xd6ad('0x33')]);_0x213267['attributes']=_['intersection'](_0x57817b['model'],qs[_0xd6ad('0x34')](_0x3f937d[_0xd6ad('0x33')][_0xd6ad('0x34')]));_0x213267['attributes']=_0x213267[_0xd6ad('0x35')][_0xd6ad('0x36')]?_0x213267[_0xd6ad('0x35')]:_0x57817b['model'];if(!_0x3f937d['query'][_0xd6ad('0x37')](_0xd6ad('0x38'))){_0x213267['limit']=qs[_0xd6ad('0x20')](_0x3f937d['query']['limit']);_0x213267[_0xd6ad('0x1e')]=qs[_0xd6ad('0x1e')](_0x3f937d['query'][_0xd6ad('0x1e')]);}_0x213267[_0xd6ad('0x39')]=qs[_0xd6ad('0x3a')](_0x3f937d[_0xd6ad('0x33')][_0xd6ad('0x3a')]);_0x213267[_0xd6ad('0x3b')]=qs[_0xd6ad('0x31')](_['pick'](_0x3f937d[_0xd6ad('0x33')],_0x57817b[_0xd6ad('0x31')]),_0x7e1544);if(_0x3f937d['query']['filter']){_0x213267[_0xd6ad('0x3b')]=_[_0xd6ad('0x3c')](_0x213267[_0xd6ad('0x3b')],{'$or':_[_0xd6ad('0x2c')](_0x7e1544,function(_0x24f3a6){if(_0x24f3a6[_0xd6ad('0x3d')]!==_0xd6ad('0x3e')){var _0x51a22e={};_0x51a22e[_0x24f3a6[_0xd6ad('0x2a')]]={'$like':'%'+_0x3f937d[_0xd6ad('0x33')]['filter']+'%'};return _0x51a22e;}})});}_0x213267=_[_0xd6ad('0x3c')]({},_0x213267,_0x3f937d[_0xd6ad('0x3f')]);var _0x591ba6={'where':_0x213267['where']};return db['SquareReport'][_0xd6ad('0x21')](_0x591ba6)['then'](function(_0x2d5564){_0x3e58d3['count']=_0x2d5564;if(_0x3f937d[_0xd6ad('0x33')]['includeAll']){_0x213267['include']=[{'all':!![]}];}return db[_0xd6ad('0x40')][_0xd6ad('0x41')](_0x213267);})[_0xd6ad('0x27')](function(_0x22375c){_0x3e58d3[_0xd6ad('0x42')]=_0x22375c;return _0x3e58d3;})['then'](respondWithFilteredResult(_0x5863ef,_0x213267))[_0xd6ad('0x43')](handleError(_0x5863ef,null));};exports[_0xd6ad('0x44')]=function(_0x50f4f0,_0x1a3c7e){var _0x46bde8={'raw':!![],'where':{'id':_0x50f4f0[_0xd6ad('0x45')]['id']}},_0xf058b5={};_0xf058b5['model']=_[_0xd6ad('0x46')](db[_0xd6ad('0x40')]['rawAttributes']);_0xf058b5['query']=_[_0xd6ad('0x46')](_0x50f4f0[_0xd6ad('0x33')]);_0xf058b5[_0xd6ad('0x31')]=_['intersection'](_0xf058b5[_0xd6ad('0x30')],_0xf058b5[_0xd6ad('0x33')]);_0x46bde8[_0xd6ad('0x35')]=_[_0xd6ad('0x32')](_0xf058b5['model'],qs[_0xd6ad('0x34')](_0x50f4f0[_0xd6ad('0x33')][_0xd6ad('0x34')]));_0x46bde8['attributes']=_0x46bde8[_0xd6ad('0x35')]['length']?_0x46bde8[_0xd6ad('0x35')]:_0xf058b5['model'];if(_0x50f4f0['query'][_0xd6ad('0x47')]){_0x46bde8[_0xd6ad('0x48')]=[{'all':!![]}];}_0x46bde8=_['merge']({},_0x46bde8,_0x50f4f0['options']);return db[_0xd6ad('0x40')]['find'](_0x46bde8)[_0xd6ad('0x27')](handleEntityNotFound(_0x1a3c7e,null))[_0xd6ad('0x27')](respondWithResult(_0x1a3c7e,null))[_0xd6ad('0x43')](handleError(_0x1a3c7e,null));};exports[_0xd6ad('0x49')]=function(_0x29c149,_0x3242a4){return db[_0xd6ad('0x40')]['create'](_0x29c149[_0xd6ad('0x4a')],{})[_0xd6ad('0x27')](respondWithResult(_0x3242a4,0xc9))[_0xd6ad('0x43')](handleError(_0x3242a4,null));};exports[_0xd6ad('0x26')]=function(_0x18557c,_0x34e036){if(_0x18557c[_0xd6ad('0x4a')]['id']){delete _0x18557c[_0xd6ad('0x4a')]['id'];}return db[_0xd6ad('0x40')][_0xd6ad('0x4b')]({'where':{'id':_0x18557c[_0xd6ad('0x45')]['id']}})[_0xd6ad('0x27')](handleEntityNotFound(_0x34e036,null))['then'](saveUpdates(_0x18557c[_0xd6ad('0x4a')],null))[_0xd6ad('0x27')](respondWithResult(_0x34e036,null))[_0xd6ad('0x43')](handleError(_0x34e036,null));};exports[_0xd6ad('0x4c')]=function(_0x66d204,_0x2e8a04){return db['SquareReport']['find']({'where':{'id':_0x66d204['params']['id']}})[_0xd6ad('0x27')](handleEntityNotFound(_0x2e8a04,null))['then'](removeEntity(_0x2e8a04,null))[_0xd6ad('0x43')](handleError(_0x2e8a04,null));};exports[_0xd6ad('0x4d')]=function(_0x334a3a,_0x43fba0){return db[_0xd6ad('0x40')][_0xd6ad('0x4d')]()[_0xd6ad('0x27')](respondWithResult(_0x43fba0,null))[_0xd6ad('0x43')](handleError(_0x43fba0,null));};
\ No newline at end of file
index 29084e8..54953c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdc1=['bluebird','request-promise','path','rimraf','../../config/environment','./squareReport.attributes','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','util','api','moment'];(function(_0x5b9867,_0x5b4b22){var _0x3398ea=function(_0x3e82ce){while(--_0x3e82ce){_0x5b9867['push'](_0x5b9867['shift']());}};_0x3398ea(++_0x5b4b22);}(_0xbdc1,0x147));var _0x1bdc=function(_0x4969bf,_0x226ae8){_0x4969bf=_0x4969bf-0x0;var _0x4b0db4=_0xbdc1[_0x4969bf];return _0x4b0db4;};'use strict';var _=require('lodash');var util=require(_0x1bdc('0x0'));var logger=require('../../config/logger')(_0x1bdc('0x1'));var moment=require(_0x1bdc('0x2'));var BPromise=require(_0x1bdc('0x3'));var rp=require(_0x1bdc('0x4'));var fs=require('fs');var path=require(_0x1bdc('0x5'));var rimraf=require(_0x1bdc('0x6'));var config=require(_0x1bdc('0x7'));var attributes=require(_0x1bdc('0x8'));module['exports']=function(_0x39fe19,_0x9082e6){return _0x39fe19['define'](_0x1bdc('0x9'),attributes,{'tableName':_0x1bdc('0xa'),'paranoid':![],'indexes':[{'name':_0x1bdc('0xb'),'fields':[_0x1bdc('0xc'),_0x1bdc('0xd')]},{'name':_0x1bdc('0xe'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x28fe=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','util'];(function(_0x400322,_0x4353a8){var _0xfdd597=function(_0xd914b6){while(--_0xd914b6){_0x400322['push'](_0x400322['shift']());}};_0xfdd597(++_0x4353a8);}(_0x28fe,0x1a8));var _0xe28f=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x28fe[_0x413feb];return _0x40ee88;};'use strict';var _=require('lodash');var util=require(_0xe28f('0x0'));var logger=require(_0xe28f('0x1'))(_0xe28f('0x2'));var moment=require('moment');var BPromise=require(_0xe28f('0x3'));var rp=require(_0xe28f('0x4'));var fs=require('fs');var path=require(_0xe28f('0x5'));var rimraf=require(_0xe28f('0x6'));var config=require(_0xe28f('0x7'));var attributes=require(_0xe28f('0x8'));module[_0xe28f('0x9')]=function(_0x2bea4,_0x28e631){return _0x2bea4[_0xe28f('0xa')](_0xe28f('0xb'),attributes,{'tableName':_0xe28f('0xc'),'paranoid':![],'indexes':[{'name':_0xe28f('0xd'),'fields':[_0xe28f('0xe'),_0xe28f('0xf')]},{'name':_0xe28f('0x10'),'fields':[_0xe28f('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index 7c8eba8..998873a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ce7=['util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','request\x20sent','stringify','error','code','message','SquareReport,\x20%s,\x20%s','result','catch','CreateSquareReport','SquareReport','create','options','raw','debug','UpdateSquareReport','update','body','where','attributes','limit','lodash'];(function(_0x20dda3,_0x5e8a1c){var _0x527d4a=function(_0xe69ed1){while(--_0xe69ed1){_0x20dda3['push'](_0x20dda3['shift']());}};_0x527d4a(++_0x5e8a1c);}(_0x2ce7,0x13f));var _0x72ce=function(_0x324738,_0x134be8){_0x324738=_0x324738-0x0;var _0x212a4d=_0x2ce7[_0x324738];return _0x212a4d;};'use strict';var _=require(_0x72ce('0x0'));var util=require(_0x72ce('0x1'));var moment=require(_0x72ce('0x2'));var BPromise=require(_0x72ce('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x72ce('0x4'));var logger=require(_0x72ce('0x5'))(_0x72ce('0x6'));var config=require(_0x72ce('0x7'));var jayson=require(_0x72ce('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3ec74f,_0x575fe5,_0x55bd3e){return new BPromise(function(_0x280e15,_0x38426f){return client[_0x72ce('0x9')](_0x3ec74f,_0x55bd3e)[_0x72ce('0xa')](function(_0x43ee1d){logger[_0x72ce('0xb')]('SquareReport,\x20%s,\x20%s',_0x575fe5,_0x72ce('0xc'));logger['debug']('SquareReport,\x20%s,\x20%s,\x20%s',_0x575fe5,_0x72ce('0xc'),JSON[_0x72ce('0xd')](_0x43ee1d));if(_0x43ee1d['error']){if(_0x43ee1d[_0x72ce('0xe')][_0x72ce('0xf')]===0x1f4){logger[_0x72ce('0xe')]('SquareReport,\x20%s,\x20%s',_0x575fe5,_0x43ee1d[_0x72ce('0xe')][_0x72ce('0x10')]);return _0x38426f(_0x43ee1d['error'][_0x72ce('0x10')]);}logger[_0x72ce('0xe')](_0x72ce('0x11'),_0x575fe5,_0x43ee1d['error'][_0x72ce('0x10')]);return _0x280e15(_0x43ee1d[_0x72ce('0xe')][_0x72ce('0x10')]);}else{logger['info'](_0x72ce('0x11'),_0x575fe5,'request\x20sent');_0x280e15(_0x43ee1d[_0x72ce('0x12')][_0x72ce('0x10')]);}})[_0x72ce('0x13')](function(_0x3f500f){logger[_0x72ce('0xe')](_0x72ce('0x11'),_0x575fe5,_0x3f500f);_0x38426f(_0x3f500f);});});}exports[_0x72ce('0x14')]=function(_0x2c1a4c){var _0x28330f=this;return new Promise(function(_0x1f6ec9,_0x54bb4c){return db[_0x72ce('0x15')][_0x72ce('0x16')](_0x2c1a4c['body'],{'raw':_0x2c1a4c[_0x72ce('0x17')]?_0x2c1a4c[_0x72ce('0x17')][_0x72ce('0x18')]===undefined?!![]:![]:!![]})[_0x72ce('0xa')](function(_0x270ad8){logger[_0x72ce('0xb')](_0x72ce('0x14'),_0x2c1a4c);logger[_0x72ce('0x19')]('CreateSquareReport',_0x2c1a4c,JSON[_0x72ce('0xd')](_0x270ad8));_0x1f6ec9(_0x270ad8);})[_0x72ce('0x13')](function(_0x22dba2){logger[_0x72ce('0xe')](_0x72ce('0x14'),_0x22dba2['message'],_0x2c1a4c);_0x54bb4c(_0x28330f[_0x72ce('0xe')](0x1f4,_0x22dba2[_0x72ce('0x10')]));});});};exports[_0x72ce('0x1a')]=function(_0xa9797a){var _0x252662=this;return new Promise(function(_0x160d8a,_0x27c5ff){return db[_0x72ce('0x15')][_0x72ce('0x1b')](_0xa9797a[_0x72ce('0x1c')],{'raw':_0xa9797a[_0x72ce('0x17')]?_0xa9797a[_0x72ce('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xa9797a[_0x72ce('0x17')]?_0xa9797a[_0x72ce('0x17')][_0x72ce('0x1d')]||null:null,'attributes':_0xa9797a[_0x72ce('0x17')]?_0xa9797a['options'][_0x72ce('0x1e')]||null:null,'limit':_0xa9797a[_0x72ce('0x17')]?_0xa9797a[_0x72ce('0x17')][_0x72ce('0x1f')]||null:null})[_0x72ce('0xa')](function(_0x4a8e0d){logger['info'](_0x72ce('0x1a'),_0xa9797a);logger[_0x72ce('0x19')](_0x72ce('0x1a'),_0xa9797a,JSON[_0x72ce('0xd')](_0x4a8e0d));_0x160d8a(_0x4a8e0d);})['catch'](function(_0x4e0652){logger[_0x72ce('0xe')](_0x72ce('0x1a'),_0x4e0652['message'],_0xa9797a);_0x27c5ff(_0x252662['error'](0x1f4,_0x4e0652[_0x72ce('0x10')]));});});};
\ No newline at end of file
+var _0x3174=['SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareReport','SquareReport','body','options','raw','then','UpdateSquareReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x25ca44,_0x111633){var _0x4897c1=function(_0xf344b9){while(--_0xf344b9){_0x25ca44['push'](_0x25ca44['shift']());}};_0x4897c1(++_0x111633);}(_0x3174,0x1d8));var _0x4317=function(_0x1de10f,_0x34d7d4){_0x1de10f=_0x1de10f-0x0;var _0x4a3313=_0x3174[_0x1de10f];return _0x4a3313;};'use strict';var _=require(_0x4317('0x0'));var util=require(_0x4317('0x1'));var moment=require(_0x4317('0x2'));var BPromise=require(_0x4317('0x3'));var rs=require(_0x4317('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4317('0x5'))['db'];var utils=require(_0x4317('0x6'));var logger=require(_0x4317('0x7'))(_0x4317('0x8'));var config=require(_0x4317('0x9'));var jayson=require(_0x4317('0xa'));var client=jayson[_0x4317('0xb')][_0x4317('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x91c873,_0x2b9096,_0x5db89c){return new BPromise(function(_0x23d8d8,_0x1d388b){return client[_0x4317('0xd')](_0x91c873,_0x5db89c)['then'](function(_0x32f139){logger[_0x4317('0xe')](_0x4317('0xf'),_0x2b9096,_0x4317('0x10'));logger[_0x4317('0x11')](_0x4317('0x12'),_0x2b9096,_0x4317('0x10'),JSON[_0x4317('0x13')](_0x32f139));if(_0x32f139[_0x4317('0x14')]){if(_0x32f139[_0x4317('0x14')]['code']===0x1f4){logger['error']('SquareReport,\x20%s,\x20%s',_0x2b9096,_0x32f139['error'][_0x4317('0x15')]);return _0x1d388b(_0x32f139[_0x4317('0x14')][_0x4317('0x15')]);}logger[_0x4317('0x14')](_0x4317('0xf'),_0x2b9096,_0x32f139[_0x4317('0x14')]['message']);return _0x23d8d8(_0x32f139['error'][_0x4317('0x15')]);}else{logger['info'](_0x4317('0xf'),_0x2b9096,_0x4317('0x10'));_0x23d8d8(_0x32f139[_0x4317('0x16')][_0x4317('0x15')]);}})[_0x4317('0x17')](function(_0x441cfb){logger['error'](_0x4317('0xf'),_0x2b9096,_0x441cfb);_0x1d388b(_0x441cfb);});});}exports[_0x4317('0x18')]=function(_0x95eb37){var _0x37040f=this;return new Promise(function(_0x56e3ef,_0x5d5fe8){return db[_0x4317('0x19')]['create'](_0x95eb37[_0x4317('0x1a')],{'raw':_0x95eb37[_0x4317('0x1b')]?_0x95eb37['options'][_0x4317('0x1c')]===undefined?!![]:![]:!![]})[_0x4317('0x1d')](function(_0x53583e){logger[_0x4317('0xe')](_0x4317('0x18'),_0x95eb37);logger['debug'](_0x4317('0x18'),_0x95eb37,JSON[_0x4317('0x13')](_0x53583e));_0x56e3ef(_0x53583e);})[_0x4317('0x17')](function(_0x4c6d6d){logger[_0x4317('0x14')](_0x4317('0x18'),_0x4c6d6d['message'],_0x95eb37);_0x5d5fe8(_0x37040f['error'](0x1f4,_0x4c6d6d[_0x4317('0x15')]));});});};exports[_0x4317('0x1e')]=function(_0x3c426d){var _0xc6150=this;return new Promise(function(_0x4b7d7a,_0x184cdb){return db[_0x4317('0x19')][_0x4317('0x1f')](_0x3c426d[_0x4317('0x1a')],{'raw':_0x3c426d[_0x4317('0x1b')]?_0x3c426d[_0x4317('0x1b')][_0x4317('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c426d['options']?_0x3c426d[_0x4317('0x1b')][_0x4317('0x20')]||null:null,'attributes':_0x3c426d['options']?_0x3c426d['options'][_0x4317('0x21')]||null:null,'limit':_0x3c426d[_0x4317('0x1b')]?_0x3c426d[_0x4317('0x1b')][_0x4317('0x22')]||null:null})[_0x4317('0x1d')](function(_0x704b90){logger['info'](_0x4317('0x1e'),_0x3c426d);logger[_0x4317('0x11')](_0x4317('0x1e'),_0x3c426d,JSON['stringify'](_0x704b90));_0x4b7d7a(_0x704b90);})[_0x4317('0x17')](function(_0x5da1c9){logger[_0x4317('0x14')](_0x4317('0x1e'),_0x5da1c9[_0x4317('0x15')],_0x3c426d);_0x184cdb(_0xc6150[_0x4317('0x14')](0x1f4,_0x5da1c9[_0x4317('0x15')]));});});};
\ No newline at end of file
index dcac7c2..90d25cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8947=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','index','get','isAuthenticated','/:id','post','create','put','delete','destroy'];(function(_0x17d34b,_0x21209e){var _0x19e1ab=function(_0x2fc9ae){while(--_0x2fc9ae){_0x17d34b['push'](_0x17d34b['shift']());}};_0x19e1ab(++_0x21209e);}(_0x8947,0x19f));var _0x7894=function(_0x10bde1,_0x2bb5fe){_0x10bde1=_0x10bde1-0x0;var _0x49d844=_0x8947[_0x10bde1];return _0x49d844;};'use strict';var multer=require(_0x7894('0x0'));var util=require(_0x7894('0x1'));var path=require('path');var timeout=require(_0x7894('0x2'));var express=require(_0x7894('0x3'));var router=express[_0x7894('0x4')]();var fs_extra=require(_0x7894('0x5'));var auth=require(_0x7894('0x6'));var interaction=require(_0x7894('0x7'));var config=require('../../config/environment');var controller=require('./squareReportDetail.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x7894('0x8')]);router[_0x7894('0x9')]('/describe',auth[_0x7894('0xa')](),controller['describe']);router[_0x7894('0x9')](_0x7894('0xb'),auth[_0x7894('0xa')](),controller['show']);router[_0x7894('0xc')]('/',auth[_0x7894('0xa')](),controller[_0x7894('0xd')]);router[_0x7894('0xe')](_0x7894('0xb'),auth[_0x7894('0xa')](),controller['update']);router[_0x7894('0xf')]('/:id',auth[_0x7894('0xa')](),controller[_0x7894('0x10')]);module[_0x7894('0x11')]=router;
\ No newline at end of file
+var _0x64f2=['./squareReportDetail.controller','get','index','/describe','describe','isAuthenticated','post','create','put','/:id','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3c9522,_0x8fbacc){var _0x1728c4=function(_0x563dfc){while(--_0x563dfc){_0x3c9522['push'](_0x3c9522['shift']());}};_0x1728c4(++_0x8fbacc);}(_0x64f2,0x116));var _0x264f=function(_0x341f6c,_0x465f0f){_0x341f6c=_0x341f6c-0x0;var _0x1d8cfb=_0x64f2[_0x341f6c];return _0x1d8cfb;};'use strict';var multer=require('multer');var util=require(_0x264f('0x0'));var path=require('path');var timeout=require(_0x264f('0x1'));var express=require(_0x264f('0x2'));var router=express[_0x264f('0x3')]();var fs_extra=require(_0x264f('0x4'));var auth=require(_0x264f('0x5'));var interaction=require(_0x264f('0x6'));var config=require(_0x264f('0x7'));var controller=require(_0x264f('0x8'));router[_0x264f('0x9')]('/',auth['isAuthenticated'](),controller[_0x264f('0xa')]);router[_0x264f('0x9')](_0x264f('0xb'),auth['isAuthenticated'](),controller[_0x264f('0xc')]);router[_0x264f('0x9')]('/:id',auth[_0x264f('0xd')](),controller['show']);router[_0x264f('0xe')]('/',auth[_0x264f('0xd')](),controller[_0x264f('0xf')]);router[_0x264f('0x10')](_0x264f('0x11'),auth['isAuthenticated'](),controller[_0x264f('0x12')]);router[_0x264f('0x13')](_0x264f('0x11'),auth[_0x264f('0xd')](),controller[_0x264f('0x14')]);module[_0x264f('0x15')]=router;
\ No newline at end of file
index 2455f4a..0ef2170 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe39=['sequelize','STRING'];(function(_0x551fb0,_0x4b9433){var _0x497492=function(_0x3d2a2b){while(--_0x3d2a2b){_0x551fb0['push'](_0x551fb0['shift']());}};_0x497492(++_0x4b9433);}(_0xbe39,0xee));var _0x9be3=function(_0x49c7b6,_0x1a8e76){_0x49c7b6=_0x49c7b6-0x0;var _0x3c8d3d=_0xbe39[_0x49c7b6];return _0x3c8d3d;};'use strict';var Sequelize=require(_0x9be3('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x9be3('0x1')]},'node':{'type':Sequelize[_0x9be3('0x1')]},'application':{'type':Sequelize[_0x9be3('0x1')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0x9be3('0x1')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3ab2=['TEXT','sequelize','exports','STRING'];(function(_0x9c3a27,_0x191742){var _0xaa7048=function(_0x2c5552){while(--_0x2c5552){_0x9c3a27['push'](_0x9c3a27['shift']());}};_0xaa7048(++_0x191742);}(_0x3ab2,0x13d));var _0x23ab=function(_0x25b064,_0x4aa631){_0x25b064=_0x25b064-0x0;var _0x478c7b=_0x3ab2[_0x25b064];return _0x478c7b;};'use strict';var Sequelize=require(_0x23ab('0x0'));module[_0x23ab('0x1')]={'uniqueid':{'type':Sequelize[_0x23ab('0x2')]},'node':{'type':Sequelize[_0x23ab('0x2')]},'application':{'type':Sequelize[_0x23ab('0x2')]},'data':{'type':Sequelize[_0x23ab('0x3')]},'project_name':{'type':Sequelize[_0x23ab('0x2')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6451284..201f2ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc83c=['rawAttributes','find','create','body','update','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','map','fieldName','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','SquareDetailsReport','includeAll','include','findAll','catch','show','params','keys'];(function(_0x31b506,_0x41f951){var _0x32316f=function(_0x1e04d7){while(--_0x1e04d7){_0x31b506['push'](_0x31b506['shift']());}};_0x32316f(++_0x41f951);}(_0xc83c,0x178));var _0xcc83=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xc83c[_0x2064e5];return _0x21a233;};'use strict';var emlformat=require(_0xcc83('0x0'));var rimraf=require(_0xcc83('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcc83('0x2'));var rp=require(_0xcc83('0x3'));var moment=require(_0xcc83('0x4'));var BPromise=require(_0xcc83('0x5'));var Mustache=require(_0xcc83('0x6'));var util=require(_0xcc83('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xcc83('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcc83('0x9'));var _=require(_0xcc83('0xa'));var squel=require(_0xcc83('0xb'));var crypto=require(_0xcc83('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xcc83('0x8'));var querystring=require('querystring');var Papa=require(_0xcc83('0xd'));var Redis=require(_0xcc83('0xe'));var authService=require(_0xcc83('0xf'));var qs=require(_0xcc83('0x10'));var as=require(_0xcc83('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcc83('0x12'))(_0xcc83('0x13'));var utils=require('../../config/utils');var config=require(_0xcc83('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xcc83('0x15'))['db'];function respondWithStatusCode(_0x4f56bd,_0x5e1a3e){_0x5e1a3e=_0x5e1a3e||0xcc;return function(_0x330e05){if(_0x330e05){return _0x4f56bd[_0xcc83('0x16')](_0x5e1a3e);}return _0x4f56bd['status'](_0x5e1a3e)[_0xcc83('0x17')]();};}function respondWithResult(_0x2398bb,_0x419f30){_0x419f30=_0x419f30||0xc8;return function(_0x18c0f7){if(_0x18c0f7){return _0x2398bb['status'](_0x419f30)[_0xcc83('0x18')](_0x18c0f7);}};}function respondWithFilteredResult(_0x4c8fec,_0x316c79){return function(_0x4232b0){if(_0x4232b0){var _0x1d4bce=typeof _0x316c79['offset']===_0xcc83('0x19')&&typeof _0x316c79[_0xcc83('0x1a')]===_0xcc83('0x19');var _0x4b16cc=_0x4232b0[_0xcc83('0x1b')];var _0x22b305=_0x1d4bce?0x0:_0x316c79[_0xcc83('0x1c')];var _0x5b9711=_0x1d4bce?_0x4232b0['count']:_0x316c79[_0xcc83('0x1c')]+_0x316c79['limit'];var _0x3c7b26;if(_0x5b9711>=_0x4b16cc){_0x5b9711=_0x4b16cc;_0x3c7b26=0xc8;}else{_0x3c7b26=0xce;}_0x4c8fec[_0xcc83('0x1d')](_0x3c7b26);return _0x4c8fec[_0xcc83('0x1e')](_0xcc83('0x1f'),_0x22b305+'-'+_0x5b9711+'/'+_0x4b16cc)['json'](_0x4232b0);}return null;};}function patchUpdates(_0x588332){return function(_0x6d1290){try{jsonpatch[_0xcc83('0x20')](_0x6d1290,_0x588332,!![]);}catch(_0x342de7){return BPromise[_0xcc83('0x21')](_0x342de7);}return _0x6d1290[_0xcc83('0x22')]();};}function saveUpdates(_0x408b22,_0x33cac0){return function(_0x1d0491){if(_0x1d0491){return _0x1d0491['update'](_0x408b22)[_0xcc83('0x23')](function(_0x3f8484){return _0x3f8484;});}return null;};}function removeEntity(_0x3f4fcf,_0x94ebdb){return function(_0x49a906){if(_0x49a906){return _0x49a906[_0xcc83('0x24')]()['then'](function(){_0x3f4fcf['status'](0xcc)[_0xcc83('0x17')]();});}};}function handleEntityNotFound(_0x439fa4,_0x1e5ae8){return function(_0x11393e){if(!_0x11393e){_0x439fa4[_0xcc83('0x16')](0x194);}return _0x11393e;};}function handleError(_0x3bd5cf,_0x17fe2f){_0x17fe2f=_0x17fe2f||0x1f4;return function(_0x2eefc2){logger[_0xcc83('0x25')](_0x2eefc2[_0xcc83('0x26')]);if(_0x2eefc2[_0xcc83('0x27')]){delete _0x2eefc2[_0xcc83('0x27')];}_0x3bd5cf[_0xcc83('0x1d')](_0x17fe2f)['send'](_0x2eefc2);};}exports[_0xcc83('0x28')]=function(_0x292860,_0x5e37f1){var _0x3971f8={},_0x544b1e={},_0x433a9c={'count':0x0,'rows':[]};var _0x9619a=_[_0xcc83('0x29')](db['SquareDetailsReport']['rawAttributes'],function(_0x62e744){return{'name':_0x62e744[_0xcc83('0x2a')],'type':_0x62e744['type']['key']};});_0x544b1e[_0xcc83('0x2b')]=_[_0xcc83('0x29')](_0x9619a,_0xcc83('0x27'));_0x544b1e[_0xcc83('0x2c')]=_['keys'](_0x292860[_0xcc83('0x2c')]);_0x544b1e['filters']=_[_0xcc83('0x2d')](_0x544b1e[_0xcc83('0x2b')],_0x544b1e[_0xcc83('0x2c')]);_0x3971f8[_0xcc83('0x2e')]=_[_0xcc83('0x2d')](_0x544b1e['model'],qs[_0xcc83('0x2f')](_0x292860[_0xcc83('0x2c')][_0xcc83('0x2f')]));_0x3971f8[_0xcc83('0x2e')]=_0x3971f8['attributes'][_0xcc83('0x30')]?_0x3971f8[_0xcc83('0x2e')]:_0x544b1e[_0xcc83('0x2b')];if(!_0x292860[_0xcc83('0x2c')][_0xcc83('0x31')]('nolimit')){_0x3971f8[_0xcc83('0x1a')]=qs[_0xcc83('0x1a')](_0x292860[_0xcc83('0x2c')]['limit']);_0x3971f8[_0xcc83('0x1c')]=qs[_0xcc83('0x1c')](_0x292860[_0xcc83('0x2c')][_0xcc83('0x1c')]);}_0x3971f8[_0xcc83('0x32')]=qs[_0xcc83('0x33')](_0x292860[_0xcc83('0x2c')][_0xcc83('0x33')]);_0x3971f8[_0xcc83('0x34')]=qs[_0xcc83('0x35')](_[_0xcc83('0x36')](_0x292860[_0xcc83('0x2c')],_0x544b1e[_0xcc83('0x35')]),_0x9619a);if(_0x292860[_0xcc83('0x2c')][_0xcc83('0x37')]){_0x3971f8[_0xcc83('0x34')]=_[_0xcc83('0x38')](_0x3971f8[_0xcc83('0x34')],{'$or':_['map'](_0x9619a,function(_0x12c0a7){if(_0x12c0a7[_0xcc83('0x39')]!==_0xcc83('0x3a')){var _0x6b1db9={};_0x6b1db9[_0x12c0a7['name']]={'$like':'%'+_0x292860[_0xcc83('0x2c')]['filter']+'%'};return _0x6b1db9;}})});}_0x3971f8=_[_0xcc83('0x38')]({},_0x3971f8,_0x292860[_0xcc83('0x3b')]);var _0x398ada={'where':_0x3971f8[_0xcc83('0x34')]};return db[_0xcc83('0x3c')][_0xcc83('0x1b')](_0x398ada)[_0xcc83('0x23')](function(_0x5b52fa){_0x433a9c[_0xcc83('0x1b')]=_0x5b52fa;if(_0x292860[_0xcc83('0x2c')][_0xcc83('0x3d')]){_0x3971f8[_0xcc83('0x3e')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0xcc83('0x3f')](_0x3971f8);})[_0xcc83('0x23')](function(_0x3c94f5){_0x433a9c['rows']=_0x3c94f5;return _0x433a9c;})[_0xcc83('0x23')](respondWithFilteredResult(_0x5e37f1,_0x3971f8))[_0xcc83('0x40')](handleError(_0x5e37f1,null));};exports[_0xcc83('0x41')]=function(_0x73b723,_0x84a3c8){var _0x3345c5={'raw':!![],'where':{'id':_0x73b723[_0xcc83('0x42')]['id']}},_0x381ba8={};_0x381ba8[_0xcc83('0x2b')]=_[_0xcc83('0x43')](db[_0xcc83('0x3c')][_0xcc83('0x44')]);_0x381ba8[_0xcc83('0x2c')]=_[_0xcc83('0x43')](_0x73b723[_0xcc83('0x2c')]);_0x381ba8[_0xcc83('0x35')]=_[_0xcc83('0x2d')](_0x381ba8[_0xcc83('0x2b')],_0x381ba8[_0xcc83('0x2c')]);_0x3345c5[_0xcc83('0x2e')]=_[_0xcc83('0x2d')](_0x381ba8[_0xcc83('0x2b')],qs[_0xcc83('0x2f')](_0x73b723['query'][_0xcc83('0x2f')]));_0x3345c5[_0xcc83('0x2e')]=_0x3345c5['attributes']['length']?_0x3345c5[_0xcc83('0x2e')]:_0x381ba8[_0xcc83('0x2b')];if(_0x73b723['query'][_0xcc83('0x3d')]){_0x3345c5[_0xcc83('0x3e')]=[{'all':!![]}];}_0x3345c5=_['merge']({},_0x3345c5,_0x73b723[_0xcc83('0x3b')]);return db[_0xcc83('0x3c')][_0xcc83('0x45')](_0x3345c5)[_0xcc83('0x23')](handleEntityNotFound(_0x84a3c8,null))['then'](respondWithResult(_0x84a3c8,null))[_0xcc83('0x40')](handleError(_0x84a3c8,null));};exports[_0xcc83('0x46')]=function(_0x1f40a9,_0x46c2cb){return db[_0xcc83('0x3c')][_0xcc83('0x46')](_0x1f40a9[_0xcc83('0x47')],{})['then'](respondWithResult(_0x46c2cb,0xc9))['catch'](handleError(_0x46c2cb,null));};exports[_0xcc83('0x48')]=function(_0x42b078,_0x332f58){if(_0x42b078[_0xcc83('0x47')]['id']){delete _0x42b078['body']['id'];}return db[_0xcc83('0x3c')][_0xcc83('0x45')]({'where':{'id':_0x42b078[_0xcc83('0x42')]['id']}})[_0xcc83('0x23')](handleEntityNotFound(_0x332f58,null))[_0xcc83('0x23')](saveUpdates(_0x42b078['body'],null))[_0xcc83('0x23')](respondWithResult(_0x332f58,null))[_0xcc83('0x40')](handleError(_0x332f58,null));};exports[_0xcc83('0x24')]=function(_0x5ccfa1,_0x38d319){return db[_0xcc83('0x3c')][_0xcc83('0x45')]({'where':{'id':_0x5ccfa1['params']['id']}})[_0xcc83('0x23')](handleEntityNotFound(_0x38d319,null))[_0xcc83('0x23')](removeEntity(_0x38d319,null))[_0xcc83('0x40')](handleError(_0x38d319,null));};exports[_0xcc83('0x49')]=function(_0x12edac,_0x16e1ad){return db[_0xcc83('0x3c')]['describe']()[_0xcc83('0x23')](respondWithResult(_0x16e1ad,null))[_0xcc83('0x40')](handleError(_0x16e1ad,null));};
\ No newline at end of file
+var _0xf74d=['moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SquareDetailsReport','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','include','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise'];(function(_0x34c417,_0x44418c){var _0x4b88d5=function(_0x4240a8){while(--_0x4240a8){_0x34c417['push'](_0x34c417['shift']());}};_0x4b88d5(++_0x44418c);}(_0xf74d,0x1a6));var _0xdf74=function(_0x56a19c,_0x2e3a8e){_0x56a19c=_0x56a19c-0x0;var _0x83af3f=_0xf74d[_0x56a19c];return _0x83af3f;};'use strict';var emlformat=require(_0xdf74('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdf74('0x1'));var jsonpatch=require(_0xdf74('0x2'));var rp=require(_0xdf74('0x3'));var moment=require(_0xdf74('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xdf74('0x5'));var util=require(_0xdf74('0x6'));var path=require(_0xdf74('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xdf74('0x8'));var fs=require('fs');var fs_extra=require(_0xdf74('0x9'));var _=require(_0xdf74('0xa'));var squel=require(_0xdf74('0xb'));var crypto=require(_0xdf74('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xdf74('0xd'));var toCsv=require('to-csv');var querystring=require(_0xdf74('0xe'));var Papa=require(_0xdf74('0xf'));var Redis=require(_0xdf74('0x10'));var authService=require(_0xdf74('0x11'));var qs=require(_0xdf74('0x12'));var as=require(_0xdf74('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xdf74('0x14'));var db=require(_0xdf74('0x15'))['db'];function respondWithStatusCode(_0xd64766,_0xb70573){_0xb70573=_0xb70573||0xcc;return function(_0x28724b){if(_0x28724b){return _0xd64766[_0xdf74('0x16')](_0xb70573);}return _0xd64766[_0xdf74('0x17')](_0xb70573)[_0xdf74('0x18')]();};}function respondWithResult(_0x5e57d0,_0x55e5a8){_0x55e5a8=_0x55e5a8||0xc8;return function(_0x494edb){if(_0x494edb){return _0x5e57d0[_0xdf74('0x17')](_0x55e5a8)['json'](_0x494edb);}};}function respondWithFilteredResult(_0x4e29f4,_0x114499){return function(_0x5af92b){if(_0x5af92b){var _0x545feb=typeof _0x114499[_0xdf74('0x19')]===_0xdf74('0x1a')&&typeof _0x114499[_0xdf74('0x1b')]===_0xdf74('0x1a');var _0x55696f=_0x5af92b[_0xdf74('0x1c')];var _0x2ff5b9=_0x545feb?0x0:_0x114499[_0xdf74('0x19')];var _0x145a38=_0x545feb?_0x5af92b[_0xdf74('0x1c')]:_0x114499['offset']+_0x114499[_0xdf74('0x1b')];var _0x542e7d;if(_0x145a38>=_0x55696f){_0x145a38=_0x55696f;_0x542e7d=0xc8;}else{_0x542e7d=0xce;}_0x4e29f4[_0xdf74('0x17')](_0x542e7d);return _0x4e29f4['set'](_0xdf74('0x1d'),_0x2ff5b9+'-'+_0x145a38+'/'+_0x55696f)[_0xdf74('0x1e')](_0x5af92b);}return null;};}function patchUpdates(_0xdf118a){return function(_0x3fafe8){try{jsonpatch[_0xdf74('0x1f')](_0x3fafe8,_0xdf118a,!![]);}catch(_0x492331){return BPromise[_0xdf74('0x20')](_0x492331);}return _0x3fafe8[_0xdf74('0x21')]();};}function saveUpdates(_0x2c94e3,_0x66042e){return function(_0x21787f){if(_0x21787f){return _0x21787f[_0xdf74('0x22')](_0x2c94e3)[_0xdf74('0x23')](function(_0x38ec0e){return _0x38ec0e;});}return null;};}function removeEntity(_0xbd7739,_0x2ce7cc){return function(_0x442144){if(_0x442144){return _0x442144[_0xdf74('0x24')]()[_0xdf74('0x23')](function(){_0xbd7739[_0xdf74('0x17')](0xcc)[_0xdf74('0x18')]();});}};}function handleEntityNotFound(_0x1ae51a,_0x4e5d8e){return function(_0x3c8640){if(!_0x3c8640){_0x1ae51a[_0xdf74('0x16')](0x194);}return _0x3c8640;};}function handleError(_0x32a62f,_0x5f2de7){_0x5f2de7=_0x5f2de7||0x1f4;return function(_0x32093c){logger[_0xdf74('0x25')](_0x32093c[_0xdf74('0x26')]);if(_0x32093c[_0xdf74('0x27')]){delete _0x32093c[_0xdf74('0x27')];}_0x32a62f['status'](_0x5f2de7)[_0xdf74('0x28')](_0x32093c);};}exports[_0xdf74('0x29')]=function(_0x255d15,_0x449acd){var _0x2ef32c={},_0x38271e={},_0x1dd20e={'count':0x0,'rows':[]};var _0xd99279=_[_0xdf74('0x2a')](db[_0xdf74('0x2b')]['rawAttributes'],function(_0x25f182){return{'name':_0x25f182['fieldName'],'type':_0x25f182[_0xdf74('0x2c')]['key']};});_0x38271e[_0xdf74('0x2d')]=_['map'](_0xd99279,_0xdf74('0x27'));_0x38271e[_0xdf74('0x2e')]=_['keys'](_0x255d15[_0xdf74('0x2e')]);_0x38271e[_0xdf74('0x2f')]=_[_0xdf74('0x30')](_0x38271e[_0xdf74('0x2d')],_0x38271e['query']);_0x2ef32c[_0xdf74('0x31')]=_[_0xdf74('0x30')](_0x38271e[_0xdf74('0x2d')],qs['fields'](_0x255d15[_0xdf74('0x2e')][_0xdf74('0x32')]));_0x2ef32c[_0xdf74('0x31')]=_0x2ef32c['attributes']['length']?_0x2ef32c[_0xdf74('0x31')]:_0x38271e[_0xdf74('0x2d')];if(!_0x255d15[_0xdf74('0x2e')][_0xdf74('0x33')]('nolimit')){_0x2ef32c[_0xdf74('0x1b')]=qs[_0xdf74('0x1b')](_0x255d15['query'][_0xdf74('0x1b')]);_0x2ef32c[_0xdf74('0x19')]=qs[_0xdf74('0x19')](_0x255d15[_0xdf74('0x2e')][_0xdf74('0x19')]);}_0x2ef32c['order']=qs[_0xdf74('0x34')](_0x255d15[_0xdf74('0x2e')][_0xdf74('0x34')]);_0x2ef32c[_0xdf74('0x35')]=qs[_0xdf74('0x2f')](_[_0xdf74('0x36')](_0x255d15[_0xdf74('0x2e')],_0x38271e[_0xdf74('0x2f')]),_0xd99279);if(_0x255d15[_0xdf74('0x2e')][_0xdf74('0x37')]){_0x2ef32c[_0xdf74('0x35')]=_['merge'](_0x2ef32c[_0xdf74('0x35')],{'$or':_['map'](_0xd99279,function(_0x3e80df){if(_0x3e80df[_0xdf74('0x2c')]!==_0xdf74('0x38')){var _0x37d27b={};_0x37d27b[_0x3e80df[_0xdf74('0x27')]]={'$like':'%'+_0x255d15[_0xdf74('0x2e')][_0xdf74('0x37')]+'%'};return _0x37d27b;}})});}_0x2ef32c=_['merge']({},_0x2ef32c,_0x255d15[_0xdf74('0x39')]);var _0x54957d={'where':_0x2ef32c[_0xdf74('0x35')]};return db[_0xdf74('0x2b')]['count'](_0x54957d)['then'](function(_0x4836a8){_0x1dd20e['count']=_0x4836a8;if(_0x255d15['query'][_0xdf74('0x3a')]){_0x2ef32c['include']=[{'all':!![]}];}return db['SquareDetailsReport'][_0xdf74('0x3b')](_0x2ef32c);})[_0xdf74('0x23')](function(_0x543e67){_0x1dd20e[_0xdf74('0x3c')]=_0x543e67;return _0x1dd20e;})[_0xdf74('0x23')](respondWithFilteredResult(_0x449acd,_0x2ef32c))[_0xdf74('0x3d')](handleError(_0x449acd,null));};exports[_0xdf74('0x3e')]=function(_0x5ba3c0,_0x597169){var _0x1351af={'raw':!![],'where':{'id':_0x5ba3c0[_0xdf74('0x3f')]['id']}},_0x4cdec8={};_0x4cdec8[_0xdf74('0x2d')]=_[_0xdf74('0x40')](db[_0xdf74('0x2b')][_0xdf74('0x41')]);_0x4cdec8[_0xdf74('0x2e')]=_['keys'](_0x5ba3c0[_0xdf74('0x2e')]);_0x4cdec8[_0xdf74('0x2f')]=_[_0xdf74('0x30')](_0x4cdec8['model'],_0x4cdec8[_0xdf74('0x2e')]);_0x1351af[_0xdf74('0x31')]=_[_0xdf74('0x30')](_0x4cdec8[_0xdf74('0x2d')],qs[_0xdf74('0x32')](_0x5ba3c0[_0xdf74('0x2e')]['fields']));_0x1351af[_0xdf74('0x31')]=_0x1351af['attributes']['length']?_0x1351af[_0xdf74('0x31')]:_0x4cdec8[_0xdf74('0x2d')];if(_0x5ba3c0[_0xdf74('0x2e')]['includeAll']){_0x1351af[_0xdf74('0x42')]=[{'all':!![]}];}_0x1351af=_['merge']({},_0x1351af,_0x5ba3c0['options']);return db[_0xdf74('0x2b')][_0xdf74('0x43')](_0x1351af)[_0xdf74('0x23')](handleEntityNotFound(_0x597169,null))['then'](respondWithResult(_0x597169,null))[_0xdf74('0x3d')](handleError(_0x597169,null));};exports[_0xdf74('0x44')]=function(_0x79f1b0,_0x5b3b9c){return db['SquareDetailsReport']['create'](_0x79f1b0['body'],{})[_0xdf74('0x23')](respondWithResult(_0x5b3b9c,0xc9))[_0xdf74('0x3d')](handleError(_0x5b3b9c,null));};exports[_0xdf74('0x22')]=function(_0x110fcf,_0x1f39ca){if(_0x110fcf['body']['id']){delete _0x110fcf[_0xdf74('0x45')]['id'];}return db[_0xdf74('0x2b')]['find']({'where':{'id':_0x110fcf[_0xdf74('0x3f')]['id']}})[_0xdf74('0x23')](handleEntityNotFound(_0x1f39ca,null))[_0xdf74('0x23')](saveUpdates(_0x110fcf[_0xdf74('0x45')],null))[_0xdf74('0x23')](respondWithResult(_0x1f39ca,null))['catch'](handleError(_0x1f39ca,null));};exports['destroy']=function(_0x35feae,_0x44b16a){return db[_0xdf74('0x2b')][_0xdf74('0x43')]({'where':{'id':_0x35feae['params']['id']}})[_0xdf74('0x23')](handleEntityNotFound(_0x44b16a,null))[_0xdf74('0x23')](removeEntity(_0x44b16a,null))[_0xdf74('0x3d')](handleError(_0x44b16a,null));};exports['describe']=function(_0xc9d50d,_0x1ab9b7){return db[_0xdf74('0x2b')][_0xdf74('0x46')]()[_0xdf74('0x23')](respondWithResult(_0x1ab9b7,null))[_0xdf74('0x3d')](handleError(_0x1ab9b7,null));};
\ No newline at end of file
index fe0fcbd..bc5638f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd67b=['api','moment','bluebird','path','rimraf','./squareReportDetail.attributes','exports','define','SquareDetailsReport'];(function(_0x47a024,_0x15f5c4){var _0x17a041=function(_0xc9c5b5){while(--_0xc9c5b5){_0x47a024['push'](_0x47a024['shift']());}};_0x17a041(++_0x15f5c4);}(_0xd67b,0x1a7));var _0xbd67=function(_0x3097ad,_0x393e24){_0x3097ad=_0x3097ad-0x0;var _0x3521bc=_0xd67b[_0x3097ad];return _0x3521bc;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xbd67('0x0'));var moment=require(_0xbd67('0x1'));var BPromise=require(_0xbd67('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbd67('0x3'));var rimraf=require(_0xbd67('0x4'));var config=require('../../config/environment');var attributes=require(_0xbd67('0x5'));module[_0xbd67('0x6')]=function(_0x14372d,_0x535335){return _0x14372d[_0xbd67('0x7')](_0xbd67('0x8'),attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdeb2=['report_square_details','lodash','util','request-promise','path','../../config/environment','./squareReportDetail.attributes','exports','define','SquareDetailsReport'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0xdeb2,0xfb));var _0x2deb=function(_0x48d3b2,_0x11c70a){_0x48d3b2=_0x48d3b2-0x0;var _0x18afdb=_0xdeb2[_0x48d3b2];return _0x18afdb;};'use strict';var _=require(_0x2deb('0x0'));var util=require(_0x2deb('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2deb('0x2'));var fs=require('fs');var path=require(_0x2deb('0x3'));var rimraf=require('rimraf');var config=require(_0x2deb('0x4'));var attributes=require(_0x2deb('0x5'));module[_0x2deb('0x6')]=function(_0x5c7981,_0x17b0c4){return _0x5c7981[_0x2deb('0x7')](_0x2deb('0x8'),attributes,{'tableName':_0x2deb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 447513b..57e9a61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x235b=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','body','options','raw','lodash'];(function(_0x45d414,_0x5ca27b){var _0x4dc948=function(_0x4dd43e){while(--_0x4dd43e){_0x45d414['push'](_0x45d414['shift']());}};_0x4dc948(++_0x5ca27b);}(_0x235b,0x1ed));var _0xb235=function(_0x58d580,_0x4c8f86){_0x58d580=_0x58d580-0x0;var _0x3c096c=_0x235b[_0x58d580];return _0x3c096c;};'use strict';var _=require(_0xb235('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb235('0x1'));var rs=require(_0xb235('0x2'));var fs=require('fs');var Redis=require(_0xb235('0x3'));var db=require(_0xb235('0x4'))['db'];var utils=require(_0xb235('0x5'));var logger=require(_0xb235('0x6'))('rpc');var config=require(_0xb235('0x7'));var jayson=require(_0xb235('0x8'));var client=jayson[_0xb235('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x12d0ae,_0x44559a,_0x2affe8){return new BPromise(function(_0x436d63,_0x3241b4){return client['request'](_0x12d0ae,_0x2affe8)['then'](function(_0xecf759){logger[_0xb235('0xa')](_0xb235('0xb'),_0x44559a,_0xb235('0xc'));logger[_0xb235('0xd')](_0xb235('0xe'),_0x44559a,_0xb235('0xc'),JSON[_0xb235('0xf')](_0xecf759));if(_0xecf759['error']){if(_0xecf759[_0xb235('0x10')][_0xb235('0x11')]===0x1f4){logger[_0xb235('0x10')]('SquareDetailsReport,\x20%s,\x20%s',_0x44559a,_0xecf759[_0xb235('0x10')]['message']);return _0x3241b4(_0xecf759[_0xb235('0x10')][_0xb235('0x12')]);}logger[_0xb235('0x10')](_0xb235('0xb'),_0x44559a,_0xecf759[_0xb235('0x10')][_0xb235('0x12')]);return _0x436d63(_0xecf759[_0xb235('0x10')]['message']);}else{logger[_0xb235('0xa')](_0xb235('0xb'),_0x44559a,_0xb235('0xc'));_0x436d63(_0xecf759[_0xb235('0x13')][_0xb235('0x12')]);}})[_0xb235('0x14')](function(_0x16f044){logger[_0xb235('0x10')](_0xb235('0xb'),_0x44559a,_0x16f044);_0x3241b4(_0x16f044);});});}exports[_0xb235('0x15')]=function(_0x2f1c46){var _0x1b9eae=this;return new Promise(function(_0x1f7cb9,_0x55a479){return db[_0xb235('0x16')]['create'](_0x2f1c46[_0xb235('0x17')],{'raw':_0x2f1c46['options']?_0x2f1c46[_0xb235('0x18')][_0xb235('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x447ec6){logger[_0xb235('0xa')](_0xb235('0x15'),_0x2f1c46);logger[_0xb235('0xd')](_0xb235('0x15'),_0x2f1c46,JSON['stringify'](_0x447ec6));_0x1f7cb9(_0x447ec6);})[_0xb235('0x14')](function(_0x12f787){logger[_0xb235('0x10')](_0xb235('0x15'),_0x12f787[_0xb235('0x12')],_0x2f1c46);_0x55a479(_0x1b9eae[_0xb235('0x10')](0x1f4,_0x12f787['message']));});});};
\ No newline at end of file
+var _0x5eb8=['CreateSquareDetailsReport','stringify','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','error','message','catch','SquareDetailsReport','create','body','options','raw','then'];(function(_0x2859cb,_0x3bda90){var _0x39323d=function(_0xf987ee){while(--_0xf987ee){_0x2859cb['push'](_0x2859cb['shift']());}};_0x39323d(++_0x3bda90);}(_0x5eb8,0xb0));var _0x85eb=function(_0x41ee16,_0xfa94c3){_0x41ee16=_0x41ee16-0x0;var _0x1f60de=_0x5eb8[_0x41ee16];return _0x1f60de;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x85eb('0x0'));var BPromise=require(_0x85eb('0x1'));var rs=require(_0x85eb('0x2'));var fs=require('fs');var Redis=require(_0x85eb('0x3'));var db=require(_0x85eb('0x4'))['db'];var utils=require(_0x85eb('0x5'));var logger=require(_0x85eb('0x6'))(_0x85eb('0x7'));var config=require(_0x85eb('0x8'));var jayson=require(_0x85eb('0x9'));var client=jayson[_0x85eb('0xa')][_0x85eb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a8814,_0x16d7b9,_0x3af658){return new BPromise(function(_0x448345,_0x5cd4ec){return client[_0x85eb('0xc')](_0x4a8814,_0x3af658)['then'](function(_0x1f0036){logger[_0x85eb('0xd')](_0x85eb('0xe'),_0x16d7b9,_0x85eb('0xf'));logger[_0x85eb('0x10')](_0x85eb('0x11'),_0x16d7b9,_0x85eb('0xf'),JSON['stringify'](_0x1f0036));if(_0x1f0036[_0x85eb('0x12')]){if(_0x1f0036[_0x85eb('0x12')]['code']===0x1f4){logger[_0x85eb('0x12')](_0x85eb('0xe'),_0x16d7b9,_0x1f0036[_0x85eb('0x12')][_0x85eb('0x13')]);return _0x5cd4ec(_0x1f0036['error']['message']);}logger[_0x85eb('0x12')]('SquareDetailsReport,\x20%s,\x20%s',_0x16d7b9,_0x1f0036[_0x85eb('0x12')][_0x85eb('0x13')]);return _0x448345(_0x1f0036[_0x85eb('0x12')][_0x85eb('0x13')]);}else{logger[_0x85eb('0xd')]('SquareDetailsReport,\x20%s,\x20%s',_0x16d7b9,_0x85eb('0xf'));_0x448345(_0x1f0036['result'][_0x85eb('0x13')]);}})[_0x85eb('0x14')](function(_0x3e23e8){logger[_0x85eb('0x12')]('SquareDetailsReport,\x20%s,\x20%s',_0x16d7b9,_0x3e23e8);_0x5cd4ec(_0x3e23e8);});});}exports['CreateSquareDetailsReport']=function(_0x50d2a8){var _0xe198ca=this;return new Promise(function(_0x39ca96,_0x10cf2f){return db[_0x85eb('0x15')][_0x85eb('0x16')](_0x50d2a8[_0x85eb('0x17')],{'raw':_0x50d2a8['options']?_0x50d2a8[_0x85eb('0x18')][_0x85eb('0x19')]===undefined?!![]:![]:!![]})[_0x85eb('0x1a')](function(_0x4e8041){logger['info']('CreateSquareDetailsReport',_0x50d2a8);logger['debug'](_0x85eb('0x1b'),_0x50d2a8,JSON[_0x85eb('0x1c')](_0x4e8041));_0x39ca96(_0x4e8041);})[_0x85eb('0x14')](function(_0x255ca7){logger[_0x85eb('0x12')](_0x85eb('0x1b'),_0x255ca7['message'],_0x50d2a8);_0x10cf2f(_0xe198ca['error'](0x1f4,_0x255ca7['message']));});});};
\ No newline at end of file
index d757508..9c3a694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66a2=['express','Router','../../components/auth/service','./system.controller','get','isAuthenticated','index','/process/:pid/kill','killProcess'];(function(_0x333cee,_0x17f8b7){var _0x4cb8ce=function(_0x500dd4){while(--_0x500dd4){_0x333cee['push'](_0x333cee['shift']());}};_0x4cb8ce(++_0x17f8b7);}(_0x66a2,0xf3));var _0x266a=function(_0x13a8cc,_0x45b4fc){_0x13a8cc=_0x13a8cc-0x0;var _0x31b53c=_0x66a2[_0x13a8cc];return _0x31b53c;};'use strict';var express=require(_0x266a('0x0'));var router=express[_0x266a('0x1')]();var auth=require(_0x266a('0x2'));var controller=require(_0x266a('0x3'));router[_0x266a('0x4')]('/',auth[_0x266a('0x5')](),controller[_0x266a('0x6')]);router[_0x266a('0x4')](_0x266a('0x7'),auth[_0x266a('0x5')](),controller[_0x266a('0x8')]);module['exports']=router;
\ No newline at end of file
+var _0x9ee9=['/process/:pid/kill','isAuthenticated','killProcess','express','Router','../../components/auth/service','./system.controller','get','index'];(function(_0x3f55b2,_0x497146){var _0x51df8e=function(_0x2ccd04){while(--_0x2ccd04){_0x3f55b2['push'](_0x3f55b2['shift']());}};_0x51df8e(++_0x497146);}(_0x9ee9,0xd2));var _0x99ee=function(_0x2a3110,_0x16f6c2){_0x2a3110=_0x2a3110-0x0;var _0x3317b2=_0x9ee9[_0x2a3110];return _0x3317b2;};'use strict';var express=require(_0x99ee('0x0'));var router=express[_0x99ee('0x1')]();var auth=require(_0x99ee('0x2'));var controller=require(_0x99ee('0x3'));router[_0x99ee('0x4')]('/',auth['isAuthenticated'](),controller[_0x99ee('0x5')]);router['get'](_0x99ee('0x6'),auth[_0x99ee('0x7')](),controller[_0x99ee('0x8')]);module['exports']=router;
\ No newline at end of file
index 317995d..dca23c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0013=['killProcess','format','pid','then','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process','exec','../../config/logger','api','util','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','index','getAllData','status','json','catch'];(function(_0x436f34,_0x1041e0){var _0x2bb674=function(_0x78c462){while(--_0x78c462){_0x436f34['push'](_0x436f34['shift']());}};_0x2bb674(++_0x1041e0);}(_0x0013,0x194));var _0x3001=function(_0x75fe31,_0xc1ce5e){_0x75fe31=_0x75fe31-0x0;var _0x2d6c4a=_0x0013[_0x75fe31];return _0x2d6c4a;};'use strict';var info=require(_0x3001('0x0'));var exec=require(_0x3001('0x1'))[_0x3001('0x2')];var logger=require(_0x3001('0x3'))(_0x3001('0x4'));var util=require(_0x3001('0x5'));var BPromise=require('bluebird');var _=require(_0x3001('0x6'));function handleError(_0x6cc57a,_0x2fa324,_0x2ed928){_0x2fa324=_0x2fa324||0x1f4;return function(_0x5aa822){logger[_0x3001('0x7')](_0x3001('0x8'),_0x2ed928,_0x2fa324,util[_0x3001('0x9')](_0x5aa822,{'showHidden':![],'depth':null}));delete _0x5aa822[_0x3001('0xa')];_0x6cc57a['status'](_0x2fa324)['send'](_0x5aa822);};}exports[_0x3001('0xb')]=function(_0x53e1e4,_0xa52cad){return info[_0x3001('0xc')]()['then'](function(_0x18f75e){return _0xa52cad[_0x3001('0xd')](0xc8)[_0x3001('0xe')](_0x18f75e);})[_0x3001('0xf')](function(_0x5b509c){return _0xa52cad[_0x3001('0xd')](0x1f4)[_0x3001('0xe')](_0x5b509c);});};exports[_0x3001('0x10')]=function(_0x181667,_0x4d3855){var _0x19e3ca=['components/import/cm'];return new BPromise(function(_0x63ceec,_0x4f210d){return exec(util[_0x3001('0x11')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x181667['params'][_0x3001('0x12')]),function(_0x4fbf6c,_0x5cd914,_0x14deb9){if(_0x4fbf6c){return _0x4f210d(_0x4fbf6c);}return _0x63ceec(_0x5cd914);});})[_0x3001('0x13')](function(_0x5ea48d){var _0x4c50d6=![];var _0x3c4131=_0x5ea48d[_0x3001('0x14')](/\n/);for(var _0x1004ee=0x0,_0x5173db=_0x19e3ca[_0x3001('0x15')];_0x1004ee<_0x5173db,_0x4c50d6===![];_0x1004ee+=0x1){if(_0x5ea48d[_0x3001('0x16')](_0x19e3ca[_0x1004ee])>=0x0){_0x4c50d6=!![];}}if(!_0x4c50d6){throw new Error(util[_0x3001('0x11')](_0x3001('0x17'),_0x181667[_0x3001('0x18')]['pid']));}process[_0x3001('0x19')](_0x181667[_0x3001('0x18')][_0x3001('0x12')],_0x3001('0x1a'));return _0x4d3855[_0x3001('0xd')](0xc8)[_0x3001('0xe')]({'message':util[_0x3001('0x11')](_0x3001('0x1b'),_0x181667[_0x3001('0x18')][_0x3001('0x12')])});})[_0x3001('0xf')](handleError(_0x4d3855,null,_0x3001('0x10')));};
\ No newline at end of file
+var _0xec50=['getAllData','json','catch','killProcess','components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','then','length','indexOf','format','Process\x20with\x20pid\x20%s\x20not\x20found!','pid','SIGINT','systeminformation','child_process','exec','util','bluebird','lodash','error','inspect','name','status','send','index'];(function(_0x5b0741,_0x438df7){var _0x3ee9c9=function(_0x4686d5){while(--_0x4686d5){_0x5b0741['push'](_0x5b0741['shift']());}};_0x3ee9c9(++_0x438df7);}(_0xec50,0x112));var _0x0ec5=function(_0xfe9843,_0x26e709){_0xfe9843=_0xfe9843-0x0;var _0x7f7af7=_0xec50[_0xfe9843];return _0x7f7af7;};'use strict';var info=require(_0x0ec5('0x0'));var exec=require(_0x0ec5('0x1'))[_0x0ec5('0x2')];var logger=require('../../config/logger')('api');var util=require(_0x0ec5('0x3'));var BPromise=require(_0x0ec5('0x4'));var _=require(_0x0ec5('0x5'));function handleError(_0x2f3247,_0x525849,_0x592906){_0x525849=_0x525849||0x1f4;return function(_0x60b222){logger[_0x0ec5('0x6')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x592906,_0x525849,util[_0x0ec5('0x7')](_0x60b222,{'showHidden':![],'depth':null}));delete _0x60b222[_0x0ec5('0x8')];_0x2f3247[_0x0ec5('0x9')](_0x525849)[_0x0ec5('0xa')](_0x60b222);};}exports[_0x0ec5('0xb')]=function(_0xb5a7e5,_0x1054e2){return info[_0x0ec5('0xc')]()['then'](function(_0x4de880){return _0x1054e2[_0x0ec5('0x9')](0xc8)[_0x0ec5('0xd')](_0x4de880);})[_0x0ec5('0xe')](function(_0x126f49){return _0x1054e2[_0x0ec5('0x9')](0x1f4)['json'](_0x126f49);});};exports[_0x0ec5('0xf')]=function(_0x16c89f,_0x530154){var _0x473c5f=[_0x0ec5('0x10')];return new BPromise(function(_0x1f8bd2,_0x3ef4c8){return exec(util['format'](_0x0ec5('0x11'),_0x16c89f[_0x0ec5('0x12')]['pid']),function(_0x3d5f57,_0x261247,_0x47088b){if(_0x3d5f57){return _0x3ef4c8(_0x3d5f57);}return _0x1f8bd2(_0x261247);});})[_0x0ec5('0x13')](function(_0x512bd1){var _0x459a74=![];var _0x55cd3c=_0x512bd1['split'](/\n/);for(var _0x4b2f24=0x0,_0x16e061=_0x473c5f[_0x0ec5('0x14')];_0x4b2f24<_0x16e061,_0x459a74===![];_0x4b2f24+=0x1){if(_0x512bd1[_0x0ec5('0x15')](_0x473c5f[_0x4b2f24])>=0x0){_0x459a74=!![];}}if(!_0x459a74){throw new Error(util[_0x0ec5('0x16')](_0x0ec5('0x17'),_0x16c89f['params'][_0x0ec5('0x18')]));}process['kill'](_0x16c89f['params'][_0x0ec5('0x18')],_0x0ec5('0x19'));return _0x530154['status'](0xc8)['json']({'message':util['format']('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x16c89f['params'][_0x0ec5('0x18')])});})[_0x0ec5('0xe')](handleError(_0x530154,null,_0x0ec5('0xf')));};
\ No newline at end of file
index dd0181c..464e0d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x254f=['fs-extra','../../components/auth/service','../../components/interaction/service','./tag.controller','get','isAuthenticated','index','/:id','show','post','put','delete','destroy','path','express','Router'];(function(_0x36aad0,_0x3d2e17){var _0x31e987=function(_0x2d0fe4){while(--_0x2d0fe4){_0x36aad0['push'](_0x36aad0['shift']());}};_0x31e987(++_0x3d2e17);}(_0x254f,0x8d));var _0xf254=function(_0x1c7fd2,_0x539c39){_0x1c7fd2=_0x1c7fd2-0x0;var _0x4aa556=_0x254f[_0x1c7fd2];return _0x4aa556;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf254('0x0'));var timeout=require('connect-timeout');var express=require(_0xf254('0x1'));var router=express[_0xf254('0x2')]();var fs_extra=require(_0xf254('0x3'));var auth=require(_0xf254('0x4'));var interaction=require(_0xf254('0x5'));var config=require('../../config/environment');var controller=require(_0xf254('0x6'));router[_0xf254('0x7')]('/',auth[_0xf254('0x8')](),controller[_0xf254('0x9')]);router[_0xf254('0x7')](_0xf254('0xa'),auth['isAuthenticated'](),controller[_0xf254('0xb')]);router[_0xf254('0xc')]('/',auth[_0xf254('0x8')](),controller['create']);router[_0xf254('0xd')](_0xf254('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xf254('0xe')]('/:id',auth[_0xf254('0x8')](),controller[_0xf254('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xa2a5=['express','Router','../../components/interaction/service','../../config/environment','./tag.controller','get','isAuthenticated','index','/:id','show','create','delete','exports','multer','util','path','connect-timeout'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xa2a5,0x84));var _0x5a2a=function(_0x5c78f1,_0x25008d){_0x5c78f1=_0x5c78f1-0x0;var _0x5f1dfd=_0xa2a5[_0x5c78f1];return _0x5f1dfd;};'use strict';var multer=require(_0x5a2a('0x0'));var util=require(_0x5a2a('0x1'));var path=require(_0x5a2a('0x2'));var timeout=require(_0x5a2a('0x3'));var express=require(_0x5a2a('0x4'));var router=express[_0x5a2a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5a2a('0x6'));var config=require(_0x5a2a('0x7'));var controller=require(_0x5a2a('0x8'));router[_0x5a2a('0x9')]('/',auth[_0x5a2a('0xa')](),controller[_0x5a2a('0xb')]);router[_0x5a2a('0x9')](_0x5a2a('0xc'),auth['isAuthenticated'](),controller[_0x5a2a('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5a2a('0xe')]);router['put'](_0x5a2a('0xc'),auth[_0x5a2a('0xa')](),controller['update']);router[_0x5a2a('0xf')](_0x5a2a('0xc'),auth[_0x5a2a('0xa')](),controller['destroy']);module[_0x5a2a('0x10')]=router;
\ No newline at end of file
index 5c38bbe..8da5bb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0664=['exports','name','STRING'];(function(_0x4bd6a6,_0x1ce766){var _0x469e6b=function(_0x596392){while(--_0x596392){_0x4bd6a6['push'](_0x4bd6a6['shift']());}};_0x469e6b(++_0x1ce766);}(_0x0664,0x93));var _0x4066=function(_0x5c5bbe,_0x11b135){_0x5c5bbe=_0x5c5bbe-0x0;var _0x212f26=_0x0664[_0x5c5bbe];return _0x212f26;};'use strict';var Sequelize=require('sequelize');module[_0x4066('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x4066('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x4066('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0x4066('0x2')]}};
\ No newline at end of file
+var _0x30fc=['sequelize','exports','name','STRING','#0091EA'];(function(_0x4a8426,_0x493d17){var _0x4908b1=function(_0xac35ad){while(--_0xac35ad){_0x4a8426['push'](_0x4a8426['shift']());}};_0x4908b1(++_0x493d17);}(_0x30fc,0x64));var _0xc30f=function(_0x3038c1,_0x1ea3a7){_0x3038c1=_0x3038c1-0x0;var _0x305853=_0x30fc[_0x3038c1];return _0x305853;};'use strict';var Sequelize=require(_0xc30f('0x0'));module[_0xc30f('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xc30f('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xc30f('0x3')],'defaultValue':_0xc30f('0x4')},'description':{'type':Sequelize[_0xc30f('0x3')]}};
\ No newline at end of file
index ed3e788..5552563 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','Tag','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','Tags','error','name','send','map','type','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty'];(function(_0xa4c4ff,_0x5e48a6){var _0x59df77=function(_0x3107f4){while(--_0x3107f4){_0xa4c4ff['push'](_0xa4c4ff['shift']());}};_0x59df77(++_0x5e48a6);}(_0x1bca,0xb6));var _0xa1bc=function(_0x58b409,_0x36f72b){_0x58b409=_0x58b409-0x0;var _0x39b60a=_0x1bca[_0x58b409];return _0x39b60a;};'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['Tag']['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['Tag'][_0xa1bc('0x1e')](_0x33e402)['then'](function(_0x482d37){_0x1fe2a5[_0xa1bc('0x1e')]=_0x482d37;if(_0x4f0593['query'][_0xa1bc('0x3c')]){_0x3500d0[_0xa1bc('0x3d')]=[{'all':!![]}];}return db['Tag'][_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='Tags';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['Tag'][_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 _0xc368=['error','name','map','Tag','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','includeAll','include','rows','catch','params','keys','length','options','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Tags','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','destroy','then','UserProfileResource'];(function(_0x5c620a,_0x200a52){var _0x5e6424=function(_0x34ae11){while(--_0x34ae11){_0x5c620a['push'](_0x5c620a['shift']());}};_0x5e6424(++_0x200a52);}(_0xc368,0x7b));var _0x8c36=function(_0x33c634,_0x49af82){_0x33c634=_0x33c634-0x0;var _0x2598fe=_0xc368[_0x33c634];return _0x2598fe;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8c36('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8c36('0x1'));var rp=require(_0x8c36('0x2'));var moment=require(_0x8c36('0x3'));var BPromise=require(_0x8c36('0x4'));var Mustache=require(_0x8c36('0x5'));var util=require('util');var path=require(_0x8c36('0x6'));var sox=require(_0x8c36('0x7'));var csv=require(_0x8c36('0x8'));var ejs=require(_0x8c36('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8c36('0xa'));var crypto=require(_0x8c36('0xb'));var jsforce=require(_0x8c36('0xc'));var deskjs=require(_0x8c36('0xd'));var toCsv=require(_0x8c36('0x8'));var querystring=require(_0x8c36('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8c36('0xf'));var as=require(_0x8c36('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8c36('0x11'))(_0x8c36('0x12'));var utils=require(_0x8c36('0x13'));var config=require(_0x8c36('0x14'));var licenseUtil=require(_0x8c36('0x15'));var db=require(_0x8c36('0x16'))['db'];function respondWithStatusCode(_0xa09884,_0x23eb71){_0x23eb71=_0x23eb71||0xcc;return function(_0x205d5c){if(_0x205d5c){return _0xa09884[_0x8c36('0x17')](_0x23eb71);}return _0xa09884[_0x8c36('0x18')](_0x23eb71)[_0x8c36('0x19')]();};}function respondWithResult(_0x3c824b,_0x220f18){_0x220f18=_0x220f18||0xc8;return function(_0x5dfcd5){if(_0x5dfcd5){return _0x3c824b[_0x8c36('0x18')](_0x220f18)['json'](_0x5dfcd5);}};}function respondWithFilteredResult(_0xea7509,_0x3f83aa){return function(_0x29e791){if(_0x29e791){var _0x1fc68e=typeof _0x3f83aa[_0x8c36('0x1a')]===_0x8c36('0x1b')&&typeof _0x3f83aa[_0x8c36('0x1c')]===_0x8c36('0x1b');var _0x30229e=_0x29e791['count'];var _0x2be9b0=_0x1fc68e?0x0:_0x3f83aa[_0x8c36('0x1a')];var _0x47832a=_0x1fc68e?_0x29e791[_0x8c36('0x1d')]:_0x3f83aa[_0x8c36('0x1a')]+_0x3f83aa['limit'];var _0x15100f;if(_0x47832a>=_0x30229e){_0x47832a=_0x30229e;_0x15100f=0xc8;}else{_0x15100f=0xce;}_0xea7509[_0x8c36('0x18')](_0x15100f);return _0xea7509[_0x8c36('0x1e')](_0x8c36('0x1f'),_0x2be9b0+'-'+_0x47832a+'/'+_0x30229e)[_0x8c36('0x20')](_0x29e791);}return null;};}function patchUpdates(_0x2b07ad){return function(_0xfb9763){try{jsonpatch[_0x8c36('0x21')](_0xfb9763,_0x2b07ad,!![]);}catch(_0x153735){return BPromise[_0x8c36('0x22')](_0x153735);}return _0xfb9763[_0x8c36('0x23')]();};}function saveUpdates(_0x14ee6b,_0x46645d){return function(_0x51fd6c){if(_0x51fd6c){return _0x51fd6c['update'](_0x14ee6b)['then'](function(_0x55b844){return _0x55b844;});}return null;};}function removeEntity(_0x2269f5,_0x7effb8){return function(_0x2088aa){if(_0x2088aa){return _0x2088aa[_0x8c36('0x24')]()[_0x8c36('0x25')](function(){var _0x27c0df=_0x2088aa['get']({'plain':!![]});var _0x1d39ca='Tags';return db[_0x8c36('0x26')]['destroy']({'where':{'type':_0x1d39ca,'resourceId':_0x27c0df['id']}})[_0x8c36('0x25')](function(){return _0x2088aa;});})[_0x8c36('0x25')](function(){_0x2269f5[_0x8c36('0x18')](0xcc)[_0x8c36('0x19')]();});}};}function handleEntityNotFound(_0x50aa48,_0x55cbfb){return function(_0x7e7e56){if(!_0x7e7e56){_0x50aa48[_0x8c36('0x17')](0x194);}return _0x7e7e56;};}function handleError(_0x5ad933,_0x4fc3ba){_0x4fc3ba=_0x4fc3ba||0x1f4;return function(_0x418663){logger[_0x8c36('0x27')](_0x418663['stack']);if(_0x418663[_0x8c36('0x28')]){delete _0x418663[_0x8c36('0x28')];}_0x5ad933[_0x8c36('0x18')](_0x4fc3ba)['send'](_0x418663);};}exports['index']=function(_0x46b72f,_0x1531fc){var _0x3d7056={},_0x192ce3={},_0x3ae970={'count':0x0,'rows':[]};var _0x2e8855=_[_0x8c36('0x29')](db[_0x8c36('0x2a')][_0x8c36('0x2b')],function(_0x2d6476){return{'name':_0x2d6476[_0x8c36('0x2c')],'type':_0x2d6476[_0x8c36('0x2d')][_0x8c36('0x2e')]};});_0x192ce3[_0x8c36('0x2f')]=_[_0x8c36('0x29')](_0x2e8855,_0x8c36('0x28'));_0x192ce3[_0x8c36('0x30')]=_['keys'](_0x46b72f['query']);_0x192ce3['filters']=_[_0x8c36('0x31')](_0x192ce3[_0x8c36('0x2f')],_0x192ce3[_0x8c36('0x30')]);_0x3d7056[_0x8c36('0x32')]=_[_0x8c36('0x31')](_0x192ce3[_0x8c36('0x2f')],qs[_0x8c36('0x33')](_0x46b72f['query'][_0x8c36('0x33')]));_0x3d7056['attributes']=_0x3d7056[_0x8c36('0x32')]['length']?_0x3d7056[_0x8c36('0x32')]:_0x192ce3[_0x8c36('0x2f')];if(!_0x46b72f[_0x8c36('0x30')]['hasOwnProperty'](_0x8c36('0x34'))){_0x3d7056[_0x8c36('0x1c')]=qs[_0x8c36('0x1c')](_0x46b72f[_0x8c36('0x30')][_0x8c36('0x1c')]);_0x3d7056[_0x8c36('0x1a')]=qs[_0x8c36('0x1a')](_0x46b72f[_0x8c36('0x30')][_0x8c36('0x1a')]);}_0x3d7056[_0x8c36('0x35')]=qs[_0x8c36('0x36')](_0x46b72f[_0x8c36('0x30')][_0x8c36('0x36')]);_0x3d7056[_0x8c36('0x37')]=qs[_0x8c36('0x38')](_[_0x8c36('0x39')](_0x46b72f[_0x8c36('0x30')],_0x192ce3['filters']),_0x2e8855);if(_0x46b72f[_0x8c36('0x30')]['filter']){_0x3d7056[_0x8c36('0x37')]=_[_0x8c36('0x3a')](_0x3d7056[_0x8c36('0x37')],{'$or':_[_0x8c36('0x29')](_0x2e8855,function(_0x4da574){if(_0x4da574['type']!==_0x8c36('0x3b')){var _0x15a553={};_0x15a553[_0x4da574[_0x8c36('0x28')]]={'$like':'%'+_0x46b72f['query']['filter']+'%'};return _0x15a553;}})});}_0x3d7056=_[_0x8c36('0x3a')]({},_0x3d7056,_0x46b72f['options']);var _0x568290={'where':_0x3d7056[_0x8c36('0x37')]};return db[_0x8c36('0x2a')][_0x8c36('0x1d')](_0x568290)[_0x8c36('0x25')](function(_0x2a0272){_0x3ae970[_0x8c36('0x1d')]=_0x2a0272;if(_0x46b72f[_0x8c36('0x30')][_0x8c36('0x3c')]){_0x3d7056[_0x8c36('0x3d')]=[{'all':!![]}];}return db[_0x8c36('0x2a')]['findAll'](_0x3d7056);})[_0x8c36('0x25')](function(_0x24505c){_0x3ae970[_0x8c36('0x3e')]=_0x24505c;return _0x3ae970;})[_0x8c36('0x25')](respondWithFilteredResult(_0x1531fc,_0x3d7056))[_0x8c36('0x3f')](handleError(_0x1531fc,null));};exports['show']=function(_0xb1f8ac,_0x3dde7b){var _0x31699c={'raw':!![],'where':{'id':_0xb1f8ac[_0x8c36('0x40')]['id']}},_0x18e28e={};_0x18e28e[_0x8c36('0x2f')]=_['keys'](db[_0x8c36('0x2a')][_0x8c36('0x2b')]);_0x18e28e[_0x8c36('0x30')]=_[_0x8c36('0x41')](_0xb1f8ac[_0x8c36('0x30')]);_0x18e28e[_0x8c36('0x38')]=_[_0x8c36('0x31')](_0x18e28e['model'],_0x18e28e[_0x8c36('0x30')]);_0x31699c[_0x8c36('0x32')]=_[_0x8c36('0x31')](_0x18e28e[_0x8c36('0x2f')],qs[_0x8c36('0x33')](_0xb1f8ac[_0x8c36('0x30')][_0x8c36('0x33')]));_0x31699c[_0x8c36('0x32')]=_0x31699c[_0x8c36('0x32')][_0x8c36('0x42')]?_0x31699c[_0x8c36('0x32')]:_0x18e28e[_0x8c36('0x2f')];if(_0xb1f8ac['query']['includeAll']){_0x31699c[_0x8c36('0x3d')]=[{'all':!![]}];}_0x31699c=_[_0x8c36('0x3a')]({},_0x31699c,_0xb1f8ac[_0x8c36('0x43')]);return db[_0x8c36('0x2a')]['find'](_0x31699c)[_0x8c36('0x25')](handleEntityNotFound(_0x3dde7b,null))[_0x8c36('0x25')](respondWithResult(_0x3dde7b,null))['catch'](handleError(_0x3dde7b,null));};exports['create']=function(_0x4edf8e,_0xb4ebae){return db[_0x8c36('0x2a')][_0x8c36('0x44')](_0x4edf8e[_0x8c36('0x45')],{})[_0x8c36('0x25')](function(_0x2778b3){var _0x4dd393=_0x4edf8e[_0x8c36('0x46')][_0x8c36('0x47')]({'plain':!![]});if(!_0x4dd393)throw new Error(_0x8c36('0x48'));if(_0x4dd393[_0x8c36('0x49')]==='user'){var _0x5e668d=_0x2778b3['get']({'plain':!![]});var _0x3887e4=_0x8c36('0x4a');return db[_0x8c36('0x4b')][_0x8c36('0x4c')]({'where':{'name':_0x3887e4,'userProfileId':_0x4dd393[_0x8c36('0x4d')]},'raw':!![]})[_0x8c36('0x25')](function(_0x43b5e2){if(_0x43b5e2&&_0x43b5e2[_0x8c36('0x4e')]===0x0){return db[_0x8c36('0x26')]['create']({'name':_0x5e668d['name'],'resourceId':_0x5e668d['id'],'type':_0x43b5e2[_0x8c36('0x28')],'sectionId':_0x43b5e2['id']},{})['then'](function(){return _0x2778b3;});}else{return _0x2778b3;}})['catch'](function(_0x9955bc){logger['error'](_0x8c36('0x4f'),_0x9955bc);throw _0x9955bc;});}return _0x2778b3;})[_0x8c36('0x25')](respondWithResult(_0xb4ebae,0xc9))['catch'](handleError(_0xb4ebae,null));};exports[_0x8c36('0x50')]=function(_0x5af860,_0x31fbde){if(_0x5af860[_0x8c36('0x45')]['id']){delete _0x5af860[_0x8c36('0x45')]['id'];}return db['Tag'][_0x8c36('0x4c')]({'where':{'id':_0x5af860[_0x8c36('0x40')]['id']}})[_0x8c36('0x25')](handleEntityNotFound(_0x31fbde,null))[_0x8c36('0x25')](saveUpdates(_0x5af860[_0x8c36('0x45')],null))[_0x8c36('0x25')](respondWithResult(_0x31fbde,null))[_0x8c36('0x3f')](handleError(_0x31fbde,null));};exports[_0x8c36('0x24')]=function(_0x20f1d9,_0x4cd57c){return db['Tag']['find']({'where':{'id':_0x20f1d9[_0x8c36('0x40')]['id']}})['then'](handleEntityNotFound(_0x4cd57c,null))['then'](removeEntity(_0x4cd57c,null))[_0x8c36('0x3f')](handleError(_0x4cd57c,null));};
\ No newline at end of file
index 3b5d71e..9e67b93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9585=['request-promise','./tag.attributes','exports','Tag','tools_tags','util','../../config/logger','api','moment','bluebird'];(function(_0x221df3,_0x58bc32){var _0x2cc8d6=function(_0x463839){while(--_0x463839){_0x221df3['push'](_0x221df3['shift']());}};_0x2cc8d6(++_0x58bc32);}(_0x9585,0x195));var _0x5958=function(_0x5704fb,_0x26901d){_0x5704fb=_0x5704fb-0x0;var _0x2ecb7c=_0x9585[_0x5704fb];return _0x2ecb7c;};'use strict';var _=require('lodash');var util=require(_0x5958('0x0'));var logger=require(_0x5958('0x1'))(_0x5958('0x2'));var moment=require(_0x5958('0x3'));var BPromise=require(_0x5958('0x4'));var rp=require(_0x5958('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5958('0x6'));module[_0x5958('0x7')]=function(_0x433c1d,_0x35b71f){return _0x433c1d['define'](_0x5958('0x8'),attributes,{'tableName':_0x5958('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7ebb=['Tag','tools_tags','lodash','moment','bluebird','request-promise','rimraf','../../config/environment','./tag.attributes','define'];(function(_0xeb1abe,_0x93f281){var _0x4ffb04=function(_0x4f0c04){while(--_0x4f0c04){_0xeb1abe['push'](_0xeb1abe['shift']());}};_0x4ffb04(++_0x93f281);}(_0x7ebb,0x1e2));var _0xb7eb=function(_0x1cb574,_0x54ed8a){_0x1cb574=_0x1cb574-0x0;var _0x1c918e=_0x7ebb[_0x1cb574];return _0x1c918e;};'use strict';var _=require(_0xb7eb('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb7eb('0x1'));var BPromise=require(_0xb7eb('0x2'));var rp=require(_0xb7eb('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb7eb('0x4'));var config=require(_0xb7eb('0x5'));var attributes=require(_0xb7eb('0x6'));module['exports']=function(_0x4c4087,_0x554636){return _0x4c4087[_0xb7eb('0x7')](_0xb7eb('0x8'),attributes,{'tableName':_0xb7eb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd59ae0..13b0103 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e5c=['info','Tag,\x20%s,\x20%s','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then'];(function(_0x498413,_0x3314f){var _0x2ae70b=function(_0x2565c3){while(--_0x2565c3){_0x498413['push'](_0x498413['shift']());}};_0x2ae70b(++_0x3314f);}(_0x3e5c,0x9a));var _0xc3e5=function(_0x3c80f1,_0x2e02f3){_0x3c80f1=_0x3c80f1-0x0;var _0x352444=_0x3e5c[_0x3c80f1];return _0x352444;};'use strict';var _=require(_0xc3e5('0x0'));var util=require(_0xc3e5('0x1'));var moment=require(_0xc3e5('0x2'));var BPromise=require(_0xc3e5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc3e5('0x4'));var db=require(_0xc3e5('0x5'))['db'];var utils=require(_0xc3e5('0x6'));var logger=require(_0xc3e5('0x7'))(_0xc3e5('0x8'));var config=require(_0xc3e5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc3e5('0xa')][_0xc3e5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d6089,_0xcbbec0,_0x2d580e){return new BPromise(function(_0x4864a2,_0x196f3a){return client[_0xc3e5('0xc')](_0x2d6089,_0x2d580e)[_0xc3e5('0xd')](function(_0x19813b){logger[_0xc3e5('0xe')](_0xc3e5('0xf'),_0xcbbec0,_0xc3e5('0x10'));logger['debug'](_0xc3e5('0x11'),_0xcbbec0,_0xc3e5('0x10'),JSON[_0xc3e5('0x12')](_0x19813b));if(_0x19813b[_0xc3e5('0x13')]){if(_0x19813b['error'][_0xc3e5('0x14')]===0x1f4){logger[_0xc3e5('0x13')](_0xc3e5('0xf'),_0xcbbec0,_0x19813b[_0xc3e5('0x13')][_0xc3e5('0x15')]);return _0x196f3a(_0x19813b[_0xc3e5('0x13')]['message']);}logger['error']('Tag,\x20%s,\x20%s',_0xcbbec0,_0x19813b[_0xc3e5('0x13')]['message']);return _0x4864a2(_0x19813b[_0xc3e5('0x13')][_0xc3e5('0x15')]);}else{logger['info'](_0xc3e5('0xf'),_0xcbbec0,_0xc3e5('0x10'));_0x4864a2(_0x19813b[_0xc3e5('0x16')][_0xc3e5('0x15')]);}})[_0xc3e5('0x17')](function(_0x47cfd8){logger[_0xc3e5('0x13')](_0xc3e5('0xf'),_0xcbbec0,_0x47cfd8);_0x196f3a(_0x47cfd8);});});}
\ No newline at end of file
+var _0x6308=['stringify','error','code','message','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','Tag,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6308,0x1f2));var _0x8630=function(_0x485b5a,_0x2b289b){_0x485b5a=_0x485b5a-0x0;var _0xd2b34d=_0x6308[_0x485b5a];return _0xd2b34d;};'use strict';var _=require(_0x8630('0x0'));var util=require('util');var moment=require(_0x8630('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8630('0x2'));var db=require(_0x8630('0x3'))['db'];var utils=require(_0x8630('0x4'));var logger=require(_0x8630('0x5'))(_0x8630('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8630('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x337086,_0x3d5a10,_0x1bcfea){return new BPromise(function(_0x2b87ea,_0x10cc17){return client[_0x8630('0x8')](_0x337086,_0x1bcfea)['then'](function(_0x8b3652){logger['info'](_0x8630('0x9'),_0x3d5a10,_0x8630('0xa'));logger[_0x8630('0xb')]('Tag,\x20%s,\x20%s,\x20%s',_0x3d5a10,_0x8630('0xa'),JSON[_0x8630('0xc')](_0x8b3652));if(_0x8b3652[_0x8630('0xd')]){if(_0x8b3652['error'][_0x8630('0xe')]===0x1f4){logger[_0x8630('0xd')]('Tag,\x20%s,\x20%s',_0x3d5a10,_0x8b3652['error'][_0x8630('0xf')]);return _0x10cc17(_0x8b3652[_0x8630('0xd')]['message']);}logger[_0x8630('0xd')]('Tag,\x20%s,\x20%s',_0x3d5a10,_0x8b3652[_0x8630('0xd')]['message']);return _0x2b87ea(_0x8b3652[_0x8630('0xd')]['message']);}else{logger['info'](_0x8630('0x9'),_0x3d5a10,_0x8630('0xa'));_0x2b87ea(_0x8b3652['result']['message']);}})[_0x8630('0x10')](function(_0x547667){logger[_0x8630('0xd')](_0x8630('0x9'),_0x3d5a10,_0x547667);_0x10cc17(_0x547667);});});}
\ No newline at end of file
index 423a786..7821b10 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(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'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(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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 8415118..eb06372 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['name','exports','STRING'];(function(_0x47eb87,_0x49d6cf){var _0x5a7aa6=function(_0x229d62){while(--_0x229d62){_0x47eb87['push'](_0x47eb87['shift']());}};_0x5a7aa6(++_0x49d6cf);}(_0x2032,0xd9));var _0x2203=function(_0x3856cf,_0x5baeb2){_0x3856cf=_0x3856cf-0x0;var _0xc8d8cb=_0x2032[_0x3856cf];return _0xc8d8cb;};'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 _0x2032=['name','exports','STRING'];(function(_0x29d6c3,_0x266b3b){var _0x58e011=function(_0x5b87f9){while(--_0x5b87f9){_0x29d6c3['push'](_0x29d6c3['shift']());}};_0x58e011(++_0x266b3b);}(_0x2032,0xd9));var _0x2203=function(_0x30b3c6,_0xc731e7){_0x30b3c6=_0x30b3c6-0x0;var _0x470009=_0x2032[_0x30b3c6];return _0x470009;};'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
index f297bfe..296e3d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a81=['all','spread','removeAgents','transaction','parse','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','get','destroy','name','send','index','Team','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','VIRTUAL','merge','includeAll','include','rows','show','params','length','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getQueues','findOne','channel','isValidChannel','ValidationError','toLowerCase','Queue','Queues','addQueues','Sequelize','Unknown\x20channel','capitalize','ids','removeQueues','remove','addAgents','Mail','Sms','Fax','Openchannel','Whatsapp','sequelize','Voice','through','QueueId','TeamVoiceQueue','penalty','User','findOrCreate','emit','Queue:save','voicePause','interface','UserVoiceQueueRt','isNil','SIP/%s'];(function(_0x22bc09,_0x516bec){var _0x441ba2=function(_0x594288){while(--_0x594288){_0x22bc09['push'](_0x22bc09['shift']());}};_0x441ba2(++_0x516bec);}(_0x1a81,0x19b));var _0x11a8=function(_0x2085f3,_0x13c570){_0x2085f3=_0x2085f3-0x0;var _0x189d5d=_0x1a81[_0x2085f3];return _0x189d5d;};'use strict';var emlformat=require(_0x11a8('0x0'));var rimraf=require(_0x11a8('0x1'));var zipdir=require(_0x11a8('0x2'));var jsonpatch=require(_0x11a8('0x3'));var rp=require(_0x11a8('0x4'));var moment=require(_0x11a8('0x5'));var BPromise=require(_0x11a8('0x6'));var Mustache=require(_0x11a8('0x7'));var util=require(_0x11a8('0x8'));var path=require(_0x11a8('0x9'));var sox=require(_0x11a8('0xa'));var csv=require(_0x11a8('0xb'));var ejs=require(_0x11a8('0xc'));var fs=require('fs');var fs_extra=require(_0x11a8('0xd'));var _=require(_0x11a8('0xe'));var squel=require(_0x11a8('0xf'));var crypto=require('crypto');var jsforce=require(_0x11a8('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x11a8('0xb'));var querystring=require(_0x11a8('0x11'));var Papa=require(_0x11a8('0x12'));var Redis=require('ioredis');var authService=require(_0x11a8('0x13'));var qs=require(_0x11a8('0x14'));var as=require(_0x11a8('0x15'));var hardwareService=require(_0x11a8('0x16'));var logger=require(_0x11a8('0x17'))(_0x11a8('0x18'));var utils=require(_0x11a8('0x19'));var config=require(_0x11a8('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x11a8('0x1b'))['db'];config['redis']=_[_0x11a8('0x1c')](config[_0x11a8('0x1d')],{'host':_0x11a8('0x1e'),'port':0x18eb});var socket=require(_0x11a8('0x1f'))(new Redis(config[_0x11a8('0x1d')]));require(_0x11a8('0x20'))[_0x11a8('0x21')](socket);function respondWithStatusCode(_0x9948c7,_0x598cec){_0x598cec=_0x598cec||0xcc;return function(_0x6e9654){if(_0x6e9654){return _0x9948c7[_0x11a8('0x22')](_0x598cec);}return _0x9948c7[_0x11a8('0x23')](_0x598cec)[_0x11a8('0x24')]();};}function respondWithResult(_0x43cb29,_0x78748c){_0x78748c=_0x78748c||0xc8;return function(_0x2b3f1f){if(_0x2b3f1f){return _0x43cb29['status'](_0x78748c)[_0x11a8('0x25')](_0x2b3f1f);}};}function respondWithFilteredResult(_0x1cae52,_0x5ebd86){return function(_0x2b52dd){if(_0x2b52dd){var _0x152743=typeof _0x5ebd86[_0x11a8('0x26')]===_0x11a8('0x27')&&typeof _0x5ebd86[_0x11a8('0x28')]==='undefined';var _0x11a42c=_0x2b52dd[_0x11a8('0x29')];var _0x344d85=_0x152743?0x0:_0x5ebd86[_0x11a8('0x26')];var _0x2f8bcf=_0x152743?_0x2b52dd[_0x11a8('0x29')]:_0x5ebd86[_0x11a8('0x26')]+_0x5ebd86[_0x11a8('0x28')];var _0x342f51;if(_0x2f8bcf>=_0x11a42c){_0x2f8bcf=_0x11a42c;_0x342f51=0xc8;}else{_0x342f51=0xce;}_0x1cae52[_0x11a8('0x23')](_0x342f51);return _0x1cae52['set'](_0x11a8('0x2a'),_0x344d85+'-'+_0x2f8bcf+'/'+_0x11a42c)[_0x11a8('0x25')](_0x2b52dd);}return null;};}function patchUpdates(_0x157bcf){return function(_0x293e07){try{jsonpatch[_0x11a8('0x2b')](_0x293e07,_0x157bcf,!![]);}catch(_0x564725){return BPromise[_0x11a8('0x2c')](_0x564725);}return _0x293e07[_0x11a8('0x2d')]();};}function saveUpdates(_0x223884,_0x32afc6){return function(_0x35aca7){if(_0x35aca7){return _0x35aca7['update'](_0x223884)[_0x11a8('0x2e')](function(_0x2edff2){return _0x2edff2;});}return null;};}function removeEntity(_0x550523,_0x37c5ea){return function(_0x903f33){if(_0x903f33){return _0x903f33['destroy']()[_0x11a8('0x2e')](function(){var _0x56df84=_0x903f33[_0x11a8('0x2f')]({'plain':!![]});var _0x1b8c9c='Teams';return db['UserProfileResource'][_0x11a8('0x30')]({'where':{'type':_0x1b8c9c,'resourceId':_0x56df84['id']}})[_0x11a8('0x2e')](function(){return _0x903f33;});})[_0x11a8('0x2e')](function(){_0x550523['status'](0xcc)[_0x11a8('0x24')]();});}};}function handleEntityNotFound(_0x52923c,_0x557829){return function(_0xae0df8){if(!_0xae0df8){_0x52923c['sendStatus'](0x194);}return _0xae0df8;};}function handleError(_0x26d6b6,_0x223960){_0x223960=_0x223960||0x1f4;return function(_0x300a99){logger['error'](_0x300a99['stack']);if(_0x300a99[_0x11a8('0x31')]){delete _0x300a99[_0x11a8('0x31')];}_0x26d6b6['status'](_0x223960)[_0x11a8('0x32')](_0x300a99);};}exports[_0x11a8('0x33')]=function(_0x48696d,_0x1fc63c){var _0x338dbe={},_0x554dc7={},_0x2ce12a={'count':0x0,'rows':[]};var _0x1e0668=_['map'](db[_0x11a8('0x34')][_0x11a8('0x35')],function(_0x4c9d21){return{'name':_0x4c9d21[_0x11a8('0x36')],'type':_0x4c9d21[_0x11a8('0x37')]['key']};});_0x554dc7[_0x11a8('0x38')]=_['map'](_0x1e0668,_0x11a8('0x31'));_0x554dc7[_0x11a8('0x39')]=_[_0x11a8('0x3a')](_0x48696d['query']);_0x554dc7[_0x11a8('0x3b')]=_['intersection'](_0x554dc7[_0x11a8('0x38')],_0x554dc7[_0x11a8('0x39')]);_0x338dbe[_0x11a8('0x3c')]=_[_0x11a8('0x3d')](_0x554dc7[_0x11a8('0x38')],qs[_0x11a8('0x3e')](_0x48696d['query'][_0x11a8('0x3e')]));_0x338dbe[_0x11a8('0x3c')]=_0x338dbe[_0x11a8('0x3c')]['length']?_0x338dbe[_0x11a8('0x3c')]:_0x554dc7[_0x11a8('0x38')];if(!_0x48696d['query'][_0x11a8('0x3f')](_0x11a8('0x40'))){_0x338dbe['limit']=qs[_0x11a8('0x28')](_0x48696d[_0x11a8('0x39')][_0x11a8('0x28')]);_0x338dbe[_0x11a8('0x26')]=qs[_0x11a8('0x26')](_0x48696d['query'][_0x11a8('0x26')]);}_0x338dbe[_0x11a8('0x41')]=qs[_0x11a8('0x42')](_0x48696d[_0x11a8('0x39')]['sort']);_0x338dbe[_0x11a8('0x43')]=qs[_0x11a8('0x3b')](_[_0x11a8('0x44')](_0x48696d['query'],_0x554dc7['filters']),_0x1e0668);if(_0x48696d[_0x11a8('0x39')][_0x11a8('0x45')]){_0x338dbe[_0x11a8('0x43')]=_['merge'](_0x338dbe[_0x11a8('0x43')],{'$or':_[_0x11a8('0x46')](_0x1e0668,function(_0x2d2f09){if(_0x2d2f09['type']!==_0x11a8('0x47')){var _0x130fc8={};_0x130fc8[_0x2d2f09[_0x11a8('0x31')]]={'$like':'%'+_0x48696d[_0x11a8('0x39')]['filter']+'%'};return _0x130fc8;}})});}_0x338dbe=_[_0x11a8('0x48')]({},_0x338dbe,_0x48696d['options']);var _0x140f41={'where':_0x338dbe[_0x11a8('0x43')]};return db['Team'][_0x11a8('0x29')](_0x140f41)[_0x11a8('0x2e')](function(_0x2b2d6c){_0x2ce12a['count']=_0x2b2d6c;if(_0x48696d['query'][_0x11a8('0x49')]){_0x338dbe[_0x11a8('0x4a')]=[{'all':!![]}];}return db[_0x11a8('0x34')]['findAll'](_0x338dbe);})['then'](function(_0x1780aa){_0x2ce12a[_0x11a8('0x4b')]=_0x1780aa;return _0x2ce12a;})[_0x11a8('0x2e')](respondWithFilteredResult(_0x1fc63c,_0x338dbe))['catch'](handleError(_0x1fc63c,null));};exports[_0x11a8('0x4c')]=function(_0x2ab44c,_0x624d7b){var _0x58f7a0={'raw':![],'where':{'id':_0x2ab44c[_0x11a8('0x4d')]['id']}},_0x424555={};_0x424555[_0x11a8('0x38')]=_[_0x11a8('0x3a')](db[_0x11a8('0x34')]['rawAttributes']);_0x424555['query']=_['keys'](_0x2ab44c[_0x11a8('0x39')]);_0x424555[_0x11a8('0x3b')]=_['intersection'](_0x424555[_0x11a8('0x38')],_0x424555[_0x11a8('0x39')]);_0x58f7a0[_0x11a8('0x3c')]=_['intersection'](_0x424555['model'],qs[_0x11a8('0x3e')](_0x2ab44c[_0x11a8('0x39')][_0x11a8('0x3e')]));_0x58f7a0[_0x11a8('0x3c')]=_0x58f7a0[_0x11a8('0x3c')][_0x11a8('0x4e')]?_0x58f7a0[_0x11a8('0x3c')]:_0x424555[_0x11a8('0x38')];if(_0x2ab44c[_0x11a8('0x39')][_0x11a8('0x49')]){_0x58f7a0[_0x11a8('0x4a')]=[{'all':!![]}];}_0x58f7a0=_[_0x11a8('0x48')]({},_0x58f7a0,_0x2ab44c[_0x11a8('0x4f')]);return db['Team'][_0x11a8('0x50')](_0x58f7a0)['then'](handleEntityNotFound(_0x624d7b,null))['then'](respondWithResult(_0x624d7b,null))[_0x11a8('0x51')](handleError(_0x624d7b,null));};exports['create']=function(_0x3887a0,_0x27ea11){return db[_0x11a8('0x34')][_0x11a8('0x52')](_0x3887a0[_0x11a8('0x53')],{})['then'](function(_0x585826){var _0x4b43b5=_0x3887a0[_0x11a8('0x54')][_0x11a8('0x2f')]({'plain':!![]});if(!_0x4b43b5)throw new Error(_0x11a8('0x55'));if(_0x4b43b5[_0x11a8('0x56')]===_0x11a8('0x54')){var _0x46ce89=_0x585826[_0x11a8('0x2f')]({'plain':!![]});var _0x45d8d7=_0x11a8('0x57');return db[_0x11a8('0x58')][_0x11a8('0x50')]({'where':{'name':_0x45d8d7,'userProfileId':_0x4b43b5['userProfileId']},'raw':!![]})[_0x11a8('0x2e')](function(_0x5d59e9){if(_0x5d59e9&&_0x5d59e9[_0x11a8('0x59')]===0x0){return db[_0x11a8('0x5a')][_0x11a8('0x52')]({'name':_0x46ce89['name'],'resourceId':_0x46ce89['id'],'type':_0x5d59e9[_0x11a8('0x31')],'sectionId':_0x5d59e9['id']},{})['then'](function(){return _0x585826;});}else{return _0x585826;}})['catch'](function(_0x2e4e6c){logger[_0x11a8('0x5b')](_0x11a8('0x5c'),_0x2e4e6c);throw _0x2e4e6c;});}return _0x585826;})[_0x11a8('0x2e')](respondWithResult(_0x27ea11,0xc9))[_0x11a8('0x51')](handleError(_0x27ea11,null));};exports['update']=function(_0x11796a,_0x32a3d7){if(_0x11796a['body']['id']){delete _0x11796a['body']['id'];}return db[_0x11a8('0x34')]['find']({'where':{'id':_0x11796a[_0x11a8('0x4d')]['id']}})[_0x11a8('0x2e')](handleEntityNotFound(_0x32a3d7,null))[_0x11a8('0x2e')](saveUpdates(_0x11796a['body'],null))['then'](respondWithResult(_0x32a3d7,null))[_0x11a8('0x51')](handleError(_0x32a3d7,null));};exports[_0x11a8('0x30')]=function(_0x5b9d2b,_0x27af45){return db[_0x11a8('0x34')][_0x11a8('0x50')]({'where':{'id':_0x5b9d2b['params']['id']}})[_0x11a8('0x2e')](handleEntityNotFound(_0x27af45,null))['then'](removeEntity(_0x27af45,null))['catch'](handleError(_0x27af45,null));};exports[_0x11a8('0x5d')]=function(_0x3ef9f9,_0x123d92,_0x4ffea1){return db['Team'][_0x11a8('0x5e')]({'where':{'id':_0x3ef9f9['params']['id']}})[_0x11a8('0x2e')](handleEntityNotFound(_0x123d92,null))[_0x11a8('0x2e')](function(_0x364111){if(!_0x3ef9f9[_0x11a8('0x39')][_0x11a8('0x5f')]||!utils[_0x11a8('0x60')](_0x3ef9f9['query'][_0x11a8('0x5f')])){throw new db['Sequelize'][(_0x11a8('0x61'))]('Unknown\x20channel');}var _0x237244={};var _0x7ead23={};_0x7ead23['model']=_[_0x11a8('0x3a')](db[_['capitalize'](_0x3ef9f9['query'][_0x11a8('0x5f')][_0x11a8('0x62')]())+_0x11a8('0x63')][_0x11a8('0x35')]);_0x7ead23['query']=_[_0x11a8('0x3a')](_0x3ef9f9['query']);_0x7ead23[_0x11a8('0x3b')]=_[_0x11a8('0x3d')](_0x7ead23[_0x11a8('0x38')],_0x7ead23[_0x11a8('0x39')]);_0x237244[_0x11a8('0x3c')]=_[_0x11a8('0x3d')](_0x7ead23[_0x11a8('0x38')],qs[_0x11a8('0x3e')](_0x3ef9f9[_0x11a8('0x39')][_0x11a8('0x3e')]));_0x237244[_0x11a8('0x3c')]=_0x237244[_0x11a8('0x3c')][_0x11a8('0x4e')]?_0x237244[_0x11a8('0x3c')]:_0x7ead23[_0x11a8('0x38')];_0x237244[_0x11a8('0x28')]=qs[_0x11a8('0x28')](_0x3ef9f9['query'][_0x11a8('0x28')]);_0x237244['offset']=qs['offset'](_0x3ef9f9['query'][_0x11a8('0x26')]);_0x237244[_0x11a8('0x41')]=qs['sort'](_0x3ef9f9[_0x11a8('0x39')]['sort']);_0x237244[_0x11a8('0x43')]=qs['filters'](_['pick'](_0x3ef9f9['query'],_0x7ead23[_0x11a8('0x3b')]));_0x237244=_[_0x11a8('0x48')]({},_0x237244,_0x3ef9f9[_0x11a8('0x4f')]);return _0x364111[_0x11a8('0x2f')+_['capitalize'](_0x3ef9f9[_0x11a8('0x39')]['channel'][_0x11a8('0x62')]())+_0x11a8('0x64')](_0x237244);})['then'](respondWithResult(_0x123d92,null))[_0x11a8('0x51')](handleError(_0x123d92,null));};exports[_0x11a8('0x65')]=function(_0x5260d5,_0x1cebfb,_0x2dbdbe){return db['Team']['findOne']({'where':{'id':_0x5260d5[_0x11a8('0x4d')]['id']}})[_0x11a8('0x2e')](function(_0x2a47df){if(_0x2a47df){if(!_0x5260d5[_0x11a8('0x53')][_0x11a8('0x5f')]||!utils['isValidChannel'](_0x5260d5[_0x11a8('0x53')]['channel'])){throw new db[(_0x11a8('0x66'))]['ValidationError'](_0x11a8('0x67'));}return _0x2a47df['add'+_[_0x11a8('0x68')](_0x5260d5[_0x11a8('0x53')][_0x11a8('0x5f')][_0x11a8('0x62')]())+_0x11a8('0x64')](_0x5260d5[_0x11a8('0x53')][_0x11a8('0x69')]);}return null;})[_0x11a8('0x2e')](handleEntityNotFound(_0x1cebfb,null))['then'](respondWithStatusCode(_0x1cebfb,null))['catch'](handleError(_0x1cebfb,null));};exports[_0x11a8('0x6a')]=function(_0x2ae6ff,_0x199696,_0xa22873){return db[_0x11a8('0x34')][_0x11a8('0x5e')]({'where':{'id':_0x2ae6ff['params']['id']}})['then'](function(_0x1114d5){if(_0x1114d5){if(!_0x2ae6ff[_0x11a8('0x39')]['channel']||!utils[_0x11a8('0x60')](_0x2ae6ff[_0x11a8('0x39')]['channel'])){throw new db[(_0x11a8('0x66'))][(_0x11a8('0x61'))](_0x11a8('0x67'));}return _0x1114d5[_0x11a8('0x6b')+_[_0x11a8('0x68')](_0x2ae6ff[_0x11a8('0x39')][_0x11a8('0x5f')][_0x11a8('0x62')]())+_0x11a8('0x64')](_0x2ae6ff[_0x11a8('0x39')]['ids']);}return null;})[_0x11a8('0x2e')](handleEntityNotFound(_0x199696,null))[_0x11a8('0x2e')](respondWithStatusCode(_0x199696,null))[_0x11a8('0x51')](handleError(_0x199696,null));};exports[_0x11a8('0x6c')]=function(_0x50ccf9,_0x3c7305){return db[_0x11a8('0x34')][_0x11a8('0x50')]({'where':{'id':_0x50ccf9[_0x11a8('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3c7305,null))['then'](function(_0x197152){if(_0x197152){var _0x37d532=['Voice','Chat',_0x11a8('0x6d'),_0x11a8('0x6e'),_0x11a8('0x6f'),_0x11a8('0x70'),_0x11a8('0x71')];return db[_0x11a8('0x72')]['transaction'](function(_0x1972b5){var _0x11afe7=_['map'](_0x37d532,function(_0x55bd05){var _0x54c786={'attributes':['id',_0x11a8('0x31')]};if(_0x55bd05===_0x11a8('0x73')){_0x54c786[_0x11a8('0x74')]={'attributes':['penalty']};}return _0x197152['get'+_0x55bd05+_0x11a8('0x64')](_0x54c786)['then'](function(_0x5c642c){var _0x8b3661=_[_0x11a8('0x46')](_0x5c642c,function(_0x5d88a7){var _0x4c9e9c=_['map'](_0x50ccf9['body']['ids'],function(_0x1b0285){var _0x1ddede={'where':{'UserId':_0x1b0285,[_0x55bd05+_0x11a8('0x75')]:_0x5d88a7['id']},'transaction':_0x1972b5};if(_0x55bd05==='Voice'){_0x1ddede[_0x11a8('0x1c')]={'penalty':_0x5d88a7[_0x11a8('0x76')][_0x11a8('0x77')]};}return db[_0x11a8('0x78')+_0x55bd05+_0x11a8('0x63')][_0x11a8('0x79')](_0x1ddede)[_0x11a8('0x2e')](function(){socket[_0x11a8('0x7a')]('user'+_0x55bd05+_0x11a8('0x7b'),{'UserId':_0x1b0285,[_0x55bd05+_0x11a8('0x75')]:_0x5d88a7['id']});if(_0x55bd05!==_0x11a8('0x73'))return;return db['User']['findAll']({'where':{'id':_0x50ccf9['body'][_0x11a8('0x69')],'online':0x1},'attributes':['id','name','online',_0x11a8('0x7c'),_0x11a8('0x7d')],'raw':!![]})[_0x11a8('0x2e')](function(_0xd03d23){var _0x3c7b2c=_['map'](_0xd03d23,function(_0x21b638){return db[_0x11a8('0x7e')]['upsert']({'membername':_0x21b638['name'],'UserId':_0x21b638['id'],'queue_name':_0x5d88a7['name'],'VoiceQueueId':_0x5d88a7['id'],'interface':_[_0x11a8('0x7f')](_0x21b638[_0x11a8('0x7d')])?util['format'](_0x11a8('0x80'),_0x21b638[_0x11a8('0x31')]):_0x21b638['interface'],'paused':_0x21b638[_0x11a8('0x7c')]||![],'penalty':_0x5d88a7[_0x11a8('0x76')][_0x11a8('0x77')]},{'transaction':_0x1972b5});});return Promise[_0x11a8('0x81')](_0x3c7b2c);});});});return Promise[_0x11a8('0x81')](_0x4c9e9c);});return Promise[_0x11a8('0x81')](_0x8b3661);});});return Promise[_0x11a8('0x81')](_0x11afe7)['then'](function(){return _0x197152['addAgents'](_0x50ccf9['body'][_0x11a8('0x69')],{'transaction':_0x1972b5})[_0x11a8('0x82')](function(_0x424fc0){return _0x424fc0;});});});}})[_0x11a8('0x2e')](respondWithResult(_0x3c7305,null))[_0x11a8('0x51')](handleError(_0x3c7305,null));};exports[_0x11a8('0x83')]=function(_0x10118f,_0x88057d){return db[_0x11a8('0x34')][_0x11a8('0x50')]({'where':{'id':_0x10118f['params']['id']}})['then'](handleEntityNotFound(_0x88057d,null))['then'](function(_0x471c98){if(_0x471c98){var _0x536525=['Voice','Chat',_0x11a8('0x6d'),_0x11a8('0x6e'),_0x11a8('0x6f'),_0x11a8('0x70'),_0x11a8('0x71')];return db[_0x11a8('0x72')][_0x11a8('0x84')](function(_0x313f9d){var _0x21dfc3=_[_0x11a8('0x46')](_0x536525,function(_0x1b2449){var _0x578dec={'attributes':['id',_0x11a8('0x31')]};return _0x471c98[_0x11a8('0x2f')+_0x1b2449+_0x11a8('0x64')](_0x578dec)[_0x11a8('0x2e')](function(_0x1500fb){var _0x32c4f1=_[_0x11a8('0x46')](_0x1500fb,function(_0x1e32b0){return _0x1e32b0[_0x11a8('0x83')](_0x10118f[_0x11a8('0x39')][_0x11a8('0x69')],{'transaction':_0x313f9d})[_0x11a8('0x2e')](function(){var _0x2a3aa2=JSON[_0x11a8('0x85')]('['+_0x10118f[_0x11a8('0x39')][_0x11a8('0x69')]+']');var _0x151804=_[_0x11a8('0x46')](_0x2a3aa2,function(_0x299a26){socket[_0x11a8('0x7a')](_0x11a8('0x54')+_0x1b2449+'Queue:remove',{'UserId':Number(_0x299a26),[_0x1b2449+_0x11a8('0x75')]:_0x1e32b0['id']});if(_0x1b2449!==_0x11a8('0x73'))return;return db[_0x11a8('0x7e')][_0x11a8('0x30')]({'where':{'VoiceQueueId':_0x1e32b0['id'],'UserId':_0x299a26},'transaction':_0x313f9d});});return Promise['all'](_0x151804);});});return Promise['all'](_0x32c4f1);});});return Promise['all'](_0x21dfc3)[_0x11a8('0x2e')](function(){return _0x471c98[_0x11a8('0x83')](_0x10118f[_0x11a8('0x39')]['ids'],{'transaction':_0x313f9d});});});}})[_0x11a8('0x2e')](respondWithStatusCode(_0x88057d,null))['catch'](handleError(_0x88057d,null));};exports[_0x11a8('0x86')]=function(_0x58b912,_0x30026b,_0x133785){var _0x21ae5e={};var _0x452f73={};var _0x5f1fa6;var _0x31eb2d;return db[_0x11a8('0x34')][_0x11a8('0x5e')]({'where':{'id':_0x58b912[_0x11a8('0x4d')]['id']}})[_0x11a8('0x2e')](handleEntityNotFound(_0x30026b,null))[_0x11a8('0x2e')](function(_0x5f3620){if(_0x5f3620){_0x5f1fa6=_0x5f3620;_0x452f73['model']=_[_0x11a8('0x3a')](db[_0x11a8('0x78')][_0x11a8('0x35')]);_0x452f73[_0x11a8('0x39')]=_[_0x11a8('0x3a')](_0x58b912['query']);_0x452f73[_0x11a8('0x3b')]=_[_0x11a8('0x3d')](_0x452f73['model'],_0x452f73[_0x11a8('0x39')]);_0x21ae5e['attributes']=_[_0x11a8('0x3d')](_0x452f73[_0x11a8('0x38')],qs[_0x11a8('0x3e')](_0x58b912['query'][_0x11a8('0x3e')]));_0x21ae5e['attributes']=_0x21ae5e[_0x11a8('0x3c')][_0x11a8('0x4e')]?_0x21ae5e[_0x11a8('0x3c')]:_0x452f73['model'];_0x21ae5e[_0x11a8('0x41')]=qs['sort'](_0x58b912[_0x11a8('0x39')][_0x11a8('0x42')]);_0x21ae5e[_0x11a8('0x43')]=qs[_0x11a8('0x3b')](_[_0x11a8('0x44')](_0x58b912[_0x11a8('0x39')],_0x452f73[_0x11a8('0x3b')]));if(_0x58b912[_0x11a8('0x39')][_0x11a8('0x45')]){_0x21ae5e[_0x11a8('0x43')]=_['merge'](_0x21ae5e[_0x11a8('0x43')],{'$or':_[_0x11a8('0x46')](_0x21ae5e[_0x11a8('0x3c')],function(_0x4b5527){var _0x449fec={};_0x449fec[_0x4b5527]={'$like':'%'+_0x58b912['query'][_0x11a8('0x45')]+'%'};return _0x449fec;})});}_0x21ae5e=_[_0x11a8('0x48')]({},_0x21ae5e,_0x58b912[_0x11a8('0x4f')]);return _0x5f1fa6[_0x11a8('0x86')](_0x21ae5e);}})['then'](function(_0x7144cb){if(_0x7144cb){_0x31eb2d=_0x7144cb[_0x11a8('0x4e')];if(!_0x58b912['query'][_0x11a8('0x3f')](_0x11a8('0x40'))){_0x21ae5e[_0x11a8('0x28')]=qs[_0x11a8('0x28')](_0x58b912['query'][_0x11a8('0x28')]);_0x21ae5e['offset']=qs[_0x11a8('0x26')](_0x58b912[_0x11a8('0x39')][_0x11a8('0x26')]);}return _0x5f1fa6['getAgents'](_0x21ae5e);}})[_0x11a8('0x2e')](function(_0x10a6fb){if(_0x10a6fb){return _0x10a6fb?{'count':_0x31eb2d,'rows':_0x10a6fb}:null;}})[_0x11a8('0x2e')](respondWithResult(_0x30026b,null))['catch'](handleError(_0x30026b,null));};
\ No newline at end of file
+var _0x065d=['fieldName','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','options','Team','count','include','rows','params','keys','length','includeAll','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','findOne','channel','Sequelize','ValidationError','capitalize','toLowerCase','addQueues','Unknown\x20channel','ids','removeQueues','isValidChannel','remove','Queues','addAgents','Voice','Chat','Mail','Sms','Fax','Openchannel','sequelize','transaction','through','penalty','TeamVoiceQueue','User','Queue','findOrCreate','emit','Queue:save','QueueId','findAll','online','interface','UserVoiceQueueRt','upsert','SIP/%s','voicePause','all','removeAgents','Whatsapp','parse','Queue:remove','destroy','getAgents','filter','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./team.socket','register','status','end','offset','undefined','limit','set','Content-Range','json','apply','then','get','Teams','UserProfileResource','error','stack','name','index','map','rawAttributes'];(function(_0x3d8bbb,_0x2d3a63){var _0x263363=function(_0x53a399){while(--_0x53a399){_0x3d8bbb['push'](_0x3d8bbb['shift']());}};_0x263363(++_0x2d3a63);}(_0x065d,0x1d8));var _0xd065=function(_0x1b9a58,_0x403134){_0x1b9a58=_0x1b9a58-0x0;var _0x183d45=_0x065d[_0x1b9a58];return _0x183d45;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd065('0x0'));var zipdir=require(_0xd065('0x1'));var jsonpatch=require(_0xd065('0x2'));var rp=require('request-promise');var moment=require(_0xd065('0x3'));var BPromise=require(_0xd065('0x4'));var Mustache=require(_0xd065('0x5'));var util=require(_0xd065('0x6'));var path=require(_0xd065('0x7'));var sox=require('sox');var csv=require(_0xd065('0x8'));var ejs=require(_0xd065('0x9'));var fs=require('fs');var fs_extra=require(_0xd065('0xa'));var _=require(_0xd065('0xb'));var squel=require(_0xd065('0xc'));var crypto=require('crypto');var jsforce=require(_0xd065('0xd'));var deskjs=require(_0xd065('0xe'));var toCsv=require(_0xd065('0x8'));var querystring=require(_0xd065('0xf'));var Papa=require(_0xd065('0x10'));var Redis=require(_0xd065('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd065('0x12'))(_0xd065('0x13'));var utils=require(_0xd065('0x14'));var config=require(_0xd065('0x15'));var licenseUtil=require(_0xd065('0x16'));var db=require(_0xd065('0x17'))['db'];config['redis']=_[_0xd065('0x18')](config[_0xd065('0x19')],{'host':_0xd065('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd065('0x1b'))[_0xd065('0x1c')](socket);function respondWithStatusCode(_0x206a1b,_0x24d9f9){_0x24d9f9=_0x24d9f9||0xcc;return function(_0x23abc9){if(_0x23abc9){return _0x206a1b['sendStatus'](_0x24d9f9);}return _0x206a1b[_0xd065('0x1d')](_0x24d9f9)[_0xd065('0x1e')]();};}function respondWithResult(_0x1efa85,_0x48a499){_0x48a499=_0x48a499||0xc8;return function(_0x5b0861){if(_0x5b0861){return _0x1efa85['status'](_0x48a499)['json'](_0x5b0861);}};}function respondWithFilteredResult(_0x3fdc4f,_0x5e1a14){return function(_0x56fbbd){if(_0x56fbbd){var _0x482792=typeof _0x5e1a14[_0xd065('0x1f')]===_0xd065('0x20')&&typeof _0x5e1a14[_0xd065('0x21')]===_0xd065('0x20');var _0x3c5527=_0x56fbbd['count'];var _0x15253f=_0x482792?0x0:_0x5e1a14[_0xd065('0x1f')];var _0x11001c=_0x482792?_0x56fbbd['count']:_0x5e1a14[_0xd065('0x1f')]+_0x5e1a14[_0xd065('0x21')];var _0x54f48c;if(_0x11001c>=_0x3c5527){_0x11001c=_0x3c5527;_0x54f48c=0xc8;}else{_0x54f48c=0xce;}_0x3fdc4f[_0xd065('0x1d')](_0x54f48c);return _0x3fdc4f[_0xd065('0x22')](_0xd065('0x23'),_0x15253f+'-'+_0x11001c+'/'+_0x3c5527)[_0xd065('0x24')](_0x56fbbd);}return null;};}function patchUpdates(_0x1ab24e){return function(_0x135571){try{jsonpatch[_0xd065('0x25')](_0x135571,_0x1ab24e,!![]);}catch(_0x24b38c){return BPromise['reject'](_0x24b38c);}return _0x135571['save']();};}function saveUpdates(_0xb3a07,_0x3662c8){return function(_0x871ed1){if(_0x871ed1){return _0x871ed1['update'](_0xb3a07)[_0xd065('0x26')](function(_0x1c3657){return _0x1c3657;});}return null;};}function removeEntity(_0x45c904,_0x58a526){return function(_0x294344){if(_0x294344){return _0x294344['destroy']()[_0xd065('0x26')](function(){var _0x18a34f=_0x294344[_0xd065('0x27')]({'plain':!![]});var _0x1d762e=_0xd065('0x28');return db[_0xd065('0x29')]['destroy']({'where':{'type':_0x1d762e,'resourceId':_0x18a34f['id']}})[_0xd065('0x26')](function(){return _0x294344;});})['then'](function(){_0x45c904[_0xd065('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ac875,_0x44fbcd){return function(_0xa1f06e){if(!_0xa1f06e){_0x5ac875['sendStatus'](0x194);}return _0xa1f06e;};}function handleError(_0x33d420,_0x1e2b4b){_0x1e2b4b=_0x1e2b4b||0x1f4;return function(_0x55fb1a){logger[_0xd065('0x2a')](_0x55fb1a[_0xd065('0x2b')]);if(_0x55fb1a[_0xd065('0x2c')]){delete _0x55fb1a[_0xd065('0x2c')];}_0x33d420['status'](_0x1e2b4b)['send'](_0x55fb1a);};}exports[_0xd065('0x2d')]=function(_0x561ac6,_0x3febaa){var _0x1c547b={},_0x24b15e={},_0xc5603d={'count':0x0,'rows':[]};var _0x274185=_[_0xd065('0x2e')](db['Team'][_0xd065('0x2f')],function(_0x44dcb1){return{'name':_0x44dcb1[_0xd065('0x30')],'type':_0x44dcb1[_0xd065('0x31')]['key']};});_0x24b15e[_0xd065('0x32')]=_[_0xd065('0x2e')](_0x274185,_0xd065('0x2c'));_0x24b15e[_0xd065('0x33')]=_['keys'](_0x561ac6[_0xd065('0x33')]);_0x24b15e[_0xd065('0x34')]=_[_0xd065('0x35')](_0x24b15e[_0xd065('0x32')],_0x24b15e[_0xd065('0x33')]);_0x1c547b[_0xd065('0x36')]=_[_0xd065('0x35')](_0x24b15e[_0xd065('0x32')],qs[_0xd065('0x37')](_0x561ac6['query']['fields']));_0x1c547b[_0xd065('0x36')]=_0x1c547b[_0xd065('0x36')]['length']?_0x1c547b[_0xd065('0x36')]:_0x24b15e[_0xd065('0x32')];if(!_0x561ac6['query'][_0xd065('0x38')](_0xd065('0x39'))){_0x1c547b[_0xd065('0x21')]=qs[_0xd065('0x21')](_0x561ac6[_0xd065('0x33')][_0xd065('0x21')]);_0x1c547b[_0xd065('0x1f')]=qs[_0xd065('0x1f')](_0x561ac6[_0xd065('0x33')][_0xd065('0x1f')]);}_0x1c547b[_0xd065('0x3a')]=qs[_0xd065('0x3b')](_0x561ac6[_0xd065('0x33')]['sort']);_0x1c547b['where']=qs['filters'](_[_0xd065('0x3c')](_0x561ac6['query'],_0x24b15e['filters']),_0x274185);if(_0x561ac6[_0xd065('0x33')]['filter']){_0x1c547b[_0xd065('0x3d')]=_[_0xd065('0x3e')](_0x1c547b['where'],{'$or':_[_0xd065('0x2e')](_0x274185,function(_0x52f220){if(_0x52f220[_0xd065('0x31')]!==_0xd065('0x3f')){var _0x265d38={};_0x265d38[_0x52f220['name']]={'$like':'%'+_0x561ac6[_0xd065('0x33')]['filter']+'%'};return _0x265d38;}})});}_0x1c547b=_[_0xd065('0x3e')]({},_0x1c547b,_0x561ac6[_0xd065('0x40')]);var _0x1d7d4b={'where':_0x1c547b[_0xd065('0x3d')]};return db[_0xd065('0x41')][_0xd065('0x42')](_0x1d7d4b)[_0xd065('0x26')](function(_0xf5d1eb){_0xc5603d[_0xd065('0x42')]=_0xf5d1eb;if(_0x561ac6['query']['includeAll']){_0x1c547b[_0xd065('0x43')]=[{'all':!![]}];}return db[_0xd065('0x41')]['findAll'](_0x1c547b);})['then'](function(_0x58db97){_0xc5603d[_0xd065('0x44')]=_0x58db97;return _0xc5603d;})[_0xd065('0x26')](respondWithFilteredResult(_0x3febaa,_0x1c547b))['catch'](handleError(_0x3febaa,null));};exports['show']=function(_0x55e7bf,_0x45f8c3){var _0x48a063={'raw':![],'where':{'id':_0x55e7bf[_0xd065('0x45')]['id']}},_0x3f602e={};_0x3f602e[_0xd065('0x32')]=_[_0xd065('0x46')](db[_0xd065('0x41')][_0xd065('0x2f')]);_0x3f602e['query']=_['keys'](_0x55e7bf[_0xd065('0x33')]);_0x3f602e['filters']=_[_0xd065('0x35')](_0x3f602e[_0xd065('0x32')],_0x3f602e[_0xd065('0x33')]);_0x48a063['attributes']=_[_0xd065('0x35')](_0x3f602e[_0xd065('0x32')],qs[_0xd065('0x37')](_0x55e7bf['query'][_0xd065('0x37')]));_0x48a063['attributes']=_0x48a063['attributes'][_0xd065('0x47')]?_0x48a063[_0xd065('0x36')]:_0x3f602e[_0xd065('0x32')];if(_0x55e7bf['query'][_0xd065('0x48')]){_0x48a063[_0xd065('0x43')]=[{'all':!![]}];}_0x48a063=_[_0xd065('0x3e')]({},_0x48a063,_0x55e7bf[_0xd065('0x40')]);return db[_0xd065('0x41')][_0xd065('0x49')](_0x48a063)['then'](handleEntityNotFound(_0x45f8c3,null))[_0xd065('0x26')](respondWithResult(_0x45f8c3,null))[_0xd065('0x4a')](handleError(_0x45f8c3,null));};exports[_0xd065('0x4b')]=function(_0x59710c,_0x5cdc23){return db[_0xd065('0x41')][_0xd065('0x4b')](_0x59710c['body'],{})[_0xd065('0x26')](function(_0x3c2445){var _0x4a3d96=_0x59710c[_0xd065('0x4c')][_0xd065('0x27')]({'plain':!![]});if(!_0x4a3d96)throw new Error(_0xd065('0x4d'));if(_0x4a3d96['role']===_0xd065('0x4c')){var _0x5bedca=_0x3c2445[_0xd065('0x27')]({'plain':!![]});var _0x27758c='Teams';return db[_0xd065('0x4e')][_0xd065('0x49')]({'where':{'name':_0x27758c,'userProfileId':_0x4a3d96[_0xd065('0x4f')]},'raw':!![]})[_0xd065('0x26')](function(_0x3e31b8){if(_0x3e31b8&&_0x3e31b8[_0xd065('0x50')]===0x0){return db[_0xd065('0x29')]['create']({'name':_0x5bedca[_0xd065('0x2c')],'resourceId':_0x5bedca['id'],'type':_0x3e31b8[_0xd065('0x2c')],'sectionId':_0x3e31b8['id']},{})[_0xd065('0x26')](function(){return _0x3c2445;});}else{return _0x3c2445;}})[_0xd065('0x4a')](function(_0x5167fc){logger['error'](_0xd065('0x51'),_0x5167fc);throw _0x5167fc;});}return _0x3c2445;})[_0xd065('0x26')](respondWithResult(_0x5cdc23,0xc9))[_0xd065('0x4a')](handleError(_0x5cdc23,null));};exports[_0xd065('0x52')]=function(_0x4232e0,_0xc36b25){if(_0x4232e0[_0xd065('0x53')]['id']){delete _0x4232e0[_0xd065('0x53')]['id'];}return db[_0xd065('0x41')][_0xd065('0x49')]({'where':{'id':_0x4232e0[_0xd065('0x45')]['id']}})[_0xd065('0x26')](handleEntityNotFound(_0xc36b25,null))[_0xd065('0x26')](saveUpdates(_0x4232e0['body'],null))[_0xd065('0x26')](respondWithResult(_0xc36b25,null))[_0xd065('0x4a')](handleError(_0xc36b25,null));};exports['destroy']=function(_0x179a18,_0x563376){return db[_0xd065('0x41')][_0xd065('0x49')]({'where':{'id':_0x179a18[_0xd065('0x45')]['id']}})[_0xd065('0x26')](handleEntityNotFound(_0x563376,null))[_0xd065('0x26')](removeEntity(_0x563376,null))['catch'](handleError(_0x563376,null));};exports['getQueues']=function(_0x1798ea,_0x1e8731,_0x36a75e){return db[_0xd065('0x41')][_0xd065('0x54')]({'where':{'id':_0x1798ea[_0xd065('0x45')]['id']}})[_0xd065('0x26')](handleEntityNotFound(_0x1e8731,null))['then'](function(_0x3ae788){if(!_0x1798ea[_0xd065('0x33')][_0xd065('0x55')]||!utils['isValidChannel'](_0x1798ea[_0xd065('0x33')][_0xd065('0x55')])){throw new db[(_0xd065('0x56'))][(_0xd065('0x57'))]('Unknown\x20channel');}var _0x91744c={};var _0x4098d0={};_0x4098d0[_0xd065('0x32')]=_[_0xd065('0x46')](db[_[_0xd065('0x58')](_0x1798ea[_0xd065('0x33')][_0xd065('0x55')][_0xd065('0x59')]())+'Queue'][_0xd065('0x2f')]);_0x4098d0[_0xd065('0x33')]=_[_0xd065('0x46')](_0x1798ea[_0xd065('0x33')]);_0x4098d0[_0xd065('0x34')]=_[_0xd065('0x35')](_0x4098d0[_0xd065('0x32')],_0x4098d0[_0xd065('0x33')]);_0x91744c[_0xd065('0x36')]=_[_0xd065('0x35')](_0x4098d0['model'],qs[_0xd065('0x37')](_0x1798ea[_0xd065('0x33')][_0xd065('0x37')]));_0x91744c['attributes']=_0x91744c[_0xd065('0x36')]['length']?_0x91744c[_0xd065('0x36')]:_0x4098d0[_0xd065('0x32')];_0x91744c[_0xd065('0x21')]=qs['limit'](_0x1798ea[_0xd065('0x33')][_0xd065('0x21')]);_0x91744c['offset']=qs[_0xd065('0x1f')](_0x1798ea[_0xd065('0x33')][_0xd065('0x1f')]);_0x91744c[_0xd065('0x3a')]=qs[_0xd065('0x3b')](_0x1798ea[_0xd065('0x33')][_0xd065('0x3b')]);_0x91744c[_0xd065('0x3d')]=qs[_0xd065('0x34')](_[_0xd065('0x3c')](_0x1798ea[_0xd065('0x33')],_0x4098d0[_0xd065('0x34')]));_0x91744c=_['merge']({},_0x91744c,_0x1798ea[_0xd065('0x40')]);return _0x3ae788[_0xd065('0x27')+_['capitalize'](_0x1798ea[_0xd065('0x33')]['channel'][_0xd065('0x59')]())+'Queues'](_0x91744c);})[_0xd065('0x26')](respondWithResult(_0x1e8731,null))[_0xd065('0x4a')](handleError(_0x1e8731,null));};exports[_0xd065('0x5a')]=function(_0x38be61,_0x56bd71,_0x4a2061){return db[_0xd065('0x41')][_0xd065('0x54')]({'where':{'id':_0x38be61['params']['id']}})[_0xd065('0x26')](function(_0x212e0a){if(_0x212e0a){if(!_0x38be61['body'][_0xd065('0x55')]||!utils['isValidChannel'](_0x38be61[_0xd065('0x53')]['channel'])){throw new db[(_0xd065('0x56'))][(_0xd065('0x57'))](_0xd065('0x5b'));}return _0x212e0a['add'+_[_0xd065('0x58')](_0x38be61['body']['channel'][_0xd065('0x59')]())+'Queues'](_0x38be61[_0xd065('0x53')][_0xd065('0x5c')]);}return null;})[_0xd065('0x26')](handleEntityNotFound(_0x56bd71,null))[_0xd065('0x26')](respondWithStatusCode(_0x56bd71,null))[_0xd065('0x4a')](handleError(_0x56bd71,null));};exports[_0xd065('0x5d')]=function(_0x395524,_0x590b65,_0x43f18b){return db[_0xd065('0x41')]['findOne']({'where':{'id':_0x395524[_0xd065('0x45')]['id']}})[_0xd065('0x26')](function(_0x27993a){if(_0x27993a){if(!_0x395524['query'][_0xd065('0x55')]||!utils[_0xd065('0x5e')](_0x395524[_0xd065('0x33')][_0xd065('0x55')])){throw new db['Sequelize'][(_0xd065('0x57'))](_0xd065('0x5b'));}return _0x27993a[_0xd065('0x5f')+_[_0xd065('0x58')](_0x395524['query'][_0xd065('0x55')][_0xd065('0x59')]())+_0xd065('0x60')](_0x395524[_0xd065('0x33')][_0xd065('0x5c')]);}return null;})[_0xd065('0x26')](handleEntityNotFound(_0x590b65,null))[_0xd065('0x26')](respondWithStatusCode(_0x590b65,null))[_0xd065('0x4a')](handleError(_0x590b65,null));};exports[_0xd065('0x61')]=function(_0x579707,_0x1c135b){return db[_0xd065('0x41')][_0xd065('0x49')]({'where':{'id':_0x579707[_0xd065('0x45')]['id']}})[_0xd065('0x26')](handleEntityNotFound(_0x1c135b,null))['then'](function(_0x2d2cad){if(_0x2d2cad){var _0x5ce294=[_0xd065('0x62'),_0xd065('0x63'),_0xd065('0x64'),_0xd065('0x65'),_0xd065('0x66'),_0xd065('0x67'),'Whatsapp'];return db[_0xd065('0x68')][_0xd065('0x69')](function(_0x25d688){var _0x114d49=_['map'](_0x5ce294,function(_0x5526b8){var _0x32b8ca={'attributes':['id',_0xd065('0x2c')]};if(_0x5526b8===_0xd065('0x62')){_0x32b8ca[_0xd065('0x6a')]={'attributes':[_0xd065('0x6b')]};}return _0x2d2cad[_0xd065('0x27')+_0x5526b8+_0xd065('0x60')](_0x32b8ca)[_0xd065('0x26')](function(_0x420957){var _0xa63966=_[_0xd065('0x2e')](_0x420957,function(_0x52d98b){var _0x4f1a66=_['map'](_0x579707[_0xd065('0x53')][_0xd065('0x5c')],function(_0xb265da){var _0x3823b4={'where':{'UserId':_0xb265da,[_0x5526b8+'QueueId']:_0x52d98b['id']},'transaction':_0x25d688};if(_0x5526b8==='Voice'){_0x3823b4[_0xd065('0x18')]={'penalty':_0x52d98b[_0xd065('0x6c')][_0xd065('0x6b')]};}return db[_0xd065('0x6d')+_0x5526b8+_0xd065('0x6e')][_0xd065('0x6f')](_0x3823b4)[_0xd065('0x26')](function(){socket[_0xd065('0x70')](_0xd065('0x4c')+_0x5526b8+_0xd065('0x71'),{'UserId':_0xb265da,[_0x5526b8+_0xd065('0x72')]:_0x52d98b['id']});if(_0x5526b8!==_0xd065('0x62'))return;return db[_0xd065('0x6d')][_0xd065('0x73')]({'where':{'id':_0x579707['body'][_0xd065('0x5c')],'online':0x1},'attributes':['id','name',_0xd065('0x74'),'voicePause',_0xd065('0x75')],'raw':!![]})['then'](function(_0x53dacd){var _0x87b480=_[_0xd065('0x2e')](_0x53dacd,function(_0x4e6eef){return db[_0xd065('0x76')][_0xd065('0x77')]({'membername':_0x4e6eef[_0xd065('0x2c')],'UserId':_0x4e6eef['id'],'queue_name':_0x52d98b[_0xd065('0x2c')],'VoiceQueueId':_0x52d98b['id'],'interface':_['isNil'](_0x4e6eef['interface'])?util['format'](_0xd065('0x78'),_0x4e6eef[_0xd065('0x2c')]):_0x4e6eef[_0xd065('0x75')],'paused':_0x4e6eef[_0xd065('0x79')]||![],'penalty':_0x52d98b[_0xd065('0x6c')]['penalty']},{'transaction':_0x25d688});});return Promise['all'](_0x87b480);});});});return Promise[_0xd065('0x7a')](_0x4f1a66);});return Promise[_0xd065('0x7a')](_0xa63966);});});return Promise['all'](_0x114d49)['then'](function(){return _0x2d2cad[_0xd065('0x61')](_0x579707[_0xd065('0x53')][_0xd065('0x5c')],{'transaction':_0x25d688})['spread'](function(_0x248428){return _0x248428;});});});}})[_0xd065('0x26')](respondWithResult(_0x1c135b,null))[_0xd065('0x4a')](handleError(_0x1c135b,null));};exports[_0xd065('0x7b')]=function(_0x4fe62d,_0x2959d6){return db[_0xd065('0x41')][_0xd065('0x49')]({'where':{'id':_0x4fe62d[_0xd065('0x45')]['id']}})['then'](handleEntityNotFound(_0x2959d6,null))[_0xd065('0x26')](function(_0x1958a8){if(_0x1958a8){var _0x3ffa37=[_0xd065('0x62'),_0xd065('0x63'),_0xd065('0x64'),'Sms',_0xd065('0x66'),_0xd065('0x67'),_0xd065('0x7c')];return db[_0xd065('0x68')][_0xd065('0x69')](function(_0x1e4dfd){var _0xdb8764=_[_0xd065('0x2e')](_0x3ffa37,function(_0x59aeac){var _0x5d8f3a={'attributes':['id',_0xd065('0x2c')]};return _0x1958a8[_0xd065('0x27')+_0x59aeac+_0xd065('0x60')](_0x5d8f3a)[_0xd065('0x26')](function(_0x453279){var _0x22d815=_[_0xd065('0x2e')](_0x453279,function(_0x2b3c8d){return _0x2b3c8d[_0xd065('0x7b')](_0x4fe62d['query'][_0xd065('0x5c')],{'transaction':_0x1e4dfd})[_0xd065('0x26')](function(){var _0x349590=JSON[_0xd065('0x7d')]('['+_0x4fe62d[_0xd065('0x33')]['ids']+']');var _0x19229a=_['map'](_0x349590,function(_0x8c427c){socket[_0xd065('0x70')](_0xd065('0x4c')+_0x59aeac+_0xd065('0x7e'),{'UserId':Number(_0x8c427c),[_0x59aeac+_0xd065('0x72')]:_0x2b3c8d['id']});if(_0x59aeac!==_0xd065('0x62'))return;return db['UserVoiceQueueRt'][_0xd065('0x7f')]({'where':{'VoiceQueueId':_0x2b3c8d['id'],'UserId':_0x8c427c},'transaction':_0x1e4dfd});});return Promise[_0xd065('0x7a')](_0x19229a);});});return Promise[_0xd065('0x7a')](_0x22d815);});});return Promise[_0xd065('0x7a')](_0xdb8764)[_0xd065('0x26')](function(){return _0x1958a8['removeAgents'](_0x4fe62d[_0xd065('0x33')][_0xd065('0x5c')],{'transaction':_0x1e4dfd});});});}})[_0xd065('0x26')](respondWithStatusCode(_0x2959d6,null))['catch'](handleError(_0x2959d6,null));};exports[_0xd065('0x80')]=function(_0x57d3cb,_0x7de459,_0x4ae4ac){var _0x2b322e={};var _0x5e64d0={};var _0x153158;var _0x31285b;return db['Team'][_0xd065('0x54')]({'where':{'id':_0x57d3cb[_0xd065('0x45')]['id']}})['then'](handleEntityNotFound(_0x7de459,null))[_0xd065('0x26')](function(_0x556e58){if(_0x556e58){_0x153158=_0x556e58;_0x5e64d0[_0xd065('0x32')]=_['keys'](db['User'][_0xd065('0x2f')]);_0x5e64d0[_0xd065('0x33')]=_[_0xd065('0x46')](_0x57d3cb[_0xd065('0x33')]);_0x5e64d0[_0xd065('0x34')]=_[_0xd065('0x35')](_0x5e64d0['model'],_0x5e64d0[_0xd065('0x33')]);_0x2b322e[_0xd065('0x36')]=_[_0xd065('0x35')](_0x5e64d0[_0xd065('0x32')],qs[_0xd065('0x37')](_0x57d3cb[_0xd065('0x33')]['fields']));_0x2b322e[_0xd065('0x36')]=_0x2b322e[_0xd065('0x36')][_0xd065('0x47')]?_0x2b322e[_0xd065('0x36')]:_0x5e64d0[_0xd065('0x32')];_0x2b322e[_0xd065('0x3a')]=qs[_0xd065('0x3b')](_0x57d3cb[_0xd065('0x33')]['sort']);_0x2b322e[_0xd065('0x3d')]=qs[_0xd065('0x34')](_[_0xd065('0x3c')](_0x57d3cb[_0xd065('0x33')],_0x5e64d0[_0xd065('0x34')]));if(_0x57d3cb[_0xd065('0x33')][_0xd065('0x81')]){_0x2b322e['where']=_['merge'](_0x2b322e[_0xd065('0x3d')],{'$or':_[_0xd065('0x2e')](_0x2b322e['attributes'],function(_0x37ada5){var _0x366ac2={};_0x366ac2[_0x37ada5]={'$like':'%'+_0x57d3cb['query'][_0xd065('0x81')]+'%'};return _0x366ac2;})});}_0x2b322e=_[_0xd065('0x3e')]({},_0x2b322e,_0x57d3cb[_0xd065('0x40')]);return _0x153158['getAgents'](_0x2b322e);}})[_0xd065('0x26')](function(_0x45a911){if(_0x45a911){_0x31285b=_0x45a911[_0xd065('0x47')];if(!_0x57d3cb['query']['hasOwnProperty']('nolimit')){_0x2b322e[_0xd065('0x21')]=qs['limit'](_0x57d3cb[_0xd065('0x33')][_0xd065('0x21')]);_0x2b322e['offset']=qs[_0xd065('0x1f')](_0x57d3cb['query'][_0xd065('0x1f')]);}return _0x153158[_0xd065('0x80')](_0x2b322e);}})['then'](function(_0x55a13e){if(_0x55a13e){return _0x55a13e?{'count':_0x31285b,'rows':_0x55a13e}:null;}})['then'](respondWithResult(_0x7de459,null))['catch'](handleError(_0x7de459,null));};
\ No newline at end of file
index d4d1130..fcb5917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x167e=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Team','setMaxListeners','save','update'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x167e,0x102));var _0xe167=function(_0x334cdd,_0x9c3982){_0x334cdd=_0x334cdd-0x0;var _0x53c49d=_0x167e[_0x334cdd];return _0x53c49d;};'use strict';var EventEmitter=require(_0xe167('0x0'));var Team=require(_0xe167('0x1'))['db'][_0xe167('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0xe167('0x3')](0x0);var events={'afterCreate':_0xe167('0x4'),'afterUpdate':_0xe167('0x5'),'afterDestroy':_0xe167('0x6')};function emitEvent(_0x36be7){return function(_0x2bb1e3,_0x530b1f,_0x52872a){TeamEvents[_0xe167('0x7')](_0x36be7+':'+_0x2bb1e3['id'],_0x2bb1e3);TeamEvents['emit'](_0x36be7,_0x2bb1e3);_0x52872a(null);};}for(var e in events){if(events[_0xe167('0x8')](e)){var event=events[e];Team[_0xe167('0x9')](e,emitEvent(event));}}module[_0xe167('0xa')]=TeamEvents;
\ No newline at end of file
+var _0xe94b=['hasOwnProperty','exports','events','../../mysqldb','Team','setMaxListeners','save','update','remove','emit'];(function(_0x1553cf,_0x1897d8){var _0x1009a8=function(_0x115fdc){while(--_0x115fdc){_0x1553cf['push'](_0x1553cf['shift']());}};_0x1009a8(++_0x1897d8);}(_0xe94b,0xfc));var _0xbe94=function(_0x58f455,_0x1c2109){_0x58f455=_0x58f455-0x0;var _0x2a5dca=_0xe94b[_0x58f455];return _0x2a5dca;};'use strict';var EventEmitter=require(_0xbe94('0x0'));var Team=require(_0xbe94('0x1'))['db'][_0xbe94('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0xbe94('0x3')](0x0);var events={'afterCreate':_0xbe94('0x4'),'afterUpdate':_0xbe94('0x5'),'afterDestroy':_0xbe94('0x6')};function emitEvent(_0xeb92a2){return function(_0x171460,_0x2b6ac6,_0x4c1eae){TeamEvents[_0xbe94('0x7')](_0xeb92a2+':'+_0x171460['id'],_0x171460);TeamEvents[_0xbe94('0x7')](_0xeb92a2,_0x171460);_0x4c1eae(null);};}for(var e in events){if(events[_0xbe94('0x8')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0xbe94('0x9')]=TeamEvents;
\ No newline at end of file
index eb71d5b..ba19208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5dd=['define','Team','teams','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./team.attributes','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa5dd,0xa8));var _0xda5d=function(_0x7f2994,_0x5273b7){_0x7f2994=_0x7f2994-0x0;var _0x52d36c=_0xa5dd[_0x7f2994];return _0x52d36c;};'use strict';var _=require(_0xda5d('0x0'));var util=require(_0xda5d('0x1'));var logger=require(_0xda5d('0x2'))(_0xda5d('0x3'));var moment=require(_0xda5d('0x4'));var BPromise=require(_0xda5d('0x5'));var rp=require(_0xda5d('0x6'));var fs=require('fs');var path=require(_0xda5d('0x7'));var rimraf=require(_0xda5d('0x8'));var config=require(_0xda5d('0x9'));var attributes=require(_0xda5d('0xa'));module[_0xda5d('0xb')]=function(_0x20dacb,_0x5e3019){return _0x20dacb[_0xda5d('0xc')](_0xda5d('0xd'),attributes,{'tableName':_0xda5d('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaa34=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./team.attributes','define','Team','lodash'];(function(_0x124f88,_0x3ad501){var _0xed0e3b=function(_0x43a67d){while(--_0x43a67d){_0x124f88['push'](_0x124f88['shift']());}};_0xed0e3b(++_0x3ad501);}(_0xaa34,0xef));var _0x4aa3=function(_0x8d7255,_0xa7a7b3){_0x8d7255=_0x8d7255-0x0;var _0x58285a=_0xaa34[_0x8d7255];return _0x58285a;};'use strict';var _=require(_0x4aa3('0x0'));var util=require(_0x4aa3('0x1'));var logger=require(_0x4aa3('0x2'))(_0x4aa3('0x3'));var moment=require(_0x4aa3('0x4'));var BPromise=require(_0x4aa3('0x5'));var rp=require(_0x4aa3('0x6'));var fs=require('fs');var path=require(_0x4aa3('0x7'));var rimraf=require('rimraf');var config=require(_0x4aa3('0x8'));var attributes=require(_0x4aa3('0x9'));module['exports']=function(_0x20ad7a,_0x39110f){return _0x20ad7a[_0x4aa3('0xa')](_0x4aa3('0xb'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1126959..29db85d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40dc=['jayson/promise','http','redis','socket.io-emitter','./team.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','Team,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x3bf52e,_0xe846f5){var _0x76d727=function(_0x481902){while(--_0x481902){_0x3bf52e['push'](_0x3bf52e['shift']());}};_0x76d727(++_0xe846f5);}(_0x40dc,0x14a));var _0xc40d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x40dc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc40d('0x0'));var util=require('util');var moment=require(_0xc40d('0x1'));var BPromise=require('bluebird');var rs=require(_0xc40d('0x2'));var fs=require('fs');var Redis=require(_0xc40d('0x3'));var db=require(_0xc40d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc40d('0x5'))(_0xc40d('0x6'));var config=require(_0xc40d('0x7'));var jayson=require(_0xc40d('0x8'));var client=jayson['client'][_0xc40d('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0xc40d('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xc40d('0xb'))(new Redis(config['redis']));require(_0xc40d('0xc'))[_0xc40d('0xd')](socket);function respondWithRpcPromise(_0x39ae5f,_0x1fcd82,_0x3e09b5){return new BPromise(function(_0x2c336a,_0x1ed9ed){return client[_0xc40d('0xe')](_0x39ae5f,_0x3e09b5)[_0xc40d('0xf')](function(_0x25f412){logger[_0xc40d('0x10')]('Team,\x20%s,\x20%s',_0x1fcd82,_0xc40d('0x11'));logger[_0xc40d('0x12')]('Team,\x20%s,\x20%s,\x20%s',_0x1fcd82,_0xc40d('0x11'),JSON[_0xc40d('0x13')](_0x25f412));if(_0x25f412[_0xc40d('0x14')]){if(_0x25f412[_0xc40d('0x14')][_0xc40d('0x15')]===0x1f4){logger[_0xc40d('0x14')](_0xc40d('0x16'),_0x1fcd82,_0x25f412['error']['message']);return _0x1ed9ed(_0x25f412['error']['message']);}logger['error'](_0xc40d('0x16'),_0x1fcd82,_0x25f412[_0xc40d('0x14')][_0xc40d('0x17')]);return _0x2c336a(_0x25f412[_0xc40d('0x14')][_0xc40d('0x17')]);}else{logger['info'](_0xc40d('0x16'),_0x1fcd82,_0xc40d('0x11'));_0x2c336a(_0x25f412[_0xc40d('0x18')][_0xc40d('0x17')]);}})[_0xc40d('0x19')](function(_0x4ebc58){logger[_0xc40d('0x14')](_0xc40d('0x16'),_0x1fcd82,_0x4ebc58);_0x1ed9ed(_0x4ebc58);});});}
\ No newline at end of file
+var _0x968c=['jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./team.socket','register','request','then','Team,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x508802,_0x3c303d){var _0x9b89f1=function(_0x469822){while(--_0x469822){_0x508802['push'](_0x508802['shift']());}};_0x9b89f1(++_0x3c303d);}(_0x968c,0xea));var _0xc968=function(_0x2d987e,_0x48ffee){_0x2d987e=_0x2d987e-0x0;var _0x3c9e84=_0x968c[_0x2d987e];return _0x3c9e84;};'use strict';var _=require(_0xc968('0x0'));var util=require('util');var moment=require(_0xc968('0x1'));var BPromise=require('bluebird');var rs=require(_0xc968('0x2'));var fs=require('fs');var Redis=require(_0xc968('0x3'));var db=require(_0xc968('0x4'))['db'];var utils=require(_0xc968('0x5'));var logger=require(_0xc968('0x6'))(_0xc968('0x7'));var config=require(_0xc968('0x8'));var jayson=require(_0xc968('0x9'));var client=jayson['client'][_0xc968('0xa')]({'port':0x232a});config[_0xc968('0xb')]=_[_0xc968('0xc')](config[_0xc968('0xb')],{'host':_0xc968('0xd'),'port':0x18eb});var socket=require(_0xc968('0xe'))(new Redis(config[_0xc968('0xb')]));require(_0xc968('0xf'))[_0xc968('0x10')](socket);function respondWithRpcPromise(_0x56ad5e,_0x22c963,_0x21b234){return new BPromise(function(_0x2677eb,_0x163a99){return client[_0xc968('0x11')](_0x56ad5e,_0x21b234)[_0xc968('0x12')](function(_0x495779){logger['info'](_0xc968('0x13'),_0x22c963,_0xc968('0x14'));logger[_0xc968('0x15')]('Team,\x20%s,\x20%s,\x20%s',_0x22c963,_0xc968('0x14'),JSON[_0xc968('0x16')](_0x495779));if(_0x495779[_0xc968('0x17')]){if(_0x495779[_0xc968('0x17')]['code']===0x1f4){logger[_0xc968('0x17')](_0xc968('0x13'),_0x22c963,_0x495779[_0xc968('0x17')][_0xc968('0x18')]);return _0x163a99(_0x495779[_0xc968('0x17')][_0xc968('0x18')]);}logger['error'](_0xc968('0x13'),_0x22c963,_0x495779[_0xc968('0x17')][_0xc968('0x18')]);return _0x2677eb(_0x495779[_0xc968('0x17')]['message']);}else{logger[_0xc968('0x19')](_0xc968('0x13'),_0x22c963,'request\x20sent');_0x2677eb(_0x495779[_0xc968('0x1a')][_0xc968('0x18')]);}})['catch'](function(_0x3ef9d3){logger[_0xc968('0x17')](_0xc968('0x13'),_0x22c963,_0x3ef9d3);_0x163a99(_0x3ef9d3);});});}
\ No newline at end of file
index 1c18727..c628ad4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aec=['register','length','./team.events','remove','update','emit'];(function(_0xfe719f,_0x53be3b){var _0x4acc91=function(_0x2b79af){while(--_0x2b79af){_0xfe719f['push'](_0xfe719f['shift']());}};_0x4acc91(++_0x53be3b);}(_0x8aec,0x1a6));var _0xc8ae=function(_0x5e9690,_0x2c89b7){_0x5e9690=_0x5e9690-0x0;var _0x73805b=_0x8aec[_0x5e9690];return _0x73805b;};'use strict';var TeamEvents=require(_0xc8ae('0x0'));var events=['save',_0xc8ae('0x1'),_0xc8ae('0x2')];function createListener(_0x118f4a,_0x229b06){return function(_0x265076){_0x229b06[_0xc8ae('0x3')](_0x118f4a,_0x265076);};}function removeListener(_0x1c0445,_0x1b6ed6){return function(){TeamEvents['removeListener'](_0x1c0445,_0x1b6ed6);};}exports[_0xc8ae('0x4')]=function(_0x3309ae){for(var _0xe0d782=0x0,_0x327874=events[_0xc8ae('0x5')];_0xe0d782<_0x327874;_0xe0d782++){var _0x4be112=events[_0xe0d782];var _0x13de7e=createListener('team:'+_0x4be112,_0x3309ae);TeamEvents['on'](_0x4be112,_0x13de7e);}};
\ No newline at end of file
+var _0xbccf=['removeListener','register','length','team:','./team.events','remove'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xbccf,0x1d2));var _0xfbcc=function(_0x142020,_0x1f7233){_0x142020=_0x142020-0x0;var _0x40da8f=_0xbccf[_0x142020];return _0x40da8f;};'use strict';var TeamEvents=require(_0xfbcc('0x0'));var events=['save',_0xfbcc('0x1'),'update'];function createListener(_0x444358,_0x3b2b79){return function(_0x5f3121){_0x3b2b79['emit'](_0x444358,_0x5f3121);};}function removeListener(_0x15eadf,_0x421179){return function(){TeamEvents[_0xfbcc('0x2')](_0x15eadf,_0x421179);};}exports[_0xfbcc('0x3')]=function(_0x24704a){for(var _0x1f6935=0x0,_0x1c07f6=events[_0xfbcc('0x4')];_0x1f6935<_0x1c07f6;_0x1f6935++){var _0x28bda7=events[_0x1f6935];var _0x312c50=createListener(_0xfbcc('0x5')+_0x28bda7,_0x24704a);TeamEvents['on'](_0x28bda7,_0x312c50);}};
\ No newline at end of file
index e2422ed..02fa701 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(_0x66b114,_0x3cf199){var _0x456b4d=function(_0x3888be){while(--_0x3888be){_0x66b114['push'](_0x66b114['shift']());}};_0x456b4d(++_0x3cf199);}(_0x70e0,0x17b));var _0x070e=function(_0x10adda,_0x25f43a){_0x10adda=_0x10adda-0x0;var _0xe4d229=_0x70e0[_0x10adda];return _0xe4d229;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x2b63e3,_0x3d2443){var _0x40049d=function(_0x3b708f){while(--_0x3b708f){_0x2b63e3['push'](_0x2b63e3['shift']());}};_0x40049d(++_0x3d2443);}(_0x70e0,0x17b));var _0x070e=function(_0x3f2713,_0x18a3ae){_0x3f2713=_0x3f2713-0x0;var _0x306961=_0x70e0[_0x3f2713];return _0x306961;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index 6f612e8..f423c7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70df=['INTEGER','exports'];(function(_0x54e6f5,_0x4f4e99){var _0x5e8794=function(_0x27512b){while(--_0x27512b){_0x54e6f5['push'](_0x54e6f5['shift']());}};_0x5e8794(++_0x4f4e99);}(_0x70df,0xe5));var _0xf70d=function(_0x3d1467,_0x29ee5b){_0x3d1467=_0x3d1467-0x0;var _0x580c50=_0x70df[_0x3d1467];return _0x580c50;};'use strict';var Sequelize=require('sequelize');module[_0xf70d('0x0')]={'penalty':{'type':Sequelize[_0xf70d('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3b90=['sequelize','INTEGER'];(function(_0x274b16,_0x5d7ef1){var _0x32e340=function(_0x2e485f){while(--_0x2e485f){_0x274b16['push'](_0x274b16['shift']());}};_0x32e340(++_0x5d7ef1);}(_0x3b90,0xb6));var _0x03b9=function(_0x51b661,_0x566ef8){_0x51b661=_0x51b661-0x0;var _0x5d1971=_0x3b90[_0x51b661];return _0x5d1971;};'use strict';var Sequelize=require(_0x03b9('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x03b9('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index ef8604a..3afb335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb8=['TeamVoiceQueue','team_has_voice_queues','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','define'];(function(_0x4f18ed,_0x4fd7b1){var _0x3e8b37=function(_0x5dc81e){while(--_0x5dc81e){_0x4f18ed['push'](_0x4f18ed['shift']());}};_0x3e8b37(++_0x4fd7b1);}(_0xadb8,0x1d0));var _0x8adb=function(_0x3504a0,_0x3f770f){_0x3504a0=_0x3504a0-0x0;var _0x3dfca3=_0xadb8[_0x3504a0];return _0x3dfca3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8adb('0x0'))('api');var moment=require(_0x8adb('0x1'));var BPromise=require(_0x8adb('0x2'));var rp=require(_0x8adb('0x3'));var fs=require('fs');var path=require(_0x8adb('0x4'));var rimraf=require(_0x8adb('0x5'));var config=require(_0x8adb('0x6'));var attributes=require(_0x8adb('0x7'));module['exports']=function(_0x15bc63,_0x1a5f36){return _0x15bc63[_0x8adb('0x8')](_0x8adb('0x9'),attributes,{'tableName':_0x8adb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb492=['path','rimraf','../../config/environment','./teamVoiceQueue.attributes','define','TeamVoiceQueue','team_has_voice_queues','util','../../config/logger','api','moment'];(function(_0x4921cb,_0x4b0f35){var _0x58f2ea=function(_0x146280){while(--_0x146280){_0x4921cb['push'](_0x4921cb['shift']());}};_0x58f2ea(++_0x4b0f35);}(_0xb492,0x172));var _0x2b49=function(_0x2022d3,_0x5d6c64){_0x2022d3=_0x2022d3-0x0;var _0x3d467c=_0xb492[_0x2022d3];return _0x3d467c;};'use strict';var _=require('lodash');var util=require(_0x2b49('0x0'));var logger=require(_0x2b49('0x1'))(_0x2b49('0x2'));var moment=require(_0x2b49('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2b49('0x4'));var rimraf=require(_0x2b49('0x5'));var config=require(_0x2b49('0x6'));var attributes=require(_0x2b49('0x7'));module['exports']=function(_0x53508a,_0x346359){return _0x53508a[_0x2b49('0x8')](_0x2b49('0x9'),attributes,{'tableName':_0x2b49('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d57778e..69f3db4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad36=['TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x16c49a,_0x48d9d5){var _0x981f8f=function(_0xc82bc8){while(--_0xc82bc8){_0x16c49a['push'](_0x16c49a['shift']());}};_0x981f8f(++_0x48d9d5);}(_0xad36,0x11c));var _0x6ad3=function(_0x18fa97,_0x14b8be){_0x18fa97=_0x18fa97-0x0;var _0x3128ea=_0xad36[_0x18fa97];return _0x3128ea;};'use strict';var _=require('lodash');var util=require(_0x6ad3('0x0'));var moment=require(_0x6ad3('0x1'));var BPromise=require(_0x6ad3('0x2'));var rs=require(_0x6ad3('0x3'));var fs=require('fs');var Redis=require(_0x6ad3('0x4'));var db=require(_0x6ad3('0x5'))['db'];var utils=require(_0x6ad3('0x6'));var logger=require(_0x6ad3('0x7'))(_0x6ad3('0x8'));var config=require('../../config/environment');var jayson=require(_0x6ad3('0x9'));var client=jayson[_0x6ad3('0xa')][_0x6ad3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xb38339,_0x4a4ad8,_0x5693c1){return new BPromise(function(_0x50913c,_0x563396){return client[_0x6ad3('0xc')](_0xb38339,_0x5693c1)[_0x6ad3('0xd')](function(_0x363032){logger[_0x6ad3('0xe')](_0x6ad3('0xf'),_0x4a4ad8,_0x6ad3('0x10'));logger[_0x6ad3('0x11')](_0x6ad3('0x12'),_0x4a4ad8,_0x6ad3('0x10'),JSON['stringify'](_0x363032));if(_0x363032[_0x6ad3('0x13')]){if(_0x363032[_0x6ad3('0x13')][_0x6ad3('0x14')]===0x1f4){logger[_0x6ad3('0x13')](_0x6ad3('0xf'),_0x4a4ad8,_0x363032[_0x6ad3('0x13')][_0x6ad3('0x15')]);return _0x563396(_0x363032[_0x6ad3('0x13')]['message']);}logger[_0x6ad3('0x13')]('TeamVoiceQueue,\x20%s,\x20%s',_0x4a4ad8,_0x363032[_0x6ad3('0x13')][_0x6ad3('0x15')]);return _0x50913c(_0x363032[_0x6ad3('0x13')][_0x6ad3('0x15')]);}else{logger[_0x6ad3('0xe')]('TeamVoiceQueue,\x20%s,\x20%s',_0x4a4ad8,_0x6ad3('0x10'));_0x50913c(_0x363032[_0x6ad3('0x16')][_0x6ad3('0x15')]);}})['catch'](function(_0x5479b8){logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x4a4ad8,_0x5479b8);_0x563396(_0x5479b8);});});}
\ No newline at end of file
+var _0x79e0=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils'];(function(_0x411556,_0x4a6e49){var _0x57b436=function(_0x18076a){while(--_0x18076a){_0x411556['push'](_0x411556['shift']());}};_0x57b436(++_0x4a6e49);}(_0x79e0,0x1f4));var _0x079e=function(_0x44c768,_0x552a5e){_0x44c768=_0x44c768-0x0;var _0x55daf5=_0x79e0[_0x44c768];return _0x55daf5;};'use strict';var _=require(_0x079e('0x0'));var util=require(_0x079e('0x1'));var moment=require(_0x079e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x079e('0x3'));var db=require(_0x079e('0x4'))['db'];var utils=require(_0x079e('0x5'));var logger=require(_0x079e('0x6'))(_0x079e('0x7'));var config=require(_0x079e('0x8'));var jayson=require(_0x079e('0x9'));var client=jayson[_0x079e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ee29a,_0x476a22,_0x4e04bc){return new BPromise(function(_0x2f1ba9,_0x4dba5e){return client[_0x079e('0xb')](_0x4ee29a,_0x4e04bc)[_0x079e('0xc')](function(_0x30b392){logger[_0x079e('0xd')](_0x079e('0xe'),_0x476a22,'request\x20sent');logger[_0x079e('0xf')](_0x079e('0x10'),_0x476a22,_0x079e('0x11'),JSON[_0x079e('0x12')](_0x30b392));if(_0x30b392[_0x079e('0x13')]){if(_0x30b392[_0x079e('0x13')][_0x079e('0x14')]===0x1f4){logger[_0x079e('0x13')](_0x079e('0xe'),_0x476a22,_0x30b392[_0x079e('0x13')][_0x079e('0x15')]);return _0x4dba5e(_0x30b392[_0x079e('0x13')][_0x079e('0x15')]);}logger[_0x079e('0x13')](_0x079e('0xe'),_0x476a22,_0x30b392[_0x079e('0x13')][_0x079e('0x15')]);return _0x2f1ba9(_0x30b392['error'][_0x079e('0x15')]);}else{logger[_0x079e('0xd')]('TeamVoiceQueue,\x20%s,\x20%s',_0x476a22,_0x079e('0x11'));_0x2f1ba9(_0x30b392['result'][_0x079e('0x15')]);}})[_0x079e('0x16')](function(_0x51a987){logger[_0x079e('0x13')](_0x079e('0xe'),_0x476a22,_0x51a987);_0x4dba5e(_0x51a987);});});}
\ No newline at end of file
index 932cc8e..c530595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3eb=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','index'];(function(_0x12be85,_0x4a5721){var _0x5a1135=function(_0x5663ce){while(--_0x5663ce){_0x12be85['push'](_0x12be85['shift']());}};_0x5a1135(++_0x4a5721);}(_0xa3eb,0x1ed));var _0xba3e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa3eb[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0xba3e('0x0'));var util=require(_0xba3e('0x1'));var path=require(_0xba3e('0x2'));var timeout=require('connect-timeout');var express=require(_0xba3e('0x3'));var router=express[_0xba3e('0x4')]();var fs_extra=require(_0xba3e('0x5'));var auth=require(_0xba3e('0x6'));var interaction=require(_0xba3e('0x7'));var config=require(_0xba3e('0x8'));var controller=require(_0xba3e('0x9'));router[_0xba3e('0xa')]('/',auth[_0xba3e('0xb')](),controller[_0xba3e('0xc')]);router[_0xba3e('0xa')](_0xba3e('0xd'),auth[_0xba3e('0xb')](),controller[_0xba3e('0xe')]);router[_0xba3e('0xf')]('/',auth[_0xba3e('0xb')](),controller[_0xba3e('0x10')]);router[_0xba3e('0x11')](_0xba3e('0xd'),auth['isAuthenticated'](),controller[_0xba3e('0x12')]);router[_0xba3e('0x13')](_0xba3e('0xd'),auth['isAuthenticated'](),controller[_0xba3e('0x14')]);module[_0xba3e('0x15')]=router;
\ No newline at end of file
+var _0x9219=['isAuthenticated','show','post','delete','destroy','exports','express','../../components/auth/service','./template.controller','get','index','/:id'];(function(_0x200fc2,_0x415f7c){var _0x49ff6e=function(_0x50adc3){while(--_0x50adc3){_0x200fc2['push'](_0x200fc2['shift']());}};_0x49ff6e(++_0x415f7c);}(_0x9219,0x19e));var _0x9921=function(_0x2ad758,_0x5b37a5){_0x2ad758=_0x2ad758-0x0;var _0x4072df=_0x9219[_0x2ad758];return _0x4072df;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9921('0x0'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9921('0x1'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9921('0x2'));router[_0x9921('0x3')]('/',auth['isAuthenticated'](),controller[_0x9921('0x4')]);router[_0x9921('0x3')](_0x9921('0x5'),auth[_0x9921('0x6')](),controller[_0x9921('0x7')]);router[_0x9921('0x8')]('/',auth[_0x9921('0x6')](),controller['create']);router['put']('/:id',auth[_0x9921('0x6')](),controller['update']);router[_0x9921('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x9921('0xa')]);module[_0x9921('0xb')]=router;
\ No newline at end of file
index fa792e2..c0a675e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcc0=['TEXT','sequelize','exports','STRING'];(function(_0x21d048,_0x4103b2){var _0x2f53ef=function(_0x4c8e5e){while(--_0x4c8e5e){_0x21d048['push'](_0x21d048['shift']());}};_0x2f53ef(++_0x4103b2);}(_0xdcc0,0x17d));var _0x0dcc=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xdcc0[_0x47a7d0];return _0xb9bd08;};'use strict';var Sequelize=require(_0x0dcc('0x0'));module[_0x0dcc('0x1')]={'name':{'type':Sequelize[_0x0dcc('0x2')]},'description':{'type':Sequelize[_0x0dcc('0x2')]},'html':{'type':Sequelize[_0x0dcc('0x3')]}};
\ No newline at end of file
+var _0xaf7b=['sequelize','exports','STRING','TEXT'];(function(_0x379d30,_0x29d109){var _0x4512ea=function(_0x48cb0d){while(--_0x48cb0d){_0x379d30['push'](_0x379d30['shift']());}};_0x4512ea(++_0x29d109);}(_0xaf7b,0x104));var _0xbaf7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaf7b[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xbaf7('0x0'));module[_0xbaf7('0x1')]={'name':{'type':Sequelize[_0xbaf7('0x2')]},'description':{'type':Sequelize[_0xbaf7('0x2')]},'html':{'type':Sequelize[_0xbaf7('0x3')]}};
\ No newline at end of file
index 6889c5f..4ebf20b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9ae=['model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','findAll','catch','show','params','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','get','Templates','UserProfileResource','error','stack','name','send','index','Template','rawAttributes','fieldName','type'];(function(_0x22fbf8,_0x2499cd){var _0x512fdf=function(_0x200c34){while(--_0x200c34){_0x22fbf8['push'](_0x22fbf8['shift']());}};_0x512fdf(++_0x2499cd);}(_0xb9ae,0x1df));var _0xeb9a=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xb9ae[_0x40a045];return _0x1a687c;};'use strict';var emlformat=require(_0xeb9a('0x0'));var rimraf=require(_0xeb9a('0x1'));var zipdir=require(_0xeb9a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xeb9a('0x3'));var moment=require(_0xeb9a('0x4'));var BPromise=require(_0xeb9a('0x5'));var Mustache=require(_0xeb9a('0x6'));var util=require(_0xeb9a('0x7'));var path=require(_0xeb9a('0x8'));var sox=require(_0xeb9a('0x9'));var csv=require(_0xeb9a('0xa'));var ejs=require(_0xeb9a('0xb'));var fs=require('fs');var fs_extra=require(_0xeb9a('0xc'));var _=require(_0xeb9a('0xd'));var squel=require(_0xeb9a('0xe'));var crypto=require(_0xeb9a('0xf'));var jsforce=require(_0xeb9a('0x10'));var deskjs=require(_0xeb9a('0x11'));var toCsv=require('to-csv');var querystring=require(_0xeb9a('0x12'));var Papa=require(_0xeb9a('0x13'));var Redis=require(_0xeb9a('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xeb9a('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xeb9a('0x16'));var logger=require(_0xeb9a('0x17'))(_0xeb9a('0x18'));var utils=require(_0xeb9a('0x19'));var config=require(_0xeb9a('0x1a'));var licenseUtil=require(_0xeb9a('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3cc749,_0x54017f){_0x54017f=_0x54017f||0xcc;return function(_0x413688){if(_0x413688){return _0x3cc749[_0xeb9a('0x1c')](_0x54017f);}return _0x3cc749[_0xeb9a('0x1d')](_0x54017f)[_0xeb9a('0x1e')]();};}function respondWithResult(_0x459b9b,_0x4310a3){_0x4310a3=_0x4310a3||0xc8;return function(_0x504e4c){if(_0x504e4c){return _0x459b9b[_0xeb9a('0x1d')](_0x4310a3)[_0xeb9a('0x1f')](_0x504e4c);}};}function respondWithFilteredResult(_0x47aaf0,_0x1eba68){return function(_0x266459){if(_0x266459){var _0x5db0f3=typeof _0x1eba68[_0xeb9a('0x20')]===_0xeb9a('0x21')&&typeof _0x1eba68['limit']===_0xeb9a('0x21');var _0xaee202=_0x266459[_0xeb9a('0x22')];var _0x442a49=_0x5db0f3?0x0:_0x1eba68[_0xeb9a('0x20')];var _0x8d785b=_0x5db0f3?_0x266459['count']:_0x1eba68['offset']+_0x1eba68[_0xeb9a('0x23')];var _0x57c52e;if(_0x8d785b>=_0xaee202){_0x8d785b=_0xaee202;_0x57c52e=0xc8;}else{_0x57c52e=0xce;}_0x47aaf0['status'](_0x57c52e);return _0x47aaf0[_0xeb9a('0x24')](_0xeb9a('0x25'),_0x442a49+'-'+_0x8d785b+'/'+_0xaee202)[_0xeb9a('0x1f')](_0x266459);}return null;};}function patchUpdates(_0x582d8){return function(_0x223479){try{jsonpatch[_0xeb9a('0x26')](_0x223479,_0x582d8,!![]);}catch(_0x4c5e34){return BPromise[_0xeb9a('0x27')](_0x4c5e34);}return _0x223479[_0xeb9a('0x28')]();};}function saveUpdates(_0x3529fc,_0x31807a){return function(_0x315c0f){if(_0x315c0f){return _0x315c0f['update'](_0x3529fc)[_0xeb9a('0x29')](function(_0xc802b){return _0xc802b;});}return null;};}function removeEntity(_0x4d7399,_0x425e63){return function(_0x2b8eb3){if(_0x2b8eb3){return _0x2b8eb3[_0xeb9a('0x2a')]()[_0xeb9a('0x29')](function(){var _0x257b2a=_0x2b8eb3[_0xeb9a('0x2b')]({'plain':!![]});var _0x1d757b=_0xeb9a('0x2c');return db[_0xeb9a('0x2d')][_0xeb9a('0x2a')]({'where':{'type':_0x1d757b,'resourceId':_0x257b2a['id']}})['then'](function(){return _0x2b8eb3;});})[_0xeb9a('0x29')](function(){_0x4d7399[_0xeb9a('0x1d')](0xcc)[_0xeb9a('0x1e')]();});}};}function handleEntityNotFound(_0x3955bb,_0x33ec95){return function(_0x1ec8da){if(!_0x1ec8da){_0x3955bb[_0xeb9a('0x1c')](0x194);}return _0x1ec8da;};}function handleError(_0x54b0bb,_0x305b80){_0x305b80=_0x305b80||0x1f4;return function(_0x5c039a){logger[_0xeb9a('0x2e')](_0x5c039a[_0xeb9a('0x2f')]);if(_0x5c039a[_0xeb9a('0x30')]){delete _0x5c039a['name'];}_0x54b0bb['status'](_0x305b80)[_0xeb9a('0x31')](_0x5c039a);};}exports[_0xeb9a('0x32')]=function(_0x17106c,_0x25fa10){var _0x4da345={},_0x2cf699={},_0x15e82f={'count':0x0,'rows':[]};var _0xfd3c97=_['map'](db[_0xeb9a('0x33')][_0xeb9a('0x34')],function(_0x4c402e){return{'name':_0x4c402e[_0xeb9a('0x35')],'type':_0x4c402e[_0xeb9a('0x36')]['key']};});_0x2cf699[_0xeb9a('0x37')]=_[_0xeb9a('0x38')](_0xfd3c97,_0xeb9a('0x30'));_0x2cf699[_0xeb9a('0x39')]=_[_0xeb9a('0x3a')](_0x17106c[_0xeb9a('0x39')]);_0x2cf699[_0xeb9a('0x3b')]=_['intersection'](_0x2cf699['model'],_0x2cf699[_0xeb9a('0x39')]);_0x4da345['attributes']=_[_0xeb9a('0x3c')](_0x2cf699[_0xeb9a('0x37')],qs[_0xeb9a('0x3d')](_0x17106c[_0xeb9a('0x39')][_0xeb9a('0x3d')]));_0x4da345['attributes']=_0x4da345[_0xeb9a('0x3e')][_0xeb9a('0x3f')]?_0x4da345['attributes']:_0x2cf699[_0xeb9a('0x37')];if(!_0x17106c[_0xeb9a('0x39')]['hasOwnProperty'](_0xeb9a('0x40'))){_0x4da345['limit']=qs[_0xeb9a('0x23')](_0x17106c[_0xeb9a('0x39')][_0xeb9a('0x23')]);_0x4da345[_0xeb9a('0x20')]=qs[_0xeb9a('0x20')](_0x17106c[_0xeb9a('0x39')]['offset']);}_0x4da345[_0xeb9a('0x41')]=qs[_0xeb9a('0x42')](_0x17106c['query'][_0xeb9a('0x42')]);_0x4da345['where']=qs[_0xeb9a('0x3b')](_[_0xeb9a('0x43')](_0x17106c[_0xeb9a('0x39')],_0x2cf699['filters']),_0xfd3c97);if(_0x17106c[_0xeb9a('0x39')][_0xeb9a('0x44')]){_0x4da345[_0xeb9a('0x45')]=_[_0xeb9a('0x46')](_0x4da345['where'],{'$or':_['map'](_0xfd3c97,function(_0x1bc976){if(_0x1bc976['type']!==_0xeb9a('0x47')){var _0x2a006e={};_0x2a006e[_0x1bc976[_0xeb9a('0x30')]]={'$like':'%'+_0x17106c[_0xeb9a('0x39')][_0xeb9a('0x44')]+'%'};return _0x2a006e;}})});}_0x4da345=_[_0xeb9a('0x46')]({},_0x4da345,_0x17106c['options']);var _0x87d0d5={'where':_0x4da345['where']};return db[_0xeb9a('0x33')]['count'](_0x87d0d5)[_0xeb9a('0x29')](function(_0x501f74){_0x15e82f[_0xeb9a('0x22')]=_0x501f74;if(_0x17106c[_0xeb9a('0x39')][_0xeb9a('0x48')]){_0x4da345['include']=[{'all':!![]}];}return db[_0xeb9a('0x33')][_0xeb9a('0x49')](_0x4da345);})['then'](function(_0xd46edd){_0x15e82f['rows']=_0xd46edd;return _0x15e82f;})['then'](respondWithFilteredResult(_0x25fa10,_0x4da345))[_0xeb9a('0x4a')](handleError(_0x25fa10,null));};exports[_0xeb9a('0x4b')]=function(_0x2cf18e,_0x19cc81){var _0x3b17ff={'raw':!![],'where':{'id':_0x2cf18e[_0xeb9a('0x4c')]['id']}},_0x1d1564={};_0x1d1564[_0xeb9a('0x37')]=_[_0xeb9a('0x3a')](db['Template']['rawAttributes']);_0x1d1564[_0xeb9a('0x39')]=_[_0xeb9a('0x3a')](_0x2cf18e['query']);_0x1d1564[_0xeb9a('0x3b')]=_[_0xeb9a('0x3c')](_0x1d1564['model'],_0x1d1564['query']);_0x3b17ff[_0xeb9a('0x3e')]=_[_0xeb9a('0x3c')](_0x1d1564[_0xeb9a('0x37')],qs[_0xeb9a('0x3d')](_0x2cf18e[_0xeb9a('0x39')][_0xeb9a('0x3d')]));_0x3b17ff[_0xeb9a('0x3e')]=_0x3b17ff[_0xeb9a('0x3e')][_0xeb9a('0x3f')]?_0x3b17ff[_0xeb9a('0x3e')]:_0x1d1564[_0xeb9a('0x37')];if(_0x2cf18e[_0xeb9a('0x39')][_0xeb9a('0x48')]){_0x3b17ff[_0xeb9a('0x4d')]=[{'all':!![]}];}_0x3b17ff=_['merge']({},_0x3b17ff,_0x2cf18e[_0xeb9a('0x4e')]);return db['Template'][_0xeb9a('0x4f')](_0x3b17ff)[_0xeb9a('0x29')](handleEntityNotFound(_0x19cc81,null))['then'](respondWithResult(_0x19cc81,null))[_0xeb9a('0x4a')](handleError(_0x19cc81,null));};exports[_0xeb9a('0x50')]=function(_0x112b74,_0x39cdc3){return db['Template'][_0xeb9a('0x50')](_0x112b74[_0xeb9a('0x51')],{})[_0xeb9a('0x29')](function(_0x351441){var _0x180c48=_0x112b74[_0xeb9a('0x52')]['get']({'plain':!![]});if(!_0x180c48)throw new Error(_0xeb9a('0x53'));if(_0x180c48[_0xeb9a('0x54')]===_0xeb9a('0x52')){var _0x2433c1=_0x351441[_0xeb9a('0x2b')]({'plain':!![]});var _0x549cc0=_0xeb9a('0x2c');return db[_0xeb9a('0x55')]['find']({'where':{'name':_0x549cc0,'userProfileId':_0x180c48[_0xeb9a('0x56')]},'raw':!![]})[_0xeb9a('0x29')](function(_0x3e2673){if(_0x3e2673&&_0x3e2673['autoAssociation']===0x0){return db['UserProfileResource'][_0xeb9a('0x50')]({'name':_0x2433c1['name'],'resourceId':_0x2433c1['id'],'type':_0x3e2673[_0xeb9a('0x30')],'sectionId':_0x3e2673['id']},{})[_0xeb9a('0x29')](function(){return _0x351441;});}else{return _0x351441;}})[_0xeb9a('0x4a')](function(_0xe250b9){logger[_0xeb9a('0x2e')](_0xeb9a('0x57'),_0xe250b9);throw _0xe250b9;});}return _0x351441;})[_0xeb9a('0x29')](respondWithResult(_0x39cdc3,0xc9))['catch'](handleError(_0x39cdc3,null));};exports[_0xeb9a('0x58')]=function(_0x39d49a,_0x3f71ee){if(_0x39d49a['body']['id']){delete _0x39d49a[_0xeb9a('0x51')]['id'];}return db[_0xeb9a('0x33')][_0xeb9a('0x4f')]({'where':{'id':_0x39d49a[_0xeb9a('0x4c')]['id']}})[_0xeb9a('0x29')](handleEntityNotFound(_0x3f71ee,null))[_0xeb9a('0x29')](saveUpdates(_0x39d49a[_0xeb9a('0x51')],null))[_0xeb9a('0x29')](respondWithResult(_0x3f71ee,null))[_0xeb9a('0x4a')](handleError(_0x3f71ee,null));};exports[_0xeb9a('0x2a')]=function(_0x6d0d41,_0x2b1da5){return db[_0xeb9a('0x33')][_0xeb9a('0x4f')]({'where':{'id':_0x6d0d41[_0xeb9a('0x4c')]['id']}})[_0xeb9a('0x29')](handleEntityNotFound(_0x2b1da5,null))[_0xeb9a('0x29')](removeEntity(_0x2b1da5,null))[_0xeb9a('0x4a')](handleError(_0x2b1da5,null));};
\ No newline at end of file
+var _0x7903=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','Templates','UserProfileResource','destroy','error','name','send','index','map','Template','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','filters','length','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x4cfc1d,_0x2c0927){var _0x1c01a0=function(_0x264a74){while(--_0x264a74){_0x4cfc1d['push'](_0x4cfc1d['shift']());}};_0x1c01a0(++_0x2c0927);}(_0x7903,0x143));var _0x3790=function(_0x16d2d9,_0x24af7e){_0x16d2d9=_0x16d2d9-0x0;var _0x51c3e6=_0x7903[_0x16d2d9];return _0x51c3e6;};'use strict';var emlformat=require(_0x3790('0x0'));var rimraf=require(_0x3790('0x1'));var zipdir=require(_0x3790('0x2'));var jsonpatch=require(_0x3790('0x3'));var rp=require(_0x3790('0x4'));var moment=require(_0x3790('0x5'));var BPromise=require(_0x3790('0x6'));var Mustache=require(_0x3790('0x7'));var util=require(_0x3790('0x8'));var path=require('path');var sox=require(_0x3790('0x9'));var csv=require(_0x3790('0xa'));var ejs=require(_0x3790('0xb'));var fs=require('fs');var fs_extra=require(_0x3790('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3790('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3790('0xe'));var toCsv=require(_0x3790('0xa'));var querystring=require('querystring');var Papa=require(_0x3790('0xf'));var Redis=require('ioredis');var authService=require(_0x3790('0x10'));var qs=require(_0x3790('0x11'));var as=require(_0x3790('0x12'));var hardwareService=require(_0x3790('0x13'));var logger=require(_0x3790('0x14'))(_0x3790('0x15'));var utils=require(_0x3790('0x16'));var config=require(_0x3790('0x17'));var licenseUtil=require(_0x3790('0x18'));var db=require(_0x3790('0x19'))['db'];function respondWithStatusCode(_0x2d15c6,_0x506d31){_0x506d31=_0x506d31||0xcc;return function(_0x20ad9a){if(_0x20ad9a){return _0x2d15c6[_0x3790('0x1a')](_0x506d31);}return _0x2d15c6[_0x3790('0x1b')](_0x506d31)[_0x3790('0x1c')]();};}function respondWithResult(_0xf08c55,_0x5055f3){_0x5055f3=_0x5055f3||0xc8;return function(_0x249976){if(_0x249976){return _0xf08c55[_0x3790('0x1b')](_0x5055f3)[_0x3790('0x1d')](_0x249976);}};}function respondWithFilteredResult(_0x2abfd7,_0x3f1d18){return function(_0x3376e3){if(_0x3376e3){var _0x8a90fb=typeof _0x3f1d18[_0x3790('0x1e')]===_0x3790('0x1f')&&typeof _0x3f1d18[_0x3790('0x20')]===_0x3790('0x1f');var _0x5f5d2b=_0x3376e3[_0x3790('0x21')];var _0xfc699e=_0x8a90fb?0x0:_0x3f1d18['offset'];var _0x56e519=_0x8a90fb?_0x3376e3[_0x3790('0x21')]:_0x3f1d18[_0x3790('0x1e')]+_0x3f1d18[_0x3790('0x20')];var _0xccae63;if(_0x56e519>=_0x5f5d2b){_0x56e519=_0x5f5d2b;_0xccae63=0xc8;}else{_0xccae63=0xce;}_0x2abfd7[_0x3790('0x1b')](_0xccae63);return _0x2abfd7[_0x3790('0x22')](_0x3790('0x23'),_0xfc699e+'-'+_0x56e519+'/'+_0x5f5d2b)[_0x3790('0x1d')](_0x3376e3);}return null;};}function patchUpdates(_0x43949b){return function(_0x4cce64){try{jsonpatch[_0x3790('0x24')](_0x4cce64,_0x43949b,!![]);}catch(_0x1dba18){return BPromise['reject'](_0x1dba18);}return _0x4cce64[_0x3790('0x25')]();};}function saveUpdates(_0x4b6616,_0x41769b){return function(_0x28ecf1){if(_0x28ecf1){return _0x28ecf1[_0x3790('0x26')](_0x4b6616)[_0x3790('0x27')](function(_0x3b2542){return _0x3b2542;});}return null;};}function removeEntity(_0x376051,_0x5bb60d){return function(_0x42742a){if(_0x42742a){return _0x42742a['destroy']()[_0x3790('0x27')](function(){var _0x4b7689=_0x42742a['get']({'plain':!![]});var _0x4e3901=_0x3790('0x28');return db[_0x3790('0x29')][_0x3790('0x2a')]({'where':{'type':_0x4e3901,'resourceId':_0x4b7689['id']}})[_0x3790('0x27')](function(){return _0x42742a;});})[_0x3790('0x27')](function(){_0x376051['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x22a89f,_0x230d0f){return function(_0xc161a2){if(!_0xc161a2){_0x22a89f[_0x3790('0x1a')](0x194);}return _0xc161a2;};}function handleError(_0x1ebfd8,_0x320d0c){_0x320d0c=_0x320d0c||0x1f4;return function(_0x2fb8f5){logger[_0x3790('0x2b')](_0x2fb8f5['stack']);if(_0x2fb8f5[_0x3790('0x2c')]){delete _0x2fb8f5[_0x3790('0x2c')];}_0x1ebfd8[_0x3790('0x1b')](_0x320d0c)[_0x3790('0x2d')](_0x2fb8f5);};}exports[_0x3790('0x2e')]=function(_0x9cbe97,_0x5e8b63){var _0x53166a={},_0x3bbc20={},_0x52512c={'count':0x0,'rows':[]};var _0x3e73ed=_[_0x3790('0x2f')](db[_0x3790('0x30')][_0x3790('0x31')],function(_0x24a184){return{'name':_0x24a184[_0x3790('0x32')],'type':_0x24a184[_0x3790('0x33')][_0x3790('0x34')]};});_0x3bbc20['model']=_[_0x3790('0x2f')](_0x3e73ed,'name');_0x3bbc20[_0x3790('0x35')]=_[_0x3790('0x36')](_0x9cbe97[_0x3790('0x35')]);_0x3bbc20['filters']=_[_0x3790('0x37')](_0x3bbc20[_0x3790('0x38')],_0x3bbc20['query']);_0x53166a[_0x3790('0x39')]=_[_0x3790('0x37')](_0x3bbc20[_0x3790('0x38')],qs[_0x3790('0x3a')](_0x9cbe97[_0x3790('0x35')][_0x3790('0x3a')]));_0x53166a['attributes']=_0x53166a['attributes']['length']?_0x53166a[_0x3790('0x39')]:_0x3bbc20['model'];if(!_0x9cbe97['query'][_0x3790('0x3b')]('nolimit')){_0x53166a[_0x3790('0x20')]=qs['limit'](_0x9cbe97[_0x3790('0x35')][_0x3790('0x20')]);_0x53166a[_0x3790('0x1e')]=qs[_0x3790('0x1e')](_0x9cbe97[_0x3790('0x35')]['offset']);}_0x53166a[_0x3790('0x3c')]=qs[_0x3790('0x3d')](_0x9cbe97[_0x3790('0x35')]['sort']);_0x53166a['where']=qs['filters'](_[_0x3790('0x3e')](_0x9cbe97['query'],_0x3bbc20['filters']),_0x3e73ed);if(_0x9cbe97[_0x3790('0x35')]['filter']){_0x53166a[_0x3790('0x3f')]=_[_0x3790('0x40')](_0x53166a[_0x3790('0x3f')],{'$or':_[_0x3790('0x2f')](_0x3e73ed,function(_0x377eb1){if(_0x377eb1[_0x3790('0x33')]!==_0x3790('0x41')){var _0x5d96d0={};_0x5d96d0[_0x377eb1['name']]={'$like':'%'+_0x9cbe97[_0x3790('0x35')][_0x3790('0x42')]+'%'};return _0x5d96d0;}})});}_0x53166a=_[_0x3790('0x40')]({},_0x53166a,_0x9cbe97[_0x3790('0x43')]);var _0x35c538={'where':_0x53166a[_0x3790('0x3f')]};return db[_0x3790('0x30')][_0x3790('0x21')](_0x35c538)[_0x3790('0x27')](function(_0x4a4ba8){_0x52512c[_0x3790('0x21')]=_0x4a4ba8;if(_0x9cbe97[_0x3790('0x35')][_0x3790('0x44')]){_0x53166a[_0x3790('0x45')]=[{'all':!![]}];}return db[_0x3790('0x30')][_0x3790('0x46')](_0x53166a);})[_0x3790('0x27')](function(_0x3facd8){_0x52512c[_0x3790('0x47')]=_0x3facd8;return _0x52512c;})[_0x3790('0x27')](respondWithFilteredResult(_0x5e8b63,_0x53166a))[_0x3790('0x48')](handleError(_0x5e8b63,null));};exports[_0x3790('0x49')]=function(_0x4a82d5,_0x118795){var _0x1c6907={'raw':!![],'where':{'id':_0x4a82d5[_0x3790('0x4a')]['id']}},_0x55d341={};_0x55d341['model']=_[_0x3790('0x36')](db[_0x3790('0x30')][_0x3790('0x31')]);_0x55d341[_0x3790('0x35')]=_[_0x3790('0x36')](_0x4a82d5['query']);_0x55d341[_0x3790('0x4b')]=_['intersection'](_0x55d341[_0x3790('0x38')],_0x55d341['query']);_0x1c6907['attributes']=_[_0x3790('0x37')](_0x55d341[_0x3790('0x38')],qs[_0x3790('0x3a')](_0x4a82d5['query'][_0x3790('0x3a')]));_0x1c6907[_0x3790('0x39')]=_0x1c6907['attributes'][_0x3790('0x4c')]?_0x1c6907[_0x3790('0x39')]:_0x55d341['model'];if(_0x4a82d5[_0x3790('0x35')][_0x3790('0x44')]){_0x1c6907[_0x3790('0x45')]=[{'all':!![]}];}_0x1c6907=_[_0x3790('0x40')]({},_0x1c6907,_0x4a82d5['options']);return db[_0x3790('0x30')][_0x3790('0x4d')](_0x1c6907)[_0x3790('0x27')](handleEntityNotFound(_0x118795,null))[_0x3790('0x27')](respondWithResult(_0x118795,null))[_0x3790('0x48')](handleError(_0x118795,null));};exports[_0x3790('0x4e')]=function(_0x31f9b3,_0x327107){return db['Template'][_0x3790('0x4e')](_0x31f9b3[_0x3790('0x4f')],{})[_0x3790('0x27')](function(_0xba4018){var _0x5f15af=_0x31f9b3[_0x3790('0x50')][_0x3790('0x51')]({'plain':!![]});if(!_0x5f15af)throw new Error(_0x3790('0x52'));if(_0x5f15af['role']===_0x3790('0x50')){var _0x4303f5=_0xba4018['get']({'plain':!![]});var _0xb673b7=_0x3790('0x28');return db[_0x3790('0x53')][_0x3790('0x4d')]({'where':{'name':_0xb673b7,'userProfileId':_0x5f15af[_0x3790('0x54')]},'raw':!![]})[_0x3790('0x27')](function(_0xdd90e8){if(_0xdd90e8&&_0xdd90e8[_0x3790('0x55')]===0x0){return db[_0x3790('0x29')][_0x3790('0x4e')]({'name':_0x4303f5[_0x3790('0x2c')],'resourceId':_0x4303f5['id'],'type':_0xdd90e8[_0x3790('0x2c')],'sectionId':_0xdd90e8['id']},{})[_0x3790('0x27')](function(){return _0xba4018;});}else{return _0xba4018;}})[_0x3790('0x48')](function(_0x41e4ba){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x41e4ba);throw _0x41e4ba;});}return _0xba4018;})['then'](respondWithResult(_0x327107,0xc9))[_0x3790('0x48')](handleError(_0x327107,null));};exports[_0x3790('0x26')]=function(_0x28a3e6,_0x412fd1){if(_0x28a3e6[_0x3790('0x4f')]['id']){delete _0x28a3e6[_0x3790('0x4f')]['id'];}return db[_0x3790('0x30')][_0x3790('0x4d')]({'where':{'id':_0x28a3e6[_0x3790('0x4a')]['id']}})[_0x3790('0x27')](handleEntityNotFound(_0x412fd1,null))[_0x3790('0x27')](saveUpdates(_0x28a3e6[_0x3790('0x4f')],null))[_0x3790('0x27')](respondWithResult(_0x412fd1,null))[_0x3790('0x48')](handleError(_0x412fd1,null));};exports[_0x3790('0x2a')]=function(_0x1ef6d4,_0x29c716){return db[_0x3790('0x30')][_0x3790('0x4d')]({'where':{'id':_0x1ef6d4[_0x3790('0x4a')]['id']}})[_0x3790('0x27')](handleEntityNotFound(_0x29c716,null))['then'](removeEntity(_0x29c716,null))[_0x3790('0x48')](handleError(_0x29c716,null));};
\ No newline at end of file
index 3a44c01..d7411dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f4d=['rimraf','../../config/environment','exports','define','tools_templates','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4c260a,_0x148241){var _0x17bbdd=function(_0x4f3e9f){while(--_0x4f3e9f){_0x4c260a['push'](_0x4c260a['shift']());}};_0x17bbdd(++_0x148241);}(_0x7f4d,0x1e5));var _0xd7f4=function(_0x355012,_0x532775){_0x355012=_0x355012-0x0;var _0x141e24=_0x7f4d[_0x355012];return _0x141e24;};'use strict';var _=require(_0xd7f4('0x0'));var util=require(_0xd7f4('0x1'));var logger=require(_0xd7f4('0x2'))(_0xd7f4('0x3'));var moment=require(_0xd7f4('0x4'));var BPromise=require(_0xd7f4('0x5'));var rp=require(_0xd7f4('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd7f4('0x7'));var config=require(_0xd7f4('0x8'));var attributes=require('./template.attributes');module[_0xd7f4('0x9')]=function(_0x2c9df6,_0x198dd7){return _0x2c9df6[_0xd7f4('0xa')]('Template',attributes,{'tableName':_0xd7f4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xea68=['../../config/environment','Template','tools_templates','lodash','util','../../config/logger','api','moment','rimraf'];(function(_0x138d25,_0x3824e5){var _0x51d564=function(_0x520dbf){while(--_0x520dbf){_0x138d25['push'](_0x138d25['shift']());}};_0x51d564(++_0x3824e5);}(_0xea68,0xc0));var _0x8ea6=function(_0x433a07,_0x35dbf7){_0x433a07=_0x433a07-0x0;var _0x3592a8=_0xea68[_0x433a07];return _0x3592a8;};'use strict';var _=require(_0x8ea6('0x0'));var util=require(_0x8ea6('0x1'));var logger=require(_0x8ea6('0x2'))(_0x8ea6('0x3'));var moment=require(_0x8ea6('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8ea6('0x5'));var config=require(_0x8ea6('0x6'));var attributes=require('./template.attributes');module['exports']=function(_0x206e73,_0x293990){return _0x206e73['define'](_0x8ea6('0x7'),attributes,{'tableName':_0x8ea6('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2aeeac5..249370d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ac6=['Template,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','GetTemplate','Template','findAll','options','raw','where','attributes','limit','include','model','map','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0xe51522,_0x266bf5){var _0x5dac8a=function(_0x31b162){while(--_0x31b162){_0xe51522['push'](_0xe51522['shift']());}};_0x5dac8a(++_0x266bf5);}(_0x5ac6,0x151));var _0x65ac=function(_0x23c5ca,_0x27a725){_0x23c5ca=_0x23c5ca-0x0;var _0x1f640c=_0x5ac6[_0x23c5ca];return _0x1f640c;};'use strict';var _=require(_0x65ac('0x0'));var util=require(_0x65ac('0x1'));var moment=require(_0x65ac('0x2'));var BPromise=require(_0x65ac('0x3'));var rs=require(_0x65ac('0x4'));var fs=require('fs');var Redis=require(_0x65ac('0x5'));var db=require(_0x65ac('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x65ac('0x7'));var config=require(_0x65ac('0x8'));var jayson=require(_0x65ac('0x9'));var client=jayson[_0x65ac('0xa')][_0x65ac('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1b56c6,_0x53ac30,_0x26876e){return new BPromise(function(_0x5ad0bd,_0x326d8f){return client[_0x65ac('0xc')](_0x1b56c6,_0x26876e)['then'](function(_0x3af3fa){logger['info'](_0x65ac('0xd'),_0x53ac30,_0x65ac('0xe'));logger[_0x65ac('0xf')]('Template,\x20%s,\x20%s,\x20%s',_0x53ac30,'request\x20sent',JSON[_0x65ac('0x10')](_0x3af3fa));if(_0x3af3fa[_0x65ac('0x11')]){if(_0x3af3fa[_0x65ac('0x11')][_0x65ac('0x12')]===0x1f4){logger['error'](_0x65ac('0xd'),_0x53ac30,_0x3af3fa[_0x65ac('0x11')][_0x65ac('0x13')]);return _0x326d8f(_0x3af3fa[_0x65ac('0x11')]['message']);}logger[_0x65ac('0x11')](_0x65ac('0xd'),_0x53ac30,_0x3af3fa[_0x65ac('0x11')][_0x65ac('0x13')]);return _0x5ad0bd(_0x3af3fa[_0x65ac('0x11')][_0x65ac('0x13')]);}else{logger[_0x65ac('0x14')](_0x65ac('0xd'),_0x53ac30,_0x65ac('0xe'));_0x5ad0bd(_0x3af3fa[_0x65ac('0x15')]['message']);}})[_0x65ac('0x16')](function(_0x51990c){logger['error'](_0x65ac('0xd'),_0x53ac30,_0x51990c);_0x326d8f(_0x51990c);});});}exports[_0x65ac('0x17')]=function(_0x56aed8){var _0x143245=this;return new Promise(function(_0x2d302a,_0x564175){return db[_0x65ac('0x18')][_0x65ac('0x19')]({'raw':_0x56aed8[_0x65ac('0x1a')]?_0x56aed8[_0x65ac('0x1a')][_0x65ac('0x1b')]===undefined?!![]:![]:!![],'where':_0x56aed8[_0x65ac('0x1a')]?_0x56aed8[_0x65ac('0x1a')][_0x65ac('0x1c')]||null:null,'attributes':_0x56aed8[_0x65ac('0x1a')]?_0x56aed8[_0x65ac('0x1a')][_0x65ac('0x1d')]||null:null,'limit':_0x56aed8[_0x65ac('0x1a')]?_0x56aed8[_0x65ac('0x1a')][_0x65ac('0x1e')]||null:null,'include':_0x56aed8['options']?_0x56aed8[_0x65ac('0x1a')][_0x65ac('0x1f')]?_['map'](_0x56aed8[_0x65ac('0x1a')][_0x65ac('0x1f')],function(_0x50f6e8){return{'model':db[_0x50f6e8[_0x65ac('0x20')]],'as':_0x50f6e8['as'],'attributes':_0x50f6e8[_0x65ac('0x1d')],'include':_0x50f6e8[_0x65ac('0x1f')]?_[_0x65ac('0x21')](_0x50f6e8['include'],function(_0x595c15){return{'model':db[_0x595c15[_0x65ac('0x20')]],'as':_0x595c15['as'],'attributes':_0x595c15[_0x65ac('0x1d')],'include':_0x595c15['include']?_[_0x65ac('0x21')](_0x595c15[_0x65ac('0x1f')],function(_0x913380){return{'model':db[_0x913380['model']],'as':_0x913380['as'],'attributes':_0x913380[_0x65ac('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x65ac('0x22')](function(_0x52e47a){logger[_0x65ac('0x14')]('GetTemplate',_0x56aed8);logger[_0x65ac('0xf')]('GetTemplate',_0x56aed8,JSON[_0x65ac('0x10')](_0x52e47a));_0x2d302a(_0x52e47a);})['catch'](function(_0x259532){logger[_0x65ac('0x11')](_0x65ac('0x17'),_0x259532[_0x65ac('0x13')],_0x56aed8);_0x564175(_0x143245['error'](0x1f4,_0x259532[_0x65ac('0x13')]));});});};
\ No newline at end of file
+var _0x46d9=['model','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetTemplate','Template','options','raw','where','attributes','limit','include','map'];(function(_0x543349,_0x8f9924){var _0x2f87da=function(_0x25be61){while(--_0x25be61){_0x543349['push'](_0x543349['shift']());}};_0x2f87da(++_0x8f9924);}(_0x46d9,0x16a));var _0x946d=function(_0x427f71,_0x2b55f3){_0x427f71=_0x427f71-0x0;var _0x504ecb=_0x46d9[_0x427f71];return _0x504ecb;};'use strict';var _=require(_0x946d('0x0'));var util=require(_0x946d('0x1'));var moment=require(_0x946d('0x2'));var BPromise=require(_0x946d('0x3'));var rs=require(_0x946d('0x4'));var fs=require('fs');var Redis=require(_0x946d('0x5'));var db=require(_0x946d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x946d('0x7'))(_0x946d('0x8'));var config=require(_0x946d('0x9'));var jayson=require(_0x946d('0xa'));var client=jayson[_0x946d('0xb')][_0x946d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xd041bc,_0x1fa598,_0x4d4d2d){return new BPromise(function(_0x40b800,_0xf7200a){return client[_0x946d('0xd')](_0xd041bc,_0x4d4d2d)[_0x946d('0xe')](function(_0x22eb59){logger[_0x946d('0xf')](_0x946d('0x10'),_0x1fa598,_0x946d('0x11'));logger[_0x946d('0x12')](_0x946d('0x13'),_0x1fa598,_0x946d('0x11'),JSON['stringify'](_0x22eb59));if(_0x22eb59['error']){if(_0x22eb59[_0x946d('0x14')][_0x946d('0x15')]===0x1f4){logger[_0x946d('0x14')]('Template,\x20%s,\x20%s',_0x1fa598,_0x22eb59['error'][_0x946d('0x16')]);return _0xf7200a(_0x22eb59[_0x946d('0x14')][_0x946d('0x16')]);}logger[_0x946d('0x14')](_0x946d('0x10'),_0x1fa598,_0x22eb59[_0x946d('0x14')][_0x946d('0x16')]);return _0x40b800(_0x22eb59[_0x946d('0x14')][_0x946d('0x16')]);}else{logger['info']('Template,\x20%s,\x20%s',_0x1fa598,_0x946d('0x11'));_0x40b800(_0x22eb59[_0x946d('0x17')][_0x946d('0x16')]);}})[_0x946d('0x18')](function(_0x2a802d){logger['error']('Template,\x20%s,\x20%s',_0x1fa598,_0x2a802d);_0xf7200a(_0x2a802d);});});}exports[_0x946d('0x19')]=function(_0x207953){var _0x5a96cb=this;return new Promise(function(_0x3fd167,_0x58a248){return db[_0x946d('0x1a')]['findAll']({'raw':_0x207953['options']?_0x207953[_0x946d('0x1b')][_0x946d('0x1c')]===undefined?!![]:![]:!![],'where':_0x207953[_0x946d('0x1b')]?_0x207953['options'][_0x946d('0x1d')]||null:null,'attributes':_0x207953[_0x946d('0x1b')]?_0x207953['options'][_0x946d('0x1e')]||null:null,'limit':_0x207953[_0x946d('0x1b')]?_0x207953['options'][_0x946d('0x1f')]||null:null,'include':_0x207953[_0x946d('0x1b')]?_0x207953[_0x946d('0x1b')][_0x946d('0x20')]?_[_0x946d('0x21')](_0x207953['options']['include'],function(_0x245634){return{'model':db[_0x245634[_0x946d('0x22')]],'as':_0x245634['as'],'attributes':_0x245634[_0x946d('0x1e')],'include':_0x245634['include']?_[_0x946d('0x21')](_0x245634['include'],function(_0x3d756c){return{'model':db[_0x3d756c['model']],'as':_0x3d756c['as'],'attributes':_0x3d756c[_0x946d('0x1e')],'include':_0x3d756c[_0x946d('0x20')]?_[_0x946d('0x21')](_0x3d756c['include'],function(_0x249ffb){return{'model':db[_0x249ffb[_0x946d('0x22')]],'as':_0x249ffb['as'],'attributes':_0x249ffb[_0x946d('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xfb25bf){logger[_0x946d('0xf')](_0x946d('0x19'),_0x207953);logger[_0x946d('0x12')](_0x946d('0x19'),_0x207953,JSON[_0x946d('0x23')](_0xfb25bf));_0x3fd167(_0xfb25bf);})[_0x946d('0x18')](function(_0x315f89){logger[_0x946d('0x14')](_0x946d('0x19'),_0x315f89[_0x946d('0x16')],_0x207953);_0x58a248(_0x5a96cb[_0x946d('0x14')](0x1f4,_0x315f89[_0x946d('0x16')]));});});};
\ No newline at end of file
index 78c3b3a..3b63d31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf117=['util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','get','isAuthenticated','index','/:id','show','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','/:id/all_conditions','addAllCondition','addAnyCondition','addAction','put','update','delete','destroy','exports'];(function(_0x5e6935,_0x23d0a4){var _0x5498f9=function(_0x592401){while(--_0x592401){_0x5e6935['push'](_0x5e6935['shift']());}};_0x5498f9(++_0x23d0a4);}(_0xf117,0x122));var _0x7f11=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xf117[_0x11005e];return _0x29338f;};'use strict';var multer=require('multer');var util=require(_0x7f11('0x0'));var path=require(_0x7f11('0x1'));var timeout=require(_0x7f11('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7f11('0x3'));var auth=require(_0x7f11('0x4'));var interaction=require(_0x7f11('0x5'));var config=require(_0x7f11('0x6'));var controller=require(_0x7f11('0x7'));router[_0x7f11('0x8')]('/',auth[_0x7f11('0x9')](),controller[_0x7f11('0xa')]);router[_0x7f11('0x8')](_0x7f11('0xb'),auth[_0x7f11('0x9')](),controller[_0x7f11('0xc')]);router['get']('/:id/all_conditions',auth[_0x7f11('0x9')](),controller[_0x7f11('0xd')]);router[_0x7f11('0x8')](_0x7f11('0xe'),auth[_0x7f11('0x9')](),controller[_0x7f11('0xf')]);router[_0x7f11('0x8')](_0x7f11('0x10'),auth['isAuthenticated'](),controller[_0x7f11('0x11')]);router[_0x7f11('0x12')]('/',auth[_0x7f11('0x9')](),controller[_0x7f11('0x13')]);router[_0x7f11('0x12')](_0x7f11('0x14'),auth[_0x7f11('0x9')](),controller[_0x7f11('0x15')]);router['post']('/:id/any_conditions',auth[_0x7f11('0x9')](),controller[_0x7f11('0x16')]);router['post']('/:id/actions',auth[_0x7f11('0x9')](),controller[_0x7f11('0x17')]);router[_0x7f11('0x18')](_0x7f11('0xb'),auth[_0x7f11('0x9')](),controller[_0x7f11('0x19')]);router[_0x7f11('0x1a')](_0x7f11('0xb'),auth[_0x7f11('0x9')](),controller[_0x7f11('0x1b')]);module[_0x7f11('0x1c')]=router;
\ No newline at end of file
+var _0xac9a=['connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./trigger.controller','get','isAuthenticated','/:id','/:id/all_conditions','getAllConditions','/:id/any_conditions','/:id/actions','post','create','addAnyCondition','addAction','put','exports','multer','util','path'];(function(_0x1d8a39,_0x37b047){var _0x538f1c=function(_0x55bddf){while(--_0x55bddf){_0x1d8a39['push'](_0x1d8a39['shift']());}};_0x538f1c(++_0x37b047);}(_0xac9a,0x131));var _0xaac9=function(_0x46def3,_0x481bbd){_0x46def3=_0x46def3-0x0;var _0x1cc50a=_0xac9a[_0x46def3];return _0x1cc50a;};'use strict';var multer=require(_0xaac9('0x0'));var util=require(_0xaac9('0x1'));var path=require(_0xaac9('0x2'));var timeout=require(_0xaac9('0x3'));var express=require('express');var router=express[_0xaac9('0x4')]();var fs_extra=require(_0xaac9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xaac9('0x6'));var config=require(_0xaac9('0x7'));var controller=require(_0xaac9('0x8'));router[_0xaac9('0x9')]('/',auth[_0xaac9('0xa')](),controller['index']);router[_0xaac9('0x9')](_0xaac9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xaac9('0x9')](_0xaac9('0xc'),auth[_0xaac9('0xa')](),controller[_0xaac9('0xd')]);router[_0xaac9('0x9')](_0xaac9('0xe'),auth['isAuthenticated'](),controller['getAnyConditions']);router['get'](_0xaac9('0xf'),auth[_0xaac9('0xa')](),controller['getActions']);router[_0xaac9('0x10')]('/',auth[_0xaac9('0xa')](),controller[_0xaac9('0x11')]);router['post'](_0xaac9('0xc'),auth['isAuthenticated'](),controller['addAllCondition']);router[_0xaac9('0x10')]('/:id/any_conditions',auth[_0xaac9('0xa')](),controller[_0xaac9('0x12')]);router[_0xaac9('0x10')](_0xaac9('0xf'),auth['isAuthenticated'](),controller[_0xaac9('0x13')]);router[_0xaac9('0x14')](_0xaac9('0xb'),auth[_0xaac9('0xa')](),controller['update']);router['delete']('/:id',auth[_0xaac9('0xa')](),controller['destroy']);module[_0xaac9('0x15')]=router;
\ No newline at end of file
index b8b7b37..56a71eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc387=['sequelize','exports','STRING','BOOLEAN'];(function(_0x2378ff,_0x1b24e0){var _0x11ac79=function(_0x95fbd6){while(--_0x95fbd6){_0x2378ff['push'](_0x2378ff['shift']());}};_0x11ac79(++_0x1b24e0);}(_0xc387,0x168));var _0x7c38=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc387[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x7c38('0x0'));module[_0x7c38('0x1')]={'name':{'type':Sequelize[_0x7c38('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7c38('0x2')]},'status':{'type':Sequelize[_0x7c38('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x39e0=['STRING','BOOLEAN','sequelize','exports'];(function(_0x133d6b,_0x2ac78d){var _0x1dd67e=function(_0x28e081){while(--_0x28e081){_0x133d6b['push'](_0x133d6b['shift']());}};_0x1dd67e(++_0x2ac78d);}(_0x39e0,0x18e));var _0x039e=function(_0xf6006a,_0x1c9a52){_0xf6006a=_0xf6006a-0x0;var _0x686eca=_0x39e0[_0xf6006a];return _0x686eca;};'use strict';var Sequelize=require(_0x039e('0x0'));module[_0x039e('0x1')]={'name':{'type':Sequelize[_0x039e('0x2')]},'channel':{'type':Sequelize[_0x039e('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0x039e('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 821f47d..076fe45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3934=['catch','show','params','find','create','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','TriggerAllId','Condition','TriggerAnyId','findOne','getAllConditions','hasOwnProperty','getAnyConditions','nolimit','TriggerId','Action','getActions','eml-format','zip-dir','moment','bluebird','path','sox','to-csv','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','Content-Range','json','apply','save','update','then','destroy','Triggers','UserProfileResource','sendStatus','error','name','send','index','Trigger','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows'];(function(_0x2cbae9,_0x3b70c1){var _0x4bbf35=function(_0x3f2004){while(--_0x3f2004){_0x2cbae9['push'](_0x2cbae9['shift']());}};_0x4bbf35(++_0x3b70c1);}(_0x3934,0xc0));var _0x4393=function(_0x3f5e4c,_0x2b74d0){_0x3f5e4c=_0x3f5e4c-0x0;var _0x225d1d=_0x3934[_0x3f5e4c];return _0x225d1d;};'use strict';var emlformat=require(_0x4393('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4393('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4393('0x2'));var BPromise=require(_0x4393('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4393('0x4'));var sox=require(_0x4393('0x5'));var csv=require(_0x4393('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4393('0x7'));var squel=require('squel');var crypto=require(_0x4393('0x8'));var jsforce=require(_0x4393('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x4393('0x6'));var querystring=require(_0x4393('0xa'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4393('0xb'));var qs=require(_0x4393('0xc'));var as=require(_0x4393('0xd'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4393('0xe'))('api');var utils=require(_0x4393('0xf'));var config=require(_0x4393('0x10'));var licenseUtil=require(_0x4393('0x11'));var db=require(_0x4393('0x12'))['db'];function respondWithStatusCode(_0x264953,_0x4e1ea0){_0x4e1ea0=_0x4e1ea0||0xcc;return function(_0x2db99d){if(_0x2db99d){return _0x264953['sendStatus'](_0x4e1ea0);}return _0x264953[_0x4393('0x13')](_0x4e1ea0)[_0x4393('0x14')]();};}function respondWithResult(_0x4e9125,_0x5b3239){_0x5b3239=_0x5b3239||0xc8;return function(_0x54ea7b){if(_0x54ea7b){return _0x4e9125[_0x4393('0x13')](_0x5b3239)['json'](_0x54ea7b);}};}function respondWithFilteredResult(_0x3473f6,_0x238d41){return function(_0x276854){if(_0x276854){var _0x519b27=typeof _0x238d41[_0x4393('0x15')]===_0x4393('0x16')&&typeof _0x238d41[_0x4393('0x17')]===_0x4393('0x16');var _0x1772b3=_0x276854['count'];var _0x567ce5=_0x519b27?0x0:_0x238d41[_0x4393('0x15')];var _0x349a9a=_0x519b27?_0x276854[_0x4393('0x18')]:_0x238d41[_0x4393('0x15')]+_0x238d41[_0x4393('0x17')];var _0x5f1b23;if(_0x349a9a>=_0x1772b3){_0x349a9a=_0x1772b3;_0x5f1b23=0xc8;}else{_0x5f1b23=0xce;}_0x3473f6['status'](_0x5f1b23);return _0x3473f6['set'](_0x4393('0x19'),_0x567ce5+'-'+_0x349a9a+'/'+_0x1772b3)[_0x4393('0x1a')](_0x276854);}return null;};}function patchUpdates(_0x148e50){return function(_0x311760){try{jsonpatch[_0x4393('0x1b')](_0x311760,_0x148e50,!![]);}catch(_0x5ada69){return BPromise['reject'](_0x5ada69);}return _0x311760[_0x4393('0x1c')]();};}function saveUpdates(_0x3e1eb0,_0x5a5c34){return function(_0x22868a){if(_0x22868a){return _0x22868a[_0x4393('0x1d')](_0x3e1eb0)[_0x4393('0x1e')](function(_0xb09d2c){return _0xb09d2c;});}return null;};}function removeEntity(_0x2aaf2f,_0x13e2bb){return function(_0x35d937){if(_0x35d937){return _0x35d937[_0x4393('0x1f')]()[_0x4393('0x1e')](function(){var _0x2239a4=_0x35d937['get']({'plain':!![]});var _0x40b384=_0x4393('0x20');return db[_0x4393('0x21')]['destroy']({'where':{'type':_0x40b384,'resourceId':_0x2239a4['id']}})[_0x4393('0x1e')](function(){return _0x35d937;});})[_0x4393('0x1e')](function(){_0x2aaf2f[_0x4393('0x13')](0xcc)[_0x4393('0x14')]();});}};}function handleEntityNotFound(_0x543df9,_0x133e31){return function(_0x3241ff){if(!_0x3241ff){_0x543df9[_0x4393('0x22')](0x194);}return _0x3241ff;};}function handleError(_0x169859,_0xab65f6){_0xab65f6=_0xab65f6||0x1f4;return function(_0x5e8a91){logger[_0x4393('0x23')](_0x5e8a91['stack']);if(_0x5e8a91[_0x4393('0x24')]){delete _0x5e8a91[_0x4393('0x24')];}_0x169859[_0x4393('0x13')](_0xab65f6)[_0x4393('0x25')](_0x5e8a91);};}exports[_0x4393('0x26')]=function(_0x5ad273,_0x53ab4e){var _0x186875={},_0x2a2314={},_0x3f223b={'count':0x0,'rows':[]};var _0x27a79f=_['map'](db[_0x4393('0x27')][_0x4393('0x28')],function(_0x5d0e25){return{'name':_0x5d0e25[_0x4393('0x29')],'type':_0x5d0e25['type'][_0x4393('0x2a')]};});_0x2a2314[_0x4393('0x2b')]=_[_0x4393('0x2c')](_0x27a79f,_0x4393('0x24'));_0x2a2314[_0x4393('0x2d')]=_[_0x4393('0x2e')](_0x5ad273['query']);_0x2a2314[_0x4393('0x2f')]=_[_0x4393('0x30')](_0x2a2314[_0x4393('0x2b')],_0x2a2314[_0x4393('0x2d')]);_0x186875[_0x4393('0x31')]=_[_0x4393('0x30')](_0x2a2314[_0x4393('0x2b')],qs[_0x4393('0x32')](_0x5ad273[_0x4393('0x2d')][_0x4393('0x32')]));_0x186875['attributes']=_0x186875[_0x4393('0x31')][_0x4393('0x33')]?_0x186875[_0x4393('0x31')]:_0x2a2314['model'];if(!_0x5ad273[_0x4393('0x2d')]['hasOwnProperty']('nolimit')){_0x186875[_0x4393('0x17')]=qs[_0x4393('0x17')](_0x5ad273['query']['limit']);_0x186875['offset']=qs[_0x4393('0x15')](_0x5ad273[_0x4393('0x2d')][_0x4393('0x15')]);}_0x186875[_0x4393('0x34')]=qs['sort'](_0x5ad273[_0x4393('0x2d')][_0x4393('0x35')]);_0x186875[_0x4393('0x36')]=qs['filters'](_[_0x4393('0x37')](_0x5ad273[_0x4393('0x2d')],_0x2a2314['filters']),_0x27a79f);if(_0x5ad273['query'][_0x4393('0x38')]){_0x186875[_0x4393('0x36')]=_[_0x4393('0x39')](_0x186875[_0x4393('0x36')],{'$or':_[_0x4393('0x2c')](_0x27a79f,function(_0x2b27a3){if(_0x2b27a3['type']!=='VIRTUAL'){var _0x573d00={};_0x573d00[_0x2b27a3[_0x4393('0x24')]]={'$like':'%'+_0x5ad273[_0x4393('0x2d')][_0x4393('0x38')]+'%'};return _0x573d00;}})});}_0x186875=_[_0x4393('0x39')]({},_0x186875,_0x5ad273[_0x4393('0x3a')]);var _0x4aefbb={'where':_0x186875[_0x4393('0x36')]};return db[_0x4393('0x27')]['count'](_0x4aefbb)[_0x4393('0x1e')](function(_0x1ff21b){_0x3f223b[_0x4393('0x18')]=_0x1ff21b;if(_0x5ad273[_0x4393('0x2d')][_0x4393('0x3b')]){_0x186875[_0x4393('0x3c')]=[{'all':!![]}];}return db['Trigger'][_0x4393('0x3d')](_0x186875);})[_0x4393('0x1e')](function(_0x44d62e){_0x3f223b[_0x4393('0x3e')]=_0x44d62e;return _0x3f223b;})[_0x4393('0x1e')](respondWithFilteredResult(_0x53ab4e,_0x186875))[_0x4393('0x3f')](handleError(_0x53ab4e,null));};exports[_0x4393('0x40')]=function(_0x49a330,_0x502222){var _0x55dab1={'raw':![],'where':{'id':_0x49a330[_0x4393('0x41')]['id']}},_0x123b3d={};_0x123b3d[_0x4393('0x2b')]=_[_0x4393('0x2e')](db[_0x4393('0x27')][_0x4393('0x28')]);_0x123b3d[_0x4393('0x2d')]=_[_0x4393('0x2e')](_0x49a330[_0x4393('0x2d')]);_0x123b3d[_0x4393('0x2f')]=_[_0x4393('0x30')](_0x123b3d['model'],_0x123b3d[_0x4393('0x2d')]);_0x55dab1[_0x4393('0x31')]=_['intersection'](_0x123b3d[_0x4393('0x2b')],qs[_0x4393('0x32')](_0x49a330[_0x4393('0x2d')][_0x4393('0x32')]));_0x55dab1[_0x4393('0x31')]=_0x55dab1[_0x4393('0x31')]['length']?_0x55dab1['attributes']:_0x123b3d['model'];if(_0x49a330[_0x4393('0x2d')][_0x4393('0x3b')]){_0x55dab1[_0x4393('0x3c')]=[{'all':!![]}];}_0x55dab1=_[_0x4393('0x39')]({},_0x55dab1,_0x49a330[_0x4393('0x3a')]);return db['Trigger'][_0x4393('0x42')](_0x55dab1)[_0x4393('0x1e')](handleEntityNotFound(_0x502222,null))[_0x4393('0x1e')](respondWithResult(_0x502222,null))['catch'](handleError(_0x502222,null));};exports[_0x4393('0x43')]=function(_0x1a3be9,_0xa2eb06){return db['Trigger'][_0x4393('0x43')](_0x1a3be9['body'],{})[_0x4393('0x1e')](function(_0x5b7dda){var _0x12f6da=_0x1a3be9['user']['get']({'plain':!![]});if(!_0x12f6da)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x12f6da[_0x4393('0x44')]==='user'){var _0x5afff3=_0x5b7dda['get']({'plain':!![]});var _0x4a2757='Triggers';return db[_0x4393('0x45')]['find']({'where':{'name':_0x4a2757,'userProfileId':_0x12f6da[_0x4393('0x46')]},'raw':!![]})[_0x4393('0x1e')](function(_0x322c7d){if(_0x322c7d&&_0x322c7d[_0x4393('0x47')]===0x0){return db['UserProfileResource']['create']({'name':_0x5afff3[_0x4393('0x24')],'resourceId':_0x5afff3['id'],'type':_0x322c7d[_0x4393('0x24')],'sectionId':_0x322c7d['id']},{})[_0x4393('0x1e')](function(){return _0x5b7dda;});}else{return _0x5b7dda;}})[_0x4393('0x3f')](function(_0x496c5f){logger[_0x4393('0x23')](_0x4393('0x48'),_0x496c5f);throw _0x496c5f;});}return _0x5b7dda;})[_0x4393('0x1e')](respondWithResult(_0xa2eb06,0xc9))[_0x4393('0x3f')](handleError(_0xa2eb06,null));};exports[_0x4393('0x1d')]=function(_0x29be41,_0xa769da){if(_0x29be41[_0x4393('0x49')]['id']){delete _0x29be41[_0x4393('0x49')]['id'];}return db[_0x4393('0x27')][_0x4393('0x42')]({'where':{'id':_0x29be41[_0x4393('0x41')]['id']}})[_0x4393('0x1e')](handleEntityNotFound(_0xa769da,null))[_0x4393('0x1e')](saveUpdates(_0x29be41[_0x4393('0x49')],null))[_0x4393('0x1e')](respondWithResult(_0xa769da,null))['catch'](handleError(_0xa769da,null));};exports[_0x4393('0x1f')]=function(_0x4f80fd,_0x10da2b){return db[_0x4393('0x27')][_0x4393('0x42')]({'where':{'id':_0x4f80fd['params']['id']}})[_0x4393('0x1e')](handleEntityNotFound(_0x10da2b,null))[_0x4393('0x1e')](removeEntity(_0x10da2b,null))[_0x4393('0x3f')](handleError(_0x10da2b,null));};exports['addAllCondition']=function(_0x3d77af,_0x27a045,_0x55bc36){if(_0x3d77af['body']['id']){delete _0x3d77af['body']['id'];}return db[_0x4393('0x27')]['find']({'where':{'id':_0x3d77af[_0x4393('0x41')]['id']}})['then'](handleEntityNotFound(_0x27a045,null))[_0x4393('0x1e')](function(_0xd08e77){if(_0xd08e77){_0x3d77af[_0x4393('0x49')][_0x4393('0x4a')]=_0xd08e77['id'];return db[_0x4393('0x4b')][_0x4393('0x43')](_0x3d77af[_0x4393('0x49')]);}})['then'](respondWithResult(_0x27a045,null))['catch'](handleError(_0x27a045,null));};exports['addAnyCondition']=function(_0x1435a9,_0x4c8802,_0x3c778e){if(_0x1435a9['body']['id']){delete _0x1435a9['body']['id'];}return db[_0x4393('0x27')][_0x4393('0x42')]({'where':{'id':_0x1435a9[_0x4393('0x41')]['id']}})[_0x4393('0x1e')](handleEntityNotFound(_0x4c8802,null))[_0x4393('0x1e')](function(_0x4a51c3){if(_0x4a51c3){_0x1435a9['body'][_0x4393('0x4c')]=_0x4a51c3['id'];return db[_0x4393('0x4b')][_0x4393('0x43')](_0x1435a9[_0x4393('0x49')]);}})[_0x4393('0x1e')](respondWithResult(_0x4c8802,null))[_0x4393('0x3f')](handleError(_0x4c8802,null));};exports['getAllConditions']=function(_0x549605,_0x5cb0f9,_0x1af71f){var _0x60643={};var _0xd88b27={};var _0x59a3fe;var _0x407b41;return db[_0x4393('0x27')][_0x4393('0x4d')]({'where':{'id':_0x549605[_0x4393('0x41')]['id']}})[_0x4393('0x1e')](handleEntityNotFound(_0x5cb0f9,null))[_0x4393('0x1e')](function(_0x3527fb){if(_0x3527fb){_0x59a3fe=_0x3527fb;_0xd88b27[_0x4393('0x2b')]=_[_0x4393('0x2e')](db[_0x4393('0x4b')]['rawAttributes']);_0xd88b27[_0x4393('0x2d')]=_[_0x4393('0x2e')](_0x549605[_0x4393('0x2d')]);_0xd88b27[_0x4393('0x2f')]=_[_0x4393('0x30')](_0xd88b27['model'],_0xd88b27[_0x4393('0x2d')]);_0x60643['attributes']=_['intersection'](_0xd88b27[_0x4393('0x2b')],qs[_0x4393('0x32')](_0x549605[_0x4393('0x2d')][_0x4393('0x32')]));_0x60643[_0x4393('0x31')]=_0x60643[_0x4393('0x31')][_0x4393('0x33')]?_0x60643[_0x4393('0x31')]:_0xd88b27['model'];_0x60643['order']=qs[_0x4393('0x35')](_0x549605[_0x4393('0x2d')][_0x4393('0x35')]);_0x60643[_0x4393('0x36')]=qs[_0x4393('0x2f')](_['pick'](_0x549605[_0x4393('0x2d')],_0xd88b27[_0x4393('0x2f')]));if(_0x549605[_0x4393('0x2d')][_0x4393('0x38')]){_0x60643['where']=_[_0x4393('0x39')](_0x60643[_0x4393('0x36')],{'$or':_[_0x4393('0x2c')](_0x60643[_0x4393('0x31')],function(_0x2e4f1a){var _0x1ee8d2={};_0x1ee8d2[_0x2e4f1a]={'$like':'%'+_0x549605['query'][_0x4393('0x38')]+'%'};return _0x1ee8d2;})});}_0x60643=_[_0x4393('0x39')]({},_0x60643,_0x549605['options']);return _0x59a3fe[_0x4393('0x4e')](_0x60643);}})['then'](function(_0x3ef8ba){if(_0x3ef8ba){_0x407b41=_0x3ef8ba[_0x4393('0x33')];if(!_0x549605[_0x4393('0x2d')][_0x4393('0x4f')]('nolimit')){_0x60643['limit']=qs[_0x4393('0x17')](_0x549605[_0x4393('0x2d')]['limit']);_0x60643['offset']=qs[_0x4393('0x15')](_0x549605[_0x4393('0x2d')][_0x4393('0x15')]);}return _0x59a3fe['getAllConditions'](_0x60643);}})[_0x4393('0x1e')](function(_0x2044d4){if(_0x2044d4){return _0x2044d4?{'count':_0x407b41,'rows':_0x2044d4}:null;}})['then'](respondWithResult(_0x5cb0f9,null))['catch'](handleError(_0x5cb0f9,null));};exports[_0x4393('0x50')]=function(_0x21de42,_0x425fde,_0x4ca175){var _0x127121={};var _0x59210b={};var _0x615ff9;var _0x41a3e7;return db[_0x4393('0x27')][_0x4393('0x4d')]({'where':{'id':_0x21de42[_0x4393('0x41')]['id']}})[_0x4393('0x1e')](handleEntityNotFound(_0x425fde,null))['then'](function(_0xc87aa1){if(_0xc87aa1){_0x615ff9=_0xc87aa1;_0x59210b[_0x4393('0x2b')]=_[_0x4393('0x2e')](db['Condition']['rawAttributes']);_0x59210b[_0x4393('0x2d')]=_[_0x4393('0x2e')](_0x21de42[_0x4393('0x2d')]);_0x59210b[_0x4393('0x2f')]=_[_0x4393('0x30')](_0x59210b[_0x4393('0x2b')],_0x59210b[_0x4393('0x2d')]);_0x127121[_0x4393('0x31')]=_[_0x4393('0x30')](_0x59210b[_0x4393('0x2b')],qs[_0x4393('0x32')](_0x21de42[_0x4393('0x2d')][_0x4393('0x32')]));_0x127121[_0x4393('0x31')]=_0x127121[_0x4393('0x31')][_0x4393('0x33')]?_0x127121[_0x4393('0x31')]:_0x59210b[_0x4393('0x2b')];_0x127121[_0x4393('0x34')]=qs[_0x4393('0x35')](_0x21de42[_0x4393('0x2d')][_0x4393('0x35')]);_0x127121['where']=qs[_0x4393('0x2f')](_['pick'](_0x21de42['query'],_0x59210b[_0x4393('0x2f')]));if(_0x21de42['query'][_0x4393('0x38')]){_0x127121[_0x4393('0x36')]=_[_0x4393('0x39')](_0x127121[_0x4393('0x36')],{'$or':_[_0x4393('0x2c')](_0x127121[_0x4393('0x31')],function(_0x93644c){var _0x1360e0={};_0x1360e0[_0x93644c]={'$like':'%'+_0x21de42[_0x4393('0x2d')][_0x4393('0x38')]+'%'};return _0x1360e0;})});}_0x127121=_[_0x4393('0x39')]({},_0x127121,_0x21de42['options']);return _0x615ff9[_0x4393('0x50')](_0x127121);}})[_0x4393('0x1e')](function(_0x543d80){if(_0x543d80){_0x41a3e7=_0x543d80[_0x4393('0x33')];if(!_0x21de42[_0x4393('0x2d')]['hasOwnProperty'](_0x4393('0x51'))){_0x127121[_0x4393('0x17')]=qs['limit'](_0x21de42[_0x4393('0x2d')][_0x4393('0x17')]);_0x127121[_0x4393('0x15')]=qs[_0x4393('0x15')](_0x21de42[_0x4393('0x2d')][_0x4393('0x15')]);}return _0x615ff9[_0x4393('0x50')](_0x127121);}})[_0x4393('0x1e')](function(_0x27dd9b){if(_0x27dd9b){return _0x27dd9b?{'count':_0x41a3e7,'rows':_0x27dd9b}:null;}})[_0x4393('0x1e')](respondWithResult(_0x425fde,null))[_0x4393('0x3f')](handleError(_0x425fde,null));};exports['addAction']=function(_0x5dea27,_0x1b575f,_0x48c392){if(_0x5dea27[_0x4393('0x49')]['id']){delete _0x5dea27[_0x4393('0x49')]['id'];}return db['Trigger'][_0x4393('0x42')]({'where':{'id':_0x5dea27[_0x4393('0x41')]['id']}})[_0x4393('0x1e')](handleEntityNotFound(_0x1b575f,null))[_0x4393('0x1e')](function(_0x2abeb3){if(_0x2abeb3){_0x5dea27[_0x4393('0x49')][_0x4393('0x52')]=_0x2abeb3['id'];return db[_0x4393('0x53')]['create'](_0x5dea27[_0x4393('0x49')]);}})[_0x4393('0x1e')](respondWithResult(_0x1b575f,null))['catch'](handleError(_0x1b575f,null));};exports[_0x4393('0x54')]=function(_0x211056,_0x438fc1,_0x2c0bd8){var _0x4ffbac={};var _0xbb79bb={};var _0x42c577;var _0x2bd2f4;return db[_0x4393('0x27')]['findOne']({'where':{'id':_0x211056[_0x4393('0x41')]['id']}})[_0x4393('0x1e')](handleEntityNotFound(_0x438fc1,null))['then'](function(_0x5d9b5d){if(_0x5d9b5d){_0x42c577=_0x5d9b5d;_0xbb79bb['model']=_[_0x4393('0x2e')](db[_0x4393('0x53')][_0x4393('0x28')]);_0xbb79bb[_0x4393('0x2d')]=_[_0x4393('0x2e')](_0x211056[_0x4393('0x2d')]);_0xbb79bb[_0x4393('0x2f')]=_['intersection'](_0xbb79bb[_0x4393('0x2b')],_0xbb79bb[_0x4393('0x2d')]);_0x4ffbac[_0x4393('0x31')]=_[_0x4393('0x30')](_0xbb79bb[_0x4393('0x2b')],qs[_0x4393('0x32')](_0x211056['query']['fields']));_0x4ffbac[_0x4393('0x31')]=_0x4ffbac[_0x4393('0x31')][_0x4393('0x33')]?_0x4ffbac[_0x4393('0x31')]:_0xbb79bb[_0x4393('0x2b')];_0x4ffbac[_0x4393('0x34')]=qs['sort'](_0x211056[_0x4393('0x2d')][_0x4393('0x35')]);_0x4ffbac[_0x4393('0x36')]=qs['filters'](_['pick'](_0x211056[_0x4393('0x2d')],_0xbb79bb[_0x4393('0x2f')]));if(_0x211056[_0x4393('0x2d')][_0x4393('0x38')]){_0x4ffbac[_0x4393('0x36')]=_[_0x4393('0x39')](_0x4ffbac[_0x4393('0x36')],{'$or':_[_0x4393('0x2c')](_0x4ffbac[_0x4393('0x31')],function(_0x3cf7d8){var _0x358660={};_0x358660[_0x3cf7d8]={'$like':'%'+_0x211056['query']['filter']+'%'};return _0x358660;})});}_0x4ffbac=_[_0x4393('0x39')]({},_0x4ffbac,_0x211056[_0x4393('0x3a')]);return _0x42c577[_0x4393('0x54')](_0x4ffbac);}})[_0x4393('0x1e')](function(_0x56a357){if(_0x56a357){_0x2bd2f4=_0x56a357[_0x4393('0x33')];if(!_0x211056['query'][_0x4393('0x4f')](_0x4393('0x51'))){_0x4ffbac[_0x4393('0x17')]=qs[_0x4393('0x17')](_0x211056['query'][_0x4393('0x17')]);_0x4ffbac['offset']=qs[_0x4393('0x15')](_0x211056[_0x4393('0x2d')][_0x4393('0x15')]);}return _0x42c577[_0x4393('0x54')](_0x4ffbac);}})['then'](function(_0x2829e1){if(_0x2829e1){return _0x2829e1?{'count':_0x2bd2f4,'rows':_0x2829e1}:null;}})[_0x4393('0x1e')](respondWithResult(_0x438fc1,null))[_0x4393('0x3f')](handleError(_0x438fc1,null));};
\ No newline at end of file
+var _0x1da0=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','undefined','count','limit','set','Content-Range','json','apply','reject','update','then','get','Triggers','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','Trigger','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','addAllCondition','Condition','addAnyCondition','getAllConditions','findOne','nolimit','getAnyConditions','addAction','TriggerId','getActions','Action','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1da0,0x111));var _0x01da=function(_0x3ea913,_0x255df2){_0x3ea913=_0x3ea913-0x0;var _0x2b4f28=_0x1da0[_0x3ea913];return _0x2b4f28;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x01da('0x0'));var zipdir=require(_0x01da('0x1'));var jsonpatch=require(_0x01da('0x2'));var rp=require(_0x01da('0x3'));var moment=require('moment');var BPromise=require(_0x01da('0x4'));var Mustache=require('mustache');var util=require(_0x01da('0x5'));var path=require(_0x01da('0x6'));var sox=require(_0x01da('0x7'));var csv=require(_0x01da('0x8'));var ejs=require(_0x01da('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x01da('0xa'));var squel=require(_0x01da('0xb'));var crypto=require(_0x01da('0xc'));var jsforce=require(_0x01da('0xd'));var deskjs=require(_0x01da('0xe'));var toCsv=require(_0x01da('0x8'));var querystring=require('querystring');var Papa=require(_0x01da('0xf'));var Redis=require(_0x01da('0x10'));var authService=require(_0x01da('0x11'));var qs=require(_0x01da('0x12'));var as=require(_0x01da('0x13'));var hardwareService=require(_0x01da('0x14'));var logger=require(_0x01da('0x15'))(_0x01da('0x16'));var utils=require(_0x01da('0x17'));var config=require(_0x01da('0x18'));var licenseUtil=require(_0x01da('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2f16b5,_0x1359eb){_0x1359eb=_0x1359eb||0xcc;return function(_0x56aa0c){if(_0x56aa0c){return _0x2f16b5['sendStatus'](_0x1359eb);}return _0x2f16b5[_0x01da('0x1a')](_0x1359eb)[_0x01da('0x1b')]();};}function respondWithResult(_0xd6c77d,_0x453390){_0x453390=_0x453390||0xc8;return function(_0x3393ca){if(_0x3393ca){return _0xd6c77d[_0x01da('0x1a')](_0x453390)['json'](_0x3393ca);}};}function respondWithFilteredResult(_0x3fa381,_0x2eafac){return function(_0x537c8c){if(_0x537c8c){var _0x43e0ec=typeof _0x2eafac['offset']==='undefined'&&typeof _0x2eafac['limit']===_0x01da('0x1c');var _0x5bbcee=_0x537c8c[_0x01da('0x1d')];var _0x44ae19=_0x43e0ec?0x0:_0x2eafac['offset'];var _0x2aa8b3=_0x43e0ec?_0x537c8c[_0x01da('0x1d')]:_0x2eafac['offset']+_0x2eafac[_0x01da('0x1e')];var _0x38fbd5;if(_0x2aa8b3>=_0x5bbcee){_0x2aa8b3=_0x5bbcee;_0x38fbd5=0xc8;}else{_0x38fbd5=0xce;}_0x3fa381[_0x01da('0x1a')](_0x38fbd5);return _0x3fa381[_0x01da('0x1f')](_0x01da('0x20'),_0x44ae19+'-'+_0x2aa8b3+'/'+_0x5bbcee)[_0x01da('0x21')](_0x537c8c);}return null;};}function patchUpdates(_0xe621f7){return function(_0x11520f){try{jsonpatch[_0x01da('0x22')](_0x11520f,_0xe621f7,!![]);}catch(_0x4cc6bd){return BPromise[_0x01da('0x23')](_0x4cc6bd);}return _0x11520f['save']();};}function saveUpdates(_0x2e96c7,_0x2edcaa){return function(_0x260247){if(_0x260247){return _0x260247[_0x01da('0x24')](_0x2e96c7)[_0x01da('0x25')](function(_0x1d1ef4){return _0x1d1ef4;});}return null;};}function removeEntity(_0x145c87,_0x31d581){return function(_0x5320c1){if(_0x5320c1){return _0x5320c1['destroy']()[_0x01da('0x25')](function(){var _0xb82562=_0x5320c1[_0x01da('0x26')]({'plain':!![]});var _0x3c547e=_0x01da('0x27');return db[_0x01da('0x28')][_0x01da('0x29')]({'where':{'type':_0x3c547e,'resourceId':_0xb82562['id']}})[_0x01da('0x25')](function(){return _0x5320c1;});})['then'](function(){_0x145c87['status'](0xcc)[_0x01da('0x1b')]();});}};}function handleEntityNotFound(_0x16e86a,_0x1094f0){return function(_0x3799d2){if(!_0x3799d2){_0x16e86a[_0x01da('0x2a')](0x194);}return _0x3799d2;};}function handleError(_0xaa6970,_0x3f2d49){_0x3f2d49=_0x3f2d49||0x1f4;return function(_0x5a0850){logger[_0x01da('0x2b')](_0x5a0850[_0x01da('0x2c')]);if(_0x5a0850[_0x01da('0x2d')]){delete _0x5a0850[_0x01da('0x2d')];}_0xaa6970[_0x01da('0x1a')](_0x3f2d49)[_0x01da('0x2e')](_0x5a0850);};}exports[_0x01da('0x2f')]=function(_0x2bef30,_0xb1e7f7){var _0x12a567={},_0x31ab9b={},_0xe6e92a={'count':0x0,'rows':[]};var _0x127c35=_['map'](db[_0x01da('0x30')][_0x01da('0x31')],function(_0x5d8c3d){return{'name':_0x5d8c3d['fieldName'],'type':_0x5d8c3d[_0x01da('0x32')][_0x01da('0x33')]};});_0x31ab9b[_0x01da('0x34')]=_[_0x01da('0x35')](_0x127c35,_0x01da('0x2d'));_0x31ab9b[_0x01da('0x36')]=_[_0x01da('0x37')](_0x2bef30[_0x01da('0x36')]);_0x31ab9b[_0x01da('0x38')]=_[_0x01da('0x39')](_0x31ab9b[_0x01da('0x34')],_0x31ab9b[_0x01da('0x36')]);_0x12a567[_0x01da('0x3a')]=_[_0x01da('0x39')](_0x31ab9b['model'],qs[_0x01da('0x3b')](_0x2bef30[_0x01da('0x36')][_0x01da('0x3b')]));_0x12a567[_0x01da('0x3a')]=_0x12a567[_0x01da('0x3a')][_0x01da('0x3c')]?_0x12a567[_0x01da('0x3a')]:_0x31ab9b[_0x01da('0x34')];if(!_0x2bef30['query'][_0x01da('0x3d')]('nolimit')){_0x12a567[_0x01da('0x1e')]=qs[_0x01da('0x1e')](_0x2bef30[_0x01da('0x36')]['limit']);_0x12a567[_0x01da('0x3e')]=qs[_0x01da('0x3e')](_0x2bef30[_0x01da('0x36')][_0x01da('0x3e')]);}_0x12a567[_0x01da('0x3f')]=qs['sort'](_0x2bef30[_0x01da('0x36')][_0x01da('0x40')]);_0x12a567[_0x01da('0x41')]=qs[_0x01da('0x38')](_[_0x01da('0x42')](_0x2bef30['query'],_0x31ab9b[_0x01da('0x38')]),_0x127c35);if(_0x2bef30['query'][_0x01da('0x43')]){_0x12a567[_0x01da('0x41')]=_[_0x01da('0x44')](_0x12a567[_0x01da('0x41')],{'$or':_[_0x01da('0x35')](_0x127c35,function(_0x198e89){if(_0x198e89[_0x01da('0x32')]!==_0x01da('0x45')){var _0x342496={};_0x342496[_0x198e89[_0x01da('0x2d')]]={'$like':'%'+_0x2bef30[_0x01da('0x36')][_0x01da('0x43')]+'%'};return _0x342496;}})});}_0x12a567=_[_0x01da('0x44')]({},_0x12a567,_0x2bef30[_0x01da('0x46')]);var _0x1b9972={'where':_0x12a567[_0x01da('0x41')]};return db[_0x01da('0x30')][_0x01da('0x1d')](_0x1b9972)[_0x01da('0x25')](function(_0x58f1aa){_0xe6e92a[_0x01da('0x1d')]=_0x58f1aa;if(_0x2bef30[_0x01da('0x36')][_0x01da('0x47')]){_0x12a567[_0x01da('0x48')]=[{'all':!![]}];}return db[_0x01da('0x30')][_0x01da('0x49')](_0x12a567);})[_0x01da('0x25')](function(_0x29389c){_0xe6e92a['rows']=_0x29389c;return _0xe6e92a;})[_0x01da('0x25')](respondWithFilteredResult(_0xb1e7f7,_0x12a567))[_0x01da('0x4a')](handleError(_0xb1e7f7,null));};exports[_0x01da('0x4b')]=function(_0x4f44c6,_0x5a7a56){var _0x586282={'raw':![],'where':{'id':_0x4f44c6['params']['id']}},_0x27bd36={};_0x27bd36[_0x01da('0x34')]=_[_0x01da('0x37')](db['Trigger'][_0x01da('0x31')]);_0x27bd36[_0x01da('0x36')]=_[_0x01da('0x37')](_0x4f44c6[_0x01da('0x36')]);_0x27bd36['filters']=_['intersection'](_0x27bd36['model'],_0x27bd36[_0x01da('0x36')]);_0x586282[_0x01da('0x3a')]=_[_0x01da('0x39')](_0x27bd36[_0x01da('0x34')],qs[_0x01da('0x3b')](_0x4f44c6['query'][_0x01da('0x3b')]));_0x586282['attributes']=_0x586282[_0x01da('0x3a')][_0x01da('0x3c')]?_0x586282['attributes']:_0x27bd36[_0x01da('0x34')];if(_0x4f44c6[_0x01da('0x36')][_0x01da('0x47')]){_0x586282[_0x01da('0x48')]=[{'all':!![]}];}_0x586282=_['merge']({},_0x586282,_0x4f44c6['options']);return db[_0x01da('0x30')]['find'](_0x586282)['then'](handleEntityNotFound(_0x5a7a56,null))[_0x01da('0x25')](respondWithResult(_0x5a7a56,null))['catch'](handleError(_0x5a7a56,null));};exports['create']=function(_0x3a70c9,_0x5ace40){return db['Trigger'][_0x01da('0x4c')](_0x3a70c9['body'],{})[_0x01da('0x25')](function(_0x473779){var _0x24df0f=_0x3a70c9['user']['get']({'plain':!![]});if(!_0x24df0f)throw new Error(_0x01da('0x4d'));if(_0x24df0f[_0x01da('0x4e')]===_0x01da('0x4f')){var _0x2fe737=_0x473779['get']({'plain':!![]});var _0x279ba7=_0x01da('0x27');return db[_0x01da('0x50')][_0x01da('0x51')]({'where':{'name':_0x279ba7,'userProfileId':_0x24df0f[_0x01da('0x52')]},'raw':!![]})[_0x01da('0x25')](function(_0x10f72f){if(_0x10f72f&&_0x10f72f[_0x01da('0x53')]===0x0){return db['UserProfileResource'][_0x01da('0x4c')]({'name':_0x2fe737['name'],'resourceId':_0x2fe737['id'],'type':_0x10f72f[_0x01da('0x2d')],'sectionId':_0x10f72f['id']},{})[_0x01da('0x25')](function(){return _0x473779;});}else{return _0x473779;}})['catch'](function(_0xea34b1){logger[_0x01da('0x2b')](_0x01da('0x54'),_0xea34b1);throw _0xea34b1;});}return _0x473779;})[_0x01da('0x25')](respondWithResult(_0x5ace40,0xc9))['catch'](handleError(_0x5ace40,null));};exports[_0x01da('0x24')]=function(_0x243fb8,_0x207123){if(_0x243fb8[_0x01da('0x55')]['id']){delete _0x243fb8['body']['id'];}return db[_0x01da('0x30')]['find']({'where':{'id':_0x243fb8[_0x01da('0x56')]['id']}})[_0x01da('0x25')](handleEntityNotFound(_0x207123,null))[_0x01da('0x25')](saveUpdates(_0x243fb8['body'],null))[_0x01da('0x25')](respondWithResult(_0x207123,null))['catch'](handleError(_0x207123,null));};exports['destroy']=function(_0x50275f,_0x13eb7b){return db[_0x01da('0x30')][_0x01da('0x51')]({'where':{'id':_0x50275f['params']['id']}})['then'](handleEntityNotFound(_0x13eb7b,null))['then'](removeEntity(_0x13eb7b,null))['catch'](handleError(_0x13eb7b,null));};exports[_0x01da('0x57')]=function(_0x2c1021,_0xd0c7fc,_0x2532fe){if(_0x2c1021[_0x01da('0x55')]['id']){delete _0x2c1021[_0x01da('0x55')]['id'];}return db[_0x01da('0x30')]['find']({'where':{'id':_0x2c1021[_0x01da('0x56')]['id']}})[_0x01da('0x25')](handleEntityNotFound(_0xd0c7fc,null))['then'](function(_0x32089d){if(_0x32089d){_0x2c1021[_0x01da('0x55')]['TriggerAllId']=_0x32089d['id'];return db[_0x01da('0x58')][_0x01da('0x4c')](_0x2c1021[_0x01da('0x55')]);}})['then'](respondWithResult(_0xd0c7fc,null))['catch'](handleError(_0xd0c7fc,null));};exports[_0x01da('0x59')]=function(_0x49d499,_0x1b12e3,_0x3127c8){if(_0x49d499['body']['id']){delete _0x49d499[_0x01da('0x55')]['id'];}return db[_0x01da('0x30')][_0x01da('0x51')]({'where':{'id':_0x49d499[_0x01da('0x56')]['id']}})[_0x01da('0x25')](handleEntityNotFound(_0x1b12e3,null))['then'](function(_0x5e3743){if(_0x5e3743){_0x49d499['body']['TriggerAnyId']=_0x5e3743['id'];return db[_0x01da('0x58')]['create'](_0x49d499[_0x01da('0x55')]);}})[_0x01da('0x25')](respondWithResult(_0x1b12e3,null))[_0x01da('0x4a')](handleError(_0x1b12e3,null));};exports[_0x01da('0x5a')]=function(_0x33ac18,_0x8b953e,_0x7c0f83){var _0x4eb155={};var _0x5485dd={};var _0x38bd4f;var _0x31fe7a;return db['Trigger'][_0x01da('0x5b')]({'where':{'id':_0x33ac18[_0x01da('0x56')]['id']}})['then'](handleEntityNotFound(_0x8b953e,null))[_0x01da('0x25')](function(_0x299ea4){if(_0x299ea4){_0x38bd4f=_0x299ea4;_0x5485dd[_0x01da('0x34')]=_[_0x01da('0x37')](db[_0x01da('0x58')][_0x01da('0x31')]);_0x5485dd[_0x01da('0x36')]=_[_0x01da('0x37')](_0x33ac18[_0x01da('0x36')]);_0x5485dd[_0x01da('0x38')]=_[_0x01da('0x39')](_0x5485dd[_0x01da('0x34')],_0x5485dd['query']);_0x4eb155[_0x01da('0x3a')]=_[_0x01da('0x39')](_0x5485dd[_0x01da('0x34')],qs['fields'](_0x33ac18[_0x01da('0x36')][_0x01da('0x3b')]));_0x4eb155[_0x01da('0x3a')]=_0x4eb155[_0x01da('0x3a')]['length']?_0x4eb155['attributes']:_0x5485dd[_0x01da('0x34')];_0x4eb155['order']=qs[_0x01da('0x40')](_0x33ac18['query'][_0x01da('0x40')]);_0x4eb155['where']=qs[_0x01da('0x38')](_['pick'](_0x33ac18['query'],_0x5485dd[_0x01da('0x38')]));if(_0x33ac18[_0x01da('0x36')][_0x01da('0x43')]){_0x4eb155[_0x01da('0x41')]=_['merge'](_0x4eb155[_0x01da('0x41')],{'$or':_[_0x01da('0x35')](_0x4eb155[_0x01da('0x3a')],function(_0x3ee2ed){var _0x4348db={};_0x4348db[_0x3ee2ed]={'$like':'%'+_0x33ac18[_0x01da('0x36')]['filter']+'%'};return _0x4348db;})});}_0x4eb155=_[_0x01da('0x44')]({},_0x4eb155,_0x33ac18['options']);return _0x38bd4f[_0x01da('0x5a')](_0x4eb155);}})[_0x01da('0x25')](function(_0x27e3c7){if(_0x27e3c7){_0x31fe7a=_0x27e3c7[_0x01da('0x3c')];if(!_0x33ac18[_0x01da('0x36')][_0x01da('0x3d')](_0x01da('0x5c'))){_0x4eb155['limit']=qs[_0x01da('0x1e')](_0x33ac18['query'][_0x01da('0x1e')]);_0x4eb155[_0x01da('0x3e')]=qs[_0x01da('0x3e')](_0x33ac18['query'][_0x01da('0x3e')]);}return _0x38bd4f[_0x01da('0x5a')](_0x4eb155);}})[_0x01da('0x25')](function(_0x203349){if(_0x203349){return _0x203349?{'count':_0x31fe7a,'rows':_0x203349}:null;}})['then'](respondWithResult(_0x8b953e,null))[_0x01da('0x4a')](handleError(_0x8b953e,null));};exports['getAnyConditions']=function(_0xd419c8,_0x48bf93,_0x4a43b0){var _0x1c69e5={};var _0x552aa6={};var _0x2ce96e;var _0x4fd43e;return db[_0x01da('0x30')][_0x01da('0x5b')]({'where':{'id':_0xd419c8[_0x01da('0x56')]['id']}})[_0x01da('0x25')](handleEntityNotFound(_0x48bf93,null))[_0x01da('0x25')](function(_0x289d3d){if(_0x289d3d){_0x2ce96e=_0x289d3d;_0x552aa6[_0x01da('0x34')]=_['keys'](db['Condition'][_0x01da('0x31')]);_0x552aa6[_0x01da('0x36')]=_[_0x01da('0x37')](_0xd419c8[_0x01da('0x36')]);_0x552aa6['filters']=_[_0x01da('0x39')](_0x552aa6[_0x01da('0x34')],_0x552aa6[_0x01da('0x36')]);_0x1c69e5[_0x01da('0x3a')]=_[_0x01da('0x39')](_0x552aa6[_0x01da('0x34')],qs[_0x01da('0x3b')](_0xd419c8[_0x01da('0x36')][_0x01da('0x3b')]));_0x1c69e5[_0x01da('0x3a')]=_0x1c69e5[_0x01da('0x3a')]['length']?_0x1c69e5[_0x01da('0x3a')]:_0x552aa6['model'];_0x1c69e5[_0x01da('0x3f')]=qs['sort'](_0xd419c8[_0x01da('0x36')]['sort']);_0x1c69e5['where']=qs[_0x01da('0x38')](_[_0x01da('0x42')](_0xd419c8[_0x01da('0x36')],_0x552aa6[_0x01da('0x38')]));if(_0xd419c8['query'][_0x01da('0x43')]){_0x1c69e5[_0x01da('0x41')]=_[_0x01da('0x44')](_0x1c69e5['where'],{'$or':_[_0x01da('0x35')](_0x1c69e5[_0x01da('0x3a')],function(_0x56746e){var _0x356ff5={};_0x356ff5[_0x56746e]={'$like':'%'+_0xd419c8['query'][_0x01da('0x43')]+'%'};return _0x356ff5;})});}_0x1c69e5=_[_0x01da('0x44')]({},_0x1c69e5,_0xd419c8[_0x01da('0x46')]);return _0x2ce96e['getAnyConditions'](_0x1c69e5);}})[_0x01da('0x25')](function(_0x2a007f){if(_0x2a007f){_0x4fd43e=_0x2a007f['length'];if(!_0xd419c8[_0x01da('0x36')][_0x01da('0x3d')](_0x01da('0x5c'))){_0x1c69e5[_0x01da('0x1e')]=qs[_0x01da('0x1e')](_0xd419c8['query'][_0x01da('0x1e')]);_0x1c69e5[_0x01da('0x3e')]=qs[_0x01da('0x3e')](_0xd419c8['query'][_0x01da('0x3e')]);}return _0x2ce96e[_0x01da('0x5d')](_0x1c69e5);}})[_0x01da('0x25')](function(_0x1444d5){if(_0x1444d5){return _0x1444d5?{'count':_0x4fd43e,'rows':_0x1444d5}:null;}})['then'](respondWithResult(_0x48bf93,null))[_0x01da('0x4a')](handleError(_0x48bf93,null));};exports[_0x01da('0x5e')]=function(_0x30f698,_0x1b62a5,_0x2fe47f){if(_0x30f698[_0x01da('0x55')]['id']){delete _0x30f698[_0x01da('0x55')]['id'];}return db[_0x01da('0x30')]['find']({'where':{'id':_0x30f698['params']['id']}})[_0x01da('0x25')](handleEntityNotFound(_0x1b62a5,null))[_0x01da('0x25')](function(_0x30b890){if(_0x30b890){_0x30f698[_0x01da('0x55')][_0x01da('0x5f')]=_0x30b890['id'];return db['Action']['create'](_0x30f698['body']);}})['then'](respondWithResult(_0x1b62a5,null))['catch'](handleError(_0x1b62a5,null));};exports[_0x01da('0x60')]=function(_0x1d0e3c,_0x5edeb3,_0x123f61){var _0x3c26fc={};var _0x48d672={};var _0xcfbdd4;var _0x3439ff;return db[_0x01da('0x30')][_0x01da('0x5b')]({'where':{'id':_0x1d0e3c[_0x01da('0x56')]['id']}})[_0x01da('0x25')](handleEntityNotFound(_0x5edeb3,null))['then'](function(_0x106879){if(_0x106879){_0xcfbdd4=_0x106879;_0x48d672[_0x01da('0x34')]=_[_0x01da('0x37')](db[_0x01da('0x61')]['rawAttributes']);_0x48d672[_0x01da('0x36')]=_[_0x01da('0x37')](_0x1d0e3c['query']);_0x48d672['filters']=_[_0x01da('0x39')](_0x48d672[_0x01da('0x34')],_0x48d672['query']);_0x3c26fc[_0x01da('0x3a')]=_['intersection'](_0x48d672[_0x01da('0x34')],qs[_0x01da('0x3b')](_0x1d0e3c['query'][_0x01da('0x3b')]));_0x3c26fc[_0x01da('0x3a')]=_0x3c26fc['attributes']['length']?_0x3c26fc[_0x01da('0x3a')]:_0x48d672[_0x01da('0x34')];_0x3c26fc[_0x01da('0x3f')]=qs[_0x01da('0x40')](_0x1d0e3c[_0x01da('0x36')][_0x01da('0x40')]);_0x3c26fc[_0x01da('0x41')]=qs[_0x01da('0x38')](_[_0x01da('0x42')](_0x1d0e3c['query'],_0x48d672[_0x01da('0x38')]));if(_0x1d0e3c[_0x01da('0x36')][_0x01da('0x43')]){_0x3c26fc[_0x01da('0x41')]=_[_0x01da('0x44')](_0x3c26fc['where'],{'$or':_[_0x01da('0x35')](_0x3c26fc[_0x01da('0x3a')],function(_0x3184ea){var _0x35c3e7={};_0x35c3e7[_0x3184ea]={'$like':'%'+_0x1d0e3c[_0x01da('0x36')]['filter']+'%'};return _0x35c3e7;})});}_0x3c26fc=_['merge']({},_0x3c26fc,_0x1d0e3c[_0x01da('0x46')]);return _0xcfbdd4['getActions'](_0x3c26fc);}})[_0x01da('0x25')](function(_0x1ed558){if(_0x1ed558){_0x3439ff=_0x1ed558[_0x01da('0x3c')];if(!_0x1d0e3c[_0x01da('0x36')][_0x01da('0x3d')](_0x01da('0x5c'))){_0x3c26fc[_0x01da('0x1e')]=qs[_0x01da('0x1e')](_0x1d0e3c[_0x01da('0x36')][_0x01da('0x1e')]);_0x3c26fc[_0x01da('0x3e')]=qs['offset'](_0x1d0e3c[_0x01da('0x36')][_0x01da('0x3e')]);}return _0xcfbdd4[_0x01da('0x60')](_0x3c26fc);}})[_0x01da('0x25')](function(_0x3466db){if(_0x3466db){return _0x3466db?{'count':_0x3439ff,'rows':_0x3466db}:null;}})[_0x01da('0x25')](respondWithResult(_0x5edeb3,null))[_0x01da('0x4a')](handleError(_0x5edeb3,null));};
\ No newline at end of file
index 7447691..7baa7e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3663=['path','rimraf','../../config/environment','./trigger.attributes','exports','define','tools_triggers','lodash','util','../../config/logger','moment','bluebird'];(function(_0x3c44c8,_0xe07118){var _0x51fa81=function(_0x3b70bf){while(--_0x3b70bf){_0x3c44c8['push'](_0x3c44c8['shift']());}};_0x51fa81(++_0xe07118);}(_0x3663,0x1cf));var _0x3366=function(_0x1de7e8,_0x355ee5){_0x1de7e8=_0x1de7e8-0x0;var _0x41b9ea=_0x3663[_0x1de7e8];return _0x41b9ea;};'use strict';var _=require(_0x3366('0x0'));var util=require(_0x3366('0x1'));var logger=require(_0x3366('0x2'))('api');var moment=require(_0x3366('0x3'));var BPromise=require(_0x3366('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3366('0x5'));var rimraf=require(_0x3366('0x6'));var config=require(_0x3366('0x7'));var attributes=require(_0x3366('0x8'));module[_0x3366('0x9')]=function(_0x5284c0,_0x293cdb){return _0x5284c0[_0x3366('0xa')]('Trigger',attributes,{'tableName':_0x3366('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b37=['../../config/environment','exports','define','Trigger','tools_triggers','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x3ea2bd,_0x964b84){var _0x585fa1=function(_0x70600c){while(--_0x70600c){_0x3ea2bd['push'](_0x3ea2bd['shift']());}};_0x585fa1(++_0x964b84);}(_0x2b37,0x12b));var _0x72b3=function(_0x3ab313,_0x4d6b91){_0x3ab313=_0x3ab313-0x0;var _0x52e13f=_0x2b37[_0x3ab313];return _0x52e13f;};'use strict';var _=require(_0x72b3('0x0'));var util=require(_0x72b3('0x1'));var logger=require(_0x72b3('0x2'))(_0x72b3('0x3'));var moment=require(_0x72b3('0x4'));var BPromise=require(_0x72b3('0x5'));var rp=require(_0x72b3('0x6'));var fs=require('fs');var path=require(_0x72b3('0x7'));var rimraf=require(_0x72b3('0x8'));var config=require(_0x72b3('0x9'));var attributes=require('./trigger.attributes');module[_0x72b3('0xa')]=function(_0x2ab374,_0x50bccb){return _0x2ab374[_0x72b3('0xb')](_0x72b3('0xc'),attributes,{'tableName':_0x72b3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 01917a6..494ae89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7d3=['code','message','catch','GetTrigger','Trigger','options','where','attributes','limit','include','map','model','ShowTrigger','find','lodash','bluebird','ioredis','../../config/utils','rpc','client','http','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x29d6e6,_0x264220){var _0xc75ff0=function(_0x214f6b){while(--_0x214f6b){_0x29d6e6['push'](_0x29d6e6['shift']());}};_0xc75ff0(++_0x264220);}(_0xe7d3,0xfe));var _0x3e7d=function(_0x1104b7,_0x5221b6){_0x1104b7=_0x1104b7-0x0;var _0x2691ca=_0xe7d3[_0x1104b7];return _0x2691ca;};'use strict';var _=require(_0x3e7d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3e7d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3e7d('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x3e7d('0x3'));var logger=require('../../config/logger')(_0x3e7d('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3e7d('0x5')][_0x3e7d('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x269553,_0x34d0bc,_0x45101d){return new BPromise(function(_0x4b39d1,_0x23af22){return client[_0x3e7d('0x7')](_0x269553,_0x45101d)[_0x3e7d('0x8')](function(_0x43cb95){logger[_0x3e7d('0x9')](_0x3e7d('0xa'),_0x34d0bc,_0x3e7d('0xb'));logger[_0x3e7d('0xc')](_0x3e7d('0xd'),_0x34d0bc,_0x3e7d('0xb'),JSON[_0x3e7d('0xe')](_0x43cb95));if(_0x43cb95[_0x3e7d('0xf')]){if(_0x43cb95[_0x3e7d('0xf')][_0x3e7d('0x10')]===0x1f4){logger['error']('Trigger,\x20%s,\x20%s',_0x34d0bc,_0x43cb95[_0x3e7d('0xf')][_0x3e7d('0x11')]);return _0x23af22(_0x43cb95[_0x3e7d('0xf')]['message']);}logger[_0x3e7d('0xf')]('Trigger,\x20%s,\x20%s',_0x34d0bc,_0x43cb95[_0x3e7d('0xf')][_0x3e7d('0x11')]);return _0x4b39d1(_0x43cb95[_0x3e7d('0xf')][_0x3e7d('0x11')]);}else{logger['info'](_0x3e7d('0xa'),_0x34d0bc,_0x3e7d('0xb'));_0x4b39d1(_0x43cb95['result'][_0x3e7d('0x11')]);}})[_0x3e7d('0x12')](function(_0x4a8312){logger[_0x3e7d('0xf')](_0x3e7d('0xa'),_0x34d0bc,_0x4a8312);_0x23af22(_0x4a8312);});});}exports[_0x3e7d('0x13')]=function(_0x393b6d){var _0x35c332=this;return new Promise(function(_0x3c5a50,_0x1334d2){return db[_0x3e7d('0x14')]['findAll']({'raw':_0x393b6d[_0x3e7d('0x15')]?_0x393b6d[_0x3e7d('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x393b6d[_0x3e7d('0x15')]?_0x393b6d[_0x3e7d('0x15')][_0x3e7d('0x16')]||null:null,'attributes':_0x393b6d[_0x3e7d('0x15')]?_0x393b6d[_0x3e7d('0x15')][_0x3e7d('0x17')]||null:null,'limit':_0x393b6d['options']?_0x393b6d[_0x3e7d('0x15')][_0x3e7d('0x18')]||null:null,'include':_0x393b6d[_0x3e7d('0x15')]?_0x393b6d[_0x3e7d('0x15')][_0x3e7d('0x19')]?_[_0x3e7d('0x1a')](_0x393b6d['options'][_0x3e7d('0x19')],function(_0xff6263){return{'model':db[_0xff6263[_0x3e7d('0x1b')]],'as':_0xff6263['as'],'attributes':_0xff6263[_0x3e7d('0x17')],'include':_0xff6263['include']?_[_0x3e7d('0x1a')](_0xff6263[_0x3e7d('0x19')],function(_0x3cf30a){return{'model':db[_0x3cf30a[_0x3e7d('0x1b')]],'as':_0x3cf30a['as'],'attributes':_0x3cf30a[_0x3e7d('0x17')],'include':_0x3cf30a[_0x3e7d('0x19')]?_[_0x3e7d('0x1a')](_0x3cf30a[_0x3e7d('0x19')],function(_0x30ad35){return{'model':db[_0x30ad35[_0x3e7d('0x1b')]],'as':_0x30ad35['as'],'attributes':_0x30ad35[_0x3e7d('0x17')]};}):[]};}):[]};}):[]:[]})[_0x3e7d('0x8')](function(_0x30e99c){logger[_0x3e7d('0x9')]('GetTrigger',_0x393b6d);logger['debug'](_0x3e7d('0x13'),_0x393b6d,JSON[_0x3e7d('0xe')](_0x30e99c));_0x3c5a50(_0x30e99c);})['catch'](function(_0x3aaf53){logger[_0x3e7d('0xf')](_0x3e7d('0x13'),_0x3aaf53[_0x3e7d('0x11')],_0x393b6d);_0x1334d2(_0x35c332['error'](0x1f4,_0x3aaf53[_0x3e7d('0x11')]));});});};exports[_0x3e7d('0x1c')]=function(_0x221a7a){var _0x4d9ca4=this;return new Promise(function(_0x2941ea,_0x472c31){return db[_0x3e7d('0x14')][_0x3e7d('0x1d')]({'raw':_0x221a7a['options']?_0x221a7a[_0x3e7d('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x221a7a[_0x3e7d('0x15')]?_0x221a7a[_0x3e7d('0x15')][_0x3e7d('0x16')]||null:null,'attributes':_0x221a7a[_0x3e7d('0x15')]?_0x221a7a['options'][_0x3e7d('0x17')]||null:null,'include':_0x221a7a[_0x3e7d('0x15')]?_0x221a7a[_0x3e7d('0x15')][_0x3e7d('0x19')]?_[_0x3e7d('0x1a')](_0x221a7a[_0x3e7d('0x15')]['include'],function(_0x161541){return{'model':db[_0x161541['model']],'as':_0x161541['as'],'attributes':_0x161541[_0x3e7d('0x17')],'include':_0x161541[_0x3e7d('0x19')]?_[_0x3e7d('0x1a')](_0x161541[_0x3e7d('0x19')],function(_0x6f5fd6){return{'model':db[_0x6f5fd6['model']],'as':_0x6f5fd6['as'],'attributes':_0x6f5fd6[_0x3e7d('0x17')],'include':_0x6f5fd6[_0x3e7d('0x19')]?_['map'](_0x6f5fd6[_0x3e7d('0x19')],function(_0x23803f){return{'model':db[_0x23803f[_0x3e7d('0x1b')]],'as':_0x23803f['as'],'attributes':_0x23803f[_0x3e7d('0x17')]};}):[]};}):[]};}):[]:[]})[_0x3e7d('0x8')](function(_0x34d14c){logger[_0x3e7d('0x9')](_0x3e7d('0x1c'),_0x221a7a);logger[_0x3e7d('0xc')](_0x3e7d('0x1c'),_0x221a7a,JSON[_0x3e7d('0xe')](_0x34d14c));_0x2941ea(_0x34d14c);})[_0x3e7d('0x12')](function(_0x1afc55){logger['error'](_0x3e7d('0x1c'),_0x1afc55[_0x3e7d('0x11')],_0x221a7a);_0x472c31(_0x4d9ca4[_0x3e7d('0xf')](0x1f4,_0x1afc55[_0x3e7d('0x11')]));});});};
\ No newline at end of file
+var _0xe4c9=['debug','Trigger,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetTrigger','findAll','raw','options','where','limit','map','include','model','attributes','ShowTrigger','find','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','http','then','info','Trigger,\x20%s,\x20%s'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xe4c9,0x98));var _0x9e4c=function(_0x37512d,_0x44495e){_0x37512d=_0x37512d-0x0;var _0x133f49=_0xe4c9[_0x37512d];return _0x133f49;};'use strict';var _=require(_0x9e4c('0x0'));var util=require(_0x9e4c('0x1'));var moment=require(_0x9e4c('0x2'));var BPromise=require(_0x9e4c('0x3'));var rs=require(_0x9e4c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9e4c('0x5'))['db'];var utils=require(_0x9e4c('0x6'));var logger=require('../../config/logger')(_0x9e4c('0x7'));var config=require('../../config/environment');var jayson=require(_0x9e4c('0x8'));var client=jayson['client'][_0x9e4c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x56defe,_0xcf95ba,_0x5bcf07){return new BPromise(function(_0x1dea63,_0xbec082){return client['request'](_0x56defe,_0x5bcf07)[_0x9e4c('0xa')](function(_0x477a81){logger[_0x9e4c('0xb')](_0x9e4c('0xc'),_0xcf95ba,'request\x20sent');logger[_0x9e4c('0xd')](_0x9e4c('0xe'),_0xcf95ba,'request\x20sent',JSON['stringify'](_0x477a81));if(_0x477a81['error']){if(_0x477a81[_0x9e4c('0xf')][_0x9e4c('0x10')]===0x1f4){logger['error'](_0x9e4c('0xc'),_0xcf95ba,_0x477a81['error'][_0x9e4c('0x11')]);return _0xbec082(_0x477a81[_0x9e4c('0xf')][_0x9e4c('0x11')]);}logger['error'](_0x9e4c('0xc'),_0xcf95ba,_0x477a81['error'][_0x9e4c('0x11')]);return _0x1dea63(_0x477a81[_0x9e4c('0xf')][_0x9e4c('0x11')]);}else{logger[_0x9e4c('0xb')](_0x9e4c('0xc'),_0xcf95ba,'request\x20sent');_0x1dea63(_0x477a81[_0x9e4c('0x12')][_0x9e4c('0x11')]);}})[_0x9e4c('0x13')](function(_0x3f8a89){logger[_0x9e4c('0xf')]('Trigger,\x20%s,\x20%s',_0xcf95ba,_0x3f8a89);_0xbec082(_0x3f8a89);});});}exports[_0x9e4c('0x14')]=function(_0x4b4bd9){var _0x513cf8=this;return new Promise(function(_0x3a97b7,_0x1de73f){return db['Trigger'][_0x9e4c('0x15')]({'raw':_0x4b4bd9['options']?_0x4b4bd9['options'][_0x9e4c('0x16')]===undefined?!![]:![]:!![],'where':_0x4b4bd9[_0x9e4c('0x17')]?_0x4b4bd9[_0x9e4c('0x17')][_0x9e4c('0x18')]||null:null,'attributes':_0x4b4bd9[_0x9e4c('0x17')]?_0x4b4bd9[_0x9e4c('0x17')]['attributes']||null:null,'limit':_0x4b4bd9[_0x9e4c('0x17')]?_0x4b4bd9[_0x9e4c('0x17')][_0x9e4c('0x19')]||null:null,'include':_0x4b4bd9[_0x9e4c('0x17')]?_0x4b4bd9[_0x9e4c('0x17')]['include']?_[_0x9e4c('0x1a')](_0x4b4bd9[_0x9e4c('0x17')][_0x9e4c('0x1b')],function(_0x3ea796){return{'model':db[_0x3ea796['model']],'as':_0x3ea796['as'],'attributes':_0x3ea796['attributes'],'include':_0x3ea796[_0x9e4c('0x1b')]?_[_0x9e4c('0x1a')](_0x3ea796[_0x9e4c('0x1b')],function(_0x5e176b){return{'model':db[_0x5e176b[_0x9e4c('0x1c')]],'as':_0x5e176b['as'],'attributes':_0x5e176b[_0x9e4c('0x1d')],'include':_0x5e176b[_0x9e4c('0x1b')]?_[_0x9e4c('0x1a')](_0x5e176b[_0x9e4c('0x1b')],function(_0x500842){return{'model':db[_0x500842['model']],'as':_0x500842['as'],'attributes':_0x500842[_0x9e4c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x9e4c('0xa')](function(_0x58e618){logger[_0x9e4c('0xb')]('GetTrigger',_0x4b4bd9);logger[_0x9e4c('0xd')]('GetTrigger',_0x4b4bd9,JSON['stringify'](_0x58e618));_0x3a97b7(_0x58e618);})[_0x9e4c('0x13')](function(_0x30f3bb){logger[_0x9e4c('0xf')]('GetTrigger',_0x30f3bb[_0x9e4c('0x11')],_0x4b4bd9);_0x1de73f(_0x513cf8['error'](0x1f4,_0x30f3bb[_0x9e4c('0x11')]));});});};exports[_0x9e4c('0x1e')]=function(_0x32ad29){var _0x344418=this;return new Promise(function(_0x14e52e,_0x2078ef){return db['Trigger'][_0x9e4c('0x1f')]({'raw':_0x32ad29[_0x9e4c('0x17')]?_0x32ad29[_0x9e4c('0x17')][_0x9e4c('0x16')]===undefined?!![]:![]:!![],'where':_0x32ad29[_0x9e4c('0x17')]?_0x32ad29[_0x9e4c('0x17')]['where']||null:null,'attributes':_0x32ad29[_0x9e4c('0x17')]?_0x32ad29[_0x9e4c('0x17')][_0x9e4c('0x1d')]||null:null,'include':_0x32ad29[_0x9e4c('0x17')]?_0x32ad29['options'][_0x9e4c('0x1b')]?_[_0x9e4c('0x1a')](_0x32ad29[_0x9e4c('0x17')][_0x9e4c('0x1b')],function(_0x445bed){return{'model':db[_0x445bed[_0x9e4c('0x1c')]],'as':_0x445bed['as'],'attributes':_0x445bed[_0x9e4c('0x1d')],'include':_0x445bed[_0x9e4c('0x1b')]?_[_0x9e4c('0x1a')](_0x445bed[_0x9e4c('0x1b')],function(_0x203449){return{'model':db[_0x203449[_0x9e4c('0x1c')]],'as':_0x203449['as'],'attributes':_0x203449[_0x9e4c('0x1d')],'include':_0x203449[_0x9e4c('0x1b')]?_[_0x9e4c('0x1a')](_0x203449[_0x9e4c('0x1b')],function(_0x29f678){return{'model':db[_0x29f678[_0x9e4c('0x1c')]],'as':_0x29f678['as'],'attributes':_0x29f678[_0x9e4c('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x342ffa){logger[_0x9e4c('0xb')](_0x9e4c('0x1e'),_0x32ad29);logger[_0x9e4c('0xd')](_0x9e4c('0x1e'),_0x32ad29,JSON[_0x9e4c('0x20')](_0x342ffa));_0x14e52e(_0x342ffa);})[_0x9e4c('0x13')](function(_0x5e0d07){logger['error'](_0x9e4c('0x1e'),_0x5e0d07[_0x9e4c('0x11')],_0x32ad29);_0x2078ef(_0x344418[_0x9e4c('0xf')](0x1f4,_0x5e0d07[_0x9e4c('0x11')]));});});};
\ No newline at end of file
index 84d460a..57c9325 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x952f=['get','isAuthenticated','index','/:id','post','/:id/clone','clone','create','put','update','delete','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller'];(function(_0x47719c,_0x50518e){var _0x51a5ae=function(_0x23be69){while(--_0x23be69){_0x47719c['push'](_0x47719c['shift']());}};_0x51a5ae(++_0x50518e);}(_0x952f,0x1d8));var _0xf952=function(_0x4ca536,_0x57c8de){_0x4ca536=_0x4ca536-0x0;var _0x3bd35f=_0x952f[_0x4ca536];return _0x3bd35f;};'use strict';var multer=require('multer');var util=require(_0xf952('0x0'));var path=require(_0xf952('0x1'));var timeout=require(_0xf952('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf952('0x3'));var auth=require(_0xf952('0x4'));var interaction=require(_0xf952('0x5'));var config=require(_0xf952('0x6'));var controller=require(_0xf952('0x7'));router[_0xf952('0x8')]('/',auth[_0xf952('0x9')](),controller[_0xf952('0xa')]);router['get'](_0xf952('0xb'),auth[_0xf952('0x9')](),controller['show']);router[_0xf952('0xc')](_0xf952('0xd'),auth[_0xf952('0x9')](),controller[_0xf952('0xe')]);router[_0xf952('0xc')]('/',auth[_0xf952('0x9')](),controller[_0xf952('0xf')]);router[_0xf952('0x10')]('/:id',auth[_0xf952('0x9')](),controller[_0xf952('0x11')]);router[_0xf952('0x12')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xf952('0x13')]=router;
\ No newline at end of file
+var _0xe15a=['isAuthenticated','index','/:id','show','/:id/clone','clone','post','create','update','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','../../config/environment','./trunk.controller','get'];(function(_0x5bb22f,_0x515720){var _0x251f38=function(_0x30500b){while(--_0x30500b){_0x5bb22f['push'](_0x5bb22f['shift']());}};_0x251f38(++_0x515720);}(_0xe15a,0x160));var _0xae15=function(_0x2353fe,_0x4b0bca){_0x2353fe=_0x2353fe-0x0;var _0x4d43f6=_0xe15a[_0x2353fe];return _0x4d43f6;};'use strict';var multer=require(_0xae15('0x0'));var util=require('util');var path=require(_0xae15('0x1'));var timeout=require('connect-timeout');var express=require(_0xae15('0x2'));var router=express[_0xae15('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xae15('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xae15('0x5'));var controller=require(_0xae15('0x6'));router[_0xae15('0x7')]('/',auth[_0xae15('0x8')](),controller[_0xae15('0x9')]);router[_0xae15('0x7')](_0xae15('0xa'),auth[_0xae15('0x8')](),controller[_0xae15('0xb')]);router['post'](_0xae15('0xc'),auth[_0xae15('0x8')](),controller[_0xae15('0xd')]);router[_0xae15('0xe')]('/',auth[_0xae15('0x8')](),controller[_0xae15('0xf')]);router['put'](_0xae15('0xa'),auth[_0xae15('0x8')](),controller[_0xae15('0x10')]);router[_0xae15('0x11')](_0xae15('0xa'),auth['isAuthenticated'](),controller[_0xae15('0x12')]);module[_0xae15('0x13')]=router;
\ No newline at end of file
index 3193dfb..fb4b0cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9fc=['active','actpass','dynamic','update,nonat','sequelize','exports','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','setDataValue','join','transport','split','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','nat','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','INTEGER','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','fingerprint','certificate'];(function(_0x36b285,_0x146c16){var _0xa114cb=function(_0x3be4db){while(--_0x3be4db){_0x36b285['push'](_0x36b285['shift']());}};_0xa114cb(++_0x146c16);}(_0xd9fc,0x1a4));var _0xcd9f=function(_0x41aecc,_0x2196bb){_0x41aecc=_0x41aecc-0x0;var _0x555937=_0xd9fc[_0x41aecc];return _0x555937;};'use strict';var Sequelize=require(_0xcd9f('0x0'));module[_0xcd9f('0x1')]={'name':{'type':Sequelize[_0xcd9f('0x2')],'allowNull':![],'unique':_0xcd9f('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x5'),_0xcd9f('0x6'),_0xcd9f('0x7')),'allowNull':![],'defaultValue':_0xcd9f('0x5')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xcd9f('0x8')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0xcd9f('0x9'),_0xcd9f('0xa'),'ALLOWED',_0xcd9f('0xb'),'PROHIB_PASSED_SCREEN',_0xcd9f('0xc'),_0xcd9f('0xd'))},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize[_0xcd9f('0x2')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize[_0xcd9f('0x2')]},'remotesecret':{'type':Sequelize[_0xcd9f('0x2')]},'transport':{'type':Sequelize[_0xcd9f('0x2')],'defaultValue':'udp','set':function(_0x4bbcae){this[_0xcd9f('0xe')]('transport',_0x4bbcae?_0x4bbcae[_0xcd9f('0xf')](','):null);},'get':function(){return this['getDataValue'](_0xcd9f('0x10'))?this['getDataValue'](_0xcd9f('0x10'))[_0xcd9f('0x11')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x12'),_0xcd9f('0x13'),_0xcd9f('0x14'),_0xcd9f('0x15'),_0xcd9f('0x16')),'defaultValue':_0xcd9f('0x12')},'directmedia':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no',_0xcd9f('0x18'),_0xcd9f('0x19'),_0xcd9f('0x1a')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xcd9f('0x4')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xcd9f('0x2')]},'directmediadeny':{'type':Sequelize[_0xcd9f('0x2')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0xcd9f('0x1b'),'set':function(_0x95e369){this[_0xcd9f('0xe')](_0xcd9f('0x1c'),_0x95e369?_0x95e369['join'](','):null);},'get':function(){return this['getDataValue']('nat')?this[_0xcd9f('0x1d')](_0xcd9f('0x1c'))[_0xcd9f('0x11')](','):null;},'comment':_0xcd9f('0x1e')},'callgroup':{'type':Sequelize[_0xcd9f('0x2')]},'namedcallgroup':{'type':Sequelize[_0xcd9f('0x2')]},'pickupgroup':{'type':Sequelize[_0xcd9f('0x2')]},'namedpickupgroup':{'type':Sequelize[_0xcd9f('0x2')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xcd9f('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0xcd9f('0x1f')},'allow':{'type':Sequelize[_0xcd9f('0x2')],'allowNull':![],'defaultValue':_0xcd9f('0x20'),'set':function(_0x139059){this[_0xcd9f('0xe')]('allow',_0x139059?_0x139059[_0xcd9f('0xf')](';'):_0xcd9f('0x20'));},'get':function(){return this[_0xcd9f('0x1d')]('allow')?this['getDataValue'](_0xcd9f('0x21'))[_0xcd9f('0x11')](';'):null;},'comment':_0xcd9f('0x22')},'autoframing':{'type':Sequelize[_0xcd9f('0x4')]('yes','no')},'insecure':{'type':Sequelize[_0xcd9f('0x2')],'defaultValue':_0xcd9f('0x23'),'set':function(_0xe4d2a6){this['setDataValue'](_0xcd9f('0x24'),_0xe4d2a6?_0xe4d2a6[_0xcd9f('0xf')](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0xcd9f('0x1d')](_0xcd9f('0x24'))[_0xcd9f('0x11')](','):null;},'comment':_0xcd9f('0x25')},'trustrpid':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xcd9f('0x4')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no','never')},'promiscredir':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no')},'useclientcode':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no')},'accountcode':{'type':Sequelize[_0xcd9f('0x26')](0xb)},'setvar':{'type':Sequelize[_0xcd9f('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0xcd9f('0x27')},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0xcd9f('0x4')]('yes','no'),'defaultValue':_0xcd9f('0x17')},'busylevel':{'type':Sequelize[_0xcd9f('0x26')](0xb)},'allowoverlap':{'type':Sequelize[_0xcd9f('0x4')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no')},'allowtransfer':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no')},'ignoresdpversion':{'type':Sequelize[_0xcd9f('0x4')]('yes','no')},'subscribecontext':{'type':Sequelize[_0xcd9f('0x2')]},'template':{'type':Sequelize[_0xcd9f('0x2')]},'videosupport':{'type':Sequelize[_0xcd9f('0x4')]('yes','no',_0xcd9f('0x28')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xcd9f('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no')},'mailbox':{'type':Sequelize[_0xcd9f('0x2')]},'session_timers':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x29'),_0xcd9f('0x2a'),_0xcd9f('0x2b'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0xcd9f('0x26')](0xb)},'session_refresher':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x2c'),_0xcd9f('0x2d')),'defaultValue':_0xcd9f('0x2d')},'t38pt_usertpsource':{'type':Sequelize[_0xcd9f('0x2')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize[_0xcd9f('0x2')]},'fromuser':{'type':Sequelize[_0xcd9f('0x2')]},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize['ENUM'](_0xcd9f('0x17'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0xcd9f('0x2')]},'defaultuser':{'type':Sequelize[_0xcd9f('0x2')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xcd9f('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize[_0xcd9f('0x4')]('yes','no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xcd9f('0x2')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize[_0xcd9f('0x26')](0xb)},'timerb':{'type':Sequelize[_0xcd9f('0x26')](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0xcd9f('0x2')]},'contactacl':{'type':Sequelize[_0xcd9f('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0xcd9f('0x2')]},'use_q850_reason':{'type':Sequelize[_0xcd9f('0x2')]},'maxforwards':{'type':Sequelize[_0xcd9f('0x26')](0xb)},'encryption':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no')},'force_avp':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no')},'icesupport':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0xcd9f('0x17'),'no')},'dtlsverify':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no',_0xcd9f('0x2e'),_0xcd9f('0x2f'))},'dtlsrekey':{'type':Sequelize[_0xcd9f('0x26')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize[_0xcd9f('0x2')]},'dtlscipher':{'type':Sequelize[_0xcd9f('0x2')]},'dtlscafile':{'type':Sequelize[_0xcd9f('0x2')]},'dtlscapath':{'type':Sequelize[_0xcd9f('0x2')]},'dtlssetup':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x30'),'passive',_0xcd9f('0x31')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0xcd9f('0x2')]},'call_limit':{'type':Sequelize[_0xcd9f('0x26')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no')},'subscribemwi':{'type':Sequelize[_0xcd9f('0x4')]('yes','no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0xcd9f('0x2')]},'mohsuggest':{'type':Sequelize[_0xcd9f('0x2')]},'parkinglot':{'type':Sequelize[_0xcd9f('0x2')]},'description':{'type':Sequelize[_0xcd9f('0x2')]},'host':{'type':Sequelize[_0xcd9f('0x2')],'defaultValue':_0xcd9f('0x32')},'canreinvite':{'type':Sequelize[_0xcd9f('0x4')](_0xcd9f('0x17'),'no','nonat',_0xcd9f('0x19'),_0xcd9f('0x33')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xcd9f('0x2')]},'otherFields':{'type':Sequelize[_0xcd9f('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xcd9f('0x2')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x2036=['String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','nat','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','refuse','originate','uac','uas','fingerprint','certificate','passive','actpass','dynamic','sequelize','exports','STRING','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','setDataValue','transport','join','getDataValue'];(function(_0x3a0614,_0x4b6627){var _0x12bba7=function(_0x5ad138){while(--_0x5ad138){_0x3a0614['push'](_0x3a0614['shift']());}};_0x12bba7(++_0x4b6627);}(_0x2036,0x151));var _0x6203=function(_0x38d6e8,_0x21c3b9){_0x38d6e8=_0x38d6e8-0x0;var _0x37e27f=_0x2036[_0x38d6e8];return _0x37e27f;};'use strict';var Sequelize=require(_0x6203('0x0'));module[_0x6203('0x1')]={'name':{'type':Sequelize[_0x6203('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x4'),_0x6203('0x5'),_0x6203('0x6')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x6203('0x2')],'allowNull':![],'defaultValue':_0x6203('0x7')},'callingpres':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x8'),_0x6203('0x9'),_0x6203('0xa'),_0x6203('0xb'),_0x6203('0xc'),_0x6203('0xd'),_0x6203('0xe'),_0x6203('0xf'))},'deny':{'type':Sequelize[_0x6203('0x2')]},'permit':{'type':Sequelize[_0x6203('0x2')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize[_0x6203('0x2')]},'remotesecret':{'type':Sequelize[_0x6203('0x2')]},'transport':{'type':Sequelize[_0x6203('0x2')],'defaultValue':'udp','set':function(_0x253ed4){this[_0x6203('0x10')](_0x6203('0x11'),_0x253ed4?_0x253ed4[_0x6203('0x12')](','):null);},'get':function(){return this['getDataValue'](_0x6203('0x11'))?this[_0x6203('0x13')]('transport')['split'](','):null;},'comment':_0x6203('0x14')},'dtmfmode':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x15'),_0x6203('0x16'),'shortinfo',_0x6203('0x17'),_0x6203('0x18')),'defaultValue':_0x6203('0x15')},'directmedia':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no',_0x6203('0x1a'),_0x6203('0x1b'),_0x6203('0x1c')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0x6203('0x19'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x6203('0x2')]},'directmediadeny':{'type':Sequelize[_0x6203('0x2')]},'nat':{'type':Sequelize[_0x6203('0x2')],'defaultValue':_0x6203('0x1d'),'set':function(_0x3a7e75){this[_0x6203('0x10')](_0x6203('0x1e'),_0x3a7e75?_0x3a7e75['join'](','):null);},'get':function(){return this[_0x6203('0x13')](_0x6203('0x1e'))?this['getDataValue'](_0x6203('0x1e'))[_0x6203('0x1f')](','):null;},'comment':_0x6203('0x20')},'callgroup':{'type':Sequelize[_0x6203('0x2')]},'namedcallgroup':{'type':Sequelize[_0x6203('0x2')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x6203('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x6203('0x2')],'defaultValue':_0x6203('0x21')},'allow':{'type':Sequelize[_0x6203('0x2')],'allowNull':![],'defaultValue':_0x6203('0x22'),'set':function(_0x38c26e){this['setDataValue'](_0x6203('0x23'),_0x38c26e?_0x38c26e[_0x6203('0x12')](';'):_0x6203('0x22'));},'get':function(){return this[_0x6203('0x13')](_0x6203('0x23'))?this[_0x6203('0x13')](_0x6203('0x23'))[_0x6203('0x1f')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no')},'insecure':{'type':Sequelize[_0x6203('0x2')],'defaultValue':_0x6203('0x24'),'set':function(_0x372375){this[_0x6203('0x10')](_0x6203('0x25'),_0x372375?_0x372375[_0x6203('0x12')](','):null);},'get':function(){return this['getDataValue']('insecure')?this['getDataValue']('insecure')[_0x6203('0x1f')](','):null;},'comment':_0x6203('0x26')},'trustrpid':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x6203('0x3')]('yes','no',_0x6203('0x27'))},'promiscredir':{'type':Sequelize[_0x6203('0x3')]('yes','no')},'useclientcode':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no')},'accountcode':{'type':Sequelize[_0x6203('0x28')](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x6203('0x2')],'defaultValue':_0x6203('0x29')},'amaflags':{'type':Sequelize[_0x6203('0x2')]},'callcounter':{'type':Sequelize['ENUM'](_0x6203('0x19'),'no'),'defaultValue':_0x6203('0x19')},'busylevel':{'type':Sequelize[_0x6203('0x28')](0xb)},'allowoverlap':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no')},'allowsubscribe':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no')},'allowtransfer':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no')},'ignoresdpversion':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no')},'subscribecontext':{'type':Sequelize[_0x6203('0x2')]},'template':{'type':Sequelize[_0x6203('0x2')]},'videosupport':{'type':Sequelize['ENUM']('yes','no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x6203('0x28')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x6203('0x19'),'no')},'mailbox':{'type':Sequelize[_0x6203('0x2')]},'session_timers':{'type':Sequelize[_0x6203('0x3')]('accept',_0x6203('0x2a'),_0x6203('0x2b'))},'session_expires':{'type':Sequelize[_0x6203('0x28')](0xb)},'session_minse':{'type':Sequelize[_0x6203('0x28')](0xb)},'session_refresher':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x2c'),_0x6203('0x2d')),'defaultValue':_0x6203('0x2d')},'t38pt_usertpsource':{'type':Sequelize[_0x6203('0x2')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize[_0x6203('0x2')]},'fromuser':{'type':Sequelize[_0x6203('0x2')]},'port':{'type':Sequelize[_0x6203('0x28')](0x5)},'qualify':{'type':Sequelize[_0x6203('0x3')]('yes','no'),'defaultValue':_0x6203('0x19')},'keepalive':{'type':Sequelize[_0x6203('0x28')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x6203('0x28')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x6203('0x28')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0x6203('0x19'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x6203('0x2')]},'callbackextension':{'type':Sequelize[_0x6203('0x2')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x6203('0x28')](0xb)},'qualifyfreq':{'type':Sequelize[_0x6203('0x28')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0x6203('0x2')]},'contactacl':{'type':Sequelize[_0x6203('0x2')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0x6203('0x2')]},'maxforwards':{'type':Sequelize[_0x6203('0x28')](0xb)},'encryption':{'type':Sequelize['ENUM'](_0x6203('0x19'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no')},'force_avp':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no')},'icesupport':{'type':Sequelize[_0x6203('0x3')]('yes','no')},'dtlsenable':{'type':Sequelize['ENUM'](_0x6203('0x19'),'no')},'dtlsverify':{'type':Sequelize['ENUM'](_0x6203('0x19'),'no',_0x6203('0x2e'),_0x6203('0x2f'))},'dtlsrekey':{'type':Sequelize[_0x6203('0x28')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0x6203('0x2')]},'dtlscafile':{'type':Sequelize[_0x6203('0x2')]},'dtlscapath':{'type':Sequelize[_0x6203('0x2')]},'dtlssetup':{'type':Sequelize[_0x6203('0x3')]('active',_0x6203('0x30'),_0x6203('0x31')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x6203('0x2')]},'usereqphone':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x6203('0x2')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no')},'subscribemwi':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no')},'vmexten':{'type':Sequelize[_0x6203('0x2')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0x6203('0x2')]},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x6203('0x2')],'defaultValue':_0x6203('0x32')},'canreinvite':{'type':Sequelize[_0x6203('0x3')](_0x6203('0x19'),'no',_0x6203('0x1a'),_0x6203('0x1b'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0x6203('0x2')]},'otherFields':{'type':Sequelize[_0x6203('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x6203('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 826f1f9..e4e9c31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['limit','count','set','Content-Range','json','apply','save','update','destroy','get','Trunks','UserProfileResource','stack','name','index','map','Trunk','key','query','keys','intersection','model','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','length','find','clone','rawAttributes','omit','createdAt','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','join','root','server/files/templates/trunk.ejs','utf8','readFileSync','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','render','Reload','chan_sip.so','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','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','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','sendStatus','status','end','offset','undefined'];(function(_0x24985d,_0x240eb5){var _0x4cd358=function(_0x305f2b){while(--_0x305f2b){_0x24985d['push'](_0x24985d['shift']());}};_0x4cd358(++_0x240eb5);}(_0x34e8,0x12c));var _0x834e=function(_0x433d5e,_0x1b252b){_0x433d5e=_0x433d5e-0x0;var _0xf6091f=_0x34e8[_0x433d5e];return _0xf6091f;};'use strict';var emlformat=require(_0x834e('0x0'));var rimraf=require(_0x834e('0x1'));var zipdir=require(_0x834e('0x2'));var jsonpatch=require(_0x834e('0x3'));var rp=require('request-promise');var moment=require(_0x834e('0x4'));var BPromise=require(_0x834e('0x5'));var Mustache=require(_0x834e('0x6'));var util=require(_0x834e('0x7'));var path=require(_0x834e('0x8'));var sox=require(_0x834e('0x9'));var csv=require(_0x834e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x834e('0xb'));var _=require('lodash');var squel=require(_0x834e('0xc'));var crypto=require(_0x834e('0xd'));var jsforce=require(_0x834e('0xe'));var deskjs=require(_0x834e('0xf'));var toCsv=require(_0x834e('0xa'));var querystring=require(_0x834e('0x10'));var Papa=require(_0x834e('0x11'));var Redis=require(_0x834e('0x12'));var authService=require(_0x834e('0x13'));var qs=require(_0x834e('0x14'));var as=require(_0x834e('0x15'));var hardwareService=require(_0x834e('0x16'));var logger=require(_0x834e('0x17'))(_0x834e('0x18'));var utils=require(_0x834e('0x19'));var config=require(_0x834e('0x1a'));var licenseUtil=require(_0x834e('0x1b'));var db=require('../../mysqldb')['db'];var jayson=require(_0x834e('0x1c'));var client=jayson[_0x834e('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x23848e,_0x2d95f2,_0x28e659,_0x21cc0a){return new BPromise(function(_0x50e860,_0x43156c){var _0x302cbd=_0x21cc0a||client;return _0x302cbd['request'](_0x23848e,_0x28e659)[_0x834e('0x1e')](function(_0x4a9cdc){logger[_0x834e('0x1f')](_0x834e('0x20'),_0x2d95f2,'request\x20sent');logger[_0x834e('0x21')](_0x834e('0x22'),_0x2d95f2,_0x834e('0x23'),JSON['stringify'](_0x4a9cdc));if(_0x4a9cdc[_0x834e('0x24')]){if(_0x4a9cdc[_0x834e('0x24')][_0x834e('0x25')]===0x1f4){logger[_0x834e('0x24')](_0x834e('0x20'),_0x2d95f2,_0x4a9cdc[_0x834e('0x24')][_0x834e('0x26')]);return _0x43156c(_0x4a9cdc['error'][_0x834e('0x26')]);}logger[_0x834e('0x24')](_0x834e('0x20'),_0x2d95f2,_0x4a9cdc[_0x834e('0x24')]['message']);return _0x50e860(_0x4a9cdc[_0x834e('0x24')][_0x834e('0x26')]);}else{logger['info'](_0x834e('0x20'),_0x2d95f2,_0x834e('0x23'));_0x50e860(_0x4a9cdc[_0x834e('0x27')]['message']);}})['catch'](function(_0x231619){logger[_0x834e('0x24')]('Trunk,\x20%s,\x20%s',_0x2d95f2,_0x231619);_0x43156c(_0x231619);});});}function respondWithStatusCode(_0x25ee1d,_0x1dc1e0){_0x1dc1e0=_0x1dc1e0||0xcc;return function(_0x58f4fd){if(_0x58f4fd){return _0x25ee1d[_0x834e('0x28')](_0x1dc1e0);}return _0x25ee1d[_0x834e('0x29')](_0x1dc1e0)[_0x834e('0x2a')]();};}function respondWithResult(_0x561cd2,_0x24fcf7){_0x24fcf7=_0x24fcf7||0xc8;return function(_0x3e310f){if(_0x3e310f){return _0x561cd2['status'](_0x24fcf7)['json'](_0x3e310f);}};}function respondWithFilteredResult(_0x1e713a,_0x508a1d){return function(_0x2826ec){if(_0x2826ec){var _0x3f1b0b=typeof _0x508a1d[_0x834e('0x2b')]===_0x834e('0x2c')&&typeof _0x508a1d[_0x834e('0x2d')]===_0x834e('0x2c');var _0x491919=_0x2826ec['count'];var _0x4dc64a=_0x3f1b0b?0x0:_0x508a1d['offset'];var _0x2c7a8d=_0x3f1b0b?_0x2826ec[_0x834e('0x2e')]:_0x508a1d[_0x834e('0x2b')]+_0x508a1d['limit'];var _0xb5bc06;if(_0x2c7a8d>=_0x491919){_0x2c7a8d=_0x491919;_0xb5bc06=0xc8;}else{_0xb5bc06=0xce;}_0x1e713a[_0x834e('0x29')](_0xb5bc06);return _0x1e713a[_0x834e('0x2f')](_0x834e('0x30'),_0x4dc64a+'-'+_0x2c7a8d+'/'+_0x491919)[_0x834e('0x31')](_0x2826ec);}return null;};}function patchUpdates(_0x390119){return function(_0x3d149d){try{jsonpatch[_0x834e('0x32')](_0x3d149d,_0x390119,!![]);}catch(_0x278db3){return BPromise['reject'](_0x278db3);}return _0x3d149d[_0x834e('0x33')]();};}function saveUpdates(_0x5cad11,_0x2c75c2){return function(_0x3787b0){if(_0x3787b0){return _0x3787b0[_0x834e('0x34')](_0x5cad11)[_0x834e('0x1e')](function(_0x444366){return _0x444366;});}return null;};}function removeEntity(_0x4689c2,_0x4696a1){return function(_0x38cd29){if(_0x38cd29){return _0x38cd29[_0x834e('0x35')]()[_0x834e('0x1e')](function(){var _0x5bd232=_0x38cd29[_0x834e('0x36')]({'plain':!![]});var _0x2f408a=_0x834e('0x37');return db[_0x834e('0x38')]['destroy']({'where':{'type':_0x2f408a,'resourceId':_0x5bd232['id']}})[_0x834e('0x1e')](function(){return _0x38cd29;});})[_0x834e('0x1e')](function(){_0x4689c2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x59385a,_0x3e58fa){return function(_0x41bf4d){if(!_0x41bf4d){_0x59385a[_0x834e('0x28')](0x194);}return _0x41bf4d;};}function handleError(_0x34fefb,_0x339e28){_0x339e28=_0x339e28||0x1f4;return function(_0x1b76dd){logger['error'](_0x1b76dd[_0x834e('0x39')]);if(_0x1b76dd['name']){delete _0x1b76dd[_0x834e('0x3a')];}_0x34fefb[_0x834e('0x29')](_0x339e28)['send'](_0x1b76dd);};}exports[_0x834e('0x3b')]=function(_0x2f56c7,_0x491c28){var _0x481f70={},_0x388711={},_0xd0d43a={'count':0x0,'rows':[]};var _0x2e9383=_[_0x834e('0x3c')](db[_0x834e('0x3d')]['rawAttributes'],function(_0x1c5ed6){return{'name':_0x1c5ed6['fieldName'],'type':_0x1c5ed6['type'][_0x834e('0x3e')]};});_0x388711['model']=_[_0x834e('0x3c')](_0x2e9383,_0x834e('0x3a'));_0x388711[_0x834e('0x3f')]=_[_0x834e('0x40')](_0x2f56c7[_0x834e('0x3f')]);_0x388711['filters']=_[_0x834e('0x41')](_0x388711[_0x834e('0x42')],_0x388711[_0x834e('0x3f')]);_0x481f70['attributes']=_[_0x834e('0x41')](_0x388711[_0x834e('0x42')],qs['fields'](_0x2f56c7[_0x834e('0x3f')]['fields']));_0x481f70[_0x834e('0x43')]=_0x481f70[_0x834e('0x43')]['length']?_0x481f70['attributes']:_0x388711[_0x834e('0x42')];if(!_0x2f56c7[_0x834e('0x3f')][_0x834e('0x44')](_0x834e('0x45'))){_0x481f70[_0x834e('0x2d')]=qs[_0x834e('0x2d')](_0x2f56c7[_0x834e('0x3f')]['limit']);_0x481f70[_0x834e('0x2b')]=qs['offset'](_0x2f56c7[_0x834e('0x3f')]['offset']);}_0x481f70[_0x834e('0x46')]=qs['sort'](_0x2f56c7[_0x834e('0x3f')][_0x834e('0x47')]);_0x481f70['where']=qs[_0x834e('0x48')](_[_0x834e('0x49')](_0x2f56c7[_0x834e('0x3f')],_0x388711[_0x834e('0x48')]),_0x2e9383);if(_0x2f56c7[_0x834e('0x3f')][_0x834e('0x4a')]){_0x481f70[_0x834e('0x4b')]=_[_0x834e('0x4c')](_0x481f70[_0x834e('0x4b')],{'$or':_[_0x834e('0x3c')](_0x2e9383,function(_0x5f3943){if(_0x5f3943[_0x834e('0x4d')]!==_0x834e('0x4e')){var _0x47a8a9={};_0x47a8a9[_0x5f3943[_0x834e('0x3a')]]={'$like':'%'+_0x2f56c7[_0x834e('0x3f')][_0x834e('0x4a')]+'%'};return _0x47a8a9;}})});}_0x481f70=_[_0x834e('0x4c')]({},_0x481f70,_0x2f56c7[_0x834e('0x4f')]);var _0x4264b8={'where':_0x481f70['where']};return db['Trunk'][_0x834e('0x2e')](_0x4264b8)[_0x834e('0x1e')](function(_0x30568e){_0xd0d43a[_0x834e('0x2e')]=_0x30568e;if(_0x2f56c7[_0x834e('0x3f')][_0x834e('0x50')]){_0x481f70[_0x834e('0x51')]=[{'all':!![]}];}return db[_0x834e('0x3d')][_0x834e('0x52')](_0x481f70);})[_0x834e('0x1e')](function(_0xf02f0d){_0xd0d43a[_0x834e('0x53')]=_0xf02f0d;return _0xd0d43a;})[_0x834e('0x1e')](respondWithFilteredResult(_0x491c28,_0x481f70))[_0x834e('0x54')](handleError(_0x491c28,null));};exports[_0x834e('0x55')]=function(_0x1a3855,_0x3df078){var _0x32b8f7={'raw':![],'where':{'id':_0x1a3855[_0x834e('0x56')]['id']}},_0x420841={};_0x420841['model']=_[_0x834e('0x40')](db[_0x834e('0x3d')]['rawAttributes']);_0x420841[_0x834e('0x3f')]=_[_0x834e('0x40')](_0x1a3855['query']);_0x420841[_0x834e('0x48')]=_[_0x834e('0x41')](_0x420841[_0x834e('0x42')],_0x420841[_0x834e('0x3f')]);_0x32b8f7[_0x834e('0x43')]=_[_0x834e('0x41')](_0x420841[_0x834e('0x42')],qs['fields'](_0x1a3855[_0x834e('0x3f')][_0x834e('0x57')]));_0x32b8f7[_0x834e('0x43')]=_0x32b8f7[_0x834e('0x43')][_0x834e('0x58')]?_0x32b8f7[_0x834e('0x43')]:_0x420841[_0x834e('0x42')];if(_0x1a3855[_0x834e('0x3f')]['includeAll']){_0x32b8f7[_0x834e('0x51')]=[{'all':!![]}];}_0x32b8f7=_['merge']({},_0x32b8f7,_0x1a3855[_0x834e('0x4f')]);return db['Trunk'][_0x834e('0x59')](_0x32b8f7)['then'](handleEntityNotFound(_0x3df078,null))['then'](respondWithResult(_0x3df078,null))[_0x834e('0x54')](handleError(_0x3df078,null));};exports[_0x834e('0x5a')]=function(_0x5291ae,_0x5be43d){var _0x2c8155={'where':{'id':_0x5291ae[_0x834e('0x56')]['id']}},_0x2452b4={};_0x2452b4[_0x834e('0x42')]=_[_0x834e('0x40')](db[_0x834e('0x3d')][_0x834e('0x5b')]);_0x2c8155[_0x834e('0x43')]=_['intersection'](_0x2452b4[_0x834e('0x42')],qs[_0x834e('0x57')](_0x5291ae['query'][_0x834e('0x57')]));_0x2c8155['attributes']=_0x2c8155[_0x834e('0x43')][_0x834e('0x58')]?_0x2c8155['attributes']:_0x2452b4[_0x834e('0x42')];if(_0x5291ae[_0x834e('0x3f')][_0x834e('0x50')]){_0x2c8155[_0x834e('0x51')]=[{'all':!![]}];}_0x2c8155=_['merge']({},_0x2c8155,_0x5291ae[_0x834e('0x4f')]);return db[_0x834e('0x3d')][_0x834e('0x59')](_0x2c8155)['then'](handleEntityNotFound(_0x5be43d,null))[_0x834e('0x1e')](function(_0x1fcae9){if(_0x1fcae9){var _0x3a7683=_0x1fcae9[_0x834e('0x36')]({'plain':!![]});_0x3a7683=qs[_0x834e('0x5c')](_0x3a7683,['id',_0x834e('0x5d'),_0x834e('0x5e')]);_0x5291ae[_0x834e('0x5f')]=_[_0x834e('0x5c')](_0x5291ae[_0x834e('0x5f')],['id',_0x834e('0x5d'),_0x834e('0x5e')]);return db[_0x834e('0x3d')][_0x834e('0x60')](_[_0x834e('0x4c')](_0x3a7683,_0x5291ae[_0x834e('0x5f')]),{'include':_0x5291ae[_0x834e('0x3f')][_0x834e('0x50')]?[{'all':!![]}]:undefined})[_0x834e('0x1e')](function(_0x3e3467){var _0xed4081=_0x5291ae[_0x834e('0x61')]['get']({'plain':!![]});if(!_0xed4081)throw new Error(_0x834e('0x62'));if(_0xed4081[_0x834e('0x63')]===_0x834e('0x61')){var _0x36cc14=_0x3e3467['get']({'plain':!![]});var _0x30faa8='Trunks';return db['UserProfileSection'][_0x834e('0x59')]({'where':{'name':_0x30faa8,'userProfileId':_0xed4081[_0x834e('0x64')]},'raw':!![]})[_0x834e('0x1e')](function(_0xe79465){if(_0xe79465&&_0xe79465[_0x834e('0x65')]===0x0){return db[_0x834e('0x38')][_0x834e('0x60')]({'name':_0x36cc14[_0x834e('0x3a')],'resourceId':_0x36cc14['id'],'type':_0xe79465['name'],'sectionId':_0xe79465['id']},{})[_0x834e('0x1e')](function(){return _0x3e3467;});}else{return _0x3e3467;}})['catch'](function(_0x17e223){logger[_0x834e('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x17e223);throw _0x17e223;});}return _0x3e3467;});}})['then'](respondWithResult(_0x5be43d,0xc9))[_0x834e('0x54')](handleError(_0x5be43d,null));};exports[_0x834e('0x60')]=function(_0x363cc2,_0x2cca07,_0x2c41bd){var _0x5a4854;return db[_0x834e('0x3d')][_0x834e('0x60')](_0x363cc2[_0x834e('0x5f')],{'raw':!![]})[_0x834e('0x1e')](function(_0x3181af){_0x5a4854=_0x3181af;return db[_0x834e('0x3d')][_0x834e('0x52')]({'raw':!![]});})[_0x834e('0x1e')](function(_0x376f72){var _0x324f67=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],_0x834e('0x68')),_0x834e('0x69'));var _0x51cfab=fs[_0x834e('0x6a')](path['join'](config['root'],'server/files/templates/registry.ejs'),_0x834e('0x69'));var _0x332d8f=ejs['render'](_0x324f67,{'trunks':_0x376f72||[]});fs[_0x834e('0x6b')](_0x834e('0x6c'),_0x332d8f);if(_0x5a4854['registry']){var _0x353246=ejs[_0x834e('0x6d')](_0x51cfab,{'trunks':_0x376f72||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x353246);}})[_0x834e('0x1e')](function(){return respondWithRpcPromise(_0x834e('0x6e'),_0x834e('0x60'),{'module':_0x834e('0x6f')});})[_0x834e('0x1e')](function(){var _0x493239=_0x363cc2[_0x834e('0x61')]['get']({'plain':!![]});if(!_0x493239)throw new Error(_0x834e('0x62'));if(_0x493239[_0x834e('0x63')]===_0x834e('0x61')){var _0x5afb41=_0x5a4854[_0x834e('0x36')]({'plain':!![]});return db[_0x834e('0x70')]['find']({'where':{'name':_0x834e('0x37'),'userProfileId':_0x493239[_0x834e('0x64')]},'raw':!![]})[_0x834e('0x1e')](function(_0x50d0a3){if(_0x50d0a3&&_0x50d0a3[_0x834e('0x65')]===0x0){return db[_0x834e('0x38')][_0x834e('0x60')]({'name':_0x5afb41[_0x834e('0x3a')],'resourceId':_0x5afb41['id'],'type':_0x50d0a3[_0x834e('0x3a')],'sectionId':_0x50d0a3['id']},{})[_0x834e('0x1e')](function(){return _0x5a4854;});}else{return _0x5a4854;}})[_0x834e('0x54')](function(_0x23b5d9){logger[_0x834e('0x24')](_0x834e('0x71'),_0x23b5d9);throw _0x23b5d9;});}return _0x5a4854;})['then'](respondWithResult(_0x2cca07,0xc9))['catch'](handleError(_0x2cca07,null));};exports['update']=function(_0x36ede9,_0x1135a5,_0x313c03){var _0x37fa2c;return db[_0x834e('0x3d')]['find']({'where':{'id':_0x36ede9['params']['id']}})[_0x834e('0x1e')](handleEntityNotFound(_0x1135a5,null))[_0x834e('0x1e')](saveUpdates(_0x36ede9[_0x834e('0x5f')],null))[_0x834e('0x1e')](function(_0x40a705){if(_0x40a705){_0x37fa2c=_0x40a705;return db['Trunk'][_0x834e('0x52')]({'raw':!![]});}})[_0x834e('0x1e')](function(_0x113714){if(_0x113714){var _0x4e1735=fs[_0x834e('0x6a')](path[_0x834e('0x66')](config[_0x834e('0x67')],_0x834e('0x68')),_0x834e('0x69'));var _0x585d02=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],'server/files/templates/registry.ejs'),_0x834e('0x69'));var _0x509427=ejs[_0x834e('0x6d')](_0x4e1735,{'trunks':_0x113714||[]});fs[_0x834e('0x6b')](_0x834e('0x6c'),_0x509427);var _0x53012d=ejs[_0x834e('0x6d')](_0x585d02,{'trunks':_0x113714||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x53012d);return respondWithRpcPromise('Reload',_0x834e('0x34'),{'module':_0x834e('0x6f')});}return null;})[_0x834e('0x1e')](function(_0x1d76c6){if(_0x1d76c6){return _0x37fa2c;}})[_0x834e('0x1e')](respondWithResult(_0x1135a5,null))[_0x834e('0x54')](handleError(_0x1135a5,null));};exports[_0x834e('0x35')]=function(_0x179892,_0x17e61a,_0x53f6e3){var _0x2f775a;return db['Trunk'][_0x834e('0x59')]({'where':{'id':_0x179892[_0x834e('0x56')]['id']}})[_0x834e('0x1e')](handleEntityNotFound(_0x17e61a,null))[_0x834e('0x1e')](removeEntity(_0x17e61a,null))[_0x834e('0x1e')](function(){return db[_0x834e('0x3d')]['findAll']({'raw':!![]});})['then'](function(_0xeb096d){var _0x2a854a=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],_0x834e('0x68')),_0x834e('0x69'));var _0xc75f5e=fs['readFileSync'](path[_0x834e('0x66')](config[_0x834e('0x67')],'server/files/templates/registry.ejs'),'utf8');var _0x5ede29=ejs[_0x834e('0x6d')](_0x2a854a,{'trunks':_0xeb096d});var _0x1f3e26=ejs['render'](_0xc75f5e,{'trunks':_0xeb096d});fs[_0x834e('0x6b')](_0x834e('0x6c'),_0x5ede29);fs['writeFileSync'](_0x834e('0x72'),_0x1f3e26);return respondWithRpcPromise('Reload','destroy',{'module':_0x834e('0x6f')});})[_0x834e('0x54')](handleError(_0x17e61a,null));};
\ No newline at end of file
+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(_0x1f2bfd,_0x20606d){var _0x1ccb56=function(_0x2e138f){while(--_0x2e138f){_0x1f2bfd['push'](_0x1f2bfd['shift']());}};_0x1ccb56(++_0x20606d);}(_0x3e74,0x175));var _0x43e7=function(_0x195af8,_0x465eb9){_0x195af8=_0x195af8-0x0;var _0x465ca4=_0x3e74[_0x195af8];return _0x465ca4;};'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
index 56b5a22..322aaa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fcb=['exports','define','Trunk','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x100b96,_0x1bac2c){var _0x44bbcf=function(_0x3ed853){while(--_0x3ed853){_0x100b96['push'](_0x100b96['shift']());}};_0x44bbcf(++_0x1bac2c);}(_0x1fcb,0x1f2));var _0xb1fc=function(_0x3e1ece,_0x321203){_0x3e1ece=_0x3e1ece-0x0;var _0x7be675=_0x1fcb[_0x3e1ece];return _0x7be675;};'use strict';var _=require(_0xb1fc('0x0'));var util=require(_0xb1fc('0x1'));var logger=require(_0xb1fc('0x2'))('api');var moment=require(_0xb1fc('0x3'));var BPromise=require('bluebird');var rp=require(_0xb1fc('0x4'));var fs=require('fs');var path=require(_0xb1fc('0x5'));var rimraf=require(_0xb1fc('0x6'));var config=require(_0xb1fc('0x7'));var attributes=require('./trunk.attributes');module[_0xb1fc('0x8')]=function(_0x306cb9,_0x19610f){return _0x306cb9[_0xb1fc('0x9')](_0xb1fc('0xa'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2cc3=['path','rimraf','./trunk.attributes','exports','define','tools_trunks','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x40d80a,_0x5e5089){var _0x335bfb=function(_0x3bb568){while(--_0x3bb568){_0x40d80a['push'](_0x40d80a['shift']());}};_0x335bfb(++_0x5e5089);}(_0x2cc3,0x192));var _0x32cc=function(_0x328a95,_0x436bb2){_0x328a95=_0x328a95-0x0;var _0x4fe576=_0x2cc3[_0x328a95];return _0x4fe576;};'use strict';var _=require(_0x32cc('0x0'));var util=require(_0x32cc('0x1'));var logger=require(_0x32cc('0x2'))(_0x32cc('0x3'));var moment=require(_0x32cc('0x4'));var BPromise=require(_0x32cc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x32cc('0x6'));var rimraf=require(_0x32cc('0x7'));var config=require('../../config/environment');var attributes=require(_0x32cc('0x8'));module[_0x32cc('0x9')]=function(_0x239068,_0x148b4d){return _0x239068[_0x32cc('0xa')]('Trunk',attributes,{'tableName':_0x32cc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0bbcc5f..ff2f75b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x372a=['result','catch','GetTrunk','options','raw','attributes','limit','include','model','map','ShowTrunk','find','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Trunk,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info'];(function(_0x129c27,_0x333c44){var _0x5a8017=function(_0x5c5083){while(--_0x5c5083){_0x129c27['push'](_0x129c27['shift']());}};_0x5a8017(++_0x333c44);}(_0x372a,0x14c));var _0xa372=function(_0x5dec65,_0x43e48e){_0x5dec65=_0x5dec65-0x0;var _0x1ed913=_0x372a[_0x5dec65];return _0x1ed913;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa372('0x0'));var BPromise=require(_0xa372('0x1'));var rs=require(_0xa372('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa372('0x3'))['db'];var utils=require(_0xa372('0x4'));var logger=require(_0xa372('0x5'))(_0xa372('0x6'));var config=require(_0xa372('0x7'));var jayson=require(_0xa372('0x8'));var client=jayson[_0xa372('0x9')][_0xa372('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xfc37dd,_0x3c6a8b,_0xd7cf7b){return new BPromise(function(_0x1cbf0b,_0x3da73b){return client[_0xa372('0xb')](_0xfc37dd,_0xd7cf7b)[_0xa372('0xc')](function(_0x523ca8){logger['info'](_0xa372('0xd'),_0x3c6a8b,_0xa372('0xe'));logger[_0xa372('0xf')]('Trunk,\x20%s,\x20%s,\x20%s',_0x3c6a8b,_0xa372('0xe'),JSON[_0xa372('0x10')](_0x523ca8));if(_0x523ca8[_0xa372('0x11')]){if(_0x523ca8[_0xa372('0x11')]['code']===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x3c6a8b,_0x523ca8[_0xa372('0x11')][_0xa372('0x12')]);return _0x3da73b(_0x523ca8[_0xa372('0x11')][_0xa372('0x12')]);}logger['error'](_0xa372('0xd'),_0x3c6a8b,_0x523ca8[_0xa372('0x11')][_0xa372('0x12')]);return _0x1cbf0b(_0x523ca8[_0xa372('0x11')][_0xa372('0x12')]);}else{logger[_0xa372('0x13')]('Trunk,\x20%s,\x20%s',_0x3c6a8b,'request\x20sent');_0x1cbf0b(_0x523ca8[_0xa372('0x14')]['message']);}})[_0xa372('0x15')](function(_0x5c306b){logger[_0xa372('0x11')](_0xa372('0xd'),_0x3c6a8b,_0x5c306b);_0x3da73b(_0x5c306b);});});}exports[_0xa372('0x16')]=function(_0x275ca9){var _0x494724=this;return new Promise(function(_0x1b421f,_0x411c4d){return db['Trunk']['findAll']({'raw':_0x275ca9[_0xa372('0x17')]?_0x275ca9[_0xa372('0x17')][_0xa372('0x18')]===undefined?!![]:![]:!![],'where':_0x275ca9[_0xa372('0x17')]?_0x275ca9[_0xa372('0x17')]['where']||null:null,'attributes':_0x275ca9[_0xa372('0x17')]?_0x275ca9[_0xa372('0x17')][_0xa372('0x19')]||null:null,'limit':_0x275ca9['options']?_0x275ca9[_0xa372('0x17')][_0xa372('0x1a')]||null:null,'include':_0x275ca9[_0xa372('0x17')]?_0x275ca9['options']['include']?_['map'](_0x275ca9[_0xa372('0x17')][_0xa372('0x1b')],function(_0x202209){return{'model':db[_0x202209[_0xa372('0x1c')]],'as':_0x202209['as'],'attributes':_0x202209['attributes'],'include':_0x202209[_0xa372('0x1b')]?_[_0xa372('0x1d')](_0x202209['include'],function(_0x442f22){return{'model':db[_0x442f22['model']],'as':_0x442f22['as'],'attributes':_0x442f22['attributes'],'include':_0x442f22[_0xa372('0x1b')]?_['map'](_0x442f22[_0xa372('0x1b')],function(_0x56efb0){return{'model':db[_0x56efb0[_0xa372('0x1c')]],'as':_0x56efb0['as'],'attributes':_0x56efb0[_0xa372('0x19')]};}):[]};}):[]};}):[]:[]})[_0xa372('0xc')](function(_0x4e7fa7){logger[_0xa372('0x13')](_0xa372('0x16'),_0x275ca9);logger[_0xa372('0xf')](_0xa372('0x16'),_0x275ca9,JSON[_0xa372('0x10')](_0x4e7fa7));_0x1b421f(_0x4e7fa7);})[_0xa372('0x15')](function(_0x3a359a){logger[_0xa372('0x11')](_0xa372('0x16'),_0x3a359a['message'],_0x275ca9);_0x411c4d(_0x494724[_0xa372('0x11')](0x1f4,_0x3a359a[_0xa372('0x12')]));});});};exports[_0xa372('0x1e')]=function(_0x2e3975){var _0x4899b9=this;return new Promise(function(_0x19d600,_0x560abe){return db['Trunk'][_0xa372('0x1f')]({'raw':_0x2e3975['options']?_0x2e3975['options']['raw']===undefined?!![]:![]:!![],'where':_0x2e3975[_0xa372('0x17')]?_0x2e3975['options']['where']||null:null,'attributes':_0x2e3975[_0xa372('0x17')]?_0x2e3975['options'][_0xa372('0x19')]||null:null,'include':_0x2e3975[_0xa372('0x17')]?_0x2e3975[_0xa372('0x17')][_0xa372('0x1b')]?_[_0xa372('0x1d')](_0x2e3975['options'][_0xa372('0x1b')],function(_0x3d8bb6){return{'model':db[_0x3d8bb6[_0xa372('0x1c')]],'as':_0x3d8bb6['as'],'attributes':_0x3d8bb6[_0xa372('0x19')],'include':_0x3d8bb6['include']?_['map'](_0x3d8bb6['include'],function(_0x2fe24d){return{'model':db[_0x2fe24d[_0xa372('0x1c')]],'as':_0x2fe24d['as'],'attributes':_0x2fe24d[_0xa372('0x19')],'include':_0x2fe24d[_0xa372('0x1b')]?_[_0xa372('0x1d')](_0x2fe24d[_0xa372('0x1b')],function(_0x1760b8){return{'model':db[_0x1760b8['model']],'as':_0x1760b8['as'],'attributes':_0x1760b8[_0xa372('0x19')]};}):[]};}):[]};}):[]:[]})[_0xa372('0xc')](function(_0xae817c){logger[_0xa372('0x13')](_0xa372('0x1e'),_0x2e3975);logger[_0xa372('0xf')](_0xa372('0x1e'),_0x2e3975,JSON['stringify'](_0xae817c));_0x19d600(_0xae817c);})[_0xa372('0x15')](function(_0x3590d5){logger[_0xa372('0x11')]('ShowTrunk',_0x3590d5[_0xa372('0x12')],_0x2e3975);_0x560abe(_0x4899b9['error'](0x1f4,_0x3590d5[_0xa372('0x12')]));});});};
\ No newline at end of file
+var _0xf7d6=['ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTrunk','Trunk','findAll','options','raw','where','limit','include','attributes','map','model','then','ShowTrunk','find','lodash','util','moment','bluebird','randomstring'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xf7d6,0x93));var _0x6f7d=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xf7d6[_0x2bf141];return _0x48277b;};'use strict';var _=require(_0x6f7d('0x0'));var util=require(_0x6f7d('0x1'));var moment=require(_0x6f7d('0x2'));var BPromise=require(_0x6f7d('0x3'));var rs=require(_0x6f7d('0x4'));var fs=require('fs');var Redis=require(_0x6f7d('0x5'));var db=require(_0x6f7d('0x6'))['db'];var utils=require(_0x6f7d('0x7'));var logger=require('../../config/logger')(_0x6f7d('0x8'));var config=require('../../config/environment');var jayson=require(_0x6f7d('0x9'));var client=jayson[_0x6f7d('0xa')][_0x6f7d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b94c4,_0x523188,_0x614bff){return new BPromise(function(_0x22cb70,_0x35ac23){return client[_0x6f7d('0xc')](_0x4b94c4,_0x614bff)['then'](function(_0x12119c){logger[_0x6f7d('0xd')](_0x6f7d('0xe'),_0x523188,_0x6f7d('0xf'));logger[_0x6f7d('0x10')](_0x6f7d('0x11'),_0x523188,_0x6f7d('0xf'),JSON[_0x6f7d('0x12')](_0x12119c));if(_0x12119c[_0x6f7d('0x13')]){if(_0x12119c[_0x6f7d('0x13')][_0x6f7d('0x14')]===0x1f4){logger[_0x6f7d('0x13')](_0x6f7d('0xe'),_0x523188,_0x12119c['error']['message']);return _0x35ac23(_0x12119c[_0x6f7d('0x13')][_0x6f7d('0x15')]);}logger[_0x6f7d('0x13')](_0x6f7d('0xe'),_0x523188,_0x12119c[_0x6f7d('0x13')][_0x6f7d('0x15')]);return _0x22cb70(_0x12119c[_0x6f7d('0x13')][_0x6f7d('0x15')]);}else{logger['info'](_0x6f7d('0xe'),_0x523188,_0x6f7d('0xf'));_0x22cb70(_0x12119c[_0x6f7d('0x16')][_0x6f7d('0x15')]);}})[_0x6f7d('0x17')](function(_0x3670b2){logger[_0x6f7d('0x13')](_0x6f7d('0xe'),_0x523188,_0x3670b2);_0x35ac23(_0x3670b2);});});}exports[_0x6f7d('0x18')]=function(_0x3109db){var _0x275719=this;return new Promise(function(_0x5b5b1c,_0x8bbe80){return db[_0x6f7d('0x19')][_0x6f7d('0x1a')]({'raw':_0x3109db[_0x6f7d('0x1b')]?_0x3109db[_0x6f7d('0x1b')][_0x6f7d('0x1c')]===undefined?!![]:![]:!![],'where':_0x3109db[_0x6f7d('0x1b')]?_0x3109db['options'][_0x6f7d('0x1d')]||null:null,'attributes':_0x3109db[_0x6f7d('0x1b')]?_0x3109db['options']['attributes']||null:null,'limit':_0x3109db[_0x6f7d('0x1b')]?_0x3109db[_0x6f7d('0x1b')][_0x6f7d('0x1e')]||null:null,'include':_0x3109db[_0x6f7d('0x1b')]?_0x3109db[_0x6f7d('0x1b')]['include']?_['map'](_0x3109db['options'][_0x6f7d('0x1f')],function(_0x1b328d){return{'model':db[_0x1b328d['model']],'as':_0x1b328d['as'],'attributes':_0x1b328d[_0x6f7d('0x20')],'include':_0x1b328d['include']?_[_0x6f7d('0x21')](_0x1b328d[_0x6f7d('0x1f')],function(_0x11488b){return{'model':db[_0x11488b[_0x6f7d('0x22')]],'as':_0x11488b['as'],'attributes':_0x11488b[_0x6f7d('0x20')],'include':_0x11488b[_0x6f7d('0x1f')]?_['map'](_0x11488b[_0x6f7d('0x1f')],function(_0x39fd07){return{'model':db[_0x39fd07['model']],'as':_0x39fd07['as'],'attributes':_0x39fd07['attributes']};}):[]};}):[]};}):[]:[]})[_0x6f7d('0x23')](function(_0x4b9cfc){logger[_0x6f7d('0xd')]('GetTrunk',_0x3109db);logger[_0x6f7d('0x10')](_0x6f7d('0x18'),_0x3109db,JSON[_0x6f7d('0x12')](_0x4b9cfc));_0x5b5b1c(_0x4b9cfc);})[_0x6f7d('0x17')](function(_0x5db4b3){logger['error'](_0x6f7d('0x18'),_0x5db4b3[_0x6f7d('0x15')],_0x3109db);_0x8bbe80(_0x275719[_0x6f7d('0x13')](0x1f4,_0x5db4b3[_0x6f7d('0x15')]));});});};exports[_0x6f7d('0x24')]=function(_0x2e6c6b){var _0x1ab4d5=this;return new Promise(function(_0x3b6afe,_0x5be929){return db[_0x6f7d('0x19')][_0x6f7d('0x25')]({'raw':_0x2e6c6b[_0x6f7d('0x1b')]?_0x2e6c6b['options']['raw']===undefined?!![]:![]:!![],'where':_0x2e6c6b[_0x6f7d('0x1b')]?_0x2e6c6b[_0x6f7d('0x1b')]['where']||null:null,'attributes':_0x2e6c6b[_0x6f7d('0x1b')]?_0x2e6c6b[_0x6f7d('0x1b')][_0x6f7d('0x20')]||null:null,'include':_0x2e6c6b[_0x6f7d('0x1b')]?_0x2e6c6b[_0x6f7d('0x1b')][_0x6f7d('0x1f')]?_[_0x6f7d('0x21')](_0x2e6c6b[_0x6f7d('0x1b')][_0x6f7d('0x1f')],function(_0x42d6e3){return{'model':db[_0x42d6e3[_0x6f7d('0x22')]],'as':_0x42d6e3['as'],'attributes':_0x42d6e3['attributes'],'include':_0x42d6e3['include']?_['map'](_0x42d6e3[_0x6f7d('0x1f')],function(_0x80ec54){return{'model':db[_0x80ec54[_0x6f7d('0x22')]],'as':_0x80ec54['as'],'attributes':_0x80ec54[_0x6f7d('0x20')],'include':_0x80ec54[_0x6f7d('0x1f')]?_[_0x6f7d('0x21')](_0x80ec54[_0x6f7d('0x1f')],function(_0x332834){return{'model':db[_0x332834[_0x6f7d('0x22')]],'as':_0x332834['as'],'attributes':_0x332834[_0x6f7d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x6f7d('0x23')](function(_0x2cf366){logger['info'](_0x6f7d('0x24'),_0x2e6c6b);logger[_0x6f7d('0x10')]('ShowTrunk',_0x2e6c6b,JSON[_0x6f7d('0x12')](_0x2cf366));_0x3b6afe(_0x2cf366);})['catch'](function(_0x3d9a4b){logger[_0x6f7d('0x13')](_0x6f7d('0x24'),_0x3d9a4b[_0x6f7d('0x15')],_0x2e6c6b);_0x5be929(_0x1ab4d5[_0x6f7d('0x13')](0x1f4,_0x3d9a4b['message']));});});};
\ No newline at end of file
index d488cb9..19148ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2bc=['multer','util','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','whoami','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','/:id/fax/interactions','getFaxInteractions','getWhatsappInteractions','/:id/teams','/:id/lists','getLists','/:id/agents','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','post','create','/create_many','addQueues','join','format','%s-%s','now','originalname','single','file','/:id/login','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','addSmsInteractions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','/:id/openchannel_accounts','addWhatsappAccounts','addSquareProjects','/:id/api_key','createApiKey','put','update','/:id/password','changePassword','delete','removeTeams','destroy','/:id/chat_interactions','removeMailInteractions','/:id/sms_interactions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','exports'];(function(_0xb65e77,_0x238c3d){var _0x38134b=function(_0x39da21){while(--_0x39da21){_0xb65e77['push'](_0xb65e77['shift']());}};_0x38134b(++_0x238c3d);}(_0xf2bc,0x14a));var _0xcf2b=function(_0x4a489f,_0x5402ab){_0x4a489f=_0x4a489f-0x0;var _0x4a4137=_0xf2bc[_0x4a489f];return _0x4a4137;};'use strict';var multer=require(_0xcf2b('0x0'));var util=require(_0xcf2b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xcf2b('0x2'));var auth=require(_0xcf2b('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./user.controller');router[_0xcf2b('0x4')]('/',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x6')]);router[_0xcf2b('0x4')](_0xcf2b('0x7'),auth[_0xcf2b('0x5')](),controller['describe']);router[_0xcf2b('0x4')]('/whoami',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x8')]);router[_0xcf2b('0x4')]('/presence',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x9')]);router[_0xcf2b('0x4')](_0xcf2b('0xa'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0xb')]);router[_0xcf2b('0x4')](_0xcf2b('0xc'),controller[_0xcf2b('0xd')]);router['get'](_0xcf2b('0xe'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0xf')]);router[_0xcf2b('0x4')](_0xcf2b('0x10'),auth['isAuthenticated'](),controller[_0xcf2b('0x11')]);router[_0xcf2b('0x4')](_0xcf2b('0x12'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x13')]);router[_0xcf2b('0x4')](_0xcf2b('0x14'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x15')]);router['get']('/:id/groups',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x16')]);router[_0xcf2b('0x4')](_0xcf2b('0x17'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x18')]);router[_0xcf2b('0x4')](_0xcf2b('0x19'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x1a')]);router[_0xcf2b('0x4')](_0xcf2b('0x1b'),auth[_0xcf2b('0x5')](),controller['getChatInteractions']);router[_0xcf2b('0x4')]('/:id/openchannel/interactions',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x1c')]);router[_0xcf2b('0x4')](_0xcf2b('0x1d'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x1e')]);router[_0xcf2b('0x4')](_0xcf2b('0x1f'),auth[_0xcf2b('0x5')](),controller['getSmsInteractions']);router[_0xcf2b('0x4')](_0xcf2b('0x20'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x21')]);router[_0xcf2b('0x4')]('/:id/whatsapp/interactions',auth['isAuthenticated'](),controller[_0xcf2b('0x22')]);router[_0xcf2b('0x4')](_0xcf2b('0x23'),auth[_0xcf2b('0x5')](),controller['getTeams']);router['get'](_0xcf2b('0x24'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x25')]);router[_0xcf2b('0x4')](_0xcf2b('0x26'),auth['isAuthenticated'](),controller['getAgents']);router[_0xcf2b('0x4')]('/:id/prefixes',auth[_0xcf2b('0x5')](),controller['getVoicePrefixes']);router[_0xcf2b('0x4')](_0xcf2b('0x27'),auth['isAuthenticated'](),controller[_0xcf2b('0x28')]);router[_0xcf2b('0x4')](_0xcf2b('0x29'),auth['isAuthenticated'](),controller[_0xcf2b('0x2a')]);router[_0xcf2b('0x4')]('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0xcf2b('0x2b')]);router[_0xcf2b('0x4')](_0xcf2b('0x2c'),auth['isAuthenticated'](),controller[_0xcf2b('0x2d')]);router[_0xcf2b('0x4')](_0xcf2b('0x2e'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x2f')]);router[_0xcf2b('0x4')](_0xcf2b('0x30'),auth['isAuthenticated'](),controller['getWhatsappAccounts']);router[_0xcf2b('0x4')](_0xcf2b('0x31'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x32')]);router[_0xcf2b('0x4')](_0xcf2b('0x33'),auth['isAuthenticated'](),controller['getScheduledCalls']);router[_0xcf2b('0x4')]('/:id/api_key',auth[_0xcf2b('0x5')](),controller['getApiKey']);router[_0xcf2b('0x34')](_0xcf2b('0x10'),auth['isAuthenticated'](),controller['addContacts']);router['post']('/',auth['isAuthenticated'](),controller[_0xcf2b('0x35')]);router['post'](_0xcf2b('0x36'),auth['isAuthenticated'](),controller['bulkCreate']);router['post'](_0xcf2b('0x12'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x37')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xd691d8,_0x4af2a7,_0x367edf){_0x367edf(null,path[_0xcf2b('0x38')](config['root'],'server/files/images/'));},'filename':function(_0x1ed0dc,_0x271aa1,_0x50def4){_0x50def4(null,util[_0xcf2b('0x39')](_0xcf2b('0x3a'),Date[_0xcf2b('0x3b')](),_0x271aa1[_0xcf2b('0x3c')]));}})});router[_0xcf2b('0x34')](_0xcf2b('0xc'),upload[_0xcf2b('0x3d')](_0xcf2b('0x3e')),controller['addAvatar']);router[_0xcf2b('0x34')](_0xcf2b('0x3f'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x40')]);router[_0xcf2b('0x34')](_0xcf2b('0x41'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x42')]);router['post'](_0xcf2b('0x43'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x44')]);router[_0xcf2b('0x34')](_0xcf2b('0x45'),auth['isAuthenticated'](),controller[_0xcf2b('0x46')]);router[_0xcf2b('0x34')]('/:id/teams',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x47')]);router[_0xcf2b('0x34')]('/:id/chat_interactions',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x48')]);router[_0xcf2b('0x34')](_0xcf2b('0x49'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x4a')]);router[_0xcf2b('0x34')](_0xcf2b('0x4b'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x4c')]);router[_0xcf2b('0x34')]('/:id/sms_interactions',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x4d')]);router[_0xcf2b('0x34')]('/:id/openchannel_interactions',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x4e')]);router[_0xcf2b('0x34')](_0xcf2b('0x4f'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x50')]);router[_0xcf2b('0x34')]('/:id/fax_accounts',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x51')]);router[_0xcf2b('0x34')](_0xcf2b('0x29'),auth['isAuthenticated'](),controller[_0xcf2b('0x52')]);router[_0xcf2b('0x34')](_0xcf2b('0x53'),auth[_0xcf2b('0x5')](),controller['addOpenchannelAccounts']);router[_0xcf2b('0x34')](_0xcf2b('0x2c'),auth[_0xcf2b('0x5')](),controller['addSmsAccounts']);router[_0xcf2b('0x34')]('/:id/chat_websites',auth[_0xcf2b('0x5')](),controller['addChatWebsites']);router[_0xcf2b('0x34')](_0xcf2b('0x30'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x54')]);router[_0xcf2b('0x34')](_0xcf2b('0x31'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x55')]);router[_0xcf2b('0x34')](_0xcf2b('0x56'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x57')]);router[_0xcf2b('0x58')]('/:id',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x59')]);router[_0xcf2b('0x58')](_0xcf2b('0x5a'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x5b')]);router[_0xcf2b('0x5c')](_0xcf2b('0x12'),auth[_0xcf2b('0x5')](),controller['removeQueues']);router[_0xcf2b('0x5c')](_0xcf2b('0x23'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x5d')]);router[_0xcf2b('0x5c')](_0xcf2b('0xa'),auth['isAuthenticated'](),controller[_0xcf2b('0x5e')]);router[_0xcf2b('0x5c')](_0xcf2b('0x5f'),auth[_0xcf2b('0x5')](),controller['removeChatInteractions']);router[_0xcf2b('0x5c')](_0xcf2b('0x49'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x60')]);router['delete']('/:id/fax_interactions',auth[_0xcf2b('0x5')](),controller['removeFaxInteractions']);router[_0xcf2b('0x5c')](_0xcf2b('0x61'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x62')]);router['delete']('/:id/openchannel_interactions',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x63')]);router[_0xcf2b('0x5c')](_0xcf2b('0x4f'),auth['isAuthenticated'](),controller[_0xcf2b('0x64')]);router[_0xcf2b('0x5c')]('/:id/fax_accounts',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x65')]);router[_0xcf2b('0x5c')]('/:id/mail_accounts',auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x66')]);router[_0xcf2b('0x5c')](_0xcf2b('0x53'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x67')]);router[_0xcf2b('0x5c')](_0xcf2b('0x2c'),auth['isAuthenticated'](),controller[_0xcf2b('0x68')]);router['delete'](_0xcf2b('0x2e'),auth['isAuthenticated'](),controller[_0xcf2b('0x69')]);router['delete'](_0xcf2b('0x30'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x6a')]);router[_0xcf2b('0x5c')](_0xcf2b('0x31'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x6b')]);router[_0xcf2b('0x5c')](_0xcf2b('0x56'),auth[_0xcf2b('0x5')](),controller[_0xcf2b('0x6c')]);module[_0xcf2b('0x6d')]=router;
\ No newline at end of file
+var _0x0205=['../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','getPresence','/:id','show','getAvatar','getOpenTabs','/:id/contacts','getContacts','getQueues','/:id/queues_rt','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/sms_accounts','/:id/chat_websites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','addContacts','create','/create_many','bulkCreate','/:id/queues','addQueues','join','root','server/files/images/','format','now','originalname','/:id/avatar','single','file','addAvatar','/:id/login','login','/:id/logout','/:id/pause','pause','/:id/unpause','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','addFaxAccounts','addMailAccounts','/:id/openchannel_accounts','addOpenchannelAccounts','addChatWebsites','createApiKey','put','update','changePassword','delete','destroy','removeChatInteractions','removeMailInteractions','/:id/fax_interactions','removeFaxInteractions','/:id/sms_interactions','removeSmsInteractions','removeOpenchannelInteractions','/:id/whatsapp_interactions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeWhatsappAccounts','removeSquareProjects','multer','util','connect-timeout','Router','fs-extra'];(function(_0x2fbcd3,_0xbb2e27){var _0x201573=function(_0x4846b9){while(--_0x4846b9){_0x2fbcd3['push'](_0x2fbcd3['shift']());}};_0x201573(++_0xbb2e27);}(_0x0205,0x1c3));var _0x5020=function(_0x3df67a,_0x229f28){_0x3df67a=_0x3df67a-0x0;var _0x2498c7=_0x0205[_0x3df67a];return _0x2498c7;};'use strict';var multer=require(_0x5020('0x0'));var util=require(_0x5020('0x1'));var path=require('path');var timeout=require(_0x5020('0x2'));var express=require('express');var router=express[_0x5020('0x3')]();var fs_extra=require(_0x5020('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5020('0x5'));var controller=require(_0x5020('0x6'));router[_0x5020('0x7')]('/',auth[_0x5020('0x8')](),controller[_0x5020('0x9')]);router[_0x5020('0x7')](_0x5020('0xa'),auth[_0x5020('0x8')](),controller[_0x5020('0xb')]);router[_0x5020('0x7')](_0x5020('0xc'),auth[_0x5020('0x8')](),controller['whoami']);router[_0x5020('0x7')]('/presence',auth['isAuthenticated'](),controller[_0x5020('0xd')]);router[_0x5020('0x7')](_0x5020('0xe'),auth[_0x5020('0x8')](),controller[_0x5020('0xf')]);router[_0x5020('0x7')]('/:id/avatar',controller[_0x5020('0x10')]);router[_0x5020('0x7')]('/:id/open_tabs',auth[_0x5020('0x8')](),controller[_0x5020('0x11')]);router['get'](_0x5020('0x12'),auth[_0x5020('0x8')](),controller[_0x5020('0x13')]);router[_0x5020('0x7')]('/:id/queues',auth['isAuthenticated'](),controller[_0x5020('0x14')]);router[_0x5020('0x7')](_0x5020('0x15'),auth['isAuthenticated'](),controller['getVoiceQueuesRt']);router[_0x5020('0x7')](_0x5020('0x16'),auth[_0x5020('0x8')](),controller['getGroups']);router[_0x5020('0x7')](_0x5020('0x17'),auth['isAuthenticated'](),controller[_0x5020('0x18')]);router[_0x5020('0x7')](_0x5020('0x19'),auth[_0x5020('0x8')](),controller[_0x5020('0x1a')]);router[_0x5020('0x7')](_0x5020('0x1b'),auth[_0x5020('0x8')](),controller[_0x5020('0x1c')]);router[_0x5020('0x7')](_0x5020('0x1d'),auth['isAuthenticated'](),controller['getOpenchannelInteractions']);router[_0x5020('0x7')](_0x5020('0x1e'),auth[_0x5020('0x8')](),controller[_0x5020('0x1f')]);router[_0x5020('0x7')](_0x5020('0x20'),auth[_0x5020('0x8')](),controller[_0x5020('0x21')]);router[_0x5020('0x7')](_0x5020('0x22'),auth[_0x5020('0x8')](),controller[_0x5020('0x23')]);router[_0x5020('0x7')](_0x5020('0x24'),auth[_0x5020('0x8')](),controller[_0x5020('0x25')]);router[_0x5020('0x7')](_0x5020('0x26'),auth[_0x5020('0x8')](),controller[_0x5020('0x27')]);router[_0x5020('0x7')](_0x5020('0x28'),auth[_0x5020('0x8')](),controller[_0x5020('0x29')]);router[_0x5020('0x7')](_0x5020('0x2a'),auth[_0x5020('0x8')](),controller['getAgents']);router['get'](_0x5020('0x2b'),auth['isAuthenticated'](),controller[_0x5020('0x2c')]);router['get'](_0x5020('0x2d'),auth[_0x5020('0x8')](),controller[_0x5020('0x2e')]);router['get'](_0x5020('0x2f'),auth[_0x5020('0x8')](),controller[_0x5020('0x30')]);router[_0x5020('0x7')]('/:id/openchannel_accounts',auth[_0x5020('0x8')](),controller['getOpenchannelAccounts']);router[_0x5020('0x7')](_0x5020('0x31'),auth[_0x5020('0x8')](),controller['getSmsAccounts']);router[_0x5020('0x7')](_0x5020('0x32'),auth[_0x5020('0x8')](),controller['getChatWebsites']);router[_0x5020('0x7')](_0x5020('0x33'),auth[_0x5020('0x8')](),controller[_0x5020('0x34')]);router[_0x5020('0x7')](_0x5020('0x35'),auth[_0x5020('0x8')](),controller[_0x5020('0x36')]);router[_0x5020('0x7')](_0x5020('0x37'),auth[_0x5020('0x8')](),controller[_0x5020('0x38')]);router[_0x5020('0x7')](_0x5020('0x39'),auth[_0x5020('0x8')](),controller[_0x5020('0x3a')]);router[_0x5020('0x3b')](_0x5020('0x12'),auth[_0x5020('0x8')](),controller[_0x5020('0x3c')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5020('0x3d')]);router[_0x5020('0x3b')](_0x5020('0x3e'),auth[_0x5020('0x8')](),controller[_0x5020('0x3f')]);router['post'](_0x5020('0x40'),auth[_0x5020('0x8')](),controller[_0x5020('0x41')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1daeef,_0xc11f19,_0x4eef69){_0x4eef69(null,path[_0x5020('0x42')](config[_0x5020('0x43')],_0x5020('0x44')));},'filename':function(_0x4a5c03,_0x5e737b,_0x12542b){_0x12542b(null,util[_0x5020('0x45')]('%s-%s',Date[_0x5020('0x46')](),_0x5e737b[_0x5020('0x47')]));}})});router['post'](_0x5020('0x48'),upload[_0x5020('0x49')](_0x5020('0x4a')),controller[_0x5020('0x4b')]);router['post'](_0x5020('0x4c'),auth['isAuthenticated'](),controller[_0x5020('0x4d')]);router[_0x5020('0x3b')](_0x5020('0x4e'),auth['isAuthenticated'](),controller['logout']);router[_0x5020('0x3b')](_0x5020('0x4f'),auth['isAuthenticated'](),controller[_0x5020('0x50')]);router[_0x5020('0x3b')](_0x5020('0x51'),auth[_0x5020('0x8')](),controller['unpause']);router[_0x5020('0x3b')]('/:id/teams',auth[_0x5020('0x8')](),controller['addTeams']);router[_0x5020('0x3b')](_0x5020('0x52'),auth['isAuthenticated'](),controller[_0x5020('0x53')]);router['post'](_0x5020('0x54'),auth['isAuthenticated'](),controller['addMailInteractions']);router[_0x5020('0x3b')]('/:id/fax_interactions',auth[_0x5020('0x8')](),controller['addFaxInteractions']);router['post']('/:id/sms_interactions',auth[_0x5020('0x8')](),controller[_0x5020('0x55')]);router['post'](_0x5020('0x56'),auth['isAuthenticated'](),controller[_0x5020('0x57')]);router[_0x5020('0x3b')]('/:id/whatsapp_interactions',auth[_0x5020('0x8')](),controller['addWhatsappInteractions']);router[_0x5020('0x3b')](_0x5020('0x2d'),auth['isAuthenticated'](),controller[_0x5020('0x58')]);router[_0x5020('0x3b')]('/:id/mail_accounts',auth[_0x5020('0x8')](),controller[_0x5020('0x59')]);router[_0x5020('0x3b')](_0x5020('0x5a'),auth[_0x5020('0x8')](),controller[_0x5020('0x5b')]);router['post'](_0x5020('0x31'),auth['isAuthenticated'](),controller['addSmsAccounts']);router[_0x5020('0x3b')](_0x5020('0x32'),auth[_0x5020('0x8')](),controller[_0x5020('0x5c')]);router[_0x5020('0x3b')]('/:id/whatsapp_accounts',auth[_0x5020('0x8')](),controller['addWhatsappAccounts']);router[_0x5020('0x3b')](_0x5020('0x35'),auth[_0x5020('0x8')](),controller['addSquareProjects']);router[_0x5020('0x3b')](_0x5020('0x39'),auth[_0x5020('0x8')](),controller[_0x5020('0x5d')]);router[_0x5020('0x5e')](_0x5020('0xe'),auth[_0x5020('0x8')](),controller[_0x5020('0x5f')]);router['put']('/:id/password',auth['isAuthenticated'](),controller[_0x5020('0x60')]);router[_0x5020('0x61')](_0x5020('0x40'),auth['isAuthenticated'](),controller['removeQueues']);router[_0x5020('0x61')](_0x5020('0x26'),auth[_0x5020('0x8')](),controller['removeTeams']);router[_0x5020('0x61')](_0x5020('0xe'),auth[_0x5020('0x8')](),controller[_0x5020('0x62')]);router[_0x5020('0x61')]('/:id/chat_interactions',auth[_0x5020('0x8')](),controller[_0x5020('0x63')]);router[_0x5020('0x61')](_0x5020('0x54'),auth[_0x5020('0x8')](),controller[_0x5020('0x64')]);router[_0x5020('0x61')](_0x5020('0x65'),auth[_0x5020('0x8')](),controller[_0x5020('0x66')]);router['delete'](_0x5020('0x67'),auth['isAuthenticated'](),controller[_0x5020('0x68')]);router[_0x5020('0x61')](_0x5020('0x56'),auth['isAuthenticated'](),controller[_0x5020('0x69')]);router['delete'](_0x5020('0x6a'),auth[_0x5020('0x8')](),controller[_0x5020('0x6b')]);router[_0x5020('0x61')](_0x5020('0x2d'),auth['isAuthenticated'](),controller[_0x5020('0x6c')]);router['delete'](_0x5020('0x2f'),auth[_0x5020('0x8')](),controller[_0x5020('0x6d')]);router['delete']('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0x5020('0x6e')]);router[_0x5020('0x61')](_0x5020('0x31'),auth[_0x5020('0x8')](),controller[_0x5020('0x6f')]);router['delete']('/:id/chat_websites',auth[_0x5020('0x8')](),controller['removeChatWebsites']);router[_0x5020('0x61')]('/:id/whatsapp_accounts',auth[_0x5020('0x8')](),controller[_0x5020('0x70')]);router[_0x5020('0x61')](_0x5020('0x35'),auth[_0x5020('0x8')](),controller[_0x5020('0x71')]);router[_0x5020('0x61')](_0x5020('0x39'),auth[_0x5020('0x8')](),controller['removeApiKey']);module['exports']=router;
\ No newline at end of file
index 97d3b19..62586f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb8f=['accountcode','getDataValue','BOOLEAN','DATE','DEFAULT\x20PAUSE','INTEGER','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','transport','join','rfc2833','info','shortinfo','auto','yes','nonat','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','split','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','uac','uas','fingerprint','active','passive','update','TEXT','isArray','wss','udp','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','actpass','dtlsprivatekey','/etc/pki/tls/private/motion.key','permissions','map','phoneBarEnableScreenRecordingByAgent','string','screenrecording','blocked','blockedAt','moment','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','email','toLowerCase','ENUM','admin','user','agent','local','internal'];(function(_0x13fbaf,_0x4c4968){var _0x35f014=function(_0x4382a3){while(--_0x4382a3){_0x13fbaf['push'](_0x13fbaf['shift']());}};_0x35f014(++_0x4c4968);}(_0xfb8f,0x18c));var _0xffb8=function(_0x10a78b,_0x289e96){_0x10a78b=_0x10a78b-0x0;var _0xbccfe=_0xfb8f[_0x10a78b];return _0xbccfe;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xffb8('0x0'));var util=require('util');var _=require('lodash');module[_0xffb8('0x1')]={'name':{'type':Sequelize[_0xffb8('0x2')],'allowNull':![],'unique':_0xffb8('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2d270d){this[_0xffb8('0x4')]('name',_0x2d270d);this[_0xffb8('0x4')](_0xffb8('0x5'),_0x2d270d);},'comment':_0xffb8('0x6')},'fullname':{'type':Sequelize[_0xffb8('0x2')],'allowNull':![],'set':function(_0x5a70ab){this['setDataValue'](_0xffb8('0x7'),_0x5a70ab);this[_0xffb8('0x4')](_0xffb8('0x8'),util[_0xffb8('0x9')](_0xffb8('0xa'),_0x5a70ab,this['getDataValue']('internal')));}},'alias':{'type':Sequelize[_0xffb8('0x2')]},'email':{'type':Sequelize[_0xffb8('0x2')],'allowNull':![],'unique':_0xffb8('0xb'),'validate':{'isEmail':!![]},'set':function(_0x2b2197){if(_0x2b2197){this[_0xffb8('0x4')]('email',_0x2b2197[_0xffb8('0xc')]());}}},'role':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0xe'),_0xffb8('0xf'),_0xffb8('0x10'),'telephone'),'allowNull':![]},'password':{'type':Sequelize[_0xffb8('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0xffb8('0x2')],'defaultValue':_0xffb8('0x11')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':_0xffb8('0x12'),'set':function(_0x5187a3){this['setDataValue'](_0xffb8('0x12'),_0x5187a3);this[_0xffb8('0x4')](_0xffb8('0x13'),_0x5187a3);this[_0xffb8('0x4')](_0xffb8('0x8'),util[_0xffb8('0x9')](_0xffb8('0xa'),this[_0xffb8('0x14')](_0xffb8('0x7')),_0x5187a3));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xffb8('0x2')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xffb8('0x2')]},'online':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xffb8('0x16')]},'voicePause':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0xffb8('0x17')},'lastPauseAt':{'type':Sequelize[_0xffb8('0x16')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xffb8('0x18')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xffb8('0x18')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xffb8('0x18')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xffb8('0x18')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xffb8('0x18')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xffb8('0x18')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xffb8('0x18')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'host':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'port':{'type':Sequelize[_0xffb8('0x18')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x19'),'user','peer'),'allowNull':!![],'defaultValue':_0xffb8('0x19')},'context':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![],'defaultValue':_0xffb8('0x1a')},'callingpres':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x1b'),_0xffb8('0x1c'),'ALLOWED_FAILED_SCREEN',_0xffb8('0x1d'),'PROHIB_NOT_SCREENED',_0xffb8('0x1e'),_0xffb8('0x1f'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'permit':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'secret':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'transport':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![],'defaultValue':'udp','set':function(_0x23eea3){this[_0xffb8('0x4')](_0xffb8('0x20'),_0x23eea3?_0x23eea3[_0xffb8('0x21')](','):null);},'get':function(){return this[_0xffb8('0x14')](_0xffb8('0x20'))?this[_0xffb8('0x14')](_0xffb8('0x20'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize['ENUM'](_0xffb8('0x22'),_0xffb8('0x23'),_0xffb8('0x24'),'inband',_0xffb8('0x25')),'allowNull':!![],'defaultValue':_0xffb8('0x22')},'directmedia':{'type':Sequelize['ENUM'](_0xffb8('0x26'),'no',_0xffb8('0x27'),'update','outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'nat':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x35fbc0){this[_0xffb8('0x4')](_0xffb8('0x28'),_0x35fbc0?_0x35fbc0[_0xffb8('0x21')](','):null);},'get':function(){return this[_0xffb8('0x14')](_0xffb8('0x28'))?this[_0xffb8('0x14')]('nat')['split'](','):null;},'comment':_0xffb8('0x29')},'callgroup':{'type':Sequelize[_0xffb8('0x2')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xffb8('0x2')]},'language':{'type':Sequelize[_0xffb8('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0xffb8('0x2')],'allowNull':![],'defaultValue':_0xffb8('0x2a')},'allow':{'type':Sequelize[_0xffb8('0x2')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x253885){this[_0xffb8('0x4')](_0xffb8('0x2b'),_0x253885?_0x253885[_0xffb8('0x21')](';'):_0xffb8('0x2c'));},'get':function(){return this['getDataValue'](_0xffb8('0x2b'))?this[_0xffb8('0x14')](_0xffb8('0x2b'))[_0xffb8('0x2d')](';'):null;},'comment':_0xffb8('0x2e')},'autoframing':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![],'set':function(_0x2b441d){this[_0xffb8('0x4')](_0xffb8('0x2f'),_0x2b441d?_0x2b441d[_0xffb8('0x21')](','):null);},'get':function(){return this[_0xffb8('0x14')](_0xffb8('0x2f'))?this[_0xffb8('0x14')](_0xffb8('0x2f'))[_0xffb8('0x2d')](','):null;},'comment':_0xffb8('0x30')},'trustrpid':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xffb8('0x26'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no',_0xffb8('0x31')),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xffb8('0x32')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xffb8('0xd')]('yes','no'),'allowNull':!![],'defaultValue':_0xffb8('0x26')},'busylevel':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0xffb8('0x26'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xffb8('0x26'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'template':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0xffb8('0x26'),'no',_0xffb8('0x33')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xffb8('0xd')]('yes','no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM'](_0xffb8('0x34'),_0xffb8('0x35'),'originate'),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x36'),_0xffb8('0x37')),'allowNull':!![],'defaultValue':_0xffb8('0x37')},'t38pt_usertpsource':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'regexten':{'type':Sequelize['STRING'],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0xffb8('0x26'),'no'),'allowNull':!![],'defaultValue':_0xffb8('0x26')},'keepalive':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0xffb8('0x26'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0xffb8('0x26'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no',_0xffb8('0x38'),'certificate'),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x39'),_0xffb8('0x3a'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xffb8('0xd')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xffb8('0x18')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xffb8('0xd')](_0xffb8('0x26'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0xffb8('0x26'),'no',_0xffb8('0x27'),_0xffb8('0x3b'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xffb8('0x2')]},'resetPasswordExpires':{'type':Sequelize[_0xffb8('0x16')]},'passwordResetAt':{'type':Sequelize[_0xffb8('0x16')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xffb8('0x3c')]},'showWebBar':{'type':Sequelize[_0xffb8('0x18')],'defaultValue':0x0,'set':function(_0x248686){this['setDataValue']('showWebBar',_0x248686);var _0x2c31ca=this['get']({'plain':!![]});switch(_0x248686){case 0x0:case 0x1:var _0x5900e4=_0x2c31ca[_0xffb8('0x20')]?_[_0xffb8('0x3d')](_0x2c31ca[_0xffb8('0x20')])?_0x2c31ca['transport'][_0xffb8('0x21')]():_0x2c31ca[_0xffb8('0x20')]:'udp';if(_0x5900e4===_0xffb8('0x3e')){_0x5900e4=_0xffb8('0x3f');}this[_0xffb8('0x4')](_0xffb8('0x20'),_0x5900e4);this[_0xffb8('0x4')](_0xffb8('0x40'),'no');this[_0xffb8('0x4')](_0xffb8('0x41'),null);this[_0xffb8('0x4')](_0xffb8('0x42'),null);this['setDataValue'](_0xffb8('0x43'),null);this[_0xffb8('0x4')](_0xffb8('0x44'),null);this['setDataValue'](_0xffb8('0x45'),null);this[_0xffb8('0x4')](_0xffb8('0x46'),null);this['setDataValue'](_0xffb8('0x47'),null);this[_0xffb8('0x4')]('dtlsprivatekey',null);this[_0xffb8('0x4')](_0xffb8('0x48'),'no');break;case 0x2:this['setDataValue'](_0xffb8('0x20'),_0xffb8('0x3e'));this[_0xffb8('0x4')](_0xffb8('0x40'),_0xffb8('0x26'));this[_0xffb8('0x4')](_0xffb8('0x41'),_0xffb8('0x26'));this['setDataValue'](_0xffb8('0x42'),'yes');this[_0xffb8('0x4')](_0xffb8('0x43'),'yes');this[_0xffb8('0x4')](_0xffb8('0x44'),_0xffb8('0x26'));this['setDataValue'](_0xffb8('0x45'),'no');this[_0xffb8('0x4')](_0xffb8('0x46'),_0xffb8('0x49'));this[_0xffb8('0x4')](_0xffb8('0x47'),_0x2c31ca[_0xffb8('0x47')]||'/etc/pki/tls/certs/motion.crt');this[_0xffb8('0x4')](_0xffb8('0x4a'),_0x2c31ca[_0xffb8('0x4a')]||_0xffb8('0x4b'));this[_0xffb8('0x4')](_0xffb8('0x48'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0xffb8('0x3c')],'set':function(_0x31c627){this['setDataValue'](_0xffb8('0x4c'),_0x31c627?_0x31c627['join'](','):[]);},'get':function(){return this[_0xffb8('0x14')](_0xffb8('0x4c'))?_[_0xffb8('0x4d')](this[_0xffb8('0x14')](_0xffb8('0x4c'))['split'](','),function(_0x35d8b2){return parseInt(_0x35d8b2,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xffb8('0x2')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xffb8('0x18')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xffb8('0x2')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xffb8('0x18')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xffb8('0xd')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xffb8('0x2')]},'phoneBarEnableJaws':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xffb8('0x14')](_0xffb8('0x4e'))?this[_0xffb8('0x14')]('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0xffb8('0x2')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xffb8('0x2')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x5ba8ca){if(typeof _0x5ba8ca===_0xffb8('0x4f')){var _0x24adcb=_0x5ba8ca==='1'?!![]:_0x5ba8ca==='0'?![]:_0x5ba8ca==='true'?!![]:_0x5ba8ca==='false'?![]:![];this[_0xffb8('0x4')](_0xffb8('0x50'),_0x24adcb);}else{this[_0xffb8('0x4')](_0xffb8('0x50'),_0x5ba8ca);}}},'blocked':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![],'set':function(_0x19946e){this['setDataValue'](_0xffb8('0x51'),_0x19946e);if(_0x19946e===!![]){this['setDataValue']('blockedAt',moment());this[_0xffb8('0x4')]('loginAttempts',0x0);}else{this['setDataValue'](_0xffb8('0x52'),null);}}},'blockedAt':{'type':Sequelize[_0xffb8('0x16')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xffb8('0x18')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xffb8('0x15')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x0dee=['getDataValue','BOOLEAN','DATE','DEFAULT\x20PAUSE','friend','user','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','udp','join','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','yes','update','outgoing','force_rport,comedia','nat','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','\x22\x22\x20<>','always','accept','originate','uac','uas','fingerprint','certificate','active','passive','actpass','update,nonat','TEXT','get','isArray','wss','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','encryption','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','lodash','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','callerid','\x22%s\x22\x20<%s>','internal','email','toLowerCase','ENUM','agent','telephone','local','INTEGER','accountcode','format'];(function(_0xd29778,_0x1976fc){var _0x571da3=function(_0x3666a1){while(--_0x3666a1){_0xd29778['push'](_0xd29778['shift']());}};_0x571da3(++_0x1976fc);}(_0x0dee,0xf7));var _0xe0de=function(_0x57730d,_0x478034){_0x57730d=_0x57730d-0x0;var _0x23eec8=_0x0dee[_0x57730d];return _0x23eec8;};'use strict';var Sequelize=require(_0xe0de('0x0'));var moment=require(_0xe0de('0x1'));var util=require('util');var _=require(_0xe0de('0x2'));module['exports']={'name':{'type':Sequelize[_0xe0de('0x3')],'allowNull':![],'unique':_0xe0de('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x4878ce){this[_0xe0de('0x5')](_0xe0de('0x4'),_0x4878ce);this[_0xe0de('0x5')]('defaultuser',_0x4878ce);},'comment':_0xe0de('0x6')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0xfe1fd9){this[_0xe0de('0x5')](_0xe0de('0x7'),_0xfe1fd9);this['setDataValue'](_0xe0de('0x8'),util['format'](_0xe0de('0x9'),_0xfe1fd9,this['getDataValue'](_0xe0de('0xa'))));}},'alias':{'type':Sequelize[_0xe0de('0x3')]},'email':{'type':Sequelize[_0xe0de('0x3')],'allowNull':![],'unique':_0xe0de('0xb'),'validate':{'isEmail':!![]},'set':function(_0x53930a){if(_0x53930a){this[_0xe0de('0x5')](_0xe0de('0xb'),_0x53930a[_0xe0de('0xc')]());}}},'role':{'type':Sequelize[_0xe0de('0xd')]('admin','user',_0xe0de('0xe'),_0xe0de('0xf')),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0xe0de('0x10')},'internal':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':![],'unique':'internal','set':function(_0x4cd724){this['setDataValue']('internal',_0x4cd724);this[_0xe0de('0x5')](_0xe0de('0x12'),_0x4cd724);this[_0xe0de('0x5')](_0xe0de('0x8'),util[_0xe0de('0x13')](_0xe0de('0x9'),this[_0xe0de('0x14')](_0xe0de('0x7')),_0x4cd724));}},'salt':{'type':Sequelize[_0xe0de('0x3')]},'phone':{'type':Sequelize[_0xe0de('0x3')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0xe0de('0x3')]},'zipcode':{'type':Sequelize[_0xe0de('0x3')]},'userpic':{'type':Sequelize[_0xe0de('0x3')]},'city':{'type':Sequelize[_0xe0de('0x3')]},'country':{'type':Sequelize[_0xe0de('0x3')]},'online':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xe0de('0x16')]},'voicePause':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xe0de('0x3')],'defaultValue':_0xe0de('0x17')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0xe0de('0x11')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xe0de('0x11')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xe0de('0x11')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xe0de('0x11')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xe0de('0x11')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xe0de('0x11')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xe0de('0x11')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0xe0de('0x11')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM'](_0xe0de('0x18'),_0xe0de('0x19'),'peer'),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize[_0xe0de('0xd')]('ALLOWED_NOT_SCREENED',_0xe0de('0x1a'),_0xe0de('0x1b'),'ALLOWED',_0xe0de('0x1c'),'PROHIB_PASSED_SCREEN',_0xe0de('0x1d'),_0xe0de('0x1e')),'allowNull':!![]},'deny':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![],'defaultValue':_0xe0de('0x1f'),'set':function(_0x4ed8c8){this[_0xe0de('0x5')]('transport',_0x4ed8c8?_0x4ed8c8[_0xe0de('0x20')](','):null);},'get':function(){return this[_0xe0de('0x14')](_0xe0de('0x21'))?this[_0xe0de('0x14')](_0xe0de('0x21'))[_0xe0de('0x22')](','):null;},'comment':_0xe0de('0x23')},'dtmfmode':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x24'),_0xe0de('0x25'),_0xe0de('0x26'),_0xe0de('0x27'),'auto'),'allowNull':!![],'defaultValue':_0xe0de('0x24')},'directmedia':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x28'),'no','nonat',_0xe0de('0x29'),_0xe0de('0x2a')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0xe0de('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![],'defaultValue':_0xe0de('0x2b'),'set':function(_0x2dd170){this['setDataValue'](_0xe0de('0x2c'),_0x2dd170?_0x2dd170[_0xe0de('0x20')](','):null);},'get':function(){return this[_0xe0de('0x14')](_0xe0de('0x2c'))?this[_0xe0de('0x14')](_0xe0de('0x2c'))[_0xe0de('0x22')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0xe0de('0x3')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0xe0de('0x3')]},'namedpickupgroup':{'type':Sequelize[_0xe0de('0x3')]},'language':{'type':Sequelize[_0xe0de('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0xe0de('0x3')],'allowNull':![],'defaultValue':_0xe0de('0x2d')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xe0de('0x2e'),'set':function(_0x582a36){this['setDataValue']('allow',_0x582a36?_0x582a36['join'](';'):_0xe0de('0x2e'));},'get':function(){return this[_0xe0de('0x14')](_0xe0de('0x2f'))?this[_0xe0de('0x14')](_0xe0de('0x2f'))[_0xe0de('0x22')](';'):null;},'comment':_0xe0de('0x30')},'autoframing':{'type':Sequelize['ENUM'](_0xe0de('0x28'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize['STRING'],'allowNull':!![],'set':function(_0x5e91bb){this['setDataValue'](_0xe0de('0x31'),_0x5e91bb?_0x5e91bb['join'](','):null);},'get':function(){return this[_0xe0de('0x14')](_0xe0de('0x31'))?this['getDataValue']('insecure')[_0xe0de('0x22')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xe0de('0xd')]('yes','no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x28'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0xe0de('0x28'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![],'defaultValue':_0xe0de('0x32')},'amaflags':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x28'),'no'),'allowNull':!![],'defaultValue':_0xe0de('0x28')},'busylevel':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0xe0de('0x28'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0xe0de('0x28'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x28'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xe0de('0x28'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize['STRING'],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x28'),'no',_0xe0de('0x33')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x28'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x34'),'refuse',_0xe0de('0x35')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize['ENUM'](_0xe0de('0x36'),_0xe0de('0x37')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize['STRING'],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x28'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xe0de('0xd')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize['STRING'],'allowNull':!![]},'timert1':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0xe0de('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xe0de('0x28'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x28'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x28'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xe0de('0xd')]('yes','no',_0xe0de('0x38'),_0xe0de('0x39')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xe0de('0xd')](_0xe0de('0x3a'),_0xe0de('0x3b'),_0xe0de('0x3c')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xe0de('0xd')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xe0de('0x11')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xe0de('0xd')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM']('yes','no','nonat',_0xe0de('0x29'),_0xe0de('0x3d')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0xe0de('0x16')]},'passwordResetAt':{'type':Sequelize[_0xe0de('0x16')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xe0de('0x3e')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x4b6f6e){this[_0xe0de('0x5')]('showWebBar',_0x4b6f6e);var _0x584381=this[_0xe0de('0x3f')]({'plain':!![]});switch(_0x4b6f6e){case 0x0:case 0x1:var _0xfd777e=_0x584381[_0xe0de('0x21')]?_[_0xe0de('0x40')](_0x584381['transport'])?_0x584381[_0xe0de('0x21')][_0xe0de('0x20')]():_0x584381[_0xe0de('0x21')]:_0xe0de('0x1f');if(_0xfd777e===_0xe0de('0x41')){_0xfd777e='udp';}this[_0xe0de('0x5')](_0xe0de('0x21'),_0xfd777e);this['setDataValue']('encryption','no');this[_0xe0de('0x5')](_0xe0de('0x42'),null);this['setDataValue'](_0xe0de('0x43'),null);this[_0xe0de('0x5')](_0xe0de('0x44'),null);this[_0xe0de('0x5')](_0xe0de('0x45'),null);this[_0xe0de('0x5')](_0xe0de('0x46'),null);this[_0xe0de('0x5')](_0xe0de('0x47'),null);this['setDataValue'](_0xe0de('0x48'),null);this[_0xe0de('0x5')]('dtlsprivatekey',null);this[_0xe0de('0x5')](_0xe0de('0x49'),'no');break;case 0x2:this['setDataValue']('transport',_0xe0de('0x41'));this[_0xe0de('0x5')](_0xe0de('0x4a'),_0xe0de('0x28'));this[_0xe0de('0x5')](_0xe0de('0x42'),_0xe0de('0x28'));this[_0xe0de('0x5')](_0xe0de('0x43'),'yes');this[_0xe0de('0x5')]('icesupport',_0xe0de('0x28'));this['setDataValue'](_0xe0de('0x45'),_0xe0de('0x28'));this[_0xe0de('0x5')]('dtlsverify','no');this['setDataValue'](_0xe0de('0x47'),_0xe0de('0x3c'));this['setDataValue'](_0xe0de('0x48'),_0x584381[_0xe0de('0x48')]||_0xe0de('0x4b'));this[_0xe0de('0x5')](_0xe0de('0x4c'),_0x584381['dtlsprivatekey']||_0xe0de('0x4d'));this[_0xe0de('0x5')](_0xe0de('0x49'),_0xe0de('0x28'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x20459b){this[_0xe0de('0x5')](_0xe0de('0x4e'),_0x20459b?_0x20459b[_0xe0de('0x20')](','):[]);},'get':function(){return this[_0xe0de('0x14')]('permissions')?_[_0xe0de('0x4f')](this['getDataValue'](_0xe0de('0x4e'))['split'](','),function(_0x13ffa1){return parseInt(_0x13ffa1,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xe0de('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0xe0de('0x3')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xe0de('0x11')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xe0de('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xe0de('0x11')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0xe0de('0x28'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xe0de('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xe0de('0x50')],'get':function(){return this[_0xe0de('0x14')](_0xe0de('0x51'))?this[_0xe0de('0x14')]('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'interface':{'type':Sequelize[_0xe0de('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xe0de('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x2b5801){if(typeof _0x2b5801===_0xe0de('0x52')){var _0x35c1ac=_0x2b5801==='1'?!![]:_0x2b5801==='0'?![]:_0x2b5801===_0xe0de('0x53')?!![]:_0x2b5801===_0xe0de('0x54')?![]:![];this[_0xe0de('0x5')](_0xe0de('0x55'),_0x35c1ac);}else{this[_0xe0de('0x5')](_0xe0de('0x55'),_0x2b5801);}}},'blocked':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![],'set':function(_0x5349ca){this[_0xe0de('0x5')]('blocked',_0x5349ca);if(_0x5349ca===!![]){this[_0xe0de('0x5')](_0xe0de('0x56'),moment());this['setDataValue'](_0xe0de('0x57'),0x0);}else{this[_0xe0de('0x5')](_0xe0de('0x56'),null);}}},'blockedAt':{'type':Sequelize[_0xe0de('0x16')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xe0de('0x11')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xe0de('0x11')](0x5)[_0xe0de('0x58')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xe0de('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 06a001d..21503c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a6d=['Contact','dialActive','getApiKey','retrieveApiKey','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','apiKeyNonce','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','resolve','teams','inbound','queues','col','asc','desc','substring','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','client','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','select','field','InteractionId','ui.createdAt','user_has_','toString','OpenTabs','eml-format','zip-dir','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','defaults','localhost','redis','./user.socket','register','http','request','info','User,\x20%s,\x20%s','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','update','then','destroy','role','admin','Users','user','Agents','agent','Telephones','filter','ignore','map','value','includes','name','UserProfileResource','stack','send','index','User','rawAttributes','fieldName','key','model','differenceBy','password','salt','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','type','VIRTUAL','sequelize','lower','options','include','push','findAll','rows','openTabs','true','chat','dataValues','fax','mail','openchannel','all','catch','show','params','merge','find','sms','whatsapp','body','describe','addContacts','ids','omit','Setting','securePassword','validatePasswordPattern','internal','min_internal','isNil','QueryTypes','SELECT','from','voicemail','mailbox','fullname','permissions','103','113','110','104','105','106','108','109','100','111','114','115','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','userProfileId','VoiceMail','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','isEmpty','compact','create','changePassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','oldPassword','Wrong\x20credentials','newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Unauthorized','findOne','enforcePasswordHistory','passwordHistoryLimit','validatePasswordHistory','previousPasswords','updatePasswordsHistory','addQueues','channel','online','interface','isValidChannel','Unknown\x20channel','add','toLowerCase','Queues','penalty','spread','QueueId','emit','capitalize','voice','VoiceQueue','format','SIP/%s','voicePause','UserVoiceQueueRt','upsert','removeQueues','Queue:remove','addAvatar','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','userpic','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','OpenchannelOpenTabs','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','getContacts','CmContact','order','hasOwnProperty','includeAll','CmList','List','Tag','Tags','color','tag','getQueues','Queue','pick','get','Unknown\x20role','getVoiceQueuesRt','getGroups','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','SmsInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','login','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','headers','connection','remoteAddress','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','getChannels','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','LOGININPAUSE','concat','loginInPause','isMiddleware','logout','pause','QueuePause','PAUSE','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','manual','set','%s%s','Pause','getTeams','addTeams','Team','Voice','getChatQueues','setDataValue','getMailQueues','getSmsQueues','getWhatsappQueues','Whatsapp','getFaxQueues','Openchannel','addAgent','getDataValue','Queue:save','removeTeams','Chat','Sms','flatten','transaction','removeAgent','getLists','getAgents','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','isArray','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','MailAccount','getMailAccounts','addMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$or','$gte','$lt','$lte','$ne','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','firstName','lastName'];(function(_0x354435,_0x4696b4){var _0x19d1a5=function(_0x13d1e3){while(--_0x13d1e3){_0x354435['push'](_0x354435['shift']());}};_0x19d1a5(++_0x4696b4);}(_0x5a6d,0x1d4));var _0xd5a6=function(_0x5d856b,_0x546004){_0x5d856b=_0x5d856b-0x0;var _0x13ee31=_0x5a6d[_0x5d856b];return _0x13ee31;};'use strict';var emlformat=require(_0xd5a6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd5a6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd5a6('0x2'));var moment=require(_0xd5a6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd5a6('0x4'));var util=require(_0xd5a6('0x5'));var path=require(_0xd5a6('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd5a6('0x7'));var fs=require('fs');var fs_extra=require(_0xd5a6('0x8'));var _=require(_0xd5a6('0x9'));var squel=require(_0xd5a6('0xa'));var crypto=require('crypto');var jsforce=require(_0xd5a6('0xb'));var deskjs=require(_0xd5a6('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd5a6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var values;var authService=require(_0xd5a6('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd5a6('0xf'));var logger=require(_0xd5a6('0x10'))('api');var utils=require('../../config/utils');var config=require(_0xd5a6('0x11'));var licenseUtil=require(_0xd5a6('0x12'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xd5a6('0x13')](config['redis'],{'host':_0xd5a6('0x14'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd5a6('0x15')]));require(_0xd5a6('0x16'))[_0xd5a6('0x17')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xd5a6('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x450568,_0x46b745,_0x56907f,_0x5dd690){return new BPromise(function(_0x137a98,_0x23b850){var _0xe76f1d=_0x5dd690||client;return _0xe76f1d[_0xd5a6('0x19')](_0x450568,_0x56907f)['then'](function(_0x3aaa98){logger[_0xd5a6('0x1a')](_0xd5a6('0x1b'),_0x46b745,'request\x20sent');logger['debug'](_0xd5a6('0x1c'),_0x46b745,_0xd5a6('0x1d'),JSON[_0xd5a6('0x1e')](_0x3aaa98));if(_0x3aaa98['error']){if(_0x3aaa98['error'][_0xd5a6('0x1f')]===0x1f4){logger[_0xd5a6('0x20')]('User,\x20%s,\x20%s',_0x46b745,_0x3aaa98[_0xd5a6('0x20')][_0xd5a6('0x21')]);return _0x23b850(_0x3aaa98['error'][_0xd5a6('0x21')]);}logger[_0xd5a6('0x20')](_0xd5a6('0x1b'),_0x46b745,_0x3aaa98[_0xd5a6('0x20')][_0xd5a6('0x21')]);return _0x137a98(_0x3aaa98[_0xd5a6('0x20')]['message']);}else{logger[_0xd5a6('0x1a')]('User,\x20%s,\x20%s',_0x46b745,'request\x20sent');_0x137a98(_0x3aaa98[_0xd5a6('0x22')][_0xd5a6('0x21')]);}})['catch'](function(_0x48a1f6){logger[_0xd5a6('0x20')](_0xd5a6('0x1b'),_0x46b745,_0x48a1f6);_0x23b850(_0x48a1f6);});});}function respondWithStatusCode(_0x4149dd,_0x59bccf){_0x59bccf=_0x59bccf||0xcc;return function(_0x3a0bb5){if(_0x3a0bb5){return _0x4149dd[_0xd5a6('0x23')](_0x59bccf);}return _0x4149dd[_0xd5a6('0x24')](_0x59bccf)[_0xd5a6('0x25')]();};}function respondWithResult(_0x56faa1,_0x5d8d6){_0x5d8d6=_0x5d8d6||0xc8;return function(_0x173761){if(_0x173761){return _0x56faa1['status'](_0x5d8d6)[_0xd5a6('0x26')](_0x173761);}};}function respondWithFilteredResult(_0x3d51c6,_0x703803){return function(_0x4b0367){if(_0x4b0367){var _0x812d8b=typeof _0x703803[_0xd5a6('0x27')]===_0xd5a6('0x28')&&typeof _0x703803['limit']===_0xd5a6('0x28');var _0x5b41d9=_0x4b0367[_0xd5a6('0x29')];var _0x3e969d=_0x812d8b?0x0:_0x703803[_0xd5a6('0x27')];var _0x5e6bd7=_0x812d8b?_0x4b0367['count']:_0x703803[_0xd5a6('0x27')]+_0x703803[_0xd5a6('0x2a')];var _0x44a39d;if(_0x5e6bd7>=_0x5b41d9){_0x5e6bd7=_0x5b41d9;_0x44a39d=0xc8;}else{_0x44a39d=0xce;}_0x3d51c6[_0xd5a6('0x24')](_0x44a39d);return _0x3d51c6['set'](_0xd5a6('0x2b'),_0x3e969d+'-'+_0x5e6bd7+'/'+_0x5b41d9)[_0xd5a6('0x26')](_0x4b0367);}return null;};}function patchUpdates(_0xdd2484){return function(_0x57448b){try{jsonpatch['apply'](_0x57448b,_0xdd2484,!![]);}catch(_0xad3c8d){return BPromise['reject'](_0xad3c8d);}return _0x57448b['save']();};}function saveUpdates(_0x353ccc,_0x47c5bf){return function(_0x485332){if(_0x485332){return _0x485332[_0xd5a6('0x2c')](_0x353ccc)[_0xd5a6('0x2d')](function(_0x33cfea){return _0x33cfea;});}return null;};}function removeEntity(_0xb63eb8,_0x18ba11){return function(_0x614cab){if(_0x614cab){return _0x614cab[_0xd5a6('0x2e')]()[_0xd5a6('0x2d')](function(){var _0xd37176=_0x614cab['get']({'plain':!![]});if(_0xd37176[_0xd5a6('0x2f')]===_0xd5a6('0x30'))return;var _0x393c7f=[{'name':_0xd5a6('0x31'),'value':_0xd5a6('0x32'),'ignore':!![]},{'name':_0xd5a6('0x33'),'value':_0xd5a6('0x34'),'ignore':![]},{'name':_0xd5a6('0x35'),'value':'telephone','ignore':![]}];var _0x4ee157=_(_0x393c7f)[_0xd5a6('0x36')](_0xd5a6('0x37'))[_0xd5a6('0x38')](_0xd5a6('0x39'))['value']();if(_[_0xd5a6('0x3a')](_0x4ee157,_0xd37176[_0xd5a6('0x2f')])){return;}var _0x16a3b0=_['find'](_0x393c7f,[_0xd5a6('0x39'),_0xd37176[_0xd5a6('0x2f')]])[_0xd5a6('0x3b')];return db[_0xd5a6('0x3c')][_0xd5a6('0x2e')]({'where':{'type':_0x16a3b0,'resourceId':_0xd37176['id']}})['then'](function(){return _0x614cab;});})[_0xd5a6('0x2d')](function(){_0xb63eb8[_0xd5a6('0x24')](0xcc)[_0xd5a6('0x25')]();});}};}function handleEntityNotFound(_0x186896,_0x2ef0ec){return function(_0x57d259){if(!_0x57d259){_0x186896['sendStatus'](0x194);}return _0x57d259;};}function handleError(_0x922e81,_0x405c7d){_0x405c7d=_0x405c7d||0x1f4;return function(_0x4dc26f){logger[_0xd5a6('0x20')](_0x4dc26f[_0xd5a6('0x3d')]);if(_0x4dc26f[_0xd5a6('0x3b')]){delete _0x4dc26f[_0xd5a6('0x3b')];}_0x922e81[_0xd5a6('0x24')](_0x405c7d)[_0xd5a6('0x3e')](_0x4dc26f);};}exports[_0xd5a6('0x3f')]=function(_0x2d83e1,_0x29c91f){var _0x49f5f2={},_0x5d186a={},_0x1937b7={'count':0x0,'rows':[]};var _0x4275ca=_['map'](db[_0xd5a6('0x40')][_0xd5a6('0x41')],function(_0x2ddc51){return{'name':_0x2ddc51[_0xd5a6('0x42')],'type':_0x2ddc51['type'][_0xd5a6('0x43')]};});_0x5d186a[_0xd5a6('0x44')]=_[_0xd5a6('0x45')](_[_0xd5a6('0x38')](_0x4275ca,_0xd5a6('0x3b')),[_0xd5a6('0x46'),_0xd5a6('0x47')]);_0x5d186a[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x2d83e1[_0xd5a6('0x48')]);_0x5d186a[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x5d186a[_0xd5a6('0x44')],_0x5d186a[_0xd5a6('0x48')]);_0x49f5f2['attributes']=_[_0xd5a6('0x4b')](_0x5d186a[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x2d83e1[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x49f5f2['attributes']=_0x49f5f2[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x49f5f2[_0xd5a6('0x4d')]:_0x5d186a['model'];if(!_0x2d83e1['query']['hasOwnProperty'](_0xd5a6('0x4f'))){_0x49f5f2['limit']=qs['limit'](_0x2d83e1['query'][_0xd5a6('0x2a')]);_0x49f5f2[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x2d83e1[_0xd5a6('0x48')][_0xd5a6('0x27')]);}_0x49f5f2['order']=qs['sort'](_0x2d83e1[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x49f5f2[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_['pick'](_0x2d83e1[_0xd5a6('0x48')],_0x5d186a[_0xd5a6('0x4a')]),_0x4275ca);if(_0x2d83e1[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x49f5f2['where']=_['merge'](_0x49f5f2[_0xd5a6('0x51')],{'$or':_['map'](_0x4275ca,function(_0x33228f){if(_0x33228f[_0xd5a6('0x52')]!==_0xd5a6('0x53')){return db[_0xd5a6('0x54')][_0xd5a6('0x51')](db[_0xd5a6('0x54')]['fn']('lower',db[_0xd5a6('0x54')]['col'](_0x33228f[_0xd5a6('0x3b')])),{'$like':db[_0xd5a6('0x54')]['fn'](_0xd5a6('0x55'),'%'+_0x2d83e1[_0xd5a6('0x48')]['filter']+'%')});}})});}_0x49f5f2=_['merge']({},_0x49f5f2,_0x2d83e1[_0xd5a6('0x56')]);var _0x251b20={'where':_0x49f5f2[_0xd5a6('0x51')]};return db[_0xd5a6('0x40')][_0xd5a6('0x29')](_0x251b20)['then'](function(_0x424bbb){_0x1937b7['count']=_0x424bbb;if(_0x2d83e1['query']['includeAll']){_0x49f5f2[_0xd5a6('0x57')]=[{'all':!![]}];}if(!_[_0xd5a6('0x3a')](_0x49f5f2['attributes'],'id')){_0x49f5f2[_0xd5a6('0x4d')][_0xd5a6('0x58')]('id');}return db[_0xd5a6('0x40')][_0xd5a6('0x59')](_0x49f5f2);})['then'](function(_0x49e29a){_0x1937b7[_0xd5a6('0x5a')]=_0x49e29a;if(_0x2d83e1[_0xd5a6('0x48')][_0xd5a6('0x5b')]===_0xd5a6('0x5c')){var _0x37690a=[];for(var _0x1e8ceb=0x0;_0x1e8ceb<_0x1937b7[_0xd5a6('0x5a')]['length'];_0x1e8ceb++){_0x37690a['push'](get_open_tabs(_0xd5a6('0x5d'),_0x1937b7[_0xd5a6('0x5a')][_0x1e8ceb]['dataValues']));_0x37690a[_0xd5a6('0x58')](get_open_tabs('sms',_0x1937b7['rows'][_0x1e8ceb][_0xd5a6('0x5e')]));_0x37690a[_0xd5a6('0x58')](get_open_tabs(_0xd5a6('0x5f'),_0x1937b7['rows'][_0x1e8ceb][_0xd5a6('0x5e')]));_0x37690a[_0xd5a6('0x58')](get_open_tabs(_0xd5a6('0x60'),_0x1937b7[_0xd5a6('0x5a')][_0x1e8ceb]['dataValues']));_0x37690a[_0xd5a6('0x58')](get_open_tabs(_0xd5a6('0x61'),_0x1937b7[_0xd5a6('0x5a')][_0x1e8ceb]['dataValues']));_0x37690a[_0xd5a6('0x58')](get_open_tabs('whatsapp',_0x1937b7[_0xd5a6('0x5a')][_0x1e8ceb][_0xd5a6('0x5e')]));}return BPromise[_0xd5a6('0x62')](_0x37690a)[_0xd5a6('0x2d')](function(_0x471329){return _0x1937b7;});}else{return _0x1937b7;}})['then'](respondWithFilteredResult(_0x29c91f,_0x49f5f2))[_0xd5a6('0x63')](handleError(_0x29c91f,null));};exports[_0xd5a6('0x64')]=function(_0x25733a,_0xbe58d4){var _0x1f9b41={'raw':![],'where':{'id':_0x25733a[_0xd5a6('0x65')]['id']}},_0x1a8b34={};_0x1a8b34[_0xd5a6('0x44')]=_[_0xd5a6('0x45')](_[_0xd5a6('0x49')](db['User']['rawAttributes']),[_0xd5a6('0x46'),_0xd5a6('0x47')]);_0x1a8b34[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x25733a['query']);_0x1a8b34['filters']=_['intersection'](_0x1a8b34[_0xd5a6('0x44')],_0x1a8b34['query']);_0x1f9b41[_0xd5a6('0x4d')]=_['intersection'](_0x1a8b34[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x25733a['query'][_0xd5a6('0x4c')]));_0x1f9b41['attributes']=_0x1f9b41[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x1f9b41[_0xd5a6('0x4d')]:_0x1a8b34[_0xd5a6('0x44')];if(_0x25733a[_0xd5a6('0x48')]['includeAll']){_0x1f9b41[_0xd5a6('0x57')]=[{'all':!![]}];}_0x1f9b41=_[_0xd5a6('0x66')]({},_0x1f9b41,_0x25733a[_0xd5a6('0x56')]);if(!_['includes'](_0x1f9b41['attributes'],'id')){_0x1f9b41[_0xd5a6('0x4d')][_0xd5a6('0x58')]('id');}return db[_0xd5a6('0x40')][_0xd5a6('0x67')](_0x1f9b41)[_0xd5a6('0x2d')](handleEntityNotFound(_0xbe58d4,null))['then'](function(_0x46d3d0){var _0x250d57=[];values=_0x46d3d0;if(_0x25733a[_0xd5a6('0x48')][_0xd5a6('0x5b')]===_0xd5a6('0x5c')){_0x250d57[_0xd5a6('0x58')](get_open_tabs('chat',_0x46d3d0[_0xd5a6('0x5e')]));_0x250d57['push'](get_open_tabs(_0xd5a6('0x68'),_0x46d3d0['dataValues']));_0x250d57[_0xd5a6('0x58')](get_open_tabs('openchannel',_0x46d3d0[_0xd5a6('0x5e')]));_0x250d57[_0xd5a6('0x58')](get_open_tabs(_0xd5a6('0x69'),_0x46d3d0[_0xd5a6('0x5e')]));_0x250d57[_0xd5a6('0x58')](get_open_tabs('fax',_0x46d3d0[_0xd5a6('0x5e')]));_0x250d57[_0xd5a6('0x58')](get_open_tabs(_0xd5a6('0x60'),_0x46d3d0[_0xd5a6('0x5e')]));return BPromise[_0xd5a6('0x62')](_0x250d57);}else{return values;}})['then'](function(_0x1f4c15){return values;})[_0xd5a6('0x2d')](respondWithResult(_0xbe58d4,null))[_0xd5a6('0x63')](handleError(_0xbe58d4,null));};exports[_0xd5a6('0x2c')]=function(_0x314b63,_0x9bb5f9){if(_0x314b63[_0xd5a6('0x6a')]['id']){delete _0x314b63[_0xd5a6('0x6a')]['id'];}delete _0x314b63['body'][_0xd5a6('0x2f')];return db['User']['find']({'where':{'id':_0x314b63['params']['id']}})['then'](handleEntityNotFound(_0x9bb5f9,null))[_0xd5a6('0x2d')](saveUpdates(_0x314b63[_0xd5a6('0x6a')],null))['then'](respondWithResult(_0x9bb5f9,null))[_0xd5a6('0x63')](handleError(_0x9bb5f9,null));};exports['describe']=function(_0x291d04,_0x721a87){return db[_0xd5a6('0x40')][_0xd5a6('0x6b')]()['then'](respondWithResult(_0x721a87,null))['catch'](handleError(_0x721a87,null));};exports[_0xd5a6('0x6c')]=function(_0x450367,_0x406e54,_0xf7229f){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x450367[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x406e54,null))[_0xd5a6('0x2d')](function(_0x547ec9){if(_0x547ec9){return _0x547ec9['addContacts'](_0x450367['body'][_0xd5a6('0x6d')],_[_0xd5a6('0x6e')](_0x450367['body'],['ids','id'])||{});}})[_0xd5a6('0x2d')](respondWithResult(_0x406e54,null))['catch'](handleError(_0x406e54,null));};function validateUser(_0x25dc8e){return new BPromise(function(_0x56d397,_0x2554c9){if(_0x25dc8e['internal'])return _0x56d397(_0x25dc8e);return db[_0xd5a6('0x6f')]['findById'](0x1)[_0xd5a6('0x2d')](function(_0x4fe85b){if(_0x4fe85b[_0xd5a6('0x70')])authService[_0xd5a6('0x71')](_0x25dc8e[_0xd5a6('0x46')]);db['User']['max'](_0xd5a6('0x72'))[_0xd5a6('0x2d')](function(_0x4d5a1c){if(_['isNil'](_0x4d5a1c)){_0x25dc8e['internal']=_0x4fe85b[_0xd5a6('0x73')]||0x1;return;}if(_[_0xd5a6('0x74')](_0x4fe85b[_0xd5a6('0x73')])||_0x4fe85b['min_internal']===_0x4d5a1c){_0x25dc8e[_0xd5a6('0x72')]=_0x4d5a1c+0x1;return;}if(_0x4fe85b[_0xd5a6('0x73')]>_0x4d5a1c){_0x25dc8e['internal']=_0x4fe85b[_0xd5a6('0x73')];return;}return db['sequelize'][_0xd5a6('0x48')]('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[_0xd5a6('0x54')][_0xd5a6('0x75')][_0xd5a6('0x76')]})[_0xd5a6('0x2d')](function(_0x957a29){if(_0x957a29&&_0x957a29[_0xd5a6('0x4e')]){for(var _0x36fc1e=0x0,_0xdb89f4=_0x957a29['length'];_0x36fc1e<_0xdb89f4&&_[_0xd5a6('0x74')](_0x25dc8e['internal']);_0x36fc1e++){if(_0x4fe85b[_0xd5a6('0x73')]<=_0x957a29[_0x36fc1e][_0xd5a6('0x77')]){_0x25dc8e[_0xd5a6('0x72')]=_0x957a29[_0x36fc1e][_0xd5a6('0x77')];}else if(_0x4fe85b[_0xd5a6('0x73')]>_0x957a29[_0x36fc1e][_0xd5a6('0x77')]&&_0x4fe85b[_0xd5a6('0x73')]<=_0x957a29[_0x36fc1e]['to']){_0x25dc8e[_0xd5a6('0x72')]=_0x4fe85b['min_internal'];}}}if(_[_0xd5a6('0x74')](_0x25dc8e[_0xd5a6('0x72')])){_0x25dc8e['internal']=_0x4d5a1c+0x1;}return _0x56d397(_0x25dc8e);});});})['catch'](function(_0x392647){_0x2554c9(_0x392647);});});}function updateUser(_0x4a3df3){return new BPromise(function(_0xa96f13,_0x3c817b){try{if(_0x4a3df3[_0xd5a6('0x78')]){_0x4a3df3[_0xd5a6('0x79')]=_0x4a3df3[_0xd5a6('0x72')];_0x4a3df3['VoiceMail']={'mailbox':_0x4a3df3[_0xd5a6('0x72')],'password':_0x4a3df3[_0xd5a6('0x46')],'fullname':_0x4a3df3[_0xd5a6('0x7a')],'email':_0x4a3df3['email']};}if(_0x4a3df3[_0xd5a6('0x2f')]==='agent'){if(!_0x4a3df3[_0xd5a6('0x7b')])_0x4a3df3[_0xd5a6('0x7b')]=['101','102',_0xd5a6('0x7c'),_0xd5a6('0x7d'),_0xd5a6('0x7e'),_0xd5a6('0x7f'),_0xd5a6('0x80'),_0xd5a6('0x81'),'107',_0xd5a6('0x82'),_0xd5a6('0x83'),_0xd5a6('0x84'),_0xd5a6('0x85'),_0xd5a6('0x86'),_0xd5a6('0x87')];}_0xa96f13(_0x4a3df3);}catch(_0x3fe5c3){_0x3c817b(_0x3fe5c3);}});}exports['create']=function(_0x372376,_0x131bda){if(_0x372376[_0xd5a6('0x32')][_0xd5a6('0x2f')]==='agent')throw new Error('Unauthorized');if(_0x372376[_0xd5a6('0x6a')][_0xd5a6('0x2f')]===_0xd5a6('0x32')&&_0x372376[_0xd5a6('0x32')]['role']!==_0xd5a6('0x30')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x372376['body']['role']===_0xd5a6('0x30')&&_0x372376[_0xd5a6('0x32')]['role']!==_0xd5a6('0x30')){throw new Error(_0xd5a6('0x88'));}return licenseUtil['checkUserLimits']([_0x372376[_0xd5a6('0x6a')]])[_0xd5a6('0x2d')](function(){return validateUser(_0x372376[_0xd5a6('0x6a')]);})[_0xd5a6('0x2d')](function(_0x4e03ac){return updateUser(_0x4e03ac)[_0xd5a6('0x2d')](function(_0x3f2ad2){if(_0x3f2ad2[_0xd5a6('0x2f')]===_0xd5a6('0x30')){_0x3f2ad2['settingsEnabled']=_0x372376[_0xd5a6('0x32')][_0xd5a6('0x89')];delete _0x3f2ad2[_0xd5a6('0x8a')];}return _0x3f2ad2;});})[_0xd5a6('0x2d')](function(_0x17b258){return db['User']['create'](_0x17b258,{'include':[{'model':db['VoiceMail'],'as':_0xd5a6('0x8b')}]});})[_0xd5a6('0x2d')](function(_0x125f84){if(_0x372376[_0xd5a6('0x6a')][_0xd5a6('0x2f')]==='user')return _0x125f84;if(_0x372376['user'][_0xd5a6('0x2f')]!==_0xd5a6('0x32'))return _0x125f84;return db[_0xd5a6('0x8c')][_0xd5a6('0x67')]({'where':{'name':_0x125f84['role']===_0xd5a6('0x34')?_0xd5a6('0x33'):_0xd5a6('0x35'),'userProfileId':_0x372376[_0xd5a6('0x32')][_0xd5a6('0x8a')]},'raw':!![]})[_0xd5a6('0x2d')](function(_0x4ba9f8){if(!_0x4ba9f8||_0x4ba9f8[_0xd5a6('0x8d')]!=0x0)return _0x125f84;return db[_0xd5a6('0x3c')]['create']({'name':_0x125f84[_0xd5a6('0x3b')],'resourceId':_0x125f84['id'],'type':_0x4ba9f8[_0xd5a6('0x3b')],'sectionId':_0x4ba9f8['id']},{})[_0xd5a6('0x2d')](function(){return _0x125f84;});})['catch'](function(_0x502d58){logger[_0xd5a6('0x20')](_0xd5a6('0x8e'),_0x502d58);throw _0x502d58;});})[_0xd5a6('0x2d')](respondWithResult(_0x131bda,0xc9))[_0xd5a6('0x63')](handleError(_0x131bda,null));};exports[_0xd5a6('0x8f')]=function(_0x1a0bca,_0x5abecf){var _0x6ef917=_0x1a0bca[_0xd5a6('0x6a')];var _0x2e037f=[];if(_0x1a0bca[_0xd5a6('0x32')][_0xd5a6('0x2f')]==='agent')throw new Error('Unauthorized');if(_[_0xd5a6('0x90')](_0x6ef917,['role',_0xd5a6('0x32')])&&_0x1a0bca[_0xd5a6('0x32')][_0xd5a6('0x2f')]!==_0xd5a6('0x30')){throw new Error(_0xd5a6('0x91'));}if(_[_0xd5a6('0x90')](_0x6ef917,[_0xd5a6('0x2f'),_0xd5a6('0x30')])&&_0x1a0bca[_0xd5a6('0x32')][_0xd5a6('0x2f')]!==_0xd5a6('0x30')){throw new Error(_0xd5a6('0x92'));}return licenseUtil['checkUserLimits'](_0x6ef917)[_0xd5a6('0x2d')](function(){return validateUser(_0x6ef917[0x0]);})['then'](function(){for(var _0x55398b=0x1;_0x55398b<_0x6ef917[_0xd5a6('0x4e')];_0x55398b++){var _0x218f15=_0x6ef917[_0x55398b-0x1]['internal'];if(!_0x6ef917[_0x55398b][_0xd5a6('0x72')])_0x6ef917[_0x55398b][_0xd5a6('0x72')]=_0x218f15+0x1;_0x2e037f[_0xd5a6('0x58')](validateUser(_0x6ef917[_0x55398b]));}return BPromise['all'](_0x2e037f);})[_0xd5a6('0x2d')](function(){_0x2e037f=[];for(var _0x473c5b=0x0;_0x473c5b<_0x6ef917[_0xd5a6('0x4e')];_0x473c5b++){_0x2e037f[_0xd5a6('0x58')](updateUser(_0x6ef917[_0x473c5b]));}return BPromise[_0xd5a6('0x62')](_0x2e037f);})[_0xd5a6('0x2d')](function(){return BPromise[_0xd5a6('0x93')](_0x6ef917,function(_0x30a516){return db[_0xd5a6('0x40')]['create'](_0x30a516,{'include':[{'model':db['VoiceMail'],'as':_0xd5a6('0x8b')}]})[_0xd5a6('0x2d')](function(_0x5cbb7f){_0x30a516['id']=_0x5cbb7f['id'];return _0x30a516;});});})['then'](function(_0x426dba){if(_0x1a0bca[_0xd5a6('0x6a')][_0xd5a6('0x2f')]===_0xd5a6('0x32'))return _0x426dba;if(_0x1a0bca[_0xd5a6('0x32')][_0xd5a6('0x2f')]!==_0xd5a6('0x32'))return _0x426dba;var _0x3f11aa=_[_0xd5a6('0x90')](_0x426dba,function(_0x27ed36){return _0x27ed36[_0xd5a6('0x2f')]===_0xd5a6('0x34')||_0x27ed36['role']==='telephone';});if(!_0x3f11aa)return _0x426dba;return db[_0xd5a6('0x8c')][_0xd5a6('0x59')]({'where':{'name':{'$or':[_0xd5a6('0x33'),'Telephones']},'userProfileId':_0x1a0bca[_0xd5a6('0x32')]['userProfileId']},'raw':!![]})['then'](function(_0x525466){if(_[_0xd5a6('0x94')](_0x525466)||!_[_0xd5a6('0x90')](_0x525466,[_0xd5a6('0x8d'),0x0]))return _0x426dba;_0x2e037f=[];var _0x43b023=_(_0x525466)['map'](function(_0x5b510d){if(_0x5b510d[_0xd5a6('0x8d')]===0x1)return;return _0x5b510d['name']===_0xd5a6('0x33')?'agent':'telephone';})[_0xd5a6('0x95')]()[_0xd5a6('0x39')]();for(var _0x40722b=0x0;_0x40722b<_0x426dba['length'];_0x40722b++){if(!_[_0xd5a6('0x3a')](_0x43b023,_0x426dba[_0x40722b]['role']))return;var _0x500c61=_0x426dba[_0x40722b][_0xd5a6('0x2f')]===_0xd5a6('0x34')?_0xd5a6('0x33'):'Telephones';_0x2e037f[_0xd5a6('0x58')](db[_0xd5a6('0x3c')][_0xd5a6('0x96')]({'name':_0x426dba[_0x40722b][_0xd5a6('0x3b')],'resourceId':_0x426dba[_0x40722b]['id'],'type':_0x500c61,'sectionId':_[_0xd5a6('0x67')](_0x525466,['name',_0x500c61])['id']},{}));}return BPromise[_0xd5a6('0x62')](_0x2e037f);});})['then'](respondWithResult(_0x5abecf,0xc9))['catch'](handleError(_0x5abecf,null));};exports[_0xd5a6('0x97')]=function(_0x271f5c,_0x31e1e3,_0xf1f921){if(_0x271f5c['body']['id']){delete _0x271f5c[_0xd5a6('0x6a')]['id'];}return db['User']['find']({'where':{'id':_0x271f5c[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](function(_0x55197d){if(!_0x55197d)return null;if(_0x55197d['id']===_0x271f5c[_0xd5a6('0x32')]['id']){if(!_0x271f5c[_0xd5a6('0x6a')]['oldPassword']||!_0x271f5c[_0xd5a6('0x6a')]['newPassword']){throw new db[(_0xd5a6('0x98'))][(_0xd5a6('0x99'))](_0xd5a6('0x9a'));}if(!_0x55197d[_0xd5a6('0x9b')](_0x271f5c[_0xd5a6('0x6a')][_0xd5a6('0x9c')])){throw new db[(_0xd5a6('0x98'))][(_0xd5a6('0x99'))](_0xd5a6('0x9d'));}if(_0x271f5c[_0xd5a6('0x6a')][_0xd5a6('0x9c')]===_0x271f5c[_0xd5a6('0x6a')][_0xd5a6('0x9e')]){throw new db[(_0xd5a6('0x98'))][(_0xd5a6('0x99'))](_0xd5a6('0x9f'));}}else if(_0x271f5c[_0xd5a6('0x32')]['role']===_0xd5a6('0x30')){if(!_0x271f5c[_0xd5a6('0x6a')]['newPassword']){throw new db[(_0xd5a6('0x98'))][(_0xd5a6('0x99'))](_0xd5a6('0xa0'));}}else if(_0x271f5c[_0xd5a6('0x32')][_0xd5a6('0x2f')]===_0xd5a6('0x32')){if(!_0x271f5c['body'][_0xd5a6('0x9e')]){throw new db[(_0xd5a6('0x98'))][(_0xd5a6('0x99'))](_0xd5a6('0xa0'));}if(_0x55197d[_0xd5a6('0x2f')]!==_0xd5a6('0x34')){throw new db['Sequelize']['ValidationError'](_0xd5a6('0xa1'));}}else{throw new db[(_0xd5a6('0x98'))][(_0xd5a6('0x99'))](_0xd5a6('0xa1'));}return _0x55197d;})[_0xd5a6('0x2d')](handleEntityNotFound(_0x31e1e3,null))[_0xd5a6('0x2d')](function(_0x3c59c3){return db[_0xd5a6('0x6f')][_0xd5a6('0xa2')]({'attributes':['id',_0xd5a6('0x70'),_0xd5a6('0xa3'),_0xd5a6('0xa4')]})['then'](function(_0x259371){if(_0x259371[_0xd5a6('0x70')])authService[_0xd5a6('0x71')](_0x271f5c['body'][_0xd5a6('0x9e')]);if(!_0x259371['enforcePasswordHistory']||!_0x3c59c3['previousPasswords'])return _0x3c59c3;authService[_0xd5a6('0xa5')](_0x271f5c[_0xd5a6('0x6a')][_0xd5a6('0x9e')],_0x3c59c3[_0xd5a6('0xa6')],_0x259371['passwordHistoryLimit']);return _0x3c59c3;})[_0xd5a6('0x2d')](saveUpdates({'password':_0x271f5c['body']['newPassword'],'passwordResetAt':_0x271f5c[_0xd5a6('0x32')]['id']==_0x271f5c[_0xd5a6('0x65')]['id']?moment():null,'previousPasswords':authService[_0xd5a6('0xa7')](_0x271f5c['body']['newPassword'],_0x3c59c3['previousPasswords'])},null));})['then'](respondWithResult(_0x31e1e3,null))[_0xd5a6('0x63')](handleError(_0x31e1e3,null));};exports[_0xd5a6('0xa8')]=function(_0x197a60,_0x5a9390,_0x19cd6d){var _0x4b930b=_0x197a60[_0xd5a6('0x6a')][_0xd5a6('0xa9')];return db['User']['find']({'where':{'id':_0x197a60[_0xd5a6('0x65')]['id']},'attributes':['id',_0xd5a6('0x3b'),_0xd5a6('0x2f'),_0xd5a6('0xaa'),'loginInPause','voicePause',_0xd5a6('0xab')]})[_0xd5a6('0x2d')](handleEntityNotFound(_0x5a9390,null))[_0xd5a6('0x2d')](function(_0x536730){if(_0x536730){if(!utils[_0xd5a6('0xac')](_0x4b930b)){throw new db['Sequelize'][(_0xd5a6('0x99'))](_0xd5a6('0xad'));}return _0x536730[_0xd5a6('0xae')+_['capitalize'](_0x4b930b[_0xd5a6('0xaf')]())+_0xd5a6('0xb0')](_0x197a60[_0xd5a6('0x6a')][_0xd5a6('0x6d')],{'penalty':_0x197a60[_0xd5a6('0x6a')][_0xd5a6('0xb1')]||0x0})[_0xd5a6('0xb2')](function(_0x48bd7d){for(var _0x159808=0x0;_0x159808<_0x197a60[_0xd5a6('0x6a')][_0xd5a6('0x6d')][_0xd5a6('0x4e')];_0x159808+=0x1){var _0x5e082e={'UserId':Number(_0x197a60[_0xd5a6('0x65')]['id'])};_0x5e082e[_['capitalize'](_0x4b930b['toLowerCase']())+_0xd5a6('0xb3')]=Number(_0x197a60[_0xd5a6('0x6a')][_0xd5a6('0x6d')][_0x159808]);socket[_0xd5a6('0xb4')](_0xd5a6('0x32')+_[_0xd5a6('0xb5')](_0x4b930b[_0xd5a6('0xaf')]())+'Queue:save',_0x5e082e);}return _0x48bd7d;})[_0xd5a6('0x2d')](function(){if(_0x4b930b===_0xd5a6('0xb6')){return db[_0xd5a6('0xb7')]['findAll']({'where':{'id':_0x197a60['body'][_0xd5a6('0x6d')]||[]},'raw':!![],'attributes':['id',_0xd5a6('0x3b')]});}})[_0xd5a6('0x2d')](function(_0x12f038){var _0x469c7a=_0x536730['get']({'plain':!![]});var _0x1b208b=[];if(_0x4b930b==='voice'&&_0x469c7a[_0xd5a6('0x2f')]===_0xd5a6('0x34')&&_0x469c7a['online']){for(var _0x69a268=0x0;_0x69a268<_0x12f038[_0xd5a6('0x4e')];_0x69a268+=0x1){_0x1b208b[_0xd5a6('0x58')]({'membername':_0x469c7a['name'],'UserId':_0x469c7a['id'],'queue_name':_0x12f038[_0x69a268][_0xd5a6('0x3b')],'VoiceQueueId':_0x12f038[_0x69a268]['id'],'interface':_[_0xd5a6('0x74')](_0x469c7a['interface'])?util[_0xd5a6('0xb8')](_0xd5a6('0xb9'),_0x469c7a['name']):_0x469c7a['interface'],'paused':_0x469c7a[_0xd5a6('0xba')]||![],'penalty':_0x197a60['body']['penalty']||0x0});}return BPromise['each'](_0x1b208b,function(_0x410f71){return db[_0xd5a6('0xbb')][_0xd5a6('0xbc')](_0x410f71);});}return _0x536730;});}})['then'](respondWithStatusCode(_0x5a9390,null))[_0xd5a6('0x63')](handleError(_0x5a9390,null));};exports[_0xd5a6('0xbd')]=function(_0x33547d,_0xe3709e,_0x1cb633){var _0x31c3aa;return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x33547d[_0xd5a6('0x65')]['id']},'attributes':['id',_0xd5a6('0x3b'),_0xd5a6('0x2f')]})[_0xd5a6('0x2d')](handleEntityNotFound(_0xe3709e,null))['then'](function(_0x32edd5){if(_0x32edd5){_0x31c3aa=_0x32edd5;if(!_0x33547d[_0xd5a6('0x48')]['channel']||!utils[_0xd5a6('0xac')](_0x33547d[_0xd5a6('0x48')][_0xd5a6('0xa9')])){throw new db[(_0xd5a6('0x98'))][(_0xd5a6('0x99'))](_0xd5a6('0xad'));}return _0x32edd5['remove'+_[_0xd5a6('0xb5')](_0x33547d['query'][_0xd5a6('0xa9')][_0xd5a6('0xaf')]())+_0xd5a6('0xb0')](_0x33547d[_0xd5a6('0x48')][_0xd5a6('0x6d')]);}})[_0xd5a6('0x2d')](function(_0x348c49){for(var _0x4791e5=0x0;_0x4791e5<_0x33547d[_0xd5a6('0x48')][_0xd5a6('0x6d')][_0xd5a6('0x4e')];_0x4791e5+=0x1){var _0x16a658={'UserId':Number(_0x33547d[_0xd5a6('0x65')]['id'])};_0x16a658[_[_0xd5a6('0xb5')](_0x33547d['query'][_0xd5a6('0xa9')][_0xd5a6('0xaf')]())+'QueueId']=Number(_0x33547d[_0xd5a6('0x48')][_0xd5a6('0x6d')][_0x4791e5]);socket['emit'](_0xd5a6('0x32')+_[_0xd5a6('0xb5')](_0x33547d[_0xd5a6('0x48')][_0xd5a6('0xa9')][_0xd5a6('0xaf')]())+_0xd5a6('0xbe'),_0x16a658);}return _0x348c49;})[_0xd5a6('0x2d')](function(){if(_0x33547d[_0xd5a6('0x48')]['channel']===_0xd5a6('0xb6')){return db[_0xd5a6('0xbb')][_0xd5a6('0x2e')]({'where':{'UserId':_0x33547d[_0xd5a6('0x65')]['id'],'VoiceQueueId':_0x33547d[_0xd5a6('0x48')][_0xd5a6('0x6d')]},'individualHooks':!![]})[_0xd5a6('0x2d')](function(){return _0x31c3aa;});}return _0x31c3aa;})[_0xd5a6('0x2d')](respondWithStatusCode(_0xe3709e,null))['catch'](handleError(_0xe3709e,null));};exports[_0xd5a6('0xbf')]=function(_0x20f8d0,_0x28d4bd,_0x113408){_0x20f8d0[_0xd5a6('0x6a')]['userpic']=_0x20f8d0[_0xd5a6('0xc0')][_0xd5a6('0xc1')];return db['User'][_0xd5a6('0x67')]({'where':{'id':_0x20f8d0[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x28d4bd,null))[_0xd5a6('0x2d')](saveUpdates(_0x20f8d0[_0xd5a6('0x6a')],null))[_0xd5a6('0x2d')](respondWithResult(_0x28d4bd,null))[_0xd5a6('0x63')](handleError(_0x28d4bd,null));};exports[_0xd5a6('0xc2')]=function(_0x40f72e,_0x63f80e,_0x44b3d0){var _0x2606b3=path[_0xd5a6('0xc3')](config[_0xd5a6('0xc4')],_0xd5a6('0xc5'));return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x40f72e[_0xd5a6('0x65')]['id']},'attributes':['id',_0xd5a6('0xc6')],'raw':!![]})[_0xd5a6('0x2d')](handleEntityNotFound(_0x63f80e,null))['then'](function(_0x550f59){if(_0x550f59){if(_[_0xd5a6('0x74')](_0x550f59[_0xd5a6('0xc6')])){return _0x63f80e[_0xd5a6('0xc7')](_0x2606b3);}else{if(!fs[_0xd5a6('0xc8')](path['join'](config[_0xd5a6('0xc4')],_0xd5a6('0xc9'),_0x550f59['userpic']))){return _0x63f80e[_0xd5a6('0xc7')](_0x2606b3);}return _0x63f80e['download'](path['join'](config[_0xd5a6('0xc4')],_0xd5a6('0xc9'),_0x550f59[_0xd5a6('0xc6')]));}}})[_0xd5a6('0x63')](handleError(_0x63f80e,null));};exports[_0xd5a6('0xca')]=function(_0x2bbbd8,_0x2e319d,_0x55252b){return db[_0xd5a6('0x40')]['find']({'where':{'id':_0x2bbbd8['params']['id']},'attributes':['id']})[_0xd5a6('0x2d')](handleEntityNotFound(_0x2e319d,null))[_0xd5a6('0x2d')](function(_0xd3c52b){var _0x407d4a=[];values=_0xd3c52b['dataValues'];_0x407d4a['push'](get_open_tabs(_0xd5a6('0x5d'),_0xd3c52b[_0xd5a6('0x5e')]));_0x407d4a[_0xd5a6('0x58')](get_open_tabs(_0xd5a6('0x68'),_0xd3c52b[_0xd5a6('0x5e')]));_0x407d4a[_0xd5a6('0x58')](get_open_tabs(_0xd5a6('0x61'),_0xd3c52b[_0xd5a6('0x5e')]));_0x407d4a[_0xd5a6('0x58')](get_open_tabs(_0xd5a6('0x69'),_0xd3c52b[_0xd5a6('0x5e')]));_0x407d4a[_0xd5a6('0x58')](get_open_tabs(_0xd5a6('0x5f'),_0xd3c52b['dataValues']));_0x407d4a[_0xd5a6('0x58')](get_open_tabs(_0xd5a6('0x60'),_0xd3c52b[_0xd5a6('0x5e')]));return BPromise[_0xd5a6('0x62')](_0x407d4a);})[_0xd5a6('0x2d')](function(_0x274e73){var _0x5e82a1=[];if(_0x274e73){for(var _0xf13121=0x0;_0xf13121<values[_0xd5a6('0xcb')][_0xd5a6('0x4e')];_0xf13121++){var _0x36938e=values['ChatOpenTabs'][_0xf13121];_0x5e82a1['push']({'channel':_0xd5a6('0xcc'),'id':_0x36938e['id'],'createdAt':_0x36938e[_0xd5a6('0xcd')]});}for(var _0xf13121=0x0;_0xf13121<values[_0xd5a6('0xce')][_0xd5a6('0x4e')];_0xf13121++){var _0x36938e=values[_0xd5a6('0xce')][_0xf13121];_0x5e82a1['push']({'channel':'FAX','id':_0x36938e['id'],'createdAt':_0x36938e[_0xd5a6('0xcd')]});}for(var _0xf13121=0x0;_0xf13121<values[_0xd5a6('0xcf')]['length'];_0xf13121++){var _0x36938e=values[_0xd5a6('0xcf')][_0xf13121];_0x5e82a1[_0xd5a6('0x58')]({'channel':'OPENCHANNEL','id':_0x36938e['id'],'createdAt':_0x36938e['createdAt']});}for(var _0xf13121=0x0;_0xf13121<values[_0xd5a6('0xd0')][_0xd5a6('0x4e')];_0xf13121++){var _0x36938e=values[_0xd5a6('0xd0')][_0xf13121];_0x5e82a1[_0xd5a6('0x58')]({'channel':_0xd5a6('0xd1'),'id':_0x36938e['id'],'createdAt':_0x36938e[_0xd5a6('0xcd')]});}for(var _0xf13121=0x0;_0xf13121<values[_0xd5a6('0xd2')]['length'];_0xf13121++){var _0x36938e=values['SmsOpenTabs'][_0xf13121];_0x5e82a1[_0xd5a6('0x58')]({'channel':_0xd5a6('0xd3'),'id':_0x36938e['id'],'createdAt':_0x36938e[_0xd5a6('0xcd')]});}for(var _0xf13121=0x0;_0xf13121<values[_0xd5a6('0xd4')]['length'];_0xf13121++){var _0x36938e=values['WhatsappOpenTabs'][_0xf13121];_0x5e82a1[_0xd5a6('0x58')]({'channel':'WHATSAPP','id':_0x36938e['id'],'createdAt':_0x36938e[_0xd5a6('0xcd')]});}var _0x298017={'count':_0x5e82a1[_0xd5a6('0x4e')],'rows':_0x5e82a1};return _0x298017;}else return null;})[_0xd5a6('0x2d')](respondWithResult(_0x2e319d,null))[_0xd5a6('0x63')](handleError(_0x2e319d,null));};exports[_0xd5a6('0xd5')]=function(_0x441766,_0x243503,_0x440afa){var _0x23db1e={};var _0x39e346={};var _0x39efc4;var _0x3e3242;return db[_0xd5a6('0x40')]['findOne']({'where':{'id':_0x441766['params']['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x243503,null))[_0xd5a6('0x2d')](function(_0x4b9d03){if(_0x4b9d03){_0x39efc4=_0x4b9d03;_0x39e346[_0xd5a6('0x44')]=_[_0xd5a6('0x49')](db[_0xd5a6('0xd6')][_0xd5a6('0x41')]);_0x39e346[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x441766[_0xd5a6('0x48')]);_0x39e346['filters']=_['intersection'](_0x39e346[_0xd5a6('0x44')],_0x39e346['query']);_0x23db1e[_0xd5a6('0x4d')]=_['intersection'](_0x39e346[_0xd5a6('0x44')],qs['fields'](_0x441766[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x23db1e[_0xd5a6('0x4d')]=_0x23db1e[_0xd5a6('0x4d')]['length']?_0x23db1e[_0xd5a6('0x4d')]:_0x39e346['model'];_0x23db1e[_0xd5a6('0xd7')]=qs['sort'](_0x441766[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x23db1e[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_['pick'](_0x441766[_0xd5a6('0x48')],_0x39e346[_0xd5a6('0x4a')]));if(_0x441766[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x23db1e[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x23db1e['where'],{'$or':_[_0xd5a6('0x38')](_0x23db1e[_0xd5a6('0x4d')],function(_0x5d2f12){var _0x9d75ca={};_0x9d75ca[_0x5d2f12]={'$like':'%'+_0x441766[_0xd5a6('0x48')]['filter']+'%'};return _0x9d75ca;})});}_0x23db1e=_[_0xd5a6('0x66')]({},_0x23db1e,_0x441766[_0xd5a6('0x56')]);return _0x39efc4['getContacts'](_0x23db1e);}})[_0xd5a6('0x2d')](function(_0x4d2441){if(_0x4d2441){_0x3e3242=_0x4d2441[_0xd5a6('0x4e')];if(_0x441766[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0xd9'))){_0x23db1e['include']=[{'model':db[_0xd5a6('0xda')],'as':_0xd5a6('0xdb'),'required':![]},{'model':db[_0xd5a6('0xdc')],'as':_0xd5a6('0xdd'),'attributes':['id',_0xd5a6('0x3b'),_0xd5a6('0xde')],'where':_0x441766['query']['tag']?{'id':_0x441766['query'][_0xd5a6('0xdf')]}:undefined,'required':_0x441766[_0xd5a6('0x48')][_0xd5a6('0xdf')]?!![]:![]}];}if(!_0x441766[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x23db1e['limit']=qs['limit'](_0x441766[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x23db1e[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x441766[_0xd5a6('0x48')]['offset']);}return _0x39efc4[_0xd5a6('0xd5')](_0x23db1e);}})['then'](function(_0x11b274){if(_0x11b274){return _0x11b274?{'count':_0x3e3242,'rows':_0x11b274}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x243503,null))[_0xd5a6('0x63')](handleError(_0x243503,null));};exports[_0xd5a6('0xe0')]=function(_0x3ba737,_0x39574c,_0x391955){var _0x5f1fb3;var _0x4aba3c;var _0x1abbf8={};var _0x30af3a;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x3ba737[_0xd5a6('0x65')]['id']},'attributes':['id','name',_0xd5a6('0x2f')]})[_0xd5a6('0x2d')](handleEntityNotFound(_0x39574c,null))[_0xd5a6('0x2d')](function(_0x25c48d){if(!utils[_0xd5a6('0xac')](_0x3ba737[_0xd5a6('0x48')]['channel'])){throw new db[(_0xd5a6('0x98'))][(_0xd5a6('0x99'))](_0xd5a6('0xad'));}_0x5f1fb3=_0x25c48d;var _0x28d44c={};_0x28d44c[_0xd5a6('0x44')]=_[_0xd5a6('0x49')](db[_[_0xd5a6('0xb5')](_0x3ba737[_0xd5a6('0x48')]['channel'])+_0xd5a6('0xe1')]['rawAttributes']);_0x28d44c[_0xd5a6('0x48')]=_['keys'](_0x3ba737[_0xd5a6('0x48')]);_0x28d44c[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x28d44c[_0xd5a6('0x44')],_0x28d44c[_0xd5a6('0x48')]);_0x1abbf8[_0xd5a6('0x4d')]=_['intersection'](_0x28d44c['model'],qs['fields'](_0x3ba737['query'][_0xd5a6('0x4c')]));_0x1abbf8['attributes']=_0x1abbf8[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x1abbf8['attributes']:_0x28d44c[_0xd5a6('0x44')];_0x1abbf8['order']=qs[_0xd5a6('0x50')](_0x3ba737[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x1abbf8[_0xd5a6('0x51')]=qs['filters'](_[_0xd5a6('0xe2')](_0x3ba737[_0xd5a6('0x48')],_0x28d44c[_0xd5a6('0x4a')]));if(_0x3ba737[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x1abbf8['where']=_[_0xd5a6('0x66')](_0x1abbf8[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x1abbf8[_0xd5a6('0x4d')],function(_0x455081){var _0x17001b={};_0x17001b[_0x455081]={'$like':'%'+_0x3ba737['query']['filter']+'%'};return _0x17001b;})});}_0x1abbf8=_['merge']({},_0x1abbf8,_0x3ba737[_0xd5a6('0x56')]);switch(_0x5f1fb3['role']){case _0xd5a6('0x30'):return db[_[_0xd5a6('0xb5')](_0x3ba737['query'][_0xd5a6('0xa9')])+_0xd5a6('0xe1')]['findAll'](_0x1abbf8);case _0xd5a6('0x32'):case _0xd5a6('0x34'):return _0x5f1fb3[_0xd5a6('0xe3')+_['capitalize'](_0x3ba737[_0xd5a6('0x48')][_0xd5a6('0xa9')])+_0xd5a6('0xb0')](_0x1abbf8);default:throw new db[(_0xd5a6('0x98'))][(_0xd5a6('0x99'))](_0xd5a6('0xe4'));}})['then'](function(_0x242735){_0x30af3a=_0x242735[_0xd5a6('0x4e')];if(!_0x3ba737[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x1abbf8[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x3ba737[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x1abbf8[_0xd5a6('0x27')]=qs['offset'](_0x3ba737[_0xd5a6('0x48')][_0xd5a6('0x27')]);}switch(_0x5f1fb3[_0xd5a6('0x2f')]){case _0xd5a6('0x30'):return db[_[_0xd5a6('0xb5')](_0x3ba737['query'][_0xd5a6('0xa9')])+_0xd5a6('0xe1')][_0xd5a6('0x59')](_0x1abbf8);case _0xd5a6('0x32'):case'agent':return _0x5f1fb3['get'+_[_0xd5a6('0xb5')](_0x3ba737[_0xd5a6('0x48')]['channel'])+_0xd5a6('0xb0')](_0x1abbf8);}})[_0xd5a6('0x2d')](function(_0x1ded1f){return{'count':_0x30af3a,'rows':_0x1ded1f};})[_0xd5a6('0x2d')](respondWithResult(_0x39574c,null))[_0xd5a6('0x63')](handleError(_0x39574c,null));};exports[_0xd5a6('0xe5')]=function(_0xb3e355,_0x55e871,_0x18f99a){var _0x4cba51={};var _0x361ad8={};var _0x109f21;var _0xf53ff6;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0xb3e355['params']['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x55e871,null))[_0xd5a6('0x2d')](function(_0x4b590a){if(_0x4b590a){_0x109f21=_0x4b590a;_0x361ad8['model']=_['keys'](db['UserVoiceQueueRt']['rawAttributes']);_0x361ad8[_0xd5a6('0x48')]=_['keys'](_0xb3e355[_0xd5a6('0x48')]);_0x361ad8[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x361ad8['model'],_0x361ad8[_0xd5a6('0x48')]);_0x4cba51['attributes']=_[_0xd5a6('0x4b')](_0x361ad8['model'],qs[_0xd5a6('0x4c')](_0xb3e355[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x4cba51[_0xd5a6('0x4d')]=_0x4cba51['attributes']['length']?_0x4cba51['attributes']:_0x361ad8[_0xd5a6('0x44')];_0x4cba51[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0xb3e355[_0xd5a6('0x48')]['sort']);_0x4cba51[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_['pick'](_0xb3e355[_0xd5a6('0x48')],_0x361ad8[_0xd5a6('0x4a')]));if(_0xb3e355[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x4cba51[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x4cba51[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x4cba51[_0xd5a6('0x4d')],function(_0xd9cd5f){var _0x2d298c={};_0x2d298c[_0xd9cd5f]={'$like':'%'+_0xb3e355[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x2d298c;})});}_0x4cba51=_[_0xd5a6('0x66')]({},_0x4cba51,_0xb3e355[_0xd5a6('0x56')]);return _0x109f21[_0xd5a6('0xe5')](_0x4cba51);}})['then'](function(_0x233fe7){if(_0x233fe7){_0xf53ff6=_0x233fe7[_0xd5a6('0x4e')];if(!_0xb3e355[_0xd5a6('0x48')]['hasOwnProperty'](_0xd5a6('0x4f'))){_0x4cba51[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0xb3e355[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x4cba51['offset']=qs[_0xd5a6('0x27')](_0xb3e355['query'][_0xd5a6('0x27')]);}return _0x109f21[_0xd5a6('0xe5')](_0x4cba51);}})[_0xd5a6('0x2d')](function(_0x35d4fe){if(_0x35d4fe){return _0x35d4fe?{'count':_0xf53ff6,'rows':_0x35d4fe}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x55e871,null))[_0xd5a6('0x63')](handleError(_0x55e871,null));};exports[_0xd5a6('0xe6')]=function(_0x56e309,_0x3b6b2a,_0x467956){var _0x3dd0f6={};var _0x3f991e={};var _0x2884f4;var _0x210455;return db[_0xd5a6('0x40')]['findOne']({'where':{'id':_0x56e309[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x3b6b2a,null))[_0xd5a6('0x2d')](function(_0x19084b){if(_0x19084b){_0x2884f4=_0x19084b;_0x3f991e[_0xd5a6('0x44')]=_[_0xd5a6('0x49')](db['ChatGroup']['rawAttributes']);_0x3f991e[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x56e309[_0xd5a6('0x48')]);_0x3f991e['filters']=_[_0xd5a6('0x4b')](_0x3f991e['model'],_0x3f991e['query']);_0x3dd0f6['attributes']=_[_0xd5a6('0x4b')](_0x3f991e[_0xd5a6('0x44')],qs['fields'](_0x56e309[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x3dd0f6[_0xd5a6('0x4d')]=_0x3dd0f6[_0xd5a6('0x4d')]['length']?_0x3dd0f6[_0xd5a6('0x4d')]:_0x3f991e['model'];_0x3dd0f6[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x56e309[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x3dd0f6[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_['pick'](_0x56e309[_0xd5a6('0x48')],_0x3f991e[_0xd5a6('0x4a')]));if(_0x56e309[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x3dd0f6[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x3dd0f6[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x3dd0f6['attributes'],function(_0x8b8dfb){var _0x2ca175={};_0x2ca175[_0x8b8dfb]={'$like':'%'+_0x56e309[_0xd5a6('0x48')]['filter']+'%'};return _0x2ca175;})});}_0x3dd0f6=_[_0xd5a6('0x66')]({},_0x3dd0f6,_0x56e309[_0xd5a6('0x56')]);return _0x2884f4[_0xd5a6('0xe6')](_0x3dd0f6);}})[_0xd5a6('0x2d')](function(_0x582999){if(_0x582999){_0x210455=_0x582999[_0xd5a6('0x4e')];if(!_0x56e309[_0xd5a6('0x48')][_0xd5a6('0xd8')]('nolimit')){_0x3dd0f6[_0xd5a6('0x2a')]=qs['limit'](_0x56e309[_0xd5a6('0x48')]['limit']);_0x3dd0f6[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x56e309[_0xd5a6('0x48')]['offset']);}return _0x2884f4[_0xd5a6('0xe6')](_0x3dd0f6);}})[_0xd5a6('0x2d')](function(_0x1d55a2){if(_0x1d55a2){return _0x1d55a2?{'count':_0x210455,'rows':_0x1d55a2}:null;}})['then'](respondWithResult(_0x3b6b2a,null))[_0xd5a6('0x63')](handleError(_0x3b6b2a,null));};exports['getRecordings']=function(_0x5c9574,_0x3fdbf0,_0x44d565){var _0x8baaf5={'raw':!![],'where':{}};var _0x5e35bb={};var _0x4b9120={'count':0x0,'rows':[]};return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x5c9574['params']['id']}})['then'](handleEntityNotFound(_0x3fdbf0,null))[_0xd5a6('0x2d')](function(_0x534e25){if(_0x534e25){_0x5e35bb['model']=_['keys'](db['VoiceRecording'][_0xd5a6('0x41')]);_0x5e35bb[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x5c9574[_0xd5a6('0x48')]);_0x5e35bb[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x5e35bb[_0xd5a6('0x44')],_0x5e35bb[_0xd5a6('0x48')]);_0x8baaf5[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x5e35bb[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x5c9574['query'][_0xd5a6('0x4c')]));_0x8baaf5[_0xd5a6('0x4d')]=_0x8baaf5['attributes']['length']?_0x8baaf5[_0xd5a6('0x4d')]:_0x5e35bb['model'];if(!_0x5c9574[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x8baaf5[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x5c9574[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x8baaf5[_0xd5a6('0x27')]=qs['offset'](_0x5c9574[_0xd5a6('0x48')][_0xd5a6('0x27')]);}_0x8baaf5[_0xd5a6('0xd7')]=qs['sort'](_0x5c9574[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x8baaf5[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_[_0xd5a6('0xe2')](_0x5c9574[_0xd5a6('0x48')],_0x5e35bb[_0xd5a6('0x4a')]));_0x8baaf5[_0xd5a6('0x51')][_0xd5a6('0xe7')]=_0x534e25['id'];if(_0x5c9574[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x8baaf5['where']=_['merge'](_0x8baaf5[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x8baaf5[_0xd5a6('0x4d')],function(_0x527787){var _0x4a065d={};_0x4a065d[_0x527787]={'$like':'%'+_0x5c9574[_0xd5a6('0x48')]['filter']+'%'};return _0x4a065d;})});}_0x8baaf5=_[_0xd5a6('0x66')]({},_0x8baaf5,_0x5c9574[_0xd5a6('0x56')]);return db[_0xd5a6('0xe8')][_0xd5a6('0x29')]({'where':_0x8baaf5[_0xd5a6('0x51')]})[_0xd5a6('0x2d')](function(_0x11c165){_0x4b9120[_0xd5a6('0x29')]=_0x11c165;if(_0x5c9574[_0xd5a6('0x48')][_0xd5a6('0xd9')]){_0x8baaf5[_0xd5a6('0x57')]=[{'all':!![]}];}return db['VoiceRecording']['findAll'](_0x8baaf5);})[_0xd5a6('0x2d')](function(_0x3a2bc9){_0x4b9120[_0xd5a6('0x5a')]=_0x3a2bc9;return _0x4b9120;});}})[_0xd5a6('0x2d')](respondWithFilteredResult(_0x3fdbf0,_0x8baaf5))[_0xd5a6('0x63')](handleError(_0x3fdbf0,null));};exports[_0xd5a6('0xe9')]=function(_0xbf6aa8,_0x4af2e9,_0x3b66c4){var _0x52f92d={'raw':!![],'where':{}};var _0x550628={};var _0x3648a0={'count':0x0,'rows':[]};return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0xbf6aa8['params']['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x4af2e9,null))['then'](function(_0x1cd84a){if(_0x1cd84a){_0x550628['model']=_[_0xd5a6('0x49')](db['ScreenRecording']['rawAttributes']);_0x550628[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0xbf6aa8['query']);_0x550628[_0xd5a6('0x4a')]=_['intersection'](_0x550628[_0xd5a6('0x44')],_0x550628[_0xd5a6('0x48')]);_0x52f92d[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x550628[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0xbf6aa8[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x52f92d[_0xd5a6('0x4d')]=_0x52f92d[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x52f92d['attributes']:_0x550628['model'];if(!_0xbf6aa8[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x52f92d['limit']=qs['limit'](_0xbf6aa8[_0xd5a6('0x48')]['limit']);_0x52f92d[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0xbf6aa8['query'][_0xd5a6('0x27')]);}_0x52f92d[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0xbf6aa8[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x52f92d[_0xd5a6('0x51')]=qs['filters'](_[_0xd5a6('0xe2')](_0xbf6aa8[_0xd5a6('0x48')],_0x550628[_0xd5a6('0x4a')]));_0x52f92d['where']['UserId']=_0x1cd84a['id'];if(_0xbf6aa8[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x52f92d[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x52f92d[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x52f92d[_0xd5a6('0x4d')],function(_0x20edfe){var _0x40bf7a={};_0x40bf7a[_0x20edfe]={'$like':'%'+_0xbf6aa8[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x40bf7a;})});}_0x52f92d=_[_0xd5a6('0x66')]({},_0x52f92d,_0xbf6aa8[_0xd5a6('0x56')]);return db[_0xd5a6('0xea')][_0xd5a6('0x29')]({'where':_0x52f92d[_0xd5a6('0x51')]})['then'](function(_0x1c957e){_0x3648a0['count']=_0x1c957e;if(_0xbf6aa8[_0xd5a6('0x48')][_0xd5a6('0xd9')]){_0x52f92d[_0xd5a6('0x57')]=[{'all':!![]}];}return db[_0xd5a6('0xea')][_0xd5a6('0x59')](_0x52f92d);})[_0xd5a6('0x2d')](function(_0x1c4f28){_0x3648a0['rows']=_0x1c4f28;return _0x3648a0;});}})[_0xd5a6('0x2d')](respondWithFilteredResult(_0x4af2e9,_0x52f92d))[_0xd5a6('0x63')](handleError(_0x4af2e9,null));};exports[_0xd5a6('0xeb')]=function(_0x231024,_0x5f463c,_0x58a177){var _0x4edc8c={};var _0x13851b={};var _0x9e9e23;var _0x3c6fa5;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x231024['params']['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x5f463c,null))[_0xd5a6('0x2d')](function(_0x3d4bba){if(_0x3d4bba){_0x9e9e23=_0x3d4bba;_0x13851b[_0xd5a6('0x44')]=_['keys'](db[_0xd5a6('0xec')][_0xd5a6('0x41')]);_0x13851b['query']=_[_0xd5a6('0x49')](_0x231024[_0xd5a6('0x48')]);_0x13851b['filters']=_[_0xd5a6('0x4b')](_0x13851b['model'],_0x13851b[_0xd5a6('0x48')]);_0x4edc8c[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x13851b[_0xd5a6('0x44')],qs['fields'](_0x231024[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x4edc8c['attributes']=_0x4edc8c[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x4edc8c[_0xd5a6('0x4d')]:_0x13851b['model'];_0x4edc8c[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x231024[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x4edc8c[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_[_0xd5a6('0xe2')](_0x231024['query'],_0x13851b[_0xd5a6('0x4a')]));if(_0x231024['query'][_0xd5a6('0x36')]){_0x4edc8c[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x4edc8c[_0xd5a6('0x51')],{'$or':_['map'](_0x4edc8c[_0xd5a6('0x4d')],function(_0x24ff59){var _0x56c96a={};_0x56c96a[_0x24ff59]={'$like':'%'+_0x231024['query']['filter']+'%'};return _0x56c96a;})});}_0x4edc8c=_[_0xd5a6('0x66')]({},_0x4edc8c,_0x231024[_0xd5a6('0x56')]);return _0x9e9e23[_0xd5a6('0xeb')](_0x4edc8c);}})[_0xd5a6('0x2d')](function(_0x119547){if(_0x119547){_0x3c6fa5=_0x119547[_0xd5a6('0x4e')];if(!_0x231024[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x4edc8c[_0xd5a6('0x2a')]=qs['limit'](_0x231024['query'][_0xd5a6('0x2a')]);_0x4edc8c[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x231024['query']['offset']);}return _0x9e9e23[_0xd5a6('0xeb')](_0x4edc8c);}})[_0xd5a6('0x2d')](function(_0xfb3279){if(_0xfb3279){return _0xfb3279?{'count':_0x3c6fa5,'rows':_0xfb3279}:null;}})['then'](respondWithResult(_0x5f463c,null))[_0xd5a6('0x63')](handleError(_0x5f463c,null));};exports[_0xd5a6('0xed')]=function(_0x59fe56,_0x515d8a,_0x432243){var _0x4a5e99={};var _0x48169a={};var _0x1904e4;var _0x2ccdc5;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x59fe56[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x515d8a,null))[_0xd5a6('0x2d')](function(_0x2c1419){if(_0x2c1419){_0x1904e4=_0x2c1419;_0x48169a[_0xd5a6('0x44')]=_[_0xd5a6('0x49')](db[_0xd5a6('0xee')][_0xd5a6('0x41')]);_0x48169a[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x59fe56['query']);_0x48169a['filters']=_[_0xd5a6('0x4b')](_0x48169a[_0xd5a6('0x44')],_0x48169a[_0xd5a6('0x48')]);_0x4a5e99['attributes']=_['intersection'](_0x48169a[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x59fe56[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x4a5e99['attributes']=_0x4a5e99['attributes'][_0xd5a6('0x4e')]?_0x4a5e99[_0xd5a6('0x4d')]:_0x48169a[_0xd5a6('0x44')];_0x4a5e99[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x59fe56[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x4a5e99[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_[_0xd5a6('0xe2')](_0x59fe56[_0xd5a6('0x48')],_0x48169a[_0xd5a6('0x4a')]));if(_0x59fe56[_0xd5a6('0x48')]['filter']){_0x4a5e99[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x4a5e99[_0xd5a6('0x51')],{'$or':_['map'](_0x4a5e99[_0xd5a6('0x4d')],function(_0x2b421b){var _0x358e81={};_0x358e81[_0x2b421b]={'$like':'%'+_0x59fe56[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x358e81;})});}_0x4a5e99=_['merge']({},_0x4a5e99,_0x59fe56['options']);return _0x1904e4[_0xd5a6('0xed')](_0x4a5e99);}})[_0xd5a6('0x2d')](function(_0x1ba451){if(_0x1ba451){_0x2ccdc5=_0x1ba451[_0xd5a6('0x4e')];if(!_0x59fe56[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x4a5e99[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x59fe56['query'][_0xd5a6('0x2a')]);_0x4a5e99[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x59fe56[_0xd5a6('0x48')][_0xd5a6('0x27')]);}return _0x1904e4['getOpenchannelInteractions'](_0x4a5e99);}})[_0xd5a6('0x2d')](function(_0x148899){if(_0x148899){return _0x148899?{'count':_0x2ccdc5,'rows':_0x148899}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x515d8a,null))[_0xd5a6('0x63')](handleError(_0x515d8a,null));};exports['getMailInteractions']=function(_0x1e5b62,_0xd0d6eb,_0x5cad66){var _0x50ebd2={'raw':!![],'where':{}};var _0x43e7e2={};var _0x5a6615={'count':0x0,'rows':[]};return db[_0xd5a6('0x40')]['findOne']({'where':{'id':_0x1e5b62['params']['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0xd0d6eb,null))[_0xd5a6('0x2d')](function(_0x17db7e){if(_0x17db7e){_0x43e7e2['model']=_[_0xd5a6('0x49')](db[_0xd5a6('0xef')][_0xd5a6('0x41')]);_0x43e7e2[_0xd5a6('0x48')]=_['keys'](_0x1e5b62[_0xd5a6('0x48')]);_0x43e7e2[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x43e7e2[_0xd5a6('0x44')],_0x43e7e2[_0xd5a6('0x48')]);_0x50ebd2[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x43e7e2[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x1e5b62[_0xd5a6('0x48')]['fields']));_0x50ebd2[_0xd5a6('0x4d')]=_0x50ebd2[_0xd5a6('0x4d')]['length']?_0x50ebd2[_0xd5a6('0x4d')]:_0x43e7e2[_0xd5a6('0x44')];if(!_0x1e5b62[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x50ebd2['limit']=qs[_0xd5a6('0x2a')](_0x1e5b62[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x50ebd2[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x1e5b62[_0xd5a6('0x48')][_0xd5a6('0x27')]);}_0x50ebd2[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x1e5b62[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x50ebd2[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_['pick'](_0x1e5b62[_0xd5a6('0x48')],_0x43e7e2[_0xd5a6('0x4a')]));_0x50ebd2[_0xd5a6('0x51')][_0xd5a6('0xe7')]=_0x17db7e['id'];if(_0x1e5b62['query'][_0xd5a6('0x36')]){_0x50ebd2[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x50ebd2['where'],{'$or':_[_0xd5a6('0x38')](_0x50ebd2[_0xd5a6('0x4d')],function(_0x1f36ef){var _0x276486={};_0x276486[_0x1f36ef]={'$like':'%'+_0x1e5b62['query'][_0xd5a6('0x36')]+'%'};return _0x276486;})});}_0x50ebd2=_[_0xd5a6('0x66')]({},_0x50ebd2,_0x1e5b62[_0xd5a6('0x56')]);return db[_0xd5a6('0xef')]['count']({'where':_0x50ebd2[_0xd5a6('0x51')]})[_0xd5a6('0x2d')](function(_0x4a03a4){_0x5a6615[_0xd5a6('0x29')]=_0x4a03a4;if(_0x1e5b62[_0xd5a6('0x48')][_0xd5a6('0xd9')]){_0x50ebd2['include']=[{'all':!![]}];}return db['MailInteraction']['findAll'](_0x50ebd2);})[_0xd5a6('0x2d')](function(_0x5ccc1a){_0x5a6615['rows']=_0x5ccc1a;return _0x5a6615;});}})[_0xd5a6('0x2d')](respondWithFilteredResult(_0xd0d6eb,_0x50ebd2))[_0xd5a6('0x63')](handleError(_0xd0d6eb,null));};exports['getSmsInteractions']=function(_0x5a041d,_0x35249e,_0x6830bf){var _0x26b3de={};var _0x356018={};var _0x1a1cd9;var _0x2a64cd;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x5a041d[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x35249e,null))[_0xd5a6('0x2d')](function(_0x5b961a){if(_0x5b961a){_0x1a1cd9=_0x5b961a;_0x356018[_0xd5a6('0x44')]=_['keys'](db[_0xd5a6('0xf0')][_0xd5a6('0x41')]);_0x356018[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x5a041d['query']);_0x356018[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x356018[_0xd5a6('0x44')],_0x356018[_0xd5a6('0x48')]);_0x26b3de[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x356018['model'],qs[_0xd5a6('0x4c')](_0x5a041d['query']['fields']));_0x26b3de[_0xd5a6('0x4d')]=_0x26b3de[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x26b3de['attributes']:_0x356018[_0xd5a6('0x44')];_0x26b3de[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x5a041d[_0xd5a6('0x48')]['sort']);_0x26b3de[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_['pick'](_0x5a041d[_0xd5a6('0x48')],_0x356018[_0xd5a6('0x4a')]));if(_0x5a041d[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x26b3de[_0xd5a6('0x51')]=_['merge'](_0x26b3de[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x26b3de[_0xd5a6('0x4d')],function(_0x499c25){var _0x533ab0={};_0x533ab0[_0x499c25]={'$like':'%'+_0x5a041d[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x533ab0;})});}_0x26b3de=_[_0xd5a6('0x66')]({},_0x26b3de,_0x5a041d[_0xd5a6('0x56')]);return _0x1a1cd9[_0xd5a6('0xf1')](_0x26b3de);}})[_0xd5a6('0x2d')](function(_0x4493a6){if(_0x4493a6){_0x2a64cd=_0x4493a6['length'];if(!_0x5a041d['query']['hasOwnProperty'](_0xd5a6('0x4f'))){_0x26b3de[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x5a041d[_0xd5a6('0x48')]['limit']);_0x26b3de['offset']=qs['offset'](_0x5a041d[_0xd5a6('0x48')][_0xd5a6('0x27')]);}return _0x1a1cd9['getSmsInteractions'](_0x26b3de);}})[_0xd5a6('0x2d')](function(_0x43e4a9){if(_0x43e4a9){return _0x43e4a9?{'count':_0x2a64cd,'rows':_0x43e4a9}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x35249e,null))[_0xd5a6('0x63')](handleError(_0x35249e,null));};exports[_0xd5a6('0xf2')]=function(_0x3db238,_0x432903,_0x4e6342){var _0x20d8f4={};var _0x15ef1c={};var _0x133812;var _0x1aabd0;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x3db238['params']['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x432903,null))['then'](function(_0x276ccd){if(_0x276ccd){_0x133812=_0x276ccd;_0x15ef1c[_0xd5a6('0x44')]=_[_0xd5a6('0x49')](db[_0xd5a6('0xf3')][_0xd5a6('0x41')]);_0x15ef1c[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x3db238[_0xd5a6('0x48')]);_0x15ef1c[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x15ef1c[_0xd5a6('0x44')],_0x15ef1c['query']);_0x20d8f4[_0xd5a6('0x4d')]=_['intersection'](_0x15ef1c[_0xd5a6('0x44')],qs['fields'](_0x3db238['query'][_0xd5a6('0x4c')]));_0x20d8f4[_0xd5a6('0x4d')]=_0x20d8f4[_0xd5a6('0x4d')]['length']?_0x20d8f4[_0xd5a6('0x4d')]:_0x15ef1c['model'];_0x20d8f4[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x3db238['query'][_0xd5a6('0x50')]);_0x20d8f4[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_['pick'](_0x3db238[_0xd5a6('0x48')],_0x15ef1c[_0xd5a6('0x4a')]));if(_0x3db238[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x20d8f4[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x20d8f4['where'],{'$or':_[_0xd5a6('0x38')](_0x20d8f4['attributes'],function(_0x30fed9){var _0x25f183={};_0x25f183[_0x30fed9]={'$like':'%'+_0x3db238[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x25f183;})});}_0x20d8f4=_[_0xd5a6('0x66')]({},_0x20d8f4,_0x3db238[_0xd5a6('0x56')]);return _0x133812['getFaxInteractions'](_0x20d8f4);}})[_0xd5a6('0x2d')](function(_0x57bb8b){if(_0x57bb8b){_0x1aabd0=_0x57bb8b['length'];if(!_0x3db238[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x20d8f4['limit']=qs[_0xd5a6('0x2a')](_0x3db238[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x20d8f4[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x3db238['query'][_0xd5a6('0x27')]);}return _0x133812[_0xd5a6('0xf2')](_0x20d8f4);}})[_0xd5a6('0x2d')](function(_0x2b3422){if(_0x2b3422){return _0x2b3422?{'count':_0x1aabd0,'rows':_0x2b3422}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x432903,null))[_0xd5a6('0x63')](handleError(_0x432903,null));};exports[_0xd5a6('0xf4')]=function(_0x43a829,_0x231ce1,_0x11b312){var _0x200265={};var _0x17a580={};var _0x48d76;var _0xb43ee1;return db['User'][_0xd5a6('0xa2')]({'where':{'id':_0x43a829[_0xd5a6('0x65')]['id']}})['then'](handleEntityNotFound(_0x231ce1,null))[_0xd5a6('0x2d')](function(_0x431c88){if(_0x431c88){_0x48d76=_0x431c88;_0x17a580[_0xd5a6('0x44')]=_[_0xd5a6('0x49')](db['WhatsappInteraction'][_0xd5a6('0x41')]);_0x17a580[_0xd5a6('0x48')]=_['keys'](_0x43a829['query']);_0x17a580[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x17a580['model'],_0x17a580['query']);_0x200265[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x17a580[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x43a829[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x200265[_0xd5a6('0x4d')]=_0x200265[_0xd5a6('0x4d')]['length']?_0x200265[_0xd5a6('0x4d')]:_0x17a580['model'];_0x200265[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x43a829[_0xd5a6('0x48')]['sort']);_0x200265[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_[_0xd5a6('0xe2')](_0x43a829[_0xd5a6('0x48')],_0x17a580[_0xd5a6('0x4a')]));if(_0x43a829['query'][_0xd5a6('0x36')]){_0x200265['where']=_['merge'](_0x200265[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x200265[_0xd5a6('0x4d')],function(_0x463380){var _0x4d4c9f={};_0x4d4c9f[_0x463380]={'$like':'%'+_0x43a829[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x4d4c9f;})});}_0x200265=_[_0xd5a6('0x66')]({},_0x200265,_0x43a829[_0xd5a6('0x56')]);return _0x48d76[_0xd5a6('0xf4')](_0x200265);}})[_0xd5a6('0x2d')](function(_0x409458){if(_0x409458){_0xb43ee1=_0x409458[_0xd5a6('0x4e')];if(!_0x43a829[_0xd5a6('0x48')]['hasOwnProperty'](_0xd5a6('0x4f'))){_0x200265['limit']=qs[_0xd5a6('0x2a')](_0x43a829[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x200265['offset']=qs['offset'](_0x43a829[_0xd5a6('0x48')]['offset']);}return _0x48d76['getWhatsappInteractions'](_0x200265);}})[_0xd5a6('0x2d')](function(_0x26ebaa){if(_0x26ebaa){return _0x26ebaa?{'count':_0xb43ee1,'rows':_0x26ebaa}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x231ce1,null))[_0xd5a6('0x63')](handleError(_0x231ce1,null));};exports[_0xd5a6('0xf5')]=function(_0x27adae,_0x3651fc,_0x1bff55){var _0x1fe931;var _0x58aabc;var _0x4f5048;var _0x24392e=!_[_0xd5a6('0x74')](_0x27adae['params']['id'])?_0x27adae[_0xd5a6('0x65')]['id']:!_[_0xd5a6('0x74')](_0x27adae[_0xd5a6('0x32')]['id'])?_0x27adae[_0xd5a6('0x32')]['id']:null;return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x24392e,'role':{'$or':[_0xd5a6('0x30'),_0xd5a6('0x32'),_0xd5a6('0x34')]}},'attributes':['id','name',_0xd5a6('0xf6'),_0xd5a6('0xf7'),'role','internal','loginInPause']})[_0xd5a6('0x2d')](function(_0x2dcd0b){if(_0x2dcd0b){if(_0x2dcd0b['role']===_0xd5a6('0x34')){_0x1fe931=_0x2dcd0b;if(_0x27adae['body'][_0xd5a6('0xab')]){_0x4f5048=util[_0xd5a6('0xb8')](_0xd5a6('0xf8'),_0x1fe931[_0x27adae['body'][_0xd5a6('0xab')]]);}else if(_0x27adae[_0xd5a6('0x6a')]['intrf']){_0x4f5048=util[_0xd5a6('0xb8')](_0xd5a6('0xb9'),_0x27adae[_0xd5a6('0x6a')][_0xd5a6('0xf9')]);}else{_0x4f5048=util[_0xd5a6('0xb8')]('SIP/%s',_0x1fe931[_0xd5a6('0x3b')]);}socket['to'](util[_0xd5a6('0xb8')](_0xd5a6('0xfa'),_0x1fe931[_0xd5a6('0x3b')]))[_0xd5a6('0xb4')](_0xd5a6('0xfb'),{'user':{'id':_0x1fe931['id'],'name':_0x1fe931[_0xd5a6('0x3b')]},'ip':_0x27adae[_0xd5a6('0xfc')]['x-forwarded-for']||_0x27adae[_0xd5a6('0xfd')]['remoteAddress']||_0x27adae['socket'][_0xd5a6('0xfe')]||_0x27adae[_0xd5a6('0xfd')]['socket']['remoteAddress']});return db[_0xd5a6('0xbb')][_0xd5a6('0x2e')]({'where':{'membername':_0x1fe931[_0xd5a6('0x3b')]},'individualHooks':!![]});}}else{throw new db[(_0xd5a6('0x98'))][(_0xd5a6('0x99'))](_0xd5a6('0xff'));}})[_0xd5a6('0x2d')](function(){if(_0x1fe931){return _0x1fe931[_0xd5a6('0x100')]({'raw':!![]});}})['then'](function(_0xefd4c5){if(_0x1fe931){var _0x1c5d91=[];if(_0xefd4c5){_0x58aabc=_0xefd4c5;if(_0x58aabc[_0xd5a6('0x4e')]){for(var _0x1dd856=0x0;_0x1dd856<_0x58aabc['length'];_0x1dd856++){_0x1c5d91[_0xd5a6('0x58')]({'membername':_0x1fe931[_0xd5a6('0x3b')],'UserId':_0x1fe931['id'],'queue_name':_0x58aabc[_0x1dd856][_0xd5a6('0x3b')],'VoiceQueueId':_0x58aabc[_0x1dd856]['id'],'interface':_0x4f5048,'paused':_0x1fe931['loginInPause']||![],'penalty':_0x58aabc[_0x1dd856][_0xd5a6('0x101')]||0x0});}return BPromise[_0xd5a6('0x93')](_0x1c5d91,function(_0x24f451){return db[_0xd5a6('0xbb')]['upsert'](_0x24f451);});}}}})['then'](function(){if(_0x1fe931){return db[_0xd5a6('0x102')]['findAll']({'where':{'membername':_0x1fe931[_0xd5a6('0x3b')],'exitAt':null}});}})[_0xd5a6('0x2d')](function(_0x5231d2){if(_0x1fe931){var _0x3b79fa=[];_0x5231d2[_0xd5a6('0x103')](function(_0x4d58b0){_0x3b79fa[_0xd5a6('0x58')](_0x4d58b0[_0xd5a6('0x2c')]({'exitAt':moment()[_0xd5a6('0xb8')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xd5a6('0x62')](_0x3b79fa);}})['then'](function(){if(_0x1fe931){var _0x37812d=[];var _0x4a05c8=[];var _0x45dea1=utils[_0xd5a6('0x104')]();var _0x1fa0e7={'membername':_0x1fe931[_0xd5a6('0x3b')],'interface':_0x4f5048,'enterAt':moment()[_0xd5a6('0xb8')](_0xd5a6('0x105')),'role':_0x1fe931[_0xd5a6('0x2f')],'internal':_0x1fe931['internal']};_0x45dea1[_0xd5a6('0x103')](function(_0x1008fa){_0x37812d['push'](_[_0xd5a6('0x66')]({'channel':_0x1008fa,'type':_0xd5a6('0x106'),'data1':_0x27adae[_0xd5a6('0x6a')][_0xd5a6('0x107')],'data2':_0x4f5048},_0x1fa0e7));if(_0x1fe931['loginInPause']){_0x4a05c8[_0xd5a6('0x58')](_[_0xd5a6('0x66')]({'channel':_0x1008fa,'type':'PAUSE','data1':_0xd5a6('0x108')},_0x1fa0e7));}});return db[_0xd5a6('0x102')][_0xd5a6('0x8f')](_0x37812d[_0xd5a6('0x109')](_0x4a05c8),{'individualHooks':!![]});}})[_0xd5a6('0x2d')](function(){if(_0x1fe931){return _0x1fe931[_0xd5a6('0x2c')]({'online':!![],'lastLoginAt':moment()[_0xd5a6('0xb8')](_0xd5a6('0x105')),'voicePause':_0x1fe931[_0xd5a6('0x10a')]||![],'mailPause':_0x1fe931[_0xd5a6('0x10a')]||![],'chatPause':_0x1fe931[_0xd5a6('0x10a')]||![],'faxPause':_0x1fe931[_0xd5a6('0x10a')]||![],'smsPause':_0x1fe931['loginInPause']||![],'openchannelPause':_0x1fe931[_0xd5a6('0x10a')]||![],'whatsappPause':_0x1fe931[_0xd5a6('0x10a')]||![],'pauseType':_0x1fe931['loginInPause']?'LOGININPAUSE':null,'interface':_0x4f5048,'lastPauseAt':moment()[_0xd5a6('0xb8')](_0xd5a6('0x105'))});}})['then'](function(_0x417ec5){if(_0x27adae[_0xd5a6('0x10b')]){return _0x1bff55();}else{return BPromise['resolve'](_0x417ec5)[_0xd5a6('0x2d')](respondWithResult(_0x3651fc,null));}})[_0xd5a6('0x63')](handleError(_0x3651fc,null));};exports[_0xd5a6('0x10c')]=function(_0x52f6c6,_0x44563e,_0x142afd){var _0x42042a;return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x52f6c6[_0xd5a6('0x65')]['id'],'role':_0xd5a6('0x34')},'attributes':['id','name','role']})['then'](handleEntityNotFound(_0x44563e,null))[_0xd5a6('0x2d')](function(_0x199e84){if(_0x199e84){_0x42042a=_0x199e84;return db[_0xd5a6('0xbb')][_0xd5a6('0x2e')]({'where':{'membername':_0x42042a[_0xd5a6('0x3b')]},'individualHooks':!![]});}})['then'](function(){return db[_0xd5a6('0x102')][_0xd5a6('0x59')]({'where':{'membername':_0x42042a['name'],'exitAt':null}});})[_0xd5a6('0x2d')](function(_0xee003c){var _0x303086=[];_0xee003c['forEach'](function(_0x283d83){_0x303086[_0xd5a6('0x58')](_0x283d83[_0xd5a6('0x2c')]({'exitAt':moment()[_0xd5a6('0xb8')](_0xd5a6('0x105'))}));});return BPromise[_0xd5a6('0x62')](_0x303086);})[_0xd5a6('0x2d')](function(){return _0x42042a[_0xd5a6('0x2c')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xd5a6('0x2d')](respondWithResult(_0x44563e,null))[_0xd5a6('0x63')](handleError(_0x44563e,null));};exports[_0xd5a6('0x10d')]=function(_0x502f95,_0x5b1aa4,_0x5c1efd){var _0x31b8d9;return db[_0xd5a6('0xbb')][_0xd5a6('0x2c')]({'paused':0x1},{'where':{'UserId':_0x502f95[_0xd5a6('0x65')]['id']},'individualHooks':!![]})[_0xd5a6('0x2d')](function(){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x502f95[_0xd5a6('0x65')]['id'],'role':_0xd5a6('0x34')},'attributes':['id',_0xd5a6('0x3b'),_0xd5a6('0x2f'),_0xd5a6('0x72'),'interface']});})['then'](handleEntityNotFound(_0x5b1aa4,null))[_0xd5a6('0x2d')](function(_0x1806f5){if(_0x1806f5){_0x31b8d9=_0x1806f5;return respondWithRpcPromise(_0xd5a6('0x10e'),_0xd5a6('0x10d'),{'id':_0x31b8d9['id'],'name':_0x31b8d9[_0xd5a6('0x3b')],'pause':!![]});}})[_0xd5a6('0x2d')](function(){if(_0x31b8d9){return db[_0xd5a6('0x102')][_0xd5a6('0x59')]({'where':{'membername':_0x31b8d9[_0xd5a6('0x3b')],'type':_0xd5a6('0x10f'),'exitAt':null}});}})['then'](function(_0x4691ff){if(_0x4691ff['length']){var _0x509995=moment()[_0xd5a6('0xb8')](_0xd5a6('0x105'));for(var _0x34d660=0x0,_0xaae56c=_0x4691ff[_0xd5a6('0x4e')];_0x34d660<_0xaae56c;_0x34d660++){_0x4691ff[_0x34d660][_0xd5a6('0x110')]({'exitAt':_0x509995});}}})[_0xd5a6('0x2d')](function(){var _0x17675b=[];var _0x574423=utils['getChannels']();_0x574423[_0xd5a6('0x103')](function(_0x115872){_0x17675b[_0xd5a6('0x58')]({'channel':_0x115872,'membername':_0x31b8d9[_0xd5a6('0x3b')],'interface':_[_0xd5a6('0x74')](_0x31b8d9[_0xd5a6('0xab')])?util[_0xd5a6('0xb8')](_0xd5a6('0xb9'),_0x31b8d9[_0xd5a6('0x3b')]):_0x31b8d9[_0xd5a6('0xab')],'type':_0xd5a6('0x10f'),'enterAt':moment()[_0xd5a6('0xb8')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x502f95['body'][_0xd5a6('0x52')]||'DEFAULT\x20PAUSE','role':_0x31b8d9[_0xd5a6('0x2f')],'internal':_0x31b8d9[_0xd5a6('0x72')]});});return db[_0xd5a6('0x102')][_0xd5a6('0x8f')](_0x17675b,{'individualHooks':!![]});})['then'](function(){return _0x31b8d9[_0xd5a6('0x2c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x502f95[_0xd5a6('0x6a')]['type']||_0xd5a6('0x111'),'lastPauseAt':moment()[_0xd5a6('0xb8')](_0xd5a6('0x105'))});})[_0xd5a6('0x2d')](respondWithResult(_0x5b1aa4,null))['catch'](handleError(_0x5b1aa4,null));};exports[_0xd5a6('0x112')]=function(_0x50b72e,_0x4041f6,_0x400b18){var _0x274170;return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x50b72e[_0xd5a6('0x65')]['id']},'attributes':['id',_0xd5a6('0x3b'),'role',_0xd5a6('0xba'),_0xd5a6('0x113'),_0xd5a6('0x114'),_0xd5a6('0x115'),_0xd5a6('0x116'),_0xd5a6('0x117'),_0xd5a6('0x118'),_0xd5a6('0x119'),_0xd5a6('0x11a')]})[_0xd5a6('0x2d')](handleEntityNotFound(_0x4041f6,null))[_0xd5a6('0x2d')](function(_0x49e5e9){if(_0x49e5e9){_0x274170=_0x49e5e9;if(_0x50b72e[_0xd5a6('0x6a')]['channel']&&!utils[_0xd5a6('0xac')](_0x50b72e[_0xd5a6('0x6a')][_0xd5a6('0xa9')])){throw new db[(_0xd5a6('0x98'))][(_0xd5a6('0x99'))](_0xd5a6('0xad'));}switch(_0x50b72e[_0xd5a6('0x6a')][_0xd5a6('0xa9')]){case _0xd5a6('0xb6'):return respondWithRpcPromise(_0xd5a6('0x10e'),_0xd5a6('0x112'),{'id':_0x274170['id'],'name':_0x274170[_0xd5a6('0x3b')],'pause':![]})[_0xd5a6('0x2d')](function(){return db[_0xd5a6('0xbb')][_0xd5a6('0x2c')]({'paused':0x0},{'where':{'UserId':_0x274170['id']},'individualHooks':!![]});})['then'](function(){return db[_0xd5a6('0x102')][_0xd5a6('0x67')]({'where':{'channel':_0x50b72e[_0xd5a6('0x6a')][_0xd5a6('0xa9')],'membername':_0x274170['name'],'type':'PAUSE','exitAt':null}});})[_0xd5a6('0x2d')](function(_0x274007){if(_0x274007){return _0x274007[_0xd5a6('0x2c')]({'exitAt':moment()[_0xd5a6('0xb8')](_0xd5a6('0x105')),'data2':_0xd5a6('0x11b')},{'individualHooks':!![]});}return null;})[_0xd5a6('0x2d')](function(){return _0x274170[_0xd5a6('0x2c')]({'voicePause':![]});});case _0xd5a6('0x60'):case _0xd5a6('0x5d'):case'fax':case'sms':case _0xd5a6('0x69'):case _0xd5a6('0x61'):return db['MemberReport'][_0xd5a6('0x67')]({'where':{'channel':_0x50b72e[_0xd5a6('0x6a')][_0xd5a6('0xa9')],'membername':_0x274170[_0xd5a6('0x3b')],'type':_0xd5a6('0x10f'),'exitAt':null}})['then'](function(_0x16045b){if(_0x16045b){return _0x16045b[_0xd5a6('0x2c')]({'exitAt':moment()[_0xd5a6('0xb8')](_0xd5a6('0x105')),'data2':_0xd5a6('0x11b')},{'individualHooks':!![]});}return null;})['then'](function(){var _0x1ee6d8={};_[_0xd5a6('0x11c')](_0x1ee6d8,util['format'](_0xd5a6('0x11d'),_0x50b72e[_0xd5a6('0x6a')]['channel'],_0xd5a6('0x11e')),![]);return _0x274170['update'](_0x1ee6d8);});default:return respondWithRpcPromise(_0xd5a6('0x10e'),'unpause',{'id':_0x274170['id'],'name':_0x274170['name'],'pause':![]})[_0xd5a6('0x2d')](function(){return db[_0xd5a6('0xbb')]['update']({'paused':0x0},{'where':{'UserId':_0x274170['id']}});})['then'](function(){return db[_0xd5a6('0x102')][_0xd5a6('0x59')]({'where':{'membername':_0x274170[_0xd5a6('0x3b')],'type':'PAUSE','exitAt':null}});})['then'](function(_0x592359){var _0x4f6bef=[];_0x592359[_0xd5a6('0x103')](function(_0x3648ed){_0x4f6bef['push'](_0x3648ed[_0xd5a6('0x2c')]({'exitAt':moment()['format'](_0xd5a6('0x105')),'data2':'manual'}));});return BPromise[_0xd5a6('0x62')](_0x4f6bef);})[_0xd5a6('0x2d')](function(){return _0x274170[_0xd5a6('0x2c')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xd5a6('0x2d')](respondWithResult(_0x4041f6,null))['catch'](handleError(_0x4041f6,null));};exports['getTeams']=function(_0x374ad7,_0x296d05,_0x50eaf5){var _0x1bab63={};var _0x528b70={};var _0xff6588;var _0x2fa3a9;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x374ad7[_0xd5a6('0x65')]['id']}})['then'](handleEntityNotFound(_0x296d05,null))['then'](function(_0xff8c4e){if(_0xff8c4e){_0xff6588=_0xff8c4e;_0x528b70[_0xd5a6('0x44')]=_[_0xd5a6('0x49')](db['Team']['rawAttributes']);_0x528b70[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x374ad7['query']);_0x528b70[_0xd5a6('0x4a')]=_['intersection'](_0x528b70[_0xd5a6('0x44')],_0x528b70[_0xd5a6('0x48')]);_0x1bab63[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x528b70['model'],qs['fields'](_0x374ad7[_0xd5a6('0x48')]['fields']));_0x1bab63[_0xd5a6('0x4d')]=_0x1bab63[_0xd5a6('0x4d')]['length']?_0x1bab63[_0xd5a6('0x4d')]:_0x528b70[_0xd5a6('0x44')];_0x1bab63[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x374ad7[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x1bab63[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_[_0xd5a6('0xe2')](_0x374ad7[_0xd5a6('0x48')],_0x528b70[_0xd5a6('0x4a')]));if(_0x374ad7['query']['filter']){_0x1bab63[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x1bab63[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x1bab63[_0xd5a6('0x4d')],function(_0x34f1ff){var _0x58ecf6={};_0x58ecf6[_0x34f1ff]={'$like':'%'+_0x374ad7[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x58ecf6;})});}_0x1bab63=_['merge']({},_0x1bab63,_0x374ad7[_0xd5a6('0x56')]);return _0xff6588[_0xd5a6('0x11f')](_0x1bab63);}})['then'](function(_0x42f889){if(_0x42f889){_0x2fa3a9=_0x42f889['length'];if(!_0x374ad7[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x1bab63[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x374ad7['query']['limit']);_0x1bab63[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x374ad7[_0xd5a6('0x48')][_0xd5a6('0x27')]);}return _0xff6588['getTeams'](_0x1bab63);}})['then'](function(_0x21bd96){if(_0x21bd96){return _0x21bd96?{'count':_0x2fa3a9,'rows':_0x21bd96}:null;}})['then'](respondWithResult(_0x296d05,null))['catch'](handleError(_0x296d05,null));};exports[_0xd5a6('0x120')]=function(_0x5c92be,_0x9cb282){return db['User']['find']({'where':{'id':_0x5c92be['params']['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x9cb282,null))[_0xd5a6('0x2d')](function(_0x5c7edd){if(_0x5c7edd){var _0x2c0ea6=_0x5c7edd['get']({'plain':!![]});return _0x5c7edd[_0xd5a6('0x120')](_0x5c92be[_0xd5a6('0x6a')]['ids'],_[_0xd5a6('0x6e')](_0x5c92be['body'],[_0xd5a6('0x6d'),'id'])||{})['then'](function(){for(var _0x1827dd=0x0;_0x1827dd<_0x5c92be[_0xd5a6('0x6a')][_0xd5a6('0x6d')][_0xd5a6('0x4e')];_0x1827dd++){var _0x2d9f74=[];db[_0xd5a6('0x121')][_0xd5a6('0xa2')]({'where':{'id':_0x5c92be[_0xd5a6('0x6a')][_0xd5a6('0x6d')][_0x1827dd]}})[_0xd5a6('0x2d')](function(_0xf62a0a){_0x2d9f74['push'](_0xf62a0a['getVoiceQueues']()[_0xd5a6('0x2d')](function(_0x363978){for(var _0x152a01=0x0;_0x152a01<_0x363978[_0xd5a6('0x4e')];_0x152a01++){_0x363978[_0x152a01]['setDataValue'](_0xd5a6('0xa9'),_0xd5a6('0x122'));}return _0x363978;}));_0x2d9f74[_0xd5a6('0x58')](_0xf62a0a[_0xd5a6('0x123')]()[_0xd5a6('0x2d')](function(_0x1e6bc7){for(var _0x548c2c=0x0;_0x548c2c<_0x1e6bc7[_0xd5a6('0x4e')];_0x548c2c++){_0x1e6bc7[_0x548c2c][_0xd5a6('0x124')](_0xd5a6('0xa9'),'Chat');}return _0x1e6bc7;}));_0x2d9f74[_0xd5a6('0x58')](_0xf62a0a[_0xd5a6('0x125')]()[_0xd5a6('0x2d')](function(_0x57baeb){for(var _0x3f4178=0x0;_0x3f4178<_0x57baeb[_0xd5a6('0x4e')];_0x3f4178++){_0x57baeb[_0x3f4178][_0xd5a6('0x124')](_0xd5a6('0xa9'),'Mail');}return _0x57baeb;}));_0x2d9f74[_0xd5a6('0x58')](_0xf62a0a[_0xd5a6('0x126')]()[_0xd5a6('0x2d')](function(_0x212433){for(var _0x33e849=0x0;_0x33e849<_0x212433[_0xd5a6('0x4e')];_0x33e849++){_0x212433[_0x33e849][_0xd5a6('0x124')]('channel','Sms');}return _0x212433;}));_0x2d9f74['push'](_0xf62a0a[_0xd5a6('0x127')]()[_0xd5a6('0x2d')](function(_0x2de807){for(var _0x362f04=0x0;_0x362f04<_0x2de807[_0xd5a6('0x4e')];_0x362f04++){_0x2de807[_0x362f04]['setDataValue']('channel',_0xd5a6('0x128'));}return _0x2de807;}));_0x2d9f74[_0xd5a6('0x58')](_0xf62a0a[_0xd5a6('0x129')]()[_0xd5a6('0x2d')](function(_0x13841a){for(var _0x1eb146=0x0;_0x1eb146<_0x13841a['length'];_0x1eb146++){_0x13841a[_0x1eb146][_0xd5a6('0x124')](_0xd5a6('0xa9'),'Fax');}return _0x13841a;}));_0x2d9f74[_0xd5a6('0x58')](_0xf62a0a['getOpenchannelQueues']()['then'](function(_0x187802){for(var _0x1b6197=0x0;_0x1b6197<_0x187802[_0xd5a6('0x4e')];_0x1b6197++){_0x187802[_0x1b6197]['setDataValue'](_0xd5a6('0xa9'),_0xd5a6('0x12a'));}return _0x187802;}));return BPromise[_0xd5a6('0x62')](_0x2d9f74);})[_0xd5a6('0x2d')](function(_0x2939b){var _0x2039b2=_['flatten'](_0x2939b);_0x2d9f74=[];return db[_0xd5a6('0x54')]['transaction'](function(_0x5d42a7){for(var _0x236ab8=0x0;_0x236ab8<_0x2039b2['length'];_0x236ab8++){_0x2d9f74[_0xd5a6('0x58')](_0x2039b2[_0x236ab8][_0xd5a6('0x12b')](_0x2c0ea6['id']),{'transaction':_0x5d42a7});}return BPromise[_0xd5a6('0x62')](_0x2d9f74)['then'](function(){if(_0x2c0ea6[_0xd5a6('0xaa')]){return BPromise[_0xd5a6('0x93')](_[_0xd5a6('0x36')](_0x2039b2,function(_0x182d1b){return _0x182d1b[_0xd5a6('0x12c')]('channel')===_0xd5a6('0x122');}),function(_0x2d4cc2){return db[_0xd5a6('0xbb')][_0xd5a6('0xbc')]({'membername':_0x2c0ea6[_0xd5a6('0x3b')],'UserId':_0x2c0ea6['id'],'queue_name':_0x2d4cc2[_0xd5a6('0x3b')],'VoiceQueueId':_0x2d4cc2['id'],'interface':_[_0xd5a6('0x74')](_0x2c0ea6[_0xd5a6('0xab')])?util['format']('SIP/%s',_0x2c0ea6[_0xd5a6('0x3b')]):_0x2c0ea6[_0xd5a6('0xab')],'paused':_0x2c0ea6['voicePause']||![],'penalty':_0x2c0ea6['penalty']},{'transaction':_0x5d42a7});});}else{return;}})[_0xd5a6('0x2d')](function(){for(var _0x28fbbb=0x0;_0x28fbbb<_0x2039b2[_0xd5a6('0x4e')];_0x28fbbb++){var _0x4f0f83=_0x2039b2[_0x28fbbb][_0xd5a6('0x12c')]('channel');var _0x261d65=_0x4f0f83+_0xd5a6('0xb3');socket[_0xd5a6('0xb4')](_0xd5a6('0x32')+_0x4f0f83+_0xd5a6('0x12d'),{'UserId':_0x2c0ea6['id'],['queueField']:_0x2039b2[_0x28fbbb]['id']});}});});});}});}})[_0xd5a6('0x2d')](respondWithStatusCode(_0x9cb282,null))[_0xd5a6('0x63')](handleError(_0x9cb282,null));};exports[_0xd5a6('0x12e')]=function(_0x46a3e6,_0x54dbd7){return db['User']['findOne']({'where':{'id':_0x46a3e6[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x54dbd7,null))['then'](function(_0x3ac2de){if(_0x3ac2de){var _0x8c31ee=_0x3ac2de[_0xd5a6('0xe3')]({'plain':!![]});var _0x4c1a85=_0x46a3e6[_0xd5a6('0x48')][_0xd5a6('0x6d')];return _0x3ac2de['removeTeams'](_0x4c1a85)[_0xd5a6('0x2d')](function(){for(var _0x3b2524=0x0;_0x3b2524<_0x4c1a85['length'];_0x3b2524++){var _0x1aea57=[];db[_0xd5a6('0x121')][_0xd5a6('0xa2')]({'where':{'id':_0x4c1a85[_0x3b2524]}})['then'](function(_0xf64205){_0x1aea57[_0xd5a6('0x58')](_0xf64205[_0xd5a6('0x100')]()[_0xd5a6('0x2d')](function(_0x1dd9f2){for(var _0x3957a4=0x0;_0x3957a4<_0x1dd9f2[_0xd5a6('0x4e')];_0x3957a4++){_0x1dd9f2[_0x3957a4][_0xd5a6('0x124')](_0xd5a6('0xa9'),'Voice');}return _0x1dd9f2;}));_0x1aea57[_0xd5a6('0x58')](_0xf64205[_0xd5a6('0x123')]()[_0xd5a6('0x2d')](function(_0x155a15){for(var _0x1cf254=0x0;_0x1cf254<_0x155a15['length'];_0x1cf254++){_0x155a15[_0x1cf254]['setDataValue']('channel',_0xd5a6('0x12f'));}return _0x155a15;}));_0x1aea57[_0xd5a6('0x58')](_0xf64205[_0xd5a6('0x125')]()[_0xd5a6('0x2d')](function(_0x43aa6f){for(var _0x5022e5=0x0;_0x5022e5<_0x43aa6f['length'];_0x5022e5++){_0x43aa6f[_0x5022e5][_0xd5a6('0x124')](_0xd5a6('0xa9'),'Mail');}return _0x43aa6f;}));_0x1aea57['push'](_0xf64205['getSmsQueues']()['then'](function(_0x3bdcad){for(var _0x147e07=0x0;_0x147e07<_0x3bdcad[_0xd5a6('0x4e')];_0x147e07++){_0x3bdcad[_0x147e07][_0xd5a6('0x124')]('channel',_0xd5a6('0x130'));}return _0x3bdcad;}));_0x1aea57['push'](_0xf64205['getWhatsappQueues']()[_0xd5a6('0x2d')](function(_0xae9c09){for(var _0x133a21=0x0;_0x133a21<_0xae9c09[_0xd5a6('0x4e')];_0x133a21++){_0xae9c09[_0x133a21][_0xd5a6('0x124')](_0xd5a6('0xa9'),_0xd5a6('0x128'));}return _0xae9c09;}));_0x1aea57[_0xd5a6('0x58')](_0xf64205[_0xd5a6('0x129')]()[_0xd5a6('0x2d')](function(_0x148f00){for(var _0x2c461e=0x0;_0x2c461e<_0x148f00['length'];_0x2c461e++){_0x148f00[_0x2c461e][_0xd5a6('0x124')](_0xd5a6('0xa9'),'Fax');}return _0x148f00;}));_0x1aea57[_0xd5a6('0x58')](_0xf64205['getOpenchannelQueues']()[_0xd5a6('0x2d')](function(_0x428ded){for(var _0x3920b5=0x0;_0x3920b5<_0x428ded[_0xd5a6('0x4e')];_0x3920b5++){_0x428ded[_0x3920b5]['setDataValue']('channel',_0xd5a6('0x12a'));}return _0x428ded;}));return BPromise[_0xd5a6('0x62')](_0x1aea57);})[_0xd5a6('0x2d')](function(_0x16b665){var _0x245b31=_[_0xd5a6('0x131')](_0x16b665);_0x1aea57=[];return db[_0xd5a6('0x54')][_0xd5a6('0x132')](function(_0x5c19f7){for(var _0x55e132=0x0;_0x55e132<_0x245b31[_0xd5a6('0x4e')];_0x55e132++){_0x1aea57[_0xd5a6('0x58')](_0x245b31[_0x55e132][_0xd5a6('0x133')](_0x8c31ee['id']),{'transaction':_0x5c19f7});}return BPromise[_0xd5a6('0x62')](_0x1aea57)[_0xd5a6('0x2d')](function(){if(_0x8c31ee['online']){return BPromise[_0xd5a6('0x93')](_[_0xd5a6('0x36')](_0x245b31,function(_0x3da478){return _0x3da478['getDataValue'](_0xd5a6('0xa9'))==='Voice';}),function(_0x1423fc){return db[_0xd5a6('0xbb')]['destroy']({'where':{'VoiceQueueId':_0x1423fc['id'],'UserId':_0x8c31ee['id']},'transaction':_0x5c19f7});});}else{return;}})[_0xd5a6('0x2d')](function(){for(var _0x19a62e=0x0;_0x19a62e<_0x245b31[_0xd5a6('0x4e')];_0x19a62e++){var _0x1511c8=_0x245b31[_0x19a62e][_0xd5a6('0x12c')](_0xd5a6('0xa9'));var _0x4143a0=_0x1511c8+_0xd5a6('0xb3');socket[_0xd5a6('0xb4')](_0xd5a6('0x32')+_0x1511c8+_0xd5a6('0xbe'),{'UserId':_0x8c31ee['id'],['queueField']:_0x245b31[_0x19a62e]['id']});}});});});}});}})[_0xd5a6('0x2d')](respondWithStatusCode(_0x54dbd7,null))[_0xd5a6('0x63')](handleError(_0x54dbd7,null));};exports[_0xd5a6('0x134')]=function(_0x494c53,_0x3624f6,_0x155d8e){var _0x17d2f={};var _0x484f37={};var _0xd52540;var _0x1f066d;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x494c53[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x3624f6,null))[_0xd5a6('0x2d')](function(_0x303b80){if(_0x303b80){_0xd52540=_0x303b80;_0x484f37['model']=_[_0xd5a6('0x49')](db[_0xd5a6('0xda')][_0xd5a6('0x41')]);_0x484f37['query']=_[_0xd5a6('0x49')](_0x494c53[_0xd5a6('0x48')]);_0x484f37[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x484f37[_0xd5a6('0x44')],_0x484f37['query']);_0x17d2f[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x484f37[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x494c53[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x17d2f[_0xd5a6('0x4d')]=_0x17d2f[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x17d2f[_0xd5a6('0x4d')]:_0x484f37[_0xd5a6('0x44')];_0x17d2f[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x494c53[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x17d2f[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_['pick'](_0x494c53[_0xd5a6('0x48')],_0x484f37[_0xd5a6('0x4a')]));if(_0x494c53[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x17d2f[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x17d2f[_0xd5a6('0x51')],{'$or':_['map'](_0x17d2f[_0xd5a6('0x4d')],function(_0x2a759b){var _0x447f7d={};_0x447f7d[_0x2a759b]={'$like':'%'+_0x494c53[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x447f7d;})});}_0x17d2f=_[_0xd5a6('0x66')]({},_0x17d2f,_0x494c53[_0xd5a6('0x56')]);return _0xd52540[_0xd5a6('0x134')](_0x17d2f);}})['then'](function(_0x4b2a95){if(_0x4b2a95){_0x1f066d=_0x4b2a95[_0xd5a6('0x4e')];if(!_0x494c53[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x17d2f['limit']=qs[_0xd5a6('0x2a')](_0x494c53[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x17d2f['offset']=qs['offset'](_0x494c53[_0xd5a6('0x48')][_0xd5a6('0x27')]);}return _0xd52540['getLists'](_0x17d2f);}})['then'](function(_0x1b884e){if(_0x1b884e){return _0x1b884e?{'count':_0x1f066d,'rows':_0x1b884e}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x3624f6,null))[_0xd5a6('0x63')](handleError(_0x3624f6,null));};exports[_0xd5a6('0x135')]=function(_0x2d6c4f,_0x1ee6f4,_0x19db28){var _0x14bd23={};var _0x586e48={};var _0x6abcd3;var _0x290337;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x2d6c4f[_0xd5a6('0x65')]['id']}})['then'](handleEntityNotFound(_0x1ee6f4,null))[_0xd5a6('0x2d')](function(_0x395953){if(_0x395953){_0x6abcd3=_0x395953;_0x586e48['model']=_['keys'](db[_0xd5a6('0x40')][_0xd5a6('0x41')]);_0x586e48['query']=_[_0xd5a6('0x49')](_0x2d6c4f[_0xd5a6('0x48')]);_0x586e48[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x586e48[_0xd5a6('0x44')],_0x586e48[_0xd5a6('0x48')]);_0x14bd23[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x586e48['model'],qs[_0xd5a6('0x4c')](_0x2d6c4f[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x14bd23[_0xd5a6('0x4d')]=_0x14bd23[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x14bd23['attributes']:_0x586e48[_0xd5a6('0x44')];_0x14bd23[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x2d6c4f[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x14bd23[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_[_0xd5a6('0xe2')](_0x2d6c4f['query'],_0x586e48['filters']));if(_0x2d6c4f['query'][_0xd5a6('0x36')]){_0x14bd23[_0xd5a6('0x51')]=_['merge'](_0x14bd23[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x14bd23[_0xd5a6('0x4d')],function(_0x5d5b1b){var _0x494c79={};_0x494c79[_0x5d5b1b]={'$like':'%'+_0x2d6c4f[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x494c79;})});}_0x14bd23[_0xd5a6('0x44')]=db[_0xd5a6('0x40')];_0x14bd23['as']=_0xd5a6('0x33');_0x14bd23=_[_0xd5a6('0x66')]({},_0x14bd23,_0x2d6c4f[_0xd5a6('0x56')]);return _0x6abcd3[_0xd5a6('0x100')]({'include':[_0x14bd23]});}})[_0xd5a6('0x2d')](function(_0x4d70f6){if(_0x4d70f6){var _0x126274={},_0x108556=[],_0x5c75ce=0x0;for(var _0x5975aa=0x0;_0x5975aa<_0x4d70f6[_0xd5a6('0x4e')];_0x5975aa+=0x1){for(var _0xa558f3=0x0,_0xa3e2b6;_0xa558f3<_0x4d70f6[_0x5975aa]['Agents'][_0xd5a6('0x4e')];_0xa558f3+=0x1){_0xa3e2b6=_0x4d70f6[_0x5975aa][_0xd5a6('0x33')][_0xa558f3][_0xd5a6('0xe3')]({'plain':!![]});_0x126274[_0xa3e2b6['id']]=_0xa3e2b6;}}_0x126274=_['values'](_0x126274);for(var _0x136375=qs['offset'](_0x2d6c4f[_0xd5a6('0x48')][_0xd5a6('0x27')]);_0x136375<_0x126274['length']&&_0x108556[_0xd5a6('0x4e')]<qs[_0xd5a6('0x2a')](_0x2d6c4f['query'][_0xd5a6('0x2a')]);_0x136375+=0x1){if(_0x126274[_0x136375]){_0x108556[_0xd5a6('0x58')](_0x126274[_0x136375]);}}return{'count':_0x126274['length'],'rows':_0x108556};}})[_0xd5a6('0x2d')](respondWithResult(_0x1ee6f4,null))[_0xd5a6('0x63')](handleError(_0x1ee6f4,null));};exports[_0xd5a6('0x2e')]=function(_0x17e5d2,_0x4aa7dc){if(_0x17e5d2['user']['id']==_0x17e5d2[_0xd5a6('0x65')]['id']){return _0x4aa7dc[_0xd5a6('0x24')](0x1f4)[_0xd5a6('0x3e')]({'message':_0xd5a6('0x136')});}return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x17e5d2['params']['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x4aa7dc,null))[_0xd5a6('0x2d')](removeEntity(_0x4aa7dc,null))[_0xd5a6('0x63')](handleError(_0x4aa7dc,null));};exports['addChatInteractions']=function(_0x21935b,_0x49f205,_0x28464f){return db[_0xd5a6('0x40')]['find']({'where':{'id':_0x21935b['params']['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x49f205,null))[_0xd5a6('0x2d')](function(_0x5a8227){if(_0x5a8227){return _0x5a8227[_0xd5a6('0x137')](_0x21935b[_0xd5a6('0x6a')][_0xd5a6('0x6d')],_[_0xd5a6('0x6e')](_0x21935b[_0xd5a6('0x6a')],[_0xd5a6('0x6d'),'id'])||{})[_0xd5a6('0xb2')](function(){for(var _0x4bcc46=0x0;_0x4bcc46<_0x21935b[_0xd5a6('0x6a')][_0xd5a6('0x6d')][_0xd5a6('0x4e')];_0x4bcc46+=0x1){socket[_0xd5a6('0xb4')](_0xd5a6('0x138'),{'ChatInteractionId':Number(_0x21935b['body'][_0xd5a6('0x6d')][_0x4bcc46]),'UserId':Number(_0x21935b[_0xd5a6('0x65')]['id'])});}return _0x21935b['body'][_0xd5a6('0x6d')];});}})[_0xd5a6('0x2d')](respondWithResult(_0x49f205,null))[_0xd5a6('0x63')](handleError(_0x49f205,null));};exports[_0xd5a6('0x139')]=function(_0x4dbd1a,_0x49fa74,_0x2e296f){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x4dbd1a[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x49fa74,null))['then'](function(_0x20a542){if(_0x20a542){return _0x20a542['removeChatInteractions'](_0x4dbd1a[_0xd5a6('0x48')][_0xd5a6('0x6d')])[_0xd5a6('0x2d')](function(){if(_[_0xd5a6('0x13a')](_0x4dbd1a[_0xd5a6('0x48')]['ids'])){for(var _0x46b507=0x0;_0x46b507<_0x4dbd1a[_0xd5a6('0x48')][_0xd5a6('0x6d')][_0xd5a6('0x4e')];_0x46b507+=0x1){socket['emit'](_0xd5a6('0x13b'),{'ChatInteractionId':Number(_0x4dbd1a['query']['ids'][_0x46b507]),'UserId':Number(_0x4dbd1a['params']['id'])});}}else{socket[_0xd5a6('0xb4')](_0xd5a6('0x13b'),{'ChatInteractionId':Number(_0x4dbd1a['query'][_0xd5a6('0x6d')]),'UserId':Number(_0x4dbd1a[_0xd5a6('0x65')]['id'])});}});}})['then'](respondWithStatusCode(_0x49fa74,null))[_0xd5a6('0x63')](handleError(_0x49fa74,null));};exports[_0xd5a6('0x13c')]=function(_0x4b8c27,_0x376dd5,_0x4e3c62){return db['User'][_0xd5a6('0x67')]({'where':{'id':_0x4b8c27[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x376dd5,null))[_0xd5a6('0x2d')](function(_0x2a2b0c){if(_0x2a2b0c){return _0x2a2b0c[_0xd5a6('0x13c')](_0x4b8c27[_0xd5a6('0x6a')]['ids'],_['omit'](_0x4b8c27[_0xd5a6('0x6a')],[_0xd5a6('0x6d'),'id'])||{})[_0xd5a6('0xb2')](function(){for(var _0x109011=0x0;_0x109011<_0x4b8c27['body']['ids'][_0xd5a6('0x4e')];_0x109011+=0x1){socket[_0xd5a6('0xb4')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x4b8c27[_0xd5a6('0x6a')][_0xd5a6('0x6d')][_0x109011]),'UserId':Number(_0x4b8c27['params']['id'])});}return _0x4b8c27[_0xd5a6('0x6a')][_0xd5a6('0x6d')];});}})['then'](respondWithResult(_0x376dd5,null))[_0xd5a6('0x63')](handleError(_0x376dd5,null));};exports[_0xd5a6('0x13d')]=function(_0xd407a2,_0x362365,_0x2dbe82){return db['User'][_0xd5a6('0x67')]({'where':{'id':_0xd407a2[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x362365,null))[_0xd5a6('0x2d')](function(_0x2976be){if(_0x2976be){return _0x2976be[_0xd5a6('0x13d')](_0xd407a2[_0xd5a6('0x48')][_0xd5a6('0x6d')])[_0xd5a6('0x2d')](function(){if(_[_0xd5a6('0x13a')](_0xd407a2[_0xd5a6('0x48')]['ids'])){for(var _0x5796b1=0x0;_0x5796b1<_0xd407a2[_0xd5a6('0x48')][_0xd5a6('0x6d')][_0xd5a6('0x4e')];_0x5796b1+=0x1){socket['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0xd407a2[_0xd5a6('0x48')][_0xd5a6('0x6d')][_0x5796b1]),'UserId':Number(_0xd407a2[_0xd5a6('0x65')]['id'])});}}else{socket[_0xd5a6('0xb4')](_0xd5a6('0x13e'),{'MailInteractionId':Number(_0xd407a2[_0xd5a6('0x48')][_0xd5a6('0x6d')]),'UserId':Number(_0xd407a2['params']['id'])});}});}})[_0xd5a6('0x2d')](respondWithStatusCode(_0x362365,null))[_0xd5a6('0x63')](handleError(_0x362365,null));};exports['addFaxInteractions']=function(_0xeed5a6,_0x5918ea,_0x1faacc){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0xeed5a6[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x5918ea,null))[_0xd5a6('0x2d')](function(_0x14afbe){if(_0x14afbe){return _0x14afbe[_0xd5a6('0x13f')](_0xeed5a6[_0xd5a6('0x6a')]['ids'],_[_0xd5a6('0x6e')](_0xeed5a6[_0xd5a6('0x6a')],[_0xd5a6('0x6d'),'id'])||{})[_0xd5a6('0xb2')](function(){for(var _0x16bf35=0x0;_0x16bf35<_0xeed5a6[_0xd5a6('0x6a')]['ids']['length'];_0x16bf35+=0x1){socket[_0xd5a6('0xb4')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0xeed5a6[_0xd5a6('0x6a')]['ids'][_0x16bf35]),'UserId':Number(_0xeed5a6[_0xd5a6('0x65')]['id'])});}return _0xeed5a6[_0xd5a6('0x6a')][_0xd5a6('0x6d')];});}})[_0xd5a6('0x2d')](respondWithResult(_0x5918ea,null))['catch'](handleError(_0x5918ea,null));};exports[_0xd5a6('0x140')]=function(_0x4596c1,_0x1ea8a0,_0x58c97c){return db['User'][_0xd5a6('0x67')]({'where':{'id':_0x4596c1[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x1ea8a0,null))[_0xd5a6('0x2d')](function(_0x57893c){if(_0x57893c){return _0x57893c['removeFaxInteractions'](_0x4596c1[_0xd5a6('0x48')][_0xd5a6('0x6d')])[_0xd5a6('0x2d')](function(){if(_[_0xd5a6('0x13a')](_0x4596c1[_0xd5a6('0x48')]['ids'])){for(var _0x53f2b5=0x0;_0x53f2b5<_0x4596c1['query'][_0xd5a6('0x6d')][_0xd5a6('0x4e')];_0x53f2b5+=0x1){socket[_0xd5a6('0xb4')](_0xd5a6('0x141'),{'FaxInteractionId':Number(_0x4596c1[_0xd5a6('0x48')]['ids'][_0x53f2b5]),'UserId':Number(_0x4596c1[_0xd5a6('0x65')]['id'])});}}else{socket[_0xd5a6('0xb4')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x4596c1[_0xd5a6('0x48')][_0xd5a6('0x6d')]),'UserId':Number(_0x4596c1[_0xd5a6('0x65')]['id'])});}});}})[_0xd5a6('0x2d')](respondWithStatusCode(_0x1ea8a0,null))[_0xd5a6('0x63')](handleError(_0x1ea8a0,null));};exports['addSmsInteractions']=function(_0x393833,_0x50f7c4,_0x8d3533){return db[_0xd5a6('0x40')]['find']({'where':{'id':_0x393833[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x50f7c4,null))[_0xd5a6('0x2d')](function(_0x1c7625){if(_0x1c7625){return _0x1c7625['addSmsInteractions'](_0x393833[_0xd5a6('0x6a')][_0xd5a6('0x6d')],_[_0xd5a6('0x6e')](_0x393833[_0xd5a6('0x6a')],[_0xd5a6('0x6d'),'id'])||{})[_0xd5a6('0xb2')](function(){for(var _0x63e367=0x0;_0x63e367<_0x393833['body']['ids']['length'];_0x63e367+=0x1){socket[_0xd5a6('0xb4')](_0xd5a6('0x142'),{'SmsInteractionId':Number(_0x393833[_0xd5a6('0x6a')][_0xd5a6('0x6d')][_0x63e367]),'UserId':Number(_0x393833[_0xd5a6('0x65')]['id'])});}return _0x393833[_0xd5a6('0x6a')]['ids'];});}})[_0xd5a6('0x2d')](respondWithResult(_0x50f7c4,null))[_0xd5a6('0x63')](handleError(_0x50f7c4,null));};exports[_0xd5a6('0x143')]=function(_0x54a7c7,_0x1b1741,_0x530c71){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x54a7c7[_0xd5a6('0x65')]['id']}})['then'](handleEntityNotFound(_0x1b1741,null))[_0xd5a6('0x2d')](function(_0x2e745e){if(_0x2e745e){return _0x2e745e[_0xd5a6('0x143')](_0x54a7c7['query'][_0xd5a6('0x6d')])[_0xd5a6('0x2d')](function(){if(_[_0xd5a6('0x13a')](_0x54a7c7[_0xd5a6('0x48')][_0xd5a6('0x6d')])){for(var _0x51fee0=0x0;_0x51fee0<_0x54a7c7[_0xd5a6('0x48')][_0xd5a6('0x6d')][_0xd5a6('0x4e')];_0x51fee0+=0x1){socket[_0xd5a6('0xb4')](_0xd5a6('0x144'),{'SmsInteractionId':Number(_0x54a7c7['query']['ids'][_0x51fee0]),'UserId':Number(_0x54a7c7[_0xd5a6('0x65')]['id'])});}}else{socket[_0xd5a6('0xb4')](_0xd5a6('0x144'),{'SmsInteractionId':Number(_0x54a7c7[_0xd5a6('0x48')][_0xd5a6('0x6d')]),'UserId':Number(_0x54a7c7[_0xd5a6('0x65')]['id'])});}});}})[_0xd5a6('0x2d')](respondWithStatusCode(_0x1b1741,null))[_0xd5a6('0x63')](handleError(_0x1b1741,null));};exports[_0xd5a6('0x145')]=function(_0x50a2f9,_0x29234c,_0x376102){return db[_0xd5a6('0x40')]['find']({'where':{'id':_0x50a2f9[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x29234c,null))[_0xd5a6('0x2d')](function(_0x3dd7a8){if(_0x3dd7a8){return _0x3dd7a8[_0xd5a6('0x145')](_0x50a2f9[_0xd5a6('0x6a')][_0xd5a6('0x6d')],_['omit'](_0x50a2f9[_0xd5a6('0x6a')],[_0xd5a6('0x6d'),'id'])||{})[_0xd5a6('0xb2')](function(){for(var _0x3d5a8f=0x0;_0x3d5a8f<_0x50a2f9['body']['ids'][_0xd5a6('0x4e')];_0x3d5a8f+=0x1){socket['emit'](_0xd5a6('0x146'),{'OpenchannelInteractionId':Number(_0x50a2f9['body']['ids'][_0x3d5a8f]),'UserId':Number(_0x50a2f9[_0xd5a6('0x65')]['id'])});}return _0x50a2f9[_0xd5a6('0x6a')][_0xd5a6('0x6d')];});}})[_0xd5a6('0x2d')](respondWithResult(_0x29234c,null))['catch'](handleError(_0x29234c,null));};exports[_0xd5a6('0x147')]=function(_0x3ea95a,_0x50ee63,_0x2d1de9){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x3ea95a[_0xd5a6('0x65')]['id']}})['then'](handleEntityNotFound(_0x50ee63,null))[_0xd5a6('0x2d')](function(_0x1394a0){if(_0x1394a0){return _0x1394a0[_0xd5a6('0x147')](_0x3ea95a[_0xd5a6('0x48')][_0xd5a6('0x6d')])[_0xd5a6('0x2d')](function(){if(_[_0xd5a6('0x13a')](_0x3ea95a[_0xd5a6('0x48')][_0xd5a6('0x6d')])){for(var _0x5aa1c1=0x0;_0x5aa1c1<_0x3ea95a['query']['ids'][_0xd5a6('0x4e')];_0x5aa1c1+=0x1){socket['emit'](_0xd5a6('0x148'),{'OpenchannelInteractionId':Number(_0x3ea95a[_0xd5a6('0x48')][_0xd5a6('0x6d')][_0x5aa1c1]),'UserId':Number(_0x3ea95a[_0xd5a6('0x65')]['id'])});}}else{socket[_0xd5a6('0xb4')](_0xd5a6('0x148'),{'OpenchannelInteractionId':Number(_0x3ea95a[_0xd5a6('0x48')]['ids']),'UserId':Number(_0x3ea95a[_0xd5a6('0x65')]['id'])});}});}})[_0xd5a6('0x2d')](respondWithStatusCode(_0x50ee63,null))[_0xd5a6('0x63')](handleError(_0x50ee63,null));};exports[_0xd5a6('0x149')]=function(_0x5325e8,_0x2a1a2d,_0x53047c){return db['User'][_0xd5a6('0x67')]({'where':{'id':_0x5325e8[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x2a1a2d,null))['then'](function(_0x2020ef){if(_0x2020ef){return _0x2020ef[_0xd5a6('0x149')](_0x5325e8['body']['ids'],_['omit'](_0x5325e8[_0xd5a6('0x6a')],[_0xd5a6('0x6d'),'id'])||{})[_0xd5a6('0xb2')](function(){for(var _0x5cae33=0x0;_0x5cae33<_0x5325e8['body'][_0xd5a6('0x6d')][_0xd5a6('0x4e')];_0x5cae33+=0x1){socket['emit'](_0xd5a6('0x14a'),{'WhatsappInteractionId':Number(_0x5325e8[_0xd5a6('0x6a')][_0xd5a6('0x6d')][_0x5cae33]),'UserId':Number(_0x5325e8['params']['id'])});}return _0x5325e8[_0xd5a6('0x6a')][_0xd5a6('0x6d')];});}})['then'](respondWithResult(_0x2a1a2d,null))[_0xd5a6('0x63')](handleError(_0x2a1a2d,null));};exports['removeWhatsappInteractions']=function(_0x1f96ad,_0x3ed1ad,_0x29ee56){return db['User'][_0xd5a6('0x67')]({'where':{'id':_0x1f96ad[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x3ed1ad,null))[_0xd5a6('0x2d')](function(_0x395bf7){if(_0x395bf7){return _0x395bf7[_0xd5a6('0x14b')](_0x1f96ad[_0xd5a6('0x48')][_0xd5a6('0x6d')]);}})[_0xd5a6('0x2d')](respondWithStatusCode(_0x3ed1ad,null))[_0xd5a6('0x63')](handleError(_0x3ed1ad,null));};exports[_0xd5a6('0x14c')]=function(_0x568f80,_0x26c105,_0x15965f){var _0x2e1f06={};var _0x56990a={};var _0x442ad1;var _0xa35d;return db['User'][_0xd5a6('0xa2')]({'where':{'id':_0x568f80[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x26c105,null))['then'](function(_0x2f161a){if(_0x2f161a){_0x442ad1=_0x2f161a;_0x56990a[_0xd5a6('0x44')]=_[_0xd5a6('0x49')](db[_0xd5a6('0x14d')][_0xd5a6('0x41')]);_0x56990a[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x568f80[_0xd5a6('0x48')]);_0x56990a[_0xd5a6('0x4a')]=_['intersection'](_0x56990a[_0xd5a6('0x44')],_0x56990a['query']);_0x2e1f06['attributes']=_['intersection'](_0x56990a['model'],qs['fields'](_0x568f80[_0xd5a6('0x48')]['fields']));_0x2e1f06['attributes']=_0x2e1f06[_0xd5a6('0x4d')]['length']?_0x2e1f06[_0xd5a6('0x4d')]:_0x56990a[_0xd5a6('0x44')];_0x2e1f06[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x568f80['query'][_0xd5a6('0x50')]);_0x2e1f06['where']=qs[_0xd5a6('0x4a')](_[_0xd5a6('0xe2')](_0x568f80[_0xd5a6('0x48')],_0x56990a[_0xd5a6('0x4a')]));if(_0x568f80[_0xd5a6('0x48')]['filter']){_0x2e1f06[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x2e1f06['where'],{'$or':_[_0xd5a6('0x38')](_0x2e1f06[_0xd5a6('0x4d')],function(_0x556481){var _0x580478={};_0x580478[_0x556481]={'$like':'%'+_0x568f80['query'][_0xd5a6('0x36')]+'%'};return _0x580478;})});}_0x2e1f06=_['merge']({},_0x2e1f06,_0x568f80[_0xd5a6('0x56')]);return _0x442ad1[_0xd5a6('0x14c')](_0x2e1f06);}})['then'](function(_0x4e175b){if(_0x4e175b){_0xa35d=_0x4e175b[_0xd5a6('0x4e')];if(!_0x568f80[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x2e1f06[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x568f80['query'][_0xd5a6('0x2a')]);_0x2e1f06['offset']=qs[_0xd5a6('0x27')](_0x568f80[_0xd5a6('0x48')]['offset']);}return _0x442ad1[_0xd5a6('0x14c')](_0x2e1f06);}})[_0xd5a6('0x2d')](function(_0x156cc3){if(_0x156cc3){return _0x156cc3?{'count':_0xa35d,'rows':_0x156cc3}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x26c105,null))['catch'](handleError(_0x26c105,null));};exports[_0xd5a6('0x14e')]=function(_0x36a2e7,_0x1e3d73,_0x5b8604){var _0x52478d={};var _0x4be173={};var _0x1e4207;var _0x10c296;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x36a2e7[_0xd5a6('0x65')]['id']}})['then'](handleEntityNotFound(_0x1e3d73,null))[_0xd5a6('0x2d')](function(_0x3fda12){if(_0x3fda12){_0x1e4207=_0x3fda12;_0x4be173['model']=_[_0xd5a6('0x49')](db[_0xd5a6('0x14f')]['rawAttributes']);_0x4be173[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x36a2e7[_0xd5a6('0x48')]);_0x4be173[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x4be173['model'],_0x4be173['query']);_0x52478d['attributes']=_['intersection'](_0x4be173[_0xd5a6('0x44')],qs['fields'](_0x36a2e7[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x52478d[_0xd5a6('0x4d')]=_0x52478d[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x52478d[_0xd5a6('0x4d')]:_0x4be173[_0xd5a6('0x44')];_0x52478d[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x36a2e7[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x52478d[_0xd5a6('0x51')]=qs['filters'](_[_0xd5a6('0xe2')](_0x36a2e7[_0xd5a6('0x48')],_0x4be173['filters']));if(_0x36a2e7['query'][_0xd5a6('0x36')]){_0x52478d[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x52478d[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x52478d[_0xd5a6('0x4d')],function(_0xa8d336){var _0x466171={};_0x466171[_0xa8d336]={'$like':'%'+_0x36a2e7['query'][_0xd5a6('0x36')]+'%'};return _0x466171;})});}_0x52478d=_['merge']({},_0x52478d,_0x36a2e7['options']);return _0x1e4207['getFaxAccounts'](_0x52478d);}})[_0xd5a6('0x2d')](function(_0x564552){if(_0x564552){_0x10c296=_0x564552[_0xd5a6('0x4e')];if(!_0x36a2e7['query'][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x52478d['limit']=qs['limit'](_0x36a2e7['query']['limit']);_0x52478d[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x36a2e7['query'][_0xd5a6('0x27')]);}return _0x1e4207[_0xd5a6('0x14e')](_0x52478d);}})[_0xd5a6('0x2d')](function(_0x3808d9){if(_0x3808d9){return _0x3808d9?{'count':_0x10c296,'rows':_0x3808d9}:null;}})['then'](respondWithResult(_0x1e3d73,null))[_0xd5a6('0x63')](handleError(_0x1e3d73,null));};exports[_0xd5a6('0x150')]=function(_0x2b8bbf,_0x528669,_0x335445){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x2b8bbf[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x528669,null))[_0xd5a6('0x2d')](function(_0x24e491){if(_0x24e491){return _0x24e491[_0xd5a6('0x150')](_0x2b8bbf['body'][_0xd5a6('0x6d')],_[_0xd5a6('0x6e')](_0x2b8bbf['body'],[_0xd5a6('0x6d'),'id'])||{});}})[_0xd5a6('0x2d')](respondWithResult(_0x528669,null))[_0xd5a6('0x63')](handleError(_0x528669,null));};exports[_0xd5a6('0x151')]=function(_0x360d72,_0xe72d10,_0x518d71){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x360d72[_0xd5a6('0x65')]['id']}})['then'](handleEntityNotFound(_0xe72d10,null))[_0xd5a6('0x2d')](function(_0x3b1718){if(_0x3b1718){return _0x3b1718['removeFaxAccounts'](_0x360d72[_0xd5a6('0x48')][_0xd5a6('0x6d')]);}})[_0xd5a6('0x2d')](respondWithStatusCode(_0xe72d10,null))[_0xd5a6('0x63')](handleError(_0xe72d10,null));};exports['getMailAccounts']=function(_0x9f6ebf,_0x241d32,_0x25e3d4){var _0x48af42={};var _0x478c47={};var _0x4ed737;var _0x20c320;return db['User'][_0xd5a6('0xa2')]({'where':{'id':_0x9f6ebf['params']['id']}})['then'](handleEntityNotFound(_0x241d32,null))[_0xd5a6('0x2d')](function(_0x45e0e4){if(_0x45e0e4){_0x4ed737=_0x45e0e4;_0x478c47[_0xd5a6('0x44')]=_[_0xd5a6('0x49')](db[_0xd5a6('0x152')][_0xd5a6('0x41')]);_0x478c47[_0xd5a6('0x48')]=_['keys'](_0x9f6ebf['query']);_0x478c47['filters']=_[_0xd5a6('0x4b')](_0x478c47[_0xd5a6('0x44')],_0x478c47[_0xd5a6('0x48')]);_0x48af42[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x478c47[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x9f6ebf[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x48af42[_0xd5a6('0x4d')]=_0x48af42[_0xd5a6('0x4d')]['length']?_0x48af42[_0xd5a6('0x4d')]:_0x478c47[_0xd5a6('0x44')];_0x48af42['order']=qs[_0xd5a6('0x50')](_0x9f6ebf[_0xd5a6('0x48')]['sort']);_0x48af42[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_[_0xd5a6('0xe2')](_0x9f6ebf[_0xd5a6('0x48')],_0x478c47[_0xd5a6('0x4a')]));if(_0x9f6ebf['query'][_0xd5a6('0x36')]){_0x48af42[_0xd5a6('0x51')]=_['merge'](_0x48af42[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x48af42['attributes'],function(_0x5874f9){var _0x51b004={};_0x51b004[_0x5874f9]={'$like':'%'+_0x9f6ebf[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x51b004;})});}_0x48af42=_['merge']({},_0x48af42,_0x9f6ebf['options']);return _0x4ed737[_0xd5a6('0x153')](_0x48af42);}})['then'](function(_0x135834){if(_0x135834){_0x20c320=_0x135834[_0xd5a6('0x4e')];if(!_0x9f6ebf['query'][_0xd5a6('0xd8')]('nolimit')){_0x48af42[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x9f6ebf[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x48af42['offset']=qs[_0xd5a6('0x27')](_0x9f6ebf[_0xd5a6('0x48')]['offset']);}return _0x4ed737[_0xd5a6('0x153')](_0x48af42);}})[_0xd5a6('0x2d')](function(_0x1aef2f){if(_0x1aef2f){return _0x1aef2f?{'count':_0x20c320,'rows':_0x1aef2f}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x241d32,null))['catch'](handleError(_0x241d32,null));};exports['addMailAccounts']=function(_0x54380f,_0x2fb515,_0x570b8d){return db['User'][_0xd5a6('0x67')]({'where':{'id':_0x54380f[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x2fb515,null))['then'](function(_0x35ccbe){if(_0x35ccbe){return _0x35ccbe[_0xd5a6('0x154')](_0x54380f['body']['ids'],_[_0xd5a6('0x6e')](_0x54380f[_0xd5a6('0x6a')],[_0xd5a6('0x6d'),'id'])||{});}})['then'](respondWithResult(_0x2fb515,null))[_0xd5a6('0x63')](handleError(_0x2fb515,null));};exports['removeMailAccounts']=function(_0x584273,_0x2a478b,_0x36d0ea){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x584273[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x2a478b,null))['then'](function(_0x18d302){if(_0x18d302){return _0x18d302['removeMailAccounts'](_0x584273[_0xd5a6('0x48')]['ids']);}})['then'](respondWithStatusCode(_0x2a478b,null))['catch'](handleError(_0x2a478b,null));};exports['getOpenchannelAccounts']=function(_0x2956e7,_0x1a6acd,_0x5dfcb3){var _0x31a91f={};var _0x41cb40={};var _0x32266b;var _0x1dcaaf;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x2956e7[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x1a6acd,null))['then'](function(_0x1a86b7){if(_0x1a86b7){_0x32266b=_0x1a86b7;_0x41cb40[_0xd5a6('0x44')]=_[_0xd5a6('0x49')](db['OpenchannelAccount']['rawAttributes']);_0x41cb40['query']=_[_0xd5a6('0x49')](_0x2956e7[_0xd5a6('0x48')]);_0x41cb40[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x41cb40[_0xd5a6('0x44')],_0x41cb40[_0xd5a6('0x48')]);_0x31a91f[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x41cb40[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x2956e7[_0xd5a6('0x48')]['fields']));_0x31a91f[_0xd5a6('0x4d')]=_0x31a91f[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x31a91f[_0xd5a6('0x4d')]:_0x41cb40[_0xd5a6('0x44')];_0x31a91f[_0xd5a6('0xd7')]=qs['sort'](_0x2956e7[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x31a91f['where']=qs['filters'](_['pick'](_0x2956e7[_0xd5a6('0x48')],_0x41cb40[_0xd5a6('0x4a')]));if(_0x2956e7[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x31a91f[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x31a91f[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x31a91f[_0xd5a6('0x4d')],function(_0x1c2c20){var _0x3f62f2={};_0x3f62f2[_0x1c2c20]={'$like':'%'+_0x2956e7[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x3f62f2;})});}_0x31a91f=_['merge']({},_0x31a91f,_0x2956e7[_0xd5a6('0x56')]);return _0x32266b[_0xd5a6('0x155')](_0x31a91f);}})[_0xd5a6('0x2d')](function(_0x1bc2f0){if(_0x1bc2f0){_0x1dcaaf=_0x1bc2f0[_0xd5a6('0x4e')];if(!_0x2956e7['query'][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x31a91f[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x2956e7[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x31a91f[_0xd5a6('0x27')]=qs['offset'](_0x2956e7[_0xd5a6('0x48')][_0xd5a6('0x27')]);}return _0x32266b['getOpenchannelAccounts'](_0x31a91f);}})[_0xd5a6('0x2d')](function(_0x3339a9){if(_0x3339a9){return _0x3339a9?{'count':_0x1dcaaf,'rows':_0x3339a9}:null;}})['then'](respondWithResult(_0x1a6acd,null))['catch'](handleError(_0x1a6acd,null));};exports[_0xd5a6('0x156')]=function(_0x295a3c,_0xd67ac8,_0x522df3){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x295a3c['params']['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0xd67ac8,null))['then'](function(_0x37dac7){if(_0x37dac7){return _0x37dac7[_0xd5a6('0x156')](_0x295a3c['body']['ids'],_[_0xd5a6('0x6e')](_0x295a3c['body'],[_0xd5a6('0x6d'),'id'])||{});}})[_0xd5a6('0x2d')](respondWithResult(_0xd67ac8,null))[_0xd5a6('0x63')](handleError(_0xd67ac8,null));};exports[_0xd5a6('0x157')]=function(_0x33c704,_0x36b55e,_0x303db8){return db[_0xd5a6('0x40')]['find']({'where':{'id':_0x33c704[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x36b55e,null))[_0xd5a6('0x2d')](function(_0x3a52c4){if(_0x3a52c4){return _0x3a52c4[_0xd5a6('0x157')](_0x33c704[_0xd5a6('0x48')]['ids']);}})[_0xd5a6('0x2d')](respondWithStatusCode(_0x36b55e,null))['catch'](handleError(_0x36b55e,null));};exports[_0xd5a6('0x158')]=function(_0x30d0ac,_0x5e3c54,_0x3883b5){var _0x5e4510={};var _0x1f5f5a={};var _0x1de342;var _0x380ba9;return db[_0xd5a6('0x40')]['findOne']({'where':{'id':_0x30d0ac['params']['id']}})['then'](handleEntityNotFound(_0x5e3c54,null))['then'](function(_0x38d455){if(_0x38d455){_0x1de342=_0x38d455;_0x1f5f5a[_0xd5a6('0x44')]=_['keys'](db[_0xd5a6('0x159')][_0xd5a6('0x41')]);_0x1f5f5a[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x30d0ac[_0xd5a6('0x48')]);_0x1f5f5a[_0xd5a6('0x4a')]=_['intersection'](_0x1f5f5a[_0xd5a6('0x44')],_0x1f5f5a[_0xd5a6('0x48')]);_0x5e4510[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x1f5f5a['model'],qs['fields'](_0x30d0ac[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x5e4510[_0xd5a6('0x4d')]=_0x5e4510[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x5e4510[_0xd5a6('0x4d')]:_0x1f5f5a[_0xd5a6('0x44')];_0x5e4510[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x30d0ac[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x5e4510[_0xd5a6('0x51')]=qs['filters'](_[_0xd5a6('0xe2')](_0x30d0ac[_0xd5a6('0x48')],_0x1f5f5a[_0xd5a6('0x4a')]));if(_0x30d0ac[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x5e4510[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x5e4510['where'],{'$or':_[_0xd5a6('0x38')](_0x5e4510[_0xd5a6('0x4d')],function(_0x677807){var _0x1188e4={};_0x1188e4[_0x677807]={'$like':'%'+_0x30d0ac[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x1188e4;})});}_0x5e4510=_[_0xd5a6('0x66')]({},_0x5e4510,_0x30d0ac[_0xd5a6('0x56')]);return _0x1de342[_0xd5a6('0x158')](_0x5e4510);}})[_0xd5a6('0x2d')](function(_0x476959){if(_0x476959){_0x380ba9=_0x476959[_0xd5a6('0x4e')];if(!_0x30d0ac[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x5e4510[_0xd5a6('0x2a')]=qs['limit'](_0x30d0ac[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x5e4510[_0xd5a6('0x27')]=qs['offset'](_0x30d0ac[_0xd5a6('0x48')][_0xd5a6('0x27')]);}return _0x1de342[_0xd5a6('0x158')](_0x5e4510);}})[_0xd5a6('0x2d')](function(_0x3491df){if(_0x3491df){return _0x3491df?{'count':_0x380ba9,'rows':_0x3491df}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x5e3c54,null))['catch'](handleError(_0x5e3c54,null));};exports['addSmsAccounts']=function(_0x48f599,_0x48e365,_0x339930){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x48f599[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x48e365,null))['then'](function(_0x1401f0){if(_0x1401f0){return _0x1401f0[_0xd5a6('0x15a')](_0x48f599[_0xd5a6('0x6a')]['ids'],_[_0xd5a6('0x6e')](_0x48f599['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x48e365,null))['catch'](handleError(_0x48e365,null));};exports[_0xd5a6('0x15b')]=function(_0x172597,_0x24e9dd,_0x3e2d96){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x172597[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x24e9dd,null))[_0xd5a6('0x2d')](function(_0x4a4856){if(_0x4a4856){return _0x4a4856[_0xd5a6('0x15b')](_0x172597[_0xd5a6('0x48')][_0xd5a6('0x6d')]);}})[_0xd5a6('0x2d')](respondWithStatusCode(_0x24e9dd,null))[_0xd5a6('0x63')](handleError(_0x24e9dd,null));};exports['getChatWebsites']=function(_0x174bd0,_0x459859,_0x2c6931){var _0x372cda={};var _0x59fc51={};var _0x3d2e25;var _0x45ca48;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x174bd0[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x459859,null))[_0xd5a6('0x2d')](function(_0x11dd7f){if(_0x11dd7f){_0x3d2e25=_0x11dd7f;_0x59fc51[_0xd5a6('0x44')]=_[_0xd5a6('0x49')](db[_0xd5a6('0x15c')][_0xd5a6('0x41')]);_0x59fc51[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x174bd0[_0xd5a6('0x48')]);_0x59fc51[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x59fc51[_0xd5a6('0x44')],_0x59fc51[_0xd5a6('0x48')]);_0x372cda['attributes']=_[_0xd5a6('0x4b')](_0x59fc51[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x174bd0[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x372cda[_0xd5a6('0x4d')]=_0x372cda[_0xd5a6('0x4d')]['length']?_0x372cda['attributes']:_0x59fc51[_0xd5a6('0x44')];_0x372cda[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x174bd0[_0xd5a6('0x48')]['sort']);_0x372cda['where']=qs[_0xd5a6('0x4a')](_['pick'](_0x174bd0[_0xd5a6('0x48')],_0x59fc51[_0xd5a6('0x4a')]));if(_0x174bd0[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x372cda['where']=_[_0xd5a6('0x66')](_0x372cda['where'],{'$or':_[_0xd5a6('0x38')](_0x372cda[_0xd5a6('0x4d')],function(_0x116d9d){var _0x1e0826={};_0x1e0826[_0x116d9d]={'$like':'%'+_0x174bd0[_0xd5a6('0x48')]['filter']+'%'};return _0x1e0826;})});}_0x372cda=_[_0xd5a6('0x66')]({},_0x372cda,_0x174bd0[_0xd5a6('0x56')]);return _0x3d2e25[_0xd5a6('0x15d')](_0x372cda);}})[_0xd5a6('0x2d')](function(_0x28033c){if(_0x28033c){_0x45ca48=_0x28033c[_0xd5a6('0x4e')];if(!_0x174bd0['query'][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x372cda[_0xd5a6('0x2a')]=qs['limit'](_0x174bd0[_0xd5a6('0x48')]['limit']);_0x372cda[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x174bd0[_0xd5a6('0x48')][_0xd5a6('0x27')]);}return _0x3d2e25[_0xd5a6('0x15d')](_0x372cda);}})[_0xd5a6('0x2d')](function(_0x33a82c){if(_0x33a82c){return _0x33a82c?{'count':_0x45ca48,'rows':_0x33a82c}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x459859,null))[_0xd5a6('0x63')](handleError(_0x459859,null));};exports[_0xd5a6('0x15e')]=function(_0x5ec073,_0x34c320,_0x4aa917){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x5ec073[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x34c320,null))['then'](function(_0x5a7685){if(_0x5a7685){return _0x5a7685[_0xd5a6('0x15e')](_0x5ec073[_0xd5a6('0x6a')]['ids'],_[_0xd5a6('0x6e')](_0x5ec073['body'],[_0xd5a6('0x6d'),'id'])||{});}})['then'](respondWithResult(_0x34c320,null))['catch'](handleError(_0x34c320,null));};exports['removeChatWebsites']=function(_0x5cbc18,_0x1fce15,_0x55afed){return db[_0xd5a6('0x40')]['find']({'where':{'id':_0x5cbc18['params']['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x1fce15,null))['then'](function(_0x3a7191){if(_0x3a7191){return _0x3a7191[_0xd5a6('0x15f')](_0x5cbc18['query'][_0xd5a6('0x6d')]);}})['then'](respondWithStatusCode(_0x1fce15,null))[_0xd5a6('0x63')](handleError(_0x1fce15,null));};exports[_0xd5a6('0x160')]=function(_0x3e475b,_0x404488,_0x256d5a){var _0x5dd1dd={};var _0x5d9cd5={};var _0xeeb337;var _0xffd30f;return db[_0xd5a6('0x40')]['findOne']({'where':{'id':_0x3e475b['params']['id']}})['then'](handleEntityNotFound(_0x404488,null))[_0xd5a6('0x2d')](function(_0x28584b){if(_0x28584b){_0xeeb337=_0x28584b;_0x5d9cd5[_0xd5a6('0x44')]=_['keys'](db[_0xd5a6('0x161')][_0xd5a6('0x41')]);_0x5d9cd5[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x3e475b[_0xd5a6('0x48')]);_0x5d9cd5[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x5d9cd5['model'],_0x5d9cd5[_0xd5a6('0x48')]);_0x5dd1dd[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x5d9cd5[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x3e475b['query'][_0xd5a6('0x4c')]));_0x5dd1dd[_0xd5a6('0x4d')]=_0x5dd1dd[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x5dd1dd[_0xd5a6('0x4d')]:_0x5d9cd5['model'];_0x5dd1dd[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x3e475b[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x5dd1dd[_0xd5a6('0x51')]=qs['filters'](_[_0xd5a6('0xe2')](_0x3e475b[_0xd5a6('0x48')],_0x5d9cd5['filters']));if(_0x3e475b[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x5dd1dd[_0xd5a6('0x51')]=_['merge'](_0x5dd1dd['where'],{'$or':_[_0xd5a6('0x38')](_0x5dd1dd[_0xd5a6('0x4d')],function(_0x5ba0fd){var _0x1f2b6c={};_0x1f2b6c[_0x5ba0fd]={'$like':'%'+_0x3e475b[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x1f2b6c;})});}_0x5dd1dd=_['merge']({},_0x5dd1dd,_0x3e475b['options']);return _0xeeb337[_0xd5a6('0x160')](_0x5dd1dd);}})[_0xd5a6('0x2d')](function(_0x4ce0ff){if(_0x4ce0ff){_0xffd30f=_0x4ce0ff[_0xd5a6('0x4e')];if(!_0x3e475b[_0xd5a6('0x48')][_0xd5a6('0xd8')](_0xd5a6('0x4f'))){_0x5dd1dd[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x3e475b['query'][_0xd5a6('0x2a')]);_0x5dd1dd['offset']=qs[_0xd5a6('0x27')](_0x3e475b[_0xd5a6('0x48')][_0xd5a6('0x27')]);}return _0xeeb337[_0xd5a6('0x160')](_0x5dd1dd);}})[_0xd5a6('0x2d')](function(_0xe8e3c8){if(_0xe8e3c8){return _0xe8e3c8?{'count':_0xffd30f,'rows':_0xe8e3c8}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x404488,null))['catch'](handleError(_0x404488,null));};exports['addWhatsappAccounts']=function(_0x1d6d7c,_0x311097,_0x127a30){return db['User']['find']({'where':{'id':_0x1d6d7c[_0xd5a6('0x65')]['id']}})['then'](handleEntityNotFound(_0x311097,null))['then'](function(_0x17ccbe){if(_0x17ccbe){return _0x17ccbe[_0xd5a6('0x162')](_0x1d6d7c[_0xd5a6('0x6a')][_0xd5a6('0x6d')],_[_0xd5a6('0x6e')](_0x1d6d7c[_0xd5a6('0x6a')],[_0xd5a6('0x6d'),'id'])||{});}})[_0xd5a6('0x2d')](respondWithResult(_0x311097,null))[_0xd5a6('0x63')](handleError(_0x311097,null));};exports[_0xd5a6('0x163')]=function(_0x810ddd,_0x20896e,_0x12ce41){return db['User'][_0xd5a6('0x67')]({'where':{'id':_0x810ddd[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x20896e,null))[_0xd5a6('0x2d')](function(_0x21ac9f){if(_0x21ac9f){return _0x21ac9f['removeWhatsappAccounts'](_0x810ddd[_0xd5a6('0x48')]['ids']);}})[_0xd5a6('0x2d')](respondWithStatusCode(_0x20896e,null))['catch'](handleError(_0x20896e,null));};exports[_0xd5a6('0x164')]=function(_0x4ea0b9,_0x110293,_0x5e7c92){var _0x244d7b={};var _0x1535e8={};var _0x767a3b;var _0xcff36a;return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x4ea0b9[_0xd5a6('0x65')]['id']}})['then'](handleEntityNotFound(_0x110293,null))[_0xd5a6('0x2d')](function(_0x373f1b){if(_0x373f1b){_0x767a3b=_0x373f1b;_0x1535e8['model']=_[_0xd5a6('0x49')](db[_0xd5a6('0x165')][_0xd5a6('0x41')]);_0x1535e8[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x4ea0b9['query']);_0x1535e8['filters']=_[_0xd5a6('0x4b')](_0x1535e8[_0xd5a6('0x44')],_0x1535e8[_0xd5a6('0x48')]);_0x244d7b[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x1535e8[_0xd5a6('0x44')],qs['fields'](_0x4ea0b9['query'][_0xd5a6('0x4c')]));_0x244d7b[_0xd5a6('0x4d')]=_0x244d7b['attributes'][_0xd5a6('0x4e')]?_0x244d7b['attributes']:_0x1535e8[_0xd5a6('0x44')];_0x244d7b['order']=qs[_0xd5a6('0x50')](_0x4ea0b9[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x244d7b[_0xd5a6('0x51')]=qs[_0xd5a6('0x4a')](_[_0xd5a6('0xe2')](_0x4ea0b9['query'],_0x1535e8['filters']));if(_0x4ea0b9[_0xd5a6('0x48')]['filter']){_0x244d7b['where']=_[_0xd5a6('0x66')](_0x244d7b['where'],{'$or':_[_0xd5a6('0x38')](_0x244d7b[_0xd5a6('0x4d')],function(_0x52a8ec){var _0x46c338={};_0x46c338[_0x52a8ec]={'$like':'%'+_0x4ea0b9[_0xd5a6('0x48')][_0xd5a6('0x36')]+'%'};return _0x46c338;})});}_0x244d7b=_[_0xd5a6('0x66')]({},_0x244d7b,_0x4ea0b9['options']);return _0x767a3b[_0xd5a6('0x164')](_0x244d7b);}})[_0xd5a6('0x2d')](function(_0x5603d7){if(_0x5603d7){_0xcff36a=_0x5603d7[_0xd5a6('0x4e')];if(!_0x4ea0b9['query'][_0xd5a6('0xd8')]('nolimit')){_0x244d7b[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x4ea0b9[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x244d7b[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x4ea0b9[_0xd5a6('0x48')][_0xd5a6('0x27')]);}return _0x767a3b[_0xd5a6('0x164')](_0x244d7b);}})[_0xd5a6('0x2d')](function(_0x59ba98){if(_0x59ba98){return _0x59ba98?{'count':_0xcff36a,'rows':_0x59ba98}:null;}})[_0xd5a6('0x2d')](respondWithResult(_0x110293,null))[_0xd5a6('0x63')](handleError(_0x110293,null));};exports[_0xd5a6('0x166')]=function(_0x25f1da,_0x4170f2,_0x11c9a2){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x25f1da[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x4170f2,null))['then'](function(_0x46e476){if(_0x46e476){return _0x46e476[_0xd5a6('0x166')](_0x25f1da[_0xd5a6('0x6a')]['ids'],_[_0xd5a6('0x6e')](_0x25f1da[_0xd5a6('0x6a')],[_0xd5a6('0x6d'),'id'])||{});}})[_0xd5a6('0x2d')](respondWithResult(_0x4170f2,null))['catch'](handleError(_0x4170f2,null));};exports[_0xd5a6('0x167')]=function(_0x417448,_0x248d78,_0x4655e0){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x417448[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x248d78,null))['then'](function(_0xfea62b){if(_0xfea62b){return _0xfea62b['removeSquareProjects'](_0x417448[_0xd5a6('0x48')][_0xd5a6('0x6d')]);}})['then'](respondWithStatusCode(_0x248d78,null))[_0xd5a6('0x63')](handleError(_0x248d78,null));};exports[_0xd5a6('0x168')]=function(_0x8a3627,_0x5392a5){var _0x30e4c6={},_0x5964f0={},_0x26693a={'count':0x0,'rows':[]};var _0x5b4d3d=db[_0xd5a6('0x169')][_0xd5a6('0x41')];_0x5964f0[_0xd5a6('0x44')]=_['keys'](_0x5b4d3d);_0x5964f0[_0xd5a6('0x48')]=_[_0xd5a6('0x49')](_0x8a3627[_0xd5a6('0x48')]);_0x5964f0[_0xd5a6('0x4a')]=_[_0xd5a6('0x4b')](_0x5964f0[_0xd5a6('0x44')],_0x5964f0[_0xd5a6('0x48')]);_0x5964f0[_0xd5a6('0x4a')]=_[_0xd5a6('0x109')](_0x5964f0[_0xd5a6('0x4a')],[_0xd5a6('0x16a'),_0xd5a6('0x16b'),'$gt',_0xd5a6('0x16c'),_0xd5a6('0x16d'),_0xd5a6('0x16e'),_0xd5a6('0x16f'),'$eq',_0xd5a6('0x170'),_0xd5a6('0x171'),_0xd5a6('0x172'),_0xd5a6('0x173'),_0xd5a6('0x174'),_0xd5a6('0x175'),_0xd5a6('0x176'),_0xd5a6('0x177'),_0xd5a6('0x178'),_0xd5a6('0x175'),_0xd5a6('0x179'),_0xd5a6('0x17a'),'$contained',_0xd5a6('0x17b')]);_0x30e4c6[_0xd5a6('0x4d')]=_[_0xd5a6('0x4b')](_0x5964f0[_0xd5a6('0x44')],qs[_0xd5a6('0x4c')](_0x8a3627[_0xd5a6('0x48')][_0xd5a6('0x4c')]));_0x30e4c6[_0xd5a6('0x4d')]=_0x30e4c6[_0xd5a6('0x4d')][_0xd5a6('0x4e')]?_0x30e4c6[_0xd5a6('0x4d')]:_0x5964f0[_0xd5a6('0x44')];if(!_0x8a3627[_0xd5a6('0x48')]['hasOwnProperty']('nolimit')){_0x30e4c6[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x8a3627[_0xd5a6('0x48')][_0xd5a6('0x2a')]);_0x30e4c6[_0xd5a6('0x27')]=qs[_0xd5a6('0x27')](_0x8a3627[_0xd5a6('0x48')][_0xd5a6('0x27')]);}_0x30e4c6[_0xd5a6('0xd7')]=qs[_0xd5a6('0x50')](_0x8a3627[_0xd5a6('0x48')][_0xd5a6('0x50')]);_0x30e4c6['where']=qs[_0xd5a6('0x4a')](_[_0xd5a6('0xe2')](_0x8a3627[_0xd5a6('0x48')],_0x5964f0[_0xd5a6('0x4a')]));if(_0x8a3627[_0xd5a6('0x48')][_0xd5a6('0x36')]){_0x30e4c6[_0xd5a6('0x51')]=_[_0xd5a6('0x66')](_0x30e4c6[_0xd5a6('0x51')],{'$or':_[_0xd5a6('0x38')](_0x30e4c6[_0xd5a6('0x4d')],function(_0x164d58){var _0x39b86a={};_0x39b86a[_0x164d58]={'$like':'%'+_0x8a3627['query'][_0xd5a6('0x36')]+'%'};return _0x39b86a;})});}_0x30e4c6[_0xd5a6('0x51')]={'$and':[_0x30e4c6[_0xd5a6('0x51')],{'$or':[{'UserId':_0x8a3627[_0xd5a6('0x65')]['id']},{'OwnerId':_0x8a3627[_0xd5a6('0x65')]['id']}]}]};_0x30e4c6=_[_0xd5a6('0x66')]({},_0x30e4c6,_0x8a3627[_0xd5a6('0x56')]);var _0x3d07b8={'where':_0x30e4c6[_0xd5a6('0x51')]};return db[_0xd5a6('0x169')][_0xd5a6('0x29')](_0x3d07b8)[_0xd5a6('0x2d')](function(_0x5d5b64){_0x26693a[_0xd5a6('0x29')]=_0x5d5b64;if(_0x8a3627['query']['includeAll']){_0x30e4c6[_0xd5a6('0x57')]=[{'attributes':['id',_0xd5a6('0x17c'),_0xd5a6('0x17d'),_0xd5a6('0xf6')],'model':db[_0xd5a6('0xd6')],'as':_0xd5a6('0x17e')},{'attributes':['id',_0xd5a6('0x3b'),_0xd5a6('0x17f')],'model':db[_0xd5a6('0xb7')],'as':_0xd5a6('0xe1')}];}return db[_0xd5a6('0x169')][_0xd5a6('0x59')](_0x30e4c6);})[_0xd5a6('0x2d')](function(_0x3ba529){_0x26693a['rows']=_0x3ba529;return _0x26693a;})[_0xd5a6('0x2d')](respondWithFilteredResult(_0x5392a5,_0x30e4c6))['catch'](handleError(_0x5392a5,null));};exports[_0xd5a6('0x180')]=function(_0x31f2dc,_0x4dd4a0,_0x5c3903){if(!_[_0xd5a6('0x74')](_0x31f2dc['user']['id'])&&(_0x31f2dc['user'][_0xd5a6('0x2f')]=='admin'||_0x31f2dc[_0xd5a6('0x32')][_0xd5a6('0x2f')]==_0xd5a6('0x32'))){return db[_0xd5a6('0x40')][_0xd5a6('0xa2')]({'where':{'id':_0x31f2dc['params']['id']},'raw':!![]})[_0xd5a6('0x2d')](function(_0x14e0d3){return authService[_0xd5a6('0x181')](_0x14e0d3);})[_0xd5a6('0x2d')](function(_0x2bdbe9){if(_0x2bdbe9){return _0x4dd4a0['status'](0xc8)[_0xd5a6('0x26')]({'api_key':_0x2bdbe9['token']});}else{return _0x4dd4a0[_0xd5a6('0x24')](0xcc)[_0xd5a6('0x26')]({'message':_0xd5a6('0x182')});}})[_0xd5a6('0x63')](handleError(_0x4dd4a0,0x193));}else{return _0x4dd4a0[_0xd5a6('0x24')](0x191)[_0xd5a6('0x26')]({'message':_0xd5a6('0x183')});}};exports[_0xd5a6('0x184')]=function(_0x3eaeb8,_0x34f37f,_0x476996){if(!_[_0xd5a6('0x74')](_0x3eaeb8[_0xd5a6('0x32')]['id'])&&(_0x3eaeb8[_0xd5a6('0x32')]['role']==_0xd5a6('0x30')||_0x3eaeb8[_0xd5a6('0x32')][_0xd5a6('0x2f')]==_0xd5a6('0x32'))){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x3eaeb8[_0xd5a6('0x65')]['id']}})['then'](function(_0x4b4a47){return authService[_0xd5a6('0x185')](_0x4b4a47);})[_0xd5a6('0x2d')](function(_0x33df61){return db[_0xd5a6('0x40')][_0xd5a6('0x2c')]({'apiKeyIat':_0x33df61[_0xd5a6('0x186')],'apiKeyNonce':_0x33df61[_0xd5a6('0x187')]},{'where':{'id':_0x3eaeb8['params']['id']}})[_0xd5a6('0x2d')](function(){return _0x34f37f['status'](0xc8)[_0xd5a6('0x26')]({'api_key':_0x33df61['token']});});})['catch'](handleError(_0x34f37f,0x193));}else{return _0x34f37f[_0xd5a6('0x24')](0x191)['json']({'message':_0xd5a6('0x183')});}};exports['removeApiKey']=function(_0x1b4da3,_0x5abda3,_0x2b8c32){if(!_[_0xd5a6('0x74')](_0x1b4da3['user']['id'])&&(_0x1b4da3[_0xd5a6('0x32')]['role']==_0xd5a6('0x30')||_0x1b4da3[_0xd5a6('0x32')][_0xd5a6('0x2f')]==_0xd5a6('0x32'))){return db[_0xd5a6('0x40')][_0xd5a6('0x67')]({'where':{'id':_0x1b4da3[_0xd5a6('0x65')]['id']}})[_0xd5a6('0x2d')](handleEntityNotFound(_0x5abda3,null))[_0xd5a6('0x2d')](function(_0xf7f169){if(_0xf7f169&&_0xf7f169[_0xd5a6('0x188')]&&_0xf7f169['apiKeyIat'])return _0xf7f169;else throw{'message':_0xd5a6('0x189')};})[_0xd5a6('0x2d')](function(_0xecf364){return db['User']['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x1b4da3['params']['id']}});})[_0xd5a6('0x2d')](respondWithStatusCode(_0x5abda3,0xc8))[_0xd5a6('0x63')](handleError(_0x5abda3,0x193));}else{return _0x5abda3[_0xd5a6('0x24')](0x191)[_0xd5a6('0x26')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xd5a6('0x18a')]=function(_0x2af575,_0x470331){var _0x49e2f5=_0x2af575[_0xd5a6('0x32')][_0xd5a6('0xe3')]({'plain':!![]});if(!_0x49e2f5){return _0x470331[_0xd5a6('0x24')](0x191)['send'](_0xd5a6('0x18b'));}else{return _0x470331[_0xd5a6('0x24')](0xc8)[_0xd5a6('0x26')](_0x49e2f5);}};exports[_0xd5a6('0x18c')]=function(_0x5ace06,_0x5e7e8c){var _0x2f49ad={'offset':0x0},_0x333940={'count':0x0,'rows':[]};Promise[_0xd5a6('0x18d')]()[_0xd5a6('0x2d')](function(){if(!_0x5ace06[_0xd5a6('0x48')]['filter']&&!_0x5ace06['query'][_0xd5a6('0x18e')]&&!_0x5ace06['query']['queues'])return[];return Promise['resolve']()['then'](function(){var _0x24f62d=[];if(!_[_0xd5a6('0x94')](_0x5ace06[_0xd5a6('0x48')][_0xd5a6('0x18e')])){_0x24f62d['push'](db[_0xd5a6('0x121')][_0xd5a6('0x59')]({'attributes':['id',_0xd5a6('0x3b')],'where':{'id':_0x5ace06[_0xd5a6('0x48')][_0xd5a6('0x18e')]}}));}if(!_['isEmpty'](_0x5ace06[_0xd5a6('0x48')]['queues'])){_0x24f62d[_0xd5a6('0x58')](db['VoiceQueue'][_0xd5a6('0x59')]({'attributes':['id','name'],'type':_0xd5a6('0x18f'),'where':{'id':_0x5ace06[_0xd5a6('0x48')][_0xd5a6('0x190')]}}));}return Promise[_0xd5a6('0x62')](_0x24f62d);})[_0xd5a6('0x2d')](function(_0x185e28){var _0xba1b28=_[_0xd5a6('0x131')](_0x185e28)['map'](function(_0x525aec){return _0x525aec[_0xd5a6('0x135')]({'attributes':['id',_0xd5a6('0x3b'),_0xd5a6('0x72'),'online'],'raw':!![]});});return Promise[_0xd5a6('0x62')](_0xba1b28);})[_0xd5a6('0x2d')](function(_0x5f3b5d){var _0x431702=_[_0xd5a6('0x131')](_0x5f3b5d);if(!_0x5ace06[_0xd5a6('0x48')]['filter'])return _0x431702;if(_['isEmpty'](_0x431702)){return db[_0xd5a6('0x40')][_0xd5a6('0x59')]({'attributes':['id','name','internal',_0xd5a6('0xaa')],'where':{'role':_0xd5a6('0x34'),'$or':[db[_0xd5a6('0x54')][_0xd5a6('0x51')](db[_0xd5a6('0x54')]['fn']('lower',db[_0xd5a6('0x54')][_0xd5a6('0x191')]('name')),{'$like':'%'+_0x5ace06[_0xd5a6('0x48')][_0xd5a6('0x36')][_0xd5a6('0xaf')]()+'%'}),{'internal':{'$like':'%'+_0x5ace06['query'][_0xd5a6('0x36')]+'%'}}]},'raw':!![]});}else{return _(_0x431702)[_0xd5a6('0x131')]()[_0xd5a6('0x36')](function(_0x266f00){return _0x266f00[_0xd5a6('0x3b')][_0xd5a6('0xaf')]()[_0xd5a6('0x3a')](_0x5ace06[_0xd5a6('0x48')][_0xd5a6('0x36')][_0xd5a6('0xaf')]())||_0x266f00['internal']['toString']()[_0xd5a6('0x3a')](_0x5ace06[_0xd5a6('0x48')][_0xd5a6('0x36')]);})[_0xd5a6('0x39')]();}})['then'](function(_0x4f83db){var _0x3975eb=_0xd5a6('0x3b');var _0x41a791=_0xd5a6('0x192');if(_0x5ace06['query']['sort']){var _0x41a791=_0x5ace06[_0xd5a6('0x48')][_0xd5a6('0x50')][0x0]==='-'?_0xd5a6('0x193'):_0xd5a6('0x192');var _0x3975eb=_0x41a791==='asc'?_0x5ace06[_0xd5a6('0x48')]['sort']:_0x5ace06['query'][_0xd5a6('0x50')][_0xd5a6('0x194')](0x1);}return _(_0x4f83db)['uniqBy']('id')[_0xd5a6('0x195')]([function(_0x2d6bb1){return _0x3975eb===_0xd5a6('0x3b')?_0x2d6bb1[_0x3975eb][_0xd5a6('0xaf')]():_0x2d6bb1[_0x3975eb];}],[_0x41a791])[_0xd5a6('0x38')](function(_0x3e03d1){return _[_0xd5a6('0xe2')](_0x3e03d1,['id',_0xd5a6('0x3b'),'internal',_0xd5a6('0xaa')]);})['value']();})[_0xd5a6('0x2d')](function(_0x560fc1){return client[_0xd5a6('0x19')]('Agents',_0x5ace06)[_0xd5a6('0x2d')](function(_0xc67d5c){if(_0xc67d5c[_0xd5a6('0x20')])throw new Error(_0xd5a6('0x196'));var _0x5ce336=_0xc67d5c[_0xd5a6('0x22')];var _0x2c43a9=jayson[_0xd5a6('0x197')][_0xd5a6('0x18')]({'port':0x232c});return _0x2c43a9['request'](_0xd5a6('0x33'),_0x5ace06)[_0xd5a6('0x2d')](function(_0x508434){if(_0x508434[_0xd5a6('0x20')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x410cc9=_0x508434[_0xd5a6('0x22')];return _[_0xd5a6('0x66')]({},_0x410cc9,_0x5ce336);});})[_0xd5a6('0x2d')](function(_0x312fdf){return _[_0xd5a6('0x38')](_0x560fc1,function(_0x45aa25){var _0x56c227=_[_0xd5a6('0x67')](_0x312fdf[_0xd5a6('0x5a')],['id',_0x45aa25['id']]);if(!_0x56c227||!_0x45aa25['online']){_0x45aa25['status']=_0xd5a6('0x198');}else if(_0x56c227[_0xd5a6('0xba')]){_0x45aa25[_0xd5a6('0x24')]=_0xd5a6('0x10d');}else{_0x45aa25[_0xd5a6('0x24')]=_['includes']([_0xd5a6('0x199'),_0xd5a6('0x19a'),_0xd5a6('0x19b'),_0xd5a6('0x19c'),null,undefined],_0x56c227[_0xd5a6('0x19d')])?_0xd5a6('0xaa'):_0xd5a6('0x19e');}return _0x45aa25;});});});})['then'](function(_0x341892){if(!_0x5ace06['query'][_0xd5a6('0xd8')]('nolimit')){_0x2f49ad[_0xd5a6('0x2a')]=qs[_0xd5a6('0x2a')](_0x5ace06['query'][_0xd5a6('0x2a')]||0xa);_0x2f49ad[_0xd5a6('0x27')]=qs['offset'](_0x5ace06[_0xd5a6('0x48')][_0xd5a6('0x27')]);}_0x333940[_0xd5a6('0x29')]=_0x341892[_0xd5a6('0x4e')];_0x333940[_0xd5a6('0x5a')]=_0x2f49ad[_0xd5a6('0x2a')]?_0x341892[_0xd5a6('0x19f')](_0x2f49ad[_0xd5a6('0x27')],_0x2f49ad['offset']+_0x2f49ad[_0xd5a6('0x2a')]):_0x341892;return _0x333940;})[_0xd5a6('0x2d')](respondWithFilteredResult(_0x5e7e8c,_0x2f49ad))[_0xd5a6('0x63')](handleError(_0x5e7e8c,null));};function get_open_tabs(_0x5e8cfb,_0x1807e2){var _0x333d63=_0x5e8cfb[_0xd5a6('0x1a0')](0x0)[_0xd5a6('0x1a1')]()+_0x5e8cfb['slice'](0x1);var _0x21b946={'type':db[_0xd5a6('0x98')][_0xd5a6('0x75')][_0xd5a6('0x76')],'raw':!![]};return new BPromise(function(_0x58ee00,_0x121a6c){var _0x756e6d=squel[_0xd5a6('0x1a2')]()[_0xd5a6('0x1a3')]('ui.'+_0x333d63+_0xd5a6('0x1a4'),'id')['field'](_0xd5a6('0x1a5'))[_0xd5a6('0x77')](_0xd5a6('0x1a6')+_0x5e8cfb+'_interactions','ui')[_0xd5a6('0x51')]('ui.UserId\x20=\x20?',_0x1807e2['id']);return db[_0xd5a6('0x54')][_0xd5a6('0x48')](_0x756e6d[_0xd5a6('0x1a7')](),_0x21b946)[_0xd5a6('0x2d')](function(_0x415da0){_0x1807e2[_0x333d63+_0xd5a6('0x1a8')]=_0x415da0;_0x58ee00(_0x415da0);})[_0xd5a6('0x63')](function(_0x3fb1ed){_0x121a6c(_0x3fb1ed);});});};
\ No newline at end of file
+var _0xa866=['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','getVoicePrefixes','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','concat','$and','$or','$gt','$gte','$lt','$lte','$eq','$not','$in','$notIn','$notLike','$iLike','$notILike','$like','$overlap','$contains','$any','CmHopper','firstName','Contact','dialActive','VoiceQueue','getApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyIat','API\x20key\x20not\x20available','whoami','getPresence','teams','queues','inbound','lower','toString','asc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','busy','slice','charAt','toUpperCase','SELECT','select','field','InteractionId','user_has_','OpenTabs','moment','bluebird','util','path','lodash','jayson/promise','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','socket.io-emitter','redis','./user.socket','register','defaults','client','http','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','status','end','json','offset','undefined','limit','count','set','update','destroy','get','admin','Users','user','Agents','Telephones','telephone','filter','ignore','value','find','name','sendStatus','stack','send','rawAttributes','type','key','includes','salt','getOptions','query','includeAll','include','attributes','push','findAll','rows','dataValues','sms','fax','mail','openchannel','all','show','params','differenceBy','keys','User','password','filters','model','intersection','fields','length','openTabs','whatsapp','body','role','describe','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)','QueryTypes','from','voicemail','mailbox','email','permissions','101','102','103','113','110','104','105','106','107','108','109','114','115','agent','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','each','VoiceMail','isEmpty','map','compact','UserProfileResource','changePassword','newPassword','Sequelize','ValidationError','authenticate','oldPassword','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','online','loginInPause','interface','isValidChannel','Unknown\x20channel','capitalize','toLowerCase','penalty','spread','Queue:save','voice','format','UserVoiceQueueRt','channel','isArray','emit','QueueId','Queue:remove','addAvatar','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','existsSync','server/files/images/','download','getOpenTabs','chat','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','sort','pick','where','merge','options','CmList','Tag','Tags','tag','hasOwnProperty','Queue','order','Queues','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','UserId','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','intrf','SIP/%s','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','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','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','voicePause','mailPause','faxPause','openchannelPause','smsPause','pauseType','lastPauseAt','unpause','manual','%s%s','Pause','getTeams','Team','addTeams','omit','setDataValue','Voice','getChatQueues','Chat','getMailQueues','Mail','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','getFaxQueues','Fax','getOpenchannelQueues','Openchannel','flatten','getDataValue','removeTeams','transaction','removeAgent','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove'];(function(_0x3cb03c,_0x31086f){var _0x16a443=function(_0x1aa0c3){while(--_0x1aa0c3){_0x3cb03c['push'](_0x3cb03c['shift']());}};_0x16a443(++_0x31086f);}(_0xa866,0x6a));var _0x6a86=function(_0x222439,_0xc186df){_0x222439=_0x222439-0x0;var _0x467889=_0xa866[_0x222439];return _0x467889;};'use strict';var moment=require(_0x6a86('0x0'));var BPromise=require(_0x6a86('0x1'));var util=require(_0x6a86('0x2'));var path=require(_0x6a86('0x3'));var fs=require('fs');var _=require(_0x6a86('0x4'));var squel=require('squel');var jayson=require(_0x6a86('0x5'));var Redis=require(_0x6a86('0x6'));var authService=require(_0x6a86('0x7'));var qs=require('../../components/parsers/qs');var logger=require(_0x6a86('0x8'))(_0x6a86('0x9'));var utils=require(_0x6a86('0xa'));var config=require('../../config/environment');var licenseUtil=require(_0x6a86('0xb'));var db=require(_0x6a86('0xc'))['db'];var socket=require(_0x6a86('0xd'))(new Redis(config[_0x6a86('0xe')]));require(_0x6a86('0xf'))[_0x6a86('0x10')](socket);config[_0x6a86('0xe')]=_[_0x6a86('0x11')](config[_0x6a86('0xe')],{'host':'localhost','port':0x18eb});var client=jayson[_0x6a86('0x12')][_0x6a86('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x100925,_0x5d6e7c,_0x238c92,_0x1797e8){return new BPromise(function(_0x49b4c6,_0x5b95e0){var _0x39e195=_0x1797e8||client;return _0x39e195[_0x6a86('0x14')](_0x100925,_0x238c92)[_0x6a86('0x15')](function(_0x3961f6){logger[_0x6a86('0x16')](_0x6a86('0x17'),_0x5d6e7c,_0x6a86('0x18'));logger[_0x6a86('0x19')]('User,\x20%s,\x20%s,\x20%s',_0x5d6e7c,_0x6a86('0x18'),JSON[_0x6a86('0x1a')](_0x3961f6));if(_0x3961f6['error']){if(_0x3961f6[_0x6a86('0x1b')][_0x6a86('0x1c')]===0x1f4){logger[_0x6a86('0x1b')](_0x6a86('0x17'),_0x5d6e7c,_0x3961f6[_0x6a86('0x1b')][_0x6a86('0x1d')]);return _0x5b95e0(_0x3961f6['error'][_0x6a86('0x1d')]);}logger[_0x6a86('0x1b')]('User,\x20%s,\x20%s',_0x5d6e7c,_0x3961f6['error'][_0x6a86('0x1d')]);return _0x49b4c6(_0x3961f6['error']['message']);}else{logger[_0x6a86('0x16')](_0x6a86('0x17'),_0x5d6e7c,_0x6a86('0x18'));_0x49b4c6(_0x3961f6['result'][_0x6a86('0x1d')]);}})[_0x6a86('0x1e')](function(_0x1db4ad){logger[_0x6a86('0x1b')](_0x6a86('0x17'),_0x5d6e7c,_0x1db4ad);_0x5b95e0(_0x1db4ad);});});}function respondWithStatusCode(_0x3a809d,_0x53e2b6){_0x53e2b6=_0x53e2b6||0xcc;return function(_0x5d6969){if(_0x5d6969){return _0x3a809d['sendStatus'](_0x53e2b6);}return _0x3a809d[_0x6a86('0x1f')](_0x53e2b6)[_0x6a86('0x20')]();};}function respondWithResult(_0x3d5d26,_0x39159c){_0x39159c=_0x39159c||0xc8;return function(_0x55e7e5){if(_0x55e7e5){return _0x3d5d26[_0x6a86('0x1f')](_0x39159c)[_0x6a86('0x21')](_0x55e7e5);}};}function respondWithFilteredResult(_0x366f4a,_0x3f2b70){return function(_0x19382d){if(_0x19382d){var _0x1c41a7=typeof _0x3f2b70[_0x6a86('0x22')]===_0x6a86('0x23')&&typeof _0x3f2b70[_0x6a86('0x24')]==='undefined';var _0x5190c9=_0x19382d[_0x6a86('0x25')];var _0x5afd97=_0x1c41a7?0x0:_0x3f2b70[_0x6a86('0x22')];var _0x1ff9c8=_0x1c41a7?_0x19382d['count']:_0x3f2b70[_0x6a86('0x22')]+_0x3f2b70[_0x6a86('0x24')];var _0x2da9f8;if(_0x1ff9c8>=_0x5190c9){_0x1ff9c8=_0x5190c9;_0x2da9f8=0xc8;}else{_0x2da9f8=0xce;}_0x366f4a['status'](_0x2da9f8);return _0x366f4a[_0x6a86('0x26')]('Content-Range',_0x5afd97+'-'+_0x1ff9c8+'/'+_0x5190c9)['json'](_0x19382d);}return null;};}function saveUpdates(_0x4d8bf0){return function(_0xeefb79){if(_0xeefb79){return _0xeefb79[_0x6a86('0x27')](_0x4d8bf0)[_0x6a86('0x15')](function(_0x50c746){return _0x50c746;});}return null;};}function removeEntity(_0x188485){return function(_0x3d1f52){if(_0x3d1f52){return _0x3d1f52[_0x6a86('0x28')]()[_0x6a86('0x15')](function(){var _0x5c9eff=_0x3d1f52[_0x6a86('0x29')]({'plain':!![]});if(_0x5c9eff['role']===_0x6a86('0x2a'))return;var _0x45dfba=[{'name':_0x6a86('0x2b'),'value':_0x6a86('0x2c'),'ignore':!![]},{'name':_0x6a86('0x2d'),'value':'agent','ignore':![]},{'name':_0x6a86('0x2e'),'value':_0x6a86('0x2f'),'ignore':![]}];var _0x51b789=_(_0x45dfba)[_0x6a86('0x30')](_0x6a86('0x31'))['map'](_0x6a86('0x32'))[_0x6a86('0x32')]();if(_['includes'](_0x51b789,_0x5c9eff['role'])){return;}var _0x26d559=_[_0x6a86('0x33')](_0x45dfba,['value',_0x5c9eff['role']])[_0x6a86('0x34')];return db['UserProfileResource'][_0x6a86('0x28')]({'where':{'type':_0x26d559,'resourceId':_0x5c9eff['id']}})['then'](function(){return _0x3d1f52;});})[_0x6a86('0x15')](function(){_0x188485['status'](0xcc)[_0x6a86('0x20')]();});}};}function handleEntityNotFound(_0x5e6a0d){return function(_0x2e9e91){if(!_0x2e9e91){_0x5e6a0d[_0x6a86('0x35')](0x194);}return _0x2e9e91;};}function handleError(_0x347a91,_0x9d6afe){_0x9d6afe=_0x9d6afe||0x1f4;return function(_0x4c11f0){logger[_0x6a86('0x1b')](_0x4c11f0[_0x6a86('0x36')]);if(_0x4c11f0[_0x6a86('0x34')]){delete _0x4c11f0['name'];}_0x347a91[_0x6a86('0x1f')](_0x9d6afe)[_0x6a86('0x37')](_0x4c11f0);};}exports['index']=function(_0x355bc0,_0xf7c7e8){var _0x556d61={},_0x2ceca3={'count':0x0,'rows':[]};var _0x57ff68=_(db['User'][_0x6a86('0x38')])['map'](function(_0x4a0698){return{'name':_0x4a0698['fieldName'],'type':_0x4a0698[_0x6a86('0x39')][_0x6a86('0x3a')]};})['filter'](function(_0x519fe8){return!_[_0x6a86('0x3b')](['password',_0x6a86('0x3c')],_0x519fe8['name']);})[_0x6a86('0x32')]();_0x556d61=qs[_0x6a86('0x3d')](_0x57ff68,_0x355bc0);var _0x545089={'where':_0x556d61['where']};return db['User'][_0x6a86('0x25')](_0x545089)['then'](function(_0x3301f9){_0x2ceca3['count']=_0x3301f9;if(_0x355bc0[_0x6a86('0x3e')][_0x6a86('0x3f')]){_0x556d61[_0x6a86('0x40')]=[{'all':!![]}];}if(!_[_0x6a86('0x3b')](_0x556d61['attributes'],'id')){_0x556d61[_0x6a86('0x41')][_0x6a86('0x42')]('id');}return db['User'][_0x6a86('0x43')](_0x556d61);})[_0x6a86('0x15')](function(_0x219b10){_0x2ceca3[_0x6a86('0x44')]=_0x219b10;if(_0x355bc0[_0x6a86('0x3e')]['openTabs']==='true'){var _0x579083=[];for(var _0x592914=0x0;_0x592914<_0x2ceca3[_0x6a86('0x44')]['length'];_0x592914++){_0x579083[_0x6a86('0x42')](get_open_tabs('chat',_0x2ceca3[_0x6a86('0x44')][_0x592914][_0x6a86('0x45')]));_0x579083[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x46'),_0x2ceca3[_0x6a86('0x44')][_0x592914]['dataValues']));_0x579083[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x47'),_0x2ceca3['rows'][_0x592914]['dataValues']));_0x579083[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x48'),_0x2ceca3[_0x6a86('0x44')][_0x592914][_0x6a86('0x45')]));_0x579083[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x49'),_0x2ceca3[_0x6a86('0x44')][_0x592914][_0x6a86('0x45')]));_0x579083['push'](get_open_tabs('whatsapp',_0x2ceca3['rows'][_0x592914][_0x6a86('0x45')]));}return BPromise[_0x6a86('0x4a')](_0x579083)[_0x6a86('0x15')](function(_0x173f03){return _0x2ceca3;});}else{return _0x2ceca3;}})[_0x6a86('0x15')](respondWithFilteredResult(_0xf7c7e8,_0x556d61))[_0x6a86('0x1e')](handleError(_0xf7c7e8,null));};exports[_0x6a86('0x4b')]=function(_0x25bc51,_0x2debfe){var _0x204812={'raw':![],'where':{'id':_0x25bc51[_0x6a86('0x4c')]['id']}},_0x17a268={};_0x17a268['model']=_[_0x6a86('0x4d')](_[_0x6a86('0x4e')](db[_0x6a86('0x4f')][_0x6a86('0x38')]),[_0x6a86('0x50'),_0x6a86('0x3c')]);_0x17a268[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x25bc51[_0x6a86('0x3e')]);_0x17a268[_0x6a86('0x51')]=_['intersection'](_0x17a268[_0x6a86('0x52')],_0x17a268['query']);_0x204812[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x17a268[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x25bc51[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x204812[_0x6a86('0x41')]=_0x204812[_0x6a86('0x41')][_0x6a86('0x55')]?_0x204812[_0x6a86('0x41')]:_0x17a268[_0x6a86('0x52')];if(_0x25bc51[_0x6a86('0x3e')]['includeAll']){_0x204812[_0x6a86('0x40')]=[{'all':!![]}];}_0x204812=_['merge']({},_0x204812,_0x25bc51['options']);if(!_[_0x6a86('0x3b')](_0x204812[_0x6a86('0x41')],'id')){_0x204812[_0x6a86('0x41')]['push']('id');}return db[_0x6a86('0x4f')][_0x6a86('0x33')](_0x204812)[_0x6a86('0x15')](handleEntityNotFound(_0x2debfe,null))[_0x6a86('0x15')](function(_0x528a2e){var _0xa38984=[];values=_0x528a2e;if(_0x25bc51[_0x6a86('0x3e')][_0x6a86('0x56')]==='true'){_0xa38984[_0x6a86('0x42')](get_open_tabs('chat',_0x528a2e[_0x6a86('0x45')]));_0xa38984[_0x6a86('0x42')](get_open_tabs('sms',_0x528a2e[_0x6a86('0x45')]));_0xa38984[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x49'),_0x528a2e['dataValues']));_0xa38984[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x57'),_0x528a2e[_0x6a86('0x45')]));_0xa38984[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x47'),_0x528a2e[_0x6a86('0x45')]));_0xa38984[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x48'),_0x528a2e[_0x6a86('0x45')]));return BPromise[_0x6a86('0x4a')](_0xa38984);}else{return values;}})[_0x6a86('0x15')](function(_0x1f21ed){return values;})[_0x6a86('0x15')](respondWithResult(_0x2debfe,null))['catch'](handleError(_0x2debfe,null));};exports[_0x6a86('0x27')]=function(_0x32a730,_0x507c91){if(_0x32a730[_0x6a86('0x58')]['id']){delete _0x32a730[_0x6a86('0x58')]['id'];}delete _0x32a730[_0x6a86('0x58')][_0x6a86('0x59')];return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x32a730[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x507c91,null))['then'](saveUpdates(_0x32a730[_0x6a86('0x58')],null))[_0x6a86('0x15')](respondWithResult(_0x507c91,null))[_0x6a86('0x1e')](handleError(_0x507c91,null));};exports[_0x6a86('0x5a')]=function(_0x2bdf29,_0x54a397){return db[_0x6a86('0x4f')][_0x6a86('0x5a')]()[_0x6a86('0x15')](respondWithResult(_0x54a397,null))[_0x6a86('0x1e')](handleError(_0x54a397,null));};exports[_0x6a86('0x5b')]=function(_0x26ed75,_0x30fc00){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x26ed75[_0x6a86('0x4c')]['id']}})['then'](handleEntityNotFound(_0x30fc00,null))[_0x6a86('0x15')](function(_0x2c4292){if(_0x2c4292){return _0x2c4292['addContacts'](_0x26ed75[_0x6a86('0x58')][_0x6a86('0x5c')],_['omit'](_0x26ed75[_0x6a86('0x58')],[_0x6a86('0x5c'),'id'])||{});}})[_0x6a86('0x15')](respondWithResult(_0x30fc00,null))[_0x6a86('0x1e')](handleError(_0x30fc00,null));};function validateUser(_0x58cabb){return new BPromise(function(_0x432575,_0x576feb){if(_0x58cabb['internal'])return _0x432575(_0x58cabb);return db[_0x6a86('0x5d')][_0x6a86('0x5e')](0x1)[_0x6a86('0x15')](function(_0x1c56a4){if(_0x1c56a4[_0x6a86('0x5f')])authService[_0x6a86('0x60')](_0x58cabb[_0x6a86('0x50')]);db[_0x6a86('0x4f')]['max'](_0x6a86('0x61'))[_0x6a86('0x15')](function(_0x3af36e){if(_[_0x6a86('0x62')](_0x3af36e)){_0x58cabb[_0x6a86('0x61')]=_0x1c56a4[_0x6a86('0x63')]||0x1;return;}if(_[_0x6a86('0x62')](_0x1c56a4[_0x6a86('0x63')])||_0x1c56a4[_0x6a86('0x63')]===_0x3af36e){_0x58cabb[_0x6a86('0x61')]=_0x3af36e+0x1;return;}if(_0x1c56a4[_0x6a86('0x63')]>_0x3af36e){_0x58cabb['internal']=_0x1c56a4[_0x6a86('0x63')];return;}return db[_0x6a86('0x64')][_0x6a86('0x3e')](_0x6a86('0x65'),{'type':db[_0x6a86('0x64')][_0x6a86('0x66')]['SELECT']})[_0x6a86('0x15')](function(_0xc50bf2){if(_0xc50bf2&&_0xc50bf2[_0x6a86('0x55')]){for(var _0x3eb401=0x0,_0x2d5e9b=_0xc50bf2[_0x6a86('0x55')];_0x3eb401<_0x2d5e9b&&_[_0x6a86('0x62')](_0x58cabb[_0x6a86('0x61')]);_0x3eb401++){if(_0x1c56a4[_0x6a86('0x63')]<=_0xc50bf2[_0x3eb401][_0x6a86('0x67')]){_0x58cabb[_0x6a86('0x61')]=_0xc50bf2[_0x3eb401][_0x6a86('0x67')];}else if(_0x1c56a4[_0x6a86('0x63')]>_0xc50bf2[_0x3eb401]['from']&&_0x1c56a4['min_internal']<=_0xc50bf2[_0x3eb401]['to']){_0x58cabb['internal']=_0x1c56a4[_0x6a86('0x63')];}}}if(_[_0x6a86('0x62')](_0x58cabb[_0x6a86('0x61')])){_0x58cabb['internal']=_0x3af36e+0x1;}return _0x432575(_0x58cabb);});});})[_0x6a86('0x1e')](function(_0x21e7f9){_0x576feb(_0x21e7f9);});});}function updateUser(_0x2e4b58){return new BPromise(function(_0x3b40cc,_0x2e3242){try{if(_0x2e4b58[_0x6a86('0x68')]){_0x2e4b58[_0x6a86('0x69')]=_0x2e4b58[_0x6a86('0x61')];_0x2e4b58['VoiceMail']={'mailbox':_0x2e4b58[_0x6a86('0x61')],'password':_0x2e4b58['password'],'fullname':_0x2e4b58['fullname'],'email':_0x2e4b58[_0x6a86('0x6a')]};}if(_0x2e4b58[_0x6a86('0x59')]==='agent'){if(!_0x2e4b58[_0x6a86('0x6b')])_0x2e4b58[_0x6a86('0x6b')]=[_0x6a86('0x6c'),_0x6a86('0x6d'),_0x6a86('0x6e'),_0x6a86('0x6f'),_0x6a86('0x70'),_0x6a86('0x71'),_0x6a86('0x72'),_0x6a86('0x73'),_0x6a86('0x74'),_0x6a86('0x75'),_0x6a86('0x76'),'100','111',_0x6a86('0x77'),_0x6a86('0x78')];}_0x3b40cc(_0x2e4b58);}catch(_0x855514){_0x2e3242(_0x855514);}});}exports['create']=function(_0x320736,_0x2c842f){if(_0x320736[_0x6a86('0x2c')][_0x6a86('0x59')]===_0x6a86('0x79'))throw new Error(_0x6a86('0x7a'));if(_0x320736[_0x6a86('0x58')][_0x6a86('0x59')]===_0x6a86('0x2c')&&_0x320736[_0x6a86('0x2c')][_0x6a86('0x59')]!==_0x6a86('0x2a')){throw new Error(_0x6a86('0x7b'));}if(_0x320736['body'][_0x6a86('0x59')]===_0x6a86('0x2a')&&_0x320736[_0x6a86('0x2c')][_0x6a86('0x59')]!==_0x6a86('0x2a')){throw new Error(_0x6a86('0x7c'));}return licenseUtil[_0x6a86('0x7d')]([_0x320736[_0x6a86('0x58')]])[_0x6a86('0x15')](function(){return validateUser(_0x320736[_0x6a86('0x58')]);})['then'](function(_0x1ccf07){return updateUser(_0x1ccf07)['then'](function(_0x8ee6a3){if(_0x8ee6a3['role']===_0x6a86('0x2a')){_0x8ee6a3[_0x6a86('0x7e')]=_0x320736['user'][_0x6a86('0x7e')];delete _0x8ee6a3[_0x6a86('0x7f')];}return _0x8ee6a3;});})['then'](function(_0x2693a2){return db[_0x6a86('0x4f')]['create'](_0x2693a2,{'include':[{'model':db['VoiceMail'],'as':'VoiceMail'}]});})[_0x6a86('0x15')](function(_0x114338){if(_0x320736[_0x6a86('0x58')][_0x6a86('0x59')]===_0x6a86('0x2c'))return _0x114338;if(_0x320736[_0x6a86('0x2c')]['role']!==_0x6a86('0x2c'))return _0x114338;return db[_0x6a86('0x80')][_0x6a86('0x33')]({'where':{'name':_0x114338[_0x6a86('0x59')]===_0x6a86('0x79')?_0x6a86('0x2d'):_0x6a86('0x2e'),'userProfileId':_0x320736[_0x6a86('0x2c')]['userProfileId']},'raw':!![]})[_0x6a86('0x15')](function(_0x305959){if(!_0x305959||_0x305959[_0x6a86('0x81')]!=0x0)return _0x114338;return db['UserProfileResource'][_0x6a86('0x82')]({'name':_0x114338[_0x6a86('0x34')],'resourceId':_0x114338['id'],'type':_0x305959[_0x6a86('0x34')],'sectionId':_0x305959['id']},{})[_0x6a86('0x15')](function(){return _0x114338;});})[_0x6a86('0x1e')](function(_0x255780){logger[_0x6a86('0x1b')](_0x6a86('0x83'),_0x255780);throw _0x255780;});})[_0x6a86('0x15')](respondWithResult(_0x2c842f,0xc9))['catch'](handleError(_0x2c842f,null));};exports[_0x6a86('0x84')]=function(_0x56fb18,_0x30cc8f){var _0x4f4998=_0x56fb18[_0x6a86('0x58')];var _0x4943b1=[];if(_0x56fb18[_0x6a86('0x2c')]['role']===_0x6a86('0x79'))throw new Error(_0x6a86('0x7a'));if(_[_0x6a86('0x85')](_0x4f4998,[_0x6a86('0x59'),'user'])&&_0x56fb18[_0x6a86('0x2c')][_0x6a86('0x59')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_['some'](_0x4f4998,[_0x6a86('0x59'),'admin'])&&_0x56fb18[_0x6a86('0x2c')]['role']!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0x6a86('0x7d')](_0x4f4998)['then'](function(){return validateUser(_0x4f4998[0x0]);})[_0x6a86('0x15')](function(){for(var _0x3bff9c=0x1;_0x3bff9c<_0x4f4998[_0x6a86('0x55')];_0x3bff9c++){var _0x167f37=_0x4f4998[_0x3bff9c-0x1]['internal'];if(!_0x4f4998[_0x3bff9c][_0x6a86('0x61')])_0x4f4998[_0x3bff9c][_0x6a86('0x61')]=_0x167f37+0x1;_0x4943b1[_0x6a86('0x42')](validateUser(_0x4f4998[_0x3bff9c]));}return BPromise[_0x6a86('0x4a')](_0x4943b1);})['then'](function(){_0x4943b1=[];for(var _0x19dee9=0x0;_0x19dee9<_0x4f4998[_0x6a86('0x55')];_0x19dee9++){_0x4943b1[_0x6a86('0x42')](updateUser(_0x4f4998[_0x19dee9]));}return BPromise['all'](_0x4943b1);})['then'](function(){return BPromise[_0x6a86('0x86')](_0x4f4998,function(_0x16d9c1){return db['User'][_0x6a86('0x82')](_0x16d9c1,{'include':[{'model':db[_0x6a86('0x87')],'as':_0x6a86('0x87')}]})[_0x6a86('0x15')](function(_0x5b9c08){_0x16d9c1['id']=_0x5b9c08['id'];return _0x16d9c1;});});})[_0x6a86('0x15')](function(_0x4ecd82){if(_0x56fb18[_0x6a86('0x58')][_0x6a86('0x59')]===_0x6a86('0x2c'))return _0x4ecd82;if(_0x56fb18['user'][_0x6a86('0x59')]!=='user')return _0x4ecd82;var _0x10ca8a=_[_0x6a86('0x85')](_0x4ecd82,function(_0x39c600){return _0x39c600[_0x6a86('0x59')]===_0x6a86('0x79')||_0x39c600[_0x6a86('0x59')]===_0x6a86('0x2f');});if(!_0x10ca8a)return _0x4ecd82;return db[_0x6a86('0x80')][_0x6a86('0x43')]({'where':{'name':{'$or':['Agents',_0x6a86('0x2e')]},'userProfileId':_0x56fb18[_0x6a86('0x2c')][_0x6a86('0x7f')]},'raw':!![]})[_0x6a86('0x15')](function(_0x40ec5a){if(_[_0x6a86('0x88')](_0x40ec5a)||!_[_0x6a86('0x85')](_0x40ec5a,['autoAssociation',0x0]))return _0x4ecd82;_0x4943b1=[];var _0x4e737f=_(_0x40ec5a)[_0x6a86('0x89')](function(_0x4abcce){if(_0x4abcce[_0x6a86('0x81')]===0x1)return;return _0x4abcce[_0x6a86('0x34')]===_0x6a86('0x2d')?'agent':_0x6a86('0x2f');})[_0x6a86('0x8a')]()[_0x6a86('0x32')]();for(var _0x1b6391=0x0;_0x1b6391<_0x4ecd82[_0x6a86('0x55')];_0x1b6391++){if(!_[_0x6a86('0x3b')](_0x4e737f,_0x4ecd82[_0x1b6391][_0x6a86('0x59')]))return;var _0x50a134=_0x4ecd82[_0x1b6391][_0x6a86('0x59')]===_0x6a86('0x79')?_0x6a86('0x2d'):_0x6a86('0x2e');_0x4943b1[_0x6a86('0x42')](db[_0x6a86('0x8b')][_0x6a86('0x82')]({'name':_0x4ecd82[_0x1b6391][_0x6a86('0x34')],'resourceId':_0x4ecd82[_0x1b6391]['id'],'type':_0x50a134,'sectionId':_['find'](_0x40ec5a,[_0x6a86('0x34'),_0x50a134])['id']},{}));}return BPromise['all'](_0x4943b1);});})['then'](respondWithResult(_0x30cc8f,0xc9))['catch'](handleError(_0x30cc8f,null));};exports[_0x6a86('0x8c')]=function(_0xa9c461,_0x506fad){if(_0xa9c461[_0x6a86('0x58')]['id']){delete _0xa9c461[_0x6a86('0x58')]['id'];}return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0xa9c461[_0x6a86('0x4c')]['id']}})['then'](function(_0x22f963){if(!_0x22f963)return null;if(_0x22f963['id']===_0xa9c461[_0x6a86('0x2c')]['id']){if(!_0xa9c461[_0x6a86('0x58')]['oldPassword']||!_0xa9c461[_0x6a86('0x58')][_0x6a86('0x8d')]){throw new db[(_0x6a86('0x8e'))][(_0x6a86('0x8f'))]('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x22f963[_0x6a86('0x90')](_0xa9c461[_0x6a86('0x58')][_0x6a86('0x91')])){throw new db['Sequelize'][(_0x6a86('0x8f'))](_0x6a86('0x92'));}if(_0xa9c461[_0x6a86('0x58')][_0x6a86('0x91')]===_0xa9c461[_0x6a86('0x58')][_0x6a86('0x8d')]){throw new db[(_0x6a86('0x8e'))][(_0x6a86('0x8f'))](_0x6a86('0x93'));}}else if(_0xa9c461[_0x6a86('0x2c')]['role']===_0x6a86('0x2a')){if(!_0xa9c461[_0x6a86('0x58')][_0x6a86('0x8d')]){throw new db[(_0x6a86('0x8e'))][(_0x6a86('0x8f'))](_0x6a86('0x94'));}}else if(_0xa9c461[_0x6a86('0x2c')][_0x6a86('0x59')]==='user'){if(!_0xa9c461[_0x6a86('0x58')][_0x6a86('0x8d')]){throw new db[(_0x6a86('0x8e'))][(_0x6a86('0x8f'))](_0x6a86('0x94'));}if(_0x22f963[_0x6a86('0x59')]!==_0x6a86('0x79')){throw new db['Sequelize'][(_0x6a86('0x8f'))](_0x6a86('0x7a'));}}else{throw new db[(_0x6a86('0x8e'))][(_0x6a86('0x8f'))](_0x6a86('0x7a'));}return _0x22f963;})[_0x6a86('0x15')](handleEntityNotFound(_0x506fad,null))[_0x6a86('0x15')](function(_0xc25871){return db[_0x6a86('0x5d')][_0x6a86('0x95')]({'attributes':['id',_0x6a86('0x5f'),_0x6a86('0x96'),_0x6a86('0x97')]})[_0x6a86('0x15')](function(_0x54aa4d){if(_0x54aa4d[_0x6a86('0x5f')])authService[_0x6a86('0x60')](_0xa9c461['body'][_0x6a86('0x8d')]);if(!_0x54aa4d[_0x6a86('0x96')]||!_0xc25871[_0x6a86('0x98')])return _0xc25871;authService[_0x6a86('0x99')](_0xa9c461[_0x6a86('0x58')][_0x6a86('0x8d')],_0xc25871[_0x6a86('0x98')],_0x54aa4d[_0x6a86('0x97')]);return _0xc25871;})[_0x6a86('0x15')](saveUpdates({'password':_0xa9c461[_0x6a86('0x58')]['newPassword'],'passwordResetAt':_0xa9c461[_0x6a86('0x2c')]['id']==_0xa9c461[_0x6a86('0x4c')]['id']?moment():null,'previousPasswords':authService[_0x6a86('0x9a')](_0xa9c461[_0x6a86('0x58')][_0x6a86('0x8d')],_0xc25871[_0x6a86('0x98')])},null));})[_0x6a86('0x15')](respondWithResult(_0x506fad,null))[_0x6a86('0x1e')](handleError(_0x506fad,null));};exports['addQueues']=function(_0x316bdf,_0x2d2bc0){var _0x2964ee=_0x316bdf[_0x6a86('0x58')]['channel'];return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x316bdf[_0x6a86('0x4c')]['id']},'attributes':['id',_0x6a86('0x34'),_0x6a86('0x59'),_0x6a86('0x9b'),_0x6a86('0x9c'),'voicePause',_0x6a86('0x9d')]})[_0x6a86('0x15')](handleEntityNotFound(_0x2d2bc0,null))[_0x6a86('0x15')](function(_0x1c613d){if(_0x1c613d){if(!utils[_0x6a86('0x9e')](_0x2964ee)){throw new db[(_0x6a86('0x8e'))][(_0x6a86('0x8f'))](_0x6a86('0x9f'));}return _0x1c613d['add'+_[_0x6a86('0xa0')](_0x2964ee[_0x6a86('0xa1')]())+'Queues'](_0x316bdf['body'][_0x6a86('0x5c')],{'penalty':_0x316bdf[_0x6a86('0x58')][_0x6a86('0xa2')]||0x0})[_0x6a86('0xa3')](function(_0x551ebe){for(var _0x4c5440=0x0;_0x4c5440<_0x316bdf['body']['ids']['length'];_0x4c5440+=0x1){var _0x1a0d45={'UserId':Number(_0x316bdf[_0x6a86('0x4c')]['id'])};_0x1a0d45[_[_0x6a86('0xa0')](_0x2964ee[_0x6a86('0xa1')]())+'QueueId']=Number(_0x316bdf['body']['ids'][_0x4c5440]);socket['emit'](_0x6a86('0x2c')+_[_0x6a86('0xa0')](_0x2964ee[_0x6a86('0xa1')]())+_0x6a86('0xa4'),_0x1a0d45);}return _0x551ebe;})['then'](function(){if(_0x2964ee===_0x6a86('0xa5')){return db['VoiceQueue'][_0x6a86('0x43')]({'where':{'id':_0x316bdf[_0x6a86('0x58')]['ids']||[]},'raw':!![],'attributes':['id',_0x6a86('0x34')]});}})['then'](function(_0x304924){var _0x344f40=_0x1c613d[_0x6a86('0x29')]({'plain':!![]});var _0x29fab4=[];if(_0x2964ee===_0x6a86('0xa5')&&_0x344f40['role']===_0x6a86('0x79')&&_0x344f40[_0x6a86('0x9b')]){for(var _0x1ddc7e=0x0;_0x1ddc7e<_0x304924[_0x6a86('0x55')];_0x1ddc7e+=0x1){_0x29fab4['push']({'membername':_0x344f40['name'],'UserId':_0x344f40['id'],'queue_name':_0x304924[_0x1ddc7e][_0x6a86('0x34')],'VoiceQueueId':_0x304924[_0x1ddc7e]['id'],'interface':_['isNil'](_0x344f40[_0x6a86('0x9d')])?util[_0x6a86('0xa6')]('SIP/%s',_0x344f40[_0x6a86('0x34')]):_0x344f40['interface'],'paused':_0x344f40['voicePause']||![],'penalty':_0x316bdf[_0x6a86('0x58')][_0x6a86('0xa2')]||0x0});}return BPromise['each'](_0x29fab4,function(_0x28f3a8){return db[_0x6a86('0xa7')]['upsert'](_0x28f3a8);});}return _0x1c613d;});}})[_0x6a86('0x15')](respondWithStatusCode(_0x2d2bc0,null))[_0x6a86('0x1e')](handleError(_0x2d2bc0,null));};exports['removeQueues']=function(_0x1b5900,_0x4b3cbd){var _0x564f12;return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x1b5900[_0x6a86('0x4c')]['id']},'attributes':['id',_0x6a86('0x34'),'role']})[_0x6a86('0x15')](handleEntityNotFound(_0x4b3cbd,null))[_0x6a86('0x15')](function(_0x464f26){if(_0x464f26){_0x564f12=_0x464f26;if(!_0x1b5900[_0x6a86('0x3e')][_0x6a86('0xa8')]||!utils[_0x6a86('0x9e')](_0x1b5900[_0x6a86('0x3e')]['channel'])){throw new db[(_0x6a86('0x8e'))][(_0x6a86('0x8f'))](_0x6a86('0x9f'));}return _0x464f26['remove'+_[_0x6a86('0xa0')](_0x1b5900[_0x6a86('0x3e')]['channel']['toLowerCase']())+'Queues'](_0x1b5900[_0x6a86('0x3e')][_0x6a86('0x5c')]);}})[_0x6a86('0x15')](function(_0x5f0cdd){if(_[_0x6a86('0xa9')](_0x1b5900[_0x6a86('0x3e')][_0x6a86('0x5c')])){for(var _0x3a7aab=0x0;_0x3a7aab<_0x1b5900[_0x6a86('0x3e')][_0x6a86('0x5c')][_0x6a86('0x55')];_0x3a7aab+=0x1){var _0x38883e={'UserId':Number(_0x1b5900['params']['id'])};_0x38883e[_['capitalize'](_0x1b5900[_0x6a86('0x3e')]['channel'][_0x6a86('0xa1')]())+'QueueId']=Number(_0x1b5900[_0x6a86('0x3e')][_0x6a86('0x5c')][_0x3a7aab]);socket[_0x6a86('0xaa')]('user'+_[_0x6a86('0xa0')](_0x1b5900[_0x6a86('0x3e')][_0x6a86('0xa8')][_0x6a86('0xa1')]())+'Queue:remove',_0x38883e);}}else{var _0x38883e={'UserId':Number(_0x1b5900[_0x6a86('0x4c')]['id'])};_0x38883e[_[_0x6a86('0xa0')](_0x1b5900[_0x6a86('0x3e')][_0x6a86('0xa8')][_0x6a86('0xa1')]())+_0x6a86('0xab')]=Number(_0x1b5900[_0x6a86('0x3e')][_0x6a86('0x5c')]);socket[_0x6a86('0xaa')]('user'+_['capitalize'](_0x1b5900[_0x6a86('0x3e')][_0x6a86('0xa8')]['toLowerCase']())+_0x6a86('0xac'),_0x38883e);}return _0x5f0cdd;})[_0x6a86('0x15')](function(){if(_0x1b5900[_0x6a86('0x3e')]['channel']===_0x6a86('0xa5')){return db['UserVoiceQueueRt'][_0x6a86('0x28')]({'where':{'UserId':_0x1b5900[_0x6a86('0x4c')]['id'],'VoiceQueueId':_0x1b5900['query'][_0x6a86('0x5c')]},'individualHooks':!![]})[_0x6a86('0x15')](function(){return _0x564f12;});}return _0x564f12;})['then'](respondWithStatusCode(_0x4b3cbd,null))[_0x6a86('0x1e')](handleError(_0x4b3cbd,null));};exports[_0x6a86('0xad')]=function(_0x11487b,_0x574be1){_0x11487b[_0x6a86('0x58')][_0x6a86('0xae')]=_0x11487b[_0x6a86('0xaf')][_0x6a86('0xb0')];return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x11487b[_0x6a86('0x4c')]['id']}})['then'](handleEntityNotFound(_0x574be1,null))[_0x6a86('0x15')](saveUpdates(_0x11487b[_0x6a86('0x58')],null))[_0x6a86('0x15')](respondWithResult(_0x574be1,null))[_0x6a86('0x1e')](handleError(_0x574be1,null));};exports[_0x6a86('0xb1')]=function(_0x559d72,_0xecf38f){var _0x6d076f=path[_0x6a86('0xb2')](config[_0x6a86('0xb3')],_0x6a86('0xb4'));return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x559d72[_0x6a86('0x4c')]['id']},'attributes':['id',_0x6a86('0xae')],'raw':!![]})[_0x6a86('0x15')](handleEntityNotFound(_0xecf38f,null))[_0x6a86('0x15')](function(_0x5c4e71){if(_0x5c4e71){if(_['isNil'](_0x5c4e71[_0x6a86('0xae')])){return _0xecf38f['download'](_0x6d076f);}else{if(!fs[_0x6a86('0xb5')](path[_0x6a86('0xb2')](config['root'],_0x6a86('0xb6'),_0x5c4e71[_0x6a86('0xae')]))){return _0xecf38f[_0x6a86('0xb7')](_0x6d076f);}return _0xecf38f['download'](path[_0x6a86('0xb2')](config[_0x6a86('0xb3')],_0x6a86('0xb6'),_0x5c4e71['userpic']));}}})[_0x6a86('0x1e')](handleError(_0xecf38f,null));};exports[_0x6a86('0xb8')]=function(_0x55fdf9,_0x3893f0){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x55fdf9[_0x6a86('0x4c')]['id']},'attributes':['id']})[_0x6a86('0x15')](handleEntityNotFound(_0x3893f0,null))[_0x6a86('0x15')](function(_0x37cdab){var _0x3b7993=[];values=_0x37cdab[_0x6a86('0x45')];_0x3b7993[_0x6a86('0x42')](get_open_tabs(_0x6a86('0xb9'),_0x37cdab[_0x6a86('0x45')]));_0x3b7993[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x46'),_0x37cdab[_0x6a86('0x45')]));_0x3b7993[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x49'),_0x37cdab[_0x6a86('0x45')]));_0x3b7993[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x57'),_0x37cdab[_0x6a86('0x45')]));_0x3b7993[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x47'),_0x37cdab[_0x6a86('0x45')]));_0x3b7993[_0x6a86('0x42')](get_open_tabs(_0x6a86('0x48'),_0x37cdab[_0x6a86('0x45')]));return BPromise[_0x6a86('0x4a')](_0x3b7993);})[_0x6a86('0x15')](function(_0x3e45c4){var _0x506aa8=[];if(_0x3e45c4){for(var _0x2fcbdb=0x0;_0x2fcbdb<values[_0x6a86('0xba')][_0x6a86('0x55')];_0x2fcbdb++){var _0x3ab194=values['ChatOpenTabs'][_0x2fcbdb];_0x506aa8[_0x6a86('0x42')]({'channel':_0x6a86('0xbb'),'id':_0x3ab194['id'],'createdAt':_0x3ab194[_0x6a86('0xbc')]});}for(var _0x2fcbdb=0x0;_0x2fcbdb<values[_0x6a86('0xbd')][_0x6a86('0x55')];_0x2fcbdb++){var _0x3ab194=values[_0x6a86('0xbd')][_0x2fcbdb];_0x506aa8[_0x6a86('0x42')]({'channel':_0x6a86('0xbe'),'id':_0x3ab194['id'],'createdAt':_0x3ab194[_0x6a86('0xbc')]});}for(var _0x2fcbdb=0x0;_0x2fcbdb<values['OpenchannelOpenTabs'][_0x6a86('0x55')];_0x2fcbdb++){var _0x3ab194=values[_0x6a86('0xbf')][_0x2fcbdb];_0x506aa8[_0x6a86('0x42')]({'channel':_0x6a86('0xc0'),'id':_0x3ab194['id'],'createdAt':_0x3ab194[_0x6a86('0xbc')]});}for(var _0x2fcbdb=0x0;_0x2fcbdb<values[_0x6a86('0xc1')][_0x6a86('0x55')];_0x2fcbdb++){var _0x3ab194=values[_0x6a86('0xc1')][_0x2fcbdb];_0x506aa8[_0x6a86('0x42')]({'channel':_0x6a86('0xc2'),'id':_0x3ab194['id'],'createdAt':_0x3ab194[_0x6a86('0xbc')]});}for(var _0x2fcbdb=0x0;_0x2fcbdb<values[_0x6a86('0xc3')][_0x6a86('0x55')];_0x2fcbdb++){var _0x3ab194=values[_0x6a86('0xc3')][_0x2fcbdb];_0x506aa8[_0x6a86('0x42')]({'channel':_0x6a86('0xc4'),'id':_0x3ab194['id'],'createdAt':_0x3ab194[_0x6a86('0xbc')]});}for(var _0x2fcbdb=0x0;_0x2fcbdb<values[_0x6a86('0xc5')][_0x6a86('0x55')];_0x2fcbdb++){var _0x3ab194=values[_0x6a86('0xc5')][_0x2fcbdb];_0x506aa8['push']({'channel':_0x6a86('0xc6'),'id':_0x3ab194['id'],'createdAt':_0x3ab194[_0x6a86('0xbc')]});}var _0x17dce1={'count':_0x506aa8[_0x6a86('0x55')],'rows':_0x506aa8};return _0x17dce1;}else return null;})[_0x6a86('0x15')](respondWithResult(_0x3893f0,null))[_0x6a86('0x1e')](handleError(_0x3893f0,null));};exports[_0x6a86('0xc7')]=function(_0x5b245f,_0x46a845){var _0x335968={};var _0x55aa47={};var _0x598f13;var _0xe59d23;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x5b245f[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x46a845,null))[_0x6a86('0x15')](function(_0x1eadf4){if(_0x1eadf4){_0x598f13=_0x1eadf4;_0x55aa47[_0x6a86('0x52')]=_['keys'](db[_0x6a86('0xc8')][_0x6a86('0x38')]);_0x55aa47[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x5b245f['query']);_0x55aa47[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x55aa47[_0x6a86('0x52')],_0x55aa47['query']);_0x335968[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x55aa47[_0x6a86('0x52')],qs['fields'](_0x5b245f[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x335968['attributes']=_0x335968[_0x6a86('0x41')][_0x6a86('0x55')]?_0x335968[_0x6a86('0x41')]:_0x55aa47[_0x6a86('0x52')];_0x335968['order']=qs[_0x6a86('0xc9')](_0x5b245f[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x335968['where']=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x5b245f[_0x6a86('0x3e')],_0x55aa47[_0x6a86('0x51')]));if(_0x5b245f[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x335968[_0x6a86('0xcb')]=_['merge'](_0x335968['where'],{'$or':_[_0x6a86('0x89')](_0x335968[_0x6a86('0x41')],function(_0x40ec46){var _0x51aa78={};_0x51aa78[_0x40ec46]={'$like':'%'+_0x5b245f[_0x6a86('0x3e')]['filter']+'%'};return _0x51aa78;})});}_0x335968=_[_0x6a86('0xcc')]({},_0x335968,_0x5b245f[_0x6a86('0xcd')]);return _0x598f13['getContacts'](_0x335968);}})[_0x6a86('0x15')](function(_0x41bd25){if(_0x41bd25){_0xe59d23=_0x41bd25[_0x6a86('0x55')];if(_0x5b245f[_0x6a86('0x3e')]['hasOwnProperty'](_0x6a86('0x3f'))){_0x335968['include']=[{'model':db[_0x6a86('0xce')],'as':'List','required':![]},{'model':db[_0x6a86('0xcf')],'as':_0x6a86('0xd0'),'attributes':['id',_0x6a86('0x34'),'color'],'where':_0x5b245f['query'][_0x6a86('0xd1')]?{'id':_0x5b245f['query']['tag']}:undefined,'required':_0x5b245f['query'][_0x6a86('0xd1')]?!![]:![]}];}if(!_0x5b245f[_0x6a86('0x3e')][_0x6a86('0xd2')]('nolimit')){_0x335968[_0x6a86('0x24')]=qs['limit'](_0x5b245f[_0x6a86('0x3e')]['limit']);_0x335968[_0x6a86('0x22')]=qs['offset'](_0x5b245f[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x598f13[_0x6a86('0xc7')](_0x335968);}})[_0x6a86('0x15')](function(_0x34e908){if(_0x34e908){return _0x34e908?{'count':_0xe59d23,'rows':_0x34e908}:null;}})[_0x6a86('0x15')](respondWithResult(_0x46a845,null))[_0x6a86('0x1e')](handleError(_0x46a845,null));};exports['getQueues']=function(_0x19031e,_0x45cb03){var _0x5bd04c;var _0x5b8cfd;var _0x3c4272={};var _0x115904;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x19031e[_0x6a86('0x4c')]['id']},'attributes':['id',_0x6a86('0x34'),'role']})[_0x6a86('0x15')](handleEntityNotFound(_0x45cb03,null))[_0x6a86('0x15')](function(_0x3d7af0){if(!utils[_0x6a86('0x9e')](_0x19031e[_0x6a86('0x3e')][_0x6a86('0xa8')])){throw new db[(_0x6a86('0x8e'))]['ValidationError'](_0x6a86('0x9f'));}_0x5bd04c=_0x3d7af0;var _0x1a7c74={};_0x1a7c74['model']=_[_0x6a86('0x4e')](db[_[_0x6a86('0xa0')](_0x19031e[_0x6a86('0x3e')][_0x6a86('0xa8')])+_0x6a86('0xd3')][_0x6a86('0x38')]);_0x1a7c74[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x19031e[_0x6a86('0x3e')]);_0x1a7c74['filters']=_[_0x6a86('0x53')](_0x1a7c74[_0x6a86('0x52')],_0x1a7c74['query']);_0x3c4272[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x1a7c74[_0x6a86('0x52')],qs['fields'](_0x19031e[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x3c4272[_0x6a86('0x41')]=_0x3c4272[_0x6a86('0x41')][_0x6a86('0x55')]?_0x3c4272['attributes']:_0x1a7c74[_0x6a86('0x52')];_0x3c4272[_0x6a86('0xd4')]=qs['sort'](_0x19031e['query'][_0x6a86('0xc9')]);_0x3c4272[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_['pick'](_0x19031e[_0x6a86('0x3e')],_0x1a7c74[_0x6a86('0x51')]));if(_0x19031e[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x3c4272[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x3c4272[_0x6a86('0xcb')],{'$or':_['map'](_0x3c4272[_0x6a86('0x41')],function(_0x3529ea){var _0x7145ad={};_0x7145ad[_0x3529ea]={'$like':'%'+_0x19031e[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x7145ad;})});}_0x3c4272=_[_0x6a86('0xcc')]({},_0x3c4272,_0x19031e[_0x6a86('0xcd')]);switch(_0x5bd04c['role']){case _0x6a86('0x2a'):return db[_[_0x6a86('0xa0')](_0x19031e['query']['channel'])+_0x6a86('0xd3')][_0x6a86('0x43')](_0x3c4272);case _0x6a86('0x2c'):case'agent':return _0x5bd04c['get'+_['capitalize'](_0x19031e[_0x6a86('0x3e')]['channel'])+_0x6a86('0xd5')](_0x3c4272);default:throw new db[(_0x6a86('0x8e'))]['ValidationError'](_0x6a86('0xd6'));}})[_0x6a86('0x15')](function(_0x1f9de6){_0x115904=_0x1f9de6['length'];if(!_0x19031e['query']['hasOwnProperty'](_0x6a86('0xd7'))){_0x3c4272[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x19031e[_0x6a86('0x3e')][_0x6a86('0x24')]);_0x3c4272[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x19031e[_0x6a86('0x3e')][_0x6a86('0x22')]);}switch(_0x5bd04c['role']){case'admin':return db[_[_0x6a86('0xa0')](_0x19031e[_0x6a86('0x3e')][_0x6a86('0xa8')])+_0x6a86('0xd3')][_0x6a86('0x43')](_0x3c4272);case'user':case'agent':return _0x5bd04c[_0x6a86('0x29')+_['capitalize'](_0x19031e['query'][_0x6a86('0xa8')])+_0x6a86('0xd5')](_0x3c4272);}})['then'](function(_0xff5736){return{'count':_0x115904,'rows':_0xff5736};})[_0x6a86('0x15')](respondWithResult(_0x45cb03,null))[_0x6a86('0x1e')](handleError(_0x45cb03,null));};exports[_0x6a86('0xd8')]=function(_0xe11871,_0x42f477){var _0x386694={};var _0x5b9f7d={};var _0x5a099b;var _0xb49a40;return db['User'][_0x6a86('0x95')]({'where':{'id':_0xe11871[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x42f477,null))[_0x6a86('0x15')](function(_0x3b7474){if(_0x3b7474){_0x5a099b=_0x3b7474;_0x5b9f7d[_0x6a86('0x52')]=_[_0x6a86('0x4e')](db[_0x6a86('0xa7')]['rawAttributes']);_0x5b9f7d[_0x6a86('0x3e')]=_['keys'](_0xe11871['query']);_0x5b9f7d['filters']=_[_0x6a86('0x53')](_0x5b9f7d[_0x6a86('0x52')],_0x5b9f7d[_0x6a86('0x3e')]);_0x386694[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x5b9f7d[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0xe11871['query']['fields']));_0x386694['attributes']=_0x386694[_0x6a86('0x41')][_0x6a86('0x55')]?_0x386694[_0x6a86('0x41')]:_0x5b9f7d[_0x6a86('0x52')];_0x386694['order']=qs[_0x6a86('0xc9')](_0xe11871['query'][_0x6a86('0xc9')]);_0x386694[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0xe11871[_0x6a86('0x3e')],_0x5b9f7d['filters']));if(_0xe11871[_0x6a86('0x3e')]['filter']){_0x386694[_0x6a86('0xcb')]=_['merge'](_0x386694[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x386694[_0x6a86('0x41')],function(_0x1f52cf){var _0x248233={};_0x248233[_0x1f52cf]={'$like':'%'+_0xe11871[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x248233;})});}_0x386694=_[_0x6a86('0xcc')]({},_0x386694,_0xe11871[_0x6a86('0xcd')]);return _0x5a099b[_0x6a86('0xd8')](_0x386694);}})['then'](function(_0x2802c5){if(_0x2802c5){_0xb49a40=_0x2802c5['length'];if(!_0xe11871['query'][_0x6a86('0xd2')]('nolimit')){_0x386694[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0xe11871[_0x6a86('0x3e')][_0x6a86('0x24')]);_0x386694[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0xe11871[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x5a099b[_0x6a86('0xd8')](_0x386694);}})['then'](function(_0x5bdacb){if(_0x5bdacb){return _0x5bdacb?{'count':_0xb49a40,'rows':_0x5bdacb}:null;}})[_0x6a86('0x15')](respondWithResult(_0x42f477,null))['catch'](handleError(_0x42f477,null));};exports['getGroups']=function(_0x5ed413,_0x5d6b4b){var _0x31c359={};var _0x5a4472={};var _0x3fc738;var _0x594f5f;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x5ed413[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x5d6b4b,null))['then'](function(_0x104ccb){if(_0x104ccb){_0x3fc738=_0x104ccb;_0x5a4472['model']=_[_0x6a86('0x4e')](db['ChatGroup']['rawAttributes']);_0x5a4472[_0x6a86('0x3e')]=_['keys'](_0x5ed413[_0x6a86('0x3e')]);_0x5a4472[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x5a4472[_0x6a86('0x52')],_0x5a4472['query']);_0x31c359[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x5a4472[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x5ed413[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x31c359[_0x6a86('0x41')]=_0x31c359[_0x6a86('0x41')][_0x6a86('0x55')]?_0x31c359[_0x6a86('0x41')]:_0x5a4472[_0x6a86('0x52')];_0x31c359[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x5ed413[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x31c359[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x5ed413[_0x6a86('0x3e')],_0x5a4472['filters']));if(_0x5ed413['query']['filter']){_0x31c359[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x31c359['where'],{'$or':_[_0x6a86('0x89')](_0x31c359[_0x6a86('0x41')],function(_0x29320b){var _0x1dd84a={};_0x1dd84a[_0x29320b]={'$like':'%'+_0x5ed413[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x1dd84a;})});}_0x31c359=_[_0x6a86('0xcc')]({},_0x31c359,_0x5ed413['options']);return _0x3fc738[_0x6a86('0xd9')](_0x31c359);}})[_0x6a86('0x15')](function(_0x4c25b7){if(_0x4c25b7){_0x594f5f=_0x4c25b7[_0x6a86('0x55')];if(!_0x5ed413['query'][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x31c359[_0x6a86('0x24')]=qs['limit'](_0x5ed413[_0x6a86('0x3e')][_0x6a86('0x24')]);_0x31c359[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x5ed413[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x3fc738[_0x6a86('0xd9')](_0x31c359);}})[_0x6a86('0x15')](function(_0x21d50d){if(_0x21d50d){return _0x21d50d?{'count':_0x594f5f,'rows':_0x21d50d}:null;}})['then'](respondWithResult(_0x5d6b4b,null))['catch'](handleError(_0x5d6b4b,null));};exports['getRecordings']=function(_0x3929f3,_0x1f7987){var _0x3a8518={'raw':!![],'where':{}};var _0x7f05a2={};var _0x6482dc={'count':0x0,'rows':[]};return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x3929f3[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x1f7987,null))[_0x6a86('0x15')](function(_0x2a05e2){if(_0x2a05e2){_0x7f05a2[_0x6a86('0x52')]=_[_0x6a86('0x4e')](db['VoiceRecording'][_0x6a86('0x38')]);_0x7f05a2[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x3929f3[_0x6a86('0x3e')]);_0x7f05a2[_0x6a86('0x51')]=_['intersection'](_0x7f05a2[_0x6a86('0x52')],_0x7f05a2['query']);_0x3a8518[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x7f05a2[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x3929f3[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x3a8518[_0x6a86('0x41')]=_0x3a8518[_0x6a86('0x41')]['length']?_0x3a8518[_0x6a86('0x41')]:_0x7f05a2['model'];if(!_0x3929f3[_0x6a86('0x3e')]['hasOwnProperty'](_0x6a86('0xd7'))){_0x3a8518['limit']=qs['limit'](_0x3929f3[_0x6a86('0x3e')]['limit']);_0x3a8518[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x3929f3['query']['offset']);}_0x3a8518[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x3929f3[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x3a8518[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x3929f3[_0x6a86('0x3e')],_0x7f05a2[_0x6a86('0x51')]));_0x3a8518[_0x6a86('0xcb')]['UserId']=_0x2a05e2['id'];if(_0x3929f3[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x3a8518[_0x6a86('0xcb')]=_['merge'](_0x3a8518[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x3a8518[_0x6a86('0x41')],function(_0x465d4f){var _0x28be81={};_0x28be81[_0x465d4f]={'$like':'%'+_0x3929f3['query'][_0x6a86('0x30')]+'%'};return _0x28be81;})});}_0x3a8518=_[_0x6a86('0xcc')]({},_0x3a8518,_0x3929f3[_0x6a86('0xcd')]);return db['VoiceRecording'][_0x6a86('0x25')]({'where':_0x3a8518[_0x6a86('0xcb')]})['then'](function(_0x11a848){_0x6482dc[_0x6a86('0x25')]=_0x11a848;if(_0x3929f3[_0x6a86('0x3e')]['includeAll']){_0x3a8518[_0x6a86('0x40')]=[{'all':!![]}];}return db[_0x6a86('0xda')][_0x6a86('0x43')](_0x3a8518);})[_0x6a86('0x15')](function(_0x3e3a43){_0x6482dc[_0x6a86('0x44')]=_0x3e3a43;return _0x6482dc;});}})['then'](respondWithFilteredResult(_0x1f7987,_0x3a8518))['catch'](handleError(_0x1f7987,null));};exports[_0x6a86('0xdb')]=function(_0x142812,_0x5314e7){var _0x1470f1={'raw':!![],'where':{}};var _0xedb02b={};var _0x16b193={'count':0x0,'rows':[]};return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x142812[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x5314e7,null))['then'](function(_0x21826d){if(_0x21826d){_0xedb02b[_0x6a86('0x52')]=_[_0x6a86('0x4e')](db['ScreenRecording'][_0x6a86('0x38')]);_0xedb02b[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x142812[_0x6a86('0x3e')]);_0xedb02b[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0xedb02b[_0x6a86('0x52')],_0xedb02b[_0x6a86('0x3e')]);_0x1470f1[_0x6a86('0x41')]=_['intersection'](_0xedb02b[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x142812[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x1470f1[_0x6a86('0x41')]=_0x1470f1[_0x6a86('0x41')]['length']?_0x1470f1[_0x6a86('0x41')]:_0xedb02b[_0x6a86('0x52')];if(!_0x142812[_0x6a86('0x3e')][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x1470f1[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x142812['query'][_0x6a86('0x24')]);_0x1470f1[_0x6a86('0x22')]=qs['offset'](_0x142812[_0x6a86('0x3e')]['offset']);}_0x1470f1[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x142812[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x1470f1['where']=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x142812[_0x6a86('0x3e')],_0xedb02b[_0x6a86('0x51')]));_0x1470f1[_0x6a86('0xcb')]['UserId']=_0x21826d['id'];if(_0x142812[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x1470f1[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x1470f1[_0x6a86('0xcb')],{'$or':_['map'](_0x1470f1[_0x6a86('0x41')],function(_0x302cc8){var _0x2d3fc2={};_0x2d3fc2[_0x302cc8]={'$like':'%'+_0x142812[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x2d3fc2;})});}_0x1470f1=_[_0x6a86('0xcc')]({},_0x1470f1,_0x142812[_0x6a86('0xcd')]);return db[_0x6a86('0xdc')][_0x6a86('0x25')]({'where':_0x1470f1['where']})['then'](function(_0x3e9402){_0x16b193[_0x6a86('0x25')]=_0x3e9402;if(_0x142812[_0x6a86('0x3e')]['includeAll']){_0x1470f1[_0x6a86('0x40')]=[{'all':!![]}];}return db[_0x6a86('0xdc')][_0x6a86('0x43')](_0x1470f1);})[_0x6a86('0x15')](function(_0x592b12){_0x16b193[_0x6a86('0x44')]=_0x592b12;return _0x16b193;});}})[_0x6a86('0x15')](respondWithFilteredResult(_0x5314e7,_0x1470f1))['catch'](handleError(_0x5314e7,null));};exports[_0x6a86('0xdd')]=function(_0x133076,_0x57bcc2){var _0x42f609={};var _0x32c19f={};var _0x3c80b9;var _0x449cf1;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x133076[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x57bcc2,null))[_0x6a86('0x15')](function(_0x5e4a94){if(_0x5e4a94){_0x3c80b9=_0x5e4a94;_0x32c19f['model']=_['keys'](db[_0x6a86('0xde')][_0x6a86('0x38')]);_0x32c19f[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x133076[_0x6a86('0x3e')]);_0x32c19f[_0x6a86('0x51')]=_['intersection'](_0x32c19f[_0x6a86('0x52')],_0x32c19f['query']);_0x42f609[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x32c19f[_0x6a86('0x52')],qs['fields'](_0x133076[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x42f609[_0x6a86('0x41')]=_0x42f609[_0x6a86('0x41')][_0x6a86('0x55')]?_0x42f609['attributes']:_0x32c19f[_0x6a86('0x52')];_0x42f609[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x133076['query']['sort']);_0x42f609[_0x6a86('0xcb')]=qs['filters'](_[_0x6a86('0xca')](_0x133076[_0x6a86('0x3e')],_0x32c19f[_0x6a86('0x51')]));if(_0x133076['query'][_0x6a86('0x30')]){_0x42f609[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x42f609[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x42f609[_0x6a86('0x41')],function(_0x5bd58e){var _0x13b9d0={};_0x13b9d0[_0x5bd58e]={'$like':'%'+_0x133076[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x13b9d0;})});}_0x42f609=_[_0x6a86('0xcc')]({},_0x42f609,_0x133076['options']);return _0x3c80b9['getChatInteractions'](_0x42f609);}})[_0x6a86('0x15')](function(_0x26d20a){if(_0x26d20a){_0x449cf1=_0x26d20a[_0x6a86('0x55')];if(!_0x133076[_0x6a86('0x3e')][_0x6a86('0xd2')]('nolimit')){_0x42f609[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x133076['query']['limit']);_0x42f609[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x133076[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x3c80b9[_0x6a86('0xdd')](_0x42f609);}})[_0x6a86('0x15')](function(_0x392ace){if(_0x392ace){return _0x392ace?{'count':_0x449cf1,'rows':_0x392ace}:null;}})['then'](respondWithResult(_0x57bcc2,null))[_0x6a86('0x1e')](handleError(_0x57bcc2,null));};exports[_0x6a86('0xdf')]=function(_0x216a19,_0x58b987){var _0x3101e8={};var _0x4990b2={};var _0x244d37;var _0x483629;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x216a19[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x58b987,null))['then'](function(_0x1404e4){if(_0x1404e4){_0x244d37=_0x1404e4;_0x4990b2['model']=_['keys'](db[_0x6a86('0xe0')][_0x6a86('0x38')]);_0x4990b2[_0x6a86('0x3e')]=_['keys'](_0x216a19['query']);_0x4990b2[_0x6a86('0x51')]=_['intersection'](_0x4990b2[_0x6a86('0x52')],_0x4990b2['query']);_0x3101e8[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x4990b2[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x216a19[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x3101e8[_0x6a86('0x41')]=_0x3101e8[_0x6a86('0x41')][_0x6a86('0x55')]?_0x3101e8[_0x6a86('0x41')]:_0x4990b2[_0x6a86('0x52')];_0x3101e8['order']=qs[_0x6a86('0xc9')](_0x216a19[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x3101e8['where']=qs['filters'](_[_0x6a86('0xca')](_0x216a19[_0x6a86('0x3e')],_0x4990b2[_0x6a86('0x51')]));if(_0x216a19[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x3101e8[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x3101e8['where'],{'$or':_[_0x6a86('0x89')](_0x3101e8[_0x6a86('0x41')],function(_0x10d0fd){var _0x441faa={};_0x441faa[_0x10d0fd]={'$like':'%'+_0x216a19[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x441faa;})});}_0x3101e8=_[_0x6a86('0xcc')]({},_0x3101e8,_0x216a19[_0x6a86('0xcd')]);return _0x244d37[_0x6a86('0xdf')](_0x3101e8);}})[_0x6a86('0x15')](function(_0xfb1822){if(_0xfb1822){_0x483629=_0xfb1822[_0x6a86('0x55')];if(!_0x216a19[_0x6a86('0x3e')][_0x6a86('0xd2')]('nolimit')){_0x3101e8[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x216a19[_0x6a86('0x3e')]['limit']);_0x3101e8[_0x6a86('0x22')]=qs['offset'](_0x216a19[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x244d37['getOpenchannelInteractions'](_0x3101e8);}})[_0x6a86('0x15')](function(_0x578ce9){if(_0x578ce9){return _0x578ce9?{'count':_0x483629,'rows':_0x578ce9}:null;}})[_0x6a86('0x15')](respondWithResult(_0x58b987,null))[_0x6a86('0x1e')](handleError(_0x58b987,null));};exports[_0x6a86('0xe1')]=function(_0x3dfb0d,_0x28ab77){var _0x537058={'raw':!![],'where':{}};var _0x3c6e94={};var _0x2d98fd={'count':0x0,'rows':[]};return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x3dfb0d['params']['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x28ab77,null))[_0x6a86('0x15')](function(_0x3292a){if(_0x3292a){_0x3c6e94[_0x6a86('0x52')]=_['keys'](db[_0x6a86('0xe2')]['rawAttributes']);_0x3c6e94[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x3dfb0d[_0x6a86('0x3e')]);_0x3c6e94[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x3c6e94[_0x6a86('0x52')],_0x3c6e94['query']);_0x537058['attributes']=_['intersection'](_0x3c6e94['model'],qs[_0x6a86('0x54')](_0x3dfb0d[_0x6a86('0x3e')]['fields']));_0x537058['attributes']=_0x537058['attributes']['length']?_0x537058[_0x6a86('0x41')]:_0x3c6e94[_0x6a86('0x52')];if(!_0x3dfb0d[_0x6a86('0x3e')][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x537058[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x3dfb0d[_0x6a86('0x3e')][_0x6a86('0x24')]);_0x537058[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x3dfb0d['query'][_0x6a86('0x22')]);}_0x537058['order']=qs[_0x6a86('0xc9')](_0x3dfb0d[_0x6a86('0x3e')]['sort']);_0x537058['where']=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x3dfb0d[_0x6a86('0x3e')],_0x3c6e94[_0x6a86('0x51')]));_0x537058[_0x6a86('0xcb')][_0x6a86('0xe3')]=_0x3292a['id'];if(_0x3dfb0d['query'][_0x6a86('0x30')]){_0x537058['where']=_[_0x6a86('0xcc')](_0x537058[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x537058[_0x6a86('0x41')],function(_0x425486){var _0x51c995={};_0x51c995[_0x425486]={'$like':'%'+_0x3dfb0d[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x51c995;})});}_0x537058=_['merge']({},_0x537058,_0x3dfb0d[_0x6a86('0xcd')]);return db[_0x6a86('0xe2')][_0x6a86('0x25')]({'where':_0x537058['where']})['then'](function(_0xbcf898){_0x2d98fd[_0x6a86('0x25')]=_0xbcf898;if(_0x3dfb0d[_0x6a86('0x3e')][_0x6a86('0x3f')]){_0x537058[_0x6a86('0x40')]=[{'all':!![]}];}return db[_0x6a86('0xe2')]['findAll'](_0x537058);})[_0x6a86('0x15')](function(_0x3427f4){_0x2d98fd[_0x6a86('0x44')]=_0x3427f4;return _0x2d98fd;});}})[_0x6a86('0x15')](respondWithFilteredResult(_0x28ab77,_0x537058))[_0x6a86('0x1e')](handleError(_0x28ab77,null));};exports[_0x6a86('0xe4')]=function(_0x5cd0b1,_0x41b8fe){var _0x288aea={};var _0x19d38e={};var _0x3663b7;var _0x473e60;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x5cd0b1[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x41b8fe,null))['then'](function(_0x52eb34){if(_0x52eb34){_0x3663b7=_0x52eb34;_0x19d38e[_0x6a86('0x52')]=_['keys'](db[_0x6a86('0xe5')][_0x6a86('0x38')]);_0x19d38e[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x5cd0b1[_0x6a86('0x3e')]);_0x19d38e[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x19d38e[_0x6a86('0x52')],_0x19d38e[_0x6a86('0x3e')]);_0x288aea['attributes']=_[_0x6a86('0x53')](_0x19d38e[_0x6a86('0x52')],qs['fields'](_0x5cd0b1['query'][_0x6a86('0x54')]));_0x288aea['attributes']=_0x288aea['attributes'][_0x6a86('0x55')]?_0x288aea[_0x6a86('0x41')]:_0x19d38e['model'];_0x288aea[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x5cd0b1['query'][_0x6a86('0xc9')]);_0x288aea[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x5cd0b1['query'],_0x19d38e[_0x6a86('0x51')]));if(_0x5cd0b1[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x288aea[_0x6a86('0xcb')]=_['merge'](_0x288aea[_0x6a86('0xcb')],{'$or':_['map'](_0x288aea[_0x6a86('0x41')],function(_0x5435d7){var _0x567a2d={};_0x567a2d[_0x5435d7]={'$like':'%'+_0x5cd0b1['query'][_0x6a86('0x30')]+'%'};return _0x567a2d;})});}_0x288aea=_['merge']({},_0x288aea,_0x5cd0b1[_0x6a86('0xcd')]);return _0x3663b7[_0x6a86('0xe4')](_0x288aea);}})[_0x6a86('0x15')](function(_0x5e9a65){if(_0x5e9a65){_0x473e60=_0x5e9a65[_0x6a86('0x55')];if(!_0x5cd0b1['query'][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x288aea[_0x6a86('0x24')]=qs['limit'](_0x5cd0b1[_0x6a86('0x3e')][_0x6a86('0x24')]);_0x288aea[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x5cd0b1[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x3663b7[_0x6a86('0xe4')](_0x288aea);}})[_0x6a86('0x15')](function(_0x1883fc){if(_0x1883fc){return _0x1883fc?{'count':_0x473e60,'rows':_0x1883fc}:null;}})['then'](respondWithResult(_0x41b8fe,null))[_0x6a86('0x1e')](handleError(_0x41b8fe,null));};exports[_0x6a86('0xe6')]=function(_0x3c7cb8,_0x5f1299){var _0x466a82={};var _0x514194={};var _0x100b3d;var _0x38e058;return db['User']['findOne']({'where':{'id':_0x3c7cb8['params']['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x5f1299,null))['then'](function(_0x333c3d){if(_0x333c3d){_0x100b3d=_0x333c3d;_0x514194[_0x6a86('0x52')]=_[_0x6a86('0x4e')](db[_0x6a86('0xe7')][_0x6a86('0x38')]);_0x514194[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x3c7cb8[_0x6a86('0x3e')]);_0x514194[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x514194[_0x6a86('0x52')],_0x514194[_0x6a86('0x3e')]);_0x466a82[_0x6a86('0x41')]=_['intersection'](_0x514194[_0x6a86('0x52')],qs['fields'](_0x3c7cb8[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x466a82[_0x6a86('0x41')]=_0x466a82[_0x6a86('0x41')][_0x6a86('0x55')]?_0x466a82['attributes']:_0x514194[_0x6a86('0x52')];_0x466a82['order']=qs[_0x6a86('0xc9')](_0x3c7cb8['query'][_0x6a86('0xc9')]);_0x466a82[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x3c7cb8['query'],_0x514194[_0x6a86('0x51')]));if(_0x3c7cb8[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x466a82[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x466a82[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x466a82[_0x6a86('0x41')],function(_0x298c04){var _0x13ee91={};_0x13ee91[_0x298c04]={'$like':'%'+_0x3c7cb8[_0x6a86('0x3e')]['filter']+'%'};return _0x13ee91;})});}_0x466a82=_[_0x6a86('0xcc')]({},_0x466a82,_0x3c7cb8[_0x6a86('0xcd')]);return _0x100b3d[_0x6a86('0xe6')](_0x466a82);}})['then'](function(_0x4e3f80){if(_0x4e3f80){_0x38e058=_0x4e3f80[_0x6a86('0x55')];if(!_0x3c7cb8['query']['hasOwnProperty'](_0x6a86('0xd7'))){_0x466a82[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x3c7cb8['query']['limit']);_0x466a82[_0x6a86('0x22')]=qs['offset'](_0x3c7cb8[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x100b3d['getFaxInteractions'](_0x466a82);}})[_0x6a86('0x15')](function(_0x1c970e){if(_0x1c970e){return _0x1c970e?{'count':_0x38e058,'rows':_0x1c970e}:null;}})[_0x6a86('0x15')](respondWithResult(_0x5f1299,null))[_0x6a86('0x1e')](handleError(_0x5f1299,null));};exports[_0x6a86('0xe8')]=function(_0x246482,_0x1e1132){var _0x3ceab3={};var _0x4f869d={};var _0x6db6d;var _0x4320d5;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x246482[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x1e1132,null))[_0x6a86('0x15')](function(_0x220849){if(_0x220849){_0x6db6d=_0x220849;_0x4f869d[_0x6a86('0x52')]=_[_0x6a86('0x4e')](db[_0x6a86('0xe9')][_0x6a86('0x38')]);_0x4f869d[_0x6a86('0x3e')]=_['keys'](_0x246482[_0x6a86('0x3e')]);_0x4f869d[_0x6a86('0x51')]=_['intersection'](_0x4f869d[_0x6a86('0x52')],_0x4f869d[_0x6a86('0x3e')]);_0x3ceab3[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x4f869d[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x246482['query']['fields']));_0x3ceab3[_0x6a86('0x41')]=_0x3ceab3[_0x6a86('0x41')][_0x6a86('0x55')]?_0x3ceab3[_0x6a86('0x41')]:_0x4f869d[_0x6a86('0x52')];_0x3ceab3['order']=qs[_0x6a86('0xc9')](_0x246482[_0x6a86('0x3e')]['sort']);_0x3ceab3[_0x6a86('0xcb')]=qs['filters'](_['pick'](_0x246482['query'],_0x4f869d[_0x6a86('0x51')]));if(_0x246482[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x3ceab3[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x3ceab3[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x3ceab3[_0x6a86('0x41')],function(_0x3f1b9f){var _0x51b774={};_0x51b774[_0x3f1b9f]={'$like':'%'+_0x246482['query'][_0x6a86('0x30')]+'%'};return _0x51b774;})});}_0x3ceab3=_['merge']({},_0x3ceab3,_0x246482['options']);return _0x6db6d[_0x6a86('0xe8')](_0x3ceab3);}})[_0x6a86('0x15')](function(_0x142777){if(_0x142777){_0x4320d5=_0x142777[_0x6a86('0x55')];if(!_0x246482['query'][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x3ceab3[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x246482[_0x6a86('0x3e')][_0x6a86('0x24')]);_0x3ceab3[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x246482[_0x6a86('0x3e')]['offset']);}return _0x6db6d[_0x6a86('0xe8')](_0x3ceab3);}})['then'](function(_0x177b1b){if(_0x177b1b){return _0x177b1b?{'count':_0x4320d5,'rows':_0x177b1b}:null;}})['then'](respondWithResult(_0x1e1132,null))[_0x6a86('0x1e')](handleError(_0x1e1132,null));};exports[_0x6a86('0xea')]=function(_0x5c6078,_0x3de65d,_0x585390){var _0x51f47d;var _0x2ce287;var _0x5cff32;var _0xfac2=!_[_0x6a86('0x62')](_0x5c6078[_0x6a86('0x4c')]['id'])?_0x5c6078[_0x6a86('0x4c')]['id']:!_[_0x6a86('0x62')](_0x5c6078[_0x6a86('0x2c')]['id'])?_0x5c6078[_0x6a86('0x2c')]['id']:null;return db[_0x6a86('0x4f')]['find']({'where':{'id':_0xfac2,'role':{'$or':['admin',_0x6a86('0x2c'),'agent']}},'attributes':['id','name',_0x6a86('0xeb'),_0x6a86('0xec'),_0x6a86('0x59'),_0x6a86('0x61'),_0x6a86('0x9c')]})[_0x6a86('0x15')](function(_0x160c1a){if(_0x160c1a){if(_0x160c1a[_0x6a86('0x59')]===_0x6a86('0x79')){_0x51f47d=_0x160c1a;if(_0x5c6078['body'][_0x6a86('0x9d')]){_0x5cff32=util[_0x6a86('0xa6')]('LOCAL/%s@from-sip/n',_0x51f47d[_0x5c6078['body']['interface']]);}else if(_0x5c6078[_0x6a86('0x58')][_0x6a86('0xed')]){_0x5cff32=util[_0x6a86('0xa6')]('SIP/%s',_0x5c6078['body'][_0x6a86('0xed')]);}else{_0x5cff32=util[_0x6a86('0xa6')](_0x6a86('0xee'),_0x51f47d[_0x6a86('0x34')]);}socket['to'](util[_0x6a86('0xa6')]('user:%s',_0x51f47d[_0x6a86('0x34')]))[_0x6a86('0xaa')](_0x6a86('0xef'),{'user':{'id':_0x51f47d['id'],'name':_0x51f47d[_0x6a86('0x34')]},'ip':_0x5c6078[_0x6a86('0xf0')][_0x6a86('0xf1')]||_0x5c6078[_0x6a86('0xf2')][_0x6a86('0xf3')]||_0x5c6078[_0x6a86('0xf4')][_0x6a86('0xf3')]||_0x5c6078['connection']['socket'][_0x6a86('0xf3')]});return db[_0x6a86('0xa7')][_0x6a86('0x28')]({'where':{'membername':_0x51f47d[_0x6a86('0x34')]},'individualHooks':!![]});}}else{throw new db[(_0x6a86('0x8e'))]['ValidationError'](_0x6a86('0xf5'));}})[_0x6a86('0x15')](function(){if(_0x51f47d){return _0x51f47d[_0x6a86('0xf6')]({'raw':!![]});}})[_0x6a86('0x15')](function(_0x1707ef){if(_0x51f47d){var _0x76165f=[];if(_0x1707ef){_0x2ce287=_0x1707ef;if(_0x2ce287[_0x6a86('0x55')]){for(var _0x189808=0x0;_0x189808<_0x2ce287[_0x6a86('0x55')];_0x189808++){_0x76165f[_0x6a86('0x42')]({'membername':_0x51f47d[_0x6a86('0x34')],'UserId':_0x51f47d['id'],'queue_name':_0x2ce287[_0x189808][_0x6a86('0x34')],'VoiceQueueId':_0x2ce287[_0x189808]['id'],'interface':_0x5cff32,'paused':_0x51f47d[_0x6a86('0x9c')]||![],'penalty':_0x2ce287[_0x189808][_0x6a86('0xf7')]||0x0});}return BPromise[_0x6a86('0x86')](_0x76165f,function(_0x53b11c){return db[_0x6a86('0xa7')][_0x6a86('0xf8')](_0x53b11c);});}}}})[_0x6a86('0x15')](function(){if(_0x51f47d){return db[_0x6a86('0xf9')]['findAll']({'where':{'membername':_0x51f47d[_0x6a86('0x34')],'exitAt':null}});}})[_0x6a86('0x15')](function(_0x286a0e){if(_0x51f47d){var _0x276d77=[];_0x286a0e[_0x6a86('0xfa')](function(_0x2e3316){_0x276d77['push'](_0x2e3316[_0x6a86('0x27')]({'exitAt':moment()[_0x6a86('0xa6')](_0x6a86('0xfb'))}));});return BPromise[_0x6a86('0x4a')](_0x276d77);}})[_0x6a86('0x15')](function(){if(_0x51f47d){var _0x199e14=[];var _0x7eb9e=[];var _0x516e97=utils[_0x6a86('0xfc')]();var _0x37f6dd={'membername':_0x51f47d[_0x6a86('0x34')],'interface':_0x5cff32,'enterAt':moment()[_0x6a86('0xa6')](_0x6a86('0xfb')),'role':_0x51f47d[_0x6a86('0x59')],'internal':_0x51f47d[_0x6a86('0x61')]};_0x516e97[_0x6a86('0xfa')](function(_0x4ee7d1){_0x199e14[_0x6a86('0x42')](_[_0x6a86('0xcc')]({'channel':_0x4ee7d1,'type':_0x6a86('0xfd'),'data1':_0x5c6078['body'][_0x6a86('0xfe')],'data2':_0x5cff32},_0x37f6dd));if(_0x51f47d['loginInPause']){_0x7eb9e[_0x6a86('0x42')](_['merge']({'channel':_0x4ee7d1,'type':_0x6a86('0xff'),'data1':'LOGININPAUSE'},_0x37f6dd));}});return db[_0x6a86('0xf9')]['bulkCreate'](_0x199e14['concat'](_0x7eb9e),{'individualHooks':!![]});}})[_0x6a86('0x15')](function(){if(_0x51f47d){return _0x51f47d[_0x6a86('0x27')]({'online':!![],'lastLoginAt':moment()[_0x6a86('0xa6')](_0x6a86('0xfb')),'voicePause':_0x51f47d[_0x6a86('0x9c')]||![],'mailPause':_0x51f47d[_0x6a86('0x9c')]||![],'chatPause':_0x51f47d[_0x6a86('0x9c')]||![],'faxPause':_0x51f47d[_0x6a86('0x9c')]||![],'smsPause':_0x51f47d[_0x6a86('0x9c')]||![],'openchannelPause':_0x51f47d['loginInPause']||![],'whatsappPause':_0x51f47d[_0x6a86('0x9c')]||![],'pauseType':_0x51f47d[_0x6a86('0x9c')]?_0x6a86('0x100'):null,'interface':_0x5cff32,'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})['then'](function(_0x554d22){if(_0x5c6078['isMiddleware']){return _0x585390();}else{return BPromise[_0x6a86('0x101')](_0x554d22)[_0x6a86('0x15')](respondWithResult(_0x3de65d,null));}})[_0x6a86('0x1e')](handleError(_0x3de65d,null));};exports[_0x6a86('0x102')]=function(_0x5eec58,_0x22062d){var _0x2bf4f4;return db[_0x6a86('0x4f')]['find']({'where':{'id':_0x5eec58[_0x6a86('0x4c')]['id'],'role':_0x6a86('0x79')},'attributes':['id','name','role']})[_0x6a86('0x15')](handleEntityNotFound(_0x22062d,null))[_0x6a86('0x15')](function(_0x51f3d1){if(_0x51f3d1){_0x2bf4f4=_0x51f3d1;return db[_0x6a86('0xa7')][_0x6a86('0x28')]({'where':{'membername':_0x2bf4f4['name']},'individualHooks':!![]});}})[_0x6a86('0x15')](function(){return db[_0x6a86('0xf9')][_0x6a86('0x43')]({'where':{'membername':_0x2bf4f4[_0x6a86('0x34')],'exitAt':null}});})[_0x6a86('0x15')](function(_0x27caea){var _0x97e390=[];_0x27caea[_0x6a86('0xfa')](function(_0x5666ad){_0x97e390[_0x6a86('0x42')](_0x5666ad[_0x6a86('0x27')]({'exitAt':moment()[_0x6a86('0xa6')](_0x6a86('0xfb'))}));});return BPromise['all'](_0x97e390);})[_0x6a86('0x15')](function(){return _0x2bf4f4[_0x6a86('0x27')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x6a86('0x15')](respondWithResult(_0x22062d,null))['catch'](handleError(_0x22062d,null));};exports[_0x6a86('0x103')]=function(_0xfd0df4,_0x1f9d27){var _0x473603;return db['UserVoiceQueueRt'][_0x6a86('0x27')]({'paused':0x1},{'where':{'UserId':_0xfd0df4['params']['id']},'individualHooks':!![]})[_0x6a86('0x15')](function(){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0xfd0df4[_0x6a86('0x4c')]['id'],'role':'agent'},'attributes':['id','name',_0x6a86('0x59'),_0x6a86('0x61'),_0x6a86('0x9d')]});})['then'](handleEntityNotFound(_0x1f9d27,null))['then'](function(_0x1c5ae7){if(_0x1c5ae7){_0x473603=_0x1c5ae7;return respondWithRpcPromise(_0x6a86('0x104'),_0x6a86('0x103'),{'id':_0x473603['id'],'name':_0x473603[_0x6a86('0x34')],'pause':!![]});}})[_0x6a86('0x15')](function(){if(_0x473603){return db[_0x6a86('0xf9')][_0x6a86('0x43')]({'where':{'membername':_0x473603[_0x6a86('0x34')],'type':_0x6a86('0xff'),'exitAt':null}});}})[_0x6a86('0x15')](function(_0x3afdb7){if(_0x3afdb7['length']){var _0x134baa=moment()[_0x6a86('0xa6')](_0x6a86('0xfb'));for(var _0x1c50ef=0x0,_0x37fc24=_0x3afdb7[_0x6a86('0x55')];_0x1c50ef<_0x37fc24;_0x1c50ef++){_0x3afdb7[_0x1c50ef][_0x6a86('0x105')]({'exitAt':_0x134baa});}}})[_0x6a86('0x15')](function(){var _0x8bfd15=[];var _0x2f3113=utils['getChannels']();_0x2f3113[_0x6a86('0xfa')](function(_0x423241){_0x8bfd15[_0x6a86('0x42')]({'channel':_0x423241,'membername':_0x473603[_0x6a86('0x34')],'interface':_['isNil'](_0x473603[_0x6a86('0x9d')])?util[_0x6a86('0xa6')](_0x6a86('0xee'),_0x473603['name']):_0x473603[_0x6a86('0x9d')],'type':_0x6a86('0xff'),'enterAt':moment()['format'](_0x6a86('0xfb')),'data1':_0xfd0df4[_0x6a86('0x58')][_0x6a86('0x39')]||_0x6a86('0x106'),'role':_0x473603[_0x6a86('0x59')],'internal':_0x473603['internal']});});return db[_0x6a86('0xf9')][_0x6a86('0x84')](_0x8bfd15,{'individualHooks':!![]});})[_0x6a86('0x15')](function(){return _0x473603[_0x6a86('0x27')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0xfd0df4[_0x6a86('0x58')]['type']||_0x6a86('0x106'),'lastPauseAt':moment()['format'](_0x6a86('0xfb'))});})[_0x6a86('0x15')](respondWithResult(_0x1f9d27,null))['catch'](handleError(_0x1f9d27,null));};exports['unpause']=function(_0x156b25,_0x55f5f6){var _0x50fcfd;return db[_0x6a86('0x4f')]['find']({'where':{'id':_0x156b25[_0x6a86('0x4c')]['id']},'attributes':['id',_0x6a86('0x34'),_0x6a86('0x59'),_0x6a86('0x107'),_0x6a86('0x108'),'chatPause',_0x6a86('0x109'),_0x6a86('0x10a'),_0x6a86('0x10b'),'whatsapppause',_0x6a86('0x10c'),_0x6a86('0x10d')]})[_0x6a86('0x15')](handleEntityNotFound(_0x55f5f6,null))[_0x6a86('0x15')](function(_0x309bba){if(_0x309bba){_0x50fcfd=_0x309bba;if(_0x156b25[_0x6a86('0x58')][_0x6a86('0xa8')]&&!utils[_0x6a86('0x9e')](_0x156b25[_0x6a86('0x58')][_0x6a86('0xa8')])){throw new db[(_0x6a86('0x8e'))][(_0x6a86('0x8f'))]('Unknown\x20channel');}switch(_0x156b25[_0x6a86('0x58')][_0x6a86('0xa8')]){case _0x6a86('0xa5'):return respondWithRpcPromise(_0x6a86('0x104'),_0x6a86('0x10e'),{'id':_0x50fcfd['id'],'name':_0x50fcfd['name'],'pause':![]})['then'](function(){return db[_0x6a86('0xa7')][_0x6a86('0x27')]({'paused':0x0},{'where':{'UserId':_0x50fcfd['id']},'individualHooks':!![]});})[_0x6a86('0x15')](function(){return db['MemberReport'][_0x6a86('0x33')]({'where':{'channel':_0x156b25[_0x6a86('0x58')][_0x6a86('0xa8')],'membername':_0x50fcfd[_0x6a86('0x34')],'type':_0x6a86('0xff'),'exitAt':null}});})['then'](function(_0x3e2ef9){if(_0x3e2ef9){return _0x3e2ef9[_0x6a86('0x27')]({'exitAt':moment()[_0x6a86('0xa6')](_0x6a86('0xfb')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x6a86('0x15')](function(){return _0x50fcfd[_0x6a86('0x27')]({'voicePause':![]});});case _0x6a86('0x48'):case _0x6a86('0xb9'):case _0x6a86('0x47'):case _0x6a86('0x46'):case _0x6a86('0x57'):case _0x6a86('0x49'):return db[_0x6a86('0xf9')][_0x6a86('0x33')]({'where':{'channel':_0x156b25[_0x6a86('0x58')][_0x6a86('0xa8')],'membername':_0x50fcfd[_0x6a86('0x34')],'type':'PAUSE','exitAt':null}})[_0x6a86('0x15')](function(_0x4cf42c){if(_0x4cf42c){return _0x4cf42c[_0x6a86('0x27')]({'exitAt':moment()[_0x6a86('0xa6')](_0x6a86('0xfb')),'data2':_0x6a86('0x10f')},{'individualHooks':!![]});}return null;})[_0x6a86('0x15')](function(){var _0x408c31={};_[_0x6a86('0x26')](_0x408c31,util[_0x6a86('0xa6')](_0x6a86('0x110'),_0x156b25['body'][_0x6a86('0xa8')],_0x6a86('0x111')),![]);return _0x50fcfd[_0x6a86('0x27')](_0x408c31);});default:return respondWithRpcPromise('QueuePause','unpause',{'id':_0x50fcfd['id'],'name':_0x50fcfd['name'],'pause':![]})['then'](function(){return db[_0x6a86('0xa7')][_0x6a86('0x27')]({'paused':0x0},{'where':{'UserId':_0x50fcfd['id']}});})[_0x6a86('0x15')](function(){return db[_0x6a86('0xf9')][_0x6a86('0x43')]({'where':{'membername':_0x50fcfd[_0x6a86('0x34')],'type':'PAUSE','exitAt':null}});})[_0x6a86('0x15')](function(_0x476e4c){var _0xf6c528=[];_0x476e4c[_0x6a86('0xfa')](function(_0x468aaf){_0xf6c528[_0x6a86('0x42')](_0x468aaf[_0x6a86('0x27')]({'exitAt':moment()[_0x6a86('0xa6')](_0x6a86('0xfb')),'data2':_0x6a86('0x10f')}));});return BPromise[_0x6a86('0x4a')](_0xf6c528);})[_0x6a86('0x15')](function(){return _0x50fcfd[_0x6a86('0x27')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x6a86('0x15')](respondWithResult(_0x55f5f6,null))[_0x6a86('0x1e')](handleError(_0x55f5f6,null));};exports[_0x6a86('0x112')]=function(_0x379892,_0x2f0f19){var _0x1008d9={};var _0x48d0ef={};var _0x115f63;var _0x75287f;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x379892['params']['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x2f0f19,null))[_0x6a86('0x15')](function(_0x97ec91){if(_0x97ec91){_0x115f63=_0x97ec91;_0x48d0ef['model']=_['keys'](db[_0x6a86('0x113')][_0x6a86('0x38')]);_0x48d0ef[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x379892['query']);_0x48d0ef['filters']=_[_0x6a86('0x53')](_0x48d0ef['model'],_0x48d0ef[_0x6a86('0x3e')]);_0x1008d9['attributes']=_[_0x6a86('0x53')](_0x48d0ef[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x379892[_0x6a86('0x3e')]['fields']));_0x1008d9[_0x6a86('0x41')]=_0x1008d9[_0x6a86('0x41')][_0x6a86('0x55')]?_0x1008d9[_0x6a86('0x41')]:_0x48d0ef['model'];_0x1008d9[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x379892[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x1008d9[_0x6a86('0xcb')]=qs['filters'](_[_0x6a86('0xca')](_0x379892['query'],_0x48d0ef[_0x6a86('0x51')]));if(_0x379892['query']['filter']){_0x1008d9['where']=_[_0x6a86('0xcc')](_0x1008d9[_0x6a86('0xcb')],{'$or':_['map'](_0x1008d9[_0x6a86('0x41')],function(_0x51892b){var _0x21636b={};_0x21636b[_0x51892b]={'$like':'%'+_0x379892[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x21636b;})});}_0x1008d9=_[_0x6a86('0xcc')]({},_0x1008d9,_0x379892[_0x6a86('0xcd')]);return _0x115f63['getTeams'](_0x1008d9);}})[_0x6a86('0x15')](function(_0x5da10a){if(_0x5da10a){_0x75287f=_0x5da10a[_0x6a86('0x55')];if(!_0x379892['query'][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x1008d9[_0x6a86('0x24')]=qs['limit'](_0x379892['query'][_0x6a86('0x24')]);_0x1008d9[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x379892[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x115f63[_0x6a86('0x112')](_0x1008d9);}})[_0x6a86('0x15')](function(_0x2e8a0f){if(_0x2e8a0f){return _0x2e8a0f?{'count':_0x75287f,'rows':_0x2e8a0f}:null;}})['then'](respondWithResult(_0x2f0f19,null))['catch'](handleError(_0x2f0f19,null));};exports[_0x6a86('0x114')]=function(_0x2f2dc0,_0x3bf877){return db[_0x6a86('0x4f')]['find']({'where':{'id':_0x2f2dc0['params']['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x3bf877,null))[_0x6a86('0x15')](function(_0x449876){if(_0x449876){var _0x1b225c=_0x449876[_0x6a86('0x29')]({'plain':!![]});return _0x449876[_0x6a86('0x114')](_0x2f2dc0[_0x6a86('0x58')][_0x6a86('0x5c')],_[_0x6a86('0x115')](_0x2f2dc0['body'],['ids','id'])||{})['then'](function(){for(var _0x1c13e6=0x0;_0x1c13e6<_0x2f2dc0[_0x6a86('0x58')][_0x6a86('0x5c')][_0x6a86('0x55')];_0x1c13e6++){var _0x28e536=[];db[_0x6a86('0x113')]['findOne']({'where':{'id':_0x2f2dc0[_0x6a86('0x58')][_0x6a86('0x5c')][_0x1c13e6]}})[_0x6a86('0x15')](function(_0xba1e90){_0x28e536[_0x6a86('0x42')](_0xba1e90[_0x6a86('0xf6')]()[_0x6a86('0x15')](function(_0x1cbab8){for(var _0x40429e=0x0;_0x40429e<_0x1cbab8[_0x6a86('0x55')];_0x40429e++){_0x1cbab8[_0x40429e][_0x6a86('0x116')](_0x6a86('0xa8'),_0x6a86('0x117'));}return _0x1cbab8;}));_0x28e536[_0x6a86('0x42')](_0xba1e90[_0x6a86('0x118')]()['then'](function(_0x158b77){for(var _0x2e94d5=0x0;_0x2e94d5<_0x158b77[_0x6a86('0x55')];_0x2e94d5++){_0x158b77[_0x2e94d5][_0x6a86('0x116')]('channel',_0x6a86('0x119'));}return _0x158b77;}));_0x28e536['push'](_0xba1e90[_0x6a86('0x11a')]()['then'](function(_0x25ee0a){for(var _0x428468=0x0;_0x428468<_0x25ee0a[_0x6a86('0x55')];_0x428468++){_0x25ee0a[_0x428468][_0x6a86('0x116')](_0x6a86('0xa8'),_0x6a86('0x11b'));}return _0x25ee0a;}));_0x28e536['push'](_0xba1e90[_0x6a86('0x11c')]()[_0x6a86('0x15')](function(_0x1b05d1){for(var _0x21c590=0x0;_0x21c590<_0x1b05d1[_0x6a86('0x55')];_0x21c590++){_0x1b05d1[_0x21c590][_0x6a86('0x116')](_0x6a86('0xa8'),_0x6a86('0x11d'));}return _0x1b05d1;}));_0x28e536['push'](_0xba1e90[_0x6a86('0x11e')]()[_0x6a86('0x15')](function(_0x2deeaa){for(var _0x4d6588=0x0;_0x4d6588<_0x2deeaa[_0x6a86('0x55')];_0x4d6588++){_0x2deeaa[_0x4d6588][_0x6a86('0x116')](_0x6a86('0xa8'),_0x6a86('0x11f'));}return _0x2deeaa;}));_0x28e536[_0x6a86('0x42')](_0xba1e90[_0x6a86('0x120')]()[_0x6a86('0x15')](function(_0x190253){for(var _0x16ba2d=0x0;_0x16ba2d<_0x190253[_0x6a86('0x55')];_0x16ba2d++){_0x190253[_0x16ba2d]['setDataValue'](_0x6a86('0xa8'),_0x6a86('0x121'));}return _0x190253;}));_0x28e536[_0x6a86('0x42')](_0xba1e90[_0x6a86('0x122')]()[_0x6a86('0x15')](function(_0x42f6ba){for(var _0x1e35b6=0x0;_0x1e35b6<_0x42f6ba[_0x6a86('0x55')];_0x1e35b6++){_0x42f6ba[_0x1e35b6][_0x6a86('0x116')](_0x6a86('0xa8'),_0x6a86('0x123'));}return _0x42f6ba;}));return BPromise[_0x6a86('0x4a')](_0x28e536);})[_0x6a86('0x15')](function(_0x249378){var _0x71ac28=_[_0x6a86('0x124')](_0x249378);_0x28e536=[];return db['sequelize']['transaction'](function(_0x4ca6dd){for(var _0x3e4a5d=0x0;_0x3e4a5d<_0x71ac28[_0x6a86('0x55')];_0x3e4a5d++){_0x28e536[_0x6a86('0x42')](_0x71ac28[_0x3e4a5d]['addAgent'](_0x1b225c['id']),{'transaction':_0x4ca6dd});}return BPromise[_0x6a86('0x4a')](_0x28e536)['then'](function(){if(_0x1b225c[_0x6a86('0x9b')]){return BPromise['each'](_[_0x6a86('0x30')](_0x71ac28,function(_0x440f07){return _0x440f07[_0x6a86('0x125')](_0x6a86('0xa8'))===_0x6a86('0x117');}),function(_0x3c3fd5){return db['UserVoiceQueueRt'][_0x6a86('0xf8')]({'membername':_0x1b225c[_0x6a86('0x34')],'UserId':_0x1b225c['id'],'queue_name':_0x3c3fd5[_0x6a86('0x34')],'VoiceQueueId':_0x3c3fd5['id'],'interface':_[_0x6a86('0x62')](_0x1b225c['interface'])?util['format']('SIP/%s',_0x1b225c[_0x6a86('0x34')]):_0x1b225c[_0x6a86('0x9d')],'paused':_0x1b225c[_0x6a86('0x107')]||![],'penalty':_0x1b225c[_0x6a86('0xa2')]},{'transaction':_0x4ca6dd});});}else{return;}})[_0x6a86('0x15')](function(){for(var _0x5975e8=0x0;_0x5975e8<_0x71ac28['length'];_0x5975e8++){var _0x2fcc50=_0x71ac28[_0x5975e8][_0x6a86('0x125')](_0x6a86('0xa8'));var _0x5700d0=_0x2fcc50+'QueueId';socket[_0x6a86('0xaa')](_0x6a86('0x2c')+_0x2fcc50+_0x6a86('0xa4'),{'UserId':_0x1b225c['id'],['queueField']:_0x71ac28[_0x5975e8]['id']});}});});});}});}})[_0x6a86('0x15')](respondWithStatusCode(_0x3bf877,null))[_0x6a86('0x1e')](handleError(_0x3bf877,null));};exports['removeTeams']=function(_0x109456,_0x53beb9){return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x109456[_0x6a86('0x4c')]['id']}})['then'](handleEntityNotFound(_0x53beb9,null))[_0x6a86('0x15')](function(_0x5d1a90){if(_0x5d1a90){var _0x12dfd8=_0x5d1a90[_0x6a86('0x29')]({'plain':!![]});var _0x3697ba=_0x109456[_0x6a86('0x3e')][_0x6a86('0x5c')];return _0x5d1a90[_0x6a86('0x126')](_0x3697ba)['then'](function(){for(var _0x1deea3=0x0;_0x1deea3<_0x3697ba[_0x6a86('0x55')];_0x1deea3++){var _0x2a59a4=[];db[_0x6a86('0x113')][_0x6a86('0x95')]({'where':{'id':_0x3697ba[_0x1deea3]}})[_0x6a86('0x15')](function(_0x5c61f5){_0x2a59a4[_0x6a86('0x42')](_0x5c61f5[_0x6a86('0xf6')]()[_0x6a86('0x15')](function(_0x2d3a25){for(var _0x88bad4=0x0;_0x88bad4<_0x2d3a25[_0x6a86('0x55')];_0x88bad4++){_0x2d3a25[_0x88bad4]['setDataValue'](_0x6a86('0xa8'),_0x6a86('0x117'));}return _0x2d3a25;}));_0x2a59a4[_0x6a86('0x42')](_0x5c61f5['getChatQueues']()[_0x6a86('0x15')](function(_0x14a7ee){for(var _0xa42bd=0x0;_0xa42bd<_0x14a7ee[_0x6a86('0x55')];_0xa42bd++){_0x14a7ee[_0xa42bd][_0x6a86('0x116')]('channel',_0x6a86('0x119'));}return _0x14a7ee;}));_0x2a59a4[_0x6a86('0x42')](_0x5c61f5['getMailQueues']()['then'](function(_0xf900be){for(var _0x51f041=0x0;_0x51f041<_0xf900be[_0x6a86('0x55')];_0x51f041++){_0xf900be[_0x51f041][_0x6a86('0x116')](_0x6a86('0xa8'),'Mail');}return _0xf900be;}));_0x2a59a4['push'](_0x5c61f5[_0x6a86('0x11c')]()[_0x6a86('0x15')](function(_0x2e9925){for(var _0x4e813e=0x0;_0x4e813e<_0x2e9925[_0x6a86('0x55')];_0x4e813e++){_0x2e9925[_0x4e813e][_0x6a86('0x116')]('channel',_0x6a86('0x11d'));}return _0x2e9925;}));_0x2a59a4[_0x6a86('0x42')](_0x5c61f5[_0x6a86('0x11e')]()[_0x6a86('0x15')](function(_0x267e5e){for(var _0x2f9e79=0x0;_0x2f9e79<_0x267e5e[_0x6a86('0x55')];_0x2f9e79++){_0x267e5e[_0x2f9e79][_0x6a86('0x116')](_0x6a86('0xa8'),_0x6a86('0x11f'));}return _0x267e5e;}));_0x2a59a4[_0x6a86('0x42')](_0x5c61f5[_0x6a86('0x120')]()[_0x6a86('0x15')](function(_0x463c1f){for(var _0x179b76=0x0;_0x179b76<_0x463c1f[_0x6a86('0x55')];_0x179b76++){_0x463c1f[_0x179b76]['setDataValue'](_0x6a86('0xa8'),_0x6a86('0x121'));}return _0x463c1f;}));_0x2a59a4[_0x6a86('0x42')](_0x5c61f5[_0x6a86('0x122')]()[_0x6a86('0x15')](function(_0x424c7f){for(var _0x585dd0=0x0;_0x585dd0<_0x424c7f[_0x6a86('0x55')];_0x585dd0++){_0x424c7f[_0x585dd0][_0x6a86('0x116')](_0x6a86('0xa8'),'Openchannel');}return _0x424c7f;}));return BPromise[_0x6a86('0x4a')](_0x2a59a4);})[_0x6a86('0x15')](function(_0x536a75){var _0x4cb61f=_['flatten'](_0x536a75);_0x2a59a4=[];return db[_0x6a86('0x64')][_0x6a86('0x127')](function(_0x1b97f3){for(var _0x5d04c9=0x0;_0x5d04c9<_0x4cb61f[_0x6a86('0x55')];_0x5d04c9++){_0x2a59a4['push'](_0x4cb61f[_0x5d04c9][_0x6a86('0x128')](_0x12dfd8['id']),{'transaction':_0x1b97f3});}return BPromise[_0x6a86('0x4a')](_0x2a59a4)[_0x6a86('0x15')](function(){if(_0x12dfd8[_0x6a86('0x9b')]){return BPromise[_0x6a86('0x86')](_[_0x6a86('0x30')](_0x4cb61f,function(_0x4798b7){return _0x4798b7['getDataValue']('channel')==='Voice';}),function(_0x2518f9){return db[_0x6a86('0xa7')][_0x6a86('0x28')]({'where':{'VoiceQueueId':_0x2518f9['id'],'UserId':_0x12dfd8['id']},'transaction':_0x1b97f3});});}else{return;}})['then'](function(){for(var _0xb9b3a6=0x0;_0xb9b3a6<_0x4cb61f['length'];_0xb9b3a6++){var _0x3e8ce2=_0x4cb61f[_0xb9b3a6][_0x6a86('0x125')](_0x6a86('0xa8'));var _0x4e50b9=_0x3e8ce2+_0x6a86('0xab');socket['emit'](_0x6a86('0x2c')+_0x3e8ce2+_0x6a86('0xac'),{'UserId':_0x12dfd8['id'],['queueField']:_0x4cb61f[_0xb9b3a6]['id']});}});});});}});}})[_0x6a86('0x15')](respondWithStatusCode(_0x53beb9,null))['catch'](handleError(_0x53beb9,null));};exports[_0x6a86('0x129')]=function(_0x577400,_0x2e15a1){var _0x4d1735={};var _0x1097b0={};var _0x3b0fca;var _0x4fbb52;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x577400[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x2e15a1,null))[_0x6a86('0x15')](function(_0x389bbe){if(_0x389bbe){_0x3b0fca=_0x389bbe;_0x1097b0['model']=_['keys'](db[_0x6a86('0xce')][_0x6a86('0x38')]);_0x1097b0['query']=_[_0x6a86('0x4e')](_0x577400['query']);_0x1097b0[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x1097b0[_0x6a86('0x52')],_0x1097b0['query']);_0x4d1735[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x1097b0['model'],qs[_0x6a86('0x54')](_0x577400['query']['fields']));_0x4d1735[_0x6a86('0x41')]=_0x4d1735['attributes']['length']?_0x4d1735[_0x6a86('0x41')]:_0x1097b0[_0x6a86('0x52')];_0x4d1735[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x577400[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x4d1735[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_['pick'](_0x577400[_0x6a86('0x3e')],_0x1097b0[_0x6a86('0x51')]));if(_0x577400[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x4d1735[_0x6a86('0xcb')]=_['merge'](_0x4d1735[_0x6a86('0xcb')],{'$or':_['map'](_0x4d1735[_0x6a86('0x41')],function(_0x5d3a96){var _0x1a8b98={};_0x1a8b98[_0x5d3a96]={'$like':'%'+_0x577400[_0x6a86('0x3e')]['filter']+'%'};return _0x1a8b98;})});}_0x4d1735=_[_0x6a86('0xcc')]({},_0x4d1735,_0x577400[_0x6a86('0xcd')]);return _0x3b0fca['getLists'](_0x4d1735);}})[_0x6a86('0x15')](function(_0xcf24e5){if(_0xcf24e5){_0x4fbb52=_0xcf24e5[_0x6a86('0x55')];if(!_0x577400[_0x6a86('0x3e')]['hasOwnProperty'](_0x6a86('0xd7'))){_0x4d1735['limit']=qs['limit'](_0x577400[_0x6a86('0x3e')]['limit']);_0x4d1735['offset']=qs['offset'](_0x577400[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x3b0fca['getLists'](_0x4d1735);}})[_0x6a86('0x15')](function(_0x52c3d0){if(_0x52c3d0){return _0x52c3d0?{'count':_0x4fbb52,'rows':_0x52c3d0}:null;}})[_0x6a86('0x15')](respondWithResult(_0x2e15a1,null))[_0x6a86('0x1e')](handleError(_0x2e15a1,null));};exports[_0x6a86('0x12a')]=function(_0x157611,_0x2d48d7){var _0x1435c6={};var _0x4f28a1={};var _0x248106;var _0x10addc;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x157611[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x2d48d7,null))['then'](function(_0x4b7176){if(_0x4b7176){_0x248106=_0x4b7176;_0x4f28a1['model']=_[_0x6a86('0x4e')](db[_0x6a86('0x4f')][_0x6a86('0x38')]);_0x4f28a1[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x157611[_0x6a86('0x3e')]);_0x4f28a1['filters']=_[_0x6a86('0x53')](_0x4f28a1[_0x6a86('0x52')],_0x4f28a1[_0x6a86('0x3e')]);_0x1435c6['attributes']=_['intersection'](_0x4f28a1[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x157611[_0x6a86('0x3e')]['fields']));_0x1435c6[_0x6a86('0x41')]=_0x1435c6[_0x6a86('0x41')][_0x6a86('0x55')]?_0x1435c6[_0x6a86('0x41')]:_0x4f28a1['model'];_0x1435c6[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x157611['query']['sort']);_0x1435c6[_0x6a86('0xcb')]=qs['filters'](_[_0x6a86('0xca')](_0x157611[_0x6a86('0x3e')],_0x4f28a1[_0x6a86('0x51')]));if(_0x157611['query'][_0x6a86('0x30')]){_0x1435c6[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x1435c6[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x1435c6['attributes'],function(_0x3c0c64){var _0x3169ce={};_0x3169ce[_0x3c0c64]={'$like':'%'+_0x157611[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x3169ce;})});}_0x1435c6['model']=db[_0x6a86('0x4f')];_0x1435c6['as']=_0x6a86('0x2d');_0x1435c6=_['merge']({},_0x1435c6,_0x157611[_0x6a86('0xcd')]);return _0x248106[_0x6a86('0xf6')]({'include':[_0x1435c6]});}})[_0x6a86('0x15')](function(_0x9bc30d){if(_0x9bc30d){var _0x4705cb={},_0x5f4a61=[],_0x379807=0x0;for(var _0x5bf49c=0x0;_0x5bf49c<_0x9bc30d[_0x6a86('0x55')];_0x5bf49c+=0x1){for(var _0x2edb8e=0x0,_0x201dee;_0x2edb8e<_0x9bc30d[_0x5bf49c][_0x6a86('0x2d')]['length'];_0x2edb8e+=0x1){_0x201dee=_0x9bc30d[_0x5bf49c][_0x6a86('0x2d')][_0x2edb8e]['get']({'plain':!![]});_0x4705cb[_0x201dee['id']]=_0x201dee;}}_0x4705cb=_[_0x6a86('0x12b')](_0x4705cb);for(var _0xc6be=qs[_0x6a86('0x22')](_0x157611[_0x6a86('0x3e')][_0x6a86('0x22')]);_0xc6be<_0x4705cb[_0x6a86('0x55')]&&_0x5f4a61[_0x6a86('0x55')]<qs['limit'](_0x157611[_0x6a86('0x3e')][_0x6a86('0x24')]);_0xc6be+=0x1){if(_0x4705cb[_0xc6be]){_0x5f4a61['push'](_0x4705cb[_0xc6be]);}}return{'count':_0x4705cb['length'],'rows':_0x5f4a61};}})[_0x6a86('0x15')](respondWithResult(_0x2d48d7,null))[_0x6a86('0x1e')](handleError(_0x2d48d7,null));};exports[_0x6a86('0x28')]=function(_0x20bfa2,_0x5070c9){if(_0x20bfa2[_0x6a86('0x2c')]['id']==_0x20bfa2[_0x6a86('0x4c')]['id']){return _0x5070c9[_0x6a86('0x1f')](0x1f4)[_0x6a86('0x37')]({'message':_0x6a86('0x12c')});}return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x20bfa2[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x5070c9,null))['then'](removeEntity(_0x5070c9,null))['catch'](handleError(_0x5070c9,null));};exports[_0x6a86('0x12d')]=function(_0x42ccd6,_0x3965ae){return db['User'][_0x6a86('0x33')]({'where':{'id':_0x42ccd6[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x3965ae,null))[_0x6a86('0x15')](function(_0x11d842){if(_0x11d842){return _0x11d842[_0x6a86('0x12d')](_0x42ccd6[_0x6a86('0x58')][_0x6a86('0x5c')],_[_0x6a86('0x115')](_0x42ccd6['body'],[_0x6a86('0x5c'),'id'])||{})[_0x6a86('0xa3')](function(){for(var _0x27b816=0x0;_0x27b816<_0x42ccd6[_0x6a86('0x58')]['ids']['length'];_0x27b816+=0x1){socket['emit'](_0x6a86('0x12e'),{'ChatInteractionId':Number(_0x42ccd6['body']['ids'][_0x27b816]),'UserId':Number(_0x42ccd6['params']['id'])});}return _0x42ccd6[_0x6a86('0x58')][_0x6a86('0x5c')];});}})['then'](respondWithResult(_0x3965ae,null))[_0x6a86('0x1e')](handleError(_0x3965ae,null));};exports[_0x6a86('0x12f')]=function(_0x2ae0b9,_0x292eea){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x2ae0b9[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x292eea,null))[_0x6a86('0x15')](function(_0x1565a8){if(_0x1565a8){return _0x1565a8[_0x6a86('0x12f')](_0x2ae0b9['query'][_0x6a86('0x5c')])['then'](function(){if(_[_0x6a86('0xa9')](_0x2ae0b9[_0x6a86('0x3e')][_0x6a86('0x5c')])){for(var _0x43e581=0x0;_0x43e581<_0x2ae0b9['query'][_0x6a86('0x5c')][_0x6a86('0x55')];_0x43e581+=0x1){socket[_0x6a86('0xaa')](_0x6a86('0x130'),{'ChatInteractionId':Number(_0x2ae0b9[_0x6a86('0x3e')][_0x6a86('0x5c')][_0x43e581]),'UserId':Number(_0x2ae0b9['params']['id'])});}}else{socket[_0x6a86('0xaa')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x2ae0b9[_0x6a86('0x3e')]['ids']),'UserId':Number(_0x2ae0b9[_0x6a86('0x4c')]['id'])});}});}})[_0x6a86('0x15')](respondWithStatusCode(_0x292eea,null))[_0x6a86('0x1e')](handleError(_0x292eea,null));};exports[_0x6a86('0x131')]=function(_0x2fe41f,_0x5d3a9d){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x2fe41f[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x5d3a9d,null))[_0x6a86('0x15')](function(_0x380c00){if(_0x380c00){return _0x380c00['addMailInteractions'](_0x2fe41f['body'][_0x6a86('0x5c')],_[_0x6a86('0x115')](_0x2fe41f[_0x6a86('0x58')],[_0x6a86('0x5c'),'id'])||{})[_0x6a86('0xa3')](function(){for(var _0x35ee0e=0x0;_0x35ee0e<_0x2fe41f['body'][_0x6a86('0x5c')][_0x6a86('0x55')];_0x35ee0e+=0x1){socket[_0x6a86('0xaa')](_0x6a86('0x132'),{'MailInteractionId':Number(_0x2fe41f['body'][_0x6a86('0x5c')][_0x35ee0e]),'UserId':Number(_0x2fe41f[_0x6a86('0x4c')]['id'])});}return _0x2fe41f[_0x6a86('0x58')][_0x6a86('0x5c')];});}})[_0x6a86('0x15')](respondWithResult(_0x5d3a9d,null))[_0x6a86('0x1e')](handleError(_0x5d3a9d,null));};exports[_0x6a86('0x133')]=function(_0x5f0cfd,_0x15a772){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x5f0cfd['params']['id']}})['then'](handleEntityNotFound(_0x15a772,null))[_0x6a86('0x15')](function(_0x13f6ab){if(_0x13f6ab){return _0x13f6ab[_0x6a86('0x133')](_0x5f0cfd[_0x6a86('0x3e')]['ids'])['then'](function(){if(_[_0x6a86('0xa9')](_0x5f0cfd[_0x6a86('0x3e')][_0x6a86('0x5c')])){for(var _0x298a0f=0x0;_0x298a0f<_0x5f0cfd['query'][_0x6a86('0x5c')][_0x6a86('0x55')];_0x298a0f+=0x1){socket[_0x6a86('0xaa')](_0x6a86('0x134'),{'MailInteractionId':Number(_0x5f0cfd[_0x6a86('0x3e')][_0x6a86('0x5c')][_0x298a0f]),'UserId':Number(_0x5f0cfd['params']['id'])});}}else{socket[_0x6a86('0xaa')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x5f0cfd[_0x6a86('0x3e')][_0x6a86('0x5c')]),'UserId':Number(_0x5f0cfd['params']['id'])});}});}})['then'](respondWithStatusCode(_0x15a772,null))[_0x6a86('0x1e')](handleError(_0x15a772,null));};exports[_0x6a86('0x135')]=function(_0x2d4f8d,_0x4f7c96){return db[_0x6a86('0x4f')]['find']({'where':{'id':_0x2d4f8d[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x4f7c96,null))['then'](function(_0xdde9f5){if(_0xdde9f5){return _0xdde9f5['addFaxInteractions'](_0x2d4f8d['body']['ids'],_['omit'](_0x2d4f8d[_0x6a86('0x58')],[_0x6a86('0x5c'),'id'])||{})['spread'](function(){for(var _0x388f19=0x0;_0x388f19<_0x2d4f8d['body']['ids'][_0x6a86('0x55')];_0x388f19+=0x1){socket['emit'](_0x6a86('0x136'),{'FaxInteractionId':Number(_0x2d4f8d['body'][_0x6a86('0x5c')][_0x388f19]),'UserId':Number(_0x2d4f8d[_0x6a86('0x4c')]['id'])});}return _0x2d4f8d[_0x6a86('0x58')][_0x6a86('0x5c')];});}})[_0x6a86('0x15')](respondWithResult(_0x4f7c96,null))[_0x6a86('0x1e')](handleError(_0x4f7c96,null));};exports[_0x6a86('0x137')]=function(_0xe4956c,_0x56c1b3){return db['User']['find']({'where':{'id':_0xe4956c[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x56c1b3,null))[_0x6a86('0x15')](function(_0x452eb0){if(_0x452eb0){return _0x452eb0[_0x6a86('0x137')](_0xe4956c[_0x6a86('0x3e')][_0x6a86('0x5c')])['then'](function(){if(_[_0x6a86('0xa9')](_0xe4956c[_0x6a86('0x3e')][_0x6a86('0x5c')])){for(var _0x23714b=0x0;_0x23714b<_0xe4956c[_0x6a86('0x3e')][_0x6a86('0x5c')][_0x6a86('0x55')];_0x23714b+=0x1){socket[_0x6a86('0xaa')](_0x6a86('0x138'),{'FaxInteractionId':Number(_0xe4956c[_0x6a86('0x3e')][_0x6a86('0x5c')][_0x23714b]),'UserId':Number(_0xe4956c['params']['id'])});}}else{socket[_0x6a86('0xaa')](_0x6a86('0x138'),{'FaxInteractionId':Number(_0xe4956c['query']['ids']),'UserId':Number(_0xe4956c[_0x6a86('0x4c')]['id'])});}});}})[_0x6a86('0x15')](respondWithStatusCode(_0x56c1b3,null))['catch'](handleError(_0x56c1b3,null));};exports[_0x6a86('0x139')]=function(_0x1171f8,_0x1cbbdc){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x1171f8['params']['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x1cbbdc,null))['then'](function(_0x156447){if(_0x156447){return _0x156447['addSmsInteractions'](_0x1171f8['body'][_0x6a86('0x5c')],_[_0x6a86('0x115')](_0x1171f8[_0x6a86('0x58')],[_0x6a86('0x5c'),'id'])||{})[_0x6a86('0xa3')](function(){for(var _0x49b665=0x0;_0x49b665<_0x1171f8['body'][_0x6a86('0x5c')][_0x6a86('0x55')];_0x49b665+=0x1){socket[_0x6a86('0xaa')](_0x6a86('0x13a'),{'SmsInteractionId':Number(_0x1171f8['body']['ids'][_0x49b665]),'UserId':Number(_0x1171f8[_0x6a86('0x4c')]['id'])});}return _0x1171f8[_0x6a86('0x58')][_0x6a86('0x5c')];});}})['then'](respondWithResult(_0x1cbbdc,null))['catch'](handleError(_0x1cbbdc,null));};exports[_0x6a86('0x13b')]=function(_0x214712,_0xe13f14){return db['User'][_0x6a86('0x33')]({'where':{'id':_0x214712[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0xe13f14,null))[_0x6a86('0x15')](function(_0xf76ef6){if(_0xf76ef6){return _0xf76ef6[_0x6a86('0x13b')](_0x214712[_0x6a86('0x3e')][_0x6a86('0x5c')])['then'](function(){if(_[_0x6a86('0xa9')](_0x214712[_0x6a86('0x3e')][_0x6a86('0x5c')])){for(var _0x57d15f=0x0;_0x57d15f<_0x214712['query'][_0x6a86('0x5c')][_0x6a86('0x55')];_0x57d15f+=0x1){socket[_0x6a86('0xaa')](_0x6a86('0x13c'),{'SmsInteractionId':Number(_0x214712[_0x6a86('0x3e')][_0x6a86('0x5c')][_0x57d15f]),'UserId':Number(_0x214712[_0x6a86('0x4c')]['id'])});}}else{socket[_0x6a86('0xaa')](_0x6a86('0x13c'),{'SmsInteractionId':Number(_0x214712[_0x6a86('0x3e')][_0x6a86('0x5c')]),'UserId':Number(_0x214712[_0x6a86('0x4c')]['id'])});}});}})[_0x6a86('0x15')](respondWithStatusCode(_0xe13f14,null))['catch'](handleError(_0xe13f14,null));};exports[_0x6a86('0x13d')]=function(_0x5aabc0,_0xfb7bf){return db['User']['find']({'where':{'id':_0x5aabc0['params']['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0xfb7bf,null))['then'](function(_0x2bf28d){if(_0x2bf28d){return _0x2bf28d[_0x6a86('0x13d')](_0x5aabc0['body'][_0x6a86('0x5c')],_['omit'](_0x5aabc0[_0x6a86('0x58')],[_0x6a86('0x5c'),'id'])||{})['spread'](function(){for(var _0xc30377=0x0;_0xc30377<_0x5aabc0['body']['ids'][_0x6a86('0x55')];_0xc30377+=0x1){socket[_0x6a86('0xaa')](_0x6a86('0x13e'),{'OpenchannelInteractionId':Number(_0x5aabc0['body'][_0x6a86('0x5c')][_0xc30377]),'UserId':Number(_0x5aabc0[_0x6a86('0x4c')]['id'])});}return _0x5aabc0[_0x6a86('0x58')][_0x6a86('0x5c')];});}})[_0x6a86('0x15')](respondWithResult(_0xfb7bf,null))[_0x6a86('0x1e')](handleError(_0xfb7bf,null));};exports[_0x6a86('0x13f')]=function(_0x3537c9,_0x3d8b8f){return db['User'][_0x6a86('0x33')]({'where':{'id':_0x3537c9['params']['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x3d8b8f,null))[_0x6a86('0x15')](function(_0x3ad30f){if(_0x3ad30f){return _0x3ad30f['removeOpenchannelInteractions'](_0x3537c9['query'][_0x6a86('0x5c')])['then'](function(){if(_[_0x6a86('0xa9')](_0x3537c9[_0x6a86('0x3e')][_0x6a86('0x5c')])){for(var _0x281162=0x0;_0x281162<_0x3537c9[_0x6a86('0x3e')][_0x6a86('0x5c')]['length'];_0x281162+=0x1){socket['emit'](_0x6a86('0x140'),{'OpenchannelInteractionId':Number(_0x3537c9[_0x6a86('0x3e')][_0x6a86('0x5c')][_0x281162]),'UserId':Number(_0x3537c9['params']['id'])});}}else{socket[_0x6a86('0xaa')](_0x6a86('0x140'),{'OpenchannelInteractionId':Number(_0x3537c9[_0x6a86('0x3e')][_0x6a86('0x5c')]),'UserId':Number(_0x3537c9[_0x6a86('0x4c')]['id'])});}});}})[_0x6a86('0x15')](respondWithStatusCode(_0x3d8b8f,null))[_0x6a86('0x1e')](handleError(_0x3d8b8f,null));};exports[_0x6a86('0x141')]=function(_0x355045,_0x58b2ac){return db[_0x6a86('0x4f')]['find']({'where':{'id':_0x355045[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x58b2ac,null))[_0x6a86('0x15')](function(_0x235315){if(_0x235315){return _0x235315[_0x6a86('0x141')](_0x355045[_0x6a86('0x58')]['ids'],_[_0x6a86('0x115')](_0x355045[_0x6a86('0x58')],[_0x6a86('0x5c'),'id'])||{})[_0x6a86('0xa3')](function(){for(var _0x17dc1f=0x0;_0x17dc1f<_0x355045[_0x6a86('0x58')][_0x6a86('0x5c')][_0x6a86('0x55')];_0x17dc1f+=0x1){socket['emit']('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x355045['body'][_0x6a86('0x5c')][_0x17dc1f]),'UserId':Number(_0x355045['params']['id'])});}return _0x355045[_0x6a86('0x58')][_0x6a86('0x5c')];});}})[_0x6a86('0x15')](respondWithResult(_0x58b2ac,null))['catch'](handleError(_0x58b2ac,null));};exports[_0x6a86('0x142')]=function(_0x36660d,_0x22d1b2){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x36660d[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x22d1b2,null))[_0x6a86('0x15')](function(_0x40fddf){if(_0x40fddf){return _0x40fddf['removeWhatsappInteractions'](_0x36660d[_0x6a86('0x3e')][_0x6a86('0x5c')]);}})[_0x6a86('0x15')](respondWithStatusCode(_0x22d1b2,null))['catch'](handleError(_0x22d1b2,null));};exports[_0x6a86('0x143')]=function(_0x576288,_0x270d23){var _0x37ab4b={};var _0x1b3a9c={};var _0x65dca;var _0x48587f;return db['User']['findOne']({'where':{'id':_0x576288[_0x6a86('0x4c')]['id']}})['then'](handleEntityNotFound(_0x270d23,null))[_0x6a86('0x15')](function(_0x4ce896){if(_0x4ce896){_0x65dca=_0x4ce896;_0x1b3a9c[_0x6a86('0x52')]=_[_0x6a86('0x4e')](db['VoicePrefix'][_0x6a86('0x38')]);_0x1b3a9c['query']=_[_0x6a86('0x4e')](_0x576288[_0x6a86('0x3e')]);_0x1b3a9c[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x1b3a9c[_0x6a86('0x52')],_0x1b3a9c[_0x6a86('0x3e')]);_0x37ab4b[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x1b3a9c['model'],qs['fields'](_0x576288[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x37ab4b[_0x6a86('0x41')]=_0x37ab4b[_0x6a86('0x41')]['length']?_0x37ab4b[_0x6a86('0x41')]:_0x1b3a9c[_0x6a86('0x52')];_0x37ab4b[_0x6a86('0xd4')]=qs['sort'](_0x576288[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x37ab4b[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x576288[_0x6a86('0x3e')],_0x1b3a9c[_0x6a86('0x51')]));if(_0x576288[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x37ab4b['where']=_[_0x6a86('0xcc')](_0x37ab4b[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x37ab4b[_0x6a86('0x41')],function(_0x3217f7){var _0x37bff9={};_0x37bff9[_0x3217f7]={'$like':'%'+_0x576288['query'][_0x6a86('0x30')]+'%'};return _0x37bff9;})});}_0x37ab4b=_[_0x6a86('0xcc')]({},_0x37ab4b,_0x576288['options']);return _0x65dca['getVoicePrefixes'](_0x37ab4b);}})[_0x6a86('0x15')](function(_0x4f6016){if(_0x4f6016){_0x48587f=_0x4f6016['length'];if(!_0x576288[_0x6a86('0x3e')]['hasOwnProperty'](_0x6a86('0xd7'))){_0x37ab4b[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x576288['query'][_0x6a86('0x24')]);_0x37ab4b[_0x6a86('0x22')]=qs['offset'](_0x576288[_0x6a86('0x3e')]['offset']);}return _0x65dca[_0x6a86('0x143')](_0x37ab4b);}})[_0x6a86('0x15')](function(_0x2895ba){if(_0x2895ba){return _0x2895ba?{'count':_0x48587f,'rows':_0x2895ba}:null;}})['then'](respondWithResult(_0x270d23,null))[_0x6a86('0x1e')](handleError(_0x270d23,null));};exports['getFaxAccounts']=function(_0x5db719,_0xd53d42){var _0x35c2a={};var _0x16260a={};var _0x5c4b5f;var _0x2ef066;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x5db719[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0xd53d42,null))['then'](function(_0x27668c){if(_0x27668c){_0x5c4b5f=_0x27668c;_0x16260a['model']=_[_0x6a86('0x4e')](db[_0x6a86('0x144')][_0x6a86('0x38')]);_0x16260a['query']=_[_0x6a86('0x4e')](_0x5db719[_0x6a86('0x3e')]);_0x16260a[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x16260a['model'],_0x16260a[_0x6a86('0x3e')]);_0x35c2a['attributes']=_['intersection'](_0x16260a[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x5db719[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x35c2a['attributes']=_0x35c2a[_0x6a86('0x41')][_0x6a86('0x55')]?_0x35c2a[_0x6a86('0x41')]:_0x16260a[_0x6a86('0x52')];_0x35c2a[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x5db719[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x35c2a[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x5db719['query'],_0x16260a[_0x6a86('0x51')]));if(_0x5db719[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x35c2a['where']=_['merge'](_0x35c2a['where'],{'$or':_[_0x6a86('0x89')](_0x35c2a[_0x6a86('0x41')],function(_0x4da683){var _0x3b6def={};_0x3b6def[_0x4da683]={'$like':'%'+_0x5db719[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x3b6def;})});}_0x35c2a=_[_0x6a86('0xcc')]({},_0x35c2a,_0x5db719[_0x6a86('0xcd')]);return _0x5c4b5f['getFaxAccounts'](_0x35c2a);}})[_0x6a86('0x15')](function(_0x11cebe){if(_0x11cebe){_0x2ef066=_0x11cebe[_0x6a86('0x55')];if(!_0x5db719[_0x6a86('0x3e')][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x35c2a['limit']=qs[_0x6a86('0x24')](_0x5db719[_0x6a86('0x3e')][_0x6a86('0x24')]);_0x35c2a[_0x6a86('0x22')]=qs['offset'](_0x5db719['query']['offset']);}return _0x5c4b5f[_0x6a86('0x145')](_0x35c2a);}})[_0x6a86('0x15')](function(_0x546214){if(_0x546214){return _0x546214?{'count':_0x2ef066,'rows':_0x546214}:null;}})[_0x6a86('0x15')](respondWithResult(_0xd53d42,null))[_0x6a86('0x1e')](handleError(_0xd53d42,null));};exports['addFaxAccounts']=function(_0x1a2449,_0x59bfdb){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x1a2449[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x59bfdb,null))[_0x6a86('0x15')](function(_0x5f5271){if(_0x5f5271){return _0x5f5271[_0x6a86('0x146')](_0x1a2449['body'][_0x6a86('0x5c')],_['omit'](_0x1a2449[_0x6a86('0x58')],['ids','id'])||{});}})[_0x6a86('0x15')](respondWithResult(_0x59bfdb,null))[_0x6a86('0x1e')](handleError(_0x59bfdb,null));};exports['removeFaxAccounts']=function(_0x51e079,_0x7314bf){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x51e079['params']['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x7314bf,null))[_0x6a86('0x15')](function(_0x38ad01){if(_0x38ad01){return _0x38ad01[_0x6a86('0x147')](_0x51e079[_0x6a86('0x3e')][_0x6a86('0x5c')]);}})['then'](respondWithStatusCode(_0x7314bf,null))[_0x6a86('0x1e')](handleError(_0x7314bf,null));};exports[_0x6a86('0x148')]=function(_0x319c2e,_0x8542ff){var _0x46d387={};var _0x43de31={};var _0x22531e;var _0xc01c0d;return db[_0x6a86('0x4f')]['findOne']({'where':{'id':_0x319c2e[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x8542ff,null))[_0x6a86('0x15')](function(_0x5ad8d9){if(_0x5ad8d9){_0x22531e=_0x5ad8d9;_0x43de31[_0x6a86('0x52')]=_[_0x6a86('0x4e')](db[_0x6a86('0x149')][_0x6a86('0x38')]);_0x43de31[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x319c2e[_0x6a86('0x3e')]);_0x43de31[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x43de31[_0x6a86('0x52')],_0x43de31[_0x6a86('0x3e')]);_0x46d387[_0x6a86('0x41')]=_['intersection'](_0x43de31[_0x6a86('0x52')],qs['fields'](_0x319c2e[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x46d387[_0x6a86('0x41')]=_0x46d387[_0x6a86('0x41')][_0x6a86('0x55')]?_0x46d387[_0x6a86('0x41')]:_0x43de31[_0x6a86('0x52')];_0x46d387[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x319c2e[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x46d387[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_['pick'](_0x319c2e[_0x6a86('0x3e')],_0x43de31[_0x6a86('0x51')]));if(_0x319c2e[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x46d387[_0x6a86('0xcb')]=_['merge'](_0x46d387[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x46d387['attributes'],function(_0x1fb798){var _0x14474d={};_0x14474d[_0x1fb798]={'$like':'%'+_0x319c2e[_0x6a86('0x3e')]['filter']+'%'};return _0x14474d;})});}_0x46d387=_[_0x6a86('0xcc')]({},_0x46d387,_0x319c2e[_0x6a86('0xcd')]);return _0x22531e[_0x6a86('0x148')](_0x46d387);}})['then'](function(_0x5069dd){if(_0x5069dd){_0xc01c0d=_0x5069dd[_0x6a86('0x55')];if(!_0x319c2e[_0x6a86('0x3e')][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x46d387['limit']=qs['limit'](_0x319c2e['query'][_0x6a86('0x24')]);_0x46d387[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x319c2e['query'][_0x6a86('0x22')]);}return _0x22531e[_0x6a86('0x148')](_0x46d387);}})[_0x6a86('0x15')](function(_0x3460d1){if(_0x3460d1){return _0x3460d1?{'count':_0xc01c0d,'rows':_0x3460d1}:null;}})[_0x6a86('0x15')](respondWithResult(_0x8542ff,null))[_0x6a86('0x1e')](handleError(_0x8542ff,null));};exports['addMailAccounts']=function(_0x1996a9,_0x1e950b){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x1996a9[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x1e950b,null))[_0x6a86('0x15')](function(_0x5dd76d){if(_0x5dd76d){return _0x5dd76d[_0x6a86('0x14a')](_0x1996a9[_0x6a86('0x58')][_0x6a86('0x5c')],_[_0x6a86('0x115')](_0x1996a9['body'],['ids','id'])||{});}})[_0x6a86('0x15')](respondWithResult(_0x1e950b,null))[_0x6a86('0x1e')](handleError(_0x1e950b,null));};exports[_0x6a86('0x14b')]=function(_0xc8ff29,_0x1fc85d){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0xc8ff29[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x1fc85d,null))[_0x6a86('0x15')](function(_0x2b8efa){if(_0x2b8efa){return _0x2b8efa[_0x6a86('0x14b')](_0xc8ff29[_0x6a86('0x3e')][_0x6a86('0x5c')]);}})[_0x6a86('0x15')](respondWithStatusCode(_0x1fc85d,null))[_0x6a86('0x1e')](handleError(_0x1fc85d,null));};exports[_0x6a86('0x14c')]=function(_0x45211b,_0x2dff80){var _0x9d4b68={};var _0x48dd58={};var _0x1eae83;var _0x467aa7;return db['User'][_0x6a86('0x95')]({'where':{'id':_0x45211b['params']['id']}})['then'](handleEntityNotFound(_0x2dff80,null))[_0x6a86('0x15')](function(_0x25e8ed){if(_0x25e8ed){_0x1eae83=_0x25e8ed;_0x48dd58[_0x6a86('0x52')]=_[_0x6a86('0x4e')](db[_0x6a86('0x14d')][_0x6a86('0x38')]);_0x48dd58[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x45211b[_0x6a86('0x3e')]);_0x48dd58['filters']=_[_0x6a86('0x53')](_0x48dd58['model'],_0x48dd58['query']);_0x9d4b68['attributes']=_[_0x6a86('0x53')](_0x48dd58[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x45211b[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x9d4b68[_0x6a86('0x41')]=_0x9d4b68['attributes']['length']?_0x9d4b68[_0x6a86('0x41')]:_0x48dd58[_0x6a86('0x52')];_0x9d4b68[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x45211b[_0x6a86('0x3e')]['sort']);_0x9d4b68[_0x6a86('0xcb')]=qs['filters'](_['pick'](_0x45211b['query'],_0x48dd58[_0x6a86('0x51')]));if(_0x45211b[_0x6a86('0x3e')]['filter']){_0x9d4b68[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x9d4b68[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x9d4b68[_0x6a86('0x41')],function(_0x2735f5){var _0x14c5ed={};_0x14c5ed[_0x2735f5]={'$like':'%'+_0x45211b[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x14c5ed;})});}_0x9d4b68=_[_0x6a86('0xcc')]({},_0x9d4b68,_0x45211b['options']);return _0x1eae83['getOpenchannelAccounts'](_0x9d4b68);}})[_0x6a86('0x15')](function(_0x551121){if(_0x551121){_0x467aa7=_0x551121[_0x6a86('0x55')];if(!_0x45211b[_0x6a86('0x3e')][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x9d4b68[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x45211b['query'][_0x6a86('0x24')]);_0x9d4b68[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x45211b[_0x6a86('0x3e')]['offset']);}return _0x1eae83[_0x6a86('0x14c')](_0x9d4b68);}})['then'](function(_0x447e18){if(_0x447e18){return _0x447e18?{'count':_0x467aa7,'rows':_0x447e18}:null;}})[_0x6a86('0x15')](respondWithResult(_0x2dff80,null))[_0x6a86('0x1e')](handleError(_0x2dff80,null));};exports['addOpenchannelAccounts']=function(_0x391c6d,_0x39c50d){return db[_0x6a86('0x4f')]['find']({'where':{'id':_0x391c6d[_0x6a86('0x4c')]['id']}})['then'](handleEntityNotFound(_0x39c50d,null))[_0x6a86('0x15')](function(_0x2fea13){if(_0x2fea13){return _0x2fea13[_0x6a86('0x14e')](_0x391c6d['body'][_0x6a86('0x5c')],_[_0x6a86('0x115')](_0x391c6d['body'],[_0x6a86('0x5c'),'id'])||{});}})[_0x6a86('0x15')](respondWithResult(_0x39c50d,null))['catch'](handleError(_0x39c50d,null));};exports[_0x6a86('0x14f')]=function(_0x5f051d,_0x45d404){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x5f051d[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x45d404,null))['then'](function(_0x52a8ec){if(_0x52a8ec){return _0x52a8ec[_0x6a86('0x14f')](_0x5f051d[_0x6a86('0x3e')][_0x6a86('0x5c')]);}})['then'](respondWithStatusCode(_0x45d404,null))['catch'](handleError(_0x45d404,null));};exports[_0x6a86('0x150')]=function(_0x2d91b5,_0x1c5ff6){var _0x1bdd4b={};var _0x379672={};var _0x17d050;var _0x95cafa;return db['User'][_0x6a86('0x95')]({'where':{'id':_0x2d91b5[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x1c5ff6,null))[_0x6a86('0x15')](function(_0x456957){if(_0x456957){_0x17d050=_0x456957;_0x379672['model']=_[_0x6a86('0x4e')](db['SmsAccount'][_0x6a86('0x38')]);_0x379672[_0x6a86('0x3e')]=_['keys'](_0x2d91b5[_0x6a86('0x3e')]);_0x379672['filters']=_['intersection'](_0x379672[_0x6a86('0x52')],_0x379672['query']);_0x1bdd4b[_0x6a86('0x41')]=_['intersection'](_0x379672[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x2d91b5['query'][_0x6a86('0x54')]));_0x1bdd4b['attributes']=_0x1bdd4b['attributes'][_0x6a86('0x55')]?_0x1bdd4b[_0x6a86('0x41')]:_0x379672[_0x6a86('0x52')];_0x1bdd4b['order']=qs[_0x6a86('0xc9')](_0x2d91b5[_0x6a86('0x3e')]['sort']);_0x1bdd4b[_0x6a86('0xcb')]=qs['filters'](_[_0x6a86('0xca')](_0x2d91b5[_0x6a86('0x3e')],_0x379672['filters']));if(_0x2d91b5[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x1bdd4b[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x1bdd4b[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x1bdd4b[_0x6a86('0x41')],function(_0x29b9bd){var _0x39adbe={};_0x39adbe[_0x29b9bd]={'$like':'%'+_0x2d91b5[_0x6a86('0x3e')]['filter']+'%'};return _0x39adbe;})});}_0x1bdd4b=_[_0x6a86('0xcc')]({},_0x1bdd4b,_0x2d91b5[_0x6a86('0xcd')]);return _0x17d050['getSmsAccounts'](_0x1bdd4b);}})[_0x6a86('0x15')](function(_0x448381){if(_0x448381){_0x95cafa=_0x448381[_0x6a86('0x55')];if(!_0x2d91b5[_0x6a86('0x3e')]['hasOwnProperty'](_0x6a86('0xd7'))){_0x1bdd4b[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x2d91b5[_0x6a86('0x3e')][_0x6a86('0x24')]);_0x1bdd4b[_0x6a86('0x22')]=qs['offset'](_0x2d91b5['query'][_0x6a86('0x22')]);}return _0x17d050[_0x6a86('0x150')](_0x1bdd4b);}})[_0x6a86('0x15')](function(_0x27564f){if(_0x27564f){return _0x27564f?{'count':_0x95cafa,'rows':_0x27564f}:null;}})[_0x6a86('0x15')](respondWithResult(_0x1c5ff6,null))[_0x6a86('0x1e')](handleError(_0x1c5ff6,null));};exports[_0x6a86('0x151')]=function(_0x496fdc,_0x1006f4){return db['User']['find']({'where':{'id':_0x496fdc[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x1006f4,null))[_0x6a86('0x15')](function(_0x1df57c){if(_0x1df57c){return _0x1df57c[_0x6a86('0x151')](_0x496fdc[_0x6a86('0x58')]['ids'],_[_0x6a86('0x115')](_0x496fdc[_0x6a86('0x58')],['ids','id'])||{});}})[_0x6a86('0x15')](respondWithResult(_0x1006f4,null))['catch'](handleError(_0x1006f4,null));};exports[_0x6a86('0x152')]=function(_0x517aa7,_0x2bf0b0){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x517aa7[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x2bf0b0,null))[_0x6a86('0x15')](function(_0x30241a){if(_0x30241a){return _0x30241a[_0x6a86('0x152')](_0x517aa7[_0x6a86('0x3e')][_0x6a86('0x5c')]);}})['then'](respondWithStatusCode(_0x2bf0b0,null))[_0x6a86('0x1e')](handleError(_0x2bf0b0,null));};exports[_0x6a86('0x153')]=function(_0x4e83bd,_0x2f972b){var _0x1afcd1={};var _0x42899a={};var _0x5a2d4a;var _0x35fd02;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x4e83bd[_0x6a86('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2f972b,null))[_0x6a86('0x15')](function(_0x58f1d2){if(_0x58f1d2){_0x5a2d4a=_0x58f1d2;_0x42899a[_0x6a86('0x52')]=_[_0x6a86('0x4e')](db[_0x6a86('0x154')]['rawAttributes']);_0x42899a[_0x6a86('0x3e')]=_['keys'](_0x4e83bd[_0x6a86('0x3e')]);_0x42899a[_0x6a86('0x51')]=_['intersection'](_0x42899a[_0x6a86('0x52')],_0x42899a[_0x6a86('0x3e')]);_0x1afcd1['attributes']=_['intersection'](_0x42899a[_0x6a86('0x52')],qs['fields'](_0x4e83bd[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x1afcd1['attributes']=_0x1afcd1[_0x6a86('0x41')][_0x6a86('0x55')]?_0x1afcd1[_0x6a86('0x41')]:_0x42899a[_0x6a86('0x52')];_0x1afcd1[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x4e83bd[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x1afcd1[_0x6a86('0xcb')]=qs['filters'](_['pick'](_0x4e83bd[_0x6a86('0x3e')],_0x42899a[_0x6a86('0x51')]));if(_0x4e83bd['query'][_0x6a86('0x30')]){_0x1afcd1[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x1afcd1[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x1afcd1[_0x6a86('0x41')],function(_0x886cf1){var _0x3a4a35={};_0x3a4a35[_0x886cf1]={'$like':'%'+_0x4e83bd[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x3a4a35;})});}_0x1afcd1=_[_0x6a86('0xcc')]({},_0x1afcd1,_0x4e83bd[_0x6a86('0xcd')]);return _0x5a2d4a[_0x6a86('0x153')](_0x1afcd1);}})[_0x6a86('0x15')](function(_0x1b3e40){if(_0x1b3e40){_0x35fd02=_0x1b3e40[_0x6a86('0x55')];if(!_0x4e83bd[_0x6a86('0x3e')]['hasOwnProperty']('nolimit')){_0x1afcd1['limit']=qs[_0x6a86('0x24')](_0x4e83bd[_0x6a86('0x3e')][_0x6a86('0x24')]);_0x1afcd1['offset']=qs['offset'](_0x4e83bd[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x5a2d4a[_0x6a86('0x153')](_0x1afcd1);}})[_0x6a86('0x15')](function(_0x49509f){if(_0x49509f){return _0x49509f?{'count':_0x35fd02,'rows':_0x49509f}:null;}})[_0x6a86('0x15')](respondWithResult(_0x2f972b,null))[_0x6a86('0x1e')](handleError(_0x2f972b,null));};exports[_0x6a86('0x155')]=function(_0x3eae77,_0x2a25eb){return db['User'][_0x6a86('0x33')]({'where':{'id':_0x3eae77[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x2a25eb,null))['then'](function(_0x571aa1){if(_0x571aa1){return _0x571aa1[_0x6a86('0x155')](_0x3eae77[_0x6a86('0x58')][_0x6a86('0x5c')],_['omit'](_0x3eae77[_0x6a86('0x58')],[_0x6a86('0x5c'),'id'])||{});}})[_0x6a86('0x15')](respondWithResult(_0x2a25eb,null))[_0x6a86('0x1e')](handleError(_0x2a25eb,null));};exports[_0x6a86('0x156')]=function(_0xeede32,_0x2f6a56){return db['User'][_0x6a86('0x33')]({'where':{'id':_0xeede32['params']['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x2f6a56,null))[_0x6a86('0x15')](function(_0x3ead99){if(_0x3ead99){return _0x3ead99[_0x6a86('0x156')](_0xeede32['query']['ids']);}})[_0x6a86('0x15')](respondWithStatusCode(_0x2f6a56,null))[_0x6a86('0x1e')](handleError(_0x2f6a56,null));};exports[_0x6a86('0x157')]=function(_0x35f898,_0x3a27b8){var _0x44c0a3={};var _0x260726={};var _0x241971;var _0x3e9bb3;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x35f898['params']['id']}})['then'](handleEntityNotFound(_0x3a27b8,null))[_0x6a86('0x15')](function(_0x13732a){if(_0x13732a){_0x241971=_0x13732a;_0x260726[_0x6a86('0x52')]=_[_0x6a86('0x4e')](db[_0x6a86('0x158')][_0x6a86('0x38')]);_0x260726['query']=_['keys'](_0x35f898[_0x6a86('0x3e')]);_0x260726[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x260726[_0x6a86('0x52')],_0x260726[_0x6a86('0x3e')]);_0x44c0a3['attributes']=_[_0x6a86('0x53')](_0x260726[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x35f898[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x44c0a3[_0x6a86('0x41')]=_0x44c0a3[_0x6a86('0x41')][_0x6a86('0x55')]?_0x44c0a3[_0x6a86('0x41')]:_0x260726[_0x6a86('0x52')];_0x44c0a3[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x35f898[_0x6a86('0x3e')][_0x6a86('0xc9')]);_0x44c0a3[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x35f898[_0x6a86('0x3e')],_0x260726[_0x6a86('0x51')]));if(_0x35f898[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x44c0a3[_0x6a86('0xcb')]=_['merge'](_0x44c0a3[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x44c0a3['attributes'],function(_0x23d161){var _0x1d46f5={};_0x1d46f5[_0x23d161]={'$like':'%'+_0x35f898[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x1d46f5;})});}_0x44c0a3=_[_0x6a86('0xcc')]({},_0x44c0a3,_0x35f898[_0x6a86('0xcd')]);return _0x241971['getWhatsappAccounts'](_0x44c0a3);}})[_0x6a86('0x15')](function(_0xeaf7f5){if(_0xeaf7f5){_0x3e9bb3=_0xeaf7f5[_0x6a86('0x55')];if(!_0x35f898[_0x6a86('0x3e')][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x44c0a3['limit']=qs[_0x6a86('0x24')](_0x35f898[_0x6a86('0x3e')]['limit']);_0x44c0a3[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x35f898[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x241971[_0x6a86('0x157')](_0x44c0a3);}})[_0x6a86('0x15')](function(_0x2d3d2d){if(_0x2d3d2d){return _0x2d3d2d?{'count':_0x3e9bb3,'rows':_0x2d3d2d}:null;}})[_0x6a86('0x15')](respondWithResult(_0x3a27b8,null))['catch'](handleError(_0x3a27b8,null));};exports['addWhatsappAccounts']=function(_0x37ebc8,_0x59a758){return db[_0x6a86('0x4f')]['find']({'where':{'id':_0x37ebc8['params']['id']}})['then'](handleEntityNotFound(_0x59a758,null))[_0x6a86('0x15')](function(_0x9081e){if(_0x9081e){return _0x9081e[_0x6a86('0x159')](_0x37ebc8[_0x6a86('0x58')][_0x6a86('0x5c')],_[_0x6a86('0x115')](_0x37ebc8[_0x6a86('0x58')],[_0x6a86('0x5c'),'id'])||{});}})[_0x6a86('0x15')](respondWithResult(_0x59a758,null))[_0x6a86('0x1e')](handleError(_0x59a758,null));};exports['removeWhatsappAccounts']=function(_0x4dfe78,_0x146efb){return db['User']['find']({'where':{'id':_0x4dfe78['params']['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x146efb,null))['then'](function(_0x64464c){if(_0x64464c){return _0x64464c[_0x6a86('0x15a')](_0x4dfe78[_0x6a86('0x3e')][_0x6a86('0x5c')]);}})[_0x6a86('0x15')](respondWithStatusCode(_0x146efb,null))['catch'](handleError(_0x146efb,null));};exports[_0x6a86('0x15b')]=function(_0x40a81b,_0x193cbb){var _0x3476c3={};var _0x11444c={};var _0x54cf4f;var _0x99be63;return db[_0x6a86('0x4f')][_0x6a86('0x95')]({'where':{'id':_0x40a81b[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x193cbb,null))['then'](function(_0x3b280c){if(_0x3b280c){_0x54cf4f=_0x3b280c;_0x11444c[_0x6a86('0x52')]=_[_0x6a86('0x4e')](db[_0x6a86('0x15c')][_0x6a86('0x38')]);_0x11444c[_0x6a86('0x3e')]=_[_0x6a86('0x4e')](_0x40a81b[_0x6a86('0x3e')]);_0x11444c[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x11444c['model'],_0x11444c[_0x6a86('0x3e')]);_0x3476c3[_0x6a86('0x41')]=_[_0x6a86('0x53')](_0x11444c[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x40a81b[_0x6a86('0x3e')]['fields']));_0x3476c3[_0x6a86('0x41')]=_0x3476c3['attributes'][_0x6a86('0x55')]?_0x3476c3[_0x6a86('0x41')]:_0x11444c[_0x6a86('0x52')];_0x3476c3[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x40a81b['query'][_0x6a86('0xc9')]);_0x3476c3[_0x6a86('0xcb')]=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x40a81b[_0x6a86('0x3e')],_0x11444c[_0x6a86('0x51')]));if(_0x40a81b['query'][_0x6a86('0x30')]){_0x3476c3[_0x6a86('0xcb')]=_[_0x6a86('0xcc')](_0x3476c3[_0x6a86('0xcb')],{'$or':_[_0x6a86('0x89')](_0x3476c3['attributes'],function(_0x6a43ac){var _0xe51898={};_0xe51898[_0x6a43ac]={'$like':'%'+_0x40a81b[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0xe51898;})});}_0x3476c3=_['merge']({},_0x3476c3,_0x40a81b[_0x6a86('0xcd')]);return _0x54cf4f[_0x6a86('0x15b')](_0x3476c3);}})[_0x6a86('0x15')](function(_0x461d12){if(_0x461d12){_0x99be63=_0x461d12[_0x6a86('0x55')];if(!_0x40a81b['query'][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x3476c3[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x40a81b['query']['limit']);_0x3476c3[_0x6a86('0x22')]=qs['offset'](_0x40a81b[_0x6a86('0x3e')][_0x6a86('0x22')]);}return _0x54cf4f[_0x6a86('0x15b')](_0x3476c3);}})[_0x6a86('0x15')](function(_0x2b7a94){if(_0x2b7a94){return _0x2b7a94?{'count':_0x99be63,'rows':_0x2b7a94}:null;}})['then'](respondWithResult(_0x193cbb,null))[_0x6a86('0x1e')](handleError(_0x193cbb,null));};exports['addSquareProjects']=function(_0x130def,_0x4840d0){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x130def[_0x6a86('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4840d0,null))[_0x6a86('0x15')](function(_0x2ecc22){if(_0x2ecc22){return _0x2ecc22[_0x6a86('0x15d')](_0x130def[_0x6a86('0x58')][_0x6a86('0x5c')],_[_0x6a86('0x115')](_0x130def['body'],[_0x6a86('0x5c'),'id'])||{});}})[_0x6a86('0x15')](respondWithResult(_0x4840d0,null))[_0x6a86('0x1e')](handleError(_0x4840d0,null));};exports[_0x6a86('0x15e')]=function(_0x5ce424,_0xf29183){return db['User'][_0x6a86('0x33')]({'where':{'id':_0x5ce424['params']['id']}})['then'](handleEntityNotFound(_0xf29183,null))[_0x6a86('0x15')](function(_0x277cc3){if(_0x277cc3){return _0x277cc3[_0x6a86('0x15e')](_0x5ce424[_0x6a86('0x3e')]['ids']);}})[_0x6a86('0x15')](respondWithStatusCode(_0xf29183,null))[_0x6a86('0x1e')](handleError(_0xf29183,null));};exports[_0x6a86('0x15f')]=function(_0x569c29,_0x1ea228){var _0x594d1f={},_0x21cd4b={},_0x5cd751={'count':0x0,'rows':[]};var _0x52e7c9=db['CmHopper'][_0x6a86('0x38')];_0x21cd4b[_0x6a86('0x52')]=_[_0x6a86('0x4e')](_0x52e7c9);_0x21cd4b[_0x6a86('0x3e')]=_['keys'](_0x569c29[_0x6a86('0x3e')]);_0x21cd4b[_0x6a86('0x51')]=_[_0x6a86('0x53')](_0x21cd4b['model'],_0x21cd4b[_0x6a86('0x3e')]);_0x21cd4b['filters']=_[_0x6a86('0x160')](_0x21cd4b['filters'],[_0x6a86('0x161'),_0x6a86('0x162'),_0x6a86('0x163'),_0x6a86('0x164'),_0x6a86('0x165'),_0x6a86('0x166'),'$ne',_0x6a86('0x167'),_0x6a86('0x168'),'$between','$notBetween',_0x6a86('0x169'),_0x6a86('0x16a'),'$like',_0x6a86('0x16b'),_0x6a86('0x16c'),_0x6a86('0x16d'),_0x6a86('0x16e'),_0x6a86('0x16f'),_0x6a86('0x170'),'$contained',_0x6a86('0x171')]);_0x594d1f['attributes']=_[_0x6a86('0x53')](_0x21cd4b[_0x6a86('0x52')],qs[_0x6a86('0x54')](_0x569c29[_0x6a86('0x3e')][_0x6a86('0x54')]));_0x594d1f[_0x6a86('0x41')]=_0x594d1f['attributes'][_0x6a86('0x55')]?_0x594d1f[_0x6a86('0x41')]:_0x21cd4b[_0x6a86('0x52')];if(!_0x569c29['query'][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x594d1f['limit']=qs[_0x6a86('0x24')](_0x569c29[_0x6a86('0x3e')][_0x6a86('0x24')]);_0x594d1f[_0x6a86('0x22')]=qs[_0x6a86('0x22')](_0x569c29[_0x6a86('0x3e')][_0x6a86('0x22')]);}_0x594d1f[_0x6a86('0xd4')]=qs[_0x6a86('0xc9')](_0x569c29['query'][_0x6a86('0xc9')]);_0x594d1f['where']=qs[_0x6a86('0x51')](_[_0x6a86('0xca')](_0x569c29['query'],_0x21cd4b[_0x6a86('0x51')]));if(_0x569c29[_0x6a86('0x3e')][_0x6a86('0x30')]){_0x594d1f[_0x6a86('0xcb')]=_['merge'](_0x594d1f['where'],{'$or':_[_0x6a86('0x89')](_0x594d1f[_0x6a86('0x41')],function(_0x6b251f){var _0x5a26fe={};_0x5a26fe[_0x6b251f]={'$like':'%'+_0x569c29[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'};return _0x5a26fe;})});}_0x594d1f['where']={'$and':[_0x594d1f[_0x6a86('0xcb')],{'$or':[{'UserId':_0x569c29[_0x6a86('0x4c')]['id']},{'OwnerId':_0x569c29[_0x6a86('0x4c')]['id']}]}]};_0x594d1f=_['merge']({},_0x594d1f,_0x569c29[_0x6a86('0xcd')]);var _0x55b8a3={'where':_0x594d1f[_0x6a86('0xcb')]};return db[_0x6a86('0x172')]['count'](_0x55b8a3)[_0x6a86('0x15')](function(_0xaed50f){_0x5cd751[_0x6a86('0x25')]=_0xaed50f;if(_0x569c29[_0x6a86('0x3e')][_0x6a86('0x3f')]){_0x594d1f[_0x6a86('0x40')]=[{'attributes':['id',_0x6a86('0x173'),'lastName',_0x6a86('0xeb')],'model':db[_0x6a86('0xc8')],'as':_0x6a86('0x174')},{'attributes':['id',_0x6a86('0x34'),_0x6a86('0x175')],'model':db[_0x6a86('0x176')],'as':_0x6a86('0xd3')}];}return db['CmHopper']['findAll'](_0x594d1f);})[_0x6a86('0x15')](function(_0x530153){_0x5cd751[_0x6a86('0x44')]=_0x530153;return _0x5cd751;})[_0x6a86('0x15')](respondWithFilteredResult(_0x1ea228,_0x594d1f))[_0x6a86('0x1e')](handleError(_0x1ea228,null));};exports[_0x6a86('0x177')]=function(_0x5350d3,_0x514204){if(!_[_0x6a86('0x62')](_0x5350d3['user']['id'])&&(_0x5350d3['user'][_0x6a86('0x59')]==_0x6a86('0x2a')||_0x5350d3['user'][_0x6a86('0x59')]==_0x6a86('0x2c'))){return db['User'][_0x6a86('0x95')]({'where':{'id':_0x5350d3['params']['id']},'raw':!![]})[_0x6a86('0x15')](function(_0x31a450){return authService['retrieveApiKey'](_0x31a450);})['then'](function(_0x5507e1){if(_0x5507e1){return _0x514204[_0x6a86('0x1f')](0xc8)[_0x6a86('0x21')]({'api_key':_0x5507e1[_0x6a86('0x178')]});}else{return _0x514204[_0x6a86('0x1f')](0xcc)[_0x6a86('0x21')]({'message':_0x6a86('0x179')});}})[_0x6a86('0x1e')](handleError(_0x514204,0x193));}else{return _0x514204[_0x6a86('0x1f')](0x191)[_0x6a86('0x21')]({'message':_0x6a86('0x17a')});}};exports[_0x6a86('0x17b')]=function(_0x4c2275,_0x32970e){if(!_[_0x6a86('0x62')](_0x4c2275[_0x6a86('0x2c')]['id'])&&(_0x4c2275[_0x6a86('0x2c')][_0x6a86('0x59')]==_0x6a86('0x2a')||_0x4c2275[_0x6a86('0x2c')]['role']==_0x6a86('0x2c'))){return db[_0x6a86('0x4f')][_0x6a86('0x33')]({'where':{'id':_0x4c2275[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](function(_0x1750a6){return authService[_0x6a86('0x17c')](_0x1750a6);})['then'](function(_0x4dc97d){return db['User'][_0x6a86('0x27')]({'apiKeyIat':_0x4dc97d[_0x6a86('0x17d')],'apiKeyNonce':_0x4dc97d[_0x6a86('0x17e')]},{'where':{'id':_0x4c2275[_0x6a86('0x4c')]['id']}})['then'](function(){return _0x32970e[_0x6a86('0x1f')](0xc8)[_0x6a86('0x21')]({'api_key':_0x4dc97d['token']});});})[_0x6a86('0x1e')](handleError(_0x32970e,0x193));}else{return _0x32970e[_0x6a86('0x1f')](0x191)[_0x6a86('0x21')]({'message':_0x6a86('0x17a')});}};exports[_0x6a86('0x17f')]=function(_0x4cdfb5,_0x2bb773){if(!_[_0x6a86('0x62')](_0x4cdfb5[_0x6a86('0x2c')]['id'])&&(_0x4cdfb5[_0x6a86('0x2c')]['role']==_0x6a86('0x2a')||_0x4cdfb5[_0x6a86('0x2c')][_0x6a86('0x59')]==_0x6a86('0x2c'))){return db[_0x6a86('0x4f')]['find']({'where':{'id':_0x4cdfb5[_0x6a86('0x4c')]['id']}})[_0x6a86('0x15')](handleEntityNotFound(_0x2bb773,null))[_0x6a86('0x15')](function(_0x26f5ca){if(_0x26f5ca&&_0x26f5ca['apiKeyNonce']&&_0x26f5ca[_0x6a86('0x180')])return _0x26f5ca;else throw{'message':_0x6a86('0x181')};})['then'](function(_0x4c070a){return db[_0x6a86('0x4f')][_0x6a86('0x27')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x4cdfb5[_0x6a86('0x4c')]['id']}});})[_0x6a86('0x15')](respondWithStatusCode(_0x2bb773,0xc8))[_0x6a86('0x1e')](handleError(_0x2bb773,0x193));}else{return _0x2bb773[_0x6a86('0x1f')](0x191)['json']({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x6a86('0x182')]=function(_0x31a194,_0x3fcf57){var _0x3e6d5f=_0x31a194[_0x6a86('0x2c')][_0x6a86('0x29')]({'plain':!![]});if(!_0x3e6d5f){return _0x3fcf57[_0x6a86('0x1f')](0x191)[_0x6a86('0x37')]('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x3fcf57[_0x6a86('0x1f')](0xc8)['json'](_0x3e6d5f);}};exports[_0x6a86('0x183')]=function(_0x213510,_0x2a96b7){var _0x3fb7be={'offset':0x0},_0x555739={'count':0x0,'rows':[]};Promise[_0x6a86('0x101')]()[_0x6a86('0x15')](function(){if(!_0x213510[_0x6a86('0x3e')][_0x6a86('0x30')]&&!_0x213510['query'][_0x6a86('0x184')]&&!_0x213510[_0x6a86('0x3e')][_0x6a86('0x185')])return[];return Promise[_0x6a86('0x101')]()[_0x6a86('0x15')](function(){var _0x712a3a=[];if(!_['isEmpty'](_0x213510[_0x6a86('0x3e')][_0x6a86('0x184')])){_0x712a3a[_0x6a86('0x42')](db['Team'][_0x6a86('0x43')]({'attributes':['id','name'],'where':{'id':_0x213510[_0x6a86('0x3e')][_0x6a86('0x184')]}}));}if(!_['isEmpty'](_0x213510['query'][_0x6a86('0x185')])){_0x712a3a[_0x6a86('0x42')](db[_0x6a86('0x176')][_0x6a86('0x43')]({'attributes':['id',_0x6a86('0x34')],'type':_0x6a86('0x186'),'where':{'id':_0x213510[_0x6a86('0x3e')]['queues']}}));}return Promise[_0x6a86('0x4a')](_0x712a3a);})[_0x6a86('0x15')](function(_0x328c7b){var _0x5b1035=_[_0x6a86('0x124')](_0x328c7b)[_0x6a86('0x89')](function(_0x5e5c3c){return _0x5e5c3c[_0x6a86('0x12a')]({'attributes':['id',_0x6a86('0x34'),_0x6a86('0x61'),_0x6a86('0x9b')],'raw':!![]});});return Promise[_0x6a86('0x4a')](_0x5b1035);})[_0x6a86('0x15')](function(_0x3e32c4){var _0x18cbd9=_[_0x6a86('0x124')](_0x3e32c4);if(!_0x213510[_0x6a86('0x3e')][_0x6a86('0x30')])return _0x18cbd9;if(_[_0x6a86('0x88')](_0x18cbd9)){return db[_0x6a86('0x4f')][_0x6a86('0x43')]({'attributes':['id',_0x6a86('0x34'),_0x6a86('0x61'),_0x6a86('0x9b')],'where':{'role':_0x6a86('0x79'),'$or':[db[_0x6a86('0x64')][_0x6a86('0xcb')](db[_0x6a86('0x64')]['fn'](_0x6a86('0x187'),db['sequelize']['col'](_0x6a86('0x34'))),{'$like':'%'+_0x213510[_0x6a86('0x3e')][_0x6a86('0x30')]['toLowerCase']()+'%'}),{'internal':{'$like':'%'+_0x213510[_0x6a86('0x3e')][_0x6a86('0x30')]+'%'}}]},'raw':!![]});}else{return _(_0x18cbd9)['flatten']()[_0x6a86('0x30')](function(_0x6910c){return _0x6910c[_0x6a86('0x34')][_0x6a86('0xa1')]()[_0x6a86('0x3b')](_0x213510[_0x6a86('0x3e')][_0x6a86('0x30')]['toLowerCase']())||_0x6910c[_0x6a86('0x61')][_0x6a86('0x188')]()[_0x6a86('0x3b')](_0x213510[_0x6a86('0x3e')][_0x6a86('0x30')]);})['value']();}})['then'](function(_0xa7f2e7){var _0x4c6085=_0x6a86('0x34');var _0x39ee5a='asc';if(_0x213510['query'][_0x6a86('0xc9')]){var _0x39ee5a=_0x213510[_0x6a86('0x3e')][_0x6a86('0xc9')][0x0]==='-'?'desc':_0x6a86('0x189');var _0x4c6085=_0x39ee5a===_0x6a86('0x189')?_0x213510[_0x6a86('0x3e')]['sort']:_0x213510[_0x6a86('0x3e')]['sort'][_0x6a86('0x18a')](0x1);}return _(_0xa7f2e7)[_0x6a86('0x18b')]('id')[_0x6a86('0x18c')]([function(_0x58676a){return _0x4c6085===_0x6a86('0x34')?_0x58676a[_0x4c6085][_0x6a86('0xa1')]():_0x58676a[_0x4c6085];}],[_0x39ee5a])['map'](function(_0x2c41dc){return _[_0x6a86('0xca')](_0x2c41dc,['id','name',_0x6a86('0x61'),_0x6a86('0x9b')]);})['value']();})[_0x6a86('0x15')](function(_0x410961){return client[_0x6a86('0x14')](_0x6a86('0x2d'),_0x213510)['then'](function(_0x4fe2bc){if(_0x4fe2bc[_0x6a86('0x1b')])throw new Error(_0x6a86('0x18d'));var _0x4f933c=_0x4fe2bc[_0x6a86('0x18e')];var _0x152513=jayson['client'][_0x6a86('0x13')]({'port':0x232c});return _0x152513[_0x6a86('0x14')](_0x6a86('0x2d'),_0x213510)[_0x6a86('0x15')](function(_0x48b43b){if(_0x48b43b['error'])throw new Error(_0x6a86('0x18f'));var _0x20d718=_0x48b43b[_0x6a86('0x18e')];return _[_0x6a86('0xcc')]({},_0x20d718,_0x4f933c);});})[_0x6a86('0x15')](function(_0x12c9f0){return _['map'](_0x410961,function(_0x83375b){var _0x4ee183=_[_0x6a86('0x33')](_0x12c9f0[_0x6a86('0x44')],['id',_0x83375b['id']]);if(!_0x4ee183||!_0x83375b['online']){_0x83375b[_0x6a86('0x1f')]=_0x6a86('0x190');}else if(_0x4ee183[_0x6a86('0x107')]){_0x83375b[_0x6a86('0x1f')]=_0x6a86('0x103');}else{_0x83375b['status']=_[_0x6a86('0x3b')]([_0x6a86('0x191'),_0x6a86('0x192'),_0x6a86('0x193'),_0x6a86('0x194'),null,undefined],_0x4ee183['voiceStatus'])?_0x6a86('0x9b'):_0x6a86('0x195');}return _0x83375b;});});});})[_0x6a86('0x15')](function(_0xfb450){if(!_0x213510[_0x6a86('0x3e')][_0x6a86('0xd2')](_0x6a86('0xd7'))){_0x3fb7be[_0x6a86('0x24')]=qs[_0x6a86('0x24')](_0x213510[_0x6a86('0x3e')][_0x6a86('0x24')]||0xa);_0x3fb7be[_0x6a86('0x22')]=qs['offset'](_0x213510['query'][_0x6a86('0x22')]);}_0x555739[_0x6a86('0x25')]=_0xfb450[_0x6a86('0x55')];_0x555739['rows']=_0x3fb7be[_0x6a86('0x24')]?_0xfb450[_0x6a86('0x196')](_0x3fb7be[_0x6a86('0x22')],_0x3fb7be[_0x6a86('0x22')]+_0x3fb7be[_0x6a86('0x24')]):_0xfb450;return _0x555739;})[_0x6a86('0x15')](respondWithFilteredResult(_0x2a96b7,_0x3fb7be))[_0x6a86('0x1e')](handleError(_0x2a96b7,null));};function get_open_tabs(_0x47929f,_0x17ef07){var _0x5f188a=_0x47929f[_0x6a86('0x197')](0x0)[_0x6a86('0x198')]()+_0x47929f[_0x6a86('0x196')](0x1);var _0x2c6ca1={'type':db[_0x6a86('0x8e')][_0x6a86('0x66')][_0x6a86('0x199')],'raw':!![]};return new BPromise(function(_0x43f708,_0x6c0c27){var _0x489f37=squel[_0x6a86('0x19a')]()[_0x6a86('0x19b')]('ui.'+_0x5f188a+_0x6a86('0x19c'),'id')[_0x6a86('0x19b')]('ui.createdAt')[_0x6a86('0x67')](_0x6a86('0x19d')+_0x47929f+'_interactions','ui')[_0x6a86('0xcb')]('ui.UserId\x20=\x20?',_0x17ef07['id']);return db['sequelize'][_0x6a86('0x3e')](_0x489f37['toString'](),_0x2c6ca1)[_0x6a86('0x15')](function(_0x1fe09c){_0x17ef07[_0x5f188a+_0x6a86('0x19e')]=_0x1fe09c;_0x43f708(_0x1fe09c);})[_0x6a86('0x1e')](function(_0x494c80){_0x6c0c27(_0x494c80);});});};
\ No newline at end of file
index 08dfadf..9f496d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79c2=['save','update','remove','emit','exports','events','User','setMaxListeners'];(function(_0x2dfffc,_0x3411af){var _0xf9d20d=function(_0x137b78){while(--_0x137b78){_0x2dfffc['push'](_0x2dfffc['shift']());}};_0xf9d20d(++_0x3411af);}(_0x79c2,0x16d));var _0x279c=function(_0x4d521e,_0x58ba39){_0x4d521e=_0x4d521e-0x0;var _0x3beb42=_0x79c2[_0x4d521e];return _0x3beb42;};'use strict';var EventEmitter=require(_0x279c('0x0'));var User=require('../../mysqldb')['db'][_0x279c('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x279c('0x2')](0x0);var events={'afterCreate':_0x279c('0x3'),'afterUpdate':_0x279c('0x4'),'afterDestroy':_0x279c('0x5')};function emitEvent(_0x1cb90e){return function(_0x1044a5,_0x6db5b1,_0x1fee1d){UserEvents[_0x279c('0x6')](_0x1cb90e+':'+_0x1044a5['id'],_0x1044a5);UserEvents[_0x279c('0x6')](_0x1cb90e,_0x1044a5);_0x1fee1d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0x279c('0x7')]=UserEvents;
\ No newline at end of file
+var _0xdbb5=['hasOwnProperty','hook','exports','events','../../mysqldb','User','setMaxListeners','save','update','remove'];(function(_0x5e8f79,_0x580bce){var _0x2b9ec3=function(_0x4cb352){while(--_0x4cb352){_0x5e8f79['push'](_0x5e8f79['shift']());}};_0x2b9ec3(++_0x580bce);}(_0xdbb5,0x71));var _0x5dbb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdbb5[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x5dbb('0x0'));var User=require(_0x5dbb('0x1'))['db'][_0x5dbb('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x5dbb('0x3')](0x0);var events={'afterCreate':_0x5dbb('0x4'),'afterUpdate':_0x5dbb('0x5'),'afterDestroy':_0x5dbb('0x6')};function emitEvent(_0x4c877c){return function(_0x284764,_0x4a1fe0,_0x113288){UserEvents['emit'](_0x4c877c+':'+_0x284764['id'],_0x284764);UserEvents['emit'](_0x4c877c,_0x284764);_0x113288(null);};}for(var e in events){if(events[_0x5dbb('0x7')](e)){var event=events[e];User[_0x5dbb('0x8')](e,emitEvent(event));}}module[_0x5dbb('0x9')]=UserEvents;
\ No newline at end of file
index 68996b3..378b65a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92d5=['record','MixMonitor','${UNIQUEID}.%s,a','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','wav','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','findAll','then','concat','catch','exports','User','resolve','UserProfile','find','userProfileId','privacyEnabled','updateMd5Password','updatePassword','internal','bulkCreate','chanspy','VoiceExtension','changed','destroy','system','encryptPassword','function','randomBytes','toString','base64','sha1','pbkdf2','indexOf','provider','makeSalt','salt','md5secret','bluebird','crypto','util','md5','lodash','./user.attributes','google','length','context','from-sip','format','push','merge','Set','CDR(type)=%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x92d5,0x14a));var _0x592d=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x92d5[_0x4cf98e];return _0x1623ac;};'use strict';var BPromise=require(_0x592d('0x0'));var crypto=require(_0x592d('0x1'));var util=require(_0x592d('0x2'));var md5=require(_0x592d('0x3'));var _=require(_0x592d('0x4'));var attributes=require(_0x592d('0x5'));var authTypes=[_0x592d('0x6')];var validatePresenceOf=function(_0x3ce4ee){return _0x3ce4ee&&_0x3ce4ee[_0x592d('0x7')];};var getChanSpyApplications=function(_0x24b777,_0x23dd31,_0xa7dbab){var _0x26de77={'context':_0x24b777[_0x592d('0x8')]||_0x592d('0x9'),'type':'system','isApp':![],'UserId':_0x24b777['id']};var _0xc00d6b=[];for(var _0x48e2e3=0x0,_0x13eef8=0x1;_0x48e2e3<_0xa7dbab['length'];_0x48e2e3++,_0x13eef8=0x1){var _0x3f0507={'exten':util[_0x592d('0xa')]('%s%s',_0xa7dbab[_0x48e2e3]['prefix'],_0x23dd31),'ChanSpyId':_0xa7dbab[_0x48e2e3]['id']};_0xc00d6b[_0x592d('0xb')](_[_0x592d('0xc')]({'app':_0x592d('0xd'),'appdata':util[_0x592d('0xa')](_0x592d('0xe'),'chanspy'),'priority':_0x13eef8++},_0x26de77,_0x3f0507));if(_0xa7dbab[_0x48e2e3][_0x592d('0xf')]){_0xc00d6b[_0x592d('0xb')](_[_0x592d('0xc')]({'app':_0x592d('0x10'),'appdata':util[_0x592d('0xa')](_0x592d('0x11'),_0xa7dbab[_0x48e2e3]['recordingFormat']),'priority':_0x13eef8++},_0x26de77,_0x3f0507));}if(_0xa7dbab[_0x48e2e3]['auth']){_0xc00d6b['push'](_[_0x592d('0xc')]({'app':_0x592d('0x12'),'appdata':_0xa7dbab[_0x48e2e3][_0x592d('0x13')],'priority':_0x13eef8++},_0x26de77,_0x3f0507));}_0xc00d6b[_0x592d('0xb')](_['merge']({'app':_0x592d('0x14'),'appdata':util[_0x592d('0xa')](_0x592d('0x15'),_0x24b777[_0x592d('0x16')],_0xa7dbab[_0x48e2e3][_0x592d('0x17')]?_0xa7dbab[_0x48e2e3]['options']['join'](''):''),'priority':_0x13eef8++},_0x26de77,_0x3f0507));if(_0xa7dbab[_0x48e2e3][_0x592d('0xf')]){_0xc00d6b[_0x592d('0xb')](_['merge']({'app':'StopMixMonitor','priority':_0x13eef8++},_0x26de77,_0x3f0507));}}return _0xc00d6b;};var getUserApplications=function(_0x5c721f,_0x2977f0){var _0x15e89b=[_0x592d('0x18'),'WAV',_0x592d('0x19')];var _0xdedbb0={'context':_0x5c721f[_0x592d('0x8')]||_0x592d('0x9'),'exten':_0x2977f0,'type':'system','isApp':![],'UserId':_0x5c721f['id']};var _0x5535c2=[{'app':_0x592d('0xd'),'appdata':_0x592d('0x1a')}];if(_0x5c721f[_0x592d('0x1b')]&&_[_0x592d('0x1c')](_0x15e89b,_0x5c721f[_0x592d('0x1b')])){_0x5535c2[_0x592d('0xb')]({'app':'Set','appdata':_0x592d('0x1d')});_0x5535c2[_0x592d('0xb')]({'app':_0x592d('0xd'),'appdata':util['format'](_0x592d('0x1e'),_0x5c721f[_0x592d('0x1b')])});_0x5535c2['push']({'app':_0x592d('0x1f'),'appdata':util['format'](_0x592d('0x20'),_0x5c721f[_0x592d('0x16')])});}else{_0x5535c2[_0x592d('0xb')]({'app':'Dial','appdata':util['format'](_0x592d('0x21'),_0x5c721f[_0x592d('0x16')])});}_0x5535c2[_0x592d('0xb')]({'app':_0x592d('0x22')});for(var _0x4f51e0=0x0;_0x4f51e0<_0x5535c2[_0x592d('0x7')];_0x4f51e0++){_0x5535c2[_0x4f51e0][_0x592d('0x23')]=_0x4f51e0+0x1;_0x5535c2[_0x4f51e0]=_[_0x592d('0x24')](_0x5535c2[_0x4f51e0],_0xdedbb0);}return _0x5535c2;};var getChanSpyPromise=function(_0x18f8e3,_0x56e33c){return new BPromise(function(_0x111d07,_0x2a2559){return _0x18f8e3['VoiceChanSpy'][_0x592d('0x25')]()[_0x592d('0x26')](function(_0x34a2e5){if(_0x34a2e5){var _0x5a8ba0=getChanSpyApplications(_0x56e33c,_0x56e33c['internal'],_0x34a2e5);if(_0x56e33c['internal']!=_0x56e33c['name']){_0x5a8ba0=_0x5a8ba0[_0x592d('0x27')](getChanSpyApplications(_0x56e33c,_0x56e33c[_0x592d('0x16')],_0x34a2e5));}return _0x111d07(_0x5a8ba0);}return _0x111d07([]);})[_0x592d('0x28')](function(_0x193047){_0x2a2559(_0x193047);});});};module[_0x592d('0x29')]=function(_0x3cd1cc,_0x1a7d09){var _0x9cc08f=_0x3cd1cc['models'];return _0x3cd1cc['define'](_0x592d('0x2a'),attributes,{'tableName':'users','charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x54a154,_0x58f24c,_0x35a93c){var _0x5db7aa=typeof _0x54a154['userProfileId']==='undefined'?BPromise[_0x592d('0x2b')](null):_0x9cc08f[_0x592d('0x2c')][_0x592d('0x2d')]({'where':{'id':_0x54a154[_0x592d('0x2e')]}});_0x5db7aa[_0x592d('0x26')](function(_0x6974eb){if(_0x6974eb){_0x54a154[_0x592d('0x2f')]=_0x6974eb[_0x592d('0x2f')];}})[_0x592d('0x26')](function(){_0x54a154[_0x592d('0x30')]();_0x54a154[_0x592d('0x31')](_0x35a93c);})[_0x592d('0x28')](function(_0x114917){_0x35a93c(_0x114917);});},'beforeUpdate':function(_0x5e7f88,_0x2dcd33,_0x2b550e){Promise[_0x592d('0x2b')]()[_0x592d('0x26')](function(){if(_0x5e7f88['changed']('userProfileId')===![])return;return _0x9cc08f[_0x592d('0x2c')]['find']({'where':{'id':_0x5e7f88[_0x592d('0x2e')]}})[_0x592d('0x26')](function(_0x1bf4f9){if(_0x1bf4f9)_0x5e7f88[_0x592d('0x2f')]=_0x1bf4f9[_0x592d('0x2f')];return;});})[_0x592d('0x26')](function(){if(_0x5e7f88['changed'](_0x592d('0x13'))){_0x5e7f88[_0x592d('0x30')]();return _0x5e7f88['updatePassword'](_0x2b550e);}_0x2b550e();})[_0x592d('0x28')](function(_0x563ef4){_0x2b550e(_0x563ef4);});},'afterCreate':function(_0x111e3f,_0x4f1904,_0x3d35b2){var _0x254d69=getUserApplications(_0x111e3f,_0x111e3f[_0x592d('0x32')]);if(_0x111e3f[_0x592d('0x32')]!=_0x111e3f[_0x592d('0x16')]){_0x254d69=_0x254d69[_0x592d('0x27')](getUserApplications(_0x111e3f,_0x111e3f[_0x592d('0x16')]));}return _0x9cc08f['VoiceExtension'][_0x592d('0x33')](_0x254d69)[_0x592d('0x26')](function(){if(_0x111e3f[_0x592d('0x34')]){return getChanSpyPromise(_0x9cc08f,_0x111e3f);}})['then'](function(_0x574d92){if(_0x574d92&&_0x574d92[_0x592d('0x7')]){return _0x9cc08f[_0x592d('0x35')][_0x592d('0x33')](_0x574d92);}})[_0x592d('0x26')](function(){_0x3d35b2();})[_0x592d('0x28')](function(_0x2640ad){_0x3d35b2(_0x2640ad);});},'afterUpdate':function(_0x2ac32b,_0x21bea,_0x4aa3bc){return BPromise[_0x592d('0x2b')]()[_0x592d('0x26')](function(){if(_0x2ac32b[_0x592d('0x36')]('chanspy')||_0x2ac32b['changed'](_0x592d('0x8'))){return _0x9cc08f['VoiceExtension'][_0x592d('0x37')]({'where':{'UserId':_0x2ac32b['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x592d('0x26')](function(){if(_0x2ac32b[_0x592d('0x34')]){return getChanSpyPromise(_0x9cc08f,_0x2ac32b)[_0x592d('0x26')](function(_0x3d9105){if(_0x3d9105&&_0x3d9105['length']){return _0x9cc08f[_0x592d('0x35')][_0x592d('0x33')](_0x3d9105);}});}});}})[_0x592d('0x26')](function(){if(_0x2ac32b[_0x592d('0x36')](_0x592d('0x1b'))||_0x2ac32b[_0x592d('0x36')](_0x592d('0x8'))){return _0x9cc08f[_0x592d('0x35')][_0x592d('0x37')]({'where':{'UserId':_0x2ac32b['id'],'type':_0x592d('0x38'),'ChanSpyId':null}})[_0x592d('0x26')](function(){var _0xb727e5=getUserApplications(_0x2ac32b,_0x2ac32b[_0x592d('0x32')]);if(_0x2ac32b[_0x592d('0x32')]!=_0x2ac32b['name']){_0xb727e5=_0xb727e5['concat'](getUserApplications(_0x2ac32b,_0x2ac32b[_0x592d('0x16')]));}return _0x9cc08f['VoiceExtension']['bulkCreate'](_0xb727e5);});}})[_0x592d('0x26')](function(){_0x4aa3bc();})[_0x592d('0x28')](function(_0x3053b3){_0x4aa3bc(_0x3053b3);});},'afterDestroy':function(_0x41fcdd,_0x5563c5){return _0x9cc08f[_0x592d('0x35')]['destroy']({'where':{'UserId':_0x41fcdd['id'],'type':_0x592d('0x38')}});}},'instanceMethods':{'authenticate':function(_0x34b7d1,_0x130adb){if(!_0x130adb){return this[_0x592d('0x13')]===this['encryptPassword'](_0x34b7d1);}var _0x80cccf=this;this[_0x592d('0x39')](_0x34b7d1,function(_0x293053,_0x4e2c27){if(_0x293053){_0x130adb(_0x293053);}if(_0x80cccf[_0x592d('0x13')]===_0x4e2c27){_0x130adb(null,!![]);}else{_0x130adb(null,![]);}});},'makeSalt':function(_0xbaf5f,_0x1ee275){var _0x216d0a=0x10;if(typeof arguments[0x0]===_0x592d('0x3a')){_0x1ee275=arguments[0x0];_0xbaf5f=_0x216d0a;}else if(typeof arguments[0x1]===_0x592d('0x3a')){_0x1ee275=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0xbaf5f){_0xbaf5f=_0x216d0a;}return crypto[_0x592d('0x3b')](_0xbaf5f,function(_0x102415,_0x5990b5){if(_0x102415){_0x1ee275(_0x102415);}return _0x1ee275(null,_0x5990b5[_0x592d('0x3c')](_0x592d('0x3d')));});},'encryptPassword':function(_0x57474f,_0x9c0e77){if(!_0x57474f||!this['salt']){return _0x9c0e77?_0x9c0e77(null):null;}var _0x345504=0x2710;var _0x9dc2f5=0x40;var _0x111452=new Buffer(this['salt'],_0x592d('0x3d'));if(!_0x9c0e77){return crypto['pbkdf2Sync'](_0x57474f,_0x111452,_0x345504,_0x9dc2f5,_0x592d('0x3e'))[_0x592d('0x3c')](_0x592d('0x3d'));}return crypto[_0x592d('0x3f')](_0x57474f,_0x111452,_0x345504,_0x9dc2f5,_0x592d('0x3e'),function(_0x351a41,_0x4bd90e){if(_0x351a41){_0x9c0e77(_0x351a41);}return _0x9c0e77(null,_0x4bd90e[_0x592d('0x3c')]('base64'));});},'updatePassword':function(_0x2ddba7){if(!this[_0x592d('0x13')]){return _0x2ddba7(null);}if(!validatePresenceOf(this[_0x592d('0x13')])&&authTypes[_0x592d('0x40')](this[_0x592d('0x41')])===-0x1){_0x2ddba7(new Error('Invalid\x20password'));}var _0x17b76e=this;this[_0x592d('0x42')](function(_0x2e054,_0x12ff77){if(_0x2e054){return _0x2ddba7(_0x2e054);}_0x17b76e[_0x592d('0x43')]=_0x12ff77;_0x17b76e[_0x592d('0x39')](_0x17b76e[_0x592d('0x13')],function(_0x9fa725,_0x105491){if(_0x9fa725){_0x2ddba7(_0x9fa725);}_0x17b76e['password']=_0x105491;_0x2ddba7(null);});});},'updateMd5Password':function(){this[_0x592d('0x44')]=md5(this[_0x592d('0x16')]+':asterisk:'+this['password']);return this[_0x592d('0x44')];}}});};
\ No newline at end of file
+var _0x5bc1=['encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','bluebird','util','md5','lodash','length','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','name','options','join','StopMixMonitor','WAV','gsm','context','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','defaults','VoiceChanSpy','findAll','then','internal','catch','exports','models','define','User','utf8','userProfileId','undefined','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','resolve','changed','concat','VoiceExtension','bulkCreate','destroy'];(function(_0x4fcc27,_0x7eed0b){var _0x26913e=function(_0x15696c){while(--_0x15696c){_0x4fcc27['push'](_0x4fcc27['shift']());}};_0x26913e(++_0x7eed0b);}(_0x5bc1,0x181));var _0x15bc=function(_0x16bf05,_0x4f70da){_0x16bf05=_0x16bf05-0x0;var _0xbcf546=_0x5bc1[_0x16bf05];return _0xbcf546;};'use strict';var BPromise=require(_0x15bc('0x0'));var crypto=require('crypto');var util=require(_0x15bc('0x1'));var md5=require(_0x15bc('0x2'));var _=require(_0x15bc('0x3'));var attributes=require('./user.attributes');var authTypes=['google'];var validatePresenceOf=function(_0x2ddfe9){return _0x2ddfe9&&_0x2ddfe9[_0x15bc('0x4')];};var getChanSpyApplications=function(_0x38f12d,_0x257324,_0x3adc2b){var _0x65bffb={'context':_0x38f12d['context']||_0x15bc('0x5'),'type':_0x15bc('0x6'),'isApp':![],'UserId':_0x38f12d['id']};var _0x3e98cb=[];for(var _0x104fd7=0x0,_0x386acb=0x1;_0x104fd7<_0x3adc2b[_0x15bc('0x4')];_0x104fd7++,_0x386acb=0x1){var _0x64ee94={'exten':util[_0x15bc('0x7')](_0x15bc('0x8'),_0x3adc2b[_0x104fd7][_0x15bc('0x9')],_0x257324),'ChanSpyId':_0x3adc2b[_0x104fd7]['id']};_0x3e98cb[_0x15bc('0xa')](_[_0x15bc('0xb')]({'app':_0x15bc('0xc'),'appdata':util[_0x15bc('0x7')](_0x15bc('0xd'),_0x15bc('0xe')),'priority':_0x386acb++},_0x65bffb,_0x64ee94));if(_0x3adc2b[_0x104fd7][_0x15bc('0xf')]){_0x3e98cb[_0x15bc('0xa')](_[_0x15bc('0xb')]({'app':_0x15bc('0x10'),'appdata':util['format'](_0x15bc('0x11'),_0x3adc2b[_0x104fd7][_0x15bc('0x12')]),'priority':_0x386acb++},_0x65bffb,_0x64ee94));}if(_0x3adc2b[_0x104fd7][_0x15bc('0x13')]){_0x3e98cb[_0x15bc('0xa')](_[_0x15bc('0xb')]({'app':_0x15bc('0x14'),'appdata':_0x3adc2b[_0x104fd7][_0x15bc('0x15')],'priority':_0x386acb++},_0x65bffb,_0x64ee94));}_0x3e98cb[_0x15bc('0xa')](_[_0x15bc('0xb')]({'app':'ChanSpy','appdata':util[_0x15bc('0x7')]('SIP/%s,%s',_0x38f12d[_0x15bc('0x16')],_0x3adc2b[_0x104fd7][_0x15bc('0x17')]?_0x3adc2b[_0x104fd7][_0x15bc('0x17')][_0x15bc('0x18')](''):''),'priority':_0x386acb++},_0x65bffb,_0x64ee94));if(_0x3adc2b[_0x104fd7]['record']){_0x3e98cb[_0x15bc('0xa')](_[_0x15bc('0xb')]({'app':_0x15bc('0x19'),'priority':_0x386acb++},_0x65bffb,_0x64ee94));}}return _0x3e98cb;};var getUserApplications=function(_0x566e79,_0x48439b){var _0x154b60=['wav',_0x15bc('0x1a'),_0x15bc('0x1b')];var _0xc7e3e7={'context':_0x566e79[_0x15bc('0x1c')]||'from-sip','exten':_0x48439b,'type':'system','isApp':![],'UserId':_0x566e79['id']};var _0x3da714=[{'app':_0x15bc('0xc'),'appdata':_0x15bc('0x1d')}];if(_0x566e79[_0x15bc('0x1e')]&&_['includes'](_0x154b60,_0x566e79[_0x15bc('0x1e')])){_0x3da714[_0x15bc('0xa')]({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x3da714[_0x15bc('0xa')]({'app':_0x15bc('0xc'),'appdata':util['format'](_0x15bc('0x1f'),_0x566e79[_0x15bc('0x1e')])});_0x3da714[_0x15bc('0xa')]({'app':'Dial','appdata':util[_0x15bc('0x7')](_0x15bc('0x20'),_0x566e79['name'])});}else{_0x3da714[_0x15bc('0xa')]({'app':'Dial','appdata':util[_0x15bc('0x7')](_0x15bc('0x21'),_0x566e79[_0x15bc('0x16')])});}_0x3da714[_0x15bc('0xa')]({'app':_0x15bc('0x22')});for(var _0xed6962=0x0;_0xed6962<_0x3da714[_0x15bc('0x4')];_0xed6962++){_0x3da714[_0xed6962]['priority']=_0xed6962+0x1;_0x3da714[_0xed6962]=_[_0x15bc('0x23')](_0x3da714[_0xed6962],_0xc7e3e7);}return _0x3da714;};var getChanSpyPromise=function(_0x544920,_0x2c9980){return new BPromise(function(_0x39922d,_0x1d43e5){return _0x544920[_0x15bc('0x24')][_0x15bc('0x25')]()[_0x15bc('0x26')](function(_0x13f09d){if(_0x13f09d){var _0x351c0a=getChanSpyApplications(_0x2c9980,_0x2c9980[_0x15bc('0x27')],_0x13f09d);if(_0x2c9980[_0x15bc('0x27')]!=_0x2c9980['name']){_0x351c0a=_0x351c0a['concat'](getChanSpyApplications(_0x2c9980,_0x2c9980['name'],_0x13f09d));}return _0x39922d(_0x351c0a);}return _0x39922d([]);})[_0x15bc('0x28')](function(_0x3a5a4c){_0x1d43e5(_0x3a5a4c);});});};module[_0x15bc('0x29')]=function(_0x2663bb,_0x394c0e){var _0x374340=_0x2663bb[_0x15bc('0x2a')];return _0x2663bb[_0x15bc('0x2b')](_0x15bc('0x2c'),attributes,{'tableName':'users','charset':_0x15bc('0x2d'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x15fee3,_0x1e6ad6,_0x178245){var _0x18b21a=typeof _0x15fee3[_0x15bc('0x2e')]===_0x15bc('0x2f')?BPromise['resolve'](null):_0x374340[_0x15bc('0x30')][_0x15bc('0x31')]({'where':{'id':_0x15fee3[_0x15bc('0x2e')]}});_0x18b21a[_0x15bc('0x26')](function(_0x1ec2aa){if(_0x1ec2aa){_0x15fee3[_0x15bc('0x32')]=_0x1ec2aa[_0x15bc('0x32')];}})[_0x15bc('0x26')](function(){_0x15fee3[_0x15bc('0x33')]();_0x15fee3[_0x15bc('0x34')](_0x178245);})[_0x15bc('0x28')](function(_0x382111){_0x178245(_0x382111);});},'beforeUpdate':function(_0x419fc6,_0x50c091,_0x5cd0ba){Promise[_0x15bc('0x35')]()[_0x15bc('0x26')](function(){if(_0x419fc6[_0x15bc('0x36')]('userProfileId')===![])return;return _0x374340[_0x15bc('0x30')]['find']({'where':{'id':_0x419fc6[_0x15bc('0x2e')]}})[_0x15bc('0x26')](function(_0x90e8){if(_0x90e8)_0x419fc6[_0x15bc('0x32')]=_0x90e8['privacyEnabled'];return;});})[_0x15bc('0x26')](function(){if(_0x419fc6['changed']('password')){_0x419fc6['updateMd5Password']();return _0x419fc6['updatePassword'](_0x5cd0ba);}_0x5cd0ba();})[_0x15bc('0x28')](function(_0x397012){_0x5cd0ba(_0x397012);});},'afterCreate':function(_0x3bbbd6,_0xdada17,_0x19d0d5){var _0xf6354c=getUserApplications(_0x3bbbd6,_0x3bbbd6[_0x15bc('0x27')]);if(_0x3bbbd6[_0x15bc('0x27')]!=_0x3bbbd6[_0x15bc('0x16')]){_0xf6354c=_0xf6354c[_0x15bc('0x37')](getUserApplications(_0x3bbbd6,_0x3bbbd6[_0x15bc('0x16')]));}return _0x374340[_0x15bc('0x38')]['bulkCreate'](_0xf6354c)[_0x15bc('0x26')](function(){if(_0x3bbbd6['chanspy']){return getChanSpyPromise(_0x374340,_0x3bbbd6);}})[_0x15bc('0x26')](function(_0x14ace7){if(_0x14ace7&&_0x14ace7['length']){return _0x374340['VoiceExtension'][_0x15bc('0x39')](_0x14ace7);}})[_0x15bc('0x26')](function(){_0x19d0d5();})[_0x15bc('0x28')](function(_0x5d4c2d){_0x19d0d5(_0x5d4c2d);});},'afterUpdate':function(_0x3c73f2,_0x33610b,_0x4188eb){return BPromise[_0x15bc('0x35')]()['then'](function(){if(_0x3c73f2[_0x15bc('0x36')]('chanspy')||_0x3c73f2[_0x15bc('0x36')](_0x15bc('0x1c'))){return _0x374340[_0x15bc('0x38')]['destroy']({'where':{'UserId':_0x3c73f2['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x15bc('0x26')](function(){if(_0x3c73f2[_0x15bc('0xe')]){return getChanSpyPromise(_0x374340,_0x3c73f2)[_0x15bc('0x26')](function(_0x2b6a1a){if(_0x2b6a1a&&_0x2b6a1a[_0x15bc('0x4')]){return _0x374340['VoiceExtension'][_0x15bc('0x39')](_0x2b6a1a);}});}});}})[_0x15bc('0x26')](function(){if(_0x3c73f2['changed']('extensionMonitor')||_0x3c73f2['changed'](_0x15bc('0x1c'))){return _0x374340[_0x15bc('0x38')][_0x15bc('0x3a')]({'where':{'UserId':_0x3c73f2['id'],'type':_0x15bc('0x6'),'ChanSpyId':null}})[_0x15bc('0x26')](function(){var _0x456a7e=getUserApplications(_0x3c73f2,_0x3c73f2[_0x15bc('0x27')]);if(_0x3c73f2[_0x15bc('0x27')]!=_0x3c73f2['name']){_0x456a7e=_0x456a7e[_0x15bc('0x37')](getUserApplications(_0x3c73f2,_0x3c73f2['name']));}return _0x374340[_0x15bc('0x38')]['bulkCreate'](_0x456a7e);});}})[_0x15bc('0x26')](function(){_0x4188eb();})['catch'](function(_0x382427){_0x4188eb(_0x382427);});},'afterDestroy':function(_0x547e7d,_0x81793b){return _0x374340[_0x15bc('0x38')][_0x15bc('0x3a')]({'where':{'UserId':_0x547e7d['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x4f1bfc,_0x2b7166){if(!_0x2b7166){return this[_0x15bc('0x15')]===this['encryptPassword'](_0x4f1bfc);}var _0x298822=this;this[_0x15bc('0x3b')](_0x4f1bfc,function(_0x4979c9,_0x59314a){if(_0x4979c9){_0x2b7166(_0x4979c9);}if(_0x298822[_0x15bc('0x15')]===_0x59314a){_0x2b7166(null,!![]);}else{_0x2b7166(null,![]);}});},'makeSalt':function(_0x3ecf8b,_0x27ed1b){var _0x23267f=0x10;if(typeof arguments[0x0]===_0x15bc('0x3c')){_0x27ed1b=arguments[0x0];_0x3ecf8b=_0x23267f;}else if(typeof arguments[0x1]===_0x15bc('0x3c')){_0x27ed1b=arguments[0x1];}else{throw new Error(_0x15bc('0x3d'));}if(!_0x3ecf8b){_0x3ecf8b=_0x23267f;}return crypto[_0x15bc('0x3e')](_0x3ecf8b,function(_0x33ba91,_0x5b0e4d){if(_0x33ba91){_0x27ed1b(_0x33ba91);}return _0x27ed1b(null,_0x5b0e4d[_0x15bc('0x3f')](_0x15bc('0x40')));});},'encryptPassword':function(_0x3f952e,_0x29d0d6){if(!_0x3f952e||!this[_0x15bc('0x41')]){return _0x29d0d6?_0x29d0d6(null):null;}var _0x4b0344=0x2710;var _0x1f418a=0x40;var _0x520638=new Buffer(this[_0x15bc('0x41')],_0x15bc('0x40'));if(!_0x29d0d6){return crypto[_0x15bc('0x42')](_0x3f952e,_0x520638,_0x4b0344,_0x1f418a,_0x15bc('0x43'))['toString'](_0x15bc('0x40'));}return crypto[_0x15bc('0x44')](_0x3f952e,_0x520638,_0x4b0344,_0x1f418a,_0x15bc('0x43'),function(_0x3e8202,_0x4ca823){if(_0x3e8202){_0x29d0d6(_0x3e8202);}return _0x29d0d6(null,_0x4ca823[_0x15bc('0x3f')]('base64'));});},'updatePassword':function(_0x53733a){if(!this[_0x15bc('0x15')]){return _0x53733a(null);}if(!validatePresenceOf(this[_0x15bc('0x15')])&&authTypes[_0x15bc('0x45')](this[_0x15bc('0x46')])===-0x1){_0x53733a(new Error(_0x15bc('0x47')));}var _0x3455f8=this;this[_0x15bc('0x48')](function(_0x1c042f,_0x2208e0){if(_0x1c042f){return _0x53733a(_0x1c042f);}_0x3455f8['salt']=_0x2208e0;_0x3455f8[_0x15bc('0x3b')](_0x3455f8[_0x15bc('0x15')],function(_0x1222c9,_0x314601){if(_0x1222c9){_0x53733a(_0x1222c9);}_0x3455f8[_0x15bc('0x15')]=_0x314601;_0x53733a(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x15bc('0x16')]+_0x15bc('0x49')+this[_0x15bc('0x15')]);return this['md5secret'];}}});};
\ No newline at end of file
index c594aaa..361ccf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33ec=['result','catch','GetUser','findAll','options','raw','where','attributes','limit','model','include','map','then','debug','ShowUser','User','find','PauseUser','role','internal','interface','update','MemberReport','name','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','SIP/%s','type','DEFAULT\x20PAUSE','body','bulkCreate','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','voice','UserVoiceQueueRt','mail','fax','openchannel','whatsapp','system','set','%s%s','Pause','all','LogoutUser','destroy','LoginUser','mobile','loginInPause','count','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','merge','LOGININPAUSE','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','defaults','redis','localhost','socket.io-emitter','./user.socket','register','request','info','User,\x20%s,\x20%s','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3af1a4,_0x291a52){var _0x37ff7f=function(_0x20c564){while(--_0x20c564){_0x3af1a4['push'](_0x3af1a4['shift']());}};_0x37ff7f(++_0x291a52);}(_0x33ec,0x1ae));var _0xc33e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x33ec[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc33e('0x0'));var util=require(_0xc33e('0x1'));var moment=require(_0xc33e('0x2'));var BPromise=require(_0xc33e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc33e('0x4'))['db'];var utils=require(_0xc33e('0x5'));var logger=require(_0xc33e('0x6'))(_0xc33e('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc33e('0x8')][_0xc33e('0x9')]({'port':0x232a});config['redis']=_[_0xc33e('0xa')](config[_0xc33e('0xb')],{'host':_0xc33e('0xc'),'port':0x18eb});var socket=require(_0xc33e('0xd'))(new Redis(config[_0xc33e('0xb')]));require(_0xc33e('0xe'))[_0xc33e('0xf')](socket);function respondWithRpcPromise(_0x2289dd,_0x196528,_0x538933){return new BPromise(function(_0x3f1968,_0x208762){return client[_0xc33e('0x10')](_0x2289dd,_0x538933)['then'](function(_0x14d69a){logger[_0xc33e('0x11')](_0xc33e('0x12'),_0x196528,_0xc33e('0x13'));logger['debug'](_0xc33e('0x14'),_0x196528,_0xc33e('0x13'),JSON[_0xc33e('0x15')](_0x14d69a));if(_0x14d69a[_0xc33e('0x16')]){if(_0x14d69a['error'][_0xc33e('0x17')]===0x1f4){logger[_0xc33e('0x16')](_0xc33e('0x12'),_0x196528,_0x14d69a[_0xc33e('0x16')][_0xc33e('0x18')]);return _0x208762(_0x14d69a[_0xc33e('0x16')][_0xc33e('0x18')]);}logger[_0xc33e('0x16')](_0xc33e('0x12'),_0x196528,_0x14d69a[_0xc33e('0x16')][_0xc33e('0x18')]);return _0x3f1968(_0x14d69a[_0xc33e('0x16')][_0xc33e('0x18')]);}else{logger[_0xc33e('0x11')](_0xc33e('0x12'),_0x196528,'request\x20sent');_0x3f1968(_0x14d69a[_0xc33e('0x19')][_0xc33e('0x18')]);}})[_0xc33e('0x1a')](function(_0x500585){logger[_0xc33e('0x16')]('User,\x20%s,\x20%s',_0x196528,_0x500585);_0x208762(_0x500585);});});}exports[_0xc33e('0x1b')]=function(_0x5ecae3){var _0x4cc136=this;return new Promise(function(_0xf7ad37,_0x1aeb4a){return db['User'][_0xc33e('0x1c')]({'raw':_0x5ecae3[_0xc33e('0x1d')]?_0x5ecae3['options'][_0xc33e('0x1e')]===undefined?!![]:![]:!![],'where':_0x5ecae3[_0xc33e('0x1d')]?_0x5ecae3[_0xc33e('0x1d')][_0xc33e('0x1f')]||null:null,'attributes':_0x5ecae3[_0xc33e('0x1d')]?_0x5ecae3[_0xc33e('0x1d')][_0xc33e('0x20')]||null:null,'limit':_0x5ecae3['options']?_0x5ecae3[_0xc33e('0x1d')][_0xc33e('0x21')]||null:null,'include':_0x5ecae3[_0xc33e('0x1d')]?_0x5ecae3[_0xc33e('0x1d')]['include']?_['map'](_0x5ecae3[_0xc33e('0x1d')]['include'],function(_0x508b17){return{'model':db[_0x508b17[_0xc33e('0x22')]],'as':_0x508b17['as'],'attributes':_0x508b17[_0xc33e('0x20')],'include':_0x508b17[_0xc33e('0x23')]?_[_0xc33e('0x24')](_0x508b17['include'],function(_0x1ef8c6){return{'model':db[_0x1ef8c6[_0xc33e('0x22')]],'as':_0x1ef8c6['as'],'attributes':_0x1ef8c6[_0xc33e('0x20')],'include':_0x1ef8c6[_0xc33e('0x23')]?_[_0xc33e('0x24')](_0x1ef8c6[_0xc33e('0x23')],function(_0x58dd3a){return{'model':db[_0x58dd3a[_0xc33e('0x22')]],'as':_0x58dd3a['as'],'attributes':_0x58dd3a[_0xc33e('0x20')]};}):[]};}):[]};}):[]:[]})[_0xc33e('0x25')](function(_0x5432cb){logger['info'](_0xc33e('0x1b'),_0x5ecae3);logger[_0xc33e('0x26')](_0xc33e('0x1b'),_0x5ecae3,JSON['stringify'](_0x5432cb));_0xf7ad37(_0x5432cb);})[_0xc33e('0x1a')](function(_0x52b754){logger[_0xc33e('0x16')](_0xc33e('0x1b'),_0x52b754['message'],_0x5ecae3);_0x1aeb4a(_0x4cc136[_0xc33e('0x16')](0x1f4,_0x52b754[_0xc33e('0x18')]));});});};exports[_0xc33e('0x27')]=function(_0x236dc1){var _0x26017f=this;return new Promise(function(_0xd4f7ed,_0x42ccf7){return db[_0xc33e('0x28')][_0xc33e('0x29')]({'raw':_0x236dc1[_0xc33e('0x1d')]?_0x236dc1['options'][_0xc33e('0x1e')]===undefined?!![]:![]:!![],'where':_0x236dc1[_0xc33e('0x1d')]?_0x236dc1[_0xc33e('0x1d')]['where']||null:null,'attributes':_0x236dc1['options']?_0x236dc1[_0xc33e('0x1d')]['attributes']||null:null,'include':_0x236dc1[_0xc33e('0x1d')]?_0x236dc1[_0xc33e('0x1d')][_0xc33e('0x23')]?_[_0xc33e('0x24')](_0x236dc1[_0xc33e('0x1d')]['include'],function(_0x4cc239){return{'model':db[_0x4cc239[_0xc33e('0x22')]],'as':_0x4cc239['as'],'attributes':_0x4cc239[_0xc33e('0x20')],'include':_0x4cc239[_0xc33e('0x23')]?_[_0xc33e('0x24')](_0x4cc239[_0xc33e('0x23')],function(_0x1454b2){return{'model':db[_0x1454b2[_0xc33e('0x22')]],'as':_0x1454b2['as'],'attributes':_0x1454b2[_0xc33e('0x20')],'include':_0x1454b2[_0xc33e('0x23')]?_[_0xc33e('0x24')](_0x1454b2[_0xc33e('0x23')],function(_0x5ed39e){return{'model':db[_0x5ed39e[_0xc33e('0x22')]],'as':_0x5ed39e['as'],'attributes':_0x5ed39e['attributes']};}):[]};}):[]};}):[]:[]})[_0xc33e('0x25')](function(_0x2b5148){logger[_0xc33e('0x11')](_0xc33e('0x27'),_0x236dc1);logger[_0xc33e('0x26')]('ShowUser',_0x236dc1,JSON['stringify'](_0x2b5148));_0xd4f7ed(_0x2b5148);})[_0xc33e('0x1a')](function(_0x21b5a9){logger[_0xc33e('0x16')]('ShowUser',_0x21b5a9[_0xc33e('0x18')],_0x236dc1);_0x42ccf7(_0x26017f[_0xc33e('0x16')](0x1f4,_0x21b5a9[_0xc33e('0x18')]));});});};exports[_0xc33e('0x2a')]=function(_0x3b8de4){var _0x25486d=this;return new Promise(function(_0x29921f,_0x38a689){var _0x5e1633;return db[_0xc33e('0x28')][_0xc33e('0x29')]({'where':_0x3b8de4[_0xc33e('0x1d')][_0xc33e('0x1f')]||{},'attributes':['id','name',_0xc33e('0x2b'),_0xc33e('0x2c'),_0xc33e('0x2d')]})[_0xc33e('0x25')](function(_0x3289c3){if(_0x3289c3){_0x5e1633=_0x3289c3;return db['UserVoiceQueueRt'][_0xc33e('0x2e')]({'paused':0x1},{'where':{'UserId':_0x5e1633['id']},'individualHooks':!![]});}})['then'](function(){if(_0x5e1633){return db[_0xc33e('0x2f')][_0xc33e('0x1c')]({'where':{'membername':_0x5e1633[_0xc33e('0x30')],'type':_0xc33e('0x31'),'exitAt':null}});}})[_0xc33e('0x25')](function(_0x2267b2){if(_0x5e1633){if(_0x2267b2&&_0x2267b2[_0xc33e('0x32')]){var _0x52c1e3=moment()[_0xc33e('0x33')](_0xc33e('0x34'));for(var _0x5e2d6c=0x0,_0x171b6d=_0x2267b2['length'];_0x5e2d6c<_0x171b6d;_0x5e2d6c++){_0x2267b2[_0x5e2d6c][_0xc33e('0x35')]({'exitAt':_0x52c1e3});}}}})[_0xc33e('0x25')](function(){if(_0x5e1633){var _0x5bf04d=[];var _0x19d06a=utils[_0xc33e('0x36')]();_0x19d06a[_0xc33e('0x37')](function(_0x5f52e3){_0x5bf04d[_0xc33e('0x38')]({'channel':_0x5f52e3,'membername':_0x5e1633['name'],'interface':_['isNil'](_0x5e1633[_0xc33e('0x2d')])?util['format'](_0xc33e('0x39'),_0x5e1633[_0xc33e('0x30')]):_0x5e1633[_0xc33e('0x2d')],'type':_0xc33e('0x31'),'enterAt':moment()[_0xc33e('0x33')](_0xc33e('0x34')),'data1':_0x3b8de4['body'][_0xc33e('0x3a')]||_0xc33e('0x3b'),'role':_0x5e1633[_0xc33e('0x2b')],'internal':_0x5e1633[_0xc33e('0x2c')],'uniqueid':_0x3b8de4[_0xc33e('0x3c')]['uniqueid']||null});});return db['MemberReport'][_0xc33e('0x3d')](_0x5bf04d,{'individualHooks':!![]});}})['then'](function(){if(_0x5e1633){return _0x5e1633[_0xc33e('0x2e')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x3b8de4['body'][_0xc33e('0x3a')]||_0xc33e('0x3b'),'lastPauseAt':moment()['format'](_0xc33e('0x34'))});}})['then'](function(_0x5ea50a){_0x29921f(_0x5ea50a);})[_0xc33e('0x1a')](function(_0x2ae628){_0x38a689(_0x25486d[_0xc33e('0x16')](0x1f4,_0x2ae628[_0xc33e('0x18')]));});});};exports[_0xc33e('0x3e')]=function(_0x2b834a){var _0x5b0ee2=this;return new Promise(function(_0xd4c6e,_0x181eb6){var _0x4032d;return db['User'][_0xc33e('0x3f')]({'where':_0x2b834a['options'][_0xc33e('0x1f')]||{},'attributes':['id',_0xc33e('0x30')]})['then'](function(_0x1055c4){if(_0x1055c4){_0x4032d=_0x1055c4;if(_0x2b834a[_0xc33e('0x3c')][_0xc33e('0x40')]&&!utils[_0xc33e('0x41')](_0x2b834a[_0xc33e('0x3c')][_0xc33e('0x40')])){throw new Error(_0xc33e('0x42'));}switch(_0x2b834a[_0xc33e('0x3c')][_0xc33e('0x40')]){case _0xc33e('0x43'):return db[_0xc33e('0x44')][_0xc33e('0x2e')]({'paused':0x0},{'where':{'UserId':_0x4032d['id']}})[_0xc33e('0x25')](function(){return db['MemberReport'][_0xc33e('0x29')]({'where':{'channel':_0x2b834a['body'][_0xc33e('0x40')],'membername':_0x4032d[_0xc33e('0x30')],'type':'PAUSE','exitAt':null}});})[_0xc33e('0x25')](function(_0x50c04f){if(_0x50c04f){return _0x50c04f[_0xc33e('0x2e')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'},{'individualHooks':!![]});}return null;})[_0xc33e('0x25')](function(){return _0x4032d['update']({'voicePause':![]});});case _0xc33e('0x45'):case'chat':case _0xc33e('0x46'):case'sms':case _0xc33e('0x47'):case _0xc33e('0x48'):return db['MemberReport'][_0xc33e('0x29')]({'where':{'channel':_0x2b834a['body']['channel'],'membername':_0x4032d[_0xc33e('0x30')],'type':_0xc33e('0x31'),'exitAt':null}})[_0xc33e('0x25')](function(_0x5335ea){return _0x5335ea[_0xc33e('0x2e')]({'exitAt':moment()[_0xc33e('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xc33e('0x49')},{'individualHooks':!![]});})[_0xc33e('0x25')](function(){var _0x54ca14={};_[_0xc33e('0x4a')](_0x54ca14,util[_0xc33e('0x33')](_0xc33e('0x4b'),_0x2b834a[_0xc33e('0x3c')][_0xc33e('0x40')],_0xc33e('0x4c')),![]);return _0x4032d['update'](_0x54ca14);});default:return db[_0xc33e('0x44')][_0xc33e('0x2e')]({'paused':0x0},{'where':{'UserId':_0x4032d['id']}})[_0xc33e('0x25')](function(){return db['MemberReport'][_0xc33e('0x1c')]({'where':{'membername':_0x4032d['name'],'type':_0xc33e('0x31'),'exitAt':null}});})[_0xc33e('0x25')](function(_0x3006a5){var _0x457923=[];_0x3006a5[_0xc33e('0x37')](function(_0x334d27){_0x457923['push'](_0x334d27['update']({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xc33e('0x49')}));});return BPromise[_0xc33e('0x4d')](_0x457923);})[_0xc33e('0x25')](function(){return _0x4032d[_0xc33e('0x2e')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xc33e('0x25')](function(_0x20c9d7){_0xd4c6e(_0x20c9d7);})[_0xc33e('0x1a')](function(_0x2f57dc){_0x181eb6(_0x5b0ee2['error'](0x1f4,_0x2f57dc[_0xc33e('0x18')]));});});};exports[_0xc33e('0x4e')]=function(_0x3f595f){var _0x444021=this;return new Promise(function(_0x2e2425,_0x422f89){var _0x50bb9c;return db[_0xc33e('0x28')]['findOne']({'where':_0x3f595f['options'][_0xc33e('0x1f')]||{},'attributes':['id','name']})[_0xc33e('0x25')](function(_0x4c7b0d){if(_0x4c7b0d){_0x50bb9c=_0x4c7b0d;return db[_0xc33e('0x44')][_0xc33e('0x4f')]({'where':{'membername':_0x50bb9c[_0xc33e('0x30')]},'individualHooks':!![]});}})['then'](function(){if(_0x50bb9c){return db['MemberReport'][_0xc33e('0x1c')]({'where':{'membername':_0x50bb9c[_0xc33e('0x30')],'exitAt':null}});}})[_0xc33e('0x25')](function(_0x2f4f42){if(_0x50bb9c){if(_0x2f4f42&&_0x2f4f42[_0xc33e('0x32')]){var _0x4e7f3b=[];_0x2f4f42['forEach'](function(_0x70e3de){_0x4e7f3b[_0xc33e('0x38')](_0x70e3de[_0xc33e('0x2e')]({'exitAt':moment()[_0xc33e('0x33')](_0xc33e('0x34'))}));});return BPromise[_0xc33e('0x4d')](_0x4e7f3b);}}})[_0xc33e('0x25')](function(){if(_0x50bb9c){return _0x50bb9c[_0xc33e('0x2e')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x287a21){_0x2e2425(_0x287a21);})[_0xc33e('0x1a')](function(_0x11b849){_0x422f89(_0x444021[_0xc33e('0x16')](0x1f4,_0x11b849[_0xc33e('0x18')]));});});};exports[_0xc33e('0x50')]=function(_0x3c262c){var _0x5de303=this;return new Promise(function(_0x15ac9d,_0x613c2){var _0x1d6ab5;var _0x809d28;var _0x531cca;var _0x58fac9;return db[_0xc33e('0x28')]['findOne']({'where':_0x3c262c['options'][_0xc33e('0x1f')]||{},'attributes':['id',_0xc33e('0x30'),_0xc33e('0x2b'),_0xc33e('0x51'),'phone',_0xc33e('0x2c'),_0xc33e('0x52'),'interface']})['then'](function(_0x448777){if(_0x448777){_0x1d6ab5=_0x448777;_0x58fac9=_0x3c262c[_0xc33e('0x3c')]['interface']?_0x3c262c['body']['interface']:util[_0xc33e('0x33')]('SIP/%s',_0x1d6ab5['name']);return db[_0xc33e('0x28')][_0xc33e('0x53')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x1d6ab5['id']}}});}})['then'](function(_0xf3dcb3){if(_0xf3dcb3){_0x531cca=_0xf3dcb3;return require(_0xc33e('0x54'))[_0xc33e('0x55')]();}})[_0xc33e('0x25')](function(_0x1f304f){if(_0x1f304f&&_0x1f304f[_0xc33e('0x56')]&&_0x531cca>=_0x1f304f[_0xc33e('0x56')]){throw new Error(_0xc33e('0x57'));}})[_0xc33e('0x25')](function(){if(_0x1d6ab5){return db[_0xc33e('0x44')][_0xc33e('0x4f')]({'where':{'membername':_0x1d6ab5[_0xc33e('0x30')]},'individualHooks':!![]});}})[_0xc33e('0x25')](function(){if(_0x1d6ab5){return _0x1d6ab5[_0xc33e('0x58')]({'raw':!![]});}})[_0xc33e('0x25')](function(_0xfa9d02){if(_0x1d6ab5){if(_0xfa9d02){var _0x2fdfa5=[];_0x809d28=_0xfa9d02;if(_0x809d28['length']){for(var _0x2f96a1=0x0;_0x2f96a1<_0x809d28[_0xc33e('0x32')];_0x2f96a1++){_0x2fdfa5[_0xc33e('0x38')](db[_0xc33e('0x44')]['upsert']({'membername':_0x1d6ab5['name'],'UserId':_0x1d6ab5['id'],'queue_name':_0x809d28[_0x2f96a1][_0xc33e('0x30')],'VoiceQueueId':_0x809d28[_0x2f96a1]['id'],'interface':_0x58fac9,'paused':_0x1d6ab5[_0xc33e('0x52')]||![],'penalty':_0x809d28[_0x2f96a1]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x2fdfa5);}}}})[_0xc33e('0x25')](function(){if(_0x1d6ab5){return db[_0xc33e('0x2f')][_0xc33e('0x1c')]({'where':{'membername':_0x1d6ab5['name'],'exitAt':null}});}})['then'](function(_0x26a8ea){if(_0x1d6ab5){if(_0x26a8ea&&_0x26a8ea['length']){var _0x4695ce=[];_0x26a8ea[_0xc33e('0x37')](function(_0x5124fa){_0x4695ce[_0xc33e('0x38')](_0x5124fa[_0xc33e('0x2e')]({'exitAt':moment()[_0xc33e('0x33')](_0xc33e('0x34'))}));});return BPromise[_0xc33e('0x4d')](_0x4695ce);}}})['then'](function(_0x595a6d){if(_0x1d6ab5){var _0x712257=[];var _0x2a46f9=[];var _0x3cf6eb=utils[_0xc33e('0x36')]();var _0xeaf76d={'membername':_0x1d6ab5[_0xc33e('0x30')],'interface':_0x58fac9,'enterAt':moment()[_0xc33e('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x1d6ab5['role'],'internal':_0x1d6ab5[_0xc33e('0x2c')]};_0x3cf6eb[_0xc33e('0x37')](function(_0x2abfd6){_0x712257[_0xc33e('0x38')](_[_0xc33e('0x59')]({'channel':_0x2abfd6,'type':'LOGIN','data1':'callysquare','data2':_0x58fac9},_0xeaf76d));if(_0x1d6ab5[_0xc33e('0x52')]){_0x2a46f9[_0xc33e('0x38')](_[_0xc33e('0x59')]({'channel':_0x2abfd6,'type':'PAUSE','data1':'LOGININPAUSE'},_0xeaf76d));}});return db[_0xc33e('0x2f')][_0xc33e('0x3d')](_0x712257['concat'](_0x2a46f9),{'individualHooks':!![]});}})[_0xc33e('0x25')](function(){if(_0x1d6ab5){return _0x1d6ab5[_0xc33e('0x2e')]({'online':!![],'lastLoginAt':moment()[_0xc33e('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x1d6ab5['loginInPause']||![],'mailPause':_0x1d6ab5[_0xc33e('0x52')]||![],'chatPause':_0x1d6ab5[_0xc33e('0x52')]||![],'faxPause':_0x1d6ab5[_0xc33e('0x52')]||![],'smsPause':_0x1d6ab5[_0xc33e('0x52')]||![],'openchannelPause':_0x1d6ab5['loginInPause']||![],'pauseType':_0x1d6ab5[_0xc33e('0x52')]?_0xc33e('0x5a'):null,'lastPauseAt':moment()[_0xc33e('0x33')](_0xc33e('0x34')),'interface':_0x58fac9});}})['then'](function(_0x219dfc){_0x15ac9d(_0x219dfc);})[_0xc33e('0x1a')](function(_0x51eb81){_0x613c2(_0x5de303[_0xc33e('0x16')](0x1f4,_0x51eb81[_0xc33e('0x18')]));});});};
\ No newline at end of file
+var _0xfe52=['MemberReport','bulkCreate','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','voice','system','mail','chat','sms','openchannel','whatsapp','%s%s','Pause','push','LogoutUser','destroy','all','LoginUser','mobile','phone','count','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','LOGIN','callysquare','loginInPause','LOGININPAUSE','concat','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./user.socket','register','request','then','info','User,\x20%s,\x20%s','request\x20sent','User,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetUser','User','options','raw','where','include','map','model','attributes','debug','stringify','ShowUser','find','PauseUser','name','role','internal','UserVoiceQueueRt','update','findAll','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','isNil','interface','SIP/%s','format','body','type','uniqueid'];(function(_0x4cb687,_0x363f85){var _0x3a97b2=function(_0x5299f4){while(--_0x5299f4){_0x4cb687['push'](_0x4cb687['shift']());}};_0x3a97b2(++_0x363f85);}(_0xfe52,0x144));var _0x2fe5=function(_0x5f2370,_0xda035){_0x5f2370=_0x5f2370-0x0;var _0x34f96=_0xfe52[_0x5f2370];return _0x34f96;};'use strict';var _=require(_0x2fe5('0x0'));var util=require(_0x2fe5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2fe5('0x2'));var fs=require('fs');var Redis=require(_0x2fe5('0x3'));var db=require(_0x2fe5('0x4'))['db'];var utils=require(_0x2fe5('0x5'));var logger=require(_0x2fe5('0x6'))(_0x2fe5('0x7'));var config=require(_0x2fe5('0x8'));var jayson=require(_0x2fe5('0x9'));var client=jayson[_0x2fe5('0xa')][_0x2fe5('0xb')]({'port':0x232a});config[_0x2fe5('0xc')]=_[_0x2fe5('0xd')](config[_0x2fe5('0xc')],{'host':_0x2fe5('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2fe5('0xc')]));require(_0x2fe5('0xf'))[_0x2fe5('0x10')](socket);function respondWithRpcPromise(_0x30c9db,_0x261535,_0x46d77b){return new BPromise(function(_0x53c6ea,_0x13c07e){return client[_0x2fe5('0x11')](_0x30c9db,_0x46d77b)[_0x2fe5('0x12')](function(_0x16e8a1){logger[_0x2fe5('0x13')](_0x2fe5('0x14'),_0x261535,_0x2fe5('0x15'));logger['debug'](_0x2fe5('0x16'),_0x261535,_0x2fe5('0x15'),JSON['stringify'](_0x16e8a1));if(_0x16e8a1[_0x2fe5('0x17')]){if(_0x16e8a1['error']['code']===0x1f4){logger[_0x2fe5('0x17')](_0x2fe5('0x14'),_0x261535,_0x16e8a1['error'][_0x2fe5('0x18')]);return _0x13c07e(_0x16e8a1['error'][_0x2fe5('0x18')]);}logger['error'](_0x2fe5('0x14'),_0x261535,_0x16e8a1['error'][_0x2fe5('0x18')]);return _0x53c6ea(_0x16e8a1[_0x2fe5('0x17')][_0x2fe5('0x18')]);}else{logger[_0x2fe5('0x13')](_0x2fe5('0x14'),_0x261535,'request\x20sent');_0x53c6ea(_0x16e8a1[_0x2fe5('0x19')][_0x2fe5('0x18')]);}})[_0x2fe5('0x1a')](function(_0x49807c){logger[_0x2fe5('0x17')](_0x2fe5('0x14'),_0x261535,_0x49807c);_0x13c07e(_0x49807c);});});}exports[_0x2fe5('0x1b')]=function(_0x1e727){var _0x49d048=this;return new Promise(function(_0x2c6a55,_0x4378ee){return db[_0x2fe5('0x1c')]['findAll']({'raw':_0x1e727['options']?_0x1e727[_0x2fe5('0x1d')][_0x2fe5('0x1e')]===undefined?!![]:![]:!![],'where':_0x1e727['options']?_0x1e727[_0x2fe5('0x1d')][_0x2fe5('0x1f')]||null:null,'attributes':_0x1e727[_0x2fe5('0x1d')]?_0x1e727['options']['attributes']||null:null,'limit':_0x1e727[_0x2fe5('0x1d')]?_0x1e727[_0x2fe5('0x1d')]['limit']||null:null,'include':_0x1e727[_0x2fe5('0x1d')]?_0x1e727[_0x2fe5('0x1d')][_0x2fe5('0x20')]?_[_0x2fe5('0x21')](_0x1e727[_0x2fe5('0x1d')]['include'],function(_0x3d797c){return{'model':db[_0x3d797c[_0x2fe5('0x22')]],'as':_0x3d797c['as'],'attributes':_0x3d797c[_0x2fe5('0x23')],'include':_0x3d797c['include']?_[_0x2fe5('0x21')](_0x3d797c[_0x2fe5('0x20')],function(_0x163b6f){return{'model':db[_0x163b6f[_0x2fe5('0x22')]],'as':_0x163b6f['as'],'attributes':_0x163b6f[_0x2fe5('0x23')],'include':_0x163b6f[_0x2fe5('0x20')]?_[_0x2fe5('0x21')](_0x163b6f[_0x2fe5('0x20')],function(_0x2a2634){return{'model':db[_0x2a2634[_0x2fe5('0x22')]],'as':_0x2a2634['as'],'attributes':_0x2a2634[_0x2fe5('0x23')]};}):[]};}):[]};}):[]:[]})[_0x2fe5('0x12')](function(_0x4e5718){logger[_0x2fe5('0x13')](_0x2fe5('0x1b'),_0x1e727);logger[_0x2fe5('0x24')](_0x2fe5('0x1b'),_0x1e727,JSON[_0x2fe5('0x25')](_0x4e5718));_0x2c6a55(_0x4e5718);})[_0x2fe5('0x1a')](function(_0x231637){logger[_0x2fe5('0x17')](_0x2fe5('0x1b'),_0x231637[_0x2fe5('0x18')],_0x1e727);_0x4378ee(_0x49d048[_0x2fe5('0x17')](0x1f4,_0x231637[_0x2fe5('0x18')]));});});};exports[_0x2fe5('0x26')]=function(_0x45a8c5){var _0x343d0f=this;return new Promise(function(_0x119ed9,_0x288871){return db[_0x2fe5('0x1c')][_0x2fe5('0x27')]({'raw':_0x45a8c5[_0x2fe5('0x1d')]?_0x45a8c5[_0x2fe5('0x1d')][_0x2fe5('0x1e')]===undefined?!![]:![]:!![],'where':_0x45a8c5[_0x2fe5('0x1d')]?_0x45a8c5[_0x2fe5('0x1d')][_0x2fe5('0x1f')]||null:null,'attributes':_0x45a8c5['options']?_0x45a8c5[_0x2fe5('0x1d')]['attributes']||null:null,'include':_0x45a8c5[_0x2fe5('0x1d')]?_0x45a8c5['options'][_0x2fe5('0x20')]?_['map'](_0x45a8c5[_0x2fe5('0x1d')][_0x2fe5('0x20')],function(_0x12766f){return{'model':db[_0x12766f['model']],'as':_0x12766f['as'],'attributes':_0x12766f['attributes'],'include':_0x12766f[_0x2fe5('0x20')]?_['map'](_0x12766f[_0x2fe5('0x20')],function(_0x3792c7){return{'model':db[_0x3792c7[_0x2fe5('0x22')]],'as':_0x3792c7['as'],'attributes':_0x3792c7[_0x2fe5('0x23')],'include':_0x3792c7['include']?_[_0x2fe5('0x21')](_0x3792c7[_0x2fe5('0x20')],function(_0x13ed52){return{'model':db[_0x13ed52[_0x2fe5('0x22')]],'as':_0x13ed52['as'],'attributes':_0x13ed52[_0x2fe5('0x23')]};}):[]};}):[]};}):[]:[]})[_0x2fe5('0x12')](function(_0x464106){logger[_0x2fe5('0x13')](_0x2fe5('0x26'),_0x45a8c5);logger[_0x2fe5('0x24')](_0x2fe5('0x26'),_0x45a8c5,JSON['stringify'](_0x464106));_0x119ed9(_0x464106);})[_0x2fe5('0x1a')](function(_0x1c341e){logger[_0x2fe5('0x17')](_0x2fe5('0x26'),_0x1c341e[_0x2fe5('0x18')],_0x45a8c5);_0x288871(_0x343d0f['error'](0x1f4,_0x1c341e[_0x2fe5('0x18')]));});});};exports[_0x2fe5('0x28')]=function(_0x46b6c5){var _0x51ae60=this;return new Promise(function(_0x451584,_0x497276){var _0x32f36b;return db[_0x2fe5('0x1c')][_0x2fe5('0x27')]({'where':_0x46b6c5[_0x2fe5('0x1d')]['where']||{},'attributes':['id',_0x2fe5('0x29'),_0x2fe5('0x2a'),_0x2fe5('0x2b'),'interface']})[_0x2fe5('0x12')](function(_0x4dd831){if(_0x4dd831){_0x32f36b=_0x4dd831;return db[_0x2fe5('0x2c')][_0x2fe5('0x2d')]({'paused':0x1},{'where':{'UserId':_0x32f36b['id']},'individualHooks':!![]});}})['then'](function(){if(_0x32f36b){return db['MemberReport'][_0x2fe5('0x2e')]({'where':{'membername':_0x32f36b['name'],'type':_0x2fe5('0x2f'),'exitAt':null}});}})['then'](function(_0x4cd4a8){if(_0x32f36b){if(_0x4cd4a8&&_0x4cd4a8[_0x2fe5('0x30')]){var _0x2312e4=moment()['format'](_0x2fe5('0x31'));for(var _0x3f39be=0x0,_0x607ec6=_0x4cd4a8[_0x2fe5('0x30')];_0x3f39be<_0x607ec6;_0x3f39be++){_0x4cd4a8[_0x3f39be][_0x2fe5('0x32')]({'exitAt':_0x2312e4});}}}})[_0x2fe5('0x12')](function(){if(_0x32f36b){var _0x360517=[];var _0x55f76c=utils[_0x2fe5('0x33')]();_0x55f76c[_0x2fe5('0x34')](function(_0x31d8ec){_0x360517['push']({'channel':_0x31d8ec,'membername':_0x32f36b[_0x2fe5('0x29')],'interface':_[_0x2fe5('0x35')](_0x32f36b[_0x2fe5('0x36')])?util['format'](_0x2fe5('0x37'),_0x32f36b[_0x2fe5('0x29')]):_0x32f36b['interface'],'type':_0x2fe5('0x2f'),'enterAt':moment()[_0x2fe5('0x38')](_0x2fe5('0x31')),'data1':_0x46b6c5[_0x2fe5('0x39')][_0x2fe5('0x3a')]||'DEFAULT\x20PAUSE','role':_0x32f36b[_0x2fe5('0x2a')],'internal':_0x32f36b[_0x2fe5('0x2b')],'uniqueid':_0x46b6c5[_0x2fe5('0x39')][_0x2fe5('0x3b')]||null});});return db[_0x2fe5('0x3c')][_0x2fe5('0x3d')](_0x360517,{'individualHooks':!![]});}})[_0x2fe5('0x12')](function(){if(_0x32f36b){return _0x32f36b[_0x2fe5('0x2d')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x46b6c5[_0x2fe5('0x39')][_0x2fe5('0x3a')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0x2fe5('0x31'))});}})[_0x2fe5('0x12')](function(_0x1cd399){_0x451584(_0x1cd399);})[_0x2fe5('0x1a')](function(_0x4257f2){_0x497276(_0x51ae60[_0x2fe5('0x17')](0x1f4,_0x4257f2[_0x2fe5('0x18')]));});});};exports[_0x2fe5('0x3e')]=function(_0x214c63){var _0xc10d56=this;return new Promise(function(_0x3fc80c,_0x4e6412){var _0x142b8a;return db['User'][_0x2fe5('0x3f')]({'where':_0x214c63[_0x2fe5('0x1d')][_0x2fe5('0x1f')]||{},'attributes':['id',_0x2fe5('0x29')]})[_0x2fe5('0x12')](function(_0x594de5){if(_0x594de5){_0x142b8a=_0x594de5;if(_0x214c63[_0x2fe5('0x39')][_0x2fe5('0x40')]&&!utils[_0x2fe5('0x41')](_0x214c63[_0x2fe5('0x39')][_0x2fe5('0x40')])){throw new Error(_0x2fe5('0x42'));}switch(_0x214c63['body']['channel']){case _0x2fe5('0x43'):return db[_0x2fe5('0x2c')][_0x2fe5('0x2d')]({'paused':0x0},{'where':{'UserId':_0x142b8a['id']}})['then'](function(){return db[_0x2fe5('0x3c')][_0x2fe5('0x27')]({'where':{'channel':_0x214c63['body']['channel'],'membername':_0x142b8a[_0x2fe5('0x29')],'type':_0x2fe5('0x2f'),'exitAt':null}});})[_0x2fe5('0x12')](function(_0x333b0e){if(_0x333b0e){return _0x333b0e[_0x2fe5('0x2d')]({'exitAt':moment()[_0x2fe5('0x38')](_0x2fe5('0x31')),'data2':_0x2fe5('0x44')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x142b8a[_0x2fe5('0x2d')]({'voicePause':![]});});case _0x2fe5('0x45'):case _0x2fe5('0x46'):case'fax':case _0x2fe5('0x47'):case _0x2fe5('0x48'):case _0x2fe5('0x49'):return db[_0x2fe5('0x3c')][_0x2fe5('0x27')]({'where':{'channel':_0x214c63['body'][_0x2fe5('0x40')],'membername':_0x142b8a[_0x2fe5('0x29')],'type':_0x2fe5('0x2f'),'exitAt':null}})[_0x2fe5('0x12')](function(_0x4a56c3){return _0x4a56c3['update']({'exitAt':moment()['format'](_0x2fe5('0x31')),'data2':_0x2fe5('0x44')},{'individualHooks':!![]});})[_0x2fe5('0x12')](function(){var _0x42082f={};_['set'](_0x42082f,util[_0x2fe5('0x38')](_0x2fe5('0x4a'),_0x214c63[_0x2fe5('0x39')][_0x2fe5('0x40')],_0x2fe5('0x4b')),![]);return _0x142b8a[_0x2fe5('0x2d')](_0x42082f);});default:return db[_0x2fe5('0x2c')][_0x2fe5('0x2d')]({'paused':0x0},{'where':{'UserId':_0x142b8a['id']}})[_0x2fe5('0x12')](function(){return db[_0x2fe5('0x3c')][_0x2fe5('0x2e')]({'where':{'membername':_0x142b8a[_0x2fe5('0x29')],'type':_0x2fe5('0x2f'),'exitAt':null}});})[_0x2fe5('0x12')](function(_0x5ced7c){var _0x41603e=[];_0x5ced7c['forEach'](function(_0x1cf478){_0x41603e[_0x2fe5('0x4c')](_0x1cf478[_0x2fe5('0x2d')]({'exitAt':moment()[_0x2fe5('0x38')](_0x2fe5('0x31')),'data2':_0x2fe5('0x44')}));});return BPromise['all'](_0x41603e);})['then'](function(){return _0x142b8a[_0x2fe5('0x2d')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x281d1b){_0x3fc80c(_0x281d1b);})[_0x2fe5('0x1a')](function(_0x2e8aae){_0x4e6412(_0xc10d56[_0x2fe5('0x17')](0x1f4,_0x2e8aae[_0x2fe5('0x18')]));});});};exports[_0x2fe5('0x4d')]=function(_0x56e3e9){var _0x1569e1=this;return new Promise(function(_0x3bb81b,_0x147dd7){var _0x2b4588;return db[_0x2fe5('0x1c')]['findOne']({'where':_0x56e3e9[_0x2fe5('0x1d')][_0x2fe5('0x1f')]||{},'attributes':['id',_0x2fe5('0x29')]})[_0x2fe5('0x12')](function(_0x3ef0c0){if(_0x3ef0c0){_0x2b4588=_0x3ef0c0;return db[_0x2fe5('0x2c')][_0x2fe5('0x4e')]({'where':{'membername':_0x2b4588[_0x2fe5('0x29')]},'individualHooks':!![]});}})['then'](function(){if(_0x2b4588){return db[_0x2fe5('0x3c')][_0x2fe5('0x2e')]({'where':{'membername':_0x2b4588[_0x2fe5('0x29')],'exitAt':null}});}})[_0x2fe5('0x12')](function(_0x40e66f){if(_0x2b4588){if(_0x40e66f&&_0x40e66f[_0x2fe5('0x30')]){var _0x32dbb6=[];_0x40e66f[_0x2fe5('0x34')](function(_0x2c8f8c){_0x32dbb6[_0x2fe5('0x4c')](_0x2c8f8c[_0x2fe5('0x2d')]({'exitAt':moment()[_0x2fe5('0x38')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x2fe5('0x4f')](_0x32dbb6);}}})[_0x2fe5('0x12')](function(){if(_0x2b4588){return _0x2b4588['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x2fe5('0x12')](function(_0x2e61b1){_0x3bb81b(_0x2e61b1);})[_0x2fe5('0x1a')](function(_0x4a9433){_0x147dd7(_0x1569e1['error'](0x1f4,_0x4a9433[_0x2fe5('0x18')]));});});};exports[_0x2fe5('0x50')]=function(_0xa53111){var _0xc2e68e=this;return new Promise(function(_0x1833f0,_0x1b54fd){var _0x1f0639;var _0x1a23b7;var _0x111648;var _0x12911e;return db['User'][_0x2fe5('0x3f')]({'where':_0xa53111['options'][_0x2fe5('0x1f')]||{},'attributes':['id','name','role',_0x2fe5('0x51'),_0x2fe5('0x52'),'internal','loginInPause',_0x2fe5('0x36')]})[_0x2fe5('0x12')](function(_0x31e927){if(_0x31e927){_0x1f0639=_0x31e927;_0x12911e=_0xa53111['body'][_0x2fe5('0x36')]?_0xa53111[_0x2fe5('0x39')]['interface']:util['format'](_0x2fe5('0x37'),_0x1f0639[_0x2fe5('0x29')]);return db['User'][_0x2fe5('0x53')]({'where':{'role':_0x2fe5('0x54'),'online':!![],'id':{'$ne':_0x1f0639['id']}}});}})[_0x2fe5('0x12')](function(_0xb10083){if(_0xb10083){_0x111648=_0xb10083;return require('../../config/license/util')[_0x2fe5('0x55')]();}})[_0x2fe5('0x12')](function(_0xf6d655){if(_0xf6d655&&_0xf6d655['agents']&&_0x111648>=_0xf6d655[_0x2fe5('0x56')]){throw new Error(_0x2fe5('0x57'));}})[_0x2fe5('0x12')](function(){if(_0x1f0639){return db[_0x2fe5('0x2c')]['destroy']({'where':{'membername':_0x1f0639[_0x2fe5('0x29')]},'individualHooks':!![]});}})[_0x2fe5('0x12')](function(){if(_0x1f0639){return _0x1f0639[_0x2fe5('0x58')]({'raw':!![]});}})[_0x2fe5('0x12')](function(_0x1a063a){if(_0x1f0639){if(_0x1a063a){var _0x1d35d7=[];_0x1a23b7=_0x1a063a;if(_0x1a23b7[_0x2fe5('0x30')]){for(var _0x31ae4f=0x0;_0x31ae4f<_0x1a23b7[_0x2fe5('0x30')];_0x31ae4f++){_0x1d35d7[_0x2fe5('0x4c')](db[_0x2fe5('0x2c')][_0x2fe5('0x59')]({'membername':_0x1f0639[_0x2fe5('0x29')],'UserId':_0x1f0639['id'],'queue_name':_0x1a23b7[_0x31ae4f][_0x2fe5('0x29')],'VoiceQueueId':_0x1a23b7[_0x31ae4f]['id'],'interface':_0x12911e,'paused':_0x1f0639['loginInPause']||![],'penalty':_0x1a23b7[_0x31ae4f][_0x2fe5('0x5a')]||0x0}));}return BPromise[_0x2fe5('0x4f')](_0x1d35d7);}}}})[_0x2fe5('0x12')](function(){if(_0x1f0639){return db['MemberReport']['findAll']({'where':{'membername':_0x1f0639[_0x2fe5('0x29')],'exitAt':null}});}})[_0x2fe5('0x12')](function(_0x3a3c6f){if(_0x1f0639){if(_0x3a3c6f&&_0x3a3c6f['length']){var _0x5a98b9=[];_0x3a3c6f[_0x2fe5('0x34')](function(_0x598a4f){_0x5a98b9[_0x2fe5('0x4c')](_0x598a4f[_0x2fe5('0x2d')]({'exitAt':moment()[_0x2fe5('0x38')](_0x2fe5('0x31'))}));});return BPromise[_0x2fe5('0x4f')](_0x5a98b9);}}})['then'](function(_0x4baabc){if(_0x1f0639){var _0x543c47=[];var _0x318d8f=[];var _0x1e7f2a=utils[_0x2fe5('0x33')]();var _0x2e7d2b={'membername':_0x1f0639['name'],'interface':_0x12911e,'enterAt':moment()[_0x2fe5('0x38')](_0x2fe5('0x31')),'role':_0x1f0639[_0x2fe5('0x2a')],'internal':_0x1f0639['internal']};_0x1e7f2a[_0x2fe5('0x34')](function(_0x2f9c8f){_0x543c47['push'](_['merge']({'channel':_0x2f9c8f,'type':_0x2fe5('0x5b'),'data1':_0x2fe5('0x5c'),'data2':_0x12911e},_0x2e7d2b));if(_0x1f0639[_0x2fe5('0x5d')]){_0x318d8f[_0x2fe5('0x4c')](_['merge']({'channel':_0x2f9c8f,'type':'PAUSE','data1':_0x2fe5('0x5e')},_0x2e7d2b));}});return db['MemberReport'][_0x2fe5('0x3d')](_0x543c47[_0x2fe5('0x5f')](_0x318d8f),{'individualHooks':!![]});}})['then'](function(){if(_0x1f0639){return _0x1f0639[_0x2fe5('0x2d')]({'online':!![],'lastLoginAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x1f0639[_0x2fe5('0x5d')]||![],'mailPause':_0x1f0639[_0x2fe5('0x5d')]||![],'chatPause':_0x1f0639[_0x2fe5('0x5d')]||![],'faxPause':_0x1f0639[_0x2fe5('0x5d')]||![],'smsPause':_0x1f0639[_0x2fe5('0x5d')]||![],'openchannelPause':_0x1f0639[_0x2fe5('0x5d')]||![],'pauseType':_0x1f0639[_0x2fe5('0x5d')]?_0x2fe5('0x5e'):null,'lastPauseAt':moment()[_0x2fe5('0x38')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x12911e});}})['then'](function(_0x244a21){_0x1833f0(_0x244a21);})[_0x2fe5('0x1a')](function(_0x10e9a5){_0x1b54fd(_0xc2e68e[_0x2fe5('0x17')](0x1f4,_0x10e9a5[_0x2fe5('0x18')]));});});};
\ No newline at end of file
index 3a54cdb..86f9abd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x560e=['emit','register','save'];(function(_0x37e81f,_0x4de6ec){var _0x1fade0=function(_0x2eddea){while(--_0x2eddea){_0x37e81f['push'](_0x37e81f['shift']());}};_0x1fade0(++_0x4de6ec);}(_0x560e,0x110));var _0xe560=function(_0x124ca4,_0x4f3d9c){_0x124ca4=_0x124ca4-0x0;var _0x5e0c15=_0x560e[_0x124ca4];return _0x5e0c15;};'use strict';var UserEvents=require('./user.events');var events=[_0xe560('0x0'),'remove','update'];function createListener(_0x2a1013,_0x1279d9){return function(_0xe1ec32){_0x1279d9[_0xe560('0x1')](_0x2a1013,_0xe1ec32);};}function removeListener(_0x17b5e3,_0x1a7d9a){return function(){UserEvents['removeListener'](_0x17b5e3,_0x1a7d9a);};}exports[_0xe560('0x2')]=function(_0x5cfd3e){for(var _0x3f922a=0x0,_0x2a54e5=events['length'];_0x3f922a<_0x2a54e5;_0x3f922a++){var _0x4b657d=events[_0x3f922a];var _0x5cfadf=createListener('user:'+_0x4b657d,_0x5cfd3e);UserEvents['on'](_0x4b657d,_0x5cfadf);}};
\ No newline at end of file
+var _0x0eee=['./user.events','save','remove','update','register','length','user:'];(function(_0x10464f,_0x5e5e6f){var _0x416400=function(_0x2581e4){while(--_0x2581e4){_0x10464f['push'](_0x10464f['shift']());}};_0x416400(++_0x5e5e6f);}(_0x0eee,0xee));var _0xe0ee=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x0eee[_0xefd519];return _0x4bb882;};'use strict';var UserEvents=require(_0xe0ee('0x0'));var events=[_0xe0ee('0x1'),_0xe0ee('0x2'),_0xe0ee('0x3')];function createListener(_0x4d09f3,_0x41d372){return function(_0x339f21){_0x41d372['emit'](_0x4d09f3,_0x339f21);};}function removeListener(_0x3d25a9,_0x362d82){return function(){UserEvents['removeListener'](_0x3d25a9,_0x362d82);};}exports[_0xe0ee('0x4')]=function(_0x45a4be){for(var _0x21ac8a=0x0,_0x1b56da=events[_0xe0ee('0x5')];_0x21ac8a<_0x1b56da;_0x21ac8a++){var _0x27abf1=events[_0x21ac8a];var _0x5cb199=createListener(_0xe0ee('0x6')+_0x27abf1,_0x45a4be);UserEvents['on'](_0x27abf1,_0x5cb199);}};
\ No newline at end of file
index 922c305..ceffa26 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(_0x4eb057,_0x5acd49){var _0x256994=function(_0x4c77b7){while(--_0x4c77b7){_0x4eb057['push'](_0x4eb057['shift']());}};_0x256994(++_0x5acd49);}(_0xe706,0xa3));var _0x6e70=function(_0x171ac7,_0x339c8d){_0x171ac7=_0x171ac7-0x0;var _0x94478d=_0xe706[_0x171ac7];return _0x94478d;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x12e898,_0x1ef073){var _0x190631=function(_0x1f193d){while(--_0x1f193d){_0x12e898['push'](_0x12e898['shift']());}};_0x190631(++_0x1ef073);}(_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 afa16fa..6f31c73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7a2=['INTEGER','sequelize','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xd7a2,0x18a));var _0x2d7a=function(_0x55ff01,_0xc96aa7){_0x55ff01=_0x55ff01-0x0;var _0x41bd68=_0xd7a2[_0x55ff01];return _0x41bd68;};'use strict';var Sequelize=require(_0x2d7a('0x0'));module[_0x2d7a('0x1')]={'penalty':{'type':Sequelize[_0x2d7a('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7b3a=['INTEGER','sequelize'];(function(_0x131b07,_0x4d1002){var _0x1288e9=function(_0x90996e){while(--_0x90996e){_0x131b07['push'](_0x131b07['shift']());}};_0x1288e9(++_0x4d1002);}(_0x7b3a,0x93));var _0xa7b3=function(_0x16fb37,_0x45b32f){_0x16fb37=_0x16fb37-0x0;var _0x49da52=_0x7b3a[_0x16fb37];return _0x49da52;};'use strict';var Sequelize=require(_0xa7b3('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xa7b3('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 7bf70af..162237b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x638b=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x638b,0x1e0));var _0xb638=function(_0x29aeeb,_0x1e45db){_0x29aeeb=_0x29aeeb-0x0;var _0x2c23f1=_0x638b[_0x29aeeb];return _0x2c23f1;};'use strict';var _=require(_0xb638('0x0'));var util=require(_0xb638('0x1'));var logger=require(_0xb638('0x2'))('api');var moment=require(_0xb638('0x3'));var BPromise=require(_0xb638('0x4'));var rp=require(_0xb638('0x5'));var fs=require('fs');var path=require(_0xb638('0x6'));var rimraf=require('rimraf');var config=require(_0xb638('0x7'));var attributes=require(_0xb638('0x8'));module[_0xb638('0x9')]=function(_0x3b808f,_0x4fe3b7){return _0x3b808f[_0xb638('0xa')](_0xb638('0xb'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2776=['./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x36e9ea,_0x17c0c8){var _0x5afe8b=function(_0x3f7d11){while(--_0x3f7d11){_0x36e9ea['push'](_0x36e9ea['shift']());}};_0x5afe8b(++_0x17c0c8);}(_0x2776,0x10f));var _0x6277=function(_0x1dc8f4,_0x283f3b){_0x1dc8f4=_0x1dc8f4-0x0;var _0x4b1a95=_0x2776[_0x1dc8f4];return _0x4b1a95;};'use strict';var _=require(_0x6277('0x0'));var util=require(_0x6277('0x1'));var logger=require(_0x6277('0x2'))(_0x6277('0x3'));var moment=require(_0x6277('0x4'));var BPromise=require(_0x6277('0x5'));var rp=require(_0x6277('0x6'));var fs=require('fs');var path=require(_0x6277('0x7'));var rimraf=require('rimraf');var config=require(_0x6277('0x8'));var attributes=require(_0x6277('0x9'));module[_0x6277('0xa')]=function(_0xdafbe6,_0x2654a6){return _0xdafbe6[_0x6277('0xb')](_0x6277('0xc'),attributes,{'tableName':_0x6277('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8fd1540..1e9e70e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7746=['rpc','client','http','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0xd02ab7,_0x3bd888){var _0x4c5283=function(_0x4a5b10){while(--_0x4a5b10){_0xd02ab7['push'](_0xd02ab7['shift']());}};_0x4c5283(++_0x3bd888);}(_0x7746,0x1ad));var _0x6774=function(_0x40d9de,_0x2aca67){_0x40d9de=_0x40d9de-0x0;var _0x2e1f6d=_0x7746[_0x40d9de];return _0x2e1f6d;};'use strict';var _=require(_0x6774('0x0'));var util=require(_0x6774('0x1'));var moment=require(_0x6774('0x2'));var BPromise=require('bluebird');var rs=require(_0x6774('0x3'));var fs=require('fs');var Redis=require(_0x6774('0x4'));var db=require(_0x6774('0x5'))['db'];var utils=require(_0x6774('0x6'));var logger=require(_0x6774('0x7'))(_0x6774('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6774('0x9')][_0x6774('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x53e676,_0x5b94f1,_0x4ed419){return new BPromise(function(_0x28f0b3,_0x14850b){return client[_0x6774('0xb')](_0x53e676,_0x4ed419)[_0x6774('0xc')](function(_0x448fc3){logger[_0x6774('0xd')](_0x6774('0xe'),_0x5b94f1,_0x6774('0xf'));logger['debug'](_0x6774('0x10'),_0x5b94f1,_0x6774('0xf'),JSON[_0x6774('0x11')](_0x448fc3));if(_0x448fc3[_0x6774('0x12')]){if(_0x448fc3[_0x6774('0x12')][_0x6774('0x13')]===0x1f4){logger[_0x6774('0x12')](_0x6774('0xe'),_0x5b94f1,_0x448fc3[_0x6774('0x12')]['message']);return _0x14850b(_0x448fc3[_0x6774('0x12')]['message']);}logger[_0x6774('0x12')](_0x6774('0xe'),_0x5b94f1,_0x448fc3[_0x6774('0x12')][_0x6774('0x14')]);return _0x28f0b3(_0x448fc3[_0x6774('0x12')][_0x6774('0x14')]);}else{logger[_0x6774('0xd')]('UserChatQueue,\x20%s,\x20%s',_0x5b94f1,_0x6774('0xf'));_0x28f0b3(_0x448fc3[_0x6774('0x15')][_0x6774('0x14')]);}})[_0x6774('0x16')](function(_0x34678c){logger[_0x6774('0x12')]('UserChatQueue,\x20%s,\x20%s',_0x5b94f1,_0x34678c);_0x14850b(_0x34678c);});});}
\ No newline at end of file
+var _0x7965=['UserChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','util','moment','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','then','UserChatQueue,\x20%s,\x20%s','debug'];(function(_0x1ec811,_0x250275){var _0x1f5d86=function(_0x16b679){while(--_0x16b679){_0x1ec811['push'](_0x1ec811['shift']());}};_0x1f5d86(++_0x250275);}(_0x7965,0x1ab));var _0x5796=function(_0x22e9fe,_0x3d019f){_0x22e9fe=_0x22e9fe-0x0;var _0x47cd19=_0x7965[_0x22e9fe];return _0x47cd19;};'use strict';var _=require('lodash');var util=require(_0x5796('0x0'));var moment=require(_0x5796('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5796('0x2'));var db=require(_0x5796('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x5796('0x4'));var jayson=require(_0x5796('0x5'));var client=jayson[_0x5796('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0xbfc25d,_0x245766,_0x440185){return new BPromise(function(_0x3118e8,_0x1062c0){return client['request'](_0xbfc25d,_0x440185)[_0x5796('0x7')](function(_0x15070a){logger['info'](_0x5796('0x8'),_0x245766,'request\x20sent');logger[_0x5796('0x9')](_0x5796('0xa'),_0x245766,_0x5796('0xb'),JSON[_0x5796('0xc')](_0x15070a));if(_0x15070a[_0x5796('0xd')]){if(_0x15070a[_0x5796('0xd')][_0x5796('0xe')]===0x1f4){logger[_0x5796('0xd')](_0x5796('0x8'),_0x245766,_0x15070a[_0x5796('0xd')][_0x5796('0xf')]);return _0x1062c0(_0x15070a[_0x5796('0xd')][_0x5796('0xf')]);}logger['error'](_0x5796('0x8'),_0x245766,_0x15070a['error'][_0x5796('0xf')]);return _0x3118e8(_0x15070a['error']['message']);}else{logger[_0x5796('0x10')]('UserChatQueue,\x20%s,\x20%s',_0x245766,_0x5796('0xb'));_0x3118e8(_0x15070a[_0x5796('0x11')][_0x5796('0xf')]);}})[_0x5796('0x12')](function(_0x33bd88){logger[_0x5796('0xd')](_0x5796('0x8'),_0x245766,_0x33bd88);_0x1062c0(_0x33bd88);});});}
\ No newline at end of file
index aef9e21..d8046a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x3c9dbd,_0x18bfa3){var _0x1a1a4a=function(_0xf8b140){while(--_0xf8b140){_0x3c9dbd['push'](_0x3c9dbd['shift']());}};_0x1a1a4a(++_0x18bfa3);}(_0xedd9,0xfc));var _0x9edd=function(_0x188888,_0x2a0a1c){_0x188888=_0x188888-0x0;var _0x1491a8=_0xedd9[_0x188888];return _0x1491a8;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x18f824,_0x36d74e){var _0x5d972d=function(_0x4be024){while(--_0x4be024){_0x18f824['push'](_0x18f824['shift']());}};_0x5d972d(++_0x36d74e);}(_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 5f7f7f5..e6d3c4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa11a=['INTEGER','STRING','sequelize'];(function(_0x291b1c,_0x560295){var _0x502aa4=function(_0x192d70){while(--_0x192d70){_0x291b1c['push'](_0x291b1c['shift']());}};_0x502aa4(++_0x560295);}(_0xa11a,0x98));var _0xaa11=function(_0x9049bf,_0x5c5230){_0x9049bf=_0x9049bf-0x0;var _0x5a444a=_0xa11a[_0x9049bf];return _0x5a444a;};'use strict';var Sequelize=require(_0xaa11('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xaa11('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xaa11('0x2')]}};
\ No newline at end of file
+var _0x57a3=['exports','INTEGER','sequelize'];(function(_0x5234f1,_0x37bba9){var _0x365cfb=function(_0x49da8b){while(--_0x49da8b){_0x5234f1['push'](_0x5234f1['shift']());}};_0x365cfb(++_0x37bba9);}(_0x57a3,0x1f4));var _0x357a=function(_0x5cb97e,_0x132a39){_0x5cb97e=_0x5cb97e-0x0;var _0x1714b4=_0x57a3[_0x5cb97e];return _0x1714b4;};'use strict';var Sequelize=require(_0x357a('0x0'));module[_0x357a('0x1')]={'penalty':{'type':Sequelize[_0x357a('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x357a('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e178938..1184bac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5d7=['exports','define','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./userFaxQueue.attributes'];(function(_0x6b25ac,_0x14390e){var _0x15932a=function(_0x47ee8b){while(--_0x47ee8b){_0x6b25ac['push'](_0x6b25ac['shift']());}};_0x15932a(++_0x14390e);}(_0xa5d7,0xd3));var _0x7a5d=function(_0x4054a4,_0x1f5fc8){_0x4054a4=_0x4054a4-0x0;var _0x42fc0a=_0xa5d7[_0x4054a4];return _0x42fc0a;};'use strict';var _=require(_0x7a5d('0x0'));var util=require(_0x7a5d('0x1'));var logger=require(_0x7a5d('0x2'))(_0x7a5d('0x3'));var moment=require(_0x7a5d('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7a5d('0x5'));var rimraf=require(_0x7a5d('0x6'));var config=require(_0x7a5d('0x7'));var attributes=require(_0x7a5d('0x8'));module[_0x7a5d('0x9')]=function(_0xf682c9,_0x5ce00b){return _0xf682c9[_0x7a5d('0xa')]('UserFaxQueue',attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55cc=['bluebird','request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes','exports','define','user_has_fax_queues','util'];(function(_0x1904e5,_0x4c7bfc){var _0x3e6b39=function(_0x316055){while(--_0x316055){_0x1904e5['push'](_0x1904e5['shift']());}};_0x3e6b39(++_0x4c7bfc);}(_0x55cc,0x167));var _0xc55c=function(_0x1c3ced,_0x2f0278){_0x1c3ced=_0x1c3ced-0x0;var _0x41ae42=_0x55cc[_0x1c3ced];return _0x41ae42;};'use strict';var _=require('lodash');var util=require(_0xc55c('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xc55c('0x1'));var rp=require(_0xc55c('0x2'));var fs=require('fs');var path=require(_0xc55c('0x3'));var rimraf=require(_0xc55c('0x4'));var config=require(_0xc55c('0x5'));var attributes=require(_0xc55c('0x6'));module[_0xc55c('0x7')]=function(_0x551700,_0x30201f){return _0x551700[_0xc55c('0x8')]('UserFaxQueue',attributes,{'tableName':_0xc55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0577578..41ff30e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c47=['message','result','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x1d2e5e,_0x145ae6){var _0x4a1d68=function(_0x3dd5b6){while(--_0x3dd5b6){_0x1d2e5e['push'](_0x1d2e5e['shift']());}};_0x4a1d68(++_0x145ae6);}(_0x5c47,0xb3));var _0x75c4=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x5c47[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x75c4('0x0'));var util=require('util');var moment=require(_0x75c4('0x1'));var BPromise=require(_0x75c4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x75c4('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x75c4('0x4'));var logger=require(_0x75c4('0x5'))(_0x75c4('0x6'));var config=require(_0x75c4('0x7'));var jayson=require(_0x75c4('0x8'));var client=jayson[_0x75c4('0x9')][_0x75c4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xac4ecd,_0x5a70c0,_0x446ee5){return new BPromise(function(_0x2a59d6,_0x11fbc8){return client['request'](_0xac4ecd,_0x446ee5)[_0x75c4('0xb')](function(_0x5b669e){logger[_0x75c4('0xc')](_0x75c4('0xd'),_0x5a70c0,_0x75c4('0xe'));logger[_0x75c4('0xf')](_0x75c4('0x10'),_0x5a70c0,_0x75c4('0xe'),JSON['stringify'](_0x5b669e));if(_0x5b669e[_0x75c4('0x11')]){if(_0x5b669e[_0x75c4('0x11')][_0x75c4('0x12')]===0x1f4){logger[_0x75c4('0x11')](_0x75c4('0xd'),_0x5a70c0,_0x5b669e[_0x75c4('0x11')][_0x75c4('0x13')]);return _0x11fbc8(_0x5b669e[_0x75c4('0x11')]['message']);}logger[_0x75c4('0x11')](_0x75c4('0xd'),_0x5a70c0,_0x5b669e[_0x75c4('0x11')][_0x75c4('0x13')]);return _0x2a59d6(_0x5b669e['error']['message']);}else{logger[_0x75c4('0xc')](_0x75c4('0xd'),_0x5a70c0,_0x75c4('0xe'));_0x2a59d6(_0x5b669e[_0x75c4('0x14')][_0x75c4('0x13')]);}})[_0x75c4('0x15')](function(_0x2884a8){logger[_0x75c4('0x11')](_0x75c4('0xd'),_0x5a70c0,_0x2884a8);_0x11fbc8(_0x2884a8);});});}
\ No newline at end of file
+var _0x4032=['code','UserFaxQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x57e931,_0x347ad7){var _0x28dc50=function(_0x22c590){while(--_0x22c590){_0x57e931['push'](_0x57e931['shift']());}};_0x28dc50(++_0x347ad7);}(_0x4032,0xc5));var _0x2403=function(_0x22242a,_0x25696d){_0x22242a=_0x22242a-0x0;var _0x3e8122=_0x4032[_0x22242a];return _0x3e8122;};'use strict';var _=require(_0x2403('0x0'));var util=require(_0x2403('0x1'));var moment=require(_0x2403('0x2'));var BPromise=require('bluebird');var rs=require(_0x2403('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2403('0x4'))['db'];var utils=require(_0x2403('0x5'));var logger=require(_0x2403('0x6'))(_0x2403('0x7'));var config=require(_0x2403('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2403('0x9')][_0x2403('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x109642,_0x3f750e,_0x449372){return new BPromise(function(_0x53c537,_0x5cfec0){return client[_0x2403('0xb')](_0x109642,_0x449372)[_0x2403('0xc')](function(_0xdc02d7){logger[_0x2403('0xd')]('UserFaxQueue,\x20%s,\x20%s',_0x3f750e,_0x2403('0xe'));logger[_0x2403('0xf')](_0x2403('0x10'),_0x3f750e,_0x2403('0xe'),JSON[_0x2403('0x11')](_0xdc02d7));if(_0xdc02d7[_0x2403('0x12')]){if(_0xdc02d7[_0x2403('0x12')][_0x2403('0x13')]===0x1f4){logger[_0x2403('0x12')](_0x2403('0x14'),_0x3f750e,_0xdc02d7[_0x2403('0x12')][_0x2403('0x15')]);return _0x5cfec0(_0xdc02d7[_0x2403('0x12')][_0x2403('0x15')]);}logger[_0x2403('0x12')](_0x2403('0x14'),_0x3f750e,_0xdc02d7['error'][_0x2403('0x15')]);return _0x53c537(_0xdc02d7[_0x2403('0x12')][_0x2403('0x15')]);}else{logger['info'](_0x2403('0x14'),_0x3f750e,_0x2403('0xe'));_0x53c537(_0xdc02d7[_0x2403('0x16')]['message']);}})[_0x2403('0x17')](function(_0x4ad1d5){logger['error'](_0x2403('0x14'),_0x3f750e,_0x4ad1d5);_0x5cfec0(_0x4ad1d5);});});}
\ No newline at end of file
index 23fbb8d..bf3d962 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(_0x68361,_0x231f90){var _0xbb709a=function(_0x47e656){while(--_0x47e656){_0x68361['push'](_0x68361['shift']());}};_0xbb709a(++_0x231f90);}(_0x9c44,0x178));var _0x49c4=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x9c44[_0x2e4aa2];return _0x5e6092;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x379dd3,_0x3653f0){var _0x5e7c7b=function(_0xaafedf){while(--_0xaafedf){_0x379dd3['push'](_0x379dd3['shift']());}};_0x5e7c7b(++_0x3653f0);}(_0x70e0,0x17b));var _0x070e=function(_0x1b4c21,_0x55ae00){_0x1b4c21=_0x1b4c21-0x0;var _0x1b41ad=_0x70e0[_0x1b4c21];return _0x1b41ad;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index 96f1673..7d313d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc757=['exports','INTEGER','sequelize'];(function(_0x91792,_0x34e10a){var _0x559ee1=function(_0x578884){while(--_0x578884){_0x91792['push'](_0x91792['shift']());}};_0x559ee1(++_0x34e10a);}(_0xc757,0xe3));var _0x7c75=function(_0x339df8,_0x31a2cf){_0x339df8=_0x339df8-0x0;var _0x4ef64d=_0xc757[_0x339df8];return _0x4ef64d;};'use strict';var Sequelize=require(_0x7c75('0x0'));module[_0x7c75('0x1')]={'penalty':{'type':Sequelize[_0x7c75('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfa57=['INTEGER','sequelize','exports'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xfa57,0xf4));var _0x7fa5=function(_0x52e3bd,_0x9233d8){_0x52e3bd=_0x52e3bd-0x0;var _0x4458c7=_0xfa57[_0x52e3bd];return _0x4458c7;};'use strict';var Sequelize=require(_0x7fa5('0x0'));module[_0x7fa5('0x1')]={'penalty':{'type':Sequelize[_0x7fa5('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 8fe7399..00a1ad4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x538c=['request-promise','path','rimraf','exports','define','lodash','util','../../config/logger','api','moment'];(function(_0x2d86e7,_0x124c0d){var _0x1dfbbd=function(_0xff68ca){while(--_0xff68ca){_0x2d86e7['push'](_0x2d86e7['shift']());}};_0x1dfbbd(++_0x124c0d);}(_0x538c,0xc3));var _0xc538=function(_0xc9b970,_0x1cf01b){_0xc9b970=_0xc9b970-0x0;var _0x3affec=_0x538c[_0xc9b970];return _0x3affec;};'use strict';var _=require(_0xc538('0x0'));var util=require(_0xc538('0x1'));var logger=require(_0xc538('0x2'))(_0xc538('0x3'));var moment=require(_0xc538('0x4'));var BPromise=require('bluebird');var rp=require(_0xc538('0x5'));var fs=require('fs');var path=require(_0xc538('0x6'));var rimraf=require(_0xc538('0x7'));var config=require('../../config/environment');var attributes=require('./userMailQueue.attributes');module[_0xc538('0x8')]=function(_0x3f531c,_0x40c368){return _0x3f531c[_0xc538('0x9')]('UserMailQueue',attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbc60=['path','rimraf','../../config/environment','./userMailQueue.attributes','exports','define','UserMailQueue','user_has_mail_queues','lodash','util','api','moment','bluebird','request-promise'];(function(_0x25519a,_0x1d8ba3){var _0x2ee7d8=function(_0x3754bd){while(--_0x3754bd){_0x25519a['push'](_0x25519a['shift']());}};_0x2ee7d8(++_0x1d8ba3);}(_0xbc60,0x1e4));var _0x0bc6=function(_0x3a02fa,_0x52e34f){_0x3a02fa=_0x3a02fa-0x0;var _0x429fb2=_0xbc60[_0x3a02fa];return _0x429fb2;};'use strict';var _=require(_0x0bc6('0x0'));var util=require(_0x0bc6('0x1'));var logger=require('../../config/logger')(_0x0bc6('0x2'));var moment=require(_0x0bc6('0x3'));var BPromise=require(_0x0bc6('0x4'));var rp=require(_0x0bc6('0x5'));var fs=require('fs');var path=require(_0x0bc6('0x6'));var rimraf=require(_0x0bc6('0x7'));var config=require(_0x0bc6('0x8'));var attributes=require(_0x0bc6('0x9'));module[_0x0bc6('0xa')]=function(_0x378bf6,_0x2d7cf6){return _0x378bf6[_0x0bc6('0xb')](_0x0bc6('0xc'),attributes,{'tableName':_0x0bc6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d602e29..daae04d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1cb9,0x14e));var _0x91cb=function(_0xeb54f1,_0x58235b){_0xeb54f1=_0xeb54f1-0x0;var _0x2bca08=_0x1cb9[_0xeb54f1];return _0x2bca08;};'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')]('UserMailQueue,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}
\ No newline at end of file
+var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x1221f0,_0x32efbe){var _0x2ddba3=function(_0x4a7437){while(--_0x4a7437){_0x1221f0['push'](_0x1221f0['shift']());}};_0x2ddba3(++_0x32efbe);}(_0x34e8,0x12c));var _0x834e=function(_0x1a3f41,_0x191cfe){_0x1a3f41=_0x1a3f41-0x0;var _0x45c41f=_0x34e8[_0x1a3f41];return _0x45c41f;};'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')]('UserMailQueue,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('UserMailQueue,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
index 7db7717..2e9933e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfdc=['isAuthenticated','sendUserNotification','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','post'];(function(_0x4f048e,_0x1d3344){var _0x287e7e=function(_0x28a960){while(--_0x28a960){_0x4f048e['push'](_0x4f048e['shift']());}};_0x287e7e(++_0x1d3344);}(_0xcfdc,0x1cb));var _0xccfd=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xcfdc[_0x413feb];return _0x40ee88;};'use strict';var multer=require(_0xccfd('0x0'));var util=require(_0xccfd('0x1'));var path=require(_0xccfd('0x2'));var timeout=require('connect-timeout');var express=require(_0xccfd('0x3'));var router=express[_0xccfd('0x4')]();var fs_extra=require(_0xccfd('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xccfd('0x6'));var config=require(_0xccfd('0x7'));var controller=require('./userNotification.controller');router[_0xccfd('0x8')]('/',auth[_0xccfd('0x9')](),controller[_0xccfd('0xa')]);module[_0xccfd('0xb')]=router;
\ No newline at end of file
+var _0xd25a=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x1d919b,_0x3188f8){var _0x233c28=function(_0x37927a){while(--_0x37927a){_0x1d919b['push'](_0x1d919b['shift']());}};_0x233c28(++_0x3188f8);}(_0xd25a,0x104));var _0xad25=function(_0x3a10a5,_0x5077bd){_0x3a10a5=_0x3a10a5-0x0;var _0x184c77=_0xd25a[_0x3a10a5];return _0x184c77;};'use strict';var multer=require(_0xad25('0x0'));var util=require(_0xad25('0x1'));var path=require(_0xad25('0x2'));var timeout=require(_0xad25('0x3'));var express=require(_0xad25('0x4'));var router=express[_0xad25('0x5')]();var fs_extra=require(_0xad25('0x6'));var auth=require(_0xad25('0x7'));var interaction=require(_0xad25('0x8'));var config=require(_0xad25('0x9'));var controller=require(_0xad25('0xa'));router[_0xad25('0xb')]('/',auth[_0xad25('0xc')](),controller['sendUserNotification']);module[_0xad25('0xd')]=router;
\ No newline at end of file
index 67f85fd..ce05599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37cc=['STRING'];(function(_0x12b0f3,_0x380a21){var _0x522609=function(_0x4ee968){while(--_0x4ee968){_0x12b0f3['push'](_0x12b0f3['shift']());}};_0x522609(++_0x380a21);}(_0x37cc,0x10e));var _0xc37c=function(_0x2459a7,_0x308a3f){_0x2459a7=_0x2459a7-0x0;var _0x42a01d=_0x37cc[_0x2459a7];return _0x42a01d;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0xc37c('0x0')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0x81ce=['sequelize','exports','STRING','TEXT','BOOLEAN'];(function(_0x27c7b2,_0x3c8adc){var _0x33829e=function(_0x1e4b4f){while(--_0x1e4b4f){_0x27c7b2['push'](_0x27c7b2['shift']());}};_0x33829e(++_0x3c8adc);}(_0x81ce,0x1a9));var _0xe81c=function(_0x4df97c,_0x4c14de){_0x4df97c=_0x4df97c-0x0;var _0x2ef351=_0x81ce[_0x4df97c];return _0x2ef351;};'use strict';var Sequelize=require(_0xe81c('0x0'));module[_0xe81c('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0xe81c('0x2')]},'recipientsId':{'type':Sequelize[_0xe81c('0x3')]},'recipientsDescription':{'type':Sequelize[_0xe81c('0x2')]},'beep':{'type':Sequelize[_0xe81c('0x4')]}};
\ No newline at end of file
index 176ac75..b054e84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5674=['then','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Sequelize','ValidationError','recipients','Missing\x20\x27recipients\x27\x20parameter','Invalid\x20\x27recipients\x27\x20object','chatqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','includes','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create','forEach','recipient','emit','userNotification:send','Template','findOne','html','render','catch','startCase','model','User','union','ids','queue','replace','Queue','push','all','flatten','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','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','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','save'];(function(_0xc120de,_0x575ca2){var _0x48d6ec=function(_0x2d48a8){while(--_0x2d48a8){_0xc120de['push'](_0xc120de['shift']());}};_0x48d6ec(++_0x575ca2);}(_0x5674,0x1e8));var _0x4567=function(_0x4f41ca,_0x2256b1){_0x4f41ca=_0x4f41ca-0x0;var _0x515eba=_0x5674[_0x4f41ca];return _0x515eba;};'use strict';var emlformat=require(_0x4567('0x0'));var rimraf=require(_0x4567('0x1'));var zipdir=require(_0x4567('0x2'));var jsonpatch=require(_0x4567('0x3'));var rp=require(_0x4567('0x4'));var moment=require(_0x4567('0x5'));var BPromise=require(_0x4567('0x6'));var Mustache=require(_0x4567('0x7'));var util=require('util');var path=require(_0x4567('0x8'));var sox=require(_0x4567('0x9'));var csv=require('to-csv');var ejs=require(_0x4567('0xa'));var fs=require('fs');var fs_extra=require(_0x4567('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x4567('0xc'));var jsforce=require(_0x4567('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4567('0xe'));var querystring=require(_0x4567('0xf'));var Papa=require(_0x4567('0x10'));var Redis=require(_0x4567('0x11'));var authService=require(_0x4567('0x12'));var qs=require(_0x4567('0x13'));var as=require(_0x4567('0x14'));var hardwareService=require(_0x4567('0x15'));var logger=require(_0x4567('0x16'))(_0x4567('0x17'));var utils=require(_0x4567('0x18'));var config=require(_0x4567('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x4567('0x1a'))['db'];config[_0x4567('0x1b')]=_[_0x4567('0x1c')](config['redis'],{'host':_0x4567('0x1d'),'port':0x18eb});var socket=require(_0x4567('0x1e'))(new Redis(config[_0x4567('0x1b')]));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0xd7ecc0,_0x4440ed){_0x4440ed=_0x4440ed||0xcc;return function(_0x2c94dc){if(_0x2c94dc){return _0xd7ecc0[_0x4567('0x1f')](_0x4440ed);}return _0xd7ecc0[_0x4567('0x20')](_0x4440ed)[_0x4567('0x21')]();};}function respondWithResult(_0x437bc9,_0x19edf1){_0x19edf1=_0x19edf1||0xc8;return function(_0xe8da84){if(_0xe8da84){return _0x437bc9[_0x4567('0x20')](_0x19edf1)['json'](_0xe8da84);}};}function respondWithFilteredResult(_0x2b5c52,_0x232ecc){return function(_0x50d8ec){if(_0x50d8ec){var _0x49ed01=typeof _0x232ecc[_0x4567('0x22')]===_0x4567('0x23')&&typeof _0x232ecc[_0x4567('0x24')]===_0x4567('0x23');var _0x54137a=_0x50d8ec[_0x4567('0x25')];var _0x1d2bb7=_0x49ed01?0x0:_0x232ecc[_0x4567('0x22')];var _0x309e68=_0x49ed01?_0x50d8ec['count']:_0x232ecc[_0x4567('0x22')]+_0x232ecc[_0x4567('0x24')];var _0x1df51c;if(_0x309e68>=_0x54137a){_0x309e68=_0x54137a;_0x1df51c=0xc8;}else{_0x1df51c=0xce;}_0x2b5c52[_0x4567('0x20')](_0x1df51c);return _0x2b5c52[_0x4567('0x26')]('Content-Range',_0x1d2bb7+'-'+_0x309e68+'/'+_0x54137a)[_0x4567('0x27')](_0x50d8ec);}return null;};}function patchUpdates(_0x581b88){return function(_0x153595){try{jsonpatch['apply'](_0x153595,_0x581b88,!![]);}catch(_0x1f6fbb){return BPromise[_0x4567('0x28')](_0x1f6fbb);}return _0x153595[_0x4567('0x29')]();};}function saveUpdates(_0x25260,_0x1980be){return function(_0x4d592b){if(_0x4d592b){return _0x4d592b['update'](_0x25260)[_0x4567('0x2a')](function(_0x3c89ba){return _0x3c89ba;});}return null;};}function removeEntity(_0x391043,_0x343da0){return function(_0x2f3fff){if(_0x2f3fff){return _0x2f3fff[_0x4567('0x2b')]()['then'](function(){_0x391043[_0x4567('0x20')](0xcc)[_0x4567('0x21')]();});}};}function handleEntityNotFound(_0x84dbf4,_0x2ff5ba){return function(_0x1f3f73){if(!_0x1f3f73){_0x84dbf4[_0x4567('0x1f')](0x194);}return _0x1f3f73;};}function handleError(_0x2f6bcd,_0x2f3cd5){_0x2f3cd5=_0x2f3cd5||0x1f4;return function(_0xe6dd7f){logger[_0x4567('0x2c')](_0xe6dd7f[_0x4567('0x2d')]);if(_0xe6dd7f[_0x4567('0x2e')]){delete _0xe6dd7f[_0x4567('0x2e')];}_0x2f6bcd['status'](_0x2f3cd5)[_0x4567('0x2f')](_0xe6dd7f);};}exports[_0x4567('0x30')]=function(_0x264811,_0x5461bf,_0x33c321){if(!_0x264811[_0x4567('0x31')][_0x4567('0x32')](_0x4567('0x33'))&&!_0x264811[_0x4567('0x31')]['hasOwnProperty'](_0x4567('0x34'))){throw new db['Sequelize']['ValidationError'](_0x4567('0x35'));}else{if(_0x264811[_0x4567('0x31')][_0x4567('0x32')]('TemplateId')&&!_0x264811[_0x4567('0x31')]['hasOwnProperty'](_0x4567('0x36'))){throw new db[(_0x4567('0x37'))][(_0x4567('0x38'))]('Missing\x20\x27view\x27\x20parameter');}if(!_0x264811[_0x4567('0x31')][_0x4567('0x32')](_0x4567('0x39'))){throw new db[(_0x4567('0x37'))][(_0x4567('0x38'))](_0x4567('0x3a'));}else{try{var _0x538362=JSON['parse'](_0x264811[_0x4567('0x31')]['recipients']);}catch(_0x169622){logger[_0x4567('0x2c')](_0x169622);throw new db[(_0x4567('0x37'))][(_0x4567('0x38'))](_0x4567('0x3b'));}var _0x49a96c=[_0x4567('0x3c'),'faxqueue',_0x4567('0x3d'),_0x4567('0x3e'),_0x4567('0x3f'),_0x4567('0x40'),_0x4567('0x41'),_0x4567('0x42'),_0x4567('0x43')];if(_['some'](_0x538362,function(_0x34090e){return!_[_0x4567('0x44')](_0x49a96c,_0x34090e['model'][_0x4567('0x45')]());})){throw new db['Sequelize'][(_0x4567('0x38'))](_0x4567('0x46'));}}}var _0xcd39f3={};_0xcd39f3[_0x4567('0x47')]=_0x264811['body'][_0x4567('0x32')](_0x4567('0x47'))?_0x264811[_0x4567('0x31')][_0x4567('0x47')]:_0x264811[_0x4567('0x43')][_0x4567('0x48')];_0xcd39f3['recipientsDescription']=_[_0x4567('0x49')](_0x264811['body'][_0x4567('0x4a')])?null:_0x264811[_0x4567('0x31')][_0x4567('0x4a')];_0xcd39f3[_0x4567('0x4b')]=_0x264811[_0x4567('0x31')][_0x4567('0x4b')]||![];_0xcd39f3[_0x4567('0x4c')]=_0x264811[_0x4567('0x43')]['id'];return getContent(_0x264811[_0x4567('0x31')])[_0x4567('0x2a')](function(_0x51d38e){_0xcd39f3[_0x4567('0x31')]=_0x51d38e;return getRecipients(_0x538362);})[_0x4567('0x2a')](function(_0x30839a){_0xcd39f3[_0x4567('0x4d')]=_[_0x4567('0x4e')](_0x30839a)[_0x4567('0x4f')](',');return db[_0x4567('0x50')][_0x4567('0x51')](function(_0x1ef239){return db[_0x4567('0x52')][_0x4567('0x53')](_0xcd39f3,{'raw':!![],'transaction':_0x1ef239})[_0x4567('0x2a')](function(_0x26d954){var _0x26dedf={'sender':_0xcd39f3['senderName'],'description':_0xcd39f3[_0x4567('0x4a')],'content':_0xcd39f3[_0x4567('0x31')],'beep':_0xcd39f3[_0x4567('0x4b')]};_0x30839a[_0x4567('0x54')](function(_0x391b79){_0x26dedf[_0x4567('0x55')]=_0x391b79;socket[_0x4567('0x56')](_0x4567('0x57'),_0x26dedf);});return _0x26d954;});});})[_0x4567('0x2a')](respondWithResult(_0x5461bf,0xc9))['catch'](handleError(_0x5461bf,null));};function getContent(_0x5c7f12){return new BPromise(function(_0x315a4b,_0x4ccca5){if(_0x5c7f12['text']){_0x315a4b(_0x5c7f12[_0x4567('0x33')]);return;}return db[_0x4567('0x58')][_0x4567('0x59')]({'attributes':[_0x4567('0x5a')],'where':{'id':_0x5c7f12[_0x4567('0x34')]},'raw':!![]})[_0x4567('0x2a')](function(_0x22315a){if(!_0x22315a)throw new db['Sequelize'][(_0x4567('0x38'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x1f59ce=Mustache[_0x4567('0x5b')](_0x22315a[_0x4567('0x5a')],_0x5c7f12['view']);_0x315a4b(_0x1f59ce);})[_0x4567('0x5c')](function(_0x1e05b3){_0x4ccca5(_0x1e05b3);});});}function getRecipients(_0x926c1e){return new BPromise(function(_0x386c9f,_0x43ba01){var _0x260f13=[];var _0x1efb9d=[];_0x926c1e[_0x4567('0x54')](function(_0x526fe3){var _0xbe3b=_[_0x4567('0x5d')](_0x526fe3[_0x4567('0x5e')][_0x4567('0x45')]());if(_0xbe3b===_0x4567('0x5f')){_0x260f13=_[_0x4567('0x60')](_0x260f13,_0x526fe3[_0x4567('0x61')]);}else{if(_[_0x4567('0x44')](_0xbe3b,_0x4567('0x62')))_0xbe3b=_0xbe3b[_0x4567('0x63')](_0x4567('0x62'),_0x4567('0x64'));_0x526fe3[_0x4567('0x61')][_0x4567('0x54')](function(_0x207476){_0x1efb9d[_0x4567('0x65')](getAgents(_0xbe3b,_0x207476));});}});return BPromise[_0x4567('0x66')](_0x1efb9d)[_0x4567('0x2a')](function(_0x4cb06d){_0x260f13=_[_0x4567('0x60')](_0x260f13,_[_0x4567('0x67')](_0x4cb06d));_0x386c9f(_0x260f13);})['catch'](function(_0x27d004){_0x43ba01(_0x27d004);});});}function getAgents(_0x4a6559,_0x58d80f){return new BPromise(function(_0x14bf36,_0x495e7c){return db[_0x4a6559][_0x4567('0x59')]({'where':{'id':_0x58d80f}})[_0x4567('0x2a')](function(_0x31f2b4){return _0x31f2b4[_0x4567('0x68')]({'attributes':['id'],'raw':!![]})['then'](function(_0x25b044){var _0x3f4ac2=_[_0x4567('0x69')](_0x25b044,'id');_0x14bf36(_0x3f4ac2);});})['catch'](function(_0x4da0b0){_0x495e7c(_0x4da0b0);});});}
\ No newline at end of file
+var _0x7b56=['request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./userNotification.socket','register','sendStatus','status','json','limit','count','offset','set','Content-Range','apply','save','update','destroy','then','end','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','parse','recipients','Invalid\x20\x27recipients\x27\x20object','faxqueue','mailqueue','openchannelqueue','voicequeue','whatsappqueue','team','some','includes','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','user','recipientsId','join','sequelize','create','forEach','recipient','emit','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','view','startCase','toLowerCase','User','union','ids','queue','Queue','push','flatten','map','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x19da9b,_0x4f080f){var _0x1af33=function(_0x24e582){while(--_0x24e582){_0x19da9b['push'](_0x19da9b['shift']());}};_0x1af33(++_0x4f080f);}(_0x7b56,0x198));var _0x67b5=function(_0x5b5640,_0x1f5ea5){_0x5b5640=_0x5b5640-0x0;var _0x4d48b0=_0x7b56[_0x5b5640];return _0x4d48b0;};'use strict';var emlformat=require(_0x67b5('0x0'));var rimraf=require(_0x67b5('0x1'));var zipdir=require(_0x67b5('0x2'));var jsonpatch=require(_0x67b5('0x3'));var rp=require(_0x67b5('0x4'));var moment=require(_0x67b5('0x5'));var BPromise=require(_0x67b5('0x6'));var Mustache=require(_0x67b5('0x7'));var util=require(_0x67b5('0x8'));var path=require(_0x67b5('0x9'));var sox=require(_0x67b5('0xa'));var csv=require(_0x67b5('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x67b5('0xc'));var _=require(_0x67b5('0xd'));var squel=require(_0x67b5('0xe'));var crypto=require(_0x67b5('0xf'));var jsforce=require(_0x67b5('0x10'));var deskjs=require(_0x67b5('0x11'));var toCsv=require(_0x67b5('0xb'));var querystring=require(_0x67b5('0x12'));var Papa=require(_0x67b5('0x13'));var Redis=require(_0x67b5('0x14'));var authService=require(_0x67b5('0x15'));var qs=require(_0x67b5('0x16'));var as=require(_0x67b5('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x67b5('0x18'))('api');var utils=require(_0x67b5('0x19'));var config=require(_0x67b5('0x1a'));var licenseUtil=require(_0x67b5('0x1b'));var db=require(_0x67b5('0x1c'))['db'];config['redis']=_['defaults'](config[_0x67b5('0x1d')],{'host':'localhost','port':0x18eb});var socket=require(_0x67b5('0x1e'))(new Redis(config[_0x67b5('0x1d')]));require(_0x67b5('0x1f'))[_0x67b5('0x20')](socket);function respondWithStatusCode(_0x52e213,_0x247a15){_0x247a15=_0x247a15||0xcc;return function(_0xd1303c){if(_0xd1303c){return _0x52e213[_0x67b5('0x21')](_0x247a15);}return _0x52e213[_0x67b5('0x22')](_0x247a15)['end']();};}function respondWithResult(_0x5becef,_0x5884a8){_0x5884a8=_0x5884a8||0xc8;return function(_0x178c9b){if(_0x178c9b){return _0x5becef['status'](_0x5884a8)[_0x67b5('0x23')](_0x178c9b);}};}function respondWithFilteredResult(_0x4ae003,_0x11d930){return function(_0x30be9e){if(_0x30be9e){var _0x5340f9=typeof _0x11d930['offset']==='undefined'&&typeof _0x11d930[_0x67b5('0x24')]==='undefined';var _0x39837c=_0x30be9e[_0x67b5('0x25')];var _0x16c840=_0x5340f9?0x0:_0x11d930[_0x67b5('0x26')];var _0x4eae11=_0x5340f9?_0x30be9e['count']:_0x11d930[_0x67b5('0x26')]+_0x11d930[_0x67b5('0x24')];var _0x4a56ae;if(_0x4eae11>=_0x39837c){_0x4eae11=_0x39837c;_0x4a56ae=0xc8;}else{_0x4a56ae=0xce;}_0x4ae003[_0x67b5('0x22')](_0x4a56ae);return _0x4ae003[_0x67b5('0x27')](_0x67b5('0x28'),_0x16c840+'-'+_0x4eae11+'/'+_0x39837c)[_0x67b5('0x23')](_0x30be9e);}return null;};}function patchUpdates(_0x4162e4){return function(_0x315a39){try{jsonpatch[_0x67b5('0x29')](_0x315a39,_0x4162e4,!![]);}catch(_0x57c94b){return BPromise['reject'](_0x57c94b);}return _0x315a39[_0x67b5('0x2a')]();};}function saveUpdates(_0x417343,_0x253e29){return function(_0x425147){if(_0x425147){return _0x425147[_0x67b5('0x2b')](_0x417343)['then'](function(_0x5d1a0d){return _0x5d1a0d;});}return null;};}function removeEntity(_0x2f4aba,_0x4dd496){return function(_0x636bbd){if(_0x636bbd){return _0x636bbd[_0x67b5('0x2c')]()[_0x67b5('0x2d')](function(){_0x2f4aba[_0x67b5('0x22')](0xcc)[_0x67b5('0x2e')]();});}};}function handleEntityNotFound(_0x3f7d47,_0x289df5){return function(_0x1daf2b){if(!_0x1daf2b){_0x3f7d47[_0x67b5('0x21')](0x194);}return _0x1daf2b;};}function handleError(_0x11f13f,_0x469e8b){_0x469e8b=_0x469e8b||0x1f4;return function(_0x20f6da){logger[_0x67b5('0x2f')](_0x20f6da[_0x67b5('0x30')]);if(_0x20f6da[_0x67b5('0x31')]){delete _0x20f6da[_0x67b5('0x31')];}_0x11f13f[_0x67b5('0x22')](_0x469e8b)[_0x67b5('0x32')](_0x20f6da);};}exports[_0x67b5('0x33')]=function(_0x4c5080,_0x59ceec,_0x502edd){if(!_0x4c5080[_0x67b5('0x34')][_0x67b5('0x35')](_0x67b5('0x36'))&&!_0x4c5080[_0x67b5('0x34')]['hasOwnProperty'](_0x67b5('0x37'))){throw new db[(_0x67b5('0x38'))][(_0x67b5('0x39'))](_0x67b5('0x3a'));}else{if(_0x4c5080[_0x67b5('0x34')]['hasOwnProperty'](_0x67b5('0x37'))&&!_0x4c5080[_0x67b5('0x34')][_0x67b5('0x35')]('view')){throw new db[(_0x67b5('0x38'))][(_0x67b5('0x39'))]('Missing\x20\x27view\x27\x20parameter');}if(!_0x4c5080[_0x67b5('0x34')][_0x67b5('0x35')]('recipients')){throw new db['Sequelize']['ValidationError']('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x26b87d=JSON[_0x67b5('0x3b')](_0x4c5080[_0x67b5('0x34')][_0x67b5('0x3c')]);}catch(_0xcc317){logger[_0x67b5('0x2f')](_0xcc317);throw new db[(_0x67b5('0x38'))]['ValidationError'](_0x67b5('0x3d'));}var _0x379811=['chatqueue',_0x67b5('0x3e'),_0x67b5('0x3f'),_0x67b5('0x40'),'smsqueue',_0x67b5('0x41'),_0x67b5('0x42'),_0x67b5('0x43'),'user'];if(_[_0x67b5('0x44')](_0x26b87d,function(_0x55a574){return!_[_0x67b5('0x45')](_0x379811,_0x55a574[_0x67b5('0x46')]['toLowerCase']());})){throw new db['Sequelize']['ValidationError'](_0x67b5('0x47'));}}}var _0x3e6b50={};_0x3e6b50['senderName']=_0x4c5080[_0x67b5('0x34')][_0x67b5('0x35')](_0x67b5('0x48'))?_0x4c5080['body'][_0x67b5('0x48')]:_0x4c5080['user'][_0x67b5('0x49')];_0x3e6b50[_0x67b5('0x4a')]=_[_0x67b5('0x4b')](_0x4c5080['body'][_0x67b5('0x4a')])?null:_0x4c5080[_0x67b5('0x34')][_0x67b5('0x4a')];_0x3e6b50[_0x67b5('0x4c')]=_0x4c5080[_0x67b5('0x34')][_0x67b5('0x4c')]||![];_0x3e6b50[_0x67b5('0x4d')]=_0x4c5080[_0x67b5('0x4e')]['id'];return getContent(_0x4c5080[_0x67b5('0x34')])['then'](function(_0x4e6f15){_0x3e6b50['body']=_0x4e6f15;return getRecipients(_0x26b87d);})[_0x67b5('0x2d')](function(_0x1b1087){_0x3e6b50[_0x67b5('0x4f')]=_['sortBy'](_0x1b1087)[_0x67b5('0x50')](',');return db[_0x67b5('0x51')]['transaction'](function(_0x28f335){return db['UserNotification'][_0x67b5('0x52')](_0x3e6b50,{'raw':!![],'transaction':_0x28f335})[_0x67b5('0x2d')](function(_0x222e66){var _0x5b3b61={'sender':_0x3e6b50[_0x67b5('0x48')],'description':_0x3e6b50[_0x67b5('0x4a')],'content':_0x3e6b50[_0x67b5('0x34')],'beep':_0x3e6b50['beep']};_0x1b1087[_0x67b5('0x53')](function(_0x5a1869){_0x5b3b61[_0x67b5('0x54')]=_0x5a1869;socket[_0x67b5('0x55')]('userNotification:send',_0x5b3b61);});return _0x222e66;});});})['then'](respondWithResult(_0x59ceec,0xc9))[_0x67b5('0x56')](handleError(_0x59ceec,null));};function getContent(_0xa9e914){return new BPromise(function(_0x4ac376,_0x1b747c){if(_0xa9e914['text']){_0x4ac376(_0xa9e914[_0x67b5('0x36')]);return;}return db[_0x67b5('0x57')][_0x67b5('0x58')]({'attributes':[_0x67b5('0x59')],'where':{'id':_0xa9e914[_0x67b5('0x37')]},'raw':!![]})[_0x67b5('0x2d')](function(_0x417938){if(!_0x417938)throw new db[(_0x67b5('0x38'))][(_0x67b5('0x39'))](_0x67b5('0x5a'));var _0x4976b6=Mustache[_0x67b5('0x5b')](_0x417938[_0x67b5('0x59')],_0xa9e914[_0x67b5('0x5c')]);_0x4ac376(_0x4976b6);})[_0x67b5('0x56')](function(_0x7bd754){_0x1b747c(_0x7bd754);});});}function getRecipients(_0x2b0ac0){return new BPromise(function(_0x30e29f,_0x18302b){var _0x1224a6=[];var _0x28bf03=[];_0x2b0ac0[_0x67b5('0x53')](function(_0x2d1f90){var _0x51b0c0=_[_0x67b5('0x5d')](_0x2d1f90[_0x67b5('0x46')][_0x67b5('0x5e')]());if(_0x51b0c0===_0x67b5('0x5f')){_0x1224a6=_[_0x67b5('0x60')](_0x1224a6,_0x2d1f90[_0x67b5('0x61')]);}else{if(_[_0x67b5('0x45')](_0x51b0c0,'queue'))_0x51b0c0=_0x51b0c0['replace'](_0x67b5('0x62'),_0x67b5('0x63'));_0x2d1f90[_0x67b5('0x61')][_0x67b5('0x53')](function(_0x39d8fa){_0x28bf03[_0x67b5('0x64')](getAgents(_0x51b0c0,_0x39d8fa));});}});return BPromise['all'](_0x28bf03)[_0x67b5('0x2d')](function(_0x2f5268){_0x1224a6=_[_0x67b5('0x60')](_0x1224a6,_[_0x67b5('0x65')](_0x2f5268));_0x30e29f(_0x1224a6);})[_0x67b5('0x56')](function(_0x23688c){_0x18302b(_0x23688c);});});}function getAgents(_0xcb5b8a,_0x558969){return new BPromise(function(_0x5be61c,_0x558267){return db[_0xcb5b8a][_0x67b5('0x58')]({'where':{'id':_0x558969}})[_0x67b5('0x2d')](function(_0x40ed67){return _0x40ed67['getAgents']({'attributes':['id'],'raw':!![]})['then'](function(_0x17cc0a){var _0x3d0169=_[_0x67b5('0x66')](_0x17cc0a,'id');_0x5be61c(_0x3d0169);});})['catch'](function(_0x1051ee){_0x558267(_0x1051ee);});});}
\ No newline at end of file
index b257601..d70512b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f82=['remove','hasOwnProperty','exports','../../mysqldb'];(function(_0x18d8e9,_0x2d9568){var _0x1b9102=function(_0x4ecf17){while(--_0x4ecf17){_0x18d8e9['push'](_0x18d8e9['shift']());}};_0x1b9102(++_0x2d9568);}(_0x7f82,0xe3));var _0x27f8=function(_0x4207f4,_0x1f778b){_0x4207f4=_0x4207f4-0x0;var _0x29a621=_0x7f82[_0x4207f4];return _0x29a621;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0x27f8('0x0'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x27f8('0x1')};function emitEvent(_0x78de94){return function(_0x46be07,_0x350a23,_0x46bfa4){UserNotificationEvents['emit'](_0x78de94+':'+_0x46be07['id'],_0x46be07);UserNotificationEvents['emit'](_0x78de94,_0x46be07);_0x46bfa4(null);};}for(var e in events){if(events[_0x27f8('0x2')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0x27f8('0x3')]=UserNotificationEvents;
\ No newline at end of file
+var _0xd51f=['update','remove','emit','hasOwnProperty','hook','../../mysqldb','UserNotification','setMaxListeners','save'];(function(_0x1a7fb5,_0x44d692){var _0xbdae4d=function(_0x14dc4b){while(--_0x14dc4b){_0x1a7fb5['push'](_0x1a7fb5['shift']());}};_0xbdae4d(++_0x44d692);}(_0xd51f,0x7a));var _0xfd51=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd51f[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0xfd51('0x0'))['db'][_0xfd51('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xfd51('0x2')](0x0);var events={'afterCreate':_0xfd51('0x3'),'afterUpdate':_0xfd51('0x4'),'afterDestroy':_0xfd51('0x5')};function emitEvent(_0x4184b2){return function(_0x3c9b46,_0x2ad64d,_0x34aabc){UserNotificationEvents[_0xfd51('0x6')](_0x4184b2+':'+_0x3c9b46['id'],_0x3c9b46);UserNotificationEvents[_0xfd51('0x6')](_0x4184b2,_0x3c9b46);_0x34aabc(null);};}for(var e in events){if(events[_0xfd51('0x7')](e)){var event=events[e];UserNotification[_0xfd51('0x8')](e,emitEvent(event));}}module['exports']=UserNotificationEvents;
\ No newline at end of file
index fdea6bd..570218f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1848=['rimraf','./userNotification.attributes','exports','define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x4c7036,_0x41066a){var _0x2a37f0=function(_0x2eb343){while(--_0x2eb343){_0x4c7036['push'](_0x4c7036['shift']());}};_0x2a37f0(++_0x41066a);}(_0x1848,0x7d));var _0x8184=function(_0x4988d6,_0x22fed7){_0x4988d6=_0x4988d6-0x0;var _0x36ca10=_0x1848[_0x4988d6];return _0x36ca10;};'use strict';var _=require('lodash');var util=require(_0x8184('0x0'));var logger=require(_0x8184('0x1'))('api');var moment=require(_0x8184('0x2'));var BPromise=require(_0x8184('0x3'));var rp=require(_0x8184('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8184('0x5'));var config=require('../../config/environment');var attributes=require(_0x8184('0x6'));module[_0x8184('0x7')]=function(_0x93f8e,_0x20b6b0){return _0x93f8e[_0x8184('0x8')](_0x8184('0x9'),attributes,{'tableName':_0x8184('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8184('0xb'),'collate':_0x8184('0xc')});};
\ No newline at end of file
+var _0x0a06=['request-promise','path','rimraf','./userNotification.attributes','define','UserNotification','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird'];(function(_0x1a4966,_0x120f62){var _0x5203c8=function(_0x48108f){while(--_0x48108f){_0x1a4966['push'](_0x1a4966['shift']());}};_0x5203c8(++_0x120f62);}(_0x0a06,0xaf));var _0x60a0=function(_0x546f45,_0x3a0b48){_0x546f45=_0x546f45-0x0;var _0x3058cc=_0x0a06[_0x546f45];return _0x3058cc;};'use strict';var _=require(_0x60a0('0x0'));var util=require(_0x60a0('0x1'));var logger=require(_0x60a0('0x2'))(_0x60a0('0x3'));var moment=require('moment');var BPromise=require(_0x60a0('0x4'));var rp=require(_0x60a0('0x5'));var fs=require('fs');var path=require(_0x60a0('0x6'));var rimraf=require(_0x60a0('0x7'));var config=require('../../config/environment');var attributes=require(_0x60a0('0x8'));module['exports']=function(_0x484820,_0x10fce7){return _0x484820[_0x60a0('0x9')](_0x60a0('0xa'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x60a0('0xb')});};
\ No newline at end of file
index 6fbd22f..918e927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b18=['info','UserNotification,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','./userNotification.socket','register','request','then'];(function(_0x579bc0,_0x4c1d82){var _0x320f29=function(_0x4cd885){while(--_0x4cd885){_0x579bc0['push'](_0x579bc0['shift']());}};_0x320f29(++_0x4c1d82);}(_0x8b18,0x17f));var _0x88b1=function(_0x2d5ba6,_0x207e34){_0x2d5ba6=_0x2d5ba6-0x0;var _0x55f046=_0x8b18[_0x2d5ba6];return _0x55f046;};'use strict';var _=require(_0x88b1('0x0'));var util=require(_0x88b1('0x1'));var moment=require('moment');var BPromise=require(_0x88b1('0x2'));var rs=require(_0x88b1('0x3'));var fs=require('fs');var Redis=require(_0x88b1('0x4'));var db=require(_0x88b1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x88b1('0x6'))(_0x88b1('0x7'));var config=require(_0x88b1('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x88b1('0x9')]({'port':0x232a});config[_0x88b1('0xa')]=_[_0x88b1('0xb')](config['redis'],{'host':_0x88b1('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x88b1('0xa')]));require(_0x88b1('0xd'))[_0x88b1('0xe')](socket);function respondWithRpcPromise(_0x58941e,_0x52161a,_0x253245){return new BPromise(function(_0x421231,_0x469f08){return client[_0x88b1('0xf')](_0x58941e,_0x253245)[_0x88b1('0x10')](function(_0x1ce658){logger[_0x88b1('0x11')](_0x88b1('0x12'),_0x52161a,_0x88b1('0x13'));logger['debug']('UserNotification,\x20%s,\x20%s,\x20%s',_0x52161a,_0x88b1('0x13'),JSON[_0x88b1('0x14')](_0x1ce658));if(_0x1ce658[_0x88b1('0x15')]){if(_0x1ce658['error'][_0x88b1('0x16')]===0x1f4){logger[_0x88b1('0x15')]('UserNotification,\x20%s,\x20%s',_0x52161a,_0x1ce658[_0x88b1('0x15')][_0x88b1('0x17')]);return _0x469f08(_0x1ce658[_0x88b1('0x15')][_0x88b1('0x17')]);}logger[_0x88b1('0x15')]('UserNotification,\x20%s,\x20%s',_0x52161a,_0x1ce658['error'][_0x88b1('0x17')]);return _0x421231(_0x1ce658[_0x88b1('0x15')][_0x88b1('0x17')]);}else{logger[_0x88b1('0x11')](_0x88b1('0x12'),_0x52161a,_0x88b1('0x13'));_0x421231(_0x1ce658[_0x88b1('0x18')][_0x88b1('0x17')]);}})['catch'](function(_0x55739d){logger['error']('UserNotification,\x20%s,\x20%s',_0x52161a,_0x55739d);_0x469f08(_0x55739d);});});}
\ No newline at end of file
+var _0x92b4=['util','moment','randomstring','ioredis','../../config/utils','../../config/environment','client','defaults','localhost','redis','./userNotification.socket','register','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x537e33,_0x1091f9){var _0x4b2329=function(_0x1e2091){while(--_0x1e2091){_0x537e33['push'](_0x537e33['shift']());}};_0x4b2329(++_0x1091f9);}(_0x92b4,0x7d));var _0x492b=function(_0x201753,_0x2a5f4a){_0x201753=_0x201753-0x0;var _0x3a7afd=_0x92b4[_0x201753];return _0x3a7afd;};'use strict';var _=require('lodash');var util=require(_0x492b('0x0'));var moment=require(_0x492b('0x1'));var BPromise=require('bluebird');var rs=require(_0x492b('0x2'));var fs=require('fs');var Redis=require(_0x492b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x492b('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x492b('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x492b('0x6')]['http']({'port':0x232a});config['redis']=_[_0x492b('0x7')](config['redis'],{'host':_0x492b('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x492b('0x9')]));require(_0x492b('0xa'))[_0x492b('0xb')](socket);function respondWithRpcPromise(_0x192a2b,_0x564044,_0x105381){return new BPromise(function(_0x1d9de1,_0x240171){return client[_0x492b('0xc')](_0x192a2b,_0x105381)[_0x492b('0xd')](function(_0x1652ff){logger[_0x492b('0xe')](_0x492b('0xf'),_0x564044,_0x492b('0x10'));logger[_0x492b('0x11')](_0x492b('0x12'),_0x564044,'request\x20sent',JSON[_0x492b('0x13')](_0x1652ff));if(_0x1652ff[_0x492b('0x14')]){if(_0x1652ff['error'][_0x492b('0x15')]===0x1f4){logger['error'](_0x492b('0xf'),_0x564044,_0x1652ff[_0x492b('0x14')][_0x492b('0x16')]);return _0x240171(_0x1652ff[_0x492b('0x14')][_0x492b('0x16')]);}logger['error'](_0x492b('0xf'),_0x564044,_0x1652ff[_0x492b('0x14')][_0x492b('0x16')]);return _0x1d9de1(_0x1652ff['error'][_0x492b('0x16')]);}else{logger[_0x492b('0xe')]('UserNotification,\x20%s,\x20%s',_0x564044,'request\x20sent');_0x1d9de1(_0x1652ff[_0x492b('0x17')][_0x492b('0x16')]);}})[_0x492b('0x18')](function(_0x1170f0){logger[_0x492b('0x14')](_0x492b('0xf'),_0x564044,_0x1170f0);_0x240171(_0x1170f0);});});}
\ No newline at end of file
index d6b47cc..99f42cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x750f=['register','length','./userNotification.events','emit'];(function(_0x3a7a9c,_0x24f7d6){var _0x59156e=function(_0x5bc930){while(--_0x5bc930){_0x3a7a9c['push'](_0x3a7a9c['shift']());}};_0x59156e(++_0x24f7d6);}(_0x750f,0x1e6));var _0xf750=function(_0x29e33e,_0x257491){_0x29e33e=_0x29e33e-0x0;var _0x265092=_0x750f[_0x29e33e];return _0x265092;};'use strict';var UserNotificationEvents=require(_0xf750('0x0'));var events=['save','remove','update'];function createListener(_0x32e89c,_0x162421){return function(_0x5698ed){_0x162421[_0xf750('0x1')](_0x32e89c,_0x5698ed);};}function removeListener(_0x38a1e5,_0xafbf8e){return function(){UserNotificationEvents['removeListener'](_0x38a1e5,_0xafbf8e);};}exports[_0xf750('0x2')]=function(_0x17006c){for(var _0x113b35=0x0,_0x22225c=events[_0xf750('0x3')];_0x113b35<_0x22225c;_0x113b35++){var _0x16c40f=events[_0x113b35];var _0xccee6e=createListener('userNotification:'+_0x16c40f,_0x17006c);UserNotificationEvents['on'](_0x16c40f,_0xccee6e);}};
\ No newline at end of file
+var _0x6834=['emit','removeListener','register','userNotification:','./userNotification.events','save','remove','update'];(function(_0x526c42,_0x4fa5c3){var _0x3506cb=function(_0x1fcfb0){while(--_0x1fcfb0){_0x526c42['push'](_0x526c42['shift']());}};_0x3506cb(++_0x4fa5c3);}(_0x6834,0x1e4));var _0x4683=function(_0x2460ef,_0xe88c22){_0x2460ef=_0x2460ef-0x0;var _0x400f4a=_0x6834[_0x2460ef];return _0x400f4a;};'use strict';var UserNotificationEvents=require(_0x4683('0x0'));var events=[_0x4683('0x1'),_0x4683('0x2'),_0x4683('0x3')];function createListener(_0x3a3fff,_0x4a2d51){return function(_0x189c35){_0x4a2d51[_0x4683('0x4')](_0x3a3fff,_0x189c35);};}function removeListener(_0x26df41,_0x5ae9a7){return function(){UserNotificationEvents[_0x4683('0x5')](_0x26df41,_0x5ae9a7);};}exports[_0x4683('0x6')]=function(_0x4cfe3a){for(var _0x100f7f=0x0,_0x183c98=events['length'];_0x100f7f<_0x183c98;_0x100f7f++){var _0x136e59=events[_0x100f7f];var _0x1ca67d=createListener(_0x4683('0x7')+_0x136e59,_0x4cfe3a);UserNotificationEvents['on'](_0x136e59,_0x1ca67d);}};
\ No newline at end of file
index 7203e65..ddb6242 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x5d5cd5,_0x15f67b){var _0x57b340=function(_0x45b43b){while(--_0x45b43b){_0x5d5cd5['push'](_0x5d5cd5['shift']());}};_0x57b340(++_0x15f67b);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x409576,_0x1384b1){var _0x4a8db5=function(_0x3fa1e5){while(--_0x3fa1e5){_0x409576['push'](_0x409576['shift']());}};_0x4a8db5(++_0x1384b1);}(_0x70e0,0x17b));var _0x070e=function(_0x14a751,_0x167805){_0x14a751=_0x14a751-0x0;var _0x1c4136=_0x70e0[_0x14a751];return _0x1c4136;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index 55691e8..f71fc7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b6=['sequelize','exports','INTEGER'];(function(_0x409708,_0x2d172e){var _0x311541=function(_0x7dda3a){while(--_0x7dda3a){_0x409708['push'](_0x409708['shift']());}};_0x311541(++_0x2d172e);}(_0xe5b6,0xc3));var _0x6e5b=function(_0x53ecf3,_0x300bb2){_0x53ecf3=_0x53ecf3-0x0;var _0xd8997d=_0xe5b6[_0x53ecf3];return _0xd8997d;};'use strict';var Sequelize=require(_0x6e5b('0x0'));module[_0x6e5b('0x1')]={'penalty':{'type':Sequelize[_0x6e5b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2dab=['sequelize','exports','INTEGER'];(function(_0x16d253,_0xa60066){var _0x21fba2=function(_0x33c9ef){while(--_0x33c9ef){_0x16d253['push'](_0x16d253['shift']());}};_0x21fba2(++_0xa60066);}(_0x2dab,0x1f2));var _0xb2da=function(_0xa18024,_0x727dfc){_0xa18024=_0xa18024-0x0;var _0x563379=_0x2dab[_0xa18024];return _0x563379;};'use strict';var Sequelize=require(_0xb2da('0x0'));module[_0xb2da('0x1')]={'penalty':{'type':Sequelize[_0xb2da('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 91346ca..1631eb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dba=['../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','lodash'];(function(_0x4e7d25,_0x58285f){var _0x526fe6=function(_0x4f0aec){while(--_0x4f0aec){_0x4e7d25['push'](_0x4e7d25['shift']());}};_0x526fe6(++_0x58285f);}(_0x4dba,0x15d));var _0xa4db=function(_0x3a056b,_0x4d0e47){_0x3a056b=_0x3a056b-0x0;var _0x4e8d19=_0x4dba[_0x3a056b];return _0x4e8d19;};'use strict';var _=require(_0xa4db('0x0'));var util=require('util');var logger=require(_0xa4db('0x1'))('api');var moment=require(_0xa4db('0x2'));var BPromise=require(_0xa4db('0x3'));var rp=require(_0xa4db('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa4db('0x5'));var config=require(_0xa4db('0x6'));var attributes=require(_0xa4db('0x7'));module[_0xa4db('0x8')]=function(_0x23dca1,_0x1e500b){return _0x23dca1[_0xa4db('0x9')]('UserOpenchannelQueue',attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x956c=['rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x34c8b9,_0x3d9d91){var _0x555866=function(_0x333435){while(--_0x333435){_0x34c8b9['push'](_0x34c8b9['shift']());}};_0x555866(++_0x3d9d91);}(_0x956c,0x1c7));var _0xc956=function(_0x2b6ef3,_0x488137){_0x2b6ef3=_0x2b6ef3-0x0;var _0x287278=_0x956c[_0x2b6ef3];return _0x287278;};'use strict';var _=require(_0xc956('0x0'));var util=require('util');var logger=require(_0xc956('0x1'))(_0xc956('0x2'));var moment=require(_0xc956('0x3'));var BPromise=require(_0xc956('0x4'));var rp=require(_0xc956('0x5'));var fs=require('fs');var path=require(_0xc956('0x6'));var rimraf=require(_0xc956('0x7'));var config=require(_0xc956('0x8'));var attributes=require(_0xc956('0x9'));module[_0xc956('0xa')]=function(_0x6f4896,_0x1a3644){return _0x6f4896[_0xc956('0xb')](_0xc956('0xc'),attributes,{'tableName':_0xc956('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0fd41ec..34110b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3963=['catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x3963,0xdd));var _0x3396=function(_0x15d18f,_0x126b0e){_0x15d18f=_0x15d18f-0x0;var _0xd12bf7=_0x3963[_0x15d18f];return _0xd12bf7;};'use strict';var _=require('lodash');var util=require(_0x3396('0x0'));var moment=require(_0x3396('0x1'));var BPromise=require(_0x3396('0x2'));var rs=require(_0x3396('0x3'));var fs=require('fs');var Redis=require(_0x3396('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3396('0x5'));var logger=require(_0x3396('0x6'))('rpc');var config=require(_0x3396('0x7'));var jayson=require(_0x3396('0x8'));var client=jayson['client'][_0x3396('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2b68f4,_0x1dae15,_0x1dcfd9){return new BPromise(function(_0x36969b,_0x4ce830){return client[_0x3396('0xa')](_0x2b68f4,_0x1dcfd9)[_0x3396('0xb')](function(_0x16cfff){logger['info'](_0x3396('0xc'),_0x1dae15,_0x3396('0xd'));logger[_0x3396('0xe')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x1dae15,_0x3396('0xd'),JSON[_0x3396('0xf')](_0x16cfff));if(_0x16cfff['error']){if(_0x16cfff[_0x3396('0x10')][_0x3396('0x11')]===0x1f4){logger[_0x3396('0x10')](_0x3396('0xc'),_0x1dae15,_0x16cfff[_0x3396('0x10')][_0x3396('0x12')]);return _0x4ce830(_0x16cfff[_0x3396('0x10')][_0x3396('0x12')]);}logger[_0x3396('0x10')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x1dae15,_0x16cfff[_0x3396('0x10')][_0x3396('0x12')]);return _0x36969b(_0x16cfff[_0x3396('0x10')][_0x3396('0x12')]);}else{logger[_0x3396('0x13')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x1dae15,_0x3396('0xd'));_0x36969b(_0x16cfff[_0x3396('0x14')][_0x3396('0x12')]);}})[_0x3396('0x15')](function(_0x31761b){logger[_0x3396('0x10')](_0x3396('0xc'),_0x1dae15,_0x31761b);_0x4ce830(_0x31761b);});});}
\ No newline at end of file
+var _0xaa17=['http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','debug','request\x20sent','error','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0xfa627b,_0x3cbb17){var _0x42a4b9=function(_0x2375a1){while(--_0x2375a1){_0xfa627b['push'](_0xfa627b['shift']());}};_0x42a4b9(++_0x3cbb17);}(_0xaa17,0x6e));var _0x7aa1=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0xaa17[_0xefd519];return _0x4bb882;};'use strict';var _=require(_0x7aa1('0x0'));var util=require('util');var moment=require(_0x7aa1('0x1'));var BPromise=require(_0x7aa1('0x2'));var rs=require(_0x7aa1('0x3'));var fs=require('fs');var Redis=require(_0x7aa1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7aa1('0x5'));var logger=require('../../config/logger')(_0x7aa1('0x6'));var config=require(_0x7aa1('0x7'));var jayson=require(_0x7aa1('0x8'));var client=jayson[_0x7aa1('0x9')][_0x7aa1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a5dbd,_0x3a1b78,_0x2d57ce){return new BPromise(function(_0x7960e9,_0x4cf1f5){return client[_0x7aa1('0xb')](_0x3a5dbd,_0x2d57ce)[_0x7aa1('0xc')](function(_0x3861c5){logger[_0x7aa1('0xd')](_0x7aa1('0xe'),_0x3a1b78,'request\x20sent');logger[_0x7aa1('0xf')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x3a1b78,_0x7aa1('0x10'),JSON['stringify'](_0x3861c5));if(_0x3861c5[_0x7aa1('0x11')]){if(_0x3861c5[_0x7aa1('0x11')]['code']===0x1f4){logger[_0x7aa1('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x3a1b78,_0x3861c5[_0x7aa1('0x11')][_0x7aa1('0x12')]);return _0x4cf1f5(_0x3861c5[_0x7aa1('0x11')][_0x7aa1('0x12')]);}logger[_0x7aa1('0x11')](_0x7aa1('0xe'),_0x3a1b78,_0x3861c5[_0x7aa1('0x11')][_0x7aa1('0x12')]);return _0x7960e9(_0x3861c5[_0x7aa1('0x11')][_0x7aa1('0x12')]);}else{logger[_0x7aa1('0xd')](_0x7aa1('0xe'),_0x3a1b78,_0x7aa1('0x10'));_0x7960e9(_0x3861c5['result'][_0x7aa1('0x12')]);}})[_0x7aa1('0x13')](function(_0x5dfa36){logger[_0x7aa1('0x11')](_0x7aa1('0xe'),_0x3a1b78,_0x5dfa36);_0x4cf1f5(_0x5dfa36);});});}
\ No newline at end of file
index b43b097..14e9a60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3407=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','index','describe','show','getSections','/:id/resources','getResources','post','/:id/clone','clone','addSections','put','/:id','delete','/:id/sections','removeResources','exports','multer','util','path'];(function(_0x3504a2,_0x5ca975){var _0x454e98=function(_0x494430){while(--_0x494430){_0x3504a2['push'](_0x3504a2['shift']());}};_0x454e98(++_0x5ca975);}(_0x3407,0x177));var _0x7340=function(_0x8f7418,_0x5e7511){_0x8f7418=_0x8f7418-0x0;var _0x36ff7b=_0x3407[_0x8f7418];return _0x36ff7b;};'use strict';var multer=require(_0x7340('0x0'));var util=require(_0x7340('0x1'));var path=require(_0x7340('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7340('0x3')]();var fs_extra=require(_0x7340('0x4'));var auth=require(_0x7340('0x5'));var interaction=require(_0x7340('0x6'));var config=require(_0x7340('0x7'));var controller=require(_0x7340('0x8'));router[_0x7340('0x9')]('/',auth[_0x7340('0xa')](),controller[_0x7340('0xb')]);router['get']('/describe',auth[_0x7340('0xa')](),controller[_0x7340('0xc')]);router[_0x7340('0x9')]('/:id',auth[_0x7340('0xa')](),controller[_0x7340('0xd')]);router[_0x7340('0x9')]('/:id/sections',auth['isAuthenticated'](),controller[_0x7340('0xe')]);router[_0x7340('0x9')](_0x7340('0xf'),auth[_0x7340('0xa')](),controller[_0x7340('0x10')]);router['post']('/',auth[_0x7340('0xa')](),controller['create']);router[_0x7340('0x11')](_0x7340('0x12'),auth[_0x7340('0xa')](),controller[_0x7340('0x13')]);router[_0x7340('0x11')]('/:id/sections',auth[_0x7340('0xa')](),controller[_0x7340('0x14')]);router['post'](_0x7340('0xf'),auth[_0x7340('0xa')](),controller['addResources']);router[_0x7340('0x15')](_0x7340('0x16'),auth[_0x7340('0xa')](),controller['update']);router[_0x7340('0x17')](_0x7340('0x16'),auth[_0x7340('0xa')](),controller['destroy']);router[_0x7340('0x17')](_0x7340('0x18'),auth['isAuthenticated'](),controller['removeSections']);router[_0x7340('0x17')](_0x7340('0xf'),auth[_0x7340('0xa')](),controller[_0x7340('0x19')]);module[_0x7340('0x1a')]=router;
\ No newline at end of file
+var _0xb36e=['removeSections','removeResources','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','isAuthenticated','get','/describe','describe','/:id','show','getSections','/:id/resources','getResources','create','post','/:id/clone','clone','addSections','put','update','destroy','delete','/:id/sections'];(function(_0xcb7c52,_0x273306){var _0x18292c=function(_0x27a0f3){while(--_0x27a0f3){_0xcb7c52['push'](_0xcb7c52['shift']());}};_0x18292c(++_0x273306);}(_0xb36e,0x9e));var _0xeb36=function(_0x3e53c6,_0x189960){_0x3e53c6=_0x3e53c6-0x0;var _0x2426e7=_0xb36e[_0x3e53c6];return _0x2426e7;};'use strict';var multer=require(_0xeb36('0x0'));var util=require('util');var path=require(_0xeb36('0x1'));var timeout=require(_0xeb36('0x2'));var express=require('express');var router=express[_0xeb36('0x3')]();var fs_extra=require(_0xeb36('0x4'));var auth=require(_0xeb36('0x5'));var interaction=require(_0xeb36('0x6'));var config=require(_0xeb36('0x7'));var controller=require(_0xeb36('0x8'));router['get']('/',auth[_0xeb36('0x9')](),controller['index']);router[_0xeb36('0xa')](_0xeb36('0xb'),auth['isAuthenticated'](),controller[_0xeb36('0xc')]);router[_0xeb36('0xa')](_0xeb36('0xd'),auth[_0xeb36('0x9')](),controller[_0xeb36('0xe')]);router[_0xeb36('0xa')]('/:id/sections',auth[_0xeb36('0x9')](),controller[_0xeb36('0xf')]);router[_0xeb36('0xa')](_0xeb36('0x10'),auth['isAuthenticated'](),controller[_0xeb36('0x11')]);router['post']('/',auth[_0xeb36('0x9')](),controller[_0xeb36('0x12')]);router[_0xeb36('0x13')](_0xeb36('0x14'),auth[_0xeb36('0x9')](),controller[_0xeb36('0x15')]);router[_0xeb36('0x13')]('/:id/sections',auth['isAuthenticated'](),controller[_0xeb36('0x16')]);router[_0xeb36('0x13')]('/:id/resources',auth[_0xeb36('0x9')](),controller['addResources']);router[_0xeb36('0x17')](_0xeb36('0xd'),auth[_0xeb36('0x9')](),controller[_0xeb36('0x18')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xeb36('0x19')]);router[_0xeb36('0x1a')](_0xeb36('0x1b'),auth['isAuthenticated'](),controller[_0xeb36('0x1c')]);router[_0xeb36('0x1a')](_0xeb36('0x10'),auth[_0xeb36('0x9')](),controller[_0xeb36('0x1d')]);module[_0xeb36('0x1e')]=router;
\ No newline at end of file
index ca68a50..58688fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ed9=['join','getDataValue','split','BOOLEAN','sequelize','STRING','name','setDataValue','crudPermissions'];(function(_0x59af3a,_0x37de92){var _0x574a73=function(_0x12f719){while(--_0x12f719){_0x59af3a['push'](_0x59af3a['shift']());}};_0x574a73(++_0x37de92);}(_0x3ed9,0x151));var _0x93ed=function(_0x4c80d7,_0x2bef29){_0x4c80d7=_0x4c80d7-0x0;var _0x3c5095=_0x3ed9[_0x4c80d7];return _0x3c5095;};'use strict';var Sequelize=require(_0x93ed('0x0'));module['exports']={'name':{'type':Sequelize[_0x93ed('0x1')],'allowNull':![],'unique':_0x93ed('0x2')},'crudPermissions':{'type':Sequelize[_0x93ed('0x1')],'set':function(_0x27a1d5){this[_0x93ed('0x3')](_0x93ed('0x4'),_0x27a1d5?_0x27a1d5[_0x93ed('0x5')](''):[]);},'get':function(){return this[_0x93ed('0x6')](_0x93ed('0x4'))?this[_0x93ed('0x6')](_0x93ed('0x4'))[_0x93ed('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x93ed('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x93ed('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x93ed('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x93ed('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x93ed('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x93ed('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x93ed('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xb60e=['STRING','name','crudPermissions','join','getDataValue','split','BOOLEAN','sequelize','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb60e,0x103));var _0xeb60=function(_0x154cb5,_0x1a8d5a){_0x154cb5=_0x154cb5-0x0;var _0x3f574f=_0xb60e[_0x154cb5];return _0x3f574f;};'use strict';var Sequelize=require(_0xeb60('0x0'));module[_0xeb60('0x1')]={'name':{'type':Sequelize[_0xeb60('0x2')],'allowNull':![],'unique':_0xeb60('0x3')},'crudPermissions':{'type':Sequelize[_0xeb60('0x2')],'set':function(_0x17c84c){this['setDataValue'](_0xeb60('0x4'),_0x17c84c?_0x17c84c[_0xeb60('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0xeb60('0x4'))?this[_0xeb60('0x6')](_0xeb60('0x4'))[_0xeb60('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xeb60('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xeb60('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xeb60('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xeb60('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xeb60('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xeb60('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xeb60('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xeb60('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index e4dff9a..1187330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc692=['sequelize','sectionId','userProfileId','removeSections','ids','getSections','enabled','includes','subsections','push','forEach','Plugin','resourceId','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','hasOwnProperty','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./userProfile.socket','register','end','undefined','limit','count','offset','status','set','json','apply','reject','update','then','destroy','sendStatus','stack','name','index','UserProfile','rawAttributes','fieldName','type','model','map','query','filters','intersection','fields','attributes','nolimit','sort','where','filter','merge','options','includeAll','include','rows','catch','show','keys','length','find','create','body','clone','params','get','omit','createdAt','updatedAt','crudPermissions','transaction','UserProfileSection','findAll','each','autoAssociation','UserProfileResource','Resources','addSections'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc692,0x15f));var _0x2c69=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0xc692[_0x24061a];return _0x82054e;};'use strict';var emlformat=require(_0x2c69('0x0'));var rimraf=require(_0x2c69('0x1'));var zipdir=require(_0x2c69('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2c69('0x3'));var BPromise=require(_0x2c69('0x4'));var Mustache=require(_0x2c69('0x5'));var util=require(_0x2c69('0x6'));var path=require(_0x2c69('0x7'));var sox=require(_0x2c69('0x8'));var csv=require(_0x2c69('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2c69('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2c69('0xb'));var jsforce=require(_0x2c69('0xc'));var deskjs=require(_0x2c69('0xd'));var toCsv=require(_0x2c69('0x9'));var querystring=require(_0x2c69('0xe'));var Papa=require(_0x2c69('0xf'));var Redis=require('ioredis');var authService=require(_0x2c69('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x2c69('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2c69('0x12'))(_0x2c69('0x13'));var utils=require(_0x2c69('0x14'));var config=require(_0x2c69('0x15'));var licenseUtil=require(_0x2c69('0x16'));var db=require(_0x2c69('0x17'))['db'];config['redis']=_[_0x2c69('0x18')](config['redis'],{'host':_0x2c69('0x19'),'port':0x18eb});var socket=require(_0x2c69('0x1a'))(new Redis(config[_0x2c69('0x1b')]));require(_0x2c69('0x1c'))[_0x2c69('0x1d')](socket);function respondWithStatusCode(_0x211496,_0x5747d8){_0x5747d8=_0x5747d8||0xcc;return function(_0x2d0df5){if(_0x2d0df5){return _0x211496['sendStatus'](_0x5747d8);}return _0x211496['status'](_0x5747d8)[_0x2c69('0x1e')]();};}function respondWithResult(_0x4cabe5,_0x11649b){_0x11649b=_0x11649b||0xc8;return function(_0x5f5bd5){if(_0x5f5bd5){return _0x4cabe5['status'](_0x11649b)['json'](_0x5f5bd5);}};}function respondWithFilteredResult(_0x3bd4a3,_0x35d604){return function(_0xa1c51){if(_0xa1c51){var _0x5b4ca0=typeof _0x35d604['offset']===_0x2c69('0x1f')&&typeof _0x35d604[_0x2c69('0x20')]===_0x2c69('0x1f');var _0x5a9d56=_0xa1c51[_0x2c69('0x21')];var _0x5c3af1=_0x5b4ca0?0x0:_0x35d604[_0x2c69('0x22')];var _0x6f3a7e=_0x5b4ca0?_0xa1c51[_0x2c69('0x21')]:_0x35d604[_0x2c69('0x22')]+_0x35d604['limit'];var _0x823db7;if(_0x6f3a7e>=_0x5a9d56){_0x6f3a7e=_0x5a9d56;_0x823db7=0xc8;}else{_0x823db7=0xce;}_0x3bd4a3[_0x2c69('0x23')](_0x823db7);return _0x3bd4a3[_0x2c69('0x24')]('Content-Range',_0x5c3af1+'-'+_0x6f3a7e+'/'+_0x5a9d56)[_0x2c69('0x25')](_0xa1c51);}return null;};}function patchUpdates(_0x5775fa){return function(_0x528683){try{jsonpatch[_0x2c69('0x26')](_0x528683,_0x5775fa,!![]);}catch(_0x5cc6dc){return BPromise[_0x2c69('0x27')](_0x5cc6dc);}return _0x528683['save']();};}function saveUpdates(_0x58f00f,_0x3fb15c){return function(_0x39f7db){if(_0x39f7db){return _0x39f7db[_0x2c69('0x28')](_0x58f00f)[_0x2c69('0x29')](function(_0x12dbca){return _0x12dbca;});}return null;};}function removeEntity(_0x2edc86,_0x16425d){return function(_0x2a0569){if(_0x2a0569){return _0x2a0569[_0x2c69('0x2a')]()['then'](function(){_0x2edc86[_0x2c69('0x23')](0xcc)[_0x2c69('0x1e')]();});}};}function handleEntityNotFound(_0x4a7ebf,_0x1b29b8){return function(_0xd85b20){if(!_0xd85b20){_0x4a7ebf[_0x2c69('0x2b')](0x194);}return _0xd85b20;};}function handleError(_0x4c6ebe,_0x321f95){_0x321f95=_0x321f95||0x1f4;return function(_0xfe88bf){logger['error'](_0xfe88bf[_0x2c69('0x2c')]);if(_0xfe88bf[_0x2c69('0x2d')]){delete _0xfe88bf[_0x2c69('0x2d')];}_0x4c6ebe[_0x2c69('0x23')](_0x321f95)['send'](_0xfe88bf);};}exports[_0x2c69('0x2e')]=function(_0x77babf,_0x47a853){var _0x5c56a9={},_0x4ada2a={},_0x41d912={'count':0x0,'rows':[]};var _0x5cd649=_['map'](db[_0x2c69('0x2f')][_0x2c69('0x30')],function(_0x389dbf){return{'name':_0x389dbf[_0x2c69('0x31')],'type':_0x389dbf[_0x2c69('0x32')]['key']};});_0x4ada2a[_0x2c69('0x33')]=_[_0x2c69('0x34')](_0x5cd649,_0x2c69('0x2d'));_0x4ada2a[_0x2c69('0x35')]=_['keys'](_0x77babf[_0x2c69('0x35')]);_0x4ada2a[_0x2c69('0x36')]=_[_0x2c69('0x37')](_0x4ada2a[_0x2c69('0x33')],_0x4ada2a[_0x2c69('0x35')]);_0x5c56a9['attributes']=_[_0x2c69('0x37')](_0x4ada2a[_0x2c69('0x33')],qs[_0x2c69('0x38')](_0x77babf[_0x2c69('0x35')][_0x2c69('0x38')]));_0x5c56a9[_0x2c69('0x39')]=_0x5c56a9['attributes']['length']?_0x5c56a9[_0x2c69('0x39')]:_0x4ada2a[_0x2c69('0x33')];if(!_0x77babf[_0x2c69('0x35')]['hasOwnProperty'](_0x2c69('0x3a'))){_0x5c56a9[_0x2c69('0x20')]=qs[_0x2c69('0x20')](_0x77babf['query'][_0x2c69('0x20')]);_0x5c56a9[_0x2c69('0x22')]=qs[_0x2c69('0x22')](_0x77babf[_0x2c69('0x35')][_0x2c69('0x22')]);}_0x5c56a9['order']=qs[_0x2c69('0x3b')](_0x77babf[_0x2c69('0x35')][_0x2c69('0x3b')]);_0x5c56a9[_0x2c69('0x3c')]=qs[_0x2c69('0x36')](_['pick'](_0x77babf[_0x2c69('0x35')],_0x4ada2a[_0x2c69('0x36')]),_0x5cd649);if(_0x77babf[_0x2c69('0x35')][_0x2c69('0x3d')]){_0x5c56a9[_0x2c69('0x3c')]=_[_0x2c69('0x3e')](_0x5c56a9[_0x2c69('0x3c')],{'$or':_[_0x2c69('0x34')](_0x5cd649,function(_0x5c0853){if(_0x5c0853[_0x2c69('0x32')]!=='VIRTUAL'){var _0x5f0d69={};_0x5f0d69[_0x5c0853['name']]={'$like':'%'+_0x77babf[_0x2c69('0x35')][_0x2c69('0x3d')]+'%'};return _0x5f0d69;}})});}_0x5c56a9=_['merge']({},_0x5c56a9,_0x77babf[_0x2c69('0x3f')]);var _0x46ae32={'where':_0x5c56a9[_0x2c69('0x3c')]};return db['UserProfile']['count'](_0x46ae32)[_0x2c69('0x29')](function(_0x23feb4){_0x41d912['count']=_0x23feb4;if(_0x77babf['query'][_0x2c69('0x40')]){_0x5c56a9[_0x2c69('0x41')]=[{'all':!![]}];}return db[_0x2c69('0x2f')]['findAll'](_0x5c56a9);})[_0x2c69('0x29')](function(_0xd63179){_0x41d912[_0x2c69('0x42')]=_0xd63179;return _0x41d912;})['then'](respondWithFilteredResult(_0x47a853,_0x5c56a9))[_0x2c69('0x43')](handleError(_0x47a853,null));};exports[_0x2c69('0x44')]=function(_0x540d06,_0x7176ee){var _0x14cd5c={'raw':![],'where':{'id':_0x540d06['params']['id']}},_0x2068a0={};_0x2068a0[_0x2c69('0x33')]=_['keys'](db[_0x2c69('0x2f')]['rawAttributes']);_0x2068a0[_0x2c69('0x35')]=_[_0x2c69('0x45')](_0x540d06['query']);_0x2068a0[_0x2c69('0x36')]=_[_0x2c69('0x37')](_0x2068a0[_0x2c69('0x33')],_0x2068a0[_0x2c69('0x35')]);_0x14cd5c[_0x2c69('0x39')]=_[_0x2c69('0x37')](_0x2068a0['model'],qs[_0x2c69('0x38')](_0x540d06['query'][_0x2c69('0x38')]));_0x14cd5c[_0x2c69('0x39')]=_0x14cd5c[_0x2c69('0x39')][_0x2c69('0x46')]?_0x14cd5c['attributes']:_0x2068a0[_0x2c69('0x33')];if(_0x540d06[_0x2c69('0x35')]['includeAll']){_0x14cd5c['include']=[{'all':!![]}];}_0x14cd5c=_[_0x2c69('0x3e')]({},_0x14cd5c,_0x540d06[_0x2c69('0x3f')]);return db[_0x2c69('0x2f')][_0x2c69('0x47')](_0x14cd5c)[_0x2c69('0x29')](handleEntityNotFound(_0x7176ee,null))['then'](respondWithResult(_0x7176ee,null))['catch'](handleError(_0x7176ee,null));};exports[_0x2c69('0x48')]=function(_0x409b9c,_0x5d338d){return db[_0x2c69('0x2f')][_0x2c69('0x48')](_0x409b9c[_0x2c69('0x49')],{})[_0x2c69('0x29')](respondWithResult(_0x5d338d,0xc9))[_0x2c69('0x43')](handleError(_0x5d338d,null));};exports[_0x2c69('0x4a')]=function(_0x3ca9ff,_0x114beb){var _0x97c019={'where':{'id':_0x3ca9ff[_0x2c69('0x4b')]['id']}},_0x465e45={};_0x465e45[_0x2c69('0x33')]=_[_0x2c69('0x45')](db[_0x2c69('0x2f')][_0x2c69('0x30')]);_0x97c019['attributes']=_[_0x2c69('0x37')](_0x465e45[_0x2c69('0x33')],qs['fields'](_0x3ca9ff[_0x2c69('0x35')]['fields']));_0x97c019[_0x2c69('0x39')]=_0x97c019[_0x2c69('0x39')]['length']?_0x97c019[_0x2c69('0x39')]:_0x465e45[_0x2c69('0x33')];if(_0x3ca9ff[_0x2c69('0x35')][_0x2c69('0x40')]){_0x97c019[_0x2c69('0x41')]=[{'all':!![]}];}_0x97c019=_[_0x2c69('0x3e')]({},_0x97c019,_0x3ca9ff[_0x2c69('0x3f')]);return db[_0x2c69('0x2f')][_0x2c69('0x47')](_0x97c019)[_0x2c69('0x29')](handleEntityNotFound(_0x114beb,null))['then'](function(_0x1c50dd){if(_0x1c50dd){var _0x2aeef9=_0x1c50dd[_0x2c69('0x4c')]({'plain':!![]});_0x2aeef9=qs[_0x2c69('0x4d')](_0x2aeef9,['id',_0x2c69('0x4e'),_0x2c69('0x4f'),_0x2c69('0x50')]);_0x3ca9ff['body']=_[_0x2c69('0x4d')](_0x3ca9ff[_0x2c69('0x49')],['id','createdAt','updatedAt']);return db['sequelize'][_0x2c69('0x51')](function(_0x3a960c){return db[_0x2c69('0x2f')]['create'](_['merge'](_0x2aeef9,_0x3ca9ff[_0x2c69('0x49')]),{'include':_0x3ca9ff['query'][_0x2c69('0x40')]?[{'all':!![]}]:undefined,'transaction':_0x3a960c})[_0x2c69('0x29')](function(_0xf8348e){var _0x1947d8=_0xf8348e[_0x2c69('0x4c')]({'plain':!![]});return db[_0x2c69('0x52')][_0x2c69('0x53')]({'where':{'userProfileId':_0x3ca9ff[_0x2c69('0x4b')]['id']},'raw':!![]})['then'](function(_0xfb795a){if(_0xfb795a){return BPromise[_0x2c69('0x54')](_0xfb795a,function(_0xf98abe){return new BPromise(function(_0x2246f3,_0x5cc979){if(_0xf98abe[_0x2c69('0x55')]===null||_0xf98abe[_0x2c69('0x55')]===0x1)_0x2246f3(null);return db[_0x2c69('0x56')][_0x2c69('0x53')]({'where':{'sectionId':_0xf98abe['id']},'raw':!![]})['then'](function(_0x1b122f){var _0x12f224=_[_0x2c69('0x34')](_0x1b122f,function(_0x5eac27){return qs[_0x2c69('0x4d')](_0x5eac27,['id',_0x2c69('0x4e'),_0x2c69('0x4f'),'sectionId']);});_0x2246f3(_0x12f224);})[_0x2c69('0x43')](function(_0xffb257){_0x5cc979(_0xffb257);});})[_0x2c69('0x29')](function(_0x5c297e){var _0x1111c8=qs[_0x2c69('0x4d')](_0xf98abe,['id',_0x2c69('0x4e'),_0x2c69('0x4f')]);_0x1111c8['userProfileId']=_0x1947d8['id'];if(_0x5c297e)_0x1111c8[_0x2c69('0x57')]=_0x5c297e;return _0x1111c8;})['then'](function(_0xca04d9){return db['UserProfileSection'][_0x2c69('0x48')](_0xca04d9,{'include':[{'model':db[_0x2c69('0x56')],'as':'Resources'}],'raw':!![],'transaction':_0x3a960c});});})[_0x2c69('0x29')](function(){return _0x1947d8;});}});});});}})[_0x2c69('0x29')](respondWithResult(_0x114beb,0xc9))[_0x2c69('0x43')](handleError(_0x114beb,null));};exports[_0x2c69('0x28')]=function(_0x1172eb,_0xf2add0){if(_0x1172eb['body']['id']){delete _0x1172eb[_0x2c69('0x49')]['id'];}return db[_0x2c69('0x2f')][_0x2c69('0x47')]({'where':{'id':_0x1172eb[_0x2c69('0x4b')]['id']}})['then'](handleEntityNotFound(_0xf2add0,null))['then'](saveUpdates(_0x1172eb[_0x2c69('0x49')],null))[_0x2c69('0x29')](respondWithResult(_0xf2add0,null))[_0x2c69('0x43')](handleError(_0xf2add0,null));};exports[_0x2c69('0x2a')]=function(_0x40f2c4,_0x135843){return db[_0x2c69('0x2f')][_0x2c69('0x47')]({'where':{'id':_0x40f2c4['params']['id']}})['then'](handleEntityNotFound(_0x135843,null))[_0x2c69('0x29')](removeEntity(_0x135843,null))[_0x2c69('0x43')](handleError(_0x135843,null));};exports['describe']=function(_0x2f9c11,_0x314df9){return db['UserProfile']['describe']()[_0x2c69('0x29')](respondWithResult(_0x314df9,null))[_0x2c69('0x43')](handleError(_0x314df9,null));};exports[_0x2c69('0x58')]=function(_0x137497,_0x247998){var _0x30a96a=_0x137497[_0x2c69('0x49')];return db['UserProfile']['find']({'where':{'id':_0x137497[_0x2c69('0x4b')]['id']}})[_0x2c69('0x29')](handleEntityNotFound(_0x247998,null))[_0x2c69('0x29')](function(_0x28e49b){if(_0x28e49b){return db[_0x2c69('0x59')][_0x2c69('0x51')](function(_0x47148d){return db['UserProfileSection'][_0x2c69('0x2a')]({'where':{'userProfileId':_0x137497[_0x2c69('0x4b')]['id'],'sectionId':_[_0x2c69('0x34')](_0x30a96a,function(_0xab7adf){return _0xab7adf[_0x2c69('0x5a')];})},'transaction':_0x47148d})[_0x2c69('0x29')](function(){var _0x55608b=_['map'](_0x30a96a,function(_0x5227af){_0x5227af[_0x2c69('0x5b')]=_0x137497['params']['id'];return _0x5227af;});var _0x3c2375=[];return BPromise[_0x2c69('0x54')](_0x55608b,function(_0x2cf853){return db[_0x2c69('0x52')][_0x2c69('0x48')](_0x2cf853,{'include':[{'model':db['UserProfileResource'],'as':_0x2c69('0x57')}],'raw':!![],'transaction':_0x47148d})[_0x2c69('0x29')](function(_0x18b4fc){_0x3c2375['push'](_0x18b4fc['get']({'plain':!![]}));});})[_0x2c69('0x29')](function(){return _0x3c2375;});});});}})[_0x2c69('0x29')](function(_0x56fc88){return _0x56fc88;})[_0x2c69('0x29')](respondWithResult(_0x247998,null))[_0x2c69('0x43')](handleError(_0x247998,null));};exports[_0x2c69('0x5c')]=function(_0x195909,_0x1ef843){var _0x1e4e34;return db[_0x2c69('0x2f')][_0x2c69('0x47')]({'where':{'id':_0x195909[_0x2c69('0x4b')]['id']},'attributes':['id','name']})[_0x2c69('0x29')](handleEntityNotFound(_0x1ef843,null))[_0x2c69('0x29')](function(_0x1d436a){if(_0x1d436a){_0x1e4e34=_0x1d436a;return db[_0x2c69('0x52')][_0x2c69('0x2a')]({'where':{'userProfileId':_0x195909[_0x2c69('0x4b')]['id'],'sectionId':_0x195909[_0x2c69('0x35')][_0x2c69('0x5d')]}});}})[_0x2c69('0x29')](function(){return _0x1e4e34;})['then'](respondWithStatusCode(_0x1ef843,null))['catch'](handleError(_0x1ef843,null));};exports[_0x2c69('0x5e')]=function(_0x51aad2,_0x48ec7c){var _0x4060a9=[];var _0x31c08a=[];return db[_0x2c69('0x52')][_0x2c69('0x53')]({'where':{'userProfileId':_0x51aad2[_0x2c69('0x4b')]['id']},'raw':!![]})[_0x2c69('0x29')](function(_0x39a6f8){_0x4060a9=_[_0x2c69('0x3d')](_0x39a6f8,function(_0x4b0360){return _0x4b0360[_0x2c69('0x5f')]===0x1||_[_0x2c69('0x60')]([0x3eb,0x709],_0x4b0360['sectionId']);});if(!_['isEmpty'](_0x4060a9)){return _[_0x2c69('0x34')](_0x4060a9,function(_0xfd8ff1){return _0xfd8ff1[_0x2c69('0x5a')];});}else{return;}})[_0x2c69('0x29')](function(_0x2ab91c){if(_0x2ab91c)_0x31c08a=_0x2ab91c;if(_['includes'](_0x31c08a,0x64)){var _0x3687c3=_[_0x2c69('0x47')](_0x4060a9,{'sectionId':0x64});return hasDefaultDashboard(_0x3687c3)[_0x2c69('0x29')](function(_0x20b1c1){return _[_0x2c69('0x34')](_0x4060a9,function(_0x342aca){if(_0x342aca['sectionId']===0x64){_0x342aca[_0x2c69('0x61')]=_0x20b1c1;}return _0x342aca;});});}else{return;}})[_0x2c69('0x29')](function(_0x4e12a6){if(_0x4e12a6)_0x4060a9=_0x4e12a6;if(_[_0x2c69('0x60')](_0x31c08a,0x3eb)){var _0x159839=_[_0x2c69('0x47')](_0x4060a9,{'sectionId':0x3eb});return getCustomDashboards(_0x159839)[_0x2c69('0x29')](function(_0x21536a){return _['map'](_0x4060a9,function(_0x410bdf){if(_0x159839[_0x2c69('0x5f')]){if(_0x410bdf[_0x2c69('0x5a')]===0x3eb){_0x410bdf[_0x2c69('0x61')]=_0x21536a;}}else{if(_0x410bdf['sectionId']===0x64){_0x410bdf[_0x2c69('0x61')]=_0x21536a;}}return _0x410bdf;});});}else{return;}})[_0x2c69('0x29')](function(_0x389abb){if(_0x389abb)_0x4060a9=_0x389abb;if(_[_0x2c69('0x60')](_0x31c08a,0x709)){var _0x39b896=_['find'](_0x4060a9,{'sectionId':0x709});return getPlugins(_0x39b896)['then'](function(_0x4c53e1){if(_0x39b896[_0x2c69('0x5f')]){return _[_0x2c69('0x34')](_0x4060a9,function(_0x175357){if(_0x175357[_0x2c69('0x5a')]===0x709){_0x175357[_0x2c69('0x61')]=_0x4c53e1;}return _0x175357;});}else{var _0x5d80f3={'sectionId':0x76c,'enabled':0x1,'subsections':_0x4c53e1};var _0x20f684=_[_0x2c69('0x34')](_0x4060a9);_0x20f684[_0x2c69('0x62')](_0x5d80f3);return _0x20f684;}});}else{return;}})['then'](function(_0x5bcc1b){if(_0x5bcc1b)_0x4060a9=_0x5bcc1b;return _[_0x2c69('0x3d')](_0x4060a9,['enabled',0x1]);})[_0x2c69('0x29')](respondWithResult(_0x48ec7c,null))[_0x2c69('0x43')](handleError(_0x48ec7c,null));};function hasDefaultDashboard(_0x44fdb8){var _0x15e0f2=[0x65];return new BPromise(function(_0x392107,_0xe67be1){try{if(_0x44fdb8[_0x2c69('0x55')]){_0x392107(_0x15e0f2);}else{return db[_0x2c69('0x56')]['findOne']({'where':{'sectionId':_0x44fdb8['id']},'raw':!![]})[_0x2c69('0x29')](function(_0x197c9b){_0x197c9b?_0x392107(_0x15e0f2):_0x392107();});}}catch(_0x18145a){_0xe67be1(_0x18145a);}});}function getCustomDashboards(_0x569183){var _0x4a6bd3=[];return new BPromise(function(_0x10881f,_0x30220f){try{if(_0x569183['autoAssociation']){return db['Dashboard'][_0x2c69('0x53')]({'raw':!![]})[_0x2c69('0x29')](function(_0x560d63){_0x560d63[_0x2c69('0x63')](function(_0x56bbe7){_0x4a6bd3[_0x2c69('0x62')](_0x56bbe7['id']+0x1869f);});_0x10881f(_0x4a6bd3);});}else{return db[_0x2c69('0x56')]['findAll']({'where':{'sectionId':_0x569183['id']},'raw':!![]})[_0x2c69('0x29')](function(_0x3c8299){_0x3c8299[_0x2c69('0x63')](function(_0x360df4){_0x4a6bd3[_0x2c69('0x62')](_0x360df4['resourceId']+0x1869f);});_0x10881f(_0x4a6bd3);});}}catch(_0x30f431){_0x30220f(_0x30f431);}});}function getPlugins(_0x1a3351){var _0x1d6bbd=[];return new BPromise(function(_0x556511,_0x2f9856){try{if(_0x1a3351['autoAssociation']){return db[_0x2c69('0x64')]['findAll']({'raw':!![]})[_0x2c69('0x29')](function(_0x3920ab){_0x3920ab['forEach'](function(_0x4e395e){_0x1d6bbd['push'](_0x4e395e['id']+0x15b38);});_0x556511(_0x1d6bbd);});}else{return db[_0x2c69('0x56')]['findAll']({'where':{'sectionId':_0x1a3351['id']},'raw':!![]})[_0x2c69('0x29')](function(_0x45ae02){_0x45ae02[_0x2c69('0x63')](function(_0x1d5cae){_0x1d6bbd[_0x2c69('0x62')](_0x1d5cae[_0x2c69('0x65')]+0x15b38);});_0x556511(_0x1d6bbd);});}}catch(_0x32cc7a){_0x2f9856(_0x32cc7a);}});}exports[_0x2c69('0x66')]=function(_0x5f5809,_0x1dbb34){return db[_0x2c69('0x2f')]['find']({'where':{'id':_0x5f5809[_0x2c69('0x4b')]['id']}})[_0x2c69('0x29')](handleEntityNotFound(_0x1dbb34,null))[_0x2c69('0x29')](function(_0x3a9862){if(_0x3a9862){return db[_0x2c69('0x59')][_0x2c69('0x51')](function(_0x363ff5){return db[_0x2c69('0x52')]['findAll']({'where':{'userProfileId':_0x5f5809[_0x2c69('0x4b')]['id']},'attributes':['id'],'raw':!![]})[_0x2c69('0x29')](function(_0x50514a){if(_0x50514a){return db[_0x2c69('0x52')][_0x2c69('0x2a')]({'where':{'userProfileId':_0x5f5809['params']['id'],'id':_['map'](_0x50514a,function(_0x5c5c1e){return _0x5c5c1e['id'];})},'transaction':_0x363ff5});}})[_0x2c69('0x29')](function(_0x385a30){var _0x190e94=_[_0x2c69('0x34')](_0x5f5809[_0x2c69('0x49')],function(_0x3924c1){_0x3924c1['userProfileId']=_0x5f5809[_0x2c69('0x4b')]['id'];return _0x3924c1;});return db[_0x2c69('0x52')][_0x2c69('0x67')](_0x190e94,{'raw':!![],'transaction':_0x363ff5});})['then'](function(_0x1d1fa9){var _0x209a4c=_[_0x2c69('0x3d')](_[_0x2c69('0x34')](_0x1d1fa9,function(_0x4b80a1){return _0x4b80a1[_0x2c69('0x4c')]({'plain':!![]});}),{'includeAll':![]});if(_0x209a4c){return db['UserProfileSection'][_0x2c69('0x53')]({'where':{'userProfileId':_0x5f5809[_0x2c69('0x4b')]['id'],'sectionId':_['map'](_0x209a4c,function(_0xccf1b9){return _0xccf1b9[_0x2c69('0x5a')];})},'attributes':['id','sectionId'],'raw':!![]})[_0x2c69('0x29')](function(_0x23c368){var _0xcb9f90=_['map'](_0x5f5809[_0x2c69('0x49')],function(_0x239f12){_0x239f12[_0x2c69('0x5b')]=_0x5f5809[_0x2c69('0x4b')]['id'];return _0x239f12;});return db[_0x2c69('0x56')][_0x2c69('0x67')](_0xcb9f90,{'raw':!![],'transaction':_0x363ff5});});}})['catch'](handleError(_0x1dbb34,null));});}})[_0x2c69('0x29')](function(_0x35157e){var _0x352912=_[_0x2c69('0x34')](_0x35157e,function(_0x55a0af){return _0x55a0af[_0x2c69('0x4c')]({'plain':!![]});});})[_0x2c69('0x29')](respondWithResult(_0x1dbb34,null))['catch'](handleError(_0x1dbb34,null));};exports[_0x2c69('0x68')]=function(_0x5d6d11,_0x1ebafc,_0x246d43){return db['UserProfile'][_0x2c69('0x47')]({'where':{'id':_0x5d6d11['params']['id']}})['then'](handleEntityNotFound(_0x1ebafc,null))['then'](function(_0x2ef27d){if(_0x2ef27d){return _0x2ef27d[_0x2c69('0x68')](_0x5d6d11[_0x2c69('0x35')][_0x2c69('0x5d')]);}})[_0x2c69('0x29')](respondWithStatusCode(_0x1ebafc,null))[_0x2c69('0x43')](handleError(_0x1ebafc,null));};exports[_0x2c69('0x69')]=function(_0x422641,_0x30ceb5){var _0x4458cb={};if(!_0x422641[_0x2c69('0x35')][_0x2c69('0x6a')])throw new Error(_0x2c69('0x6b'));if(!_0x422641[_0x2c69('0x35')][_0x2c69('0x6c')](_0x2c69('0x3a'))){_0x4458cb['limit']=qs[_0x2c69('0x20')](_0x422641[_0x2c69('0x35')][_0x2c69('0x20')]);_0x4458cb[_0x2c69('0x22')]=qs[_0x2c69('0x22')](_0x422641[_0x2c69('0x35')]['offset']);}return db['UserProfile'][_0x2c69('0x47')]({'where':{'id':_0x422641[_0x2c69('0x4b')]['id']}})[_0x2c69('0x29')](function(_0x48220a){if(!_0x48220a)throw new Error(_0x2c69('0x6d')+_0x422641[_0x2c69('0x4b')]['id']);return db['UserProfile'][_0x2c69('0x69')](_0x422641);})[_0x2c69('0x29')](respondWithFilteredResult(_0x30ceb5,_0x4458cb))[_0x2c69('0x43')](handleError(_0x30ceb5,null));};
\ No newline at end of file
+var _0x937d=['fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','merge','filter','options','includeAll','include','catch','params','length','find','create','body','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','findAll','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','push','removeSections','ids','enabled','includes','isEmpty','subsections','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','Missing\x20section\x20parameter','hasOwnProperty','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./userProfile.socket','register','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','then','sendStatus','error','stack','name','index','map','UserProfile','rawAttributes'];(function(_0x508859,_0x3deaa0){var _0x245e3f=function(_0x2397ea){while(--_0x2397ea){_0x508859['push'](_0x508859['shift']());}};_0x245e3f(++_0x3deaa0);}(_0x937d,0x1f4));var _0xd937=function(_0x1c712b,_0x466e24){_0x1c712b=_0x1c712b-0x0;var _0x19609f=_0x937d[_0x1c712b];return _0x19609f;};'use strict';var emlformat=require(_0xd937('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd937('0x1'));var moment=require(_0xd937('0x2'));var BPromise=require(_0xd937('0x3'));var Mustache=require(_0xd937('0x4'));var util=require(_0xd937('0x5'));var path=require(_0xd937('0x6'));var sox=require('sox');var csv=require(_0xd937('0x7'));var ejs=require(_0xd937('0x8'));var fs=require('fs');var fs_extra=require(_0xd937('0x9'));var _=require('lodash');var squel=require(_0xd937('0xa'));var crypto=require(_0xd937('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd937('0xc'));var toCsv=require(_0xd937('0x7'));var querystring=require(_0xd937('0xd'));var Papa=require(_0xd937('0xe'));var Redis=require(_0xd937('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd937('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd937('0x11'));var logger=require('../../config/logger')(_0xd937('0x12'));var utils=require(_0xd937('0x13'));var config=require(_0xd937('0x14'));var licenseUtil=require(_0xd937('0x15'));var db=require(_0xd937('0x16'))['db'];config['redis']=_[_0xd937('0x17')](config[_0xd937('0x18')],{'host':_0xd937('0x19'),'port':0x18eb});var socket=require(_0xd937('0x1a'))(new Redis(config[_0xd937('0x18')]));require(_0xd937('0x1b'))[_0xd937('0x1c')](socket);function respondWithStatusCode(_0x174ddf,_0x29b598){_0x29b598=_0x29b598||0xcc;return function(_0x21b87d){if(_0x21b87d){return _0x174ddf['sendStatus'](_0x29b598);}return _0x174ddf[_0xd937('0x1d')](_0x29b598)[_0xd937('0x1e')]();};}function respondWithResult(_0x295a82,_0x569a9e){_0x569a9e=_0x569a9e||0xc8;return function(_0x3786f1){if(_0x3786f1){return _0x295a82[_0xd937('0x1d')](_0x569a9e)[_0xd937('0x1f')](_0x3786f1);}};}function respondWithFilteredResult(_0x4e72fe,_0x43ab41){return function(_0x3d6b1c){if(_0x3d6b1c){var _0x1d1b8b=typeof _0x43ab41[_0xd937('0x20')]===_0xd937('0x21')&&typeof _0x43ab41[_0xd937('0x22')]===_0xd937('0x21');var _0x311f08=_0x3d6b1c[_0xd937('0x23')];var _0x31fc09=_0x1d1b8b?0x0:_0x43ab41[_0xd937('0x20')];var _0x302723=_0x1d1b8b?_0x3d6b1c[_0xd937('0x23')]:_0x43ab41[_0xd937('0x20')]+_0x43ab41[_0xd937('0x22')];var _0x2699e8;if(_0x302723>=_0x311f08){_0x302723=_0x311f08;_0x2699e8=0xc8;}else{_0x2699e8=0xce;}_0x4e72fe[_0xd937('0x1d')](_0x2699e8);return _0x4e72fe['set'](_0xd937('0x24'),_0x31fc09+'-'+_0x302723+'/'+_0x311f08)[_0xd937('0x1f')](_0x3d6b1c);}return null;};}function patchUpdates(_0x86c492){return function(_0x28703a){try{jsonpatch[_0xd937('0x25')](_0x28703a,_0x86c492,!![]);}catch(_0x31ff83){return BPromise[_0xd937('0x26')](_0x31ff83);}return _0x28703a[_0xd937('0x27')]();};}function saveUpdates(_0x194fe5,_0x14b350){return function(_0x2bbbd4){if(_0x2bbbd4){return _0x2bbbd4['update'](_0x194fe5)['then'](function(_0x541ded){return _0x541ded;});}return null;};}function removeEntity(_0x22ed55,_0x1d5a26){return function(_0x5ef39f){if(_0x5ef39f){return _0x5ef39f[_0xd937('0x28')]()[_0xd937('0x29')](function(){_0x22ed55[_0xd937('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d822f,_0x375351){return function(_0x21794d){if(!_0x21794d){_0x5d822f[_0xd937('0x2a')](0x194);}return _0x21794d;};}function handleError(_0x27f120,_0xef145){_0xef145=_0xef145||0x1f4;return function(_0x46c855){logger[_0xd937('0x2b')](_0x46c855[_0xd937('0x2c')]);if(_0x46c855[_0xd937('0x2d')]){delete _0x46c855[_0xd937('0x2d')];}_0x27f120[_0xd937('0x1d')](_0xef145)['send'](_0x46c855);};}exports[_0xd937('0x2e')]=function(_0x23b4ef,_0xaba6e0){var _0x11de50={},_0x59f741={},_0xa0e55c={'count':0x0,'rows':[]};var _0x11decc=_[_0xd937('0x2f')](db[_0xd937('0x30')][_0xd937('0x31')],function(_0x94af31){return{'name':_0x94af31[_0xd937('0x32')],'type':_0x94af31[_0xd937('0x33')][_0xd937('0x34')]};});_0x59f741[_0xd937('0x35')]=_[_0xd937('0x2f')](_0x11decc,_0xd937('0x2d'));_0x59f741[_0xd937('0x36')]=_[_0xd937('0x37')](_0x23b4ef['query']);_0x59f741['filters']=_[_0xd937('0x38')](_0x59f741[_0xd937('0x35')],_0x59f741[_0xd937('0x36')]);_0x11de50[_0xd937('0x39')]=_[_0xd937('0x38')](_0x59f741[_0xd937('0x35')],qs[_0xd937('0x3a')](_0x23b4ef[_0xd937('0x36')][_0xd937('0x3a')]));_0x11de50[_0xd937('0x39')]=_0x11de50[_0xd937('0x39')]['length']?_0x11de50['attributes']:_0x59f741['model'];if(!_0x23b4ef[_0xd937('0x36')]['hasOwnProperty'](_0xd937('0x3b'))){_0x11de50['limit']=qs[_0xd937('0x22')](_0x23b4ef[_0xd937('0x36')][_0xd937('0x22')]);_0x11de50[_0xd937('0x20')]=qs[_0xd937('0x20')](_0x23b4ef[_0xd937('0x36')][_0xd937('0x20')]);}_0x11de50[_0xd937('0x3c')]=qs[_0xd937('0x3d')](_0x23b4ef[_0xd937('0x36')][_0xd937('0x3d')]);_0x11de50[_0xd937('0x3e')]=qs[_0xd937('0x3f')](_[_0xd937('0x40')](_0x23b4ef[_0xd937('0x36')],_0x59f741[_0xd937('0x3f')]),_0x11decc);if(_0x23b4ef[_0xd937('0x36')]['filter']){_0x11de50[_0xd937('0x3e')]=_[_0xd937('0x41')](_0x11de50[_0xd937('0x3e')],{'$or':_[_0xd937('0x2f')](_0x11decc,function(_0x39e413){if(_0x39e413[_0xd937('0x33')]!=='VIRTUAL'){var _0xd9a1ce={};_0xd9a1ce[_0x39e413['name']]={'$like':'%'+_0x23b4ef[_0xd937('0x36')][_0xd937('0x42')]+'%'};return _0xd9a1ce;}})});}_0x11de50=_[_0xd937('0x41')]({},_0x11de50,_0x23b4ef[_0xd937('0x43')]);var _0x56d1e1={'where':_0x11de50[_0xd937('0x3e')]};return db[_0xd937('0x30')]['count'](_0x56d1e1)[_0xd937('0x29')](function(_0x3a1eb3){_0xa0e55c[_0xd937('0x23')]=_0x3a1eb3;if(_0x23b4ef[_0xd937('0x36')][_0xd937('0x44')]){_0x11de50[_0xd937('0x45')]=[{'all':!![]}];}return db['UserProfile']['findAll'](_0x11de50);})[_0xd937('0x29')](function(_0x26b615){_0xa0e55c['rows']=_0x26b615;return _0xa0e55c;})['then'](respondWithFilteredResult(_0xaba6e0,_0x11de50))[_0xd937('0x46')](handleError(_0xaba6e0,null));};exports['show']=function(_0x37e9ae,_0x3287b1){var _0x386e01={'raw':![],'where':{'id':_0x37e9ae[_0xd937('0x47')]['id']}},_0x239edd={};_0x239edd[_0xd937('0x35')]=_[_0xd937('0x37')](db[_0xd937('0x30')][_0xd937('0x31')]);_0x239edd[_0xd937('0x36')]=_['keys'](_0x37e9ae[_0xd937('0x36')]);_0x239edd[_0xd937('0x3f')]=_[_0xd937('0x38')](_0x239edd[_0xd937('0x35')],_0x239edd[_0xd937('0x36')]);_0x386e01['attributes']=_['intersection'](_0x239edd['model'],qs[_0xd937('0x3a')](_0x37e9ae[_0xd937('0x36')][_0xd937('0x3a')]));_0x386e01[_0xd937('0x39')]=_0x386e01[_0xd937('0x39')][_0xd937('0x48')]?_0x386e01[_0xd937('0x39')]:_0x239edd[_0xd937('0x35')];if(_0x37e9ae[_0xd937('0x36')]['includeAll']){_0x386e01['include']=[{'all':!![]}];}_0x386e01=_[_0xd937('0x41')]({},_0x386e01,_0x37e9ae['options']);return db[_0xd937('0x30')][_0xd937('0x49')](_0x386e01)[_0xd937('0x29')](handleEntityNotFound(_0x3287b1,null))[_0xd937('0x29')](respondWithResult(_0x3287b1,null))[_0xd937('0x46')](handleError(_0x3287b1,null));};exports[_0xd937('0x4a')]=function(_0x27c5eb,_0x463da0){return db[_0xd937('0x30')][_0xd937('0x4a')](_0x27c5eb[_0xd937('0x4b')],{})['then'](respondWithResult(_0x463da0,0xc9))[_0xd937('0x46')](handleError(_0x463da0,null));};exports['clone']=function(_0x104442,_0x29a143){var _0x37b870={'where':{'id':_0x104442['params']['id']}},_0x87758e={};_0x87758e[_0xd937('0x35')]=_[_0xd937('0x37')](db[_0xd937('0x30')][_0xd937('0x31')]);_0x37b870[_0xd937('0x39')]=_[_0xd937('0x38')](_0x87758e[_0xd937('0x35')],qs[_0xd937('0x3a')](_0x104442[_0xd937('0x36')]['fields']));_0x37b870[_0xd937('0x39')]=_0x37b870[_0xd937('0x39')]['length']?_0x37b870[_0xd937('0x39')]:_0x87758e[_0xd937('0x35')];if(_0x104442['query'][_0xd937('0x44')]){_0x37b870[_0xd937('0x45')]=[{'all':!![]}];}_0x37b870=_['merge']({},_0x37b870,_0x104442['options']);return db[_0xd937('0x30')][_0xd937('0x49')](_0x37b870)[_0xd937('0x29')](handleEntityNotFound(_0x29a143,null))[_0xd937('0x29')](function(_0x68158){if(_0x68158){var _0x3d6ee6=_0x68158[_0xd937('0x4c')]({'plain':!![]});_0x3d6ee6=qs[_0xd937('0x4d')](_0x3d6ee6,['id',_0xd937('0x4e'),_0xd937('0x4f'),_0xd937('0x50')]);_0x104442[_0xd937('0x4b')]=_['omit'](_0x104442['body'],['id','createdAt',_0xd937('0x4f')]);return db[_0xd937('0x51')][_0xd937('0x52')](function(_0x4eb351){return db[_0xd937('0x30')][_0xd937('0x4a')](_['merge'](_0x3d6ee6,_0x104442['body']),{'include':_0x104442[_0xd937('0x36')][_0xd937('0x44')]?[{'all':!![]}]:undefined,'transaction':_0x4eb351})['then'](function(_0x1f269b){var _0x59323e=_0x1f269b['get']({'plain':!![]});return db[_0xd937('0x53')][_0xd937('0x54')]({'where':{'userProfileId':_0x104442[_0xd937('0x47')]['id']},'raw':!![]})[_0xd937('0x29')](function(_0x3ffe5a){if(_0x3ffe5a){return BPromise[_0xd937('0x55')](_0x3ffe5a,function(_0x1d876a){return new BPromise(function(_0x4e29c3,_0x1b4841){if(_0x1d876a[_0xd937('0x56')]===null||_0x1d876a[_0xd937('0x56')]===0x1)_0x4e29c3(null);return db[_0xd937('0x57')][_0xd937('0x54')]({'where':{'sectionId':_0x1d876a['id']},'raw':!![]})[_0xd937('0x29')](function(_0x130653){var _0x4b5232=_[_0xd937('0x2f')](_0x130653,function(_0x15f84b){return qs['omit'](_0x15f84b,['id',_0xd937('0x4e'),_0xd937('0x4f'),_0xd937('0x58')]);});_0x4e29c3(_0x4b5232);})[_0xd937('0x46')](function(_0x3fcf7c){_0x1b4841(_0x3fcf7c);});})[_0xd937('0x29')](function(_0x2627ca){var _0x1050e8=qs[_0xd937('0x4d')](_0x1d876a,['id',_0xd937('0x4e'),_0xd937('0x4f')]);_0x1050e8[_0xd937('0x59')]=_0x59323e['id'];if(_0x2627ca)_0x1050e8[_0xd937('0x5a')]=_0x2627ca;return _0x1050e8;})[_0xd937('0x29')](function(_0x2977b7){return db[_0xd937('0x53')][_0xd937('0x4a')](_0x2977b7,{'include':[{'model':db['UserProfileResource'],'as':_0xd937('0x5a')}],'raw':!![],'transaction':_0x4eb351});});})['then'](function(){return _0x59323e;});}});});});}})['then'](respondWithResult(_0x29a143,0xc9))['catch'](handleError(_0x29a143,null));};exports['update']=function(_0x325c8c,_0x1cd08c){if(_0x325c8c[_0xd937('0x4b')]['id']){delete _0x325c8c[_0xd937('0x4b')]['id'];}return db['UserProfile'][_0xd937('0x49')]({'where':{'id':_0x325c8c[_0xd937('0x47')]['id']}})['then'](handleEntityNotFound(_0x1cd08c,null))[_0xd937('0x29')](saveUpdates(_0x325c8c[_0xd937('0x4b')],null))[_0xd937('0x29')](respondWithResult(_0x1cd08c,null))[_0xd937('0x46')](handleError(_0x1cd08c,null));};exports['destroy']=function(_0x13280e,_0x5e7e5c){return db[_0xd937('0x30')]['find']({'where':{'id':_0x13280e[_0xd937('0x47')]['id']}})[_0xd937('0x29')](handleEntityNotFound(_0x5e7e5c,null))[_0xd937('0x29')](removeEntity(_0x5e7e5c,null))[_0xd937('0x46')](handleError(_0x5e7e5c,null));};exports['describe']=function(_0x12a8ee,_0x3cbaf0){return db['UserProfile'][_0xd937('0x5b')]()[_0xd937('0x29')](respondWithResult(_0x3cbaf0,null))[_0xd937('0x46')](handleError(_0x3cbaf0,null));};exports[_0xd937('0x5c')]=function(_0x314ea3,_0x444391){var _0x5b07a4=_0x314ea3[_0xd937('0x4b')];return db[_0xd937('0x30')][_0xd937('0x49')]({'where':{'id':_0x314ea3[_0xd937('0x47')]['id']}})['then'](handleEntityNotFound(_0x444391,null))[_0xd937('0x29')](function(_0x2663fc){if(_0x2663fc){return db[_0xd937('0x51')][_0xd937('0x52')](function(_0x3f4701){return db[_0xd937('0x53')]['destroy']({'where':{'userProfileId':_0x314ea3[_0xd937('0x47')]['id'],'sectionId':_[_0xd937('0x2f')](_0x5b07a4,function(_0x46d067){return _0x46d067[_0xd937('0x58')];})},'transaction':_0x3f4701})['then'](function(){var _0x30139c=_[_0xd937('0x2f')](_0x5b07a4,function(_0xaf2448){_0xaf2448[_0xd937('0x59')]=_0x314ea3[_0xd937('0x47')]['id'];return _0xaf2448;});var _0x1e54b7=[];return BPromise[_0xd937('0x55')](_0x30139c,function(_0x133331){return db[_0xd937('0x53')][_0xd937('0x4a')](_0x133331,{'include':[{'model':db[_0xd937('0x57')],'as':'Resources'}],'raw':!![],'transaction':_0x3f4701})[_0xd937('0x29')](function(_0x74e5dd){_0x1e54b7[_0xd937('0x5d')](_0x74e5dd[_0xd937('0x4c')]({'plain':!![]}));});})[_0xd937('0x29')](function(){return _0x1e54b7;});});});}})[_0xd937('0x29')](function(_0x24d7d3){return _0x24d7d3;})['then'](respondWithResult(_0x444391,null))[_0xd937('0x46')](handleError(_0x444391,null));};exports[_0xd937('0x5e')]=function(_0x504cef,_0xc3fca0){var _0xaf0a1c;return db[_0xd937('0x30')][_0xd937('0x49')]({'where':{'id':_0x504cef[_0xd937('0x47')]['id']},'attributes':['id',_0xd937('0x2d')]})[_0xd937('0x29')](handleEntityNotFound(_0xc3fca0,null))[_0xd937('0x29')](function(_0x30593e){if(_0x30593e){_0xaf0a1c=_0x30593e;return db['UserProfileSection'][_0xd937('0x28')]({'where':{'userProfileId':_0x504cef[_0xd937('0x47')]['id'],'sectionId':_0x504cef[_0xd937('0x36')][_0xd937('0x5f')]}});}})[_0xd937('0x29')](function(){return _0xaf0a1c;})['then'](respondWithStatusCode(_0xc3fca0,null))['catch'](handleError(_0xc3fca0,null));};exports['getSections']=function(_0x349071,_0x398912){var _0x5779a6=[];var _0x19de27=[];return db['UserProfileSection'][_0xd937('0x54')]({'where':{'userProfileId':_0x349071[_0xd937('0x47')]['id']},'raw':!![]})[_0xd937('0x29')](function(_0x5c47cb){_0x5779a6=_[_0xd937('0x42')](_0x5c47cb,function(_0xb9184b){return _0xb9184b[_0xd937('0x60')]===0x1||_[_0xd937('0x61')]([0x3eb,0x709],_0xb9184b['sectionId']);});if(!_[_0xd937('0x62')](_0x5779a6)){return _['map'](_0x5779a6,function(_0x3e67a0){return _0x3e67a0['sectionId'];});}else{return;}})[_0xd937('0x29')](function(_0x2bf3b0){if(_0x2bf3b0)_0x19de27=_0x2bf3b0;if(_['includes'](_0x19de27,0x64)){var _0x1a87df=_[_0xd937('0x49')](_0x5779a6,{'sectionId':0x64});return hasDefaultDashboard(_0x1a87df)['then'](function(_0x29fc71){return _[_0xd937('0x2f')](_0x5779a6,function(_0x3a9f37){if(_0x3a9f37[_0xd937('0x58')]===0x64){_0x3a9f37[_0xd937('0x63')]=_0x29fc71;}return _0x3a9f37;});});}else{return;}})[_0xd937('0x29')](function(_0x1c6abf){if(_0x1c6abf)_0x5779a6=_0x1c6abf;if(_[_0xd937('0x61')](_0x19de27,0x3eb)){var _0xb0d19a=_[_0xd937('0x49')](_0x5779a6,{'sectionId':0x3eb});return getCustomDashboards(_0xb0d19a)[_0xd937('0x29')](function(_0x2742a3){return _[_0xd937('0x2f')](_0x5779a6,function(_0x4df709){if(_0xb0d19a['enabled']){if(_0x4df709[_0xd937('0x58')]===0x3eb){_0x4df709[_0xd937('0x63')]=_0x2742a3;}}else{if(_0x4df709['sectionId']===0x64){_0x4df709[_0xd937('0x63')]=_0x2742a3;}}return _0x4df709;});});}else{return;}})[_0xd937('0x29')](function(_0x2bd83a){if(_0x2bd83a)_0x5779a6=_0x2bd83a;if(_[_0xd937('0x61')](_0x19de27,0x709)){var _0x23b1f6=_[_0xd937('0x49')](_0x5779a6,{'sectionId':0x709});return getPlugins(_0x23b1f6)[_0xd937('0x29')](function(_0x57959a){if(_0x23b1f6[_0xd937('0x60')]){return _[_0xd937('0x2f')](_0x5779a6,function(_0x34935f){if(_0x34935f['sectionId']===0x709){_0x34935f['subsections']=_0x57959a;}return _0x34935f;});}else{var _0x468e6e={'sectionId':0x76c,'enabled':0x1,'subsections':_0x57959a};var _0xe4dee6=_[_0xd937('0x2f')](_0x5779a6);_0xe4dee6[_0xd937('0x5d')](_0x468e6e);return _0xe4dee6;}});}else{return;}})[_0xd937('0x29')](function(_0x3d5a05){if(_0x3d5a05)_0x5779a6=_0x3d5a05;return _['filter'](_0x5779a6,['enabled',0x1]);})[_0xd937('0x29')](respondWithResult(_0x398912,null))[_0xd937('0x46')](handleError(_0x398912,null));};function hasDefaultDashboard(_0x48f16e){var _0x5a492e=[0x65];return new BPromise(function(_0x51080e,_0x28b88f){try{if(_0x48f16e['autoAssociation']){_0x51080e(_0x5a492e);}else{return db['UserProfileResource']['findOne']({'where':{'sectionId':_0x48f16e['id']},'raw':!![]})[_0xd937('0x29')](function(_0x477ac4){_0x477ac4?_0x51080e(_0x5a492e):_0x51080e();});}}catch(_0x5ed2ca){_0x28b88f(_0x5ed2ca);}});}function getCustomDashboards(_0x30b02){var _0x2ec0de=[];return new BPromise(function(_0x244574,_0x5102ae){try{if(_0x30b02[_0xd937('0x56')]){return db[_0xd937('0x64')][_0xd937('0x54')]({'raw':!![]})[_0xd937('0x29')](function(_0x45adc3){_0x45adc3['forEach'](function(_0x53e067){_0x2ec0de[_0xd937('0x5d')](_0x53e067['id']+0x1869f);});_0x244574(_0x2ec0de);});}else{return db[_0xd937('0x57')][_0xd937('0x54')]({'where':{'sectionId':_0x30b02['id']},'raw':!![]})['then'](function(_0x124c15){_0x124c15[_0xd937('0x65')](function(_0xeb1d14){_0x2ec0de['push'](_0xeb1d14[_0xd937('0x66')]+0x1869f);});_0x244574(_0x2ec0de);});}}catch(_0x3608aa){_0x5102ae(_0x3608aa);}});}function getPlugins(_0x2cd0a0){var _0x210113=[];return new BPromise(function(_0x5a153a,_0x2f5743){try{if(_0x2cd0a0[_0xd937('0x56')]){return db[_0xd937('0x67')][_0xd937('0x54')]({'raw':!![]})[_0xd937('0x29')](function(_0x5be2ff){_0x5be2ff[_0xd937('0x65')](function(_0x25abc0){_0x210113['push'](_0x25abc0['id']+0x15b38);});_0x5a153a(_0x210113);});}else{return db[_0xd937('0x57')][_0xd937('0x54')]({'where':{'sectionId':_0x2cd0a0['id']},'raw':!![]})[_0xd937('0x29')](function(_0x6ef7ae){_0x6ef7ae['forEach'](function(_0x32928c){_0x210113['push'](_0x32928c[_0xd937('0x66')]+0x15b38);});_0x5a153a(_0x210113);});}}catch(_0x1be807){_0x2f5743(_0x1be807);}});}exports[_0xd937('0x68')]=function(_0x56b301,_0x279ffe){return db[_0xd937('0x30')][_0xd937('0x49')]({'where':{'id':_0x56b301[_0xd937('0x47')]['id']}})[_0xd937('0x29')](handleEntityNotFound(_0x279ffe,null))[_0xd937('0x29')](function(_0x5058da){if(_0x5058da){return db[_0xd937('0x51')][_0xd937('0x52')](function(_0x380c9d){return db[_0xd937('0x53')][_0xd937('0x54')]({'where':{'userProfileId':_0x56b301[_0xd937('0x47')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x152d3d){if(_0x152d3d){return db[_0xd937('0x53')][_0xd937('0x28')]({'where':{'userProfileId':_0x56b301[_0xd937('0x47')]['id'],'id':_[_0xd937('0x2f')](_0x152d3d,function(_0x5b0f36){return _0x5b0f36['id'];})},'transaction':_0x380c9d});}})[_0xd937('0x29')](function(_0x46ed16){var _0x3f506c=_[_0xd937('0x2f')](_0x56b301[_0xd937('0x4b')],function(_0x506c22){_0x506c22[_0xd937('0x59')]=_0x56b301[_0xd937('0x47')]['id'];return _0x506c22;});return db[_0xd937('0x53')][_0xd937('0x69')](_0x3f506c,{'raw':!![],'transaction':_0x380c9d});})[_0xd937('0x29')](function(_0xcf1b51){var _0x289be1=_[_0xd937('0x42')](_['map'](_0xcf1b51,function(_0x52ce47){return _0x52ce47[_0xd937('0x4c')]({'plain':!![]});}),{'includeAll':![]});if(_0x289be1){return db['UserProfileSection'][_0xd937('0x54')]({'where':{'userProfileId':_0x56b301[_0xd937('0x47')]['id'],'sectionId':_[_0xd937('0x2f')](_0x289be1,function(_0x28caba){return _0x28caba[_0xd937('0x58')];})},'attributes':['id',_0xd937('0x58')],'raw':!![]})['then'](function(_0x262671){var _0x310733=_[_0xd937('0x2f')](_0x56b301[_0xd937('0x4b')],function(_0x3ea365){_0x3ea365[_0xd937('0x59')]=_0x56b301['params']['id'];return _0x3ea365;});return db[_0xd937('0x57')][_0xd937('0x69')](_0x310733,{'raw':!![],'transaction':_0x380c9d});});}})[_0xd937('0x46')](handleError(_0x279ffe,null));});}})[_0xd937('0x29')](function(_0x220b4a){var _0x46c85f=_['map'](_0x220b4a,function(_0x404f37){return _0x404f37[_0xd937('0x4c')]({'plain':!![]});});})[_0xd937('0x29')](respondWithResult(_0x279ffe,null))['catch'](handleError(_0x279ffe,null));};exports[_0xd937('0x6a')]=function(_0x51bd0e,_0x5c6849,_0x2eb0f1){return db['UserProfile'][_0xd937('0x49')]({'where':{'id':_0x51bd0e[_0xd937('0x47')]['id']}})[_0xd937('0x29')](handleEntityNotFound(_0x5c6849,null))[_0xd937('0x29')](function(_0x35b7ad){if(_0x35b7ad){return _0x35b7ad[_0xd937('0x6a')](_0x51bd0e[_0xd937('0x36')][_0xd937('0x5f')]);}})[_0xd937('0x29')](respondWithStatusCode(_0x5c6849,null))[_0xd937('0x46')](handleError(_0x5c6849,null));};exports['getResources']=function(_0x13f0ce,_0x173342){var _0x1850a4={};if(!_0x13f0ce['query']['section'])throw new Error(_0xd937('0x6b'));if(!_0x13f0ce[_0xd937('0x36')][_0xd937('0x6c')](_0xd937('0x3b'))){_0x1850a4[_0xd937('0x22')]=qs[_0xd937('0x22')](_0x13f0ce[_0xd937('0x36')][_0xd937('0x22')]);_0x1850a4[_0xd937('0x20')]=qs[_0xd937('0x20')](_0x13f0ce['query'][_0xd937('0x20')]);}return db[_0xd937('0x30')][_0xd937('0x49')]({'where':{'id':_0x13f0ce[_0xd937('0x47')]['id']}})[_0xd937('0x29')](function(_0x10c3bd){if(!_0x10c3bd)throw new Error(_0xd937('0x6d')+_0x13f0ce[_0xd937('0x47')]['id']);return db[_0xd937('0x30')]['getResources'](_0x13f0ce);})[_0xd937('0x29')](respondWithFilteredResult(_0x173342,_0x1850a4))[_0xd937('0x46')](handleError(_0x173342,null));};
\ No newline at end of file
index a721d6c..3f868d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9af6=['hook','exports','events','../../mysqldb','UserProfile','update','emit'];(function(_0x23a249,_0x464ed7){var _0x5e4899=function(_0x2a97e3){while(--_0x2a97e3){_0x23a249['push'](_0x23a249['shift']());}};_0x5e4899(++_0x464ed7);}(_0x9af6,0x1d7));var _0x69af=function(_0x771eac,_0x16c9bd){_0x771eac=_0x771eac-0x0;var _0x4eb403=_0x9af6[_0x771eac];return _0x4eb403;};'use strict';var EventEmitter=require(_0x69af('0x0'));var UserProfile=require(_0x69af('0x1'))['db'][_0x69af('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x69af('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5e0e6b){return function(_0x185b85,_0x11f0e4,_0x2b73be){UserProfileEvents['emit'](_0x5e0e6b+':'+_0x185b85['id'],_0x185b85);UserProfileEvents[_0x69af('0x4')](_0x5e0e6b,_0x185b85);_0x2b73be(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0x69af('0x5')](e,emitEvent(event));}}module[_0x69af('0x6')]=UserProfileEvents;
\ No newline at end of file
+var _0x71ab=['emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','update','remove'];(function(_0x152a8d,_0x5c9019){var _0x144e3d=function(_0x4cdbf0){while(--_0x4cdbf0){_0x152a8d['push'](_0x152a8d['shift']());}};_0x144e3d(++_0x5c9019);}(_0x71ab,0x64));var _0xb71a=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x71ab[_0x21a9d9];return _0x46adce;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0xb71a('0x0'))['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xb71a('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb71a('0x2'),'afterDestroy':_0xb71a('0x3')};function emitEvent(_0x20fd9c){return function(_0x4094b2,_0x37ce74,_0x3c6438){UserProfileEvents[_0xb71a('0x4')](_0x20fd9c+':'+_0x4094b2['id'],_0x4094b2);UserProfileEvents[_0xb71a('0x4')](_0x20fd9c,_0x4094b2);_0x3c6438(null);};}for(var e in events){if(events[_0xb71a('0x5')](e)){var event=events[e];UserProfile[_0xb71a('0x6')](e,emitEvent(event));}}module[_0xb71a('0x7')]=UserProfileEvents;
\ No newline at end of file
index c94e94f..05f74f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x218d=['VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','membername','User','role','agent','Telephones','VoiceQueues','queue','VoiceQueue','inbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','mailsubstatuses','openchannelqueues','OpenchannelQueue','openchannelaccounts','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','teams','voicequeues','queuecampaigns','users','telephones','Users','admin','user','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','DeskAccount','vtigeraccounts','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','Interval','pauses','scheduler','Sound','tags','Tag','Template','triggers','Trunk','variables','Variable','plugins','Plugin','extractedreports','Reports','reportId','metrics','WhatsappAccount','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','from','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','user_profiles','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','params','all','ignore','union','autoAssociation','rawAttributes','model','keys','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','sort','filters','pick','merge','foreignKey','forEach','options','includeAll','reportType','default','DefaultReports','CustomReports','count','include','Tags','tag','rows','true','dataValues','sms','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','exports','filter','field','findAll','then','map','catch','value','name','associatedResources','AnalyticExtractedReport','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','parentSections','projectName','projects','JscriptyProject','CmContact','companies','CmCompany','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','inboundroutes','internalroutes'];(function(_0x558644,_0x3f5bba){var _0x48d4c5=function(_0xe15058){while(--_0xe15058){_0x558644['push'](_0x558644['shift']());}};_0x48d4c5(++_0x3f5bba);}(_0x218d,0x143));var _0xd218=function(_0x4e1925,_0x486a24){_0x4e1925=_0x4e1925-0x0;var _0x4fae1c=_0x218d[_0x4e1925];return _0x4fae1c;};'use strict';var _=require(_0xd218('0x0'));var attributes=require(_0xd218('0x1'));var qs=require(_0xd218('0x2'));module[_0xd218('0x3')]=function(_0x471687){var _0x37501d=_0x471687['models'];function _0x206436(_0xc1b8b8,_0x15a926){return new Promise(function(_0x4d5163,_0x5dcb80){if(!_0x15a926)return _0x4d5163(null);var _0x355851=_0x15a926[_0xd218('0x4')]?{[_0x15a926[_0xd218('0x4')][_0xd218('0x5')]]:_0x15a926[_0xd218('0x4')]['value']}:undefined;return _0x37501d[_0xc1b8b8][_0xd218('0x6')]({'where':_0x355851,'raw':!![]})[_0xd218('0x7')](function(_0x59d205){_0x15a926['associatedResources']=_[_0xd218('0x8')](_0x59d205,'id');_0x4d5163(_0x15a926);})[_0xd218('0x9')](function(_0x2492a8){_0x5dcb80(_0x2492a8);});});}function _0x17de5f(_0x514416,_0xedbe40){return new Promise(function(_0x373615,_0x449404){var _0x9c0d94=_0x514416['filter']?{[_0x514416[_0xd218('0x4')][_0xd218('0x5')]]:_0x514416[_0xd218('0x4')][_0xd218('0xa')]}:undefined;return _0x37501d[_0x514416['model']][_0xd218('0x6')]({'where':_0x9c0d94,'raw':!![]})[_0xd218('0x7')](function(_0x3b9614){_0xedbe40['associatedResources']=_[_0xd218('0x8')](_0x3b9614,function(_0x53a883){return _0x53a883[_0xd218('0xb')];});_0x373615(_0xedbe40);})[_0xd218('0x9')](function(_0x25fd62){_0x449404(_0x25fd62);});});}function _0x586d1b(_0x3aa49f,_0x5f46db,_0x53e124){if(!_0x5f46db)return resolve(null);return new Promise(function(_0x44d16c,_0x593943){return _0x37501d['UserProfileResource'][_0xd218('0x6')]({'where':{'sectionId':_0x5f46db['id']},'raw':!![]})[_0xd218('0x7')](function(_0x425b84){if(_0x3aa49f[_0xd218('0x5')]&&_0x3aa49f[_0xd218('0x5')]!=='id'){_0x5f46db[_0xd218('0xc')]=_['map'](_0x425b84,function(_0x37227d){return _0x37227d[_0x3aa49f['field']];});}else{if(_0x53e124===_0xd218('0xd')){_0x5f46db[_0xd218('0xc')]=_['map'](_0x425b84,function(_0x5438ec){return{'id':_0x5438ec['resourceId'],'type':_0x5438ec[_0xd218('0xe')]};});}else{_0x5f46db[_0xd218('0xc')]=_[_0xd218('0x8')](_0x425b84,function(_0x170eb1){return _0x170eb1['resourceId'];});}}_0x44d16c(_0x5f46db);})[_0xd218('0x9')](function(_0x2e6d30){_0x593943(_0x2e6d30);});});}function _0x933642(_0x37630f,_0x284368){var _0x179b78={'parentSections':[]};switch(_0x37630f[_0xd218('0xf')]()){case _0xd218('0x10'):_0x179b78[_0xd218('0x11')]=_0xd218('0x12');break;case _0xd218('0x13'):_0x179b78['childModel']=_0xd218('0x14');break;case _0xd218('0x15'):_0x179b78['childModel']='SquareRecording';_0x179b78[_0xd218('0x16')]=[{'name':'SquareProjects','field':_0xd218('0xb'),'foreignKey':_0xd218('0x17')}];break;case _0xd218('0x18'):_0x179b78[_0xd218('0x11')]=_0xd218('0x19');break;case'contacts':_0x179b78['childModel']=_0xd218('0x1a');_0x179b78[_0xd218('0x16')]=[{'name':'Lists','field':'id','foreignKey':'ListId'}];break;case'lists':_0x179b78['childModel']='CmList';break;case _0xd218('0x1b'):_0x179b78['childModel']=_0xd218('0x1c');break;case'globalcustomfields':_0x179b78[_0xd218('0x11')]='CmCustomField';break;case _0xd218('0x1d'):_0x179b78[_0xd218('0x11')]=_0xd218('0x1e');break;case _0xd218('0x1f'):_0x179b78['childModel']=_0xd218('0x20');break;case _0xd218('0x21'):_0x179b78[_0xd218('0x11')]=_0xd218('0x22');break;case'faxaccounts':_0x179b78['childModel']='FaxAccount';break;case _0xd218('0x23'):case _0xd218('0x24'):case'outboundroutes':_0x179b78[_0xd218('0x11')]=_0xd218('0x25');break;case _0xd218('0x26'):_0x179b78[_0xd218('0x11')]=_0xd218('0x27');break;case _0xd218('0x28'):_0x179b78[_0xd218('0x11')]=_0xd218('0x29');break;case _0xd218('0x2a'):_0x179b78[_0xd218('0x11')]=_0xd218('0x2b');_0x179b78[_0xd218('0x16')]=[{'name':_0xd218('0x2c'),'field':_0xd218('0xb'),'foreignKey':_0xd218('0x2d'),'model':_0xd218('0x2e'),'filter':{'field':_0xd218('0x2f'),'value':[_0xd218('0x30')]}},{'name':_0xd218('0x31'),'field':_0xd218('0xb'),'foreignKey':_0xd218('0x2d'),'model':_0xd218('0x2e'),'filter':{'field':_0xd218('0x2f'),'value':['telephone']}},{'name':_0xd218('0x32'),'field':_0xd218('0xb'),'foreignKey':_0xd218('0x33'),'model':_0xd218('0x34'),'filter':{'field':'type','value':[_0xd218('0x35')]}},{'name':'QueueCampaigns','field':'name','foreignKey':'queue','model':'VoiceQueue','filter':{'field':_0xd218('0xe'),'value':['outbound']}}];break;case _0xd218('0x36'):_0x179b78[_0xd218('0x11')]=_0xd218('0x37');break;case _0xd218('0x38'):_0x179b78['childModel']=_0xd218('0x39');break;case'voiceprefixes':_0x179b78[_0xd218('0x11')]=_0xd218('0x3a');break;case _0xd218('0x3b'):_0x179b78['childModel']=_0xd218('0x3c');break;case _0xd218('0x3d'):_0x179b78['childModel']=_0xd218('0x3e');break;case'mailaccounts':_0x179b78[_0xd218('0x11')]='MailAccount';break;case _0xd218('0x3f'):_0x179b78[_0xd218('0x11')]='MailSubstatus';break;case _0xd218('0x40'):_0x179b78[_0xd218('0x11')]=_0xd218('0x41');break;case _0xd218('0x42'):_0x179b78['childModel']='OpenchannelAccount';break;case _0xd218('0x43'):_0x179b78[_0xd218('0x11')]=_0xd218('0x44');break;case _0xd218('0x45'):_0x179b78[_0xd218('0x11')]=_0xd218('0x46');break;case _0xd218('0x47'):_0x179b78[_0xd218('0x11')]=_0xd218('0x48');break;case _0xd218('0x49'):_0x179b78[_0xd218('0x11')]='WhatsappAccount';break;case _0xd218('0x4a'):_0x179b78[_0xd218('0x11')]='Team';break;case _0xd218('0x4b'):case _0xd218('0x4c'):_0x179b78[_0xd218('0x11')]=_0xd218('0x34');if(_0x284368){_0x179b78[_0xd218('0x16')]=[{'name':_0xd218('0x32')},{'name':'QueueCampaigns'}];}break;case _0xd218('0x4d'):case'agents':case _0xd218('0x4e'):_0x179b78[_0xd218('0x11')]='User';if(_0x284368){_0x179b78[_0xd218('0x16')]=[{'name':_0xd218('0x4f'),'filter':{'field':_0xd218('0x2f'),'value':[_0xd218('0x50'),_0xd218('0x51')]},'ignore':!![]},{'name':'Agents'},{'name':_0xd218('0x31')}];}break;case'zendeskaccounts':_0x179b78[_0xd218('0x11')]='ZendeskAccount';break;case _0xd218('0x52'):_0x179b78[_0xd218('0x11')]=_0xd218('0x53');break;case _0xd218('0x54'):_0x179b78[_0xd218('0x11')]=_0xd218('0x55');break;case _0xd218('0x56'):_0x179b78['childModel']=_0xd218('0x57');break;case'deskaccounts':_0x179b78[_0xd218('0x11')]=_0xd218('0x58');break;case'zohoaccounts':_0x179b78[_0xd218('0x11')]='ZohoAccount';break;case _0xd218('0x59'):_0x179b78[_0xd218('0x11')]=_0xd218('0x2e');break;case'cannedanswers':_0x179b78[_0xd218('0x11')]=_0xd218('0x5a');break;case _0xd218('0x5b'):_0x179b78[_0xd218('0x11')]=_0xd218('0x5c');break;case _0xd218('0x5d'):_0x179b78[_0xd218('0x11')]=_0xd218('0x5e');break;case'intervals':_0x179b78[_0xd218('0x11')]=_0xd218('0x5f');break;case _0xd218('0x60'):_0x179b78[_0xd218('0x11')]='Pause';break;case _0xd218('0x61'):_0x179b78[_0xd218('0x11')]='Schedule';break;case'sounds':_0x179b78[_0xd218('0x11')]=_0xd218('0x62');break;case _0xd218('0x63'):_0x179b78[_0xd218('0x11')]=_0xd218('0x64');break;case'templates':_0x179b78[_0xd218('0x11')]=_0xd218('0x65');break;case _0xd218('0x66'):_0x179b78[_0xd218('0x11')]='Trigger';break;case'trunks':_0x179b78['childModel']=_0xd218('0x67');break;case _0xd218('0x68'):_0x179b78['childModel']=_0xd218('0x69');break;case _0xd218('0x6a'):_0x179b78[_0xd218('0x11')]=_0xd218('0x6b');break;case _0xd218('0x6c'):_0x179b78['childModel']=_0xd218('0xd');_0x179b78[_0xd218('0x16')]=[{'name':_0xd218('0x6d'),'field':'id','foreignKey':_0xd218('0x6e')}];break;case _0xd218('0x6f'):_0x179b78[_0xd218('0x11')]='AnalyticMetric';break;case _0xd218('0x49'):_0x179b78[_0xd218('0x11')]=_0xd218('0x70');break;}return _0x179b78;}function _0x7e8fe6(_0x4506dd,_0x388810){var _0x450efc=_0x4506dd[_0xd218('0x71')](0x0)[_0xd218('0x72')]()+_0x4506dd[_0xd218('0x73')](0x1);var _0x21bb71={'type':_0x37501d[_0xd218('0x74')][_0xd218('0x75')][_0xd218('0x76')],'raw':!![]};return new BPromise(function(_0x379316,_0x382c08){var _0x3a6edc=squel[_0xd218('0x77')]()[_0xd218('0x5')](_0xd218('0x78')+_0x450efc+_0xd218('0x79'),'id')[_0xd218('0x5')](_0xd218('0x7a'))[_0xd218('0x7b')]('user_has_'+_0x4506dd+_0xd218('0x7c'),'ui')[_0xd218('0x7d')](_0xd218('0x7e'),_0x388810['id']);return _0x37501d[_0xd218('0x7f')][_0xd218('0x80')](_0x3a6edc[_0xd218('0x81')](),_0x21bb71)['then'](function(_0x3c1d6b){_0x388810[_0x450efc+_0xd218('0x82')]=_0x3c1d6b;_0x379316(_0x3c1d6b);})[_0xd218('0x9')](function(_0x38a4a6){_0x382c08(_0x38a4a6);});});}return _0x471687[_0xd218('0x83')]('UserProfile',attributes,{'tableName':_0xd218('0x84'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x5dd163){var _0x223a76={'raw':![],'where':{}};var _0x528ef1={};var _0x4943c1={'count':0x0,'rows':[]};var _0x5ccf79=_0x5dd163['query'][_0xd218('0x85')];var _0x2a0cb6=_0x5dd163[_0xd218('0x80')][_0xd218('0x86')]||![];var _0x2299c1=_0x933642(_0x5ccf79,_0x2a0cb6);if(!_0x2299c1[_0xd218('0x11')])throw new Error(_0xd218('0x87')+_0x5ccf79+'\x27');var _0x2bd6ed=[{'name':_0x5ccf79}];if(!_[_0xd218('0x88')](_0x2299c1[_0xd218('0x16')]))_0x2bd6ed=_0x2299c1[_0xd218('0x16')];var _0x528336=[];for(var _0x52d0f=0x0;_0x52d0f<_0x2bd6ed[_0xd218('0x89')];_0x52d0f++){_0x528336[_0xd218('0x8a')](_0x37501d[_0xd218('0x8b')][_0xd218('0x8c')]({'where':{'userProfileId':_0x5dd163[_0xd218('0x8d')]['id'],'name':_0x2bd6ed[_0x52d0f][_0xd218('0xb')]},'raw':!![]}));}return Promise[_0xd218('0x8e')](_0x528336)['then'](function(_0x5545bb){var _0x4573d0=_[_0xd218('0x4')](_0x5545bb,function(_0x1543a4){return _0x1543a4?_0x1543a4:undefined;});var _0x561045=_[_0xd218('0x4')](_0x2bd6ed,[_0xd218('0x8f'),!![]]);var _0x50697e=_['isEmpty'](_0x4573d0)&&_[_0xd218('0x88')](_0x561045)?null:_[_0xd218('0x90')](_0x561045,_0x4573d0);if(!_0x50697e)return null;var _0x6d190d=[];for(var _0x443e1e=0x0;_0x443e1e<_0x50697e[_0xd218('0x89')];_0x443e1e++){var _0x555d52=_[_0xd218('0x8c')](_0x2bd6ed,function(_0x22257b){return _0x50697e[_0x443e1e]?_0x22257b[_0xd218('0xb')]===_0x50697e[_0x443e1e]['name']:null;});if(_0x555d52){if(_0x50697e[_0x443e1e]['ignore']){_0x6d190d['push'](_0x206436(_0x2299c1[_0xd218('0x11')],_0x50697e[_0x443e1e]));}else{if(!_0x50697e[_0x443e1e][_0xd218('0x91')]){_0x6d190d[_0xd218('0x8a')](_0x586d1b(_0x555d52,_0x50697e[_0x443e1e],_0x2299c1[_0xd218('0x11')]));}else{if(_0x555d52['model']){_0x6d190d[_0xd218('0x8a')](_0x17de5f(_0x555d52,_0x50697e[_0x443e1e]));}}}}}return Promise['all'](_0x6d190d);})['then'](function(_0x4e9e71){var _0x232e2a=_0x4e9e71;var _0x4a4fad=null;if(_0x232e2a){_0x4a4fad=_0x232e2a['length']===0x1?_0x232e2a[0x0]:null;}if(!_0x4a4fad&&!_0x232e2a)return _0x4943c1;var _0x5a4bee=_0x37501d[_0x2299c1[_0xd218('0x11')]][_0xd218('0x92')];_0x528ef1[_0xd218('0x93')]=_[_0xd218('0x94')](_0x5a4bee);_0x528ef1[_0xd218('0x80')]=_[_0xd218('0x94')](_0x5dd163[_0xd218('0x80')]);_0x528ef1['filters']=_[_0xd218('0x95')](_0x528ef1[_0xd218('0x93')],_0x528ef1[_0xd218('0x80')]);_0x223a76[_0xd218('0x96')]=_[_0xd218('0x95')](_0x528ef1[_0xd218('0x93')],qs[_0xd218('0x97')](_0x5dd163[_0xd218('0x80')]['fields']));_0x223a76[_0xd218('0x96')]=_0x223a76[_0xd218('0x96')][_0xd218('0x89')]?_0x223a76[_0xd218('0x96')]:_0x528ef1[_0xd218('0x93')];if(!_0x5dd163['query'][_0xd218('0x98')](_0xd218('0x99'))){_0x223a76[_0xd218('0x9a')]=qs[_0xd218('0x9a')](_0x5dd163[_0xd218('0x80')][_0xd218('0x9a')]);_0x223a76[_0xd218('0x9b')]=qs['offset'](_0x5dd163[_0xd218('0x80')][_0xd218('0x9b')]);}_0x223a76['order']=qs[_0xd218('0x9c')](_0x5dd163[_0xd218('0x80')][_0xd218('0x9c')]);_0x223a76[_0xd218('0x7d')]=qs[_0xd218('0x9d')](_[_0xd218('0x9e')](_0x5dd163[_0xd218('0x80')],_0x528ef1[_0xd218('0x9d')]));if(_0x5dd163['query'][_0xd218('0x4')]){_0x223a76[_0xd218('0x7d')]=_[_0xd218('0x9f')](_0x223a76['where'],{'$or':_[_0xd218('0x8')](_0x5a4bee,function(_0x225723){if(_0x225723['type']['key']!=='VIRTUAL'){var _0x49d59b={};_0x49d59b[_0x225723[_0xd218('0x5')]]={'$like':'%'+_0x5dd163[_0xd218('0x80')][_0xd218('0x4')]+'%'};return _0x49d59b;}})});}var _0x2adfe1=[];if(_0x4a4fad){var _0x1c1a94=_[_0xd218('0x8c')](_0x2bd6ed,[_0xd218('0xb'),_0x4a4fad[_0xd218('0xb')]]);if(_0x1c1a94['field']){var _0x1075b1={};if(_0x2299c1[_0xd218('0x11')]===_0xd218('0xd')){_0x1075b1[_0x1c1a94[_0xd218('0xa0')]]=_[_0xd218('0x8')](_0x4a4fad[_0xd218('0xc')],'id');}else{_0x1075b1[_0x1c1a94['foreignKey']]=_0x4a4fad[_0xd218('0xc')];}_0x2adfe1['push'](_0x1075b1);}else{_0x223a76['where']['id']=_0x4a4fad['associatedResources'];}}else{for(var _0x207a99=0x0;_0x207a99<_0x232e2a[_0xd218('0x89')];_0x207a99++){var _0x1c1a94=_[_0xd218('0x8c')](_0x2bd6ed,['name',_0x232e2a[_0x207a99]['name']]);if(_0x1c1a94[_0xd218('0x5')]){var _0x1075b1={};_0x1075b1[_0x1c1a94[_0xd218('0xa0')]]=_0x232e2a[_0x207a99]['associatedResources'];_0x2adfe1[_0xd218('0x8a')](_0x1075b1);}else{if(!_0x223a76[_0xd218('0x7d')]['id'])_0x223a76[_0xd218('0x7d')]['id']=[];_0x232e2a[_0x207a99][_0xd218('0xc')][_0xd218('0xa1')](function(_0x34fc15){_0x223a76['where']['id'][_0xd218('0x8a')](_0x34fc15);});}}}if(!_[_0xd218('0x88')](_0x2adfe1)){_0x223a76['where']=_['merge'](_0x223a76['where'],{'$and':{'$or':_0x2adfe1}});}_0x223a76=_['merge']({},_0x223a76,_0x5dd163[_0xd218('0xa2')]);if(_0x4a4fad&&!_0x4a4fad['autoAssociation']&&_0x2299c1['childModel']===_0xd218('0xd')){if(_0x5dd163[_0xd218('0x80')][_0xd218('0xa3')]){_0x223a76['include']=[{'all':!![]}];}return _0x37501d[_0x2299c1['childModel']][_0xd218('0x6')](_0x223a76)[_0xd218('0x7')](function(_0x1aaf2e){var _0x2686a0=[];_0x1aaf2e[_0xd218('0xa1')](function(_0x102bdb){var _0x27662e;switch(_0x102bdb[_0xd218('0xa4')]){case _0xd218('0xa5'):_0x27662e=_[_0xd218('0x8c')](_0x4a4fad[_0xd218('0xc')],function(_0x8b36d){return _0x8b36d['id']===_0x102bdb[_0xd218('0x6e')]&&_0x8b36d[_0xd218('0xe')]===_0xd218('0xa6');});break;case'custom':_0x27662e=_[_0xd218('0x8c')](_0x4a4fad[_0xd218('0xc')],function(_0x3cb116){return _0x3cb116['id']===_0x102bdb[_0xd218('0x6e')]&&_0x3cb116[_0xd218('0xe')]===_0xd218('0xa7');});break;}if(_0x27662e)_0x2686a0[_0xd218('0x8a')](_0x102bdb);});_0x4943c1[_0xd218('0xa8')]=_0x2686a0['length'];_0x4943c1['rows']=_0x2686a0;return _0x4943c1;});}else{return _0x37501d[_0x2299c1[_0xd218('0x11')]][_0xd218('0xa8')]({'where':_0x223a76[_0xd218('0x7d')]})[_0xd218('0x7')](function(_0x19da69){_0x4943c1['count']=_0x19da69;if(_0x5dd163[_0xd218('0x80')][_0xd218('0xa3')]){if(_0x2299c1[_0xd218('0x11')]===_0xd218('0x1a')){_0x223a76[_0xd218('0xa9')]=[{'model':_0x37501d[_0xd218('0x64')],'as':_0xd218('0xaa'),'attributes':['id',_0xd218('0xb'),'color'],'required':_0x5dd163[_0xd218('0x80')][_0xd218('0xab')]?!![]:![]},{'model':_0x37501d[_0xd218('0x64')],'as':'ThroughTags','attributes':['id',_0xd218('0xb'),'color'],'through':_0x5dd163[_0xd218('0x80')][_0xd218('0xab')]?{'attributes':[],'where':{'TagId':_0x5dd163[_0xd218('0x80')][_0xd218('0xab')]||undefined}}:{},'required':_0x5dd163['query'][_0xd218('0xab')]?!![]:![]}];}else{_0x223a76[_0xd218('0xa9')]=[{'all':!![]}];}}return _0x37501d[_0x2299c1[_0xd218('0x11')]][_0xd218('0x6')](_0x223a76);})[_0xd218('0x7')](function(_0x172f53){_0x4943c1[_0xd218('0xac')]=_0x172f53;if(_0x5ccf79==='Agents'&&_0x5dd163[_0xd218('0x80')]['openTabs']===_0xd218('0xad')){var _0x51152c=[];for(var _0xd80ae0=0x0;_0xd80ae0<_0x4943c1[_0xd218('0xac')][_0xd218('0x89')];_0xd80ae0++){_0x51152c[_0xd218('0x8a')](_0x7e8fe6('chat',_0x4943c1[_0xd218('0xac')][_0xd80ae0][_0xd218('0xae')]));_0x51152c['push'](_0x7e8fe6(_0xd218('0xaf'),_0x4943c1['rows'][_0xd80ae0][_0xd218('0xae')]));_0x51152c[_0xd218('0x8a')](_0x7e8fe6(_0xd218('0xb0'),_0x4943c1[_0xd218('0xac')][_0xd80ae0][_0xd218('0xae')]));_0x51152c['push'](_0x7e8fe6(_0xd218('0xb1'),_0x4943c1[_0xd218('0xac')][_0xd80ae0]['dataValues']));_0x51152c['push'](_0x7e8fe6(_0xd218('0xb2'),_0x4943c1[_0xd218('0xac')][_0xd80ae0]['dataValues']));_0x51152c[_0xd218('0x8a')](_0x7e8fe6(_0xd218('0xb3'),_0x4943c1[_0xd218('0xac')][_0xd80ae0][_0xd218('0xae')]));}return Promise['all'](_0x51152c)[_0xd218('0x7')](function(){return _0x4943c1;});}return _0x4943c1;});}});}}});};
\ No newline at end of file
+var _0x1967=['rows','Tags','color','ThroughTags','tag','openTabs','true','sms','dataValues','openchannel','whatsapp','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','findAll','then','associatedResources','map','value','catch','resolve','UserProfileResource','resourceId','squareprojects','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','parentSections','SquareProjects','projects','JscriptyProject','ListId','lists','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','internalroutes','VoiceExtension','VoiceContext','voicemails','VoiceMail','VoiceRecording','Agents','name','membername','role','agent','Telephones','User','telephone','VoiceQueues','queue','VoiceQueue','type','inbound','VoiceMusicOnHold','VoiceChanSpy','voiceprefixes','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','mailsubstatuses','openchannelqueues','openchannelaccounts','OpenchannelAccount','SmsQueue','SmsAccount','voicequeues','queuecampaigns','users','agents','telephones','Users','user','ZendeskAccount','freshdeskaccounts','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','ZohoAccount','cannedanswers','CannedAnswer','Disposition','customdashboards','Dashboard','intervals','Interval','Pause','scheduler','Schedule','Sound','tags','Tag','templates','Template','triggers','Trigger','Trunk','variables','Variable','Plugin','extractedreports','AnalyticExtractedReport','Reports','AnalyticMetric','charAt','toUpperCase','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','where','ui.UserId\x20=\x20?','query','toString','define','UserProfile','user_profiles','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','push','UserProfileSection','find','params','all','ignore','union','rawAttributes','model','keys','filters','intersection','fields','attributes','hasOwnProperty','limit','offset','sort','merge','key','VIRTUAL','foreignKey','length','forEach','options','autoAssociation','includeAll','include','default','reportId','DefaultReports','custom','CustomReports','count'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x1967,0x173));var _0x7196=function(_0x111196,_0x34c873){_0x111196=_0x111196-0x0;var _0x4f16b9=_0x1967[_0x111196];return _0x4f16b9;};'use strict';var _=require('lodash');var attributes=require(_0x7196('0x0'));var qs=require(_0x7196('0x1'));var squel=require(_0x7196('0x2'));module[_0x7196('0x3')]=function(_0x3319fa){var _0xa80a3f=_0x3319fa[_0x7196('0x4')];function _0x1aaddd(_0x458ae8,_0x3ae43f){return new Promise(function(_0x5c128f,_0x36b01e){if(!_0x3ae43f)return _0x5c128f(null);var _0x186175=_0x3ae43f[_0x7196('0x5')]?{[_0x3ae43f[_0x7196('0x5')][_0x7196('0x6')]]:_0x3ae43f[_0x7196('0x5')]['value']}:undefined;return _0xa80a3f[_0x458ae8][_0x7196('0x7')]({'where':_0x186175,'raw':!![]})[_0x7196('0x8')](function(_0x3f846e){_0x3ae43f[_0x7196('0x9')]=_[_0x7196('0xa')](_0x3f846e,'id');_0x5c128f(_0x3ae43f);})['catch'](function(_0x49e5fb){_0x36b01e(_0x49e5fb);});});}function _0x2028dd(_0x10459b,_0x97bbff){return new Promise(function(_0x107759,_0x25b780){var _0x46f26c=_0x10459b[_0x7196('0x5')]?{[_0x10459b[_0x7196('0x5')][_0x7196('0x6')]]:_0x10459b[_0x7196('0x5')][_0x7196('0xb')]}:undefined;return _0xa80a3f[_0x10459b['model']][_0x7196('0x7')]({'where':_0x46f26c,'raw':!![]})[_0x7196('0x8')](function(_0x3545aa){_0x97bbff[_0x7196('0x9')]=_['map'](_0x3545aa,function(_0x31c778){return _0x31c778['name'];});_0x107759(_0x97bbff);})[_0x7196('0xc')](function(_0x2590a6){_0x25b780(_0x2590a6);});});}function _0xf7e97(_0x3ed1ad,_0x12dce7,_0x2e3e0e){if(!_0x12dce7)return Promise[_0x7196('0xd')](null);return new Promise(function(_0x1ed296,_0x3e4e69){return _0xa80a3f[_0x7196('0xe')][_0x7196('0x7')]({'where':{'sectionId':_0x12dce7['id']},'raw':!![]})['then'](function(_0x4c4f91){if(_0x3ed1ad[_0x7196('0x6')]&&_0x3ed1ad[_0x7196('0x6')]!=='id'){_0x12dce7[_0x7196('0x9')]=_['map'](_0x4c4f91,function(_0x39b944){return _0x39b944[_0x3ed1ad['field']];});}else{if(_0x2e3e0e==='AnalyticExtractedReport'){_0x12dce7[_0x7196('0x9')]=_[_0x7196('0xa')](_0x4c4f91,function(_0x8dee9d){return{'id':_0x8dee9d['resourceId'],'type':_0x8dee9d['type']};});}else{_0x12dce7[_0x7196('0x9')]=_[_0x7196('0xa')](_0x4c4f91,function(_0x598a26){return _0x598a26[_0x7196('0xf')];});}}_0x1ed296(_0x12dce7);})[_0x7196('0xc')](function(_0x6e22e5){_0x3e4e69(_0x6e22e5);});});}function _0x18d389(_0x38b3d6,_0x549f34){var _0x3f8178={'parentSections':[]};switch(_0x38b3d6['toLowerCase']()){case _0x7196('0x10'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x12');break;case _0x7196('0x13'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x14');break;case'squarerecordings':_0x3f8178['childModel']=_0x7196('0x15');_0x3f8178[_0x7196('0x16')]=[{'name':_0x7196('0x17'),'field':'name','foreignKey':'projectName'}];break;case _0x7196('0x18'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x19');break;case'contacts':_0x3f8178[_0x7196('0x11')]='CmContact';_0x3f8178[_0x7196('0x16')]=[{'name':'Lists','field':'id','foreignKey':_0x7196('0x1a')}];break;case _0x7196('0x1b'):_0x3f8178[_0x7196('0x11')]='CmList';break;case _0x7196('0x1c'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x1d');break;case _0x7196('0x1e'):_0x3f8178['childModel']=_0x7196('0x1f');break;case _0x7196('0x20'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x21');break;case _0x7196('0x22'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x23');break;case _0x7196('0x24'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x25');break;case _0x7196('0x26'):_0x3f8178['childModel']=_0x7196('0x27');break;case'inboundroutes':case _0x7196('0x28'):case'outboundroutes':_0x3f8178[_0x7196('0x11')]=_0x7196('0x29');break;case'contexts':_0x3f8178[_0x7196('0x11')]=_0x7196('0x2a');break;case _0x7196('0x2b'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x2c');break;case'voicerecordings':_0x3f8178[_0x7196('0x11')]=_0x7196('0x2d');_0x3f8178[_0x7196('0x16')]=[{'name':_0x7196('0x2e'),'field':_0x7196('0x2f'),'foreignKey':_0x7196('0x30'),'model':'User','filter':{'field':_0x7196('0x31'),'value':[_0x7196('0x32')]}},{'name':_0x7196('0x33'),'field':'name','foreignKey':_0x7196('0x30'),'model':_0x7196('0x34'),'filter':{'field':_0x7196('0x31'),'value':[_0x7196('0x35')]}},{'name':_0x7196('0x36'),'field':_0x7196('0x2f'),'foreignKey':_0x7196('0x37'),'model':_0x7196('0x38'),'filter':{'field':_0x7196('0x39'),'value':[_0x7196('0x3a')]}},{'name':'QueueCampaigns','field':_0x7196('0x2f'),'foreignKey':_0x7196('0x37'),'model':'VoiceQueue','filter':{'field':_0x7196('0x39'),'value':['outbound']}}];break;case'musiconholds':_0x3f8178[_0x7196('0x11')]=_0x7196('0x3b');break;case'chanspies':_0x3f8178['childModel']=_0x7196('0x3c');break;case _0x7196('0x3d'):_0x3f8178[_0x7196('0x11')]='VoicePrefix';break;case _0x7196('0x3e'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x3f');break;case _0x7196('0x40'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x41');break;case _0x7196('0x42'):_0x3f8178[_0x7196('0x11')]='MailAccount';break;case _0x7196('0x43'):_0x3f8178[_0x7196('0x11')]='MailSubstatus';break;case _0x7196('0x44'):_0x3f8178[_0x7196('0x11')]='OpenchannelQueue';break;case _0x7196('0x45'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x46');break;case'smsqueues':_0x3f8178[_0x7196('0x11')]=_0x7196('0x47');break;case'smsaccounts':_0x3f8178[_0x7196('0x11')]=_0x7196('0x48');break;case'whatsappqueues':_0x3f8178[_0x7196('0x11')]='WhatsappQueue';break;case'whatsappaccounts':_0x3f8178['childModel']='WhatsappAccount';break;case'teams':_0x3f8178[_0x7196('0x11')]='Team';break;case _0x7196('0x49'):case _0x7196('0x4a'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x38');if(_0x549f34){_0x3f8178['parentSections']=[{'name':_0x7196('0x36')},{'name':'QueueCampaigns'}];}break;case _0x7196('0x4b'):case _0x7196('0x4c'):case _0x7196('0x4d'):_0x3f8178['childModel']=_0x7196('0x34');if(_0x549f34){_0x3f8178[_0x7196('0x16')]=[{'name':_0x7196('0x4e'),'filter':{'field':'role','value':['admin',_0x7196('0x4f')]},'ignore':!![]},{'name':'Agents'},{'name':_0x7196('0x33')}];}break;case'zendeskaccounts':_0x3f8178['childModel']=_0x7196('0x50');break;case'salesforceaccounts':_0x3f8178['childModel']='SalesforceAccount';break;case _0x7196('0x51'):_0x3f8178['childModel']='FreshdeskAccount';break;case _0x7196('0x52'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x53');break;case _0x7196('0x54'):_0x3f8178['childModel']=_0x7196('0x55');break;case'zohoaccounts':_0x3f8178[_0x7196('0x11')]=_0x7196('0x56');break;case'vtigeraccounts':_0x3f8178[_0x7196('0x11')]=_0x7196('0x34');break;case _0x7196('0x57'):_0x3f8178['childModel']=_0x7196('0x58');break;case'dispositions':_0x3f8178[_0x7196('0x11')]=_0x7196('0x59');break;case _0x7196('0x5a'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x5b');break;case _0x7196('0x5c'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x5d');break;case'pauses':_0x3f8178['childModel']=_0x7196('0x5e');break;case _0x7196('0x5f'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x60');break;case'sounds':_0x3f8178[_0x7196('0x11')]=_0x7196('0x61');break;case _0x7196('0x62'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x63');break;case _0x7196('0x64'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x65');break;case _0x7196('0x66'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x67');break;case'trunks':_0x3f8178[_0x7196('0x11')]=_0x7196('0x68');break;case _0x7196('0x69'):_0x3f8178['childModel']=_0x7196('0x6a');break;case'plugins':_0x3f8178[_0x7196('0x11')]=_0x7196('0x6b');break;case _0x7196('0x6c'):_0x3f8178[_0x7196('0x11')]=_0x7196('0x6d');_0x3f8178['parentSections']=[{'name':_0x7196('0x6e'),'field':'id','foreignKey':'reportId'}];break;case'metrics':_0x3f8178['childModel']=_0x7196('0x6f');break;}return _0x3f8178;}function _0x3be180(_0x20d306,_0x35f342){var _0x105a3f=_0x20d306[_0x7196('0x70')](0x0)[_0x7196('0x71')]()+_0x20d306['slice'](0x1);var _0x293467={'type':_0xa80a3f[_0x7196('0x72')][_0x7196('0x73')][_0x7196('0x74')],'raw':!![]};return new Promise(function(_0x196f12,_0x5ef1eb){var _0x49282d=squel[_0x7196('0x75')]()[_0x7196('0x6')](_0x7196('0x76')+_0x105a3f+_0x7196('0x77'),'id')[_0x7196('0x6')](_0x7196('0x78'))[_0x7196('0x79')](_0x7196('0x7a')+_0x20d306+_0x7196('0x7b'),'ui')[_0x7196('0x7c')](_0x7196('0x7d'),_0x35f342['id']);return _0xa80a3f['sequelize'][_0x7196('0x7e')](_0x49282d[_0x7196('0x7f')](),_0x293467)[_0x7196('0x8')](function(_0x33f43b){_0x35f342[_0x105a3f+'OpenTabs']=_0x33f43b;_0x196f12(_0x33f43b);})[_0x7196('0xc')](function(_0x204c3a){_0x5ef1eb(_0x204c3a);});});}return _0x3319fa[_0x7196('0x80')](_0x7196('0x81'),attributes,{'tableName':_0x7196('0x82'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x3c3d64){var _0x1d9e75={'raw':![],'where':{}};var _0x559b68={};var _0x7a12d8={'count':0x0,'rows':[]};var _0x2c5cba=_0x3c3d64[_0x7196('0x7e')][_0x7196('0x83')];var _0x52827f=_0x3c3d64[_0x7196('0x7e')][_0x7196('0x84')]||![];var _0x10f376=_0x18d389(_0x2c5cba,_0x52827f);if(!_0x10f376[_0x7196('0x11')])throw new Error(_0x7196('0x85')+_0x2c5cba+'\x27');var _0x37c6be=[{'name':_0x2c5cba}];if(!_[_0x7196('0x86')](_0x10f376['parentSections']))_0x37c6be=_0x10f376['parentSections'];var _0x56955e=[];for(var _0x72f6f1=0x0;_0x72f6f1<_0x37c6be['length'];_0x72f6f1++){_0x56955e[_0x7196('0x87')](_0xa80a3f[_0x7196('0x88')][_0x7196('0x89')]({'where':{'userProfileId':_0x3c3d64[_0x7196('0x8a')]['id'],'name':_0x37c6be[_0x72f6f1][_0x7196('0x2f')]},'raw':!![]}));}return Promise[_0x7196('0x8b')](_0x56955e)[_0x7196('0x8')](function(_0x71dc04){var _0x3881a5=_['filter'](_0x71dc04,function(_0x5c001a){return _0x5c001a?_0x5c001a:undefined;});var _0x4542c1=_[_0x7196('0x5')](_0x37c6be,[_0x7196('0x8c'),!![]]);var _0x2904a6=_[_0x7196('0x86')](_0x3881a5)&&_[_0x7196('0x86')](_0x4542c1)?null:_[_0x7196('0x8d')](_0x4542c1,_0x3881a5);if(!_0x2904a6)return null;var _0x2f36f8=[];for(var _0x4cc5e3=0x0;_0x4cc5e3<_0x2904a6['length'];_0x4cc5e3++){var _0x1a736a=_['find'](_0x37c6be,function(_0x30d114){return _0x2904a6[_0x4cc5e3]?_0x30d114['name']===_0x2904a6[_0x4cc5e3][_0x7196('0x2f')]:null;});if(_0x1a736a){if(_0x2904a6[_0x4cc5e3][_0x7196('0x8c')]){_0x2f36f8[_0x7196('0x87')](_0x1aaddd(_0x10f376[_0x7196('0x11')],_0x2904a6[_0x4cc5e3]));}else{if(!_0x2904a6[_0x4cc5e3]['autoAssociation']){_0x2f36f8['push'](_0xf7e97(_0x1a736a,_0x2904a6[_0x4cc5e3],_0x10f376[_0x7196('0x11')]));}else{if(_0x1a736a['model']){_0x2f36f8[_0x7196('0x87')](_0x2028dd(_0x1a736a,_0x2904a6[_0x4cc5e3]));}}}}}return Promise[_0x7196('0x8b')](_0x2f36f8);})[_0x7196('0x8')](function(_0x38c1b3){var _0xd4c784=_0x38c1b3;var _0x1af971=null;if(_0xd4c784){_0x1af971=_0xd4c784['length']===0x1?_0xd4c784[0x0]:null;}if(!_0x1af971&&!_0xd4c784)return _0x7a12d8;var _0x3128e6=_0xa80a3f[_0x10f376[_0x7196('0x11')]][_0x7196('0x8e')];_0x559b68[_0x7196('0x8f')]=_[_0x7196('0x90')](_0x3128e6);_0x559b68[_0x7196('0x7e')]=_[_0x7196('0x90')](_0x3c3d64[_0x7196('0x7e')]);_0x559b68[_0x7196('0x91')]=_[_0x7196('0x92')](_0x559b68[_0x7196('0x8f')],_0x559b68[_0x7196('0x7e')]);_0x1d9e75['attributes']=_[_0x7196('0x92')](_0x559b68[_0x7196('0x8f')],qs['fields'](_0x3c3d64['query'][_0x7196('0x93')]));_0x1d9e75[_0x7196('0x94')]=_0x1d9e75[_0x7196('0x94')]['length']?_0x1d9e75[_0x7196('0x94')]:_0x559b68['model'];if(!_0x3c3d64[_0x7196('0x7e')][_0x7196('0x95')]('nolimit')){_0x1d9e75[_0x7196('0x96')]=qs['limit'](_0x3c3d64['query'][_0x7196('0x96')]);_0x1d9e75[_0x7196('0x97')]=qs[_0x7196('0x97')](_0x3c3d64['query'][_0x7196('0x97')]);}_0x1d9e75['order']=qs[_0x7196('0x98')](_0x3c3d64[_0x7196('0x7e')][_0x7196('0x98')]);_0x1d9e75[_0x7196('0x7c')]=qs[_0x7196('0x91')](_['pick'](_0x3c3d64[_0x7196('0x7e')],_0x559b68[_0x7196('0x91')]));if(_0x3c3d64[_0x7196('0x7e')][_0x7196('0x5')]){_0x1d9e75[_0x7196('0x7c')]=_[_0x7196('0x99')](_0x1d9e75[_0x7196('0x7c')],{'$or':_[_0x7196('0xa')](_0x3128e6,function(_0x544630){if(_0x544630[_0x7196('0x39')][_0x7196('0x9a')]!==_0x7196('0x9b')){var _0x2b899d={};_0x2b899d[_0x544630['field']]={'$like':'%'+_0x3c3d64[_0x7196('0x7e')][_0x7196('0x5')]+'%'};return _0x2b899d;}})});}var _0x4fe2cb=[];var _0x2e4807=null;var _0x53d470={};if(_0x1af971){_0x2e4807=_[_0x7196('0x89')](_0x37c6be,['name',_0x1af971[_0x7196('0x2f')]]);if(_0x2e4807[_0x7196('0x6')]){_0x53d470={};if(_0x10f376['childModel']===_0x7196('0x6d')){_0x53d470[_0x2e4807[_0x7196('0x9c')]]=_[_0x7196('0xa')](_0x1af971['associatedResources'],'id');}else{_0x53d470[_0x2e4807['foreignKey']]=_0x1af971[_0x7196('0x9')];}_0x4fe2cb['push'](_0x53d470);}else{_0x1d9e75['where']['id']=_0x1af971[_0x7196('0x9')];}}else{for(var _0x72c765=0x0;_0x72c765<_0xd4c784[_0x7196('0x9d')];_0x72c765++){_0x2e4807=_['find'](_0x37c6be,[_0x7196('0x2f'),_0xd4c784[_0x72c765][_0x7196('0x2f')]]);if(_0x2e4807[_0x7196('0x6')]){_0x53d470={};_0x53d470[_0x2e4807[_0x7196('0x9c')]]=_0xd4c784[_0x72c765][_0x7196('0x9')];_0x4fe2cb[_0x7196('0x87')](_0x53d470);}else{if(!_0x1d9e75[_0x7196('0x7c')]['id'])_0x1d9e75[_0x7196('0x7c')]['id']=[];_0xd4c784[_0x72c765][_0x7196('0x9')][_0x7196('0x9e')](function(_0x173fe5){_0x1d9e75['where']['id']['push'](_0x173fe5);});}}}if(!_[_0x7196('0x86')](_0x4fe2cb)){_0x1d9e75['where']=_['merge'](_0x1d9e75[_0x7196('0x7c')],{'$and':{'$or':_0x4fe2cb}});}_0x1d9e75=_[_0x7196('0x99')]({},_0x1d9e75,_0x3c3d64[_0x7196('0x9f')]);if(_0x1af971&&!_0x1af971[_0x7196('0xa0')]&&_0x10f376['childModel']==='AnalyticExtractedReport'){if(_0x3c3d64[_0x7196('0x7e')][_0x7196('0xa1')]){_0x1d9e75[_0x7196('0xa2')]=[{'all':!![]}];}return _0xa80a3f[_0x10f376[_0x7196('0x11')]]['findAll'](_0x1d9e75)[_0x7196('0x8')](function(_0x4afbee){var _0x4e8ba8=[];_0x4afbee[_0x7196('0x9e')](function(_0x884d80){var _0x1e14da;switch(_0x884d80['reportType']){case _0x7196('0xa3'):_0x1e14da=_[_0x7196('0x89')](_0x1af971[_0x7196('0x9')],function(_0x30c54b){return _0x30c54b['id']===_0x884d80[_0x7196('0xa4')]&&_0x30c54b[_0x7196('0x39')]===_0x7196('0xa5');});break;case _0x7196('0xa6'):_0x1e14da=_['find'](_0x1af971[_0x7196('0x9')],function(_0x2479b9){return _0x2479b9['id']===_0x884d80[_0x7196('0xa4')]&&_0x2479b9[_0x7196('0x39')]===_0x7196('0xa7');});break;}if(_0x1e14da)_0x4e8ba8['push'](_0x884d80);});_0x7a12d8[_0x7196('0xa8')]=_0x4e8ba8[_0x7196('0x9d')];_0x7a12d8[_0x7196('0xa9')]=_0x4e8ba8;return _0x7a12d8;});}else{return _0xa80a3f[_0x10f376['childModel']][_0x7196('0xa8')]({'where':_0x1d9e75['where']})['then'](function(_0x1dcf93){_0x7a12d8[_0x7196('0xa8')]=_0x1dcf93;if(_0x3c3d64['query'][_0x7196('0xa1')]){if(_0x10f376[_0x7196('0x11')]==='CmContact'){_0x1d9e75[_0x7196('0xa2')]=[{'model':_0xa80a3f[_0x7196('0x63')],'as':_0x7196('0xaa'),'attributes':['id',_0x7196('0x2f'),_0x7196('0xab')],'required':_0x3c3d64[_0x7196('0x7e')]['tag']?!![]:![]},{'model':_0xa80a3f[_0x7196('0x63')],'as':_0x7196('0xac'),'attributes':['id',_0x7196('0x2f'),'color'],'through':_0x3c3d64['query']['tag']?{'attributes':[],'where':{'TagId':_0x3c3d64[_0x7196('0x7e')][_0x7196('0xad')]||undefined}}:{},'required':_0x3c3d64[_0x7196('0x7e')]['tag']?!![]:![]}];}else{_0x1d9e75[_0x7196('0xa2')]=[{'all':!![]}];}}return _0xa80a3f[_0x10f376['childModel']][_0x7196('0x7')](_0x1d9e75);})['then'](function(_0x389b5b){_0x7a12d8[_0x7196('0xa9')]=_0x389b5b;if(_0x2c5cba===_0x7196('0x2e')&&_0x3c3d64[_0x7196('0x7e')][_0x7196('0xae')]===_0x7196('0xaf')){var _0x43e7d5=[];for(var _0x48608b=0x0;_0x48608b<_0x7a12d8[_0x7196('0xa9')]['length'];_0x48608b++){_0x43e7d5['push'](_0x3be180('chat',_0x7a12d8['rows'][_0x48608b]['dataValues']));_0x43e7d5[_0x7196('0x87')](_0x3be180(_0x7196('0xb0'),_0x7a12d8[_0x7196('0xa9')][_0x48608b]['dataValues']));_0x43e7d5[_0x7196('0x87')](_0x3be180('fax',_0x7a12d8['rows'][_0x48608b]['dataValues']));_0x43e7d5[_0x7196('0x87')](_0x3be180('mail',_0x7a12d8[_0x7196('0xa9')][_0x48608b][_0x7196('0xb1')]));_0x43e7d5[_0x7196('0x87')](_0x3be180(_0x7196('0xb2'),_0x7a12d8[_0x7196('0xa9')][_0x48608b][_0x7196('0xb1')]));_0x43e7d5[_0x7196('0x87')](_0x3be180(_0x7196('0xb3'),_0x7a12d8['rows'][_0x48608b][_0x7196('0xb1')]));}return Promise[_0x7196('0x8b')](_0x43e7d5)[_0x7196('0x8')](function(){return _0x7a12d8;});}return _0x7a12d8;});}});}}});};
\ No newline at end of file
index e988dbb..6eb40a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffd6=['../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','request','then','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','lodash','util','moment','ioredis','../../mysqldb'];(function(_0x1aaa57,_0x3b0b60){var _0x1e33ec=function(_0x450b84){while(--_0x450b84){_0x1aaa57['push'](_0x1aaa57['shift']());}};_0x1e33ec(++_0x3b0b60);}(_0xffd6,0x97));var _0x6ffd=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xffd6[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x6ffd('0x0'));var util=require(_0x6ffd('0x1'));var moment=require(_0x6ffd('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ffd('0x3'));var db=require(_0x6ffd('0x4'))['db'];var utils=require(_0x6ffd('0x5'));var logger=require('../../config/logger')(_0x6ffd('0x6'));var config=require(_0x6ffd('0x7'));var jayson=require(_0x6ffd('0x8'));var client=jayson[_0x6ffd('0x9')]['http']({'port':0x232a});config[_0x6ffd('0xa')]=_[_0x6ffd('0xb')](config[_0x6ffd('0xa')],{'host':_0x6ffd('0xc'),'port':0x18eb});var socket=require(_0x6ffd('0xd'))(new Redis(config['redis']));require(_0x6ffd('0xe'))[_0x6ffd('0xf')](socket);function respondWithRpcPromise(_0x4e57f5,_0x469d0d,_0x38fc68){return new BPromise(function(_0x23f7f2,_0x3dda1e){return client[_0x6ffd('0x10')](_0x4e57f5,_0x38fc68)[_0x6ffd('0x11')](function(_0x836501){logger['info'](_0x6ffd('0x12'),_0x469d0d,_0x6ffd('0x13'));logger['debug'](_0x6ffd('0x14'),_0x469d0d,_0x6ffd('0x13'),JSON[_0x6ffd('0x15')](_0x836501));if(_0x836501[_0x6ffd('0x16')]){if(_0x836501['error'][_0x6ffd('0x17')]===0x1f4){logger['error'](_0x6ffd('0x12'),_0x469d0d,_0x836501['error'][_0x6ffd('0x18')]);return _0x3dda1e(_0x836501[_0x6ffd('0x16')][_0x6ffd('0x18')]);}logger['error'](_0x6ffd('0x12'),_0x469d0d,_0x836501[_0x6ffd('0x16')][_0x6ffd('0x18')]);return _0x23f7f2(_0x836501[_0x6ffd('0x16')][_0x6ffd('0x18')]);}else{logger[_0x6ffd('0x19')](_0x6ffd('0x12'),_0x469d0d,_0x6ffd('0x13'));_0x23f7f2(_0x836501['result'][_0x6ffd('0x18')]);}})['catch'](function(_0x587d0b){logger[_0x6ffd('0x16')](_0x6ffd('0x12'),_0x469d0d,_0x587d0b);_0x3dda1e(_0x587d0b);});});}
\ No newline at end of file
+var _0xf2e3=['code','UserProfile,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','request','then','info','request\x20sent','debug','stringify','error'];(function(_0xd02def,_0x144f25){var _0x2e8374=function(_0x5ceb35){while(--_0x5ceb35){_0xd02def['push'](_0xd02def['shift']());}};_0x2e8374(++_0x144f25);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x220f3f,_0x11c540){_0x220f3f=_0x220f3f-0x0;var _0x1f170e=_0xf2e3[_0x220f3f];return _0x1f170e;};'use strict';var _=require(_0x3f2e('0x0'));var util=require('util');var moment=require(_0x3f2e('0x1'));var BPromise=require(_0x3f2e('0x2'));var rs=require(_0x3f2e('0x3'));var fs=require('fs');var Redis=require(_0x3f2e('0x4'));var db=require(_0x3f2e('0x5'))['db'];var utils=require(_0x3f2e('0x6'));var logger=require(_0x3f2e('0x7'))(_0x3f2e('0x8'));var config=require(_0x3f2e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3f2e('0xa')][_0x3f2e('0xb')]({'port':0x232a});config[_0x3f2e('0xc')]=_[_0x3f2e('0xd')](config[_0x3f2e('0xc')],{'host':_0x3f2e('0xe'),'port':0x18eb});var socket=require(_0x3f2e('0xf'))(new Redis(config[_0x3f2e('0xc')]));require(_0x3f2e('0x10'))[_0x3f2e('0x11')](socket);function respondWithRpcPromise(_0x21f22b,_0x32902a,_0x1dd9d0){return new BPromise(function(_0x10a392,_0x1bb1dd){return client[_0x3f2e('0x12')](_0x21f22b,_0x1dd9d0)[_0x3f2e('0x13')](function(_0x475cd2){logger[_0x3f2e('0x14')]('UserProfile,\x20%s,\x20%s',_0x32902a,_0x3f2e('0x15'));logger[_0x3f2e('0x16')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x32902a,_0x3f2e('0x15'),JSON[_0x3f2e('0x17')](_0x475cd2));if(_0x475cd2[_0x3f2e('0x18')]){if(_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x19')]===0x1f4){logger['error'](_0x3f2e('0x1a'),_0x32902a,_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x1b')]);return _0x1bb1dd(_0x475cd2['error'][_0x3f2e('0x1b')]);}logger[_0x3f2e('0x18')](_0x3f2e('0x1a'),_0x32902a,_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x1b')]);return _0x10a392(_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x1b')]);}else{logger[_0x3f2e('0x14')](_0x3f2e('0x1a'),_0x32902a,_0x3f2e('0x15'));_0x10a392(_0x475cd2[_0x3f2e('0x1c')]['message']);}})[_0x3f2e('0x1d')](function(_0x243822){logger[_0x3f2e('0x18')](_0x3f2e('0x1a'),_0x32902a,_0x243822);_0x1bb1dd(_0x243822);});});}
\ No newline at end of file
index aaafa02..1cc7920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ac1=['userProfile:','./userProfile.events','remove','emit','removeListener','register','length'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9ac1,0x15f));var _0x19ac=function(_0x3dc36e,_0x4af46d){_0x3dc36e=_0x3dc36e-0x0;var _0xa13e71=_0x9ac1[_0x3dc36e];return _0xa13e71;};'use strict';var UserProfileEvents=require(_0x19ac('0x0'));var events=['save',_0x19ac('0x1'),'update'];function createListener(_0x1d2dd8,_0x4ed61d){return function(_0x1dfd79){_0x4ed61d[_0x19ac('0x2')](_0x1d2dd8,_0x1dfd79);};}function removeListener(_0x166209,_0x1c1dc5){return function(){UserProfileEvents[_0x19ac('0x3')](_0x166209,_0x1c1dc5);};}exports[_0x19ac('0x4')]=function(_0x3a3ed6){for(var _0x2876d3=0x0,_0x57f43a=events[_0x19ac('0x5')];_0x2876d3<_0x57f43a;_0x2876d3++){var _0x163cb8=events[_0x2876d3];var _0x39df9f=createListener(_0x19ac('0x6')+_0x163cb8,_0x3a3ed6);UserProfileEvents['on'](_0x163cb8,_0x39df9f);}};
\ No newline at end of file
+var _0xc542=['./userProfile.events','remove','update','emit','removeListener','register','length'];(function(_0x111b6c,_0x1466b1){var _0x42d89d=function(_0x2e52be){while(--_0x2e52be){_0x111b6c['push'](_0x111b6c['shift']());}};_0x42d89d(++_0x1466b1);}(_0xc542,0x16c));var _0x2c54=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xc542[_0x13d07a];return _0x5ee0ee;};'use strict';var UserProfileEvents=require(_0x2c54('0x0'));var events=['save',_0x2c54('0x1'),_0x2c54('0x2')];function createListener(_0x34aa09,_0x301f38){return function(_0x336c26){_0x301f38[_0x2c54('0x3')](_0x34aa09,_0x336c26);};}function removeListener(_0x59f4fb,_0x542660){return function(){UserProfileEvents[_0x2c54('0x4')](_0x59f4fb,_0x542660);};}exports[_0x2c54('0x5')]=function(_0x32ff50){for(var _0x27affd=0x0,_0x15400c=events[_0x2c54('0x6')];_0x27affd<_0x15400c;_0x27affd++){var _0x14514f=events[_0x27affd];var _0xdb34a8=createListener('userProfile:'+_0x14514f,_0x32ff50);UserProfileEvents['on'](_0x14514f,_0xdb34a8);}};
\ No newline at end of file
index f52a068..8ebb5e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x519a=['isAuthenticated','describe','/:id','show','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','index'];(function(_0x37136f,_0x1785e9){var _0x354dc1=function(_0x584d03){while(--_0x584d03){_0x37136f['push'](_0x37136f['shift']());}};_0x354dc1(++_0x1785e9);}(_0x519a,0x145));var _0xa519=function(_0x58c20f,_0x4cdb1b){_0x58c20f=_0x58c20f-0x0;var _0x3b0318=_0x519a[_0x58c20f];return _0x3b0318;};'use strict';var multer=require(_0xa519('0x0'));var util=require('util');var path=require(_0xa519('0x1'));var timeout=require(_0xa519('0x2'));var express=require(_0xa519('0x3'));var router=express[_0xa519('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa519('0x5'));var interaction=require(_0xa519('0x6'));var config=require(_0xa519('0x7'));var controller=require(_0xa519('0x8'));router[_0xa519('0x9')]('/',auth['isAuthenticated'](),controller[_0xa519('0xa')]);router['get']('/describe',auth[_0xa519('0xb')](),controller[_0xa519('0xc')]);router['get'](_0xa519('0xd'),auth[_0xa519('0xb')](),controller[_0xa519('0xe')]);router['post']('/',auth[_0xa519('0xb')](),controller[_0xa519('0xf')]);router[_0xa519('0x10')](_0xa519('0xd'),auth[_0xa519('0xb')](),controller[_0xa519('0x11')]);router[_0xa519('0x12')](_0xa519('0xd'),auth[_0xa519('0xb')](),controller[_0xa519('0x13')]);module[_0xa519('0x14')]=router;
\ No newline at end of file
+var _0xa15a=['./userProfileResource.controller','get','isAuthenticated','index','describe','/:id','show','post','put','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x23d5e1,_0x44b669){var _0x4fe821=function(_0x5a32ee){while(--_0x5a32ee){_0x23d5e1['push'](_0x23d5e1['shift']());}};_0x4fe821(++_0x44b669);}(_0xa15a,0x174));var _0xaa15=function(_0x45934d,_0x320d8e){_0x45934d=_0x45934d-0x0;var _0x286e59=_0xa15a[_0x45934d];return _0x286e59;};'use strict';var multer=require(_0xaa15('0x0'));var util=require('util');var path=require(_0xaa15('0x1'));var timeout=require(_0xaa15('0x2'));var express=require(_0xaa15('0x3'));var router=express[_0xaa15('0x4')]();var fs_extra=require(_0xaa15('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xaa15('0x6'));var config=require(_0xaa15('0x7'));var controller=require(_0xaa15('0x8'));router[_0xaa15('0x9')]('/',auth[_0xaa15('0xa')](),controller[_0xaa15('0xb')]);router[_0xaa15('0x9')]('/describe',auth[_0xaa15('0xa')](),controller[_0xaa15('0xc')]);router['get'](_0xaa15('0xd'),auth[_0xaa15('0xa')](),controller[_0xaa15('0xe')]);router[_0xaa15('0xf')]('/',auth[_0xaa15('0xa')](),controller['create']);router[_0xaa15('0x10')](_0xaa15('0xd'),auth[_0xaa15('0xa')](),controller[_0xaa15('0x11')]);router[_0xaa15('0x12')](_0xaa15('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xaa15('0x13')]=router;
\ No newline at end of file
index dfa6860..ce2ab21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87df=['sequelize','exports','STRING','INTEGER'];(function(_0x25fe9e,_0x2088a4){var _0x1210ce=function(_0x43ff87){while(--_0x43ff87){_0x25fe9e['push'](_0x25fe9e['shift']());}};_0x1210ce(++_0x2088a4);}(_0x87df,0xd8));var _0xf87d=function(_0x57494e,_0x2c4d3d){_0x57494e=_0x57494e-0x0;var _0x4099da=_0x87df[_0x57494e];return _0x4099da;};'use strict';var Sequelize=require(_0xf87d('0x0'));module[_0xf87d('0x1')]={'name':{'type':Sequelize[_0xf87d('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xf87d('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xf87d('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xe35b=['sequelize','STRING','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe35b,0xae));var _0xbe35=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0xe35b[_0x18ab2a];return _0x16dcee;};'use strict';var Sequelize=require(_0xbe35('0x0'));module['exports']={'name':{'type':Sequelize[_0xbe35('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xbe35('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 45c2a55..b9e36e1 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(_0x303853,_0x5ebe23){var _0xc5f51=function(_0x2edee0){while(--_0x2edee0){_0x303853['push'](_0x303853['shift']());}};_0xc5f51(++_0x5ebe23);}(_0xc2c7,0x134));var _0x7c2c=function(_0x47f0d4,_0xb72e5f){_0x47f0d4=_0x47f0d4-0x0;var _0x53c2dd=_0xc2c7[_0x47f0d4];return _0x53c2dd;};'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 _0x4991=['hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','UserProfileResource','includeAll','include','findAll','rows','show','params','keys','find','create','body','catch','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length'];(function(_0x1a1b69,_0x37b98d){var _0x546b2d=function(_0x195199){while(--_0x195199){_0x1a1b69['push'](_0x1a1b69['shift']());}};_0x546b2d(++_0x37b98d);}(_0x4991,0xf7));var _0x1499=function(_0x2fc861,_0x119b16){_0x2fc861=_0x2fc861-0x0;var _0x2f14f3=_0x4991[_0x2fc861];return _0x2f14f3;};'use strict';var emlformat=require(_0x1499('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1499('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1499('0x2'));var moment=require(_0x1499('0x3'));var BPromise=require(_0x1499('0x4'));var Mustache=require(_0x1499('0x5'));var util=require(_0x1499('0x6'));var path=require(_0x1499('0x7'));var sox=require(_0x1499('0x8'));var csv=require(_0x1499('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1499('0xa'));var _=require(_0x1499('0xb'));var squel=require(_0x1499('0xc'));var crypto=require(_0x1499('0xd'));var jsforce=require(_0x1499('0xe'));var deskjs=require(_0x1499('0xf'));var toCsv=require(_0x1499('0x9'));var querystring=require(_0x1499('0x10'));var Papa=require('papaparse');var Redis=require(_0x1499('0x11'));var authService=require(_0x1499('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1499('0x13'));var hardwareService=require(_0x1499('0x14'));var logger=require('../../config/logger')(_0x1499('0x15'));var utils=require(_0x1499('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3039ce,_0x274bc1){_0x274bc1=_0x274bc1||0xcc;return function(_0x34a928){if(_0x34a928){return _0x3039ce[_0x1499('0x17')](_0x274bc1);}return _0x3039ce[_0x1499('0x18')](_0x274bc1)['end']();};}function respondWithResult(_0x5f34f2,_0x308177){_0x308177=_0x308177||0xc8;return function(_0x4e5195){if(_0x4e5195){return _0x5f34f2[_0x1499('0x18')](_0x308177)[_0x1499('0x19')](_0x4e5195);}};}function respondWithFilteredResult(_0x308318,_0x3ab605){return function(_0x48f654){if(_0x48f654){var _0x1ed43b=typeof _0x3ab605[_0x1499('0x1a')]==='undefined'&&typeof _0x3ab605[_0x1499('0x1b')]===_0x1499('0x1c');var _0x46b364=_0x48f654[_0x1499('0x1d')];var _0x1e45a9=_0x1ed43b?0x0:_0x3ab605[_0x1499('0x1a')];var _0x5b9859=_0x1ed43b?_0x48f654['count']:_0x3ab605['offset']+_0x3ab605[_0x1499('0x1b')];var _0xad534b;if(_0x5b9859>=_0x46b364){_0x5b9859=_0x46b364;_0xad534b=0xc8;}else{_0xad534b=0xce;}_0x308318['status'](_0xad534b);return _0x308318[_0x1499('0x1e')](_0x1499('0x1f'),_0x1e45a9+'-'+_0x5b9859+'/'+_0x46b364)[_0x1499('0x19')](_0x48f654);}return null;};}function patchUpdates(_0x18e4a6){return function(_0x21e887){try{jsonpatch[_0x1499('0x20')](_0x21e887,_0x18e4a6,!![]);}catch(_0x2b0458){return BPromise[_0x1499('0x21')](_0x2b0458);}return _0x21e887[_0x1499('0x22')]();};}function saveUpdates(_0x15bcd4,_0x2bb71f){return function(_0x836081){if(_0x836081){return _0x836081[_0x1499('0x23')](_0x15bcd4)[_0x1499('0x24')](function(_0x4ec57a){return _0x4ec57a;});}return null;};}function removeEntity(_0x1e2c51,_0x2c7f57){return function(_0x5615b4){if(_0x5615b4){return _0x5615b4[_0x1499('0x25')]()[_0x1499('0x24')](function(){_0x1e2c51[_0x1499('0x18')](0xcc)[_0x1499('0x26')]();});}};}function handleEntityNotFound(_0x3968e0,_0x16d036){return function(_0x54f3c2){if(!_0x54f3c2){_0x3968e0['sendStatus'](0x194);}return _0x54f3c2;};}function handleError(_0x12739b,_0x3c9aca){_0x3c9aca=_0x3c9aca||0x1f4;return function(_0x3b9259){logger[_0x1499('0x27')](_0x3b9259[_0x1499('0x28')]);if(_0x3b9259['name']){delete _0x3b9259[_0x1499('0x29')];}_0x12739b['status'](_0x3c9aca)['send'](_0x3b9259);};}exports['index']=function(_0x21d204,_0x103efa){var _0x40932a={},_0x1b460b={},_0x3dad86={'count':0x0,'rows':[]};var _0x388513=_[_0x1499('0x2a')](db['UserProfileResource'][_0x1499('0x2b')],function(_0x1a2c99){return{'name':_0x1a2c99[_0x1499('0x2c')],'type':_0x1a2c99['type'][_0x1499('0x2d')]};});_0x1b460b[_0x1499('0x2e')]=_['map'](_0x388513,_0x1499('0x29'));_0x1b460b[_0x1499('0x2f')]=_['keys'](_0x21d204[_0x1499('0x2f')]);_0x1b460b[_0x1499('0x30')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],_0x1b460b[_0x1499('0x2f')]);_0x40932a[_0x1499('0x32')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x21d204[_0x1499('0x2f')][_0x1499('0x33')]));_0x40932a[_0x1499('0x32')]=_0x40932a[_0x1499('0x32')][_0x1499('0x34')]?_0x40932a[_0x1499('0x32')]:_0x1b460b[_0x1499('0x2e')];if(!_0x21d204[_0x1499('0x2f')][_0x1499('0x35')](_0x1499('0x36'))){_0x40932a[_0x1499('0x1b')]=qs['limit'](_0x21d204[_0x1499('0x2f')][_0x1499('0x1b')]);_0x40932a[_0x1499('0x1a')]=qs[_0x1499('0x1a')](_0x21d204[_0x1499('0x2f')][_0x1499('0x1a')]);}_0x40932a[_0x1499('0x37')]=qs[_0x1499('0x38')](_0x21d204[_0x1499('0x2f')][_0x1499('0x38')]);_0x40932a[_0x1499('0x39')]=qs['filters'](_['pick'](_0x21d204[_0x1499('0x2f')],_0x1b460b['filters']),_0x388513);if(_0x21d204[_0x1499('0x2f')]['filter']){_0x40932a[_0x1499('0x39')]=_[_0x1499('0x3a')](_0x40932a[_0x1499('0x39')],{'$or':_[_0x1499('0x2a')](_0x388513,function(_0x531933){if(_0x531933[_0x1499('0x3b')]!=='VIRTUAL'){var _0x2f9c59={};_0x2f9c59[_0x531933[_0x1499('0x29')]]={'$like':'%'+_0x21d204[_0x1499('0x2f')][_0x1499('0x3c')]+'%'};return _0x2f9c59;}})});}_0x40932a=_['merge']({},_0x40932a,_0x21d204[_0x1499('0x3d')]);var _0x815a99={'where':_0x40932a[_0x1499('0x39')]};return db[_0x1499('0x3e')]['count'](_0x815a99)[_0x1499('0x24')](function(_0x4cc411){_0x3dad86[_0x1499('0x1d')]=_0x4cc411;if(_0x21d204[_0x1499('0x2f')][_0x1499('0x3f')]){_0x40932a[_0x1499('0x40')]=[{'all':!![]}];}return db[_0x1499('0x3e')][_0x1499('0x41')](_0x40932a);})[_0x1499('0x24')](function(_0xcb85eb){_0x3dad86[_0x1499('0x42')]=_0xcb85eb;return _0x3dad86;})[_0x1499('0x24')](respondWithFilteredResult(_0x103efa,_0x40932a))['catch'](handleError(_0x103efa,null));};exports[_0x1499('0x43')]=function(_0x5dd36c,_0x2cfdaf){var _0x1af1a1={'raw':![],'where':{'id':_0x5dd36c[_0x1499('0x44')]['id']}},_0x5646cf={};_0x5646cf[_0x1499('0x2e')]=_[_0x1499('0x45')](db[_0x1499('0x3e')][_0x1499('0x2b')]);_0x5646cf['query']=_['keys'](_0x5dd36c[_0x1499('0x2f')]);_0x5646cf[_0x1499('0x30')]=_['intersection'](_0x5646cf[_0x1499('0x2e')],_0x5646cf[_0x1499('0x2f')]);_0x1af1a1['attributes']=_['intersection'](_0x5646cf[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x5dd36c[_0x1499('0x2f')]['fields']));_0x1af1a1[_0x1499('0x32')]=_0x1af1a1[_0x1499('0x32')][_0x1499('0x34')]?_0x1af1a1[_0x1499('0x32')]:_0x5646cf['model'];if(_0x5dd36c[_0x1499('0x2f')][_0x1499('0x3f')]){_0x1af1a1[_0x1499('0x40')]=[{'all':!![]}];}_0x1af1a1=_[_0x1499('0x3a')]({},_0x1af1a1,_0x5dd36c['options']);return db[_0x1499('0x3e')][_0x1499('0x46')](_0x1af1a1)[_0x1499('0x24')](handleEntityNotFound(_0x2cfdaf,null))['then'](respondWithResult(_0x2cfdaf,null))['catch'](handleError(_0x2cfdaf,null));};exports[_0x1499('0x47')]=function(_0x491777,_0x7fa101){return db[_0x1499('0x3e')][_0x1499('0x47')](_0x491777[_0x1499('0x48')],{})[_0x1499('0x24')](respondWithResult(_0x7fa101,0xc9))[_0x1499('0x49')](handleError(_0x7fa101,null));};exports[_0x1499('0x23')]=function(_0x591aa8,_0x420d16){if(_0x591aa8['body']['id']){delete _0x591aa8[_0x1499('0x48')]['id'];}return db[_0x1499('0x3e')]['find']({'where':{'id':_0x591aa8[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x420d16,null))[_0x1499('0x24')](saveUpdates(_0x591aa8['body'],null))[_0x1499('0x24')](respondWithResult(_0x420d16,null))[_0x1499('0x49')](handleError(_0x420d16,null));};exports[_0x1499('0x25')]=function(_0x29ac0f,_0x305599){return db[_0x1499('0x3e')][_0x1499('0x46')]({'where':{'id':_0x29ac0f[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x305599,null))[_0x1499('0x24')](removeEntity(_0x305599,null))['catch'](handleError(_0x305599,null));};exports[_0x1499('0x4a')]=function(_0x9f0520,_0x278178){return db['UserProfileResource'][_0x1499('0x4a')]()[_0x1499('0x24')](respondWithResult(_0x278178,null))['catch'](handleError(_0x278178,null));};
\ No newline at end of file
index e108dd9..3f30ded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c3a=['path','rimraf','../../config/environment','exports','define','user_profile_has_resources','resourceId','util','api','moment','bluebird','request-promise'];(function(_0x3890d1,_0x1bb20b){var _0x47cc35=function(_0x462198){while(--_0x462198){_0x3890d1['push'](_0x3890d1['shift']());}};_0x47cc35(++_0x1bb20b);}(_0x8c3a,0x7f));var _0xa8c3=function(_0x4230aa,_0x2b4896){_0x4230aa=_0x4230aa-0x0;var _0x548a5b=_0x8c3a[_0x4230aa];return _0x548a5b;};'use strict';var _=require('lodash');var util=require(_0xa8c3('0x0'));var logger=require('../../config/logger')(_0xa8c3('0x1'));var moment=require(_0xa8c3('0x2'));var BPromise=require(_0xa8c3('0x3'));var rp=require(_0xa8c3('0x4'));var fs=require('fs');var path=require(_0xa8c3('0x5'));var rimraf=require(_0xa8c3('0x6'));var config=require(_0xa8c3('0x7'));var attributes=require('./userProfileResource.attributes');module[_0xa8c3('0x8')]=function(_0x5c6ad1,_0x47a709){return _0x5c6ad1[_0xa8c3('0x9')]('UserProfileResource',attributes,{'tableName':_0xa8c3('0xa'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0xa8c3('0xb'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x62ec=['rimraf','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','util','../../config/logger','request-promise','path'];(function(_0xe6f0ef,_0x2778f7){var _0xbb19af=function(_0x13b0d0){while(--_0x13b0d0){_0xe6f0ef['push'](_0xe6f0ef['shift']());}};_0xbb19af(++_0x2778f7);}(_0x62ec,0x14e));var _0xc62e=function(_0x15ef48,_0x2f90a5){_0x15ef48=_0x15ef48-0x0;var _0x146840=_0x62ec[_0x15ef48];return _0x146840;};'use strict';var _=require('lodash');var util=require(_0xc62e('0x0'));var logger=require(_0xc62e('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc62e('0x2'));var fs=require('fs');var path=require(_0xc62e('0x3'));var rimraf=require(_0xc62e('0x4'));var config=require(_0xc62e('0x5'));var attributes=require(_0xc62e('0x6'));module[_0xc62e('0x7')]=function(_0x2a7bc2,_0x57c073){return _0x2a7bc2[_0xc62e('0x8')](_0xc62e('0x9'),attributes,{'tableName':_0xc62e('0xa'),'paranoid':![],'indexes':[{'name':_0xc62e('0xb'),'fields':[_0xc62e('0xc'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
index 17c399c..c610716 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5df3=['randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','moment','bluebird'];(function(_0x2ec3d1,_0x2d82b2){var _0x2551e2=function(_0x5a638b){while(--_0x5a638b){_0x2ec3d1['push'](_0x2ec3d1['shift']());}};_0x2551e2(++_0x2d82b2);}(_0x5df3,0xb2));var _0x35df=function(_0xa1de8d,_0x1399a8){_0xa1de8d=_0xa1de8d-0x0;var _0x478b44=_0x5df3[_0xa1de8d];return _0x478b44;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x35df('0x0'));var BPromise=require(_0x35df('0x1'));var rs=require(_0x35df('0x2'));var fs=require('fs');var Redis=require(_0x35df('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x35df('0x4'));var logger=require(_0x35df('0x5'))('rpc');var config=require(_0x35df('0x6'));var jayson=require(_0x35df('0x7'));var client=jayson[_0x35df('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x349c9a,_0x55c94a,_0x544f0f){return new BPromise(function(_0x5d27ca,_0x20ee6b){return client['request'](_0x349c9a,_0x544f0f)[_0x35df('0x9')](function(_0x507bdb){logger[_0x35df('0xa')](_0x35df('0xb'),_0x55c94a,_0x35df('0xc'));logger[_0x35df('0xd')](_0x35df('0xe'),_0x55c94a,_0x35df('0xc'),JSON[_0x35df('0xf')](_0x507bdb));if(_0x507bdb['error']){if(_0x507bdb['error']['code']===0x1f4){logger[_0x35df('0x10')]('UserProfileResource,\x20%s,\x20%s',_0x55c94a,_0x507bdb[_0x35df('0x10')]['message']);return _0x20ee6b(_0x507bdb[_0x35df('0x10')][_0x35df('0x11')]);}logger[_0x35df('0x10')](_0x35df('0xb'),_0x55c94a,_0x507bdb[_0x35df('0x10')]['message']);return _0x5d27ca(_0x507bdb[_0x35df('0x10')][_0x35df('0x11')]);}else{logger[_0x35df('0xa')](_0x35df('0xb'),_0x55c94a,'request\x20sent');_0x5d27ca(_0x507bdb[_0x35df('0x12')]['message']);}})[_0x35df('0x13')](function(_0x55c0fe){logger[_0x35df('0x10')](_0x35df('0xb'),_0x55c94a,_0x55c0fe);_0x20ee6b(_0x55c0fe);});});}
\ No newline at end of file
+var _0x8f32=['error','code','UserProfileResource,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','http','request','info','request\x20sent','UserProfileResource,\x20%s,\x20%s,\x20%s'];(function(_0x3c0f44,_0x107413){var _0x2b8e57=function(_0x3cc9b1){while(--_0x3cc9b1){_0x3c0f44['push'](_0x3c0f44['shift']());}};_0x2b8e57(++_0x107413);}(_0x8f32,0x14a));var _0x28f3=function(_0x53a22a,_0x1f395c){_0x53a22a=_0x53a22a-0x0;var _0x3ca838=_0x8f32[_0x53a22a];return _0x3ca838;};'use strict';var _=require(_0x28f3('0x0'));var util=require('util');var moment=require(_0x28f3('0x1'));var BPromise=require(_0x28f3('0x2'));var rs=require(_0x28f3('0x3'));var fs=require('fs');var Redis=require(_0x28f3('0x4'));var db=require(_0x28f3('0x5'))['db'];var utils=require(_0x28f3('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x28f3('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2da817,_0x56da75,_0x399b34){return new BPromise(function(_0x23bfc2,_0x4a2942){return client[_0x28f3('0x8')](_0x2da817,_0x399b34)['then'](function(_0x191d20){logger[_0x28f3('0x9')]('UserProfileResource,\x20%s,\x20%s',_0x56da75,_0x28f3('0xa'));logger['debug'](_0x28f3('0xb'),_0x56da75,_0x28f3('0xa'),JSON['stringify'](_0x191d20));if(_0x191d20[_0x28f3('0xc')]){if(_0x191d20[_0x28f3('0xc')][_0x28f3('0xd')]===0x1f4){logger[_0x28f3('0xc')](_0x28f3('0xe'),_0x56da75,_0x191d20[_0x28f3('0xc')]['message']);return _0x4a2942(_0x191d20[_0x28f3('0xc')]['message']);}logger['error']('UserProfileResource,\x20%s,\x20%s',_0x56da75,_0x191d20[_0x28f3('0xc')][_0x28f3('0xf')]);return _0x23bfc2(_0x191d20[_0x28f3('0xc')]['message']);}else{logger['info']('UserProfileResource,\x20%s,\x20%s',_0x56da75,'request\x20sent');_0x23bfc2(_0x191d20[_0x28f3('0x10')][_0x28f3('0xf')]);}})[_0x28f3('0x11')](function(_0x342e13){logger[_0x28f3('0xc')](_0x28f3('0xe'),_0x56da75,_0x342e13);_0x4a2942(_0x342e13);});});}
\ No newline at end of file
index 05d1674..16f7592 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee1b=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update','exports','multer','util'];(function(_0x56612f,_0x14a1df){var _0x3eb11d=function(_0x1431bd){while(--_0x1431bd){_0x56612f['push'](_0x56612f['shift']());}};_0x3eb11d(++_0x14a1df);}(_0xee1b,0xda));var _0xbee1=function(_0xf1fbaa,_0x27ba82){_0xf1fbaa=_0xf1fbaa-0x0;var _0x14889d=_0xee1b[_0xf1fbaa];return _0x14889d;};'use strict';var multer=require(_0xbee1('0x0'));var util=require(_0xbee1('0x1'));var path=require(_0xbee1('0x2'));var timeout=require(_0xbee1('0x3'));var express=require(_0xbee1('0x4'));var router=express[_0xbee1('0x5')]();var fs_extra=require(_0xbee1('0x6'));var auth=require(_0xbee1('0x7'));var interaction=require(_0xbee1('0x8'));var config=require(_0xbee1('0x9'));var controller=require(_0xbee1('0xa'));router[_0xbee1('0xb')]('/',auth[_0xbee1('0xc')](),controller[_0xbee1('0xd')]);router[_0xbee1('0xb')](_0xbee1('0xe'),auth['isAuthenticated'](),controller[_0xbee1('0xf')]);router[_0xbee1('0xb')](_0xbee1('0x10'),auth['isAuthenticated'](),controller[_0xbee1('0x11')]);router[_0xbee1('0x12')]('/',auth[_0xbee1('0xc')](),controller[_0xbee1('0x13')]);router['put']('/:id',auth[_0xbee1('0xc')](),controller[_0xbee1('0x14')]);router['delete'](_0xbee1('0x10'),auth['isAuthenticated'](),controller['destroy']);module[_0xbee1('0x15')]=router;
\ No newline at end of file
+var _0x2044=['/:id','show','post','create','put','update','delete','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x2044,0x1ac));var _0x4204=function(_0x1cb80b,_0x3aab3a){_0x1cb80b=_0x1cb80b-0x0;var _0x36a737=_0x2044[_0x1cb80b];return _0x36a737;};'use strict';var multer=require(_0x4204('0x0'));var util=require(_0x4204('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x4204('0x2')]();var fs_extra=require(_0x4204('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x4204('0x4'));var config=require(_0x4204('0x5'));var controller=require(_0x4204('0x6'));router[_0x4204('0x7')]('/',auth[_0x4204('0x8')](),controller[_0x4204('0x9')]);router[_0x4204('0x7')](_0x4204('0xa'),auth['isAuthenticated'](),controller[_0x4204('0xb')]);router[_0x4204('0x7')](_0x4204('0xc'),auth['isAuthenticated'](),controller[_0x4204('0xd')]);router[_0x4204('0xe')]('/',auth[_0x4204('0x8')](),controller[_0x4204('0xf')]);router[_0x4204('0x10')](_0x4204('0xc'),auth[_0x4204('0x8')](),controller[_0x4204('0x11')]);router[_0x4204('0x12')](_0x4204('0xc'),auth[_0x4204('0x8')](),controller['destroy']);module[_0x4204('0x13')]=router;
\ No newline at end of file
index c6ab322..7963829 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['crudPermissions','getDataValue','sequelize','STRING','INTEGER','BOOLEAN','setDataValue'];(function(_0x144fad,_0x154731){var _0x40be83=function(_0x32e218){while(--_0x32e218){_0x144fad['push'](_0x144fad['shift']());}};_0x40be83(++_0x154731);}(_0xb7e7,0x121));var _0x7b7e=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0xb7e7[_0x36eaaa];return _0x461349;};'use strict';var Sequelize=require(_0x7b7e('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b7e('0x1')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x7b7e('0x2')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x7b7e('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x31d0ed){this[_0x7b7e('0x4')](_0x7b7e('0x5'),_0x31d0ed?_0x31d0ed['join'](''):[]);},'get':function(){return this['getDataValue'](_0x7b7e('0x5'))?this[_0x7b7e('0x6')](_0x7b7e('0x5'))['split'](''):[];}}};
\ No newline at end of file
+var _0x1c7c=['setDataValue','crudPermissions','join','getDataValue','split','sequelize','exports','STRING','BOOLEAN'];(function(_0x23ca3a,_0xe44c43){var _0x5c1aab=function(_0x29bcdd){while(--_0x29bcdd){_0x23ca3a['push'](_0x23ca3a['shift']());}};_0x5c1aab(++_0xe44c43);}(_0x1c7c,0x164));var _0xc1c7=function(_0xb4c570,_0x1ed0bb){_0xb4c570=_0xb4c570-0x0;var _0x380cba=_0x1c7c[_0xb4c570];return _0x380cba;};'use strict';var Sequelize=require(_0xc1c7('0x0'));module[_0xc1c7('0x1')]={'name':{'type':Sequelize[_0xc1c7('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0xc1c7('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0xc1c7('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xc1c7('0x2')],'set':function(_0x20dad3){this[_0xc1c7('0x4')](_0xc1c7('0x5'),_0x20dad3?_0x20dad3[_0xc1c7('0x6')](''):[]);},'get':function(){return this[_0xc1c7('0x7')](_0xc1c7('0x5'))?this[_0xc1c7('0x7')](_0xc1c7('0x5'))[_0xc1c7('0x8')](''):[];}}};
\ No newline at end of file
index 84e614b..2ff52f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fb8=['body','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','UserProfileSection','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','find','catch'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x5fb8,0x9d));var _0x85fb=function(_0x273f56,_0x3ddb20){_0x273f56=_0x273f56-0x0;var _0x102287=_0x5fb8[_0x273f56];return _0x102287;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x85fb('0x0'));var zipdir=require(_0x85fb('0x1'));var jsonpatch=require(_0x85fb('0x2'));var rp=require(_0x85fb('0x3'));var moment=require(_0x85fb('0x4'));var BPromise=require(_0x85fb('0x5'));var Mustache=require('mustache');var util=require(_0x85fb('0x6'));var path=require(_0x85fb('0x7'));var sox=require(_0x85fb('0x8'));var csv=require('to-csv');var ejs=require(_0x85fb('0x9'));var fs=require('fs');var fs_extra=require(_0x85fb('0xa'));var _=require(_0x85fb('0xb'));var squel=require(_0x85fb('0xc'));var crypto=require(_0x85fb('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x85fb('0xe'));var toCsv=require(_0x85fb('0xf'));var querystring=require(_0x85fb('0x10'));var Papa=require(_0x85fb('0x11'));var Redis=require(_0x85fb('0x12'));var authService=require(_0x85fb('0x13'));var qs=require(_0x85fb('0x14'));var as=require(_0x85fb('0x15'));var hardwareService=require(_0x85fb('0x16'));var logger=require(_0x85fb('0x17'))(_0x85fb('0x18'));var utils=require(_0x85fb('0x19'));var config=require(_0x85fb('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x85fb('0x1b'))['db'];function respondWithStatusCode(_0x15cdd2,_0x2f2149){_0x2f2149=_0x2f2149||0xcc;return function(_0x4b2967){if(_0x4b2967){return _0x15cdd2[_0x85fb('0x1c')](_0x2f2149);}return _0x15cdd2['status'](_0x2f2149)[_0x85fb('0x1d')]();};}function respondWithResult(_0x407d6d,_0xf20e2a){_0xf20e2a=_0xf20e2a||0xc8;return function(_0x26ef18){if(_0x26ef18){return _0x407d6d[_0x85fb('0x1e')](_0xf20e2a)[_0x85fb('0x1f')](_0x26ef18);}};}function respondWithFilteredResult(_0x422208,_0x23951f){return function(_0x429432){if(_0x429432){var _0x55ca74=typeof _0x23951f[_0x85fb('0x20')]==='undefined'&&typeof _0x23951f[_0x85fb('0x21')]===_0x85fb('0x22');var _0x105085=_0x429432[_0x85fb('0x23')];var _0x195e77=_0x55ca74?0x0:_0x23951f[_0x85fb('0x20')];var _0x259b68=_0x55ca74?_0x429432[_0x85fb('0x23')]:_0x23951f[_0x85fb('0x20')]+_0x23951f[_0x85fb('0x21')];var _0x41fd8d;if(_0x259b68>=_0x105085){_0x259b68=_0x105085;_0x41fd8d=0xc8;}else{_0x41fd8d=0xce;}_0x422208[_0x85fb('0x1e')](_0x41fd8d);return _0x422208['set'](_0x85fb('0x24'),_0x195e77+'-'+_0x259b68+'/'+_0x105085)[_0x85fb('0x1f')](_0x429432);}return null;};}function patchUpdates(_0x404edc){return function(_0x18ee87){try{jsonpatch[_0x85fb('0x25')](_0x18ee87,_0x404edc,!![]);}catch(_0x5a884f){return BPromise[_0x85fb('0x26')](_0x5a884f);}return _0x18ee87[_0x85fb('0x27')]();};}function saveUpdates(_0x3abb23,_0x2a2c64){return function(_0xca3937){if(_0xca3937){return _0xca3937[_0x85fb('0x28')](_0x3abb23)[_0x85fb('0x29')](function(_0x478fe5){return _0x478fe5;});}return null;};}function removeEntity(_0x4ccd3f,_0x578c54){return function(_0x3e049d){if(_0x3e049d){return _0x3e049d['destroy']()[_0x85fb('0x29')](function(){_0x4ccd3f[_0x85fb('0x1e')](0xcc)[_0x85fb('0x1d')]();});}};}function handleEntityNotFound(_0x3459d6,_0x78ffa8){return function(_0x1b0614){if(!_0x1b0614){_0x3459d6[_0x85fb('0x1c')](0x194);}return _0x1b0614;};}function handleError(_0x4faee7,_0x3ab11d){_0x3ab11d=_0x3ab11d||0x1f4;return function(_0x5310a7){logger[_0x85fb('0x2a')](_0x5310a7[_0x85fb('0x2b')]);if(_0x5310a7['name']){delete _0x5310a7[_0x85fb('0x2c')];}_0x4faee7[_0x85fb('0x1e')](_0x3ab11d)[_0x85fb('0x2d')](_0x5310a7);};}exports['index']=function(_0x5390bb,_0x2357f9){var _0x4c6a00={},_0x596037={},_0xf206b={'count':0x0,'rows':[]};var _0x2b291a=_[_0x85fb('0x2e')](db[_0x85fb('0x2f')][_0x85fb('0x30')],function(_0x1df977){return{'name':_0x1df977[_0x85fb('0x31')],'type':_0x1df977[_0x85fb('0x32')][_0x85fb('0x33')]};});_0x596037[_0x85fb('0x34')]=_[_0x85fb('0x2e')](_0x2b291a,'name');_0x596037[_0x85fb('0x35')]=_[_0x85fb('0x36')](_0x5390bb[_0x85fb('0x35')]);_0x596037['filters']=_[_0x85fb('0x37')](_0x596037['model'],_0x596037['query']);_0x4c6a00[_0x85fb('0x38')]=_['intersection'](_0x596037[_0x85fb('0x34')],qs['fields'](_0x5390bb['query'][_0x85fb('0x39')]));_0x4c6a00['attributes']=_0x4c6a00[_0x85fb('0x38')][_0x85fb('0x3a')]?_0x4c6a00[_0x85fb('0x38')]:_0x596037['model'];if(!_0x5390bb['query'][_0x85fb('0x3b')]('nolimit')){_0x4c6a00['limit']=qs['limit'](_0x5390bb[_0x85fb('0x35')][_0x85fb('0x21')]);_0x4c6a00['offset']=qs['offset'](_0x5390bb[_0x85fb('0x35')][_0x85fb('0x20')]);}_0x4c6a00['order']=qs['sort'](_0x5390bb[_0x85fb('0x35')]['sort']);_0x4c6a00['where']=qs[_0x85fb('0x3c')](_[_0x85fb('0x3d')](_0x5390bb[_0x85fb('0x35')],_0x596037[_0x85fb('0x3c')]),_0x2b291a);if(_0x5390bb['query'][_0x85fb('0x3e')]){_0x4c6a00[_0x85fb('0x3f')]=_[_0x85fb('0x40')](_0x4c6a00[_0x85fb('0x3f')],{'$or':_[_0x85fb('0x2e')](_0x2b291a,function(_0x3eba1c){if(_0x3eba1c[_0x85fb('0x32')]!==_0x85fb('0x41')){var _0x42e4c5={};_0x42e4c5[_0x3eba1c[_0x85fb('0x2c')]]={'$like':'%'+_0x5390bb[_0x85fb('0x35')][_0x85fb('0x3e')]+'%'};return _0x42e4c5;}})});}_0x4c6a00=_[_0x85fb('0x40')]({},_0x4c6a00,_0x5390bb[_0x85fb('0x42')]);var _0x1cbbe2={'where':_0x4c6a00[_0x85fb('0x3f')]};return db['UserProfileSection'][_0x85fb('0x23')](_0x1cbbe2)['then'](function(_0x58e47f){_0xf206b[_0x85fb('0x23')]=_0x58e47f;if(_0x5390bb[_0x85fb('0x35')][_0x85fb('0x43')]){_0x4c6a00['include']=[{'all':!![]}];}return db[_0x85fb('0x2f')][_0x85fb('0x44')](_0x4c6a00);})['then'](function(_0x39a361){_0xf206b[_0x85fb('0x45')]=_0x39a361;return _0xf206b;})[_0x85fb('0x29')](respondWithFilteredResult(_0x2357f9,_0x4c6a00))['catch'](handleError(_0x2357f9,null));};exports[_0x85fb('0x46')]=function(_0x535e5d,_0x4d710e){var _0x31e439={'raw':![],'where':{'id':_0x535e5d[_0x85fb('0x47')]['id']}},_0x137584={};_0x137584['model']=_['keys'](db[_0x85fb('0x2f')][_0x85fb('0x30')]);_0x137584[_0x85fb('0x35')]=_[_0x85fb('0x36')](_0x535e5d['query']);_0x137584[_0x85fb('0x3c')]=_[_0x85fb('0x37')](_0x137584[_0x85fb('0x34')],_0x137584[_0x85fb('0x35')]);_0x31e439[_0x85fb('0x38')]=_[_0x85fb('0x37')](_0x137584[_0x85fb('0x34')],qs[_0x85fb('0x39')](_0x535e5d[_0x85fb('0x35')]['fields']));_0x31e439[_0x85fb('0x38')]=_0x31e439[_0x85fb('0x38')][_0x85fb('0x3a')]?_0x31e439[_0x85fb('0x38')]:_0x137584[_0x85fb('0x34')];if(_0x535e5d[_0x85fb('0x35')][_0x85fb('0x43')]){_0x31e439['include']=[{'all':!![]}];}_0x31e439=_[_0x85fb('0x40')]({},_0x31e439,_0x535e5d['options']);return db[_0x85fb('0x2f')][_0x85fb('0x48')](_0x31e439)[_0x85fb('0x29')](handleEntityNotFound(_0x4d710e,null))[_0x85fb('0x29')](respondWithResult(_0x4d710e,null))[_0x85fb('0x49')](handleError(_0x4d710e,null));};exports['create']=function(_0x8f394f,_0x40b59e){return db[_0x85fb('0x2f')]['create'](_0x8f394f[_0x85fb('0x4a')],{})['then'](respondWithResult(_0x40b59e,0xc9))['catch'](handleError(_0x40b59e,null));};exports[_0x85fb('0x28')]=function(_0x23cb48,_0x51f580){if(_0x23cb48[_0x85fb('0x4a')]['id']){delete _0x23cb48[_0x85fb('0x4a')]['id'];}return db[_0x85fb('0x2f')]['find']({'where':{'id':_0x23cb48[_0x85fb('0x47')]['id']}})[_0x85fb('0x29')](handleEntityNotFound(_0x51f580,null))[_0x85fb('0x29')](saveUpdates(_0x23cb48[_0x85fb('0x4a')],null))['then'](respondWithResult(_0x51f580,null))['catch'](handleError(_0x51f580,null));};exports[_0x85fb('0x4b')]=function(_0x45db0c,_0x2cc4db){return db[_0x85fb('0x2f')][_0x85fb('0x48')]({'where':{'id':_0x45db0c[_0x85fb('0x47')]['id']}})[_0x85fb('0x29')](handleEntityNotFound(_0x2cc4db,null))[_0x85fb('0x29')](removeEntity(_0x2cc4db,null))[_0x85fb('0x49')](handleError(_0x2cc4db,null));};exports[_0x85fb('0x4c')]=function(_0x29535c,_0x2e33e8){return db['UserProfileSection'][_0x85fb('0x4c')]()[_0x85fb('0x29')](respondWithResult(_0x2e33e8,null))[_0x85fb('0x49')](handleError(_0x2e33e8,null));};
\ No newline at end of file
+var _0x1ab8=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','apply','save','update','then','stack','name','send','index','map','UserProfileSection','rawAttributes','fieldName','type','model','keys','filters','intersection','attributes','fields','query','length','nolimit','sort','where','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','params','find','create','body','destroy','eml-format','rimraf','request-promise','bluebird','mustache','util','sox'];(function(_0x49cfcc,_0xf15540){var _0x44d1cc=function(_0x20eab9){while(--_0x20eab9){_0x49cfcc['push'](_0x49cfcc['shift']());}};_0x44d1cc(++_0xf15540);}(_0x1ab8,0x1ea));var _0x81ab=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x1ab8[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require(_0x81ab('0x0'));var rimraf=require(_0x81ab('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x81ab('0x2'));var moment=require('moment');var BPromise=require(_0x81ab('0x3'));var Mustache=require(_0x81ab('0x4'));var util=require(_0x81ab('0x5'));var path=require('path');var sox=require(_0x81ab('0x6'));var csv=require(_0x81ab('0x7'));var ejs=require(_0x81ab('0x8'));var fs=require('fs');var fs_extra=require(_0x81ab('0x9'));var _=require(_0x81ab('0xa'));var squel=require(_0x81ab('0xb'));var crypto=require(_0x81ab('0xc'));var jsforce=require(_0x81ab('0xd'));var deskjs=require(_0x81ab('0xe'));var toCsv=require('to-csv');var querystring=require(_0x81ab('0xf'));var Papa=require('papaparse');var Redis=require(_0x81ab('0x10'));var authService=require(_0x81ab('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x81ab('0x12'));var hardwareService=require(_0x81ab('0x13'));var logger=require('../../config/logger')(_0x81ab('0x14'));var utils=require(_0x81ab('0x15'));var config=require(_0x81ab('0x16'));var licenseUtil=require(_0x81ab('0x17'));var db=require(_0x81ab('0x18'))['db'];function respondWithStatusCode(_0x549476,_0x5df16b){_0x5df16b=_0x5df16b||0xcc;return function(_0x381ff7){if(_0x381ff7){return _0x549476[_0x81ab('0x19')](_0x5df16b);}return _0x549476[_0x81ab('0x1a')](_0x5df16b)[_0x81ab('0x1b')]();};}function respondWithResult(_0x5e65ce,_0x100140){_0x100140=_0x100140||0xc8;return function(_0x54fcdf){if(_0x54fcdf){return _0x5e65ce[_0x81ab('0x1a')](_0x100140)[_0x81ab('0x1c')](_0x54fcdf);}};}function respondWithFilteredResult(_0xf14b30,_0xa3e706){return function(_0x332852){if(_0x332852){var _0x238493=typeof _0xa3e706[_0x81ab('0x1d')]==='undefined'&&typeof _0xa3e706[_0x81ab('0x1e')]===_0x81ab('0x1f');var _0x213177=_0x332852['count'];var _0x78219d=_0x238493?0x0:_0xa3e706[_0x81ab('0x1d')];var _0x20f248=_0x238493?_0x332852['count']:_0xa3e706['offset']+_0xa3e706[_0x81ab('0x1e')];var _0x17b242;if(_0x20f248>=_0x213177){_0x20f248=_0x213177;_0x17b242=0xc8;}else{_0x17b242=0xce;}_0xf14b30[_0x81ab('0x1a')](_0x17b242);return _0xf14b30[_0x81ab('0x20')](_0x81ab('0x21'),_0x78219d+'-'+_0x20f248+'/'+_0x213177)[_0x81ab('0x1c')](_0x332852);}return null;};}function patchUpdates(_0x486c35){return function(_0x2c0f38){try{jsonpatch[_0x81ab('0x22')](_0x2c0f38,_0x486c35,!![]);}catch(_0x484206){return BPromise['reject'](_0x484206);}return _0x2c0f38[_0x81ab('0x23')]();};}function saveUpdates(_0x578ec6,_0x556e47){return function(_0x49487c){if(_0x49487c){return _0x49487c[_0x81ab('0x24')](_0x578ec6)[_0x81ab('0x25')](function(_0x472326){return _0x472326;});}return null;};}function removeEntity(_0x59bf6b,_0x2e5196){return function(_0x3dabe3){if(_0x3dabe3){return _0x3dabe3['destroy']()[_0x81ab('0x25')](function(){_0x59bf6b[_0x81ab('0x1a')](0xcc)[_0x81ab('0x1b')]();});}};}function handleEntityNotFound(_0x34d239,_0x5a1d38){return function(_0x2736a4){if(!_0x2736a4){_0x34d239[_0x81ab('0x19')](0x194);}return _0x2736a4;};}function handleError(_0x5a0bcc,_0x25aae6){_0x25aae6=_0x25aae6||0x1f4;return function(_0x131e1a){logger['error'](_0x131e1a[_0x81ab('0x26')]);if(_0x131e1a[_0x81ab('0x27')]){delete _0x131e1a[_0x81ab('0x27')];}_0x5a0bcc[_0x81ab('0x1a')](_0x25aae6)[_0x81ab('0x28')](_0x131e1a);};}exports[_0x81ab('0x29')]=function(_0x38868f,_0x49941f){var _0x4883f2={},_0x113c4b={},_0xe8ba1={'count':0x0,'rows':[]};var _0x2ee6ca=_[_0x81ab('0x2a')](db[_0x81ab('0x2b')][_0x81ab('0x2c')],function(_0x2c80cf){return{'name':_0x2c80cf[_0x81ab('0x2d')],'type':_0x2c80cf[_0x81ab('0x2e')]['key']};});_0x113c4b[_0x81ab('0x2f')]=_[_0x81ab('0x2a')](_0x2ee6ca,_0x81ab('0x27'));_0x113c4b['query']=_[_0x81ab('0x30')](_0x38868f['query']);_0x113c4b[_0x81ab('0x31')]=_[_0x81ab('0x32')](_0x113c4b[_0x81ab('0x2f')],_0x113c4b['query']);_0x4883f2[_0x81ab('0x33')]=_['intersection'](_0x113c4b[_0x81ab('0x2f')],qs[_0x81ab('0x34')](_0x38868f[_0x81ab('0x35')][_0x81ab('0x34')]));_0x4883f2[_0x81ab('0x33')]=_0x4883f2[_0x81ab('0x33')][_0x81ab('0x36')]?_0x4883f2[_0x81ab('0x33')]:_0x113c4b[_0x81ab('0x2f')];if(!_0x38868f[_0x81ab('0x35')]['hasOwnProperty'](_0x81ab('0x37'))){_0x4883f2['limit']=qs[_0x81ab('0x1e')](_0x38868f[_0x81ab('0x35')][_0x81ab('0x1e')]);_0x4883f2[_0x81ab('0x1d')]=qs[_0x81ab('0x1d')](_0x38868f[_0x81ab('0x35')][_0x81ab('0x1d')]);}_0x4883f2['order']=qs['sort'](_0x38868f['query'][_0x81ab('0x38')]);_0x4883f2[_0x81ab('0x39')]=qs[_0x81ab('0x31')](_['pick'](_0x38868f[_0x81ab('0x35')],_0x113c4b[_0x81ab('0x31')]),_0x2ee6ca);if(_0x38868f[_0x81ab('0x35')]['filter']){_0x4883f2[_0x81ab('0x39')]=_[_0x81ab('0x3a')](_0x4883f2[_0x81ab('0x39')],{'$or':_['map'](_0x2ee6ca,function(_0x309d80){if(_0x309d80[_0x81ab('0x2e')]!==_0x81ab('0x3b')){var _0x486dec={};_0x486dec[_0x309d80[_0x81ab('0x27')]]={'$like':'%'+_0x38868f[_0x81ab('0x35')][_0x81ab('0x3c')]+'%'};return _0x486dec;}})});}_0x4883f2=_[_0x81ab('0x3a')]({},_0x4883f2,_0x38868f[_0x81ab('0x3d')]);var _0x296a66={'where':_0x4883f2['where']};return db[_0x81ab('0x2b')]['count'](_0x296a66)[_0x81ab('0x25')](function(_0xc71232){_0xe8ba1['count']=_0xc71232;if(_0x38868f[_0x81ab('0x35')][_0x81ab('0x3e')]){_0x4883f2[_0x81ab('0x3f')]=[{'all':!![]}];}return db[_0x81ab('0x2b')]['findAll'](_0x4883f2);})['then'](function(_0x1b4862){_0xe8ba1[_0x81ab('0x40')]=_0x1b4862;return _0xe8ba1;})['then'](respondWithFilteredResult(_0x49941f,_0x4883f2))[_0x81ab('0x41')](handleError(_0x49941f,null));};exports['show']=function(_0x276fd6,_0x4bdfec){var _0x3289e4={'raw':![],'where':{'id':_0x276fd6[_0x81ab('0x42')]['id']}},_0x4837ee={};_0x4837ee[_0x81ab('0x2f')]=_[_0x81ab('0x30')](db[_0x81ab('0x2b')][_0x81ab('0x2c')]);_0x4837ee[_0x81ab('0x35')]=_[_0x81ab('0x30')](_0x276fd6[_0x81ab('0x35')]);_0x4837ee[_0x81ab('0x31')]=_[_0x81ab('0x32')](_0x4837ee[_0x81ab('0x2f')],_0x4837ee['query']);_0x3289e4[_0x81ab('0x33')]=_['intersection'](_0x4837ee[_0x81ab('0x2f')],qs[_0x81ab('0x34')](_0x276fd6[_0x81ab('0x35')][_0x81ab('0x34')]));_0x3289e4[_0x81ab('0x33')]=_0x3289e4['attributes']['length']?_0x3289e4[_0x81ab('0x33')]:_0x4837ee[_0x81ab('0x2f')];if(_0x276fd6[_0x81ab('0x35')][_0x81ab('0x3e')]){_0x3289e4['include']=[{'all':!![]}];}_0x3289e4=_[_0x81ab('0x3a')]({},_0x3289e4,_0x276fd6[_0x81ab('0x3d')]);return db['UserProfileSection'][_0x81ab('0x43')](_0x3289e4)[_0x81ab('0x25')](handleEntityNotFound(_0x4bdfec,null))[_0x81ab('0x25')](respondWithResult(_0x4bdfec,null))['catch'](handleError(_0x4bdfec,null));};exports[_0x81ab('0x44')]=function(_0x173096,_0x46f964){return db['UserProfileSection'][_0x81ab('0x44')](_0x173096[_0x81ab('0x45')],{})[_0x81ab('0x25')](respondWithResult(_0x46f964,0xc9))[_0x81ab('0x41')](handleError(_0x46f964,null));};exports[_0x81ab('0x24')]=function(_0x3eea2a,_0x106673){if(_0x3eea2a['body']['id']){delete _0x3eea2a[_0x81ab('0x45')]['id'];}return db[_0x81ab('0x2b')][_0x81ab('0x43')]({'where':{'id':_0x3eea2a['params']['id']}})[_0x81ab('0x25')](handleEntityNotFound(_0x106673,null))['then'](saveUpdates(_0x3eea2a[_0x81ab('0x45')],null))[_0x81ab('0x25')](respondWithResult(_0x106673,null))[_0x81ab('0x41')](handleError(_0x106673,null));};exports[_0x81ab('0x46')]=function(_0xeca772,_0x28a0eb){return db['UserProfileSection'][_0x81ab('0x43')]({'where':{'id':_0xeca772[_0x81ab('0x42')]['id']}})[_0x81ab('0x25')](handleEntityNotFound(_0x28a0eb,null))[_0x81ab('0x25')](removeEntity(_0x28a0eb,null))[_0x81ab('0x41')](handleError(_0x28a0eb,null));};exports['describe']=function(_0x391ed9,_0x5758fb){return db[_0x81ab('0x2b')]['describe']()[_0x81ab('0x25')](respondWithResult(_0x5758fb,null))[_0x81ab('0x41')](handleError(_0x5758fb,null));};
\ No newline at end of file
index eed9fd4..15b6d96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72a0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','./userProfileSection.attributes','define','UserProfileSection','user_profile_has_sections','sectionId','userProfileId','lodash','util'];(function(_0x1b9639,_0x465acc){var _0x2324b4=function(_0x3da200){while(--_0x3da200){_0x1b9639['push'](_0x1b9639['shift']());}};_0x2324b4(++_0x465acc);}(_0x72a0,0x194));var _0x072a=function(_0x485ceb,_0x398fa6){_0x485ceb=_0x485ceb-0x0;var _0x3da50a=_0x72a0[_0x485ceb];return _0x3da50a;};'use strict';var _=require(_0x072a('0x0'));var util=require(_0x072a('0x1'));var logger=require(_0x072a('0x2'))(_0x072a('0x3'));var moment=require(_0x072a('0x4'));var BPromise=require(_0x072a('0x5'));var rp=require(_0x072a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x072a('0x7'));var config=require('../../config/environment');var attributes=require(_0x072a('0x8'));module['exports']=function(_0x23100f,_0x597fd9){return _0x23100f[_0x072a('0x9')](_0x072a('0xa'),attributes,{'tableName':_0x072a('0xb'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x072a('0xc'),_0x072a('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xaca5=['request-promise','path','rimraf','../../config/environment','define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x3b1e3f,_0xf8826b){var _0x3b1cd3=function(_0x26ad44){while(--_0x26ad44){_0x3b1e3f['push'](_0x3b1e3f['shift']());}};_0x3b1cd3(++_0xf8826b);}(_0xaca5,0xca));var _0x5aca=function(_0x588d5f,_0x2e6691){_0x588d5f=_0x588d5f-0x0;var _0x24d5d1=_0xaca5[_0x588d5f];return _0x24d5d1;};'use strict';var _=require(_0x5aca('0x0'));var util=require(_0x5aca('0x1'));var logger=require(_0x5aca('0x2'))(_0x5aca('0x3'));var moment=require(_0x5aca('0x4'));var BPromise=require(_0x5aca('0x5'));var rp=require(_0x5aca('0x6'));var fs=require('fs');var path=require(_0x5aca('0x7'));var rimraf=require(_0x5aca('0x8'));var config=require(_0x5aca('0x9'));var attributes=require('./userProfileSection.attributes');module['exports']=function(_0x148b43,_0x107be1){return _0x148b43[_0x5aca('0xa')](_0x5aca('0xb'),attributes,{'tableName':_0x5aca('0xc'),'paranoid':![],'indexes':[{'name':_0x5aca('0xd'),'fields':[_0x5aca('0xe'),_0x5aca('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index b9bffde..ed542d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96fc=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result'];(function(_0x1aa3fe,_0x27c5fa){var _0x163cee=function(_0x2a1505){while(--_0x2a1505){_0x1aa3fe['push'](_0x1aa3fe['shift']());}};_0x163cee(++_0x27c5fa);}(_0x96fc,0x1cc));var _0xc96f=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x96fc[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0xc96f('0x0'));var util=require(_0xc96f('0x1'));var moment=require(_0xc96f('0x2'));var BPromise=require(_0xc96f('0x3'));var rs=require(_0xc96f('0x4'));var fs=require('fs');var Redis=require(_0xc96f('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc96f('0x6'));var logger=require('../../config/logger')(_0xc96f('0x7'));var config=require(_0xc96f('0x8'));var jayson=require(_0xc96f('0x9'));var client=jayson[_0xc96f('0xa')][_0xc96f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54235a,_0x20b62a,_0xdaa764){return new BPromise(function(_0x54fc5a,_0x1b80e1){return client[_0xc96f('0xc')](_0x54235a,_0xdaa764)[_0xc96f('0xd')](function(_0x38f01a){logger['info'](_0xc96f('0xe'),_0x20b62a,_0xc96f('0xf'));logger[_0xc96f('0x10')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x20b62a,_0xc96f('0xf'),JSON[_0xc96f('0x11')](_0x38f01a));if(_0x38f01a['error']){if(_0x38f01a[_0xc96f('0x12')][_0xc96f('0x13')]===0x1f4){logger[_0xc96f('0x12')](_0xc96f('0xe'),_0x20b62a,_0x38f01a[_0xc96f('0x12')][_0xc96f('0x14')]);return _0x1b80e1(_0x38f01a['error'][_0xc96f('0x14')]);}logger[_0xc96f('0x12')](_0xc96f('0xe'),_0x20b62a,_0x38f01a[_0xc96f('0x12')][_0xc96f('0x14')]);return _0x54fc5a(_0x38f01a['error'][_0xc96f('0x14')]);}else{logger[_0xc96f('0x15')]('UserProfileSection,\x20%s,\x20%s',_0x20b62a,_0xc96f('0xf'));_0x54fc5a(_0x38f01a[_0xc96f('0x16')][_0xc96f('0x14')]);}})['catch'](function(_0x1ef906){logger[_0xc96f('0x12')](_0xc96f('0xe'),_0x20b62a,_0x1ef906);_0x1b80e1(_0x1ef906);});});}
\ No newline at end of file
+var _0x53f8=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','UserProfileSection,\x20%s,\x20%s','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','util','moment','randomstring','ioredis'];(function(_0x22bdc1,_0x4e4260){var _0x5ee2b0=function(_0x2e1628){while(--_0x2e1628){_0x22bdc1['push'](_0x22bdc1['shift']());}};_0x5ee2b0(++_0x4e4260);}(_0x53f8,0x7a));var _0x853f=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x53f8[_0x160c73];return _0xd9302;};'use strict';var _=require('lodash');var util=require(_0x853f('0x0'));var moment=require(_0x853f('0x1'));var BPromise=require('bluebird');var rs=require(_0x853f('0x2'));var fs=require('fs');var Redis=require(_0x853f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x853f('0x4'));var logger=require(_0x853f('0x5'))(_0x853f('0x6'));var config=require(_0x853f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x853f('0x8')][_0x853f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f6045,_0x2238a4,_0x4f80ab){return new BPromise(function(_0x2c303b,_0xf7d22e){return client['request'](_0x3f6045,_0x4f80ab)[_0x853f('0xa')](function(_0x1dbc40){logger['info'](_0x853f('0xb'),_0x2238a4,'request\x20sent');logger[_0x853f('0xc')](_0x853f('0xd'),_0x2238a4,_0x853f('0xe'),JSON[_0x853f('0xf')](_0x1dbc40));if(_0x1dbc40[_0x853f('0x10')]){if(_0x1dbc40[_0x853f('0x10')][_0x853f('0x11')]===0x1f4){logger['error'](_0x853f('0xb'),_0x2238a4,_0x1dbc40['error'][_0x853f('0x12')]);return _0xf7d22e(_0x1dbc40[_0x853f('0x10')][_0x853f('0x12')]);}logger[_0x853f('0x10')](_0x853f('0xb'),_0x2238a4,_0x1dbc40[_0x853f('0x10')]['message']);return _0x2c303b(_0x1dbc40[_0x853f('0x10')][_0x853f('0x12')]);}else{logger[_0x853f('0x13')](_0x853f('0xb'),_0x2238a4,_0x853f('0xe'));_0x2c303b(_0x1dbc40[_0x853f('0x14')]['message']);}})['catch'](function(_0x46ca43){logger[_0x853f('0x10')]('UserProfileSection,\x20%s,\x20%s',_0x2238a4,_0x46ca43);_0xf7d22e(_0x46ca43);});});}
\ No newline at end of file
index dfc62a6..7f9d59c 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(_0x5bd20c,_0xcb49f4){var _0x1d5aaa=function(_0x29aca2){while(--_0x29aca2){_0x5bd20c['push'](_0x5bd20c['shift']());}};_0x1d5aaa(++_0xcb49f4);}(_0x9c44,0x178));var _0x49c4=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x9c44[_0x21549c];return _0x426cbd;};'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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0xaa11e0,_0x4d714d){var _0x2abd9b=function(_0xd054c){while(--_0xd054c){_0xaa11e0['push'](_0xaa11e0['shift']());}};_0x2abd9b(++_0x4d714d);}(_0xedd9,0xfc));var _0x9edd=function(_0x9a5cb5,_0x2b97fd){_0x9a5cb5=_0x9a5cb5-0x0;var _0x25ff6f=_0xedd9[_0x9a5cb5];return _0x25ff6f;};'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 617abf4..5b16983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1930=['exports','INTEGER'];(function(_0x3326b6,_0x2b982c){var _0x5a74c4=function(_0x56aabc){while(--_0x56aabc){_0x3326b6['push'](_0x3326b6['shift']());}};_0x5a74c4(++_0x2b982c);}(_0x1930,0xcc));var _0x0193=function(_0x251693,_0x59e11e){_0x251693=_0x251693-0x0;var _0xa5e050=_0x1930[_0x251693];return _0xa5e050;};'use strict';var Sequelize=require('sequelize');module[_0x0193('0x0')]={'penalty':{'type':Sequelize[_0x0193('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4a7f=['sequelize','INTEGER'];(function(_0xcde186,_0x1d0e5b){var _0x1d6208=function(_0x2cd3a2){while(--_0x2cd3a2){_0xcde186['push'](_0xcde186['shift']());}};_0x1d6208(++_0x1d0e5b);}(_0x4a7f,0x1a4));var _0xf4a7=function(_0x17ec92,_0x2320f8){_0x17ec92=_0x17ec92-0x0;var _0x4e8ba=_0x4a7f[_0x17ec92];return _0x4e8ba;};'use strict';var Sequelize=require(_0xf4a7('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xf4a7('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index fe7c415..eb2545f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf562=['moment','bluebird','request-promise','path','rimraf','./userSmsQueue.attributes','define','UserSmsQueue','user_has_sms_queues','lodash','util','../../config/logger','api'];(function(_0x5c38a3,_0x22d269){var _0x1435dc=function(_0x5e03d0){while(--_0x5e03d0){_0x5c38a3['push'](_0x5c38a3['shift']());}};_0x1435dc(++_0x22d269);}(_0xf562,0x100));var _0x2f56=function(_0x925aa5,_0x56c95b){_0x925aa5=_0x925aa5-0x0;var _0x2ac879=_0xf562[_0x925aa5];return _0x2ac879;};'use strict';var _=require(_0x2f56('0x0'));var util=require(_0x2f56('0x1'));var logger=require(_0x2f56('0x2'))(_0x2f56('0x3'));var moment=require(_0x2f56('0x4'));var BPromise=require(_0x2f56('0x5'));var rp=require(_0x2f56('0x6'));var fs=require('fs');var path=require(_0x2f56('0x7'));var rimraf=require(_0x2f56('0x8'));var config=require('../../config/environment');var attributes=require(_0x2f56('0x9'));module['exports']=function(_0x14436b,_0x5b3784){return _0x14436b[_0x2f56('0xa')](_0x2f56('0xb'),attributes,{'tableName':_0x2f56('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6363=['define','UserSmsQueue','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports'];(function(_0x3ce92d,_0x6ecd66){var _0x4982d2=function(_0x1a40bc){while(--_0x1a40bc){_0x3ce92d['push'](_0x3ce92d['shift']());}};_0x4982d2(++_0x6ecd66);}(_0x6363,0x13a));var _0x3636=function(_0x50947e,_0xeebcfa){_0x50947e=_0x50947e-0x0;var _0x1cc6f0=_0x6363[_0x50947e];return _0x1cc6f0;};'use strict';var _=require(_0x3636('0x0'));var util=require('util');var logger=require(_0x3636('0x1'))(_0x3636('0x2'));var moment=require(_0x3636('0x3'));var BPromise=require(_0x3636('0x4'));var rp=require(_0x3636('0x5'));var fs=require('fs');var path=require(_0x3636('0x6'));var rimraf=require(_0x3636('0x7'));var config=require(_0x3636('0x8'));var attributes=require(_0x3636('0x9'));module[_0x3636('0xa')]=function(_0x15728f,_0x1f94ef){return _0x15728f[_0x3636('0xb')](_0x3636('0xc'),attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e8ef15..87be907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ac7=['debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','then','info','UserSmsQueue,\x20%s,\x20%s'];(function(_0x5ec2a2,_0x3ec31c){var _0x100dd2=function(_0x502477){while(--_0x502477){_0x5ec2a2['push'](_0x5ec2a2['shift']());}};_0x100dd2(++_0x3ec31c);}(_0x5ac7,0x1d7));var _0x75ac=function(_0x78b021,_0x135bdd){_0x78b021=_0x78b021-0x0;var _0x2e4cd1=_0x5ac7[_0x78b021];return _0x2e4cd1;};'use strict';var _=require(_0x75ac('0x0'));var util=require(_0x75ac('0x1'));var moment=require(_0x75ac('0x2'));var BPromise=require('bluebird');var rs=require(_0x75ac('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x75ac('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x75ac('0x5'))('rpc');var config=require(_0x75ac('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x75ac('0x7')][_0x75ac('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x778d46,_0x4e26ef,_0x2bf342){return new BPromise(function(_0x4ae550,_0x45839e){return client['request'](_0x778d46,_0x2bf342)[_0x75ac('0x9')](function(_0x55c9c8){logger[_0x75ac('0xa')](_0x75ac('0xb'),_0x4e26ef,'request\x20sent');logger[_0x75ac('0xc')](_0x75ac('0xd'),_0x4e26ef,_0x75ac('0xe'),JSON[_0x75ac('0xf')](_0x55c9c8));if(_0x55c9c8[_0x75ac('0x10')]){if(_0x55c9c8[_0x75ac('0x10')][_0x75ac('0x11')]===0x1f4){logger[_0x75ac('0x10')]('UserSmsQueue,\x20%s,\x20%s',_0x4e26ef,_0x55c9c8['error'][_0x75ac('0x12')]);return _0x45839e(_0x55c9c8[_0x75ac('0x10')]['message']);}logger[_0x75ac('0x10')](_0x75ac('0xb'),_0x4e26ef,_0x55c9c8[_0x75ac('0x10')][_0x75ac('0x12')]);return _0x4ae550(_0x55c9c8[_0x75ac('0x10')][_0x75ac('0x12')]);}else{logger[_0x75ac('0xa')]('UserSmsQueue,\x20%s,\x20%s',_0x4e26ef,_0x75ac('0xe'));_0x4ae550(_0x55c9c8[_0x75ac('0x13')]['message']);}})[_0x75ac('0x14')](function(_0x159d11){logger[_0x75ac('0x10')]('UserSmsQueue,\x20%s,\x20%s',_0x4e26ef,_0x159d11);_0x45839e(_0x159d11);});});}
\ No newline at end of file
+var _0xface=['../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','bluebird','randomstring','ioredis'];(function(_0x1d9a84,_0x157084){var _0x418754=function(_0xfc0e01){while(--_0xfc0e01){_0x1d9a84['push'](_0x1d9a84['shift']());}};_0x418754(++_0x157084);}(_0xface,0x178));var _0xefac=function(_0x4d269a,_0x487405){_0x4d269a=_0x4d269a-0x0;var _0x2838f6=_0xface[_0x4d269a];return _0x2838f6;};'use strict';var _=require('lodash');var util=require(_0xefac('0x0'));var moment=require('moment');var BPromise=require(_0xefac('0x1'));var rs=require(_0xefac('0x2'));var fs=require('fs');var Redis=require(_0xefac('0x3'));var db=require(_0xefac('0x4'))['db'];var utils=require(_0xefac('0x5'));var logger=require(_0xefac('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xefac('0x7'));var client=jayson[_0xefac('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x284557,_0x595567,_0x56525f){return new BPromise(function(_0x5c7531,_0x58df79){return client['request'](_0x284557,_0x56525f)[_0xefac('0x9')](function(_0x19c425){logger[_0xefac('0xa')](_0xefac('0xb'),_0x595567,_0xefac('0xc'));logger['debug'](_0xefac('0xd'),_0x595567,_0xefac('0xc'),JSON[_0xefac('0xe')](_0x19c425));if(_0x19c425[_0xefac('0xf')]){if(_0x19c425[_0xefac('0xf')][_0xefac('0x10')]===0x1f4){logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x595567,_0x19c425['error'][_0xefac('0x11')]);return _0x58df79(_0x19c425[_0xefac('0xf')][_0xefac('0x11')]);}logger[_0xefac('0xf')](_0xefac('0xb'),_0x595567,_0x19c425[_0xefac('0xf')][_0xefac('0x11')]);return _0x5c7531(_0x19c425[_0xefac('0xf')][_0xefac('0x11')]);}else{logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x595567,'request\x20sent');_0x5c7531(_0x19c425[_0xefac('0x12')][_0xefac('0x11')]);}})[_0xefac('0x13')](function(_0x2464a8){logger['error'](_0xefac('0xb'),_0x595567,_0x2464a8);_0x58df79(_0x2464a8);});});}
\ No newline at end of file
index e78a5c7..2640bca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0xff87f9,_0x243e67){var _0x25736c=function(_0x334ec6){while(--_0x334ec6){_0xff87f9['push'](_0xff87f9['shift']());}};_0x25736c(++_0x243e67);}(_0xedd9,0xfc));var _0x9edd=function(_0x7a904,_0x56b275){_0x7a904=_0x7a904-0x0;var _0x9bcefc=_0xedd9[_0x7a904];return _0x9bcefc;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x9d1a99,_0x44001d){var _0x192065=function(_0x461ecf){while(--_0x461ecf){_0x9d1a99['push'](_0x9d1a99['shift']());}};_0x192065(++_0x44001d);}(_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 83a8cc2..1a241e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83b3=['sequelize','exports','INTEGER'];(function(_0x186222,_0x3bdfb0){var _0x226a38=function(_0x3b071f){while(--_0x3b071f){_0x186222['push'](_0x186222['shift']());}};_0x226a38(++_0x3bdfb0);}(_0x83b3,0x13e));var _0x383b=function(_0x10b4d0,_0x388f7b){_0x10b4d0=_0x10b4d0-0x0;var _0x35d30c=_0x83b3[_0x10b4d0];return _0x35d30c;};'use strict';var Sequelize=require(_0x383b('0x0'));module[_0x383b('0x1')]={'penalty':{'type':Sequelize[_0x383b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf62f=['INTEGER'];(function(_0x4e6b1b,_0xfb0620){var _0x41991=function(_0x44cd8f){while(--_0x44cd8f){_0x4e6b1b['push'](_0x4e6b1b['shift']());}};_0x41991(++_0xfb0620);}(_0xf62f,0xed));var _0xff62=function(_0x1b1350,_0x3153dc){_0x1b1350=_0x1b1350-0x0;var _0x2abda6=_0xf62f[_0x1b1350];return _0x2abda6;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xff62('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index 2832fc4..334a732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47d2=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','./userVoiceQueue.attributes','exports','define','UserVoiceQueue','user_has_voice_queues'];(function(_0x32ad69,_0x518f0c){var _0x1062ef=function(_0x59b1c5){while(--_0x59b1c5){_0x32ad69['push'](_0x32ad69['shift']());}};_0x1062ef(++_0x518f0c);}(_0x47d2,0x12c));var _0x247d=function(_0x56162b,_0x4c720b){_0x56162b=_0x56162b-0x0;var _0x59ee95=_0x47d2[_0x56162b];return _0x59ee95;};'use strict';var _=require(_0x247d('0x0'));var util=require('util');var logger=require(_0x247d('0x1'))(_0x247d('0x2'));var moment=require(_0x247d('0x3'));var BPromise=require(_0x247d('0x4'));var rp=require(_0x247d('0x5'));var fs=require('fs');var path=require(_0x247d('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x247d('0x7'));module[_0x247d('0x8')]=function(_0x2d3cdf,_0x1e1012){return _0x2d3cdf[_0x247d('0x9')](_0x247d('0xa'),attributes,{'tableName':_0x247d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc88b=['moment','bluebird','request-promise','path','rimraf','../../config/environment','define','user_has_voice_queues','lodash','../../config/logger','api'];(function(_0x305ca9,_0x355104){var _0x90cf69=function(_0x583847){while(--_0x583847){_0x305ca9['push'](_0x305ca9['shift']());}};_0x90cf69(++_0x355104);}(_0xc88b,0x131));var _0xbc88=function(_0x300258,_0x4c92bb){_0x300258=_0x300258-0x0;var _0x126f0f=_0xc88b[_0x300258];return _0x126f0f;};'use strict';var _=require(_0xbc88('0x0'));var util=require('util');var logger=require(_0xbc88('0x1'))(_0xbc88('0x2'));var moment=require(_0xbc88('0x3'));var BPromise=require(_0xbc88('0x4'));var rp=require(_0xbc88('0x5'));var fs=require('fs');var path=require(_0xbc88('0x6'));var rimraf=require(_0xbc88('0x7'));var config=require(_0xbc88('0x8'));var attributes=require('./userVoiceQueue.attributes');module['exports']=function(_0x2420c8,_0x355654){return _0x2420c8[_0xbc88('0x9')]('UserVoiceQueue',attributes,{'tableName':_0xbc88('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index da1ec80..174dcbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x949e=['error','code','UserVoiceQueue,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','randomstring','ioredis','../../config/logger','../../config/environment','http','request','then','info','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x34219e,_0x46b1cc){var _0x1deeb9=function(_0x5e3b6d){while(--_0x5e3b6d){_0x34219e['push'](_0x34219e['shift']());}};_0x1deeb9(++_0x46b1cc);}(_0x949e,0x196));var _0xe949=function(_0x56032b,_0x32bc50){_0x56032b=_0x56032b-0x0;var _0x5da6d5=_0x949e[_0x56032b];return _0x5da6d5;};'use strict';var _=require(_0xe949('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe949('0x1'));var fs=require('fs');var Redis=require(_0xe949('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xe949('0x3'))('rpc');var config=require(_0xe949('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe949('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x23dc5f,_0x2620ce,_0x110bf0){return new BPromise(function(_0x1c28d1,_0x161b8e){return client[_0xe949('0x6')](_0x23dc5f,_0x110bf0)[_0xe949('0x7')](function(_0x3f696b){logger[_0xe949('0x8')]('UserVoiceQueue,\x20%s,\x20%s',_0x2620ce,'request\x20sent');logger[_0xe949('0x9')](_0xe949('0xa'),_0x2620ce,'request\x20sent',JSON[_0xe949('0xb')](_0x3f696b));if(_0x3f696b['error']){if(_0x3f696b[_0xe949('0xc')][_0xe949('0xd')]===0x1f4){logger['error'](_0xe949('0xe'),_0x2620ce,_0x3f696b['error'][_0xe949('0xf')]);return _0x161b8e(_0x3f696b[_0xe949('0xc')][_0xe949('0xf')]);}logger[_0xe949('0xc')](_0xe949('0xe'),_0x2620ce,_0x3f696b[_0xe949('0xc')][_0xe949('0xf')]);return _0x1c28d1(_0x3f696b[_0xe949('0xc')][_0xe949('0xf')]);}else{logger['info']('UserVoiceQueue,\x20%s,\x20%s',_0x2620ce,_0xe949('0x10'));_0x1c28d1(_0x3f696b[_0xe949('0x11')][_0xe949('0xf')]);}})[_0xe949('0x12')](function(_0x574170){logger[_0xe949('0xc')](_0xe949('0xe'),_0x2620ce,_0x574170);_0x161b8e(_0x574170);});});}
\ No newline at end of file
+var _0x1a00=['then','info','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','UserVoiceQueue,\x20%s,\x20%s','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request'];(function(_0x38ef85,_0x317bcc){var _0x1ffa8d=function(_0x5069b0){while(--_0x5069b0){_0x38ef85['push'](_0x38ef85['shift']());}};_0x1ffa8d(++_0x317bcc);}(_0x1a00,0x78));var _0x01a0=function(_0x28561e,_0x442fde){_0x28561e=_0x28561e-0x0;var _0x482018=_0x1a00[_0x28561e];return _0x482018;};'use strict';var _=require(_0x01a0('0x0'));var util=require(_0x01a0('0x1'));var moment=require(_0x01a0('0x2'));var BPromise=require(_0x01a0('0x3'));var rs=require(_0x01a0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x01a0('0x5'))['db'];var utils=require(_0x01a0('0x6'));var logger=require(_0x01a0('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x01a0('0x8'));var client=jayson[_0x01a0('0x9')][_0x01a0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x597629,_0x5e08db,_0x422b4f){return new BPromise(function(_0x159715,_0x27815c){return client[_0x01a0('0xb')](_0x597629,_0x422b4f)[_0x01a0('0xc')](function(_0x2354ad){logger[_0x01a0('0xd')]('UserVoiceQueue,\x20%s,\x20%s',_0x5e08db,'request\x20sent');logger[_0x01a0('0xe')](_0x01a0('0xf'),_0x5e08db,_0x01a0('0x10'),JSON[_0x01a0('0x11')](_0x2354ad));if(_0x2354ad[_0x01a0('0x12')]){if(_0x2354ad[_0x01a0('0x12')]['code']===0x1f4){logger[_0x01a0('0x12')]('UserVoiceQueue,\x20%s,\x20%s',_0x5e08db,_0x2354ad[_0x01a0('0x12')][_0x01a0('0x13')]);return _0x27815c(_0x2354ad[_0x01a0('0x12')][_0x01a0('0x13')]);}logger['error'](_0x01a0('0x14'),_0x5e08db,_0x2354ad['error']['message']);return _0x159715(_0x2354ad[_0x01a0('0x12')][_0x01a0('0x13')]);}else{logger['info']('UserVoiceQueue,\x20%s,\x20%s',_0x5e08db,_0x01a0('0x10'));_0x159715(_0x2354ad[_0x01a0('0x15')]['message']);}})['catch'](function(_0x23f4eb){logger[_0x01a0('0x12')]('UserVoiceQueue,\x20%s,\x20%s',_0x5e08db,_0x23f4eb);_0x27815c(_0x23f4eb);});});}
\ No newline at end of file
index d6ffe1d..d155fce 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(_0x176d14,_0x3984ea){var _0x89522c=function(_0x3aba48){while(--_0x3aba48){_0x176d14['push'](_0x176d14['shift']());}};_0x89522c(++_0x3984ea);}(_0x9c44,0x178));var _0x49c4=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x9c44[_0x4d613c];return _0x301fe3;};'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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x2b6ee7,_0x260059){var _0x21110a=function(_0x56a049){while(--_0x56a049){_0x2b6ee7['push'](_0x2b6ee7['shift']());}};_0x21110a(++_0x260059);}(_0xedd9,0xfc));var _0x9edd=function(_0x4a9d8e,_0x749261){_0x4a9d8e=_0x4a9d8e-0x0;var _0x499a67=_0xedd9[_0x4a9d8e];return _0x499a67;};'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 0f49a15..6fe0351 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x088d=['queue_interface','sequelize','exports','INTEGER','Required\x20by\x20Asterisk','STRING'];(function(_0x2787b7,_0x5d49b1){var _0x1953cb=function(_0x2446f8){while(--_0x2446f8){_0x2787b7['push'](_0x2787b7['shift']());}};_0x1953cb(++_0x5d49b1);}(_0x088d,0x1ab));var _0xd088=function(_0x6da7fd,_0x194362){_0x6da7fd=_0x6da7fd-0x0;var _0x4a37cc=_0x088d[_0x6da7fd];return _0x4a37cc;};'use strict';var Sequelize=require(_0xd088('0x0'));module[_0xd088('0x1')]={'uniqueid':{'type':Sequelize[_0xd088('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xd088('0x3')},'membername':{'type':Sequelize[_0xd088('0x4')],'allowNull':![],'comment':_0xd088('0x3')},'UserId':{'type':Sequelize[_0xd088('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xd088('0x5'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0xd088('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xd088('0x4')],'allowNull':![],'unique':_0xd088('0x5'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xd088('0x3')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xd088('0x3')}};
\ No newline at end of file
+var _0x7584=['sequelize','exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x16f09f,_0x3107c9){var _0x23020e=function(_0x23319e){while(--_0x23319e){_0x16f09f['push'](_0x16f09f['shift']());}};_0x23020e(++_0x3107c9);}(_0x7584,0x10e));var _0x4758=function(_0x16b0d4,_0x103f31){_0x16b0d4=_0x16b0d4-0x0;var _0x810c45=_0x7584[_0x16b0d4];return _0x810c45;};'use strict';var Sequelize=require(_0x4758('0x0'));module[_0x4758('0x1')]={'uniqueid':{'type':Sequelize[_0x4758('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x4758('0x3')},'membername':{'type':Sequelize[_0x4758('0x4')],'allowNull':![],'comment':_0x4758('0x3')},'UserId':{'type':Sequelize[_0x4758('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x4758('0x4')],'allowNull':![],'unique':_0x4758('0x5'),'comment':_0x4758('0x3')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize[_0x4758('0x4')],'allowNull':![],'unique':_0x4758('0x5'),'comment':_0x4758('0x3')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x4758('0x3')},'paused':{'type':Sequelize[_0x4758('0x2')](0xb),'defaultValue':0x0,'comment':_0x4758('0x3')}};
\ No newline at end of file
index bea7af4..feb704e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c06=['emit','hasOwnProperty','hook','UserVoiceQueueRt','setMaxListeners','save','update'];(function(_0x5798b6,_0x5256b7){var _0x5e0314=function(_0x5dea51){while(--_0x5dea51){_0x5798b6['push'](_0x5798b6['shift']());}};_0x5e0314(++_0x5256b7);}(_0x0c06,0x1ca));var _0x60c0=function(_0x17cf17,_0x3ca20a){_0x17cf17=_0x17cf17-0x0;var _0x524207=_0x0c06[_0x17cf17];return _0x524207;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require('../../mysqldb')['db'][_0x60c0('0x0')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x60c0('0x1')](0x0);var events={'afterCreate':_0x60c0('0x2'),'afterUpdate':_0x60c0('0x3'),'afterDestroy':'remove'};function emitEvent(_0x1ea2a4){return function(_0x255397,_0x4a3266,_0x3cabd3){UserVoiceQueueRtEvents[_0x60c0('0x4')](_0x1ea2a4+':'+_0x255397['id'],_0x255397);UserVoiceQueueRtEvents[_0x60c0('0x4')](_0x1ea2a4,_0x255397);_0x3cabd3(null);};}for(var e in events){if(events[_0x60c0('0x5')](e)){var event=events[e];UserVoiceQueueRt[_0x60c0('0x6')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xa947=['hasOwnProperty','hook','exports','../../mysqldb','UserVoiceQueueRt','save','update','remove','emit'];(function(_0xb375bc,_0x11ca55){var _0x2545ab=function(_0x19bf1b){while(--_0x19bf1b){_0xb375bc['push'](_0xb375bc['shift']());}};_0x2545ab(++_0x11ca55);}(_0xa947,0x1e0));var _0x7a94=function(_0x14344d,_0xd04d0b){_0x14344d=_0x14344d-0x0;var _0x565189=_0xa947[_0x14344d];return _0x565189;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0x7a94('0x0'))['db'][_0x7a94('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7a94('0x2'),'afterUpdate':_0x7a94('0x3'),'afterDestroy':_0x7a94('0x4')};function emitEvent(_0x59cbcb){return function(_0x2869c7,_0x18ffc9,_0x394bff){UserVoiceQueueRtEvents[_0x7a94('0x5')](_0x59cbcb+':'+_0x2869c7['id'],_0x2869c7);UserVoiceQueueRtEvents[_0x7a94('0x5')](_0x59cbcb,_0x2869c7);_0x394bff(null);};}for(var e in events){if(events[_0x7a94('0x6')](e)){var event=events[e];UserVoiceQueueRt[_0x7a94('0x7')](e,emitEvent(event));}}module[_0x7a94('0x8')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 46111ee..1f8e141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa457=['../../config/logger','api','moment','rimraf','./userVoiceQueueRt.attributes','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util'];(function(_0x4d05f4,_0x4933ac){var _0x407125=function(_0x3724b2){while(--_0x3724b2){_0x4d05f4['push'](_0x4d05f4['shift']());}};_0x407125(++_0x4933ac);}(_0xa457,0xc6));var _0x7a45=function(_0x12c4e0,_0x538178){_0x12c4e0=_0x12c4e0-0x0;var _0x5ecd6f=_0xa457[_0x12c4e0];return _0x5ecd6f;};'use strict';var _=require(_0x7a45('0x0'));var util=require(_0x7a45('0x1'));var logger=require(_0x7a45('0x2'))(_0x7a45('0x3'));var moment=require(_0x7a45('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7a45('0x5'));var config=require('../../config/environment');var attributes=require(_0x7a45('0x6'));module['exports']=function(_0x21d1f6,_0x231ad2){return _0x21d1f6[_0x7a45('0x7')](_0x7a45('0x8'),attributes,{'tableName':_0x7a45('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5999=['lodash','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','UserVoiceQueueRt','user_has_voice_queues_rt'];(function(_0x59ea47,_0x2a4680){var _0x50a1ce=function(_0x238645){while(--_0x238645){_0x59ea47['push'](_0x59ea47['shift']());}};_0x50a1ce(++_0x2a4680);}(_0x5999,0x1ea));var _0x9599=function(_0x3122c9,_0x1edd01){_0x3122c9=_0x3122c9-0x0;var _0x233daa=_0x5999[_0x3122c9];return _0x233daa;};'use strict';var _=require(_0x9599('0x0'));var util=require('util');var logger=require(_0x9599('0x1'))(_0x9599('0x2'));var moment=require(_0x9599('0x3'));var BPromise=require('bluebird');var rp=require(_0x9599('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9599('0x5'));var config=require(_0x9599('0x6'));var attributes=require('./userVoiceQueueRt.attributes');module[_0x9599('0x7')]=function(_0x16cb1b,_0x4d4911){return _0x16cb1b['define'](_0x9599('0x8'),attributes,{'tableName':_0x9599('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df25cb1..be4881f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fea=['client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','UserVoiceQueueRt','options','raw','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','GetVoiceQueueRtPauses','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9fea,0x67));var _0xa9fe=function(_0x405058,_0x3b3117){_0x405058=_0x405058-0x0;var _0x3b95e4=_0x9fea[_0x405058];return _0x3b95e4;};'use strict';var _=require(_0xa9fe('0x0'));var util=require(_0xa9fe('0x1'));var moment=require(_0xa9fe('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa9fe('0x3'))['db'];var utils=require(_0xa9fe('0x4'));var logger=require(_0xa9fe('0x5'))('rpc');var config=require(_0xa9fe('0x6'));var jayson=require(_0xa9fe('0x7'));var client=jayson[_0xa9fe('0x8')][_0xa9fe('0x9')]({'port':0x232a});config[_0xa9fe('0xa')]=_[_0xa9fe('0xb')](config['redis'],{'host':_0xa9fe('0xc'),'port':0x18eb});var socket=require(_0xa9fe('0xd'))(new Redis(config[_0xa9fe('0xa')]));require('./userVoiceQueueRt.socket')[_0xa9fe('0xe')](socket);function respondWithRpcPromise(_0x3d102e,_0x4f822a,_0x59f080){return new BPromise(function(_0x4dcabb,_0x57a994){return client[_0xa9fe('0xf')](_0x3d102e,_0x59f080)[_0xa9fe('0x10')](function(_0x35f102){logger[_0xa9fe('0x11')](_0xa9fe('0x12'),_0x4f822a,'request\x20sent');logger[_0xa9fe('0x13')](_0xa9fe('0x14'),_0x4f822a,'request\x20sent',JSON[_0xa9fe('0x15')](_0x35f102));if(_0x35f102[_0xa9fe('0x16')]){if(_0x35f102[_0xa9fe('0x16')][_0xa9fe('0x17')]===0x1f4){logger[_0xa9fe('0x16')](_0xa9fe('0x12'),_0x4f822a,_0x35f102[_0xa9fe('0x16')][_0xa9fe('0x18')]);return _0x57a994(_0x35f102['error'][_0xa9fe('0x18')]);}logger[_0xa9fe('0x16')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x4f822a,_0x35f102[_0xa9fe('0x16')][_0xa9fe('0x18')]);return _0x4dcabb(_0x35f102[_0xa9fe('0x16')]['message']);}else{logger[_0xa9fe('0x11')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x4f822a,_0xa9fe('0x19'));_0x4dcabb(_0x35f102[_0xa9fe('0x1a')]['message']);}})[_0xa9fe('0x1b')](function(_0x1051e3){logger['error'](_0xa9fe('0x12'),_0x4f822a,_0x1051e3);_0x57a994(_0x1051e3);});});}exports['GetVoiceQueueRtPauses']=function(_0x21074a){var _0x310e1b=this;return new Promise(function(_0x52d9de,_0x4ff941){return db[_0xa9fe('0x1c')]['findAll']({'raw':_0x21074a[_0xa9fe('0x1d')]?_0x21074a['options'][_0xa9fe('0x1e')]===undefined?!![]:![]:!![],'where':_0x21074a['options']?_0x21074a[_0xa9fe('0x1d')]['where']||null:null,'attributes':[[db[_0xa9fe('0x1f')]['fn'](_0xa9fe('0x20'),db[_0xa9fe('0x1f')]['fn']('IF',db[_0xa9fe('0x1f')][_0xa9fe('0x21')](_0xa9fe('0x22')))),_0xa9fe('0x23')]]})[_0xa9fe('0x10')](function(_0x5be65){logger[_0xa9fe('0x11')](_0xa9fe('0x24'),_0x21074a);logger['debug'](_0xa9fe('0x24'),_0x21074a,JSON['stringify'](_0x5be65));_0x52d9de(_0x5be65);})[_0xa9fe('0x1b')](function(_0x4da3e5){logger['error'](_0xa9fe('0x24'),_0x4da3e5[_0xa9fe('0x18')],_0x21074a);_0x4ff941(_0x310e1b['error'](0x1f4,_0x4da3e5[_0xa9fe('0x18')]));});});};
\ No newline at end of file
+var _0xed85=['stringify','error','code','UserVoiceQueueRt,\x20%s,\x20%s','message','request\x20sent','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','localhost','./userVoiceQueueRt.socket','request','then','info','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xed85,0x160));var _0x5ed8=function(_0x473738,_0x15ea31){_0x473738=_0x473738-0x0;var _0x1df4ae=_0xed85[_0x473738];return _0x1df4ae;};'use strict';var _=require(_0x5ed8('0x0'));var util=require(_0x5ed8('0x1'));var moment=require(_0x5ed8('0x2'));var BPromise=require(_0x5ed8('0x3'));var rs=require(_0x5ed8('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5ed8('0x5'));var logger=require(_0x5ed8('0x6'))(_0x5ed8('0x7'));var config=require(_0x5ed8('0x8'));var jayson=require(_0x5ed8('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x5ed8('0xa')]=_['defaults'](config['redis'],{'host':_0x5ed8('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5ed8('0xa')]));require(_0x5ed8('0xc'))['register'](socket);function respondWithRpcPromise(_0x18d291,_0x36e9f3,_0x28cbaa){return new BPromise(function(_0x5beb3a,_0x1f54f9){return client[_0x5ed8('0xd')](_0x18d291,_0x28cbaa)[_0x5ed8('0xe')](function(_0x21ba7e){logger[_0x5ed8('0xf')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x36e9f3,'request\x20sent');logger[_0x5ed8('0x10')](_0x5ed8('0x11'),_0x36e9f3,'request\x20sent',JSON[_0x5ed8('0x12')](_0x21ba7e));if(_0x21ba7e[_0x5ed8('0x13')]){if(_0x21ba7e[_0x5ed8('0x13')][_0x5ed8('0x14')]===0x1f4){logger[_0x5ed8('0x13')](_0x5ed8('0x15'),_0x36e9f3,_0x21ba7e[_0x5ed8('0x13')][_0x5ed8('0x16')]);return _0x1f54f9(_0x21ba7e['error'][_0x5ed8('0x16')]);}logger[_0x5ed8('0x13')](_0x5ed8('0x15'),_0x36e9f3,_0x21ba7e['error'][_0x5ed8('0x16')]);return _0x5beb3a(_0x21ba7e[_0x5ed8('0x13')]['message']);}else{logger[_0x5ed8('0xf')](_0x5ed8('0x15'),_0x36e9f3,_0x5ed8('0x17'));_0x5beb3a(_0x21ba7e[_0x5ed8('0x18')][_0x5ed8('0x16')]);}})[_0x5ed8('0x19')](function(_0x3acab4){logger[_0x5ed8('0x13')](_0x5ed8('0x15'),_0x36e9f3,_0x3acab4);_0x1f54f9(_0x3acab4);});});}exports[_0x5ed8('0x1a')]=function(_0x3a974a){var _0x453096=this;return new Promise(function(_0xdff3f7,_0x27061f){return db[_0x5ed8('0x1b')][_0x5ed8('0x1c')]({'raw':_0x3a974a[_0x5ed8('0x1d')]?_0x3a974a[_0x5ed8('0x1d')][_0x5ed8('0x1e')]===undefined?!![]:![]:!![],'where':_0x3a974a[_0x5ed8('0x1d')]?_0x3a974a[_0x5ed8('0x1d')][_0x5ed8('0x1f')]||null:null,'attributes':[[db[_0x5ed8('0x20')]['fn'](_0x5ed8('0x21'),db[_0x5ed8('0x20')]['fn']('IF',db[_0x5ed8('0x20')][_0x5ed8('0x22')](_0x5ed8('0x23')))),_0x5ed8('0x24')]]})['then'](function(_0x1823d6){logger['info'](_0x5ed8('0x1a'),_0x3a974a);logger[_0x5ed8('0x10')]('GetVoiceQueueRtPauses',_0x3a974a,JSON[_0x5ed8('0x12')](_0x1823d6));_0xdff3f7(_0x1823d6);})[_0x5ed8('0x19')](function(_0x35dbf4){logger[_0x5ed8('0x13')](_0x5ed8('0x1a'),_0x35dbf4[_0x5ed8('0x16')],_0x3a974a);_0x27061f(_0x453096[_0x5ed8('0x13')](0x1f4,_0x35dbf4['message']));});});};
\ No newline at end of file
index 69c0fcb..308041e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3641=['userVoiceQueueRt:','save','emit','register','length'];(function(_0x5218f5,_0x2c6c3d){var _0x483d19=function(_0x3f2d09){while(--_0x3f2d09){_0x5218f5['push'](_0x5218f5['shift']());}};_0x483d19(++_0x2c6c3d);}(_0x3641,0x173));var _0x1364=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3641[_0x3dd15e];return _0x231fd0;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0x1364('0x0'),'remove','update'];function createListener(_0x174332,_0x1a0e1a){return function(_0x5506bc){_0x1a0e1a[_0x1364('0x1')](_0x174332,_0x5506bc);};}function removeListener(_0x4a9034,_0x3d14e0){return function(){UserVoiceQueueRtEvents['removeListener'](_0x4a9034,_0x3d14e0);};}exports[_0x1364('0x2')]=function(_0x4bcb69){for(var _0x169527=0x0,_0x278f40=events[_0x1364('0x3')];_0x169527<_0x278f40;_0x169527++){var _0x5ef8ba=events[_0x169527];var _0xb5d644=createListener(_0x1364('0x4')+_0x5ef8ba,_0x4bcb69);UserVoiceQueueRtEvents['on'](_0x5ef8ba,_0xb5d644);}};
\ No newline at end of file
+var _0x1db9=['remove','update','emit','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save'];(function(_0xc5ae2,_0x579850){var _0x2ff433=function(_0x496a5e){while(--_0x496a5e){_0xc5ae2['push'](_0xc5ae2['shift']());}};_0x2ff433(++_0x579850);}(_0x1db9,0x176));var _0x91db=function(_0x5974f0,_0x537e6a){_0x5974f0=_0x5974f0-0x0;var _0x436a23=_0x1db9[_0x5974f0];return _0x436a23;};'use strict';var UserVoiceQueueRtEvents=require(_0x91db('0x0'));var events=[_0x91db('0x1'),_0x91db('0x2'),_0x91db('0x3')];function createListener(_0xcdfaed,_0xb6de0b){return function(_0x49b8c5){_0xb6de0b[_0x91db('0x4')](_0xcdfaed,_0x49b8c5);};}function removeListener(_0x42ae75,_0x59c944){return function(){UserVoiceQueueRtEvents['removeListener'](_0x42ae75,_0x59c944);};}exports[_0x91db('0x5')]=function(_0x4b3f5c){for(var _0x5e69d9=0x0,_0x433c75=events[_0x91db('0x6')];_0x5e69d9<_0x433c75;_0x5e69d9++){var _0x45fea0=events[_0x5e69d9];var _0x2330c2=createListener(_0x91db('0x7')+_0x45fea0,_0x4b3f5c);UserVoiceQueueRtEvents['on'](_0x45fea0,_0x2330c2);}};
\ No newline at end of file
index 4371d66..e018c2e 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(_0x124df1,_0x470857){var _0x3ebc26=function(_0x291174){while(--_0x291174){_0x124df1['push'](_0x124df1['shift']());}};_0x3ebc26(++_0x470857);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x209bbf,_0x2e2375){_0x209bbf=_0x209bbf-0x0;var _0x592d4b=_0xcb91[_0x209bbf];return _0x592d4b;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x96beb5,_0x3e0440){var _0x550c0c=function(_0xa21ed){while(--_0xa21ed){_0x96beb5['push'](_0x96beb5['shift']());}};_0x550c0c(++_0x3e0440);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1e9424,_0x191cba){_0x1e9424=_0x1e9424-0x0;var _0x1bd96c=_0xcb91[_0x1e9424];return _0x1bd96c;};'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 6491fb3..89ed08d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb748=['exports','INTEGER','sequelize'];(function(_0x43d7f1,_0x11a1eb){var _0x470f7e=function(_0x233fe5){while(--_0x233fe5){_0x43d7f1['push'](_0x43d7f1['shift']());}};_0x470f7e(++_0x11a1eb);}(_0xb748,0xd7));var _0x8b74=function(_0x408956,_0x45cb03){_0x408956=_0x408956-0x0;var _0x402009=_0xb748[_0x408956];return _0x402009;};'use strict';var Sequelize=require(_0x8b74('0x0'));module[_0x8b74('0x1')]={'penalty':{'type':Sequelize[_0x8b74('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7021=['sequelize','INTEGER'];(function(_0x3094eb,_0x2cf788){var _0x30d9c4=function(_0x4b7db0){while(--_0x4b7db0){_0x3094eb['push'](_0x3094eb['shift']());}};_0x30d9c4(++_0x2cf788);}(_0x7021,0x136));var _0x1702=function(_0x51ec5c,_0x3506ef){_0x51ec5c=_0x51ec5c-0x0;var _0x5b04b8=_0x7021[_0x51ec5c];return _0x5b04b8;};'use strict';var Sequelize=require(_0x1702('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x1702('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index ee929fe..f304459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd3f=['user_has_whatsapp_queues','lodash','util','bluebird','rimraf','../../config/environment','./userWhatsappQueue.attributes','define','UserWhatsappQueue'];(function(_0x22de84,_0x56142b){var _0x54fc49=function(_0x3be7bc){while(--_0x3be7bc){_0x22de84['push'](_0x22de84['shift']());}};_0x54fc49(++_0x56142b);}(_0xdd3f,0x1ba));var _0xfdd3=function(_0x28b68a,_0x3a72e7){_0x28b68a=_0x28b68a-0x0;var _0x556e27=_0xdd3f[_0x28b68a];return _0x556e27;};'use strict';var _=require(_0xfdd3('0x0'));var util=require(_0xfdd3('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xfdd3('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xfdd3('0x3'));var config=require(_0xfdd3('0x4'));var attributes=require(_0xfdd3('0x5'));module['exports']=function(_0x234e09,_0x3c510a){return _0x234e09[_0xfdd3('0x6')](_0xfdd3('0x7'),attributes,{'tableName':_0xfdd3('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeb6c=['request-promise','path','rimraf','./userWhatsappQueue.attributes','define','UserWhatsappQueue','lodash','util','api'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xeb6c,0x12f));var _0xceb6=function(_0x3d219a,_0x3bb6f5){_0x3d219a=_0x3d219a-0x0;var _0x5682e8=_0xeb6c[_0x3d219a];return _0x5682e8;};'use strict';var _=require(_0xceb6('0x0'));var util=require(_0xceb6('0x1'));var logger=require('../../config/logger')(_0xceb6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xceb6('0x3'));var fs=require('fs');var path=require(_0xceb6('0x4'));var rimraf=require(_0xceb6('0x5'));var config=require('../../config/environment');var attributes=require(_0xceb6('0x6'));module['exports']=function(_0x51a2f3,_0x4b2603){return _0x51a2f3[_0xceb6('0x7')](_0xceb6('0x8'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 93f3f00..65dcd5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x007c=['moment','bluebird','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','code','error','UserWhatsappQueue,\x20%s,\x20%s','message','result','lodash','util'];(function(_0x22cba2,_0x1c9223){var _0x5852b7=function(_0x114d1f){while(--_0x114d1f){_0x22cba2['push'](_0x22cba2['shift']());}};_0x5852b7(++_0x1c9223);}(_0x007c,0x124));var _0xc007=function(_0x5a5a9d,_0x1d8f4d){_0x5a5a9d=_0x5a5a9d-0x0;var _0xa36def=_0x007c[_0x5a5a9d];return _0xa36def;};'use strict';var _=require(_0xc007('0x0'));var util=require(_0xc007('0x1'));var moment=require(_0xc007('0x2'));var BPromise=require(_0xc007('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc007('0x4'));var logger=require(_0xc007('0x5'))('rpc');var config=require(_0xc007('0x6'));var jayson=require(_0xc007('0x7'));var client=jayson[_0xc007('0x8')][_0xc007('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4bb989,_0xb3d7b1,_0x2feb2b){return new BPromise(function(_0x166077,_0x18192f){return client[_0xc007('0xa')](_0x4bb989,_0x2feb2b)[_0xc007('0xb')](function(_0x5dbea0){logger[_0xc007('0xc')]('UserWhatsappQueue,\x20%s,\x20%s',_0xb3d7b1,_0xc007('0xd'));logger[_0xc007('0xe')](_0xc007('0xf'),_0xb3d7b1,'request\x20sent',JSON['stringify'](_0x5dbea0));if(_0x5dbea0['error']){if(_0x5dbea0['error'][_0xc007('0x10')]===0x1f4){logger[_0xc007('0x11')](_0xc007('0x12'),_0xb3d7b1,_0x5dbea0[_0xc007('0x11')]['message']);return _0x18192f(_0x5dbea0[_0xc007('0x11')][_0xc007('0x13')]);}logger[_0xc007('0x11')](_0xc007('0x12'),_0xb3d7b1,_0x5dbea0['error'][_0xc007('0x13')]);return _0x166077(_0x5dbea0[_0xc007('0x11')][_0xc007('0x13')]);}else{logger[_0xc007('0xc')](_0xc007('0x12'),_0xb3d7b1,_0xc007('0xd'));_0x166077(_0x5dbea0[_0xc007('0x14')]['message']);}})['catch'](function(_0x20189c){logger[_0xc007('0x11')](_0xc007('0x12'),_0xb3d7b1,_0x20189c);_0x18192f(_0x20189c);});});}
\ No newline at end of file
+var _0x335d=['catch','lodash','bluebird','ioredis','../../mysqldb','rpc','jayson/promise','client','request','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x335d,0x18d));var _0xd335=function(_0x67a5fe,_0x5b1510){_0x67a5fe=_0x67a5fe-0x0;var _0x2703c3=_0x335d[_0x67a5fe];return _0x2703c3;};'use strict';var _=require(_0xd335('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd335('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd335('0x2'));var db=require(_0xd335('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd335('0x4'));var config=require('../../config/environment');var jayson=require(_0xd335('0x5'));var client=jayson[_0xd335('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d82f3,_0x2b616b,_0x4d5ae9){return new BPromise(function(_0x318dcc,_0x570bb7){return client[_0xd335('0x7')](_0x2d82f3,_0x4d5ae9)['then'](function(_0x116e53){logger[_0xd335('0x8')](_0xd335('0x9'),_0x2b616b,_0xd335('0xa'));logger[_0xd335('0xb')](_0xd335('0xc'),_0x2b616b,_0xd335('0xa'),JSON[_0xd335('0xd')](_0x116e53));if(_0x116e53['error']){if(_0x116e53[_0xd335('0xe')][_0xd335('0xf')]===0x1f4){logger[_0xd335('0xe')](_0xd335('0x9'),_0x2b616b,_0x116e53[_0xd335('0xe')][_0xd335('0x10')]);return _0x570bb7(_0x116e53['error'][_0xd335('0x10')]);}logger['error']('UserWhatsappQueue,\x20%s,\x20%s',_0x2b616b,_0x116e53[_0xd335('0xe')][_0xd335('0x10')]);return _0x318dcc(_0x116e53['error'][_0xd335('0x10')]);}else{logger['info']('UserWhatsappQueue,\x20%s,\x20%s',_0x2b616b,_0xd335('0xa'));_0x318dcc(_0x116e53['result'][_0xd335('0x10')]);}})[_0xd335('0x11')](function(_0x55de2e){logger[_0xd335('0xe')](_0xd335('0x9'),_0x2b616b,_0x55de2e);_0x570bb7(_0x55de2e);});});}
\ No newline at end of file
index a2e7378..31f4431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee39=['../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show','put','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x387bb2,_0x15cc6e){var _0x2de5e7=function(_0x31177a){while(--_0x31177a){_0x387bb2['push'](_0x387bb2['shift']());}};_0x2de5e7(++_0x15cc6e);}(_0xee39,0x1e6));var _0x9ee3=function(_0x5a8d62,_0x51c7e8){_0x5a8d62=_0x5a8d62-0x0;var _0x328e4a=_0xee39[_0x5a8d62];return _0x328e4a;};'use strict';var multer=require(_0x9ee3('0x0'));var util=require(_0x9ee3('0x1'));var path=require(_0x9ee3('0x2'));var timeout=require('connect-timeout');var express=require(_0x9ee3('0x3'));var router=express[_0x9ee3('0x4')]();var fs_extra=require(_0x9ee3('0x5'));var auth=require(_0x9ee3('0x6'));var interaction=require(_0x9ee3('0x7'));var config=require(_0x9ee3('0x8'));var controller=require(_0x9ee3('0x9'));router[_0x9ee3('0xa')]('/',auth[_0x9ee3('0xb')](),controller[_0x9ee3('0xc')]);router['get'](_0x9ee3('0xd'),auth[_0x9ee3('0xb')](),controller[_0x9ee3('0xe')]);router['post']('/',auth[_0x9ee3('0xb')](),controller['create']);router[_0x9ee3('0xf')]('/:id',auth[_0x9ee3('0xb')](),controller['update']);router['delete'](_0x9ee3('0xd'),auth['isAuthenticated'](),controller[_0x9ee3('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x12fd=['create','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x12fd,0x199));var _0xd12f=function(_0x477031,_0x48bf85){_0x477031=_0x477031-0x0;var _0x2d3df8=_0x12fd[_0x477031];return _0x2d3df8;};'use strict';var multer=require(_0xd12f('0x0'));var util=require(_0xd12f('0x1'));var path=require(_0xd12f('0x2'));var timeout=require(_0xd12f('0x3'));var express=require(_0xd12f('0x4'));var router=express['Router']();var fs_extra=require(_0xd12f('0x5'));var auth=require(_0xd12f('0x6'));var interaction=require(_0xd12f('0x7'));var config=require(_0xd12f('0x8'));var controller=require(_0xd12f('0x9'));router[_0xd12f('0xa')]('/',auth['isAuthenticated'](),controller[_0xd12f('0xb')]);router['get'](_0xd12f('0xc'),auth[_0xd12f('0xd')](),controller[_0xd12f('0xe')]);router[_0xd12f('0xf')]('/',auth['isAuthenticated'](),controller[_0xd12f('0x10')]);router['put'](_0xd12f('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xd12f('0xc'),auth[_0xd12f('0xd')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7a20307..b34f3b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c61=['STRING','name'];(function(_0x1d05ef,_0x1df6a8){var _0x1436eb=function(_0x49b1ec){while(--_0x49b1ec){_0x1d05ef['push'](_0x1d05ef['shift']());}};_0x1436eb(++_0x1df6a8);}(_0x3c61,0x11a));var _0x13c6=function(_0x38b98,_0x5e26ad){_0x38b98=_0x38b98-0x0;var _0x39e0d0=_0x3c61[_0x38b98];return _0x39e0d0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x13c6('0x0')],'unique':_0x13c6('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbb5b=['sequelize','STRING'];(function(_0x2d70e3,_0xfa2091){var _0x1b91e6=function(_0x272651){while(--_0x272651){_0x2d70e3['push'](_0x2d70e3['shift']());}};_0x1b91e6(++_0xfa2091);}(_0xbb5b,0x154));var _0xbbb5=function(_0x29c3b2,_0x3c12ac){_0x29c3b2=_0x29c3b2-0x0;var _0x4b3aa7=_0xbb5b[_0x29c3b2];return _0x4b3aa7;};'use strict';var Sequelize=require(_0xbbb5('0x0'));module['exports']={'name':{'type':Sequelize[_0xbbb5('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xbbb5('0x1')]}};
\ No newline at end of file
index aa03871..6c959f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcca5=['map','Variable','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','length','nolimit','order','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','create','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','catch','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','limit','offset','count','set','Content-Range','apply','reject','destroy','get','Variables','then','error','name','send'];(function(_0x4aaed4,_0x58e99b){var _0x10d3b9=function(_0x1f1716){while(--_0x1f1716){_0x4aaed4['push'](_0x4aaed4['shift']());}};_0x10d3b9(++_0x58e99b);}(_0xcca5,0x1a4));var _0x5cca=function(_0x36ed3c,_0x44a00a){_0x36ed3c=_0x36ed3c-0x0;var _0x52a2e0=_0xcca5[_0x36ed3c];return _0x52a2e0;};'use strict';var emlformat=require(_0x5cca('0x0'));var rimraf=require(_0x5cca('0x1'));var zipdir=require(_0x5cca('0x2'));var jsonpatch=require(_0x5cca('0x3'));var rp=require(_0x5cca('0x4'));var moment=require(_0x5cca('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5cca('0x6'));var util=require('util');var path=require(_0x5cca('0x7'));var sox=require(_0x5cca('0x8'));var csv=require(_0x5cca('0x9'));var ejs=require(_0x5cca('0xa'));var fs=require('fs');var fs_extra=require(_0x5cca('0xb'));var _=require(_0x5cca('0xc'));var squel=require('squel');var crypto=require(_0x5cca('0xd'));var jsforce=require(_0x5cca('0xe'));var deskjs=require(_0x5cca('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5cca('0x10'));var Papa=require('papaparse');var Redis=require(_0x5cca('0x11'));var authService=require(_0x5cca('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5cca('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5cca('0x14'))(_0x5cca('0x15'));var utils=require(_0x5cca('0x16'));var config=require(_0x5cca('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd75625,_0x9ec7f0){_0x9ec7f0=_0x9ec7f0||0xcc;return function(_0x27e2ec){if(_0x27e2ec){return _0xd75625[_0x5cca('0x18')](_0x9ec7f0);}return _0xd75625[_0x5cca('0x19')](_0x9ec7f0)[_0x5cca('0x1a')]();};}function respondWithResult(_0x5e365b,_0x50682a){_0x50682a=_0x50682a||0xc8;return function(_0x31a0bb){if(_0x31a0bb){return _0x5e365b[_0x5cca('0x19')](_0x50682a)[_0x5cca('0x1b')](_0x31a0bb);}};}function respondWithFilteredResult(_0x554800,_0x43fbef){return function(_0x2d3bc6){if(_0x2d3bc6){var _0x3d7da0=typeof _0x43fbef['offset']==='undefined'&&typeof _0x43fbef[_0x5cca('0x1c')]==='undefined';var _0x14d1ef=_0x2d3bc6['count'];var _0x4a8453=_0x3d7da0?0x0:_0x43fbef[_0x5cca('0x1d')];var _0x349120=_0x3d7da0?_0x2d3bc6[_0x5cca('0x1e')]:_0x43fbef[_0x5cca('0x1d')]+_0x43fbef['limit'];var _0x42df9a;if(_0x349120>=_0x14d1ef){_0x349120=_0x14d1ef;_0x42df9a=0xc8;}else{_0x42df9a=0xce;}_0x554800['status'](_0x42df9a);return _0x554800[_0x5cca('0x1f')](_0x5cca('0x20'),_0x4a8453+'-'+_0x349120+'/'+_0x14d1ef)[_0x5cca('0x1b')](_0x2d3bc6);}return null;};}function patchUpdates(_0x5b2075){return function(_0x3ebabb){try{jsonpatch[_0x5cca('0x21')](_0x3ebabb,_0x5b2075,!![]);}catch(_0x20fc9b){return BPromise[_0x5cca('0x22')](_0x20fc9b);}return _0x3ebabb['save']();};}function saveUpdates(_0x2bd086,_0xf75fd4){return function(_0x3a9629){if(_0x3a9629){return _0x3a9629['update'](_0x2bd086)['then'](function(_0x85c1ce){return _0x85c1ce;});}return null;};}function removeEntity(_0x3fdcf1,_0x55688d){return function(_0x8d858b){if(_0x8d858b){return _0x8d858b[_0x5cca('0x23')]()['then'](function(){var _0x10812d=_0x8d858b[_0x5cca('0x24')]({'plain':!![]});var _0x3960a5=_0x5cca('0x25');return db['UserProfileResource'][_0x5cca('0x23')]({'where':{'type':_0x3960a5,'resourceId':_0x10812d['id']}})[_0x5cca('0x26')](function(){return _0x8d858b;});})[_0x5cca('0x26')](function(){_0x3fdcf1[_0x5cca('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd641eb,_0x11cef7){return function(_0x177340){if(!_0x177340){_0xd641eb['sendStatus'](0x194);}return _0x177340;};}function handleError(_0x1001b9,_0x4d9e19){_0x4d9e19=_0x4d9e19||0x1f4;return function(_0x39ed77){logger[_0x5cca('0x27')](_0x39ed77['stack']);if(_0x39ed77[_0x5cca('0x28')]){delete _0x39ed77['name'];}_0x1001b9[_0x5cca('0x19')](_0x4d9e19)[_0x5cca('0x29')](_0x39ed77);};}exports['index']=function(_0x24c1b0,_0x4ddccc){var _0x28ab99={},_0x1cf8b7={},_0x1f8789={'count':0x0,'rows':[]};var _0x3f39c9=_[_0x5cca('0x2a')](db[_0x5cca('0x2b')][_0x5cca('0x2c')],function(_0x79b87f){return{'name':_0x79b87f[_0x5cca('0x2d')],'type':_0x79b87f['type'][_0x5cca('0x2e')]};});_0x1cf8b7['model']=_['map'](_0x3f39c9,_0x5cca('0x28'));_0x1cf8b7[_0x5cca('0x2f')]=_[_0x5cca('0x30')](_0x24c1b0[_0x5cca('0x2f')]);_0x1cf8b7['filters']=_[_0x5cca('0x31')](_0x1cf8b7[_0x5cca('0x32')],_0x1cf8b7['query']);_0x28ab99[_0x5cca('0x33')]=_[_0x5cca('0x31')](_0x1cf8b7[_0x5cca('0x32')],qs[_0x5cca('0x34')](_0x24c1b0[_0x5cca('0x2f')][_0x5cca('0x34')]));_0x28ab99[_0x5cca('0x33')]=_0x28ab99[_0x5cca('0x33')][_0x5cca('0x35')]?_0x28ab99[_0x5cca('0x33')]:_0x1cf8b7[_0x5cca('0x32')];if(!_0x24c1b0[_0x5cca('0x2f')]['hasOwnProperty'](_0x5cca('0x36'))){_0x28ab99[_0x5cca('0x1c')]=qs[_0x5cca('0x1c')](_0x24c1b0[_0x5cca('0x2f')][_0x5cca('0x1c')]);_0x28ab99[_0x5cca('0x1d')]=qs[_0x5cca('0x1d')](_0x24c1b0[_0x5cca('0x2f')][_0x5cca('0x1d')]);}_0x28ab99[_0x5cca('0x37')]=qs['sort'](_0x24c1b0[_0x5cca('0x2f')]['sort']);_0x28ab99[_0x5cca('0x38')]=qs[_0x5cca('0x39')](_[_0x5cca('0x3a')](_0x24c1b0[_0x5cca('0x2f')],_0x1cf8b7[_0x5cca('0x39')]),_0x3f39c9);if(_0x24c1b0[_0x5cca('0x2f')][_0x5cca('0x3b')]){_0x28ab99['where']=_[_0x5cca('0x3c')](_0x28ab99[_0x5cca('0x38')],{'$or':_[_0x5cca('0x2a')](_0x3f39c9,function(_0x16e8a6){if(_0x16e8a6['type']!==_0x5cca('0x3d')){var _0x108e5e={};_0x108e5e[_0x16e8a6[_0x5cca('0x28')]]={'$like':'%'+_0x24c1b0[_0x5cca('0x2f')][_0x5cca('0x3b')]+'%'};return _0x108e5e;}})});}_0x28ab99=_[_0x5cca('0x3c')]({},_0x28ab99,_0x24c1b0[_0x5cca('0x3e')]);var _0x228c84={'where':_0x28ab99[_0x5cca('0x38')]};return db[_0x5cca('0x2b')][_0x5cca('0x1e')](_0x228c84)[_0x5cca('0x26')](function(_0x46114f){_0x1f8789[_0x5cca('0x1e')]=_0x46114f;if(_0x24c1b0[_0x5cca('0x2f')][_0x5cca('0x3f')]){_0x28ab99[_0x5cca('0x40')]=[{'all':!![]}];}return db[_0x5cca('0x2b')][_0x5cca('0x41')](_0x28ab99);})[_0x5cca('0x26')](function(_0x6acfee){_0x1f8789[_0x5cca('0x42')]=_0x6acfee;return _0x1f8789;})['then'](respondWithFilteredResult(_0x4ddccc,_0x28ab99))['catch'](handleError(_0x4ddccc,null));};exports['show']=function(_0x5f3fea,_0x38f903){var _0x4d83b8={'raw':!![],'where':{'id':_0x5f3fea[_0x5cca('0x43')]['id']}},_0x34be0f={};_0x34be0f[_0x5cca('0x32')]=_[_0x5cca('0x30')](db[_0x5cca('0x2b')][_0x5cca('0x2c')]);_0x34be0f[_0x5cca('0x2f')]=_[_0x5cca('0x30')](_0x5f3fea[_0x5cca('0x2f')]);_0x34be0f[_0x5cca('0x39')]=_['intersection'](_0x34be0f[_0x5cca('0x32')],_0x34be0f[_0x5cca('0x2f')]);_0x4d83b8['attributes']=_[_0x5cca('0x31')](_0x34be0f[_0x5cca('0x32')],qs[_0x5cca('0x34')](_0x5f3fea['query'][_0x5cca('0x34')]));_0x4d83b8[_0x5cca('0x33')]=_0x4d83b8['attributes'][_0x5cca('0x35')]?_0x4d83b8[_0x5cca('0x33')]:_0x34be0f['model'];if(_0x5f3fea[_0x5cca('0x2f')]['includeAll']){_0x4d83b8['include']=[{'all':!![]}];}_0x4d83b8=_[_0x5cca('0x3c')]({},_0x4d83b8,_0x5f3fea['options']);return db[_0x5cca('0x2b')]['find'](_0x4d83b8)['then'](handleEntityNotFound(_0x38f903,null))[_0x5cca('0x26')](respondWithResult(_0x38f903,null))['catch'](handleError(_0x38f903,null));};exports[_0x5cca('0x44')]=function(_0x4610d1,_0xc9c6ef){return db['Variable'][_0x5cca('0x44')](_0x4610d1['body'],{})[_0x5cca('0x26')](function(_0x53aee4){var _0x39fc4a=_0x4610d1['user'][_0x5cca('0x24')]({'plain':!![]});if(!_0x39fc4a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x39fc4a['role']==='user'){var _0x7dddb3=_0x53aee4[_0x5cca('0x24')]({'plain':!![]});var _0x5d1f70=_0x5cca('0x25');return db[_0x5cca('0x45')][_0x5cca('0x46')]({'where':{'name':_0x5d1f70,'userProfileId':_0x39fc4a[_0x5cca('0x47')]},'raw':!![]})[_0x5cca('0x26')](function(_0x2f8856){if(_0x2f8856&&_0x2f8856[_0x5cca('0x48')]===0x0){return db[_0x5cca('0x49')]['create']({'name':_0x7dddb3[_0x5cca('0x28')],'resourceId':_0x7dddb3['id'],'type':_0x2f8856['name'],'sectionId':_0x2f8856['id']},{})[_0x5cca('0x26')](function(){return _0x53aee4;});}else{return _0x53aee4;}})[_0x5cca('0x4a')](function(_0x33b4cc){logger[_0x5cca('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x33b4cc);throw _0x33b4cc;});}return _0x53aee4;})['then'](respondWithResult(_0xc9c6ef,0xc9))[_0x5cca('0x4a')](handleError(_0xc9c6ef,null));};exports[_0x5cca('0x4b')]=function(_0x4f9e73,_0x2a0014){if(_0x4f9e73[_0x5cca('0x4c')]['id']){delete _0x4f9e73[_0x5cca('0x4c')]['id'];}return db['Variable'][_0x5cca('0x46')]({'where':{'id':_0x4f9e73[_0x5cca('0x43')]['id']}})[_0x5cca('0x26')](handleEntityNotFound(_0x2a0014,null))[_0x5cca('0x26')](saveUpdates(_0x4f9e73[_0x5cca('0x4c')],null))[_0x5cca('0x26')](respondWithResult(_0x2a0014,null))[_0x5cca('0x4a')](handleError(_0x2a0014,null));};exports[_0x5cca('0x23')]=function(_0x285913,_0x1248cb){return db[_0x5cca('0x2b')][_0x5cca('0x46')]({'where':{'id':_0x285913[_0x5cca('0x43')]['id']}})[_0x5cca('0x26')](handleEntityNotFound(_0x1248cb,null))[_0x5cca('0x26')](removeEntity(_0x1248cb,null))[_0x5cca('0x4a')](handleError(_0x1248cb,null));};
\ No newline at end of file
+var _0xb9fd=['sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','json','apply','reject','save','update','then','destroy','get','Variables','UserProfileResource','error','name','send','index','map','Variable','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0xb9fd,0x118));var _0xdb9f=function(_0x26b622,_0x237e9e){_0x26b622=_0x26b622-0x0;var _0x58a028=_0xb9fd[_0x26b622];return _0x58a028;};'use strict';var emlformat=require(_0xdb9f('0x0'));var rimraf=require(_0xdb9f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdb9f('0x2'));var rp=require(_0xdb9f('0x3'));var moment=require(_0xdb9f('0x4'));var BPromise=require(_0xdb9f('0x5'));var Mustache=require(_0xdb9f('0x6'));var util=require(_0xdb9f('0x7'));var path=require(_0xdb9f('0x8'));var sox=require('sox');var csv=require(_0xdb9f('0x9'));var ejs=require(_0xdb9f('0xa'));var fs=require('fs');var fs_extra=require(_0xdb9f('0xb'));var _=require(_0xdb9f('0xc'));var squel=require('squel');var crypto=require(_0xdb9f('0xd'));var jsforce=require(_0xdb9f('0xe'));var deskjs=require(_0xdb9f('0xf'));var toCsv=require(_0xdb9f('0x9'));var querystring=require(_0xdb9f('0x10'));var Papa=require(_0xdb9f('0x11'));var Redis=require(_0xdb9f('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xdb9f('0x13'));var as=require(_0xdb9f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdb9f('0x15'))(_0xdb9f('0x16'));var utils=require(_0xdb9f('0x17'));var config=require(_0xdb9f('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xdb9f('0x19'))['db'];function respondWithStatusCode(_0x3e0eb6,_0x45ec8b){_0x45ec8b=_0x45ec8b||0xcc;return function(_0x2c418c){if(_0x2c418c){return _0x3e0eb6[_0xdb9f('0x1a')](_0x45ec8b);}return _0x3e0eb6[_0xdb9f('0x1b')](_0x45ec8b)[_0xdb9f('0x1c')]();};}function respondWithResult(_0x1e970a,_0x2daf72){_0x2daf72=_0x2daf72||0xc8;return function(_0x355f86){if(_0x355f86){return _0x1e970a[_0xdb9f('0x1b')](_0x2daf72)['json'](_0x355f86);}};}function respondWithFilteredResult(_0x43d2c9,_0x488d5f){return function(_0x2e3f37){if(_0x2e3f37){var _0x3d23aa=typeof _0x488d5f[_0xdb9f('0x1d')]==='undefined'&&typeof _0x488d5f['limit']===_0xdb9f('0x1e');var _0x36e6c1=_0x2e3f37[_0xdb9f('0x1f')];var _0x4fd6ff=_0x3d23aa?0x0:_0x488d5f[_0xdb9f('0x1d')];var _0x56da07=_0x3d23aa?_0x2e3f37[_0xdb9f('0x1f')]:_0x488d5f['offset']+_0x488d5f[_0xdb9f('0x20')];var _0x467756;if(_0x56da07>=_0x36e6c1){_0x56da07=_0x36e6c1;_0x467756=0xc8;}else{_0x467756=0xce;}_0x43d2c9[_0xdb9f('0x1b')](_0x467756);return _0x43d2c9[_0xdb9f('0x21')]('Content-Range',_0x4fd6ff+'-'+_0x56da07+'/'+_0x36e6c1)[_0xdb9f('0x22')](_0x2e3f37);}return null;};}function patchUpdates(_0x502855){return function(_0x402c5c){try{jsonpatch[_0xdb9f('0x23')](_0x402c5c,_0x502855,!![]);}catch(_0x5a3273){return BPromise[_0xdb9f('0x24')](_0x5a3273);}return _0x402c5c[_0xdb9f('0x25')]();};}function saveUpdates(_0x1b4c6f,_0xbc7631){return function(_0x1fb738){if(_0x1fb738){return _0x1fb738[_0xdb9f('0x26')](_0x1b4c6f)[_0xdb9f('0x27')](function(_0xf70799){return _0xf70799;});}return null;};}function removeEntity(_0x4094d3,_0x624b4e){return function(_0x988f04){if(_0x988f04){return _0x988f04[_0xdb9f('0x28')]()[_0xdb9f('0x27')](function(){var _0x14dbf6=_0x988f04[_0xdb9f('0x29')]({'plain':!![]});var _0x3448b9=_0xdb9f('0x2a');return db[_0xdb9f('0x2b')]['destroy']({'where':{'type':_0x3448b9,'resourceId':_0x14dbf6['id']}})[_0xdb9f('0x27')](function(){return _0x988f04;});})[_0xdb9f('0x27')](function(){_0x4094d3[_0xdb9f('0x1b')](0xcc)[_0xdb9f('0x1c')]();});}};}function handleEntityNotFound(_0x4a50af,_0xdedafd){return function(_0x479d93){if(!_0x479d93){_0x4a50af[_0xdb9f('0x1a')](0x194);}return _0x479d93;};}function handleError(_0x489a81,_0x5d3a95){_0x5d3a95=_0x5d3a95||0x1f4;return function(_0x509e50){logger[_0xdb9f('0x2c')](_0x509e50['stack']);if(_0x509e50[_0xdb9f('0x2d')]){delete _0x509e50[_0xdb9f('0x2d')];}_0x489a81[_0xdb9f('0x1b')](_0x5d3a95)[_0xdb9f('0x2e')](_0x509e50);};}exports[_0xdb9f('0x2f')]=function(_0x4aa611,_0x5601ea){var _0x113418={},_0x1c5c1c={},_0x792b57={'count':0x0,'rows':[]};var _0x3b17b1=_[_0xdb9f('0x30')](db[_0xdb9f('0x31')][_0xdb9f('0x32')],function(_0x53df31){return{'name':_0x53df31[_0xdb9f('0x33')],'type':_0x53df31[_0xdb9f('0x34')][_0xdb9f('0x35')]};});_0x1c5c1c[_0xdb9f('0x36')]=_['map'](_0x3b17b1,_0xdb9f('0x2d'));_0x1c5c1c[_0xdb9f('0x37')]=_[_0xdb9f('0x38')](_0x4aa611[_0xdb9f('0x37')]);_0x1c5c1c[_0xdb9f('0x39')]=_['intersection'](_0x1c5c1c[_0xdb9f('0x36')],_0x1c5c1c[_0xdb9f('0x37')]);_0x113418[_0xdb9f('0x3a')]=_[_0xdb9f('0x3b')](_0x1c5c1c[_0xdb9f('0x36')],qs[_0xdb9f('0x3c')](_0x4aa611[_0xdb9f('0x37')][_0xdb9f('0x3c')]));_0x113418[_0xdb9f('0x3a')]=_0x113418['attributes'][_0xdb9f('0x3d')]?_0x113418[_0xdb9f('0x3a')]:_0x1c5c1c[_0xdb9f('0x36')];if(!_0x4aa611['query']['hasOwnProperty'](_0xdb9f('0x3e'))){_0x113418[_0xdb9f('0x20')]=qs[_0xdb9f('0x20')](_0x4aa611[_0xdb9f('0x37')][_0xdb9f('0x20')]);_0x113418[_0xdb9f('0x1d')]=qs['offset'](_0x4aa611[_0xdb9f('0x37')][_0xdb9f('0x1d')]);}_0x113418[_0xdb9f('0x3f')]=qs['sort'](_0x4aa611[_0xdb9f('0x37')][_0xdb9f('0x40')]);_0x113418[_0xdb9f('0x41')]=qs['filters'](_[_0xdb9f('0x42')](_0x4aa611[_0xdb9f('0x37')],_0x1c5c1c[_0xdb9f('0x39')]),_0x3b17b1);if(_0x4aa611[_0xdb9f('0x37')][_0xdb9f('0x43')]){_0x113418[_0xdb9f('0x41')]=_['merge'](_0x113418[_0xdb9f('0x41')],{'$or':_['map'](_0x3b17b1,function(_0xa111d1){if(_0xa111d1['type']!==_0xdb9f('0x44')){var _0x1bc347={};_0x1bc347[_0xa111d1['name']]={'$like':'%'+_0x4aa611[_0xdb9f('0x37')][_0xdb9f('0x43')]+'%'};return _0x1bc347;}})});}_0x113418=_[_0xdb9f('0x45')]({},_0x113418,_0x4aa611[_0xdb9f('0x46')]);var _0x35255b={'where':_0x113418[_0xdb9f('0x41')]};return db[_0xdb9f('0x31')][_0xdb9f('0x1f')](_0x35255b)[_0xdb9f('0x27')](function(_0x17b5ee){_0x792b57[_0xdb9f('0x1f')]=_0x17b5ee;if(_0x4aa611[_0xdb9f('0x37')][_0xdb9f('0x47')]){_0x113418['include']=[{'all':!![]}];}return db[_0xdb9f('0x31')][_0xdb9f('0x48')](_0x113418);})[_0xdb9f('0x27')](function(_0xbe2ab2){_0x792b57[_0xdb9f('0x49')]=_0xbe2ab2;return _0x792b57;})[_0xdb9f('0x27')](respondWithFilteredResult(_0x5601ea,_0x113418))[_0xdb9f('0x4a')](handleError(_0x5601ea,null));};exports[_0xdb9f('0x4b')]=function(_0x2ced4a,_0x152fe0){var _0x5e969c={'raw':!![],'where':{'id':_0x2ced4a[_0xdb9f('0x4c')]['id']}},_0x32fcf2={};_0x32fcf2[_0xdb9f('0x36')]=_[_0xdb9f('0x38')](db[_0xdb9f('0x31')][_0xdb9f('0x32')]);_0x32fcf2['query']=_[_0xdb9f('0x38')](_0x2ced4a['query']);_0x32fcf2[_0xdb9f('0x39')]=_[_0xdb9f('0x3b')](_0x32fcf2[_0xdb9f('0x36')],_0x32fcf2[_0xdb9f('0x37')]);_0x5e969c[_0xdb9f('0x3a')]=_[_0xdb9f('0x3b')](_0x32fcf2['model'],qs[_0xdb9f('0x3c')](_0x2ced4a['query'][_0xdb9f('0x3c')]));_0x5e969c[_0xdb9f('0x3a')]=_0x5e969c[_0xdb9f('0x3a')][_0xdb9f('0x3d')]?_0x5e969c[_0xdb9f('0x3a')]:_0x32fcf2['model'];if(_0x2ced4a[_0xdb9f('0x37')][_0xdb9f('0x47')]){_0x5e969c[_0xdb9f('0x4d')]=[{'all':!![]}];}_0x5e969c=_[_0xdb9f('0x45')]({},_0x5e969c,_0x2ced4a[_0xdb9f('0x46')]);return db[_0xdb9f('0x31')][_0xdb9f('0x4e')](_0x5e969c)[_0xdb9f('0x27')](handleEntityNotFound(_0x152fe0,null))[_0xdb9f('0x27')](respondWithResult(_0x152fe0,null))[_0xdb9f('0x4a')](handleError(_0x152fe0,null));};exports['create']=function(_0x241931,_0x1eff62){return db[_0xdb9f('0x31')][_0xdb9f('0x4f')](_0x241931[_0xdb9f('0x50')],{})[_0xdb9f('0x27')](function(_0x31ba2a){var _0x991dca=_0x241931[_0xdb9f('0x51')][_0xdb9f('0x29')]({'plain':!![]});if(!_0x991dca)throw new Error(_0xdb9f('0x52'));if(_0x991dca[_0xdb9f('0x53')]===_0xdb9f('0x51')){var _0x520a24=_0x31ba2a['get']({'plain':!![]});var _0x50cbb2=_0xdb9f('0x2a');return db[_0xdb9f('0x54')]['find']({'where':{'name':_0x50cbb2,'userProfileId':_0x991dca['userProfileId']},'raw':!![]})[_0xdb9f('0x27')](function(_0x41906b){if(_0x41906b&&_0x41906b[_0xdb9f('0x55')]===0x0){return db[_0xdb9f('0x2b')][_0xdb9f('0x4f')]({'name':_0x520a24['name'],'resourceId':_0x520a24['id'],'type':_0x41906b[_0xdb9f('0x2d')],'sectionId':_0x41906b['id']},{})[_0xdb9f('0x27')](function(){return _0x31ba2a;});}else{return _0x31ba2a;}})['catch'](function(_0x76261){logger[_0xdb9f('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x76261);throw _0x76261;});}return _0x31ba2a;})[_0xdb9f('0x27')](respondWithResult(_0x1eff62,0xc9))[_0xdb9f('0x4a')](handleError(_0x1eff62,null));};exports[_0xdb9f('0x26')]=function(_0x278eaf,_0x4ce77d){if(_0x278eaf['body']['id']){delete _0x278eaf['body']['id'];}return db[_0xdb9f('0x31')][_0xdb9f('0x4e')]({'where':{'id':_0x278eaf[_0xdb9f('0x4c')]['id']}})[_0xdb9f('0x27')](handleEntityNotFound(_0x4ce77d,null))[_0xdb9f('0x27')](saveUpdates(_0x278eaf[_0xdb9f('0x50')],null))[_0xdb9f('0x27')](respondWithResult(_0x4ce77d,null))[_0xdb9f('0x4a')](handleError(_0x4ce77d,null));};exports[_0xdb9f('0x28')]=function(_0x3884b2,_0xb9d475){return db[_0xdb9f('0x31')][_0xdb9f('0x4e')]({'where':{'id':_0x3884b2[_0xdb9f('0x4c')]['id']}})[_0xdb9f('0x27')](handleEntityNotFound(_0xb9d475,null))['then'](removeEntity(_0xb9d475,null))[_0xdb9f('0x4a')](handleError(_0xb9d475,null));};
\ No newline at end of file
index b643667..df30bcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf801=['define','tools_variables','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./variable.attributes','exports'];(function(_0x2f04bd,_0x346136){var _0x107c0e=function(_0x3837d9){while(--_0x3837d9){_0x2f04bd['push'](_0x2f04bd['shift']());}};_0x107c0e(++_0x346136);}(_0xf801,0xe2));var _0x1f80=function(_0x4a397d,_0x5bab1f){_0x4a397d=_0x4a397d-0x0;var _0x316571=_0xf801[_0x4a397d];return _0x316571;};'use strict';var _=require(_0x1f80('0x0'));var util=require(_0x1f80('0x1'));var logger=require(_0x1f80('0x2'))(_0x1f80('0x3'));var moment=require(_0x1f80('0x4'));var BPromise=require(_0x1f80('0x5'));var rp=require(_0x1f80('0x6'));var fs=require('fs');var path=require(_0x1f80('0x7'));var rimraf=require(_0x1f80('0x8'));var config=require(_0x1f80('0x9'));var attributes=require(_0x1f80('0xa'));module[_0x1f80('0xb')]=function(_0x38d533,_0x50970d){return _0x38d533[_0x1f80('0xc')]('Variable',attributes,{'tableName':_0x1f80('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x537b=['request-promise','path','rimraf','../../config/environment','./variable.attributes','define','Variable','util','api','moment','bluebird'];(function(_0x31b31b,_0x5f044e){var _0x2c8fc2=function(_0x5438aa){while(--_0x5438aa){_0x31b31b['push'](_0x31b31b['shift']());}};_0x2c8fc2(++_0x5f044e);}(_0x537b,0x1b4));var _0xb537=function(_0x520087,_0x250243){_0x520087=_0x520087-0x0;var _0x122006=_0x537b[_0x520087];return _0x122006;};'use strict';var _=require('lodash');var util=require(_0xb537('0x0'));var logger=require('../../config/logger')(_0xb537('0x1'));var moment=require(_0xb537('0x2'));var BPromise=require(_0xb537('0x3'));var rp=require(_0xb537('0x4'));var fs=require('fs');var path=require(_0xb537('0x5'));var rimraf=require(_0xb537('0x6'));var config=require(_0xb537('0x7'));var attributes=require(_0xb537('0x8'));module['exports']=function(_0x58d3e6,_0x35692b){return _0x58d3e6[_0xb537('0x9')](_0xb537('0xa'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9a4ade1..45374bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','Variable,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','ShowVariable','Variable','raw','options','include','model','attributes','map','then','stringify','lodash'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x326f,0xd1));var _0xf326=function(_0x19c638,_0x41769d){_0x19c638=_0x19c638-0x0;var _0x339a19=_0x326f[_0x19c638];return _0x339a19;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('Variable,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('Variable,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['find']({'raw':_0x453100['options']?_0x453100['options'][_0xf326('0x16')]===undefined?!![]:![]:!![],'where':_0x453100[_0xf326('0x17')]?_0x453100['options']['where']||null:null,'attributes':_0x453100[_0xf326('0x17')]?_0x453100['options']['attributes']||null:null,'include':_0x453100[_0xf326('0x17')]?_0x453100[_0xf326('0x17')]['include']?_['map'](_0x453100[_0xf326('0x17')][_0xf326('0x18')],function(_0x5f21a2){return{'model':db[_0x5f21a2[_0xf326('0x19')]],'as':_0x5f21a2['as'],'attributes':_0x5f21a2[_0xf326('0x1a')],'include':_0x5f21a2[_0xf326('0x18')]?_[_0xf326('0x1b')](_0x5f21a2[_0xf326('0x18')],function(_0x2049ec){return{'model':db[_0x2049ec['model']],'as':_0x2049ec['as'],'attributes':_0x2049ec['attributes'],'include':_0x2049ec['include']?_[_0xf326('0x1b')](_0x2049ec[_0xf326('0x18')],function(_0x2cd45a){return{'model':db[_0x2cd45a[_0xf326('0x19')]],'as':_0x2cd45a['as'],'attributes':_0x2cd45a[_0xf326('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf326('0x1c')](function(_0x5217d4){logger[_0xf326('0xb')](_0xf326('0x14'),_0x453100);logger[_0xf326('0xe')]('ShowVariable',_0x453100,JSON[_0xf326('0x1d')](_0x5217d4));_0x31ffb9(_0x5217d4);})['catch'](function(_0x4a9abf){logger[_0xf326('0xf')](_0xf326('0x14'),_0x4a9abf[_0xf326('0x11')],_0x453100);_0xcef2b5(_0x18bee3['error'](0x1f4,_0x4a9abf[_0xf326('0x11')]));});});};
\ No newline at end of file
+var _0xabce=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowVariable','Variable','find','options','attributes','map','include','model','catch','lodash','util'];(function(_0x2697d5,_0x547feb){var _0x4643ab=function(_0x30d5d2){while(--_0x30d5d2){_0x2697d5['push'](_0x2697d5['shift']());}};_0x4643ab(++_0x547feb);}(_0xabce,0x103));var _0xeabc=function(_0x4ae625,_0xf396d0){_0x4ae625=_0x4ae625-0x0;var _0x31accf=_0xabce[_0x4ae625];return _0x31accf;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Variable,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}exports[_0xeabc('0x14')]=function(_0x58a3c0){var _0x16f08b=this;return new Promise(function(_0x31dd53,_0x31f52a){return db[_0xeabc('0x15')][_0xeabc('0x16')]({'raw':_0x58a3c0['options']?_0x58a3c0[_0xeabc('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['where']||null:null,'attributes':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x18')]||null:null,'include':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['include']?_[_0xeabc('0x19')](_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x1a')],function(_0x5bdd57){return{'model':db[_0x5bdd57[_0xeabc('0x1b')]],'as':_0x5bdd57['as'],'attributes':_0x5bdd57[_0xeabc('0x18')],'include':_0x5bdd57[_0xeabc('0x1a')]?_[_0xeabc('0x19')](_0x5bdd57['include'],function(_0x109e1d){return{'model':db[_0x109e1d['model']],'as':_0x109e1d['as'],'attributes':_0x109e1d[_0xeabc('0x18')],'include':_0x109e1d['include']?_[_0xeabc('0x19')](_0x109e1d[_0xeabc('0x1a')],function(_0x269621){return{'model':db[_0x269621[_0xeabc('0x1b')]],'as':_0x269621['as'],'attributes':_0x269621[_0xeabc('0x18')]};}):[]};}):[]};}):[]:[]})[_0xeabc('0x9')](function(_0x131722){logger['info']('ShowVariable',_0x58a3c0);logger[_0xeabc('0xd')]('ShowVariable',_0x58a3c0,JSON[_0xeabc('0xf')](_0x131722));_0x31dd53(_0x131722);})[_0xeabc('0x1c')](function(_0x48fb52){logger[_0xeabc('0x10')](_0xeabc('0x14'),_0x48fb52[_0xeabc('0x12')],_0x58a3c0);_0x31f52a(_0x16f08b[_0xeabc('0x10')](0x1f4,_0x48fb52[_0xeabc('0x12')]));});});};
\ No newline at end of file
index ddb9ce3..cd8508a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa6a=['migrations','express','Router','../../components/auth/service','index','get','isAuthenticated','fetch','/reset','canUpdate','reset','pull','/restart','/migrations'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0xaa6a,0x1dd));var _0xaaa6=function(_0x2ecf87,_0x2c0dc1){_0x2ecf87=_0x2ecf87-0x0;var _0x312025=_0xaa6a[_0x2ecf87];return _0x312025;};'use strict';var express=require(_0xaaa6('0x0'));var router=express[_0xaaa6('0x1')]();var auth=require(_0xaaa6('0x2'));var controller=require('./version.controller');router['get']('/',controller[_0xaaa6('0x3')]);router[_0xaaa6('0x4')]('/fetch',auth[_0xaaa6('0x5')](),auth['canUpdate'](),controller[_0xaaa6('0x6')]);router[_0xaaa6('0x4')](_0xaaa6('0x7'),auth[_0xaaa6('0x5')](),auth[_0xaaa6('0x8')](),controller[_0xaaa6('0x9')]);router[_0xaaa6('0x4')]('/pull',auth['isAuthenticated'](),auth[_0xaaa6('0x8')](),controller[_0xaaa6('0xa')]);router[_0xaaa6('0x4')](_0xaaa6('0xb'),auth[_0xaaa6('0x5')](),controller['restart']);router[_0xaaa6('0x4')](_0xaaa6('0xc'),controller[_0xaaa6('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0xf3f4=['exports','express','Router','../../components/auth/service','./version.controller','index','get','/fetch','canUpdate','fetch','/reset','isAuthenticated','/pull','pull','/restart','/migrations','migrations'];(function(_0x20d44e,_0x35b1af){var _0x15a23a=function(_0x515480){while(--_0x515480){_0x20d44e['push'](_0x20d44e['shift']());}};_0x15a23a(++_0x35b1af);}(_0xf3f4,0x9a));var _0x4f3f=function(_0x1544f6,_0x20302a){_0x1544f6=_0x1544f6-0x0;var _0xb00ea=_0xf3f4[_0x1544f6];return _0xb00ea;};'use strict';var express=require(_0x4f3f('0x0'));var router=express[_0x4f3f('0x1')]();var auth=require(_0x4f3f('0x2'));var controller=require(_0x4f3f('0x3'));router['get']('/',controller[_0x4f3f('0x4')]);router[_0x4f3f('0x5')](_0x4f3f('0x6'),auth['isAuthenticated'](),auth[_0x4f3f('0x7')](),controller[_0x4f3f('0x8')]);router[_0x4f3f('0x5')](_0x4f3f('0x9'),auth[_0x4f3f('0xa')](),auth[_0x4f3f('0x7')](),controller['reset']);router[_0x4f3f('0x5')](_0x4f3f('0xb'),auth[_0x4f3f('0xa')](),auth[_0x4f3f('0x7')](),controller[_0x4f3f('0xc')]);router[_0x4f3f('0x5')](_0x4f3f('0xd'),auth[_0x4f3f('0xa')](),controller['restart']);router[_0x4f3f('0x5')](_0x4f3f('0xe'),controller[_0x4f3f('0xf')]);module[_0x4f3f('0x10')]=router;
\ No newline at end of file
index f20ce72..05c073d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1968=['push','length','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','last','UniqueConstraintError','Database\x20already\x20up-to-date','path','lodash','compare-versions','child_process','exec','../../mysqldb','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','version','query','latest','fetch','tags','2.0.0','status','json','origin','info','reset','FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','error','restart','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','readdirSync','join','server','migrations','.js'];(function(_0x174813,_0x360a53){var _0x157a2d=function(_0x1d4458){while(--_0x1d4458){_0x174813['push'](_0x174813['shift']());}};_0x157a2d(++_0x360a53);}(_0x1968,0x169));var _0x8196=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x1968[_0xdea41a];return _0x15d0d8;};'use strict';var Umzug=require('umzug');var path=require(_0x8196('0x0'));var fs=require('fs');var _=require(_0x8196('0x1'));var pkginfo=require('pkginfo')(module,'version');var compareVersions=require(_0x8196('0x2'));var exec=require(_0x8196('0x3'))[_0x8196('0x4')];var db=require(_0x8196('0x5'))['db'];var config=require('../../config/environment');var pm2=require(_0x8196('0x6'));var logger=require(_0x8196('0x7'))(_0x8196('0x8'));var git=require(_0x8196('0x9'))(config[_0x8196('0xa')]);exports[_0x8196('0xb')]=function(_0x1a4d91,_0xc2795){var _0x52f0a7={'current':module[_0x8196('0xc')][_0x8196('0xd')],'phonebar':0x2};if(_0x1a4d91['query']&&_0x1a4d91[_0x8196('0xe')][_0x8196('0xf')]){return git[_0x8196('0x10')]()[_0x8196('0x11')](function(_0x21610e,_0x62464f){_0x52f0a7[_0x8196('0xf')]=(_0x21610e?module[_0x8196('0xc')][_0x8196('0xd')]:_0x62464f['latest'])||_0x8196('0x12');return _0xc2795[_0x8196('0x13')](0xc8)[_0x8196('0x14')](_0x52f0a7);});}else{return _0xc2795[_0x8196('0x13')](0xc8)[_0x8196('0x14')](_0x52f0a7);}};exports[_0x8196('0x10')]=function(_0x52960e,_0x2b25ac){return git[_0x8196('0x10')]([_0x8196('0x15'),'master'],function(_0x465832){if(_0x465832){logger['error'](_0x465832);return _0x2b25ac[_0x8196('0x13')](0x1f4)['json'](_0x465832);}logger[_0x8196('0x16')]('git\x20fetch');return _0x2b25ac[_0x8196('0x13')](0xc8)[_0x8196('0x14')]({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0x8196('0x17')]=function(_0x5043dd,_0x3930dd){return git[_0x8196('0x17')](['--hard',_0x8196('0x18')],function(_0x356594){if(_0x356594){logger['error'](_0x356594);return _0x3930dd[_0x8196('0x13')](0x1f4)[_0x8196('0x14')](_0x356594);}logger['info']('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x3930dd[_0x8196('0x13')](0xc8)['json']({'output':_0x8196('0x19')});});};exports[_0x8196('0x1a')]=function(_0x2de056,_0x9b095e){exec(_0x8196('0x1b'),function(_0x1e3052,_0x20145a,_0xebf155){logger[_0x8196('0x16')](_0x20145a);logger[_0x8196('0x16')](_0xebf155);if(_0x1e3052){logger[_0x8196('0x1c')](_0x1e3052);return _0x9b095e['status'](0x1f4)[_0x8196('0x14')](_0x1e3052);}return _0x9b095e[_0x8196('0x13')](0xc8)['json']({'output':_0x20145a});});};exports[_0x8196('0x1d')]=function(_0x34dd0f,_0x5671ee){return pm2[_0x8196('0x1d')]('motion2')[_0x8196('0x1e')](function(_0x206557){logger[_0x8196('0x16')](_0x8196('0x1f'),_0x206557);return _0x5671ee[_0x8196('0x13')](0xc8)[_0x8196('0x14')]({'output':_0x8196('0x20')});})[_0x8196('0x21')](function(_0x349bb7){logger[_0x8196('0x1c')](_0x349bb7);return _0x5671ee[_0x8196('0x13')](0x1f4)[_0x8196('0x14')](_0x349bb7);});};exports['migrations']=function(_0x418aee,_0x118da2){var _0x333dc4=fs[_0x8196('0x22')](path[_0x8196('0x23')](config[_0x8196('0xa')],_0x8196('0x24'),_0x8196('0x25')));var _0x38fafd=[];for(var _0x28c32a=0x0;_0x28c32a<_0x333dc4['length'];_0x28c32a++){var _0x3c3ce3=_0x333dc4[_0x28c32a]['replace'](_0x8196('0x26'),'');if(compareVersions(module[_0x8196('0xc')]['version'],_0x3c3ce3)===-0x1){_0x38fafd[_0x8196('0x27')](_0x3c3ce3);}}if(_0x38fafd[_0x8196('0x28')]){var _0x62a28b=_0x38fafd[_0x8196('0x29')](compareVersions);var _0x184886=new Umzug({'storage':_0x8196('0x2a'),'storageOptions':{'model':db[_0x8196('0x2b')],'modelName':'Migration','columnName':_0x8196('0xd')},'migrations':{'params':[db['sequelize'][_0x8196('0x2c')](),db[_0x8196('0x2a')][_0x8196('0x2d')],function(){throw new Error(_0x8196('0x2e'));}],'path':path[_0x8196('0x23')](config[_0x8196('0xa')],'server',_0x8196('0x25')),'pattern':/\.js$/}});_0x184886['up']({'migrations':_['map'](_0x62a28b,function(_0x42e3e5){return _0x42e3e5+_0x8196('0x26');})})[_0x8196('0x1e')](function(){return _0x118da2['status'](0xc8)[_0x8196('0x14')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0x8196('0xc')][_0x8196('0xd')]+'\x20to\x20'+_[_0x8196('0x2f')](_0x62a28b),'migrations':_[_0x8196('0x23')](_0x62a28b)});})[_0x8196('0x21')](function(_0x1768a5){if(_0x1768a5 instanceof db['sequelize'][_0x8196('0x30')]){return _0x118da2[_0x8196('0x13')](0xc8)[_0x8196('0x14')]({'output':_0x8196('0x31')});}else{return _0x118da2['status'](0x1f4)[_0x8196('0x14')](_0x1768a5);}});}else{return _0x118da2[_0x8196('0x13')](0xc8)[_0x8196('0x14')]({'output':_0x8196('0x31')});}};
\ No newline at end of file
+var _0xfe93=['master','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','error','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','length','replace','push','sort','Migration','sequelize','getQueryInterface','constructor','.js','\x20to\x20','UniqueConstraintError','Database\x20already\x20up-to-date','path','lodash','version','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','query','latest','tags','status','json','fetch','origin'];(function(_0x53f0ac,_0x188914){var _0x20d1cf=function(_0x54ef78){while(--_0x54ef78){_0x53f0ac['push'](_0x53f0ac['shift']());}};_0x20d1cf(++_0x188914);}(_0xfe93,0x1aa));var _0x3fe9=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xfe93[_0x465028];return _0xb783d4;};'use strict';var Umzug=require('umzug');var path=require(_0x3fe9('0x0'));var fs=require('fs');var _=require(_0x3fe9('0x1'));var pkginfo=require('pkginfo')(module,_0x3fe9('0x2'));var compareVersions=require(_0x3fe9('0x3'));var exec=require(_0x3fe9('0x4'))[_0x3fe9('0x5')];var db=require(_0x3fe9('0x6'))['db'];var config=require(_0x3fe9('0x7'));var pm2=require(_0x3fe9('0x8'));var logger=require(_0x3fe9('0x9'))(_0x3fe9('0xa'));var git=require(_0x3fe9('0xb'))(config[_0x3fe9('0xc')]);exports[_0x3fe9('0xd')]=function(_0x5310c5,_0x58dc58){var _0x41b4f4={'current':module[_0x3fe9('0xe')]['version'],'phonebar':0x2};if(_0x5310c5[_0x3fe9('0xf')]&&_0x5310c5[_0x3fe9('0xf')][_0x3fe9('0x10')]){return git['fetch']()[_0x3fe9('0x11')](function(_0x1a5d90,_0x789760){_0x41b4f4[_0x3fe9('0x10')]=(_0x1a5d90?module['exports'][_0x3fe9('0x2')]:_0x789760[_0x3fe9('0x10')])||'2.0.0';return _0x58dc58[_0x3fe9('0x12')](0xc8)['json'](_0x41b4f4);});}else{return _0x58dc58[_0x3fe9('0x12')](0xc8)[_0x3fe9('0x13')](_0x41b4f4);}};exports[_0x3fe9('0x14')]=function(_0x266541,_0x107f2e){return git[_0x3fe9('0x14')]([_0x3fe9('0x15'),_0x3fe9('0x16')],function(_0x1be773){if(_0x1be773){logger['error'](_0x1be773);return _0x107f2e[_0x3fe9('0x12')](0x1f4)['json'](_0x1be773);}logger[_0x3fe9('0x17')](_0x3fe9('0x18'));return _0x107f2e[_0x3fe9('0x12')](0xc8)['json']({'output':_0x3fe9('0x19')});});};exports[_0x3fe9('0x1a')]=function(_0x42651f,_0x1ce430){return git['reset']([_0x3fe9('0x1b'),_0x3fe9('0x1c')],function(_0x4e238a){if(_0x4e238a){logger[_0x3fe9('0x1d')](_0x4e238a);return _0x1ce430['status'](0x1f4)[_0x3fe9('0x13')](_0x4e238a);}logger[_0x3fe9('0x17')](_0x3fe9('0x1e'));return _0x1ce430[_0x3fe9('0x12')](0xc8)[_0x3fe9('0x13')]({'output':_0x3fe9('0x1f')});});};exports[_0x3fe9('0x20')]=function(_0x57a465,_0x315c1a){exec(_0x3fe9('0x21'),function(_0x25ca4f,_0xb82ad4,_0x531a86){logger[_0x3fe9('0x17')](_0xb82ad4);logger['info'](_0x531a86);if(_0x25ca4f){logger[_0x3fe9('0x1d')](_0x25ca4f);return _0x315c1a[_0x3fe9('0x12')](0x1f4)['json'](_0x25ca4f);}return _0x315c1a[_0x3fe9('0x12')](0xc8)[_0x3fe9('0x13')]({'output':_0xb82ad4});});};exports[_0x3fe9('0x22')]=function(_0x5bf530,_0x5d1ca7){return pm2[_0x3fe9('0x22')](_0x3fe9('0x23'))[_0x3fe9('0x24')](function(_0x55ac97){logger['info'](_0x3fe9('0x25'),_0x55ac97);return _0x5d1ca7[_0x3fe9('0x12')](0xc8)[_0x3fe9('0x13')]({'output':_0x3fe9('0x26')});})[_0x3fe9('0x27')](function(_0x18eedc){logger[_0x3fe9('0x1d')](_0x18eedc);return _0x5d1ca7[_0x3fe9('0x12')](0x1f4)[_0x3fe9('0x13')](_0x18eedc);});};exports[_0x3fe9('0x28')]=function(_0x35faba,_0x6cc8c6){var _0xee8433=fs[_0x3fe9('0x29')](path[_0x3fe9('0x2a')](config[_0x3fe9('0xc')],_0x3fe9('0x2b'),_0x3fe9('0x28')));var _0x219a61=[];for(var _0x462eba=0x0;_0x462eba<_0xee8433[_0x3fe9('0x2c')];_0x462eba++){var _0x2d7c69=_0xee8433[_0x462eba][_0x3fe9('0x2d')]('.js','');if(compareVersions(module[_0x3fe9('0xe')][_0x3fe9('0x2')],_0x2d7c69)===-0x1){_0x219a61[_0x3fe9('0x2e')](_0x2d7c69);}}if(_0x219a61[_0x3fe9('0x2c')]){var _0x460d88=_0x219a61[_0x3fe9('0x2f')](compareVersions);var _0x55f9d6=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0x3fe9('0x30')],'modelName':_0x3fe9('0x30'),'columnName':_0x3fe9('0x2')},'migrations':{'params':[db[_0x3fe9('0x31')][_0x3fe9('0x32')](),db['sequelize'][_0x3fe9('0x33')],function(){throw new Error('Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.');}],'path':path['join'](config[_0x3fe9('0xc')],'server',_0x3fe9('0x28')),'pattern':/\.js$/}});_0x55f9d6['up']({'migrations':_['map'](_0x460d88,function(_0x1b10b1){return _0x1b10b1+_0x3fe9('0x34');})})[_0x3fe9('0x24')](function(){return _0x6cc8c6['status'](0xc8)[_0x3fe9('0x13')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0x3fe9('0xe')][_0x3fe9('0x2')]+_0x3fe9('0x35')+_['last'](_0x460d88),'migrations':_[_0x3fe9('0x2a')](_0x460d88)});})['catch'](function(_0x2f6915){if(_0x2f6915 instanceof db['sequelize'][_0x3fe9('0x36')]){return _0x6cc8c6[_0x3fe9('0x12')](0xc8)[_0x3fe9('0x13')]({'output':_0x3fe9('0x37')});}else{return _0x6cc8c6[_0x3fe9('0x12')](0x1f4)[_0x3fe9('0x13')](_0x2f6915);}});}else{return _0x6cc8c6[_0x3fe9('0x12')](0xc8)[_0x3fe9('0x13')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
index 66dff45..6533060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9ab=['put','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create'];(function(_0x312cd8,_0x426245){var _0x137254=function(_0x3affd3){while(--_0x3affd3){_0x312cd8['push'](_0x312cd8['shift']());}};_0x137254(++_0x426245);}(_0xc9ab,0x17d));var _0xbc9a=function(_0x5db867,_0x5dd600){_0x5db867=_0x5db867-0x0;var _0x6de323=_0xc9ab[_0x5db867];return _0x6de323;};'use strict';var multer=require('multer');var util=require(_0xbc9a('0x0'));var path=require(_0xbc9a('0x1'));var timeout=require(_0xbc9a('0x2'));var express=require(_0xbc9a('0x3'));var router=express[_0xbc9a('0x4')]();var fs_extra=require(_0xbc9a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbc9a('0x6'));var config=require(_0xbc9a('0x7'));var controller=require(_0xbc9a('0x8'));router[_0xbc9a('0x9')]('/',auth[_0xbc9a('0xa')](),controller[_0xbc9a('0xb')]);router[_0xbc9a('0x9')](_0xbc9a('0xc'),auth[_0xbc9a('0xa')](),controller[_0xbc9a('0xd')]);router[_0xbc9a('0x9')](_0xbc9a('0xe'),auth[_0xbc9a('0xa')](),controller[_0xbc9a('0xf')]);router[_0xbc9a('0x10')]('/',auth['isAuthenticated'](),controller[_0xbc9a('0x11')]);router[_0xbc9a('0x12')](_0xbc9a('0xe'),auth[_0xbc9a('0xa')](),controller['update']);router['delete']('/:id',auth[_0xbc9a('0xa')](),controller[_0xbc9a('0x13')]);module[_0xbc9a('0x14')]=router;
\ No newline at end of file
+var _0x7608=['index','/describe','isAuthenticated','describe','get','/:id','post','create','put','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceAgentReport.controller'];(function(_0x2e68d1,_0xed28a1){var _0x1cca9a=function(_0x40ab2d){while(--_0x40ab2d){_0x2e68d1['push'](_0x2e68d1['shift']());}};_0x1cca9a(++_0xed28a1);}(_0x7608,0x64));var _0x8760=function(_0x4fb7f5,_0x65876){_0x4fb7f5=_0x4fb7f5-0x0;var _0x2bf949=_0x7608[_0x4fb7f5];return _0x2bf949;};'use strict';var multer=require(_0x8760('0x0'));var util=require(_0x8760('0x1'));var path=require(_0x8760('0x2'));var timeout=require('connect-timeout');var express=require(_0x8760('0x3'));var router=express['Router']();var fs_extra=require(_0x8760('0x4'));var auth=require(_0x8760('0x5'));var interaction=require(_0x8760('0x6'));var config=require('../../config/environment');var controller=require(_0x8760('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x8760('0x8')]);router['get'](_0x8760('0x9'),auth[_0x8760('0xa')](),controller[_0x8760('0xb')]);router[_0x8760('0xc')](_0x8760('0xd'),auth[_0x8760('0xa')](),controller['show']);router[_0x8760('0xe')]('/',auth[_0x8760('0xa')](),controller[_0x8760('0xf')]);router[_0x8760('0x10')]('/:id',auth[_0x8760('0xa')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x8760('0x11')]=router;
\ No newline at end of file
index 4373302..b5ccfb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7a0=['BOOLEAN','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x3f3b53,_0x3d035f){var _0x3fa180=function(_0x194ff3){while(--_0x194ff3){_0x3f3b53['push'](_0x3f3b53['shift']());}};_0x3fa180(++_0x3d035f);}(_0xd7a0,0x163));var _0x0d7a=function(_0x4cf865,_0x5a9a3d){_0x4cf865=_0x4cf865-0x0;var _0x5d5a74=_0xd7a0[_0x4cf865];return _0x5d5a74;};'use strict';var Sequelize=require(_0x0d7a('0x0'));module[_0x0d7a('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x0d7a('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x0d7a('0x2')]},'queue':{'type':Sequelize[_0x0d7a('0x2')]},'interface':{'type':Sequelize[_0x0d7a('0x2')]},'membername':{'type':Sequelize[_0x0d7a('0x2')]},'agentcalledAt':{'type':Sequelize[_0x0d7a('0x3')]},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0x0d7a('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x0d7a('0x3')]},'agentdumpAt':{'type':Sequelize[_0x0d7a('0x3')]},'holdtime':{'type':Sequelize[_0x0d7a('0x4')]},'agentcomplete':{'type':Sequelize[_0x0d7a('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x0d7a('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x0d7a('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0x0d7a('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x0d7a('0x4')]},'reason':{'type':Sequelize[_0x0d7a('0x2')]},'lastevent':{'type':Sequelize[_0x0d7a('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x0d7a('0x4')]},'channelstatedesc':{'type':Sequelize[_0x0d7a('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x0d7a('0x2')]},'language':{'type':Sequelize[_0x0d7a('0x2')]},'accountcode':{'type':Sequelize[_0x0d7a('0x2')]},'context':{'type':Sequelize[_0x0d7a('0x2')]},'exten':{'type':Sequelize[_0x0d7a('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x0d7a('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x0d7a('0x2')]},'destcalleridnum':{'type':Sequelize[_0x0d7a('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x0d7a('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x0d7a('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x0d7a('0x2')]},'destpriority':{'type':Sequelize[_0x0d7a('0x2')]},'destuniqueid':{'type':Sequelize[_0x0d7a('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x0d7a('0x2')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x0d7a('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x0d7a('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x0d7a('0x2')]},'transferuniqueid':{'type':Sequelize[_0x0d7a('0x2')]},'agententerreason':{'type':Sequelize[_0x0d7a('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbbdd=['DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','exports','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbbdd,0x1ba));var _0xdbbd=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0xbbdd[_0x403c20];return _0x2b271a;};'use strict';var Sequelize=require('sequelize');module[_0xdbbd('0x0')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xdbbd('0x1')]},'calleridnum':{'type':Sequelize[_0xdbbd('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xdbbd('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xdbbd('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0xdbbd('0x2')]},'agentdumpAt':{'type':Sequelize[_0xdbbd('0x2')]},'holdtime':{'type':Sequelize[_0xdbbd('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xdbbd('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xdbbd('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xdbbd('0x3')]},'agentacw':{'type':Sequelize[_0xdbbd('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xdbbd('0x3')]},'reason':{'type':Sequelize[_0xdbbd('0x1')]},'lastevent':{'type':Sequelize[_0xdbbd('0x1')]},'channel':{'type':Sequelize[_0xdbbd('0x1')]},'channelstate':{'type':Sequelize[_0xdbbd('0x3')]},'channelstatedesc':{'type':Sequelize[_0xdbbd('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xdbbd('0x1')]},'language':{'type':Sequelize[_0xdbbd('0x1')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xdbbd('0x1')]},'destchannelstate':{'type':Sequelize[_0xdbbd('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xdbbd('0x1')]},'destcalleridnum':{'type':Sequelize[_0xdbbd('0x1')]},'destcalleridname':{'type':Sequelize[_0xdbbd('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xdbbd('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xdbbd('0x1')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xdbbd('0x1')]},'destcontext':{'type':Sequelize[_0xdbbd('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xdbbd('0x1')]},'destuniqueid':{'type':Sequelize[_0xdbbd('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xdbbd('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0xdbbd('0x1')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xdbbd('0x1')],'comment':_0xdbbd('0x5')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0xdbbd('0x1')]},'agententerreason':{'type':Sequelize[_0xdbbd('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index a6084dd..a41fbc7 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(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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(_0x4e7d25,_0x58285f){var _0x526fe6=function(_0x4f0aec){while(--_0x4f0aec){_0x4e7d25['push'](_0x4e7d25['shift']());}};_0x526fe6(++_0x58285f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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 2bc3ba3..5f716f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8eb=['bluebird','request-promise','rimraf','../../config/environment','exports','VoiceAgentReport','report_agent','lodash','../../config/logger','moment'];(function(_0x3c59fc,_0x10dbd2){var _0x2b78d4=function(_0x5f161a){while(--_0x5f161a){_0x3c59fc['push'](_0x3c59fc['shift']());}};_0x2b78d4(++_0x10dbd2);}(_0xa8eb,0x179));var _0xba8e=function(_0x3a07f5,_0x357c50){_0x3a07f5=_0x3a07f5-0x0;var _0x1ae6b9=_0xa8eb[_0x3a07f5];return _0x1ae6b9;};'use strict';var _=require(_0xba8e('0x0'));var util=require('util');var logger=require(_0xba8e('0x1'))('api');var moment=require(_0xba8e('0x2'));var BPromise=require(_0xba8e('0x3'));var rp=require(_0xba8e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xba8e('0x5'));var config=require(_0xba8e('0x6'));var attributes=require('./voiceAgentReport.attributes');module[_0xba8e('0x7')]=function(_0x57e345,_0x14c3ac){return _0x57e345['define'](_0xba8e('0x8'),attributes,{'tableName':_0xba8e('0x9'),'paranoid':![],'indexes':[{'fields':['uniqueid','destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcd59=['destuniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent'];(function(_0x455011,_0x1f4fb0){var _0x432ce6=function(_0x237b02){while(--_0x237b02){_0x455011['push'](_0x455011['shift']());}};_0x432ce6(++_0x1f4fb0);}(_0xcd59,0x14b));var _0x9cd5=function(_0x2a5b82,_0xc61f63){_0x2a5b82=_0x2a5b82-0x0;var _0x322e1a=_0xcd59[_0x2a5b82];return _0x322e1a;};'use strict';var _=require(_0x9cd5('0x0'));var util=require(_0x9cd5('0x1'));var logger=require(_0x9cd5('0x2'))(_0x9cd5('0x3'));var moment=require(_0x9cd5('0x4'));var BPromise=require(_0x9cd5('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9cd5('0x6'));var rimraf=require(_0x9cd5('0x7'));var config=require(_0x9cd5('0x8'));var attributes=require(_0x9cd5('0x9'));module[_0x9cd5('0xa')]=function(_0x2db192,_0x46277c){return _0x2db192[_0x9cd5('0xb')](_0x9cd5('0xc'),attributes,{'tableName':_0x9cd5('0xd'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x9cd5('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 36db02f..de327c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe839=['lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','CreateVoiceAgentReport','create','body','options','raw','stringify','VoiceAgentReport','where','limit','UpdateVoiceAgentReport','debug'];(function(_0x1a512f,_0x15f715){var _0x27b126=function(_0x208fd2){while(--_0x208fd2){_0x1a512f['push'](_0x1a512f['shift']());}};_0x27b126(++_0x15f715);}(_0xe839,0x12c));var _0x9e83=function(_0x5beda8,_0x1e8554){_0x5beda8=_0x5beda8-0x0;var _0x2aa042=_0xe839[_0x5beda8];return _0x2aa042;};'use strict';var _=require(_0x9e83('0x0'));var util=require('util');var moment=require(_0x9e83('0x1'));var BPromise=require('bluebird');var rs=require(_0x9e83('0x2'));var fs=require('fs');var Redis=require(_0x9e83('0x3'));var db=require(_0x9e83('0x4'))['db'];var utils=require(_0x9e83('0x5'));var logger=require(_0x9e83('0x6'))('rpc');var config=require(_0x9e83('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9e83('0x8')][_0x9e83('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3579e0,_0x3bbd48,_0x11bd3f){return new BPromise(function(_0x39c26a,_0x1a0e2a){return client[_0x9e83('0xa')](_0x3579e0,_0x11bd3f)[_0x9e83('0xb')](function(_0x12281a){logger[_0x9e83('0xc')](_0x9e83('0xd'),_0x3bbd48,'request\x20sent');logger['debug'](_0x9e83('0xe'),_0x3bbd48,_0x9e83('0xf'),JSON['stringify'](_0x12281a));if(_0x12281a[_0x9e83('0x10')]){if(_0x12281a[_0x9e83('0x10')]['code']===0x1f4){logger[_0x9e83('0x10')](_0x9e83('0xd'),_0x3bbd48,_0x12281a['error']['message']);return _0x1a0e2a(_0x12281a[_0x9e83('0x10')]['message']);}logger[_0x9e83('0x10')]('VoiceAgentReport,\x20%s,\x20%s',_0x3bbd48,_0x12281a[_0x9e83('0x10')][_0x9e83('0x11')]);return _0x39c26a(_0x12281a[_0x9e83('0x10')][_0x9e83('0x11')]);}else{logger[_0x9e83('0xc')](_0x9e83('0xd'),_0x3bbd48,_0x9e83('0xf'));_0x39c26a(_0x12281a[_0x9e83('0x12')][_0x9e83('0x11')]);}})['catch'](function(_0x3de17c){logger[_0x9e83('0x10')](_0x9e83('0xd'),_0x3bbd48,_0x3de17c);_0x1a0e2a(_0x3de17c);});});}exports[_0x9e83('0x13')]=function(_0x5ac4bd){var _0x535507=this;return new Promise(function(_0xfd5ce8,_0x1b4e34){return db['VoiceAgentReport'][_0x9e83('0x14')](_0x5ac4bd[_0x9e83('0x15')],{'raw':_0x5ac4bd[_0x9e83('0x16')]?_0x5ac4bd[_0x9e83('0x16')][_0x9e83('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x42200b){logger[_0x9e83('0xc')]('CreateVoiceAgentReport',_0x5ac4bd);logger['debug']('CreateVoiceAgentReport',_0x5ac4bd,JSON[_0x9e83('0x18')](_0x42200b));_0xfd5ce8(_0x42200b);})['catch'](function(_0x2987c5){logger[_0x9e83('0x10')]('CreateVoiceAgentReport',_0x2987c5[_0x9e83('0x11')],_0x5ac4bd);_0x1b4e34(_0x535507[_0x9e83('0x10')](0x1f4,_0x2987c5[_0x9e83('0x11')]));});});};exports['UpdateVoiceAgentReport']=function(_0x3dec27){var _0x415ca9=this;return new Promise(function(_0x81775d,_0x4f752c){return db[_0x9e83('0x19')]['update'](_0x3dec27[_0x9e83('0x15')],{'raw':_0x3dec27[_0x9e83('0x16')]?_0x3dec27['options'][_0x9e83('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3dec27['options']?_0x3dec27['options'][_0x9e83('0x1a')]||null:null,'attributes':_0x3dec27[_0x9e83('0x16')]?_0x3dec27[_0x9e83('0x16')]['attributes']||null:null,'limit':_0x3dec27[_0x9e83('0x16')]?_0x3dec27[_0x9e83('0x16')][_0x9e83('0x1b')]||null:null})['then'](function(_0x2df263){logger[_0x9e83('0xc')](_0x9e83('0x1c'),_0x3dec27);logger[_0x9e83('0x1d')](_0x9e83('0x1c'),_0x3dec27,JSON[_0x9e83('0x18')](_0x2df263));_0x81775d(_0x2df263);})['catch'](function(_0x26e1d3){logger[_0x9e83('0x10')](_0x9e83('0x1c'),_0x26e1d3[_0x9e83('0x11')],_0x3dec27);_0x4f752c(_0x415ca9[_0x9e83('0x10')](0x1f4,_0x26e1d3[_0x9e83('0x11')]));});});};
\ No newline at end of file
+var _0x0777=['where','attributes','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','then','stringify','UpdateVoiceAgentReport','raw'];(function(_0xbff18d,_0x26ec43){var _0x3b841c=function(_0x5ab79f){while(--_0x5ab79f){_0xbff18d['push'](_0xbff18d['shift']());}};_0x3b841c(++_0x26ec43);}(_0x0777,0xa2));var _0x7077=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0x0777[_0x1f9f37];return _0x21c080;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7077('0x0'));var BPromise=require(_0x7077('0x1'));var rs=require(_0x7077('0x2'));var fs=require('fs');var Redis=require(_0x7077('0x3'));var db=require(_0x7077('0x4'))['db'];var utils=require(_0x7077('0x5'));var logger=require(_0x7077('0x6'))('rpc');var config=require(_0x7077('0x7'));var jayson=require(_0x7077('0x8'));var client=jayson['client'][_0x7077('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1512f7,_0x2d365a,_0x35fdec){return new BPromise(function(_0x1a14ef,_0x2b76eb){return client[_0x7077('0xa')](_0x1512f7,_0x35fdec)['then'](function(_0x36ae15){logger[_0x7077('0xb')](_0x7077('0xc'),_0x2d365a,_0x7077('0xd'));logger[_0x7077('0xe')](_0x7077('0xf'),_0x2d365a,_0x7077('0xd'),JSON['stringify'](_0x36ae15));if(_0x36ae15[_0x7077('0x10')]){if(_0x36ae15[_0x7077('0x10')][_0x7077('0x11')]===0x1f4){logger[_0x7077('0x10')]('VoiceAgentReport,\x20%s,\x20%s',_0x2d365a,_0x36ae15[_0x7077('0x10')][_0x7077('0x12')]);return _0x2b76eb(_0x36ae15[_0x7077('0x10')][_0x7077('0x12')]);}logger['error'](_0x7077('0xc'),_0x2d365a,_0x36ae15[_0x7077('0x10')]['message']);return _0x1a14ef(_0x36ae15['error'][_0x7077('0x12')]);}else{logger[_0x7077('0xb')](_0x7077('0xc'),_0x2d365a,_0x7077('0xd'));_0x1a14ef(_0x36ae15[_0x7077('0x13')][_0x7077('0x12')]);}})[_0x7077('0x14')](function(_0x2a1fc9){logger[_0x7077('0x10')](_0x7077('0xc'),_0x2d365a,_0x2a1fc9);_0x2b76eb(_0x2a1fc9);});});}exports[_0x7077('0x15')]=function(_0x45f94d){var _0x4f7427=this;return new Promise(function(_0x3963a3,_0x4c226a){return db[_0x7077('0x16')][_0x7077('0x17')](_0x45f94d[_0x7077('0x18')],{'raw':_0x45f94d[_0x7077('0x19')]?_0x45f94d['options']['raw']===undefined?!![]:![]:!![]})[_0x7077('0x1a')](function(_0x56122e){logger['info'](_0x7077('0x15'),_0x45f94d);logger[_0x7077('0xe')](_0x7077('0x15'),_0x45f94d,JSON[_0x7077('0x1b')](_0x56122e));_0x3963a3(_0x56122e);})[_0x7077('0x14')](function(_0x28380a){logger[_0x7077('0x10')](_0x7077('0x15'),_0x28380a[_0x7077('0x12')],_0x45f94d);_0x4c226a(_0x4f7427['error'](0x1f4,_0x28380a[_0x7077('0x12')]));});});};exports[_0x7077('0x1c')]=function(_0x1384e1){var _0x43a4ab=this;return new Promise(function(_0x5810de,_0x739a90){return db[_0x7077('0x16')]['update'](_0x1384e1[_0x7077('0x18')],{'raw':_0x1384e1[_0x7077('0x19')]?_0x1384e1[_0x7077('0x19')][_0x7077('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1384e1[_0x7077('0x19')]?_0x1384e1['options'][_0x7077('0x1e')]||null:null,'attributes':_0x1384e1['options']?_0x1384e1['options'][_0x7077('0x1f')]||null:null,'limit':_0x1384e1[_0x7077('0x19')]?_0x1384e1[_0x7077('0x19')]['limit']||null:null})[_0x7077('0x1a')](function(_0x3dc32a){logger[_0x7077('0xb')]('UpdateVoiceAgentReport',_0x1384e1);logger[_0x7077('0xe')](_0x7077('0x1c'),_0x1384e1,JSON[_0x7077('0x1b')](_0x3dc32a));_0x5810de(_0x3dc32a);})[_0x7077('0x14')](function(_0x39d5cd){logger['error'](_0x7077('0x1c'),_0x39d5cd[_0x7077('0x12')],_0x1384e1);_0x739a90(_0x43a4ab[_0x7077('0x10')](0x1f4,_0x39d5cd[_0x7077('0x12')]));});});};
\ No newline at end of file
index 9b323fb..b08bc95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc97=['get','isAuthenticated','describe','/:id','show','create','put','update','delete','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./voiceCallReport.controller'];(function(_0x5c08cb,_0x456960){var _0x147907=function(_0x1da1be){while(--_0x1da1be){_0x5c08cb['push'](_0x5c08cb['shift']());}};_0x147907(++_0x456960);}(_0xdc97,0x13b));var _0x7dc9=function(_0x5749c0,_0x34e97b){_0x5749c0=_0x5749c0-0x0;var _0x30adae=_0xdc97[_0x5749c0];return _0x30adae;};'use strict';var multer=require(_0x7dc9('0x0'));var util=require(_0x7dc9('0x1'));var path=require(_0x7dc9('0x2'));var timeout=require('connect-timeout');var express=require(_0x7dc9('0x3'));var router=express['Router']();var fs_extra=require(_0x7dc9('0x4'));var auth=require(_0x7dc9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7dc9('0x6'));var controller=require(_0x7dc9('0x7'));router[_0x7dc9('0x8')]('/',auth[_0x7dc9('0x9')](),controller['index']);router[_0x7dc9('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x7dc9('0xa')]);router[_0x7dc9('0x8')](_0x7dc9('0xb'),auth[_0x7dc9('0x9')](),controller[_0x7dc9('0xc')]);router['post']('/',auth[_0x7dc9('0x9')](),controller[_0x7dc9('0xd')]);router[_0x7dc9('0xe')](_0x7dc9('0xb'),auth[_0x7dc9('0x9')](),controller[_0x7dc9('0xf')]);router[_0x7dc9('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x6737=['isAuthenticated','index','get','show','create','put','update','/:id','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceCallReport.controller'];(function(_0x13d9e5,_0x3cc61c){var _0x1e9e97=function(_0x479c5c){while(--_0x479c5c){_0x13d9e5['push'](_0x13d9e5['shift']());}};_0x1e9e97(++_0x3cc61c);}(_0x6737,0xe2));var _0x7673=function(_0x8ff7ca,_0x2fe4d3){_0x8ff7ca=_0x8ff7ca-0x0;var _0x26da21=_0x6737[_0x8ff7ca];return _0x26da21;};'use strict';var multer=require('multer');var util=require(_0x7673('0x0'));var path=require(_0x7673('0x1'));var timeout=require('connect-timeout');var express=require(_0x7673('0x2'));var router=express[_0x7673('0x3')]();var fs_extra=require(_0x7673('0x4'));var auth=require(_0x7673('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7673('0x6'));var controller=require(_0x7673('0x7'));router['get']('/',auth[_0x7673('0x8')](),controller[_0x7673('0x9')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x7673('0xa')]('/:id',auth[_0x7673('0x8')](),controller[_0x7673('0xb')]);router['post']('/',auth[_0x7673('0x8')](),controller[_0x7673('0xc')]);router[_0x7673('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x7673('0xe')]);router['delete'](_0x7673('0xf'),auth[_0x7673('0x8')](),controller[_0x7673('0x10')]);module[_0x7673('0x11')]=router;
\ No newline at end of file
index f401b27..1cb07f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c4d=['internal','outbound','inbound-fax','outbound-fax','dialer','DATE','INTEGER','sequelize','STRING','inbound'];(function(_0x7b9ac9,_0x5e7091){var _0x1af059=function(_0x5d7289){while(--_0x5d7289){_0x7b9ac9['push'](_0x7b9ac9['shift']());}};_0x1af059(++_0x5e7091);}(_0x6c4d,0x1dd));var _0xd6c4=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x6c4d[_0x37bd26];return _0xe83dc4;};'use strict';var Sequelize=require(_0xd6c4('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xd6c4('0x1')]},'type':{'type':Sequelize['ENUM'](_0xd6c4('0x2'),_0xd6c4('0x3'),_0xd6c4('0x4'),_0xd6c4('0x5'),_0xd6c4('0x6'),_0xd6c4('0x7'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xd6c4('0x1')]},'source':{'type':Sequelize[_0xd6c4('0x1')]},'destination':{'type':Sequelize[_0xd6c4('0x1')]},'destinationcontext':{'type':Sequelize[_0xd6c4('0x1')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xd6c4('0x1')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0xd6c4('0x8')]},'systemanswertime':{'type':Sequelize[_0xd6c4('0x8')]},'answertime':{'type':Sequelize[_0xd6c4('0x8')]},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize[_0xd6c4('0x9')]},'billableseconds':{'type':Sequelize[_0xd6c4('0x9')]},'mohtime':{'type':Sequelize[_0xd6c4('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xd6c4('0x1')]},'amaflags':{'type':Sequelize[_0xd6c4('0x1')]},'userfield':{'type':Sequelize[_0xd6c4('0x1')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0xd6c4('0x1')]},'userThirdDisposition':{'type':Sequelize[_0xd6c4('0x1')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xd6c4('0x1')]},'routeid':{'type':Sequelize[_0xd6c4('0x9')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x53e6=['sequelize','exports','STRING','ENUM','inbound','outbound','DATE','INTEGER'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x53e6,0x178));var _0x653e=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x53e6[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require(_0x653e('0x0'));module[_0x653e('0x1')]={'uniqueid':{'type':Sequelize[_0x653e('0x2')]},'type':{'type':Sequelize[_0x653e('0x3')](_0x653e('0x4'),'internal',_0x653e('0x5'),'inbound-fax','outbound-fax','dialer')},'tag':{'type':Sequelize[_0x653e('0x2')]},'accountcode':{'type':Sequelize[_0x653e('0x2')]},'source':{'type':Sequelize[_0x653e('0x2')]},'destination':{'type':Sequelize[_0x653e('0x2')]},'destinationcontext':{'type':Sequelize[_0x653e('0x2')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x653e('0x2')]},'destinationchannel':{'type':Sequelize[_0x653e('0x2')]},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0x653e('0x6')]},'systemanswertime':{'type':Sequelize[_0x653e('0x6')]},'answertime':{'type':Sequelize[_0x653e('0x6')]},'endtime':{'type':Sequelize[_0x653e('0x6')]},'duration':{'type':Sequelize[_0x653e('0x7')]},'billableseconds':{'type':Sequelize[_0x653e('0x7')]},'mohtime':{'type':Sequelize[_0x653e('0x7')],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x653e('0x2')]},'userfield':{'type':Sequelize[_0x653e('0x2')]},'userDisposition':{'type':Sequelize[_0x653e('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x653e('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x653e('0x2')]},'note':{'type':Sequelize[_0x653e('0x2')]},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize[_0x653e('0x7')]},'sipcallid':{'type':Sequelize[_0x653e('0x2')]}};
\ No newline at end of file
index 972e90a..11cedfa 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(_0x209ec9,_0x30378c){var _0x129b1b=function(_0x2f2b9e){while(--_0x2f2b9e){_0x209ec9['push'](_0x209ec9['shift']());}};_0x129b1b(++_0x30378c);}(_0x2ef3,0xba));var _0x32ef=function(_0x45bbf7,_0x46dc88){_0x45bbf7=_0x45bbf7-0x0;var _0x8381b6=_0x2ef3[_0x45bbf7];return _0x8381b6;};'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 _0x0b0e=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','VoiceCallReport','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','count','includeAll','fullname','alias','User','findAll','rows','params','find','create','body','catch','describe','update','uniqueid','user','eml-format','zip-dir','request-promise','moment'];(function(_0x25bafc,_0x42b76d){var _0x426b4d=function(_0x1d2ab3){while(--_0x1d2ab3){_0x25bafc['push'](_0x25bafc['shift']());}};_0x426b4d(++_0x42b76d);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4a93bb,_0x495404){_0x4a93bb=_0x4a93bb-0x0;var _0x208468=_0x0b0e[_0x4a93bb];return _0x208468;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e5c88,_0x4de537){return function(_0x4700cc){if(!_0x4700cc){_0x3e5c88['sendStatus'](0x194);}return _0x4700cc;};}function handleError(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0x1f4;return function(_0x362aba){logger[_0xe0b0('0x25')](_0x362aba[_0xe0b0('0x26')]);if(_0x362aba[_0xe0b0('0x27')]){delete _0x362aba[_0xe0b0('0x27')];}_0x3c221d[_0xe0b0('0x1a')](_0x5c5317)['send'](_0x362aba);};}exports[_0xe0b0('0x28')]=function(_0x1b8aa8,_0x5b7a64){var _0x15e13b={},_0x419b1f={},_0x36d137={'count':0x0,'rows':[]};var _0x1d5759=_[_0xe0b0('0x29')](db[_0xe0b0('0x2a')][_0xe0b0('0x2b')],function(_0x4fb3b7){return{'name':_0x4fb3b7[_0xe0b0('0x2c')],'type':_0x4fb3b7[_0xe0b0('0x2d')]['key']};});_0x419b1f['model']=_[_0xe0b0('0x29')](_0x1d5759,_0xe0b0('0x27'));_0x419b1f[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x1b8aa8[_0xe0b0('0x2e')]);_0x419b1f['filters']=_[_0xe0b0('0x30')](_0x419b1f[_0xe0b0('0x31')],_0x419b1f[_0xe0b0('0x2e')]);_0x15e13b[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x419b1f['model'],qs[_0xe0b0('0x33')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x15e13b[_0xe0b0('0x32')]=_0x15e13b[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x15e13b[_0xe0b0('0x32')]:_0x419b1f[_0xe0b0('0x31')];if(!_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x35')](_0xe0b0('0x36'))){_0x15e13b[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1d')]);_0x15e13b['offset']=qs[_0xe0b0('0x1c')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1c')]);}_0x15e13b[_0xe0b0('0x37')]=qs[_0xe0b0('0x38')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x38')]);_0x15e13b['where']=qs['filters'](_['pick'](_0x1b8aa8['query'],_0x419b1f[_0xe0b0('0x39')]),_0x1d5759);if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]){_0x15e13b['where']=_[_0xe0b0('0x3b')](_0x15e13b[_0xe0b0('0x3c')],{'$or':_[_0xe0b0('0x29')](_0x1d5759,function(_0x297c64){if(_0x297c64['type']!==_0xe0b0('0x3d')){var _0xfbb61d={};_0xfbb61d[_0x297c64[_0xe0b0('0x27')]]={'$like':'%'+_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]+'%'};return _0xfbb61d;}})});}_0x15e13b=_[_0xe0b0('0x3b')]({},_0x15e13b,_0x1b8aa8[_0xe0b0('0x3e')]);var _0x115a69={'where':_0x15e13b[_0xe0b0('0x3c')]};return db['VoiceCallReport'][_0xe0b0('0x3f')](_0x115a69)['then'](function(_0x34178d){_0x36d137[_0xe0b0('0x3f')]=_0x34178d;if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x15e13b['include']=[{'attributes':['id',_0xe0b0('0x27'),_0xe0b0('0x41'),_0xe0b0('0x42')],'model':db[_0xe0b0('0x43')],'as':_0xe0b0('0x43')}];}return db[_0xe0b0('0x2a')][_0xe0b0('0x44')](_0x15e13b);})[_0xe0b0('0x23')](function(_0x52ffe4){_0x36d137[_0xe0b0('0x45')]=_0x52ffe4;return _0x36d137;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x5b7a64,_0x15e13b))['catch'](handleError(_0x5b7a64,null));};exports['show']=function(_0x327fb4,_0x247f8d){var _0x56e7df={'raw':!![],'where':{'id':_0x327fb4[_0xe0b0('0x46')]['id']}},_0x18a59d={};_0x18a59d[_0xe0b0('0x31')]=_[_0xe0b0('0x2f')](db[_0xe0b0('0x2a')]['rawAttributes']);_0x18a59d['query']=_['keys'](_0x327fb4[_0xe0b0('0x2e')]);_0x18a59d[_0xe0b0('0x39')]=_['intersection'](_0x18a59d[_0xe0b0('0x31')],_0x18a59d[_0xe0b0('0x2e')]);_0x56e7df[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x18a59d[_0xe0b0('0x31')],qs['fields'](_0x327fb4['query'][_0xe0b0('0x33')]));_0x56e7df[_0xe0b0('0x32')]=_0x56e7df[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x56e7df[_0xe0b0('0x32')]:_0x18a59d['model'];if(_0x327fb4[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x56e7df['include']=[{'all':!![]}];}_0x56e7df=_['merge']({},_0x56e7df,_0x327fb4['options']);return db[_0xe0b0('0x2a')][_0xe0b0('0x47')](_0x56e7df)[_0xe0b0('0x23')](handleEntityNotFound(_0x247f8d,null))[_0xe0b0('0x23')](respondWithResult(_0x247f8d,null))['catch'](handleError(_0x247f8d,null));};exports[_0xe0b0('0x48')]=function(_0x87d8f3,_0x483f12){return db['VoiceCallReport'][_0xe0b0('0x48')](_0x87d8f3[_0xe0b0('0x49')],{})['then'](respondWithResult(_0x483f12,0xc9))[_0xe0b0('0x4a')](handleError(_0x483f12,null));};exports[_0xe0b0('0x24')]=function(_0x504284,_0x5cb2b6){return db[_0xe0b0('0x2a')]['find']({'where':{'id':_0x504284[_0xe0b0('0x46')]['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x5cb2b6,null))[_0xe0b0('0x23')](removeEntity(_0x5cb2b6,null))[_0xe0b0('0x4a')](handleError(_0x5cb2b6,null));};exports[_0xe0b0('0x4b')]=function(_0xf9e694,_0x5f5486){return db['VoiceCallReport'][_0xe0b0('0x4b')]()['then'](respondWithResult(_0x5f5486,null))['catch'](handleError(_0x5f5486,null));};exports[_0xe0b0('0x4c')]=function(_0x222174,_0x54cf7b){if(_0x222174['body'][_0xe0b0('0x4d')]){delete _0x222174[_0xe0b0('0x49')][_0xe0b0('0x4d')];}return db[_0xe0b0('0x2a')][_0xe0b0('0x47')]({'where':{'uniqueid':_0x222174[_0xe0b0('0x46')]['id'],'UserId':{'$or':[null,_0x222174[_0xe0b0('0x4e')]['id']]}}})['then'](handleEntityNotFound(_0x54cf7b,null))[_0xe0b0('0x23')](saveUpdates(_0x222174['body'],null))[_0xe0b0('0x23')](respondWithResult(_0x54cf7b,null))['catch'](handleError(_0x54cf7b,null));};
\ No newline at end of file
index c9b482d..8e319d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d4d=['../../config/environment','./voiceCallReport.attributes','exports','VoiceCallReport','uniqueid','lodash','moment','bluebird','request-promise','path','rimraf'];(function(_0x3ddb02,_0x184ada){var _0x52b85f=function(_0xc7f427){while(--_0xc7f427){_0x3ddb02['push'](_0x3ddb02['shift']());}};_0x52b85f(++_0x184ada);}(_0x2d4d,0x94));var _0xd2d4=function(_0x4fabaf,_0x55a0a7){_0x4fabaf=_0x4fabaf-0x0;var _0x98139a=_0x2d4d[_0x4fabaf];return _0x98139a;};'use strict';var _=require(_0xd2d4('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xd2d4('0x1'));var BPromise=require(_0xd2d4('0x2'));var rp=require(_0xd2d4('0x3'));var fs=require('fs');var path=require(_0xd2d4('0x4'));var rimraf=require(_0xd2d4('0x5'));var config=require(_0xd2d4('0x6'));var attributes=require(_0xd2d4('0x7'));module[_0xd2d4('0x8')]=function(_0x47006c,_0x471003){return _0x47006c['define'](_0xd2d4('0x9'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0xd2d4('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x33bb=['path','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','lodash','util','api','moment','request-promise'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x33bb,0x8b));var _0xb33b=function(_0x2988c0,_0x5c2414){_0x2988c0=_0x2988c0-0x0;var _0x22a8b4=_0x33bb[_0x2988c0];return _0x22a8b4;};'use strict';var _=require(_0xb33b('0x0'));var util=require(_0xb33b('0x1'));var logger=require('../../config/logger')(_0xb33b('0x2'));var moment=require(_0xb33b('0x3'));var BPromise=require('bluebird');var rp=require(_0xb33b('0x4'));var fs=require('fs');var path=require(_0xb33b('0x5'));var rimraf=require('rimraf');var config=require(_0xb33b('0x6'));var attributes=require(_0xb33b('0x7'));module[_0xb33b('0x8')]=function(_0x383f2d,_0x56a94e){return _0x383f2d[_0xb33b('0x9')](_0xb33b('0xa'),attributes,{'tableName':_0xb33b('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index d2b2e90..abd7c5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8ca=['request\x20sent','debug','stringify','error','code','message','VoiceCallReport,\x20%s,\x20%s','info','result','VoiceCallReport','options','raw','where','attributes','limit','include','map','model','GetVoiceCallReport','catch','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','update','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','request','then'];(function(_0x2723f3,_0x571ce6){var _0x2da006=function(_0x420110){while(--_0x420110){_0x2723f3['push'](_0x2723f3['shift']());}};_0x2da006(++_0x571ce6);}(_0xc8ca,0x1ed));var _0xac8c=function(_0x4346a8,_0x2dd8e2){_0x4346a8=_0x4346a8-0x0;var _0x287ceb=_0xc8ca[_0x4346a8];return _0x287ceb;};'use strict';var _=require(_0xac8c('0x0'));var util=require(_0xac8c('0x1'));var moment=require('moment');var BPromise=require(_0xac8c('0x2'));var rs=require(_0xac8c('0x3'));var fs=require('fs');var Redis=require(_0xac8c('0x4'));var db=require(_0xac8c('0x5'))['db'];var utils=require(_0xac8c('0x6'));var logger=require('../../config/logger')(_0xac8c('0x7'));var config=require(_0xac8c('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1d1378,_0x16f46b,_0x3c677a){return new BPromise(function(_0x22fc1a,_0x1c522c){return client[_0xac8c('0x9')](_0x1d1378,_0x3c677a)[_0xac8c('0xa')](function(_0x1f86f0){logger['info']('VoiceCallReport,\x20%s,\x20%s',_0x16f46b,_0xac8c('0xb'));logger[_0xac8c('0xc')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x16f46b,'request\x20sent',JSON[_0xac8c('0xd')](_0x1f86f0));if(_0x1f86f0[_0xac8c('0xe')]){if(_0x1f86f0[_0xac8c('0xe')][_0xac8c('0xf')]===0x1f4){logger[_0xac8c('0xe')]('VoiceCallReport,\x20%s,\x20%s',_0x16f46b,_0x1f86f0[_0xac8c('0xe')][_0xac8c('0x10')]);return _0x1c522c(_0x1f86f0[_0xac8c('0xe')][_0xac8c('0x10')]);}logger[_0xac8c('0xe')](_0xac8c('0x11'),_0x16f46b,_0x1f86f0[_0xac8c('0xe')]['message']);return _0x22fc1a(_0x1f86f0[_0xac8c('0xe')][_0xac8c('0x10')]);}else{logger[_0xac8c('0x12')](_0xac8c('0x11'),_0x16f46b,_0xac8c('0xb'));_0x22fc1a(_0x1f86f0[_0xac8c('0x13')][_0xac8c('0x10')]);}})['catch'](function(_0x8573f9){logger[_0xac8c('0xe')](_0xac8c('0x11'),_0x16f46b,_0x8573f9);_0x1c522c(_0x8573f9);});});}exports['GetVoiceCallReport']=function(_0x176027){var _0x3225ba=this;return new Promise(function(_0x3941d8,_0x4deec4){return db[_0xac8c('0x14')]['findAll']({'raw':_0x176027[_0xac8c('0x15')]?_0x176027[_0xac8c('0x15')][_0xac8c('0x16')]===undefined?!![]:![]:!![],'where':_0x176027[_0xac8c('0x15')]?_0x176027['options'][_0xac8c('0x17')]||null:null,'attributes':_0x176027['options']?_0x176027[_0xac8c('0x15')][_0xac8c('0x18')]||null:null,'limit':_0x176027[_0xac8c('0x15')]?_0x176027[_0xac8c('0x15')][_0xac8c('0x19')]||null:null,'include':_0x176027[_0xac8c('0x15')]?_0x176027['options'][_0xac8c('0x1a')]?_[_0xac8c('0x1b')](_0x176027[_0xac8c('0x15')][_0xac8c('0x1a')],function(_0x454bc6){return{'model':db[_0x454bc6[_0xac8c('0x1c')]],'as':_0x454bc6['as'],'attributes':_0x454bc6[_0xac8c('0x18')],'include':_0x454bc6[_0xac8c('0x1a')]?_[_0xac8c('0x1b')](_0x454bc6['include'],function(_0x7ca7d9){return{'model':db[_0x7ca7d9['model']],'as':_0x7ca7d9['as'],'attributes':_0x7ca7d9['attributes'],'include':_0x7ca7d9[_0xac8c('0x1a')]?_['map'](_0x7ca7d9['include'],function(_0x4ad462){return{'model':db[_0x4ad462[_0xac8c('0x1c')]],'as':_0x4ad462['as'],'attributes':_0x4ad462['attributes']};}):[]};}):[]};}):[]:[]})[_0xac8c('0xa')](function(_0x2f758f){logger[_0xac8c('0x12')](_0xac8c('0x1d'),_0x176027);logger[_0xac8c('0xc')](_0xac8c('0x1d'),_0x176027,JSON[_0xac8c('0xd')](_0x2f758f));_0x3941d8(_0x2f758f);})[_0xac8c('0x1e')](function(_0x48015e){logger[_0xac8c('0xe')](_0xac8c('0x1d'),_0x48015e[_0xac8c('0x10')],_0x176027);_0x4deec4(_0x3225ba['error'](0x1f4,_0x48015e[_0xac8c('0x10')]));});});};exports[_0xac8c('0x1f')]=function(_0x3a7c6b){var _0x14a399=this;return new Promise(function(_0x1bc75c,_0x366014){return db['VoiceCallReport'][_0xac8c('0x20')](_0x3a7c6b[_0xac8c('0x21')],{'raw':_0x3a7c6b[_0xac8c('0x15')]?_0x3a7c6b[_0xac8c('0x15')][_0xac8c('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0xe3e483){logger['info'](_0xac8c('0x1f'),_0x3a7c6b);logger['debug'](_0xac8c('0x1f'),_0x3a7c6b,JSON['stringify'](_0xe3e483));_0x1bc75c(_0xe3e483);})['catch'](function(_0x5b83c9){logger['error'](_0xac8c('0x1f'),_0x5b83c9[_0xac8c('0x10')],_0x3a7c6b);_0x366014(_0x14a399[_0xac8c('0xe')](0x1f4,_0x5b83c9[_0xac8c('0x10')]));});});};exports[_0xac8c('0x22')]=function(_0x258b87){var _0x4a8412=this;return new Promise(function(_0x5d0790,_0x4736b1){return db['VoiceCallReport'][_0xac8c('0x23')](_0x258b87[_0xac8c('0x21')],{'raw':_0x258b87['options']?_0x258b87[_0xac8c('0x15')][_0xac8c('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x258b87[_0xac8c('0x15')]?_0x258b87[_0xac8c('0x15')][_0xac8c('0x17')]||null:null,'attributes':_0x258b87[_0xac8c('0x15')]?_0x258b87[_0xac8c('0x15')][_0xac8c('0x18')]||null:null,'limit':_0x258b87[_0xac8c('0x15')]?_0x258b87['options'][_0xac8c('0x19')]||null:null})[_0xac8c('0xa')](function(_0x29b9d4){logger['info'](_0xac8c('0x22'),_0x258b87);logger['debug'](_0xac8c('0x22'),_0x258b87,JSON[_0xac8c('0xd')](_0x29b9d4));_0x5d0790(_0x29b9d4);})['catch'](function(_0x494233){logger[_0xac8c('0xe')](_0xac8c('0x22'),_0x494233[_0xac8c('0x10')],_0x258b87);_0x4736b1(_0x4a8412[_0xac8c('0xe')](0x1f4,_0x494233[_0xac8c('0x10')]));});});};
\ No newline at end of file
+var _0x24fa=['update','where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','raw','options','attributes','limit','map','include','model','stringify','CreateVoiceCallReport','create','body','UpdateVoiceCallReport'];(function(_0x18cac4,_0x57a4d5){var _0x2227c6=function(_0x72934d){while(--_0x72934d){_0x18cac4['push'](_0x18cac4['shift']());}};_0x2227c6(++_0x57a4d5);}(_0x24fa,0x113));var _0xa24f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x24fa[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xa24f('0x0'));var util=require(_0xa24f('0x1'));var moment=require(_0xa24f('0x2'));var BPromise=require(_0xa24f('0x3'));var rs=require(_0xa24f('0x4'));var fs=require('fs');var Redis=require(_0xa24f('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa24f('0x6'))('rpc');var config=require(_0xa24f('0x7'));var jayson=require(_0xa24f('0x8'));var client=jayson[_0xa24f('0x9')][_0xa24f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2dc842,_0x17e2b3,_0x5aaa11){return new BPromise(function(_0x38c6af,_0x454166){return client['request'](_0x2dc842,_0x5aaa11)[_0xa24f('0xb')](function(_0x3be10f){logger[_0xa24f('0xc')](_0xa24f('0xd'),_0x17e2b3,_0xa24f('0xe'));logger[_0xa24f('0xf')](_0xa24f('0x10'),_0x17e2b3,'request\x20sent',JSON['stringify'](_0x3be10f));if(_0x3be10f['error']){if(_0x3be10f['error'][_0xa24f('0x11')]===0x1f4){logger['error'](_0xa24f('0xd'),_0x17e2b3,_0x3be10f['error']['message']);return _0x454166(_0x3be10f[_0xa24f('0x12')][_0xa24f('0x13')]);}logger[_0xa24f('0x12')](_0xa24f('0xd'),_0x17e2b3,_0x3be10f['error']['message']);return _0x38c6af(_0x3be10f['error'][_0xa24f('0x13')]);}else{logger[_0xa24f('0xc')](_0xa24f('0xd'),_0x17e2b3,'request\x20sent');_0x38c6af(_0x3be10f[_0xa24f('0x14')][_0xa24f('0x13')]);}})[_0xa24f('0x15')](function(_0x3ef03e){logger['error'](_0xa24f('0xd'),_0x17e2b3,_0x3ef03e);_0x454166(_0x3ef03e);});});}exports[_0xa24f('0x16')]=function(_0x778f71){var _0x2bd964=this;return new Promise(function(_0x36603f,_0x2dfca8){return db[_0xa24f('0x17')][_0xa24f('0x18')]({'raw':_0x778f71['options']?_0x778f71['options'][_0xa24f('0x19')]===undefined?!![]:![]:!![],'where':_0x778f71['options']?_0x778f71[_0xa24f('0x1a')]['where']||null:null,'attributes':_0x778f71[_0xa24f('0x1a')]?_0x778f71[_0xa24f('0x1a')][_0xa24f('0x1b')]||null:null,'limit':_0x778f71[_0xa24f('0x1a')]?_0x778f71['options'][_0xa24f('0x1c')]||null:null,'include':_0x778f71[_0xa24f('0x1a')]?_0x778f71[_0xa24f('0x1a')]['include']?_[_0xa24f('0x1d')](_0x778f71[_0xa24f('0x1a')][_0xa24f('0x1e')],function(_0x3c9f61){return{'model':db[_0x3c9f61['model']],'as':_0x3c9f61['as'],'attributes':_0x3c9f61['attributes'],'include':_0x3c9f61[_0xa24f('0x1e')]?_[_0xa24f('0x1d')](_0x3c9f61['include'],function(_0x149bdc){return{'model':db[_0x149bdc['model']],'as':_0x149bdc['as'],'attributes':_0x149bdc[_0xa24f('0x1b')],'include':_0x149bdc[_0xa24f('0x1e')]?_[_0xa24f('0x1d')](_0x149bdc[_0xa24f('0x1e')],function(_0x66194c){return{'model':db[_0x66194c[_0xa24f('0x1f')]],'as':_0x66194c['as'],'attributes':_0x66194c[_0xa24f('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xa24f('0xb')](function(_0x13e0e0){logger[_0xa24f('0xc')](_0xa24f('0x16'),_0x778f71);logger[_0xa24f('0xf')](_0xa24f('0x16'),_0x778f71,JSON[_0xa24f('0x20')](_0x13e0e0));_0x36603f(_0x13e0e0);})[_0xa24f('0x15')](function(_0x414029){logger[_0xa24f('0x12')](_0xa24f('0x16'),_0x414029['message'],_0x778f71);_0x2dfca8(_0x2bd964[_0xa24f('0x12')](0x1f4,_0x414029['message']));});});};exports[_0xa24f('0x21')]=function(_0x45ddbd){var _0x2132a2=this;return new Promise(function(_0x40f9a6,_0x4bb9d3){return db[_0xa24f('0x17')][_0xa24f('0x22')](_0x45ddbd[_0xa24f('0x23')],{'raw':_0x45ddbd[_0xa24f('0x1a')]?_0x45ddbd[_0xa24f('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xa24f('0xb')](function(_0x1cd0a8){logger[_0xa24f('0xc')](_0xa24f('0x21'),_0x45ddbd);logger[_0xa24f('0xf')]('CreateVoiceCallReport',_0x45ddbd,JSON['stringify'](_0x1cd0a8));_0x40f9a6(_0x1cd0a8);})[_0xa24f('0x15')](function(_0x5faeed){logger[_0xa24f('0x12')](_0xa24f('0x21'),_0x5faeed[_0xa24f('0x13')],_0x45ddbd);_0x4bb9d3(_0x2132a2[_0xa24f('0x12')](0x1f4,_0x5faeed[_0xa24f('0x13')]));});});};exports[_0xa24f('0x24')]=function(_0x75e6d8){var _0x2da0f1=this;return new Promise(function(_0x3dafee,_0x7bd545){return db[_0xa24f('0x17')][_0xa24f('0x25')](_0x75e6d8[_0xa24f('0x23')],{'raw':_0x75e6d8[_0xa24f('0x1a')]?_0x75e6d8[_0xa24f('0x1a')][_0xa24f('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x75e6d8['options']?_0x75e6d8[_0xa24f('0x1a')][_0xa24f('0x26')]||null:null,'attributes':_0x75e6d8[_0xa24f('0x1a')]?_0x75e6d8[_0xa24f('0x1a')][_0xa24f('0x1b')]||null:null,'limit':_0x75e6d8['options']?_0x75e6d8[_0xa24f('0x1a')]['limit']||null:null})[_0xa24f('0xb')](function(_0x13df33){logger['info']('UpdateVoiceCallReport',_0x75e6d8);logger[_0xa24f('0xf')]('UpdateVoiceCallReport',_0x75e6d8,JSON[_0xa24f('0x20')](_0x13df33));_0x3dafee(_0x13df33);})['catch'](function(_0x21bf19){logger['error'](_0xa24f('0x24'),_0x21bf19['message'],_0x75e6d8);_0x7bd545(_0x2da0f1['error'](0x1f4,_0x21bf19[_0xa24f('0x13')]));});});};
\ No newline at end of file
index 6774c4e..bcebc05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaa7=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','/:id','isAuthenticated','show','post','update','delete','destroy','exports','util','connect-timeout','express'];(function(_0x367825,_0xba445e){var _0x17e0c2=function(_0x2a16cc){while(--_0x2a16cc){_0x367825['push'](_0x367825['shift']());}};_0x17e0c2(++_0xba445e);}(_0xbaa7,0x189));var _0x7baa=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xbaa7[_0x5bd426];return _0x23a7eb;};'use strict';var multer=require('multer');var util=require(_0x7baa('0x0'));var path=require('path');var timeout=require(_0x7baa('0x1'));var express=require(_0x7baa('0x2'));var router=express[_0x7baa('0x3')]();var fs_extra=require(_0x7baa('0x4'));var auth=require(_0x7baa('0x5'));var interaction=require(_0x7baa('0x6'));var config=require(_0x7baa('0x7'));var controller=require(_0x7baa('0x8'));router[_0x7baa('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7baa('0x9')](_0x7baa('0xa'),auth[_0x7baa('0xb')](),controller[_0x7baa('0xc')]);router[_0x7baa('0xd')]('/',auth[_0x7baa('0xb')](),controller['create']);router['put']('/:id',auth[_0x7baa('0xb')](),controller[_0x7baa('0xe')]);router[_0x7baa('0xf')](_0x7baa('0xa'),auth[_0x7baa('0xb')](),controller[_0x7baa('0x10')]);module[_0x7baa('0x11')]=router;
\ No newline at end of file
+var _0x9665=['../../components/auth/service','../../components/interaction/service','./voiceChanSpy.controller','get','isAuthenticated','index','show','create','put','/:id','update','destroy','exports','multer','util','connect-timeout','express','Router'];(function(_0x5d1572,_0x53c8c8){var _0x2360fd=function(_0x40074b){while(--_0x40074b){_0x5d1572['push'](_0x5d1572['shift']());}};_0x2360fd(++_0x53c8c8);}(_0x9665,0x13f));var _0x5966=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x9665[_0x160c73];return _0xd9302;};'use strict';var multer=require(_0x5966('0x0'));var util=require(_0x5966('0x1'));var path=require('path');var timeout=require(_0x5966('0x2'));var express=require(_0x5966('0x3'));var router=express[_0x5966('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5966('0x5'));var interaction=require(_0x5966('0x6'));var config=require('../../config/environment');var controller=require(_0x5966('0x7'));router[_0x5966('0x8')]('/',auth[_0x5966('0x9')](),controller[_0x5966('0xa')]);router[_0x5966('0x8')]('/:id',auth[_0x5966('0x9')](),controller[_0x5966('0xb')]);router['post']('/',auth[_0x5966('0x9')](),controller[_0x5966('0xc')]);router[_0x5966('0xd')](_0x5966('0xe'),auth[_0x5966('0x9')](),controller[_0x5966('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5966('0x10')]);module[_0x5966('0x11')]=router;
\ No newline at end of file
index 45cb6cb..93128a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f05=['setDataValue','options','join','getDataValue','BOOLEAN','sequelize','exports','STRING','name'];(function(_0x5190a7,_0x56d83e){var _0x1a1a77=function(_0x54ab6a){while(--_0x54ab6a){_0x5190a7['push'](_0x5190a7['shift']());}};_0x1a1a77(++_0x56d83e);}(_0x4f05,0xef));var _0x54f0=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x4f05[_0x21549c];return _0x426cbd;};'use strict';var Sequelize=require(_0x54f0('0x0'));module[_0x54f0('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x54f0('0x2')],'unique':_0x54f0('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x54f0('0x2')],'set':function(_0x36a25b){this[_0x54f0('0x4')](_0x54f0('0x5'),_0x36a25b?_0x36a25b[_0x54f0('0x6')](''):[]);},'get':function(){return this[_0x54f0('0x7')]('options')?this[_0x54f0('0x7')](_0x54f0('0x5'))['split'](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize[_0x54f0('0x2')]},'record':{'type':Sequelize[_0x54f0('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x54f0('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xda17=['exports','STRING','name','setDataValue','options','getDataValue','BOOLEAN','sequelize'];(function(_0x3c37f5,_0x464875){var _0x5c25d7=function(_0x5e0265){while(--_0x5e0265){_0x3c37f5['push'](_0x3c37f5['shift']());}};_0x5c25d7(++_0x464875);}(_0xda17,0x1bf));var _0x7da1=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xda17[_0x46aff0];return _0x9d78cf;};'use strict';var Sequelize=require(_0x7da1('0x0'));module[_0x7da1('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x7da1('0x2')],'unique':_0x7da1('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x7da1('0x2')],'set':function(_0x5d7d86){this[_0x7da1('0x4')](_0x7da1('0x5'),_0x5d7d86?_0x5d7d86['join'](''):[]);},'get':function(){return this[_0x7da1('0x6')](_0x7da1('0x5'))?this[_0x7da1('0x6')](_0x7da1('0x5'))['split'](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize[_0x7da1('0x2')]},'record':{'type':Sequelize[_0x7da1('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x7da1('0x2')]},'description':{'type':Sequelize[_0x7da1('0x2')]}};
\ No newline at end of file
index 88284ba..6af3d11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80fb=['rawAttributes','fieldName','type','map','keys','query','filters','intersection','model','attributes','fields','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','VoiceChanSpy','includeAll','findAll','rows','params','include','find','catch','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x80fb,0x11e));var _0xb80f=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0x80fb[_0x43d11d];return _0x38cd08;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb80f('0x0'));var zipdir=require(_0xb80f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb80f('0x2'));var moment=require(_0xb80f('0x3'));var BPromise=require(_0xb80f('0x4'));var Mustache=require(_0xb80f('0x5'));var util=require(_0xb80f('0x6'));var path=require(_0xb80f('0x7'));var sox=require(_0xb80f('0x8'));var csv=require(_0xb80f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb80f('0xa'));var _=require(_0xb80f('0xb'));var squel=require(_0xb80f('0xc'));var crypto=require(_0xb80f('0xd'));var jsforce=require(_0xb80f('0xe'));var deskjs=require(_0xb80f('0xf'));var toCsv=require(_0xb80f('0x9'));var querystring=require(_0xb80f('0x10'));var Papa=require(_0xb80f('0x11'));var Redis=require(_0xb80f('0x12'));var authService=require(_0xb80f('0x13'));var qs=require(_0xb80f('0x14'));var as=require(_0xb80f('0x15'));var hardwareService=require(_0xb80f('0x16'));var logger=require(_0xb80f('0x17'))(_0xb80f('0x18'));var utils=require('../../config/utils');var config=require(_0xb80f('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xb80f('0x1a'))['db'];function respondWithStatusCode(_0x391a0b,_0x13b5f4){_0x13b5f4=_0x13b5f4||0xcc;return function(_0x30e0c8){if(_0x30e0c8){return _0x391a0b[_0xb80f('0x1b')](_0x13b5f4);}return _0x391a0b[_0xb80f('0x1c')](_0x13b5f4)[_0xb80f('0x1d')]();};}function respondWithResult(_0x369fbe,_0x4686de){_0x4686de=_0x4686de||0xc8;return function(_0x205523){if(_0x205523){return _0x369fbe[_0xb80f('0x1c')](_0x4686de)[_0xb80f('0x1e')](_0x205523);}};}function respondWithFilteredResult(_0x40f815,_0x2af09b){return function(_0x30a126){if(_0x30a126){var _0x59cc1b=typeof _0x2af09b[_0xb80f('0x1f')]===_0xb80f('0x20')&&typeof _0x2af09b['limit']==='undefined';var _0x2fc77e=_0x30a126[_0xb80f('0x21')];var _0x6e017c=_0x59cc1b?0x0:_0x2af09b[_0xb80f('0x1f')];var _0x267f79=_0x59cc1b?_0x30a126[_0xb80f('0x21')]:_0x2af09b['offset']+_0x2af09b[_0xb80f('0x22')];var _0x361a0e;if(_0x267f79>=_0x2fc77e){_0x267f79=_0x2fc77e;_0x361a0e=0xc8;}else{_0x361a0e=0xce;}_0x40f815[_0xb80f('0x1c')](_0x361a0e);return _0x40f815[_0xb80f('0x23')](_0xb80f('0x24'),_0x6e017c+'-'+_0x267f79+'/'+_0x2fc77e)[_0xb80f('0x1e')](_0x30a126);}return null;};}function patchUpdates(_0x2d6550){return function(_0x3ad8a6){try{jsonpatch[_0xb80f('0x25')](_0x3ad8a6,_0x2d6550,!![]);}catch(_0x39a580){return BPromise[_0xb80f('0x26')](_0x39a580);}return _0x3ad8a6['save']();};}function saveUpdates(_0x2ad259,_0x5c6120){return function(_0x713bad){if(_0x713bad){return _0x713bad[_0xb80f('0x27')](_0x2ad259)['then'](function(_0x38a6cc){return _0x38a6cc;});}return null;};}function removeEntity(_0x2a9749,_0x4e46fa){return function(_0x52a032){if(_0x52a032){return _0x52a032[_0xb80f('0x28')]()[_0xb80f('0x29')](function(){var _0x1795e6=_0x52a032['get']({'plain':!![]});var _0x206209='ChanSpies';return db['UserProfileResource'][_0xb80f('0x28')]({'where':{'type':_0x206209,'resourceId':_0x1795e6['id']}})[_0xb80f('0x29')](function(){return _0x52a032;});})[_0xb80f('0x29')](function(){_0x2a9749[_0xb80f('0x1c')](0xcc)[_0xb80f('0x1d')]();});}};}function handleEntityNotFound(_0x3c2c38,_0x1c9139){return function(_0xbffa6e){if(!_0xbffa6e){_0x3c2c38['sendStatus'](0x194);}return _0xbffa6e;};}function handleError(_0x56551d,_0x4c962b){_0x4c962b=_0x4c962b||0x1f4;return function(_0x505da2){logger[_0xb80f('0x2a')](_0x505da2[_0xb80f('0x2b')]);if(_0x505da2[_0xb80f('0x2c')]){delete _0x505da2[_0xb80f('0x2c')];}_0x56551d[_0xb80f('0x1c')](_0x4c962b)[_0xb80f('0x2d')](_0x505da2);};}exports['index']=function(_0x12bf45,_0x6f119e){var _0x5c0846={},_0x1be34a={},_0x563524={'count':0x0,'rows':[]};var _0x26026a=_['map'](db['VoiceChanSpy'][_0xb80f('0x2e')],function(_0x56bd6b){return{'name':_0x56bd6b[_0xb80f('0x2f')],'type':_0x56bd6b[_0xb80f('0x30')]['key']};});_0x1be34a['model']=_[_0xb80f('0x31')](_0x26026a,_0xb80f('0x2c'));_0x1be34a['query']=_[_0xb80f('0x32')](_0x12bf45[_0xb80f('0x33')]);_0x1be34a[_0xb80f('0x34')]=_[_0xb80f('0x35')](_0x1be34a[_0xb80f('0x36')],_0x1be34a['query']);_0x5c0846[_0xb80f('0x37')]=_[_0xb80f('0x35')](_0x1be34a['model'],qs[_0xb80f('0x38')](_0x12bf45[_0xb80f('0x33')][_0xb80f('0x38')]));_0x5c0846['attributes']=_0x5c0846[_0xb80f('0x37')]['length']?_0x5c0846[_0xb80f('0x37')]:_0x1be34a['model'];if(!_0x12bf45[_0xb80f('0x33')]['hasOwnProperty'](_0xb80f('0x39'))){_0x5c0846[_0xb80f('0x22')]=qs[_0xb80f('0x22')](_0x12bf45[_0xb80f('0x33')]['limit']);_0x5c0846[_0xb80f('0x1f')]=qs[_0xb80f('0x1f')](_0x12bf45[_0xb80f('0x33')][_0xb80f('0x1f')]);}_0x5c0846[_0xb80f('0x3a')]=qs[_0xb80f('0x3b')](_0x12bf45[_0xb80f('0x33')][_0xb80f('0x3b')]);_0x5c0846['where']=qs[_0xb80f('0x34')](_[_0xb80f('0x3c')](_0x12bf45[_0xb80f('0x33')],_0x1be34a[_0xb80f('0x34')]),_0x26026a);if(_0x12bf45[_0xb80f('0x33')][_0xb80f('0x3d')]){_0x5c0846[_0xb80f('0x3e')]=_[_0xb80f('0x3f')](_0x5c0846['where'],{'$or':_['map'](_0x26026a,function(_0x2b7f85){if(_0x2b7f85[_0xb80f('0x30')]!==_0xb80f('0x40')){var _0x244a23={};_0x244a23[_0x2b7f85['name']]={'$like':'%'+_0x12bf45['query'][_0xb80f('0x3d')]+'%'};return _0x244a23;}})});}_0x5c0846=_['merge']({},_0x5c0846,_0x12bf45[_0xb80f('0x41')]);var _0x2c20ce={'where':_0x5c0846[_0xb80f('0x3e')]};return db[_0xb80f('0x42')][_0xb80f('0x21')](_0x2c20ce)[_0xb80f('0x29')](function(_0x137796){_0x563524[_0xb80f('0x21')]=_0x137796;if(_0x12bf45[_0xb80f('0x33')][_0xb80f('0x43')]){_0x5c0846['include']=[{'all':!![]}];}return db[_0xb80f('0x42')][_0xb80f('0x44')](_0x5c0846);})[_0xb80f('0x29')](function(_0x2cb571){_0x563524[_0xb80f('0x45')]=_0x2cb571;return _0x563524;})['then'](respondWithFilteredResult(_0x6f119e,_0x5c0846))['catch'](handleError(_0x6f119e,null));};exports['show']=function(_0x58b1f1,_0x1a8712){var _0x138641={'raw':![],'where':{'id':_0x58b1f1[_0xb80f('0x46')]['id']}},_0x363db4={};_0x363db4[_0xb80f('0x36')]=_[_0xb80f('0x32')](db[_0xb80f('0x42')][_0xb80f('0x2e')]);_0x363db4['query']=_['keys'](_0x58b1f1['query']);_0x363db4[_0xb80f('0x34')]=_['intersection'](_0x363db4[_0xb80f('0x36')],_0x363db4[_0xb80f('0x33')]);_0x138641[_0xb80f('0x37')]=_[_0xb80f('0x35')](_0x363db4['model'],qs[_0xb80f('0x38')](_0x58b1f1['query'][_0xb80f('0x38')]));_0x138641[_0xb80f('0x37')]=_0x138641['attributes']['length']?_0x138641[_0xb80f('0x37')]:_0x363db4[_0xb80f('0x36')];if(_0x58b1f1[_0xb80f('0x33')][_0xb80f('0x43')]){_0x138641[_0xb80f('0x47')]=[{'all':!![]}];}_0x138641=_['merge']({},_0x138641,_0x58b1f1[_0xb80f('0x41')]);return db['VoiceChanSpy'][_0xb80f('0x48')](_0x138641)[_0xb80f('0x29')](handleEntityNotFound(_0x1a8712,null))[_0xb80f('0x29')](respondWithResult(_0x1a8712,null))[_0xb80f('0x49')](handleError(_0x1a8712,null));};exports[_0xb80f('0x4a')]=function(_0x151345,_0x22f350){return db[_0xb80f('0x42')][_0xb80f('0x4a')](_0x151345['body'],{})[_0xb80f('0x29')](function(_0x31a37d){var _0x5d412f=_0x151345['user'][_0xb80f('0x4b')]({'plain':!![]});if(!_0x5d412f)throw new Error(_0xb80f('0x4c'));if(_0x5d412f[_0xb80f('0x4d')]===_0xb80f('0x4e')){var _0x5ae0bb=_0x31a37d[_0xb80f('0x4b')]({'plain':!![]});var _0x19e2a9='ChanSpies';return db[_0xb80f('0x4f')]['find']({'where':{'name':_0x19e2a9,'userProfileId':_0x5d412f[_0xb80f('0x50')]},'raw':!![]})[_0xb80f('0x29')](function(_0x3b1ce7){if(_0x3b1ce7&&_0x3b1ce7['autoAssociation']===0x0){return db['UserProfileResource'][_0xb80f('0x4a')]({'name':_0x5ae0bb[_0xb80f('0x2c')],'resourceId':_0x5ae0bb['id'],'type':_0x3b1ce7[_0xb80f('0x2c')],'sectionId':_0x3b1ce7['id']},{})[_0xb80f('0x29')](function(){return _0x31a37d;});}else{return _0x31a37d;}})['catch'](function(_0x1466b2){logger[_0xb80f('0x2a')](_0xb80f('0x51'),_0x1466b2);throw _0x1466b2;});}return _0x31a37d;})[_0xb80f('0x29')](respondWithResult(_0x22f350,0xc9))[_0xb80f('0x49')](handleError(_0x22f350,null));};exports['update']=function(_0x119114,_0x57a2f3){if(_0x119114['body']['id']){delete _0x119114[_0xb80f('0x52')]['id'];}return db['VoiceChanSpy'][_0xb80f('0x48')]({'where':{'id':_0x119114[_0xb80f('0x46')]['id']}})[_0xb80f('0x29')](handleEntityNotFound(_0x57a2f3,null))[_0xb80f('0x29')](saveUpdates(_0x119114[_0xb80f('0x52')],null))[_0xb80f('0x29')](respondWithResult(_0x57a2f3,null))[_0xb80f('0x49')](handleError(_0x57a2f3,null));};exports[_0xb80f('0x28')]=function(_0x1a3fe4,_0x5553c9){return db[_0xb80f('0x42')]['find']({'where':{'id':_0x1a3fe4['params']['id']}})['then'](handleEntityNotFound(_0x5553c9,null))['then'](removeEntity(_0x5553c9,null))[_0xb80f('0x49')](handleError(_0x5553c9,null));};
\ No newline at end of file
+var _0x122a=['attributes','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','VoiceChanSpy','findAll','rows','catch','show','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','crypto','jsforce','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','get','ChanSpies','UserProfileResource','sendStatus','stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','length'];(function(_0x1b828b,_0x344400){var _0x98da1a=function(_0x1a0f5b){while(--_0x1a0f5b){_0x1b828b['push'](_0x1b828b['shift']());}};_0x98da1a(++_0x344400);}(_0x122a,0xba));var _0xa122=function(_0x5c6117,_0x3a9dce){_0x5c6117=_0x5c6117-0x0;var _0x42deae=_0x122a[_0x5c6117];return _0x42deae;};'use strict';var emlformat=require(_0xa122('0x0'));var rimraf=require(_0xa122('0x1'));var zipdir=require(_0xa122('0x2'));var jsonpatch=require(_0xa122('0x3'));var rp=require(_0xa122('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa122('0x5'));var util=require('util');var path=require(_0xa122('0x6'));var sox=require(_0xa122('0x7'));var csv=require(_0xa122('0x8'));var ejs=require(_0xa122('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xa122('0xa'));var jsforce=require(_0xa122('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xa122('0x8'));var querystring=require(_0xa122('0xc'));var Papa=require(_0xa122('0xd'));var Redis=require(_0xa122('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa122('0xf'));var logger=require('../../config/logger')(_0xa122('0x10'));var utils=require(_0xa122('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xa122('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x55772a,_0x18fd6b){_0x18fd6b=_0x18fd6b||0xcc;return function(_0x3d0912){if(_0x3d0912){return _0x55772a['sendStatus'](_0x18fd6b);}return _0x55772a[_0xa122('0x13')](_0x18fd6b)[_0xa122('0x14')]();};}function respondWithResult(_0x9feb88,_0x524ae3){_0x524ae3=_0x524ae3||0xc8;return function(_0xdc178a){if(_0xdc178a){return _0x9feb88[_0xa122('0x13')](_0x524ae3)[_0xa122('0x15')](_0xdc178a);}};}function respondWithFilteredResult(_0x3e688c,_0x3896e3){return function(_0x317817){if(_0x317817){var _0x5ec92a=typeof _0x3896e3[_0xa122('0x16')]===_0xa122('0x17')&&typeof _0x3896e3[_0xa122('0x18')]===_0xa122('0x17');var _0x15c076=_0x317817[_0xa122('0x19')];var _0x1d6c40=_0x5ec92a?0x0:_0x3896e3[_0xa122('0x16')];var _0x2f0e75=_0x5ec92a?_0x317817['count']:_0x3896e3[_0xa122('0x16')]+_0x3896e3[_0xa122('0x18')];var _0x832163;if(_0x2f0e75>=_0x15c076){_0x2f0e75=_0x15c076;_0x832163=0xc8;}else{_0x832163=0xce;}_0x3e688c[_0xa122('0x13')](_0x832163);return _0x3e688c[_0xa122('0x1a')](_0xa122('0x1b'),_0x1d6c40+'-'+_0x2f0e75+'/'+_0x15c076)[_0xa122('0x15')](_0x317817);}return null;};}function patchUpdates(_0x26ac5c){return function(_0x319836){try{jsonpatch['apply'](_0x319836,_0x26ac5c,!![]);}catch(_0x960493){return BPromise[_0xa122('0x1c')](_0x960493);}return _0x319836[_0xa122('0x1d')]();};}function saveUpdates(_0x34a78c,_0x303914){return function(_0x2a41df){if(_0x2a41df){return _0x2a41df['update'](_0x34a78c)[_0xa122('0x1e')](function(_0xb00bcf){return _0xb00bcf;});}return null;};}function removeEntity(_0x443268,_0x1e53e1){return function(_0x15742e){if(_0x15742e){return _0x15742e[_0xa122('0x1f')]()[_0xa122('0x1e')](function(){var _0x32df80=_0x15742e[_0xa122('0x20')]({'plain':!![]});var _0x5a295e=_0xa122('0x21');return db[_0xa122('0x22')]['destroy']({'where':{'type':_0x5a295e,'resourceId':_0x32df80['id']}})[_0xa122('0x1e')](function(){return _0x15742e;});})['then'](function(){_0x443268['status'](0xcc)[_0xa122('0x14')]();});}};}function handleEntityNotFound(_0x52f808,_0x36609c){return function(_0x2ec53c){if(!_0x2ec53c){_0x52f808[_0xa122('0x23')](0x194);}return _0x2ec53c;};}function handleError(_0x11ffdf,_0x3db979){_0x3db979=_0x3db979||0x1f4;return function(_0x31be08){logger['error'](_0x31be08[_0xa122('0x24')]);if(_0x31be08[_0xa122('0x25')]){delete _0x31be08[_0xa122('0x25')];}_0x11ffdf['status'](_0x3db979)['send'](_0x31be08);};}exports[_0xa122('0x26')]=function(_0x346319,_0x166ca0){var _0x190f9d={},_0x5ebe0c={},_0x58f673={'count':0x0,'rows':[]};var _0x109678=_[_0xa122('0x27')](db['VoiceChanSpy'][_0xa122('0x28')],function(_0x3b967e){return{'name':_0x3b967e[_0xa122('0x29')],'type':_0x3b967e[_0xa122('0x2a')][_0xa122('0x2b')]};});_0x5ebe0c[_0xa122('0x2c')]=_['map'](_0x109678,_0xa122('0x25'));_0x5ebe0c['query']=_[_0xa122('0x2d')](_0x346319['query']);_0x5ebe0c[_0xa122('0x2e')]=_[_0xa122('0x2f')](_0x5ebe0c[_0xa122('0x2c')],_0x5ebe0c[_0xa122('0x30')]);_0x190f9d['attributes']=_[_0xa122('0x2f')](_0x5ebe0c['model'],qs[_0xa122('0x31')](_0x346319[_0xa122('0x30')][_0xa122('0x31')]));_0x190f9d['attributes']=_0x190f9d['attributes'][_0xa122('0x32')]?_0x190f9d[_0xa122('0x33')]:_0x5ebe0c[_0xa122('0x2c')];if(!_0x346319[_0xa122('0x30')][_0xa122('0x34')](_0xa122('0x35'))){_0x190f9d['limit']=qs[_0xa122('0x18')](_0x346319[_0xa122('0x30')]['limit']);_0x190f9d[_0xa122('0x16')]=qs[_0xa122('0x16')](_0x346319[_0xa122('0x30')][_0xa122('0x16')]);}_0x190f9d[_0xa122('0x36')]=qs['sort'](_0x346319[_0xa122('0x30')][_0xa122('0x37')]);_0x190f9d['where']=qs[_0xa122('0x2e')](_['pick'](_0x346319[_0xa122('0x30')],_0x5ebe0c[_0xa122('0x2e')]),_0x109678);if(_0x346319[_0xa122('0x30')][_0xa122('0x38')]){_0x190f9d[_0xa122('0x39')]=_[_0xa122('0x3a')](_0x190f9d[_0xa122('0x39')],{'$or':_[_0xa122('0x27')](_0x109678,function(_0xbd03cb){if(_0xbd03cb['type']!==_0xa122('0x3b')){var _0x4c3d82={};_0x4c3d82[_0xbd03cb[_0xa122('0x25')]]={'$like':'%'+_0x346319[_0xa122('0x30')][_0xa122('0x38')]+'%'};return _0x4c3d82;}})});}_0x190f9d=_['merge']({},_0x190f9d,_0x346319[_0xa122('0x3c')]);var _0x11eec7={'where':_0x190f9d[_0xa122('0x39')]};return db['VoiceChanSpy']['count'](_0x11eec7)[_0xa122('0x1e')](function(_0x3f154e){_0x58f673[_0xa122('0x19')]=_0x3f154e;if(_0x346319[_0xa122('0x30')][_0xa122('0x3d')]){_0x190f9d['include']=[{'all':!![]}];}return db[_0xa122('0x3e')][_0xa122('0x3f')](_0x190f9d);})[_0xa122('0x1e')](function(_0x4306ff){_0x58f673[_0xa122('0x40')]=_0x4306ff;return _0x58f673;})[_0xa122('0x1e')](respondWithFilteredResult(_0x166ca0,_0x190f9d))[_0xa122('0x41')](handleError(_0x166ca0,null));};exports[_0xa122('0x42')]=function(_0x54001f,_0x1c4c97){var _0x182318={'raw':![],'where':{'id':_0x54001f['params']['id']}},_0xfccdd5={};_0xfccdd5[_0xa122('0x2c')]=_[_0xa122('0x2d')](db[_0xa122('0x3e')][_0xa122('0x28')]);_0xfccdd5[_0xa122('0x30')]=_[_0xa122('0x2d')](_0x54001f[_0xa122('0x30')]);_0xfccdd5['filters']=_[_0xa122('0x2f')](_0xfccdd5[_0xa122('0x2c')],_0xfccdd5['query']);_0x182318['attributes']=_[_0xa122('0x2f')](_0xfccdd5['model'],qs[_0xa122('0x31')](_0x54001f[_0xa122('0x30')][_0xa122('0x31')]));_0x182318[_0xa122('0x33')]=_0x182318['attributes']['length']?_0x182318[_0xa122('0x33')]:_0xfccdd5[_0xa122('0x2c')];if(_0x54001f['query']['includeAll']){_0x182318[_0xa122('0x43')]=[{'all':!![]}];}_0x182318=_[_0xa122('0x3a')]({},_0x182318,_0x54001f[_0xa122('0x3c')]);return db[_0xa122('0x3e')][_0xa122('0x44')](_0x182318)['then'](handleEntityNotFound(_0x1c4c97,null))[_0xa122('0x1e')](respondWithResult(_0x1c4c97,null))[_0xa122('0x41')](handleError(_0x1c4c97,null));};exports[_0xa122('0x45')]=function(_0x52f57b,_0x2e9c27){return db[_0xa122('0x3e')][_0xa122('0x45')](_0x52f57b['body'],{})[_0xa122('0x1e')](function(_0x417c03){var _0x2df008=_0x52f57b[_0xa122('0x46')]['get']({'plain':!![]});if(!_0x2df008)throw new Error(_0xa122('0x47'));if(_0x2df008['role']===_0xa122('0x46')){var _0x23bdc2=_0x417c03[_0xa122('0x20')]({'plain':!![]});var _0xf32a34=_0xa122('0x21');return db[_0xa122('0x48')][_0xa122('0x44')]({'where':{'name':_0xf32a34,'userProfileId':_0x2df008[_0xa122('0x49')]},'raw':!![]})[_0xa122('0x1e')](function(_0x3003cd){if(_0x3003cd&&_0x3003cd[_0xa122('0x4a')]===0x0){return db[_0xa122('0x22')][_0xa122('0x45')]({'name':_0x23bdc2[_0xa122('0x25')],'resourceId':_0x23bdc2['id'],'type':_0x3003cd[_0xa122('0x25')],'sectionId':_0x3003cd['id']},{})[_0xa122('0x1e')](function(){return _0x417c03;});}else{return _0x417c03;}})[_0xa122('0x41')](function(_0x178be2){logger[_0xa122('0x4b')](_0xa122('0x4c'),_0x178be2);throw _0x178be2;});}return _0x417c03;})[_0xa122('0x1e')](respondWithResult(_0x2e9c27,0xc9))[_0xa122('0x41')](handleError(_0x2e9c27,null));};exports['update']=function(_0x552f22,_0x1b4a43){if(_0x552f22[_0xa122('0x4d')]['id']){delete _0x552f22[_0xa122('0x4d')]['id'];}return db[_0xa122('0x3e')][_0xa122('0x44')]({'where':{'id':_0x552f22['params']['id']}})[_0xa122('0x1e')](handleEntityNotFound(_0x1b4a43,null))['then'](saveUpdates(_0x552f22[_0xa122('0x4d')],null))[_0xa122('0x1e')](respondWithResult(_0x1b4a43,null))[_0xa122('0x41')](handleError(_0x1b4a43,null));};exports[_0xa122('0x1f')]=function(_0xc199,_0x1fdec6){return db[_0xa122('0x3e')]['find']({'where':{'id':_0xc199[_0xa122('0x4e')]['id']}})[_0xa122('0x1e')](handleEntityNotFound(_0x1fdec6,null))[_0xa122('0x1e')](removeEntity(_0x1fdec6,null))[_0xa122('0x41')](handleError(_0x1fdec6,null));};
\ No newline at end of file
index a099804..d09f917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb6f=['CDR(type)=%s','chanspy','record','MixMonitor','format','recordingFormat','Authenticate','password','SIP/%s,%s','StopMixMonitor','concat','internal','name','User','findAll','then','catch','exports','models','VoiceChanSpy','voice_chanspy','length','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','context','%s%s','system','push','merge','Set'];(function(_0x30f9af,_0x195046){var _0x8387aa=function(_0x3b9159){while(--_0x3b9159){_0x30f9af['push'](_0x30f9af['shift']());}};_0x8387aa(++_0x195046);}(_0xdb6f,0x177));var _0xfdb6=function(_0x34528e,_0x482db5){_0x34528e=_0x34528e-0x0;var _0x2b4f16=_0xdb6f[_0x34528e];return _0x2b4f16;};'use strict';var _=require(_0xfdb6('0x0'));var util=require(_0xfdb6('0x1'));var BPromise=require(_0xfdb6('0x2'));var attributes=require(_0xfdb6('0x3'));var getUserApplications=function(_0x2c9756,_0x519340,_0x1a8820){var _0x390982=0x1;var _0x4e5546=[];var _0xe71832={'context':_0x519340[_0xfdb6('0x4')]||'from-sip','exten':util['format'](_0xfdb6('0x5'),_0x2c9756['prefix'],_0x1a8820),'type':_0xfdb6('0x6'),'isApp':![],'ChanSpyId':_0x2c9756['id'],'UserId':_0x519340['id']};_0x4e5546[_0xfdb6('0x7')](_[_0xfdb6('0x8')]({'app':_0xfdb6('0x9'),'appdata':util['format'](_0xfdb6('0xa'),_0xfdb6('0xb')),'priority':_0x390982++},_0xe71832));if(_0x2c9756[_0xfdb6('0xc')]){_0x4e5546['push'](_['merge']({'app':_0xfdb6('0xd'),'appdata':util[_0xfdb6('0xe')]('${UNIQUEID}.%s,a',_0x2c9756[_0xfdb6('0xf')]),'priority':_0x390982++},_0xe71832));}if(_0x2c9756['auth']){_0x4e5546[_0xfdb6('0x7')](_[_0xfdb6('0x8')]({'app':_0xfdb6('0x10'),'appdata':_0x2c9756[_0xfdb6('0x11')],'priority':_0x390982++},_0xe71832));}_0x4e5546[_0xfdb6('0x7')](_[_0xfdb6('0x8')]({'app':'ChanSpy','appdata':util[_0xfdb6('0xe')](_0xfdb6('0x12'),_0x519340['name'],_0x2c9756['options']?_0x2c9756['options']['join'](''):''),'priority':_0x390982++},_0xe71832));if(_0x2c9756[_0xfdb6('0xc')]){_0x4e5546[_0xfdb6('0x7')](_[_0xfdb6('0x8')]({'app':_0xfdb6('0x13'),'priority':_0x390982++},_0xe71832));}return _0x4e5546;};var getChanSpyApplications=function(_0x37f99b,_0x3e52f0){var _0x5a4775=[];for(var _0x5a8c0f=0x0,_0x32c715=0x1;_0x5a8c0f<_0x3e52f0['length'];_0x5a8c0f++,_0x32c715=0x1){_0x5a4775=_0x5a4775[_0xfdb6('0x14')](getUserApplications(_0x37f99b,_0x3e52f0[_0x5a8c0f],_0x3e52f0[_0x5a8c0f][_0xfdb6('0x15')]));if(_0x3e52f0[_0x5a8c0f][_0xfdb6('0x15')]!=_0x3e52f0[_0x5a8c0f][_0xfdb6('0x16')]){_0x5a4775=_0x5a4775['concat'](getUserApplications(_0x37f99b,_0x3e52f0[_0x5a8c0f],_0x3e52f0[_0x5a8c0f][_0xfdb6('0x16')]));}}return _0x5a4775;};var getChanSpyPromise=function(_0x5e7653,_0x1b7a64){return new BPromise(function(_0x50bac7,_0x2333d7){return _0x5e7653[_0xfdb6('0x17')][_0xfdb6('0x18')]({'attributes':['id',_0xfdb6('0x16'),_0xfdb6('0x15')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})[_0xfdb6('0x19')](function(_0xa1a92d){if(_0xa1a92d){return _0x50bac7(getChanSpyApplications(_0x1b7a64,_0xa1a92d));}return _0x50bac7([]);})[_0xfdb6('0x1a')](function(_0x122fdf){_0x2333d7(_0x122fdf);});});};module[_0xfdb6('0x1b')]=function(_0x2a686a,_0x20fe44){var _0x338f9c=_0x2a686a[_0xfdb6('0x1c')];return _0x2a686a['define'](_0xfdb6('0x1d'),attributes,{'tableName':_0xfdb6('0x1e'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xf2da9d,_0x18dcb5,_0x61a16a){return getChanSpyPromise(_0x338f9c,_0xf2da9d)[_0xfdb6('0x19')](function(_0x533189){if(_0x533189&&_0x533189[_0xfdb6('0x1f')]){return _0x338f9c[_0xfdb6('0x20')][_0xfdb6('0x21')](_0x533189);}})[_0xfdb6('0x19')](function(){_0x61a16a();})[_0xfdb6('0x1a')](function(_0x575519){_0x61a16a(_0x575519);});},'afterUpdate':function(_0x327033,_0x31d428,_0x44f4f3){return _0x338f9c['VoiceExtension'][_0xfdb6('0x22')]({'where':{'ChanSpyId':_0x327033['id']}})[_0xfdb6('0x19')](function(){return getChanSpyPromise(_0x338f9c,_0x327033);})['then'](function(_0x3afe64){if(_0x3afe64&&_0x3afe64[_0xfdb6('0x1f')]){return _0x338f9c['VoiceExtension'][_0xfdb6('0x21')](_0x3afe64);}})[_0xfdb6('0x19')](function(){_0x44f4f3();})[_0xfdb6('0x1a')](function(_0x31b761){_0x44f4f3(_0x31b761);});},'afterDestroy':function(_0x45e02b,_0x226567,_0x3108b9){return _0x338f9c[_0xfdb6('0x20')][_0xfdb6('0x22')]({'where':{'ChanSpyId':_0x45e02b['id']}})['then'](function(){_0x3108b9();})[_0xfdb6('0x1a')](function(_0x3855a2){_0x3108b9(_0x3855a2);});}}});};
\ No newline at end of file
+var _0xc76e=['then','catch','exports','models','define','VoiceChanSpy','voice_chanspy','VoiceExtension','destroy','bulkCreate','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','prefix','system','push','merge','CDR(type)=%s','chanspy','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','password','SIP/%s,%s','options','join','record','StopMixMonitor','length','internal','name','concat','User','findAll','agent'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xc76e,0xd7));var _0xec76=function(_0xcd6bd6,_0x275e02){_0xcd6bd6=_0xcd6bd6-0x0;var _0x2c9a1e=_0xc76e[_0xcd6bd6];return _0x2c9a1e;};'use strict';var _=require(_0xec76('0x0'));var util=require(_0xec76('0x1'));var BPromise=require(_0xec76('0x2'));var attributes=require(_0xec76('0x3'));var getUserApplications=function(_0x478557,_0x3e1f16,_0x56db49){var _0x1c6719=0x1;var _0x4a1186=[];var _0x1b98ac={'context':_0x3e1f16[_0xec76('0x4')]||_0xec76('0x5'),'exten':util[_0xec76('0x6')](_0xec76('0x7'),_0x478557[_0xec76('0x8')],_0x56db49),'type':_0xec76('0x9'),'isApp':![],'ChanSpyId':_0x478557['id'],'UserId':_0x3e1f16['id']};_0x4a1186[_0xec76('0xa')](_[_0xec76('0xb')]({'app':'Set','appdata':util[_0xec76('0x6')](_0xec76('0xc'),_0xec76('0xd')),'priority':_0x1c6719++},_0x1b98ac));if(_0x478557['record']){_0x4a1186[_0xec76('0xa')](_['merge']({'app':_0xec76('0xe'),'appdata':util[_0xec76('0x6')](_0xec76('0xf'),_0x478557[_0xec76('0x10')]),'priority':_0x1c6719++},_0x1b98ac));}if(_0x478557[_0xec76('0x11')]){_0x4a1186[_0xec76('0xa')](_['merge']({'app':'Authenticate','appdata':_0x478557[_0xec76('0x12')],'priority':_0x1c6719++},_0x1b98ac));}_0x4a1186[_0xec76('0xa')](_[_0xec76('0xb')]({'app':'ChanSpy','appdata':util[_0xec76('0x6')](_0xec76('0x13'),_0x3e1f16['name'],_0x478557[_0xec76('0x14')]?_0x478557['options'][_0xec76('0x15')](''):''),'priority':_0x1c6719++},_0x1b98ac));if(_0x478557[_0xec76('0x16')]){_0x4a1186[_0xec76('0xa')](_[_0xec76('0xb')]({'app':_0xec76('0x17'),'priority':_0x1c6719++},_0x1b98ac));}return _0x4a1186;};var getChanSpyApplications=function(_0x589323,_0xa8e4e2){var _0x158fba=[];for(var _0x3afef6=0x0,_0xcb68db=0x1;_0x3afef6<_0xa8e4e2[_0xec76('0x18')];_0x3afef6++,_0xcb68db=0x1){_0x158fba=_0x158fba['concat'](getUserApplications(_0x589323,_0xa8e4e2[_0x3afef6],_0xa8e4e2[_0x3afef6][_0xec76('0x19')]));if(_0xa8e4e2[_0x3afef6][_0xec76('0x19')]!=_0xa8e4e2[_0x3afef6][_0xec76('0x1a')]){_0x158fba=_0x158fba[_0xec76('0x1b')](getUserApplications(_0x589323,_0xa8e4e2[_0x3afef6],_0xa8e4e2[_0x3afef6][_0xec76('0x1a')]));}}return _0x158fba;};var getChanSpyPromise=function(_0x3792f7,_0x5b0950){return new BPromise(function(_0x43b8cc,_0x39ad4e){return _0x3792f7[_0xec76('0x1c')][_0xec76('0x1d')]({'attributes':['id','name','internal'],'where':{'role':_0xec76('0x1e'),'chanspy':!![]},'raw':!![]})[_0xec76('0x1f')](function(_0x6b6bd5){if(_0x6b6bd5){return _0x43b8cc(getChanSpyApplications(_0x5b0950,_0x6b6bd5));}return _0x43b8cc([]);})[_0xec76('0x20')](function(_0x4f11be){_0x39ad4e(_0x4f11be);});});};module[_0xec76('0x21')]=function(_0x1d3a72,_0x562e5e){var _0x228d5e=_0x1d3a72[_0xec76('0x22')];return _0x1d3a72[_0xec76('0x23')](_0xec76('0x24'),attributes,{'tableName':_0xec76('0x25'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3b1dd2,_0x180673,_0x34a216){return getChanSpyPromise(_0x228d5e,_0x3b1dd2)['then'](function(_0xe885d4){if(_0xe885d4&&_0xe885d4[_0xec76('0x18')]){return _0x228d5e[_0xec76('0x26')]['bulkCreate'](_0xe885d4);}})[_0xec76('0x1f')](function(){_0x34a216();})[_0xec76('0x20')](function(_0x4cd212){_0x34a216(_0x4cd212);});},'afterUpdate':function(_0x220c57,_0x23a499,_0x13d5cc){return _0x228d5e[_0xec76('0x26')][_0xec76('0x27')]({'where':{'ChanSpyId':_0x220c57['id']}})['then'](function(){return getChanSpyPromise(_0x228d5e,_0x220c57);})[_0xec76('0x1f')](function(_0x192b15){if(_0x192b15&&_0x192b15[_0xec76('0x18')]){return _0x228d5e[_0xec76('0x26')][_0xec76('0x28')](_0x192b15);}})['then'](function(){_0x13d5cc();})['catch'](function(_0x5e1d98){_0x13d5cc(_0x5e1d98);});},'afterDestroy':function(_0x30b763,_0x867b69,_0x464edd){return _0x228d5e['VoiceExtension']['destroy']({'where':{'ChanSpyId':_0x30b763['id']}})[_0xec76('0x1f')](function(){_0x464edd();})['catch'](function(_0x4c4596){_0x464edd(_0x4c4596);});}}});};
\ No newline at end of file
index 91c6095..ef12ae6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58b=['ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird'];(function(_0x5c2ef8,_0xfa0926){var _0x2f205f=function(_0x4ded3a){while(--_0x4ded3a){_0x5c2ef8['push'](_0x5c2ef8['shift']());}};_0x2f205f(++_0xfa0926);}(_0xb58b,0x1f1));var _0xbb58=function(_0x5b3186,_0x102818){_0x5b3186=_0x5b3186-0x0;var _0x364de9=_0xb58b[_0x5b3186];return _0x364de9;};'use strict';var _=require('lodash');var util=require(_0xbb58('0x0'));var moment=require(_0xbb58('0x1'));var BPromise=require(_0xbb58('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbb58('0x3'));var db=require(_0xbb58('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbb58('0x5'))('rpc');var config=require(_0xbb58('0x6'));var jayson=require(_0xbb58('0x7'));var client=jayson[_0xbb58('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27cbda,_0x323066,_0xe874f2){return new BPromise(function(_0x5d7fe8,_0xd94f1){return client[_0xbb58('0x9')](_0x27cbda,_0xe874f2)[_0xbb58('0xa')](function(_0x36ca50){logger[_0xbb58('0xb')](_0xbb58('0xc'),_0x323066,_0xbb58('0xd'));logger['debug'](_0xbb58('0xe'),_0x323066,'request\x20sent',JSON[_0xbb58('0xf')](_0x36ca50));if(_0x36ca50[_0xbb58('0x10')]){if(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x11')]===0x1f4){logger['error'](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0xd94f1(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}logger[_0xbb58('0x10')](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0x5d7fe8(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}else{logger['info']('VoiceChanSpy,\x20%s,\x20%s',_0x323066,_0xbb58('0xd'));_0x5d7fe8(_0x36ca50[_0xbb58('0x13')][_0xbb58('0x12')]);}})['catch'](function(_0x5edc97){logger['error']('VoiceChanSpy,\x20%s,\x20%s',_0x323066,_0x5edc97);_0xd94f1(_0x5edc97);});});}
\ No newline at end of file
+var _0x8ce3=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird'];(function(_0x4b95bf,_0x3d05ab){var _0x46d3ca=function(_0x43e9c5){while(--_0x43e9c5){_0x4b95bf['push'](_0x4b95bf['shift']());}};_0x46d3ca(++_0x3d05ab);}(_0x8ce3,0xc3));var _0x38ce=function(_0x113c43,_0x171537){_0x113c43=_0x113c43-0x0;var _0x25a1ac=_0x8ce3[_0x113c43];return _0x25a1ac;};'use strict';var _=require(_0x38ce('0x0'));var util=require(_0x38ce('0x1'));var moment=require('moment');var BPromise=require(_0x38ce('0x2'));var rs=require(_0x38ce('0x3'));var fs=require('fs');var Redis=require(_0x38ce('0x4'));var db=require(_0x38ce('0x5'))['db'];var utils=require(_0x38ce('0x6'));var logger=require(_0x38ce('0x7'))(_0x38ce('0x8'));var config=require(_0x38ce('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x38ce('0xa')][_0x38ce('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x58074c,_0x262b13,_0xbe7332){return new BPromise(function(_0x3f8011,_0x482955){return client[_0x38ce('0xc')](_0x58074c,_0xbe7332)['then'](function(_0x725d27){logger['info'](_0x38ce('0xd'),_0x262b13,_0x38ce('0xe'));logger[_0x38ce('0xf')](_0x38ce('0x10'),_0x262b13,_0x38ce('0xe'),JSON[_0x38ce('0x11')](_0x725d27));if(_0x725d27[_0x38ce('0x12')]){if(_0x725d27[_0x38ce('0x12')][_0x38ce('0x13')]===0x1f4){logger[_0x38ce('0x12')](_0x38ce('0xd'),_0x262b13,_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);return _0x482955(_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);}logger[_0x38ce('0x12')]('VoiceChanSpy,\x20%s,\x20%s',_0x262b13,_0x725d27['error'][_0x38ce('0x14')]);return _0x3f8011(_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);}else{logger['info'](_0x38ce('0xd'),_0x262b13,'request\x20sent');_0x3f8011(_0x725d27[_0x38ce('0x15')][_0x38ce('0x14')]);}})['catch'](function(_0x5fc115){logger[_0x38ce('0x12')](_0x38ce('0xd'),_0x262b13,_0x5fc115);_0x482955(_0x5fc115);});});}
\ No newline at end of file
index db743c7..c7b3b1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ae8=['/:id','show','create','put','update','delete','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceContext.controller','get','isAuthenticated','index'];(function(_0x1011dd,_0xa51bac){var _0x57e2a8=function(_0x39c2e6){while(--_0x39c2e6){_0x1011dd['push'](_0x1011dd['shift']());}};_0x57e2a8(++_0xa51bac);}(_0x4ae8,0x7d));var _0x84ae=function(_0x9188ce,_0x3d621d){_0x9188ce=_0x9188ce-0x0;var _0x286bbd=_0x4ae8[_0x9188ce];return _0x286bbd;};'use strict';var multer=require('multer');var util=require(_0x84ae('0x0'));var path=require(_0x84ae('0x1'));var timeout=require(_0x84ae('0x2'));var express=require(_0x84ae('0x3'));var router=express['Router']();var fs_extra=require(_0x84ae('0x4'));var auth=require(_0x84ae('0x5'));var interaction=require(_0x84ae('0x6'));var config=require('../../config/environment');var controller=require(_0x84ae('0x7'));router[_0x84ae('0x8')]('/',auth[_0x84ae('0x9')](),controller[_0x84ae('0xa')]);router['get'](_0x84ae('0xb'),auth[_0x84ae('0x9')](),controller[_0x84ae('0xc')]);router['post']('/',auth[_0x84ae('0x9')](),controller[_0x84ae('0xd')]);router[_0x84ae('0xe')]('/:id',auth[_0x84ae('0x9')](),controller[_0x84ae('0xf')]);router[_0x84ae('0x10')](_0x84ae('0xb'),auth[_0x84ae('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x4585=['delete','destroy','exports','multer','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','/:id','isAuthenticated','create','put','update'];(function(_0x43077b,_0x2e8274){var _0x429348=function(_0x4e8d01){while(--_0x4e8d01){_0x43077b['push'](_0x43077b['shift']());}};_0x429348(++_0x2e8274);}(_0x4585,0x173));var _0x5458=function(_0xfa634c,_0x414e0e){_0xfa634c=_0xfa634c-0x0;var _0x73e478=_0x4585[_0xfa634c];return _0x73e478;};'use strict';var multer=require(_0x5458('0x0'));var util=require('util');var path=require(_0x5458('0x1'));var timeout=require(_0x5458('0x2'));var express=require('express');var router=express[_0x5458('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5458('0x4'));var config=require(_0x5458('0x5'));var controller=require(_0x5458('0x6'));router[_0x5458('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5458('0x7')](_0x5458('0x8'),auth[_0x5458('0x9')](),controller['show']);router['post']('/',auth[_0x5458('0x9')](),controller[_0x5458('0xa')]);router[_0x5458('0xb')](_0x5458('0x8'),auth[_0x5458('0x9')](),controller[_0x5458('0xc')]);router[_0x5458('0xd')](_0x5458('0x8'),auth['isAuthenticated'](),controller[_0x5458('0xe')]);module[_0x5458('0xf')]=router;
\ No newline at end of file
index a3c7323..2dc1bb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x799f=['STRING','name','exports'];(function(_0xbeb808,_0x881ddf){var _0x5d6909=function(_0x37d652){while(--_0x37d652){_0xbeb808['push'](_0xbeb808['shift']());}};_0x5d6909(++_0x881ddf);}(_0x799f,0x18b));var _0xf799=function(_0x3a21f4,_0x2f8521){_0x3a21f4=_0x3a21f4-0x0;var _0x46d4b6=_0x799f[_0x3a21f4];return _0x46d4b6;};'use strict';var Sequelize=require('sequelize');module[_0xf799('0x0')]={'name':{'type':Sequelize[_0xf799('0x1')],'unique':_0xf799('0x2')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x94d4=['BOOLEAN','exports','STRING'];(function(_0x3a146f,_0x35e3d0){var _0x20b607=function(_0x4ac88c){while(--_0x4ac88c){_0x3a146f['push'](_0x3a146f['shift']());}};_0x20b607(++_0x35e3d0);}(_0x94d4,0xac));var _0x494d=function(_0x170b4a,_0x561ed5){_0x170b4a=_0x170b4a-0x0;var _0x4351a1=_0x94d4[_0x170b4a];return _0x4351a1;};'use strict';var Sequelize=require('sequelize');module[_0x494d('0x0')]={'name':{'type':Sequelize[_0x494d('0x1')],'unique':'name'},'description':{'type':Sequelize[_0x494d('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x494d('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 1137cfe..fb3ef09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd883=['attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','VoiceContext','includeAll','include','findAll','rows','show','params','length','find','create','body','readFileSync','join','root','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','server/files/templates/context.ejs','utf8','Reload','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','http','request','then','info','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','destroy','Contexts','stack','name','send','index','map','rawAttributes','fieldName','key','query','keys','filters','intersection','model','fields'];(function(_0x3113d5,_0x5cc37d){var _0x22fbdc=function(_0x50759e){while(--_0x50759e){_0x3113d5['push'](_0x3113d5['shift']());}};_0x22fbdc(++_0x5cc37d);}(_0xd883,0x101));var _0x3d88=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd883[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0x3d88('0x0'));var rimraf=require(_0x3d88('0x1'));var zipdir=require(_0x3d88('0x2'));var jsonpatch=require(_0x3d88('0x3'));var rp=require(_0x3d88('0x4'));var moment=require(_0x3d88('0x5'));var BPromise=require(_0x3d88('0x6'));var Mustache=require(_0x3d88('0x7'));var util=require(_0x3d88('0x8'));var path=require(_0x3d88('0x9'));var sox=require(_0x3d88('0xa'));var csv=require(_0x3d88('0xb'));var ejs=require(_0x3d88('0xc'));var fs=require('fs');var fs_extra=require(_0x3d88('0xd'));var _=require('lodash');var squel=require(_0x3d88('0xe'));var crypto=require(_0x3d88('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x3d88('0x10'));var toCsv=require(_0x3d88('0xb'));var querystring=require(_0x3d88('0x11'));var Papa=require('papaparse');var Redis=require(_0x3d88('0x12'));var authService=require(_0x3d88('0x13'));var qs=require(_0x3d88('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3d88('0x15'));var utils=require('../../config/utils');var config=require(_0x3d88('0x16'));var licenseUtil=require(_0x3d88('0x17'));var db=require(_0x3d88('0x18'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x3d88('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x2db61c,_0xda80f8,_0x1a6038,_0x1ed3a9){return new BPromise(function(_0x2ec149,_0x4632f6){var _0x320ca9=_0x1ed3a9||client;return _0x320ca9[_0x3d88('0x1a')](_0x2db61c,_0x1a6038)[_0x3d88('0x1b')](function(_0x397dbd){logger[_0x3d88('0x1c')](_0x3d88('0x1d'),_0xda80f8,'request\x20sent');logger[_0x3d88('0x1e')](_0x3d88('0x1f'),_0xda80f8,_0x3d88('0x20'),JSON[_0x3d88('0x21')](_0x397dbd));if(_0x397dbd[_0x3d88('0x22')]){if(_0x397dbd[_0x3d88('0x22')][_0x3d88('0x23')]===0x1f4){logger[_0x3d88('0x22')](_0x3d88('0x1d'),_0xda80f8,_0x397dbd[_0x3d88('0x22')][_0x3d88('0x24')]);return _0x4632f6(_0x397dbd[_0x3d88('0x22')][_0x3d88('0x24')]);}logger[_0x3d88('0x22')]('VoiceContext,\x20%s,\x20%s',_0xda80f8,_0x397dbd['error'][_0x3d88('0x24')]);return _0x2ec149(_0x397dbd[_0x3d88('0x22')]['message']);}else{logger['info'](_0x3d88('0x1d'),_0xda80f8,'request\x20sent');_0x2ec149(_0x397dbd[_0x3d88('0x25')]['message']);}})[_0x3d88('0x26')](function(_0x1c99b2){logger[_0x3d88('0x22')](_0x3d88('0x1d'),_0xda80f8,_0x1c99b2);_0x4632f6(_0x1c99b2);});});}function respondWithStatusCode(_0x2002c4,_0x430c4a){_0x430c4a=_0x430c4a||0xcc;return function(_0x58c48c){if(_0x58c48c){return _0x2002c4[_0x3d88('0x27')](_0x430c4a);}return _0x2002c4[_0x3d88('0x28')](_0x430c4a)[_0x3d88('0x29')]();};}function respondWithResult(_0x20c0e3,_0x367def){_0x367def=_0x367def||0xc8;return function(_0x2dd0ac){if(_0x2dd0ac){return _0x20c0e3[_0x3d88('0x28')](_0x367def)[_0x3d88('0x2a')](_0x2dd0ac);}};}function respondWithFilteredResult(_0x3d5fa5,_0x4f0791){return function(_0x1ffedb){if(_0x1ffedb){var _0xd875f8=typeof _0x4f0791[_0x3d88('0x2b')]===_0x3d88('0x2c')&&typeof _0x4f0791[_0x3d88('0x2d')]===_0x3d88('0x2c');var _0x4feabc=_0x1ffedb[_0x3d88('0x2e')];var _0x59cfa9=_0xd875f8?0x0:_0x4f0791['offset'];var _0x705805=_0xd875f8?_0x1ffedb['count']:_0x4f0791[_0x3d88('0x2b')]+_0x4f0791[_0x3d88('0x2d')];var _0x44ff8b;if(_0x705805>=_0x4feabc){_0x705805=_0x4feabc;_0x44ff8b=0xc8;}else{_0x44ff8b=0xce;}_0x3d5fa5[_0x3d88('0x28')](_0x44ff8b);return _0x3d5fa5[_0x3d88('0x2f')]('Content-Range',_0x59cfa9+'-'+_0x705805+'/'+_0x4feabc)[_0x3d88('0x2a')](_0x1ffedb);}return null;};}function patchUpdates(_0x4eb47d){return function(_0x475d5b){try{jsonpatch['apply'](_0x475d5b,_0x4eb47d,!![]);}catch(_0x339c08){return BPromise[_0x3d88('0x30')](_0x339c08);}return _0x475d5b[_0x3d88('0x31')]();};}function saveUpdates(_0x3cdd75,_0x16e48c){return function(_0x41cff9){if(_0x41cff9){return _0x41cff9[_0x3d88('0x32')](_0x3cdd75)[_0x3d88('0x1b')](function(_0x2976de){return _0x2976de;});}return null;};}function removeEntity(_0x419726,_0x4736ff){return function(_0x5326ce){if(_0x5326ce){return _0x5326ce[_0x3d88('0x33')]()[_0x3d88('0x1b')](function(){var _0x437276=_0x5326ce['get']({'plain':!![]});var _0x2f46bb=_0x3d88('0x34');return db['UserProfileResource'][_0x3d88('0x33')]({'where':{'type':_0x2f46bb,'resourceId':_0x437276['id']}})[_0x3d88('0x1b')](function(){return _0x5326ce;});})[_0x3d88('0x1b')](function(){_0x419726['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1a2a94,_0x277212){return function(_0x3f33c7){if(!_0x3f33c7){_0x1a2a94['sendStatus'](0x194);}return _0x3f33c7;};}function handleError(_0x3c1341,_0x4e663b){_0x4e663b=_0x4e663b||0x1f4;return function(_0x5a2282){logger[_0x3d88('0x22')](_0x5a2282[_0x3d88('0x35')]);if(_0x5a2282[_0x3d88('0x36')]){delete _0x5a2282['name'];}_0x3c1341['status'](_0x4e663b)[_0x3d88('0x37')](_0x5a2282);};}exports[_0x3d88('0x38')]=function(_0x362246,_0x4a4ef1){var _0x449f16={},_0x88bad2={},_0x138a30={'count':0x0,'rows':[]};var _0x5e9fc4=_[_0x3d88('0x39')](db['VoiceContext'][_0x3d88('0x3a')],function(_0x5a39a7){return{'name':_0x5a39a7[_0x3d88('0x3b')],'type':_0x5a39a7['type'][_0x3d88('0x3c')]};});_0x88bad2['model']=_[_0x3d88('0x39')](_0x5e9fc4,_0x3d88('0x36'));_0x88bad2[_0x3d88('0x3d')]=_[_0x3d88('0x3e')](_0x362246[_0x3d88('0x3d')]);_0x88bad2[_0x3d88('0x3f')]=_[_0x3d88('0x40')](_0x88bad2[_0x3d88('0x41')],_0x88bad2['query']);_0x449f16['attributes']=_['intersection'](_0x88bad2[_0x3d88('0x41')],qs[_0x3d88('0x42')](_0x362246[_0x3d88('0x3d')][_0x3d88('0x42')]));_0x449f16[_0x3d88('0x43')]=_0x449f16[_0x3d88('0x43')]['length']?_0x449f16[_0x3d88('0x43')]:_0x88bad2['model'];if(!_0x362246[_0x3d88('0x3d')][_0x3d88('0x44')](_0x3d88('0x45'))){_0x449f16['limit']=qs['limit'](_0x362246[_0x3d88('0x3d')]['limit']);_0x449f16[_0x3d88('0x2b')]=qs[_0x3d88('0x2b')](_0x362246[_0x3d88('0x3d')][_0x3d88('0x2b')]);}_0x449f16[_0x3d88('0x46')]=qs[_0x3d88('0x47')](_0x362246['query'][_0x3d88('0x47')]);_0x449f16[_0x3d88('0x48')]=qs[_0x3d88('0x3f')](_[_0x3d88('0x49')](_0x362246[_0x3d88('0x3d')],_0x88bad2['filters']),_0x5e9fc4);if(_0x362246[_0x3d88('0x3d')][_0x3d88('0x4a')]){_0x449f16['where']=_[_0x3d88('0x4b')](_0x449f16[_0x3d88('0x48')],{'$or':_[_0x3d88('0x39')](_0x5e9fc4,function(_0x47d526){if(_0x47d526[_0x3d88('0x4c')]!==_0x3d88('0x4d')){var _0x13efe7={};_0x13efe7[_0x47d526[_0x3d88('0x36')]]={'$like':'%'+_0x362246[_0x3d88('0x3d')][_0x3d88('0x4a')]+'%'};return _0x13efe7;}})});}_0x449f16=_[_0x3d88('0x4b')]({},_0x449f16,_0x362246[_0x3d88('0x4e')]);var _0x36d5e4={'where':_0x449f16[_0x3d88('0x48')]};return db[_0x3d88('0x4f')]['count'](_0x36d5e4)[_0x3d88('0x1b')](function(_0x4589ba){_0x138a30['count']=_0x4589ba;if(_0x362246[_0x3d88('0x3d')][_0x3d88('0x50')]){_0x449f16[_0x3d88('0x51')]=[{'all':!![]}];}return db[_0x3d88('0x4f')][_0x3d88('0x52')](_0x449f16);})[_0x3d88('0x1b')](function(_0x30ad55){_0x138a30[_0x3d88('0x53')]=_0x30ad55;return _0x138a30;})[_0x3d88('0x1b')](respondWithFilteredResult(_0x4a4ef1,_0x449f16))[_0x3d88('0x26')](handleError(_0x4a4ef1,null));};exports[_0x3d88('0x54')]=function(_0x2f975d,_0x4c1da3){var _0xb8a52c={'raw':![],'where':{'id':_0x2f975d[_0x3d88('0x55')]['id']}},_0x3a45bb={};_0x3a45bb[_0x3d88('0x41')]=_[_0x3d88('0x3e')](db[_0x3d88('0x4f')]['rawAttributes']);_0x3a45bb[_0x3d88('0x3d')]=_[_0x3d88('0x3e')](_0x2f975d['query']);_0x3a45bb[_0x3d88('0x3f')]=_[_0x3d88('0x40')](_0x3a45bb[_0x3d88('0x41')],_0x3a45bb[_0x3d88('0x3d')]);_0xb8a52c[_0x3d88('0x43')]=_[_0x3d88('0x40')](_0x3a45bb[_0x3d88('0x41')],qs[_0x3d88('0x42')](_0x2f975d[_0x3d88('0x3d')]['fields']));_0xb8a52c[_0x3d88('0x43')]=_0xb8a52c[_0x3d88('0x43')][_0x3d88('0x56')]?_0xb8a52c[_0x3d88('0x43')]:_0x3a45bb[_0x3d88('0x41')];if(_0x2f975d[_0x3d88('0x3d')][_0x3d88('0x50')]){_0xb8a52c[_0x3d88('0x51')]=[{'all':!![]}];}_0xb8a52c=_[_0x3d88('0x4b')]({},_0xb8a52c,_0x2f975d['options']);return db[_0x3d88('0x4f')][_0x3d88('0x57')](_0xb8a52c)['then'](handleEntityNotFound(_0x4c1da3,null))[_0x3d88('0x1b')](respondWithResult(_0x4c1da3,null))['catch'](handleError(_0x4c1da3,null));};exports[_0x3d88('0x58')]=function(_0x1377c3,_0x158957,_0x317c21){var _0x405a65;return db[_0x3d88('0x4f')]['create'](_0x1377c3[_0x3d88('0x59')],{'raw':!![]})[_0x3d88('0x1b')](function(_0x1ed5f4){_0x405a65=_0x1ed5f4;return db['VoiceContext']['findAll']({'raw':!![]});})[_0x3d88('0x1b')](function(_0x5b4410){var _0xb2c1e2=fs[_0x3d88('0x5a')](path[_0x3d88('0x5b')](config[_0x3d88('0x5c')],'server/files/templates/context.ejs'),'utf8');var _0x4a7a09=ejs[_0x3d88('0x5d')](_0xb2c1e2,{'contexts':_0x5b4410||[]});fs[_0x3d88('0x5e')](_0x3d88('0x5f'),_0x4a7a09);})[_0x3d88('0x1b')](function(){return respondWithRpcPromise('Reload',_0x3d88('0x58'),{'module':_0x3d88('0x60')});})[_0x3d88('0x1b')](function(){var _0x1755ce=_0x1377c3[_0x3d88('0x61')][_0x3d88('0x62')]({'plain':!![]});if(!_0x1755ce)throw new Error(_0x3d88('0x63'));if(_0x1755ce[_0x3d88('0x64')]===_0x3d88('0x61')){var _0x1ea747=_0x405a65[_0x3d88('0x62')]({'plain':!![]});return db[_0x3d88('0x65')]['find']({'where':{'name':_0x3d88('0x34'),'userProfileId':_0x1755ce[_0x3d88('0x66')]},'raw':!![]})[_0x3d88('0x1b')](function(_0x26a88a){if(_0x26a88a&&_0x26a88a[_0x3d88('0x67')]===0x0){return db[_0x3d88('0x68')][_0x3d88('0x58')]({'name':_0x1ea747[_0x3d88('0x36')],'resourceId':_0x1ea747['id'],'type':_0x26a88a[_0x3d88('0x36')],'sectionId':_0x26a88a['id']},{})['then'](function(){return _0x405a65;});}else{return _0x405a65;}})[_0x3d88('0x26')](function(_0x440a7e){logger[_0x3d88('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x440a7e);throw _0x440a7e;});}return _0x405a65;})[_0x3d88('0x1b')](respondWithResult(_0x158957,0xc9))['catch'](handleError(_0x158957,null));};exports[_0x3d88('0x32')]=function(_0x81cef9,_0x20c531,_0x5dd27f){var _0x28f474;return db['VoiceContext'][_0x3d88('0x57')]({'where':{'id':_0x81cef9[_0x3d88('0x55')]['id']}})[_0x3d88('0x1b')](handleEntityNotFound(_0x20c531,null))[_0x3d88('0x1b')](saveUpdates(_0x81cef9[_0x3d88('0x59')],null))[_0x3d88('0x1b')](function(_0x1e4693){if(_0x1e4693){_0x28f474=_0x1e4693;return db[_0x3d88('0x4f')][_0x3d88('0x52')]({'raw':!![]});}})['then'](function(_0x44ebea){var _0x118ed0=fs[_0x3d88('0x5a')](path['join'](config[_0x3d88('0x5c')],_0x3d88('0x69')),_0x3d88('0x6a'));var _0xec885=ejs[_0x3d88('0x5d')](_0x118ed0,{'contexts':_0x44ebea||[]});fs[_0x3d88('0x5e')]('/etc/asterisk/extensions_xcally_contexts.conf',_0xec885);})['then'](function(){return respondWithRpcPromise(_0x3d88('0x6b'),_0x3d88('0x32'),{'module':_0x3d88('0x60')});})[_0x3d88('0x1b')](function(){return _0x28f474;})[_0x3d88('0x1b')](respondWithResult(_0x20c531,null))[_0x3d88('0x26')](handleError(_0x20c531,null));};exports['destroy']=function(_0x173b08,_0x24fbc7,_0x425183){var _0x3b2e4b;return db[_0x3d88('0x4f')][_0x3d88('0x57')]({'where':{'id':_0x173b08[_0x3d88('0x55')]['id']}})['then'](handleEntityNotFound(_0x24fbc7,null))[_0x3d88('0x1b')](removeEntity(_0x24fbc7,null))[_0x3d88('0x1b')](function(){return db[_0x3d88('0x4f')][_0x3d88('0x52')]({'raw':!![]});})[_0x3d88('0x1b')](function(_0x22a40e){var _0x14555f=fs[_0x3d88('0x5a')](path[_0x3d88('0x5b')](config[_0x3d88('0x5c')],'server/files/templates/context.ejs'),_0x3d88('0x6a'));var _0x164245=ejs[_0x3d88('0x5d')](_0x14555f,{'contexts':_0x22a40e});fs[_0x3d88('0x5e')](_0x3d88('0x5f'),_0x164245);return respondWithRpcPromise(_0x3d88('0x6b'),'destroy',{'module':'chan_sip.so'});})['catch'](handleError(_0x24fbc7,null));};
\ No newline at end of file
+var _0xa36d=['model','keys','filters','intersection','attributes','fields','length','query','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','merge','count','includeAll','findAll','show','params','include','options','find','create','readFileSync','join','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','Contexts','autoAssociation','update','root','server/files/templates/context.ejs','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','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','client','http','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','UserProfileResource','destroy','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName'];(function(_0x53aed1,_0x27c2ae){var _0x414724=function(_0x18a8d5){while(--_0x18a8d5){_0x53aed1['push'](_0x53aed1['shift']());}};_0x414724(++_0x27c2ae);}(_0xa36d,0xf9));var _0xda36=function(_0x25770c,_0x2e7b72){_0x25770c=_0x25770c-0x0;var _0x360852=_0xa36d[_0x25770c];return _0x360852;};'use strict';var emlformat=require(_0xda36('0x0'));var rimraf=require(_0xda36('0x1'));var zipdir=require(_0xda36('0x2'));var jsonpatch=require(_0xda36('0x3'));var rp=require(_0xda36('0x4'));var moment=require(_0xda36('0x5'));var BPromise=require(_0xda36('0x6'));var Mustache=require(_0xda36('0x7'));var util=require(_0xda36('0x8'));var path=require(_0xda36('0x9'));var sox=require(_0xda36('0xa'));var csv=require(_0xda36('0xb'));var ejs=require(_0xda36('0xc'));var fs=require('fs');var fs_extra=require(_0xda36('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xda36('0xe'));var jsforce=require(_0xda36('0xf'));var deskjs=require(_0xda36('0x10'));var toCsv=require('to-csv');var querystring=require(_0xda36('0x11'));var Papa=require(_0xda36('0x12'));var Redis=require('ioredis');var authService=require(_0xda36('0x13'));var qs=require(_0xda36('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xda36('0x15'));var logger=require(_0xda36('0x16'))(_0xda36('0x17'));var utils=require(_0xda36('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xda36('0x19'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xda36('0x1a')][_0xda36('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x1858ed,_0x1ce32c,_0x1cb32e,_0x26bca5){return new BPromise(function(_0x42a947,_0x5dc7b4){var _0x2eafed=_0x26bca5||client;return _0x2eafed['request'](_0x1858ed,_0x1cb32e)[_0xda36('0x1c')](function(_0x19c044){logger[_0xda36('0x1d')](_0xda36('0x1e'),_0x1ce32c,_0xda36('0x1f'));logger[_0xda36('0x20')](_0xda36('0x21'),_0x1ce32c,'request\x20sent',JSON[_0xda36('0x22')](_0x19c044));if(_0x19c044['error']){if(_0x19c044[_0xda36('0x23')][_0xda36('0x24')]===0x1f4){logger['error'](_0xda36('0x1e'),_0x1ce32c,_0x19c044['error'][_0xda36('0x25')]);return _0x5dc7b4(_0x19c044[_0xda36('0x23')][_0xda36('0x25')]);}logger['error'](_0xda36('0x1e'),_0x1ce32c,_0x19c044[_0xda36('0x23')][_0xda36('0x25')]);return _0x42a947(_0x19c044['error'][_0xda36('0x25')]);}else{logger[_0xda36('0x1d')](_0xda36('0x1e'),_0x1ce32c,_0xda36('0x1f'));_0x42a947(_0x19c044['result'][_0xda36('0x25')]);}})[_0xda36('0x26')](function(_0x3cf9b8){logger['error'](_0xda36('0x1e'),_0x1ce32c,_0x3cf9b8);_0x5dc7b4(_0x3cf9b8);});});}function respondWithStatusCode(_0x19f2c1,_0x1c4e51){_0x1c4e51=_0x1c4e51||0xcc;return function(_0x2c0df0){if(_0x2c0df0){return _0x19f2c1[_0xda36('0x27')](_0x1c4e51);}return _0x19f2c1[_0xda36('0x28')](_0x1c4e51)[_0xda36('0x29')]();};}function respondWithResult(_0x4e9d5d,_0x259338){_0x259338=_0x259338||0xc8;return function(_0x3d3d15){if(_0x3d3d15){return _0x4e9d5d[_0xda36('0x28')](_0x259338)[_0xda36('0x2a')](_0x3d3d15);}};}function respondWithFilteredResult(_0x42fa43,_0xa715c9){return function(_0x4096a9){if(_0x4096a9){var _0x434515=typeof _0xa715c9[_0xda36('0x2b')]==='undefined'&&typeof _0xa715c9['limit']===_0xda36('0x2c');var _0x282ac1=_0x4096a9['count'];var _0x4171ea=_0x434515?0x0:_0xa715c9[_0xda36('0x2b')];var _0x3648ea=_0x434515?_0x4096a9['count']:_0xa715c9['offset']+_0xa715c9[_0xda36('0x2d')];var _0x4afaec;if(_0x3648ea>=_0x282ac1){_0x3648ea=_0x282ac1;_0x4afaec=0xc8;}else{_0x4afaec=0xce;}_0x42fa43['status'](_0x4afaec);return _0x42fa43['set'](_0xda36('0x2e'),_0x4171ea+'-'+_0x3648ea+'/'+_0x282ac1)[_0xda36('0x2a')](_0x4096a9);}return null;};}function patchUpdates(_0x1cbf5a){return function(_0x1c1a22){try{jsonpatch[_0xda36('0x2f')](_0x1c1a22,_0x1cbf5a,!![]);}catch(_0x23d9d3){return BPromise[_0xda36('0x30')](_0x23d9d3);}return _0x1c1a22[_0xda36('0x31')]();};}function saveUpdates(_0x4066e5,_0x1ce29c){return function(_0x32764c){if(_0x32764c){return _0x32764c['update'](_0x4066e5)[_0xda36('0x1c')](function(_0x2fbd9f){return _0x2fbd9f;});}return null;};}function removeEntity(_0x47a850,_0x20508b){return function(_0x29e192){if(_0x29e192){return _0x29e192['destroy']()['then'](function(){var _0x26f0cd=_0x29e192['get']({'plain':!![]});var _0x1d12c4='Contexts';return db[_0xda36('0x32')][_0xda36('0x33')]({'where':{'type':_0x1d12c4,'resourceId':_0x26f0cd['id']}})[_0xda36('0x1c')](function(){return _0x29e192;});})['then'](function(){_0x47a850[_0xda36('0x28')](0xcc)[_0xda36('0x29')]();});}};}function handleEntityNotFound(_0x1686a3,_0xd7c6dc){return function(_0x58742c){if(!_0x58742c){_0x1686a3[_0xda36('0x27')](0x194);}return _0x58742c;};}function handleError(_0x44ff1f,_0x514510){_0x514510=_0x514510||0x1f4;return function(_0x103bcf){logger[_0xda36('0x23')](_0x103bcf[_0xda36('0x34')]);if(_0x103bcf[_0xda36('0x35')]){delete _0x103bcf[_0xda36('0x35')];}_0x44ff1f[_0xda36('0x28')](_0x514510)[_0xda36('0x36')](_0x103bcf);};}exports[_0xda36('0x37')]=function(_0x33f50d,_0x33e3c3){var _0x1324e6={},_0x4c1320={},_0x562ba6={'count':0x0,'rows':[]};var _0x20e291=_[_0xda36('0x38')](db[_0xda36('0x39')][_0xda36('0x3a')],function(_0x2e8c97){return{'name':_0x2e8c97[_0xda36('0x3b')],'type':_0x2e8c97['type']['key']};});_0x4c1320[_0xda36('0x3c')]=_['map'](_0x20e291,_0xda36('0x35'));_0x4c1320['query']=_[_0xda36('0x3d')](_0x33f50d['query']);_0x4c1320[_0xda36('0x3e')]=_[_0xda36('0x3f')](_0x4c1320['model'],_0x4c1320['query']);_0x1324e6[_0xda36('0x40')]=_[_0xda36('0x3f')](_0x4c1320['model'],qs[_0xda36('0x41')](_0x33f50d['query'][_0xda36('0x41')]));_0x1324e6[_0xda36('0x40')]=_0x1324e6['attributes'][_0xda36('0x42')]?_0x1324e6[_0xda36('0x40')]:_0x4c1320[_0xda36('0x3c')];if(!_0x33f50d[_0xda36('0x43')][_0xda36('0x44')](_0xda36('0x45'))){_0x1324e6[_0xda36('0x2d')]=qs[_0xda36('0x2d')](_0x33f50d['query'][_0xda36('0x2d')]);_0x1324e6[_0xda36('0x2b')]=qs['offset'](_0x33f50d[_0xda36('0x43')][_0xda36('0x2b')]);}_0x1324e6[_0xda36('0x46')]=qs[_0xda36('0x47')](_0x33f50d[_0xda36('0x43')][_0xda36('0x47')]);_0x1324e6[_0xda36('0x48')]=qs[_0xda36('0x3e')](_[_0xda36('0x49')](_0x33f50d['query'],_0x4c1320[_0xda36('0x3e')]),_0x20e291);if(_0x33f50d[_0xda36('0x43')][_0xda36('0x4a')]){_0x1324e6[_0xda36('0x48')]=_['merge'](_0x1324e6[_0xda36('0x48')],{'$or':_[_0xda36('0x38')](_0x20e291,function(_0x290566){if(_0x290566[_0xda36('0x4b')]!=='VIRTUAL'){var _0x5ee065={};_0x5ee065[_0x290566['name']]={'$like':'%'+_0x33f50d[_0xda36('0x43')][_0xda36('0x4a')]+'%'};return _0x5ee065;}})});}_0x1324e6=_[_0xda36('0x4c')]({},_0x1324e6,_0x33f50d['options']);var _0x224621={'where':_0x1324e6[_0xda36('0x48')]};return db[_0xda36('0x39')][_0xda36('0x4d')](_0x224621)[_0xda36('0x1c')](function(_0x3a5a40){_0x562ba6[_0xda36('0x4d')]=_0x3a5a40;if(_0x33f50d[_0xda36('0x43')][_0xda36('0x4e')]){_0x1324e6['include']=[{'all':!![]}];}return db[_0xda36('0x39')][_0xda36('0x4f')](_0x1324e6);})['then'](function(_0x2cd02e){_0x562ba6['rows']=_0x2cd02e;return _0x562ba6;})[_0xda36('0x1c')](respondWithFilteredResult(_0x33e3c3,_0x1324e6))['catch'](handleError(_0x33e3c3,null));};exports[_0xda36('0x50')]=function(_0x5e95af,_0x58e274){var _0x2708be={'raw':![],'where':{'id':_0x5e95af[_0xda36('0x51')]['id']}},_0x43a2ac={};_0x43a2ac[_0xda36('0x3c')]=_[_0xda36('0x3d')](db[_0xda36('0x39')][_0xda36('0x3a')]);_0x43a2ac['query']=_[_0xda36('0x3d')](_0x5e95af[_0xda36('0x43')]);_0x43a2ac[_0xda36('0x3e')]=_['intersection'](_0x43a2ac[_0xda36('0x3c')],_0x43a2ac[_0xda36('0x43')]);_0x2708be['attributes']=_[_0xda36('0x3f')](_0x43a2ac[_0xda36('0x3c')],qs[_0xda36('0x41')](_0x5e95af[_0xda36('0x43')][_0xda36('0x41')]));_0x2708be['attributes']=_0x2708be[_0xda36('0x40')][_0xda36('0x42')]?_0x2708be[_0xda36('0x40')]:_0x43a2ac[_0xda36('0x3c')];if(_0x5e95af[_0xda36('0x43')][_0xda36('0x4e')]){_0x2708be[_0xda36('0x52')]=[{'all':!![]}];}_0x2708be=_[_0xda36('0x4c')]({},_0x2708be,_0x5e95af[_0xda36('0x53')]);return db[_0xda36('0x39')][_0xda36('0x54')](_0x2708be)[_0xda36('0x1c')](handleEntityNotFound(_0x58e274,null))['then'](respondWithResult(_0x58e274,null))[_0xda36('0x26')](handleError(_0x58e274,null));};exports[_0xda36('0x55')]=function(_0x1ab70f,_0x35a73c,_0x495eda){var _0x5b508e;return db[_0xda36('0x39')][_0xda36('0x55')](_0x1ab70f['body'],{'raw':!![]})['then'](function(_0x28d4f6){_0x5b508e=_0x28d4f6;return db[_0xda36('0x39')][_0xda36('0x4f')]({'raw':!![]});})[_0xda36('0x1c')](function(_0x4a163b){var _0x2be8b3=fs[_0xda36('0x56')](path[_0xda36('0x57')](config['root'],'server/files/templates/context.ejs'),_0xda36('0x58'));var _0x38e300=ejs[_0xda36('0x59')](_0x2be8b3,{'contexts':_0x4a163b||[]});fs[_0xda36('0x5a')](_0xda36('0x5b'),_0x38e300);})[_0xda36('0x1c')](function(){return respondWithRpcPromise(_0xda36('0x5c'),_0xda36('0x55'),{'module':_0xda36('0x5d')});})['then'](function(){var _0x2effbf=_0x1ab70f['user']['get']({'plain':!![]});if(!_0x2effbf)throw new Error(_0xda36('0x5e'));if(_0x2effbf[_0xda36('0x5f')]===_0xda36('0x60')){var _0x27f1fd=_0x5b508e[_0xda36('0x61')]({'plain':!![]});return db['UserProfileSection'][_0xda36('0x54')]({'where':{'name':_0xda36('0x62'),'userProfileId':_0x2effbf['userProfileId']},'raw':!![]})[_0xda36('0x1c')](function(_0x7cd421){if(_0x7cd421&&_0x7cd421[_0xda36('0x63')]===0x0){return db[_0xda36('0x32')]['create']({'name':_0x27f1fd['name'],'resourceId':_0x27f1fd['id'],'type':_0x7cd421[_0xda36('0x35')],'sectionId':_0x7cd421['id']},{})[_0xda36('0x1c')](function(){return _0x5b508e;});}else{return _0x5b508e;}})[_0xda36('0x26')](function(_0x2f5c1e){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2f5c1e);throw _0x2f5c1e;});}return _0x5b508e;})[_0xda36('0x1c')](respondWithResult(_0x35a73c,0xc9))[_0xda36('0x26')](handleError(_0x35a73c,null));};exports[_0xda36('0x64')]=function(_0x1873b0,_0x4e02da,_0x3e7089){var _0x394afe;return db[_0xda36('0x39')]['find']({'where':{'id':_0x1873b0[_0xda36('0x51')]['id']}})['then'](handleEntityNotFound(_0x4e02da,null))['then'](saveUpdates(_0x1873b0['body'],null))[_0xda36('0x1c')](function(_0x304134){if(_0x304134){_0x394afe=_0x304134;return db[_0xda36('0x39')][_0xda36('0x4f')]({'raw':!![]});}})[_0xda36('0x1c')](function(_0x11fe79){var _0x4b97b8=fs[_0xda36('0x56')](path[_0xda36('0x57')](config[_0xda36('0x65')],'server/files/templates/context.ejs'),_0xda36('0x58'));var _0xbce198=ejs['render'](_0x4b97b8,{'contexts':_0x11fe79||[]});fs[_0xda36('0x5a')](_0xda36('0x5b'),_0xbce198);})[_0xda36('0x1c')](function(){return respondWithRpcPromise(_0xda36('0x5c'),_0xda36('0x64'),{'module':_0xda36('0x5d')});})[_0xda36('0x1c')](function(){return _0x394afe;})[_0xda36('0x1c')](respondWithResult(_0x4e02da,null))[_0xda36('0x26')](handleError(_0x4e02da,null));};exports['destroy']=function(_0x4e209d,_0x20ca3e,_0xb84af){var _0x4011c2;return db['VoiceContext'][_0xda36('0x54')]({'where':{'id':_0x4e209d[_0xda36('0x51')]['id']}})[_0xda36('0x1c')](handleEntityNotFound(_0x20ca3e,null))[_0xda36('0x1c')](removeEntity(_0x20ca3e,null))['then'](function(){return db[_0xda36('0x39')][_0xda36('0x4f')]({'raw':!![]});})['then'](function(_0x24d746){var _0x1f00e9=fs[_0xda36('0x56')](path[_0xda36('0x57')](config['root'],_0xda36('0x66')),_0xda36('0x58'));var _0x23d31f=ejs[_0xda36('0x59')](_0x1f00e9,{'contexts':_0x24d746});fs[_0xda36('0x5a')](_0xda36('0x5b'),_0x23d31f);return respondWithRpcPromise(_0xda36('0x5c'),'destroy',{'module':'chan_sip.so'});})['catch'](handleError(_0x20ca3e,null));};
\ No newline at end of file
index 218776a..d6bdb0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f29=['request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','lodash','api','moment','bluebird'];(function(_0x4ff3f9,_0x202232){var _0x54fe66=function(_0x10ea57){while(--_0x10ea57){_0x4ff3f9['push'](_0x4ff3f9['shift']());}};_0x54fe66(++_0x202232);}(_0x1f29,0x170));var _0x91f2=function(_0x54467b,_0x35652e){_0x54467b=_0x54467b-0x0;var _0x41a4a3=_0x1f29[_0x54467b];return _0x41a4a3;};'use strict';var _=require(_0x91f2('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x91f2('0x1'));var moment=require(_0x91f2('0x2'));var BPromise=require(_0x91f2('0x3'));var rp=require(_0x91f2('0x4'));var fs=require('fs');var path=require(_0x91f2('0x5'));var rimraf=require(_0x91f2('0x6'));var config=require(_0x91f2('0x7'));var attributes=require(_0x91f2('0x8'));module[_0x91f2('0x9')]=function(_0x48a5de,_0xbebb75){return _0x48a5de[_0x91f2('0xa')](_0x91f2('0xb'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd0fc=['define','VoiceContext','voice_contexts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes'];(function(_0x537261,_0x5812f5){var _0x46dbcf=function(_0x34d529){while(--_0x34d529){_0x537261['push'](_0x537261['shift']());}};_0x46dbcf(++_0x5812f5);}(_0xd0fc,0x1e4));var _0xcd0f=function(_0x1df5d4,_0x18fe56){_0x1df5d4=_0x1df5d4-0x0;var _0xfcd416=_0xd0fc[_0x1df5d4];return _0xfcd416;};'use strict';var _=require(_0xcd0f('0x0'));var util=require(_0xcd0f('0x1'));var logger=require(_0xcd0f('0x2'))(_0xcd0f('0x3'));var moment=require(_0xcd0f('0x4'));var BPromise=require('bluebird');var rp=require(_0xcd0f('0x5'));var fs=require('fs');var path=require(_0xcd0f('0x6'));var rimraf=require(_0xcd0f('0x7'));var config=require(_0xcd0f('0x8'));var attributes=require(_0xcd0f('0x9'));module['exports']=function(_0x2a99a1,_0x1fc450){return _0x2a99a1[_0xcd0f('0xa')](_0xcd0f('0xb'),attributes,{'tableName':_0xcd0f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 67b2e17..3cc13a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20c6=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','then','info','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x3d0451,_0x3da198){var _0x21fa51=function(_0x14b609){while(--_0x14b609){_0x3d0451['push'](_0x3d0451['shift']());}};_0x21fa51(++_0x3da198);}(_0x20c6,0x1e8));var _0x620c=function(_0x25875c,_0xc144a9){_0x25875c=_0x25875c-0x0;var _0x48a9e6=_0x20c6[_0x25875c];return _0x48a9e6;};'use strict';var _=require(_0x620c('0x0'));var util=require(_0x620c('0x1'));var moment=require(_0x620c('0x2'));var BPromise=require(_0x620c('0x3'));var rs=require(_0x620c('0x4'));var fs=require('fs');var Redis=require(_0x620c('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x620c('0x6'))(_0x620c('0x7'));var config=require(_0x620c('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x620c('0x9')][_0x620c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x329af4,_0x3e1d09,_0x449e83){return new BPromise(function(_0x4c9ec1,_0x49fa3f){return client['request'](_0x329af4,_0x449e83)[_0x620c('0xb')](function(_0x2b66b4){logger[_0x620c('0xc')](_0x620c('0xd'),_0x3e1d09,'request\x20sent');logger[_0x620c('0xe')](_0x620c('0xf'),_0x3e1d09,_0x620c('0x10'),JSON['stringify'](_0x2b66b4));if(_0x2b66b4[_0x620c('0x11')]){if(_0x2b66b4[_0x620c('0x11')][_0x620c('0x12')]===0x1f4){logger['error'](_0x620c('0xd'),_0x3e1d09,_0x2b66b4[_0x620c('0x11')][_0x620c('0x13')]);return _0x49fa3f(_0x2b66b4[_0x620c('0x11')][_0x620c('0x13')]);}logger[_0x620c('0x11')](_0x620c('0xd'),_0x3e1d09,_0x2b66b4[_0x620c('0x11')][_0x620c('0x13')]);return _0x4c9ec1(_0x2b66b4[_0x620c('0x11')][_0x620c('0x13')]);}else{logger[_0x620c('0xc')](_0x620c('0xd'),_0x3e1d09,_0x620c('0x10'));_0x4c9ec1(_0x2b66b4[_0x620c('0x14')][_0x620c('0x13')]);}})[_0x620c('0x15')](function(_0x585c5b){logger[_0x620c('0x11')]('VoiceContext,\x20%s,\x20%s',_0x3e1d09,_0x585c5b);_0x49fa3f(_0x585c5b);});});}
\ No newline at end of file
+var _0x19e1=['moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','then','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','VoiceContext,\x20%s,\x20%s','message','info','result','catch','lodash','util'];(function(_0x28e88c,_0x4c1515){var _0x21248c=function(_0x253e31){while(--_0x253e31){_0x28e88c['push'](_0x28e88c['shift']());}};_0x21248c(++_0x4c1515);}(_0x19e1,0x163));var _0x119e=function(_0x2dc343,_0xf015a2){_0x2dc343=_0x2dc343-0x0;var _0x51eac5=_0x19e1[_0x2dc343];return _0x51eac5;};'use strict';var _=require(_0x119e('0x0'));var util=require(_0x119e('0x1'));var moment=require(_0x119e('0x2'));var BPromise=require(_0x119e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x119e('0x4'))['db'];var utils=require(_0x119e('0x5'));var logger=require('../../config/logger')(_0x119e('0x6'));var config=require(_0x119e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x119e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b5306,_0x25e166,_0x16a2ee){return new BPromise(function(_0x1b3797,_0x53d5b7){return client[_0x119e('0x9')](_0x1b5306,_0x16a2ee)[_0x119e('0xa')](function(_0x1a6747){logger['info']('VoiceContext,\x20%s,\x20%s',_0x25e166,_0x119e('0xb'));logger[_0x119e('0xc')](_0x119e('0xd'),_0x25e166,_0x119e('0xb'),JSON[_0x119e('0xe')](_0x1a6747));if(_0x1a6747[_0x119e('0xf')]){if(_0x1a6747[_0x119e('0xf')]['code']===0x1f4){logger[_0x119e('0xf')](_0x119e('0x10'),_0x25e166,_0x1a6747[_0x119e('0xf')][_0x119e('0x11')]);return _0x53d5b7(_0x1a6747[_0x119e('0xf')][_0x119e('0x11')]);}logger['error'](_0x119e('0x10'),_0x25e166,_0x1a6747[_0x119e('0xf')][_0x119e('0x11')]);return _0x1b3797(_0x1a6747[_0x119e('0xf')][_0x119e('0x11')]);}else{logger[_0x119e('0x12')](_0x119e('0x10'),_0x25e166,_0x119e('0xb'));_0x1b3797(_0x1a6747[_0x119e('0x13')][_0x119e('0x11')]);}})[_0x119e('0x14')](function(_0x54c326){logger[_0x119e('0xf')](_0x119e('0x10'),_0x25e166,_0x54c326);_0x53d5b7(_0x54c326);});});}
\ No newline at end of file
index a834005..99b98f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0125=['describe','create','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x0125,0x182));var _0x5012=function(_0x3db122,_0x5e6bee){_0x3db122=_0x3db122-0x0;var _0x325b67=_0x0125[_0x3db122];return _0x325b67;};'use strict';var multer=require(_0x5012('0x0'));var util=require(_0x5012('0x1'));var path=require(_0x5012('0x2'));var timeout=require(_0x5012('0x3'));var express=require(_0x5012('0x4'));var router=express[_0x5012('0x5')]();var fs_extra=require(_0x5012('0x6'));var auth=require(_0x5012('0x7'));var interaction=require(_0x5012('0x8'));var config=require(_0x5012('0x9'));var controller=require('./voiceDialReport.controller');router[_0x5012('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5012('0xa')](_0x5012('0xb'),auth[_0x5012('0xc')](),controller[_0x5012('0xd')]);router['get']('/:id',auth[_0x5012('0xc')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x5012('0xe')]);router['put'](_0x5012('0xf'),auth[_0x5012('0xc')](),controller[_0x5012('0x10')]);router[_0x5012('0x11')](_0x5012('0xf'),auth[_0x5012('0xc')](),controller['destroy']);module[_0x5012('0x12')]=router;
\ No newline at end of file
+var _0x9bc7=['../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','index','/describe','isAuthenticated','/:id','show','post','create','update','delete','destroy','util','path','connect-timeout','express','Router'];(function(_0x16bbff,_0x1be963){var _0x3b89d5=function(_0x48d328){while(--_0x48d328){_0x16bbff['push'](_0x16bbff['shift']());}};_0x3b89d5(++_0x1be963);}(_0x9bc7,0x177));var _0x79bc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9bc7[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x79bc('0x0'));var path=require(_0x79bc('0x1'));var timeout=require(_0x79bc('0x2'));var express=require(_0x79bc('0x3'));var router=express[_0x79bc('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x79bc('0x5'));var config=require(_0x79bc('0x6'));var controller=require(_0x79bc('0x7'));router[_0x79bc('0x8')]('/',auth['isAuthenticated'](),controller[_0x79bc('0x9')]);router[_0x79bc('0x8')](_0x79bc('0xa'),auth[_0x79bc('0xb')](),controller['describe']);router[_0x79bc('0x8')](_0x79bc('0xc'),auth['isAuthenticated'](),controller[_0x79bc('0xd')]);router[_0x79bc('0xe')]('/',auth[_0x79bc('0xb')](),controller[_0x79bc('0xf')]);router['put'](_0x79bc('0xc'),auth[_0x79bc('0xb')](),controller[_0x79bc('0x10')]);router[_0x79bc('0x11')]('/:id',auth[_0x79bc('0xb')](),controller[_0x79bc('0x12')]);module['exports']=router;
\ No newline at end of file
index 2a89e17..830fbf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0e=['INTEGER','DATE','called,connect,complete','sequelize','exports','STRING'];(function(_0x43ec24,_0x2bee02){var _0x3e91a8=function(_0x22dc5d){while(--_0x22dc5d){_0x43ec24['push'](_0x43ec24['shift']());}};_0x3e91a8(++_0x2bee02);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x3b38d5,_0x34df53){_0x3b38d5=_0x3b38d5-0x0;var _0x5ba9ba=_0x8d0e[_0x3b38d5];return _0x5ba9ba;};'use strict';var Sequelize=require(_0xe8d0('0x0'));module[_0xe8d0('0x1')]={'privilege':{'type':Sequelize[_0xe8d0('0x2')]},'channel':{'type':Sequelize[_0xe8d0('0x2')]},'channelstate':{'type':Sequelize[_0xe8d0('0x3')]},'channelstatedesc':{'type':Sequelize[_0xe8d0('0x2')]},'calleridnum':{'type':Sequelize[_0xe8d0('0x2')]},'calleridname':{'type':Sequelize[_0xe8d0('0x2')]},'connectedlinenum':{'type':Sequelize[_0xe8d0('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xe8d0('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xe8d0('0x2')]},'priority':{'type':Sequelize[_0xe8d0('0x3')]},'uniqueid':{'type':Sequelize[_0xe8d0('0x2')]},'linkedid':{'type':Sequelize[_0xe8d0('0x2')]},'destchannel':{'type':Sequelize[_0xe8d0('0x2')]},'destchannelstate':{'type':Sequelize[_0xe8d0('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xe8d0('0x2')]},'destcalleridnum':{'type':Sequelize[_0xe8d0('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xe8d0('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xe8d0('0x2')]},'destlanguage':{'type':Sequelize[_0xe8d0('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xe8d0('0x2')]},'destpriority':{'type':Sequelize[_0xe8d0('0x3')]},'destuniqueid':{'type':Sequelize[_0xe8d0('0x2')]},'destlinkedid':{'type':Sequelize[_0xe8d0('0x2')]},'dialstring':{'type':Sequelize[_0xe8d0('0x2')]},'dialstatus':{'type':Sequelize[_0xe8d0('0x2')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xe8d0('0x4')]},'endtime':{'type':Sequelize[_0xe8d0('0x4')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0xe8d0('0x5')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0xe8d0('0x3')]},'billableseconds':{'type':Sequelize[_0xe8d0('0x3')]}};
\ No newline at end of file
+var _0x9a19=['sequelize','exports','STRING','INTEGER','DATE','called,connect,complete'];(function(_0x9699f0,_0x354c17){var _0x17e53a=function(_0x50ff7d){while(--_0x50ff7d){_0x9699f0['push'](_0x9699f0['shift']());}};_0x17e53a(++_0x354c17);}(_0x9a19,0x114));var _0x99a1=function(_0x4eafed,_0x26e2bc){_0x4eafed=_0x4eafed-0x0;var _0x159c85=_0x9a19[_0x4eafed];return _0x159c85;};'use strict';var Sequelize=require(_0x99a1('0x0'));module[_0x99a1('0x1')]={'privilege':{'type':Sequelize[_0x99a1('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x99a1('0x3')]},'channelstatedesc':{'type':Sequelize[_0x99a1('0x2')]},'calleridnum':{'type':Sequelize[_0x99a1('0x2')]},'calleridname':{'type':Sequelize[_0x99a1('0x2')]},'connectedlinenum':{'type':Sequelize[_0x99a1('0x2')]},'connectedlinename':{'type':Sequelize[_0x99a1('0x2')]},'language':{'type':Sequelize[_0x99a1('0x2')]},'accountcode':{'type':Sequelize[_0x99a1('0x2')]},'context':{'type':Sequelize[_0x99a1('0x2')]},'exten':{'type':Sequelize[_0x99a1('0x2')]},'priority':{'type':Sequelize[_0x99a1('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x99a1('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x99a1('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x99a1('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x99a1('0x2')]},'destlanguage':{'type':Sequelize[_0x99a1('0x2')]},'destaccountcode':{'type':Sequelize[_0x99a1('0x2')]},'destcontext':{'type':Sequelize[_0x99a1('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x99a1('0x3')]},'destuniqueid':{'type':Sequelize[_0x99a1('0x2')]},'destlinkedid':{'type':Sequelize[_0x99a1('0x2')]},'dialstring':{'type':Sequelize[_0x99a1('0x2')]},'dialstatus':{'type':Sequelize[_0x99a1('0x2')]},'starttime':{'type':Sequelize[_0x99a1('0x4')]},'answertime':{'type':Sequelize[_0x99a1('0x4')]},'endtime':{'type':Sequelize[_0x99a1('0x4')]},'lastevent':{'type':Sequelize[_0x99a1('0x2')],'comment':_0x99a1('0x5')},'routeId':{'type':Sequelize[_0x99a1('0x3')]},'duration':{'type':Sequelize[_0x99a1('0x3')]},'holdtime':{'type':Sequelize[_0x99a1('0x3')]},'billableseconds':{'type':Sequelize[_0x99a1('0x3')]}};
\ No newline at end of file
index fdaac34..c7dd5f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xece1=['limit','order','sort','pick','filters','filter','merge','where','VIRTUAL','options','include','VoiceDialReport','rows','catch','show','params','rawAttributes','keys','length','includeAll','find','create','body','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','count','offset','set','Content-Range','apply','update','then','destroy','error','stack','name','send','map','fieldName','type','query','intersection','model','attributes','fields'];(function(_0x5bf840,_0x9fc2ab){var _0x4f4355=function(_0x5bef49){while(--_0x5bef49){_0x5bf840['push'](_0x5bf840['shift']());}};_0x4f4355(++_0x9fc2ab);}(_0xece1,0x138));var _0x1ece=function(_0x5d3f8d,_0x2e5fef){_0x5d3f8d=_0x5d3f8d-0x0;var _0x3a3e38=_0xece1[_0x5d3f8d];return _0x3a3e38;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1ece('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1ece('0x1'));var rp=require(_0x1ece('0x2'));var moment=require(_0x1ece('0x3'));var BPromise=require(_0x1ece('0x4'));var Mustache=require(_0x1ece('0x5'));var util=require(_0x1ece('0x6'));var path=require(_0x1ece('0x7'));var sox=require(_0x1ece('0x8'));var csv=require(_0x1ece('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1ece('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1ece('0xb'));var jsforce=require(_0x1ece('0xc'));var deskjs=require(_0x1ece('0xd'));var toCsv=require(_0x1ece('0x9'));var querystring=require(_0x1ece('0xe'));var Papa=require('papaparse');var Redis=require(_0x1ece('0xf'));var authService=require(_0x1ece('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x1ece('0x11'));var hardwareService=require(_0x1ece('0x12'));var logger=require(_0x1ece('0x13'))(_0x1ece('0x14'));var utils=require(_0x1ece('0x15'));var config=require(_0x1ece('0x16'));var licenseUtil=require(_0x1ece('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4ef89c,_0x5421f6){_0x5421f6=_0x5421f6||0xcc;return function(_0x2085dc){if(_0x2085dc){return _0x4ef89c[_0x1ece('0x18')](_0x5421f6);}return _0x4ef89c[_0x1ece('0x19')](_0x5421f6)[_0x1ece('0x1a')]();};}function respondWithResult(_0x5e5d53,_0x418ec5){_0x418ec5=_0x418ec5||0xc8;return function(_0x56f372){if(_0x56f372){return _0x5e5d53[_0x1ece('0x19')](_0x418ec5)['json'](_0x56f372);}};}function respondWithFilteredResult(_0x3e2c46,_0x2a4575){return function(_0x254fed){if(_0x254fed){var _0x2b4751=typeof _0x2a4575['offset']===_0x1ece('0x1b')&&typeof _0x2a4575['limit']===_0x1ece('0x1b');var _0x4877cf=_0x254fed[_0x1ece('0x1c')];var _0xf4ce36=_0x2b4751?0x0:_0x2a4575[_0x1ece('0x1d')];var _0x23af00=_0x2b4751?_0x254fed[_0x1ece('0x1c')]:_0x2a4575[_0x1ece('0x1d')]+_0x2a4575['limit'];var _0x5ad70c;if(_0x23af00>=_0x4877cf){_0x23af00=_0x4877cf;_0x5ad70c=0xc8;}else{_0x5ad70c=0xce;}_0x3e2c46[_0x1ece('0x19')](_0x5ad70c);return _0x3e2c46[_0x1ece('0x1e')](_0x1ece('0x1f'),_0xf4ce36+'-'+_0x23af00+'/'+_0x4877cf)['json'](_0x254fed);}return null;};}function patchUpdates(_0x5230cc){return function(_0x4fc64f){try{jsonpatch[_0x1ece('0x20')](_0x4fc64f,_0x5230cc,!![]);}catch(_0x2767b1){return BPromise['reject'](_0x2767b1);}return _0x4fc64f['save']();};}function saveUpdates(_0x11689f,_0x2d6f33){return function(_0x252679){if(_0x252679){return _0x252679[_0x1ece('0x21')](_0x11689f)[_0x1ece('0x22')](function(_0x2afe83){return _0x2afe83;});}return null;};}function removeEntity(_0x5b757b,_0x39c13f){return function(_0x13732e){if(_0x13732e){return _0x13732e[_0x1ece('0x23')]()[_0x1ece('0x22')](function(){_0x5b757b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d2a09,_0x3a8841){return function(_0x3cf4c2){if(!_0x3cf4c2){_0x3d2a09[_0x1ece('0x18')](0x194);}return _0x3cf4c2;};}function handleError(_0x20ef0d,_0x4f751b){_0x4f751b=_0x4f751b||0x1f4;return function(_0x3444ef){logger[_0x1ece('0x24')](_0x3444ef[_0x1ece('0x25')]);if(_0x3444ef[_0x1ece('0x26')]){delete _0x3444ef[_0x1ece('0x26')];}_0x20ef0d[_0x1ece('0x19')](_0x4f751b)[_0x1ece('0x27')](_0x3444ef);};}exports['index']=function(_0x5de92f,_0x20f029){var _0x15dd53={},_0x306389={},_0xbbc057={'count':0x0,'rows':[]};var _0x36fde6=_[_0x1ece('0x28')](db['VoiceDialReport']['rawAttributes'],function(_0x306147){return{'name':_0x306147[_0x1ece('0x29')],'type':_0x306147[_0x1ece('0x2a')]['key']};});_0x306389['model']=_[_0x1ece('0x28')](_0x36fde6,_0x1ece('0x26'));_0x306389[_0x1ece('0x2b')]=_['keys'](_0x5de92f[_0x1ece('0x2b')]);_0x306389['filters']=_[_0x1ece('0x2c')](_0x306389[_0x1ece('0x2d')],_0x306389[_0x1ece('0x2b')]);_0x15dd53[_0x1ece('0x2e')]=_['intersection'](_0x306389[_0x1ece('0x2d')],qs[_0x1ece('0x2f')](_0x5de92f['query'][_0x1ece('0x2f')]));_0x15dd53[_0x1ece('0x2e')]=_0x15dd53[_0x1ece('0x2e')]['length']?_0x15dd53[_0x1ece('0x2e')]:_0x306389[_0x1ece('0x2d')];if(!_0x5de92f[_0x1ece('0x2b')]['hasOwnProperty']('nolimit')){_0x15dd53[_0x1ece('0x30')]=qs[_0x1ece('0x30')](_0x5de92f[_0x1ece('0x2b')]['limit']);_0x15dd53[_0x1ece('0x1d')]=qs[_0x1ece('0x1d')](_0x5de92f[_0x1ece('0x2b')][_0x1ece('0x1d')]);}_0x15dd53[_0x1ece('0x31')]=qs[_0x1ece('0x32')](_0x5de92f[_0x1ece('0x2b')]['sort']);_0x15dd53['where']=qs['filters'](_[_0x1ece('0x33')](_0x5de92f[_0x1ece('0x2b')],_0x306389[_0x1ece('0x34')]),_0x36fde6);if(_0x5de92f[_0x1ece('0x2b')][_0x1ece('0x35')]){_0x15dd53['where']=_[_0x1ece('0x36')](_0x15dd53[_0x1ece('0x37')],{'$or':_[_0x1ece('0x28')](_0x36fde6,function(_0x3dd338){if(_0x3dd338[_0x1ece('0x2a')]!==_0x1ece('0x38')){var _0x111e03={};_0x111e03[_0x3dd338[_0x1ece('0x26')]]={'$like':'%'+_0x5de92f[_0x1ece('0x2b')]['filter']+'%'};return _0x111e03;}})});}_0x15dd53=_[_0x1ece('0x36')]({},_0x15dd53,_0x5de92f[_0x1ece('0x39')]);var _0x58a1e2={'where':_0x15dd53[_0x1ece('0x37')]};return db['VoiceDialReport'][_0x1ece('0x1c')](_0x58a1e2)[_0x1ece('0x22')](function(_0x2e768f){_0xbbc057[_0x1ece('0x1c')]=_0x2e768f;if(_0x5de92f['query']['includeAll']){_0x15dd53[_0x1ece('0x3a')]=[{'all':!![]}];}return db[_0x1ece('0x3b')]['findAll'](_0x15dd53);})[_0x1ece('0x22')](function(_0x42d4ed){_0xbbc057[_0x1ece('0x3c')]=_0x42d4ed;return _0xbbc057;})[_0x1ece('0x22')](respondWithFilteredResult(_0x20f029,_0x15dd53))[_0x1ece('0x3d')](handleError(_0x20f029,null));};exports[_0x1ece('0x3e')]=function(_0x4f9821,_0x92361c){var _0x44173a={'raw':!![],'where':{'id':_0x4f9821[_0x1ece('0x3f')]['id']}},_0x30224c={};_0x30224c[_0x1ece('0x2d')]=_['keys'](db['VoiceDialReport'][_0x1ece('0x40')]);_0x30224c[_0x1ece('0x2b')]=_[_0x1ece('0x41')](_0x4f9821[_0x1ece('0x2b')]);_0x30224c[_0x1ece('0x34')]=_['intersection'](_0x30224c[_0x1ece('0x2d')],_0x30224c[_0x1ece('0x2b')]);_0x44173a[_0x1ece('0x2e')]=_[_0x1ece('0x2c')](_0x30224c[_0x1ece('0x2d')],qs[_0x1ece('0x2f')](_0x4f9821['query'][_0x1ece('0x2f')]));_0x44173a['attributes']=_0x44173a['attributes'][_0x1ece('0x42')]?_0x44173a[_0x1ece('0x2e')]:_0x30224c[_0x1ece('0x2d')];if(_0x4f9821[_0x1ece('0x2b')][_0x1ece('0x43')]){_0x44173a[_0x1ece('0x3a')]=[{'all':!![]}];}_0x44173a=_['merge']({},_0x44173a,_0x4f9821['options']);return db[_0x1ece('0x3b')][_0x1ece('0x44')](_0x44173a)[_0x1ece('0x22')](handleEntityNotFound(_0x92361c,null))['then'](respondWithResult(_0x92361c,null))[_0x1ece('0x3d')](handleError(_0x92361c,null));};exports[_0x1ece('0x45')]=function(_0x2d55b2,_0x5e911a){return db[_0x1ece('0x3b')][_0x1ece('0x45')](_0x2d55b2['body'],{})['then'](respondWithResult(_0x5e911a,0xc9))[_0x1ece('0x3d')](handleError(_0x5e911a,null));};exports[_0x1ece('0x21')]=function(_0x389963,_0x28f96b){if(_0x389963[_0x1ece('0x46')]['id']){delete _0x389963[_0x1ece('0x46')]['id'];}return db[_0x1ece('0x3b')][_0x1ece('0x44')]({'where':{'id':_0x389963[_0x1ece('0x3f')]['id']}})[_0x1ece('0x22')](handleEntityNotFound(_0x28f96b,null))['then'](saveUpdates(_0x389963[_0x1ece('0x46')],null))[_0x1ece('0x22')](respondWithResult(_0x28f96b,null))[_0x1ece('0x3d')](handleError(_0x28f96b,null));};exports[_0x1ece('0x23')]=function(_0x4a1c90,_0x3fd588){return db[_0x1ece('0x3b')][_0x1ece('0x44')]({'where':{'id':_0x4a1c90[_0x1ece('0x3f')]['id']}})[_0x1ece('0x22')](handleEntityNotFound(_0x3fd588,null))['then'](removeEntity(_0x3fd588,null))['catch'](handleError(_0x3fd588,null));};exports[_0x1ece('0x47')]=function(_0x5f4a78,_0x481f0d){return db['VoiceDialReport'][_0x1ece('0x47')]()['then'](respondWithResult(_0x481f0d,null))[_0x1ece('0x3d')](handleError(_0x481f0d,null));};
\ No newline at end of file
+var _0x332d=['name','index','map','VoiceDialReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','sendStatus','error'];(function(_0x857352,_0x3cf129){var _0x2a68b5=function(_0x81ec4f){while(--_0x81ec4f){_0x857352['push'](_0x857352['shift']());}};_0x2a68b5(++_0x3cf129);}(_0x332d,0x74));var _0xd332=function(_0x4e6515,_0x160775){_0x4e6515=_0x4e6515-0x0;var _0x1acb7e=_0x332d[_0x4e6515];return _0x1acb7e;};'use strict';var emlformat=require(_0xd332('0x0'));var rimraf=require(_0xd332('0x1'));var zipdir=require(_0xd332('0x2'));var jsonpatch=require(_0xd332('0x3'));var rp=require('request-promise');var moment=require(_0xd332('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd332('0x5'));var util=require(_0xd332('0x6'));var path=require(_0xd332('0x7'));var sox=require(_0xd332('0x8'));var csv=require(_0xd332('0x9'));var ejs=require(_0xd332('0xa'));var fs=require('fs');var fs_extra=require(_0xd332('0xb'));var _=require(_0xd332('0xc'));var squel=require('squel');var crypto=require(_0xd332('0xd'));var jsforce=require(_0xd332('0xe'));var deskjs=require(_0xd332('0xf'));var toCsv=require(_0xd332('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd332('0x10'));var authService=require(_0xd332('0x11'));var qs=require(_0xd332('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd332('0x13'));var logger=require(_0xd332('0x14'))(_0xd332('0x15'));var utils=require(_0xd332('0x16'));var config=require(_0xd332('0x17'));var licenseUtil=require(_0xd332('0x18'));var db=require(_0xd332('0x19'))['db'];function respondWithStatusCode(_0x5a014f,_0x349dfb){_0x349dfb=_0x349dfb||0xcc;return function(_0x1ef0e0){if(_0x1ef0e0){return _0x5a014f['sendStatus'](_0x349dfb);}return _0x5a014f[_0xd332('0x1a')](_0x349dfb)[_0xd332('0x1b')]();};}function respondWithResult(_0x33855f,_0x5361c8){_0x5361c8=_0x5361c8||0xc8;return function(_0x4c05a3){if(_0x4c05a3){return _0x33855f[_0xd332('0x1a')](_0x5361c8)[_0xd332('0x1c')](_0x4c05a3);}};}function respondWithFilteredResult(_0x2d4e9a,_0x1fd589){return function(_0x2ab8cb){if(_0x2ab8cb){var _0x3edfee=typeof _0x1fd589[_0xd332('0x1d')]==='undefined'&&typeof _0x1fd589[_0xd332('0x1e')]===_0xd332('0x1f');var _0x179762=_0x2ab8cb[_0xd332('0x20')];var _0x19da22=_0x3edfee?0x0:_0x1fd589['offset'];var _0x7491e2=_0x3edfee?_0x2ab8cb[_0xd332('0x20')]:_0x1fd589[_0xd332('0x1d')]+_0x1fd589['limit'];var _0x395e3e;if(_0x7491e2>=_0x179762){_0x7491e2=_0x179762;_0x395e3e=0xc8;}else{_0x395e3e=0xce;}_0x2d4e9a[_0xd332('0x1a')](_0x395e3e);return _0x2d4e9a[_0xd332('0x21')](_0xd332('0x22'),_0x19da22+'-'+_0x7491e2+'/'+_0x179762)[_0xd332('0x1c')](_0x2ab8cb);}return null;};}function patchUpdates(_0x550237){return function(_0x563a47){try{jsonpatch['apply'](_0x563a47,_0x550237,!![]);}catch(_0x22b482){return BPromise[_0xd332('0x23')](_0x22b482);}return _0x563a47['save']();};}function saveUpdates(_0x2b83a,_0x196328){return function(_0x472024){if(_0x472024){return _0x472024[_0xd332('0x24')](_0x2b83a)[_0xd332('0x25')](function(_0x4dd901){return _0x4dd901;});}return null;};}function removeEntity(_0x291489,_0x1844dd){return function(_0x377618){if(_0x377618){return _0x377618['destroy']()[_0xd332('0x25')](function(){_0x291489[_0xd332('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x54e94f,_0x49a593){return function(_0xdc56fa){if(!_0xdc56fa){_0x54e94f[_0xd332('0x26')](0x194);}return _0xdc56fa;};}function handleError(_0x13ce04,_0x5f4f2b){_0x5f4f2b=_0x5f4f2b||0x1f4;return function(_0x13e696){logger[_0xd332('0x27')](_0x13e696['stack']);if(_0x13e696['name']){delete _0x13e696[_0xd332('0x28')];}_0x13ce04[_0xd332('0x1a')](_0x5f4f2b)['send'](_0x13e696);};}exports[_0xd332('0x29')]=function(_0x1f5de6,_0x1fc989){var _0x1f253b={},_0x10fc44={},_0x2f40a3={'count':0x0,'rows':[]};var _0x11f2fc=_[_0xd332('0x2a')](db[_0xd332('0x2b')][_0xd332('0x2c')],function(_0x1f190b){return{'name':_0x1f190b[_0xd332('0x2d')],'type':_0x1f190b[_0xd332('0x2e')][_0xd332('0x2f')]};});_0x10fc44[_0xd332('0x30')]=_['map'](_0x11f2fc,_0xd332('0x28'));_0x10fc44[_0xd332('0x31')]=_['keys'](_0x1f5de6[_0xd332('0x31')]);_0x10fc44[_0xd332('0x32')]=_[_0xd332('0x33')](_0x10fc44['model'],_0x10fc44[_0xd332('0x31')]);_0x1f253b[_0xd332('0x34')]=_['intersection'](_0x10fc44['model'],qs[_0xd332('0x35')](_0x1f5de6[_0xd332('0x31')][_0xd332('0x35')]));_0x1f253b[_0xd332('0x34')]=_0x1f253b[_0xd332('0x34')]['length']?_0x1f253b[_0xd332('0x34')]:_0x10fc44[_0xd332('0x30')];if(!_0x1f5de6['query'][_0xd332('0x36')](_0xd332('0x37'))){_0x1f253b['limit']=qs[_0xd332('0x1e')](_0x1f5de6['query'][_0xd332('0x1e')]);_0x1f253b[_0xd332('0x1d')]=qs[_0xd332('0x1d')](_0x1f5de6[_0xd332('0x31')]['offset']);}_0x1f253b[_0xd332('0x38')]=qs[_0xd332('0x39')](_0x1f5de6[_0xd332('0x31')][_0xd332('0x39')]);_0x1f253b[_0xd332('0x3a')]=qs[_0xd332('0x32')](_[_0xd332('0x3b')](_0x1f5de6[_0xd332('0x31')],_0x10fc44[_0xd332('0x32')]),_0x11f2fc);if(_0x1f5de6[_0xd332('0x31')][_0xd332('0x3c')]){_0x1f253b['where']=_[_0xd332('0x3d')](_0x1f253b[_0xd332('0x3a')],{'$or':_['map'](_0x11f2fc,function(_0xf2bdfb){if(_0xf2bdfb[_0xd332('0x2e')]!==_0xd332('0x3e')){var _0x20a954={};_0x20a954[_0xf2bdfb['name']]={'$like':'%'+_0x1f5de6[_0xd332('0x31')][_0xd332('0x3c')]+'%'};return _0x20a954;}})});}_0x1f253b=_[_0xd332('0x3d')]({},_0x1f253b,_0x1f5de6[_0xd332('0x3f')]);var _0x41e737={'where':_0x1f253b['where']};return db['VoiceDialReport'][_0xd332('0x20')](_0x41e737)[_0xd332('0x25')](function(_0x163b61){_0x2f40a3[_0xd332('0x20')]=_0x163b61;if(_0x1f5de6[_0xd332('0x31')][_0xd332('0x40')]){_0x1f253b[_0xd332('0x41')]=[{'all':!![]}];}return db[_0xd332('0x2b')][_0xd332('0x42')](_0x1f253b);})['then'](function(_0x309c67){_0x2f40a3[_0xd332('0x43')]=_0x309c67;return _0x2f40a3;})['then'](respondWithFilteredResult(_0x1fc989,_0x1f253b))[_0xd332('0x44')](handleError(_0x1fc989,null));};exports[_0xd332('0x45')]=function(_0x4adf0a,_0x19f329){var _0x7ff1a7={'raw':!![],'where':{'id':_0x4adf0a[_0xd332('0x46')]['id']}},_0x4a662c={};_0x4a662c[_0xd332('0x30')]=_[_0xd332('0x47')](db[_0xd332('0x2b')][_0xd332('0x2c')]);_0x4a662c[_0xd332('0x31')]=_[_0xd332('0x47')](_0x4adf0a[_0xd332('0x31')]);_0x4a662c[_0xd332('0x32')]=_['intersection'](_0x4a662c[_0xd332('0x30')],_0x4a662c['query']);_0x7ff1a7[_0xd332('0x34')]=_['intersection'](_0x4a662c['model'],qs[_0xd332('0x35')](_0x4adf0a[_0xd332('0x31')][_0xd332('0x35')]));_0x7ff1a7[_0xd332('0x34')]=_0x7ff1a7[_0xd332('0x34')][_0xd332('0x48')]?_0x7ff1a7[_0xd332('0x34')]:_0x4a662c[_0xd332('0x30')];if(_0x4adf0a['query'][_0xd332('0x40')]){_0x7ff1a7[_0xd332('0x41')]=[{'all':!![]}];}_0x7ff1a7=_['merge']({},_0x7ff1a7,_0x4adf0a[_0xd332('0x3f')]);return db[_0xd332('0x2b')][_0xd332('0x49')](_0x7ff1a7)['then'](handleEntityNotFound(_0x19f329,null))['then'](respondWithResult(_0x19f329,null))[_0xd332('0x44')](handleError(_0x19f329,null));};exports[_0xd332('0x4a')]=function(_0x328d41,_0x10fe04){return db[_0xd332('0x2b')][_0xd332('0x4a')](_0x328d41[_0xd332('0x4b')],{})['then'](respondWithResult(_0x10fe04,0xc9))[_0xd332('0x44')](handleError(_0x10fe04,null));};exports[_0xd332('0x24')]=function(_0x4bfc75,_0x3d28a1){if(_0x4bfc75[_0xd332('0x4b')]['id']){delete _0x4bfc75[_0xd332('0x4b')]['id'];}return db[_0xd332('0x2b')][_0xd332('0x49')]({'where':{'id':_0x4bfc75['params']['id']}})[_0xd332('0x25')](handleEntityNotFound(_0x3d28a1,null))[_0xd332('0x25')](saveUpdates(_0x4bfc75[_0xd332('0x4b')],null))['then'](respondWithResult(_0x3d28a1,null))[_0xd332('0x44')](handleError(_0x3d28a1,null));};exports[_0xd332('0x4c')]=function(_0x2fbe01,_0x42878e){return db[_0xd332('0x2b')][_0xd332('0x49')]({'where':{'id':_0x2fbe01[_0xd332('0x46')]['id']}})['then'](handleEntityNotFound(_0x42878e,null))[_0xd332('0x25')](removeEntity(_0x42878e,null))[_0xd332('0x44')](handleError(_0x42878e,null));};exports['describe']=function(_0x4972be,_0x365aee){return db[_0xd332('0x2b')][_0xd332('0x4d')]()[_0xd332('0x25')](respondWithResult(_0x365aee,null))[_0xd332('0x44')](handleError(_0x365aee,null));};
\ No newline at end of file
index cb07715..ad30f0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1823=['lodash','api','request-promise','path','rimraf','../../config/environment','./voiceDialReport.attributes','define','VoiceDialReport','uniqueid'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x1823,0xe6));var _0x3182=function(_0x3af76b,_0x3ff964){_0x3af76b=_0x3af76b-0x0;var _0x441064=_0x1823[_0x3af76b];return _0x441064;};'use strict';var _=require(_0x3182('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3182('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3182('0x2'));var fs=require('fs');var path=require(_0x3182('0x3'));var rimraf=require(_0x3182('0x4'));var config=require(_0x3182('0x5'));var attributes=require(_0x3182('0x6'));module['exports']=function(_0x2e45e4,_0xc8ba4c){return _0x2e45e4[_0x3182('0x7')](_0x3182('0x8'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0x3182('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb2a=['bluebird','request-promise','rimraf','./voiceDialReport.attributes','exports','define','report_dial','lodash','util','../../config/logger'];(function(_0x4818ba,_0x442d88){var _0x1aefcf=function(_0x7e6986){while(--_0x7e6986){_0x4818ba['push'](_0x4818ba['shift']());}};_0x1aefcf(++_0x442d88);}(_0xdb2a,0x16f));var _0xadb2=function(_0x222c1d,_0x3dd7a3){_0x222c1d=_0x222c1d-0x0;var _0x45922d=_0xdb2a[_0x222c1d];return _0x45922d;};'use strict';var _=require(_0xadb2('0x0'));var util=require(_0xadb2('0x1'));var logger=require(_0xadb2('0x2'))('api');var moment=require('moment');var BPromise=require(_0xadb2('0x3'));var rp=require(_0xadb2('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xadb2('0x5'));var config=require('../../config/environment');var attributes=require(_0xadb2('0x6'));module[_0xadb2('0x7')]=function(_0x1f5c7e,_0x297e69){return _0x1f5c7e[_0xadb2('0x8')]('VoiceDialReport',attributes,{'tableName':_0xadb2('0x9'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 21d056c..b96d78e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ed7=['../../config/logger','rpc','jayson/promise','client','request','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','VoiceDialReport,\x20%s,\x20%s,\x20%s','error','code','message','result','VoiceDialReport','create','options','raw','then','CreateVoiceDialReport','debug','UpdateVoiceDialReport','update','body','where','attributes','limit','stringify','lodash','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x4dafa5,_0x31ab97){var _0x4ad399=function(_0x23ab56){while(--_0x23ab56){_0x4dafa5['push'](_0x4dafa5['shift']());}};_0x4ad399(++_0x31ab97);}(_0x3ed7,0x165));var _0x73ed=function(_0x54b1f7,_0x5724aa){_0x54b1f7=_0x54b1f7-0x0;var _0x2a069c=_0x3ed7[_0x54b1f7];return _0x2a069c;};'use strict';var _=require(_0x73ed('0x0'));var util=require('util');var moment=require(_0x73ed('0x1'));var BPromise=require(_0x73ed('0x2'));var rs=require(_0x73ed('0x3'));var fs=require('fs');var Redis=require(_0x73ed('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x73ed('0x5'));var logger=require(_0x73ed('0x6'))(_0x73ed('0x7'));var config=require('../../config/environment');var jayson=require(_0x73ed('0x8'));var client=jayson[_0x73ed('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x7508bc,_0x1a7ce3,_0xce0e74){return new BPromise(function(_0x40c42c,_0x296ea3){return client[_0x73ed('0xa')](_0x7508bc,_0xce0e74)['then'](function(_0x2adf0c){logger[_0x73ed('0xb')](_0x73ed('0xc'),_0x1a7ce3,_0x73ed('0xd'));logger['debug'](_0x73ed('0xe'),_0x1a7ce3,'request\x20sent',JSON['stringify'](_0x2adf0c));if(_0x2adf0c['error']){if(_0x2adf0c[_0x73ed('0xf')][_0x73ed('0x10')]===0x1f4){logger['error'](_0x73ed('0xc'),_0x1a7ce3,_0x2adf0c[_0x73ed('0xf')][_0x73ed('0x11')]);return _0x296ea3(_0x2adf0c[_0x73ed('0xf')][_0x73ed('0x11')]);}logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x1a7ce3,_0x2adf0c[_0x73ed('0xf')]['message']);return _0x40c42c(_0x2adf0c['error'][_0x73ed('0x11')]);}else{logger['info']('VoiceDialReport,\x20%s,\x20%s',_0x1a7ce3,_0x73ed('0xd'));_0x40c42c(_0x2adf0c[_0x73ed('0x12')][_0x73ed('0x11')]);}})['catch'](function(_0x170985){logger[_0x73ed('0xf')](_0x73ed('0xc'),_0x1a7ce3,_0x170985);_0x296ea3(_0x170985);});});}exports['CreateVoiceDialReport']=function(_0x8dd34a){var _0x18b890=this;return new Promise(function(_0x3284da,_0x29c79a){return db[_0x73ed('0x13')][_0x73ed('0x14')](_0x8dd34a['body'],{'raw':_0x8dd34a[_0x73ed('0x15')]?_0x8dd34a['options'][_0x73ed('0x16')]===undefined?!![]:![]:!![]})[_0x73ed('0x17')](function(_0x5799ac){logger['info'](_0x73ed('0x18'),_0x8dd34a);logger[_0x73ed('0x19')](_0x73ed('0x18'),_0x8dd34a,JSON['stringify'](_0x5799ac));_0x3284da(_0x5799ac);})['catch'](function(_0x2c1877){logger['error'](_0x73ed('0x18'),_0x2c1877[_0x73ed('0x11')],_0x8dd34a);_0x29c79a(_0x18b890['error'](0x1f4,_0x2c1877[_0x73ed('0x11')]));});});};exports[_0x73ed('0x1a')]=function(_0x575ade){var _0x49c94b=this;return new Promise(function(_0x3f602e,_0x156a33){return db[_0x73ed('0x13')][_0x73ed('0x1b')](_0x575ade[_0x73ed('0x1c')],{'raw':_0x575ade[_0x73ed('0x15')]?_0x575ade[_0x73ed('0x15')][_0x73ed('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x575ade[_0x73ed('0x15')]?_0x575ade['options'][_0x73ed('0x1d')]||null:null,'attributes':_0x575ade['options']?_0x575ade[_0x73ed('0x15')][_0x73ed('0x1e')]||null:null,'limit':_0x575ade[_0x73ed('0x15')]?_0x575ade[_0x73ed('0x15')][_0x73ed('0x1f')]||null:null})[_0x73ed('0x17')](function(_0x15e5f9){logger[_0x73ed('0xb')](_0x73ed('0x1a'),_0x575ade);logger[_0x73ed('0x19')](_0x73ed('0x1a'),_0x575ade,JSON[_0x73ed('0x20')](_0x15e5f9));_0x3f602e(_0x15e5f9);})['catch'](function(_0x4538dc){logger['error'](_0x73ed('0x1a'),_0x4538dc[_0x73ed('0x11')],_0x575ade);_0x156a33(_0x49c94b[_0x73ed('0xf')](0x1f4,_0x4538dc[_0x73ed('0x11')]));});});};
\ No newline at end of file
+var _0xe77f=['info','VoiceDialReport,\x20%s,\x20%s','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateVoiceDialReport','body','options','UpdateVoiceDialReport','VoiceDialReport','update','raw','where','attributes','limit','then','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request'];(function(_0x116a06,_0x5826ee){var _0x3a962a=function(_0x39dc53){while(--_0x39dc53){_0x116a06['push'](_0x116a06['shift']());}};_0x3a962a(++_0x5826ee);}(_0xe77f,0x134));var _0xfe77=function(_0x1d4ce4,_0x43a4b3){_0x1d4ce4=_0x1d4ce4-0x0;var _0x37121a=_0xe77f[_0x1d4ce4];return _0x37121a;};'use strict';var _=require('lodash');var util=require(_0xfe77('0x0'));var moment=require(_0xfe77('0x1'));var BPromise=require(_0xfe77('0x2'));var rs=require(_0xfe77('0x3'));var fs=require('fs');var Redis=require(_0xfe77('0x4'));var db=require(_0xfe77('0x5'))['db'];var utils=require(_0xfe77('0x6'));var logger=require(_0xfe77('0x7'))(_0xfe77('0x8'));var config=require('../../config/environment');var jayson=require(_0xfe77('0x9'));var client=jayson['client'][_0xfe77('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x17dc3f,_0x3e9539,_0x257b58){return new BPromise(function(_0x3726e5,_0x30300a){return client[_0xfe77('0xb')](_0x17dc3f,_0x257b58)['then'](function(_0x48955f){logger[_0xfe77('0xc')](_0xfe77('0xd'),_0x3e9539,'request\x20sent');logger[_0xfe77('0xe')](_0xfe77('0xf'),_0x3e9539,'request\x20sent',JSON[_0xfe77('0x10')](_0x48955f));if(_0x48955f['error']){if(_0x48955f['error']['code']===0x1f4){logger[_0xfe77('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x3e9539,_0x48955f[_0xfe77('0x11')][_0xfe77('0x12')]);return _0x30300a(_0x48955f[_0xfe77('0x11')][_0xfe77('0x12')]);}logger['error'](_0xfe77('0xd'),_0x3e9539,_0x48955f[_0xfe77('0x11')][_0xfe77('0x12')]);return _0x3726e5(_0x48955f['error'][_0xfe77('0x12')]);}else{logger[_0xfe77('0xc')]('VoiceDialReport,\x20%s,\x20%s',_0x3e9539,'request\x20sent');_0x3726e5(_0x48955f[_0xfe77('0x13')][_0xfe77('0x12')]);}})[_0xfe77('0x14')](function(_0x538f70){logger['error'](_0xfe77('0xd'),_0x3e9539,_0x538f70);_0x30300a(_0x538f70);});});}exports[_0xfe77('0x15')]=function(_0x35e918){var _0x3e30ab=this;return new Promise(function(_0x52066b,_0x46b0ea){return db['VoiceDialReport']['create'](_0x35e918[_0xfe77('0x16')],{'raw':_0x35e918[_0xfe77('0x17')]?_0x35e918[_0xfe77('0x17')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x67f92d){logger[_0xfe77('0xc')]('CreateVoiceDialReport',_0x35e918);logger[_0xfe77('0xe')](_0xfe77('0x15'),_0x35e918,JSON[_0xfe77('0x10')](_0x67f92d));_0x52066b(_0x67f92d);})[_0xfe77('0x14')](function(_0x2b4371){logger[_0xfe77('0x11')](_0xfe77('0x15'),_0x2b4371['message'],_0x35e918);_0x46b0ea(_0x3e30ab['error'](0x1f4,_0x2b4371[_0xfe77('0x12')]));});});};exports[_0xfe77('0x18')]=function(_0x3ac3f9){var _0x171b59=this;return new Promise(function(_0x295ba3,_0x1ed1c5){return db[_0xfe77('0x19')][_0xfe77('0x1a')](_0x3ac3f9[_0xfe77('0x16')],{'raw':_0x3ac3f9[_0xfe77('0x17')]?_0x3ac3f9[_0xfe77('0x17')][_0xfe77('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ac3f9[_0xfe77('0x17')]?_0x3ac3f9['options'][_0xfe77('0x1c')]||null:null,'attributes':_0x3ac3f9['options']?_0x3ac3f9[_0xfe77('0x17')][_0xfe77('0x1d')]||null:null,'limit':_0x3ac3f9['options']?_0x3ac3f9['options'][_0xfe77('0x1e')]||null:null})[_0xfe77('0x1f')](function(_0x24730a){logger[_0xfe77('0xc')](_0xfe77('0x18'),_0x3ac3f9);logger['debug']('UpdateVoiceDialReport',_0x3ac3f9,JSON[_0xfe77('0x10')](_0x24730a));_0x295ba3(_0x24730a);})[_0xfe77('0x14')](function(_0x1d019e){logger[_0xfe77('0x11')]('UpdateVoiceDialReport',_0x1d019e[_0xfe77('0x12')],_0x3ac3f9);_0x1ed1c5(_0x171b59['error'](0x1f4,_0x1d019e[_0xfe77('0x12')]));});});};
\ No newline at end of file
index 0e16963..174d12b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4369=['../../components/auth/service','../../config/environment','./voiceExtension.controller','isAuthenticated','get','/:id','show','post','create','/:id/applications','addApplications','put','delete','destroy','exports','multer','util','Router'];(function(_0x43a37c,_0x25a567){var _0x5d1d40=function(_0x3ec673){while(--_0x3ec673){_0x43a37c['push'](_0x43a37c['shift']());}};_0x5d1d40(++_0x25a567);}(_0x4369,0xc3));var _0x9436=function(_0x8ae98b,_0x155f88){_0x8ae98b=_0x8ae98b-0x0;var _0xc30bd4=_0x4369[_0x8ae98b];return _0xc30bd4;};'use strict';var multer=require(_0x9436('0x0'));var util=require(_0x9436('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9436('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x9436('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x9436('0x4'));var controller=require(_0x9436('0x5'));router['get']('/',auth[_0x9436('0x6')](),controller['index']);router[_0x9436('0x7')](_0x9436('0x8'),auth[_0x9436('0x6')](),controller[_0x9436('0x9')]);router[_0x9436('0xa')]('/',auth[_0x9436('0x6')](),controller[_0x9436('0xb')]);router[_0x9436('0xa')](_0x9436('0xc'),auth[_0x9436('0x6')](),controller[_0x9436('0xd')]);router[_0x9436('0xe')](_0x9436('0x8'),auth[_0x9436('0x6')](),controller['update']);router[_0x9436('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x9436('0x10')]);module[_0x9436('0x11')]=router;
\ No newline at end of file
+var _0x543c=['../../config/environment','./voiceExtension.controller','isAuthenticated','index','get','/:id','show','create','post','/:id/applications','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service'];(function(_0x1b5e7f,_0x41a1a6){var _0x228cb8=function(_0x334b31){while(--_0x334b31){_0x1b5e7f['push'](_0x1b5e7f['shift']());}};_0x228cb8(++_0x41a1a6);}(_0x543c,0xd6));var _0xc543=function(_0x5c2c7c,_0xa7d3b1){_0x5c2c7c=_0x5c2c7c-0x0;var _0xea7ffe=_0x543c[_0x5c2c7c];return _0xea7ffe;};'use strict';var multer=require(_0xc543('0x0'));var util=require('util');var path=require(_0xc543('0x1'));var timeout=require(_0xc543('0x2'));var express=require(_0xc543('0x3'));var router=express[_0xc543('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc543('0x5'));var config=require(_0xc543('0x6'));var controller=require(_0xc543('0x7'));router['get']('/',auth[_0xc543('0x8')](),controller[_0xc543('0x9')]);router[_0xc543('0xa')](_0xc543('0xb'),auth[_0xc543('0x8')](),controller[_0xc543('0xc')]);router['post']('/',auth[_0xc543('0x8')](),controller[_0xc543('0xd')]);router[_0xc543('0xe')](_0xc543('0xf'),auth[_0xc543('0x8')](),controller['addApplications']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc543('0x10')]);router[_0xc543('0x11')](_0xc543('0xb'),auth[_0xc543('0x8')](),controller[_0xc543('0x12')]);module[_0xc543('0x13')]=router;
\ No newline at end of file
index 23373c6..d979e4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','exten','sequelize','STRING','compositeIndex','NoOp','inbound','outbound','inbound-fax','outbound-fax'];(function(_0x19c939,_0x25c861){var _0x6e28b9=function(_0xc00467){while(--_0xc00467){_0x19c939['push'](_0x19c939['shift']());}};_0x6e28b9(++_0x25c861);}(_0xb10b,0x12a));var _0xbb10=function(_0x4a397d,_0x5bab1f){_0x4a397d=_0x4a397d-0x0;var _0x316571=_0xb10b[_0x4a397d];return _0x316571;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'context':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'defaultValue':'1','unique':_0xbb10('0x2')},'tag':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'defaultValue':_0xbb10('0x3')},'appdata':{'type':Sequelize[_0xbb10('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM'](_0xbb10('0x4'),_0xbb10('0x5'),'internal',_0xbb10('0x6'),_0xbb10('0x7'),_0xbb10('0x8'),_0xbb10('0x9')),'allowNull':![]},'description':{'type':Sequelize[_0xbb10('0x1')]},'interval':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'defaultValue':_0xbb10('0xa')},'IntervalId':{'type':Sequelize[_0xbb10('0xb')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize['STRING'],'defaultValue':null},'callerID':{'type':Sequelize[_0xbb10('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0xbb10('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xbb10('0xb')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0xbb10('0xd')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0xbb10('0xe')],'get':function(_0x916a32){return this[_0xbb10('0xf')](_0xbb10('0x10'));}}};
\ No newline at end of file
+var _0xf2ab=['NoOp','inbound','internal','inbound-fax','system','any','INTEGER','BOOLEAN','wav','exten','exports','STRING','compositeIndex'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xf2ab,0x142));var _0xbf2a=function(_0x2c7c29,_0x261cbe){_0x2c7c29=_0x2c7c29-0x0;var _0x5b93e8=_0xf2ab[_0x2c7c29];return _0x5b93e8;};'use strict';var Sequelize=require('sequelize');module[_0xbf2a('0x0')]={'context':{'type':Sequelize[_0xbf2a('0x1')],'allowNull':![],'unique':_0xbf2a('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xbf2a('0x2')},'priority':{'type':Sequelize[_0xbf2a('0x1')],'allowNull':![],'defaultValue':'1','unique':_0xbf2a('0x2')},'tag':{'type':Sequelize[_0xbf2a('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xbf2a('0x1')],'allowNull':![],'defaultValue':_0xbf2a('0x3')},'appdata':{'type':Sequelize[_0xbf2a('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM'](_0xbf2a('0x4'),'outbound',_0xbf2a('0x5'),_0xbf2a('0x6'),'outbound-fax',_0xbf2a('0x7'),_0xbf2a('0x8')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xbf2a('0x1')],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0xbf2a('0x9')]},'isApp':{'type':Sequelize[_0xbf2a('0xa')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize['STRING'],'defaultValue':null},'callerID':{'type':Sequelize[_0xbf2a('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0xbf2a('0xa')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xbf2a('0x9')]},'recordingFormat':{'type':Sequelize[_0xbf2a('0x1')],'defaultValue':_0xbf2a('0xb')},'answer':{'type':Sequelize[_0xbf2a('0xa')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x544940){return this['getDataValue'](_0xbf2a('0xc'));}},'alias':{'type':Sequelize[_0xbf2a('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 34cb799..e02f13f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6753=['UserProfileResource','error','stack','send','VoiceExtension','rawAttributes','key','query','filters','intersection','attributes','model','fields','length','nolimit','order','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','create','body','outbound','startsWith','exten','concat','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','InboundRoutes','userProfileId','autoAssociation','pick','description','recordingFormat','cutdigits','mandatoryDisposition','context','addApplications','findOne','sequelize','map','VoiceExtensionId','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','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/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','offset','limit','count','apply','reject','save','update','then','destroy','inbound','OutboundRoutes','InternalRoutes','internal','filter','value','includes','type','find','name'];(function(_0x413727,_0x17adb1){var _0x5f46d7=function(_0xbb668e){while(--_0xbb668e){_0x413727['push'](_0x413727['shift']());}};_0x5f46d7(++_0x17adb1);}(_0x6753,0xa1));var _0x3675=function(_0x27ca6c,_0x2747b6){_0x27ca6c=_0x27ca6c-0x0;var _0x4a9b74=_0x6753[_0x27ca6c];return _0x4a9b74;};'use strict';var emlformat=require(_0x3675('0x0'));var rimraf=require(_0x3675('0x1'));var zipdir=require(_0x3675('0x2'));var jsonpatch=require(_0x3675('0x3'));var rp=require('request-promise');var moment=require(_0x3675('0x4'));var BPromise=require(_0x3675('0x5'));var Mustache=require('mustache');var util=require(_0x3675('0x6'));var path=require(_0x3675('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3675('0x8'));var _=require(_0x3675('0x9'));var squel=require(_0x3675('0xa'));var crypto=require(_0x3675('0xb'));var jsforce=require(_0x3675('0xc'));var deskjs=require(_0x3675('0xd'));var toCsv=require(_0x3675('0xe'));var querystring=require(_0x3675('0xf'));var Papa=require(_0x3675('0x10'));var Redis=require(_0x3675('0x11'));var authService=require(_0x3675('0x12'));var qs=require(_0x3675('0x13'));var as=require(_0x3675('0x14'));var hardwareService=require(_0x3675('0x15'));var logger=require('../../config/logger')(_0x3675('0x16'));var utils=require(_0x3675('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x3675('0x18'));var db=require(_0x3675('0x19'))['db'];config[_0x3675('0x1a')]=_[_0x3675('0x1b')](config[_0x3675('0x1a')],{'host':_0x3675('0x1c'),'port':0x18eb});var socket=require(_0x3675('0x1d'))(new Redis(config['redis']));require(_0x3675('0x1e'))[_0x3675('0x1f')](socket);function respondWithStatusCode(_0x1297e2,_0x4add5e){_0x4add5e=_0x4add5e||0xcc;return function(_0x51fc88){if(_0x51fc88){return _0x1297e2[_0x3675('0x20')](_0x4add5e);}return _0x1297e2[_0x3675('0x21')](_0x4add5e)[_0x3675('0x22')]();};}function respondWithResult(_0x27e5bb,_0x510233){_0x510233=_0x510233||0xc8;return function(_0x3bf7c5){if(_0x3bf7c5){return _0x27e5bb[_0x3675('0x21')](_0x510233)[_0x3675('0x23')](_0x3bf7c5);}};}function respondWithFilteredResult(_0x22e7ce,_0x2adb30){return function(_0x5940bf){if(_0x5940bf){var _0x43f041=typeof _0x2adb30[_0x3675('0x24')]==='undefined'&&typeof _0x2adb30[_0x3675('0x25')]==='undefined';var _0x49292b=_0x5940bf[_0x3675('0x26')];var _0x54d793=_0x43f041?0x0:_0x2adb30['offset'];var _0x3d1067=_0x43f041?_0x5940bf[_0x3675('0x26')]:_0x2adb30[_0x3675('0x24')]+_0x2adb30['limit'];var _0x448515;if(_0x3d1067>=_0x49292b){_0x3d1067=_0x49292b;_0x448515=0xc8;}else{_0x448515=0xce;}_0x22e7ce[_0x3675('0x21')](_0x448515);return _0x22e7ce['set']('Content-Range',_0x54d793+'-'+_0x3d1067+'/'+_0x49292b)['json'](_0x5940bf);}return null;};}function patchUpdates(_0x129078){return function(_0x31a404){try{jsonpatch[_0x3675('0x27')](_0x31a404,_0x129078,!![]);}catch(_0x45f57){return BPromise[_0x3675('0x28')](_0x45f57);}return _0x31a404[_0x3675('0x29')]();};}function saveUpdates(_0x3a9499,_0x5ca335){return function(_0x29d9e7){if(_0x29d9e7){return _0x29d9e7[_0x3675('0x2a')](_0x3a9499)[_0x3675('0x2b')](function(_0x53f77e){return _0x53f77e;});}return null;};}function removeEntity(_0x5cffde,_0x16637e){return function(_0x461fc9){if(_0x461fc9){return _0x461fc9[_0x3675('0x2c')]()[_0x3675('0x2b')](function(){var _0x2a9e65=_0x461fc9['get']({'plain':!![]});var _0x49afa9=[{'name':'InboundRoutes','value':_0x3675('0x2d'),'ignore':![]},{'name':_0x3675('0x2e'),'value':'outbound','ignore':![]},{'name':_0x3675('0x2f'),'value':_0x3675('0x30'),'ignore':![]}];var _0x2088b0=_(_0x49afa9)[_0x3675('0x31')]('ignore')['map'](_0x3675('0x32'))['value']();if(_[_0x3675('0x33')](_0x2088b0,_0x2a9e65[_0x3675('0x34')])){return;}var _0x5f3d76=_[_0x3675('0x35')](_0x49afa9,['value',_0x2a9e65[_0x3675('0x34')]])[_0x3675('0x36')];return db[_0x3675('0x37')][_0x3675('0x2c')]({'where':{'type':_0x5f3d76,'resourceId':_0x2a9e65['id']}})['then'](function(){return _0x461fc9;});})[_0x3675('0x2b')](function(){_0x5cffde[_0x3675('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a5870,_0x150a77){return function(_0x136286){if(!_0x136286){_0x2a5870['sendStatus'](0x194);}return _0x136286;};}function handleError(_0x1878a9,_0x1b4be8){_0x1b4be8=_0x1b4be8||0x1f4;return function(_0x5360dc){logger[_0x3675('0x38')](_0x5360dc[_0x3675('0x39')]);if(_0x5360dc[_0x3675('0x36')]){delete _0x5360dc[_0x3675('0x36')];}_0x1878a9[_0x3675('0x21')](_0x1b4be8)[_0x3675('0x3a')](_0x5360dc);};}exports['index']=function(_0x31a322,_0x2ad5d8){var _0x178355={},_0x2fe420={},_0x1da58d={'count':0x0,'rows':[]};var _0x237eb4=_['map'](db[_0x3675('0x3b')][_0x3675('0x3c')],function(_0x26fa7e){return{'name':_0x26fa7e['fieldName'],'type':_0x26fa7e[_0x3675('0x34')][_0x3675('0x3d')]};});_0x2fe420['model']=_['map'](_0x237eb4,_0x3675('0x36'));_0x2fe420[_0x3675('0x3e')]=_['keys'](_0x31a322[_0x3675('0x3e')]);_0x2fe420[_0x3675('0x3f')]=_[_0x3675('0x40')](_0x2fe420['model'],_0x2fe420[_0x3675('0x3e')]);_0x178355[_0x3675('0x41')]=_[_0x3675('0x40')](_0x2fe420[_0x3675('0x42')],qs[_0x3675('0x43')](_0x31a322['query'][_0x3675('0x43')]));_0x178355['attributes']=_0x178355['attributes'][_0x3675('0x44')]?_0x178355[_0x3675('0x41')]:_0x2fe420[_0x3675('0x42')];if(!_0x31a322[_0x3675('0x3e')]['hasOwnProperty'](_0x3675('0x45'))){_0x178355[_0x3675('0x25')]=qs[_0x3675('0x25')](_0x31a322[_0x3675('0x3e')][_0x3675('0x25')]);_0x178355[_0x3675('0x24')]=qs[_0x3675('0x24')](_0x31a322[_0x3675('0x3e')][_0x3675('0x24')]);}_0x178355[_0x3675('0x46')]=qs['sort'](_0x31a322[_0x3675('0x3e')]['sort']);_0x178355['where']=qs[_0x3675('0x3f')](_['pick'](_0x31a322[_0x3675('0x3e')],_0x2fe420[_0x3675('0x3f')]),_0x237eb4);if(_0x31a322['query'][_0x3675('0x31')]){_0x178355['where']=_[_0x3675('0x47')](_0x178355[_0x3675('0x48')],{'$or':_['map'](_0x237eb4,function(_0x379ea0){if(_0x379ea0[_0x3675('0x34')]!==_0x3675('0x49')){var _0x44c194={};_0x44c194[_0x379ea0[_0x3675('0x36')]]={'$like':'%'+_0x31a322['query'][_0x3675('0x31')]+'%'};return _0x44c194;}})});}_0x178355=_[_0x3675('0x47')]({},_0x178355,_0x31a322[_0x3675('0x4a')]);var _0xc31fba={'where':_0x178355['where']};return db[_0x3675('0x3b')][_0x3675('0x26')](_0xc31fba)[_0x3675('0x2b')](function(_0x370950){_0x1da58d['count']=_0x370950;if(_0x31a322['query'][_0x3675('0x4b')]){_0x178355[_0x3675('0x4c')]=[{'all':!![]}];}return db[_0x3675('0x3b')][_0x3675('0x4d')](_0x178355);})[_0x3675('0x2b')](function(_0x5765ba){_0x1da58d[_0x3675('0x4e')]=_0x5765ba;return _0x1da58d;})[_0x3675('0x2b')](respondWithFilteredResult(_0x2ad5d8,_0x178355))[_0x3675('0x4f')](handleError(_0x2ad5d8,null));};exports['show']=function(_0x4272a3,_0x31c622){var _0x28f689={'raw':![],'where':{'id':_0x4272a3[_0x3675('0x50')]['id']}},_0x4cc4f5={};_0x4cc4f5['model']=_[_0x3675('0x51')](db[_0x3675('0x3b')][_0x3675('0x3c')]);_0x4cc4f5[_0x3675('0x3e')]=_[_0x3675('0x51')](_0x4272a3[_0x3675('0x3e')]);_0x4cc4f5[_0x3675('0x3f')]=_['intersection'](_0x4cc4f5[_0x3675('0x42')],_0x4cc4f5[_0x3675('0x3e')]);_0x28f689['attributes']=_[_0x3675('0x40')](_0x4cc4f5['model'],qs[_0x3675('0x43')](_0x4272a3[_0x3675('0x3e')][_0x3675('0x43')]));_0x28f689[_0x3675('0x41')]=_0x28f689['attributes']['length']?_0x28f689[_0x3675('0x41')]:_0x4cc4f5[_0x3675('0x42')];if(_0x4272a3['query']['includeAll']){_0x28f689[_0x3675('0x4c')]=[{'all':!![]}];}_0x28f689=_[_0x3675('0x47')]({},_0x28f689,_0x4272a3[_0x3675('0x4a')]);return db[_0x3675('0x3b')]['find'](_0x28f689)['then'](handleEntityNotFound(_0x31c622,null))[_0x3675('0x2b')](respondWithResult(_0x31c622,null))[_0x3675('0x4f')](handleError(_0x31c622,null));};exports[_0x3675('0x2c')]=function(_0x1ab5cc,_0x44e543){return db[_0x3675('0x3b')]['find']({'where':{'id':_0x1ab5cc[_0x3675('0x50')]['id']}})['then'](handleEntityNotFound(_0x44e543,null))[_0x3675('0x2b')](removeEntity(_0x44e543,null))[_0x3675('0x4f')](handleError(_0x44e543,null));};exports[_0x3675('0x52')]=function(_0x1a5c7f,_0x4064fd){if(_0x1a5c7f[_0x3675('0x53')][_0x3675('0x34')]===_0x3675('0x54')&&!_[_0x3675('0x55')](_0x1a5c7f[_0x3675('0x53')][_0x3675('0x56')],'_')){_0x1a5c7f[_0x3675('0x53')][_0x3675('0x56')]='_'[_0x3675('0x57')](_0x1a5c7f['body'][_0x3675('0x56')]);}return db['VoiceExtension']['create'](_0x1a5c7f[_0x3675('0x53')],{'raw':![]})[_0x3675('0x2b')](function(_0x196ce2){var _0x4309d6=_0x1a5c7f[_0x3675('0x58')][_0x3675('0x59')]({'plain':!![]});if(!_0x4309d6)throw new Error(_0x3675('0x5a'));if(_0x4309d6['role']==='user'){var _0x1ec557=_0x196ce2['get']({'plain':!![]});var _0x3a8202=[{'name':_0x3675('0x5b'),'value':_0x3675('0x2d')},{'name':'OutboundRoutes','value':'outbound'},{'name':'InternalRoutes','value':_0x3675('0x30')}];var _0x1443a0=_[_0x3675('0x35')](_0x3a8202,[_0x3675('0x32'),_0x1ec557[_0x3675('0x34')]])['name'];return db['UserProfileSection'][_0x3675('0x35')]({'where':{'name':_0x1443a0,'userProfileId':_0x4309d6[_0x3675('0x5c')]},'raw':!![]})[_0x3675('0x2b')](function(_0x18d8bd){if(_0x18d8bd&&_0x18d8bd[_0x3675('0x5d')]===0x0){return db['UserProfileResource'][_0x3675('0x52')]({'name':_0x1ec557[_0x3675('0x36')],'resourceId':_0x1ec557['id'],'type':_0x18d8bd[_0x3675('0x36')],'sectionId':_0x18d8bd['id']},{})[_0x3675('0x2b')](function(){return _0x196ce2;});}else{return _0x196ce2;}})[_0x3675('0x4f')](function(_0x3b1b22){logger[_0x3675('0x38')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3b1b22);throw _0x3b1b22;});}return _0x196ce2;})[_0x3675('0x2b')](respondWithResult(_0x4064fd,0xc9))['catch'](handleError(_0x4064fd,null));};exports[_0x3675('0x2a')]=function(_0x164bc4,_0x5cb98c){if(_0x164bc4[_0x3675('0x53')]['id']){delete _0x164bc4[_0x3675('0x53')]['id'];}return db[_0x3675('0x3b')]['find']({'where':{'id':_0x164bc4[_0x3675('0x50')]['id']}})['then'](handleEntityNotFound(_0x5cb98c,null))[_0x3675('0x2b')](function(_0x2caa1c){if(_0x2caa1c){return db[_0x3675('0x3b')][_0x3675('0x2a')](_[_0x3675('0x5e')](_0x164bc4[_0x3675('0x53')],['exten','context',_0x3675('0x5f'),_0x3675('0x60'),_0x3675('0x61'),_0x3675('0x62')]),{'where':{'context':_0x2caa1c[_0x3675('0x63')],'exten':_0x2caa1c[_0x3675('0x56')]},'individualHooks':!![]})[_0x3675('0x2b')](function(_0x515ca0){return _0x515ca0;});}return null;})[_0x3675('0x2b')](respondWithStatusCode(_0x5cb98c,null))['catch'](handleError(_0x5cb98c,null));};exports[_0x3675('0x64')]=function(_0x10b74c,_0x21c531,_0x25cde0){return db[_0x3675('0x3b')][_0x3675('0x65')]({'where':{'id':_0x10b74c['params']['id']}})['then'](handleEntityNotFound(_0x21c531,null))[_0x3675('0x2b')](function(_0x49de7e){if(_0x49de7e){return db[_0x3675('0x66')]['transaction'](function(_0x1fcd18){return db['VoiceExtension'][_0x3675('0x2c')]({'where':{'VoiceExtensionId':_0x10b74c['params']['id']},'transaction':_0x1fcd18})['then'](function(_0x33251f){var _0xdf153c=_[_0x3675('0x67')](_0x10b74c[_0x3675('0x53')],function(_0x39354a){_0x39354a[_0x3675('0x68')]=_0x10b74c[_0x3675('0x50')]['id'];return _0x39354a;});return db['VoiceExtension'][_0x3675('0x69')](_0xdf153c,{'transaction':_0x1fcd18});});})[_0x3675('0x2b')](function(){return db['VoiceExtension'][_0x3675('0x6a')]({'where':{'isApp':!![],'VoiceExtensionId':_0x10b74c[_0x3675('0x50')]['id']},'order':_0x3675('0x6b')});});}})[_0x3675('0x2b')](respondWithResult(_0x21c531,null))['catch'](handleError(_0x21c531,null));};
\ No newline at end of file
+var _0x3e3c=['exten','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','mandatoryDisposition','alias','context','sequelize','transaction','VoiceExtensionId','rewriteDial','toLowerCase','true','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','reject','update','then','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','value','includes','type','name','destroy','error','stack','send','map','VoiceExtension','rawAttributes','fieldName','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','pick','where','merge','VIRTUAL','options','includeAll','include','rows','params','find','catch','create','startsWith','body'];(function(_0x40375c,_0x57ea2f){var _0xdca3fb=function(_0xb4ee4){while(--_0xb4ee4){_0x40375c['push'](_0x40375c['shift']());}};_0xdca3fb(++_0x57ea2f);}(_0x3e3c,0x1c5));var _0xc3e3=function(_0x140739,_0x1012d5){_0x140739=_0x140739-0x0;var _0x506164=_0x3e3c[_0x140739];return _0x506164;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc3e3('0x0'));var zipdir=require(_0xc3e3('0x1'));var jsonpatch=require(_0xc3e3('0x2'));var rp=require(_0xc3e3('0x3'));var moment=require(_0xc3e3('0x4'));var BPromise=require(_0xc3e3('0x5'));var Mustache=require(_0xc3e3('0x6'));var util=require(_0xc3e3('0x7'));var path=require('path');var sox=require(_0xc3e3('0x8'));var csv=require('to-csv');var ejs=require(_0xc3e3('0x9'));var fs=require('fs');var fs_extra=require(_0xc3e3('0xa'));var _=require(_0xc3e3('0xb'));var squel=require(_0xc3e3('0xc'));var crypto=require(_0xc3e3('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc3e3('0xe'));var querystring=require(_0xc3e3('0xf'));var Papa=require(_0xc3e3('0x10'));var Redis=require(_0xc3e3('0x11'));var authService=require(_0xc3e3('0x12'));var qs=require(_0xc3e3('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc3e3('0x14'))('api');var utils=require(_0xc3e3('0x15'));var config=require(_0xc3e3('0x16'));var licenseUtil=require(_0xc3e3('0x17'));var db=require(_0xc3e3('0x18'))['db'];config[_0xc3e3('0x19')]=_[_0xc3e3('0x1a')](config[_0xc3e3('0x19')],{'host':_0xc3e3('0x1b'),'port':0x18eb});var socket=require(_0xc3e3('0x1c'))(new Redis(config[_0xc3e3('0x19')]));require(_0xc3e3('0x1d'))[_0xc3e3('0x1e')](socket);function respondWithStatusCode(_0x61e7e9,_0x351960){_0x351960=_0x351960||0xcc;return function(_0x3ef7d3){if(_0x3ef7d3){return _0x61e7e9[_0xc3e3('0x1f')](_0x351960);}return _0x61e7e9['status'](_0x351960)['end']();};}function respondWithResult(_0x980d1e,_0x39c17d){_0x39c17d=_0x39c17d||0xc8;return function(_0x3a79ce){if(_0x3a79ce){return _0x980d1e[_0xc3e3('0x20')](_0x39c17d)['json'](_0x3a79ce);}};}function respondWithFilteredResult(_0x10bf96,_0x146e11){return function(_0x2898ed){if(_0x2898ed){var _0x1d6d50=typeof _0x146e11[_0xc3e3('0x21')]===_0xc3e3('0x22')&&typeof _0x146e11[_0xc3e3('0x23')]===_0xc3e3('0x22');var _0x40e072=_0x2898ed['count'];var _0x588f51=_0x1d6d50?0x0:_0x146e11[_0xc3e3('0x21')];var _0x422ccf=_0x1d6d50?_0x2898ed[_0xc3e3('0x24')]:_0x146e11[_0xc3e3('0x21')]+_0x146e11['limit'];var _0x5a52b8;if(_0x422ccf>=_0x40e072){_0x422ccf=_0x40e072;_0x5a52b8=0xc8;}else{_0x5a52b8=0xce;}_0x10bf96['status'](_0x5a52b8);return _0x10bf96[_0xc3e3('0x25')](_0xc3e3('0x26'),_0x588f51+'-'+_0x422ccf+'/'+_0x40e072)['json'](_0x2898ed);}return null;};}function patchUpdates(_0x415d49){return function(_0x1ae06b){try{jsonpatch['apply'](_0x1ae06b,_0x415d49,!![]);}catch(_0x33be17){return BPromise[_0xc3e3('0x27')](_0x33be17);}return _0x1ae06b['save']();};}function saveUpdates(_0x856e06,_0x4a5077){return function(_0x2539af){if(_0x2539af){return _0x2539af[_0xc3e3('0x28')](_0x856e06)[_0xc3e3('0x29')](function(_0x2907a4){return _0x2907a4;});}return null;};}function removeEntity(_0x5c7227,_0x21d600){return function(_0x1a2292){if(_0x1a2292){return _0x1a2292['destroy']()[_0xc3e3('0x29')](function(){var _0x331566=_0x1a2292['get']({'plain':!![]});var _0xd9c5a9=[{'name':_0xc3e3('0x2a'),'value':_0xc3e3('0x2b'),'ignore':![]},{'name':_0xc3e3('0x2c'),'value':_0xc3e3('0x2d'),'ignore':![]},{'name':_0xc3e3('0x2e'),'value':_0xc3e3('0x2f'),'ignore':![]}];var _0x14946a=_(_0xd9c5a9)[_0xc3e3('0x30')](_0xc3e3('0x31'))['map'](_0xc3e3('0x32'))['value']();if(_[_0xc3e3('0x33')](_0x14946a,_0x331566[_0xc3e3('0x34')])){return;}var _0x42fb7f=_['find'](_0xd9c5a9,['value',_0x331566[_0xc3e3('0x34')]])[_0xc3e3('0x35')];return db['UserProfileResource'][_0xc3e3('0x36')]({'where':{'type':_0x42fb7f,'resourceId':_0x331566['id']}})[_0xc3e3('0x29')](function(){return _0x1a2292;});})[_0xc3e3('0x29')](function(){_0x5c7227[_0xc3e3('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51e1e3,_0x54d34f){return function(_0x4b67ba){if(!_0x4b67ba){_0x51e1e3[_0xc3e3('0x1f')](0x194);}return _0x4b67ba;};}function handleError(_0x1cf5a0,_0x567c32){_0x567c32=_0x567c32||0x1f4;return function(_0x5d383b){logger[_0xc3e3('0x37')](_0x5d383b[_0xc3e3('0x38')]);if(_0x5d383b[_0xc3e3('0x35')]){delete _0x5d383b[_0xc3e3('0x35')];}_0x1cf5a0['status'](_0x567c32)[_0xc3e3('0x39')](_0x5d383b);};}exports['index']=function(_0x19f2fb,_0x44b0b0){var _0x360364={},_0x9f47ee={},_0x341783={'count':0x0,'rows':[]};var _0xde02a9=_[_0xc3e3('0x3a')](db[_0xc3e3('0x3b')][_0xc3e3('0x3c')],function(_0x261bcf){return{'name':_0x261bcf[_0xc3e3('0x3d')],'type':_0x261bcf[_0xc3e3('0x34')][_0xc3e3('0x3e')]};});_0x9f47ee[_0xc3e3('0x3f')]=_[_0xc3e3('0x3a')](_0xde02a9,'name');_0x9f47ee['query']=_[_0xc3e3('0x40')](_0x19f2fb[_0xc3e3('0x41')]);_0x9f47ee[_0xc3e3('0x42')]=_['intersection'](_0x9f47ee['model'],_0x9f47ee[_0xc3e3('0x41')]);_0x360364[_0xc3e3('0x43')]=_[_0xc3e3('0x44')](_0x9f47ee[_0xc3e3('0x3f')],qs[_0xc3e3('0x45')](_0x19f2fb['query'][_0xc3e3('0x45')]));_0x360364['attributes']=_0x360364['attributes'][_0xc3e3('0x46')]?_0x360364['attributes']:_0x9f47ee['model'];if(!_0x19f2fb[_0xc3e3('0x41')][_0xc3e3('0x47')]('nolimit')){_0x360364[_0xc3e3('0x23')]=qs['limit'](_0x19f2fb['query'][_0xc3e3('0x23')]);_0x360364[_0xc3e3('0x21')]=qs[_0xc3e3('0x21')](_0x19f2fb[_0xc3e3('0x41')][_0xc3e3('0x21')]);}_0x360364[_0xc3e3('0x48')]=qs['sort'](_0x19f2fb['query']['sort']);_0x360364['where']=qs['filters'](_[_0xc3e3('0x49')](_0x19f2fb[_0xc3e3('0x41')],_0x9f47ee[_0xc3e3('0x42')]),_0xde02a9);if(_0x19f2fb[_0xc3e3('0x41')][_0xc3e3('0x30')]){_0x360364[_0xc3e3('0x4a')]=_[_0xc3e3('0x4b')](_0x360364[_0xc3e3('0x4a')],{'$or':_[_0xc3e3('0x3a')](_0xde02a9,function(_0x14f2c1){if(_0x14f2c1['type']!==_0xc3e3('0x4c')){var _0x389494={};_0x389494[_0x14f2c1[_0xc3e3('0x35')]]={'$like':'%'+_0x19f2fb[_0xc3e3('0x41')][_0xc3e3('0x30')]+'%'};return _0x389494;}})});}_0x360364=_[_0xc3e3('0x4b')]({},_0x360364,_0x19f2fb[_0xc3e3('0x4d')]);var _0xda2199={'where':_0x360364[_0xc3e3('0x4a')]};return db[_0xc3e3('0x3b')][_0xc3e3('0x24')](_0xda2199)['then'](function(_0xb8b755){_0x341783[_0xc3e3('0x24')]=_0xb8b755;if(_0x19f2fb['query'][_0xc3e3('0x4e')]){_0x360364[_0xc3e3('0x4f')]=[{'all':!![]}];}return db[_0xc3e3('0x3b')]['findAll'](_0x360364);})[_0xc3e3('0x29')](function(_0x2ac57b){_0x341783[_0xc3e3('0x50')]=_0x2ac57b;return _0x341783;})[_0xc3e3('0x29')](respondWithFilteredResult(_0x44b0b0,_0x360364))['catch'](handleError(_0x44b0b0,null));};exports['show']=function(_0x222574,_0x33028b){var _0x180f3a={'raw':![],'where':{'id':_0x222574[_0xc3e3('0x51')]['id']}},_0x11a470={};_0x11a470[_0xc3e3('0x3f')]=_[_0xc3e3('0x40')](db[_0xc3e3('0x3b')][_0xc3e3('0x3c')]);_0x11a470[_0xc3e3('0x41')]=_[_0xc3e3('0x40')](_0x222574[_0xc3e3('0x41')]);_0x11a470['filters']=_[_0xc3e3('0x44')](_0x11a470[_0xc3e3('0x3f')],_0x11a470[_0xc3e3('0x41')]);_0x180f3a['attributes']=_[_0xc3e3('0x44')](_0x11a470[_0xc3e3('0x3f')],qs[_0xc3e3('0x45')](_0x222574[_0xc3e3('0x41')][_0xc3e3('0x45')]));_0x180f3a[_0xc3e3('0x43')]=_0x180f3a['attributes'][_0xc3e3('0x46')]?_0x180f3a[_0xc3e3('0x43')]:_0x11a470['model'];if(_0x222574[_0xc3e3('0x41')]['includeAll']){_0x180f3a[_0xc3e3('0x4f')]=[{'all':!![]}];}_0x180f3a=_[_0xc3e3('0x4b')]({},_0x180f3a,_0x222574[_0xc3e3('0x4d')]);return db[_0xc3e3('0x3b')][_0xc3e3('0x52')](_0x180f3a)[_0xc3e3('0x29')](handleEntityNotFound(_0x33028b,null))['then'](respondWithResult(_0x33028b,null))[_0xc3e3('0x53')](handleError(_0x33028b,null));};exports[_0xc3e3('0x36')]=function(_0x4d010f,_0x35a8a6){return db[_0xc3e3('0x3b')][_0xc3e3('0x52')]({'where':{'id':_0x4d010f[_0xc3e3('0x51')]['id']}})[_0xc3e3('0x29')](handleEntityNotFound(_0x35a8a6,null))[_0xc3e3('0x29')](removeEntity(_0x35a8a6,null))[_0xc3e3('0x53')](handleError(_0x35a8a6,null));};exports[_0xc3e3('0x54')]=function(_0x2c3732,_0x4efa09){if(_0x2c3732['body'][_0xc3e3('0x34')]===_0xc3e3('0x2d')&&!_[_0xc3e3('0x55')](_0x2c3732[_0xc3e3('0x56')]['exten'],'_')){_0x2c3732['body'][_0xc3e3('0x57')]='_'['concat'](_0x2c3732[_0xc3e3('0x56')][_0xc3e3('0x57')]);}return db['VoiceExtension'][_0xc3e3('0x54')](_0x2c3732['body'],{'raw':![]})[_0xc3e3('0x29')](function(_0x6fac73){var _0x26a4de=_0x2c3732[_0xc3e3('0x58')][_0xc3e3('0x59')]({'plain':!![]});if(!_0x26a4de)throw new Error(_0xc3e3('0x5a'));if(_0x26a4de[_0xc3e3('0x5b')]==='user'){var _0x3b583d=_0x6fac73[_0xc3e3('0x59')]({'plain':!![]});var _0x2962db=[{'name':'InboundRoutes','value':_0xc3e3('0x2b')},{'name':_0xc3e3('0x2c'),'value':'outbound'},{'name':_0xc3e3('0x2e'),'value':'internal'}];var _0x6bbaa9=_['find'](_0x2962db,['value',_0x3b583d['type']])['name'];return db['UserProfileSection'][_0xc3e3('0x52')]({'where':{'name':_0x6bbaa9,'userProfileId':_0x26a4de[_0xc3e3('0x5c')]},'raw':!![]})['then'](function(_0x408453){if(_0x408453&&_0x408453[_0xc3e3('0x5d')]===0x0){return db[_0xc3e3('0x5e')]['create']({'name':_0x3b583d[_0xc3e3('0x35')],'resourceId':_0x3b583d['id'],'type':_0x408453[_0xc3e3('0x35')],'sectionId':_0x408453['id']},{})['then'](function(){return _0x6fac73;});}else{return _0x6fac73;}})[_0xc3e3('0x53')](function(_0x2ca778){logger[_0xc3e3('0x37')](_0xc3e3('0x5f'),_0x2ca778);throw _0x2ca778;});}return _0x6fac73;})['then'](respondWithResult(_0x4efa09,0xc9))[_0xc3e3('0x53')](handleError(_0x4efa09,null));};exports[_0xc3e3('0x28')]=function(_0x2044be,_0x421edc){if(_0x2044be[_0xc3e3('0x56')]['id']){delete _0x2044be['body']['id'];}return db[_0xc3e3('0x3b')]['find']({'where':{'id':_0x2044be[_0xc3e3('0x51')]['id']}})[_0xc3e3('0x29')](handleEntityNotFound(_0x421edc,null))['then'](function(_0x3818c0){if(_0x3818c0){return db['VoiceExtension'][_0xc3e3('0x28')](_['pick'](_0x2044be[_0xc3e3('0x56')],[_0xc3e3('0x57'),'context','description','recordingFormat','cutdigits',_0xc3e3('0x60'),_0xc3e3('0x61')]),{'where':{'context':_0x3818c0[_0xc3e3('0x62')],'exten':_0x3818c0[_0xc3e3('0x57')]},'individualHooks':!![]})[_0xc3e3('0x29')](function(_0x24696c){return _0x24696c;});}return null;})[_0xc3e3('0x29')](respondWithStatusCode(_0x421edc,null))[_0xc3e3('0x53')](handleError(_0x421edc,null));};exports['addApplications']=function(_0x269ff0,_0x226288){return db[_0xc3e3('0x3b')]['findOne']({'where':{'id':_0x269ff0[_0xc3e3('0x51')]['id']}})[_0xc3e3('0x29')](function(_0x4e6ab1){if(_0x4e6ab1){return db[_0xc3e3('0x63')][_0xc3e3('0x64')](function(_0x4af226){return db['VoiceExtension']['destroy']({'where':{'VoiceExtensionId':_0x269ff0[_0xc3e3('0x51')]['id']},'transaction':_0x4af226})[_0xc3e3('0x29')](function(){var _0xd7fe8=_[_0xc3e3('0x3a')](_0x269ff0[_0xc3e3('0x56')],function(_0x397e41){_0x397e41[_0xc3e3('0x65')]=_0x269ff0[_0xc3e3('0x51')]['id'];_0x397e41['isApp']=!![];return _0x397e41;});var _0x1f8d35=_0x269ff0[_0xc3e3('0x41')][_0xc3e3('0x66')]&&_0x269ff0[_0xc3e3('0x41')][_0xc3e3('0x66')][_0xc3e3('0x67')]()===_0xc3e3('0x68')?!![]:![];return _0x4e6ab1['createRouting'](_0xd7fe8,_0x1f8d35);})[_0xc3e3('0x29')](function(_0x487bb1){return db['VoiceExtension'][_0xc3e3('0x69')](_0x487bb1,{'transaction':_0x4af226});});})[_0xc3e3('0x29')](function(){return db[_0xc3e3('0x3b')][_0xc3e3('0x6a')]({'where':{'isApp':!![],'VoiceExtensionId':_0x269ff0[_0xc3e3('0x51')]['id']},'order':_0xc3e3('0x6b')});});}})['then'](respondWithResult(_0x226288,null))[_0xc3e3('0x53')](handleError(_0x226288,null));};
\ No newline at end of file
index c441739..d329f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b55=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','events','VoiceExtension'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x4b55,0x7e));var _0x54b5=function(_0x1ef6c8,_0x9878c6){_0x1ef6c8=_0x1ef6c8-0x0;var _0x69c967=_0x4b55[_0x1ef6c8];return _0x69c967;};'use strict';var EventEmitter=require(_0x54b5('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0x54b5('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x54b5('0x2')](0x0);var events={'afterCreate':_0x54b5('0x3'),'afterUpdate':'update','afterDestroy':_0x54b5('0x4')};function emitEvent(_0x26fe48){return function(_0x591be2,_0xf9a453,_0x1f9585){VoiceExtensionEvents[_0x54b5('0x5')](_0x26fe48+':'+_0x591be2['id'],_0x591be2);VoiceExtensionEvents[_0x54b5('0x5')](_0x26fe48,_0x591be2);_0x1f9585(null);};}for(var e in events){if(events[_0x54b5('0x6')](e)){var event=events[e];VoiceExtension[_0x54b5('0x7')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0x0382=['events','save','update','remove','emit','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x0382,0x6c));var _0x2038=function(_0x27d8bc,_0x19e010){_0x27d8bc=_0x27d8bc-0x0;var _0x4b04cb=_0x0382[_0x27d8bc];return _0x4b04cb;};'use strict';var EventEmitter=require(_0x2038('0x0'));var VoiceExtension=require('../../mysqldb')['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2038('0x1'),'afterUpdate':_0x2038('0x2'),'afterDestroy':_0x2038('0x3')};function emitEvent(_0x54d7d3){return function(_0x1295d9,_0x883d77,_0x2fe7c1){VoiceExtensionEvents[_0x2038('0x4')](_0x54d7d3+':'+_0x1295d9['id'],_0x1295d9);VoiceExtensionEvents['emit'](_0x54d7d3,_0x1295d9);_0x2fe7c1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0x2038('0x5')]=VoiceExtensionEvents;
\ No newline at end of file
index 3a4c0d5..54be4fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6f5=['bluebird','request-promise','path','../../config/environment','./voiceExtension.attributes','exports','VoiceExtension','lodash','util','../../config/logger','api','moment'];(function(_0x17b0d4,_0x377add){var _0x2d02c7=function(_0x56e627){while(--_0x56e627){_0x17b0d4['push'](_0x17b0d4['shift']());}};_0x2d02c7(++_0x377add);}(_0xe6f5,0x10f));var _0x5e6f=function(_0x1013a3,_0x156610){_0x1013a3=_0x1013a3-0x0;var _0x2e7886=_0xe6f5[_0x1013a3];return _0x2e7886;};'use strict';var _=require(_0x5e6f('0x0'));var util=require(_0x5e6f('0x1'));var logger=require(_0x5e6f('0x2'))(_0x5e6f('0x3'));var moment=require(_0x5e6f('0x4'));var BPromise=require(_0x5e6f('0x5'));var rp=require(_0x5e6f('0x6'));var fs=require('fs');var path=require(_0x5e6f('0x7'));var rimraf=require('rimraf');var config=require(_0x5e6f('0x8'));var attributes=require(_0x5e6f('0x9'));module[_0x5e6f('0xa')]=function(_0x276b41,_0x3fedcc){return _0x276b41['define'](_0x5e6f('0xb'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0572=['callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','queue','playback','includes','app','custom','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','then','util','lodash','exports','models','type','Set','exten','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','context','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','CDR(type)=outbound','outbound','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_FORMAT=','wav','timeout','split','name','trunk','param','phone','prefix','${EXTEN:','SIP','options','indexOf','U(xcally-mixmonitor-context)','replace','join','isEmpty','findAll','IntervalId','length','interval','*,*,*,*','intervals','map','filter','toLowerCase','hasOwnProperty','tag','CDR(tag)='];(function(_0x29a068,_0x4d3fab){var _0x2d2b8a=function(_0x15493d){while(--_0x15493d){_0x29a068['push'](_0x29a068['shift']());}};_0x2d2b8a(++_0x4d3fab);}(_0x0572,0x161));var _0x2057=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x0572[_0x4a9fb1];return _0x348672;};'use strict';var util=require(_0x2057('0x0'));var _=require(_0x2057('0x1'));var attributes=require('./voiceExtension.attributes');module[_0x2057('0x2')]=function(_0x30dd05){var _0x21cda8=_0x30dd05[_0x2057('0x3')];function _0x29513e(_0x2c3d38){var _0x4cc29f=0x2;var _0x1c827b=[{'type':_0x2c3d38[_0x2057('0x4')],'app':_0x2057('0x5'),'appdata':'CDR(type)='+_0x2c3d38[_0x2057('0x4')],'context':_0x2c3d38['context'],'exten':_0x2c3d38[_0x2057('0x6')],'priority':_0x4cc29f++,'VoiceExtensionId':_0x2c3d38['id']},{'type':_0x2c3d38['type'],'app':_0x2c3d38[_0x2057('0x7')]?_0x2057('0x5'):_0x2057('0x8'),'appdata':_0x2c3d38['alias']?_0x2057('0x9')+_0x2c3d38[_0x2057('0x7')]:_0x2057('0xa'),'context':_0x2c3d38[_0x2057('0xb')],'exten':_0x2c3d38[_0x2057('0x6')],'priority':_0x4cc29f++,'VoiceExtensionId':_0x2c3d38['id']}];if(_0x2c3d38['type']===_0x2057('0xc')){_0x1c827b[_0x2057('0xd')]({'type':_0x2057('0xc'),'app':_0x2057('0x5'),'appdata':_0x2057('0xe')+_0x2c3d38['id'],'context':_0x2c3d38[_0x2057('0xb')],'exten':_0x2c3d38['exten'],'priority':_0x4cc29f++,'VoiceExtensionId':_0x2c3d38['id']});}_0x1c827b[_0x2057('0xd')]({'type':_0x2c3d38[_0x2057('0x4')],'app':_0x2057('0x5'),'appdata':_0x2057('0xf'),'context':_0x2c3d38[_0x2057('0xb')],'exten':_0x2c3d38[_0x2057('0x6')],'priority':_0x4cc29f++,'VoiceExtensionId':_0x2c3d38['id']},{'type':_0x2c3d38[_0x2057('0x4')],'app':'Set','appdata':_0x2057('0x10'),'context':_0x2c3d38[_0x2057('0xb')],'exten':_0x2c3d38[_0x2057('0x6')],'priority':_0x4cc29f++,'VoiceExtensionId':_0x2c3d38['id']},{'type':_0x2c3d38['type'],'app':_0x2057('0x5'),'appdata':'MONITOR_OPTIONS=ab','context':_0x2c3d38[_0x2057('0xb')],'exten':_0x2c3d38[_0x2057('0x6')],'priority':_0x4cc29f++,'VoiceExtensionId':_0x2c3d38['id']});return _0x1c827b;}function _0x9ae1f4(_0x50cae0){var _0x36a3b8=0x2;var _0x3fb6e2=[{'type':'outbound','app':_0x2057('0x5'),'appdata':_0x2057('0x11'),'context':_0x50cae0[_0x2057('0xb')],'exten':_0x50cae0[_0x2057('0x6')],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']},{'type':_0x2057('0x12'),'app':_0x50cae0[_0x2057('0x7')]?_0x2057('0x5'):_0x2057('0x8'),'appdata':_0x50cae0[_0x2057('0x7')]?'CDR(routeAlias)='+_0x50cae0[_0x2057('0x7')]:_0x2057('0xa'),'context':_0x50cae0[_0x2057('0xb')],'exten':_0x50cae0['exten'],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']},{'type':_0x2057('0x12'),'app':_0x2057('0x5'),'appdata':'CDR(destination)='+(_0x50cae0[_0x2057('0x13')]?'${EXTEN:'+_0x50cae0[_0x2057('0x13')]+'}':_0x2057('0x14')),'context':_0x50cae0[_0x2057('0xb')],'exten':_0x50cae0[_0x2057('0x6')],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']},{'type':'outbound','app':_0x2057('0x5'),'appdata':_0x2057('0xe')+_0x50cae0['id'],'context':_0x50cae0['context'],'exten':_0x50cae0[_0x2057('0x6')],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']},{'type':_0x2057('0x12'),'app':_0x2057('0x15'),'appdata':_0x2057('0x16')+(_0x36a3b8+0x2)+_0x2057('0x17')+(_0x36a3b8+0x1)+')','context':_0x50cae0[_0x2057('0xb')],'exten':_0x50cae0[_0x2057('0x6')],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']},{'type':_0x2057('0x12'),'app':_0x2057('0x5'),'appdata':_0x50cae0[_0x2057('0x13')]?_0x2057('0x18')+_0x50cae0['cutdigits']+'}':_0x2057('0x19'),'context':_0x50cae0[_0x2057('0xb')],'exten':_0x50cae0[_0x2057('0x6')],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']},{'type':_0x2057('0x12'),'app':'Set','appdata':_0x2057('0xf'),'context':_0x50cae0[_0x2057('0xb')],'exten':_0x50cae0[_0x2057('0x6')],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']},{'type':'outbound','app':_0x2057('0x5'),'appdata':_0x2057('0x10'),'context':_0x50cae0['context'],'exten':_0x50cae0['exten'],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']},{'type':_0x2057('0x12'),'app':_0x2057('0x5'),'appdata':'MONITOR_OPTIONS=ab','context':_0x50cae0[_0x2057('0xb')],'exten':_0x50cae0['exten'],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']},{'type':_0x2057('0x12'),'app':_0x2057('0x5'),'appdata':'outboundrouteid='+_0x50cae0['id'],'context':_0x50cae0[_0x2057('0xb')],'exten':_0x50cae0[_0x2057('0x6')],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']}];if(_0x50cae0['hasOwnProperty']('recordingFormat')&&_0x50cae0[_0x2057('0x1a')]!==_0x2057('0x1b')){_0x3fb6e2[_0x2057('0xd')]({'type':'outbound','app':_0x2057('0x5'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x50cae0[_0x2057('0xb')],'exten':_0x50cae0['exten'],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']},{'type':_0x2057('0x12'),'app':_0x2057('0x5'),'appdata':_0x2057('0x1c')+_0x50cae0[_0x2057('0x1a')]||_0x2057('0x1d'),'context':_0x50cae0[_0x2057('0xb')],'exten':_0x50cae0[_0x2057('0x6')],'priority':_0x36a3b8++,'VoiceExtensionId':_0x50cae0['id']});}return _0x3fb6e2;}function _0xd6e7ee(_0x1b4fbf){var _0x405d37=[{'name':'trunk','param':0x0},{'name':_0x2057('0x1e'),'param':0x1},{'name':'options','param':0x2},{'name':'url','param':0x3}];var _0x4aba12={};var _0x406ee4=_0x1b4fbf[_0x2057('0x1f')](',');var _0x1fbbdf=[];for(var _0x3c0a7a=0x0;_0x3c0a7a<_0x405d37['length'];_0x3c0a7a++){switch(_0x405d37[_0x3c0a7a][_0x2057('0x20')]){case _0x2057('0x21'):_0x4aba12['trunk']=_0x406ee4[_0x405d37[_0x3c0a7a][_0x2057('0x22')]][_0x2057('0x1f')]('/')[0x1];_0x4aba12[_0x2057('0x23')]=_0x406ee4[_0x405d37[_0x3c0a7a]['param']][_0x2057('0x1f')]('/')[0x2];_0x4aba12['prefix']=_0x4aba12[_0x2057('0x23')]?_0x4aba12['phone'][_0x2057('0x1f')]('$')[0x0]:undefined;_0x4aba12[_0x2057('0x23')]=route[_0x2057('0x13')]?(_0x4aba12[_0x2057('0x24')]||'')+_0x2057('0x25')+route[_0x2057('0x13')]+'}':(_0x4aba12['prefix']||'')+_0x2057('0x14');_0x1fbbdf[_0x405d37[_0x3c0a7a][_0x2057('0x22')]]=[_0x2057('0x26'),_0x4aba12[_0x2057('0x21')],_0x4aba12[_0x2057('0x23')]]['join']('/');break;case _0x2057('0x27'):_0x4aba12[_0x2057('0x27')]=_0x406ee4[_0x405d37[_0x3c0a7a]['param']];if(route[_0x2057('0x1a')]!=='none'){if(_0x4aba12[_0x2057('0x27')][_0x2057('0x28')](_0x2057('0x29'))<0x0){_0x4aba12['options']+=_0x2057('0x29');}}else{_0x4aba12['options']=_0x4aba12[_0x2057('0x27')][_0x2057('0x2a')](_0x2057('0x29'),'');}_0x1fbbdf[_0x405d37[_0x3c0a7a]['param']]=_0x4aba12[_0x2057('0x27')];break;default:_0x1fbbdf[_0x405d37[_0x3c0a7a]['param']]=_0x406ee4[_0x405d37[_0x3c0a7a]['param']];}}return _0x1fbbdf[_0x2057('0x2b')](',');}function _0x5eb9a1(_0x51779e,_0x4993a9,_0x4fc2a0,_0x2ef319){return new Promise(function(_0x469c60,_0x34c27d){var _0x14abce=[];if(_[_0x2057('0x2c')](_0x4993a9))return _0x469c60(_0x14abce);_0x21cda8['Interval'][_0x2057('0x2d')]({'attributes':['id','interval',_0x2057('0x2e')],'raw':!![]})['then'](function(_0x259a5f){for(var _0x2e1cc2=0x0,_0x3a1bf6=0x0;_0x2e1cc2<_0x4993a9[_0x2057('0x2f')];_0x2e1cc2++,_0x3a1bf6=0x0){var _0x39cbc8=_0x4993a9[_0x2e1cc2];var _0x5082e7=[];var _0xf212a7=[];if(_0x39cbc8[_0x2057('0x30')]!==_0x2057('0x31')){_0x39cbc8[_0x2057('0x32')]=[_0x39cbc8[_0x2057('0x30')]];}else{_0x39cbc8['intervals']=_0x39cbc8[_0x2057('0x2e')]?_[_0x2057('0x33')](_[_0x2057('0x34')](_0x259a5f,{'IntervalId':_0x39cbc8[_0x2057('0x2e')]}),_0x2057('0x30')):[];}_0x39cbc8[_0x2057('0xb')]=_0x51779e[_0x2057('0xb')];_0x39cbc8[_0x2057('0x6')]=_0x51779e[_0x2057('0x6')];if(_0x39cbc8[_0x2057('0x4')])_0x39cbc8['type']=_0x39cbc8['type'][_0x2057('0x35')]();if(_0x51779e['type']===_0x2057('0x12')){if(_0x39cbc8[_0x2057('0x36')](_0x2057('0x37'))&&_0x39cbc8[_0x2057('0x37')]&&_0x39cbc8['tag']!=='--'){_0x5082e7[_0x2057('0xd')]({'type':_0x39cbc8[_0x2057('0x4')]['toLowerCase'](),'app':_0x2057('0x5'),'appdata':_0x2057('0x38')+_0x39cbc8['tag'],'context':_0x51779e['context'],'exten':_0x51779e['exten'],'priority':_0x39cbc8[_0x2057('0x32')][_0x2057('0x2f')]+_0x4fc2a0+_0x3a1bf6++,'VoiceExtensionId':_0x51779e['id']});}_0x5082e7[_0x2057('0xd')]({'type':_0x39cbc8[_0x2057('0x4')]['toLowerCase'](),'app':_0x2057('0x15'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):'+(_0x39cbc8[_0x2057('0x39')]?_0x2057('0x3a')+_0x39cbc8[_0x2057('0x39')]+')':_0x2057('0x3b')),'context':_0x51779e[_0x2057('0xb')],'exten':_0x51779e[_0x2057('0x6')],'priority':_0x39cbc8[_0x2057('0x32')][_0x2057('0x2f')]+_0x4fc2a0+_0x3a1bf6++,'VoiceExtensionId':_0x51779e['id']});}else{if(_0x39cbc8[_0x2057('0x36')]('answer')){if([_0x2057('0x3c'),_0x2057('0x3d')][_0x2057('0x3e')](_0x39cbc8[_0x2057('0x3f')][_0x2057('0x35')]())&&_0x39cbc8['appType']!==_0x2057('0x40')){if(_0x39cbc8[_0x2057('0x41')]){_0x5082e7[_0x2057('0xd')]({'type':_0x39cbc8[_0x2057('0x4')][_0x2057('0x35')](),'app':_0x2057('0x15'),'appdata':_0x2057('0x42'),'context':_0x51779e[_0x2057('0xb')],'exten':_0x51779e[_0x2057('0x6')],'priority':_0x39cbc8[_0x2057('0x32')]['length']+_0x4fc2a0+_0x3a1bf6++,'VoiceExtensionId':_0x51779e['id']});_0x5082e7[_0x2057('0xd')]({'type':_0x39cbc8[_0x2057('0x4')]['toLowerCase'](),'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0x51779e[_0x2057('0xb')],'exten':_0x51779e['exten'],'priority':_0x39cbc8['intervals'][_0x2057('0x2f')]+_0x4fc2a0+_0x3a1bf6++,'VoiceExtensionId':_0x51779e['id']});}else{_0x5082e7[_0x2057('0xd')]({'type':_0x39cbc8[_0x2057('0x4')][_0x2057('0x35')](),'app':_0x2057('0x15'),'appdata':_0x2057('0x43'),'context':_0x51779e[_0x2057('0xb')],'exten':_0x51779e['exten'],'priority':_0x39cbc8['intervals'][_0x2057('0x2f')]+_0x4fc2a0+_0x3a1bf6++,'VoiceExtensionId':_0x51779e['id']});_0x5082e7[_0x2057('0xd')]({'type':_0x39cbc8[_0x2057('0x4')]['toLowerCase'](),'app':_0x2057('0x5'),'appdata':_0x2057('0x44'),'context':_0x51779e[_0x2057('0xb')],'exten':_0x51779e[_0x2057('0x6')],'priority':_0x39cbc8[_0x2057('0x32')]['length']+_0x4fc2a0+_0x3a1bf6++,'VoiceExtensionId':_0x51779e['id']});}}}}for(var _0x2894e7=0x0;_0x2894e7<_0x39cbc8['intervals']['length'];_0x2894e7++){var _0x3e301e=_0x4fc2a0+_0x39cbc8[_0x2057('0x32')][_0x2057('0x2f')];var _0x53c977=_0x2894e7===_0x39cbc8[_0x2057('0x32')][_0x2057('0x2f')]-0x1?_0x4fc2a0+_0x5082e7[_0x2057('0x2f')]+_0xf212a7[_0x2057('0x2f')]+0x2:_0x4fc2a0+_0x2894e7+0x1;_0x5082e7[_0x2057('0x45')](_0x2894e7,0x0,{'type':_0x51779e[_0x2057('0x4')],'app':_0x2057('0x46'),'appdata':_0x39cbc8[_0x2057('0x32')][_0x2894e7]+'?'+_0x51779e[_0x2057('0xb')]+_0x2057('0x47')+_0x3e301e+':'+_0x51779e[_0x2057('0xb')]+_0x2057('0x47')+_0x53c977,'exten':_0x51779e[_0x2057('0x6')],'context':_0x51779e['context'],'priority':_0x4fc2a0+_0x2894e7,'VoiceExtensionId':_0x51779e['id']});}if(_0x2ef319&&_0x39cbc8['appType']===_0x2057('0x48'))_0x39cbc8['appdata']=_0xd6e7ee(_0x39cbc8[_0x2057('0x49')]);_0x39cbc8[_0x2057('0x4a')]=_0x5082e7[_0x2057('0x2f')]?_[_0x2057('0x4b')](_0x5082e7)[_0x2057('0x4a')]+0x1:_0x4fc2a0;_0x14abce=_[_0x2057('0x4c')](_0x14abce,_0x5082e7,[_0x39cbc8],_0xf212a7);_0x4fc2a0=_[_0x2057('0x4b')](_0x14abce)[_0x2057('0x4a')]+0x1;}return _0x469c60(_0x14abce);})[_0x2057('0x4d')](function(_0x32117a){_0x34c27d(_0x32117a);});});}return _0x30dd05[_0x2057('0x4e')](_0x2057('0x4f'),attributes,{'tableName':_0x2057('0x50'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x566fe6,_0x50ea0a){var _0x11211f=this;var _0x182195=_0x11211f['type']===_0x2057('0x12')?_0x9ae1f4(_0x11211f):_0x29513e(_0x11211f);return _0x5eb9a1(_0x11211f,_0x566fe6,_[_0x2057('0x4b')](_0x182195)[_0x2057('0x4a')]+0x1,_0x50ea0a)[_0x2057('0x51')](function(_0x304d5f){var _0x42df26=_['concat'](_0x182195,_0x304d5f);_0x42df26[_0x2057('0xd')]({'type':_0x11211f['type'],'app':'Hangup','exten':_0x11211f[_0x2057('0x6')],'context':_0x11211f['context'],'priority':_[_0x2057('0x4b')](_0x42df26)['priority']+0x1,'VoiceExtensionId':_0x11211f['id']});return _0x42df26;});}}});};
\ No newline at end of file
index c36cd45..055b441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7de=['attributes','limit','map','include','model','GetVoiceExtension','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','request','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','VoiceExtension','options','raw','where'];(function(_0x304bf7,_0x4fcafc){var _0x5036cd=function(_0x39e810){while(--_0x39e810){_0x304bf7['push'](_0x304bf7['shift']());}};_0x5036cd(++_0x4fcafc);}(_0xe7de,0x165));var _0xee7d=function(_0x13c69f,_0x5ababd){_0x13c69f=_0x13c69f-0x0;var _0x3c8778=_0xe7de[_0x13c69f];return _0x3c8778;};'use strict';var _=require(_0xee7d('0x0'));var util=require(_0xee7d('0x1'));var moment=require(_0xee7d('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee7d('0x3'));var db=require(_0xee7d('0x4'))['db'];var utils=require(_0xee7d('0x5'));var logger=require(_0xee7d('0x6'))(_0xee7d('0x7'));var config=require(_0xee7d('0x8'));var jayson=require(_0xee7d('0x9'));var client=jayson[_0xee7d('0xa')][_0xee7d('0xb')]({'port':0x232a});config[_0xee7d('0xc')]=_[_0xee7d('0xd')](config[_0xee7d('0xc')],{'host':_0xee7d('0xe'),'port':0x18eb});var socket=require(_0xee7d('0xf'))(new Redis(config['redis']));require(_0xee7d('0x10'))[_0xee7d('0x11')](socket);function respondWithRpcPromise(_0x44e6ef,_0x474c53,_0x146172){return new BPromise(function(_0x36e00f,_0x598421){return client[_0xee7d('0x12')](_0x44e6ef,_0x146172)['then'](function(_0x1bf8af){logger[_0xee7d('0x13')](_0xee7d('0x14'),_0x474c53,_0xee7d('0x15'));logger[_0xee7d('0x16')](_0xee7d('0x17'),_0x474c53,_0xee7d('0x15'),JSON[_0xee7d('0x18')](_0x1bf8af));if(_0x1bf8af[_0xee7d('0x19')]){if(_0x1bf8af[_0xee7d('0x19')][_0xee7d('0x1a')]===0x1f4){logger['error']('VoiceExtension,\x20%s,\x20%s',_0x474c53,_0x1bf8af[_0xee7d('0x19')][_0xee7d('0x1b')]);return _0x598421(_0x1bf8af[_0xee7d('0x19')][_0xee7d('0x1b')]);}logger[_0xee7d('0x19')](_0xee7d('0x14'),_0x474c53,_0x1bf8af['error'][_0xee7d('0x1b')]);return _0x36e00f(_0x1bf8af[_0xee7d('0x19')][_0xee7d('0x1b')]);}else{logger[_0xee7d('0x13')](_0xee7d('0x14'),_0x474c53,_0xee7d('0x15'));_0x36e00f(_0x1bf8af['result'][_0xee7d('0x1b')]);}})[_0xee7d('0x1c')](function(_0x3facfb){logger['error'](_0xee7d('0x14'),_0x474c53,_0x3facfb);_0x598421(_0x3facfb);});});}exports['GetVoiceExtension']=function(_0x1ef8ea){var _0x34209e=this;return new Promise(function(_0x2eb283,_0x4f6445){return db[_0xee7d('0x1d')]['findAll']({'raw':_0x1ef8ea[_0xee7d('0x1e')]?_0x1ef8ea[_0xee7d('0x1e')][_0xee7d('0x1f')]===undefined?!![]:![]:!![],'where':_0x1ef8ea[_0xee7d('0x1e')]?_0x1ef8ea['options'][_0xee7d('0x20')]||null:null,'attributes':_0x1ef8ea[_0xee7d('0x1e')]?_0x1ef8ea[_0xee7d('0x1e')][_0xee7d('0x21')]||null:null,'limit':_0x1ef8ea[_0xee7d('0x1e')]?_0x1ef8ea[_0xee7d('0x1e')][_0xee7d('0x22')]||null:null,'include':_0x1ef8ea[_0xee7d('0x1e')]?_0x1ef8ea[_0xee7d('0x1e')]['include']?_[_0xee7d('0x23')](_0x1ef8ea[_0xee7d('0x1e')][_0xee7d('0x24')],function(_0x576d56){return{'model':db[_0x576d56[_0xee7d('0x25')]],'as':_0x576d56['as'],'attributes':_0x576d56[_0xee7d('0x21')],'include':_0x576d56[_0xee7d('0x24')]?_[_0xee7d('0x23')](_0x576d56[_0xee7d('0x24')],function(_0x1b4492){return{'model':db[_0x1b4492[_0xee7d('0x25')]],'as':_0x1b4492['as'],'attributes':_0x1b4492[_0xee7d('0x21')],'include':_0x1b4492[_0xee7d('0x24')]?_['map'](_0x1b4492[_0xee7d('0x24')],function(_0x4e1bf5){return{'model':db[_0x4e1bf5['model']],'as':_0x4e1bf5['as'],'attributes':_0x4e1bf5[_0xee7d('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x151094){logger[_0xee7d('0x13')]('GetVoiceExtension',_0x1ef8ea);logger[_0xee7d('0x16')](_0xee7d('0x26'),_0x1ef8ea,JSON[_0xee7d('0x18')](_0x151094));_0x2eb283(_0x151094);})[_0xee7d('0x1c')](function(_0xcbfec4){logger['error'](_0xee7d('0x26'),_0xcbfec4[_0xee7d('0x1b')],_0x1ef8ea);_0x4f6445(_0x34209e[_0xee7d('0x19')](0x1f4,_0xcbfec4[_0xee7d('0x1b')]));});});};
\ No newline at end of file
+var _0x9a22=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','attributes','limit','include','model','map','debug'];(function(_0x116db6,_0x144c44){var _0x16fa16=function(_0x246b81){while(--_0x246b81){_0x116db6['push'](_0x116db6['shift']());}};_0x16fa16(++_0x144c44);}(_0x9a22,0x75));var _0x29a2=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x9a22[_0x16d10f];return _0x50c823;};'use strict';var _=require(_0x29a2('0x0'));var util=require(_0x29a2('0x1'));var moment=require(_0x29a2('0x2'));var BPromise=require(_0x29a2('0x3'));var rs=require(_0x29a2('0x4'));var fs=require('fs');var Redis=require(_0x29a2('0x5'));var db=require(_0x29a2('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x29a2('0x7'));var config=require(_0x29a2('0x8'));var jayson=require(_0x29a2('0x9'));var client=jayson[_0x29a2('0xa')][_0x29a2('0xb')]({'port':0x232a});config[_0x29a2('0xc')]=_[_0x29a2('0xd')](config[_0x29a2('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x29a2('0xe'))(new Redis(config[_0x29a2('0xc')]));require('./voiceExtension.socket')[_0x29a2('0xf')](socket);function respondWithRpcPromise(_0x336236,_0x4bcc9c,_0x3140c7){return new BPromise(function(_0x47439a,_0x4dded3){return client[_0x29a2('0x10')](_0x336236,_0x3140c7)[_0x29a2('0x11')](function(_0x1442b6){logger[_0x29a2('0x12')](_0x29a2('0x13'),_0x4bcc9c,_0x29a2('0x14'));logger['debug'](_0x29a2('0x15'),_0x4bcc9c,_0x29a2('0x14'),JSON[_0x29a2('0x16')](_0x1442b6));if(_0x1442b6[_0x29a2('0x17')]){if(_0x1442b6[_0x29a2('0x17')][_0x29a2('0x18')]===0x1f4){logger[_0x29a2('0x17')]('VoiceExtension,\x20%s,\x20%s',_0x4bcc9c,_0x1442b6[_0x29a2('0x17')][_0x29a2('0x19')]);return _0x4dded3(_0x1442b6[_0x29a2('0x17')][_0x29a2('0x19')]);}logger['error']('VoiceExtension,\x20%s,\x20%s',_0x4bcc9c,_0x1442b6[_0x29a2('0x17')][_0x29a2('0x19')]);return _0x47439a(_0x1442b6[_0x29a2('0x17')][_0x29a2('0x19')]);}else{logger[_0x29a2('0x12')]('VoiceExtension,\x20%s,\x20%s',_0x4bcc9c,_0x29a2('0x14'));_0x47439a(_0x1442b6[_0x29a2('0x1a')]['message']);}})[_0x29a2('0x1b')](function(_0x4ca5ee){logger[_0x29a2('0x17')](_0x29a2('0x13'),_0x4bcc9c,_0x4ca5ee);_0x4dded3(_0x4ca5ee);});});}exports[_0x29a2('0x1c')]=function(_0x31f1a5){var _0x5a7eb2=this;return new Promise(function(_0x5766bf,_0x542a10){return db[_0x29a2('0x1d')][_0x29a2('0x1e')]({'raw':_0x31f1a5[_0x29a2('0x1f')]?_0x31f1a5[_0x29a2('0x1f')][_0x29a2('0x20')]===undefined?!![]:![]:!![],'where':_0x31f1a5[_0x29a2('0x1f')]?_0x31f1a5[_0x29a2('0x1f')]['where']||null:null,'attributes':_0x31f1a5[_0x29a2('0x1f')]?_0x31f1a5[_0x29a2('0x1f')][_0x29a2('0x21')]||null:null,'limit':_0x31f1a5[_0x29a2('0x1f')]?_0x31f1a5[_0x29a2('0x1f')][_0x29a2('0x22')]||null:null,'include':_0x31f1a5[_0x29a2('0x1f')]?_0x31f1a5[_0x29a2('0x1f')]['include']?_['map'](_0x31f1a5[_0x29a2('0x1f')][_0x29a2('0x23')],function(_0x1d328f){return{'model':db[_0x1d328f[_0x29a2('0x24')]],'as':_0x1d328f['as'],'attributes':_0x1d328f[_0x29a2('0x21')],'include':_0x1d328f[_0x29a2('0x23')]?_[_0x29a2('0x25')](_0x1d328f[_0x29a2('0x23')],function(_0x3063f3){return{'model':db[_0x3063f3[_0x29a2('0x24')]],'as':_0x3063f3['as'],'attributes':_0x3063f3[_0x29a2('0x21')],'include':_0x3063f3[_0x29a2('0x23')]?_[_0x29a2('0x25')](_0x3063f3['include'],function(_0x1c191b){return{'model':db[_0x1c191b[_0x29a2('0x24')]],'as':_0x1c191b['as'],'attributes':_0x1c191b[_0x29a2('0x21')]};}):[]};}):[]};}):[]:[]})[_0x29a2('0x11')](function(_0x59a253){logger['info'](_0x29a2('0x1c'),_0x31f1a5);logger[_0x29a2('0x26')]('GetVoiceExtension',_0x31f1a5,JSON[_0x29a2('0x16')](_0x59a253));_0x5766bf(_0x59a253);})['catch'](function(_0x1f9bef){logger['error'](_0x29a2('0x1c'),_0x1f9bef['message'],_0x31f1a5);_0x542a10(_0x5a7eb2[_0x29a2('0x17')](0x1f4,_0x1f9bef[_0x29a2('0x19')]));});});};
\ No newline at end of file
index 58cbdf1..b8a334a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['./voiceExtension.events','save','update','emit','removeListener','register','voiceExtension:'];(function(_0x127860,_0x3392c8){var _0x4f40ec=function(_0x3029a0){while(--_0x3029a0){_0x127860['push'](_0x127860['shift']());}};_0x4f40ec(++_0x3392c8);}(_0x5fc3,0xa8));var _0x35fc=function(_0x4de1b1,_0x18c64c){_0x4de1b1=_0x4de1b1-0x0;var _0x639f27=_0x5fc3[_0x4de1b1];return _0x639f27;};'use strict';var VoiceExtensionEvents=require(_0x35fc('0x0'));var events=[_0x35fc('0x1'),'remove',_0x35fc('0x2')];function createListener(_0x2ac6da,_0x196bc2){return function(_0x91d024){_0x196bc2[_0x35fc('0x3')](_0x2ac6da,_0x91d024);};}function removeListener(_0x5e75e6,_0x2d1404){return function(){VoiceExtensionEvents[_0x35fc('0x4')](_0x5e75e6,_0x2d1404);};}exports[_0x35fc('0x5')]=function(_0x5b85ad){for(var _0x5754be=0x0,_0x19a0d1=events['length'];_0x5754be<_0x19a0d1;_0x5754be++){var _0x16e153=events[_0x5754be];var _0x27524f=createListener(_0x35fc('0x6')+_0x16e153,_0x5b85ad);VoiceExtensionEvents['on'](_0x16e153,_0x27524f);}};
\ No newline at end of file
+var _0x1cb9=['update','emit','removeListener','register','length','./voiceExtension.events','remove'];(function(_0xc0a3d3,_0x2c8d00){var _0x3386e8=function(_0x3f9df4){while(--_0x3f9df4){_0xc0a3d3['push'](_0xc0a3d3['shift']());}};_0x3386e8(++_0x2c8d00);}(_0x1cb9,0x14e));var _0x91cb=function(_0x2d5b79,_0x3bfac5){_0x2d5b79=_0x2d5b79-0x0;var _0x3173a3=_0x1cb9[_0x2d5b79];return _0x3173a3;};'use strict';var VoiceExtensionEvents=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(){VoiceExtensionEvents[_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('voiceExtension:'+_0x4c1f56,_0x186dc3);VoiceExtensionEvents['on'](_0x4c1f56,_0x15c517);}};
\ No newline at end of file
index af12a6f..7ef1a98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7880=['Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','create','put','delete','destroy','exports','util','path','connect-timeout','express'];(function(_0x3a0b6c,_0x3c0569){var _0x1872f1=function(_0x3ebcf8){while(--_0x3ebcf8){_0x3a0b6c['push'](_0x3a0b6c['shift']());}};_0x1872f1(++_0x3c0569);}(_0x7880,0x1f4));var _0x0788=function(_0x2aa4c8,_0x1f65b4){_0x2aa4c8=_0x2aa4c8-0x0;var _0x29edb8=_0x7880[_0x2aa4c8];return _0x29edb8;};'use strict';var multer=require('multer');var util=require(_0x0788('0x0'));var path=require(_0x0788('0x1'));var timeout=require(_0x0788('0x2'));var express=require(_0x0788('0x3'));var router=express[_0x0788('0x4')]();var fs_extra=require(_0x0788('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0788('0x6'));var config=require(_0x0788('0x7'));var controller=require(_0x0788('0x8'));router[_0x0788('0x9')]('/',auth[_0x0788('0xa')](),controller[_0x0788('0xb')]);router[_0x0788('0x9')](_0x0788('0xc'),auth[_0x0788('0xa')](),controller[_0x0788('0xd')]);router['get'](_0x0788('0xe'),auth['isAuthenticated'](),controller[_0x0788('0xf')]);router['post']('/',auth[_0x0788('0xa')](),controller[_0x0788('0x10')]);router[_0x0788('0x11')](_0x0788('0xc'),auth[_0x0788('0xa')](),controller['update']);router[_0x0788('0x12')](_0x0788('0xc'),auth[_0x0788('0xa')](),controller[_0x0788('0x13')]);module[_0x0788('0x14')]=router;
\ No newline at end of file
+var _0x3a6d=['/:id','update','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','index','show','/:id/messages','getMessages','post','create'];(function(_0x4145ce,_0x5344c8){var _0x40e34c=function(_0x19159a){while(--_0x19159a){_0x4145ce['push'](_0x4145ce['shift']());}};_0x40e34c(++_0x5344c8);}(_0x3a6d,0x143));var _0xd3a6=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x3a6d[_0x68c979];return _0x4f0001;};'use strict';var multer=require(_0xd3a6('0x0'));var util=require(_0xd3a6('0x1'));var path=require('path');var timeout=require(_0xd3a6('0x2'));var express=require(_0xd3a6('0x3'));var router=express[_0xd3a6('0x4')]();var fs_extra=require(_0xd3a6('0x5'));var auth=require(_0xd3a6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd3a6('0x7'));var controller=require(_0xd3a6('0x8'));router[_0xd3a6('0x9')]('/',auth[_0xd3a6('0xa')](),controller[_0xd3a6('0xb')]);router[_0xd3a6('0x9')]('/:id',auth[_0xd3a6('0xa')](),controller[_0xd3a6('0xc')]);router[_0xd3a6('0x9')](_0xd3a6('0xd'),auth[_0xd3a6('0xa')](),controller[_0xd3a6('0xe')]);router[_0xd3a6('0xf')]('/',auth[_0xd3a6('0xa')](),controller[_0xd3a6('0x10')]);router['put'](_0xd3a6('0x11'),auth[_0xd3a6('0xa')](),controller[_0xd3a6('0x12')]);router[_0xd3a6('0x13')](_0xd3a6('0x11'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index ce1910d..ad73fe3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2a9=['trim','central','yes','ENUM','TINYINT(4)','TIMESTAMP','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','email','string'];(function(_0x599d3f,_0x157b5c){var _0x39648a=function(_0x10864e){while(--_0x10864e){_0x599d3f['push'](_0x599d3f['shift']());}};_0x39648a(++_0x157b5c);}(_0xf2a9,0x1bb));var _0x9f2a=function(_0x2f177f,_0x712d2c){_0x2f177f=_0x2f177f-0x0;var _0x51b60b=_0xf2a9[_0x2f177f];return _0x51b60b;};'use strict';var Sequelize=require(_0x9f2a('0x0'));module[_0x9f2a('0x1')]={'customer_id':{'type':Sequelize[_0x9f2a('0x2')]},'context':{'type':Sequelize[_0x9f2a('0x2')],'defaultValue':_0x9f2a('0x3'),'unique':_0x9f2a('0x4')},'mailbox':{'type':Sequelize[_0x9f2a('0x2')],'defaultValue':'','allowNull':![],'unique':_0x9f2a('0x4')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x9f2a('0x2')]},'email':{'type':Sequelize[_0x9f2a('0x2')],'validate':{'isEmail':!![]},'set':function(_0x2ff3c3){this['setDataValue'](_0x9f2a('0x5'),typeof _0x2ff3c3===_0x9f2a('0x6')&&_0x2ff3c3[_0x9f2a('0x7')]()?_0x2ff3c3[_0x9f2a('0x7')]():null);}},'pager':{'type':Sequelize[_0x9f2a('0x2')]},'tz':{'type':Sequelize[_0x9f2a('0x2')],'defaultValue':_0x9f2a('0x8')},'attach':{'type':Sequelize['ENUM'](_0x9f2a('0x9'),'no'),'defaultValue':_0x9f2a('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x9f2a('0xa')](_0x9f2a('0x9'),'no'),'defaultValue':_0x9f2a('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x9f2a('0x2')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0x9f2a('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x9f2a('0xa')](_0x9f2a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0x9f2a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x9f2a('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x9f2a('0xb'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x9f2a('0xa')](_0x9f2a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x9f2a('0xa')](_0x9f2a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x9f2a('0xa')]('yes','no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize['ENUM'](_0x9f2a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x9f2a('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0x9f2a('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0x9f2a('0xc')},'emailsubject':{'type':Sequelize[_0x9f2a('0x2')]},'emailbody':{'type':Sequelize[_0x9f2a('0x2')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x9f2a('0xd')],'get':function(){return this[_0x9f2a('0xe')](_0x9f2a('0xf'))+_0x9f2a('0x10')+this['getDataValue'](_0x9f2a('0x11'));}}};
\ No newline at end of file
+var _0x456e=['INTEGER','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes'];(function(_0x28bdab,_0x2738b6){var _0x5a6c10=function(_0x143805){while(--_0x143805){_0x28bdab['push'](_0x28bdab['shift']());}};_0x5a6c10(++_0x2738b6);}(_0x456e,0x1e1));var _0xe456=function(_0x4836df,_0x90f914){_0x4836df=_0x4836df-0x0;var _0x6d7afe=_0x456e[_0x4836df];return _0x6d7afe;};'use strict';var Sequelize=require(_0xe456('0x0'));module[_0xe456('0x1')]={'customer_id':{'type':Sequelize[_0xe456('0x2')]},'context':{'type':Sequelize[_0xe456('0x2')],'defaultValue':_0xe456('0x3'),'unique':_0xe456('0x4')},'mailbox':{'type':Sequelize[_0xe456('0x2')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0xe456('0x2')]},'fullname':{'type':Sequelize[_0xe456('0x2')]},'email':{'type':Sequelize[_0xe456('0x2')],'validate':{'isEmail':!![]},'set':function(_0x508c51){this[_0xe456('0x5')](_0xe456('0x6'),typeof _0x508c51===_0xe456('0x7')&&_0x508c51[_0xe456('0x8')]()?_0x508c51['trim']():null);}},'pager':{'type':Sequelize[_0xe456('0x2')]},'tz':{'type':Sequelize[_0xe456('0x2')],'defaultValue':_0xe456('0x9')},'attach':{'type':Sequelize[_0xe456('0xa')](_0xe456('0xb'),'no'),'defaultValue':_0xe456('0xb'),'allowNull':![]},'saycid':{'type':Sequelize[_0xe456('0xa')](_0xe456('0xb'),'no'),'defaultValue':_0xe456('0xb'),'allowNull':![]},'dialout':{'type':Sequelize[_0xe456('0x2')]},'callback':{'type':Sequelize[_0xe456('0x2')]},'review':{'type':Sequelize[_0xe456('0xa')](_0xe456('0xb'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xe456('0xa')](_0xe456('0xb'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xe456('0xa')](_0xe456('0xb'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xe456('0xa')](_0xe456('0xb'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0xe456('0xb'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0xe456('0xb'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xe456('0xa')](_0xe456('0xb'),'no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0xe456('0xa')](_0xe456('0xb'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xe456('0xa')](_0xe456('0xb'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xe456('0xa')]('yes','no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0xe456('0x2')]},'emailbody':{'type':Sequelize[_0xe456('0x2')]},'maxsecs':{'type':Sequelize[_0xe456('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xe456('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xe456('0xd')](_0xe456('0xe'))+_0xe456('0xf')+this['getDataValue'](_0xe456('0x10'));}}};
\ No newline at end of file
index 1c3fb8c..d025f3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b4=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','end','status','json','offset','undefined','count','limit','set','apply','reject','save','update','then','get','Voicemails','UserProfileResource','destroy','error','stack','name','send','map','VoiceMail','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getMessages','findOne','nolimit','mailbox','VoiceMailMessage','eml-format','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs'];(function(_0x267b53,_0x1caed6){var _0x1d5721=function(_0xb08dab){while(--_0xb08dab){_0x267b53['push'](_0x267b53['shift']());}};_0x1d5721(++_0x1caed6);}(_0xf7b4,0x152));var _0x4f7b=function(_0x11400a,_0x22416d){_0x11400a=_0x11400a-0x0;var _0x5a655b=_0xf7b4[_0x11400a];return _0x5a655b;};'use strict';var emlformat=require(_0x4f7b('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4f7b('0x1'));var rp=require(_0x4f7b('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4f7b('0x3'));var util=require(_0x4f7b('0x4'));var path=require(_0x4f7b('0x5'));var sox=require(_0x4f7b('0x6'));var csv=require(_0x4f7b('0x7'));var ejs=require(_0x4f7b('0x8'));var fs=require('fs');var fs_extra=require(_0x4f7b('0x9'));var _=require(_0x4f7b('0xa'));var squel=require(_0x4f7b('0xb'));var crypto=require(_0x4f7b('0xc'));var jsforce=require(_0x4f7b('0xd'));var deskjs=require(_0x4f7b('0xe'));var toCsv=require(_0x4f7b('0x7'));var querystring=require('querystring');var Papa=require(_0x4f7b('0xf'));var Redis=require(_0x4f7b('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x4f7b('0x11'));var as=require(_0x4f7b('0x12'));var hardwareService=require(_0x4f7b('0x13'));var logger=require(_0x4f7b('0x14'))(_0x4f7b('0x15'));var utils=require('../../config/utils');var config=require(_0x4f7b('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd9b349,_0x2e8dd9){_0x2e8dd9=_0x2e8dd9||0xcc;return function(_0x3c55e1){if(_0x3c55e1){return _0xd9b349[_0x4f7b('0x17')](_0x2e8dd9);}return _0xd9b349['status'](_0x2e8dd9)[_0x4f7b('0x18')]();};}function respondWithResult(_0x368091,_0x407cee){_0x407cee=_0x407cee||0xc8;return function(_0x43a51a){if(_0x43a51a){return _0x368091[_0x4f7b('0x19')](_0x407cee)[_0x4f7b('0x1a')](_0x43a51a);}};}function respondWithFilteredResult(_0x40ecb0,_0x2437cc){return function(_0x260667){if(_0x260667){var _0x29fdd5=typeof _0x2437cc[_0x4f7b('0x1b')]===_0x4f7b('0x1c')&&typeof _0x2437cc['limit']===_0x4f7b('0x1c');var _0x496322=_0x260667['count'];var _0x24e5cf=_0x29fdd5?0x0:_0x2437cc[_0x4f7b('0x1b')];var _0x519d90=_0x29fdd5?_0x260667[_0x4f7b('0x1d')]:_0x2437cc[_0x4f7b('0x1b')]+_0x2437cc[_0x4f7b('0x1e')];var _0xf2311f;if(_0x519d90>=_0x496322){_0x519d90=_0x496322;_0xf2311f=0xc8;}else{_0xf2311f=0xce;}_0x40ecb0['status'](_0xf2311f);return _0x40ecb0[_0x4f7b('0x1f')]('Content-Range',_0x24e5cf+'-'+_0x519d90+'/'+_0x496322)[_0x4f7b('0x1a')](_0x260667);}return null;};}function patchUpdates(_0x12374b){return function(_0xa2f54e){try{jsonpatch[_0x4f7b('0x20')](_0xa2f54e,_0x12374b,!![]);}catch(_0x27127b){return BPromise[_0x4f7b('0x21')](_0x27127b);}return _0xa2f54e[_0x4f7b('0x22')]();};}function saveUpdates(_0x1f545e,_0x2a8b50){return function(_0x5508bd){if(_0x5508bd){return _0x5508bd[_0x4f7b('0x23')](_0x1f545e)[_0x4f7b('0x24')](function(_0x2c9ea6){return _0x2c9ea6;});}return null;};}function removeEntity(_0x5bd43f,_0x150f57){return function(_0x4610a4){if(_0x4610a4){return _0x4610a4['destroy']()[_0x4f7b('0x24')](function(){var _0x59ec24=_0x4610a4[_0x4f7b('0x25')]({'plain':!![]});var _0x2429be=_0x4f7b('0x26');return db[_0x4f7b('0x27')][_0x4f7b('0x28')]({'where':{'type':_0x2429be,'resourceId':_0x59ec24['id']}})[_0x4f7b('0x24')](function(){return _0x4610a4;});})[_0x4f7b('0x24')](function(){_0x5bd43f[_0x4f7b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x6c9626,_0x14e2c2){return function(_0x311675){if(!_0x311675){_0x6c9626['sendStatus'](0x194);}return _0x311675;};}function handleError(_0x19da29,_0x336739){_0x336739=_0x336739||0x1f4;return function(_0x1db684){logger[_0x4f7b('0x29')](_0x1db684[_0x4f7b('0x2a')]);if(_0x1db684['name']){delete _0x1db684[_0x4f7b('0x2b')];}_0x19da29[_0x4f7b('0x19')](_0x336739)[_0x4f7b('0x2c')](_0x1db684);};}exports['index']=function(_0x7de561,_0x5d13a1){var _0x4e4828={},_0x1a2346={},_0x52a5b1={'count':0x0,'rows':[]};var _0x1aad4b=_[_0x4f7b('0x2d')](db[_0x4f7b('0x2e')][_0x4f7b('0x2f')],function(_0x105ffb){return{'name':_0x105ffb[_0x4f7b('0x30')],'type':_0x105ffb[_0x4f7b('0x31')][_0x4f7b('0x32')]};});_0x1a2346[_0x4f7b('0x33')]=_[_0x4f7b('0x2d')](_0x1aad4b,_0x4f7b('0x2b'));_0x1a2346[_0x4f7b('0x34')]=_[_0x4f7b('0x35')](_0x7de561[_0x4f7b('0x34')]);_0x1a2346[_0x4f7b('0x36')]=_[_0x4f7b('0x37')](_0x1a2346[_0x4f7b('0x33')],_0x1a2346[_0x4f7b('0x34')]);_0x4e4828[_0x4f7b('0x38')]=_[_0x4f7b('0x37')](_0x1a2346[_0x4f7b('0x33')],qs[_0x4f7b('0x39')](_0x7de561['query'][_0x4f7b('0x39')]));_0x4e4828['attributes']=_0x4e4828[_0x4f7b('0x38')][_0x4f7b('0x3a')]?_0x4e4828['attributes']:_0x1a2346[_0x4f7b('0x33')];if(!_0x7de561[_0x4f7b('0x34')][_0x4f7b('0x3b')]('nolimit')){_0x4e4828[_0x4f7b('0x1e')]=qs[_0x4f7b('0x1e')](_0x7de561[_0x4f7b('0x34')][_0x4f7b('0x1e')]);_0x4e4828[_0x4f7b('0x1b')]=qs[_0x4f7b('0x1b')](_0x7de561[_0x4f7b('0x34')]['offset']);}_0x4e4828[_0x4f7b('0x3c')]=qs['sort'](_0x7de561[_0x4f7b('0x34')][_0x4f7b('0x3d')]);_0x4e4828[_0x4f7b('0x3e')]=qs['filters'](_[_0x4f7b('0x3f')](_0x7de561['query'],_0x1a2346[_0x4f7b('0x36')]),_0x1aad4b);if(_0x7de561[_0x4f7b('0x34')]['filter']){_0x4e4828['where']=_[_0x4f7b('0x40')](_0x4e4828['where'],{'$or':_[_0x4f7b('0x2d')](_0x1aad4b,function(_0x146268){if(_0x146268['type']!==_0x4f7b('0x41')){var _0x4e34cd={};_0x4e34cd[_0x146268['name']]={'$like':'%'+_0x7de561['query'][_0x4f7b('0x42')]+'%'};return _0x4e34cd;}})});}_0x4e4828=_[_0x4f7b('0x40')]({},_0x4e4828,_0x7de561[_0x4f7b('0x43')]);var _0x3c8745={'where':_0x4e4828['where']};return db[_0x4f7b('0x2e')]['count'](_0x3c8745)[_0x4f7b('0x24')](function(_0x586406){_0x52a5b1[_0x4f7b('0x1d')]=_0x586406;if(_0x7de561['query'][_0x4f7b('0x44')]){_0x4e4828[_0x4f7b('0x45')]=[{'all':!![]}];}return db[_0x4f7b('0x2e')][_0x4f7b('0x46')](_0x4e4828);})[_0x4f7b('0x24')](function(_0x325cd6){_0x52a5b1[_0x4f7b('0x47')]=_0x325cd6;return _0x52a5b1;})[_0x4f7b('0x24')](respondWithFilteredResult(_0x5d13a1,_0x4e4828))[_0x4f7b('0x48')](handleError(_0x5d13a1,null));};exports[_0x4f7b('0x49')]=function(_0x2d0be3,_0x3016d0){var _0x9c58fa={'raw':!![],'where':{'id':_0x2d0be3[_0x4f7b('0x4a')]['id']}},_0x508eaa={};_0x508eaa[_0x4f7b('0x33')]=_[_0x4f7b('0x35')](db[_0x4f7b('0x2e')]['rawAttributes']);_0x508eaa['query']=_[_0x4f7b('0x35')](_0x2d0be3[_0x4f7b('0x34')]);_0x508eaa[_0x4f7b('0x36')]=_[_0x4f7b('0x37')](_0x508eaa['model'],_0x508eaa['query']);_0x9c58fa[_0x4f7b('0x38')]=_[_0x4f7b('0x37')](_0x508eaa[_0x4f7b('0x33')],qs[_0x4f7b('0x39')](_0x2d0be3['query']['fields']));_0x9c58fa[_0x4f7b('0x38')]=_0x9c58fa[_0x4f7b('0x38')][_0x4f7b('0x3a')]?_0x9c58fa[_0x4f7b('0x38')]:_0x508eaa[_0x4f7b('0x33')];if(_0x2d0be3['query'][_0x4f7b('0x44')]){_0x9c58fa[_0x4f7b('0x45')]=[{'all':!![]}];}_0x9c58fa=_[_0x4f7b('0x40')]({},_0x9c58fa,_0x2d0be3['options']);return db[_0x4f7b('0x2e')][_0x4f7b('0x4b')](_0x9c58fa)[_0x4f7b('0x24')](handleEntityNotFound(_0x3016d0,null))[_0x4f7b('0x24')](respondWithResult(_0x3016d0,null))[_0x4f7b('0x48')](handleError(_0x3016d0,null));};exports[_0x4f7b('0x4c')]=function(_0xee485,_0x2e563f){return db[_0x4f7b('0x2e')][_0x4f7b('0x4c')](_0xee485['body'],{})[_0x4f7b('0x24')](function(_0x45eebf){var _0x148da8=_0xee485['user'][_0x4f7b('0x25')]({'plain':!![]});if(!_0x148da8)throw new Error(_0x4f7b('0x4d'));if(_0x148da8[_0x4f7b('0x4e')]===_0x4f7b('0x4f')){var _0x145dd7=_0x45eebf[_0x4f7b('0x25')]({'plain':!![]});var _0x144ba1=_0x4f7b('0x26');return db[_0x4f7b('0x50')][_0x4f7b('0x4b')]({'where':{'name':_0x144ba1,'userProfileId':_0x148da8['userProfileId']},'raw':!![]})[_0x4f7b('0x24')](function(_0xfb6a3d){if(_0xfb6a3d&&_0xfb6a3d[_0x4f7b('0x51')]===0x0){return db['UserProfileResource'][_0x4f7b('0x4c')]({'name':_0x145dd7[_0x4f7b('0x2b')],'resourceId':_0x145dd7['id'],'type':_0xfb6a3d[_0x4f7b('0x2b')],'sectionId':_0xfb6a3d['id']},{})[_0x4f7b('0x24')](function(){return _0x45eebf;});}else{return _0x45eebf;}})[_0x4f7b('0x48')](function(_0x819fb3){logger['error'](_0x4f7b('0x52'),_0x819fb3);throw _0x819fb3;});}return _0x45eebf;})[_0x4f7b('0x24')](respondWithResult(_0x2e563f,0xc9))[_0x4f7b('0x48')](handleError(_0x2e563f,null));};exports['update']=function(_0x4017b5,_0x1906ad){if(_0x4017b5[_0x4f7b('0x53')]['id']){delete _0x4017b5[_0x4f7b('0x53')]['id'];}return db[_0x4f7b('0x2e')][_0x4f7b('0x4b')]({'where':{'id':_0x4017b5['params']['id']}})[_0x4f7b('0x24')](handleEntityNotFound(_0x1906ad,null))['then'](saveUpdates(_0x4017b5['body'],null))['then'](respondWithResult(_0x1906ad,null))[_0x4f7b('0x48')](handleError(_0x1906ad,null));};exports[_0x4f7b('0x28')]=function(_0x27b2e1,_0x4eded2){return db['VoiceMail'][_0x4f7b('0x4b')]({'where':{'id':_0x27b2e1[_0x4f7b('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4eded2,null))[_0x4f7b('0x24')](removeEntity(_0x4eded2,null))[_0x4f7b('0x48')](handleError(_0x4eded2,null));};exports[_0x4f7b('0x54')]=function(_0x1a7ee9,_0x567874,_0x38c89a){return db[_0x4f7b('0x2e')][_0x4f7b('0x55')]({'where':{'id':_0x1a7ee9[_0x4f7b('0x4a')]['id']}})[_0x4f7b('0x24')](handleEntityNotFound(_0x567874,null))[_0x4f7b('0x24')](function(_0x311bd8){var _0x5cc48d;var _0x529821={},_0x507199={};_0x507199[_0x4f7b('0x33')]=_['keys'](db['VoiceMailMessage']['rawAttributes']);_0x507199['query']=_[_0x4f7b('0x35')](_0x1a7ee9[_0x4f7b('0x34')]);_0x507199[_0x4f7b('0x36')]=_[_0x4f7b('0x37')](_0x507199[_0x4f7b('0x33')],_0x507199[_0x4f7b('0x34')]);_0x529821[_0x4f7b('0x38')]=_[_0x4f7b('0x37')](_0x507199[_0x4f7b('0x33')],qs[_0x4f7b('0x39')](_0x1a7ee9[_0x4f7b('0x34')][_0x4f7b('0x39')]));_0x529821[_0x4f7b('0x38')]=_0x529821[_0x4f7b('0x38')][_0x4f7b('0x3a')]?_0x529821[_0x4f7b('0x38')]:_0x507199[_0x4f7b('0x33')];if(!_0x1a7ee9[_0x4f7b('0x34')]['hasOwnProperty'](_0x4f7b('0x56'))){_0x529821[_0x4f7b('0x1e')]=qs[_0x4f7b('0x1e')](_0x1a7ee9[_0x4f7b('0x34')][_0x4f7b('0x1e')]);_0x529821['offset']=qs['offset'](_0x1a7ee9[_0x4f7b('0x34')]['offset']);}_0x529821[_0x4f7b('0x3c')]=qs[_0x4f7b('0x3d')](_0x1a7ee9[_0x4f7b('0x34')][_0x4f7b('0x3d')]);_0x529821['where']=qs[_0x4f7b('0x36')](_[_0x4f7b('0x3f')](_0x1a7ee9[_0x4f7b('0x34')],_0x507199['filters']));if(_0x1a7ee9['query']['filter']){_0x529821[_0x4f7b('0x3e')]=_['merge'](_0x529821['where'],{'$or':_['map'](_0x529821[_0x4f7b('0x38')],function(_0x1484c8){var _0x2b0043={};_0x2b0043[_0x1484c8]={'$like':'%'+_0x1a7ee9['query'][_0x4f7b('0x42')]+'%'};return _0x2b0043;})});}_0x529821[_0x4f7b('0x3e')]=_['merge'](_0x529821['where'],{'mailboxuser':_0x311bd8[_0x4f7b('0x57')]});_0x529821=_[_0x4f7b('0x40')]({},_0x529821,_0x1a7ee9[_0x4f7b('0x43')]);return db[_0x4f7b('0x58')]['findAndCountAll'](_0x529821)[_0x4f7b('0x24')](respondWithFilteredResult(_0x567874,_0x529821));})[_0x4f7b('0x48')](handleError(_0x567874,null));};
\ No newline at end of file
+var _0x7334=['map','VoiceMail','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','getMessages','VoiceMailMessage','eml-format','rimraf','zip-dir','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/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','get','Voicemails','UserProfileResource','name','send','index'];(function(_0x441672,_0x4fd6e7){var _0x178859=function(_0x213b4a){while(--_0x213b4a){_0x441672['push'](_0x441672['shift']());}};_0x178859(++_0x4fd6e7);}(_0x7334,0x184));var _0x4733=function(_0x43ba90,_0x51c03c){_0x43ba90=_0x43ba90-0x0;var _0x4dbc72=_0x7334[_0x43ba90];return _0x4dbc72;};'use strict';var emlformat=require(_0x4733('0x0'));var rimraf=require(_0x4733('0x1'));var zipdir=require(_0x4733('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4733('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4733('0x4'));var util=require(_0x4733('0x5'));var path=require(_0x4733('0x6'));var sox=require(_0x4733('0x7'));var csv=require(_0x4733('0x8'));var ejs=require(_0x4733('0x9'));var fs=require('fs');var fs_extra=require(_0x4733('0xa'));var _=require(_0x4733('0xb'));var squel=require(_0x4733('0xc'));var crypto=require(_0x4733('0xd'));var jsforce=require(_0x4733('0xe'));var deskjs=require(_0x4733('0xf'));var toCsv=require(_0x4733('0x8'));var querystring=require(_0x4733('0x10'));var Papa=require(_0x4733('0x11'));var Redis=require(_0x4733('0x12'));var authService=require(_0x4733('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x4733('0x14'));var hardwareService=require(_0x4733('0x15'));var logger=require('../../config/logger')(_0x4733('0x16'));var utils=require('../../config/utils');var config=require(_0x4733('0x17'));var licenseUtil=require(_0x4733('0x18'));var db=require(_0x4733('0x19'))['db'];function respondWithStatusCode(_0x461f74,_0x100ecd){_0x100ecd=_0x100ecd||0xcc;return function(_0x1c146c){if(_0x1c146c){return _0x461f74[_0x4733('0x1a')](_0x100ecd);}return _0x461f74['status'](_0x100ecd)[_0x4733('0x1b')]();};}function respondWithResult(_0x543caf,_0x4327f3){_0x4327f3=_0x4327f3||0xc8;return function(_0x1a22e4){if(_0x1a22e4){return _0x543caf[_0x4733('0x1c')](_0x4327f3)[_0x4733('0x1d')](_0x1a22e4);}};}function respondWithFilteredResult(_0x3813df,_0x167016){return function(_0x12f111){if(_0x12f111){var _0x9fff=typeof _0x167016[_0x4733('0x1e')]==='undefined'&&typeof _0x167016[_0x4733('0x1f')]===_0x4733('0x20');var _0x47b129=_0x12f111[_0x4733('0x21')];var _0x1d2fb6=_0x9fff?0x0:_0x167016[_0x4733('0x1e')];var _0x384e0c=_0x9fff?_0x12f111['count']:_0x167016['offset']+_0x167016[_0x4733('0x1f')];var _0x3b730a;if(_0x384e0c>=_0x47b129){_0x384e0c=_0x47b129;_0x3b730a=0xc8;}else{_0x3b730a=0xce;}_0x3813df['status'](_0x3b730a);return _0x3813df[_0x4733('0x22')](_0x4733('0x23'),_0x1d2fb6+'-'+_0x384e0c+'/'+_0x47b129)[_0x4733('0x1d')](_0x12f111);}return null;};}function patchUpdates(_0x7a4e0){return function(_0x493cd3){try{jsonpatch[_0x4733('0x24')](_0x493cd3,_0x7a4e0,!![]);}catch(_0xb45e1){return BPromise['reject'](_0xb45e1);}return _0x493cd3[_0x4733('0x25')]();};}function saveUpdates(_0x18da47,_0x478e34){return function(_0x15a291){if(_0x15a291){return _0x15a291[_0x4733('0x26')](_0x18da47)[_0x4733('0x27')](function(_0x1a0643){return _0x1a0643;});}return null;};}function removeEntity(_0x3a2542,_0x24db74){return function(_0x180049){if(_0x180049){return _0x180049[_0x4733('0x28')]()['then'](function(){var _0x3e6976=_0x180049[_0x4733('0x29')]({'plain':!![]});var _0x7884e5=_0x4733('0x2a');return db[_0x4733('0x2b')][_0x4733('0x28')]({'where':{'type':_0x7884e5,'resourceId':_0x3e6976['id']}})[_0x4733('0x27')](function(){return _0x180049;});})[_0x4733('0x27')](function(){_0x3a2542[_0x4733('0x1c')](0xcc)[_0x4733('0x1b')]();});}};}function handleEntityNotFound(_0x521855,_0x3aeb57){return function(_0x4c91bc){if(!_0x4c91bc){_0x521855['sendStatus'](0x194);}return _0x4c91bc;};}function handleError(_0x24e975,_0x49c516){_0x49c516=_0x49c516||0x1f4;return function(_0xcde4f4){logger['error'](_0xcde4f4['stack']);if(_0xcde4f4['name']){delete _0xcde4f4[_0x4733('0x2c')];}_0x24e975[_0x4733('0x1c')](_0x49c516)[_0x4733('0x2d')](_0xcde4f4);};}exports[_0x4733('0x2e')]=function(_0x4fee4a,_0x538a7c){var _0x50f67e={},_0x2b2757={},_0x56872b={'count':0x0,'rows':[]};var _0x5a4814=_[_0x4733('0x2f')](db[_0x4733('0x30')][_0x4733('0x31')],function(_0x59172a){return{'name':_0x59172a['fieldName'],'type':_0x59172a[_0x4733('0x32')][_0x4733('0x33')]};});_0x2b2757[_0x4733('0x34')]=_[_0x4733('0x2f')](_0x5a4814,_0x4733('0x2c'));_0x2b2757['query']=_[_0x4733('0x35')](_0x4fee4a[_0x4733('0x36')]);_0x2b2757[_0x4733('0x37')]=_[_0x4733('0x38')](_0x2b2757[_0x4733('0x34')],_0x2b2757['query']);_0x50f67e['attributes']=_[_0x4733('0x38')](_0x2b2757[_0x4733('0x34')],qs[_0x4733('0x39')](_0x4fee4a[_0x4733('0x36')][_0x4733('0x39')]));_0x50f67e['attributes']=_0x50f67e[_0x4733('0x3a')][_0x4733('0x3b')]?_0x50f67e[_0x4733('0x3a')]:_0x2b2757['model'];if(!_0x4fee4a[_0x4733('0x36')][_0x4733('0x3c')](_0x4733('0x3d'))){_0x50f67e[_0x4733('0x1f')]=qs[_0x4733('0x1f')](_0x4fee4a[_0x4733('0x36')][_0x4733('0x1f')]);_0x50f67e[_0x4733('0x1e')]=qs['offset'](_0x4fee4a[_0x4733('0x36')]['offset']);}_0x50f67e[_0x4733('0x3e')]=qs[_0x4733('0x3f')](_0x4fee4a[_0x4733('0x36')][_0x4733('0x3f')]);_0x50f67e[_0x4733('0x40')]=qs[_0x4733('0x37')](_[_0x4733('0x41')](_0x4fee4a[_0x4733('0x36')],_0x2b2757['filters']),_0x5a4814);if(_0x4fee4a[_0x4733('0x36')][_0x4733('0x42')]){_0x50f67e['where']=_[_0x4733('0x43')](_0x50f67e[_0x4733('0x40')],{'$or':_['map'](_0x5a4814,function(_0x34aefe){if(_0x34aefe['type']!==_0x4733('0x44')){var _0x4c3073={};_0x4c3073[_0x34aefe[_0x4733('0x2c')]]={'$like':'%'+_0x4fee4a[_0x4733('0x36')]['filter']+'%'};return _0x4c3073;}})});}_0x50f67e=_['merge']({},_0x50f67e,_0x4fee4a[_0x4733('0x45')]);var _0x1d7112={'where':_0x50f67e['where']};return db[_0x4733('0x30')][_0x4733('0x21')](_0x1d7112)[_0x4733('0x27')](function(_0x28ed14){_0x56872b[_0x4733('0x21')]=_0x28ed14;if(_0x4fee4a[_0x4733('0x36')][_0x4733('0x46')]){_0x50f67e[_0x4733('0x47')]=[{'all':!![]}];}return db[_0x4733('0x30')][_0x4733('0x48')](_0x50f67e);})[_0x4733('0x27')](function(_0x1d32df){_0x56872b[_0x4733('0x49')]=_0x1d32df;return _0x56872b;})[_0x4733('0x27')](respondWithFilteredResult(_0x538a7c,_0x50f67e))[_0x4733('0x4a')](handleError(_0x538a7c,null));};exports[_0x4733('0x4b')]=function(_0x297bb1,_0x397088){var _0x50b9cb={'raw':!![],'where':{'id':_0x297bb1[_0x4733('0x4c')]['id']}},_0x1a0c5c={};_0x1a0c5c[_0x4733('0x34')]=_[_0x4733('0x35')](db[_0x4733('0x30')][_0x4733('0x31')]);_0x1a0c5c[_0x4733('0x36')]=_[_0x4733('0x35')](_0x297bb1[_0x4733('0x36')]);_0x1a0c5c[_0x4733('0x37')]=_[_0x4733('0x38')](_0x1a0c5c[_0x4733('0x34')],_0x1a0c5c[_0x4733('0x36')]);_0x50b9cb[_0x4733('0x3a')]=_['intersection'](_0x1a0c5c['model'],qs[_0x4733('0x39')](_0x297bb1[_0x4733('0x36')][_0x4733('0x39')]));_0x50b9cb[_0x4733('0x3a')]=_0x50b9cb[_0x4733('0x3a')][_0x4733('0x3b')]?_0x50b9cb[_0x4733('0x3a')]:_0x1a0c5c[_0x4733('0x34')];if(_0x297bb1[_0x4733('0x36')][_0x4733('0x46')]){_0x50b9cb['include']=[{'all':!![]}];}_0x50b9cb=_['merge']({},_0x50b9cb,_0x297bb1['options']);return db['VoiceMail'][_0x4733('0x4d')](_0x50b9cb)[_0x4733('0x27')](handleEntityNotFound(_0x397088,null))[_0x4733('0x27')](respondWithResult(_0x397088,null))[_0x4733('0x4a')](handleError(_0x397088,null));};exports[_0x4733('0x4e')]=function(_0x45b9cf,_0x1c6abf){return db[_0x4733('0x30')][_0x4733('0x4e')](_0x45b9cf[_0x4733('0x4f')],{})['then'](function(_0x53d70b){var _0x29c93d=_0x45b9cf['user'][_0x4733('0x29')]({'plain':!![]});if(!_0x29c93d)throw new Error(_0x4733('0x50'));if(_0x29c93d[_0x4733('0x51')]==='user'){var _0x3f2a78=_0x53d70b[_0x4733('0x29')]({'plain':!![]});var _0x31ae69=_0x4733('0x2a');return db[_0x4733('0x52')][_0x4733('0x4d')]({'where':{'name':_0x31ae69,'userProfileId':_0x29c93d[_0x4733('0x53')]},'raw':!![]})[_0x4733('0x27')](function(_0x28d428){if(_0x28d428&&_0x28d428['autoAssociation']===0x0){return db[_0x4733('0x2b')][_0x4733('0x4e')]({'name':_0x3f2a78[_0x4733('0x2c')],'resourceId':_0x3f2a78['id'],'type':_0x28d428['name'],'sectionId':_0x28d428['id']},{})[_0x4733('0x27')](function(){return _0x53d70b;});}else{return _0x53d70b;}})[_0x4733('0x4a')](function(_0xafb3f8){logger[_0x4733('0x54')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xafb3f8);throw _0xafb3f8;});}return _0x53d70b;})[_0x4733('0x27')](respondWithResult(_0x1c6abf,0xc9))['catch'](handleError(_0x1c6abf,null));};exports[_0x4733('0x26')]=function(_0x3b8165,_0x42405e){if(_0x3b8165[_0x4733('0x4f')]['id']){delete _0x3b8165[_0x4733('0x4f')]['id'];}return db['VoiceMail'][_0x4733('0x4d')]({'where':{'id':_0x3b8165[_0x4733('0x4c')]['id']}})['then'](handleEntityNotFound(_0x42405e,null))['then'](saveUpdates(_0x3b8165[_0x4733('0x4f')],null))[_0x4733('0x27')](respondWithResult(_0x42405e,null))[_0x4733('0x4a')](handleError(_0x42405e,null));};exports[_0x4733('0x28')]=function(_0x422010,_0x972fde){return db[_0x4733('0x30')][_0x4733('0x4d')]({'where':{'id':_0x422010['params']['id']}})['then'](handleEntityNotFound(_0x972fde,null))[_0x4733('0x27')](removeEntity(_0x972fde,null))['catch'](handleError(_0x972fde,null));};exports[_0x4733('0x55')]=function(_0x2c532a,_0x51a8db,_0x57034a){return db['VoiceMail']['findOne']({'where':{'id':_0x2c532a[_0x4733('0x4c')]['id']}})[_0x4733('0x27')](handleEntityNotFound(_0x51a8db,null))[_0x4733('0x27')](function(_0x5e451a){var _0x12242a;var _0x3d1157={},_0x15a32e={};_0x15a32e[_0x4733('0x34')]=_[_0x4733('0x35')](db[_0x4733('0x56')][_0x4733('0x31')]);_0x15a32e['query']=_[_0x4733('0x35')](_0x2c532a[_0x4733('0x36')]);_0x15a32e['filters']=_['intersection'](_0x15a32e[_0x4733('0x34')],_0x15a32e[_0x4733('0x36')]);_0x3d1157[_0x4733('0x3a')]=_[_0x4733('0x38')](_0x15a32e[_0x4733('0x34')],qs[_0x4733('0x39')](_0x2c532a[_0x4733('0x36')][_0x4733('0x39')]));_0x3d1157[_0x4733('0x3a')]=_0x3d1157['attributes'][_0x4733('0x3b')]?_0x3d1157[_0x4733('0x3a')]:_0x15a32e[_0x4733('0x34')];if(!_0x2c532a['query'][_0x4733('0x3c')]('nolimit')){_0x3d1157[_0x4733('0x1f')]=qs[_0x4733('0x1f')](_0x2c532a[_0x4733('0x36')][_0x4733('0x1f')]);_0x3d1157[_0x4733('0x1e')]=qs[_0x4733('0x1e')](_0x2c532a['query'][_0x4733('0x1e')]);}_0x3d1157['order']=qs[_0x4733('0x3f')](_0x2c532a[_0x4733('0x36')]['sort']);_0x3d1157[_0x4733('0x40')]=qs['filters'](_['pick'](_0x2c532a[_0x4733('0x36')],_0x15a32e[_0x4733('0x37')]));if(_0x2c532a[_0x4733('0x36')][_0x4733('0x42')]){_0x3d1157[_0x4733('0x40')]=_[_0x4733('0x43')](_0x3d1157[_0x4733('0x40')],{'$or':_[_0x4733('0x2f')](_0x3d1157[_0x4733('0x3a')],function(_0x5eab76){var _0x53d128={};_0x53d128[_0x5eab76]={'$like':'%'+_0x2c532a['query'][_0x4733('0x42')]+'%'};return _0x53d128;})});}_0x3d1157[_0x4733('0x40')]=_[_0x4733('0x43')](_0x3d1157[_0x4733('0x40')],{'mailboxuser':_0x5e451a['mailbox']});_0x3d1157=_[_0x4733('0x43')]({},_0x3d1157,_0x2c532a[_0x4733('0x45')]);return db[_0x4733('0x56')]['findAndCountAll'](_0x3d1157)[_0x4733('0x27')](respondWithFilteredResult(_0x51a8db,_0x3d1157));})['catch'](handleError(_0x51a8db,null));};
\ No newline at end of file
index 14b2751..2f754ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f52=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceMail.attributes','define','VoiceMail','voice_voicemail','mailbox','context','lodash'];(function(_0x224f65,_0x4750bf){var _0x3f921c=function(_0x1b5f64){while(--_0x1b5f64){_0x224f65['push'](_0x224f65['shift']());}};_0x3f921c(++_0x4750bf);}(_0x8f52,0x95));var _0x28f5=function(_0x368bba,_0x1f625b){_0x368bba=_0x368bba-0x0;var _0x409f8f=_0x8f52[_0x368bba];return _0x409f8f;};'use strict';var _=require(_0x28f5('0x0'));var util=require(_0x28f5('0x1'));var logger=require(_0x28f5('0x2'))(_0x28f5('0x3'));var moment=require(_0x28f5('0x4'));var BPromise=require(_0x28f5('0x5'));var rp=require(_0x28f5('0x6'));var fs=require('fs');var path=require(_0x28f5('0x7'));var rimraf=require(_0x28f5('0x8'));var config=require('../../config/environment');var attributes=require(_0x28f5('0x9'));module['exports']=function(_0x2a024e,_0x979b3e){return _0x2a024e[_0x28f5('0xa')](_0x28f5('0xb'),attributes,{'tableName':_0x28f5('0xc'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0x28f5('0xd'),_0x28f5('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf59e=['exports','voice_voicemail','mailbox_context','mailbox','context','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceMail.attributes'];(function(_0x7fa4ad,_0x3e9023){var _0x12163e=function(_0x24831b){while(--_0x24831b){_0x7fa4ad['push'](_0x7fa4ad['shift']());}};_0x12163e(++_0x3e9023);}(_0xf59e,0x17f));var _0xef59=function(_0x36b3c5,_0x2a1867){_0x36b3c5=_0x36b3c5-0x0;var _0x27abdf=_0xf59e[_0x36b3c5];return _0x27abdf;};'use strict';var _=require(_0xef59('0x0'));var util=require('util');var logger=require(_0xef59('0x1'))(_0xef59('0x2'));var moment=require(_0xef59('0x3'));var BPromise=require(_0xef59('0x4'));var rp=require(_0xef59('0x5'));var fs=require('fs');var path=require(_0xef59('0x6'));var rimraf=require(_0xef59('0x7'));var config=require('../../config/environment');var attributes=require(_0xef59('0x8'));module[_0xef59('0x9')]=function(_0x132e17,_0x4a4225){return _0x132e17['define']('VoiceMail',attributes,{'tableName':_0xef59('0xa'),'paranoid':![],'indexes':[{'name':_0xef59('0xb'),'fields':[_0xef59('0xc'),_0xef59('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index fafb015..89c52b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e5a=['result','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceMail,\x20%s,\x20%s','message'];(function(_0x292f4b,_0x9b897c){var _0x32a145=function(_0x3e3ac0){while(--_0x3e3ac0){_0x292f4b['push'](_0x292f4b['shift']());}};_0x32a145(++_0x9b897c);}(_0x0e5a,0x6a));var _0xa0e5=function(_0x340ef1,_0x244e90){_0x340ef1=_0x340ef1-0x0;var _0x589b25=_0x0e5a[_0x340ef1];return _0x589b25;};'use strict';var _=require('lodash');var util=require(_0xa0e5('0x0'));var moment=require(_0xa0e5('0x1'));var BPromise=require(_0xa0e5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa0e5('0x3'));var logger=require(_0xa0e5('0x4'))(_0xa0e5('0x5'));var config=require(_0xa0e5('0x6'));var jayson=require(_0xa0e5('0x7'));var client=jayson['client'][_0xa0e5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x156c58,_0x3fd267,_0x390485){return new BPromise(function(_0x3a6ad8,_0x2f48a8){return client[_0xa0e5('0x9')](_0x156c58,_0x390485)[_0xa0e5('0xa')](function(_0x532f6d){logger[_0xa0e5('0xb')]('VoiceMail,\x20%s,\x20%s',_0x3fd267,_0xa0e5('0xc'));logger[_0xa0e5('0xd')](_0xa0e5('0xe'),_0x3fd267,_0xa0e5('0xc'),JSON[_0xa0e5('0xf')](_0x532f6d));if(_0x532f6d['error']){if(_0x532f6d[_0xa0e5('0x10')][_0xa0e5('0x11')]===0x1f4){logger['error'](_0xa0e5('0x12'),_0x3fd267,_0x532f6d[_0xa0e5('0x10')]['message']);return _0x2f48a8(_0x532f6d['error'][_0xa0e5('0x13')]);}logger['error']('VoiceMail,\x20%s,\x20%s',_0x3fd267,_0x532f6d[_0xa0e5('0x10')][_0xa0e5('0x13')]);return _0x3a6ad8(_0x532f6d['error'][_0xa0e5('0x13')]);}else{logger[_0xa0e5('0xb')](_0xa0e5('0x12'),_0x3fd267,'request\x20sent');_0x3a6ad8(_0x532f6d[_0xa0e5('0x14')][_0xa0e5('0x13')]);}})['catch'](function(_0x33eee1){logger[_0xa0e5('0x10')](_0xa0e5('0x12'),_0x3fd267,_0x33eee1);_0x2f48a8(_0x33eee1);});});}
\ No newline at end of file
+var _0xf709=['lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','error','VoiceMail,\x20%s,\x20%s','message','result'];(function(_0x1e393b,_0x355f6b){var _0x3d0bfe=function(_0x320830){while(--_0x320830){_0x1e393b['push'](_0x1e393b['shift']());}};_0x3d0bfe(++_0x355f6b);}(_0xf709,0x154));var _0x9f70=function(_0x3c3c95,_0x5a5d9b){_0x3c3c95=_0x3c3c95-0x0;var _0x152fe3=_0xf709[_0x3c3c95];return _0x152fe3;};'use strict';var _=require(_0x9f70('0x0'));var util=require(_0x9f70('0x1'));var moment=require('moment');var BPromise=require(_0x9f70('0x2'));var rs=require(_0x9f70('0x3'));var fs=require('fs');var Redis=require(_0x9f70('0x4'));var db=require(_0x9f70('0x5'))['db'];var utils=require(_0x9f70('0x6'));var logger=require('../../config/logger')(_0x9f70('0x7'));var config=require(_0x9f70('0x8'));var jayson=require(_0x9f70('0x9'));var client=jayson[_0x9f70('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xa0e8c2,_0x31e444,_0x4bded8){return new BPromise(function(_0x5165d7,_0xab0182){return client['request'](_0xa0e8c2,_0x4bded8)[_0x9f70('0xb')](function(_0x1761a3){logger[_0x9f70('0xc')]('VoiceMail,\x20%s,\x20%s',_0x31e444,'request\x20sent');logger[_0x9f70('0xd')](_0x9f70('0xe'),_0x31e444,_0x9f70('0xf'),JSON['stringify'](_0x1761a3));if(_0x1761a3[_0x9f70('0x10')]){if(_0x1761a3[_0x9f70('0x10')]['code']===0x1f4){logger[_0x9f70('0x10')](_0x9f70('0x11'),_0x31e444,_0x1761a3[_0x9f70('0x10')][_0x9f70('0x12')]);return _0xab0182(_0x1761a3[_0x9f70('0x10')][_0x9f70('0x12')]);}logger[_0x9f70('0x10')](_0x9f70('0x11'),_0x31e444,_0x1761a3[_0x9f70('0x10')]['message']);return _0x5165d7(_0x1761a3[_0x9f70('0x10')][_0x9f70('0x12')]);}else{logger['info'](_0x9f70('0x11'),_0x31e444,_0x9f70('0xf'));_0x5165d7(_0x1761a3[_0x9f70('0x13')][_0x9f70('0x12')]);}})['catch'](function(_0x2c9253){logger[_0x9f70('0x10')]('VoiceMail,\x20%s,\x20%s',_0x31e444,_0x2c9253);_0xab0182(_0x2c9253);});});}
\ No newline at end of file
index f8b1d13..afa5d7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd24=['update','delete','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/:id','isAuthenticated','show','download','post','create','put'];(function(_0x28e78d,_0xbe1472){var _0x174e75=function(_0x42de79){while(--_0x42de79){_0x28e78d['push'](_0x28e78d['shift']());}};_0x174e75(++_0xbe1472);}(_0xfd24,0x121));var _0x4fd2=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0xfd24[_0x580647];return _0x5f0792;};'use strict';var multer=require(_0x4fd2('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4fd2('0x1'));var express=require('express');var router=express[_0x4fd2('0x2')]();var fs_extra=require(_0x4fd2('0x3'));var auth=require(_0x4fd2('0x4'));var interaction=require(_0x4fd2('0x5'));var config=require('../../config/environment');var controller=require('./voiceMailMessage.controller');router[_0x4fd2('0x6')]('/',auth['isAuthenticated'](),controller[_0x4fd2('0x7')]);router[_0x4fd2('0x6')](_0x4fd2('0x8'),auth[_0x4fd2('0x9')](),controller[_0x4fd2('0xa')]);router[_0x4fd2('0x6')]('/:id/download',auth[_0x4fd2('0x9')](),controller[_0x4fd2('0xb')]);router[_0x4fd2('0xc')]('/',auth[_0x4fd2('0x9')](),controller[_0x4fd2('0xd')]);router[_0x4fd2('0xe')](_0x4fd2('0x8'),auth[_0x4fd2('0x9')](),controller[_0x4fd2('0xf')]);router[_0x4fd2('0x10')]('/:id',auth[_0x4fd2('0x9')](),controller[_0x4fd2('0x11')]);module[_0x4fd2('0x12')]=router;
\ No newline at end of file
+var _0x01ff=['../../components/auth/service','../../components/interaction/service','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','delete','destroy','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x475eb7,_0x2ab29d){var _0x103b12=function(_0x5b0d1b){while(--_0x5b0d1b){_0x475eb7['push'](_0x475eb7['shift']());}};_0x103b12(++_0x2ab29d);}(_0x01ff,0x112));var _0xf01f=function(_0x106825,_0x5d241a){_0x106825=_0x106825-0x0;var _0x57a7a4=_0x01ff[_0x106825];return _0x57a7a4;};'use strict';var multer=require(_0xf01f('0x0'));var util=require(_0xf01f('0x1'));var path=require(_0xf01f('0x2'));var timeout=require(_0xf01f('0x3'));var express=require(_0xf01f('0x4'));var router=express['Router']();var fs_extra=require(_0xf01f('0x5'));var auth=require(_0xf01f('0x6'));var interaction=require(_0xf01f('0x7'));var config=require('../../config/environment');var controller=require(_0xf01f('0x8'));router[_0xf01f('0x9')]('/',auth[_0xf01f('0xa')](),controller[_0xf01f('0xb')]);router['get'](_0xf01f('0xc'),auth[_0xf01f('0xa')](),controller[_0xf01f('0xd')]);router[_0xf01f('0x9')](_0xf01f('0xe'),auth[_0xf01f('0xa')](),controller[_0xf01f('0xf')]);router[_0xf01f('0x10')]('/',auth['isAuthenticated'](),controller[_0xf01f('0x11')]);router['put'](_0xf01f('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xf01f('0x12')](_0xf01f('0xc'),auth['isAuthenticated'](),controller[_0xf01f('0x13')]);module['exports']=router;
\ No newline at end of file
index c0cef4e..61b54bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4621=['INTEGER','STRING','BLOB','TIMESTAMP','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','getDataValue'];(function(_0x5aed9f,_0x1cb632){var _0xcd3bc9=function(_0x235009){while(--_0x235009){_0x5aed9f['push'](_0x5aed9f['shift']());}};_0xcd3bc9(++_0x1cb632);}(_0x4621,0x12d));var _0x1462=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x4621[_0x19950b];return _0x3c6b41;};'use strict';var Sequelize=require(_0x1462('0x0'));module[_0x1462('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x45eeac){return this[_0x1462('0x2')]('id');}},'msgnum':{'type':Sequelize[_0x1462('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x1462('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x1462('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x1462('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0x1462('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0x1462('0x4')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize['STRING'],'defaultValue':''},'recording':{'type':Sequelize[_0x1462('0x5')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x1462('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x1462('0x6'),'defaultValue':Sequelize['literal'](_0x1462('0x7'))}};
\ No newline at end of file
+var _0x2a4e=['long','TIMESTAMP','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','exports','VIRTUAL','INTEGER','STRING','BLOB'];(function(_0x5a99db,_0x1cece5){var _0x3aad62=function(_0x334cb7){while(--_0x334cb7){_0x5a99db['push'](_0x5a99db['shift']());}};_0x3aad62(++_0x1cece5);}(_0x2a4e,0x7b));var _0xe2a4=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2a4e[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');module[_0xe2a4('0x0')]={'name':{'type':Sequelize[_0xe2a4('0x1')],'get':function(_0x12bf15){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0xe2a4('0x2')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0xe2a4('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0xe2a4('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0xe2a4('0x3')],'defaultValue':''},'duration':{'type':Sequelize[_0xe2a4('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xe2a4('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xe2a4('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0xe2a4('0x4')](_0xe2a4('0x5')),'defaultValue':null},'flag':{'type':Sequelize[_0xe2a4('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xe2a4('0x3')],'defaultValue':''},'stamp':{'type':_0xe2a4('0x6'),'defaultValue':Sequelize['literal'](_0xe2a4('0x7'))}};
\ No newline at end of file
index 068051b..e0fe842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c9e=['pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','download','recording','ValidationError','VoiceMailMessage\x20not\x20found','msg_id','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','VoiceMailMessage','rawAttributes','fieldName','type','name','keys','query','intersection','model','attributes','length','hasOwnProperty','nolimit','limit','sort','where','filters'];(function(_0x57dd30,_0x1af49b){var _0x54ec30=function(_0x48ffb2){while(--_0x48ffb2){_0x57dd30['push'](_0x57dd30['shift']());}};_0x54ec30(++_0x1af49b);}(_0x4c9e,0x6b));var _0xe4c9=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0x4c9e[_0x5b78e8];return _0xf2c321;};'use strict';var emlformat=require(_0xe4c9('0x0'));var rimraf=require(_0xe4c9('0x1'));var zipdir=require(_0xe4c9('0x2'));var jsonpatch=require(_0xe4c9('0x3'));var rp=require(_0xe4c9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe4c9('0x5'));var util=require('util');var path=require(_0xe4c9('0x6'));var sox=require(_0xe4c9('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe4c9('0x8'));var _=require(_0xe4c9('0x9'));var squel=require(_0xe4c9('0xa'));var crypto=require(_0xe4c9('0xb'));var jsforce=require(_0xe4c9('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe4c9('0xd'));var querystring=require(_0xe4c9('0xe'));var Papa=require(_0xe4c9('0xf'));var Redis=require(_0xe4c9('0x10'));var authService=require(_0xe4c9('0x11'));var qs=require(_0xe4c9('0x12'));var as=require(_0xe4c9('0x13'));var hardwareService=require(_0xe4c9('0x14'));var logger=require('../../config/logger')(_0xe4c9('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe4c9('0x16'));var db=require(_0xe4c9('0x17'))['db'];function respondWithStatusCode(_0xa311fc,_0x3b1e05){_0x3b1e05=_0x3b1e05||0xcc;return function(_0x2b2d6d){if(_0x2b2d6d){return _0xa311fc[_0xe4c9('0x18')](_0x3b1e05);}return _0xa311fc[_0xe4c9('0x19')](_0x3b1e05)[_0xe4c9('0x1a')]();};}function respondWithResult(_0x53eea4,_0x4cdaa4){_0x4cdaa4=_0x4cdaa4||0xc8;return function(_0xb8044){if(_0xb8044){return _0x53eea4['status'](_0x4cdaa4)[_0xe4c9('0x1b')](_0xb8044);}};}function respondWithFilteredResult(_0x2710a7,_0x1b6e69){return function(_0x4e3deb){if(_0x4e3deb){var _0x5dffb2=typeof _0x1b6e69[_0xe4c9('0x1c')]===_0xe4c9('0x1d')&&typeof _0x1b6e69['limit']===_0xe4c9('0x1d');var _0x362c3b=_0x4e3deb[_0xe4c9('0x1e')];var _0x2bbfd1=_0x5dffb2?0x0:_0x1b6e69[_0xe4c9('0x1c')];var _0x2db885=_0x5dffb2?_0x4e3deb[_0xe4c9('0x1e')]:_0x1b6e69['offset']+_0x1b6e69['limit'];var _0x679b41;if(_0x2db885>=_0x362c3b){_0x2db885=_0x362c3b;_0x679b41=0xc8;}else{_0x679b41=0xce;}_0x2710a7[_0xe4c9('0x19')](_0x679b41);return _0x2710a7[_0xe4c9('0x1f')](_0xe4c9('0x20'),_0x2bbfd1+'-'+_0x2db885+'/'+_0x362c3b)[_0xe4c9('0x1b')](_0x4e3deb);}return null;};}function patchUpdates(_0x42907d){return function(_0x14e2b7){try{jsonpatch[_0xe4c9('0x21')](_0x14e2b7,_0x42907d,!![]);}catch(_0x107dd9){return BPromise[_0xe4c9('0x22')](_0x107dd9);}return _0x14e2b7[_0xe4c9('0x23')]();};}function saveUpdates(_0x1a0ea1,_0x5b2668){return function(_0x453e28){if(_0x453e28){return _0x453e28[_0xe4c9('0x24')](_0x1a0ea1)[_0xe4c9('0x25')](function(_0x41bce3){return _0x41bce3;});}return null;};}function removeEntity(_0x1b18ab,_0x41bf35){return function(_0x1f3edb){if(_0x1f3edb){return _0x1f3edb[_0xe4c9('0x26')]()[_0xe4c9('0x25')](function(){_0x1b18ab[_0xe4c9('0x19')](0xcc)[_0xe4c9('0x1a')]();});}};}function handleEntityNotFound(_0x3e793f,_0x460da8){return function(_0x10ade9){if(!_0x10ade9){_0x3e793f['sendStatus'](0x194);}return _0x10ade9;};}function handleError(_0x1ee4b9,_0x5a0829){_0x5a0829=_0x5a0829||0x1f4;return function(_0x1c6197){logger[_0xe4c9('0x27')](_0x1c6197[_0xe4c9('0x28')]);if(_0x1c6197['name']){delete _0x1c6197['name'];}_0x1ee4b9[_0xe4c9('0x19')](_0x5a0829)[_0xe4c9('0x29')](_0x1c6197);};}exports[_0xe4c9('0x2a')]=function(_0x32ae59,_0x110892){var _0x18dcfa={},_0x3fe1ec={},_0x5267c7={'count':0x0,'rows':[]};var _0x306d65=_[_0xe4c9('0x2b')](db[_0xe4c9('0x2c')][_0xe4c9('0x2d')],function(_0x105a63){return{'name':_0x105a63[_0xe4c9('0x2e')],'type':_0x105a63[_0xe4c9('0x2f')]['key']};});_0x3fe1ec['model']=_['differenceBy'](_[_0xe4c9('0x2b')](_0x306d65,_0xe4c9('0x30')),[_0xe4c9('0x30')]);_0x3fe1ec['query']=_[_0xe4c9('0x31')](_0x32ae59[_0xe4c9('0x32')]);_0x3fe1ec['filters']=_[_0xe4c9('0x33')](_0x3fe1ec[_0xe4c9('0x34')],_0x3fe1ec[_0xe4c9('0x32')]);_0x18dcfa[_0xe4c9('0x35')]=_[_0xe4c9('0x33')](_0x3fe1ec['model'],qs['fields'](_0x32ae59['query']['fields']));_0x18dcfa[_0xe4c9('0x35')]=_0x18dcfa[_0xe4c9('0x35')][_0xe4c9('0x36')]?_0x18dcfa[_0xe4c9('0x35')]:_0x3fe1ec[_0xe4c9('0x34')];if(!_0x32ae59['query'][_0xe4c9('0x37')](_0xe4c9('0x38'))){_0x18dcfa['limit']=qs[_0xe4c9('0x39')](_0x32ae59[_0xe4c9('0x32')][_0xe4c9('0x39')]);_0x18dcfa[_0xe4c9('0x1c')]=qs[_0xe4c9('0x1c')](_0x32ae59[_0xe4c9('0x32')][_0xe4c9('0x1c')]);}_0x18dcfa['order']=qs[_0xe4c9('0x3a')](_0x32ae59[_0xe4c9('0x32')][_0xe4c9('0x3a')]);_0x18dcfa[_0xe4c9('0x3b')]=qs[_0xe4c9('0x3c')](_[_0xe4c9('0x3d')](_0x32ae59['query'],_0x3fe1ec[_0xe4c9('0x3c')]),_0x306d65);if(_0x32ae59[_0xe4c9('0x32')][_0xe4c9('0x3e')]){_0x18dcfa[_0xe4c9('0x3b')]=_[_0xe4c9('0x3f')](_0x18dcfa[_0xe4c9('0x3b')],{'$or':_['map'](_0x306d65,function(_0x2477cd){if(_0x2477cd[_0xe4c9('0x2f')]!==_0xe4c9('0x40')){var _0x5990b6={};_0x5990b6[_0x2477cd['name']]={'$like':'%'+_0x32ae59['query'][_0xe4c9('0x3e')]+'%'};return _0x5990b6;}})});}_0x18dcfa=_['merge']({},_0x18dcfa,_0x32ae59[_0xe4c9('0x41')]);var _0x59f741={'where':_0x18dcfa[_0xe4c9('0x3b')]};return db['VoiceMailMessage']['count'](_0x59f741)[_0xe4c9('0x25')](function(_0x583aa9){_0x5267c7[_0xe4c9('0x1e')]=_0x583aa9;if(_0x32ae59[_0xe4c9('0x32')][_0xe4c9('0x42')]){_0x18dcfa[_0xe4c9('0x43')]=[{'all':!![]}];}return db[_0xe4c9('0x2c')][_0xe4c9('0x44')](_0x18dcfa);})[_0xe4c9('0x25')](function(_0x48d42a){_0x5267c7[_0xe4c9('0x45')]=_0x48d42a;return _0x5267c7;})['then'](respondWithFilteredResult(_0x110892,_0x18dcfa))[_0xe4c9('0x46')](handleError(_0x110892,null));};exports[_0xe4c9('0x47')]=function(_0x4a6e84,_0x294899){var _0x13f6db={'raw':!![],'where':{'id':_0x4a6e84[_0xe4c9('0x48')]['id']}},_0x4b3484={};_0x4b3484[_0xe4c9('0x34')]=_[_0xe4c9('0x31')](db[_0xe4c9('0x2c')]['rawAttributes']);_0x4b3484[_0xe4c9('0x32')]=_[_0xe4c9('0x31')](_0x4a6e84[_0xe4c9('0x32')]);_0x4b3484[_0xe4c9('0x3c')]=_[_0xe4c9('0x33')](_0x4b3484['model'],_0x4b3484['query']);_0x13f6db[_0xe4c9('0x35')]=_[_0xe4c9('0x33')](_0x4b3484[_0xe4c9('0x34')],qs[_0xe4c9('0x49')](_0x4a6e84[_0xe4c9('0x32')][_0xe4c9('0x49')]));_0x13f6db[_0xe4c9('0x35')]=_0x13f6db[_0xe4c9('0x35')][_0xe4c9('0x36')]?_0x13f6db[_0xe4c9('0x35')]:_0x4b3484[_0xe4c9('0x34')];if(_0x4a6e84[_0xe4c9('0x32')][_0xe4c9('0x42')]){_0x13f6db['include']=[{'all':!![]}];}_0x13f6db=_[_0xe4c9('0x3f')]({},_0x13f6db,_0x4a6e84['options']);return db[_0xe4c9('0x2c')][_0xe4c9('0x4a')](_0x13f6db)[_0xe4c9('0x25')](handleEntityNotFound(_0x294899,null))[_0xe4c9('0x25')](respondWithResult(_0x294899,null))['catch'](handleError(_0x294899,null));};exports[_0xe4c9('0x4b')]=function(_0x773dfe,_0x40b090){return db['VoiceMailMessage'][_0xe4c9('0x4b')](_0x773dfe['body'],{})[_0xe4c9('0x25')](respondWithResult(_0x40b090,0xc9))[_0xe4c9('0x46')](handleError(_0x40b090,null));};exports[_0xe4c9('0x24')]=function(_0x5b7ab1,_0x3a2c12){if(_0x5b7ab1[_0xe4c9('0x4c')]['id']){delete _0x5b7ab1[_0xe4c9('0x4c')]['id'];}return db[_0xe4c9('0x2c')][_0xe4c9('0x4a')]({'where':{'id':_0x5b7ab1[_0xe4c9('0x48')]['id']}})[_0xe4c9('0x25')](handleEntityNotFound(_0x3a2c12,null))[_0xe4c9('0x25')](saveUpdates(_0x5b7ab1[_0xe4c9('0x4c')],null))[_0xe4c9('0x25')](respondWithResult(_0x3a2c12,null))[_0xe4c9('0x46')](handleError(_0x3a2c12,null));};exports[_0xe4c9('0x26')]=function(_0x5798c5,_0x393abc){return db['VoiceMailMessage'][_0xe4c9('0x4a')]({'where':{'id':_0x5798c5[_0xe4c9('0x48')]['id']}})[_0xe4c9('0x25')](handleEntityNotFound(_0x393abc,null))['then'](removeEntity(_0x393abc,null))[_0xe4c9('0x46')](handleError(_0x393abc,null));};exports[_0xe4c9('0x4d')]=function(_0x50521c,_0x3a5e60,_0x1fd5a3){return db['VoiceMailMessage'][_0xe4c9('0x4a')]({'where':{'id':_0x50521c[_0xe4c9('0x48')]['id']},'attributes':['id',_0xe4c9('0x4e'),'msg_id']})['then'](handleEntityNotFound(_0x3a5e60,null))[_0xe4c9('0x25')](function(_0x5d3acc){if(_0x5d3acc){if(!_0x5d3acc['recording']){throw new db['Sequelize'][(_0xe4c9('0x4f'))](_0xe4c9('0x50'));}var _0x4188c5={'Content-Type':'audio/wav','Content-Disposition':'attachment'};if(_0x5d3acc[_0xe4c9('0x51')]){_0x4188c5['Content-Disposition']=_0xe4c9('0x52')+_0x5d3acc['msg_id']+_0xe4c9('0x53');}_0x3a5e60[_0xe4c9('0x1f')](_0x4188c5);return _0x3a5e60['send'](new Buffer(_0x5d3acc['recording']));}})[_0xe4c9('0x46')](handleError(_0x3a5e60,null));};
\ No newline at end of file
+var _0xbd97=['sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','VoiceMailMessage','rawAttributes','fieldName','type','key','differenceBy','intersection','query','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','filter','merge','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','download','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','msg_id','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util'];(function(_0x18abd2,_0x22d4b3){var _0x1dcad6=function(_0xcc08c4){while(--_0xcc08c4){_0x18abd2['push'](_0x18abd2['shift']());}};_0x1dcad6(++_0x22d4b3);}(_0xbd97,0xef));var _0x7bd9=function(_0xc71e0f,_0x2cb579){_0xc71e0f=_0xc71e0f-0x0;var _0x289ba7=_0xbd97[_0xc71e0f];return _0x289ba7;};'use strict';var emlformat=require(_0x7bd9('0x0'));var rimraf=require(_0x7bd9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7bd9('0x2'));var moment=require('moment');var BPromise=require(_0x7bd9('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7bd9('0x4'));var sox=require(_0x7bd9('0x5'));var csv=require(_0x7bd9('0x6'));var ejs=require(_0x7bd9('0x7'));var fs=require('fs');var fs_extra=require(_0x7bd9('0x8'));var _=require(_0x7bd9('0x9'));var squel=require(_0x7bd9('0xa'));var crypto=require(_0x7bd9('0xb'));var jsforce=require(_0x7bd9('0xc'));var deskjs=require(_0x7bd9('0xd'));var toCsv=require(_0x7bd9('0x6'));var querystring=require(_0x7bd9('0xe'));var Papa=require(_0x7bd9('0xf'));var Redis=require(_0x7bd9('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x7bd9('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7bd9('0x12'));var logger=require('../../config/logger')(_0x7bd9('0x13'));var utils=require('../../config/utils');var config=require(_0x7bd9('0x14'));var licenseUtil=require(_0x7bd9('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x472b35,_0x4b35c6){_0x4b35c6=_0x4b35c6||0xcc;return function(_0x2135b0){if(_0x2135b0){return _0x472b35[_0x7bd9('0x16')](_0x4b35c6);}return _0x472b35[_0x7bd9('0x17')](_0x4b35c6)[_0x7bd9('0x18')]();};}function respondWithResult(_0x5a0199,_0x141899){_0x141899=_0x141899||0xc8;return function(_0x43a727){if(_0x43a727){return _0x5a0199['status'](_0x141899)[_0x7bd9('0x19')](_0x43a727);}};}function respondWithFilteredResult(_0x1364e8,_0x2ef1ea){return function(_0x4e48b2){if(_0x4e48b2){var _0x360000=typeof _0x2ef1ea[_0x7bd9('0x1a')]===_0x7bd9('0x1b')&&typeof _0x2ef1ea['limit']===_0x7bd9('0x1b');var _0x19f144=_0x4e48b2[_0x7bd9('0x1c')];var _0x440e0d=_0x360000?0x0:_0x2ef1ea['offset'];var _0x38dd1c=_0x360000?_0x4e48b2[_0x7bd9('0x1c')]:_0x2ef1ea[_0x7bd9('0x1a')]+_0x2ef1ea[_0x7bd9('0x1d')];var _0x3c5ff3;if(_0x38dd1c>=_0x19f144){_0x38dd1c=_0x19f144;_0x3c5ff3=0xc8;}else{_0x3c5ff3=0xce;}_0x1364e8['status'](_0x3c5ff3);return _0x1364e8[_0x7bd9('0x1e')](_0x7bd9('0x1f'),_0x440e0d+'-'+_0x38dd1c+'/'+_0x19f144)[_0x7bd9('0x19')](_0x4e48b2);}return null;};}function patchUpdates(_0x48f5c2){return function(_0x818509){try{jsonpatch[_0x7bd9('0x20')](_0x818509,_0x48f5c2,!![]);}catch(_0x572a0d){return BPromise[_0x7bd9('0x21')](_0x572a0d);}return _0x818509[_0x7bd9('0x22')]();};}function saveUpdates(_0x4a6e6f,_0x5398dd){return function(_0x163b31){if(_0x163b31){return _0x163b31[_0x7bd9('0x23')](_0x4a6e6f)[_0x7bd9('0x24')](function(_0x2d7d51){return _0x2d7d51;});}return null;};}function removeEntity(_0xfad7d7,_0x558442){return function(_0x5569f7){if(_0x5569f7){return _0x5569f7[_0x7bd9('0x25')]()[_0x7bd9('0x24')](function(){_0xfad7d7[_0x7bd9('0x17')](0xcc)[_0x7bd9('0x18')]();});}};}function handleEntityNotFound(_0x77aac4,_0x3de97f){return function(_0x7e5cb6){if(!_0x7e5cb6){_0x77aac4[_0x7bd9('0x16')](0x194);}return _0x7e5cb6;};}function handleError(_0x6b3c9d,_0x366df2){_0x366df2=_0x366df2||0x1f4;return function(_0x5f4c3e){logger[_0x7bd9('0x26')](_0x5f4c3e[_0x7bd9('0x27')]);if(_0x5f4c3e[_0x7bd9('0x28')]){delete _0x5f4c3e[_0x7bd9('0x28')];}_0x6b3c9d['status'](_0x366df2)[_0x7bd9('0x29')](_0x5f4c3e);};}exports[_0x7bd9('0x2a')]=function(_0xc0d9c9,_0x2be6f1){var _0xea89f3={},_0x5daa85={},_0x1fa081={'count':0x0,'rows':[]};var _0x3f536b=_[_0x7bd9('0x2b')](db[_0x7bd9('0x2c')][_0x7bd9('0x2d')],function(_0x2dad1a){return{'name':_0x2dad1a[_0x7bd9('0x2e')],'type':_0x2dad1a[_0x7bd9('0x2f')][_0x7bd9('0x30')]};});_0x5daa85['model']=_[_0x7bd9('0x31')](_['map'](_0x3f536b,_0x7bd9('0x28')),['name']);_0x5daa85['query']=_['keys'](_0xc0d9c9['query']);_0x5daa85['filters']=_[_0x7bd9('0x32')](_0x5daa85['model'],_0x5daa85[_0x7bd9('0x33')]);_0xea89f3[_0x7bd9('0x34')]=_['intersection'](_0x5daa85['model'],qs[_0x7bd9('0x35')](_0xc0d9c9[_0x7bd9('0x33')][_0x7bd9('0x35')]));_0xea89f3[_0x7bd9('0x34')]=_0xea89f3[_0x7bd9('0x34')][_0x7bd9('0x36')]?_0xea89f3['attributes']:_0x5daa85[_0x7bd9('0x37')];if(!_0xc0d9c9[_0x7bd9('0x33')][_0x7bd9('0x38')](_0x7bd9('0x39'))){_0xea89f3[_0x7bd9('0x1d')]=qs[_0x7bd9('0x1d')](_0xc0d9c9[_0x7bd9('0x33')][_0x7bd9('0x1d')]);_0xea89f3[_0x7bd9('0x1a')]=qs['offset'](_0xc0d9c9[_0x7bd9('0x33')]['offset']);}_0xea89f3[_0x7bd9('0x3a')]=qs[_0x7bd9('0x3b')](_0xc0d9c9['query'][_0x7bd9('0x3b')]);_0xea89f3[_0x7bd9('0x3c')]=qs[_0x7bd9('0x3d')](_[_0x7bd9('0x3e')](_0xc0d9c9[_0x7bd9('0x33')],_0x5daa85['filters']),_0x3f536b);if(_0xc0d9c9[_0x7bd9('0x33')]['filter']){_0xea89f3[_0x7bd9('0x3c')]=_['merge'](_0xea89f3['where'],{'$or':_[_0x7bd9('0x2b')](_0x3f536b,function(_0x467077){if(_0x467077['type']!==_0x7bd9('0x3f')){var _0x1b69cb={};_0x1b69cb[_0x467077[_0x7bd9('0x28')]]={'$like':'%'+_0xc0d9c9[_0x7bd9('0x33')][_0x7bd9('0x40')]+'%'};return _0x1b69cb;}})});}_0xea89f3=_[_0x7bd9('0x41')]({},_0xea89f3,_0xc0d9c9['options']);var _0x2ac20d={'where':_0xea89f3[_0x7bd9('0x3c')]};return db[_0x7bd9('0x2c')][_0x7bd9('0x1c')](_0x2ac20d)[_0x7bd9('0x24')](function(_0x5bb9b2){_0x1fa081[_0x7bd9('0x1c')]=_0x5bb9b2;if(_0xc0d9c9['query'][_0x7bd9('0x42')]){_0xea89f3[_0x7bd9('0x43')]=[{'all':!![]}];}return db[_0x7bd9('0x2c')][_0x7bd9('0x44')](_0xea89f3);})[_0x7bd9('0x24')](function(_0x2a7912){_0x1fa081[_0x7bd9('0x45')]=_0x2a7912;return _0x1fa081;})[_0x7bd9('0x24')](respondWithFilteredResult(_0x2be6f1,_0xea89f3))[_0x7bd9('0x46')](handleError(_0x2be6f1,null));};exports[_0x7bd9('0x47')]=function(_0x19af62,_0x36e89c){var _0x1e13e6={'raw':!![],'where':{'id':_0x19af62[_0x7bd9('0x48')]['id']}},_0x5bf522={};_0x5bf522[_0x7bd9('0x37')]=_[_0x7bd9('0x49')](db[_0x7bd9('0x2c')][_0x7bd9('0x2d')]);_0x5bf522[_0x7bd9('0x33')]=_['keys'](_0x19af62[_0x7bd9('0x33')]);_0x5bf522[_0x7bd9('0x3d')]=_['intersection'](_0x5bf522['model'],_0x5bf522[_0x7bd9('0x33')]);_0x1e13e6['attributes']=_[_0x7bd9('0x32')](_0x5bf522[_0x7bd9('0x37')],qs[_0x7bd9('0x35')](_0x19af62[_0x7bd9('0x33')]['fields']));_0x1e13e6['attributes']=_0x1e13e6[_0x7bd9('0x34')][_0x7bd9('0x36')]?_0x1e13e6[_0x7bd9('0x34')]:_0x5bf522[_0x7bd9('0x37')];if(_0x19af62['query']['includeAll']){_0x1e13e6[_0x7bd9('0x43')]=[{'all':!![]}];}_0x1e13e6=_[_0x7bd9('0x41')]({},_0x1e13e6,_0x19af62['options']);return db[_0x7bd9('0x2c')][_0x7bd9('0x4a')](_0x1e13e6)[_0x7bd9('0x24')](handleEntityNotFound(_0x36e89c,null))[_0x7bd9('0x24')](respondWithResult(_0x36e89c,null))['catch'](handleError(_0x36e89c,null));};exports[_0x7bd9('0x4b')]=function(_0x266f47,_0x348918){return db[_0x7bd9('0x2c')]['create'](_0x266f47[_0x7bd9('0x4c')],{})['then'](respondWithResult(_0x348918,0xc9))[_0x7bd9('0x46')](handleError(_0x348918,null));};exports[_0x7bd9('0x23')]=function(_0xbf16d6,_0xeac96c){if(_0xbf16d6[_0x7bd9('0x4c')]['id']){delete _0xbf16d6[_0x7bd9('0x4c')]['id'];}return db[_0x7bd9('0x2c')]['find']({'where':{'id':_0xbf16d6[_0x7bd9('0x48')]['id']}})[_0x7bd9('0x24')](handleEntityNotFound(_0xeac96c,null))[_0x7bd9('0x24')](saveUpdates(_0xbf16d6[_0x7bd9('0x4c')],null))['then'](respondWithResult(_0xeac96c,null))[_0x7bd9('0x46')](handleError(_0xeac96c,null));};exports[_0x7bd9('0x25')]=function(_0x3fb933,_0x1e9c14){return db[_0x7bd9('0x2c')][_0x7bd9('0x4a')]({'where':{'id':_0x3fb933['params']['id']}})[_0x7bd9('0x24')](handleEntityNotFound(_0x1e9c14,null))[_0x7bd9('0x24')](removeEntity(_0x1e9c14,null))['catch'](handleError(_0x1e9c14,null));};exports[_0x7bd9('0x4d')]=function(_0x252630,_0x27a996,_0x4c4c7f){return db[_0x7bd9('0x2c')][_0x7bd9('0x4a')]({'where':{'id':_0x252630[_0x7bd9('0x48')]['id']},'attributes':['id',_0x7bd9('0x4e'),'msg_id']})[_0x7bd9('0x24')](handleEntityNotFound(_0x27a996,null))['then'](function(_0x4e0a17){if(_0x4e0a17){if(!_0x4e0a17['recording']){throw new db[(_0x7bd9('0x4f'))][(_0x7bd9('0x50'))](_0x7bd9('0x51'));}var _0x24b375={'Content-Type':_0x7bd9('0x52'),'Content-Disposition':_0x7bd9('0x53')};if(_0x4e0a17[_0x7bd9('0x54')]){_0x24b375['Content-Disposition']=_0x7bd9('0x55')+_0x4e0a17[_0x7bd9('0x54')]+_0x7bd9('0x56');}_0x27a996['set'](_0x24b375);return _0x27a996[_0x7bd9('0x29')](new Buffer(_0x4e0a17[_0x7bd9('0x4e')]));}})[_0x7bd9('0x46')](handleError(_0x27a996,null));};
\ No newline at end of file
index 6a575e2..a6dc1f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x901f=['exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','api','moment','path','rimraf','./voiceMailMessage.attributes'];(function(_0x5b406e,_0xcd06bc){var _0xe7d242=function(_0x3fc6cc){while(--_0x3fc6cc){_0x5b406e['push'](_0x5b406e['shift']());}};_0xe7d242(++_0xcd06bc);}(_0x901f,0x155));var _0xf901=function(_0x19ecea,_0x274385){_0x19ecea=_0x19ecea-0x0;var _0x51d47a=_0x901f[_0x19ecea];return _0x51d47a;};'use strict';var _=require(_0xf901('0x0'));var util=require(_0xf901('0x1'));var logger=require('../../config/logger')(_0xf901('0x2'));var moment=require(_0xf901('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf901('0x4'));var rimraf=require(_0xf901('0x5'));var config=require('../../config/environment');var attributes=require(_0xf901('0x6'));module[_0xf901('0x7')]=function(_0x3ab1ce,_0x352e17){return _0x3ab1ce[_0xf901('0x8')](_0xf901('0x9'),attributes,{'tableName':_0xf901('0xa'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0xf901('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xa9f2=['define','voice_voicemail_messages','dir','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./voiceMailMessage.attributes','exports'];(function(_0x417b1a,_0x3cfce5){var _0x1e41af=function(_0xe2e44e){while(--_0xe2e44e){_0x417b1a['push'](_0x417b1a['shift']());}};_0x1e41af(++_0x3cfce5);}(_0xa9f2,0x121));var _0x2a9f=function(_0x2b14e4,_0x5d08fb){_0x2b14e4=_0x2b14e4-0x0;var _0x16f1e0=_0xa9f2[_0x2b14e4];return _0x16f1e0;};'use strict';var _=require(_0x2a9f('0x0'));var util=require(_0x2a9f('0x1'));var logger=require(_0x2a9f('0x2'))(_0x2a9f('0x3'));var moment=require(_0x2a9f('0x4'));var BPromise=require(_0x2a9f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2a9f('0x6'));var rimraf=require('rimraf');var config=require(_0x2a9f('0x7'));var attributes=require(_0x2a9f('0x8'));module[_0x2a9f('0x9')]=function(_0x246bf5,_0x27d9f1){return _0x246bf5[_0x2a9f('0xa')]('VoiceMailMessage',attributes,{'tableName':_0x2a9f('0xb'),'paranoid':![],'indexes':[{'name':_0x2a9f('0xc'),'fields':[_0x2a9f('0xc')]}],'timestamps':![]});};
\ No newline at end of file
index 7977b07..a166f8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x545d=['../../config/environment','jayson/promise','http','request','VoiceMailMessage,\x20%s,\x20%s','VoiceMailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','info','result','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0x545d,0x13b));var _0xd545=function(_0x48adb7,_0x3a0c7b){_0x48adb7=_0x48adb7-0x0;var _0x1aaaf6=_0x545d[_0x48adb7];return _0x1aaaf6;};'use strict';var _=require(_0xd545('0x0'));var util=require(_0xd545('0x1'));var moment=require(_0xd545('0x2'));var BPromise=require(_0xd545('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd545('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd545('0x5'));var logger=require(_0xd545('0x6'))(_0xd545('0x7'));var config=require(_0xd545('0x8'));var jayson=require(_0xd545('0x9'));var client=jayson['client'][_0xd545('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x58605d,_0x5a3b75,_0x8f788c){return new BPromise(function(_0x163835,_0x5d62c8){return client[_0xd545('0xb')](_0x58605d,_0x8f788c)['then'](function(_0x5e173b){logger['info'](_0xd545('0xc'),_0x5a3b75,'request\x20sent');logger['debug'](_0xd545('0xd'),_0x5a3b75,_0xd545('0xe'),JSON['stringify'](_0x5e173b));if(_0x5e173b[_0xd545('0xf')]){if(_0x5e173b[_0xd545('0xf')]['code']===0x1f4){logger[_0xd545('0xf')](_0xd545('0xc'),_0x5a3b75,_0x5e173b[_0xd545('0xf')]['message']);return _0x5d62c8(_0x5e173b[_0xd545('0xf')][_0xd545('0x10')]);}logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x5a3b75,_0x5e173b[_0xd545('0xf')][_0xd545('0x10')]);return _0x163835(_0x5e173b['error'][_0xd545('0x10')]);}else{logger[_0xd545('0x11')](_0xd545('0xc'),_0x5a3b75,_0xd545('0xe'));_0x163835(_0x5e173b[_0xd545('0x12')]['message']);}})['catch'](function(_0x7442d8){logger[_0xd545('0xf')]('VoiceMailMessage,\x20%s,\x20%s',_0x5a3b75,_0x7442d8);_0x5d62c8(_0x7442d8);});});}
\ No newline at end of file
+var _0xb1bb=['../../config/utils','../../config/logger','rpc','jayson/promise','http','request','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2d0ef7,_0x372a44){var _0x1da412=function(_0x537d2e){while(--_0x537d2e){_0x2d0ef7['push'](_0x2d0ef7['shift']());}};_0x1da412(++_0x372a44);}(_0xb1bb,0xa6));var _0xbb1b=function(_0x2fd3dd,_0x3a7795){_0x2fd3dd=_0x2fd3dd-0x0;var _0xffa2b3=_0xb1bb[_0x2fd3dd];return _0xffa2b3;};'use strict';var _=require(_0xbb1b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xbb1b('0x1'));var rs=require(_0xbb1b('0x2'));var fs=require('fs');var Redis=require(_0xbb1b('0x3'));var db=require(_0xbb1b('0x4'))['db'];var utils=require(_0xbb1b('0x5'));var logger=require(_0xbb1b('0x6'))(_0xbb1b('0x7'));var config=require('../../config/environment');var jayson=require(_0xbb1b('0x8'));var client=jayson['client'][_0xbb1b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x529207,_0x2e2bd8,_0x2ac233){return new BPromise(function(_0x3ce700,_0x3816cf){return client[_0xbb1b('0xa')](_0x529207,_0x2ac233)['then'](function(_0x1b3b8a){logger['info'](_0xbb1b('0xb'),_0x2e2bd8,_0xbb1b('0xc'));logger[_0xbb1b('0xd')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x2e2bd8,_0xbb1b('0xc'),JSON[_0xbb1b('0xe')](_0x1b3b8a));if(_0x1b3b8a[_0xbb1b('0xf')]){if(_0x1b3b8a[_0xbb1b('0xf')]['code']===0x1f4){logger[_0xbb1b('0xf')]('VoiceMailMessage,\x20%s,\x20%s',_0x2e2bd8,_0x1b3b8a[_0xbb1b('0xf')][_0xbb1b('0x10')]);return _0x3816cf(_0x1b3b8a[_0xbb1b('0xf')][_0xbb1b('0x10')]);}logger['error'](_0xbb1b('0xb'),_0x2e2bd8,_0x1b3b8a['error'][_0xbb1b('0x10')]);return _0x3ce700(_0x1b3b8a[_0xbb1b('0xf')][_0xbb1b('0x10')]);}else{logger[_0xbb1b('0x11')](_0xbb1b('0xb'),_0x2e2bd8,_0xbb1b('0xc'));_0x3ce700(_0x1b3b8a['result'][_0xbb1b('0x10')]);}})[_0xbb1b('0x12')](function(_0x14337f){logger[_0xbb1b('0xf')](_0xbb1b('0xb'),_0x2e2bd8,_0x14337f);_0x3816cf(_0x14337f);});});}
\ No newline at end of file
index fd12e6b..7ec80fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdbd=['isAuthenticated','show','/:id/sounds','getSounds','post','addSound','put','delete','destroy','/:id/sounds/:id2','removeSound','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','index','/:id'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xbdbd,0xbb));var _0xdbdb=function(_0x4b06aa,_0x3feb0c){_0x4b06aa=_0x4b06aa-0x0;var _0x16876c=_0xbdbd[_0x4b06aa];return _0x16876c;};'use strict';var multer=require('multer');var util=require(_0xdbdb('0x0'));var path=require(_0xdbdb('0x1'));var timeout=require(_0xdbdb('0x2'));var express=require(_0xdbdb('0x3'));var router=express[_0xdbdb('0x4')]();var fs_extra=require(_0xdbdb('0x5'));var auth=require(_0xdbdb('0x6'));var interaction=require(_0xdbdb('0x7'));var config=require(_0xdbdb('0x8'));var controller=require(_0xdbdb('0x9'));router[_0xdbdb('0xa')]('/',auth['isAuthenticated'](),controller[_0xdbdb('0xb')]);router[_0xdbdb('0xa')](_0xdbdb('0xc'),auth[_0xdbdb('0xd')](),controller[_0xdbdb('0xe')]);router['get'](_0xdbdb('0xf'),auth[_0xdbdb('0xd')](),controller[_0xdbdb('0x10')]);router[_0xdbdb('0x11')]('/',auth[_0xdbdb('0xd')](),controller['create']);router[_0xdbdb('0x11')](_0xdbdb('0xf'),auth[_0xdbdb('0xd')](),controller[_0xdbdb('0x12')]);router[_0xdbdb('0x13')](_0xdbdb('0xc'),auth[_0xdbdb('0xd')](),controller['update']);router[_0xdbdb('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xdbdb('0x15')]);router[_0xdbdb('0x14')](_0xdbdb('0x16'),auth[_0xdbdb('0xd')](),controller[_0xdbdb('0x17')]);module[_0xdbdb('0x18')]=router;
\ No newline at end of file
+var _0x3174=['put','delete','destroy','removeSound','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/sounds','getSounds','post','create','addSound'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x3174,0x1e5));var _0x4317=function(_0x194bff,_0x34f5ee){_0x194bff=_0x194bff-0x0;var _0x15951a=_0x3174[_0x194bff];return _0x15951a;};'use strict';var multer=require(_0x4317('0x0'));var util=require(_0x4317('0x1'));var path=require(_0x4317('0x2'));var timeout=require('connect-timeout');var express=require(_0x4317('0x3'));var router=express[_0x4317('0x4')]();var fs_extra=require(_0x4317('0x5'));var auth=require(_0x4317('0x6'));var interaction=require(_0x4317('0x7'));var config=require(_0x4317('0x8'));var controller=require('./voiceMusicOnHold.controller');router['get']('/',auth[_0x4317('0x9')](),controller[_0x4317('0xa')]);router[_0x4317('0xb')](_0x4317('0xc'),auth['isAuthenticated'](),controller[_0x4317('0xd')]);router[_0x4317('0xb')](_0x4317('0xe'),auth[_0x4317('0x9')](),controller[_0x4317('0xf')]);router[_0x4317('0x10')]('/',auth['isAuthenticated'](),controller[_0x4317('0x11')]);router[_0x4317('0x10')](_0x4317('0xe'),auth[_0x4317('0x9')](),controller[_0x4317('0x12')]);router[_0x4317('0x13')](_0x4317('0xc'),auth[_0x4317('0x9')](),controller['update']);router[_0x4317('0x14')](_0x4317('0xc'),auth[_0x4317('0x9')](),controller[_0x4317('0x15')]);router[_0x4317('0x14')]('/:id/sounds/:id2',auth[_0x4317('0x9')](),controller[_0x4317('0x16')]);module[_0x4317('0x17')]=router;
\ No newline at end of file
index 170fc4a..22af06a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdf0=['BOOLEAN','sequelize','exports','name','ENUM','quietmp3nb','quietmp3','mp3','files','STRING','alpha'];(function(_0x1d4dbc,_0xaf102f){var _0x9592a2=function(_0x240c76){while(--_0x240c76){_0x1d4dbc['push'](_0x1d4dbc['shift']());}};_0x9592a2(++_0xaf102f);}(_0xfdf0,0xbc));var _0x0fdf=function(_0x3e32a8,_0x255953){_0x3e32a8=_0x3e32a8-0x0;var _0x2997b0=_0xfdf0[_0x3e32a8];return _0x2997b0;};'use strict';var Sequelize=require(_0x0fdf('0x0'));module[_0x0fdf('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x0fdf('0x2')},'mode':{'type':Sequelize[_0x0fdf('0x3')]('custom','files','mp3nb',_0x0fdf('0x4'),_0x0fdf('0x5'),_0x0fdf('0x6')),'allowNull':!![],'defaultValue':_0x0fdf('0x7')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x0fdf('0x8')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x0fdf('0x9')},'format':{'type':Sequelize[_0x0fdf('0x8')],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0x0fdf('0xa')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xae6c=['sequelize','STRING','name','ENUM','custom','files','mp3nb','quietmp3nb','quietmp3','mp3','alpha','TIMESTAMP','BOOLEAN'];(function(_0x89d422,_0x21cc23){var _0xc5b73a=function(_0x40a6a8){while(--_0x40a6a8){_0x89d422['push'](_0x89d422['shift']());}};_0xc5b73a(++_0x21cc23);}(_0xae6c,0x1ba));var _0xcae6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xae6c[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xcae6('0x0'));module['exports']={'name':{'type':Sequelize[_0xcae6('0x1')],'allowNull':![],'unique':_0xcae6('0x2')},'mode':{'type':Sequelize[_0xcae6('0x3')](_0xcae6('0x4'),_0xcae6('0x5'),_0xcae6('0x6'),_0xcae6('0x7'),_0xcae6('0x8'),_0xcae6('0x9')),'allowNull':!![],'defaultValue':_0xcae6('0x5')},'directory':{'type':Sequelize[_0xcae6('0x1')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0xcae6('0x1')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xcae6('0xa')},'format':{'type':Sequelize[_0xcae6('0x1')],'allowNull':!![]},'stamp':{'type':_0xcae6('0xb')},'defaultEntry':{'type':Sequelize[_0xcae6('0xc')],'defaultValue':0x0}};
\ No newline at end of file
index 4e3af82..86d2969 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','MusicOnHolds','UserProfileResource','end','sendStatus','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','params','keys','length','includeAll','find','update','body','sequelize','transaction','mode','directory','join','root','server/files/moh','create','files','mkdirSync','user','get','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','unlinkSync','rmdirSync','Sequelize','message','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','basename','%s.%s','symlinkSync','ValidationError','getSounds','nolimit','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring'];(function(_0xc887a1,_0xd53f1f){var _0x4cb057=function(_0x4636fc){while(--_0x4636fc){_0xc887a1['push'](_0xc887a1['shift']());}};_0x4cb057(++_0xd53f1f);}(_0x2032,0xd2));var _0x2203=function(_0x5b670b,_0xcf69f5){_0x5b670b=_0x5b670b-0x0;var _0x321581=_0x2032[_0x5b670b];return _0x321581;};'use strict';var emlformat=require(_0x2203('0x0'));var rimraf=require(_0x2203('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2203('0x2'));var rp=require(_0x2203('0x3'));var moment=require(_0x2203('0x4'));var BPromise=require(_0x2203('0x5'));var Mustache=require(_0x2203('0x6'));var util=require('util');var path=require(_0x2203('0x7'));var sox=require('sox');var csv=require(_0x2203('0x8'));var ejs=require(_0x2203('0x9'));var fs=require('fs');var fs_extra=require(_0x2203('0xa'));var _=require(_0x2203('0xb'));var squel=require('squel');var crypto=require(_0x2203('0xc'));var jsforce=require(_0x2203('0xd'));var deskjs=require(_0x2203('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2203('0xf'));var Papa=require('papaparse');var Redis=require(_0x2203('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2203('0x11'));var as=require(_0x2203('0x12'));var hardwareService=require(_0x2203('0x13'));var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require(_0x2203('0x16'));var licenseUtil=require(_0x2203('0x17'));var db=require(_0x2203('0x18'))['db'];function respondWithStatusCode(_0x4233c0,_0x12bfe0){_0x12bfe0=_0x12bfe0||0xcc;return function(_0x2a523e){if(_0x2a523e){return _0x4233c0['sendStatus'](_0x12bfe0);}return _0x4233c0[_0x2203('0x19')](_0x12bfe0)['end']();};}function respondWithResult(_0x321e6d,_0x241462){_0x241462=_0x241462||0xc8;return function(_0x5a54a4){if(_0x5a54a4){return _0x321e6d[_0x2203('0x19')](_0x241462)['json'](_0x5a54a4);}};}function respondWithFilteredResult(_0xe194d2,_0x5907f5){return function(_0x59194f){if(_0x59194f){var _0x45e8a8=typeof _0x5907f5[_0x2203('0x1a')]===_0x2203('0x1b')&&typeof _0x5907f5[_0x2203('0x1c')]===_0x2203('0x1b');var _0x2119ba=_0x59194f['count'];var _0x47d1ef=_0x45e8a8?0x0:_0x5907f5['offset'];var _0x5ad653=_0x45e8a8?_0x59194f[_0x2203('0x1d')]:_0x5907f5[_0x2203('0x1a')]+_0x5907f5[_0x2203('0x1c')];var _0x20e240;if(_0x5ad653>=_0x2119ba){_0x5ad653=_0x2119ba;_0x20e240=0xc8;}else{_0x20e240=0xce;}_0xe194d2[_0x2203('0x19')](_0x20e240);return _0xe194d2[_0x2203('0x1e')](_0x2203('0x1f'),_0x47d1ef+'-'+_0x5ad653+'/'+_0x2119ba)[_0x2203('0x20')](_0x59194f);}return null;};}function patchUpdates(_0x4099b8){return function(_0x5dbfd6){try{jsonpatch[_0x2203('0x21')](_0x5dbfd6,_0x4099b8,!![]);}catch(_0x700a5e){return BPromise[_0x2203('0x22')](_0x700a5e);}return _0x5dbfd6[_0x2203('0x23')]();};}function saveUpdates(_0x3ccf2b,_0x141a2d){return function(_0x75dc31){if(_0x75dc31){return _0x75dc31['update'](_0x3ccf2b)[_0x2203('0x24')](function(_0x56053f){return _0x56053f;});}return null;};}function removeEntity(_0x4fe961,_0x50b94b){return function(_0x46e5fc){if(_0x46e5fc){return _0x46e5fc[_0x2203('0x25')]()[_0x2203('0x24')](function(){var _0x3971c5=_0x46e5fc['get']({'plain':!![]});var _0x4a4659=_0x2203('0x26');return db[_0x2203('0x27')][_0x2203('0x25')]({'where':{'type':_0x4a4659,'resourceId':_0x3971c5['id']}})[_0x2203('0x24')](function(){return _0x46e5fc;});})['then'](function(){_0x4fe961[_0x2203('0x19')](0xcc)[_0x2203('0x28')]();});}};}function handleEntityNotFound(_0x91234d,_0x141b9b){return function(_0x109625){if(!_0x109625){_0x91234d[_0x2203('0x29')](0x194);}return _0x109625;};}function handleError(_0x38bd9b,_0x254db5){_0x254db5=_0x254db5||0x1f4;return function(_0x30ab54){logger[_0x2203('0x2a')](_0x30ab54[_0x2203('0x2b')]);if(_0x30ab54['name']){delete _0x30ab54[_0x2203('0x2c')];}_0x38bd9b[_0x2203('0x19')](_0x254db5)[_0x2203('0x2d')](_0x30ab54);};}exports[_0x2203('0x2e')]=function(_0x2c48bb,_0x4f4d84){var _0x2c4587={},_0x2c5648={},_0x22b785={'count':0x0,'rows':[]};var _0x231cb2=_[_0x2203('0x2f')](db[_0x2203('0x30')][_0x2203('0x31')],function(_0x58c764){return{'name':_0x58c764[_0x2203('0x32')],'type':_0x58c764[_0x2203('0x33')]['key']};});_0x2c5648[_0x2203('0x34')]=_[_0x2203('0x2f')](_0x231cb2,'name');_0x2c5648[_0x2203('0x35')]=_['keys'](_0x2c48bb[_0x2203('0x35')]);_0x2c5648[_0x2203('0x36')]=_[_0x2203('0x37')](_0x2c5648['model'],_0x2c5648[_0x2203('0x35')]);_0x2c4587[_0x2203('0x38')]=_[_0x2203('0x37')](_0x2c5648[_0x2203('0x34')],qs['fields'](_0x2c48bb['query'][_0x2203('0x39')]));_0x2c4587['attributes']=_0x2c4587['attributes']['length']?_0x2c4587[_0x2203('0x38')]:_0x2c5648[_0x2203('0x34')];if(!_0x2c48bb[_0x2203('0x35')]['hasOwnProperty']('nolimit')){_0x2c4587[_0x2203('0x1c')]=qs['limit'](_0x2c48bb[_0x2203('0x35')][_0x2203('0x1c')]);_0x2c4587['offset']=qs[_0x2203('0x1a')](_0x2c48bb[_0x2203('0x35')][_0x2203('0x1a')]);}_0x2c4587[_0x2203('0x3a')]=qs[_0x2203('0x3b')](_0x2c48bb[_0x2203('0x35')][_0x2203('0x3b')]);delete _0x2c48bb['query'][_0x2203('0x3b')];_0x2c4587[_0x2203('0x3c')]=qs[_0x2203('0x36')](_[_0x2203('0x3d')](_0x2c48bb['query'],_0x2c5648['filters']),_0x231cb2);if(_0x2c48bb[_0x2203('0x35')][_0x2203('0x3e')]){_0x2c4587[_0x2203('0x3c')]=_[_0x2203('0x3f')](_0x2c4587[_0x2203('0x3c')],{'$or':_[_0x2203('0x2f')](_0x231cb2,function(_0x327730){if(_0x327730['type']!==_0x2203('0x40')){var _0x1c8628={};_0x1c8628[_0x327730['name']]={'$like':'%'+_0x2c48bb[_0x2203('0x35')][_0x2203('0x3e')]+'%'};return _0x1c8628;}})});}_0x2c4587=_['merge']({},_0x2c4587,_0x2c48bb[_0x2203('0x41')]);var _0x5c007c={'where':_0x2c4587['where']};return db['VoiceMusicOnHold']['count'](_0x5c007c)[_0x2203('0x24')](function(_0x52b754){_0x22b785[_0x2203('0x1d')]=_0x52b754;if(_0x2c48bb[_0x2203('0x35')]['includeAll']){_0x2c4587[_0x2203('0x42')]=[{'all':!![]}];}return db[_0x2203('0x30')][_0x2203('0x43')](_0x2c4587);})[_0x2203('0x24')](function(_0x5eb640){_0x22b785[_0x2203('0x44')]=_0x5eb640;return _0x22b785;})['then'](respondWithFilteredResult(_0x4f4d84,_0x2c4587))[_0x2203('0x45')](handleError(_0x4f4d84,null));};exports['show']=function(_0x9c8f33,_0x59acc9){var _0x62d3df={'raw':![],'where':{'id':_0x9c8f33[_0x2203('0x46')]['id']}},_0x45f002={};_0x45f002[_0x2203('0x34')]=_[_0x2203('0x47')](db[_0x2203('0x30')]['rawAttributes']);_0x45f002[_0x2203('0x35')]=_['keys'](_0x9c8f33[_0x2203('0x35')]);_0x45f002['filters']=_[_0x2203('0x37')](_0x45f002[_0x2203('0x34')],_0x45f002[_0x2203('0x35')]);_0x62d3df[_0x2203('0x38')]=_[_0x2203('0x37')](_0x45f002[_0x2203('0x34')],qs[_0x2203('0x39')](_0x9c8f33[_0x2203('0x35')][_0x2203('0x39')]));_0x62d3df[_0x2203('0x38')]=_0x62d3df[_0x2203('0x38')][_0x2203('0x48')]?_0x62d3df['attributes']:_0x45f002[_0x2203('0x34')];if(_0x9c8f33[_0x2203('0x35')][_0x2203('0x49')]){_0x62d3df['include']=[{'all':!![]}];}_0x62d3df=_['merge']({},_0x62d3df,_0x9c8f33[_0x2203('0x41')]);return db[_0x2203('0x30')][_0x2203('0x4a')](_0x62d3df)[_0x2203('0x24')](handleEntityNotFound(_0x59acc9,null))[_0x2203('0x24')](respondWithResult(_0x59acc9,null))['catch'](handleError(_0x59acc9,null));};exports[_0x2203('0x4b')]=function(_0x15a271,_0x17728b){if(_0x15a271[_0x2203('0x4c')]['id']){delete _0x15a271[_0x2203('0x4c')]['id'];}return db[_0x2203('0x30')][_0x2203('0x4a')]({'where':{'id':_0x15a271[_0x2203('0x46')]['id']}})[_0x2203('0x24')](handleEntityNotFound(_0x17728b,null))['then'](saveUpdates(_0x15a271['body'],null))[_0x2203('0x24')](respondWithResult(_0x17728b,null))[_0x2203('0x45')](handleError(_0x17728b,null));};exports['create']=function(_0x5d0c69,_0x4b5a94,_0x19c1a1){return db[_0x2203('0x4d')][_0x2203('0x4e')](function(_0x3b8aa1){if(_0x5d0c69[_0x2203('0x4c')][_0x2203('0x4f')]==='files'){_0x5d0c69[_0x2203('0x4c')][_0x2203('0x50')]=path[_0x2203('0x51')](config[_0x2203('0x52')],_0x2203('0x53'),_0x5d0c69['body'][_0x2203('0x2c')]);}return db[_0x2203('0x30')][_0x2203('0x54')](_0x5d0c69['body'],{'transaction':_0x3b8aa1})['then'](function(_0x540a6e){if(_0x5d0c69[_0x2203('0x4c')][_0x2203('0x4f')]===_0x2203('0x55')){fs[_0x2203('0x56')](_0x540a6e[_0x2203('0x50')],parseInt('0777',0x8));}var _0x36e11c=_0x5d0c69[_0x2203('0x57')][_0x2203('0x58')]({'plain':!![]});if(!_0x36e11c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x36e11c[_0x2203('0x59')]===_0x2203('0x57')){var _0x2afc98=_0x540a6e[_0x2203('0x58')]({'plain':!![]});return db[_0x2203('0x5a')][_0x2203('0x4a')]({'where':{'name':_0x2203('0x26'),'userProfileId':_0x36e11c[_0x2203('0x5b')]},'raw':!![]})[_0x2203('0x24')](function(_0xb70320){if(_0xb70320&&_0xb70320[_0x2203('0x5c')]===0x0){return db[_0x2203('0x27')][_0x2203('0x54')]({'name':_0x2afc98[_0x2203('0x2c')],'resourceId':_0x2afc98['id'],'type':_0xb70320[_0x2203('0x2c')],'sectionId':_0xb70320['id']},{})[_0x2203('0x24')](function(){return _0x540a6e;});}else{return _0x540a6e;}})['catch'](function(_0x452be2){logger[_0x2203('0x2a')](_0x2203('0x5d'),_0x452be2);});}return _0x540a6e;});})[_0x2203('0x24')](respondWithResult(_0x4b5a94,0xc9))['catch'](handleError(_0x4b5a94,null));};exports[_0x2203('0x25')]=function(_0x4603a1,_0x483c8d,_0xc713ad){var _0x16c262;return db[_0x2203('0x30')]['find']({'where':{'id':_0x4603a1['params']['id']}})[_0x2203('0x24')](function(_0x15e97d){if(_0x15e97d){return db[_0x2203('0x4d')][_0x2203('0x4e')](function(_0x14dba2){return _0x15e97d[_0x2203('0x25')]({'transaction':_0x14dba2,'raw':!![]})['then'](function(_0x162b15){if(_0x162b15['directory']){fs[_0x2203('0x5e')](_0x162b15['directory'])['forEach'](function(_0x3568e5){fs[_0x2203('0x5f')](path[_0x2203('0x51')](_0x162b15[_0x2203('0x50')],_0x3568e5));});fs[_0x2203('0x60')](_0x162b15['directory']);}return _0x162b15;});})['catch'](function(_0x3bdb2f){throw new db[(_0x2203('0x61'))]['ValidationError'](_0x3bdb2f[_0x2203('0x62')]);});}})[_0x2203('0x24')](handleEntityNotFound(_0x483c8d,null))[_0x2203('0x24')](removeEntity(_0x483c8d,null))['catch'](handleError(_0x483c8d,null));};exports[_0x2203('0x63')]=function(_0x27cc5d,_0x2f2026,_0x347029){return db['sequelize'][_0x2203('0x4e')](function(_0x335ee5){var _0x10b6ff;return db[_0x2203('0x30')][_0x2203('0x4a')]({'where':{'id':_0x27cc5d[_0x2203('0x46')]['id']}})[_0x2203('0x24')](function(_0x560585){if(_0x560585){_0x10b6ff=_0x560585;return _0x560585[_0x2203('0x63')](_0x27cc5d[_0x2203('0x4c')]['id'],{'transaction':_0x335ee5});}})['then'](function(_0x559faf){if(_0x559faf){return db[_0x2203('0x64')][_0x2203('0x65')]({'where':{'id':_0x27cc5d[_0x2203('0x4c')]['id']},'attributes':['id','name',_0x2203('0x66'),_0x2203('0x67'),_0x2203('0x68')],'raw':!![]});}})[_0x2203('0x24')](function(_0x51668f){if(_0x51668f){var _0x1cf8ba=path[_0x2203('0x51')](config[_0x2203('0x52')],_0x2203('0x69'),util[_0x2203('0x6a')]('%s.%s',path[_0x2203('0x6b')](_0x51668f[_0x2203('0x66')],path['extname'](_0x51668f[_0x2203('0x66')])),_0x51668f['converted_format']));var _0xdf8856=path[_0x2203('0x51')](config[_0x2203('0x52')],_0x2203('0x53'),_0x10b6ff[_0x2203('0x2c')],util[_0x2203('0x6a')](_0x2203('0x6c'),_0x51668f[_0x2203('0x2c')],_0x51668f[_0x2203('0x67')]));fs[_0x2203('0x6d')](_0x1cf8ba,_0xdf8856);return _0x51668f;}})[_0x2203('0x45')](function(_0x37404c){throw new db['Sequelize'][(_0x2203('0x6e'))](_0x37404c[_0x2203('0x62')]);});})[_0x2203('0x24')](handleEntityNotFound(_0x2f2026,null))['then'](respondWithResult(_0x2f2026,0xc9))[_0x2203('0x45')](handleError(_0x2f2026,null));};exports['removeSound']=function(_0x39dc61,_0x3a9c37,_0x24d9de){return db[_0x2203('0x4d')][_0x2203('0x4e')](function(_0x1488db){var _0x2c1c4e;return db['VoiceMusicOnHold'][_0x2203('0x65')]({'where':{'id':_0x39dc61[_0x2203('0x46')]['id']}})[_0x2203('0x24')](handleEntityNotFound(_0x3a9c37,null))['then'](function(_0x5b1846){if(_0x5b1846){_0x2c1c4e=_0x5b1846;return _0x5b1846['removeSound'](_0x39dc61[_0x2203('0x46')]['id2']);}})[_0x2203('0x24')](function(_0x36f111){if(_0x36f111){return db['Sound']['findOne']({'where':{'id':_0x39dc61[_0x2203('0x46')]['id2']},'attributes':['id','name','save_name','converted_format',_0x2203('0x68')],'raw':!![]});}})[_0x2203('0x24')](function(_0x2b44bc){if(_0x2b44bc){fs['unlinkSync'](path[_0x2203('0x51')](_0x2c1c4e['directory'],util['format'](_0x2203('0x6c'),_0x2b44bc[_0x2203('0x2c')],_0x2b44bc['converted_format'])));return _0x2b44bc;}})['catch'](function(_0x4625f2){throw new db[(_0x2203('0x61'))][(_0x2203('0x6e'))](_0x4625f2[_0x2203('0x62')]);});})[_0x2203('0x24')](handleEntityNotFound(_0x3a9c37,null))[_0x2203('0x24')](respondWithStatusCode(_0x3a9c37,0xcc))['catch'](handleError(_0x3a9c37,null));};exports['getSounds']=function(_0x459d57,_0x2736f8,_0x2edc52){var _0x32ef27={};var _0x417adf={};var _0x4eb7e6;var _0x541bf2;return db[_0x2203('0x30')][_0x2203('0x65')]({'where':{'id':_0x459d57[_0x2203('0x46')]['id']}})[_0x2203('0x24')](handleEntityNotFound(_0x2736f8,null))[_0x2203('0x24')](function(_0x420152){if(_0x420152){_0x4eb7e6=_0x420152;_0x417adf[_0x2203('0x34')]=_[_0x2203('0x47')](db[_0x2203('0x64')][_0x2203('0x31')]);_0x417adf[_0x2203('0x35')]=_[_0x2203('0x47')](_0x459d57[_0x2203('0x35')]);_0x417adf['filters']=_[_0x2203('0x37')](_0x417adf[_0x2203('0x34')],_0x417adf[_0x2203('0x35')]);_0x32ef27[_0x2203('0x38')]=_[_0x2203('0x37')](_0x417adf[_0x2203('0x34')],qs[_0x2203('0x39')](_0x459d57[_0x2203('0x35')][_0x2203('0x39')]));_0x32ef27[_0x2203('0x38')]=_0x32ef27[_0x2203('0x38')][_0x2203('0x48')]?_0x32ef27[_0x2203('0x38')]:_0x417adf[_0x2203('0x34')];_0x32ef27[_0x2203('0x3a')]=qs[_0x2203('0x3b')](_0x459d57['query'][_0x2203('0x3b')]);_0x32ef27['where']=qs[_0x2203('0x36')](_[_0x2203('0x3d')](_0x459d57[_0x2203('0x35')],_0x417adf['filters']));if(_0x459d57[_0x2203('0x35')]['filter']){_0x32ef27['where']=_[_0x2203('0x3f')](_0x32ef27[_0x2203('0x3c')],{'$or':_[_0x2203('0x2f')](_0x32ef27['attributes'],function(_0x2f3a30){var _0x5b15f8={};_0x5b15f8[_0x2f3a30]={'$like':'%'+_0x459d57[_0x2203('0x35')][_0x2203('0x3e')]+'%'};return _0x5b15f8;})});}_0x32ef27=_[_0x2203('0x3f')]({},_0x32ef27,_0x459d57[_0x2203('0x41')]);return _0x4eb7e6[_0x2203('0x6f')](_0x32ef27);}})[_0x2203('0x24')](function(_0x4a95cb){if(_0x4a95cb){_0x541bf2=_0x4a95cb[_0x2203('0x48')];if(!_0x459d57[_0x2203('0x35')]['hasOwnProperty'](_0x2203('0x70'))){_0x32ef27[_0x2203('0x1c')]=qs[_0x2203('0x1c')](_0x459d57[_0x2203('0x35')][_0x2203('0x1c')]);_0x32ef27[_0x2203('0x1a')]=qs[_0x2203('0x1a')](_0x459d57['query'][_0x2203('0x1a')]);}return _0x4eb7e6[_0x2203('0x6f')](_0x32ef27);}})[_0x2203('0x24')](function(_0x4b868d){if(_0x4b868d){return _0x4b868d?{'count':_0x541bf2,'rows':_0x4b868d}:null;}})[_0x2203('0x24')](respondWithResult(_0x2736f8,null))[_0x2203('0x45')](handleError(_0x2736f8,null));};
\ No newline at end of file
+var _0xa542=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','unlinkSync','rmdirSync','Sequelize','ValidationError','addSound','Sound','findOne','save_name','converted_format','createdAt','root','server/files/sounds/converted','format','%s.%s','basename','extname','symlinkSync','message','removeSound','id2','getSounds','options','eml-format','rimraf','request-promise','bluebird','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','save','then','destroy','get','MusicOnHolds','UserProfileResource','error','stack','name','send','index','type','key','model','map','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','filter','merge','VoiceMusicOnHold','findAll','rows','catch','show','params','rawAttributes','length','includeAll','include','update','body','find','create','sequelize','transaction','mode','files','directory','join','server/files/moh','mkdirSync','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa542,0x87));var _0x2a54=function(_0xd181d1,_0x105e56){_0xd181d1=_0xd181d1-0x0;var _0x34ebd7=_0xa542[_0xd181d1];return _0x34ebd7;};'use strict';var emlformat=require(_0x2a54('0x0'));var rimraf=require(_0x2a54('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x2a54('0x2'));var moment=require('moment');var BPromise=require(_0x2a54('0x3'));var Mustache=require('mustache');var util=require(_0x2a54('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0x2a54('0x5'));var ejs=require(_0x2a54('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2a54('0x7'));var squel=require(_0x2a54('0x8'));var crypto=require(_0x2a54('0x9'));var jsforce=require(_0x2a54('0xa'));var deskjs=require(_0x2a54('0xb'));var toCsv=require(_0x2a54('0x5'));var querystring=require(_0x2a54('0xc'));var Papa=require(_0x2a54('0xd'));var Redis=require(_0x2a54('0xe'));var authService=require(_0x2a54('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x2a54('0x10'));var hardwareService=require(_0x2a54('0x11'));var logger=require('../../config/logger')(_0x2a54('0x12'));var utils=require(_0x2a54('0x13'));var config=require(_0x2a54('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x2a54('0x15'))['db'];function respondWithStatusCode(_0xb0c245,_0x4ff7bc){_0x4ff7bc=_0x4ff7bc||0xcc;return function(_0x174516){if(_0x174516){return _0xb0c245[_0x2a54('0x16')](_0x4ff7bc);}return _0xb0c245[_0x2a54('0x17')](_0x4ff7bc)[_0x2a54('0x18')]();};}function respondWithResult(_0x476ce6,_0xbce7a3){_0xbce7a3=_0xbce7a3||0xc8;return function(_0x174584){if(_0x174584){return _0x476ce6['status'](_0xbce7a3)[_0x2a54('0x19')](_0x174584);}};}function respondWithFilteredResult(_0x478a42,_0x5f074b){return function(_0x322b5c){if(_0x322b5c){var _0x13de3a=typeof _0x5f074b[_0x2a54('0x1a')]===_0x2a54('0x1b')&&typeof _0x5f074b['limit']===_0x2a54('0x1b');var _0x50bc26=_0x322b5c[_0x2a54('0x1c')];var _0x4a8341=_0x13de3a?0x0:_0x5f074b['offset'];var _0x50b7b3=_0x13de3a?_0x322b5c['count']:_0x5f074b[_0x2a54('0x1a')]+_0x5f074b['limit'];var _0x47a7fc;if(_0x50b7b3>=_0x50bc26){_0x50b7b3=_0x50bc26;_0x47a7fc=0xc8;}else{_0x47a7fc=0xce;}_0x478a42[_0x2a54('0x17')](_0x47a7fc);return _0x478a42['set'](_0x2a54('0x1d'),_0x4a8341+'-'+_0x50b7b3+'/'+_0x50bc26)[_0x2a54('0x19')](_0x322b5c);}return null;};}function patchUpdates(_0x4882ce){return function(_0x44a92f){try{jsonpatch[_0x2a54('0x1e')](_0x44a92f,_0x4882ce,!![]);}catch(_0x534c17){return BPromise[_0x2a54('0x1f')](_0x534c17);}return _0x44a92f[_0x2a54('0x20')]();};}function saveUpdates(_0x45a5fb,_0x2c5700){return function(_0x5dcec9){if(_0x5dcec9){return _0x5dcec9['update'](_0x45a5fb)[_0x2a54('0x21')](function(_0x584a81){return _0x584a81;});}return null;};}function removeEntity(_0x485512,_0x21300b){return function(_0x5a5f10){if(_0x5a5f10){return _0x5a5f10[_0x2a54('0x22')]()[_0x2a54('0x21')](function(){var _0x26742d=_0x5a5f10[_0x2a54('0x23')]({'plain':!![]});var _0x40f29f=_0x2a54('0x24');return db[_0x2a54('0x25')][_0x2a54('0x22')]({'where':{'type':_0x40f29f,'resourceId':_0x26742d['id']}})[_0x2a54('0x21')](function(){return _0x5a5f10;});})[_0x2a54('0x21')](function(){_0x485512['status'](0xcc)[_0x2a54('0x18')]();});}};}function handleEntityNotFound(_0x23ba3f,_0x52f454){return function(_0xf639b3){if(!_0xf639b3){_0x23ba3f[_0x2a54('0x16')](0x194);}return _0xf639b3;};}function handleError(_0x1c40db,_0x33abb4){_0x33abb4=_0x33abb4||0x1f4;return function(_0x2f7d8e){logger[_0x2a54('0x26')](_0x2f7d8e[_0x2a54('0x27')]);if(_0x2f7d8e[_0x2a54('0x28')]){delete _0x2f7d8e['name'];}_0x1c40db[_0x2a54('0x17')](_0x33abb4)[_0x2a54('0x29')](_0x2f7d8e);};}exports[_0x2a54('0x2a')]=function(_0x5976da,_0x12d173){var _0x27dc23={},_0x11c250={},_0x489c01={'count':0x0,'rows':[]};var _0x2322cf=_['map'](db['VoiceMusicOnHold']['rawAttributes'],function(_0x5840b5){return{'name':_0x5840b5['fieldName'],'type':_0x5840b5[_0x2a54('0x2b')][_0x2a54('0x2c')]};});_0x11c250[_0x2a54('0x2d')]=_[_0x2a54('0x2e')](_0x2322cf,_0x2a54('0x28'));_0x11c250[_0x2a54('0x2f')]=_[_0x2a54('0x30')](_0x5976da['query']);_0x11c250['filters']=_[_0x2a54('0x31')](_0x11c250[_0x2a54('0x2d')],_0x11c250[_0x2a54('0x2f')]);_0x27dc23['attributes']=_[_0x2a54('0x31')](_0x11c250[_0x2a54('0x2d')],qs[_0x2a54('0x32')](_0x5976da[_0x2a54('0x2f')]['fields']));_0x27dc23['attributes']=_0x27dc23[_0x2a54('0x33')]['length']?_0x27dc23[_0x2a54('0x33')]:_0x11c250[_0x2a54('0x2d')];if(!_0x5976da[_0x2a54('0x2f')][_0x2a54('0x34')](_0x2a54('0x35'))){_0x27dc23[_0x2a54('0x36')]=qs[_0x2a54('0x36')](_0x5976da[_0x2a54('0x2f')][_0x2a54('0x36')]);_0x27dc23[_0x2a54('0x1a')]=qs['offset'](_0x5976da[_0x2a54('0x2f')]['offset']);}_0x27dc23[_0x2a54('0x37')]=qs[_0x2a54('0x38')](_0x5976da[_0x2a54('0x2f')][_0x2a54('0x38')]);delete _0x5976da[_0x2a54('0x2f')][_0x2a54('0x38')];_0x27dc23[_0x2a54('0x39')]=qs[_0x2a54('0x3a')](_[_0x2a54('0x3b')](_0x5976da[_0x2a54('0x2f')],_0x11c250[_0x2a54('0x3a')]),_0x2322cf);if(_0x5976da['query'][_0x2a54('0x3c')]){_0x27dc23[_0x2a54('0x39')]=_[_0x2a54('0x3d')](_0x27dc23['where'],{'$or':_[_0x2a54('0x2e')](_0x2322cf,function(_0x266bfc){if(_0x266bfc['type']!=='VIRTUAL'){var _0x537a48={};_0x537a48[_0x266bfc[_0x2a54('0x28')]]={'$like':'%'+_0x5976da[_0x2a54('0x2f')][_0x2a54('0x3c')]+'%'};return _0x537a48;}})});}_0x27dc23=_[_0x2a54('0x3d')]({},_0x27dc23,_0x5976da['options']);var _0x56a22d={'where':_0x27dc23[_0x2a54('0x39')]};return db[_0x2a54('0x3e')][_0x2a54('0x1c')](_0x56a22d)[_0x2a54('0x21')](function(_0x4ba2ed){_0x489c01[_0x2a54('0x1c')]=_0x4ba2ed;if(_0x5976da['query']['includeAll']){_0x27dc23['include']=[{'all':!![]}];}return db[_0x2a54('0x3e')][_0x2a54('0x3f')](_0x27dc23);})[_0x2a54('0x21')](function(_0x361b85){_0x489c01[_0x2a54('0x40')]=_0x361b85;return _0x489c01;})[_0x2a54('0x21')](respondWithFilteredResult(_0x12d173,_0x27dc23))[_0x2a54('0x41')](handleError(_0x12d173,null));};exports[_0x2a54('0x42')]=function(_0x37f290,_0x70ce5a){var _0x4d9387={'raw':![],'where':{'id':_0x37f290[_0x2a54('0x43')]['id']}},_0x40548d={};_0x40548d['model']=_[_0x2a54('0x30')](db[_0x2a54('0x3e')][_0x2a54('0x44')]);_0x40548d[_0x2a54('0x2f')]=_[_0x2a54('0x30')](_0x37f290[_0x2a54('0x2f')]);_0x40548d[_0x2a54('0x3a')]=_['intersection'](_0x40548d[_0x2a54('0x2d')],_0x40548d[_0x2a54('0x2f')]);_0x4d9387['attributes']=_[_0x2a54('0x31')](_0x40548d[_0x2a54('0x2d')],qs[_0x2a54('0x32')](_0x37f290[_0x2a54('0x2f')]['fields']));_0x4d9387['attributes']=_0x4d9387[_0x2a54('0x33')][_0x2a54('0x45')]?_0x4d9387['attributes']:_0x40548d[_0x2a54('0x2d')];if(_0x37f290['query'][_0x2a54('0x46')]){_0x4d9387[_0x2a54('0x47')]=[{'all':!![]}];}_0x4d9387=_['merge']({},_0x4d9387,_0x37f290['options']);return db[_0x2a54('0x3e')]['find'](_0x4d9387)[_0x2a54('0x21')](handleEntityNotFound(_0x70ce5a,null))[_0x2a54('0x21')](respondWithResult(_0x70ce5a,null))[_0x2a54('0x41')](handleError(_0x70ce5a,null));};exports[_0x2a54('0x48')]=function(_0xf357cd,_0x589cd5){if(_0xf357cd['body']['id']){delete _0xf357cd[_0x2a54('0x49')]['id'];}return db[_0x2a54('0x3e')][_0x2a54('0x4a')]({'where':{'id':_0xf357cd[_0x2a54('0x43')]['id']}})[_0x2a54('0x21')](handleEntityNotFound(_0x589cd5,null))[_0x2a54('0x21')](saveUpdates(_0xf357cd[_0x2a54('0x49')],null))[_0x2a54('0x21')](respondWithResult(_0x589cd5,null))[_0x2a54('0x41')](handleError(_0x589cd5,null));};exports[_0x2a54('0x4b')]=function(_0x472924,_0x38468c,_0x50652f){return db[_0x2a54('0x4c')][_0x2a54('0x4d')](function(_0x3eb2f0){if(_0x472924['body'][_0x2a54('0x4e')]===_0x2a54('0x4f')){_0x472924['body'][_0x2a54('0x50')]=path[_0x2a54('0x51')](config['root'],_0x2a54('0x52'),_0x472924[_0x2a54('0x49')][_0x2a54('0x28')]);}return db[_0x2a54('0x3e')]['create'](_0x472924[_0x2a54('0x49')],{'transaction':_0x3eb2f0})[_0x2a54('0x21')](function(_0x9e4921){if(_0x472924['body']['mode']==='files'){fs[_0x2a54('0x53')](_0x9e4921[_0x2a54('0x50')],parseInt('0777',0x8));}var _0x164d11=_0x472924['user']['get']({'plain':!![]});if(!_0x164d11)throw new Error(_0x2a54('0x54'));if(_0x164d11['role']===_0x2a54('0x55')){var _0x4b955a=_0x9e4921[_0x2a54('0x23')]({'plain':!![]});return db[_0x2a54('0x56')]['find']({'where':{'name':'MusicOnHolds','userProfileId':_0x164d11[_0x2a54('0x57')]},'raw':!![]})[_0x2a54('0x21')](function(_0xbac0b8){if(_0xbac0b8&&_0xbac0b8[_0x2a54('0x58')]===0x0){return db[_0x2a54('0x25')]['create']({'name':_0x4b955a[_0x2a54('0x28')],'resourceId':_0x4b955a['id'],'type':_0xbac0b8[_0x2a54('0x28')],'sectionId':_0xbac0b8['id']},{})[_0x2a54('0x21')](function(){return _0x9e4921;});}else{return _0x9e4921;}})['catch'](function(_0x4f24c1){logger[_0x2a54('0x26')](_0x2a54('0x59'),_0x4f24c1);});}return _0x9e4921;});})[_0x2a54('0x21')](respondWithResult(_0x38468c,0xc9))[_0x2a54('0x41')](handleError(_0x38468c,null));};exports[_0x2a54('0x22')]=function(_0x1c5f6f,_0x3a8404,_0x323c98){var _0x4b4af7;return db[_0x2a54('0x3e')]['find']({'where':{'id':_0x1c5f6f[_0x2a54('0x43')]['id']}})[_0x2a54('0x21')](function(_0x420eeb){if(_0x420eeb){return db[_0x2a54('0x4c')][_0x2a54('0x4d')](function(_0x2f6d3d){return _0x420eeb['destroy']({'transaction':_0x2f6d3d,'raw':!![]})['then'](function(_0x5c8329){if(_0x5c8329[_0x2a54('0x50')]){fs['readdirSync'](_0x5c8329[_0x2a54('0x50')])['forEach'](function(_0x280ac5){fs[_0x2a54('0x5a')](path[_0x2a54('0x51')](_0x5c8329['directory'],_0x280ac5));});fs[_0x2a54('0x5b')](_0x5c8329[_0x2a54('0x50')]);}return _0x5c8329;});})[_0x2a54('0x41')](function(_0xe273d1){throw new db[(_0x2a54('0x5c'))][(_0x2a54('0x5d'))](_0xe273d1['message']);});}})[_0x2a54('0x21')](handleEntityNotFound(_0x3a8404,null))[_0x2a54('0x21')](removeEntity(_0x3a8404,null))[_0x2a54('0x41')](handleError(_0x3a8404,null));};exports['addSound']=function(_0x47606a,_0xe54b75,_0x465218){return db['sequelize']['transaction'](function(_0x1ea04f){var _0x5bd48e;return db[_0x2a54('0x3e')]['find']({'where':{'id':_0x47606a[_0x2a54('0x43')]['id']}})[_0x2a54('0x21')](function(_0x14e9b2){if(_0x14e9b2){_0x5bd48e=_0x14e9b2;return _0x14e9b2[_0x2a54('0x5e')](_0x47606a[_0x2a54('0x49')]['id'],{'transaction':_0x1ea04f});}})[_0x2a54('0x21')](function(_0x577d08){if(_0x577d08){return db[_0x2a54('0x5f')][_0x2a54('0x60')]({'where':{'id':_0x47606a[_0x2a54('0x49')]['id']},'attributes':['id',_0x2a54('0x28'),_0x2a54('0x61'),_0x2a54('0x62'),_0x2a54('0x63')],'raw':!![]});}})[_0x2a54('0x21')](function(_0x1c8367){if(_0x1c8367){var _0x340ab0=path[_0x2a54('0x51')](config[_0x2a54('0x64')],_0x2a54('0x65'),util[_0x2a54('0x66')](_0x2a54('0x67'),path[_0x2a54('0x68')](_0x1c8367[_0x2a54('0x61')],path[_0x2a54('0x69')](_0x1c8367[_0x2a54('0x61')])),_0x1c8367['converted_format']));var _0x5e7ecf=path['join'](config['root'],_0x2a54('0x52'),_0x5bd48e[_0x2a54('0x28')],util[_0x2a54('0x66')]('%s.%s',_0x1c8367[_0x2a54('0x28')],_0x1c8367[_0x2a54('0x62')]));fs[_0x2a54('0x6a')](_0x340ab0,_0x5e7ecf);return _0x1c8367;}})['catch'](function(_0x3b2a28){throw new db[(_0x2a54('0x5c'))][(_0x2a54('0x5d'))](_0x3b2a28[_0x2a54('0x6b')]);});})['then'](handleEntityNotFound(_0xe54b75,null))[_0x2a54('0x21')](respondWithResult(_0xe54b75,0xc9))[_0x2a54('0x41')](handleError(_0xe54b75,null));};exports[_0x2a54('0x6c')]=function(_0x223aca,_0x5f5613,_0x2d2ea6){return db[_0x2a54('0x4c')][_0x2a54('0x4d')](function(_0x31fe5b){var _0x3be4e2;return db[_0x2a54('0x3e')][_0x2a54('0x60')]({'where':{'id':_0x223aca[_0x2a54('0x43')]['id']}})[_0x2a54('0x21')](handleEntityNotFound(_0x5f5613,null))[_0x2a54('0x21')](function(_0x3af9fc){if(_0x3af9fc){_0x3be4e2=_0x3af9fc;return _0x3af9fc[_0x2a54('0x6c')](_0x223aca[_0x2a54('0x43')][_0x2a54('0x6d')]);}})['then'](function(_0x45faa5){if(_0x45faa5){return db['Sound'][_0x2a54('0x60')]({'where':{'id':_0x223aca['params']['id2']},'attributes':['id',_0x2a54('0x28'),'save_name','converted_format',_0x2a54('0x63')],'raw':!![]});}})[_0x2a54('0x21')](function(_0x1be690){if(_0x1be690){fs[_0x2a54('0x5a')](path[_0x2a54('0x51')](_0x3be4e2[_0x2a54('0x50')],util[_0x2a54('0x66')](_0x2a54('0x67'),_0x1be690['name'],_0x1be690[_0x2a54('0x62')])));return _0x1be690;}})[_0x2a54('0x41')](function(_0x53fdf4){throw new db[(_0x2a54('0x5c'))][(_0x2a54('0x5d'))](_0x53fdf4[_0x2a54('0x6b')]);});})[_0x2a54('0x21')](handleEntityNotFound(_0x5f5613,null))[_0x2a54('0x21')](respondWithStatusCode(_0x5f5613,0xcc))[_0x2a54('0x41')](handleError(_0x5f5613,null));};exports[_0x2a54('0x6e')]=function(_0x401929,_0x532607,_0x766e5){var _0x591977={};var _0x1d86c9={};var _0x741e16;var _0x285114;return db[_0x2a54('0x3e')][_0x2a54('0x60')]({'where':{'id':_0x401929[_0x2a54('0x43')]['id']}})[_0x2a54('0x21')](handleEntityNotFound(_0x532607,null))['then'](function(_0x27e750){if(_0x27e750){_0x741e16=_0x27e750;_0x1d86c9['model']=_[_0x2a54('0x30')](db[_0x2a54('0x5f')][_0x2a54('0x44')]);_0x1d86c9['query']=_[_0x2a54('0x30')](_0x401929[_0x2a54('0x2f')]);_0x1d86c9[_0x2a54('0x3a')]=_[_0x2a54('0x31')](_0x1d86c9[_0x2a54('0x2d')],_0x1d86c9[_0x2a54('0x2f')]);_0x591977['attributes']=_[_0x2a54('0x31')](_0x1d86c9[_0x2a54('0x2d')],qs[_0x2a54('0x32')](_0x401929[_0x2a54('0x2f')][_0x2a54('0x32')]));_0x591977[_0x2a54('0x33')]=_0x591977[_0x2a54('0x33')]['length']?_0x591977['attributes']:_0x1d86c9[_0x2a54('0x2d')];_0x591977[_0x2a54('0x37')]=qs[_0x2a54('0x38')](_0x401929[_0x2a54('0x2f')][_0x2a54('0x38')]);_0x591977[_0x2a54('0x39')]=qs[_0x2a54('0x3a')](_['pick'](_0x401929[_0x2a54('0x2f')],_0x1d86c9[_0x2a54('0x3a')]));if(_0x401929[_0x2a54('0x2f')][_0x2a54('0x3c')]){_0x591977[_0x2a54('0x39')]=_[_0x2a54('0x3d')](_0x591977[_0x2a54('0x39')],{'$or':_[_0x2a54('0x2e')](_0x591977['attributes'],function(_0x507cc0){var _0x30fc26={};_0x30fc26[_0x507cc0]={'$like':'%'+_0x401929[_0x2a54('0x2f')][_0x2a54('0x3c')]+'%'};return _0x30fc26;})});}_0x591977=_[_0x2a54('0x3d')]({},_0x591977,_0x401929[_0x2a54('0x6f')]);return _0x741e16[_0x2a54('0x6e')](_0x591977);}})[_0x2a54('0x21')](function(_0x1b8a86){if(_0x1b8a86){_0x285114=_0x1b8a86[_0x2a54('0x45')];if(!_0x401929[_0x2a54('0x2f')]['hasOwnProperty'](_0x2a54('0x35'))){_0x591977[_0x2a54('0x36')]=qs['limit'](_0x401929[_0x2a54('0x2f')]['limit']);_0x591977['offset']=qs[_0x2a54('0x1a')](_0x401929[_0x2a54('0x2f')][_0x2a54('0x1a')]);}return _0x741e16[_0x2a54('0x6e')](_0x591977);}})[_0x2a54('0x21')](function(_0x1978cd){if(_0x1978cd){return _0x1978cd?{'count':_0x285114,'rows':_0x1978cd}:null;}})[_0x2a54('0x21')](respondWithResult(_0x532607,null))[_0x2a54('0x41')](handleError(_0x532607,null));};
\ No newline at end of file
index e57ec51..f8546d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf18f=['VoiceMusicOnHold','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define'];(function(_0x59f1a5,_0x668c50){var _0x34a3c4=function(_0x3366eb){while(--_0x3366eb){_0x59f1a5['push'](_0x59f1a5['shift']());}};_0x34a3c4(++_0x668c50);}(_0xf18f,0x83));var _0xff18=function(_0x1aac45,_0x1dccc1){_0x1aac45=_0x1aac45-0x0;var _0x46302e=_0xf18f[_0x1aac45];return _0x46302e;};'use strict';var _=require(_0xff18('0x0'));var util=require(_0xff18('0x1'));var logger=require(_0xff18('0x2'))(_0xff18('0x3'));var moment=require(_0xff18('0x4'));var BPromise=require(_0xff18('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xff18('0x6'));var rimraf=require(_0xff18('0x7'));var config=require(_0xff18('0x8'));var attributes=require(_0xff18('0x9'));module[_0xff18('0xa')]=function(_0x2cbddf,_0x4c1874){return _0x2cbddf[_0xff18('0xb')](_0xff18('0xc'),attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa270=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xa270,0x1de));var _0x0a27=function(_0x677134,_0x4815b0){_0x677134=_0x677134-0x0;var _0x431ba4=_0xa270[_0x677134];return _0x431ba4;};'use strict';var _=require(_0x0a27('0x0'));var util=require(_0x0a27('0x1'));var logger=require(_0x0a27('0x2'))('api');var moment=require(_0x0a27('0x3'));var BPromise=require(_0x0a27('0x4'));var rp=require(_0x0a27('0x5'));var fs=require('fs');var path=require(_0x0a27('0x6'));var rimraf=require(_0x0a27('0x7'));var config=require(_0x0a27('0x8'));var attributes=require(_0x0a27('0x9'));module[_0x0a27('0xa')]=function(_0xc207c1,_0x22ce93){return _0xc207c1['define'](_0x0a27('0xb'),attributes,{'tableName':_0x0a27('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d1ff10..54199e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x56ced8,_0x8204e7){var _0x26834c=function(_0x2f28ca){while(--_0x2f28ca){_0x56ced8['push'](_0x56ced8['shift']());}};_0x26834c(++_0x8204e7);}(_0xe706,0xa3));var _0x6e70=function(_0x30bb7c,_0x27a364){_0x30bb7c=_0x30bb7c-0x0;var _0x3b32be=_0xe706[_0x30bb7c];return _0x3b32be;};'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});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
+var _0x9c44=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','request\x20sent','debug','stringify','code','error','message','VoiceMusicOnHold,\x20%s,\x20%s','info','result','catch','moment','bluebird'];(function(_0x554791,_0x1d0ca1){var _0x3c09ba=function(_0x398fb6){while(--_0x398fb6){_0x554791['push'](_0x554791['shift']());}};_0x3c09ba(++_0x1d0ca1);}(_0x9c44,0x178));var _0x49c4=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x9c44[_0x1969a7];return _0x3d665f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var BPromise=require(_0x49c4('0x1'));var rs=require(_0x49c4('0x2'));var fs=require('fs');var Redis=require(_0x49c4('0x3'));var db=require(_0x49c4('0x4'))['db'];var utils=require(_0x49c4('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x49c4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x49c4('0x7')][_0x49c4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x69bc41,_0x2c4e2e,_0x436234){return new BPromise(function(_0x511d53,_0x11c586){return client[_0x49c4('0x9')](_0x69bc41,_0x436234)[_0x49c4('0xa')](function(_0x4487ca){logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));logger[_0x49c4('0xc')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'),JSON[_0x49c4('0xd')](_0x4487ca));if(_0x4487ca['error']){if(_0x4487ca['error'][_0x49c4('0xe')]===0x1f4){logger[_0x49c4('0xf')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x11c586(_0x4487ca['error'][_0x49c4('0x10')]);}logger[_0x49c4('0xf')](_0x49c4('0x11'),_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x511d53(_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);}else{logger[_0x49c4('0x12')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));_0x511d53(_0x4487ca[_0x49c4('0x13')][_0x49c4('0x10')]);}})[_0x49c4('0x14')](function(_0x2abc78){logger['error'](_0x49c4('0x11'),_0x2c4e2e,_0x2abc78);_0x11c586(_0x2abc78);});});}
\ No newline at end of file
index bbe011d..064f553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc688=['getAgents','post','create','/:id/users','addAgents','put','update','delete','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','index','/describe','/:id','isAuthenticated','show'];(function(_0x1210a3,_0x123054){var _0x7aa841=function(_0xe39eb5){while(--_0xe39eb5){_0x1210a3['push'](_0x1210a3['shift']());}};_0x7aa841(++_0x123054);}(_0xc688,0xce));var _0x8c68=function(_0x2cb870,_0xeb15ea){_0x2cb870=_0x2cb870-0x0;var _0x4776b0=_0xc688[_0x2cb870];return _0x4776b0;};'use strict';var multer=require(_0x8c68('0x0'));var util=require('util');var path=require(_0x8c68('0x1'));var timeout=require(_0x8c68('0x2'));var express=require('express');var router=express[_0x8c68('0x3')]();var fs_extra=require(_0x8c68('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x8c68('0x5'));var config=require(_0x8c68('0x6'));var controller=require(_0x8c68('0x7'));router[_0x8c68('0x8')]('/',auth['isAuthenticated'](),controller[_0x8c68('0x9')]);router['get'](_0x8c68('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x8c68('0x8')](_0x8c68('0xb'),auth[_0x8c68('0xc')](),controller[_0x8c68('0xd')]);router[_0x8c68('0x8')]('/:id/users',auth[_0x8c68('0xc')](),controller[_0x8c68('0xe')]);router[_0x8c68('0xf')]('/',auth[_0x8c68('0xc')](),controller[_0x8c68('0x10')]);router[_0x8c68('0xf')](_0x8c68('0x11'),auth['isAuthenticated'](),controller[_0x8c68('0x12')]);router[_0x8c68('0x13')]('/:id',auth[_0x8c68('0xc')](),controller[_0x8c68('0x14')]);router[_0x8c68('0x15')](_0x8c68('0xb'),auth['isAuthenticated'](),controller['destroy']);router[_0x8c68('0x15')](_0x8c68('0x11'),auth[_0x8c68('0xc')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x903f=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','isAuthenticated','index','/describe','describe','get','/:id/users','getAgents','create','addAgents','put','update','delete','/:id','destroy','removeAgents'];(function(_0x5d860f,_0x467498){var _0x236490=function(_0x5e045c){while(--_0x5e045c){_0x5d860f['push'](_0x5d860f['shift']());}};_0x236490(++_0x467498);}(_0x903f,0xd1));var _0xf903=function(_0x4f452f,_0x19a7f5){_0x4f452f=_0x4f452f-0x0;var _0x3144e6=_0x903f[_0x4f452f];return _0x3144e6;};'use strict';var multer=require(_0xf903('0x0'));var util=require(_0xf903('0x1'));var path=require('path');var timeout=require(_0xf903('0x2'));var express=require(_0xf903('0x3'));var router=express[_0xf903('0x4')]();var fs_extra=require(_0xf903('0x5'));var auth=require(_0xf903('0x6'));var interaction=require(_0xf903('0x7'));var config=require(_0xf903('0x8'));var controller=require(_0xf903('0x9'));router['get']('/',auth[_0xf903('0xa')](),controller[_0xf903('0xb')]);router['get'](_0xf903('0xc'),auth[_0xf903('0xa')](),controller[_0xf903('0xd')]);router[_0xf903('0xe')]('/:id',auth[_0xf903('0xa')](),controller['show']);router[_0xf903('0xe')](_0xf903('0xf'),auth[_0xf903('0xa')](),controller[_0xf903('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf903('0x11')]);router['post'](_0xf903('0xf'),auth['isAuthenticated'](),controller[_0xf903('0x12')]);router[_0xf903('0x13')]('/:id',auth[_0xf903('0xa')](),controller[_0xf903('0x14')]);router[_0xf903('0x15')](_0xf903('0x16'),auth[_0xf903('0xa')](),controller[_0xf903('0x17')]);router['delete'](_0xf903('0xf'),auth[_0xf903('0xa')](),controller[_0xf903('0x18')]);module[_0xf903('0x19')]=router;
\ No newline at end of file
index caa0e1b..41e20d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52b6=['STRING','name','system-','sequelize','exports'];(function(_0x2118ad,_0xe8e3fd){var _0x4b5715=function(_0x399f72){while(--_0x399f72){_0x2118ad['push'](_0x2118ad['shift']());}};_0x4b5715(++_0xe8e3fd);}(_0x52b6,0x1ca));var _0x652b=function(_0x1dc4a4,_0xb20501){_0x1dc4a4=_0x1dc4a4-0x0;var _0x5d78e0=_0x52b6[_0x1dc4a4];return _0x5d78e0;};'use strict';var Sequelize=require(_0x652b('0x0'));module[_0x652b('0x1')]={'name':{'type':Sequelize[_0x652b('0x2')],'allowNull':![],'unique':_0x652b('0x3')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x1626cc){return _0x652b('0x4')+this['getDataValue'](_0x652b('0x3'))+'-';}},'description':{'type':Sequelize[_0x652b('0x2')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xb474=['STRING','name','VIRTUAL','system-','getDataValue','INTEGER'];(function(_0x1dabf0,_0xd6ec46){var _0x197431=function(_0x5f3291){while(--_0x5f3291){_0x1dabf0['push'](_0x1dabf0['shift']());}};_0x197431(++_0xd6ec46);}(_0xb474,0x138));var _0x4b47=function(_0x1d0e1b,_0x3758b8){_0x1d0e1b=_0x1d0e1b-0x0;var _0x444184=_0xb474[_0x1d0e1b];return _0x444184;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4b47('0x0')],'allowNull':![],'unique':_0x4b47('0x1')},'prefix':{'type':Sequelize[_0x4b47('0x2')],'get':function(_0x440104){return _0x4b47('0x3')+this[_0x4b47('0x4')](_0x4b47('0x1'))+'-';}},'description':{'type':Sequelize[_0x4b47('0x0')]},'callerIdAll':{'type':Sequelize[_0x4b47('0x0')]},'VoiceExtensionId':{'type':Sequelize[_0x4b47('0x5')]}};
\ No newline at end of file
index b12e0af..94babce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35c0=['addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','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','defaults','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','destroy','VoicePrefixes','then','name','send','index','map','VoicePrefix','fieldName','type','key','keys','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','filters','find','describe','create','transaction','VoiceExtensionId','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','exten','app','system','description','Voice\x20Prefix\x20Extension','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtension','Extensions\x20creation\x20failed','push','Set','callerIdAll','No\x20callerid\x20available','goto','${EXTEN:','charAt','body','system-','sequelize','findById'];(function(_0x56ae01,_0x3db340){var _0x1e46f0=function(_0x803e6e){while(--_0x803e6e){_0x56ae01['push'](_0x56ae01['shift']());}};_0x1e46f0(++_0x3db340);}(_0x35c0,0x10d));var _0x035c=function(_0x336fa0,_0x4e8281){_0x336fa0=_0x336fa0-0x0;var _0x4d1399=_0x35c0[_0x336fa0];return _0x4d1399;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x035c('0x0'));var zipdir=require(_0x035c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x035c('0x2'));var moment=require(_0x035c('0x3'));var BPromise=require(_0x035c('0x4'));var Mustache=require(_0x035c('0x5'));var util=require(_0x035c('0x6'));var path=require(_0x035c('0x7'));var sox=require(_0x035c('0x8'));var csv=require(_0x035c('0x9'));var ejs=require(_0x035c('0xa'));var fs=require('fs');var fs_extra=require(_0x035c('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x035c('0xc'));var jsforce=require(_0x035c('0xd'));var deskjs=require(_0x035c('0xe'));var toCsv=require(_0x035c('0x9'));var querystring=require('querystring');var Papa=require(_0x035c('0xf'));var Redis=require(_0x035c('0x10'));var authService=require(_0x035c('0x11'));var qs=require(_0x035c('0x12'));var as=require(_0x035c('0x13'));var hardwareService=require(_0x035c('0x14'));var logger=require(_0x035c('0x15'))(_0x035c('0x16'));var utils=require(_0x035c('0x17'));var config=require(_0x035c('0x18'));var licenseUtil=require(_0x035c('0x19'));var db=require(_0x035c('0x1a'))['db'];config[_0x035c('0x1b')]=_[_0x035c('0x1c')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voicePrefix.socket')[_0x035c('0x1d')](socket);function respondWithStatusCode(_0x12c503,_0x447234){_0x447234=_0x447234||0xcc;return function(_0x1c7e7b){if(_0x1c7e7b){return _0x12c503[_0x035c('0x1e')](_0x447234);}return _0x12c503[_0x035c('0x1f')](_0x447234)[_0x035c('0x20')]();};}function respondWithResult(_0x341fdf,_0x196fc6){_0x196fc6=_0x196fc6||0xc8;return function(_0xf80641){if(_0xf80641){return _0x341fdf[_0x035c('0x1f')](_0x196fc6)['json'](_0xf80641);}};}function respondWithFilteredResult(_0x5d4b32,_0x308937){return function(_0x58c80e){if(_0x58c80e){var _0x264dc1=typeof _0x308937[_0x035c('0x21')]===_0x035c('0x22')&&typeof _0x308937[_0x035c('0x23')]===_0x035c('0x22');var _0x55f5e6=_0x58c80e[_0x035c('0x24')];var _0xcad945=_0x264dc1?0x0:_0x308937[_0x035c('0x21')];var _0x239085=_0x264dc1?_0x58c80e[_0x035c('0x24')]:_0x308937[_0x035c('0x21')]+_0x308937['limit'];var _0x4c86f0;if(_0x239085>=_0x55f5e6){_0x239085=_0x55f5e6;_0x4c86f0=0xc8;}else{_0x4c86f0=0xce;}_0x5d4b32[_0x035c('0x1f')](_0x4c86f0);return _0x5d4b32[_0x035c('0x25')](_0x035c('0x26'),_0xcad945+'-'+_0x239085+'/'+_0x55f5e6)[_0x035c('0x27')](_0x58c80e);}return null;};}function patchUpdates(_0x2627ff){return function(_0x38ba37){try{jsonpatch[_0x035c('0x28')](_0x38ba37,_0x2627ff,!![]);}catch(_0x174331){return BPromise[_0x035c('0x29')](_0x174331);}return _0x38ba37['save']();};}function saveUpdates(_0x5d4002,_0x54b581){return function(_0x5c68fa){if(_0x5c68fa){return _0x5c68fa[_0x035c('0x2a')](_0x5d4002)['then'](function(_0xa54a7f){return _0xa54a7f;});}return null;};}function removeEntity(_0x190c08,_0x1e0bd9){return function(_0x23468e){if(_0x23468e){return _0x23468e[_0x035c('0x2b')]()['then'](function(){var _0xb62756=_0x23468e['get']({'plain':!![]});var _0x228f62=_0x035c('0x2c');return db['UserProfileResource'][_0x035c('0x2b')]({'where':{'type':_0x228f62,'resourceId':_0xb62756['id']}})[_0x035c('0x2d')](function(){return _0x23468e;});})['then'](function(){_0x190c08[_0x035c('0x1f')](0xcc)[_0x035c('0x20')]();});}};}function handleEntityNotFound(_0xbb6ebc,_0x1e9dce){return function(_0x234fbe){if(!_0x234fbe){_0xbb6ebc[_0x035c('0x1e')](0x194);}return _0x234fbe;};}function handleError(_0x252008,_0x238249){_0x238249=_0x238249||0x1f4;return function(_0x2ea5da){logger['error'](_0x2ea5da['stack']);if(_0x2ea5da[_0x035c('0x2e')]){delete _0x2ea5da[_0x035c('0x2e')];}_0x252008[_0x035c('0x1f')](_0x238249)[_0x035c('0x2f')](_0x2ea5da);};}exports[_0x035c('0x30')]=function(_0x43edb2,_0x2b219c){var _0x417ea3={},_0x7a7082={},_0x433e12={'count':0x0,'rows':[]};var _0x1f4f4b=_[_0x035c('0x31')](db[_0x035c('0x32')]['rawAttributes'],function(_0x4f52b5){return{'name':_0x4f52b5[_0x035c('0x33')],'type':_0x4f52b5[_0x035c('0x34')][_0x035c('0x35')]};});_0x7a7082['model']=_['map'](_0x1f4f4b,_0x035c('0x2e'));_0x7a7082['query']=_[_0x035c('0x36')](_0x43edb2[_0x035c('0x37')]);_0x7a7082['filters']=_['intersection'](_0x7a7082[_0x035c('0x38')],_0x7a7082[_0x035c('0x37')]);_0x417ea3[_0x035c('0x39')]=_[_0x035c('0x3a')](_0x7a7082[_0x035c('0x38')],qs[_0x035c('0x3b')](_0x43edb2[_0x035c('0x37')]['fields']));_0x417ea3[_0x035c('0x39')]=_0x417ea3[_0x035c('0x39')][_0x035c('0x3c')]?_0x417ea3['attributes']:_0x7a7082[_0x035c('0x38')];if(!_0x43edb2['query'][_0x035c('0x3d')](_0x035c('0x3e'))){_0x417ea3[_0x035c('0x23')]=qs['limit'](_0x43edb2[_0x035c('0x37')][_0x035c('0x23')]);_0x417ea3[_0x035c('0x21')]=qs[_0x035c('0x21')](_0x43edb2[_0x035c('0x37')]['offset']);}_0x417ea3['order']=qs[_0x035c('0x3f')](_0x43edb2[_0x035c('0x37')][_0x035c('0x3f')]);_0x417ea3[_0x035c('0x40')]=qs['filters'](_[_0x035c('0x41')](_0x43edb2['query'],_0x7a7082['filters']),_0x1f4f4b);if(_0x43edb2[_0x035c('0x37')][_0x035c('0x42')]){_0x417ea3[_0x035c('0x40')]=_[_0x035c('0x43')](_0x417ea3[_0x035c('0x40')],{'$or':_[_0x035c('0x31')](_0x1f4f4b,function(_0xe4b21e){if(_0xe4b21e[_0x035c('0x34')]!==_0x035c('0x44')){var _0x2dfab7={};_0x2dfab7[_0xe4b21e['name']]={'$like':'%'+_0x43edb2[_0x035c('0x37')][_0x035c('0x42')]+'%'};return _0x2dfab7;}})});}_0x417ea3=_['merge']({},_0x417ea3,_0x43edb2[_0x035c('0x45')]);var _0x1867c5={'where':_0x417ea3[_0x035c('0x40')]};return db[_0x035c('0x32')][_0x035c('0x24')](_0x1867c5)[_0x035c('0x2d')](function(_0x6d6e37){_0x433e12['count']=_0x6d6e37;if(_0x43edb2[_0x035c('0x37')][_0x035c('0x46')]){_0x417ea3[_0x035c('0x47')]=[{'all':!![]}];}return db[_0x035c('0x32')][_0x035c('0x48')](_0x417ea3);})[_0x035c('0x2d')](function(_0x262054){_0x433e12[_0x035c('0x49')]=_0x262054;return _0x433e12;})[_0x035c('0x2d')](respondWithFilteredResult(_0x2b219c,_0x417ea3))[_0x035c('0x4a')](handleError(_0x2b219c,null));};exports[_0x035c('0x4b')]=function(_0x20c9fd,_0x1aa9c0){var _0x2897c3={'raw':![],'where':{'id':_0x20c9fd[_0x035c('0x4c')]['id']}},_0x218a7d={};_0x218a7d[_0x035c('0x38')]=_['keys'](db['VoicePrefix'][_0x035c('0x4d')]);_0x218a7d[_0x035c('0x37')]=_[_0x035c('0x36')](_0x20c9fd[_0x035c('0x37')]);_0x218a7d[_0x035c('0x4e')]=_[_0x035c('0x3a')](_0x218a7d[_0x035c('0x38')],_0x218a7d[_0x035c('0x37')]);_0x2897c3['attributes']=_[_0x035c('0x3a')](_0x218a7d[_0x035c('0x38')],qs[_0x035c('0x3b')](_0x20c9fd[_0x035c('0x37')][_0x035c('0x3b')]));_0x2897c3[_0x035c('0x39')]=_0x2897c3[_0x035c('0x39')][_0x035c('0x3c')]?_0x2897c3[_0x035c('0x39')]:_0x218a7d[_0x035c('0x38')];if(_0x20c9fd['query'][_0x035c('0x46')]){_0x2897c3['include']=[{'all':!![]}];}_0x2897c3=_['merge']({},_0x2897c3,_0x20c9fd[_0x035c('0x45')]);return db[_0x035c('0x32')][_0x035c('0x4f')](_0x2897c3)[_0x035c('0x2d')](handleEntityNotFound(_0x1aa9c0,null))[_0x035c('0x2d')](respondWithResult(_0x1aa9c0,null))['catch'](handleError(_0x1aa9c0,null));};exports[_0x035c('0x2b')]=function(_0x2c6cd7,_0x27ba83){return db[_0x035c('0x32')][_0x035c('0x4f')]({'where':{'id':_0x2c6cd7[_0x035c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x27ba83,null))[_0x035c('0x2d')](removeEntity(_0x27ba83,null))['catch'](handleError(_0x27ba83,null));};exports[_0x035c('0x50')]=function(_0x24f7b5,_0x462c82){return db[_0x035c('0x32')][_0x035c('0x50')]()[_0x035c('0x2d')](respondWithResult(_0x462c82,null))[_0x035c('0x4a')](handleError(_0x462c82,null));};exports[_0x035c('0x51')]=function(_0x3601bb,_0x1e88c1){var _0x3635ee;return db['sequelize'][_0x035c('0x52')](function(_0x370cd7){return db[_0x035c('0x32')][_0x035c('0x51')](_0x3601bb['body'],{'transaction':_0x370cd7})[_0x035c('0x2d')](function(_0x18fd3f){_0x3635ee=_0x18fd3f['get']({'plain':!![]});return db['VoiceExtension'][_0x035c('0x4f')]({'where':{'id':_0x3635ee[_0x035c('0x53')]},'raw':!![]})[_0x035c('0x2d')](function(_0x102d26){return createVoicePrefixExtensions(_0x3635ee,_0x102d26,_0x370cd7);});});})[_0x035c('0x2d')](function(){var _0x32daec=_0x3601bb['user'][_0x035c('0x54')]({'plain':!![]});if(!_0x32daec)throw new Error(_0x035c('0x55'));if(_0x32daec[_0x035c('0x56')]===_0x035c('0x57')){var _0x4fc7fc=_0x3635ee;return db[_0x035c('0x58')][_0x035c('0x4f')]({'where':{'name':_0x035c('0x2c'),'userProfileId':_0x32daec[_0x035c('0x59')]},'raw':!![]})[_0x035c('0x2d')](function(_0x5b97be){if(_0x5b97be&&_0x5b97be[_0x035c('0x5a')]===0x0){return db[_0x035c('0x5b')]['create']({'name':_0x4fc7fc[_0x035c('0x2e')],'resourceId':_0x4fc7fc['id'],'type':_0x5b97be['name'],'sectionId':_0x5b97be['id']},{})[_0x035c('0x2d')](function(){return _0x3635ee;});}else{return _0x3635ee;}})['catch'](function(_0x279660){logger[_0x035c('0x5c')](_0x035c('0x5d'),_0x279660);throw _0x279660;});}return _0x3635ee;})[_0x035c('0x2d')](respondWithResult(_0x1e88c1,null))[_0x035c('0x4a')](handleError(_0x1e88c1,null));};function Extension(_0x3485d1,_0x272681,_0x1eb58b,_0x130f1d){this[_0x035c('0x5e')]='from-sip';this[_0x035c('0x5f')]=_0x3485d1;this[_0x035c('0x60')]=_0x1eb58b;this['type']=_0x035c('0x61');this[_0x035c('0x62')]=_0x035c('0x63');this['priority']=_0x272681;this[_0x035c('0x64')]=_0x130f1d;}function createVoicePrefixExtensions(_0x1b953e,_0x258912,_0x3319da){return new BPromise(function(_0x5088c3,_0x5099c2){var _0x5d139c=new Extension(formatPrefixName(_0x1b953e[_0x035c('0x65')]),0x1,_0x035c('0x66'),_0x035c('0x67'));_0x5d139c[_0x035c('0x68')]=_0x1b953e['id'];return db['VoiceExtension'][_0x035c('0x51')](_0x5d139c,{'transaction':_0x3319da})[_0x035c('0x2d')](function(_0x44e6d2){var _0x5a8d5a=_0x44e6d2['get']({'plain':!![]});var _0x41d8e4=_[_0x035c('0x31')](addVoicePrefixExtensions(_0x1b953e,_0x258912),function(_0x14c160){_0x14c160[_0x035c('0x53')]=_0x5a8d5a['id'];_0x14c160['VoicePrefixId']=_0x1b953e['id'];return _0x14c160;});return db[_0x035c('0x69')]['bulkCreate'](_0x41d8e4,{'transaction':_0x3319da})['then'](function(_0x3cfd77){if(!_0x3cfd77){return _0x5099c2(_0x035c('0x6a'));}else{return _0x5088c3(_0x3cfd77);}})[_0x035c('0x4a')](function(_0x37606a){return _0x5099c2(_0x37606a);});});;});};function addVoicePrefixExtensions(_0x3cd488,_0x2b907e){var _0x31d199=[];var _0x55613e=formatPrefixName(_0x3cd488[_0x035c('0x65')]);_0x31d199[_0x035c('0x6b')](new Extension(_0x55613e,0x2,_0x035c('0x6c'),'CDR(prefix)='+_0x3cd488['name']));if(_0x3cd488[_0x035c('0x6d')]){_0x31d199[_0x035c('0x6b')](new Extension(_0x55613e,0x3,_0x035c('0x6c'),'PREFIX-CALLERIDALL='+_0x3cd488['callerIdAll']));}else{_0x31d199[_0x035c('0x6b')](new Extension(_0x55613e,0x3,_0x035c('0x66'),_0x035c('0x6e')));}_0x31d199[_0x035c('0x6b')](new Extension(_0x55613e,0x4,_0x035c('0x6f'),_0x2b907e[_0x035c('0x5e')]+','+_0x035c('0x70')+(0x8+_0x3cd488[_0x035c('0x2e')]['length'])+'}'+','+0x1));return _0x31d199;}function formatPrefixName(_0x1b6ee0){var _0x296216='_';for(var _0x114b3c=0x0;_0x114b3c<_0x1b6ee0[_0x035c('0x3c')];_0x114b3c++){if(_0x1b6ee0[_0x035c('0x71')](_0x114b3c)=='-'){_0x296216+=_0x1b6ee0[_0x035c('0x71')](_0x114b3c);}else{_0x296216+='['+_0x1b6ee0[_0x035c('0x71')](_0x114b3c)+']';}}_0x296216+='.';return _0x296216;}exports[_0x035c('0x2a')]=function(_0x35a533,_0x19716a,_0x21cee3){var _0x213fd4=_0x35a533[_0x035c('0x72')];_0x213fd4[_0x035c('0x65')]=_0x035c('0x73')+_0x213fd4[_0x035c('0x2e')]+'-';return db[_0x035c('0x74')][_0x035c('0x52')](function(_0x4bfe89){return db[_0x035c('0x32')][_0x035c('0x2a')](_0x213fd4,{'where':{'id':_0x213fd4['id']},'transaction':_0x4bfe89})[_0x035c('0x2d')](function(){return db[_0x035c('0x69')][_0x035c('0x2b')]({'where':{'VoicePrefixId':_0x213fd4['id']},'transaction':_0x4bfe89})[_0x035c('0x2d')](function(){return db['VoiceExtension'][_0x035c('0x4f')]({'where':{'id':_0x213fd4[_0x035c('0x53')]},'raw':!![]})[_0x035c('0x2d')](function(_0x1c7c1a){return createVoicePrefixExtensions(_0x213fd4,_0x1c7c1a,_0x4bfe89);});});});})[_0x035c('0x2d')](function(){return db['VoicePrefix'][_0x035c('0x75')](_0x213fd4['id']);})[_0x035c('0x2d')](respondWithResult(_0x19716a,null))[_0x035c('0x4a')](handleError(_0x19716a,null));};exports[_0x035c('0x76')]=function(_0x5a1ca4,_0x515097,_0x21577f){return db[_0x035c('0x32')]['find']({'where':{'id':_0x5a1ca4[_0x035c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x515097,null))[_0x035c('0x2d')](function(_0x15f537){if(_0x15f537){return _0x15f537[_0x035c('0x76')](_0x5a1ca4[_0x035c('0x72')][_0x035c('0x77')],_[_0x035c('0x78')](_0x5a1ca4[_0x035c('0x72')],[_0x035c('0x77'),'id'])||{})[_0x035c('0x79')](function(_0x531632){for(var _0x36d718=0x0;_0x36d718<_0x5a1ca4[_0x035c('0x72')][_0x035c('0x77')][_0x035c('0x3c')];_0x36d718+=0x1){socket[_0x035c('0x7a')](_0x035c('0x7b'),{'UserId':Number(_0x5a1ca4[_0x035c('0x72')][_0x035c('0x77')][_0x36d718]),'VoicePrefixId':Number(_0x5a1ca4['params']['id'])});}return _0x531632;});}})['then'](respondWithResult(_0x515097,null))['catch'](handleError(_0x515097,null));};exports[_0x035c('0x7c')]=function(_0x2bb402,_0x3b071b,_0x3dd668){return db['VoicePrefix'][_0x035c('0x4f')]({'where':{'id':_0x2bb402[_0x035c('0x4c')]['id']}})[_0x035c('0x2d')](handleEntityNotFound(_0x3b071b,null))[_0x035c('0x2d')](function(_0x246de9){if(_0x246de9){return _0x246de9[_0x035c('0x7c')](_0x2bb402[_0x035c('0x37')]['ids'])[_0x035c('0x2d')](function(){if(_[_0x035c('0x7d')](_0x2bb402[_0x035c('0x37')][_0x035c('0x77')])){for(var _0xbe228c=0x0;_0xbe228c<_0x2bb402[_0x035c('0x37')][_0x035c('0x77')]['length'];_0xbe228c+=0x1){socket[_0x035c('0x7a')](_0x035c('0x7e'),{'UserId':Number(_0x2bb402[_0x035c('0x37')][_0x035c('0x77')][_0xbe228c]),'VoicePrefixId':Number(_0x2bb402['params']['id'])});}}else{socket[_0x035c('0x7a')](_0x035c('0x7e'),{'UserId':Number(_0x2bb402[_0x035c('0x37')][_0x035c('0x77')]),'VoicePrefixId':Number(_0x2bb402['params']['id'])});}});}})[_0x035c('0x2d')](respondWithStatusCode(_0x3b071b,null))['catch'](handleError(_0x3b071b,null));};exports[_0x035c('0x7f')]=function(_0x4d1003,_0x2f936f,_0x14d685){var _0x35f643={};var _0x1fea69={};var _0x3cd537;var _0x14b451;return db[_0x035c('0x32')][_0x035c('0x80')]({'where':{'id':_0x4d1003[_0x035c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2f936f,null))['then'](function(_0x396874){if(_0x396874){_0x3cd537=_0x396874;_0x1fea69[_0x035c('0x38')]=_['keys'](db['User'][_0x035c('0x4d')]);_0x1fea69[_0x035c('0x37')]=_[_0x035c('0x36')](_0x4d1003[_0x035c('0x37')]);_0x1fea69[_0x035c('0x4e')]=_[_0x035c('0x3a')](_0x1fea69[_0x035c('0x38')],_0x1fea69[_0x035c('0x37')]);_0x35f643[_0x035c('0x39')]=_[_0x035c('0x3a')](_0x1fea69[_0x035c('0x38')],qs[_0x035c('0x3b')](_0x4d1003[_0x035c('0x37')][_0x035c('0x3b')]));_0x35f643[_0x035c('0x39')]=_0x35f643[_0x035c('0x39')]['length']?_0x35f643['attributes']:_0x1fea69[_0x035c('0x38')];_0x35f643['order']=qs[_0x035c('0x3f')](_0x4d1003[_0x035c('0x37')][_0x035c('0x3f')]);_0x35f643['where']=qs['filters'](_[_0x035c('0x41')](_0x4d1003[_0x035c('0x37')],_0x1fea69[_0x035c('0x4e')]));if(_0x4d1003[_0x035c('0x37')]['filter']){_0x35f643['where']=_[_0x035c('0x43')](_0x35f643['where'],{'$or':_[_0x035c('0x31')](_0x35f643[_0x035c('0x39')],function(_0x242538){var _0x2af470={};_0x2af470[_0x242538]={'$like':'%'+_0x4d1003[_0x035c('0x37')][_0x035c('0x42')]+'%'};return _0x2af470;})});}_0x35f643=_['merge']({},_0x35f643,_0x4d1003[_0x035c('0x45')]);return _0x3cd537['getAgents'](_0x35f643);}})[_0x035c('0x2d')](function(_0x1cdf5d){if(_0x1cdf5d){_0x14b451=_0x1cdf5d[_0x035c('0x3c')];if(!_0x4d1003['query'][_0x035c('0x3d')](_0x035c('0x3e'))){_0x35f643[_0x035c('0x23')]=qs[_0x035c('0x23')](_0x4d1003[_0x035c('0x37')][_0x035c('0x23')]);_0x35f643[_0x035c('0x21')]=qs[_0x035c('0x21')](_0x4d1003[_0x035c('0x37')][_0x035c('0x21')]);}return _0x3cd537[_0x035c('0x7f')](_0x35f643);}})[_0x035c('0x2d')](function(_0x2ca079){if(_0x2ca079){return _0x2ca079?{'count':_0x14b451,'rows':_0x2ca079}:null;}})[_0x035c('0x2d')](respondWithResult(_0x2f936f,null))['catch'](handleError(_0x2f936f,null));};
\ No newline at end of file
+var _0xb7e2=['NoOp','No\x20callerid\x20available','${EXTEN:','charAt','system-','VoiceExtensionId','addAgents','body','ids','spread','userVoicePrefix:save','removeAgents','isArray','emit','userVoicePrefix:remove','getAgents','keys','eml-format','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','status','json','offset','limit','undefined','count','set','apply','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','end','error','stack','name','send','index','map','VoicePrefix','fieldName','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','options','includeAll','findAll','rows','catch','show','params','rawAttributes','fields','include','merge','find','describe','create','sequelize','transaction','VoiceExtension','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','system','description','Voice\x20Prefix\x20Extension','prefix','VoicePrefixId','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll'];(function(_0xeac311,_0x120bee){var _0x5e8613=function(_0x2918f9){while(--_0x2918f9){_0xeac311['push'](_0xeac311['shift']());}};_0x5e8613(++_0x120bee);}(_0xb7e2,0x103));var _0x2b7e=function(_0x295309,_0x43edcc){_0x295309=_0x295309-0x0;var _0x2b7665=_0xb7e2[_0x295309];return _0x2b7665;};'use strict';var emlformat=require(_0x2b7e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2b7e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2b7e('0x2'));var moment=require('moment');var BPromise=require(_0x2b7e('0x3'));var Mustache=require('mustache');var util=require(_0x2b7e('0x4'));var path=require(_0x2b7e('0x5'));var sox=require(_0x2b7e('0x6'));var csv=require(_0x2b7e('0x7'));var ejs=require(_0x2b7e('0x8'));var fs=require('fs');var fs_extra=require(_0x2b7e('0x9'));var _=require('lodash');var squel=require(_0x2b7e('0xa'));var crypto=require(_0x2b7e('0xb'));var jsforce=require(_0x2b7e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x2b7e('0x7'));var querystring=require(_0x2b7e('0xd'));var Papa=require(_0x2b7e('0xe'));var Redis=require(_0x2b7e('0xf'));var authService=require(_0x2b7e('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2b7e('0x11'));var logger=require(_0x2b7e('0x12'))(_0x2b7e('0x13'));var utils=require(_0x2b7e('0x14'));var config=require(_0x2b7e('0x15'));var licenseUtil=require(_0x2b7e('0x16'));var db=require(_0x2b7e('0x17'))['db'];config['redis']=_[_0x2b7e('0x18')](config[_0x2b7e('0x19')],{'host':_0x2b7e('0x1a'),'port':0x18eb});var socket=require(_0x2b7e('0x1b'))(new Redis(config['redis']));require('./voicePrefix.socket')['register'](socket);function respondWithStatusCode(_0x824b79,_0x5cfeca){_0x5cfeca=_0x5cfeca||0xcc;return function(_0x1eeda0){if(_0x1eeda0){return _0x824b79['sendStatus'](_0x5cfeca);}return _0x824b79[_0x2b7e('0x1c')](_0x5cfeca)['end']();};}function respondWithResult(_0x181aec,_0x2bd651){_0x2bd651=_0x2bd651||0xc8;return function(_0x3f9007){if(_0x3f9007){return _0x181aec['status'](_0x2bd651)[_0x2b7e('0x1d')](_0x3f9007);}};}function respondWithFilteredResult(_0x27a30a,_0x5f3b8f){return function(_0x16d389){if(_0x16d389){var _0x33b038=typeof _0x5f3b8f[_0x2b7e('0x1e')]==='undefined'&&typeof _0x5f3b8f[_0x2b7e('0x1f')]===_0x2b7e('0x20');var _0x627ca1=_0x16d389[_0x2b7e('0x21')];var _0x94e7e3=_0x33b038?0x0:_0x5f3b8f['offset'];var _0x3a1356=_0x33b038?_0x16d389['count']:_0x5f3b8f['offset']+_0x5f3b8f[_0x2b7e('0x1f')];var _0x5dae66;if(_0x3a1356>=_0x627ca1){_0x3a1356=_0x627ca1;_0x5dae66=0xc8;}else{_0x5dae66=0xce;}_0x27a30a[_0x2b7e('0x1c')](_0x5dae66);return _0x27a30a[_0x2b7e('0x22')]('Content-Range',_0x94e7e3+'-'+_0x3a1356+'/'+_0x627ca1)[_0x2b7e('0x1d')](_0x16d389);}return null;};}function patchUpdates(_0x5988eb){return function(_0x874ac8){try{jsonpatch[_0x2b7e('0x23')](_0x874ac8,_0x5988eb,!![]);}catch(_0x51f854){return BPromise['reject'](_0x51f854);}return _0x874ac8[_0x2b7e('0x24')]();};}function saveUpdates(_0x151e97,_0x2b2863){return function(_0x6da48a){if(_0x6da48a){return _0x6da48a[_0x2b7e('0x25')](_0x151e97)[_0x2b7e('0x26')](function(_0x41b68b){return _0x41b68b;});}return null;};}function removeEntity(_0x11b76b,_0x43e0bd){return function(_0x2cb021){if(_0x2cb021){return _0x2cb021[_0x2b7e('0x27')]()[_0x2b7e('0x26')](function(){var _0x19824e=_0x2cb021[_0x2b7e('0x28')]({'plain':!![]});var _0x4f1ec8=_0x2b7e('0x29');return db[_0x2b7e('0x2a')][_0x2b7e('0x27')]({'where':{'type':_0x4f1ec8,'resourceId':_0x19824e['id']}})[_0x2b7e('0x26')](function(){return _0x2cb021;});})[_0x2b7e('0x26')](function(){_0x11b76b['status'](0xcc)[_0x2b7e('0x2b')]();});}};}function handleEntityNotFound(_0x11cfd8,_0x5871ac){return function(_0x190438){if(!_0x190438){_0x11cfd8['sendStatus'](0x194);}return _0x190438;};}function handleError(_0x4128b6,_0x585e25){_0x585e25=_0x585e25||0x1f4;return function(_0x958f43){logger[_0x2b7e('0x2c')](_0x958f43[_0x2b7e('0x2d')]);if(_0x958f43[_0x2b7e('0x2e')]){delete _0x958f43['name'];}_0x4128b6[_0x2b7e('0x1c')](_0x585e25)[_0x2b7e('0x2f')](_0x958f43);};}exports[_0x2b7e('0x30')]=function(_0x1c9ba5,_0x296155){var _0x29d44b={},_0x21f9be={},_0x5546b0={'count':0x0,'rows':[]};var _0x33c0ed=_[_0x2b7e('0x31')](db[_0x2b7e('0x32')]['rawAttributes'],function(_0x50c994){return{'name':_0x50c994[_0x2b7e('0x33')],'type':_0x50c994[_0x2b7e('0x34')][_0x2b7e('0x35')]};});_0x21f9be[_0x2b7e('0x36')]=_[_0x2b7e('0x31')](_0x33c0ed,_0x2b7e('0x2e'));_0x21f9be[_0x2b7e('0x37')]=_['keys'](_0x1c9ba5[_0x2b7e('0x37')]);_0x21f9be[_0x2b7e('0x38')]=_[_0x2b7e('0x39')](_0x21f9be[_0x2b7e('0x36')],_0x21f9be[_0x2b7e('0x37')]);_0x29d44b['attributes']=_[_0x2b7e('0x39')](_0x21f9be['model'],qs['fields'](_0x1c9ba5[_0x2b7e('0x37')]['fields']));_0x29d44b[_0x2b7e('0x3a')]=_0x29d44b['attributes'][_0x2b7e('0x3b')]?_0x29d44b['attributes']:_0x21f9be[_0x2b7e('0x36')];if(!_0x1c9ba5[_0x2b7e('0x37')][_0x2b7e('0x3c')]('nolimit')){_0x29d44b[_0x2b7e('0x1f')]=qs[_0x2b7e('0x1f')](_0x1c9ba5[_0x2b7e('0x37')]['limit']);_0x29d44b['offset']=qs['offset'](_0x1c9ba5[_0x2b7e('0x37')]['offset']);}_0x29d44b[_0x2b7e('0x3d')]=qs[_0x2b7e('0x3e')](_0x1c9ba5[_0x2b7e('0x37')]['sort']);_0x29d44b[_0x2b7e('0x3f')]=qs[_0x2b7e('0x38')](_[_0x2b7e('0x40')](_0x1c9ba5[_0x2b7e('0x37')],_0x21f9be[_0x2b7e('0x38')]),_0x33c0ed);if(_0x1c9ba5['query']['filter']){_0x29d44b[_0x2b7e('0x3f')]=_['merge'](_0x29d44b['where'],{'$or':_[_0x2b7e('0x31')](_0x33c0ed,function(_0x57f185){if(_0x57f185[_0x2b7e('0x34')]!=='VIRTUAL'){var _0x66341c={};_0x66341c[_0x57f185['name']]={'$like':'%'+_0x1c9ba5[_0x2b7e('0x37')][_0x2b7e('0x41')]+'%'};return _0x66341c;}})});}_0x29d44b=_['merge']({},_0x29d44b,_0x1c9ba5[_0x2b7e('0x42')]);var _0x2933a8={'where':_0x29d44b['where']};return db[_0x2b7e('0x32')]['count'](_0x2933a8)[_0x2b7e('0x26')](function(_0x383d7f){_0x5546b0['count']=_0x383d7f;if(_0x1c9ba5[_0x2b7e('0x37')][_0x2b7e('0x43')]){_0x29d44b['include']=[{'all':!![]}];}return db[_0x2b7e('0x32')][_0x2b7e('0x44')](_0x29d44b);})['then'](function(_0x28b453){_0x5546b0[_0x2b7e('0x45')]=_0x28b453;return _0x5546b0;})[_0x2b7e('0x26')](respondWithFilteredResult(_0x296155,_0x29d44b))[_0x2b7e('0x46')](handleError(_0x296155,null));};exports[_0x2b7e('0x47')]=function(_0x4065f6,_0x47d0df){var _0x1edc12={'raw':![],'where':{'id':_0x4065f6[_0x2b7e('0x48')]['id']}},_0x14d1e1={};_0x14d1e1[_0x2b7e('0x36')]=_['keys'](db[_0x2b7e('0x32')][_0x2b7e('0x49')]);_0x14d1e1[_0x2b7e('0x37')]=_['keys'](_0x4065f6[_0x2b7e('0x37')]);_0x14d1e1['filters']=_[_0x2b7e('0x39')](_0x14d1e1[_0x2b7e('0x36')],_0x14d1e1[_0x2b7e('0x37')]);_0x1edc12[_0x2b7e('0x3a')]=_[_0x2b7e('0x39')](_0x14d1e1[_0x2b7e('0x36')],qs[_0x2b7e('0x4a')](_0x4065f6[_0x2b7e('0x37')]['fields']));_0x1edc12[_0x2b7e('0x3a')]=_0x1edc12[_0x2b7e('0x3a')][_0x2b7e('0x3b')]?_0x1edc12[_0x2b7e('0x3a')]:_0x14d1e1[_0x2b7e('0x36')];if(_0x4065f6[_0x2b7e('0x37')][_0x2b7e('0x43')]){_0x1edc12[_0x2b7e('0x4b')]=[{'all':!![]}];}_0x1edc12=_[_0x2b7e('0x4c')]({},_0x1edc12,_0x4065f6[_0x2b7e('0x42')]);return db[_0x2b7e('0x32')][_0x2b7e('0x4d')](_0x1edc12)[_0x2b7e('0x26')](handleEntityNotFound(_0x47d0df,null))[_0x2b7e('0x26')](respondWithResult(_0x47d0df,null))[_0x2b7e('0x46')](handleError(_0x47d0df,null));};exports[_0x2b7e('0x27')]=function(_0x5938b5,_0x54a6b3){return db[_0x2b7e('0x32')][_0x2b7e('0x4d')]({'where':{'id':_0x5938b5[_0x2b7e('0x48')]['id']}})[_0x2b7e('0x26')](handleEntityNotFound(_0x54a6b3,null))['then'](removeEntity(_0x54a6b3,null))[_0x2b7e('0x46')](handleError(_0x54a6b3,null));};exports[_0x2b7e('0x4e')]=function(_0x555e51,_0xfd26d){return db[_0x2b7e('0x32')][_0x2b7e('0x4e')]()[_0x2b7e('0x26')](respondWithResult(_0xfd26d,null))[_0x2b7e('0x46')](handleError(_0xfd26d,null));};exports[_0x2b7e('0x4f')]=function(_0x504871,_0x34ed5a){var _0x377e8f;return db[_0x2b7e('0x50')][_0x2b7e('0x51')](function(_0x2c9ca8){return db['VoicePrefix']['create'](_0x504871['body'],{'transaction':_0x2c9ca8})[_0x2b7e('0x26')](function(_0x29e0d7){_0x377e8f=_0x29e0d7[_0x2b7e('0x28')]({'plain':!![]});return db[_0x2b7e('0x52')]['find']({'where':{'id':_0x377e8f['VoiceExtensionId']},'raw':!![]})[_0x2b7e('0x26')](function(_0x531377){return createVoicePrefixExtensions(_0x377e8f,_0x531377,_0x2c9ca8);});});})[_0x2b7e('0x26')](function(){var _0x4338f8=_0x504871[_0x2b7e('0x53')][_0x2b7e('0x28')]({'plain':!![]});if(!_0x4338f8)throw new Error(_0x2b7e('0x54'));if(_0x4338f8[_0x2b7e('0x55')]===_0x2b7e('0x53')){var _0x24c1d6=_0x377e8f;return db[_0x2b7e('0x56')][_0x2b7e('0x4d')]({'where':{'name':_0x2b7e('0x29'),'userProfileId':_0x4338f8[_0x2b7e('0x57')]},'raw':!![]})['then'](function(_0x502ad9){if(_0x502ad9&&_0x502ad9[_0x2b7e('0x58')]===0x0){return db[_0x2b7e('0x2a')]['create']({'name':_0x24c1d6[_0x2b7e('0x2e')],'resourceId':_0x24c1d6['id'],'type':_0x502ad9[_0x2b7e('0x2e')],'sectionId':_0x502ad9['id']},{})[_0x2b7e('0x26')](function(){return _0x377e8f;});}else{return _0x377e8f;}})[_0x2b7e('0x46')](function(_0x319c89){logger[_0x2b7e('0x2c')](_0x2b7e('0x59'),_0x319c89);throw _0x319c89;});}return _0x377e8f;})[_0x2b7e('0x26')](respondWithResult(_0x34ed5a,null))[_0x2b7e('0x46')](handleError(_0x34ed5a,null));};function Extension(_0x4c9ca4,_0x46bf1b,_0x371067,_0x15077e){this[_0x2b7e('0x5a')]=_0x2b7e('0x5b');this[_0x2b7e('0x5c')]=_0x4c9ca4;this[_0x2b7e('0x5d')]=_0x371067;this[_0x2b7e('0x34')]=_0x2b7e('0x5e');this[_0x2b7e('0x5f')]=_0x2b7e('0x60');this['priority']=_0x46bf1b;this['appdata']=_0x15077e;}function createVoicePrefixExtensions(_0x37748f,_0x51becf,_0x21cd0a){return new BPromise(function(_0x42a529,_0x5290ca){var _0x51110a=new Extension(formatPrefixName(_0x37748f[_0x2b7e('0x61')]),0x1,'NoOp','Voice\x20Prefix');_0x51110a[_0x2b7e('0x62')]=_0x37748f['id'];return db[_0x2b7e('0x52')][_0x2b7e('0x4f')](_0x51110a,{'transaction':_0x21cd0a})[_0x2b7e('0x26')](function(_0x488c37){var _0x5894f7=_0x488c37[_0x2b7e('0x28')]({'plain':!![]});var _0x879152=_[_0x2b7e('0x31')](addVoicePrefixExtensions(_0x37748f,_0x51becf),function(_0x2c8704){_0x2c8704['VoiceExtensionId']=_0x5894f7['id'];_0x2c8704['VoicePrefixId']=_0x37748f['id'];return _0x2c8704;});return db[_0x2b7e('0x52')]['bulkCreate'](_0x879152,{'transaction':_0x21cd0a})['then'](function(_0x1e9974){if(!_0x1e9974){return _0x5290ca(_0x2b7e('0x63'));}else{return _0x42a529(_0x1e9974);}})[_0x2b7e('0x46')](function(_0x4a0e0c){return _0x5290ca(_0x4a0e0c);});});;});};function addVoicePrefixExtensions(_0x4319b0,_0x447b1f){var _0x55cb4a=[];var _0x4b06ed=formatPrefixName(_0x4319b0[_0x2b7e('0x61')]);_0x55cb4a[_0x2b7e('0x64')](new Extension(_0x4b06ed,0x2,_0x2b7e('0x65'),_0x2b7e('0x66')+_0x4319b0['name']));if(_0x4319b0['callerIdAll']){_0x55cb4a[_0x2b7e('0x64')](new Extension(_0x4b06ed,0x3,_0x2b7e('0x65'),'PREFIX-CALLERIDALL='+_0x4319b0[_0x2b7e('0x67')]));}else{_0x55cb4a['push'](new Extension(_0x4b06ed,0x3,_0x2b7e('0x68'),_0x2b7e('0x69')));}_0x55cb4a[_0x2b7e('0x64')](new Extension(_0x4b06ed,0x4,'goto',_0x447b1f['context']+','+_0x2b7e('0x6a')+(0x8+_0x4319b0[_0x2b7e('0x2e')]['length'])+'}'+','+0x1));return _0x55cb4a;}function formatPrefixName(_0x5a467a){var _0x1b9c97='_';for(var _0xbfe3e6=0x0;_0xbfe3e6<_0x5a467a[_0x2b7e('0x3b')];_0xbfe3e6++){if(_0x5a467a['charAt'](_0xbfe3e6)=='-'){_0x1b9c97+=_0x5a467a[_0x2b7e('0x6b')](_0xbfe3e6);}else{_0x1b9c97+='['+_0x5a467a[_0x2b7e('0x6b')](_0xbfe3e6)+']';}}_0x1b9c97+='.';return _0x1b9c97;}exports[_0x2b7e('0x25')]=function(_0x2dd914,_0x4f6ee8,_0x21de08){var _0x301da7=_0x2dd914['body'];_0x301da7[_0x2b7e('0x61')]=_0x2b7e('0x6c')+_0x301da7[_0x2b7e('0x2e')]+'-';return db[_0x2b7e('0x50')]['transaction'](function(_0xd3b8){return db[_0x2b7e('0x32')]['update'](_0x301da7,{'where':{'id':_0x301da7['id']},'transaction':_0xd3b8})[_0x2b7e('0x26')](function(){return db['VoiceExtension']['destroy']({'where':{'VoicePrefixId':_0x301da7['id']},'transaction':_0xd3b8})[_0x2b7e('0x26')](function(){return db[_0x2b7e('0x52')][_0x2b7e('0x4d')]({'where':{'id':_0x301da7[_0x2b7e('0x6d')]},'raw':!![]})[_0x2b7e('0x26')](function(_0x4721dd){return createVoicePrefixExtensions(_0x301da7,_0x4721dd,_0xd3b8);});});});})['then'](function(){return db[_0x2b7e('0x32')]['findById'](_0x301da7['id']);})[_0x2b7e('0x26')](respondWithResult(_0x4f6ee8,null))['catch'](handleError(_0x4f6ee8,null));};exports[_0x2b7e('0x6e')]=function(_0x5ececc,_0x338217,_0x3cf67e){return db[_0x2b7e('0x32')][_0x2b7e('0x4d')]({'where':{'id':_0x5ececc[_0x2b7e('0x48')]['id']}})[_0x2b7e('0x26')](handleEntityNotFound(_0x338217,null))[_0x2b7e('0x26')](function(_0x90930){if(_0x90930){return _0x90930['addAgents'](_0x5ececc[_0x2b7e('0x6f')][_0x2b7e('0x70')],_['omit'](_0x5ececc[_0x2b7e('0x6f')],[_0x2b7e('0x70'),'id'])||{})[_0x2b7e('0x71')](function(_0x402670){for(var _0x36e270=0x0;_0x36e270<_0x5ececc[_0x2b7e('0x6f')]['ids']['length'];_0x36e270+=0x1){socket['emit'](_0x2b7e('0x72'),{'UserId':Number(_0x5ececc[_0x2b7e('0x6f')][_0x2b7e('0x70')][_0x36e270]),'VoicePrefixId':Number(_0x5ececc[_0x2b7e('0x48')]['id'])});}return _0x402670;});}})[_0x2b7e('0x26')](respondWithResult(_0x338217,null))[_0x2b7e('0x46')](handleError(_0x338217,null));};exports[_0x2b7e('0x73')]=function(_0x54397,_0x2fb40c,_0x57b58f){return db[_0x2b7e('0x32')][_0x2b7e('0x4d')]({'where':{'id':_0x54397[_0x2b7e('0x48')]['id']}})[_0x2b7e('0x26')](handleEntityNotFound(_0x2fb40c,null))[_0x2b7e('0x26')](function(_0x24463e){if(_0x24463e){return _0x24463e['removeAgents'](_0x54397[_0x2b7e('0x37')]['ids'])[_0x2b7e('0x26')](function(){if(_[_0x2b7e('0x74')](_0x54397[_0x2b7e('0x37')][_0x2b7e('0x70')])){for(var _0x141bf9=0x0;_0x141bf9<_0x54397['query'][_0x2b7e('0x70')][_0x2b7e('0x3b')];_0x141bf9+=0x1){socket[_0x2b7e('0x75')](_0x2b7e('0x76'),{'UserId':Number(_0x54397[_0x2b7e('0x37')][_0x2b7e('0x70')][_0x141bf9]),'VoicePrefixId':Number(_0x54397['params']['id'])});}}else{socket['emit'](_0x2b7e('0x76'),{'UserId':Number(_0x54397[_0x2b7e('0x37')][_0x2b7e('0x70')]),'VoicePrefixId':Number(_0x54397[_0x2b7e('0x48')]['id'])});}});}})[_0x2b7e('0x26')](respondWithStatusCode(_0x2fb40c,null))['catch'](handleError(_0x2fb40c,null));};exports[_0x2b7e('0x77')]=function(_0x407a99,_0x17bc12,_0x5a621b){var _0x166f66={};var _0x2f066c={};var _0x576dd0;var _0x5012b1;return db[_0x2b7e('0x32')]['findOne']({'where':{'id':_0x407a99[_0x2b7e('0x48')]['id']}})[_0x2b7e('0x26')](handleEntityNotFound(_0x17bc12,null))[_0x2b7e('0x26')](function(_0x45c120){if(_0x45c120){_0x576dd0=_0x45c120;_0x2f066c[_0x2b7e('0x36')]=_[_0x2b7e('0x78')](db['User'][_0x2b7e('0x49')]);_0x2f066c['query']=_[_0x2b7e('0x78')](_0x407a99[_0x2b7e('0x37')]);_0x2f066c['filters']=_[_0x2b7e('0x39')](_0x2f066c[_0x2b7e('0x36')],_0x2f066c[_0x2b7e('0x37')]);_0x166f66[_0x2b7e('0x3a')]=_[_0x2b7e('0x39')](_0x2f066c[_0x2b7e('0x36')],qs['fields'](_0x407a99[_0x2b7e('0x37')][_0x2b7e('0x4a')]));_0x166f66[_0x2b7e('0x3a')]=_0x166f66[_0x2b7e('0x3a')][_0x2b7e('0x3b')]?_0x166f66[_0x2b7e('0x3a')]:_0x2f066c[_0x2b7e('0x36')];_0x166f66['order']=qs[_0x2b7e('0x3e')](_0x407a99[_0x2b7e('0x37')][_0x2b7e('0x3e')]);_0x166f66[_0x2b7e('0x3f')]=qs[_0x2b7e('0x38')](_[_0x2b7e('0x40')](_0x407a99[_0x2b7e('0x37')],_0x2f066c[_0x2b7e('0x38')]));if(_0x407a99[_0x2b7e('0x37')][_0x2b7e('0x41')]){_0x166f66[_0x2b7e('0x3f')]=_[_0x2b7e('0x4c')](_0x166f66[_0x2b7e('0x3f')],{'$or':_['map'](_0x166f66[_0x2b7e('0x3a')],function(_0x208617){var _0x3f835a={};_0x3f835a[_0x208617]={'$like':'%'+_0x407a99[_0x2b7e('0x37')][_0x2b7e('0x41')]+'%'};return _0x3f835a;})});}_0x166f66=_[_0x2b7e('0x4c')]({},_0x166f66,_0x407a99['options']);return _0x576dd0['getAgents'](_0x166f66);}})['then'](function(_0x559d){if(_0x559d){_0x5012b1=_0x559d['length'];if(!_0x407a99[_0x2b7e('0x37')][_0x2b7e('0x3c')]('nolimit')){_0x166f66[_0x2b7e('0x1f')]=qs['limit'](_0x407a99[_0x2b7e('0x37')][_0x2b7e('0x1f')]);_0x166f66[_0x2b7e('0x1e')]=qs[_0x2b7e('0x1e')](_0x407a99[_0x2b7e('0x37')][_0x2b7e('0x1e')]);}return _0x576dd0[_0x2b7e('0x77')](_0x166f66);}})[_0x2b7e('0x26')](function(_0x5320d9){if(_0x5320d9){return _0x5320d9?{'count':_0x5012b1,'rows':_0x5320d9}:null;}})['then'](respondWithResult(_0x17bc12,null))['catch'](handleError(_0x17bc12,null));};
\ No newline at end of file
index 00846d1..174f940 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoicePrefix'];(function(_0x52f0b3,_0x8a0b5d){var _0x3e7d93=function(_0x42c58e){while(--_0x42c58e){_0x52f0b3['push'](_0x52f0b3['shift']());}};_0x3e7d93(++_0x8a0b5d);}(_0x5b12,0xb8));var _0x25b1=function(_0x591547,_0x49de8f){_0x591547=_0x591547-0x0;var _0x3c82fa=_0x5b12[_0x591547];return _0x3c82fa;};'use strict';var EventEmitter=require(_0x25b1('0x0'));var VoicePrefix=require(_0x25b1('0x1'))['db'][_0x25b1('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x25b1('0x3')](0x0);var events={'afterCreate':_0x25b1('0x4'),'afterUpdate':_0x25b1('0x5'),'afterDestroy':_0x25b1('0x6')};function emitEvent(_0x26f8fe){return function(_0x3a4de0,_0x3f356b,_0x70cc0c){VoicePrefixEvents[_0x25b1('0x7')](_0x26f8fe+':'+_0x3a4de0['id'],_0x3a4de0);VoicePrefixEvents[_0x25b1('0x7')](_0x26f8fe,_0x3a4de0);_0x70cc0c(null);};}for(var e in events){if(events[_0x25b1('0x8')](e)){var event=events[e];VoicePrefix[_0x25b1('0x9')](e,emitEvent(event));}}module[_0x25b1('0xa')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x3fb0=['update','emit','hasOwnProperty','hook','events','../../mysqldb','VoicePrefix','setMaxListeners','save'];(function(_0x5160a5,_0x468d68){var _0x294902=function(_0x1f093f){while(--_0x1f093f){_0x5160a5['push'](_0x5160a5['shift']());}};_0x294902(++_0x468d68);}(_0x3fb0,0xee));var _0x03fb=function(_0x430e57,_0x2fdca2){_0x430e57=_0x430e57-0x0;var _0x538390=_0x3fb0[_0x430e57];return _0x538390;};'use strict';var EventEmitter=require(_0x03fb('0x0'));var VoicePrefix=require(_0x03fb('0x1'))['db'][_0x03fb('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x03fb('0x3')](0x0);var events={'afterCreate':_0x03fb('0x4'),'afterUpdate':_0x03fb('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3bede5){return function(_0x34fb66,_0x61b82a,_0x4818d3){VoicePrefixEvents[_0x03fb('0x6')](_0x3bede5+':'+_0x34fb66['id'],_0x34fb66);VoicePrefixEvents[_0x03fb('0x6')](_0x3bede5,_0x34fb66);_0x4818d3(null);};}for(var e in events){if(events[_0x03fb('0x7')](e)){var event=events[e];VoicePrefix[_0x03fb('0x8')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
index 0489fd5..fd9a593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7742=['rimraf','../../config/environment','./voicePrefix.attributes','exports','define','VoicePrefix','voice_prefixes','lodash','../../config/logger','api','bluebird','request-promise','path'];(function(_0x5dc2e7,_0x4d363c){var _0x551f1c=function(_0x1a7357){while(--_0x1a7357){_0x5dc2e7['push'](_0x5dc2e7['shift']());}};_0x551f1c(++_0x4d363c);}(_0x7742,0x180));var _0x2774=function(_0x2d2cf1,_0x3ca463){_0x2d2cf1=_0x2d2cf1-0x0;var _0x338698=_0x7742[_0x2d2cf1];return _0x338698;};'use strict';var _=require(_0x2774('0x0'));var util=require('util');var logger=require(_0x2774('0x1'))(_0x2774('0x2'));var moment=require('moment');var BPromise=require(_0x2774('0x3'));var rp=require(_0x2774('0x4'));var fs=require('fs');var path=require(_0x2774('0x5'));var rimraf=require(_0x2774('0x6'));var config=require(_0x2774('0x7'));var attributes=require(_0x2774('0x8'));module[_0x2774('0x9')]=function(_0x3fea95,_0x4f7f15){return _0x3fea95[_0x2774('0xa')](_0x2774('0xb'),attributes,{'tableName':_0x2774('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4d15=['define','VoicePrefix','voice_prefixes','lodash','util','api','request-promise','path','rimraf','../../config/environment','./voicePrefix.attributes'];(function(_0x5a02b9,_0x6e22b){var _0xd039e2=function(_0x3ec3c4){while(--_0x3ec3c4){_0x5a02b9['push'](_0x5a02b9['shift']());}};_0xd039e2(++_0x6e22b);}(_0x4d15,0x9d));var _0x54d1=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x4d15[_0x27af45];return _0x18df21;};'use strict';var _=require(_0x54d1('0x0'));var util=require(_0x54d1('0x1'));var logger=require('../../config/logger')(_0x54d1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x54d1('0x3'));var fs=require('fs');var path=require(_0x54d1('0x4'));var rimraf=require(_0x54d1('0x5'));var config=require(_0x54d1('0x6'));var attributes=require(_0x54d1('0x7'));module['exports']=function(_0x196751,_0x2e6e7d){return _0x196751[_0x54d1('0x8')](_0x54d1('0x9'),attributes,{'tableName':_0x54d1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 60f1491..053174c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa899=['error','message','VoicePrefix,\x20%s,\x20%s','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./voicePrefix.socket','request','then','info','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','code'];(function(_0x2160a9,_0x3cbd9e){var _0xa88cf7=function(_0x51ab6f){while(--_0x51ab6f){_0x2160a9['push'](_0x2160a9['shift']());}};_0xa88cf7(++_0x3cbd9e);}(_0xa899,0x155));var _0x9a89=function(_0x154192,_0x2d360f){_0x154192=_0x154192-0x0;var _0x3c2792=_0xa899[_0x154192];return _0x3c2792;};'use strict';var _=require(_0x9a89('0x0'));var util=require(_0x9a89('0x1'));var moment=require(_0x9a89('0x2'));var BPromise=require('bluebird');var rs=require(_0x9a89('0x3'));var fs=require('fs');var Redis=require(_0x9a89('0x4'));var db=require(_0x9a89('0x5'))['db'];var utils=require(_0x9a89('0x6'));var logger=require(_0x9a89('0x7'))(_0x9a89('0x8'));var config=require(_0x9a89('0x9'));var jayson=require(_0x9a89('0xa'));var client=jayson[_0x9a89('0xb')][_0x9a89('0xc')]({'port':0x232a});config[_0x9a89('0xd')]=_[_0x9a89('0xe')](config[_0x9a89('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9a89('0xd')]));require(_0x9a89('0xf'))['register'](socket);function respondWithRpcPromise(_0xccf078,_0x4f487d,_0x111d99){return new BPromise(function(_0x2a9e30,_0x401680){return client[_0x9a89('0x10')](_0xccf078,_0x111d99)[_0x9a89('0x11')](function(_0xc61526){logger[_0x9a89('0x12')]('VoicePrefix,\x20%s,\x20%s',_0x4f487d,'request\x20sent');logger[_0x9a89('0x13')](_0x9a89('0x14'),_0x4f487d,_0x9a89('0x15'),JSON['stringify'](_0xc61526));if(_0xc61526['error']){if(_0xc61526['error'][_0x9a89('0x16')]===0x1f4){logger[_0x9a89('0x17')]('VoicePrefix,\x20%s,\x20%s',_0x4f487d,_0xc61526[_0x9a89('0x17')][_0x9a89('0x18')]);return _0x401680(_0xc61526[_0x9a89('0x17')][_0x9a89('0x18')]);}logger['error'](_0x9a89('0x19'),_0x4f487d,_0xc61526[_0x9a89('0x17')]['message']);return _0x2a9e30(_0xc61526['error'][_0x9a89('0x18')]);}else{logger['info'](_0x9a89('0x19'),_0x4f487d,_0x9a89('0x15'));_0x2a9e30(_0xc61526['result'][_0x9a89('0x18')]);}})['catch'](function(_0x2d648f){logger[_0x9a89('0x17')]('VoicePrefix,\x20%s,\x20%s',_0x4f487d,_0x2d648f);_0x401680(_0x2d648f);});});}
\ No newline at end of file
+var _0xf19c=['VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5de390,_0x3b9908){var _0x12bf75=function(_0x2d382f){while(--_0x2d382f){_0x5de390['push'](_0x5de390['shift']());}};_0x12bf75(++_0x3b9908);}(_0xf19c,0x10b));var _0xcf19=function(_0x3e3b70,_0x4fe05f){_0x3e3b70=_0x3e3b70-0x0;var _0x154495=_0xf19c[_0x3e3b70];return _0x154495;};'use strict';var _=require(_0xcf19('0x0'));var util=require(_0xcf19('0x1'));var moment=require(_0xcf19('0x2'));var BPromise=require('bluebird');var rs=require(_0xcf19('0x3'));var fs=require('fs');var Redis=require(_0xcf19('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xcf19('0x5'));var logger=require(_0xcf19('0x6'))(_0xcf19('0x7'));var config=require(_0xcf19('0x8'));var jayson=require(_0xcf19('0x9'));var client=jayson['client'][_0xcf19('0xa')]({'port':0x232a});config[_0xcf19('0xb')]=_[_0xcf19('0xc')](config[_0xcf19('0xb')],{'host':_0xcf19('0xd'),'port':0x18eb});var socket=require(_0xcf19('0xe'))(new Redis(config['redis']));require(_0xcf19('0xf'))[_0xcf19('0x10')](socket);function respondWithRpcPromise(_0xde8967,_0x257184,_0x87afe6){return new BPromise(function(_0x3141eb,_0x3c9355){return client[_0xcf19('0x11')](_0xde8967,_0x87afe6)[_0xcf19('0x12')](function(_0x547a0b){logger[_0xcf19('0x13')](_0xcf19('0x14'),_0x257184,_0xcf19('0x15'));logger[_0xcf19('0x16')](_0xcf19('0x17'),_0x257184,_0xcf19('0x15'),JSON[_0xcf19('0x18')](_0x547a0b));if(_0x547a0b[_0xcf19('0x19')]){if(_0x547a0b[_0xcf19('0x19')][_0xcf19('0x1a')]===0x1f4){logger[_0xcf19('0x19')](_0xcf19('0x14'),_0x257184,_0x547a0b[_0xcf19('0x19')][_0xcf19('0x1b')]);return _0x3c9355(_0x547a0b[_0xcf19('0x19')][_0xcf19('0x1b')]);}logger['error']('VoicePrefix,\x20%s,\x20%s',_0x257184,_0x547a0b[_0xcf19('0x19')][_0xcf19('0x1b')]);return _0x3141eb(_0x547a0b[_0xcf19('0x19')][_0xcf19('0x1b')]);}else{logger[_0xcf19('0x13')](_0xcf19('0x14'),_0x257184,'request\x20sent');_0x3141eb(_0x547a0b[_0xcf19('0x1c')][_0xcf19('0x1b')]);}})['catch'](function(_0x289799){logger['error'](_0xcf19('0x14'),_0x257184,_0x289799);_0x3c9355(_0x289799);});});}
\ No newline at end of file
index 3f3aa2a..dba9e17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf14=['voicePrefix:','./voicePrefix.events','remove','update','emit','removeListener','register','length'];(function(_0x5d6054,_0x15db55){var _0x3cb091=function(_0x2ec005){while(--_0x2ec005){_0x5d6054['push'](_0x5d6054['shift']());}};_0x3cb091(++_0x15db55);}(_0xcf14,0xa1));var _0x4cf1=function(_0x11c77e,_0x5a56ba){_0x11c77e=_0x11c77e-0x0;var _0x59c3ac=_0xcf14[_0x11c77e];return _0x59c3ac;};'use strict';var VoicePrefixEvents=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(){VoicePrefixEvents[_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);VoicePrefixEvents['on'](_0x9efe60,_0x50273f);}};
\ No newline at end of file
+var _0xef38=['removeListener','length','voicePrefix:','save','remove','update','emit'];(function(_0x3b2244,_0x54873f){var _0x2dcc14=function(_0x53d73f){while(--_0x53d73f){_0x3b2244['push'](_0x3b2244['shift']());}};_0x2dcc14(++_0x54873f);}(_0xef38,0x122));var _0x8ef3=function(_0x3a4b5d,_0x394b2d){_0x3a4b5d=_0x3a4b5d-0x0;var _0x46983f=_0xef38[_0x3a4b5d];return _0x46983f;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0x8ef3('0x0'),_0x8ef3('0x1'),_0x8ef3('0x2')];function createListener(_0x5eab3c,_0x57de8c){return function(_0x16510f){_0x57de8c[_0x8ef3('0x3')](_0x5eab3c,_0x16510f);};}function removeListener(_0x1966e7,_0x38a671){return function(){VoicePrefixEvents[_0x8ef3('0x4')](_0x1966e7,_0x38a671);};}exports['register']=function(_0x142b71){for(var _0x25d6ca=0x0,_0x50ee13=events[_0x8ef3('0x5')];_0x25d6ca<_0x50ee13;_0x25d6ca++){var _0x26107d=events[_0x25d6ca];var _0x217874=createListener(_0x8ef3('0x6')+_0x26107d,_0x142b71);VoicePrefixEvents['on'](_0x26107d,_0x217874);}};
\ No newline at end of file
index 02725b8..68de4d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0ed=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','isAuthenticated','index','get','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','getMembers','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','/:id/clone','addTeams','addLists','addBlackLists','/:id','destroy','delete','removeLists','multer','util','path','express','Router'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0xe0ed,0x11b));var _0xde0e=function(_0x126c81,_0x1c8132){_0x126c81=_0x126c81-0x0;var _0x5eeb41=_0xe0ed[_0x126c81];return _0x5eeb41;};'use strict';var multer=require(_0xde0e('0x0'));var util=require(_0xde0e('0x1'));var path=require(_0xde0e('0x2'));var timeout=require('connect-timeout');var express=require(_0xde0e('0x3'));var router=express[_0xde0e('0x4')]();var fs_extra=require(_0xde0e('0x5'));var auth=require(_0xde0e('0x6'));var interaction=require(_0xde0e('0x7'));var config=require(_0xde0e('0x8'));var controller=require(_0xde0e('0x9'));router['get']('/',auth[_0xde0e('0xa')](),controller[_0xde0e('0xb')]);router['get']('/:id',auth[_0xde0e('0xa')](),controller['show']);router[_0xde0e('0xc')]('/:id/hoppers',auth['isAuthenticated'](),controller['getHoppers']);router['get'](_0xde0e('0xd'),auth[_0xde0e('0xa')](),controller[_0xde0e('0xe')]);router[_0xde0e('0xc')](_0xde0e('0xf'),auth['isAuthenticated'](),controller[_0xde0e('0x10')]);router[_0xde0e('0xc')](_0xde0e('0x11'),auth[_0xde0e('0xa')](),controller[_0xde0e('0x12')]);router[_0xde0e('0xc')](_0xde0e('0x13'),auth['isAuthenticated'](),controller['getTeams']);router[_0xde0e('0xc')](_0xde0e('0x14'),auth[_0xde0e('0xa')](),controller[_0xde0e('0x15')]);router[_0xde0e('0xc')]('/:id/members',auth['isAuthenticated'](),controller[_0xde0e('0x16')]);router[_0xde0e('0xc')](_0xde0e('0x17'),auth[_0xde0e('0xa')](),controller[_0xde0e('0x18')]);router['get'](_0xde0e('0x19'),auth[_0xde0e('0xa')](),controller[_0xde0e('0x1a')]);router[_0xde0e('0x1b')]('/',auth['isAuthenticated'](),controller['create']);router[_0xde0e('0x1b')](_0xde0e('0x1c'),auth[_0xde0e('0xa')](),controller['clone']);router[_0xde0e('0x1b')]('/:id/teams',auth[_0xde0e('0xa')](),controller[_0xde0e('0x1d')]);router['post'](_0xde0e('0x14'),auth['isAuthenticated'](),controller['addAgents']);router[_0xde0e('0x1b')](_0xde0e('0x17'),auth[_0xde0e('0xa')](),controller[_0xde0e('0x1e')]);router['post']('/:id/blacklists',auth[_0xde0e('0xa')](),controller[_0xde0e('0x1f')]);router['put'](_0xde0e('0x20'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xde0e('0x20'),auth[_0xde0e('0xa')](),controller[_0xde0e('0x21')]);router[_0xde0e('0x22')](_0xde0e('0x13'),auth[_0xde0e('0xa')](),controller['removeTeams']);router[_0xde0e('0x22')](_0xde0e('0x14'),auth[_0xde0e('0xa')](),controller['removeAgents']);router[_0xde0e('0x22')]('/:id/lists',auth[_0xde0e('0xa')](),controller[_0xde0e('0x23')]);router[_0xde0e('0x22')](_0xde0e('0x19'),auth[_0xde0e('0xa')](),controller['removeBlackLists']);module['exports']=router;
\ No newline at end of file
+var _0xf75e=['../../config/environment','./voiceQueue.controller','get','/:id','show','/:id/hoppers','isAuthenticated','getHoppers','getHopperHistories','/:id/hopper_finals','/:id/teams','getAgents','/:id/members','getLists','getBlackLists','post','create','clone','/:id/users','/:id/lists','addLists','/:id/blacklists','addBlackLists','put','delete','destroy','removeAgents','removeLists','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3293df,_0x25da46){var _0x26c406=function(_0x549591){while(--_0x549591){_0x3293df['push'](_0x3293df['shift']());}};_0x26c406(++_0x25da46);}(_0xf75e,0x111));var _0xef75=function(_0x1ebf7a,_0x47d384){_0x1ebf7a=_0x1ebf7a-0x0;var _0x1f1c3e=_0xf75e[_0x1ebf7a];return _0x1f1c3e;};'use strict';var multer=require(_0xef75('0x0'));var util=require('util');var path=require(_0xef75('0x1'));var timeout=require('connect-timeout');var express=require(_0xef75('0x2'));var router=express[_0xef75('0x3')]();var fs_extra=require(_0xef75('0x4'));var auth=require(_0xef75('0x5'));var interaction=require(_0xef75('0x6'));var config=require(_0xef75('0x7'));var controller=require(_0xef75('0x8'));router[_0xef75('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xef75('0x9')](_0xef75('0xa'),auth['isAuthenticated'](),controller[_0xef75('0xb')]);router[_0xef75('0x9')](_0xef75('0xc'),auth[_0xef75('0xd')](),controller[_0xef75('0xe')]);router[_0xef75('0x9')]('/:id/hopper_histories',auth[_0xef75('0xd')](),controller[_0xef75('0xf')]);router[_0xef75('0x9')](_0xef75('0x10'),auth[_0xef75('0xd')](),controller['getHopperFinals']);router[_0xef75('0x9')]('/:id/hopper_black',auth[_0xef75('0xd')](),controller['getHopperBlacks']);router['get'](_0xef75('0x11'),auth['isAuthenticated'](),controller['getTeams']);router[_0xef75('0x9')]('/:id/users',auth[_0xef75('0xd')](),controller[_0xef75('0x12')]);router[_0xef75('0x9')](_0xef75('0x13'),auth[_0xef75('0xd')](),controller['getMembers']);router['get']('/:id/lists',auth[_0xef75('0xd')](),controller[_0xef75('0x14')]);router[_0xef75('0x9')]('/:id/blacklists',auth[_0xef75('0xd')](),controller[_0xef75('0x15')]);router[_0xef75('0x16')]('/',auth[_0xef75('0xd')](),controller[_0xef75('0x17')]);router[_0xef75('0x16')]('/:id/clone',auth['isAuthenticated'](),controller[_0xef75('0x18')]);router[_0xef75('0x16')]('/:id/teams',auth[_0xef75('0xd')](),controller['addTeams']);router[_0xef75('0x16')](_0xef75('0x19'),auth[_0xef75('0xd')](),controller['addAgents']);router[_0xef75('0x16')](_0xef75('0x1a'),auth[_0xef75('0xd')](),controller[_0xef75('0x1b')]);router[_0xef75('0x16')](_0xef75('0x1c'),auth['isAuthenticated'](),controller[_0xef75('0x1d')]);router[_0xef75('0x1e')]('/:id',auth[_0xef75('0xd')](),controller['update']);router[_0xef75('0x1f')](_0xef75('0xa'),auth['isAuthenticated'](),controller[_0xef75('0x20')]);router[_0xef75('0x1f')](_0xef75('0x11'),auth['isAuthenticated'](),controller['removeTeams']);router[_0xef75('0x1f')](_0xef75('0x19'),auth[_0xef75('0xd')](),controller[_0xef75('0x21')]);router[_0xef75('0x1f')](_0xef75('0x1a'),auth[_0xef75('0xd')](),controller[_0xef75('0x22')]);router[_0xef75('0x1f')]('/:id/blacklists',auth[_0xef75('0xd')](),controller['removeBlackLists']);module['exports']=router;
\ No newline at end of file
index 80eecd5..36c187d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c46=['NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','#AMD\x20Initial\x20Silence','#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','ASC','DESC','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Random\x20Last\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)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','name','ENUM','inbound','outbound','default','ringall','leastrecent','fewestcalls','random','rrmemory','linear','rrordered','strategy','getDataValue','type','dialMethod','booked','roundrobin','progressive','predictive','INTEGER','yes','all','once','TEXT','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Dial\x20Method.','Max\x209999\x20channels,\x200\x20means\x20unlimited.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','dropRate','Only\x20for\x20predictive\x20method.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x2c46,0x6f));var _0x62c4=function(_0xf6fc32,_0x175c5e){_0xf6fc32=_0xf6fc32-0x0;var _0x32a988=_0x2c46[_0xf6fc32];return _0x32a988;};'use strict';var Sequelize=require('sequelize');module[_0x62c4('0x0')]={'name':{'type':Sequelize[_0x62c4('0x1')],'allowNull':![],'unique':_0x62c4('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x62c4('0x3')](_0x62c4('0x4'),_0x62c4('0x5')),'allowNull':![],'defaultValue':_0x62c4('0x4')},'musiconhold':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':_0x62c4('0x6')},'announce':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0x62c4('0x3')]('rr',_0x62c4('0x7'),_0x62c4('0x8'),_0x62c4('0x9'),_0x62c4('0xa'),_0x62c4('0xb'),_0x62c4('0xc'),'wrandom',_0x62c4('0xd')),'allowNull':![],'defaultValue':'ringall','set':function(_0x1a16a6){this['setDataValue'](_0x62c4('0xe'),_0x1a16a6?_0x1a16a6:_0x62c4('0xb'));},'get':function(){var _0x169a32=this[_0x62c4('0xf')](_0x62c4('0x10'));var _0x37400d=this[_0x62c4('0xf')](_0x62c4('0x11'));var _0x3098e0=this[_0x62c4('0xf')](_0x62c4('0xe'));if(_0x169a32===_0x62c4('0x4')){return _0x3098e0;}if(_0x37400d==='booked'&&_0x3098e0==='rrmemory'||_0x37400d===_0x62c4('0x12')&&_0x3098e0===_0x62c4('0x13')){return _0x3098e0;}if(_0x37400d===_0x62c4('0x14')||_0x37400d===_0x62c4('0x15')||_0x37400d==='power'){return _0x3098e0;}return null;}},'servicelevel':{'type':Sequelize[_0x62c4('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0x62c4('0x16')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x62c4('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x62c4('0x3')](_0x62c4('0x17'),'no'),'defaultValue':_0x62c4('0x17')},'autopause':{'type':Sequelize[_0x62c4('0x3')](_0x62c4('0x17'),'no',_0x62c4('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x62c4('0x16')](0xb)},'autopausebusy':{'type':Sequelize[_0x62c4('0x3')](_0x62c4('0x17'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x62c4('0x3')](_0x62c4('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x62c4('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x62c4('0x3')](_0x62c4('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x62c4('0x3')](_0x62c4('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM'](_0x62c4('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0x62c4('0x17'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x62c4('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x62c4('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x62c4('0x16')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x62c4('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x62c4('0x16')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0x62c4('0x17'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x62c4('0x17'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0x62c4('0x3')](_0x62c4('0x17'),'no',_0x62c4('0x19')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM']('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x62c4('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x62c4('0x1')]},'queue_youarenext':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x62c4('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize['STRING']},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0x62c4('0x1')]},'queue_less_than':{'type':Sequelize[_0x62c4('0x1')]},'periodic_announce':{'type':Sequelize[_0x62c4('0x1a')],'set':function(_0x31ddc6){this[_0x62c4('0x1b')](_0x62c4('0x1c'),_0x31ddc6?_0x31ddc6[_0x62c4('0x1d')](','):[]);},'get':function(){return this[_0x62c4('0xf')](_0x62c4('0x1c'))?this['getDataValue'](_0x62c4('0x1c'))[_0x62c4('0x1e')](','):[];}},'joinempty':{'type':Sequelize['STRING'],'defaultValue':_0x62c4('0x17'),'set':function(_0x5763c2){this[_0x62c4('0x1b')](_0x62c4('0x1f'),_0x5763c2?_0x5763c2[_0x62c4('0x1d')](','):undefined);},'get':function(){return this['getDataValue'](_0x62c4('0x1f'))?this[_0x62c4('0xf')](_0x62c4('0x1f'))[_0x62c4('0x1e')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':'no','set':function(_0x4f6834){this[_0x62c4('0x1b')](_0x62c4('0x20'),_0x4f6834?_0x4f6834[_0x62c4('0x1d')](','):undefined);},'get':function(){return this['getDataValue']('leavewhenempty')?this['getDataValue']('leavewhenempty')['split'](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x62c4('0x3')](_0x62c4('0x17'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x62c4('0x3')](_0x62c4('0x17'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x62c4('0x16')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x62c4('0x3')](_0x62c4('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x62c4('0x1')]},'acw':{'type':Sequelize[_0x62c4('0x21')],'defaultValue':0x0,'set':function(_0x2ff8d5){this[_0x62c4('0x1b')](_0x62c4('0x22'),_0x2ff8d5);if(_0x2ff8d5){if(this[_0x62c4('0xf')](_0x62c4('0x23'))<0x2){this['setDataValue'](_0x62c4('0x23'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x62c4('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x62c4('0x21')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x62c4('0x3')]('preview',_0x62c4('0x14'),'power',_0x62c4('0x15'),'booked'),'defaultValue':_0x62c4('0x14'),'comment':_0x62c4('0x24')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x62c4('0x25')},'dialLimitQueue':{'type':Sequelize[_0x62c4('0x16')](0x4)[_0x62c4('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x62c4('0x27')},'dialPowerLevel':{'type':Sequelize[_0x62c4('0x28')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize['ENUM']('agentBusyFactor',_0x62c4('0x29')),'defaultValue':_0x62c4('0x29'),'comment':_0x62c4('0x2a')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x62c4('0x28')](0x2)[_0x62c4('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':'Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)'},'dialOriginateCallerIdName':{'type':Sequelize[_0x62c4('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x62c4('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62c4('0x2b')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':'tTxX','comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62c4('0x2c')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62c4('0x2d')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x62c4('0x16')](0x5)[_0x62c4('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62c4('0x2e')},'dialBusyMaxRetry':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62c4('0x2f')},'dialBusyRetryFrequency':{'type':Sequelize[_0x62c4('0x16')](0x5)[_0x62c4('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62c4('0x30')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x62c4('0x16')](0x5)[_0x62c4('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62c4('0x31')},'dialGlobalMaxRetry':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x62c4('0x32')},'dialTimezone':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':_0x62c4('0x33')},'dialPrefix':{'type':Sequelize[_0x62c4('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x62c4('0x34'),_0x62c4('0x35'),_0x62c4('0x36')),'defaultValue':_0x62c4('0x34')},'dialAMDActive':{'type':Sequelize[_0x62c4('0x21')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x62c4('0x16')](0x9)[_0x62c4('0x26')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x62c4('0x37')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x62c4('0x26')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x62c4('0x16')](0x9)[_0x62c4('0x26')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x62c4('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x62c4('0x38')},'dialAMDMinWordLength':{'type':Sequelize[_0x62c4('0x16')](0x9)[_0x62c4('0x26')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x62c4('0x26')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x62c4('0x39')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x62c4('0x26')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x62c4('0x3a')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x62c4('0x26')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x62c4('0x3b')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x62c4('0x16')](0x9)[_0x62c4('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0x62c4('0x16')](0x5)[_0x62c4('0x26')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x62c4('0x3c')},'dialRecallInQueue':{'type':Sequelize[_0x62c4('0x21')],'defaultValue':0x0,'comment':_0x62c4('0x3d')},'dialOrderByScheduledAt':{'type':Sequelize[_0x62c4('0x3')]('DESC',_0x62c4('0x3e')),'defaultValue':_0x62c4('0x3f')},'dialQueueProject2':{'type':Sequelize[_0x62c4('0x1')],'comment':_0x62c4('0x40')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x62c4('0x21')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x62c4('0x21')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x62c4('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x62c4('0x41')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x62c4('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62c4('0x42')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x62c4('0x16')](0x5)[_0x62c4('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62c4('0x43')},'dialDropMaxRetry':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62c4('0x44')},'dialDropRetryFrequency':{'type':Sequelize[_0x62c4('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62c4('0x45')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x62c4('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62c4('0x46')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x62c4('0x16')](0x5)[_0x62c4('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62c4('0x47')},'dialMachineMaxRetry':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62c4('0x48')},'dialMachineRetryFrequency':{'type':Sequelize[_0x62c4('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62c4('0x49')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x62c4('0x4a')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x62c4('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x62c4('0x4b')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x62c4('0x16')],'allowNull':!![],'comment':_0x62c4('0x4c')},'mandatoryDisposition':{'type':Sequelize[_0x62c4('0x21')],'defaultValue':![],'comment':_0x62c4('0x4d'),'set':function(_0x180310){if(!_0x180310)this['setDataValue'](_0x62c4('0x4e'),null);this[_0x62c4('0x1b')](_0x62c4('0x4f'),_0x180310);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x62c4('0x16')](0x3)[_0x62c4('0x26')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0xbca0=['acw','wrapuptime','BOOLEAN','preview','power','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','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','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','#AMD\x20Initial\x20Silence','#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','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','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\x20(min:1,\x20max:999)','#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)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','sequelize','exports','STRING','name','outbound','inbound','ringall','leastrecent','fewestcalls','rrmemory','linear','wrandom','setDataValue','strategy','getDataValue','type','dialMethod','booked','roundrobin','progressive','predictive','INTEGER','ENUM','yes','all','once','TEXT','periodic_announce','join','split','joinempty','leavewhenempty'];(function(_0x28c2e7,_0x386c67){var _0x5080b3=function(_0x52b25f){while(--_0x52b25f){_0x28c2e7['push'](_0x28c2e7['shift']());}};_0x5080b3(++_0x386c67);}(_0xbca0,0x17f));var _0x0bca=function(_0xa1c3f1,_0x510c12){_0xa1c3f1=_0xa1c3f1-0x0;var _0x5139eb=_0xbca0[_0xa1c3f1];return _0x5139eb;};'use strict';var Sequelize=require(_0x0bca('0x0'));module[_0x0bca('0x1')]={'name':{'type':Sequelize[_0x0bca('0x2')],'allowNull':![],'unique':_0x0bca('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM']('inbound',_0x0bca('0x4')),'allowNull':![],'defaultValue':_0x0bca('0x5')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':'default'},'announce':{'type':Sequelize[_0x0bca('0x2')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x0bca('0x6'),_0x0bca('0x7'),_0x0bca('0x8'),'random',_0x0bca('0x9'),_0x0bca('0xa'),_0x0bca('0xb'),'rrordered'),'allowNull':![],'defaultValue':_0x0bca('0x6'),'set':function(_0x7697e8){this[_0x0bca('0xc')](_0x0bca('0xd'),_0x7697e8?_0x7697e8:_0x0bca('0x9'));},'get':function(){var _0x2b5867=this[_0x0bca('0xe')](_0x0bca('0xf'));var _0x2ae8fa=this[_0x0bca('0xe')](_0x0bca('0x10'));var _0x49027f=this[_0x0bca('0xe')](_0x0bca('0xd'));if(_0x2b5867==='inbound'){return _0x49027f;}if(_0x2ae8fa==='booked'&&_0x49027f===_0x0bca('0x9')||_0x2ae8fa===_0x0bca('0x11')&&_0x49027f===_0x0bca('0x12')){return _0x49027f;}if(_0x2ae8fa===_0x0bca('0x13')||_0x2ae8fa===_0x0bca('0x14')||_0x2ae8fa==='power'){return _0x49027f;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x0bca('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x0bca('0x15')](0xb)},'timeout':{'type':Sequelize[_0x0bca('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x0bca('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0x0bca('0x15')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x0bca('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x0bca('0x16')]('yes','no'),'defaultValue':_0x0bca('0x17')},'autopause':{'type':Sequelize[_0x0bca('0x16')]('yes','no',_0x0bca('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x0bca('0x15')](0xb)},'autopausebusy':{'type':Sequelize[_0x0bca('0x16')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0x0bca('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x0bca('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0x0bca('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x0bca('0x16')]('yes','no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x0bca('0x16')](_0x0bca('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0x0bca('0x17'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x0bca('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x0bca('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x0bca('0x16')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x0bca('0x16')](_0x0bca('0x17'),'no'),'defaultValue':_0x0bca('0x17')},'announce_holdtime':{'type':Sequelize[_0x0bca('0x16')]('yes','no',_0x0bca('0x19')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x0bca('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x0bca('0x16')](_0x0bca('0x17'),'no')},'announce_position_limit':{'type':Sequelize[_0x0bca('0x15')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x0bca('0x16')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x0bca('0x2')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x0bca('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x0bca('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x0bca('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x0bca('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x0bca('0x2')]},'queue_quantity1':{'type':Sequelize[_0x0bca('0x2')]},'queue_quantity2':{'type':Sequelize[_0x0bca('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x0bca('0x2')]},'queue_less_than':{'type':Sequelize[_0x0bca('0x2')]},'periodic_announce':{'type':Sequelize[_0x0bca('0x1a')],'set':function(_0x34efbf){this[_0x0bca('0xc')](_0x0bca('0x1b'),_0x34efbf?_0x34efbf[_0x0bca('0x1c')](','):[]);},'get':function(){return this['getDataValue'](_0x0bca('0x1b'))?this[_0x0bca('0xe')](_0x0bca('0x1b'))[_0x0bca('0x1d')](','):[];}},'joinempty':{'type':Sequelize[_0x0bca('0x2')],'defaultValue':'yes','set':function(_0x409017){this['setDataValue'](_0x0bca('0x1e'),_0x409017?_0x409017[_0x0bca('0x1c')](','):undefined);},'get':function(){return this[_0x0bca('0xe')](_0x0bca('0x1e'))?this[_0x0bca('0xe')]('joinempty')['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x0bca('0x2')],'defaultValue':'no','set':function(_0x3792e0){this[_0x0bca('0xc')]('leavewhenempty',_0x3792e0?_0x3792e0[_0x0bca('0x1c')](','):undefined);},'get':function(){return this['getDataValue'](_0x0bca('0x1f'))?this['getDataValue'](_0x0bca('0x1f'))[_0x0bca('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x0bca('0x16')](_0x0bca('0x17'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x0bca('0x16')](_0x0bca('0x17'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x0bca('0x16')](_0x0bca('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x0bca('0x2')]},'description':{'type':Sequelize[_0x0bca('0x2')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x4d54e4){this[_0x0bca('0xc')](_0x0bca('0x20'),_0x4d54e4);if(_0x4d54e4){if(this['getDataValue'](_0x0bca('0x21'))<0x2){this[_0x0bca('0xc')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0x0bca('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x0bca('0x22')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize['ENUM'](_0x0bca('0x23'),_0x0bca('0x13'),_0x0bca('0x24'),_0x0bca('0x14'),_0x0bca('0x11')),'defaultValue':_0x0bca('0x13'),'comment':_0x0bca('0x25')},'dialLimitChannel':{'type':Sequelize[_0x0bca('0x15')](0x4)[_0x0bca('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x0bca('0x27')},'dialLimitQueue':{'type':Sequelize[_0x0bca('0x15')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0x0bca('0x28')](0x2)[_0x0bca('0x26')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x0bca('0x29'),'dropRate'),'defaultValue':_0x0bca('0x2a'),'comment':_0x0bca('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x0bca('0x28')](0x2)[_0x0bca('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x0bca('0x15')](0x3)[_0x0bca('0x26')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x0bca('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize[_0x0bca('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x0bca('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x0bca('0x15')](0x3)[_0x0bca('0x26')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0bca('0x2d')},'dialQueueOptions':{'type':Sequelize[_0x0bca('0x2')],'defaultValue':_0x0bca('0x2e'),'comment':_0x0bca('0x2f')},'dialQueueTimeout':{'type':Sequelize[_0x0bca('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0bca('0x30')},'dialQueueProject':{'type':Sequelize[_0x0bca('0x2')],'comment':_0x0bca('0x31')},'dialCongestionMaxRetry':{'type':Sequelize[_0x0bca('0x15')](0x3)[_0x0bca('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0bca('0x32')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x0bca('0x15')](0x5)[_0x0bca('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0bca('0x33')},'dialBusyMaxRetry':{'type':Sequelize[_0x0bca('0x15')](0x3)[_0x0bca('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0bca('0x34')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0bca('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0bca('0x35')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x0bca('0x15')](0x3)[_0x0bca('0x26')],'defaultValue':0x3,'comment':_0x0bca('0x36')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x0bca('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0bca('0x37')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0bca('0x26')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x0bca('0x38')},'dialTimezone':{'type':Sequelize[_0x0bca('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x0bca('0x39')},'dialPrefix':{'type':Sequelize[_0x0bca('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x0bca('0x16')](_0x0bca('0x3a'),'never','onlyIfOpen'),'defaultValue':_0x0bca('0x3a')},'dialAMDActive':{'type':Sequelize[_0x0bca('0x22')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x0bca('0x15')](0x9)[_0x0bca('0x26')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x0bca('0x3b')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x0bca('0x26')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x0bca('0x15')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x0bca('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x0bca('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x0bca('0x3d')},'dialAMDMinWordLength':{'type':Sequelize[_0x0bca('0x15')](0x9)[_0x0bca('0x26')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x0bca('0x15')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x0bca('0x3e')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x0bca('0x15')](0x9)[_0x0bca('0x26')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x0bca('0x3f')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x0bca('0x15')](0x5)[_0x0bca('0x26')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x0bca('0x40')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x0bca('0x15')](0x9)[_0x0bca('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x0bca('0x41')},'dialRecallMeTimeout':{'type':Sequelize[_0x0bca('0x15')](0x5)[_0x0bca('0x26')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x0bca('0x42')},'dialRecallInQueue':{'type':Sequelize[_0x0bca('0x22')],'defaultValue':0x0,'comment':_0x0bca('0x43')},'dialOrderByScheduledAt':{'type':Sequelize[_0x0bca('0x16')]('DESC',_0x0bca('0x44')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x0bca('0x2')],'comment':_0x0bca('0x31')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x0bca('0x22')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x0bca('0x22')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x0bca('0x15')](0x3)[_0x0bca('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x0bca('0x45')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x0bca('0x46')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x0bca('0x15')](0x3)[_0x0bca('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0bca('0x47')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x0bca('0x15')](0x5)[_0x0bca('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0bca('0x48')},'dialDropMaxRetry':{'type':Sequelize[_0x0bca('0x15')](0x3)[_0x0bca('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0bca('0x49')},'dialDropRetryFrequency':{'type':Sequelize[_0x0bca('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x0bca('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0bca('0x4a')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x0bca('0x15')](0x5)[_0x0bca('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0bca('0x4b')},'dialMachineMaxRetry':{'type':Sequelize[_0x0bca('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0bca('0x4c')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0bca('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0bca('0x4d')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x0bca('0x15')](0x3)[_0x0bca('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0bca('0x4e')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x0bca('0x15')](0x5)[_0x0bca('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0bca('0x4f')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0bca('0x15')],'allowNull':!![],'comment':_0x0bca('0x50')},'mandatoryDisposition':{'type':Sequelize[_0x0bca('0x22')],'defaultValue':![],'comment':_0x0bca('0x51'),'set':function(_0x5f4fa6){if(!_0x5f4fa6)this[_0x0bca('0xc')]('mandatoryDispositionPauseId',null);this[_0x0bca('0xc')](_0x0bca('0x52'),_0x5f4fa6);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x0bca('0x15')](0x3)[_0x0bca('0x26')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x0bca('0x15')](0x3)[_0x0bca('0x26')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index 278a786..e8be9bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a6d=['../../config/environment','../../config/license/util','redis','socket.io-emitter','./voiceQueue.socket','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','includes','type','value','name','UserProfileResource','end','stack','send','index','VoiceQueue','rawAttributes','fieldName','key','keys','query','filters','model','intersection','fields','attributes','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','createdAt','updatedAt','omit','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getHoppers','findOne','CmHopper','findAll','CmHopperHistory','hasOwnProperty','VoiceQueueId','getHopperFinals','CmHopperFinal','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','online','voicePause','forEach','penalty','sequelize','transaction','each','upsert','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','interface','userVoiceQueue:save','select','field','tq.TeamId','team_has_voice_queues','join','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','union','compact','ids','removeAgents','emit','userVoiceQueue:remove','addAgents','isEmpty','all','isArray','getAgents','getMembers','CmList','getLists','addLists','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','NOW()','CmListId','from','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','cm_contacts','deletedAt\x20IS\x20NULL','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0x6a6d,0xa4));var _0xd6a6=function(_0x301bab,_0x322b6e){_0x301bab=_0x301bab-0x0;var _0x41eace=_0x6a6d[_0x301bab];return _0x41eace;};'use strict';var emlformat=require(_0xd6a6('0x0'));var rimraf=require(_0xd6a6('0x1'));var zipdir=require(_0xd6a6('0x2'));var jsonpatch=require(_0xd6a6('0x3'));var rp=require('request-promise');var moment=require(_0xd6a6('0x4'));var BPromise=require(_0xd6a6('0x5'));var Mustache=require(_0xd6a6('0x6'));var util=require('util');var path=require(_0xd6a6('0x7'));var sox=require(_0xd6a6('0x8'));var csv=require('to-csv');var ejs=require(_0xd6a6('0x9'));var fs=require('fs');var fs_extra=require(_0xd6a6('0xa'));var _=require(_0xd6a6('0xb'));var squel=require(_0xd6a6('0xc'));var crypto=require(_0xd6a6('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd6a6('0xe'));var Papa=require(_0xd6a6('0xf'));var Redis=require(_0xd6a6('0x10'));var authService=require(_0xd6a6('0x11'));var qs=require(_0xd6a6('0x12'));var as=require(_0xd6a6('0x13'));var hardwareService=require(_0xd6a6('0x14'));var logger=require(_0xd6a6('0x15'))(_0xd6a6('0x16'));var utils=require(_0xd6a6('0x17'));var config=require(_0xd6a6('0x18'));var licenseUtil=require(_0xd6a6('0x19'));var db=require('../../mysqldb')['db'];config[_0xd6a6('0x1a')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xd6a6('0x1b'))(new Redis(config[_0xd6a6('0x1a')]));require(_0xd6a6('0x1c'))[_0xd6a6('0x1d')](socket);function respondWithStatusCode(_0xb2fd15,_0x186153){_0x186153=_0x186153||0xcc;return function(_0xd007ca){if(_0xd007ca){return _0xb2fd15[_0xd6a6('0x1e')](_0x186153);}return _0xb2fd15['status'](_0x186153)['end']();};}function respondWithResult(_0x30f10d,_0x463fed){_0x463fed=_0x463fed||0xc8;return function(_0xb345){if(_0xb345){return _0x30f10d[_0xd6a6('0x1f')](_0x463fed)[_0xd6a6('0x20')](_0xb345);}};}function respondWithFilteredResult(_0x2a6d5f,_0x1569f0){return function(_0x4cd1ec){if(_0x4cd1ec){var _0x508cba=typeof _0x1569f0[_0xd6a6('0x21')]==='undefined'&&typeof _0x1569f0[_0xd6a6('0x22')]===_0xd6a6('0x23');var _0x487aec=_0x4cd1ec[_0xd6a6('0x24')];var _0x478ddb=_0x508cba?0x0:_0x1569f0[_0xd6a6('0x21')];var _0x2914bd=_0x508cba?_0x4cd1ec['count']:_0x1569f0[_0xd6a6('0x21')]+_0x1569f0[_0xd6a6('0x22')];var _0x419d1b;if(_0x2914bd>=_0x487aec){_0x2914bd=_0x487aec;_0x419d1b=0xc8;}else{_0x419d1b=0xce;}_0x2a6d5f[_0xd6a6('0x1f')](_0x419d1b);return _0x2a6d5f[_0xd6a6('0x25')](_0xd6a6('0x26'),_0x478ddb+'-'+_0x2914bd+'/'+_0x487aec)['json'](_0x4cd1ec);}return null;};}function patchUpdates(_0x4e871e){return function(_0x2bc864){try{jsonpatch[_0xd6a6('0x27')](_0x2bc864,_0x4e871e,!![]);}catch(_0x2fb394){return BPromise[_0xd6a6('0x28')](_0x2fb394);}return _0x2bc864[_0xd6a6('0x29')]();};}function saveUpdates(_0x35435c,_0x6d8842){return function(_0x3bf03){if(_0x3bf03){return _0x3bf03[_0xd6a6('0x2a')](_0x35435c)[_0xd6a6('0x2b')](function(_0x286004){return _0x286004;});}return null;};}function removeEntity(_0x18ace4,_0x500bfa){return function(_0x647e43){if(_0x647e43){return _0x647e43[_0xd6a6('0x2c')]()['then'](function(){var _0xe4fbcc=_0x647e43[_0xd6a6('0x2d')]({'plain':!![]});var _0x560a95=[{'name':_0xd6a6('0x2e'),'value':_0xd6a6('0x2f'),'ignore':![]},{'name':_0xd6a6('0x30'),'value':_0xd6a6('0x31'),'ignore':![]}];var _0x1ed01f=_(_0x560a95)[_0xd6a6('0x32')](_0xd6a6('0x33'))[_0xd6a6('0x34')]('value')['value']();if(_[_0xd6a6('0x35')](_0x1ed01f,_0xe4fbcc[_0xd6a6('0x36')])){return;}var _0x4a5c80=_['find'](_0x560a95,[_0xd6a6('0x37'),_0xe4fbcc['type']])[_0xd6a6('0x38')];return db[_0xd6a6('0x39')][_0xd6a6('0x2c')]({'where':{'type':_0x4a5c80,'resourceId':_0xe4fbcc['id']}})[_0xd6a6('0x2b')](function(){return _0x647e43;});})[_0xd6a6('0x2b')](function(){_0x18ace4[_0xd6a6('0x1f')](0xcc)[_0xd6a6('0x3a')]();});}};}function handleEntityNotFound(_0x579247,_0x560083){return function(_0x4ba143){if(!_0x4ba143){_0x579247[_0xd6a6('0x1e')](0x194);}return _0x4ba143;};}function handleError(_0x1b01b3,_0x1c036c){_0x1c036c=_0x1c036c||0x1f4;return function(_0x2403c8){logger['error'](_0x2403c8[_0xd6a6('0x3b')]);if(_0x2403c8['name']){delete _0x2403c8[_0xd6a6('0x38')];}_0x1b01b3[_0xd6a6('0x1f')](_0x1c036c)[_0xd6a6('0x3c')](_0x2403c8);};}exports[_0xd6a6('0x3d')]=function(_0x51e28a,_0x1ac66d){var _0x1dd768={},_0x988cc4={},_0x1569bd={'count':0x0,'rows':[]};var _0x105abc=_[_0xd6a6('0x34')](db[_0xd6a6('0x3e')][_0xd6a6('0x3f')],function(_0x389fab){return{'name':_0x389fab[_0xd6a6('0x40')],'type':_0x389fab[_0xd6a6('0x36')][_0xd6a6('0x41')]};});_0x988cc4['model']=_[_0xd6a6('0x34')](_0x105abc,'name');_0x988cc4['query']=_[_0xd6a6('0x42')](_0x51e28a[_0xd6a6('0x43')]);_0x988cc4[_0xd6a6('0x44')]=_['intersection'](_0x988cc4[_0xd6a6('0x45')],_0x988cc4['query']);_0x1dd768['attributes']=_[_0xd6a6('0x46')](_0x988cc4[_0xd6a6('0x45')],qs[_0xd6a6('0x47')](_0x51e28a['query'][_0xd6a6('0x47')]));_0x1dd768['attributes']=_0x1dd768[_0xd6a6('0x48')]['length']?_0x1dd768[_0xd6a6('0x48')]:_0x988cc4[_0xd6a6('0x45')];if(!_0x51e28a[_0xd6a6('0x43')]['hasOwnProperty'](_0xd6a6('0x49'))){_0x1dd768['limit']=qs[_0xd6a6('0x22')](_0x51e28a[_0xd6a6('0x43')][_0xd6a6('0x22')]);_0x1dd768[_0xd6a6('0x21')]=qs[_0xd6a6('0x21')](_0x51e28a[_0xd6a6('0x43')][_0xd6a6('0x21')]);}_0x1dd768[_0xd6a6('0x4a')]=qs['sort'](_0x51e28a['query'][_0xd6a6('0x4b')]);_0x1dd768[_0xd6a6('0x4c')]=qs[_0xd6a6('0x44')](_[_0xd6a6('0x4d')](_0x51e28a[_0xd6a6('0x43')],_0x988cc4[_0xd6a6('0x44')]),_0x105abc);if(_0x51e28a[_0xd6a6('0x43')][_0xd6a6('0x32')]){_0x1dd768[_0xd6a6('0x4c')]=_[_0xd6a6('0x4e')](_0x1dd768[_0xd6a6('0x4c')],{'$or':_['map'](_0x105abc,function(_0x41a84d){if(_0x41a84d[_0xd6a6('0x36')]!==_0xd6a6('0x4f')){var _0x740247={};_0x740247[_0x41a84d[_0xd6a6('0x38')]]={'$like':'%'+_0x51e28a[_0xd6a6('0x43')]['filter']+'%'};return _0x740247;}})});}_0x1dd768=_[_0xd6a6('0x4e')]({},_0x1dd768,_0x51e28a[_0xd6a6('0x50')]);var _0x235a12={'where':_0x1dd768[_0xd6a6('0x4c')]};return db[_0xd6a6('0x3e')]['count'](_0x235a12)[_0xd6a6('0x2b')](function(_0xaafe85){_0x1569bd[_0xd6a6('0x24')]=_0xaafe85;if(_0x51e28a[_0xd6a6('0x43')][_0xd6a6('0x51')]){_0x1dd768[_0xd6a6('0x52')]=[{'all':!![]}];}return db['VoiceQueue']['findAll'](_0x1dd768);})[_0xd6a6('0x2b')](function(_0x1a25bc){_0x1569bd[_0xd6a6('0x53')]=_0x1a25bc;return _0x1569bd;})[_0xd6a6('0x2b')](respondWithFilteredResult(_0x1ac66d,_0x1dd768))[_0xd6a6('0x54')](handleError(_0x1ac66d,null));};exports[_0xd6a6('0x55')]=function(_0x5a20b4,_0x3cade0){var _0x532665={'raw':![],'where':{'id':_0x5a20b4[_0xd6a6('0x56')]['id']}},_0x2f9005={};_0x2f9005[_0xd6a6('0x45')]=_[_0xd6a6('0x42')](db['VoiceQueue'][_0xd6a6('0x3f')]);_0x2f9005[_0xd6a6('0x43')]=_[_0xd6a6('0x42')](_0x5a20b4[_0xd6a6('0x43')]);_0x2f9005[_0xd6a6('0x44')]=_[_0xd6a6('0x46')](_0x2f9005[_0xd6a6('0x45')],_0x2f9005[_0xd6a6('0x43')]);_0x532665['attributes']=_[_0xd6a6('0x46')](_0x2f9005[_0xd6a6('0x45')],qs['fields'](_0x5a20b4[_0xd6a6('0x43')][_0xd6a6('0x47')]));_0x532665[_0xd6a6('0x48')]=_0x532665[_0xd6a6('0x48')][_0xd6a6('0x57')]?_0x532665[_0xd6a6('0x48')]:_0x2f9005['model'];if(_0x5a20b4[_0xd6a6('0x43')]['includeAll']){_0x532665[_0xd6a6('0x52')]=[{'all':!![]}];}_0x532665=_['merge']({},_0x532665,_0x5a20b4[_0xd6a6('0x50')]);return db[_0xd6a6('0x3e')][_0xd6a6('0x58')](_0x532665)[_0xd6a6('0x2b')](handleEntityNotFound(_0x3cade0,null))[_0xd6a6('0x2b')](respondWithResult(_0x3cade0,null))['catch'](handleError(_0x3cade0,null));};exports[_0xd6a6('0x59')]=function(_0x24c197,_0x4ebe10){return db['VoiceQueue'][_0xd6a6('0x59')](_0x24c197[_0xd6a6('0x5a')],{})[_0xd6a6('0x2b')](function(_0x113cc1){var _0x53b135=_0x24c197[_0xd6a6('0x5b')][_0xd6a6('0x2d')]({'plain':!![]});if(!_0x53b135)throw new Error(_0xd6a6('0x5c'));if(_0x53b135[_0xd6a6('0x5d')]===_0xd6a6('0x5b')){var _0x31ec22=_0x113cc1['get']({'plain':!![]});var _0xda0272=[{'name':'VoiceQueues','value':_0xd6a6('0x2f')},{'name':_0xd6a6('0x30'),'value':'outbound'}];var _0x3f8e4d=_[_0xd6a6('0x58')](_0xda0272,[_0xd6a6('0x37'),_0x31ec22['type']])['name'];return db[_0xd6a6('0x5e')][_0xd6a6('0x58')]({'where':{'name':_0x3f8e4d,'userProfileId':_0x53b135[_0xd6a6('0x5f')]},'raw':!![]})['then'](function(_0x4dce1a){if(_0x4dce1a&&_0x4dce1a[_0xd6a6('0x60')]===0x0){return db[_0xd6a6('0x39')][_0xd6a6('0x59')]({'name':_0x31ec22[_0xd6a6('0x38')],'resourceId':_0x31ec22['id'],'type':_0x4dce1a['name'],'sectionId':_0x4dce1a['id']},{})['then'](function(){return _0x113cc1;});}else{return _0x113cc1;}})[_0xd6a6('0x54')](function(_0x59701b){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x59701b);throw _0x59701b;});}return _0x113cc1;})[_0xd6a6('0x2b')](respondWithResult(_0x4ebe10,0xc9))['catch'](handleError(_0x4ebe10,null));};exports['clone']=function(_0x306b30,_0x3d2c28){var _0x25485c={'where':{'id':_0x306b30[_0xd6a6('0x56')]['id']}},_0x4d751b={};_0x4d751b['model']=_[_0xd6a6('0x42')](db[_0xd6a6('0x3e')]['rawAttributes']);_0x25485c[_0xd6a6('0x48')]=_['intersection'](_0x4d751b[_0xd6a6('0x45')],qs[_0xd6a6('0x47')](_0x306b30['query'][_0xd6a6('0x47')]));_0x25485c[_0xd6a6('0x48')]=_0x25485c[_0xd6a6('0x48')]['length']?_0x25485c[_0xd6a6('0x48')]:_0x4d751b['model'];if(_0x306b30['query'][_0xd6a6('0x51')]){_0x25485c[_0xd6a6('0x52')]=[{'all':!![]}];}_0x25485c=_[_0xd6a6('0x4e')]({},_0x25485c,_0x306b30[_0xd6a6('0x50')]);return db[_0xd6a6('0x3e')][_0xd6a6('0x58')](_0x25485c)['then'](handleEntityNotFound(_0x3d2c28,null))[_0xd6a6('0x2b')](function(_0x3a7357){if(_0x3a7357){var _0xecbb9d=_0x3a7357[_0xd6a6('0x2d')]({'plain':!![]});_0xecbb9d=qs['omit'](_0xecbb9d,['id',_0xd6a6('0x61'),_0xd6a6('0x62')]);_0x306b30[_0xd6a6('0x5a')]=_[_0xd6a6('0x63')](_0x306b30[_0xd6a6('0x5a')],['id',_0xd6a6('0x61'),_0xd6a6('0x62')]);return db[_0xd6a6('0x3e')]['create'](_[_0xd6a6('0x4e')](_0xecbb9d,_0x306b30[_0xd6a6('0x5a')]),{'include':_0x306b30[_0xd6a6('0x43')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x3ca3d8){var _0x107902=_0x306b30['user'][_0xd6a6('0x2d')]({'plain':!![]});if(!_0x107902)throw new Error(_0xd6a6('0x5c'));if(_0x107902[_0xd6a6('0x5d')]==='user'){var _0x1eaa62=_0x3ca3d8[_0xd6a6('0x2d')]({'plain':!![]});var _0x3428c9=[{'name':'VoiceQueues','value':_0xd6a6('0x2f')},{'name':'QueueCampaigns','value':_0xd6a6('0x31')}];var _0x2960e8=_[_0xd6a6('0x58')](_0x3428c9,[_0xd6a6('0x37'),_0x1eaa62['type']])['name'];return db[_0xd6a6('0x5e')]['find']({'where':{'name':_0x2960e8,'userProfileId':_0x107902[_0xd6a6('0x5f')]},'raw':!![]})[_0xd6a6('0x2b')](function(_0x48e8d6){if(_0x48e8d6&&_0x48e8d6[_0xd6a6('0x60')]===0x0){return db['UserProfileResource'][_0xd6a6('0x59')]({'name':_0x1eaa62[_0xd6a6('0x38')],'resourceId':_0x1eaa62['id'],'type':_0x48e8d6[_0xd6a6('0x38')],'sectionId':_0x48e8d6['id']},{})['then'](function(){return _0x3ca3d8;});}else{return _0x3ca3d8;}})[_0xd6a6('0x54')](function(_0x4f0346){logger['error'](_0xd6a6('0x64'),_0x4f0346);throw _0x4f0346;});}return _0x3ca3d8;});}})['then'](respondWithResult(_0x3d2c28,0xc9))[_0xd6a6('0x54')](handleError(_0x3d2c28,null));};exports[_0xd6a6('0x2a')]=function(_0x1d6a78,_0x4741ef){if(_0x1d6a78[_0xd6a6('0x5a')]['id']){delete _0x1d6a78[_0xd6a6('0x5a')]['id'];}return db[_0xd6a6('0x3e')][_0xd6a6('0x58')]({'where':{'id':_0x1d6a78['params']['id']}})['then'](handleEntityNotFound(_0x4741ef,null))['then'](saveUpdates(_0x1d6a78[_0xd6a6('0x5a')],null))[_0xd6a6('0x2b')](respondWithResult(_0x4741ef,null))[_0xd6a6('0x54')](handleError(_0x4741ef,null));};exports[_0xd6a6('0x2c')]=function(_0x3417c1,_0x5381d0){return db[_0xd6a6('0x3e')][_0xd6a6('0x58')]({'where':{'id':_0x3417c1[_0xd6a6('0x56')]['id']}})['then'](handleEntityNotFound(_0x5381d0,null))[_0xd6a6('0x2b')](removeEntity(_0x5381d0,null))[_0xd6a6('0x54')](handleError(_0x5381d0,null));};exports[_0xd6a6('0x65')]=function(_0x53e747,_0x435d8b,_0x4540f6){var _0x24dc2f={'raw':![],'where':{}};var _0x2d1518={};var _0x21593c={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xd6a6('0x66')]({'where':{'id':_0x53e747[_0xd6a6('0x56')]['id']}})[_0xd6a6('0x2b')](handleEntityNotFound(_0x435d8b,null))[_0xd6a6('0x2b')](function(_0x151f13){if(_0x151f13){_0x2d1518[_0xd6a6('0x45')]=_['keys'](db[_0xd6a6('0x67')][_0xd6a6('0x3f')]);_0x2d1518[_0xd6a6('0x43')]=_[_0xd6a6('0x42')](_0x53e747[_0xd6a6('0x43')]);_0x2d1518[_0xd6a6('0x44')]=_['intersection'](_0x2d1518['model'],_0x2d1518[_0xd6a6('0x43')]);_0x24dc2f['attributes']=_[_0xd6a6('0x46')](_0x2d1518[_0xd6a6('0x45')],qs[_0xd6a6('0x47')](_0x53e747[_0xd6a6('0x43')][_0xd6a6('0x47')]));_0x24dc2f[_0xd6a6('0x48')]=_0x24dc2f['attributes'][_0xd6a6('0x57')]?_0x24dc2f[_0xd6a6('0x48')]:_0x2d1518['model'];if(!_0x53e747['query']['hasOwnProperty'](_0xd6a6('0x49'))){_0x24dc2f[_0xd6a6('0x22')]=qs['limit'](_0x53e747[_0xd6a6('0x43')]['limit']);_0x24dc2f[_0xd6a6('0x21')]=qs[_0xd6a6('0x21')](_0x53e747['query']['offset']);}_0x24dc2f[_0xd6a6('0x4a')]=qs[_0xd6a6('0x4b')](_0x53e747[_0xd6a6('0x43')][_0xd6a6('0x4b')]);_0x24dc2f[_0xd6a6('0x4c')]=qs[_0xd6a6('0x44')](_[_0xd6a6('0x4d')](_0x53e747[_0xd6a6('0x43')],_0x2d1518[_0xd6a6('0x44')]));_0x24dc2f[_0xd6a6('0x4c')]['VoiceQueueId']=_0x151f13['id'];if(_0x53e747[_0xd6a6('0x43')][_0xd6a6('0x32')]){_0x24dc2f['where']=_['merge'](_0x24dc2f[_0xd6a6('0x4c')],{'$or':_[_0xd6a6('0x34')](_0x24dc2f[_0xd6a6('0x48')],function(_0x15df65){var _0x2911f8={};_0x2911f8[_0x15df65]={'$like':'%'+_0x53e747['query'][_0xd6a6('0x32')]+'%'};return _0x2911f8;})});}_0x24dc2f=_[_0xd6a6('0x4e')]({},_0x24dc2f,_0x53e747[_0xd6a6('0x50')]);return db[_0xd6a6('0x67')]['count']({'where':_0x24dc2f[_0xd6a6('0x4c')]})['then'](function(_0xb24b92){_0x21593c['count']=_0xb24b92;if(_0x53e747['query'][_0xd6a6('0x51')]){_0x24dc2f['include']=[{'all':!![]}];}return db['CmHopper'][_0xd6a6('0x68')](_0x24dc2f);})[_0xd6a6('0x2b')](function(_0x7cd4c){_0x21593c[_0xd6a6('0x53')]=_0x7cd4c;return _0x21593c;});}})[_0xd6a6('0x2b')](respondWithFilteredResult(_0x435d8b,_0x24dc2f))[_0xd6a6('0x54')](handleError(_0x435d8b,null));};exports['getHopperHistories']=function(_0x4e6685,_0x33e68a,_0x35222f){var _0x19cc65={'raw':!![],'where':{}};var _0x6ec606={};var _0x373004={'count':0x0,'rows':[]};return db[_0xd6a6('0x3e')][_0xd6a6('0x66')]({'where':{'id':_0x4e6685[_0xd6a6('0x56')]['id']}})[_0xd6a6('0x2b')](handleEntityNotFound(_0x33e68a,null))[_0xd6a6('0x2b')](function(_0x5167f3){if(_0x5167f3){_0x6ec606[_0xd6a6('0x45')]=_['keys'](db[_0xd6a6('0x69')][_0xd6a6('0x3f')]);_0x6ec606[_0xd6a6('0x43')]=_['keys'](_0x4e6685[_0xd6a6('0x43')]);_0x6ec606['filters']=_['intersection'](_0x6ec606[_0xd6a6('0x45')],_0x6ec606[_0xd6a6('0x43')]);_0x19cc65[_0xd6a6('0x48')]=_[_0xd6a6('0x46')](_0x6ec606[_0xd6a6('0x45')],qs[_0xd6a6('0x47')](_0x4e6685[_0xd6a6('0x43')]['fields']));_0x19cc65[_0xd6a6('0x48')]=_0x19cc65['attributes'][_0xd6a6('0x57')]?_0x19cc65[_0xd6a6('0x48')]:_0x6ec606[_0xd6a6('0x45')];if(!_0x4e6685[_0xd6a6('0x43')][_0xd6a6('0x6a')](_0xd6a6('0x49'))){_0x19cc65[_0xd6a6('0x22')]=qs[_0xd6a6('0x22')](_0x4e6685[_0xd6a6('0x43')][_0xd6a6('0x22')]);_0x19cc65['offset']=qs[_0xd6a6('0x21')](_0x4e6685[_0xd6a6('0x43')][_0xd6a6('0x21')]);}_0x19cc65[_0xd6a6('0x4a')]=qs['sort'](_0x4e6685[_0xd6a6('0x43')][_0xd6a6('0x4b')]);_0x19cc65[_0xd6a6('0x4c')]=qs['filters'](_[_0xd6a6('0x4d')](_0x4e6685['query'],_0x6ec606[_0xd6a6('0x44')]));_0x19cc65['where'][_0xd6a6('0x6b')]=_0x5167f3['id'];if(_0x4e6685['query'][_0xd6a6('0x32')]){_0x19cc65[_0xd6a6('0x4c')]=_[_0xd6a6('0x4e')](_0x19cc65[_0xd6a6('0x4c')],{'$or':_[_0xd6a6('0x34')](_0x19cc65[_0xd6a6('0x48')],function(_0x437c2c){var _0x179f0e={};_0x179f0e[_0x437c2c]={'$like':'%'+_0x4e6685[_0xd6a6('0x43')]['filter']+'%'};return _0x179f0e;})});}_0x19cc65=_[_0xd6a6('0x4e')]({},_0x19cc65,_0x4e6685[_0xd6a6('0x50')]);return db[_0xd6a6('0x69')]['count']({'where':_0x19cc65[_0xd6a6('0x4c')]})['then'](function(_0x3ff3d3){_0x373004[_0xd6a6('0x24')]=_0x3ff3d3;if(_0x4e6685[_0xd6a6('0x43')][_0xd6a6('0x51')]){_0x19cc65['include']=[{'all':!![]}];}return db[_0xd6a6('0x69')][_0xd6a6('0x68')](_0x19cc65);})[_0xd6a6('0x2b')](function(_0x469469){_0x373004[_0xd6a6('0x53')]=_0x469469;return _0x373004;});}})[_0xd6a6('0x2b')](respondWithFilteredResult(_0x33e68a,_0x19cc65))[_0xd6a6('0x54')](handleError(_0x33e68a,null));};exports[_0xd6a6('0x6c')]=function(_0x1a5d0d,_0xd49b2a,_0x4317d0){var _0x546194={'raw':!![],'where':{}};var _0x397ed7={};var _0x566e8b={'count':0x0,'rows':[]};return db[_0xd6a6('0x3e')]['findOne']({'where':{'id':_0x1a5d0d[_0xd6a6('0x56')]['id']}})[_0xd6a6('0x2b')](handleEntityNotFound(_0xd49b2a,null))[_0xd6a6('0x2b')](function(_0x3e7aac){if(_0x3e7aac){_0x397ed7[_0xd6a6('0x45')]=_[_0xd6a6('0x42')](db[_0xd6a6('0x6d')][_0xd6a6('0x3f')]);_0x397ed7[_0xd6a6('0x43')]=_[_0xd6a6('0x42')](_0x1a5d0d['query']);_0x397ed7['filters']=_[_0xd6a6('0x46')](_0x397ed7[_0xd6a6('0x45')],_0x397ed7[_0xd6a6('0x43')]);_0x546194[_0xd6a6('0x48')]=_[_0xd6a6('0x46')](_0x397ed7['model'],qs[_0xd6a6('0x47')](_0x1a5d0d[_0xd6a6('0x43')][_0xd6a6('0x47')]));_0x546194['attributes']=_0x546194[_0xd6a6('0x48')][_0xd6a6('0x57')]?_0x546194[_0xd6a6('0x48')]:_0x397ed7[_0xd6a6('0x45')];if(!_0x1a5d0d['query'][_0xd6a6('0x6a')](_0xd6a6('0x49'))){_0x546194['limit']=qs[_0xd6a6('0x22')](_0x1a5d0d[_0xd6a6('0x43')][_0xd6a6('0x22')]);_0x546194[_0xd6a6('0x21')]=qs[_0xd6a6('0x21')](_0x1a5d0d[_0xd6a6('0x43')][_0xd6a6('0x21')]);}_0x546194['order']=qs['sort'](_0x1a5d0d['query'][_0xd6a6('0x4b')]);_0x546194[_0xd6a6('0x4c')]=qs[_0xd6a6('0x44')](_[_0xd6a6('0x4d')](_0x1a5d0d[_0xd6a6('0x43')],_0x397ed7[_0xd6a6('0x44')]));_0x546194[_0xd6a6('0x4c')][_0xd6a6('0x6b')]=_0x3e7aac['id'];if(_0x1a5d0d[_0xd6a6('0x43')][_0xd6a6('0x32')]){_0x546194[_0xd6a6('0x4c')]=_[_0xd6a6('0x4e')](_0x546194[_0xd6a6('0x4c')],{'$or':_[_0xd6a6('0x34')](_0x546194[_0xd6a6('0x48')],function(_0x35e96e){var _0x5e93da={};_0x5e93da[_0x35e96e]={'$like':'%'+_0x1a5d0d[_0xd6a6('0x43')]['filter']+'%'};return _0x5e93da;})});}_0x546194=_['merge']({},_0x546194,_0x1a5d0d['options']);return db[_0xd6a6('0x6d')][_0xd6a6('0x24')]({'where':_0x546194[_0xd6a6('0x4c')]})['then'](function(_0x5908f7){_0x566e8b[_0xd6a6('0x24')]=_0x5908f7;if(_0x1a5d0d['query'][_0xd6a6('0x51')]){_0x546194[_0xd6a6('0x52')]=[{'all':!![]}];}return db[_0xd6a6('0x6d')]['findAll'](_0x546194);})[_0xd6a6('0x2b')](function(_0x93a9a0){_0x566e8b[_0xd6a6('0x53')]=_0x93a9a0;return _0x566e8b;});}})[_0xd6a6('0x2b')](respondWithFilteredResult(_0xd49b2a,_0x546194))[_0xd6a6('0x54')](handleError(_0xd49b2a,null));};exports['getHopperBlacks']=function(_0x2cc7f3,_0x517ab2,_0x5455c9){var _0x227f31={'raw':!![],'where':{}};var _0x50b8ab={};var _0x51e4bd={'count':0x0,'rows':[]};return db[_0xd6a6('0x3e')][_0xd6a6('0x66')]({'where':{'id':_0x2cc7f3[_0xd6a6('0x56')]['id']}})['then'](handleEntityNotFound(_0x517ab2,null))[_0xd6a6('0x2b')](function(_0x452a4f){if(_0x452a4f){_0x50b8ab['model']=_[_0xd6a6('0x42')](db[_0xd6a6('0x6e')][_0xd6a6('0x3f')]);_0x50b8ab[_0xd6a6('0x43')]=_[_0xd6a6('0x42')](_0x2cc7f3['query']);_0x50b8ab[_0xd6a6('0x44')]=_[_0xd6a6('0x46')](_0x50b8ab[_0xd6a6('0x45')],_0x50b8ab[_0xd6a6('0x43')]);_0x227f31[_0xd6a6('0x48')]=_[_0xd6a6('0x46')](_0x50b8ab[_0xd6a6('0x45')],qs[_0xd6a6('0x47')](_0x2cc7f3[_0xd6a6('0x43')][_0xd6a6('0x47')]));_0x227f31[_0xd6a6('0x48')]=_0x227f31[_0xd6a6('0x48')][_0xd6a6('0x57')]?_0x227f31[_0xd6a6('0x48')]:_0x50b8ab[_0xd6a6('0x45')];if(!_0x2cc7f3['query'][_0xd6a6('0x6a')]('nolimit')){_0x227f31[_0xd6a6('0x22')]=qs[_0xd6a6('0x22')](_0x2cc7f3[_0xd6a6('0x43')][_0xd6a6('0x22')]);_0x227f31['offset']=qs[_0xd6a6('0x21')](_0x2cc7f3[_0xd6a6('0x43')][_0xd6a6('0x21')]);}_0x227f31[_0xd6a6('0x4a')]=qs[_0xd6a6('0x4b')](_0x2cc7f3[_0xd6a6('0x43')][_0xd6a6('0x4b')]);_0x227f31[_0xd6a6('0x4c')]=qs[_0xd6a6('0x44')](_[_0xd6a6('0x4d')](_0x2cc7f3[_0xd6a6('0x43')],_0x50b8ab[_0xd6a6('0x44')]));_0x227f31[_0xd6a6('0x4c')]['VoiceQueueId']=_0x452a4f['id'];if(_0x2cc7f3[_0xd6a6('0x43')]['filter']){_0x227f31['where']=_[_0xd6a6('0x4e')](_0x227f31[_0xd6a6('0x4c')],{'$or':_['map'](_0x227f31[_0xd6a6('0x48')],function(_0x5b1771){var _0x99778d={};_0x99778d[_0x5b1771]={'$like':'%'+_0x2cc7f3['query'][_0xd6a6('0x32')]+'%'};return _0x99778d;})});}_0x227f31=_[_0xd6a6('0x4e')]({},_0x227f31,_0x2cc7f3['options']);return db[_0xd6a6('0x6e')][_0xd6a6('0x24')]({'where':_0x227f31[_0xd6a6('0x4c')]})[_0xd6a6('0x2b')](function(_0x26e698){_0x51e4bd[_0xd6a6('0x24')]=_0x26e698;if(_0x2cc7f3[_0xd6a6('0x43')][_0xd6a6('0x51')]){_0x227f31[_0xd6a6('0x52')]=[{'all':!![]}];}return db[_0xd6a6('0x6e')][_0xd6a6('0x68')](_0x227f31);})[_0xd6a6('0x2b')](function(_0x30f135){_0x51e4bd[_0xd6a6('0x53')]=_0x30f135;return _0x51e4bd;});}})[_0xd6a6('0x2b')](respondWithFilteredResult(_0x517ab2,_0x227f31))['catch'](handleError(_0x517ab2,null));};exports[_0xd6a6('0x6f')]=function(_0x5bd152,_0x24cc4f,_0x3faa6a){var _0x3d50d6={};var _0x1bbdc3={};var _0x5e15b9;var _0x4f81ee;return db['VoiceQueue'][_0xd6a6('0x66')]({'where':{'id':_0x5bd152[_0xd6a6('0x56')]['id']}})[_0xd6a6('0x2b')](handleEntityNotFound(_0x24cc4f,null))[_0xd6a6('0x2b')](function(_0x59ef01){if(_0x59ef01){_0x5e15b9=_0x59ef01;_0x1bbdc3[_0xd6a6('0x45')]=_[_0xd6a6('0x42')](db[_0xd6a6('0x70')]['rawAttributes']);_0x1bbdc3['query']=_[_0xd6a6('0x42')](_0x5bd152['query']);_0x1bbdc3[_0xd6a6('0x44')]=_['intersection'](_0x1bbdc3[_0xd6a6('0x45')],_0x1bbdc3[_0xd6a6('0x43')]);_0x3d50d6['attributes']=_[_0xd6a6('0x46')](_0x1bbdc3[_0xd6a6('0x45')],qs[_0xd6a6('0x47')](_0x5bd152[_0xd6a6('0x43')][_0xd6a6('0x47')]));_0x3d50d6[_0xd6a6('0x48')]=_0x3d50d6[_0xd6a6('0x48')][_0xd6a6('0x57')]?_0x3d50d6[_0xd6a6('0x48')]:_0x1bbdc3[_0xd6a6('0x45')];_0x3d50d6[_0xd6a6('0x4a')]=qs[_0xd6a6('0x4b')](_0x5bd152[_0xd6a6('0x43')][_0xd6a6('0x4b')]);_0x3d50d6[_0xd6a6('0x4c')]=qs[_0xd6a6('0x44')](_[_0xd6a6('0x4d')](_0x5bd152[_0xd6a6('0x43')],_0x1bbdc3[_0xd6a6('0x44')]));if(_0x5bd152[_0xd6a6('0x43')]['filter']){_0x3d50d6[_0xd6a6('0x4c')]=_[_0xd6a6('0x4e')](_0x3d50d6[_0xd6a6('0x4c')],{'$or':_[_0xd6a6('0x34')](_0x3d50d6[_0xd6a6('0x48')],function(_0x1cf382){var _0x2ec65e={};_0x2ec65e[_0x1cf382]={'$like':'%'+_0x5bd152[_0xd6a6('0x43')][_0xd6a6('0x32')]+'%'};return _0x2ec65e;})});}_0x3d50d6=_[_0xd6a6('0x4e')]({},_0x3d50d6,_0x5bd152[_0xd6a6('0x50')]);return _0x5e15b9[_0xd6a6('0x6f')](_0x3d50d6);}})[_0xd6a6('0x2b')](function(_0x204dff){if(_0x204dff){_0x4f81ee=_0x204dff[_0xd6a6('0x57')];if(!_0x5bd152['query'][_0xd6a6('0x6a')](_0xd6a6('0x49'))){_0x3d50d6['limit']=qs[_0xd6a6('0x22')](_0x5bd152[_0xd6a6('0x43')][_0xd6a6('0x22')]);_0x3d50d6[_0xd6a6('0x21')]=qs['offset'](_0x5bd152[_0xd6a6('0x43')][_0xd6a6('0x21')]);}return _0x5e15b9[_0xd6a6('0x6f')](_0x3d50d6);}})[_0xd6a6('0x2b')](function(_0x166b9c){if(_0x166b9c){return _0x166b9c?{'count':_0x4f81ee,'rows':_0x166b9c}:null;}})[_0xd6a6('0x2b')](respondWithResult(_0x24cc4f,null))[_0xd6a6('0x54')](handleError(_0x24cc4f,null));};exports[_0xd6a6('0x71')]=function(_0x263a5c,_0xea9d3d,_0x3f9eeb){var _0x359ddf=_0x263a5c[_0xd6a6('0x5a')][_0xd6a6('0x72')];var _0x4ceff1=_['map'](_0x359ddf,'id');return db[_0xd6a6('0x70')][_0xd6a6('0x68')]({'where':{'id':_0x4ceff1},'attributes':['id'],'include':[{'model':db[_0xd6a6('0x73')],'as':_0xd6a6('0x74'),'attributes':['id','name',_0xd6a6('0x75'),_0xd6a6('0x76'),'interface'],'raw':!![]}]})['then'](function(_0x102137){if(_0x102137){var _0x5e5e34=_['flatMap'](_0x102137,function(_0x39c9d6){var _0x590624=_0x39c9d6['get']({'plain':!![]});_0x590624[_0xd6a6('0x74')][_0xd6a6('0x77')](function(_0x29b0ba){_0x29b0ba['penalty']=_[_0xd6a6('0x58')](_0x359ddf,{'id':_0x590624['id']})[_0xd6a6('0x78')];});return _0x590624[_0xd6a6('0x74')];});return db[_0xd6a6('0x3e')][_0xd6a6('0x58')]({'where':{'id':_0x263a5c[_0xd6a6('0x56')]['id']}})[_0xd6a6('0x2b')](function(_0x19ae9b){return db[_0xd6a6('0x79')][_0xd6a6('0x7a')](function(_0x4f4a03){return _0x19ae9b[_0xd6a6('0x71')](_0x4ceff1,{'transaction':_0x4f4a03})[_0xd6a6('0x2b')](function(){return BPromise[_0xd6a6('0x7b')](_0x359ddf,function(_0x359f8b){return db['TeamVoiceQueue'][_0xd6a6('0x7c')]({'TeamId':_0x359f8b['id'],'VoiceQueueId':_0x263a5c[_0xd6a6('0x56')]['id'],'penalty':_0x359f8b['penalty']},{'transaction':_0x4f4a03});});})[_0xd6a6('0x2b')](function(){return BPromise[_0xd6a6('0x7b')](_0x5e5e34,function(_0x381243){return db['UserVoiceQueue'][_0xd6a6('0x7d')]({'where':{'UserId':_0x381243['id'],'VoiceQueueId':_0x263a5c[_0xd6a6('0x56')]['id']},'defaults':{'penalty':_0x381243[_0xd6a6('0x78')]},'transaction':_0x4f4a03});});})[_0xd6a6('0x2b')](function(){return BPromise['each'](_[_0xd6a6('0x32')](_0x5e5e34,{'online':!![]}),function(_0x281d43){return db[_0xd6a6('0x7e')]['upsert']({'membername':_0x281d43[_0xd6a6('0x38')],'UserId':_0x281d43['id'],'queue_name':_0x19ae9b[_0xd6a6('0x38')],'VoiceQueueId':_0x19ae9b['id'],'interface':_[_0xd6a6('0x7f')](_0x281d43['interface'])?util[_0xd6a6('0x80')](_0xd6a6('0x81'),_0x281d43[_0xd6a6('0x38')]):_0x281d43[_0xd6a6('0x82')],'paused':_0x281d43[_0xd6a6('0x76')]||![],'penalty':_0x281d43['penalty']},{'transaction':_0x4f4a03});});})[_0xd6a6('0x2b')](function(){_0x5e5e34['forEach'](function(_0x516b33){socket['emit'](_0xd6a6('0x83'),{'UserId':_0x516b33['id'],'VoiceQueueId':_0x19ae9b['id']});});});});});}})[_0xd6a6('0x2b')](respondWithStatusCode(_0xea9d3d,null))['catch'](handleError(_0xea9d3d,null));};exports['removeTeams']=function(_0x5aa41f,_0x277b61,_0x1f53dc){return db[_0xd6a6('0x70')][_0xd6a6('0x68')]({'where':{'id':_0x5aa41f[_0xd6a6('0x43')]['ids']},'attributes':['id'],'include':[{'model':db[_0xd6a6('0x73')],'as':_0xd6a6('0x74'),'attributes':['id'],'raw':!![]}]})[_0xd6a6('0x2b')](handleEntityNotFound(_0x277b61,null))['then'](function(_0x43fe0e){var _0x5d35fe=_[_0xd6a6('0x34')](_0x43fe0e,'id');var _0x35637f=[];var _0x3a0a2f=[];var _0x83512f=squel[_0xd6a6('0x84')]();_0x83512f[_0xd6a6('0x85')](_0xd6a6('0x86'))['from'](_0xd6a6('0x87'),'tq')[_0xd6a6('0x88')]('user_has_teams','ut',_0xd6a6('0x89'))[_0xd6a6('0x4c')](_0xd6a6('0x8a'),_0x5aa41f[_0xd6a6('0x56')]['id']);for(var _0x37fe4a=0x0;_0x37fe4a<_0x43fe0e[_0xd6a6('0x57')];_0x37fe4a+=0x1){let _0x358370=_0x43fe0e[_0x37fe4a];for(var _0x2a3325=0x0;_0x2a3325<_0x358370[_0xd6a6('0x74')][_0xd6a6('0x57')];_0x2a3325+=0x1){let _0x2317c3=_0x358370[_0xd6a6('0x74')][_0x2a3325];var _0x1dba8d=_0x83512f[_0xd6a6('0x8b')]();_0x1dba8d[_0xd6a6('0x4c')](_0xd6a6('0x8c'),_0x2317c3['id']);_0x3a0a2f[_0xd6a6('0x8d')](db['sequelize'][_0xd6a6('0x43')](_0x1dba8d[_0xd6a6('0x8e')](),{'type':db['sequelize'][_0xd6a6('0x8f')][_0xd6a6('0x90')]})[_0xd6a6('0x2b')](function(_0x40beb1){if(_0x40beb1[_0xd6a6('0x57')]===0x1){return _0x2317c3['id'];}else{var _0x3c54f8=_['every'](_[_0xd6a6('0x34')](_0x40beb1,_0xd6a6('0x91')),function(_0x1f9d79){return _[_0xd6a6('0x35')](_0x5d35fe,_0x1f9d79);});if(_0x3c54f8){return _0x2317c3['id'];}}}));}}return BPromise['all'](_0x3a0a2f)[_0xd6a6('0x2b')](function(_0x4d10a9){_0x35637f=_(_0x35637f)[_0xd6a6('0x92')](_0x4d10a9)[_0xd6a6('0x93')]()[_0xd6a6('0x37')]();return db[_0xd6a6('0x3e')]['find']({'where':{'id':_0x5aa41f['params']['id']}})['then'](function(_0x18d60f){return db[_0xd6a6('0x79')][_0xd6a6('0x7a')](function(_0x16ff9e){return _0x18d60f['removeTeams'](_0x5aa41f['query'][_0xd6a6('0x94')],{'transaction':_0x16ff9e})[_0xd6a6('0x2b')](function(){if(!_['isEmpty'](_0x35637f)){return _0x18d60f[_0xd6a6('0x95')](_0x35637f,{'transaction':_0x16ff9e})[_0xd6a6('0x2b')](function(){return db[_0xd6a6('0x7e')]['destroy']({'where':{'VoiceQueueId':_0x5aa41f[_0xd6a6('0x56')]['id'],'UserId':_0x35637f},'transaction':_0x16ff9e});});}})['then'](function(){_0x35637f[_0xd6a6('0x77')](function(_0x3ae668){socket[_0xd6a6('0x96')](_0xd6a6('0x97'),{'UserId':_0x3ae668,'VoiceQueueId':_0x18d60f['id']});});});});});});})['then'](respondWithStatusCode(_0x277b61,null))[_0xd6a6('0x54')](handleError(_0x277b61,null));};exports[_0xd6a6('0x98')]=function(_0x2d9051,_0x5e337a,_0x1e958d){var _0x12202b,_0x2a6d38;return db['VoiceQueue'][_0xd6a6('0x58')]({'where':{'id':_0x2d9051['params']['id']}})[_0xd6a6('0x2b')](handleEntityNotFound(_0x5e337a,null))[_0xd6a6('0x2b')](function(_0x520cb8){if(_0x520cb8){_0x2a6d38=_0x520cb8;return _0x520cb8[_0xd6a6('0x98')](_0x2d9051[_0xd6a6('0x5a')][_0xd6a6('0x94')],_[_0xd6a6('0x63')](_0x2d9051[_0xd6a6('0x5a')],[_0xd6a6('0x94'),'id'])||{})['spread'](function(_0x329c21){for(var _0x1082bf=0x0;_0x1082bf<_0x2d9051[_0xd6a6('0x5a')][_0xd6a6('0x94')][_0xd6a6('0x57')];_0x1082bf+=0x1){socket['emit'](_0xd6a6('0x83'),{'UserId':Number(_0x2d9051['body'][_0xd6a6('0x94')][_0x1082bf]),'VoiceQueueId':Number(_0x2d9051[_0xd6a6('0x56')]['id'])});}return _0x329c21;});}})[_0xd6a6('0x2b')](function(_0xfd5db0){_0x12202b=_0xfd5db0||[];if(_0x2a6d38){return db['User']['findAll']({'where':{'id':_0x2d9051[_0xd6a6('0x5a')][_0xd6a6('0x94')]},'attributes':['id',_0xd6a6('0x38'),_0xd6a6('0x75'),_0xd6a6('0x76'),'interface'],'raw':!![]});}})[_0xd6a6('0x2b')](function(_0x377bb3){if(!_[_0xd6a6('0x99')](_0x377bb3)){var _0x186347=[];for(var _0xe8993e=0x0;_0xe8993e<_0x377bb3[_0xd6a6('0x57')];_0xe8993e++){if(_0x377bb3[_0xe8993e][_0xd6a6('0x75')]){_0x186347[_0xd6a6('0x8d')](db[_0xd6a6('0x7e')]['upsert']({'membername':_0x377bb3[_0xe8993e][_0xd6a6('0x38')],'UserId':_0x377bb3[_0xe8993e]['id'],'queue_name':_0x2a6d38[_0xd6a6('0x38')],'VoiceQueueId':_0x2a6d38['id'],'interface':_['isNil'](_0x377bb3[_0xe8993e][_0xd6a6('0x82')])?util['format'](_0xd6a6('0x81'),_0x377bb3[_0xe8993e]['name']):_0x377bb3[_0xe8993e][_0xd6a6('0x82')],'paused':_0x377bb3[_0xe8993e][_0xd6a6('0x76')]||![],'penalty':_0x2d9051[_0xd6a6('0x5a')][_0xd6a6('0x78')]||0x0}));}}return BPromise[_0xd6a6('0x9a')](_0x186347);}})[_0xd6a6('0x2b')](function(){return _0x12202b;})[_0xd6a6('0x2b')](respondWithResult(_0x5e337a,null))[_0xd6a6('0x54')](handleError(_0x5e337a,null));};exports['removeAgents']=function(_0x442796,_0x38983a,_0x312a8b){return db['VoiceQueue']['find']({'where':{'id':_0x442796[_0xd6a6('0x56')]['id']}})['then'](handleEntityNotFound(_0x38983a,null))[_0xd6a6('0x2b')](function(_0x1d59a9){if(_0x1d59a9){return _0x1d59a9[_0xd6a6('0x95')](_0x442796[_0xd6a6('0x43')][_0xd6a6('0x94')])[_0xd6a6('0x2b')](function(){if(_[_0xd6a6('0x9b')](_0x442796[_0xd6a6('0x43')][_0xd6a6('0x94')])){for(var _0x149e05=0x0;_0x149e05<_0x442796[_0xd6a6('0x43')]['ids'][_0xd6a6('0x57')];_0x149e05+=0x1){socket[_0xd6a6('0x96')](_0xd6a6('0x97'),{'UserId':Number(_0x442796[_0xd6a6('0x43')][_0xd6a6('0x94')][_0x149e05]),'VoiceQueueId':Number(_0x442796[_0xd6a6('0x56')]['id'])});}}else{socket[_0xd6a6('0x96')](_0xd6a6('0x97'),{'UserId':Number(_0x442796[_0xd6a6('0x43')][_0xd6a6('0x94')]),'VoiceQueueId':Number(_0x442796[_0xd6a6('0x56')]['id'])});}});}})[_0xd6a6('0x2b')](function(_0x560391){return db[_0xd6a6('0x7e')][_0xd6a6('0x2c')]({'where':{'VoiceQueueId':_0x442796[_0xd6a6('0x56')]['id'],'UserId':_0x442796['query'][_0xd6a6('0x94')]}})[_0xd6a6('0x2b')](function(){return _0x560391;});})[_0xd6a6('0x2b')](respondWithStatusCode(_0x38983a,null))[_0xd6a6('0x54')](handleError(_0x38983a,null));};exports['getAgents']=function(_0x23d054,_0x483ed1,_0xe712fb){var _0x4ce356={};var _0x5f0f42={};var _0x413f2e;var _0x188b58;return db[_0xd6a6('0x3e')][_0xd6a6('0x66')]({'where':{'id':_0x23d054[_0xd6a6('0x56')]['id']}})['then'](handleEntityNotFound(_0x483ed1,null))['then'](function(_0x55724a){if(_0x55724a){_0x413f2e=_0x55724a;_0x5f0f42['model']=_['keys'](db[_0xd6a6('0x73')][_0xd6a6('0x3f')]);_0x5f0f42[_0xd6a6('0x43')]=_[_0xd6a6('0x42')](_0x23d054[_0xd6a6('0x43')]);_0x5f0f42[_0xd6a6('0x44')]=_[_0xd6a6('0x46')](_0x5f0f42['model'],_0x5f0f42[_0xd6a6('0x43')]);_0x4ce356[_0xd6a6('0x48')]=_[_0xd6a6('0x46')](_0x5f0f42[_0xd6a6('0x45')],qs[_0xd6a6('0x47')](_0x23d054[_0xd6a6('0x43')][_0xd6a6('0x47')]));_0x4ce356['attributes']=_0x4ce356[_0xd6a6('0x48')][_0xd6a6('0x57')]?_0x4ce356[_0xd6a6('0x48')]:_0x5f0f42[_0xd6a6('0x45')];_0x4ce356[_0xd6a6('0x4a')]=qs[_0xd6a6('0x4b')](_0x23d054[_0xd6a6('0x43')]['sort']);_0x4ce356[_0xd6a6('0x4c')]=qs[_0xd6a6('0x44')](_['pick'](_0x23d054[_0xd6a6('0x43')],_0x5f0f42[_0xd6a6('0x44')]));if(_0x23d054['query'][_0xd6a6('0x32')]){_0x4ce356[_0xd6a6('0x4c')]=_[_0xd6a6('0x4e')](_0x4ce356['where'],{'$or':_[_0xd6a6('0x34')](_0x4ce356[_0xd6a6('0x48')],function(_0x59bf6a){var _0x44921c={};_0x44921c[_0x59bf6a]={'$like':'%'+_0x23d054[_0xd6a6('0x43')]['filter']+'%'};return _0x44921c;})});}_0x4ce356=_[_0xd6a6('0x4e')]({},_0x4ce356,_0x23d054[_0xd6a6('0x50')]);return _0x413f2e[_0xd6a6('0x9c')](_0x4ce356);}})[_0xd6a6('0x2b')](function(_0xefd141){if(_0xefd141){_0x188b58=_0xefd141[_0xd6a6('0x57')];if(!_0x23d054[_0xd6a6('0x43')][_0xd6a6('0x6a')](_0xd6a6('0x49'))){_0x4ce356[_0xd6a6('0x22')]=qs['limit'](_0x23d054[_0xd6a6('0x43')][_0xd6a6('0x22')]);_0x4ce356[_0xd6a6('0x21')]=qs[_0xd6a6('0x21')](_0x23d054[_0xd6a6('0x43')][_0xd6a6('0x21')]);}return _0x413f2e[_0xd6a6('0x9c')](_0x4ce356);}})[_0xd6a6('0x2b')](function(_0x5aac42){if(_0x5aac42){return _0x5aac42?{'count':_0x188b58,'rows':_0x5aac42}:null;}})[_0xd6a6('0x2b')](respondWithResult(_0x483ed1,null))[_0xd6a6('0x54')](handleError(_0x483ed1,null));};exports[_0xd6a6('0x9d')]=function(_0x4f211f,_0x1d1b2f,_0x15d7dd){var _0x271da0={};var _0x4b2702={};var _0x2f5394;var _0x4d1174;return db[_0xd6a6('0x3e')]['findOne']({'where':{'id':_0x4f211f['params']['id']}})[_0xd6a6('0x2b')](handleEntityNotFound(_0x1d1b2f,null))['then'](function(_0x54249d){if(_0x54249d){_0x2f5394=_0x54249d;_0x4b2702[_0xd6a6('0x45')]=_[_0xd6a6('0x42')](db[_0xd6a6('0x7e')][_0xd6a6('0x3f')]);_0x4b2702[_0xd6a6('0x43')]=_['keys'](_0x4f211f[_0xd6a6('0x43')]);_0x4b2702[_0xd6a6('0x44')]=_[_0xd6a6('0x46')](_0x4b2702[_0xd6a6('0x45')],_0x4b2702['query']);_0x271da0[_0xd6a6('0x48')]=_['intersection'](_0x4b2702[_0xd6a6('0x45')],qs[_0xd6a6('0x47')](_0x4f211f[_0xd6a6('0x43')][_0xd6a6('0x47')]));_0x271da0[_0xd6a6('0x48')]=_0x271da0[_0xd6a6('0x48')]['length']?_0x271da0[_0xd6a6('0x48')]:_0x4b2702[_0xd6a6('0x45')];_0x271da0['order']=qs[_0xd6a6('0x4b')](_0x4f211f['query']['sort']);_0x271da0[_0xd6a6('0x4c')]=qs['filters'](_[_0xd6a6('0x4d')](_0x4f211f[_0xd6a6('0x43')],_0x4b2702[_0xd6a6('0x44')]));if(_0x4f211f[_0xd6a6('0x43')][_0xd6a6('0x32')]){_0x271da0[_0xd6a6('0x4c')]=_['merge'](_0x271da0[_0xd6a6('0x4c')],{'$or':_['map'](_0x271da0[_0xd6a6('0x48')],function(_0x63011f){var _0x3c148d={};_0x3c148d[_0x63011f]={'$like':'%'+_0x4f211f['query'][_0xd6a6('0x32')]+'%'};return _0x3c148d;})});}_0x271da0=_[_0xd6a6('0x4e')]({},_0x271da0,_0x4f211f[_0xd6a6('0x50')]);return _0x2f5394[_0xd6a6('0x9d')](_0x271da0);}})[_0xd6a6('0x2b')](function(_0x200e9e){if(_0x200e9e){_0x4d1174=_0x200e9e[_0xd6a6('0x57')];if(!_0x4f211f[_0xd6a6('0x43')]['hasOwnProperty'](_0xd6a6('0x49'))){_0x271da0[_0xd6a6('0x22')]=qs[_0xd6a6('0x22')](_0x4f211f[_0xd6a6('0x43')][_0xd6a6('0x22')]);_0x271da0[_0xd6a6('0x21')]=qs[_0xd6a6('0x21')](_0x4f211f[_0xd6a6('0x43')][_0xd6a6('0x21')]);}return _0x2f5394['getMembers'](_0x271da0);}})[_0xd6a6('0x2b')](function(_0x5a2a63){return _0x5a2a63?{'count':_0x4d1174,'rows':_0x5a2a63}:null;})[_0xd6a6('0x2b')](respondWithResult(_0x1d1b2f,null))['catch'](handleError(_0x1d1b2f,null));};exports['getLists']=function(_0x563fd5,_0x121021,_0x2eb3d7){var _0x54e818={};var _0x1f9a8f={};var _0x4aa34f;var _0x1f21e4;return db[_0xd6a6('0x3e')]['findOne']({'where':{'id':_0x563fd5[_0xd6a6('0x56')]['id']}})['then'](handleEntityNotFound(_0x121021,null))[_0xd6a6('0x2b')](function(_0x230554){if(_0x230554){_0x4aa34f=_0x230554;_0x1f9a8f['model']=_[_0xd6a6('0x42')](db[_0xd6a6('0x9e')][_0xd6a6('0x3f')]);_0x1f9a8f[_0xd6a6('0x43')]=_[_0xd6a6('0x42')](_0x563fd5[_0xd6a6('0x43')]);_0x1f9a8f[_0xd6a6('0x44')]=_[_0xd6a6('0x46')](_0x1f9a8f[_0xd6a6('0x45')],_0x1f9a8f[_0xd6a6('0x43')]);_0x54e818[_0xd6a6('0x48')]=_['intersection'](_0x1f9a8f[_0xd6a6('0x45')],qs[_0xd6a6('0x47')](_0x563fd5[_0xd6a6('0x43')][_0xd6a6('0x47')]));_0x54e818[_0xd6a6('0x48')]=_0x54e818[_0xd6a6('0x48')]['length']?_0x54e818[_0xd6a6('0x48')]:_0x1f9a8f['model'];_0x54e818[_0xd6a6('0x4a')]=qs[_0xd6a6('0x4b')](_0x563fd5[_0xd6a6('0x43')][_0xd6a6('0x4b')]);_0x54e818[_0xd6a6('0x4c')]=qs['filters'](_['pick'](_0x563fd5['query'],_0x1f9a8f[_0xd6a6('0x44')]));if(_0x563fd5[_0xd6a6('0x43')][_0xd6a6('0x32')]){_0x54e818[_0xd6a6('0x4c')]=_['merge'](_0x54e818[_0xd6a6('0x4c')],{'$or':_[_0xd6a6('0x34')](_0x54e818['attributes'],function(_0x22b7b3){var _0x411751={};_0x411751[_0x22b7b3]={'$like':'%'+_0x563fd5[_0xd6a6('0x43')]['filter']+'%'};return _0x411751;})});}_0x54e818=_['merge']({},_0x54e818,_0x563fd5[_0xd6a6('0x50')]);return _0x4aa34f[_0xd6a6('0x9f')](_0x54e818);}})[_0xd6a6('0x2b')](function(_0x434a77){if(_0x434a77){_0x1f21e4=_0x434a77[_0xd6a6('0x57')];if(!_0x563fd5[_0xd6a6('0x43')][_0xd6a6('0x6a')]('nolimit')){_0x54e818['limit']=qs[_0xd6a6('0x22')](_0x563fd5[_0xd6a6('0x43')]['limit']);_0x54e818[_0xd6a6('0x21')]=qs[_0xd6a6('0x21')](_0x563fd5[_0xd6a6('0x43')][_0xd6a6('0x21')]);}return _0x4aa34f['getLists'](_0x54e818);}})[_0xd6a6('0x2b')](function(_0x193f5c){if(_0x193f5c){return _0x193f5c?{'count':_0x1f21e4,'rows':_0x193f5c}:null;}})['then'](respondWithResult(_0x121021,null))[_0xd6a6('0x54')](handleError(_0x121021,null));};exports[_0xd6a6('0xa0')]=function(_0x4ac6b1,_0x4825d3,_0x1008fa){var _0x418fa0,_0x53764b;return db['VoiceQueue'][_0xd6a6('0x58')]({'where':{'id':_0x4ac6b1['params']['id']}})[_0xd6a6('0x2b')](handleEntityNotFound(_0x4825d3,null))['then'](function(_0x1ae8c3){if(_0x1ae8c3){_0x53764b=_0x1ae8c3;return _0x1ae8c3['addLists'](_0x4ac6b1[_0xd6a6('0x5a')]['ids'],_[_0xd6a6('0x63')](_0x4ac6b1[_0xd6a6('0x5a')],[_0xd6a6('0x94'),'id'])||{});}return null;})[_0xd6a6('0xa1')](function(_0x192527){var _0x1e4a4f;_0x418fa0=_0x192527||[];var _0x524342=[];if(_0x192527){for(var _0x1901d7=0x0;_0x1901d7<_0x192527['length'];_0x1901d7+=0x1){var _0x498f0f=_0x192527[_0x1901d7][_0xd6a6('0x2d')]({'plain':!![]});_0x53764b[_0xd6a6('0xa2')]=_0x4ac6b1[_0xd6a6('0x5a')]['dialCheckDuplicateType']?_0x4ac6b1[_0xd6a6('0x5a')][_0xd6a6('0xa2')]:_0x53764b[_0xd6a6('0xa2')];switch(_0x53764b[_0xd6a6('0xa2')]){case _0xd6a6('0xa3'):_0x1e4a4f=squel[_0xd6a6('0xa4')]()[_0xd6a6('0xa5')](_0xd6a6('0xa6'))[_0xd6a6('0xa7')]([_0xd6a6('0xa8'),_0xd6a6('0xa9'),_0xd6a6('0xaa'),_0xd6a6('0xab'),_0xd6a6('0x6b'),_0xd6a6('0x61'),_0xd6a6('0x62')],squel[_0xd6a6('0x84')]()[_0xd6a6('0x85')](_0xd6a6('0xa8'),_0xd6a6('0xa8'))[_0xd6a6('0x85')](_0xd6a6('0xac'),_0xd6a6('0xa9'))[_0xd6a6('0x85')]('id',_0xd6a6('0xaa'))[_0xd6a6('0x85')](_0x498f0f[_0xd6a6('0xad')][_0xd6a6('0x8e')](),_0xd6a6('0xab'))[_0xd6a6('0x85')](_0x4ac6b1['params']['id'][_0xd6a6('0x8e')](),_0xd6a6('0x6b'))['field']('NOW()',_0xd6a6('0x61'))[_0xd6a6('0x85')]('NOW()','updatedAt')[_0xd6a6('0xae')]('cm_contacts')[_0xd6a6('0x4c')]('deletedAt\x20IS\x20NULL')[_0xd6a6('0x4c')](_0xd6a6('0xaf'),_0x498f0f[_0xd6a6('0xad')][_0xd6a6('0x8e')]())[_0xd6a6('0x4c')](_0xd6a6('0xb0'))[_0xd6a6('0x4c')](_0xd6a6('0xb1'),squel[_0xd6a6('0x84')]()['field'](_0xd6a6('0xb2'))[_0xd6a6('0xae')](_0xd6a6('0xb3'))[_0xd6a6('0x4c')](_0xd6a6('0x8a'),_0x4ac6b1[_0xd6a6('0x56')]['id'][_0xd6a6('0x8e')]()))[_0xd6a6('0x4c')](_0xd6a6('0xb1'),squel['select']()[_0xd6a6('0x85')](_0xd6a6('0xb4'))[_0xd6a6('0xae')](_0xd6a6('0xa6'))['where'](_0xd6a6('0x8a'),_0x4ac6b1[_0xd6a6('0x56')]['id'][_0xd6a6('0x8e')]())))['toString']();break;case'onlyIfOpen':_0x1e4a4f=squel['insert']()[_0xd6a6('0xa5')](_0xd6a6('0xa6'))[_0xd6a6('0xa7')](['phone',_0xd6a6('0xa9'),_0xd6a6('0xaa'),_0xd6a6('0xab'),_0xd6a6('0x6b'),_0xd6a6('0x61'),_0xd6a6('0x62')],squel[_0xd6a6('0x84')]()[_0xd6a6('0x85')]('phone',_0xd6a6('0xa8'))['field'](_0xd6a6('0xac'),'scheduledAt')[_0xd6a6('0x85')]('id',_0xd6a6('0xaa'))[_0xd6a6('0x85')](_0x498f0f[_0xd6a6('0xad')][_0xd6a6('0x8e')](),_0xd6a6('0xab'))[_0xd6a6('0x85')](_0x4ac6b1['params']['id']['toString'](),_0xd6a6('0x6b'))[_0xd6a6('0x85')](_0xd6a6('0xac'),_0xd6a6('0x61'))[_0xd6a6('0x85')]('NOW()',_0xd6a6('0x62'))[_0xd6a6('0xae')](_0xd6a6('0xb5'))[_0xd6a6('0x4c')](_0xd6a6('0xb6'))[_0xd6a6('0x4c')](_0xd6a6('0xaf'),_0x498f0f[_0xd6a6('0xad')]['toString']())['where'](_0xd6a6('0xb0'))[_0xd6a6('0x4c')](_0xd6a6('0xb1'),squel[_0xd6a6('0x84')]()['field'](_0xd6a6('0xb4'))[_0xd6a6('0xae')](_0xd6a6('0xa6'))[_0xd6a6('0x4c')](_0xd6a6('0x8a'),_0x4ac6b1[_0xd6a6('0x56')]['id'][_0xd6a6('0x8e')]())))['toString']();break;default:_0x1e4a4f=squel[_0xd6a6('0xa4')]()['into']('cm_hopper')[_0xd6a6('0xa7')]([_0xd6a6('0xa8'),_0xd6a6('0xa9'),_0xd6a6('0xaa'),_0xd6a6('0xab'),_0xd6a6('0x6b'),_0xd6a6('0x61'),'updatedAt'],squel[_0xd6a6('0x84')]()['field'](_0xd6a6('0xa8'),_0xd6a6('0xa8'))['field']('NOW()',_0xd6a6('0xa9'))['field']('id',_0xd6a6('0xaa'))['field'](_0x498f0f['CmListId'][_0xd6a6('0x8e')](),_0xd6a6('0xab'))[_0xd6a6('0x85')](_0x4ac6b1[_0xd6a6('0x56')]['id'][_0xd6a6('0x8e')](),_0xd6a6('0x6b'))['field'](_0xd6a6('0xac'),'createdAt')[_0xd6a6('0x85')](_0xd6a6('0xac'),_0xd6a6('0x62'))[_0xd6a6('0xae')](_0xd6a6('0xb5'))[_0xd6a6('0x4c')](_0xd6a6('0xb6'))[_0xd6a6('0x4c')](_0xd6a6('0xaf'),_0x498f0f[_0xd6a6('0xad')][_0xd6a6('0x8e')]())[_0xd6a6('0x4c')](_0xd6a6('0xb0')))[_0xd6a6('0x8e')]();}_0x524342[_0xd6a6('0x8d')](db['sequelize']['query'](_0x1e4a4f));}return BPromise['all'](_0x524342);}})['then'](function(){return _0x418fa0;})['then'](respondWithResult(_0x4825d3,null))[_0xd6a6('0x54')](handleError(_0x4825d3,null));};exports[_0xd6a6('0xb7')]=function(_0x2ec8f9,_0x455193,_0x38ce77){return db[_0xd6a6('0x3e')][_0xd6a6('0x58')]({'where':{'id':_0x2ec8f9[_0xd6a6('0x56')]['id']}})[_0xd6a6('0x2b')](handleEntityNotFound(_0x455193,null))['then'](function(_0x9a26b){if(_0x9a26b){return _0x9a26b['removeLists'](_0x2ec8f9['query'][_0xd6a6('0x94')]);}})['then'](function(_0x90f408){if(_0x90f408){return db[_0xd6a6('0x67')][_0xd6a6('0x2c')]({'where':{'ListId':_0x2ec8f9['query'][_0xd6a6('0x94')],'VoiceQueueId':_0x2ec8f9[_0xd6a6('0x56')]['id']}})[_0xd6a6('0x2b')](function(){return _0x90f408;});}})[_0xd6a6('0x2b')](respondWithStatusCode(_0x455193,null))[_0xd6a6('0x54')](handleError(_0x455193,null));};exports[_0xd6a6('0xb8')]=function(_0x1cb484,_0xd259a1,_0x3e91d7){var _0x5a1d9e={};var _0x5ed7f2={};var _0x3d9ded;var _0x51e85b;return db[_0xd6a6('0x3e')][_0xd6a6('0x66')]({'where':{'id':_0x1cb484[_0xd6a6('0x56')]['id']}})[_0xd6a6('0x2b')](handleEntityNotFound(_0xd259a1,null))[_0xd6a6('0x2b')](function(_0x2f6113){if(_0x2f6113){_0x3d9ded=_0x2f6113;_0x5ed7f2[_0xd6a6('0x45')]=_[_0xd6a6('0x42')](db[_0xd6a6('0x9e')][_0xd6a6('0x3f')]);_0x5ed7f2['query']=_['keys'](_0x1cb484['query']);_0x5ed7f2[_0xd6a6('0x44')]=_[_0xd6a6('0x46')](_0x5ed7f2['model'],_0x5ed7f2[_0xd6a6('0x43')]);_0x5a1d9e['attributes']=_['intersection'](_0x5ed7f2[_0xd6a6('0x45')],qs['fields'](_0x1cb484[_0xd6a6('0x43')]['fields']));_0x5a1d9e[_0xd6a6('0x48')]=_0x5a1d9e['attributes'][_0xd6a6('0x57')]?_0x5a1d9e[_0xd6a6('0x48')]:_0x5ed7f2[_0xd6a6('0x45')];_0x5a1d9e[_0xd6a6('0x4a')]=qs[_0xd6a6('0x4b')](_0x1cb484[_0xd6a6('0x43')][_0xd6a6('0x4b')]);_0x5a1d9e['where']=qs[_0xd6a6('0x44')](_['pick'](_0x1cb484[_0xd6a6('0x43')],_0x5ed7f2[_0xd6a6('0x44')]));if(_0x1cb484[_0xd6a6('0x43')][_0xd6a6('0x32')]){_0x5a1d9e['where']=_[_0xd6a6('0x4e')](_0x5a1d9e[_0xd6a6('0x4c')],{'$or':_[_0xd6a6('0x34')](_0x5a1d9e[_0xd6a6('0x48')],function(_0x244886){var _0x495ed9={};_0x495ed9[_0x244886]={'$like':'%'+_0x1cb484['query']['filter']+'%'};return _0x495ed9;})});}_0x5a1d9e=_['merge']({},_0x5a1d9e,_0x1cb484['options']);return _0x3d9ded[_0xd6a6('0xb8')](_0x5a1d9e);}})['then'](function(_0x132e2f){if(_0x132e2f){_0x51e85b=_0x132e2f[_0xd6a6('0x57')];if(!_0x1cb484[_0xd6a6('0x43')]['hasOwnProperty'](_0xd6a6('0x49'))){_0x5a1d9e[_0xd6a6('0x22')]=qs[_0xd6a6('0x22')](_0x1cb484[_0xd6a6('0x43')][_0xd6a6('0x22')]);_0x5a1d9e[_0xd6a6('0x21')]=qs[_0xd6a6('0x21')](_0x1cb484[_0xd6a6('0x43')][_0xd6a6('0x21')]);}return _0x3d9ded[_0xd6a6('0xb8')](_0x5a1d9e);}})[_0xd6a6('0x2b')](function(_0x20257e){if(_0x20257e){return _0x20257e?{'count':_0x51e85b,'rows':_0x20257e}:null;}})[_0xd6a6('0x2b')](respondWithResult(_0xd259a1,null))['catch'](handleError(_0xd259a1,null));};exports[_0xd6a6('0xb9')]=function(_0x47ee3e,_0x527221,_0xa0e791){var _0x4c19e6,_0x8d243b;return db[_0xd6a6('0x3e')][_0xd6a6('0x58')]({'where':{'id':_0x47ee3e[_0xd6a6('0x56')]['id']}})[_0xd6a6('0x2b')](handleEntityNotFound(_0x527221,null))['then'](function(_0xc9359c){if(_0xc9359c){_0x8d243b=_0xc9359c;return _0xc9359c[_0xd6a6('0xb9')](_0x47ee3e[_0xd6a6('0x5a')][_0xd6a6('0x94')],_[_0xd6a6('0x63')](_0x47ee3e[_0xd6a6('0x5a')],['ids','id'])||{});}return null;})[_0xd6a6('0xa1')](function(_0x59c8c7){var _0x46d70a;_0x4c19e6=_0x59c8c7||[];var _0xe153e6=[];if(_0x59c8c7){for(var _0x2b8174=0x0;_0x2b8174<_0x59c8c7['length'];_0x2b8174+=0x1){var _0x15bedf=_0x59c8c7[_0x2b8174][_0xd6a6('0x2d')]({'plain':!![]});_0x46d70a=squel[_0xd6a6('0xa4')]()[_0xd6a6('0xa5')](_0xd6a6('0xba'))[_0xd6a6('0xa7')](['phone',_0xd6a6('0xaa'),_0xd6a6('0xab'),'VoiceQueueId',_0xd6a6('0x61'),'updatedAt'],squel['select']()[_0xd6a6('0x85')](_0xd6a6('0xa8'),_0xd6a6('0xa8'))[_0xd6a6('0x85')]('id',_0xd6a6('0xaa'))['field'](_0x15bedf[_0xd6a6('0xad')][_0xd6a6('0x8e')](),_0xd6a6('0xab'))[_0xd6a6('0x85')](_0x47ee3e[_0xd6a6('0x56')]['id']['toString'](),_0xd6a6('0x6b'))[_0xd6a6('0x85')](_0xd6a6('0xac'),_0xd6a6('0x61'))['field'](_0xd6a6('0xac'),_0xd6a6('0x62'))['from'](_0xd6a6('0xb5'))[_0xd6a6('0x4c')]('deletedAt\x20IS\x20NULL')[_0xd6a6('0x4c')](_0xd6a6('0xaf'),_0x15bedf[_0xd6a6('0xad')]['toString']())[_0xd6a6('0x4c')]('phone\x20IS\x20NOT\x20NULL'))[_0xd6a6('0x8e')]();_0xe153e6[_0xd6a6('0x8d')](db['sequelize'][_0xd6a6('0x43')](_0x46d70a));}return BPromise[_0xd6a6('0x9a')](_0xe153e6);}})[_0xd6a6('0x2b')](function(){return _0x4c19e6;})[_0xd6a6('0x2b')](respondWithResult(_0x527221,null))[_0xd6a6('0x54')](handleError(_0x527221,null));};exports[_0xd6a6('0xbb')]=function(_0x1d0d5b,_0xb3dee0,_0x4bd8e0){return db[_0xd6a6('0x3e')][_0xd6a6('0x58')]({'where':{'id':_0x1d0d5b[_0xd6a6('0x56')]['id']}})['then'](handleEntityNotFound(_0xb3dee0,null))[_0xd6a6('0x2b')](function(_0x5838ce){if(_0x5838ce){return _0x5838ce[_0xd6a6('0xbb')](_0x1d0d5b[_0xd6a6('0x43')][_0xd6a6('0x94')]);}})[_0xd6a6('0x2b')](function(_0x1d3661){if(_0x1d3661){return db[_0xd6a6('0x6e')][_0xd6a6('0x2c')]({'where':{'ListId':_0x1d0d5b[_0xd6a6('0x43')][_0xd6a6('0x94')],'VoiceQueueId':_0x1d0d5b[_0xd6a6('0x56')]['id']}})['then'](function(){return _0x1d3661;});}})['then'](respondWithStatusCode(_0xb3dee0,null))[_0xd6a6('0x54')](handleError(_0xb3dee0,null));};
\ No newline at end of file
+var _0xad15=['keys','fields','length','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','QueueCampaigns','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','createdAt','updatedAt','role','UserProfileSection','getHoppers','findOne','CmHopper','order','VoiceQueueId','rows','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','online','voicePause','interface','flatMap','forEach','penalty','transaction','each','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','emit','userVoiceQueue:save','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','push','sequelize','toString','QueryTypes','every','TeamId','includes','all','compact','ids','userVoiceQueue:remove','addAgents','omit','spread','isEmpty','removeAgents','isArray','getAgents','getMembers','CmList','getLists','addLists','dialCheckDuplicateType','insert','into','cm_hopper','phone','scheduledAt','ContactId','ListId','NOW()','CmListId','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','onlyIfOpen','fromQuery','deletedAt\x20IS\x20NULL','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','zip-dir','request-promise','moment','bluebird','sox','ejs','fs-extra','lodash','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','defaults','redis','localhost','./voiceQueue.socket','register','sendStatus','status','offset','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','VoiceQueues','inbound','outbound','filter','ignore','map','type','find','value','name','UserProfileResource','end','error','stack','index','VoiceQueue','rawAttributes','key','query','filters','intersection','attributes','model','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','catch','show'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0xad15,0x1e0));var _0x5ad1=function(_0x27097a,_0x1b7f8b){_0x27097a=_0x27097a-0x0;var _0x26378b=_0xad15[_0x27097a];return _0x26378b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5ad1('0x0'));var zipdir=require(_0x5ad1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5ad1('0x2'));var moment=require(_0x5ad1('0x3'));var BPromise=require(_0x5ad1('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x5ad1('0x5'));var csv=require('to-csv');var ejs=require(_0x5ad1('0x6'));var fs=require('fs');var fs_extra=require(_0x5ad1('0x7'));var _=require(_0x5ad1('0x8'));var squel=require('squel');var crypto=require(_0x5ad1('0x9'));var jsforce=require(_0x5ad1('0xa'));var deskjs=require(_0x5ad1('0xb'));var toCsv=require(_0x5ad1('0xc'));var querystring=require('querystring');var Papa=require(_0x5ad1('0xd'));var Redis=require(_0x5ad1('0xe'));var authService=require(_0x5ad1('0xf'));var qs=require(_0x5ad1('0x10'));var as=require(_0x5ad1('0x11'));var hardwareService=require(_0x5ad1('0x12'));var logger=require(_0x5ad1('0x13'))(_0x5ad1('0x14'));var utils=require(_0x5ad1('0x15'));var config=require(_0x5ad1('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0x5ad1('0x17')](config[_0x5ad1('0x18')],{'host':_0x5ad1('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5ad1('0x18')]));require(_0x5ad1('0x1a'))[_0x5ad1('0x1b')](socket);function respondWithStatusCode(_0xc2ecba,_0x5572dd){_0x5572dd=_0x5572dd||0xcc;return function(_0x5c8d83){if(_0x5c8d83){return _0xc2ecba[_0x5ad1('0x1c')](_0x5572dd);}return _0xc2ecba[_0x5ad1('0x1d')](_0x5572dd)['end']();};}function respondWithResult(_0x2f87c6,_0xa5d746){_0xa5d746=_0xa5d746||0xc8;return function(_0x4d6dc3){if(_0x4d6dc3){return _0x2f87c6[_0x5ad1('0x1d')](_0xa5d746)['json'](_0x4d6dc3);}};}function respondWithFilteredResult(_0x516e69,_0x260253){return function(_0x36209c){if(_0x36209c){var _0x535bf8=typeof _0x260253[_0x5ad1('0x1e')]==='undefined'&&typeof _0x260253[_0x5ad1('0x1f')]==='undefined';var _0x45fd39=_0x36209c['count'];var _0x13c33a=_0x535bf8?0x0:_0x260253[_0x5ad1('0x1e')];var _0x48ec3a=_0x535bf8?_0x36209c[_0x5ad1('0x20')]:_0x260253['offset']+_0x260253[_0x5ad1('0x1f')];var _0x5661ac;if(_0x48ec3a>=_0x45fd39){_0x48ec3a=_0x45fd39;_0x5661ac=0xc8;}else{_0x5661ac=0xce;}_0x516e69['status'](_0x5661ac);return _0x516e69[_0x5ad1('0x21')](_0x5ad1('0x22'),_0x13c33a+'-'+_0x48ec3a+'/'+_0x45fd39)[_0x5ad1('0x23')](_0x36209c);}return null;};}function patchUpdates(_0x334150){return function(_0x153ba7){try{jsonpatch[_0x5ad1('0x24')](_0x153ba7,_0x334150,!![]);}catch(_0xfe8f33){return BPromise[_0x5ad1('0x25')](_0xfe8f33);}return _0x153ba7[_0x5ad1('0x26')]();};}function saveUpdates(_0x1df79c,_0x3640bd){return function(_0x29e220){if(_0x29e220){return _0x29e220[_0x5ad1('0x27')](_0x1df79c)[_0x5ad1('0x28')](function(_0x5ee038){return _0x5ee038;});}return null;};}function removeEntity(_0x10e9d6,_0x62240e){return function(_0x211a8f){if(_0x211a8f){return _0x211a8f[_0x5ad1('0x29')]()[_0x5ad1('0x28')](function(){var _0x14774a=_0x211a8f[_0x5ad1('0x2a')]({'plain':!![]});var _0x203196=[{'name':_0x5ad1('0x2b'),'value':_0x5ad1('0x2c'),'ignore':![]},{'name':'QueueCampaigns','value':_0x5ad1('0x2d'),'ignore':![]}];var _0x1dede1=_(_0x203196)[_0x5ad1('0x2e')](_0x5ad1('0x2f'))[_0x5ad1('0x30')]('value')['value']();if(_['includes'](_0x1dede1,_0x14774a[_0x5ad1('0x31')])){return;}var _0x1a9a6b=_[_0x5ad1('0x32')](_0x203196,[_0x5ad1('0x33'),_0x14774a[_0x5ad1('0x31')]])[_0x5ad1('0x34')];return db[_0x5ad1('0x35')][_0x5ad1('0x29')]({'where':{'type':_0x1a9a6b,'resourceId':_0x14774a['id']}})[_0x5ad1('0x28')](function(){return _0x211a8f;});})[_0x5ad1('0x28')](function(){_0x10e9d6[_0x5ad1('0x1d')](0xcc)[_0x5ad1('0x36')]();});}};}function handleEntityNotFound(_0x32dd58,_0x37ff2c){return function(_0x5903e8){if(!_0x5903e8){_0x32dd58[_0x5ad1('0x1c')](0x194);}return _0x5903e8;};}function handleError(_0x5d11ae,_0x19e3cc){_0x19e3cc=_0x19e3cc||0x1f4;return function(_0x21fad5){logger[_0x5ad1('0x37')](_0x21fad5[_0x5ad1('0x38')]);if(_0x21fad5['name']){delete _0x21fad5[_0x5ad1('0x34')];}_0x5d11ae[_0x5ad1('0x1d')](_0x19e3cc)['send'](_0x21fad5);};}exports[_0x5ad1('0x39')]=function(_0x169f98,_0x30c8d8){var _0x37e316={},_0x1569aa={},_0x1ba310={'count':0x0,'rows':[]};var _0x542e66=_['map'](db[_0x5ad1('0x3a')][_0x5ad1('0x3b')],function(_0x428a3c){return{'name':_0x428a3c['fieldName'],'type':_0x428a3c[_0x5ad1('0x31')][_0x5ad1('0x3c')]};});_0x1569aa['model']=_['map'](_0x542e66,_0x5ad1('0x34'));_0x1569aa[_0x5ad1('0x3d')]=_['keys'](_0x169f98[_0x5ad1('0x3d')]);_0x1569aa[_0x5ad1('0x3e')]=_[_0x5ad1('0x3f')](_0x1569aa['model'],_0x1569aa['query']);_0x37e316[_0x5ad1('0x40')]=_['intersection'](_0x1569aa['model'],qs['fields'](_0x169f98[_0x5ad1('0x3d')]['fields']));_0x37e316[_0x5ad1('0x40')]=_0x37e316[_0x5ad1('0x40')]['length']?_0x37e316[_0x5ad1('0x40')]:_0x1569aa[_0x5ad1('0x41')];if(!_0x169f98[_0x5ad1('0x3d')][_0x5ad1('0x42')](_0x5ad1('0x43'))){_0x37e316[_0x5ad1('0x1f')]=qs[_0x5ad1('0x1f')](_0x169f98[_0x5ad1('0x3d')][_0x5ad1('0x1f')]);_0x37e316[_0x5ad1('0x1e')]=qs['offset'](_0x169f98[_0x5ad1('0x3d')][_0x5ad1('0x1e')]);}_0x37e316['order']=qs[_0x5ad1('0x44')](_0x169f98[_0x5ad1('0x3d')][_0x5ad1('0x44')]);_0x37e316[_0x5ad1('0x45')]=qs[_0x5ad1('0x3e')](_[_0x5ad1('0x46')](_0x169f98[_0x5ad1('0x3d')],_0x1569aa[_0x5ad1('0x3e')]),_0x542e66);if(_0x169f98['query'][_0x5ad1('0x2e')]){_0x37e316[_0x5ad1('0x45')]=_[_0x5ad1('0x47')](_0x37e316[_0x5ad1('0x45')],{'$or':_[_0x5ad1('0x30')](_0x542e66,function(_0x2b0c3f){if(_0x2b0c3f[_0x5ad1('0x31')]!==_0x5ad1('0x48')){var _0x5ed778={};_0x5ed778[_0x2b0c3f['name']]={'$like':'%'+_0x169f98[_0x5ad1('0x3d')][_0x5ad1('0x2e')]+'%'};return _0x5ed778;}})});}_0x37e316=_[_0x5ad1('0x47')]({},_0x37e316,_0x169f98[_0x5ad1('0x49')]);var _0x5b3884={'where':_0x37e316[_0x5ad1('0x45')]};return db[_0x5ad1('0x3a')]['count'](_0x5b3884)[_0x5ad1('0x28')](function(_0x148e47){_0x1ba310[_0x5ad1('0x20')]=_0x148e47;if(_0x169f98[_0x5ad1('0x3d')][_0x5ad1('0x4a')]){_0x37e316['include']=[{'all':!![]}];}return db[_0x5ad1('0x3a')][_0x5ad1('0x4b')](_0x37e316);})[_0x5ad1('0x28')](function(_0x53accd){_0x1ba310['rows']=_0x53accd;return _0x1ba310;})[_0x5ad1('0x28')](respondWithFilteredResult(_0x30c8d8,_0x37e316))[_0x5ad1('0x4c')](handleError(_0x30c8d8,null));};exports[_0x5ad1('0x4d')]=function(_0x925d0e,_0x5d9634){var _0x4f9a2d={'raw':![],'where':{'id':_0x925d0e['params']['id']}},_0x3977d1={};_0x3977d1['model']=_[_0x5ad1('0x4e')](db[_0x5ad1('0x3a')][_0x5ad1('0x3b')]);_0x3977d1[_0x5ad1('0x3d')]=_[_0x5ad1('0x4e')](_0x925d0e[_0x5ad1('0x3d')]);_0x3977d1[_0x5ad1('0x3e')]=_[_0x5ad1('0x3f')](_0x3977d1[_0x5ad1('0x41')],_0x3977d1[_0x5ad1('0x3d')]);_0x4f9a2d['attributes']=_[_0x5ad1('0x3f')](_0x3977d1[_0x5ad1('0x41')],qs[_0x5ad1('0x4f')](_0x925d0e[_0x5ad1('0x3d')][_0x5ad1('0x4f')]));_0x4f9a2d[_0x5ad1('0x40')]=_0x4f9a2d[_0x5ad1('0x40')][_0x5ad1('0x50')]?_0x4f9a2d[_0x5ad1('0x40')]:_0x3977d1[_0x5ad1('0x41')];if(_0x925d0e['query'][_0x5ad1('0x4a')]){_0x4f9a2d[_0x5ad1('0x51')]=[{'all':!![]}];}_0x4f9a2d=_['merge']({},_0x4f9a2d,_0x925d0e['options']);return db['VoiceQueue'][_0x5ad1('0x32')](_0x4f9a2d)[_0x5ad1('0x28')](handleEntityNotFound(_0x5d9634,null))[_0x5ad1('0x28')](respondWithResult(_0x5d9634,null))['catch'](handleError(_0x5d9634,null));};exports['create']=function(_0x13a2ef,_0x55d559){return db[_0x5ad1('0x3a')][_0x5ad1('0x52')](_0x13a2ef[_0x5ad1('0x53')],{})[_0x5ad1('0x28')](function(_0x1e6ff6){var _0x593ea9=_0x13a2ef[_0x5ad1('0x54')][_0x5ad1('0x2a')]({'plain':!![]});if(!_0x593ea9)throw new Error(_0x5ad1('0x55'));if(_0x593ea9['role']===_0x5ad1('0x54')){var _0xf7c595=_0x1e6ff6[_0x5ad1('0x2a')]({'plain':!![]});var _0x14f5ed=[{'name':'VoiceQueues','value':_0x5ad1('0x2c')},{'name':_0x5ad1('0x56'),'value':_0x5ad1('0x2d')}];var _0x124ea9=_[_0x5ad1('0x32')](_0x14f5ed,[_0x5ad1('0x33'),_0xf7c595[_0x5ad1('0x31')]])['name'];return db['UserProfileSection'][_0x5ad1('0x32')]({'where':{'name':_0x124ea9,'userProfileId':_0x593ea9[_0x5ad1('0x57')]},'raw':!![]})[_0x5ad1('0x28')](function(_0x38e4d7){if(_0x38e4d7&&_0x38e4d7[_0x5ad1('0x58')]===0x0){return db[_0x5ad1('0x35')][_0x5ad1('0x52')]({'name':_0xf7c595[_0x5ad1('0x34')],'resourceId':_0xf7c595['id'],'type':_0x38e4d7[_0x5ad1('0x34')],'sectionId':_0x38e4d7['id']},{})[_0x5ad1('0x28')](function(){return _0x1e6ff6;});}else{return _0x1e6ff6;}})[_0x5ad1('0x4c')](function(_0x317aaa){logger['error'](_0x5ad1('0x59'),_0x317aaa);throw _0x317aaa;});}return _0x1e6ff6;})['then'](respondWithResult(_0x55d559,0xc9))[_0x5ad1('0x4c')](handleError(_0x55d559,null));};exports[_0x5ad1('0x5a')]=function(_0x2bdbd7,_0x34b1cc){var _0x27fd6b={'where':{'id':_0x2bdbd7[_0x5ad1('0x5b')]['id']}},_0xafdcfe={};_0xafdcfe['model']=_[_0x5ad1('0x4e')](db['VoiceQueue'][_0x5ad1('0x3b')]);_0x27fd6b['attributes']=_[_0x5ad1('0x3f')](_0xafdcfe[_0x5ad1('0x41')],qs[_0x5ad1('0x4f')](_0x2bdbd7[_0x5ad1('0x3d')][_0x5ad1('0x4f')]));_0x27fd6b[_0x5ad1('0x40')]=_0x27fd6b[_0x5ad1('0x40')][_0x5ad1('0x50')]?_0x27fd6b['attributes']:_0xafdcfe[_0x5ad1('0x41')];if(_0x2bdbd7[_0x5ad1('0x3d')]['includeAll']){_0x27fd6b['include']=[{'all':!![]}];}_0x27fd6b=_[_0x5ad1('0x47')]({},_0x27fd6b,_0x2bdbd7['options']);return db[_0x5ad1('0x3a')][_0x5ad1('0x32')](_0x27fd6b)[_0x5ad1('0x28')](handleEntityNotFound(_0x34b1cc,null))['then'](function(_0xe39912){if(_0xe39912){var _0x888e6e=_0xe39912[_0x5ad1('0x2a')]({'plain':!![]});_0x888e6e=qs['omit'](_0x888e6e,['id',_0x5ad1('0x5c'),'updatedAt']);_0x2bdbd7[_0x5ad1('0x53')]=_['omit'](_0x2bdbd7[_0x5ad1('0x53')],['id','createdAt',_0x5ad1('0x5d')]);return db['VoiceQueue'][_0x5ad1('0x52')](_[_0x5ad1('0x47')](_0x888e6e,_0x2bdbd7['body']),{'include':_0x2bdbd7[_0x5ad1('0x3d')][_0x5ad1('0x4a')]?[{'all':!![]}]:undefined})['then'](function(_0x57ae46){var _0x3370ce=_0x2bdbd7[_0x5ad1('0x54')][_0x5ad1('0x2a')]({'plain':!![]});if(!_0x3370ce)throw new Error(_0x5ad1('0x55'));if(_0x3370ce[_0x5ad1('0x5e')]===_0x5ad1('0x54')){var _0x1b819f=_0x57ae46[_0x5ad1('0x2a')]({'plain':!![]});var _0x580b81=[{'name':_0x5ad1('0x2b'),'value':_0x5ad1('0x2c')},{'name':'QueueCampaigns','value':_0x5ad1('0x2d')}];var _0x1af3bd=_[_0x5ad1('0x32')](_0x580b81,[_0x5ad1('0x33'),_0x1b819f[_0x5ad1('0x31')]])[_0x5ad1('0x34')];return db[_0x5ad1('0x5f')][_0x5ad1('0x32')]({'where':{'name':_0x1af3bd,'userProfileId':_0x3370ce[_0x5ad1('0x57')]},'raw':!![]})[_0x5ad1('0x28')](function(_0x4f9796){if(_0x4f9796&&_0x4f9796[_0x5ad1('0x58')]===0x0){return db[_0x5ad1('0x35')][_0x5ad1('0x52')]({'name':_0x1b819f[_0x5ad1('0x34')],'resourceId':_0x1b819f['id'],'type':_0x4f9796['name'],'sectionId':_0x4f9796['id']},{})[_0x5ad1('0x28')](function(){return _0x57ae46;});}else{return _0x57ae46;}})[_0x5ad1('0x4c')](function(_0x4c658e){logger[_0x5ad1('0x37')](_0x5ad1('0x59'),_0x4c658e);throw _0x4c658e;});}return _0x57ae46;});}})[_0x5ad1('0x28')](respondWithResult(_0x34b1cc,0xc9))['catch'](handleError(_0x34b1cc,null));};exports[_0x5ad1('0x27')]=function(_0x169800,_0x1067c0){if(_0x169800[_0x5ad1('0x53')]['id']){delete _0x169800[_0x5ad1('0x53')]['id'];}return db[_0x5ad1('0x3a')]['find']({'where':{'id':_0x169800[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x1067c0,null))[_0x5ad1('0x28')](saveUpdates(_0x169800['body'],null))['then'](respondWithResult(_0x1067c0,null))['catch'](handleError(_0x1067c0,null));};exports[_0x5ad1('0x29')]=function(_0x542eb4,_0x4dcf1c){return db[_0x5ad1('0x3a')][_0x5ad1('0x32')]({'where':{'id':_0x542eb4[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x4dcf1c,null))[_0x5ad1('0x28')](removeEntity(_0x4dcf1c,null))[_0x5ad1('0x4c')](handleError(_0x4dcf1c,null));};exports[_0x5ad1('0x60')]=function(_0x149803,_0x2cdd5b,_0x32c271){var _0x58bd2d={'raw':![],'where':{}};var _0x31cd2c={};var _0x270970={'count':0x0,'rows':[]};return db[_0x5ad1('0x3a')][_0x5ad1('0x61')]({'where':{'id':_0x149803[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x2cdd5b,null))[_0x5ad1('0x28')](function(_0x378bba){if(_0x378bba){_0x31cd2c['model']=_[_0x5ad1('0x4e')](db[_0x5ad1('0x62')][_0x5ad1('0x3b')]);_0x31cd2c[_0x5ad1('0x3d')]=_['keys'](_0x149803['query']);_0x31cd2c[_0x5ad1('0x3e')]=_[_0x5ad1('0x3f')](_0x31cd2c['model'],_0x31cd2c[_0x5ad1('0x3d')]);_0x58bd2d[_0x5ad1('0x40')]=_[_0x5ad1('0x3f')](_0x31cd2c[_0x5ad1('0x41')],qs[_0x5ad1('0x4f')](_0x149803[_0x5ad1('0x3d')][_0x5ad1('0x4f')]));_0x58bd2d[_0x5ad1('0x40')]=_0x58bd2d['attributes']['length']?_0x58bd2d[_0x5ad1('0x40')]:_0x31cd2c[_0x5ad1('0x41')];if(!_0x149803[_0x5ad1('0x3d')][_0x5ad1('0x42')]('nolimit')){_0x58bd2d[_0x5ad1('0x1f')]=qs[_0x5ad1('0x1f')](_0x149803[_0x5ad1('0x3d')][_0x5ad1('0x1f')]);_0x58bd2d[_0x5ad1('0x1e')]=qs[_0x5ad1('0x1e')](_0x149803[_0x5ad1('0x3d')][_0x5ad1('0x1e')]);}_0x58bd2d[_0x5ad1('0x63')]=qs[_0x5ad1('0x44')](_0x149803[_0x5ad1('0x3d')][_0x5ad1('0x44')]);_0x58bd2d[_0x5ad1('0x45')]=qs['filters'](_[_0x5ad1('0x46')](_0x149803[_0x5ad1('0x3d')],_0x31cd2c[_0x5ad1('0x3e')]));_0x58bd2d[_0x5ad1('0x45')][_0x5ad1('0x64')]=_0x378bba['id'];if(_0x149803[_0x5ad1('0x3d')]['filter']){_0x58bd2d[_0x5ad1('0x45')]=_[_0x5ad1('0x47')](_0x58bd2d[_0x5ad1('0x45')],{'$or':_[_0x5ad1('0x30')](_0x58bd2d[_0x5ad1('0x40')],function(_0x44e6ff){var _0x4b6ec4={};_0x4b6ec4[_0x44e6ff]={'$like':'%'+_0x149803['query'][_0x5ad1('0x2e')]+'%'};return _0x4b6ec4;})});}_0x58bd2d=_[_0x5ad1('0x47')]({},_0x58bd2d,_0x149803[_0x5ad1('0x49')]);return db[_0x5ad1('0x62')][_0x5ad1('0x20')]({'where':_0x58bd2d['where']})['then'](function(_0x59d6c3){_0x270970[_0x5ad1('0x20')]=_0x59d6c3;if(_0x149803[_0x5ad1('0x3d')][_0x5ad1('0x4a')]){_0x58bd2d[_0x5ad1('0x51')]=[{'all':!![]}];}return db[_0x5ad1('0x62')][_0x5ad1('0x4b')](_0x58bd2d);})[_0x5ad1('0x28')](function(_0x430a8c){_0x270970[_0x5ad1('0x65')]=_0x430a8c;return _0x270970;});}})['then'](respondWithFilteredResult(_0x2cdd5b,_0x58bd2d))['catch'](handleError(_0x2cdd5b,null));};exports[_0x5ad1('0x66')]=function(_0x4acb7d,_0x24e599,_0x150a48){var _0x36b3db={'raw':!![],'where':{}};var _0x28708c={};var _0x42df39={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x5ad1('0x61')]({'where':{'id':_0x4acb7d[_0x5ad1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x24e599,null))[_0x5ad1('0x28')](function(_0x27195f){if(_0x27195f){_0x28708c[_0x5ad1('0x41')]=_[_0x5ad1('0x4e')](db['CmHopperHistory']['rawAttributes']);_0x28708c[_0x5ad1('0x3d')]=_['keys'](_0x4acb7d[_0x5ad1('0x3d')]);_0x28708c[_0x5ad1('0x3e')]=_[_0x5ad1('0x3f')](_0x28708c[_0x5ad1('0x41')],_0x28708c[_0x5ad1('0x3d')]);_0x36b3db[_0x5ad1('0x40')]=_[_0x5ad1('0x3f')](_0x28708c[_0x5ad1('0x41')],qs[_0x5ad1('0x4f')](_0x4acb7d['query'][_0x5ad1('0x4f')]));_0x36b3db['attributes']=_0x36b3db[_0x5ad1('0x40')][_0x5ad1('0x50')]?_0x36b3db[_0x5ad1('0x40')]:_0x28708c[_0x5ad1('0x41')];if(!_0x4acb7d[_0x5ad1('0x3d')][_0x5ad1('0x42')]('nolimit')){_0x36b3db[_0x5ad1('0x1f')]=qs[_0x5ad1('0x1f')](_0x4acb7d[_0x5ad1('0x3d')][_0x5ad1('0x1f')]);_0x36b3db[_0x5ad1('0x1e')]=qs['offset'](_0x4acb7d[_0x5ad1('0x3d')][_0x5ad1('0x1e')]);}_0x36b3db[_0x5ad1('0x63')]=qs[_0x5ad1('0x44')](_0x4acb7d['query'][_0x5ad1('0x44')]);_0x36b3db[_0x5ad1('0x45')]=qs[_0x5ad1('0x3e')](_[_0x5ad1('0x46')](_0x4acb7d[_0x5ad1('0x3d')],_0x28708c['filters']));_0x36b3db[_0x5ad1('0x45')][_0x5ad1('0x64')]=_0x27195f['id'];if(_0x4acb7d[_0x5ad1('0x3d')]['filter']){_0x36b3db['where']=_[_0x5ad1('0x47')](_0x36b3db[_0x5ad1('0x45')],{'$or':_['map'](_0x36b3db[_0x5ad1('0x40')],function(_0x2ad0be){var _0x1598b8={};_0x1598b8[_0x2ad0be]={'$like':'%'+_0x4acb7d[_0x5ad1('0x3d')][_0x5ad1('0x2e')]+'%'};return _0x1598b8;})});}_0x36b3db=_[_0x5ad1('0x47')]({},_0x36b3db,_0x4acb7d[_0x5ad1('0x49')]);return db[_0x5ad1('0x67')][_0x5ad1('0x20')]({'where':_0x36b3db['where']})[_0x5ad1('0x28')](function(_0x18a090){_0x42df39['count']=_0x18a090;if(_0x4acb7d['query']['includeAll']){_0x36b3db[_0x5ad1('0x51')]=[{'all':!![]}];}return db[_0x5ad1('0x67')][_0x5ad1('0x4b')](_0x36b3db);})[_0x5ad1('0x28')](function(_0x585cb0){_0x42df39['rows']=_0x585cb0;return _0x42df39;});}})[_0x5ad1('0x28')](respondWithFilteredResult(_0x24e599,_0x36b3db))[_0x5ad1('0x4c')](handleError(_0x24e599,null));};exports[_0x5ad1('0x68')]=function(_0x2b9147,_0x36ca12,_0x452f43){var _0x1cb707={'raw':!![],'where':{}};var _0x5d1410={};var _0x7da14c={'count':0x0,'rows':[]};return db[_0x5ad1('0x3a')]['findOne']({'where':{'id':_0x2b9147[_0x5ad1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x36ca12,null))[_0x5ad1('0x28')](function(_0x398a5d){if(_0x398a5d){_0x5d1410['model']=_[_0x5ad1('0x4e')](db[_0x5ad1('0x69')][_0x5ad1('0x3b')]);_0x5d1410[_0x5ad1('0x3d')]=_['keys'](_0x2b9147[_0x5ad1('0x3d')]);_0x5d1410['filters']=_[_0x5ad1('0x3f')](_0x5d1410[_0x5ad1('0x41')],_0x5d1410[_0x5ad1('0x3d')]);_0x1cb707['attributes']=_[_0x5ad1('0x3f')](_0x5d1410['model'],qs['fields'](_0x2b9147[_0x5ad1('0x3d')][_0x5ad1('0x4f')]));_0x1cb707['attributes']=_0x1cb707[_0x5ad1('0x40')][_0x5ad1('0x50')]?_0x1cb707[_0x5ad1('0x40')]:_0x5d1410[_0x5ad1('0x41')];if(!_0x2b9147[_0x5ad1('0x3d')]['hasOwnProperty'](_0x5ad1('0x43'))){_0x1cb707[_0x5ad1('0x1f')]=qs[_0x5ad1('0x1f')](_0x2b9147[_0x5ad1('0x3d')][_0x5ad1('0x1f')]);_0x1cb707[_0x5ad1('0x1e')]=qs[_0x5ad1('0x1e')](_0x2b9147[_0x5ad1('0x3d')]['offset']);}_0x1cb707['order']=qs[_0x5ad1('0x44')](_0x2b9147[_0x5ad1('0x3d')][_0x5ad1('0x44')]);_0x1cb707[_0x5ad1('0x45')]=qs['filters'](_[_0x5ad1('0x46')](_0x2b9147['query'],_0x5d1410[_0x5ad1('0x3e')]));_0x1cb707[_0x5ad1('0x45')][_0x5ad1('0x64')]=_0x398a5d['id'];if(_0x2b9147[_0x5ad1('0x3d')]['filter']){_0x1cb707['where']=_[_0x5ad1('0x47')](_0x1cb707[_0x5ad1('0x45')],{'$or':_[_0x5ad1('0x30')](_0x1cb707[_0x5ad1('0x40')],function(_0x2546d1){var _0x54106b={};_0x54106b[_0x2546d1]={'$like':'%'+_0x2b9147['query'][_0x5ad1('0x2e')]+'%'};return _0x54106b;})});}_0x1cb707=_[_0x5ad1('0x47')]({},_0x1cb707,_0x2b9147[_0x5ad1('0x49')]);return db['CmHopperFinal']['count']({'where':_0x1cb707[_0x5ad1('0x45')]})[_0x5ad1('0x28')](function(_0x46b618){_0x7da14c[_0x5ad1('0x20')]=_0x46b618;if(_0x2b9147['query'][_0x5ad1('0x4a')]){_0x1cb707[_0x5ad1('0x51')]=[{'all':!![]}];}return db[_0x5ad1('0x69')][_0x5ad1('0x4b')](_0x1cb707);})[_0x5ad1('0x28')](function(_0xa4c316){_0x7da14c[_0x5ad1('0x65')]=_0xa4c316;return _0x7da14c;});}})[_0x5ad1('0x28')](respondWithFilteredResult(_0x36ca12,_0x1cb707))['catch'](handleError(_0x36ca12,null));};exports[_0x5ad1('0x6a')]=function(_0x4d3bce,_0x598528,_0x21e08e){var _0x4324bd={'raw':!![],'where':{}};var _0x4ba0e4={};var _0x44fead={'count':0x0,'rows':[]};return db[_0x5ad1('0x3a')][_0x5ad1('0x61')]({'where':{'id':_0x4d3bce[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x598528,null))['then'](function(_0x3a7603){if(_0x3a7603){_0x4ba0e4[_0x5ad1('0x41')]=_[_0x5ad1('0x4e')](db[_0x5ad1('0x6b')][_0x5ad1('0x3b')]);_0x4ba0e4['query']=_[_0x5ad1('0x4e')](_0x4d3bce[_0x5ad1('0x3d')]);_0x4ba0e4[_0x5ad1('0x3e')]=_[_0x5ad1('0x3f')](_0x4ba0e4[_0x5ad1('0x41')],_0x4ba0e4['query']);_0x4324bd[_0x5ad1('0x40')]=_[_0x5ad1('0x3f')](_0x4ba0e4[_0x5ad1('0x41')],qs['fields'](_0x4d3bce[_0x5ad1('0x3d')][_0x5ad1('0x4f')]));_0x4324bd[_0x5ad1('0x40')]=_0x4324bd['attributes'][_0x5ad1('0x50')]?_0x4324bd[_0x5ad1('0x40')]:_0x4ba0e4['model'];if(!_0x4d3bce[_0x5ad1('0x3d')]['hasOwnProperty'](_0x5ad1('0x43'))){_0x4324bd['limit']=qs['limit'](_0x4d3bce['query'][_0x5ad1('0x1f')]);_0x4324bd[_0x5ad1('0x1e')]=qs[_0x5ad1('0x1e')](_0x4d3bce[_0x5ad1('0x3d')][_0x5ad1('0x1e')]);}_0x4324bd[_0x5ad1('0x63')]=qs[_0x5ad1('0x44')](_0x4d3bce[_0x5ad1('0x3d')][_0x5ad1('0x44')]);_0x4324bd[_0x5ad1('0x45')]=qs[_0x5ad1('0x3e')](_['pick'](_0x4d3bce[_0x5ad1('0x3d')],_0x4ba0e4[_0x5ad1('0x3e')]));_0x4324bd['where']['VoiceQueueId']=_0x3a7603['id'];if(_0x4d3bce[_0x5ad1('0x3d')][_0x5ad1('0x2e')]){_0x4324bd[_0x5ad1('0x45')]=_[_0x5ad1('0x47')](_0x4324bd[_0x5ad1('0x45')],{'$or':_['map'](_0x4324bd['attributes'],function(_0x386221){var _0x289ab7={};_0x289ab7[_0x386221]={'$like':'%'+_0x4d3bce[_0x5ad1('0x3d')][_0x5ad1('0x2e')]+'%'};return _0x289ab7;})});}_0x4324bd=_[_0x5ad1('0x47')]({},_0x4324bd,_0x4d3bce[_0x5ad1('0x49')]);return db[_0x5ad1('0x6b')][_0x5ad1('0x20')]({'where':_0x4324bd[_0x5ad1('0x45')]})[_0x5ad1('0x28')](function(_0x1c770e){_0x44fead['count']=_0x1c770e;if(_0x4d3bce['query'][_0x5ad1('0x4a')]){_0x4324bd[_0x5ad1('0x51')]=[{'all':!![]}];}return db[_0x5ad1('0x6b')][_0x5ad1('0x4b')](_0x4324bd);})[_0x5ad1('0x28')](function(_0x5108bb){_0x44fead[_0x5ad1('0x65')]=_0x5108bb;return _0x44fead;});}})[_0x5ad1('0x28')](respondWithFilteredResult(_0x598528,_0x4324bd))[_0x5ad1('0x4c')](handleError(_0x598528,null));};exports[_0x5ad1('0x6c')]=function(_0x598d25,_0x23aa87,_0x249f0f){var _0x3339ec={};var _0x3dc87e={};var _0x474198;var _0x24cc93;return db['VoiceQueue'][_0x5ad1('0x61')]({'where':{'id':_0x598d25['params']['id']}})['then'](handleEntityNotFound(_0x23aa87,null))['then'](function(_0x2692fe){if(_0x2692fe){_0x474198=_0x2692fe;_0x3dc87e[_0x5ad1('0x41')]=_['keys'](db[_0x5ad1('0x6d')][_0x5ad1('0x3b')]);_0x3dc87e[_0x5ad1('0x3d')]=_['keys'](_0x598d25[_0x5ad1('0x3d')]);_0x3dc87e[_0x5ad1('0x3e')]=_[_0x5ad1('0x3f')](_0x3dc87e[_0x5ad1('0x41')],_0x3dc87e[_0x5ad1('0x3d')]);_0x3339ec['attributes']=_[_0x5ad1('0x3f')](_0x3dc87e[_0x5ad1('0x41')],qs['fields'](_0x598d25[_0x5ad1('0x3d')][_0x5ad1('0x4f')]));_0x3339ec[_0x5ad1('0x40')]=_0x3339ec['attributes'][_0x5ad1('0x50')]?_0x3339ec[_0x5ad1('0x40')]:_0x3dc87e['model'];_0x3339ec[_0x5ad1('0x63')]=qs[_0x5ad1('0x44')](_0x598d25[_0x5ad1('0x3d')][_0x5ad1('0x44')]);_0x3339ec[_0x5ad1('0x45')]=qs[_0x5ad1('0x3e')](_['pick'](_0x598d25[_0x5ad1('0x3d')],_0x3dc87e[_0x5ad1('0x3e')]));if(_0x598d25[_0x5ad1('0x3d')]['filter']){_0x3339ec[_0x5ad1('0x45')]=_[_0x5ad1('0x47')](_0x3339ec['where'],{'$or':_[_0x5ad1('0x30')](_0x3339ec[_0x5ad1('0x40')],function(_0x48c8a6){var _0x542a24={};_0x542a24[_0x48c8a6]={'$like':'%'+_0x598d25[_0x5ad1('0x3d')][_0x5ad1('0x2e')]+'%'};return _0x542a24;})});}_0x3339ec=_[_0x5ad1('0x47')]({},_0x3339ec,_0x598d25[_0x5ad1('0x49')]);return _0x474198[_0x5ad1('0x6c')](_0x3339ec);}})['then'](function(_0x56c395){if(_0x56c395){_0x24cc93=_0x56c395['length'];if(!_0x598d25[_0x5ad1('0x3d')][_0x5ad1('0x42')](_0x5ad1('0x43'))){_0x3339ec[_0x5ad1('0x1f')]=qs[_0x5ad1('0x1f')](_0x598d25[_0x5ad1('0x3d')][_0x5ad1('0x1f')]);_0x3339ec[_0x5ad1('0x1e')]=qs[_0x5ad1('0x1e')](_0x598d25[_0x5ad1('0x3d')][_0x5ad1('0x1e')]);}return _0x474198['getTeams'](_0x3339ec);}})[_0x5ad1('0x28')](function(_0x3e8274){if(_0x3e8274){return _0x3e8274?{'count':_0x24cc93,'rows':_0x3e8274}:null;}})[_0x5ad1('0x28')](respondWithResult(_0x23aa87,null))[_0x5ad1('0x4c')](handleError(_0x23aa87,null));};exports[_0x5ad1('0x6e')]=function(_0x8b0908,_0x57aa77,_0x62f218){var _0x29a18b=_0x8b0908[_0x5ad1('0x53')][_0x5ad1('0x6f')];var _0x1588a6=_[_0x5ad1('0x30')](_0x29a18b,'id');return db[_0x5ad1('0x6d')][_0x5ad1('0x4b')]({'where':{'id':_0x1588a6},'attributes':['id'],'include':[{'model':db[_0x5ad1('0x70')],'as':_0x5ad1('0x71'),'attributes':['id',_0x5ad1('0x34'),_0x5ad1('0x72'),_0x5ad1('0x73'),_0x5ad1('0x74')],'raw':!![]}]})['then'](function(_0x13fcdb){if(_0x13fcdb){var _0x46835f=_[_0x5ad1('0x75')](_0x13fcdb,function(_0xb28a52){var _0x48d40f=_0xb28a52[_0x5ad1('0x2a')]({'plain':!![]});_0x48d40f[_0x5ad1('0x71')][_0x5ad1('0x76')](function(_0xc2188){_0xc2188[_0x5ad1('0x77')]=_['find'](_0x29a18b,{'id':_0x48d40f['id']})['penalty'];});return _0x48d40f[_0x5ad1('0x71')];});return db[_0x5ad1('0x3a')]['find']({'where':{'id':_0x8b0908[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](function(_0x1222e5){return db['sequelize'][_0x5ad1('0x78')](function(_0x19e243){return _0x1222e5['addTeams'](_0x1588a6,{'transaction':_0x19e243})[_0x5ad1('0x28')](function(){return BPromise[_0x5ad1('0x79')](_0x29a18b,function(_0xa24972){return db['TeamVoiceQueue']['upsert']({'TeamId':_0xa24972['id'],'VoiceQueueId':_0x8b0908[_0x5ad1('0x5b')]['id'],'penalty':_0xa24972[_0x5ad1('0x77')]},{'transaction':_0x19e243});});})[_0x5ad1('0x28')](function(){return BPromise[_0x5ad1('0x79')](_0x46835f,function(_0x20c7c1){return db[_0x5ad1('0x7a')][_0x5ad1('0x7b')]({'where':{'UserId':_0x20c7c1['id'],'VoiceQueueId':_0x8b0908[_0x5ad1('0x5b')]['id']},'defaults':{'penalty':_0x20c7c1[_0x5ad1('0x77')]},'transaction':_0x19e243});});})[_0x5ad1('0x28')](function(){return BPromise[_0x5ad1('0x79')](_[_0x5ad1('0x2e')](_0x46835f,{'online':!![]}),function(_0x5aa796){return db[_0x5ad1('0x7c')][_0x5ad1('0x7d')]({'membername':_0x5aa796[_0x5ad1('0x34')],'UserId':_0x5aa796['id'],'queue_name':_0x1222e5[_0x5ad1('0x34')],'VoiceQueueId':_0x1222e5['id'],'interface':_[_0x5ad1('0x7e')](_0x5aa796['interface'])?util[_0x5ad1('0x7f')](_0x5ad1('0x80'),_0x5aa796[_0x5ad1('0x34')]):_0x5aa796[_0x5ad1('0x74')],'paused':_0x5aa796[_0x5ad1('0x73')]||![],'penalty':_0x5aa796[_0x5ad1('0x77')]},{'transaction':_0x19e243});});})[_0x5ad1('0x28')](function(){_0x46835f[_0x5ad1('0x76')](function(_0x17227e){socket[_0x5ad1('0x81')](_0x5ad1('0x82'),{'UserId':_0x17227e['id'],'VoiceQueueId':_0x1222e5['id']});});});});});}})['then'](respondWithStatusCode(_0x57aa77,null))[_0x5ad1('0x4c')](handleError(_0x57aa77,null));};exports['removeTeams']=function(_0x518707,_0x510876,_0x575f67){return db['Team']['findAll']({'where':{'id':_0x518707[_0x5ad1('0x3d')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x5ad1('0x71'),'attributes':['id'],'raw':!![]}]})[_0x5ad1('0x28')](handleEntityNotFound(_0x510876,null))[_0x5ad1('0x28')](function(_0x4cec7f){var _0x1a1368=_[_0x5ad1('0x30')](_0x4cec7f,'id');var _0x3c6677=[];var _0x58dc50=[];var _0x1b4a26=squel[_0x5ad1('0x83')]();_0x1b4a26[_0x5ad1('0x84')](_0x5ad1('0x85'))[_0x5ad1('0x86')]('team_has_voice_queues','tq')[_0x5ad1('0x87')](_0x5ad1('0x88'),'ut',_0x5ad1('0x89'))['where'](_0x5ad1('0x8a'),_0x518707[_0x5ad1('0x5b')]['id']);for(var _0x46219b=0x0;_0x46219b<_0x4cec7f[_0x5ad1('0x50')];_0x46219b+=0x1){let _0xd80d63=_0x4cec7f[_0x46219b];for(var _0x2b9ae4=0x0;_0x2b9ae4<_0xd80d63[_0x5ad1('0x71')]['length'];_0x2b9ae4+=0x1){let _0x40f160=_0xd80d63[_0x5ad1('0x71')][_0x2b9ae4];var _0x539fc8=_0x1b4a26[_0x5ad1('0x5a')]();_0x539fc8[_0x5ad1('0x45')]('ut.UserId\x20=\x20?',_0x40f160['id']);_0x58dc50[_0x5ad1('0x8b')](db[_0x5ad1('0x8c')][_0x5ad1('0x3d')](_0x539fc8[_0x5ad1('0x8d')](),{'type':db[_0x5ad1('0x8c')][_0x5ad1('0x8e')]['SELECT']})[_0x5ad1('0x28')](function(_0x4a97f1){if(_0x4a97f1[_0x5ad1('0x50')]===0x1){return _0x40f160['id'];}else{var _0x3c3079=_[_0x5ad1('0x8f')](_['map'](_0x4a97f1,_0x5ad1('0x90')),function(_0x202adc){return _[_0x5ad1('0x91')](_0x1a1368,_0x202adc);});if(_0x3c3079){return _0x40f160['id'];}}}));}}return BPromise[_0x5ad1('0x92')](_0x58dc50)[_0x5ad1('0x28')](function(_0x51e486){_0x3c6677=_(_0x3c6677)['union'](_0x51e486)[_0x5ad1('0x93')]()[_0x5ad1('0x33')]();return db[_0x5ad1('0x3a')][_0x5ad1('0x32')]({'where':{'id':_0x518707[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](function(_0x30d832){return db[_0x5ad1('0x8c')][_0x5ad1('0x78')](function(_0x5daddb){return _0x30d832['removeTeams'](_0x518707[_0x5ad1('0x3d')][_0x5ad1('0x94')],{'transaction':_0x5daddb})['then'](function(){if(!_['isEmpty'](_0x3c6677)){return _0x30d832['removeAgents'](_0x3c6677,{'transaction':_0x5daddb})[_0x5ad1('0x28')](function(){return db['UserVoiceQueueRt'][_0x5ad1('0x29')]({'where':{'VoiceQueueId':_0x518707['params']['id'],'UserId':_0x3c6677},'transaction':_0x5daddb});});}})[_0x5ad1('0x28')](function(){_0x3c6677[_0x5ad1('0x76')](function(_0x2ce524){socket[_0x5ad1('0x81')](_0x5ad1('0x95'),{'UserId':_0x2ce524,'VoiceQueueId':_0x30d832['id']});});});});});});})[_0x5ad1('0x28')](respondWithStatusCode(_0x510876,null))[_0x5ad1('0x4c')](handleError(_0x510876,null));};exports[_0x5ad1('0x96')]=function(_0x1bc282,_0xe3be5c,_0x221476){var _0x41a8f9,_0x533867;return db['VoiceQueue']['find']({'where':{'id':_0x1bc282['params']['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0xe3be5c,null))[_0x5ad1('0x28')](function(_0x36e245){if(_0x36e245){_0x533867=_0x36e245;return _0x36e245[_0x5ad1('0x96')](_0x1bc282[_0x5ad1('0x53')][_0x5ad1('0x94')],_[_0x5ad1('0x97')](_0x1bc282[_0x5ad1('0x53')],[_0x5ad1('0x94'),'id'])||{})[_0x5ad1('0x98')](function(_0x262453){for(var _0x547f6a=0x0;_0x547f6a<_0x1bc282['body'][_0x5ad1('0x94')]['length'];_0x547f6a+=0x1){socket[_0x5ad1('0x81')](_0x5ad1('0x82'),{'UserId':Number(_0x1bc282[_0x5ad1('0x53')][_0x5ad1('0x94')][_0x547f6a]),'VoiceQueueId':Number(_0x1bc282['params']['id'])});}return _0x262453;});}})[_0x5ad1('0x28')](function(_0x44cc74){_0x41a8f9=_0x44cc74||[];if(_0x533867){return db[_0x5ad1('0x70')][_0x5ad1('0x4b')]({'where':{'id':_0x1bc282[_0x5ad1('0x53')][_0x5ad1('0x94')]},'attributes':['id','name','online',_0x5ad1('0x73'),_0x5ad1('0x74')],'raw':!![]});}})[_0x5ad1('0x28')](function(_0x59436e){if(!_[_0x5ad1('0x99')](_0x59436e)){var _0x57f965=[];for(var _0x37a792=0x0;_0x37a792<_0x59436e[_0x5ad1('0x50')];_0x37a792++){if(_0x59436e[_0x37a792][_0x5ad1('0x72')]){_0x57f965[_0x5ad1('0x8b')](db['UserVoiceQueueRt'][_0x5ad1('0x7d')]({'membername':_0x59436e[_0x37a792][_0x5ad1('0x34')],'UserId':_0x59436e[_0x37a792]['id'],'queue_name':_0x533867['name'],'VoiceQueueId':_0x533867['id'],'interface':_['isNil'](_0x59436e[_0x37a792][_0x5ad1('0x74')])?util['format'](_0x5ad1('0x80'),_0x59436e[_0x37a792][_0x5ad1('0x34')]):_0x59436e[_0x37a792][_0x5ad1('0x74')],'paused':_0x59436e[_0x37a792][_0x5ad1('0x73')]||![],'penalty':_0x1bc282[_0x5ad1('0x53')][_0x5ad1('0x77')]||0x0}));}}return BPromise[_0x5ad1('0x92')](_0x57f965);}})[_0x5ad1('0x28')](function(){return _0x41a8f9;})[_0x5ad1('0x28')](respondWithResult(_0xe3be5c,null))[_0x5ad1('0x4c')](handleError(_0xe3be5c,null));};exports[_0x5ad1('0x9a')]=function(_0x3fb9ea,_0x2ab276,_0x2f310f){return db[_0x5ad1('0x3a')]['find']({'where':{'id':_0x3fb9ea[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x2ab276,null))[_0x5ad1('0x28')](function(_0x39ee8e){if(_0x39ee8e){return _0x39ee8e['removeAgents'](_0x3fb9ea[_0x5ad1('0x3d')][_0x5ad1('0x94')])[_0x5ad1('0x28')](function(){if(_[_0x5ad1('0x9b')](_0x3fb9ea['query'][_0x5ad1('0x94')])){for(var _0x18f913=0x0;_0x18f913<_0x3fb9ea['query'][_0x5ad1('0x94')]['length'];_0x18f913+=0x1){socket[_0x5ad1('0x81')]('userVoiceQueue:remove',{'UserId':Number(_0x3fb9ea[_0x5ad1('0x3d')][_0x5ad1('0x94')][_0x18f913]),'VoiceQueueId':Number(_0x3fb9ea['params']['id'])});}}else{socket[_0x5ad1('0x81')](_0x5ad1('0x95'),{'UserId':Number(_0x3fb9ea[_0x5ad1('0x3d')]['ids']),'VoiceQueueId':Number(_0x3fb9ea['params']['id'])});}});}})[_0x5ad1('0x28')](function(_0x497884){return db[_0x5ad1('0x7c')]['destroy']({'where':{'VoiceQueueId':_0x3fb9ea[_0x5ad1('0x5b')]['id'],'UserId':_0x3fb9ea[_0x5ad1('0x3d')][_0x5ad1('0x94')]}})[_0x5ad1('0x28')](function(){return _0x497884;});})[_0x5ad1('0x28')](respondWithStatusCode(_0x2ab276,null))[_0x5ad1('0x4c')](handleError(_0x2ab276,null));};exports[_0x5ad1('0x9c')]=function(_0x323624,_0x342835,_0x1c33de){var _0x425615={};var _0x2bf372={};var _0xac18d1;var _0x3fd4bf;return db['VoiceQueue'][_0x5ad1('0x61')]({'where':{'id':_0x323624[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x342835,null))[_0x5ad1('0x28')](function(_0x244749){if(_0x244749){_0xac18d1=_0x244749;_0x2bf372[_0x5ad1('0x41')]=_[_0x5ad1('0x4e')](db[_0x5ad1('0x70')][_0x5ad1('0x3b')]);_0x2bf372[_0x5ad1('0x3d')]=_[_0x5ad1('0x4e')](_0x323624[_0x5ad1('0x3d')]);_0x2bf372[_0x5ad1('0x3e')]=_[_0x5ad1('0x3f')](_0x2bf372[_0x5ad1('0x41')],_0x2bf372[_0x5ad1('0x3d')]);_0x425615[_0x5ad1('0x40')]=_['intersection'](_0x2bf372[_0x5ad1('0x41')],qs[_0x5ad1('0x4f')](_0x323624[_0x5ad1('0x3d')][_0x5ad1('0x4f')]));_0x425615[_0x5ad1('0x40')]=_0x425615[_0x5ad1('0x40')][_0x5ad1('0x50')]?_0x425615['attributes']:_0x2bf372[_0x5ad1('0x41')];_0x425615[_0x5ad1('0x63')]=qs['sort'](_0x323624[_0x5ad1('0x3d')]['sort']);_0x425615[_0x5ad1('0x45')]=qs['filters'](_[_0x5ad1('0x46')](_0x323624[_0x5ad1('0x3d')],_0x2bf372['filters']));if(_0x323624[_0x5ad1('0x3d')][_0x5ad1('0x2e')]){_0x425615[_0x5ad1('0x45')]=_[_0x5ad1('0x47')](_0x425615['where'],{'$or':_[_0x5ad1('0x30')](_0x425615[_0x5ad1('0x40')],function(_0x118db3){var _0x4a96a2={};_0x4a96a2[_0x118db3]={'$like':'%'+_0x323624['query'][_0x5ad1('0x2e')]+'%'};return _0x4a96a2;})});}_0x425615=_[_0x5ad1('0x47')]({},_0x425615,_0x323624[_0x5ad1('0x49')]);return _0xac18d1[_0x5ad1('0x9c')](_0x425615);}})[_0x5ad1('0x28')](function(_0x234ed9){if(_0x234ed9){_0x3fd4bf=_0x234ed9[_0x5ad1('0x50')];if(!_0x323624[_0x5ad1('0x3d')][_0x5ad1('0x42')](_0x5ad1('0x43'))){_0x425615[_0x5ad1('0x1f')]=qs[_0x5ad1('0x1f')](_0x323624[_0x5ad1('0x3d')][_0x5ad1('0x1f')]);_0x425615[_0x5ad1('0x1e')]=qs[_0x5ad1('0x1e')](_0x323624['query'][_0x5ad1('0x1e')]);}return _0xac18d1[_0x5ad1('0x9c')](_0x425615);}})[_0x5ad1('0x28')](function(_0x44f7e9){if(_0x44f7e9){return _0x44f7e9?{'count':_0x3fd4bf,'rows':_0x44f7e9}:null;}})[_0x5ad1('0x28')](respondWithResult(_0x342835,null))[_0x5ad1('0x4c')](handleError(_0x342835,null));};exports[_0x5ad1('0x9d')]=function(_0x28cbda,_0x406a9c,_0x1ff2a6){var _0x74850b={};var _0x57d701={};var _0x12e415;var _0x16f3f9;return db[_0x5ad1('0x3a')][_0x5ad1('0x61')]({'where':{'id':_0x28cbda[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x406a9c,null))[_0x5ad1('0x28')](function(_0x545078){if(_0x545078){_0x12e415=_0x545078;_0x57d701['model']=_[_0x5ad1('0x4e')](db[_0x5ad1('0x7c')][_0x5ad1('0x3b')]);_0x57d701[_0x5ad1('0x3d')]=_[_0x5ad1('0x4e')](_0x28cbda[_0x5ad1('0x3d')]);_0x57d701[_0x5ad1('0x3e')]=_[_0x5ad1('0x3f')](_0x57d701[_0x5ad1('0x41')],_0x57d701[_0x5ad1('0x3d')]);_0x74850b[_0x5ad1('0x40')]=_[_0x5ad1('0x3f')](_0x57d701['model'],qs[_0x5ad1('0x4f')](_0x28cbda[_0x5ad1('0x3d')][_0x5ad1('0x4f')]));_0x74850b[_0x5ad1('0x40')]=_0x74850b['attributes']['length']?_0x74850b[_0x5ad1('0x40')]:_0x57d701[_0x5ad1('0x41')];_0x74850b[_0x5ad1('0x63')]=qs[_0x5ad1('0x44')](_0x28cbda[_0x5ad1('0x3d')][_0x5ad1('0x44')]);_0x74850b[_0x5ad1('0x45')]=qs[_0x5ad1('0x3e')](_[_0x5ad1('0x46')](_0x28cbda[_0x5ad1('0x3d')],_0x57d701['filters']));if(_0x28cbda[_0x5ad1('0x3d')][_0x5ad1('0x2e')]){_0x74850b[_0x5ad1('0x45')]=_[_0x5ad1('0x47')](_0x74850b[_0x5ad1('0x45')],{'$or':_[_0x5ad1('0x30')](_0x74850b[_0x5ad1('0x40')],function(_0x5db57c){var _0xb7fc82={};_0xb7fc82[_0x5db57c]={'$like':'%'+_0x28cbda[_0x5ad1('0x3d')][_0x5ad1('0x2e')]+'%'};return _0xb7fc82;})});}_0x74850b=_[_0x5ad1('0x47')]({},_0x74850b,_0x28cbda[_0x5ad1('0x49')]);return _0x12e415[_0x5ad1('0x9d')](_0x74850b);}})['then'](function(_0x4645cc){if(_0x4645cc){_0x16f3f9=_0x4645cc['length'];if(!_0x28cbda[_0x5ad1('0x3d')][_0x5ad1('0x42')](_0x5ad1('0x43'))){_0x74850b['limit']=qs[_0x5ad1('0x1f')](_0x28cbda[_0x5ad1('0x3d')][_0x5ad1('0x1f')]);_0x74850b[_0x5ad1('0x1e')]=qs[_0x5ad1('0x1e')](_0x28cbda[_0x5ad1('0x3d')][_0x5ad1('0x1e')]);}return _0x12e415[_0x5ad1('0x9d')](_0x74850b);}})[_0x5ad1('0x28')](function(_0x39a7d){return _0x39a7d?{'count':_0x16f3f9,'rows':_0x39a7d}:null;})[_0x5ad1('0x28')](respondWithResult(_0x406a9c,null))['catch'](handleError(_0x406a9c,null));};exports['getLists']=function(_0x53781b,_0x3f1642,_0x24461c){var _0x2ce9d6={};var _0x314b87={};var _0x3a64aa;var _0x43f3c6;return db[_0x5ad1('0x3a')][_0x5ad1('0x61')]({'where':{'id':_0x53781b[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x3f1642,null))[_0x5ad1('0x28')](function(_0x4cb5a3){if(_0x4cb5a3){_0x3a64aa=_0x4cb5a3;_0x314b87[_0x5ad1('0x41')]=_['keys'](db[_0x5ad1('0x9e')][_0x5ad1('0x3b')]);_0x314b87[_0x5ad1('0x3d')]=_['keys'](_0x53781b[_0x5ad1('0x3d')]);_0x314b87['filters']=_[_0x5ad1('0x3f')](_0x314b87['model'],_0x314b87[_0x5ad1('0x3d')]);_0x2ce9d6['attributes']=_[_0x5ad1('0x3f')](_0x314b87['model'],qs['fields'](_0x53781b[_0x5ad1('0x3d')][_0x5ad1('0x4f')]));_0x2ce9d6['attributes']=_0x2ce9d6[_0x5ad1('0x40')][_0x5ad1('0x50')]?_0x2ce9d6[_0x5ad1('0x40')]:_0x314b87[_0x5ad1('0x41')];_0x2ce9d6['order']=qs[_0x5ad1('0x44')](_0x53781b[_0x5ad1('0x3d')]['sort']);_0x2ce9d6[_0x5ad1('0x45')]=qs['filters'](_[_0x5ad1('0x46')](_0x53781b[_0x5ad1('0x3d')],_0x314b87[_0x5ad1('0x3e')]));if(_0x53781b['query'][_0x5ad1('0x2e')]){_0x2ce9d6['where']=_[_0x5ad1('0x47')](_0x2ce9d6[_0x5ad1('0x45')],{'$or':_[_0x5ad1('0x30')](_0x2ce9d6[_0x5ad1('0x40')],function(_0x26e282){var _0x7d2729={};_0x7d2729[_0x26e282]={'$like':'%'+_0x53781b['query'][_0x5ad1('0x2e')]+'%'};return _0x7d2729;})});}_0x2ce9d6=_[_0x5ad1('0x47')]({},_0x2ce9d6,_0x53781b[_0x5ad1('0x49')]);return _0x3a64aa[_0x5ad1('0x9f')](_0x2ce9d6);}})['then'](function(_0x250e46){if(_0x250e46){_0x43f3c6=_0x250e46[_0x5ad1('0x50')];if(!_0x53781b[_0x5ad1('0x3d')][_0x5ad1('0x42')](_0x5ad1('0x43'))){_0x2ce9d6[_0x5ad1('0x1f')]=qs[_0x5ad1('0x1f')](_0x53781b[_0x5ad1('0x3d')][_0x5ad1('0x1f')]);_0x2ce9d6['offset']=qs[_0x5ad1('0x1e')](_0x53781b[_0x5ad1('0x3d')][_0x5ad1('0x1e')]);}return _0x3a64aa['getLists'](_0x2ce9d6);}})[_0x5ad1('0x28')](function(_0x51310b){if(_0x51310b){return _0x51310b?{'count':_0x43f3c6,'rows':_0x51310b}:null;}})[_0x5ad1('0x28')](respondWithResult(_0x3f1642,null))[_0x5ad1('0x4c')](handleError(_0x3f1642,null));};exports[_0x5ad1('0xa0')]=function(_0x38238c,_0x57813d,_0x52abe2){var _0x3d4e37,_0x360fea;return db[_0x5ad1('0x3a')]['find']({'where':{'id':_0x38238c['params']['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x57813d,null))['then'](function(_0x2ab624){if(_0x2ab624){_0x360fea=_0x2ab624;return _0x2ab624[_0x5ad1('0xa0')](_0x38238c[_0x5ad1('0x53')][_0x5ad1('0x94')],_[_0x5ad1('0x97')](_0x38238c[_0x5ad1('0x53')],[_0x5ad1('0x94'),'id'])||{});}return null;})[_0x5ad1('0x98')](function(_0x56f348){var _0x170d10;_0x3d4e37=_0x56f348||[];var _0x16a177=[];if(_0x56f348){for(var _0x364467=0x0;_0x364467<_0x56f348[_0x5ad1('0x50')];_0x364467+=0x1){var _0x433187=_0x56f348[_0x364467][_0x5ad1('0x2a')]({'plain':!![]});_0x360fea[_0x5ad1('0xa1')]=_0x38238c['body'][_0x5ad1('0xa1')]?_0x38238c['body']['dialCheckDuplicateType']:_0x360fea[_0x5ad1('0xa1')];switch(_0x360fea['dialCheckDuplicateType']){case'always':_0x170d10=squel[_0x5ad1('0xa2')]()[_0x5ad1('0xa3')](_0x5ad1('0xa4'))['fromQuery']([_0x5ad1('0xa5'),_0x5ad1('0xa6'),_0x5ad1('0xa7'),_0x5ad1('0xa8'),_0x5ad1('0x64'),_0x5ad1('0x5c'),_0x5ad1('0x5d')],squel[_0x5ad1('0x83')]()[_0x5ad1('0x84')]('phone','phone')['field'](_0x5ad1('0xa9'),_0x5ad1('0xa6'))[_0x5ad1('0x84')]('id',_0x5ad1('0xa7'))['field'](_0x433187[_0x5ad1('0xaa')][_0x5ad1('0x8d')](),_0x5ad1('0xa8'))[_0x5ad1('0x84')](_0x38238c[_0x5ad1('0x5b')]['id'][_0x5ad1('0x8d')](),_0x5ad1('0x64'))[_0x5ad1('0x84')](_0x5ad1('0xa9'),_0x5ad1('0x5c'))['field'](_0x5ad1('0xa9'),_0x5ad1('0x5d'))[_0x5ad1('0x86')](_0x5ad1('0xab'))[_0x5ad1('0x45')]('deletedAt\x20IS\x20NULL')[_0x5ad1('0x45')](_0x5ad1('0xac'),_0x433187[_0x5ad1('0xaa')]['toString']())['where'](_0x5ad1('0xad'))[_0x5ad1('0x45')]('phone\x20NOT\x20IN\x20(?)',squel[_0x5ad1('0x83')]()[_0x5ad1('0x84')](_0x5ad1('0xae'))[_0x5ad1('0x86')](_0x5ad1('0xaf'))[_0x5ad1('0x45')](_0x5ad1('0x8a'),_0x38238c[_0x5ad1('0x5b')]['id'][_0x5ad1('0x8d')]()))['where'](_0x5ad1('0xb0'),squel['select']()[_0x5ad1('0x84')](_0x5ad1('0xb1'))[_0x5ad1('0x86')](_0x5ad1('0xa4'))['where'](_0x5ad1('0x8a'),_0x38238c[_0x5ad1('0x5b')]['id'][_0x5ad1('0x8d')]())))[_0x5ad1('0x8d')]();break;case _0x5ad1('0xb2'):_0x170d10=squel[_0x5ad1('0xa2')]()[_0x5ad1('0xa3')](_0x5ad1('0xa4'))[_0x5ad1('0xb3')]([_0x5ad1('0xa5'),_0x5ad1('0xa6'),_0x5ad1('0xa7'),_0x5ad1('0xa8'),_0x5ad1('0x64'),_0x5ad1('0x5c'),_0x5ad1('0x5d')],squel['select']()['field']('phone',_0x5ad1('0xa5'))[_0x5ad1('0x84')](_0x5ad1('0xa9'),_0x5ad1('0xa6'))[_0x5ad1('0x84')]('id','ContactId')['field'](_0x433187[_0x5ad1('0xaa')][_0x5ad1('0x8d')](),_0x5ad1('0xa8'))['field'](_0x38238c[_0x5ad1('0x5b')]['id'][_0x5ad1('0x8d')](),_0x5ad1('0x64'))[_0x5ad1('0x84')](_0x5ad1('0xa9'),_0x5ad1('0x5c'))[_0x5ad1('0x84')]('NOW()',_0x5ad1('0x5d'))['from']('cm_contacts')[_0x5ad1('0x45')]('deletedAt\x20IS\x20NULL')['where'](_0x5ad1('0xac'),_0x433187[_0x5ad1('0xaa')]['toString']())['where'](_0x5ad1('0xad'))['where'](_0x5ad1('0xb0'),squel['select']()[_0x5ad1('0x84')](_0x5ad1('0xb1'))[_0x5ad1('0x86')]('cm_hopper')[_0x5ad1('0x45')]('VoiceQueueId\x20=\x20?',_0x38238c[_0x5ad1('0x5b')]['id'][_0x5ad1('0x8d')]())))[_0x5ad1('0x8d')]();break;default:_0x170d10=squel[_0x5ad1('0xa2')]()[_0x5ad1('0xa3')]('cm_hopper')[_0x5ad1('0xb3')]([_0x5ad1('0xa5'),_0x5ad1('0xa6'),'ContactId',_0x5ad1('0xa8'),'VoiceQueueId',_0x5ad1('0x5c'),'updatedAt'],squel[_0x5ad1('0x83')]()[_0x5ad1('0x84')](_0x5ad1('0xa5'),'phone')['field'](_0x5ad1('0xa9'),_0x5ad1('0xa6'))[_0x5ad1('0x84')]('id','ContactId')[_0x5ad1('0x84')](_0x433187[_0x5ad1('0xaa')][_0x5ad1('0x8d')](),'ListId')[_0x5ad1('0x84')](_0x38238c[_0x5ad1('0x5b')]['id'][_0x5ad1('0x8d')](),_0x5ad1('0x64'))[_0x5ad1('0x84')](_0x5ad1('0xa9'),_0x5ad1('0x5c'))['field'](_0x5ad1('0xa9'),_0x5ad1('0x5d'))['from']('cm_contacts')[_0x5ad1('0x45')](_0x5ad1('0xb4'))[_0x5ad1('0x45')](_0x5ad1('0xac'),_0x433187[_0x5ad1('0xaa')][_0x5ad1('0x8d')]())[_0x5ad1('0x45')]('phone\x20IS\x20NOT\x20NULL'))['toString']();}_0x16a177[_0x5ad1('0x8b')](db[_0x5ad1('0x8c')][_0x5ad1('0x3d')](_0x170d10));}return BPromise[_0x5ad1('0x92')](_0x16a177);}})[_0x5ad1('0x28')](function(){return _0x3d4e37;})[_0x5ad1('0x28')](respondWithResult(_0x57813d,null))[_0x5ad1('0x4c')](handleError(_0x57813d,null));};exports[_0x5ad1('0xb5')]=function(_0x115b10,_0x77ef9b,_0x5821c0){return db[_0x5ad1('0x3a')]['find']({'where':{'id':_0x115b10['params']['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x77ef9b,null))[_0x5ad1('0x28')](function(_0x37ff15){if(_0x37ff15){return _0x37ff15['removeLists'](_0x115b10[_0x5ad1('0x3d')][_0x5ad1('0x94')]);}})[_0x5ad1('0x28')](function(_0xafd15c){if(_0xafd15c){return db[_0x5ad1('0x62')][_0x5ad1('0x29')]({'where':{'ListId':_0x115b10[_0x5ad1('0x3d')]['ids'],'VoiceQueueId':_0x115b10[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](function(){return _0xafd15c;});}})[_0x5ad1('0x28')](respondWithStatusCode(_0x77ef9b,null))[_0x5ad1('0x4c')](handleError(_0x77ef9b,null));};exports[_0x5ad1('0xb6')]=function(_0x57e64c,_0x5049df,_0x42b8a6){var _0x2ee757={};var _0x91c551={};var _0x59bc4d;var _0x35633c;return db[_0x5ad1('0x3a')]['findOne']({'where':{'id':_0x57e64c[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x5049df,null))[_0x5ad1('0x28')](function(_0x56d071){if(_0x56d071){_0x59bc4d=_0x56d071;_0x91c551[_0x5ad1('0x41')]=_['keys'](db['CmList'][_0x5ad1('0x3b')]);_0x91c551[_0x5ad1('0x3d')]=_['keys'](_0x57e64c[_0x5ad1('0x3d')]);_0x91c551[_0x5ad1('0x3e')]=_[_0x5ad1('0x3f')](_0x91c551[_0x5ad1('0x41')],_0x91c551[_0x5ad1('0x3d')]);_0x2ee757[_0x5ad1('0x40')]=_[_0x5ad1('0x3f')](_0x91c551[_0x5ad1('0x41')],qs[_0x5ad1('0x4f')](_0x57e64c[_0x5ad1('0x3d')][_0x5ad1('0x4f')]));_0x2ee757[_0x5ad1('0x40')]=_0x2ee757['attributes'][_0x5ad1('0x50')]?_0x2ee757[_0x5ad1('0x40')]:_0x91c551[_0x5ad1('0x41')];_0x2ee757[_0x5ad1('0x63')]=qs[_0x5ad1('0x44')](_0x57e64c[_0x5ad1('0x3d')][_0x5ad1('0x44')]);_0x2ee757[_0x5ad1('0x45')]=qs['filters'](_[_0x5ad1('0x46')](_0x57e64c[_0x5ad1('0x3d')],_0x91c551[_0x5ad1('0x3e')]));if(_0x57e64c[_0x5ad1('0x3d')][_0x5ad1('0x2e')]){_0x2ee757[_0x5ad1('0x45')]=_['merge'](_0x2ee757[_0x5ad1('0x45')],{'$or':_[_0x5ad1('0x30')](_0x2ee757['attributes'],function(_0x3548ce){var _0x291c07={};_0x291c07[_0x3548ce]={'$like':'%'+_0x57e64c[_0x5ad1('0x3d')][_0x5ad1('0x2e')]+'%'};return _0x291c07;})});}_0x2ee757=_['merge']({},_0x2ee757,_0x57e64c[_0x5ad1('0x49')]);return _0x59bc4d[_0x5ad1('0xb6')](_0x2ee757);}})[_0x5ad1('0x28')](function(_0x1d5a17){if(_0x1d5a17){_0x35633c=_0x1d5a17[_0x5ad1('0x50')];if(!_0x57e64c['query'][_0x5ad1('0x42')]('nolimit')){_0x2ee757['limit']=qs[_0x5ad1('0x1f')](_0x57e64c[_0x5ad1('0x3d')]['limit']);_0x2ee757['offset']=qs['offset'](_0x57e64c[_0x5ad1('0x3d')][_0x5ad1('0x1e')]);}return _0x59bc4d[_0x5ad1('0xb6')](_0x2ee757);}})[_0x5ad1('0x28')](function(_0x187287){if(_0x187287){return _0x187287?{'count':_0x35633c,'rows':_0x187287}:null;}})['then'](respondWithResult(_0x5049df,null))[_0x5ad1('0x4c')](handleError(_0x5049df,null));};exports['addBlackLists']=function(_0x222e54,_0x31880a,_0x46a1e4){var _0x112645,_0x5db09e;return db[_0x5ad1('0x3a')][_0x5ad1('0x32')]({'where':{'id':_0x222e54['params']['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x31880a,null))[_0x5ad1('0x28')](function(_0x5c2636){if(_0x5c2636){_0x5db09e=_0x5c2636;return _0x5c2636[_0x5ad1('0xb7')](_0x222e54['body'][_0x5ad1('0x94')],_[_0x5ad1('0x97')](_0x222e54[_0x5ad1('0x53')],[_0x5ad1('0x94'),'id'])||{});}return null;})['spread'](function(_0x3480e8){var _0xfe73d6;_0x112645=_0x3480e8||[];var _0x1a8bee=[];if(_0x3480e8){for(var _0x30873d=0x0;_0x30873d<_0x3480e8[_0x5ad1('0x50')];_0x30873d+=0x1){var _0x221720=_0x3480e8[_0x30873d]['get']({'plain':!![]});_0xfe73d6=squel['insert']()[_0x5ad1('0xa3')](_0x5ad1('0xb8'))[_0x5ad1('0xb3')]([_0x5ad1('0xa5'),_0x5ad1('0xa7'),_0x5ad1('0xa8'),_0x5ad1('0x64'),'createdAt',_0x5ad1('0x5d')],squel[_0x5ad1('0x83')]()[_0x5ad1('0x84')](_0x5ad1('0xa5'),'phone')[_0x5ad1('0x84')]('id','ContactId')[_0x5ad1('0x84')](_0x221720[_0x5ad1('0xaa')][_0x5ad1('0x8d')](),_0x5ad1('0xa8'))[_0x5ad1('0x84')](_0x222e54[_0x5ad1('0x5b')]['id'][_0x5ad1('0x8d')](),'VoiceQueueId')[_0x5ad1('0x84')]('NOW()',_0x5ad1('0x5c'))[_0x5ad1('0x84')](_0x5ad1('0xa9'),_0x5ad1('0x5d'))[_0x5ad1('0x86')](_0x5ad1('0xab'))[_0x5ad1('0x45')](_0x5ad1('0xb4'))[_0x5ad1('0x45')]('ListId\x20=\x20?',_0x221720[_0x5ad1('0xaa')]['toString']())[_0x5ad1('0x45')]('phone\x20IS\x20NOT\x20NULL'))[_0x5ad1('0x8d')]();_0x1a8bee[_0x5ad1('0x8b')](db['sequelize'][_0x5ad1('0x3d')](_0xfe73d6));}return BPromise[_0x5ad1('0x92')](_0x1a8bee);}})[_0x5ad1('0x28')](function(){return _0x112645;})[_0x5ad1('0x28')](respondWithResult(_0x31880a,null))['catch'](handleError(_0x31880a,null));};exports[_0x5ad1('0xb9')]=function(_0x263e75,_0x278026,_0x8d025c){return db[_0x5ad1('0x3a')][_0x5ad1('0x32')]({'where':{'id':_0x263e75[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](handleEntityNotFound(_0x278026,null))['then'](function(_0x50eb63){if(_0x50eb63){return _0x50eb63['removeBlackLists'](_0x263e75[_0x5ad1('0x3d')][_0x5ad1('0x94')]);}})['then'](function(_0xa806a8){if(_0xa806a8){return db['CmHopperBlack'][_0x5ad1('0x29')]({'where':{'ListId':_0x263e75[_0x5ad1('0x3d')][_0x5ad1('0x94')],'VoiceQueueId':_0x263e75[_0x5ad1('0x5b')]['id']}})[_0x5ad1('0x28')](function(){return _0xa806a8;});}})['then'](respondWithStatusCode(_0x278026,null))['catch'](handleError(_0x278026,null));};
\ No newline at end of file
index 564fac5..077e421 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe88c=['hasOwnProperty','hook','exports','events','../../mysqldb','VoiceQueue','setMaxListeners','save','update','emit'];(function(_0x34659e,_0x37e790){var _0x144956=function(_0x2fa081){while(--_0x2fa081){_0x34659e['push'](_0x34659e['shift']());}};_0x144956(++_0x37e790);}(_0xe88c,0x1e3));var _0xce88=function(_0x4e76b0,_0x3168de){_0x4e76b0=_0x4e76b0-0x0;var _0x5d5358=_0xe88c[_0x4e76b0];return _0x5d5358;};'use strict';var EventEmitter=require(_0xce88('0x0'));var VoiceQueue=require(_0xce88('0x1'))['db'][_0xce88('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xce88('0x3')](0x0);var events={'afterCreate':_0xce88('0x4'),'afterUpdate':_0xce88('0x5'),'afterDestroy':'remove'};function emitEvent(_0x9d34c0){return function(_0x1b160e,_0x567baa,_0x5da5ee){VoiceQueueEvents['emit'](_0x9d34c0+':'+_0x1b160e['id'],_0x1b160e);VoiceQueueEvents[_0xce88('0x6')](_0x9d34c0,_0x1b160e);_0x5da5ee(null);};}for(var e in events){if(events[_0xce88('0x7')](e)){var event=events[e];VoiceQueue[_0xce88('0x8')](e,emitEvent(event));}}module[_0xce88('0x9')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x8d2e=['events','../../mysqldb','VoiceQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x426711,_0x12264c){var _0x592991=function(_0x564614){while(--_0x564614){_0x426711['push'](_0x426711['shift']());}};_0x592991(++_0x12264c);}(_0x8d2e,0x1d6));var _0xe8d2=function(_0x167032,_0x97f1a2){_0x167032=_0x167032-0x0;var _0x409aaf=_0x8d2e[_0x167032];return _0x409aaf;};'use strict';var EventEmitter=require(_0xe8d2('0x0'));var VoiceQueue=require(_0xe8d2('0x1'))['db'][_0xe8d2('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xe8d2('0x3')](0x0);var events={'afterCreate':_0xe8d2('0x4'),'afterUpdate':_0xe8d2('0x5'),'afterDestroy':_0xe8d2('0x6')};function emitEvent(_0x44fd23){return function(_0x1e85e7,_0x1cdd77,_0x3f8888){VoiceQueueEvents[_0xe8d2('0x7')](_0x44fd23+':'+_0x1e85e7['id'],_0x1e85e7);VoiceQueueEvents[_0xe8d2('0x7')](_0x44fd23,_0x1e85e7);_0x3f8888(null);};}for(var e in events){if(events[_0xe8d2('0x8')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0xe8d2('0x9')]=VoiceQueueEvents;
\ No newline at end of file
index 2ddb9a7..e1628ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0x34158b,_0x6e54c0){var _0xf70991=function(_0x884d21){while(--_0x884d21){_0x34158b['push'](_0x34158b['shift']());}};_0xf70991(++_0x6e54c0);}(_0x70e0,0x17b));var _0x070e=function(_0x40a934,_0x453d52){_0x40a934=_0x40a934-0x0;var _0x5a3e15=_0x70e0[_0x40a934];return _0x5a3e15;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceQueue.attributes','exports','VoiceQueue','util'];(function(_0x1b0b92,_0x1a0c1d){var _0x2c0396=function(_0x4d8468){while(--_0x4d8468){_0x1b0b92['push'](_0x1b0b92['shift']());}};_0x2c0396(++_0x1a0c1d);}(_0xedd9,0xfc));var _0x9edd=function(_0x4906bf,_0x7907fb){_0x4906bf=_0x4906bf-0x0;var _0x5375b8=_0xedd9[_0x4906bf];return _0x5375b8;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 624d68d..69057f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aa5=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./voiceQueue.socket','register','then','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowVoiceQueue'];(function(_0x547456,_0x1de17e){var _0xc1fd7b=function(_0x12be35){while(--_0x12be35){_0x547456['push'](_0x547456['shift']());}};_0xc1fd7b(++_0x1de17e);}(_0x9aa5,0x7b));var _0x59aa=function(_0x218d1b,_0x5cf934){_0x218d1b=_0x218d1b-0x0;var _0x405ad0=_0x9aa5[_0x218d1b];return _0x405ad0;};'use strict';var _=require('lodash');var util=require(_0x59aa('0x0'));var moment=require(_0x59aa('0x1'));var BPromise=require(_0x59aa('0x2'));var rs=require(_0x59aa('0x3'));var fs=require('fs');var Redis=require(_0x59aa('0x4'));var db=require(_0x59aa('0x5'))['db'];var utils=require(_0x59aa('0x6'));var logger=require(_0x59aa('0x7'))('rpc');var config=require(_0x59aa('0x8'));var jayson=require(_0x59aa('0x9'));var client=jayson[_0x59aa('0xa')]['http']({'port':0x232a});config['redis']=_[_0x59aa('0xb')](config[_0x59aa('0xc')],{'host':_0x59aa('0xd'),'port':0x18eb});var socket=require(_0x59aa('0xe'))(new Redis(config[_0x59aa('0xc')]));require(_0x59aa('0xf'))[_0x59aa('0x10')](socket);function respondWithRpcPromise(_0x23625a,_0x110de5,_0x2ce980){return new BPromise(function(_0x4f8ccb,_0x1d96c2){return client['request'](_0x23625a,_0x2ce980)[_0x59aa('0x11')](function(_0x23ca37){logger['info'](_0x59aa('0x12'),_0x110de5,_0x59aa('0x13'));logger[_0x59aa('0x14')](_0x59aa('0x15'),_0x110de5,_0x59aa('0x13'),JSON[_0x59aa('0x16')](_0x23ca37));if(_0x23ca37['error']){if(_0x23ca37[_0x59aa('0x17')][_0x59aa('0x18')]===0x1f4){logger[_0x59aa('0x17')](_0x59aa('0x12'),_0x110de5,_0x23ca37['error'][_0x59aa('0x19')]);return _0x1d96c2(_0x23ca37['error'][_0x59aa('0x19')]);}logger['error'](_0x59aa('0x12'),_0x110de5,_0x23ca37[_0x59aa('0x17')][_0x59aa('0x19')]);return _0x4f8ccb(_0x23ca37[_0x59aa('0x17')][_0x59aa('0x19')]);}else{logger[_0x59aa('0x1a')](_0x59aa('0x12'),_0x110de5,_0x59aa('0x13'));_0x4f8ccb(_0x23ca37[_0x59aa('0x1b')][_0x59aa('0x19')]);}})[_0x59aa('0x1c')](function(_0x490ed0){logger[_0x59aa('0x17')](_0x59aa('0x12'),_0x110de5,_0x490ed0);_0x1d96c2(_0x490ed0);});});}exports[_0x59aa('0x1d')]=function(_0x4ea2ee){var _0x5d2b37=this;return new Promise(function(_0x3c2f33,_0x5c9deb){return db[_0x59aa('0x1e')][_0x59aa('0x1f')]({'raw':_0x4ea2ee[_0x59aa('0x20')]?_0x4ea2ee[_0x59aa('0x20')][_0x59aa('0x21')]===undefined?!![]:![]:!![],'where':_0x4ea2ee[_0x59aa('0x20')]?_0x4ea2ee[_0x59aa('0x20')][_0x59aa('0x22')]||null:null,'attributes':_0x4ea2ee[_0x59aa('0x20')]?_0x4ea2ee[_0x59aa('0x20')][_0x59aa('0x23')]||null:null,'limit':_0x4ea2ee[_0x59aa('0x20')]?_0x4ea2ee['options'][_0x59aa('0x24')]||null:null,'include':_0x4ea2ee[_0x59aa('0x20')]?_0x4ea2ee[_0x59aa('0x20')][_0x59aa('0x25')]?_[_0x59aa('0x26')](_0x4ea2ee[_0x59aa('0x20')][_0x59aa('0x25')],function(_0x482487){return{'model':db[_0x482487[_0x59aa('0x27')]],'as':_0x482487['as'],'attributes':_0x482487[_0x59aa('0x23')],'include':_0x482487[_0x59aa('0x25')]?_['map'](_0x482487[_0x59aa('0x25')],function(_0x4682a7){return{'model':db[_0x4682a7[_0x59aa('0x27')]],'as':_0x4682a7['as'],'attributes':_0x4682a7[_0x59aa('0x23')],'include':_0x4682a7[_0x59aa('0x25')]?_[_0x59aa('0x26')](_0x4682a7[_0x59aa('0x25')],function(_0xa517f1){return{'model':db[_0xa517f1[_0x59aa('0x27')]],'as':_0xa517f1['as'],'attributes':_0xa517f1[_0x59aa('0x23')]};}):[]};}):[]};}):[]:[]})[_0x59aa('0x11')](function(_0xe6e770){logger[_0x59aa('0x1a')]('GetVoiceQueue',_0x4ea2ee);logger[_0x59aa('0x14')]('GetVoiceQueue',_0x4ea2ee,JSON[_0x59aa('0x16')](_0xe6e770));_0x3c2f33(_0xe6e770);})[_0x59aa('0x1c')](function(_0x46bea1){logger[_0x59aa('0x17')](_0x59aa('0x1d'),_0x46bea1[_0x59aa('0x19')],_0x4ea2ee);_0x5c9deb(_0x5d2b37[_0x59aa('0x17')](0x1f4,_0x46bea1['message']));});});};exports[_0x59aa('0x28')]=function(_0x545d1f){var _0x5d9e38=this;return new Promise(function(_0x494229,_0x5af2ef){return db[_0x59aa('0x1e')]['find']({'raw':_0x545d1f['options']?_0x545d1f[_0x59aa('0x20')][_0x59aa('0x21')]===undefined?!![]:![]:!![],'where':_0x545d1f[_0x59aa('0x20')]?_0x545d1f[_0x59aa('0x20')][_0x59aa('0x22')]||null:null,'attributes':_0x545d1f['options']?_0x545d1f[_0x59aa('0x20')]['attributes']||null:null,'include':_0x545d1f[_0x59aa('0x20')]?_0x545d1f[_0x59aa('0x20')][_0x59aa('0x25')]?_[_0x59aa('0x26')](_0x545d1f[_0x59aa('0x20')]['include'],function(_0x117164){return{'model':db[_0x117164[_0x59aa('0x27')]],'as':_0x117164['as'],'attributes':_0x117164[_0x59aa('0x23')],'include':_0x117164['include']?_[_0x59aa('0x26')](_0x117164[_0x59aa('0x25')],function(_0x5bfda7){return{'model':db[_0x5bfda7[_0x59aa('0x27')]],'as':_0x5bfda7['as'],'attributes':_0x5bfda7[_0x59aa('0x23')],'include':_0x5bfda7[_0x59aa('0x25')]?_[_0x59aa('0x26')](_0x5bfda7[_0x59aa('0x25')],function(_0x49f2ff){return{'model':db[_0x49f2ff[_0x59aa('0x27')]],'as':_0x49f2ff['as'],'attributes':_0x49f2ff[_0x59aa('0x23')]};}):[]};}):[]};}):[]:[]})[_0x59aa('0x11')](function(_0x1e2486){logger[_0x59aa('0x1a')](_0x59aa('0x28'),_0x545d1f);logger[_0x59aa('0x14')](_0x59aa('0x28'),_0x545d1f,JSON['stringify'](_0x1e2486));_0x494229(_0x1e2486);})[_0x59aa('0x1c')](function(_0x1e3ede){logger[_0x59aa('0x17')]('ShowVoiceQueue',_0x1e3ede[_0x59aa('0x19')],_0x545d1f);_0x5af2ef(_0x5d9e38[_0x59aa('0x17')](0x1f4,_0x1e3ede['message']));});});};
\ No newline at end of file
+var _0x40df=['stringify','error','code','message','result','GetVoiceQueue','VoiceQueue','findAll','options','where','limit','include','map','attributes','model','catch','ShowVoiceQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','then','info','VoiceQueue,\x20%s,\x20%s','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x450f0c,_0x5231c1){var _0xe554e7=function(_0x2e7c24){while(--_0x2e7c24){_0x450f0c['push'](_0x450f0c['shift']());}};_0xe554e7(++_0x5231c1);}(_0x40df,0x93));var _0xf40d=function(_0x93a73b,_0x2b122b){_0x93a73b=_0x93a73b-0x0;var _0x27ce5d=_0x40df[_0x93a73b];return _0x27ce5d;};'use strict';var _=require(_0xf40d('0x0'));var util=require(_0xf40d('0x1'));var moment=require(_0xf40d('0x2'));var BPromise=require(_0xf40d('0x3'));var rs=require(_0xf40d('0x4'));var fs=require('fs');var Redis=require(_0xf40d('0x5'));var db=require(_0xf40d('0x6'))['db'];var utils=require(_0xf40d('0x7'));var logger=require(_0xf40d('0x8'))('rpc');var config=require(_0xf40d('0x9'));var jayson=require(_0xf40d('0xa'));var client=jayson[_0xf40d('0xb')][_0xf40d('0xc')]({'port':0x232a});config[_0xf40d('0xd')]=_[_0xf40d('0xe')](config['redis'],{'host':_0xf40d('0xf'),'port':0x18eb});var socket=require(_0xf40d('0x10'))(new Redis(config['redis']));require(_0xf40d('0x11'))[_0xf40d('0x12')](socket);function respondWithRpcPromise(_0x14b5ae,_0xf63e0a,_0x205931){return new BPromise(function(_0xe09aa7,_0x3ed8f1){return client['request'](_0x14b5ae,_0x205931)[_0xf40d('0x13')](function(_0x2aef20){logger[_0xf40d('0x14')](_0xf40d('0x15'),_0xf63e0a,'request\x20sent');logger[_0xf40d('0x16')](_0xf40d('0x17'),_0xf63e0a,_0xf40d('0x18'),JSON[_0xf40d('0x19')](_0x2aef20));if(_0x2aef20[_0xf40d('0x1a')]){if(_0x2aef20['error'][_0xf40d('0x1b')]===0x1f4){logger[_0xf40d('0x1a')](_0xf40d('0x15'),_0xf63e0a,_0x2aef20[_0xf40d('0x1a')][_0xf40d('0x1c')]);return _0x3ed8f1(_0x2aef20[_0xf40d('0x1a')][_0xf40d('0x1c')]);}logger['error'](_0xf40d('0x15'),_0xf63e0a,_0x2aef20[_0xf40d('0x1a')][_0xf40d('0x1c')]);return _0xe09aa7(_0x2aef20[_0xf40d('0x1a')][_0xf40d('0x1c')]);}else{logger['info'](_0xf40d('0x15'),_0xf63e0a,'request\x20sent');_0xe09aa7(_0x2aef20[_0xf40d('0x1d')][_0xf40d('0x1c')]);}})['catch'](function(_0x6f8ec0){logger[_0xf40d('0x1a')](_0xf40d('0x15'),_0xf63e0a,_0x6f8ec0);_0x3ed8f1(_0x6f8ec0);});});}exports[_0xf40d('0x1e')]=function(_0x83dba4){var _0x118d02=this;return new Promise(function(_0x5b4b70,_0x4387e5){return db[_0xf40d('0x1f')][_0xf40d('0x20')]({'raw':_0x83dba4[_0xf40d('0x21')]?_0x83dba4[_0xf40d('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x83dba4[_0xf40d('0x21')]?_0x83dba4[_0xf40d('0x21')][_0xf40d('0x22')]||null:null,'attributes':_0x83dba4[_0xf40d('0x21')]?_0x83dba4[_0xf40d('0x21')]['attributes']||null:null,'limit':_0x83dba4[_0xf40d('0x21')]?_0x83dba4[_0xf40d('0x21')][_0xf40d('0x23')]||null:null,'include':_0x83dba4[_0xf40d('0x21')]?_0x83dba4[_0xf40d('0x21')][_0xf40d('0x24')]?_[_0xf40d('0x25')](_0x83dba4[_0xf40d('0x21')][_0xf40d('0x24')],function(_0x2d6cf5){return{'model':db[_0x2d6cf5['model']],'as':_0x2d6cf5['as'],'attributes':_0x2d6cf5[_0xf40d('0x26')],'include':_0x2d6cf5[_0xf40d('0x24')]?_[_0xf40d('0x25')](_0x2d6cf5[_0xf40d('0x24')],function(_0x454f2c){return{'model':db[_0x454f2c['model']],'as':_0x454f2c['as'],'attributes':_0x454f2c[_0xf40d('0x26')],'include':_0x454f2c['include']?_[_0xf40d('0x25')](_0x454f2c['include'],function(_0xcc62a9){return{'model':db[_0xcc62a9[_0xf40d('0x27')]],'as':_0xcc62a9['as'],'attributes':_0xcc62a9[_0xf40d('0x26')]};}):[]};}):[]};}):[]:[]})[_0xf40d('0x13')](function(_0x23f4fa){logger[_0xf40d('0x14')]('GetVoiceQueue',_0x83dba4);logger[_0xf40d('0x16')](_0xf40d('0x1e'),_0x83dba4,JSON['stringify'](_0x23f4fa));_0x5b4b70(_0x23f4fa);})[_0xf40d('0x28')](function(_0x2cb1b2){logger[_0xf40d('0x1a')](_0xf40d('0x1e'),_0x2cb1b2[_0xf40d('0x1c')],_0x83dba4);_0x4387e5(_0x118d02[_0xf40d('0x1a')](0x1f4,_0x2cb1b2['message']));});});};exports[_0xf40d('0x29')]=function(_0xcbb96f){var _0x39599e=this;return new Promise(function(_0x85111f,_0x248baa){return db['VoiceQueue'][_0xf40d('0x2a')]({'raw':_0xcbb96f['options']?_0xcbb96f[_0xf40d('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0xcbb96f[_0xf40d('0x21')]?_0xcbb96f[_0xf40d('0x21')][_0xf40d('0x22')]||null:null,'attributes':_0xcbb96f[_0xf40d('0x21')]?_0xcbb96f['options'][_0xf40d('0x26')]||null:null,'include':_0xcbb96f[_0xf40d('0x21')]?_0xcbb96f[_0xf40d('0x21')][_0xf40d('0x24')]?_[_0xf40d('0x25')](_0xcbb96f[_0xf40d('0x21')][_0xf40d('0x24')],function(_0x4589da){return{'model':db[_0x4589da[_0xf40d('0x27')]],'as':_0x4589da['as'],'attributes':_0x4589da['attributes'],'include':_0x4589da[_0xf40d('0x24')]?_['map'](_0x4589da[_0xf40d('0x24')],function(_0x1ed414){return{'model':db[_0x1ed414[_0xf40d('0x27')]],'as':_0x1ed414['as'],'attributes':_0x1ed414['attributes'],'include':_0x1ed414[_0xf40d('0x24')]?_['map'](_0x1ed414[_0xf40d('0x24')],function(_0x2bb041){return{'model':db[_0x2bb041['model']],'as':_0x2bb041['as'],'attributes':_0x2bb041[_0xf40d('0x26')]};}):[]};}):[]};}):[]:[]})[_0xf40d('0x13')](function(_0x1822d4){logger[_0xf40d('0x14')](_0xf40d('0x29'),_0xcbb96f);logger[_0xf40d('0x16')](_0xf40d('0x29'),_0xcbb96f,JSON['stringify'](_0x1822d4));_0x85111f(_0x1822d4);})[_0xf40d('0x28')](function(_0x1a748c){logger[_0xf40d('0x1a')](_0xf40d('0x29'),_0x1a748c['message'],_0xcbb96f);_0x248baa(_0x39599e[_0xf40d('0x1a')](0x1f4,_0x1a748c[_0xf40d('0x1c')]));});});};
\ No newline at end of file
index c694445..91e6022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x457d=['voiceQueue:','save','remove','emit','removeListener'];(function(_0x55f8fa,_0x616528){var _0x20a9a9=function(_0x337bb5){while(--_0x337bb5){_0x55f8fa['push'](_0x55f8fa['shift']());}};_0x20a9a9(++_0x616528);}(_0x457d,0x14b));var _0xd457=function(_0x556a99,_0x3d0574){_0x556a99=_0x556a99-0x0;var _0x45a65a=_0x457d[_0x556a99];return _0x45a65a;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=[_0xd457('0x0'),_0xd457('0x1'),'update'];function createListener(_0x55f61d,_0xdb1b53){return function(_0xee5ee6){_0xdb1b53[_0xd457('0x2')](_0x55f61d,_0xee5ee6);};}function removeListener(_0x47d352,_0x43992f){return function(){VoiceQueueEvents[_0xd457('0x3')](_0x47d352,_0x43992f);};}exports['register']=function(_0x8fc891){for(var _0x396e74=0x0,_0x3a5d5a=events['length'];_0x396e74<_0x3a5d5a;_0x396e74++){var _0x128030=events[_0x396e74];var _0x3a9191=createListener(_0xd457('0x4')+_0x128030,_0x8fc891);VoiceQueueEvents['on'](_0x128030,_0x3a9191);}};
\ No newline at end of file
+var _0x2c68=['register','length','voiceQueue:','./voiceQueue.events','save','remove','emit','removeListener'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x2c68,0x123));var _0x82c6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2c68[_0x321bb2];return _0x9c12ed;};'use strict';var VoiceQueueEvents=require(_0x82c6('0x0'));var events=[_0x82c6('0x1'),_0x82c6('0x2'),'update'];function createListener(_0x4a6ae9,_0x1fbe04){return function(_0x5ac83c){_0x1fbe04[_0x82c6('0x3')](_0x4a6ae9,_0x5ac83c);};}function removeListener(_0x6f9ab3,_0x5428e5){return function(){VoiceQueueEvents[_0x82c6('0x4')](_0x6f9ab3,_0x5428e5);};}exports[_0x82c6('0x5')]=function(_0x1284ee){for(var _0x596547=0x0,_0x28fedb=events[_0x82c6('0x6')];_0x596547<_0x28fedb;_0x596547++){var _0x28e1c9=events[_0x596547];var _0x5938be=createListener(_0x82c6('0x7')+_0x28e1c9,_0x1284ee);VoiceQueueEvents['on'](_0x28e1c9,_0x5938be);}};
\ No newline at end of file
index 7ffc9a8..8ff500c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a41=['isAuthenticated','/index','getVoiceQueuesReport','/:id','show','post','put','update','delete','destroy','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','/describe'];(function(_0x2e9c7d,_0x379775){var _0x440303=function(_0x2433fa){while(--_0x2433fa){_0x2e9c7d['push'](_0x2e9c7d['shift']());}};_0x440303(++_0x379775);}(_0x0a41,0x122));var _0x10a4=function(_0x1e691f,_0x215f5f){_0x1e691f=_0x1e691f-0x0;var _0x5b37cb=_0x0a41[_0x1e691f];return _0x5b37cb;};'use strict';var multer=require(_0x10a4('0x0'));var util=require(_0x10a4('0x1'));var path=require('path');var timeout=require(_0x10a4('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x10a4('0x3'));var auth=require(_0x10a4('0x4'));var interaction=require(_0x10a4('0x5'));var config=require(_0x10a4('0x6'));var controller=require(_0x10a4('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x10a4('0x8')](_0x10a4('0x9'),auth[_0x10a4('0xa')](),controller['describe']);router[_0x10a4('0x8')](_0x10a4('0xb'),auth[_0x10a4('0xa')](),controller[_0x10a4('0xc')]);router['get'](_0x10a4('0xd'),auth[_0x10a4('0xa')](),controller[_0x10a4('0xe')]);router[_0x10a4('0xf')]('/',auth[_0x10a4('0xa')](),controller['create']);router[_0x10a4('0x10')]('/:id',auth[_0x10a4('0xa')](),controller[_0x10a4('0x11')]);router[_0x10a4('0x12')]('/:id',auth[_0x10a4('0xa')](),controller[_0x10a4('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x62ec=['isAuthenticated','index','describe','get','/index','getVoiceQueuesReport','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller'];(function(_0x8e46fd,_0x3dcb85){var _0x2555fb=function(_0x4c7d1a){while(--_0x4c7d1a){_0x8e46fd['push'](_0x8e46fd['shift']());}};_0x2555fb(++_0x3dcb85);}(_0x62ec,0x109));var _0xc62e=function(_0x1fe915,_0x50da25){_0x1fe915=_0x1fe915-0x0;var _0x36d429=_0x62ec[_0x1fe915];return _0x36d429;};'use strict';var multer=require(_0xc62e('0x0'));var util=require(_0xc62e('0x1'));var path=require('path');var timeout=require(_0xc62e('0x2'));var express=require(_0xc62e('0x3'));var router=express[_0xc62e('0x4')]();var fs_extra=require(_0xc62e('0x5'));var auth=require(_0xc62e('0x6'));var interaction=require(_0xc62e('0x7'));var config=require(_0xc62e('0x8'));var controller=require(_0xc62e('0x9'));router['get']('/',auth[_0xc62e('0xa')](),controller[_0xc62e('0xb')]);router['get']('/describe',auth[_0xc62e('0xa')](),controller[_0xc62e('0xc')]);router[_0xc62e('0xd')](_0xc62e('0xe'),auth[_0xc62e('0xa')](),controller[_0xc62e('0xf')]);router['get'](_0xc62e('0x10'),auth[_0xc62e('0xa')](),controller[_0xc62e('0x11')]);router[_0xc62e('0x12')]('/',auth[_0xc62e('0xa')](),controller[_0xc62e('0x13')]);router[_0xc62e('0x14')](_0xc62e('0x10'),auth[_0xc62e('0xa')](),controller[_0xc62e('0x15')]);router[_0xc62e('0x16')](_0xc62e('0x10'),auth[_0xc62e('0xa')](),controller[_0xc62e('0x17')]);module[_0xc62e('0x18')]=router;
\ No newline at end of file
index 3ec7534..6a07d1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1275=['seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','moment','exports','STRING','DATE','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x2222f7,_0x446b82){var _0x4d364a=function(_0x479bc7){while(--_0x479bc7){_0x2222f7['push'](_0x2222f7['shift']());}};_0x4d364a(++_0x446b82);}(_0x1275,0x117));var _0x5127=function(_0x2b38fd,_0x66acb5){_0x2b38fd=_0x2b38fd-0x0;var _0x4a8477=_0x1275[_0x2b38fd];return _0x4a8477;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x5127('0x0'));module[_0x5127('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x5127('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x5127('0x3')]},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x270081){var _0x15a3a9=moment(_0x270081);var _0x4d5cb6=moment(this['getDataValue'](_0x5127('0x4')))[_0x5127('0x5')](_0x5127('0x6'));var _0xfc3ee9=_0x15a3a9['diff'](_0x4d5cb6,_0x5127('0x7'));this[_0x5127('0x8')](_0x5127('0x9'),_0x270081);this[_0x5127('0x8')](_0x5127('0xa'),_0xfc3ee9||null);}},'position':{'type':Sequelize[_0x5127('0xb')]},'count':{'type':Sequelize[_0x5127('0xb')]},'queuecallerabandon':{'type':Sequelize[_0x5127('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0x5127('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x5127('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0x5127('0x2')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x5127('0xb')]},'channel':{'type':Sequelize[_0x5127('0x2')]},'connectedlinenum':{'type':Sequelize[_0x5127('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x5127('0x2')]},'priority':{'type':Sequelize[_0x5127('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x5127('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x5127('0x2')]},'transfer':{'type':Sequelize[_0x5127('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x5127('0x2')]},'transferuniqueid':{'type':Sequelize[_0x5127('0x2')]},'disposition':{'type':Sequelize[_0x5127('0x2')]},'secondDisposition':{'type':Sequelize[_0x5127('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize[_0x5127('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe5d1=['setDataValue','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','moment','exports','STRING','DATE','getDataValue','YYYY-MM-DD\x20HH:mm:ss','seconds'];(function(_0x233e61,_0x1a0c80){var _0x185545=function(_0x401878){while(--_0x401878){_0x233e61['push'](_0x233e61['shift']());}};_0x185545(++_0x1a0c80);}(_0xe5d1,0xfd));var _0x1e5d=function(_0x1a0daa,_0x2a4634){_0x1a0daa=_0x1a0daa-0x0;var _0x1dbe15=_0xe5d1[_0x1a0daa];return _0x1dbe15;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x1e5d('0x0'));module[_0x1e5d('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x1e5d('0x2')]},'calleridnum':{'type':Sequelize[_0x1e5d('0x2')]},'calleridname':{'type':Sequelize[_0x1e5d('0x2')]},'queue':{'type':Sequelize[_0x1e5d('0x2')]},'queuecallerjoinAt':{'type':Sequelize[_0x1e5d('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0x1e5d('0x3')],'set':function(_0x5eb80a){var _0xfa6245=moment(_0x5eb80a);var _0x4ea24a=moment(this[_0x1e5d('0x4')]('queuecallerjoinAt'))['format'](_0x1e5d('0x5'));var _0x579281=_0xfa6245['diff'](_0x4ea24a,_0x1e5d('0x6'));this[_0x1e5d('0x7')]('queuecallerleaveAt',_0x5eb80a);this[_0x1e5d('0x7')](_0x1e5d('0x8'),_0x579281||null);}},'position':{'type':Sequelize[_0x1e5d('0x9')]},'count':{'type':Sequelize[_0x1e5d('0x9')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0x1e5d('0xa')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x1e5d('0x3')]},'queuecallerexit':{'type':Sequelize[_0x1e5d('0xa')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0x1e5d('0x2')],'comment':_0x1e5d('0xb')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x1e5d('0x2')]},'connectedlinename':{'type':Sequelize[_0x1e5d('0x2')]},'accountcode':{'type':Sequelize[_0x1e5d('0x2')]},'context':{'type':Sequelize[_0x1e5d('0x2')]},'exten':{'type':Sequelize[_0x1e5d('0x2')]},'priority':{'type':Sequelize[_0x1e5d('0x2')]},'holdtime':{'type':Sequelize[_0x1e5d('0x9')]},'mohtime':{'type':Sequelize[_0x1e5d('0x9')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x1e5d('0xa')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x1e5d('0x2')]},'transfer':{'type':Sequelize[_0x1e5d('0xa')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x1e5d('0x2')],'comment':_0x1e5d('0xc')},'transferexten':{'type':Sequelize[_0x1e5d('0x2')]},'transferuniqueid':{'type':Sequelize[_0x1e5d('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x1e5d('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 4d32916..46b604a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0687=['then','destroy','error','stack','name','send','index','map','VoiceQueueReport','rawAttributes','type','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','rows','catch','show','params','filters','includeAll','create','body','find','describe','getVoiceQueuesReport','pick','eml-format','rimraf','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./voiceQueueReport.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x0687,0x16f));var _0x7068=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0687[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x7068('0x0'));var rimraf=require(_0x7068('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7068('0x2'));var moment=require('moment');var BPromise=require(_0x7068('0x3'));var Mustache=require(_0x7068('0x4'));var util=require(_0x7068('0x5'));var path=require('path');var sox=require(_0x7068('0x6'));var csv=require(_0x7068('0x7'));var ejs=require(_0x7068('0x8'));var fs=require('fs');var fs_extra=require(_0x7068('0x9'));var _=require(_0x7068('0xa'));var squel=require(_0x7068('0xb'));var crypto=require(_0x7068('0xc'));var jsforce=require(_0x7068('0xd'));var deskjs=require(_0x7068('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7068('0xf'));var Papa=require(_0x7068('0x10'));var Redis=require('ioredis');var authService=require(_0x7068('0x11'));var qs=require(_0x7068('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7068('0x13'))(_0x7068('0x14'));var utils=require(_0x7068('0x15'));var config=require(_0x7068('0x16'));var licenseUtil=require(_0x7068('0x17'));var db=require(_0x7068('0x18'))['db'];config['redis']=_['defaults'](config[_0x7068('0x19')],{'host':_0x7068('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7068('0x19')]));require(_0x7068('0x1b'))[_0x7068('0x1c')](socket);function respondWithStatusCode(_0x5ec715,_0x478f80){_0x478f80=_0x478f80||0xcc;return function(_0x2cb5c9){if(_0x2cb5c9){return _0x5ec715[_0x7068('0x1d')](_0x478f80);}return _0x5ec715[_0x7068('0x1e')](_0x478f80)[_0x7068('0x1f')]();};}function respondWithResult(_0x39b0fa,_0x385824){_0x385824=_0x385824||0xc8;return function(_0x43d750){if(_0x43d750){return _0x39b0fa['status'](_0x385824)[_0x7068('0x20')](_0x43d750);}};}function respondWithFilteredResult(_0x13bb19,_0x29db4d){return function(_0x2b5e09){if(_0x2b5e09){var _0x27a497=typeof _0x29db4d[_0x7068('0x21')]===_0x7068('0x22')&&typeof _0x29db4d['limit']==='undefined';var _0x4af0f8=_0x2b5e09[_0x7068('0x23')];var _0x596300=_0x27a497?0x0:_0x29db4d[_0x7068('0x21')];var _0x46223a=_0x27a497?_0x2b5e09['count']:_0x29db4d[_0x7068('0x21')]+_0x29db4d[_0x7068('0x24')];var _0x5f2f1c;if(_0x46223a>=_0x4af0f8){_0x46223a=_0x4af0f8;_0x5f2f1c=0xc8;}else{_0x5f2f1c=0xce;}_0x13bb19[_0x7068('0x1e')](_0x5f2f1c);return _0x13bb19[_0x7068('0x25')](_0x7068('0x26'),_0x596300+'-'+_0x46223a+'/'+_0x4af0f8)[_0x7068('0x20')](_0x2b5e09);}return null;};}function patchUpdates(_0x45fdda){return function(_0x4b2d5d){try{jsonpatch[_0x7068('0x27')](_0x4b2d5d,_0x45fdda,!![]);}catch(_0x582954){return BPromise[_0x7068('0x28')](_0x582954);}return _0x4b2d5d[_0x7068('0x29')]();};}function saveUpdates(_0x19b493,_0x33c970){return function(_0x542dd6){if(_0x542dd6){return _0x542dd6[_0x7068('0x2a')](_0x19b493)[_0x7068('0x2b')](function(_0x104565){return _0x104565;});}return null;};}function removeEntity(_0x424cf4,_0x2f0459){return function(_0x7ed9c8){if(_0x7ed9c8){return _0x7ed9c8[_0x7068('0x2c')]()[_0x7068('0x2b')](function(){_0x424cf4[_0x7068('0x1e')](0xcc)[_0x7068('0x1f')]();});}};}function handleEntityNotFound(_0x5c8ce1,_0x19a19f){return function(_0x562fa7){if(!_0x562fa7){_0x5c8ce1[_0x7068('0x1d')](0x194);}return _0x562fa7;};}function handleError(_0x1dcdff,_0x439b25){_0x439b25=_0x439b25||0x1f4;return function(_0xb830e9){logger[_0x7068('0x2d')](_0xb830e9[_0x7068('0x2e')]);if(_0xb830e9[_0x7068('0x2f')]){delete _0xb830e9[_0x7068('0x2f')];}_0x1dcdff[_0x7068('0x1e')](_0x439b25)[_0x7068('0x30')](_0xb830e9);};}exports[_0x7068('0x31')]=function(_0x47c0ac,_0x136611){var _0x36e390={},_0x1463ea={},_0x186745={'count':0x0,'rows':[]};var _0x2b5ca3=_[_0x7068('0x32')](db[_0x7068('0x33')][_0x7068('0x34')],function(_0x2da747){return{'name':_0x2da747['fieldName'],'type':_0x2da747[_0x7068('0x35')]['key']};});_0x1463ea['model']=_['map'](_0x2b5ca3,'name');_0x1463ea[_0x7068('0x36')]=_[_0x7068('0x37')](_0x47c0ac[_0x7068('0x36')]);_0x1463ea['filters']=_[_0x7068('0x38')](_0x1463ea[_0x7068('0x39')],_0x1463ea['query']);_0x36e390['attributes']=_[_0x7068('0x38')](_0x1463ea[_0x7068('0x39')],qs['fields'](_0x47c0ac[_0x7068('0x36')][_0x7068('0x3a')]));_0x36e390[_0x7068('0x3b')]=_0x36e390[_0x7068('0x3b')][_0x7068('0x3c')]?_0x36e390[_0x7068('0x3b')]:_0x1463ea['model'];if(!_0x47c0ac[_0x7068('0x36')][_0x7068('0x3d')](_0x7068('0x3e'))){_0x36e390[_0x7068('0x24')]=qs['limit'](_0x47c0ac[_0x7068('0x36')][_0x7068('0x24')]);_0x36e390[_0x7068('0x21')]=qs[_0x7068('0x21')](_0x47c0ac[_0x7068('0x36')][_0x7068('0x21')]);}_0x36e390[_0x7068('0x3f')]=qs[_0x7068('0x40')](_0x47c0ac[_0x7068('0x36')][_0x7068('0x40')]);_0x36e390[_0x7068('0x41')]=qs['filters'](_['pick'](_0x47c0ac[_0x7068('0x36')],_0x1463ea['filters']),_0x2b5ca3);if(_0x47c0ac[_0x7068('0x36')][_0x7068('0x42')]){_0x36e390['where']=_['merge'](_0x36e390[_0x7068('0x41')],{'$or':_[_0x7068('0x32')](_0x2b5ca3,function(_0x149023){if(_0x149023[_0x7068('0x35')]!=='VIRTUAL'){var _0x2e0a3e={};_0x2e0a3e[_0x149023['name']]={'$like':'%'+_0x47c0ac['query']['filter']+'%'};return _0x2e0a3e;}})});}_0x36e390=_[_0x7068('0x43')]({},_0x36e390,_0x47c0ac[_0x7068('0x44')]);var _0xc1a233={'where':_0x36e390[_0x7068('0x41')]};return db[_0x7068('0x33')][_0x7068('0x23')](_0xc1a233)[_0x7068('0x2b')](function(_0x418350){_0x186745['count']=_0x418350;if(_0x47c0ac['query']['includeAll']){_0x36e390[_0x7068('0x45')]=[{'all':!![]}];}return db[_0x7068('0x33')]['findAll'](_0x36e390);})[_0x7068('0x2b')](function(_0x3b832e){_0x186745[_0x7068('0x46')]=_0x3b832e;return _0x186745;})[_0x7068('0x2b')](respondWithFilteredResult(_0x136611,_0x36e390))[_0x7068('0x47')](handleError(_0x136611,null));};exports[_0x7068('0x48')]=function(_0xfa997e,_0x25b868){var _0x51af3c={'raw':![],'where':{'id':_0xfa997e[_0x7068('0x49')]['id']}},_0x34b011={};_0x34b011[_0x7068('0x39')]=_[_0x7068('0x37')](db[_0x7068('0x33')][_0x7068('0x34')]);_0x34b011[_0x7068('0x36')]=_[_0x7068('0x37')](_0xfa997e['query']);_0x34b011[_0x7068('0x4a')]=_[_0x7068('0x38')](_0x34b011[_0x7068('0x39')],_0x34b011['query']);_0x51af3c[_0x7068('0x3b')]=_['intersection'](_0x34b011[_0x7068('0x39')],qs[_0x7068('0x3a')](_0xfa997e['query'][_0x7068('0x3a')]));_0x51af3c[_0x7068('0x3b')]=_0x51af3c['attributes'][_0x7068('0x3c')]?_0x51af3c['attributes']:_0x34b011[_0x7068('0x39')];if(_0xfa997e[_0x7068('0x36')][_0x7068('0x4b')]){_0x51af3c[_0x7068('0x45')]=[{'all':!![]}];}_0x51af3c=_[_0x7068('0x43')]({},_0x51af3c,_0xfa997e[_0x7068('0x44')]);return db['VoiceQueueReport']['find'](_0x51af3c)['then'](handleEntityNotFound(_0x25b868,null))['then'](respondWithResult(_0x25b868,null))[_0x7068('0x47')](handleError(_0x25b868,null));};exports[_0x7068('0x4c')]=function(_0x2c5f80,_0x51dc48){return db[_0x7068('0x33')][_0x7068('0x4c')](_0x2c5f80['body'],{})[_0x7068('0x2b')](respondWithResult(_0x51dc48,0xc9))[_0x7068('0x47')](handleError(_0x51dc48,null));};exports[_0x7068('0x2a')]=function(_0x450383,_0x454656){if(_0x450383[_0x7068('0x4d')]['id']){delete _0x450383[_0x7068('0x4d')]['id'];}return db['VoiceQueueReport'][_0x7068('0x4e')]({'where':{'id':_0x450383['params']['id']}})['then'](handleEntityNotFound(_0x454656,null))[_0x7068('0x2b')](saveUpdates(_0x450383['body'],null))[_0x7068('0x2b')](respondWithResult(_0x454656,null))['catch'](handleError(_0x454656,null));};exports['destroy']=function(_0x488484,_0x2fa5aa){return db[_0x7068('0x33')][_0x7068('0x4e')]({'where':{'id':_0x488484['params']['id']}})[_0x7068('0x2b')](handleEntityNotFound(_0x2fa5aa,null))[_0x7068('0x2b')](removeEntity(_0x2fa5aa,null))[_0x7068('0x47')](handleError(_0x2fa5aa,null));};exports[_0x7068('0x4f')]=function(_0x4600bc,_0x12da64){return db['VoiceQueueReport']['describe']()[_0x7068('0x2b')](respondWithResult(_0x12da64,null))['catch'](handleError(_0x12da64,null));};exports[_0x7068('0x50')]=function(_0x5e5c94,_0x260815){var _0x5b652a={},_0x1f7a41={},_0x577364={'count':0x0,'rows':[]};_0x1f7a41[_0x7068('0x39')]=_[_0x7068('0x37')](db[_0x7068('0x33')]['rawAttributes']);_0x1f7a41[_0x7068('0x36')]=_['keys'](_0x5e5c94[_0x7068('0x36')]);_0x1f7a41[_0x7068('0x4a')]=_[_0x7068('0x38')](_0x1f7a41['model'],_0x1f7a41['query']);_0x5b652a[_0x7068('0x3b')]=_[_0x7068('0x38')](_0x1f7a41[_0x7068('0x39')],qs[_0x7068('0x3a')](_0x5e5c94[_0x7068('0x36')][_0x7068('0x3a')]));_0x5b652a[_0x7068('0x3b')]=_0x5b652a['attributes'][_0x7068('0x3c')]?_0x5b652a[_0x7068('0x3b')]:_0x1f7a41[_0x7068('0x39')];if(!_0x5e5c94['query']['hasOwnProperty'](_0x7068('0x3e'))){_0x5b652a[_0x7068('0x24')]=qs[_0x7068('0x24')](_0x5e5c94[_0x7068('0x36')][_0x7068('0x24')]);_0x5b652a['offset']=qs[_0x7068('0x21')](_0x5e5c94[_0x7068('0x36')][_0x7068('0x21')]);}_0x5b652a[_0x7068('0x3f')]=qs[_0x7068('0x40')](_0x5e5c94[_0x7068('0x36')][_0x7068('0x40')]);_0x5b652a[_0x7068('0x41')]=qs[_0x7068('0x4a')](_[_0x7068('0x51')](_0x5e5c94[_0x7068('0x36')],_0x1f7a41[_0x7068('0x4a')]));if(_0x5e5c94[_0x7068('0x36')][_0x7068('0x42')]){_0x5b652a['where']=_[_0x7068('0x43')](_0x5b652a[_0x7068('0x41')],{'$or':_['map'](_0x5b652a[_0x7068('0x3b')],function(_0x429a6c){var _0xb367d8={};_0xb367d8[_0x429a6c]={'$like':'%'+_0x5e5c94[_0x7068('0x36')]['filter']+'%'};return _0xb367d8;})});}_0x5b652a=_[_0x7068('0x43')]({},_0x5b652a,_0x5e5c94[_0x7068('0x44')]);var _0x33aa47={'where':_0x5b652a[_0x7068('0x41')]};return db[_0x7068('0x33')]['count'](_0x33aa47)[_0x7068('0x2b')](function(_0x1c28bb){_0x577364[_0x7068('0x23')]=_0x1c28bb;if(_0x5e5c94[_0x7068('0x36')]['includeAll']){_0x5b652a[_0x7068('0x45')]=[{'all':!![]}];}return db[_0x7068('0x33')]['findAll'](_0x5b652a);})['then'](function(_0x19700){_0x577364[_0x7068('0x46')]=_0x19700;return _0x577364;})[_0x7068('0x2b')](respondWithFilteredResult(_0x260815,_0x5b652a,_0x7068('0x50')))[_0x7068('0x47')](handleError(_0x260815,null,_0x7068('0x50')));};
\ No newline at end of file
+var _0x52ad=['fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','rows','catch','show','params','includeAll','include','find','body','update','length','order','findAll','getVoiceQueuesReport','rimraf','zip-dir','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','./voiceQueueReport.socket','register','end','status','offset','undefined','limit','count','Content-Range','json','apply','save','then','error','stack','name','send','index','map','VoiceQueueReport','rawAttributes'];(function(_0x784dce,_0x187bb6){var _0x36760a=function(_0x35e59a){while(--_0x35e59a){_0x784dce['push'](_0x784dce['shift']());}};_0x36760a(++_0x187bb6);}(_0x52ad,0x15b));var _0xd52a=function(_0x1b5062,_0x1f08b0){_0x1b5062=_0x1b5062-0x0;var _0x2e42b6=_0x52ad[_0x1b5062];return _0x2e42b6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd52a('0x0'));var zipdir=require(_0xd52a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd52a('0x2'));var moment=require(_0xd52a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd52a('0x4'));var util=require(_0xd52a('0x5'));var path=require(_0xd52a('0x6'));var sox=require('sox');var csv=require(_0xd52a('0x7'));var ejs=require(_0xd52a('0x8'));var fs=require('fs');var fs_extra=require(_0xd52a('0x9'));var _=require(_0xd52a('0xa'));var squel=require(_0xd52a('0xb'));var crypto=require(_0xd52a('0xc'));var jsforce=require(_0xd52a('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd52a('0x7'));var querystring=require(_0xd52a('0xe'));var Papa=require(_0xd52a('0xf'));var Redis=require(_0xd52a('0x10'));var authService=require(_0xd52a('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xd52a('0x12'));var hardwareService=require(_0xd52a('0x13'));var logger=require(_0xd52a('0x14'))(_0xd52a('0x15'));var utils=require('../../config/utils');var config=require(_0xd52a('0x16'));var licenseUtil=require(_0xd52a('0x17'));var db=require('../../mysqldb')['db'];config[_0xd52a('0x18')]=_[_0xd52a('0x19')](config['redis'],{'host':_0xd52a('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd52a('0x1b'))[_0xd52a('0x1c')](socket);function respondWithStatusCode(_0x246dd4,_0x437254){_0x437254=_0x437254||0xcc;return function(_0x4e6a5f){if(_0x4e6a5f){return _0x246dd4['sendStatus'](_0x437254);}return _0x246dd4['status'](_0x437254)[_0xd52a('0x1d')]();};}function respondWithResult(_0x5b18dc,_0x52765b){_0x52765b=_0x52765b||0xc8;return function(_0x584b73){if(_0x584b73){return _0x5b18dc[_0xd52a('0x1e')](_0x52765b)['json'](_0x584b73);}};}function respondWithFilteredResult(_0x105d34,_0x4cc59a){return function(_0x48c0de){if(_0x48c0de){var _0x5ebd39=typeof _0x4cc59a[_0xd52a('0x1f')]===_0xd52a('0x20')&&typeof _0x4cc59a[_0xd52a('0x21')]===_0xd52a('0x20');var _0x4d234d=_0x48c0de[_0xd52a('0x22')];var _0x17f53a=_0x5ebd39?0x0:_0x4cc59a[_0xd52a('0x1f')];var _0x28c279=_0x5ebd39?_0x48c0de[_0xd52a('0x22')]:_0x4cc59a[_0xd52a('0x1f')]+_0x4cc59a[_0xd52a('0x21')];var _0x5d9a07;if(_0x28c279>=_0x4d234d){_0x28c279=_0x4d234d;_0x5d9a07=0xc8;}else{_0x5d9a07=0xce;}_0x105d34['status'](_0x5d9a07);return _0x105d34['set'](_0xd52a('0x23'),_0x17f53a+'-'+_0x28c279+'/'+_0x4d234d)[_0xd52a('0x24')](_0x48c0de);}return null;};}function patchUpdates(_0x280de9){return function(_0x551402){try{jsonpatch[_0xd52a('0x25')](_0x551402,_0x280de9,!![]);}catch(_0x328d7a){return BPromise['reject'](_0x328d7a);}return _0x551402[_0xd52a('0x26')]();};}function saveUpdates(_0x2174dd,_0x4f3939){return function(_0x2b9055){if(_0x2b9055){return _0x2b9055['update'](_0x2174dd)[_0xd52a('0x27')](function(_0x4f50af){return _0x4f50af;});}return null;};}function removeEntity(_0x334587,_0x79eaae){return function(_0x52944b){if(_0x52944b){return _0x52944b['destroy']()['then'](function(){_0x334587[_0xd52a('0x1e')](0xcc)[_0xd52a('0x1d')]();});}};}function handleEntityNotFound(_0x5610ed,_0x5c5ad2){return function(_0x557229){if(!_0x557229){_0x5610ed['sendStatus'](0x194);}return _0x557229;};}function handleError(_0x52dade,_0x24d413){_0x24d413=_0x24d413||0x1f4;return function(_0x3297ab){logger[_0xd52a('0x28')](_0x3297ab[_0xd52a('0x29')]);if(_0x3297ab[_0xd52a('0x2a')]){delete _0x3297ab[_0xd52a('0x2a')];}_0x52dade['status'](_0x24d413)[_0xd52a('0x2b')](_0x3297ab);};}exports[_0xd52a('0x2c')]=function(_0x5794a5,_0x86da0){var _0x29dd65={},_0x956f62={},_0x5e6630={'count':0x0,'rows':[]};var _0x2b3c1e=_[_0xd52a('0x2d')](db[_0xd52a('0x2e')][_0xd52a('0x2f')],function(_0x2ba073){return{'name':_0x2ba073[_0xd52a('0x30')],'type':_0x2ba073[_0xd52a('0x31')]['key']};});_0x956f62[_0xd52a('0x32')]=_[_0xd52a('0x2d')](_0x2b3c1e,_0xd52a('0x2a'));_0x956f62[_0xd52a('0x33')]=_[_0xd52a('0x34')](_0x5794a5[_0xd52a('0x33')]);_0x956f62[_0xd52a('0x35')]=_[_0xd52a('0x36')](_0x956f62['model'],_0x956f62['query']);_0x29dd65[_0xd52a('0x37')]=_[_0xd52a('0x36')](_0x956f62[_0xd52a('0x32')],qs[_0xd52a('0x38')](_0x5794a5['query']['fields']));_0x29dd65[_0xd52a('0x37')]=_0x29dd65[_0xd52a('0x37')]['length']?_0x29dd65['attributes']:_0x956f62[_0xd52a('0x32')];if(!_0x5794a5[_0xd52a('0x33')][_0xd52a('0x39')](_0xd52a('0x3a'))){_0x29dd65[_0xd52a('0x21')]=qs[_0xd52a('0x21')](_0x5794a5['query'][_0xd52a('0x21')]);_0x29dd65[_0xd52a('0x1f')]=qs[_0xd52a('0x1f')](_0x5794a5[_0xd52a('0x33')][_0xd52a('0x1f')]);}_0x29dd65['order']=qs['sort'](_0x5794a5[_0xd52a('0x33')][_0xd52a('0x3b')]);_0x29dd65[_0xd52a('0x3c')]=qs[_0xd52a('0x35')](_[_0xd52a('0x3d')](_0x5794a5[_0xd52a('0x33')],_0x956f62['filters']),_0x2b3c1e);if(_0x5794a5[_0xd52a('0x33')][_0xd52a('0x3e')]){_0x29dd65['where']=_['merge'](_0x29dd65[_0xd52a('0x3c')],{'$or':_[_0xd52a('0x2d')](_0x2b3c1e,function(_0x18b6e5){if(_0x18b6e5[_0xd52a('0x31')]!==_0xd52a('0x3f')){var _0x15447b={};_0x15447b[_0x18b6e5[_0xd52a('0x2a')]]={'$like':'%'+_0x5794a5[_0xd52a('0x33')]['filter']+'%'};return _0x15447b;}})});}_0x29dd65=_[_0xd52a('0x40')]({},_0x29dd65,_0x5794a5[_0xd52a('0x41')]);var _0x2be0c2={'where':_0x29dd65[_0xd52a('0x3c')]};return db['VoiceQueueReport'][_0xd52a('0x22')](_0x2be0c2)[_0xd52a('0x27')](function(_0x3f20d7){_0x5e6630[_0xd52a('0x22')]=_0x3f20d7;if(_0x5794a5[_0xd52a('0x33')]['includeAll']){_0x29dd65['include']=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x29dd65);})[_0xd52a('0x27')](function(_0x4c1165){_0x5e6630[_0xd52a('0x42')]=_0x4c1165;return _0x5e6630;})[_0xd52a('0x27')](respondWithFilteredResult(_0x86da0,_0x29dd65))[_0xd52a('0x43')](handleError(_0x86da0,null));};exports[_0xd52a('0x44')]=function(_0x1feffe,_0x4dcd83){var _0x43db7c={'raw':![],'where':{'id':_0x1feffe[_0xd52a('0x45')]['id']}},_0xe71f80={};_0xe71f80[_0xd52a('0x32')]=_[_0xd52a('0x34')](db[_0xd52a('0x2e')][_0xd52a('0x2f')]);_0xe71f80[_0xd52a('0x33')]=_[_0xd52a('0x34')](_0x1feffe[_0xd52a('0x33')]);_0xe71f80[_0xd52a('0x35')]=_[_0xd52a('0x36')](_0xe71f80[_0xd52a('0x32')],_0xe71f80[_0xd52a('0x33')]);_0x43db7c['attributes']=_[_0xd52a('0x36')](_0xe71f80[_0xd52a('0x32')],qs[_0xd52a('0x38')](_0x1feffe[_0xd52a('0x33')]['fields']));_0x43db7c['attributes']=_0x43db7c['attributes']['length']?_0x43db7c[_0xd52a('0x37')]:_0xe71f80[_0xd52a('0x32')];if(_0x1feffe[_0xd52a('0x33')][_0xd52a('0x46')]){_0x43db7c[_0xd52a('0x47')]=[{'all':!![]}];}_0x43db7c=_['merge']({},_0x43db7c,_0x1feffe['options']);return db['VoiceQueueReport'][_0xd52a('0x48')](_0x43db7c)[_0xd52a('0x27')](handleEntityNotFound(_0x4dcd83,null))[_0xd52a('0x27')](respondWithResult(_0x4dcd83,null))[_0xd52a('0x43')](handleError(_0x4dcd83,null));};exports['create']=function(_0x4813a6,_0x3fab88){return db[_0xd52a('0x2e')]['create'](_0x4813a6[_0xd52a('0x49')],{})[_0xd52a('0x27')](respondWithResult(_0x3fab88,0xc9))[_0xd52a('0x43')](handleError(_0x3fab88,null));};exports[_0xd52a('0x4a')]=function(_0x2ff9c0,_0x58a361){if(_0x2ff9c0['body']['id']){delete _0x2ff9c0[_0xd52a('0x49')]['id'];}return db['VoiceQueueReport'][_0xd52a('0x48')]({'where':{'id':_0x2ff9c0[_0xd52a('0x45')]['id']}})[_0xd52a('0x27')](handleEntityNotFound(_0x58a361,null))['then'](saveUpdates(_0x2ff9c0[_0xd52a('0x49')],null))[_0xd52a('0x27')](respondWithResult(_0x58a361,null))['catch'](handleError(_0x58a361,null));};exports['destroy']=function(_0x161927,_0x5d2724){return db['VoiceQueueReport']['find']({'where':{'id':_0x161927['params']['id']}})[_0xd52a('0x27')](handleEntityNotFound(_0x5d2724,null))['then'](removeEntity(_0x5d2724,null))[_0xd52a('0x43')](handleError(_0x5d2724,null));};exports['describe']=function(_0x29ebe6,_0x846860){return db[_0xd52a('0x2e')]['describe']()['then'](respondWithResult(_0x846860,null))[_0xd52a('0x43')](handleError(_0x846860,null));};exports['getVoiceQueuesReport']=function(_0x5f4c07,_0x5f3052){var _0x409e35={},_0x2128dd={},_0x33d520={'count':0x0,'rows':[]};_0x2128dd[_0xd52a('0x32')]=_['keys'](db[_0xd52a('0x2e')][_0xd52a('0x2f')]);_0x2128dd[_0xd52a('0x33')]=_[_0xd52a('0x34')](_0x5f4c07[_0xd52a('0x33')]);_0x2128dd['filters']=_[_0xd52a('0x36')](_0x2128dd[_0xd52a('0x32')],_0x2128dd[_0xd52a('0x33')]);_0x409e35[_0xd52a('0x37')]=_[_0xd52a('0x36')](_0x2128dd['model'],qs[_0xd52a('0x38')](_0x5f4c07['query'][_0xd52a('0x38')]));_0x409e35[_0xd52a('0x37')]=_0x409e35[_0xd52a('0x37')][_0xd52a('0x4b')]?_0x409e35[_0xd52a('0x37')]:_0x2128dd['model'];if(!_0x5f4c07['query'][_0xd52a('0x39')](_0xd52a('0x3a'))){_0x409e35[_0xd52a('0x21')]=qs[_0xd52a('0x21')](_0x5f4c07[_0xd52a('0x33')]['limit']);_0x409e35[_0xd52a('0x1f')]=qs[_0xd52a('0x1f')](_0x5f4c07[_0xd52a('0x33')][_0xd52a('0x1f')]);}_0x409e35[_0xd52a('0x4c')]=qs['sort'](_0x5f4c07[_0xd52a('0x33')][_0xd52a('0x3b')]);_0x409e35[_0xd52a('0x3c')]=qs[_0xd52a('0x35')](_[_0xd52a('0x3d')](_0x5f4c07[_0xd52a('0x33')],_0x2128dd[_0xd52a('0x35')]));if(_0x5f4c07['query'][_0xd52a('0x3e')]){_0x409e35[_0xd52a('0x3c')]=_[_0xd52a('0x40')](_0x409e35[_0xd52a('0x3c')],{'$or':_[_0xd52a('0x2d')](_0x409e35['attributes'],function(_0x588f16){var _0x214a22={};_0x214a22[_0x588f16]={'$like':'%'+_0x5f4c07[_0xd52a('0x33')][_0xd52a('0x3e')]+'%'};return _0x214a22;})});}_0x409e35=_['merge']({},_0x409e35,_0x5f4c07[_0xd52a('0x41')]);var _0x1646b7={'where':_0x409e35[_0xd52a('0x3c')]};return db[_0xd52a('0x2e')][_0xd52a('0x22')](_0x1646b7)['then'](function(_0x669dfc){_0x33d520['count']=_0x669dfc;if(_0x5f4c07[_0xd52a('0x33')][_0xd52a('0x46')]){_0x409e35[_0xd52a('0x47')]=[{'all':!![]}];}return db[_0xd52a('0x2e')][_0xd52a('0x4d')](_0x409e35);})['then'](function(_0x68afb0){_0x33d520[_0xd52a('0x42')]=_0x68afb0;return _0x33d520;})['then'](respondWithFilteredResult(_0x5f3052,_0x409e35,_0xd52a('0x4e')))[_0xd52a('0x43')](handleError(_0x5f3052,null,_0xd52a('0x4e')));};
\ No newline at end of file
index 83b0c62..4c0294f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01c6=['update','hook','events','../../mysqldb','VoiceQueueReport','setMaxListeners','save'];(function(_0x4f4e4b,_0x46ea73){var _0x23a628=function(_0x56791){while(--_0x56791){_0x4f4e4b['push'](_0x4f4e4b['shift']());}};_0x23a628(++_0x46ea73);}(_0x01c6,0xb8));var _0x601c=function(_0xdfc87d,_0x28e1a5){_0xdfc87d=_0xdfc87d-0x0;var _0x4e2a5e=_0x01c6[_0xdfc87d];return _0x4e2a5e;};'use strict';var EventEmitter=require(_0x601c('0x0'));var VoiceQueueReport=require(_0x601c('0x1'))['db'][_0x601c('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x601c('0x3')](0x0);var events={'afterCreate':_0x601c('0x4'),'afterUpdate':_0x601c('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3caad8){return function(_0xc9639a,_0x44ce2f,_0x9516e1){VoiceQueueReportEvents['emit'](_0x3caad8+':'+_0xc9639a['id'],_0xc9639a);VoiceQueueReportEvents['emit'](_0x3caad8,_0xc9639a);_0x9516e1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0x601c('0x6')](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x8363=['../../mysqldb','VoiceQueueReport','setMaxListeners','update','remove','emit','hook','events'];(function(_0x2ae63d,_0x100417){var _0x24fe73=function(_0x1b118c){while(--_0x1b118c){_0x2ae63d['push'](_0x2ae63d['shift']());}};_0x24fe73(++_0x100417);}(_0x8363,0x7f));var _0x3836=function(_0x23fed5,_0x211846){_0x23fed5=_0x23fed5-0x0;var _0x2fe164=_0x8363[_0x23fed5];return _0x2fe164;};'use strict';var EventEmitter=require(_0x3836('0x0'));var VoiceQueueReport=require(_0x3836('0x1'))['db'][_0x3836('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x3836('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3836('0x4'),'afterDestroy':_0x3836('0x5')};function emitEvent(_0x37f095){return function(_0x2ea000,_0x595c45,_0x3c7760){VoiceQueueReportEvents['emit'](_0x37f095+':'+_0x2ea000['id'],_0x2ea000);VoiceQueueReportEvents[_0x3836('0x6')](_0x37f095,_0x2ea000);_0x3c7760(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0x3836('0x7')](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
index 2198cc4..62922ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fc2=['VoiceQueueReport','uniqueid','calleridnum','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./voiceQueueReport.attributes','define'];(function(_0x8150e7,_0x40f472){var _0x2418a3=function(_0x31e66c){while(--_0x31e66c){_0x8150e7['push'](_0x8150e7['shift']());}};_0x2418a3(++_0x40f472);}(_0x1fc2,0x9d));var _0x21fc=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0x1fc2[_0x4ae6ef];return _0x3cbb4e;};'use strict';var _=require(_0x21fc('0x0'));var util=require('util');var logger=require(_0x21fc('0x1'))('api');var moment=require(_0x21fc('0x2'));var BPromise=require('bluebird');var rp=require(_0x21fc('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x21fc('0x4'));var config=require(_0x21fc('0x5'));var attributes=require(_0x21fc('0x6'));module['exports']=function(_0x34dea5,_0x114e7c){return _0x34dea5[_0x21fc('0x7')](_0x21fc('0x8'),attributes,{'tableName':'report_queue','paranoid':![],'indexes':[{'fields':[_0x21fc('0x9')]},{'fields':[_0x21fc('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf712=['./voiceQueueReport.attributes','exports','report_queue','calleridnum','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x2a5b7b,_0x590786){var _0x122998=function(_0x42881e){while(--_0x42881e){_0x2a5b7b['push'](_0x2a5b7b['shift']());}};_0x122998(++_0x590786);}(_0xf712,0x19c));var _0x2f71=function(_0x5e5cc6,_0x585e70){_0x5e5cc6=_0x5e5cc6-0x0;var _0x29fac2=_0xf712[_0x5e5cc6];return _0x29fac2;};'use strict';var _=require(_0x2f71('0x0'));var util=require('util');var logger=require(_0x2f71('0x1'))(_0x2f71('0x2'));var moment=require(_0x2f71('0x3'));var BPromise=require(_0x2f71('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2f71('0x5'));var rimraf=require(_0x2f71('0x6'));var config=require(_0x2f71('0x7'));var attributes=require(_0x2f71('0x8'));module[_0x2f71('0x9')]=function(_0x53ecbf,_0x3508a2){return _0x53ecbf['define']('VoiceQueueReport',attributes,{'tableName':_0x2f71('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0x2f71('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 2805da8..64b6779 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x059c=['VoiceQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','VoiceQueueReport','findAll','options','raw','where','attributes','map','include','model','GetVoiceQueueReport','stringify','CreateVoiceQueueReport','create','body','debug','UpdateVoiceQueueReport','limit','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','redis','defaults','localhost','register','request','then','VoiceQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x335db1,_0x3434ba){var _0x14bcc4=function(_0x4e7d16){while(--_0x4e7d16){_0x335db1['push'](_0x335db1['shift']());}};_0x14bcc4(++_0x3434ba);}(_0x059c,0xda));var _0xc059=function(_0x373b3e,_0x347ac7){_0x373b3e=_0x373b3e-0x0;var _0xa4ce3=_0x059c[_0x373b3e];return _0xa4ce3;};'use strict';var _=require(_0xc059('0x0'));var util=require(_0xc059('0x1'));var moment=require('moment');var BPromise=require(_0xc059('0x2'));var rs=require(_0xc059('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc059('0x4'));var logger=require(_0xc059('0x5'))(_0xc059('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc059('0x7')]['http']({'port':0x232a});config[_0xc059('0x8')]=_[_0xc059('0x9')](config[_0xc059('0x8')],{'host':_0xc059('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc059('0x8')]));require('./voiceQueueReport.socket')[_0xc059('0xb')](socket);function respondWithRpcPromise(_0xa636ea,_0x235af1,_0xe1f4a7){return new BPromise(function(_0x35674d,_0x4500d9){return client[_0xc059('0xc')](_0xa636ea,_0xe1f4a7)[_0xc059('0xd')](function(_0x5d0803){logger['info'](_0xc059('0xe'),_0x235af1,_0xc059('0xf'));logger['debug'](_0xc059('0x10'),_0x235af1,_0xc059('0xf'),JSON['stringify'](_0x5d0803));if(_0x5d0803[_0xc059('0x11')]){if(_0x5d0803[_0xc059('0x11')][_0xc059('0x12')]===0x1f4){logger['error'](_0xc059('0xe'),_0x235af1,_0x5d0803[_0xc059('0x11')][_0xc059('0x13')]);return _0x4500d9(_0x5d0803['error'][_0xc059('0x13')]);}logger[_0xc059('0x11')]('VoiceQueueReport,\x20%s,\x20%s',_0x235af1,_0x5d0803['error'][_0xc059('0x13')]);return _0x35674d(_0x5d0803[_0xc059('0x11')]['message']);}else{logger[_0xc059('0x14')]('VoiceQueueReport,\x20%s,\x20%s',_0x235af1,_0xc059('0xf'));_0x35674d(_0x5d0803['result'][_0xc059('0x13')]);}})[_0xc059('0x15')](function(_0xb70e85){logger[_0xc059('0x11')](_0xc059('0xe'),_0x235af1,_0xb70e85);_0x4500d9(_0xb70e85);});});}exports['GetVoiceQueueReport']=function(_0x1f18f9){var _0x16def5=this;return new Promise(function(_0x502783,_0x236db1){return db[_0xc059('0x16')][_0xc059('0x17')]({'raw':_0x1f18f9[_0xc059('0x18')]?_0x1f18f9[_0xc059('0x18')][_0xc059('0x19')]===undefined?!![]:![]:!![],'where':_0x1f18f9[_0xc059('0x18')]?_0x1f18f9[_0xc059('0x18')][_0xc059('0x1a')]||null:null,'attributes':_0x1f18f9[_0xc059('0x18')]?_0x1f18f9[_0xc059('0x18')][_0xc059('0x1b')]||null:null,'limit':_0x1f18f9[_0xc059('0x18')]?_0x1f18f9[_0xc059('0x18')]['limit']||null:null,'include':_0x1f18f9['options']?_0x1f18f9[_0xc059('0x18')]['include']?_[_0xc059('0x1c')](_0x1f18f9[_0xc059('0x18')][_0xc059('0x1d')],function(_0x18f490){return{'model':db[_0x18f490[_0xc059('0x1e')]],'as':_0x18f490['as'],'attributes':_0x18f490[_0xc059('0x1b')],'include':_0x18f490[_0xc059('0x1d')]?_[_0xc059('0x1c')](_0x18f490[_0xc059('0x1d')],function(_0x4f7bd2){return{'model':db[_0x4f7bd2[_0xc059('0x1e')]],'as':_0x4f7bd2['as'],'attributes':_0x4f7bd2['attributes'],'include':_0x4f7bd2[_0xc059('0x1d')]?_['map'](_0x4f7bd2['include'],function(_0x26e9d9){return{'model':db[_0x26e9d9[_0xc059('0x1e')]],'as':_0x26e9d9['as'],'attributes':_0x26e9d9[_0xc059('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xc059('0xd')](function(_0xe861d8){logger[_0xc059('0x14')](_0xc059('0x1f'),_0x1f18f9);logger['debug'](_0xc059('0x1f'),_0x1f18f9,JSON[_0xc059('0x20')](_0xe861d8));_0x502783(_0xe861d8);})[_0xc059('0x15')](function(_0x34f603){logger[_0xc059('0x11')](_0xc059('0x1f'),_0x34f603[_0xc059('0x13')],_0x1f18f9);_0x236db1(_0x16def5[_0xc059('0x11')](0x1f4,_0x34f603[_0xc059('0x13')]));});});};exports[_0xc059('0x21')]=function(_0x137b42){var _0x12ca89=this;return new Promise(function(_0x361314,_0x1c1238){return db['VoiceQueueReport'][_0xc059('0x22')](_0x137b42[_0xc059('0x23')],{'raw':_0x137b42[_0xc059('0x18')]?_0x137b42[_0xc059('0x18')][_0xc059('0x19')]===undefined?!![]:![]:!![]})[_0xc059('0xd')](function(_0x3d9061){logger[_0xc059('0x14')]('CreateVoiceQueueReport',_0x137b42);logger[_0xc059('0x24')](_0xc059('0x21'),_0x137b42,JSON['stringify'](_0x3d9061));_0x361314(_0x3d9061);})[_0xc059('0x15')](function(_0xe9d579){logger[_0xc059('0x11')](_0xc059('0x21'),_0xe9d579['message'],_0x137b42);_0x1c1238(_0x12ca89[_0xc059('0x11')](0x1f4,_0xe9d579[_0xc059('0x13')]));});});};exports[_0xc059('0x25')]=function(_0x3834b3){var _0x1a45cd=this;return new Promise(function(_0x5a88f8,_0xd762f8){return db[_0xc059('0x16')]['update'](_0x3834b3['body'],{'raw':_0x3834b3[_0xc059('0x18')]?_0x3834b3['options'][_0xc059('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3834b3[_0xc059('0x18')]?_0x3834b3[_0xc059('0x18')][_0xc059('0x1a')]||null:null,'attributes':_0x3834b3[_0xc059('0x18')]?_0x3834b3['options']['attributes']||null:null,'limit':_0x3834b3[_0xc059('0x18')]?_0x3834b3['options'][_0xc059('0x26')]||null:null})['then'](function(_0x50cf18){logger[_0xc059('0x14')](_0xc059('0x25'),_0x3834b3);logger[_0xc059('0x24')]('UpdateVoiceQueueReport',_0x3834b3,JSON[_0xc059('0x20')](_0x50cf18));_0x5a88f8(_0x50cf18);})['catch'](function(_0x3158f1){logger['error'](_0xc059('0x25'),_0x3158f1[_0xc059('0x13')],_0x3834b3);_0xd762f8(_0x1a45cd[_0xc059('0x11')](0x1f4,_0x3158f1[_0xc059('0x13')]));});});};
\ No newline at end of file
+var _0x07d0=['../../config/utils','../../config/logger','rpc','client','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','register','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','VoiceQueueReport','findAll','options','where','limit','include','map','model','attributes','GetVoiceQueueReport','debug','CreateVoiceQueueReport','raw','UpdateVoiceQueueReport','update','body','util','moment','bluebird','ioredis'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x07d0,0x94));var _0x007d=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x07d0[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x007d('0x0'));var moment=require(_0x007d('0x1'));var BPromise=require(_0x007d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x007d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x007d('0x4'));var logger=require(_0x007d('0x5'))(_0x007d('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x007d('0x7')]['http']({'port':0x232a});config[_0x007d('0x8')]=_[_0x007d('0x9')](config[_0x007d('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x007d('0xa'))(new Redis(config['redis']));require(_0x007d('0xb'))[_0x007d('0xc')](socket);function respondWithRpcPromise(_0x35967f,_0x49fbeb,_0x3b1ac2){return new BPromise(function(_0xb94d8c,_0x3240db){return client['request'](_0x35967f,_0x3b1ac2)[_0x007d('0xd')](function(_0x12521f){logger[_0x007d('0xe')](_0x007d('0xf'),_0x49fbeb,_0x007d('0x10'));logger['debug']('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x49fbeb,_0x007d('0x10'),JSON[_0x007d('0x11')](_0x12521f));if(_0x12521f[_0x007d('0x12')]){if(_0x12521f[_0x007d('0x12')]['code']===0x1f4){logger[_0x007d('0x12')]('VoiceQueueReport,\x20%s,\x20%s',_0x49fbeb,_0x12521f[_0x007d('0x12')][_0x007d('0x13')]);return _0x3240db(_0x12521f['error']['message']);}logger[_0x007d('0x12')](_0x007d('0xf'),_0x49fbeb,_0x12521f['error']['message']);return _0xb94d8c(_0x12521f[_0x007d('0x12')]['message']);}else{logger[_0x007d('0xe')](_0x007d('0xf'),_0x49fbeb,_0x007d('0x10'));_0xb94d8c(_0x12521f[_0x007d('0x14')]['message']);}})[_0x007d('0x15')](function(_0x37a613){logger[_0x007d('0x12')]('VoiceQueueReport,\x20%s,\x20%s',_0x49fbeb,_0x37a613);_0x3240db(_0x37a613);});});}exports['GetVoiceQueueReport']=function(_0x44664c){var _0x5b997a=this;return new Promise(function(_0xf28e43,_0x2a9c9b){return db[_0x007d('0x16')][_0x007d('0x17')]({'raw':_0x44664c[_0x007d('0x18')]?_0x44664c[_0x007d('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x44664c[_0x007d('0x18')]?_0x44664c['options'][_0x007d('0x19')]||null:null,'attributes':_0x44664c['options']?_0x44664c[_0x007d('0x18')]['attributes']||null:null,'limit':_0x44664c[_0x007d('0x18')]?_0x44664c[_0x007d('0x18')][_0x007d('0x1a')]||null:null,'include':_0x44664c[_0x007d('0x18')]?_0x44664c[_0x007d('0x18')][_0x007d('0x1b')]?_[_0x007d('0x1c')](_0x44664c[_0x007d('0x18')][_0x007d('0x1b')],function(_0x2fed99){return{'model':db[_0x2fed99['model']],'as':_0x2fed99['as'],'attributes':_0x2fed99['attributes'],'include':_0x2fed99[_0x007d('0x1b')]?_[_0x007d('0x1c')](_0x2fed99['include'],function(_0x26be81){return{'model':db[_0x26be81[_0x007d('0x1d')]],'as':_0x26be81['as'],'attributes':_0x26be81[_0x007d('0x1e')],'include':_0x26be81[_0x007d('0x1b')]?_['map'](_0x26be81[_0x007d('0x1b')],function(_0x1440f2){return{'model':db[_0x1440f2[_0x007d('0x1d')]],'as':_0x1440f2['as'],'attributes':_0x1440f2[_0x007d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x007d('0xd')](function(_0x50508d){logger['info'](_0x007d('0x1f'),_0x44664c);logger[_0x007d('0x20')](_0x007d('0x1f'),_0x44664c,JSON[_0x007d('0x11')](_0x50508d));_0xf28e43(_0x50508d);})[_0x007d('0x15')](function(_0x1069ed){logger[_0x007d('0x12')](_0x007d('0x1f'),_0x1069ed[_0x007d('0x13')],_0x44664c);_0x2a9c9b(_0x5b997a[_0x007d('0x12')](0x1f4,_0x1069ed[_0x007d('0x13')]));});});};exports[_0x007d('0x21')]=function(_0x3412be){var _0x177604=this;return new Promise(function(_0x398f43,_0x29de3c){return db['VoiceQueueReport']['create'](_0x3412be['body'],{'raw':_0x3412be[_0x007d('0x18')]?_0x3412be[_0x007d('0x18')][_0x007d('0x22')]===undefined?!![]:![]:!![]})[_0x007d('0xd')](function(_0x353ffc){logger[_0x007d('0xe')]('CreateVoiceQueueReport',_0x3412be);logger[_0x007d('0x20')]('CreateVoiceQueueReport',_0x3412be,JSON[_0x007d('0x11')](_0x353ffc));_0x398f43(_0x353ffc);})['catch'](function(_0x33af1b){logger['error']('CreateVoiceQueueReport',_0x33af1b[_0x007d('0x13')],_0x3412be);_0x29de3c(_0x177604[_0x007d('0x12')](0x1f4,_0x33af1b[_0x007d('0x13')]));});});};exports[_0x007d('0x23')]=function(_0x504493){var _0x42db29=this;return new Promise(function(_0x55ee5d,_0x4baee5){return db['VoiceQueueReport'][_0x007d('0x24')](_0x504493[_0x007d('0x25')],{'raw':_0x504493['options']?_0x504493[_0x007d('0x18')][_0x007d('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x504493[_0x007d('0x18')]?_0x504493[_0x007d('0x18')][_0x007d('0x19')]||null:null,'attributes':_0x504493[_0x007d('0x18')]?_0x504493['options'][_0x007d('0x1e')]||null:null,'limit':_0x504493[_0x007d('0x18')]?_0x504493[_0x007d('0x18')][_0x007d('0x1a')]||null:null})[_0x007d('0xd')](function(_0x1a31c1){logger[_0x007d('0xe')](_0x007d('0x23'),_0x504493);logger['debug'](_0x007d('0x23'),_0x504493,JSON[_0x007d('0x11')](_0x1a31c1));_0x55ee5d(_0x1a31c1);})[_0x007d('0x15')](function(_0x46b566){logger[_0x007d('0x12')](_0x007d('0x23'),_0x46b566[_0x007d('0x13')],_0x504493);_0x4baee5(_0x42db29['error'](0x1f4,_0x46b566[_0x007d('0x13')]));});});};
\ No newline at end of file
index b129720..f6c92fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce1=['./voiceQueueReport.events','save','remove','update','emit','removeListener','register','length','voiceQueueReport:'];(function(_0x4d6aa7,_0x1cc48c){var _0x5275ec=function(_0x5c6a83){while(--_0x5c6a83){_0x4d6aa7['push'](_0x4d6aa7['shift']());}};_0x5275ec(++_0x1cc48c);}(_0x8ce1,0x183));var _0x18ce=function(_0x70e80,_0x1410ee){_0x70e80=_0x70e80-0x0;var _0x51a0cf=_0x8ce1[_0x70e80];return _0x51a0cf;};'use strict';var VoiceQueueReportEvents=require(_0x18ce('0x0'));var events=[_0x18ce('0x1'),_0x18ce('0x2'),_0x18ce('0x3')];function createListener(_0x202f93,_0x22b196){return function(_0x211dc4){_0x22b196[_0x18ce('0x4')](_0x202f93,_0x211dc4);};}function removeListener(_0x1d842c,_0x15f55e){return function(){VoiceQueueReportEvents[_0x18ce('0x5')](_0x1d842c,_0x15f55e);};}exports[_0x18ce('0x6')]=function(_0x13ff9d){for(var _0x36f8db=0x0,_0x682d4b=events[_0x18ce('0x7')];_0x36f8db<_0x682d4b;_0x36f8db++){var _0x4ebf82=events[_0x36f8db];var _0x1a60c5=createListener(_0x18ce('0x8')+_0x4ebf82,_0x13ff9d);VoiceQueueReportEvents['on'](_0x4ebf82,_0x1a60c5);}};
\ No newline at end of file
+var _0x8ccc=['voiceQueueReport:','./voiceQueueReport.events','update','removeListener','register','length'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0x8ccc,0x16f));var _0xc8cc=function(_0x3a8702,_0x115db6){_0x3a8702=_0x3a8702-0x0;var _0x56220c=_0x8ccc[_0x3a8702];return _0x56220c;};'use strict';var VoiceQueueReportEvents=require(_0xc8cc('0x0'));var events=['save','remove',_0xc8cc('0x1')];function createListener(_0x547a31,_0x4e17c1){return function(_0x33bb3e){_0x4e17c1['emit'](_0x547a31,_0x33bb3e);};}function removeListener(_0x65c502,_0x2847b0){return function(){VoiceQueueReportEvents[_0xc8cc('0x2')](_0x65c502,_0x2847b0);};}exports[_0xc8cc('0x3')]=function(_0x21488f){for(var _0x5764cc=0x0,_0x51ca6c=events[_0xc8cc('0x4')];_0x5764cc<_0x51ca6c;_0x5764cc++){var _0x3e26d4=events[_0x5764cc];var _0x46a646=createListener(_0xc8cc('0x5')+_0x3e26d4,_0x21488f);VoiceQueueReportEvents['on'](_0x3e26d4,_0x46a646);}};
\ No newline at end of file
index ee655e4..679c192 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf925=['delete','destroy','exports','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueuesLog.controller','get','isAuthenticated','/:id','show','post','update'];(function(_0xa2867,_0x4f70d0){var _0x58ffb9=function(_0x28a6d6){while(--_0x28a6d6){_0xa2867['push'](_0xa2867['shift']());}};_0x58ffb9(++_0x4f70d0);}(_0xf925,0x1a7));var _0x5f92=function(_0x481ee8,_0x5aa574){_0x481ee8=_0x481ee8-0x0;var _0x5ad55f=_0xf925[_0x481ee8];return _0x5ad55f;};'use strict';var multer=require(_0x5f92('0x0'));var util=require(_0x5f92('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x5f92('0x2'));var auth=require(_0x5f92('0x3'));var interaction=require(_0x5f92('0x4'));var config=require('../../config/environment');var controller=require(_0x5f92('0x5'));router[_0x5f92('0x6')]('/',auth[_0x5f92('0x7')](),controller['index']);router[_0x5f92('0x6')](_0x5f92('0x8'),auth[_0x5f92('0x7')](),controller[_0x5f92('0x9')]);router[_0x5f92('0xa')]('/',auth[_0x5f92('0x7')](),controller['create']);router['put'](_0x5f92('0x8'),auth['isAuthenticated'](),controller[_0x5f92('0xb')]);router[_0x5f92('0xc')](_0x5f92('0x8'),auth['isAuthenticated'](),controller[_0x5f92('0xd')]);module[_0x5f92('0xe')]=router;
\ No newline at end of file
+var _0xead3=['post','create','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show'];(function(_0x324a83,_0x5dd941){var _0x358081=function(_0x1fa621){while(--_0x1fa621){_0x324a83['push'](_0x324a83['shift']());}};_0x358081(++_0x5dd941);}(_0xead3,0xcc));var _0x3ead=function(_0x17e315,_0x361db6){_0x17e315=_0x17e315-0x0;var _0x3e7afb=_0xead3[_0x17e315];return _0x3e7afb;};'use strict';var multer=require('multer');var util=require(_0x3ead('0x0'));var path=require(_0x3ead('0x1'));var timeout=require(_0x3ead('0x2'));var express=require(_0x3ead('0x3'));var router=express[_0x3ead('0x4')]();var fs_extra=require(_0x3ead('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3ead('0x6'));var config=require(_0x3ead('0x7'));var controller=require('./voiceQueuesLog.controller');router['get']('/',auth[_0x3ead('0x8')](),controller[_0x3ead('0x9')]);router['get'](_0x3ead('0xa'),auth[_0x3ead('0x8')](),controller[_0x3ead('0xb')]);router[_0x3ead('0xc')]('/',auth[_0x3ead('0x8')](),controller[_0x3ead('0xd')]);router[_0x3ead('0xe')](_0x3ead('0xa'),auth[_0x3ead('0x8')](),controller[_0x3ead('0xf')]);router[_0x3ead('0x10')](_0x3ead('0xa'),auth['isAuthenticated'](),controller[_0x3ead('0x11')]);module['exports']=router;
\ No newline at end of file
index 15e79f7..a8a446f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x858c=['STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize','exports'];(function(_0x46428c,_0x20ab75){var _0x16a677=function(_0x2b0817){while(--_0x2b0817){_0x46428c['push'](_0x46428c['shift']());}};_0x16a677(++_0x20ab75);}(_0x858c,0x17e));var _0xc858=function(_0x5cd26d,_0x18bd79){_0x5cd26d=_0x5cd26d-0x0;var _0x5264f7=_0x858c[_0x5cd26d];return _0x5264f7;};'use strict';var Sequelize=require(_0xc858('0x0'));var moment=require('moment');module[_0xc858('0x1')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xc858('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xc858('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xc858('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xc858('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xc858('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xc858('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xc858('0x3')],'allowNull':![],'defaultValue':moment()[_0xc858('0x4')](_0xc858('0x5'))}};
\ No newline at end of file
+var _0x722c=['STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize'];(function(_0x4a4f2e,_0x176cc3){var _0x31b036=function(_0x370520){while(--_0x370520){_0x4a4f2e['push'](_0x4a4f2e['shift']());}};_0x31b036(++_0x176cc3);}(_0x722c,0x1e4));var _0xc722=function(_0x50991d,_0x52493b){_0x50991d=_0x50991d-0x0;var _0x17c890=_0x722c[_0x50991d];return _0x17c890;};'use strict';var Sequelize=require(_0xc722('0x0'));var moment=require('moment');module['exports']={'time':{'type':Sequelize[_0xc722('0x1')]},'callid':{'type':Sequelize[_0xc722('0x1')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xc722('0x1')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xc722('0x1')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xc722('0x1')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xc722('0x1')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xc722('0x1')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xc722('0x2')],'allowNull':![],'defaultValue':moment()[_0xc722('0x3')](_0xc722('0x4'))}};
\ No newline at end of file
index 8e93cbe..53d9522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a91=['../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','apply','save','then','stack','name','rawAttributes','fieldName','type','map','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceQueuesLog','include','findAll','rows','catch','show','length','includeAll','find','create','body','params','destroy','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','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/utils','../../config/environment'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x0a91,0x1cd));var _0x10a9=function(_0x52a01f,_0x476c6a){_0x52a01f=_0x52a01f-0x0;var _0x37748f=_0x0a91[_0x52a01f];return _0x37748f;};'use strict';var emlformat=require(_0x10a9('0x0'));var rimraf=require(_0x10a9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x10a9('0x2'));var moment=require(_0x10a9('0x3'));var BPromise=require(_0x10a9('0x4'));var Mustache=require(_0x10a9('0x5'));var util=require('util');var path=require(_0x10a9('0x6'));var sox=require('sox');var csv=require(_0x10a9('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x10a9('0x8'));var _=require(_0x10a9('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x10a9('0xa'));var deskjs=require(_0x10a9('0xb'));var toCsv=require(_0x10a9('0x7'));var querystring=require(_0x10a9('0xc'));var Papa=require('papaparse');var Redis=require(_0x10a9('0xd'));var authService=require(_0x10a9('0xe'));var qs=require(_0x10a9('0xf'));var as=require(_0x10a9('0x10'));var hardwareService=require(_0x10a9('0x11'));var logger=require(_0x10a9('0x12'))(_0x10a9('0x13'));var utils=require(_0x10a9('0x14'));var config=require(_0x10a9('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x10a9('0x16'))['db'];function respondWithStatusCode(_0x343fe7,_0x345fb7){_0x345fb7=_0x345fb7||0xcc;return function(_0x233a3a){if(_0x233a3a){return _0x343fe7[_0x10a9('0x17')](_0x345fb7);}return _0x343fe7['status'](_0x345fb7)[_0x10a9('0x18')]();};}function respondWithResult(_0x189e48,_0x306693){_0x306693=_0x306693||0xc8;return function(_0x251b14){if(_0x251b14){return _0x189e48[_0x10a9('0x19')](_0x306693)[_0x10a9('0x1a')](_0x251b14);}};}function respondWithFilteredResult(_0x515139,_0x452c9c){return function(_0xdb1af4){if(_0xdb1af4){var _0x4bc6a1=typeof _0x452c9c[_0x10a9('0x1b')]==='undefined'&&typeof _0x452c9c['limit']===_0x10a9('0x1c');var _0x9a293e=_0xdb1af4['count'];var _0x2d2d5d=_0x4bc6a1?0x0:_0x452c9c['offset'];var _0x38e9b9=_0x4bc6a1?_0xdb1af4[_0x10a9('0x1d')]:_0x452c9c['offset']+_0x452c9c[_0x10a9('0x1e')];var _0x5d7a94;if(_0x38e9b9>=_0x9a293e){_0x38e9b9=_0x9a293e;_0x5d7a94=0xc8;}else{_0x5d7a94=0xce;}_0x515139['status'](_0x5d7a94);return _0x515139['set']('Content-Range',_0x2d2d5d+'-'+_0x38e9b9+'/'+_0x9a293e)[_0x10a9('0x1a')](_0xdb1af4);}return null;};}function patchUpdates(_0x6664a1){return function(_0x1a5c48){try{jsonpatch[_0x10a9('0x1f')](_0x1a5c48,_0x6664a1,!![]);}catch(_0x92e0ff){return BPromise['reject'](_0x92e0ff);}return _0x1a5c48[_0x10a9('0x20')]();};}function saveUpdates(_0x4ced5d,_0x57880e){return function(_0x2cab98){if(_0x2cab98){return _0x2cab98['update'](_0x4ced5d)[_0x10a9('0x21')](function(_0x17f6a9){return _0x17f6a9;});}return null;};}function removeEntity(_0x4132e9,_0x460ea0){return function(_0x24089f){if(_0x24089f){return _0x24089f['destroy']()[_0x10a9('0x21')](function(){_0x4132e9[_0x10a9('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16397d,_0x3d24c9){return function(_0x2a539e){if(!_0x2a539e){_0x16397d[_0x10a9('0x17')](0x194);}return _0x2a539e;};}function handleError(_0x67334d,_0x284461){_0x284461=_0x284461||0x1f4;return function(_0x240465){logger['error'](_0x240465[_0x10a9('0x22')]);if(_0x240465[_0x10a9('0x23')]){delete _0x240465[_0x10a9('0x23')];}_0x67334d[_0x10a9('0x19')](_0x284461)['send'](_0x240465);};}exports['index']=function(_0x4719dc,_0x3ebbe2){var _0x21fc66={},_0x2e444b={},_0x1202a5={'count':0x0,'rows':[]};var _0x255e86=_['map'](db['VoiceQueuesLog'][_0x10a9('0x24')],function(_0x149910){return{'name':_0x149910[_0x10a9('0x25')],'type':_0x149910[_0x10a9('0x26')]['key']};});_0x2e444b['model']=_[_0x10a9('0x27')](_0x255e86,_0x10a9('0x23'));_0x2e444b[_0x10a9('0x28')]=_[_0x10a9('0x29')](_0x4719dc[_0x10a9('0x28')]);_0x2e444b[_0x10a9('0x2a')]=_['intersection'](_0x2e444b[_0x10a9('0x2b')],_0x2e444b[_0x10a9('0x28')]);_0x21fc66[_0x10a9('0x2c')]=_[_0x10a9('0x2d')](_0x2e444b[_0x10a9('0x2b')],qs[_0x10a9('0x2e')](_0x4719dc[_0x10a9('0x28')][_0x10a9('0x2e')]));_0x21fc66[_0x10a9('0x2c')]=_0x21fc66[_0x10a9('0x2c')]['length']?_0x21fc66[_0x10a9('0x2c')]:_0x2e444b[_0x10a9('0x2b')];if(!_0x4719dc[_0x10a9('0x28')][_0x10a9('0x2f')]('nolimit')){_0x21fc66[_0x10a9('0x1e')]=qs['limit'](_0x4719dc[_0x10a9('0x28')]['limit']);_0x21fc66[_0x10a9('0x1b')]=qs[_0x10a9('0x1b')](_0x4719dc[_0x10a9('0x28')][_0x10a9('0x1b')]);}_0x21fc66[_0x10a9('0x30')]=qs[_0x10a9('0x31')](_0x4719dc['query']['sort']);_0x21fc66[_0x10a9('0x32')]=qs[_0x10a9('0x2a')](_[_0x10a9('0x33')](_0x4719dc[_0x10a9('0x28')],_0x2e444b[_0x10a9('0x2a')]),_0x255e86);if(_0x4719dc[_0x10a9('0x28')][_0x10a9('0x34')]){_0x21fc66[_0x10a9('0x32')]=_[_0x10a9('0x35')](_0x21fc66[_0x10a9('0x32')],{'$or':_[_0x10a9('0x27')](_0x255e86,function(_0x224a5e){if(_0x224a5e[_0x10a9('0x26')]!==_0x10a9('0x36')){var _0x398e2e={};_0x398e2e[_0x224a5e['name']]={'$like':'%'+_0x4719dc[_0x10a9('0x28')][_0x10a9('0x34')]+'%'};return _0x398e2e;}})});}_0x21fc66=_[_0x10a9('0x35')]({},_0x21fc66,_0x4719dc[_0x10a9('0x37')]);var _0x56dfb0={'where':_0x21fc66['where']};return db[_0x10a9('0x38')][_0x10a9('0x1d')](_0x56dfb0)[_0x10a9('0x21')](function(_0x1fc5a9){_0x1202a5[_0x10a9('0x1d')]=_0x1fc5a9;if(_0x4719dc['query']['includeAll']){_0x21fc66[_0x10a9('0x39')]=[{'all':!![]}];}return db[_0x10a9('0x38')][_0x10a9('0x3a')](_0x21fc66);})[_0x10a9('0x21')](function(_0x49671f){_0x1202a5[_0x10a9('0x3b')]=_0x49671f;return _0x1202a5;})[_0x10a9('0x21')](respondWithFilteredResult(_0x3ebbe2,_0x21fc66))[_0x10a9('0x3c')](handleError(_0x3ebbe2,null));};exports[_0x10a9('0x3d')]=function(_0x2c96d0,_0x17d84d){var _0x2b0e5d={'raw':!![],'where':{'id':_0x2c96d0['params']['id']}},_0x4150d7={};_0x4150d7[_0x10a9('0x2b')]=_[_0x10a9('0x29')](db['VoiceQueuesLog']['rawAttributes']);_0x4150d7[_0x10a9('0x28')]=_[_0x10a9('0x29')](_0x2c96d0[_0x10a9('0x28')]);_0x4150d7['filters']=_[_0x10a9('0x2d')](_0x4150d7[_0x10a9('0x2b')],_0x4150d7[_0x10a9('0x28')]);_0x2b0e5d[_0x10a9('0x2c')]=_['intersection'](_0x4150d7[_0x10a9('0x2b')],qs[_0x10a9('0x2e')](_0x2c96d0['query'][_0x10a9('0x2e')]));_0x2b0e5d[_0x10a9('0x2c')]=_0x2b0e5d['attributes'][_0x10a9('0x3e')]?_0x2b0e5d[_0x10a9('0x2c')]:_0x4150d7[_0x10a9('0x2b')];if(_0x2c96d0[_0x10a9('0x28')][_0x10a9('0x3f')]){_0x2b0e5d[_0x10a9('0x39')]=[{'all':!![]}];}_0x2b0e5d=_[_0x10a9('0x35')]({},_0x2b0e5d,_0x2c96d0[_0x10a9('0x37')]);return db[_0x10a9('0x38')][_0x10a9('0x40')](_0x2b0e5d)[_0x10a9('0x21')](handleEntityNotFound(_0x17d84d,null))[_0x10a9('0x21')](respondWithResult(_0x17d84d,null))[_0x10a9('0x3c')](handleError(_0x17d84d,null));};exports[_0x10a9('0x41')]=function(_0x583a03,_0x37b033){return db[_0x10a9('0x38')]['create'](_0x583a03['body'],{})[_0x10a9('0x21')](respondWithResult(_0x37b033,0xc9))[_0x10a9('0x3c')](handleError(_0x37b033,null));};exports['update']=function(_0xd20d02,_0x56ac56){if(_0xd20d02[_0x10a9('0x42')]['id']){delete _0xd20d02[_0x10a9('0x42')]['id'];}return db[_0x10a9('0x38')][_0x10a9('0x40')]({'where':{'id':_0xd20d02[_0x10a9('0x43')]['id']}})[_0x10a9('0x21')](handleEntityNotFound(_0x56ac56,null))[_0x10a9('0x21')](saveUpdates(_0xd20d02[_0x10a9('0x42')],null))[_0x10a9('0x21')](respondWithResult(_0x56ac56,null))[_0x10a9('0x3c')](handleError(_0x56ac56,null));};exports[_0x10a9('0x44')]=function(_0x39a42d,_0x43be3c){return db[_0x10a9('0x38')][_0x10a9('0x40')]({'where':{'id':_0x39a42d[_0x10a9('0x43')]['id']}})[_0x10a9('0x21')](handleEntityNotFound(_0x43be3c,null))[_0x10a9('0x21')](removeEntity(_0x43be3c,null))[_0x10a9('0x3c')](handleError(_0x43be3c,null));};
\ No newline at end of file
+var _0xd631=['lodash','crypto','jsforce','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','status','error','name','send','index','VoiceQueuesLog','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','rows','find','catch','create','body','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0xd631,0x16c));var _0x1d63=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xd631[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0x1d63('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1d63('0x1'));var rp=require(_0x1d63('0x2'));var moment=require(_0x1d63('0x3'));var BPromise=require(_0x1d63('0x4'));var Mustache=require(_0x1d63('0x5'));var util=require(_0x1d63('0x6'));var path=require(_0x1d63('0x7'));var sox=require(_0x1d63('0x8'));var csv=require('to-csv');var ejs=require(_0x1d63('0x9'));var fs=require('fs');var fs_extra=require(_0x1d63('0xa'));var _=require(_0x1d63('0xb'));var squel=require('squel');var crypto=require(_0x1d63('0xc'));var jsforce=require(_0x1d63('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x1d63('0xe'));var querystring=require(_0x1d63('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x1d63('0x10'));var qs=require(_0x1d63('0x11'));var as=require(_0x1d63('0x12'));var hardwareService=require(_0x1d63('0x13'));var logger=require(_0x1d63('0x14'))(_0x1d63('0x15'));var utils=require('../../config/utils');var config=require(_0x1d63('0x16'));var licenseUtil=require(_0x1d63('0x17'));var db=require(_0x1d63('0x18'))['db'];function respondWithStatusCode(_0x3456cd,_0x5ae7f3){_0x5ae7f3=_0x5ae7f3||0xcc;return function(_0x56bce8){if(_0x56bce8){return _0x3456cd[_0x1d63('0x19')](_0x5ae7f3);}return _0x3456cd['status'](_0x5ae7f3)[_0x1d63('0x1a')]();};}function respondWithResult(_0x10a9ac,_0x267170){_0x267170=_0x267170||0xc8;return function(_0x178247){if(_0x178247){return _0x10a9ac['status'](_0x267170)['json'](_0x178247);}};}function respondWithFilteredResult(_0x2a1fbb,_0x3e0d71){return function(_0x3828b5){if(_0x3828b5){var _0x1f6b87=typeof _0x3e0d71[_0x1d63('0x1b')]==='undefined'&&typeof _0x3e0d71[_0x1d63('0x1c')]==='undefined';var _0x1318dc=_0x3828b5[_0x1d63('0x1d')];var _0x818b96=_0x1f6b87?0x0:_0x3e0d71['offset'];var _0x36f210=_0x1f6b87?_0x3828b5[_0x1d63('0x1d')]:_0x3e0d71[_0x1d63('0x1b')]+_0x3e0d71[_0x1d63('0x1c')];var _0x318154;if(_0x36f210>=_0x1318dc){_0x36f210=_0x1318dc;_0x318154=0xc8;}else{_0x318154=0xce;}_0x2a1fbb['status'](_0x318154);return _0x2a1fbb[_0x1d63('0x1e')](_0x1d63('0x1f'),_0x818b96+'-'+_0x36f210+'/'+_0x1318dc)[_0x1d63('0x20')](_0x3828b5);}return null;};}function patchUpdates(_0x54958a){return function(_0x4ee0e0){try{jsonpatch[_0x1d63('0x21')](_0x4ee0e0,_0x54958a,!![]);}catch(_0x43d25a){return BPromise[_0x1d63('0x22')](_0x43d25a);}return _0x4ee0e0[_0x1d63('0x23')]();};}function saveUpdates(_0x5af356,_0x429d3f){return function(_0x427d0c){if(_0x427d0c){return _0x427d0c[_0x1d63('0x24')](_0x5af356)['then'](function(_0x2f497f){return _0x2f497f;});}return null;};}function removeEntity(_0x5b623c,_0x27081e){return function(_0xc3eea3){if(_0xc3eea3){return _0xc3eea3[_0x1d63('0x25')]()[_0x1d63('0x26')](function(){_0x5b623c[_0x1d63('0x27')](0xcc)[_0x1d63('0x1a')]();});}};}function handleEntityNotFound(_0x19db31,_0x1e54a3){return function(_0x3b7c18){if(!_0x3b7c18){_0x19db31[_0x1d63('0x19')](0x194);}return _0x3b7c18;};}function handleError(_0x55676f,_0x1e3e73){_0x1e3e73=_0x1e3e73||0x1f4;return function(_0x29092c){logger[_0x1d63('0x28')](_0x29092c['stack']);if(_0x29092c[_0x1d63('0x29')]){delete _0x29092c['name'];}_0x55676f[_0x1d63('0x27')](_0x1e3e73)[_0x1d63('0x2a')](_0x29092c);};}exports[_0x1d63('0x2b')]=function(_0x5514ca,_0x1e0f3a){var _0x15df44={},_0x652722={},_0x5debea={'count':0x0,'rows':[]};var _0x1781e4=_['map'](db[_0x1d63('0x2c')][_0x1d63('0x2d')],function(_0x7d4567){return{'name':_0x7d4567[_0x1d63('0x2e')],'type':_0x7d4567[_0x1d63('0x2f')][_0x1d63('0x30')]};});_0x652722['model']=_['map'](_0x1781e4,'name');_0x652722[_0x1d63('0x31')]=_[_0x1d63('0x32')](_0x5514ca[_0x1d63('0x31')]);_0x652722[_0x1d63('0x33')]=_[_0x1d63('0x34')](_0x652722[_0x1d63('0x35')],_0x652722[_0x1d63('0x31')]);_0x15df44[_0x1d63('0x36')]=_[_0x1d63('0x34')](_0x652722[_0x1d63('0x35')],qs['fields'](_0x5514ca[_0x1d63('0x31')][_0x1d63('0x37')]));_0x15df44[_0x1d63('0x36')]=_0x15df44[_0x1d63('0x36')][_0x1d63('0x38')]?_0x15df44[_0x1d63('0x36')]:_0x652722[_0x1d63('0x35')];if(!_0x5514ca[_0x1d63('0x31')][_0x1d63('0x39')](_0x1d63('0x3a'))){_0x15df44[_0x1d63('0x1c')]=qs[_0x1d63('0x1c')](_0x5514ca[_0x1d63('0x31')][_0x1d63('0x1c')]);_0x15df44[_0x1d63('0x1b')]=qs[_0x1d63('0x1b')](_0x5514ca['query'][_0x1d63('0x1b')]);}_0x15df44[_0x1d63('0x3b')]=qs[_0x1d63('0x3c')](_0x5514ca['query'][_0x1d63('0x3c')]);_0x15df44[_0x1d63('0x3d')]=qs[_0x1d63('0x33')](_[_0x1d63('0x3e')](_0x5514ca[_0x1d63('0x31')],_0x652722[_0x1d63('0x33')]),_0x1781e4);if(_0x5514ca[_0x1d63('0x31')][_0x1d63('0x3f')]){_0x15df44[_0x1d63('0x3d')]=_[_0x1d63('0x40')](_0x15df44['where'],{'$or':_[_0x1d63('0x41')](_0x1781e4,function(_0x5cbfa1){if(_0x5cbfa1[_0x1d63('0x2f')]!==_0x1d63('0x42')){var _0x4bab22={};_0x4bab22[_0x5cbfa1[_0x1d63('0x29')]]={'$like':'%'+_0x5514ca[_0x1d63('0x31')][_0x1d63('0x3f')]+'%'};return _0x4bab22;}})});}_0x15df44=_[_0x1d63('0x40')]({},_0x15df44,_0x5514ca[_0x1d63('0x43')]);var _0x3983f3={'where':_0x15df44['where']};return db[_0x1d63('0x2c')][_0x1d63('0x1d')](_0x3983f3)[_0x1d63('0x26')](function(_0x13b91b){_0x5debea['count']=_0x13b91b;if(_0x5514ca[_0x1d63('0x31')][_0x1d63('0x44')]){_0x15df44[_0x1d63('0x45')]=[{'all':!![]}];}return db[_0x1d63('0x2c')]['findAll'](_0x15df44);})[_0x1d63('0x26')](function(_0x2084fe){_0x5debea[_0x1d63('0x46')]=_0x2084fe;return _0x5debea;})[_0x1d63('0x26')](respondWithFilteredResult(_0x1e0f3a,_0x15df44))['catch'](handleError(_0x1e0f3a,null));};exports['show']=function(_0x4a9af5,_0x4d48a3){var _0x39253e={'raw':!![],'where':{'id':_0x4a9af5['params']['id']}},_0x35b808={};_0x35b808[_0x1d63('0x35')]=_['keys'](db[_0x1d63('0x2c')][_0x1d63('0x2d')]);_0x35b808[_0x1d63('0x31')]=_['keys'](_0x4a9af5['query']);_0x35b808[_0x1d63('0x33')]=_[_0x1d63('0x34')](_0x35b808['model'],_0x35b808[_0x1d63('0x31')]);_0x39253e[_0x1d63('0x36')]=_[_0x1d63('0x34')](_0x35b808[_0x1d63('0x35')],qs[_0x1d63('0x37')](_0x4a9af5[_0x1d63('0x31')][_0x1d63('0x37')]));_0x39253e[_0x1d63('0x36')]=_0x39253e[_0x1d63('0x36')][_0x1d63('0x38')]?_0x39253e[_0x1d63('0x36')]:_0x35b808['model'];if(_0x4a9af5[_0x1d63('0x31')][_0x1d63('0x44')]){_0x39253e[_0x1d63('0x45')]=[{'all':!![]}];}_0x39253e=_[_0x1d63('0x40')]({},_0x39253e,_0x4a9af5['options']);return db['VoiceQueuesLog'][_0x1d63('0x47')](_0x39253e)[_0x1d63('0x26')](handleEntityNotFound(_0x4d48a3,null))[_0x1d63('0x26')](respondWithResult(_0x4d48a3,null))[_0x1d63('0x48')](handleError(_0x4d48a3,null));};exports['create']=function(_0x18d65c,_0x32f98e){return db[_0x1d63('0x2c')][_0x1d63('0x49')](_0x18d65c[_0x1d63('0x4a')],{})[_0x1d63('0x26')](respondWithResult(_0x32f98e,0xc9))[_0x1d63('0x48')](handleError(_0x32f98e,null));};exports[_0x1d63('0x24')]=function(_0x2ee47a,_0x2f8c35){if(_0x2ee47a[_0x1d63('0x4a')]['id']){delete _0x2ee47a[_0x1d63('0x4a')]['id'];}return db[_0x1d63('0x2c')][_0x1d63('0x47')]({'where':{'id':_0x2ee47a['params']['id']}})[_0x1d63('0x26')](handleEntityNotFound(_0x2f8c35,null))[_0x1d63('0x26')](saveUpdates(_0x2ee47a['body'],null))[_0x1d63('0x26')](respondWithResult(_0x2f8c35,null))[_0x1d63('0x48')](handleError(_0x2f8c35,null));};exports[_0x1d63('0x25')]=function(_0x33dad0,_0x267424){return db[_0x1d63('0x2c')][_0x1d63('0x47')]({'where':{'id':_0x33dad0['params']['id']}})['then'](handleEntityNotFound(_0x267424,null))[_0x1d63('0x26')](removeEntity(_0x267424,null))[_0x1d63('0x48')](handleError(_0x267424,null));};
\ No newline at end of file
index 0659a3a..a30f07a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x368a=['event','dtm','lodash','util','api','bluebird','request-promise','path','rimraf','./voiceQueuesLog.attributes','exports','VoiceQueuesLog','voice_queues_log','event_dtm'];(function(_0x152ebc,_0x557a8d){var _0x592340=function(_0x59d05a){while(--_0x59d05a){_0x152ebc['push'](_0x152ebc['shift']());}};_0x592340(++_0x557a8d);}(_0x368a,0x1b4));var _0xa368=function(_0x48b810,_0x173a5e){_0x48b810=_0x48b810-0x0;var _0x23c17d=_0x368a[_0x48b810];return _0x23c17d;};'use strict';var _=require(_0xa368('0x0'));var util=require(_0xa368('0x1'));var logger=require('../../config/logger')(_0xa368('0x2'));var moment=require('moment');var BPromise=require(_0xa368('0x3'));var rp=require(_0xa368('0x4'));var fs=require('fs');var path=require(_0xa368('0x5'));var rimraf=require(_0xa368('0x6'));var config=require('../../config/environment');var attributes=require(_0xa368('0x7'));module[_0xa368('0x8')]=function(_0x5d7d8c,_0x3fb98f){return _0x5d7d8c['define'](_0xa368('0x9'),attributes,{'tableName':_0xa368('0xa'),'paranoid':![],'indexes':[{'name':_0xa368('0xb'),'fields':[_0xa368('0xc'),_0xa368('0xd')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x752a=['VoiceQueuesLog','event_dtm','event','dtm','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','define'];(function(_0x5699a8,_0x2708c7){var _0x5bf9bb=function(_0x452c94){while(--_0x452c94){_0x5699a8['push'](_0x5699a8['shift']());}};_0x5bf9bb(++_0x2708c7);}(_0x752a,0x103));var _0xa752=function(_0x3c59fc,_0x10dbd2){_0x3c59fc=_0x3c59fc-0x0;var _0x2b78d4=_0x752a[_0x3c59fc];return _0x2b78d4;};'use strict';var _=require(_0xa752('0x0'));var util=require(_0xa752('0x1'));var logger=require(_0xa752('0x2'))(_0xa752('0x3'));var moment=require(_0xa752('0x4'));var BPromise=require('bluebird');var rp=require(_0xa752('0x5'));var fs=require('fs');var path=require(_0xa752('0x6'));var rimraf=require(_0xa752('0x7'));var config=require(_0xa752('0x8'));var attributes=require(_0xa752('0x9'));module['exports']=function(_0x16a38a,_0xec8970){return _0x16a38a[_0xa752('0xa')](_0xa752('0xb'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0xa752('0xc'),'fields':[_0xa752('0xd'),_0xa752('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index f7b2f58..ebea4ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08bf=['result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','VoiceQueuesLog,\x20%s,\x20%s','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info'];(function(_0x31293a,_0x5849bf){var _0x5a4776=function(_0x2e1ae5){while(--_0x2e1ae5){_0x31293a['push'](_0x31293a['shift']());}};_0x5a4776(++_0x5849bf);}(_0x08bf,0x1e6));var _0xf08b=function(_0x24db94,_0x27c748){_0x24db94=_0x24db94-0x0;var _0x5de5c2=_0x08bf[_0x24db94];return _0x5de5c2;};'use strict';var _=require(_0xf08b('0x0'));var util=require(_0xf08b('0x1'));var moment=require(_0xf08b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf08b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf08b('0x4'));var logger=require(_0xf08b('0x5'))(_0xf08b('0x6'));var config=require(_0xf08b('0x7'));var jayson=require(_0xf08b('0x8'));var client=jayson['client'][_0xf08b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1d45ef,_0x4a3a89,_0x1b2bc2){return new BPromise(function(_0x4f9278,_0x5c8027){return client[_0xf08b('0xa')](_0x1d45ef,_0x1b2bc2)[_0xf08b('0xb')](function(_0x33c49e){logger['info'](_0xf08b('0xc'),_0x4a3a89,'request\x20sent');logger['debug'](_0xf08b('0xd'),_0x4a3a89,_0xf08b('0xe'),JSON[_0xf08b('0xf')](_0x33c49e));if(_0x33c49e[_0xf08b('0x10')]){if(_0x33c49e[_0xf08b('0x10')][_0xf08b('0x11')]===0x1f4){logger[_0xf08b('0x10')](_0xf08b('0xc'),_0x4a3a89,_0x33c49e[_0xf08b('0x10')][_0xf08b('0x12')]);return _0x5c8027(_0x33c49e[_0xf08b('0x10')]['message']);}logger[_0xf08b('0x10')](_0xf08b('0xc'),_0x4a3a89,_0x33c49e[_0xf08b('0x10')]['message']);return _0x4f9278(_0x33c49e[_0xf08b('0x10')][_0xf08b('0x12')]);}else{logger[_0xf08b('0x13')](_0xf08b('0xc'),_0x4a3a89,_0xf08b('0xe'));_0x4f9278(_0x33c49e[_0xf08b('0x14')][_0xf08b('0x12')]);}})[_0xf08b('0x15')](function(_0x46e956){logger['error'](_0xf08b('0xc'),_0x4a3a89,_0x46e956);_0x5c8027(_0x46e956);});});}
\ No newline at end of file
+var _0xbb5f=['result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','VoiceQueuesLog,\x20%s,\x20%s','message','info'];(function(_0x163dbb,_0xf696ab){var _0x56dc66=function(_0x20d9ec){while(--_0x20d9ec){_0x163dbb['push'](_0x163dbb['shift']());}};_0x56dc66(++_0xf696ab);}(_0xbb5f,0x16a));var _0xfbb5=function(_0x5c0338,_0x32697c){_0x5c0338=_0x5c0338-0x0;var _0x2ace87=_0xbb5f[_0x5c0338];return _0x2ace87;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfbb5('0x0'));var BPromise=require('bluebird');var rs=require(_0xfbb5('0x1'));var fs=require('fs');var Redis=require(_0xfbb5('0x2'));var db=require(_0xfbb5('0x3'))['db'];var utils=require(_0xfbb5('0x4'));var logger=require(_0xfbb5('0x5'))(_0xfbb5('0x6'));var config=require(_0xfbb5('0x7'));var jayson=require(_0xfbb5('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c5026,_0x284080,_0x42228f){return new BPromise(function(_0x419540,_0x4785d4){return client[_0xfbb5('0x9')](_0x2c5026,_0x42228f)['then'](function(_0x5d9932){logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0x284080,_0xfbb5('0xa'));logger[_0xfbb5('0xb')](_0xfbb5('0xc'),_0x284080,_0xfbb5('0xa'),JSON[_0xfbb5('0xd')](_0x5d9932));if(_0x5d9932[_0xfbb5('0xe')]){if(_0x5d9932['error']['code']===0x1f4){logger[_0xfbb5('0xe')](_0xfbb5('0xf'),_0x284080,_0x5d9932[_0xfbb5('0xe')][_0xfbb5('0x10')]);return _0x4785d4(_0x5d9932[_0xfbb5('0xe')]['message']);}logger[_0xfbb5('0xe')]('VoiceQueuesLog,\x20%s,\x20%s',_0x284080,_0x5d9932['error']['message']);return _0x419540(_0x5d9932['error']['message']);}else{logger[_0xfbb5('0x11')](_0xfbb5('0xf'),_0x284080,_0xfbb5('0xa'));_0x419540(_0x5d9932[_0xfbb5('0x12')][_0xfbb5('0x10')]);}})[_0xfbb5('0x13')](function(_0x2f8505){logger[_0xfbb5('0xe')]('VoiceQueuesLog,\x20%s,\x20%s',_0x284080,_0x2f8505);_0x4785d4(_0x2f8505);});});}
\ No newline at end of file
index 9171810..6f59970 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb04=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','index','/describe','describe','show','/:id/download','download','/:id/transcribe','downloadTranscribe','create','post','runTranscribe','put','/:id','update','delete','destroy','exports','util','connect-timeout','Router','fs-extra'];(function(_0x549443,_0x2e04c8){var _0x372ed3=function(_0x214a87){while(--_0x214a87){_0x549443['push'](_0x549443['shift']());}};_0x372ed3(++_0x2e04c8);}(_0xfb04,0x1e2));var _0x4fb0=function(_0x5dac76,_0x5081f6){_0x5dac76=_0x5dac76-0x0;var _0x279518=_0xfb04[_0x5dac76];return _0x279518;};'use strict';var multer=require('multer');var util=require(_0x4fb0('0x0'));var path=require('path');var timeout=require(_0x4fb0('0x1'));var express=require('express');var router=express[_0x4fb0('0x2')]();var fs_extra=require(_0x4fb0('0x3'));var auth=require(_0x4fb0('0x4'));var interaction=require(_0x4fb0('0x5'));var config=require(_0x4fb0('0x6'));var controller=require(_0x4fb0('0x7'));router[_0x4fb0('0x8')]('/',auth[_0x4fb0('0x9')](),controller[_0x4fb0('0xa')]);router['get'](_0x4fb0('0xb'),auth[_0x4fb0('0x9')](),controller[_0x4fb0('0xc')]);router['get']('/:id',auth[_0x4fb0('0x9')](),controller[_0x4fb0('0xd')]);router[_0x4fb0('0x8')](_0x4fb0('0xe'),auth[_0x4fb0('0x9')](),controller[_0x4fb0('0xf')]);router[_0x4fb0('0x8')]('/:id/downloads',controller['downloads']);router[_0x4fb0('0x8')](_0x4fb0('0x10'),auth[_0x4fb0('0x9')](),controller[_0x4fb0('0x11')]);router['post']('/',auth[_0x4fb0('0x9')](),controller[_0x4fb0('0x12')]);router[_0x4fb0('0x13')]('/:id/transcribe',auth[_0x4fb0('0x9')](),controller[_0x4fb0('0x14')]);router[_0x4fb0('0x15')](_0x4fb0('0x16'),auth[_0x4fb0('0x9')](),controller[_0x4fb0('0x17')]);router[_0x4fb0('0x18')](_0x4fb0('0x16'),auth[_0x4fb0('0x9')](),controller[_0x4fb0('0x19')]);module[_0x4fb0('0x1a')]=router;
\ No newline at end of file
+var _0x8b31=['runTranscribe','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','index','/describe','/:id','/:id/download','download','/:id/transcribe','downloadTranscribe','post','create'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x8b31,0x1f3));var _0x18b3=function(_0x5c2db2,_0x390740){_0x5c2db2=_0x5c2db2-0x0;var _0x5eddf9=_0x8b31[_0x5c2db2];return _0x5eddf9;};'use strict';var multer=require('multer');var util=require(_0x18b3('0x0'));var path=require(_0x18b3('0x1'));var timeout=require(_0x18b3('0x2'));var express=require(_0x18b3('0x3'));var router=express[_0x18b3('0x4')]();var fs_extra=require(_0x18b3('0x5'));var auth=require(_0x18b3('0x6'));var interaction=require(_0x18b3('0x7'));var config=require(_0x18b3('0x8'));var controller=require(_0x18b3('0x9'));router[_0x18b3('0xa')]('/',auth[_0x18b3('0xb')](),controller[_0x18b3('0xc')]);router['get'](_0x18b3('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x18b3('0xa')](_0x18b3('0xe'),auth[_0x18b3('0xb')](),controller['show']);router[_0x18b3('0xa')](_0x18b3('0xf'),auth[_0x18b3('0xb')](),controller[_0x18b3('0x10')]);router[_0x18b3('0xa')]('/:id/downloads',controller['downloads']);router[_0x18b3('0xa')](_0x18b3('0x11'),auth[_0x18b3('0xb')](),controller[_0x18b3('0x12')]);router[_0x18b3('0x13')]('/',auth[_0x18b3('0xb')](),controller[_0x18b3('0x14')]);router[_0x18b3('0x13')]('/:id/transcribe',auth[_0x18b3('0xb')](),controller[_0x18b3('0x15')]);router[_0x18b3('0x16')](_0x18b3('0xe'),auth[_0x18b3('0xb')](),controller[_0x18b3('0x17')]);router['delete'](_0x18b3('0xe'),auth[_0x18b3('0xb')](),controller[_0x18b3('0x18')]);module[_0x18b3('0x19')]=router;
\ No newline at end of file
index b85a5f3..ec3d02d 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(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'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(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'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 3affc95..5bb7a62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bac=['uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','end','status','offset','undefined','limit','count','set','json','apply','save','update','then','error','name','send','map','VoiceRecording','rawAttributes','fieldName','key','differenceBy','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','body','find','describe','download','uniqueid','value','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','extname','unlink','Not\x20found','sequelize','MD5','col','token','$and','push','secrets','filename','destroy','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','listBuckets','upload','TranscribeService','startTranscriptionJob','format','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','Bucket','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','runTranscribe','../../components/encryptor','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','language','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','transcribeRegion','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','downloadTranscribe','fileText','root','.txt','Transcript\x20not\x20available','eml-format','rimraf','moment','bluebird','mustache','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','aws-sdk'];(function(_0x3a4f83,_0x286f77){var _0x3b4262=function(_0x551124){while(--_0x551124){_0x3a4f83['push'](_0x3a4f83['shift']());}};_0x3b4262(++_0x286f77);}(_0x6bac,0x1a2));var _0xc6ba=function(_0xf72cd9,_0x4fbde9){_0xf72cd9=_0xf72cd9-0x0;var _0xe61fb=_0x6bac[_0xf72cd9];return _0xe61fb;};'use strict';var emlformat=require(_0xc6ba('0x0'));var rimraf=require(_0xc6ba('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc6ba('0x2'));var BPromise=require(_0xc6ba('0x3'));var Mustache=require(_0xc6ba('0x4'));var util=require('util');var path=require(_0xc6ba('0x5'));var sox=require(_0xc6ba('0x6'));var csv=require('to-csv');var ejs=require(_0xc6ba('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc6ba('0x8'));var squel=require('squel');var crypto=require(_0xc6ba('0x9'));var jsforce=require(_0xc6ba('0xa'));var deskjs=require(_0xc6ba('0xb'));var toCsv=require(_0xc6ba('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var AWS=require(_0xc6ba('0xd'));var uuidv4=require(_0xc6ba('0xe'));var Redis=require(_0xc6ba('0xf'));var authService=require(_0xc6ba('0x10'));var qs=require(_0xc6ba('0x11'));var as=require(_0xc6ba('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc6ba('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc6ba('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3fac9c,_0x17b55b){_0x17b55b=_0x17b55b||0xcc;return function(_0x3456de){if(_0x3456de){return _0x3fac9c['sendStatus'](_0x17b55b);}return _0x3fac9c['status'](_0x17b55b)[_0xc6ba('0x15')]();};}function respondWithResult(_0x358d35,_0x30118c){_0x30118c=_0x30118c||0xc8;return function(_0x14d1e0){if(_0x14d1e0){return _0x358d35[_0xc6ba('0x16')](_0x30118c)['json'](_0x14d1e0);}};}function respondWithFilteredResult(_0x49e72c,_0x23cac1){return function(_0x53f745){if(_0x53f745){var _0x57e890=typeof _0x23cac1[_0xc6ba('0x17')]===_0xc6ba('0x18')&&typeof _0x23cac1[_0xc6ba('0x19')]===_0xc6ba('0x18');var _0x26e07c=_0x53f745['count'];var _0x34e482=_0x57e890?0x0:_0x23cac1[_0xc6ba('0x17')];var _0x34b9cb=_0x57e890?_0x53f745[_0xc6ba('0x1a')]:_0x23cac1['offset']+_0x23cac1[_0xc6ba('0x19')];var _0x3a2545;if(_0x34b9cb>=_0x26e07c){_0x34b9cb=_0x26e07c;_0x3a2545=0xc8;}else{_0x3a2545=0xce;}_0x49e72c[_0xc6ba('0x16')](_0x3a2545);return _0x49e72c[_0xc6ba('0x1b')]('Content-Range',_0x34e482+'-'+_0x34b9cb+'/'+_0x26e07c)[_0xc6ba('0x1c')](_0x53f745);}return null;};}function patchUpdates(_0x297db7){return function(_0x186ce3){try{jsonpatch[_0xc6ba('0x1d')](_0x186ce3,_0x297db7,!![]);}catch(_0x1d84df){return BPromise['reject'](_0x1d84df);}return _0x186ce3[_0xc6ba('0x1e')]();};}function saveUpdates(_0x4b853a,_0x47670c){return function(_0x12693d){if(_0x12693d){return _0x12693d[_0xc6ba('0x1f')](_0x4b853a)[_0xc6ba('0x20')](function(_0x556819){return _0x556819;});}return null;};}function removeEntity(_0x5c9695,_0x3b9d79){return function(_0x4af0bb){if(_0x4af0bb){return _0x4af0bb['destroy']()['then'](function(){_0x5c9695[_0xc6ba('0x16')](0xcc)[_0xc6ba('0x15')]();});}};}function handleEntityNotFound(_0x19aa3e,_0x80967){return function(_0x2b1c58){if(!_0x2b1c58){_0x19aa3e['sendStatus'](0x194);}return _0x2b1c58;};}function handleError(_0x33c2c8,_0x57f836){_0x57f836=_0x57f836||0x1f4;return function(_0x1d660d){logger[_0xc6ba('0x21')](_0x1d660d['stack']);if(_0x1d660d['name']){delete _0x1d660d[_0xc6ba('0x22')];}_0x33c2c8[_0xc6ba('0x16')](_0x57f836)[_0xc6ba('0x23')](_0x1d660d);};}exports['index']=function(_0x58a771,_0x86c754){var _0x432cc1={},_0xaf189d={},_0x366366={'count':0x0,'rows':[]};var _0xf563ef=_[_0xc6ba('0x24')](db[_0xc6ba('0x25')][_0xc6ba('0x26')],function(_0x40228e){return{'name':_0x40228e[_0xc6ba('0x27')],'type':_0x40228e['type'][_0xc6ba('0x28')]};});_0xaf189d['model']=_[_0xc6ba('0x29')](_[_0xc6ba('0x24')](_0xf563ef,_0xc6ba('0x22')),['format']);_0xaf189d['query']=_['keys'](_0x58a771[_0xc6ba('0x2a')]);_0xaf189d[_0xc6ba('0x2b')]=_[_0xc6ba('0x2c')](_0xaf189d[_0xc6ba('0x2d')],_0xaf189d[_0xc6ba('0x2a')]);_0x432cc1[_0xc6ba('0x2e')]=_[_0xc6ba('0x2c')](_0xaf189d['model'],qs['fields'](_0x58a771[_0xc6ba('0x2a')][_0xc6ba('0x2f')]));_0x432cc1[_0xc6ba('0x2e')]=_0x432cc1['attributes'][_0xc6ba('0x30')]?_0x432cc1['attributes']:_0xaf189d[_0xc6ba('0x2d')];if(!_0x58a771['query']['hasOwnProperty'](_0xc6ba('0x31'))){_0x432cc1[_0xc6ba('0x19')]=qs[_0xc6ba('0x19')](_0x58a771[_0xc6ba('0x2a')][_0xc6ba('0x19')]);_0x432cc1['offset']=qs['offset'](_0x58a771['query']['offset']);}_0x432cc1[_0xc6ba('0x32')]=qs[_0xc6ba('0x33')](_0x58a771[_0xc6ba('0x2a')][_0xc6ba('0x33')]);_0x432cc1[_0xc6ba('0x34')]=qs[_0xc6ba('0x2b')](_[_0xc6ba('0x35')](_0x58a771[_0xc6ba('0x2a')],_0xaf189d['filters']),_0xf563ef);if(_0x58a771[_0xc6ba('0x2a')]['filter']){_0x432cc1[_0xc6ba('0x34')]=_[_0xc6ba('0x36')](_0x432cc1[_0xc6ba('0x34')],{'$or':_[_0xc6ba('0x24')](_0xf563ef,function(_0xe24172){if(_0xe24172[_0xc6ba('0x37')]!==_0xc6ba('0x38')){var _0x2d7e45={};_0x2d7e45[_0xe24172[_0xc6ba('0x22')]]={'$like':'%'+_0x58a771['query'][_0xc6ba('0x39')]+'%'};return _0x2d7e45;}})});}_0x432cc1=_[_0xc6ba('0x36')]({},_0x432cc1,_0x58a771[_0xc6ba('0x3a')]);var _0x185b58={'where':_0x432cc1[_0xc6ba('0x34')]};return db[_0xc6ba('0x25')][_0xc6ba('0x1a')](_0x185b58)['then'](function(_0x246040){_0x366366[_0xc6ba('0x1a')]=_0x246040;if(_0x58a771[_0xc6ba('0x2a')][_0xc6ba('0x3b')]){_0x432cc1[_0xc6ba('0x3c')]=[{'all':!![]}];}return db[_0xc6ba('0x25')][_0xc6ba('0x3d')](_0x432cc1);})[_0xc6ba('0x20')](function(_0x403acd){_0x366366[_0xc6ba('0x3e')]=_0x403acd;return _0x366366;})[_0xc6ba('0x20')](respondWithFilteredResult(_0x86c754,_0x432cc1))[_0xc6ba('0x3f')](handleError(_0x86c754,null));};exports[_0xc6ba('0x40')]=function(_0x5e7269,_0x18ccaf){var _0x326071={'raw':![],'where':{'id':_0x5e7269[_0xc6ba('0x41')]['id']}},_0x406257={};_0x406257[_0xc6ba('0x2d')]=_[_0xc6ba('0x42')](db[_0xc6ba('0x25')]['rawAttributes']);_0x406257[_0xc6ba('0x2a')]=_[_0xc6ba('0x42')](_0x5e7269[_0xc6ba('0x2a')]);_0x406257['filters']=_[_0xc6ba('0x2c')](_0x406257[_0xc6ba('0x2d')],_0x406257[_0xc6ba('0x2a')]);_0x326071[_0xc6ba('0x2e')]=_[_0xc6ba('0x2c')](_0x406257[_0xc6ba('0x2d')],qs['fields'](_0x5e7269['query'][_0xc6ba('0x2f')]));_0x326071[_0xc6ba('0x2e')]=_0x326071['attributes'][_0xc6ba('0x30')]?_0x326071[_0xc6ba('0x2e')]:_0x406257[_0xc6ba('0x2d')];if(_0x5e7269[_0xc6ba('0x2a')][_0xc6ba('0x3b')]){_0x326071['include']=[{'all':!![]}];}_0x326071=_[_0xc6ba('0x36')]({},_0x326071,_0x5e7269[_0xc6ba('0x3a')]);return db[_0xc6ba('0x25')]['find'](_0x326071)[_0xc6ba('0x20')](handleEntityNotFound(_0x18ccaf,null))[_0xc6ba('0x20')](respondWithResult(_0x18ccaf,null))[_0xc6ba('0x3f')](handleError(_0x18ccaf,null));};exports['create']=function(_0x2ec55d,_0x688e23){return db[_0xc6ba('0x25')]['create'](_0x2ec55d[_0xc6ba('0x43')],{})[_0xc6ba('0x20')](respondWithResult(_0x688e23,0xc9))[_0xc6ba('0x3f')](handleError(_0x688e23,null));};exports[_0xc6ba('0x1f')]=function(_0x562b9c,_0x3ee5fd){if(_0x562b9c[_0xc6ba('0x43')]['id']){delete _0x562b9c['body']['id'];}return db[_0xc6ba('0x25')][_0xc6ba('0x44')]({'where':{'id':_0x562b9c['params']['id']}})[_0xc6ba('0x20')](handleEntityNotFound(_0x3ee5fd,null))['then'](saveUpdates(_0x562b9c[_0xc6ba('0x43')],null))['then'](respondWithResult(_0x3ee5fd,null))[_0xc6ba('0x3f')](handleError(_0x3ee5fd,null));};exports[_0xc6ba('0x45')]=function(_0x4bc95a,_0x40d40e){return db[_0xc6ba('0x25')][_0xc6ba('0x45')]()['then'](respondWithResult(_0x40d40e,null))[_0xc6ba('0x3f')](handleError(_0x40d40e,null));};exports[_0xc6ba('0x46')]=function(_0x502809,_0x25cc03,_0xc3d129){var _0x3d6a53=require('../../components/encryptor');var _0x437360=![];var _0x105fcf={};if(_0x502809[_0xc6ba('0x2a')][_0xc6ba('0x37')]&&_0x502809[_0xc6ba('0x2a')][_0xc6ba('0x37')]===_0xc6ba('0x47')){_0x105fcf[_0xc6ba('0x47')]=_0x502809[_0xc6ba('0x41')]['id'];}else{_0x105fcf['id']=_0x502809[_0xc6ba('0x41')]['id'];}return db[_0xc6ba('0x25')][_0xc6ba('0x44')]({'where':_0x105fcf,'attributes':['id',_0xc6ba('0x48')],'raw':!![]})[_0xc6ba('0x20')](handleEntityNotFound(_0x25cc03,null))[_0xc6ba('0x20')](function(_0x433fb0){if(_0x433fb0){var _0x8e29f4=_0x433fb0[_0xc6ba('0x48')];var _0x23cb89=util['format'](_0xc6ba('0x49'),_0x8e29f4);if(fs[_0xc6ba('0x4a')](_0x23cb89)){_0x437360=!![];return _0x3d6a53[_0xc6ba('0x4b')](_0x23cb89,_0x8e29f4,config['secrets'][_0xc6ba('0x4c')])[_0xc6ba('0x20')](function(){return _0x433fb0;});}return _0x433fb0;}})[_0xc6ba('0x20')](function(_0x295503){if(_0x295503){var _0x16ffe9=_0x295503[_0xc6ba('0x48')];if(!fs[_0xc6ba('0x4a')](_0x16ffe9)){throw new db[(_0xc6ba('0x4d'))][(_0xc6ba('0x4e'))](_0xc6ba('0x4f'));}if(_0x295503['filename']){return _0x25cc03[_0xc6ba('0x46')](_0x16ffe9,_0x295503['filename']+path[_0xc6ba('0x50')](_0x16ffe9),function(){if(_0x437360){fs['unlink'](_0x16ffe9);}});}else{return _0x25cc03['download'](_0x16ffe9,function(_0x2e271b){if(_0x437360){fs[_0xc6ba('0x51')](_0x16ffe9);}});}}})[_0xc6ba('0x3f')](function(_0x166ff5){if(_0x166ff5['message']===_0xc6ba('0x4f')){_0x25cc03[_0xc6ba('0x16')](0x194)[_0xc6ba('0x23')](_0xc6ba('0x52'));}else{return handleError(_0x25cc03,null);}});};exports['downloads']=function(_0x3f46db,_0x341f03,_0x53c830){var _0x384644=require('../../components/encryptor');var _0x23d3cf=![];var _0x2f2f4a={'$and':[db[_0xc6ba('0x53')][_0xc6ba('0x34')](db[_0xc6ba('0x53')]['fn'](_0xc6ba('0x54'),db[_0xc6ba('0x53')][_0xc6ba('0x55')](_0xc6ba('0x47'))),_0x3f46db[_0xc6ba('0x2a')][_0xc6ba('0x56')])]};if(_0x3f46db[_0xc6ba('0x2a')][_0xc6ba('0x37')]&&_0x3f46db[_0xc6ba('0x2a')][_0xc6ba('0x37')]==='uniqueid'){_0x2f2f4a[_0xc6ba('0x57')][_0xc6ba('0x58')]({'uniqueid':_0x3f46db[_0xc6ba('0x41')]['id']});}else{_0x2f2f4a[_0xc6ba('0x57')][_0xc6ba('0x58')]({'id':_0x3f46db['params']['id']});}return db[_0xc6ba('0x25')][_0xc6ba('0x44')]({'where':_0x2f2f4a,'attributes':['id','value'],'raw':!![]})[_0xc6ba('0x20')](handleEntityNotFound(_0x341f03,null))[_0xc6ba('0x20')](function(_0x2048be){if(_0x2048be){var _0x259afa=util['format']('%s.cypher',_0x2048be[_0xc6ba('0x48')]);if(fs['existsSync'](_0x259afa)){_0x23d3cf=!![];return _0x384644['decryptFile'](_0x259afa,_0x2048be['value'],config[_0xc6ba('0x59')][_0xc6ba('0x4c')])[_0xc6ba('0x20')](function(){return _0x2048be;});}return _0x2048be;}})[_0xc6ba('0x20')](function(_0x420f4a){if(_0x420f4a){if(!fs['existsSync'](_0x420f4a['value'])){throw new db[(_0xc6ba('0x4d'))][(_0xc6ba('0x4e'))](_0xc6ba('0x4f'));}if(_0x420f4a[_0xc6ba('0x5a')]){return _0x341f03[_0xc6ba('0x46')](_0x420f4a['value'],_0x420f4a[_0xc6ba('0x5a')]+path[_0xc6ba('0x50')](_0x420f4a[_0xc6ba('0x48')]),function(){if(_0x23d3cf){fs[_0xc6ba('0x51')](_0x420f4a[_0xc6ba('0x48')]);}});}else{return _0x341f03[_0xc6ba('0x46')](_0x420f4a[_0xc6ba('0x48')],function(_0x4941f0){if(_0x23d3cf){fs[_0xc6ba('0x51')](_0x420f4a[_0xc6ba('0x48')]);}});}}})[_0xc6ba('0x3f')](handleError(_0x341f03,null));};exports[_0xc6ba('0x5b')]=function(_0x4adc33,_0x4a7f5e){return db[_0xc6ba('0x25')]['find']({'where':{'id':_0x4adc33[_0xc6ba('0x41')]['id']}})[_0xc6ba('0x20')](function(_0x5b862b){if(_['isNil'](_0x5b862b)){throw new ReferenceError(_0xc6ba('0x5c'));}return _0x5b862b;})[_0xc6ba('0x20')](function(_0x3c6df5){var _0x2dfcb6=_0x3c6df5[_0xc6ba('0x48')];logger[_0xc6ba('0x5d')](_0xc6ba('0x5e'),_0x2dfcb6);if(!_['isNil'](_0x3c6df5[_0xc6ba('0x48')])&&fs[_0xc6ba('0x4a')](_0x2dfcb6)){logger[_0xc6ba('0x5d')]('File:\x20\x22'+_0x2dfcb6+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x2dfcb6);}_0x2dfcb6=_0x2dfcb6+'.cypher';if(!_[_0xc6ba('0x5f')](_0x3c6df5[_0xc6ba('0x48')])&&fs[_0xc6ba('0x4a')](_0x2dfcb6)){logger['info'](_0xc6ba('0x60')+_0x2dfcb6+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x2dfcb6);}return _0x3c6df5;})[_0xc6ba('0x20')](function(_0x23c0f4){if(!_0x23c0f4)throw new InternalError();return _0x23c0f4[_0xc6ba('0x5b')]();})[_0xc6ba('0x20')](function(){_0x4a7f5e[_0xc6ba('0x16')](0xcc)[_0xc6ba('0x15')]();})[_0xc6ba('0x3f')](handleError(_0x4a7f5e,null));};function getBucketslist(_0x444713,_0x488b2e,_0x59ecf0){return new Promise(function(_0x51a27b,_0x36abce){var _0x4942fe=new AWS['S3']({'accessKeyId':_0x488b2e,'secretAccessKey':_0x444713,'region':_0x59ecf0});_0x4942fe[_0xc6ba('0x61')]({},function(_0x42989a,_0x236a0c){if(_0x42989a){return _0x36abce(_0x42989a);}else{return _0x51a27b(_0x236a0c);}});});}function createBucket(_0x52a10a,_0x2bf864,_0x4abb40,_0x4c1c88){return new Promise(function(_0x310d44,_0x4234ee){var _0x592402=new AWS['S3']({'accessKeyId':_0x2bf864,'secretAccessKey':_0x52a10a,'region':_0x4abb40});_0x592402['createBucket']({'Bucket':_0x4c1c88},function(_0x58ae68,_0x33ab7c){if(_0x58ae68){return _0x4234ee(_0x58ae68);}else{return _0x310d44(_0x33ab7c);}});});}function uploadFile(_0x384022,_0x1b137a,_0x16c861,_0x3d6bd8,_0x1a53b9,_0x2ae0f5){return new Promise(function(_0x725a0b,_0x20b289){var _0x1e4305=new AWS['S3']({'accessKeyId':_0x1b137a,'secretAccessKey':_0x384022,'region':_0x16c861});_0x1e4305[_0xc6ba('0x62')]({'Bucket':_0x3d6bd8,'Key':_0x1a53b9,'Body':_0x2ae0f5},function(_0x58baa2,_0x3fad62){if(_0x58baa2){return _0x20b289(_0x58baa2);}else{return _0x725a0b(_0x3fad62);}});});}function startTranscribe(_0x1ba8c9,_0x402f87,_0x2df28d,_0x35e2ae,_0xd94b4c,_0x160ffb){return new Promise(function(_0x3116d3,_0x30e10f){var _0x5dd9b9=new AWS[(_0xc6ba('0x63'))]({'accessKeyId':_0x402f87,'secretAccessKey':_0x1ba8c9,'region':_0x2df28d});_0x5dd9b9[_0xc6ba('0x64')]({'TranscriptionJobName':_0x35e2ae,'LanguageCode':_0xd94b4c,'Media':{'MediaFileUri':_0x160ffb}},function(_0x409209,_0x4b5771){if(_0x409209){return _0x30e10f(_0x409209);}else{return _0x3116d3(_0x4b5771);}});});}function transcribe(_0x34b50a,_0x436581,_0x5046a0,_0x557efb,_0xffffe9,_0x4fc9f3,_0x293ab7){return new Promise(function(_0xf2f8b5,_0x18e513){var _0x9e148c={};logger[_0xc6ba('0x5d')](util[_0xc6ba('0x65')](_0xc6ba('0x66'),_0x34b50a,_0xffffe9));return uploadFile(_0x436581,_0x5046a0,_0x557efb,_0xffffe9,path[_0xc6ba('0x67')](_0x4fc9f3),fs['readFileSync'](_0x4fc9f3))['then'](function(_0x4ba4e0){logger[_0xc6ba('0x5d')](util[_0xc6ba('0x65')](_0xc6ba('0x68'),_0x34b50a,_0xffffe9,_0x4ba4e0[_0xc6ba('0x69')]));_0x9e148c['bucket']=_0x4ba4e0[_0xc6ba('0x6a')];_0x9e148c['location']=_0x4ba4e0[_0xc6ba('0x69')];logger[_0xc6ba('0x5d')](util['format'](_0xc6ba('0x6b'),_0x34b50a));return startTranscribe(_0x436581,_0x5046a0,_0x557efb,uuidv4(),_0x293ab7,_0x4ba4e0[_0xc6ba('0x69')]);})[_0xc6ba('0x20')](function(_0x41ea0f){logger['info'](util[_0xc6ba('0x65')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x34b50a,_0x41ea0f[_0xc6ba('0x6c')][_0xc6ba('0x6d')]));_0x9e148c[_0xc6ba('0x6e')]=_0x41ea0f['TranscriptionJob'][_0xc6ba('0x6d')];_0x9e148c[_0xc6ba('0x6f')]=_0x41ea0f[_0xc6ba('0x6c')]['TranscriptionJobStatus'];return _0xf2f8b5(_0x9e148c);})[_0xc6ba('0x3f')](function(_0x11bf48){return _0x18e513(_0x11bf48);});});}exports[_0xc6ba('0x70')]=function(_0x454010,_0x51a64f,_0xec5d2f){var _0x236103;var _0x467e9f;var _0x470322;var _0x3a1c75=require(_0xc6ba('0x71'));return db['VoiceRecording'][_0xc6ba('0x72')]({'where':{'id':_0x454010[_0xc6ba('0x41')]['id']}})['then'](function(_0x1d6c00){if(_0x1d6c00){var _0xce296f=util[_0xc6ba('0x65')](_0xc6ba('0x49'),_0x1d6c00[_0xc6ba('0x48')]);if(fs[_0xc6ba('0x4a')](_0xce296f)){cypher=!![];return _0x3a1c75['decryptFile'](_0xce296f,_0x1d6c00[_0xc6ba('0x48')],config[_0xc6ba('0x59')]['recording'])[_0xc6ba('0x20')](function(){return _0x1d6c00;});}return _0x1d6c00;}})[_0xc6ba('0x20')](function(_0x4cb99e){if(!_0x4cb99e){throw new db[(_0xc6ba('0x4d'))][(_0xc6ba('0x4e'))](_0xc6ba('0x73'));}_0x467e9f=_0x4cb99e;return db[_0xc6ba('0x74')][_0xc6ba('0x72')]({'where':{'id':0x1}});})[_0xc6ba('0x20')](handleEntityNotFound(_0x51a64f,null))[_0xc6ba('0x20')](function(_0x5538c0){if(_0x5538c0){_0x236103=_0x5538c0;if(!_0x236103[_0xc6ba('0x75')]||!_0x236103[_0xc6ba('0x76')]||!_0x236103['transcribeRegion']||!_0x236103['language']||!_0x236103['bucket']){throw new db[(_0xc6ba('0x4d'))]['ValidationError'](_0xc6ba('0x77'));}if(_0x454010[_0xc6ba('0x43')][_0xc6ba('0x78')]&&(!_0x236103[_0xc6ba('0x79')]||!_0x236103[_0xc6ba('0x7a')]||!_0x236103['sentimentRegion']||!_0x236103[_0xc6ba('0x7b')]||!_0x236103[_0xc6ba('0x7c')])){throw new db[(_0xc6ba('0x4d'))][(_0xc6ba('0x4e'))](_0xc6ba('0x7d'));}return db[_0xc6ba('0x7e')][_0xc6ba('0x72')]({'where':{'id':_0x236103[_0xc6ba('0x76')]}});}})['then'](function(_0x415219){if(!_0x415219){throw new db[(_0xc6ba('0x4d'))][(_0xc6ba('0x4e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x415219[_0xc6ba('0x7f')]||!_0x415219[_0xc6ba('0x80')]){throw new db[(_0xc6ba('0x4d'))][(_0xc6ba('0x4e'))](_0xc6ba('0x81'));}_0x470322=_0x415219;return getBucketslist(_0x470322[_0xc6ba('0x7f')],_0x470322['data2'],_0x236103['transcribeRegion']);})[_0xc6ba('0x20')](function(_0x6aee43){if(_0x6aee43&&_0x6aee43[_0xc6ba('0x82')]){var _0x5d3376=_[_0xc6ba('0x44')](_0x6aee43[_0xc6ba('0x82')],function(_0xf05846){return _0xf05846[_0xc6ba('0x83')]===_0x236103[_0xc6ba('0x7c')];});if(!_0x5d3376){logger[_0xc6ba('0x5d')](util[_0xc6ba('0x65')](_0xc6ba('0x84'),_0x454010[_0xc6ba('0x41')]['id'],_0x236103[_0xc6ba('0x7c')]));return createBucket(_0x470322[_0xc6ba('0x7f')],_0x470322['data2'],_0x236103[_0xc6ba('0x85')],_0x236103[_0xc6ba('0x7c')]);}logger[_0xc6ba('0x5d')](util[_0xc6ba('0x65')](_0xc6ba('0x86'),_0x454010[_0xc6ba('0x41')]['id'],_0x236103[_0xc6ba('0x7c')]));return;}})[_0xc6ba('0x20')](function(_0x1d7881){if(_0x467e9f[_0xc6ba('0x6f')]===_0xc6ba('0x87')){return transcribe(_0x454010[_0xc6ba('0x41')]['id'],_0x470322[_0xc6ba('0x7f')],_0x470322[_0xc6ba('0x80')],_0x236103[_0xc6ba('0x85')],_0x236103[_0xc6ba('0x7c')],_0x467e9f['value'],_0x236103[_0xc6ba('0x7b')]);}else{logger[_0xc6ba('0x5d')](util[_0xc6ba('0x65')](_0xc6ba('0x88'),_0x454010['params']['id']));return{'transcribeStatus':_0xc6ba('0x89')};}})[_0xc6ba('0x20')](function(_0x2ebef5){if(_0x2ebef5){_0x2ebef5[_0xc6ba('0x8a')]=_0x454010[_0xc6ba('0x43')][_0xc6ba('0x78')];return _0x467e9f['updateAttributes'](_0x2ebef5);}})['then'](respondWithResult(_0x51a64f,null))[_0xc6ba('0x3f')](handleError(_0x51a64f,null));};function writeFile(_0x5ae104,_0x22fc1f){return new Promise(function(_0x59e6f6,_0x20efaf){fs['writeFile'](_0x22fc1f,_0x5ae104,function(_0x4d1f86,_0xf8b74a){if(_0x4d1f86){return _0x20efaf(_0x4d1f86);}else{return _0x59e6f6(_0xf8b74a);}});});}exports[_0xc6ba('0x8b')]=function(_0x51134c,_0x32e692,_0x5bc8c7){return db[_0xc6ba('0x25')][_0xc6ba('0x72')]({'where':{'id':_0x51134c[_0xc6ba('0x41')]['id']}})[_0xc6ba('0x20')](handleEntityNotFound(_0x32e692))[_0xc6ba('0x20')](function(_0x61909d){if(_0x61909d&&_0x61909d[_0xc6ba('0x8c')]){var _0x10cb77=_0x61909d[_0xc6ba('0x8c')];var _0xc3dda=config[_0xc6ba('0x8d')]+'/server/files/transcribes/transcribe_'+_0x61909d['id']+_0xc6ba('0x8e');if(fs[_0xc6ba('0x4a')](_0xc3dda)){return _0xc3dda;}return writeFile(_0x10cb77,_0xc3dda)[_0xc6ba('0x20')](function(){return _0xc3dda;});}else{throw new db['Sequelize'][(_0xc6ba('0x4e'))](_0xc6ba('0x8f'));}})[_0xc6ba('0x20')](function(_0x1a91a7){return _0x32e692[_0xc6ba('0x46')](_0x1a91a7);})[_0xc6ba('0x3f')](handleError(_0x32e692));};
\ No newline at end of file
+var _0x63d5=['[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','transcribeStatus','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','runSentiment','updateAttributes','downloadTranscribe','fileText','root','.txt','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','aws-sdk','uuid/v4','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','end','name','send','map','VoiceRecording','fieldName','differenceBy','format','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','length','find','create','body','describe','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','secrets','recording','Sequelize','ValidationError','filename','download','extname','unlink','VoiceRecording\x20not\x20found','sequelize','token','$and','push','decryptFile','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','TranscriptionJob','TranscriptionJobName','transcribeName','TranscriptionJobStatus','Voice\x20Recording\x20not\x20found','findOne','transcribe','transcribeRegion','Transcribe\x20not\x20configured','sentiment','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','transcribeAccountId','Cloud\x20Provider\x20not\x20configured','data1','data2','Buckets'];(function(_0x26a1dc,_0x380fb3){var _0x529678=function(_0x2c8c14){while(--_0x2c8c14){_0x26a1dc['push'](_0x26a1dc['shift']());}};_0x529678(++_0x380fb3);}(_0x63d5,0x1cc));var _0x563d=function(_0x41487e,_0x17b795){_0x41487e=_0x41487e-0x0;var _0x396d53=_0x63d5[_0x41487e];return _0x396d53;};'use strict';var emlformat=require(_0x563d('0x0'));var rimraf=require(_0x563d('0x1'));var zipdir=require(_0x563d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x563d('0x3'));var moment=require('moment');var BPromise=require(_0x563d('0x4'));var Mustache=require(_0x563d('0x5'));var util=require('util');var path=require(_0x563d('0x6'));var sox=require('sox');var csv=require(_0x563d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x563d('0x8'));var _=require(_0x563d('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x563d('0xa'));var deskjs=require(_0x563d('0xb'));var toCsv=require(_0x563d('0x7'));var querystring=require(_0x563d('0xc'));var Papa=require(_0x563d('0xd'));var AWS=require(_0x563d('0xe'));var uuidv4=require(_0x563d('0xf'));var Redis=require('ioredis');var authService=require(_0x563d('0x10'));var qs=require(_0x563d('0x11'));var as=require(_0x563d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x563d('0x13'))('api');var utils=require(_0x563d('0x14'));var config=require(_0x563d('0x15'));var licenseUtil=require(_0x563d('0x16'));var db=require(_0x563d('0x17'))['db'];function respondWithStatusCode(_0x4b7b8b,_0x254036){_0x254036=_0x254036||0xcc;return function(_0x254f70){if(_0x254f70){return _0x4b7b8b[_0x563d('0x18')](_0x254036);}return _0x4b7b8b[_0x563d('0x19')](_0x254036)['end']();};}function respondWithResult(_0xba43e0,_0x17f7b0){_0x17f7b0=_0x17f7b0||0xc8;return function(_0x1fb049){if(_0x1fb049){return _0xba43e0[_0x563d('0x19')](_0x17f7b0)[_0x563d('0x1a')](_0x1fb049);}};}function respondWithFilteredResult(_0x1ebbec,_0x21efbf){return function(_0x351da0){if(_0x351da0){var _0x49c33a=typeof _0x21efbf[_0x563d('0x1b')]==='undefined'&&typeof _0x21efbf[_0x563d('0x1c')]===_0x563d('0x1d');var _0x1b0558=_0x351da0[_0x563d('0x1e')];var _0x4d163f=_0x49c33a?0x0:_0x21efbf[_0x563d('0x1b')];var _0x5d5cad=_0x49c33a?_0x351da0[_0x563d('0x1e')]:_0x21efbf[_0x563d('0x1b')]+_0x21efbf[_0x563d('0x1c')];var _0x374d74;if(_0x5d5cad>=_0x1b0558){_0x5d5cad=_0x1b0558;_0x374d74=0xc8;}else{_0x374d74=0xce;}_0x1ebbec[_0x563d('0x19')](_0x374d74);return _0x1ebbec[_0x563d('0x1f')](_0x563d('0x20'),_0x4d163f+'-'+_0x5d5cad+'/'+_0x1b0558)['json'](_0x351da0);}return null;};}function patchUpdates(_0x3b85ff){return function(_0x179bd8){try{jsonpatch[_0x563d('0x21')](_0x179bd8,_0x3b85ff,!![]);}catch(_0xde148a){return BPromise[_0x563d('0x22')](_0xde148a);}return _0x179bd8[_0x563d('0x23')]();};}function saveUpdates(_0x5221de,_0x494713){return function(_0x300711){if(_0x300711){return _0x300711[_0x563d('0x24')](_0x5221de)['then'](function(_0x1f020b){return _0x1f020b;});}return null;};}function removeEntity(_0x5a6602,_0x2eb526){return function(_0x2703b0){if(_0x2703b0){return _0x2703b0['destroy']()[_0x563d('0x25')](function(){_0x5a6602['status'](0xcc)[_0x563d('0x26')]();});}};}function handleEntityNotFound(_0x105657,_0x177865){return function(_0x558a3c){if(!_0x558a3c){_0x105657[_0x563d('0x18')](0x194);}return _0x558a3c;};}function handleError(_0x2565ee,_0x151678){_0x151678=_0x151678||0x1f4;return function(_0x300c4c){logger['error'](_0x300c4c['stack']);if(_0x300c4c[_0x563d('0x27')]){delete _0x300c4c[_0x563d('0x27')];}_0x2565ee[_0x563d('0x19')](_0x151678)[_0x563d('0x28')](_0x300c4c);};}exports['index']=function(_0x36d032,_0x2a50ae){var _0x201cf7={},_0x25d9e4={},_0x3768a6={'count':0x0,'rows':[]};var _0x1ff041=_[_0x563d('0x29')](db[_0x563d('0x2a')]['rawAttributes'],function(_0x5a0352){return{'name':_0x5a0352[_0x563d('0x2b')],'type':_0x5a0352['type']['key']};});_0x25d9e4['model']=_[_0x563d('0x2c')](_[_0x563d('0x29')](_0x1ff041,'name'),[_0x563d('0x2d')]);_0x25d9e4[_0x563d('0x2e')]=_[_0x563d('0x2f')](_0x36d032[_0x563d('0x2e')]);_0x25d9e4[_0x563d('0x30')]=_[_0x563d('0x31')](_0x25d9e4[_0x563d('0x32')],_0x25d9e4[_0x563d('0x2e')]);_0x201cf7[_0x563d('0x33')]=_[_0x563d('0x31')](_0x25d9e4[_0x563d('0x32')],qs[_0x563d('0x34')](_0x36d032[_0x563d('0x2e')][_0x563d('0x34')]));_0x201cf7[_0x563d('0x33')]=_0x201cf7[_0x563d('0x33')]['length']?_0x201cf7[_0x563d('0x33')]:_0x25d9e4[_0x563d('0x32')];if(!_0x36d032[_0x563d('0x2e')][_0x563d('0x35')](_0x563d('0x36'))){_0x201cf7[_0x563d('0x1c')]=qs['limit'](_0x36d032[_0x563d('0x2e')][_0x563d('0x1c')]);_0x201cf7['offset']=qs[_0x563d('0x1b')](_0x36d032[_0x563d('0x2e')][_0x563d('0x1b')]);}_0x201cf7[_0x563d('0x37')]=qs[_0x563d('0x38')](_0x36d032[_0x563d('0x2e')][_0x563d('0x38')]);_0x201cf7['where']=qs[_0x563d('0x30')](_[_0x563d('0x39')](_0x36d032[_0x563d('0x2e')],_0x25d9e4[_0x563d('0x30')]),_0x1ff041);if(_0x36d032['query']['filter']){_0x201cf7[_0x563d('0x3a')]=_['merge'](_0x201cf7[_0x563d('0x3a')],{'$or':_['map'](_0x1ff041,function(_0x50257b){if(_0x50257b[_0x563d('0x3b')]!==_0x563d('0x3c')){var _0xb5296={};_0xb5296[_0x50257b[_0x563d('0x27')]]={'$like':'%'+_0x36d032[_0x563d('0x2e')][_0x563d('0x3d')]+'%'};return _0xb5296;}})});}_0x201cf7=_[_0x563d('0x3e')]({},_0x201cf7,_0x36d032[_0x563d('0x3f')]);var _0xda003e={'where':_0x201cf7[_0x563d('0x3a')]};return db[_0x563d('0x2a')][_0x563d('0x1e')](_0xda003e)[_0x563d('0x25')](function(_0x294a75){_0x3768a6[_0x563d('0x1e')]=_0x294a75;if(_0x36d032[_0x563d('0x2e')][_0x563d('0x40')]){_0x201cf7[_0x563d('0x41')]=[{'all':!![]}];}return db[_0x563d('0x2a')][_0x563d('0x42')](_0x201cf7);})[_0x563d('0x25')](function(_0x43fb61){_0x3768a6[_0x563d('0x43')]=_0x43fb61;return _0x3768a6;})[_0x563d('0x25')](respondWithFilteredResult(_0x2a50ae,_0x201cf7))[_0x563d('0x44')](handleError(_0x2a50ae,null));};exports['show']=function(_0x3a15cc,_0x244ada){var _0x59d59b={'raw':![],'where':{'id':_0x3a15cc[_0x563d('0x45')]['id']}},_0x292383={};_0x292383['model']=_['keys'](db[_0x563d('0x2a')][_0x563d('0x46')]);_0x292383[_0x563d('0x2e')]=_['keys'](_0x3a15cc[_0x563d('0x2e')]);_0x292383['filters']=_[_0x563d('0x31')](_0x292383[_0x563d('0x32')],_0x292383[_0x563d('0x2e')]);_0x59d59b[_0x563d('0x33')]=_[_0x563d('0x31')](_0x292383[_0x563d('0x32')],qs[_0x563d('0x34')](_0x3a15cc['query'][_0x563d('0x34')]));_0x59d59b[_0x563d('0x33')]=_0x59d59b[_0x563d('0x33')][_0x563d('0x47')]?_0x59d59b[_0x563d('0x33')]:_0x292383[_0x563d('0x32')];if(_0x3a15cc[_0x563d('0x2e')]['includeAll']){_0x59d59b[_0x563d('0x41')]=[{'all':!![]}];}_0x59d59b=_[_0x563d('0x3e')]({},_0x59d59b,_0x3a15cc[_0x563d('0x3f')]);return db['VoiceRecording'][_0x563d('0x48')](_0x59d59b)[_0x563d('0x25')](handleEntityNotFound(_0x244ada,null))[_0x563d('0x25')](respondWithResult(_0x244ada,null))['catch'](handleError(_0x244ada,null));};exports[_0x563d('0x49')]=function(_0xf8ad13,_0x24e151){return db[_0x563d('0x2a')][_0x563d('0x49')](_0xf8ad13[_0x563d('0x4a')],{})['then'](respondWithResult(_0x24e151,0xc9))[_0x563d('0x44')](handleError(_0x24e151,null));};exports[_0x563d('0x24')]=function(_0x41dd11,_0x121182){if(_0x41dd11[_0x563d('0x4a')]['id']){delete _0x41dd11[_0x563d('0x4a')]['id'];}return db[_0x563d('0x2a')]['find']({'where':{'id':_0x41dd11[_0x563d('0x45')]['id']}})[_0x563d('0x25')](handleEntityNotFound(_0x121182,null))[_0x563d('0x25')](saveUpdates(_0x41dd11[_0x563d('0x4a')],null))[_0x563d('0x25')](respondWithResult(_0x121182,null))['catch'](handleError(_0x121182,null));};exports[_0x563d('0x4b')]=function(_0x4056af,_0x358a06){return db[_0x563d('0x2a')][_0x563d('0x4b')]()[_0x563d('0x25')](respondWithResult(_0x358a06,null))[_0x563d('0x44')](handleError(_0x358a06,null));};exports['download']=function(_0x1bdabc,_0x3f4161,_0x9550e0){var _0x4d41c6=require(_0x563d('0x4c'));var _0x369f33=![];var _0x58faff={};if(_0x1bdabc[_0x563d('0x2e')][_0x563d('0x3b')]&&_0x1bdabc['query'][_0x563d('0x3b')]===_0x563d('0x4d')){_0x58faff[_0x563d('0x4d')]=_0x1bdabc[_0x563d('0x45')]['id'];}else{_0x58faff['id']=_0x1bdabc[_0x563d('0x45')]['id'];}return db[_0x563d('0x2a')]['find']({'where':_0x58faff,'attributes':['id',_0x563d('0x4e')],'raw':!![]})[_0x563d('0x25')](handleEntityNotFound(_0x3f4161,null))[_0x563d('0x25')](function(_0x22e830){if(_0x22e830){var _0x32b49b=_0x22e830[_0x563d('0x4e')];var _0x175a4b=util[_0x563d('0x2d')](_0x563d('0x4f'),_0x32b49b);if(fs[_0x563d('0x50')](_0x175a4b)){_0x369f33=!![];return _0x4d41c6['decryptFile'](_0x175a4b,_0x32b49b,config[_0x563d('0x51')][_0x563d('0x52')])[_0x563d('0x25')](function(){return _0x22e830;});}return _0x22e830;}})[_0x563d('0x25')](function(_0x883c17){if(_0x883c17){var _0x59c026=_0x883c17[_0x563d('0x4e')];if(!fs[_0x563d('0x50')](_0x59c026)){throw new db[(_0x563d('0x53'))][(_0x563d('0x54'))]('VoiceRecording\x20not\x20found');}if(_0x883c17[_0x563d('0x55')]){return _0x3f4161[_0x563d('0x56')](_0x59c026,_0x883c17[_0x563d('0x55')]+path[_0x563d('0x57')](_0x59c026),function(){if(_0x369f33){fs[_0x563d('0x58')](_0x59c026);}});}else{return _0x3f4161[_0x563d('0x56')](_0x59c026,function(_0x2f048c){if(_0x369f33){fs[_0x563d('0x58')](_0x59c026);}});}}})[_0x563d('0x44')](function(_0x4b8cbc){if(_0x4b8cbc['message']===_0x563d('0x59')){_0x3f4161[_0x563d('0x19')](0x194)[_0x563d('0x28')]('Not\x20found');}else{return handleError(_0x3f4161,null);}});};exports['downloads']=function(_0x2be4bc,_0x1f5884,_0x588ec4){var _0x205de7=require(_0x563d('0x4c'));var _0x5af1de=![];var _0x372c9d={'$and':[db[_0x563d('0x5a')]['where'](db[_0x563d('0x5a')]['fn']('MD5',db[_0x563d('0x5a')]['col'](_0x563d('0x4d'))),_0x2be4bc['query'][_0x563d('0x5b')])]};if(_0x2be4bc[_0x563d('0x2e')]['type']&&_0x2be4bc[_0x563d('0x2e')][_0x563d('0x3b')]===_0x563d('0x4d')){_0x372c9d[_0x563d('0x5c')][_0x563d('0x5d')]({'uniqueid':_0x2be4bc['params']['id']});}else{_0x372c9d[_0x563d('0x5c')][_0x563d('0x5d')]({'id':_0x2be4bc[_0x563d('0x45')]['id']});}return db[_0x563d('0x2a')]['find']({'where':_0x372c9d,'attributes':['id',_0x563d('0x4e')],'raw':!![]})[_0x563d('0x25')](handleEntityNotFound(_0x1f5884,null))[_0x563d('0x25')](function(_0x817fc6){if(_0x817fc6){var _0x32152e=util['format']('%s.cypher',_0x817fc6[_0x563d('0x4e')]);if(fs[_0x563d('0x50')](_0x32152e)){_0x5af1de=!![];return _0x205de7[_0x563d('0x5e')](_0x32152e,_0x817fc6[_0x563d('0x4e')],config['secrets'][_0x563d('0x52')])[_0x563d('0x25')](function(){return _0x817fc6;});}return _0x817fc6;}})[_0x563d('0x25')](function(_0x8eaf16){if(_0x8eaf16){if(!fs['existsSync'](_0x8eaf16[_0x563d('0x4e')])){throw new db[(_0x563d('0x53'))][(_0x563d('0x54'))]('VoiceRecording\x20not\x20found');}if(_0x8eaf16[_0x563d('0x55')]){return _0x1f5884[_0x563d('0x56')](_0x8eaf16[_0x563d('0x4e')],_0x8eaf16[_0x563d('0x55')]+path[_0x563d('0x57')](_0x8eaf16[_0x563d('0x4e')]),function(){if(_0x5af1de){fs['unlink'](_0x8eaf16[_0x563d('0x4e')]);}});}else{return _0x1f5884[_0x563d('0x56')](_0x8eaf16[_0x563d('0x4e')],function(_0x3b716b){if(_0x5af1de){fs[_0x563d('0x58')](_0x8eaf16[_0x563d('0x4e')]);}});}}})['catch'](handleError(_0x1f5884,null));};exports[_0x563d('0x5f')]=function(_0x2489f2,_0x50c6ce){return db[_0x563d('0x2a')][_0x563d('0x48')]({'where':{'id':_0x2489f2[_0x563d('0x45')]['id']}})[_0x563d('0x25')](function(_0x24c078){if(_[_0x563d('0x60')](_0x24c078)){throw new ReferenceError(_0x563d('0x61'));}return _0x24c078;})['then'](function(_0x55b7e1){var _0x5d323a=_0x55b7e1[_0x563d('0x4e')];logger[_0x563d('0x62')](_0x563d('0x63'),_0x5d323a);if(!_['isNil'](_0x55b7e1[_0x563d('0x4e')])&&fs[_0x563d('0x50')](_0x5d323a)){logger[_0x563d('0x62')](_0x563d('0x64')+_0x5d323a+_0x563d('0x65'));fs[_0x563d('0x66')](_0x5d323a);}_0x5d323a=_0x5d323a+_0x563d('0x67');if(!_[_0x563d('0x60')](_0x55b7e1['value'])&&fs['existsSync'](_0x5d323a)){logger['info'](_0x563d('0x64')+_0x5d323a+_0x563d('0x65'));fs[_0x563d('0x66')](_0x5d323a);}return _0x55b7e1;})[_0x563d('0x25')](function(_0x399494){if(!_0x399494)throw new InternalError();return _0x399494[_0x563d('0x5f')]();})['then'](function(){_0x50c6ce[_0x563d('0x19')](0xcc)[_0x563d('0x26')]();})[_0x563d('0x44')](handleError(_0x50c6ce,null));};function getBucketslist(_0x2c3fcf,_0x479980,_0x162326){return new Promise(function(_0x49c6f8,_0x37fa87){var _0x2dc216=new AWS['S3']({'accessKeyId':_0x479980,'secretAccessKey':_0x2c3fcf,'region':_0x162326});_0x2dc216[_0x563d('0x68')]({},function(_0x4a7f88,_0x48a541){if(_0x4a7f88){return _0x37fa87(_0x4a7f88);}else{return _0x49c6f8(_0x48a541);}});});}function createBucket(_0x4c0d20,_0x5a6840,_0x2695b5,_0x29b44f){return new Promise(function(_0x583cd6,_0x543bd0){var _0x3c9e9d=new AWS['S3']({'accessKeyId':_0x5a6840,'secretAccessKey':_0x4c0d20,'region':_0x2695b5});_0x3c9e9d[_0x563d('0x69')]({'Bucket':_0x29b44f},function(_0x13d9e0,_0x13c0c3){if(_0x13d9e0){return _0x543bd0(_0x13d9e0);}else{return _0x583cd6(_0x13c0c3);}});});}function uploadFile(_0x3ddf55,_0x35c375,_0x48ca3a,_0x4ad6f9,_0x1bedeb,_0x397cd4){return new Promise(function(_0x47b0b7,_0xd9b79c){var _0xd18fb4=new AWS['S3']({'accessKeyId':_0x35c375,'secretAccessKey':_0x3ddf55,'region':_0x48ca3a});_0xd18fb4[_0x563d('0x6a')]({'Bucket':_0x4ad6f9,'Key':_0x1bedeb,'Body':_0x397cd4},function(_0x1eea93,_0x375aba){if(_0x1eea93){return _0xd9b79c(_0x1eea93);}else{return _0x47b0b7(_0x375aba);}});});}function startTranscribe(_0x1c54bb,_0x48be78,_0x3f489d,_0x21fbfd,_0x282848,_0x4f52ab){return new Promise(function(_0x2003bc,_0x4447b8){var _0x408231=new AWS['TranscribeService']({'accessKeyId':_0x48be78,'secretAccessKey':_0x1c54bb,'region':_0x3f489d});_0x408231[_0x563d('0x6b')]({'TranscriptionJobName':_0x21fbfd,'LanguageCode':_0x282848,'Media':{'MediaFileUri':_0x4f52ab}},function(_0x125026,_0x215f81){if(_0x125026){return _0x4447b8(_0x125026);}else{return _0x2003bc(_0x215f81);}});});}function transcribe(_0x596e28,_0x3b176d,_0x434110,_0x95277e,_0x5d46fa,_0x50aaa2,_0x133af1){return new Promise(function(_0x4a9139,_0x3df460){var _0x1d9fb0={};logger['info'](util[_0x563d('0x2d')](_0x563d('0x6c'),_0x596e28,_0x5d46fa));return uploadFile(_0x3b176d,_0x434110,_0x95277e,_0x5d46fa,path['basename'](_0x50aaa2),fs[_0x563d('0x6d')](_0x50aaa2))[_0x563d('0x25')](function(_0x428143){logger[_0x563d('0x62')](util['format'](_0x563d('0x6e'),_0x596e28,_0x5d46fa,_0x428143[_0x563d('0x6f')]));_0x1d9fb0[_0x563d('0x70')]=_0x428143[_0x563d('0x71')];_0x1d9fb0[_0x563d('0x72')]=_0x428143[_0x563d('0x6f')];logger[_0x563d('0x62')](util[_0x563d('0x2d')](_0x563d('0x73'),_0x596e28));return startTranscribe(_0x3b176d,_0x434110,_0x95277e,uuidv4(),_0x133af1,_0x428143[_0x563d('0x6f')]);})[_0x563d('0x25')](function(_0x2acbd8){logger['info'](util[_0x563d('0x2d')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x596e28,_0x2acbd8[_0x563d('0x74')][_0x563d('0x75')]));_0x1d9fb0[_0x563d('0x76')]=_0x2acbd8['TranscriptionJob'][_0x563d('0x75')];_0x1d9fb0['transcribeStatus']=_0x2acbd8[_0x563d('0x74')][_0x563d('0x77')];return _0x4a9139(_0x1d9fb0);})[_0x563d('0x44')](function(_0x2c95c5){return _0x3df460(_0x2c95c5);});});}exports['runTranscribe']=function(_0x36173e,_0xd44188,_0x56d44a){var _0x39cd42;var _0x31ae0f;var _0x4a530d;var _0x138550=require(_0x563d('0x4c'));return db[_0x563d('0x2a')]['findOne']({'where':{'id':_0x36173e['params']['id']}})[_0x563d('0x25')](function(_0x4d95ce){if(_0x4d95ce){var _0x55ab82=util[_0x563d('0x2d')](_0x563d('0x4f'),_0x4d95ce[_0x563d('0x4e')]);if(fs[_0x563d('0x50')](_0x55ab82)){cypher=!![];return _0x138550[_0x563d('0x5e')](_0x55ab82,_0x4d95ce[_0x563d('0x4e')],config[_0x563d('0x51')][_0x563d('0x52')])[_0x563d('0x25')](function(){return _0x4d95ce;});}return _0x4d95ce;}})[_0x563d('0x25')](function(_0x19dedc){if(!_0x19dedc){throw new db[(_0x563d('0x53'))][(_0x563d('0x54'))](_0x563d('0x78'));}_0x31ae0f=_0x19dedc;return db['Setting'][_0x563d('0x79')]({'where':{'id':0x1}});})[_0x563d('0x25')](handleEntityNotFound(_0xd44188,null))[_0x563d('0x25')](function(_0x3153b3){if(_0x3153b3){_0x39cd42=_0x3153b3;if(!_0x39cd42[_0x563d('0x7a')]||!_0x39cd42['transcribeAccountId']||!_0x39cd42[_0x563d('0x7b')]||!_0x39cd42['language']||!_0x39cd42[_0x563d('0x70')]){throw new db[(_0x563d('0x53'))][(_0x563d('0x54'))](_0x563d('0x7c'));}if(_0x36173e[_0x563d('0x4a')]['runSentiment']&&(!_0x39cd42[_0x563d('0x7d')]||!_0x39cd42[_0x563d('0x7e')]||!_0x39cd42[_0x563d('0x7f')]||!_0x39cd42[_0x563d('0x80')]||!_0x39cd42[_0x563d('0x70')])){throw new db[(_0x563d('0x53'))]['ValidationError'](_0x563d('0x81'));}return db[_0x563d('0x82')][_0x563d('0x79')]({'where':{'id':_0x39cd42[_0x563d('0x83')]}});}})[_0x563d('0x25')](function(_0x563307){if(!_0x563307){throw new db[(_0x563d('0x53'))][(_0x563d('0x54'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x563307['data1']||!_0x563307['data2']){throw new db[(_0x563d('0x53'))][(_0x563d('0x54'))](_0x563d('0x84'));}_0x4a530d=_0x563307;return getBucketslist(_0x4a530d[_0x563d('0x85')],_0x4a530d[_0x563d('0x86')],_0x39cd42['transcribeRegion']);})[_0x563d('0x25')](function(_0x9c7775){if(_0x9c7775&&_0x9c7775[_0x563d('0x87')]){var _0x37310f=_[_0x563d('0x48')](_0x9c7775[_0x563d('0x87')],function(_0x5563dd){return _0x5563dd['Name']===_0x39cd42[_0x563d('0x70')];});if(!_0x37310f){logger[_0x563d('0x62')](util[_0x563d('0x2d')](_0x563d('0x88'),_0x36173e[_0x563d('0x45')]['id'],_0x39cd42['bucket']));return createBucket(_0x4a530d[_0x563d('0x85')],_0x4a530d[_0x563d('0x86')],_0x39cd42[_0x563d('0x7b')],_0x39cd42[_0x563d('0x70')]);}logger[_0x563d('0x62')](util[_0x563d('0x2d')](_0x563d('0x89'),_0x36173e[_0x563d('0x45')]['id'],_0x39cd42['bucket']));return;}})[_0x563d('0x25')](function(_0x22f55c){if(_0x31ae0f[_0x563d('0x8a')]===_0x563d('0x8b')){return transcribe(_0x36173e[_0x563d('0x45')]['id'],_0x4a530d['data1'],_0x4a530d[_0x563d('0x86')],_0x39cd42['transcribeRegion'],_0x39cd42[_0x563d('0x70')],_0x31ae0f[_0x563d('0x4e')],_0x39cd42[_0x563d('0x80')]);}else{logger[_0x563d('0x62')](util[_0x563d('0x2d')](_0x563d('0x8c'),_0x36173e['params']['id']));return{'transcribeStatus':_0x563d('0x8d')};}})['then'](function(_0x4ffbc1){if(_0x4ffbc1){_0x4ffbc1[_0x563d('0x8e')]=_0x36173e[_0x563d('0x4a')][_0x563d('0x8f')];return _0x31ae0f[_0x563d('0x90')](_0x4ffbc1);}})[_0x563d('0x25')](respondWithResult(_0xd44188,null))[_0x563d('0x44')](handleError(_0xd44188,null));};function writeFile(_0x4f0e77,_0x5b41af){return new Promise(function(_0x49e157,_0x164554){fs['writeFile'](_0x5b41af,_0x4f0e77,function(_0x4b08ff,_0x3c43ee){if(_0x4b08ff){return _0x164554(_0x4b08ff);}else{return _0x49e157(_0x3c43ee);}});});}exports[_0x563d('0x91')]=function(_0x5cdf57,_0x20703e,_0x3d9e18){return db[_0x563d('0x2a')]['findOne']({'where':{'id':_0x5cdf57[_0x563d('0x45')]['id']}})[_0x563d('0x25')](handleEntityNotFound(_0x20703e))[_0x563d('0x25')](function(_0x424481){if(_0x424481&&_0x424481[_0x563d('0x92')]){var _0x2e78a8=_0x424481[_0x563d('0x92')];var _0xff8e51=config[_0x563d('0x93')]+'/server/files/transcribes/transcribe_'+_0x424481['id']+_0x563d('0x94');if(fs[_0x563d('0x50')](_0xff8e51)){return _0xff8e51;}return writeFile(_0x2e78a8,_0xff8e51)[_0x563d('0x25')](function(){return _0xff8e51;});}else{throw new db[(_0x563d('0x53'))][(_0x563d('0x54'))]('Transcript\x20not\x20available');}})['then'](function(_0x1b0dec){return _0x20703e[_0x563d('0x56')](_0x1b0dec);})[_0x563d('0x44')](handleError(_0x20703e));};
\ No newline at end of file
index 9c8b062..593cd51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x349e=['bluebird','request-promise','path','rimraf','./voiceRecording.attributes','VoiceRecording','voice_recordings','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x5c34aa,_0x2946d2){var _0x162073=function(_0x299259){while(--_0x299259){_0x5c34aa['push'](_0x5c34aa['shift']());}};_0x162073(++_0x2946d2);}(_0x349e,0xcb));var _0xe349=function(_0xd500b3,_0x3a3bff){_0xd500b3=_0xd500b3-0x0;var _0xd3331=_0x349e[_0xd500b3];return _0xd3331;};'use strict';var _=require(_0xe349('0x0'));var util=require(_0xe349('0x1'));var logger=require(_0xe349('0x2'))(_0xe349('0x3'));var moment=require(_0xe349('0x4'));var BPromise=require(_0xe349('0x5'));var rp=require(_0xe349('0x6'));var fs=require('fs');var path=require(_0xe349('0x7'));var rimraf=require(_0xe349('0x8'));var config=require('../../config/environment');var attributes=require(_0xe349('0x9'));module['exports']=function(_0x55aae6,_0xb21068){return _0x55aae6['define'](_0xe349('0xa'),attributes,{'tableName':_0xe349('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xe349('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xff8d=['exports','define','VoiceRecording','voice_recordings','uniqueid','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceRecording.attributes'];(function(_0x2dd799,_0x526bc8){var _0x558ebb=function(_0x3abb13){while(--_0x3abb13){_0x2dd799['push'](_0x2dd799['shift']());}};_0x558ebb(++_0x526bc8);}(_0xff8d,0x7d));var _0xdff8=function(_0x5d7cf9,_0xcd35ca){_0x5d7cf9=_0x5d7cf9-0x0;var _0x253c85=_0xff8d[_0x5d7cf9];return _0x253c85;};'use strict';var _=require('lodash');var util=require(_0xdff8('0x0'));var logger=require(_0xdff8('0x1'))('api');var moment=require('moment');var BPromise=require(_0xdff8('0x2'));var rp=require(_0xdff8('0x3'));var fs=require('fs');var path=require(_0xdff8('0x4'));var rimraf=require(_0xdff8('0x5'));var config=require('../../config/environment');var attributes=require(_0xdff8('0x6'));module[_0xdff8('0x7')]=function(_0xdaf0a3,_0x42a72c){return _0xdaf0a3[_0xdff8('0x8')](_0xdff8('0x9'),attributes,{'tableName':_0xdff8('0xa'),'paranoid':![],'indexes':[{'name':_0xdff8('0xb'),'fields':[_0xdff8('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 800c945..cb9b44d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0424=['stringify','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','limit','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','value','%s.cypher','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s'];(function(_0x263a16,_0x489c01){var _0x251824=function(_0x510c89){while(--_0x510c89){_0x263a16['push'](_0x263a16['shift']());}};_0x251824(++_0x489c01);}(_0x0424,0x159));var _0x4042=function(_0x5e8c7c,_0x3429c6){_0x5e8c7c=_0x5e8c7c-0x0;var _0x48f7bd=_0x0424[_0x5e8c7c];return _0x48f7bd;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4042('0x0'));var BPromise=require(_0x4042('0x1'));var rs=require(_0x4042('0x2'));var fs=require('fs');var Redis=require(_0x4042('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4042('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x4042('0x5'));var jayson=require(_0x4042('0x6'));var client=jayson[_0x4042('0x7')][_0x4042('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3abaf1,_0xa5310f,_0x10ec07){return new BPromise(function(_0x5d11bf,_0x509772){return client[_0x4042('0x9')](_0x3abaf1,_0x10ec07)[_0x4042('0xa')](function(_0x103e4a){logger['info'](_0x4042('0xb'),_0xa5310f,_0x4042('0xc'));logger[_0x4042('0xd')](_0x4042('0xe'),_0xa5310f,_0x4042('0xc'),JSON[_0x4042('0xf')](_0x103e4a));if(_0x103e4a[_0x4042('0x10')]){if(_0x103e4a[_0x4042('0x10')]['code']===0x1f4){logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x103e4a['error'][_0x4042('0x11')]);return _0x509772(_0x103e4a[_0x4042('0x10')][_0x4042('0x11')]);}logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x103e4a[_0x4042('0x10')][_0x4042('0x11')]);return _0x5d11bf(_0x103e4a['error'][_0x4042('0x11')]);}else{logger[_0x4042('0x12')]('VoiceRecording,\x20%s,\x20%s',_0xa5310f,_0x4042('0xc'));_0x5d11bf(_0x103e4a[_0x4042('0x13')][_0x4042('0x11')]);}})[_0x4042('0x14')](function(_0x31e765){logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x31e765);_0x509772(_0x31e765);});});}exports[_0x4042('0x15')]=function(_0x466077){var _0x4b02d4=this;return new Promise(function(_0xe5c1ec,_0x4fe024){return db[_0x4042('0x16')]['update'](_0x466077[_0x4042('0x17')],{'raw':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')][_0x4042('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x466077['options']?_0x466077[_0x4042('0x18')][_0x4042('0x1a')]||null:null,'attributes':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')]['attributes']||null:null,'limit':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')][_0x4042('0x1b')]||null:null})[_0x4042('0xa')](function(_0x352631){logger['info'](_0x4042('0x15'),_0x466077);logger[_0x4042('0xd')]('UpdateVoiceRecording',_0x466077,JSON[_0x4042('0xf')](_0x352631));_0xe5c1ec(_0x352631);})['catch'](function(_0x271b82){logger[_0x4042('0x10')](_0x4042('0x15'),_0x271b82['message'],_0x466077);_0x4fe024(_0x4b02d4[_0x4042('0x10')](0x1f4,_0x271b82[_0x4042('0x11')]));});});};exports[_0x4042('0x1c')]=function(_0xbdadc8){var _0x1c4d9f=this;return new Promise(function(_0x52e575,_0x58c409){var _0x1d8d48=require(_0x4042('0x1d'));var _0x26542c;return db[_0x4042('0x1e')][_0x4042('0x1f')]({'attributes':['id',_0x4042('0x20')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x33733b){_0x26542c=_0x33733b;return db[_0x4042('0x16')]['create'](_0xbdadc8[_0x4042('0x17')]);})[_0x4042('0xa')](function(_0xe924fe){if(_0x26542c['callRecordingEncryption']&&fs['existsSync'](_0xe924fe[_0x4042('0x21')])){var _0x43bd1c=util['format'](_0x4042('0x22'),_0xe924fe[_0x4042('0x21')]);return _0x1d8d48[_0x4042('0x23')](_0xe924fe[_0x4042('0x21')],_0x43bd1c,config[_0x4042('0x24')][_0x4042('0x25')])[_0x4042('0xa')](function(){fs[_0x4042('0x26')](_0xe924fe[_0x4042('0x21')]);logger['info'](_0x4042('0x27'));return _0xe924fe;});}return _0xe924fe;})[_0x4042('0xa')](function(_0x5320f8){logger[_0x4042('0x12')](_0x4042('0x1c'),_0xbdadc8);logger['debug'](_0x4042('0x1c'),_0xbdadc8,JSON[_0x4042('0xf')](_0x5320f8));_0x52e575(_0x5320f8);})[_0x4042('0x14')](function(_0xaa7c99){logger[_0x4042('0x10')](_0x4042('0x1c'),_0xaa7c99[_0x4042('0x11')],_0xbdadc8);_0x58c409(_0x1c4d9f[_0x4042('0x10')](0x1f4,_0xaa7c99[_0x4042('0x11')]));});});};
\ No newline at end of file
+var _0x958a=['unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','existsSync','value','format','%s.cypher'];(function(_0x106d78,_0x416c5b){var _0xd4f110=function(_0x400720){while(--_0x400720){_0x106d78['push'](_0x106d78['shift']());}};_0xd4f110(++_0x416c5b);}(_0x958a,0x128));var _0xa958=function(_0xf6d619,_0xa7e91b){_0xf6d619=_0xf6d619-0x0;var _0x2a5ea8=_0x958a[_0xf6d619];return _0x2a5ea8;};'use strict';var _=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var moment=require('moment');var BPromise=require(_0xa958('0x2'));var rs=require(_0xa958('0x3'));var fs=require('fs');var Redis=require(_0xa958('0x4'));var db=require(_0xa958('0x5'))['db'];var utils=require(_0xa958('0x6'));var logger=require('../../config/logger')(_0xa958('0x7'));var config=require('../../config/environment');var jayson=require(_0xa958('0x8'));var client=jayson[_0xa958('0x9')][_0xa958('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3ddaa9,_0x3ca01f,_0x3b2693){return new BPromise(function(_0x1895da,_0x54c0e0){return client['request'](_0x3ddaa9,_0x3b2693)[_0xa958('0xb')](function(_0x249764){logger[_0xa958('0xc')](_0xa958('0xd'),_0x3ca01f,_0xa958('0xe'));logger[_0xa958('0xf')](_0xa958('0x10'),_0x3ca01f,_0xa958('0xe'),JSON[_0xa958('0x11')](_0x249764));if(_0x249764[_0xa958('0x12')]){if(_0x249764[_0xa958('0x12')][_0xa958('0x13')]===0x1f4){logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x249764['error']['message']);return _0x54c0e0(_0x249764[_0xa958('0x12')][_0xa958('0x14')]);}logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x249764[_0xa958('0x12')]['message']);return _0x1895da(_0x249764['error']['message']);}else{logger[_0xa958('0xc')](_0xa958('0xd'),_0x3ca01f,_0xa958('0xe'));_0x1895da(_0x249764[_0xa958('0x15')][_0xa958('0x14')]);}})[_0xa958('0x16')](function(_0x23736f){logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x23736f);_0x54c0e0(_0x23736f);});});}exports[_0xa958('0x17')]=function(_0x4eadc9){var _0x3a053f=this;return new Promise(function(_0x70d13e,_0x52a184){return db[_0xa958('0x18')][_0xa958('0x19')](_0x4eadc9[_0xa958('0x1a')],{'raw':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')][_0xa958('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4eadc9['options']?_0x4eadc9['options'][_0xa958('0x1d')]||null:null,'attributes':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')]['attributes']||null:null,'limit':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')]['limit']||null:null})[_0xa958('0xb')](function(_0x401175){logger['info']('UpdateVoiceRecording',_0x4eadc9);logger[_0xa958('0xf')](_0xa958('0x17'),_0x4eadc9,JSON['stringify'](_0x401175));_0x70d13e(_0x401175);})[_0xa958('0x16')](function(_0x27097a){logger[_0xa958('0x12')](_0xa958('0x17'),_0x27097a[_0xa958('0x14')],_0x4eadc9);_0x52a184(_0x3a053f[_0xa958('0x12')](0x1f4,_0x27097a['message']));});});};exports[_0xa958('0x1e')]=function(_0x48ef34){var _0x43df63=this;return new Promise(function(_0x3c2ea3,_0x32ea36){var _0x18f600=require(_0xa958('0x1f'));var _0xddc7f6;return db[_0xa958('0x20')][_0xa958('0x21')]({'attributes':['id',_0xa958('0x22')],'where':{'id':0x1},'raw':!![]})[_0xa958('0xb')](function(_0x4c4c37){_0xddc7f6=_0x4c4c37;return db['VoiceRecording'][_0xa958('0x23')](_0x48ef34['body']);})[_0xa958('0xb')](function(_0x1b76de){if(_0xddc7f6['callRecordingEncryption']&&fs[_0xa958('0x24')](_0x1b76de[_0xa958('0x25')])){var _0x179bc2=util[_0xa958('0x26')](_0xa958('0x27'),_0x1b76de['value']);return _0x18f600['encryptFile'](_0x1b76de[_0xa958('0x25')],_0x179bc2,config['secrets']['recording'])[_0xa958('0xb')](function(){fs[_0xa958('0x28')](_0x1b76de[_0xa958('0x25')]);logger[_0xa958('0xc')](_0xa958('0x29'));return _0x1b76de;});}return _0x1b76de;})[_0xa958('0xb')](function(_0x516a2f){logger[_0xa958('0xc')]('CreateVoiceRecording',_0x48ef34);logger['debug'](_0xa958('0x1e'),_0x48ef34,JSON[_0xa958('0x11')](_0x516a2f));_0x3c2ea3(_0x516a2f);})[_0xa958('0x16')](function(_0x1cc55d){logger[_0xa958('0x12')](_0xa958('0x1e'),_0x1cc55d[_0xa958('0x14')],_0x48ef34);_0x32ea36(_0x43df63[_0xa958('0x12')](0x1f4,_0x1cc55d['message']));});});};
\ No newline at end of file
index 8184beb..cf0a7b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x631b=['isAuthenticated','show','post','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','index','/describe','describe','/:id'];(function(_0x4a0f16,_0x21ba18){var _0x45d653=function(_0x137e2c){while(--_0x137e2c){_0x4a0f16['push'](_0x4a0f16['shift']());}};_0x45d653(++_0x21ba18);}(_0x631b,0xf7));var _0xb631=function(_0x31bd8b,_0x56fa02){_0x31bd8b=_0x31bd8b-0x0;var _0x1506e4=_0x631b[_0x31bd8b];return _0x1506e4;};'use strict';var multer=require(_0xb631('0x0'));var util=require(_0xb631('0x1'));var path=require(_0xb631('0x2'));var timeout=require(_0xb631('0x3'));var express=require(_0xb631('0x4'));var router=express[_0xb631('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb631('0x6'));var config=require(_0xb631('0x7'));var controller=require('./voiceTransferReport.controller');router[_0xb631('0x8')]('/',auth['isAuthenticated'](),controller[_0xb631('0x9')]);router['get'](_0xb631('0xa'),auth['isAuthenticated'](),controller[_0xb631('0xb')]);router[_0xb631('0x8')](_0xb631('0xc'),auth[_0xb631('0xd')](),controller[_0xb631('0xe')]);router[_0xb631('0xf')]('/',auth[_0xb631('0xd')](),controller['create']);router[_0xb631('0x10')](_0xb631('0xc'),auth[_0xb631('0xd')](),controller[_0xb631('0x11')]);router[_0xb631('0x12')](_0xb631('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xb631('0x13')]=router;
\ No newline at end of file
+var _0xfb50=['show','post','create','put','delete','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','get','isAuthenticated','index','describe','/:id'];(function(_0x3c482a,_0x1f8706){var _0x2ad415=function(_0x44befa){while(--_0x44befa){_0x3c482a['push'](_0x3c482a['shift']());}};_0x2ad415(++_0x1f8706);}(_0xfb50,0x8b));var _0x0fb5=function(_0x725b8e,_0xc22b48){_0x725b8e=_0x725b8e-0x0;var _0x43ac45=_0xfb50[_0x725b8e];return _0x43ac45;};'use strict';var multer=require(_0x0fb5('0x0'));var util=require(_0x0fb5('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0fb5('0x2'));var router=express[_0x0fb5('0x3')]();var fs_extra=require(_0x0fb5('0x4'));var auth=require(_0x0fb5('0x5'));var interaction=require(_0x0fb5('0x6'));var config=require('../../config/environment');var controller=require(_0x0fb5('0x7'));router[_0x0fb5('0x8')]('/',auth[_0x0fb5('0x9')](),controller[_0x0fb5('0xa')]);router[_0x0fb5('0x8')]('/describe',auth[_0x0fb5('0x9')](),controller[_0x0fb5('0xb')]);router[_0x0fb5('0x8')](_0x0fb5('0xc'),auth[_0x0fb5('0x9')](),controller[_0x0fb5('0xd')]);router[_0x0fb5('0xe')]('/',auth[_0x0fb5('0x9')](),controller[_0x0fb5('0xf')]);router[_0x0fb5('0x10')]('/:id',auth[_0x0fb5('0x9')](),controller['update']);router[_0x0fb5('0x11')](_0x0fb5('0xc'),auth[_0x0fb5('0x9')](),controller['destroy']);module[_0x0fb5('0x12')]=router;
\ No newline at end of file
index c076f39..e9ac73e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0f1=['blind','attended','STRING','sequelize','exports','ENUM'];(function(_0x3f5dca,_0x59472b){var _0x5b833a=function(_0x1cb84b){while(--_0x1cb84b){_0x3f5dca['push'](_0x3f5dca['shift']());}};_0x5b833a(++_0x59472b);}(_0xe0f1,0x105));var _0x1e0f=function(_0x589aee,_0x140a03){_0x589aee=_0x589aee-0x0;var _0x2f5ed4=_0xe0f1[_0x589aee];return _0x2f5ed4;};'use strict';var Sequelize=require(_0x1e0f('0x0'));var moment=require('moment');module[_0x1e0f('0x1')]={'type':{'type':Sequelize[_0x1e0f('0x2')](_0x1e0f('0x3'),_0x1e0f('0x4'))},'result':{'type':Sequelize[_0x1e0f('0x5')]},'transfererchannel':{'type':Sequelize[_0x1e0f('0x5')]},'transferercalleridnum':{'type':Sequelize[_0x1e0f('0x5')]},'transferercalleridname':{'type':Sequelize[_0x1e0f('0x5')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0x1e0f('0x5')]},'transfereraccountcode':{'type':Sequelize[_0x1e0f('0x5')]},'transferercontext':{'type':Sequelize[_0x1e0f('0x5')]},'transfererexten':{'type':Sequelize[_0x1e0f('0x5')]},'transfererlinkedid':{'type':Sequelize[_0x1e0f('0x5')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x1e0f('0x5')]},'transfereecalleridname':{'type':Sequelize[_0x1e0f('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x1e0f('0x5')]},'transfereeconnectedlinename':{'type':Sequelize[_0x1e0f('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0x1e0f('0x5')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0x1e0f('0x5')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x1e0f('0x2')]('Yes','No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x1e0f('0x5')]}};
\ No newline at end of file
+var _0x5216=['ENUM','STRING','moment','exports'];(function(_0xb94890,_0x21340a){var _0x85e6c8=function(_0x1ce9e9){while(--_0x1ce9e9){_0xb94890['push'](_0xb94890['shift']());}};_0x85e6c8(++_0x21340a);}(_0x5216,0x146));var _0x6521=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x5216[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x6521('0x0'));module[_0x6521('0x1')]={'type':{'type':Sequelize[_0x6521('0x2')]('blind','attended')},'result':{'type':Sequelize[_0x6521('0x3')]},'transfererchannel':{'type':Sequelize[_0x6521('0x3')]},'transferercalleridnum':{'type':Sequelize[_0x6521('0x3')]},'transferercalleridname':{'type':Sequelize[_0x6521('0x3')]},'transfererconnectedlinenum':{'type':Sequelize[_0x6521('0x3')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize[_0x6521('0x3')]},'transferercontext':{'type':Sequelize[_0x6521('0x3')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0x6521('0x3')]},'transfereecalleridnum':{'type':Sequelize[_0x6521('0x3')]},'transfereecalleridname':{'type':Sequelize[_0x6521('0x3')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0x6521('0x3')]},'transfereeaccountcode':{'type':Sequelize[_0x6521('0x3')]},'transfereecontext':{'type':Sequelize[_0x6521('0x3')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize[_0x6521('0x3')]},'isexternal':{'type':Sequelize[_0x6521('0x2')]('Yes','No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x6521('0x3')]}};
\ No newline at end of file
index b4a08aa..f833f78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89f0=['catch','params','include','create','body','find','destroy','describe','rimraf','fast-json-patch','bluebird','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','stack','name','send','index','rawAttributes','type','key','keys','filters','intersection','model','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceTransferReport','findAll'];(function(_0x539fb2,_0x5b6718){var _0x4d583d=function(_0x55fa69){while(--_0x55fa69){_0x539fb2['push'](_0x539fb2['shift']());}};_0x4d583d(++_0x5b6718);}(_0x89f0,0xd4));var _0x089f=function(_0x3f6393,_0x30ede6){_0x3f6393=_0x3f6393-0x0;var _0x3f3416=_0x89f0[_0x3f6393];return _0x3f3416;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x089f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x089f('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x089f('0x2'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x089f('0x3'));var fs=require('fs');var fs_extra=require(_0x089f('0x4'));var _=require('lodash');var squel=require(_0x089f('0x5'));var crypto=require(_0x089f('0x6'));var jsforce=require(_0x089f('0x7'));var deskjs=require(_0x089f('0x8'));var toCsv=require(_0x089f('0x9'));var querystring=require(_0x089f('0xa'));var Papa=require(_0x089f('0xb'));var Redis=require(_0x089f('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x089f('0xd'));var as=require(_0x089f('0xe'));var hardwareService=require(_0x089f('0xf'));var logger=require(_0x089f('0x10'))('api');var utils=require('../../config/utils');var config=require(_0x089f('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0x089f('0x12'))['db'];function respondWithStatusCode(_0x4eb10e,_0x4cc53c){_0x4cc53c=_0x4cc53c||0xcc;return function(_0x358a69){if(_0x358a69){return _0x4eb10e[_0x089f('0x13')](_0x4cc53c);}return _0x4eb10e['status'](_0x4cc53c)['end']();};}function respondWithResult(_0xe0c9e0,_0x2c9af7){_0x2c9af7=_0x2c9af7||0xc8;return function(_0xb21958){if(_0xb21958){return _0xe0c9e0[_0x089f('0x14')](_0x2c9af7)[_0x089f('0x15')](_0xb21958);}};}function respondWithFilteredResult(_0x59b0fc,_0x2b2113){return function(_0xf7028f){if(_0xf7028f){var _0x3a3732=typeof _0x2b2113[_0x089f('0x16')]===_0x089f('0x17')&&typeof _0x2b2113[_0x089f('0x18')]===_0x089f('0x17');var _0x1deb25=_0xf7028f[_0x089f('0x19')];var _0x36531c=_0x3a3732?0x0:_0x2b2113[_0x089f('0x16')];var _0x499993=_0x3a3732?_0xf7028f[_0x089f('0x19')]:_0x2b2113['offset']+_0x2b2113['limit'];var _0x194c3c;if(_0x499993>=_0x1deb25){_0x499993=_0x1deb25;_0x194c3c=0xc8;}else{_0x194c3c=0xce;}_0x59b0fc['status'](_0x194c3c);return _0x59b0fc[_0x089f('0x1a')](_0x089f('0x1b'),_0x36531c+'-'+_0x499993+'/'+_0x1deb25)[_0x089f('0x15')](_0xf7028f);}return null;};}function patchUpdates(_0x1c1d0c){return function(_0x338f2a){try{jsonpatch[_0x089f('0x1c')](_0x338f2a,_0x1c1d0c,!![]);}catch(_0x2cecfe){return BPromise[_0x089f('0x1d')](_0x2cecfe);}return _0x338f2a[_0x089f('0x1e')]();};}function saveUpdates(_0x319d21,_0x30d362){return function(_0x818c26){if(_0x818c26){return _0x818c26[_0x089f('0x1f')](_0x319d21)[_0x089f('0x20')](function(_0x4fbf45){return _0x4fbf45;});}return null;};}function removeEntity(_0x3b2b2f,_0x1edb18){return function(_0x18f354){if(_0x18f354){return _0x18f354['destroy']()[_0x089f('0x20')](function(){_0x3b2b2f[_0x089f('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x763905,_0x3e4004){return function(_0x14d6e6){if(!_0x14d6e6){_0x763905[_0x089f('0x13')](0x194);}return _0x14d6e6;};}function handleError(_0xdbd8d1,_0x49edb4){_0x49edb4=_0x49edb4||0x1f4;return function(_0x5d9e06){logger['error'](_0x5d9e06[_0x089f('0x21')]);if(_0x5d9e06[_0x089f('0x22')]){delete _0x5d9e06[_0x089f('0x22')];}_0xdbd8d1['status'](_0x49edb4)[_0x089f('0x23')](_0x5d9e06);};}exports[_0x089f('0x24')]=function(_0x5e4205,_0x14c810){var _0x2b8104={},_0x1efdca={},_0x3e8cbc={'count':0x0,'rows':[]};var _0x13b6c4=_['map'](db['VoiceTransferReport'][_0x089f('0x25')],function(_0x37d5af){return{'name':_0x37d5af['fieldName'],'type':_0x37d5af[_0x089f('0x26')][_0x089f('0x27')]};});_0x1efdca['model']=_['map'](_0x13b6c4,_0x089f('0x22'));_0x1efdca['query']=_[_0x089f('0x28')](_0x5e4205['query']);_0x1efdca[_0x089f('0x29')]=_[_0x089f('0x2a')](_0x1efdca[_0x089f('0x2b')],_0x1efdca[_0x089f('0x2c')]);_0x2b8104['attributes']=_['intersection'](_0x1efdca[_0x089f('0x2b')],qs[_0x089f('0x2d')](_0x5e4205[_0x089f('0x2c')]['fields']));_0x2b8104[_0x089f('0x2e')]=_0x2b8104['attributes'][_0x089f('0x2f')]?_0x2b8104[_0x089f('0x2e')]:_0x1efdca['model'];if(!_0x5e4205[_0x089f('0x2c')][_0x089f('0x30')](_0x089f('0x31'))){_0x2b8104[_0x089f('0x18')]=qs[_0x089f('0x18')](_0x5e4205[_0x089f('0x2c')][_0x089f('0x18')]);_0x2b8104[_0x089f('0x16')]=qs[_0x089f('0x16')](_0x5e4205['query']['offset']);}_0x2b8104[_0x089f('0x32')]=qs['sort'](_0x5e4205[_0x089f('0x2c')][_0x089f('0x33')]);_0x2b8104[_0x089f('0x34')]=qs[_0x089f('0x29')](_[_0x089f('0x35')](_0x5e4205[_0x089f('0x2c')],_0x1efdca[_0x089f('0x29')]),_0x13b6c4);if(_0x5e4205[_0x089f('0x2c')][_0x089f('0x36')]){_0x2b8104[_0x089f('0x34')]=_[_0x089f('0x37')](_0x2b8104[_0x089f('0x34')],{'$or':_['map'](_0x13b6c4,function(_0x371e08){if(_0x371e08['type']!==_0x089f('0x38')){var _0x6a85d6={};_0x6a85d6[_0x371e08['name']]={'$like':'%'+_0x5e4205[_0x089f('0x2c')]['filter']+'%'};return _0x6a85d6;}})});}_0x2b8104=_[_0x089f('0x37')]({},_0x2b8104,_0x5e4205[_0x089f('0x39')]);var _0x3101fd={'where':_0x2b8104[_0x089f('0x34')]};return db[_0x089f('0x3a')][_0x089f('0x19')](_0x3101fd)[_0x089f('0x20')](function(_0x557462){_0x3e8cbc['count']=_0x557462;if(_0x5e4205[_0x089f('0x2c')]['includeAll']){_0x2b8104['include']=[{'all':!![]}];}return db[_0x089f('0x3a')][_0x089f('0x3b')](_0x2b8104);})['then'](function(_0x374457){_0x3e8cbc['rows']=_0x374457;return _0x3e8cbc;})['then'](respondWithFilteredResult(_0x14c810,_0x2b8104))[_0x089f('0x3c')](handleError(_0x14c810,null));};exports['show']=function(_0x4f6be7,_0x454777){var _0x485cc5={'raw':!![],'where':{'id':_0x4f6be7[_0x089f('0x3d')]['id']}},_0x2a8044={};_0x2a8044[_0x089f('0x2b')]=_[_0x089f('0x28')](db[_0x089f('0x3a')][_0x089f('0x25')]);_0x2a8044[_0x089f('0x2c')]=_[_0x089f('0x28')](_0x4f6be7['query']);_0x2a8044[_0x089f('0x29')]=_['intersection'](_0x2a8044[_0x089f('0x2b')],_0x2a8044['query']);_0x485cc5[_0x089f('0x2e')]=_[_0x089f('0x2a')](_0x2a8044[_0x089f('0x2b')],qs[_0x089f('0x2d')](_0x4f6be7[_0x089f('0x2c')][_0x089f('0x2d')]));_0x485cc5['attributes']=_0x485cc5['attributes'][_0x089f('0x2f')]?_0x485cc5[_0x089f('0x2e')]:_0x2a8044[_0x089f('0x2b')];if(_0x4f6be7[_0x089f('0x2c')]['includeAll']){_0x485cc5[_0x089f('0x3e')]=[{'all':!![]}];}_0x485cc5=_[_0x089f('0x37')]({},_0x485cc5,_0x4f6be7[_0x089f('0x39')]);return db['VoiceTransferReport']['find'](_0x485cc5)['then'](handleEntityNotFound(_0x454777,null))[_0x089f('0x20')](respondWithResult(_0x454777,null))[_0x089f('0x3c')](handleError(_0x454777,null));};exports['create']=function(_0x53c5af,_0xa8d163){return db[_0x089f('0x3a')][_0x089f('0x3f')](_0x53c5af[_0x089f('0x40')],{})[_0x089f('0x20')](respondWithResult(_0xa8d163,0xc9))[_0x089f('0x3c')](handleError(_0xa8d163,null));};exports[_0x089f('0x1f')]=function(_0x3fcf27,_0x554d74){if(_0x3fcf27['body']['id']){delete _0x3fcf27[_0x089f('0x40')]['id'];}return db[_0x089f('0x3a')][_0x089f('0x41')]({'where':{'id':_0x3fcf27['params']['id']}})[_0x089f('0x20')](handleEntityNotFound(_0x554d74,null))[_0x089f('0x20')](saveUpdates(_0x3fcf27['body'],null))[_0x089f('0x20')](respondWithResult(_0x554d74,null))['catch'](handleError(_0x554d74,null));};exports[_0x089f('0x42')]=function(_0x5bbc44,_0x3137d7){return db[_0x089f('0x3a')][_0x089f('0x41')]({'where':{'id':_0x5bbc44['params']['id']}})[_0x089f('0x20')](handleEntityNotFound(_0x3137d7,null))['then'](removeEntity(_0x3137d7,null))[_0x089f('0x3c')](handleError(_0x3137d7,null));};exports[_0x089f('0x43')]=function(_0x494b81,_0x14a62f){return db[_0x089f('0x3a')][_0x089f('0x43')]()[_0x089f('0x20')](respondWithResult(_0x14a62f,null))['catch'](handleError(_0x14a62f,null));};
\ No newline at end of file
+var _0x6664=['VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','VoiceTransferReport','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge'];(function(_0x292748,_0x546f35){var _0x16e370=function(_0x189d5d){while(--_0x189d5d){_0x292748['push'](_0x292748['shift']());}};_0x16e370(++_0x546f35);}(_0x6664,0x1bd));var _0x4666=function(_0x40507d,_0x47b067){_0x40507d=_0x40507d-0x0;var _0x48b3ba=_0x6664[_0x40507d];return _0x48b3ba;};'use strict';var emlformat=require(_0x4666('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4666('0x1'));var jsonpatch=require(_0x4666('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4666('0x3'));var Mustache=require(_0x4666('0x4'));var util=require(_0x4666('0x5'));var path=require(_0x4666('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(_0x4666('0x7'));var squel=require(_0x4666('0x8'));var crypto=require('crypto');var jsforce=require(_0x4666('0x9'));var deskjs=require(_0x4666('0xa'));var toCsv=require(_0x4666('0xb'));var querystring=require(_0x4666('0xc'));var Papa=require(_0x4666('0xd'));var Redis=require(_0x4666('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x4666('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4666('0x10'))(_0x4666('0x11'));var utils=require('../../config/utils');var config=require(_0x4666('0x12'));var licenseUtil=require(_0x4666('0x13'));var db=require(_0x4666('0x14'))['db'];function respondWithStatusCode(_0x509aea,_0x29db42){_0x29db42=_0x29db42||0xcc;return function(_0x4ae8e9){if(_0x4ae8e9){return _0x509aea[_0x4666('0x15')](_0x29db42);}return _0x509aea[_0x4666('0x16')](_0x29db42)[_0x4666('0x17')]();};}function respondWithResult(_0x3bd1c3,_0x34e653){_0x34e653=_0x34e653||0xc8;return function(_0x21b2f8){if(_0x21b2f8){return _0x3bd1c3[_0x4666('0x16')](_0x34e653)[_0x4666('0x18')](_0x21b2f8);}};}function respondWithFilteredResult(_0x376e84,_0x53bdb5){return function(_0x5019d7){if(_0x5019d7){var _0x5d0f14=typeof _0x53bdb5[_0x4666('0x19')]==='undefined'&&typeof _0x53bdb5[_0x4666('0x1a')]==='undefined';var _0x21cfb4=_0x5019d7[_0x4666('0x1b')];var _0xb4a72c=_0x5d0f14?0x0:_0x53bdb5[_0x4666('0x19')];var _0x4798a7=_0x5d0f14?_0x5019d7[_0x4666('0x1b')]:_0x53bdb5[_0x4666('0x19')]+_0x53bdb5['limit'];var _0x4fd90f;if(_0x4798a7>=_0x21cfb4){_0x4798a7=_0x21cfb4;_0x4fd90f=0xc8;}else{_0x4fd90f=0xce;}_0x376e84['status'](_0x4fd90f);return _0x376e84['set'](_0x4666('0x1c'),_0xb4a72c+'-'+_0x4798a7+'/'+_0x21cfb4)[_0x4666('0x18')](_0x5019d7);}return null;};}function patchUpdates(_0x328523){return function(_0x3aac1a){try{jsonpatch[_0x4666('0x1d')](_0x3aac1a,_0x328523,!![]);}catch(_0x10ccf6){return BPromise[_0x4666('0x1e')](_0x10ccf6);}return _0x3aac1a[_0x4666('0x1f')]();};}function saveUpdates(_0x3eba61,_0x26f17a){return function(_0x4c26e6){if(_0x4c26e6){return _0x4c26e6[_0x4666('0x20')](_0x3eba61)[_0x4666('0x21')](function(_0x377fa8){return _0x377fa8;});}return null;};}function removeEntity(_0x3add8f,_0x44e1c7){return function(_0x36695c){if(_0x36695c){return _0x36695c[_0x4666('0x22')]()[_0x4666('0x21')](function(){_0x3add8f[_0x4666('0x16')](0xcc)[_0x4666('0x17')]();});}};}function handleEntityNotFound(_0x2517ea,_0x5d9ab3){return function(_0x437457){if(!_0x437457){_0x2517ea[_0x4666('0x15')](0x194);}return _0x437457;};}function handleError(_0x2a7aa6,_0x49ebf5){_0x49ebf5=_0x49ebf5||0x1f4;return function(_0x1b7062){logger['error'](_0x1b7062[_0x4666('0x23')]);if(_0x1b7062['name']){delete _0x1b7062[_0x4666('0x24')];}_0x2a7aa6[_0x4666('0x16')](_0x49ebf5)[_0x4666('0x25')](_0x1b7062);};}exports[_0x4666('0x26')]=function(_0x2d1289,_0x8ebeba){var _0x5cd58f={},_0x294228={},_0x252adc={'count':0x0,'rows':[]};var _0x511979=_[_0x4666('0x27')](db[_0x4666('0x28')][_0x4666('0x29')],function(_0x407c6e){return{'name':_0x407c6e[_0x4666('0x2a')],'type':_0x407c6e[_0x4666('0x2b')]['key']};});_0x294228['model']=_[_0x4666('0x27')](_0x511979,_0x4666('0x24'));_0x294228[_0x4666('0x2c')]=_['keys'](_0x2d1289[_0x4666('0x2c')]);_0x294228[_0x4666('0x2d')]=_[_0x4666('0x2e')](_0x294228[_0x4666('0x2f')],_0x294228[_0x4666('0x2c')]);_0x5cd58f[_0x4666('0x30')]=_['intersection'](_0x294228[_0x4666('0x2f')],qs[_0x4666('0x31')](_0x2d1289[_0x4666('0x2c')][_0x4666('0x31')]));_0x5cd58f[_0x4666('0x30')]=_0x5cd58f['attributes'][_0x4666('0x32')]?_0x5cd58f[_0x4666('0x30')]:_0x294228[_0x4666('0x2f')];if(!_0x2d1289[_0x4666('0x2c')][_0x4666('0x33')](_0x4666('0x34'))){_0x5cd58f[_0x4666('0x1a')]=qs[_0x4666('0x1a')](_0x2d1289[_0x4666('0x2c')][_0x4666('0x1a')]);_0x5cd58f[_0x4666('0x19')]=qs[_0x4666('0x19')](_0x2d1289[_0x4666('0x2c')][_0x4666('0x19')]);}_0x5cd58f[_0x4666('0x35')]=qs[_0x4666('0x36')](_0x2d1289[_0x4666('0x2c')][_0x4666('0x36')]);_0x5cd58f['where']=qs[_0x4666('0x2d')](_[_0x4666('0x37')](_0x2d1289[_0x4666('0x2c')],_0x294228[_0x4666('0x2d')]),_0x511979);if(_0x2d1289[_0x4666('0x2c')][_0x4666('0x38')]){_0x5cd58f[_0x4666('0x39')]=_[_0x4666('0x3a')](_0x5cd58f[_0x4666('0x39')],{'$or':_[_0x4666('0x27')](_0x511979,function(_0x537d2e){if(_0x537d2e[_0x4666('0x2b')]!==_0x4666('0x3b')){var _0x4a8ded={};_0x4a8ded[_0x537d2e[_0x4666('0x24')]]={'$like':'%'+_0x2d1289[_0x4666('0x2c')][_0x4666('0x38')]+'%'};return _0x4a8ded;}})});}_0x5cd58f=_['merge']({},_0x5cd58f,_0x2d1289['options']);var _0x32a958={'where':_0x5cd58f[_0x4666('0x39')]};return db[_0x4666('0x28')]['count'](_0x32a958)[_0x4666('0x21')](function(_0x4eebd2){_0x252adc['count']=_0x4eebd2;if(_0x2d1289['query'][_0x4666('0x3c')]){_0x5cd58f[_0x4666('0x3d')]=[{'all':!![]}];}return db[_0x4666('0x28')][_0x4666('0x3e')](_0x5cd58f);})['then'](function(_0x23d340){_0x252adc[_0x4666('0x3f')]=_0x23d340;return _0x252adc;})[_0x4666('0x21')](respondWithFilteredResult(_0x8ebeba,_0x5cd58f))[_0x4666('0x40')](handleError(_0x8ebeba,null));};exports[_0x4666('0x41')]=function(_0x136714,_0x376e21){var _0x1433d1={'raw':!![],'where':{'id':_0x136714[_0x4666('0x42')]['id']}},_0x1493ab={};_0x1493ab[_0x4666('0x2f')]=_[_0x4666('0x43')](db[_0x4666('0x28')]['rawAttributes']);_0x1493ab[_0x4666('0x2c')]=_[_0x4666('0x43')](_0x136714[_0x4666('0x2c')]);_0x1493ab[_0x4666('0x2d')]=_[_0x4666('0x2e')](_0x1493ab[_0x4666('0x2f')],_0x1493ab[_0x4666('0x2c')]);_0x1433d1[_0x4666('0x30')]=_[_0x4666('0x2e')](_0x1493ab['model'],qs[_0x4666('0x31')](_0x136714[_0x4666('0x2c')][_0x4666('0x31')]));_0x1433d1['attributes']=_0x1433d1[_0x4666('0x30')]['length']?_0x1433d1['attributes']:_0x1493ab[_0x4666('0x2f')];if(_0x136714[_0x4666('0x2c')]['includeAll']){_0x1433d1['include']=[{'all':!![]}];}_0x1433d1=_[_0x4666('0x3a')]({},_0x1433d1,_0x136714['options']);return db[_0x4666('0x28')][_0x4666('0x44')](_0x1433d1)[_0x4666('0x21')](handleEntityNotFound(_0x376e21,null))[_0x4666('0x21')](respondWithResult(_0x376e21,null))[_0x4666('0x40')](handleError(_0x376e21,null));};exports[_0x4666('0x45')]=function(_0x56d620,_0x144270){return db[_0x4666('0x28')][_0x4666('0x45')](_0x56d620[_0x4666('0x46')],{})[_0x4666('0x21')](respondWithResult(_0x144270,0xc9))['catch'](handleError(_0x144270,null));};exports[_0x4666('0x20')]=function(_0x9e6c92,_0x299206){if(_0x9e6c92[_0x4666('0x46')]['id']){delete _0x9e6c92['body']['id'];}return db[_0x4666('0x28')][_0x4666('0x44')]({'where':{'id':_0x9e6c92[_0x4666('0x42')]['id']}})[_0x4666('0x21')](handleEntityNotFound(_0x299206,null))[_0x4666('0x21')](saveUpdates(_0x9e6c92[_0x4666('0x46')],null))[_0x4666('0x21')](respondWithResult(_0x299206,null))['catch'](handleError(_0x299206,null));};exports[_0x4666('0x22')]=function(_0x224510,_0x414574){return db['VoiceTransferReport'][_0x4666('0x44')]({'where':{'id':_0x224510[_0x4666('0x42')]['id']}})[_0x4666('0x21')](handleEntityNotFound(_0x414574,null))['then'](removeEntity(_0x414574,null))['catch'](handleError(_0x414574,null));};exports[_0x4666('0x47')]=function(_0x2621a2,_0x11f719){return db[_0x4666('0x28')][_0x4666('0x47')]()[_0x4666('0x21')](respondWithResult(_0x11f719,null))[_0x4666('0x40')](handleError(_0x11f719,null));};
\ No newline at end of file
index 92e069d..a2bd5c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe60=['../../config/logger','api','moment','bluebird','request-promise','rimraf','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','lodash','util'];(function(_0x16a681,_0x35e78e){var _0x333df3=function(_0x20fe02){while(--_0x20fe02){_0x16a681['push'](_0x16a681['shift']());}};_0x333df3(++_0x35e78e);}(_0xbe60,0x19e));var _0x0be6=function(_0x174404,_0x511294){_0x174404=_0x174404-0x0;var _0x374750=_0xbe60[_0x174404];return _0x374750;};'use strict';var _=require(_0x0be6('0x0'));var util=require(_0x0be6('0x1'));var logger=require(_0x0be6('0x2'))(_0x0be6('0x3'));var moment=require(_0x0be6('0x4'));var BPromise=require(_0x0be6('0x5'));var rp=require(_0x0be6('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0be6('0x7'));var config=require('../../config/environment');var attributes=require(_0x0be6('0x8'));module[_0x0be6('0x9')]=function(_0x4e336e,_0x35453a){return _0x4e336e[_0x0be6('0xa')](_0x0be6('0xb'),attributes,{'tableName':_0x0be6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcdb7=['../../config/environment','define','VoiceTransferReport','report_call_transfer','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0xd4e66a,_0x1c2992){var _0x21dadd=function(_0x35b9da){while(--_0x35b9da){_0xd4e66a['push'](_0xd4e66a['shift']());}};_0x21dadd(++_0x1c2992);}(_0xcdb7,0x94));var _0x7cdb=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xcdb7[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x7cdb('0x0'));var util=require(_0x7cdb('0x1'));var logger=require('../../config/logger')(_0x7cdb('0x2'));var moment=require(_0x7cdb('0x3'));var BPromise=require(_0x7cdb('0x4'));var rp=require(_0x7cdb('0x5'));var fs=require('fs');var path=require(_0x7cdb('0x6'));var rimraf=require(_0x7cdb('0x7'));var config=require(_0x7cdb('0x8'));var attributes=require('./voiceTransferReport.attributes');module['exports']=function(_0x3924c2,_0x50d5a1){return _0x3924c2[_0x7cdb('0x9')](_0x7cdb('0xa'),attributes,{'tableName':_0x7cdb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 78677fc..ca393b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x404d=['message','info','result','CreateVoiceTransferReport','VoiceTransferReport','create','options','raw','then','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','request','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x471ac2,_0x3f459e){var _0x46eb4c=function(_0x3465c1){while(--_0x3465c1){_0x471ac2['push'](_0x471ac2['shift']());}};_0x46eb4c(++_0x3f459e);}(_0x404d,0x11d));var _0xd404=function(_0x5998bd,_0x2b537e){_0x5998bd=_0x5998bd-0x0;var _0x5e8e8e=_0x404d[_0x5998bd];return _0x5e8e8e;};'use strict';var _=require(_0xd404('0x0'));var util=require(_0xd404('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd404('0x2'));var fs=require('fs');var Redis=require(_0xd404('0x3'));var db=require(_0xd404('0x4'))['db'];var utils=require(_0xd404('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xd404('0x6'));var jayson=require(_0xd404('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x49436a,_0x4f3238,_0x1e278e){return new BPromise(function(_0x407c0c,_0x15ddd2){return client[_0xd404('0x8')](_0x49436a,_0x1e278e)['then'](function(_0x3edb9c){logger['info'](_0xd404('0x9'),_0x4f3238,_0xd404('0xa'));logger[_0xd404('0xb')](_0xd404('0xc'),_0x4f3238,_0xd404('0xa'),JSON[_0xd404('0xd')](_0x3edb9c));if(_0x3edb9c[_0xd404('0xe')]){if(_0x3edb9c[_0xd404('0xe')]['code']===0x1f4){logger[_0xd404('0xe')](_0xd404('0x9'),_0x4f3238,_0x3edb9c['error'][_0xd404('0xf')]);return _0x15ddd2(_0x3edb9c[_0xd404('0xe')][_0xd404('0xf')]);}logger[_0xd404('0xe')](_0xd404('0x9'),_0x4f3238,_0x3edb9c[_0xd404('0xe')]['message']);return _0x407c0c(_0x3edb9c['error'][_0xd404('0xf')]);}else{logger[_0xd404('0x10')]('VoiceTransferReport,\x20%s,\x20%s',_0x4f3238,'request\x20sent');_0x407c0c(_0x3edb9c[_0xd404('0x11')]['message']);}})['catch'](function(_0x4d00a4){logger[_0xd404('0xe')]('VoiceTransferReport,\x20%s,\x20%s',_0x4f3238,_0x4d00a4);_0x15ddd2(_0x4d00a4);});});}exports[_0xd404('0x12')]=function(_0x217534){var _0x2db002=this;return new Promise(function(_0x52ad88,_0x5433e3){return db[_0xd404('0x13')][_0xd404('0x14')](_0x217534['body'],{'raw':_0x217534[_0xd404('0x15')]?_0x217534[_0xd404('0x15')][_0xd404('0x16')]===undefined?!![]:![]:!![]})[_0xd404('0x17')](function(_0x133a52){logger['info'](_0xd404('0x12'),_0x217534);logger[_0xd404('0xb')]('CreateVoiceTransferReport',_0x217534,JSON[_0xd404('0xd')](_0x133a52));_0x52ad88(_0x133a52);})[_0xd404('0x18')](function(_0x42940d){logger[_0xd404('0xe')](_0xd404('0x12'),_0x42940d[_0xd404('0xf')],_0x217534);_0x5433e3(_0x2db002[_0xd404('0xe')](0x1f4,_0x42940d['message']));});});};
\ No newline at end of file
+var _0xec14=['catch','CreateVoiceTransferReport','create','options','raw','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x3bef2c,_0x5a86fd){var _0x331503=function(_0x463430){while(--_0x463430){_0x3bef2c['push'](_0x3bef2c['shift']());}};_0x331503(++_0x5a86fd);}(_0xec14,0xa1));var _0x4ec1=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xec14[_0x37c22c];return _0x119d79;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4ec1('0x0'));var BPromise=require('bluebird');var rs=require(_0x4ec1('0x1'));var fs=require('fs');var Redis=require(_0x4ec1('0x2'));var db=require(_0x4ec1('0x3'))['db'];var utils=require(_0x4ec1('0x4'));var logger=require(_0x4ec1('0x5'))('rpc');var config=require(_0x4ec1('0x6'));var jayson=require(_0x4ec1('0x7'));var client=jayson[_0x4ec1('0x8')][_0x4ec1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x54be0b,_0x4c4ee7,_0x433f8a){return new BPromise(function(_0x167dcc,_0x19a163){return client[_0x4ec1('0xa')](_0x54be0b,_0x433f8a)[_0x4ec1('0xb')](function(_0x19ebc2){logger[_0x4ec1('0xc')](_0x4ec1('0xd'),_0x4c4ee7,_0x4ec1('0xe'));logger[_0x4ec1('0xf')](_0x4ec1('0x10'),_0x4c4ee7,_0x4ec1('0xe'),JSON[_0x4ec1('0x11')](_0x19ebc2));if(_0x19ebc2[_0x4ec1('0x12')]){if(_0x19ebc2[_0x4ec1('0x12')]['code']===0x1f4){logger[_0x4ec1('0x12')](_0x4ec1('0xd'),_0x4c4ee7,_0x19ebc2[_0x4ec1('0x12')]['message']);return _0x19a163(_0x19ebc2[_0x4ec1('0x12')]['message']);}logger[_0x4ec1('0x12')](_0x4ec1('0xd'),_0x4c4ee7,_0x19ebc2['error'][_0x4ec1('0x13')]);return _0x167dcc(_0x19ebc2[_0x4ec1('0x12')][_0x4ec1('0x13')]);}else{logger[_0x4ec1('0xc')]('VoiceTransferReport,\x20%s,\x20%s',_0x4c4ee7,_0x4ec1('0xe'));_0x167dcc(_0x19ebc2[_0x4ec1('0x14')][_0x4ec1('0x13')]);}})[_0x4ec1('0x15')](function(_0x15b5e0){logger[_0x4ec1('0x12')](_0x4ec1('0xd'),_0x4c4ee7,_0x15b5e0);_0x19a163(_0x15b5e0);});});}exports[_0x4ec1('0x16')]=function(_0xc8f1a9){var _0x4b4d11=this;return new Promise(function(_0x27d6e9,_0x5c236b){return db['VoiceTransferReport'][_0x4ec1('0x17')](_0xc8f1a9['body'],{'raw':_0xc8f1a9[_0x4ec1('0x18')]?_0xc8f1a9[_0x4ec1('0x18')][_0x4ec1('0x19')]===undefined?!![]:![]:!![]})[_0x4ec1('0xb')](function(_0x2ef9d6){logger[_0x4ec1('0xc')]('CreateVoiceTransferReport',_0xc8f1a9);logger[_0x4ec1('0xf')](_0x4ec1('0x16'),_0xc8f1a9,JSON[_0x4ec1('0x11')](_0x2ef9d6));_0x27d6e9(_0x2ef9d6);})[_0x4ec1('0x15')](function(_0x2c302){logger[_0x4ec1('0x12')]('CreateVoiceTransferReport',_0x2c302[_0x4ec1('0x13')],_0xc8f1a9);_0x5c236b(_0x4b4d11['error'](0x1f4,_0x2c302['message']));});});};
\ No newline at end of file
index 478f1d6..12148a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a85=['hold','/unhold','unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','post','isAuthenticated','canUpdate','/hangup','hangup','/answer','answer'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0x2a85,0x138));var _0x52a8=function(_0x173e4e,_0x24de6){_0x173e4e=_0x173e4e-0x0;var _0x52597c=_0x2a85[_0x173e4e];return _0x52597c;};'use strict';var express=require(_0x52a8('0x0'));var router=express[_0x52a8('0x1')]();var auth=require(_0x52a8('0x2'));var controller=require(_0x52a8('0x3'));router[_0x52a8('0x4')]('/originate',auth[_0x52a8('0x5')](),auth[_0x52a8('0x6')](),controller['originate']);router[_0x52a8('0x4')](_0x52a8('0x7'),auth[_0x52a8('0x5')](),auth[_0x52a8('0x6')](),controller[_0x52a8('0x8')]);router[_0x52a8('0x4')](_0x52a8('0x9'),auth[_0x52a8('0x5')](),auth[_0x52a8('0x6')](),controller[_0x52a8('0xa')]);router[_0x52a8('0x4')]('/hold',auth[_0x52a8('0x5')](),auth[_0x52a8('0x6')](),controller[_0x52a8('0xb')]);router[_0x52a8('0x4')](_0x52a8('0xc'),auth[_0x52a8('0x5')](),auth[_0x52a8('0x6')](),controller[_0x52a8('0xd')]);router[_0x52a8('0x4')](_0x52a8('0xe'),auth[_0x52a8('0x5')](),auth['canUpdate'](),controller[_0x52a8('0xf')]);router[_0x52a8('0x4')](_0x52a8('0x10'),auth[_0x52a8('0x5')](),auth[_0x52a8('0x6')](),controller[_0x52a8('0x11')]);module[_0x52a8('0x12')]=router;
\ No newline at end of file
+var _0x8a2c=['/transfer','transfer','exports','express','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','originate','canUpdate','hangup','/answer','/hold','hold','/unhold','/calls','calls'];(function(_0x365cca,_0xc88875){var _0x2f7221=function(_0x4a2a13){while(--_0x4a2a13){_0x365cca['push'](_0x365cca['shift']());}};_0x2f7221(++_0xc88875);}(_0x8a2c,0xa5));var _0xc8a2=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x8a2c[_0x5d2803];return _0xdcad2c;};'use strict';var express=require(_0xc8a2('0x0'));var router=express['Router']();var auth=require(_0xc8a2('0x1'));var controller=require(_0xc8a2('0x2'));router[_0xc8a2('0x3')](_0xc8a2('0x4'),auth[_0xc8a2('0x5')](),auth['canUpdate'](),controller[_0xc8a2('0x6')]);router[_0xc8a2('0x3')]('/hangup',auth[_0xc8a2('0x5')](),auth[_0xc8a2('0x7')](),controller[_0xc8a2('0x8')]);router[_0xc8a2('0x3')](_0xc8a2('0x9'),auth['isAuthenticated'](),auth[_0xc8a2('0x7')](),controller['answer']);router[_0xc8a2('0x3')](_0xc8a2('0xa'),auth[_0xc8a2('0x5')](),auth[_0xc8a2('0x7')](),controller[_0xc8a2('0xb')]);router[_0xc8a2('0x3')](_0xc8a2('0xc'),auth['isAuthenticated'](),auth[_0xc8a2('0x7')](),controller['unhold']);router[_0xc8a2('0x3')](_0xc8a2('0xd'),auth[_0xc8a2('0x5')](),auth[_0xc8a2('0x7')](),controller[_0xc8a2('0xe')]);router[_0xc8a2('0x3')](_0xc8a2('0xf'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xc8a2('0x10')]);module[_0xc8a2('0x11')]=router;
\ No newline at end of file
index e5293c4..bcaf4f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5636=['then','error','message','result','findOne','agent','VoiceChannels','all','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callerId','callbackUrl','entityFound:','user:%s','json','originate\x20executed!','catch','hangup','info','format','answer','answer\x20fired:','webbar:answer','answer\x20executed!','webbar:hold','unhold\x20executed!','calls','calls\x20fired:','filter','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','lodash','bluebird','jayson/promise','client','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','stringify','log','stack','name','status','send','NotFound','request'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0x5636,0x102));var _0x6563=function(_0x54b28a,_0x37101f){_0x54b28a=_0x54b28a-0x0;var _0x342098=_0x5636[_0x54b28a];return _0x342098;};'use strict';var path=require(_0x6563('0x0'));var fs=require('fs');var _=require(_0x6563('0x1'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require(_0x6563('0x2'));var jayson=require(_0x6563('0x3'));var amiClient=jayson[_0x6563('0x4')]['http']({'port':0x232a});var logger=require(_0x6563('0x5'))(_0x6563('0x6'));var Redis=require(_0x6563('0x7'));config[_0x6563('0x8')]=_[_0x6563('0x9')](config[_0x6563('0x8')],{'host':_0x6563('0xa'),'port':0x18eb});var io=require(_0x6563('0xb'))(new Redis(config[_0x6563('0x8')]));var Schema=require(_0x6563('0xc'));var originateValidation=new Schema({'userId':{'type':_0x6563('0xd'),'required':[!![],_0x6563('0xe')]},'callNumber':{'type':_0x6563('0xf'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':'string'},'callbackUrl':{'type':_0x6563('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x6563('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x6563('0xe')]},'sessionId':{'type':_0x6563('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x6563('0xd'),'required':[!![],_0x6563('0xe')]},'sessionId':{'type':_0x6563('0xf'),'required':[!![],_0x6563('0x10')]},'transferNumber':{'type':_0x6563('0xf'),'required':[!![],_0x6563('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0x6563('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x6563('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x6563('0xe')]},'sessionId':{'type':_0x6563('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x6563('0xd'),'required':[!![],_0x6563('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x6563('0xe')]}});function emit(_0x11baa2,_0x477d9b,_0xd398ce){logger['info'](_0x11baa2,_0x477d9b,JSON[_0x6563('0x12')](_0xd398ce));io['to'](_0x11baa2)['emit'](_0x477d9b,_0xd398ce);}function handleError(_0x502694){return function(_0x47972a){console[_0x6563('0x13')]('handleError:',_0x47972a,_0x47972a instanceof RangeError);logger['error'](_0x47972a[_0x6563('0x14')]);if(_0x47972a instanceof RangeError){if(_0x47972a[_0x6563('0x15')]){delete _0x47972a[_0x6563('0x15')];}_0x502694[_0x6563('0x16')](0x194)[_0x6563('0x17')](_0x47972a);}else{if(_0x47972a[_0x6563('0x15')]){delete _0x47972a[_0x6563('0x15')];}_0x502694[_0x6563('0x16')](0x1f4)[_0x6563('0x17')](_0x47972a);}};}function checkError(){return function(_0x5bf608){if(!_0x5bf608){throw new RangeError(_0x6563('0x18'));}return _0x5bf608;};}function respondWithRpcPromise(_0x9c3da7,_0x20b478){return new BPromise(function(_0x5a335c,_0x293db2){var _0x5c37bb=amiClient;return _0x5c37bb[_0x6563('0x19')](_0x9c3da7,_0x20b478)[_0x6563('0x1a')](function(_0x5610b0){if(_0x5610b0['error']){if(_0x5610b0[_0x6563('0x1b')]['code']===0x1f4){return _0x293db2(_0x5610b0[_0x6563('0x1b')][_0x6563('0x1c')]);}return _0x5a335c(_0x5610b0[_0x6563('0x1b')]['message']);}else{_0x5a335c(_0x5610b0[_0x6563('0x1d')]);}})['catch'](function(_0x7ea857){_0x293db2(_0x7ea857);});});}function getAgent(_0x1590e6){return db['User'][_0x6563('0x1e')]({'where':{'id':_0x1590e6,'role':_0x6563('0x1f')}})['then'](checkError());}function getAgentCheckSession(_0x2ddb2b,_0x5b03a7){return new BPromise(function(_0x1fe1cb,_0x4fbb20){var _0x480408=respondWithRpcPromise(_0x6563('0x20'));var _0x118d31=getAgent(_0x2ddb2b);Promise[_0x6563('0x21')]([_0x480408,_0x118d31])[_0x6563('0x1a')](function(_0x3eb23b){var _0x4b4d3b=_0x3eb23b[0x0];var _0x3c8bd1=_0x3eb23b[0x1];var _0x4f275c=_['filter'](_0x4b4d3b[_0x6563('0x22')],function(_0x35af37){return _0x35af37[_0x6563('0x23')]==_0x3c8bd1['id']&&_0x35af37[_0x6563('0x24')]==_0x5b03a7;});if(_0x4f275c[_0x6563('0x25')]==0x1){_0x1fe1cb(_0x3c8bd1);}else{_0x4fbb20(new RangeError(_0x6563('0x26')+_0x5b03a7+_0x6563('0x27')));}});});}exports[_0x6563('0x28')]=function(_0x101b24,_0x246d53){logger['info'](_0x6563('0x29'),_0x101b24[_0x6563('0x2a')]);var _0x29fb9d=originateValidation[_0x6563('0xc')](_0x101b24[_0x6563('0x2a')]);if(_0x29fb9d[_0x6563('0x25')]>0x0){return _0x246d53[_0x6563('0x16')](0x190)['json'](_0x29fb9d);}var _0x8cf1=_0x101b24[_0x6563('0x2a')][_0x6563('0x2b')];var _0x46fb1b=_0x101b24[_0x6563('0x2a')][_0x6563('0x2c')];var _0x574a35=_0x101b24[_0x6563('0x2a')][_0x6563('0x2d')];var _0x26c24b=_0x101b24[_0x6563('0x2a')][_0x6563('0x2e')];return getAgent(_0x8cf1)[_0x6563('0x1a')](function(_0x3f578a){logger['info'](_0x6563('0x2f'),_0x3f578a[_0x6563('0x15')]);emit(util['format'](_0x6563('0x30'),_0x3f578a[_0x6563('0x15')]),'webbar:originate',{'callNumber':_0x46fb1b,'callerId':_0x574a35,'callbackUrl':_0x26c24b});return _0x246d53['status'](0xc8)[_0x6563('0x31')]({'error':![],'message':_0x6563('0x32')});})[_0x6563('0x33')](handleError(_0x246d53));};exports[_0x6563('0x34')]=function(_0x4962c2,_0x2d36d4){logger[_0x6563('0x35')]('hangup\x20fired:',_0x4962c2[_0x6563('0x2a')]);var _0xe5e80f=hangupValidation[_0x6563('0xc')](_0x4962c2[_0x6563('0x2a')]);if(_0xe5e80f[_0x6563('0x25')]>0x0){return _0x2d36d4[_0x6563('0x16')](0x190)[_0x6563('0x31')](_0xe5e80f);}var _0x15c23e=_0x4962c2[_0x6563('0x2a')]['userId'];var _0x130a88=_0x4962c2[_0x6563('0x2a')][_0x6563('0x24')];return getAgent(_0x15c23e)[_0x6563('0x1a')](function(_0x5ebe88){logger['info'](_0x6563('0x2f'),_0x5ebe88[_0x6563('0x15')]);emit(util[_0x6563('0x36')]('user:%s',_0x5ebe88[_0x6563('0x15')]),'webbar:hangup',{'sessionId':_0x130a88});return _0x2d36d4[_0x6563('0x16')](0xc8)[_0x6563('0x31')]({'error':![],'message':'hangup\x20executed!'});})[_0x6563('0x33')](handleError(_0x2d36d4));};exports[_0x6563('0x37')]=function(_0xea186,_0xcf92cd){logger[_0x6563('0x35')](_0x6563('0x38'),_0xea186[_0x6563('0x2a')]);var _0x32932f=answerValidation[_0x6563('0xc')](_0xea186[_0x6563('0x2a')]);if(_0x32932f[_0x6563('0x25')]>0x0){return _0xcf92cd['status'](0x190)['json'](_0x32932f);}var _0x38eab4=_0xea186[_0x6563('0x2a')][_0x6563('0x2b')];var _0x2f2aa6=_0xea186[_0x6563('0x2a')][_0x6563('0x24')];return getAgent(_0x38eab4)[_0x6563('0x1a')](function(_0x4b7838){logger[_0x6563('0x35')](_0x6563('0x2f'),_0x4b7838[_0x6563('0x15')]);emit(util[_0x6563('0x36')]('user:%s',_0x4b7838[_0x6563('0x15')]),_0x6563('0x39'),{'sessionId':_0x2f2aa6});return _0xcf92cd[_0x6563('0x16')](0xc8)[_0x6563('0x31')]({'error':![],'message':_0x6563('0x3a')});})['catch'](handleError(_0xcf92cd));};exports['hold']=function(_0x1504ca,_0x42d54c){logger[_0x6563('0x35')]('hold\x20fired:',_0x1504ca[_0x6563('0x2a')]);var _0x120723=holdValidation[_0x6563('0xc')](_0x1504ca[_0x6563('0x2a')]);if(_0x120723['length']>0x0){return _0x42d54c[_0x6563('0x16')](0x190)[_0x6563('0x31')](_0x120723);}var _0xd54477=_0x1504ca['body'][_0x6563('0x2b')];var _0x4bcfff=_0x1504ca[_0x6563('0x2a')]['sessionId'];return getAgent(_0xd54477)['then'](function(_0x1ef2da){logger[_0x6563('0x35')](_0x6563('0x2f'),_0x1ef2da[_0x6563('0x15')]);emit(util[_0x6563('0x36')](_0x6563('0x30'),_0x1ef2da[_0x6563('0x15')]),_0x6563('0x3b'),{'sessionId':_0x4bcfff});return _0x42d54c[_0x6563('0x16')](0xc8)[_0x6563('0x31')]({'error':![],'message':'hold\x20executed!'});})[_0x6563('0x33')](handleError(_0x42d54c));};exports['unhold']=function(_0x22306a,_0xb339e9){logger[_0x6563('0x35')]('unhold\x20fired:',_0x22306a[_0x6563('0x2a')]);var _0x141f0c=unholdValidation['validate'](_0x22306a[_0x6563('0x2a')]);if(_0x141f0c[_0x6563('0x25')]>0x0){return _0xb339e9[_0x6563('0x16')](0x190)[_0x6563('0x31')](_0x141f0c);}var _0xbd920a=_0x22306a['body'][_0x6563('0x2b')];var _0x5c4cfa=_0x22306a[_0x6563('0x2a')]['sessionId'];return getAgent(_0xbd920a)[_0x6563('0x1a')](function(_0x5992c8){logger['info']('entityFound:',_0x5992c8['name']);emit(util[_0x6563('0x36')]('user:%s',_0x5992c8[_0x6563('0x15')]),'webbar:unhold',{'sessionId':_0x5c4cfa});return _0xb339e9[_0x6563('0x16')](0xc8)[_0x6563('0x31')]({'error':![],'message':_0x6563('0x3c')});})[_0x6563('0x33')](handleError(_0xb339e9));};exports[_0x6563('0x3d')]=function(_0x199a0e,_0x23c94a){logger[_0x6563('0x35')](_0x6563('0x3e'),_0x23c94a['body']);var _0x386ae9=callsValidation[_0x6563('0xc')](_0x199a0e[_0x6563('0x2a')]);if(_0x386ae9[_0x6563('0x25')]>0x0){return _0x23c94a[_0x6563('0x16')](0x190)[_0x6563('0x31')](_0x386ae9);}var _0x40c99b=_0x199a0e[_0x6563('0x2a')][_0x6563('0x2b')];var _0x2c7e9d=respondWithRpcPromise(_0x6563('0x20'));var _0x5c456b=getAgent(_0x40c99b);return Promise[_0x6563('0x21')]([_0x2c7e9d,_0x5c456b])[_0x6563('0x1a')](function(_0x23f38d){var _0x2e9c69=_0x23f38d[0x0];var _0x46c26c=_0x23f38d[0x1];var _0x3c06ac=_[_0x6563('0x3f')](_0x2e9c69[_0x6563('0x22')],function(_0x53292e){return _0x53292e[_0x6563('0x23')]==_0x46c26c['id'];});return _0x23c94a['status'](0xc8)[_0x6563('0x31')]({'count':_0x3c06ac[_0x6563('0x25')],'rows':_0x3c06ac});})['catch'](handleError(_0x23c94a));};exports['conference']=function(_0x3374b0,_0x8f5e46){logger[_0x6563('0x35')](_0x6563('0x40'),_0x3374b0['body']);var _0x2a3df0=conferenceValidation['validate'](_0x3374b0[_0x6563('0x2a')]);if(_0x2a3df0[_0x6563('0x25')]>0x0){return _0x8f5e46['status'](0x190)['json'](_0x2a3df0);}var _0x3a3a35=_0x3374b0['body']['userId'];return getAgent(_0x3a3a35)[_0x6563('0x1a')](function(_0x49d6a5){logger[_0x6563('0x35')](_0x6563('0x2f'),_0x49d6a5[_0x6563('0x15')]);emit(util[_0x6563('0x36')]('user:%s',_0x49d6a5[_0x6563('0x15')]),_0x6563('0x41'));return _0x8f5e46[_0x6563('0x16')](0xc8)[_0x6563('0x31')]({'error':![],'message':_0x6563('0x42')});})[_0x6563('0x33')](handleError(_0x8f5e46));};exports[_0x6563('0x43')]=function(_0x7d8546,_0x58728d){logger['info'](_0x6563('0x44'),_0x7d8546[_0x6563('0x2a')]);var _0x5b5783=transferValidation['validate'](_0x7d8546['body']);if(_0x5b5783[_0x6563('0x25')]>0x0){return _0x58728d[_0x6563('0x16')](0x190)[_0x6563('0x31')](_0x5b5783);}var _0x149b74=_0x7d8546['body'][_0x6563('0x2b')];var _0x1a5c54=_0x7d8546[_0x6563('0x2a')][_0x6563('0x24')];var _0xb55389=_0x7d8546['body']['transferNumber'];return getAgent(_0x149b74)[_0x6563('0x1a')](function(_0x1d7b5d){logger[_0x6563('0x35')]('entityFound:',_0x1d7b5d[_0x6563('0x15')]);emit(util['format'](_0x6563('0x30'),_0x1d7b5d[_0x6563('0x15')]),_0x6563('0x45'),{'sessionId':_0x1a5c54,'transferNumber':_0xb55389});return _0x58728d[_0x6563('0x16')](0xc8)[_0x6563('0x31')]({'error':![],'message':_0x6563('0x46')});})[_0x6563('0x33')](handleError(_0x58728d));};
\ No newline at end of file
+var _0xbec5=['redis','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','callNumber\x20is\x20required','string','transferNumber\x20is\x20required','info','stringify','emit','handleError:','error','name','status','send','NotFound','request','then','message','result','catch','agent','VoiceChannels','filter','rows','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','callNumber','callbackUrl','entityFound:','user:%s','webbar:originate','json','originate\x20executed!','hangup','hangup\x20fired:','userId','sessionId','webbar:hangup','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','format','webbar:hold','hold\x20executed!','unhold','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','all','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../config/environment','util','bluebird','jayson/promise','client','../../config/logger','webbarapi','ioredis','defaults'];(function(_0x2667c4,_0x4f68b2){var _0x15b00f=function(_0x22d4c0){while(--_0x22d4c0){_0x2667c4['push'](_0x2667c4['shift']());}};_0x15b00f(++_0x4f68b2);}(_0xbec5,0xe5));var _0x5bec=function(_0x4a8bad,_0x4bfb2f){_0x4a8bad=_0x4a8bad-0x0;var _0x30cf32=_0xbec5[_0x4a8bad];return _0x30cf32;};'use strict';var path=require(_0x5bec('0x0'));var fs=require('fs');var _=require(_0x5bec('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0x5bec('0x2'));var util=require(_0x5bec('0x3'));var BPromise=require(_0x5bec('0x4'));var jayson=require(_0x5bec('0x5'));var amiClient=jayson[_0x5bec('0x6')]['http']({'port':0x232a});var logger=require(_0x5bec('0x7'))(_0x5bec('0x8'));var Redis=require(_0x5bec('0x9'));config['redis']=_[_0x5bec('0xa')](config[_0x5bec('0xb')],{'host':_0x5bec('0xc'),'port':0x18eb});var io=require(_0x5bec('0xd'))(new Redis(config[_0x5bec('0xb')]));var Schema=require(_0x5bec('0xe'));var originateValidation=new Schema({'userId':{'type':_0x5bec('0xf'),'required':[!![],_0x5bec('0x10')]},'callNumber':{'type':'string','required':[!![],_0x5bec('0x11')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x5bec('0x12')}});var hangupValidation=new Schema({'userId':{'type':_0x5bec('0xf'),'required':[!![],_0x5bec('0x10')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x5bec('0xf'),'required':[!![],_0x5bec('0x10')]},'sessionId':{'type':_0x5bec('0x12'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x5bec('0x10')]},'sessionId':{'type':_0x5bec('0x12'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x5bec('0x12'),'required':[!![],_0x5bec('0x13')]}});var holdValidation=new Schema({'userId':{'type':_0x5bec('0xf'),'required':[!![],_0x5bec('0x10')]},'sessionId':{'type':_0x5bec('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x5bec('0xf'),'required':[!![],_0x5bec('0x10')]},'sessionId':{'type':_0x5bec('0x12'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x5bec('0xf'),'required':[!![],_0x5bec('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0x5bec('0xf'),'required':[!![],_0x5bec('0x10')]}});function emit(_0x11fb8e,_0x506639,_0x4ab821){logger[_0x5bec('0x14')](_0x11fb8e,_0x506639,JSON[_0x5bec('0x15')](_0x4ab821));io['to'](_0x11fb8e)[_0x5bec('0x16')](_0x506639,_0x4ab821);}function handleError(_0x1771e7){return function(_0x5cd7ae){console['log'](_0x5bec('0x17'),_0x5cd7ae,_0x5cd7ae instanceof RangeError);logger[_0x5bec('0x18')](_0x5cd7ae['stack']);if(_0x5cd7ae instanceof RangeError){if(_0x5cd7ae[_0x5bec('0x19')]){delete _0x5cd7ae[_0x5bec('0x19')];}_0x1771e7[_0x5bec('0x1a')](0x194)[_0x5bec('0x1b')](_0x5cd7ae);}else{if(_0x5cd7ae['name']){delete _0x5cd7ae[_0x5bec('0x19')];}_0x1771e7['status'](0x1f4)[_0x5bec('0x1b')](_0x5cd7ae);}};}function checkError(){return function(_0x208d99){if(!_0x208d99){throw new RangeError(_0x5bec('0x1c'));}return _0x208d99;};}function respondWithRpcPromise(_0x43a62d,_0xfed23){return new BPromise(function(_0x5e154e,_0x232584){var _0x4cfcb8=amiClient;return _0x4cfcb8[_0x5bec('0x1d')](_0x43a62d,_0xfed23)[_0x5bec('0x1e')](function(_0x5b2636){if(_0x5b2636[_0x5bec('0x18')]){if(_0x5b2636[_0x5bec('0x18')]['code']===0x1f4){return _0x232584(_0x5b2636[_0x5bec('0x18')][_0x5bec('0x1f')]);}return _0x5e154e(_0x5b2636[_0x5bec('0x18')][_0x5bec('0x1f')]);}else{_0x5e154e(_0x5b2636[_0x5bec('0x20')]);}})[_0x5bec('0x21')](function(_0x2dc014){_0x232584(_0x2dc014);});});}function getAgent(_0x4de66a){return db['User']['findOne']({'where':{'id':_0x4de66a,'role':_0x5bec('0x22')}})[_0x5bec('0x1e')](checkError());}function getAgentCheckSession(_0x338c25,_0x4939a5){return new BPromise(function(_0x2b3b2c,_0x472e54){var _0x57331b=respondWithRpcPromise(_0x5bec('0x23'));var _0x63ac8=getAgent(_0x338c25);Promise['all']([_0x57331b,_0x63ac8])['then'](function(_0x3575e7){var _0x2a82d5=_0x3575e7[0x0];var _0x3039f0=_0x3575e7[0x1];var _0x2c7a7b=_[_0x5bec('0x24')](_0x2a82d5[_0x5bec('0x25')],function(_0x5d6621){return _0x5d6621[_0x5bec('0x26')]==_0x3039f0['id']&&_0x5d6621['sessionId']==_0x4939a5;});if(_0x2c7a7b[_0x5bec('0x27')]==0x1){_0x2b3b2c(_0x3039f0);}else{_0x472e54(new RangeError(_0x5bec('0x28')+_0x4939a5+_0x5bec('0x29')));}});});}exports[_0x5bec('0x2a')]=function(_0x5128c0,_0x2b42c8){logger[_0x5bec('0x14')](_0x5bec('0x2b'),_0x5128c0['body']);var _0xf6ae6b=originateValidation['validate'](_0x5128c0[_0x5bec('0x2c')]);if(_0xf6ae6b[_0x5bec('0x27')]>0x0){return _0x2b42c8[_0x5bec('0x1a')](0x190)['json'](_0xf6ae6b);}var _0xdc831e=_0x5128c0[_0x5bec('0x2c')]['userId'];var _0x34b441=_0x5128c0[_0x5bec('0x2c')][_0x5bec('0x2d')];var _0x170e28=_0x5128c0[_0x5bec('0x2c')]['callerId'];var _0x7ebd9c=_0x5128c0['body'][_0x5bec('0x2e')];return getAgent(_0xdc831e)[_0x5bec('0x1e')](function(_0x182b86){logger[_0x5bec('0x14')](_0x5bec('0x2f'),_0x182b86[_0x5bec('0x19')]);emit(util['format'](_0x5bec('0x30'),_0x182b86[_0x5bec('0x19')]),_0x5bec('0x31'),{'callNumber':_0x34b441,'callerId':_0x170e28,'callbackUrl':_0x7ebd9c});return _0x2b42c8['status'](0xc8)[_0x5bec('0x32')]({'error':![],'message':_0x5bec('0x33')});})['catch'](handleError(_0x2b42c8));};exports[_0x5bec('0x34')]=function(_0x58c34e,_0x400e22){logger[_0x5bec('0x14')](_0x5bec('0x35'),_0x58c34e['body']);var _0xd7b727=hangupValidation[_0x5bec('0xe')](_0x58c34e[_0x5bec('0x2c')]);if(_0xd7b727[_0x5bec('0x27')]>0x0){return _0x400e22[_0x5bec('0x1a')](0x190)[_0x5bec('0x32')](_0xd7b727);}var _0x3b7e50=_0x58c34e['body'][_0x5bec('0x36')];var _0x224c2e=_0x58c34e[_0x5bec('0x2c')][_0x5bec('0x37')];return getAgent(_0x3b7e50)['then'](function(_0x27863b){logger[_0x5bec('0x14')](_0x5bec('0x2f'),_0x27863b['name']);emit(util['format'](_0x5bec('0x30'),_0x27863b[_0x5bec('0x19')]),_0x5bec('0x38'),{'sessionId':_0x224c2e});return _0x400e22[_0x5bec('0x1a')](0xc8)[_0x5bec('0x32')]({'error':![],'message':'hangup\x20executed!'});})['catch'](handleError(_0x400e22));};exports[_0x5bec('0x39')]=function(_0x5cb97e,_0x39597c){logger[_0x5bec('0x14')](_0x5bec('0x3a'),_0x5cb97e['body']);var _0x1e59a3=answerValidation[_0x5bec('0xe')](_0x5cb97e['body']);if(_0x1e59a3[_0x5bec('0x27')]>0x0){return _0x39597c[_0x5bec('0x1a')](0x190)[_0x5bec('0x32')](_0x1e59a3);}var _0x2b51f7=_0x5cb97e[_0x5bec('0x2c')][_0x5bec('0x36')];var _0x3a795c=_0x5cb97e['body']['sessionId'];return getAgent(_0x2b51f7)[_0x5bec('0x1e')](function(_0x4bfa57){logger['info'](_0x5bec('0x2f'),_0x4bfa57['name']);emit(util['format']('user:%s',_0x4bfa57[_0x5bec('0x19')]),_0x5bec('0x3b'),{'sessionId':_0x3a795c});return _0x39597c[_0x5bec('0x1a')](0xc8)[_0x5bec('0x32')]({'error':![],'message':'answer\x20executed!'});})[_0x5bec('0x21')](handleError(_0x39597c));};exports[_0x5bec('0x3c')]=function(_0xa4d32,_0x3a88d2){logger['info'](_0x5bec('0x3d'),_0xa4d32[_0x5bec('0x2c')]);var _0x2bbb1a=holdValidation['validate'](_0xa4d32[_0x5bec('0x2c')]);if(_0x2bbb1a['length']>0x0){return _0x3a88d2[_0x5bec('0x1a')](0x190)[_0x5bec('0x32')](_0x2bbb1a);}var _0x133d5c=_0xa4d32[_0x5bec('0x2c')]['userId'];var _0x32869f=_0xa4d32[_0x5bec('0x2c')][_0x5bec('0x37')];return getAgent(_0x133d5c)[_0x5bec('0x1e')](function(_0x35b250){logger[_0x5bec('0x14')](_0x5bec('0x2f'),_0x35b250['name']);emit(util[_0x5bec('0x3e')](_0x5bec('0x30'),_0x35b250['name']),_0x5bec('0x3f'),{'sessionId':_0x32869f});return _0x3a88d2[_0x5bec('0x1a')](0xc8)[_0x5bec('0x32')]({'error':![],'message':_0x5bec('0x40')});})[_0x5bec('0x21')](handleError(_0x3a88d2));};exports[_0x5bec('0x41')]=function(_0x3545a5,_0x4f08d9){logger[_0x5bec('0x14')]('unhold\x20fired:',_0x3545a5[_0x5bec('0x2c')]);var _0x208c7b=unholdValidation[_0x5bec('0xe')](_0x3545a5[_0x5bec('0x2c')]);if(_0x208c7b[_0x5bec('0x27')]>0x0){return _0x4f08d9[_0x5bec('0x1a')](0x190)[_0x5bec('0x32')](_0x208c7b);}var _0x3bc0c9=_0x3545a5[_0x5bec('0x2c')][_0x5bec('0x36')];var _0x580c75=_0x3545a5[_0x5bec('0x2c')]['sessionId'];return getAgent(_0x3bc0c9)['then'](function(_0x45eb95){logger['info']('entityFound:',_0x45eb95[_0x5bec('0x19')]);emit(util[_0x5bec('0x3e')](_0x5bec('0x30'),_0x45eb95['name']),_0x5bec('0x42'),{'sessionId':_0x580c75});return _0x4f08d9[_0x5bec('0x1a')](0xc8)[_0x5bec('0x32')]({'error':![],'message':_0x5bec('0x43')});})['catch'](handleError(_0x4f08d9));};exports[_0x5bec('0x44')]=function(_0x209da3,_0x9cae50){logger[_0x5bec('0x14')](_0x5bec('0x45'),_0x9cae50[_0x5bec('0x2c')]);var _0x33b924=callsValidation['validate'](_0x209da3['body']);if(_0x33b924[_0x5bec('0x27')]>0x0){return _0x9cae50['status'](0x190)[_0x5bec('0x32')](_0x33b924);}var _0x7ad053=_0x209da3['body'][_0x5bec('0x36')];var _0x5ddf8b=respondWithRpcPromise(_0x5bec('0x23'));var _0x3ed7ba=getAgent(_0x7ad053);return Promise[_0x5bec('0x46')]([_0x5ddf8b,_0x3ed7ba])[_0x5bec('0x1e')](function(_0x2fb334){var _0x340b42=_0x2fb334[0x0];var _0x2e4293=_0x2fb334[0x1];var _0x2c2e44=_[_0x5bec('0x24')](_0x340b42[_0x5bec('0x25')],function(_0x4ca9c3){return _0x4ca9c3[_0x5bec('0x26')]==_0x2e4293['id'];});return _0x9cae50[_0x5bec('0x1a')](0xc8)[_0x5bec('0x32')]({'count':_0x2c2e44['length'],'rows':_0x2c2e44});})[_0x5bec('0x21')](handleError(_0x9cae50));};exports[_0x5bec('0x47')]=function(_0x432a26,_0x56a539){logger[_0x5bec('0x14')](_0x5bec('0x48'),_0x432a26[_0x5bec('0x2c')]);var _0x340cd9=conferenceValidation[_0x5bec('0xe')](_0x432a26['body']);if(_0x340cd9[_0x5bec('0x27')]>0x0){return _0x56a539[_0x5bec('0x1a')](0x190)[_0x5bec('0x32')](_0x340cd9);}var _0x2abc02=_0x432a26['body'][_0x5bec('0x36')];return getAgent(_0x2abc02)['then'](function(_0x2b701f){logger[_0x5bec('0x14')](_0x5bec('0x2f'),_0x2b701f[_0x5bec('0x19')]);emit(util['format'](_0x5bec('0x30'),_0x2b701f[_0x5bec('0x19')]),_0x5bec('0x49'));return _0x56a539[_0x5bec('0x1a')](0xc8)[_0x5bec('0x32')]({'error':![],'message':_0x5bec('0x4a')});})[_0x5bec('0x21')](handleError(_0x56a539));};exports[_0x5bec('0x4b')]=function(_0x407828,_0x245932){logger[_0x5bec('0x14')](_0x5bec('0x4c'),_0x407828[_0x5bec('0x2c')]);var _0x5d3092=transferValidation[_0x5bec('0xe')](_0x407828['body']);if(_0x5d3092[_0x5bec('0x27')]>0x0){return _0x245932[_0x5bec('0x1a')](0x190)['json'](_0x5d3092);}var _0xa7a394=_0x407828['body'][_0x5bec('0x36')];var _0x1061d3=_0x407828['body']['sessionId'];var _0xd54be0=_0x407828[_0x5bec('0x2c')][_0x5bec('0x4d')];return getAgent(_0xa7a394)[_0x5bec('0x1e')](function(_0x2c7a94){logger['info'](_0x5bec('0x2f'),_0x2c7a94[_0x5bec('0x19')]);emit(util['format'](_0x5bec('0x30'),_0x2c7a94[_0x5bec('0x19')]),_0x5bec('0x4e'),{'sessionId':_0x1061d3,'transferNumber':_0xd54be0});return _0x245932[_0x5bec('0x1a')](0xc8)['json']({'error':![],'message':_0x5bec('0x4f')});})['catch'](handleError(_0x245932));};
\ No newline at end of file
index a6e4808..b518798 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['removeAgents','exports','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','create','post','addAnswer','addApplications','/:id/notify','/:id/send','send','put','/:id','update','destroy','delete','removeAnswers'];(function(_0x48c3f0,_0x285e0a){var _0x36d889=function(_0x460a86){while(--_0x460a86){_0x48c3f0['push'](_0x48c3f0['shift']());}};_0x36d889(++_0x285e0a);}(_0x1a85,0x178));var _0x51a8=function(_0x45a546,_0x11b6a6){_0x45a546=_0x45a546-0x0;var _0x3e5eac=_0x1a85[_0x45a546];return _0x3e5eac;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x51a8('0x0'));var timeout=require(_0x51a8('0x1'));var express=require(_0x51a8('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x51a8('0x3'));var interaction=require(_0x51a8('0x4'));var config=require(_0x51a8('0x5'));var controller=require('./whatsappAccount.controller');router[_0x51a8('0x6')]('/',auth['isAuthenticated'](),controller[_0x51a8('0x7')]);router['get'](_0x51a8('0x8'),auth[_0x51a8('0x9')](),controller['describe']);router[_0x51a8('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x51a8('0xa')]);router[_0x51a8('0x6')](_0x51a8('0xb'),auth[_0x51a8('0x9')](),controller[_0x51a8('0xc')]);router[_0x51a8('0x6')](_0x51a8('0xd'),auth[_0x51a8('0x9')](),controller[_0x51a8('0xe')]);router[_0x51a8('0x6')](_0x51a8('0xf'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x10')]);router[_0x51a8('0x6')](_0x51a8('0x11'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x12')]);router['post']('/',auth[_0x51a8('0x9')](),controller[_0x51a8('0x13')]);router[_0x51a8('0x14')]('/:id/dispositions',auth[_0x51a8('0x9')](),controller['addDisposition']);router[_0x51a8('0x14')](_0x51a8('0xd'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x15')]);router[_0x51a8('0x14')](_0x51a8('0xf'),auth[_0x51a8('0x9')](),controller['addAgents']);router[_0x51a8('0x14')](_0x51a8('0x11'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x16')]);router[_0x51a8('0x14')](_0x51a8('0x17'),controller['notify']);router[_0x51a8('0x14')](_0x51a8('0x18'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x19')]);router[_0x51a8('0x1a')](_0x51a8('0x1b'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x1c')]);router['delete'](_0x51a8('0x1b'),auth['isAuthenticated'](),controller[_0x51a8('0x1d')]);router[_0x51a8('0x1e')](_0x51a8('0xb'),auth[_0x51a8('0x9')](),controller['removeDispositions']);router[_0x51a8('0x1e')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x51a8('0x1f')]);router['delete'](_0x51a8('0xf'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x20')]);module[_0x51a8('0x21')]=router;
\ No newline at end of file
+var _0x4137=['get','index','/describe','isAuthenticated','/:id','show','getDispositions','/:id/canned_answers','/:id/users','getAgents','/:id/applications','create','/:id/dispositions','post','addAnswer','addAgents','addApplications','notify','/:id/send','put','update','delete','destroy','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller'];(function(_0x4e636b,_0x22e0c8){var _0x1c5352=function(_0x4fe121){while(--_0x4fe121){_0x4e636b['push'](_0x4e636b['shift']());}};_0x1c5352(++_0x22e0c8);}(_0x4137,0xf8));var _0x7413=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x4137[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require(_0x7413('0x0'));var util=require(_0x7413('0x1'));var path=require(_0x7413('0x2'));var timeout=require(_0x7413('0x3'));var express=require(_0x7413('0x4'));var router=express[_0x7413('0x5')]();var fs_extra=require(_0x7413('0x6'));var auth=require(_0x7413('0x7'));var interaction=require(_0x7413('0x8'));var config=require(_0x7413('0x9'));var controller=require(_0x7413('0xa'));router[_0x7413('0xb')]('/',auth['isAuthenticated'](),controller[_0x7413('0xc')]);router[_0x7413('0xb')](_0x7413('0xd'),auth[_0x7413('0xe')](),controller['describe']);router[_0x7413('0xb')](_0x7413('0xf'),auth['isAuthenticated'](),controller[_0x7413('0x10')]);router[_0x7413('0xb')]('/:id/dispositions',auth[_0x7413('0xe')](),controller[_0x7413('0x11')]);router[_0x7413('0xb')](_0x7413('0x12'),auth[_0x7413('0xe')](),controller['getAnswers']);router[_0x7413('0xb')](_0x7413('0x13'),auth['isAuthenticated'](),controller[_0x7413('0x14')]);router[_0x7413('0xb')](_0x7413('0x15'),auth['isAuthenticated'](),controller['getApplications']);router['post']('/',auth[_0x7413('0xe')](),controller[_0x7413('0x16')]);router['post'](_0x7413('0x17'),auth[_0x7413('0xe')](),controller['addDisposition']);router[_0x7413('0x18')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x7413('0x19')]);router['post'](_0x7413('0x13'),auth['isAuthenticated'](),controller[_0x7413('0x1a')]);router[_0x7413('0x18')](_0x7413('0x15'),auth[_0x7413('0xe')](),controller[_0x7413('0x1b')]);router[_0x7413('0x18')]('/:id/notify',controller[_0x7413('0x1c')]);router[_0x7413('0x18')](_0x7413('0x1d'),auth[_0x7413('0xe')](),controller['send']);router[_0x7413('0x1e')](_0x7413('0xf'),auth[_0x7413('0xe')](),controller[_0x7413('0x1f')]);router[_0x7413('0x20')](_0x7413('0xf'),auth[_0x7413('0xe')](),controller[_0x7413('0x21')]);router['delete']('/:id/dispositions',auth[_0x7413('0xe')](),controller['removeDispositions']);router[_0x7413('0x20')](_0x7413('0x12'),auth[_0x7413('0xe')](),controller[_0x7413('0x22')]);router[_0x7413('0x20')](_0x7413('0x13'),auth[_0x7413('0xe')](),controller[_0x7413('0x23')]);module[_0x7413('0x24')]=router;
\ No newline at end of file
index 3f73f5d..baf6de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba55=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','STRING','generate','ENUM','TEXT'];(function(_0x1c0f41,_0x26d95d){var _0x369a9f=function(_0x251234){while(--_0x251234){_0x1c0f41['push'](_0x1c0f41['shift']());}};_0x369a9f(++_0x26d95d);}(_0xba55,0x165));var _0x5ba5=function(_0xce2382,_0x2b6aaf){_0xce2382=_0xce2382-0x0;var _0x302163=_0xba55[_0xce2382];return _0x302163;};'use strict';var Sequelize=require(_0x5ba5('0x0'));var rs=require(_0x5ba5('0x1'));module[_0x5ba5('0x2')]={'name':{'type':Sequelize[_0x5ba5('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x5ba5('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x5ba5('0x3')],'defaultValue':function(){return rs[_0x5ba5('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x5ba5('0x5')]('twilio')},'accountSid':{'type':Sequelize[_0x5ba5('0x3')]},'authToken':{'type':Sequelize[_0x5ba5('0x3')]},'notificationTemplate':{'type':Sequelize[_0x5ba5('0x6')],'defaultValue':function(){return _0x5ba5('0x7');}},'notificationSound':{'type':Sequelize[_0x5ba5('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x5ba5('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5ba5('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5ba5('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5ba5('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5ba5('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5ba5('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5ba5('0x9')],'comment':_0x5ba5('0xa')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x5ba5('0xb'),'set':function(_0x377576){if(!_0x377576){this['setDataValue']('mandatoryDispositionPauseId',null);}this[_0x5ba5('0xc')](_0x5ba5('0xd'),_0x377576);}},'description':{'type':Sequelize[_0x5ba5('0x3')]}};
\ No newline at end of file
+var _0x8802=['STRING','name','generate','ENUM','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','setDataValue','sequelize','randomstring','exports'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x8802,0xde));var _0x2880=function(_0x3485f8,_0x1b66cf){_0x3485f8=_0x3485f8-0x0;var _0x1fbba7=_0x8802[_0x3485f8];return _0x1fbba7;};'use strict';var Sequelize=require(_0x2880('0x0'));var rs=require(_0x2880('0x1'));module[_0x2880('0x2')]={'name':{'type':Sequelize[_0x2880('0x3')],'unique':_0x2880('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x2880('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x2880('0x3')],'defaultValue':function(){return rs[_0x2880('0x5')]();}},'phone':{'type':Sequelize[_0x2880('0x3')]},'type':{'type':Sequelize[_0x2880('0x6')](_0x2880('0x7'))},'accountSid':{'type':Sequelize[_0x2880('0x3')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x2880('0x8')],'defaultValue':function(){return _0x2880('0x9');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x2880('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2880('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2880('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2880('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2880('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2880('0xb')],'comment':_0x2880('0xc')},'mandatoryDisposition':{'type':Sequelize[_0x2880('0xa')],'defaultValue':![],'comment':_0x2880('0xd'),'set':function(_0xdfd9b5){if(!_0xdfd9b5){this['setDataValue']('mandatoryDispositionPauseId',null);}this[_0x2880('0xe')]('mandatoryDisposition',_0xdfd9b5);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4c1497e..084a532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2627=['options','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','params','describe','addDisposition','WhatsappAccountId','Disposition','order','filter','rows','removeDispositions','ids','addAnswer','CannedAnswer','findOne','pick','removeAnswers','addAgents','emit','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','WhatsappApplication','bulkCreate','findAndCountAll','priority','getApplications','notify','whatsapp','Applications','account','applications','orderBy','asc','CmContact','Sequelize','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','replace','whatsapp:','messageId','MessageSid','isNil','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','CmList','Contacts','WhatsappInteraction','spread','interaction','autoclose','unmanaged','created','WhatsappMessage','ContactId','AttachmentId','UserId','*,*,*,*','Start','startRouting','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','DESC','List','Messages','dataValues','push','eml-format','zip-dir','moment','mustache','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','destroy','WhatsappAccounts','UserProfileResource','sendStatus','name','send','Pause','mandatoryDispositionPause','map','WhatsappAccount','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','merge','type','findAll','rawAttributes','length','includeAll','include'];(function(_0x4622a9,_0x1db61c){var _0x351b04=function(_0xe4cef0){while(--_0xe4cef0){_0x4622a9['push'](_0x4622a9['shift']());}};_0x351b04(++_0x1db61c);}(_0x2627,0x1be));var _0x7262=function(_0x8b5e60,_0xb77ad6){_0x8b5e60=_0x8b5e60-0x0;var _0x29877d=_0x2627[_0x8b5e60];return _0x29877d;};'use strict';var emlformat=require(_0x7262('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7262('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7262('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x7262('0x3'));var util=require('util');var path=require(_0x7262('0x4'));var sox=require('sox');var csv=require(_0x7262('0x5'));var ejs=require(_0x7262('0x6'));var fs=require('fs');var fs_extra=require(_0x7262('0x7'));var _=require(_0x7262('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7262('0x9'));var deskjs=require(_0x7262('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7262('0xb'));var Redis=require(_0x7262('0xc'));var authService=require(_0x7262('0xd'));var qs=require(_0x7262('0xe'));var as=require(_0x7262('0xf'));var hardwareService=require(_0x7262('0x10'));var logger=require('../../config/logger')(_0x7262('0x11'));var utils=require(_0x7262('0x12'));var config=require(_0x7262('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x7262('0x14'))['db'];config[_0x7262('0x15')]=_[_0x7262('0x16')](config[_0x7262('0x15')],{'host':_0x7262('0x17'),'port':0x18eb});var socket=require(_0x7262('0x18'))(new Redis(config[_0x7262('0x15')]));require('./whatsappAccount.socket')[_0x7262('0x19')](socket);var jayson=require(_0x7262('0x1a'));var client=jayson[_0x7262('0x1b')]['http']({'port':0x232c});function respondWithRpcPromise(_0x9e4f52,_0x530d86,_0x5e6c99,_0x5be6ac){return new BPromise(function(_0x18a490,_0x49416f){var _0x4c49bb=_0x5be6ac||client;return _0x4c49bb[_0x7262('0x1c')](_0x9e4f52,_0x5e6c99)[_0x7262('0x1d')](function(_0x4f2106){logger[_0x7262('0x1e')](_0x7262('0x1f'),_0x530d86,_0x7262('0x20'));logger[_0x7262('0x21')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x530d86,'request\x20sent',JSON[_0x7262('0x22')](_0x4f2106));if(_0x4f2106[_0x7262('0x23')]){if(_0x4f2106['error'][_0x7262('0x24')]===0x1f4){logger[_0x7262('0x23')](_0x7262('0x1f'),_0x530d86,_0x4f2106['error']['message']);return _0x49416f(_0x4f2106[_0x7262('0x23')][_0x7262('0x25')]);}logger['error'](_0x7262('0x1f'),_0x530d86,_0x4f2106[_0x7262('0x23')][_0x7262('0x25')]);return _0x18a490(_0x4f2106[_0x7262('0x23')][_0x7262('0x25')]);}else{logger[_0x7262('0x1e')](_0x7262('0x1f'),_0x530d86,'request\x20sent');_0x18a490(_0x4f2106[_0x7262('0x26')][_0x7262('0x25')]);}})[_0x7262('0x27')](function(_0x335848){logger[_0x7262('0x23')](_0x7262('0x1f'),_0x530d86,_0x335848);_0x49416f(_0x335848);});});}function respondWithStatusCode(_0x3e4fc9,_0x50c01d){_0x50c01d=_0x50c01d||0xcc;return function(_0x33f16d){if(_0x33f16d){return _0x3e4fc9['sendStatus'](_0x50c01d);}return _0x3e4fc9[_0x7262('0x28')](_0x50c01d)[_0x7262('0x29')]();};}function respondWithResult(_0x1f3de5,_0xf3eea6){_0xf3eea6=_0xf3eea6||0xc8;return function(_0x12ddaf){if(_0x12ddaf){return _0x1f3de5[_0x7262('0x28')](_0xf3eea6)[_0x7262('0x2a')](_0x12ddaf);}};}function respondWithFilteredResult(_0x13d14e,_0x2b2f26){return function(_0x1dd5d4){if(_0x1dd5d4){var _0x59fe88=typeof _0x2b2f26[_0x7262('0x2b')]===_0x7262('0x2c')&&typeof _0x2b2f26[_0x7262('0x2d')]===_0x7262('0x2c');var _0x16aad4=_0x1dd5d4[_0x7262('0x2e')];var _0x59440d=_0x59fe88?0x0:_0x2b2f26[_0x7262('0x2b')];var _0x1276cf=_0x59fe88?_0x1dd5d4[_0x7262('0x2e')]:_0x2b2f26[_0x7262('0x2b')]+_0x2b2f26[_0x7262('0x2d')];var _0x5e1501;if(_0x1276cf>=_0x16aad4){_0x1276cf=_0x16aad4;_0x5e1501=0xc8;}else{_0x5e1501=0xce;}_0x13d14e['status'](_0x5e1501);return _0x13d14e['set'](_0x7262('0x2f'),_0x59440d+'-'+_0x1276cf+'/'+_0x16aad4)[_0x7262('0x2a')](_0x1dd5d4);}return null;};}function patchUpdates(_0x18d4b4){return function(_0x5d6675){try{jsonpatch['apply'](_0x5d6675,_0x18d4b4,!![]);}catch(_0x245640){return BPromise[_0x7262('0x30')](_0x245640);}return _0x5d6675[_0x7262('0x31')]();};}function saveUpdates(_0x1fab9c,_0x1a312d){return function(_0x5005db){if(_0x5005db){return _0x5005db['update'](_0x1fab9c)[_0x7262('0x1d')](function(_0x41c370){return _0x41c370;});}return null;};}function removeEntity(_0x57257a,_0x2d54f8){return function(_0x4205dc){if(_0x4205dc){return _0x4205dc[_0x7262('0x32')]()[_0x7262('0x1d')](function(){var _0x2f9996=_0x4205dc['get']({'plain':!![]});var _0x319d95=_0x7262('0x33');return db[_0x7262('0x34')][_0x7262('0x32')]({'where':{'type':_0x319d95,'resourceId':_0x2f9996['id']}})[_0x7262('0x1d')](function(){return _0x4205dc;});})[_0x7262('0x1d')](function(){_0x57257a['status'](0xcc)[_0x7262('0x29')]();});}};}function handleEntityNotFound(_0xd80aa0,_0x1740ff){return function(_0x3c3fa3){if(!_0x3c3fa3){_0xd80aa0[_0x7262('0x35')](0x194);}return _0x3c3fa3;};}function handleError(_0x437b8c,_0x15b887){_0x15b887=_0x15b887||0x1f4;return function(_0x307789){logger[_0x7262('0x23')](_0x307789['stack']);if(_0x307789[_0x7262('0x36')]){delete _0x307789[_0x7262('0x36')];}_0x437b8c[_0x7262('0x28')](_0x15b887)[_0x7262('0x37')](_0x307789);};}exports['index']=function(_0x269e78,_0x264fa6){var _0x5a38e8={'include':[{'model':db[_0x7262('0x38')],'as':_0x7262('0x39')}]},_0x5e4a45={},_0x7127fd={'count':0x0,'rows':[]};var _0x13c7ad=_[_0x7262('0x3a')](db[_0x7262('0x3b')]['rawAttributes'],function(_0x647a25){return{'name':_0x647a25['fieldName'],'type':_0x647a25['type'][_0x7262('0x3c')]};});_0x5e4a45[_0x7262('0x3d')]=_[_0x7262('0x3a')](_0x13c7ad,_0x7262('0x36'));_0x5e4a45[_0x7262('0x3e')]=_[_0x7262('0x3f')](_0x269e78['query']);_0x5e4a45['filters']=_[_0x7262('0x40')](_0x5e4a45['model'],_0x5e4a45[_0x7262('0x3e')]);_0x5a38e8[_0x7262('0x41')]=_[_0x7262('0x40')](_0x5e4a45[_0x7262('0x3d')],qs['fields'](_0x269e78['query'][_0x7262('0x42')]));_0x5a38e8[_0x7262('0x41')]=_0x5a38e8['attributes']['length']?_0x5a38e8[_0x7262('0x41')]:_0x5e4a45[_0x7262('0x3d')];if(!_0x269e78[_0x7262('0x3e')][_0x7262('0x43')](_0x7262('0x44'))){_0x5a38e8[_0x7262('0x2d')]=qs[_0x7262('0x2d')](_0x269e78[_0x7262('0x3e')][_0x7262('0x2d')]);_0x5a38e8[_0x7262('0x2b')]=qs[_0x7262('0x2b')](_0x269e78[_0x7262('0x3e')][_0x7262('0x2b')]);}_0x5a38e8['order']=qs[_0x7262('0x45')](_0x269e78['query']['sort']);_0x5a38e8[_0x7262('0x46')]=qs[_0x7262('0x47')](_['pick'](_0x269e78[_0x7262('0x3e')],_0x5e4a45[_0x7262('0x47')]),_0x13c7ad);if(_0x269e78[_0x7262('0x3e')]['filter']){_0x5a38e8[_0x7262('0x46')]=_[_0x7262('0x48')](_0x5a38e8[_0x7262('0x46')],{'$or':_[_0x7262('0x3a')](_0x13c7ad,function(_0x45463e){if(_0x45463e[_0x7262('0x49')]!=='VIRTUAL'){var _0x109552={};_0x109552[_0x45463e[_0x7262('0x36')]]={'$like':'%'+_0x269e78[_0x7262('0x3e')]['filter']+'%'};return _0x109552;}})});}_0x5a38e8=_[_0x7262('0x48')]({},_0x5a38e8,_0x269e78['options']);var _0x144464={'where':_0x5a38e8['where']};return db[_0x7262('0x3b')][_0x7262('0x2e')](_0x144464)[_0x7262('0x1d')](function(_0x6e2e9){_0x7127fd[_0x7262('0x2e')]=_0x6e2e9;if(_0x269e78[_0x7262('0x3e')]['includeAll']){_0x5a38e8['include']=[{'all':!![]}];}return db[_0x7262('0x3b')][_0x7262('0x4a')](_0x5a38e8);})[_0x7262('0x1d')](function(_0x79ceba){_0x7127fd['rows']=_0x79ceba;return _0x7127fd;})[_0x7262('0x1d')](respondWithFilteredResult(_0x264fa6,_0x5a38e8))['catch'](handleError(_0x264fa6,null));};exports['show']=function(_0x22b1cf,_0x3f586f){var _0x1c38c6={'raw':![],'where':{'id':_0x22b1cf['params']['id']},'include':[{'model':db[_0x7262('0x38')],'as':_0x7262('0x39')}]},_0x25ffd9={};_0x25ffd9[_0x7262('0x3d')]=_[_0x7262('0x3f')](db[_0x7262('0x3b')][_0x7262('0x4b')]);_0x25ffd9[_0x7262('0x3e')]=_[_0x7262('0x3f')](_0x22b1cf[_0x7262('0x3e')]);_0x25ffd9['filters']=_['intersection'](_0x25ffd9[_0x7262('0x3d')],_0x25ffd9[_0x7262('0x3e')]);_0x1c38c6[_0x7262('0x41')]=_[_0x7262('0x40')](_0x25ffd9[_0x7262('0x3d')],qs[_0x7262('0x42')](_0x22b1cf[_0x7262('0x3e')][_0x7262('0x42')]));_0x1c38c6['attributes']=_0x1c38c6['attributes'][_0x7262('0x4c')]?_0x1c38c6[_0x7262('0x41')]:_0x25ffd9[_0x7262('0x3d')];if(_0x22b1cf[_0x7262('0x3e')][_0x7262('0x4d')]){_0x1c38c6[_0x7262('0x4e')]=[{'all':!![]}];}_0x1c38c6=_[_0x7262('0x48')]({},_0x1c38c6,_0x22b1cf[_0x7262('0x4f')]);return db[_0x7262('0x3b')]['find'](_0x1c38c6)['then'](handleEntityNotFound(_0x3f586f,null))[_0x7262('0x1d')](respondWithResult(_0x3f586f,null))[_0x7262('0x27')](handleError(_0x3f586f,null));};exports[_0x7262('0x50')]=function(_0x5851cd,_0x5809f0){return db[_0x7262('0x3b')][_0x7262('0x50')](_0x5851cd[_0x7262('0x51')],{})[_0x7262('0x1d')](function(_0x5d754b){var _0x31a1c4=_0x5851cd['user'][_0x7262('0x52')]({'plain':!![]});if(!_0x31a1c4)throw new Error(_0x7262('0x53'));if(_0x31a1c4[_0x7262('0x54')]===_0x7262('0x55')){var _0x2e89e2=_0x5d754b[_0x7262('0x52')]({'plain':!![]});var _0x300122=_0x7262('0x33');return db[_0x7262('0x56')][_0x7262('0x57')]({'where':{'name':_0x300122,'userProfileId':_0x31a1c4[_0x7262('0x58')]},'raw':!![]})[_0x7262('0x1d')](function(_0x3a5cee){if(_0x3a5cee&&_0x3a5cee[_0x7262('0x59')]===0x0){return db[_0x7262('0x34')][_0x7262('0x50')]({'name':_0x2e89e2[_0x7262('0x36')],'resourceId':_0x2e89e2['id'],'type':_0x3a5cee[_0x7262('0x36')],'sectionId':_0x3a5cee['id']},{})[_0x7262('0x1d')](function(){return _0x5d754b;});}else{return _0x5d754b;}})[_0x7262('0x27')](function(_0x5bf66b){logger[_0x7262('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5bf66b);throw _0x5bf66b;});}return _0x5d754b;})[_0x7262('0x1d')](respondWithResult(_0x5809f0,0xc9))[_0x7262('0x27')](handleError(_0x5809f0,null));};exports['update']=function(_0x3f0c2b,_0x441995){if(_0x3f0c2b[_0x7262('0x51')]['id']){delete _0x3f0c2b[_0x7262('0x51')]['id'];}return db[_0x7262('0x3b')]['find']({'where':{'id':_0x3f0c2b[_0x7262('0x5a')]['id']},'include':[{'model':db[_0x7262('0x38')],'as':_0x7262('0x39')}]})[_0x7262('0x1d')](handleEntityNotFound(_0x441995,null))['then'](saveUpdates(_0x3f0c2b[_0x7262('0x51')],null))[_0x7262('0x1d')](respondWithResult(_0x441995,null))[_0x7262('0x27')](handleError(_0x441995,null));};exports[_0x7262('0x32')]=function(_0x21a9ce,_0x19b815){return db[_0x7262('0x3b')][_0x7262('0x57')]({'where':{'id':_0x21a9ce[_0x7262('0x5a')]['id']}})[_0x7262('0x1d')](handleEntityNotFound(_0x19b815,null))[_0x7262('0x1d')](removeEntity(_0x19b815,null))[_0x7262('0x27')](handleError(_0x19b815,null));};exports[_0x7262('0x5b')]=function(_0x289b7a,_0x54635c){return db[_0x7262('0x3b')][_0x7262('0x5b')]()[_0x7262('0x1d')](respondWithResult(_0x54635c,null))['catch'](handleError(_0x54635c,null));};exports[_0x7262('0x5c')]=function(_0x4cdac8,_0x42ba6c,_0x10b25d){if(_0x4cdac8[_0x7262('0x51')]['id']){delete _0x4cdac8['body']['id'];}return db[_0x7262('0x3b')][_0x7262('0x57')]({'where':{'id':_0x4cdac8[_0x7262('0x5a')]['id']}})[_0x7262('0x1d')](handleEntityNotFound(_0x42ba6c,null))[_0x7262('0x1d')](function(_0x3e2a86){if(_0x3e2a86){_0x4cdac8['body'][_0x7262('0x5d')]=_0x3e2a86['id'];return db[_0x7262('0x5e')]['create'](_0x4cdac8[_0x7262('0x51')]);}})[_0x7262('0x1d')](respondWithResult(_0x42ba6c,null))[_0x7262('0x27')](handleError(_0x42ba6c,null));};exports['getDispositions']=function(_0x388c4f,_0xb2e8fb,_0x2ee657){var _0xb912b8={'raw':![],'where':{}};var _0x525eb6={};var _0x333c34={'count':0x0,'rows':[]};return db[_0x7262('0x3b')]['findOne']({'where':{'id':_0x388c4f[_0x7262('0x5a')]['id']}})[_0x7262('0x1d')](handleEntityNotFound(_0xb2e8fb,null))[_0x7262('0x1d')](function(_0x502aec){if(_0x502aec){_0x525eb6['model']=_[_0x7262('0x3f')](db[_0x7262('0x5e')][_0x7262('0x4b')]);_0x525eb6['query']=_[_0x7262('0x3f')](_0x388c4f[_0x7262('0x3e')]);_0x525eb6[_0x7262('0x47')]=_['intersection'](_0x525eb6[_0x7262('0x3d')],_0x525eb6[_0x7262('0x3e')]);_0xb912b8[_0x7262('0x41')]=_[_0x7262('0x40')](_0x525eb6[_0x7262('0x3d')],qs['fields'](_0x388c4f[_0x7262('0x3e')][_0x7262('0x42')]));_0xb912b8['attributes']=_0xb912b8[_0x7262('0x41')][_0x7262('0x4c')]?_0xb912b8[_0x7262('0x41')]:_0x525eb6[_0x7262('0x3d')];if(!_0x388c4f[_0x7262('0x3e')][_0x7262('0x43')](_0x7262('0x44'))){_0xb912b8[_0x7262('0x2d')]=qs[_0x7262('0x2d')](_0x388c4f[_0x7262('0x3e')]['limit']);_0xb912b8[_0x7262('0x2b')]=qs[_0x7262('0x2b')](_0x388c4f[_0x7262('0x3e')]['offset']);}_0xb912b8[_0x7262('0x5f')]=qs[_0x7262('0x45')](_0x388c4f[_0x7262('0x3e')][_0x7262('0x45')]);_0xb912b8['where']=qs[_0x7262('0x47')](_['pick'](_0x388c4f[_0x7262('0x3e')],_0x525eb6[_0x7262('0x47')]));_0xb912b8[_0x7262('0x46')]['WhatsappAccountId']=_0x502aec['id'];if(_0x388c4f[_0x7262('0x3e')]['filter']){_0xb912b8[_0x7262('0x46')]=_[_0x7262('0x48')](_0xb912b8[_0x7262('0x46')],{'$or':_['map'](_0xb912b8[_0x7262('0x41')],function(_0x90bf77){var _0x1038f8={};_0x1038f8[_0x90bf77]={'$like':'%'+_0x388c4f['query'][_0x7262('0x60')]+'%'};return _0x1038f8;})});}_0xb912b8=_[_0x7262('0x48')]({},_0xb912b8,_0x388c4f[_0x7262('0x4f')]);return db['Disposition'][_0x7262('0x2e')]({'where':_0xb912b8[_0x7262('0x46')]})[_0x7262('0x1d')](function(_0x15b521){_0x333c34[_0x7262('0x2e')]=_0x15b521;if(_0x388c4f[_0x7262('0x3e')][_0x7262('0x4d')]){_0xb912b8['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0xb912b8);})[_0x7262('0x1d')](function(_0x4dd0b4){_0x333c34[_0x7262('0x61')]=_0x4dd0b4;return _0x333c34;});}})['then'](respondWithFilteredResult(_0xb2e8fb,_0xb912b8))[_0x7262('0x27')](handleError(_0xb2e8fb,null));};exports[_0x7262('0x62')]=function(_0x1ae02c,_0x49b489,_0x36b7f6){return db[_0x7262('0x3b')][_0x7262('0x57')]({'where':{'id':_0x1ae02c[_0x7262('0x5a')]['id']}})[_0x7262('0x1d')](handleEntityNotFound(_0x49b489,null))[_0x7262('0x1d')](function(_0x5e05f0){if(_0x5e05f0){return _0x5e05f0[_0x7262('0x62')](_0x1ae02c[_0x7262('0x3e')][_0x7262('0x63')]);}})['then'](respondWithStatusCode(_0x49b489,null))['catch'](handleError(_0x49b489,null));};exports[_0x7262('0x64')]=function(_0x484b93,_0x5d58e8,_0x52f264){if(_0x484b93[_0x7262('0x51')]['id']){delete _0x484b93[_0x7262('0x51')]['id'];}return db['WhatsappAccount'][_0x7262('0x57')]({'where':{'id':_0x484b93[_0x7262('0x5a')]['id']}})[_0x7262('0x1d')](handleEntityNotFound(_0x5d58e8,null))[_0x7262('0x1d')](function(_0xd18528){if(_0xd18528){_0x484b93['body'][_0x7262('0x5d')]=_0xd18528['id'];return db[_0x7262('0x65')][_0x7262('0x50')](_0x484b93['body']);}})[_0x7262('0x1d')](respondWithResult(_0x5d58e8,null))[_0x7262('0x27')](handleError(_0x5d58e8,null));};exports['getAnswers']=function(_0x563770,_0x4bf3c2,_0x383305){var _0x59b181={'raw':![],'where':{}};var _0xb60799={};var _0x3246c6={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x7262('0x66')]({'where':{'id':_0x563770['params']['id']}})[_0x7262('0x1d')](handleEntityNotFound(_0x4bf3c2,null))[_0x7262('0x1d')](function(_0x51fb4a){if(_0x51fb4a){_0xb60799[_0x7262('0x3d')]=_[_0x7262('0x3f')](db[_0x7262('0x65')][_0x7262('0x4b')]);_0xb60799[_0x7262('0x3e')]=_[_0x7262('0x3f')](_0x563770[_0x7262('0x3e')]);_0xb60799[_0x7262('0x47')]=_[_0x7262('0x40')](_0xb60799[_0x7262('0x3d')],_0xb60799[_0x7262('0x3e')]);_0x59b181['attributes']=_[_0x7262('0x40')](_0xb60799[_0x7262('0x3d')],qs[_0x7262('0x42')](_0x563770[_0x7262('0x3e')]['fields']));_0x59b181[_0x7262('0x41')]=_0x59b181['attributes'][_0x7262('0x4c')]?_0x59b181[_0x7262('0x41')]:_0xb60799[_0x7262('0x3d')];if(!_0x563770['query'][_0x7262('0x43')]('nolimit')){_0x59b181[_0x7262('0x2d')]=qs[_0x7262('0x2d')](_0x563770[_0x7262('0x3e')][_0x7262('0x2d')]);_0x59b181[_0x7262('0x2b')]=qs['offset'](_0x563770[_0x7262('0x3e')]['offset']);}_0x59b181['order']=qs['sort'](_0x563770[_0x7262('0x3e')][_0x7262('0x45')]);_0x59b181[_0x7262('0x46')]=qs[_0x7262('0x47')](_[_0x7262('0x67')](_0x563770[_0x7262('0x3e')],_0xb60799[_0x7262('0x47')]));_0x59b181[_0x7262('0x46')]['WhatsappAccountId']=_0x51fb4a['id'];if(_0x563770[_0x7262('0x3e')][_0x7262('0x60')]){_0x59b181[_0x7262('0x46')]=_['merge'](_0x59b181['where'],{'$or':_[_0x7262('0x3a')](_0x59b181[_0x7262('0x41')],function(_0x548b90){var _0xf038b1={};_0xf038b1[_0x548b90]={'$like':'%'+_0x563770[_0x7262('0x3e')][_0x7262('0x60')]+'%'};return _0xf038b1;})});}_0x59b181=_[_0x7262('0x48')]({},_0x59b181,_0x563770['options']);return db[_0x7262('0x65')][_0x7262('0x2e')]({'where':_0x59b181[_0x7262('0x46')]})[_0x7262('0x1d')](function(_0x90fb5e){_0x3246c6['count']=_0x90fb5e;if(_0x563770['query'][_0x7262('0x4d')]){_0x59b181[_0x7262('0x4e')]=[{'all':!![]}];}return db[_0x7262('0x65')][_0x7262('0x4a')](_0x59b181);})[_0x7262('0x1d')](function(_0x48274d){_0x3246c6['rows']=_0x48274d;return _0x3246c6;});}})[_0x7262('0x1d')](respondWithFilteredResult(_0x4bf3c2,_0x59b181))[_0x7262('0x27')](handleError(_0x4bf3c2,null));};exports[_0x7262('0x68')]=function(_0x4f7d42,_0x5ba8a,_0x1a2029){return db[_0x7262('0x3b')][_0x7262('0x57')]({'where':{'id':_0x4f7d42[_0x7262('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5ba8a,null))[_0x7262('0x1d')](function(_0x53761e){if(_0x53761e){return _0x53761e[_0x7262('0x68')](_0x4f7d42[_0x7262('0x3e')]['ids']);}})[_0x7262('0x1d')](respondWithStatusCode(_0x5ba8a,null))[_0x7262('0x27')](handleError(_0x5ba8a,null));};exports[_0x7262('0x69')]=function(_0xdd1ffd,_0x38370a,_0x22c340){return db['WhatsappAccount'][_0x7262('0x57')]({'where':{'id':_0xdd1ffd[_0x7262('0x5a')]['id']}})[_0x7262('0x1d')](handleEntityNotFound(_0x38370a,null))[_0x7262('0x1d')](function(_0xeae242){if(_0xeae242){return _0xeae242['addAgents'](_0xdd1ffd[_0x7262('0x51')][_0x7262('0x63')],_['omit'](_0xdd1ffd[_0x7262('0x51')],[_0x7262('0x63'),'id'])||{})['spread'](function(_0x1445a8){for(var _0x3579cd=0x0;_0x3579cd<_0xdd1ffd['body'][_0x7262('0x63')][_0x7262('0x4c')];_0x3579cd+=0x1){socket[_0x7262('0x6a')]('userWhatsappAccount:save',{'UserId':Number(_0xdd1ffd[_0x7262('0x51')][_0x7262('0x63')][_0x3579cd]),'WhatsappAccountId':Number(_0xdd1ffd[_0x7262('0x5a')]['id'])});}return _0x1445a8;});}})['then'](respondWithResult(_0x38370a,null))[_0x7262('0x27')](handleError(_0x38370a,null));};exports[_0x7262('0x6b')]=function(_0x5f1b45,_0x3b06f1,_0x2f08a0){return db[_0x7262('0x3b')][_0x7262('0x57')]({'where':{'id':_0x5f1b45[_0x7262('0x5a')]['id']}})[_0x7262('0x1d')](handleEntityNotFound(_0x3b06f1,null))[_0x7262('0x1d')](function(_0x4a7998){if(_0x4a7998){return _0x4a7998[_0x7262('0x6b')](_0x5f1b45[_0x7262('0x3e')][_0x7262('0x63')])[_0x7262('0x1d')](function(){if(_[_0x7262('0x6c')](_0x5f1b45[_0x7262('0x3e')][_0x7262('0x63')])){for(var _0x20fd9=0x0;_0x20fd9<_0x5f1b45[_0x7262('0x3e')][_0x7262('0x63')]['length'];_0x20fd9+=0x1){socket[_0x7262('0x6a')](_0x7262('0x6d'),{'UserId':Number(_0x5f1b45[_0x7262('0x3e')]['ids'][_0x20fd9]),'WhatsappAccountId':Number(_0x5f1b45[_0x7262('0x5a')]['id'])});}}else{socket[_0x7262('0x6a')](_0x7262('0x6d'),{'UserId':Number(_0x5f1b45['query'][_0x7262('0x63')]),'WhatsappAccountId':Number(_0x5f1b45[_0x7262('0x5a')]['id'])});}});}})['then'](respondWithStatusCode(_0x3b06f1,null))[_0x7262('0x27')](handleError(_0x3b06f1,null));};exports[_0x7262('0x6e')]=function(_0x22e667,_0x285218,_0x3547c6){var _0x59e3e1={};var _0x127db4={};var _0x11f0a5;var _0x38b403;return db['WhatsappAccount'][_0x7262('0x66')]({'where':{'id':_0x22e667[_0x7262('0x5a')]['id']}})[_0x7262('0x1d')](handleEntityNotFound(_0x285218,null))[_0x7262('0x1d')](function(_0x4ffc7d){if(_0x4ffc7d){_0x11f0a5=_0x4ffc7d;_0x127db4['model']=_[_0x7262('0x3f')](db[_0x7262('0x6f')][_0x7262('0x4b')]);_0x127db4['query']=_['keys'](_0x22e667['query']);_0x127db4['filters']=_[_0x7262('0x40')](_0x127db4['model'],_0x127db4[_0x7262('0x3e')]);_0x59e3e1['attributes']=_[_0x7262('0x40')](_0x127db4[_0x7262('0x3d')],qs[_0x7262('0x42')](_0x22e667[_0x7262('0x3e')][_0x7262('0x42')]));_0x59e3e1[_0x7262('0x41')]=_0x59e3e1[_0x7262('0x41')]['length']?_0x59e3e1[_0x7262('0x41')]:_0x127db4[_0x7262('0x3d')];_0x59e3e1[_0x7262('0x5f')]=qs[_0x7262('0x45')](_0x22e667[_0x7262('0x3e')][_0x7262('0x45')]);_0x59e3e1[_0x7262('0x46')]=qs[_0x7262('0x47')](_[_0x7262('0x67')](_0x22e667[_0x7262('0x3e')],_0x127db4['filters']));if(_0x22e667[_0x7262('0x3e')][_0x7262('0x60')]){_0x59e3e1[_0x7262('0x46')]=_[_0x7262('0x48')](_0x59e3e1[_0x7262('0x46')],{'$or':_[_0x7262('0x3a')](_0x59e3e1[_0x7262('0x41')],function(_0x541717){var _0x6bd108={};_0x6bd108[_0x541717]={'$like':'%'+_0x22e667[_0x7262('0x3e')][_0x7262('0x60')]+'%'};return _0x6bd108;})});}_0x59e3e1=_[_0x7262('0x48')]({},_0x59e3e1,_0x22e667[_0x7262('0x4f')]);return _0x11f0a5[_0x7262('0x6e')](_0x59e3e1);}})[_0x7262('0x1d')](function(_0x1e9db6){if(_0x1e9db6){_0x38b403=_0x1e9db6[_0x7262('0x4c')];if(!_0x22e667[_0x7262('0x3e')][_0x7262('0x43')](_0x7262('0x44'))){_0x59e3e1[_0x7262('0x2d')]=qs[_0x7262('0x2d')](_0x22e667[_0x7262('0x3e')][_0x7262('0x2d')]);_0x59e3e1['offset']=qs[_0x7262('0x2b')](_0x22e667[_0x7262('0x3e')][_0x7262('0x2b')]);}return _0x11f0a5[_0x7262('0x6e')](_0x59e3e1);}})[_0x7262('0x1d')](function(_0x1e7c01){if(_0x1e7c01){return _0x1e7c01?{'count':_0x38b403,'rows':_0x1e7c01}:null;}})[_0x7262('0x1d')](respondWithResult(_0x285218,null))['catch'](handleError(_0x285218,null));};exports[_0x7262('0x70')]=function(_0x2fd8f5,_0x167d1f,_0x5d4ded){return db['WhatsappAccount'][_0x7262('0x66')]({'where':{'id':_0x2fd8f5[_0x7262('0x5a')]['id']}})[_0x7262('0x1d')](handleEntityNotFound(_0x167d1f,null))[_0x7262('0x1d')](function(_0x470103){if(_0x470103){return db[_0x7262('0x71')]['transaction'](function(_0x231753){return db[_0x7262('0x72')][_0x7262('0x32')]({'where':{'WhatsappAccountId':_0x2fd8f5[_0x7262('0x5a')]['id']},'transaction':_0x231753})['then'](function(_0x2f56df){var _0x30f1b7=_[_0x7262('0x3a')](_0x2fd8f5[_0x7262('0x51')],function(_0x788996){_0x788996[_0x7262('0x5d')]=_0x2fd8f5['params']['id'];return _0x788996;});return db[_0x7262('0x72')][_0x7262('0x73')](_0x30f1b7,{'transaction':_0x231753});});})[_0x7262('0x1d')](function(){return db['WhatsappApplication'][_0x7262('0x74')]({'where':{'WhatsappAccountId':_0x2fd8f5[_0x7262('0x5a')]['id']},'order':_0x7262('0x75')});});}})[_0x7262('0x1d')](respondWithResult(_0x167d1f,null))[_0x7262('0x27')](handleError(_0x167d1f,null));};exports[_0x7262('0x76')]=function(_0x20c2b7,_0x1e0f23,_0xfea6d2){var _0x1fbaf6={};var _0x1c2cc0={};var _0x2b77a3;var _0x362643;return db['WhatsappAccount']['findOne']({'where':{'id':_0x20c2b7[_0x7262('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1e0f23,null))[_0x7262('0x1d')](function(_0x125ae7){if(_0x125ae7){_0x2b77a3=_0x125ae7;_0x1c2cc0[_0x7262('0x3d')]=_[_0x7262('0x3f')](db['WhatsappApplication'][_0x7262('0x4b')]);_0x1c2cc0[_0x7262('0x3e')]=_[_0x7262('0x3f')](_0x20c2b7[_0x7262('0x3e')]);_0x1c2cc0[_0x7262('0x47')]=_[_0x7262('0x40')](_0x1c2cc0[_0x7262('0x3d')],_0x1c2cc0[_0x7262('0x3e')]);_0x1fbaf6[_0x7262('0x41')]=_[_0x7262('0x40')](_0x1c2cc0[_0x7262('0x3d')],qs[_0x7262('0x42')](_0x20c2b7[_0x7262('0x3e')][_0x7262('0x42')]));_0x1fbaf6[_0x7262('0x41')]=_0x1fbaf6[_0x7262('0x41')][_0x7262('0x4c')]?_0x1fbaf6[_0x7262('0x41')]:_0x1c2cc0[_0x7262('0x3d')];_0x1fbaf6[_0x7262('0x5f')]=qs[_0x7262('0x45')](_0x20c2b7[_0x7262('0x3e')][_0x7262('0x45')]);_0x1fbaf6[_0x7262('0x46')]=qs['filters'](_[_0x7262('0x67')](_0x20c2b7[_0x7262('0x3e')],_0x1c2cc0['filters']));if(_0x20c2b7[_0x7262('0x3e')][_0x7262('0x60')]){_0x1fbaf6[_0x7262('0x46')]=_[_0x7262('0x48')](_0x1fbaf6[_0x7262('0x46')],{'$or':_[_0x7262('0x3a')](_0x1fbaf6[_0x7262('0x41')],function(_0x1ebb39){var _0x7927e8={};_0x7927e8[_0x1ebb39]={'$like':'%'+_0x20c2b7[_0x7262('0x3e')][_0x7262('0x60')]+'%'};return _0x7927e8;})});}_0x1fbaf6=_['merge']({},_0x1fbaf6,_0x20c2b7[_0x7262('0x4f')]);return _0x2b77a3[_0x7262('0x76')](_0x1fbaf6);}})[_0x7262('0x1d')](function(_0x22f501){if(_0x22f501){_0x362643=_0x22f501[_0x7262('0x4c')];if(!_0x20c2b7[_0x7262('0x3e')][_0x7262('0x43')](_0x7262('0x44'))){_0x1fbaf6[_0x7262('0x2d')]=qs['limit'](_0x20c2b7[_0x7262('0x3e')][_0x7262('0x2d')]);_0x1fbaf6[_0x7262('0x2b')]=qs[_0x7262('0x2b')](_0x20c2b7[_0x7262('0x3e')]['offset']);}return _0x2b77a3[_0x7262('0x76')](_0x1fbaf6);}})[_0x7262('0x1d')](function(_0x21628a){if(_0x21628a){return _0x21628a?{'count':_0x362643,'rows':_0x21628a}:null;}})[_0x7262('0x1d')](respondWithResult(_0x1e0f23,null))[_0x7262('0x27')](handleError(_0x1e0f23,null));};exports[_0x7262('0x77')]=function(_0x46e669,_0x86d059,_0x406440){var _0x3dd725={'channel':_0x7262('0x78')};var _0x545d43=[];var _0xf1fd47=[];var _0x4dcfed={};return db[_0x7262('0x3b')][_0x7262('0x57')]({'where':{'id':_0x46e669[_0x7262('0x5a')]['id']},'include':[{'model':db[_0x7262('0x72')],'as':_0x7262('0x79')}]})[_0x7262('0x1d')](handleEntityNotFound(_0x86d059,null))[_0x7262('0x1d')](function(_0x466ba1){_0x3dd725[_0x7262('0x7a')]=_0x466ba1;_0x3dd725[_0x7262('0x7b')]=_[_0x7262('0x7c')](_0x466ba1['Applications'],['priority'],[_0x7262('0x7d')]);if(_0x3dd725[_0x7262('0x7a')]['Applications']){delete _0x3dd725[_0x7262('0x7a')][_0x7262('0x79')];}return db[_0x7262('0x7e')][_0x7262('0x5b')]();})['then'](function(_0x397d32){if(!_0x397d32){throw new db[(_0x7262('0x7f'))]['ValidationError']('no\x20available\x20attributes');}_0x545d43=_[_0x7262('0x80')](_[_0x7262('0x3f')](_0x397d32),[_0x7262('0x81'),_0x7262('0x82')]);_0xf1fd47=_[_0x7262('0x80')](_[_0x7262('0x3f')](_0x397d32),[_0x7262('0x81'),_0x7262('0x82'),_0x7262('0x83'),_0x7262('0x84')]);_0x3dd725[_0x7262('0x51')]={'mapKey':_0x7262('0x85')};if(_0x3dd725[_0x7262('0x7a')][_0x7262('0x49')]&&_0x3dd725[_0x7262('0x7a')][_0x7262('0x49')]===_0x7262('0x86')){_0x3dd725['body'][_0x7262('0x87')]=_0x46e669[_0x7262('0x51')][_0x7262('0x88')][_0x7262('0x89')](_0x7262('0x8a'),'');_0x3dd725[_0x7262('0x51')][_0x7262('0x51')]=_0x46e669[_0x7262('0x51')]['Body'];_0x3dd725[_0x7262('0x51')][_0x7262('0x8b')]=_0x46e669[_0x7262('0x51')][_0x7262('0x8c')];}if(_0x3dd725[_0x7262('0x51')]['id']){delete _0x3dd725[_0x7262('0x51')]['id'];}if(_[_0x7262('0x8d')](_0x3dd725['body'][_0x7262('0x87')])){throw new db['Sequelize'][(_0x7262('0x8e'))](_0x7262('0x8f'));}if(_[_0x7262('0x8d')](_0x3dd725['body'][_0x7262('0x51')])||_0x3dd725['body'][_0x7262('0x51')]===''){throw new db[(_0x7262('0x7f'))][(_0x7262('0x8e'))](_0x7262('0x90'));}if(_[_0x7262('0x8d')](_0x3dd725[_0x7262('0x51')]['mapKey'])){throw new db[(_0x7262('0x7f'))]['ValidationError'](_0x7262('0x91')+_0xf1fd47);}if(!_[_0x7262('0x92')](_0xf1fd47,_0x3dd725['body'][_0x7262('0x93')])){throw new db['Sequelize']['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xf1fd47);}_0x4dcfed[_0x3dd725[_0x7262('0x51')][_0x7262('0x93')]]=_0x3dd725[_0x7262('0x51')][_0x7262('0x87')];return db[_0x7262('0x94')][_0x7262('0x57')]({'where':{'id':_0x3dd725['account'][_0x7262('0x84')]},'include':[{'model':db['CmContact'],'as':_0x7262('0x95'),'where':_0x4dcfed,'limit':0x1,'order':[[_0x7262('0x82'),'DESC']]}]});})['then'](handleEntityNotFound(_0x86d059,null))[_0x7262('0x1d')](function(_0xb5d8a8){if(_0xb5d8a8){_0x3dd725['list']=_['omit'](_0xb5d8a8,[_0x7262('0x95')]);if(_0xb5d8a8[_0x7262('0x95')]['length']){return _0xb5d8a8[_0x7262('0x95')][0x0];}var _0x5347cc=_[_0x7262('0x16')](_0x3dd725['body'],{'firstName':_0x3dd725[_0x7262('0x51')][_0x7262('0x87')],'ListId':_0xb5d8a8['id']});_0x5347cc[_0x3dd725[_0x7262('0x51')][_0x7262('0x93')]]=_0x3dd725['body'][_0x7262('0x87')];return db[_0x7262('0x7e')][_0x7262('0x50')](_0x5347cc,{'fields':_0x545d43,'raw':!![]});}})[_0x7262('0x1d')](handleEntityNotFound(_0x86d059,null))[_0x7262('0x1d')](function(_0x3255a5){if(_0x3255a5){_0x3dd725['contact']=_0x3255a5;var _0x520d7a={'ContactId':_0x3255a5['id'],'phone':_0x3dd725[_0x7262('0x51')][_0x7262('0x87')],'WhatsappAccountId':_0x46e669[_0x7262('0x5a')]['id']};var _0x4de618={'ContactId':_0x3255a5['id'],'WhatsappAccountId':_0x46e669[_0x7262('0x5a')]['id'],'closed':![]};return db[_0x7262('0x96')][_0x7262('0x57')]({'where':_0x4de618})[_0x7262('0x1d')](function(_0x55146e){if(_0x55146e){return[_0x55146e,![]];}return db[_0x7262('0x96')][_0x7262('0x50')](_0x520d7a)[_0x7262('0x1d')](function(_0x260715){return[_0x260715,!![]];});});}})[_0x7262('0x97')](function(_0x46d090,_0xb8b195){_0x3dd725[_0x7262('0x98')]=_0x46d090['get']({'plain':!![]});_0x3dd725[_0x7262('0x98')]['created']=![];if(_0xb8b195){if(_0x3dd725['account'][_0x7262('0x99')]){_0x3dd725[_0x7262('0x7b')]['push']({'id':0x0,'priority':_0x3dd725[_0x7262('0x7b')][_0x7262('0x4c')]+0x1,'app':'close','appdata':_0x7262('0x9a'),'interval':'*,*,*,*'});}_0x3dd725[_0x7262('0x98')][_0x7262('0x9b')]=!![];}return db[_0x7262('0x9c')]['create']({'phone':_0x3dd725['body'][_0x7262('0x87')],'messageId':_0x3dd725[_0x7262('0x51')][_0x7262('0x8b')],'body':_0x3dd725[_0x7262('0x51')][_0x7262('0x51')],'WhatsappAccountId':_0x46e669[_0x7262('0x5a')]['id'],'WhatsappInteractionId':_0x46d090['id'],'direction':'in','ContactId':_0x46d090[_0x7262('0x9d')],'AttachmentId':_0x3dd725[_0x7262('0x51')][_0x7262('0x9e')]});})['then'](function(_0x47463e){_0x3dd725['message']=_0x47463e;if(_0x3dd725[_0x7262('0x98')][_0x7262('0x9f')]){return db[_0x7262('0x6f')][_0x7262('0x57')]({'attributes':['id',_0x7262('0x36')],'where':{'id':_0x3dd725['interaction']['UserId']}})[_0x7262('0x1d')](function(_0x1e692c){if(_0x1e692c){_0x3dd725[_0x7262('0x7b')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x1e692c[_0x7262('0x36')]+','+(_0x3dd725[_0x7262('0x7a')]['waitForTheAssignedAgent']||0xa),'interval':_0x7262('0xa0')});}return respondWithRpcPromise(_0x7262('0xa1'),_0x7262('0xa2'),_0x3dd725);});}return respondWithRpcPromise(_0x7262('0xa1'),'startRouting',_0x3dd725);})[_0x7262('0x1d')](function(_0x44fae7){if(_0x44fae7){var _0x253f05=0xc8;var _0x4bbefe=_0x7262('0xa3');logger[_0x7262('0x1e')](_0x7262('0xa4'),_0x4bbefe,_0x253f05,'entity\x20found');logger['debug'](_0x7262('0xa5'),_0x4bbefe,_0x253f05,_0x7262('0xa6'),JSON[_0x7262('0x22')](_0x44fae7));if(_0x3dd725['account']['type']===_0x7262('0x86')){return _0x86d059[_0x7262('0x28')](_0x253f05)['set'](_0x7262('0xa7'),_0x7262('0xa8'))[_0x7262('0x37')](_0x7262('0xa9'));}else{return _0x86d059[_0x7262('0x28')](_0x253f05)['json'](_0x44fae7);}}})[_0x7262('0x27')](handleError(_0x86d059,null));};exports[_0x7262('0x37')]=function(_0x4b4fc1,_0x576fe7,_0x2115bf){var _0x403227,_0x2d79b2,_0x2415cc;if(_[_0x7262('0x8d')](_0x4b4fc1['body'][_0x7262('0x51')])||_0x4b4fc1[_0x7262('0x51')][_0x7262('0x51')]===''){throw new db[(_0x7262('0x7f'))][(_0x7262('0x8e'))](_0x7262('0x90'));}if(_[_0x7262('0x8d')](_0x4b4fc1[_0x7262('0x51')]['to'])){throw new db['Sequelize']['ValidationError']('to\x20is\x20mandatory');}_0x403227=_0x4b4fc1['body']['to'];return db[_0x7262('0x3b')]['find']({'where':{'id':_0x4b4fc1[_0x7262('0x5a')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':_0x7262('0x95'),'where':{'mobile':_0x403227},'limit':0x1,'order':[[_0x7262('0x82'),_0x7262('0xaa')]]}]}]})[_0x7262('0x1d')](handleEntityNotFound(_0x576fe7,null))[_0x7262('0x1d')](function(_0x3dec89){if(_0x3dec89&&_0x3dec89[_0x7262('0xab')]){_0x2d79b2=_0x3dec89[_0x7262('0x52')]({'plain':!![]});if(_0x2d79b2['List']&&_0x2d79b2[_0x7262('0xab')][_0x7262('0x95')][_0x7262('0x4c')]){return _0x2d79b2[_0x7262('0xab')][_0x7262('0x95')][0x0];}return db[_0x7262('0x7e')][_0x7262('0x50')](_[_0x7262('0x16')](_0x4b4fc1[_0x7262('0x51')],{'firstName':_0x403227,'mobile':_0x403227,'phone':_0x403227,'ListId':_0x2d79b2[_0x7262('0x84')]}));}})['then'](handleEntityNotFound(_0x576fe7,null))[_0x7262('0x1d')](function(_0x3e0624){if(_0x3e0624){_0x2415cc=_0x3e0624;return db[_0x7262('0x96')][_0x7262('0x57')]({'where':{'ContactId':_0x2415cc['id'],'closed':![],'WhatsappAccountId':_0x2d79b2['id']}})[_0x7262('0x1d')](function(_0x501c87){if(_0x501c87){return[_0x501c87,![]];}return db['WhatsappInteraction'][_0x7262('0x50')]({'UserId':_0x4b4fc1[_0x7262('0x55')]['id'],'ContactId':_0x2415cc['id'],'WhatsappAccountId':_0x2d79b2['id'],'phone':_0x403227,'firstMsgDirection':'out','Messages':[_[_0x7262('0x48')](_0x4b4fc1['body'],{'read':![],'body':_0x4b4fc1[_0x7262('0x51')][_0x7262('0x51')],'phone':_0x403227,'WhatsappAccountId':_0x2d79b2['id'],'UserId':_0x4b4fc1[_0x7262('0x55')]['id'],'ContactId':_0x2415cc['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x7262('0xac')}]})[_0x7262('0x1d')](function(_0x56a223){return[_0x56a223,!![]];});});}})[_0x7262('0x97')](function(_0x202846,_0x1a3a16){if(_0x1a3a16){return _0x202846;}return db[_0x7262('0x9c')][_0x7262('0x50')](_[_0x7262('0x48')](_0x4b4fc1[_0x7262('0x51')],{'read':![],'body':_0x4b4fc1[_0x7262('0x51')][_0x7262('0x51')],'phone':_0x403227,'WhatsappAccountId':_0x2d79b2['id'],'WhatsappInteractionId':_0x202846['id'],'UserId':_0x4b4fc1[_0x7262('0x55')]['id'],'ContactId':_0x2415cc['id']}))['then'](function(_0x2f54dc){_0x202846[_0x7262('0xad')][_0x7262('0xac')]=[];_0x202846['dataValues'][_0x7262('0xac')][_0x7262('0xae')](_0x2f54dc['dataValues']);return _0x202846;});})['then'](respondWithResult(_0x576fe7,null))[_0x7262('0x27')](handleError(_0x576fe7,null));};
\ No newline at end of file
+var _0x29e3=['updatedAt','ListId','mobile','from','From','replace','whatsapp:','Body','messageId','MessageSid','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','list','omit','Contacts','contact','WhatsappInteraction','interaction','created','autoclose','applications','push','close','unmanaged','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','twilio','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','CmList','List','CmContact','DESC','out','dataValues','Messages','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','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','redis','defaults','localhost','./whatsappAccount.socket','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','destroy','WhatsappAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','WhatsappAccount','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','show','includeAll','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','addDisposition','getDispositions','findOne','Disposition','rows','removeDispositions','ids','WhatsappAccountId','CannedAnswer','removeAnswers','addAgents','spread','userWhatsappAccount:save','isArray','emit','userWhatsappAccount:remove','getAgents','User','WhatsappApplication','priority','getApplications','notify','whatsapp','Applications','asc','account','Sequelize','ValidationError','difference','createdAt'];(function(_0x3c301c,_0x347ec5){var _0x3caae4=function(_0xdcbb51){while(--_0xdcbb51){_0x3c301c['push'](_0x3c301c['shift']());}};_0x3caae4(++_0x347ec5);}(_0x29e3,0xee));var _0x329e=function(_0x39acf8,_0x135454){_0x39acf8=_0x39acf8-0x0;var _0x5579eb=_0x29e3[_0x39acf8];return _0x5579eb;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x329e('0x0'));var jsonpatch=require(_0x329e('0x1'));var rp=require(_0x329e('0x2'));var moment=require(_0x329e('0x3'));var BPromise=require(_0x329e('0x4'));var Mustache=require('mustache');var util=require(_0x329e('0x5'));var path=require(_0x329e('0x6'));var sox=require(_0x329e('0x7'));var csv=require(_0x329e('0x8'));var ejs=require(_0x329e('0x9'));var fs=require('fs');var fs_extra=require(_0x329e('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x329e('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x329e('0xc'));var toCsv=require(_0x329e('0x8'));var querystring=require(_0x329e('0xd'));var Papa=require(_0x329e('0xe'));var Redis=require(_0x329e('0xf'));var authService=require(_0x329e('0x10'));var qs=require(_0x329e('0x11'));var as=require(_0x329e('0x12'));var hardwareService=require(_0x329e('0x13'));var logger=require(_0x329e('0x14'))(_0x329e('0x15'));var utils=require('../../config/utils');var config=require(_0x329e('0x16'));var licenseUtil=require(_0x329e('0x17'));var db=require(_0x329e('0x18'))['db'];config[_0x329e('0x19')]=_[_0x329e('0x1a')](config['redis'],{'host':_0x329e('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x329e('0x19')]));require(_0x329e('0x1c'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x329e('0x1d')][_0x329e('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x8e9e59,_0x45df54,_0x2b32c7,_0x5777ad){return new BPromise(function(_0x219f65,_0x346c00){var _0x1fe0f8=_0x5777ad||client;return _0x1fe0f8[_0x329e('0x1f')](_0x8e9e59,_0x2b32c7)[_0x329e('0x20')](function(_0x4dc908){logger[_0x329e('0x21')](_0x329e('0x22'),_0x45df54,_0x329e('0x23'));logger[_0x329e('0x24')](_0x329e('0x25'),_0x45df54,_0x329e('0x23'),JSON[_0x329e('0x26')](_0x4dc908));if(_0x4dc908[_0x329e('0x27')]){if(_0x4dc908['error'][_0x329e('0x28')]===0x1f4){logger[_0x329e('0x27')](_0x329e('0x22'),_0x45df54,_0x4dc908[_0x329e('0x27')]['message']);return _0x346c00(_0x4dc908[_0x329e('0x27')][_0x329e('0x29')]);}logger['error'](_0x329e('0x22'),_0x45df54,_0x4dc908[_0x329e('0x27')][_0x329e('0x29')]);return _0x219f65(_0x4dc908[_0x329e('0x27')][_0x329e('0x29')]);}else{logger[_0x329e('0x21')]('WhatsappAccount,\x20%s,\x20%s',_0x45df54,'request\x20sent');_0x219f65(_0x4dc908[_0x329e('0x2a')][_0x329e('0x29')]);}})[_0x329e('0x2b')](function(_0x4f56df){logger['error'](_0x329e('0x22'),_0x45df54,_0x4f56df);_0x346c00(_0x4f56df);});});}function respondWithStatusCode(_0x15de10,_0x3f32c7){_0x3f32c7=_0x3f32c7||0xcc;return function(_0x4b4f34){if(_0x4b4f34){return _0x15de10[_0x329e('0x2c')](_0x3f32c7);}return _0x15de10[_0x329e('0x2d')](_0x3f32c7)[_0x329e('0x2e')]();};}function respondWithResult(_0x20440d,_0x683cf1){_0x683cf1=_0x683cf1||0xc8;return function(_0x5a8a03){if(_0x5a8a03){return _0x20440d[_0x329e('0x2d')](_0x683cf1)[_0x329e('0x2f')](_0x5a8a03);}};}function respondWithFilteredResult(_0x2047b7,_0x148f4f){return function(_0x37f7b8){if(_0x37f7b8){var _0x5025b0=typeof _0x148f4f['offset']===_0x329e('0x30')&&typeof _0x148f4f[_0x329e('0x31')]==='undefined';var _0x594cd0=_0x37f7b8[_0x329e('0x32')];var _0x7a76cb=_0x5025b0?0x0:_0x148f4f[_0x329e('0x33')];var _0x35de4b=_0x5025b0?_0x37f7b8[_0x329e('0x32')]:_0x148f4f[_0x329e('0x33')]+_0x148f4f[_0x329e('0x31')];var _0x5af300;if(_0x35de4b>=_0x594cd0){_0x35de4b=_0x594cd0;_0x5af300=0xc8;}else{_0x5af300=0xce;}_0x2047b7['status'](_0x5af300);return _0x2047b7[_0x329e('0x34')](_0x329e('0x35'),_0x7a76cb+'-'+_0x35de4b+'/'+_0x594cd0)[_0x329e('0x2f')](_0x37f7b8);}return null;};}function patchUpdates(_0x1ef372){return function(_0x3a4581){try{jsonpatch[_0x329e('0x36')](_0x3a4581,_0x1ef372,!![]);}catch(_0x2c21a0){return BPromise['reject'](_0x2c21a0);}return _0x3a4581[_0x329e('0x37')]();};}function saveUpdates(_0x351433,_0x26f8a8){return function(_0x327c69){if(_0x327c69){return _0x327c69['update'](_0x351433)[_0x329e('0x20')](function(_0x36977e){return _0x36977e;});}return null;};}function removeEntity(_0x4ea842,_0x3dd395){return function(_0x21fa46){if(_0x21fa46){return _0x21fa46[_0x329e('0x38')]()['then'](function(){var _0x286d47=_0x21fa46['get']({'plain':!![]});var _0x48884a=_0x329e('0x39');return db['UserProfileResource']['destroy']({'where':{'type':_0x48884a,'resourceId':_0x286d47['id']}})['then'](function(){return _0x21fa46;});})['then'](function(){_0x4ea842[_0x329e('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3df360,_0x3e302a){return function(_0x3d6a81){if(!_0x3d6a81){_0x3df360[_0x329e('0x2c')](0x194);}return _0x3d6a81;};}function handleError(_0x503ddc,_0x39f6d6){_0x39f6d6=_0x39f6d6||0x1f4;return function(_0x5460fc){logger[_0x329e('0x27')](_0x5460fc[_0x329e('0x3a')]);if(_0x5460fc['name']){delete _0x5460fc[_0x329e('0x3b')];}_0x503ddc['status'](_0x39f6d6)[_0x329e('0x3c')](_0x5460fc);};}exports[_0x329e('0x3d')]=function(_0x5945f6,_0x311840){var _0x1e5f4e={'include':[{'model':db[_0x329e('0x3e')],'as':_0x329e('0x3f')}]},_0x4714b6={},_0xd71a57={'count':0x0,'rows':[]};var _0x3cdf2b=_['map'](db[_0x329e('0x40')][_0x329e('0x41')],function(_0x3f87eb){return{'name':_0x3f87eb[_0x329e('0x42')],'type':_0x3f87eb[_0x329e('0x43')][_0x329e('0x44')]};});_0x4714b6[_0x329e('0x45')]=_[_0x329e('0x46')](_0x3cdf2b,_0x329e('0x3b'));_0x4714b6[_0x329e('0x47')]=_[_0x329e('0x48')](_0x5945f6[_0x329e('0x47')]);_0x4714b6[_0x329e('0x49')]=_[_0x329e('0x4a')](_0x4714b6['model'],_0x4714b6[_0x329e('0x47')]);_0x1e5f4e['attributes']=_[_0x329e('0x4a')](_0x4714b6[_0x329e('0x45')],qs[_0x329e('0x4b')](_0x5945f6['query'][_0x329e('0x4b')]));_0x1e5f4e[_0x329e('0x4c')]=_0x1e5f4e[_0x329e('0x4c')][_0x329e('0x4d')]?_0x1e5f4e[_0x329e('0x4c')]:_0x4714b6[_0x329e('0x45')];if(!_0x5945f6['query'][_0x329e('0x4e')](_0x329e('0x4f'))){_0x1e5f4e[_0x329e('0x31')]=qs['limit'](_0x5945f6['query'][_0x329e('0x31')]);_0x1e5f4e['offset']=qs[_0x329e('0x33')](_0x5945f6['query']['offset']);}_0x1e5f4e[_0x329e('0x50')]=qs[_0x329e('0x51')](_0x5945f6[_0x329e('0x47')][_0x329e('0x51')]);_0x1e5f4e[_0x329e('0x52')]=qs['filters'](_[_0x329e('0x53')](_0x5945f6[_0x329e('0x47')],_0x4714b6['filters']),_0x3cdf2b);if(_0x5945f6[_0x329e('0x47')]['filter']){_0x1e5f4e[_0x329e('0x52')]=_[_0x329e('0x54')](_0x1e5f4e[_0x329e('0x52')],{'$or':_['map'](_0x3cdf2b,function(_0x4b1db0){if(_0x4b1db0['type']!==_0x329e('0x55')){var _0x3cf03e={};_0x3cf03e[_0x4b1db0[_0x329e('0x3b')]]={'$like':'%'+_0x5945f6[_0x329e('0x47')][_0x329e('0x56')]+'%'};return _0x3cf03e;}})});}_0x1e5f4e=_[_0x329e('0x54')]({},_0x1e5f4e,_0x5945f6[_0x329e('0x57')]);var _0xa9b2e0={'where':_0x1e5f4e[_0x329e('0x52')]};return db[_0x329e('0x40')][_0x329e('0x32')](_0xa9b2e0)[_0x329e('0x20')](function(_0x38aeab){_0xd71a57['count']=_0x38aeab;if(_0x5945f6[_0x329e('0x47')]['includeAll']){_0x1e5f4e[_0x329e('0x58')]=[{'all':!![]}];}return db[_0x329e('0x40')][_0x329e('0x59')](_0x1e5f4e);})[_0x329e('0x20')](function(_0x1db800){_0xd71a57['rows']=_0x1db800;return _0xd71a57;})[_0x329e('0x20')](respondWithFilteredResult(_0x311840,_0x1e5f4e))[_0x329e('0x2b')](handleError(_0x311840,null));};exports[_0x329e('0x5a')]=function(_0x404703,_0x4f8695){var _0x18b8f3={'raw':![],'where':{'id':_0x404703['params']['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x6a4815={};_0x6a4815[_0x329e('0x45')]=_[_0x329e('0x48')](db[_0x329e('0x40')][_0x329e('0x41')]);_0x6a4815[_0x329e('0x47')]=_[_0x329e('0x48')](_0x404703[_0x329e('0x47')]);_0x6a4815[_0x329e('0x49')]=_[_0x329e('0x4a')](_0x6a4815[_0x329e('0x45')],_0x6a4815[_0x329e('0x47')]);_0x18b8f3[_0x329e('0x4c')]=_[_0x329e('0x4a')](_0x6a4815[_0x329e('0x45')],qs[_0x329e('0x4b')](_0x404703[_0x329e('0x47')][_0x329e('0x4b')]));_0x18b8f3[_0x329e('0x4c')]=_0x18b8f3[_0x329e('0x4c')][_0x329e('0x4d')]?_0x18b8f3[_0x329e('0x4c')]:_0x6a4815[_0x329e('0x45')];if(_0x404703['query'][_0x329e('0x5b')]){_0x18b8f3[_0x329e('0x58')]=[{'all':!![]}];}_0x18b8f3=_['merge']({},_0x18b8f3,_0x404703[_0x329e('0x57')]);return db['WhatsappAccount'][_0x329e('0x5c')](_0x18b8f3)[_0x329e('0x20')](handleEntityNotFound(_0x4f8695,null))[_0x329e('0x20')](respondWithResult(_0x4f8695,null))['catch'](handleError(_0x4f8695,null));};exports['create']=function(_0x294120,_0x5a2b14){return db[_0x329e('0x40')][_0x329e('0x5d')](_0x294120['body'],{})['then'](function(_0xbf2b14){var _0xbbe11a=_0x294120[_0x329e('0x5e')][_0x329e('0x5f')]({'plain':!![]});if(!_0xbbe11a)throw new Error(_0x329e('0x60'));if(_0xbbe11a[_0x329e('0x61')]===_0x329e('0x5e')){var _0x1c332a=_0xbf2b14[_0x329e('0x5f')]({'plain':!![]});var _0x128f03=_0x329e('0x39');return db[_0x329e('0x62')][_0x329e('0x5c')]({'where':{'name':_0x128f03,'userProfileId':_0xbbe11a[_0x329e('0x63')]},'raw':!![]})['then'](function(_0x48567d){if(_0x48567d&&_0x48567d[_0x329e('0x64')]===0x0){return db[_0x329e('0x65')][_0x329e('0x5d')]({'name':_0x1c332a[_0x329e('0x3b')],'resourceId':_0x1c332a['id'],'type':_0x48567d[_0x329e('0x3b')],'sectionId':_0x48567d['id']},{})[_0x329e('0x20')](function(){return _0xbf2b14;});}else{return _0xbf2b14;}})[_0x329e('0x2b')](function(_0x3c8df6){logger[_0x329e('0x27')](_0x329e('0x66'),_0x3c8df6);throw _0x3c8df6;});}return _0xbf2b14;})[_0x329e('0x20')](respondWithResult(_0x5a2b14,0xc9))[_0x329e('0x2b')](handleError(_0x5a2b14,null));};exports['update']=function(_0x473202,_0xa938a8){if(_0x473202[_0x329e('0x67')]['id']){delete _0x473202[_0x329e('0x67')]['id'];}return db['WhatsappAccount'][_0x329e('0x5c')]({'where':{'id':_0x473202[_0x329e('0x68')]['id']},'include':[{'model':db[_0x329e('0x3e')],'as':_0x329e('0x3f')}]})[_0x329e('0x20')](handleEntityNotFound(_0xa938a8,null))[_0x329e('0x20')](saveUpdates(_0x473202[_0x329e('0x67')],null))[_0x329e('0x20')](respondWithResult(_0xa938a8,null))['catch'](handleError(_0xa938a8,null));};exports[_0x329e('0x38')]=function(_0x4023de,_0x348d10){return db[_0x329e('0x40')][_0x329e('0x5c')]({'where':{'id':_0x4023de['params']['id']}})[_0x329e('0x20')](handleEntityNotFound(_0x348d10,null))[_0x329e('0x20')](removeEntity(_0x348d10,null))[_0x329e('0x2b')](handleError(_0x348d10,null));};exports[_0x329e('0x69')]=function(_0x2b1f69,_0xaecad7){return db[_0x329e('0x40')][_0x329e('0x69')]()[_0x329e('0x20')](respondWithResult(_0xaecad7,null))['catch'](handleError(_0xaecad7,null));};exports[_0x329e('0x6a')]=function(_0x49e12d,_0x2707d1,_0x3cdee6){if(_0x49e12d[_0x329e('0x67')]['id']){delete _0x49e12d[_0x329e('0x67')]['id'];}return db[_0x329e('0x40')][_0x329e('0x5c')]({'where':{'id':_0x49e12d[_0x329e('0x68')]['id']}})[_0x329e('0x20')](handleEntityNotFound(_0x2707d1,null))['then'](function(_0x590fa1){if(_0x590fa1){_0x49e12d['body']['WhatsappAccountId']=_0x590fa1['id'];return db['Disposition'][_0x329e('0x5d')](_0x49e12d[_0x329e('0x67')]);}})[_0x329e('0x20')](respondWithResult(_0x2707d1,null))[_0x329e('0x2b')](handleError(_0x2707d1,null));};exports[_0x329e('0x6b')]=function(_0x4246ee,_0x279194,_0x1de531){var _0x474975={'raw':![],'where':{}};var _0x2f4ab5={};var _0x246d49={'count':0x0,'rows':[]};return db[_0x329e('0x40')][_0x329e('0x6c')]({'where':{'id':_0x4246ee[_0x329e('0x68')]['id']}})[_0x329e('0x20')](handleEntityNotFound(_0x279194,null))[_0x329e('0x20')](function(_0x552200){if(_0x552200){_0x2f4ab5['model']=_[_0x329e('0x48')](db[_0x329e('0x6d')][_0x329e('0x41')]);_0x2f4ab5[_0x329e('0x47')]=_[_0x329e('0x48')](_0x4246ee[_0x329e('0x47')]);_0x2f4ab5[_0x329e('0x49')]=_[_0x329e('0x4a')](_0x2f4ab5[_0x329e('0x45')],_0x2f4ab5['query']);_0x474975['attributes']=_[_0x329e('0x4a')](_0x2f4ab5['model'],qs[_0x329e('0x4b')](_0x4246ee[_0x329e('0x47')][_0x329e('0x4b')]));_0x474975[_0x329e('0x4c')]=_0x474975[_0x329e('0x4c')]['length']?_0x474975['attributes']:_0x2f4ab5[_0x329e('0x45')];if(!_0x4246ee['query'][_0x329e('0x4e')]('nolimit')){_0x474975[_0x329e('0x31')]=qs[_0x329e('0x31')](_0x4246ee['query'][_0x329e('0x31')]);_0x474975['offset']=qs[_0x329e('0x33')](_0x4246ee['query'][_0x329e('0x33')]);}_0x474975[_0x329e('0x50')]=qs[_0x329e('0x51')](_0x4246ee[_0x329e('0x47')]['sort']);_0x474975[_0x329e('0x52')]=qs['filters'](_[_0x329e('0x53')](_0x4246ee[_0x329e('0x47')],_0x2f4ab5[_0x329e('0x49')]));_0x474975['where']['WhatsappAccountId']=_0x552200['id'];if(_0x4246ee['query'][_0x329e('0x56')]){_0x474975[_0x329e('0x52')]=_['merge'](_0x474975['where'],{'$or':_['map'](_0x474975['attributes'],function(_0x49386a){var _0x52e790={};_0x52e790[_0x49386a]={'$like':'%'+_0x4246ee[_0x329e('0x47')][_0x329e('0x56')]+'%'};return _0x52e790;})});}_0x474975=_[_0x329e('0x54')]({},_0x474975,_0x4246ee['options']);return db[_0x329e('0x6d')][_0x329e('0x32')]({'where':_0x474975[_0x329e('0x52')]})[_0x329e('0x20')](function(_0x32f805){_0x246d49[_0x329e('0x32')]=_0x32f805;if(_0x4246ee[_0x329e('0x47')]['includeAll']){_0x474975[_0x329e('0x58')]=[{'all':!![]}];}return db[_0x329e('0x6d')][_0x329e('0x59')](_0x474975);})[_0x329e('0x20')](function(_0x40bccb){_0x246d49[_0x329e('0x6e')]=_0x40bccb;return _0x246d49;});}})[_0x329e('0x20')](respondWithFilteredResult(_0x279194,_0x474975))[_0x329e('0x2b')](handleError(_0x279194,null));};exports[_0x329e('0x6f')]=function(_0x5942cb,_0x59ad82,_0x4223a2){return db['WhatsappAccount']['find']({'where':{'id':_0x5942cb[_0x329e('0x68')]['id']}})['then'](handleEntityNotFound(_0x59ad82,null))[_0x329e('0x20')](function(_0x1ab18e){if(_0x1ab18e){return _0x1ab18e[_0x329e('0x6f')](_0x5942cb[_0x329e('0x47')][_0x329e('0x70')]);}})[_0x329e('0x20')](respondWithStatusCode(_0x59ad82,null))[_0x329e('0x2b')](handleError(_0x59ad82,null));};exports['addAnswer']=function(_0x228f01,_0x29b4dc,_0x3d826c){if(_0x228f01[_0x329e('0x67')]['id']){delete _0x228f01['body']['id'];}return db['WhatsappAccount'][_0x329e('0x5c')]({'where':{'id':_0x228f01[_0x329e('0x68')]['id']}})[_0x329e('0x20')](handleEntityNotFound(_0x29b4dc,null))[_0x329e('0x20')](function(_0x2e4d15){if(_0x2e4d15){_0x228f01[_0x329e('0x67')][_0x329e('0x71')]=_0x2e4d15['id'];return db[_0x329e('0x72')]['create'](_0x228f01[_0x329e('0x67')]);}})['then'](respondWithResult(_0x29b4dc,null))['catch'](handleError(_0x29b4dc,null));};exports['getAnswers']=function(_0x5506d9,_0x1f81fc,_0x4169a5){var _0x316b07={'raw':![],'where':{}};var _0x35237f={};var _0x470ac9={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x329e('0x6c')]({'where':{'id':_0x5506d9['params']['id']}})['then'](handleEntityNotFound(_0x1f81fc,null))[_0x329e('0x20')](function(_0x6758ca){if(_0x6758ca){_0x35237f[_0x329e('0x45')]=_[_0x329e('0x48')](db['CannedAnswer'][_0x329e('0x41')]);_0x35237f[_0x329e('0x47')]=_[_0x329e('0x48')](_0x5506d9[_0x329e('0x47')]);_0x35237f['filters']=_['intersection'](_0x35237f[_0x329e('0x45')],_0x35237f[_0x329e('0x47')]);_0x316b07[_0x329e('0x4c')]=_[_0x329e('0x4a')](_0x35237f[_0x329e('0x45')],qs[_0x329e('0x4b')](_0x5506d9['query'][_0x329e('0x4b')]));_0x316b07[_0x329e('0x4c')]=_0x316b07['attributes'][_0x329e('0x4d')]?_0x316b07['attributes']:_0x35237f[_0x329e('0x45')];if(!_0x5506d9[_0x329e('0x47')][_0x329e('0x4e')](_0x329e('0x4f'))){_0x316b07[_0x329e('0x31')]=qs['limit'](_0x5506d9[_0x329e('0x47')][_0x329e('0x31')]);_0x316b07[_0x329e('0x33')]=qs[_0x329e('0x33')](_0x5506d9['query'][_0x329e('0x33')]);}_0x316b07['order']=qs[_0x329e('0x51')](_0x5506d9[_0x329e('0x47')]['sort']);_0x316b07[_0x329e('0x52')]=qs[_0x329e('0x49')](_['pick'](_0x5506d9[_0x329e('0x47')],_0x35237f['filters']));_0x316b07['where']['WhatsappAccountId']=_0x6758ca['id'];if(_0x5506d9[_0x329e('0x47')][_0x329e('0x56')]){_0x316b07['where']=_[_0x329e('0x54')](_0x316b07['where'],{'$or':_[_0x329e('0x46')](_0x316b07[_0x329e('0x4c')],function(_0x911a5b){var _0x2f6d04={};_0x2f6d04[_0x911a5b]={'$like':'%'+_0x5506d9['query'][_0x329e('0x56')]+'%'};return _0x2f6d04;})});}_0x316b07=_[_0x329e('0x54')]({},_0x316b07,_0x5506d9[_0x329e('0x57')]);return db[_0x329e('0x72')][_0x329e('0x32')]({'where':_0x316b07['where']})[_0x329e('0x20')](function(_0x5c6df3){_0x470ac9[_0x329e('0x32')]=_0x5c6df3;if(_0x5506d9[_0x329e('0x47')]['includeAll']){_0x316b07[_0x329e('0x58')]=[{'all':!![]}];}return db['CannedAnswer'][_0x329e('0x59')](_0x316b07);})[_0x329e('0x20')](function(_0x163405){_0x470ac9[_0x329e('0x6e')]=_0x163405;return _0x470ac9;});}})['then'](respondWithFilteredResult(_0x1f81fc,_0x316b07))[_0x329e('0x2b')](handleError(_0x1f81fc,null));};exports[_0x329e('0x73')]=function(_0x5755dd,_0x22aec3,_0x2e0daa){return db[_0x329e('0x40')][_0x329e('0x5c')]({'where':{'id':_0x5755dd[_0x329e('0x68')]['id']}})[_0x329e('0x20')](handleEntityNotFound(_0x22aec3,null))[_0x329e('0x20')](function(_0x52d09e){if(_0x52d09e){return _0x52d09e[_0x329e('0x73')](_0x5755dd[_0x329e('0x47')][_0x329e('0x70')]);}})['then'](respondWithStatusCode(_0x22aec3,null))[_0x329e('0x2b')](handleError(_0x22aec3,null));};exports[_0x329e('0x74')]=function(_0x177b4e,_0x13a71b,_0x3badb1){return db['WhatsappAccount'][_0x329e('0x5c')]({'where':{'id':_0x177b4e[_0x329e('0x68')]['id']}})[_0x329e('0x20')](handleEntityNotFound(_0x13a71b,null))[_0x329e('0x20')](function(_0x2e45b8){if(_0x2e45b8){return _0x2e45b8[_0x329e('0x74')](_0x177b4e[_0x329e('0x67')][_0x329e('0x70')],_['omit'](_0x177b4e['body'],[_0x329e('0x70'),'id'])||{})[_0x329e('0x75')](function(_0x2afad6){for(var _0x8da8f2=0x0;_0x8da8f2<_0x177b4e[_0x329e('0x67')]['ids'][_0x329e('0x4d')];_0x8da8f2+=0x1){socket['emit'](_0x329e('0x76'),{'UserId':Number(_0x177b4e[_0x329e('0x67')][_0x329e('0x70')][_0x8da8f2]),'WhatsappAccountId':Number(_0x177b4e[_0x329e('0x68')]['id'])});}return _0x2afad6;});}})[_0x329e('0x20')](respondWithResult(_0x13a71b,null))[_0x329e('0x2b')](handleError(_0x13a71b,null));};exports['removeAgents']=function(_0x48d122,_0x527f6d,_0x147ab5){return db[_0x329e('0x40')][_0x329e('0x5c')]({'where':{'id':_0x48d122[_0x329e('0x68')]['id']}})[_0x329e('0x20')](handleEntityNotFound(_0x527f6d,null))[_0x329e('0x20')](function(_0x136da0){if(_0x136da0){return _0x136da0['removeAgents'](_0x48d122[_0x329e('0x47')][_0x329e('0x70')])['then'](function(){if(_[_0x329e('0x77')](_0x48d122[_0x329e('0x47')][_0x329e('0x70')])){for(var _0x3dcd89=0x0;_0x3dcd89<_0x48d122[_0x329e('0x47')][_0x329e('0x70')][_0x329e('0x4d')];_0x3dcd89+=0x1){socket[_0x329e('0x78')]('userWhatsappAccount:remove',{'UserId':Number(_0x48d122[_0x329e('0x47')][_0x329e('0x70')][_0x3dcd89]),'WhatsappAccountId':Number(_0x48d122[_0x329e('0x68')]['id'])});}}else{socket[_0x329e('0x78')](_0x329e('0x79'),{'UserId':Number(_0x48d122[_0x329e('0x47')]['ids']),'WhatsappAccountId':Number(_0x48d122[_0x329e('0x68')]['id'])});}});}})[_0x329e('0x20')](respondWithStatusCode(_0x527f6d,null))[_0x329e('0x2b')](handleError(_0x527f6d,null));};exports[_0x329e('0x7a')]=function(_0x39f11a,_0x12d0d0,_0x5468e5){var _0x57b04c={};var _0x22dd74={};var _0x392095;var _0x1faf3a;return db[_0x329e('0x40')]['findOne']({'where':{'id':_0x39f11a[_0x329e('0x68')]['id']}})[_0x329e('0x20')](handleEntityNotFound(_0x12d0d0,null))[_0x329e('0x20')](function(_0x133344){if(_0x133344){_0x392095=_0x133344;_0x22dd74[_0x329e('0x45')]=_['keys'](db[_0x329e('0x7b')]['rawAttributes']);_0x22dd74[_0x329e('0x47')]=_['keys'](_0x39f11a[_0x329e('0x47')]);_0x22dd74['filters']=_['intersection'](_0x22dd74['model'],_0x22dd74[_0x329e('0x47')]);_0x57b04c['attributes']=_[_0x329e('0x4a')](_0x22dd74[_0x329e('0x45')],qs[_0x329e('0x4b')](_0x39f11a['query'][_0x329e('0x4b')]));_0x57b04c[_0x329e('0x4c')]=_0x57b04c[_0x329e('0x4c')][_0x329e('0x4d')]?_0x57b04c['attributes']:_0x22dd74[_0x329e('0x45')];_0x57b04c[_0x329e('0x50')]=qs[_0x329e('0x51')](_0x39f11a[_0x329e('0x47')]['sort']);_0x57b04c['where']=qs[_0x329e('0x49')](_[_0x329e('0x53')](_0x39f11a[_0x329e('0x47')],_0x22dd74[_0x329e('0x49')]));if(_0x39f11a[_0x329e('0x47')]['filter']){_0x57b04c[_0x329e('0x52')]=_['merge'](_0x57b04c[_0x329e('0x52')],{'$or':_[_0x329e('0x46')](_0x57b04c[_0x329e('0x4c')],function(_0x6271ec){var _0x31e501={};_0x31e501[_0x6271ec]={'$like':'%'+_0x39f11a['query'][_0x329e('0x56')]+'%'};return _0x31e501;})});}_0x57b04c=_[_0x329e('0x54')]({},_0x57b04c,_0x39f11a[_0x329e('0x57')]);return _0x392095[_0x329e('0x7a')](_0x57b04c);}})[_0x329e('0x20')](function(_0x10ba26){if(_0x10ba26){_0x1faf3a=_0x10ba26[_0x329e('0x4d')];if(!_0x39f11a[_0x329e('0x47')][_0x329e('0x4e')](_0x329e('0x4f'))){_0x57b04c[_0x329e('0x31')]=qs[_0x329e('0x31')](_0x39f11a['query'][_0x329e('0x31')]);_0x57b04c[_0x329e('0x33')]=qs[_0x329e('0x33')](_0x39f11a[_0x329e('0x47')][_0x329e('0x33')]);}return _0x392095[_0x329e('0x7a')](_0x57b04c);}})[_0x329e('0x20')](function(_0x5492f3){if(_0x5492f3){return _0x5492f3?{'count':_0x1faf3a,'rows':_0x5492f3}:null;}})[_0x329e('0x20')](respondWithResult(_0x12d0d0,null))['catch'](handleError(_0x12d0d0,null));};exports['addApplications']=function(_0x3c3246,_0x48b45a,_0x1d649a){return db[_0x329e('0x40')][_0x329e('0x6c')]({'where':{'id':_0x3c3246[_0x329e('0x68')]['id']}})[_0x329e('0x20')](handleEntityNotFound(_0x48b45a,null))[_0x329e('0x20')](function(_0x3d56b6){if(_0x3d56b6){return db['sequelize']['transaction'](function(_0x567c94){return db['WhatsappApplication'][_0x329e('0x38')]({'where':{'WhatsappAccountId':_0x3c3246[_0x329e('0x68')]['id']},'transaction':_0x567c94})[_0x329e('0x20')](function(_0x151238){var _0x1b221c=_['map'](_0x3c3246[_0x329e('0x67')],function(_0x4ad769){_0x4ad769[_0x329e('0x71')]=_0x3c3246[_0x329e('0x68')]['id'];return _0x4ad769;});return db[_0x329e('0x7c')]['bulkCreate'](_0x1b221c,{'transaction':_0x567c94});});})[_0x329e('0x20')](function(){return db[_0x329e('0x7c')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x3c3246['params']['id']},'order':_0x329e('0x7d')});});}})['then'](respondWithResult(_0x48b45a,null))[_0x329e('0x2b')](handleError(_0x48b45a,null));};exports[_0x329e('0x7e')]=function(_0xc39677,_0x1b41da,_0x258fa4){var _0x17810a={};var _0x131f89={};var _0x7cfde0;var _0x33fae2;return db[_0x329e('0x40')]['findOne']({'where':{'id':_0xc39677[_0x329e('0x68')]['id']}})[_0x329e('0x20')](handleEntityNotFound(_0x1b41da,null))[_0x329e('0x20')](function(_0x597321){if(_0x597321){_0x7cfde0=_0x597321;_0x131f89[_0x329e('0x45')]=_[_0x329e('0x48')](db[_0x329e('0x7c')][_0x329e('0x41')]);_0x131f89['query']=_[_0x329e('0x48')](_0xc39677[_0x329e('0x47')]);_0x131f89[_0x329e('0x49')]=_[_0x329e('0x4a')](_0x131f89[_0x329e('0x45')],_0x131f89[_0x329e('0x47')]);_0x17810a[_0x329e('0x4c')]=_[_0x329e('0x4a')](_0x131f89[_0x329e('0x45')],qs[_0x329e('0x4b')](_0xc39677[_0x329e('0x47')]['fields']));_0x17810a['attributes']=_0x17810a[_0x329e('0x4c')][_0x329e('0x4d')]?_0x17810a[_0x329e('0x4c')]:_0x131f89['model'];_0x17810a[_0x329e('0x50')]=qs[_0x329e('0x51')](_0xc39677[_0x329e('0x47')]['sort']);_0x17810a[_0x329e('0x52')]=qs['filters'](_[_0x329e('0x53')](_0xc39677[_0x329e('0x47')],_0x131f89['filters']));if(_0xc39677[_0x329e('0x47')][_0x329e('0x56')]){_0x17810a['where']=_[_0x329e('0x54')](_0x17810a[_0x329e('0x52')],{'$or':_[_0x329e('0x46')](_0x17810a[_0x329e('0x4c')],function(_0x3c2f59){var _0x2cd89f={};_0x2cd89f[_0x3c2f59]={'$like':'%'+_0xc39677[_0x329e('0x47')]['filter']+'%'};return _0x2cd89f;})});}_0x17810a=_[_0x329e('0x54')]({},_0x17810a,_0xc39677['options']);return _0x7cfde0['getApplications'](_0x17810a);}})['then'](function(_0x2fe414){if(_0x2fe414){_0x33fae2=_0x2fe414[_0x329e('0x4d')];if(!_0xc39677['query'][_0x329e('0x4e')]('nolimit')){_0x17810a['limit']=qs['limit'](_0xc39677['query']['limit']);_0x17810a[_0x329e('0x33')]=qs[_0x329e('0x33')](_0xc39677[_0x329e('0x47')][_0x329e('0x33')]);}return _0x7cfde0[_0x329e('0x7e')](_0x17810a);}})[_0x329e('0x20')](function(_0x4588d8){if(_0x4588d8){return _0x4588d8?{'count':_0x33fae2,'rows':_0x4588d8}:null;}})[_0x329e('0x20')](respondWithResult(_0x1b41da,null))['catch'](handleError(_0x1b41da,null));};exports[_0x329e('0x7f')]=function(_0x8ec1aa,_0xbd7374,_0x33d6c0){var _0x53e7e0={'channel':_0x329e('0x80')};var _0x56ff14=[];var _0x42ff06=[];var _0x59c97e={};return db[_0x329e('0x40')]['find']({'where':{'id':_0x8ec1aa[_0x329e('0x68')]['id']},'include':[{'model':db[_0x329e('0x7c')],'as':_0x329e('0x81')}]})[_0x329e('0x20')](handleEntityNotFound(_0xbd7374,null))['then'](function(_0xe9472){_0x53e7e0['account']=_0xe9472;_0x53e7e0['applications']=_['orderBy'](_0xe9472[_0x329e('0x81')],[_0x329e('0x7d')],[_0x329e('0x82')]);if(_0x53e7e0['account']['Applications']){delete _0x53e7e0[_0x329e('0x83')][_0x329e('0x81')];}return db['CmContact'][_0x329e('0x69')]();})[_0x329e('0x20')](function(_0x238336){if(!_0x238336){throw new db[(_0x329e('0x84'))][(_0x329e('0x85'))]('no\x20available\x20attributes');}_0x56ff14=_[_0x329e('0x86')](_[_0x329e('0x48')](_0x238336),[_0x329e('0x87'),_0x329e('0x88')]);_0x42ff06=_['difference'](_[_0x329e('0x48')](_0x238336),['createdAt',_0x329e('0x88'),'CompanyId',_0x329e('0x89')]);_0x53e7e0[_0x329e('0x67')]={'mapKey':_0x329e('0x8a')};if(_0x53e7e0[_0x329e('0x83')]['type']&&_0x53e7e0['account'][_0x329e('0x43')]==='twilio'){_0x53e7e0['body'][_0x329e('0x8b')]=_0x8ec1aa[_0x329e('0x67')][_0x329e('0x8c')][_0x329e('0x8d')](_0x329e('0x8e'),'');_0x53e7e0['body'][_0x329e('0x67')]=_0x8ec1aa['body'][_0x329e('0x8f')];_0x53e7e0[_0x329e('0x67')][_0x329e('0x90')]=_0x8ec1aa['body'][_0x329e('0x91')];}if(_0x53e7e0['body']['id']){delete _0x53e7e0[_0x329e('0x67')]['id'];}if(_['isNil'](_0x53e7e0[_0x329e('0x67')][_0x329e('0x8b')])){throw new db[(_0x329e('0x84'))]['ValidationError']('from\x20is\x20mandatory');}if(_['isNil'](_0x53e7e0[_0x329e('0x67')][_0x329e('0x67')])||_0x53e7e0[_0x329e('0x67')][_0x329e('0x67')]===''){throw new db['Sequelize'][(_0x329e('0x85'))](_0x329e('0x92'));}if(_[_0x329e('0x93')](_0x53e7e0['body']['mapKey'])){throw new db[(_0x329e('0x84'))][(_0x329e('0x85'))](_0x329e('0x94')+_0x42ff06);}if(!_[_0x329e('0x95')](_0x42ff06,_0x53e7e0[_0x329e('0x67')][_0x329e('0x96')])){throw new db[(_0x329e('0x84'))][(_0x329e('0x85'))](_0x329e('0x97')+_0x42ff06);}_0x59c97e[_0x53e7e0[_0x329e('0x67')][_0x329e('0x96')]]=_0x53e7e0[_0x329e('0x67')][_0x329e('0x8b')];return db['CmList'][_0x329e('0x5c')]({'where':{'id':_0x53e7e0[_0x329e('0x83')][_0x329e('0x89')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x59c97e,'limit':0x1,'order':[['updatedAt','DESC']]}]});})[_0x329e('0x20')](handleEntityNotFound(_0xbd7374,null))[_0x329e('0x20')](function(_0xed47c3){if(_0xed47c3){_0x53e7e0[_0x329e('0x98')]=_[_0x329e('0x99')](_0xed47c3,[_0x329e('0x9a')]);if(_0xed47c3[_0x329e('0x9a')][_0x329e('0x4d')]){return _0xed47c3[_0x329e('0x9a')][0x0];}var _0x20d857=_['defaults'](_0x53e7e0[_0x329e('0x67')],{'firstName':_0x53e7e0[_0x329e('0x67')][_0x329e('0x8b')],'ListId':_0xed47c3['id']});_0x20d857[_0x53e7e0[_0x329e('0x67')][_0x329e('0x96')]]=_0x53e7e0[_0x329e('0x67')][_0x329e('0x8b')];return db['CmContact'][_0x329e('0x5d')](_0x20d857,{'fields':_0x56ff14,'raw':!![]});}})[_0x329e('0x20')](handleEntityNotFound(_0xbd7374,null))[_0x329e('0x20')](function(_0x35b635){if(_0x35b635){_0x53e7e0[_0x329e('0x9b')]=_0x35b635;var _0x390874={'ContactId':_0x35b635['id'],'phone':_0x53e7e0[_0x329e('0x67')][_0x329e('0x8b')],'WhatsappAccountId':_0x8ec1aa[_0x329e('0x68')]['id']};var _0xfaf5d6={'ContactId':_0x35b635['id'],'WhatsappAccountId':_0x8ec1aa['params']['id'],'closed':![]};return db[_0x329e('0x9c')][_0x329e('0x5c')]({'where':_0xfaf5d6})['then'](function(_0x1e6de5){if(_0x1e6de5){return[_0x1e6de5,![]];}return db[_0x329e('0x9c')][_0x329e('0x5d')](_0x390874)[_0x329e('0x20')](function(_0x326494){return[_0x326494,!![]];});});}})[_0x329e('0x75')](function(_0x4045a6,_0x573319){_0x53e7e0[_0x329e('0x9d')]=_0x4045a6[_0x329e('0x5f')]({'plain':!![]});_0x53e7e0[_0x329e('0x9d')][_0x329e('0x9e')]=![];if(_0x573319){if(_0x53e7e0[_0x329e('0x83')][_0x329e('0x9f')]){_0x53e7e0[_0x329e('0xa0')][_0x329e('0xa1')]({'id':0x0,'priority':_0x53e7e0['applications'][_0x329e('0x4d')]+0x1,'app':_0x329e('0xa2'),'appdata':_0x329e('0xa3'),'interval':_0x329e('0xa4')});}_0x53e7e0[_0x329e('0x9d')][_0x329e('0x9e')]=!![];}return db[_0x329e('0xa5')]['create']({'phone':_0x53e7e0['body'][_0x329e('0x8b')],'messageId':_0x53e7e0['body'][_0x329e('0x90')],'body':_0x53e7e0[_0x329e('0x67')][_0x329e('0x67')],'WhatsappAccountId':_0x8ec1aa['params']['id'],'WhatsappInteractionId':_0x4045a6['id'],'direction':'in','ContactId':_0x4045a6[_0x329e('0xa6')],'AttachmentId':_0x53e7e0['body'][_0x329e('0xa7')]});})['then'](function(_0x4a14fb){_0x53e7e0[_0x329e('0x29')]=_0x4a14fb;if(_0x53e7e0[_0x329e('0x9d')][_0x329e('0xa8')]){return db[_0x329e('0x7b')][_0x329e('0x5c')]({'attributes':['id','name'],'where':{'id':_0x53e7e0[_0x329e('0x9d')][_0x329e('0xa8')]}})['then'](function(_0x37bf87){if(_0x37bf87){_0x53e7e0[_0x329e('0xa0')][_0x329e('0xa9')]({'id':0x0,'priority':0x0,'app':_0x329e('0xaa'),'appdata':_0x37bf87['name']+','+(_0x53e7e0[_0x329e('0x83')][_0x329e('0xab')]||0xa),'interval':_0x329e('0xa4')});}return respondWithRpcPromise(_0x329e('0xac'),'startRouting',_0x53e7e0);});}return respondWithRpcPromise(_0x329e('0xac'),_0x329e('0xad'),_0x53e7e0);})['then'](function(_0x5120c8){if(_0x5120c8){var _0x27a636=0xc8;var _0x5e672f=_0x329e('0xae');logger[_0x329e('0x21')](_0x329e('0x25'),_0x5e672f,_0x27a636,_0x329e('0xaf'));logger[_0x329e('0x24')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x5e672f,_0x27a636,'entity\x20found',JSON[_0x329e('0x26')](_0x5120c8));if(_0x53e7e0[_0x329e('0x83')]['type']===_0x329e('0xb0')){return _0xbd7374['status'](_0x27a636)[_0x329e('0x34')](_0x329e('0xb1'),_0x329e('0xb2'))[_0x329e('0x3c')](_0x329e('0xb3'));}else{return _0xbd7374[_0x329e('0x2d')](_0x27a636)[_0x329e('0x2f')](_0x5120c8);}}})[_0x329e('0x2b')](handleError(_0xbd7374,null));};exports[_0x329e('0x3c')]=function(_0xce362b,_0x4a22b0,_0x4ab34f){var _0x10f9e9,_0x4e797d,_0x549bb2;if(_[_0x329e('0x93')](_0xce362b[_0x329e('0x67')]['body'])||_0xce362b[_0x329e('0x67')][_0x329e('0x67')]===''){throw new db['Sequelize'][(_0x329e('0x85'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x329e('0x93')](_0xce362b[_0x329e('0x67')]['to'])){throw new db[(_0x329e('0x84'))][(_0x329e('0x85'))]('to\x20is\x20mandatory');}_0x10f9e9=_0xce362b[_0x329e('0x67')]['to'];return db['WhatsappAccount'][_0x329e('0x5c')]({'where':{'id':_0xce362b['params']['id']},'include':[{'model':db[_0x329e('0xb4')],'as':_0x329e('0xb5'),'include':[{'model':db[_0x329e('0xb6')],'as':_0x329e('0x9a'),'where':{'mobile':_0x10f9e9},'limit':0x1,'order':[['updatedAt',_0x329e('0xb7')]]}]}]})[_0x329e('0x20')](handleEntityNotFound(_0x4a22b0,null))[_0x329e('0x20')](function(_0x337559){if(_0x337559&&_0x337559[_0x329e('0xb5')]){_0x4e797d=_0x337559['get']({'plain':!![]});if(_0x4e797d[_0x329e('0xb5')]&&_0x4e797d[_0x329e('0xb5')][_0x329e('0x9a')][_0x329e('0x4d')]){return _0x4e797d[_0x329e('0xb5')]['Contacts'][0x0];}return db[_0x329e('0xb6')]['create'](_[_0x329e('0x1a')](_0xce362b['body'],{'firstName':_0x10f9e9,'mobile':_0x10f9e9,'phone':_0x10f9e9,'ListId':_0x4e797d[_0x329e('0x89')]}));}})[_0x329e('0x20')](handleEntityNotFound(_0x4a22b0,null))['then'](function(_0x4654e5){if(_0x4654e5){_0x549bb2=_0x4654e5;return db[_0x329e('0x9c')][_0x329e('0x5c')]({'where':{'ContactId':_0x549bb2['id'],'closed':![],'WhatsappAccountId':_0x4e797d['id']}})['then'](function(_0x2cf07b){if(_0x2cf07b){return[_0x2cf07b,![]];}return db['WhatsappInteraction']['create']({'UserId':_0xce362b[_0x329e('0x5e')]['id'],'ContactId':_0x549bb2['id'],'WhatsappAccountId':_0x4e797d['id'],'phone':_0x10f9e9,'firstMsgDirection':_0x329e('0xb8'),'Messages':[_[_0x329e('0x54')](_0xce362b[_0x329e('0x67')],{'read':![],'body':_0xce362b[_0x329e('0x67')][_0x329e('0x67')],'phone':_0x10f9e9,'WhatsappAccountId':_0x4e797d['id'],'UserId':_0xce362b[_0x329e('0x5e')]['id'],'ContactId':_0x549bb2['id']})]},{'include':[{'model':db[_0x329e('0xa5')],'as':'Messages'}]})[_0x329e('0x20')](function(_0x5b5798){return[_0x5b5798,!![]];});});}})[_0x329e('0x75')](function(_0x2e3a61,_0xde13b4){if(_0xde13b4){return _0x2e3a61;}return db[_0x329e('0xa5')][_0x329e('0x5d')](_[_0x329e('0x54')](_0xce362b['body'],{'read':![],'body':_0xce362b['body']['body'],'phone':_0x10f9e9,'WhatsappAccountId':_0x4e797d['id'],'WhatsappInteractionId':_0x2e3a61['id'],'UserId':_0xce362b[_0x329e('0x5e')]['id'],'ContactId':_0x549bb2['id']}))[_0x329e('0x20')](function(_0x2541b1){_0x2e3a61[_0x329e('0xb9')][_0x329e('0xba')]=[];_0x2e3a61['dataValues'][_0x329e('0xba')]['push'](_0x2541b1[_0x329e('0xb9')]);return _0x2e3a61;});})[_0x329e('0x20')](respondWithResult(_0x4a22b0,null))[_0x329e('0x2b')](handleError(_0x4a22b0,null));};
\ No newline at end of file
index e1ffb9c..6697b86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22b2=['WhatsappAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x22b2,0x94));var _0x222b=function(_0x5650a9,_0x5f2025){_0x5650a9=_0x5650a9-0x0;var _0x5b441a=_0x22b2[_0x5650a9];return _0x5b441a;};'use strict';var EventEmitter=require(_0x222b('0x0'));var WhatsappAccount=require(_0x222b('0x1'))['db'][_0x222b('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x222b('0x3')](0x0);var events={'afterCreate':_0x222b('0x4'),'afterUpdate':_0x222b('0x5'),'afterDestroy':_0x222b('0x6')};function emitEvent(_0xa1b278){return function(_0x218686,_0x594dbb,_0x4145bb){WhatsappAccountEvents[_0x222b('0x7')](_0xa1b278+':'+_0x218686['id'],_0x218686);WhatsappAccountEvents['emit'](_0xa1b278,_0x218686);_0x4145bb(null);};}for(var e in events){if(events[_0x222b('0x8')](e)){var event=events[e];WhatsappAccount[_0x222b('0x9')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0xad42=['setMaxListeners','save','update','remove','emit','events','../../mysqldb','WhatsappAccount'];(function(_0x207ce5,_0x42b78e){var _0x3c201d=function(_0x43bc5d){while(--_0x43bc5d){_0x207ce5['push'](_0x207ce5['shift']());}};_0x3c201d(++_0x42b78e);}(_0xad42,0x135));var _0x2ad4=function(_0x367af0,_0x43b8a7){_0x367af0=_0x367af0-0x0;var _0x5270d4=_0xad42[_0x367af0];return _0x5270d4;};'use strict';var EventEmitter=require(_0x2ad4('0x0'));var WhatsappAccount=require(_0x2ad4('0x1'))['db'][_0x2ad4('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x2ad4('0x3')](0x0);var events={'afterCreate':_0x2ad4('0x4'),'afterUpdate':_0x2ad4('0x5'),'afterDestroy':_0x2ad4('0x6')};function emitEvent(_0x59c6ca){return function(_0xb233b0,_0x4ca606,_0x2a015e){WhatsappAccountEvents[_0x2ad4('0x7')](_0x59c6ca+':'+_0xb233b0['id'],_0xb233b0);WhatsappAccountEvents[_0x2ad4('0x7')](_0x59c6ca,_0xb233b0);_0x2a015e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index 19c8fad..ef5ed03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x115b=['define','WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger','moment','rimraf','../../config/environment','./whatsappAccount.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x115b,0x1bb));var _0xb115=function(_0x551e6e,_0xdd9f6d){_0x551e6e=_0x551e6e-0x0;var _0x5e06a7=_0x115b[_0x551e6e];return _0x5e06a7;};'use strict';var _=require(_0xb115('0x0'));var util=require(_0xb115('0x1'));var logger=require(_0xb115('0x2'))('api');var moment=require(_0xb115('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb115('0x4'));var config=require(_0xb115('0x5'));var attributes=require(_0xb115('0x6'));module[_0xb115('0x7')]=function(_0x195f68,_0x4864e8){return _0x195f68[_0xb115('0x8')](_0xb115('0x9'),attributes,{'tableName':_0xb115('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6631=['WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./whatsappAccount.attributes','exports'];(function(_0xc83285,_0x3860f3){var _0x59ef36=function(_0x375eaf){while(--_0x375eaf){_0xc83285['push'](_0xc83285['shift']());}};_0x59ef36(++_0x3860f3);}(_0x6631,0x195));var _0x1663=function(_0x4acc5c,_0x166309){_0x4acc5c=_0x4acc5c-0x0;var _0x2a6a9d=_0x6631[_0x4acc5c];return _0x2a6a9d;};'use strict';var _=require(_0x1663('0x0'));var util=require(_0x1663('0x1'));var logger=require(_0x1663('0x2'))(_0x1663('0x3'));var moment=require(_0x1663('0x4'));var BPromise=require(_0x1663('0x5'));var rp=require(_0x1663('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1663('0x7'));var config=require(_0x1663('0x8'));var attributes=require(_0x1663('0x9'));module[_0x1663('0xa')]=function(_0x5aa177,_0x1a7351){return _0x5aa177['define'](_0x1663('0xb'),attributes,{'tableName':_0x1663('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 278dcb7..138a39a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a70=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','defaults','localhost','redis','./whatsappAccount.socket','request','then','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','WhatsappAccount,\x20%s,\x20%s','message','info','result','catch','ShowWhatsappAccount','options','raw','where','attributes','include','map','model','stringify','lodash','moment'];(function(_0x3cb773,_0x3ba3b7){var _0x520be6=function(_0x5c8659){while(--_0x5c8659){_0x3cb773['push'](_0x3cb773['shift']());}};_0x520be6(++_0x3ba3b7);}(_0x8a70,0x152));var _0x08a7=function(_0xf1e2c6,_0x35cf78){_0xf1e2c6=_0xf1e2c6-0x0;var _0x52d32b=_0x8a70[_0xf1e2c6];return _0x52d32b;};'use strict';var _=require(_0x08a7('0x0'));var util=require('util');var moment=require(_0x08a7('0x1'));var BPromise=require(_0x08a7('0x2'));var rs=require(_0x08a7('0x3'));var fs=require('fs');var Redis=require(_0x08a7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x08a7('0x5'));var logger=require(_0x08a7('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x08a7('0x7'));var client=jayson[_0x08a7('0x8')]['http']({'port':0x232a});config['redis']=_[_0x08a7('0x9')](config['redis'],{'host':_0x08a7('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x08a7('0xb')]));require(_0x08a7('0xc'))['register'](socket);function respondWithRpcPromise(_0x39fab5,_0x5bfb16,_0x3d0c41){return new BPromise(function(_0x4bafc6,_0x29b098){return client[_0x08a7('0xd')](_0x39fab5,_0x3d0c41)[_0x08a7('0xe')](function(_0x1d06d8){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x5bfb16,'request\x20sent');logger[_0x08a7('0xf')](_0x08a7('0x10'),_0x5bfb16,_0x08a7('0x11'),JSON['stringify'](_0x1d06d8));if(_0x1d06d8[_0x08a7('0x12')]){if(_0x1d06d8['error'][_0x08a7('0x13')]===0x1f4){logger['error'](_0x08a7('0x14'),_0x5bfb16,_0x1d06d8['error']['message']);return _0x29b098(_0x1d06d8['error']['message']);}logger[_0x08a7('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x5bfb16,_0x1d06d8[_0x08a7('0x12')][_0x08a7('0x15')]);return _0x4bafc6(_0x1d06d8[_0x08a7('0x12')][_0x08a7('0x15')]);}else{logger[_0x08a7('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x5bfb16,_0x08a7('0x11'));_0x4bafc6(_0x1d06d8[_0x08a7('0x17')][_0x08a7('0x15')]);}})[_0x08a7('0x18')](function(_0xbae386){logger[_0x08a7('0x12')](_0x08a7('0x14'),_0x5bfb16,_0xbae386);_0x29b098(_0xbae386);});});}exports[_0x08a7('0x19')]=function(_0x192614){var _0x1c7d44=this;return new Promise(function(_0x5e17f7,_0x1b1fd6){return db['WhatsappAccount']['find']({'raw':_0x192614[_0x08a7('0x1a')]?_0x192614[_0x08a7('0x1a')][_0x08a7('0x1b')]===undefined?!![]:![]:!![],'where':_0x192614[_0x08a7('0x1a')]?_0x192614['options'][_0x08a7('0x1c')]||null:null,'attributes':_0x192614['options']?_0x192614[_0x08a7('0x1a')][_0x08a7('0x1d')]||null:null,'include':_0x192614['options']?_0x192614[_0x08a7('0x1a')][_0x08a7('0x1e')]?_[_0x08a7('0x1f')](_0x192614[_0x08a7('0x1a')][_0x08a7('0x1e')],function(_0x1163f9){return{'model':db[_0x1163f9[_0x08a7('0x20')]],'as':_0x1163f9['as'],'attributes':_0x1163f9[_0x08a7('0x1d')],'include':_0x1163f9[_0x08a7('0x1e')]?_[_0x08a7('0x1f')](_0x1163f9[_0x08a7('0x1e')],function(_0x115311){return{'model':db[_0x115311[_0x08a7('0x20')]],'as':_0x115311['as'],'attributes':_0x115311[_0x08a7('0x1d')],'include':_0x115311[_0x08a7('0x1e')]?_[_0x08a7('0x1f')](_0x115311[_0x08a7('0x1e')],function(_0x5c6e33){return{'model':db[_0x5c6e33[_0x08a7('0x20')]],'as':_0x5c6e33['as'],'attributes':_0x5c6e33[_0x08a7('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2de831){logger[_0x08a7('0x16')]('ShowWhatsappAccount',_0x192614);logger['debug'](_0x08a7('0x19'),_0x192614,JSON[_0x08a7('0x21')](_0x2de831));_0x5e17f7(_0x2de831);})['catch'](function(_0x4148ef){logger['error']('ShowWhatsappAccount',_0x4148ef[_0x08a7('0x15')],_0x192614);_0x1b1fd6(_0x1c7d44[_0x08a7('0x12')](0x1f4,_0x4148ef[_0x08a7('0x15')]));});});};
\ No newline at end of file
+var _0x0595=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','include','attributes','map','model','stringify','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x0595,0xcc));var _0x5059=function(_0x3e3df5,_0x3ec784){_0x3e3df5=_0x3e3df5-0x0;var _0x6353a1=_0x0595[_0x3e3df5];return _0x6353a1;};'use strict';var _=require(_0x5059('0x0'));var util=require(_0x5059('0x1'));var moment=require(_0x5059('0x2'));var BPromise=require(_0x5059('0x3'));var rs=require(_0x5059('0x4'));var fs=require('fs');var Redis=require(_0x5059('0x5'));var db=require(_0x5059('0x6'))['db'];var utils=require(_0x5059('0x7'));var logger=require(_0x5059('0x8'))(_0x5059('0x9'));var config=require('../../config/environment');var jayson=require(_0x5059('0xa'));var client=jayson[_0x5059('0xb')][_0x5059('0xc')]({'port':0x232a});config['redis']=_[_0x5059('0xd')](config[_0x5059('0xe')],{'host':_0x5059('0xf'),'port':0x18eb});var socket=require(_0x5059('0x10'))(new Redis(config['redis']));require(_0x5059('0x11'))[_0x5059('0x12')](socket);function respondWithRpcPromise(_0x396f5e,_0x48dc95,_0x5b16c2){return new BPromise(function(_0x5b8d49,_0x956a9e){return client[_0x5059('0x13')](_0x396f5e,_0x5b16c2)[_0x5059('0x14')](function(_0x4e4101){logger[_0x5059('0x15')](_0x5059('0x16'),_0x48dc95,'request\x20sent');logger[_0x5059('0x17')](_0x5059('0x18'),_0x48dc95,_0x5059('0x19'),JSON['stringify'](_0x4e4101));if(_0x4e4101[_0x5059('0x1a')]){if(_0x4e4101[_0x5059('0x1a')][_0x5059('0x1b')]===0x1f4){logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x48dc95,_0x4e4101[_0x5059('0x1a')][_0x5059('0x1c')]);return _0x956a9e(_0x4e4101[_0x5059('0x1a')][_0x5059('0x1c')]);}logger[_0x5059('0x1a')]('WhatsappAccount,\x20%s,\x20%s',_0x48dc95,_0x4e4101[_0x5059('0x1a')][_0x5059('0x1c')]);return _0x5b8d49(_0x4e4101[_0x5059('0x1a')][_0x5059('0x1c')]);}else{logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x48dc95,_0x5059('0x19'));_0x5b8d49(_0x4e4101[_0x5059('0x1d')][_0x5059('0x1c')]);}})[_0x5059('0x1e')](function(_0x2f867a){logger[_0x5059('0x1a')](_0x5059('0x16'),_0x48dc95,_0x2f867a);_0x956a9e(_0x2f867a);});});}exports[_0x5059('0x1f')]=function(_0x1e9a05){var _0x540c11=this;return new Promise(function(_0x3ee511,_0x8bac39){return db[_0x5059('0x20')][_0x5059('0x21')]({'raw':_0x1e9a05[_0x5059('0x22')]?_0x1e9a05[_0x5059('0x22')][_0x5059('0x23')]===undefined?!![]:![]:!![],'where':_0x1e9a05[_0x5059('0x22')]?_0x1e9a05[_0x5059('0x22')][_0x5059('0x24')]||null:null,'attributes':_0x1e9a05[_0x5059('0x22')]?_0x1e9a05[_0x5059('0x22')]['attributes']||null:null,'include':_0x1e9a05['options']?_0x1e9a05[_0x5059('0x22')][_0x5059('0x25')]?_['map'](_0x1e9a05['options'][_0x5059('0x25')],function(_0x57394d){return{'model':db[_0x57394d['model']],'as':_0x57394d['as'],'attributes':_0x57394d[_0x5059('0x26')],'include':_0x57394d[_0x5059('0x25')]?_[_0x5059('0x27')](_0x57394d['include'],function(_0x53b9fa){return{'model':db[_0x53b9fa[_0x5059('0x28')]],'as':_0x53b9fa['as'],'attributes':_0x53b9fa[_0x5059('0x26')],'include':_0x53b9fa[_0x5059('0x25')]?_[_0x5059('0x27')](_0x53b9fa['include'],function(_0x9d0889){return{'model':db[_0x9d0889['model']],'as':_0x9d0889['as'],'attributes':_0x9d0889[_0x5059('0x26')]};}):[]};}):[]};}):[]:[]})[_0x5059('0x14')](function(_0x1c8319){logger['info'](_0x5059('0x1f'),_0x1e9a05);logger['debug'](_0x5059('0x1f'),_0x1e9a05,JSON[_0x5059('0x29')](_0x1c8319));_0x3ee511(_0x1c8319);})['catch'](function(_0x1ef660){logger[_0x5059('0x1a')]('ShowWhatsappAccount',_0x1ef660[_0x5059('0x1c')],_0x1e9a05);_0x8bac39(_0x540c11[_0x5059('0x1a')](0x1f4,_0x1ef660[_0x5059('0x1c')]));});});};
\ No newline at end of file
index a3bf68d..235e1d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e6c=['length','whatsappAccount:','./whatsappAccount.events','update','removeListener'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0x2e6c,0x174));var _0xc2e6=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x2e6c[_0x19950b];return _0x3c6b41;};'use strict';var WhatsappAccountEvents=require(_0xc2e6('0x0'));var events=['save','remove',_0xc2e6('0x1')];function createListener(_0x36cea1,_0x25cf9d){return function(_0x4da461){_0x25cf9d['emit'](_0x36cea1,_0x4da461);};}function removeListener(_0x1bceb9,_0x5a909c){return function(){WhatsappAccountEvents[_0xc2e6('0x2')](_0x1bceb9,_0x5a909c);};}exports['register']=function(_0x4a9865){for(var _0x44de98=0x0,_0x2f3023=events[_0xc2e6('0x3')];_0x44de98<_0x2f3023;_0x44de98++){var _0x4ed68f=events[_0x44de98];var _0x64b5a1=createListener(_0xc2e6('0x4')+_0x4ed68f,_0x4a9865);WhatsappAccountEvents['on'](_0x4ed68f,_0x64b5a1);}};
\ No newline at end of file
+var _0x7a6f=['length','whatsappAccount:','./whatsappAccount.events','save','update','removeListener','register'];(function(_0x358279,_0x35700e){var _0x123bc8=function(_0x586f14){while(--_0x586f14){_0x358279['push'](_0x358279['shift']());}};_0x123bc8(++_0x35700e);}(_0x7a6f,0xb1));var _0xf7a6=function(_0x59603c,_0x107405){_0x59603c=_0x59603c-0x0;var _0x14863c=_0x7a6f[_0x59603c];return _0x14863c;};'use strict';var WhatsappAccountEvents=require(_0xf7a6('0x0'));var events=[_0xf7a6('0x1'),'remove',_0xf7a6('0x2')];function createListener(_0x3d1708,_0x6dd5d8){return function(_0x59887f){_0x6dd5d8['emit'](_0x3d1708,_0x59887f);};}function removeListener(_0x23c590,_0x3b9d3e){return function(){WhatsappAccountEvents[_0xf7a6('0x3')](_0x23c590,_0x3b9d3e);};}exports[_0xf7a6('0x4')]=function(_0x12edd7){for(var _0x1d97cb=0x0,_0x4d4582=events[_0xf7a6('0x5')];_0x1d97cb<_0x4d4582;_0x1d97cb++){var _0x23a5a2=events[_0x1d97cb];var _0x2701c6=createListener(_0xf7a6('0x6')+_0x23a5a2,_0x12edd7);WhatsappAccountEvents['on'](_0x23a5a2,_0x2701c6);}};
\ No newline at end of file
index 8197550..8c5cc1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6b5=['./whatsappApplication.controller','get','index','isAuthenticated','show','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5650dc,_0x5cfccb){var _0x3e88ce=function(_0x56e346){while(--_0x56e346){_0x5650dc['push'](_0x5650dc['shift']());}};_0x3e88ce(++_0x5cfccb);}(_0xf6b5,0x82));var _0x5f6b=function(_0x39bc44,_0x1d4373){_0x39bc44=_0x39bc44-0x0;var _0x2916d8=_0xf6b5[_0x39bc44];return _0x2916d8;};'use strict';var multer=require(_0x5f6b('0x0'));var util=require(_0x5f6b('0x1'));var path=require(_0x5f6b('0x2'));var timeout=require(_0x5f6b('0x3'));var express=require(_0x5f6b('0x4'));var router=express[_0x5f6b('0x5')]();var fs_extra=require(_0x5f6b('0x6'));var auth=require(_0x5f6b('0x7'));var interaction=require(_0x5f6b('0x8'));var config=require(_0x5f6b('0x9'));var controller=require(_0x5f6b('0xa'));router[_0x5f6b('0xb')]('/',auth['isAuthenticated'](),controller[_0x5f6b('0xc')]);router[_0x5f6b('0xb')]('/:id',auth[_0x5f6b('0xd')](),controller[_0x5f6b('0xe')]);router['post']('/',auth[_0x5f6b('0xd')](),controller['create']);router['put'](_0x5f6b('0xf'),auth[_0x5f6b('0xd')](),controller[_0x5f6b('0x10')]);router[_0x5f6b('0x11')](_0x5f6b('0xf'),auth['isAuthenticated'](),controller[_0x5f6b('0x12')]);module[_0x5f6b('0x13')]=router;
\ No newline at end of file
+var _0x29e0=['get','isAuthenticated','index','show','create','/:id','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller'];(function(_0x3b64ae,_0x2c4e93){var _0x1506b8=function(_0x2591d7){while(--_0x2591d7){_0x3b64ae['push'](_0x3b64ae['shift']());}};_0x1506b8(++_0x2c4e93);}(_0x29e0,0x1dd));var _0x029e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x29e0[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x029e('0x0'));var path=require(_0x029e('0x1'));var timeout=require(_0x029e('0x2'));var express=require('express');var router=express[_0x029e('0x3')]();var fs_extra=require(_0x029e('0x4'));var auth=require(_0x029e('0x5'));var interaction=require(_0x029e('0x6'));var config=require(_0x029e('0x7'));var controller=require(_0x029e('0x8'));router[_0x029e('0x9')]('/',auth[_0x029e('0xa')](),controller[_0x029e('0xb')]);router[_0x029e('0x9')]('/:id',auth[_0x029e('0xa')](),controller[_0x029e('0xc')]);router['post']('/',auth[_0x029e('0xa')](),controller[_0x029e('0xd')]);router['put'](_0x029e('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x029e('0xf')](_0x029e('0xe'),auth['isAuthenticated'](),controller[_0x029e('0x10')]);module[_0x029e('0x11')]=router;
\ No newline at end of file
index 8c4f353..4798198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96fd=['noop','TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x13e8d9,_0x15a757){var _0x283357=function(_0x180cc7){while(--_0x180cc7){_0x13e8d9['push'](_0x13e8d9['shift']());}};_0x283357(++_0x15a757);}(_0x96fd,0x1df));var _0xd96f=function(_0x9aeb2d,_0x4b11c9){_0x9aeb2d=_0x9aeb2d-0x0;var _0x27fec7=_0x96fd[_0x9aeb2d];return _0x27fec7;};'use strict';var Sequelize=require(_0xd96f('0x0'));module[_0xd96f('0x1')]={'priority':{'type':Sequelize[_0xd96f('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xd96f('0x3')],'allowNull':![],'defaultValue':_0xd96f('0x4')},'appdata':{'type':Sequelize[_0xd96f('0x5')]()},'description':{'type':Sequelize[_0xd96f('0x3')]},'interval':{'type':Sequelize[_0xd96f('0x3')],'defaultValue':_0xd96f('0x6')}};
\ No newline at end of file
+var _0x0883=['TEXT','sequelize','STRING','noop'];(function(_0x159bee,_0x17d267){var _0x254cb8=function(_0x13e754){while(--_0x13e754){_0x159bee['push'](_0x159bee['shift']());}};_0x254cb8(++_0x17d267);}(_0x0883,0x13d));var _0x3088=function(_0x1602fb,_0x20b6b3){_0x1602fb=_0x1602fb-0x0;var _0x461831=_0x0883[_0x1602fb];return _0x461831;};'use strict';var Sequelize=require(_0x3088('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x3088('0x1')],'allowNull':![],'defaultValue':_0x3088('0x2')},'appdata':{'type':Sequelize[_0x3088('0x3')]()},'description':{'type':Sequelize[_0x3088('0x1')]},'interval':{'type':Sequelize[_0x3088('0x1')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 4e30a96..cb0fce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb98e=['request-promise','moment','bluebird','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index','WhatsappApplication','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','params','include','find','catch','create','body','update','eml-format','rimraf'];(function(_0x49e6db,_0x1a4546){var _0x5a6137=function(_0xcf3ed9){while(--_0xcf3ed9){_0x49e6db['push'](_0x49e6db['shift']());}};_0x5a6137(++_0x1a4546);}(_0xb98e,0x184));var _0xeb98=function(_0x30c45f,_0x4314e7){_0x30c45f=_0x30c45f-0x0;var _0x515af1=_0xb98e[_0x30c45f];return _0x515af1;};'use strict';var emlformat=require(_0xeb98('0x0'));var rimraf=require(_0xeb98('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xeb98('0x2'));var moment=require(_0xeb98('0x3'));var BPromise=require(_0xeb98('0x4'));var Mustache=require('mustache');var util=require(_0xeb98('0x5'));var path=require(_0xeb98('0x6'));var sox=require(_0xeb98('0x7'));var csv=require('to-csv');var ejs=require(_0xeb98('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeb98('0x9'));var squel=require('squel');var crypto=require(_0xeb98('0xa'));var jsforce=require(_0xeb98('0xb'));var deskjs=require(_0xeb98('0xc'));var toCsv=require(_0xeb98('0xd'));var querystring=require(_0xeb98('0xe'));var Papa=require(_0xeb98('0xf'));var Redis=require(_0xeb98('0x10'));var authService=require(_0xeb98('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xeb98('0x12'));var hardwareService=require(_0xeb98('0x13'));var logger=require(_0xeb98('0x14'))(_0xeb98('0x15'));var utils=require(_0xeb98('0x16'));var config=require(_0xeb98('0x17'));var licenseUtil=require(_0xeb98('0x18'));var db=require(_0xeb98('0x19'))['db'];function respondWithStatusCode(_0x2b3f9f,_0x7f5944){_0x7f5944=_0x7f5944||0xcc;return function(_0x147706){if(_0x147706){return _0x2b3f9f['sendStatus'](_0x7f5944);}return _0x2b3f9f[_0xeb98('0x1a')](_0x7f5944)[_0xeb98('0x1b')]();};}function respondWithResult(_0x55164a,_0x5d395c){_0x5d395c=_0x5d395c||0xc8;return function(_0x297a7a){if(_0x297a7a){return _0x55164a[_0xeb98('0x1a')](_0x5d395c)[_0xeb98('0x1c')](_0x297a7a);}};}function respondWithFilteredResult(_0x31ff03,_0xac14bc){return function(_0x29117b){if(_0x29117b){var _0x33de7f=typeof _0xac14bc[_0xeb98('0x1d')]===_0xeb98('0x1e')&&typeof _0xac14bc[_0xeb98('0x1f')]===_0xeb98('0x1e');var _0x2a77ff=_0x29117b[_0xeb98('0x20')];var _0x3520a4=_0x33de7f?0x0:_0xac14bc[_0xeb98('0x1d')];var _0x1caff9=_0x33de7f?_0x29117b[_0xeb98('0x20')]:_0xac14bc[_0xeb98('0x1d')]+_0xac14bc[_0xeb98('0x1f')];var _0x1785fc;if(_0x1caff9>=_0x2a77ff){_0x1caff9=_0x2a77ff;_0x1785fc=0xc8;}else{_0x1785fc=0xce;}_0x31ff03['status'](_0x1785fc);return _0x31ff03[_0xeb98('0x21')](_0xeb98('0x22'),_0x3520a4+'-'+_0x1caff9+'/'+_0x2a77ff)['json'](_0x29117b);}return null;};}function patchUpdates(_0x56b018){return function(_0x35f4f5){try{jsonpatch[_0xeb98('0x23')](_0x35f4f5,_0x56b018,!![]);}catch(_0x5261b0){return BPromise['reject'](_0x5261b0);}return _0x35f4f5[_0xeb98('0x24')]();};}function saveUpdates(_0x4e34fc,_0x3e7693){return function(_0x3ebf3d){if(_0x3ebf3d){return _0x3ebf3d['update'](_0x4e34fc)[_0xeb98('0x25')](function(_0xb561eb){return _0xb561eb;});}return null;};}function removeEntity(_0x3a3566,_0x131128){return function(_0x16274e){if(_0x16274e){return _0x16274e[_0xeb98('0x26')]()[_0xeb98('0x25')](function(){_0x3a3566[_0xeb98('0x1a')](0xcc)[_0xeb98('0x1b')]();});}};}function handleEntityNotFound(_0x378284,_0x7d361){return function(_0x499ae8){if(!_0x499ae8){_0x378284[_0xeb98('0x27')](0x194);}return _0x499ae8;};}function handleError(_0x29fecd,_0x45afdc){_0x45afdc=_0x45afdc||0x1f4;return function(_0x1c1ace){logger[_0xeb98('0x28')](_0x1c1ace[_0xeb98('0x29')]);if(_0x1c1ace[_0xeb98('0x2a')]){delete _0x1c1ace[_0xeb98('0x2a')];}_0x29fecd[_0xeb98('0x1a')](_0x45afdc)[_0xeb98('0x2b')](_0x1c1ace);};}exports[_0xeb98('0x2c')]=function(_0x37fdd6,_0x54a957){var _0x23dc9f={},_0x462a78={},_0x2eb410={'count':0x0,'rows':[]};var _0x388277=_['map'](db[_0xeb98('0x2d')][_0xeb98('0x2e')],function(_0x31cddf){return{'name':_0x31cddf[_0xeb98('0x2f')],'type':_0x31cddf[_0xeb98('0x30')][_0xeb98('0x31')]};});_0x462a78['model']=_['map'](_0x388277,_0xeb98('0x2a'));_0x462a78[_0xeb98('0x32')]=_[_0xeb98('0x33')](_0x37fdd6[_0xeb98('0x32')]);_0x462a78[_0xeb98('0x34')]=_[_0xeb98('0x35')](_0x462a78[_0xeb98('0x36')],_0x462a78[_0xeb98('0x32')]);_0x23dc9f[_0xeb98('0x37')]=_[_0xeb98('0x35')](_0x462a78[_0xeb98('0x36')],qs[_0xeb98('0x38')](_0x37fdd6[_0xeb98('0x32')][_0xeb98('0x38')]));_0x23dc9f[_0xeb98('0x37')]=_0x23dc9f['attributes'][_0xeb98('0x39')]?_0x23dc9f[_0xeb98('0x37')]:_0x462a78[_0xeb98('0x36')];if(!_0x37fdd6['query'][_0xeb98('0x3a')](_0xeb98('0x3b'))){_0x23dc9f['limit']=qs[_0xeb98('0x1f')](_0x37fdd6[_0xeb98('0x32')][_0xeb98('0x1f')]);_0x23dc9f['offset']=qs['offset'](_0x37fdd6[_0xeb98('0x32')][_0xeb98('0x1d')]);}_0x23dc9f[_0xeb98('0x3c')]=qs[_0xeb98('0x3d')](_0x37fdd6['query'][_0xeb98('0x3d')]);_0x23dc9f[_0xeb98('0x3e')]=qs['filters'](_[_0xeb98('0x3f')](_0x37fdd6['query'],_0x462a78[_0xeb98('0x34')]),_0x388277);if(_0x37fdd6[_0xeb98('0x32')][_0xeb98('0x40')]){_0x23dc9f[_0xeb98('0x3e')]=_[_0xeb98('0x41')](_0x23dc9f['where'],{'$or':_['map'](_0x388277,function(_0x40e58e){if(_0x40e58e[_0xeb98('0x30')]!==_0xeb98('0x42')){var _0xa4d8aa={};_0xa4d8aa[_0x40e58e[_0xeb98('0x2a')]]={'$like':'%'+_0x37fdd6[_0xeb98('0x32')][_0xeb98('0x40')]+'%'};return _0xa4d8aa;}})});}_0x23dc9f=_[_0xeb98('0x41')]({},_0x23dc9f,_0x37fdd6[_0xeb98('0x43')]);var _0x341f50={'where':_0x23dc9f[_0xeb98('0x3e')]};return db[_0xeb98('0x2d')][_0xeb98('0x20')](_0x341f50)[_0xeb98('0x25')](function(_0xba4fa7){_0x2eb410['count']=_0xba4fa7;if(_0x37fdd6[_0xeb98('0x32')][_0xeb98('0x44')]){_0x23dc9f['include']=[{'all':!![]}];}return db[_0xeb98('0x2d')][_0xeb98('0x45')](_0x23dc9f);})[_0xeb98('0x25')](function(_0x3e48ee){_0x2eb410[_0xeb98('0x46')]=_0x3e48ee;return _0x2eb410;})[_0xeb98('0x25')](respondWithFilteredResult(_0x54a957,_0x23dc9f))['catch'](handleError(_0x54a957,null));};exports['show']=function(_0x3c8618,_0x133549){var _0x2c1cee={'raw':!![],'where':{'id':_0x3c8618[_0xeb98('0x47')]['id']}},_0x59ae37={};_0x59ae37[_0xeb98('0x36')]=_['keys'](db['WhatsappApplication'][_0xeb98('0x2e')]);_0x59ae37[_0xeb98('0x32')]=_[_0xeb98('0x33')](_0x3c8618[_0xeb98('0x32')]);_0x59ae37[_0xeb98('0x34')]=_['intersection'](_0x59ae37[_0xeb98('0x36')],_0x59ae37[_0xeb98('0x32')]);_0x2c1cee[_0xeb98('0x37')]=_[_0xeb98('0x35')](_0x59ae37[_0xeb98('0x36')],qs[_0xeb98('0x38')](_0x3c8618[_0xeb98('0x32')][_0xeb98('0x38')]));_0x2c1cee[_0xeb98('0x37')]=_0x2c1cee[_0xeb98('0x37')][_0xeb98('0x39')]?_0x2c1cee[_0xeb98('0x37')]:_0x59ae37[_0xeb98('0x36')];if(_0x3c8618[_0xeb98('0x32')][_0xeb98('0x44')]){_0x2c1cee[_0xeb98('0x48')]=[{'all':!![]}];}_0x2c1cee=_[_0xeb98('0x41')]({},_0x2c1cee,_0x3c8618['options']);return db[_0xeb98('0x2d')][_0xeb98('0x49')](_0x2c1cee)['then'](handleEntityNotFound(_0x133549,null))['then'](respondWithResult(_0x133549,null))[_0xeb98('0x4a')](handleError(_0x133549,null));};exports['create']=function(_0x4b69a7,_0x53d046){return db['WhatsappApplication'][_0xeb98('0x4b')](_0x4b69a7[_0xeb98('0x4c')],{})[_0xeb98('0x25')](respondWithResult(_0x53d046,0xc9))[_0xeb98('0x4a')](handleError(_0x53d046,null));};exports[_0xeb98('0x4d')]=function(_0x23f0c2,_0x34c3ff){if(_0x23f0c2[_0xeb98('0x4c')]['id']){delete _0x23f0c2[_0xeb98('0x4c')]['id'];}return db[_0xeb98('0x2d')][_0xeb98('0x49')]({'where':{'id':_0x23f0c2[_0xeb98('0x47')]['id']}})[_0xeb98('0x25')](handleEntityNotFound(_0x34c3ff,null))[_0xeb98('0x25')](saveUpdates(_0x23f0c2[_0xeb98('0x4c')],null))['then'](respondWithResult(_0x34c3ff,null))[_0xeb98('0x4a')](handleError(_0x34c3ff,null));};exports[_0xeb98('0x26')]=function(_0x276409,_0x3f09dd){return db[_0xeb98('0x2d')][_0xeb98('0x49')]({'where':{'id':_0x276409[_0xeb98('0x47')]['id']}})[_0xeb98('0x25')](handleEntityNotFound(_0x3f09dd,null))['then'](removeEntity(_0x3f09dd,null))['catch'](handleError(_0x3f09dd,null));};
\ No newline at end of file
+var _0xff01=['apply','reject','save','update','then','destroy','status','stack','name','send','WhatsappApplication','rawAttributes','model','map','keys','query','intersection','attributes','fields','length','nolimit','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','create','body','find','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','to-csv','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','set','Content-Range'];(function(_0x385c71,_0x3f535a){var _0x336af6=function(_0x2faad6){while(--_0x2faad6){_0x385c71['push'](_0x385c71['shift']());}};_0x336af6(++_0x3f535a);}(_0xff01,0xb7));var _0x1ff0=function(_0x507ae3,_0x2eadfb){_0x507ae3=_0x507ae3-0x0;var _0x3f8269=_0xff01[_0x507ae3];return _0x3f8269;};'use strict';var emlformat=require(_0x1ff0('0x0'));var rimraf=require(_0x1ff0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1ff0('0x2'));var rp=require('request-promise');var moment=require(_0x1ff0('0x3'));var BPromise=require(_0x1ff0('0x4'));var Mustache=require(_0x1ff0('0x5'));var util=require('util');var path=require(_0x1ff0('0x6'));var sox=require('sox');var csv=require(_0x1ff0('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1ff0('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1ff0('0x9'));var jsforce=require(_0x1ff0('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x1ff0('0x7'));var querystring=require(_0x1ff0('0xb'));var Papa=require(_0x1ff0('0xc'));var Redis=require(_0x1ff0('0xd'));var authService=require(_0x1ff0('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x1ff0('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1ff0('0x10'))(_0x1ff0('0x11'));var utils=require(_0x1ff0('0x12'));var config=require(_0x1ff0('0x13'));var licenseUtil=require(_0x1ff0('0x14'));var db=require(_0x1ff0('0x15'))['db'];function respondWithStatusCode(_0x313caf,_0x1137e0){_0x1137e0=_0x1137e0||0xcc;return function(_0xdd0f19){if(_0xdd0f19){return _0x313caf[_0x1ff0('0x16')](_0x1137e0);}return _0x313caf['status'](_0x1137e0)[_0x1ff0('0x17')]();};}function respondWithResult(_0x15ebf4,_0xe352f1){_0xe352f1=_0xe352f1||0xc8;return function(_0xd9ca3e){if(_0xd9ca3e){return _0x15ebf4['status'](_0xe352f1)[_0x1ff0('0x18')](_0xd9ca3e);}};}function respondWithFilteredResult(_0x1475c0,_0x4ca7db){return function(_0x9b0565){if(_0x9b0565){var _0xc53d05=typeof _0x4ca7db[_0x1ff0('0x19')]==='undefined'&&typeof _0x4ca7db['limit']===_0x1ff0('0x1a');var _0x402adc=_0x9b0565['count'];var _0x1efb08=_0xc53d05?0x0:_0x4ca7db[_0x1ff0('0x19')];var _0x2b3199=_0xc53d05?_0x9b0565[_0x1ff0('0x1b')]:_0x4ca7db['offset']+_0x4ca7db['limit'];var _0x4e0c9c;if(_0x2b3199>=_0x402adc){_0x2b3199=_0x402adc;_0x4e0c9c=0xc8;}else{_0x4e0c9c=0xce;}_0x1475c0['status'](_0x4e0c9c);return _0x1475c0[_0x1ff0('0x1c')](_0x1ff0('0x1d'),_0x1efb08+'-'+_0x2b3199+'/'+_0x402adc)[_0x1ff0('0x18')](_0x9b0565);}return null;};}function patchUpdates(_0x5e98d5){return function(_0x34cc1d){try{jsonpatch[_0x1ff0('0x1e')](_0x34cc1d,_0x5e98d5,!![]);}catch(_0x42c737){return BPromise[_0x1ff0('0x1f')](_0x42c737);}return _0x34cc1d[_0x1ff0('0x20')]();};}function saveUpdates(_0x366c23,_0x165f6f){return function(_0xe3045c){if(_0xe3045c){return _0xe3045c[_0x1ff0('0x21')](_0x366c23)[_0x1ff0('0x22')](function(_0x3dd8f2){return _0x3dd8f2;});}return null;};}function removeEntity(_0x4dcd52,_0x45391b){return function(_0x525579){if(_0x525579){return _0x525579[_0x1ff0('0x23')]()['then'](function(){_0x4dcd52[_0x1ff0('0x24')](0xcc)[_0x1ff0('0x17')]();});}};}function handleEntityNotFound(_0x3c9e6e,_0x96a4ab){return function(_0x47034c){if(!_0x47034c){_0x3c9e6e['sendStatus'](0x194);}return _0x47034c;};}function handleError(_0x2c711a,_0x4635ca){_0x4635ca=_0x4635ca||0x1f4;return function(_0x38a2e2){logger['error'](_0x38a2e2[_0x1ff0('0x25')]);if(_0x38a2e2[_0x1ff0('0x26')]){delete _0x38a2e2[_0x1ff0('0x26')];}_0x2c711a[_0x1ff0('0x24')](_0x4635ca)[_0x1ff0('0x27')](_0x38a2e2);};}exports['index']=function(_0xbd4cdd,_0x16cd1a){var _0x37c24={},_0x16a084={},_0x5dab5b={'count':0x0,'rows':[]};var _0x97acd8=_['map'](db[_0x1ff0('0x28')][_0x1ff0('0x29')],function(_0x4a67dd){return{'name':_0x4a67dd['fieldName'],'type':_0x4a67dd['type']['key']};});_0x16a084[_0x1ff0('0x2a')]=_[_0x1ff0('0x2b')](_0x97acd8,_0x1ff0('0x26'));_0x16a084['query']=_[_0x1ff0('0x2c')](_0xbd4cdd[_0x1ff0('0x2d')]);_0x16a084['filters']=_[_0x1ff0('0x2e')](_0x16a084[_0x1ff0('0x2a')],_0x16a084[_0x1ff0('0x2d')]);_0x37c24[_0x1ff0('0x2f')]=_['intersection'](_0x16a084[_0x1ff0('0x2a')],qs['fields'](_0xbd4cdd[_0x1ff0('0x2d')][_0x1ff0('0x30')]));_0x37c24[_0x1ff0('0x2f')]=_0x37c24[_0x1ff0('0x2f')][_0x1ff0('0x31')]?_0x37c24[_0x1ff0('0x2f')]:_0x16a084[_0x1ff0('0x2a')];if(!_0xbd4cdd[_0x1ff0('0x2d')]['hasOwnProperty'](_0x1ff0('0x32'))){_0x37c24['limit']=qs[_0x1ff0('0x33')](_0xbd4cdd[_0x1ff0('0x2d')][_0x1ff0('0x33')]);_0x37c24['offset']=qs['offset'](_0xbd4cdd[_0x1ff0('0x2d')]['offset']);}_0x37c24[_0x1ff0('0x34')]=qs[_0x1ff0('0x35')](_0xbd4cdd['query'][_0x1ff0('0x35')]);_0x37c24[_0x1ff0('0x36')]=qs[_0x1ff0('0x37')](_[_0x1ff0('0x38')](_0xbd4cdd[_0x1ff0('0x2d')],_0x16a084[_0x1ff0('0x37')]),_0x97acd8);if(_0xbd4cdd['query'][_0x1ff0('0x39')]){_0x37c24[_0x1ff0('0x36')]=_[_0x1ff0('0x3a')](_0x37c24['where'],{'$or':_['map'](_0x97acd8,function(_0x442852){if(_0x442852['type']!==_0x1ff0('0x3b')){var _0x2152ab={};_0x2152ab[_0x442852['name']]={'$like':'%'+_0xbd4cdd['query'][_0x1ff0('0x39')]+'%'};return _0x2152ab;}})});}_0x37c24=_[_0x1ff0('0x3a')]({},_0x37c24,_0xbd4cdd['options']);var _0x16e910={'where':_0x37c24['where']};return db[_0x1ff0('0x28')]['count'](_0x16e910)['then'](function(_0x5241d8){_0x5dab5b[_0x1ff0('0x1b')]=_0x5241d8;if(_0xbd4cdd['query'][_0x1ff0('0x3c')]){_0x37c24[_0x1ff0('0x3d')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x1ff0('0x3e')](_0x37c24);})[_0x1ff0('0x22')](function(_0xc8fbba){_0x5dab5b[_0x1ff0('0x3f')]=_0xc8fbba;return _0x5dab5b;})['then'](respondWithFilteredResult(_0x16cd1a,_0x37c24))[_0x1ff0('0x40')](handleError(_0x16cd1a,null));};exports[_0x1ff0('0x41')]=function(_0x403a62,_0x36ba09){var _0x2f94bb={'raw':!![],'where':{'id':_0x403a62[_0x1ff0('0x42')]['id']}},_0x3596ad={};_0x3596ad['model']=_[_0x1ff0('0x2c')](db['WhatsappApplication']['rawAttributes']);_0x3596ad[_0x1ff0('0x2d')]=_[_0x1ff0('0x2c')](_0x403a62[_0x1ff0('0x2d')]);_0x3596ad['filters']=_[_0x1ff0('0x2e')](_0x3596ad[_0x1ff0('0x2a')],_0x3596ad[_0x1ff0('0x2d')]);_0x2f94bb[_0x1ff0('0x2f')]=_[_0x1ff0('0x2e')](_0x3596ad[_0x1ff0('0x2a')],qs['fields'](_0x403a62['query'][_0x1ff0('0x30')]));_0x2f94bb[_0x1ff0('0x2f')]=_0x2f94bb[_0x1ff0('0x2f')]['length']?_0x2f94bb[_0x1ff0('0x2f')]:_0x3596ad[_0x1ff0('0x2a')];if(_0x403a62[_0x1ff0('0x2d')][_0x1ff0('0x3c')]){_0x2f94bb[_0x1ff0('0x3d')]=[{'all':!![]}];}_0x2f94bb=_['merge']({},_0x2f94bb,_0x403a62[_0x1ff0('0x43')]);return db[_0x1ff0('0x28')]['find'](_0x2f94bb)['then'](handleEntityNotFound(_0x36ba09,null))['then'](respondWithResult(_0x36ba09,null))[_0x1ff0('0x40')](handleError(_0x36ba09,null));};exports[_0x1ff0('0x44')]=function(_0x34cea6,_0x23eadb){return db[_0x1ff0('0x28')]['create'](_0x34cea6['body'],{})[_0x1ff0('0x22')](respondWithResult(_0x23eadb,0xc9))[_0x1ff0('0x40')](handleError(_0x23eadb,null));};exports[_0x1ff0('0x21')]=function(_0x4a381e,_0x3844ce){if(_0x4a381e[_0x1ff0('0x45')]['id']){delete _0x4a381e[_0x1ff0('0x45')]['id'];}return db[_0x1ff0('0x28')][_0x1ff0('0x46')]({'where':{'id':_0x4a381e['params']['id']}})[_0x1ff0('0x22')](handleEntityNotFound(_0x3844ce,null))[_0x1ff0('0x22')](saveUpdates(_0x4a381e[_0x1ff0('0x45')],null))[_0x1ff0('0x22')](respondWithResult(_0x3844ce,null))[_0x1ff0('0x40')](handleError(_0x3844ce,null));};exports['destroy']=function(_0x44774f,_0xf9a7de){return db[_0x1ff0('0x28')][_0x1ff0('0x46')]({'where':{'id':_0x44774f[_0x1ff0('0x42')]['id']}})[_0x1ff0('0x22')](handleEntityNotFound(_0xf9a7de,null))[_0x1ff0('0x22')](removeEntity(_0xf9a7de,null))['catch'](handleError(_0xf9a7de,null));};
\ No newline at end of file
index a502ee9..0cae419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x089f=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','WhatsappApplication','whatsapp_applications','utf8mb4','util'];(function(_0x29982b,_0x594e0){var _0xb1f0a9=function(_0x3d824c){while(--_0x3d824c){_0x29982b['push'](_0x29982b['shift']());}};_0xb1f0a9(++_0x594e0);}(_0x089f,0x1c7));var _0xf089=function(_0x42fe81,_0xca264e){_0x42fe81=_0x42fe81-0x0;var _0x23dbae=_0x089f[_0x42fe81];return _0x23dbae;};'use strict';var _=require('lodash');var util=require(_0xf089('0x0'));var logger=require(_0xf089('0x1'))(_0xf089('0x2'));var moment=require(_0xf089('0x3'));var BPromise=require(_0xf089('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf089('0x5'));var rimraf=require(_0xf089('0x6'));var config=require(_0xf089('0x7'));var attributes=require('./whatsappApplication.attributes');module[_0xf089('0x8')]=function(_0x126d3d,_0x21bce2){return _0x126d3d['define'](_0xf089('0x9'),attributes,{'tableName':_0xf089('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf089('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x7bae=['whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./whatsappApplication.attributes','exports','define','WhatsappApplication'];(function(_0xa65cc,_0x3ffcd5){var _0x22a2d4=function(_0x17fe94){while(--_0x17fe94){_0xa65cc['push'](_0xa65cc['shift']());}};_0x22a2d4(++_0x3ffcd5);}(_0x7bae,0x13b));var _0xe7ba=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0x7bae[_0x55e08b];return _0xd1a7ff;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe7ba('0x0'))(_0xe7ba('0x1'));var moment=require('moment');var BPromise=require(_0xe7ba('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe7ba('0x3'));var rimraf=require(_0xe7ba('0x4'));var config=require(_0xe7ba('0x5'));var attributes=require(_0xe7ba('0x6'));module[_0xe7ba('0x7')]=function(_0xfd3a22,_0x2d31df){return _0xfd3a22[_0xe7ba('0x8')](_0xe7ba('0x9'),attributes,{'tableName':_0xe7ba('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe7ba('0xb'),'collate':_0xe7ba('0xc')});};
\ No newline at end of file
index 2326fdf..1723b78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33c5=['then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x33c5,0xe6));var _0x533c=function(_0x265468,_0xcf7439){_0x265468=_0x265468-0x0;var _0x37d555=_0x33c5[_0x265468];return _0x37d555;};'use strict';var _=require('lodash');var util=require(_0x533c('0x0'));var moment=require(_0x533c('0x1'));var BPromise=require('bluebird');var rs=require(_0x533c('0x2'));var fs=require('fs');var Redis=require(_0x533c('0x3'));var db=require(_0x533c('0x4'))['db'];var utils=require(_0x533c('0x5'));var logger=require(_0x533c('0x6'))('rpc');var config=require(_0x533c('0x7'));var jayson=require(_0x533c('0x8'));var client=jayson[_0x533c('0x9')][_0x533c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x34ca89,_0x1699d5,_0x3a009b){return new BPromise(function(_0x36d74e,_0x2c297c){return client[_0x533c('0xb')](_0x34ca89,_0x3a009b)[_0x533c('0xc')](function(_0x46536d){logger[_0x533c('0xd')](_0x533c('0xe'),_0x1699d5,_0x533c('0xf'));logger[_0x533c('0x10')]('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x1699d5,_0x533c('0xf'),JSON[_0x533c('0x11')](_0x46536d));if(_0x46536d[_0x533c('0x12')]){if(_0x46536d[_0x533c('0x12')][_0x533c('0x13')]===0x1f4){logger[_0x533c('0x12')]('WhatsappApplication,\x20%s,\x20%s',_0x1699d5,_0x46536d[_0x533c('0x12')][_0x533c('0x14')]);return _0x2c297c(_0x46536d[_0x533c('0x12')][_0x533c('0x14')]);}logger[_0x533c('0x12')](_0x533c('0xe'),_0x1699d5,_0x46536d[_0x533c('0x12')][_0x533c('0x14')]);return _0x36d74e(_0x46536d['error'][_0x533c('0x14')]);}else{logger[_0x533c('0xd')](_0x533c('0xe'),_0x1699d5,_0x533c('0xf'));_0x36d74e(_0x46536d['result'][_0x533c('0x14')]);}})[_0x533c('0x15')](function(_0x41e22c){logger[_0x533c('0x12')](_0x533c('0xe'),_0x1699d5,_0x41e22c);_0x2c297c(_0x41e22c);});});}
\ No newline at end of file
+var _0x425d=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x519436,_0xa289be){var _0xa859f5=function(_0x58e85d){while(--_0x58e85d){_0x519436['push'](_0x519436['shift']());}};_0xa859f5(++_0xa289be);}(_0x425d,0x1e0));var _0xd425=function(_0x18f1db,_0x5f545b){_0x18f1db=_0x18f1db-0x0;var _0x481861=_0x425d[_0x18f1db];return _0x481861;};'use strict';var _=require(_0xd425('0x0'));var util=require('util');var moment=require(_0xd425('0x1'));var BPromise=require(_0xd425('0x2'));var rs=require(_0xd425('0x3'));var fs=require('fs');var Redis=require(_0xd425('0x4'));var db=require(_0xd425('0x5'))['db'];var utils=require(_0xd425('0x6'));var logger=require(_0xd425('0x7'))('rpc');var config=require(_0xd425('0x8'));var jayson=require(_0xd425('0x9'));var client=jayson[_0xd425('0xa')][_0xd425('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1d97d9,_0x1d2ed0,_0x50b061){return new BPromise(function(_0xb6ba8e,_0x374c3d){return client[_0xd425('0xc')](_0x1d97d9,_0x50b061)[_0xd425('0xd')](function(_0x2db9da){logger[_0xd425('0xe')](_0xd425('0xf'),_0x1d2ed0,_0xd425('0x10'));logger[_0xd425('0x11')](_0xd425('0x12'),_0x1d2ed0,_0xd425('0x10'),JSON[_0xd425('0x13')](_0x2db9da));if(_0x2db9da[_0xd425('0x14')]){if(_0x2db9da[_0xd425('0x14')][_0xd425('0x15')]===0x1f4){logger[_0xd425('0x14')](_0xd425('0xf'),_0x1d2ed0,_0x2db9da[_0xd425('0x14')][_0xd425('0x16')]);return _0x374c3d(_0x2db9da[_0xd425('0x14')]['message']);}logger[_0xd425('0x14')](_0xd425('0xf'),_0x1d2ed0,_0x2db9da[_0xd425('0x14')]['message']);return _0xb6ba8e(_0x2db9da[_0xd425('0x14')][_0xd425('0x16')]);}else{logger[_0xd425('0xe')](_0xd425('0xf'),_0x1d2ed0,_0xd425('0x10'));_0xb6ba8e(_0x2db9da['result'][_0xd425('0x16')]);}})[_0xd425('0x17')](function(_0x7e267e){logger[_0xd425('0x14')]('WhatsappApplication,\x20%s,\x20%s',_0x1d2ed0,_0x7e267e);_0x374c3d(_0x7e267e);});});}
\ No newline at end of file
index 41d63fc..33b151a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafdd=['download','post','addMessage','whatsappinteraction:addtags','addTags','put','whatsapp','whatsappinteraction:update','update','whatsappinteraction:destroy','delete','/:id/tags','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','/:id/download'];(function(_0x188703,_0x596b26){var _0x1a0c81=function(_0x1cd22d){while(--_0x1cd22d){_0x188703['push'](_0x188703['shift']());}};_0x1a0c81(++_0x596b26);}(_0xafdd,0x19a));var _0xdafd=function(_0x588d7f,_0x129444){_0x588d7f=_0x588d7f-0x0;var _0x447659=_0xafdd[_0x588d7f];return _0x447659;};'use strict';var multer=require(_0xdafd('0x0'));var util=require(_0xdafd('0x1'));var path=require(_0xdafd('0x2'));var timeout=require(_0xdafd('0x3'));var express=require(_0xdafd('0x4'));var router=express[_0xdafd('0x5')]();var fs_extra=require(_0xdafd('0x6'));var auth=require(_0xdafd('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xdafd('0x8'));var controller=require(_0xdafd('0x9'));router[_0xdafd('0xa')]('/',auth[_0xdafd('0xb')](),controller[_0xdafd('0xc')]);router[_0xdafd('0xa')](_0xdafd('0xd'),auth['isAuthenticated'](),controller[_0xdafd('0xe')]);router[_0xdafd('0xa')](_0xdafd('0xf'),auth['isAuthenticated'](),controller[_0xdafd('0x10')]);router[_0xdafd('0xa')](_0xdafd('0x11'),auth[_0xdafd('0xb')](),controller['getMessages']);router[_0xdafd('0xa')](_0xdafd('0x12'),auth[_0xdafd('0xb')](),controller[_0xdafd('0x13')]);router[_0xdafd('0x14')]('/',auth[_0xdafd('0xb')](),controller['create']);router[_0xdafd('0x14')]('/:id/messages',auth['isAuthenticated'](),controller[_0xdafd('0x15')]);router[_0xdafd('0x14')]('/:id/tags',auth[_0xdafd('0xb')](),interaction['tracked']('whatsapp',_0xdafd('0x16')),controller[_0xdafd('0x17')]);router[_0xdafd('0x18')](_0xdafd('0xf'),auth[_0xdafd('0xb')](),interaction['tracked'](_0xdafd('0x19'),_0xdafd('0x1a')),controller[_0xdafd('0x1b')]);router['delete'](_0xdafd('0xf'),auth[_0xdafd('0xb')](),interaction['tracked']('whatsapp',_0xdafd('0x1c')),controller['destroy']);router[_0xdafd('0x1d')](_0xdafd('0x1e'),auth[_0xdafd('0xb')](),controller[_0xdafd('0x1f')]);module[_0xdafd('0x20')]=router;
\ No newline at end of file
+var _0x553a=['/:id/tags','exports','util','connect-timeout','express','Router','../../components/interaction/service','get','/describe','isAuthenticated','show','getMessages','/:id/download','download','create','post','addMessage','tracked','whatsapp','whatsappinteraction:addtags','addTags','/:id','update','whatsappinteraction:destroy','destroy'];(function(_0x2c7313,_0x17ee3d){var _0x472869=function(_0x7e4c8c){while(--_0x7e4c8c){_0x2c7313['push'](_0x2c7313['shift']());}};_0x472869(++_0x17ee3d);}(_0x553a,0x192));var _0xa553=function(_0x47c038,_0x1f7096){_0x47c038=_0x47c038-0x0;var _0x1e0f88=_0x553a[_0x47c038];return _0x1e0f88;};'use strict';var multer=require('multer');var util=require(_0xa553('0x0'));var path=require('path');var timeout=require(_0xa553('0x1'));var express=require(_0xa553('0x2'));var router=express[_0xa553('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa553('0x4'));var config=require('../../config/environment');var controller=require('./whatsappInteraction.controller');router[_0xa553('0x5')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa553('0x5')](_0xa553('0x6'),auth[_0xa553('0x7')](),controller['describe']);router[_0xa553('0x5')]('/:id',auth[_0xa553('0x7')](),controller[_0xa553('0x8')]);router[_0xa553('0x5')]('/:id/messages',auth['isAuthenticated'](),controller[_0xa553('0x9')]);router['get'](_0xa553('0xa'),auth[_0xa553('0x7')](),controller[_0xa553('0xb')]);router['post']('/',auth[_0xa553('0x7')](),controller[_0xa553('0xc')]);router[_0xa553('0xd')]('/:id/messages',auth[_0xa553('0x7')](),controller[_0xa553('0xe')]);router[_0xa553('0xd')]('/:id/tags',auth['isAuthenticated'](),interaction[_0xa553('0xf')](_0xa553('0x10'),_0xa553('0x11')),controller[_0xa553('0x12')]);router['put'](_0xa553('0x13'),auth['isAuthenticated'](),interaction[_0xa553('0xf')]('whatsapp','whatsappinteraction:update'),controller[_0xa553('0x14')]);router['delete'](_0xa553('0x13'),auth[_0xa553('0x7')](),interaction[_0xa553('0xf')]('whatsapp',_0xa553('0x15')),controller[_0xa553('0x16')]);router['delete'](_0xa553('0x17'),auth[_0xa553('0x7')](),controller['removeTags']);module[_0xa553('0x18')]=router;
\ No newline at end of file
index e63c7bc..1bca7eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe75a=['ENUM','out','sequelize','moment','BOOLEAN','DATE','STRING'];(function(_0x47c51d,_0x48aafb){var _0x20182c=function(_0x14023a){while(--_0x14023a){_0x47c51d['push'](_0x47c51d['shift']());}};_0x20182c(++_0x48aafb);}(_0xe75a,0x1de));var _0xae75=function(_0x2d36a6,_0x2f8cd0){_0x2d36a6=_0x2d36a6-0x0;var _0x59cec0=_0xe75a[_0x2d36a6];return _0x59cec0;};'use strict';var Sequelize=require(_0xae75('0x0'));var moment=require(_0xae75('0x1'));module['exports']={'closed':{'type':Sequelize[_0xae75('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xae75('0x3')]},'disposition':{'type':Sequelize[_0xae75('0x4')]},'secondDisposition':{'type':Sequelize[_0xae75('0x4')]},'thirdDisposition':{'type':Sequelize[_0xae75('0x4')]},'note':{'type':Sequelize[_0xae75('0x4')]},'phone':{'type':Sequelize[_0xae75('0x4')]},'read1stAt':{'type':Sequelize[_0xae75('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xae75('0x5')]('in',_0xae75('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xae75('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xdf70=['exports','DATE','STRING','out','ENUM','BOOLEAN','sequelize','moment'];(function(_0x73041,_0x43fc56){var _0x2d60ee=function(_0x1b4043){while(--_0x1b4043){_0x73041['push'](_0x73041['shift']());}};_0x2d60ee(++_0x43fc56);}(_0xdf70,0x86));var _0x0df7=function(_0x1b4002,_0x5b4094){_0x1b4002=_0x1b4002-0x0;var _0x1716f3=_0xdf70[_0x1b4002];return _0x1716f3;};'use strict';var Sequelize=require(_0x0df7('0x0'));var moment=require(_0x0df7('0x1'));module[_0x0df7('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0df7('0x3')]},'disposition':{'type':Sequelize[_0x0df7('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x0df7('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x0df7('0x4')]},'read1stAt':{'type':Sequelize[_0x0df7('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x0df7('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x0df7('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x0df7('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x0df7('0x7')],'defaultValue':![]}};
\ No newline at end of file
index 1a64e61..07213f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe13e=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','status','end','json','offset','undefined','limit','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','Users','map','fullname','TagIds','Tags','split','forEach','catch','index','WhatsappInteraction','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','field','color','from','tools_tags','select','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','users','u.id\x20=\x20ui.UserId','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','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','sqlOperator','conditions','unreadMessages','having','`\x20>\x200','Contact','operator','$substring','value','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','text','start','Tag','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','type','some','compact','WhatsappAccountId','concat','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','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','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','agent','getWhatsappAccounts','isEmpty','i.WhatsappAccountId\x20IS\x20NULL','i.WhatsappAccountId\x20IN\x20?','role','sequelize','toString','count','keyBy','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.*','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','all','rows','show','includeAll','include','options','create','body','params','describe','ids','omit','getMessages','findOne','WhatsappMessage','hasOwnProperty','pick','YYYY-MM-DD\x20HH:mm:ss','spread','findAll','emit','whatsappInteractionTags:save','removeTags','unix','root','server','files','tmp','attachments','join','push','firstName','Attachment','Messages','createdAt','direction','secret','WhatsappAccount','Account','Owner','get','Whatsapp','N.A.','format','closedAt','existsSync','pipe','createWriteStream','basename','out','System','lastName','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','unlinkSync','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce'];(function(_0x38837d,_0x27d645){var _0x3c13d8=function(_0x3560bc){while(--_0x3560bc){_0x38837d['push'](_0x38837d['shift']());}};_0x3c13d8(++_0x27d645);}(_0xe13e,0xde));var _0xee13=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe13e[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xee13('0x0'));var jsonpatch=require(_0xee13('0x1'));var rp=require(_0xee13('0x2'));var moment=require(_0xee13('0x3'));var BPromise=require(_0xee13('0x4'));var Mustache=require(_0xee13('0x5'));var util=require(_0xee13('0x6'));var path=require(_0xee13('0x7'));var sox=require(_0xee13('0x8'));var csv=require(_0xee13('0x9'));var ejs=require(_0xee13('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xee13('0xb'));var squel=require(_0xee13('0xc'));var crypto=require(_0xee13('0xd'));var jsforce=require(_0xee13('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xee13('0x9'));var querystring=require(_0xee13('0xf'));var Papa=require(_0xee13('0x10'));var Redis=require(_0xee13('0x11'));var authService=require(_0xee13('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xee13('0x13'));var pdf=require(_0xee13('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xee13('0x15'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xee13('0x16'));var db=require('../../mysqldb')['db'];config[_0xee13('0x17')]=_[_0xee13('0x18')](config[_0xee13('0x17')],{'host':_0xee13('0x19'),'port':0x18eb});var socket=require(_0xee13('0x1a'))(new Redis(config[_0xee13('0x17')]));require(_0xee13('0x1b'))['register'](socket);function respondWithStatusCode(_0x383ca0,_0x174b02){_0x174b02=_0x174b02||0xcc;return function(_0xafe3d8){if(_0xafe3d8){return _0x383ca0['sendStatus'](_0x174b02);}return _0x383ca0[_0xee13('0x1c')](_0x174b02)[_0xee13('0x1d')]();};}function respondWithResult(_0x4cc57c,_0x3bcd50){_0x3bcd50=_0x3bcd50||0xc8;return function(_0xcd1482){if(_0xcd1482){return _0x4cc57c[_0xee13('0x1c')](_0x3bcd50)[_0xee13('0x1e')](_0xcd1482);}};}function respondWithFilteredResult(_0x2513b2,_0x3a5819){return function(_0xd353d0){if(_0xd353d0){var _0x33bd9c=typeof _0x3a5819[_0xee13('0x1f')]===_0xee13('0x20')&&typeof _0x3a5819['limit']===_0xee13('0x20');var _0x1ab3f8=_0xd353d0['count'];var _0x374f8a=_0x33bd9c?0x0:_0x3a5819['offset'];var _0x17e664=_0x33bd9c?_0xd353d0['count']:_0x3a5819[_0xee13('0x1f')]+_0x3a5819[_0xee13('0x21')];var _0x51e2d0;if(_0x17e664>=_0x1ab3f8){_0x17e664=_0x1ab3f8;_0x51e2d0=0xc8;}else{_0x51e2d0=0xce;}_0x2513b2[_0xee13('0x1c')](_0x51e2d0);return _0x2513b2[_0xee13('0x22')](_0xee13('0x23'),_0x374f8a+'-'+_0x17e664+'/'+_0x1ab3f8)[_0xee13('0x1e')](_0xd353d0);}return null;};}function patchUpdates(_0x3d5354){return function(_0x57a9e2){try{jsonpatch[_0xee13('0x24')](_0x57a9e2,_0x3d5354,!![]);}catch(_0x46bd44){return BPromise['reject'](_0x46bd44);}return _0x57a9e2[_0xee13('0x25')]();};}function saveUpdates(_0x4fe9b8,_0x839455){return function(_0x5170eb){if(_0x5170eb){return _0x5170eb['update'](_0x4fe9b8)[_0xee13('0x26')](function(_0x323e1e){return _0x323e1e;});}return null;};}function removeEntity(_0x49eddd,_0x2b5f64){return function(_0x37cf4b){if(_0x37cf4b){return _0x37cf4b[_0xee13('0x27')]()['then'](function(){_0x49eddd['status'](0xcc)[_0xee13('0x1d')]();});}};}function handleEntityNotFound(_0x2c42fa,_0x257323){return function(_0xa7a06b){if(!_0xa7a06b){_0x2c42fa[_0xee13('0x28')](0x194);}return _0xa7a06b;};}function handleError(_0x1247aa,_0x148477){_0x148477=_0x148477||0x1f4;return function(_0x29ddad){logger[_0xee13('0x29')](_0x29ddad[_0xee13('0x2a')]);if(_0x29ddad[_0xee13('0x2b')]){delete _0x29ddad[_0xee13('0x2b')];}_0x1247aa[_0xee13('0x1c')](_0x148477)[_0xee13('0x2c')](_0x29ddad);};}function getInteractionUsers(_0xb6fc02,_0x122983){return new BPromise(function(_0x4bc1f6,_0x4d9211){try{if(_0x122983[_0xb6fc02['id']]){_0xb6fc02[_0xee13('0x2d')]=_[_0xee13('0x2e')](_0x122983[_0xb6fc02['id']],function(_0x399242){return{'id':_0x399242['id'],'fullname':_0x399242[_0xee13('0x2f')]};});}}catch(_0x577575){_0x4d9211(_0x577575);}_0x4bc1f6(_0xb6fc02);});}function getInteractionTags(_0x306290,_0x43be46){return new BPromise(function(_0x3201db,_0xd052f6){try{if(_0x306290[_0xee13('0x30')]){_0x306290[_0xee13('0x31')]=[];_0x306290[_0xee13('0x30')][_0xee13('0x32')](',')[_0xee13('0x33')](function(_0x4fbc2b){_0x306290[_0xee13('0x31')]['push'](_0x43be46[_0x4fbc2b]);});}delete _0x306290['TagIds'];}catch(_0x2e3e48){_0xd052f6(_0x2e3e48);}_0x3201db(_0x306290);});}function updateWhatsappInteraction(_0x503a80,_0x226c0e,_0x5c593b){return new BPromise(function(_0x4739f0,_0x966052){return getInteractionUsers(_0x503a80,_0x5c593b)[_0xee13('0x26')](function(_0x2e2714){return getInteractionTags(_0x2e2714,_0x226c0e);})[_0xee13('0x26')](function(_0x36e39e){_0x4739f0(_0x36e39e);})[_0xee13('0x34')](function(_0x42ced5){_0x966052(_0x42ced5);});});}exports[_0xee13('0x35')]=function(_0x5cef12,_0x16ab86){var _0x21dde2={},_0xcaec77={},_0x5b080a={'count':0x0,'rows':[]};var _0x6faeb7=_[_0xee13('0x2e')](db[_0xee13('0x36')][_0xee13('0x37')],function(_0x647a47){return{'name':_0x647a47[_0xee13('0x38')],'type':_0x647a47['type'][_0xee13('0x39')]};});_0xcaec77[_0xee13('0x3a')]=_[_0xee13('0x2e')](_0x6faeb7,'name');_0xcaec77[_0xee13('0x3b')]=_[_0xee13('0x3c')](_0x5cef12['query']);_0xcaec77[_0xee13('0x3d')]=_[_0xee13('0x3e')](_0xcaec77[_0xee13('0x3a')],_0xcaec77[_0xee13('0x3b')]);_0x21dde2[_0xee13('0x3f')]=_['intersection'](_0xcaec77['model'],qs[_0xee13('0x40')](_0x5cef12[_0xee13('0x3b')][_0xee13('0x40')]));_0x21dde2[_0xee13('0x3f')]=_0x21dde2[_0xee13('0x3f')][_0xee13('0x41')]?_0x21dde2[_0xee13('0x3f')]:_0xcaec77[_0xee13('0x3a')];if(!_0x5cef12[_0xee13('0x3b')]['hasOwnProperty'](_0xee13('0x42'))){_0x21dde2[_0xee13('0x21')]=qs[_0xee13('0x21')](_0x5cef12[_0xee13('0x3b')]['limit']);_0x21dde2['offset']=qs['offset'](_0x5cef12[_0xee13('0x3b')]['offset']);}_0x21dde2['order']=qs[_0xee13('0x43')](_0x5cef12['query'][_0xee13('0x43')]);_0x21dde2[_0xee13('0x44')]=qs[_0xee13('0x3d')](_['pick'](_0x5cef12[_0xee13('0x3b')],_0xcaec77[_0xee13('0x3d')]),_0x6faeb7);var _0x5ab5b7=[];var _0x51c08b=squel['select']()[_0xee13('0x45')]('id')['field'](_0xee13('0x2b'))[_0xee13('0x45')](_0xee13('0x46'))[_0xee13('0x47')](_0xee13('0x48'));var _0x1642e1=squel[_0xee13('0x49')]()[_0xee13('0x45')](_0xee13('0x4a'))[_0xee13('0x45')](_0xee13('0x4b'))[_0xee13('0x45')](_0xee13('0x4c'))[_0xee13('0x47')](_0xee13('0x4d'),'ui')[_0xee13('0x4e')](_0xee13('0x4f'),'u',_0xee13('0x50'));var _0x10c111=squel[_0xee13('0x49')]()[_0xee13('0x47')](_0xee13('0x51'),'i')[_0xee13('0x4e')](_0xee13('0x52'),'c',_0xee13('0x53'))[_0xee13('0x4e')]('users','o',_0xee13('0x54'))[_0xee13('0x4e')](_0xee13('0x55'),'a',_0xee13('0x56'))[_0xee13('0x4e')]('whatsapp_messages','me','me.WhatsappInteractionId\x20=\x20i.id')['left_join'](_0xee13('0x57'),'it',_0xee13('0x58'))[_0xee13('0x4e')](_0xee13('0x48'),'t',_0xee13('0x59'));var _0x17e7e2=squel[_0xee13('0x5a')]();var _0x4f97dd=[];var _0x362cd9=squel[_0xee13('0x5a')]();var _0x225eda;if(_0x5cef12[_0xee13('0x3b')]['search']){_0x225eda=as[_0xee13('0x5b')](_0x5cef12[_0xee13('0x3b')]['search']);var _0x5c13b7=_0x225eda[_0xee13('0x5c')];for(var _0x4356bf=0x0;_0x4356bf<_0x225eda[_0xee13('0x5d')][_0xee13('0x41')];_0x4356bf++){var _0x1d6157=_0x225eda[_0xee13('0x5d')][_0x4356bf];var _0x39bbf1='i';var _0x17a8ec=_['find'](_0x6faeb7,[_0xee13('0x2b'),_0x1d6157[_0xee13('0x45')]]);if(!_0x17a8ec){switch(_0x1d6157[_0xee13('0x45')]){case _0xee13('0x5e'):if(_0x1d6157['value']==0x1){_0x10c111[_0xee13('0x5f')]('`'+_0x1d6157['field']+'`\x20=\x200');}else{_0x10c111[_0xee13('0x5f')]('`'+_0x1d6157['field']+_0xee13('0x60'));}break;case _0xee13('0x61'):if(_0x1d6157[_0xee13('0x62')]===_0xee13('0x63')){if(_0x1d6157[_0xee13('0x64')]['split']('\x20')[_0xee13('0x41')]>0x1){_0x17e7e2[_0x5c13b7]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xee13('0x65')](_0x1d6157[_0xee13('0x64')]),null);}else{var _0x19d054='%'+_0x1d6157[_0xee13('0x64')]+'%';_0x17e7e2[_0x5c13b7](_0xee13('0x66'),_0x19d054,_0x19d054,_0x19d054);}}else{_0x17a8ec=_[_0xee13('0x67')](_0x6faeb7,[_0xee13('0x2b'),_0xee13('0x68')]);_0x1d6157['field']=_0xee13('0x68');_0x1c30ed=as[_0xee13('0x69')](_0x39bbf1,_0x17a8ec['type'],_0x1d6157);_0x17e7e2[_0x5c13b7](_0x1c30ed[_0xee13('0x6a')],_0x1c30ed[_0xee13('0x64')][_0xee13('0x6b')],_0x1c30ed[_0xee13('0x64')]['end']);}break;case _0xee13('0x6c'):var _0x2aa091=_0x1d6157[_0xee13('0x64')][_0xee13('0x32')](',')[_0xee13('0x2e')](function(_0x11f747){return Number(_0x11f747);});_0x2aa091['forEach'](function(_0x3c8713){_0x362cd9['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x3c8713+',%');});_0x4f97dd=_[_0xee13('0x6d')](_0x4f97dd,_0x2aa091);break;case _0xee13('0x6e'):if(_0x1d6157['operator']===_0xee13('0x63')){_0x17e7e2[_0x5c13b7](_0xee13('0x6f'),'%'+_0x1d6157[_0xee13('0x64')]+'%',null);}else{_0x17a8ec=_['find'](_0x6faeb7,[_0xee13('0x2b'),'UserId']);_0x1d6157[_0xee13('0x45')]='UserId';_0x1c30ed=as[_0xee13('0x69')](_0x39bbf1,_0x17a8ec[_0xee13('0x70')],_0x1d6157);_0x17e7e2[_0x5c13b7](_0x1c30ed[_0xee13('0x6a')],_0x1c30ed[_0xee13('0x64')][_0xee13('0x6b')],_0x1c30ed['value'][_0xee13('0x1d')]);}break;case'body':_0x1c30ed=as[_0xee13('0x69')]('me',null,_0x1d6157);_0x17e7e2[_0x5c13b7](_0x1c30ed[_0xee13('0x6a')],_0x1c30ed[_0xee13('0x64')]['start'],_0x1c30ed['value'][_0xee13('0x1d')]);break;}}else{var _0x1c30ed=as[_0xee13('0x69')](_0x39bbf1,_0x17a8ec[_0xee13('0x70')],_0x1d6157);_0x17e7e2[_0x5c13b7](_0x1c30ed[_0xee13('0x6a')],_0x1c30ed[_0xee13('0x64')][_0xee13('0x6b')],_0x1c30ed['value'][_0xee13('0x1d')]);}}}else{var _0x165a88=_(_0x5cef12[_0xee13('0x3b')])[_0xee13('0x3c')]()[_0xee13('0x2e')](function(_0x25ef35){return _[_0xee13('0x71')](_0x6faeb7,[_0xee13('0x2b'),_0x25ef35])?_0x25ef35:undefined;})[_0xee13('0x72')]()[_0xee13('0x64')]();if(!_['isEmpty'](_0x165a88)){_0x165a88[_0xee13('0x33')](function(_0x16a56f){if(_0x16a56f===_0xee13('0x73')){_0x10c111[_0xee13('0x44')]('i.WhatsappAccountId\x20IN\x20?',[][_0xee13('0x74')](_0x5cef12[_0xee13('0x3b')][_0x16a56f]));}else if(_0x16a56f==='createdAt'){var _0x4ae336=JSON[_0xee13('0x75')](_0x5cef12['query'][_0x16a56f])[_0xee13('0x76')];var _0x3395d0=JSON[_0xee13('0x75')](_0x5cef12['query'][_0x16a56f])['$lte'];_0x10c111[_0xee13('0x44')](_0xee13('0x77'),_0x4ae336,_0x3395d0);}else{if(_0x5cef12[_0xee13('0x3b')][_0x16a56f]===_0xee13('0x78')){_0x10c111[_0xee13('0x44')]('i.'+_0x16a56f+'\x20IS\x20NULL');}else{_0x10c111[_0xee13('0x44')]('i.'+_0x16a56f+_0xee13('0x79'),_0x5cef12[_0xee13('0x3b')][_0x16a56f]);}}});}if(_0x5cef12[_0xee13('0x3b')][_0xee13('0x7a')]){if(_0x5cef12[_0xee13('0x3b')][_0xee13('0x7a')]==0x1){_0x10c111[_0xee13('0x5f')](_0xee13('0x7b'));}else{_0x10c111[_0xee13('0x5f')](_0xee13('0x7c'));}}if(_0x5cef12['query']['tag']){_0x4f97dd=_[_0xee13('0x7d')](_0x5cef12[_0xee13('0x3b')][_0xee13('0x7e')])?_0x5cef12['query'][_0xee13('0x7e')]:new Array(_0x5cef12[_0xee13('0x3b')][_0xee13('0x7e')]);_0x4f97dd['forEach'](function(_0x58bb5b){_0x362cd9['or'](_0xee13('0x7f'),'%,'+_0x58bb5b+',%');});}if(_0x5cef12['query'][_0xee13('0x80')]){var _0x549c7e=_0x5cef12[_0xee13('0x3b')][_0xee13('0x80')]['replace']('\x5c','\x5c\x5c')[_0xee13('0x81')](/'/g,'\x27\x27');if(qs[_0xee13('0x82')](_0x549c7e)){_0x17e7e2['or'](_0xee13('0x83'),_0x549c7e+'%')['or'](_0xee13('0x84'),_0x549c7e+'%');}else{_0x17e7e2['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xee13('0x65')](_0x549c7e))['or'](_0xee13('0x85'),_0x549c7e+'%');}}}_0x10c111[_0xee13('0x44')](_0x17e7e2);_0x10c111['group'](_0xee13('0x86'));var _0x394e05={'type':db[_0xee13('0x87')][_0xee13('0x88')][_0xee13('0x89')],'raw':!![]};var _0x4a57bb=_0x10c111[_0xee13('0x8a')]();_0x4a57bb[_0xee13('0x45')](_0xee13('0x86'));_0x4a57bb['field'](_0xee13('0x8b'),_0xee13('0x5e'));if(_0x21dde2[_0xee13('0x8c')]){_0x21dde2[_0xee13('0x8c')]['forEach'](function(_0xad5e8f){var _0x24f2b8=_0xad5e8f[0x0]===_0xee13('0x8d')?_0xad5e8f[0x0]:'i.'+_0xad5e8f[0x0];_0x10c111[_0xee13('0x8c')](_0x24f2b8,_0xad5e8f[0x1]===_0xee13('0x8e')?![]:!![]);});}if(!_['isEmpty'](_0x4f97dd)){_0x10c111[_0xee13('0x5f')](_0x362cd9);_0x4a57bb['where'](_0xee13('0x8f'),_0x4f97dd);}BPromise[_0xee13('0x90')]()[_0xee13('0x26')](function(){if(!_0x225eda){if(_0x5cef12[_0xee13('0x3b')]['WhatsappAccountId'])return;_0x4a57bb[_0xee13('0x44')](_0xee13('0x91'));_0x10c111[_0xee13('0x44')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x5cef12[_0xee13('0x92')]['role']!==_0xee13('0x93'))return;return _0x5cef12[_0xee13('0x92')][_0xee13('0x94')]({'attributes':['id'],'raw':!![]})[_0xee13('0x26')](function(_0x120c53){if(_[_0xee13('0x95')](_0x120c53)){_0x4a57bb[_0xee13('0x44')]('i.WhatsappAccountId\x20IS\x20NULL');_0x10c111[_0xee13('0x44')](_0xee13('0x96'));}else{_0x4a57bb['where'](_0xee13('0x97'),_[_0xee13('0x2e')](_0x120c53,'id'));_0x10c111['where'](_0xee13('0x97'),_['map'](_0x120c53,'id'));}});})['then'](function(){if(_0x5cef12[_0xee13('0x92')][_0xee13('0x98')]==='agent'&&!_0x225eda&&!_0x5cef12['query'][_0xee13('0x73')])return[];return db[_0xee13('0x99')][_0xee13('0x3b')](_0x4a57bb[_0xee13('0x9a')](),_0x394e05);})['then'](function(_0x328ce5){_0x5b080a[_0xee13('0x9b')]=_0x328ce5[_0xee13('0x41')];if(_0x5b080a['count']===0x0)return[];return db[_0xee13('0x99')]['query'](_0x51c08b['toString'](),_0x394e05)[_0xee13('0x26')](function(_0x3abb70){_0x5ab5b7=_[_0xee13('0x9c')](_0x3abb70,'id');_0x394e05=_[_0xee13('0x9d')](_0x394e05,{'model':db[_0xee13('0x36')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5cef12[_0xee13('0x3b')]['fields']){_0x21dde2[_0xee13('0x3f')][_0xee13('0x33')](function(_0x232492){_0x10c111[_0xee13('0x45')]('i.'+_0x232492);});}else{_0x10c111[_0xee13('0x45')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xee13('0x5e'));_0x10c111['field']('a.key',_0xee13('0x9e'));_0x10c111[_0xee13('0x45')](_0xee13('0x9f'),_0xee13('0xa0'));_0x10c111['field'](_0xee13('0xa1'),_0xee13('0x8d'));_0x10c111[_0xee13('0x45')](_0xee13('0xa2'));_0x10c111['field']('c.firstName',_0xee13('0xa3'));_0x10c111[_0xee13('0x45')](_0xee13('0xa4'),'Contact.lastName');_0x10c111[_0xee13('0x45')](_0xee13('0xa5'),_0xee13('0xa6'));_0x10c111[_0xee13('0x45')](_0xee13('0xa7'),_0xee13('0xa8'));_0x10c111[_0xee13('0x45')](_0xee13('0xa9'),_0xee13('0xaa'));_0x10c111[_0xee13('0x45')](_0xee13('0xab'),_0xee13('0xac'));_0x10c111['field'](_0xee13('0xad'),'Owner.fullname');_0x10c111[_0xee13('0x45')](_0xee13('0xae'),'Owner.internal');_0x10c111['field'](_0xee13('0xaf'),'TagIds');}if(_0x21dde2[_0xee13('0x21')])_0x10c111[_0xee13('0x21')](_0x21dde2[_0xee13('0x21')]);if(_0x21dde2[_0xee13('0x1f')])_0x10c111['offset'](_0x21dde2[_0xee13('0x1f')]);return db[_0xee13('0x99')][_0xee13('0x3b')](_0x10c111[_0xee13('0x9a')](),_0x394e05);})[_0xee13('0x26')](function(_0x482fc0){if(_0x482fc0[_0xee13('0x41')]>0x0)_0x1642e1[_0xee13('0x44')](_0xee13('0xb0'),_[_0xee13('0x2e')](_0x482fc0,'id'));return db['sequelize']['query'](_0x1642e1[_0xee13('0x9a')](),_0x394e05)[_0xee13('0x26')](function(_0x28c93b){var _0x5997db=_[_0xee13('0xb1')](_0x28c93b,_0xee13('0xb2'));var _0xdd5d06=[];_0x482fc0[_0xee13('0x33')](function(_0x2eb74a){_0xdd5d06['push'](updateWhatsappInteraction(_0x2eb74a,_0x5ab5b7,_0x5997db));});return BPromise[_0xee13('0xb3')](_0xdd5d06);});});})[_0xee13('0x26')](function(_0x1bd189){_0x5b080a[_0xee13('0xb4')]=_0x1bd189;return _0x5b080a;})[_0xee13('0x26')](respondWithFilteredResult(_0x16ab86,_0x21dde2))[_0xee13('0x34')](handleError(_0x16ab86,null));};exports[_0xee13('0xb5')]=function(_0xb71f7,_0x33f1d6){var _0x2133cb={'raw':![],'where':{'id':_0xb71f7['params']['id']}},_0x4344d2={};_0x4344d2[_0xee13('0x3a')]=_[_0xee13('0x3c')](db[_0xee13('0x36')][_0xee13('0x37')]);_0x4344d2[_0xee13('0x3b')]=_[_0xee13('0x3c')](_0xb71f7['query']);_0x4344d2[_0xee13('0x3d')]=_[_0xee13('0x3e')](_0x4344d2[_0xee13('0x3a')],_0x4344d2[_0xee13('0x3b')]);_0x2133cb[_0xee13('0x3f')]=_['intersection'](_0x4344d2['model'],qs[_0xee13('0x40')](_0xb71f7[_0xee13('0x3b')][_0xee13('0x40')]));_0x2133cb[_0xee13('0x3f')]=_0x2133cb[_0xee13('0x3f')][_0xee13('0x41')]?_0x2133cb[_0xee13('0x3f')]:_0x4344d2[_0xee13('0x3a')];if(_0xb71f7['query'][_0xee13('0xb6')]){_0x2133cb[_0xee13('0xb7')]=[{'all':!![]}];}_0x2133cb=_[_0xee13('0x9d')]({},_0x2133cb,_0xb71f7[_0xee13('0xb8')]);return db[_0xee13('0x36')][_0xee13('0x67')](_0x2133cb)[_0xee13('0x26')](handleEntityNotFound(_0x33f1d6,null))[_0xee13('0x26')](respondWithResult(_0x33f1d6,null))[_0xee13('0x34')](handleError(_0x33f1d6,null));};exports[_0xee13('0xb9')]=function(_0x376461,_0x44008c){return db[_0xee13('0x36')][_0xee13('0xb9')](_0x376461[_0xee13('0xba')],{})[_0xee13('0x26')](respondWithResult(_0x44008c,0xc9))[_0xee13('0x34')](handleError(_0x44008c,null));};exports['update']=function(_0x13a3de,_0x17527a){if(_0x13a3de[_0xee13('0xba')]['id']){delete _0x13a3de[_0xee13('0xba')]['id'];}return db[_0xee13('0x36')][_0xee13('0x67')]({'where':{'id':_0x13a3de[_0xee13('0xbb')]['id']}})[_0xee13('0x26')](handleEntityNotFound(_0x17527a,null))[_0xee13('0x26')](saveUpdates(_0x13a3de[_0xee13('0xba')],null))[_0xee13('0x26')](respondWithResult(_0x17527a,null))[_0xee13('0x34')](handleError(_0x17527a,null));};exports['destroy']=function(_0x1b75de,_0x560c4b){return db[_0xee13('0x36')][_0xee13('0x67')]({'where':{'id':_0x1b75de[_0xee13('0xbb')]['id']}})[_0xee13('0x26')](handleEntityNotFound(_0x560c4b,null))[_0xee13('0x26')](removeEntity(_0x560c4b,null))[_0xee13('0x34')](handleError(_0x560c4b,null));};exports[_0xee13('0xbc')]=function(_0x38d3c5,_0x423e64){return db[_0xee13('0x36')][_0xee13('0xbc')]()[_0xee13('0x26')](respondWithResult(_0x423e64,null))['catch'](handleError(_0x423e64,null));};exports['addMessage']=function(_0x2a5aff,_0x50b8b1,_0x5cd5dc){return db['WhatsappMessage'][_0xee13('0x67')]({'where':{'id':_0x2a5aff[_0xee13('0xbb')]['id']}})[_0xee13('0x26')](handleEntityNotFound(_0x50b8b1,null))[_0xee13('0x26')](function(_0x25e8fd){if(_0x25e8fd){return _0x25e8fd['addMessage'](_0x2a5aff[_0xee13('0xba')][_0xee13('0xbd')],_[_0xee13('0xbe')](_0x2a5aff['body'],[_0xee13('0xbd'),'id'])||{});}})['then'](respondWithResult(_0x50b8b1,null))['catch'](handleError(_0x50b8b1,null));};exports[_0xee13('0xbf')]=function(_0x1f01c2,_0x4feeb9,_0x3c4714){var _0x127f7c={'raw':![],'where':{}};var _0x49ef27={};var _0x286cc1={'count':0x0,'rows':[]};return db[_0xee13('0x36')][_0xee13('0xc0')]({'where':{'id':_0x1f01c2[_0xee13('0xbb')]['id']}})[_0xee13('0x26')](handleEntityNotFound(_0x4feeb9,null))[_0xee13('0x26')](function(_0x27a3ef){if(_0x27a3ef){_0x49ef27['model']=_[_0xee13('0x3c')](db[_0xee13('0xc1')]['rawAttributes']);_0x49ef27['query']=_['keys'](_0x1f01c2['query']);_0x49ef27[_0xee13('0x3d')]=_[_0xee13('0x3e')](_0x49ef27['model'],_0x49ef27[_0xee13('0x3b')]);_0x127f7c[_0xee13('0x3f')]=_[_0xee13('0x3e')](_0x49ef27[_0xee13('0x3a')],qs[_0xee13('0x40')](_0x1f01c2[_0xee13('0x3b')][_0xee13('0x40')]));_0x127f7c[_0xee13('0x3f')]=_0x127f7c['attributes'][_0xee13('0x41')]?_0x127f7c['attributes']:_0x49ef27[_0xee13('0x3a')];if(!_0x1f01c2['query'][_0xee13('0xc2')](_0xee13('0x42'))){_0x127f7c[_0xee13('0x21')]=qs[_0xee13('0x21')](_0x1f01c2[_0xee13('0x3b')]['limit']);_0x127f7c['offset']=qs[_0xee13('0x1f')](_0x1f01c2[_0xee13('0x3b')]['offset']);}_0x127f7c[_0xee13('0x8c')]=qs[_0xee13('0x43')](_0x1f01c2['query']['sort']);_0x127f7c[_0xee13('0x44')]=qs[_0xee13('0x3d')](_[_0xee13('0xc3')](_0x1f01c2[_0xee13('0x3b')],_0x49ef27[_0xee13('0x3d')]));_0x127f7c[_0xee13('0x44')][_0xee13('0xb2')]=_0x27a3ef['id'];if(_0x1f01c2[_0xee13('0x3b')][_0xee13('0x80')]){_0x127f7c[_0xee13('0x44')]=_['merge'](_0x127f7c[_0xee13('0x44')],{'$or':_[_0xee13('0x2e')](_0x127f7c[_0xee13('0x3f')],function(_0x5db012){var _0x572272={};_0x572272[_0x5db012]={'$like':'%'+_0x1f01c2[_0xee13('0x3b')][_0xee13('0x80')]+'%'};return _0x572272;})});}if(_0x1f01c2[_0xee13('0x3b')][_0xee13('0x76')]){var _0x26a86e=_0x1f01c2['query'][_0xee13('0x76')]['split'](',');var _0x59bc41={};_0x59bc41[_0x26a86e[0x0]]={'$gte':moment(_0x26a86e[0x1])['format'](_0xee13('0xc4'))};_0x127f7c[_0xee13('0x44')]=_[_0xee13('0x9d')](_0x127f7c[_0xee13('0x44')],_0x59bc41);}_0x127f7c=_[_0xee13('0x9d')]({},_0x127f7c,_0x1f01c2[_0xee13('0xb8')]);return db['WhatsappMessage']['count']({'where':_0x127f7c['where']})[_0xee13('0x26')](function(_0x5a2545){_0x286cc1['count']=_0x5a2545;if(_0x1f01c2['query'][_0xee13('0xb6')]){_0x127f7c['include']=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x127f7c);})[_0xee13('0x26')](function(_0x698777){_0x286cc1[_0xee13('0xb4')]=_0x698777;return _0x286cc1;});}})[_0xee13('0x26')](respondWithFilteredResult(_0x4feeb9,_0x127f7c))[_0xee13('0x34')](handleError(_0x4feeb9,null));};exports['addTags']=function(_0x61cb59,_0x386f5e,_0x2efb52){return db[_0xee13('0x36')][_0xee13('0x67')]({'where':{'id':_0x61cb59[_0xee13('0xbb')]['id']}})[_0xee13('0x26')](handleEntityNotFound(_0x386f5e,null))[_0xee13('0x26')](function(_0x35cc97){if(_0x35cc97){return _0x35cc97['setTags'](_0x61cb59[_0xee13('0xba')][_0xee13('0xbd')],_[_0xee13('0xbe')](_0x61cb59[_0xee13('0xba')],[_0xee13('0xbd'),'id'])||{})[_0xee13('0xc5')](function(){return db[_0xee13('0x6c')][_0xee13('0xc6')]({'attributes':['id','name',_0xee13('0x46')],'where':{'id':_0x61cb59[_0xee13('0xba')][_0xee13('0xbd')]}});})[_0xee13('0x26')](function(_0x3fb4b5){socket[_0xee13('0xc7')](_0xee13('0xc8'),{'id':Number(_0x61cb59[_0xee13('0xbb')]['id']),'tags':_0x3fb4b5||[]});return{'id':Number(_0x61cb59[_0xee13('0xbb')]['id']),'tags':_0x3fb4b5||[]};});}})[_0xee13('0x26')](respondWithResult(_0x386f5e,null))[_0xee13('0x34')](handleError(_0x386f5e,null));};exports[_0xee13('0xc9')]=function(_0x203aec,_0x56e001,_0x58aacc){return db[_0xee13('0x36')][_0xee13('0x67')]({'where':{'id':_0x203aec[_0xee13('0xbb')]['id']}})[_0xee13('0x26')](handleEntityNotFound(_0x56e001,null))[_0xee13('0x26')](function(_0x724c4b){if(_0x724c4b){return _0x724c4b['removeTags'](_0x203aec[_0xee13('0x3b')]['ids']);}})[_0xee13('0x26')](respondWithStatusCode(_0x56e001,null))[_0xee13('0x34')](handleError(_0x56e001,null));};exports['download']=function(_0x5a0940,_0x5e0d01){var _0x1a4f14=moment()[_0xee13('0xca')]()[_0xee13('0x9a')]();var _0x3d85ed=path['join'](config[_0xee13('0xcb')],_0xee13('0xcc'),_0xee13('0xcd'),_0xee13('0xce'));var _0x4e72af=path['join'](config[_0xee13('0xcb')],_0xee13('0xcc'),_0xee13('0xcd'),_0xee13('0xcf'));var _0x3c73d7=path[_0xee13('0xd0')](_0x3d85ed,_0x1a4f14);var _0x47b0cc=util['format']('transcript-%d-%s.zip',_0x5a0940[_0xee13('0xbb')]['id'],_0x1a4f14);var _0x4d7054=path[_0xee13('0xd0')](_0x3d85ed,_0x47b0cc);var _0x3d9f16=[];_0x3d9f16[_0xee13('0xd1')]({'model':db[_0xee13('0x6e')],'as':'User','attributes':['id',_0xee13('0x2f')],'raw':!![]});_0x3d9f16[_0xee13('0xd1')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0xee13('0xd2'),'lastName'],'raw':!![]});if(_0x5a0940['query'][_0xee13('0xcf')]){_0x3d9f16['push']({'model':db[_0xee13('0xd3')],'as':_0xee13('0xd3'),'raw':!![]});}var _0x16c1f3=[{'model':db[_0xee13('0xc1')],'as':_0xee13('0xd4'),'attributes':['id',_0xee13('0xba'),_0xee13('0xd5'),_0xee13('0xd6'),_0xee13('0xd7'),_0xee13('0x7a')],'include':_0x3d9f16}];_0x16c1f3[_0xee13('0xd1')]({'model':db[_0xee13('0xd8')],'as':_0xee13('0xd9'),'attributes':['id',_0xee13('0x2b')]});_0x16c1f3[_0xee13('0xd1')]({'model':db[_0xee13('0x6e')],'as':_0xee13('0xda'),'attributes':['id',_0xee13('0x2f')]});return db[_0xee13('0x36')][_0xee13('0x67')]({'where':{'id':_0x5a0940[_0xee13('0xbb')]['id']},'include':_0x16c1f3})[_0xee13('0x26')](handleEntityNotFound(_0x5e0d01,null))[_0xee13('0x26')](function(_0x13e57f){if(_0x13e57f){var _0x4e671d=_0x13e57f[_0xee13('0xdb')]({'plain':!![]});fs['mkdirSync'](_0x3c73d7);var _0x26590c={'channel':_0xee13('0xdc'),'account':_0x4e671d[_0xee13('0xd9')][_0xee13('0x2b')],'agent':_0x4e671d[_0xee13('0xda')]?_0x4e671d['Owner']['fullname']:_0xee13('0xdd'),'createdAt':moment(_0x4e671d['createdAt'])[_0xee13('0xde')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x4e671d['closed']?moment(_0x4e671d[_0xee13('0xdf')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xee13('0x9a')]():'','disposition':_0x4e671d['disposition'],'messages':_(_0x4e671d[_0xee13('0xd4')])[_0xee13('0x80')]({'secret':![]})[_0xee13('0x2e')](function(_0x5ad06c){if(_0x5ad06c[_0xee13('0xd3')]){var _0x2237d3=path[_0xee13('0xd0')](_0x4e72af,_0x5ad06c[_0xee13('0xd3')]['basename']);if(fs[_0xee13('0xe0')](_0x2237d3)){fs['createReadStream'](_0x2237d3)[_0xee13('0xe1')](fs[_0xee13('0xe2')](path['join'](_0x3c73d7,_0x5ad06c[_0xee13('0xd3')][_0xee13('0xe3')])));}}return{'date':moment(_0x5ad06c[_0xee13('0xd5')])[_0xee13('0xde')](_0xee13('0xc4'))[_0xee13('0x9a')](),'sender':_0x5ad06c['direction']===_0xee13('0xe4')?_0x5ad06c['User']?_0x5ad06c[_0xee13('0x6e')][_0xee13('0x2f')]:_0xee13('0xe5'):_0x5ad06c[_0xee13('0x61')][_0xee13('0xd2')]+(_0x5ad06c[_0xee13('0x61')]['lastName']?'\x20'+_0x5ad06c[_0xee13('0x61')][_0xee13('0xe6')]:''),'body':_0x5ad06c[_0xee13('0xd3')]?_0x5ad06c['Attachment'][_0xee13('0xe3')]:_0x5ad06c[_0xee13('0xba')],'direction':_0x5ad06c[_0xee13('0xd6')]===_0xee13('0xe4')?'A':'C','secret':_0x5ad06c['secret'],'read':_0x5ad06c['read'],'attachment':_0x5ad06c[_0xee13('0xd3')]};})[_0xee13('0x64')]()};return ejs['renderFile'](path[_0xee13('0xd0')](config[_0xee13('0xcb')],_0xee13('0xcc'),_0xee13('0xe7'),_0xee13('0xe8')),{'interaction':_0x26590c})[_0xee13('0x26')](function(_0x5f4837){var _0x2c9c03=path[_0xee13('0xd0')](_0x3c73d7,_0xee13('0xe9')+_0x4e671d['id']+'-'+_0x1a4f14+'.pdf');var _0x513ac2={'path':_0x2c9c03,'channel':_0xee13('0xdc'),'interactionId':_0x4e671d['id']};return pdf[_0xee13('0xea')](_0x5f4837,_0x513ac2);})[_0xee13('0x26')](function(){return new BPromise(function(_0x186f35,_0x3c7c25){zipdir(_0x3c73d7,{'saveTo':_0x4d7054},function(_0x2aa579,_0x5e276c){if(_0x2aa579)return _0x3c7c25(_0x2aa579);return _0x186f35(_0x5e276c);});})[_0xee13('0x26')](function(){return new BPromise(function(_0xcbdb34,_0x2a5f2c){rimraf(_0x3c73d7,function(_0x4c75b2){if(_0x4c75b2)_0x2a5f2c(_0x4c75b2);return _0xcbdb34();});});})[_0xee13('0x26')](function(){return _0x5e0d01['download'](_0x4d7054,_0x47b0cc,function(_0x5b62a6){if(_0x5b62a6){console[_0xee13('0xeb')]('err',_0x5b62a6);}else{fs[_0xee13('0xec')](_0x4d7054);}});});});}else{return _0x5e0d01[_0xee13('0x28')](0xc8);}})[_0xee13('0x34')](handleError(_0x5e0d01,null));};
\ No newline at end of file
+var _0xc31d=['role','sequelize','toString','merge','a.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','Contact.firstName','c.lastName','Contact.email','c.phone','Contact.phone','c.mobile','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','all','catch','includeAll','include','options','params','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','rows','setTags','spread','color','download','unix','server','files','tmp','join','attachments','fullname','push','CmContact','firstName','lastName','Attachment','Messages','direction','secret','Account','Owner','get','mkdirSync','Whatsapp','closed','closedAt','disposition','basename','existsSync','createReadStream','pipe','out','views','transcript-','.pdf','createPdfFromHTML','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','update','then','destroy','end','error','name','send','Users','map','TagIds','Tags','split','index','WhatsappInteraction','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','field','tools_tags','select','u.id','u.fullname','ui.WhatsappInteractionId','from','left_join','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','expr','search','sqlOperator','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','find','ContactId','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','UserId','buildExpression','body','text','compact','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','i.phone\x20LIKE\x20?','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','Sequelize','QueryTypes','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','user'];(function(_0x3c3acd,_0x39cdb3){var _0x51c331=function(_0x15a83d){while(--_0x15a83d){_0x3c3acd['push'](_0x3c3acd['shift']());}};_0x51c331(++_0x39cdb3);}(_0xc31d,0x124));var _0xdc31=function(_0x42ca15,_0x193ccb){_0x42ca15=_0x42ca15-0x0;var _0x1c6ded=_0xc31d[_0x42ca15];return _0x1c6ded;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xdc31('0x0'));var jsonpatch=require(_0xdc31('0x1'));var rp=require('request-promise');var moment=require(_0xdc31('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xdc31('0x3'));var util=require(_0xdc31('0x4'));var path=require(_0xdc31('0x5'));var sox=require(_0xdc31('0x6'));var csv=require(_0xdc31('0x7'));var ejs=require(_0xdc31('0x8'));var fs=require('fs');var fs_extra=require(_0xdc31('0x9'));var _=require(_0xdc31('0xa'));var squel=require(_0xdc31('0xb'));var crypto=require(_0xdc31('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xdc31('0xd'));var toCsv=require(_0xdc31('0x7'));var querystring=require(_0xdc31('0xe'));var Papa=require(_0xdc31('0xf'));var Redis=require('ioredis');var authService=require(_0xdc31('0x10'));var qs=require(_0xdc31('0x11'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xdc31('0x12'));var hardwareService=require(_0xdc31('0x13'));var logger=require('../../config/logger')(_0xdc31('0x14'));var utils=require(_0xdc31('0x15'));var config=require(_0xdc31('0x16'));var licenseUtil=require(_0xdc31('0x17'));var db=require('../../mysqldb')['db'];config[_0xdc31('0x18')]=_['defaults'](config[_0xdc31('0x18')],{'host':_0xdc31('0x19'),'port':0x18eb});var socket=require(_0xdc31('0x1a'))(new Redis(config[_0xdc31('0x18')]));require(_0xdc31('0x1b'))[_0xdc31('0x1c')](socket);function respondWithStatusCode(_0x1004fd,_0x952608){_0x952608=_0x952608||0xcc;return function(_0x70b4a6){if(_0x70b4a6){return _0x1004fd[_0xdc31('0x1d')](_0x952608);}return _0x1004fd['status'](_0x952608)['end']();};}function respondWithResult(_0x4cccf5,_0x206de7){_0x206de7=_0x206de7||0xc8;return function(_0x247678){if(_0x247678){return _0x4cccf5[_0xdc31('0x1e')](_0x206de7)[_0xdc31('0x1f')](_0x247678);}};}function respondWithFilteredResult(_0x47a414,_0x23a80d){return function(_0x2d72e1){if(_0x2d72e1){var _0x143904=typeof _0x23a80d[_0xdc31('0x20')]==='undefined'&&typeof _0x23a80d[_0xdc31('0x21')]===_0xdc31('0x22');var _0x37a4b1=_0x2d72e1[_0xdc31('0x23')];var _0x277efc=_0x143904?0x0:_0x23a80d[_0xdc31('0x20')];var _0x560eed=_0x143904?_0x2d72e1[_0xdc31('0x23')]:_0x23a80d['offset']+_0x23a80d['limit'];var _0x210c10;if(_0x560eed>=_0x37a4b1){_0x560eed=_0x37a4b1;_0x210c10=0xc8;}else{_0x210c10=0xce;}_0x47a414['status'](_0x210c10);return _0x47a414[_0xdc31('0x24')](_0xdc31('0x25'),_0x277efc+'-'+_0x560eed+'/'+_0x37a4b1)[_0xdc31('0x1f')](_0x2d72e1);}return null;};}function patchUpdates(_0x1ea5b8){return function(_0xd91890){try{jsonpatch[_0xdc31('0x26')](_0xd91890,_0x1ea5b8,!![]);}catch(_0x476960){return BPromise['reject'](_0x476960);}return _0xd91890['save']();};}function saveUpdates(_0x5f59fb,_0x2363c9){return function(_0x427ee8){if(_0x427ee8){return _0x427ee8[_0xdc31('0x27')](_0x5f59fb)[_0xdc31('0x28')](function(_0x12f8b6){return _0x12f8b6;});}return null;};}function removeEntity(_0x6347aa,_0x568670){return function(_0x393b2b){if(_0x393b2b){return _0x393b2b[_0xdc31('0x29')]()[_0xdc31('0x28')](function(){_0x6347aa[_0xdc31('0x1e')](0xcc)[_0xdc31('0x2a')]();});}};}function handleEntityNotFound(_0x2d8af4,_0x1cb85e){return function(_0x2a6359){if(!_0x2a6359){_0x2d8af4[_0xdc31('0x1d')](0x194);}return _0x2a6359;};}function handleError(_0x53f359,_0x452cd8){_0x452cd8=_0x452cd8||0x1f4;return function(_0xef65ce){logger[_0xdc31('0x2b')](_0xef65ce['stack']);if(_0xef65ce[_0xdc31('0x2c')]){delete _0xef65ce[_0xdc31('0x2c')];}_0x53f359[_0xdc31('0x1e')](_0x452cd8)[_0xdc31('0x2d')](_0xef65ce);};}function getInteractionUsers(_0x5c8046,_0x279005){return new BPromise(function(_0x2977c7,_0x1e285e){try{if(_0x279005[_0x5c8046['id']]){_0x5c8046[_0xdc31('0x2e')]=_[_0xdc31('0x2f')](_0x279005[_0x5c8046['id']],function(_0x683949){return{'id':_0x683949['id'],'fullname':_0x683949['fullname']};});}}catch(_0xa2d84d){_0x1e285e(_0xa2d84d);}_0x2977c7(_0x5c8046);});}function getInteractionTags(_0x2da11b,_0x1fb81a){return new BPromise(function(_0x1b870d,_0x44c1cc){try{if(_0x2da11b[_0xdc31('0x30')]){_0x2da11b[_0xdc31('0x31')]=[];_0x2da11b[_0xdc31('0x30')][_0xdc31('0x32')](',')['forEach'](function(_0x9251a8){_0x2da11b[_0xdc31('0x31')]['push'](_0x1fb81a[_0x9251a8]);});}delete _0x2da11b['TagIds'];}catch(_0x4fe41b){_0x44c1cc(_0x4fe41b);}_0x1b870d(_0x2da11b);});}function updateWhatsappInteraction(_0x4d1238,_0x6f1d46,_0x5a2094){return new BPromise(function(_0x474ff7,_0x56ff59){return getInteractionUsers(_0x4d1238,_0x5a2094)[_0xdc31('0x28')](function(_0x97f47d){return getInteractionTags(_0x97f47d,_0x6f1d46);})[_0xdc31('0x28')](function(_0x5b8101){_0x474ff7(_0x5b8101);})['catch'](function(_0x1b0f4b){_0x56ff59(_0x1b0f4b);});});}exports[_0xdc31('0x33')]=function(_0x3fe35d,_0x314af7){var _0x19076e={},_0x28dd2c={},_0x14f426={'count':0x0,'rows':[]};var _0x253aeb=_['map'](db[_0xdc31('0x34')][_0xdc31('0x35')],function(_0x4cad1c){return{'name':_0x4cad1c[_0xdc31('0x36')],'type':_0x4cad1c[_0xdc31('0x37')]['key']};});_0x28dd2c[_0xdc31('0x38')]=_['map'](_0x253aeb,_0xdc31('0x2c'));_0x28dd2c[_0xdc31('0x39')]=_[_0xdc31('0x3a')](_0x3fe35d['query']);_0x28dd2c[_0xdc31('0x3b')]=_[_0xdc31('0x3c')](_0x28dd2c[_0xdc31('0x38')],_0x28dd2c[_0xdc31('0x39')]);_0x19076e[_0xdc31('0x3d')]=_[_0xdc31('0x3c')](_0x28dd2c[_0xdc31('0x38')],qs['fields'](_0x3fe35d[_0xdc31('0x39')][_0xdc31('0x3e')]));_0x19076e[_0xdc31('0x3d')]=_0x19076e['attributes'][_0xdc31('0x3f')]?_0x19076e[_0xdc31('0x3d')]:_0x28dd2c[_0xdc31('0x38')];if(!_0x3fe35d[_0xdc31('0x39')][_0xdc31('0x40')](_0xdc31('0x41'))){_0x19076e[_0xdc31('0x21')]=qs[_0xdc31('0x21')](_0x3fe35d[_0xdc31('0x39')][_0xdc31('0x21')]);_0x19076e[_0xdc31('0x20')]=qs[_0xdc31('0x20')](_0x3fe35d[_0xdc31('0x39')][_0xdc31('0x20')]);}_0x19076e[_0xdc31('0x42')]=qs[_0xdc31('0x43')](_0x3fe35d['query'][_0xdc31('0x43')]);_0x19076e[_0xdc31('0x44')]=qs[_0xdc31('0x3b')](_[_0xdc31('0x45')](_0x3fe35d[_0xdc31('0x39')],_0x28dd2c[_0xdc31('0x3b')]),_0x253aeb);var _0x8c205e=[];var _0x52ead9=squel['select']()[_0xdc31('0x46')]('id')[_0xdc31('0x46')](_0xdc31('0x2c'))[_0xdc31('0x46')]('color')['from'](_0xdc31('0x47'));var _0x4843bf=squel[_0xdc31('0x48')]()[_0xdc31('0x46')](_0xdc31('0x49'))[_0xdc31('0x46')](_0xdc31('0x4a'))[_0xdc31('0x46')](_0xdc31('0x4b'))[_0xdc31('0x4c')]('user_has_whatsapp_interactions','ui')[_0xdc31('0x4d')](_0xdc31('0x4e'),'u',_0xdc31('0x4f'));var _0x1fbf10=squel['select']()[_0xdc31('0x4c')](_0xdc31('0x50'),'i')[_0xdc31('0x4d')]('cm_contacts','c',_0xdc31('0x51'))[_0xdc31('0x4d')](_0xdc31('0x4e'),'o',_0xdc31('0x52'))[_0xdc31('0x4d')](_0xdc31('0x53'),'a',_0xdc31('0x54'))[_0xdc31('0x4d')](_0xdc31('0x55'),'me','me.WhatsappInteractionId\x20=\x20i.id')[_0xdc31('0x4d')](_0xdc31('0x56'),'it',_0xdc31('0x57'))[_0xdc31('0x4d')](_0xdc31('0x47'),'t','t.id\x20=\x20it.TagId');var _0x460ede=squel[_0xdc31('0x58')]();var _0x348461=[];var _0x3285f2=squel[_0xdc31('0x58')]();var _0x3c553a;if(_0x3fe35d[_0xdc31('0x39')][_0xdc31('0x59')]){_0x3c553a=as['parseSearch'](_0x3fe35d[_0xdc31('0x39')][_0xdc31('0x59')]);var _0x5aa567=_0x3c553a[_0xdc31('0x5a')];for(var _0x6a76d3=0x0;_0x6a76d3<_0x3c553a[_0xdc31('0x5b')][_0xdc31('0x3f')];_0x6a76d3++){var _0xcb6304=_0x3c553a[_0xdc31('0x5b')][_0x6a76d3];var _0x46ec78='i';var _0x355730=_['find'](_0x253aeb,[_0xdc31('0x2c'),_0xcb6304['field']]);if(!_0x355730){switch(_0xcb6304[_0xdc31('0x46')]){case _0xdc31('0x5c'):if(_0xcb6304[_0xdc31('0x5d')]==0x1){_0x1fbf10[_0xdc31('0x5e')]('`'+_0xcb6304[_0xdc31('0x46')]+_0xdc31('0x5f'));}else{_0x1fbf10[_0xdc31('0x5e')]('`'+_0xcb6304[_0xdc31('0x46')]+_0xdc31('0x60'));}break;case _0xdc31('0x61'):if(_0xcb6304[_0xdc31('0x62')]===_0xdc31('0x63')){if(_0xcb6304[_0xdc31('0x5d')][_0xdc31('0x32')]('\x20')[_0xdc31('0x3f')]>0x1){_0x460ede[_0x5aa567]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0xcb6304[_0xdc31('0x5d')]),null);}else{var _0x379f0c='%'+_0xcb6304[_0xdc31('0x5d')]+'%';_0x460ede[_0x5aa567]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x379f0c,_0x379f0c,_0x379f0c);}}else{_0x355730=_[_0xdc31('0x64')](_0x253aeb,['name',_0xdc31('0x65')]);_0xcb6304[_0xdc31('0x46')]=_0xdc31('0x65');_0x2a803a=as['buildExpression'](_0x46ec78,_0x355730[_0xdc31('0x37')],_0xcb6304);_0x460ede[_0x5aa567](_0x2a803a['text'],_0x2a803a[_0xdc31('0x5d')][_0xdc31('0x66')],_0x2a803a[_0xdc31('0x5d')][_0xdc31('0x2a')]);}break;case _0xdc31('0x67'):var _0x5cd6b7=_0xcb6304[_0xdc31('0x5d')][_0xdc31('0x32')](',')[_0xdc31('0x2f')](function(_0x3d6b9d){return Number(_0x3d6b9d);});_0x5cd6b7[_0xdc31('0x68')](function(_0x1a65e0){_0x3285f2['or'](_0xdc31('0x69'),'%,'+_0x1a65e0+',%');});_0x348461=_['union'](_0x348461,_0x5cd6b7);break;case _0xdc31('0x6a'):if(_0xcb6304['operator']===_0xdc31('0x63')){_0x460ede[_0x5aa567]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0xcb6304[_0xdc31('0x5d')]+'%',null);}else{_0x355730=_[_0xdc31('0x64')](_0x253aeb,['name',_0xdc31('0x6b')]);_0xcb6304[_0xdc31('0x46')]='UserId';_0x2a803a=as[_0xdc31('0x6c')](_0x46ec78,_0x355730[_0xdc31('0x37')],_0xcb6304);_0x460ede[_0x5aa567](_0x2a803a['text'],_0x2a803a[_0xdc31('0x5d')][_0xdc31('0x66')],_0x2a803a[_0xdc31('0x5d')][_0xdc31('0x2a')]);}break;case _0xdc31('0x6d'):_0x2a803a=as[_0xdc31('0x6c')]('me',null,_0xcb6304);_0x460ede[_0x5aa567](_0x2a803a[_0xdc31('0x6e')],_0x2a803a[_0xdc31('0x5d')]['start'],_0x2a803a[_0xdc31('0x5d')][_0xdc31('0x2a')]);break;}}else{var _0x2a803a=as[_0xdc31('0x6c')](_0x46ec78,_0x355730[_0xdc31('0x37')],_0xcb6304);_0x460ede[_0x5aa567](_0x2a803a['text'],_0x2a803a['value'][_0xdc31('0x66')],_0x2a803a[_0xdc31('0x5d')][_0xdc31('0x2a')]);}}}else{var _0xc3c5a7=_(_0x3fe35d[_0xdc31('0x39')])[_0xdc31('0x3a')]()[_0xdc31('0x2f')](function(_0x241438){return _['some'](_0x253aeb,[_0xdc31('0x2c'),_0x241438])?_0x241438:undefined;})[_0xdc31('0x6f')]()[_0xdc31('0x5d')]();if(!_[_0xdc31('0x70')](_0xc3c5a7)){_0xc3c5a7[_0xdc31('0x68')](function(_0x6b9f67){if(_0x6b9f67===_0xdc31('0x71')){_0x1fbf10[_0xdc31('0x44')](_0xdc31('0x72'),[]['concat'](_0x3fe35d[_0xdc31('0x39')][_0x6b9f67]));}else if(_0x6b9f67===_0xdc31('0x73')){var _0x24f14d=JSON[_0xdc31('0x74')](_0x3fe35d[_0xdc31('0x39')][_0x6b9f67])[_0xdc31('0x75')];var _0x3e7d09=JSON[_0xdc31('0x74')](_0x3fe35d[_0xdc31('0x39')][_0x6b9f67])[_0xdc31('0x76')];_0x1fbf10[_0xdc31('0x44')](_0xdc31('0x77'),_0x24f14d,_0x3e7d09);}else{if(_0x3fe35d['query'][_0x6b9f67]==='null'){_0x1fbf10['where']('i.'+_0x6b9f67+_0xdc31('0x78'));}else{_0x1fbf10['where']('i.'+_0x6b9f67+_0xdc31('0x79'),_0x3fe35d[_0xdc31('0x39')][_0x6b9f67]);}}});}if(_0x3fe35d['query'][_0xdc31('0x7a')]){if(_0x3fe35d[_0xdc31('0x39')][_0xdc31('0x7a')]==0x1){_0x1fbf10[_0xdc31('0x5e')](_0xdc31('0x7b'));}else{_0x1fbf10['having'](_0xdc31('0x7c'));}}if(_0x3fe35d[_0xdc31('0x39')][_0xdc31('0x7d')]){_0x348461=_['isArray'](_0x3fe35d[_0xdc31('0x39')]['tag'])?_0x3fe35d['query'][_0xdc31('0x7d')]:new Array(_0x3fe35d[_0xdc31('0x39')]['tag']);_0x348461['forEach'](function(_0x5619c6){_0x3285f2['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5619c6+',%');});}if(_0x3fe35d[_0xdc31('0x39')][_0xdc31('0x7e')]){var _0x32a267=_0x3fe35d['query'][_0xdc31('0x7e')][_0xdc31('0x7f')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x32a267)){_0x460ede['or']('i.id\x20LIKE\x20?',_0x32a267+'%')['or'](_0xdc31('0x80'),_0x32a267+'%');}else{_0x460ede['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xdc31('0x81')](_0x32a267))['or'](_0xdc31('0x82'),_0x32a267+'%');}}}_0x1fbf10[_0xdc31('0x44')](_0x460ede);_0x1fbf10['group']('i.id');var _0x1461b1={'type':db[_0xdc31('0x83')][_0xdc31('0x84')][_0xdc31('0x85')],'raw':!![]};var _0x32de6d=_0x1fbf10[_0xdc31('0x86')]();_0x32de6d[_0xdc31('0x46')](_0xdc31('0x87'));_0x32de6d[_0xdc31('0x46')](_0xdc31('0x88'),_0xdc31('0x5c'));if(_0x19076e['order']){_0x19076e['order'][_0xdc31('0x68')](function(_0x3d4f72){var _0x471ee8=_0x3d4f72[0x0]===_0xdc31('0x89')?_0x3d4f72[0x0]:'i.'+_0x3d4f72[0x0];_0x1fbf10[_0xdc31('0x42')](_0x471ee8,_0x3d4f72[0x1]===_0xdc31('0x8a')?![]:!![]);});}if(!_[_0xdc31('0x70')](_0x348461)){_0x1fbf10[_0xdc31('0x5e')](_0x3285f2);_0x32de6d[_0xdc31('0x44')]('t.id\x20IN\x20?',_0x348461);}BPromise[_0xdc31('0x8b')]()[_0xdc31('0x28')](function(){if(!_0x3c553a){if(_0x3fe35d[_0xdc31('0x39')][_0xdc31('0x71')])return;_0x32de6d[_0xdc31('0x44')](_0xdc31('0x8c'));_0x1fbf10['where']('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x3fe35d['user']['role']!=='agent')return;return _0x3fe35d['user'][_0xdc31('0x8d')]({'attributes':['id'],'raw':!![]})[_0xdc31('0x28')](function(_0x1fbdfc){if(_[_0xdc31('0x70')](_0x1fbdfc)){_0x32de6d[_0xdc31('0x44')](_0xdc31('0x8e'));_0x1fbf10['where'](_0xdc31('0x8e'));}else{_0x32de6d['where'](_0xdc31('0x72'),_[_0xdc31('0x2f')](_0x1fbdfc,'id'));_0x1fbf10['where'](_0xdc31('0x72'),_['map'](_0x1fbdfc,'id'));}});})[_0xdc31('0x28')](function(){if(_0x3fe35d[_0xdc31('0x8f')][_0xdc31('0x90')]==='agent'&&!_0x3c553a&&!_0x3fe35d[_0xdc31('0x39')][_0xdc31('0x71')])return[];return db[_0xdc31('0x91')][_0xdc31('0x39')](_0x32de6d[_0xdc31('0x92')](),_0x1461b1);})['then'](function(_0x44d80a){_0x14f426[_0xdc31('0x23')]=_0x44d80a[_0xdc31('0x3f')];if(_0x14f426[_0xdc31('0x23')]===0x0)return[];return db['sequelize'][_0xdc31('0x39')](_0x52ead9[_0xdc31('0x92')](),_0x1461b1)['then'](function(_0x361f55){_0x8c205e=_['keyBy'](_0x361f55,'id');_0x1461b1=_[_0xdc31('0x93')](_0x1461b1,{'model':db[_0xdc31('0x34')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3fe35d[_0xdc31('0x39')]['fields']){_0x19076e[_0xdc31('0x3d')]['forEach'](function(_0x205ab0){_0x1fbf10['field']('i.'+_0x205ab0);});}else{_0x1fbf10[_0xdc31('0x46')](_0xdc31('0x88'),_0xdc31('0x5c'));_0x1fbf10[_0xdc31('0x46')](_0xdc31('0x94'),'Account.key');_0x1fbf10[_0xdc31('0x46')](_0xdc31('0x95'),_0xdc31('0x96'));_0x1fbf10[_0xdc31('0x46')](_0xdc31('0x97'),_0xdc31('0x89'));_0x1fbf10[_0xdc31('0x46')](_0xdc31('0x98'));_0x1fbf10[_0xdc31('0x46')](_0xdc31('0x99'),_0xdc31('0x9a'));_0x1fbf10[_0xdc31('0x46')](_0xdc31('0x9b'),'Contact.lastName');_0x1fbf10['field']('c.email',_0xdc31('0x9c'));_0x1fbf10[_0xdc31('0x46')](_0xdc31('0x9d'),_0xdc31('0x9e'));_0x1fbf10[_0xdc31('0x46')](_0xdc31('0x9f'),'Contact.mobile');_0x1fbf10[_0xdc31('0x46')]('c.fax','Contact.fax');_0x1fbf10[_0xdc31('0x46')](_0xdc31('0xa0'),_0xdc31('0xa1'));_0x1fbf10['field']('o.internal',_0xdc31('0xa2'));_0x1fbf10[_0xdc31('0x46')](_0xdc31('0xa3'),'TagIds');}if(_0x19076e[_0xdc31('0x21')])_0x1fbf10[_0xdc31('0x21')](_0x19076e[_0xdc31('0x21')]);if(_0x19076e['offset'])_0x1fbf10[_0xdc31('0x20')](_0x19076e[_0xdc31('0x20')]);return db['sequelize'][_0xdc31('0x39')](_0x1fbf10[_0xdc31('0x92')](),_0x1461b1);})[_0xdc31('0x28')](function(_0x21f5c7){if(_0x21f5c7[_0xdc31('0x3f')]>0x0)_0x4843bf[_0xdc31('0x44')](_0xdc31('0xa4'),_[_0xdc31('0x2f')](_0x21f5c7,'id'));return db[_0xdc31('0x91')][_0xdc31('0x39')](_0x4843bf[_0xdc31('0x92')](),_0x1461b1)[_0xdc31('0x28')](function(_0x36e0d5){var _0x4beb03=_[_0xdc31('0xa5')](_0x36e0d5,'WhatsappInteractionId');var _0x46a7a2=[];_0x21f5c7[_0xdc31('0x68')](function(_0x5a9169){_0x46a7a2['push'](updateWhatsappInteraction(_0x5a9169,_0x8c205e,_0x4beb03));});return BPromise[_0xdc31('0xa6')](_0x46a7a2);});});})[_0xdc31('0x28')](function(_0x502b6f){_0x14f426['rows']=_0x502b6f;return _0x14f426;})[_0xdc31('0x28')](respondWithFilteredResult(_0x314af7,_0x19076e))[_0xdc31('0xa7')](handleError(_0x314af7,null));};exports['show']=function(_0x58b6bd,_0x2b81e6){var _0x38ac50={'raw':![],'where':{'id':_0x58b6bd['params']['id']}},_0x4ad2c3={};_0x4ad2c3['model']=_['keys'](db[_0xdc31('0x34')][_0xdc31('0x35')]);_0x4ad2c3[_0xdc31('0x39')]=_[_0xdc31('0x3a')](_0x58b6bd['query']);_0x4ad2c3['filters']=_[_0xdc31('0x3c')](_0x4ad2c3[_0xdc31('0x38')],_0x4ad2c3['query']);_0x38ac50[_0xdc31('0x3d')]=_[_0xdc31('0x3c')](_0x4ad2c3[_0xdc31('0x38')],qs[_0xdc31('0x3e')](_0x58b6bd[_0xdc31('0x39')][_0xdc31('0x3e')]));_0x38ac50[_0xdc31('0x3d')]=_0x38ac50['attributes'][_0xdc31('0x3f')]?_0x38ac50[_0xdc31('0x3d')]:_0x4ad2c3['model'];if(_0x58b6bd[_0xdc31('0x39')][_0xdc31('0xa8')]){_0x38ac50[_0xdc31('0xa9')]=[{'all':!![]}];}_0x38ac50=_[_0xdc31('0x93')]({},_0x38ac50,_0x58b6bd[_0xdc31('0xaa')]);return db['WhatsappInteraction'][_0xdc31('0x64')](_0x38ac50)[_0xdc31('0x28')](handleEntityNotFound(_0x2b81e6,null))[_0xdc31('0x28')](respondWithResult(_0x2b81e6,null))[_0xdc31('0xa7')](handleError(_0x2b81e6,null));};exports['create']=function(_0x36d349,_0x230e71){return db[_0xdc31('0x34')]['create'](_0x36d349['body'],{})[_0xdc31('0x28')](respondWithResult(_0x230e71,0xc9))[_0xdc31('0xa7')](handleError(_0x230e71,null));};exports[_0xdc31('0x27')]=function(_0x189ac1,_0x5e5ed0){if(_0x189ac1['body']['id']){delete _0x189ac1[_0xdc31('0x6d')]['id'];}return db[_0xdc31('0x34')][_0xdc31('0x64')]({'where':{'id':_0x189ac1[_0xdc31('0xab')]['id']}})[_0xdc31('0x28')](handleEntityNotFound(_0x5e5ed0,null))[_0xdc31('0x28')](saveUpdates(_0x189ac1[_0xdc31('0x6d')],null))['then'](respondWithResult(_0x5e5ed0,null))[_0xdc31('0xa7')](handleError(_0x5e5ed0,null));};exports['destroy']=function(_0x2e38eb,_0x54305d){return db[_0xdc31('0x34')][_0xdc31('0x64')]({'where':{'id':_0x2e38eb[_0xdc31('0xab')]['id']}})['then'](handleEntityNotFound(_0x54305d,null))['then'](removeEntity(_0x54305d,null))[_0xdc31('0xa7')](handleError(_0x54305d,null));};exports[_0xdc31('0xac')]=function(_0x105226,_0x44e1fc){return db[_0xdc31('0x34')][_0xdc31('0xac')]()['then'](respondWithResult(_0x44e1fc,null))[_0xdc31('0xa7')](handleError(_0x44e1fc,null));};exports[_0xdc31('0xad')]=function(_0x5d3e80,_0x36f4f4,_0x57c2ef){return db[_0xdc31('0xae')][_0xdc31('0x64')]({'where':{'id':_0x5d3e80[_0xdc31('0xab')]['id']}})[_0xdc31('0x28')](handleEntityNotFound(_0x36f4f4,null))[_0xdc31('0x28')](function(_0x417205){if(_0x417205){return _0x417205[_0xdc31('0xad')](_0x5d3e80[_0xdc31('0x6d')][_0xdc31('0xaf')],_[_0xdc31('0xb0')](_0x5d3e80[_0xdc31('0x6d')],[_0xdc31('0xaf'),'id'])||{});}})[_0xdc31('0x28')](respondWithResult(_0x36f4f4,null))[_0xdc31('0xa7')](handleError(_0x36f4f4,null));};exports[_0xdc31('0xb1')]=function(_0x218026,_0x2feb9d,_0x5d3357){var _0x51f2dc={'raw':![],'where':{}};var _0x4566d6={};var _0x338109={'count':0x0,'rows':[]};return db[_0xdc31('0x34')][_0xdc31('0xb2')]({'where':{'id':_0x218026[_0xdc31('0xab')]['id']}})['then'](handleEntityNotFound(_0x2feb9d,null))[_0xdc31('0x28')](function(_0x19375d){if(_0x19375d){_0x4566d6[_0xdc31('0x38')]=_['keys'](db[_0xdc31('0xae')][_0xdc31('0x35')]);_0x4566d6[_0xdc31('0x39')]=_[_0xdc31('0x3a')](_0x218026[_0xdc31('0x39')]);_0x4566d6[_0xdc31('0x3b')]=_[_0xdc31('0x3c')](_0x4566d6[_0xdc31('0x38')],_0x4566d6[_0xdc31('0x39')]);_0x51f2dc[_0xdc31('0x3d')]=_[_0xdc31('0x3c')](_0x4566d6[_0xdc31('0x38')],qs[_0xdc31('0x3e')](_0x218026['query']['fields']));_0x51f2dc[_0xdc31('0x3d')]=_0x51f2dc['attributes'][_0xdc31('0x3f')]?_0x51f2dc[_0xdc31('0x3d')]:_0x4566d6[_0xdc31('0x38')];if(!_0x218026[_0xdc31('0x39')]['hasOwnProperty'](_0xdc31('0x41'))){_0x51f2dc[_0xdc31('0x21')]=qs[_0xdc31('0x21')](_0x218026[_0xdc31('0x39')][_0xdc31('0x21')]);_0x51f2dc[_0xdc31('0x20')]=qs[_0xdc31('0x20')](_0x218026[_0xdc31('0x39')][_0xdc31('0x20')]);}_0x51f2dc[_0xdc31('0x42')]=qs[_0xdc31('0x43')](_0x218026[_0xdc31('0x39')][_0xdc31('0x43')]);_0x51f2dc['where']=qs[_0xdc31('0x3b')](_[_0xdc31('0x45')](_0x218026[_0xdc31('0x39')],_0x4566d6['filters']));_0x51f2dc[_0xdc31('0x44')]['WhatsappInteractionId']=_0x19375d['id'];if(_0x218026[_0xdc31('0x39')][_0xdc31('0x7e')]){_0x51f2dc['where']=_['merge'](_0x51f2dc[_0xdc31('0x44')],{'$or':_[_0xdc31('0x2f')](_0x51f2dc['attributes'],function(_0x3ae09c){var _0x32c184={};_0x32c184[_0x3ae09c]={'$like':'%'+_0x218026['query']['filter']+'%'};return _0x32c184;})});}if(_0x218026[_0xdc31('0x39')][_0xdc31('0x75')]){var _0x39b15e=_0x218026[_0xdc31('0x39')][_0xdc31('0x75')][_0xdc31('0x32')](',');var _0x478ea8={};_0x478ea8[_0x39b15e[0x0]]={'$gte':moment(_0x39b15e[0x1])[_0xdc31('0xb3')](_0xdc31('0xb4'))};_0x51f2dc[_0xdc31('0x44')]=_[_0xdc31('0x93')](_0x51f2dc[_0xdc31('0x44')],_0x478ea8);}_0x51f2dc=_[_0xdc31('0x93')]({},_0x51f2dc,_0x218026[_0xdc31('0xaa')]);return db[_0xdc31('0xae')]['count']({'where':_0x51f2dc[_0xdc31('0x44')]})[_0xdc31('0x28')](function(_0x1ad073){_0x338109[_0xdc31('0x23')]=_0x1ad073;if(_0x218026[_0xdc31('0x39')][_0xdc31('0xa8')]){_0x51f2dc[_0xdc31('0xa9')]=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x51f2dc);})[_0xdc31('0x28')](function(_0x14dc1b){_0x338109[_0xdc31('0xb5')]=_0x14dc1b;return _0x338109;});}})[_0xdc31('0x28')](respondWithFilteredResult(_0x2feb9d,_0x51f2dc))[_0xdc31('0xa7')](handleError(_0x2feb9d,null));};exports['addTags']=function(_0x3fb4f5,_0x13dde5,_0x57c4ca){return db[_0xdc31('0x34')][_0xdc31('0x64')]({'where':{'id':_0x3fb4f5[_0xdc31('0xab')]['id']}})['then'](handleEntityNotFound(_0x13dde5,null))[_0xdc31('0x28')](function(_0x3f28c8){if(_0x3f28c8){return _0x3f28c8[_0xdc31('0xb6')](_0x3fb4f5['body'][_0xdc31('0xaf')],_[_0xdc31('0xb0')](_0x3fb4f5['body'],['ids','id'])||{})[_0xdc31('0xb7')](function(){return db['Tag']['findAll']({'attributes':['id',_0xdc31('0x2c'),_0xdc31('0xb8')],'where':{'id':_0x3fb4f5['body'][_0xdc31('0xaf')]}});})['then'](function(_0x5b984b){socket['emit']('whatsappInteractionTags:save',{'id':Number(_0x3fb4f5['params']['id']),'tags':_0x5b984b||[]});return{'id':Number(_0x3fb4f5[_0xdc31('0xab')]['id']),'tags':_0x5b984b||[]};});}})[_0xdc31('0x28')](respondWithResult(_0x13dde5,null))[_0xdc31('0xa7')](handleError(_0x13dde5,null));};exports['removeTags']=function(_0x56dd79,_0x55ddf5,_0x19000d){return db[_0xdc31('0x34')]['find']({'where':{'id':_0x56dd79['params']['id']}})[_0xdc31('0x28')](handleEntityNotFound(_0x55ddf5,null))[_0xdc31('0x28')](function(_0x36bf4d){if(_0x36bf4d){return _0x36bf4d['removeTags'](_0x56dd79[_0xdc31('0x39')][_0xdc31('0xaf')]);}})[_0xdc31('0x28')](respondWithStatusCode(_0x55ddf5,null))[_0xdc31('0xa7')](handleError(_0x55ddf5,null));};exports[_0xdc31('0xb9')]=function(_0x16991e,_0x5787ac){var _0x48f6d8=moment()[_0xdc31('0xba')]()['toString']();var _0x3a2da4=path['join'](config['root'],_0xdc31('0xbb'),_0xdc31('0xbc'),_0xdc31('0xbd'));var _0x395f05=path[_0xdc31('0xbe')](config['root'],_0xdc31('0xbb'),_0xdc31('0xbc'),_0xdc31('0xbf'));var _0x136271=path['join'](_0x3a2da4,_0x48f6d8);var _0x31283c=util[_0xdc31('0xb3')]('transcript-%d-%s.zip',_0x16991e[_0xdc31('0xab')]['id'],_0x48f6d8);var _0x441352=path['join'](_0x3a2da4,_0x31283c);var _0x409087=[];_0x409087['push']({'model':db[_0xdc31('0x6a')],'as':_0xdc31('0x6a'),'attributes':['id',_0xdc31('0xc0')],'raw':!![]});_0x409087[_0xdc31('0xc1')]({'model':db[_0xdc31('0xc2')],'as':_0xdc31('0x61'),'attributes':['id',_0xdc31('0xc3'),_0xdc31('0xc4')],'raw':!![]});if(_0x16991e['query'][_0xdc31('0xbf')]){_0x409087[_0xdc31('0xc1')]({'model':db[_0xdc31('0xc5')],'as':_0xdc31('0xc5'),'raw':!![]});}var _0x424b5c=[{'model':db['WhatsappMessage'],'as':_0xdc31('0xc6'),'attributes':['id','body',_0xdc31('0x73'),_0xdc31('0xc7'),_0xdc31('0xc8'),_0xdc31('0x7a')],'include':_0x409087}];_0x424b5c[_0xdc31('0xc1')]({'model':db['WhatsappAccount'],'as':_0xdc31('0xc9'),'attributes':['id',_0xdc31('0x2c')]});_0x424b5c['push']({'model':db[_0xdc31('0x6a')],'as':_0xdc31('0xca'),'attributes':['id',_0xdc31('0xc0')]});return db[_0xdc31('0x34')][_0xdc31('0x64')]({'where':{'id':_0x16991e[_0xdc31('0xab')]['id']},'include':_0x424b5c})['then'](handleEntityNotFound(_0x5787ac,null))[_0xdc31('0x28')](function(_0x4555bd){if(_0x4555bd){var _0x303528=_0x4555bd[_0xdc31('0xcb')]({'plain':!![]});fs[_0xdc31('0xcc')](_0x136271);var _0x399575={'channel':_0xdc31('0xcd'),'account':_0x303528[_0xdc31('0xc9')][_0xdc31('0x2c')],'agent':_0x303528[_0xdc31('0xca')]?_0x303528[_0xdc31('0xca')][_0xdc31('0xc0')]:'N.A.','createdAt':moment(_0x303528[_0xdc31('0x73')])[_0xdc31('0xb3')](_0xdc31('0xb4'))[_0xdc31('0x92')](),'closedAt':_0x303528[_0xdc31('0xce')]?moment(_0x303528[_0xdc31('0xcf')])[_0xdc31('0xb3')](_0xdc31('0xb4'))[_0xdc31('0x92')]():'','disposition':_0x303528[_0xdc31('0xd0')],'messages':_(_0x303528[_0xdc31('0xc6')])['filter']({'secret':![]})[_0xdc31('0x2f')](function(_0x4fe117){if(_0x4fe117[_0xdc31('0xc5')]){var _0x10ac30=path['join'](_0x395f05,_0x4fe117['Attachment'][_0xdc31('0xd1')]);if(fs[_0xdc31('0xd2')](_0x10ac30)){fs[_0xdc31('0xd3')](_0x10ac30)[_0xdc31('0xd4')](fs['createWriteStream'](path[_0xdc31('0xbe')](_0x136271,_0x4fe117[_0xdc31('0xc5')][_0xdc31('0xd1')])));}}return{'date':moment(_0x4fe117[_0xdc31('0x73')])[_0xdc31('0xb3')]('YYYY-MM-DD\x20HH:mm:ss')[_0xdc31('0x92')](),'sender':_0x4fe117['direction']===_0xdc31('0xd5')?_0x4fe117[_0xdc31('0x6a')]?_0x4fe117[_0xdc31('0x6a')][_0xdc31('0xc0')]:'System':_0x4fe117[_0xdc31('0x61')][_0xdc31('0xc3')]+(_0x4fe117[_0xdc31('0x61')]['lastName']?'\x20'+_0x4fe117['Contact'][_0xdc31('0xc4')]:''),'body':_0x4fe117[_0xdc31('0xc5')]?_0x4fe117[_0xdc31('0xc5')][_0xdc31('0xd1')]:_0x4fe117[_0xdc31('0x6d')],'direction':_0x4fe117[_0xdc31('0xc7')]==='out'?'A':'C','secret':_0x4fe117[_0xdc31('0xc8')],'read':_0x4fe117[_0xdc31('0x7a')],'attachment':_0x4fe117[_0xdc31('0xc5')]};})[_0xdc31('0x5d')]()};return ejs['renderFile'](path[_0xdc31('0xbe')](config['root'],_0xdc31('0xbb'),_0xdc31('0xd6'),'downloadInteraction.ejs'),{'interaction':_0x399575})[_0xdc31('0x28')](function(_0x4e4496){var _0x2712e5=path[_0xdc31('0xbe')](_0x136271,_0xdc31('0xd7')+_0x303528['id']+'-'+_0x48f6d8+_0xdc31('0xd8'));var _0x3e4ebe={'path':_0x2712e5,'channel':_0xdc31('0xcd'),'interactionId':_0x303528['id']};return pdf[_0xdc31('0xd9')](_0x4e4496,_0x3e4ebe);})[_0xdc31('0x28')](function(){return new BPromise(function(_0x1e763d,_0x5783f4){zipdir(_0x136271,{'saveTo':_0x441352},function(_0x34395d,_0xaf422e){if(_0x34395d)return _0x5783f4(_0x34395d);return _0x1e763d(_0xaf422e);});})['then'](function(){return new BPromise(function(_0x4bf3b7,_0x5f1f53){rimraf(_0x136271,function(_0x2b3c53){if(_0x2b3c53)_0x5f1f53(_0x2b3c53);return _0x4bf3b7();});});})['then'](function(){return _0x5787ac[_0xdc31('0xb9')](_0x441352,_0x31283c,function(_0x1b7a93){if(_0x1b7a93){console['log']('err',_0x1b7a93);}else{fs['unlinkSync'](_0x441352);}});});});}else{return _0x5787ac[_0xdc31('0x1d')](0xc8);}})[_0xdc31('0xa7')](handleError(_0x5787ac,null));};
\ No newline at end of file
index 34d4b1e..139c38b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a00=['setMaxListeners','save','update','getUsers','then','Users','map','findAll','setDataValue','unreadMessages','length','emit','hook','exports','events','../../mysqldb','WhatsappMessage'];(function(_0x3e50aa,_0x299677){var _0x51edcc=function(_0x7ea1e4){while(--_0x7ea1e4){_0x3e50aa['push'](_0x3e50aa['shift']());}};_0x51edcc(++_0x299677);}(_0x6a00,0xc9));var _0x06a0=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x6a00[_0xefd519];return _0x4bb882;};'use strict';var EventEmitter=require(_0x06a0('0x0'));var WhatsappInteraction=require(_0x06a0('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x06a0('0x1'))['db'][_0x06a0('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x06a0('0x3')](0x0);var events={'afterCreate':_0x06a0('0x4'),'afterUpdate':_0x06a0('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4a423e){return function(_0x34c32c,_0x3b042f,_0x1de0c2){_0x34c32c[_0x06a0('0x6')]({'attributes':['id'],'raw':!![]})[_0x06a0('0x7')](function(_0x1b8019){_0x34c32c['setDataValue'](_0x06a0('0x8'),_0x1b8019[_0x06a0('0x9')](function(_0x91eaab){return{'id':_0x91eaab['id']};}));return WhatsappMessage[_0x06a0('0xa')]({'where':{'WhatsappInteractionId':_0x34c32c['id'],'direction':'in','read':![]},'raw':!![]});})[_0x06a0('0x7')](function(_0x26c616){_0x34c32c[_0x06a0('0xb')](_0x06a0('0xc'),_0x26c616[_0x06a0('0xd')]);WhatsappInteractionEvents[_0x06a0('0xe')](_0x4a423e+':'+_0x34c32c['id'],_0x34c32c);WhatsappInteractionEvents[_0x06a0('0xe')](_0x4a423e,_0x34c32c);_0x1de0c2(null);})['catch'](_0x1de0c2(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction[_0x06a0('0xf')](e,emitEvent(event));}}module[_0x06a0('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x3667=['save','update','getUsers','setDataValue','Users','map','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage'];(function(_0x4624e5,_0x421f7e){var _0x2c7ab0=function(_0x2c1f48){while(--_0x2c1f48){_0x4624e5['push'](_0x4624e5['shift']());}};_0x2c7ab0(++_0x421f7e);}(_0x3667,0xcd));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x7366('0x0'));var WhatsappInteraction=require(_0x7366('0x1'))['db'][_0x7366('0x2')];var WhatsappMessage=require(_0x7366('0x1'))['db'][_0x7366('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7366('0x4'),'afterUpdate':_0x7366('0x5'),'afterDestroy':'remove'};function emitEvent(_0x27726b){return function(_0x22bfc0,_0x1a35f8,_0x1c0cf4){_0x22bfc0[_0x7366('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x28f6c8){_0x22bfc0[_0x7366('0x7')](_0x7366('0x8'),_0x28f6c8[_0x7366('0x9')](function(_0x171fe2){return{'id':_0x171fe2['id']};}));return WhatsappMessage[_0x7366('0xa')]({'where':{'WhatsappInteractionId':_0x22bfc0['id'],'direction':'in','read':![]},'raw':!![]});})[_0x7366('0xb')](function(_0x417559){_0x22bfc0[_0x7366('0x7')](_0x7366('0xc'),_0x417559[_0x7366('0xd')]);WhatsappInteractionEvents[_0x7366('0xe')](_0x27726b+':'+_0x22bfc0['id'],_0x22bfc0);WhatsappInteractionEvents[_0x7366('0xe')](_0x27726b,_0x22bfc0);_0x1c0cf4(null);})[_0x7366('0xf')](_0x1c0cf4(null));};}for(var e in events){if(events[_0x7366('0x10')](e)){var event=events[e];WhatsappInteraction[_0x7366('0x11')](e,emitEvent(event));}}module[_0x7366('0x12')]=WhatsappInteractionEvents;
\ No newline at end of file
index eb73925..77d0a8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76c1=['api','moment','bluebird','rimraf','../../config/environment','./whatsappInteraction.attributes','define','whatsapp_interactions','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger'];(function(_0x3a73bc,_0x550aef){var _0x32891b=function(_0x20b4cb){while(--_0x20b4cb){_0x3a73bc['push'](_0x3a73bc['shift']());}};_0x32891b(++_0x550aef);}(_0x76c1,0x15b));var _0x176c=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0x76c1[_0x3d42d8];return _0x27fc41;};'use strict';var _=require(_0x176c('0x0'));var util=require(_0x176c('0x1'));var logger=require(_0x176c('0x2'))(_0x176c('0x3'));var moment=require(_0x176c('0x4'));var BPromise=require(_0x176c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x176c('0x6'));var config=require(_0x176c('0x7'));var attributes=require(_0x176c('0x8'));module['exports']=function(_0x5a1e37,_0xc28671){return _0x5a1e37[_0x176c('0x9')]('WhatsappInteraction',attributes,{'tableName':_0x176c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3fc769,_0x40c110,_0x5d58ba){if(_0x3fc769['changed'](_0x176c('0xb'))){_0x3fc769[_0x176c('0xc')]=moment()['format'](_0x176c('0xd'));}_0x5d58ba(null,_0x3fc769);}}});};
\ No newline at end of file
+var _0x1c4c=['./whatsappInteraction.attributes','exports','define','WhatsappInteraction','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x406ddc,_0x233a84){var _0x4a2bf2=function(_0x1416dc){while(--_0x1416dc){_0x406ddc['push'](_0x406ddc['shift']());}};_0x4a2bf2(++_0x233a84);}(_0x1c4c,0x129));var _0xc1c4=function(_0x52684f,_0xff73fc){_0x52684f=_0x52684f-0x0;var _0x4a55f0=_0x1c4c[_0x52684f];return _0x4a55f0;};'use strict';var _=require(_0xc1c4('0x0'));var util=require('util');var logger=require(_0xc1c4('0x1'))(_0xc1c4('0x2'));var moment=require(_0xc1c4('0x3'));var BPromise=require(_0xc1c4('0x4'));var rp=require(_0xc1c4('0x5'));var fs=require('fs');var path=require(_0xc1c4('0x6'));var rimraf=require(_0xc1c4('0x7'));var config=require(_0xc1c4('0x8'));var attributes=require(_0xc1c4('0x9'));module[_0xc1c4('0xa')]=function(_0x2dbfff,_0x1b240d){return _0x2dbfff[_0xc1c4('0xb')](_0xc1c4('0xc'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x11a531,_0x4e1a9c,_0x3f8e92){if(_0x11a531['changed'](_0xc1c4('0xd'))){_0x11a531[_0xc1c4('0xe')]=moment()[_0xc1c4('0xf')](_0xc1c4('0x10'));}_0x3f8e92(null,_0x11a531);}}});};
\ No newline at end of file
index b9f9138..eac7e65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf55=['limit','catch','AddTagsToWhatsappInteraction','addTags','ids','omit','body','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./whatsappInteraction.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','WhatsappInteraction,\x20%s,\x20%s','message','result','UpdateWhatsappInteraction','WhatsappInteraction','options','raw','where'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0xaf55,0x159));var _0x5af5=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0xaf55[_0x288f5e];return _0x476cc9;};'use strict';var _=require(_0x5af5('0x0'));var util=require(_0x5af5('0x1'));var moment=require(_0x5af5('0x2'));var BPromise=require('bluebird');var rs=require(_0x5af5('0x3'));var fs=require('fs');var Redis=require(_0x5af5('0x4'));var db=require(_0x5af5('0x5'))['db'];var utils=require(_0x5af5('0x6'));var logger=require(_0x5af5('0x7'))(_0x5af5('0x8'));var config=require(_0x5af5('0x9'));var jayson=require(_0x5af5('0xa'));var client=jayson[_0x5af5('0xb')][_0x5af5('0xc')]({'port':0x232a});config[_0x5af5('0xd')]=_['defaults'](config[_0x5af5('0xd')],{'host':_0x5af5('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x5af5('0xf'))[_0x5af5('0x10')](socket);function respondWithRpcPromise(_0x2adaba,_0x35a9ef,_0x43a69b){return new BPromise(function(_0x2f6071,_0x237072){return client[_0x5af5('0x11')](_0x2adaba,_0x43a69b)[_0x5af5('0x12')](function(_0x3564cb){logger[_0x5af5('0x13')]('WhatsappInteraction,\x20%s,\x20%s',_0x35a9ef,_0x5af5('0x14'));logger[_0x5af5('0x15')]('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x35a9ef,_0x5af5('0x14'),JSON[_0x5af5('0x16')](_0x3564cb));if(_0x3564cb[_0x5af5('0x17')]){if(_0x3564cb['error'][_0x5af5('0x18')]===0x1f4){logger['error'](_0x5af5('0x19'),_0x35a9ef,_0x3564cb['error'][_0x5af5('0x1a')]);return _0x237072(_0x3564cb[_0x5af5('0x17')][_0x5af5('0x1a')]);}logger[_0x5af5('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x35a9ef,_0x3564cb[_0x5af5('0x17')][_0x5af5('0x1a')]);return _0x2f6071(_0x3564cb[_0x5af5('0x17')][_0x5af5('0x1a')]);}else{logger[_0x5af5('0x13')](_0x5af5('0x19'),_0x35a9ef,_0x5af5('0x14'));_0x2f6071(_0x3564cb[_0x5af5('0x1b')][_0x5af5('0x1a')]);}})['catch'](function(_0x2221a5){logger[_0x5af5('0x17')](_0x5af5('0x19'),_0x35a9ef,_0x2221a5);_0x237072(_0x2221a5);});});}exports[_0x5af5('0x1c')]=function(_0x12319a){var _0x3edad6=this;return new Promise(function(_0x20d0e6,_0x242e76){return db[_0x5af5('0x1d')]['update'](_0x12319a['body'],{'raw':_0x12319a[_0x5af5('0x1e')]?_0x12319a[_0x5af5('0x1e')][_0x5af5('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x12319a[_0x5af5('0x1e')]?_0x12319a['options'][_0x5af5('0x20')]||null:null,'attributes':_0x12319a['options']?_0x12319a[_0x5af5('0x1e')]['attributes']||null:null,'limit':_0x12319a[_0x5af5('0x1e')]?_0x12319a[_0x5af5('0x1e')][_0x5af5('0x21')]||null:null})['then'](function(_0x4b7e73){logger['info'](_0x5af5('0x1c'),_0x12319a);logger[_0x5af5('0x15')](_0x5af5('0x1c'),_0x12319a,JSON[_0x5af5('0x16')](_0x4b7e73));_0x20d0e6(_0x4b7e73);})[_0x5af5('0x22')](function(_0x270227){logger[_0x5af5('0x17')](_0x5af5('0x1c'),_0x270227[_0x5af5('0x1a')],_0x12319a);_0x242e76(_0x3edad6[_0x5af5('0x17')](0x1f4,_0x270227[_0x5af5('0x1a')]));});});};exports[_0x5af5('0x23')]=function(_0x5e7638){return new Promise(function(_0x3d77f4,_0x13ab94){return db[_0x5af5('0x1d')]['find']({'where':_0x5e7638[_0x5af5('0x1e')]?_0x5e7638[_0x5af5('0x1e')][_0x5af5('0x20')]||null:null})[_0x5af5('0x12')](function(_0x4ab02f){if(_0x4ab02f){return _0x4ab02f[_0x5af5('0x24')](_0x5e7638['body'][_0x5af5('0x25')],_[_0x5af5('0x26')](_0x5e7638[_0x5af5('0x27')],[_0x5af5('0x25'),'id'])||{});}})[_0x5af5('0x28')](function(_0xb828e2){logger[_0x5af5('0x13')](_0x5af5('0x29'),_0x5e7638);logger[_0x5af5('0x15')](_0x5af5('0x29'),_0x5e7638,JSON[_0x5af5('0x16')](_0xb828e2));_0x3d77f4(_0xb828e2);})[_0x5af5('0x22')](function(_0x553372){logger[_0x5af5('0x17')]('AddTags',_0x553372[_0x5af5('0x1a')],_0x5e7638);_0x13ab94(_this[_0x5af5('0x17')](0x1f4,_0x553372[_0x5af5('0x1a')]));});});};
\ No newline at end of file
+var _0x3d3b=['stringify','error','code','message','WhatsappInteraction,\x20%s,\x20%s','result','catch','update','body','options','raw','where','attributes','UpdateWhatsappInteraction','debug','WhatsappInteraction','find','addTags','ids','omit','spread','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','redis','defaults','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','request\x20sent'];(function(_0x13c4d5,_0x2be948){var _0x4dfc72=function(_0x51445c){while(--_0x51445c){_0x13c4d5['push'](_0x13c4d5['shift']());}};_0x4dfc72(++_0x2be948);}(_0x3d3b,0x1ce));var _0xb3d3=function(_0xa8883,_0x1f107f){_0xa8883=_0xa8883-0x0;var _0x479426=_0x3d3b[_0xa8883];return _0x479426;};'use strict';var _=require('lodash');var util=require(_0xb3d3('0x0'));var moment=require(_0xb3d3('0x1'));var BPromise=require(_0xb3d3('0x2'));var rs=require(_0xb3d3('0x3'));var fs=require('fs');var Redis=require(_0xb3d3('0x4'));var db=require(_0xb3d3('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb3d3('0x6'))('rpc');var config=require(_0xb3d3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb3d3('0x8')]['http']({'port':0x232a});config[_0xb3d3('0x9')]=_[_0xb3d3('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb3d3('0xb'))(new Redis(config[_0xb3d3('0x9')]));require(_0xb3d3('0xc'))[_0xb3d3('0xd')](socket);function respondWithRpcPromise(_0x25fa83,_0x441154,_0x3e39a2){return new BPromise(function(_0x1125a1,_0x2218fc){return client[_0xb3d3('0xe')](_0x25fa83,_0x3e39a2)[_0xb3d3('0xf')](function(_0x30179a){logger[_0xb3d3('0x10')]('WhatsappInteraction,\x20%s,\x20%s',_0x441154,_0xb3d3('0x11'));logger['debug']('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x441154,_0xb3d3('0x11'),JSON[_0xb3d3('0x12')](_0x30179a));if(_0x30179a[_0xb3d3('0x13')]){if(_0x30179a[_0xb3d3('0x13')][_0xb3d3('0x14')]===0x1f4){logger[_0xb3d3('0x13')]('WhatsappInteraction,\x20%s,\x20%s',_0x441154,_0x30179a[_0xb3d3('0x13')][_0xb3d3('0x15')]);return _0x2218fc(_0x30179a[_0xb3d3('0x13')][_0xb3d3('0x15')]);}logger[_0xb3d3('0x13')](_0xb3d3('0x16'),_0x441154,_0x30179a[_0xb3d3('0x13')][_0xb3d3('0x15')]);return _0x1125a1(_0x30179a[_0xb3d3('0x13')][_0xb3d3('0x15')]);}else{logger['info'](_0xb3d3('0x16'),_0x441154,_0xb3d3('0x11'));_0x1125a1(_0x30179a[_0xb3d3('0x17')][_0xb3d3('0x15')]);}})[_0xb3d3('0x18')](function(_0xcb25cb){logger[_0xb3d3('0x13')](_0xb3d3('0x16'),_0x441154,_0xcb25cb);_0x2218fc(_0xcb25cb);});});}exports['UpdateWhatsappInteraction']=function(_0x159715){var _0x1dd2ac=this;return new Promise(function(_0x3ef01c,_0x55aeed){return db['WhatsappInteraction'][_0xb3d3('0x19')](_0x159715[_0xb3d3('0x1a')],{'raw':_0x159715[_0xb3d3('0x1b')]?_0x159715[_0xb3d3('0x1b')][_0xb3d3('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x159715[_0xb3d3('0x1b')]?_0x159715['options'][_0xb3d3('0x1d')]||null:null,'attributes':_0x159715[_0xb3d3('0x1b')]?_0x159715[_0xb3d3('0x1b')][_0xb3d3('0x1e')]||null:null,'limit':_0x159715['options']?_0x159715['options']['limit']||null:null})[_0xb3d3('0xf')](function(_0x72fde3){logger['info'](_0xb3d3('0x1f'),_0x159715);logger[_0xb3d3('0x20')](_0xb3d3('0x1f'),_0x159715,JSON['stringify'](_0x72fde3));_0x3ef01c(_0x72fde3);})[_0xb3d3('0x18')](function(_0x1b6fb2){logger[_0xb3d3('0x13')](_0xb3d3('0x1f'),_0x1b6fb2['message'],_0x159715);_0x55aeed(_0x1dd2ac[_0xb3d3('0x13')](0x1f4,_0x1b6fb2[_0xb3d3('0x15')]));});});};exports['AddTagsToWhatsappInteraction']=function(_0x56e5ad){return new Promise(function(_0x483983,_0x2a1ef9){return db[_0xb3d3('0x21')][_0xb3d3('0x22')]({'where':_0x56e5ad[_0xb3d3('0x1b')]?_0x56e5ad['options'][_0xb3d3('0x1d')]||null:null})[_0xb3d3('0xf')](function(_0x16108f){if(_0x16108f){return _0x16108f[_0xb3d3('0x23')](_0x56e5ad['body'][_0xb3d3('0x24')],_[_0xb3d3('0x25')](_0x56e5ad['body'],[_0xb3d3('0x24'),'id'])||{});}})[_0xb3d3('0x26')](function(_0x1d38d0){logger[_0xb3d3('0x10')](_0xb3d3('0x27'),_0x56e5ad);logger['debug']('AddTags',_0x56e5ad,JSON['stringify'](_0x1d38d0));_0x483983(_0x1d38d0);})[_0xb3d3('0x18')](function(_0x5ef5ce){logger[_0xb3d3('0x13')](_0xb3d3('0x27'),_0x5ef5ce[_0xb3d3('0x15')],_0x56e5ad);_0x2a1ef9(_this[_0xb3d3('0x13')](0x1f4,_0x5ef5ce[_0xb3d3('0x15')]));});});};
\ No newline at end of file
index 467d23b..0f96bc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0cd=['emit','register','length','whatsappInteraction:','./whatsappInteraction.events','save','remove','update'];(function(_0x496fc1,_0x1403ac){var _0x90579a=function(_0x415832){while(--_0x415832){_0x496fc1['push'](_0x496fc1['shift']());}};_0x90579a(++_0x1403ac);}(_0xd0cd,0x10c));var _0xdd0c=function(_0xff659d,_0x2283a1){_0xff659d=_0xff659d-0x0;var _0x19c170=_0xd0cd[_0xff659d];return _0x19c170;};'use strict';var WhatsappInteractionEvents=require(_0xdd0c('0x0'));var events=[_0xdd0c('0x1'),_0xdd0c('0x2'),_0xdd0c('0x3')];function createListener(_0x972f3e,_0xdd606a){return function(_0x10535e){_0xdd606a[_0xdd0c('0x4')](_0x972f3e,_0x10535e);};}function removeListener(_0x358432,_0x45d668){return function(){WhatsappInteractionEvents['removeListener'](_0x358432,_0x45d668);};}exports[_0xdd0c('0x5')]=function(_0x1f4310){for(var _0x37c31f=0x0,_0x2f5111=events[_0xdd0c('0x6')];_0x37c31f<_0x2f5111;_0x37c31f++){var _0x3f5266=events[_0x37c31f];var _0x79a45f=createListener(_0xdd0c('0x7')+_0x3f5266,_0x1f4310);WhatsappInteractionEvents['on'](_0x3f5266,_0x79a45f);}};
\ No newline at end of file
+var _0x2548=['./whatsappInteraction.events','save','remove','update','emit','removeListener','whatsappInteraction:'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x2548,0xf5));var _0x8254=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2548[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappInteractionEvents=require(_0x8254('0x0'));var events=[_0x8254('0x1'),_0x8254('0x2'),_0x8254('0x3')];function createListener(_0x2609b5,_0x2b513a){return function(_0x99c1c4){_0x2b513a[_0x8254('0x4')](_0x2609b5,_0x99c1c4);};}function removeListener(_0x443cff,_0x3c9c08){return function(){WhatsappInteractionEvents[_0x8254('0x5')](_0x443cff,_0x3c9c08);};}exports['register']=function(_0x31d490){for(var _0x156c1f=0x0,_0x575a74=events['length'];_0x156c1f<_0x575a74;_0x156c1f++){var _0xcb96ff=events[_0x156c1f];var _0xee3b67=createListener(_0x8254('0x6')+_0xcb96ff,_0x31d490);WhatsappInteractionEvents['on'](_0xcb96ff,_0xee3b67);}};
\ No newline at end of file
index 2b45c3c..e5c7bcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6474=['destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','index','describe','/:id','show','tracked','whatsapp','whatsappmessage:create','create','status','put','/:id/accept','accept','/:id/reject','reject'];(function(_0x23095d,_0x4729cd){var _0x4b9d65=function(_0x54097c){while(--_0x54097c){_0x23095d['push'](_0x23095d['shift']());}};_0x4b9d65(++_0x4729cd);}(_0x6474,0x17c));var _0x4647=function(_0x4ff445,_0x2de54e){_0x4ff445=_0x4ff445-0x0;var _0x5c7756=_0x6474[_0x4ff445];return _0x5c7756;};'use strict';var multer=require(_0x4647('0x0'));var util=require(_0x4647('0x1'));var path=require('path');var timeout=require(_0x4647('0x2'));var express=require(_0x4647('0x3'));var router=express[_0x4647('0x4')]();var fs_extra=require(_0x4647('0x5'));var auth=require(_0x4647('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4647('0x7'));var controller=require(_0x4647('0x8'));router[_0x4647('0x9')]('/',auth[_0x4647('0xa')](),controller[_0x4647('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x4647('0xc')]);router[_0x4647('0x9')](_0x4647('0xd'),auth[_0x4647('0xa')](),controller[_0x4647('0xe')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x4647('0xf')](_0x4647('0x10'),_0x4647('0x11')),controller[_0x4647('0x12')]);router['post']('/:id/status',controller[_0x4647('0x13')]);router[_0x4647('0x14')](_0x4647('0xd'),auth[_0x4647('0xa')](),controller['update']);router[_0x4647('0x14')](_0x4647('0x15'),auth['isAuthenticated'](),controller[_0x4647('0x16')]);router[_0x4647('0x14')](_0x4647('0x17'),auth[_0x4647('0xa')](),controller[_0x4647('0x18')]);router['delete'](_0x4647('0xd'),auth['isAuthenticated'](),controller[_0x4647('0x19')]);module[_0x4647('0x1a')]=router;
\ No newline at end of file
+var _0x2d1e=['post','tracked','whatsapp','whatsappmessage:create','/:id/status','status','put','/:id','update','accept','reject','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','index','get','/describe','describe','isAuthenticated','show'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x2d1e,0x16b));var _0xe2d1=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x2d1e[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0xe2d1('0x0'));var util=require(_0xe2d1('0x1'));var path=require('path');var timeout=require(_0xe2d1('0x2'));var express=require('express');var router=express[_0xe2d1('0x3')]();var fs_extra=require(_0xe2d1('0x4'));var auth=require(_0xe2d1('0x5'));var interaction=require(_0xe2d1('0x6'));var config=require(_0xe2d1('0x7'));var controller=require(_0xe2d1('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xe2d1('0x9')]);router[_0xe2d1('0xa')](_0xe2d1('0xb'),auth['isAuthenticated'](),controller[_0xe2d1('0xc')]);router[_0xe2d1('0xa')]('/:id',auth[_0xe2d1('0xd')](),controller[_0xe2d1('0xe')]);router[_0xe2d1('0xf')]('/',auth['isAuthenticated'](),interaction[_0xe2d1('0x10')](_0xe2d1('0x11'),_0xe2d1('0x12')),controller['create']);router[_0xe2d1('0xf')](_0xe2d1('0x13'),controller[_0xe2d1('0x14')]);router[_0xe2d1('0x15')](_0xe2d1('0x16'),auth[_0xe2d1('0xd')](),controller[_0xe2d1('0x17')]);router[_0xe2d1('0x15')]('/:id/accept',auth['isAuthenticated'](),controller[_0xe2d1('0x18')]);router['put']('/:id/reject',auth[_0xe2d1('0xd')](),controller[_0xe2d1('0x19')]);router['delete']('/:id',auth[_0xe2d1('0xd')](),controller['destroy']);module[_0xe2d1('0x1a')]=router;
\ No newline at end of file
index b07fc0d..8d8ecc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa07f=['out','STRING','DATE','TEXT','sequelize','exports','medium','BOOLEAN','ENUM'];(function(_0x5d6fc1,_0x2b5414){var _0x3388da=function(_0xb6891c){while(--_0xb6891c){_0x5d6fc1['push'](_0x5d6fc1['shift']());}};_0x3388da(++_0x2b5414);}(_0xa07f,0xee));var _0xfa07=function(_0x3e09c3,_0x3c1f0a){_0x3e09c3=_0x3e09c3-0x0;var _0xbbfc4c=_0xa07f[_0x3e09c3];return _0xbbfc4c;};'use strict';var Sequelize=require(_0xfa07('0x0'));module[_0xfa07('0x1')]={'body':{'type':Sequelize['TEXT'](_0xfa07('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xfa07('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xfa07('0x4')]('in',_0xfa07('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xfa07('0x6')](0xbe)},'phone':{'type':Sequelize[_0xfa07('0x6')]},'readAt':{'type':Sequelize[_0xfa07('0x7')]},'secret':{'type':Sequelize[_0xfa07('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xfa07('0x6')]},'providerResponse':{'type':Sequelize[_0xfa07('0x8')]}};
\ No newline at end of file
+var _0xfd0f=['exports','medium','BOOLEAN','ENUM','out','STRING','DATE','TEXT','sequelize'];(function(_0x5d5808,_0x56be7d){var _0x43a1a7=function(_0x329097){while(--_0x329097){_0x5d5808['push'](_0x5d5808['shift']());}};_0x43a1a7(++_0x56be7d);}(_0xfd0f,0x1b8));var _0xffd0=function(_0x58af2b,_0x2ead83){_0x58af2b=_0x58af2b-0x0;var _0x2c7d3a=_0xfd0f[_0x58af2b];return _0x2c7d3a;};'use strict';var Sequelize=require(_0xffd0('0x0'));module[_0xffd0('0x1')]={'body':{'type':Sequelize['TEXT'](_0xffd0('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xffd0('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xffd0('0x4')]('in','out'),'defaultValue':_0xffd0('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xffd0('0x6')]},'readAt':{'type':Sequelize[_0xffd0('0x7')]},'secret':{'type':Sequelize[_0xffd0('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xffd0('0x6')]},'providerResponse':{'type':Sequelize[_0xffd0('0x8')]}};
\ No newline at end of file
index b6cbf9e..8a070f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['offset','set','Content-Range','apply','save','update','destroy','name','map','WhatsappMessage','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','describe','../../config/logger','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','WhatsappInteraction','WhatsappInteractionId','isNil','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','accept','EventManager','whatsapp-interactions','get','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','SELECT','event','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','./whatsappMessage.socket','register','jayson/promise','client','http','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','end','status','json','undefined','limit','count'];(function(_0x4121bf,_0x55f7ab){var _0x50ab54=function(_0x36b742){while(--_0x36b742){_0x4121bf['push'](_0x4121bf['shift']());}};_0x50ab54(++_0x55f7ab);}(_0x0295,0x1f0));var _0x5029=function(_0x280dd8,_0x5c8eb8){_0x280dd8=_0x280dd8-0x0;var _0x2a6aa6=_0x0295[_0x280dd8];return _0x2a6aa6;};'use strict';var emlformat=require(_0x5029('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5029('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5029('0x2'));var Mustache=require(_0x5029('0x3'));var util=require(_0x5029('0x4'));var path=require(_0x5029('0x5'));var sox=require(_0x5029('0x6'));var csv=require(_0x5029('0x7'));var ejs=require(_0x5029('0x8'));var fs=require('fs');var fs_extra=require(_0x5029('0x9'));var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];config[_0x5029('0x15')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5029('0x15')]));require(_0x5029('0x16'))[_0x5029('0x17')](socket);var jayson=require(_0x5029('0x18'));var client=jayson[_0x5029('0x19')][_0x5029('0x1a')]({'port':0x232c});var client9002=jayson[_0x5029('0x19')][_0x5029('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x10bf55,_0x326923,_0x457c73,_0x353cba){return new BPromise(function(_0x3786b5,_0x2c273c){var _0x343918=_0x353cba||client;return _0x343918['request'](_0x10bf55,_0x457c73)[_0x5029('0x1b')](function(_0x31a155){logger[_0x5029('0x1c')](_0x5029('0x1d'),_0x326923,_0x5029('0x1e'));logger[_0x5029('0x1f')](_0x5029('0x20'),_0x326923,'request\x20sent',JSON[_0x5029('0x21')](_0x31a155));if(_0x31a155['error']){if(_0x31a155[_0x5029('0x22')][_0x5029('0x23')]===0x1f4){logger[_0x5029('0x22')](_0x5029('0x1d'),_0x326923,_0x31a155['error']['message']);return _0x2c273c(_0x31a155[_0x5029('0x22')]['message']);}logger[_0x5029('0x22')](_0x5029('0x1d'),_0x326923,_0x31a155[_0x5029('0x22')][_0x5029('0x24')]);return _0x3786b5(_0x31a155[_0x5029('0x22')][_0x5029('0x24')]);}else{logger[_0x5029('0x1c')](_0x5029('0x1d'),_0x326923,_0x5029('0x1e'));_0x3786b5(_0x31a155['result']['message']);}})['catch'](function(_0x588d90){logger[_0x5029('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0x326923,_0x588d90);_0x2c273c(_0x588d90);});});}function respondWithStatusCode(_0x5727e9,_0x181da0){_0x181da0=_0x181da0||0xcc;return function(_0x1e7e61){if(_0x1e7e61){return _0x5727e9[_0x5029('0x25')](_0x181da0);}return _0x5727e9['status'](_0x181da0)[_0x5029('0x26')]();};}function respondWithResult(_0xb14bc,_0x5e45c4){_0x5e45c4=_0x5e45c4||0xc8;return function(_0x2b6d99){if(_0x2b6d99){return _0xb14bc[_0x5029('0x27')](_0x5e45c4)[_0x5029('0x28')](_0x2b6d99);}};}function respondWithFilteredResult(_0x4a24b9,_0x32da06){return function(_0x251f99){if(_0x251f99){var _0xe5313e=typeof _0x32da06['offset']===_0x5029('0x29')&&typeof _0x32da06[_0x5029('0x2a')]==='undefined';var _0x1d79b9=_0x251f99[_0x5029('0x2b')];var _0x4434ff=_0xe5313e?0x0:_0x32da06[_0x5029('0x2c')];var _0x196830=_0xe5313e?_0x251f99[_0x5029('0x2b')]:_0x32da06[_0x5029('0x2c')]+_0x32da06[_0x5029('0x2a')];var _0x250156;if(_0x196830>=_0x1d79b9){_0x196830=_0x1d79b9;_0x250156=0xc8;}else{_0x250156=0xce;}_0x4a24b9[_0x5029('0x27')](_0x250156);return _0x4a24b9[_0x5029('0x2d')](_0x5029('0x2e'),_0x4434ff+'-'+_0x196830+'/'+_0x1d79b9)['json'](_0x251f99);}return null;};}function patchUpdates(_0x11ae38){return function(_0x5cb04b){try{jsonpatch[_0x5029('0x2f')](_0x5cb04b,_0x11ae38,!![]);}catch(_0x4f672e){return BPromise['reject'](_0x4f672e);}return _0x5cb04b[_0x5029('0x30')]();};}function saveUpdates(_0x447680,_0x1f9173){return function(_0x4b7330){if(_0x4b7330){return _0x4b7330[_0x5029('0x31')](_0x447680)[_0x5029('0x1b')](function(_0x3f20fb){return _0x3f20fb;});}return null;};}function removeEntity(_0x29c59a,_0x1bb896){return function(_0x4513b9){if(_0x4513b9){return _0x4513b9[_0x5029('0x32')]()[_0x5029('0x1b')](function(){_0x29c59a[_0x5029('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1db45c,_0xa4a432){return function(_0xc110e8){if(!_0xc110e8){_0x1db45c[_0x5029('0x25')](0x194);}return _0xc110e8;};}function handleError(_0x5ecd00,_0x184b8d){_0x184b8d=_0x184b8d||0x1f4;return function(_0x388cca){logger[_0x5029('0x22')](_0x388cca['stack']);if(_0x388cca['name']){delete _0x388cca[_0x5029('0x33')];}_0x5ecd00[_0x5029('0x27')](_0x184b8d)['send'](_0x388cca);};}exports['index']=function(_0x9656f2,_0x157969){var _0x270d66={},_0x3210cb={},_0x33c8c3={'count':0x0,'rows':[]};var _0xfa9ac=_[_0x5029('0x34')](db[_0x5029('0x35')][_0x5029('0x36')],function(_0x3effa4){return{'name':_0x3effa4[_0x5029('0x37')],'type':_0x3effa4[_0x5029('0x38')][_0x5029('0x39')]};});_0x3210cb[_0x5029('0x3a')]=_['map'](_0xfa9ac,'name');_0x3210cb[_0x5029('0x3b')]=_[_0x5029('0x3c')](_0x9656f2[_0x5029('0x3b')]);_0x3210cb['filters']=_[_0x5029('0x3d')](_0x3210cb[_0x5029('0x3a')],_0x3210cb['query']);_0x270d66[_0x5029('0x3e')]=_['intersection'](_0x3210cb[_0x5029('0x3a')],qs['fields'](_0x9656f2[_0x5029('0x3b')][_0x5029('0x3f')]));_0x270d66[_0x5029('0x3e')]=_0x270d66[_0x5029('0x3e')][_0x5029('0x40')]?_0x270d66[_0x5029('0x3e')]:_0x3210cb[_0x5029('0x3a')];if(!_0x9656f2[_0x5029('0x3b')][_0x5029('0x41')]('nolimit')){_0x270d66[_0x5029('0x2a')]=qs[_0x5029('0x2a')](_0x9656f2[_0x5029('0x3b')][_0x5029('0x2a')]);_0x270d66[_0x5029('0x2c')]=qs[_0x5029('0x2c')](_0x9656f2['query'][_0x5029('0x2c')]);}_0x270d66[_0x5029('0x42')]=qs[_0x5029('0x43')](_0x9656f2[_0x5029('0x3b')][_0x5029('0x43')]);_0x270d66['where']=qs[_0x5029('0x44')](_[_0x5029('0x45')](_0x9656f2[_0x5029('0x3b')],_0x3210cb[_0x5029('0x44')]),_0xfa9ac);if(_0x9656f2[_0x5029('0x3b')][_0x5029('0x46')]){_0x270d66[_0x5029('0x47')]=_[_0x5029('0x48')](_0x270d66[_0x5029('0x47')],{'$or':_['map'](_0xfa9ac,function(_0x32d0fa){if(_0x32d0fa[_0x5029('0x38')]!==_0x5029('0x49')){var _0xdb3e78={};_0xdb3e78[_0x32d0fa['name']]={'$like':'%'+_0x9656f2['query'][_0x5029('0x46')]+'%'};return _0xdb3e78;}})});}_0x270d66=_[_0x5029('0x48')]({},_0x270d66,_0x9656f2[_0x5029('0x4a')]);var _0x26a724={'where':_0x270d66[_0x5029('0x47')]};return db[_0x5029('0x35')][_0x5029('0x2b')](_0x26a724)[_0x5029('0x1b')](function(_0x1257a4){_0x33c8c3[_0x5029('0x2b')]=_0x1257a4;if(_0x9656f2[_0x5029('0x3b')][_0x5029('0x4b')]){_0x270d66[_0x5029('0x4c')]=[{'all':!![]}];}return db[_0x5029('0x35')][_0x5029('0x4d')](_0x270d66);})[_0x5029('0x1b')](function(_0x10fc07){_0x33c8c3[_0x5029('0x4e')]=_0x10fc07;return _0x33c8c3;})[_0x5029('0x1b')](respondWithFilteredResult(_0x157969,_0x270d66))[_0x5029('0x4f')](handleError(_0x157969,null));};exports[_0x5029('0x50')]=function(_0x489457,_0x1069c4){var _0x5e1bcb={'raw':!![],'where':{'id':_0x489457[_0x5029('0x51')]['id']}},_0x189d7d={};_0x189d7d['model']=_['keys'](db[_0x5029('0x35')]['rawAttributes']);_0x189d7d['query']=_[_0x5029('0x3c')](_0x489457[_0x5029('0x3b')]);_0x189d7d[_0x5029('0x44')]=_['intersection'](_0x189d7d['model'],_0x189d7d[_0x5029('0x3b')]);_0x5e1bcb[_0x5029('0x3e')]=_['intersection'](_0x189d7d[_0x5029('0x3a')],qs['fields'](_0x489457[_0x5029('0x3b')]['fields']));_0x5e1bcb[_0x5029('0x3e')]=_0x5e1bcb[_0x5029('0x3e')][_0x5029('0x40')]?_0x5e1bcb[_0x5029('0x3e')]:_0x189d7d[_0x5029('0x3a')];if(_0x489457[_0x5029('0x3b')][_0x5029('0x4b')]){_0x5e1bcb[_0x5029('0x4c')]=[{'all':!![]}];}_0x5e1bcb=_['merge']({},_0x5e1bcb,_0x489457[_0x5029('0x4a')]);return db['WhatsappMessage'][_0x5029('0x52')](_0x5e1bcb)[_0x5029('0x1b')](handleEntityNotFound(_0x1069c4,null))['then'](respondWithResult(_0x1069c4,null))[_0x5029('0x4f')](handleError(_0x1069c4,null));};exports['create']=function(_0x58928f,_0x55c57c){return db[_0x5029('0x35')]['create'](_0x58928f[_0x5029('0x53')],{})[_0x5029('0x1b')](respondWithResult(_0x55c57c,0xc9))[_0x5029('0x4f')](handleError(_0x55c57c,null));};exports['update']=function(_0xb43232,_0x53fd4f){if(_0xb43232['body']['id']){delete _0xb43232[_0x5029('0x53')]['id'];}return db[_0x5029('0x35')][_0x5029('0x52')]({'where':{'id':_0xb43232[_0x5029('0x51')]['id']}})[_0x5029('0x1b')](handleEntityNotFound(_0x53fd4f,null))['then'](saveUpdates(_0xb43232[_0x5029('0x53')],null))[_0x5029('0x1b')](respondWithResult(_0x53fd4f,null))[_0x5029('0x4f')](handleError(_0x53fd4f,null));};exports[_0x5029('0x32')]=function(_0x4dca54,_0x33812b){return db[_0x5029('0x35')]['find']({'where':{'id':_0x4dca54['params']['id']}})[_0x5029('0x1b')](handleEntityNotFound(_0x33812b,null))[_0x5029('0x1b')](removeEntity(_0x33812b,null))[_0x5029('0x4f')](handleError(_0x33812b,null));};exports[_0x5029('0x54')]=function(_0x50a9d1,_0x4208ab){return db[_0x5029('0x35')][_0x5029('0x54')]()[_0x5029('0x1b')](respondWithResult(_0x4208ab,null))[_0x5029('0x4f')](handleError(_0x4208ab,null));};var interaction_log=require(_0x5029('0x55'))('whatsapp-interactions');exports['accept']=function(_0x4314c0,_0xae788d,_0x3830f2){var _0x520c00={'agent':{},'channel':_0x5029('0x56')};if(_0x4314c0[_0x5029('0x53')]['id']){delete _0x4314c0[_0x5029('0x53')]['id'];}_0x4314c0[_0x5029('0x53')][_0x5029('0x57')]=!![];_0x4314c0['body'][_0x5029('0x58')]=moment()[_0x5029('0x59')](_0x5029('0x5a'));_0x4314c0['body'][_0x5029('0x5b')]=_0x4314c0['body'][_0x5029('0x5b')]||_0x4314c0['user']['id'];_0x520c00[_0x5029('0x5c')]['id']=_0x4314c0[_0x5029('0x53')][_0x5029('0x5b')];return db[_0x5029('0x35')][_0x5029('0x52')]({'where':{'id':_0x4314c0[_0x5029('0x51')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0xae788d,null))[_0x5029('0x1b')](saveUpdates(_0x4314c0[_0x5029('0x53')],null))[_0x5029('0x1b')](function(_0x151562){if(_0x151562){_0x520c00[_0x5029('0x24')]=_0x151562['get']({'plain':!![]});return db[_0x5029('0x5d')]['find']({'where':{'id':_0x151562[_0x5029('0x5e')]}});}return null;})['then'](handleEntityNotFound(_0xae788d,null))[_0x5029('0x1b')](function(_0x512392){if(_0x512392){return _0x512392[_0x5029('0x31')]({'UserId':_0x4314c0['body']['UserId'],'read1stAt':_[_0x5029('0x5f')](_0x512392['read1stAt'])?moment()[_0x5029('0x59')](_0x5029('0x5a')):undefined});}return null;})[_0x5029('0x1b')](function(_0x554e30){if(_0x554e30){_0x520c00[_0x5029('0x60')]=_0x554e30['get']({'plain':!![]});interaction_log[_0x5029('0x1c')](_0x5029('0x61'),_0x4314c0[_0x5029('0x62')]['id'],_0x4314c0[_0x5029('0x62')][_0x5029('0x33')],_0x4314c0['user'][_0x5029('0x63')],_0x520c00[_0x5029('0x60')]['id'],_0x4314c0['body']?JSON[_0x5029('0x21')](_0x4314c0[_0x5029('0x53')]):_0x5029('0x64'));return respondWithRpcPromise(_0x5029('0x65'),_0x5029('0x66'),_0x520c00);}return null;})[_0x5029('0x1b')](function(_0x5bd84e){var _0x577644=_0x5029('0x67')+_0x5bd84e['message'][_0x5029('0x68')];return db[_0x5029('0x69')]['query'](_0x577644,{'type':db[_0x5029('0x6a')]['QueryTypes']['SELECT'],'raw':!![]})[_0x5029('0x1b')](function(_0x340db9){return _0x340db9;});})[_0x5029('0x1b')](function(_0x3efc4b){if(_0x3efc4b){_0x520c00['message'][_0x5029('0x6b')]=_0x3efc4b[0x0];if(!_0x4314c0[_0x5029('0x53')]['UserId'])return;return db[_0x5029('0x6c')][_0x5029('0x52')]({'where':{'id':_0x4314c0['body']['UserId'],'role':'agent'},'attributes':['id',_0x5029('0x33'),_0x5029('0x6d'),_0x5029('0x6e'),_0x5029('0x6f')],'raw':!![]});}return null;})[_0x5029('0x1b')](function(_0x2ee3bb){if(!_0x2ee3bb)return null;_0x520c00[_0x5029('0x24')][_0x5029('0x5c')]=_0x2ee3bb;return _0x520c00;})[_0x5029('0x1b')](function(_0x5d7139){if(_0x5d7139){if(_0x4314c0['body'][_0x5029('0x70')]){_0x520c00[_0x5029('0x24')][_0x5029('0x71')]=util[_0x5029('0x59')](_0x5029('0x72'),_0x4314c0[_0x5029('0x62')][_0x5029('0x33')]);_0x520c00['message'][_0x5029('0x73')]=_0x520c00[_0x5029('0x73')];_0x520c00[_0x5029('0x24')]['event']=_0x5029('0x74');return respondWithRpcPromise(_0x5029('0x75'),_0x5029('0x75'),{'event':'acceptmessage','message':_0x520c00[_0x5029('0x24')]},client9002)[_0x5029('0x1b')](function(){return _0x520c00;});}return _0x520c00;}return null;})[_0x5029('0x1b')](respondWithResult(_0xae788d,null))['catch'](handleError(_0xae788d,null));};var interaction_log=require(_0x5029('0x55'))(_0x5029('0x76'));exports['reject']=function(_0x2cdd11,_0x42d795,_0x3f3118){var _0x124631={'agent':{},'channel':_0x5029('0x56')};if(_0x2cdd11['body']['id']){delete _0x2cdd11[_0x5029('0x53')]['id'];}_0x2cdd11[_0x5029('0x53')][_0x5029('0x5b')]=_0x2cdd11[_0x5029('0x53')][_0x5029('0x5b')]||_0x2cdd11['user']['id'];_0x124631[_0x5029('0x5c')]['id']=_0x2cdd11[_0x5029('0x53')][_0x5029('0x5b')];return db['WhatsappMessage'][_0x5029('0x52')]({'where':{'id':_0x2cdd11[_0x5029('0x51')]['id'],'UserId':null}})[_0x5029('0x1b')](handleEntityNotFound(_0x42d795,null))[_0x5029('0x1b')](function(_0x1b3860){if(_0x1b3860){_0x124631[_0x5029('0x24')]=_0x1b3860[_0x5029('0x77')]({'plain':!![]});return db['WhatsappInteraction'][_0x5029('0x52')]({'where':{'id':_0x1b3860[_0x5029('0x5e')]}});}return null;})[_0x5029('0x1b')](handleEntityNotFound(_0x42d795,null))[_0x5029('0x1b')](function(_0x2dcfee){if(_0x2dcfee){_0x124631['interaction']=_0x2dcfee[_0x5029('0x77')]({'plain':!![]});interaction_log[_0x5029('0x1c')](_0x5029('0x78'),_0x2cdd11['user']['id'],_0x2cdd11[_0x5029('0x62')][_0x5029('0x33')],_0x2cdd11['user']['role'],_0x124631['interaction']['id'],_0x2cdd11[_0x5029('0x53')]?JSON[_0x5029('0x21')](_0x2cdd11[_0x5029('0x53')]):_0x5029('0x64'));return respondWithRpcPromise(_0x5029('0x79'),'rejectMessage',_0x124631);}return null;})[_0x5029('0x1b')](function(_0x2e4782){var _0x2c0540='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2e4782['message'][_0x5029('0x68')];return db[_0x5029('0x69')][_0x5029('0x3b')](_0x2c0540,{'type':db[_0x5029('0x6a')]['QueryTypes'][_0x5029('0x7a')],'raw':!![]})[_0x5029('0x1b')](function(_0x13df8d){return _0x13df8d;});})[_0x5029('0x1b')](function(_0x49f6b8){if(_0x49f6b8){_0x124631[_0x5029('0x24')][_0x5029('0x6b')]=_0x49f6b8[0x0];if(!_0x2cdd11[_0x5029('0x53')]['UserId'])return;return db[_0x5029('0x6c')]['find']({'where':{'id':_0x2cdd11['body'][_0x5029('0x5b')],'role':'agent'},'attributes':['id',_0x5029('0x33'),_0x5029('0x6d'),_0x5029('0x6e'),_0x5029('0x6f')],'raw':!![]});}return null;})[_0x5029('0x1b')](function(_0x227d13){if(!_0x227d13)return null;_0x124631[_0x5029('0x24')][_0x5029('0x5c')]=_0x227d13;return _0x124631;})['then'](function(_0x5b7694){if(_0x5b7694){_0x5b7694[_0x5029('0x24')]['interface']=util['format'](_0x5029('0x72'),_0x2cdd11['user']['name']);_0x5b7694[_0x5029('0x24')][_0x5029('0x73')]=_0x124631[_0x5029('0x73')];_0x5b7694[_0x5029('0x24')][_0x5029('0x7b')]='reject';respondWithRpcPromise(_0x5029('0x75'),_0x5029('0x75'),{'event':_0x5029('0x7c'),'message':_0x5b7694['message']},client9002);return _0x124631;}return null;})[_0x5029('0x1b')](respondWithResult(_0x42d795,null))[_0x5029('0x4f')](handleError(_0x42d795,null));};exports[_0x5029('0x27')]=function(_0x35bcb1,_0x3867a1,_0x47b720){if(_0x35bcb1['body']['id']){delete _0x35bcb1[_0x5029('0x53')]['id'];}var _0xe2189;return db['WhatsappMessage'][_0x5029('0x52')]({'where':{'id':_0x35bcb1[_0x5029('0x51')]['id']}})[_0x5029('0x1b')](handleEntityNotFound(_0x3867a1,null))[_0x5029('0x1b')](function(_0x13d02e){if(_0x13d02e){_0xe2189=_0x13d02e;return db[_0x5029('0x7d')][_0x5029('0x52')]({'where':{'id':_0x13d02e[_0x5029('0x7e')]}});}})['then'](handleEntityNotFound(_0x3867a1,null))['then'](function(_0x4243c3){if(_0x4243c3){logger['debug'](_0x5029('0x7f'),'status',_0x5029('0x80'),_0x4243c3[_0x5029('0x38')],util[_0x5029('0x81')](_0x35bcb1['body'],{'showHidden':![],'depth':null}));switch(_0x4243c3[_0x5029('0x38')]){case _0x5029('0x82'):if(_0x35bcb1[_0x5029('0x53')]['MessageSid']&&_0x35bcb1[_0x5029('0x53')][_0x5029('0x83')]===_0xe2189[_0x5029('0x84')]&&_0x35bcb1[_0x5029('0x53')][_0x5029('0x85')]&&_0x35bcb1[_0x5029('0x53')][_0x5029('0x85')]===_0x5029('0x57')){return _0xe2189[_0x5029('0x31')]({'read':!![]});}else{logger[_0x5029('0x22')](_0x5029('0x86'),_0x5029('0x27'),_0x5029('0x82'),util[_0x5029('0x81')](_0x35bcb1[_0x5029('0x53')],{'showHidden':![],'depth':null}));}break;}return _0xe2189;}})[_0x5029('0x1b')](respondWithResult(_0x3867a1,null))[_0x5029('0x4f')](handleError(_0x3867a1,null));};
\ No newline at end of file
+var _0xd96f=['read1stAt','interaction','user','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','email','internal','manual','SIP/%s','channel','event','accept','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','rejectMessage','contact','User','fullname','interface','motionChannel','EventManager','rejectmessage','WhatsappAccount','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','fast-json-patch','request-promise','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','defaults','localhost','socket.io-emitter','redis','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','sendStatus','name','send','index','rawAttributes','fieldName','type','model','map','keys','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','WhatsappMessage','includeAll','include','findAll','rows','show','create','body','params','find','describe','whatsapp-interactions','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','WhatsappInteraction','WhatsappInteractionId'];(function(_0x583eca,_0x2e0211){var _0x2bcd31=function(_0x2cbe8d){while(--_0x2cbe8d){_0x583eca['push'](_0x583eca['shift']());}};_0x2bcd31(++_0x2e0211);}(_0xd96f,0x143));var _0xfd96=function(_0xe3d52b,_0x5a98f9){_0xe3d52b=_0xe3d52b-0x0;var _0x36ebde=_0xd96f[_0xe3d52b];return _0x36ebde;};'use strict';var emlformat=require(_0xfd96('0x0'));var rimraf=require(_0xfd96('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfd96('0x2'));var rp=require(_0xfd96('0x3'));var moment=require('moment');var BPromise=require(_0xfd96('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xfd96('0x5'));var csv=require(_0xfd96('0x6'));var ejs=require(_0xfd96('0x7'));var fs=require('fs');var fs_extra=require(_0xfd96('0x8'));var _=require(_0xfd96('0x9'));var squel=require(_0xfd96('0xa'));var crypto=require(_0xfd96('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xfd96('0xc'));var toCsv=require(_0xfd96('0x6'));var querystring=require(_0xfd96('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfd96('0xe'));var qs=require(_0xfd96('0xf'));var as=require(_0xfd96('0x10'));var hardwareService=require(_0xfd96('0x11'));var logger=require(_0xfd96('0x12'))(_0xfd96('0x13'));var utils=require('../../config/utils');var config=require(_0xfd96('0x14'));var licenseUtil=require(_0xfd96('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xfd96('0x16')](config['redis'],{'host':_0xfd96('0x17'),'port':0x18eb});var socket=require(_0xfd96('0x18'))(new Redis(config[_0xfd96('0x19')]));require(_0xfd96('0x1a'))[_0xfd96('0x1b')](socket);var jayson=require(_0xfd96('0x1c'));var client=jayson[_0xfd96('0x1d')][_0xfd96('0x1e')]({'port':0x232c});var client9002=jayson['client'][_0xfd96('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x16f6b9,_0x4f7d1f,_0x1c3379,_0x1829cf){return new BPromise(function(_0x42c133,_0x2fb004){var _0x29f79e=_0x1829cf||client;return _0x29f79e[_0xfd96('0x1f')](_0x16f6b9,_0x1c3379)[_0xfd96('0x20')](function(_0x2b21cc){logger[_0xfd96('0x21')](_0xfd96('0x22'),_0x4f7d1f,_0xfd96('0x23'));logger[_0xfd96('0x24')](_0xfd96('0x25'),_0x4f7d1f,_0xfd96('0x23'),JSON['stringify'](_0x2b21cc));if(_0x2b21cc[_0xfd96('0x26')]){if(_0x2b21cc[_0xfd96('0x26')][_0xfd96('0x27')]===0x1f4){logger[_0xfd96('0x26')](_0xfd96('0x22'),_0x4f7d1f,_0x2b21cc[_0xfd96('0x26')][_0xfd96('0x28')]);return _0x2fb004(_0x2b21cc['error'][_0xfd96('0x28')]);}logger[_0xfd96('0x26')]('WhatsappMessage,\x20%s,\x20%s',_0x4f7d1f,_0x2b21cc[_0xfd96('0x26')]['message']);return _0x42c133(_0x2b21cc[_0xfd96('0x26')][_0xfd96('0x28')]);}else{logger[_0xfd96('0x21')](_0xfd96('0x22'),_0x4f7d1f,_0xfd96('0x23'));_0x42c133(_0x2b21cc[_0xfd96('0x29')][_0xfd96('0x28')]);}})[_0xfd96('0x2a')](function(_0x4f32df){logger['error'](_0xfd96('0x22'),_0x4f7d1f,_0x4f32df);_0x2fb004(_0x4f32df);});});}function respondWithStatusCode(_0x1283d6,_0x439a2b){_0x439a2b=_0x439a2b||0xcc;return function(_0x312e1b){if(_0x312e1b){return _0x1283d6['sendStatus'](_0x439a2b);}return _0x1283d6[_0xfd96('0x2b')](_0x439a2b)[_0xfd96('0x2c')]();};}function respondWithResult(_0x6e3338,_0x3ce340){_0x3ce340=_0x3ce340||0xc8;return function(_0x2f90bf){if(_0x2f90bf){return _0x6e3338[_0xfd96('0x2b')](_0x3ce340)[_0xfd96('0x2d')](_0x2f90bf);}};}function respondWithFilteredResult(_0x1945af,_0x57d761){return function(_0x201101){if(_0x201101){var _0x1ec383=typeof _0x57d761[_0xfd96('0x2e')]===_0xfd96('0x2f')&&typeof _0x57d761[_0xfd96('0x30')]===_0xfd96('0x2f');var _0x538f4b=_0x201101[_0xfd96('0x31')];var _0x44e38e=_0x1ec383?0x0:_0x57d761[_0xfd96('0x2e')];var _0x1e5e21=_0x1ec383?_0x201101[_0xfd96('0x31')]:_0x57d761[_0xfd96('0x2e')]+_0x57d761[_0xfd96('0x30')];var _0x4ed8b5;if(_0x1e5e21>=_0x538f4b){_0x1e5e21=_0x538f4b;_0x4ed8b5=0xc8;}else{_0x4ed8b5=0xce;}_0x1945af[_0xfd96('0x2b')](_0x4ed8b5);return _0x1945af[_0xfd96('0x32')]('Content-Range',_0x44e38e+'-'+_0x1e5e21+'/'+_0x538f4b)[_0xfd96('0x2d')](_0x201101);}return null;};}function patchUpdates(_0x346f45){return function(_0x1f8fff){try{jsonpatch[_0xfd96('0x33')](_0x1f8fff,_0x346f45,!![]);}catch(_0x4fe285){return BPromise[_0xfd96('0x34')](_0x4fe285);}return _0x1f8fff[_0xfd96('0x35')]();};}function saveUpdates(_0x41de90,_0x2232b0){return function(_0x3a16ed){if(_0x3a16ed){return _0x3a16ed[_0xfd96('0x36')](_0x41de90)[_0xfd96('0x20')](function(_0x21cee5){return _0x21cee5;});}return null;};}function removeEntity(_0x5e73eb,_0x1ed581){return function(_0x4285ae){if(_0x4285ae){return _0x4285ae[_0xfd96('0x37')]()[_0xfd96('0x20')](function(){_0x5e73eb[_0xfd96('0x2b')](0xcc)[_0xfd96('0x2c')]();});}};}function handleEntityNotFound(_0x283862,_0x58fc93){return function(_0x391984){if(!_0x391984){_0x283862[_0xfd96('0x38')](0x194);}return _0x391984;};}function handleError(_0x89bdfa,_0x59734c){_0x59734c=_0x59734c||0x1f4;return function(_0x43db2d){logger['error'](_0x43db2d['stack']);if(_0x43db2d[_0xfd96('0x39')]){delete _0x43db2d[_0xfd96('0x39')];}_0x89bdfa['status'](_0x59734c)[_0xfd96('0x3a')](_0x43db2d);};}exports[_0xfd96('0x3b')]=function(_0x33b619,_0x10b32f){var _0x15f4a0={},_0x187dc0={},_0x720549={'count':0x0,'rows':[]};var _0x2211a4=_['map'](db['WhatsappMessage'][_0xfd96('0x3c')],function(_0x5c9250){return{'name':_0x5c9250[_0xfd96('0x3d')],'type':_0x5c9250[_0xfd96('0x3e')]['key']};});_0x187dc0[_0xfd96('0x3f')]=_[_0xfd96('0x40')](_0x2211a4,'name');_0x187dc0['query']=_[_0xfd96('0x41')](_0x33b619['query']);_0x187dc0['filters']=_[_0xfd96('0x42')](_0x187dc0[_0xfd96('0x3f')],_0x187dc0[_0xfd96('0x43')]);_0x15f4a0['attributes']=_['intersection'](_0x187dc0['model'],qs[_0xfd96('0x44')](_0x33b619[_0xfd96('0x43')]['fields']));_0x15f4a0['attributes']=_0x15f4a0[_0xfd96('0x45')][_0xfd96('0x46')]?_0x15f4a0[_0xfd96('0x45')]:_0x187dc0[_0xfd96('0x3f')];if(!_0x33b619[_0xfd96('0x43')][_0xfd96('0x47')](_0xfd96('0x48'))){_0x15f4a0[_0xfd96('0x30')]=qs[_0xfd96('0x30')](_0x33b619[_0xfd96('0x43')][_0xfd96('0x30')]);_0x15f4a0['offset']=qs[_0xfd96('0x2e')](_0x33b619[_0xfd96('0x43')]['offset']);}_0x15f4a0[_0xfd96('0x49')]=qs[_0xfd96('0x4a')](_0x33b619[_0xfd96('0x43')][_0xfd96('0x4a')]);_0x15f4a0[_0xfd96('0x4b')]=qs[_0xfd96('0x4c')](_['pick'](_0x33b619[_0xfd96('0x43')],_0x187dc0[_0xfd96('0x4c')]),_0x2211a4);if(_0x33b619[_0xfd96('0x43')][_0xfd96('0x4d')]){_0x15f4a0['where']=_[_0xfd96('0x4e')](_0x15f4a0[_0xfd96('0x4b')],{'$or':_[_0xfd96('0x40')](_0x2211a4,function(_0x21a8a3){if(_0x21a8a3['type']!==_0xfd96('0x4f')){var _0x2286cb={};_0x2286cb[_0x21a8a3[_0xfd96('0x39')]]={'$like':'%'+_0x33b619[_0xfd96('0x43')][_0xfd96('0x4d')]+'%'};return _0x2286cb;}})});}_0x15f4a0=_[_0xfd96('0x4e')]({},_0x15f4a0,_0x33b619[_0xfd96('0x50')]);var _0x3c2110={'where':_0x15f4a0['where']};return db[_0xfd96('0x51')][_0xfd96('0x31')](_0x3c2110)[_0xfd96('0x20')](function(_0x533b24){_0x720549[_0xfd96('0x31')]=_0x533b24;if(_0x33b619[_0xfd96('0x43')][_0xfd96('0x52')]){_0x15f4a0[_0xfd96('0x53')]=[{'all':!![]}];}return db[_0xfd96('0x51')][_0xfd96('0x54')](_0x15f4a0);})[_0xfd96('0x20')](function(_0x15c6dc){_0x720549[_0xfd96('0x55')]=_0x15c6dc;return _0x720549;})[_0xfd96('0x20')](respondWithFilteredResult(_0x10b32f,_0x15f4a0))[_0xfd96('0x2a')](handleError(_0x10b32f,null));};exports[_0xfd96('0x56')]=function(_0x236e0c,_0x5ebd68){var _0x5c5e70={'raw':!![],'where':{'id':_0x236e0c['params']['id']}},_0x258b1a={};_0x258b1a[_0xfd96('0x3f')]=_['keys'](db[_0xfd96('0x51')]['rawAttributes']);_0x258b1a[_0xfd96('0x43')]=_[_0xfd96('0x41')](_0x236e0c['query']);_0x258b1a[_0xfd96('0x4c')]=_['intersection'](_0x258b1a[_0xfd96('0x3f')],_0x258b1a[_0xfd96('0x43')]);_0x5c5e70[_0xfd96('0x45')]=_[_0xfd96('0x42')](_0x258b1a[_0xfd96('0x3f')],qs['fields'](_0x236e0c['query']['fields']));_0x5c5e70[_0xfd96('0x45')]=_0x5c5e70[_0xfd96('0x45')]['length']?_0x5c5e70[_0xfd96('0x45')]:_0x258b1a[_0xfd96('0x3f')];if(_0x236e0c[_0xfd96('0x43')][_0xfd96('0x52')]){_0x5c5e70['include']=[{'all':!![]}];}_0x5c5e70=_[_0xfd96('0x4e')]({},_0x5c5e70,_0x236e0c[_0xfd96('0x50')]);return db[_0xfd96('0x51')]['find'](_0x5c5e70)[_0xfd96('0x20')](handleEntityNotFound(_0x5ebd68,null))[_0xfd96('0x20')](respondWithResult(_0x5ebd68,null))[_0xfd96('0x2a')](handleError(_0x5ebd68,null));};exports['create']=function(_0x2bd229,_0x5538dc){return db['WhatsappMessage'][_0xfd96('0x57')](_0x2bd229[_0xfd96('0x58')],{})[_0xfd96('0x20')](respondWithResult(_0x5538dc,0xc9))['catch'](handleError(_0x5538dc,null));};exports[_0xfd96('0x36')]=function(_0x1951eb,_0x5df832){if(_0x1951eb[_0xfd96('0x58')]['id']){delete _0x1951eb[_0xfd96('0x58')]['id'];}return db[_0xfd96('0x51')]['find']({'where':{'id':_0x1951eb[_0xfd96('0x59')]['id']}})[_0xfd96('0x20')](handleEntityNotFound(_0x5df832,null))['then'](saveUpdates(_0x1951eb[_0xfd96('0x58')],null))[_0xfd96('0x20')](respondWithResult(_0x5df832,null))[_0xfd96('0x2a')](handleError(_0x5df832,null));};exports[_0xfd96('0x37')]=function(_0x14f4d4,_0x4f814e){return db['WhatsappMessage'][_0xfd96('0x5a')]({'where':{'id':_0x14f4d4['params']['id']}})[_0xfd96('0x20')](handleEntityNotFound(_0x4f814e,null))[_0xfd96('0x20')](removeEntity(_0x4f814e,null))[_0xfd96('0x2a')](handleError(_0x4f814e,null));};exports[_0xfd96('0x5b')]=function(_0x3eb369,_0x30e1a8){return db['WhatsappMessage'][_0xfd96('0x5b')]()[_0xfd96('0x20')](respondWithResult(_0x30e1a8,null))[_0xfd96('0x2a')](handleError(_0x30e1a8,null));};var interaction_log=require(_0xfd96('0x12'))(_0xfd96('0x5c'));exports['accept']=function(_0x1a16ef,_0x4bdf81,_0x19e639){var _0x629ffe={'agent':{},'channel':_0xfd96('0x5d')};if(_0x1a16ef['body']['id']){delete _0x1a16ef[_0xfd96('0x58')]['id'];}_0x1a16ef[_0xfd96('0x58')][_0xfd96('0x5e')]=!![];_0x1a16ef[_0xfd96('0x58')][_0xfd96('0x5f')]=moment()[_0xfd96('0x60')](_0xfd96('0x61'));_0x1a16ef['body'][_0xfd96('0x62')]=_0x1a16ef[_0xfd96('0x58')][_0xfd96('0x62')]||_0x1a16ef['user']['id'];_0x629ffe[_0xfd96('0x63')]['id']=_0x1a16ef[_0xfd96('0x58')]['UserId'];return db[_0xfd96('0x51')][_0xfd96('0x5a')]({'where':{'id':_0x1a16ef[_0xfd96('0x59')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4bdf81,null))[_0xfd96('0x20')](saveUpdates(_0x1a16ef[_0xfd96('0x58')],null))[_0xfd96('0x20')](function(_0x5b731d){if(_0x5b731d){_0x629ffe[_0xfd96('0x28')]=_0x5b731d[_0xfd96('0x64')]({'plain':!![]});return db[_0xfd96('0x65')]['find']({'where':{'id':_0x5b731d[_0xfd96('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x4bdf81,null))[_0xfd96('0x20')](function(_0x476b68){if(_0x476b68){return _0x476b68[_0xfd96('0x36')]({'UserId':_0x1a16ef[_0xfd96('0x58')][_0xfd96('0x62')],'read1stAt':_['isNil'](_0x476b68[_0xfd96('0x67')])?moment()[_0xfd96('0x60')](_0xfd96('0x61')):undefined});}return null;})[_0xfd96('0x20')](function(_0x174f00){if(_0x174f00){_0x629ffe[_0xfd96('0x68')]=_0x174f00[_0xfd96('0x64')]({'plain':!![]});interaction_log['info']('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1a16ef[_0xfd96('0x69')]['id'],_0x1a16ef['user'][_0xfd96('0x39')],_0x1a16ef['user']['role'],_0x629ffe[_0xfd96('0x68')]['id'],_0x1a16ef[_0xfd96('0x58')]?JSON['stringify'](_0x1a16ef[_0xfd96('0x58')]):_0xfd96('0x6a'));return respondWithRpcPromise(_0xfd96('0x6b'),_0xfd96('0x6c'),_0x629ffe);}return null;})[_0xfd96('0x20')](function(_0x5dba9d){var _0x1bfbcf=_0xfd96('0x6d')+_0x5dba9d['message'][_0xfd96('0x6e')];return db[_0xfd96('0x6f')]['query'](_0x1bfbcf,{'type':db[_0xfd96('0x70')][_0xfd96('0x71')][_0xfd96('0x72')],'raw':!![]})['then'](function(_0x3c8c96){return _0x3c8c96;});})[_0xfd96('0x20')](function(_0x530768){if(_0x530768){_0x629ffe['message']['contact']=_0x530768[0x0];if(!_0x1a16ef[_0xfd96('0x58')]['UserId'])return;return db['User'][_0xfd96('0x5a')]({'where':{'id':_0x1a16ef[_0xfd96('0x58')][_0xfd96('0x62')],'role':_0xfd96('0x63')},'attributes':['id',_0xfd96('0x39'),'fullname',_0xfd96('0x73'),_0xfd96('0x74')],'raw':!![]});}return null;})[_0xfd96('0x20')](function(_0x5074e1){if(!_0x5074e1)return null;_0x629ffe[_0xfd96('0x28')]['agent']=_0x5074e1;return _0x629ffe;})['then'](function(_0x5ec0d3){if(_0x5ec0d3){if(_0x1a16ef[_0xfd96('0x58')][_0xfd96('0x75')]){_0x629ffe[_0xfd96('0x28')]['interface']=util[_0xfd96('0x60')](_0xfd96('0x76'),_0x1a16ef[_0xfd96('0x69')][_0xfd96('0x39')]);_0x629ffe['message'][_0xfd96('0x77')]=_0x629ffe[_0xfd96('0x77')];_0x629ffe[_0xfd96('0x28')]['motionChannel']=_0x629ffe[_0xfd96('0x77')];_0x629ffe[_0xfd96('0x28')][_0xfd96('0x78')]=_0xfd96('0x79');return respondWithRpcPromise('EventManager','EventManager',{'event':_0xfd96('0x7a'),'message':_0x629ffe[_0xfd96('0x28')]},client9002)[_0xfd96('0x20')](function(){return _0x629ffe;});}return _0x629ffe;}return null;})[_0xfd96('0x20')](respondWithResult(_0x4bdf81,null))[_0xfd96('0x2a')](handleError(_0x4bdf81,null));};var interaction_log=require('../../config/logger')(_0xfd96('0x5c'));exports[_0xfd96('0x34')]=function(_0x1e1c2e,_0x383fae,_0x3aa6ab){var _0x34eb69={'agent':{},'channel':_0xfd96('0x5d')};if(_0x1e1c2e[_0xfd96('0x58')]['id']){delete _0x1e1c2e['body']['id'];}_0x1e1c2e[_0xfd96('0x58')][_0xfd96('0x62')]=_0x1e1c2e[_0xfd96('0x58')][_0xfd96('0x62')]||_0x1e1c2e[_0xfd96('0x69')]['id'];_0x34eb69['agent']['id']=_0x1e1c2e[_0xfd96('0x58')]['UserId'];return db[_0xfd96('0x51')]['find']({'where':{'id':_0x1e1c2e[_0xfd96('0x59')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x383fae,null))['then'](function(_0x57e7ed){if(_0x57e7ed){_0x34eb69['message']=_0x57e7ed[_0xfd96('0x64')]({'plain':!![]});return db['WhatsappInteraction'][_0xfd96('0x5a')]({'where':{'id':_0x57e7ed[_0xfd96('0x66')]}});}return null;})[_0xfd96('0x20')](handleEntityNotFound(_0x383fae,null))['then'](function(_0x311621){if(_0x311621){_0x34eb69[_0xfd96('0x68')]=_0x311621['get']({'plain':!![]});interaction_log['info'](_0xfd96('0x7b'),_0x1e1c2e[_0xfd96('0x69')]['id'],_0x1e1c2e['user'][_0xfd96('0x39')],_0x1e1c2e[_0xfd96('0x69')][_0xfd96('0x7c')],_0x34eb69[_0xfd96('0x68')]['id'],_0x1e1c2e['body']?JSON[_0xfd96('0x7d')](_0x1e1c2e[_0xfd96('0x58')]):'null');return respondWithRpcPromise('RejectMessage',_0xfd96('0x7e'),_0x34eb69);}return null;})[_0xfd96('0x20')](function(_0x5beefa){var _0x456610=_0xfd96('0x6d')+_0x5beefa['message'][_0xfd96('0x6e')];return db[_0xfd96('0x6f')][_0xfd96('0x43')](_0x456610,{'type':db[_0xfd96('0x70')][_0xfd96('0x71')][_0xfd96('0x72')],'raw':!![]})[_0xfd96('0x20')](function(_0x246282){return _0x246282;});})[_0xfd96('0x20')](function(_0x5a6459){if(_0x5a6459){_0x34eb69['message'][_0xfd96('0x7f')]=_0x5a6459[0x0];if(!_0x1e1c2e['body']['UserId'])return;return db[_0xfd96('0x80')][_0xfd96('0x5a')]({'where':{'id':_0x1e1c2e[_0xfd96('0x58')][_0xfd96('0x62')],'role':_0xfd96('0x63')},'attributes':['id',_0xfd96('0x39'),_0xfd96('0x81'),_0xfd96('0x73'),'internal'],'raw':!![]});}return null;})[_0xfd96('0x20')](function(_0x2661ce){if(!_0x2661ce)return null;_0x34eb69[_0xfd96('0x28')][_0xfd96('0x63')]=_0x2661ce;return _0x34eb69;})[_0xfd96('0x20')](function(_0x9c8a24){if(_0x9c8a24){_0x9c8a24[_0xfd96('0x28')][_0xfd96('0x82')]=util['format'](_0xfd96('0x76'),_0x1e1c2e['user'][_0xfd96('0x39')]);_0x9c8a24[_0xfd96('0x28')][_0xfd96('0x77')]=_0x34eb69['channel'];_0x9c8a24[_0xfd96('0x28')][_0xfd96('0x83')]=_0x34eb69[_0xfd96('0x77')];_0x9c8a24[_0xfd96('0x28')][_0xfd96('0x78')]=_0xfd96('0x34');respondWithRpcPromise(_0xfd96('0x84'),'EventManager',{'event':_0xfd96('0x85'),'message':_0x9c8a24[_0xfd96('0x28')]},client9002);return _0x34eb69;}return null;})[_0xfd96('0x20')](respondWithResult(_0x383fae,null))[_0xfd96('0x2a')](handleError(_0x383fae,null));};exports[_0xfd96('0x2b')]=function(_0x59f979,_0x1e3430,_0x50d4ce){if(_0x59f979[_0xfd96('0x58')]['id']){delete _0x59f979['body']['id'];}var _0x3dabe5;return db[_0xfd96('0x51')][_0xfd96('0x5a')]({'where':{'id':_0x59f979[_0xfd96('0x59')]['id']}})[_0xfd96('0x20')](handleEntityNotFound(_0x1e3430,null))[_0xfd96('0x20')](function(_0x2800d1){if(_0x2800d1){_0x3dabe5=_0x2800d1;return db[_0xfd96('0x86')][_0xfd96('0x5a')]({'where':{'id':_0x2800d1['WhatsappAccountId']}});}})[_0xfd96('0x20')](handleEntityNotFound(_0x1e3430,null))[_0xfd96('0x20')](function(_0x5deb96){if(_0x5deb96){logger[_0xfd96('0x24')](_0xfd96('0x87'),'status','received\x20delivery\x20report\x20from',_0x5deb96[_0xfd96('0x3e')],util[_0xfd96('0x88')](_0x59f979[_0xfd96('0x58')],{'showHidden':![],'depth':null}));switch(_0x5deb96[_0xfd96('0x3e')]){case _0xfd96('0x89'):if(_0x59f979[_0xfd96('0x58')][_0xfd96('0x8a')]&&_0x59f979[_0xfd96('0x58')][_0xfd96('0x8a')]===_0x3dabe5[_0xfd96('0x8b')]&&_0x59f979[_0xfd96('0x58')][_0xfd96('0x8c')]&&_0x59f979[_0xfd96('0x58')][_0xfd96('0x8c')]===_0xfd96('0x5e')){return _0x3dabe5[_0xfd96('0x36')]({'read':!![]});}else{logger['error'](_0xfd96('0x8d'),_0xfd96('0x2b'),_0xfd96('0x89'),util[_0xfd96('0x88')](_0x59f979[_0xfd96('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x3dabe5;}})[_0xfd96('0x20')](respondWithResult(_0x1e3430,null))['catch'](handleError(_0x1e3430,null));};
\ No newline at end of file
index 845ad39..692b6e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x131e=['hasOwnProperty','hook','setMaxListeners','save','update','remove','emit'];(function(_0x12e650,_0x33f29f){var _0x5b56b1=function(_0xa7f3d8){while(--_0xa7f3d8){_0x12e650['push'](_0x12e650['shift']());}};_0x5b56b1(++_0x33f29f);}(_0x131e,0x1ec));var _0xe131=function(_0x531d3c,_0x5109c3){_0x531d3c=_0x531d3c-0x0;var _0x4b1bea=_0x131e[_0x531d3c];return _0x4b1bea;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xe131('0x0')](0x0);var events={'afterCreate':_0xe131('0x1'),'afterUpdate':_0xe131('0x2'),'afterDestroy':_0xe131('0x3')};function emitEvent(_0x30486b){return function(_0x761c,_0x4ff7f7,_0x2fc440){WhatsappMessageEvents[_0xe131('0x4')](_0x30486b+':'+_0x761c['id'],_0x761c);WhatsappMessageEvents[_0xe131('0x4')](_0x30486b,_0x761c);_0x2fc440(null);};}for(var e in events){if(events[_0xe131('0x5')](e)){var event=events[e];WhatsappMessage[_0xe131('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0xc900=['remove','emit','hasOwnProperty','hook','WhatsappMessage','setMaxListeners','save'];(function(_0x4b08e6,_0xe6e7d8){var _0x469a4b=function(_0x23190a){while(--_0x23190a){_0x4b08e6['push'](_0x4b08e6['shift']());}};_0x469a4b(++_0xe6e7d8);}(_0xc900,0xb3));var _0x0c90=function(_0x47b68d,_0x303bf3){_0x47b68d=_0x47b68d-0x0;var _0x7c3e2d=_0xc900[_0x47b68d];return _0x7c3e2d;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require('../../mysqldb')['db'][_0x0c90('0x0')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x0c90('0x1')](0x0);var events={'afterCreate':_0x0c90('0x2'),'afterUpdate':'update','afterDestroy':_0x0c90('0x3')};function emitEvent(_0x3072aa){return function(_0x492f22,_0x188bba,_0x3f351c){WhatsappMessageEvents[_0x0c90('0x4')](_0x3072aa+':'+_0x492f22['id'],_0x492f22);WhatsappMessageEvents[_0x0c90('0x4')](_0x3072aa,_0x492f22);_0x3f351c(null);};}for(var e in events){if(events[_0x0c90('0x5')](e)){var event=events[e];WhatsappMessage[_0x0c90('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index 243f3b9..34816d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf28f=['messages','create','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise','../../config/environment','exports','define','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','toLowerCase','out','isNil','findOne','WhatsappInteractionId','update','catch','error','direction','secret','WhatsappAccount','find','then','type','twilio','authToken','phone','accountSid'];(function(_0x2a3c4d,_0x9c6b37){var _0x55c390=function(_0x4871cf){while(--_0x4871cf){_0x2a3c4d['push'](_0x2a3c4d['shift']());}};_0x55c390(++_0x9c6b37);}(_0xf28f,0x6f));var _0xff28=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0xf28f[_0x3ab9ee];return _0x82ee88;};'use strict';var _=require(_0xff28('0x0'));var util=require('util');var logger=require(_0xff28('0x1'))(_0xff28('0x2'));var moment=require('moment');var BPromise=require(_0xff28('0x3'));var rp=require(_0xff28('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xff28('0x5'));var attributes=require('./whatsappMessage.attributes');module[_0xff28('0x6')]=function(_0x44eba8,_0x44fabd){return _0x44eba8[_0xff28('0x7')]('WhatsappMessage',attributes,{'tableName':_0xff28('0x8'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xff28('0x9')]},{'name':_0xff28('0xa'),'fields':[_0xff28('0xb')],'type':_0xff28('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xfe2a7a,_0x51fd71,_0x4eefe3){var _0xa98d6e=_0x44eba8[_0xff28('0xd')];var _0x372302=_0xfe2a7a[_0xff28('0xe')]({'plain':!![]});if(_0x372302['direction']['toLowerCase']()==='in'||_0x372302['direction'][_0xff28('0xf')]()===_0xff28('0x10')&&!_0x372302['secret']&&!_[_0xff28('0x11')](_0x372302['UserId'])){_0xa98d6e['WhatsappInteraction'][_0xff28('0x12')]({'where':{'id':_0x372302[_0xff28('0x13')]}})['then'](function(_0x723b84){if(_0x723b84){_0x723b84[_0xff28('0x14')]({'lastMsgAt':_0x372302['createdAt'],'lastMsgDirection':_0x372302['direction'][_0xff28('0xf')]()});}})[_0xff28('0x15')](function(_0x5ee003){console[_0xff28('0x16')](_0x5ee003);});}if(_0x372302[_0xff28('0x17')]===_0xff28('0x10')&&!_0x372302[_0xff28('0x18')]){var _0x356376;_0xa98d6e[_0xff28('0x19')][_0xff28('0x1a')]({'where':{'id':_0x372302['WhatsappAccountId']},'raw':!![]})[_0xff28('0x1b')](function(_0x4f8131){_0x356376=_0x4f8131;if(_0x356376&&_0x356376['type']){switch(_0x356376[_0xff28('0x1c')]){case _0xff28('0x1d'):var _0x4e9d1c=require(_0xff28('0x1d'));if(_0x356376['accountSid']&&_0x356376[_0xff28('0x1e')]&&_0x356376[_0xff28('0x1f')]){var _0x278d25=new _0x4e9d1c(_0x356376[_0xff28('0x20')],_0x356376[_0xff28('0x1e')]);_0x278d25[_0xff28('0x21')][_0xff28('0x22')]({'body':_0x372302[_0xff28('0xb')],'to':'whatsapp:'+_0x372302[_0xff28('0x1f')],'from':_0xff28('0x23')+_0x356376['phone'],'statusCallback':_0x356376[_0xff28('0x24')]+_0xff28('0x25')+_0x372302['id']+_0xff28('0x26')+_0x356376[_0xff28('0x27')]})[_0xff28('0x1b')](function(_0x3371cc){if(_0x3371cc['sid']){return _0xfe2a7a[_0xff28('0x14')]({'messageId':_0x3371cc[_0xff28('0x28')]});}})[_0xff28('0x15')](function(_0x45b8ca){logger[_0xff28('0x16')](_0xff28('0x29'),_0xff28('0x2a'),_0xff28('0x1d'),util[_0xff28('0x2b')](_0x45b8ca,{'showHidden':![],'depth':null}));});}else{logger['error']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xff28('0x2a'),'twilio',_0xff28('0x2c'));}break;}}})[_0xff28('0x2d')](function(){_0x4eefe3();});}else{_0x4eefe3();}}},'charset':_0xff28('0x2e'),'collate':_0xff28('0x2f')});};
\ No newline at end of file
+var _0xa85e=['WhatsappInteraction','findOne','WhatsappInteractionId','createdAt','catch','error','WhatsappAccount','find','WhatsappAccountId','then','type','twilio','phone','accountSid','authToken','messages','whatsapp:','remote','/status?token=','token','sid','update','afterCreate','inspect','WhatsappMessage,\x20%s,\x20%s,\x20%s','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappMessage.attributes','define','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','models','direction','toLowerCase','out','secret','UserId'];(function(_0x2ecec5,_0xe161e4){var _0x13214e=function(_0x794c45){while(--_0x794c45){_0x2ecec5['push'](_0x2ecec5['shift']());}};_0x13214e(++_0xe161e4);}(_0xa85e,0x141));var _0xea85=function(_0x32f6b9,_0x2d4aa9){_0x32f6b9=_0x32f6b9-0x0;var _0x267d52=_0xa85e[_0x32f6b9];return _0x267d52;};'use strict';var _=require(_0xea85('0x0'));var util=require(_0xea85('0x1'));var logger=require(_0xea85('0x2'))(_0xea85('0x3'));var moment=require(_0xea85('0x4'));var BPromise=require('bluebird');var rp=require(_0xea85('0x5'));var fs=require('fs');var path=require(_0xea85('0x6'));var rimraf=require(_0xea85('0x7'));var config=require(_0xea85('0x8'));var attributes=require(_0xea85('0x9'));module['exports']=function(_0x246fa6,_0x297918){return _0x246fa6[_0xea85('0xa')](_0xea85('0xb'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0xea85('0xc'),'fields':[_0xea85('0xc')]},{'name':_0xea85('0xd'),'fields':[_0xea85('0xe')],'type':_0xea85('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3b8f74,_0x394914,_0x57f9fa){var _0xb0688c=_0x246fa6[_0xea85('0x10')];var _0x4a2241=_0x3b8f74['get']({'plain':!![]});if(_0x4a2241[_0xea85('0x11')][_0xea85('0x12')]()==='in'||_0x4a2241['direction'][_0xea85('0x12')]()===_0xea85('0x13')&&!_0x4a2241[_0xea85('0x14')]&&!_['isNil'](_0x4a2241[_0xea85('0x15')])){_0xb0688c[_0xea85('0x16')][_0xea85('0x17')]({'where':{'id':_0x4a2241[_0xea85('0x18')]}})['then'](function(_0x4a1f36){if(_0x4a1f36){_0x4a1f36['update']({'lastMsgAt':_0x4a2241[_0xea85('0x19')],'lastMsgDirection':_0x4a2241[_0xea85('0x11')][_0xea85('0x12')]()});}})[_0xea85('0x1a')](function(_0x20f5ac){console[_0xea85('0x1b')](_0x20f5ac);});}if(_0x4a2241['direction']===_0xea85('0x13')&&!_0x4a2241[_0xea85('0x14')]){var _0x2592b8;_0xb0688c[_0xea85('0x1c')][_0xea85('0x1d')]({'where':{'id':_0x4a2241[_0xea85('0x1e')]},'raw':!![]})[_0xea85('0x1f')](function(_0x363038){_0x2592b8=_0x363038;if(_0x2592b8&&_0x2592b8[_0xea85('0x20')]){switch(_0x2592b8['type']){case _0xea85('0x21'):var _0x5a2f0f=require(_0xea85('0x21'));if(_0x2592b8['accountSid']&&_0x2592b8['authToken']&&_0x2592b8[_0xea85('0x22')]){var _0x29b406=new _0x5a2f0f(_0x2592b8[_0xea85('0x23')],_0x2592b8[_0xea85('0x24')]);_0x29b406[_0xea85('0x25')]['create']({'body':_0x4a2241[_0xea85('0xe')],'to':_0xea85('0x26')+_0x4a2241[_0xea85('0x22')],'from':'whatsapp:'+_0x2592b8[_0xea85('0x22')],'statusCallback':_0x2592b8[_0xea85('0x27')]+'/api/whatsapp/messages/'+_0x4a2241['id']+_0xea85('0x28')+_0x2592b8[_0xea85('0x29')]})[_0xea85('0x1f')](function(_0xb8708b){if(_0xb8708b[_0xea85('0x2a')]){return _0x3b8f74[_0xea85('0x2b')]({'messageId':_0xb8708b[_0xea85('0x2a')]});}})[_0xea85('0x1a')](function(_0x15e0a0){logger[_0xea85('0x1b')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xea85('0x2c'),_0xea85('0x21'),util[_0xea85('0x2d')](_0x15e0a0,{'showHidden':![],'depth':null}));});}else{logger[_0xea85('0x1b')](_0xea85('0x2e'),_0xea85('0x2c'),_0xea85('0x21'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})[_0xea85('0x2f')](function(){_0x57f9fa();});}else{_0x57f9fa();}}},'charset':'utf8mb4','collate':_0xea85('0x30')});};
\ No newline at end of file
index 7bf95da..7c209cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9be9=['WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','rpc','client','http','redis','defaults','socket.io-emitter','./whatsappMessage.socket','register','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x40bc7d,_0x2ed7c4){var _0x11a274=function(_0x4589b6){while(--_0x4589b6){_0x40bc7d['push'](_0x40bc7d['shift']());}};_0x11a274(++_0x2ed7c4);}(_0x9be9,0x6a));var _0x99be=function(_0x170674,_0x236cfa){_0x170674=_0x170674-0x0;var _0x401fe8=_0x9be9[_0x170674];return _0x401fe8;};'use strict';var _=require(_0x99be('0x0'));var util=require('util');var moment=require(_0x99be('0x1'));var BPromise=require(_0x99be('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x99be('0x3'))['db'];var utils=require(_0x99be('0x4'));var logger=require('../../config/logger')(_0x99be('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x99be('0x6')][_0x99be('0x7')]({'port':0x232a});config[_0x99be('0x8')]=_[_0x99be('0x9')](config[_0x99be('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x99be('0xa'))(new Redis(config[_0x99be('0x8')]));require(_0x99be('0xb'))[_0x99be('0xc')](socket);function respondWithRpcPromise(_0x58b89c,_0x54e97e,_0x496e73){return new BPromise(function(_0x366e43,_0x713e37){return client[_0x99be('0xd')](_0x58b89c,_0x496e73)['then'](function(_0x178ea7){logger[_0x99be('0xe')](_0x99be('0xf'),_0x54e97e,_0x99be('0x10'));logger[_0x99be('0x11')](_0x99be('0x12'),_0x54e97e,_0x99be('0x10'),JSON[_0x99be('0x13')](_0x178ea7));if(_0x178ea7[_0x99be('0x14')]){if(_0x178ea7[_0x99be('0x14')][_0x99be('0x15')]===0x1f4){logger[_0x99be('0x14')]('WhatsappMessage,\x20%s,\x20%s',_0x54e97e,_0x178ea7[_0x99be('0x14')][_0x99be('0x16')]);return _0x713e37(_0x178ea7[_0x99be('0x14')]['message']);}logger[_0x99be('0x14')](_0x99be('0xf'),_0x54e97e,_0x178ea7[_0x99be('0x14')][_0x99be('0x16')]);return _0x366e43(_0x178ea7['error'][_0x99be('0x16')]);}else{logger[_0x99be('0xe')]('WhatsappMessage,\x20%s,\x20%s',_0x54e97e,_0x99be('0x10'));_0x366e43(_0x178ea7[_0x99be('0x17')][_0x99be('0x16')]);}})['catch'](function(_0x1f5ae4){logger['error'](_0x99be('0xf'),_0x54e97e,_0x1f5ae4);_0x713e37(_0x1f5ae4);});});}exports[_0x99be('0x18')]=function(_0x5a967d){var _0xc2b9f5=this;return new Promise(function(_0x3d08c1,_0x2735ed){return db[_0x99be('0x19')][_0x99be('0x1a')](_0x5a967d[_0x99be('0x1b')],{'raw':_0x5a967d[_0x99be('0x1c')]?_0x5a967d[_0x99be('0x1c')][_0x99be('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x43439a){logger[_0x99be('0xe')]('CreateWhatsappMessage',_0x5a967d);logger[_0x99be('0x11')](_0x99be('0x18'),_0x5a967d,JSON[_0x99be('0x13')](_0x43439a));_0x3d08c1(_0x43439a);})[_0x99be('0x1e')](function(_0x1d3814){logger[_0x99be('0x14')](_0x99be('0x18'),_0x1d3814[_0x99be('0x16')],_0x5a967d);_0x2735ed(_0xc2b9f5['error'](0x1f4,_0x1d3814[_0x99be('0x16')]));});});};
\ No newline at end of file
+var _0x8d9b=['WhatsappMessage','create','options','raw','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','CreateWhatsappMessage'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x8d9b,0x112));var _0xb8d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8d9b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb8d9('0x0'));var util=require(_0xb8d9('0x1'));var moment=require(_0xb8d9('0x2'));var BPromise=require(_0xb8d9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb8d9('0x4'));var logger=require(_0xb8d9('0x5'))(_0xb8d9('0x6'));var config=require(_0xb8d9('0x7'));var jayson=require(_0xb8d9('0x8'));var client=jayson[_0xb8d9('0x9')]['http']({'port':0x232a});config[_0xb8d9('0xa')]=_[_0xb8d9('0xb')](config[_0xb8d9('0xa')],{'host':_0xb8d9('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb8d9('0xa')]));require('./whatsappMessage.socket')[_0xb8d9('0xd')](socket);function respondWithRpcPromise(_0x5f5fc0,_0x6e0729,_0x4079b6){return new BPromise(function(_0x1cf51d,_0x3872c9){return client[_0xb8d9('0xe')](_0x5f5fc0,_0x4079b6)[_0xb8d9('0xf')](function(_0x386e68){logger[_0xb8d9('0x10')](_0xb8d9('0x11'),_0x6e0729,_0xb8d9('0x12'));logger[_0xb8d9('0x13')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x6e0729,_0xb8d9('0x12'),JSON[_0xb8d9('0x14')](_0x386e68));if(_0x386e68['error']){if(_0x386e68[_0xb8d9('0x15')]['code']===0x1f4){logger[_0xb8d9('0x15')](_0xb8d9('0x11'),_0x6e0729,_0x386e68[_0xb8d9('0x15')][_0xb8d9('0x16')]);return _0x3872c9(_0x386e68[_0xb8d9('0x15')]['message']);}logger[_0xb8d9('0x15')](_0xb8d9('0x11'),_0x6e0729,_0x386e68[_0xb8d9('0x15')]['message']);return _0x1cf51d(_0x386e68[_0xb8d9('0x15')][_0xb8d9('0x16')]);}else{logger['info'](_0xb8d9('0x11'),_0x6e0729,_0xb8d9('0x12'));_0x1cf51d(_0x386e68[_0xb8d9('0x17')]['message']);}})[_0xb8d9('0x18')](function(_0xb91cc9){logger[_0xb8d9('0x15')]('WhatsappMessage,\x20%s,\x20%s',_0x6e0729,_0xb91cc9);_0x3872c9(_0xb91cc9);});});}exports[_0xb8d9('0x19')]=function(_0x2dec64){var _0xe67618=this;return new Promise(function(_0xc31e3d,_0x260c66){return db[_0xb8d9('0x1a')][_0xb8d9('0x1b')](_0x2dec64['body'],{'raw':_0x2dec64['options']?_0x2dec64[_0xb8d9('0x1c')][_0xb8d9('0x1d')]===undefined?!![]:![]:!![]})[_0xb8d9('0xf')](function(_0x37c02f){logger[_0xb8d9('0x10')](_0xb8d9('0x19'),_0x2dec64);logger[_0xb8d9('0x13')](_0xb8d9('0x19'),_0x2dec64,JSON[_0xb8d9('0x14')](_0x37c02f));_0xc31e3d(_0x37c02f);})[_0xb8d9('0x18')](function(_0x334696){logger['error'](_0xb8d9('0x19'),_0x334696[_0xb8d9('0x16')],_0x2dec64);_0x260c66(_0xe67618[_0xb8d9('0x15')](0x1f4,_0x334696[_0xb8d9('0x16')]));});});};
\ No newline at end of file
index 6d5484e..8684bab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6740=['update','emit','removeListener','register','whatsappMessage:','./whatsappMessage.events','save','remove'];(function(_0x1766f9,_0x506f9f){var _0x4ae5af=function(_0x86a5f6){while(--_0x86a5f6){_0x1766f9['push'](_0x1766f9['shift']());}};_0x4ae5af(++_0x506f9f);}(_0x6740,0xbd));var _0x0674=function(_0x465260,_0x459173){_0x465260=_0x465260-0x0;var _0x4a5405=_0x6740[_0x465260];return _0x4a5405;};'use strict';var WhatsappMessageEvents=require(_0x0674('0x0'));var events=[_0x0674('0x1'),_0x0674('0x2'),_0x0674('0x3')];function createListener(_0x23e930,_0x340c44){return function(_0x5192d3){_0x340c44[_0x0674('0x4')](_0x23e930,_0x5192d3);};}function removeListener(_0x2b7ad6,_0x3a8558){return function(){WhatsappMessageEvents[_0x0674('0x5')](_0x2b7ad6,_0x3a8558);};}exports[_0x0674('0x6')]=function(_0x203b1c){for(var _0x59bea6=0x0,_0x22b65a=events['length'];_0x59bea6<_0x22b65a;_0x59bea6++){var _0x638cf9=events[_0x59bea6];var _0x4cff84=createListener(_0x0674('0x7')+_0x638cf9,_0x203b1c);WhatsappMessageEvents['on'](_0x638cf9,_0x4cff84);}};
\ No newline at end of file
+var _0xda64=['register','length','whatsappMessage:','./whatsappMessage.events','save','update','emit'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xda64,0x1bc));var _0x4da6=function(_0xa1b108,_0x2091d1){_0xa1b108=_0xa1b108-0x0;var _0x1749cc=_0xda64[_0xa1b108];return _0x1749cc;};'use strict';var WhatsappMessageEvents=require(_0x4da6('0x0'));var events=[_0x4da6('0x1'),'remove',_0x4da6('0x2')];function createListener(_0x48adb9,_0x46b738){return function(_0x41227c){_0x46b738[_0x4da6('0x3')](_0x48adb9,_0x41227c);};}function removeListener(_0x567ef6,_0x2fa6af){return function(){WhatsappMessageEvents['removeListener'](_0x567ef6,_0x2fa6af);};}exports[_0x4da6('0x4')]=function(_0x2b2640){for(var _0x18de0a=0x0,_0x5476a6=events[_0x4da6('0x5')];_0x18de0a<_0x5476a6;_0x18de0a++){var _0x5fa64f=events[_0x18de0a];var _0x460613=createListener(_0x4da6('0x6')+_0x5fa64f,_0x2b2640);WhatsappMessageEvents['on'](_0x5fa64f,_0x460613);}};
\ No newline at end of file
index 41679e5..84a6c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3b3=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','describe','/:id','show','getMembers','/:id/users','getAgents','post','create','addTeams','addAgents','put','delete','destroy','/:id/teams','removeTeams','removeAgents'];(function(_0x20bd86,_0x38688b){var _0x3a4623=function(_0x47bd85){while(--_0x47bd85){_0x20bd86['push'](_0x20bd86['shift']());}};_0x3a4623(++_0x38688b);}(_0xa3b3,0x1e1));var _0x3a3b=function(_0x2fe81,_0x134d72){_0x2fe81=_0x2fe81-0x0;var _0x49644a=_0xa3b3[_0x2fe81];return _0x49644a;};'use strict';var multer=require(_0x3a3b('0x0'));var util=require(_0x3a3b('0x1'));var path=require(_0x3a3b('0x2'));var timeout=require(_0x3a3b('0x3'));var express=require(_0x3a3b('0x4'));var router=express[_0x3a3b('0x5')]();var fs_extra=require(_0x3a3b('0x6'));var auth=require(_0x3a3b('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x3a3b('0x8'));var controller=require(_0x3a3b('0x9'));router[_0x3a3b('0xa')]('/',auth[_0x3a3b('0xb')](),controller[_0x3a3b('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x3a3b('0xd')]);router['get'](_0x3a3b('0xe'),auth[_0x3a3b('0xb')](),controller[_0x3a3b('0xf')]);router[_0x3a3b('0xa')]('/:id/members',auth[_0x3a3b('0xb')](),controller[_0x3a3b('0x10')]);router['get']('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router['get'](_0x3a3b('0x11'),auth[_0x3a3b('0xb')](),controller[_0x3a3b('0x12')]);router[_0x3a3b('0x13')]('/',auth[_0x3a3b('0xb')](),controller[_0x3a3b('0x14')]);router[_0x3a3b('0x13')]('/:id/teams',auth[_0x3a3b('0xb')](),controller[_0x3a3b('0x15')]);router[_0x3a3b('0x13')](_0x3a3b('0x11'),auth['isAuthenticated'](),controller[_0x3a3b('0x16')]);router[_0x3a3b('0x17')](_0x3a3b('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x3a3b('0x18')](_0x3a3b('0xe'),auth[_0x3a3b('0xb')](),controller[_0x3a3b('0x19')]);router[_0x3a3b('0x18')](_0x3a3b('0x1a'),auth[_0x3a3b('0xb')](),controller[_0x3a3b('0x1b')]);router[_0x3a3b('0x18')](_0x3a3b('0x11'),auth['isAuthenticated'](),controller[_0x3a3b('0x1c')]);module[_0x3a3b('0x1d')]=router;
\ No newline at end of file
+var _0xd0da=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','/describe','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','put','update','delete','destroy','removeAgents','exports','multer','util'];(function(_0x3e451f,_0x10500d){var _0x57978f=function(_0x52f960){while(--_0x52f960){_0x3e451f['push'](_0x3e451f['shift']());}};_0x57978f(++_0x10500d);}(_0xd0da,0x1b1));var _0xad0d=function(_0x19159a,_0x1cb5c3){_0x19159a=_0x19159a-0x0;var _0xa677f4=_0xd0da[_0x19159a];return _0xa677f4;};'use strict';var multer=require(_0xad0d('0x0'));var util=require(_0xad0d('0x1'));var path=require(_0xad0d('0x2'));var timeout=require(_0xad0d('0x3'));var express=require(_0xad0d('0x4'));var router=express['Router']();var fs_extra=require(_0xad0d('0x5'));var auth=require(_0xad0d('0x6'));var interaction=require(_0xad0d('0x7'));var config=require('../../config/environment');var controller=require('./whatsappQueue.controller');router[_0xad0d('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xad0d('0x8')](_0xad0d('0x9'),auth[_0xad0d('0xa')](),controller[_0xad0d('0xb')]);router['get'](_0xad0d('0xc'),auth[_0xad0d('0xa')](),controller[_0xad0d('0xd')]);router[_0xad0d('0x8')](_0xad0d('0xe'),auth[_0xad0d('0xa')](),controller[_0xad0d('0xf')]);router[_0xad0d('0x8')](_0xad0d('0x10'),auth[_0xad0d('0xa')](),controller[_0xad0d('0x11')]);router[_0xad0d('0x8')](_0xad0d('0x12'),auth['isAuthenticated'](),controller[_0xad0d('0x13')]);router[_0xad0d('0x14')]('/',auth['isAuthenticated'](),controller[_0xad0d('0x15')]);router[_0xad0d('0x14')]('/:id/teams',auth[_0xad0d('0xa')](),controller[_0xad0d('0x16')]);router['post'](_0xad0d('0x12'),auth[_0xad0d('0xa')](),controller['addAgents']);router[_0xad0d('0x17')]('/:id',auth['isAuthenticated'](),controller[_0xad0d('0x18')]);router[_0xad0d('0x19')](_0xad0d('0xc'),auth['isAuthenticated'](),controller[_0xad0d('0x1a')]);router[_0xad0d('0x19')]('/:id/teams',auth[_0xad0d('0xa')](),controller['removeTeams']);router['delete'](_0xad0d('0x12'),auth['isAuthenticated'](),controller[_0xad0d('0x1b')]);module[_0xad0d('0x1c')]=router;
\ No newline at end of file
index 91c05a2..c4215b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e54=['ENUM','rrmemory','beepall','roundrobin','STRING','sequelize','name','INTEGER'];(function(_0x494d1f,_0x3f72ff){var _0x457b6e=function(_0x38cb16){while(--_0x38cb16){_0x494d1f['push'](_0x494d1f['shift']());}};_0x457b6e(++_0x3f72ff);}(_0x2e54,0x1dd));var _0x42e5=function(_0xb25b5f,_0x38c234){_0xb25b5f=_0xb25b5f-0x0;var _0x54da9b=_0x2e54[_0xb25b5f];return _0x54da9b;};'use strict';var Sequelize=require(_0x42e5('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x42e5('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x42e5('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x42e5('0x3')](_0x42e5('0x4'),_0x42e5('0x5'),_0x42e5('0x6'))},'description':{'type':Sequelize[_0x42e5('0x7')]}};
\ No newline at end of file
+var _0x18a9=['ENUM','rrmemory','beepall','roundrobin','STRING','name','INTEGER'];(function(_0x6c1ddf,_0x392f7c){var _0x221ba=function(_0x245efd){while(--_0x245efd){_0x6c1ddf['push'](_0x6c1ddf['shift']());}};_0x221ba(++_0x392f7c);}(_0x18a9,0x15b));var _0x918a=function(_0x2d489a,_0x25ce3c){_0x2d489a=_0x2d489a-0x0;var _0x11b301=_0x18a9[_0x2d489a];return _0x11b301;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x918a('0x0')],'unique':_0x918a('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x918a('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x918a('0x3')](_0x918a('0x4'),_0x918a('0x5'),_0x918a('0x6'))},'description':{'type':Sequelize[_0x918a('0x0')]}};
\ No newline at end of file
index c64f08c..b6204da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10f=['findAndCountAll','agent','whatsappPause','updatedAt','createdAt','format','%s/%s','findOne','Team','getTeams','addTeams','Agents','online','interface','flatMap','sequelize','transaction','each','forEach','emit','userWhatsappQueue:save','removeTeams','ids','select','field','tq.TeamId','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','includes','all','compact','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','spread','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','squel','crypto','jsforce','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','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','get','WhatsappQueues','end','error','stack','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','filter','options','includeAll','findAll','rows','catch','show','params','length','include','create','body','user','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserWhatsappQueue','User'];(function(_0x3991de,_0x2ffbd1){var _0x24d193=function(_0x2e8585){while(--_0x2e8585){_0x3991de['push'](_0x3991de['shift']());}};_0x24d193(++_0x2ffbd1);}(_0xb10f,0x149));var _0xfb10=function(_0x25398a,_0x31d8cf){_0x25398a=_0x25398a-0x0;var _0x459586=_0xb10f[_0x25398a];return _0x459586;};'use strict';var emlformat=require(_0xfb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfb10('0x1'));var jsonpatch=require(_0xfb10('0x2'));var rp=require(_0xfb10('0x3'));var moment=require(_0xfb10('0x4'));var BPromise=require(_0xfb10('0x5'));var Mustache=require(_0xfb10('0x6'));var util=require(_0xfb10('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfb10('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfb10('0x9'));var crypto=require(_0xfb10('0xa'));var jsforce=require(_0xfb10('0xb'));var deskjs=require(_0xfb10('0xc'));var toCsv=require('to-csv');var querystring=require(_0xfb10('0xd'));var Papa=require(_0xfb10('0xe'));var Redis=require(_0xfb10('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xfb10('0x10'));var as=require(_0xfb10('0x11'));var hardwareService=require(_0xfb10('0x12'));var logger=require(_0xfb10('0x13'))(_0xfb10('0x14'));var utils=require(_0xfb10('0x15'));var config=require(_0xfb10('0x16'));var licenseUtil=require(_0xfb10('0x17'));var db=require(_0xfb10('0x18'))['db'];config[_0xfb10('0x19')]=_[_0xfb10('0x1a')](config[_0xfb10('0x19')],{'host':_0xfb10('0x1b'),'port':0x18eb});var socket=require(_0xfb10('0x1c'))(new Redis(config[_0xfb10('0x19')]));require('./whatsappQueue.socket')[_0xfb10('0x1d')](socket);function respondWithStatusCode(_0x3ecd3a,_0x17f7c9){_0x17f7c9=_0x17f7c9||0xcc;return function(_0x4b052d){if(_0x4b052d){return _0x3ecd3a[_0xfb10('0x1e')](_0x17f7c9);}return _0x3ecd3a[_0xfb10('0x1f')](_0x17f7c9)['end']();};}function respondWithResult(_0x110d59,_0x36656f){_0x36656f=_0x36656f||0xc8;return function(_0x1b14b6){if(_0x1b14b6){return _0x110d59[_0xfb10('0x1f')](_0x36656f)[_0xfb10('0x20')](_0x1b14b6);}};}function respondWithFilteredResult(_0x57a623,_0x41ba4d){return function(_0x19c166){if(_0x19c166){var _0x4f0cba=typeof _0x41ba4d['offset']===_0xfb10('0x21')&&typeof _0x41ba4d[_0xfb10('0x22')]===_0xfb10('0x21');var _0x331201=_0x19c166['count'];var _0x100517=_0x4f0cba?0x0:_0x41ba4d['offset'];var _0x5db149=_0x4f0cba?_0x19c166[_0xfb10('0x23')]:_0x41ba4d[_0xfb10('0x24')]+_0x41ba4d[_0xfb10('0x22')];var _0x5037ba;if(_0x5db149>=_0x331201){_0x5db149=_0x331201;_0x5037ba=0xc8;}else{_0x5037ba=0xce;}_0x57a623[_0xfb10('0x1f')](_0x5037ba);return _0x57a623[_0xfb10('0x25')](_0xfb10('0x26'),_0x100517+'-'+_0x5db149+'/'+_0x331201)[_0xfb10('0x20')](_0x19c166);}return null;};}function patchUpdates(_0x3b9ec8){return function(_0x558e02){try{jsonpatch['apply'](_0x558e02,_0x3b9ec8,!![]);}catch(_0x2be482){return BPromise[_0xfb10('0x27')](_0x2be482);}return _0x558e02[_0xfb10('0x28')]();};}function saveUpdates(_0x54819d,_0x5f0bfa){return function(_0x12b6ba){if(_0x12b6ba){return _0x12b6ba[_0xfb10('0x29')](_0x54819d)[_0xfb10('0x2a')](function(_0x163b7c){return _0x163b7c;});}return null;};}function removeEntity(_0x37a8ee,_0xc760d7){return function(_0x5d12ef){if(_0x5d12ef){return _0x5d12ef[_0xfb10('0x2b')]()[_0xfb10('0x2a')](function(){var _0x2b9e7e=_0x5d12ef[_0xfb10('0x2c')]({'plain':!![]});var _0x28e271=_0xfb10('0x2d');return db['UserProfileResource'][_0xfb10('0x2b')]({'where':{'type':_0x28e271,'resourceId':_0x2b9e7e['id']}})[_0xfb10('0x2a')](function(){return _0x5d12ef;});})[_0xfb10('0x2a')](function(){_0x37a8ee['status'](0xcc)[_0xfb10('0x2e')]();});}};}function handleEntityNotFound(_0x1aec82,_0x4e1366){return function(_0x132548){if(!_0x132548){_0x1aec82[_0xfb10('0x1e')](0x194);}return _0x132548;};}function handleError(_0x44d3d4,_0x58313f){_0x58313f=_0x58313f||0x1f4;return function(_0x58e0ec){logger[_0xfb10('0x2f')](_0x58e0ec[_0xfb10('0x30')]);if(_0x58e0ec[_0xfb10('0x31')]){delete _0x58e0ec[_0xfb10('0x31')];}_0x44d3d4[_0xfb10('0x1f')](_0x58313f)[_0xfb10('0x32')](_0x58e0ec);};}exports[_0xfb10('0x33')]=function(_0x148842,_0x54f3b4){var _0x4f0a51={},_0xba5bff={},_0x378526={'count':0x0,'rows':[]};var _0x450507=_[_0xfb10('0x34')](db[_0xfb10('0x35')][_0xfb10('0x36')],function(_0x4349cb){return{'name':_0x4349cb[_0xfb10('0x37')],'type':_0x4349cb['type'][_0xfb10('0x38')]};});_0xba5bff[_0xfb10('0x39')]=_[_0xfb10('0x34')](_0x450507,_0xfb10('0x31'));_0xba5bff['query']=_[_0xfb10('0x3a')](_0x148842[_0xfb10('0x3b')]);_0xba5bff[_0xfb10('0x3c')]=_[_0xfb10('0x3d')](_0xba5bff[_0xfb10('0x39')],_0xba5bff['query']);_0x4f0a51[_0xfb10('0x3e')]=_[_0xfb10('0x3d')](_0xba5bff[_0xfb10('0x39')],qs[_0xfb10('0x3f')](_0x148842[_0xfb10('0x3b')]['fields']));_0x4f0a51[_0xfb10('0x3e')]=_0x4f0a51[_0xfb10('0x3e')]['length']?_0x4f0a51['attributes']:_0xba5bff[_0xfb10('0x39')];if(!_0x148842[_0xfb10('0x3b')][_0xfb10('0x40')](_0xfb10('0x41'))){_0x4f0a51[_0xfb10('0x22')]=qs[_0xfb10('0x22')](_0x148842[_0xfb10('0x3b')][_0xfb10('0x22')]);_0x4f0a51[_0xfb10('0x24')]=qs['offset'](_0x148842[_0xfb10('0x3b')][_0xfb10('0x24')]);}_0x4f0a51[_0xfb10('0x42')]=qs[_0xfb10('0x43')](_0x148842[_0xfb10('0x3b')][_0xfb10('0x43')]);_0x4f0a51[_0xfb10('0x44')]=qs['filters'](_[_0xfb10('0x45')](_0x148842['query'],_0xba5bff[_0xfb10('0x3c')]),_0x450507);if(_0x148842[_0xfb10('0x3b')]['filter']){_0x4f0a51[_0xfb10('0x44')]=_[_0xfb10('0x46')](_0x4f0a51['where'],{'$or':_[_0xfb10('0x34')](_0x450507,function(_0x207f7c){if(_0x207f7c[_0xfb10('0x47')]!=='VIRTUAL'){var _0x586e1f={};_0x586e1f[_0x207f7c[_0xfb10('0x31')]]={'$like':'%'+_0x148842[_0xfb10('0x3b')][_0xfb10('0x48')]+'%'};return _0x586e1f;}})});}_0x4f0a51=_[_0xfb10('0x46')]({},_0x4f0a51,_0x148842[_0xfb10('0x49')]);var _0x3c8091={'where':_0x4f0a51['where']};return db[_0xfb10('0x35')][_0xfb10('0x23')](_0x3c8091)[_0xfb10('0x2a')](function(_0x10778f){_0x378526[_0xfb10('0x23')]=_0x10778f;if(_0x148842[_0xfb10('0x3b')][_0xfb10('0x4a')]){_0x4f0a51['include']=[{'all':!![]}];}return db['WhatsappQueue'][_0xfb10('0x4b')](_0x4f0a51);})[_0xfb10('0x2a')](function(_0xed5d30){_0x378526[_0xfb10('0x4c')]=_0xed5d30;return _0x378526;})[_0xfb10('0x2a')](respondWithFilteredResult(_0x54f3b4,_0x4f0a51))[_0xfb10('0x4d')](handleError(_0x54f3b4,null));};exports[_0xfb10('0x4e')]=function(_0x497017,_0x311e1a){var _0xa1582f={'raw':!![],'where':{'id':_0x497017[_0xfb10('0x4f')]['id']}},_0x2ec251={};_0x2ec251['model']=_[_0xfb10('0x3a')](db[_0xfb10('0x35')]['rawAttributes']);_0x2ec251[_0xfb10('0x3b')]=_['keys'](_0x497017[_0xfb10('0x3b')]);_0x2ec251['filters']=_['intersection'](_0x2ec251[_0xfb10('0x39')],_0x2ec251[_0xfb10('0x3b')]);_0xa1582f['attributes']=_[_0xfb10('0x3d')](_0x2ec251[_0xfb10('0x39')],qs[_0xfb10('0x3f')](_0x497017['query'][_0xfb10('0x3f')]));_0xa1582f[_0xfb10('0x3e')]=_0xa1582f['attributes'][_0xfb10('0x50')]?_0xa1582f[_0xfb10('0x3e')]:_0x2ec251['model'];if(_0x497017[_0xfb10('0x3b')][_0xfb10('0x4a')]){_0xa1582f[_0xfb10('0x51')]=[{'all':!![]}];}_0xa1582f=_['merge']({},_0xa1582f,_0x497017[_0xfb10('0x49')]);return db[_0xfb10('0x35')]['find'](_0xa1582f)[_0xfb10('0x2a')](handleEntityNotFound(_0x311e1a,null))[_0xfb10('0x2a')](respondWithResult(_0x311e1a,null))[_0xfb10('0x4d')](handleError(_0x311e1a,null));};exports[_0xfb10('0x52')]=function(_0x32bf7c,_0x3582a7){return db[_0xfb10('0x35')]['create'](_0x32bf7c[_0xfb10('0x53')],{})['then'](function(_0x3e2ada){var _0x11ac66=_0x32bf7c[_0xfb10('0x54')][_0xfb10('0x2c')]({'plain':!![]});if(!_0x11ac66)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x11ac66['role']===_0xfb10('0x54')){var _0x4d9993=_0x3e2ada['get']({'plain':!![]});var _0xf54e8a=_0xfb10('0x2d');return db['UserProfileSection'][_0xfb10('0x55')]({'where':{'name':_0xf54e8a,'userProfileId':_0x11ac66[_0xfb10('0x56')]},'raw':!![]})['then'](function(_0x187928){if(_0x187928&&_0x187928[_0xfb10('0x57')]===0x0){return db[_0xfb10('0x58')][_0xfb10('0x52')]({'name':_0x4d9993[_0xfb10('0x31')],'resourceId':_0x4d9993['id'],'type':_0x187928[_0xfb10('0x31')],'sectionId':_0x187928['id']},{})[_0xfb10('0x2a')](function(){return _0x3e2ada;});}else{return _0x3e2ada;}})[_0xfb10('0x4d')](function(_0x5745ea){logger[_0xfb10('0x2f')](_0xfb10('0x59'),_0x5745ea);throw _0x5745ea;});}return _0x3e2ada;})[_0xfb10('0x2a')](respondWithResult(_0x3582a7,0xc9))[_0xfb10('0x4d')](handleError(_0x3582a7,null));};exports[_0xfb10('0x29')]=function(_0x51a68b,_0x503efe){if(_0x51a68b[_0xfb10('0x53')]['id']){delete _0x51a68b[_0xfb10('0x53')]['id'];}return db[_0xfb10('0x35')]['find']({'where':{'id':_0x51a68b[_0xfb10('0x4f')]['id']}})['then'](handleEntityNotFound(_0x503efe,null))[_0xfb10('0x2a')](saveUpdates(_0x51a68b[_0xfb10('0x53')],null))[_0xfb10('0x2a')](respondWithResult(_0x503efe,null))[_0xfb10('0x4d')](handleError(_0x503efe,null));};exports['destroy']=function(_0x4dc1f6,_0x3918d9){return db[_0xfb10('0x35')]['find']({'where':{'id':_0x4dc1f6[_0xfb10('0x4f')]['id']}})[_0xfb10('0x2a')](handleEntityNotFound(_0x3918d9,null))[_0xfb10('0x2a')](removeEntity(_0x3918d9,null))[_0xfb10('0x4d')](handleError(_0x3918d9,null));};exports[_0xfb10('0x5a')]=function(_0x18e7fc,_0x2f5c42){return db[_0xfb10('0x35')][_0xfb10('0x5a')]()[_0xfb10('0x2a')](respondWithResult(_0x2f5c42,null))['catch'](handleError(_0x2f5c42,null));};exports[_0xfb10('0x5b')]=function(_0x24640d,_0x357235,_0x2d6c75){var _0x1a8835={'raw':!![],'where':{}},_0x7a7686={},_0xa7841d;return db[_0xfb10('0x35')]['findOne']({'where':{'id':_0x24640d['params']['id']}})[_0xfb10('0x2a')](handleEntityNotFound(_0x357235,null))[_0xfb10('0x2a')](function(_0x4f787e){if(_0x4f787e){_0xa7841d=_0x4f787e[_0xfb10('0x2c')]({'plain':!![]});_0x7a7686['model']=_[_0xfb10('0x3a')](db[_0xfb10('0x5c')][_0xfb10('0x36')]);_0x7a7686[_0xfb10('0x3b')]=_[_0xfb10('0x3a')](_0x24640d[_0xfb10('0x3b')]);_0x7a7686[_0xfb10('0x3c')]=_[_0xfb10('0x3d')](_0x7a7686[_0xfb10('0x39')],_0x7a7686['query']);_0x1a8835[_0xfb10('0x3e')]=_[_0xfb10('0x3d')](_0x7a7686['model'],qs[_0xfb10('0x3f')](_0x24640d[_0xfb10('0x3b')][_0xfb10('0x3f')]));_0x1a8835[_0xfb10('0x3e')]=_0x1a8835['attributes'][_0xfb10('0x50')]?_0x1a8835[_0xfb10('0x3e')]:_0x7a7686['model'];if(!_0x24640d[_0xfb10('0x3b')][_0xfb10('0x40')](_0xfb10('0x41'))){_0x1a8835[_0xfb10('0x22')]=qs[_0xfb10('0x22')](_0x24640d[_0xfb10('0x3b')][_0xfb10('0x22')]);_0x1a8835[_0xfb10('0x24')]=qs[_0xfb10('0x24')](_0x24640d['query'][_0xfb10('0x24')]);}_0x1a8835[_0xfb10('0x42')]=qs[_0xfb10('0x43')](_0x24640d[_0xfb10('0x3b')][_0xfb10('0x43')]);_0x1a8835['where']=qs[_0xfb10('0x3c')](_[_0xfb10('0x45')](_0x24640d['query'],_0x7a7686[_0xfb10('0x3c')]));_0x1a8835[_0xfb10('0x44')]['WhatsappQueueId']=_0x4f787e['id'];if(_0x24640d['query'][_0xfb10('0x48')]){_0x1a8835[_0xfb10('0x44')]=_['merge'](_0x1a8835[_0xfb10('0x44')],{'$or':_['map'](_0x1a8835['attributes'],function(_0x3f3e8b){var _0x1a77b6={};_0x1a77b6[_0x3f3e8b]={'$like':'%'+_0x24640d[_0xfb10('0x3b')][_0xfb10('0x48')]+'%'};return _0x1a77b6;})});}_0x1a8835=_[_0xfb10('0x46')]({},_0x1a8835,_0x24640d[_0xfb10('0x49')]);return db[_0xfb10('0x5c')][_0xfb10('0x4b')](_0x1a8835);}})[_0xfb10('0x2a')](function(_0x2ce8c1){if(_0x2ce8c1){return db[_0xfb10('0x5d')][_0xfb10('0x5e')]({'where':{'id':_[_0xfb10('0x34')](_0x2ce8c1,'UserId'),'role':_0xfb10('0x5f')},'attributes':['id',_0xfb10('0x31'),_0xfb10('0x60'),_0xfb10('0x61'),_0xfb10('0x62')]});}})[_0xfb10('0x2a')](function(_0x40ab53){if(_0x40ab53){return{'count':_0x40ab53[_0xfb10('0x23')],'rows':_[_0xfb10('0x34')](_0x40ab53[_0xfb10('0x4c')],function(_0xf292b2){return{'membername':_0xf292b2[_0xfb10('0x31')],'UserId':_0xf292b2['id'],'queue_name':_0xa7841d[_0xfb10('0x31')],'WhatsappQueueId':_0xa7841d['id'],'interface':util[_0xfb10('0x63')](_0xfb10('0x64'),'SIP',_0xf292b2['name']),'penalty':0x0,'paused':_0xf292b2['whatsappPause'],'createdAt':_0xf292b2[_0xfb10('0x62')],'updatedAt':_0xf292b2['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x357235,_0x1a8835))[_0xfb10('0x4d')](handleError(_0x357235,null));};exports['getTeams']=function(_0x4fa8ff,_0x363ef3,_0x59e275){var _0x4e896b={};var _0x4251cd={};var _0x2dc794;var _0x4bc774;return db[_0xfb10('0x35')][_0xfb10('0x65')]({'where':{'id':_0x4fa8ff[_0xfb10('0x4f')]['id']}})[_0xfb10('0x2a')](handleEntityNotFound(_0x363ef3,null))[_0xfb10('0x2a')](function(_0x7829c1){if(_0x7829c1){_0x2dc794=_0x7829c1;_0x4251cd[_0xfb10('0x39')]=_['keys'](db[_0xfb10('0x66')][_0xfb10('0x36')]);_0x4251cd[_0xfb10('0x3b')]=_[_0xfb10('0x3a')](_0x4fa8ff[_0xfb10('0x3b')]);_0x4251cd['filters']=_[_0xfb10('0x3d')](_0x4251cd[_0xfb10('0x39')],_0x4251cd['query']);_0x4e896b[_0xfb10('0x3e')]=_[_0xfb10('0x3d')](_0x4251cd[_0xfb10('0x39')],qs[_0xfb10('0x3f')](_0x4fa8ff[_0xfb10('0x3b')]['fields']));_0x4e896b['attributes']=_0x4e896b[_0xfb10('0x3e')]['length']?_0x4e896b['attributes']:_0x4251cd[_0xfb10('0x39')];_0x4e896b[_0xfb10('0x42')]=qs[_0xfb10('0x43')](_0x4fa8ff[_0xfb10('0x3b')]['sort']);_0x4e896b['where']=qs[_0xfb10('0x3c')](_[_0xfb10('0x45')](_0x4fa8ff[_0xfb10('0x3b')],_0x4251cd[_0xfb10('0x3c')]));if(_0x4fa8ff[_0xfb10('0x3b')]['filter']){_0x4e896b[_0xfb10('0x44')]=_['merge'](_0x4e896b[_0xfb10('0x44')],{'$or':_['map'](_0x4e896b[_0xfb10('0x3e')],function(_0x4e6d43){var _0x4e3117={};_0x4e3117[_0x4e6d43]={'$like':'%'+_0x4fa8ff['query'][_0xfb10('0x48')]+'%'};return _0x4e3117;})});}_0x4e896b=_[_0xfb10('0x46')]({},_0x4e896b,_0x4fa8ff['options']);return _0x2dc794[_0xfb10('0x67')](_0x4e896b);}})['then'](function(_0x4c0420){if(_0x4c0420){_0x4bc774=_0x4c0420[_0xfb10('0x50')];if(!_0x4fa8ff[_0xfb10('0x3b')][_0xfb10('0x40')]('nolimit')){_0x4e896b[_0xfb10('0x22')]=qs[_0xfb10('0x22')](_0x4fa8ff[_0xfb10('0x3b')][_0xfb10('0x22')]);_0x4e896b[_0xfb10('0x24')]=qs['offset'](_0x4fa8ff[_0xfb10('0x3b')][_0xfb10('0x24')]);}return _0x2dc794[_0xfb10('0x67')](_0x4e896b);}})['then'](function(_0x2f8059){if(_0x2f8059){return _0x2f8059?{'count':_0x4bc774,'rows':_0x2f8059}:null;}})[_0xfb10('0x2a')](respondWithResult(_0x363ef3,null))[_0xfb10('0x4d')](handleError(_0x363ef3,null));};exports[_0xfb10('0x68')]=function(_0x2f933a,_0x41955e,_0x13038c){var _0x318c20=_0x2f933a[_0xfb10('0x53')]['ids'];return db[_0xfb10('0x66')][_0xfb10('0x4b')]({'where':{'id':_0x318c20},'attributes':['id'],'include':[{'model':db[_0xfb10('0x5d')],'as':_0xfb10('0x69'),'attributes':['id','name',_0xfb10('0x6a'),'voicePause',_0xfb10('0x6b')],'raw':!![]}]})['then'](function(_0xed2b7f){if(_0xed2b7f){var _0x42e315=_[_0xfb10('0x6c')](_0xed2b7f,function(_0x5a5ae3){var _0x52822a=_0x5a5ae3[_0xfb10('0x2c')]({'plain':!![]});return _0x52822a[_0xfb10('0x69')];});return db[_0xfb10('0x35')]['find']({'where':{'id':_0x2f933a['params']['id']}})[_0xfb10('0x2a')](function(_0x5738c2){return db[_0xfb10('0x6d')][_0xfb10('0x6e')](function(_0x16fd88){return _0x5738c2[_0xfb10('0x68')](_0x318c20,{'transaction':_0x16fd88})[_0xfb10('0x2a')](function(){return BPromise[_0xfb10('0x6f')](_0x42e315,function(_0x279854){return db[_0xfb10('0x5c')]['findOrCreate']({'where':{'UserId':_0x279854['id'],'WhatsappQueueId':_0x2f933a[_0xfb10('0x4f')]['id']},'transaction':_0x16fd88});});})['then'](function(){_0x42e315[_0xfb10('0x70')](function(_0x55fd1b){socket[_0xfb10('0x71')](_0xfb10('0x72'),{'UserId':_0x55fd1b['id'],'WhatsappQueueId':_0x5738c2['id']});});});});});}})['then'](respondWithStatusCode(_0x41955e,null))[_0xfb10('0x4d')](handleError(_0x41955e,null));};exports[_0xfb10('0x73')]=function(_0x531e11,_0x1bf8ce,_0x320c82){return db[_0xfb10('0x66')]['findAll']({'where':{'id':_0x531e11[_0xfb10('0x3b')][_0xfb10('0x74')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xfb10('0x2a')](handleEntityNotFound(_0x1bf8ce,null))['then'](function(_0x57eeba){var _0x52af15=_[_0xfb10('0x34')](_0x57eeba,'id');var _0xe71d38=[];var _0x16faf8=[];var _0x536831=squel[_0xfb10('0x75')]();_0x536831[_0xfb10('0x76')](_0xfb10('0x77'))['from'](_0xfb10('0x78'),'tq')[_0xfb10('0x79')](_0xfb10('0x7a'),'ut',_0xfb10('0x7b'))[_0xfb10('0x44')](_0xfb10('0x7c'),_0x531e11[_0xfb10('0x4f')]['id']);for(var _0x56766c=0x0;_0x56766c<_0x57eeba['length'];_0x56766c+=0x1){let _0x22754a=_0x57eeba[_0x56766c];for(var _0x1a3fe0=0x0;_0x1a3fe0<_0x22754a[_0xfb10('0x69')][_0xfb10('0x50')];_0x1a3fe0+=0x1){let _0x1f87ee=_0x22754a[_0xfb10('0x69')][_0x1a3fe0];var _0x257793=_0x536831[_0xfb10('0x7d')]();_0x257793[_0xfb10('0x44')](_0xfb10('0x7e'),_0x1f87ee['id']);_0x16faf8[_0xfb10('0x7f')](db['sequelize'][_0xfb10('0x3b')](_0x257793[_0xfb10('0x80')](),{'type':db[_0xfb10('0x6d')][_0xfb10('0x81')][_0xfb10('0x82')]})['then'](function(_0x2fd750){if(_0x2fd750['length']===0x1){return _0x1f87ee['id'];}else{var _0x63cc3=_['every'](_['map'](_0x2fd750,'TeamId'),function(_0x3c5ad8){return _[_0xfb10('0x83')](_0x52af15,_0x3c5ad8);});if(_0x63cc3){return _0x1f87ee['id'];}}}));}}return BPromise[_0xfb10('0x84')](_0x16faf8)[_0xfb10('0x2a')](function(_0x495504){_0xe71d38=_(_0xe71d38)['union'](_0x495504)[_0xfb10('0x85')]()['value']();return db[_0xfb10('0x35')][_0xfb10('0x55')]({'where':{'id':_0x531e11[_0xfb10('0x4f')]['id']}})[_0xfb10('0x2a')](function(_0x4d33d8){return db[_0xfb10('0x6d')]['transaction'](function(_0x55e78a){return _0x4d33d8[_0xfb10('0x73')](_0x531e11[_0xfb10('0x3b')][_0xfb10('0x74')],{'transaction':_0x55e78a})[_0xfb10('0x2a')](function(){if(!_[_0xfb10('0x86')](_0xe71d38)){return _0x4d33d8[_0xfb10('0x87')](_0xe71d38,{'transaction':_0x55e78a});}})[_0xfb10('0x2a')](function(){_0xe71d38[_0xfb10('0x70')](function(_0xe07d97){socket[_0xfb10('0x71')](_0xfb10('0x88'),{'UserId':_0xe07d97,'WhatsappQueueId':_0x4d33d8['id']});});});});});});})[_0xfb10('0x2a')](respondWithStatusCode(_0x1bf8ce,null))[_0xfb10('0x4d')](handleError(_0x1bf8ce,null));};exports[_0xfb10('0x89')]=function(_0x3df03e,_0x16d2d4,_0x2b7607){return db['WhatsappQueue'][_0xfb10('0x55')]({'where':{'id':_0x3df03e[_0xfb10('0x4f')]['id']}})[_0xfb10('0x2a')](handleEntityNotFound(_0x16d2d4,null))[_0xfb10('0x2a')](function(_0x406266){if(_0x406266){return _0x406266[_0xfb10('0x89')](_0x3df03e[_0xfb10('0x53')][_0xfb10('0x74')],_['omit'](_0x3df03e[_0xfb10('0x53')],[_0xfb10('0x74'),'id'])||{})[_0xfb10('0x8a')](function(_0x115c5d){for(var _0x3d2319=0x0;_0x3d2319<_0x3df03e[_0xfb10('0x53')][_0xfb10('0x74')][_0xfb10('0x50')];_0x3d2319+=0x1){socket[_0xfb10('0x71')](_0xfb10('0x72'),{'UserId':Number(_0x3df03e['body'][_0xfb10('0x74')][_0x3d2319]),'WhatsappQueueId':Number(_0x3df03e[_0xfb10('0x4f')]['id'])});}return _0x115c5d;});}})[_0xfb10('0x2a')](respondWithResult(_0x16d2d4,null))[_0xfb10('0x4d')](handleError(_0x16d2d4,null));};exports[_0xfb10('0x87')]=function(_0x293b44,_0x57bb46,_0x4b90a9){return db[_0xfb10('0x35')][_0xfb10('0x55')]({'where':{'id':_0x293b44[_0xfb10('0x4f')]['id']}})['then'](handleEntityNotFound(_0x57bb46,null))['then'](function(_0x8b9c34){if(_0x8b9c34){return _0x8b9c34[_0xfb10('0x87')](_0x293b44[_0xfb10('0x3b')][_0xfb10('0x74')])['then'](function(){if(_[_0xfb10('0x8b')](_0x293b44[_0xfb10('0x3b')][_0xfb10('0x74')])){for(var _0x3ab1c0=0x0;_0x3ab1c0<_0x293b44['query'][_0xfb10('0x74')][_0xfb10('0x50')];_0x3ab1c0+=0x1){socket[_0xfb10('0x71')]('userWhatsappQueue:remove',{'UserId':Number(_0x293b44[_0xfb10('0x3b')][_0xfb10('0x74')][_0x3ab1c0]),'WhatsappQueueId':Number(_0x293b44['params']['id'])});}}else{socket['emit'](_0xfb10('0x88'),{'UserId':Number(_0x293b44[_0xfb10('0x3b')][_0xfb10('0x74')]),'WhatsappQueueId':Number(_0x293b44[_0xfb10('0x4f')]['id'])});}});}})[_0xfb10('0x2a')](respondWithStatusCode(_0x57bb46,null))['catch'](handleError(_0x57bb46,null));};exports[_0xfb10('0x8c')]=function(_0x58919f,_0x35a8de,_0x3a27e1){var _0x2d5ee1={};var _0x1cddce={};var _0x4182be;var _0x35e404;return db[_0xfb10('0x35')]['findOne']({'where':{'id':_0x58919f[_0xfb10('0x4f')]['id']}})[_0xfb10('0x2a')](handleEntityNotFound(_0x35a8de,null))[_0xfb10('0x2a')](function(_0xd07f8f){if(_0xd07f8f){_0x4182be=_0xd07f8f;_0x1cddce[_0xfb10('0x39')]=_[_0xfb10('0x3a')](db['User']['rawAttributes']);_0x1cddce[_0xfb10('0x3b')]=_['keys'](_0x58919f['query']);_0x1cddce[_0xfb10('0x3c')]=_[_0xfb10('0x3d')](_0x1cddce[_0xfb10('0x39')],_0x1cddce[_0xfb10('0x3b')]);_0x2d5ee1[_0xfb10('0x3e')]=_[_0xfb10('0x3d')](_0x1cddce['model'],qs[_0xfb10('0x3f')](_0x58919f[_0xfb10('0x3b')][_0xfb10('0x3f')]));_0x2d5ee1[_0xfb10('0x3e')]=_0x2d5ee1['attributes'][_0xfb10('0x50')]?_0x2d5ee1[_0xfb10('0x3e')]:_0x1cddce[_0xfb10('0x39')];_0x2d5ee1[_0xfb10('0x42')]=qs[_0xfb10('0x43')](_0x58919f[_0xfb10('0x3b')][_0xfb10('0x43')]);_0x2d5ee1[_0xfb10('0x44')]=qs['filters'](_[_0xfb10('0x45')](_0x58919f[_0xfb10('0x3b')],_0x1cddce['filters']));if(_0x58919f['query']['filter']){_0x2d5ee1[_0xfb10('0x44')]=_['merge'](_0x2d5ee1[_0xfb10('0x44')],{'$or':_['map'](_0x2d5ee1[_0xfb10('0x3e')],function(_0x201b2d){var _0x1b88da={};_0x1b88da[_0x201b2d]={'$like':'%'+_0x58919f['query']['filter']+'%'};return _0x1b88da;})});}_0x2d5ee1=_[_0xfb10('0x46')]({},_0x2d5ee1,_0x58919f[_0xfb10('0x49')]);return _0x4182be[_0xfb10('0x8c')](_0x2d5ee1);}})[_0xfb10('0x2a')](function(_0x1a2721){if(_0x1a2721){_0x35e404=_0x1a2721[_0xfb10('0x50')];if(!_0x58919f[_0xfb10('0x3b')][_0xfb10('0x40')](_0xfb10('0x41'))){_0x2d5ee1['limit']=qs[_0xfb10('0x22')](_0x58919f['query'][_0xfb10('0x22')]);_0x2d5ee1[_0xfb10('0x24')]=qs[_0xfb10('0x24')](_0x58919f[_0xfb10('0x3b')][_0xfb10('0x24')]);}return _0x4182be[_0xfb10('0x8c')](_0x2d5ee1);}})['then'](function(_0x48ec68){if(_0x48ec68){return _0x48ec68?{'count':_0x35e404,'rows':_0x48ec68}:null;}})[_0xfb10('0x2a')](respondWithResult(_0x35a8de,null))[_0xfb10('0x4d')](handleError(_0x35a8de,null));};
\ No newline at end of file
+var _0xc2c9=['every','includes','union','compact','value','ids','isEmpty','emit','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','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','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','redis','./whatsappQueue.socket','register','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','apply','update','then','destroy','WhatsappQueues','error','stack','name','map','WhatsappQueue','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','rawAttributes','WhatsappQueueId','User','findAndCountAll','UserId','agent','createdAt','%s/%s','SIP','updatedAt','Team','getTeams','nolimit','addTeams','Agents','interface','flatMap','sequelize','transaction','findOrCreate','forEach','userWhatsappQueue:save','select','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT'];(function(_0x2230fc,_0x4e16c0){var _0xf47695=function(_0x5b8f76){while(--_0x5b8f76){_0x2230fc['push'](_0x2230fc['shift']());}};_0xf47695(++_0x4e16c0);}(_0xc2c9,0x130));var _0x9c2c=function(_0xe8acf6,_0xce88e6){_0xe8acf6=_0xe8acf6-0x0;var _0x354cfb=_0xc2c9[_0xe8acf6];return _0x354cfb;};'use strict';var emlformat=require(_0x9c2c('0x0'));var rimraf=require(_0x9c2c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9c2c('0x2'));var rp=require(_0x9c2c('0x3'));var moment=require(_0x9c2c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9c2c('0x5'));var util=require(_0x9c2c('0x6'));var path=require(_0x9c2c('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9c2c('0x8'));var fs=require('fs');var fs_extra=require(_0x9c2c('0x9'));var _=require(_0x9c2c('0xa'));var squel=require(_0x9c2c('0xb'));var crypto=require(_0x9c2c('0xc'));var jsforce=require(_0x9c2c('0xd'));var deskjs=require(_0x9c2c('0xe'));var toCsv=require(_0x9c2c('0xf'));var querystring=require(_0x9c2c('0x10'));var Papa=require('papaparse');var Redis=require(_0x9c2c('0x11'));var authService=require(_0x9c2c('0x12'));var qs=require(_0x9c2c('0x13'));var as=require(_0x9c2c('0x14'));var hardwareService=require(_0x9c2c('0x15'));var logger=require(_0x9c2c('0x16'))(_0x9c2c('0x17'));var utils=require(_0x9c2c('0x18'));var config=require(_0x9c2c('0x19'));var licenseUtil=require(_0x9c2c('0x1a'));var db=require(_0x9c2c('0x1b'))['db'];config['redis']=_[_0x9c2c('0x1c')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x9c2c('0x1d'))(new Redis(config[_0x9c2c('0x1e')]));require(_0x9c2c('0x1f'))[_0x9c2c('0x20')](socket);function respondWithStatusCode(_0x23523a,_0x187522){_0x187522=_0x187522||0xcc;return function(_0x57bdac){if(_0x57bdac){return _0x23523a[_0x9c2c('0x21')](_0x187522);}return _0x23523a[_0x9c2c('0x22')](_0x187522)[_0x9c2c('0x23')]();};}function respondWithResult(_0x3e4be0,_0x4b5a88){_0x4b5a88=_0x4b5a88||0xc8;return function(_0x44bdb2){if(_0x44bdb2){return _0x3e4be0['status'](_0x4b5a88)['json'](_0x44bdb2);}};}function respondWithFilteredResult(_0x16051f,_0x64bc8d){return function(_0x5c97b7){if(_0x5c97b7){var _0x344b73=typeof _0x64bc8d[_0x9c2c('0x24')]==='undefined'&&typeof _0x64bc8d['limit']===_0x9c2c('0x25');var _0x54505d=_0x5c97b7[_0x9c2c('0x26')];var _0x4f6f2d=_0x344b73?0x0:_0x64bc8d[_0x9c2c('0x24')];var _0x5ab18a=_0x344b73?_0x5c97b7[_0x9c2c('0x26')]:_0x64bc8d[_0x9c2c('0x24')]+_0x64bc8d[_0x9c2c('0x27')];var _0x59c3a5;if(_0x5ab18a>=_0x54505d){_0x5ab18a=_0x54505d;_0x59c3a5=0xc8;}else{_0x59c3a5=0xce;}_0x16051f[_0x9c2c('0x22')](_0x59c3a5);return _0x16051f[_0x9c2c('0x28')](_0x9c2c('0x29'),_0x4f6f2d+'-'+_0x5ab18a+'/'+_0x54505d)['json'](_0x5c97b7);}return null;};}function patchUpdates(_0xa28aae){return function(_0x479750){try{jsonpatch[_0x9c2c('0x2a')](_0x479750,_0xa28aae,!![]);}catch(_0x46f1d0){return BPromise['reject'](_0x46f1d0);}return _0x479750['save']();};}function saveUpdates(_0x5ec8e4,_0x302022){return function(_0x45de1e){if(_0x45de1e){return _0x45de1e[_0x9c2c('0x2b')](_0x5ec8e4)[_0x9c2c('0x2c')](function(_0x5f03cf){return _0x5f03cf;});}return null;};}function removeEntity(_0x1dac90,_0x766966){return function(_0x354e23){if(_0x354e23){return _0x354e23[_0x9c2c('0x2d')]()[_0x9c2c('0x2c')](function(){var _0x2c5995=_0x354e23['get']({'plain':!![]});var _0x45490d=_0x9c2c('0x2e');return db['UserProfileResource'][_0x9c2c('0x2d')]({'where':{'type':_0x45490d,'resourceId':_0x2c5995['id']}})[_0x9c2c('0x2c')](function(){return _0x354e23;});})[_0x9c2c('0x2c')](function(){_0x1dac90['status'](0xcc)[_0x9c2c('0x23')]();});}};}function handleEntityNotFound(_0x3a7f55,_0x237394){return function(_0x3720e5){if(!_0x3720e5){_0x3a7f55[_0x9c2c('0x21')](0x194);}return _0x3720e5;};}function handleError(_0x3ef733,_0x3f3729){_0x3f3729=_0x3f3729||0x1f4;return function(_0x54a123){logger[_0x9c2c('0x2f')](_0x54a123[_0x9c2c('0x30')]);if(_0x54a123[_0x9c2c('0x31')]){delete _0x54a123['name'];}_0x3ef733['status'](_0x3f3729)['send'](_0x54a123);};}exports['index']=function(_0x105f4e,_0x5d14b5){var _0xc0aebe={},_0xcfe434={},_0x5ef9bc={'count':0x0,'rows':[]};var _0x118e30=_[_0x9c2c('0x32')](db[_0x9c2c('0x33')]['rawAttributes'],function(_0x28ad0f){return{'name':_0x28ad0f[_0x9c2c('0x34')],'type':_0x28ad0f['type'][_0x9c2c('0x35')]};});_0xcfe434[_0x9c2c('0x36')]=_[_0x9c2c('0x32')](_0x118e30,_0x9c2c('0x31'));_0xcfe434[_0x9c2c('0x37')]=_[_0x9c2c('0x38')](_0x105f4e['query']);_0xcfe434[_0x9c2c('0x39')]=_[_0x9c2c('0x3a')](_0xcfe434[_0x9c2c('0x36')],_0xcfe434[_0x9c2c('0x37')]);_0xc0aebe[_0x9c2c('0x3b')]=_[_0x9c2c('0x3a')](_0xcfe434['model'],qs['fields'](_0x105f4e[_0x9c2c('0x37')][_0x9c2c('0x3c')]));_0xc0aebe['attributes']=_0xc0aebe[_0x9c2c('0x3b')][_0x9c2c('0x3d')]?_0xc0aebe['attributes']:_0xcfe434[_0x9c2c('0x36')];if(!_0x105f4e[_0x9c2c('0x37')][_0x9c2c('0x3e')]('nolimit')){_0xc0aebe['limit']=qs[_0x9c2c('0x27')](_0x105f4e['query'][_0x9c2c('0x27')]);_0xc0aebe[_0x9c2c('0x24')]=qs[_0x9c2c('0x24')](_0x105f4e['query'][_0x9c2c('0x24')]);}_0xc0aebe[_0x9c2c('0x3f')]=qs['sort'](_0x105f4e[_0x9c2c('0x37')][_0x9c2c('0x40')]);_0xc0aebe['where']=qs[_0x9c2c('0x39')](_[_0x9c2c('0x41')](_0x105f4e['query'],_0xcfe434[_0x9c2c('0x39')]),_0x118e30);if(_0x105f4e[_0x9c2c('0x37')][_0x9c2c('0x42')]){_0xc0aebe['where']=_[_0x9c2c('0x43')](_0xc0aebe[_0x9c2c('0x44')],{'$or':_[_0x9c2c('0x32')](_0x118e30,function(_0x2c92bb){if(_0x2c92bb[_0x9c2c('0x45')]!==_0x9c2c('0x46')){var _0x45fe0e={};_0x45fe0e[_0x2c92bb[_0x9c2c('0x31')]]={'$like':'%'+_0x105f4e[_0x9c2c('0x37')][_0x9c2c('0x42')]+'%'};return _0x45fe0e;}})});}_0xc0aebe=_[_0x9c2c('0x43')]({},_0xc0aebe,_0x105f4e[_0x9c2c('0x47')]);var _0x210ae0={'where':_0xc0aebe[_0x9c2c('0x44')]};return db[_0x9c2c('0x33')][_0x9c2c('0x26')](_0x210ae0)[_0x9c2c('0x2c')](function(_0x47fbe9){_0x5ef9bc[_0x9c2c('0x26')]=_0x47fbe9;if(_0x105f4e[_0x9c2c('0x37')][_0x9c2c('0x48')]){_0xc0aebe[_0x9c2c('0x49')]=[{'all':!![]}];}return db['WhatsappQueue'][_0x9c2c('0x4a')](_0xc0aebe);})[_0x9c2c('0x2c')](function(_0x8f7a56){_0x5ef9bc[_0x9c2c('0x4b')]=_0x8f7a56;return _0x5ef9bc;})['then'](respondWithFilteredResult(_0x5d14b5,_0xc0aebe))[_0x9c2c('0x4c')](handleError(_0x5d14b5,null));};exports[_0x9c2c('0x4d')]=function(_0x355f94,_0x10c09d){var _0x1b0b5a={'raw':!![],'where':{'id':_0x355f94[_0x9c2c('0x4e')]['id']}},_0x379763={};_0x379763['model']=_[_0x9c2c('0x38')](db['WhatsappQueue']['rawAttributes']);_0x379763[_0x9c2c('0x37')]=_['keys'](_0x355f94[_0x9c2c('0x37')]);_0x379763[_0x9c2c('0x39')]=_['intersection'](_0x379763['model'],_0x379763[_0x9c2c('0x37')]);_0x1b0b5a[_0x9c2c('0x3b')]=_[_0x9c2c('0x3a')](_0x379763[_0x9c2c('0x36')],qs[_0x9c2c('0x3c')](_0x355f94[_0x9c2c('0x37')][_0x9c2c('0x3c')]));_0x1b0b5a[_0x9c2c('0x3b')]=_0x1b0b5a['attributes'][_0x9c2c('0x3d')]?_0x1b0b5a[_0x9c2c('0x3b')]:_0x379763[_0x9c2c('0x36')];if(_0x355f94[_0x9c2c('0x37')][_0x9c2c('0x48')]){_0x1b0b5a[_0x9c2c('0x49')]=[{'all':!![]}];}_0x1b0b5a=_[_0x9c2c('0x43')]({},_0x1b0b5a,_0x355f94[_0x9c2c('0x47')]);return db[_0x9c2c('0x33')]['find'](_0x1b0b5a)[_0x9c2c('0x2c')](handleEntityNotFound(_0x10c09d,null))[_0x9c2c('0x2c')](respondWithResult(_0x10c09d,null))[_0x9c2c('0x4c')](handleError(_0x10c09d,null));};exports[_0x9c2c('0x4f')]=function(_0x4338de,_0x178c5c){return db['WhatsappQueue']['create'](_0x4338de[_0x9c2c('0x50')],{})[_0x9c2c('0x2c')](function(_0x135e64){var _0x2c04d8=_0x4338de[_0x9c2c('0x51')][_0x9c2c('0x52')]({'plain':!![]});if(!_0x2c04d8)throw new Error(_0x9c2c('0x53'));if(_0x2c04d8[_0x9c2c('0x54')]===_0x9c2c('0x51')){var _0x424dac=_0x135e64[_0x9c2c('0x52')]({'plain':!![]});var _0x20f0a9=_0x9c2c('0x2e');return db[_0x9c2c('0x55')][_0x9c2c('0x56')]({'where':{'name':_0x20f0a9,'userProfileId':_0x2c04d8[_0x9c2c('0x57')]},'raw':!![]})[_0x9c2c('0x2c')](function(_0x245f46){if(_0x245f46&&_0x245f46[_0x9c2c('0x58')]===0x0){return db[_0x9c2c('0x59')][_0x9c2c('0x4f')]({'name':_0x424dac[_0x9c2c('0x31')],'resourceId':_0x424dac['id'],'type':_0x245f46[_0x9c2c('0x31')],'sectionId':_0x245f46['id']},{})[_0x9c2c('0x2c')](function(){return _0x135e64;});}else{return _0x135e64;}})['catch'](function(_0x34f979){logger['error'](_0x9c2c('0x5a'),_0x34f979);throw _0x34f979;});}return _0x135e64;})['then'](respondWithResult(_0x178c5c,0xc9))['catch'](handleError(_0x178c5c,null));};exports[_0x9c2c('0x2b')]=function(_0x34423f,_0x2a8c02){if(_0x34423f[_0x9c2c('0x50')]['id']){delete _0x34423f[_0x9c2c('0x50')]['id'];}return db[_0x9c2c('0x33')][_0x9c2c('0x56')]({'where':{'id':_0x34423f[_0x9c2c('0x4e')]['id']}})[_0x9c2c('0x2c')](handleEntityNotFound(_0x2a8c02,null))[_0x9c2c('0x2c')](saveUpdates(_0x34423f[_0x9c2c('0x50')],null))[_0x9c2c('0x2c')](respondWithResult(_0x2a8c02,null))[_0x9c2c('0x4c')](handleError(_0x2a8c02,null));};exports[_0x9c2c('0x2d')]=function(_0x1df363,_0x548c50){return db[_0x9c2c('0x33')][_0x9c2c('0x56')]({'where':{'id':_0x1df363[_0x9c2c('0x4e')]['id']}})[_0x9c2c('0x2c')](handleEntityNotFound(_0x548c50,null))[_0x9c2c('0x2c')](removeEntity(_0x548c50,null))[_0x9c2c('0x4c')](handleError(_0x548c50,null));};exports[_0x9c2c('0x5b')]=function(_0x55cc58,_0x539e13){return db[_0x9c2c('0x33')][_0x9c2c('0x5b')]()[_0x9c2c('0x2c')](respondWithResult(_0x539e13,null))[_0x9c2c('0x4c')](handleError(_0x539e13,null));};exports[_0x9c2c('0x5c')]=function(_0x8f2e27,_0x5d277f,_0x5d98db){var _0x16d354={'raw':!![],'where':{}},_0x236e3d={},_0x568731;return db[_0x9c2c('0x33')][_0x9c2c('0x5d')]({'where':{'id':_0x8f2e27[_0x9c2c('0x4e')]['id']}})[_0x9c2c('0x2c')](handleEntityNotFound(_0x5d277f,null))['then'](function(_0x741ec9){if(_0x741ec9){_0x568731=_0x741ec9[_0x9c2c('0x52')]({'plain':!![]});_0x236e3d[_0x9c2c('0x36')]=_[_0x9c2c('0x38')](db[_0x9c2c('0x5e')][_0x9c2c('0x5f')]);_0x236e3d[_0x9c2c('0x37')]=_[_0x9c2c('0x38')](_0x8f2e27[_0x9c2c('0x37')]);_0x236e3d[_0x9c2c('0x39')]=_[_0x9c2c('0x3a')](_0x236e3d[_0x9c2c('0x36')],_0x236e3d[_0x9c2c('0x37')]);_0x16d354['attributes']=_[_0x9c2c('0x3a')](_0x236e3d[_0x9c2c('0x36')],qs[_0x9c2c('0x3c')](_0x8f2e27[_0x9c2c('0x37')][_0x9c2c('0x3c')]));_0x16d354[_0x9c2c('0x3b')]=_0x16d354[_0x9c2c('0x3b')][_0x9c2c('0x3d')]?_0x16d354[_0x9c2c('0x3b')]:_0x236e3d['model'];if(!_0x8f2e27[_0x9c2c('0x37')][_0x9c2c('0x3e')]('nolimit')){_0x16d354[_0x9c2c('0x27')]=qs['limit'](_0x8f2e27[_0x9c2c('0x37')]['limit']);_0x16d354['offset']=qs['offset'](_0x8f2e27[_0x9c2c('0x37')]['offset']);}_0x16d354[_0x9c2c('0x3f')]=qs['sort'](_0x8f2e27[_0x9c2c('0x37')][_0x9c2c('0x40')]);_0x16d354['where']=qs[_0x9c2c('0x39')](_['pick'](_0x8f2e27[_0x9c2c('0x37')],_0x236e3d[_0x9c2c('0x39')]));_0x16d354[_0x9c2c('0x44')][_0x9c2c('0x60')]=_0x741ec9['id'];if(_0x8f2e27['query'][_0x9c2c('0x42')]){_0x16d354['where']=_['merge'](_0x16d354[_0x9c2c('0x44')],{'$or':_['map'](_0x16d354[_0x9c2c('0x3b')],function(_0x28e873){var _0x3bd03f={};_0x3bd03f[_0x28e873]={'$like':'%'+_0x8f2e27['query']['filter']+'%'};return _0x3bd03f;})});}_0x16d354=_[_0x9c2c('0x43')]({},_0x16d354,_0x8f2e27['options']);return db[_0x9c2c('0x5e')][_0x9c2c('0x4a')](_0x16d354);}})[_0x9c2c('0x2c')](function(_0x376154){if(_0x376154){return db[_0x9c2c('0x61')][_0x9c2c('0x62')]({'where':{'id':_[_0x9c2c('0x32')](_0x376154,_0x9c2c('0x63')),'role':_0x9c2c('0x64')},'attributes':['id',_0x9c2c('0x31'),'whatsappPause','updatedAt',_0x9c2c('0x65')]});}})['then'](function(_0x3e4b31){if(_0x3e4b31){return{'count':_0x3e4b31[_0x9c2c('0x26')],'rows':_[_0x9c2c('0x32')](_0x3e4b31[_0x9c2c('0x4b')],function(_0x1f128b){return{'membername':_0x1f128b[_0x9c2c('0x31')],'UserId':_0x1f128b['id'],'queue_name':_0x568731[_0x9c2c('0x31')],'WhatsappQueueId':_0x568731['id'],'interface':util['format'](_0x9c2c('0x66'),_0x9c2c('0x67'),_0x1f128b[_0x9c2c('0x31')]),'penalty':0x0,'paused':_0x1f128b['whatsappPause'],'createdAt':_0x1f128b['createdAt'],'updatedAt':_0x1f128b[_0x9c2c('0x68')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9c2c('0x2c')](respondWithFilteredResult(_0x5d277f,_0x16d354))[_0x9c2c('0x4c')](handleError(_0x5d277f,null));};exports['getTeams']=function(_0x247699,_0x2ac6df,_0x124ba2){var _0x37a9fa={};var _0x42d417={};var _0x5ea86b;var _0x339f42;return db[_0x9c2c('0x33')][_0x9c2c('0x5d')]({'where':{'id':_0x247699['params']['id']}})[_0x9c2c('0x2c')](handleEntityNotFound(_0x2ac6df,null))[_0x9c2c('0x2c')](function(_0x3a8b31){if(_0x3a8b31){_0x5ea86b=_0x3a8b31;_0x42d417[_0x9c2c('0x36')]=_[_0x9c2c('0x38')](db[_0x9c2c('0x69')]['rawAttributes']);_0x42d417[_0x9c2c('0x37')]=_[_0x9c2c('0x38')](_0x247699['query']);_0x42d417[_0x9c2c('0x39')]=_[_0x9c2c('0x3a')](_0x42d417[_0x9c2c('0x36')],_0x42d417[_0x9c2c('0x37')]);_0x37a9fa[_0x9c2c('0x3b')]=_[_0x9c2c('0x3a')](_0x42d417[_0x9c2c('0x36')],qs[_0x9c2c('0x3c')](_0x247699['query'][_0x9c2c('0x3c')]));_0x37a9fa[_0x9c2c('0x3b')]=_0x37a9fa[_0x9c2c('0x3b')]['length']?_0x37a9fa[_0x9c2c('0x3b')]:_0x42d417[_0x9c2c('0x36')];_0x37a9fa['order']=qs['sort'](_0x247699['query'][_0x9c2c('0x40')]);_0x37a9fa[_0x9c2c('0x44')]=qs['filters'](_[_0x9c2c('0x41')](_0x247699['query'],_0x42d417[_0x9c2c('0x39')]));if(_0x247699[_0x9c2c('0x37')][_0x9c2c('0x42')]){_0x37a9fa[_0x9c2c('0x44')]=_[_0x9c2c('0x43')](_0x37a9fa['where'],{'$or':_[_0x9c2c('0x32')](_0x37a9fa[_0x9c2c('0x3b')],function(_0x2d1920){var _0x174dcc={};_0x174dcc[_0x2d1920]={'$like':'%'+_0x247699[_0x9c2c('0x37')]['filter']+'%'};return _0x174dcc;})});}_0x37a9fa=_[_0x9c2c('0x43')]({},_0x37a9fa,_0x247699[_0x9c2c('0x47')]);return _0x5ea86b[_0x9c2c('0x6a')](_0x37a9fa);}})[_0x9c2c('0x2c')](function(_0x196fd2){if(_0x196fd2){_0x339f42=_0x196fd2['length'];if(!_0x247699['query'][_0x9c2c('0x3e')](_0x9c2c('0x6b'))){_0x37a9fa[_0x9c2c('0x27')]=qs[_0x9c2c('0x27')](_0x247699[_0x9c2c('0x37')][_0x9c2c('0x27')]);_0x37a9fa[_0x9c2c('0x24')]=qs[_0x9c2c('0x24')](_0x247699[_0x9c2c('0x37')][_0x9c2c('0x24')]);}return _0x5ea86b[_0x9c2c('0x6a')](_0x37a9fa);}})['then'](function(_0x1dec28){if(_0x1dec28){return _0x1dec28?{'count':_0x339f42,'rows':_0x1dec28}:null;}})[_0x9c2c('0x2c')](respondWithResult(_0x2ac6df,null))[_0x9c2c('0x4c')](handleError(_0x2ac6df,null));};exports[_0x9c2c('0x6c')]=function(_0x4e7717,_0x14c83b,_0x94517f){var _0x381180=_0x4e7717[_0x9c2c('0x50')]['ids'];return db[_0x9c2c('0x69')][_0x9c2c('0x4a')]({'where':{'id':_0x381180},'attributes':['id'],'include':[{'model':db['User'],'as':_0x9c2c('0x6d'),'attributes':['id',_0x9c2c('0x31'),'online','voicePause',_0x9c2c('0x6e')],'raw':!![]}]})[_0x9c2c('0x2c')](function(_0x3f720e){if(_0x3f720e){var _0x15106b=_[_0x9c2c('0x6f')](_0x3f720e,function(_0x3b6dc5){var _0x2c7d40=_0x3b6dc5[_0x9c2c('0x52')]({'plain':!![]});return _0x2c7d40[_0x9c2c('0x6d')];});return db['WhatsappQueue'][_0x9c2c('0x56')]({'where':{'id':_0x4e7717['params']['id']}})[_0x9c2c('0x2c')](function(_0x12963e){return db[_0x9c2c('0x70')][_0x9c2c('0x71')](function(_0x20d6d5){return _0x12963e[_0x9c2c('0x6c')](_0x381180,{'transaction':_0x20d6d5})[_0x9c2c('0x2c')](function(){return BPromise['each'](_0x15106b,function(_0x69283){return db[_0x9c2c('0x5e')][_0x9c2c('0x72')]({'where':{'UserId':_0x69283['id'],'WhatsappQueueId':_0x4e7717[_0x9c2c('0x4e')]['id']},'transaction':_0x20d6d5});});})[_0x9c2c('0x2c')](function(){_0x15106b[_0x9c2c('0x73')](function(_0x422909){socket['emit'](_0x9c2c('0x74'),{'UserId':_0x422909['id'],'WhatsappQueueId':_0x12963e['id']});});});});});}})['then'](respondWithStatusCode(_0x14c83b,null))[_0x9c2c('0x4c')](handleError(_0x14c83b,null));};exports['removeTeams']=function(_0x7af15e,_0x2ae071,_0x35c432){return db['Team']['findAll']({'where':{'id':_0x7af15e[_0x9c2c('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0x9c2c('0x61')],'as':_0x9c2c('0x6d'),'attributes':['id'],'raw':!![]}]})[_0x9c2c('0x2c')](handleEntityNotFound(_0x2ae071,null))[_0x9c2c('0x2c')](function(_0x13ad9b){var _0x36ad7e=_[_0x9c2c('0x32')](_0x13ad9b,'id');var _0x10d807=[];var _0x576184=[];var _0xae3fc1=squel[_0x9c2c('0x75')]();_0xae3fc1['field'](_0x9c2c('0x76'))[_0x9c2c('0x77')](_0x9c2c('0x78'),'tq')[_0x9c2c('0x79')](_0x9c2c('0x7a'),'ut',_0x9c2c('0x7b'))[_0x9c2c('0x44')](_0x9c2c('0x7c'),_0x7af15e[_0x9c2c('0x4e')]['id']);for(var _0x2ccbe6=0x0;_0x2ccbe6<_0x13ad9b[_0x9c2c('0x3d')];_0x2ccbe6+=0x1){let _0x572f6a=_0x13ad9b[_0x2ccbe6];for(var _0x4bb7e9=0x0;_0x4bb7e9<_0x572f6a[_0x9c2c('0x6d')]['length'];_0x4bb7e9+=0x1){let _0x4993d1=_0x572f6a[_0x9c2c('0x6d')][_0x4bb7e9];var _0x43429d=_0xae3fc1[_0x9c2c('0x7d')]();_0x43429d[_0x9c2c('0x44')](_0x9c2c('0x7e'),_0x4993d1['id']);_0x576184[_0x9c2c('0x7f')](db['sequelize'][_0x9c2c('0x37')](_0x43429d[_0x9c2c('0x80')](),{'type':db['sequelize'][_0x9c2c('0x81')][_0x9c2c('0x82')]})[_0x9c2c('0x2c')](function(_0x232162){if(_0x232162[_0x9c2c('0x3d')]===0x1){return _0x4993d1['id'];}else{var _0x4ca308=_[_0x9c2c('0x83')](_[_0x9c2c('0x32')](_0x232162,'TeamId'),function(_0x5b14f7){return _[_0x9c2c('0x84')](_0x36ad7e,_0x5b14f7);});if(_0x4ca308){return _0x4993d1['id'];}}}));}}return BPromise['all'](_0x576184)[_0x9c2c('0x2c')](function(_0x269628){_0x10d807=_(_0x10d807)[_0x9c2c('0x85')](_0x269628)[_0x9c2c('0x86')]()[_0x9c2c('0x87')]();return db[_0x9c2c('0x33')]['find']({'where':{'id':_0x7af15e[_0x9c2c('0x4e')]['id']}})[_0x9c2c('0x2c')](function(_0x6a4dac){return db[_0x9c2c('0x70')][_0x9c2c('0x71')](function(_0x2582d4){return _0x6a4dac['removeTeams'](_0x7af15e[_0x9c2c('0x37')][_0x9c2c('0x88')],{'transaction':_0x2582d4})[_0x9c2c('0x2c')](function(){if(!_[_0x9c2c('0x89')](_0x10d807)){return _0x6a4dac['removeAgents'](_0x10d807,{'transaction':_0x2582d4});}})[_0x9c2c('0x2c')](function(){_0x10d807[_0x9c2c('0x73')](function(_0x58e1ce){socket[_0x9c2c('0x8a')](_0x9c2c('0x8b'),{'UserId':_0x58e1ce,'WhatsappQueueId':_0x6a4dac['id']});});});});});});})[_0x9c2c('0x2c')](respondWithStatusCode(_0x2ae071,null))['catch'](handleError(_0x2ae071,null));};exports['addAgents']=function(_0x10a02e,_0x4eca34,_0x116407){return db[_0x9c2c('0x33')][_0x9c2c('0x56')]({'where':{'id':_0x10a02e[_0x9c2c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4eca34,null))[_0x9c2c('0x2c')](function(_0x1de4d3){if(_0x1de4d3){return _0x1de4d3[_0x9c2c('0x8c')](_0x10a02e[_0x9c2c('0x50')]['ids'],_[_0x9c2c('0x8d')](_0x10a02e[_0x9c2c('0x50')],['ids','id'])||{})[_0x9c2c('0x8e')](function(_0x4bfc3e){for(var _0x2ce7b0=0x0;_0x2ce7b0<_0x10a02e[_0x9c2c('0x50')][_0x9c2c('0x88')][_0x9c2c('0x3d')];_0x2ce7b0+=0x1){socket[_0x9c2c('0x8a')](_0x9c2c('0x74'),{'UserId':Number(_0x10a02e[_0x9c2c('0x50')][_0x9c2c('0x88')][_0x2ce7b0]),'WhatsappQueueId':Number(_0x10a02e['params']['id'])});}return _0x4bfc3e;});}})[_0x9c2c('0x2c')](respondWithResult(_0x4eca34,null))[_0x9c2c('0x4c')](handleError(_0x4eca34,null));};exports['removeAgents']=function(_0x5b1833,_0x37e3c1,_0x334199){return db[_0x9c2c('0x33')][_0x9c2c('0x56')]({'where':{'id':_0x5b1833[_0x9c2c('0x4e')]['id']}})[_0x9c2c('0x2c')](handleEntityNotFound(_0x37e3c1,null))['then'](function(_0x8f11f0){if(_0x8f11f0){return _0x8f11f0['removeAgents'](_0x5b1833[_0x9c2c('0x37')][_0x9c2c('0x88')])[_0x9c2c('0x2c')](function(){if(_[_0x9c2c('0x8f')](_0x5b1833['query'][_0x9c2c('0x88')])){for(var _0x102252=0x0;_0x102252<_0x5b1833[_0x9c2c('0x37')][_0x9c2c('0x88')][_0x9c2c('0x3d')];_0x102252+=0x1){socket[_0x9c2c('0x8a')](_0x9c2c('0x8b'),{'UserId':Number(_0x5b1833[_0x9c2c('0x37')][_0x9c2c('0x88')][_0x102252]),'WhatsappQueueId':Number(_0x5b1833['params']['id'])});}}else{socket[_0x9c2c('0x8a')](_0x9c2c('0x8b'),{'UserId':Number(_0x5b1833[_0x9c2c('0x37')][_0x9c2c('0x88')]),'WhatsappQueueId':Number(_0x5b1833[_0x9c2c('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x37e3c1,null))[_0x9c2c('0x4c')](handleError(_0x37e3c1,null));};exports[_0x9c2c('0x90')]=function(_0x4cc2f6,_0x4cae9c,_0x360204){var _0x23376a={};var _0x47e32a={};var _0x226337;var _0x55ba59;return db[_0x9c2c('0x33')][_0x9c2c('0x5d')]({'where':{'id':_0x4cc2f6[_0x9c2c('0x4e')]['id']}})[_0x9c2c('0x2c')](handleEntityNotFound(_0x4cae9c,null))['then'](function(_0x367ffc){if(_0x367ffc){_0x226337=_0x367ffc;_0x47e32a['model']=_[_0x9c2c('0x38')](db['User'][_0x9c2c('0x5f')]);_0x47e32a[_0x9c2c('0x37')]=_[_0x9c2c('0x38')](_0x4cc2f6[_0x9c2c('0x37')]);_0x47e32a[_0x9c2c('0x39')]=_[_0x9c2c('0x3a')](_0x47e32a[_0x9c2c('0x36')],_0x47e32a[_0x9c2c('0x37')]);_0x23376a[_0x9c2c('0x3b')]=_[_0x9c2c('0x3a')](_0x47e32a[_0x9c2c('0x36')],qs[_0x9c2c('0x3c')](_0x4cc2f6['query'][_0x9c2c('0x3c')]));_0x23376a[_0x9c2c('0x3b')]=_0x23376a[_0x9c2c('0x3b')][_0x9c2c('0x3d')]?_0x23376a['attributes']:_0x47e32a[_0x9c2c('0x36')];_0x23376a['order']=qs[_0x9c2c('0x40')](_0x4cc2f6['query']['sort']);_0x23376a[_0x9c2c('0x44')]=qs[_0x9c2c('0x39')](_[_0x9c2c('0x41')](_0x4cc2f6['query'],_0x47e32a['filters']));if(_0x4cc2f6['query'][_0x9c2c('0x42')]){_0x23376a[_0x9c2c('0x44')]=_[_0x9c2c('0x43')](_0x23376a[_0x9c2c('0x44')],{'$or':_[_0x9c2c('0x32')](_0x23376a['attributes'],function(_0x3bcc56){var _0x32cdb6={};_0x32cdb6[_0x3bcc56]={'$like':'%'+_0x4cc2f6[_0x9c2c('0x37')][_0x9c2c('0x42')]+'%'};return _0x32cdb6;})});}_0x23376a=_[_0x9c2c('0x43')]({},_0x23376a,_0x4cc2f6['options']);return _0x226337['getAgents'](_0x23376a);}})['then'](function(_0xf76e40){if(_0xf76e40){_0x55ba59=_0xf76e40[_0x9c2c('0x3d')];if(!_0x4cc2f6[_0x9c2c('0x37')][_0x9c2c('0x3e')](_0x9c2c('0x6b'))){_0x23376a[_0x9c2c('0x27')]=qs[_0x9c2c('0x27')](_0x4cc2f6[_0x9c2c('0x37')]['limit']);_0x23376a['offset']=qs['offset'](_0x4cc2f6[_0x9c2c('0x37')]['offset']);}return _0x226337['getAgents'](_0x23376a);}})[_0x9c2c('0x2c')](function(_0x3aea14){if(_0x3aea14){return _0x3aea14?{'count':_0x55ba59,'rows':_0x3aea14}:null;}})[_0x9c2c('0x2c')](respondWithResult(_0x4cae9c,null))[_0x9c2c('0x4c')](handleError(_0x4cae9c,null));};
\ No newline at end of file
index 7b60eac..e7f0761 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10ba=['remove','hook','exports','events','../../mysqldb','setMaxListeners','update'];(function(_0x15c91d,_0xa83a7f){var _0xcb9d40=function(_0x2ac0c0){while(--_0x2ac0c0){_0x15c91d['push'](_0x15c91d['shift']());}};_0xcb9d40(++_0xa83a7f);}(_0x10ba,0x17d));var _0xa10b=function(_0x5f1cf8,_0x5e0923){_0x5f1cf8=_0x5f1cf8-0x0;var _0x27d0fa=_0x10ba[_0x5f1cf8];return _0x27d0fa;};'use strict';var EventEmitter=require(_0xa10b('0x0'));var WhatsappQueue=require(_0xa10b('0x1'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xa10b('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa10b('0x3'),'afterDestroy':_0xa10b('0x4')};function emitEvent(_0x2e39d3){return function(_0x821f92,_0x5c7692,_0x1039d9){WhatsappQueueEvents['emit'](_0x2e39d3+':'+_0x821f92['id'],_0x821f92);WhatsappQueueEvents['emit'](_0x2e39d3,_0x821f92);_0x1039d9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xa10b('0x5')](e,emitEvent(event));}}module[_0xa10b('0x6')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x271f=['setMaxListeners','save','update','remove','emit','hook','events','../../mysqldb','WhatsappQueue'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0x271f,0x15c));var _0xf271=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x271f[_0x2b4411];return _0x8e41ef;};'use strict';var EventEmitter=require(_0xf271('0x0'));var WhatsappQueue=require(_0xf271('0x1'))['db'][_0xf271('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xf271('0x3')](0x0);var events={'afterCreate':_0xf271('0x4'),'afterUpdate':_0xf271('0x5'),'afterDestroy':_0xf271('0x6')};function emitEvent(_0x15b9f0){return function(_0x291a70,_0x4c7cbf,_0xa54382){WhatsappQueueEvents[_0xf271('0x7')](_0x15b9f0+':'+_0x291a70['id'],_0x291a70);WhatsappQueueEvents[_0xf271('0x7')](_0x15b9f0,_0x291a70);_0xa54382(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xf271('0x8')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index 5bedfbb..5e83317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8be3=['rimraf','../../config/environment','./whatsappQueue.attributes','exports','define','WhatsappQueue','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8be3,0xc9));var _0x38be=function(_0x3e40d6,_0x26a601){_0x3e40d6=_0x3e40d6-0x0;var _0x5ca19b=_0x8be3[_0x3e40d6];return _0x5ca19b;};'use strict';var _=require('lodash');var util=require(_0x38be('0x0'));var logger=require(_0x38be('0x1'))(_0x38be('0x2'));var moment=require(_0x38be('0x3'));var BPromise=require(_0x38be('0x4'));var rp=require(_0x38be('0x5'));var fs=require('fs');var path=require(_0x38be('0x6'));var rimraf=require(_0x38be('0x7'));var config=require(_0x38be('0x8'));var attributes=require(_0x38be('0x9'));module[_0x38be('0xa')]=function(_0x5b6e55,_0x460e01){return _0x5b6e55[_0x38be('0xb')](_0x38be('0xc'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8e9=['exports','WhatsappQueue','whatsapp_queues','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./whatsappQueue.attributes'];(function(_0x2815e8,_0x3fc161){var _0xc56aea=function(_0x542290){while(--_0x542290){_0x2815e8['push'](_0x2815e8['shift']());}};_0xc56aea(++_0x3fc161);}(_0xd8e9,0x12f));var _0x9d8e=function(_0x56470d,_0x37507e){_0x56470d=_0x56470d-0x0;var _0x333711=_0xd8e9[_0x56470d];return _0x333711;};'use strict';var _=require(_0x9d8e('0x0'));var util=require(_0x9d8e('0x1'));var logger=require('../../config/logger')(_0x9d8e('0x2'));var moment=require(_0x9d8e('0x3'));var BPromise=require(_0x9d8e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9d8e('0x5'));var rimraf=require(_0x9d8e('0x6'));var config=require(_0x9d8e('0x7'));var attributes=require(_0x9d8e('0x8'));module[_0x9d8e('0x9')]=function(_0x410e11,_0x50656b){return _0x410e11['define'](_0x9d8e('0xa'),attributes,{'tableName':_0x9d8e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df8f475..82d763c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ddf=['stringify','error','code','message','catch','GetWhatsappQueue','WhatsappQueue','findAll','raw','options','where','attributes','limit','map','model','include','debug','ShowWhatsappQueue','find','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s'];(function(_0x211bda,_0x394065){var _0x1005c8=function(_0x65f7de){while(--_0x65f7de){_0x211bda['push'](_0x211bda['shift']());}};_0x1005c8(++_0x394065);}(_0x3ddf,0xd6));var _0xf3dd=function(_0x4150d6,_0x50be85){_0x4150d6=_0x4150d6-0x0;var _0x2f73e8=_0x3ddf[_0x4150d6];return _0x2f73e8;};'use strict';var _=require(_0xf3dd('0x0'));var util=require(_0xf3dd('0x1'));var moment=require(_0xf3dd('0x2'));var BPromise=require(_0xf3dd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf3dd('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf3dd('0x5'));var logger=require('../../config/logger')(_0xf3dd('0x6'));var config=require(_0xf3dd('0x7'));var jayson=require(_0xf3dd('0x8'));var client=jayson['client'][_0xf3dd('0x9')]({'port':0x232a});config['redis']=_[_0xf3dd('0xa')](config[_0xf3dd('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xf3dd('0xc'))(new Redis(config[_0xf3dd('0xb')]));require('./whatsappQueue.socket')[_0xf3dd('0xd')](socket);function respondWithRpcPromise(_0x7ec7c7,_0x51a214,_0x4dd7d6){return new BPromise(function(_0x493417,_0x1c25db){return client[_0xf3dd('0xe')](_0x7ec7c7,_0x4dd7d6)[_0xf3dd('0xf')](function(_0x160cc9){logger[_0xf3dd('0x10')](_0xf3dd('0x11'),_0x51a214,_0xf3dd('0x12'));logger['debug'](_0xf3dd('0x13'),_0x51a214,_0xf3dd('0x12'),JSON[_0xf3dd('0x14')](_0x160cc9));if(_0x160cc9[_0xf3dd('0x15')]){if(_0x160cc9[_0xf3dd('0x15')][_0xf3dd('0x16')]===0x1f4){logger[_0xf3dd('0x15')](_0xf3dd('0x11'),_0x51a214,_0x160cc9[_0xf3dd('0x15')][_0xf3dd('0x17')]);return _0x1c25db(_0x160cc9['error'][_0xf3dd('0x17')]);}logger[_0xf3dd('0x15')](_0xf3dd('0x11'),_0x51a214,_0x160cc9[_0xf3dd('0x15')][_0xf3dd('0x17')]);return _0x493417(_0x160cc9[_0xf3dd('0x15')][_0xf3dd('0x17')]);}else{logger[_0xf3dd('0x10')](_0xf3dd('0x11'),_0x51a214,_0xf3dd('0x12'));_0x493417(_0x160cc9['result']['message']);}})[_0xf3dd('0x18')](function(_0x56c6a7){logger[_0xf3dd('0x15')](_0xf3dd('0x11'),_0x51a214,_0x56c6a7);_0x1c25db(_0x56c6a7);});});}exports[_0xf3dd('0x19')]=function(_0x21eb3b){var _0x5dd2b2=this;return new Promise(function(_0x2f45f1,_0x429f3d){return db[_0xf3dd('0x1a')][_0xf3dd('0x1b')]({'raw':_0x21eb3b['options']?_0x21eb3b['options'][_0xf3dd('0x1c')]===undefined?!![]:![]:!![],'where':_0x21eb3b[_0xf3dd('0x1d')]?_0x21eb3b[_0xf3dd('0x1d')][_0xf3dd('0x1e')]||null:null,'attributes':_0x21eb3b[_0xf3dd('0x1d')]?_0x21eb3b[_0xf3dd('0x1d')][_0xf3dd('0x1f')]||null:null,'limit':_0x21eb3b[_0xf3dd('0x1d')]?_0x21eb3b[_0xf3dd('0x1d')][_0xf3dd('0x20')]||null:null,'include':_0x21eb3b[_0xf3dd('0x1d')]?_0x21eb3b[_0xf3dd('0x1d')]['include']?_[_0xf3dd('0x21')](_0x21eb3b[_0xf3dd('0x1d')]['include'],function(_0x310533){return{'model':db[_0x310533[_0xf3dd('0x22')]],'as':_0x310533['as'],'attributes':_0x310533['attributes'],'include':_0x310533[_0xf3dd('0x23')]?_[_0xf3dd('0x21')](_0x310533[_0xf3dd('0x23')],function(_0x97bec3){return{'model':db[_0x97bec3[_0xf3dd('0x22')]],'as':_0x97bec3['as'],'attributes':_0x97bec3[_0xf3dd('0x1f')],'include':_0x97bec3[_0xf3dd('0x23')]?_[_0xf3dd('0x21')](_0x97bec3[_0xf3dd('0x23')],function(_0x478538){return{'model':db[_0x478538['model']],'as':_0x478538['as'],'attributes':_0x478538[_0xf3dd('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xf3dd('0xf')](function(_0x3d904f){logger[_0xf3dd('0x10')](_0xf3dd('0x19'),_0x21eb3b);logger[_0xf3dd('0x24')]('GetWhatsappQueue',_0x21eb3b,JSON[_0xf3dd('0x14')](_0x3d904f));_0x2f45f1(_0x3d904f);})[_0xf3dd('0x18')](function(_0x71de2d){logger[_0xf3dd('0x15')](_0xf3dd('0x19'),_0x71de2d[_0xf3dd('0x17')],_0x21eb3b);_0x429f3d(_0x5dd2b2[_0xf3dd('0x15')](0x1f4,_0x71de2d[_0xf3dd('0x17')]));});});};exports[_0xf3dd('0x25')]=function(_0x1f2e61){var _0x2e0ac6=this;return new Promise(function(_0x44d145,_0x5b4080){return db[_0xf3dd('0x1a')][_0xf3dd('0x26')]({'raw':_0x1f2e61[_0xf3dd('0x1d')]?_0x1f2e61['options'][_0xf3dd('0x1c')]===undefined?!![]:![]:!![],'where':_0x1f2e61[_0xf3dd('0x1d')]?_0x1f2e61[_0xf3dd('0x1d')][_0xf3dd('0x1e')]||null:null,'attributes':_0x1f2e61[_0xf3dd('0x1d')]?_0x1f2e61['options']['attributes']||null:null,'include':_0x1f2e61[_0xf3dd('0x1d')]?_0x1f2e61['options']['include']?_[_0xf3dd('0x21')](_0x1f2e61[_0xf3dd('0x1d')]['include'],function(_0x4c86be){return{'model':db[_0x4c86be[_0xf3dd('0x22')]],'as':_0x4c86be['as'],'attributes':_0x4c86be[_0xf3dd('0x1f')],'include':_0x4c86be[_0xf3dd('0x23')]?_[_0xf3dd('0x21')](_0x4c86be['include'],function(_0x1a894b){return{'model':db[_0x1a894b['model']],'as':_0x1a894b['as'],'attributes':_0x1a894b[_0xf3dd('0x1f')],'include':_0x1a894b[_0xf3dd('0x23')]?_[_0xf3dd('0x21')](_0x1a894b[_0xf3dd('0x23')],function(_0x5e61db){return{'model':db[_0x5e61db[_0xf3dd('0x22')]],'as':_0x5e61db['as'],'attributes':_0x5e61db[_0xf3dd('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3730ea){logger['info'](_0xf3dd('0x25'),_0x1f2e61);logger[_0xf3dd('0x24')](_0xf3dd('0x25'),_0x1f2e61,JSON['stringify'](_0x3730ea));_0x44d145(_0x3730ea);})[_0xf3dd('0x18')](function(_0x109597){logger[_0xf3dd('0x15')](_0xf3dd('0x25'),_0x109597[_0xf3dd('0x17')],_0x1f2e61);_0x5b4080(_0x2e0ac6['error'](0x1f4,_0x109597[_0xf3dd('0x17')]));});});};
\ No newline at end of file
+var _0xf816=['map','model','attributes','then','GetWhatsappQueue','ShowWhatsappQueue','find','raw','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','request','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','WhatsappQueue','options','limit','include'];(function(_0x29ac2c,_0x527158){var _0x1942fa=function(_0x2bdf38){while(--_0x2bdf38){_0x29ac2c['push'](_0x29ac2c['shift']());}};_0x1942fa(++_0x527158);}(_0xf816,0x195));var _0x6f81=function(_0x34d515,_0x2f5efa){_0x34d515=_0x34d515-0x0;var _0x170fad=_0xf816[_0x34d515];return _0x170fad;};'use strict';var _=require(_0x6f81('0x0'));var util=require(_0x6f81('0x1'));var moment=require(_0x6f81('0x2'));var BPromise=require(_0x6f81('0x3'));var rs=require(_0x6f81('0x4'));var fs=require('fs');var Redis=require(_0x6f81('0x5'));var db=require(_0x6f81('0x6'))['db'];var utils=require(_0x6f81('0x7'));var logger=require(_0x6f81('0x8'))(_0x6f81('0x9'));var config=require(_0x6f81('0xa'));var jayson=require(_0x6f81('0xb'));var client=jayson[_0x6f81('0xc')][_0x6f81('0xd')]({'port':0x232a});config['redis']=_[_0x6f81('0xe')](config[_0x6f81('0xf')],{'host':_0x6f81('0x10'),'port':0x18eb});var socket=require(_0x6f81('0x11'))(new Redis(config[_0x6f81('0xf')]));require(_0x6f81('0x12'))[_0x6f81('0x13')](socket);function respondWithRpcPromise(_0x352d1d,_0x5caf5c,_0x1e5a91){return new BPromise(function(_0x2a4f89,_0x3089ef){return client[_0x6f81('0x14')](_0x352d1d,_0x1e5a91)['then'](function(_0x29c2dc){logger[_0x6f81('0x15')](_0x6f81('0x16'),_0x5caf5c,_0x6f81('0x17'));logger[_0x6f81('0x18')](_0x6f81('0x19'),_0x5caf5c,_0x6f81('0x17'),JSON[_0x6f81('0x1a')](_0x29c2dc));if(_0x29c2dc[_0x6f81('0x1b')]){if(_0x29c2dc[_0x6f81('0x1b')]['code']===0x1f4){logger[_0x6f81('0x1b')](_0x6f81('0x16'),_0x5caf5c,_0x29c2dc[_0x6f81('0x1b')][_0x6f81('0x1c')]);return _0x3089ef(_0x29c2dc['error']['message']);}logger[_0x6f81('0x1b')](_0x6f81('0x16'),_0x5caf5c,_0x29c2dc[_0x6f81('0x1b')][_0x6f81('0x1c')]);return _0x2a4f89(_0x29c2dc[_0x6f81('0x1b')][_0x6f81('0x1c')]);}else{logger[_0x6f81('0x15')](_0x6f81('0x16'),_0x5caf5c,_0x6f81('0x17'));_0x2a4f89(_0x29c2dc[_0x6f81('0x1d')][_0x6f81('0x1c')]);}})[_0x6f81('0x1e')](function(_0x41783b){logger[_0x6f81('0x1b')](_0x6f81('0x16'),_0x5caf5c,_0x41783b);_0x3089ef(_0x41783b);});});}exports['GetWhatsappQueue']=function(_0x53097c){var _0x34fdc9=this;return new Promise(function(_0xad6807,_0x232187){return db[_0x6f81('0x1f')]['findAll']({'raw':_0x53097c[_0x6f81('0x20')]?_0x53097c[_0x6f81('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x53097c[_0x6f81('0x20')]?_0x53097c['options']['where']||null:null,'attributes':_0x53097c[_0x6f81('0x20')]?_0x53097c['options']['attributes']||null:null,'limit':_0x53097c[_0x6f81('0x20')]?_0x53097c['options'][_0x6f81('0x21')]||null:null,'include':_0x53097c[_0x6f81('0x20')]?_0x53097c['options'][_0x6f81('0x22')]?_[_0x6f81('0x23')](_0x53097c['options']['include'],function(_0x3a17ab){return{'model':db[_0x3a17ab[_0x6f81('0x24')]],'as':_0x3a17ab['as'],'attributes':_0x3a17ab['attributes'],'include':_0x3a17ab['include']?_[_0x6f81('0x23')](_0x3a17ab[_0x6f81('0x22')],function(_0x22f538){return{'model':db[_0x22f538[_0x6f81('0x24')]],'as':_0x22f538['as'],'attributes':_0x22f538[_0x6f81('0x25')],'include':_0x22f538[_0x6f81('0x22')]?_[_0x6f81('0x23')](_0x22f538[_0x6f81('0x22')],function(_0x5c9bd0){return{'model':db[_0x5c9bd0[_0x6f81('0x24')]],'as':_0x5c9bd0['as'],'attributes':_0x5c9bd0[_0x6f81('0x25')]};}):[]};}):[]};}):[]:[]})[_0x6f81('0x26')](function(_0x317745){logger[_0x6f81('0x15')](_0x6f81('0x27'),_0x53097c);logger['debug'](_0x6f81('0x27'),_0x53097c,JSON[_0x6f81('0x1a')](_0x317745));_0xad6807(_0x317745);})[_0x6f81('0x1e')](function(_0xbf034e){logger[_0x6f81('0x1b')]('GetWhatsappQueue',_0xbf034e['message'],_0x53097c);_0x232187(_0x34fdc9[_0x6f81('0x1b')](0x1f4,_0xbf034e[_0x6f81('0x1c')]));});});};exports[_0x6f81('0x28')]=function(_0xf07271){var _0x1343dd=this;return new Promise(function(_0x6b8fc6,_0x26b9d3){return db[_0x6f81('0x1f')][_0x6f81('0x29')]({'raw':_0xf07271[_0x6f81('0x20')]?_0xf07271[_0x6f81('0x20')][_0x6f81('0x2a')]===undefined?!![]:![]:!![],'where':_0xf07271[_0x6f81('0x20')]?_0xf07271[_0x6f81('0x20')][_0x6f81('0x2b')]||null:null,'attributes':_0xf07271[_0x6f81('0x20')]?_0xf07271[_0x6f81('0x20')][_0x6f81('0x25')]||null:null,'include':_0xf07271[_0x6f81('0x20')]?_0xf07271[_0x6f81('0x20')]['include']?_[_0x6f81('0x23')](_0xf07271[_0x6f81('0x20')][_0x6f81('0x22')],function(_0x1a3090){return{'model':db[_0x1a3090[_0x6f81('0x24')]],'as':_0x1a3090['as'],'attributes':_0x1a3090[_0x6f81('0x25')],'include':_0x1a3090[_0x6f81('0x22')]?_[_0x6f81('0x23')](_0x1a3090[_0x6f81('0x22')],function(_0x3bf9eb){return{'model':db[_0x3bf9eb[_0x6f81('0x24')]],'as':_0x3bf9eb['as'],'attributes':_0x3bf9eb[_0x6f81('0x25')],'include':_0x3bf9eb[_0x6f81('0x22')]?_[_0x6f81('0x23')](_0x3bf9eb[_0x6f81('0x22')],function(_0x5bc7dd){return{'model':db[_0x5bc7dd['model']],'as':_0x5bc7dd['as'],'attributes':_0x5bc7dd['attributes']};}):[]};}):[]};}):[]:[]})[_0x6f81('0x26')](function(_0x3250fc){logger[_0x6f81('0x15')]('ShowWhatsappQueue',_0xf07271);logger[_0x6f81('0x18')](_0x6f81('0x28'),_0xf07271,JSON[_0x6f81('0x1a')](_0x3250fc));_0x6b8fc6(_0x3250fc);})['catch'](function(_0x3bf211){logger[_0x6f81('0x1b')]('ShowWhatsappQueue',_0x3bf211[_0x6f81('0x1c')],_0xf07271);_0x26b9d3(_0x1343dd['error'](0x1f4,_0x3bf211[_0x6f81('0x1c')]));});});};
\ No newline at end of file
index b04c0ba..388e0ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fed=['update','register','length','./whatsappQueue.events','remove'];(function(_0x506a66,_0x4fab8a){var _0x10780d=function(_0x45a2b3){while(--_0x45a2b3){_0x506a66['push'](_0x506a66['shift']());}};_0x10780d(++_0x4fab8a);}(_0x0fed,0x8f));var _0xd0fe=function(_0x1cbd39,_0x5d5e12){_0x1cbd39=_0x1cbd39-0x0;var _0x4367ec=_0x0fed[_0x1cbd39];return _0x4367ec;};'use strict';var WhatsappQueueEvents=require(_0xd0fe('0x0'));var events=['save',_0xd0fe('0x1'),_0xd0fe('0x2')];function createListener(_0x4fcdbb,_0x500944){return function(_0x5095e0){_0x500944['emit'](_0x4fcdbb,_0x5095e0);};}function removeListener(_0x1977d0,_0x4f082c){return function(){WhatsappQueueEvents['removeListener'](_0x1977d0,_0x4f082c);};}exports[_0xd0fe('0x3')]=function(_0x327e4d){for(var _0x14646e=0x0,_0x2b03c1=events[_0xd0fe('0x4')];_0x14646e<_0x2b03c1;_0x14646e++){var _0x1d0fab=events[_0x14646e];var _0x267fd2=createListener('whatsappQueue:'+_0x1d0fab,_0x327e4d);WhatsappQueueEvents['on'](_0x1d0fab,_0x267fd2);}};
\ No newline at end of file
+var _0x53b5=['./whatsappQueue.events','save','update','emit','removeListener','register','length','whatsappQueue:'];(function(_0x467601,_0x58342b){var _0x3d4d20=function(_0x20c03d){while(--_0x20c03d){_0x467601['push'](_0x467601['shift']());}};_0x3d4d20(++_0x58342b);}(_0x53b5,0x70));var _0x553b=function(_0x4f22e7,_0x2fad40){_0x4f22e7=_0x4f22e7-0x0;var _0xb3ab3=_0x53b5[_0x4f22e7];return _0xb3ab3;};'use strict';var WhatsappQueueEvents=require(_0x553b('0x0'));var events=[_0x553b('0x1'),'remove',_0x553b('0x2')];function createListener(_0x18be57,_0x4aedca){return function(_0xbdc88){_0x4aedca[_0x553b('0x3')](_0x18be57,_0xbdc88);};}function removeListener(_0x5a14c1,_0x5ef6cc){return function(){WhatsappQueueEvents[_0x553b('0x4')](_0x5a14c1,_0x5ef6cc);};}exports[_0x553b('0x5')]=function(_0x5d90cd){for(var _0x35a264=0x0,_0x3202ee=events[_0x553b('0x6')];_0x35a264<_0x3202ee;_0x35a264++){var _0x3c121f=events[_0x35a264];var _0x3fb2fa=createListener(_0x553b('0x7')+_0x3c121f,_0x5d90cd);WhatsappQueueEvents['on'](_0x3c121f,_0x3fb2fa);}};
\ No newline at end of file
index 8a3cbfc..b9f1519 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x263e=['./whatsappQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','put','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x263e,0x174));var _0xe263=function(_0x3dc089,_0x5ccb0d){_0x3dc089=_0x3dc089-0x0;var _0x34d9d3=_0x263e[_0x3dc089];return _0x34d9d3;};'use strict';var multer=require(_0xe263('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xe263('0x1'));var express=require('express');var router=express[_0xe263('0x2')]();var fs_extra=require(_0xe263('0x3'));var auth=require(_0xe263('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xe263('0x5'));var controller=require(_0xe263('0x6'));router[_0xe263('0x7')]('/',auth['isAuthenticated'](),controller[_0xe263('0x8')]);router[_0xe263('0x7')](_0xe263('0x9'),auth[_0xe263('0xa')](),controller[_0xe263('0xb')]);router[_0xe263('0x7')](_0xe263('0xc'),auth[_0xe263('0xa')](),controller[_0xe263('0xd')]);router[_0xe263('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe263('0xf')](_0xe263('0xc'),auth[_0xe263('0xa')](),controller['update']);router['delete'](_0xe263('0xc'),auth['isAuthenticated'](),controller[_0xe263('0x10')]);module[_0xe263('0x11')]=router;
\ No newline at end of file
+var _0x9e07=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','index','/describe','describe','/:id','isAuthenticated','show','create','put','update','delete','destroy'];(function(_0x4b2cc6,_0x29ef43){var _0x3e0b08=function(_0x3b4131){while(--_0x3b4131){_0x4b2cc6['push'](_0x4b2cc6['shift']());}};_0x3e0b08(++_0x29ef43);}(_0x9e07,0xb1));var _0x79e0=function(_0x4c424d,_0xcf7a78){_0x4c424d=_0x4c424d-0x0;var _0x458683=_0x9e07[_0x4c424d];return _0x458683;};'use strict';var multer=require(_0x79e0('0x0'));var util=require(_0x79e0('0x1'));var path=require(_0x79e0('0x2'));var timeout=require('connect-timeout');var express=require(_0x79e0('0x3'));var router=express[_0x79e0('0x4')]();var fs_extra=require(_0x79e0('0x5'));var auth=require(_0x79e0('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x79e0('0x7'));var controller=require(_0x79e0('0x8'));router[_0x79e0('0x9')]('/',auth['isAuthenticated'](),controller[_0x79e0('0xa')]);router[_0x79e0('0x9')](_0x79e0('0xb'),auth['isAuthenticated'](),controller[_0x79e0('0xc')]);router[_0x79e0('0x9')](_0x79e0('0xd'),auth[_0x79e0('0xe')](),controller[_0x79e0('0xf')]);router['post']('/',auth[_0x79e0('0xe')](),controller[_0x79e0('0x10')]);router[_0x79e0('0x11')](_0x79e0('0xd'),auth[_0x79e0('0xe')](),controller[_0x79e0('0x12')]);router[_0x79e0('0x13')](_0x79e0('0xd'),auth[_0x79e0('0xe')](),controller[_0x79e0('0x14')]);module[_0x79e0('0x15')]=router;
\ No newline at end of file
index 38302bb..18598e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x4a1915,_0x36ce26){var _0x574087=function(_0x53025d){while(--_0x53025d){_0x4a1915['push'](_0x4a1915['shift']());}};_0x574087(++_0x36ce26);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
+var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x258346,_0x27625a){var _0x3cc8cf=function(_0x320e9a){while(--_0x320e9a){_0x258346['push'](_0x258346['shift']());}};_0x3cc8cf(++_0x27625a);}(_0x7a54,0x106));var _0x47a5=function(_0x158ddd,_0x55c307){_0x158ddd=_0x158ddd-0x0;var _0x7596a2=_0x7a54[_0x158ddd];return _0x7596a2;};'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 f6ba430..de47158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['intersection','fields','length','nolimit','order','sort','filter','where','type','VIRTUAL','merge','includeAll','include','WhatsappQueueReport','rows','params','find','create','body','catch','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','json','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','query','keys','filters','model','attributes'];(function(_0x3ebf7,_0x1f7ede){var _0x31ad7f=function(_0x2c9dd0){while(--_0x2c9dd0){_0x3ebf7['push'](_0x3ebf7['shift']());}};_0x31ad7f(++_0x1f7ede);}(_0x878f,0x173));var _0xf878=function(_0x4a0aff,_0xff4d78){_0x4a0aff=_0x4a0aff-0x0;var _0x17e01e=_0x878f[_0x4a0aff];return _0x17e01e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf878('0x0'));var zipdir=require(_0xf878('0x1'));var jsonpatch=require(_0xf878('0x2'));var rp=require(_0xf878('0x3'));var moment=require(_0xf878('0x4'));var BPromise=require(_0xf878('0x5'));var Mustache=require(_0xf878('0x6'));var util=require(_0xf878('0x7'));var path=require(_0xf878('0x8'));var sox=require(_0xf878('0x9'));var csv=require(_0xf878('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf878('0xb'));var squel=require(_0xf878('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf878('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf878('0xd'));var authService=require(_0xf878('0xe'));var qs=require(_0xf878('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf878('0x10'));var logger=require(_0xf878('0x11'))('api');var utils=require(_0xf878('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xf878('0x13'));var db=require(_0xf878('0x14'))['db'];function respondWithStatusCode(_0x339c9c,_0x596fb5){_0x596fb5=_0x596fb5||0xcc;return function(_0x1ce004){if(_0x1ce004){return _0x339c9c[_0xf878('0x15')](_0x596fb5);}return _0x339c9c[_0xf878('0x16')](_0x596fb5)['end']();};}function respondWithResult(_0xe2c2de,_0x3902f7){_0x3902f7=_0x3902f7||0xc8;return function(_0x119e9e){if(_0x119e9e){return _0xe2c2de['status'](_0x3902f7)['json'](_0x119e9e);}};}function respondWithFilteredResult(_0x4c0948,_0x35ff2d){return function(_0x31d888){if(_0x31d888){var _0x6dbeca=typeof _0x35ff2d[_0xf878('0x17')]===_0xf878('0x18')&&typeof _0x35ff2d[_0xf878('0x19')]===_0xf878('0x18');var _0x3c5dee=_0x31d888[_0xf878('0x1a')];var _0x3b2e1b=_0x6dbeca?0x0:_0x35ff2d['offset'];var _0x2b2b54=_0x6dbeca?_0x31d888[_0xf878('0x1a')]:_0x35ff2d[_0xf878('0x17')]+_0x35ff2d[_0xf878('0x19')];var _0x3714f6;if(_0x2b2b54>=_0x3c5dee){_0x2b2b54=_0x3c5dee;_0x3714f6=0xc8;}else{_0x3714f6=0xce;}_0x4c0948[_0xf878('0x16')](_0x3714f6);return _0x4c0948[_0xf878('0x1b')]('Content-Range',_0x3b2e1b+'-'+_0x2b2b54+'/'+_0x3c5dee)[_0xf878('0x1c')](_0x31d888);}return null;};}function patchUpdates(_0x140866){return function(_0x250f85){try{jsonpatch['apply'](_0x250f85,_0x140866,!![]);}catch(_0x432e5d){return BPromise[_0xf878('0x1d')](_0x432e5d);}return _0x250f85[_0xf878('0x1e')]();};}function saveUpdates(_0x392822,_0x22d884){return function(_0x442450){if(_0x442450){return _0x442450[_0xf878('0x1f')](_0x392822)[_0xf878('0x20')](function(_0x212436){return _0x212436;});}return null;};}function removeEntity(_0x1a6506,_0x45e61f){return function(_0x566995){if(_0x566995){return _0x566995[_0xf878('0x21')]()['then'](function(){_0x1a6506[_0xf878('0x16')](0xcc)[_0xf878('0x22')]();});}};}function handleEntityNotFound(_0x35b3b4,_0x280036){return function(_0x20449e){if(!_0x20449e){_0x35b3b4['sendStatus'](0x194);}return _0x20449e;};}function handleError(_0x58c713,_0x59ba7b){_0x59ba7b=_0x59ba7b||0x1f4;return function(_0x242926){logger[_0xf878('0x23')](_0x242926[_0xf878('0x24')]);if(_0x242926['name']){delete _0x242926[_0xf878('0x25')];}_0x58c713[_0xf878('0x16')](_0x59ba7b)[_0xf878('0x26')](_0x242926);};}exports[_0xf878('0x27')]=function(_0x41dd55,_0x5aff46){var _0x502322={},_0x9a127d={},_0x5d9c97={'count':0x0,'rows':[]};var _0x4a0286=_[_0xf878('0x28')](db['WhatsappQueueReport'][_0xf878('0x29')],function(_0x51afaf){return{'name':_0x51afaf[_0xf878('0x2a')],'type':_0x51afaf['type'][_0xf878('0x2b')]};});_0x9a127d['model']=_[_0xf878('0x28')](_0x4a0286,_0xf878('0x25'));_0x9a127d[_0xf878('0x2c')]=_[_0xf878('0x2d')](_0x41dd55[_0xf878('0x2c')]);_0x9a127d[_0xf878('0x2e')]=_['intersection'](_0x9a127d[_0xf878('0x2f')],_0x9a127d[_0xf878('0x2c')]);_0x502322[_0xf878('0x30')]=_[_0xf878('0x31')](_0x9a127d[_0xf878('0x2f')],qs['fields'](_0x41dd55[_0xf878('0x2c')][_0xf878('0x32')]));_0x502322['attributes']=_0x502322[_0xf878('0x30')][_0xf878('0x33')]?_0x502322[_0xf878('0x30')]:_0x9a127d[_0xf878('0x2f')];if(!_0x41dd55[_0xf878('0x2c')]['hasOwnProperty'](_0xf878('0x34'))){_0x502322[_0xf878('0x19')]=qs[_0xf878('0x19')](_0x41dd55[_0xf878('0x2c')]['limit']);_0x502322[_0xf878('0x17')]=qs['offset'](_0x41dd55['query'][_0xf878('0x17')]);}_0x502322[_0xf878('0x35')]=qs[_0xf878('0x36')](_0x41dd55[_0xf878('0x2c')][_0xf878('0x36')]);_0x502322['where']=qs[_0xf878('0x2e')](_['pick'](_0x41dd55[_0xf878('0x2c')],_0x9a127d[_0xf878('0x2e')]),_0x4a0286);if(_0x41dd55['query'][_0xf878('0x37')]){_0x502322[_0xf878('0x38')]=_['merge'](_0x502322[_0xf878('0x38')],{'$or':_[_0xf878('0x28')](_0x4a0286,function(_0x5b4098){if(_0x5b4098[_0xf878('0x39')]!==_0xf878('0x3a')){var _0x34731d={};_0x34731d[_0x5b4098[_0xf878('0x25')]]={'$like':'%'+_0x41dd55[_0xf878('0x2c')][_0xf878('0x37')]+'%'};return _0x34731d;}})});}_0x502322=_[_0xf878('0x3b')]({},_0x502322,_0x41dd55['options']);var _0x1179fb={'where':_0x502322[_0xf878('0x38')]};return db['WhatsappQueueReport'][_0xf878('0x1a')](_0x1179fb)['then'](function(_0x489964){_0x5d9c97[_0xf878('0x1a')]=_0x489964;if(_0x41dd55[_0xf878('0x2c')][_0xf878('0x3c')]){_0x502322[_0xf878('0x3d')]=[{'all':!![]}];}return db[_0xf878('0x3e')]['findAll'](_0x502322);})[_0xf878('0x20')](function(_0x4c4ae4){_0x5d9c97[_0xf878('0x3f')]=_0x4c4ae4;return _0x5d9c97;})[_0xf878('0x20')](respondWithFilteredResult(_0x5aff46,_0x502322))['catch'](handleError(_0x5aff46,null));};exports['show']=function(_0x180594,_0x2a66c1){var _0x13fcd3={'raw':!![],'where':{'id':_0x180594[_0xf878('0x40')]['id']}},_0x2f6ee5={};_0x2f6ee5[_0xf878('0x2f')]=_[_0xf878('0x2d')](db[_0xf878('0x3e')][_0xf878('0x29')]);_0x2f6ee5['query']=_[_0xf878('0x2d')](_0x180594[_0xf878('0x2c')]);_0x2f6ee5[_0xf878('0x2e')]=_[_0xf878('0x31')](_0x2f6ee5[_0xf878('0x2f')],_0x2f6ee5[_0xf878('0x2c')]);_0x13fcd3['attributes']=_[_0xf878('0x31')](_0x2f6ee5[_0xf878('0x2f')],qs[_0xf878('0x32')](_0x180594[_0xf878('0x2c')][_0xf878('0x32')]));_0x13fcd3['attributes']=_0x13fcd3[_0xf878('0x30')][_0xf878('0x33')]?_0x13fcd3[_0xf878('0x30')]:_0x2f6ee5[_0xf878('0x2f')];if(_0x180594['query'][_0xf878('0x3c')]){_0x13fcd3[_0xf878('0x3d')]=[{'all':!![]}];}_0x13fcd3=_[_0xf878('0x3b')]({},_0x13fcd3,_0x180594['options']);return db['WhatsappQueueReport'][_0xf878('0x41')](_0x13fcd3)['then'](handleEntityNotFound(_0x2a66c1,null))['then'](respondWithResult(_0x2a66c1,null))['catch'](handleError(_0x2a66c1,null));};exports[_0xf878('0x42')]=function(_0x49e719,_0x156fdb){return db[_0xf878('0x3e')][_0xf878('0x42')](_0x49e719[_0xf878('0x43')],{})[_0xf878('0x20')](respondWithResult(_0x156fdb,0xc9))[_0xf878('0x44')](handleError(_0x156fdb,null));};exports[_0xf878('0x1f')]=function(_0x526c89,_0xb0bf4c){if(_0x526c89[_0xf878('0x43')]['id']){delete _0x526c89[_0xf878('0x43')]['id'];}return db[_0xf878('0x3e')][_0xf878('0x41')]({'where':{'id':_0x526c89['params']['id']}})['then'](handleEntityNotFound(_0xb0bf4c,null))[_0xf878('0x20')](saveUpdates(_0x526c89[_0xf878('0x43')],null))['then'](respondWithResult(_0xb0bf4c,null))[_0xf878('0x44')](handleError(_0xb0bf4c,null));};exports['destroy']=function(_0x1ce6b9,_0x31adde){return db[_0xf878('0x3e')][_0xf878('0x41')]({'where':{'id':_0x1ce6b9['params']['id']}})[_0xf878('0x20')](handleEntityNotFound(_0x31adde,null))[_0xf878('0x20')](removeEntity(_0x31adde,null))[_0xf878('0x44')](handleError(_0x31adde,null));};exports['describe']=function(_0xce30a5,_0x30df05){return db[_0xf878('0x3e')][_0xf878('0x45')]()['then'](respondWithResult(_0x30df05,null))[_0xf878('0x44')](handleError(_0x30df05,null));};
\ No newline at end of file
+var _0x0fd9=['includeAll','include','rows','catch','show','params','create','body','find','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','WhatsappQueueReport','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options'];(function(_0x4e054a,_0x39ef65){var _0x1bf7c1=function(_0x30f0d9){while(--_0x30f0d9){_0x4e054a['push'](_0x4e054a['shift']());}};_0x1bf7c1(++_0x39ef65);}(_0x0fd9,0xa3));var _0x90fd=function(_0x2b4448,_0x5bcc69){_0x2b4448=_0x2b4448-0x0;var _0xb4b465=_0x0fd9[_0x2b4448];return _0xb4b465;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x90fd('0x0'));var zipdir=require(_0x90fd('0x1'));var jsonpatch=require(_0x90fd('0x2'));var rp=require(_0x90fd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x90fd('0x4'));var util=require(_0x90fd('0x5'));var path=require(_0x90fd('0x6'));var sox=require(_0x90fd('0x7'));var csv=require(_0x90fd('0x8'));var ejs=require(_0x90fd('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x90fd('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x90fd('0xb'));var toCsv=require(_0x90fd('0x8'));var querystring=require('querystring');var Papa=require(_0x90fd('0xc'));var Redis=require(_0x90fd('0xd'));var authService=require(_0x90fd('0xe'));var qs=require(_0x90fd('0xf'));var as=require(_0x90fd('0x10'));var hardwareService=require(_0x90fd('0x11'));var logger=require(_0x90fd('0x12'))(_0x90fd('0x13'));var utils=require(_0x90fd('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x90fd('0x15'));var db=require(_0x90fd('0x16'))['db'];function respondWithStatusCode(_0x4e8b99,_0x1439ed){_0x1439ed=_0x1439ed||0xcc;return function(_0x37a0f8){if(_0x37a0f8){return _0x4e8b99[_0x90fd('0x17')](_0x1439ed);}return _0x4e8b99['status'](_0x1439ed)[_0x90fd('0x18')]();};}function respondWithResult(_0x48e701,_0x1cae40){_0x1cae40=_0x1cae40||0xc8;return function(_0xb402d9){if(_0xb402d9){return _0x48e701[_0x90fd('0x19')](_0x1cae40)[_0x90fd('0x1a')](_0xb402d9);}};}function respondWithFilteredResult(_0x3c5da8,_0x442a19){return function(_0x296a64){if(_0x296a64){var _0x4eb953=typeof _0x442a19['offset']===_0x90fd('0x1b')&&typeof _0x442a19[_0x90fd('0x1c')]==='undefined';var _0x130489=_0x296a64[_0x90fd('0x1d')];var _0x1fcc87=_0x4eb953?0x0:_0x442a19['offset'];var _0x3f9c76=_0x4eb953?_0x296a64[_0x90fd('0x1d')]:_0x442a19[_0x90fd('0x1e')]+_0x442a19[_0x90fd('0x1c')];var _0x251957;if(_0x3f9c76>=_0x130489){_0x3f9c76=_0x130489;_0x251957=0xc8;}else{_0x251957=0xce;}_0x3c5da8[_0x90fd('0x19')](_0x251957);return _0x3c5da8[_0x90fd('0x1f')](_0x90fd('0x20'),_0x1fcc87+'-'+_0x3f9c76+'/'+_0x130489)[_0x90fd('0x1a')](_0x296a64);}return null;};}function patchUpdates(_0x90197e){return function(_0x19e79b){try{jsonpatch[_0x90fd('0x21')](_0x19e79b,_0x90197e,!![]);}catch(_0x1fb31a){return BPromise[_0x90fd('0x22')](_0x1fb31a);}return _0x19e79b[_0x90fd('0x23')]();};}function saveUpdates(_0x493c26,_0x35ce4e){return function(_0xc4e4e2){if(_0xc4e4e2){return _0xc4e4e2[_0x90fd('0x24')](_0x493c26)[_0x90fd('0x25')](function(_0x411a6a){return _0x411a6a;});}return null;};}function removeEntity(_0x3ad6c6,_0x30f67e){return function(_0x300262){if(_0x300262){return _0x300262['destroy']()[_0x90fd('0x25')](function(){_0x3ad6c6['status'](0xcc)[_0x90fd('0x18')]();});}};}function handleEntityNotFound(_0x18d5b3,_0x2ffea2){return function(_0x31667c){if(!_0x31667c){_0x18d5b3[_0x90fd('0x17')](0x194);}return _0x31667c;};}function handleError(_0x4c962f,_0x35c38d){_0x35c38d=_0x35c38d||0x1f4;return function(_0xe333f0){logger[_0x90fd('0x26')](_0xe333f0[_0x90fd('0x27')]);if(_0xe333f0[_0x90fd('0x28')]){delete _0xe333f0[_0x90fd('0x28')];}_0x4c962f['status'](_0x35c38d)['send'](_0xe333f0);};}exports[_0x90fd('0x29')]=function(_0x170cfb,_0x2924e9){var _0x404971={},_0x397aaf={},_0x59b3e8={'count':0x0,'rows':[]};var _0x4f69e7=_[_0x90fd('0x2a')](db[_0x90fd('0x2b')][_0x90fd('0x2c')],function(_0x3a0102){return{'name':_0x3a0102['fieldName'],'type':_0x3a0102['type'][_0x90fd('0x2d')]};});_0x397aaf[_0x90fd('0x2e')]=_[_0x90fd('0x2a')](_0x4f69e7,_0x90fd('0x28'));_0x397aaf['query']=_[_0x90fd('0x2f')](_0x170cfb[_0x90fd('0x30')]);_0x397aaf[_0x90fd('0x31')]=_[_0x90fd('0x32')](_0x397aaf[_0x90fd('0x2e')],_0x397aaf[_0x90fd('0x30')]);_0x404971[_0x90fd('0x33')]=_[_0x90fd('0x32')](_0x397aaf[_0x90fd('0x2e')],qs[_0x90fd('0x34')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x34')]));_0x404971[_0x90fd('0x33')]=_0x404971[_0x90fd('0x33')][_0x90fd('0x35')]?_0x404971[_0x90fd('0x33')]:_0x397aaf['model'];if(!_0x170cfb[_0x90fd('0x30')][_0x90fd('0x36')](_0x90fd('0x37'))){_0x404971[_0x90fd('0x1c')]=qs[_0x90fd('0x1c')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x1c')]);_0x404971[_0x90fd('0x1e')]=qs[_0x90fd('0x1e')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x1e')]);}_0x404971[_0x90fd('0x38')]=qs[_0x90fd('0x39')](_0x170cfb['query'][_0x90fd('0x39')]);_0x404971[_0x90fd('0x3a')]=qs[_0x90fd('0x31')](_[_0x90fd('0x3b')](_0x170cfb['query'],_0x397aaf[_0x90fd('0x31')]),_0x4f69e7);if(_0x170cfb[_0x90fd('0x30')][_0x90fd('0x3c')]){_0x404971['where']=_['merge'](_0x404971[_0x90fd('0x3a')],{'$or':_[_0x90fd('0x2a')](_0x4f69e7,function(_0x377319){if(_0x377319[_0x90fd('0x3d')]!==_0x90fd('0x3e')){var _0x254200={};_0x254200[_0x377319[_0x90fd('0x28')]]={'$like':'%'+_0x170cfb[_0x90fd('0x30')][_0x90fd('0x3c')]+'%'};return _0x254200;}})});}_0x404971=_[_0x90fd('0x3f')]({},_0x404971,_0x170cfb[_0x90fd('0x40')]);var _0x43c84c={'where':_0x404971[_0x90fd('0x3a')]};return db[_0x90fd('0x2b')][_0x90fd('0x1d')](_0x43c84c)[_0x90fd('0x25')](function(_0x2717ca){_0x59b3e8[_0x90fd('0x1d')]=_0x2717ca;if(_0x170cfb['query'][_0x90fd('0x41')]){_0x404971[_0x90fd('0x42')]=[{'all':!![]}];}return db[_0x90fd('0x2b')]['findAll'](_0x404971);})['then'](function(_0x47b8c8){_0x59b3e8[_0x90fd('0x43')]=_0x47b8c8;return _0x59b3e8;})[_0x90fd('0x25')](respondWithFilteredResult(_0x2924e9,_0x404971))[_0x90fd('0x44')](handleError(_0x2924e9,null));};exports[_0x90fd('0x45')]=function(_0x1361d9,_0x311c7e){var _0x363365={'raw':!![],'where':{'id':_0x1361d9[_0x90fd('0x46')]['id']}},_0x733d4d={};_0x733d4d[_0x90fd('0x2e')]=_[_0x90fd('0x2f')](db[_0x90fd('0x2b')][_0x90fd('0x2c')]);_0x733d4d[_0x90fd('0x30')]=_[_0x90fd('0x2f')](_0x1361d9['query']);_0x733d4d['filters']=_[_0x90fd('0x32')](_0x733d4d[_0x90fd('0x2e')],_0x733d4d[_0x90fd('0x30')]);_0x363365['attributes']=_['intersection'](_0x733d4d[_0x90fd('0x2e')],qs[_0x90fd('0x34')](_0x1361d9['query']['fields']));_0x363365[_0x90fd('0x33')]=_0x363365[_0x90fd('0x33')]['length']?_0x363365['attributes']:_0x733d4d[_0x90fd('0x2e')];if(_0x1361d9[_0x90fd('0x30')][_0x90fd('0x41')]){_0x363365['include']=[{'all':!![]}];}_0x363365=_[_0x90fd('0x3f')]({},_0x363365,_0x1361d9[_0x90fd('0x40')]);return db['WhatsappQueueReport']['find'](_0x363365)['then'](handleEntityNotFound(_0x311c7e,null))[_0x90fd('0x25')](respondWithResult(_0x311c7e,null))[_0x90fd('0x44')](handleError(_0x311c7e,null));};exports['create']=function(_0x2d42b3,_0x2b73f7){return db[_0x90fd('0x2b')][_0x90fd('0x47')](_0x2d42b3[_0x90fd('0x48')],{})['then'](respondWithResult(_0x2b73f7,0xc9))['catch'](handleError(_0x2b73f7,null));};exports[_0x90fd('0x24')]=function(_0x326e4d,_0x125874){if(_0x326e4d[_0x90fd('0x48')]['id']){delete _0x326e4d[_0x90fd('0x48')]['id'];}return db[_0x90fd('0x2b')][_0x90fd('0x49')]({'where':{'id':_0x326e4d[_0x90fd('0x46')]['id']}})[_0x90fd('0x25')](handleEntityNotFound(_0x125874,null))[_0x90fd('0x25')](saveUpdates(_0x326e4d['body'],null))[_0x90fd('0x25')](respondWithResult(_0x125874,null))[_0x90fd('0x44')](handleError(_0x125874,null));};exports[_0x90fd('0x4a')]=function(_0x38021b,_0x4b47bc){return db['WhatsappQueueReport'][_0x90fd('0x49')]({'where':{'id':_0x38021b['params']['id']}})['then'](handleEntityNotFound(_0x4b47bc,null))[_0x90fd('0x25')](removeEntity(_0x4b47bc,null))[_0x90fd('0x44')](handleError(_0x4b47bc,null));};exports[_0x90fd('0x4b')]=function(_0xb8a2af,_0x13c428){return db[_0x90fd('0x2b')][_0x90fd('0x4b')]()['then'](respondWithResult(_0x13c428,null))['catch'](handleError(_0x13c428,null));};
\ No newline at end of file
index e00ddcb..974ca3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99ee=['../../config/environment','./whatsappQueueReport.attributes','define','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x51f80d,_0x1a2606){var _0x40919f=function(_0x54a2b2){while(--_0x54a2b2){_0x51f80d['push'](_0x51f80d['shift']());}};_0x40919f(++_0x1a2606);}(_0x99ee,0x13c));var _0xe99e=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x99ee[_0x40220a];return _0x3903cc;};'use strict';var _=require(_0xe99e('0x0'));var util=require(_0xe99e('0x1'));var logger=require(_0xe99e('0x2'))('api');var moment=require(_0xe99e('0x3'));var BPromise=require(_0xe99e('0x4'));var rp=require(_0xe99e('0x5'));var fs=require('fs');var path=require(_0xe99e('0x6'));var rimraf=require(_0xe99e('0x7'));var config=require(_0xe99e('0x8'));var attributes=require(_0xe99e('0x9'));module['exports']=function(_0x69eb98,_0x3df87b){return _0x69eb98[_0xe99e('0xa')]('WhatsappQueueReport',attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0xe99e('0xb'),'fields':[_0xe99e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc674=['path','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','api','bluebird'];(function(_0x329e45,_0x2a09db){var _0x25c632=function(_0x257b65){while(--_0x257b65){_0x329e45['push'](_0x329e45['shift']());}};_0x25c632(++_0x2a09db);}(_0xc674,0x174));var _0x4c67=function(_0x2ca616,_0x384ec8){_0x2ca616=_0x2ca616-0x0;var _0x53155f=_0xc674[_0x2ca616];return _0x53155f;};'use strict';var _=require(_0x4c67('0x0'));var util=require(_0x4c67('0x1'));var logger=require(_0x4c67('0x2'))(_0x4c67('0x3'));var moment=require('moment');var BPromise=require(_0x4c67('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4c67('0x5'));var rimraf=require('rimraf');var config=require(_0x4c67('0x6'));var attributes=require(_0x4c67('0x7'));module[_0x4c67('0x8')]=function(_0x20938e,_0x491ac0){return _0x20938e[_0x4c67('0x9')](_0x4c67('0xa'),attributes,{'tableName':_0x4c67('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x4c67('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 749f59f..681b96d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd79=['WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','body','options','raw','attributes','limit','UpdateWhatsappQueueReport','lodash','util','moment','ioredis','../../config/logger','rpc','jayson/promise','http','request','then','info'];(function(_0x2a880e,_0x44beb7){var _0x45e0ce=function(_0x10cbc2){while(--_0x10cbc2){_0x2a880e['push'](_0x2a880e['shift']());}};_0x45e0ce(++_0x44beb7);}(_0xbd79,0x1ed));var _0x9bd7=function(_0x10e3fd,_0x16d0f9){_0x10e3fd=_0x10e3fd-0x0;var _0x25ecd2=_0xbd79[_0x10e3fd];return _0x25ecd2;};'use strict';var _=require(_0x9bd7('0x0'));var util=require(_0x9bd7('0x1'));var moment=require(_0x9bd7('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9bd7('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9bd7('0x4'))(_0x9bd7('0x5'));var config=require('../../config/environment');var jayson=require(_0x9bd7('0x6'));var client=jayson['client'][_0x9bd7('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xe81474,_0x32ea60,_0x21945f){return new BPromise(function(_0x15e7f6,_0xbbfdc3){return client[_0x9bd7('0x8')](_0xe81474,_0x21945f)[_0x9bd7('0x9')](function(_0xd10095){logger[_0x9bd7('0xa')](_0x9bd7('0xb'),_0x32ea60,_0x9bd7('0xc'));logger[_0x9bd7('0xd')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x32ea60,_0x9bd7('0xc'),JSON[_0x9bd7('0xe')](_0xd10095));if(_0xd10095[_0x9bd7('0xf')]){if(_0xd10095['error'][_0x9bd7('0x10')]===0x1f4){logger[_0x9bd7('0xf')](_0x9bd7('0xb'),_0x32ea60,_0xd10095['error'][_0x9bd7('0x11')]);return _0xbbfdc3(_0xd10095[_0x9bd7('0xf')][_0x9bd7('0x11')]);}logger[_0x9bd7('0xf')]('WhatsappQueueReport,\x20%s,\x20%s',_0x32ea60,_0xd10095[_0x9bd7('0xf')][_0x9bd7('0x11')]);return _0x15e7f6(_0xd10095[_0x9bd7('0xf')][_0x9bd7('0x11')]);}else{logger[_0x9bd7('0xa')](_0x9bd7('0xb'),_0x32ea60,_0x9bd7('0xc'));_0x15e7f6(_0xd10095[_0x9bd7('0x12')][_0x9bd7('0x11')]);}})[_0x9bd7('0x13')](function(_0x3e737d){logger[_0x9bd7('0xf')](_0x9bd7('0xb'),_0x32ea60,_0x3e737d);_0xbbfdc3(_0x3e737d);});});}exports[_0x9bd7('0x14')]=function(_0x5c9351){var _0x11eae8=this;return new Promise(function(_0x2cd7cb,_0x19fc7e){return db[_0x9bd7('0x15')]['create'](_0x5c9351[_0x9bd7('0x16')],{'raw':_0x5c9351[_0x9bd7('0x17')]?_0x5c9351[_0x9bd7('0x17')][_0x9bd7('0x18')]===undefined?!![]:![]:!![]})[_0x9bd7('0x9')](function(_0x15647b){logger[_0x9bd7('0xa')](_0x9bd7('0x14'),_0x5c9351);logger['debug'](_0x9bd7('0x14'),_0x5c9351,JSON[_0x9bd7('0xe')](_0x15647b));_0x2cd7cb(_0x15647b);})['catch'](function(_0x6a5c97){logger[_0x9bd7('0xf')](_0x9bd7('0x14'),_0x6a5c97['message'],_0x5c9351);_0x19fc7e(_0x11eae8['error'](0x1f4,_0x6a5c97['message']));});});};exports['UpdateWhatsappQueueReport']=function(_0x30eac9){var _0x26c6d2=this;return new Promise(function(_0x475130,_0x439eab){return db[_0x9bd7('0x15')]['update'](_0x30eac9[_0x9bd7('0x16')],{'raw':_0x30eac9[_0x9bd7('0x17')]?_0x30eac9[_0x9bd7('0x17')][_0x9bd7('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x30eac9[_0x9bd7('0x17')]?_0x30eac9[_0x9bd7('0x17')]['where']||null:null,'attributes':_0x30eac9[_0x9bd7('0x17')]?_0x30eac9[_0x9bd7('0x17')][_0x9bd7('0x19')]||null:null,'limit':_0x30eac9[_0x9bd7('0x17')]?_0x30eac9['options'][_0x9bd7('0x1a')]||null:null})[_0x9bd7('0x9')](function(_0x1a6a50){logger[_0x9bd7('0xa')]('UpdateWhatsappQueueReport',_0x30eac9);logger[_0x9bd7('0xd')](_0x9bd7('0x1b'),_0x30eac9,JSON['stringify'](_0x1a6a50));_0x475130(_0x1a6a50);})[_0x9bd7('0x13')](function(_0x53548e){logger[_0x9bd7('0xf')](_0x9bd7('0x1b'),_0x53548e[_0x9bd7('0x11')],_0x30eac9);_0x439eab(_0x26c6d2[_0x9bd7('0xf')](0x1f4,_0x53548e[_0x9bd7('0x11')]));});});};
\ No newline at end of file
+var _0x3d7f=['ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','body','options','raw','update','attributes','limit','UpdateWhatsappQueueReport','lodash','moment','randomstring'];(function(_0x4ed17b,_0x2b1745){var _0x24b248=function(_0x136ab1){while(--_0x136ab1){_0x4ed17b['push'](_0x4ed17b['shift']());}};_0x24b248(++_0x2b1745);}(_0x3d7f,0x1a1));var _0xf3d7=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0x3d7f[_0xea8947];return _0x2455e9;};'use strict';var _=require(_0xf3d7('0x0'));var util=require('util');var moment=require(_0xf3d7('0x1'));var BPromise=require('bluebird');var rs=require(_0xf3d7('0x2'));var fs=require('fs');var Redis=require(_0xf3d7('0x3'));var db=require(_0xf3d7('0x4'))['db'];var utils=require(_0xf3d7('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xf3d7('0x6'));var jayson=require(_0xf3d7('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3fe200,_0x17d875,_0x4fffe9){return new BPromise(function(_0x50fce6,_0x19c27d){return client[_0xf3d7('0x8')](_0x3fe200,_0x4fffe9)[_0xf3d7('0x9')](function(_0x2334e2){logger[_0xf3d7('0xa')](_0xf3d7('0xb'),_0x17d875,_0xf3d7('0xc'));logger[_0xf3d7('0xd')](_0xf3d7('0xe'),_0x17d875,_0xf3d7('0xc'),JSON[_0xf3d7('0xf')](_0x2334e2));if(_0x2334e2['error']){if(_0x2334e2['error'][_0xf3d7('0x10')]===0x1f4){logger[_0xf3d7('0x11')]('WhatsappQueueReport,\x20%s,\x20%s',_0x17d875,_0x2334e2[_0xf3d7('0x11')][_0xf3d7('0x12')]);return _0x19c27d(_0x2334e2[_0xf3d7('0x11')]['message']);}logger[_0xf3d7('0x11')](_0xf3d7('0xb'),_0x17d875,_0x2334e2[_0xf3d7('0x11')][_0xf3d7('0x12')]);return _0x50fce6(_0x2334e2[_0xf3d7('0x11')][_0xf3d7('0x12')]);}else{logger['info'](_0xf3d7('0xb'),_0x17d875,_0xf3d7('0xc'));_0x50fce6(_0x2334e2[_0xf3d7('0x13')][_0xf3d7('0x12')]);}})[_0xf3d7('0x14')](function(_0x2bfef5){logger[_0xf3d7('0x11')]('WhatsappQueueReport,\x20%s,\x20%s',_0x17d875,_0x2bfef5);_0x19c27d(_0x2bfef5);});});}exports[_0xf3d7('0x15')]=function(_0xaf4f4c){var _0x2b4d32=this;return new Promise(function(_0x189eed,_0xd3c306){return db[_0xf3d7('0x16')]['create'](_0xaf4f4c[_0xf3d7('0x17')],{'raw':_0xaf4f4c[_0xf3d7('0x18')]?_0xaf4f4c[_0xf3d7('0x18')][_0xf3d7('0x19')]===undefined?!![]:![]:!![]})[_0xf3d7('0x9')](function(_0x43df6a){logger[_0xf3d7('0xa')](_0xf3d7('0x15'),_0xaf4f4c);logger[_0xf3d7('0xd')](_0xf3d7('0x15'),_0xaf4f4c,JSON[_0xf3d7('0xf')](_0x43df6a));_0x189eed(_0x43df6a);})['catch'](function(_0x325ca5){logger[_0xf3d7('0x11')](_0xf3d7('0x15'),_0x325ca5[_0xf3d7('0x12')],_0xaf4f4c);_0xd3c306(_0x2b4d32[_0xf3d7('0x11')](0x1f4,_0x325ca5[_0xf3d7('0x12')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x3943f7){var _0x6043a4=this;return new Promise(function(_0x9a3b5,_0xbe9345){return db[_0xf3d7('0x16')][_0xf3d7('0x1a')](_0x3943f7[_0xf3d7('0x17')],{'raw':_0x3943f7['options']?_0x3943f7[_0xf3d7('0x18')][_0xf3d7('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3943f7[_0xf3d7('0x18')]?_0x3943f7['options']['where']||null:null,'attributes':_0x3943f7[_0xf3d7('0x18')]?_0x3943f7['options'][_0xf3d7('0x1b')]||null:null,'limit':_0x3943f7['options']?_0x3943f7[_0xf3d7('0x18')][_0xf3d7('0x1c')]||null:null})['then'](function(_0x1ee67e){logger[_0xf3d7('0xa')](_0xf3d7('0x1d'),_0x3943f7);logger[_0xf3d7('0xd')](_0xf3d7('0x1d'),_0x3943f7,JSON[_0xf3d7('0xf')](_0x1ee67e));_0x9a3b5(_0x1ee67e);})[_0xf3d7('0x14')](function(_0x380e33){logger[_0xf3d7('0x11')](_0xf3d7('0x1d'),_0x380e33[_0xf3d7('0x12')],_0x3943f7);_0xbe9345(_0x6043a4[_0xf3d7('0x11')](0x1f4,_0x380e33[_0xf3d7('0x12')]));});});};
\ No newline at end of file
index 69647d7..a2eeb59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6091=['get','isAuthenticated','index','/describe','describe','/:id','show','post','create','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6091,0x1d8));var _0x1609=function(_0x35a274,_0x98b399){_0x35a274=_0x35a274-0x0;var _0x40d905=_0x6091[_0x35a274];return _0x40d905;};'use strict';var multer=require(_0x1609('0x0'));var util=require(_0x1609('0x1'));var path=require(_0x1609('0x2'));var timeout=require(_0x1609('0x3'));var express=require(_0x1609('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1609('0x5'));var config=require(_0x1609('0x6'));var controller=require(_0x1609('0x7'));router[_0x1609('0x8')]('/',auth[_0x1609('0x9')](),controller[_0x1609('0xa')]);router['get'](_0x1609('0xb'),auth[_0x1609('0x9')](),controller[_0x1609('0xc')]);router[_0x1609('0x8')](_0x1609('0xd'),auth[_0x1609('0x9')](),controller[_0x1609('0xe')]);router[_0x1609('0xf')]('/',auth[_0x1609('0x9')](),controller[_0x1609('0x10')]);router['put'](_0x1609('0xd'),auth[_0x1609('0x9')](),controller['update']);router[_0x1609('0x11')](_0x1609('0xd'),auth[_0x1609('0x9')](),controller[_0x1609('0x12')]);module[_0x1609('0x13')]=router;
\ No newline at end of file
+var _0x76f5=['connect-timeout','express','fs-extra','../../config/environment','get','index','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','path'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x76f5,0x1d2));var _0x576f=function(_0x894b5,_0x1759d0){_0x894b5=_0x894b5-0x0;var _0x230767=_0x76f5[_0x894b5];return _0x230767;};'use strict';var multer=require(_0x576f('0x0'));var util=require('util');var path=require(_0x576f('0x1'));var timeout=require(_0x576f('0x2'));var express=require(_0x576f('0x3'));var router=express['Router']();var fs_extra=require(_0x576f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x576f('0x5'));var controller=require('./whatsappTransferReport.controller');router[_0x576f('0x6')]('/',auth['isAuthenticated'](),controller[_0x576f('0x7')]);router['get']('/describe',auth[_0x576f('0x8')](),controller['describe']);router['get'](_0x576f('0x9'),auth[_0x576f('0x8')](),controller[_0x576f('0xa')]);router[_0x576f('0xb')]('/',auth[_0x576f('0x8')](),controller[_0x576f('0xc')]);router[_0x576f('0xd')](_0x576f('0x9'),auth[_0x576f('0x8')](),controller[_0x576f('0xe')]);router[_0x576f('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x576f('0x10')]);module[_0x576f('0x11')]=router;
\ No newline at end of file
index 3a00012..781bf97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedf1=['account','agent','queue','sequelize','exports'];(function(_0xa188e5,_0x4aa91e){var _0x36a0b3=function(_0x4247ba){while(--_0x4247ba){_0xa188e5['push'](_0xa188e5['shift']());}};_0x36a0b3(++_0x4aa91e);}(_0xedf1,0xb2));var _0x1edf=function(_0x3b2282,_0x354151){_0x3b2282=_0x3b2282-0x0;var _0x4f1388=_0xedf1[_0x3b2282];return _0x4f1388;};'use strict';var Sequelize=require(_0x1edf('0x0'));module[_0x1edf('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x1edf('0x2'),_0x1edf('0x3'),_0x1edf('0x4')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x4cdf=['exports','STRING','ENUM','account','agent','DATE','sequelize'];(function(_0x25eee5,_0x397933){var _0x49a41f=function(_0x135a66){while(--_0x135a66){_0x25eee5['push'](_0x25eee5['shift']());}};_0x49a41f(++_0x397933);}(_0x4cdf,0x180));var _0xf4cd=function(_0x440baf,_0x277c64){_0x440baf=_0x440baf-0x0;var _0x30aad4=_0x4cdf[_0x440baf];return _0x30aad4;};'use strict';var Sequelize=require(_0xf4cd('0x0'));module[_0xf4cd('0x1')]={'uniqueid':{'type':Sequelize[_0xf4cd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xf4cd('0x3')](_0xf4cd('0x4'),_0xf4cd('0x5'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xf4cd('0x6')]}};
\ No newline at end of file
index 3e74f0e..7a6d90a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeef8=['update','then','error','stack','index','map','WhatsappTransferReport','rawAttributes','fieldName','key','model','name','keys','filters','intersection','attributes','fields','query','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','include','rows','catch','show','params','length','body','destroy','find','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xeef8,0x197));var _0x8eef=function(_0x4e3e9a,_0x37f9fd){_0x4e3e9a=_0x4e3e9a-0x0;var _0x980496=_0xeef8[_0x4e3e9a];return _0x980496;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8eef('0x0'));var zipdir=require(_0x8eef('0x1'));var jsonpatch=require(_0x8eef('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8eef('0x3'));var util=require(_0x8eef('0x4'));var path=require(_0x8eef('0x5'));var sox=require(_0x8eef('0x6'));var csv=require(_0x8eef('0x7'));var ejs=require(_0x8eef('0x8'));var fs=require('fs');var fs_extra=require(_0x8eef('0x9'));var _=require(_0x8eef('0xa'));var squel=require(_0x8eef('0xb'));var crypto=require(_0x8eef('0xc'));var jsforce=require(_0x8eef('0xd'));var deskjs=require(_0x8eef('0xe'));var toCsv=require(_0x8eef('0x7'));var querystring=require(_0x8eef('0xf'));var Papa=require(_0x8eef('0x10'));var Redis=require(_0x8eef('0x11'));var authService=require(_0x8eef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8eef('0x13'));var logger=require(_0x8eef('0x14'))('api');var utils=require(_0x8eef('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x8eef('0x16'));var db=require(_0x8eef('0x17'))['db'];function respondWithStatusCode(_0x523e87,_0x55a0a3){_0x55a0a3=_0x55a0a3||0xcc;return function(_0x28a4c9){if(_0x28a4c9){return _0x523e87[_0x8eef('0x18')](_0x55a0a3);}return _0x523e87[_0x8eef('0x19')](_0x55a0a3)[_0x8eef('0x1a')]();};}function respondWithResult(_0x898bd,_0x4f27f9){_0x4f27f9=_0x4f27f9||0xc8;return function(_0x435194){if(_0x435194){return _0x898bd[_0x8eef('0x19')](_0x4f27f9)[_0x8eef('0x1b')](_0x435194);}};}function respondWithFilteredResult(_0x3b7e02,_0x5d7bbb){return function(_0x1846c){if(_0x1846c){var _0x51e789=typeof _0x5d7bbb[_0x8eef('0x1c')]===_0x8eef('0x1d')&&typeof _0x5d7bbb['limit']===_0x8eef('0x1d');var _0x489bdb=_0x1846c['count'];var _0x5d9188=_0x51e789?0x0:_0x5d7bbb[_0x8eef('0x1c')];var _0x330e5f=_0x51e789?_0x1846c[_0x8eef('0x1e')]:_0x5d7bbb[_0x8eef('0x1c')]+_0x5d7bbb[_0x8eef('0x1f')];var _0x48537a;if(_0x330e5f>=_0x489bdb){_0x330e5f=_0x489bdb;_0x48537a=0xc8;}else{_0x48537a=0xce;}_0x3b7e02[_0x8eef('0x19')](_0x48537a);return _0x3b7e02[_0x8eef('0x20')](_0x8eef('0x21'),_0x5d9188+'-'+_0x330e5f+'/'+_0x489bdb)['json'](_0x1846c);}return null;};}function patchUpdates(_0x14a043){return function(_0x3eca18){try{jsonpatch[_0x8eef('0x22')](_0x3eca18,_0x14a043,!![]);}catch(_0x10ee5d){return BPromise[_0x8eef('0x23')](_0x10ee5d);}return _0x3eca18[_0x8eef('0x24')]();};}function saveUpdates(_0x1ef739,_0x2d31ba){return function(_0x534f9c){if(_0x534f9c){return _0x534f9c[_0x8eef('0x25')](_0x1ef739)['then'](function(_0x4cc9bc){return _0x4cc9bc;});}return null;};}function removeEntity(_0xf3fd6a,_0x4a0f4f){return function(_0x1dca68){if(_0x1dca68){return _0x1dca68['destroy']()[_0x8eef('0x26')](function(){_0xf3fd6a[_0x8eef('0x19')](0xcc)[_0x8eef('0x1a')]();});}};}function handleEntityNotFound(_0x4dd541,_0x4a9c7f){return function(_0x347d23){if(!_0x347d23){_0x4dd541[_0x8eef('0x18')](0x194);}return _0x347d23;};}function handleError(_0x493d28,_0x46be8e){_0x46be8e=_0x46be8e||0x1f4;return function(_0x31b2a5){logger[_0x8eef('0x27')](_0x31b2a5[_0x8eef('0x28')]);if(_0x31b2a5['name']){delete _0x31b2a5['name'];}_0x493d28['status'](_0x46be8e)['send'](_0x31b2a5);};}exports[_0x8eef('0x29')]=function(_0x2aa7e1,_0x3b323d){var _0x14d283={},_0x5daeec={},_0x4b5efa={'count':0x0,'rows':[]};var _0x401e73=_[_0x8eef('0x2a')](db[_0x8eef('0x2b')][_0x8eef('0x2c')],function(_0x19fd38){return{'name':_0x19fd38[_0x8eef('0x2d')],'type':_0x19fd38['type'][_0x8eef('0x2e')]};});_0x5daeec[_0x8eef('0x2f')]=_[_0x8eef('0x2a')](_0x401e73,_0x8eef('0x30'));_0x5daeec['query']=_[_0x8eef('0x31')](_0x2aa7e1['query']);_0x5daeec[_0x8eef('0x32')]=_[_0x8eef('0x33')](_0x5daeec[_0x8eef('0x2f')],_0x5daeec['query']);_0x14d283[_0x8eef('0x34')]=_[_0x8eef('0x33')](_0x5daeec[_0x8eef('0x2f')],qs[_0x8eef('0x35')](_0x2aa7e1[_0x8eef('0x36')]['fields']));_0x14d283[_0x8eef('0x34')]=_0x14d283['attributes']['length']?_0x14d283['attributes']:_0x5daeec[_0x8eef('0x2f')];if(!_0x2aa7e1[_0x8eef('0x36')][_0x8eef('0x37')](_0x8eef('0x38'))){_0x14d283[_0x8eef('0x1f')]=qs[_0x8eef('0x1f')](_0x2aa7e1['query'][_0x8eef('0x1f')]);_0x14d283[_0x8eef('0x1c')]=qs[_0x8eef('0x1c')](_0x2aa7e1[_0x8eef('0x36')]['offset']);}_0x14d283['order']=qs[_0x8eef('0x39')](_0x2aa7e1[_0x8eef('0x36')][_0x8eef('0x39')]);_0x14d283[_0x8eef('0x3a')]=qs[_0x8eef('0x32')](_[_0x8eef('0x3b')](_0x2aa7e1[_0x8eef('0x36')],_0x5daeec[_0x8eef('0x32')]),_0x401e73);if(_0x2aa7e1[_0x8eef('0x36')][_0x8eef('0x3c')]){_0x14d283['where']=_[_0x8eef('0x3d')](_0x14d283[_0x8eef('0x3a')],{'$or':_['map'](_0x401e73,function(_0x227e89){if(_0x227e89[_0x8eef('0x3e')]!==_0x8eef('0x3f')){var _0x53497d={};_0x53497d[_0x227e89[_0x8eef('0x30')]]={'$like':'%'+_0x2aa7e1[_0x8eef('0x36')]['filter']+'%'};return _0x53497d;}})});}_0x14d283=_[_0x8eef('0x3d')]({},_0x14d283,_0x2aa7e1[_0x8eef('0x40')]);var _0x47758d={'where':_0x14d283[_0x8eef('0x3a')]};return db[_0x8eef('0x2b')]['count'](_0x47758d)['then'](function(_0x511ad0){_0x4b5efa[_0x8eef('0x1e')]=_0x511ad0;if(_0x2aa7e1[_0x8eef('0x36')]['includeAll']){_0x14d283[_0x8eef('0x41')]=[{'all':!![]}];}return db['WhatsappTransferReport']['findAll'](_0x14d283);})[_0x8eef('0x26')](function(_0x48a874){_0x4b5efa[_0x8eef('0x42')]=_0x48a874;return _0x4b5efa;})[_0x8eef('0x26')](respondWithFilteredResult(_0x3b323d,_0x14d283))[_0x8eef('0x43')](handleError(_0x3b323d,null));};exports[_0x8eef('0x44')]=function(_0x2ea734,_0x2ceb5c){var _0x312ec9={'raw':!![],'where':{'id':_0x2ea734[_0x8eef('0x45')]['id']}},_0x3b1290={};_0x3b1290[_0x8eef('0x2f')]=_[_0x8eef('0x31')](db[_0x8eef('0x2b')]['rawAttributes']);_0x3b1290[_0x8eef('0x36')]=_[_0x8eef('0x31')](_0x2ea734[_0x8eef('0x36')]);_0x3b1290['filters']=_[_0x8eef('0x33')](_0x3b1290[_0x8eef('0x2f')],_0x3b1290[_0x8eef('0x36')]);_0x312ec9[_0x8eef('0x34')]=_[_0x8eef('0x33')](_0x3b1290[_0x8eef('0x2f')],qs['fields'](_0x2ea734['query'][_0x8eef('0x35')]));_0x312ec9[_0x8eef('0x34')]=_0x312ec9[_0x8eef('0x34')][_0x8eef('0x46')]?_0x312ec9[_0x8eef('0x34')]:_0x3b1290['model'];if(_0x2ea734[_0x8eef('0x36')]['includeAll']){_0x312ec9[_0x8eef('0x41')]=[{'all':!![]}];}_0x312ec9=_[_0x8eef('0x3d')]({},_0x312ec9,_0x2ea734['options']);return db[_0x8eef('0x2b')]['find'](_0x312ec9)[_0x8eef('0x26')](handleEntityNotFound(_0x2ceb5c,null))[_0x8eef('0x26')](respondWithResult(_0x2ceb5c,null))['catch'](handleError(_0x2ceb5c,null));};exports['create']=function(_0x533568,_0x5bae6a){return db[_0x8eef('0x2b')]['create'](_0x533568[_0x8eef('0x47')],{})[_0x8eef('0x26')](respondWithResult(_0x5bae6a,0xc9))[_0x8eef('0x43')](handleError(_0x5bae6a,null));};exports['update']=function(_0x20ecb7,_0x4fbcf4){if(_0x20ecb7[_0x8eef('0x47')]['id']){delete _0x20ecb7[_0x8eef('0x47')]['id'];}return db[_0x8eef('0x2b')]['find']({'where':{'id':_0x20ecb7[_0x8eef('0x45')]['id']}})[_0x8eef('0x26')](handleEntityNotFound(_0x4fbcf4,null))[_0x8eef('0x26')](saveUpdates(_0x20ecb7['body'],null))[_0x8eef('0x26')](respondWithResult(_0x4fbcf4,null))[_0x8eef('0x43')](handleError(_0x4fbcf4,null));};exports[_0x8eef('0x48')]=function(_0x1d588a,_0x1bed4f){return db[_0x8eef('0x2b')][_0x8eef('0x49')]({'where':{'id':_0x1d588a[_0x8eef('0x45')]['id']}})[_0x8eef('0x26')](handleEntityNotFound(_0x1bed4f,null))['then'](removeEntity(_0x1bed4f,null))['catch'](handleError(_0x1bed4f,null));};exports['describe']=function(_0x1d7c0f,_0x3a6285){return db[_0x8eef('0x2b')]['describe']()[_0x8eef('0x26')](respondWithResult(_0x3a6285,null))[_0x8eef('0x43')](handleError(_0x3a6285,null));};
\ No newline at end of file
+var _0x8ea4=['../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','WhatsappTransferReport','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','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'];(function(_0xf69951,_0x5a0b5e){var _0x24a0e9=function(_0xa46794){while(--_0xa46794){_0xf69951['push'](_0xf69951['shift']());}};_0x24a0e9(++_0x5a0b5e);}(_0x8ea4,0x85));var _0x48ea=function(_0xcf69e4,_0x22359f){_0xcf69e4=_0xcf69e4-0x0;var _0x3ae183=_0x8ea4[_0xcf69e4];return _0x3ae183;};'use strict';var emlformat=require(_0x48ea('0x0'));var rimraf=require(_0x48ea('0x1'));var zipdir=require(_0x48ea('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x48ea('0x3'));var moment=require(_0x48ea('0x4'));var BPromise=require(_0x48ea('0x5'));var Mustache=require(_0x48ea('0x6'));var util=require('util');var path=require(_0x48ea('0x7'));var sox=require(_0x48ea('0x8'));var csv=require(_0x48ea('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x48ea('0xa'));var _=require(_0x48ea('0xb'));var squel=require(_0x48ea('0xc'));var crypto=require(_0x48ea('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x48ea('0xe'));var toCsv=require(_0x48ea('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x48ea('0xf'));var authService=require(_0x48ea('0x10'));var qs=require(_0x48ea('0x11'));var as=require(_0x48ea('0x12'));var hardwareService=require(_0x48ea('0x13'));var logger=require(_0x48ea('0x14'))(_0x48ea('0x15'));var utils=require(_0x48ea('0x16'));var config=require(_0x48ea('0x17'));var licenseUtil=require(_0x48ea('0x18'));var db=require(_0x48ea('0x19'))['db'];function respondWithStatusCode(_0x2cfdaa,_0x2f1cf8){_0x2f1cf8=_0x2f1cf8||0xcc;return function(_0x17f27e){if(_0x17f27e){return _0x2cfdaa[_0x48ea('0x1a')](_0x2f1cf8);}return _0x2cfdaa['status'](_0x2f1cf8)['end']();};}function respondWithResult(_0xbe5694,_0x49bf0f){_0x49bf0f=_0x49bf0f||0xc8;return function(_0x56974b){if(_0x56974b){return _0xbe5694[_0x48ea('0x1b')](_0x49bf0f)[_0x48ea('0x1c')](_0x56974b);}};}function respondWithFilteredResult(_0x4b0716,_0x490907){return function(_0x1f13a8){if(_0x1f13a8){var _0x47ffca=typeof _0x490907[_0x48ea('0x1d')]===_0x48ea('0x1e')&&typeof _0x490907[_0x48ea('0x1f')]==='undefined';var _0x4953f4=_0x1f13a8['count'];var _0x48e56f=_0x47ffca?0x0:_0x490907[_0x48ea('0x1d')];var _0x53fb51=_0x47ffca?_0x1f13a8[_0x48ea('0x20')]:_0x490907[_0x48ea('0x1d')]+_0x490907[_0x48ea('0x1f')];var _0x15a3bb;if(_0x53fb51>=_0x4953f4){_0x53fb51=_0x4953f4;_0x15a3bb=0xc8;}else{_0x15a3bb=0xce;}_0x4b0716['status'](_0x15a3bb);return _0x4b0716[_0x48ea('0x21')](_0x48ea('0x22'),_0x48e56f+'-'+_0x53fb51+'/'+_0x4953f4)[_0x48ea('0x1c')](_0x1f13a8);}return null;};}function patchUpdates(_0x5b732b){return function(_0x564b2a){try{jsonpatch[_0x48ea('0x23')](_0x564b2a,_0x5b732b,!![]);}catch(_0x3ef766){return BPromise[_0x48ea('0x24')](_0x3ef766);}return _0x564b2a[_0x48ea('0x25')]();};}function saveUpdates(_0x3a6dc2,_0x314376){return function(_0x4a9c52){if(_0x4a9c52){return _0x4a9c52[_0x48ea('0x26')](_0x3a6dc2)[_0x48ea('0x27')](function(_0x52b836){return _0x52b836;});}return null;};}function removeEntity(_0x5ad6c7,_0x441e34){return function(_0x1bdb44){if(_0x1bdb44){return _0x1bdb44[_0x48ea('0x28')]()[_0x48ea('0x27')](function(){_0x5ad6c7[_0x48ea('0x1b')](0xcc)[_0x48ea('0x29')]();});}};}function handleEntityNotFound(_0x40dee1,_0x110093){return function(_0x4fcd10){if(!_0x4fcd10){_0x40dee1[_0x48ea('0x1a')](0x194);}return _0x4fcd10;};}function handleError(_0x5dbfeb,_0x418581){_0x418581=_0x418581||0x1f4;return function(_0x4a4929){logger[_0x48ea('0x2a')](_0x4a4929[_0x48ea('0x2b')]);if(_0x4a4929[_0x48ea('0x2c')]){delete _0x4a4929[_0x48ea('0x2c')];}_0x5dbfeb[_0x48ea('0x1b')](_0x418581)['send'](_0x4a4929);};}exports[_0x48ea('0x2d')]=function(_0x39a724,_0x58d8d2){var _0x2d1d13={},_0x1d6cde={},_0x50a4f3={'count':0x0,'rows':[]};var _0x377822=_[_0x48ea('0x2e')](db[_0x48ea('0x2f')][_0x48ea('0x30')],function(_0x3eaef0){return{'name':_0x3eaef0['fieldName'],'type':_0x3eaef0['type'][_0x48ea('0x31')]};});_0x1d6cde[_0x48ea('0x32')]=_[_0x48ea('0x2e')](_0x377822,_0x48ea('0x2c'));_0x1d6cde['query']=_['keys'](_0x39a724[_0x48ea('0x33')]);_0x1d6cde[_0x48ea('0x34')]=_[_0x48ea('0x35')](_0x1d6cde[_0x48ea('0x32')],_0x1d6cde['query']);_0x2d1d13[_0x48ea('0x36')]=_[_0x48ea('0x35')](_0x1d6cde[_0x48ea('0x32')],qs[_0x48ea('0x37')](_0x39a724[_0x48ea('0x33')][_0x48ea('0x37')]));_0x2d1d13[_0x48ea('0x36')]=_0x2d1d13['attributes'][_0x48ea('0x38')]?_0x2d1d13[_0x48ea('0x36')]:_0x1d6cde[_0x48ea('0x32')];if(!_0x39a724['query'][_0x48ea('0x39')](_0x48ea('0x3a'))){_0x2d1d13[_0x48ea('0x1f')]=qs[_0x48ea('0x1f')](_0x39a724[_0x48ea('0x33')]['limit']);_0x2d1d13[_0x48ea('0x1d')]=qs[_0x48ea('0x1d')](_0x39a724['query'][_0x48ea('0x1d')]);}_0x2d1d13[_0x48ea('0x3b')]=qs[_0x48ea('0x3c')](_0x39a724[_0x48ea('0x33')][_0x48ea('0x3c')]);_0x2d1d13[_0x48ea('0x3d')]=qs[_0x48ea('0x34')](_[_0x48ea('0x3e')](_0x39a724['query'],_0x1d6cde['filters']),_0x377822);if(_0x39a724[_0x48ea('0x33')][_0x48ea('0x3f')]){_0x2d1d13[_0x48ea('0x3d')]=_[_0x48ea('0x40')](_0x2d1d13[_0x48ea('0x3d')],{'$or':_[_0x48ea('0x2e')](_0x377822,function(_0x27056f){if(_0x27056f[_0x48ea('0x41')]!==_0x48ea('0x42')){var _0x41723a={};_0x41723a[_0x27056f[_0x48ea('0x2c')]]={'$like':'%'+_0x39a724[_0x48ea('0x33')]['filter']+'%'};return _0x41723a;}})});}_0x2d1d13=_[_0x48ea('0x40')]({},_0x2d1d13,_0x39a724[_0x48ea('0x43')]);var _0x274db5={'where':_0x2d1d13[_0x48ea('0x3d')]};return db[_0x48ea('0x2f')]['count'](_0x274db5)['then'](function(_0x3d9c5a){_0x50a4f3['count']=_0x3d9c5a;if(_0x39a724[_0x48ea('0x33')][_0x48ea('0x44')]){_0x2d1d13[_0x48ea('0x45')]=[{'all':!![]}];}return db[_0x48ea('0x2f')]['findAll'](_0x2d1d13);})[_0x48ea('0x27')](function(_0x2b01d1){_0x50a4f3[_0x48ea('0x46')]=_0x2b01d1;return _0x50a4f3;})['then'](respondWithFilteredResult(_0x58d8d2,_0x2d1d13))[_0x48ea('0x47')](handleError(_0x58d8d2,null));};exports[_0x48ea('0x48')]=function(_0x49f1a0,_0x322dd9){var _0x33de0e={'raw':!![],'where':{'id':_0x49f1a0[_0x48ea('0x49')]['id']}},_0x33b6f8={};_0x33b6f8['model']=_[_0x48ea('0x4a')](db[_0x48ea('0x2f')]['rawAttributes']);_0x33b6f8[_0x48ea('0x33')]=_['keys'](_0x49f1a0[_0x48ea('0x33')]);_0x33b6f8[_0x48ea('0x34')]=_[_0x48ea('0x35')](_0x33b6f8[_0x48ea('0x32')],_0x33b6f8['query']);_0x33de0e[_0x48ea('0x36')]=_[_0x48ea('0x35')](_0x33b6f8['model'],qs['fields'](_0x49f1a0[_0x48ea('0x33')][_0x48ea('0x37')]));_0x33de0e[_0x48ea('0x36')]=_0x33de0e[_0x48ea('0x36')][_0x48ea('0x38')]?_0x33de0e[_0x48ea('0x36')]:_0x33b6f8[_0x48ea('0x32')];if(_0x49f1a0['query'][_0x48ea('0x44')]){_0x33de0e[_0x48ea('0x45')]=[{'all':!![]}];}_0x33de0e=_['merge']({},_0x33de0e,_0x49f1a0['options']);return db[_0x48ea('0x2f')][_0x48ea('0x4b')](_0x33de0e)['then'](handleEntityNotFound(_0x322dd9,null))[_0x48ea('0x27')](respondWithResult(_0x322dd9,null))[_0x48ea('0x47')](handleError(_0x322dd9,null));};exports[_0x48ea('0x4c')]=function(_0x5c82eb,_0xd98fda){return db[_0x48ea('0x2f')][_0x48ea('0x4c')](_0x5c82eb[_0x48ea('0x4d')],{})[_0x48ea('0x27')](respondWithResult(_0xd98fda,0xc9))[_0x48ea('0x47')](handleError(_0xd98fda,null));};exports[_0x48ea('0x26')]=function(_0x17dca3,_0x3be2a6){if(_0x17dca3[_0x48ea('0x4d')]['id']){delete _0x17dca3[_0x48ea('0x4d')]['id'];}return db[_0x48ea('0x2f')]['find']({'where':{'id':_0x17dca3['params']['id']}})[_0x48ea('0x27')](handleEntityNotFound(_0x3be2a6,null))['then'](saveUpdates(_0x17dca3[_0x48ea('0x4d')],null))['then'](respondWithResult(_0x3be2a6,null))['catch'](handleError(_0x3be2a6,null));};exports[_0x48ea('0x28')]=function(_0x3c4985,_0x56da0c){return db['WhatsappTransferReport'][_0x48ea('0x4b')]({'where':{'id':_0x3c4985['params']['id']}})[_0x48ea('0x27')](handleEntityNotFound(_0x56da0c,null))[_0x48ea('0x27')](removeEntity(_0x56da0c,null))['catch'](handleError(_0x56da0c,null));};exports[_0x48ea('0x4e')]=function(_0x53cb9f,_0x414305){return db['WhatsappTransferReport']['describe']()[_0x48ea('0x27')](respondWithResult(_0x414305,null))[_0x48ea('0x47')](handleError(_0x414305,null));};
\ No newline at end of file
index 3e0c3bc..13f3be4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefce=['path','rimraf','../../config/environment','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','bluebird'];(function(_0x42b678,_0x38ee8b){var _0x102def=function(_0x567128){while(--_0x567128){_0x42b678['push'](_0x42b678['shift']());}};_0x102def(++_0x38ee8b);}(_0xefce,0x64));var _0xeefc=function(_0x15fc07,_0x41cc0c){_0x15fc07=_0x15fc07-0x0;var _0x3d2c0f=_0xefce[_0x15fc07];return _0x3d2c0f;};'use strict';var _=require(_0xeefc('0x0'));var util=require(_0xeefc('0x1'));var logger=require(_0xeefc('0x2'))('api');var moment=require('moment');var BPromise=require(_0xeefc('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xeefc('0x4'));var rimraf=require(_0xeefc('0x5'));var config=require(_0xeefc('0x6'));var attributes=require(_0xeefc('0x7'));module[_0xeefc('0x8')]=function(_0x194fe4,_0x5a76db){return _0x194fe4[_0xeefc('0x9')](_0xeefc('0xa'),attributes,{'tableName':_0xeefc('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xeefc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf774=['define','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x957193,_0x3fec8b){var _0x9473f8=function(_0x34b82b){while(--_0x34b82b){_0x957193['push'](_0x957193['shift']());}};_0x9473f8(++_0x3fec8b);}(_0xf774,0x107));var _0x4f77=function(_0x26e97c,_0x44c80a){_0x26e97c=_0x26e97c-0x0;var _0x586c1d=_0xf774[_0x26e97c];return _0x586c1d;};'use strict';var _=require(_0x4f77('0x0'));var util=require(_0x4f77('0x1'));var logger=require(_0x4f77('0x2'))(_0x4f77('0x3'));var moment=require(_0x4f77('0x4'));var BPromise=require(_0x4f77('0x5'));var rp=require(_0x4f77('0x6'));var fs=require('fs');var path=require(_0x4f77('0x7'));var rimraf=require('rimraf');var config=require(_0x4f77('0x8'));var attributes=require('./whatsappTransferReport.attributes');module[_0x4f77('0x9')]=function(_0x516e93,_0x5200f1){return _0x516e93[_0x4f77('0xa')]('WhatsappTransferReport',attributes,{'tableName':_0x4f77('0xb'),'paranoid':![],'indexes':[{'name':_0x4f77('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index acef95f..13aa71d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x574e=['WhatsappTransferReport,\x20%s,\x20%s','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info'];(function(_0x381802,_0xa6a3b9){var _0xfbb554=function(_0x576f74){while(--_0x576f74){_0x381802['push'](_0x381802['shift']());}};_0xfbb554(++_0xa6a3b9);}(_0x574e,0x121));var _0xe574=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x574e[_0x167cc1];return _0x10bc4b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe574('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe574('0x1'));var db=require(_0xe574('0x2'))['db'];var utils=require(_0xe574('0x3'));var logger=require(_0xe574('0x4'))(_0xe574('0x5'));var config=require(_0xe574('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xe574('0x7')][_0xe574('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x549ac1,_0x3cd959,_0x62357f){return new BPromise(function(_0x38f6af,_0x48f2a1){return client['request'](_0x549ac1,_0x62357f)[_0xe574('0x9')](function(_0x109257){logger[_0xe574('0xa')](_0xe574('0xb'),_0x3cd959,'request\x20sent');logger['debug'](_0xe574('0xc'),_0x3cd959,_0xe574('0xd'),JSON[_0xe574('0xe')](_0x109257));if(_0x109257['error']){if(_0x109257['error'][_0xe574('0xf')]===0x1f4){logger[_0xe574('0x10')](_0xe574('0xb'),_0x3cd959,_0x109257[_0xe574('0x10')][_0xe574('0x11')]);return _0x48f2a1(_0x109257[_0xe574('0x10')][_0xe574('0x11')]);}logger[_0xe574('0x10')](_0xe574('0xb'),_0x3cd959,_0x109257['error'][_0xe574('0x11')]);return _0x38f6af(_0x109257[_0xe574('0x10')][_0xe574('0x11')]);}else{logger[_0xe574('0xa')](_0xe574('0xb'),_0x3cd959,_0xe574('0xd'));_0x38f6af(_0x109257[_0xe574('0x12')][_0xe574('0x11')]);}})[_0xe574('0x13')](function(_0x21e953){logger[_0xe574('0x10')]('WhatsappTransferReport,\x20%s,\x20%s',_0x3cd959,_0x21e953);_0x48f2a1(_0x21e953);});});}
\ No newline at end of file
+var _0x2889=['info','WhatsappTransferReport,\x20%s,\x20%s','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then'];(function(_0x3b1059,_0xa9d3c9){var _0x1e7d9d=function(_0x441ae0){while(--_0x441ae0){_0x3b1059['push'](_0x3b1059['shift']());}};_0x1e7d9d(++_0xa9d3c9);}(_0x2889,0x14a));var _0x9288=function(_0x34080e,_0x3516bb){_0x34080e=_0x34080e-0x0;var _0x41538d=_0x2889[_0x34080e];return _0x41538d;};'use strict';var _=require('lodash');var util=require(_0x9288('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9288('0x1'));var fs=require('fs');var Redis=require(_0x9288('0x2'));var db=require(_0x9288('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x9288('0x4'))(_0x9288('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x9288('0x6')][_0x9288('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4c0ee4,_0x1f46f9,_0x5c4245){return new BPromise(function(_0x314bfe,_0x4b98f4){return client[_0x9288('0x8')](_0x4c0ee4,_0x5c4245)[_0x9288('0x9')](function(_0x5d781a){logger[_0x9288('0xa')](_0x9288('0xb'),_0x1f46f9,'request\x20sent');logger[_0x9288('0xc')](_0x9288('0xd'),_0x1f46f9,_0x9288('0xe'),JSON['stringify'](_0x5d781a));if(_0x5d781a[_0x9288('0xf')]){if(_0x5d781a[_0x9288('0xf')][_0x9288('0x10')]===0x1f4){logger[_0x9288('0xf')](_0x9288('0xb'),_0x1f46f9,_0x5d781a['error'][_0x9288('0x11')]);return _0x4b98f4(_0x5d781a[_0x9288('0xf')][_0x9288('0x11')]);}logger[_0x9288('0xf')]('WhatsappTransferReport,\x20%s,\x20%s',_0x1f46f9,_0x5d781a[_0x9288('0xf')][_0x9288('0x11')]);return _0x314bfe(_0x5d781a[_0x9288('0xf')][_0x9288('0x11')]);}else{logger[_0x9288('0xa')](_0x9288('0xb'),_0x1f46f9,_0x9288('0xe'));_0x314bfe(_0x5d781a[_0x9288('0x12')][_0x9288('0x11')]);}})[_0x9288('0x13')](function(_0x1ebc90){logger[_0x9288('0xf')](_0x9288('0xb'),_0x1f46f9,_0x1ebc90);_0x4b98f4(_0x1ebc90);});});}
\ No newline at end of file
index 5e6593b..e042fee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8150=['online','Offline\x20apps:','name','join','seedDB','./config/seedDB','default','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./rpc','./config/environment','./config/logger','app','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','then','listen','info','start','map','filter'];(function(_0x28444a,_0x4287ea){var _0x4797f4=function(_0x53b3af){while(--_0x53b3af){_0x28444a['push'](_0x28444a['shift']());}};_0x4797f4(++_0x4287ea);}(_0x8150,0xb8));var _0x0815=function(_0x4d9202,_0x4d804e){_0x4d9202=_0x4d9202-0x0;var _0x21ae74=_0x8150[_0x4d9202];return _0x21ae74;};'use strict';var _=require(_0x0815('0x0'));var mysqldb=require(_0x0815('0x1'));var rpc=require(_0x0815('0x2'));var config=require(_0x0815('0x3'));var logger=require(_0x0815('0x4'))(_0x0815('0x5'));var pm2=require('./config/pm2');var pm2Config=require(_0x0815('0x6'));var schedule=require(_0x0815('0x7'));var chat=require(_0x0815('0x8'));var whatsapp=require(_0x0815('0x9'));var transcribe=require(_0x0815('0xa'));function main(){return mysqldb['db'][_0x0815('0xb')][_0x0815('0xc')]()[_0x0815('0xd')](function(){return rpc[_0x0815('0xe')]();})['then'](function(_0x5d6b22){logger[_0x0815('0xf')](_0x5d6b22);return chat['start']();})[_0x0815('0xd')](function(){return whatsapp[_0x0815('0x10')]();})[_0x0815('0xd')](function(){return schedule['start']();})[_0x0815('0xd')](function(){return transcribe[_0x0815('0x10')]();})[_0x0815('0xd')](function(_0x23f1fd){logger[_0x0815('0xf')](_0x23f1fd);return pm2['start'](pm2Config);})[_0x0815('0xd')](function(_0x1bb628){logger[_0x0815('0xf')]('Online\x20apps:',_[_0x0815('0x11')](_[_0x0815('0x12')](_0x1bb628,{'status':_0x0815('0x13')}),'name')['join']());logger[_0x0815('0xf')](_0x0815('0x14'),_[_0x0815('0x11')](_['filter'](_0x1bb628,function(_0x261f29){return _0x261f29['status']!==_0x0815('0x13');}),_0x0815('0x15'))[_0x0815('0x16')]()||'None');config[_0x0815('0x17')]&&require(_0x0815('0x18'))[_0x0815('0x19')]();require('./config/license')[_0x0815('0x19')]();})[_0x0815('0x1a')](function(_0x5eaffa){logger['error'](_0x0815('0x1b'),_0x5eaffa);process[_0x0815('0x1c')](0x1);});}main();
\ No newline at end of file
+var _0x19d9=['info','start','Online\x20apps:','map','filter','online','join','status','name','None','seedDB','default','./config/license','catch','error','exit','lodash','./mysqldb','./rpc','./config/environment','./config/logger','app','./config/pm2/config','./config/schedule','./config/schedule/chat','sequelize','listen','then'];(function(_0xe7091d,_0x3df812){var _0x20be28=function(_0x56593e){while(--_0x56593e){_0xe7091d['push'](_0xe7091d['shift']());}};_0x20be28(++_0x3df812);}(_0x19d9,0x1b4));var _0x919d=function(_0x1b8deb,_0x5e1419){_0x1b8deb=_0x1b8deb-0x0;var _0x539899=_0x19d9[_0x1b8deb];return _0x539899;};'use strict';var _=require(_0x919d('0x0'));var mysqldb=require(_0x919d('0x1'));var rpc=require(_0x919d('0x2'));var config=require(_0x919d('0x3'));var logger=require(_0x919d('0x4'))(_0x919d('0x5'));var pm2=require('./config/pm2');var pm2Config=require(_0x919d('0x6'));var schedule=require(_0x919d('0x7'));var chat=require(_0x919d('0x8'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db'][_0x919d('0x9')]['sync']()['then'](function(){return rpc[_0x919d('0xa')]();})[_0x919d('0xb')](function(_0x518550){logger[_0x919d('0xc')](_0x518550);return chat[_0x919d('0xd')]();})['then'](function(){return whatsapp[_0x919d('0xd')]();})['then'](function(){return schedule[_0x919d('0xd')]();})[_0x919d('0xb')](function(){return transcribe[_0x919d('0xd')]();})[_0x919d('0xb')](function(_0x4f9dc8){logger[_0x919d('0xc')](_0x4f9dc8);return pm2['start'](pm2Config);})[_0x919d('0xb')](function(_0x5e840e){logger[_0x919d('0xc')](_0x919d('0xe'),_[_0x919d('0xf')](_[_0x919d('0x10')](_0x5e840e,{'status':_0x919d('0x11')}),'name')[_0x919d('0x12')]());logger[_0x919d('0xc')]('Offline\x20apps:',_[_0x919d('0xf')](_['filter'](_0x5e840e,function(_0x499173){return _0x499173[_0x919d('0x13')]!==_0x919d('0x11');}),_0x919d('0x14'))[_0x919d('0x12')]()||_0x919d('0x15'));config[_0x919d('0x16')]&&require('./config/seedDB')[_0x919d('0x17')]();require(_0x919d('0x18'))['default']();})[_0x919d('0x19')](function(_0x57e10a){logger[_0x919d('0x1a')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x57e10a);process[_0x919d('0x1b')](0x1);});}main();
\ No newline at end of file
index 3c48cd0..b18de53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e4d=['util','moment','secrets','session','fullname','name','internal','email','userpic','permissions','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','allowmessenger','passwordResetAt','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','findOne','disposition','then','closed','status','unmanaged','Unmanaged.','Forbidden.','catch','headers','startsWith','authorization','Basic','User','find','json','Unknown\x20authorization\x20format','query','getUuid','apikey','sub','allowedLoginAttempts','isEqual','apiKeyNonce','nonce','disabled','blocked','add','blockDuration','Invalid\x20API\x20access\x20key','canUpdate','getLicense','update','Forbidden','isMiddleware','signToken','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','validatePasswordHistory','decryptString','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','split','length','splice','unshift','encryptString','join','sign','options','verify','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','bluebird'];(function(_0x7450d2,_0x46afc8){var _0x5987aa=function(_0x5cd719){while(--_0x5cd719){_0x7450d2['push'](_0x7450d2['shift']());}};_0x5987aa(++_0x46afc8);}(_0x0e4d,0xf3));var _0xd0e4=function(_0x170289,_0x2fbdcd){_0x170289=_0x170289-0x0;var _0x1d2450=_0x0e4d[_0x170289];return _0x1d2450;};'use strict';var db=require(_0xd0e4('0x0'))['db'];var config=require(_0xd0e4('0x1'));var hardwareConf=require(_0xd0e4('0x2'));var licenseUtil=require(_0xd0e4('0x3'));var encryptor=require(_0xd0e4('0x4'));var _=require(_0xd0e4('0x5'));var jwt=require(_0xd0e4('0x6'));var expressJwt=require(_0xd0e4('0x7'));var compose=require(_0xd0e4('0x8'));var basicAuth=require(_0xd0e4('0x9'));var crypto=require('crypto');var BPromise=require(_0xd0e4('0xa'));var util=require(_0xd0e4('0xb'));var moment=require(_0xd0e4('0xc'));var validateJwt=expressJwt({'secret':config[_0xd0e4('0xd')][_0xd0e4('0xe')]});var userAttributes=['id','role',_0xd0e4('0xf'),_0xd0e4('0x10'),_0xd0e4('0x11'),_0xd0e4('0x12'),_0xd0e4('0x13'),_0xd0e4('0x14'),'md5secret',_0xd0e4('0x15'),_0xd0e4('0x16'),_0xd0e4('0x17'),_0xd0e4('0x18'),_0xd0e4('0x19'),_0xd0e4('0x1a'),_0xd0e4('0x1b'),_0xd0e4('0x1c'),_0xd0e4('0x1d'),_0xd0e4('0x1e'),'crudPermissions',_0xd0e4('0x1f'),_0xd0e4('0x20'),'alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay',_0xd0e4('0x21'),_0xd0e4('0x22'),_0xd0e4('0x23'),_0xd0e4('0x24'),_0xd0e4('0x25'),_0xd0e4('0x26'),'phoneBarRemoteControl',_0xd0e4('0x27'),_0xd0e4('0x28'),_0xd0e4('0x29'),_0xd0e4('0x2a'),_0xd0e4('0x2b'),_0xd0e4('0x2c'),_0xd0e4('0x2d'),_0xd0e4('0x2e'),_0xd0e4('0x2f'),_0xd0e4('0x30')];exports[_0xd0e4('0x31')]=function(){return this[_0xd0e4('0x32')](!![])[_0xd0e4('0x33')](function(_0x339220,_0x365e80,_0x5dbef5){if(_0x339220[_0xd0e4('0x34')]){_0x5dbef5();}else{return db[_0xd0e4('0x35')][_0xd0e4('0x36')]({'where':{'id':_0x339220['params']['id']},'attributes':['id','closed',_0xd0e4('0x37')],'raw':!![]})[_0xd0e4('0x38')](function(_0x4aa5d3){if(_0x4aa5d3&&_0x4aa5d3[_0xd0e4('0x39')]){return _0x365e80[_0xd0e4('0x3a')](_0x4aa5d3[_0xd0e4('0x37')]===_0xd0e4('0x3b')?0x195:0x193)['json']({'message':_0x4aa5d3['disposition']==='unmanaged'?_0xd0e4('0x3c'):_0xd0e4('0x3d')});}else{_0x5dbef5();}})[_0xd0e4('0x3e')](function(_0x51b390){_0x5dbef5(_0x51b390);});}});};exports[_0xd0e4('0x32')]=function isAuthenticated(_0x49813e){return compose()[_0xd0e4('0x33')](function(_0x47707b,_0x47146b,_0x2c83a5){var _0x545fcf;if(_0x47707b[_0xd0e4('0x3f')]['authorization']){if(_[_0xd0e4('0x40')](_0x47707b[_0xd0e4('0x3f')][_0xd0e4('0x41')],_0xd0e4('0x42'))){var _0x4fa4fd=basicAuth(_0x47707b);db[_0xd0e4('0x43')][_0xd0e4('0x44')]({'where':{'name':_0x4fa4fd[_0xd0e4('0x10')]}})[_0xd0e4('0x38')](function(_0xdcfa7d){if(!_0xdcfa7d||!_0xdcfa7d['authenticate'](_0x4fa4fd['pass'])){return _0x47146b[_0xd0e4('0x3a')](0x191)[_0xd0e4('0x45')]({'message':'Wrong\x20credentials.'});}_0x47707b['user']={'id':_0xdcfa7d['id']};_0x2c83a5();})['catch'](function(_0x302217){_0x2c83a5(_0x302217);});}else if(_[_0xd0e4('0x40')](_0x47707b[_0xd0e4('0x3f')][_0xd0e4('0x41')],'Bearer')){validateJwt(_0x47707b,_0x47146b,_0x2c83a5);}else{if(_0x49813e){_0x2c83a5();}else{return _0x47146b[_0xd0e4('0x3a')](0x193)[_0xd0e4('0x45')]({'message':_0xd0e4('0x46')});}}}else if(_0x47707b[_0xd0e4('0x47')]['apikey']){try{var _0x596657={'audience':hardwareConf[_0xd0e4('0x48')](),'issuer':hardwareConf[_0xd0e4('0x48')]()};verifyJwt(_0x47707b['query'][_0xd0e4('0x49')],_0x596657)[_0xd0e4('0x38')](function(_0x4979cf){return db['User']['find']({'where':{'id':_0x4979cf[_0xd0e4('0x4a')]}})[_0xd0e4('0x38')](function(_0x1900c3){_0x545fcf=_0x1900c3;return db['Setting'][_0xd0e4('0x36')]({'where':{'id':0x1},'attributes':[_0xd0e4('0x4b'),'blockDuration'],'raw':!![]});})['then'](function(_0x3d571a){if(!_0x545fcf||!_[_0xd0e4('0x4c')](_0x545fcf[_0xd0e4('0x4d')],_0x4979cf[_0xd0e4('0x4e')])){return _0x47146b[_0xd0e4('0x3a')](0x191)[_0xd0e4('0x45')]({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x545fcf[_0xd0e4('0x4f')]){return _0x47146b[_0xd0e4('0x3a')](0x191)[_0xd0e4('0x45')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x545fcf[_0xd0e4('0x50')]){if(_0x3d571a['blockDuration']>0x0){if(moment(_0x545fcf['blockedAt'])[_0xd0e4('0x51')](_0x3d571a[_0xd0e4('0x52')],'minutes')>moment()){return _0x47146b[_0xd0e4('0x3a')](0x191)[_0xd0e4('0x45')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x47146b['status'](0x191)[_0xd0e4('0x45')]({'message':_0xd0e4('0x53')});}}_0x47707b[_0xd0e4('0x34')]={'id':_0x545fcf['id']};_0x2c83a5();});})['catch'](function(){return _0x47146b['status'](0x191)[_0xd0e4('0x45')]({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x2ad9ba){_0x2c83a5(_0x2ad9ba);}}else if(_0x49813e){_0x2c83a5();}else{return _0x47146b['status'](0x193)[_0xd0e4('0x45')]({'message':_0xd0e4('0x46')});}})[_0xd0e4('0x33')](function(_0x1c37ea,_0x59e7c1,_0x4f67e8){if(_0x1c37ea['user']){db[_0xd0e4('0x43')][_0xd0e4('0x44')]({'where':{'id':_0x1c37ea[_0xd0e4('0x34')]['id']},'attributes':userAttributes})[_0xd0e4('0x38')](function(_0x330464){if(!_0x330464){return _0x59e7c1['status'](0x194)[_0xd0e4('0x45')]({'message':'User\x20not\x20found.'});}_0x1c37ea['user']=_0x330464;_0x4f67e8();})['catch'](function(_0x4e63a7){_0x4f67e8(_0x4e63a7);});}else if(_0x49813e){_0x4f67e8();}else{return _0x59e7c1[_0xd0e4('0x3a')](0x194)[_0xd0e4('0x45')]({'message':'User\x20object\x20not\x20found.'});}});};exports[_0xd0e4('0x54')]=function canUpdate(){return compose()[_0xd0e4('0x33')](function(_0x5bd62a,_0x383bc0,_0x5446ea){return licenseUtil[_0xd0e4('0x55')]()['then'](function(_0x356ca5){if(_0x356ca5[_0xd0e4('0x56')]){_0x5446ea();}else{return _0x383bc0['status'](0x193)['json']({'message':_0xd0e4('0x57')});}})[_0xd0e4('0x3e')](function(_0x25156b){_0x5446ea(_0x25156b);});});};exports[_0xd0e4('0x58')]=function(_0x107e68,_0xd4e48,_0x22bf86){_0x107e68[_0xd0e4('0x58')]=!![];return _0x22bf86();};exports[_0xd0e4('0x59')]=function signToken(_0x23f169){return signJwt(_0x23f169);};exports['setTokenCookie']=function(_0x1e1a08,_0x26b715){if(!_0x1e1a08[_0xd0e4('0x34')]){return _0x26b715['status'](0x194)[_0xd0e4('0x45')]({'message':_0xd0e4('0x5a')});}var _0x129a36={'payload':{'id':_0x1e1a08[_0xd0e4('0x34')]['id'],'role':_0x1e1a08[_0xd0e4('0x34')]['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x129a36)[_0xd0e4('0x38')](function(_0x5dca9){_0x26b715[_0xd0e4('0x5b')](_0xd0e4('0x5c'),_0x5dca9);_0x26b715[_0xd0e4('0x5d')](_0xd0e4('0x5e'));})[_0xd0e4('0x3e')](function(_0x27d9da){return _0x26b715[_0xd0e4('0x3a')](0x1f4)[_0xd0e4('0x5f')](_0x27d9da);});};exports[_0xd0e4('0x60')]=function(_0x6f497){if(_[_0xd0e4('0x61')](_0x6f497['apiKeyNonce'])||_[_0xd0e4('0x61')](_0x6f497[_0xd0e4('0x62')])){return null;}else{return createJwt(_0x6f497);}};exports['generateApiKey']=function(_0x1235d4){_0x1235d4['apiKeyNonce']=generateNonce();_0x1235d4['apiKeyIat']=generateIssuedAt();return createJwt(_0x1235d4);};exports[_0xd0e4('0x63')]=function(_0x224a45,_0x530f34){var _0x3ed0bd=_0x224a45[_0xd0e4('0x47')][_0xd0e4('0x49')];if(_0x3ed0bd){var _0x26e32f={'nonce':_0x530f34[_0xd0e4('0x4d')],'iat':_0x530f34[_0xd0e4('0x62')],'audience':hardwareConf[_0xd0e4('0x48')](),'issuer':hardwareConf[_0xd0e4('0x48')]()};return verifyJwt(_0x3ed0bd,_0x26e32f)['then'](function(){return generateApiKey(_0x530f34);});}else{throw{'message':_0xd0e4('0x64')};}};exports[_0xd0e4('0x65')]=function(_0x3d387d){var _0x313429=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x313429[_0xd0e4('0x66')](_0x3d387d))throw new db[(_0xd0e4('0x67'))][(_0xd0e4('0x68'))]('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[_0xd0e4('0x69')]=function(_0x35bde7,_0x3d6024,_0xd1c70d){var _0x159fa3=encryptor[_0xd0e4('0x6a')](_0x3d6024)['split'](',');for(var _0x1e0935=0x0;_0x1e0935<_0xd1c70d;_0x1e0935++){if(!_0x159fa3[_0x1e0935])break;if(_0x35bde7[_0xd0e4('0x6b')]()===_0x159fa3[_0x1e0935][_0xd0e4('0x6b')]()){var _0x1de8c8=util[_0xd0e4('0x6c')](_0xd0e4('0x6d'),_0xd1c70d);if(_0xd1c70d===0x1){_0x1de8c8=_0xd0e4('0x6e');}throw new db[(_0xd0e4('0x67'))][(_0xd0e4('0x68'))](_0x1de8c8);}}return;};exports[_0xd0e4('0x6f')]=function(_0x79e5ae,_0x5c02aa){var _0x188a0f=_0x5c02aa?encryptor[_0xd0e4('0x6a')](_0x5c02aa)[_0xd0e4('0x70')](','):[];if(_0x188a0f[_0xd0e4('0x71')]===0x5){_0x188a0f[_0xd0e4('0x72')](-0x1,0x1);}_0x188a0f[_0xd0e4('0x73')](_0x79e5ae);return encryptor[_0xd0e4('0x74')](_0x188a0f[_0xd0e4('0x75')](','));};function signJwt(_0x73c3a0){var _0x138ea2=BPromise['promisify'](jwt[_0xd0e4('0x76')],{'context':jwt});var _0x2cd259=_0x73c3a0['secret']||config['secrets']['session'];return new BPromise(function(_0x80195d,_0x4c020e){_0x138ea2(_0x73c3a0['payload'],_0x2cd259,_0x73c3a0[_0xd0e4('0x77')])['then'](function(_0x7cd523){_0x80195d(_0x7cd523);})['catch'](function(_0x4cbed7){_0x4c020e(_0x4cbed7);});});}function verifyJwt(_0x25300e,_0x820a9e,_0x5af6db){var _0x5692c2=BPromise['promisify'](jwt[_0xd0e4('0x78')],{'context':jwt});var _0x172c50=_0x5af6db||config[_0xd0e4('0xd')][_0xd0e4('0xe')];return new BPromise(function(_0x204291,_0x3fd177){_0x5692c2(_0x25300e,_0x172c50,_0x820a9e)[_0xd0e4('0x38')](function(_0x1dbe82){_0x204291(_0x1dbe82);})[_0xd0e4('0x3e')](function(_0x38625b){_0x3fd177(_0x38625b);});});}function generateNonce(){return crypto[_0xd0e4('0x79')](0x10)[_0xd0e4('0x7a')](_0xd0e4('0x7b'));}function generateIssuedAt(){return Math[_0xd0e4('0x7c')](Date[_0xd0e4('0x7d')]()/0x3e8)[_0xd0e4('0x7a')]();}function createJwt(_0x509d95){var _0x250aa0={'payload':{'iat':_0x509d95['apiKeyIat'],'nonce':_0x509d95[_0xd0e4('0x4d')]},'options':{'algorithm':_0xd0e4('0x7e'),'subject':_0x509d95['id']['toString'](),'issuer':hardwareConf[_0xd0e4('0x48')](),'audience':hardwareConf[_0xd0e4('0x48')]()}};return signJwt(_0x250aa0)['then'](function(_0x14266a){return{'iat':_0x509d95['apiKeyIat'],'nonce':_0x509d95[_0xd0e4('0x4d')],'token':_0x14266a};});}
\ No newline at end of file
+var _0x6cac=['isMiddleware','signToken','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','role','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','generateApiKey','apiKeyIat','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','toLowerCase','format','updatePasswordsHistory','split','length','splice','promisify','sign','secret','payload','options','verify','hex','floor','now','toString','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','util','secrets','session','fullname','internal','email','permissions','md5secret','chatPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarPrefixRequired','phoneBarRemoteControl','hotdesk','interface','userProfileId','wssPort','downloadOmnichannelInteractions','downloadAttachments','isAuthenticated','use','user','findOne','params','closed','disposition','then','json','unmanaged','authorization','startsWith','headers','Basic','find','name','authenticate','pass','status','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','getUuid','query','apikey','User','sub','Setting','allowedLoginAttempts','blockDuration','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','User\x20not\x20found.','catch','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden'];(function(_0x2af416,_0x295876){var _0x45a39d=function(_0x5ef4ec){while(--_0x5ef4ec){_0x2af416['push'](_0x2af416['shift']());}};_0x45a39d(++_0x295876);}(_0x6cac,0x196));var _0xc6ca=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x6cac[_0x126558];return _0x1f6d14;};'use strict';var db=require(_0xc6ca('0x0'))['db'];var config=require(_0xc6ca('0x1'));var hardwareConf=require(_0xc6ca('0x2'));var licenseUtil=require(_0xc6ca('0x3'));var encryptor=require(_0xc6ca('0x4'));var _=require('lodash');var jwt=require(_0xc6ca('0x5'));var expressJwt=require(_0xc6ca('0x6'));var compose=require(_0xc6ca('0x7'));var basicAuth=require(_0xc6ca('0x8'));var crypto=require(_0xc6ca('0x9'));var BPromise=require('bluebird');var util=require(_0xc6ca('0xa'));var moment=require('moment');var validateJwt=expressJwt({'secret':config[_0xc6ca('0xb')][_0xc6ca('0xc')]});var userAttributes=['id','role',_0xc6ca('0xd'),'name',_0xc6ca('0xe'),_0xc6ca('0xf'),'userpic',_0xc6ca('0x10'),_0xc6ca('0x11'),'voicePause',_0xc6ca('0x12'),'mailPause','faxPause',_0xc6ca('0x13'),_0xc6ca('0x14'),_0xc6ca('0x15'),_0xc6ca('0x16'),_0xc6ca('0x17'),_0xc6ca('0x18'),_0xc6ca('0x19'),_0xc6ca('0x1a'),_0xc6ca('0x1b'),'alias',_0xc6ca('0x1c'),'phoneBarAutoAnswerDelay','phoneBarDnd',_0xc6ca('0x1d'),_0xc6ca('0x1e'),_0xc6ca('0x1f'),'phoneBarExpires',_0xc6ca('0x20'),_0xc6ca('0x21'),'phoneBarRemoteControlPort',_0xc6ca('0x22'),_0xc6ca('0x23'),_0xc6ca('0x24'),'privacyEnabled','settingsEnabled',_0xc6ca('0x25'),'downloadVoiceRecordings',_0xc6ca('0x26'),_0xc6ca('0x27')];exports['isChatInteractionAuthorized']=function(){return this[_0xc6ca('0x28')](!![])[_0xc6ca('0x29')](function(_0x342d51,_0x2cd54a,_0x2bb4e2){if(_0x342d51[_0xc6ca('0x2a')]){_0x2bb4e2();}else{return db['ChatInteraction'][_0xc6ca('0x2b')]({'where':{'id':_0x342d51[_0xc6ca('0x2c')]['id']},'attributes':['id',_0xc6ca('0x2d'),_0xc6ca('0x2e')],'raw':!![]})[_0xc6ca('0x2f')](function(_0x2750c4){if(_0x2750c4&&_0x2750c4[_0xc6ca('0x2d')]){return _0x2cd54a['status'](_0x2750c4['disposition']==='unmanaged'?0x195:0x193)[_0xc6ca('0x30')]({'message':_0x2750c4['disposition']===_0xc6ca('0x31')?'Unmanaged.':'Forbidden.'});}else{_0x2bb4e2();}})['catch'](function(_0x3033eb){_0x2bb4e2(_0x3033eb);});}});};exports[_0xc6ca('0x28')]=function isAuthenticated(_0x77d39f){return compose()[_0xc6ca('0x29')](function(_0x2dda5d,_0x403991,_0x52d643){var _0x290c18;if(_0x2dda5d['headers'][_0xc6ca('0x32')]){if(_[_0xc6ca('0x33')](_0x2dda5d[_0xc6ca('0x34')][_0xc6ca('0x32')],_0xc6ca('0x35'))){var _0x28858e=basicAuth(_0x2dda5d);db['User'][_0xc6ca('0x36')]({'where':{'name':_0x28858e[_0xc6ca('0x37')]}})['then'](function(_0x35cb01){if(!_0x35cb01||!_0x35cb01[_0xc6ca('0x38')](_0x28858e[_0xc6ca('0x39')])){return _0x403991[_0xc6ca('0x3a')](0x191)[_0xc6ca('0x30')]({'message':_0xc6ca('0x3b')});}_0x2dda5d['user']={'id':_0x35cb01['id']};_0x52d643();})['catch'](function(_0x4f7ccc){_0x52d643(_0x4f7ccc);});}else if(_[_0xc6ca('0x33')](_0x2dda5d[_0xc6ca('0x34')][_0xc6ca('0x32')],_0xc6ca('0x3c'))){validateJwt(_0x2dda5d,_0x403991,_0x52d643);}else{if(_0x77d39f){_0x52d643();}else{return _0x403991[_0xc6ca('0x3a')](0x193)[_0xc6ca('0x30')]({'message':_0xc6ca('0x3d')});}}}else if(_0x2dda5d['query']['apikey']){try{var _0x1f633d={'audience':hardwareConf[_0xc6ca('0x3e')](),'issuer':hardwareConf[_0xc6ca('0x3e')]()};verifyJwt(_0x2dda5d[_0xc6ca('0x3f')][_0xc6ca('0x40')],_0x1f633d)['then'](function(_0x25ac44){return db[_0xc6ca('0x41')][_0xc6ca('0x36')]({'where':{'id':_0x25ac44[_0xc6ca('0x42')]}})[_0xc6ca('0x2f')](function(_0xdbee4d){_0x290c18=_0xdbee4d;return db[_0xc6ca('0x43')][_0xc6ca('0x2b')]({'where':{'id':0x1},'attributes':[_0xc6ca('0x44'),_0xc6ca('0x45')],'raw':!![]});})[_0xc6ca('0x2f')](function(_0x43ae4a){if(!_0x290c18||!_['isEqual'](_0x290c18[_0xc6ca('0x46')],_0x25ac44[_0xc6ca('0x47')])){return _0x403991[_0xc6ca('0x3a')](0x191)['json']({'message':_0xc6ca('0x48')});}if(_0x290c18[_0xc6ca('0x49')]){return _0x403991[_0xc6ca('0x3a')](0x191)[_0xc6ca('0x30')]({'message':_0xc6ca('0x4a')});}if(_0x290c18[_0xc6ca('0x4b')]){if(_0x43ae4a[_0xc6ca('0x45')]>0x0){if(moment(_0x290c18[_0xc6ca('0x4c')])[_0xc6ca('0x4d')](_0x43ae4a[_0xc6ca('0x45')],_0xc6ca('0x4e'))>moment()){return _0x403991[_0xc6ca('0x3a')](0x191)[_0xc6ca('0x30')]({'message':_0xc6ca('0x4a')});}}else{return _0x403991[_0xc6ca('0x3a')](0x191)[_0xc6ca('0x30')]({'message':'Invalid\x20API\x20access\x20key'});}}_0x2dda5d[_0xc6ca('0x2a')]={'id':_0x290c18['id']};_0x52d643();});})['catch'](function(){return _0x403991[_0xc6ca('0x3a')](0x191)[_0xc6ca('0x30')]({'message':_0xc6ca('0x4a')});});}catch(_0x4c22c0){_0x52d643(_0x4c22c0);}}else if(_0x77d39f){_0x52d643();}else{return _0x403991[_0xc6ca('0x3a')](0x193)[_0xc6ca('0x30')]({'message':_0xc6ca('0x3d')});}})[_0xc6ca('0x29')](function(_0x8735fe,_0x2c41cf,_0x22e40f){if(_0x8735fe['user']){db[_0xc6ca('0x41')][_0xc6ca('0x36')]({'where':{'id':_0x8735fe[_0xc6ca('0x2a')]['id']},'attributes':userAttributes})['then'](function(_0x3f8ad1){if(!_0x3f8ad1){return _0x2c41cf[_0xc6ca('0x3a')](0x194)[_0xc6ca('0x30')]({'message':_0xc6ca('0x4f')});}_0x8735fe['user']=_0x3f8ad1;_0x22e40f();})[_0xc6ca('0x50')](function(_0x4d412f){_0x22e40f(_0x4d412f);});}else if(_0x77d39f){_0x22e40f();}else{return _0x2c41cf[_0xc6ca('0x3a')](0x194)[_0xc6ca('0x30')]({'message':_0xc6ca('0x51')});}});};exports[_0xc6ca('0x52')]=function canUpdate(){return compose()[_0xc6ca('0x29')](function(_0x2f9959,_0x3e883e,_0x5a12f2){return licenseUtil[_0xc6ca('0x53')]()[_0xc6ca('0x2f')](function(_0x25398a){if(_0x25398a[_0xc6ca('0x54')]){_0x5a12f2();}else{return _0x3e883e['status'](0x193)[_0xc6ca('0x30')]({'message':_0xc6ca('0x55')});}})[_0xc6ca('0x50')](function(_0x54d34e){_0x5a12f2(_0x54d34e);});});};exports['isMiddleware']=function(_0x4cc132,_0x2ed677,_0x9a1d2e){_0x4cc132[_0xc6ca('0x56')]=!![];return _0x9a1d2e();};exports[_0xc6ca('0x57')]=function signToken(_0x351771){return signJwt(_0x351771);};exports['setTokenCookie']=function(_0x53f12e,_0x35b749){if(!_0x53f12e['user']){return _0x35b749[_0xc6ca('0x3a')](0x194)[_0xc6ca('0x30')]({'message':_0xc6ca('0x58')});}var _0x5c9374={'payload':{'id':_0x53f12e[_0xc6ca('0x2a')]['id'],'role':_0x53f12e[_0xc6ca('0x2a')][_0xc6ca('0x59')]},'options':{'expiresIn':0x15180}};return signJwt(_0x5c9374)[_0xc6ca('0x2f')](function(_0x42897b){_0x35b749[_0xc6ca('0x5a')](_0xc6ca('0x5b'),_0x42897b);_0x35b749[_0xc6ca('0x5c')](_0xc6ca('0x5d'));})[_0xc6ca('0x50')](function(_0x5ec524){return _0x35b749[_0xc6ca('0x3a')](0x1f4)[_0xc6ca('0x5e')](_0x5ec524);});};exports[_0xc6ca('0x5f')]=function(_0x523345){if(_[_0xc6ca('0x60')](_0x523345[_0xc6ca('0x46')])||_['isNil'](_0x523345['apiKeyIat'])){return null;}else{return createJwt(_0x523345);}};exports[_0xc6ca('0x61')]=function(_0x17e959){_0x17e959[_0xc6ca('0x46')]=generateNonce();_0x17e959[_0xc6ca('0x62')]=generateIssuedAt();return createJwt(_0x17e959);};exports['regenerateApiKey']=function(_0x36c1e3,_0x3f1b9a){var _0x3e6fb3=_0x36c1e3['query']['apikey'];if(_0x3e6fb3){var _0x20ac8d={'nonce':_0x3f1b9a[_0xc6ca('0x46')],'iat':_0x3f1b9a[_0xc6ca('0x62')],'audience':hardwareConf[_0xc6ca('0x3e')](),'issuer':hardwareConf[_0xc6ca('0x3e')]()};return verifyJwt(_0x3e6fb3,_0x20ac8d)[_0xc6ca('0x2f')](function(){return generateApiKey(_0x3f1b9a);});}else{throw{'message':_0xc6ca('0x63')};}};exports['validatePasswordPattern']=function(_0x3e9cfb){var _0x46b11c=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x46b11c[_0xc6ca('0x64')](_0x3e9cfb))throw new db[(_0xc6ca('0x65'))][(_0xc6ca('0x66'))](_0xc6ca('0x67'));return;};exports[_0xc6ca('0x68')]=function(_0x2ebe45,_0x487ed1,_0x12f10f){var _0x464145=encryptor[_0xc6ca('0x69')](_0x487ed1)['split'](',');for(var _0x1e138a=0x0;_0x1e138a<_0x12f10f;_0x1e138a++){if(!_0x464145[_0x1e138a])break;if(_0x2ebe45[_0xc6ca('0x6a')]()===_0x464145[_0x1e138a][_0xc6ca('0x6a')]()){var _0x59acc6=util[_0xc6ca('0x6b')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x12f10f);if(_0x12f10f===0x1){_0x59acc6='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0xc6ca('0x65'))]['ValidationError'](_0x59acc6);}}return;};exports[_0xc6ca('0x6c')]=function(_0x1a293e,_0x52dd5c){var _0xa1f016=_0x52dd5c?encryptor[_0xc6ca('0x69')](_0x52dd5c)[_0xc6ca('0x6d')](','):[];if(_0xa1f016[_0xc6ca('0x6e')]===0x5){_0xa1f016[_0xc6ca('0x6f')](-0x1,0x1);}_0xa1f016['unshift'](_0x1a293e);return encryptor['encryptString'](_0xa1f016['join'](','));};function signJwt(_0x59e1f1){var _0x171759=BPromise[_0xc6ca('0x70')](jwt[_0xc6ca('0x71')],{'context':jwt});var _0x20fc5d=_0x59e1f1[_0xc6ca('0x72')]||config['secrets']['session'];return new BPromise(function(_0x2acb7a,_0x58c9a8){_0x171759(_0x59e1f1[_0xc6ca('0x73')],_0x20fc5d,_0x59e1f1[_0xc6ca('0x74')])[_0xc6ca('0x2f')](function(_0x18200c){_0x2acb7a(_0x18200c);})[_0xc6ca('0x50')](function(_0x4315f4){_0x58c9a8(_0x4315f4);});});}function verifyJwt(_0x27f147,_0x4e3edd,_0x5596fa){var _0x28a2ba=BPromise[_0xc6ca('0x70')](jwt[_0xc6ca('0x75')],{'context':jwt});var _0x4c6240=_0x5596fa||config['secrets']['session'];return new BPromise(function(_0x308669,_0x2d66cb){_0x28a2ba(_0x27f147,_0x4c6240,_0x4e3edd)['then'](function(_0x1b35fd){_0x308669(_0x1b35fd);})[_0xc6ca('0x50')](function(_0x2ed938){_0x2d66cb(_0x2ed938);});});}function generateNonce(){return crypto['randomBytes'](0x10)['toString'](_0xc6ca('0x76'));}function generateIssuedAt(){return Math[_0xc6ca('0x77')](Date[_0xc6ca('0x78')]()/0x3e8)[_0xc6ca('0x79')]();}function createJwt(_0x165191){var _0x26a7c9={'payload':{'iat':_0x165191['apiKeyIat'],'nonce':_0x165191['apiKeyNonce']},'options':{'algorithm':_0xc6ca('0x7a'),'subject':_0x165191['id']['toString'](),'issuer':hardwareConf[_0xc6ca('0x3e')](),'audience':hardwareConf[_0xc6ca('0x3e')]()}};return signJwt(_0x26a7c9)['then'](function(_0x22cb8f){return{'iat':_0x165191[_0xc6ca('0x62')],'nonce':_0x165191['apiKeyNonce'],'token':_0x22cb8f};});}
\ No newline at end of file
index aa8ef54..d8603a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8997=['decryptString','bluebird','lodash','../../config/environment','app','secrets','aes-256-ctr','encrypt','algorithm','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','hasOwnProperty','encryptFile','createReadStream','createWriteStream','createCipher','data','update','write','final','binary','end','close','createDecipher','unlink','secret','utf8','base64'];(function(_0xd66d0b,_0x36dfd2){var _0x585136=function(_0x1054ee){while(--_0x1054ee){_0xd66d0b['push'](_0xd66d0b['shift']());}};_0x585136(++_0x36dfd2);}(_0x8997,0xbb));var _0x7899=function(_0x33a0ab,_0x4b717b){_0x33a0ab=_0x33a0ab-0x0;var _0x5abd60=_0x8997[_0x33a0ab];return _0x5abd60;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0x7899('0x0'));var _=require(_0x7899('0x1'));var config=require(_0x7899('0x2'));var logger=require('../../config/logger')(_0x7899('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x7899('0x4')]['session'],'algorithm':_0x7899('0x5')};const fileOptions={'algorithm':'aes192'};if(config['encrypt']&&config[_0x7899('0x6')]['algorithm']){var isSupported=isAlgorithmSupported(config[_0x7899('0x6')][_0x7899('0x7')]);if(isSupported){fileOptions[_0x7899('0x7')]=config[_0x7899('0x6')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x7899('0x8')](config['encrypt'][_0x7899('0x7')],_0x7899('0x9'),supportedAlgorithms);}}function isASupportedCipher(_0x10f44a){return AES_SUPPORTED_RX[_0x7899('0xa')](_0x10f44a);}function getSupportedCiphers(){return crypto[_0x7899('0xb')]()[_0x7899('0xc')](isASupportedCipher);}function isAlgorithmSupported(_0x448e25){return getSupportedCiphers()['indexOf'](_0x448e25)>-0x1;}function combineOptions(_0x47abc1){var _0x38c26e={};for(var _0x19877a in fileOptions){if(fileOptions[_0x7899('0xd')](_0x19877a)){_0x38c26e[_0x19877a]=fileOptions[_0x19877a];}}if(_0x47abc1){for(var _0x2ecc6f in _0x47abc1){if(_0x47abc1[_0x7899('0xd')](_0x2ecc6f)){_0x38c26e[_0x2ecc6f]=_0x47abc1[_0x2ecc6f];}}}return _0x38c26e;}exports[_0x7899('0xe')]=function(_0x2c3c9c,_0x250672,_0x714f0e,_0x7853e8){return new BPromise(function(_0x3e447b,_0x399e1a){_0x7853e8=combineOptions(_0x7853e8);var _0x160d84=new Buffer(_0x714f0e);var _0x439efc=fs[_0x7899('0xf')](_0x2c3c9c);var _0x30ed7d=fs[_0x7899('0x10')](_0x250672);var _0x5a1eea=crypto[_0x7899('0x11')](_0x7853e8[_0x7899('0x7')],_0x160d84);_0x439efc['on'](_0x7899('0x12'),function(_0x5d270f){var _0x112758=new Buffer(_0x5a1eea[_0x7899('0x13')](_0x5d270f),'binary');_0x30ed7d[_0x7899('0x14')](_0x112758);});_0x439efc['on']('end',function(){try{var _0x2a67e6=new Buffer(_0x5a1eea[_0x7899('0x15')](_0x7899('0x16')),_0x7899('0x16'));_0x30ed7d[_0x7899('0x14')](_0x2a67e6);_0x30ed7d[_0x7899('0x17')]();_0x30ed7d['on'](_0x7899('0x18'),function(){return _0x3e447b(_0x250672);});}catch(_0x18042b){fs['unlink'](_0x250672);return _0x399e1a(_0x18042b);}});});};exports['decryptFile']=function(_0x4bb277,_0x20898b,_0x12262b,_0x3327d3){return new BPromise(function(_0x1bb7b7,_0x5860b8){_0x3327d3=combineOptions(_0x3327d3);var _0x31b107=new Buffer(_0x12262b);var _0x43c6f4=fs[_0x7899('0xf')](_0x4bb277);var _0x232691=fs[_0x7899('0x10')](_0x20898b);var _0x202f38=crypto[_0x7899('0x19')](_0x3327d3['algorithm'],_0x31b107);_0x43c6f4['on'](_0x7899('0x12'),function(_0x16b63e){var _0xad1f86=new Buffer(_0x202f38[_0x7899('0x13')](_0x16b63e),_0x7899('0x16'));_0x232691[_0x7899('0x14')](_0xad1f86);});_0x43c6f4['on'](_0x7899('0x17'),function(){try{var _0x8a989d=new Buffer(_0x202f38[_0x7899('0x15')](_0x7899('0x16')),_0x7899('0x16'));_0x232691[_0x7899('0x14')](_0x8a989d);_0x232691[_0x7899('0x17')]();_0x232691['on']('close',function(){return _0x1bb7b7(_0x20898b);});}catch(_0x10dc4f){fs[_0x7899('0x1a')](_0x20898b);return _0x5860b8(_0x10dc4f);}});});};exports['encryptString']=function(_0x5918e9,_0x3cbbe6,_0x2538a6){var _0xca3808=_0x2538a6||stringOptions[_0x7899('0x7')];var _0x322ca2=_0x3cbbe6||stringOptions[_0x7899('0x1b')];var _0x3157e0=crypto[_0x7899('0x11')](_0xca3808,_0x322ca2);var _0x120970=_0x3157e0['update'](_0x5918e9,_0x7899('0x1c'),_0x7899('0x1d'));_0x120970+=_0x3157e0[_0x7899('0x15')](_0x7899('0x1d'));return _0x120970;};exports[_0x7899('0x1e')]=function(_0x553f64,_0xd52db4,_0xa1b58c){var _0x5671f3=_0xa1b58c||stringOptions[_0x7899('0x7')];var _0x3c30e9=_0xd52db4||stringOptions['secret'];var _0x28fb42=crypto[_0x7899('0x19')](_0x5671f3,_0x3c30e9);var _0x5e7b7a=_0x28fb42[_0x7899('0x13')](_0x553f64,_0x7899('0x1d'),_0x7899('0x1c'));_0x5e7b7a+=_0x28fb42[_0x7899('0x15')](_0x7899('0x1c'));return _0x5e7b7a;};
\ No newline at end of file
+var _0xf642=['secret','createCipher','utf8','base64','decryptString','crypto','../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','error','test','getCiphers','filter','indexOf','hasOwnProperty','createReadStream','data','update','binary','write','end','final','close','unlink','createWriteStream','createDecipher','encryptString'];(function(_0x4230d6,_0x509513){var _0xab2f15=function(_0x2701b3){while(--_0x2701b3){_0x4230d6['push'](_0x4230d6['shift']());}};_0xab2f15(++_0x509513);}(_0xf642,0x8d));var _0x2f64=function(_0x99868f,_0xbdb8e7){_0x99868f=_0x99868f-0x0;var _0x27a71b=_0xf642[_0x99868f];return _0x27a71b;};'use strict';var crypto=require(_0x2f64('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require('lodash');var config=require(_0x2f64('0x1'));var logger=require(_0x2f64('0x2'))(_0x2f64('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x2f64('0x4')][_0x2f64('0x5')],'algorithm':_0x2f64('0x6')};const fileOptions={'algorithm':_0x2f64('0x7')};if(config[_0x2f64('0x8')]&&config[_0x2f64('0x8')][_0x2f64('0x9')]){var isSupported=isAlgorithmSupported(config[_0x2f64('0x8')][_0x2f64('0x9')]);if(isSupported){fileOptions[_0x2f64('0x9')]=config[_0x2f64('0x8')][_0x2f64('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x2f64('0xa')](',\x20');logger[_0x2f64('0xb')](config[_0x2f64('0x8')][_0x2f64('0x9')],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x1a4653){return AES_SUPPORTED_RX[_0x2f64('0xc')](_0x1a4653);}function getSupportedCiphers(){return crypto[_0x2f64('0xd')]()[_0x2f64('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x1b56ed){return getSupportedCiphers()[_0x2f64('0xf')](_0x1b56ed)>-0x1;}function combineOptions(_0x1a2307){var _0x25385a={};for(var _0x2842fc in fileOptions){if(fileOptions[_0x2f64('0x10')](_0x2842fc)){_0x25385a[_0x2842fc]=fileOptions[_0x2842fc];}}if(_0x1a2307){for(var _0xae54ab in _0x1a2307){if(_0x1a2307[_0x2f64('0x10')](_0xae54ab)){_0x25385a[_0xae54ab]=_0x1a2307[_0xae54ab];}}}return _0x25385a;}exports['encryptFile']=function(_0x448aba,_0x371992,_0x3f94ab,_0x57ed19){return new BPromise(function(_0x67c505,_0x46a203){_0x57ed19=combineOptions(_0x57ed19);var _0x4cf879=new Buffer(_0x3f94ab);var _0x32f322=fs[_0x2f64('0x11')](_0x448aba);var _0x49dce0=fs['createWriteStream'](_0x371992);var _0x180e0f=crypto['createCipher'](_0x57ed19[_0x2f64('0x9')],_0x4cf879);_0x32f322['on'](_0x2f64('0x12'),function(_0x24e522){var _0x35132e=new Buffer(_0x180e0f[_0x2f64('0x13')](_0x24e522),_0x2f64('0x14'));_0x49dce0[_0x2f64('0x15')](_0x35132e);});_0x32f322['on'](_0x2f64('0x16'),function(){try{var _0x1f494e=new Buffer(_0x180e0f[_0x2f64('0x17')](_0x2f64('0x14')),_0x2f64('0x14'));_0x49dce0[_0x2f64('0x15')](_0x1f494e);_0x49dce0['end']();_0x49dce0['on'](_0x2f64('0x18'),function(){return _0x67c505(_0x371992);});}catch(_0x3821de){fs[_0x2f64('0x19')](_0x371992);return _0x46a203(_0x3821de);}});});};exports['decryptFile']=function(_0x573229,_0x4d733d,_0x23fc04,_0x25f30f){return new BPromise(function(_0x1fca02,_0xe63024){_0x25f30f=combineOptions(_0x25f30f);var _0x2dc666=new Buffer(_0x23fc04);var _0x540df3=fs[_0x2f64('0x11')](_0x573229);var _0x538860=fs[_0x2f64('0x1a')](_0x4d733d);var _0x25245f=crypto[_0x2f64('0x1b')](_0x25f30f['algorithm'],_0x2dc666);_0x540df3['on']('data',function(_0x30ab28){var _0x3ec8fd=new Buffer(_0x25245f['update'](_0x30ab28),'binary');_0x538860['write'](_0x3ec8fd);});_0x540df3['on'](_0x2f64('0x16'),function(){try{var _0x5805c9=new Buffer(_0x25245f[_0x2f64('0x17')](_0x2f64('0x14')),_0x2f64('0x14'));_0x538860[_0x2f64('0x15')](_0x5805c9);_0x538860[_0x2f64('0x16')]();_0x538860['on']('close',function(){return _0x1fca02(_0x4d733d);});}catch(_0x36aa32){fs[_0x2f64('0x19')](_0x4d733d);return _0xe63024(_0x36aa32);}});});};exports[_0x2f64('0x1c')]=function(_0x1369c8,_0x32f676,_0x152ea2){var _0x9d0ec9=_0x152ea2||stringOptions['algorithm'];var _0x470deb=_0x32f676||stringOptions[_0x2f64('0x1d')];var _0x4fa00a=crypto[_0x2f64('0x1e')](_0x9d0ec9,_0x470deb);var _0x34ea8b=_0x4fa00a['update'](_0x1369c8,_0x2f64('0x1f'),'base64');_0x34ea8b+=_0x4fa00a['final'](_0x2f64('0x20'));return _0x34ea8b;};exports[_0x2f64('0x21')]=function(_0x5aa3a7,_0x45260a,_0x1adeed){var _0x263d47=_0x1adeed||stringOptions[_0x2f64('0x9')];var _0x2f7c4f=_0x45260a||stringOptions['secret'];var _0x32425f=crypto[_0x2f64('0x1b')](_0x263d47,_0x2f7c4f);var _0x1c161c=_0x32425f[_0x2f64('0x13')](_0x5aa3a7,_0x2f64('0x20'),'utf8');_0x1c161c+=_0x32425f['final'](_0x2f64('0x1f'));return _0x1c161c;};
\ No newline at end of file
index 31d7c07..158924b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb53=['SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','length','num','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','basename','.csv','existsSync','join','each','%s%d.%s','format','%s.%s','zip','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','Failed','finally','exit','util','path','lodash','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','dbH','argv','AnalyticExtractedReport','update','info','CSV','Setting','split','then','sequelize','query'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbb53,0x121));var _0x3bb5=function(_0x34e461,_0x5c1242){_0x34e461=_0x34e461-0x0;var _0x513dfb=_0xbb53[_0x34e461];return _0x513dfb;};'use strict';var util=require(_0x3bb5('0x0'));var path=require(_0x3bb5('0x1'));var _=require(_0x3bb5('0x2'));var csv=require(_0x3bb5('0x3'));var fs=require('fs');var BPromise=require(_0x3bb5('0x4'));var zipdir=require(_0x3bb5('0x5'));var rimraf=require(_0x3bb5('0x6'));var db=require(_0x3bb5('0x7'))['db'];var dbH=require(_0x3bb5('0x7'))[_0x3bb5('0x8')];var logger=require('../../config/logger')('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x3bb5('0x9')][0x2]);var QUERY=process[_0x3bb5('0x9')][0x3];var PATH=process[_0x3bb5('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x157e04,_0x22f92f){var _0x480f9c={'status':_0x157e04};var _0x5a4ae3={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x22f92f){_0x480f9c['savename']=_0x22f92f;}return db[_0x3bb5('0xa')][_0x3bb5('0xb')](_0x480f9c,_0x5a4ae3);}function main(){var _0x473c1d=0x1388;var _0x56d6e3;logger[_0x3bb5('0xc')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x3bb5('0xd')));return db[_0x3bb5('0xe')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x3bb5('0xf'),'splitSizeCsv']})[_0x3bb5('0x10')](function(_0x511bd8){if(_0x511bd8){_0x56d6e3=_0x511bd8;_0x473c1d=_0x56d6e3['splitSizeCsv']||0x1388;}})[_0x3bb5('0x10')](function(){return dbH[_0x3bb5('0x11')][_0x3bb5('0x12')](util['format'](_0x3bb5('0x13'),QUERY),{'type':dbH[_0x3bb5('0x11')]['QueryTypes'][_0x3bb5('0x14')]});})[_0x3bb5('0x10')](function(_0x5cec77){if(!_0x5cec77[0x0]['num']){return analyticExtractedReport('Empty');}var _0x42ef1b=[];var _0x4693d6=0x0;var _0x5245cc=!![];if(_0x5cec77&&_0x5cec77[_0x3bb5('0x15')]){var _0x476463=_0x5cec77[0x0][_0x3bb5('0x16')]%(_0x4693d6+_0x473c1d);if(_0x56d6e3[_0x3bb5('0xf')]){for(;_0x5245cc;_0x4693d6+=_0x473c1d,_0x476463=_0x5cec77[0x0]['num']%(_0x4693d6+_0x473c1d)){if(_0x476463==0x0||_0x476463==_0x5cec77[0x0][_0x3bb5('0x16')]){_0x5245cc=![];}_0x42ef1b[_0x3bb5('0x17')](dbH[_0x3bb5('0x11')]['query'](util['format'](_0x3bb5('0x18'),QUERY,_0x473c1d,_0x4693d6),{'type':dbH[_0x3bb5('0x11')][_0x3bb5('0x19')]['SELECT']}));}}else{_0x42ef1b[_0x3bb5('0x17')](dbH[_0x3bb5('0x11')][_0x3bb5('0x12')](QUERY,{'type':dbH[_0x3bb5('0x11')][_0x3bb5('0x19')][_0x3bb5('0x14')]}));}}var _0x504c29=path[_0x3bb5('0x1a')](PATH);var _0x3eae85=path[_0x3bb5('0x1b')](PATH,_0x3bb5('0x1c'));var _0x1a55e6=_0x56d6e3[_0x3bb5('0xf')]&&_0x42ef1b[_0x3bb5('0x15')]>0x1;var _0x58c10f=[];if(!fs[_0x3bb5('0x1d')](path[_0x3bb5('0x1e')](_0x504c29,_0x3eae85))&&_0x1a55e6){fs['mkdirSync'](path['join'](_0x504c29,_0x3eae85));}return BPromise[_0x3bb5('0x1f')](_0x42ef1b,function(_0x36cfda){_0x58c10f['push'](_0x36cfda);})['then'](function(){for(var _0x477d1f=0x0;_0x477d1f<_0x58c10f[_0x3bb5('0x15')];_0x477d1f+=0x1){var _0x2fc543;var _0xc1c149=_0x58c10f[_0x477d1f];if(_0x1a55e6){_0x2fc543=path['join'](_0x504c29,_0x3eae85,util['format'](_0x3bb5('0x20'),_0x3eae85,_0x477d1f,'csv'));}else{_0x2fc543=path[_0x3bb5('0x1e')](_0x504c29,util[_0x3bb5('0x21')](_0x3bb5('0x22'),_0x3eae85,'csv'));}fs['writeFileSync'](_0x2fc543,csv(_0xc1c149));}})[_0x3bb5('0x10')](function(){if(_0x1a55e6){zipdir(path[_0x3bb5('0x1e')](_0x504c29,_0x3eae85),{'saveTo':path[_0x3bb5('0x1e')](_0x504c29,util[_0x3bb5('0x21')](_0x3bb5('0x22'),_0x3eae85,_0x3bb5('0x23')))},function(_0x3ed2cc,_0x5ce225){});rimraf(path[_0x3bb5('0x1e')](_0x504c29,_0x3eae85),function(){});}})[_0x3bb5('0x10')](function(){logger[_0x3bb5('0xc')](util[_0x3bb5('0x21')](_0x3bb5('0x24'),EXTRACTED_REPORT_ID,_0x3bb5('0xd')));return analyticExtractedReport(_0x3bb5('0x25'),_0x1a55e6?util['format'](_0x3bb5('0x22'),_0x3eae85,_0x1a55e6?_0x3bb5('0x23'):'csv'):null);});})[_0x3bb5('0x26')](function(_0x1fa29d){logger[_0x3bb5('0xc')](util[_0x3bb5('0x21')](_0x3bb5('0x27'),EXTRACTED_REPORT_ID,'CSV'),util[_0x3bb5('0x28')](_0x1fa29d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x3bb5('0x29'));})[_0x3bb5('0x2a')](function(){process[_0x3bb5('0x2b')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x942c=['sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','range','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','length','join','each','%s%d.%s','csv','%s.%s','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','path','lodash','to-csv','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','CSV','Setting','find','split','splitSizeCsv','then'];(function(_0x3c3d01,_0x28c2c4){var _0x44d005=function(_0x20e708){while(--_0x20e708){_0x3c3d01['push'](_0x3c3d01['shift']());}};_0x44d005(++_0x28c2c4);}(_0x942c,0x1db));var _0xc942=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x942c[_0x14add3];return _0x4a174f;};'use strict';var util=require('util');var path=require(_0xc942('0x0'));var _=require(_0xc942('0x1'));var csv=require(_0xc942('0x2'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0xc942('0x3'));var rimraf=require(_0xc942('0x4'));var db=require(_0xc942('0x5'))['db'];var dbH=require(_0xc942('0x5'))['dbH'];var logger=require(_0xc942('0x6'))(_0xc942('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0xc942('0x8')][0x2]);var QUERY=process[_0xc942('0x8')][0x3];var PATH=process[_0xc942('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x40e4d5,_0x4df419){var _0xd87e71={'status':_0x40e4d5};var _0x29e1ad={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4df419){_0xd87e71[_0xc942('0x9')]=_0x4df419;}return db[_0xc942('0xa')][_0xc942('0xb')](_0xd87e71,_0x29e1ad);}function main(){var _0x19c2b2=0x1388;var _0x5dbcfa;logger[_0xc942('0xc')](util[_0xc942('0xd')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xc942('0xe')));return db[_0xc942('0xf')][_0xc942('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xc942('0x11'),'splitSizeCsv']})['then'](function(_0x8d12e4){if(_0x8d12e4){_0x5dbcfa=_0x8d12e4;_0x19c2b2=_0x5dbcfa[_0xc942('0x12')]||0x1388;}})[_0xc942('0x13')](function(){return dbH[_0xc942('0x14')][_0xc942('0x15')](util['format'](_0xc942('0x16'),QUERY),{'type':dbH['sequelize'][_0xc942('0x17')][_0xc942('0x18')]});})[_0xc942('0x13')](function(_0x25a9ea){if(!_0x25a9ea[0x0][_0xc942('0x19')]){return analyticExtractedReport(_0xc942('0x1a'));}var _0x4ae940=[];var _0x5eb185=0x0;if(_0x5dbcfa['split']){if(_0x25a9ea&&_0x25a9ea['length']){var _0x2c9650=_[_0xc942('0x1b')](_0x25a9ea[0x0]['num']/_0x19c2b2);var _0x3341a8=Number['isInteger'](_0x25a9ea[0x0]['num']/_0x19c2b2)?_0x25a9ea[0x0][_0xc942('0x19')]%_0x19c2b2:0x0;_0x2c9650['forEach'](function(_0x5214ec){if(_0x5214ec>0x0){_0x5eb185+=_0x19c2b2;}_0x4ae940['push'](dbH[_0xc942('0x14')][_0xc942('0x15')](util[_0xc942('0xd')](_0xc942('0x1c'),QUERY,_0x19c2b2,_0x5eb185),{'type':dbH[_0xc942('0x14')][_0xc942('0x17')]['SELECT']}));});if(_0x3341a8>0x0){_0x5eb185+=_0x19c2b2;_0x4ae940['push'](dbH['sequelize'][_0xc942('0x15')](util[_0xc942('0xd')](_0xc942('0x1c'),QUERY,_0x3341a8,_0x5eb185),{'type':dbH[_0xc942('0x14')][_0xc942('0x17')][_0xc942('0x18')]}));}}}else{_0x4ae940[_0xc942('0x1d')](dbH[_0xc942('0x14')][_0xc942('0x15')](QUERY,{'type':dbH[_0xc942('0x14')][_0xc942('0x17')]['SELECT']}));}var _0x1c8f86=path[_0xc942('0x1e')](PATH);var _0x5dad94=path[_0xc942('0x1f')](PATH,'.csv');var _0x304d38=_0x5dbcfa[_0xc942('0x11')]&&_0x4ae940[_0xc942('0x20')]>0x1;var _0x275fc9=[];if(!fs['existsSync'](path[_0xc942('0x21')](_0x1c8f86,_0x5dad94))&&_0x304d38){fs['mkdirSync'](path[_0xc942('0x21')](_0x1c8f86,_0x5dad94));}return BPromise[_0xc942('0x22')](_0x4ae940,function(_0x3ca7c5){_0x275fc9[_0xc942('0x1d')](_0x3ca7c5);})['then'](function(){for(var _0x135e95=0x0;_0x135e95<_0x275fc9[_0xc942('0x20')];_0x135e95+=0x1){var _0x389a07;var _0x7da161=_0x275fc9[_0x135e95];if(_0x304d38){_0x389a07=path[_0xc942('0x21')](_0x1c8f86,_0x5dad94,util[_0xc942('0xd')](_0xc942('0x23'),_0x5dad94,_0x135e95,_0xc942('0x24')));}else{_0x389a07=path[_0xc942('0x21')](_0x1c8f86,util[_0xc942('0xd')]('%s.%s',_0x5dad94,_0xc942('0x24')));}fs['writeFileSync'](_0x389a07,csv(_0x7da161));}})['then'](function(){if(_0x304d38){return new Promise(function(_0x477947){zipdir(path[_0xc942('0x21')](_0x1c8f86,_0x5dad94),{'saveTo':path['join'](_0x1c8f86,util[_0xc942('0xd')](_0xc942('0x25'),_0x5dad94,'zip'))},function(_0x38257a,_0x53d4f7){rimraf(path['join'](_0x1c8f86,_0x5dad94),function(){});_0x477947('zip\x20finished');});});}})[_0xc942('0x13')](function(){logger['info'](util[_0xc942('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xc942('0xe')));return analyticExtractedReport('Completed',_0x304d38?util['format'](_0xc942('0x25'),_0x5dad94,_0x304d38?_0xc942('0x26'):_0xc942('0x24')):null);});})[_0xc942('0x27')](function(_0x54a2e2){logger[_0xc942('0xc')](util[_0xc942('0xd')](_0xc942('0x28'),EXTRACTED_REPORT_ID,'CSV'),util[_0xc942('0x29')](_0x54a2e2,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xc942('0x2a'));})[_0xc942('0x2b')](function(){process[_0xc942('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
index a308679..56a48e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e29=['Empty','dirname','basename','%s.%s','pdf','Setting','find','split','splitSizePdf','then','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','existsSync','join','mkdirSync','flatten','%s%d.%s','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','inspect','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','channel','center','Interaction\x20Transcript','createWriteStream','finish','end','createPdfFromHTML','createPdfKitDocument','path','lodash','moment','html-to-pdfmake','zip-dir','rimraf','jsdom','JSDOM','window','../../mysqldb','dbH','analytics','argv','savename','AnalyticExtractedReport','update','map','pick','toString','fill','length','auto','body','push','concat','chunk','keys','forEach','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','format','endDate','header','pageBreak','margin','landscape','\x20/\x20','footer','Arial','num'];(function(_0x50d0a5,_0x3ece14){var _0x16a49c=function(_0x5857fb){while(--_0x5857fb){_0x50d0a5['push'](_0x50d0a5['shift']());}};_0x16a49c(++_0x3ece14);}(_0x8e29,0x1ca));var _0x98e2=function(_0x5d2b83,_0x3c54b8){_0x5d2b83=_0x5d2b83-0x0;var _0x34b99f=_0x8e29[_0x5d2b83];return _0x34b99f;};'use strict';var _=require(_0x98e2('0x0'));var fs=require('fs');var util=require('util');var path=require('path');var moment=require(_0x98e2('0x1'));var htmlToPdfmake=require(_0x98e2('0x2'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0x98e2('0x3'));var rimraf=require(_0x98e2('0x4'));var JSDOM=require(_0x98e2('0x5'))[_0x98e2('0x6')];var window=new JSDOM('')[_0x98e2('0x7')];var db=require(_0x98e2('0x8'))['db'];var dbH=require(_0x98e2('0x8'))[_0x98e2('0x9')];var logger=require('../../config/logger')(_0x98e2('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x98e2('0xb')][0x2]);var QUERY=process[_0x98e2('0xb')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x98e2('0xb')][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x153d60,_0x232a22){var _0x5a6909={'status':_0x153d60};var _0x39a6e8={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x232a22){_0x5a6909[_0x98e2('0xc')]=_0x232a22;}return db[_0x98e2('0xd')][_0x98e2('0xe')](_0x5a6909,_0x39a6e8);}function getHeaders(_0x12a99b){return _[_0x98e2('0xf')](_0x12a99b,function(_0x4928a5){return{'text':_0x4928a5,'style':'tableHeader'};});}function getRows(_0x529193,_0x2e0def){return _[_0x98e2('0xf')](_0x2e0def,function(_0x1bfc3f){return _(_0x1bfc3f)[_0x98e2('0x10')](_0x529193)[_0x98e2('0xf')](function(_0x141025){return _0x141025?_[_0x98e2('0x11')](_0x141025):'';})['value']();});}function createTable(_0x5df68c,_0x3db46f){var _0x26e899={'widths':_[_0x98e2('0x12')](Array(_0x5df68c[_0x98e2('0x13')]),0x91),'heights':function(_0x56b793){return _0x56b793===0x0?_0x98e2('0x14'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x1dbf1e=getHeaders(_0x5df68c);_0x26e899[_0x98e2('0x15')][_0x98e2('0x16')](_0x1dbf1e);var _0x527add=getRows(_0x5df68c,_0x3db46f);_0x26e899[_0x98e2('0x15')]=_0x26e899['body'][_0x98e2('0x17')](_0x527add);return _0x26e899;}function createTables(_0x11c115){var _0x29a8ed=[];var _0x2046b1=_[_0x98e2('0x18')](Object[_0x98e2('0x19')](_0x11c115[0x0]),0x5);_0x2046b1[_0x98e2('0x1a')](function(_0x355f39){_0x29a8ed[_0x98e2('0x16')](createTable(_0x355f39,_0x11c115));});return _0x29a8ed;}function getPDFDocDefinition(_0x3cd64e){var _0x3dbe9d=util['format'](_0x98e2('0x1b'),NAME,EXTRACTED_REPORT[_0x98e2('0x1c')],moment(EXTRACTED_REPORT[_0x98e2('0x1d')])[_0x98e2('0x1e')](FORMAT),moment(EXTRACTED_REPORT[_0x98e2('0x1f')])[_0x98e2('0x1e')](FORMAT));var _0x2859ba=[];for(var _0x29cd5c=0x0;_0x29cd5c<_0x3cd64e[_0x98e2('0x13')];_0x29cd5c++){var _0x2066bf=[];if(_0x29cd5c===0x0){_0x2066bf[_0x98e2('0x16')]({'text':_0x3dbe9d,'style':_0x98e2('0x20')});}var _0x10dd5b={'table':_0x3cd64e[_0x29cd5c]};if(_0x29cd5c>0x0){_0x10dd5b[_0x98e2('0x21')]='before';_0x10dd5b[_0x98e2('0x22')]=[0x0,0x46,0x0,0x0];}_0x2066bf[_0x98e2('0x16')](_0x10dd5b);_0x2859ba[_0x98e2('0x16')](_0x2066bf);}return{'pageSize':'A4','pageOrientation':_0x98e2('0x23'),'content':_0x2859ba,'footer':function(_0x4dd830,_0x2f9699){return{'text':_0x4dd830[_0x98e2('0x11')]()+_0x98e2('0x24')+_0x2f9699,'style':_0x98e2('0x25')};},'defaultStyle':{'font':_0x98e2('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0xa7389d){var _0x1938b4=0x1388;var _0x49a5ea;if(!_0xa7389d[0x0][_0x98e2('0x27')]){return analyticExtractedReport(_0x98e2('0x28'));}var _0x42d8b3=[];var _0x14f0e7=0x0;var _0x43f810=!![];var _0x433232=path[_0x98e2('0x29')](PATH);var _0x3ba76b=path[_0x98e2('0x2a')](PATH,'.pdf');var _0x33f7dd=path['join'](_0x433232,util[_0x98e2('0x1e')](_0x98e2('0x2b'),_0x3ba76b,_0x98e2('0x2c')));var _0x22587b=![];return db[_0x98e2('0x2d')][_0x98e2('0x2e')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x98e2('0x2f'),_0x98e2('0x30')]})[_0x98e2('0x31')](function(_0x1418c6){if(_0x1418c6){_0x49a5ea=_0x1418c6;_0x1938b4=_0x49a5ea[_0x98e2('0x30')]||0x3e8;}})[_0x98e2('0x31')](function(){if(_0xa7389d&&_0xa7389d[_0x98e2('0x13')]){var _0x215548=_0xa7389d[0x0]['num']%(_0x14f0e7+_0x1938b4);if(_0x49a5ea['split']){for(;_0x43f810;_0x14f0e7+=_0x1938b4,_0x215548=_0xa7389d[0x0]['num']%(_0x14f0e7+_0x1938b4)){if(_0x215548==0x0||_0x215548==_0xa7389d[0x0]['num']){_0x43f810=![];}_0x42d8b3[_0x98e2('0x16')](dbH['sequelize'][_0x98e2('0x32')](util[_0x98e2('0x1e')](_0x98e2('0x33'),QUERY,_0x1938b4,_0x14f0e7),{'type':dbH[_0x98e2('0x34')][_0x98e2('0x35')][_0x98e2('0x36')]}));}}else{_0x42d8b3[_0x98e2('0x16')](dbH['sequelize'][_0x98e2('0x32')](QUERY,{'type':dbH[_0x98e2('0x34')][_0x98e2('0x35')]['SELECT']}));}}_0x22587b=_0x49a5ea[_0x98e2('0x2f')]&&_0x42d8b3[_0x98e2('0x13')]>0x1;if(!fs[_0x98e2('0x37')](path[_0x98e2('0x38')](_0x433232,_0x3ba76b))&&_0x22587b){fs[_0x98e2('0x39')](path[_0x98e2('0x38')](_0x433232,_0x3ba76b));}return Promise['all'](_0x42d8b3);})[_0x98e2('0x31')](function(_0x1cced9){return createTables(_[_0x98e2('0x3a')](_0x1cced9));})['then'](function(_0x284cce){var _0x22d76f=getPDFDocDefinition(_0x284cce);var _0x156836=getPDFPrinter();var _0x4de588=_0x156836['createPdfKitDocument'](_0x22d76f);if(_0x22587b)_0x33f7dd=path[_0x98e2('0x38')](_0x433232,_0x3ba76b,util[_0x98e2('0x1e')](_0x98e2('0x3b'),_0x3ba76b,index,'pdf'));return writePDFDocument(_0x4de588,_0x33f7dd);})[_0x98e2('0x31')](function(){if(!_0x22587b)return;zipdir(path['join'](_0x433232,_0x3ba76b),{'saveTo':path[_0x98e2('0x38')](_0x433232,util[_0x98e2('0x1e')](_0x98e2('0x2b'),_0x3ba76b,_0x98e2('0x3c')))},function(_0x8e2cd5){if(_0x8e2cd5)throw _0x8e2cd5;return;});})[_0x98e2('0x31')](function(){if(!_0x22587b)return;rimraf(path[_0x98e2('0x38')](_0x433232,_0x3ba76b),function(){});})[_0x98e2('0x31')](function(){logger[_0x98e2('0x3d')](util['format'](_0x98e2('0x3e'),EXTRACTED_REPORT_ID,_0x98e2('0x3f')));return analyticExtractedReport('Completed',_0x22587b?util[_0x98e2('0x1e')](_0x98e2('0x2b'),_0x3ba76b,_0x22587b?_0x98e2('0x3c'):_0x98e2('0x2c')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x98e2('0x3d')](util[_0x98e2('0x1e')](_0x98e2('0x40'),EXTRACTED_REPORT_ID,'PDF'));return db[_0x98e2('0xd')][_0x98e2('0x41')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x98e2('0x31')](function(_0x5588c3){EXTRACTED_REPORT=_0x5588c3;return dbH[_0x98e2('0x34')][_0x98e2('0x32')](util[_0x98e2('0x1e')](_0x98e2('0x42'),QUERY),{'type':dbH[_0x98e2('0x34')]['QueryTypes']['SELECT']});})[_0x98e2('0x31')](extractReport)[_0x98e2('0x43')](function(_0x5e6245){logger[_0x98e2('0x3d')](util[_0x98e2('0x1e')](_0x98e2('0x44'),EXTRACTED_REPORT_ID,_0x98e2('0x45')),util[_0x98e2('0x46')](_0x5e6245,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x494d4e=new PdfPrinter({'Arial':{'normal':__dirname+_0x98e2('0x47'),'bold':__dirname+_0x98e2('0x48'),'italics':__dirname+_0x98e2('0x49'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x494d4e;}function getPDFDocDefinitionFromHTML(_0x4465dc,_0x1e3de6){var _0x6c2738=util['format']('%s\x20#%d',_0x1e3de6[_0x98e2('0x4a')],_0x1e3de6['interactionId']);var _0x33ba57=moment()[_0x98e2('0x1e')]('YYYY-MM-DD')['toString']();var _0x26f975=htmlToPdfmake(_0x4465dc,{'window':window,'tableAutoSize':!![]});return{'content':[_0x26f975],'defaultStyle':{'font':_0x98e2('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x98e2('0x4b'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x98e2('0x4b'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x98e2('0x4c'),'style':_0x98e2('0x20')}];},'footer':function(_0x21ca8f,_0x546ef8){return[{'text':util[_0x98e2('0x1e')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x6c2738,_0x21ca8f,_0x546ef8,_0x33ba57),'style':_0x98e2('0x25')}];}};}function writePDFDocument(_0x5edbc1,_0x1108ac){return new Promise(function(_0x5053a3,_0x441b1d){var _0x4305f5=_0x5edbc1['pipe'](fs[_0x98e2('0x4d')](_0x1108ac));_0x4305f5['on']('finish',function(){_0x5053a3(_0x98e2('0x4e'));});_0x4305f5['on']('error',function(_0x5f5a2a){_0x441b1d(_0x5f5a2a);});_0x5edbc1[_0x98e2('0x4f')]();});}exports[_0x98e2('0x50')]=function(_0x5e7239,_0x3f4a4a){var _0x154833=getPDFPrinter();var _0x147e69=getPDFDocDefinitionFromHTML(_0x5e7239,_0x3f4a4a);var _0x16c342=_0x154833[_0x98e2('0x51')](_0x147e69);return writePDFDocument(_0x16c342,_0x3f4a4a[_0x98e2('0x52')])[_0x98e2('0x43')](function(_0x188605){throw _0x188605;});};
\ No newline at end of file
+var _0xb4fe=['channel','interactionId','YYYY-MM-DD','center','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util','path','moment','html-to-pdfmake','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','pick','value','fill','length','body','concat','keys','forEach','push','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','header','pageBreak','before','margin','footer','Arial','black','right','Empty','Setting','find','split','splitSizePdf','then','range','num','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','existsSync','join','mkdirSync','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d'];(function(_0x5ea42a,_0xb149c6){var _0x48abb7=function(_0x51de91){while(--_0x51de91){_0x5ea42a['push'](_0x5ea42a['shift']());}};_0x48abb7(++_0xb149c6);}(_0xb4fe,0xc4));var _0xeb4f=function(_0x49289e,_0x361050){_0x49289e=_0x49289e-0x0;var _0x117adb=_0xb4fe[_0x49289e];return _0x117adb;};'use strict';var _=require(_0xeb4f('0x0'));var fs=require('fs');var util=require(_0xeb4f('0x1'));var path=require(_0xeb4f('0x2'));var moment=require(_0xeb4f('0x3'));var htmlToPdfmake=require(_0xeb4f('0x4'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0xeb4f('0x5'));var rimraf=require(_0xeb4f('0x6'));var JSDOM=require(_0xeb4f('0x7'))[_0xeb4f('0x8')];var window=new JSDOM('')[_0xeb4f('0x9')];var BPromise=require(_0xeb4f('0xa'));var db=require(_0xeb4f('0xb'))['db'];var dbH=require(_0xeb4f('0xb'))[_0xeb4f('0xc')];var logger=require(_0xeb4f('0xd'))(_0xeb4f('0xe'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xeb4f('0xf')][0x3];var PATH=process[_0xeb4f('0xf')][0x4];var NAME=process[_0xeb4f('0xf')][0x5];var FORMAT=_0xeb4f('0x10');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0xc1728c,_0x337f5f){var _0x2fe90c={'status':_0xc1728c};var _0xb38f3={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x337f5f){_0x2fe90c[_0xeb4f('0x11')]=_0x337f5f;}return db[_0xeb4f('0x12')][_0xeb4f('0x13')](_0x2fe90c,_0xb38f3);}function getHeaders(_0x1377d9){return _[_0xeb4f('0x14')](_0x1377d9,function(_0x46a23a){return{'text':_0x46a23a,'style':_0xeb4f('0x15')};});}function getRows(_0x2be909,_0x59fa94){return _[_0xeb4f('0x14')](_0x59fa94,function(_0x4c2e7e){return _(_0x4c2e7e)[_0xeb4f('0x16')](_0x2be909)[_0xeb4f('0x14')](function(_0x34bea2){return _0x34bea2?_['toString'](_0x34bea2):'';})[_0xeb4f('0x17')]();});}function createTable(_0xdb61a1,_0x28b74a){var _0x256fae={'widths':_[_0xeb4f('0x18')](Array(_0xdb61a1[_0xeb4f('0x19')]),0x91),'heights':function(_0x4f9f66){return _0x4f9f66===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x1bf74a=getHeaders(_0xdb61a1);_0x256fae[_0xeb4f('0x1a')]['push'](_0x1bf74a);var _0x6aa319=getRows(_0xdb61a1,_0x28b74a);_0x256fae[_0xeb4f('0x1a')]=_0x256fae[_0xeb4f('0x1a')][_0xeb4f('0x1b')](_0x6aa319);return _0x256fae;}function createTables(_0x27e015){var _0x274aab=[];var _0x3a41f4=_['chunk'](Object[_0xeb4f('0x1c')](_0x27e015[0x0]),0x5);_0x3a41f4[_0xeb4f('0x1d')](function(_0x3d11d8){_0x274aab[_0xeb4f('0x1e')](createTable(_0x3d11d8,_0x27e015));});return _0x274aab;}function getPDFDocDefinition(_0x3f8d09){var _0x173068=util[_0xeb4f('0x1f')](_0xeb4f('0x20'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0xeb4f('0x21')])[_0xeb4f('0x1f')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0xeb4f('0x1f')](FORMAT));var _0x52ad5b=[];for(var _0x13dba7=0x0;_0x13dba7<_0x3f8d09['length'];_0x13dba7++){var _0x14d2f0=[];if(_0x13dba7===0x0){_0x14d2f0[_0xeb4f('0x1e')]({'text':_0x173068,'style':_0xeb4f('0x22')});}var _0x21ee09={'table':_0x3f8d09[_0x13dba7]};if(_0x13dba7>0x0){_0x21ee09[_0xeb4f('0x23')]=_0xeb4f('0x24');_0x21ee09[_0xeb4f('0x25')]=[0x0,0x46,0x0,0x0];}_0x14d2f0[_0xeb4f('0x1e')](_0x21ee09);_0x52ad5b[_0xeb4f('0x1e')](_0x14d2f0);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x52ad5b,'footer':function(_0x43dd01,_0x5708a9){return{'text':_0x43dd01['toString']()+'\x20/\x20'+_0x5708a9,'style':_0xeb4f('0x26')};},'defaultStyle':{'font':_0xeb4f('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xeb4f('0x28')},'footer':{'alignment':_0xeb4f('0x29'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x530f77){var _0x47ed26=0x1388;var _0x54b9ac;if(!_0x530f77[0x0]['num']){return analyticExtractedReport(_0xeb4f('0x2a'));}return db[_0xeb4f('0x2b')][_0xeb4f('0x2c')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xeb4f('0x2d'),_0xeb4f('0x2e')]})[_0xeb4f('0x2f')](function(_0x4deb23){if(_0x4deb23){_0x54b9ac=_0x4deb23;_0x47ed26=_0x54b9ac['splitSizePdf']||0x3e8;}})[_0xeb4f('0x2f')](function(){var _0x3a272e=[];var _0x90f06f=0x0;if(_0x54b9ac[_0xeb4f('0x2d')]){if(_0x530f77&&_0x530f77[_0xeb4f('0x19')]){var _0x279e41=_[_0xeb4f('0x30')](_0x530f77[0x0][_0xeb4f('0x31')]/_0x47ed26);var _0x29f2e5=Number[_0xeb4f('0x32')](_0x530f77[0x0][_0xeb4f('0x31')]/_0x47ed26)?_0x530f77[0x0][_0xeb4f('0x31')]%_0x47ed26:0x0;_0x279e41[_0xeb4f('0x1d')](function(_0x498677){if(_0x498677>0x0){_0x90f06f+=_0x47ed26;}_0x3a272e[_0xeb4f('0x1e')](dbH[_0xeb4f('0x33')][_0xeb4f('0x34')](util[_0xeb4f('0x1f')](_0xeb4f('0x35'),QUERY,_0x47ed26,_0x90f06f),{'type':dbH[_0xeb4f('0x33')][_0xeb4f('0x36')]['SELECT']}));});if(_0x29f2e5>0x0){_0x90f06f+=_0x47ed26;_0x3a272e[_0xeb4f('0x1e')](dbH[_0xeb4f('0x33')][_0xeb4f('0x34')](util['format'](_0xeb4f('0x35'),QUERY,_0x29f2e5,_0x90f06f),{'type':dbH[_0xeb4f('0x33')][_0xeb4f('0x36')][_0xeb4f('0x37')]}));}}}else{_0x3a272e[_0xeb4f('0x1e')](dbH[_0xeb4f('0x33')][_0xeb4f('0x34')](QUERY,{'type':dbH['sequelize'][_0xeb4f('0x36')][_0xeb4f('0x37')]}));}var _0x134fcf=path[_0xeb4f('0x38')](PATH);var _0x3c68a1=path[_0xeb4f('0x39')](PATH,'.pdf');var _0x543bbb=_0x54b9ac[_0xeb4f('0x2d')]&&_0x3a272e[_0xeb4f('0x19')]>0x1;var _0xe6ad8d=[];if(!fs[_0xeb4f('0x3a')](path[_0xeb4f('0x3b')](_0x134fcf,_0x3c68a1))&&_0x543bbb){fs[_0xeb4f('0x3c')](path[_0xeb4f('0x3b')](_0x134fcf,_0x3c68a1));}return BPromise['each'](_0x3a272e,function(_0x5b0b6a){_0xe6ad8d[_0xeb4f('0x1e')](_0x5b0b6a);})[_0xeb4f('0x2f')](function(){var _0x563681=[];for(var _0x1c18e6=0x0;_0x1c18e6<_0xe6ad8d[_0xeb4f('0x19')];_0x1c18e6+=0x1){var _0x1fcbd6=_0xe6ad8d[_0x1c18e6];var _0x57ee96=createTables(_[_0xeb4f('0x3d')](_0x1fcbd6));var _0x2b04ea;var _0x5da402=getPDFDocDefinition(_0x57ee96);var _0x26ca35=getPDFPrinter();var _0x3a0166=_0x26ca35[_0xeb4f('0x3e')](_0x5da402);if(_0x543bbb){_0x2b04ea=path[_0xeb4f('0x3b')](_0x134fcf,_0x3c68a1,util[_0xeb4f('0x1f')](_0xeb4f('0x3f'),_0x3c68a1,_0x1c18e6,_0xeb4f('0x40')));}else{_0x2b04ea=path[_0xeb4f('0x3b')](_0x134fcf,util['format'](_0xeb4f('0x41'),_0x3c68a1,_0xeb4f('0x40')));}_0x563681[_0xeb4f('0x1e')](writePDFDocument(_0x3a0166,_0x2b04ea));}return Promise[_0xeb4f('0x42')](_0x563681);})['then'](function(){if(_0x543bbb){return new Promise(function(_0x5ecc38){zipdir(path[_0xeb4f('0x3b')](_0x134fcf,_0x3c68a1),{'saveTo':path['join'](_0x134fcf,util[_0xeb4f('0x1f')](_0xeb4f('0x41'),_0x3c68a1,_0xeb4f('0x43')))},function(){rimraf(path[_0xeb4f('0x3b')](_0x134fcf,_0x3c68a1),function(){});_0x5ecc38(_0xeb4f('0x44'));});});}})[_0xeb4f('0x2f')](function(){if(!_0x543bbb)return;rimraf(path[_0xeb4f('0x3b')](_0x134fcf,_0x3c68a1),function(){});})['then'](function(){logger[_0xeb4f('0x45')](util['format'](_0xeb4f('0x46'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport('Completed',_0x543bbb?util['format'](_0xeb4f('0x41'),_0x3c68a1,_0x543bbb?_0xeb4f('0x43'):_0xeb4f('0x40')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xeb4f('0x45')](util[_0xeb4f('0x1f')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xeb4f('0x47')));return db['AnalyticExtractedReport'][_0xeb4f('0x48')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xeb4f('0x2f')](function(_0x5e7861){EXTRACTED_REPORT=_0x5e7861;return dbH[_0xeb4f('0x33')]['query'](util[_0xeb4f('0x1f')](_0xeb4f('0x49'),QUERY),{'type':dbH['sequelize'][_0xeb4f('0x36')][_0xeb4f('0x37')]});})['then'](extractReport)[_0xeb4f('0x4a')](function(_0x2e4574){logger[_0xeb4f('0x45')](util[_0xeb4f('0x1f')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xeb4f('0x47')),util[_0xeb4f('0x4b')](_0x2e4574,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xeb4f('0x4c'));})[_0xeb4f('0x4d')](function(){process[_0xeb4f('0x4e')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x4496ce=new PdfPrinter({'Arial':{'normal':__dirname+_0xeb4f('0x4f'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+_0xeb4f('0x50'),'bolditalics':__dirname+_0xeb4f('0x51')}});return _0x4496ce;}function getPDFDocDefinitionFromHTML(_0x5522e9,_0x3c86ce){var _0x2a5945=util[_0xeb4f('0x1f')](_0xeb4f('0x52'),_0x3c86ce[_0xeb4f('0x53')],_0x3c86ce[_0xeb4f('0x54')]);var _0x4f63c2=moment()[_0xeb4f('0x1f')](_0xeb4f('0x55'))['toString']();var _0x78cfd8=htmlToPdfmake(_0x5522e9,{'window':window,'tableAutoSize':!![]});return{'content':[_0x78cfd8],'defaultStyle':{'font':_0xeb4f('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xeb4f('0x56'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xeb4f('0x56')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0xeb4f('0x22')}];},'footer':function(_0x17097d,_0x32208a){return[{'text':util[_0xeb4f('0x1f')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x2a5945,_0x17097d,_0x32208a,_0x4f63c2),'style':_0xeb4f('0x26')}];}};}function writePDFDocument(_0x427a1a,_0x3b8602){return new Promise(function(_0x171e50,_0x4b4b15){var _0x4bc8c3=_0x427a1a[_0xeb4f('0x57')](fs[_0xeb4f('0x58')](_0x3b8602));_0x4bc8c3['on'](_0xeb4f('0x59'),function(){_0x171e50(_0xeb4f('0x59'));});_0x4bc8c3['on'](_0xeb4f('0x5a'),function(_0x330c4e){_0x4b4b15(_0x330c4e);});_0x427a1a[_0xeb4f('0x5b')]();});}exports[_0xeb4f('0x5c')]=function(_0x27e7db,_0x559673){var _0x30184c=getPDFPrinter();var _0x237d89=getPDFDocDefinitionFromHTML(_0x27e7db,_0x559673);var _0x3a41b1=_0x30184c[_0xeb4f('0x3e')](_0x237d89);return writePDFDocument(_0x3a41b1,_0x559673[_0xeb4f('0x2')])[_0xeb4f('0x4a')](function(_0x4a715a){throw _0x4a715a;});};
\ No newline at end of file
index 6ca33dc..f49ef76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79ac=['writeFileSync','binary','zip','info','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','util','path','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','find','split','splitSizeXlsx','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','then','num','Empty','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','.xlsx','length','existsSync','join','mkdirSync','%s%d.%s','xlsx','%s.%s'];(function(_0x19efbc,_0x10b7d7){var _0x205c5e=function(_0x49daa4){while(--_0x49daa4){_0x19efbc['push'](_0x19efbc['shift']());}};_0x205c5e(++_0x10b7d7);}(_0x79ac,0xee));var _0xc79a=function(_0x170d7c,_0x54031f){_0x170d7c=_0x170d7c-0x0;var _0x1c0e57=_0x79ac[_0x170d7c];return _0x1c0e57;};'use strict';var util=require(_0xc79a('0x0'));var path=require(_0xc79a('0x1'));var _=require(_0xc79a('0x2'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0xc79a('0x3'));var zipdir=require(_0xc79a('0x4'));var rimraf=require(_0xc79a('0x5'));var db=require('../../mysqldb')['db'];var dbH=require(_0xc79a('0x6'))[_0xc79a('0x7')];var logger=require(_0xc79a('0x8'))(_0xc79a('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0xc79a('0xa')][0x2]);var QUERY=process[_0xc79a('0xa')][0x3];var PATH=process[_0xc79a('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x146300,_0x219918){var _0x4368e7={'status':_0x146300};var _0x38d86b={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x219918){_0x4368e7['savename']=_0x219918;}return db['AnalyticExtractedReport'][_0xc79a('0xb')](_0x4368e7,_0x38d86b);}function main(){var _0x5d11b3=0x1388;var _0x1eb3d9;logger['info'](util[_0xc79a('0xc')](_0xc79a('0xd'),EXTRACTED_REPORT_ID,_0xc79a('0xe')));return db['Setting'][_0xc79a('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xc79a('0x10'),'splitSizeXlsx']})['then'](function(_0x59a90f){if(_0x59a90f){_0x1eb3d9=_0x59a90f;_0x5d11b3=_0x1eb3d9[_0xc79a('0x11')]||0x1388;}})['then'](function(){return dbH[_0xc79a('0x12')][_0xc79a('0x13')](util[_0xc79a('0xc')](_0xc79a('0x14'),QUERY),{'type':dbH['sequelize'][_0xc79a('0x15')]['SELECT']});})[_0xc79a('0x16')](function(_0x45f78a){if(!_0x45f78a[0x0][_0xc79a('0x17')]){return analyticExtractedReport(_0xc79a('0x18'));}var _0x4b7127=[];var _0x5033b1=0x0;var _0xb657e2=!![];if(_0x1eb3d9[_0xc79a('0x10')]){if(_0x45f78a&&_0x45f78a['length']){var _0x2a7039=_0x45f78a[0x0][_0xc79a('0x17')]%(_0x5033b1+_0x5d11b3);for(;_0xb657e2;_0x5033b1+=_0x5d11b3,_0x2a7039=_0x45f78a[0x0][_0xc79a('0x17')]%(_0x5033b1+_0x5d11b3)){if(_0x2a7039==0x0||_0x2a7039==_0x45f78a[0x0][_0xc79a('0x17')]){_0xb657e2=![];}_0x4b7127[_0xc79a('0x19')](dbH['sequelize']['query'](util[_0xc79a('0xc')](_0xc79a('0x1a'),QUERY,_0x5d11b3,_0x5033b1),{'type':dbH[_0xc79a('0x12')][_0xc79a('0x15')][_0xc79a('0x1b')]}));}}}else{_0x4b7127[_0xc79a('0x19')](dbH[_0xc79a('0x12')][_0xc79a('0x13')](QUERY,{'type':dbH[_0xc79a('0x12')][_0xc79a('0x15')]['SELECT']}));}var _0x2c316a=path[_0xc79a('0x1c')](PATH);var _0x7c6aec=path[_0xc79a('0x1d')](PATH,_0xc79a('0x1e'));var _0x2045a3=_0x1eb3d9[_0xc79a('0x10')]&&_0x4b7127[_0xc79a('0x1f')]>0x1;var _0x5dbae2=[];if(!fs[_0xc79a('0x20')](path[_0xc79a('0x21')](_0x2c316a,_0x7c6aec))&&_0x2045a3){fs[_0xc79a('0x22')](path[_0xc79a('0x21')](_0x2c316a,_0x7c6aec));}return BPromise['each'](_0x4b7127,function(_0x4517ab){_0x5dbae2[_0xc79a('0x19')](_0x4517ab);})[_0xc79a('0x16')](function(){for(var _0x1975c1=0x0;_0x1975c1<_0x5dbae2[_0xc79a('0x1f')];_0x1975c1+=0x1){var _0x23046d;var _0x195c92=_0x5dbae2[_0x1975c1];if(_0x2045a3){_0x23046d=path[_0xc79a('0x21')](_0x2c316a,_0x7c6aec,util['format'](_0xc79a('0x23'),_0x7c6aec,_0x1975c1,_0xc79a('0x24')));}else{_0x23046d=path[_0xc79a('0x21')](_0x2c316a,util[_0xc79a('0xc')](_0xc79a('0x25'),_0x7c6aec,_0xc79a('0x24')));}fs[_0xc79a('0x26')](_0x23046d,json2xls(_0x195c92),_0xc79a('0x27'));}})[_0xc79a('0x16')](function(){if(_0x2045a3){zipdir(path['join'](_0x2c316a,_0x7c6aec),{'saveTo':path['join'](_0x2c316a,util[_0xc79a('0xc')](_0xc79a('0x25'),_0x7c6aec,_0xc79a('0x28')))},function(_0x46ff39,_0x1fccc0){});rimraf(path[_0xc79a('0x21')](_0x2c316a,_0x7c6aec),function(){});}})[_0xc79a('0x16')](function(){logger[_0xc79a('0x29')](util[_0xc79a('0xc')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xc79a('0xe')));return analyticExtractedReport('Completed',_0x2045a3?util[_0xc79a('0xc')](_0xc79a('0x25'),_0x7c6aec,_0x2045a3?_0xc79a('0x28'):'xlsx'):null);});})['catch'](function(_0x24b338){logger[_0xc79a('0x29')](util[_0xc79a('0xc')](_0xc79a('0x2a'),EXTRACTED_REPORT_ID,'XLSX'),util[_0xc79a('0x2b')](_0x24b338,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xc79a('0x2c'));})[_0xc79a('0x2d')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x415b=['join','mkdirSync','xlsx','%s.%s','binary','zip','zip\x20finished','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','Failed','finally','exit','util','lodash','json2xls','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','SELECT','length','range','num','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','query','basename','.xlsx','existsSync'];(function(_0x56cb6b,_0x525fed){var _0x39024a=function(_0xd2f23e){while(--_0xd2f23e){_0x56cb6b['push'](_0x56cb6b['shift']());}};_0x39024a(++_0x525fed);}(_0x415b,0x1e4));var _0xb415=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x415b[_0x40a045];return _0x1a687c;};'use strict';var util=require(_0xb415('0x0'));var path=require('path');var _=require(_0xb415('0x1'));var fs=require('fs');var json2xls=require(_0xb415('0x2'));var BPromise=require(_0xb415('0x3'));var zipdir=require('zip-dir');var rimraf=require('rimraf');var db=require(_0xb415('0x4'))['db'];var dbH=require(_0xb415('0x4'))[_0xb415('0x5')];var logger=require(_0xb415('0x6'))(_0xb415('0x7'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xb415('0x8')][0x3];var PATH=process[_0xb415('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x330b3f,_0x2684d0){var _0x1b4c6b={'status':_0x330b3f};var _0x441e0c={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2684d0){_0x1b4c6b[_0xb415('0x9')]=_0x2684d0;}return db['AnalyticExtractedReport'][_0xb415('0xa')](_0x1b4c6b,_0x441e0c);}function main(){var _0x1354ea=0x1388;var _0x51078a;logger[_0xb415('0xb')](util[_0xb415('0xc')](_0xb415('0xd'),EXTRACTED_REPORT_ID,_0xb415('0xe')));return db[_0xb415('0xf')][_0xb415('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xb415('0x11'),_0xb415('0x12')]})['then'](function(_0x10a7a7){if(_0x10a7a7){_0x51078a=_0x10a7a7;_0x1354ea=_0x51078a[_0xb415('0x12')]||0x1388;}})[_0xb415('0x13')](function(){return dbH[_0xb415('0x14')]['query'](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize']['QueryTypes'][_0xb415('0x15')]});})[_0xb415('0x13')](function(_0xa8c148){if(!_0xa8c148[0x0]['num']){return analyticExtractedReport('Empty');}var _0x471732=[];var _0x208d53=0x0;if(_0x51078a['split']){if(_0xa8c148&&_0xa8c148[_0xb415('0x16')]){var _0x328123=_[_0xb415('0x17')](_0xa8c148[0x0][_0xb415('0x18')]/_0x1354ea);var _0x1c6fc6=Number['isInteger'](_0xa8c148[0x0][_0xb415('0x18')]/_0x1354ea)?_0xa8c148[0x0][_0xb415('0x18')]%_0x1354ea:0x0;_0x328123[_0xb415('0x19')](function(_0x41bf46){if(_0x41bf46>0x0){_0x208d53+=_0x1354ea;}_0x471732[_0xb415('0x1a')](dbH[_0xb415('0x14')]['query'](util[_0xb415('0xc')](_0xb415('0x1b'),QUERY,_0x1354ea,_0x208d53),{'type':dbH[_0xb415('0x14')][_0xb415('0x1c')]['SELECT']}));});if(_0x1c6fc6>0x0){_0x208d53+=_0x1354ea;_0x471732[_0xb415('0x1a')](dbH['sequelize'][_0xb415('0x1d')](util[_0xb415('0xc')](_0xb415('0x1b'),QUERY,_0x1c6fc6,_0x208d53),{'type':dbH[_0xb415('0x14')][_0xb415('0x1c')][_0xb415('0x15')]}));}}}else{_0x471732[_0xb415('0x1a')](dbH[_0xb415('0x14')]['query'](QUERY,{'type':dbH[_0xb415('0x14')][_0xb415('0x1c')][_0xb415('0x15')]}));}var _0x2a10b4=path['dirname'](PATH);var _0x212612=path[_0xb415('0x1e')](PATH,_0xb415('0x1f'));var _0x5ffb95=_0x51078a[_0xb415('0x11')]&&_0x471732['length']>0x1;var _0x511936=[];if(!fs[_0xb415('0x20')](path[_0xb415('0x21')](_0x2a10b4,_0x212612))&&_0x5ffb95){fs[_0xb415('0x22')](path[_0xb415('0x21')](_0x2a10b4,_0x212612));}return BPromise['each'](_0x471732,function(_0xb559f9){_0x511936['push'](_0xb559f9);})[_0xb415('0x13')](function(){for(var _0x8b24f2=0x0;_0x8b24f2<_0x511936[_0xb415('0x16')];_0x8b24f2+=0x1){var _0x5dddf4;var _0x1768e7=_0x511936[_0x8b24f2];if(_0x5ffb95){_0x5dddf4=path[_0xb415('0x21')](_0x2a10b4,_0x212612,util[_0xb415('0xc')]('%s%d.%s',_0x212612,_0x8b24f2,_0xb415('0x23')));}else{_0x5dddf4=path[_0xb415('0x21')](_0x2a10b4,util['format'](_0xb415('0x24'),_0x212612,_0xb415('0x23')));}fs['writeFileSync'](_0x5dddf4,json2xls(_0x1768e7),_0xb415('0x25'));}})[_0xb415('0x13')](function(){if(_0x5ffb95){return new Promise(function(_0x37a215){zipdir(path['join'](_0x2a10b4,_0x212612),{'saveTo':path['join'](_0x2a10b4,util[_0xb415('0xc')](_0xb415('0x24'),_0x212612,_0xb415('0x26')))},function(_0x5a91fd,_0x7c736f){rimraf(path[_0xb415('0x21')](_0x2a10b4,_0x212612),function(){});_0x37a215(_0xb415('0x27'));});});}})[_0xb415('0x13')](function(){logger[_0xb415('0xb')](util[_0xb415('0xc')](_0xb415('0x28'),EXTRACTED_REPORT_ID,_0xb415('0xe')));return analyticExtractedReport(_0xb415('0x29'),_0x5ffb95?util['format'](_0xb415('0x24'),_0x212612,_0x5ffb95?'zip':_0xb415('0x23')):null);});})[_0xb415('0x2a')](function(_0xd8e95d){logger[_0xb415('0xb')](util[_0xb415('0xc')](_0xb415('0x2b'),EXTRACTED_REPORT_ID,_0xb415('0xe')),util['inspect'](_0xd8e95d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xb415('0x2c'));})[_0xb415('0x2d')](function(){process[_0xb415('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
index f316277..518a70a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bc4=['interval','*,*,*,*','tag','CDR(tag)=','outbound','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','answer','indexOf','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','last','Hangup','VoiceExtension','destroy','bulkCreate','sortBy','lodash','util','models','Interval','findAll','intervals','IntervalId','then','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','priority','extensions','find','push','type','Set','format','context','VoiceExtensionId','CDR(destination)=','extension','${EXTEN:','cutdigits','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','length','toLowerCase','updatedAt'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3bc4,0x116));var _0x43bc=function(_0x48b88f,_0x2e1e94){_0x48b88f=_0x48b88f-0x0;var _0x34d441=_0x3bc4[_0x48b88f];return _0x34d441;};'use strict';var _=require(_0x43bc('0x0'));var util=require(_0x43bc('0x1'));function rewrite(_0x43d183,_0x517a40){var _0x207e43=this;return _0x43d183[_0x43bc('0x2')][_0x43bc('0x3')][_0x43bc('0x4')]({'raw':!![]})['then'](function(_0x567119){_0x207e43[_0x43bc('0x5')]=_0x567119;return _0x43d183[_0x43bc('0x2')]['VoiceExtension'][_0x43bc('0x4')]({'where':{'IntervalId':_0x517a40[_0x43bc('0x6')]},'raw':!![]});})[_0x43bc('0x7')](function(_0x15fc21){return _0x43d183[_0x43bc('0x2')]['VoiceExtension']['findAll']({'where':{'exten':{'$in':_[_0x43bc('0x8')](_[_0x43bc('0x9')](_0x15fc21,_0x43bc('0xa')))}},'order':[{'raw':_0x43bc('0xb')}],'raw':!![]});})[_0x43bc('0x7')](function(_0x562b2f){var _0x5dc706=_['filter'](_0x562b2f,{'priority':'1'});var _0x47f26e=_[_0x43bc('0xc')](_0x562b2f,{'isApp':0x1});var _0x4704ab=_[_0x43bc('0xd')](_0x47f26e,_0x43bc('0xa'));var _0x129338=[_0x43bc('0xe'),_0x43bc('0xf')];var _0x16a45c=[];var _0x597a07=[];for(var _0x12c1cb in _0x4704ab){if(_0x4704ab[_0x43bc('0x10')](_0x12c1cb)){_0x207e43[_0x43bc('0x11')]=0x2;_0x207e43[_0x43bc('0x12')]=[];_0x207e43['extension']=_[_0x43bc('0x13')](_0x5dc706,{'exten':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0xa')]});_0x207e43['extensions'][_0x43bc('0x14')]({'type':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x15')],'app':_0x43bc('0x16'),'appdata':util[_0x43bc('0x17')]('CDR(type)=%s',_0x4704ab[_0x12c1cb][0x0]['type']),'context':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x18')],'exten':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0xa')],'priority':_0x207e43[_0x43bc('0x11')]++,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')]});if(_0x4704ab[_0x12c1cb][0x0]['type']==='outbound'){if(_0x207e43['extension']){_0x207e43[_0x43bc('0x12')]['push']({'type':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x15')],'app':_0x43bc('0x16'),'appdata':_0x43bc('0x1a')+(_0x207e43[_0x43bc('0x1b')]['cutdigits']?_0x43bc('0x1c')+_0x207e43['extension'][_0x43bc('0x1d')]+'}':'${EXTEN}'),'context':_0x4704ab[_0x12c1cb][0x0]['context'],'exten':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0xa')],'priority':_0x207e43[_0x43bc('0x11')]++,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')]});}_0x207e43['extensions'][_0x43bc('0x14')]({'type':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x15')],'app':'Set','appdata':'CDR(routeid)='+_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')],'context':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x18')],'exten':_0x4704ab[_0x12c1cb][0x0]['exten'],'priority':_0x207e43[_0x43bc('0x11')]++,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')]});var _0x52181a=_0x207e43['priority']++;_0x207e43['extensions'][_0x43bc('0x14')]({'type':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x15')],'app':'ExecIf','appdata':_0x43bc('0x1e')+(_0x52181a+0x2)+_0x43bc('0x1f')+(_0x52181a+0x1)+')','context':_0x4704ab[_0x12c1cb][0x0]['context'],'exten':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0xa')],'priority':_0x52181a,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')]});if(_0x207e43[_0x43bc('0x1b')]){_0x207e43[_0x43bc('0x12')]['push']({'type':_0x4704ab[_0x12c1cb][0x0]['type'],'app':_0x43bc('0x16'),'appdata':_0x207e43[_0x43bc('0x1b')]['cutdigits']?_0x43bc('0x20')+_0x207e43['extension'][_0x43bc('0x1d')]+'}':_0x43bc('0x21'),'context':_0x4704ab[_0x12c1cb][0x0]['context'],'exten':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0xa')],'priority':_0x207e43[_0x43bc('0x11')]++,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')]});}_0x207e43[_0x43bc('0x12')][_0x43bc('0x14')]({'type':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x15')],'app':_0x43bc('0x16'),'appdata':'outboundrouteid='+_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')],'context':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x18')],'exten':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0xa')],'priority':_0x207e43[_0x43bc('0x11')]++,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')]});if(_0x207e43['extension']&&_0x207e43[_0x43bc('0x1b')]['hasOwnProperty'](_0x43bc('0x22'))&&_0x207e43[_0x43bc('0x1b')][_0x43bc('0x22')]!==_0x43bc('0x23')){_0x207e43[_0x43bc('0x12')][_0x43bc('0x14')]({'type':_0x4704ab[_0x12c1cb][0x0]['type'],'app':_0x43bc('0x16'),'appdata':_0x43bc('0x24'),'context':_0x4704ab[_0x12c1cb][0x0]['context'],'exten':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0xa')],'priority':_0x207e43[_0x43bc('0x11')]++,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')]});_0x207e43[_0x43bc('0x12')]['push']({'type':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x15')],'app':_0x43bc('0x16'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x207e43[_0x43bc('0x1b')]['recordingFormat']||'wav','context':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x18')],'exten':_0x4704ab[_0x12c1cb][0x0]['exten'],'priority':_0x207e43[_0x43bc('0x11')]++,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0]['VoiceExtensionId']});}}_0x207e43[_0x43bc('0x12')][_0x43bc('0x14')]({'type':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x15')],'app':_0x43bc('0x16'),'appdata':_0x43bc('0x25'),'context':_0x4704ab[_0x12c1cb][0x0]['context'],'exten':_0x4704ab[_0x12c1cb][0x0]['exten'],'priority':_0x207e43[_0x43bc('0x11')]++,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')]});_0x207e43['extensions']['push']({'type':_0x4704ab[_0x12c1cb][0x0]['type'],'app':'Set','appdata':_0x43bc('0x26'),'context':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x18')],'exten':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0xa')],'priority':_0x207e43['priority']++,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')]});_0x207e43[_0x43bc('0x12')]['push']({'type':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x15')],'app':_0x43bc('0x16'),'appdata':'MONITOR_OPTIONS=ab','context':_0x4704ab[_0x12c1cb][0x0]['context'],'exten':_0x4704ab[_0x12c1cb][0x0]['exten'],'priority':_0x207e43[_0x43bc('0x11')]++,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0]['VoiceExtensionId']});for(var _0x205766=0x0,_0x461bcc=0x0;_0x205766<_0x4704ab[_0x12c1cb][_0x43bc('0x27')];_0x205766+=0x1,_0x461bcc=0x0){var _0x197f76=_0x4704ab[_0x12c1cb][_0x205766];if(_0x197f76[_0x43bc('0x15')]){_0x197f76[_0x43bc('0x15')]=_0x197f76['type'][_0x43bc('0x28')]();}var _0x19e80e=[];var _0x402929=[];delete _0x197f76['id'];delete _0x197f76['createdAt'];delete _0x197f76[_0x43bc('0x29')];var _0x3f3327=_0x197f76[_0x43bc('0x2a')]!==_0x43bc('0x2b')?[_0x197f76[_0x43bc('0x2a')]]:_0x197f76[_0x43bc('0x6')]?_[_0x43bc('0x9')](_['filter'](_0x207e43[_0x43bc('0x5')],{'IntervalId':_0x197f76['IntervalId']}),_0x43bc('0x2a')):[];if(_0x197f76[_0x43bc('0x10')](_0x43bc('0x2c'))){if(_0x197f76[_0x43bc('0x2c')]&&_0x197f76[_0x43bc('0x2c')]!=='--'){_0x19e80e['push']({'type':_0x197f76['type'],'app':_0x43bc('0x16'),'appdata':_0x43bc('0x2d')+_0x197f76[_0x43bc('0x2c')],'context':_0x197f76[_0x43bc('0x18')],'exten':_0x197f76['exten'],'priority':_0x3f3327[_0x43bc('0x27')]+_0x207e43['priority']+_0x461bcc++,'VoiceExtensionId':_0x197f76[_0x43bc('0x19')]});}}if(_0x197f76[_0x43bc('0x15')]===_0x43bc('0x2e')&&_0x197f76[_0x43bc('0x10')](_0x43bc('0x2f'))){if(_0x197f76[_0x43bc('0x2f')]){_0x19e80e[_0x43bc('0x14')]({'type':_0x197f76['type'],'app':'ExecIf','appdata':_0x43bc('0x30')+_0x197f76['callerID']+')','context':_0x197f76['context'],'exten':_0x197f76[_0x43bc('0xa')],'priority':_0x3f3327[_0x43bc('0x27')]+_0x207e43[_0x43bc('0x11')]+_0x461bcc++,'VoiceExtensionId':_0x197f76['VoiceExtensionId']});}else{_0x19e80e['push']({'type':_0x197f76[_0x43bc('0x15')],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x197f76['context'],'exten':_0x197f76[_0x43bc('0xa')],'priority':_0x3f3327[_0x43bc('0x27')]+_0x207e43[_0x43bc('0x11')]+_0x461bcc++,'VoiceExtensionId':_0x197f76[_0x43bc('0x19')]});}}if(_0x197f76[_0x43bc('0x10')](_0x43bc('0x31'))){if(_0x129338[_0x43bc('0x32')](_0x197f76[_0x43bc('0x33')][_0x43bc('0x28')]())>=0x0&&_0x197f76[_0x43bc('0x34')]!==_0x43bc('0x35')){if(_0x197f76[_0x43bc('0x31')]){_0x19e80e[_0x43bc('0x14')]({'type':_0x197f76[_0x43bc('0x15')],'app':'ExecIf','appdata':_0x43bc('0x36'),'context':_0x197f76[_0x43bc('0x18')],'exten':_0x197f76['exten'],'priority':_0x3f3327[_0x43bc('0x27')]+_0x207e43[_0x43bc('0x11')]+_0x461bcc++,'VoiceExtensionId':_0x197f76[_0x43bc('0x19')]});_0x19e80e[_0x43bc('0x14')]({'type':_0x197f76[_0x43bc('0x15')],'app':_0x43bc('0x16'),'appdata':_0x43bc('0x37'),'context':_0x197f76[_0x43bc('0x18')],'exten':_0x197f76[_0x43bc('0xa')],'priority':_0x3f3327['length']+_0x207e43[_0x43bc('0x11')]+_0x461bcc++,'VoiceExtensionId':_0x197f76['VoiceExtensionId']});}else{_0x19e80e['push']({'type':_0x197f76['type'],'app':'ExecIf','appdata':_0x43bc('0x38'),'context':_0x197f76[_0x43bc('0x18')],'exten':_0x197f76[_0x43bc('0xa')],'priority':_0x3f3327['length']+_0x207e43['priority']+_0x461bcc++,'VoiceExtensionId':_0x197f76[_0x43bc('0x19')]});_0x19e80e[_0x43bc('0x14')]({'type':_0x197f76[_0x43bc('0x15')],'app':_0x43bc('0x16'),'appdata':_0x43bc('0x39'),'context':_0x197f76[_0x43bc('0x18')],'exten':_0x197f76[_0x43bc('0xa')],'priority':_0x3f3327['length']+_0x207e43[_0x43bc('0x11')]+_0x461bcc++,'VoiceExtensionId':_0x197f76[_0x43bc('0x19')]});}}}for(var _0x3d5fa4=0x0;_0x3d5fa4<_0x3f3327[_0x43bc('0x27')];_0x3d5fa4+=0x1){var _0x2d709e=_0x207e43['priority']+_0x3f3327[_0x43bc('0x27')];var _0x1b9648=_0x3d5fa4===_0x3f3327[_0x43bc('0x27')]-0x1?_0x207e43[_0x43bc('0x11')]+_0x19e80e[_0x43bc('0x27')]+_0x402929[_0x43bc('0x27')]+0x2:_0x207e43[_0x43bc('0x11')]+_0x3d5fa4+0x1;_0x19e80e['splice'](_0x3d5fa4,0x0,{'type':_0x197f76[_0x43bc('0x15')],'app':'GotoIfTime','appdata':_0x3f3327[_0x3d5fa4]+'?'+_0x197f76[_0x43bc('0x18')]+',${EXTEN},'+_0x2d709e+':'+_0x197f76[_0x43bc('0x18')]+',${EXTEN},'+_0x1b9648,'exten':_0x197f76['exten'],'context':_0x197f76[_0x43bc('0x18')],'priority':_0x207e43['priority']+_0x3d5fa4,'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')]});}_0x197f76['priority']=_0x19e80e[_0x43bc('0x27')]?_['last'](_0x19e80e)[_0x43bc('0x11')]+0x1:_0x207e43[_0x43bc('0x11')];_0x207e43[_0x43bc('0x11')]=(_0x402929[_0x43bc('0x27')]?_[_0x43bc('0x3a')](_0x402929)[_0x43bc('0x11')]:_0x197f76['priority'])+0x1;_0x207e43[_0x43bc('0x12')]=_['concat'](_0x207e43[_0x43bc('0x12')],_0x19e80e,[_0x197f76],_0x402929);}_0x207e43['extensions'][_0x43bc('0x14')]({'type':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x15')],'app':_0x43bc('0x3b'),'exten':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0xa')],'context':_0x4704ab[_0x12c1cb][0x0]['context'],'priority':_0x207e43['priority'],'VoiceExtensionId':_0x4704ab[_0x12c1cb][0x0][_0x43bc('0x19')]});_0x16a45c[_0x43bc('0x14')](_0x4704ab[_0x12c1cb][0x0]['VoiceExtensionId']);_0x597a07=_['concat'](_0x597a07,_0x207e43[_0x43bc('0x12')]);}}return _0x43d183['transaction'](function(_0x527ca8){return _0x43d183[_0x43bc('0x2')][_0x43bc('0x3c')][_0x43bc('0x3d')]({'where':{'VoiceExtensionId':{'$in':_0x16a45c}},'transaction':_0x527ca8})[_0x43bc('0x7')](function(_0x142e0d){return _0x43d183[_0x43bc('0x2')][_0x43bc('0x3c')][_0x43bc('0x3e')](_[_0x43bc('0x3f')](_0x597a07,_0x43bc('0x11')),{'transaction':_0x527ca8});});});})['catch'](function(_0x3f2834){console['error'](_0x3f2834);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0x449e=['type','Set','CDR(type)=%s','VoiceExtensionId','inbound','context','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','CDR(routeid)=','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','updatedAt','interval','*,*,*,*','IntervalId','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','indexOf','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','Hangup','concat','transaction','destroy','bulkCreate','catch','error','rewrite','util','models','Interval','intervals','VoiceExtension','findAll','then','uniq','map','exten','filter','groupBy','queue','playback','priority','extensions','extension','find','push'];(function(_0x1d2bc8,_0x2860bc){var _0x1857e1=function(_0x3a3073){while(--_0x3a3073){_0x1d2bc8['push'](_0x1d2bc8['shift']());}};_0x1857e1(++_0x2860bc);}(_0x449e,0x10d));var _0xe449=function(_0x2ffd40,_0x66e6e){_0x2ffd40=_0x2ffd40-0x0;var _0x2d13b2=_0x449e[_0x2ffd40];return _0x2d13b2;};'use strict';var _=require('lodash');var util=require(_0xe449('0x0'));function rewrite(_0x1b991f,_0x5812ae){var _0x1f2447=this;return _0x1b991f[_0xe449('0x1')][_0xe449('0x2')]['findAll']({'raw':!![]})['then'](function(_0x51873e){_0x1f2447[_0xe449('0x3')]=_0x51873e;return _0x1b991f[_0xe449('0x1')][_0xe449('0x4')][_0xe449('0x5')]({'where':{'IntervalId':_0x5812ae['IntervalId']},'raw':!![]});})[_0xe449('0x6')](function(_0x52e56a){return _0x1b991f[_0xe449('0x1')][_0xe449('0x4')][_0xe449('0x5')]({'where':{'exten':{'$in':_[_0xe449('0x7')](_[_0xe449('0x8')](_0x52e56a,_0xe449('0x9')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0xe449('0x6')](function(_0x34e9a6){var _0x302226=_[_0xe449('0xa')](_0x34e9a6,{'priority':'1'});var _0x30d184=_[_0xe449('0xa')](_0x34e9a6,{'isApp':0x1});var _0x12d593=_[_0xe449('0xb')](_0x30d184,_0xe449('0x9'));var _0x4ed38a=[_0xe449('0xc'),_0xe449('0xd')];var _0x545de2=[];var _0x38a821=[];for(var _0x304a4a in _0x12d593){if(_0x12d593['hasOwnProperty'](_0x304a4a)){_0x1f2447[_0xe449('0xe')]=0x2;_0x1f2447[_0xe449('0xf')]=[];_0x1f2447[_0xe449('0x10')]=_[_0xe449('0x11')](_0x302226,{'exten':_0x12d593[_0x304a4a][0x0][_0xe449('0x9')]});_0x1f2447[_0xe449('0xf')][_0xe449('0x12')]({'type':_0x12d593[_0x304a4a][0x0][_0xe449('0x13')],'app':_0xe449('0x14'),'appdata':util['format'](_0xe449('0x15'),_0x12d593[_0x304a4a][0x0][_0xe449('0x13')]),'context':_0x12d593[_0x304a4a][0x0]['context'],'exten':_0x12d593[_0x304a4a][0x0]['exten'],'priority':_0x1f2447[_0xe449('0xe')]++,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]});if(_0x12d593[_0x304a4a][0x0][_0xe449('0x13')]===_0xe449('0x17')){_0x1f2447[_0xe449('0xf')][_0xe449('0x12')]({'type':_0x12d593[_0x304a4a][0x0][_0xe449('0x13')],'app':'Set','appdata':'CDR(routeid)='+_0x12d593[_0x304a4a][0x0][_0xe449('0x16')],'context':_0x12d593[_0x304a4a][0x0][_0xe449('0x18')],'exten':_0x12d593[_0x304a4a][0x0][_0xe449('0x9')],'priority':_0x1f2447[_0xe449('0xe')]++,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]});}else if(_0x12d593[_0x304a4a][0x0][_0xe449('0x13')]===_0xe449('0x19')){if(_0x1f2447[_0xe449('0x10')]){_0x1f2447[_0xe449('0xf')][_0xe449('0x12')]({'type':_0x12d593[_0x304a4a][0x0]['type'],'app':_0xe449('0x14'),'appdata':_0xe449('0x1a')+(_0x1f2447[_0xe449('0x10')][_0xe449('0x1b')]?_0xe449('0x1c')+_0x1f2447[_0xe449('0x10')]['cutdigits']+'}':_0xe449('0x1d')),'context':_0x12d593[_0x304a4a][0x0][_0xe449('0x18')],'exten':_0x12d593[_0x304a4a][0x0][_0xe449('0x9')],'priority':_0x1f2447[_0xe449('0xe')]++,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]});}_0x1f2447[_0xe449('0xf')][_0xe449('0x12')]({'type':_0x12d593[_0x304a4a][0x0][_0xe449('0x13')],'app':_0xe449('0x14'),'appdata':_0xe449('0x1e')+_0x12d593[_0x304a4a][0x0][_0xe449('0x16')],'context':_0x12d593[_0x304a4a][0x0][_0xe449('0x18')],'exten':_0x12d593[_0x304a4a][0x0]['exten'],'priority':_0x1f2447[_0xe449('0xe')]++,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0]['VoiceExtensionId']});var _0x30e9cb=_0x1f2447[_0xe449('0xe')]++;_0x1f2447['extensions'][_0xe449('0x12')]({'type':_0x12d593[_0x304a4a][0x0][_0xe449('0x13')],'app':_0xe449('0x1f'),'appdata':_0xe449('0x20')+(_0x30e9cb+0x2)+_0xe449('0x21')+(_0x30e9cb+0x1)+')','context':_0x12d593[_0x304a4a][0x0]['context'],'exten':_0x12d593[_0x304a4a][0x0][_0xe449('0x9')],'priority':_0x30e9cb,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]});if(_0x1f2447[_0xe449('0x10')]){_0x1f2447['extensions'][_0xe449('0x12')]({'type':_0x12d593[_0x304a4a][0x0][_0xe449('0x13')],'app':_0xe449('0x14'),'appdata':_0x1f2447[_0xe449('0x10')][_0xe449('0x1b')]?_0xe449('0x22')+_0x1f2447[_0xe449('0x10')][_0xe449('0x1b')]+'}':'CDR(prefix)=noprefix','context':_0x12d593[_0x304a4a][0x0]['context'],'exten':_0x12d593[_0x304a4a][0x0][_0xe449('0x9')],'priority':_0x1f2447[_0xe449('0xe')]++,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]});}_0x1f2447[_0xe449('0xf')][_0xe449('0x12')]({'type':_0x12d593[_0x304a4a][0x0][_0xe449('0x13')],'app':_0xe449('0x14'),'appdata':_0xe449('0x23')+_0x12d593[_0x304a4a][0x0][_0xe449('0x16')],'context':_0x12d593[_0x304a4a][0x0][_0xe449('0x18')],'exten':_0x12d593[_0x304a4a][0x0][_0xe449('0x9')],'priority':_0x1f2447[_0xe449('0xe')]++,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]});if(_0x1f2447[_0xe449('0x10')]&&_0x1f2447[_0xe449('0x10')][_0xe449('0x24')](_0xe449('0x25'))&&_0x1f2447[_0xe449('0x10')][_0xe449('0x25')]!==_0xe449('0x26')){_0x1f2447[_0xe449('0xf')]['push']({'type':_0x12d593[_0x304a4a][0x0][_0xe449('0x13')],'app':_0xe449('0x14'),'appdata':_0xe449('0x27'),'context':_0x12d593[_0x304a4a][0x0][_0xe449('0x18')],'exten':_0x12d593[_0x304a4a][0x0][_0xe449('0x9')],'priority':_0x1f2447['priority']++,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]});_0x1f2447[_0xe449('0xf')][_0xe449('0x12')]({'type':_0x12d593[_0x304a4a][0x0]['type'],'app':'Set','appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x1f2447[_0xe449('0x10')]['recordingFormat']||'wav','context':_0x12d593[_0x304a4a][0x0][_0xe449('0x18')],'exten':_0x12d593[_0x304a4a][0x0][_0xe449('0x9')],'priority':_0x1f2447[_0xe449('0xe')]++,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]});}}_0x1f2447[_0xe449('0xf')]['push']({'type':_0x12d593[_0x304a4a][0x0][_0xe449('0x13')],'app':'Set','appdata':_0xe449('0x28'),'context':_0x12d593[_0x304a4a][0x0][_0xe449('0x18')],'exten':_0x12d593[_0x304a4a][0x0][_0xe449('0x9')],'priority':_0x1f2447[_0xe449('0xe')]++,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]});_0x1f2447[_0xe449('0xf')][_0xe449('0x12')]({'type':_0x12d593[_0x304a4a][0x0][_0xe449('0x13')],'app':_0xe449('0x14'),'appdata':_0xe449('0x29'),'context':_0x12d593[_0x304a4a][0x0]['context'],'exten':_0x12d593[_0x304a4a][0x0][_0xe449('0x9')],'priority':_0x1f2447[_0xe449('0xe')]++,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0]['VoiceExtensionId']});_0x1f2447['extensions'][_0xe449('0x12')]({'type':_0x12d593[_0x304a4a][0x0]['type'],'app':_0xe449('0x14'),'appdata':_0xe449('0x2a'),'context':_0x12d593[_0x304a4a][0x0][_0xe449('0x18')],'exten':_0x12d593[_0x304a4a][0x0]['exten'],'priority':_0x1f2447[_0xe449('0xe')]++,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0]['VoiceExtensionId']});for(var _0x122e07=0x0,_0x275cbb=0x0;_0x122e07<_0x12d593[_0x304a4a][_0xe449('0x2b')];_0x122e07+=0x1,_0x275cbb=0x0){var _0x4dcd28=_0x12d593[_0x304a4a][_0x122e07];if(_0x4dcd28[_0xe449('0x13')]){_0x4dcd28[_0xe449('0x13')]=_0x4dcd28[_0xe449('0x13')][_0xe449('0x2c')]();}var _0x1bb995=[];var _0x346876=[];delete _0x4dcd28['id'];delete _0x4dcd28['createdAt'];delete _0x4dcd28[_0xe449('0x2d')];var _0x2ae08f=_0x4dcd28[_0xe449('0x2e')]!==_0xe449('0x2f')?[_0x4dcd28[_0xe449('0x2e')]]:_0x4dcd28[_0xe449('0x30')]?_['map'](_[_0xe449('0xa')](_0x1f2447[_0xe449('0x3')],{'IntervalId':_0x4dcd28[_0xe449('0x30')]}),_0xe449('0x2e')):[];if(_0x4dcd28[_0xe449('0x24')](_0xe449('0x31'))){if(_0x4dcd28[_0xe449('0x31')]&&_0x4dcd28[_0xe449('0x31')]!=='--'){_0x1bb995[_0xe449('0x12')]({'type':_0x4dcd28[_0xe449('0x13')],'app':_0xe449('0x14'),'appdata':_0xe449('0x32')+_0x4dcd28['tag'],'context':_0x4dcd28['context'],'exten':_0x4dcd28[_0xe449('0x9')],'priority':_0x2ae08f[_0xe449('0x2b')]+_0x1f2447['priority']+_0x275cbb++,'VoiceExtensionId':_0x4dcd28['VoiceExtensionId']});}}if(_0x4dcd28[_0xe449('0x13')]==='outbound'&&_0x4dcd28[_0xe449('0x24')](_0xe449('0x33'))){if(_0x4dcd28[_0xe449('0x33')]){_0x1bb995[_0xe449('0x12')]({'type':_0x4dcd28['type'],'app':_0xe449('0x1f'),'appdata':_0xe449('0x34')+_0x4dcd28['callerID']+')','context':_0x4dcd28[_0xe449('0x18')],'exten':_0x4dcd28['exten'],'priority':_0x2ae08f[_0xe449('0x2b')]+_0x1f2447[_0xe449('0xe')]+_0x275cbb++,'VoiceExtensionId':_0x4dcd28[_0xe449('0x16')]});}else{_0x1bb995[_0xe449('0x12')]({'type':_0x4dcd28[_0xe449('0x13')],'app':_0xe449('0x1f'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x4dcd28['context'],'exten':_0x4dcd28[_0xe449('0x9')],'priority':_0x2ae08f[_0xe449('0x2b')]+_0x1f2447['priority']+_0x275cbb++,'VoiceExtensionId':_0x4dcd28['VoiceExtensionId']});}}if(_0x4dcd28['hasOwnProperty']('answer')){if(_0x4ed38a[_0xe449('0x35')](_0x4dcd28['app'][_0xe449('0x2c')]())>=0x0&&_0x4dcd28[_0xe449('0x36')]!==_0xe449('0x37')){if(_0x4dcd28['answer']){_0x1bb995[_0xe449('0x12')]({'type':_0x4dcd28[_0xe449('0x13')],'app':_0xe449('0x1f'),'appdata':_0xe449('0x38'),'context':_0x4dcd28[_0xe449('0x18')],'exten':_0x4dcd28[_0xe449('0x9')],'priority':_0x2ae08f[_0xe449('0x2b')]+_0x1f2447[_0xe449('0xe')]+_0x275cbb++,'VoiceExtensionId':_0x4dcd28[_0xe449('0x16')]});_0x1bb995[_0xe449('0x12')]({'type':_0x4dcd28['type'],'app':_0xe449('0x14'),'appdata':_0xe449('0x39'),'context':_0x4dcd28[_0xe449('0x18')],'exten':_0x4dcd28[_0xe449('0x9')],'priority':_0x2ae08f[_0xe449('0x2b')]+_0x1f2447[_0xe449('0xe')]+_0x275cbb++,'VoiceExtensionId':_0x4dcd28[_0xe449('0x16')]});}else{_0x1bb995[_0xe449('0x12')]({'type':_0x4dcd28[_0xe449('0x13')],'app':_0xe449('0x1f'),'appdata':_0xe449('0x3a'),'context':_0x4dcd28[_0xe449('0x18')],'exten':_0x4dcd28[_0xe449('0x9')],'priority':_0x2ae08f[_0xe449('0x2b')]+_0x1f2447['priority']+_0x275cbb++,'VoiceExtensionId':_0x4dcd28[_0xe449('0x16')]});_0x1bb995[_0xe449('0x12')]({'type':_0x4dcd28['type'],'app':_0xe449('0x14'),'appdata':_0xe449('0x3b'),'context':_0x4dcd28[_0xe449('0x18')],'exten':_0x4dcd28[_0xe449('0x9')],'priority':_0x2ae08f[_0xe449('0x2b')]+_0x1f2447['priority']+_0x275cbb++,'VoiceExtensionId':_0x4dcd28[_0xe449('0x16')]});}}}for(var _0x16a041=0x0;_0x16a041<_0x2ae08f[_0xe449('0x2b')];_0x16a041+=0x1){var _0x40943d=_0x1f2447[_0xe449('0xe')]+_0x2ae08f['length'];var _0x290f2c=_0x16a041===_0x2ae08f[_0xe449('0x2b')]-0x1?_0x1f2447[_0xe449('0xe')]+_0x1bb995['length']+_0x346876[_0xe449('0x2b')]+0x2:_0x1f2447[_0xe449('0xe')]+_0x16a041+0x1;_0x1bb995[_0xe449('0x3c')](_0x16a041,0x0,{'type':_0x4dcd28[_0xe449('0x13')],'app':_0xe449('0x3d'),'appdata':_0x2ae08f[_0x16a041]+'?'+_0x4dcd28['context']+_0xe449('0x3e')+_0x40943d+':'+_0x4dcd28[_0xe449('0x18')]+_0xe449('0x3e')+_0x290f2c,'exten':_0x4dcd28[_0xe449('0x9')],'context':_0x4dcd28[_0xe449('0x18')],'priority':_0x1f2447['priority']+_0x16a041,'VoiceExtensionId':_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]});}_0x4dcd28[_0xe449('0xe')]=_0x1bb995[_0xe449('0x2b')]?_[_0xe449('0x3f')](_0x1bb995)['priority']+0x1:_0x1f2447[_0xe449('0xe')];_0x1f2447['priority']=(_0x346876[_0xe449('0x2b')]?_[_0xe449('0x3f')](_0x346876)[_0xe449('0xe')]:_0x4dcd28[_0xe449('0xe')])+0x1;_0x1f2447['extensions']=_['concat'](_0x1f2447[_0xe449('0xf')],_0x1bb995,[_0x4dcd28],_0x346876);}_0x1f2447['extensions'][_0xe449('0x12')]({'type':_0x12d593[_0x304a4a][0x0][_0xe449('0x13')],'app':_0xe449('0x40'),'exten':_0x12d593[_0x304a4a][0x0][_0xe449('0x9')],'context':_0x12d593[_0x304a4a][0x0][_0xe449('0x18')],'priority':_0x1f2447[_0xe449('0xe')],'VoiceExtensionId':_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]});_0x545de2['push'](_0x12d593[_0x304a4a][0x0][_0xe449('0x16')]);_0x38a821=_[_0xe449('0x41')](_0x38a821,_0x1f2447[_0xe449('0xf')]);}}return _0x1b991f[_0xe449('0x42')](function(_0x27beab){return _0x1b991f['models'][_0xe449('0x4')][_0xe449('0x43')]({'where':{'VoiceExtensionId':{'$in':_0x545de2}},'transaction':_0x27beab})[_0xe449('0x6')](function(_0x2fb3a2){return _0x1b991f[_0xe449('0x1')][_0xe449('0x4')][_0xe449('0x44')](_['sortBy'](_0x38a821,_0xe449('0xe')),{'transaction':_0x27beab});});});})[_0xe449('0x45')](function(_0x477887){console[_0xe449('0x46')](_0x477887);});}exports[_0xe449('0x47')]=rewrite;
\ No newline at end of file
index edcf7ac..9bd41f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe38e=['dialCheckDuplicateType','always','sequelize','VoiceQueueId','onlyIfOpen','query','outbound','CmList','BlackLists','get','all','Campaign','Lists','CampaignId','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resume','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','resolve','CmContact','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','bluebird','squel','papaparse','ioredis','../../../config/environment','../../../config/logger','api','redis','defaults','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','undefined','argv','null','Missing\x20binding\x20parameters!','zipObject','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','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','keys','then','push','pick','catch','message','stringify','cmContact','checkHopper','inspect','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','createdAt','select','field','toString','NOW()','updatedAt','from','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','deletedAt\x20IS\x20NULL','str','cm_hopper_final','\x20=\x20?','id\x20IN\x20?','cm_hopper_black','findAll'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe38e,0x170));var _0xee38=function(_0xc9de55,_0x459be2){_0xc9de55=_0xc9de55-0x0;var _0x5194b6=_0xe38e[_0xc9de55];return _0x5194b6;};'use strict';var BPromise=require(_0xee38('0x0'));var util=require('util');var _=require('lodash');var fs=require('fs');var squel=require(_0xee38('0x1'));var Papa=require(_0xee38('0x2'));var Redis=require(_0xee38('0x3'));var db=require('../../../mysqldb')['db'];var config=require(_0xee38('0x4'));var logger=require(_0xee38('0x5'))(_0xee38('0x6'));config[_0xee38('0x7')]=_[_0xee38('0x8')](config[_0xee38('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0xee38('0x9'))(new Redis(config[_0xee38('0x7')]));require(_0xee38('0xa'))[_0xee38('0xb')](socket);try{if(!process['argv'][0x2]||process['argv'][0x2]===_0xee38('0xc')||process[_0xee38('0xd')][0x2]===_0xee38('0xe')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0xee38('0xd')][0x2];if(!process[_0xee38('0xd')][0x3]||process[_0xee38('0xd')][0x3]==='undefined'||process['argv'][0x3]===_0xee38('0xe')||!process['argv'][0x4]||process['argv'][0x4]===_0xee38('0xc')||process[_0xee38('0xd')][0x4]===_0xee38('0xe')){throw new Error(_0xee38('0xf'));}var FIELDS=_[_0xee38('0x10')](process['argv'][0x3]['split'](','),process[_0xee38('0xd')][0x4][_0xee38('0x11')](','));if(!process[_0xee38('0xd')][0x5]||process[_0xee38('0xd')][0x5]===_0xee38('0xc')||process[_0xee38('0xd')][0x5]===_0xee38('0xe')){throw new Error(_0xee38('0x12'));}var LISTID=process[_0xee38('0xd')][0x5];var COMPANYID=process[_0xee38('0xd')][0x6]&&process[_0xee38('0xd')][0x6]!==_0xee38('0xc')&&process[_0xee38('0xd')][0x6]!=='null'?process[_0xee38('0xd')][0x6]:null;var DUPLICATES=process[_0xee38('0xd')][0x7]&&process[_0xee38('0xd')][0x7]!==_0xee38('0xc')&&process[_0xee38('0xd')][0x7]!==_0xee38('0xe')?process['argv'][0x7]:null;if(!process[_0xee38('0xd')][0x8]||process['argv'][0x8]===_0xee38('0xc')||process[_0xee38('0xd')][0x8]===_0xee38('0xe')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0xee38('0xd')][0x8];}catch(_0x310355){logger[_0xee38('0x13')](_0x310355);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(_0x393e2e,_0x2388ff,_0x17fdeb,_0x390482){var _0x503f48={'message':_0x2388ff};_0x503f48[_0x393e2e]=!![];if(_0x17fdeb){_0x503f48[_0xee38('0x14')]=_0x17fdeb;}if(_0x390482){_0x503f48[_0xee38('0x15')]=_0x390482;}return _0x503f48;}function isEmail(_0x23a3ff){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))*$/[_0xee38('0x16')](_0x23a3ff);}function checkRow(_0xd668bf,_0x5bed4d,_0x54a633){return new BPromise(function(_0x10fee4,_0x2c0420){if(_[_0xee38('0x17')](_0xd668bf)){return _0x2c0420(handleCheckRowError(_0xee38('0x13'),_0xee38('0x18'),null,_0x54a633));}if(_0xd668bf[_0xee38('0x19')]&&_0xd668bf['errors'][_0xee38('0x1a')]){var _0x321a9c=_[_0xee38('0x1b')](_0xd668bf[_0xee38('0x19')],'message')['join'](';');return _0x2c0420(handleCheckRowError('error',_0x321a9c,null,_0x54a633));}var _0x535493={};for(var _0x423b0b in FIELDS){if(FIELDS[_0xee38('0x1c')](_0x423b0b)&&FIELDS[_0x423b0b]){_0x535493[_0x423b0b]=_0xd668bf[_0xee38('0x1d')][0x0][FIELDS[_0x423b0b]]||_0xd668bf['data'][0x0]['\ufeff'+FIELDS[_0x423b0b]];}}if(!_0x535493[_0xee38('0x1e')]){return _0x2c0420(handleCheckRowError('error',_0xee38('0x1f'),null,_0x54a633));}if(!_0x535493['phone']){return _0x2c0420(handleCheckRowError('error',_0xee38('0x20'),null,_0x54a633));}if(_0x535493[_0xee38('0x21')]){var _0x57a4ab=moment(_0x535493[_0xee38('0x21')],_0xee38('0x22'));if(!_0x57a4ab[_0xee38('0x23')]()){return _0x2c0420(handleCheckRowError(_0xee38('0x13'),_0xee38('0x24'),null,_0x54a633));}}if(_0x535493[_0xee38('0x25')]){if(!isEmail(_0x535493[_0xee38('0x25')])){return _0x2c0420(handleCheckRowError(_0xee38('0x13'),_0xee38('0x26'),null,_0x54a633));}}_0x535493[_0xee38('0x27')]=LISTID;_0x535493[_0xee38('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xee38('0x1a')]&&_0x5bed4d){var _0x3aac73={};for(var _0x28ef7e=0x0,_0x562260=DUPLICATES['length'];_0x28ef7e<_0x562260;_0x28ef7e+=0x1){_0x3aac73[DUPLICATES[_0x28ef7e]]=_0x535493[DUPLICATES[_0x28ef7e]];}var _0x526238=_[_0xee38('0x29')](_0x5bed4d,_0x3aac73);if(_0x526238){return _0x2c0420(handleCheckRowError(_0xee38('0x2a'),_0xee38('0x2b'),_0x526238,_0x54a633));}}return db['CmContact']['create'](_0x535493,{'raw':!![],'hooks':![],'fields':_[_0xee38('0x2c')](_0x535493)})[_0xee38('0x2d')](function(_0x335c0b){if(DUPLICATES&&DUPLICATES[_0xee38('0x1a')]&&_0x5bed4d){_0x5bed4d[_0xee38('0x2e')](_[_0xee38('0x2f')](_0x535493,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x335c0b['id'];return _0x10fee4();})[_0xee38('0x30')](function(_0x360454){return _0x2c0420(handleCheckRowError(_0xee38('0x13'),'Error\x20while\x20creating\x20contact:\x20'+(_0x360454[_0xee38('0x31')]||JSON[_0xee38('0x32')](_0x360454)),null,_0x54a633));});});}function checkHopper(){function _0x3c39d7(){return function(_0x4780c7){logger['error'](_0xee38('0x33'),_0xee38('0x34'),util[_0xee38('0x35')](_0x4780c7,{'showHidden':![],'depth':null}));};}var _0x2d4322=function(_0x2ab334,_0x5b286b){var _0x4a004f=squel[_0xee38('0x36')]()[_0xee38('0x37')](_0xee38('0x38'))[_0xee38('0x39')]([_0xee38('0x3a'),_0xee38('0x3b'),_0xee38('0x3c'),'ListId',_0x5b286b,_0xee38('0x3d'),'updatedAt'],squel[_0xee38('0x3e')]()[_0xee38('0x3f')]('phone',_0xee38('0x3a'))[_0xee38('0x3f')]('NOW()',_0xee38('0x3b'))[_0xee38('0x3f')]('id',_0xee38('0x3c'))['field'](LISTID[_0xee38('0x40')](),_0xee38('0x27'))[_0xee38('0x3f')](_0x2ab334['id'][_0xee38('0x40')](),_0x5b286b)[_0xee38('0x3f')]('NOW()',_0xee38('0x3d'))[_0xee38('0x3f')](_0xee38('0x41'),_0xee38('0x42'))[_0xee38('0x43')](_0xee38('0x44'))[_0xee38('0x45')]('deletedAt\x20IS\x20NULL')[_0xee38('0x45')](_0xee38('0x46'),LISTID[_0xee38('0x40')]())[_0xee38('0x45')](_0xee38('0x47'))[_0xee38('0x45')](_0xee38('0x48'),squel[_0xee38('0x3e')]()['field'](_0xee38('0x3a'))[_0xee38('0x43')](_0xee38('0x38'))[_0xee38('0x45')](_0x5b286b+'\x20=\x20?',_0x2ab334['id'][_0xee38('0x40')]())))[_0xee38('0x40')]();return _0x4a004f;};var _0x55754a=function(_0x119ea2,_0x271617){var _0x3fd327=squel[_0xee38('0x36')]()['into'](_0xee38('0x38'))[_0xee38('0x39')]([_0xee38('0x3a'),_0xee38('0x3b'),'ContactId','ListId',_0x271617,_0xee38('0x3d'),'updatedAt'],squel['select']()[_0xee38('0x3f')](_0xee38('0x3a'),'phone')[_0xee38('0x3f')]('NOW()',_0xee38('0x3b'))[_0xee38('0x3f')]('id',_0xee38('0x3c'))[_0xee38('0x3f')](LISTID['toString'](),'ListId')[_0xee38('0x3f')](_0x119ea2['id'][_0xee38('0x40')](),_0x271617)[_0xee38('0x3f')](_0xee38('0x41'),_0xee38('0x3d'))['field'](_0xee38('0x41'),_0xee38('0x42'))[_0xee38('0x43')](_0xee38('0x44'))[_0xee38('0x45')](_0xee38('0x49'))[_0xee38('0x45')](_0xee38('0x46'),LISTID[_0xee38('0x40')]())['where']('id\x20IN\x20?',squel[_0xee38('0x4a')](hopperContacts))[_0xee38('0x45')]('phone\x20IS\x20NOT\x20NULL')[_0xee38('0x45')](_0xee38('0x48'),squel[_0xee38('0x3e')]()[_0xee38('0x3f')]('calleridnum')[_0xee38('0x43')](_0xee38('0x4b'))[_0xee38('0x45')](_0x271617+_0xee38('0x4c'),_0x119ea2['id']['toString']()))[_0xee38('0x45')](_0xee38('0x48'),squel[_0xee38('0x3e')]()[_0xee38('0x3f')](_0xee38('0x3a'))[_0xee38('0x43')](_0xee38('0x38'))[_0xee38('0x45')](_0x271617+_0xee38('0x4c'),_0x119ea2['id'][_0xee38('0x40')]())))[_0xee38('0x40')]();return _0x3fd327;};function _0x49f922(_0x5776d9,_0xd50d02){var _0x1de877=squel[_0xee38('0x36')]()[_0xee38('0x37')]('cm_hopper')[_0xee38('0x39')](['phone','scheduledAt',_0xee38('0x3c'),_0xee38('0x27'),_0xd50d02,_0xee38('0x3d'),'updatedAt'],squel[_0xee38('0x3e')]()[_0xee38('0x3f')](_0xee38('0x3a'),'phone')[_0xee38('0x3f')]('NOW()',_0xee38('0x3b'))[_0xee38('0x3f')]('id','ContactId')[_0xee38('0x3f')](LISTID[_0xee38('0x40')](),_0xee38('0x27'))[_0xee38('0x3f')](_0x5776d9['id']['toString'](),_0xd50d02)[_0xee38('0x3f')](_0xee38('0x41'),_0xee38('0x3d'))[_0xee38('0x3f')](_0xee38('0x41'),'updatedAt')[_0xee38('0x43')](_0xee38('0x44'))[_0xee38('0x45')]('deletedAt\x20IS\x20NULL')[_0xee38('0x45')](_0xee38('0x46'),LISTID[_0xee38('0x40')]())['where'](_0xee38('0x4d'),squel['str'](hopperContacts))[_0xee38('0x45')](_0xee38('0x47')))[_0xee38('0x40')]();return _0x1de877;}function _0x3a9b37(_0x352cfd,_0x5dfca4){var _0x16873f=squel[_0xee38('0x36')]()['into'](_0xee38('0x4e'))[_0xee38('0x39')](['phone',_0xee38('0x3c'),_0xee38('0x27'),_0x5dfca4,_0xee38('0x3d'),_0xee38('0x42')],squel[_0xee38('0x3e')]()[_0xee38('0x3f')](_0xee38('0x3a'),_0xee38('0x3a'))[_0xee38('0x3f')]('id',_0xee38('0x3c'))['field'](LISTID['toString'](),'ListId')[_0xee38('0x3f')](_0x352cfd['id'][_0xee38('0x40')](),_0x5dfca4)[_0xee38('0x3f')](_0xee38('0x41'),_0xee38('0x3d'))['field']('NOW()','updatedAt')[_0xee38('0x43')](_0xee38('0x44'))['where'](_0xee38('0x49'))['where'](_0xee38('0x46'),LISTID[_0xee38('0x40')]())[_0xee38('0x45')]('id\x20IN\x20?',squel[_0xee38('0x4a')](hopperContacts))[_0xee38('0x45')]('phone\x20IS\x20NOT\x20NULL'))[_0xee38('0x40')]();return _0x16873f;}return db['VoiceQueue'][_0xee38('0x4f')]({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':'Lists','where':{'id':LISTID}}]})[_0xee38('0x2d')](function(_0x5818ee){var _0x386c9f=[];if(_0x5818ee){var _0x16fdce;for(var _0xbd85d9=0x0,_0x3d398a;_0xbd85d9<_0x5818ee[_0xee38('0x1a')];_0xbd85d9+=0x1){_0x3d398a=_0x5818ee[_0xbd85d9]['get']({'plain':!![]});switch(_0x3d398a[_0xee38('0x50')]){case _0xee38('0x51'):_0x386c9f[_0xee38('0x2e')](db[_0xee38('0x52')]['query'](_0x55754a(_0x3d398a,_0xee38('0x53')))['then'](function(){})[_0xee38('0x30')](_0x3c39d7()));break;case _0xee38('0x54'):_0x386c9f[_0xee38('0x2e')](db[_0xee38('0x52')][_0xee38('0x55')](_0x2d4322(_0x3d398a,_0xee38('0x53')))[_0xee38('0x2d')](function(){})['catch'](_0x3c39d7()));break;default:_0x386c9f[_0xee38('0x2e')](db[_0xee38('0x52')][_0xee38('0x55')](_0x49f922(_0x3d398a,'VoiceQueueId'))[_0xee38('0x2d')](function(){})[_0xee38('0x30')](_0x3c39d7()));}}}return _0x386c9f;})['all']()[_0xee38('0x2d')](function(){return db['VoiceQueue'][_0xee38('0x4f')]({'where':{'type':_0xee38('0x56')},'attributes':['id'],'include':[{'model':db[_0xee38('0x57')],'as':_0xee38('0x58'),'where':{'id':LISTID}}]})[_0xee38('0x2d')](function(_0x39a075){var _0x2c3f3b=[];if(_0x39a075){var _0x20ebbb;for(var _0x43459b=0x0,_0x2ca591;_0x43459b<_0x39a075[_0xee38('0x1a')];_0x43459b+=0x1){_0x2ca591=_0x39a075[_0x43459b][_0xee38('0x59')]({'plain':!![]});_0x2c3f3b[_0xee38('0x2e')](db[_0xee38('0x52')][_0xee38('0x55')](_0x3a9b37(_0x2ca591,_0xee38('0x53')))[_0xee38('0x2d')](function(){})['catch'](_0x3c39d7()));}}return _0x2c3f3b;})[_0xee38('0x5a')]();})['then'](function(){return db[_0xee38('0x5b')][_0xee38('0x4f')]({'attributes':['id',_0xee38('0x50')],'include':[{'model':db[_0xee38('0x57')],'as':_0xee38('0x5c'),'where':{'id':LISTID}}]})[_0xee38('0x2d')](function(_0x1c464a){var _0x13e45f=[];if(_0x1c464a){for(var _0x10f6e2=0x0,_0x19341b;_0x10f6e2<_0x1c464a[_0xee38('0x1a')];_0x10f6e2+=0x1){_0x19341b=_0x1c464a[_0x10f6e2]['get']({'plain':!![]});switch(_0x19341b[_0xee38('0x50')]){case _0xee38('0x51'):_0x13e45f['push'](db[_0xee38('0x52')][_0xee38('0x55')](_0x55754a(_0x19341b,'CampaignId'))['then'](function(){})['catch'](_0x3c39d7()));break;case _0xee38('0x54'):_0x13e45f[_0xee38('0x2e')](db[_0xee38('0x52')]['query'](_0x2d4322(_0x19341b,_0xee38('0x5d')))[_0xee38('0x2d')](function(){})[_0xee38('0x30')](_0x3c39d7()));break;default:_0x13e45f['push'](db['sequelize'][_0xee38('0x55')](_0x49f922(_0x19341b,_0xee38('0x5d')))['then'](function(){})['catch'](_0x3c39d7()));}}}return _0x13e45f;})[_0xee38('0x5a')]();})[_0xee38('0x2d')](function(){return db[_0xee38('0x5b')][_0xee38('0x4f')]({'attributes':['id'],'include':[{'model':db[_0xee38('0x57')],'as':_0xee38('0x58'),'where':{'id':LISTID}}]})[_0xee38('0x2d')](function(_0x5ea5ae){var _0x3f00c4=[];if(_0x5ea5ae){for(var _0x193dad=0x0,_0x85417c;_0x193dad<_0x5ea5ae[_0xee38('0x1a')];_0x193dad+=0x1){_0x85417c=_0x5ea5ae[_0x193dad][_0xee38('0x59')]({'plain':!![]});_0x3f00c4[_0xee38('0x2e')](db['sequelize'][_0xee38('0x55')](_0x3a9b37(_0x85417c,_0xee38('0x5d')))['then'](function(){})[_0xee38('0x30')](_0x3c39d7()));}}return _0x3f00c4;})[_0xee38('0x5a')]();})[_0xee38('0x30')](function(_0x5372b0){logger[_0xee38('0x13')]('cmContact,\x20%s,\x20%s',_0xee38('0x5e'),_0x5372b0[_0xee38('0x31')]);});}var processPromises=function(_0x209c8e){return BPromise[_0xee38('0x5a')](promises)[_0xee38('0x2d')](function(_0x99b695){})[_0xee38('0x30')](function(_0x10d7b4){logger['error'](_0xee38('0x5f'),JSON[_0xee38('0x32')](_0x10d7b4));})[_0xee38('0x60')](function(){socket[_0xee38('0x61')](_0xee38('0x62')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x209c8e){return _0x209c8e[_0xee38('0x63')]();}});};var endCsv=function(){return BPromise['resolve']()[_0xee38('0x2d')](function(){if(hopperContacts){return checkHopper();}})[_0xee38('0x2d')](function(){socket['emit'](_0xee38('0x62')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xee38('0x64')](FILEPATH);}catch(_0x74bd88){logger[_0xee38('0x13')](_0xee38('0x65'),JSON[_0xee38('0x32')](_0x74bd88));}finally{process[_0xee38('0x66')](0x0);}});};process['on'](_0xee38('0x67'),function(){logger[_0xee38('0x68')](_0xee38('0x69'));endCsv();});function main(){return BPromise[_0xee38('0x6a')]()[_0xee38('0x2d')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xee38('0x11')](',');return db[_0xee38('0x6b')][_0xee38('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xee38('0x2d')](function(_0x47b128){var _0x32b9a9=fs[_0xee38('0x6c')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xee38('0x6d')](_0x32b9a9,{'header':!![],'skipEmptyLines':!![],'step':function(_0x5043b5,_0x54d914){total+=0x1;var _0x2eceb6=total;promises['push'](checkRow(_0x5043b5,_0x47b128,_0x2eceb6)[_0xee38('0x2d')](function(){success+=0x1;})[_0xee38('0x30')](function(_0x313931){if(_0x313931[_0xee38('0x13')]){errors+=0x1;delete _0x313931[_0xee38('0x13')];}else if(_0x313931[_0xee38('0x2a')]){duplicates+=0x1;delete _0x313931['duplicate'];}rows[_0xee38('0x2e')](_0x313931);}));if(total%0xc8===0x0){_0x54d914[_0xee38('0x6e')]();return processPromises(_0x54d914);}},'complete':function(){return processPromises()[_0xee38('0x2d')](function(){logger[_0xee38('0x68')](_0xee38('0x6f'));endCsv();});},'error':function(_0x58a393,_0xa8e2bf){logger[_0xee38('0x68')]('CSV\x20parse\x20error',JSON['stringify'](_0x58a393));endCsv();}});})['catch'](function(_0x105f26){logger['error']('Error\x20executing\x20contact\x20csv\x20import:',JSON[_0xee38('0x32')](_0x105f26));});}main();
\ No newline at end of file
+var _0x52ca=['../../../config/environment','../../../config/logger','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','test','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','length','map','errors','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone\x20not\x20specified!','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','find','Duplicate\x20Contact','CmContact','create','keys','then','push','Error\x20while\x20creating\x20contact:\x20','checkHopper','insert','into','cm_hopper','scheduledAt','ContactId','updatedAt','select','field','phone','toString','NOW()','from','cm_contacts','where','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','createdAt','ListId\x20=\x20?','id\x20IN\x20?','calleridnum','fromQuery','cm_hopper_black','str','findAll','dialCheckDuplicateType','Lists','get','always','sequelize','query','VoiceQueueId','catch','onlyIfOpen','all','VoiceQueue','outbound','CmList','BlackLists','Campaign','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','stringify','finally','contact:csv_','resume','resolve','emit','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','parse','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','papaparse'];(function(_0x245b93,_0x4ecc95){var _0x29a168=function(_0x169245){while(--_0x169245){_0x245b93['push'](_0x245b93['shift']());}};_0x29a168(++_0x4ecc95);}(_0x52ca,0x1b4));var _0xa52c=function(_0x55786d,_0x35c788){_0x55786d=_0x55786d-0x0;var _0x266a6c=_0x52ca[_0x55786d];return _0x266a6c;};'use strict';var BPromise=require(_0xa52c('0x0'));var util=require(_0xa52c('0x1'));var _=require(_0xa52c('0x2'));var fs=require('fs');var squel=require('squel');var Papa=require(_0xa52c('0x3'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0xa52c('0x4'));var logger=require(_0xa52c('0x5'))('api');config[_0xa52c('0x6')]=_['defaults'](config[_0xa52c('0x6')],{'host':_0xa52c('0x7'),'port':0x18eb});var socket=require(_0xa52c('0x8'))(new Redis(config[_0xa52c('0x6')]));require(_0xa52c('0x9'))[_0xa52c('0xa')](socket);try{if(!process['argv'][0x2]||process[_0xa52c('0xb')][0x2]===_0xa52c('0xc')||process[_0xa52c('0xb')][0x2]===_0xa52c('0xd')){throw new Error(_0xa52c('0xe'));}var FILEPATH=process[_0xa52c('0xb')][0x2];if(!process['argv'][0x3]||process[_0xa52c('0xb')][0x3]===_0xa52c('0xc')||process[_0xa52c('0xb')][0x3]==='null'||!process[_0xa52c('0xb')][0x4]||process[_0xa52c('0xb')][0x4]===_0xa52c('0xc')||process[_0xa52c('0xb')][0x4]===_0xa52c('0xd')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0xa52c('0xf')](process[_0xa52c('0xb')][0x3][_0xa52c('0x10')](','),process[_0xa52c('0xb')][0x4][_0xa52c('0x10')](','));if(!process[_0xa52c('0xb')][0x5]||process[_0xa52c('0xb')][0x5]===_0xa52c('0xc')||process['argv'][0x5]==='null'){throw new Error(_0xa52c('0x11'));}var LISTID=process[_0xa52c('0xb')][0x5];var COMPANYID=process[_0xa52c('0xb')][0x6]&&process[_0xa52c('0xb')][0x6]!==_0xa52c('0xc')&&process['argv'][0x6]!==_0xa52c('0xd')?process[_0xa52c('0xb')][0x6]:null;var DUPLICATES=process[_0xa52c('0xb')][0x7]&&process[_0xa52c('0xb')][0x7]!==_0xa52c('0xc')&&process[_0xa52c('0xb')][0x7]!==_0xa52c('0xd')?process[_0xa52c('0xb')][0x7]:null;if(!process[_0xa52c('0xb')][0x8]||process[_0xa52c('0xb')][0x8]==='undefined'||process[_0xa52c('0xb')][0x8]===_0xa52c('0xd')){throw new Error(_0xa52c('0x12'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x55d539){logger[_0xa52c('0x13')](_0x55d539);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(_0x267f54,_0x38cf59,_0x2d0657,_0x5b61e2){var _0x2fb6c2={'message':_0x38cf59};_0x2fb6c2[_0x267f54]=!![];if(_0x2d0657){_0x2fb6c2[_0xa52c('0x14')]=_0x2d0657;}if(_0x5b61e2){_0x2fb6c2['index']=_0x5b61e2;}return _0x2fb6c2;}function isEmail(_0x8009d9){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))*$/[_0xa52c('0x15')](_0x8009d9);}function checkRow(_0xdfba7c,_0x1d90e6,_0xa1ee85){return new BPromise(function(_0x5469ef,_0x2729b6){if(_['isNil'](_0xdfba7c)){return _0x2729b6(handleCheckRowError(_0xa52c('0x13'),_0xa52c('0x16'),null,_0xa1ee85));}if(_0xdfba7c['errors']&&_0xdfba7c['errors'][_0xa52c('0x17')]){var _0x336bc9=_[_0xa52c('0x18')](_0xdfba7c[_0xa52c('0x19')],_0xa52c('0x1a'))[_0xa52c('0x1b')](';');return _0x2729b6(handleCheckRowError(_0xa52c('0x13'),_0x336bc9,null,_0xa1ee85));}var _0x369132={};for(var _0x4b9cbd in FIELDS){if(FIELDS[_0xa52c('0x1c')](_0x4b9cbd)&&FIELDS[_0x4b9cbd]){_0x369132[_0x4b9cbd]=_0xdfba7c['data'][0x0][FIELDS[_0x4b9cbd]]||_0xdfba7c[_0xa52c('0x1d')][0x0]['\ufeff'+FIELDS[_0x4b9cbd]];}}if(!_0x369132[_0xa52c('0x1e')]){return _0x2729b6(handleCheckRowError(_0xa52c('0x13'),_0xa52c('0x1f'),null,_0xa1ee85));}if(!_0x369132['phone']){return _0x2729b6(handleCheckRowError(_0xa52c('0x13'),_0xa52c('0x20'),null,_0xa1ee85));}if(_0x369132['birthDate']){var _0x46fc20=moment(_0x369132['birthDate'],_0xa52c('0x21'));if(!_0x46fc20[_0xa52c('0x22')]()){return _0x2729b6(handleCheckRowError(_0xa52c('0x13'),_0xa52c('0x23'),null,_0xa1ee85));}}if(_0x369132[_0xa52c('0x24')]){if(!isEmail(_0x369132[_0xa52c('0x24')])){return _0x2729b6(handleCheckRowError('error',_0xa52c('0x25'),null,_0xa1ee85));}}_0x369132[_0xa52c('0x26')]=LISTID;_0x369132['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xa52c('0x17')]&&_0x1d90e6){var _0x2064c0={};for(var _0x13f2ad=0x0,_0x1674b4=DUPLICATES[_0xa52c('0x17')];_0x13f2ad<_0x1674b4;_0x13f2ad+=0x1){_0x2064c0[DUPLICATES[_0x13f2ad]]=_0x369132[DUPLICATES[_0x13f2ad]];}var _0xd18a45=_[_0xa52c('0x27')](_0x1d90e6,_0x2064c0);if(_0xd18a45){return _0x2729b6(handleCheckRowError('duplicate',_0xa52c('0x28'),_0xd18a45,_0xa1ee85));}}return db[_0xa52c('0x29')][_0xa52c('0x2a')](_0x369132,{'raw':!![],'hooks':![],'fields':_[_0xa52c('0x2b')](_0x369132)})[_0xa52c('0x2c')](function(_0x26d0fb){if(DUPLICATES&&DUPLICATES['length']&&_0x1d90e6){_0x1d90e6[_0xa52c('0x2d')](_['pick'](_0x369132,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x26d0fb['id'];return _0x5469ef();})['catch'](function(_0x38bdb8){return _0x2729b6(handleCheckRowError(_0xa52c('0x13'),_0xa52c('0x2e')+(_0x38bdb8['message']||JSON['stringify'](_0x38bdb8)),null,_0xa1ee85));});});}function checkHopper(){function _0x253ae1(){return function(_0x76321c){logger[_0xa52c('0x13')]('cmContact',_0xa52c('0x2f'),util['inspect'](_0x76321c,{'showHidden':![],'depth':null}));};}var _0x2d5387=function(_0x4032f5,_0x22bd99){var _0x11321f=squel[_0xa52c('0x30')]()[_0xa52c('0x31')](_0xa52c('0x32'))['fromQuery'](['phone',_0xa52c('0x33'),_0xa52c('0x34'),_0xa52c('0x26'),_0x22bd99,'createdAt',_0xa52c('0x35')],squel[_0xa52c('0x36')]()[_0xa52c('0x37')](_0xa52c('0x38'),_0xa52c('0x38'))[_0xa52c('0x37')]('NOW()','scheduledAt')[_0xa52c('0x37')]('id',_0xa52c('0x34'))[_0xa52c('0x37')](LISTID[_0xa52c('0x39')](),_0xa52c('0x26'))[_0xa52c('0x37')](_0x4032f5['id'][_0xa52c('0x39')](),_0x22bd99)[_0xa52c('0x37')](_0xa52c('0x3a'),'createdAt')[_0xa52c('0x37')]('NOW()',_0xa52c('0x35'))[_0xa52c('0x3b')](_0xa52c('0x3c'))[_0xa52c('0x3d')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',LISTID[_0xa52c('0x39')]())['where'](_0xa52c('0x3e'))[_0xa52c('0x3d')](_0xa52c('0x3f'),squel[_0xa52c('0x36')]()['field'](_0xa52c('0x38'))[_0xa52c('0x3b')](_0xa52c('0x32'))[_0xa52c('0x3d')](_0x22bd99+_0xa52c('0x40'),_0x4032f5['id']['toString']())))[_0xa52c('0x39')]();return _0x11321f;};var _0x1ea1eb=function(_0x20c5dd,_0x3f9493){var _0x4c2b78=squel[_0xa52c('0x30')]()['into']('cm_hopper')['fromQuery']([_0xa52c('0x38'),'scheduledAt',_0xa52c('0x34'),_0xa52c('0x26'),_0x3f9493,_0xa52c('0x41'),'updatedAt'],squel[_0xa52c('0x36')]()[_0xa52c('0x37')](_0xa52c('0x38'),_0xa52c('0x38'))[_0xa52c('0x37')](_0xa52c('0x3a'),_0xa52c('0x33'))[_0xa52c('0x37')]('id',_0xa52c('0x34'))[_0xa52c('0x37')](LISTID[_0xa52c('0x39')](),_0xa52c('0x26'))['field'](_0x20c5dd['id'][_0xa52c('0x39')](),_0x3f9493)[_0xa52c('0x37')](_0xa52c('0x3a'),_0xa52c('0x41'))[_0xa52c('0x37')](_0xa52c('0x3a'),_0xa52c('0x35'))['from']('cm_contacts')[_0xa52c('0x3d')]('deletedAt\x20IS\x20NULL')['where'](_0xa52c('0x42'),LISTID[_0xa52c('0x39')]())[_0xa52c('0x3d')](_0xa52c('0x43'),squel['str'](hopperContacts))[_0xa52c('0x3d')](_0xa52c('0x3e'))[_0xa52c('0x3d')](_0xa52c('0x3f'),squel[_0xa52c('0x36')]()[_0xa52c('0x37')](_0xa52c('0x44'))[_0xa52c('0x3b')]('cm_hopper_final')[_0xa52c('0x3d')](_0x3f9493+_0xa52c('0x40'),_0x20c5dd['id']['toString']()))[_0xa52c('0x3d')](_0xa52c('0x3f'),squel[_0xa52c('0x36')]()['field'](_0xa52c('0x38'))[_0xa52c('0x3b')](_0xa52c('0x32'))[_0xa52c('0x3d')](_0x3f9493+_0xa52c('0x40'),_0x20c5dd['id'][_0xa52c('0x39')]())))['toString']();return _0x4c2b78;};function _0x44a360(_0x5c8fcc,_0x12aa77){var _0x428328=squel[_0xa52c('0x30')]()['into'](_0xa52c('0x32'))[_0xa52c('0x45')]([_0xa52c('0x38'),_0xa52c('0x33'),'ContactId',_0xa52c('0x26'),_0x12aa77,_0xa52c('0x41'),_0xa52c('0x35')],squel['select']()[_0xa52c('0x37')](_0xa52c('0x38'),_0xa52c('0x38'))[_0xa52c('0x37')](_0xa52c('0x3a'),'scheduledAt')[_0xa52c('0x37')]('id',_0xa52c('0x34'))[_0xa52c('0x37')](LISTID[_0xa52c('0x39')](),_0xa52c('0x26'))[_0xa52c('0x37')](_0x5c8fcc['id']['toString'](),_0x12aa77)[_0xa52c('0x37')](_0xa52c('0x3a'),_0xa52c('0x41'))[_0xa52c('0x37')]('NOW()','updatedAt')[_0xa52c('0x3b')](_0xa52c('0x3c'))[_0xa52c('0x3d')]('deletedAt\x20IS\x20NULL')[_0xa52c('0x3d')]('ListId\x20=\x20?',LISTID['toString']())[_0xa52c('0x3d')](_0xa52c('0x43'),squel['str'](hopperContacts))[_0xa52c('0x3d')](_0xa52c('0x3e')))[_0xa52c('0x39')]();return _0x428328;}function _0x57e48a(_0x335b7c,_0x457c10){var _0x4acd46=squel[_0xa52c('0x30')]()[_0xa52c('0x31')](_0xa52c('0x46'))[_0xa52c('0x45')](['phone','ContactId',_0xa52c('0x26'),_0x457c10,_0xa52c('0x41'),_0xa52c('0x35')],squel[_0xa52c('0x36')]()[_0xa52c('0x37')](_0xa52c('0x38'),'phone')[_0xa52c('0x37')]('id',_0xa52c('0x34'))['field'](LISTID[_0xa52c('0x39')](),'ListId')[_0xa52c('0x37')](_0x335b7c['id'][_0xa52c('0x39')](),_0x457c10)[_0xa52c('0x37')](_0xa52c('0x3a'),_0xa52c('0x41'))[_0xa52c('0x37')]('NOW()',_0xa52c('0x35'))['from'](_0xa52c('0x3c'))[_0xa52c('0x3d')]('deletedAt\x20IS\x20NULL')[_0xa52c('0x3d')](_0xa52c('0x42'),LISTID[_0xa52c('0x39')]())[_0xa52c('0x3d')](_0xa52c('0x43'),squel[_0xa52c('0x47')](hopperContacts))['where'](_0xa52c('0x3e')))[_0xa52c('0x39')]();return _0x4acd46;}return db['VoiceQueue'][_0xa52c('0x48')]({'where':{'type':'outbound'},'attributes':['id',_0xa52c('0x49')],'include':[{'model':db['CmList'],'as':_0xa52c('0x4a'),'where':{'id':LISTID}}]})[_0xa52c('0x2c')](function(_0x584949){var _0x148cd7=[];if(_0x584949){var _0x49a3c5;for(var _0x31249f=0x0,_0x59f8ca;_0x31249f<_0x584949['length'];_0x31249f+=0x1){_0x59f8ca=_0x584949[_0x31249f][_0xa52c('0x4b')]({'plain':!![]});switch(_0x59f8ca[_0xa52c('0x49')]){case _0xa52c('0x4c'):_0x148cd7[_0xa52c('0x2d')](db[_0xa52c('0x4d')][_0xa52c('0x4e')](_0x1ea1eb(_0x59f8ca,_0xa52c('0x4f')))[_0xa52c('0x2c')](function(){})[_0xa52c('0x50')](_0x253ae1()));break;case _0xa52c('0x51'):_0x148cd7[_0xa52c('0x2d')](db[_0xa52c('0x4d')]['query'](_0x2d5387(_0x59f8ca,_0xa52c('0x4f')))['then'](function(){})[_0xa52c('0x50')](_0x253ae1()));break;default:_0x148cd7['push'](db[_0xa52c('0x4d')][_0xa52c('0x4e')](_0x44a360(_0x59f8ca,_0xa52c('0x4f')))[_0xa52c('0x2c')](function(){})[_0xa52c('0x50')](_0x253ae1()));}}}return _0x148cd7;})[_0xa52c('0x52')]()[_0xa52c('0x2c')](function(){return db[_0xa52c('0x53')][_0xa52c('0x48')]({'where':{'type':_0xa52c('0x54')},'attributes':['id'],'include':[{'model':db[_0xa52c('0x55')],'as':_0xa52c('0x56'),'where':{'id':LISTID}}]})['then'](function(_0x14fa09){var _0x402e47=[];if(_0x14fa09){var _0x321328;for(var _0x1dfe0f=0x0,_0x3a1110;_0x1dfe0f<_0x14fa09['length'];_0x1dfe0f+=0x1){_0x3a1110=_0x14fa09[_0x1dfe0f][_0xa52c('0x4b')]({'plain':!![]});_0x402e47['push'](db['sequelize']['query'](_0x57e48a(_0x3a1110,_0xa52c('0x4f')))[_0xa52c('0x2c')](function(){})[_0xa52c('0x50')](_0x253ae1()));}}return _0x402e47;})[_0xa52c('0x52')]();})[_0xa52c('0x2c')](function(){return db[_0xa52c('0x57')][_0xa52c('0x48')]({'attributes':['id',_0xa52c('0x49')],'include':[{'model':db[_0xa52c('0x55')],'as':_0xa52c('0x4a'),'where':{'id':LISTID}}]})['then'](function(_0x4bcaae){var _0x5a64c3=[];if(_0x4bcaae){for(var _0x2230ee=0x0,_0x160716;_0x2230ee<_0x4bcaae[_0xa52c('0x17')];_0x2230ee+=0x1){_0x160716=_0x4bcaae[_0x2230ee][_0xa52c('0x4b')]({'plain':!![]});switch(_0x160716['dialCheckDuplicateType']){case _0xa52c('0x4c'):_0x5a64c3[_0xa52c('0x2d')](db[_0xa52c('0x4d')][_0xa52c('0x4e')](_0x1ea1eb(_0x160716,_0xa52c('0x58')))[_0xa52c('0x2c')](function(){})['catch'](_0x253ae1()));break;case _0xa52c('0x51'):_0x5a64c3['push'](db[_0xa52c('0x4d')][_0xa52c('0x4e')](_0x2d5387(_0x160716,_0xa52c('0x58')))[_0xa52c('0x2c')](function(){})[_0xa52c('0x50')](_0x253ae1()));break;default:_0x5a64c3[_0xa52c('0x2d')](db[_0xa52c('0x4d')][_0xa52c('0x4e')](_0x44a360(_0x160716,_0xa52c('0x58')))[_0xa52c('0x2c')](function(){})[_0xa52c('0x50')](_0x253ae1()));}}}return _0x5a64c3;})[_0xa52c('0x52')]();})[_0xa52c('0x2c')](function(){return db[_0xa52c('0x57')]['findAll']({'attributes':['id'],'include':[{'model':db[_0xa52c('0x55')],'as':_0xa52c('0x56'),'where':{'id':LISTID}}]})['then'](function(_0x920c5d){var _0x4bdb10=[];if(_0x920c5d){for(var _0x2162c6=0x0,_0xb5a9a6;_0x2162c6<_0x920c5d[_0xa52c('0x17')];_0x2162c6+=0x1){_0xb5a9a6=_0x920c5d[_0x2162c6][_0xa52c('0x4b')]({'plain':!![]});_0x4bdb10[_0xa52c('0x2d')](db[_0xa52c('0x4d')]['query'](_0x57e48a(_0xb5a9a6,'CampaignId'))['then'](function(){})[_0xa52c('0x50')](_0x253ae1()));}}return _0x4bdb10;})[_0xa52c('0x52')]();})[_0xa52c('0x50')](function(_0x1c11b9){logger[_0xa52c('0x13')](_0xa52c('0x59'),_0xa52c('0x5a'),_0x1c11b9[_0xa52c('0x1a')]);});}var processPromises=function(_0x3d8e8a){return BPromise[_0xa52c('0x52')](promises)[_0xa52c('0x2c')](function(_0x4c923d){})[_0xa52c('0x50')](function(_0x32cdee){logger[_0xa52c('0x13')](_0xa52c('0x5b'),JSON[_0xa52c('0x5c')](_0x32cdee));})[_0xa52c('0x5d')](function(){socket['emit'](_0xa52c('0x5e')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x3d8e8a){return _0x3d8e8a[_0xa52c('0x5f')]();}});};var endCsv=function(){return BPromise[_0xa52c('0x60')]()['then'](function(){if(hopperContacts){return checkHopper();}})[_0xa52c('0x2c')](function(){socket[_0xa52c('0x61')](_0xa52c('0x5e')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xa52c('0x62')](FILEPATH);}catch(_0x308869){logger['error'](_0xa52c('0x63'),JSON[_0xa52c('0x5c')](_0x308869));}finally{process[_0xa52c('0x64')](0x0);}});};process['on'](_0xa52c('0x65'),function(){logger[_0xa52c('0x66')](_0xa52c('0x67'));endCsv();});function main(){return BPromise[_0xa52c('0x60')]()[_0xa52c('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0xa52c('0x29')][_0xa52c('0x48')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x1c2915){var _0x16d1ed=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xa52c('0x68')](_0x16d1ed,{'header':!![],'skipEmptyLines':!![],'step':function(_0x251df8,_0x3b8e92){total+=0x1;var _0x367615=total;promises[_0xa52c('0x2d')](checkRow(_0x251df8,_0x1c2915,_0x367615)['then'](function(){success+=0x1;})[_0xa52c('0x50')](function(_0x5737fc){if(_0x5737fc[_0xa52c('0x13')]){errors+=0x1;delete _0x5737fc[_0xa52c('0x13')];}else if(_0x5737fc[_0xa52c('0x69')]){duplicates+=0x1;delete _0x5737fc['duplicate'];}rows[_0xa52c('0x2d')](_0x5737fc);}));if(total%0xc8===0x0){_0x3b8e92[_0xa52c('0x6a')]();return processPromises(_0x3b8e92);}},'complete':function(){return processPromises()[_0xa52c('0x2c')](function(){logger[_0xa52c('0x66')](_0xa52c('0x6b'));endCsv();});},'error':function(_0xe32c76,_0x4d83de){logger['info'](_0xa52c('0x6c'),JSON[_0xa52c('0x5c')](_0xe32c76));endCsv();}});})[_0xa52c('0x50')](function(_0x304fd8){logger[_0xa52c('0x13')](_0xa52c('0x6d'),JSON[_0xa52c('0x5c')](_0x304fd8));});}main();
\ No newline at end of file
index 5892380..436b016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe068=['moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','redis','defaults','localhost','format','test','select','field','phone','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.id','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','cm_hopper_black','ListId\x20=\x20?','\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','min_id','group','Received\x20SIGINT','message','exit','push','code','info','sequelize','query','spread','catch','error','main','stringify','send','start','binding','socket_timestamp','root','server/files/tmp','.csv','header','writeFileSync','parse','createReadStream','data','length','errors','hasOwnProperty','replace','YYYY-MM-DD\x20HH:mm:ss','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','UserId','isNumber','includes','agent\x20not\x20exists','email','dateOfBirth','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','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()','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists','each','then','affectedRows','unlink','complete','argv','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird'];(function(_0x1b1743,_0x3cc1d7){var _0x1770d7=function(_0x505bea){while(--_0x505bea){_0x1b1743['push'](_0x1b1743['shift']());}};_0x1770d7(++_0x3cc1d7);}(_0xe068,0x111));var _0x8e06=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe068[_0x3dd15e];return _0x231fd0;};'use strict';var fs=require('fs');var path=require(_0x8e06('0x0'));var _=require(_0x8e06('0x1'));var Papa=require(_0x8e06('0x2'));var util=require(_0x8e06('0x3'));var BPromise=require(_0x8e06('0x4'));var moment=require(_0x8e06('0x5'));var squel=require(_0x8e06('0x6'));var Redis=require(_0x8e06('0x7'));var db=require(_0x8e06('0x8'))['db'];var config=require(_0x8e06('0x9'));var logger=require(_0x8e06('0xa'))('import');config[_0x8e06('0xb')]=_[_0x8e06('0xc')](config[_0x8e06('0xb')],{'host':_0x8e06('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8e06('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x8e06('0xe')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x571787){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))*$/[_0x8e06('0xf')](_0x571787);}function selectNotIn(_0x5b5860,_0x2f560c,_0x76f5f0,_0x1261e4,_0x1b9d35){return squel[_0x8e06('0x10')]()[_0x8e06('0x11')](_0x8e06('0x12'))['from'](_0x1261e4)[_0x8e06('0x13')](_0x2f560c,null,_0x2f560c+_0x8e06('0x14')+_0x1261e4+'.'+_0x76f5f0)[_0x8e06('0x15')](_0x1261e4+'.'+_0x76f5f0+_0x8e06('0x16')+_0x5b5860+'.'+_0x76f5f0)['where'](_0x2f560c+_0x8e06('0x17')+_0x1b9d35[_0x8e06('0x13')]()+')');}function insertCmHopper(_0x487183,_0x51af9c,_0x6d6463,_0x5c3928,_0x415d9e){var _0x17843a=[_0x8e06('0x18'),'cm_contacts.scheduledat',_0x8e06('0x19'),'cm_contacts.ListId',_0x51af9c+'.'+_0x5c3928,'cm_contacts.createdAt',_0x8e06('0x1a'),_0x8e06('0x1b'),_0x8e06('0x1c'),'\x22'+_0x415d9e+'\x22'];return squel[_0x8e06('0x1d')]()[_0x8e06('0x1e')](_0x8e06('0x1f'))[_0x8e06('0x20')]([_0x8e06('0x12'),_0x8e06('0x21'),_0x8e06('0x22'),_0x8e06('0x23'),_0x5c3928,_0x8e06('0x24'),_0x8e06('0x25'),_0x8e06('0x26'),'UserId','recallme'],squel[_0x8e06('0x10')]()[_0x8e06('0x27')](_0x17843a)[_0x8e06('0x28')](_0x51af9c)['join'](_0x8e06('0x29'),null,_0x8e06('0x2a')+_0x51af9c+_0x8e06('0x2b'))[_0x8e06('0x13')](_0x6d6463,null,_0x6d6463+_0x8e06('0x14')+_0x51af9c+'.'+_0x5c3928)[_0x8e06('0x15')](_0x51af9c+_0x8e06('0x2c'),_0x487183)[_0x8e06('0x15')](_0x8e06('0x2d'),NOW)['where'](_0x8e06('0x2e'),selectNotIn(_0x51af9c,_0x6d6463,_0x5c3928,_0x8e06('0x1f'),[_0x8e06('0x2f'),'\x22onlyIfOpen\x22']))[_0x8e06('0x15')](_0x8e06('0x2e'),selectNotIn(_0x51af9c,_0x6d6463,_0x5c3928,'cm_hopper',[_0x8e06('0x2f')])))[_0x8e06('0x30')]();}function insertCmHopperBlack(_0x227af1,_0x2d20cc,_0x8266d9,_0x599818){var _0x25dd12=[_0x8e06('0x18'),_0x8e06('0x19'),'cm_contacts.ListId',_0x2d20cc+'.'+_0x599818,'cm_contacts.createdAt',_0x8e06('0x1a')];return squel[_0x8e06('0x1d')]()[_0x8e06('0x1e')](_0x8e06('0x31'))[_0x8e06('0x20')](['phone','ContactId','ListId',_0x599818,'createdAt',_0x8e06('0x25')],squel[_0x8e06('0x10')]()[_0x8e06('0x27')](_0x25dd12)[_0x8e06('0x28')](_0x2d20cc)[_0x8e06('0x13')](_0x8e06('0x29'),null,'cm_contacts.ListId\x20=\x20'+_0x2d20cc+_0x8e06('0x2b'))['join'](_0x8266d9,null,_0x8266d9+_0x8e06('0x14')+_0x2d20cc+'.'+_0x599818)[_0x8e06('0x15')](_0x2d20cc+_0x8e06('0x2c'),_0x227af1)[_0x8e06('0x15')](_0x8e06('0x2d'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x8e06('0x11')](_0x8e06('0x12'))[_0x8e06('0x28')](_0x8e06('0x31'))['where'](_0x8e06('0x32'),_0x227af1)[_0x8e06('0x15')](_0x599818+_0x8e06('0x33'),_0x2d20cc+'.'+_0x599818)))[_0x8e06('0x30')]();}function insertCmContact(_0x4500a2,_0x17e730,_0x4184e3,_0x465a70){var _0x1fb931=_[_0x8e06('0x34')](_[_0x8e06('0x35')](_0x465a70),[_0x8e06('0x23'),_0x8e06('0x36'),'createdAt',_0x8e06('0x25')]);return squel[_0x8e06('0x1d')]()['into'](_0x8e06('0x29'))[_0x8e06('0x20')](_0x1fb931,squel[_0x8e06('0x10')]()[_0x8e06('0x27')](_0x1fb931)[_0x8e06('0x28')](_0x17e730)[_0x8e06('0x15')]('('+_0x4184e3[_0x8e06('0x13')](',')+_0x8e06('0x37'),squel[_0x8e06('0x10')]()[_0x8e06('0x27')](_0x4184e3)[_0x8e06('0x28')](_0x8e06('0x29'))['where']('ListId\x20=\x20?',_0x4500a2)[_0x8e06('0x15')](_0x8e06('0x38')))[_0x8e06('0x15')](_0x8e06('0x39'),squel[_0x8e06('0x10')]()[_0x8e06('0x11')]('MIN(id)',_0x8e06('0x3a'))[_0x8e06('0x28')](_0x17e730)[_0x8e06('0x3b')](_0x4184e3[_0x8e06('0x13')](','))))[_0x8e06('0x30')]();}function handleStop(){logger['info'](_0x8e06('0x3c'));stopped=!![];}function handleUncaughtException(_0x3b0a5d){logger['error'](_0x3b0a5d[_0x8e06('0x3d')]);process[_0x8e06('0x3e')](0x1);}function handleError(_0x494ec6,_0x27214a){stats['errors'][_0x8e06('0x3f')]({'name':_0x27214a[_0x8e06('0x40')],'message':_0x27214a['message'],'row':_0x494ec6});}function handleQuery(_0x23c5fa){logger[_0x8e06('0x41')](_0x23c5fa);return db[_0x8e06('0x42')][_0x8e06('0x43')](_0x23c5fa)[_0x8e06('0x44')](function(_0x4f4323){results[_0x8e06('0x3f')](_0x4f4323);})[_0x8e06('0x45')](function(_0x6be189){logger[_0x8e06('0x46')](_0x6be189['message']);});}function main(_0x3f2522,_0x19da12,_0x4a065c,_0x34ff5d){logger['info'](_0x8e06('0x47'),_0x3f2522,JSON[_0x8e06('0x48')](_0x19da12));process[_0x8e06('0x49')](_0x8e06('0x4a'));var _0x1c2f77=_0x19da12[_0x8e06('0x4b')];var _0x44f1c8=_0x19da12[_0x8e06('0x4c')];var _0x36fb7a=path[_0x8e06('0x13')](config[_0x8e06('0x4d')],_0x8e06('0x4e'),_0x44f1c8+_0x8e06('0x4f'));var _0x485237=_[_0x8e06('0x35')](_0x1c2f77)[_0x8e06('0x13')]();logger[_0x8e06('0x41')](_0x8e06('0x50'),_0x485237);fs[_0x8e06('0x51')](_0x36fb7a,_0x485237+'\x0a');Papa[_0x8e06('0x52')](fs[_0x8e06('0x53')](_0x3f2522),{'header':!![],'skipEmptyLines':!![],'step':function(_0x41d2ab,_0x2624bf){try{for(var _0x245a0e=0x0,_0x11b44a=[];_0x245a0e<_0x41d2ab[_0x8e06('0x54')][_0x8e06('0x55')];_0x245a0e++){stats['rows']+=0x1;if(_0x41d2ab[_0x8e06('0x56')][_0x245a0e]){handleError(_0x41d2ab[_0x8e06('0x54')][_0x245a0e],_0x41d2ab[_0x8e06('0x56')][_0x245a0e]);}else{var _0x477e37=[];for(var _0x168a93 in _0x1c2f77){if(_0x1c2f77[_0x8e06('0x57')](_0x168a93)){if(_0x41d2ab[_0x8e06('0x54')][_0x245a0e][_0x1c2f77[_0x168a93]]){var _0x59361e=_['trim'](_0x41d2ab['data'][_0x245a0e][_0x1c2f77[_0x168a93]][_0x8e06('0x58')](/"/g,'\x27'));switch(_0x168a93){case _0x8e06('0x21'):var _0x3a32fd=moment(_0x59361e,_0x8e06('0x59'),!![]);if(_0x3a32fd['isValid']()){_0x11b44a['push']('\x22'+_0x59361e+'\x22');}else{_0x477e37[_0x8e06('0x3f')](_0x8e06('0x5a'));}break;case _0x8e06('0x26'):var _0x386c91=parseInt(_0x59361e);_0x59361e=_[_0x8e06('0x5b')](_0x386c91)||_0x386c91<0x0||_0x386c91>0x4?_0x34ff5d?0x3:0x2:_0x386c91;_0x11b44a[_0x8e06('0x3f')]('\x22'+_0x59361e+'\x22');break;case _0x8e06('0x5c'):var _0x171696=parseInt(_0x59361e);if(_[_0x8e06('0x5d')](_0x171696)&&_[_0x8e06('0x5e')](_0x4a065c,_0x171696)){_0x11b44a[_0x8e06('0x3f')]('\x22'+_0x171696+'\x22');}else{_0x477e37['push'](_0x8e06('0x5f'));}break;case _0x8e06('0x60'):if(isEmail(_0x59361e)){_0x11b44a[_0x8e06('0x3f')]('\x22'+_0x59361e+'\x22');}else{_0x477e37[_0x8e06('0x3f')]('email\x20wrong\x20format');}break;case _0x8e06('0x61'):var _0x33de98=moment(_0x59361e,_0x8e06('0x62'),!![]);if(_0x33de98[_0x8e06('0x63')]()){_0x11b44a[_0x8e06('0x3f')]('\x22'+_0x59361e+'\x22');}else{_0x477e37[_0x8e06('0x3f')](_0x8e06('0x64'));}break;default:_0x11b44a[_0x8e06('0x3f')]('\x22'+_0x59361e+'\x22');}}else{switch(_0x168a93){case _0x8e06('0x65'):case _0x8e06('0x12'):_0x477e37[_0x8e06('0x3f')](_0x168a93+_0x8e06('0x66'));break;default:_0x11b44a[_0x8e06('0x3f')]('\x22\x22');}}}}if(_0x477e37['length']){handleError(_0x41d2ab['data'][_0x245a0e],{'code':_0x8e06('0x67'),'message':_0x477e37[_0x8e06('0x13')]()});}else{fs[_0x8e06('0x68')](_0x36fb7a,_0x11b44a['join']()+'\x0a');}_0x11b44a=[];}if(!(stats['rows']%0xc8)){socket['emit'](_0x8e06('0x69')+_0x44f1c8,stats);stats[_0x8e06('0x56')]=[];}}if(stopped){logger[_0x8e06('0x41')](_0x8e06('0x6a'));_0x2624bf[_0x8e06('0x6b')]();}}catch(_0x487c6a){handleError(_0x41d2ab[_0x8e06('0x54')][_0x245a0e],{'code':_0x8e06('0x6c'),'message':_0x487c6a[_0x8e06('0x3d')]});logger[_0x8e06('0x46')](_0x8e06('0x6d'),_0x487c6a[_0x8e06('0x3d')]);}},'complete':function(){try{var _0x296fe9=[];var _0x252129=_0x8e06('0x29');if(_0x19da12[_0x8e06('0x6e')]&&_0x19da12[_0x8e06('0x6e')][_0x8e06('0x55')]){_0x252129='cm_contacts_'+_0x44f1c8;_0x296fe9['push'](_0x8e06('0x6f')+_0x252129+_0x8e06('0x70'));}var _0x4ebb6d=util[_0x8e06('0xe')](_0x8e06('0x71'),_0x36fb7a,_0x252129,_0x485237,_0x19da12[_0x8e06('0x23')],_0x19da12['CompanyId']||null,NOW,NOW);if(_[_0x8e06('0x72')](_0x1c2f77[_0x8e06('0x21')])){_0x4ebb6d+=_0x8e06('0x73');}_0x296fe9['push'](_0x4ebb6d);if(_0x19da12['duplicates']&&_0x19da12[_0x8e06('0x6e')]['length']){_0x296fe9[_0x8e06('0x3f')](insertCmContact(_0x19da12[_0x8e06('0x23')],_0x252129,_0x19da12['duplicates'],_0x1c2f77));_0x296fe9[_0x8e06('0x3f')]('DROP\x20TABLE\x20'+_0x252129+';');}_0x296fe9[_0x8e06('0x3f')](insertCmHopper(_0x19da12[_0x8e06('0x23')],_0x8e06('0x74'),_0x8e06('0x75'),_0x8e06('0x76'),_0x34ff5d));_0x296fe9[_0x8e06('0x3f')](insertCmHopperBlack(_0x19da12[_0x8e06('0x23')],'voice_queues_has_cm_blacklists',_0x8e06('0x75'),'VoiceQueueId'));_0x296fe9[_0x8e06('0x3f')](insertCmHopper(_0x19da12['ListId'],_0x8e06('0x77'),_0x8e06('0x78'),_0x8e06('0x79'),_0x34ff5d));_0x296fe9[_0x8e06('0x3f')](insertCmHopperBlack(_0x19da12[_0x8e06('0x23')],_0x8e06('0x7a'),_0x8e06('0x78'),_0x8e06('0x79')));BPromise[_0x8e06('0x7b')](_0x296fe9,handleQuery)[_0x8e06('0x7c')](function(_0x70ad0f){stats['finish']=!![];stats['affectedRows']=_0x19da12['duplicates']&&_0x19da12[_0x8e06('0x6e')][_0x8e06('0x55')]?results[0x2][_0x8e06('0x7d')]:results[0x0][_0x8e06('0x7d')];socket['emit']('contact:import:'+_0x44f1c8,stats);fs[_0x8e06('0x7e')](_0x3f2522);fs[_0x8e06('0x7e')](_0x36fb7a);process[_0x8e06('0x3e')](0x0);})[_0x8e06('0x45')](function(_0x21471f){logger[_0x8e06('0x46')](_0x21471f[_0x8e06('0x3d')]);process['exit'](0x1);});}catch(_0x404c39){logger['error'](_0x8e06('0x7f'),_0x404c39[_0x8e06('0x3d')]);process[_0x8e06('0x3e')](0x1);}},'error':function(_0xdf6b20,_0x8ec57e,_0x2de828,_0x5640d8){throw new Error(_0x5640d8);}});}function validate(){if(process[_0x8e06('0x80')]&&process['argv'][_0x8e06('0x55')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x9ab3d2=path['join'](config[_0x8e06('0x4d')],_0x8e06('0x4e'),process[_0x8e06('0x80')][0x2]);if(!fs[_0x8e06('0x81')](_0x9ab3d2)){throw new Error(_0x8e06('0x82'));}var _0x3748ba={};try{_0x3748ba=JSON[_0x8e06('0x52')](process['argv'][0x3]);if(!_0x3748ba[_0x8e06('0x4b')]){throw new Error(_0x8e06('0x83'));}if(!_0x3748ba['binding']['phone']){throw new Error(_0x8e06('0x84'));}if(!_0x3748ba[_0x8e06('0x4b')][_0x8e06('0x65')]){throw new Error(_0x8e06('0x85'));}var _0x58b7e9=0x0;if(_0x3748ba[_0x8e06('0x4b')]['UserId']){_0x58b7e9=0x1;}if(!_0x3748ba['ListId']){throw new Error(_0x8e06('0x86'));}}catch(_0x3636d0){throw new Error(_0x8e06('0x87'));}var _0x288699=[];try{_0x288699=_[_0x8e06('0x88')](JSON[_0x8e06('0x52')](process['argv'][0x4]),'id');}catch(_0xb9134a){logger[_0x8e06('0x41')]('No\x20agent\x20available');}main(_0x9ab3d2,_0x3748ba,_0x288699,_0x58b7e9);}validate();process['on'](_0x8e06('0x89'),handleStop);process['on'](_0x8e06('0x8a'),handleUncaughtException);
\ No newline at end of file
+var _0x2a1c=['replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','appendFileSync','contact:import:','SystemError','step','duplicates','cm_contacts_','\x20LIKE\x20cm_contacts;','format','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\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_has_cm_blacklists','campaigns','CampaignId','each','then','finish','affectedRows','emit','unlink','complete','argv','root','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','lodash','papaparse','util','bluebird','squel','ioredis','../../../mysqldb','../../../config/environment','import','redis','defaults','socket.io-emitter','YYYY-MM-DD\x20HH:mm:ss','select','phone','from','join','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','cm_contacts.createdAt','insert','fromQuery','cm_contacts.createdAt\x20=\x20?','cm_hopper_black','\x20=\x20?','keys','ListId\x20=\x20?','deletedAt\x20IS\x20NULL','field','MIN(id)','Received\x20SIGINT','error','message','exit','errors','push','code','info','sequelize','catch','main','stringify','send','start','binding','socket_timestamp','server/files/tmp','.csv','header','writeFileSync','parse','data','length','rows','trim'];(function(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0x2a1c,0x1b6));var _0xc2a1=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x2a1c[_0xaa0309];return _0x5de7ce;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0xc2a1('0x0'));var Papa=require(_0xc2a1('0x1'));var util=require(_0xc2a1('0x2'));var BPromise=require(_0xc2a1('0x3'));var moment=require('moment');var squel=require(_0xc2a1('0x4'));var Redis=require(_0xc2a1('0x5'));var db=require(_0xc2a1('0x6'))['db'];var config=require(_0xc2a1('0x7'));var logger=require('../../../config/logger')(_0xc2a1('0x8'));config[_0xc2a1('0x9')]=_[_0xc2a1('0xa')](config[_0xc2a1('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xc2a1('0xb'))(new Redis(config[_0xc2a1('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()['format'](_0xc2a1('0xc'));function isEmail(_0xde6468){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'](_0xde6468);}function selectNotIn(_0x297d4c,_0x246bca,_0x39ef9c,_0x158f7b,_0x49f221){return squel[_0xc2a1('0xd')]()['field'](_0xc2a1('0xe'))[_0xc2a1('0xf')](_0x158f7b)[_0xc2a1('0x10')](_0x246bca,null,_0x246bca+'.id\x20=\x20'+_0x158f7b+'.'+_0x39ef9c)[_0xc2a1('0x11')](_0x158f7b+'.'+_0x39ef9c+_0xc2a1('0x12')+_0x297d4c+'.'+_0x39ef9c)[_0xc2a1('0x11')](_0x246bca+_0xc2a1('0x13')+_0x49f221[_0xc2a1('0x10')]()+')');}function insertCmHopper(_0x161049,_0x428ebf,_0x278200,_0x278661,_0x378f33){var _0x59dbef=[_0xc2a1('0x14'),_0xc2a1('0x15'),_0xc2a1('0x16'),_0xc2a1('0x17'),_0x428ebf+'.'+_0x278661,'cm_contacts.createdAt',_0xc2a1('0x18'),_0xc2a1('0x19'),_0xc2a1('0x1a'),'\x22'+_0x378f33+'\x22'];return squel['insert']()[_0xc2a1('0x1b')](_0xc2a1('0x1c'))['fromQuery'](['phone',_0xc2a1('0x1d'),_0xc2a1('0x1e'),_0xc2a1('0x1f'),_0x278661,_0xc2a1('0x20'),_0xc2a1('0x21'),_0xc2a1('0x22'),_0xc2a1('0x23'),_0xc2a1('0x24')],squel[_0xc2a1('0xd')]()[_0xc2a1('0x25')](_0x59dbef)[_0xc2a1('0xf')](_0x428ebf)['join'](_0xc2a1('0x26'),null,_0xc2a1('0x27')+_0x428ebf+_0xc2a1('0x28'))[_0xc2a1('0x10')](_0x278200,null,_0x278200+_0xc2a1('0x29')+_0x428ebf+'.'+_0x278661)[_0xc2a1('0x11')](_0x428ebf+_0xc2a1('0x2a'),_0x161049)[_0xc2a1('0x11')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0xc2a1('0x2b'),selectNotIn(_0x428ebf,_0x278200,_0x278661,'cm_hopper',['\x22always\x22','\x22onlyIfOpen\x22']))[_0xc2a1('0x11')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x428ebf,_0x278200,_0x278661,_0xc2a1('0x1c'),[_0xc2a1('0x2c')])))[_0xc2a1('0x2d')]();}function insertCmHopperBlack(_0x28d2fa,_0xc7a472,_0x36e0d9,_0x37dcf7){var _0x1e8b96=[_0xc2a1('0x14'),'cm_contacts.id',_0xc2a1('0x17'),_0xc7a472+'.'+_0x37dcf7,_0xc2a1('0x2e'),_0xc2a1('0x18')];return squel[_0xc2a1('0x2f')]()[_0xc2a1('0x1b')]('cm_hopper_black')[_0xc2a1('0x30')](['phone',_0xc2a1('0x1e'),_0xc2a1('0x1f'),_0x37dcf7,_0xc2a1('0x20'),'updatedAt'],squel[_0xc2a1('0xd')]()[_0xc2a1('0x25')](_0x1e8b96)[_0xc2a1('0xf')](_0xc7a472)[_0xc2a1('0x10')](_0xc2a1('0x26'),null,_0xc2a1('0x27')+_0xc7a472+_0xc2a1('0x28'))[_0xc2a1('0x10')](_0x36e0d9,null,_0x36e0d9+'.id\x20=\x20'+_0xc7a472+'.'+_0x37dcf7)['where'](_0xc7a472+_0xc2a1('0x2a'),_0x28d2fa)[_0xc2a1('0x11')](_0xc2a1('0x31'),NOW)['where'](_0xc2a1('0x2b'),squel[_0xc2a1('0xd')]()['field']('phone')[_0xc2a1('0xf')](_0xc2a1('0x32'))['where']('ListId\x20=\x20?',_0x28d2fa)[_0xc2a1('0x11')](_0x37dcf7+_0xc2a1('0x33'),_0xc7a472+'.'+_0x37dcf7)))['toString']();}function insertCmContact(_0x2bed52,_0x344dea,_0x4e4136,_0x6ad0a5){var _0x385704=_['concat'](_[_0xc2a1('0x34')](_0x6ad0a5),['ListId','CompanyId',_0xc2a1('0x20'),_0xc2a1('0x21')]);return squel['insert']()[_0xc2a1('0x1b')]('cm_contacts')[_0xc2a1('0x30')](_0x385704,squel[_0xc2a1('0xd')]()[_0xc2a1('0x25')](_0x385704)[_0xc2a1('0xf')](_0x344dea)['where']('('+_0x4e4136['join'](',')+')\x20NOT\x20IN\x20?',squel[_0xc2a1('0xd')]()[_0xc2a1('0x25')](_0x4e4136)[_0xc2a1('0xf')](_0xc2a1('0x26'))[_0xc2a1('0x11')](_0xc2a1('0x35'),_0x2bed52)[_0xc2a1('0x11')](_0xc2a1('0x36')))[_0xc2a1('0x11')]('id\x20IN\x20?',squel['select']()[_0xc2a1('0x37')](_0xc2a1('0x38'),'min_id')[_0xc2a1('0xf')](_0x344dea)['group'](_0x4e4136[_0xc2a1('0x10')](','))))[_0xc2a1('0x2d')]();}function handleStop(){logger['info'](_0xc2a1('0x39'));stopped=!![];}function handleUncaughtException(_0x30a2ee){logger[_0xc2a1('0x3a')](_0x30a2ee[_0xc2a1('0x3b')]);process[_0xc2a1('0x3c')](0x1);}function handleError(_0x48e8c7,_0x204b26){stats[_0xc2a1('0x3d')][_0xc2a1('0x3e')]({'name':_0x204b26[_0xc2a1('0x3f')],'message':_0x204b26['message'],'row':_0x48e8c7});}function handleQuery(_0x348349){logger[_0xc2a1('0x40')](_0x348349);return db[_0xc2a1('0x41')]['query'](_0x348349)['spread'](function(_0x4f89b5){results['push'](_0x4f89b5);})[_0xc2a1('0x42')](function(_0x48294e){logger[_0xc2a1('0x3a')](_0x48294e[_0xc2a1('0x3b')]);});}function main(_0xcb9402,_0x12f25b,_0x4fd361,_0x5222f3){logger['info'](_0xc2a1('0x43'),_0xcb9402,JSON[_0xc2a1('0x44')](_0x12f25b));process[_0xc2a1('0x45')](_0xc2a1('0x46'));var _0x5e8d18=_0x12f25b[_0xc2a1('0x47')];var _0x219d59=_0x12f25b[_0xc2a1('0x48')];var _0x2fea5c=path[_0xc2a1('0x10')](config['root'],_0xc2a1('0x49'),_0x219d59+_0xc2a1('0x4a'));var _0x48f692=_[_0xc2a1('0x34')](_0x5e8d18)[_0xc2a1('0x10')]();logger[_0xc2a1('0x40')](_0xc2a1('0x4b'),_0x48f692);fs[_0xc2a1('0x4c')](_0x2fea5c,_0x48f692+'\x0a');Papa[_0xc2a1('0x4d')](fs['createReadStream'](_0xcb9402),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2a8fb5,_0x3f03f4){try{for(var _0x289eae=0x0,_0x492a87=[];_0x289eae<_0x2a8fb5[_0xc2a1('0x4e')][_0xc2a1('0x4f')];_0x289eae++){stats[_0xc2a1('0x50')]+=0x1;if(_0x2a8fb5['errors'][_0x289eae]){handleError(_0x2a8fb5[_0xc2a1('0x4e')][_0x289eae],_0x2a8fb5[_0xc2a1('0x3d')][_0x289eae]);}else{var _0x68898a=[];for(var _0x35671f in _0x5e8d18){if(_0x5e8d18['hasOwnProperty'](_0x35671f)){if(_0x2a8fb5['data'][_0x289eae][_0x5e8d18[_0x35671f]]){var _0x35e576=_[_0xc2a1('0x51')](_0x2a8fb5[_0xc2a1('0x4e')][_0x289eae][_0x5e8d18[_0x35671f]][_0xc2a1('0x52')](/"/g,'\x27'));switch(_0x35671f){case _0xc2a1('0x1d'):var _0x5d305e=moment(_0x35e576,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x5d305e[_0xc2a1('0x53')]()){_0x492a87['push']('\x22'+_0x35e576+'\x22');}else{_0x68898a[_0xc2a1('0x3e')](_0xc2a1('0x54'));}break;case _0xc2a1('0x22'):var _0x59ac54=parseInt(_0x35e576);_0x35e576=_[_0xc2a1('0x55')](_0x59ac54)||_0x59ac54<0x0||_0x59ac54>0x4?_0x5222f3?0x3:0x2:_0x59ac54;_0x492a87[_0xc2a1('0x3e')]('\x22'+_0x35e576+'\x22');break;case _0xc2a1('0x23'):var _0x4ce4e9=parseInt(_0x35e576);if(_[_0xc2a1('0x56')](_0x4ce4e9)&&_[_0xc2a1('0x57')](_0x4fd361,_0x4ce4e9)){_0x492a87[_0xc2a1('0x3e')]('\x22'+_0x4ce4e9+'\x22');}else{_0x68898a[_0xc2a1('0x3e')](_0xc2a1('0x58'));}break;case _0xc2a1('0x59'):if(isEmail(_0x35e576)){_0x492a87[_0xc2a1('0x3e')]('\x22'+_0x35e576+'\x22');}else{_0x68898a[_0xc2a1('0x3e')](_0xc2a1('0x5a'));}break;case _0xc2a1('0x5b'):var _0x3e0f4a=moment(_0x35e576,'YYYY-MM-DD',!![]);if(_0x3e0f4a[_0xc2a1('0x53')]()){_0x492a87[_0xc2a1('0x3e')]('\x22'+_0x35e576+'\x22');}else{_0x68898a['push'](_0xc2a1('0x5c'));}break;default:_0x492a87[_0xc2a1('0x3e')]('\x22'+_0x35e576+'\x22');}}else{switch(_0x35671f){case _0xc2a1('0x5d'):case _0xc2a1('0xe'):_0x68898a[_0xc2a1('0x3e')](_0x35671f+'\x20not\x20specified');break;default:_0x492a87['push']('\x22\x22');}}}}if(_0x68898a[_0xc2a1('0x4f')]){handleError(_0x2a8fb5['data'][_0x289eae],{'code':'SystemRow','message':_0x68898a['join']()});}else{fs[_0xc2a1('0x5e')](_0x2fea5c,_0x492a87['join']()+'\x0a');}_0x492a87=[];}if(!(stats[_0xc2a1('0x50')]%0xc8)){socket['emit'](_0xc2a1('0x5f')+_0x219d59,stats);stats[_0xc2a1('0x3d')]=[];}}if(stopped){logger[_0xc2a1('0x40')]('Abort\x20parser');_0x3f03f4['abort']();}}catch(_0x1a5bb5){handleError(_0x2a8fb5[_0xc2a1('0x4e')][_0x289eae],{'code':_0xc2a1('0x60'),'message':_0x1a5bb5[_0xc2a1('0x3b')]});logger[_0xc2a1('0x3a')](_0xc2a1('0x61'),_0x1a5bb5[_0xc2a1('0x3b')]);}},'complete':function(){try{var _0x40f507=[];var _0x1bc649='cm_contacts';if(_0x12f25b[_0xc2a1('0x62')]&&_0x12f25b[_0xc2a1('0x62')][_0xc2a1('0x4f')]){_0x1bc649=_0xc2a1('0x63')+_0x219d59;_0x40f507[_0xc2a1('0x3e')]('CREATE\x20TABLE\x20'+_0x1bc649+_0xc2a1('0x64'));}var _0x50a4ee=util[_0xc2a1('0x65')](_0xc2a1('0x66'),_0x2fea5c,_0x1bc649,_0x48f692,_0x12f25b[_0xc2a1('0x1f')],_0x12f25b['CompanyId']||null,NOW,NOW);if(_[_0xc2a1('0x67')](_0x5e8d18[_0xc2a1('0x1d')])){_0x50a4ee+=_0xc2a1('0x68');}_0x40f507[_0xc2a1('0x3e')](_0x50a4ee);if(_0x12f25b[_0xc2a1('0x62')]&&_0x12f25b['duplicates']['length']){_0x40f507[_0xc2a1('0x3e')](insertCmContact(_0x12f25b[_0xc2a1('0x1f')],_0x1bc649,_0x12f25b['duplicates'],_0x5e8d18));_0x40f507[_0xc2a1('0x3e')](_0xc2a1('0x69')+_0x1bc649+';');}_0x40f507[_0xc2a1('0x3e')](insertCmHopper(_0x12f25b[_0xc2a1('0x1f')],_0xc2a1('0x6a'),_0xc2a1('0x6b'),_0xc2a1('0x6c'),_0x5222f3));_0x40f507[_0xc2a1('0x3e')](insertCmHopperBlack(_0x12f25b[_0xc2a1('0x1f')],_0xc2a1('0x6d'),'voice_queues',_0xc2a1('0x6c')));_0x40f507['push'](insertCmHopper(_0x12f25b[_0xc2a1('0x1f')],'campaigns_has_cm_lists','campaigns','CampaignId',_0x5222f3));_0x40f507[_0xc2a1('0x3e')](insertCmHopperBlack(_0x12f25b[_0xc2a1('0x1f')],_0xc2a1('0x6e'),_0xc2a1('0x6f'),_0xc2a1('0x70')));BPromise[_0xc2a1('0x71')](_0x40f507,handleQuery)[_0xc2a1('0x72')](function(_0x361159){stats[_0xc2a1('0x73')]=!![];stats['affectedRows']=_0x12f25b[_0xc2a1('0x62')]&&_0x12f25b['duplicates']['length']?results[0x2][_0xc2a1('0x74')]:results[0x0][_0xc2a1('0x74')];socket[_0xc2a1('0x75')](_0xc2a1('0x5f')+_0x219d59,stats);fs[_0xc2a1('0x76')](_0xcb9402);fs[_0xc2a1('0x76')](_0x2fea5c);process[_0xc2a1('0x3c')](0x0);})[_0xc2a1('0x42')](function(_0x5b8551){logger[_0xc2a1('0x3a')](_0x5b8551[_0xc2a1('0x3b')]);process[_0xc2a1('0x3c')](0x1);});}catch(_0x7188cb){logger[_0xc2a1('0x3a')](_0xc2a1('0x77'),_0x7188cb[_0xc2a1('0x3b')]);process[_0xc2a1('0x3c')](0x1);}},'error':function(_0x27227a,_0x17eadb,_0x331844,_0x439471){throw new Error(_0x439471);}});}function validate(){if(process[_0xc2a1('0x78')]&&process[_0xc2a1('0x78')][_0xc2a1('0x4f')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x10e2b1=path[_0xc2a1('0x10')](config[_0xc2a1('0x79')],_0xc2a1('0x49'),process[_0xc2a1('0x78')][0x2]);if(!fs['existsSync'](_0x10e2b1)){throw new Error(_0xc2a1('0x7a'));}var _0x4269e7={};try{_0x4269e7=JSON[_0xc2a1('0x4d')](process[_0xc2a1('0x78')][0x3]);if(!_0x4269e7['binding']){throw new Error(_0xc2a1('0x7b'));}if(!_0x4269e7[_0xc2a1('0x47')][_0xc2a1('0xe')]){throw new Error(_0xc2a1('0x7c'));}if(!_0x4269e7[_0xc2a1('0x47')][_0xc2a1('0x5d')]){throw new Error('firstName\x20is\x20mandatory');}var _0x55063f=0x0;if(_0x4269e7[_0xc2a1('0x47')][_0xc2a1('0x23')]){_0x55063f=0x1;}if(!_0x4269e7[_0xc2a1('0x1f')]){throw new Error(_0xc2a1('0x7d'));}}catch(_0x59d099){throw new Error('body\x20id\x20mandatory');}var _0x450dc4=[];try{_0x450dc4=_[_0xc2a1('0x7e')](JSON[_0xc2a1('0x4d')](process[_0xc2a1('0x78')][0x4]),'id');}catch(_0x298c6d){logger[_0xc2a1('0x40')](_0xc2a1('0x7f'));}main(_0x10e2b1,_0x4269e7,_0x450dc4,_0x55063f);}validate();process['on'](_0xc2a1('0x80'),handleStop);process['on'](_0xc2a1('0x81'),handleUncaughtException);
\ No newline at end of file
index df120de..c2d70a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b7b=['Hold\x20Time','holdtime','Talk\x20Time','talktime','***\x20Call\x20Info\x20***','Member\x20Name','membername','UniqueId','starttime','Answer\x20Time','answertime','Complete\x20Time','Duration','duration','Billable\x20Time','billableseconds','string','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','variable','queue','calleridnum','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','Caller\x20Number','keyValue','Caller\x20Name','calleridname','uniqueid','Date','agentcalledAt','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','agentconnectAt','agentcompleteAt'];(function(_0x13c108,_0x56ab5c){var _0x17ff51=function(_0x54a66a){while(--_0x54a66a){_0x13c108['push'](_0x13c108['shift']());}};_0x17ff51(++_0x56ab5c);}(_0x8b7b,0x136));var _0xb8b7=function(_0x3d10db,_0x216442){_0x3d10db=_0x3d10db-0x0;var _0x433cbe=_0x8b7b[_0x3d10db];return _0x433cbe;};'use strict';exports['getSubjects']=function(_0x428072,_0x14e016){var _0x1349ae=[{'type':_0xb8b7('0x0'),'content':_0xb8b7('0x1'),'variableName':null}];switch(_0x428072[_0xb8b7('0x2')]()){case _0xb8b7('0x3'):switch(_0x14e016[_0xb8b7('0x2')]()){case _0xb8b7('0x4'):_0x1349ae[_0xb8b7('0x5')]({'type':_0xb8b7('0x6'),'content':'','variableName':_0xb8b7('0x7')});_0x1349ae['push']({'type':_0xb8b7('0x6'),'content':'','variableName':_0xb8b7('0x8')});break;case _0xb8b7('0x9'):_0x1349ae['push']({'type':'string','content':_0xb8b7('0xa'),'variableName':null});_0x1349ae['push']({'type':_0xb8b7('0x6'),'content':'','variableName':_0xb8b7('0xb')});break;}}return _0x1349ae;};exports[_0xb8b7('0xc')]=function(_0x46848b,_0x5d4770){var _0x4efabe=[];switch(_0x46848b[_0xb8b7('0x2')]()){case _0xb8b7('0x3'):switch(_0x5d4770[_0xb8b7('0x2')]()){case'inbound':_0x4efabe=[{'type':_0xb8b7('0x0'),'content':'***\x20Call\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xb8b7('0xd'),'keyType':_0xb8b7('0x6'),'variableName':_0xb8b7('0x8')},{'type':_0xb8b7('0xe'),'content':'','key':_0xb8b7('0xf'),'keyType':'variable','variableName':_0xb8b7('0x10')},{'type':_0xb8b7('0xe'),'content':'','key':'Call\x20To','keyType':'variable','variableName':'destexten'},{'type':_0xb8b7('0xe'),'content':'','key':'Queue','keyType':_0xb8b7('0x6'),'variableName':_0xb8b7('0x7')},{'type':_0xb8b7('0xe'),'content':'','key':'UniqueId','keyType':_0xb8b7('0x6'),'variableName':_0xb8b7('0x11')},{'type':_0xb8b7('0xe'),'content':'','key':_0xb8b7('0x12'),'keyType':_0xb8b7('0x6'),'variableName':_0xb8b7('0x13')},{'type':_0xb8b7('0x0'),'content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xb8b7('0x14'),'keyType':_0xb8b7('0x6'),'variableName':_0xb8b7('0x15')},{'type':_0xb8b7('0xe'),'content':'','key':_0xb8b7('0x16'),'keyType':_0xb8b7('0x6'),'variableName':_0xb8b7('0xb')},{'type':'string','content':_0xb8b7('0x17'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Ring','keyType':_0xb8b7('0x6'),'variableName':_0xb8b7('0x13')},{'type':_0xb8b7('0xe'),'content':'','key':'Agent\x20Connect','keyType':_0xb8b7('0x6'),'variableName':_0xb8b7('0x18')},{'type':_0xb8b7('0xe'),'content':'','key':'Agent\x20Complete','keyType':_0xb8b7('0x6'),'variableName':_0xb8b7('0x19')},{'type':'keyValue','content':'','key':_0xb8b7('0x1a'),'keyType':'variable','variableName':_0xb8b7('0x1b')},{'type':_0xb8b7('0xe'),'content':'','key':_0xb8b7('0x1c'),'keyType':_0xb8b7('0x6'),'variableName':_0xb8b7('0x1d')}];break;case _0xb8b7('0x9'):_0x4efabe=[{'type':_0xb8b7('0x0'),'content':_0xb8b7('0x1e'),'variableName':null},{'type':'keyValue','content':'','key':'Called\x20Number','keyType':'variable','keyContent':'','variableName':_0xb8b7('0xb')},{'type':_0xb8b7('0xe'),'content':'','key':_0xb8b7('0x1f'),'keyType':_0xb8b7('0x6'),'keyContent':'','variableName':_0xb8b7('0x20')},{'type':_0xb8b7('0xe'),'content':'','key':_0xb8b7('0x21'),'keyType':'variable','keyContent':'','variableName':_0xb8b7('0x11')},{'type':_0xb8b7('0xe'),'content':'','key':_0xb8b7('0x12'),'keyType':_0xb8b7('0x6'),'keyContent':'','variableName':_0xb8b7('0x22')},{'type':_0xb8b7('0x0'),'content':_0xb8b7('0x17')},{'type':'keyValue','content':'','key':_0xb8b7('0x23'),'keyType':_0xb8b7('0x6'),'keyContent':'','variableName':_0xb8b7('0x24')},{'type':_0xb8b7('0xe'),'content':'','key':_0xb8b7('0x25'),'keyType':_0xb8b7('0x6'),'keyContent':'','variableName':'endtime'},{'type':_0xb8b7('0xe'),'content':'','key':_0xb8b7('0x26'),'keyType':_0xb8b7('0x6'),'keyContent':'','variableName':_0xb8b7('0x27')},{'type':'keyValue','content':'','key':_0xb8b7('0x28'),'keyType':_0xb8b7('0x6'),'keyContent':'','variableName':_0xb8b7('0x29')}];break;}}return _0x4efabe;};
\ No newline at end of file
+var _0x3d8f=['Billable\x20Time','billableseconds','string','toLowerCase','voice','inbound','push','variable','queue','calleridnum','outbound','Outbound\x20Call','destcalleridnum','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridname','Call\x20To','destexten','Queue','UniqueId','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Connect','agentconnectAt','agentcompleteAt','holdtime','Talk\x20Time','Called\x20Number','Member\x20Name','membername','uniqueid','starttime','***\x20Time\x20Info\x20***','Answer\x20Time','answertime','Complete\x20Time','Duration','duration'];(function(_0x340490,_0xbac8eb){var _0x147b2d=function(_0x3fcab8){while(--_0x3fcab8){_0x340490['push'](_0x340490['shift']());}};_0x147b2d(++_0xbac8eb);}(_0x3d8f,0xaa));var _0xf3d8=function(_0x2b7d82,_0x3f9c3c){_0x2b7d82=_0x2b7d82-0x0;var _0x5ec2fe=_0x3d8f[_0x2b7d82];return _0x5ec2fe;};'use strict';exports['getSubjects']=function(_0x5b7998,_0x36fd78){var _0x23d4b1=[{'type':_0xf3d8('0x0'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x5b7998[_0xf3d8('0x1')]()){case _0xf3d8('0x2'):switch(_0x36fd78['toLowerCase']()){case _0xf3d8('0x3'):_0x23d4b1[_0xf3d8('0x4')]({'type':_0xf3d8('0x5'),'content':'','variableName':_0xf3d8('0x6')});_0x23d4b1[_0xf3d8('0x4')]({'type':_0xf3d8('0x5'),'content':'','variableName':_0xf3d8('0x7')});break;case _0xf3d8('0x8'):_0x23d4b1[_0xf3d8('0x4')]({'type':_0xf3d8('0x0'),'content':_0xf3d8('0x9'),'variableName':null});_0x23d4b1[_0xf3d8('0x4')]({'type':_0xf3d8('0x5'),'content':'','variableName':_0xf3d8('0xa')});break;}}return _0x23d4b1;};exports['getDescriptions']=function(_0x38e207,_0x1173c5){var _0x1e3025=[];switch(_0x38e207['toLowerCase']()){case _0xf3d8('0x2'):switch(_0x1173c5['toLowerCase']()){case _0xf3d8('0x3'):_0x1e3025=[{'type':_0xf3d8('0x0'),'content':_0xf3d8('0xb'),'key':null,'keyType':null,'variableName':null},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0xd'),'keyType':_0xf3d8('0x5'),'variableName':_0xf3d8('0x7')},{'type':'keyValue','content':'','key':'Caller\x20Name','keyType':_0xf3d8('0x5'),'variableName':_0xf3d8('0xe')},{'type':'keyValue','content':'','key':_0xf3d8('0xf'),'keyType':_0xf3d8('0x5'),'variableName':_0xf3d8('0x10')},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0x11'),'keyType':_0xf3d8('0x5'),'variableName':_0xf3d8('0x6')},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0x12'),'keyType':_0xf3d8('0x5'),'variableName':'uniqueid'},{'type':'keyValue','content':'','key':_0xf3d8('0x13'),'keyType':_0xf3d8('0x5'),'variableName':_0xf3d8('0x14')},{'type':'string','content':_0xf3d8('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0x16'),'keyType':_0xf3d8('0x5'),'variableName':_0xf3d8('0x17')},{'type':'keyValue','content':'','key':'Agent\x20Number','keyType':_0xf3d8('0x5'),'variableName':'destcalleridnum'},{'type':'string','content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xf3d8('0xc'),'content':'','key':'Agent\x20Ring','keyType':'variable','variableName':_0xf3d8('0x14')},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0x18'),'keyType':_0xf3d8('0x5'),'variableName':_0xf3d8('0x19')},{'type':'keyValue','content':'','key':'Agent\x20Complete','keyType':_0xf3d8('0x5'),'variableName':_0xf3d8('0x1a')},{'type':_0xf3d8('0xc'),'content':'','key':'Hold\x20Time','keyType':_0xf3d8('0x5'),'variableName':_0xf3d8('0x1b')},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0x1c'),'keyType':_0xf3d8('0x5'),'variableName':'talktime'}];break;case _0xf3d8('0x8'):_0x1e3025=[{'type':_0xf3d8('0x0'),'content':_0xf3d8('0xb'),'variableName':null},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0x1d'),'keyType':_0xf3d8('0x5'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0x1e'),'keyType':_0xf3d8('0x5'),'keyContent':'','variableName':_0xf3d8('0x1f')},{'type':_0xf3d8('0xc'),'content':'','key':'UniqueId','keyType':_0xf3d8('0x5'),'keyContent':'','variableName':_0xf3d8('0x20')},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0x13'),'keyType':_0xf3d8('0x5'),'keyContent':'','variableName':_0xf3d8('0x21')},{'type':'string','content':_0xf3d8('0x22')},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0x23'),'keyType':'variable','keyContent':'','variableName':_0xf3d8('0x24')},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0x25'),'keyType':'variable','keyContent':'','variableName':'endtime'},{'type':_0xf3d8('0xc'),'content':'','key':_0xf3d8('0x26'),'keyType':_0xf3d8('0x5'),'keyContent':'','variableName':_0xf3d8('0x27')},{'type':'keyValue','content':'','key':_0xf3d8('0x28'),'keyType':_0xf3d8('0x5'),'keyContent':'','variableName':_0xf3d8('0x29')}];break;}}return _0x1e3025;};
\ No newline at end of file
index df46411..cb65383 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f09=['user','clone','body','omit','html','phone','mobile','lodash','../../mysqldb','openchannel-interactions','../../config/logger','fax-interactions','sms-interactions','chat-interactions','upperFirst','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','stringify','null','findOne','then','info','catch','error','tracked'];(function(_0x2ea08a,_0x240f73){var _0x5401ad=function(_0x194c90){while(--_0x194c90){_0x2ea08a['push'](_0x2ea08a['shift']());}};_0x5401ad(++_0x240f73);}(_0x8f09,0x19c));var _0x98f0=function(_0x591306,_0xab05e1){_0x591306=_0x591306-0x0;var _0x9ee7a3=_0x8f09[_0x591306];return _0x9ee7a3;};'use strict';var _=require(_0x98f0('0x0'));var db=require(_0x98f0('0x1'))['db'];var loggers={'openchannel':require('../../config/logger')(_0x98f0('0x2')),'mail':require(_0x98f0('0x3'))('mail-interactions'),'fax':require(_0x98f0('0x3'))(_0x98f0('0x4')),'sms':require('../../config/logger')(_0x98f0('0x5')),'chat':require(_0x98f0('0x3'))(_0x98f0('0x6')),'whatsapp':require(_0x98f0('0x3'))('whatsapp-interactions')};function getInteractionId(_0xcf1bb1,_0x2c262c,_0x2befc4){if(_0xcf1bb1&&_0xcf1bb1[_['upperFirst'](_0x2befc4)+'InteractionId']){return _0xcf1bb1[_[_0x98f0('0x7')](_0x2befc4)+'InteractionId'];}else if(_0xcf1bb1&&_0xcf1bb1['id']){return _0xcf1bb1['id'];}else if(_0x2c262c&&_0x2c262c['id']){return _0x2c262c['id'];}else{return'unknown';}}function log(_0x2d837c,_0x338016,_0x1f0c4b,_0x12bc31,_0x32fe05,_0x43d9d9){loggers[_0x32fe05[_0x98f0('0x8')]()][_0x2d837c](_0x98f0('0x9'),_0x43d9d9[_0x98f0('0xa')](),_0x338016?_0x338016['id']:null,_0x338016?_0x338016[_0x98f0('0xb')]:null,_0x338016?_0x338016['role']:null,getInteractionId(_0x1f0c4b,_0x12bc31,_0x32fe05),_0x1f0c4b?JSON[_0x98f0('0xc')](_0x1f0c4b):_0x98f0('0xd'));}function updateUser(_0xb6d783,_0x12849e,_0x17207d,_0x597326,_0x46d24e){db[_[_0x98f0('0x7')](_0x597326)+'Interaction'][_0x98f0('0xe')]({'where':{'id':getInteractionId(_0x12849e,_0x17207d,_0x597326)}})[_0x98f0('0xf')](function(_0x21287f){if(_0x21287f){return _0x21287f['update']({'UserId':_0xb6d783?_0xb6d783['id']:null});}})[_0x98f0('0xf')](function(_0x593e22){if(_0x593e22){log(_0x98f0('0x10'),_0xb6d783,_0x12849e,_0x17207d,_0x597326,_0x46d24e);}})[_0x98f0('0x11')](function(){log(_0x98f0('0x12'),_0xb6d783,_0x12849e,_0x17207d,_0x597326,_0x46d24e);});}exports[_0x98f0('0x13')]=function(_0x45575c,_0x3b90ed){return function(_0x54e915,_0x37a90d,_0x5cf1ac){var _0x141438=_0x54e915[_0x98f0('0x14')];var _0x13b919={};var _0x200f91=_0x54e915['query'];if(_0x13b919){_0x13b919=_[_0x98f0('0x15')](_0x54e915[_0x98f0('0x16')]);_0x13b919=_[_0x98f0('0x17')](_0x13b919,[_0x98f0('0x16'),_0x98f0('0x18'),_0x98f0('0x19'),'fax',_0x98f0('0x1a')]);}updateUser(_0x141438,_0x13b919,_0x200f91,_0x45575c,_0x3b90ed);_0x5cf1ac(null);};};
\ No newline at end of file
+var _0x8e51=['html','phone','fax','mobile','lodash','../../mysqldb','openchannel-interactions','../../config/logger','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','InteractionId','upperFirst','unknown','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','stringify','null','Interaction','findOne','then','catch','error','query','clone','omit','body'];(function(_0x227721,_0x2f9683){var _0x4cfa1b=function(_0x2e9b5c){while(--_0x2e9b5c){_0x227721['push'](_0x227721['shift']());}};_0x4cfa1b(++_0x2f9683);}(_0x8e51,0x1e4));var _0x18e5=function(_0x4b2cd7,_0xbdf004){_0x4b2cd7=_0x4b2cd7-0x0;var _0x371628=_0x8e51[_0x4b2cd7];return _0x371628;};'use strict';var _=require(_0x18e5('0x0'));var db=require(_0x18e5('0x1'))['db'];var loggers={'openchannel':require('../../config/logger')(_0x18e5('0x2')),'mail':require(_0x18e5('0x3'))(_0x18e5('0x4')),'fax':require('../../config/logger')(_0x18e5('0x5')),'sms':require(_0x18e5('0x3'))(_0x18e5('0x6')),'chat':require(_0x18e5('0x3'))(_0x18e5('0x7')),'whatsapp':require(_0x18e5('0x3'))(_0x18e5('0x8'))};function getInteractionId(_0x493f00,_0x30835c,_0x1454c9){if(_0x493f00&&_0x493f00[_['upperFirst'](_0x1454c9)+_0x18e5('0x9')]){return _0x493f00[_[_0x18e5('0xa')](_0x1454c9)+'InteractionId'];}else if(_0x493f00&&_0x493f00['id']){return _0x493f00['id'];}else if(_0x30835c&&_0x30835c['id']){return _0x30835c['id'];}else{return _0x18e5('0xb');}}function log(_0x44e6e9,_0x2c162f,_0xb3608f,_0x557fac,_0x12448a,_0x29ca2d){loggers[_0x12448a['toLowerCase']()][_0x44e6e9](_0x18e5('0xc'),_0x29ca2d[_0x18e5('0xd')](),_0x2c162f?_0x2c162f['id']:null,_0x2c162f?_0x2c162f[_0x18e5('0xe')]:null,_0x2c162f?_0x2c162f['role']:null,getInteractionId(_0xb3608f,_0x557fac,_0x12448a),_0xb3608f?JSON[_0x18e5('0xf')](_0xb3608f):_0x18e5('0x10'));}function updateUser(_0x100dd2,_0x315b4b,_0x598ce6,_0x4be153,_0x477791){db[_[_0x18e5('0xa')](_0x4be153)+_0x18e5('0x11')][_0x18e5('0x12')]({'where':{'id':getInteractionId(_0x315b4b,_0x598ce6,_0x4be153)}})[_0x18e5('0x13')](function(_0x6bfc48){if(_0x6bfc48){return _0x6bfc48['update']({'UserId':_0x100dd2?_0x100dd2['id']:null});}})[_0x18e5('0x13')](function(_0x296fb6){if(_0x296fb6){log('info',_0x100dd2,_0x315b4b,_0x598ce6,_0x4be153,_0x477791);}})[_0x18e5('0x14')](function(){log(_0x18e5('0x15'),_0x100dd2,_0x315b4b,_0x598ce6,_0x4be153,_0x477791);});}exports['tracked']=function(_0x34de2e,_0x1961ea){return function(_0x12c082,_0x549ff6,_0x2b00c6){var _0x22d5c1=_0x12c082['user'];var _0xd46fd4={};var _0x3140ab=_0x12c082[_0x18e5('0x16')];if(_0xd46fd4){_0xd46fd4=_[_0x18e5('0x17')](_0x12c082['body']);_0xd46fd4=_[_0x18e5('0x18')](_0xd46fd4,[_0x18e5('0x19'),_0x18e5('0x1a'),_0x18e5('0x1b'),_0x18e5('0x1c'),_0x18e5('0x1d')]);}updateUser(_0x22d5c1,_0xd46fd4,_0x3140ab,_0x34de2e,_0x1961ea);_0x2b00c6(null);};};
\ No newline at end of file
index 843018e..9d7e5c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa384=['split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','hasOwnProperty','use','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','User','admin','user','isUserLimit','crypto','composable-middleware','../../mysqldb','../../config/environment','data1','license'];(function(_0x25d45e,_0x26f1d6){var _0x209ce4=function(_0x25e3f4){while(--_0x25e3f4){_0x25d45e['push'](_0x25d45e['shift']());}};_0x209ce4(++_0x26f1d6);}(_0xa384,0x1ba));var _0x4a38=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0xa384[_0x45b034];return _0x509cb0;};'use strict';var crypto=require(_0x4a38('0x0'));var util=require('util');var compose=require(_0x4a38('0x1'));var db=require(_0x4a38('0x2'))['db'];var config=require(_0x4a38('0x3'));function getValueFromLicense(_0x345dbd,_0x569a67){if(_0x345dbd&&_0x569a67){if(_0x569a67[_0x4a38('0x4')]&&_0x569a67[_0x4a38('0x5')]){var _0x58504b=_0x569a67[_0x4a38('0x4')];var _0x1c5138=_0x569a67[_0x4a38('0x5')];var _0x268bd9=_0x58504b[_0x4a38('0x6')]('-')[0x4];var _0x252d85=_0x58504b['split']('-')[0x0];var _0x26eced=crypto[_0x4a38('0x7')](_0x4a38('0x8'),util[_0x4a38('0x9')](_0x4a38('0xa'),_0x268bd9,_0x58504b,_0x252d85));var _0x33e8a2=_0x26eced[_0x4a38('0xb')](_0x1c5138,_0x4a38('0xc'),_0x4a38('0xd'));_0x33e8a2+=_0x26eced[_0x4a38('0xe')]('utf8');var _0x577818=JSON['parse'](_0x33e8a2);return _0x577818[_0x4a38('0xf')](_0x345dbd)?_0x577818[_0x345dbd]:null;}}return null;}function isLimit(_0x28ec9e,_0xb9f4c0,_0x304db8,_0x5d939b){var _0x29acd2=_0xb9f4c0;return compose()[_0x4a38('0x10')](function(_0x45b7cf,_0x351882,_0x29e5ec){return db['License'][_0x4a38('0x11')]({'where':{'id':0x1},'raw':!![]})[_0x4a38('0x12')](function(_0x473760){var _0x1a3a5c=getValueFromLicense(_0x28ec9e,_0x473760);return _0x1a3a5c?_0x1a3a5c:_0x29acd2;})[_0x4a38('0x12')](function(_0xee2a7e){_0x29acd2=_0xee2a7e;return _0x304db8[_0x4a38('0x13')](_0x5d939b);})[_0x4a38('0x12')](function(_0x205d31){if(_0x205d31>=_0x29acd2){return _0x351882[_0x4a38('0x14')](0x193)[_0x4a38('0x15')]({'message':util[_0x4a38('0x9')](_0x4a38('0x16'),_0x28ec9e)});}_0x29e5ec();})[_0x4a38('0x17')](function(_0x361e36){_0x29e5ec(_0x361e36);});});}function isUserLimit(){return isLimit('users',0x1,db[_0x4a38('0x18')],{'where':{'$or':[{'role':_0x4a38('0x19')},{'role':_0x4a38('0x1a')}]}});}exports[_0x4a38('0x1b')]=isUserLimit;
\ No newline at end of file
+var _0x24c5=['composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','parse','hasOwnProperty','use','findOne','then','count','status','users','User','admin','user','isUserLimit'];(function(_0x782dd6,_0xff3899){var _0x23ba59=function(_0x45c8e2){while(--_0x45c8e2){_0x782dd6['push'](_0x782dd6['shift']());}};_0x23ba59(++_0xff3899);}(_0x24c5,0x82));var _0x524c=function(_0x20cd93,_0x24cfb6){_0x20cd93=_0x20cd93-0x0;var _0x56f813=_0x24c5[_0x20cd93];return _0x56f813;};'use strict';var crypto=require('crypto');var util=require('util');var compose=require(_0x524c('0x0'));var db=require(_0x524c('0x1'))['db'];var config=require(_0x524c('0x2'));function getValueFromLicense(_0x20f6cd,_0x97c05){if(_0x20f6cd&&_0x97c05){if(_0x97c05[_0x524c('0x3')]&&_0x97c05[_0x524c('0x4')]){var _0xf4ab8=_0x97c05[_0x524c('0x3')];var _0x2b85f6=_0x97c05[_0x524c('0x4')];var _0x5529a2=_0xf4ab8[_0x524c('0x5')]('-')[0x4];var _0x2d5987=_0xf4ab8[_0x524c('0x5')]('-')[0x0];var _0x577a06=crypto[_0x524c('0x6')](_0x524c('0x7'),util[_0x524c('0x8')](_0x524c('0x9'),_0x5529a2,_0xf4ab8,_0x2d5987));var _0x2c1e39=_0x577a06[_0x524c('0xa')](_0x2b85f6,_0x524c('0xb'),_0x524c('0xc'));_0x2c1e39+=_0x577a06[_0x524c('0xd')](_0x524c('0xc'));var _0x28d550=JSON[_0x524c('0xe')](_0x2c1e39);return _0x28d550[_0x524c('0xf')](_0x20f6cd)?_0x28d550[_0x20f6cd]:null;}}return null;}function isLimit(_0x5f2c37,_0x557035,_0x14ffd9,_0x501b0a){var _0x349b76=_0x557035;return compose()[_0x524c('0x10')](function(_0x40d1f7,_0x39edbb,_0x732095){return db['License'][_0x524c('0x11')]({'where':{'id':0x1},'raw':!![]})[_0x524c('0x12')](function(_0x127d09){var _0x24d841=getValueFromLicense(_0x5f2c37,_0x127d09);return _0x24d841?_0x24d841:_0x349b76;})[_0x524c('0x12')](function(_0x325e1a){_0x349b76=_0x325e1a;return _0x14ffd9[_0x524c('0x13')](_0x501b0a);})[_0x524c('0x12')](function(_0x48c92e){if(_0x48c92e>=_0x349b76){return _0x39edbb[_0x524c('0x14')](0x193)['json']({'message':util['format']('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x5f2c37)});}_0x732095();})['catch'](function(_0x27f624){_0x732095(_0x27f624);});});}function isUserLimit(){return isLimit(_0x524c('0x15'),0x1,db[_0x524c('0x16')],{'where':{'$or':[{'role':_0x524c('0x17')},{'role':_0x524c('0x18')}]}});}exports[_0x524c('0x19')]=isUserLimit;
\ No newline at end of file
index 8b2c9e7..9f7b2aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x100b=['field','\x20AS\x20','includes','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','NOT\x20IN\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','<\x20?','>\x20?','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','shift','pop','utcOffset','add','minutes','seconds','lodash','sqlOperator','startsWith','[$or]','and','replace','split','length','slice','forEach','match','indexOf','map','conditions','buildExpression','DATE','operator','$eq','$between','value','$gt','$lte','days','YYYY-MM-DD','castTo','text','CAST('];(function(_0x167442,_0x3563cb){var _0xd24d00=function(_0x46488e){while(--_0x46488e){_0x167442['push'](_0x167442['shift']());}};_0xd24d00(++_0x3563cb);}(_0x100b,0x129));var _0xb100=function(_0x418b7b,_0x3d0171){_0x418b7b=_0x418b7b-0x0;var _0x386d74=_0x100b[_0x418b7b];return _0x386d74;};'use strict';var _=require(_0xb100('0x0'));var moment=require('moment');exports['parseSearch']=function(_0x50807c){var _0x456ba3={'conditions':[]};_0x456ba3[_0xb100('0x1')]=_[_0xb100('0x2')](_0x50807c,_0xb100('0x3'))?'or':_0xb100('0x4');var _0x4bd161=_0x50807c[_0xb100('0x5')]('[$and]','')[_0xb100('0x5')](_0xb100('0x3'),'')[_0xb100('0x6')]('||');for(var _0xcc8d9=0x0;_0xcc8d9<_0x4bd161[_0xb100('0x7')];_0xcc8d9++){var _0x4ec9ba=_0x4bd161[_0xcc8d9]['split'](':=');var _0x3390cd=_0x4ec9ba[0x0];var _0x4da109=_0x4ec9ba[_0xb100('0x8')](0x1);_0x4da109[_0xb100('0x9')](function(_0x3cf1e1){var _0x6d3d44=_0x3cf1e1[_0xb100('0x6')]('[')['shift']();var _0x208165=_0x3cf1e1[_0xb100('0xa')](/\[(.*?)\]/g);_0x208165['forEach'](function(_0x153ef1){var _0x5b12b4=_0x153ef1['split']('[')['filter'](function(_0x3c5554){return _0x3c5554[_0xb100('0xb')](']')>-0x1;})[_0xb100('0xc')](function(_0x100457){return _0x100457[_0xb100('0x6')](']')[0x0];})[0x0];_0x456ba3[_0xb100('0xd')]['push']({'field':_0x3390cd,'operator':_0x6d3d44,'value':_0x5b12b4});});});}return _0x456ba3;};exports[_0xb100('0xe')]=function(_0x581773,_0x31262c,_0x19edd9){var _0x36bbd9={};if(_0x31262c===_0xb100('0xf')){if(_0x19edd9[_0xb100('0x10')]===_0xb100('0x11')){_0x19edd9[_0xb100('0x10')]=_0xb100('0x12');_0x19edd9['value']+=','+_0x19edd9[_0xb100('0x13')];}else if(_['includes']([_0xb100('0x14'),_0xb100('0x15')],_0x19edd9[_0xb100('0x10')])){_0x19edd9['value']=moment(_0x19edd9[_0xb100('0x13')])['add'](0x1,_0xb100('0x16'))['format'](_0xb100('0x17'));}}if(_0x19edd9['castTo']){_0x31262c=_0x19edd9[_0xb100('0x18')];_0x36bbd9[_0xb100('0x19')]=_0xb100('0x1a')+_0x581773+'.'+_0x19edd9[_0xb100('0x1b')]+_0xb100('0x1c')+_0x19edd9['castTo']+')\x20'+parseOperator(_0x19edd9['operator']);}else{_0x36bbd9[_0xb100('0x19')]=_0x581773+'.'+_0x19edd9[_0xb100('0x1b')]+'\x20'+parseOperator(_0x19edd9[_0xb100('0x10')]);}if(_[_0xb100('0x1d')]([_0xb100('0x1e'),_0xb100('0x1f')],_0x19edd9['operator']))_0x36bbd9[_0xb100('0x19')]='('+_0x36bbd9[_0xb100('0x19')]+_0xb100('0x20')+_0x581773+'.'+_0x19edd9[_0xb100('0x1b')]+_0xb100('0x21');_0x36bbd9[_0xb100('0x13')]=parseValue(_0x31262c,_0x19edd9[_0xb100('0x10')],_0x19edd9[_0xb100('0x13')]);return _0x36bbd9;};function parseOperator(_0x29ab17){var _0x5c5e8e;switch(_0x29ab17){case _0xb100('0x22'):_0x5c5e8e='IN\x20?';break;case _0xb100('0x1f'):_0x5c5e8e=_0xb100('0x23');break;case _0xb100('0x11'):_0x5c5e8e='=\x20?';break;case _0xb100('0x1e'):_0x5c5e8e=_0xb100('0x24');break;case _0xb100('0x25'):case _0xb100('0x26'):case _0xb100('0x27'):_0x5c5e8e=_0xb100('0x28');break;case'$lt':_0x5c5e8e=_0xb100('0x29');break;case'$gt':_0x5c5e8e=_0xb100('0x2a');break;case _0xb100('0x15'):_0x5c5e8e=_0xb100('0x2b');break;case _0xb100('0x2c'):_0x5c5e8e=_0xb100('0x2d');break;case _0xb100('0x12'):_0x5c5e8e=_0xb100('0x2e');break;}return _0x5c5e8e;}function parseValue(_0x2ea5ee,_0x117dd4,_0x1a7eb6){var _0x21e724={'start':undefined,'end':undefined};switch(_0x117dd4){case'$in':case'$notIn':_0x21e724['start']=_0x1a7eb6[_0xb100('0x6')](',');break;case _0xb100('0x25'):_0x21e724['start']='%'+_0x1a7eb6+'%';break;case _0xb100('0x26'):_0x21e724[_0xb100('0x2f')]=_0x1a7eb6+'%';break;case _0xb100('0x27'):_0x21e724['start']='%'+_0x1a7eb6;break;case _0xb100('0x12'):var _0x5c6789=_0x1a7eb6[_0xb100('0x6')](',');var _0x1a7eb6=_0x5c6789[_0xb100('0x30')]();var _0xb816d9=_0x5c6789[_0xb100('0x31')]();if(_0x2ea5ee===_0xb100('0xf')){_0x1a7eb6=moment(_0x1a7eb6)['utcOffset'](0x0,!![])['format']();_0xb816d9=moment(_0xb816d9)[_0xb100('0x32')](0x0,!![])[_0xb100('0x33')](0x17,'hours')[_0xb100('0x33')](0x3b,_0xb100('0x34'))[_0xb100('0x33')](0x3b,_0xb100('0x35'))['format']();}_0x21e724={'start':_0x1a7eb6,'end':_0xb816d9};break;default:_0x21e724[_0xb100('0x2f')]=_0x1a7eb6;break;}return _0x21e724;}
\ No newline at end of file
+var _0x9c40=['text','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','>=\x20?','$between','BETWEEN\x20?\x20AND\x20?','start','pop','DATE','utcOffset','format','hours','minutes','seconds','lodash','moment','sqlOperator','startsWith','and','replace','[$and]','[$or]','split','forEach','match','filter','indexOf','map','conditions','buildExpression','operator','$eq','value','includes','$gt','$lte','add','days','YYYY-MM-DD','castTo','CAST(','field','\x20AS\x20','$ne','$notIn'];(function(_0x3f9a07,_0x241689){var _0xe535d9=function(_0xf8e93f){while(--_0xf8e93f){_0x3f9a07['push'](_0x3f9a07['shift']());}};_0xe535d9(++_0x241689);}(_0x9c40,0x1e2));var _0x09c4=function(_0x523615,_0x522ee8){_0x523615=_0x523615-0x0;var _0x9863eb=_0x9c40[_0x523615];return _0x9863eb;};'use strict';var _=require(_0x09c4('0x0'));var moment=require(_0x09c4('0x1'));exports['parseSearch']=function(_0x413f2d){var _0x2dd55c={'conditions':[]};_0x2dd55c[_0x09c4('0x2')]=_[_0x09c4('0x3')](_0x413f2d,'[$or]')?'or':_0x09c4('0x4');var _0x1aa499=_0x413f2d[_0x09c4('0x5')](_0x09c4('0x6'),'')[_0x09c4('0x5')](_0x09c4('0x7'),'')[_0x09c4('0x8')]('||');for(var _0x37f0f8=0x0;_0x37f0f8<_0x1aa499['length'];_0x37f0f8++){var _0x169366=_0x1aa499[_0x37f0f8]['split'](':=');var _0x20424e=_0x169366[0x0];var _0x377b0c=_0x169366['slice'](0x1);_0x377b0c[_0x09c4('0x9')](function(_0x1403f6){var _0x515caa=_0x1403f6[_0x09c4('0x8')]('[')['shift']();var _0x2cc67a=_0x1403f6[_0x09c4('0xa')](/\[(.*?)\]/g);_0x2cc67a[_0x09c4('0x9')](function(_0x811a80){var _0x36cf12=_0x811a80[_0x09c4('0x8')]('[')[_0x09c4('0xb')](function(_0x2e54c7){return _0x2e54c7[_0x09c4('0xc')](']')>-0x1;})[_0x09c4('0xd')](function(_0x174175){return _0x174175[_0x09c4('0x8')](']')[0x0];})[0x0];_0x2dd55c[_0x09c4('0xe')]['push']({'field':_0x20424e,'operator':_0x515caa,'value':_0x36cf12});});});}return _0x2dd55c;};exports[_0x09c4('0xf')]=function(_0x2556e9,_0x4c9da6,_0x4c2c70){var _0x1056c8={};if(_0x4c9da6==='DATE'){if(_0x4c2c70[_0x09c4('0x10')]===_0x09c4('0x11')){_0x4c2c70[_0x09c4('0x10')]='$between';_0x4c2c70[_0x09c4('0x12')]+=','+_0x4c2c70[_0x09c4('0x12')];}else if(_[_0x09c4('0x13')]([_0x09c4('0x14'),_0x09c4('0x15')],_0x4c2c70[_0x09c4('0x10')])){_0x4c2c70[_0x09c4('0x12')]=moment(_0x4c2c70[_0x09c4('0x12')])[_0x09c4('0x16')](0x1,_0x09c4('0x17'))['format'](_0x09c4('0x18'));}}if(_0x4c2c70[_0x09c4('0x19')]){_0x4c9da6=_0x4c2c70[_0x09c4('0x19')];_0x1056c8['text']=_0x09c4('0x1a')+_0x2556e9+'.'+_0x4c2c70[_0x09c4('0x1b')]+_0x09c4('0x1c')+_0x4c2c70['castTo']+')\x20'+parseOperator(_0x4c2c70['operator']);}else{_0x1056c8['text']=_0x2556e9+'.'+_0x4c2c70[_0x09c4('0x1b')]+'\x20'+parseOperator(_0x4c2c70[_0x09c4('0x10')]);}if(_[_0x09c4('0x13')]([_0x09c4('0x1d'),_0x09c4('0x1e')],_0x4c2c70[_0x09c4('0x10')]))_0x1056c8['text']='('+_0x1056c8[_0x09c4('0x1f')]+_0x09c4('0x20')+_0x2556e9+'.'+_0x4c2c70[_0x09c4('0x1b')]+_0x09c4('0x21');_0x1056c8['value']=parseValue(_0x4c9da6,_0x4c2c70[_0x09c4('0x10')],_0x4c2c70[_0x09c4('0x12')]);return _0x1056c8;};function parseOperator(_0x4f9efd){var _0x39e6ee;switch(_0x4f9efd){case _0x09c4('0x22'):_0x39e6ee=_0x09c4('0x23');break;case _0x09c4('0x1e'):_0x39e6ee='NOT\x20IN\x20?';break;case'$eq':_0x39e6ee=_0x09c4('0x24');break;case _0x09c4('0x1d'):_0x39e6ee=_0x09c4('0x25');break;case _0x09c4('0x26'):case _0x09c4('0x27'):case _0x09c4('0x28'):_0x39e6ee=_0x09c4('0x29');break;case _0x09c4('0x2a'):_0x39e6ee=_0x09c4('0x2b');break;case'$gt':_0x39e6ee=_0x09c4('0x2c');break;case _0x09c4('0x15'):_0x39e6ee=_0x09c4('0x2d');break;case'$gte':_0x39e6ee=_0x09c4('0x2e');break;case _0x09c4('0x2f'):_0x39e6ee=_0x09c4('0x30');break;}return _0x39e6ee;}function parseValue(_0x3acacf,_0x6906f8,_0x33d962){var _0x161879={'start':undefined,'end':undefined};switch(_0x6906f8){case _0x09c4('0x22'):case _0x09c4('0x1e'):_0x161879[_0x09c4('0x31')]=_0x33d962[_0x09c4('0x8')](',');break;case'$substring':_0x161879[_0x09c4('0x31')]='%'+_0x33d962+'%';break;case'$startsWith':_0x161879[_0x09c4('0x31')]=_0x33d962+'%';break;case'$endsWith':_0x161879[_0x09c4('0x31')]='%'+_0x33d962;break;case _0x09c4('0x2f'):var _0x395dff=_0x33d962[_0x09c4('0x8')](',');var _0x33d962=_0x395dff['shift']();var _0x47ace0=_0x395dff[_0x09c4('0x32')]();if(_0x3acacf===_0x09c4('0x33')){_0x33d962=moment(_0x33d962)[_0x09c4('0x34')](0x0,!![])[_0x09c4('0x35')]();_0x47ace0=moment(_0x47ace0)[_0x09c4('0x34')](0x0,!![])['add'](0x17,_0x09c4('0x36'))[_0x09c4('0x16')](0x3b,_0x09c4('0x37'))[_0x09c4('0x16')](0x3b,_0x09c4('0x38'))['format']();}_0x161879={'start':_0x33d962,'end':_0x47ace0};break;default:_0x161879['start']=_0x33d962;break;}return _0x161879;}
\ No newline at end of file
index bb5cbff..98366c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc494=['name','options','sequelize','fields','split','filters','isEmpty','forOwn','find','DATE','parse','$gte','YYYY-MM-DD','utc','format','$lte','uniqueid','isArray','limit','sort','map','indexOf','priority','cast','col','unsigned','substr','DESC','ASC','omit','length','isObject','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','join','getOptions','model','query','keys','intersection','attributes','nolimit','offset','where','filter','merge'];(function(_0x4647dc,_0x2bf2f6){var _0x1c3cab=function(_0x4c9cf0){while(--_0x4c9cf0){_0x4647dc['push'](_0x4647dc['shift']());}};_0x1c3cab(++_0x2bf2f6);}(_0xc494,0x134));var _0x4c49=function(_0x375492,_0x4ed149){_0x375492=_0x375492-0x0;var _0x18ba5b=_0xc494[_0x375492];return _0x18ba5b;};'use strict';var _=require('lodash');var sequelize=require(_0x4c49('0x0'));var moment=require('moment');var LIMIT_VALUE=0xfa;exports[_0x4c49('0x1')]=function(_0x10be9b){var _0x13ce42=null;if(_0x10be9b){_0x13ce42=_0x10be9b[_0x4c49('0x2')](',');}return _0x13ce42;};exports[_0x4c49('0x3')]=function(_0x319de6,_0x1cb617){var _0x1cd6b1={};if(!_[_0x4c49('0x4')](_0x319de6)){_[_0x4c49('0x5')](_0x319de6,function(_0x521ea4,_0x50eefa){try{if(_0x1cb617){var _0x4890f5=_[_0x4c49('0x6')](_0x1cb617,{'name':_0x50eefa})||{};if(_0x4890f5['type']===_0x4c49('0x7')&&_['isPlainObject'](_0x521ea4)){var _0x23c090=JSON[_0x4c49('0x8')](_0x521ea4);var _0x2bba14={'$gte':moment(moment(_0x23c090[_0x4c49('0x9')])['format'](_0x4c49('0xa')))[_0x4c49('0xb')]()[_0x4c49('0xc')](),'$lte':moment(moment(_0x23c090[_0x4c49('0xd')])[_0x4c49('0xc')](_0x4c49('0xa')))[_0x4c49('0xb')]()['subtract'](0x1,'s')[_0x4c49('0xc')]()};_0x1cd6b1[_0x50eefa]=_0x2bba14;}else if(_0x4890f5['name']===_0x4c49('0xe')){_0x1cd6b1[_0x50eefa]=_0x521ea4;}else{_0x1cd6b1[_0x50eefa]=_['isArray'](_0x521ea4)?_0x521ea4:JSON['parse'](_0x521ea4);}}else{_0x1cd6b1[_0x50eefa]=_[_0x4c49('0xf')](_0x521ea4)?_0x521ea4:JSON[_0x4c49('0x8')](_0x521ea4);}}catch(_0x422150){_0x1cd6b1[_0x50eefa]=_0x521ea4[_0x4c49('0x2')](',');}});}return _0x1cd6b1;};exports[_0x4c49('0x10')]=function(_0x774060){_0x774060=parseInt(_0x774060,0xa);if(!_0x774060||_0x774060<0x0){_0x774060=LIMIT_VALUE;}return _0x774060;};exports['offset']=function(_0x35a830){_0x35a830=parseInt(_0x35a830,0xa);if(!_0x35a830||_0x35a830<0x0){_0x35a830=0x0;}return _0x35a830;};exports[_0x4c49('0x11')]=function(_0x350006){var _0x1152fe,_0x146672=null;if(_0x350006){_0x1152fe=_0x350006['split'](',');_0x146672=_[_0x4c49('0x12')](_0x1152fe,function(_0x58cb45){if(_0x58cb45[_0x4c49('0x13')]('-')===0x0){return[_0x58cb45===_0x4c49('0x14')?sequelize[_0x4c49('0x15')](sequelize[_0x4c49('0x16')]('priority'),_0x4c49('0x17')):_0x58cb45[_0x4c49('0x18')](0x1),_0x4c49('0x19')];}else{return[_0x58cb45===_0x4c49('0x14')?sequelize[_0x4c49('0x15')](sequelize[_0x4c49('0x16')](_0x4c49('0x14')),_0x4c49('0x17')):_0x58cb45,_0x4c49('0x1a')];}});}return _0x146672;};exports[_0x4c49('0x1b')]=function(_0x17a53c,_0x4e2c12){if(_[_0x4c49('0x4')](_0x17a53c)){return _0x17a53c;}if(_[_0x4c49('0xf')](_0x17a53c)){for(var _0x3da024=0x0;_0x3da024<_0x17a53c[_0x4c49('0x1c')];_0x3da024+=0x1){_0x17a53c[_0x3da024]=this[_0x4c49('0x1b')](_0x17a53c[_0x3da024],_0x4e2c12);}return _0x17a53c;}if(!_[_0x4c49('0x1d')](_0x17a53c)){return _0x17a53c;}if(_['isString'](_0x4e2c12)){_0x4e2c12=[_0x4e2c12];}if(!_['isArray'](_0x4e2c12)){return _0x17a53c;}for(var _0x5ed212=0x0;_0x5ed212<_0x4e2c12[_0x4c49('0x1c')];_0x5ed212+=0x1){_['unset'](_0x17a53c,_0x4e2c12[_0x5ed212]);}for(var _0x452fd0 in _0x17a53c){if(_0x17a53c['hasOwnProperty'](_0x452fd0)){_0x17a53c[_0x452fd0]=this[_0x4c49('0x1b')](_0x17a53c[_0x452fd0],_0x4e2c12);}}return _0x17a53c;};exports[_0x4c49('0x1e')]=function(_0x7a0585){return _0x7a0585[_0x4c49('0x1f')](RegExp(_0x4c49('0x20')))?!![]:![];};exports[_0x4c49('0x21')]=function(_0x39ff7b){return _0x39ff7b[_0x4c49('0x1f')](/^\S+@\S+$/)?!![]:![];};exports[_0x4c49('0x22')]=function(_0x4cb4c6){var _0x46bae0=[];_0x4cb4c6[_0x4c49('0x2')](/[ ,]+/)[_0x4c49('0x23')](function(_0x5713a1){_0x5713a1=_0x5713a1[_0x4c49('0x24')](/([^:]")"+/g,'$1');_0x5713a1='+'+_0x5713a1+'*';if(_0x5713a1['includes']('@'))_0x5713a1='\x22'+_0x5713a1+'\x22';_0x46bae0['push'](_0x5713a1);});return _0x46bae0[_0x4c49('0x25')]('\x20');};exports[_0x4c49('0x26')]=function(_0x1563c4,_0x2142a0){var _0x15270d={},_0x11c055={};_0x15270d[_0x4c49('0x27')]=_[_0x4c49('0x12')](_0x1563c4,'name');_0x15270d[_0x4c49('0x28')]=_[_0x4c49('0x29')](_0x2142a0['query']);_0x15270d[_0x4c49('0x3')]=_[_0x4c49('0x2a')](_0x15270d[_0x4c49('0x27')],_0x15270d[_0x4c49('0x28')]);_0x11c055['attributes']=_['intersection'](_0x15270d[_0x4c49('0x27')],this[_0x4c49('0x1')](_0x2142a0[_0x4c49('0x28')][_0x4c49('0x1')]));_0x11c055['attributes']=_0x11c055[_0x4c49('0x2b')][_0x4c49('0x1c')]?_0x11c055[_0x4c49('0x2b')]:_0x15270d[_0x4c49('0x27')];if(!_0x2142a0['query']['hasOwnProperty'](_0x4c49('0x2c'))){_0x11c055[_0x4c49('0x10')]=this[_0x4c49('0x10')](_0x2142a0[_0x4c49('0x28')]['limit']);_0x11c055['offset']=this[_0x4c49('0x2d')](_0x2142a0[_0x4c49('0x28')][_0x4c49('0x2d')]);}_0x11c055['order']=this[_0x4c49('0x11')](_0x2142a0['query'][_0x4c49('0x11')]);_0x11c055[_0x4c49('0x2e')]=this[_0x4c49('0x3')](_['pick'](_0x2142a0[_0x4c49('0x28')],_0x15270d[_0x4c49('0x3')]),_0x1563c4);if(_0x2142a0[_0x4c49('0x28')][_0x4c49('0x2f')]){_0x11c055[_0x4c49('0x2e')]=_[_0x4c49('0x30')](_0x11c055[_0x4c49('0x2e')],{'$or':_[_0x4c49('0x12')](_0x1563c4,function(_0x42589a){if(_0x42589a['type']!=='VIRTUAL'){var _0x11c15c={};_0x11c15c[_0x42589a[_0x4c49('0x31')]]={'$like':'%'+_0x2142a0[_0x4c49('0x28')]['filter']+'%'};return _0x11c15c;}})});}_0x11c055=_[_0x4c49('0x30')]({},_0x11c055,_0x2142a0[_0x4c49('0x32')]);return _0x11c055;};
\ No newline at end of file
+var _0x7853=['name','uniqueid','isArray','limit','sort','map','indexOf','priority','cast','col','unsigned','substr','ASC','omit','length','isObject','unset','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','includes','push','join','getOptions','$id','query','model','intersection','attributes','hasOwnProperty','offset','order','where','pick','filter','merge','VIRTUAL','lower','options','lodash','moment','parse','keys','fields','split','filters','isEmpty','forOwn','find','type','DATE','$gte','YYYY-MM-DD','format','$lte','utc','subtract'];(function(_0x533132,_0xf5b6fa){var _0x1a7447=function(_0x44d580){while(--_0x44d580){_0x533132['push'](_0x533132['shift']());}};_0x1a7447(++_0xf5b6fa);}(_0x7853,0x66));var _0x3785=function(_0x5a75a4,_0x3cf3b2){_0x5a75a4=_0x5a75a4-0x0;var _0x4be113=_0x7853[_0x5a75a4];return _0x4be113;};'use strict';var _=require(_0x3785('0x0'));var sequelize=require('sequelize');var moment=require(_0x3785('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x4cfd76){var _0x1acd5f=['ne'];try{var _0x311ada=JSON[_0x3785('0x2')](_0x4cfd76);var _0x5759fb=Object['keys'](_0x311ada)[0x0];return _0x1acd5f['includes'](_0x5759fb);}catch(_0x50fd66){return![];}}function getOperatorValue(_0x41506d){var _0x543c6c=JSON[_0x3785('0x2')](_0x41506d);var _0x570d01=Object[_0x3785('0x3')](_0x543c6c)[0x0];var _0x396dcd=_0x543c6c[_0x570d01];return{['$'+_0x570d01]:_0x396dcd};}exports[_0x3785('0x4')]=function(_0x4db427){var _0x225faa=null;if(_0x4db427){_0x225faa=_0x4db427[_0x3785('0x5')](',');}return _0x225faa;};exports[_0x3785('0x6')]=function(_0x982614,_0x3b33af){var _0xf92d5f={};if(!_[_0x3785('0x7')](_0x982614)){_[_0x3785('0x8')](_0x982614,function(_0x17e582,_0x12afaa){try{if(_0x3b33af){var _0x1ddd71=_[_0x3785('0x9')](_0x3b33af,{'name':_0x12afaa})||{};if(hasSequelizeOperator(_0x17e582)){_0xf92d5f[_0x12afaa]=getOperatorValue(_0x17e582);}else if(_0x1ddd71[_0x3785('0xa')]===_0x3785('0xb')&&_['isPlainObject'](_0x17e582)){var _0x7e393a=JSON['parse'](_0x17e582);var _0x1a4f82={'$gte':moment(moment(_0x7e393a[_0x3785('0xc')])['format'](_0x3785('0xd')))['utc']()[_0x3785('0xe')](),'$lte':moment(moment(_0x7e393a[_0x3785('0xf')])[_0x3785('0xe')](_0x3785('0xd')))[_0x3785('0x10')]()[_0x3785('0x11')](0x1,'s')[_0x3785('0xe')]()};_0xf92d5f[_0x12afaa]=_0x1a4f82;}else if(_0x1ddd71[_0x3785('0x12')]===_0x3785('0x13')){_0xf92d5f[_0x12afaa]=_0x17e582;}else{_0xf92d5f[_0x12afaa]=_[_0x3785('0x14')](_0x17e582)?_0x17e582:JSON[_0x3785('0x2')](_0x17e582);}}else{_0xf92d5f[_0x12afaa]=_['isArray'](_0x17e582)?_0x17e582:JSON[_0x3785('0x2')](_0x17e582);}}catch(_0x3ffdfd){_0xf92d5f[_0x12afaa]=_0x17e582['split'](',');}});}return _0xf92d5f;};exports[_0x3785('0x15')]=function(_0x328d91){_0x328d91=parseInt(_0x328d91,0xa);if(!_0x328d91||_0x328d91<0x0){_0x328d91=LIMIT_VALUE;}return _0x328d91;};exports['offset']=function(_0x32418c){_0x32418c=parseInt(_0x32418c,0xa);if(!_0x32418c||_0x32418c<0x0){_0x32418c=0x0;}return _0x32418c;};exports[_0x3785('0x16')]=function(_0x3f934d){var _0x5dff94,_0x42a5a8=null;if(_0x3f934d){_0x5dff94=_0x3f934d[_0x3785('0x5')](',');_0x42a5a8=_[_0x3785('0x17')](_0x5dff94,function(_0x4021b5){if(_0x4021b5[_0x3785('0x18')]('-')===0x0){return[_0x4021b5===_0x3785('0x19')?sequelize[_0x3785('0x1a')](sequelize[_0x3785('0x1b')](_0x3785('0x19')),_0x3785('0x1c')):_0x4021b5[_0x3785('0x1d')](0x1),'DESC'];}else{return[_0x4021b5==='priority'?sequelize[_0x3785('0x1a')](sequelize[_0x3785('0x1b')]('priority'),_0x3785('0x1c')):_0x4021b5,_0x3785('0x1e')];}});}return _0x42a5a8;};exports[_0x3785('0x1f')]=function(_0x55f4fe,_0x25aac2){if(_[_0x3785('0x7')](_0x55f4fe)){return _0x55f4fe;}if(_[_0x3785('0x14')](_0x55f4fe)){for(var _0x4a7a74=0x0;_0x4a7a74<_0x55f4fe[_0x3785('0x20')];_0x4a7a74+=0x1){_0x55f4fe[_0x4a7a74]=this[_0x3785('0x1f')](_0x55f4fe[_0x4a7a74],_0x25aac2);}return _0x55f4fe;}if(!_[_0x3785('0x21')](_0x55f4fe)){return _0x55f4fe;}if(_['isString'](_0x25aac2)){_0x25aac2=[_0x25aac2];}if(!_[_0x3785('0x14')](_0x25aac2)){return _0x55f4fe;}for(var _0x2aa74a=0x0;_0x2aa74a<_0x25aac2[_0x3785('0x20')];_0x2aa74a+=0x1){_[_0x3785('0x22')](_0x55f4fe,_0x25aac2[_0x2aa74a]);}for(var _0x338d17 in _0x55f4fe){if(_0x55f4fe['hasOwnProperty'](_0x338d17)){_0x55f4fe[_0x338d17]=this[_0x3785('0x1f')](_0x55f4fe[_0x338d17],_0x25aac2);}}return _0x55f4fe;};exports[_0x3785('0x23')]=function(_0x466f43){return _0x466f43[_0x3785('0x24')](RegExp(_0x3785('0x25')))?!![]:![];};exports[_0x3785('0x26')]=function(_0x32d018){return _0x32d018[_0x3785('0x24')](/^\S+@\S+$/)?!![]:![];};exports[_0x3785('0x27')]=function(_0x59208a){var _0x28c289=[];_0x59208a[_0x3785('0x5')](/[ ,]+/)[_0x3785('0x28')](function(_0x32d734){_0x32d734=_0x32d734['replace'](/([^:]")"+/g,'$1');_0x32d734='+'+_0x32d734+'*';if(_0x32d734[_0x3785('0x29')]('@'))_0x32d734='\x22'+_0x32d734+'\x22';_0x28c289[_0x3785('0x2a')](_0x32d734);});return _0x28c289[_0x3785('0x2b')]('\x20');};exports[_0x3785('0x2c')]=function(_0x3c1981,_0x4facf4,_0x3e95a9){var _0x292fef={},_0x336390={};if(_0x4facf4['query'][_0x3785('0x2d')]){_0x4facf4[_0x3785('0x2e')]['id']=_0x4facf4['query'][_0x3785('0x2d')];delete _0x4facf4[_0x3785('0x2e')][_0x3785('0x2d')];}_0x292fef[_0x3785('0x2f')]=_[_0x3785('0x17')](_0x3c1981,_0x3785('0x12'));_0x292fef['query']=_['keys'](_0x4facf4['query']);_0x292fef[_0x3785('0x6')]=_[_0x3785('0x30')](_0x292fef[_0x3785('0x2f')],_0x292fef[_0x3785('0x2e')]);_0x336390[_0x3785('0x31')]=_[_0x3785('0x30')](_0x292fef['model'],this['fields'](_0x4facf4[_0x3785('0x2e')]['fields']));_0x336390[_0x3785('0x31')]=_0x336390[_0x3785('0x31')][_0x3785('0x20')]?_0x336390[_0x3785('0x31')]:_0x292fef[_0x3785('0x2f')];if(!_0x4facf4[_0x3785('0x2e')][_0x3785('0x32')]('nolimit')){_0x336390[_0x3785('0x15')]=this['limit'](_0x4facf4[_0x3785('0x2e')]['limit']);_0x336390[_0x3785('0x33')]=this[_0x3785('0x33')](_0x4facf4[_0x3785('0x2e')]['offset']);}_0x336390[_0x3785('0x34')]=this[_0x3785('0x16')](_0x4facf4[_0x3785('0x2e')][_0x3785('0x16')]);_0x336390[_0x3785('0x35')]=this[_0x3785('0x6')](_[_0x3785('0x36')](_0x4facf4[_0x3785('0x2e')],_0x292fef[_0x3785('0x6')]),_0x3c1981);if(_0x4facf4[_0x3785('0x2e')][_0x3785('0x37')]){_0x336390['where']=_[_0x3785('0x38')](_0x336390['where'],{'$or':_[_0x3785('0x17')](_0x3c1981,function(_0x4145e1){if(_0x4145e1['type']!==_0x3785('0x39')){if(_0x3e95a9){return sequelize[_0x3785('0x35')](sequelize['fn'](_0x3785('0x3a'),sequelize[_0x3785('0x1b')](_0x4145e1[_0x3785('0x12')])),{'$like':sequelize['fn'](_0x3785('0x3a'),'%'+_0x4facf4[_0x3785('0x2e')][_0x3785('0x37')]+'%')});}else{var _0x579572={};_0x579572[_0x4145e1[_0x3785('0x12')]]={'$like':'%'+_0x4facf4[_0x3785('0x2e')][_0x3785('0x37')]+'%'};return _0x579572;}}})});}_0x336390=_[_0x3785('0x38')]({},_0x336390,_0x4facf4[_0x3785('0x3b')]);return _0x336390;};
\ No newline at end of file
index f0bd3cb..0a6b102 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20a0=['method-override','errorhandler','path','passport','moment','../mysqldb','default','get','env','production','appPath','root','public','development','test','set','join','use','json\x20replacer','toISOString','split','static','views','/server/views','engine','html','ejs','renderFile','view\x20engine','50mb','json','initialize','express','serve-favicon','body-parser'];(function(_0x3bdb07,_0x25a3e5){var _0xc9956e=function(_0x1609ae){while(--_0x1609ae){_0x3bdb07['push'](_0x3bdb07['shift']());}};_0xc9956e(++_0x25a3e5);}(_0x20a0,0x89));var _0x020a=function(_0x5291f1,_0x3e2d26){_0x5291f1=_0x5291f1-0x0;var _0x5755ba=_0x20a0[_0x5291f1];return _0x5755ba;};'use strict';var express=require(_0x020a('0x0'));var favicon=require(_0x020a('0x1'));var bodyParser=require(_0x020a('0x2'));var methodOverride=require(_0x020a('0x3'));var cookieParser=require('cookie-parser');var errorHandler=require(_0x020a('0x4'));var path=require(_0x020a('0x5'));var passport=require(_0x020a('0x6'));var cors=require('cors');var moment=require(_0x020a('0x7'));var config=require('./environment');var db=require(_0x020a('0x8'))['db'];exports[_0x020a('0x9')]=function(_0x52b779){var _0xf04675=_0x52b779[_0x020a('0xa')](_0x020a('0xb'));if(_0xf04675===_0x020a('0xc')){_0x52b779['set'](_0x020a('0xd'),path['join'](config[_0x020a('0xe')],_0x020a('0xf')));}if(_0xf04675===_0x020a('0x10')||_0xf04675===_0x020a('0x11')){_0x52b779[_0x020a('0x12')]('appPath',path[_0x020a('0x13')](config[_0x020a('0xe')],'client'));_0x52b779[_0x020a('0x14')](errorHandler());}_0x52b779[_0x020a('0x12')](_0x020a('0x15'),function(_0x566caa,_0x38c650){if(this[_0x566caa]instanceof Date){_0x38c650=this[_0x566caa][_0x020a('0x16')]()[_0x020a('0x17')]('.')[0x0]+'Z';}return _0x38c650;});_0x52b779[_0x020a('0x14')](express[_0x020a('0x18')](_0x52b779['get'](_0x020a('0xd'))));_0x52b779[_0x020a('0x12')](_0x020a('0x19'),config[_0x020a('0xe')]+_0x020a('0x1a'));_0x52b779[_0x020a('0x1b')](_0x020a('0x1c'),require(_0x020a('0x1d'))[_0x020a('0x1e')]);_0x52b779['set'](_0x020a('0x1f'),'html');_0x52b779[_0x020a('0x14')](bodyParser['urlencoded']({'limit':_0x020a('0x20'),'extended':!![]}));_0x52b779[_0x020a('0x14')](bodyParser[_0x020a('0x21')]({'limit':'50mb'}));_0x52b779['use'](cors());_0x52b779['use'](methodOverride());_0x52b779[_0x020a('0x14')](cookieParser());_0x52b779[_0x020a('0x14')](passport[_0x020a('0x22')]());};
\ No newline at end of file
+var _0x9787=['cookie-parser','path','cors','moment','../mysqldb','get','env','production','set','appPath','join','root','public','development','use','toISOString','static','views','/server/views','engine','ejs','html','urlencoded','50mb','initialize','express','body-parser','method-override'];(function(_0x53d816,_0x1d1594){var _0x17c9ed=function(_0x5ad6b4){while(--_0x5ad6b4){_0x53d816['push'](_0x53d816['shift']());}};_0x17c9ed(++_0x1d1594);}(_0x9787,0xc1));var _0x7978=function(_0x14082b,_0x3672d6){_0x14082b=_0x14082b-0x0;var _0x53a93d=_0x9787[_0x14082b];return _0x53a93d;};'use strict';var express=require(_0x7978('0x0'));var favicon=require('serve-favicon');var bodyParser=require(_0x7978('0x1'));var methodOverride=require(_0x7978('0x2'));var cookieParser=require(_0x7978('0x3'));var errorHandler=require('errorhandler');var path=require(_0x7978('0x4'));var passport=require('passport');var cors=require(_0x7978('0x5'));var moment=require(_0x7978('0x6'));var config=require('./environment');var db=require(_0x7978('0x7'))['db'];exports['default']=function(_0x3d2621){var _0x52b2a6=_0x3d2621[_0x7978('0x8')](_0x7978('0x9'));if(_0x52b2a6===_0x7978('0xa')){_0x3d2621[_0x7978('0xb')](_0x7978('0xc'),path[_0x7978('0xd')](config[_0x7978('0xe')],_0x7978('0xf')));}if(_0x52b2a6===_0x7978('0x10')||_0x52b2a6==='test'){_0x3d2621[_0x7978('0xb')](_0x7978('0xc'),path[_0x7978('0xd')](config[_0x7978('0xe')],'client'));_0x3d2621[_0x7978('0x11')](errorHandler());}_0x3d2621['set']('json\x20replacer',function(_0x21972c,_0x5d8540){if(this[_0x21972c]instanceof Date){_0x5d8540=this[_0x21972c][_0x7978('0x12')]()['split']('.')[0x0]+'Z';}return _0x5d8540;});_0x3d2621[_0x7978('0x11')](express[_0x7978('0x13')](_0x3d2621[_0x7978('0x8')](_0x7978('0xc'))));_0x3d2621['set'](_0x7978('0x14'),config[_0x7978('0xe')]+_0x7978('0x15'));_0x3d2621[_0x7978('0x16')]('html',require(_0x7978('0x17'))['renderFile']);_0x3d2621[_0x7978('0xb')]('view\x20engine',_0x7978('0x18'));_0x3d2621[_0x7978('0x11')](bodyParser[_0x7978('0x19')]({'limit':'50mb','extended':!![]}));_0x3d2621['use'](bodyParser['json']({'limit':_0x7978('0x1a')}));_0x3d2621['use'](cors());_0x3d2621['use'](methodOverride());_0x3d2621['use'](cookieParser());_0x3d2621[_0x7978('0x11')](passport[_0x7978('0x1b')]());};
\ No newline at end of file
index 5096a71..2a02cd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44c7=['map','md5','update','digest','hex','getUuid','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','hostname','macAddress','createHash','substring','crypto','../environment','networkInterfaces','orderBy','keys','length','filter','IPv4','internal','head','mac','address','127.0.0.1','getFirstInterface','cpus'];(function(_0x1a6fb2,_0x26c808){var _0x1153dc=function(_0x4150fa){while(--_0x4150fa){_0x1a6fb2['push'](_0x1a6fb2['shift']());}};_0x1153dc(++_0x26c808);}(_0x44c7,0x177));var _0x744c=function(_0x176c65,_0x112f7a){_0x176c65=_0x176c65-0x0;var _0x21869e=_0x44c7[_0x176c65];return _0x21869e;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x744c('0x0'));var machine=require('bimedia-machine-uuid');var exec=require('child_process')['execSync'];var config=require(_0x744c('0x1'));function getInterfaces(){var _0x1434dc=[];var _0x22ad1b=os[_0x744c('0x2')]();var _0x50823f=_[_0x744c('0x3')](_[_0x744c('0x4')](_0x22ad1b));for(var _0x413dbe=0x0;_0x413dbe<_0x50823f[_0x744c('0x5')];_0x413dbe++){var _0x4c523f=_0x22ad1b[_0x50823f[_0x413dbe]][_0x744c('0x6')](function(_0x1f26b2){return _0x1f26b2['family']===_0x744c('0x7')&&_0x1f26b2[_0x744c('0x8')]===![];});_0x1434dc=_0x1434dc['concat'](_0x4c523f);}return _0x1434dc;}function getFirstInterface(){var _0x3a1443=_[_0x744c('0x9')](getInterfaces());return{'macAddress':_0x3a1443&&_0x3a1443[_0x744c('0xa')]?_0x3a1443[_0x744c('0xa')]:'00:00:00:00:00:00','ipAddress':_0x3a1443&&_0x3a1443[_0x744c('0xb')]?_0x3a1443[_0x744c('0xb')]:_0x744c('0xc')};}exports[_0x744c('0xd')]=getFirstInterface;function getCPUhash(){var _0x117364=_[_0x744c('0x3')](os[_0x744c('0xe')]()[_0x744c('0xf')](function(_0x41fbef){return _0x41fbef['model'];}))['join'](':');return crypto['createHash'](_0x744c('0x10'))[_0x744c('0x11')](_0x117364)[_0x744c('0x12')](_0x744c('0x13'));}exports[_0x744c('0x14')]=function(){var _0x3aff8c=os[_0x744c('0x15')]();var _0x2ba385=/[0-9a-f-]{36}/;if(config[_0x744c('0x16')]&&_0x2ba385['test'](config[_0x744c('0x16')])){return config[_0x744c('0x16')];}else if(_0x3aff8c===_0x744c('0x17')){return exec(_0x744c('0x18'),{'encoding':_0x744c('0x19')})['replace']('\x0d\x0a','');}else{var _0x1846ec=getFirstInterface();var _0x268d17=getCPUhash();var _0x1de1bc=_0x268d17+'|'+os[_0x744c('0x1a')]()+'|'+_0x1846ec[_0x744c('0x1b')]+'|'+_0x1846ec['ipAddress'];var _0x22f51f=crypto[_0x744c('0x1c')](_0x744c('0x10'))[_0x744c('0x11')](_0x1de1bc)[_0x744c('0x12')](_0x744c('0x13'));return _0x22f51f[_0x744c('0x1d')](0x0,0x8)+'-'+_0x22f51f[_0x744c('0x1d')](0x8,0xc)+'-'+_0x22f51f['substring'](0xc,0x10)+'-'+_0x22f51f[_0x744c('0x1d')](0x10,0x14)+'-'+_0x22f51f['substring'](0x14);}};
\ No newline at end of file
+var _0x69c8=['00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','orderBy','cpus','map','md5','digest','hex','platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','ipAddress','createHash','update','substring','crypto','bimedia-machine-uuid','execSync','../environment','networkInterfaces','keys','length','IPv4','internal','concat','head','mac'];(function(_0x3f75e3,_0x231ce8){var _0x534c5a=function(_0x5ec2ea){while(--_0x5ec2ea){_0x3f75e3['push'](_0x3f75e3['shift']());}};_0x534c5a(++_0x231ce8);}(_0x69c8,0x10c));var _0x869c=function(_0x1be03d,_0x46cccf){_0x1be03d=_0x1be03d-0x0;var _0x45aeda=_0x69c8[_0x1be03d];return _0x45aeda;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x869c('0x0'));var machine=require(_0x869c('0x1'));var exec=require('child_process')[_0x869c('0x2')];var config=require(_0x869c('0x3'));function getInterfaces(){var _0xe61116=[];var _0x21a841=os[_0x869c('0x4')]();var _0x3e8849=_['orderBy'](_[_0x869c('0x5')](_0x21a841));for(var _0x2d76a9=0x0;_0x2d76a9<_0x3e8849[_0x869c('0x6')];_0x2d76a9++){var _0x1d3397=_0x21a841[_0x3e8849[_0x2d76a9]]['filter'](function(_0x436d42){return _0x436d42['family']===_0x869c('0x7')&&_0x436d42[_0x869c('0x8')]===![];});_0xe61116=_0xe61116[_0x869c('0x9')](_0x1d3397);}return _0xe61116;}function getFirstInterface(){var _0x152b62=_[_0x869c('0xa')](getInterfaces());return{'macAddress':_0x152b62&&_0x152b62[_0x869c('0xb')]?_0x152b62[_0x869c('0xb')]:_0x869c('0xc'),'ipAddress':_0x152b62&&_0x152b62[_0x869c('0xd')]?_0x152b62[_0x869c('0xd')]:_0x869c('0xe')};}exports[_0x869c('0xf')]=getFirstInterface;function getCPUhash(){var _0x14b45d=_[_0x869c('0x10')](os[_0x869c('0x11')]()[_0x869c('0x12')](function(_0x3c59b2){return _0x3c59b2['model'];}))['join'](':');return crypto['createHash'](_0x869c('0x13'))['update'](_0x14b45d)[_0x869c('0x14')](_0x869c('0x15'));}exports['getUuid']=function(){var _0x1a4a90=os[_0x869c('0x16')]();var _0x2926a7=/[0-9a-f-]{36}/;if(config[_0x869c('0x17')]&&_0x2926a7[_0x869c('0x18')](config['licenseToken'])){return config['licenseToken'];}else if(_0x1a4a90===_0x869c('0x19')){return exec(_0x869c('0x1a'),{'encoding':_0x869c('0x1b')})[_0x869c('0x1c')]('\x0d\x0a','');}else{var _0x5c973d=getFirstInterface();var _0xd9528d=getCPUhash();var _0x3c938b=_0xd9528d+'|'+os[_0x869c('0x1d')]()+'|'+_0x5c973d[_0x869c('0x1e')]+'|'+_0x5c973d[_0x869c('0x1f')];var _0x3e09bf=crypto[_0x869c('0x20')](_0x869c('0x13'))[_0x869c('0x21')](_0x3c938b)[_0x869c('0x14')](_0x869c('0x15'));return _0x3e09bf[_0x869c('0x22')](0x0,0x8)+'-'+_0x3e09bf[_0x869c('0x22')](0x8,0xc)+'-'+_0x3e09bf[_0x869c('0x22')](0xc,0x10)+'-'+_0x3e09bf[_0x869c('0x22')](0x10,0x14)+'-'+_0x3e09bf['substring'](0x14);}};
\ No newline at end of file
index f9e5637..e784bbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd963=['NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','diff','decryptString','days','catch','error','message','finally','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','GET','then','get','data1','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update'];(function(_0x4694ef,_0x1666a1){var _0x40eaa4=function(_0x1b6fcb){while(--_0x1b6fcb){_0x4694ef['push'](_0x4694ef['shift']());}};_0x40eaa4(++_0x1666a1);}(_0xd963,0x137));var _0x3d96=function(_0x16337a,_0x4789a1){_0x16337a=_0x16337a-0x0;var _0x422365=_0xd963[_0x16337a];return _0x422365;};'use strict';var util=require(_0x3d96('0x0'));var moment=require(_0x3d96('0x1'));var rp=require(_0x3d96('0x2'));var BPromise=require(_0x3d96('0x3'));var pkginfo=require(_0x3d96('0x4'))(module,_0x3d96('0x5'));var db=require(_0x3d96('0x6'))['db'];var encryptor=require('../../components/encryptor');var hardware=require(_0x3d96('0x7'));var logger=require(_0x3d96('0x8'))(_0x3d96('0x9'));var HOST=_0x3d96('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x1b53f0){return new BPromise(function(_0xc0ab3e,_0x569958){var _0x30bc4e=util[_0x3d96('0xb')](_0x3d96('0xc'),HOST,_0x1b53f0,module['exports'][_0x3d96('0x5')]);if(oldToken){_0x30bc4e=util[_0x3d96('0xb')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x1b53f0,module['exports']['version'],oldToken);}var _0x340782={'uri':_0x30bc4e,'method':_0x3d96('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x340782)[_0x3d96('0xe')](function(_0x5d440d){_0xc0ab3e(_0x5d440d);})['catch'](function(_0x4dc372){_0x569958(_0x4dc372);});});}function manageLicense(_0x5117a6,_0x277884){var _0x3f1389=_0x277884[_0x3d96('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x3f1389[_0x3d96('0x10')]!==_0x5117a6&&!_0x3f1389[_0x3d96('0x11')]){oldToken=_0x3f1389[_0x3d96('0x10')];}httpRequest(_0x5117a6)[_0x3d96('0xe')](function(_0x698828){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x698828['active']){isOldTokenSent=![];if(!_0x3f1389[_0x3d96('0x9')]&&_0x3f1389['license']!=_0x698828[_0x3d96('0x9')]||_0x3f1389[_0x3d96('0x9')]&&_0x3f1389['data2']){logger[_0x3d96('0x12')](_0x3d96('0x13'));}if(_0x3f1389['license']&&!_0x3f1389[_0x3d96('0x11')]&&_0x3f1389[_0x3d96('0x9')]!=_0x698828[_0x3d96('0x9')]){logger[_0x3d96('0x12')](_0x3d96('0x14'));}if(_0x3f1389[_0x3d96('0x9')]&&!_0x3f1389[_0x3d96('0x11')]&&_0x3f1389[_0x3d96('0x9')]==_0x698828[_0x3d96('0x9')]){return _0x277884;}return _0x277884[_0x3d96('0x15')]({'data1':_0x5117a6,'data2':null,'license':_0x698828[_0x3d96('0x9')]});}else{if(_0x698828[_0x3d96('0x9')]||_0x3f1389['license']){if(!_0x3f1389[_0x3d96('0x11')]){if(_0x3f1389[_0x3d96('0x10')]==_0x5117a6){GRAY_PERIOD_REASON='Disabled';logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON='Changed';logger[_0x3d96('0x12')](_0x3d96('0x16'),_0x3f1389['data1'],_0x5117a6);}logger['info'](_0x3d96('0x17'),GRAY_PERIOD_REASON[_0x3d96('0x18')](),moment()[_0x3d96('0xb')](_0x3d96('0x19')));return _0x277884[_0x3d96('0x15')]({'data2':encryptor['encryptString'](moment()[_0x3d96('0xb')](_0x3d96('0x19')))});}else{if(moment()[_0x3d96('0x1a')](encryptor[_0x3d96('0x1b')](_0x3f1389[_0x3d96('0x11')]),_0x3d96('0x1c'))>DAYS){logger[_0x3d96('0x12')]('DEMO\x20START\x20AT\x20%s',moment()[_0x3d96('0xb')](_0x3d96('0x19')));isOldTokenSent=![];return _0x277884['update']({'data1':_0x5117a6,'data2':null,'license':null});}}}else{if(_0x3f1389[_0x3d96('0x10')]!=_0x5117a6){logger['info'](_0x3d96('0x16'),_0x3f1389[_0x3d96('0x10')],_0x5117a6);return _0x277884[_0x3d96('0x15')]({'data1':_0x5117a6,'data2':null,'license':null});}}}return _0x277884;})['then'](function(_0x8e3b23){_0x277884=_0x8e3b23;})[_0x3d96('0x1d')](function(_0x3f0e9e){logger[_0x3d96('0x1e')](_0x3f0e9e[_0x3d96('0x1f')]);})[_0x3d96('0x20')](function(){setTimeout(function(){manageLicense(hardware[_0x3d96('0x21')](),_0x277884);},TIME);});}function defaultLicense(){var _0x5f17cd=hardware[_0x3d96('0x21')]();if(_0x5f17cd){return db['License'][_0x3d96('0x22')]({'where':{'id':0x1},'defaults':{'data1':_0x5f17cd}})[_0x3d96('0x23')](function(_0x4e6154,_0xc891bb){logger[_0x3d96('0x12')](_0x3d96('0x24'),_0x5f17cd);manageLicense(_0x5f17cd,_0x4e6154);})['catch'](function(_0x4c472d){logger[_0x3d96('0x1e')](_0x4c472d[_0x3d96('0x1f')]);});}}exports['default']=defaultLicense;
\ No newline at end of file
+var _0xcb85=['../../mysqldb','../../components/encryptor','./hardware','../logger','license','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','days','catch','error','getUuid','License','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','request-promise','version'];(function(_0x34c0ac,_0x1cc797){var _0x292649=function(_0x58cc3d){while(--_0x58cc3d){_0x34c0ac['push'](_0x34c0ac['shift']());}};_0x292649(++_0x1cc797);}(_0xcb85,0xe1));var _0x5cb8=function(_0x6287b6,_0x5682e7){_0x6287b6=_0x6287b6-0x0;var _0x5d6be4=_0xcb85[_0x6287b6];return _0x5d6be4;};'use strict';var util=require(_0x5cb8('0x0'));var moment=require('moment');var rp=require(_0x5cb8('0x1'));var BPromise=require('bluebird');var pkginfo=require('pkginfo')(module,_0x5cb8('0x2'));var db=require(_0x5cb8('0x3'))['db'];var encryptor=require(_0x5cb8('0x4'));var hardware=require(_0x5cb8('0x5'));var logger=require(_0x5cb8('0x6'))(_0x5cb8('0x7'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x5994cb){return new BPromise(function(_0xf9988f,_0x2a2a97){var _0x1feecb=util[_0x5cb8('0x8')](_0x5cb8('0x9'),HOST,_0x5994cb,module[_0x5cb8('0xa')][_0x5cb8('0x2')]);if(oldToken){_0x1feecb=util[_0x5cb8('0x8')](_0x5cb8('0xb'),HOST,_0x5994cb,module[_0x5cb8('0xa')]['version'],oldToken);}var _0x49a575={'uri':_0x1feecb,'method':_0x5cb8('0xc'),'timeout':0xea60,'json':!![]};return rp(_0x49a575)[_0x5cb8('0xd')](function(_0x386f8d){_0xf9988f(_0x386f8d);})['catch'](function(_0x3ec8ed){_0x2a2a97(_0x3ec8ed);});});}function manageLicense(_0x7eedfd,_0x45ecca){var _0x10486f=_0x45ecca[_0x5cb8('0xe')]({'plain':!![]});if(!isOldTokenSent&&_0x10486f[_0x5cb8('0xf')]!==_0x7eedfd&&!_0x10486f[_0x5cb8('0x10')]){oldToken=_0x10486f[_0x5cb8('0xf')];}httpRequest(_0x7eedfd)[_0x5cb8('0xd')](function(_0x59cf0c){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x59cf0c[_0x5cb8('0x11')]){isOldTokenSent=![];if(!_0x10486f[_0x5cb8('0x7')]&&_0x10486f[_0x5cb8('0x7')]!=_0x59cf0c['license']||_0x10486f[_0x5cb8('0x7')]&&_0x10486f[_0x5cb8('0x10')]){logger[_0x5cb8('0x12')](_0x5cb8('0x13'));}if(_0x10486f[_0x5cb8('0x7')]&&!_0x10486f[_0x5cb8('0x10')]&&_0x10486f[_0x5cb8('0x7')]!=_0x59cf0c[_0x5cb8('0x7')]){logger[_0x5cb8('0x12')](_0x5cb8('0x14'));}if(_0x10486f[_0x5cb8('0x7')]&&!_0x10486f[_0x5cb8('0x10')]&&_0x10486f[_0x5cb8('0x7')]==_0x59cf0c[_0x5cb8('0x7')]){return _0x45ecca;}return _0x45ecca[_0x5cb8('0x15')]({'data1':_0x7eedfd,'data2':null,'license':_0x59cf0c[_0x5cb8('0x7')]});}else{if(_0x59cf0c[_0x5cb8('0x7')]||_0x10486f[_0x5cb8('0x7')]){if(!_0x10486f['data2']){if(_0x10486f[_0x5cb8('0xf')]==_0x7eedfd){GRAY_PERIOD_REASON=_0x5cb8('0x16');logger[_0x5cb8('0x12')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x5cb8('0x17');logger[_0x5cb8('0x12')](_0x5cb8('0x18'),_0x10486f[_0x5cb8('0xf')],_0x7eedfd);}logger['info'](_0x5cb8('0x19'),GRAY_PERIOD_REASON[_0x5cb8('0x1a')](),moment()[_0x5cb8('0x8')](_0x5cb8('0x1b')));return _0x45ecca[_0x5cb8('0x15')]({'data2':encryptor[_0x5cb8('0x1c')](moment()[_0x5cb8('0x8')](_0x5cb8('0x1b')))});}else{if(moment()[_0x5cb8('0x1d')](encryptor['decryptString'](_0x10486f['data2']),_0x5cb8('0x1e'))>DAYS){logger['info']('DEMO\x20START\x20AT\x20%s',moment()[_0x5cb8('0x8')](_0x5cb8('0x1b')));isOldTokenSent=![];return _0x45ecca[_0x5cb8('0x15')]({'data1':_0x7eedfd,'data2':null,'license':null});}}}else{if(_0x10486f[_0x5cb8('0xf')]!=_0x7eedfd){logger[_0x5cb8('0x12')](_0x5cb8('0x18'),_0x10486f[_0x5cb8('0xf')],_0x7eedfd);return _0x45ecca[_0x5cb8('0x15')]({'data1':_0x7eedfd,'data2':null,'license':null});}}}return _0x45ecca;})[_0x5cb8('0xd')](function(_0x493fd0){_0x45ecca=_0x493fd0;})[_0x5cb8('0x1f')](function(_0x4577f6){logger[_0x5cb8('0x20')](_0x4577f6['message']);})['finally'](function(){setTimeout(function(){manageLicense(hardware[_0x5cb8('0x21')](),_0x45ecca);},TIME);});}function defaultLicense(){var _0x58f7d1=hardware[_0x5cb8('0x21')]();if(_0x58f7d1){return db[_0x5cb8('0x22')]['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x58f7d1}})[_0x5cb8('0x23')](function(_0x3f16c8,_0x511a75){logger[_0x5cb8('0x12')](_0x5cb8('0x24'),_0x58f7d1);manageLicense(_0x58f7d1,_0x3f16c8);})[_0x5cb8('0x1f')](function(_0x1f564b){logger['error'](_0x1f564b['message']);});}}exports[_0x5cb8('0x25')]=defaultLicense;
\ No newline at end of file
index f3f30aa..84c7360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ac8=['count','catch','telephone','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','bluebird','../../components/encryptor','getUuid','2027-01-01T00:00:00.000Z','Breaking\x20license','License','find','defaults','then','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','format','%s:%s:%s','parse','decryptString','add','days','grayReason','machineUuid','changed','disabled','message','User','findAll','role','sequelize','COUNT','col','admin','telephones','user'];(function(_0x2b77ef,_0x5abb2e){var _0x35032b=function(_0x22623f){while(--_0x22623f){_0x2b77ef['push'](_0x2b77ef['shift']());}};_0x35032b(++_0x5abb2e);}(_0x9ac8,0x1ea));var _0x89ac=function(_0x190d5d,_0x139f2c){_0x190d5d=_0x190d5d-0x0;var _0x46255b=_0x9ac8[_0x190d5d];return _0x46255b;};'use strict';var util=require(_0x89ac('0x0'));var _=require(_0x89ac('0x1'));var moment=require('moment');var BPromise=require(_0x89ac('0x2'));var hardware=require('./hardware');var encryptor=require(_0x89ac('0x3'));var db=require('../../mysqldb')['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':'Demo\x20license','machineUuid':hardware[_0x89ac('0x4')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x89ac('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x89ac('0x6'),'machineUuid':hardware[_0x89ac('0x4')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x33762a){return new BPromise(function(_0x22621a,_0x5b2f34){return db[_0x89ac('0x7')][_0x89ac('0x8')](_[_0x89ac('0x9')](_0x33762a,{'raw':!![],'where':{'id':0x1}}))[_0x89ac('0xa')](function(_0xb904cd){return checkLicense(_0xb904cd,null);})['then'](function(_0x2b995b){_0x22621a(_0x2b995b);return;})['catch'](function(_0x2b8d54){_0x5b2f34(_0x2b8d54);});});}function checkLicense(_0x79090,_0x5ea6ac){if(!_0x79090){demoLicense[_0x89ac('0xb')]=_0x79090[_0x89ac('0xc')];return demoLicense;}try{var _0x132f51=_0x5ea6ac||_0x79090[_0x89ac('0xd')];if(_[_0x89ac('0xe')](_0x132f51)){throw new Error(_0x89ac('0xf'));}var _0x19e9ff=_0x79090[_0x89ac('0xc')];var _0x180ddb=_0x79090[_0x89ac('0x10')];var _0x99e31c=_0x19e9ff[_0x89ac('0x11')]('-')[0x4];var _0x5bd053=_0x19e9ff['split']('-')[0x0];var _0x43d132=encryptor['decryptString'](_0x132f51,util[_0x89ac('0x12')](_0x89ac('0x13'),_0x99e31c,_0x19e9ff,_0x5bd053));var _0x29f094=JSON[_0x89ac('0x14')](_0x43d132);_0x29f094['demo']=![];_0x29f094[_0x89ac('0xb')]=_0x19e9ff;_0x29f094['machineUuid']=hardware[_0x89ac('0x4')]();if(_0x180ddb){var _0x1c22f8=encryptor[_0x89ac('0x15')](_0x180ddb);_0x29f094['gray']=_0x1c22f8;_0x29f094['deadline']=moment(_0x1c22f8)[_0x89ac('0x16')](0x7,_0x89ac('0x17'))[_0x89ac('0x12')]();_0x29f094[_0x89ac('0x18')]=_0x29f094[_0x89ac('0xb')]!=_0x29f094[_0x89ac('0x19')]?_0x89ac('0x1a'):_0x89ac('0x1b');}return _0x29f094;}catch(_0x2c586c){breakingLicense[_0x89ac('0xb')]=_0x79090[_0x89ac('0xc')];breakingLicense['message']=_0x2c586c[_0x89ac('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x4a266b,_0xbd4d8e){getLicense()[_0x89ac('0xa')](function(_0x160282){return db[_0x89ac('0x1d')][_0x89ac('0x1e')]({'attributes':[_0x89ac('0x1f'),[db[_0x89ac('0x20')]['fn'](_0x89ac('0x21'),db[_0x89ac('0x20')][_0x89ac('0x22')](_0x89ac('0x1f'))),'count']],'group':_0x89ac('0x1f'),'where':{'role':{'$or':[_0x89ac('0x23'),'user','telephone']}},'raw':!![]})['then'](function(_0x535622){var _0x500e54={'user':_0x160282['users']||0x0,'telephone':_0x160282[_0x89ac('0x24')]||0x0};_0x535622['forEach'](function(_0x477540){var _0x12c2e1=_0x477540[_0x89ac('0x1f')]===_0x89ac('0x23')?_0x89ac('0x25'):_0x477540['role'];_0x500e54[_0x12c2e1]-=_0x477540[_0x89ac('0x26')];if(_0x500e54[_0x12c2e1]<0x0)_0x500e54[_0x12c2e1]=0x0;});_0x4a266b(_0x500e54);return;});})[_0x89ac('0x27')](function(_0xcaa108){_0xbd4d8e(_0xcaa108);});});}function checkUserLimits(_0x510ee2){return new BPromise(function(_0x493f73,_0x2fdb60){getLimits()['then'](function(_0x5013a4){var _0x2b6394=_['pick'](_['countBy'](_0x510ee2,'role'),[_0x89ac('0x23'),_0x89ac('0x25'),_0x89ac('0x28')]);var _0x37d6e8=(_0x2b6394[_0x89ac('0x23')]||0x0)+(_0x2b6394[_0x89ac('0x25')]||0x0);var _0x42309a=_0x2b6394[_0x89ac('0x28')]||0x0;if(_0x37d6e8>_0x5013a4[_0x89ac('0x25')])return _0x2fdb60(_0x89ac('0x29'));if(_0x42309a>_0x5013a4['telephone'])return _0x2fdb60(_0x89ac('0x2a'));return _0x493f73();})[_0x89ac('0x27')](function(_0x55c4ac){_0x2fdb60(_0x55c4ac);});});}module[_0x89ac('0x2b')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0xbd37=['%s:%s:%s','demo','uuid','machineUuid','deadline','days','format','grayReason','changed','message','User','role','COUNT','sequelize','col','count','admin','user','telephone','users','telephones','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','Demo\x20license','getUuid','2027-01-01T00:00:00.000Z','Breaking\x20license','License','find','defaults','then','catch','license','License\x20key\x20value\x20not\x20found','data1','split','decryptString'];(function(_0x5419bf,_0x357b04){var _0x1db7b2=function(_0x13f11f){while(--_0x13f11f){_0x5419bf['push'](_0x5419bf['shift']());}};_0x1db7b2(++_0x357b04);}(_0xbd37,0x105));var _0x7bd3=function(_0x2a940b,_0x56326b){_0x2a940b=_0x2a940b-0x0;var _0x3cb1d9=_0xbd37[_0x2a940b];return _0x3cb1d9;};'use strict';var util=require(_0x7bd3('0x0'));var _=require(_0x7bd3('0x1'));var moment=require(_0x7bd3('0x2'));var BPromise=require(_0x7bd3('0x3'));var hardware=require(_0x7bd3('0x4'));var encryptor=require(_0x7bd3('0x5'));var db=require(_0x7bd3('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':_0x7bd3('0x7'),'machineUuid':hardware[_0x7bd3('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x7bd3('0x9'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x7bd3('0xa'),'machineUuid':hardware[_0x7bd3('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x256bce){return new BPromise(function(_0x5dd888,_0x2f4e03){return db[_0x7bd3('0xb')][_0x7bd3('0xc')](_[_0x7bd3('0xd')](_0x256bce,{'raw':!![],'where':{'id':0x1}}))[_0x7bd3('0xe')](function(_0x578c15){return checkLicense(_0x578c15,null);})[_0x7bd3('0xe')](function(_0x5bd752){_0x5dd888(_0x5bd752);return;})[_0x7bd3('0xf')](function(_0x2d1efb){_0x2f4e03(_0x2d1efb);});});}function checkLicense(_0x12c455,_0x12c2dc){if(!_0x12c455){demoLicense['uuid']=_0x12c455['data1'];return demoLicense;}try{var _0x2ce4c0=_0x12c2dc||_0x12c455[_0x7bd3('0x10')];if(_['isEmpty'](_0x2ce4c0)){throw new Error(_0x7bd3('0x11'));}var _0x5dcbd2=_0x12c455[_0x7bd3('0x12')];var _0x555ae9=_0x12c455['data2'];var _0x34ab1a=_0x5dcbd2[_0x7bd3('0x13')]('-')[0x4];var _0x43b617=_0x5dcbd2['split']('-')[0x0];var _0x4ae45d=encryptor[_0x7bd3('0x14')](_0x2ce4c0,util['format'](_0x7bd3('0x15'),_0x34ab1a,_0x5dcbd2,_0x43b617));var _0x18d1a0=JSON['parse'](_0x4ae45d);_0x18d1a0[_0x7bd3('0x16')]=![];_0x18d1a0[_0x7bd3('0x17')]=_0x5dcbd2;_0x18d1a0[_0x7bd3('0x18')]=hardware[_0x7bd3('0x8')]();if(_0x555ae9){var _0x44b868=encryptor['decryptString'](_0x555ae9);_0x18d1a0['gray']=_0x44b868;_0x18d1a0[_0x7bd3('0x19')]=moment(_0x44b868)['add'](0x7,_0x7bd3('0x1a'))[_0x7bd3('0x1b')]();_0x18d1a0[_0x7bd3('0x1c')]=_0x18d1a0[_0x7bd3('0x17')]!=_0x18d1a0[_0x7bd3('0x18')]?_0x7bd3('0x1d'):'disabled';}return _0x18d1a0;}catch(_0x15eae1){breakingLicense[_0x7bd3('0x17')]=_0x12c455[_0x7bd3('0x12')];breakingLicense[_0x7bd3('0x1e')]=_0x15eae1['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x12a6e1,_0x34c800){getLicense()[_0x7bd3('0xe')](function(_0x702a3b){return db[_0x7bd3('0x1f')]['findAll']({'attributes':[_0x7bd3('0x20'),[db['sequelize']['fn'](_0x7bd3('0x21'),db[_0x7bd3('0x22')][_0x7bd3('0x23')]('role')),_0x7bd3('0x24')]],'group':_0x7bd3('0x20'),'where':{'role':{'$or':[_0x7bd3('0x25'),_0x7bd3('0x26'),_0x7bd3('0x27')]}},'raw':!![]})[_0x7bd3('0xe')](function(_0x4768a7){var _0xecf855={'user':_0x702a3b[_0x7bd3('0x28')]||0x0,'telephone':_0x702a3b[_0x7bd3('0x29')]||0x0};_0x4768a7['forEach'](function(_0x5e5e84){var _0x9af2f4=_0x5e5e84[_0x7bd3('0x20')]===_0x7bd3('0x25')?'user':_0x5e5e84['role'];_0xecf855[_0x9af2f4]-=_0x5e5e84['count'];if(_0xecf855[_0x9af2f4]<0x0)_0xecf855[_0x9af2f4]=0x0;});_0x12a6e1(_0xecf855);return;});})[_0x7bd3('0xf')](function(_0x21e660){_0x34c800(_0x21e660);});});}function checkUserLimits(_0x3bb250){return new BPromise(function(_0x3eca8a,_0x525788){getLimits()['then'](function(_0x2e805b){var _0x32b66f=_[_0x7bd3('0x2a')](_[_0x7bd3('0x2b')](_0x3bb250,_0x7bd3('0x20')),['admin',_0x7bd3('0x26'),_0x7bd3('0x27')]);var _0x17c643=(_0x32b66f[_0x7bd3('0x25')]||0x0)+(_0x32b66f[_0x7bd3('0x26')]||0x0);var _0x1a6958=_0x32b66f['telephone']||0x0;if(_0x17c643>_0x2e805b[_0x7bd3('0x26')])return _0x525788(_0x7bd3('0x2c'));if(_0x1a6958>_0x2e805b[_0x7bd3('0x27')])return _0x525788(_0x7bd3('0x2d'));return _0x3eca8a();})[_0x7bd3('0xf')](function(_0x5eb21f){_0x525788(_0x5eb21f);});});}module[_0x7bd3('0x2e')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 86b0725..18a2a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['exports','secret'];(function(_0x366f30,_0x5992aa){var _0x148ed6=function(_0x3042e6){while(--_0x3042e6){_0x366f30['push'](_0x366f30['shift']());}};_0x148ed6(++_0x5992aa);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x2ea34a,_0x343b3c){_0x2ea34a=_0x2ea34a-0x0;var _0x58bfe4=_0xdd4f[_0x2ea34a];return _0x58bfe4;};'use strict';module[_0xfdd4('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xfdd4('0x1'),'DEBUG':''};
\ No newline at end of file
+var _0xfb11=['exports','myappanuglar-secret','app-id'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x34021d,_0x753aa6){_0x34021d=_0x34021d-0x0;var _0x16597b=_0xfb11[_0x34021d];return _0x16597b;};'use strict';module[_0x1fb1('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0x1fb1('0x1'),'GOOGLE_ID':_0x1fb1('0x2'),'GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
index b1239dc..a03edeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53d6=['}}}','format','YYYY-MM-DD\x20HH:mm:ss','level','exports','Logger','transports','File','%s-%s','error','info','util','path','INFO','/var','log','xcally','message','replace','{{{'];(function(_0xf15036,_0x52e137){var _0x2985dd=function(_0x2d2dca){while(--_0x2d2dca){_0xf15036['push'](_0xf15036['shift']());}};_0x2985dd(++_0x52e137);}(_0x53d6,0xbf));var _0x653d=function(_0x20a4dc,_0x2bd7c7){_0x20a4dc=_0x20a4dc-0x0;var _0x49000f=_0x53d6[_0x20a4dc];return _0x49000f;};'use strict';var moment=require('moment');var winston=require('winston');var util=require(_0x653d('0x0'));var path=require(_0x653d('0x1'));var debugLevel=_0x653d('0x2');function filename(_0x1cb02c,_0x685f43){return path['join'](_0x653d('0x3'),_0x653d('0x4'),_0x653d('0x5'),util['format']('%s-%s.log',_0x1cb02c,_0x685f43));}function formatter(_0x3547cc,_0x32acbb){_0x32acbb[_0x653d('0x6')]=_0x32acbb['message'][_0x653d('0x7')](/@@{/g,_0x653d('0x8'))[_0x653d('0x7')](/}@@/g,_0x653d('0x9'))['replace'](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0x653d('0xa')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0x653d('0xa')](_0x653d('0xb')),_0x32acbb[_0x653d('0xc')]['toUpperCase'](),_0x3547cc,_0x32acbb[_0x653d('0x6')]);}module[_0x653d('0xd')]=function(_0x65cdd7){return new winston[(_0x653d('0xe'))]({'transports':[new winston[(_0x653d('0xf'))][(_0x653d('0x10'))]({'name':util[_0x653d('0xa')](_0x653d('0x11'),_0x65cdd7,_0x653d('0x12')),'filename':filename(_0x65cdd7,'error'),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x57ce8c){return formatter(_0x65cdd7,_0x57ce8c);}}),new winston[(_0x653d('0xf'))][(_0x653d('0x10'))]({'name':util[_0x653d('0xa')](_0x653d('0x11'),_0x65cdd7,'info'),'filename':filename(_0x65cdd7,'info'),'level':_0x653d('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xbd84b3){return formatter(_0x65cdd7,_0xbd84b3);}}),new winston[(_0x653d('0xf'))]['Console']({'level':process['env']['debugLevel']||debugLevel,'json':![],'formatter':function(_0x394a93){return formatter(_0x65cdd7,_0x394a93);}})]});};
\ No newline at end of file
+var _0x9a83=['xcally','%s-%s.log','message','replace','{{{','[%s]\x20[%s]\x20%s\x20-\x20%s','Logger','File','%s-%s','error','info','transports','Console','debugLevel','moment','winston','util','path','log'];(function(_0x58b983,_0x78a9a2){var _0x1ab70a=function(_0x4e26d9){while(--_0x4e26d9){_0x58b983['push'](_0x58b983['shift']());}};_0x1ab70a(++_0x78a9a2);}(_0x9a83,0x18a));var _0x39a8=function(_0x5b36bd,_0x4dfb36){_0x5b36bd=_0x5b36bd-0x0;var _0x1614fe=_0x9a83[_0x5b36bd];return _0x1614fe;};'use strict';var moment=require(_0x39a8('0x0'));var winston=require(_0x39a8('0x1'));var util=require(_0x39a8('0x2'));var path=require(_0x39a8('0x3'));var debugLevel='INFO';function filename(_0x300d6b,_0x396f22){return path['join']('/var',_0x39a8('0x4'),_0x39a8('0x5'),util['format'](_0x39a8('0x6'),_0x300d6b,_0x396f22));}function formatter(_0x217cae,_0x1b95e8){_0x1b95e8['message']=_0x1b95e8[_0x39a8('0x7')][_0x39a8('0x8')](/@@{/g,_0x39a8('0x9'))['replace'](/}@@/g,'}}}')['replace'](/@{/g,'{{')['replace'](/}@/g,'}}');return util['format'](_0x39a8('0xa'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),_0x1b95e8['level']['toUpperCase'](),_0x217cae,_0x1b95e8[_0x39a8('0x7')]);}module['exports']=function(_0x587e57){return new winston[(_0x39a8('0xb'))]({'transports':[new winston['transports'][(_0x39a8('0xc'))]({'name':util['format'](_0x39a8('0xd'),_0x587e57,_0x39a8('0xe')),'filename':filename(_0x587e57,_0x39a8('0xe')),'level':_0x39a8('0xe'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x5b69eb){return formatter(_0x587e57,_0x5b69eb);}}),new winston['transports'][(_0x39a8('0xc'))]({'name':util['format'](_0x39a8('0xd'),_0x587e57,'info'),'filename':filename(_0x587e57,_0x39a8('0xf')),'level':'info','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x599591){return formatter(_0x587e57,_0x599591);}}),new winston[(_0x39a8('0x10'))][(_0x39a8('0x11'))]({'level':process['env'][_0x39a8('0x12')]||debugLevel,'json':![],'formatter':function(_0x4cf8be){return formatter(_0x587e57,_0x4cf8be);}})]});};
\ No newline at end of file
index 5c5a261..220c82e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8ac=['../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','path','express','join','../../services/express/index.js','ami','agi','../../services/agi/index.js','email','routing'];(function(_0x37f395,_0x17aeb3){var _0x33591f=function(_0x52d2eb){while(--_0x52d2eb){_0x37f395['push'](_0x37f395['shift']());}};_0x33591f(++_0x17aeb3);}(_0xd8ac,0xd4));var _0xcd8a=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xd8ac[_0x397e5f];return _0x5302b8;};'use strict';var path=require(_0xcd8a('0x0'));var os=require('os');var config={'apps':[{'name':_0xcd8a('0x1'),'script':path[_0xcd8a('0x2')](__dirname,_0xcd8a('0x3'))},{'name':_0xcd8a('0x4'),'script':path['join'](__dirname,'../../services/ami/index.js')},{'name':_0xcd8a('0x5'),'script':path[_0xcd8a('0x2')](__dirname,_0xcd8a('0x6'))},{'name':_0xcd8a('0x7'),'script':path['join'](__dirname,'../../services/email/index.js')},{'name':_0xcd8a('0x8'),'script':path[_0xcd8a('0x2')](__dirname,_0xcd8a('0x9'))},{'name':_0xcd8a('0xa'),'script':path[_0xcd8a('0x2')](__dirname,_0xcd8a('0xb'))}]};module[_0xcd8a('0xc')]=config;
\ No newline at end of file
+var _0xf50d=['../../services/email/index.js','routing','../../services/xdr/index.js','exports','path','express','join','../../services/express/index.js','../../services/ami/index.js','agi','../../services/agi/index.js','email'];(function(_0x368fb0,_0x5f1c26){var _0x377151=function(_0x399e59){while(--_0x399e59){_0x368fb0['push'](_0x368fb0['shift']());}};_0x377151(++_0x5f1c26);}(_0xf50d,0x1d8));var _0xdf50=function(_0x17406a,_0x1e2320){_0x17406a=_0x17406a-0x0;var _0x1501ff=_0xf50d[_0x17406a];return _0x1501ff;};'use strict';var path=require(_0xdf50('0x0'));var os=require('os');var config={'apps':[{'name':_0xdf50('0x1'),'script':path[_0xdf50('0x2')](__dirname,_0xdf50('0x3'))},{'name':'ami','script':path[_0xdf50('0x2')](__dirname,_0xdf50('0x4'))},{'name':_0xdf50('0x5'),'script':path[_0xdf50('0x2')](__dirname,_0xdf50('0x6'))},{'name':_0xdf50('0x7'),'script':path['join'](__dirname,_0xdf50('0x8'))},{'name':_0xdf50('0x9'),'script':path['join'](__dirname,'../../services/routing/index.js')},{'name':'xdr','script':path[_0xdf50('0x2')](__dirname,_0xdf50('0xa'))}]};module[_0xdf50('0xb')]=config;
\ No newline at end of file
index 776641d..a338e6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d3f=['saved','./config','connected','start','disconnect','stop','then','restart','delete','dump'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0x5d3f,0x79));var _0xf5d3=function(_0xaa52db,_0x175048){_0xaa52db=_0xaa52db-0x0;var _0x227388=_0x5d3f[_0xaa52db];return _0x227388;};'use strict';var pm2=require('pm2');var BPromise=require('bluebird');var config=require(_0xf5d3('0x0'));function connect(){return new BPromise(function(_0x577e24,_0x153bc4){return pm2['connect'](function(_0x269618){if(_0x269618){return _0x153bc4(_0x269618);}return _0x577e24(_0xf5d3('0x1'));});});};exports[_0xf5d3('0x2')]=function(_0x143517){return connect()['then'](function(){return new BPromise(function(_0x4a7a43,_0x5026b4){return pm2['start'](_0x143517,function(_0x3c4253,_0x594c4d){if(_0x3c4253){return _0x5026b4(_0x3c4253);}pm2[_0xf5d3('0x3')]();return _0x4a7a43(_0x594c4d);});});});};exports[_0xf5d3('0x4')]=function(_0x202d8f){return connect()[_0xf5d3('0x5')](function(){return new BPromise(function(_0x17ed72,_0x1aedf0){return pm2[_0xf5d3('0x4')](_0x202d8f,function(_0x5f0bd4,_0x460d14){if(_0x5f0bd4){return _0x1aedf0(_0x5f0bd4);}pm2['disconnect']();return _0x17ed72(_0x460d14);});});});};exports[_0xf5d3('0x6')]=function(_0x14b323){return connect()[_0xf5d3('0x5')](function(){return new BPromise(function(_0x5b8152,_0x7cd100){return pm2[_0xf5d3('0x6')](_0x14b323,function(_0x311e62,_0x38aeb7){if(_0x311e62){return _0x7cd100(_0x311e62);}pm2[_0xf5d3('0x3')]();return _0x5b8152(_0x38aeb7);});});});};exports['list']=function(){return connect()[_0xf5d3('0x5')](function(){return new BPromise(function(_0x9640c7,_0x4d8274){return pm2['list'](function(_0x9c4cd1,_0x42cae1){if(_0x9c4cd1){return _0x4d8274(_0x9c4cd1);}pm2['disconnect']();return _0x9640c7(_0x42cae1);});});});};exports['describe']=function(_0x5dfaf6){return connect()[_0xf5d3('0x5')](function(){return new BPromise(function(_0x56a650,_0x41e931){return pm2['describe'](_0x5dfaf6,function(_0x5740bf,_0x32cfe7){if(_0x5740bf){return _0x41e931(_0x5740bf);}pm2['disconnect']();return _0x56a650(_0x32cfe7);});});});};exports[_0xf5d3('0x7')]=function(_0x141641){return connect()[_0xf5d3('0x5')](function(){return new BPromise(function(_0x17e9f6,_0x1dbd3e){return pm2[_0xf5d3('0x7')](_0x141641,function(_0x2dd1c3,_0x1a6e2a){if(_0x2dd1c3){return _0x1dbd3e(_0x2dd1c3);}pm2[_0xf5d3('0x3')]();return _0x17e9f6(_0x1a6e2a);});});});};exports[_0xf5d3('0x8')]=function(){return connect()['then'](function(){return new BPromise(function(_0x37da41,_0x53bba0){return pm2['dump'](function(_0x131cf9){if(_0x131cf9){return _0x53bba0(_0x131cf9);}return _0x37da41(_0xf5d3('0x9'));});});});};
\ No newline at end of file
+var _0x9fa8=['start','then','disconnect','stop','restart','list','describe','delete','dump','saved','bluebird','connect','connected'];(function(_0x540a3c,_0x111d3b){var _0x4172c8=function(_0x49112a){while(--_0x49112a){_0x540a3c['push'](_0x540a3c['shift']());}};_0x4172c8(++_0x111d3b);}(_0x9fa8,0x99));var _0x89fa=function(_0x53482f,_0x21c460){_0x53482f=_0x53482f-0x0;var _0x3a9561=_0x9fa8[_0x53482f];return _0x3a9561;};'use strict';var pm2=require('pm2');var BPromise=require(_0x89fa('0x0'));var config=require('./config');function connect(){return new BPromise(function(_0x2f6c95,_0x50531e){return pm2[_0x89fa('0x1')](function(_0x3a5500){if(_0x3a5500){return _0x50531e(_0x3a5500);}return _0x2f6c95(_0x89fa('0x2'));});});};exports[_0x89fa('0x3')]=function(_0x40a670){return connect()[_0x89fa('0x4')](function(){return new BPromise(function(_0x1e84f5,_0x33ddd9){return pm2[_0x89fa('0x3')](_0x40a670,function(_0x5a771d,_0x523d00){if(_0x5a771d){return _0x33ddd9(_0x5a771d);}pm2[_0x89fa('0x5')]();return _0x1e84f5(_0x523d00);});});});};exports['stop']=function(_0x4f9270){return connect()[_0x89fa('0x4')](function(){return new BPromise(function(_0x58fd5c,_0x297407){return pm2[_0x89fa('0x6')](_0x4f9270,function(_0x1d4306,_0x1f43bb){if(_0x1d4306){return _0x297407(_0x1d4306);}pm2[_0x89fa('0x5')]();return _0x58fd5c(_0x1f43bb);});});});};exports[_0x89fa('0x7')]=function(_0x376df5){return connect()[_0x89fa('0x4')](function(){return new BPromise(function(_0x4088c4,_0x3e9be0){return pm2[_0x89fa('0x7')](_0x376df5,function(_0x2c9d01,_0x446442){if(_0x2c9d01){return _0x3e9be0(_0x2c9d01);}pm2[_0x89fa('0x5')]();return _0x4088c4(_0x446442);});});});};exports['list']=function(){return connect()[_0x89fa('0x4')](function(){return new BPromise(function(_0x5722e2,_0xcba50){return pm2[_0x89fa('0x8')](function(_0x1b93c3,_0x4cccc6){if(_0x1b93c3){return _0xcba50(_0x1b93c3);}pm2[_0x89fa('0x5')]();return _0x5722e2(_0x4cccc6);});});});};exports['describe']=function(_0x460d9d){return connect()[_0x89fa('0x4')](function(){return new BPromise(function(_0x780adb,_0x5c54da){return pm2[_0x89fa('0x9')](_0x460d9d,function(_0x5b8c00,_0xbc62){if(_0x5b8c00){return _0x5c54da(_0x5b8c00);}pm2[_0x89fa('0x5')]();return _0x780adb(_0xbc62);});});});};exports['delete']=function(_0x42a479){return connect()[_0x89fa('0x4')](function(){return new BPromise(function(_0x2e1cc9,_0x5357e8){return pm2[_0x89fa('0xa')](_0x42a479,function(_0x5a4ae9,_0x561d88){if(_0x5a4ae9){return _0x5357e8(_0x5a4ae9);}pm2['disconnect']();return _0x2e1cc9(_0x561d88);});});});};exports[_0x89fa('0xb')]=function(){return connect()[_0x89fa('0x4')](function(){return new BPromise(function(_0x2fbea4,_0x369c0c){return pm2[_0x89fa('0xb')](function(_0x393c31){if(_0x393c31){return _0x369c0c(_0x393c31);}return _0x2fbea4(_0x89fa('0xc'));});});});};
\ No newline at end of file
index 0945f18..d2e1dfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2176=['map','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','format','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','util','schedule','defaults','redis','localhost','socket.io-emitter','chatTimeout','ChatInteraction','findAll','subtract','minutes','then','length'];(function(_0xc0a3d3,_0x2c8d00){var _0x3386e8=function(_0x3f9df4){while(--_0x3f9df4){_0xc0a3d3['push'](_0xc0a3d3['shift']());}};_0x3386e8(++_0x2c8d00);}(_0x2176,0xd0));var _0x6217=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2176[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x6217('0x0'));var moment=require(_0x6217('0x1'));var Redis=require(_0x6217('0x2'));var util=require(_0x6217('0x3'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0x6217('0x4'));config['redis']=_[_0x6217('0x5')](config[_0x6217('0x6')],{'host':_0x6217('0x7'),'port':0x18eb});var io=require(_0x6217('0x8'))(new Redis(config[_0x6217('0x6')]));function closeInteractions(){var _0x1272cb=0x0;var _0x1a72ae=[];return db['Setting']['find']({'raw':!![],'attributes':['id',_0x6217('0x9')],'where':{'id':0x1}})['then'](function(_0xb6445f){_0x1272cb=_0xb6445f[_0x6217('0x9')];if(_0x1272cb){return db[_0x6217('0xa')][_0x6217('0xb')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x6217('0xc')](_0xb6445f[_0x6217('0x9')],_0x6217('0xd'))}}});}else{return[];}})[_0x6217('0xe')](function(_0x2afec9){if(_0x2afec9&&_0x2afec9[_0x6217('0xf')]){_0x1a72ae=_[_0x6217('0x10')](_0x2afec9||[],'id');logger[_0x6217('0x11')](_0x6217('0x12'),_0x1a72ae[_0x6217('0x13')]());return db[_0x6217('0xa')][_0x6217('0x14')]({'closeReason':'system','disposition':'timeout','closed':!![],'closedAt':moment()[_0x6217('0x15')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x1a72ae}});}})[_0x6217('0xe')](function(){if(_0x1a72ae&&_0x1a72ae[_0x6217('0xf')]){logger[_0x6217('0x11')]('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x1a72ae['join']());for(var _0x43df83=0x0;_0x43df83<_0x1a72ae[_0x6217('0xf')];_0x43df83++){io[_0x6217('0x16')](_0x6217('0x17'),{'id':_0x1a72ae[_0x43df83],'closed':!![]});}}})[_0x6217('0x18')](function(_0x5aa0b6){logger[_0x6217('0x19')](_0x6217('0x1a'),_0x5aa0b6?util[_0x6217('0x1b')](_0x5aa0b6,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xa07c=['lastMsgAt','subtract','minutes','length','map','info','join','ChatInteraction','update','system','timeout','format','emit','catch','error','inspect','lodash','moment','../../config/environment','../../mysqldb','schedule','redis','localhost','chatTimeout','then','findAll'];(function(_0x2eb2da,_0xa255b){var _0x346b00=function(_0xf4de53){while(--_0xf4de53){_0x2eb2da['push'](_0x2eb2da['shift']());}};_0x346b00(++_0xa255b);}(_0xa07c,0x114));var _0xca07=function(_0x56b4b3,_0x95efee){_0x56b4b3=_0x56b4b3-0x0;var _0x102e36=_0xa07c[_0x56b4b3];return _0x102e36;};'use strict';var _=require(_0xca07('0x0'));var moment=require(_0xca07('0x1'));var Redis=require('ioredis');var util=require('util');var config=require(_0xca07('0x2'));var db=require(_0xca07('0x3'))['db'];var logger=require('../logger')(_0xca07('0x4'));config[_0xca07('0x5')]=_['defaults'](config[_0xca07('0x5')],{'host':_0xca07('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xca07('0x5')]));function closeInteractions(){var _0x303027=0x0;var _0x42c26e=[];return db['Setting']['find']({'raw':!![],'attributes':['id',_0xca07('0x7')],'where':{'id':0x1}})[_0xca07('0x8')](function(_0x12c289){_0x303027=_0x12c289[_0xca07('0x7')];if(_0x303027){return db['ChatInteraction'][_0xca07('0x9')]({'raw':!![],'attributes':['id',_0xca07('0xa')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xca07('0xb')](_0x12c289['chatTimeout'],_0xca07('0xc'))}}});}else{return[];}})[_0xca07('0x8')](function(_0x44d4ff){if(_0x44d4ff&&_0x44d4ff[_0xca07('0xd')]){_0x42c26e=_[_0xca07('0xe')](_0x44d4ff||[],'id');logger[_0xca07('0xf')]('[CHAT]\x20Interactions\x20to\x20close:',_0x42c26e[_0xca07('0x10')]());return db[_0xca07('0x11')][_0xca07('0x12')]({'closeReason':_0xca07('0x13'),'disposition':_0xca07('0x14'),'closed':!![],'closedAt':moment()[_0xca07('0x15')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x42c26e}});}})[_0xca07('0x8')](function(){if(_0x42c26e&&_0x42c26e['length']){logger[_0xca07('0xf')]('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x42c26e[_0xca07('0x10')]());for(var _0x28a930=0x0;_0x28a930<_0x42c26e[_0xca07('0xd')];_0x28a930++){io[_0xca07('0x16')]('chatInteraction:update',{'id':_0x42c26e[_0x28a930],'closed':!![]});}}})[_0xca07('0x17')](function(_0x2a30f5){logger[_0xca07('0x18')]('[CHAT]\x20Error\x20closing\x20interactions',_0x2a30f5?util[_0xca07('0x19')](_0x2a30f5,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 61d1790..c510ee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x444b=['subtractNumber','join','../../files/reports','savename','basename','extname','zip','existsSync','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','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','error\x20mail','email\x20sent','catch','data','isNil','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','toString','difference','length','stop','deleteJob','index','resolve','cron','active','isBetween','add','start','exists','startAt','update','update\x20cron','stop\x20cron','run','lodash','moment','jayson/promise','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass','\x22%s\x22\x20<%s>','name','bcc','format','Report\x20%s\x20last\x20%s\x20%s'];(function(_0x578d1a,_0x281b05){var _0x4e470f=function(_0x3eade1){while(--_0x3eade1){_0x578d1a['push'](_0x578d1a['shift']());}};_0x4e470f(++_0x281b05);}(_0x444b,0x142));var _0xb444=function(_0x4a5362,_0x1bfc44){_0x4a5362=_0x4a5362-0x0;var _0x3bf22c=_0x444b[_0x4a5362];return _0x3bf22c;};'use strict';var fs=require('fs');var util=require('util');var path=require('path');var _=require(_0xb444('0x0'));var moment=require(_0xb444('0x1'));var CronJobManager=require('cron-job-manager');var jayson=require(_0xb444('0x2'));var BPromise=require(_0xb444('0x3'));var logger=require('../logger')(_0xb444('0x4'));var db=require(_0xb444('0x5'))['db'];var analyticCustomReportController=require(_0xb444('0x6'));var analyticDefaultReportController=require(_0xb444('0x7'));var client=jayson[_0xb444('0x8')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x42766b,_0x10fb86){return function(){logger['info'](_0xb444('0x9'),_0x42766b[_0xb444('0xa')]);var _0xd912ae=!![];var _0x1501eb={'tls':{'rejectUnauthorized':![]}};if(_0x42766b[_0xb444('0xb')][_0xb444('0xc')]['service']){_0x1501eb[_0xb444('0xd')]=_0x42766b[_0xb444('0xb')]['Smtp'][_0xb444('0xd')];}else{_0x1501eb[_0xb444('0xe')]=_0x42766b[_0xb444('0xb')][_0xb444('0xc')][_0xb444('0xe')];_0x1501eb[_0xb444('0xf')]=_0x42766b[_0xb444('0xb')][_0xb444('0xc')][_0xb444('0xf')];_0x1501eb[_0xb444('0x10')]=_0x42766b['MailAccount'][_0xb444('0xc')][_0xb444('0x10')];}if(_0x42766b['MailAccount']['Smtp'][_0xb444('0x11')]){_0x1501eb[_0xb444('0x12')]={'user':_0x42766b[_0xb444('0xb')][_0xb444('0xc')][_0xb444('0x13')],'pass':_0x42766b['MailAccount'][_0xb444('0xc')][_0xb444('0x14')]};}var _0x229265={'account':_0x1501eb,'message':{'from':util['format'](_0xb444('0x15'),_0x42766b['MailAccount'][_0xb444('0x16')],_0x42766b[_0xb444('0xb')][_0xb444('0xa')]||_0x42766b[_0xb444('0xb')][_0xb444('0xc')][_0xb444('0x13')]),'to':_0x42766b['email'],'cc':_0x42766b['cc'],'bcc':_0x42766b[_0xb444('0x17')],'subject':util[_0xb444('0x18')](_0xb444('0x19'),_0x10fb86[_0xb444('0x16')],_0x42766b[_0xb444('0x1a')],_0x42766b['subtractUnit'])}};var _0x46aa5f=path[_0xb444('0x1b')](__dirname,_0xb444('0x1c'));var _0x11d684=_0x10fb86[_0xb444('0x1d')];var _0x1c48f9=util[_0xb444('0x18')]('%s.%s',path[_0xb444('0x1e')](_0x10fb86['savename'],path[_0xb444('0x1f')](_0x10fb86[_0xb444('0x1d')])),_0xb444('0x20'));var _0x1d7708=path[_0xb444('0x1b')](_0x46aa5f,_0x11d684);var _0x122570=path['join'](_0x46aa5f,_0x1c48f9);if(fs[_0xb444('0x21')](_0x1d7708)){_0x10fb86['status']=_0xb444('0x22');_0x229265[_0xb444('0x23')][_0xb444('0x24')]=[{'filename':_0x11d684,'path':_0x1d7708}];_0x229265['message'][_0xb444('0x25')]=util[_0xb444('0x18')](_0xb444('0x26'),JSON[_0xb444('0x27')](_0x10fb86,null,0x2));}else if(fs[_0xb444('0x21')](_0x122570)){_0x10fb86['status']=_0xb444('0x22');_0x229265['message'][_0xb444('0x24')]=[{'filename':_0x1c48f9,'path':_0x122570}];}else{_0x229265[_0xb444('0x23')][_0xb444('0x25')]=_0xb444('0x28');if(!_0x42766b[_0xb444('0x29')]){_0xd912ae=![];logger[_0xb444('0x2a')](_0xb444('0x2b'));}}if(_0xd912ae){return client['request'](_0xb444('0x2c'),_0x229265)[_0xb444('0x2d')](function(_0x133d5e){if(_0x133d5e['error']){return logger[_0xb444('0x2e')](_0xb444('0x2f'),JSON[_0xb444('0x27')](_0x133d5e));}return logger[_0xb444('0x2a')](_0xb444('0x30'));})[_0xb444('0x31')](function(_0xf1b50){return logger[_0xb444('0x2e')](_0xb444('0x2f'),JSON[_0xb444('0x27')](_0xf1b50));});}};}function handleError(){return function(_0x1b4cf9){return logger[_0xb444('0x2e')](JSON[_0xb444('0x27')](_0x1b4cf9));};}function handleResult(_0x226ab7){return function(_0x35f3f0){logger[_0xb444('0x2a')](_0xb444('0x32'),JSON[_0xb444('0x27')](_0x35f3f0));if(_0x226ab7[_0xb444('0xb')]&&_0x226ab7[_0xb444('0xb')][_0xb444('0xc')]&&!_[_0xb444('0x33')](_0x226ab7['email'])){setTimeout(handleSendEmail(_0x226ab7,_0x35f3f0),0x3c*0x3e8);}};}function handleJob(_0x24cfe1){return function(){try{if(_[_0xb444('0x33')](_0x24cfe1[_0xb444('0x1a')])){return logger[_0xb444('0x2a')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0xb444('0x33')](_0x24cfe1[_0xb444('0x34')])){return logger[_0xb444('0x2a')](_0xb444('0x35'));}var _0x15ba48={'startDate':moment()[_0xb444('0x36')](_0x24cfe1['subtractNumber'],_0x24cfe1['subtractUnit'])[_0xb444('0x18')](_0xb444('0x37')),'endDate':moment()['format'](_0xb444('0x37')),'type':'scheduled','output':_0x24cfe1[_0xb444('0x38')],'name':_0x24cfe1['name']};if(!_[_0xb444('0x33')](_0x24cfe1['DefaultReportId'])){logger[_0xb444('0x2a')](_0xb444('0x39'),_0x24cfe1[_0xb444('0x3a')]);return analyticDefaultReportController[_0xb444('0x3b')]({'id':_0x24cfe1[_0xb444('0x3a')]},_0x15ba48)[_0xb444('0x2d')](handleResult(_0x24cfe1))[_0xb444('0x31')](handleError());}if(!_[_0xb444('0x33')](_0x24cfe1[_0xb444('0x3c')])){logger[_0xb444('0x2a')](_0xb444('0x3d'),_0x24cfe1['CustomReportId']);return analyticCustomReportController[_0xb444('0x3b')]({'id':_0x24cfe1[_0xb444('0x3c')]},_0x15ba48)[_0xb444('0x2d')](handleResult(_0x24cfe1))[_0xb444('0x31')](handleError());}}catch(_0x3495f2){logger[_0xb444('0x2e')](JSON[_0xb444('0x27')](_0x3495f2));}return logger[_0xb444('0x2a')](_0xb444('0x3e'));};}function getJobs(_0x52f07a){var _0x4d1333={};if(_0x52f07a){_0x4d1333['id']=_0x52f07a;}return db[_0xb444('0x3f')][_0xb444('0x40')]({'where':_0x4d1333,'include':[{'model':db[_0xb444('0xb')],'attributes':['id',_0xb444('0x16'),_0xb444('0xa')],'include':[{'model':db[_0xb444('0x41')],'as':_0xb444('0xc')}]}]})[_0xb444('0x2d')](function(_0x2a4332){var _0x574ca0=_[_0xb444('0x42')](manager[_0xb444('0x43')]);var _0x1f8b57=_[_0xb444('0x44')](_0x2a4332,function(_0x18e68f){return _0x18e68f['id']['toString']();});var _0x2434eb=_['keyBy'](_0x2a4332,function(_0x4c948a){return _0x4c948a['id'][_0xb444('0x45')]();});var _0x45a028=_0x52f07a?_0x1f8b57:_[_0xb444('0x46')](_0x1f8b57,_0x574ca0);var _0x3f02fd=_['intersection'](_0x1f8b57,_0x574ca0);var _0x1925b8=_[_0xb444('0x46')](_0x574ca0,_0x1f8b57);var _0x27b56e;var _0x2bf8d5;for(_0x27b56e=0x0;_0x27b56e<_0x1925b8[_0xb444('0x47')]&&!_0x52f07a;_0x27b56e+=0x1){_0x2bf8d5=_0x1925b8[_0x27b56e][_0xb444('0x45')]();if(manager['exists'](_0x2bf8d5)){manager[_0xb444('0x48')](_0x2bf8d5);manager[_0xb444('0x49')](_0x2bf8d5);logger[_0xb444('0x2a')]('delete\x20cron',_0x2bf8d5);}}logger[_0xb444('0x2a')]('toRun',JSON['stringify'](_0x45a028));for(_0x27b56e=0x0;_0x27b56e<_0x45a028[_0xb444('0x47')];_0x27b56e+=0x1){_0x2bf8d5=_0x45a028[_0x27b56e][_0xb444('0x45')]();logger[_0xb444('0x2a')](_0xb444('0x4a'),_0x2bf8d5);if(_0x52f07a){logger[_0xb444('0x2a')]('my\x20id',_0x52f07a);logger['info'](JSON['stringify'](_0x2434eb[_0x2bf8d5]));BPromise[_0xb444('0x4b')]()[_0xb444('0x2d')](handleJob(_0x2434eb[_0x2bf8d5]));logger[_0xb444('0x2a')]('run\x20job',_0x2434eb[_0x2bf8d5][_0xb444('0x16')],_0x2434eb[_0x2bf8d5][_0xb444('0x4c')]);}else if(_0x2434eb[_0x2bf8d5]['cron']&&_0x2434eb[_0x2bf8d5][_0xb444('0x4d')]&&moment()[_0xb444('0x4e')](_0x2434eb[_0x2bf8d5]['startAt'],_0x2434eb[_0x2bf8d5]['endAt'])){manager[_0xb444('0x4f')](_0x2bf8d5,_0x2434eb[_0x2bf8d5][_0xb444('0x4c')],handleJob(_0x2434eb[_0x2bf8d5]));manager[_0xb444('0x50')](_0x2bf8d5);logger['info']('add\x20cron',_0x2434eb[_0x2bf8d5]['name'],_0x2434eb[_0x2bf8d5][_0xb444('0x4c')]);}else if(manager[_0xb444('0x51')](_0x2bf8d5)){manager['stop'](_0x2bf8d5);manager[_0xb444('0x49')](_0x2bf8d5);logger[_0xb444('0x2a')]('stop\x20cron',_0x2434eb[_0x2bf8d5]['name'],_0x2434eb[_0x2bf8d5][_0xb444('0x4c')]);}}for(_0x27b56e=0x0,_0x2bf8d5;_0x27b56e<_0x3f02fd[_0xb444('0x47')]&&!_0x52f07a;_0x27b56e+=0x1){_0x2bf8d5=_0x3f02fd[_0x27b56e][_0xb444('0x45')]();if(manager[_0xb444('0x51')](_0x2bf8d5)){if(_0x2434eb[_0x2bf8d5][_0xb444('0x4c')]&&_0x2434eb[_0x2bf8d5][_0xb444('0x4d')]&&moment()[_0xb444('0x4e')](_0x2434eb[_0x2bf8d5][_0xb444('0x52')],_0x2434eb[_0x2bf8d5]['endAt'])){manager[_0xb444('0x53')](_0x2bf8d5,_0x2434eb[_0x2bf8d5][_0xb444('0x4c')],handleJob(_0x2434eb[_0x2bf8d5]));logger[_0xb444('0x2a')](_0xb444('0x54'),_0x2434eb[_0x2bf8d5][_0xb444('0x16')],_0x2434eb[_0x2bf8d5][_0xb444('0x4c')]);}else{manager[_0xb444('0x48')](_0x2bf8d5);manager[_0xb444('0x49')](_0x2bf8d5);logger[_0xb444('0x2a')](_0xb444('0x55'),_0x2434eb[_0x2bf8d5][_0xb444('0x16')],_0x2434eb[_0x2bf8d5]['cron']);}}}})[_0xb444('0x31')](function(_0x3e8f55){logger[_0xb444('0x2e')](JSON[_0xb444('0x27')](_0x3e8f55));});}exports[_0xb444('0x56')]=function(_0x342c4a){return getJobs(_0x342c4a);};exports[_0xb444('0x50')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x4e23=['isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','findAll','keyBy','toString','difference','intersection','length','stop','delete\x20cron','toRun','index','my\x20id','resolve','cron','active','startAt','endAt','add','start','add\x20cron','deleteJob','isBetween','update','stop\x20cron','run','util','path','lodash','cron-job-manager','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','http','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','Smtp','service','host','port','secure','authentication','user','format','\x22%s\x22\x20<%s>','name','email','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','../../files/reports','savename','basename','extname','zip','join','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','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','then','error','error\x20mail','info','email\x20sent','data','subtractNumber','subtractNumber\x20null\x20or\x20undefined'];(function(_0x491468,_0x42f169){var _0x5b8c22=function(_0x407a9b){while(--_0x407a9b){_0x491468['push'](_0x491468['shift']());}};_0x5b8c22(++_0x42f169);}(_0x4e23,0x126));var _0x34e2=function(_0x5f2670,_0x58af4e){_0x5f2670=_0x5f2670-0x0;var _0x1bfcb7=_0x4e23[_0x5f2670];return _0x1bfcb7;};'use strict';var fs=require('fs');var util=require(_0x34e2('0x0'));var path=require(_0x34e2('0x1'));var _=require(_0x34e2('0x2'));var moment=require('moment');var CronJobManager=require(_0x34e2('0x3'));var jayson=require('jayson/promise');var BPromise=require(_0x34e2('0x4'));var logger=require(_0x34e2('0x5'))('schedule');var db=require(_0x34e2('0x6'))['db'];var analyticCustomReportController=require(_0x34e2('0x7'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson['client'][_0x34e2('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4a08fb,_0x5680e5){return function(){logger['info'](_0x34e2('0x9'),_0x4a08fb['email']);var _0x5352b7=!![];var _0x431cdd={'tls':{'rejectUnauthorized':![]}};if(_0x4a08fb[_0x34e2('0xa')][_0x34e2('0xb')][_0x34e2('0xc')]){_0x431cdd[_0x34e2('0xc')]=_0x4a08fb[_0x34e2('0xa')][_0x34e2('0xb')][_0x34e2('0xc')];}else{_0x431cdd[_0x34e2('0xd')]=_0x4a08fb[_0x34e2('0xa')]['Smtp'][_0x34e2('0xd')];_0x431cdd[_0x34e2('0xe')]=_0x4a08fb[_0x34e2('0xa')]['Smtp'][_0x34e2('0xe')];_0x431cdd[_0x34e2('0xf')]=_0x4a08fb['MailAccount'][_0x34e2('0xb')][_0x34e2('0xf')];}if(_0x4a08fb[_0x34e2('0xa')][_0x34e2('0xb')][_0x34e2('0x10')]){_0x431cdd['auth']={'user':_0x4a08fb[_0x34e2('0xa')]['Smtp'][_0x34e2('0x11')],'pass':_0x4a08fb[_0x34e2('0xa')][_0x34e2('0xb')]['pass']};}var _0x192b9c={'account':_0x431cdd,'message':{'from':util[_0x34e2('0x12')](_0x34e2('0x13'),_0x4a08fb[_0x34e2('0xa')][_0x34e2('0x14')],_0x4a08fb['MailAccount']['email']||_0x4a08fb[_0x34e2('0xa')][_0x34e2('0xb')][_0x34e2('0x11')]),'to':_0x4a08fb[_0x34e2('0x15')],'cc':_0x4a08fb['cc'],'bcc':_0x4a08fb[_0x34e2('0x16')],'subject':util[_0x34e2('0x12')](_0x34e2('0x17'),_0x5680e5[_0x34e2('0x14')],_0x4a08fb['subtractNumber'],_0x4a08fb[_0x34e2('0x18')])}};var _0x514b7f=path['join'](__dirname,_0x34e2('0x19'));var _0x159e85=_0x5680e5[_0x34e2('0x1a')];var _0x5885c8=util[_0x34e2('0x12')]('%s.%s',path[_0x34e2('0x1b')](_0x5680e5[_0x34e2('0x1a')],path[_0x34e2('0x1c')](_0x5680e5['savename'])),_0x34e2('0x1d'));var _0x59b536=path['join'](_0x514b7f,_0x159e85);var _0xe787e0=path[_0x34e2('0x1e')](_0x514b7f,_0x5885c8);if(fs[_0x34e2('0x1f')](_0x59b536)){_0x5680e5[_0x34e2('0x20')]=_0x34e2('0x21');_0x192b9c[_0x34e2('0x22')][_0x34e2('0x23')]=[{'filename':_0x159e85,'path':_0x59b536}];_0x192b9c['message'][_0x34e2('0x24')]=util[_0x34e2('0x12')](_0x34e2('0x25'),JSON[_0x34e2('0x26')](_0x5680e5,null,0x2));}else if(fs[_0x34e2('0x1f')](_0xe787e0)){_0x5680e5[_0x34e2('0x20')]=_0x34e2('0x21');_0x192b9c['message'][_0x34e2('0x23')]=[{'filename':_0x5885c8,'path':_0xe787e0}];}else{_0x192b9c['message']['text']=_0x34e2('0x27');if(!_0x4a08fb[_0x34e2('0x28')]){_0x5352b7=![];logger['info']('empty\x20file,\x20email\x20not\x20sent');}}if(_0x5352b7){return client[_0x34e2('0x29')]('SendMail',_0x192b9c)[_0x34e2('0x2a')](function(_0x50f31f){if(_0x50f31f[_0x34e2('0x2b')]){return logger[_0x34e2('0x2b')](_0x34e2('0x2c'),JSON[_0x34e2('0x26')](_0x50f31f));}return logger[_0x34e2('0x2d')](_0x34e2('0x2e'));})['catch'](function(_0x27905d){return logger[_0x34e2('0x2b')](_0x34e2('0x2c'),JSON['stringify'](_0x27905d));});}};}function handleError(){return function(_0x2dc4c9){return logger[_0x34e2('0x2b')](JSON['stringify'](_0x2dc4c9));};}function handleResult(_0x3753c6){return function(_0x3e3f7e){logger[_0x34e2('0x2d')](_0x34e2('0x2f'),JSON['stringify'](_0x3e3f7e));if(_0x3753c6[_0x34e2('0xa')]&&_0x3753c6[_0x34e2('0xa')][_0x34e2('0xb')]&&!_['isNil'](_0x3753c6[_0x34e2('0x15')])){setTimeout(handleSendEmail(_0x3753c6,_0x3e3f7e),0x3c*0x3e8);}};}function handleJob(_0x1137f8){return function(){try{if(_['isNil'](_0x1137f8[_0x34e2('0x30')])){return logger[_0x34e2('0x2d')](_0x34e2('0x31'));}if(_[_0x34e2('0x32')](_0x1137f8['subtractUnit'])){return logger['info'](_0x34e2('0x33'));}var _0x3cd54a={'startDate':moment()[_0x34e2('0x34')](_0x1137f8['subtractNumber'],_0x1137f8[_0x34e2('0x18')])[_0x34e2('0x12')](_0x34e2('0x35')),'endDate':moment()[_0x34e2('0x12')](_0x34e2('0x35')),'type':_0x34e2('0x36'),'output':_0x1137f8[_0x34e2('0x37')],'name':_0x1137f8[_0x34e2('0x14')]};if(!_['isNil'](_0x1137f8[_0x34e2('0x38')])){logger[_0x34e2('0x2d')](_0x34e2('0x39'),_0x1137f8[_0x34e2('0x38')]);return analyticDefaultReportController[_0x34e2('0x3a')]({'id':_0x1137f8['DefaultReportId']},_0x3cd54a)[_0x34e2('0x2a')](handleResult(_0x1137f8))[_0x34e2('0x3b')](handleError());}if(!_[_0x34e2('0x32')](_0x1137f8[_0x34e2('0x3c')])){logger[_0x34e2('0x2d')](_0x34e2('0x3d'),_0x1137f8[_0x34e2('0x3c')]);return analyticCustomReportController[_0x34e2('0x3a')]({'id':_0x1137f8[_0x34e2('0x3c')]},_0x3cd54a)['then'](handleResult(_0x1137f8))[_0x34e2('0x3b')](handleError());}}catch(_0x3bc2e8){logger[_0x34e2('0x2b')](JSON[_0x34e2('0x26')](_0x3bc2e8));}return logger[_0x34e2('0x2d')]('no\x20report\x20id');};}function getJobs(_0x20d5ef){var _0x234d88={};if(_0x20d5ef){_0x234d88['id']=_0x20d5ef;}return db['Schedule'][_0x34e2('0x3e')]({'where':_0x234d88,'include':[{'model':db[_0x34e2('0xa')],'attributes':['id',_0x34e2('0x14'),_0x34e2('0x15')],'include':[{'model':db['MailServerOut'],'as':'Smtp'}]}]})['then'](function(_0x5d98b5){var _0x3a3039=_['keys'](manager['jobs']);var _0x90e5d2=_['map'](_0x5d98b5,function(_0x25b4fc){return _0x25b4fc['id']['toString']();});var _0x53b108=_[_0x34e2('0x3f')](_0x5d98b5,function(_0x22bb65){return _0x22bb65['id'][_0x34e2('0x40')]();});var _0x3ce984=_0x20d5ef?_0x90e5d2:_[_0x34e2('0x41')](_0x90e5d2,_0x3a3039);var _0x922180=_[_0x34e2('0x42')](_0x90e5d2,_0x3a3039);var _0x456b13=_['difference'](_0x3a3039,_0x90e5d2);var _0x26529a;var _0x15e029;for(_0x26529a=0x0;_0x26529a<_0x456b13[_0x34e2('0x43')]&&!_0x20d5ef;_0x26529a+=0x1){_0x15e029=_0x456b13[_0x26529a]['toString']();if(manager['exists'](_0x15e029)){manager[_0x34e2('0x44')](_0x15e029);manager['deleteJob'](_0x15e029);logger[_0x34e2('0x2d')](_0x34e2('0x45'),_0x15e029);}}logger[_0x34e2('0x2d')](_0x34e2('0x46'),JSON[_0x34e2('0x26')](_0x3ce984));for(_0x26529a=0x0;_0x26529a<_0x3ce984['length'];_0x26529a+=0x1){_0x15e029=_0x3ce984[_0x26529a][_0x34e2('0x40')]();logger[_0x34e2('0x2d')](_0x34e2('0x47'),_0x15e029);if(_0x20d5ef){logger['info'](_0x34e2('0x48'),_0x20d5ef);logger[_0x34e2('0x2d')](JSON[_0x34e2('0x26')](_0x53b108[_0x15e029]));BPromise[_0x34e2('0x49')]()[_0x34e2('0x2a')](handleJob(_0x53b108[_0x15e029]));logger[_0x34e2('0x2d')]('run\x20job',_0x53b108[_0x15e029][_0x34e2('0x14')],_0x53b108[_0x15e029][_0x34e2('0x4a')]);}else if(_0x53b108[_0x15e029][_0x34e2('0x4a')]&&_0x53b108[_0x15e029][_0x34e2('0x4b')]&&moment()['isBetween'](_0x53b108[_0x15e029][_0x34e2('0x4c')],_0x53b108[_0x15e029][_0x34e2('0x4d')])){manager[_0x34e2('0x4e')](_0x15e029,_0x53b108[_0x15e029]['cron'],handleJob(_0x53b108[_0x15e029]));manager[_0x34e2('0x4f')](_0x15e029);logger[_0x34e2('0x2d')](_0x34e2('0x50'),_0x53b108[_0x15e029][_0x34e2('0x14')],_0x53b108[_0x15e029]['cron']);}else if(manager['exists'](_0x15e029)){manager[_0x34e2('0x44')](_0x15e029);manager[_0x34e2('0x51')](_0x15e029);logger[_0x34e2('0x2d')]('stop\x20cron',_0x53b108[_0x15e029][_0x34e2('0x14')],_0x53b108[_0x15e029]['cron']);}}for(_0x26529a=0x0,_0x15e029;_0x26529a<_0x922180[_0x34e2('0x43')]&&!_0x20d5ef;_0x26529a+=0x1){_0x15e029=_0x922180[_0x26529a][_0x34e2('0x40')]();if(manager['exists'](_0x15e029)){if(_0x53b108[_0x15e029]['cron']&&_0x53b108[_0x15e029][_0x34e2('0x4b')]&&moment()[_0x34e2('0x52')](_0x53b108[_0x15e029][_0x34e2('0x4c')],_0x53b108[_0x15e029][_0x34e2('0x4d')])){manager[_0x34e2('0x53')](_0x15e029,_0x53b108[_0x15e029][_0x34e2('0x4a')],handleJob(_0x53b108[_0x15e029]));logger[_0x34e2('0x2d')]('update\x20cron',_0x53b108[_0x15e029][_0x34e2('0x14')],_0x53b108[_0x15e029][_0x34e2('0x4a')]);}else{manager[_0x34e2('0x44')](_0x15e029);manager[_0x34e2('0x51')](_0x15e029);logger['info'](_0x34e2('0x54'),_0x53b108[_0x15e029][_0x34e2('0x14')],_0x53b108[_0x15e029][_0x34e2('0x4a')]);}}}})['catch'](function(_0x59788a){logger['error'](JSON[_0x34e2('0x26')](_0x59788a));});}exports[_0x34e2('0x55')]=function(_0x38128d){return getJobs(_0x38128d);};exports[_0x34e2('0x4f')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 185a7ce..49c24bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b00=['[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','COMPLETED','TranscriptionJob','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','transcripts','length','results','fileText','transcript','update','tempSentiment','ValidationError','sentiment','sentimentAccountId','sentimentRegion','language','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Sentiment','SentimentScore','Positive','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','bucket','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Mixed','catch','name','SequelizeValidationError','error','inspect','VoiceRecording','findAll','IN_PROGRESS','Settings\x20not\x20available','Transcribe\x20not\x20configured','transcribeAccountId','forEach','push','start','lodash','aws-sdk','request-promise','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','transcribeName','data2','transcribeRegion','then'];(function(_0x105660,_0x13447d){var _0x4c6542=function(_0x35df52){while(--_0x35df52){_0x105660['push'](_0x105660['shift']());}};_0x4c6542(++_0x13447d);}(_0x9b00,0xcc));var _0x09b0=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x9b00[_0x465028];return _0xb783d4;};var _=require(_0x09b0('0x0'));var AWS=require(_0x09b0('0x1'));var rp=require(_0x09b0('0x2'));var util=require('util');var BPromise=require(_0x09b0('0x3'));var db=require(_0x09b0('0x4'))['db'];var logger=require(_0x09b0('0x5'))(_0x09b0('0x6'));function getTranscriptionJob(_0x405978,_0x3c02c5,_0x2e56a5,_0x53c312){return new Promise(function(_0x79bc56,_0x57b9e0){var _0x20c971=new AWS[(_0x09b0('0x7'))]({'accessKeyId':_0x3c02c5,'secretAccessKey':_0x405978,'region':_0x2e56a5});_0x20c971[_0x09b0('0x8')]({'TranscriptionJobName':_0x53c312},function(_0x4290c7,_0x1bc2ce){if(_0x4290c7){return _0x57b9e0(_0x4290c7);}else{return _0x79bc56(_0x1bc2ce);}});});}function sentiment(_0x419960,_0x289d1d,_0x541785,_0x231740,_0x3f9abd){return new Promise(function(_0x2a948f,_0x247ab0){var _0x3847f9=new AWS[(_0x09b0('0x9'))]({'accessKeyId':_0x289d1d,'secretAccessKey':_0x419960,'region':_0x541785});_0x3847f9[_0x09b0('0xa')]({'Text':_0x231740,'LanguageCode':_0x3f9abd[_0x09b0('0xb')](0x0,0x2)},function(_0x2d487b,_0xb85ce3){if(_0x2d487b){return _0x247ab0(_0x2d487b);}else{return _0x2a948f(_0xb85ce3);}});});}function checkTranscribeJob(_0x3871d5,_0x48689b,_0x2e2ad5){var _0x3a43d9;return new BPromise(function(_0x11c160,_0x5e0888){logger[_0x09b0('0xc')](util[_0x09b0('0xd')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x3871d5['id'],_0x3871d5[_0x09b0('0xe')]));return getTranscriptionJob(_0x2e2ad5['data1'],_0x2e2ad5[_0x09b0('0xf')],_0x48689b[_0x09b0('0x10')],_0x3871d5[_0x09b0('0xe')])[_0x09b0('0x11')](function(_0x4c23d0){logger['info'](util['format'](_0x09b0('0x12'),_0x3871d5['id'],_0x3871d5[_0x09b0('0xe')],_0x4c23d0['TranscriptionJob'][_0x09b0('0x13')]));if(!_0x3871d5['fileText']){switch(_0x4c23d0['TranscriptionJob']['TranscriptionJobStatus']){case _0x09b0('0x14'):var _0x20e8f3={'transcribeStatus':_0x4c23d0[_0x09b0('0x15')][_0x09b0('0x13')],'fileUri':_0x4c23d0[_0x09b0('0x15')][_0x09b0('0x16')][_0x09b0('0x17')]};logger[_0x09b0('0xc')](util['format'](_0x09b0('0x18'),_0x3871d5['id']));return rp({'uri':_0x4c23d0['TranscriptionJob'][_0x09b0('0x16')][_0x09b0('0x17')],'json':!![]})[_0x09b0('0x11')](function(_0x1fd062){logger[_0x09b0('0xc')](util['format'](_0x09b0('0x19'),_0x3871d5['id']));if(_0x1fd062&&_0x1fd062['results']&&_0x1fd062['results'][_0x09b0('0x1a')]&&_0x1fd062['results'][_0x09b0('0x1a')][_0x09b0('0x1b')]){_0x20e8f3['fileText']='';for(var _0x1e6324=0x0;_0x1e6324<_0x1fd062[_0x09b0('0x1c')][_0x09b0('0x1a')][_0x09b0('0x1b')];_0x1e6324++){_0x20e8f3[_0x09b0('0x1d')]+=_0x1fd062[_0x09b0('0x1c')][_0x09b0('0x1a')][_0x1e6324][_0x09b0('0x1e')]+'';}}return _0x3871d5[_0x09b0('0x1f')](_0x20e8f3);})[_0x09b0('0x11')](function(){logger[_0x09b0('0xc')](util[_0x09b0('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3871d5['id']));if(!_0x3871d5[_0x09b0('0x20')]){throw new db['Sequelize'][(_0x09b0('0x21'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x48689b[_0x09b0('0x22')]||!_0x48689b[_0x09b0('0x23')]||!_0x48689b[_0x09b0('0x24')]||!_0x48689b[_0x09b0('0x25')]||!_0x48689b['bucket']){throw new db[(_0x09b0('0x26'))][(_0x09b0('0x21'))](_0x09b0('0x27'));}if(!_0x20e8f3['fileText']){throw new Error(_0x09b0('0x28'));}if(_0x48689b[_0x09b0('0x23')]===_0x2e2ad5['id']){return _0x2e2ad5;}else{return db[_0x09b0('0x29')][_0x09b0('0x2a')]({'where':{'id':_settings[_0x09b0('0x23')]}});}})['then'](function(_0x3d5338){if(!_0x3d5338){throw new db[(_0x09b0('0x26'))][(_0x09b0('0x21'))](_0x09b0('0x2b'));}if(!_0x3d5338[_0x09b0('0x2c')]||!_0x3d5338[_0x09b0('0xf')]){throw new db[(_0x09b0('0x26'))][(_0x09b0('0x21'))](_0x09b0('0x2d'));}_0x3a43d9=_0x3d5338;logger[_0x09b0('0xc')](util[_0x09b0('0xd')](_0x09b0('0x2e'),_0x3871d5['id']));return sentiment(_0x3a43d9['data1'],_0x3a43d9[_0x09b0('0xf')],_0x48689b['sentimentRegion'],_0x20e8f3[_0x09b0('0x1d')],_0x48689b['language']);})[_0x09b0('0x11')](function(_0x6d2b00){logger[_0x09b0('0xc')](util[_0x09b0('0xd')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x3871d5['id']));return _0x3871d5['update']({'sentiment':_0x6d2b00[_0x09b0('0x2f')],'sPositive':_0x6d2b00[_0x09b0('0x30')][_0x09b0('0x31')],'sNegative':_0x6d2b00[_0x09b0('0x30')]['Negative'],'sMixed':_0x6d2b00[_0x09b0('0x30')]['Mixed'],'sNeutral':_0x6d2b00['SentimentScore'][_0x09b0('0x32')]});})[_0x09b0('0x11')](function(){logger[_0x09b0('0xc')](util[_0x09b0('0xd')](_0x09b0('0x33'),_0x3871d5['id']));_0x11c160();});case _0x09b0('0x34'):return _0x3871d5[_0x09b0('0x1f')]({'transcribeStatus':'FAILED','failureReason':_0x4c23d0[_0x09b0('0x15')][_0x09b0('0x35')]})[_0x09b0('0x11')](function(){logger['info'](util[_0x09b0('0xd')](_0x09b0('0x33'),_0x3871d5['id']));_0x11c160();});default:logger[_0x09b0('0xc')](util[_0x09b0('0xd')](_0x09b0('0x36'),_0x3871d5['id']));break;}}else{return BPromise[_0x09b0('0x37')]()[_0x09b0('0x11')](function(){if(!_0x3871d5[_0x09b0('0x20')]){throw new db[(_0x09b0('0x26'))][(_0x09b0('0x21'))](_0x09b0('0x38'));}if(!_0x48689b[_0x09b0('0x22')]||!_0x48689b['sentimentAccountId']||!_0x48689b[_0x09b0('0x24')]||!_0x48689b[_0x09b0('0x25')]||!_0x48689b[_0x09b0('0x39')]){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x3871d5[_0x09b0('0x1d')]){throw new Error(_0x09b0('0x28'));}if(_0x48689b[_0x09b0('0x23')]===_0x2e2ad5['id']){return _0x2e2ad5;}else{return db['CloudProvider'][_0x09b0('0x2a')]({'where':{'id':_settings[_0x09b0('0x23')]}});}})[_0x09b0('0x11')](function(_0x3db98c){if(!_0x3db98c){throw new db[(_0x09b0('0x26'))]['ValidationError'](_0x09b0('0x2b'));}if(!_0x3db98c[_0x09b0('0x2c')]||!_0x3db98c[_0x09b0('0xf')]){throw new db['Sequelize'][(_0x09b0('0x21'))](_0x09b0('0x2d'));}_0x3a43d9=_0x3db98c;logger[_0x09b0('0xc')](util[_0x09b0('0xd')](_0x09b0('0x2e'),_0x3871d5['id']));return sentiment(_0x3a43d9[_0x09b0('0x2c')],_0x3a43d9[_0x09b0('0xf')],_0x48689b['sentimentRegion'],_0x3871d5['fileText'],_0x48689b['language']);})['then'](function(_0x184e03){logger['info'](util[_0x09b0('0xd')](_0x09b0('0x3a'),_0x3871d5['id']));return _0x3871d5['update']({'sentiment':_0x184e03[_0x09b0('0x2f')],'sPositive':_0x184e03[_0x09b0('0x30')][_0x09b0('0x31')],'sNegative':_0x184e03['SentimentScore']['Negative'],'sMixed':_0x184e03[_0x09b0('0x30')][_0x09b0('0x3b')],'sNeutral':_0x184e03[_0x09b0('0x30')]['Neutral'],'transcribeStatus':_0x09b0('0x14')});})[_0x09b0('0x11')](function(){logger[_0x09b0('0xc')](util['format'](_0x09b0('0x33'),_0x3871d5['id']));_0x11c160();});}})[_0x09b0('0x3c')](function(_0x46409c){if(_0x46409c){if(!_0x46409c['name']||_0x46409c[_0x09b0('0x3d')]!==_0x09b0('0x3e')){logger[_0x09b0('0x3f')](util[_0x09b0('0xd')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x3871d5['id']),util[_0x09b0('0x40')](_0x46409c,{'showHidden':![],'depth':null}));}}_0x11c160();});});}function checkTranscribe(){var _0x6a96fe;var _0x6cd71c;var _0x78a2b6;return db[_0x09b0('0x41')][_0x09b0('0x42')]({'where':{'transcribeStatus':_0x09b0('0x43')}})[_0x09b0('0x11')](function(_0x3bb2c6){if(!_0x3bb2c6||!_0x3bb2c6[_0x09b0('0x1b')]){throw new db[(_0x09b0('0x26'))][(_0x09b0('0x21'))]('No\x20transcribe\x20job\x20to\x20check');}_0x6a96fe=_0x3bb2c6;return db['Setting']['findOne']({'where':{'id':0x1}});})[_0x09b0('0x11')](function(_0x5315d0){if(!_0x5315d0){throw new db[(_0x09b0('0x26'))][(_0x09b0('0x21'))](_0x09b0('0x44'));}_0x6cd71c=_0x5315d0;if(!_0x6cd71c['transcribe']||!_0x6cd71c['transcribeAccountId']||!_0x6cd71c[_0x09b0('0x10')]||!_0x6cd71c[_0x09b0('0x25')]||!_0x6cd71c[_0x09b0('0x39')]){throw new db[(_0x09b0('0x26'))]['ValidationError'](_0x09b0('0x45'));}return db[_0x09b0('0x29')][_0x09b0('0x2a')]({'where':{'id':_0x6cd71c[_0x09b0('0x46')]}});})['then'](function(_0x21e1b4){if(!_0x21e1b4){throw new db[(_0x09b0('0x26'))][(_0x09b0('0x21'))](_0x09b0('0x2b'));}if(!_0x21e1b4[_0x09b0('0x2c')]||!_0x21e1b4['data2']){throw new db[(_0x09b0('0x26'))][(_0x09b0('0x21'))](_0x09b0('0x2d'));}_0x78a2b6=_0x21e1b4;var _0x24e416=[];_0x6a96fe[_0x09b0('0x47')](function(_0x28a636){_0x24e416[_0x09b0('0x48')](checkTranscribeJob(_0x28a636,_0x6cd71c,_0x78a2b6));});return BPromise['all'](_0x24e416);})[_0x09b0('0x3c')](function(_0x5ac31d){if(_0x5ac31d){if(!_0x5ac31d['name']||_0x5ac31d[_0x09b0('0x3d')]!==_0x09b0('0x3e')){logger[_0x09b0('0x3f')](util[_0x09b0('0x40')](_0x5ac31d,{'showHidden':![],'depth':null}));}}});}exports[_0x09b0('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x58e5=['[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','then','results','transcripts','transcript','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Negative','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Positive','Mixed','catch','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','length','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','forEach','push','all','name','SequelizeValidationError','error','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','transcribe','TranscribeService','Comprehend','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','transcribeRegion','transcribeName','info'];(function(_0x56b886,_0x1ff474){var _0x164baf=function(_0x575d09){while(--_0x575d09){_0x56b886['push'](_0x56b886['shift']());}};_0x164baf(++_0x1ff474);}(_0x58e5,0xd1));var _0x558e=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0x58e5[_0xaa1b3e];return _0x454d7d;};var _=require(_0x558e('0x0'));var AWS=require(_0x558e('0x1'));var rp=require(_0x558e('0x2'));var util=require(_0x558e('0x3'));var BPromise=require(_0x558e('0x4'));var db=require(_0x558e('0x5'))['db'];var logger=require('../../config/logger')(_0x558e('0x6'));function getTranscriptionJob(_0x550dd2,_0x4959f0,_0xd66d13,_0x58497f){return new Promise(function(_0x33bcd4,_0x586bfa){var _0x2887fe=new AWS[(_0x558e('0x7'))]({'accessKeyId':_0x4959f0,'secretAccessKey':_0x550dd2,'region':_0xd66d13});_0x2887fe['getTranscriptionJob']({'TranscriptionJobName':_0x58497f},function(_0x58c368,_0x5a26b8){if(_0x58c368){return _0x586bfa(_0x58c368);}else{return _0x33bcd4(_0x5a26b8);}});});}function sentiment(_0x537f9f,_0x4d0fa3,_0x29c7ac,_0x8b89a,_0x5d1e17){return new Promise(function(_0x56342b,_0x289317){var _0x12be93=new AWS[(_0x558e('0x8'))]({'accessKeyId':_0x4d0fa3,'secretAccessKey':_0x537f9f,'region':_0x29c7ac});_0x12be93['detectSentiment']({'Text':_0x8b89a,'LanguageCode':_0x5d1e17[_0x558e('0x9')](0x0,0x2)},function(_0x4e29bd,_0xe180b0){if(_0x4e29bd){return _0x289317(_0x4e29bd);}else{return _0x56342b(_0xe180b0);}});});}function checkTranscribeJob(_0x2158f2,_0x1328b5,_0x3bd154){var _0x4a0889;return new BPromise(function(_0x407afd,_0xe70393){logger['info'](util[_0x558e('0xa')](_0x558e('0xb'),_0x2158f2['id'],_0x2158f2['transcribeName']));return getTranscriptionJob(_0x3bd154[_0x558e('0xc')],_0x3bd154['data2'],_0x1328b5[_0x558e('0xd')],_0x2158f2[_0x558e('0xe')])['then'](function(_0x21552c){logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x10'),_0x2158f2['id'],_0x2158f2['transcribeName'],_0x21552c[_0x558e('0x11')][_0x558e('0x12')]));if(!_0x2158f2[_0x558e('0x13')]){switch(_0x21552c[_0x558e('0x11')][_0x558e('0x12')]){case _0x558e('0x14'):var _0x392258={'transcribeStatus':_0x21552c['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x21552c[_0x558e('0x11')][_0x558e('0x15')][_0x558e('0x16')]};logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x17'),_0x2158f2['id']));return rp({'uri':_0x21552c[_0x558e('0x11')][_0x558e('0x15')][_0x558e('0x16')],'json':!![]})[_0x558e('0x18')](function(_0x4c402d){logger[_0x558e('0xf')](util[_0x558e('0xa')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x2158f2['id']));if(_0x4c402d&&_0x4c402d['results']&&_0x4c402d[_0x558e('0x19')][_0x558e('0x1a')]&&_0x4c402d[_0x558e('0x19')][_0x558e('0x1a')]['length']){_0x392258[_0x558e('0x13')]='';for(var _0xb9c059=0x0;_0xb9c059<_0x4c402d['results'][_0x558e('0x1a')]['length'];_0xb9c059++){_0x392258[_0x558e('0x13')]+=_0x4c402d[_0x558e('0x19')][_0x558e('0x1a')][_0xb9c059][_0x558e('0x1b')]+'';}}return _0x2158f2['update'](_0x392258);})['then'](function(){logger[_0x558e('0xf')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x2158f2['id']));if(!_0x2158f2[_0x558e('0x1c')]){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))](_0x558e('0x1f'));}if(!_0x1328b5[_0x558e('0x20')]||!_0x1328b5['sentimentAccountId']||!_0x1328b5[_0x558e('0x21')]||!_0x1328b5[_0x558e('0x22')]||!_0x1328b5[_0x558e('0x23')]){throw new db['Sequelize'][(_0x558e('0x1e'))](_0x558e('0x24'));}if(!_0x392258[_0x558e('0x13')]){throw new Error(_0x558e('0x25'));}if(_0x1328b5[_0x558e('0x26')]===_0x3bd154['id']){return _0x3bd154;}else{return db[_0x558e('0x27')][_0x558e('0x28')]({'where':{'id':_settings[_0x558e('0x26')]}});}})[_0x558e('0x18')](function(_0x1f8997){if(!_0x1f8997){throw new db['Sequelize'][(_0x558e('0x1e'))](_0x558e('0x29'));}if(!_0x1f8997[_0x558e('0xc')]||!_0x1f8997[_0x558e('0x2a')]){throw new db['Sequelize']['ValidationError'](_0x558e('0x2b'));}_0x4a0889=_0x1f8997;logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x2c'),_0x2158f2['id']));return sentiment(_0x4a0889['data1'],_0x4a0889['data2'],_0x1328b5[_0x558e('0x21')],_0x392258[_0x558e('0x13')],_0x1328b5[_0x558e('0x22')]);})[_0x558e('0x18')](function(_0x44c604){logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x2d'),_0x2158f2['id']));return _0x2158f2[_0x558e('0x2e')]({'sentiment':_0x44c604[_0x558e('0x2f')],'sPositive':_0x44c604[_0x558e('0x30')]['Positive'],'sNegative':_0x44c604[_0x558e('0x30')][_0x558e('0x31')],'sMixed':_0x44c604['SentimentScore']['Mixed'],'sNeutral':_0x44c604['SentimentScore'][_0x558e('0x32')]});})[_0x558e('0x18')](function(){logger['info'](util[_0x558e('0xa')](_0x558e('0x33'),_0x2158f2['id']));_0x407afd();});case _0x558e('0x34'):return _0x2158f2[_0x558e('0x2e')]({'transcribeStatus':'FAILED','failureReason':_0x21552c[_0x558e('0x11')][_0x558e('0x35')]})['then'](function(){logger['info'](util[_0x558e('0xa')](_0x558e('0x33'),_0x2158f2['id']));_0x407afd();});default:logger['info'](util[_0x558e('0xa')](_0x558e('0x36'),_0x2158f2['id']));break;}}else{return BPromise[_0x558e('0x37')]()['then'](function(){if(!_0x2158f2[_0x558e('0x1c')]){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))](_0x558e('0x1f'));}if(!_0x1328b5[_0x558e('0x20')]||!_0x1328b5[_0x558e('0x26')]||!_0x1328b5[_0x558e('0x21')]||!_0x1328b5[_0x558e('0x22')]||!_0x1328b5[_0x558e('0x23')]){throw new db['Sequelize'][(_0x558e('0x1e'))](_0x558e('0x24'));}if(!_0x2158f2[_0x558e('0x13')]){throw new Error(_0x558e('0x25'));}if(_0x1328b5[_0x558e('0x26')]===_0x3bd154['id']){return _0x3bd154;}else{return db[_0x558e('0x27')][_0x558e('0x28')]({'where':{'id':_settings[_0x558e('0x26')]}});}})[_0x558e('0x18')](function(_0x3079b9){if(!_0x3079b9){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))](_0x558e('0x29'));}if(!_0x3079b9['data1']||!_0x3079b9[_0x558e('0x2a')]){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))]('Cloud\x20Provider\x20not\x20configured');}_0x4a0889=_0x3079b9;logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x2c'),_0x2158f2['id']));return sentiment(_0x4a0889['data1'],_0x4a0889[_0x558e('0x2a')],_0x1328b5[_0x558e('0x21')],_0x2158f2[_0x558e('0x13')],_0x1328b5[_0x558e('0x22')]);})[_0x558e('0x18')](function(_0x1c7ec4){logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x2d'),_0x2158f2['id']));return _0x2158f2[_0x558e('0x2e')]({'sentiment':_0x1c7ec4[_0x558e('0x2f')],'sPositive':_0x1c7ec4[_0x558e('0x30')][_0x558e('0x38')],'sNegative':_0x1c7ec4[_0x558e('0x30')]['Negative'],'sMixed':_0x1c7ec4[_0x558e('0x30')][_0x558e('0x39')],'sNeutral':_0x1c7ec4['SentimentScore'][_0x558e('0x32')],'transcribeStatus':'COMPLETED'});})[_0x558e('0x18')](function(){logger[_0x558e('0xf')](util[_0x558e('0xa')](_0x558e('0x33'),_0x2158f2['id']));_0x407afd();});}})[_0x558e('0x3a')](function(_0xc6ecb9){if(_0xc6ecb9){if(!_0xc6ecb9['name']||_0xc6ecb9['name']!=='SequelizeValidationError'){logger['error'](util[_0x558e('0xa')](_0x558e('0x3b'),_0x2158f2['id']),util[_0x558e('0x3c')](_0xc6ecb9,{'showHidden':![],'depth':null}));}}_0x407afd();});});}function checkTranscribe(){var _0x2b5448;var _0x57c3f0;var _0x195801;return db[_0x558e('0x3d')][_0x558e('0x3e')]({'where':{'transcribeStatus':_0x558e('0x3f')}})[_0x558e('0x18')](function(_0x1019b7){if(!_0x1019b7||!_0x1019b7[_0x558e('0x40')]){throw new db[(_0x558e('0x1d'))]['ValidationError'](_0x558e('0x41'));}_0x2b5448=_0x1019b7;return db[_0x558e('0x42')][_0x558e('0x28')]({'where':{'id':0x1}});})['then'](function(_0x1cdaa6){if(!_0x1cdaa6){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))]('Settings\x20not\x20available');}_0x57c3f0=_0x1cdaa6;if(!_0x57c3f0['transcribe']||!_0x57c3f0[_0x558e('0x43')]||!_0x57c3f0[_0x558e('0xd')]||!_0x57c3f0[_0x558e('0x22')]||!_0x57c3f0[_0x558e('0x23')]){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))]('Transcribe\x20not\x20configured');}return db['CloudProvider']['findOne']({'where':{'id':_0x57c3f0[_0x558e('0x43')]}});})[_0x558e('0x18')](function(_0x4cd46f){if(!_0x4cd46f){throw new db[(_0x558e('0x1d'))][(_0x558e('0x1e'))](_0x558e('0x29'));}if(!_0x4cd46f[_0x558e('0xc')]||!_0x4cd46f['data2']){throw new db[(_0x558e('0x1d'))]['ValidationError'](_0x558e('0x2b'));}_0x195801=_0x4cd46f;var _0x4482d6=[];_0x2b5448[_0x558e('0x44')](function(_0x1d879d){_0x4482d6[_0x558e('0x45')](checkTranscribeJob(_0x1d879d,_0x57c3f0,_0x195801));});return BPromise[_0x558e('0x46')](_0x4482d6);})[_0x558e('0x3a')](function(_0x45a5de){if(_0x45a5de){if(!_0x45a5de[_0x558e('0x47')]||_0x45a5de['name']!==_0x558e('0x48')){logger[_0x558e('0x49')](util[_0x558e('0x3c')](_0x45a5de,{'showHidden':![],'depth':null}));}}});}exports[_0x558e('0x4a')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index df1dcca..568f407 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c88=['findAll','lastMsgAt','subtract','hours','then','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','timeout','format','length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','schedule','redis','defaults','WhatsappInteraction'];(function(_0x5e4819,_0x3db0da){var _0x2ca5e7=function(_0x1b19e9){while(--_0x1b19e9){_0x5e4819['push'](_0x5e4819['shift']());}};_0x2ca5e7(++_0x3db0da);}(_0x5c88,0x1e6));var _0x85c8=function(_0xaa4b4c,_0x4827f2){_0xaa4b4c=_0xaa4b4c-0x0;var _0x44ba74=_0x5c88[_0xaa4b4c];return _0x44ba74;};'use strict';var _=require(_0x85c8('0x0'));var moment=require(_0x85c8('0x1'));var Redis=require(_0x85c8('0x2'));var util=require(_0x85c8('0x3'));var config=require(_0x85c8('0x4'));var db=require(_0x85c8('0x5'))['db'];var logger=require('../logger')(_0x85c8('0x6'));config[_0x85c8('0x7')]=_[_0x85c8('0x8')](config[_0x85c8('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x85c8('0x7')]));function closeInteractions(){var _0x4bd650=[];return db[_0x85c8('0x9')][_0x85c8('0xa')]({'raw':!![],'attributes':['id',_0x85c8('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x85c8('0xc')](0x18,_0x85c8('0xd'))}}})[_0x85c8('0xe')](function(_0x1324cb){if(_0x1324cb&&_0x1324cb['length']){_0x4bd650=_[_0x85c8('0xf')](_0x1324cb||[],'id');logger[_0x85c8('0x10')](_0x85c8('0x11'),_0x4bd650[_0x85c8('0x12')]());return db[_0x85c8('0x9')][_0x85c8('0x13')]({'closeReason':'system','disposition':_0x85c8('0x14'),'closed':!![],'closedAt':moment()[_0x85c8('0x15')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x4bd650}});}})[_0x85c8('0xe')](function(){if(_0x4bd650&&_0x4bd650[_0x85c8('0x16')]){logger[_0x85c8('0x10')](_0x85c8('0x17'),_0x4bd650[_0x85c8('0x12')]());for(var _0x3569ee=0x0;_0x3569ee<_0x4bd650['length'];_0x3569ee++){io[_0x85c8('0x18')](_0x85c8('0x19'),{'id':_0x4bd650[_0x3569ee],'closed':!![]});}}})[_0x85c8('0x1a')](function(_0x3b83ce){logger[_0x85c8('0x1b')](_0x85c8('0x1c'),_0x3b83ce?util[_0x85c8('0x1d')](_0x3b83ce,{'showHidden':![],'depth':null}):'');});}exports[_0x85c8('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x8cf3=['../../config/environment','../../mysqldb','../logger','redis','defaults','localhost','socket.io-emitter','findAll','lastMsgAt','then','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','WhatsappInteraction','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','whatsappInteraction:update','catch','inspect','start','lodash','moment','ioredis','util'];(function(_0x5732ec,_0x55300e){var _0x353c4e=function(_0x5c8d0c){while(--_0x5c8d0c){_0x5732ec['push'](_0x5732ec['shift']());}};_0x353c4e(++_0x55300e);}(_0x8cf3,0x10a));var _0x38cf=function(_0x5e9297,_0x5b9f31){_0x5e9297=_0x5e9297-0x0;var _0x2903ba=_0x8cf3[_0x5e9297];return _0x2903ba;};'use strict';var _=require(_0x38cf('0x0'));var moment=require(_0x38cf('0x1'));var Redis=require(_0x38cf('0x2'));var util=require(_0x38cf('0x3'));var config=require(_0x38cf('0x4'));var db=require(_0x38cf('0x5'))['db'];var logger=require(_0x38cf('0x6'))('schedule');config[_0x38cf('0x7')]=_[_0x38cf('0x8')](config[_0x38cf('0x7')],{'host':_0x38cf('0x9'),'port':0x18eb});var io=require(_0x38cf('0xa'))(new Redis(config['redis']));function closeInteractions(){var _0x7f6021=[];return db['WhatsappInteraction'][_0x38cf('0xb')]({'raw':!![],'attributes':['id',_0x38cf('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,'hours')}}})[_0x38cf('0xd')](function(_0x4f06f0){if(_0x4f06f0&&_0x4f06f0['length']){_0x7f6021=_[_0x38cf('0xe')](_0x4f06f0||[],'id');logger[_0x38cf('0xf')](_0x38cf('0x10'),_0x7f6021[_0x38cf('0x11')]());return db[_0x38cf('0x12')][_0x38cf('0x13')]({'closeReason':_0x38cf('0x14'),'disposition':_0x38cf('0x15'),'closed':!![],'closedAt':moment()[_0x38cf('0x16')](_0x38cf('0x17'))},{'where':{'id':_0x7f6021}});}})[_0x38cf('0xd')](function(){if(_0x7f6021&&_0x7f6021[_0x38cf('0x18')]){logger[_0x38cf('0xf')](_0x38cf('0x19'),_0x7f6021['join']());for(var _0xd00345=0x0;_0xd00345<_0x7f6021[_0x38cf('0x18')];_0xd00345++){io['emit'](_0x38cf('0x1a'),{'id':_0x7f6021[_0xd00345],'closed':!![]});}}})[_0x38cf('0x1b')](function(_0x15f60d){logger['error']('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x15f60d?util[_0x38cf('0x1c')](_0x15f60d,{'showHidden':![],'depth':null}):'');});}exports[_0x38cf('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 031f864..a0d4187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22f7=['Biondo','innocenzo.biondo','@xcally.com','now','Innocenzo','push','CmContact','destroy','then','bulkCreate','log','finished\x20populating','contacts1','CmHopper','hopper1','hopper2','util'];(function(_0x5d0e5c,_0x1eb95f){var _0x2c4bd4=function(_0x5528dd){while(--_0x5528dd){_0x5d0e5c['push'](_0x5d0e5c['shift']());}};_0x2c4bd4(++_0x1eb95f);}(_0x22f7,0xfe));var _0x722f=function(_0x423ca9,_0x3849f3){_0x423ca9=_0x423ca9-0x0;var _0x433867=_0x22f7[_0x423ca9];return _0x433867;};'use strict';var util=require(_0x722f('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts['push']({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x722f('0x1')+i,'phone':0xf879fb460+i,'email':_0x722f('0x2')+i+_0x722f('0x3')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x722f('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x722f('0x4')](),'updatedAt':Date[_0x722f('0x4')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0x722f('0x5')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x722f('0x2')+i+_0x722f('0x3')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x722f('0x6')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x722f('0x4')](),'updatedAt':Date[_0x722f('0x4')]()});}db[_0x722f('0x7')][_0x722f('0x8')]({'where':{}})[_0x722f('0x9')](function(){return db[_0x722f('0x7')][_0x722f('0xa')](contacts);})[_0x722f('0x9')](function(){console[_0x722f('0xb')](_0x722f('0xc'),_0x722f('0xd'));return db[_0x722f('0xe')]['destroy']({'where':{}});})[_0x722f('0x9')](function(){return db[_0x722f('0xe')]['bulkCreate'](hopper);})['then'](function(){console['log'](_0x722f('0xc'),_0x722f('0xf'));return db['CmContact'][_0x722f('0xa')](contacts2);})[_0x722f('0x9')](function(){console[_0x722f('0xb')](_0x722f('0xc'),'contacts2');return db[_0x722f('0xe')][_0x722f('0xa')](hopper2);})['then'](function(){console[_0x722f('0xb')](_0x722f('0xc'),_0x722f('0x10'));})['catch'](function(_0x2788b7){console['log'](_0x2788b7);});
\ No newline at end of file
+var _0x4eaf=['CmContact','bulkCreate','contacts1','CmHopper','log','contacts2','finished\x20populating','hopper2','catch','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','destroy','then'];(function(_0x12325d,_0x21aab3){var _0x31a869=function(_0x2edaae){while(--_0x2edaae){_0x12325d['push'](_0x12325d['shift']());}};_0x31a869(++_0x21aab3);}(_0x4eaf,0x1be));var _0xf4ea=function(_0x2d9d27,_0x13f443){_0x2d9d27=_0x2d9d27-0x0;var _0x25a317=_0x4eaf[_0x2d9d27];return _0x25a317;};'use strict';var util=require(_0xf4ea('0x0'));var db=require(_0xf4ea('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xf4ea('0x2')]({'id':i,'firstName':_0xf4ea('0x3')+i,'lastName':_0xf4ea('0x4')+i,'phone':0xf879fb460+i,'email':_0xf4ea('0x5')+i+_0xf4ea('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0xf4ea('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0xf4ea('0x3')+i,'lastName':_0xf4ea('0x4')+i,'phone':0xf879fb460+i,'email':_0xf4ea('0x5')+i+_0xf4ea('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xf4ea('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xf4ea('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0xf4ea('0x7')]()});}db['CmContact'][_0xf4ea('0x8')]({'where':{}})[_0xf4ea('0x9')](function(){return db[_0xf4ea('0xa')][_0xf4ea('0xb')](contacts);})[_0xf4ea('0x9')](function(){console['log']('finished\x20populating',_0xf4ea('0xc'));return db[_0xf4ea('0xd')][_0xf4ea('0x8')]({'where':{}});})[_0xf4ea('0x9')](function(){return db[_0xf4ea('0xd')][_0xf4ea('0xb')](hopper);})[_0xf4ea('0x9')](function(){console[_0xf4ea('0xe')]('finished\x20populating','hopper1');return db[_0xf4ea('0xa')][_0xf4ea('0xb')](contacts2);})[_0xf4ea('0x9')](function(){console[_0xf4ea('0xe')]('finished\x20populating',_0xf4ea('0xf'));return db[_0xf4ea('0xd')][_0xf4ea('0xb')](hopper2);})['then'](function(){console['log'](_0xf4ea('0x10'),_0xf4ea('0x11'));})[_0xf4ea('0x12')](function(_0x42ca07){console[_0xf4ea('0xe')](_0x42ca07);});
\ No newline at end of file
index 82428ad..f34c641 100644 (file)
@@ -9,7 +9,10 @@ var DBPromise = require('bluebird');
 var applications = {
   '600': [{
     app: 'Set',
-    appdata: 'CDR(type)=internal',
+    appdata: 'CDR(type)=internal'
+  }, {
+    app: 'NoOp',
+    appdata: 'No alias set'
   }, {
     app: 'Answer'
   }, {
@@ -30,6 +33,9 @@ var applications = {
     app: 'Set',
     appdata: 'CDR(type)=internal'
   }, {
+    app: 'NoOp',
+    appdata: 'No alias set'
+  }, {
     app: 'Answer'
   }, {
     app: 'Queue',
@@ -43,6 +49,9 @@ var applications = {
     app: 'Set',
     appdata: 'CDR(type)=internal'
   }, {
+    app: 'NoOp',
+    appdata: 'No alias set'
+  }, {
     app: 'Answer'
   }, {
     app: 'Queue',
@@ -56,6 +65,9 @@ var applications = {
     app: 'Set',
     appdata: 'CDR(type)=internal'
   }, {
+    app: 'NoOp',
+    appdata: 'No alias set'
+  }, {
     app: 'AGI',
     appdata: 'agi://127.0.0.1/square,AutoAttendant',
     appType: 'agi',
@@ -67,6 +79,9 @@ var applications = {
     app: 'Set',
     appdata: 'CDR(type)=internal'
   }, {
+    app: 'NoOp',
+    appdata: 'No alias set'
+  }, {
     app: 'AGI',
     appdata: 'agi://127.0.0.1/square,Orders',
     appType: 'agi',
@@ -78,6 +93,9 @@ var applications = {
     app: 'Set',
     appdata: 'CDR(type)=internal'
   }, {
+    app: 'NoOp',
+    appdata: 'No alias set'
+  }, {
     app: 'AGI',
     appdata: 'agi://127.0.0.1/square,CSI',
     appType: 'agi',
@@ -89,6 +107,9 @@ var applications = {
     app: 'Set',
     appdata: 'CDR(type)=internal'
   }, {
+    app: 'NoOp',
+    appdata: 'No alias set'
+  }, {
     app: 'AGI',
     appdata: 'agi://127.0.0.1/square,Survey',
     appType: 'agi',
@@ -100,6 +121,9 @@ var applications = {
     app: 'Set',
     appdata: 'CDR(type)=internal'
   }, {
+    app: 'NoOp',
+    appdata: 'No alias set'
+  }, {
     app: 'AGI',
     appdata: 'agi://127.0.0.1/square,AgentManagement',
     appType: 'agi',
@@ -199,6 +223,9 @@ var applications = {
     app: 'Set',
     appdata: 'CDR(type)=outbound'
   }, {
+    app: 'NoOp',
+    appdata: 'No alias set'
+  }, {
     app: 'Set',
     appdata: 'XCALLY-MOTION-ANSWER=0'
   }, {
@@ -228,6 +255,9 @@ var applications = {
     app: 'Set',
     appdata: 'CDR(type)=inbound'
   }, {
+    app: 'NoOp',
+    appdata: 'No alias set'
+  }, {
     app: 'Answer'
   }, {
     app: 'Playback',
index 7523b31..68054f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['%s%s','yes','/etc/pki/tls/certs/motion.crt','actpass','User','then','log','add\x20user','util','../mysqldb','push','format','agent','%s%s@xcally.com','password','wss','all','ulaw'];(function(_0x2349b4,_0x8739a1){var _0x17f76b=function(_0x5cc362){while(--_0x5cc362){_0x2349b4['push'](_0x2349b4['shift']());}};_0x17f76b(++_0x8739a1);}(_0xba34,0x1a6));var _0x4ba3=function(_0x434032,_0x50efbf){_0x434032=_0x434032-0x0;var _0x40c00f=_0xba34[_0x434032];return _0x40c00f;};'use strict';var util=require(_0x4ba3('0x0'));var db=require(_0x4ba3('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x4ba3('0x2')]({'name':util[_0x4ba3('0x3')]('%s%s',_0x4ba3('0x4'),i),'fullname':util[_0x4ba3('0x3')]('%s%s',_0x4ba3('0x4'),i),'email':util['format'](_0x4ba3('0x5'),_0x4ba3('0x4'),i),'role':_0x4ba3('0x4'),'password':_0x4ba3('0x6'),'internal':0xfa0+i,'type':'friend','transport':['udp','ws',_0x4ba3('0x7')],'disallow':[_0x4ba3('0x8')],'allow':[_0x4ba3('0x9')],'defaultuser':util[_0x4ba3('0x3')](_0x4ba3('0xa'),_0x4ba3('0x4'),i),'encryption':_0x4ba3('0xb'),'avpf':_0x4ba3('0xb'),'force_avp':_0x4ba3('0xb'),'icesupport':_0x4ba3('0xb'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0x4ba3('0xc'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x4ba3('0xd'),'callerid':util[_0x4ba3('0x3')]('\x22%s\x22\x20<%s>',util[_0x4ba3('0x3')](_0x4ba3('0xa'),_0x4ba3('0x4'),i),0xfa0+i)});}db[_0x4ba3('0xe')]['bulkCreate'](users)[_0x4ba3('0xf')](function(){console[_0x4ba3('0x10')](_0x4ba3('0x11'));})['catch'](function(_0x3b414e){console[_0x4ba3('0x10')](_0x3b414e);});
\ No newline at end of file
+var _0x2fa9=['util','../mysqldb','push','format','%s%s','agent','%s%s@xcally.com','wss','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','User','bulkCreate','then','log','add\x20user','catch'];(function(_0x25d1ea,_0x1ffff6){var _0x5330b7=function(_0x4fc7d3){while(--_0x4fc7d3){_0x25d1ea['push'](_0x25d1ea['shift']());}};_0x5330b7(++_0x1ffff6);}(_0x2fa9,0x72));var _0x92fa=function(_0xcf526,_0x242537){_0xcf526=_0xcf526-0x0;var _0x44b7ee=_0x2fa9[_0xcf526];return _0x44b7ee;};'use strict';var util=require(_0x92fa('0x0'));var db=require(_0x92fa('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x92fa('0x2')]({'name':util[_0x92fa('0x3')](_0x92fa('0x4'),_0x92fa('0x5'),i),'fullname':util[_0x92fa('0x3')](_0x92fa('0x4'),_0x92fa('0x5'),i),'email':util['format'](_0x92fa('0x6'),_0x92fa('0x5'),i),'role':_0x92fa('0x5'),'password':'password','internal':0xfa0+i,'type':'friend','transport':['udp','ws',_0x92fa('0x7')],'disallow':[_0x92fa('0x8')],'allow':[_0x92fa('0x9')],'defaultuser':util[_0x92fa('0x3')](_0x92fa('0x4'),_0x92fa('0x5'),i),'encryption':_0x92fa('0xa'),'avpf':_0x92fa('0xa'),'force_avp':'yes','icesupport':_0x92fa('0xa'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0x92fa('0xb'),'dtlsprivatekey':_0x92fa('0xc'),'dtlssetup':'actpass','callerid':util['format']('\x22%s\x22\x20<%s>',util[_0x92fa('0x3')](_0x92fa('0x4'),'agent',i),0xfa0+i)});}db[_0x92fa('0xd')][_0x92fa('0xe')](users)[_0x92fa('0xf')](function(){console[_0x92fa('0x10')](_0x92fa('0x11'));})[_0x92fa('0x12')](function(_0x23e984){console['log'](_0x23e984);});
\ No newline at end of file
index 5a96c27..035b9df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09df=['ivr','UserProfileSection','then','VoiceQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','where','telephone','Campaign','format','%s:queue:%s','user:%s','query','find','userProfileId','handshake','ChatInteraction','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','include','push','MailQueue','WhatsappQueue','User','VoiceQueue','ChatQueues','ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','getVoiceQueues','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues','all','length','voice','fax','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','map','emit','user_has_chat_interactions:remove','removeFaxInteractions','SmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','setMaxListeners','address','request','connection','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','util','../mysqldb','Agents','role','agent','name','type'];(function(_0x577d26,_0xb9b851){var _0x270d6d=function(_0x55aeed){while(--_0x55aeed){_0x577d26['push'](_0x577d26['shift']());}};_0x270d6d(++_0xb9b851);}(_0x09df,0x164));var _0xf09d=function(_0x450689,_0x3b857c){_0x450689=_0x450689-0x0;var _0x46ffb0=_0x09df[_0x450689];return _0x46ffb0;};'use strict';var _=require(_0xf09d('0x0'));var util=require(_0xf09d('0x1'));var BPromise=require('bluebird');var db=require(_0xf09d('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':_0xf09d('0x3'),'model':db['User'],'attributes':['id','name',_0xf09d('0x4')],'raw':!![],'where':{'role':_0xf09d('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0xf09d('0x6')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xf09d('0x6'),_0xf09d('0x7')],'where':{'type':_0xf09d('0x8')}};function getAssociatedResources(_0x46527b,_0x39cf1d,_0x2a59a8){return db[_0xf09d('0x9')]['findOne']({'where':{'name':_0x46527b,'userProfileId':_0x39cf1d},'raw':!![]})[_0xf09d('0xa')](function(_0x227a55){if(_0x227a55){if(_0x227a55['autoAssociation']){switch(_0x46527b){case _0xf09d('0xb'):case'ChatQueues':case _0xf09d('0xc'):case _0xf09d('0xd'):case _0xf09d('0xe'):case _0xf09d('0xf'):case _0xf09d('0x10'):return db[_0x2a59a8][_0xf09d('0x11')](queryQueues);case _0xf09d('0x12'):return db[_0x2a59a8][_0xf09d('0x11')](queryTelephones);case _0xf09d('0x13'):return db[_0x2a59a8]['findAll'](queryTrunks);case _0xf09d('0x14'):return db[_0x2a59a8][_0xf09d('0x11')](queryCampaigns);}}else{return db[_0xf09d('0x15')]['findAll']({'attributes':['resourceId'],'where':{'sectionId':_0x227a55['id']},'raw':!![]})[_0xf09d('0xa')](function(_0x3a8652){if(_0x3a8652){var _0x2f06b9={'where':{'id':_['map'](_0x3a8652,_0xf09d('0x16'))},'raw':!![]};switch(_0x2a59a8){case'User':_0x2f06b9[_0xf09d('0x17')][_0xf09d('0x4')]=_0xf09d('0x18');break;case _0xf09d('0x19'):_0x2f06b9['where'][_0xf09d('0x7')]=_0xf09d('0x8');break;}return db[_0x2a59a8][_0xf09d('0x11')](_0x2f06b9);}else{return[];}});}}else{return[];}})[_0xf09d('0xa')](function(_0x166284){return _0x166284;});}function joinOrLeaveQueues(_0x2b486f,_0x4f336c,_0x2f341d,_0x5478ba){_0x2b486f[_0x4f336c](util[_0xf09d('0x1a')](_0xf09d('0x1b'),_0x2f341d,_0x5478ba[_0xf09d('0x6')]));if(_0x5478ba[_0xf09d('0x3')]){for(var _0x11eadd=0x0;_0x11eadd<_0x5478ba[_0xf09d('0x3')]['length'];_0x11eadd+=0x1){_0x2b486f[_0x4f336c](util[_0xf09d('0x1a')](_0xf09d('0x1c'),_0x5478ba[_0xf09d('0x3')][_0x11eadd][_0xf09d('0x6')]));}}}function joinOrLeave(_0x12af9f,_0x3e6d44,_0x15e861){var _0x1affe3;if(_0x12af9f['handshake'][_0xf09d('0x1d')]['id']){db['User'][_0xf09d('0x1e')]({'attributes':['id','name',_0xf09d('0x4'),_0xf09d('0x1f')],'where':{'id':_0x12af9f[_0xf09d('0x20')][_0xf09d('0x1d')]['id']},'include':[{'model':db[_0xf09d('0x21')],'as':_0xf09d('0x22'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xf09d('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xf09d('0x24')],'as':_0xf09d('0x25'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0xf09d('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xf09d('0x27')],'as':_0xf09d('0x28'),'attributes':['id'],'raw':!![]}]})[_0xf09d('0xa')](function(_0x45e073){if(_0x45e073){_0x1affe3=_0x45e073;_0x12af9f[_0x3e6d44](util[_0xf09d('0x1a')](_0xf09d('0x1c'),_0x45e073['name']));var _0x3d3475=[];switch(_0x45e073['role']){case'admin':_0x12af9f[_0x3e6d44](_0xf09d('0x29'));_0x12af9f[_0x3e6d44](_0xf09d('0x2a'));if(queryQueues['hasOwnProperty'](_0xf09d('0x2b'))){delete queryQueues[_0xf09d('0x2b')];}_0x3d3475[_0xf09d('0x2c')](db['VoiceQueue'][_0xf09d('0x11')](queryQueues));_0x3d3475[_0xf09d('0x2c')](db['ChatQueue'][_0xf09d('0x11')](queryQueues));_0x3d3475[_0xf09d('0x2c')](db['FaxQueue']['findAll'](queryQueues));_0x3d3475[_0xf09d('0x2c')](db['SmsQueue']['findAll'](queryQueues));_0x3d3475[_0xf09d('0x2c')](db[_0xf09d('0x2d')]['findAll'](queryQueues));_0x3d3475[_0xf09d('0x2c')](db['OpenchannelQueue']['findAll'](queryQueues));_0x3d3475['push'](db[_0xf09d('0x2e')][_0xf09d('0x11')](queryQueues));_0x3d3475['push'](db[_0xf09d('0x2f')][_0xf09d('0x11')](queryTelephones));_0x3d3475[_0xf09d('0x2c')](db['Trunk']['findAll'](queryTrunks));_0x3d3475[_0xf09d('0x2c')](db[_0xf09d('0x19')][_0xf09d('0x11')](queryCampaigns));_0x3d3475[_0xf09d('0x2c')](db[_0xf09d('0x2f')]['findAll'](queryAgents));break;case'user':_0x12af9f[_0x3e6d44](_0xf09d('0x29'));_0x12af9f[_0x3e6d44](_0xf09d('0x2a'));_0x3d3475[_0xf09d('0x2c')](getAssociatedResources(_0xf09d('0xb'),_0x45e073[_0xf09d('0x1f')],_0xf09d('0x30')));_0x3d3475[_0xf09d('0x2c')](getAssociatedResources(_0xf09d('0x31'),_0x45e073[_0xf09d('0x1f')],_0xf09d('0x32')));_0x3d3475[_0xf09d('0x2c')](getAssociatedResources(_0xf09d('0xc'),_0x45e073['userProfileId'],_0xf09d('0x33')));_0x3d3475['push'](getAssociatedResources(_0xf09d('0xd'),_0x45e073['userProfileId'],_0xf09d('0x34')));_0x3d3475[_0xf09d('0x2c')](getAssociatedResources(_0xf09d('0xe'),_0x45e073[_0xf09d('0x1f')],_0xf09d('0x2d')));_0x3d3475[_0xf09d('0x2c')](getAssociatedResources(_0xf09d('0xf'),_0x45e073[_0xf09d('0x1f')],_0xf09d('0x35')));_0x3d3475[_0xf09d('0x2c')](getAssociatedResources(_0xf09d('0x10'),_0x45e073[_0xf09d('0x1f')],_0xf09d('0x2e')));_0x3d3475[_0xf09d('0x2c')](getAssociatedResources(_0xf09d('0x12'),_0x45e073[_0xf09d('0x1f')],_0xf09d('0x2f')));_0x3d3475[_0xf09d('0x2c')](getAssociatedResources(_0xf09d('0x13'),_0x45e073[_0xf09d('0x1f')],'Trunk'));_0x3d3475[_0xf09d('0x2c')](getAssociatedResources(_0xf09d('0x14'),_0x45e073[_0xf09d('0x1f')],_0xf09d('0x19')));_0x3d3475[_0xf09d('0x2c')](db[_0xf09d('0x2f')][_0xf09d('0x11')](queryAgents));break;case'agent':_0x12af9f[_0x3e6d44]('voice:inbound');_0x12af9f[_0x3e6d44]('voice:outbound');_0x3d3475[_0xf09d('0x2c')](_0x45e073[_0xf09d('0x36')]({'attributes':['id',_0xf09d('0x6')]}));_0x3d3475[_0xf09d('0x2c')](_0x45e073['getChatQueues']({'attributes':['id','name']}));_0x3d3475[_0xf09d('0x2c')](_0x45e073[_0xf09d('0x37')]({'attributes':['id','name']}));_0x3d3475[_0xf09d('0x2c')](_0x45e073[_0xf09d('0x38')]({'attributes':['id',_0xf09d('0x6')]}));_0x3d3475[_0xf09d('0x2c')](_0x45e073[_0xf09d('0x39')]({'attributes':['id',_0xf09d('0x6')]}));_0x3d3475['push'](_0x45e073['getOpenchannelQueues']({'attributes':['id','name']}));_0x3d3475['push'](_0x45e073[_0xf09d('0x3a')]({'attributes':['id',_0xf09d('0x6')]}));break;}return BPromise[_0xf09d('0x3b')](_0x3d3475);}})['then'](function(_0x4a1333){if(_0x4a1333&&_0x4a1333[_0xf09d('0x3c')]){for(var _0x2edfe6=0x0;_0x2edfe6<_0x4a1333[_0xf09d('0x3c')];_0x2edfe6+=0x1){for(var _0x2a2602=0x0;_0x2a2602<_0x4a1333[_0x2edfe6][_0xf09d('0x3c')];_0x2a2602+=0x1){switch(_0x2edfe6){case 0x0:joinOrLeaveQueues(_0x12af9f,_0x3e6d44,_0xf09d('0x3d'),_0x4a1333[_0x2edfe6][_0x2a2602]);break;case 0x1:joinOrLeaveQueues(_0x12af9f,_0x3e6d44,'chat',_0x4a1333[_0x2edfe6][_0x2a2602]);break;case 0x2:joinOrLeaveQueues(_0x12af9f,_0x3e6d44,_0xf09d('0x3e'),_0x4a1333[_0x2edfe6][_0x2a2602]);break;case 0x3:joinOrLeaveQueues(_0x12af9f,_0x3e6d44,'sms',_0x4a1333[_0x2edfe6][_0x2a2602]);break;case 0x4:joinOrLeaveQueues(_0x12af9f,_0x3e6d44,'mail',_0x4a1333[_0x2edfe6][_0x2a2602]);break;case 0x5:joinOrLeaveQueues(_0x12af9f,_0x3e6d44,_0xf09d('0x3f'),_0x4a1333[_0x2edfe6][_0x2a2602]);break;case 0x6:joinOrLeaveQueues(_0x12af9f,_0x3e6d44,_0xf09d('0x40'),_0x4a1333[_0x2edfe6][_0x2a2602]);break;case 0x7:if(_0x1affe3[_0xf09d('0x4')]!=='agent')_0x12af9f[_0x3e6d44](util['format'](_0xf09d('0x41'),_0x4a1333[_0x2edfe6][_0x2a2602][_0xf09d('0x6')]));break;case 0x8:if(_0x1affe3[_0xf09d('0x4')]!==_0xf09d('0x5'))_0x12af9f[_0x3e6d44](util['format'](_0xf09d('0x42'),_0x4a1333[_0x2edfe6][_0x2a2602][_0xf09d('0x6')]));break;case 0x9:if(_0x1affe3[_0xf09d('0x4')]!==_0xf09d('0x5'))_0x12af9f[_0x3e6d44](util[_0xf09d('0x1a')](_0xf09d('0x43'),_0x4a1333[_0x2edfe6][_0x2a2602][_0xf09d('0x7')],_0x4a1333[_0x2edfe6][_0x2a2602][_0xf09d('0x6')]));break;case 0xa:_0x12af9f[_0x3e6d44](util[_0xf09d('0x1a')]('user:%s',_0x4a1333[_0x2edfe6][_0x2a2602][_0xf09d('0x6')]));break;}}}}})[_0xf09d('0xa')](function(){if(_0x3e6d44===_0xf09d('0x44')){var _0x334943=_[_0xf09d('0x45')](_0x1affe3['ChatInteractions'],'id');return _0x1affe3['removeChatInteractions'](_0x334943)[_0xf09d('0xa')](function(){for(var _0x5b2b58=0x0;_0x5b2b58<_0x334943[_0xf09d('0x3c')];_0x5b2b58+=0x1){_0x15e861[_0xf09d('0x46')](_0xf09d('0x47'),{'ChatInteractionId':Number(_0x334943[_0x5b2b58]),'UserId':Number(_0x1affe3['id'])});}});}})[_0xf09d('0xa')](function(){if(_0x3e6d44===_0xf09d('0x44')){var _0x15f72f=_[_0xf09d('0x45')](_0x1affe3['MailInteractions'],'id');return _0x1affe3['removeMailInteractions'](_0x15f72f)[_0xf09d('0xa')](function(){for(var _0x18c94a=0x0;_0x18c94a<_0x15f72f['length'];_0x18c94a+=0x1){_0x15e861[_0xf09d('0x46')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x15f72f[_0x18c94a]),'UserId':Number(_0x1affe3['id'])});}});}})['then'](function(){if(_0x3e6d44===_0xf09d('0x44')){var _0x3d7eb5=_[_0xf09d('0x45')](_0x1affe3['FaxInteractions'],'id');return _0x1affe3[_0xf09d('0x48')](_0x3d7eb5)[_0xf09d('0xa')](function(){for(var _0x5ba3ed=0x0;_0x5ba3ed<_0x3d7eb5[_0xf09d('0x3c')];_0x5ba3ed+=0x1){_0x15e861[_0xf09d('0x46')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x3d7eb5[_0x5ba3ed]),'UserId':Number(_0x1affe3['id'])});}});}})['then'](function(){if(_0x3e6d44===_0xf09d('0x44')){var _0x369255=_[_0xf09d('0x45')](_0x1affe3[_0xf09d('0x49')],'id');return _0x1affe3['removeSmsInteractions'](_0x369255)[_0xf09d('0xa')](function(){for(var _0x59117c=0x0;_0x59117c<_0x369255['length'];_0x59117c+=0x1){_0x15e861[_0xf09d('0x46')](_0xf09d('0x4a'),{'SmsInteractionId':Number(_0x369255[_0x59117c]),'UserId':Number(_0x1affe3['id'])});}});}})[_0xf09d('0xa')](function(){if(_0x3e6d44===_0xf09d('0x44')){var _0x18f3a1=_[_0xf09d('0x45')](_0x1affe3[_0xf09d('0x26')],'id');return _0x1affe3[_0xf09d('0x4b')](_0x18f3a1)[_0xf09d('0xa')](function(){for(var _0x402458=0x0;_0x402458<_0x18f3a1[_0xf09d('0x3c')];_0x402458+=0x1){_0x15e861[_0xf09d('0x46')](_0xf09d('0x4c'),{'OpenchannelInteractionId':Number(_0x18f3a1[_0x402458]),'UserId':Number(_0x1affe3['id'])});}});}})[_0xf09d('0xa')](function(){if(_0x3e6d44===_0xf09d('0x44')){var _0x4891ae=_['map'](_0x1affe3['WhatsappInteractions'],'id');return _0x1affe3[_0xf09d('0x4d')](_0x4891ae)[_0xf09d('0xa')](function(){for(var _0xddbd43=0x0;_0xddbd43<_0x4891ae['length'];_0xddbd43+=0x1){_0x15e861[_0xf09d('0x46')](_0xf09d('0x4e'),{'WhatsappInteractionId':Number(_0x4891ae[_0xddbd43]),'UserId':Number(_0x1affe3['id'])});}});}})['catch'](function(_0x54a912){_0x12af9f[_0xf09d('0x4f')](_0x54a912);});}}function onDisconnect(_0x2c6852,_0x25073c){joinOrLeave(_0x2c6852,'leave',_0x25073c);}function onConnect(_0x257fa8){joinOrLeave(_0x257fa8,_0xf09d('0x50'));}exports['default']=function(_0x27d27a){_0x27d27a['on']('connection',function(_0x1de17d){_0x1de17d[_0xf09d('0x51')](0x0);_0x1de17d[_0xf09d('0x52')]=_0x1de17d[_0xf09d('0x53')][_0xf09d('0x54')]['remoteAddress']+':'+_0x1de17d[_0xf09d('0x53')]['connection'][_0xf09d('0x55')];_0x1de17d[_0xf09d('0x56')]=new Date();_0x1de17d[_0xf09d('0x4f')]=function(_0x5c801a){console[_0xf09d('0x4f')](_0xf09d('0x57')+_0x1de17d[_0xf09d('0x58')][_0xf09d('0x6')]+'['+_0x1de17d[_0xf09d('0x52')]+']',_0x5c801a);};_0x1de17d['on'](_0xf09d('0x59'),function(){onDisconnect(_0x1de17d,_0x27d27a);_0x1de17d[_0xf09d('0x4f')](_0xf09d('0x5a'));});onConnect(_0x1de17d);_0x1de17d[_0xf09d('0x4f')]('CONNECTED');});};
\ No newline at end of file
+var _0xbd89=['SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:inbound','voice:outbound','ChatQueues','SmsQueue','MailQueues','WhatsappQueues','getVoiceQueues','getFaxQueues','getMailQueues','getWhatsappQueues','all','length','chat','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','removeChatInteractions','emit','leave','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','connection','address','remoteAddress','request','remotePort','connectedAt','log','SocketIO\x20','disconnect','DISCONNECTED','CONNECTED','../mysqldb','name','Agents','User','role','telephone','agent','type','ivr','findOne','then','VoiceQueues','FaxQueues','SmsQueues','OpenchannelQueues','findAll','Telephones','IvrCampaigns','UserProfileResource','resourceId','map','Campaign','where','format','%s:queue:%s','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions'];(function(_0x113705,_0x593e98){var _0x3c400d=function(_0x233248){while(--_0x233248){_0x113705['push'](_0x113705['shift']());}};_0x3c400d(++_0x593e98);}(_0xbd89,0x9e));var _0x9bd8=function(_0x30e176,_0x2ad448){_0x30e176=_0x30e176-0x0;var _0x56f9d1=_0xbd89[_0x30e176];return _0x56f9d1;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require('bluebird');var db=require(_0x9bd8('0x0'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x9bd8('0x1')],'include':[{'as':_0x9bd8('0x2'),'model':db[_0x9bd8('0x3')],'attributes':['id',_0x9bd8('0x1'),_0x9bd8('0x4')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x9bd8('0x1')],'where':{'role':_0x9bd8('0x5')}};var queryTrunks={'raw':!![],'attributes':['id',_0x9bd8('0x1')]};var queryAgents={'raw':!![],'attributes':['id',_0x9bd8('0x1')],'where':{'role':_0x9bd8('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x9bd8('0x1'),_0x9bd8('0x7')],'where':{'type':_0x9bd8('0x8')}};function getAssociatedResources(_0x13c974,_0x13d19f,_0x531a57){return db['UserProfileSection'][_0x9bd8('0x9')]({'where':{'name':_0x13c974,'userProfileId':_0x13d19f},'raw':!![]})[_0x9bd8('0xa')](function(_0x270598){if(_0x270598){if(_0x270598['autoAssociation']){switch(_0x13c974){case _0x9bd8('0xb'):case'ChatQueues':case _0x9bd8('0xc'):case _0x9bd8('0xd'):case'MailQueues':case _0x9bd8('0xe'):case'WhatsappQueues':return db[_0x531a57][_0x9bd8('0xf')](queryQueues);case _0x9bd8('0x10'):return db[_0x531a57][_0x9bd8('0xf')](queryTelephones);case'Trunks':return db[_0x531a57][_0x9bd8('0xf')](queryTrunks);case _0x9bd8('0x11'):return db[_0x531a57][_0x9bd8('0xf')](queryCampaigns);}}else{return db[_0x9bd8('0x12')][_0x9bd8('0xf')]({'attributes':[_0x9bd8('0x13')],'where':{'sectionId':_0x270598['id']},'raw':!![]})['then'](function(_0x14d7aa){if(_0x14d7aa){var _0x19d291={'where':{'id':_[_0x9bd8('0x14')](_0x14d7aa,_0x9bd8('0x13'))},'raw':!![]};switch(_0x531a57){case'User':_0x19d291['where']['role']=_0x9bd8('0x5');break;case _0x9bd8('0x15'):_0x19d291[_0x9bd8('0x16')]['type']=_0x9bd8('0x8');break;}return db[_0x531a57][_0x9bd8('0xf')](_0x19d291);}else{return[];}});}}else{return[];}})[_0x9bd8('0xa')](function(_0x24f2be){return _0x24f2be;});}function joinOrLeaveQueues(_0x50b1cb,_0x5dd147,_0x55a81f,_0x1fafbb){_0x50b1cb[_0x5dd147](util[_0x9bd8('0x17')](_0x9bd8('0x18'),_0x55a81f,_0x1fafbb[_0x9bd8('0x1')]));if(_0x1fafbb[_0x9bd8('0x2')]){for(var _0x56036c=0x0;_0x56036c<_0x1fafbb[_0x9bd8('0x2')]['length'];_0x56036c+=0x1){_0x50b1cb[_0x5dd147](util[_0x9bd8('0x17')](_0x9bd8('0x19'),_0x1fafbb['Agents'][_0x56036c][_0x9bd8('0x1')]));}}}function joinOrLeave(_0x534260,_0x5c0b12,_0x51397d){var _0x150ec2;if(_0x534260[_0x9bd8('0x1a')][_0x9bd8('0x1b')]['id']){db['User'][_0x9bd8('0x1c')]({'attributes':['id','name','role',_0x9bd8('0x1d')],'where':{'id':_0x534260['handshake'][_0x9bd8('0x1b')]['id']},'include':[{'model':db[_0x9bd8('0x1e')],'as':_0x9bd8('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0x9bd8('0x20')],'as':_0x9bd8('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x9bd8('0x22')],'as':_0x9bd8('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x9bd8('0x24')],'as':_0x9bd8('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x9bd8('0x26')],'as':_0x9bd8('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x9bd8('0x28')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})['then'](function(_0x5ba530){if(_0x5ba530){_0x150ec2=_0x5ba530;_0x534260[_0x5c0b12](util[_0x9bd8('0x17')](_0x9bd8('0x19'),_0x5ba530[_0x9bd8('0x1')]));var _0x18fba7=[];switch(_0x5ba530[_0x9bd8('0x4')]){case'admin':_0x534260[_0x5c0b12]('voice:inbound');_0x534260[_0x5c0b12]('voice:outbound');if(queryQueues[_0x9bd8('0x29')](_0x9bd8('0x2a'))){delete queryQueues[_0x9bd8('0x2a')];}_0x18fba7[_0x9bd8('0x2b')](db[_0x9bd8('0x2c')]['findAll'](queryQueues));_0x18fba7['push'](db[_0x9bd8('0x2d')][_0x9bd8('0xf')](queryQueues));_0x18fba7[_0x9bd8('0x2b')](db[_0x9bd8('0x2e')][_0x9bd8('0xf')](queryQueues));_0x18fba7[_0x9bd8('0x2b')](db['SmsQueue'][_0x9bd8('0xf')](queryQueues));_0x18fba7[_0x9bd8('0x2b')](db[_0x9bd8('0x2f')][_0x9bd8('0xf')](queryQueues));_0x18fba7[_0x9bd8('0x2b')](db[_0x9bd8('0x30')][_0x9bd8('0xf')](queryQueues));_0x18fba7['push'](db[_0x9bd8('0x31')][_0x9bd8('0xf')](queryQueues));_0x18fba7['push'](db[_0x9bd8('0x3')][_0x9bd8('0xf')](queryTelephones));_0x18fba7[_0x9bd8('0x2b')](db[_0x9bd8('0x32')][_0x9bd8('0xf')](queryTrunks));_0x18fba7['push'](db[_0x9bd8('0x15')]['findAll'](queryCampaigns));_0x18fba7[_0x9bd8('0x2b')](db[_0x9bd8('0x3')][_0x9bd8('0xf')](queryAgents));break;case _0x9bd8('0x33'):_0x534260[_0x5c0b12](_0x9bd8('0x34'));_0x534260[_0x5c0b12](_0x9bd8('0x35'));_0x18fba7[_0x9bd8('0x2b')](getAssociatedResources(_0x9bd8('0xb'),_0x5ba530[_0x9bd8('0x1d')],'VoiceQueue'));_0x18fba7[_0x9bd8('0x2b')](getAssociatedResources(_0x9bd8('0x36'),_0x5ba530['userProfileId'],'ChatQueue'));_0x18fba7[_0x9bd8('0x2b')](getAssociatedResources(_0x9bd8('0xc'),_0x5ba530[_0x9bd8('0x1d')],'FaxQueue'));_0x18fba7['push'](getAssociatedResources(_0x9bd8('0xd'),_0x5ba530[_0x9bd8('0x1d')],_0x9bd8('0x37')));_0x18fba7[_0x9bd8('0x2b')](getAssociatedResources(_0x9bd8('0x38'),_0x5ba530[_0x9bd8('0x1d')],_0x9bd8('0x2f')));_0x18fba7[_0x9bd8('0x2b')](getAssociatedResources(_0x9bd8('0xe'),_0x5ba530['userProfileId'],_0x9bd8('0x30')));_0x18fba7[_0x9bd8('0x2b')](getAssociatedResources(_0x9bd8('0x39'),_0x5ba530[_0x9bd8('0x1d')],_0x9bd8('0x31')));_0x18fba7[_0x9bd8('0x2b')](getAssociatedResources(_0x9bd8('0x10'),_0x5ba530['userProfileId'],_0x9bd8('0x3')));_0x18fba7[_0x9bd8('0x2b')](getAssociatedResources('Trunks',_0x5ba530[_0x9bd8('0x1d')],_0x9bd8('0x32')));_0x18fba7[_0x9bd8('0x2b')](getAssociatedResources(_0x9bd8('0x11'),_0x5ba530[_0x9bd8('0x1d')],_0x9bd8('0x15')));_0x18fba7[_0x9bd8('0x2b')](db[_0x9bd8('0x3')]['findAll'](queryAgents));break;case'agent':_0x534260[_0x5c0b12](_0x9bd8('0x34'));_0x534260[_0x5c0b12](_0x9bd8('0x35'));_0x18fba7[_0x9bd8('0x2b')](_0x5ba530[_0x9bd8('0x3a')]({'attributes':['id','name']}));_0x18fba7[_0x9bd8('0x2b')](_0x5ba530['getChatQueues']({'attributes':['id',_0x9bd8('0x1')]}));_0x18fba7[_0x9bd8('0x2b')](_0x5ba530[_0x9bd8('0x3b')]({'attributes':['id',_0x9bd8('0x1')]}));_0x18fba7[_0x9bd8('0x2b')](_0x5ba530['getSmsQueues']({'attributes':['id',_0x9bd8('0x1')]}));_0x18fba7[_0x9bd8('0x2b')](_0x5ba530[_0x9bd8('0x3c')]({'attributes':['id','name']}));_0x18fba7[_0x9bd8('0x2b')](_0x5ba530['getOpenchannelQueues']({'attributes':['id','name']}));_0x18fba7[_0x9bd8('0x2b')](_0x5ba530[_0x9bd8('0x3d')]({'attributes':['id',_0x9bd8('0x1')]}));break;}return BPromise[_0x9bd8('0x3e')](_0x18fba7);}})['then'](function(_0x1be420){if(_0x1be420&&_0x1be420[_0x9bd8('0x3f')]){for(var _0x348c74=0x0;_0x348c74<_0x1be420[_0x9bd8('0x3f')];_0x348c74+=0x1){for(var _0x2fdcbb=0x0;_0x2fdcbb<_0x1be420[_0x348c74][_0x9bd8('0x3f')];_0x2fdcbb+=0x1){switch(_0x348c74){case 0x0:joinOrLeaveQueues(_0x534260,_0x5c0b12,'voice',_0x1be420[_0x348c74][_0x2fdcbb]);break;case 0x1:joinOrLeaveQueues(_0x534260,_0x5c0b12,_0x9bd8('0x40'),_0x1be420[_0x348c74][_0x2fdcbb]);break;case 0x2:joinOrLeaveQueues(_0x534260,_0x5c0b12,_0x9bd8('0x41'),_0x1be420[_0x348c74][_0x2fdcbb]);break;case 0x3:joinOrLeaveQueues(_0x534260,_0x5c0b12,_0x9bd8('0x42'),_0x1be420[_0x348c74][_0x2fdcbb]);break;case 0x4:joinOrLeaveQueues(_0x534260,_0x5c0b12,_0x9bd8('0x43'),_0x1be420[_0x348c74][_0x2fdcbb]);break;case 0x5:joinOrLeaveQueues(_0x534260,_0x5c0b12,'openchannel',_0x1be420[_0x348c74][_0x2fdcbb]);break;case 0x6:joinOrLeaveQueues(_0x534260,_0x5c0b12,_0x9bd8('0x44'),_0x1be420[_0x348c74][_0x2fdcbb]);break;case 0x7:if(_0x150ec2[_0x9bd8('0x4')]!==_0x9bd8('0x6'))_0x534260[_0x5c0b12](util[_0x9bd8('0x17')](_0x9bd8('0x45'),_0x1be420[_0x348c74][_0x2fdcbb][_0x9bd8('0x1')]));break;case 0x8:if(_0x150ec2[_0x9bd8('0x4')]!==_0x9bd8('0x6'))_0x534260[_0x5c0b12](util['format'](_0x9bd8('0x46'),_0x1be420[_0x348c74][_0x2fdcbb][_0x9bd8('0x1')]));break;case 0x9:if(_0x150ec2[_0x9bd8('0x4')]!==_0x9bd8('0x6'))_0x534260[_0x5c0b12](util['format'](_0x9bd8('0x47'),_0x1be420[_0x348c74][_0x2fdcbb][_0x9bd8('0x7')],_0x1be420[_0x348c74][_0x2fdcbb]['name']));break;case 0xa:_0x534260[_0x5c0b12](util[_0x9bd8('0x17')](_0x9bd8('0x19'),_0x1be420[_0x348c74][_0x2fdcbb][_0x9bd8('0x1')]));break;}}}}})[_0x9bd8('0xa')](function(){if(_0x5c0b12==='leave'){var _0xef4927=_[_0x9bd8('0x14')](_0x150ec2[_0x9bd8('0x1f')],'id');return _0x150ec2[_0x9bd8('0x48')](_0xef4927)[_0x9bd8('0xa')](function(){for(var _0x66eb9a=0x0;_0x66eb9a<_0xef4927['length'];_0x66eb9a+=0x1){_0x51397d[_0x9bd8('0x49')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0xef4927[_0x66eb9a]),'UserId':Number(_0x150ec2['id'])});}});}})[_0x9bd8('0xa')](function(){if(_0x5c0b12===_0x9bd8('0x4a')){var _0x2b1e64=_[_0x9bd8('0x14')](_0x150ec2[_0x9bd8('0x21')],'id');return _0x150ec2[_0x9bd8('0x4b')](_0x2b1e64)[_0x9bd8('0xa')](function(){for(var _0x5b2d6a=0x0;_0x5b2d6a<_0x2b1e64[_0x9bd8('0x3f')];_0x5b2d6a+=0x1){_0x51397d['emit'](_0x9bd8('0x4c'),{'MailInteractionId':Number(_0x2b1e64[_0x5b2d6a]),'UserId':Number(_0x150ec2['id'])});}});}})[_0x9bd8('0xa')](function(){if(_0x5c0b12===_0x9bd8('0x4a')){var _0x4bd57e=_[_0x9bd8('0x14')](_0x150ec2[_0x9bd8('0x23')],'id');return _0x150ec2[_0x9bd8('0x4d')](_0x4bd57e)[_0x9bd8('0xa')](function(){for(var _0x57ee9c=0x0;_0x57ee9c<_0x4bd57e[_0x9bd8('0x3f')];_0x57ee9c+=0x1){_0x51397d[_0x9bd8('0x49')](_0x9bd8('0x4e'),{'FaxInteractionId':Number(_0x4bd57e[_0x57ee9c]),'UserId':Number(_0x150ec2['id'])});}});}})['then'](function(){if(_0x5c0b12===_0x9bd8('0x4a')){var _0x7848b=_[_0x9bd8('0x14')](_0x150ec2[_0x9bd8('0x25')],'id');return _0x150ec2[_0x9bd8('0x4f')](_0x7848b)[_0x9bd8('0xa')](function(){for(var _0x316771=0x0;_0x316771<_0x7848b[_0x9bd8('0x3f')];_0x316771+=0x1){_0x51397d[_0x9bd8('0x49')](_0x9bd8('0x50'),{'SmsInteractionId':Number(_0x7848b[_0x316771]),'UserId':Number(_0x150ec2['id'])});}});}})[_0x9bd8('0xa')](function(){if(_0x5c0b12===_0x9bd8('0x4a')){var _0x3b0e17=_['map'](_0x150ec2[_0x9bd8('0x27')],'id');return _0x150ec2['removeOpenchannelInteractions'](_0x3b0e17)[_0x9bd8('0xa')](function(){for(var _0x10c985=0x0;_0x10c985<_0x3b0e17[_0x9bd8('0x3f')];_0x10c985+=0x1){_0x51397d[_0x9bd8('0x49')](_0x9bd8('0x51'),{'OpenchannelInteractionId':Number(_0x3b0e17[_0x10c985]),'UserId':Number(_0x150ec2['id'])});}});}})['then'](function(){if(_0x5c0b12===_0x9bd8('0x4a')){var _0x14ff6e=_['map'](_0x150ec2[_0x9bd8('0x52')],'id');return _0x150ec2[_0x9bd8('0x53')](_0x14ff6e)[_0x9bd8('0xa')](function(){for(var _0x2185a0=0x0;_0x2185a0<_0x14ff6e[_0x9bd8('0x3f')];_0x2185a0+=0x1){_0x51397d[_0x9bd8('0x49')](_0x9bd8('0x54'),{'WhatsappInteractionId':Number(_0x14ff6e[_0x2185a0]),'UserId':Number(_0x150ec2['id'])});}});}})[_0x9bd8('0x55')](function(_0x5ed68d){_0x534260['log'](_0x5ed68d);});}}function onDisconnect(_0x52a136,_0x26e873){joinOrLeave(_0x52a136,'leave',_0x26e873);}function onConnect(_0x3c78bc){joinOrLeave(_0x3c78bc,'join');}exports['default']=function(_0x3f4cdd){_0x3f4cdd['on'](_0x9bd8('0x56'),function(_0x5efce1){_0x5efce1['setMaxListeners'](0x0);_0x5efce1[_0x9bd8('0x57')]=_0x5efce1['request'][_0x9bd8('0x56')][_0x9bd8('0x58')]+':'+_0x5efce1[_0x9bd8('0x59')][_0x9bd8('0x56')][_0x9bd8('0x5a')];_0x5efce1[_0x9bd8('0x5b')]=new Date();_0x5efce1['log']=function(_0x367ac7){console[_0x9bd8('0x5c')](_0x9bd8('0x5d')+_0x5efce1['nsp'][_0x9bd8('0x1')]+'['+_0x5efce1[_0x9bd8('0x57')]+']',_0x367ac7);};_0x5efce1['on'](_0x9bd8('0x5e'),function(){onDisconnect(_0x5efce1,_0x3f4cdd);_0x5efce1[_0x9bd8('0x5c')](_0x9bd8('0x5f'));});onConnect(_0x5efce1);_0x5efce1[_0x9bd8('0x5c')](_0x9bd8('0x60'));});};
\ No newline at end of file
index 5135a11..cb951dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x481e=['WhatsappInteraction','closedinteraction','Whatsapp','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','Trigger,\x20%s','error','code','catch','get','channel','event','direction','sequelize','query','QueryTypes','SELECT','contact','User','find','UserId','name','fullname','email','internal','format','agent','incomingmessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','changed','closed','default','length','hasOwnProperty','model','hook','util','../../mysqldb','jayson/promise','lodash','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','newmessage','Sms','SmsInteraction','SmsMessage'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x481e,0xaa));var _0xe481=function(_0x4cddf9,_0x476271){_0x4cddf9=_0x4cddf9-0x0;var _0x13b8ad=_0x481e[_0x4cddf9];return _0x13b8ad;};'use strict';var util=require(_0xe481('0x0'));var db=require(_0xe481('0x1'))['db'];var jayson=require(_0xe481('0x2'));var logger=require('../logger')('triggers');var _=require(_0xe481('0x3'));var client=jayson['client']['http']({'port':0x232a});var triggers=[{'channel':_0xe481('0x4'),'model':_0xe481('0x5'),'event':_0xe481('0x6'),'condition':_0xe481('0x7'),'callback':afterCreate},{'channel':_0xe481('0x4'),'model':_0xe481('0x5'),'event':_0xe481('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xe481('0x4'),'model':'ChatMessage','event':'afterCreate','condition':_0xe481('0x9'),'callback':afterCreateMessage},{'channel':_0xe481('0xa'),'model':_0xe481('0xb'),'event':_0xe481('0x6'),'condition':_0xe481('0x7'),'callback':afterCreate},{'channel':'Sms','model':_0xe481('0xb'),'event':_0xe481('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xe481('0xa'),'model':_0xe481('0xc'),'event':_0xe481('0x6'),'condition':_0xe481('0x9'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0xe481('0xd'),'event':_0xe481('0x6'),'condition':_0xe481('0x7'),'callback':afterCreate},{'channel':'Whatsapp','model':_0xe481('0xd'),'event':_0xe481('0x8'),'condition':_0xe481('0xe'),'callback':afterUpdate},{'channel':_0xe481('0xf'),'model':_0xe481('0x10'),'event':_0xe481('0x6'),'condition':_0xe481('0x9'),'callback':afterCreateMessage},{'channel':_0xe481('0x11'),'model':_0xe481('0x12'),'event':_0xe481('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xe481('0x11'),'model':_0xe481('0x12'),'event':_0xe481('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xe481('0x11'),'model':_0xe481('0x13'),'event':_0xe481('0x6'),'condition':_0xe481('0x9'),'callback':afterCreateMessage},{'channel':_0xe481('0x14'),'model':'MailInteraction','event':_0xe481('0x6'),'condition':_0xe481('0x7'),'callback':afterCreate},{'channel':_0xe481('0x14'),'model':'MailInteraction','event':_0xe481('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Mail','model':_0xe481('0x15'),'event':_0xe481('0x6'),'condition':_0xe481('0x9'),'callback':afterCreateMessage},{'channel':_0xe481('0x16'),'model':_0xe481('0x17'),'event':'afterCreate','condition':_0xe481('0x7'),'callback':afterCreate},{'channel':_0xe481('0x16'),'model':_0xe481('0x17'),'event':_0xe481('0x8'),'condition':_0xe481('0xe'),'callback':afterUpdate},{'channel':'Openchannel','model':_0xe481('0x18'),'event':_0xe481('0x6'),'condition':_0xe481('0x9'),'callback':afterCreateMessage}];function request(_0x26c62e){return client[_0xe481('0x19')](_0xe481('0x1a'),_0x26c62e)[_0xe481('0x1b')](function(_0x198f77){logger['info'](_0xe481('0x1c'),_0xe481('0x1a'),_0x198f77);if(_0x198f77[_0xe481('0x1d')]){if(_0x198f77[_0xe481('0x1d')][_0xe481('0x1e')]===0x1f4){logger[_0xe481('0x1d')](_0xe481('0x1c'),'EventManager',_0x198f77[_0xe481('0x1d')]);}}})[_0xe481('0x1f')](function(_0x3246ac){logger['error'](_0xe481('0x1c'),'EventManager',_0x3246ac);});}function afterCreateMessage(_0x2d3ee2,_0x3623c0){return function(_0x26746e,_0x23f789){_0x26746e=_0x26746e[_0xe481('0x20')]({'plain':!![]});_0x26746e[_0xe481('0x21')]=_0x2d3ee2;_0x26746e[_0xe481('0x22')]=_0x26746e[_0xe481('0x23')];var _0x4a12ad='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x26746e['ContactId'];return db[_0xe481('0x24')][_0xe481('0x25')](_0x4a12ad,{'type':db['Sequelize'][_0xe481('0x26')][_0xe481('0x27')],'raw':!![]})['then'](function(_0x4e7c5d){return _0x4e7c5d;})[_0xe481('0x1b')](function(_0x31a3c9){if(_0x31a3c9){_0x26746e[_0xe481('0x28')]=_0x31a3c9[0x0];}if(_0x26746e['UserId']){return db[_0xe481('0x29')][_0xe481('0x2a')]({'where':{'id':_0x26746e[_0xe481('0x2b')]},'attributes':['id',_0xe481('0x2c'),_0xe481('0x2d'),_0xe481('0x2e'),_0xe481('0x2f')],'raw':!![]})[_0xe481('0x1b')](function(_0x1a0622){_0x26746e['interface']=util[_0xe481('0x30')]('SIP/%s',_0x1a0622[_0xe481('0x2c')]);_0x26746e['channel']=_0x2d3ee2;_0x26746e[_0xe481('0x31')]=_0x1a0622;return request({'event':_0xe481('0x32'),'message':_0x26746e});})[_0xe481('0x1f')](function(_0x4c70e7){console['error'](_0x4c70e7);});}else{return request({'event':'outgoingmessage','message':_0x26746e});}});};}function afterCreate(_0x5493fa,_0x5b870){return function(_0x4fab7d,_0x5dd969){_0x4fab7d=_0x4fab7d['get']({'plain':!![]});_0x4fab7d[_0xe481('0x21')]=_0x5493fa;_0x4fab7d[_0xe481('0x22')]='opened';var _0x5e2e6e=_0xe481('0x33')+_0x4fab7d[_0xe481('0x34')];return db[_0xe481('0x24')][_0xe481('0x25')](_0x5e2e6e,{'type':db[_0xe481('0x35')][_0xe481('0x26')][_0xe481('0x27')],'raw':!![]})[_0xe481('0x1b')](function(_0x3685a1){return _0x3685a1;})[_0xe481('0x1b')](function(_0x5ee40c){if(_0x5ee40c){_0x4fab7d[_0xe481('0x28')]=_0x5ee40c[0x0];}return request({'event':_0x5b870,'message':_0x4fab7d});});};}function afterUpdate(_0x475bcf,_0x228e8a){return function(_0x536ce8,_0x286e9c){if(_0x536ce8[_0xe481('0x36')](_0xe481('0x37'))&&_0x536ce8[_0xe481('0x37')]){_0x536ce8=_0x536ce8[_0xe481('0x20')]({'plain':!![]});_0x536ce8[_0xe481('0x21')]=_0x475bcf;_0x536ce8[_0xe481('0x22')]=_0xe481('0x37');var _0x2cf8ef=_0xe481('0x33')+_0x536ce8[_0xe481('0x34')];return db['sequelize'][_0xe481('0x25')](_0x2cf8ef,{'type':db[_0xe481('0x35')][_0xe481('0x26')][_0xe481('0x27')],'raw':!![]})[_0xe481('0x1b')](function(_0x1d30ed){return _0x1d30ed;})[_0xe481('0x1b')](function(_0x41c716){if(_0x41c716){_0x536ce8[_0xe481('0x28')]=_0x41c716[0x0];}if(_0x536ce8['UserId']){return db[_0xe481('0x29')]['find']({'where':{'id':_0x536ce8[_0xe481('0x2b')]},'attributes':['id',_0xe481('0x2c'),_0xe481('0x2d'),_0xe481('0x2e'),_0xe481('0x2f')],'raw':!![]})[_0xe481('0x1b')](function(_0x5c6671){_0x536ce8['interface']=util['format']('SIP/%s',_0x5c6671[_0xe481('0x2c')]);_0x536ce8[_0xe481('0x31')]=_0x5c6671;return request({'event':_0x228e8a,'message':_0x536ce8});})[_0xe481('0x1f')](function(_0x1eb7b2){console[_0xe481('0x1d')](_0x1eb7b2);});}else{return request({'event':_0x228e8a,'message':_0x536ce8});}});}};}exports[_0xe481('0x38')]=function(){for(var _0x165bd0=0x0;_0x165bd0<triggers[_0xe481('0x39')];_0x165bd0+=0x1){if(db[_0xe481('0x3a')](triggers[_0x165bd0][_0xe481('0x3b')])){db[triggers[_0x165bd0][_0xe481('0x3b')]][_0xe481('0x3c')](triggers[_0x165bd0][_0xe481('0x22')],triggers[_0x165bd0]['callback'](triggers[_0x165bd0]['channel']['toLowerCase'](),triggers[_0x165bd0]['condition']));}}};
\ No newline at end of file
+var _0xbfc2=['channel','motionChannel','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','QueryTypes','SELECT','UserId','User','find','name','fullname','interface','SIP/%s','incomingmessage','outgoingmessage','opened','ContactId','contact','changed','closed','internal','format','default','length','hasOwnProperty','model','hook','toLowerCase','condition','util','jayson/promise','../logger','lodash','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','Sms','SmsInteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','info','Trigger,\x20%s','error','code','get'];(function(_0x1a8bbc,_0x17a086){var _0x212fc2=function(_0x55c718){while(--_0x55c718){_0x1a8bbc['push'](_0x1a8bbc['shift']());}};_0x212fc2(++_0x17a086);}(_0xbfc2,0xf0));var _0x2bfc=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xbfc2[_0x57b54c];return _0x59cc19;};'use strict';var util=require(_0x2bfc('0x0'));var db=require('../../mysqldb')['db'];var jayson=require(_0x2bfc('0x1'));var logger=require(_0x2bfc('0x2'))('triggers');var _=require(_0x2bfc('0x3'));var client=jayson[_0x2bfc('0x4')][_0x2bfc('0x5')]({'port':0x232a});var triggers=[{'channel':_0x2bfc('0x6'),'model':_0x2bfc('0x7'),'event':_0x2bfc('0x8'),'condition':_0x2bfc('0x9'),'callback':afterCreate},{'channel':_0x2bfc('0x6'),'model':_0x2bfc('0x7'),'event':_0x2bfc('0xa'),'condition':_0x2bfc('0xb'),'callback':afterUpdate},{'channel':_0x2bfc('0x6'),'model':_0x2bfc('0xc'),'event':_0x2bfc('0x8'),'condition':_0x2bfc('0xd'),'callback':afterCreateMessage},{'channel':_0x2bfc('0xe'),'model':_0x2bfc('0xf'),'event':'afterCreate','condition':_0x2bfc('0x9'),'callback':afterCreate},{'channel':_0x2bfc('0xe'),'model':_0x2bfc('0xf'),'event':_0x2bfc('0xa'),'condition':_0x2bfc('0xb'),'callback':afterUpdate},{'channel':_0x2bfc('0xe'),'model':_0x2bfc('0x10'),'event':'afterCreate','condition':_0x2bfc('0xd'),'callback':afterCreateMessage},{'channel':_0x2bfc('0x11'),'model':_0x2bfc('0x12'),'event':_0x2bfc('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x2bfc('0x11'),'model':_0x2bfc('0x12'),'event':_0x2bfc('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x2bfc('0x11'),'model':_0x2bfc('0x13'),'event':_0x2bfc('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x2bfc('0x14'),'model':_0x2bfc('0x15'),'event':_0x2bfc('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':'Fax','model':_0x2bfc('0x15'),'event':'afterUpdate','condition':_0x2bfc('0xb'),'callback':afterUpdate},{'channel':'Fax','model':_0x2bfc('0x16'),'event':'afterCreate','condition':_0x2bfc('0xd'),'callback':afterCreateMessage},{'channel':_0x2bfc('0x17'),'model':_0x2bfc('0x18'),'event':_0x2bfc('0x8'),'condition':_0x2bfc('0x9'),'callback':afterCreate},{'channel':_0x2bfc('0x17'),'model':_0x2bfc('0x18'),'event':_0x2bfc('0xa'),'condition':_0x2bfc('0xb'),'callback':afterUpdate},{'channel':_0x2bfc('0x17'),'model':_0x2bfc('0x19'),'event':_0x2bfc('0x8'),'condition':_0x2bfc('0xd'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x2bfc('0x1a'),'event':_0x2bfc('0x8'),'condition':_0x2bfc('0x9'),'callback':afterCreate},{'channel':'Openchannel','model':_0x2bfc('0x1a'),'event':_0x2bfc('0xa'),'condition':_0x2bfc('0xb'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x2bfc('0x1b'),'event':_0x2bfc('0x8'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x1b498d){return client[_0x2bfc('0x1c')](_0x2bfc('0x1d'),_0x1b498d)[_0x2bfc('0x1e')](function(_0x2b056b){logger[_0x2bfc('0x1f')](_0x2bfc('0x20'),_0x2bfc('0x1d'),_0x2b056b);if(_0x2b056b[_0x2bfc('0x21')]){if(_0x2b056b[_0x2bfc('0x21')][_0x2bfc('0x22')]===0x1f4){logger[_0x2bfc('0x21')](_0x2bfc('0x20'),_0x2bfc('0x1d'),_0x2b056b[_0x2bfc('0x21')]);}}})['catch'](function(_0x28d623){logger[_0x2bfc('0x21')](_0x2bfc('0x20'),'EventManager',_0x28d623);});}function afterCreateMessage(_0x641639,_0x4a17a0){return function(_0x3d529,_0x599a13){_0x3d529=_0x3d529[_0x2bfc('0x23')]({'plain':!![]});_0x3d529[_0x2bfc('0x24')]=_0x641639;_0x3d529[_0x2bfc('0x25')]=_0x641639;_0x3d529[_0x2bfc('0x26')]=_0x3d529[_0x2bfc('0x27')];var _0x27a1ef=_0x2bfc('0x28')+_0x3d529['ContactId'];return db[_0x2bfc('0x29')][_0x2bfc('0x2a')](_0x27a1ef,{'type':db[_0x2bfc('0x2b')][_0x2bfc('0x2c')][_0x2bfc('0x2d')],'raw':!![]})[_0x2bfc('0x1e')](function(_0x4bc203){return _0x4bc203;})[_0x2bfc('0x1e')](function(_0x428bca){if(_0x428bca){_0x3d529['contact']=_0x428bca[0x0];}if(_0x3d529[_0x2bfc('0x2e')]){return db[_0x2bfc('0x2f')][_0x2bfc('0x30')]({'where':{'id':_0x3d529[_0x2bfc('0x2e')]},'attributes':['id',_0x2bfc('0x31'),_0x2bfc('0x32'),'email','internal'],'raw':!![]})[_0x2bfc('0x1e')](function(_0x3da922){_0x3d529[_0x2bfc('0x33')]=util['format'](_0x2bfc('0x34'),_0x3da922[_0x2bfc('0x31')]);_0x3d529[_0x2bfc('0x24')]=_0x641639;_0x3d529['agent']=_0x3da922;return request({'event':_0x2bfc('0x35'),'message':_0x3d529});})['catch'](function(_0xa1e593){console[_0x2bfc('0x21')](_0xa1e593);});}else{return request({'event':_0x2bfc('0x36'),'message':_0x3d529});}});};}function afterCreate(_0x42dd12,_0x5a3b56){return function(_0x5c89a4,_0x5e58cb){_0x5c89a4=_0x5c89a4['get']({'plain':!![]});_0x5c89a4[_0x2bfc('0x24')]=_0x42dd12;_0x5c89a4['motionChannel']=_0x42dd12;_0x5c89a4[_0x2bfc('0x26')]=_0x2bfc('0x37');var _0x29b7f8=_0x2bfc('0x28')+_0x5c89a4[_0x2bfc('0x38')];return db[_0x2bfc('0x29')]['query'](_0x29b7f8,{'type':db['Sequelize']['QueryTypes'][_0x2bfc('0x2d')],'raw':!![]})[_0x2bfc('0x1e')](function(_0x1d61e2){return _0x1d61e2;})[_0x2bfc('0x1e')](function(_0x3ee4ad){if(_0x3ee4ad){_0x5c89a4[_0x2bfc('0x39')]=_0x3ee4ad[0x0];}return request({'event':_0x5a3b56,'message':_0x5c89a4});});};}function afterUpdate(_0x4a84f8,_0x94a591){return function(_0x3048d0,_0x202c79){if(_0x3048d0[_0x2bfc('0x3a')](_0x2bfc('0x3b'))&&_0x3048d0[_0x2bfc('0x3b')]){_0x3048d0=_0x3048d0[_0x2bfc('0x23')]({'plain':!![]});_0x3048d0[_0x2bfc('0x24')]=_0x4a84f8;_0x3048d0['motionChannel']=_0x4a84f8;_0x3048d0[_0x2bfc('0x26')]=_0x2bfc('0x3b');var _0x4668ff=_0x2bfc('0x28')+_0x3048d0[_0x2bfc('0x38')];return db['sequelize'][_0x2bfc('0x2a')](_0x4668ff,{'type':db[_0x2bfc('0x2b')][_0x2bfc('0x2c')][_0x2bfc('0x2d')],'raw':!![]})[_0x2bfc('0x1e')](function(_0x453e52){return _0x453e52;})[_0x2bfc('0x1e')](function(_0x4c124d){if(_0x4c124d){_0x3048d0[_0x2bfc('0x39')]=_0x4c124d[0x0];}if(_0x3048d0[_0x2bfc('0x2e')]){return db['User'][_0x2bfc('0x30')]({'where':{'id':_0x3048d0['UserId']},'attributes':['id','name',_0x2bfc('0x32'),'email',_0x2bfc('0x3c')],'raw':!![]})['then'](function(_0xcb80c9){_0x3048d0[_0x2bfc('0x33')]=util[_0x2bfc('0x3d')](_0x2bfc('0x34'),_0xcb80c9[_0x2bfc('0x31')]);_0x3048d0['agent']=_0xcb80c9;return request({'event':_0x94a591,'message':_0x3048d0});})['catch'](function(_0x327956){console[_0x2bfc('0x21')](_0x327956);});}else{return request({'event':_0x94a591,'message':_0x3048d0});}});}};}exports[_0x2bfc('0x3e')]=function(){for(var _0x5049e7=0x0;_0x5049e7<triggers[_0x2bfc('0x3f')];_0x5049e7+=0x1){if(db[_0x2bfc('0x40')](triggers[_0x5049e7][_0x2bfc('0x41')])){db[triggers[_0x5049e7][_0x2bfc('0x41')]][_0x2bfc('0x42')](triggers[_0x5049e7]['event'],triggers[_0x5049e7]['callback'](triggers[_0x5049e7]['channel'][_0x2bfc('0x43')](),triggers[_0x5049e7][_0x2bfc('0x44')]));}}};
\ No newline at end of file
index d0f8604..d128cc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c38=['fax','sms','openchannel','getChannels','isValidChannel','toLowerCase','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','count','agent','agents','Maximum\x20login\x20has\x20been\x20reached','bluebird','../mysqldb','voice','mail'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x0c38,0x150));var _0x80c3=function(_0x310828,_0x5627a5){_0x310828=_0x310828-0x0;var _0x3317ea=_0x0c38[_0x310828];return _0x3317ea;};'use strict';var _=require('lodash');var BPromise=require(_0x80c3('0x0'));var db=require(_0x80c3('0x1'))['db'];var util=require('./license/util');var channels=[_0x80c3('0x2'),_0x80c3('0x3'),'chat',_0x80c3('0x4'),_0x80c3('0x5'),'whatsapp',_0x80c3('0x6')];exports[_0x80c3('0x7')]=function(){return channels;};exports[_0x80c3('0x8')]=function(_0x3e7408){_0x3e7408=_0x3e7408[_0x80c3('0x9')]();return _['includes'](channels,_0x3e7408);};exports[_0x80c3('0xa')]=function(_0x4e0579,_0x81b6c9,_0xb3685a,_0x2b8d62){var _0x37eef1={'loginAttempts':_0x81b6c9,'blocked':_0xb3685a};if(!_[_0x80c3('0xb')](_0x2b8d62)){_0x37eef1[_0x80c3('0xc')]=_0x2b8d62;}return _0x4e0579[_0x80c3('0xd')](_0x37eef1);};exports[_0x80c3('0xe')]=function(_0x26f66a){return new BPromise(function(_0x4759c0,_0x3c8535){var _0x284bf4=0x0;if(_0x26f66a[_0x80c3('0xf')]!=='agent'){_0x4759c0(_0x26f66a);}db['User'][_0x80c3('0x10')]({'where':{'role':_0x80c3('0x11'),'online':!![],'id':{'$ne':_0x26f66a['id']}}})['then'](function(_0x4ae8c0){_0x284bf4=_0x4ae8c0;return util['getLicense']();})['then'](function(_0x4de1df){if(_0x4de1df&&_0x4de1df['agents']&&_0x284bf4>=_0x4de1df[_0x80c3('0x12')]){throw Error(_0x80c3('0x13'));}_0x4759c0(_0x26f66a);})['catch'](function(_0x352b20){_0x3c8535(_0x352b20);});});};
\ No newline at end of file
+var _0xc8c8=['fax','whatsapp','isValidChannel','clearBlockUser','getLicense','role','User','count','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','./license/util','voice','mail','chat'];(function(_0x3891de,_0x55cfe5){var _0x521696=function(_0x1a8b8e){while(--_0x1a8b8e){_0x3891de['push'](_0x3891de['shift']());}};_0x521696(++_0x55cfe5);}(_0xc8c8,0x1d9));var _0x8c8c=function(_0x2851ae,_0x27a78b){_0x2851ae=_0x2851ae-0x0;var _0x5cf084=_0xc8c8[_0x2851ae];return _0x5cf084;};'use strict';var _=require(_0x8c8c('0x0'));var BPromise=require(_0x8c8c('0x1'));var db=require(_0x8c8c('0x2'))['db'];var util=require(_0x8c8c('0x3'));var channels=[_0x8c8c('0x4'),_0x8c8c('0x5'),_0x8c8c('0x6'),_0x8c8c('0x7'),'sms',_0x8c8c('0x8'),'openchannel'];exports['getChannels']=function(){return channels;};exports[_0x8c8c('0x9')]=function(_0x4ab933){_0x4ab933=_0x4ab933['toLowerCase']();return _['includes'](channels,_0x4ab933);};exports[_0x8c8c('0xa')]=function(_0x1c4fd8,_0x479656,_0x380073,_0x5cb8bf){var _0x2cf9b9={'loginAttempts':_0x479656,'blocked':_0x380073};if(!_['isUndefined'](_0x5cb8bf)){_0x2cf9b9['blockedAt']=_0x5cb8bf;}return _0x1c4fd8['updateAttributes'](_0x2cf9b9);};exports[_0x8c8c('0xb')]=function(_0x30a1b5){return new BPromise(function(_0x4e17fc,_0x4fb8fc){var _0x4293d4=0x0;if(_0x30a1b5[_0x8c8c('0xc')]!=='agent'){_0x4e17fc(_0x30a1b5);}db[_0x8c8c('0xd')][_0x8c8c('0xe')]({'where':{'role':_0x8c8c('0xf'),'online':!![],'id':{'$ne':_0x30a1b5['id']}}})[_0x8c8c('0x10')](function(_0x1f5499){_0x4293d4=_0x1f5499;return util[_0x8c8c('0xb')]();})['then'](function(_0x2d6ae3){if(_0x2d6ae3&&_0x2d6ae3[_0x8c8c('0x11')]&&_0x4293d4>=_0x2d6ae3[_0x8c8c('0x11')]){throw Error(_0x8c8c('0x12'));}_0x4e17fc(_0x30a1b5);})[_0x8c8c('0x13')](function(_0xa5075a){_0x4fb8fc(_0xa5075a);});});};
\ No newline at end of file
index fbddf5f..3d4c5b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0962=['status','render','json','exports','404'];(function(_0x2fc000,_0x966867){var _0xb22690=function(_0x202412){while(--_0x202412){_0x2fc000['push'](_0x2fc000['shift']());}};_0xb22690(++_0x966867);}(_0x0962,0x116));var _0x2096=function(_0x406213,_0x5da1a4){_0x406213=_0x406213-0x0;var _0xc80a88=_0x0962[_0x406213];return _0xc80a88;};'use strict';module[_0x2096('0x0')][0x194]=function pageNotFound(_0x106f82,_0x16a0fc){var _0x237146=_0x2096('0x1');var _0x42c6d1=0x194;var _0x3a5367={'status':_0x42c6d1};_0x16a0fc[_0x2096('0x2')](_0x3a5367['status']);_0x16a0fc[_0x2096('0x3')](_0x237146,{},function(_0x3f7ede,_0x519396){if(_0x3f7ede){return _0x16a0fc[_0x2096('0x2')](_0x3a5367[_0x2096('0x2')])[_0x2096('0x4')](_0x3a5367);}_0x16a0fc['send'](_0x519396);});};
\ No newline at end of file
+var _0x6baa=['status','send','exports','404'];(function(_0x3a279a,_0x2134d7){var _0x324b11=function(_0x287c12){while(--_0x287c12){_0x3a279a['push'](_0x3a279a['shift']());}};_0x324b11(++_0x2134d7);}(_0x6baa,0x1e2));var _0xa6ba=function(_0xe02096,_0x5ab354){_0xe02096=_0xe02096-0x0;var _0x405c78=_0x6baa[_0xe02096];return _0x405c78;};'use strict';module[_0xa6ba('0x0')][0x194]=function pageNotFound(_0x40f303,_0x978d85){var _0x5d89de=_0xa6ba('0x1');var _0x39170e=0x194;var _0x288898={'status':_0x39170e};_0x978d85['status'](_0x288898[_0xa6ba('0x2')]);_0x978d85['render'](_0x5d89de,{},function(_0x55e8a2,_0x4b2cd8){if(_0x55e8a2){return _0x978d85[_0xa6ba('0x2')](_0x288898[_0xa6ba('0x2')])['json'](_0x288898);}_0x978d85[_0xa6ba('0x3')](_0x4b2cd8);});};
\ No newline at end of file
index f7d42ec..b385309 100644 (file)
@@ -153,6 +153,30 @@ module.exports = {
     return new BPromise(function(resolve) {\r
       var migration = new Migration(queryInterface);\r
 \r
+      // START voice_extensions\r
+      migration.addColumn('voice_extensions', 'alias', {\r
+        type: Sequelize.STRING,\r
+        allowNull: true\r
+      });\r
+      // END voice_extensions\r
+\r
+      //START cm_list\r
+      migration.query('ALTER TABLE `tools_dispositions` DROP FOREIGN KEY `tools_dispositions_ibfk_6`');\r
+      migration.query('ALTER TABLE `tools_dispositions` ADD CONSTRAINT `tools_dispositions_ibfk_6` FOREIGN KEY (`ListId`) REFERENCES `cm_lists`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');\r
+      migration.query('ALTER TABLE `tools_dispositions` DROP FOREIGN KEY `tools_dispositions_ibfk_5`');\r
+      migration.query('ALTER TABLE `tools_dispositions` ADD CONSTRAINT `tools_dispositions_ibfk_5` FOREIGN KEY (`ChatWebsiteId`) REFERENCES `chat_websites`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');\r
+      migration.query('ALTER TABLE `tools_dispositions` DROP FOREIGN KEY `tools_dispositions_ibfk_4`');\r
+      migration.query('ALTER TABLE `tools_dispositions` ADD CONSTRAINT `tools_dispositions_ibfk_4` FOREIGN KEY (`OpenchannelAccountId`) REFERENCES `openchannel_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');\r
+      migration.query('ALTER TABLE `tools_dispositions` DROP FOREIGN KEY `tools_dispositions_ibfk_3`');\r
+      migration.query('ALTER TABLE `tools_dispositions` ADD CONSTRAINT `tools_dispositions_ibfk_3` FOREIGN KEY (`SmsAccountId`) REFERENCES `sms_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');\r
+      migration.query('ALTER TABLE `tools_dispositions` DROP FOREIGN KEY `tools_dispositions_ibfk_2`');\r
+      migration.query('ALTER TABLE `tools_dispositions` ADD CONSTRAINT `tools_dispositions_ibfk_2` FOREIGN KEY (`FaxAccountId`) REFERENCES `fax_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');\r
+      migration.query('ALTER TABLE `tools_dispositions` DROP FOREIGN KEY `tools_dispositions_ibfk_1`');\r
+      migration.query('ALTER TABLE `tools_dispositions` ADD CONSTRAINT `tools_dispositions_ibfk_1` FOREIGN KEY (`MailAccountId`) REFERENCES `mail_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');\r
+      migration.query('ALTER TABLE `tools_dispositions` DROP FOREIGN KEY `tools_dispositions_ibfk_7`');\r
+      migration.query('ALTER TABLE `tools_dispositions` ADD CONSTRAINT `tools_dispositions_ibfk_7` FOREIGN KEY (`WhatsappAccountId`) REFERENCES `whatsapp_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE');\r
+      //END cm_list\r
+\r
       // START FINAL\r
       migration.final(resolve);\r
       // END FINAL\r
diff --git a/server/migrations/2.5.34.js b/server/migrations/2.5.34.js
new file mode 100644 (file)
index 0000000..f7d42ec
--- /dev/null
@@ -0,0 +1,165 @@
+'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 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 8e8e296..dd0eb9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6901=['MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserNotification','WhatsappAccount','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/realtime/realtime.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','UserId','hasMany','Recordings','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','ChatInteractions','SmsInteractions','FaxInteractions','MailInteractions','UserNotifications','belongsTo','userProfileId','belongsToMany','ChatGroup','Groups','chat_group_has_users','Contacts','cm_user_has_contacts','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','MailQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','UserWhatsappQueue','VoicePrefixes','user_has_voice_prefixes','ChatWebsite','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccount','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','VoiceChanSpy','SpiedAgents','cascade','ChanSpyId','Applications','VoiceMusicOnHold','Sounds','moh_has_sounds','Hoppers','VoiceQueueId','CmHopperHistory','HopperHistories','HopperBlacks','JscriptySessionReport','JscriptySessions','TrunkId','TrunkBackup','mandatoryDispositionPauseId','Lists','voice_queues_has_cm_lists','Agents','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','AgentReports','Contact','ContactId','MailAccountId','Imap','Smtp','Dispositions','Answers','Interactions','List','ListId','Template','mandatoryDispositionPause','Teams','MailInteractionId','Account','Owner','Tag','mail_interaction_has_tags','ThroughTags','Users','Attachments','ChatWebsiteId','restrict','IntervalId','Items','Disposition','FaxAccountId','TagId','fax_interaction_has_tags','Tags','Interaction','FaxInteractionId','team_has_fax_queues','SmsAccountId','CannedAnswer','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelMessage','openchannel_interaction_has_tags','OpenchannelInteractionId','Agent','ChatQueueId','Website','chat_interaction_has_tags','user_has_chat_interactions','ChatInteractionId','ChatOfflineMessageId','team_has_chat_queues','Members','CompanyId','OpenchannelInteractions','Company','cm_contact_has_tags','Queue','Campaign','CampaignId','OwnerId','Automation','OneAll','AutomationAllId','Any','AutomationAnyId','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','CustomReportId','Mohs','whatsapp_interaction_has_tags','AllConditions','AllCondition','TriggerAllId','Trigger','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','DefaultReportId','AnalyticMetric','MetricId','Configurations','SubjectId','Descriptions','DescriptionId','FieldId','AccountId','Subject','Description','Field','VariableId','Subjects','int_desk_configuration_has_tags','int_zendesk_configuration_has_tags','FreshdeskField','VtigerConfiguration','FreshsalesField','FromId','ToId','SessionId','ProjectId','user_has_square_projects','team_has_whatsapp_queues','TrunkBackupId','SquareProjectId','BlackLists','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FaxTransferReport','FromFaxAccountId','FromAgent','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsAccountId','CmCustomField','Queues','UserProfileSections','UserProfileResource','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','FromWhatsappAccountId','WhatsappQueueId','exports','path','sequelize','lodash','defaultsDeep','xcall','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','motion2','xC@LL1234','127.0.0.1','database','username','password','options','User','import','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','VoiceQueueReport','MemberReport','../api/memberReport/memberReport.model','Trunk','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','SmsQueue','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelQueue','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','ChatOfflineMessage','ChatQueue','../api/chatQueue/chatQueue.model','ChatProactiveAction','CmCompany','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','Interval','../api/interval/interval.model','Pause','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','Sound','../api/tag/tag.model','../api/template/template.model','../api/trigger/trigger.model','Variable','Integration','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../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','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','../api/integration/integration.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../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','SquareProject','../api/squareProject/squareProject.model','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model'];(function(_0x2bc6de,_0x15013d){var _0x42d71b=function(_0x3c025f){while(--_0x3c025f){_0x2bc6de['push'](_0x2bc6de['shift']());}};_0x42d71b(++_0x15013d);}(_0x6901,0x100));var _0x1690=function(_0x2cea71,_0x360d29){_0x2cea71=_0x2cea71-0x0;var _0x169749=_0x6901[_0x2cea71];return _0x169749;};'use strict';var path=require(_0x1690('0x0'));var config=require('../config/environment');var Sequelize=require(_0x1690('0x1'));var _=require(_0x1690('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x1690('0x1')]=_[_0x1690('0x3')](config['sequelize'],{'database':'motion2','username':_0x1690('0x4'),'password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x1690('0x5'),'dialectOptions':{'charset':_0x1690('0x6')},'logging':![],'timezone':timezone[_0x1690('0x7')](),'define':{'charset':_0x1690('0x8'),'collate':_0x1690('0x9')}}});config[_0x1690('0xa')]=_['defaultsDeep'](config[_0x1690('0xa')],{'database':_0x1690('0xb'),'username':_0x1690('0x4'),'password':_0x1690('0xc'),'options':{'host':_0x1690('0xd'),'port':0xcea,'dialect':_0x1690('0x5'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0x1690('0x7')](),'define':{'charset':_0x1690('0x8'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x1690('0x1')][_0x1690('0xe')],config[_0x1690('0x1')][_0x1690('0xf')],config[_0x1690('0x1')][_0x1690('0x10')],config[_0x1690('0x1')][_0x1690('0x11')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x1690('0xa')][_0x1690('0xe')],config['sequelizeHistory'][_0x1690('0xf')],config[_0x1690('0xa')][_0x1690('0x10')],config['sequelizeHistory']['options'])};db[_0x1690('0x12')]=db['sequelize'][_0x1690('0x13')]('../api/user/user.model');db['VoiceChanSpy']=db[_0x1690('0x1')]['import'](_0x1690('0x14'));db[_0x1690('0x15')]=db['sequelize'][_0x1690('0x13')](_0x1690('0x16'));db[_0x1690('0x17')]=db[_0x1690('0x1')]['import'](_0x1690('0x18'));db['VoiceMusicOnHold']=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x19'));db[_0x1690('0x1a')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x1b'));db[_0x1690('0x1c')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x1d'));db[_0x1690('0x1e')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x1f'));db[_0x1690('0x20')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/voiceMail/voiceMail.model');db[_0x1690('0x21')]=db[_0x1690('0x1')]['import'](_0x1690('0x22'));db[_0x1690('0x23')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/voiceCallReport/voiceCallReport.model');db[_0x1690('0x24')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x25'));db[_0x1690('0x26')]=db[_0x1690('0x1')]['import']('../api/voiceAgentReport/voiceAgentReport.model');db[_0x1690('0x27')]=db['sequelize']['import']('../api/voiceQueueReport/voiceQueueReport.model');db[_0x1690('0x28')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x29'));db[_0x1690('0x2a')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/trunk/trunk.model');db[_0x1690('0x2b')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x2c'));db[_0x1690('0x2d')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/userVoiceQueueRt/userVoiceQueueRt.model');db[_0x1690('0x2e')]=db[_0x1690('0x1')]['import'](_0x1690('0x2f'));db[_0x1690('0x30')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x31'));db[_0x1690('0x32')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/userMailQueue/userMailQueue.model');db[_0x1690('0x33')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x34'));db['UserSmsQueue']=db['sequelize'][_0x1690('0x13')](_0x1690('0x35'));db[_0x1690('0x36')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x37'));db['UserWhatsappQueue']=db[_0x1690('0x1')][_0x1690('0x13')]('../api/userWhatsappQueue/userWhatsappQueue.model');db[_0x1690('0x38')]=db['sequelize']['import'](_0x1690('0x39'));db[_0x1690('0x3a')]=db['sequelize']['import'](_0x1690('0x3b'));db[_0x1690('0x3c')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x3d'));db[_0x1690('0x3e')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/mailQueue/mailQueue.model');db[_0x1690('0x3f')]=db['sequelize'][_0x1690('0x13')](_0x1690('0x40'));db[_0x1690('0x41')]=db['sequelize'][_0x1690('0x13')](_0x1690('0x42'));db[_0x1690('0x43')]=db['sequelize'][_0x1690('0x13')](_0x1690('0x44'));db[_0x1690('0x45')]=db[_0x1690('0x1')]['import']('../api/mailApplication/mailApplication.model');db[_0x1690('0x46')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x47'));db['Dashboard']=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x48'));db[_0x1690('0x49')]=db['sequelize']['import']('../api/dashboardItem/dashboardItem.model');db[_0x1690('0x4a')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/faxAccount/faxAccount.model');db[_0x1690('0x4b')]=db[_0x1690('0x1')]['import'](_0x1690('0x4c'));db[_0x1690('0x4d')]=db['sequelize'][_0x1690('0x13')]('../api/faxInteraction/faxInteraction.model');db[_0x1690('0x4e')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x4f'));db[_0x1690('0x50')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x51'));db[_0x1690('0x52')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x53'));db[_0x1690('0x54')]=db[_0x1690('0x1')]['import']('../api/smsAccount/smsAccount.model');db[_0x1690('0x55')]=db['sequelize'][_0x1690('0x13')](_0x1690('0x56'));db[_0x1690('0x57')]=db[_0x1690('0x1')]['import'](_0x1690('0x58'));db[_0x1690('0x59')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/smsMessage/smsMessage.model');db[_0x1690('0x5a')]=db['sequelize'][_0x1690('0x13')]('../api/smsQueue/smsQueue.model');db['OpenchannelAccount']=db[_0x1690('0x1')]['import'](_0x1690('0x5b'));db[_0x1690('0x5c')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x5d'));db[_0x1690('0x5e')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/openchannelInteraction/openchannelInteraction.model');db['OpenchannelMessage']=db[_0x1690('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db[_0x1690('0x5f')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/openchannelQueue/openchannelQueue.model');db['ChatWebsite']=db['sequelize'][_0x1690('0x13')]('../api/chatWebsite/chatWebsite.model');db[_0x1690('0x60')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x61'));db[_0x1690('0x62')]=db['sequelize'][_0x1690('0x13')](_0x1690('0x63'));db[_0x1690('0x64')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x65'));db[_0x1690('0x66')]=db['sequelize']['import']('../api/chatMessage/chatMessage.model');db[_0x1690('0x67')]=db[_0x1690('0x1')]['import']('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x1690('0x68')]=db['sequelize'][_0x1690('0x13')](_0x1690('0x69'));db['ChatGroup']=db[_0x1690('0x1')][_0x1690('0x13')]('../api/chatGroup/chatGroup.model');db[_0x1690('0x6a')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/chatProactiveAction/chatProactiveAction.model');db[_0x1690('0x6b')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/cmCompany/cmCompany.model');db[_0x1690('0x6c')]=db['sequelize']['import'](_0x1690('0x6d'));db[_0x1690('0x6e')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x6f'));db[_0x1690('0x70')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/cmHopperBlack/cmHopperBlack.model');db[_0x1690('0x71')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x72'));db['CmHopperHistory']=db['sequelize'][_0x1690('0x13')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x1690('0x73')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x74'));db['CmCustomField']=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x75'));db[_0x1690('0x76')]=db['sequelize'][_0x1690('0x13')](_0x1690('0x77'));db['Automation']=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x78'));db['CannedAnswer']=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x79'));db['Disposition']=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x7a'));db[_0x1690('0x7b')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/condition/condition.model');db[_0x1690('0x7c')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x7d'));db[_0x1690('0x7e')]=db['sequelize'][_0x1690('0x13')]('../api/pause/pause.model');db['Cdr']=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x7f'));db[_0x1690('0x80')]=db['sequelize'][_0x1690('0x13')](_0x1690('0x81'));db[_0x1690('0x82')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/schedule/schedule.model');db[_0x1690('0x83')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/sound/sound.model');db['Tag']=db[_0x1690('0x1')]['import'](_0x1690('0x84'));db['Template']=db['sequelize'][_0x1690('0x13')](_0x1690('0x85'));db['Trigger']=db['sequelize'][_0x1690('0x13')](_0x1690('0x86'));db[_0x1690('0x87')]=db[_0x1690('0x1')]['import']('../api/variable/variable.model');db[_0x1690('0x88')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/integration/integration.model');db[_0x1690('0x89')]=db['sequelize'][_0x1690('0x13')](_0x1690('0x8a'));db[_0x1690('0x8b')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x8c'));db[_0x1690('0x8d')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0x1690('0x8e')]=db[_0x1690('0x1')]['import'](_0x1690('0x8f'));db['AnalyticMetric']=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x90'));db[_0x1690('0x91')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/analyticFieldReport/analyticFieldReport.model');db[_0x1690('0x92')]=db['sequelize'][_0x1690('0x13')](_0x1690('0x93'));db[_0x1690('0x94')]=db[_0x1690('0x1')]['import'](_0x1690('0x95'));db[_0x1690('0x96')]=db['sequelize']['import'](_0x1690('0x97'));db[_0x1690('0x98')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x99'));db['SugarcrmAccount']=db[_0x1690('0x1')]['import']('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x1690('0x9a')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x9b'));db[_0x1690('0x9c')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x9d'));db[_0x1690('0x9e')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x9f'));db[_0x1690('0xa0')]=db['sequelize'][_0x1690('0x13')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x1690('0xa1')]=db[_0x1690('0x1')]['import'](_0x1690('0xa2'));db[_0x1690('0xa3')]=db['sequelize']['import'](_0x1690('0xa4'));db[_0x1690('0xa5')]=db['sequelize'][_0x1690('0x13')](_0x1690('0xa6'));db[_0x1690('0xa7')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xa8'));db[_0x1690('0xa9')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0x1690('0xaa')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xab'));db[_0x1690('0xac')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xad'));db[_0x1690('0xae')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xaf'));db[_0x1690('0xb0')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xb1'));db['FreshdeskField']=db[_0x1690('0x1')]['import'](_0x1690('0xb2'));db[_0x1690('0xb3')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xb4'));db['VtigerConfiguration']=db[_0x1690('0x1')]['import'](_0x1690('0xb5'));db[_0x1690('0xb6')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xb7'));db[_0x1690('0xb8')]=db['sequelize']['import']('../api/intServicenowAccount/intServicenowAccount.model');db[_0x1690('0xb9')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xba'));db[_0x1690('0xbb')]=db[_0x1690('0x1')]['import'](_0x1690('0xbc'));db[_0x1690('0xbd')]=db['sequelize'][_0x1690('0x13')](_0x1690('0xbe'));db[_0x1690('0xbf')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xc0'));db[_0x1690('0xc1')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xc2'));db[_0x1690('0xc3')]=db[_0x1690('0x1')]['import'](_0x1690('0xc4'));db[_0x1690('0xc5')]=db['sequelize'][_0x1690('0x13')](_0x1690('0xc6'));db['FreshsalesField']=db[_0x1690('0x1')][_0x1690('0x13')]('../api/intFreshsalesField/intFreshsalesField.model');db[_0x1690('0x88')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xc7'));db[_0x1690('0xc8')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xc9'));db[_0x1690('0xca')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xcb'));db[_0x1690('0xcc')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x1690('0xcd')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xce'));db[_0x1690('0xcf')]=db[_0x1690('0x1')]['import']('../api/jscriptyQuestionReport/jscriptyQuestionReport.model');db['JscriptySessionReport']=db['sequelize'][_0x1690('0x13')](_0x1690('0xd0'));db[_0x1690('0xd1')]=db['sequelize'][_0x1690('0x13')](_0x1690('0xd2'));db[_0x1690('0xd3')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xd4'));db[_0x1690('0xd5')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xd6'));db[_0x1690('0xd7')]=db[_0x1690('0x1')]['import'](_0x1690('0xd8'));db[_0x1690('0xd9')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/setting/setting.model');db[_0x1690('0xda')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xdb'));db[_0x1690('0xdc')]=db[_0x1690('0x1')]['import'](_0x1690('0xdd'));db['SquareRecording']=db[_0x1690('0x1')]['import'](_0x1690('0xde'));db[_0x1690('0xdf')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xe0'));db[_0x1690('0xe1')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xe2'));db[_0x1690('0xe3')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xe4'));db['Campaign']=db['sequelize'][_0x1690('0x13')](_0x1690('0xe5'));db[_0x1690('0xe6')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xe7'));db[_0x1690('0xe8')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xe9'));db[_0x1690('0xea')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xeb'));db[_0x1690('0xec')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xed'));db[_0x1690('0xee')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xef'));db['FaxTransferReport']=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xf0'));db[_0x1690('0xf1')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x1690('0xf2')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xf3'));db[_0x1690('0xf4')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xf5'));db[_0x1690('0xf6')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xf7'));db[_0x1690('0xf8')]=db['sequelize'][_0x1690('0x13')](_0x1690('0xf9'));db[_0x1690('0xfa')]=db['sequelize'][_0x1690('0x13')](_0x1690('0xfb'));db['UserProfileResource']=db[_0x1690('0x1')][_0x1690('0x13')]('../api/userProfileResource/userProfileResource.model');db[_0x1690('0xfc')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/userNotification/userNotification.model');db[_0x1690('0xfd')]=db[_0x1690('0x1')][_0x1690('0x13')]('../api/whatsappAccount/whatsappAccount.model');db[_0x1690('0xfe')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0xff'));db[_0x1690('0x100')]=db['sequelize']['import']('../api/whatsappInteraction/whatsappInteraction.model');db[_0x1690('0x101')]=db['sequelize'][_0x1690('0x13')]('../api/whatsappMessage/whatsappMessage.model');db[_0x1690('0x102')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x103'));db[_0x1690('0x104')]=db[_0x1690('0x1')]['import'](_0x1690('0x105'));db[_0x1690('0x106')]=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x107'));db[_0x1690('0x108')]=db[_0x1690('0x1')]['import']('../api/cloudProvider/cloudProvider.model');db['Realtime']=db[_0x1690('0x1')][_0x1690('0x13')](_0x1690('0x109'));db[_0x1690('0x10a')]=db[_0x1690('0x1')]['import'](_0x1690('0x10b'));db[_0x1690('0x12')][_0x1690('0x10c')](db[_0x1690('0x20')],{'as':_0x1690('0x20'),'onDelete':'cascade','foreignKey':_0x1690('0x10d')});db[_0x1690('0x12')][_0x1690('0x10e')](db[_0x1690('0x1c')],{'as':_0x1690('0x10f'),'foreignKey':'UserId'});db[_0x1690('0x12')][_0x1690('0x10e')](db[_0x1690('0x2d')],{'as':_0x1690('0x110'),'foreignKey':_0x1690('0x10d')});db['User'][_0x1690('0x10e')](db[_0x1690('0x17')],{'as':_0x1690('0x111'),'onDelete':'cascade','hooks':!![]});db['User'][_0x1690('0x10e')](db[_0x1690('0x71')],{'as':_0x1690('0x112'),'foreignKey':'UserId'});db['User'][_0x1690('0x10e')](db['CmHopperHistory'],{'as':_0x1690('0x113'),'foreignKey':_0x1690('0x10d')});db[_0x1690('0x12')]['hasMany'](db[_0x1690('0x73')],{'as':'ReportAgentPreview','foreignKey':_0x1690('0x10d')});db['User'][_0x1690('0x10e')](db[_0x1690('0x5e')],{'as':'OpenchannelInteractions','foreignKey':'UserId'});db[_0x1690('0x12')][_0x1690('0x10e')](db[_0x1690('0x64')],{'as':_0x1690('0x114'),'foreignKey':_0x1690('0x10d')});db[_0x1690('0x12')]['hasMany'](db[_0x1690('0x57')],{'as':_0x1690('0x115'),'foreignKey':_0x1690('0x10d')});db[_0x1690('0x12')][_0x1690('0x10e')](db[_0x1690('0x4d')],{'as':_0x1690('0x116'),'foreignKey':_0x1690('0x10d')});db[_0x1690('0x12')][_0x1690('0x10e')](db[_0x1690('0x41')],{'as':_0x1690('0x117'),'foreignKey':_0x1690('0x10d')});db[_0x1690('0x12')][_0x1690('0x10e')](db[_0x1690('0x100')],{'as':'WhatsappInteractions','foreignKey':_0x1690('0x10d')});db[_0x1690('0x12')][_0x1690('0x10e')](db[_0x1690('0xfc')],{'as':_0x1690('0x118'),'foreignKey':'SenderId'});db[_0x1690('0x12')][_0x1690('0x119')](db['UserProfile'],{'as':'UserProfile','foreignKey':_0x1690('0x11a')});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0x11c')],{'as':_0x1690('0x11d'),'through':_0x1690('0x11e')});db['User'][_0x1690('0x11b')](db[_0x1690('0x6c')],{'as':_0x1690('0x11f'),'through':_0x1690('0x120')});db[_0x1690('0x12')]['belongsToMany'](db['CmList'],{'as':'Lists','through':_0x1690('0x121')});db[_0x1690('0x12')][_0x1690('0x11b')](db['Team'],{'through':_0x1690('0x122')});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0x41')],{'as':_0x1690('0x117'),'through':_0x1690('0x123')});db[_0x1690('0x12')]['belongsToMany'](db[_0x1690('0x64')],{'as':_0x1690('0x114'),'through':'user_has_chat_interactions'});db['User'][_0x1690('0x11b')](db[_0x1690('0x4d')],{'as':_0x1690('0x116'),'through':'user_has_fax_interactions'});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0x57')],{'as':_0x1690('0x115'),'through':_0x1690('0x124')});db[_0x1690('0x12')][_0x1690('0x11b')](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','through':_0x1690('0x125')});db['User'][_0x1690('0x11b')](db[_0x1690('0x100')],{'as':'WhatsappInteractions','through':_0x1690('0x126')});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0x1a')],{'as':_0x1690('0x127'),'through':'UserVoiceQueue','required':![]});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0x3e')],{'as':_0x1690('0x128'),'through':_0x1690('0x32'),'required':![]});db['User'][_0x1690('0x11b')](db[_0x1690('0x68')],{'as':_0x1690('0x129'),'through':_0x1690('0x30'),'required':![],'hooks':!![]});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0x50')],{'as':_0x1690('0x12a'),'through':_0x1690('0x33'),'required':![]});db['User'][_0x1690('0x11b')](db[_0x1690('0x5a')],{'as':_0x1690('0x12b'),'through':'UserSmsQueue','required':![]});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0x5f')],{'as':_0x1690('0x12c'),'through':'UserOpenchannelQueue','required':![]});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0x106')],{'as':_0x1690('0x12d'),'through':_0x1690('0x12e'),'required':![]});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0xf4')],{'through':_0x1690('0x121')});db['User'][_0x1690('0x11b')](db[_0x1690('0xf6')],{'as':_0x1690('0x12f'),'through':_0x1690('0x130'),'required':![]});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0x131')],{'as':_0x1690('0x132'),'through':_0x1690('0x133')});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0x4a')],{'as':_0x1690('0x134'),'through':_0x1690('0x135')});db['User']['belongsToMany'](db[_0x1690('0x3c')],{'as':_0x1690('0x136'),'through':_0x1690('0x137')});db[_0x1690('0x12')][_0x1690('0x11b')](db[_0x1690('0x138')],{'as':'OpenchannelAccounts','through':_0x1690('0x139')});db[_0x1690('0x12')][_0x1690('0x11b')](db['SmsAccount'],{'as':_0x1690('0x13a'),'through':_0x1690('0x13b')});db['User'][_0x1690('0x11b')](db[_0x1690('0xfd')],{'as':_0x1690('0x13c'),'through':_0x1690('0x13d')});db['User']['belongsToMany'](db['SquareProject'],{'as':'SquareProjects','through':'user_has_square_projects'});db[_0x1690('0x13e')]['hasMany'](db[_0x1690('0x17')],{'as':_0x1690('0x13f'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x141')});db[_0x1690('0x15')][_0x1690('0x10e')](db[_0x1690('0x17')],{'onDelete':_0x1690('0x140')});db['VoiceExtension'][_0x1690('0x10e')](db[_0x1690('0x17')],{'as':_0x1690('0x142'),'onDelete':_0x1690('0x140')});db[_0x1690('0x143')][_0x1690('0x11b')](db[_0x1690('0x83')],{'as':_0x1690('0x144'),'through':_0x1690('0x145')});db[_0x1690('0x1a')][_0x1690('0x10e')](db['UserVoiceQueueRt'],{'as':'Members','foreignKey':'VoiceQueueId'});db[_0x1690('0x1a')][_0x1690('0x10e')](db[_0x1690('0x6e')],{'as':_0x1690('0x146'),'foreignKey':_0x1690('0x147')});db[_0x1690('0x1a')]['hasMany'](db[_0x1690('0x71')],{'as':'HopperFinals','foreignKey':_0x1690('0x147')});db[_0x1690('0x1a')][_0x1690('0x10e')](db[_0x1690('0x148')],{'as':_0x1690('0x149'),'foreignKey':_0x1690('0x147')});db[_0x1690('0x1a')][_0x1690('0x10e')](db['ReportAgentPreview'],{'as':_0x1690('0x73'),'foreignKey':_0x1690('0x147')});db[_0x1690('0x1a')][_0x1690('0x10e')](db[_0x1690('0x70')],{'as':_0x1690('0x14a'),'foreignKey':_0x1690('0x147')});db[_0x1690('0x1a')][_0x1690('0x10e')](db[_0x1690('0x14b')],{'as':_0x1690('0x14c'),'foreignKey':_0x1690('0x147')});db[_0x1690('0x1a')]['belongsTo'](db['Trunk'],{'as':_0x1690('0x2a'),'foreignKey':_0x1690('0x14d')});db[_0x1690('0x1a')]['belongsTo'](db[_0x1690('0x2a')],{'as':_0x1690('0x14e'),'foreignKey':'TrunkBackupId'});db[_0x1690('0x1a')]['belongsTo'](db[_0x1690('0x7c')],{'as':_0x1690('0x7c'),'foreignKey':'IntervalId'});db['VoiceQueue'][_0x1690('0x119')](db[_0x1690('0x7e')],{'as':'mandatoryDispositionPause','foreignKey':_0x1690('0x14f')});db[_0x1690('0x1a')][_0x1690('0x11b')](db['CmList'],{'as':_0x1690('0x150'),'through':_0x1690('0x151')});db[_0x1690('0x1a')]['belongsToMany'](db['User'],{'as':_0x1690('0x152'),'through':_0x1690('0x2e')});db[_0x1690('0x1a')][_0x1690('0x11b')](db[_0x1690('0xe1')],{'as':'Teams','through':_0x1690('0x10a')});db[_0x1690('0x1a')][_0x1690('0x11b')](db[_0x1690('0xf4')],{'as':'BlackLists','through':_0x1690('0x153')});db[_0x1690('0x1c')]['belongsTo'](db[_0x1690('0x12')],{'as':_0x1690('0x12'),'foreignKey':_0x1690('0x10d')});db[_0x1690('0x1e')][_0x1690('0x119')](db[_0x1690('0x12')],{'as':'User','foreignKey':_0x1690('0x10d')});db[_0x1690('0x20')]['hasMany'](db[_0x1690('0x21')],{'as':_0x1690('0x154'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x155'),'sourceKey':'mailbox'});db[_0x1690('0x21')][_0x1690('0x119')](db['VoiceMail'],{'foreignKey':_0x1690('0x155'),'targetKey':_0x1690('0x156')});db[_0x1690('0x23')][_0x1690('0x10e')](db[_0x1690('0x27')],{'as':_0x1690('0x157'),'foreignKey':_0x1690('0x158'),'constraints':![]});db[_0x1690('0x23')][_0x1690('0x10e')](db['VoiceAgentReport'],{'as':_0x1690('0x159'),'foreignKey':_0x1690('0x158'),'constraints':![]});db[_0x1690('0x23')]['belongsTo'](db[_0x1690('0x12')],{'as':_0x1690('0x12'),'foreignKey':_0x1690('0x10d')});db['VoiceCallReport'][_0x1690('0x119')](db[_0x1690('0x6c')],{'as':_0x1690('0x15a'),'foreignKey':_0x1690('0x15b')});db[_0x1690('0x38')][_0x1690('0x119')](db[_0x1690('0x3c')],{'as':'MailAccount','foreignKey':_0x1690('0x15c')});db[_0x1690('0x3a')][_0x1690('0x119')](db[_0x1690('0x3c')],{'as':_0x1690('0x3c'),'foreignKey':_0x1690('0x15c')});db[_0x1690('0x3c')][_0x1690('0x10c')](db[_0x1690('0x38')],{'as':_0x1690('0x15d'),'onDelete':_0x1690('0x140')});db['MailAccount'][_0x1690('0x10c')](db[_0x1690('0x3a')],{'as':_0x1690('0x15e'),'onDelete':'cascade'});db[_0x1690('0x3c')][_0x1690('0x10e')](db['Disposition'],{'as':_0x1690('0x15f'),'foreignKey':_0x1690('0x15c')});db[_0x1690('0x3c')][_0x1690('0x10e')](db['CannedAnswer'],{'as':_0x1690('0x160'),'foreignKey':_0x1690('0x15c')});db[_0x1690('0x3c')][_0x1690('0x10e')](db[_0x1690('0x43')],{'as':_0x1690('0x154'),'foreignKey':_0x1690('0x15c')});db['MailAccount']['hasMany'](db[_0x1690('0x41')],{'as':_0x1690('0x161')});db[_0x1690('0x3c')][_0x1690('0x10e')](db[_0x1690('0x45')],{'as':_0x1690('0x142')});db[_0x1690('0x3c')][_0x1690('0x119')](db[_0x1690('0xf4')],{'as':_0x1690('0x162'),'foreignKey':_0x1690('0x163')});db[_0x1690('0x3c')][_0x1690('0x119')](db[_0x1690('0x164')],{'as':_0x1690('0x164'),'foreignKey':'TemplateId'});db[_0x1690('0x3c')]['belongsTo'](db[_0x1690('0x7e')],{'as':_0x1690('0x165'),'foreignKey':_0x1690('0x14f')});db[_0x1690('0x3c')][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':_0x1690('0x152'),'through':_0x1690('0x137')});db[_0x1690('0x3e')]['belongsToMany'](db[_0x1690('0x12')],{'as':_0x1690('0x152'),'through':'UserMailQueue'});db[_0x1690('0x3e')]['belongsToMany'](db['Team'],{'through':'team_has_mail_queues','as':_0x1690('0x166')});db[_0x1690('0x41')][_0x1690('0x10e')](db[_0x1690('0x43')],{'as':_0x1690('0x154'),'onDelete':'cascade','foreignKey':_0x1690('0x167')});db[_0x1690('0x41')][_0x1690('0x119')](db[_0x1690('0x3c')],{'as':_0x1690('0x168'),'foreignKey':'MailAccountId'});db[_0x1690('0x41')]['belongsTo'](db[_0x1690('0x6c')],{'as':_0x1690('0x15a'),'foreignKey':_0x1690('0x15b')});db[_0x1690('0x41')][_0x1690('0x119')](db[_0x1690('0x12')],{'as':_0x1690('0x169'),'foreignKey':_0x1690('0x10d')});db[_0x1690('0x41')][_0x1690('0x11b')](db[_0x1690('0x16a')],{'through':'mail_interaction_has_tags','as':'Tags'});db['MailInteraction'][_0x1690('0x11b')](db[_0x1690('0x16a')],{'through':_0x1690('0x16b'),'as':_0x1690('0x16c')});db[_0x1690('0x41')]['belongsToMany'](db[_0x1690('0x12')],{'as':_0x1690('0x16d'),'through':_0x1690('0x123'),'foreignKey':_0x1690('0x167')});db[_0x1690('0x43')][_0x1690('0x10e')](db['Attachment'],{'as':_0x1690('0x16e'),'onDelete':_0x1690('0x140')});db[_0x1690('0x43')][_0x1690('0x119')](db[_0x1690('0x12')],{'as':_0x1690('0x12')});db[_0x1690('0x43')][_0x1690('0x119')](db[_0x1690('0x6c')],{'onDelete':_0x1690('0x140'),'as':'Contact'});db[_0x1690('0x43')][_0x1690('0x119')](db[_0x1690('0x41')],{'as':'Interaction','foreignKey':'MailInteractionId'});db[_0x1690('0x43')][_0x1690('0x119')](db[_0x1690('0x3c')],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x15c')});db['MailMessage'][_0x1690('0x119')](db[_0x1690('0x131')],{'as':_0x1690('0x131'),'foreignKey':_0x1690('0x16f')});db[_0x1690('0x43')][_0x1690('0x119')](db[_0x1690('0x67')],{'as':_0x1690('0x67'),'foreignKey':'ChatOfflineMessageId'});db[_0x1690('0x45')]['belongsTo'](db[_0x1690('0x12')],{'onDelete':'restrict'});db[_0x1690('0x45')]['belongsTo'](db[_0x1690('0x3e')],{'onDelete':_0x1690('0x170')});db[_0x1690('0x45')][_0x1690('0x119')](db['MailAccount'],{'onDelete':'restrict'});db['MailApplication'][_0x1690('0x119')](db['Interval'],{'onDelete':_0x1690('0x170'),'foreignKey':_0x1690('0x171')});db[_0x1690('0x45')][_0x1690('0x119')](db[_0x1690('0x16a')],{'onDelete':_0x1690('0x170'),'foreignKey':'TagId'});db[_0x1690('0x46')][_0x1690('0x119')](db['MailAccount'],{});db[_0x1690('0x46')][_0x1690('0x119')](db['CmList'],{'as':'List','foreignKey':'ListId'});db['MailQueueReport']['belongsTo'](db['CmContact'],{'as':_0x1690('0x15a'),'foreignKey':_0x1690('0x15b')});db['MailQueueReport']['belongsTo'](db[_0x1690('0x41')],{});db[_0x1690('0x46')]['belongsTo'](db[_0x1690('0x43')],{});db['MailQueueReport']['belongsTo'](db[_0x1690('0x12')],{});db[_0x1690('0x46')][_0x1690('0x119')](db[_0x1690('0x3e')],{});db['Dashboard'][_0x1690('0x10e')](db[_0x1690('0x49')],{'as':_0x1690('0x172'),'onDelete':_0x1690('0x140')});db[_0x1690('0x4a')][_0x1690('0x10e')](db[_0x1690('0x173')],{'as':_0x1690('0x15f'),'foreignKey':_0x1690('0x174')});db[_0x1690('0x4a')][_0x1690('0x10e')](db['CannedAnswer'],{'as':_0x1690('0x160'),'foreignKey':'FaxAccountId'});db[_0x1690('0x4a')]['hasMany'](db[_0x1690('0x4d')],{'as':'Interactions'});db[_0x1690('0x4a')]['hasMany'](db[_0x1690('0x4b')],{'as':_0x1690('0x142')});db['FaxAccount'][_0x1690('0x10e')](db['VoiceExtension'],{'as':'Exntensions','onDelete':_0x1690('0x140')});db[_0x1690('0x4a')][_0x1690('0x10e')](db['FaxMessage'],{'as':'Messages'});db[_0x1690('0x4a')]['belongsTo'](db[_0x1690('0x2a')],{'as':'Trunk'});db[_0x1690('0x4a')][_0x1690('0x119')](db[_0x1690('0xf4')],{'as':_0x1690('0x162'),'foreignKey':'ListId'});db[_0x1690('0x4a')][_0x1690('0x119')](db['Pause'],{'as':_0x1690('0x165'),'foreignKey':_0x1690('0x14f')});db[_0x1690('0x4a')][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':'Agents','through':'user_has_fax_accounts'});db[_0x1690('0x4b')][_0x1690('0x119')](db['User'],{'onDelete':_0x1690('0x170')});db[_0x1690('0x4b')]['belongsTo'](db['FaxQueue'],{'onDelete':_0x1690('0x170')});db[_0x1690('0x4b')][_0x1690('0x119')](db[_0x1690('0x4a')],{'onDelete':_0x1690('0x170')});db[_0x1690('0x4b')][_0x1690('0x119')](db[_0x1690('0x16a')],{'onDelete':_0x1690('0x170'),'foreignKey':_0x1690('0x175')});db[_0x1690('0x4d')][_0x1690('0x10e')](db[_0x1690('0x4e')],{'as':_0x1690('0x154'),'onDelete':_0x1690('0x140'),'foreignKey':'FaxInteractionId'});db['FaxInteraction'][_0x1690('0x119')](db['FaxAccount'],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x174')});db['FaxInteraction']['belongsTo'](db[_0x1690('0x6c')],{'as':_0x1690('0x15a'),'foreignKey':_0x1690('0x15b')});db[_0x1690('0x4d')]['belongsTo'](db[_0x1690('0x12')],{'as':'Owner','foreignKey':_0x1690('0x10d')});db['FaxInteraction'][_0x1690('0x11b')](db[_0x1690('0x16a')],{'through':_0x1690('0x176'),'as':_0x1690('0x177')});db[_0x1690('0x4d')][_0x1690('0x11b')](db['Tag'],{'through':'fax_interaction_has_tags','as':_0x1690('0x16c')});db[_0x1690('0x4d')]['belongsToMany'](db['User'],{'as':_0x1690('0x16d'),'through':'user_has_fax_interactions','foreignKey':'FaxInteractionId'});db['FaxMessage']['belongsTo'](db[_0x1690('0x12')],{'onDelete':_0x1690('0x140'),'as':_0x1690('0x12')});db[_0x1690('0x4e')]['belongsTo'](db[_0x1690('0x4d')],{'as':_0x1690('0x178'),'foreignKey':_0x1690('0x179')});db[_0x1690('0x4e')][_0x1690('0x119')](db[_0x1690('0x6c')],{'onDelete':'cascade','as':'Contact'});db['FaxMessage']['belongsTo'](db[_0x1690('0xe8')],{'as':_0x1690('0xe8'),'foreignKey':'AttachmentId'});db[_0x1690('0x4e')][_0x1690('0x119')](db[_0x1690('0x4a')],{'as':'Account','foreignKey':'FaxAccountId'});db[_0x1690('0x50')][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':_0x1690('0x152'),'through':'UserFaxQueue'});db[_0x1690('0x50')]['belongsToMany'](db[_0x1690('0xe1')],{'through':_0x1690('0x17a'),'as':'Teams'});db[_0x1690('0x52')][_0x1690('0x119')](db[_0x1690('0x4a')],{});db[_0x1690('0x52')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x1690('0x52')][_0x1690('0x119')](db[_0x1690('0x6c')],{'as':'Contact','foreignKey':_0x1690('0x15b')});db[_0x1690('0x52')]['belongsTo'](db[_0x1690('0x4d')],{});db['FaxQueueReport'][_0x1690('0x119')](db['FaxMessage'],{});db['FaxQueueReport'][_0x1690('0x119')](db[_0x1690('0x12')],{});db['FaxQueueReport'][_0x1690('0x119')](db[_0x1690('0x50')],{});db[_0x1690('0x54')][_0x1690('0x10e')](db[_0x1690('0x173')],{'as':_0x1690('0x15f'),'foreignKey':_0x1690('0x17b')});db[_0x1690('0x54')][_0x1690('0x10e')](db[_0x1690('0x17c')],{'as':_0x1690('0x160'),'foreignKey':'SmsAccountId'});db[_0x1690('0x54')][_0x1690('0x10e')](db[_0x1690('0x59')],{'as':_0x1690('0x154'),'foreignKey':'SmsAccountId'});db[_0x1690('0x54')][_0x1690('0x10e')](db[_0x1690('0x57')],{'as':_0x1690('0x161')});db[_0x1690('0x54')][_0x1690('0x10e')](db[_0x1690('0x55')],{'as':_0x1690('0x142')});db[_0x1690('0x54')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x1690('0x54')][_0x1690('0x119')](db[_0x1690('0x7e')],{'as':_0x1690('0x165'),'foreignKey':_0x1690('0x14f')});db[_0x1690('0x54')][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':'Agents','through':'user_has_sms_accounts'});db[_0x1690('0x55')][_0x1690('0x119')](db['User'],{'onDelete':'restrict'});db[_0x1690('0x55')][_0x1690('0x119')](db[_0x1690('0x5a')],{'onDelete':_0x1690('0x170')});db[_0x1690('0x55')][_0x1690('0x119')](db[_0x1690('0x54')],{'onDelete':'restrict'});db[_0x1690('0x55')][_0x1690('0x119')](db[_0x1690('0x7c')],{'onDelete':_0x1690('0x170'),'foreignKey':_0x1690('0x171')});db[_0x1690('0x55')][_0x1690('0x119')](db[_0x1690('0x16a')],{'onDelete':_0x1690('0x170'),'foreignKey':_0x1690('0x175')});db[_0x1690('0x57')][_0x1690('0x10e')](db[_0x1690('0x59')],{'as':_0x1690('0x154'),'onDelete':'cascade','foreignKey':_0x1690('0x17d')});db[_0x1690('0x57')][_0x1690('0x119')](db[_0x1690('0x54')],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x17b')});db[_0x1690('0x57')][_0x1690('0x119')](db['CmContact'],{'as':_0x1690('0x15a'),'foreignKey':_0x1690('0x15b')});db[_0x1690('0x57')][_0x1690('0x119')](db[_0x1690('0x12')],{'as':_0x1690('0x169'),'foreignKey':'UserId'});db['SmsInteraction'][_0x1690('0x11b')](db[_0x1690('0x16a')],{'through':_0x1690('0x17e'),'as':'Tags'});db[_0x1690('0x57')][_0x1690('0x11b')](db['Tag'],{'through':_0x1690('0x17e'),'as':_0x1690('0x16c')});db[_0x1690('0x57')]['belongsToMany'](db['User'],{'as':_0x1690('0x16d'),'through':_0x1690('0x124'),'foreignKey':_0x1690('0x17d')});db[_0x1690('0x59')][_0x1690('0x119')](db[_0x1690('0x12')],{'as':_0x1690('0x12')});db['SmsMessage'][_0x1690('0x119')](db[_0x1690('0x6c')],{'onDelete':_0x1690('0x140'),'as':_0x1690('0x15a')});db['SmsMessage'][_0x1690('0x119')](db['SmsInteraction'],{'onDelete':_0x1690('0x140'),'as':_0x1690('0x178'),'foreignKey':_0x1690('0x17d')});db['SmsMessage'][_0x1690('0x119')](db[_0x1690('0x54')],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x17b')});db[_0x1690('0x5a')][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':_0x1690('0x152'),'through':'UserSmsQueue','foreignKey':_0x1690('0x17f')});db['SmsQueue']['belongsToMany'](db[_0x1690('0xe1')],{'through':_0x1690('0x180'),'as':_0x1690('0x166')});db[_0x1690('0x138')][_0x1690('0x10e')](db['Disposition'],{'as':_0x1690('0x15f'),'foreignKey':_0x1690('0x181')});db[_0x1690('0x138')][_0x1690('0x10e')](db[_0x1690('0x17c')],{'as':_0x1690('0x160'),'foreignKey':_0x1690('0x181')});db[_0x1690('0x138')][_0x1690('0x10e')](db['OpenchannelInteraction'],{'as':_0x1690('0x161'),'foreignKey':_0x1690('0x181')});db[_0x1690('0x138')][_0x1690('0x10e')](db[_0x1690('0x182')],{'as':_0x1690('0x154'),'foreignKey':_0x1690('0x181')});db['OpenchannelAccount'][_0x1690('0x10e')](db[_0x1690('0x5c')],{'as':_0x1690('0x142'),'foreignKey':_0x1690('0x181')});db[_0x1690('0x138')]['belongsTo'](db['CmList'],{'as':_0x1690('0x162'),'foreignKey':_0x1690('0x163')});db[_0x1690('0x138')][_0x1690('0x119')](db['Pause'],{'as':_0x1690('0x165'),'foreignKey':_0x1690('0x14f')});db[_0x1690('0x138')][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':_0x1690('0x152'),'through':_0x1690('0x139')});db['OpenchannelApplication'][_0x1690('0x119')](db['User'],{'onDelete':'restrict'});db['OpenchannelApplication'][_0x1690('0x119')](db[_0x1690('0x5f')],{'onDelete':_0x1690('0x170'),'foreignKey':'OpenchannelQueueId'});db[_0x1690('0x5c')][_0x1690('0x119')](db[_0x1690('0x138')],{'onDelete':_0x1690('0x170'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelApplication']['belongsTo'](db['Interval'],{'onDelete':'restrict','foreignKey':_0x1690('0x171')});db[_0x1690('0x5c')]['belongsTo'](db[_0x1690('0x16a')],{'onDelete':_0x1690('0x170'),'foreignKey':_0x1690('0x175')});db[_0x1690('0x5e')]['hasMany'](db[_0x1690('0x182')],{'as':_0x1690('0x154'),'onDelete':_0x1690('0x140'),'foreignKey':'OpenchannelInteractionId'});db[_0x1690('0x5e')][_0x1690('0x119')](db[_0x1690('0x138')],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x181')});db[_0x1690('0x5e')][_0x1690('0x119')](db[_0x1690('0x6c')],{'as':'Contact','foreignKey':_0x1690('0x15b')});db['OpenchannelInteraction'][_0x1690('0x119')](db[_0x1690('0x12')],{'as':_0x1690('0x169'),'foreignKey':'UserId'});db[_0x1690('0x5e')]['belongsToMany'](db[_0x1690('0x16a')],{'through':_0x1690('0x183'),'as':_0x1690('0x177')});db['OpenchannelInteraction'][_0x1690('0x11b')](db[_0x1690('0x16a')],{'through':'openchannel_interaction_has_tags','as':_0x1690('0x16c')});db['OpenchannelInteraction'][_0x1690('0x11b')](db['User'],{'as':_0x1690('0x16d'),'through':_0x1690('0x125'),'foreignKey':_0x1690('0x184')});db['OpenchannelMessage'][_0x1690('0x119')](db[_0x1690('0x12')],{'onDelete':_0x1690('0x140'),'as':_0x1690('0x12')});db[_0x1690('0x182')]['belongsTo'](db[_0x1690('0x6c')],{'onDelete':'cascade','as':'Contact'});db[_0x1690('0x182')]['belongsTo'](db[_0x1690('0x5e')],{'onDelete':'cascade','as':_0x1690('0x178'),'foreignKey':_0x1690('0x184')});db['OpenchannelMessage'][_0x1690('0x119')](db['Attachment'],{'as':_0x1690('0xe8'),'foreignKey':'AttachmentId'});db[_0x1690('0x182')]['belongsTo'](db[_0x1690('0x138')],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x181')});db['OpenchannelQueue'][_0x1690('0x11b')](db['User'],{'as':_0x1690('0x152'),'through':_0x1690('0x36'),'foreignKey':'OpenchannelQueueId'});db['OpenchannelQueue'][_0x1690('0x11b')](db[_0x1690('0xe1')],{'through':'team_has_openchannel_queues','as':'Teams'});db[_0x1690('0x131')][_0x1690('0x10e')](db['Disposition'],{'as':_0x1690('0x15f'),'foreignKey':'ChatWebsiteId'});db['ChatWebsite'][_0x1690('0x10e')](db[_0x1690('0x17c')],{'as':_0x1690('0x160'),'foreignKey':_0x1690('0x16f')});db[_0x1690('0x131')][_0x1690('0x10e')](db[_0x1690('0x6a')],{'as':'ProactiveActions'});db[_0x1690('0x131')][_0x1690('0x10e')](db[_0x1690('0x64')],{'as':'Interactions'});db[_0x1690('0x131')]['hasMany'](db[_0x1690('0x62')],{'as':_0x1690('0x142')});db[_0x1690('0x131')][_0x1690('0x10e')](db['ChatMessage'],{'as':_0x1690('0x154')});db[_0x1690('0x131')]['belongsTo'](db[_0x1690('0xf4')],{'as':_0x1690('0x162'),'foreignKey':'ListId'});db[_0x1690('0x131')][_0x1690('0x119')](db[_0x1690('0x7c')],{'as':_0x1690('0x7c'),'foreignKey':'IntervalId'});db[_0x1690('0x131')][_0x1690('0x119')](db[_0x1690('0x3c')],{'as':'MailAccount','foreignKey':_0x1690('0x15c')});db[_0x1690('0x131')][_0x1690('0x119')](db[_0x1690('0x7e')],{'as':_0x1690('0x165'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x1690('0x131')][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':_0x1690('0x152'),'through':_0x1690('0x133')});db[_0x1690('0x60')][_0x1690('0x119')](db['OpenchannelAccount'],{});db[_0x1690('0x60')][_0x1690('0x119')](db['CmList'],{'as':_0x1690('0x162'),'foreignKey':_0x1690('0x163')});db['OpenchannelQueueReport']['belongsTo'](db[_0x1690('0x6c')],{'as':_0x1690('0x15a'),'foreignKey':_0x1690('0x15b')});db[_0x1690('0x60')][_0x1690('0x119')](db['OpenchannelInteraction'],{});db['OpenchannelQueueReport'][_0x1690('0x119')](db[_0x1690('0x182')],{});db[_0x1690('0x60')][_0x1690('0x119')](db[_0x1690('0x12')],{});db['OpenchannelQueueReport']['belongsTo'](db[_0x1690('0x5f')],{});db[_0x1690('0x62')][_0x1690('0x119')](db[_0x1690('0x12')],{'as':_0x1690('0x185'),'foreignKey':_0x1690('0x10d'),'onDelete':_0x1690('0x170')});db[_0x1690('0x62')][_0x1690('0x119')](db['ChatQueue'],{'as':'Queue','foreignKey':_0x1690('0x186'),'onDelete':_0x1690('0x170')});db[_0x1690('0x62')]['belongsTo'](db[_0x1690('0x131')],{'as':_0x1690('0x187'),'foreignKey':'ChatWebsiteId','onDelete':_0x1690('0x170')});db[_0x1690('0x62')]['belongsTo'](db[_0x1690('0x16a')],{'onDelete':_0x1690('0x170'),'foreignKey':_0x1690('0x175')});db[_0x1690('0x64')][_0x1690('0x10e')](db[_0x1690('0x66')],{'as':_0x1690('0x154'),'onDelete':'cascade','foreignKey':'ChatInteractionId'});db[_0x1690('0x64')][_0x1690('0x119')](db[_0x1690('0x131')],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x16f')});db[_0x1690('0x64')][_0x1690('0x119')](db[_0x1690('0x6c')],{'as':_0x1690('0x15a'),'foreignKey':'ContactId'});db[_0x1690('0x64')][_0x1690('0x119')](db[_0x1690('0x12')],{'as':_0x1690('0x169'),'foreignKey':_0x1690('0x10d')});db[_0x1690('0x64')][_0x1690('0x11b')](db[_0x1690('0x16a')],{'through':'chat_interaction_has_tags','as':_0x1690('0x177')});db[_0x1690('0x64')][_0x1690('0x11b')](db[_0x1690('0x16a')],{'through':_0x1690('0x188'),'as':_0x1690('0x16c')});db['ChatInteraction'][_0x1690('0x11b')](db['User'],{'as':_0x1690('0x16d'),'through':_0x1690('0x189'),'foreignKey':_0x1690('0x18a')});db[_0x1690('0x66')]['belongsTo'](db['User'],{'onDelete':_0x1690('0x140'),'as':_0x1690('0x12')});db[_0x1690('0x66')][_0x1690('0x119')](db[_0x1690('0x6c')],{'onDelete':'cascade','as':_0x1690('0x15a'),'foreignKey':_0x1690('0x15b')});db[_0x1690('0x66')][_0x1690('0x119')](db[_0x1690('0x64')],{'onDelete':_0x1690('0x140'),'as':_0x1690('0x178'),'foreignKey':_0x1690('0x18a')});db['ChatMessage'][_0x1690('0x119')](db[_0x1690('0xe8')],{'as':_0x1690('0xe8'),'foreignKey':'AttachmentId'});db[_0x1690('0x66')][_0x1690('0x119')](db['ChatWebsite'],{'as':'Account','foreignKey':_0x1690('0x16f')});db[_0x1690('0x67')][_0x1690('0x10e')](db[_0x1690('0xe8')],{'as':_0x1690('0x16e'),'foreignKey':_0x1690('0x18b'),'onDelete':'cascade','hooks':!![]});db[_0x1690('0x67')][_0x1690('0x119')](db[_0x1690('0x6c')],{'onDelete':_0x1690('0x140'),'as':_0x1690('0x15a'),'foreignKey':_0x1690('0x15b')});db[_0x1690('0x67')][_0x1690('0x119')](db['ChatWebsite'],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x16f')});db[_0x1690('0x68')][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':_0x1690('0x152'),'through':'UserChatQueue','hooks':!![]});db[_0x1690('0x68')][_0x1690('0x11b')](db['Team'],{'through':_0x1690('0x18c'),'as':'Teams'});db['ChatGroup'][_0x1690('0x10e')](db[_0x1690('0xcc')],{'as':_0x1690('0x154'),'foreignKey':'ChatGroupId','onDelete':_0x1690('0x140')});db[_0x1690('0x11c')]['belongsToMany'](db['User'],{'as':_0x1690('0x18d'),'through':_0x1690('0x11e')});db[_0x1690('0x6a')][_0x1690('0x119')](db[_0x1690('0x131')],{'as':_0x1690('0x187'),'foreignKey':'ChatWebsiteId'});db[_0x1690('0x6b')]['hasMany'](db[_0x1690('0x6c')],{'as':_0x1690('0x11f'),'foreignKey':_0x1690('0x18e')});db['CmContact']['hasMany'](db[_0x1690('0x6e')],{'as':_0x1690('0x146'),'foreignKey':_0x1690('0x15b')});db['CmContact']['hasMany'](db[_0x1690('0x71')],{'as':_0x1690('0x112'),'foreignKey':_0x1690('0x15b')});db['CmContact'][_0x1690('0x10e')](db[_0x1690('0x148')],{'as':_0x1690('0x149'),'foreignKey':_0x1690('0x15b')});db[_0x1690('0x6c')][_0x1690('0x10e')](db[_0x1690('0x73')],{'as':'ReportAgentPreview','foreignKey':_0x1690('0x15b')});db['CmContact'][_0x1690('0x10e')](db[_0x1690('0x14b')],{'as':_0x1690('0x14c'),'foreignKey':'ContactId'});db[_0x1690('0x6c')][_0x1690('0x10e')](db['OpenchannelInteraction'],{'as':_0x1690('0x18f'),'foreignKey':_0x1690('0x15b'),'onDelete':_0x1690('0x170')});db[_0x1690('0x6c')]['hasMany'](db['ChatInteraction'],{'as':_0x1690('0x114'),'foreignKey':_0x1690('0x15b'),'onDelete':_0x1690('0x170')});db[_0x1690('0x6c')][_0x1690('0x10e')](db[_0x1690('0x57')],{'as':_0x1690('0x115'),'foreignKey':_0x1690('0x15b'),'onDelete':_0x1690('0x170')});db[_0x1690('0x6c')][_0x1690('0x10e')](db[_0x1690('0x4d')],{'as':_0x1690('0x116'),'foreignKey':'ContactId','onDelete':_0x1690('0x170')});db[_0x1690('0x6c')]['hasMany'](db['MailInteraction'],{'as':_0x1690('0x117'),'foreignKey':_0x1690('0x15b'),'onDelete':_0x1690('0x170')});db[_0x1690('0x6c')][_0x1690('0x119')](db[_0x1690('0x6b')],{'as':_0x1690('0x190'),'foreignKey':_0x1690('0x18e')});db[_0x1690('0x6c')][_0x1690('0x119')](db[_0x1690('0xf4')],{'as':_0x1690('0x162'),'foreignKey':_0x1690('0x163'),'onDelete':_0x1690('0x140')});db['CmContact'][_0x1690('0x11b')](db['User'],{'as':_0x1690('0x16d'),'through':_0x1690('0x120')});db['CmContact'][_0x1690('0x11b')](db[_0x1690('0x16a')],{'as':_0x1690('0x177'),'through':_0x1690('0x191')});db[_0x1690('0x6c')][_0x1690('0x11b')](db['Tag'],{'through':'cm_contact_has_tags','as':_0x1690('0x16c')});db['CmHopper'][_0x1690('0x119')](db[_0x1690('0x6c')],{'as':_0x1690('0x15a'),'foreignKey':_0x1690('0x15b'),'onDelete':_0x1690('0x140')});db[_0x1690('0x6e')][_0x1690('0x119')](db[_0x1690('0xf4')],{'as':_0x1690('0x162'),'foreignKey':_0x1690('0x163'),'onDelete':_0x1690('0x140')});db['CmHopper'][_0x1690('0x119')](db[_0x1690('0x12')],{'as':'Agent','foreignKey':'UserId'});db[_0x1690('0x6e')][_0x1690('0x119')](db[_0x1690('0x1a')],{'as':_0x1690('0x192'),'foreignKey':_0x1690('0x147'),'onDelete':_0x1690('0x140')});db['CmHopper']['belongsTo'](db[_0x1690('0x193')],{'as':_0x1690('0x193'),'foreignKey':_0x1690('0x194'),'onDelete':_0x1690('0x140')});db[_0x1690('0x6e')]['belongsTo'](db['User'],{'as':_0x1690('0x169'),'foreignKey':_0x1690('0x195')});db[_0x1690('0x70')][_0x1690('0x119')](db['CmContact'],{'as':_0x1690('0x15a'),'foreignKey':_0x1690('0x15b'),'onDelete':_0x1690('0x140')});db['CmHopperBlack'][_0x1690('0x119')](db['CmList'],{'as':_0x1690('0x162'),'foreignKey':_0x1690('0x163'),'onDelete':_0x1690('0x140')});db['CmHopperBlack'][_0x1690('0x119')](db[_0x1690('0x1a')],{'as':'Queue','foreignKey':_0x1690('0x147'),'onDelete':'cascade'});db[_0x1690('0x70')]['belongsTo'](db[_0x1690('0x193')],{'as':'Campaign','foreignKey':'CampaignId','onDelete':_0x1690('0x140')});db[_0x1690('0x196')]['hasMany'](db[_0x1690('0x7b')],{'as':{'plural':'All','singular':_0x1690('0x197')},'foreignKey':_0x1690('0x198'),'onDelete':_0x1690('0x140'),'hooks':!![]});db[_0x1690('0x196')][_0x1690('0x10e')](db[_0x1690('0x7b')],{'as':{'plural':_0x1690('0x199'),'singular':'OneAny'},'foreignKey':_0x1690('0x19a'),'onDelete':'cascade','hooks':!![]});db[_0x1690('0x196')]['hasMany'](db[_0x1690('0x76')],{'as':_0x1690('0x19b'),'foreignKey':'AutomationId','onDelete':_0x1690('0x140'),'hooks':!![]});db[_0x1690('0x173')][_0x1690('0x10e')](db['Disposition'],{'as':_0x1690('0x15f'),'foreignKey':_0x1690('0x19c'),'onDelete':_0x1690('0x140')});db['Interval'][_0x1690('0x10e')](db[_0x1690('0x7c')],{'as':_0x1690('0x19d'),'foreignKey':'IntervalId','onDelete':_0x1690('0x140'),'hooks':!![],'required':![]});db[_0x1690('0x7c')][_0x1690('0x10e')](db[_0x1690('0x17')],{'as':'Extensions','foreignKey':_0x1690('0x171'),'onDelete':_0x1690('0x170')});db[_0x1690('0x7c')]['hasMany'](db[_0x1690('0x45')],{'as':_0x1690('0x19e'),'foreignKey':'IntervalId'});db[_0x1690('0x7c')][_0x1690('0x10e')](db[_0x1690('0x62')],{'as':_0x1690('0x19f'),'foreignKey':'IntervalId'});db[_0x1690('0x7c')][_0x1690('0x10e')](db['FaxApplication'],{'as':_0x1690('0x1a0'),'foreignKey':_0x1690('0x171')});db[_0x1690('0x7c')][_0x1690('0x10e')](db['SmsApplication'],{'as':_0x1690('0x1a1'),'foreignKey':'IntervalId'});db['Schedule'][_0x1690('0x119')](db[_0x1690('0x3c')],{});db[_0x1690('0x82')][_0x1690('0x119')](db[_0x1690('0x8d')],{'foreignKey':'DefaultReportId'});db[_0x1690('0x82')][_0x1690('0x119')](db[_0x1690('0x8b')],{'foreignKey':_0x1690('0x1a2')});db[_0x1690('0x83')]['belongsToMany'](db[_0x1690('0x143')],{'as':_0x1690('0x1a3'),'through':_0x1690('0x145'),'onDelete':'restrict'});db[_0x1690('0x16a')][_0x1690('0x11b')](db[_0x1690('0x6c')],{'through':_0x1690('0x191')});db['Tag'][_0x1690('0x11b')](db['ChatInteraction'],{'through':_0x1690('0x188')});db[_0x1690('0x16a')][_0x1690('0x11b')](db['MailInteraction'],{'through':_0x1690('0x16b')});db[_0x1690('0x16a')][_0x1690('0x11b')](db[_0x1690('0x57')],{'through':'sms_interaction_has_tags'});db['Tag'][_0x1690('0x11b')](db[_0x1690('0x4d')],{'through':_0x1690('0x176')});db[_0x1690('0x16a')][_0x1690('0x11b')](db[_0x1690('0x5e')],{'through':_0x1690('0x183')});db[_0x1690('0x16a')][_0x1690('0x11b')](db[_0x1690('0x100')],{'through':_0x1690('0x1a4')});db['Trigger'][_0x1690('0x10e')](db[_0x1690('0x7b')],{'as':{'plural':_0x1690('0x1a5'),'singular':_0x1690('0x1a6')},'foreignKey':_0x1690('0x1a7'),'onDelete':_0x1690('0x140'),'hooks':!![]});db[_0x1690('0x1a8')][_0x1690('0x10e')](db[_0x1690('0x7b')],{'as':{'plural':_0x1690('0x1a9'),'singular':_0x1690('0x1aa')},'foreignKey':_0x1690('0x1ab'),'onDelete':_0x1690('0x140'),'hooks':!![]});db[_0x1690('0x1a8')][_0x1690('0x10e')](db['Action'],{'as':_0x1690('0x19b'),'foreignKey':_0x1690('0x1ac'),'onDelete':_0x1690('0x140'),'hooks':!![]});db[_0x1690('0x8b')][_0x1690('0x10e')](db['AnalyticFieldReport'],{'as':_0x1690('0x1ad'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1a2'),'hooks':!![]});db[_0x1690('0x8d')][_0x1690('0x10e')](db[_0x1690('0x91')],{'as':_0x1690('0x1ad'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1ae')});db[_0x1690('0x1af')][_0x1690('0x10e')](db[_0x1690('0x91')],{'as':_0x1690('0x1ad'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b0')});db[_0x1690('0x91')][_0x1690('0x119')](db[_0x1690('0x1af')],{'foreignKey':_0x1690('0x1b0')});db['SalesforceAccount']['hasMany'](db['SalesforceConfiguration'],{'as':_0x1690('0x1b1'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x1690('0x96')][_0x1690('0x10e')](db[_0x1690('0x98')],{'as':'Subjects','onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b2')});db[_0x1690('0x96')][_0x1690('0x10e')](db[_0x1690('0x98')],{'as':_0x1690('0x1b3'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b4')});db[_0x1690('0x96')][_0x1690('0x10e')](db[_0x1690('0x98')],{'as':_0x1690('0x1ad'),'onDelete':'cascade','foreignKey':_0x1690('0x1b5')});db[_0x1690('0x96')][_0x1690('0x119')](db['SalesforceAccount'],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x1b6')});db['SalesforceField'][_0x1690('0x10e')](db['SalesforceField'],{'as':_0x1690('0x1b7'),'foreignKey':_0x1690('0x1b2')});db[_0x1690('0x98')][_0x1690('0x10e')](db[_0x1690('0x98')],{'as':_0x1690('0x1b8'),'foreignKey':_0x1690('0x1b4')});db['SalesforceField']['hasMany'](db['SalesforceField'],{'as':_0x1690('0x1b9'),'foreignKey':'FieldId'});db[_0x1690('0x98')][_0x1690('0x119')](db['Variable'],{'as':_0x1690('0x87'),'foreignKey':_0x1690('0x1ba')});db['SugarcrmAccount'][_0x1690('0x10e')](db[_0x1690('0x9a')],{'as':_0x1690('0x1b1'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b6')});db[_0x1690('0x9a')]['hasMany'](db[_0x1690('0x9c')],{'as':'Subjects','onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b2')});db[_0x1690('0x9a')][_0x1690('0x10e')](db[_0x1690('0x9c')],{'as':'Descriptions','onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b4')});db[_0x1690('0x9a')][_0x1690('0x10e')](db[_0x1690('0x9c')],{'as':_0x1690('0x1ad'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b5')});db['SugarcrmConfiguration'][_0x1690('0x119')](db['SugarcrmAccount'],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x1b6')});db[_0x1690('0x9c')]['hasMany'](db['SugarcrmField'],{'as':_0x1690('0x1b7'),'foreignKey':_0x1690('0x1b2')});db['SugarcrmField']['hasMany'](db[_0x1690('0x9c')],{'as':_0x1690('0x1b8'),'foreignKey':_0x1690('0x1b4')});db[_0x1690('0x9c')][_0x1690('0x10e')](db[_0x1690('0x9c')],{'as':_0x1690('0x1b9'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0x9c')]['belongsTo'](db[_0x1690('0x87')],{'as':_0x1690('0x87'),'foreignKey':_0x1690('0x1ba')});db[_0x1690('0x9e')][_0x1690('0x10e')](db[_0x1690('0xa0')],{'as':_0x1690('0x1b1'),'onDelete':_0x1690('0x140'),'foreignKey':'AccountId'});db[_0x1690('0xa0')][_0x1690('0x10e')](db[_0x1690('0xa1')],{'as':_0x1690('0x1bb'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b2')});db['DeskConfiguration']['hasMany'](db[_0x1690('0xa1')],{'as':_0x1690('0x1b3'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b4')});db[_0x1690('0xa0')]['hasMany'](db['DeskField'],{'as':_0x1690('0x1ad'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x1690('0xa0')][_0x1690('0x119')](db[_0x1690('0x9e')],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x1b6')});db[_0x1690('0xa0')][_0x1690('0x11b')](db[_0x1690('0x16a')],{'through':_0x1690('0x1bc')});db[_0x1690('0xa1')][_0x1690('0x10e')](db['DeskField'],{'as':_0x1690('0x1b7'),'foreignKey':_0x1690('0x1b2')});db[_0x1690('0xa1')]['hasMany'](db['DeskField'],{'as':'Description','foreignKey':_0x1690('0x1b4')});db[_0x1690('0xa1')]['hasMany'](db[_0x1690('0xa1')],{'as':_0x1690('0x1b9'),'foreignKey':'FieldId'});db[_0x1690('0xa1')]['belongsTo'](db[_0x1690('0x87')],{'as':_0x1690('0x87'),'foreignKey':_0x1690('0x1ba')});db[_0x1690('0xa3')]['hasMany'](db[_0x1690('0xa5')],{'as':_0x1690('0x1b1'),'onDelete':'cascade','foreignKey':_0x1690('0x1b6')});db[_0x1690('0xa5')]['hasMany'](db[_0x1690('0xa7')],{'as':_0x1690('0x1bb'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b2')});db[_0x1690('0xa5')][_0x1690('0x10e')](db[_0x1690('0xa7')],{'as':_0x1690('0x1b3'),'onDelete':'cascade','foreignKey':_0x1690('0x1b4')});db[_0x1690('0xa5')][_0x1690('0x10e')](db[_0x1690('0xa7')],{'as':_0x1690('0x1ad'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0xa5')]['belongsTo'](db['ZohoAccount'],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x1b6')});db[_0x1690('0xa7')][_0x1690('0x10e')](db[_0x1690('0xa7')],{'as':_0x1690('0x1b7'),'foreignKey':_0x1690('0x1b2')});db[_0x1690('0xa7')]['hasMany'](db['ZohoField'],{'as':_0x1690('0x1b8'),'foreignKey':_0x1690('0x1b4')});db[_0x1690('0xa7')][_0x1690('0x10e')](db[_0x1690('0xa7')],{'as':_0x1690('0x1b9'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0xa7')][_0x1690('0x119')](db[_0x1690('0x87')],{'as':'Variable','foreignKey':'VariableId'});db[_0x1690('0xa9')]['hasMany'](db[_0x1690('0xaa')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x1690('0x1b6')});db[_0x1690('0xaa')]['hasMany'](db[_0x1690('0xac')],{'as':_0x1690('0x1bb'),'foreignKey':_0x1690('0x1b2')});db[_0x1690('0xaa')][_0x1690('0x10e')](db[_0x1690('0xac')],{'as':_0x1690('0x1b3'),'foreignKey':'DescriptionId'});db['ZendeskConfiguration']['hasMany'](db[_0x1690('0xac')],{'as':_0x1690('0x1ad'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0xaa')][_0x1690('0x119')](db[_0x1690('0xa9')],{'as':'Account','foreignKey':_0x1690('0x1b6')});db[_0x1690('0xaa')][_0x1690('0x11b')](db[_0x1690('0x16a')],{'through':_0x1690('0x1bd')});db[_0x1690('0xac')]['hasMany'](db[_0x1690('0xac')],{'as':'Subject','foreignKey':_0x1690('0x1b2')});db[_0x1690('0xac')][_0x1690('0x10e')](db['ZendeskField'],{'as':_0x1690('0x1b8'),'foreignKey':'DescriptionId'});db['ZendeskField'][_0x1690('0x10e')](db[_0x1690('0xac')],{'as':_0x1690('0x1b9'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0xac')]['belongsTo'](db[_0x1690('0x87')],{'as':_0x1690('0x87'),'foreignKey':_0x1690('0x1ba')});db[_0x1690('0xae')][_0x1690('0x10e')](db[_0x1690('0xb0')],{'as':'Configurations','onDelete':_0x1690('0x140'),'foreignKey':'AccountId'});db['FreshdeskConfiguration'][_0x1690('0x10e')](db[_0x1690('0x1be')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x1690('0x1b2')});db[_0x1690('0xb0')][_0x1690('0x10e')](db['FreshdeskField'],{'as':'Descriptions','onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b4')});db[_0x1690('0xb0')][_0x1690('0x10e')](db[_0x1690('0x1be')],{'as':_0x1690('0x1ad'),'onDelete':'cascade','foreignKey':_0x1690('0x1b5')});db[_0x1690('0xb0')][_0x1690('0x119')](db['FreshdeskAccount'],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x1b6')});db['FreshdeskConfiguration'][_0x1690('0x11b')](db[_0x1690('0x16a')],{'through':'int_freshdesk_configuration_has_tags'});db[_0x1690('0x1be')][_0x1690('0x10e')](db[_0x1690('0x1be')],{'as':'Subject','foreignKey':_0x1690('0x1b2')});db['FreshdeskField']['hasMany'](db[_0x1690('0x1be')],{'as':_0x1690('0x1b8'),'foreignKey':'DescriptionId'});db[_0x1690('0x1be')][_0x1690('0x10e')](db['FreshdeskField'],{'as':_0x1690('0x1b9'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0x1be')][_0x1690('0x119')](db[_0x1690('0x87')],{'as':_0x1690('0x87'),'foreignKey':_0x1690('0x1ba')});db[_0x1690('0xb3')][_0x1690('0x10e')](db[_0x1690('0x1bf')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x1690('0x1b6')});db[_0x1690('0x1bf')][_0x1690('0x10e')](db[_0x1690('0xb6')],{'as':_0x1690('0x1bb'),'foreignKey':'SubjectId'});db[_0x1690('0x1bf')]['hasMany'](db[_0x1690('0xb6')],{'as':_0x1690('0x1b3'),'foreignKey':_0x1690('0x1b4')});db['VtigerConfiguration'][_0x1690('0x10e')](db[_0x1690('0xb6')],{'as':'Fields','foreignKey':_0x1690('0x1b5')});db[_0x1690('0x1bf')][_0x1690('0x119')](db[_0x1690('0xb3')],{'as':'Account','foreignKey':_0x1690('0x1b6')});db[_0x1690('0xb6')][_0x1690('0x10e')](db[_0x1690('0xb6')],{'as':_0x1690('0x1b7'),'foreignKey':'SubjectId'});db[_0x1690('0xb6')][_0x1690('0x10e')](db[_0x1690('0xb6')],{'as':'Description','foreignKey':'DescriptionId'});db['VtigerField'][_0x1690('0x10e')](db['VtigerField'],{'as':_0x1690('0x1b9'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0xb6')][_0x1690('0x119')](db[_0x1690('0x87')],{'as':'Variable','foreignKey':_0x1690('0x1ba')});db[_0x1690('0xb8')][_0x1690('0x10e')](db[_0x1690('0xb9')],{'as':_0x1690('0x1b1'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b6')});db[_0x1690('0xb9')][_0x1690('0x10e')](db['ServicenowField'],{'as':'Subjects','foreignKey':_0x1690('0x1b2')});db['ServicenowConfiguration'][_0x1690('0x10e')](db['ServicenowField'],{'as':_0x1690('0x1b3'),'foreignKey':_0x1690('0x1b4')});db['ServicenowConfiguration'][_0x1690('0x10e')](db[_0x1690('0xbb')],{'as':'Fields','foreignKey':_0x1690('0x1b5')});db[_0x1690('0xb9')][_0x1690('0x119')](db[_0x1690('0xb8')],{'as':'Account','foreignKey':_0x1690('0x1b6')});db['ServicenowField'][_0x1690('0x10e')](db[_0x1690('0xbb')],{'as':'Subject','foreignKey':'SubjectId'});db['ServicenowField']['hasMany'](db['ServicenowField'],{'as':_0x1690('0x1b8'),'foreignKey':_0x1690('0x1b4')});db[_0x1690('0xbb')][_0x1690('0x10e')](db[_0x1690('0xbb')],{'as':_0x1690('0x1b9'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0xbb')]['belongsTo'](db[_0x1690('0x87')],{'as':_0x1690('0x87'),'foreignKey':_0x1690('0x1ba')});db[_0x1690('0xbd')][_0x1690('0x10e')](db['Dynamics365Configuration'],{'as':_0x1690('0x1b1'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x1690('0xbf')]['hasMany'](db['Dynamics365Field'],{'as':_0x1690('0x1bb'),'onDelete':'cascade','foreignKey':_0x1690('0x1b2')});db[_0x1690('0xbf')][_0x1690('0x10e')](db['Dynamics365Field'],{'as':_0x1690('0x1b3'),'onDelete':_0x1690('0x140'),'foreignKey':'DescriptionId'});db[_0x1690('0xbf')][_0x1690('0x10e')](db[_0x1690('0xc1')],{'as':_0x1690('0x1ad'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0xbf')][_0x1690('0x119')](db[_0x1690('0xbd')],{'as':_0x1690('0x168'),'foreignKey':'AccountId'});db[_0x1690('0xc1')][_0x1690('0x10e')](db['Dynamics365Field'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x1690('0xc1')]['hasMany'](db['Dynamics365Field'],{'as':_0x1690('0x1b8'),'foreignKey':_0x1690('0x1b4')});db['Dynamics365Field'][_0x1690('0x10e')](db[_0x1690('0xc1')],{'as':_0x1690('0x1b9'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0xc1')]['belongsTo'](db[_0x1690('0x87')],{'as':_0x1690('0x87'),'foreignKey':_0x1690('0x1ba')});db[_0x1690('0xc3')][_0x1690('0x10e')](db[_0x1690('0xc5')],{'as':_0x1690('0x1b1'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1b6')});db[_0x1690('0xc5')][_0x1690('0x10e')](db[_0x1690('0x1c0')],{'as':_0x1690('0x1bb'),'foreignKey':_0x1690('0x1b2')});db[_0x1690('0xc5')][_0x1690('0x10e')](db['FreshsalesField'],{'as':'Descriptions','foreignKey':_0x1690('0x1b4')});db[_0x1690('0xc5')][_0x1690('0x10e')](db[_0x1690('0x1c0')],{'as':_0x1690('0x1ad'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0xc5')][_0x1690('0x119')](db[_0x1690('0xc3')],{'as':_0x1690('0x168'),'foreignKey':_0x1690('0x1b6')});db[_0x1690('0x1c0')]['hasMany'](db[_0x1690('0x1c0')],{'as':_0x1690('0x1b7'),'foreignKey':_0x1690('0x1b2')});db['FreshsalesField'][_0x1690('0x10e')](db[_0x1690('0x1c0')],{'as':'Description','foreignKey':_0x1690('0x1b4')});db[_0x1690('0x1c0')][_0x1690('0x10e')](db[_0x1690('0x1c0')],{'as':_0x1690('0x1b9'),'foreignKey':_0x1690('0x1b5')});db[_0x1690('0x1c0')][_0x1690('0x119')](db[_0x1690('0x87')],{'as':_0x1690('0x87'),'foreignKey':_0x1690('0x1ba')});db[_0x1690('0xca')][_0x1690('0x119')](db[_0x1690('0x131')],{});db[_0x1690('0xca')][_0x1690('0x119')](db[_0x1690('0xf4')],{'as':_0x1690('0x162'),'foreignKey':_0x1690('0x163')});db[_0x1690('0xca')][_0x1690('0x119')](db[_0x1690('0x6c')],{'as':'Contact','foreignKey':_0x1690('0x15b')});db[_0x1690('0xca')][_0x1690('0x119')](db[_0x1690('0x64')],{});db[_0x1690('0xca')][_0x1690('0x119')](db[_0x1690('0x66')],{});db[_0x1690('0xca')]['belongsTo'](db[_0x1690('0x12')],{});db['ChatQueueReport'][_0x1690('0x119')](db[_0x1690('0x68')],{});db[_0x1690('0xcc')][_0x1690('0x119')](db['User'],{'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1c1')});db['ChatInternalMessage'][_0x1690('0x119')](db[_0x1690('0x12')],{'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1c2')});db['JscriptySessionReport']['hasMany'](db[_0x1690('0xcf')],{'foreignKey':_0x1690('0x1c3'),'onDelete':_0x1690('0x140')});db[_0x1690('0x14b')]['hasMany'](db[_0x1690('0xcd')],{'foreignKey':_0x1690('0x1c3'),'onDelete':_0x1690('0x140')});db[_0x1690('0xd1')][_0x1690('0x119')](db[_0x1690('0x54')],{});db[_0x1690('0xd1')][_0x1690('0x119')](db['CmList'],{'as':'List','foreignKey':_0x1690('0x163')});db[_0x1690('0xd1')][_0x1690('0x119')](db[_0x1690('0x6c')],{'as':_0x1690('0x15a'),'foreignKey':'ContactId'});db[_0x1690('0xd1')]['belongsTo'](db['SmsInteraction'],{});db[_0x1690('0xd1')][_0x1690('0x119')](db['SmsMessage'],{});db[_0x1690('0xd1')][_0x1690('0x119')](db['User'],{});db[_0x1690('0xd1')][_0x1690('0x119')](db[_0x1690('0x5a')],{});db[_0x1690('0xd7')][_0x1690('0x10e')](db[_0x1690('0x14b')],{'foreignKey':'ProjectId'});db['JscriptyProject']['hasMany'](db[_0x1690('0xcf')],{'foreignKey':_0x1690('0x1c4')});db[_0x1690('0xd7')][_0x1690('0x10e')](db[_0x1690('0xcd')],{'foreignKey':_0x1690('0x1c4')});db[_0x1690('0xdc')][_0x1690('0x11b')](db['User'],{'as':'Users','through':_0x1690('0x1c5')});db[_0x1690('0xe1')][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':_0x1690('0x152'),'through':_0x1690('0x122')});db[_0x1690('0xe1')]['belongsToMany'](db[_0x1690('0x1a')],{'through':_0x1690('0x10a'),'as':_0x1690('0x127')});db[_0x1690('0xe1')]['belongsToMany'](db[_0x1690('0x3e')],{'through':'team_has_mail_queues','as':_0x1690('0x128')});db[_0x1690('0xe1')]['belongsToMany'](db[_0x1690('0x68')],{'through':_0x1690('0x18c'),'as':'ChatQueues'});db[_0x1690('0xe1')]['belongsToMany'](db[_0x1690('0x50')],{'through':'team_has_fax_queues','as':_0x1690('0x12a')});db['Team']['belongsToMany'](db[_0x1690('0x5a')],{'through':_0x1690('0x180'),'as':_0x1690('0x12b')});db[_0x1690('0xe1')][_0x1690('0x11b')](db[_0x1690('0x5f')],{'through':'team_has_openchannel_queues','as':_0x1690('0x12c')});db[_0x1690('0xe1')][_0x1690('0x11b')](db[_0x1690('0x106')],{'through':_0x1690('0x1c6'),'as':'WhatsappQueues'});db['Campaign']['hasMany'](db['CmHopper'],{'as':_0x1690('0x146'),'foreignKey':'CampaignId'});db[_0x1690('0x193')][_0x1690('0x10e')](db[_0x1690('0x71')],{'as':_0x1690('0x112'),'foreignKey':'CampaignId'});db[_0x1690('0x193')][_0x1690('0x10e')](db[_0x1690('0x148')],{'as':_0x1690('0x149'),'foreignKey':_0x1690('0x194')});db[_0x1690('0x193')]['hasMany'](db[_0x1690('0x70')],{'as':_0x1690('0x14a'),'foreignKey':_0x1690('0x194')});db[_0x1690('0x193')]['belongsTo'](db[_0x1690('0x2a')],{'as':_0x1690('0x2a'),'foreignKey':_0x1690('0x14d')});db[_0x1690('0x193')][_0x1690('0x119')](db[_0x1690('0x2a')],{'as':'TrunkBackup','foreignKey':_0x1690('0x1c7')});db[_0x1690('0x193')][_0x1690('0x119')](db[_0x1690('0x7c')],{'as':_0x1690('0x7c'),'foreignKey':_0x1690('0x171')});db['Campaign'][_0x1690('0x119')](db['SquareProject'],{'as':_0x1690('0xdc'),'foreignKey':_0x1690('0x1c8')});db[_0x1690('0x193')][_0x1690('0x11b')](db['CmList'],{'as':_0x1690('0x150'),'through':'campaigns_has_cm_lists'});db['Campaign'][_0x1690('0x11b')](db[_0x1690('0xf4')],{'as':_0x1690('0x1c9'),'through':_0x1690('0x1ca')});db[_0x1690('0xe8')][_0x1690('0x119')](db[_0x1690('0x67')],{'as':_0x1690('0x67'),'foreignKey':'ChatOfflineMessageId'});db['MailTransferReport']['belongsTo'](db['MailMessage'],{});db[_0x1690('0xec')]['belongsTo'](db[_0x1690('0x41')],{});db[_0x1690('0xec')][_0x1690('0x119')](db[_0x1690('0x3c')],{'foreignKey':_0x1690('0x1cb'),'as':_0x1690('0x1cc')});db[_0x1690('0xec')][_0x1690('0x119')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db['MailTransferReport'][_0x1690('0x119')](db[_0x1690('0x12')],{'foreignKey':_0x1690('0x1cd'),'as':_0x1690('0x1ce')});db[_0x1690('0xec')]['belongsTo'](db[_0x1690('0x3e')],{'foreignKey':_0x1690('0x1cf'),'as':_0x1690('0x1d0')});db['MailTransferReport'][_0x1690('0x119')](db[_0x1690('0x3c')],{'foreignKey':_0x1690('0x1d1'),'as':_0x1690('0x1d2')});db['ChatTransferReport'][_0x1690('0x119')](db[_0x1690('0x66')],{});db['ChatTransferReport'][_0x1690('0x119')](db[_0x1690('0x64')],{});db['ChatTransferReport'][_0x1690('0x119')](db[_0x1690('0x131')],{'foreignKey':_0x1690('0x1d3'),'as':_0x1690('0x1cc')});db['ChatTransferReport'][_0x1690('0x119')](db['User'],{'foreignKey':_0x1690('0x1d4'),'as':'FromAgent'});db[_0x1690('0xee')][_0x1690('0x119')](db[_0x1690('0x12')],{'foreignKey':_0x1690('0x1cd'),'as':_0x1690('0x1ce')});db[_0x1690('0xee')][_0x1690('0x119')](db[_0x1690('0x68')],{'foreignKey':_0x1690('0x1d5'),'as':_0x1690('0x1d0')});db[_0x1690('0xee')][_0x1690('0x119')](db[_0x1690('0x131')],{'foreignKey':_0x1690('0x1d6'),'as':_0x1690('0x1d2')});db[_0x1690('0x1d7')][_0x1690('0x119')](db[_0x1690('0x4e')],{});db[_0x1690('0x1d7')][_0x1690('0x119')](db[_0x1690('0x4d')],{});db[_0x1690('0x1d7')][_0x1690('0x119')](db[_0x1690('0x4a')],{'foreignKey':_0x1690('0x1d8'),'as':'FromAccount'});db[_0x1690('0x1d7')]['belongsTo'](db['User'],{'foreignKey':_0x1690('0x1d4'),'as':_0x1690('0x1d9')});db[_0x1690('0x1d7')][_0x1690('0x119')](db[_0x1690('0x12')],{'foreignKey':_0x1690('0x1cd'),'as':_0x1690('0x1ce')});db['FaxTransferReport'][_0x1690('0x119')](db[_0x1690('0x50')],{'foreignKey':_0x1690('0x1da'),'as':_0x1690('0x1d0')});db[_0x1690('0x1d7')][_0x1690('0x119')](db[_0x1690('0x4a')],{'foreignKey':_0x1690('0x1db'),'as':_0x1690('0x1d2')});db[_0x1690('0xf1')]['belongsTo'](db[_0x1690('0x182')],{});db['OpenchannelTransferReport']['belongsTo'](db[_0x1690('0x5e')],{});db[_0x1690('0xf1')][_0x1690('0x119')](db[_0x1690('0x138')],{'foreignKey':_0x1690('0x1dc'),'as':_0x1690('0x1cc')});db['OpenchannelTransferReport'][_0x1690('0x119')](db['User'],{'foreignKey':_0x1690('0x1d4'),'as':_0x1690('0x1d9')});db[_0x1690('0xf1')][_0x1690('0x119')](db[_0x1690('0x12')],{'foreignKey':_0x1690('0x1cd'),'as':_0x1690('0x1ce')});db['OpenchannelTransferReport'][_0x1690('0x119')](db[_0x1690('0x5f')],{'foreignKey':_0x1690('0x1dd'),'as':_0x1690('0x1d0')});db[_0x1690('0xf1')]['belongsTo'](db[_0x1690('0x138')],{'foreignKey':_0x1690('0x1de'),'as':_0x1690('0x1d2')});db[_0x1690('0xf2')][_0x1690('0x119')](db[_0x1690('0x59')],{});db[_0x1690('0xf2')]['belongsTo'](db[_0x1690('0x57')],{});db[_0x1690('0xf2')]['belongsTo'](db[_0x1690('0x54')],{'foreignKey':_0x1690('0x1df'),'as':_0x1690('0x1cc')});db[_0x1690('0xf2')][_0x1690('0x119')](db[_0x1690('0x12')],{'foreignKey':_0x1690('0x1d4'),'as':_0x1690('0x1d9')});db[_0x1690('0xf2')][_0x1690('0x119')](db['User'],{'foreignKey':_0x1690('0x1cd'),'as':_0x1690('0x1ce')});db[_0x1690('0xf2')][_0x1690('0x119')](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x1690('0x1d0')});db[_0x1690('0xf2')]['belongsTo'](db[_0x1690('0x54')],{'foreignKey':_0x1690('0x1e0'),'as':_0x1690('0x1d2')});db['CmList'][_0x1690('0x10e')](db[_0x1690('0x173')],{'as':_0x1690('0x15f'),'foreignKey':_0x1690('0x163')});db[_0x1690('0xf4')][_0x1690('0x10e')](db[_0x1690('0x1e1')],{'as':'CustomFields','foreignKey':_0x1690('0x163')});db[_0x1690('0xf4')][_0x1690('0x10e')](db[_0x1690('0x6c')],{'as':_0x1690('0x11f'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x163')});db[_0x1690('0xf4')][_0x1690('0x10e')](db[_0x1690('0x71')],{'as':_0x1690('0x112'),'foreignKey':_0x1690('0x163')});db[_0x1690('0xf4')]['hasMany'](db['CmHopperHistory'],{'as':_0x1690('0x113'),'foreignKey':_0x1690('0x163')});db['CmList']['hasMany'](db[_0x1690('0x73')],{'as':_0x1690('0x73'),'foreignKey':'ListId'});db[_0x1690('0xf4')]['belongsToMany'](db[_0x1690('0x1a')],{'as':_0x1690('0x1e2'),'through':_0x1690('0x151')});db[_0x1690('0xf4')][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':_0x1690('0x152'),'through':_0x1690('0x121')});db[_0x1690('0xf6')][_0x1690('0x10e')](db[_0x1690('0x17')],{'as':_0x1690('0x111'),'onDelete':_0x1690('0x140')});db[_0x1690('0xf6')]['belongsToMany'](db[_0x1690('0x12')],{'as':'Agents','through':_0x1690('0x130')});db[_0x1690('0xf8')][_0x1690('0x10e')](db[_0x1690('0x12')],{'as':_0x1690('0x16d'),'foreignKey':'userProfileId'});db[_0x1690('0xf8')][_0x1690('0x10e')](db[_0x1690('0xfa')],{'as':_0x1690('0x1e3'),'foreignKey':_0x1690('0x11a'),'onDelete':_0x1690('0x140')});db[_0x1690('0xfa')][_0x1690('0x10e')](db[_0x1690('0x1e4')],{'as':_0x1690('0x1e5'),'foreignKey':_0x1690('0x1e6'),'onDelete':_0x1690('0x140')});db[_0x1690('0xfd')][_0x1690('0x10e')](db[_0x1690('0x173')],{'as':_0x1690('0x15f'),'foreignKey':_0x1690('0x1e7')});db[_0x1690('0xfd')][_0x1690('0x10e')](db[_0x1690('0x17c')],{'as':_0x1690('0x160'),'foreignKey':_0x1690('0x1e7')});db[_0x1690('0xfd')][_0x1690('0x10e')](db['WhatsappMessage'],{'as':_0x1690('0x154'),'foreignKey':'WhatsappAccountId'});db[_0x1690('0xfd')][_0x1690('0x10e')](db[_0x1690('0x100')],{'as':'Interactions'});db[_0x1690('0xfd')][_0x1690('0x10e')](db[_0x1690('0xfe')],{'as':_0x1690('0x142')});db[_0x1690('0xfd')][_0x1690('0x119')](db[_0x1690('0xf4')],{'as':_0x1690('0x162'),'foreignKey':_0x1690('0x163')});db[_0x1690('0xfd')]['belongsTo'](db[_0x1690('0x7e')],{'as':_0x1690('0x165'),'foreignKey':_0x1690('0x14f')});db['WhatsappAccount'][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':_0x1690('0x152'),'through':_0x1690('0x13d')});db[_0x1690('0xfe')][_0x1690('0x119')](db['User'],{'onDelete':_0x1690('0x170')});db[_0x1690('0xfe')]['belongsTo'](db[_0x1690('0x106')],{'onDelete':_0x1690('0x170')});db[_0x1690('0xfe')]['belongsTo'](db[_0x1690('0xfd')],{'onDelete':_0x1690('0x170')});db[_0x1690('0xfe')][_0x1690('0x119')](db['Interval'],{'onDelete':_0x1690('0x170'),'foreignKey':_0x1690('0x171')});db['WhatsappApplication'][_0x1690('0x119')](db['Tag'],{'onDelete':'restrict','foreignKey':_0x1690('0x175')});db[_0x1690('0x100')][_0x1690('0x10e')](db[_0x1690('0x101')],{'as':_0x1690('0x154'),'onDelete':_0x1690('0x140'),'foreignKey':_0x1690('0x1e8')});db[_0x1690('0x100')][_0x1690('0x119')](db[_0x1690('0xfd')],{'as':'Account','foreignKey':_0x1690('0x1e7')});db[_0x1690('0x100')][_0x1690('0x119')](db[_0x1690('0x6c')],{'as':_0x1690('0x15a'),'foreignKey':_0x1690('0x15b')});db[_0x1690('0x100')]['belongsTo'](db[_0x1690('0x12')],{'as':_0x1690('0x169'),'foreignKey':_0x1690('0x10d')});db[_0x1690('0x100')][_0x1690('0x11b')](db[_0x1690('0x16a')],{'through':_0x1690('0x1a4'),'as':_0x1690('0x177')});db[_0x1690('0x100')][_0x1690('0x11b')](db['Tag'],{'through':'whatsapp_interaction_has_tags','as':_0x1690('0x16c')});db[_0x1690('0x100')][_0x1690('0x11b')](db['User'],{'as':_0x1690('0x16d'),'through':'user_has_whatsapp_interactions','foreignKey':_0x1690('0x1e8')});db[_0x1690('0x101')][_0x1690('0x119')](db[_0x1690('0x12')],{'as':_0x1690('0x12')});db['WhatsappMessage'][_0x1690('0x119')](db[_0x1690('0x6c')],{'onDelete':_0x1690('0x140'),'as':_0x1690('0x15a')});db[_0x1690('0x101')][_0x1690('0x119')](db[_0x1690('0x100')],{'onDelete':_0x1690('0x140'),'as':_0x1690('0x178'),'foreignKey':_0x1690('0x1e8')});db[_0x1690('0x101')][_0x1690('0x119')](db[_0x1690('0xfd')],{'as':'Account','foreignKey':'WhatsappAccountId'});db[_0x1690('0x102')]['belongsTo'](db[_0x1690('0xfd')],{});db[_0x1690('0x102')]['belongsTo'](db[_0x1690('0xf4')],{'as':_0x1690('0x162'),'foreignKey':'ListId'});db[_0x1690('0x102')][_0x1690('0x119')](db[_0x1690('0x6c')],{'as':_0x1690('0x15a'),'foreignKey':'ContactId'});db[_0x1690('0x102')][_0x1690('0x119')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0x1690('0x106')],{});db['WhatsappQueueReport'][_0x1690('0x119')](db['WhatsappMessage'],{});db[_0x1690('0x102')][_0x1690('0x119')](db[_0x1690('0x12')],{});db[_0x1690('0x104')][_0x1690('0x119')](db[_0x1690('0x101')],{});db[_0x1690('0x104')][_0x1690('0x119')](db[_0x1690('0x100')],{});db[_0x1690('0x104')][_0x1690('0x119')](db[_0x1690('0xfd')],{'foreignKey':_0x1690('0x1e9'),'as':_0x1690('0x1cc')});db[_0x1690('0x104')][_0x1690('0x119')](db['WhatsappAccount'],{'foreignKey':'ToWhatsappAccountId','as':_0x1690('0x1d2')});db[_0x1690('0x104')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':'ToQueueId','as':_0x1690('0x1d0')});db['WhatsappTransferReport']['belongsTo'](db[_0x1690('0x12')],{'foreignKey':'FromUserId','as':_0x1690('0x1d9')});db[_0x1690('0x104')][_0x1690('0x119')](db[_0x1690('0x12')],{'foreignKey':_0x1690('0x1cd'),'as':_0x1690('0x1ce')});db['WhatsappQueue'][_0x1690('0x11b')](db[_0x1690('0x12')],{'as':_0x1690('0x152'),'through':'UserWhatsappQueue','foreignKey':_0x1690('0x1ea')});db[_0x1690('0x106')][_0x1690('0x11b')](db[_0x1690('0xe1')],{'through':_0x1690('0x1c6'),'as':_0x1690('0x166')});module[_0x1690('0x1eb')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xa33e=['ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerField/intVtigerField.model','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/integration/integration.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','../api/setting/setting.model','SquareOdbc','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','SmsTransferReport','CmList','../api/cmList/cmList.model','VoicePrefix','UserProfile','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','cascade','User','hasMany','Recordings','UserId','VoiceQueuesRt','VoiceExtension','Extensions','HopperFinals','ChatInteractions','SmsInteraction','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','Groups','chat_group_has_users','cm_user_has_contacts','Lists','belongsToMany','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','OpenchannelInteractions','user_has_openchannel_interactions','WhatsappInteraction','user_has_whatsapp_interactions','VoiceQueues','MailQueue','ChatQueues','FaxQueues','WhatsappQueues','cm_user_has_lists','VoicePrefixes','user_has_voice_prefixes','ChatWebsite','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','WhatsappAccount','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','Applications','Sounds','moh_has_sounds','Members','Hoppers','VoiceQueueId','CmHopperFinal','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','voice_queues_has_cm_blacklists','mailboxuser','mailbox','VoiceQueueReport','QueueCalls','AgentReports','uniqueid','Contact','ContactId','MailAccountId','Imap','Smtp','Dispositions','Answers','MailMessage','Interactions','MailApplication','ListId','TemplateId','mandatoryDispositionPause','Messages','MailInteractionId','Account','Owner','mail_interaction_has_tags','Tags','ThroughTags','Users','ChatWebsiteId','ChatOfflineMessageId','restrict','List','Items','FaxAccountId','TagId','FaxInteractionId','fax_interaction_has_tags','Interaction','AttachmentId','SmsAccount','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','user_has_sms_interactions','team_has_sms_queues','OpenchannelAccountId','OpenchannelMessage','OpenchannelQueueId','openchannel_interaction_has_tags','OpenchannelInteractionId','team_has_openchannel_queues','ProactiveActions','Queue','Website','ChatInteractionId','chat_interaction_has_tags','ChatMessage','Attachments','team_has_chat_queues','ChatGroupId','Contacts','CompanyId','Company','cm_contact_has_tags','Agent','Campaign','OwnerId','Automation','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','AutomationId','ParentId','Intervals','FaxApplications','SmsApplications','CustomReportId','Mohs','whatsapp_interaction_has_tags','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','Actions','TriggerId','AnalyticCustomReport','Fields','DefaultReportId','MetricId','SalesforceConfiguration','Configurations','Subjects','SubjectId','SalesforceField','Descriptions','FieldId','AccountId','Subject','Description','DescriptionId','VariableId','SugarcrmAccount','Field','ZohoAccount','ZendeskAccount','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskField','int_freshdesk_configuration_has_tags','VtigerField','ServicenowAccount','FromId','ToId','JscriptyAnswerReport','SessionId','ProjectId','TeamVoiceQueue','team_has_mail_queues','MailQueues','SmsQueues','OpenchannelQueues','CampaignId','SquareProjectId','campaigns_has_cm_lists','BlackLists','FromAccount','FromUserId','FromAgent','ToUserId','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','ToAgent','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','CustomFields','HopperHistory','UserProfileSections','Resources','WhatsappAccountId','WhatsappInteractionId','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','../config/environment','sequelize','lodash','jstz','determine','defaultsDeep','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','sequelizeHistory','motion2','utf8_general_ci','username','options','password','import','../api/user/user.model','VoiceChanSpy','VoiceContext','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','UserWhatsappQueue','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailQueue/mailQueue.model','MailSubstatus','MailInteraction','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','MailQueueReport','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','FaxInteraction','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatMessage/chatMessage.model','ChatOfflineMessage','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','../api/automation/automation.model','CannedAnswer','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','Schedule','Sound','../api/sound/sound.model','Tag','Template','Trigger','Variable','../api/variable/variable.model','Integration','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','SalesforceAccount','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSalesforceField/intSalesforceField.model','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','../api/intZendeskAccount/intZendeskAccount.model'];(function(_0x3b3fa1,_0x4228f0){var _0x229898=function(_0x319041){while(--_0x319041){_0x3b3fa1['push'](_0x3b3fa1['shift']());}};_0x229898(++_0x4228f0);}(_0xa33e,0x13f));var _0xea33=function(_0x774bf3,_0x10d794){_0x774bf3=_0x774bf3-0x0;var _0x10beb4=_0xa33e[_0x774bf3];return _0x10beb4;};'use strict';var config=require(_0xea33('0x0'));var Sequelize=require(_0xea33('0x1'));var _=require(_0xea33('0x2'));var jstz=require(_0xea33('0x3'));var timezone=jstz[_0xea33('0x4')]();config[_0xea33('0x1')]=_[_0xea33('0x5')](config['sequelize'],{'database':'motion2','username':_0xea33('0x6'),'password':_0xea33('0x7'),'options':{'host':_0xea33('0x8'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xea33('0x9')},'logging':![],'timezone':timezone[_0xea33('0xa')](),'define':{'charset':_0xea33('0xb'),'collate':'utf8_general_ci'}}});config[_0xea33('0xc')]=_[_0xea33('0x5')](config[_0xea33('0xc')],{'database':_0xea33('0xd'),'username':_0xea33('0x6'),'password':_0xea33('0x7'),'options':{'host':_0xea33('0x8'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xea33('0x9')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0xea33('0xb'),'collate':_0xea33('0xe')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xea33('0x1')]['database'],config[_0xea33('0x1')][_0xea33('0xf')],config[_0xea33('0x1')]['password'],config['sequelize'][_0xea33('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xea33('0xc')]['database'],config[_0xea33('0xc')][_0xea33('0xf')],config[_0xea33('0xc')][_0xea33('0x11')],config['sequelizeHistory'][_0xea33('0x10')])};db['User']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x13'));db[_0xea33('0x14')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/voiceChanSpy/voiceChanSpy.model');db[_0xea33('0x15')]=db[_0xea33('0x1')]['import'](_0xea33('0x16'));db['VoiceExtension']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x17'));db[_0xea33('0x18')]=db['sequelize']['import'](_0xea33('0x19'));db[_0xea33('0x1a')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x1b'));db[_0xea33('0x1c')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x1d'));db[_0xea33('0x1e')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x1f'));db[_0xea33('0x20')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/voiceMail/voiceMail.model');db[_0xea33('0x21')]=db['sequelize'][_0xea33('0x12')](_0xea33('0x22'));db[_0xea33('0x23')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x24'));db[_0xea33('0x25')]=db['sequelize'][_0xea33('0x12')](_0xea33('0x26'));db[_0xea33('0x27')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x28'));db['VoiceQueueReport']=db['sequelize'][_0xea33('0x12')](_0xea33('0x29'));db[_0xea33('0x2a')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x2b'));db[_0xea33('0x2c')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x2d'));db[_0xea33('0x2e')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x2f'));db[_0xea33('0x30')]=db['sequelize'][_0xea33('0x12')](_0xea33('0x31'));db[_0xea33('0x32')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x33'));db[_0xea33('0x34')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x35'));db[_0xea33('0x36')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/userMailQueue/userMailQueue.model');db[_0xea33('0x37')]=db[_0xea33('0x1')]['import'](_0xea33('0x38'));db[_0xea33('0x39')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/userSmsQueue/userSmsQueue.model');db[_0xea33('0x3a')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0xea33('0x3b')]=db[_0xea33('0x1')]['import']('../api/userWhatsappQueue/userWhatsappQueue.model');db[_0xea33('0x3c')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x3d'));db[_0xea33('0x3e')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x3f'));db[_0xea33('0x40')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/mailAccount/mailAccount.model');db['MailQueue']=db['sequelize'][_0xea33('0x12')](_0xea33('0x41'));db[_0xea33('0x42')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/mailSubstatus/mailSubstatus.model');db[_0xea33('0x43')]=db['sequelize']['import']('../api/mailInteraction/mailInteraction.model');db['MailMessage']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x44'));db['MailApplication']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x45'));db[_0xea33('0x46')]=db[_0xea33('0x1')]['import']('../api/mailQueueReport/mailQueueReport.model');db[_0xea33('0x47')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x48'));db[_0xea33('0x49')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x4a'));db[_0xea33('0x4b')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x4c'));db[_0xea33('0x4d')]=db['sequelize']['import']('../api/faxApplication/faxApplication.model');db[_0xea33('0x4e')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/faxInteraction/faxInteraction.model');db[_0xea33('0x4f')]=db['sequelize'][_0xea33('0x12')](_0xea33('0x50'));db[_0xea33('0x51')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x52'));db[_0xea33('0x53')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x54'));db['SmsAccount']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x55'));db[_0xea33('0x56')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/smsApplication/smsApplication.model');db['SmsInteraction']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x57'));db[_0xea33('0x58')]=db[_0xea33('0x1')]['import'](_0xea33('0x59'));db[_0xea33('0x5a')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x5b'));db[_0xea33('0x5c')]=db[_0xea33('0x1')]['import']('../api/openchannelAccount/openchannelAccount.model');db[_0xea33('0x5d')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x5e'));db[_0xea33('0x5f')]=db['sequelize'][_0xea33('0x12')]('../api/openchannelInteraction/openchannelInteraction.model');db['OpenchannelMessage']=db[_0xea33('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db[_0xea33('0x60')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x61'));db['ChatWebsite']=db[_0xea33('0x1')]['import'](_0xea33('0x62'));db[_0xea33('0x63')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x64'));db[_0xea33('0x65')]=db['sequelize'][_0xea33('0x12')](_0xea33('0x66'));db[_0xea33('0x67')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/chatInteraction/chatInteraction.model');db['ChatMessage']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x68'));db[_0xea33('0x69')]=db[_0xea33('0x1')]['import']('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0xea33('0x6a')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x6b'));db[_0xea33('0x6c')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/chatGroup/chatGroup.model');db[_0xea33('0x6d')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x6e'));db[_0xea33('0x6f')]=db[_0xea33('0x1')]['import'](_0xea33('0x70'));db[_0xea33('0x71')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x72'));db[_0xea33('0x73')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x74'));db[_0xea33('0x75')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/cmHopperBlack/cmHopperBlack.model');db['CmHopperFinal']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x76'));db[_0xea33('0x77')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x78'));db[_0xea33('0x79')]=db['sequelize']['import']('../api/reportAgentPreview/reportAgentPreview.model');db[_0xea33('0x7a')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x7b'));db[_0xea33('0x7c')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x7d'));db['Automation']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x7e'));db[_0xea33('0x7f')]=db['sequelize'][_0xea33('0x12')]('../api/cannedAnswer/cannedAnswer.model');db[_0xea33('0x80')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x81'));db[_0xea33('0x82')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x83'));db[_0xea33('0x84')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/interval/interval.model');db[_0xea33('0x85')]=db[_0xea33('0x1')]['import'](_0xea33('0x86'));db[_0xea33('0x87')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x88'));db[_0xea33('0x89')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0xea33('0x8a')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/schedule/schedule.model');db[_0xea33('0x8b')]=db['sequelize'][_0xea33('0x12')](_0xea33('0x8c'));db[_0xea33('0x8d')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/tag/tag.model');db[_0xea33('0x8e')]=db['sequelize'][_0xea33('0x12')]('../api/template/template.model');db[_0xea33('0x8f')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/trigger/trigger.model');db[_0xea33('0x90')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x91'));db[_0xea33('0x92')]=db['sequelize'][_0xea33('0x12')]('../api/integration/integration.model');db['IntegrationReport']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x93'));db['AnalyticCustomReport']=db[_0xea33('0x1')]['import'](_0xea33('0x94'));db[_0xea33('0x95')]=db['sequelize']['import'](_0xea33('0x96'));db[_0xea33('0x97')]=db[_0xea33('0x1')]['import'](_0xea33('0x98'));db[_0xea33('0x99')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x9a'));db[_0xea33('0x9b')]=db['sequelize'][_0xea33('0x12')](_0xea33('0x9c'));db['AnalyticTreeReport']=db[_0xea33('0x1')][_0xea33('0x12')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0xea33('0x9d')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/intSalesforceAccount/intSalesforceAccount.model');db['SalesforceConfiguration']=db['sequelize']['import'](_0xea33('0x9e'));db['SalesforceField']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x9f'));db['SugarcrmAccount']=db['sequelize'][_0xea33('0x12')](_0xea33('0xa0'));db[_0xea33('0xa1')]=db[_0xea33('0x1')]['import']('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0xea33('0xa2')]=db['sequelize'][_0xea33('0x12')](_0xea33('0xa3'));db[_0xea33('0xa4')]=db['sequelize'][_0xea33('0x12')](_0xea33('0xa5'));db[_0xea33('0xa6')]=db['sequelize'][_0xea33('0x12')](_0xea33('0xa7'));db[_0xea33('0xa8')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xa9'));db['ZohoAccount']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xaa'));db[_0xea33('0xab')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xac'));db[_0xea33('0xad')]=db['sequelize']['import'](_0xea33('0xae'));db['ZendeskAccount']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xaf'));db[_0xea33('0xb0')]=db[_0xea33('0x1')]['import'](_0xea33('0xb1'));db[_0xea33('0xb2')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/intZendeskField/intZendeskField.model');db['FreshdeskAccount']=db['sequelize'][_0xea33('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0xea33('0xb3')]=db['sequelize'][_0xea33('0x12')](_0xea33('0xb4'));db['FreshdeskField']=db[_0xea33('0x1')]['import'](_0xea33('0xb5'));db[_0xea33('0xb6')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xb7'));db[_0xea33('0xb8')]=db[_0xea33('0x1')]['import']('../api/intVtigerConfiguration/intVtigerConfiguration.model');db['VtigerField']=db['sequelize'][_0xea33('0x12')](_0xea33('0xb9'));db['ServicenowAccount']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xba'));db[_0xea33('0xbb')]=db[_0xea33('0x1')]['import']('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0xea33('0xbc')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xbd'));db[_0xea33('0xbe')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0xea33('0xbf')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xc0'));db[_0xea33('0xc1')]=db['sequelize'][_0xea33('0x12')]('../api/intDynamics365Field/intDynamics365Field.model');db[_0xea33('0xc2')]=db['sequelize']['import'](_0xea33('0xc3'));db[_0xea33('0xc4')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xc5'));db[_0xea33('0xc6')]=db[_0xea33('0x1')]['import']('../api/intFreshsalesField/intFreshsalesField.model');db[_0xea33('0x92')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xc7'));db[_0xea33('0xc8')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xc9'));db[_0xea33('0xca')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xcb'));db[_0xea33('0xcc')]=db['sequelize'][_0xea33('0x12')](_0xea33('0xcd'));db['JscriptyAnswerReport']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xce'));db[_0xea33('0xcf')]=db['sequelize'][_0xea33('0x12')](_0xea33('0xd0'));db[_0xea33('0xd1')]=db['sequelize'][_0xea33('0x12')](_0xea33('0xd2'));db[_0xea33('0xd3')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xd4'));db[_0xea33('0xd5')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xd6'));db['SquareDetailsReport']=db[_0xea33('0x1')][_0xea33('0x12')]('../api/squareReportDetail/squareReportDetail.model');db[_0xea33('0xd7')]=db[_0xea33('0x1')]['import'](_0xea33('0xd8'));db['Setting']=db[_0xea33('0x1')]['import'](_0xea33('0xd9'));db[_0xea33('0xda')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/squareOdbc/squareOdbc.model');db[_0xea33('0xdb')]=db[_0xea33('0x1')]['import'](_0xea33('0xdc'));db[_0xea33('0xdd')]=db[_0xea33('0x1')]['import'](_0xea33('0xde'));db[_0xea33('0xdf')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xe0'));db[_0xea33('0xe1')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xe2'));db[_0xea33('0xe3')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xe4'));db['Campaign']=db['sequelize'][_0xea33('0x12')]('../api/campaign/campaign.model');db[_0xea33('0xe5')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xe6'));db[_0xea33('0xe7')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xe8'));db[_0xea33('0xe9')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xea'));db[_0xea33('0xeb')]=db[_0xea33('0x1')]['import'](_0xea33('0xec'));db[_0xea33('0xed')]=db['sequelize'][_0xea33('0x12')]('../api/chatTransferReport/chatTransferReport.model');db[_0xea33('0xee')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xef'));db[_0xea33('0xf0')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0xea33('0xf1')]=db[_0xea33('0x1')]['import']('../api/smsTransferReport/smsTransferReport.model');db[_0xea33('0xf2')]=db['sequelize'][_0xea33('0x12')](_0xea33('0xf3'));db[_0xea33('0xf4')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/voicePrefix/voicePrefix.model');db[_0xea33('0xf5')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/userProfile/userProfile.model');db[_0xea33('0xf6')]=db['sequelize'][_0xea33('0x12')](_0xea33('0xf7'));db[_0xea33('0xf8')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xf9'));db[_0xea33('0xfa')]=db[_0xea33('0x1')][_0xea33('0x12')]('../api/userNotification/userNotification.model');db['WhatsappAccount']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xfb'));db[_0xea33('0xfc')]=db['sequelize'][_0xea33('0x12')]('../api/whatsappApplication/whatsappApplication.model');db['WhatsappInteraction']=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0xfd'));db[_0xea33('0xfe')]=db['sequelize'][_0xea33('0x12')](_0xea33('0xff'));db[_0xea33('0x100')]=db[_0xea33('0x1')]['import'](_0xea33('0x101'));db[_0xea33('0x102')]=db['sequelize'][_0xea33('0x12')](_0xea33('0x103'));db[_0xea33('0x104')]=db[_0xea33('0x1')][_0xea33('0x12')](_0xea33('0x105'));db[_0xea33('0x106')]=db['sequelize'][_0xea33('0x12')]('../api/cloudProvider/cloudProvider.model');db['TeamVoiceQueue']=db['sequelize'][_0xea33('0x12')](_0xea33('0x107'));db['User'][_0xea33('0x108')](db['VoiceMail'],{'as':_0xea33('0x20'),'onDelete':_0xea33('0x109'),'foreignKey':'UserId'});db[_0xea33('0x10a')][_0xea33('0x10b')](db['VoiceRecording'],{'as':_0xea33('0x10c'),'foreignKey':_0xea33('0x10d')});db[_0xea33('0x10a')][_0xea33('0x10b')](db[_0xea33('0x30')],{'as':_0xea33('0x10e'),'foreignKey':_0xea33('0x10d')});db['User'][_0xea33('0x10b')](db[_0xea33('0x10f')],{'as':_0xea33('0x110'),'onDelete':_0xea33('0x109'),'hooks':!![]});db['User'][_0xea33('0x10b')](db['CmHopperFinal'],{'as':_0xea33('0x111'),'foreignKey':_0xea33('0x10d')});db[_0xea33('0x10a')][_0xea33('0x10b')](db[_0xea33('0x77')],{'as':'HopperHistory','foreignKey':'UserId'});db['User'][_0xea33('0x10b')](db['ReportAgentPreview'],{'as':_0xea33('0x79'),'foreignKey':_0xea33('0x10d')});db[_0xea33('0x10a')][_0xea33('0x10b')](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','foreignKey':'UserId'});db['User'][_0xea33('0x10b')](db[_0xea33('0x67')],{'as':_0xea33('0x112'),'foreignKey':_0xea33('0x10d')});db[_0xea33('0x10a')][_0xea33('0x10b')](db[_0xea33('0x113')],{'as':_0xea33('0x114'),'foreignKey':_0xea33('0x10d')});db[_0xea33('0x10a')][_0xea33('0x10b')](db[_0xea33('0x4e')],{'as':_0xea33('0x115'),'foreignKey':_0xea33('0x10d')});db[_0xea33('0x10a')][_0xea33('0x10b')](db[_0xea33('0x43')],{'as':_0xea33('0x116'),'foreignKey':'UserId'});db[_0xea33('0x10a')]['hasMany'](db['WhatsappInteraction'],{'as':_0xea33('0x117'),'foreignKey':_0xea33('0x10d')});db['User']['hasMany'](db[_0xea33('0xfa')],{'as':_0xea33('0x118'),'foreignKey':_0xea33('0x119')});db[_0xea33('0x10a')][_0xea33('0x11a')](db[_0xea33('0xf5')],{'as':_0xea33('0xf5'),'foreignKey':_0xea33('0x11b')});db[_0xea33('0x10a')]['belongsToMany'](db[_0xea33('0x6c')],{'as':_0xea33('0x11c'),'through':_0xea33('0x11d')});db[_0xea33('0x10a')]['belongsToMany'](db[_0xea33('0x71')],{'as':'Contacts','through':_0xea33('0x11e')});db[_0xea33('0x10a')]['belongsToMany'](db[_0xea33('0xf2')],{'as':_0xea33('0x11f'),'through':'cm_user_has_lists'});db['User'][_0xea33('0x120')](db[_0xea33('0xe1')],{'through':_0xea33('0x121')});db[_0xea33('0x10a')][_0xea33('0x120')](db['MailInteraction'],{'as':'MailInteractions','through':_0xea33('0x122')});db[_0xea33('0x10a')][_0xea33('0x120')](db[_0xea33('0x67')],{'as':_0xea33('0x112'),'through':_0xea33('0x123')});db['User'][_0xea33('0x120')](db[_0xea33('0x4e')],{'as':_0xea33('0x115'),'through':_0xea33('0x124')});db[_0xea33('0x10a')][_0xea33('0x120')](db[_0xea33('0x113')],{'as':_0xea33('0x114'),'through':'user_has_sms_interactions'});db[_0xea33('0x10a')]['belongsToMany'](db[_0xea33('0x5f')],{'as':_0xea33('0x125'),'through':_0xea33('0x126')});db[_0xea33('0x10a')][_0xea33('0x120')](db[_0xea33('0x127')],{'as':_0xea33('0x117'),'through':_0xea33('0x128')});db[_0xea33('0x10a')][_0xea33('0x120')](db[_0xea33('0x1a')],{'as':_0xea33('0x129'),'through':_0xea33('0x32'),'required':![]});db[_0xea33('0x10a')][_0xea33('0x120')](db[_0xea33('0x12a')],{'as':'MailQueues','through':_0xea33('0x36'),'required':![]});db[_0xea33('0x10a')]['belongsToMany'](db['ChatQueue'],{'as':_0xea33('0x12b'),'through':_0xea33('0x34'),'required':![],'hooks':!![]});db[_0xea33('0x10a')][_0xea33('0x120')](db['FaxQueue'],{'as':_0xea33('0x12c'),'through':'UserFaxQueue','required':![]});db[_0xea33('0x10a')][_0xea33('0x120')](db['SmsQueue'],{'as':'SmsQueues','through':_0xea33('0x39'),'required':![]});db[_0xea33('0x10a')][_0xea33('0x120')](db[_0xea33('0x60')],{'as':'OpenchannelQueues','through':_0xea33('0x3a'),'required':![]});db[_0xea33('0x10a')]['belongsToMany'](db[_0xea33('0x104')],{'as':_0xea33('0x12d'),'through':'UserWhatsappQueue','required':![]});db[_0xea33('0x10a')]['belongsToMany'](db[_0xea33('0xf2')],{'through':_0xea33('0x12e')});db[_0xea33('0x10a')][_0xea33('0x120')](db[_0xea33('0xf4')],{'as':_0xea33('0x12f'),'through':_0xea33('0x130'),'required':![]});db['User'][_0xea33('0x120')](db[_0xea33('0x131')],{'as':_0xea33('0x132'),'through':_0xea33('0x133')});db[_0xea33('0x10a')][_0xea33('0x120')](db[_0xea33('0x4b')],{'as':_0xea33('0x134'),'through':_0xea33('0x135')});db[_0xea33('0x10a')][_0xea33('0x120')](db[_0xea33('0x40')],{'as':_0xea33('0x136'),'through':_0xea33('0x137')});db[_0xea33('0x10a')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0xea33('0x138'),'through':_0xea33('0x139')});db[_0xea33('0x10a')]['belongsToMany'](db['SmsAccount'],{'as':'SmsAccounts','through':'user_has_sms_accounts'});db['User'][_0xea33('0x120')](db[_0xea33('0x13a')],{'as':_0xea33('0x13b'),'through':_0xea33('0x13c')});db[_0xea33('0x10a')][_0xea33('0x120')](db[_0xea33('0xdb')],{'as':_0xea33('0x13d'),'through':_0xea33('0x13e')});db[_0xea33('0x14')][_0xea33('0x10b')](db['VoiceExtension'],{'as':_0xea33('0x13f'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x140')});db['VoiceContext']['hasMany'](db[_0xea33('0x10f')],{'onDelete':_0xea33('0x109')});db[_0xea33('0x10f')][_0xea33('0x10b')](db[_0xea33('0x10f')],{'as':_0xea33('0x141'),'onDelete':_0xea33('0x109')});db[_0xea33('0x18')][_0xea33('0x120')](db[_0xea33('0x8b')],{'as':_0xea33('0x142'),'through':_0xea33('0x143')});db[_0xea33('0x1a')][_0xea33('0x10b')](db['UserVoiceQueueRt'],{'as':_0xea33('0x144'),'foreignKey':'VoiceQueueId'});db[_0xea33('0x1a')][_0xea33('0x10b')](db[_0xea33('0x73')],{'as':_0xea33('0x145'),'foreignKey':_0xea33('0x146')});db[_0xea33('0x1a')][_0xea33('0x10b')](db[_0xea33('0x147')],{'as':_0xea33('0x111'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0xea33('0x10b')](db[_0xea33('0x77')],{'as':_0xea33('0x148'),'foreignKey':_0xea33('0x146')});db[_0xea33('0x1a')][_0xea33('0x10b')](db[_0xea33('0x79')],{'as':'ReportAgentPreview','foreignKey':_0xea33('0x146')});db[_0xea33('0x1a')][_0xea33('0x10b')](db[_0xea33('0x75')],{'as':_0xea33('0x149'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0xea33('0x10b')](db[_0xea33('0xd1')],{'as':_0xea33('0x14a'),'foreignKey':_0xea33('0x146')});db[_0xea33('0x1a')][_0xea33('0x11a')](db[_0xea33('0x2c')],{'as':_0xea33('0x2c'),'foreignKey':_0xea33('0x14b')});db['VoiceQueue'][_0xea33('0x11a')](db['Trunk'],{'as':_0xea33('0x14c'),'foreignKey':_0xea33('0x14d')});db[_0xea33('0x1a')][_0xea33('0x11a')](db[_0xea33('0x84')],{'as':_0xea33('0x84'),'foreignKey':_0xea33('0x14e')});db[_0xea33('0x1a')][_0xea33('0x11a')](db[_0xea33('0x85')],{'as':'mandatoryDispositionPause','foreignKey':_0xea33('0x14f')});db[_0xea33('0x1a')][_0xea33('0x120')](db[_0xea33('0xf2')],{'as':_0xea33('0x11f'),'through':_0xea33('0x150')});db[_0xea33('0x1a')][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':_0xea33('0x151'),'through':_0xea33('0x32')});db[_0xea33('0x1a')][_0xea33('0x120')](db['Team'],{'as':_0xea33('0x152'),'through':'TeamVoiceQueue'});db[_0xea33('0x1a')]['belongsToMany'](db[_0xea33('0xf2')],{'as':'BlackLists','through':_0xea33('0x153')});db[_0xea33('0x1c')][_0xea33('0x11a')](db['User'],{'as':_0xea33('0x10a'),'foreignKey':_0xea33('0x10d')});db[_0xea33('0x1e')]['belongsTo'](db[_0xea33('0x10a')],{'as':_0xea33('0x10a'),'foreignKey':'UserId'});db[_0xea33('0x20')]['hasMany'](db[_0xea33('0x21')],{'as':'Messages','onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x154'),'sourceKey':_0xea33('0x155')});db[_0xea33('0x21')][_0xea33('0x11a')](db[_0xea33('0x20')],{'foreignKey':_0xea33('0x154'),'targetKey':_0xea33('0x155')});db['VoiceCallReport'][_0xea33('0x10b')](db[_0xea33('0x156')],{'as':_0xea33('0x157'),'foreignKey':'uniqueid','constraints':![]});db['VoiceCallReport'][_0xea33('0x10b')](db[_0xea33('0x27')],{'as':_0xea33('0x158'),'foreignKey':_0xea33('0x159'),'constraints':![]});db[_0xea33('0x23')]['belongsTo'](db[_0xea33('0x10a')],{'as':_0xea33('0x10a'),'foreignKey':_0xea33('0x10d')});db['VoiceCallReport'][_0xea33('0x11a')](db[_0xea33('0x71')],{'as':_0xea33('0x15a'),'foreignKey':_0xea33('0x15b')});db[_0xea33('0x3c')]['belongsTo'](db[_0xea33('0x40')],{'as':_0xea33('0x40'),'foreignKey':_0xea33('0x15c')});db[_0xea33('0x3e')]['belongsTo'](db[_0xea33('0x40')],{'as':_0xea33('0x40'),'foreignKey':_0xea33('0x15c')});db['MailAccount'][_0xea33('0x108')](db[_0xea33('0x3c')],{'as':_0xea33('0x15d'),'onDelete':_0xea33('0x109')});db[_0xea33('0x40')][_0xea33('0x108')](db[_0xea33('0x3e')],{'as':_0xea33('0x15e'),'onDelete':'cascade'});db[_0xea33('0x40')][_0xea33('0x10b')](db[_0xea33('0x80')],{'as':_0xea33('0x15f'),'foreignKey':_0xea33('0x15c'),'onDelete':_0xea33('0x109')});db['MailAccount'][_0xea33('0x10b')](db[_0xea33('0x7f')],{'as':_0xea33('0x160'),'foreignKey':_0xea33('0x15c')});db[_0xea33('0x40')][_0xea33('0x10b')](db[_0xea33('0x161')],{'as':'Messages','foreignKey':_0xea33('0x15c')});db[_0xea33('0x40')]['hasMany'](db[_0xea33('0x43')],{'as':_0xea33('0x162')});db['MailAccount'][_0xea33('0x10b')](db[_0xea33('0x163')],{'as':'Applications'});db[_0xea33('0x40')][_0xea33('0x11a')](db[_0xea33('0xf2')],{'as':'List','foreignKey':_0xea33('0x164')});db['MailAccount']['belongsTo'](db[_0xea33('0x8e')],{'as':_0xea33('0x8e'),'foreignKey':_0xea33('0x165')});db[_0xea33('0x40')][_0xea33('0x11a')](db[_0xea33('0x85')],{'as':_0xea33('0x166'),'foreignKey':_0xea33('0x14f')});db['MailAccount'][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':'Agents','through':_0xea33('0x137')});db[_0xea33('0x12a')]['belongsToMany'](db[_0xea33('0x10a')],{'as':_0xea33('0x151'),'through':_0xea33('0x36')});db[_0xea33('0x12a')][_0xea33('0x120')](db[_0xea33('0xe1')],{'through':'team_has_mail_queues','as':_0xea33('0x152')});db[_0xea33('0x43')][_0xea33('0x10b')](db[_0xea33('0x161')],{'as':_0xea33('0x167'),'onDelete':'cascade','foreignKey':_0xea33('0x168')});db[_0xea33('0x43')][_0xea33('0x11a')](db[_0xea33('0x40')],{'as':_0xea33('0x169'),'foreignKey':_0xea33('0x15c')});db[_0xea33('0x43')]['belongsTo'](db[_0xea33('0x71')],{'as':'Contact','foreignKey':_0xea33('0x15b')});db[_0xea33('0x43')][_0xea33('0x11a')](db['User'],{'as':_0xea33('0x16a'),'foreignKey':_0xea33('0x10d')});db[_0xea33('0x43')]['belongsToMany'](db[_0xea33('0x8d')],{'through':_0xea33('0x16b'),'as':_0xea33('0x16c')});db[_0xea33('0x43')][_0xea33('0x120')](db[_0xea33('0x8d')],{'through':'mail_interaction_has_tags','as':_0xea33('0x16d')});db[_0xea33('0x43')][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':_0xea33('0x16e'),'through':_0xea33('0x122'),'foreignKey':_0xea33('0x168')});db[_0xea33('0x161')][_0xea33('0x10b')](db[_0xea33('0xe7')],{'as':'Attachments','onDelete':'cascade'});db['MailMessage'][_0xea33('0x11a')](db['User'],{'as':_0xea33('0x10a')});db[_0xea33('0x161')]['belongsTo'](db[_0xea33('0x71')],{'onDelete':_0xea33('0x109'),'as':_0xea33('0x15a')});db[_0xea33('0x161')][_0xea33('0x11a')](db[_0xea33('0x43')],{'as':'Interaction','foreignKey':_0xea33('0x168')});db[_0xea33('0x161')][_0xea33('0x11a')](db[_0xea33('0x40')],{'as':'Account','foreignKey':_0xea33('0x15c')});db['MailMessage']['belongsTo'](db[_0xea33('0x131')],{'as':_0xea33('0x131'),'foreignKey':_0xea33('0x16f')});db['MailMessage']['belongsTo'](db['ChatOfflineMessage'],{'as':_0xea33('0x69'),'foreignKey':_0xea33('0x170')});db['MailApplication'][_0xea33('0x11a')](db[_0xea33('0x10a')],{'onDelete':_0xea33('0x171')});db['MailApplication'][_0xea33('0x11a')](db['MailQueue'],{'onDelete':_0xea33('0x171')});db[_0xea33('0x163')][_0xea33('0x11a')](db[_0xea33('0x40')],{'onDelete':_0xea33('0x171')});db[_0xea33('0x163')][_0xea33('0x11a')](db[_0xea33('0x84')],{'onDelete':'restrict','foreignKey':'IntervalId'});db[_0xea33('0x163')]['belongsTo'](db[_0xea33('0x8d')],{'onDelete':_0xea33('0x171'),'foreignKey':'TagId'});db[_0xea33('0x46')][_0xea33('0x11a')](db[_0xea33('0x40')],{});db[_0xea33('0x46')][_0xea33('0x11a')](db['CmList'],{'as':_0xea33('0x172'),'foreignKey':_0xea33('0x164')});db[_0xea33('0x46')][_0xea33('0x11a')](db['CmContact'],{'as':_0xea33('0x15a'),'foreignKey':_0xea33('0x15b')});db[_0xea33('0x46')]['belongsTo'](db[_0xea33('0x43')],{});db[_0xea33('0x46')]['belongsTo'](db['MailMessage'],{});db[_0xea33('0x46')][_0xea33('0x11a')](db[_0xea33('0x10a')],{});db[_0xea33('0x46')]['belongsTo'](db['MailQueue'],{});db[_0xea33('0x47')]['hasMany'](db[_0xea33('0x49')],{'as':_0xea33('0x173'),'onDelete':'cascade'});db[_0xea33('0x4b')][_0xea33('0x10b')](db[_0xea33('0x80')],{'as':_0xea33('0x15f'),'foreignKey':_0xea33('0x174'),'onDelete':_0xea33('0x109')});db[_0xea33('0x4b')][_0xea33('0x10b')](db[_0xea33('0x7f')],{'as':'Answers','foreignKey':_0xea33('0x174')});db[_0xea33('0x4b')]['hasMany'](db['FaxInteraction'],{'as':_0xea33('0x162')});db[_0xea33('0x4b')][_0xea33('0x10b')](db[_0xea33('0x4d')],{'as':_0xea33('0x141')});db[_0xea33('0x4b')]['hasMany'](db[_0xea33('0x10f')],{'as':'Exntensions','onDelete':'cascade'});db['FaxAccount'][_0xea33('0x10b')](db[_0xea33('0x4f')],{'as':_0xea33('0x167')});db[_0xea33('0x4b')][_0xea33('0x11a')](db['Trunk'],{'as':_0xea33('0x2c')});db[_0xea33('0x4b')]['belongsTo'](db[_0xea33('0xf2')],{'as':_0xea33('0x172'),'foreignKey':'ListId'});db[_0xea33('0x4b')]['belongsTo'](db['Pause'],{'as':_0xea33('0x166'),'foreignKey':_0xea33('0x14f')});db[_0xea33('0x4b')][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':_0xea33('0x151'),'through':_0xea33('0x135')});db['FaxApplication'][_0xea33('0x11a')](db[_0xea33('0x10a')],{'onDelete':_0xea33('0x171')});db[_0xea33('0x4d')][_0xea33('0x11a')](db[_0xea33('0x51')],{'onDelete':_0xea33('0x171')});db[_0xea33('0x4d')]['belongsTo'](db[_0xea33('0x4b')],{'onDelete':'restrict'});db['FaxApplication'][_0xea33('0x11a')](db['Tag'],{'onDelete':'restrict','foreignKey':_0xea33('0x175')});db['FaxInteraction'][_0xea33('0x10b')](db[_0xea33('0x4f')],{'as':_0xea33('0x167'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x176')});db['FaxInteraction']['belongsTo'](db[_0xea33('0x4b')],{'as':_0xea33('0x169'),'foreignKey':_0xea33('0x174')});db[_0xea33('0x4e')][_0xea33('0x11a')](db[_0xea33('0x71')],{'as':_0xea33('0x15a'),'foreignKey':'ContactId'});db[_0xea33('0x4e')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'as':_0xea33('0x16a'),'foreignKey':'UserId'});db[_0xea33('0x4e')][_0xea33('0x120')](db[_0xea33('0x8d')],{'through':'fax_interaction_has_tags','as':_0xea33('0x16c')});db[_0xea33('0x4e')][_0xea33('0x120')](db['Tag'],{'through':_0xea33('0x177'),'as':_0xea33('0x16d')});db['FaxInteraction']['belongsToMany'](db[_0xea33('0x10a')],{'as':_0xea33('0x16e'),'through':_0xea33('0x124'),'foreignKey':_0xea33('0x176')});db[_0xea33('0x4f')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'onDelete':_0xea33('0x109'),'as':'User'});db['FaxMessage'][_0xea33('0x11a')](db[_0xea33('0x4e')],{'as':_0xea33('0x178'),'foreignKey':_0xea33('0x176')});db[_0xea33('0x4f')]['belongsTo'](db[_0xea33('0x71')],{'onDelete':'cascade','as':_0xea33('0x15a')});db[_0xea33('0x4f')]['belongsTo'](db[_0xea33('0xe7')],{'as':_0xea33('0xe7'),'foreignKey':_0xea33('0x179')});db[_0xea33('0x4f')][_0xea33('0x11a')](db[_0xea33('0x4b')],{'as':_0xea33('0x169'),'foreignKey':_0xea33('0x174')});db[_0xea33('0x51')][_0xea33('0x120')](db['User'],{'as':_0xea33('0x151'),'through':_0xea33('0x37')});db[_0xea33('0x51')][_0xea33('0x120')](db[_0xea33('0xe1')],{'through':'team_has_fax_queues','as':'Teams'});db['FaxQueueReport'][_0xea33('0x11a')](db[_0xea33('0x4b')],{});db['FaxQueueReport']['belongsTo'](db[_0xea33('0xf2')],{'as':_0xea33('0x172'),'foreignKey':'ListId'});db[_0xea33('0x53')][_0xea33('0x11a')](db[_0xea33('0x71')],{'as':'Contact','foreignKey':_0xea33('0x15b')});db[_0xea33('0x53')]['belongsTo'](db[_0xea33('0x4e')],{});db[_0xea33('0x53')]['belongsTo'](db[_0xea33('0x4f')],{});db[_0xea33('0x53')][_0xea33('0x11a')](db[_0xea33('0x10a')],{});db[_0xea33('0x53')]['belongsTo'](db['FaxQueue'],{});db[_0xea33('0x17a')]['hasMany'](db[_0xea33('0x80')],{'as':_0xea33('0x15f'),'foreignKey':_0xea33('0x17b'),'onDelete':_0xea33('0x109')});db[_0xea33('0x17a')][_0xea33('0x10b')](db[_0xea33('0x7f')],{'as':_0xea33('0x160'),'foreignKey':'SmsAccountId'});db[_0xea33('0x17a')][_0xea33('0x10b')](db[_0xea33('0x58')],{'as':_0xea33('0x167'),'foreignKey':_0xea33('0x17b')});db[_0xea33('0x17a')]['hasMany'](db[_0xea33('0x113')],{'as':_0xea33('0x162')});db[_0xea33('0x17a')][_0xea33('0x10b')](db[_0xea33('0x56')],{'as':'Applications'});db[_0xea33('0x17a')][_0xea33('0x11a')](db[_0xea33('0xf2')],{'as':'List','foreignKey':'ListId'});db[_0xea33('0x17a')]['belongsTo'](db[_0xea33('0x85')],{'as':_0xea33('0x166'),'foreignKey':'mandatoryDispositionPauseId'});db['SmsAccount'][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':_0xea33('0x151'),'through':'user_has_sms_accounts'});db[_0xea33('0x56')][_0xea33('0x11a')](db['User'],{'onDelete':_0xea33('0x171')});db[_0xea33('0x56')][_0xea33('0x11a')](db['SmsQueue'],{'onDelete':'restrict'});db[_0xea33('0x56')][_0xea33('0x11a')](db['SmsAccount'],{'onDelete':_0xea33('0x171')});db['SmsApplication'][_0xea33('0x11a')](db[_0xea33('0x84')],{'onDelete':_0xea33('0x171'),'foreignKey':'IntervalId'});db['SmsApplication'][_0xea33('0x11a')](db[_0xea33('0x8d')],{'onDelete':_0xea33('0x171'),'foreignKey':_0xea33('0x175')});db[_0xea33('0x113')][_0xea33('0x10b')](db['SmsMessage'],{'as':_0xea33('0x167'),'onDelete':'cascade','foreignKey':_0xea33('0x17c')});db[_0xea33('0x113')][_0xea33('0x11a')](db['SmsAccount'],{'as':_0xea33('0x169'),'foreignKey':_0xea33('0x17b')});db[_0xea33('0x113')][_0xea33('0x11a')](db[_0xea33('0x71')],{'as':'Contact','foreignKey':'ContactId'});db[_0xea33('0x113')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'as':_0xea33('0x16a'),'foreignKey':'UserId'});db['SmsInteraction']['belongsToMany'](db[_0xea33('0x8d')],{'through':_0xea33('0x17d'),'as':'Tags'});db[_0xea33('0x113')][_0xea33('0x120')](db[_0xea33('0x8d')],{'through':_0xea33('0x17d'),'as':'ThroughTags'});db[_0xea33('0x113')][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':_0xea33('0x16e'),'through':_0xea33('0x17e'),'foreignKey':'SmsInteractionId'});db[_0xea33('0x58')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'as':_0xea33('0x10a')});db[_0xea33('0x58')][_0xea33('0x11a')](db['CmContact'],{'onDelete':_0xea33('0x109'),'as':'Contact'});db['SmsMessage'][_0xea33('0x11a')](db[_0xea33('0x113')],{'onDelete':'cascade','as':_0xea33('0x178'),'foreignKey':_0xea33('0x17c')});db[_0xea33('0x58')][_0xea33('0x11a')](db['SmsAccount'],{'as':_0xea33('0x169'),'foreignKey':_0xea33('0x17b')});db[_0xea33('0x5a')][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':'Agents','through':_0xea33('0x39'),'foreignKey':'SmsQueueId'});db[_0xea33('0x5a')]['belongsToMany'](db[_0xea33('0xe1')],{'through':_0xea33('0x17f'),'as':'Teams'});db[_0xea33('0x5c')][_0xea33('0x10b')](db['Disposition'],{'as':_0xea33('0x15f'),'foreignKey':_0xea33('0x180'),'onDelete':_0xea33('0x109')});db[_0xea33('0x5c')][_0xea33('0x10b')](db[_0xea33('0x7f')],{'as':_0xea33('0x160'),'foreignKey':_0xea33('0x180')});db['OpenchannelAccount']['hasMany'](db[_0xea33('0x5f')],{'as':_0xea33('0x162'),'foreignKey':_0xea33('0x180')});db['OpenchannelAccount']['hasMany'](db[_0xea33('0x181')],{'as':_0xea33('0x167'),'foreignKey':_0xea33('0x180')});db[_0xea33('0x5c')][_0xea33('0x10b')](db[_0xea33('0x5d')],{'as':_0xea33('0x141'),'foreignKey':_0xea33('0x180')});db['OpenchannelAccount'][_0xea33('0x11a')](db['CmList'],{'as':_0xea33('0x172'),'foreignKey':'ListId'});db[_0xea33('0x5c')]['belongsTo'](db['Pause'],{'as':_0xea33('0x166'),'foreignKey':_0xea33('0x14f')});db['OpenchannelAccount'][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':_0xea33('0x151'),'through':_0xea33('0x139')});db['OpenchannelApplication'][_0xea33('0x11a')](db[_0xea33('0x10a')],{'onDelete':_0xea33('0x171')});db['OpenchannelApplication']['belongsTo'](db['OpenchannelQueue'],{'onDelete':_0xea33('0x171'),'foreignKey':_0xea33('0x182')});db[_0xea33('0x5d')]['belongsTo'](db[_0xea33('0x5c')],{'onDelete':_0xea33('0x171'),'foreignKey':_0xea33('0x180')});db['OpenchannelApplication']['belongsTo'](db['Interval'],{'onDelete':'restrict','foreignKey':_0xea33('0x14e')});db[_0xea33('0x5d')][_0xea33('0x11a')](db[_0xea33('0x8d')],{'onDelete':_0xea33('0x171'),'foreignKey':_0xea33('0x175')});db[_0xea33('0x5f')][_0xea33('0x10b')](db['OpenchannelMessage'],{'as':_0xea33('0x167'),'onDelete':_0xea33('0x109'),'foreignKey':'OpenchannelInteractionId'});db[_0xea33('0x5f')][_0xea33('0x11a')](db['OpenchannelAccount'],{'as':_0xea33('0x169'),'foreignKey':'OpenchannelAccountId'});db[_0xea33('0x5f')][_0xea33('0x11a')](db[_0xea33('0x71')],{'as':_0xea33('0x15a'),'foreignKey':_0xea33('0x15b')});db[_0xea33('0x5f')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'as':_0xea33('0x16a'),'foreignKey':_0xea33('0x10d')});db[_0xea33('0x5f')][_0xea33('0x120')](db[_0xea33('0x8d')],{'through':_0xea33('0x183'),'as':_0xea33('0x16c')});db[_0xea33('0x5f')][_0xea33('0x120')](db[_0xea33('0x8d')],{'through':_0xea33('0x183'),'as':_0xea33('0x16d')});db[_0xea33('0x5f')]['belongsToMany'](db[_0xea33('0x10a')],{'as':_0xea33('0x16e'),'through':_0xea33('0x126'),'foreignKey':_0xea33('0x184')});db[_0xea33('0x181')]['belongsTo'](db[_0xea33('0x10a')],{'onDelete':'cascade','as':'User'});db[_0xea33('0x181')][_0xea33('0x11a')](db[_0xea33('0x71')],{'onDelete':'cascade','as':'Contact'});db[_0xea33('0x181')]['belongsTo'](db['OpenchannelInteraction'],{'onDelete':_0xea33('0x109'),'as':_0xea33('0x178'),'foreignKey':_0xea33('0x184')});db[_0xea33('0x181')][_0xea33('0x11a')](db[_0xea33('0xe7')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0xea33('0x181')][_0xea33('0x11a')](db[_0xea33('0x5c')],{'as':_0xea33('0x169'),'foreignKey':_0xea33('0x180')});db[_0xea33('0x60')][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':'Agents','through':_0xea33('0x3a'),'foreignKey':_0xea33('0x182')});db[_0xea33('0x60')][_0xea33('0x120')](db[_0xea33('0xe1')],{'through':_0xea33('0x185'),'as':_0xea33('0x152')});db[_0xea33('0x131')][_0xea33('0x10b')](db[_0xea33('0x80')],{'as':_0xea33('0x15f'),'foreignKey':_0xea33('0x16f'),'onDelete':'cascade'});db['ChatWebsite'][_0xea33('0x10b')](db[_0xea33('0x7f')],{'as':_0xea33('0x160'),'foreignKey':_0xea33('0x16f')});db[_0xea33('0x131')][_0xea33('0x10b')](db[_0xea33('0x6d')],{'as':_0xea33('0x186')});db[_0xea33('0x131')]['hasMany'](db[_0xea33('0x67')],{'as':_0xea33('0x162')});db[_0xea33('0x131')][_0xea33('0x10b')](db['ChatApplication'],{'as':_0xea33('0x141')});db[_0xea33('0x131')][_0xea33('0x10b')](db['ChatMessage'],{'as':'Messages'});db[_0xea33('0x131')][_0xea33('0x11a')](db[_0xea33('0xf2')],{'as':_0xea33('0x172'),'foreignKey':_0xea33('0x164')});db[_0xea33('0x131')][_0xea33('0x11a')](db['Interval'],{'as':'Interval','foreignKey':_0xea33('0x14e')});db['ChatWebsite'][_0xea33('0x11a')](db[_0xea33('0x40')],{'as':_0xea33('0x40'),'foreignKey':_0xea33('0x15c')});db[_0xea33('0x131')][_0xea33('0x11a')](db[_0xea33('0x85')],{'as':_0xea33('0x166'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xea33('0x131')][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':_0xea33('0x151'),'through':_0xea33('0x133')});db[_0xea33('0x63')][_0xea33('0x11a')](db['OpenchannelAccount'],{});db[_0xea33('0x63')][_0xea33('0x11a')](db[_0xea33('0xf2')],{'as':'List','foreignKey':_0xea33('0x164')});db[_0xea33('0x63')][_0xea33('0x11a')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0xea33('0x63')][_0xea33('0x11a')](db['OpenchannelInteraction'],{});db[_0xea33('0x63')][_0xea33('0x11a')](db[_0xea33('0x181')],{});db[_0xea33('0x63')][_0xea33('0x11a')](db[_0xea33('0x10a')],{});db[_0xea33('0x63')][_0xea33('0x11a')](db[_0xea33('0x60')],{});db['ChatApplication']['belongsTo'](db[_0xea33('0x10a')],{'as':'Agent','foreignKey':_0xea33('0x10d'),'onDelete':_0xea33('0x171')});db[_0xea33('0x65')]['belongsTo'](db[_0xea33('0x6a')],{'as':_0xea33('0x187'),'foreignKey':'ChatQueueId','onDelete':_0xea33('0x171')});db[_0xea33('0x65')][_0xea33('0x11a')](db[_0xea33('0x131')],{'as':_0xea33('0x188'),'foreignKey':_0xea33('0x16f'),'onDelete':_0xea33('0x171')});db['ChatApplication'][_0xea33('0x11a')](db['Tag'],{'onDelete':'restrict','foreignKey':_0xea33('0x175')});db['ChatInteraction']['hasMany'](db['ChatMessage'],{'as':_0xea33('0x167'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x189')});db[_0xea33('0x67')][_0xea33('0x11a')](db[_0xea33('0x131')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0xea33('0x67')]['belongsTo'](db[_0xea33('0x71')],{'as':_0xea33('0x15a'),'foreignKey':_0xea33('0x15b')});db[_0xea33('0x67')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'as':_0xea33('0x16a'),'foreignKey':_0xea33('0x10d')});db[_0xea33('0x67')][_0xea33('0x120')](db['Tag'],{'through':_0xea33('0x18a'),'as':_0xea33('0x16c')});db['ChatInteraction'][_0xea33('0x120')](db['Tag'],{'through':_0xea33('0x18a'),'as':_0xea33('0x16d')});db[_0xea33('0x67')][_0xea33('0x120')](db['User'],{'as':_0xea33('0x16e'),'through':_0xea33('0x123'),'foreignKey':_0xea33('0x189')});db[_0xea33('0x18b')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'onDelete':_0xea33('0x109'),'as':'User'});db['ChatMessage'][_0xea33('0x11a')](db[_0xea33('0x71')],{'onDelete':_0xea33('0x109'),'as':'Contact','foreignKey':_0xea33('0x15b')});db[_0xea33('0x18b')][_0xea33('0x11a')](db[_0xea33('0x67')],{'onDelete':_0xea33('0x109'),'as':_0xea33('0x178'),'foreignKey':_0xea33('0x189')});db[_0xea33('0x18b')][_0xea33('0x11a')](db[_0xea33('0xe7')],{'as':_0xea33('0xe7'),'foreignKey':_0xea33('0x179')});db[_0xea33('0x18b')][_0xea33('0x11a')](db['ChatWebsite'],{'as':'Account','foreignKey':_0xea33('0x16f')});db[_0xea33('0x69')][_0xea33('0x10b')](db[_0xea33('0xe7')],{'as':_0xea33('0x18c'),'foreignKey':_0xea33('0x170'),'onDelete':_0xea33('0x109'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db[_0xea33('0x71')],{'onDelete':_0xea33('0x109'),'as':_0xea33('0x15a'),'foreignKey':_0xea33('0x15b')});db[_0xea33('0x69')]['belongsTo'](db[_0xea33('0x131')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0xea33('0x6a')]['belongsToMany'](db[_0xea33('0x10a')],{'as':_0xea33('0x151'),'through':_0xea33('0x34'),'hooks':!![]});db[_0xea33('0x6a')][_0xea33('0x120')](db[_0xea33('0xe1')],{'through':_0xea33('0x18d'),'as':_0xea33('0x152')});db[_0xea33('0x6c')][_0xea33('0x10b')](db[_0xea33('0xcc')],{'as':_0xea33('0x167'),'foreignKey':_0xea33('0x18e'),'onDelete':_0xea33('0x109')});db[_0xea33('0x6c')][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':_0xea33('0x144'),'through':_0xea33('0x11d')});db['ChatProactiveAction'][_0xea33('0x11a')](db['ChatWebsite'],{'as':_0xea33('0x188'),'foreignKey':'ChatWebsiteId'});db[_0xea33('0x6f')][_0xea33('0x10b')](db[_0xea33('0x71')],{'as':_0xea33('0x18f'),'foreignKey':_0xea33('0x190')});db[_0xea33('0x71')][_0xea33('0x10b')](db['CmHopper'],{'as':_0xea33('0x145'),'foreignKey':_0xea33('0x15b')});db['CmContact'][_0xea33('0x10b')](db[_0xea33('0x147')],{'as':_0xea33('0x111'),'foreignKey':_0xea33('0x15b')});db[_0xea33('0x71')][_0xea33('0x10b')](db[_0xea33('0x77')],{'as':_0xea33('0x148'),'foreignKey':'ContactId'});db[_0xea33('0x71')][_0xea33('0x10b')](db[_0xea33('0x79')],{'as':'ReportAgentPreview','foreignKey':_0xea33('0x15b')});db['CmContact'][_0xea33('0x10b')](db['JscriptySessionReport'],{'as':_0xea33('0x14a'),'foreignKey':'ContactId'});db[_0xea33('0x71')][_0xea33('0x10b')](db[_0xea33('0x5f')],{'as':_0xea33('0x125'),'foreignKey':_0xea33('0x15b'),'onDelete':_0xea33('0x171')});db[_0xea33('0x71')][_0xea33('0x10b')](db['ChatInteraction'],{'as':_0xea33('0x112'),'foreignKey':_0xea33('0x15b'),'onDelete':'restrict'});db[_0xea33('0x71')][_0xea33('0x10b')](db[_0xea33('0x113')],{'as':_0xea33('0x114'),'foreignKey':'ContactId','onDelete':_0xea33('0x171')});db['CmContact'][_0xea33('0x10b')](db[_0xea33('0x4e')],{'as':_0xea33('0x115'),'foreignKey':_0xea33('0x15b'),'onDelete':_0xea33('0x171')});db[_0xea33('0x71')][_0xea33('0x10b')](db[_0xea33('0x43')],{'as':_0xea33('0x116'),'foreignKey':'ContactId','onDelete':'restrict'});db[_0xea33('0x71')]['belongsTo'](db[_0xea33('0x6f')],{'as':_0xea33('0x191'),'foreignKey':_0xea33('0x190')});db[_0xea33('0x71')][_0xea33('0x11a')](db[_0xea33('0xf2')],{'as':_0xea33('0x172'),'foreignKey':_0xea33('0x164'),'onDelete':'cascade'});db[_0xea33('0x71')]['belongsToMany'](db[_0xea33('0x10a')],{'as':_0xea33('0x16e'),'through':_0xea33('0x11e')});db['CmContact'][_0xea33('0x120')](db[_0xea33('0x8d')],{'as':'Tags','through':'cm_contact_has_tags'});db[_0xea33('0x71')]['belongsToMany'](db[_0xea33('0x8d')],{'through':_0xea33('0x192'),'as':_0xea33('0x16d')});db[_0xea33('0x73')][_0xea33('0x11a')](db[_0xea33('0x71')],{'as':'Contact','foreignKey':_0xea33('0x15b'),'onDelete':_0xea33('0x109')});db[_0xea33('0x73')]['belongsTo'](db[_0xea33('0xf2')],{'as':'List','foreignKey':_0xea33('0x164'),'onDelete':_0xea33('0x109')});db[_0xea33('0x73')][_0xea33('0x11a')](db['User'],{'as':_0xea33('0x193'),'foreignKey':_0xea33('0x10d')});db[_0xea33('0x73')][_0xea33('0x11a')](db[_0xea33('0x1a')],{'as':_0xea33('0x187'),'foreignKey':'VoiceQueueId','onDelete':_0xea33('0x109')});db[_0xea33('0x73')]['belongsTo'](db['Campaign'],{'as':_0xea33('0x194'),'foreignKey':'CampaignId','onDelete':'cascade'});db[_0xea33('0x73')][_0xea33('0x11a')](db['User'],{'as':_0xea33('0x16a'),'foreignKey':_0xea33('0x195')});db['CmHopperBlack'][_0xea33('0x11a')](db[_0xea33('0x71')],{'as':_0xea33('0x15a'),'foreignKey':_0xea33('0x15b'),'onDelete':_0xea33('0x109')});db['CmHopperBlack'][_0xea33('0x11a')](db['CmList'],{'as':_0xea33('0x172'),'foreignKey':_0xea33('0x164'),'onDelete':_0xea33('0x109')});db[_0xea33('0x75')]['belongsTo'](db['VoiceQueue'],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0xea33('0x75')][_0xea33('0x11a')](db[_0xea33('0x194')],{'as':_0xea33('0x194'),'foreignKey':'CampaignId','onDelete':_0xea33('0x109')});db[_0xea33('0x196')][_0xea33('0x10b')](db[_0xea33('0x82')],{'as':{'plural':_0xea33('0x197'),'singular':_0xea33('0x198')},'foreignKey':_0xea33('0x199'),'onDelete':_0xea33('0x109'),'hooks':!![]});db[_0xea33('0x196')][_0xea33('0x10b')](db[_0xea33('0x82')],{'as':{'plural':_0xea33('0x19a'),'singular':_0xea33('0x19b')},'foreignKey':_0xea33('0x19c'),'onDelete':_0xea33('0x109'),'hooks':!![]});db['Automation'][_0xea33('0x10b')](db[_0xea33('0x7c')],{'as':'Actions','foreignKey':_0xea33('0x19d'),'onDelete':'cascade','hooks':!![]});db[_0xea33('0x80')][_0xea33('0x10b')](db[_0xea33('0x80')],{'as':_0xea33('0x15f'),'foreignKey':_0xea33('0x19e'),'onDelete':'cascade'});db[_0xea33('0x84')]['hasMany'](db[_0xea33('0x84')],{'as':_0xea33('0x19f'),'foreignKey':_0xea33('0x14e'),'onDelete':_0xea33('0x109'),'hooks':!![],'required':![]});db[_0xea33('0x84')][_0xea33('0x10b')](db[_0xea33('0x10f')],{'as':_0xea33('0x110'),'foreignKey':'IntervalId','onDelete':_0xea33('0x171')});db['Interval'][_0xea33('0x10b')](db[_0xea33('0x163')],{'as':'MailApplications','foreignKey':_0xea33('0x14e')});db[_0xea33('0x84')][_0xea33('0x10b')](db['ChatApplication'],{'as':'ChatApplications','foreignKey':_0xea33('0x14e')});db[_0xea33('0x84')][_0xea33('0x10b')](db['FaxApplication'],{'as':_0xea33('0x1a0'),'foreignKey':'IntervalId'});db[_0xea33('0x84')][_0xea33('0x10b')](db['SmsApplication'],{'as':_0xea33('0x1a1'),'foreignKey':_0xea33('0x14e')});db[_0xea33('0x8a')][_0xea33('0x11a')](db['MailAccount'],{});db['Schedule'][_0xea33('0x11a')](db[_0xea33('0x95')],{'foreignKey':'DefaultReportId'});db[_0xea33('0x8a')][_0xea33('0x11a')](db['AnalyticCustomReport'],{'foreignKey':_0xea33('0x1a2')});db['Sound'][_0xea33('0x120')](db[_0xea33('0x18')],{'as':_0xea33('0x1a3'),'through':_0xea33('0x143'),'onDelete':_0xea33('0x171')});db[_0xea33('0x8d')][_0xea33('0x120')](db[_0xea33('0x71')],{'through':_0xea33('0x192')});db[_0xea33('0x8d')]['belongsToMany'](db[_0xea33('0x67')],{'through':_0xea33('0x18a')});db[_0xea33('0x8d')][_0xea33('0x120')](db[_0xea33('0x43')],{'through':_0xea33('0x16b')});db[_0xea33('0x8d')][_0xea33('0x120')](db[_0xea33('0x113')],{'through':'sms_interaction_has_tags'});db['Tag'][_0xea33('0x120')](db[_0xea33('0x4e')],{'through':'fax_interaction_has_tags'});db[_0xea33('0x8d')][_0xea33('0x120')](db[_0xea33('0x5f')],{'through':_0xea33('0x183')});db[_0xea33('0x8d')][_0xea33('0x120')](db[_0xea33('0x127')],{'through':_0xea33('0x1a4')});db['Trigger'][_0xea33('0x10b')](db[_0xea33('0x82')],{'as':{'plural':'AllConditions','singular':_0xea33('0x1a5')},'foreignKey':_0xea33('0x1a6'),'onDelete':'cascade','hooks':!![]});db[_0xea33('0x8f')][_0xea33('0x10b')](db[_0xea33('0x82')],{'as':{'plural':_0xea33('0x1a7'),'singular':_0xea33('0x1a8')},'foreignKey':_0xea33('0x1a9'),'onDelete':_0xea33('0x109'),'hooks':!![]});db['Trigger'][_0xea33('0x10b')](db['Action'],{'as':_0xea33('0x1aa'),'foreignKey':_0xea33('0x1ab'),'onDelete':_0xea33('0x109'),'hooks':!![]});db[_0xea33('0x1ac')][_0xea33('0x10b')](db[_0xea33('0x9b')],{'as':_0xea33('0x1ad'),'onDelete':_0xea33('0x109'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport']['hasMany'](db[_0xea33('0x9b')],{'as':_0xea33('0x1ad'),'onDelete':'cascade','foreignKey':_0xea33('0x1ae')});db[_0xea33('0x99')][_0xea33('0x10b')](db[_0xea33('0x9b')],{'as':_0xea33('0x1ad'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1af')});db[_0xea33('0x9b')][_0xea33('0x11a')](db[_0xea33('0x99')],{'foreignKey':_0xea33('0x1af')});db[_0xea33('0x9d')][_0xea33('0x10b')](db[_0xea33('0x1b0')],{'as':_0xea33('0x1b1'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xea33('0x1b0')][_0xea33('0x10b')](db['SalesforceField'],{'as':_0xea33('0x1b2'),'onDelete':'cascade','foreignKey':_0xea33('0x1b3')});db[_0xea33('0x1b0')][_0xea33('0x10b')](db[_0xea33('0x1b4')],{'as':_0xea33('0x1b5'),'onDelete':_0xea33('0x109'),'foreignKey':'DescriptionId'});db[_0xea33('0x1b0')][_0xea33('0x10b')](db['SalesforceField'],{'as':_0xea33('0x1ad'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b6')});db[_0xea33('0x1b0')]['belongsTo'](db[_0xea33('0x9d')],{'as':_0xea33('0x169'),'foreignKey':_0xea33('0x1b7')});db[_0xea33('0x1b4')][_0xea33('0x10b')](db[_0xea33('0x1b4')],{'as':_0xea33('0x1b8'),'foreignKey':_0xea33('0x1b3')});db[_0xea33('0x1b4')][_0xea33('0x10b')](db['SalesforceField'],{'as':_0xea33('0x1b9'),'foreignKey':_0xea33('0x1ba')});db[_0xea33('0x1b4')][_0xea33('0x10b')](db[_0xea33('0x1b4')],{'as':'Field','foreignKey':_0xea33('0x1b6')});db['SalesforceField']['belongsTo'](db[_0xea33('0x90')],{'as':_0xea33('0x90'),'foreignKey':_0xea33('0x1bb')});db[_0xea33('0x1bc')]['hasMany'](db[_0xea33('0xa1')],{'as':'Configurations','onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b7')});db[_0xea33('0xa1')][_0xea33('0x10b')](db['SugarcrmField'],{'as':_0xea33('0x1b2'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b3')});db[_0xea33('0xa1')][_0xea33('0x10b')](db[_0xea33('0xa2')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0xea33('0x1ba')});db[_0xea33('0xa1')][_0xea33('0x10b')](db['SugarcrmField'],{'as':_0xea33('0x1ad'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b6')});db[_0xea33('0xa1')][_0xea33('0x11a')](db[_0xea33('0x1bc')],{'as':_0xea33('0x169'),'foreignKey':_0xea33('0x1b7')});db[_0xea33('0xa2')][_0xea33('0x10b')](db[_0xea33('0xa2')],{'as':'Subject','foreignKey':'SubjectId'});db['SugarcrmField']['hasMany'](db[_0xea33('0xa2')],{'as':_0xea33('0x1b9'),'foreignKey':_0xea33('0x1ba')});db[_0xea33('0xa2')][_0xea33('0x10b')](db['SugarcrmField'],{'as':'Field','foreignKey':_0xea33('0x1b6')});db[_0xea33('0xa2')][_0xea33('0x11a')](db[_0xea33('0x90')],{'as':_0xea33('0x90'),'foreignKey':'VariableId'});db[_0xea33('0xa4')][_0xea33('0x10b')](db['DeskConfiguration'],{'as':'Configurations','onDelete':_0xea33('0x109'),'foreignKey':'AccountId'});db[_0xea33('0xa6')][_0xea33('0x10b')](db['DeskField'],{'as':_0xea33('0x1b2'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b3')});db[_0xea33('0xa6')][_0xea33('0x10b')](db[_0xea33('0xa8')],{'as':'Descriptions','onDelete':_0xea33('0x109'),'foreignKey':'DescriptionId'});db[_0xea33('0xa6')][_0xea33('0x10b')](db['DeskField'],{'as':'Fields','onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b6')});db[_0xea33('0xa6')]['belongsTo'](db[_0xea33('0xa4')],{'as':_0xea33('0x169'),'foreignKey':'AccountId'});db['DeskConfiguration']['belongsToMany'](db[_0xea33('0x8d')],{'through':'int_desk_configuration_has_tags'});db[_0xea33('0xa8')][_0xea33('0x10b')](db['DeskField'],{'as':_0xea33('0x1b8'),'foreignKey':'SubjectId'});db['DeskField'][_0xea33('0x10b')](db['DeskField'],{'as':_0xea33('0x1b9'),'foreignKey':'DescriptionId'});db[_0xea33('0xa8')][_0xea33('0x10b')](db[_0xea33('0xa8')],{'as':_0xea33('0x1bd'),'foreignKey':_0xea33('0x1b6')});db['DeskField'][_0xea33('0x11a')](db['Variable'],{'as':'Variable','foreignKey':_0xea33('0x1bb')});db[_0xea33('0x1be')][_0xea33('0x10b')](db[_0xea33('0xab')],{'as':_0xea33('0x1b1'),'onDelete':_0xea33('0x109'),'foreignKey':'AccountId'});db[_0xea33('0xab')][_0xea33('0x10b')](db['ZohoField'],{'as':'Subjects','onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b3')});db[_0xea33('0xab')][_0xea33('0x10b')](db[_0xea33('0xad')],{'as':_0xea33('0x1b5'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1ba')});db[_0xea33('0xab')][_0xea33('0x10b')](db[_0xea33('0xad')],{'as':'Fields','onDelete':_0xea33('0x109'),'foreignKey':'FieldId'});db[_0xea33('0xab')][_0xea33('0x11a')](db[_0xea33('0x1be')],{'as':_0xea33('0x169'),'foreignKey':'AccountId'});db[_0xea33('0xad')][_0xea33('0x10b')](db['ZohoField'],{'as':_0xea33('0x1b8'),'foreignKey':_0xea33('0x1b3')});db[_0xea33('0xad')]['hasMany'](db['ZohoField'],{'as':_0xea33('0x1b9'),'foreignKey':_0xea33('0x1ba')});db[_0xea33('0xad')][_0xea33('0x10b')](db['ZohoField'],{'as':_0xea33('0x1bd'),'foreignKey':_0xea33('0x1b6')});db['ZohoField'][_0xea33('0x11a')](db['Variable'],{'as':_0xea33('0x90'),'foreignKey':_0xea33('0x1bb')});db[_0xea33('0x1bf')]['hasMany'](db[_0xea33('0xb0')],{'as':_0xea33('0x1b1'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b7')});db[_0xea33('0xb0')][_0xea33('0x10b')](db['ZendeskField'],{'as':_0xea33('0x1b2'),'foreignKey':_0xea33('0x1b3')});db['ZendeskConfiguration'][_0xea33('0x10b')](db['ZendeskField'],{'as':_0xea33('0x1b5'),'foreignKey':_0xea33('0x1ba')});db[_0xea33('0xb0')][_0xea33('0x10b')](db[_0xea33('0xb2')],{'as':'Fields','foreignKey':_0xea33('0x1b6')});db[_0xea33('0xb0')][_0xea33('0x11a')](db[_0xea33('0x1bf')],{'as':'Account','foreignKey':_0xea33('0x1b7')});db[_0xea33('0xb0')][_0xea33('0x120')](db[_0xea33('0x8d')],{'through':_0xea33('0x1c0')});db['ZendeskField'][_0xea33('0x10b')](db[_0xea33('0xb2')],{'as':_0xea33('0x1b8'),'foreignKey':'SubjectId'});db[_0xea33('0xb2')][_0xea33('0x10b')](db[_0xea33('0xb2')],{'as':_0xea33('0x1b9'),'foreignKey':_0xea33('0x1ba')});db[_0xea33('0xb2')][_0xea33('0x10b')](db[_0xea33('0xb2')],{'as':_0xea33('0x1bd'),'foreignKey':_0xea33('0x1b6')});db[_0xea33('0xb2')][_0xea33('0x11a')](db[_0xea33('0x90')],{'as':'Variable','foreignKey':'VariableId'});db[_0xea33('0x1c1')][_0xea33('0x10b')](db[_0xea33('0xb3')],{'as':'Configurations','onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b7')});db[_0xea33('0xb3')][_0xea33('0x10b')](db['FreshdeskField'],{'as':'Subjects','onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b3')});db[_0xea33('0xb3')]['hasMany'](db[_0xea33('0x1c2')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0xea33('0x1ba')});db[_0xea33('0xb3')][_0xea33('0x10b')](db[_0xea33('0x1c2')],{'as':_0xea33('0x1ad'),'onDelete':'cascade','foreignKey':_0xea33('0x1b6')});db[_0xea33('0xb3')]['belongsTo'](db[_0xea33('0x1c1')],{'as':'Account','foreignKey':_0xea33('0x1b7')});db[_0xea33('0xb3')][_0xea33('0x120')](db['Tag'],{'through':_0xea33('0x1c3')});db['FreshdeskField'][_0xea33('0x10b')](db[_0xea33('0x1c2')],{'as':'Subject','foreignKey':_0xea33('0x1b3')});db['FreshdeskField'][_0xea33('0x10b')](db[_0xea33('0x1c2')],{'as':_0xea33('0x1b9'),'foreignKey':_0xea33('0x1ba')});db['FreshdeskField'][_0xea33('0x10b')](db[_0xea33('0x1c2')],{'as':_0xea33('0x1bd'),'foreignKey':_0xea33('0x1b6')});db[_0xea33('0x1c2')][_0xea33('0x11a')](db['Variable'],{'as':_0xea33('0x90'),'foreignKey':_0xea33('0x1bb')});db[_0xea33('0xb6')][_0xea33('0x10b')](db['VtigerConfiguration'],{'as':'Configurations','onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b7')});db[_0xea33('0xb8')][_0xea33('0x10b')](db[_0xea33('0x1c4')],{'as':_0xea33('0x1b2'),'foreignKey':_0xea33('0x1b3')});db['VtigerConfiguration'][_0xea33('0x10b')](db[_0xea33('0x1c4')],{'as':_0xea33('0x1b5'),'foreignKey':_0xea33('0x1ba')});db[_0xea33('0xb8')][_0xea33('0x10b')](db[_0xea33('0x1c4')],{'as':_0xea33('0x1ad'),'foreignKey':_0xea33('0x1b6')});db[_0xea33('0xb8')][_0xea33('0x11a')](db['VtigerAccount'],{'as':_0xea33('0x169'),'foreignKey':_0xea33('0x1b7')});db[_0xea33('0x1c4')]['hasMany'](db[_0xea33('0x1c4')],{'as':_0xea33('0x1b8'),'foreignKey':'SubjectId'});db['VtigerField']['hasMany'](db[_0xea33('0x1c4')],{'as':_0xea33('0x1b9'),'foreignKey':'DescriptionId'});db['VtigerField']['hasMany'](db['VtigerField'],{'as':'Field','foreignKey':_0xea33('0x1b6')});db[_0xea33('0x1c4')][_0xea33('0x11a')](db[_0xea33('0x90')],{'as':_0xea33('0x90'),'foreignKey':_0xea33('0x1bb')});db['ServicenowAccount'][_0xea33('0x10b')](db['ServicenowConfiguration'],{'as':_0xea33('0x1b1'),'onDelete':_0xea33('0x109'),'foreignKey':'AccountId'});db[_0xea33('0xbb')][_0xea33('0x10b')](db[_0xea33('0xbc')],{'as':_0xea33('0x1b2'),'foreignKey':'SubjectId'});db[_0xea33('0xbb')]['hasMany'](db[_0xea33('0xbc')],{'as':'Descriptions','foreignKey':_0xea33('0x1ba')});db[_0xea33('0xbb')][_0xea33('0x10b')](db[_0xea33('0xbc')],{'as':'Fields','foreignKey':_0xea33('0x1b6')});db[_0xea33('0xbb')]['belongsTo'](db[_0xea33('0x1c5')],{'as':_0xea33('0x169'),'foreignKey':'AccountId'});db[_0xea33('0xbc')]['hasMany'](db['ServicenowField'],{'as':'Subject','foreignKey':_0xea33('0x1b3')});db[_0xea33('0xbc')]['hasMany'](db[_0xea33('0xbc')],{'as':_0xea33('0x1b9'),'foreignKey':_0xea33('0x1ba')});db[_0xea33('0xbc')][_0xea33('0x10b')](db[_0xea33('0xbc')],{'as':_0xea33('0x1bd'),'foreignKey':_0xea33('0x1b6')});db[_0xea33('0xbc')][_0xea33('0x11a')](db['Variable'],{'as':_0xea33('0x90'),'foreignKey':'VariableId'});db[_0xea33('0xbe')]['hasMany'](db[_0xea33('0xbf')],{'as':_0xea33('0x1b1'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xea33('0xbf')][_0xea33('0x10b')](db[_0xea33('0xc1')],{'as':_0xea33('0x1b2'),'onDelete':'cascade','foreignKey':_0xea33('0x1b3')});db['Dynamics365Configuration'][_0xea33('0x10b')](db['Dynamics365Field'],{'as':_0xea33('0x1b5'),'onDelete':_0xea33('0x109'),'foreignKey':'DescriptionId'});db[_0xea33('0xbf')][_0xea33('0x10b')](db[_0xea33('0xc1')],{'as':_0xea33('0x1ad'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b6')});db[_0xea33('0xbf')][_0xea33('0x11a')](db['Dynamics365Account'],{'as':_0xea33('0x169'),'foreignKey':'AccountId'});db[_0xea33('0xc1')]['hasMany'](db['Dynamics365Field'],{'as':_0xea33('0x1b8'),'foreignKey':'SubjectId'});db[_0xea33('0xc1')][_0xea33('0x10b')](db[_0xea33('0xc1')],{'as':_0xea33('0x1b9'),'foreignKey':_0xea33('0x1ba')});db[_0xea33('0xc1')][_0xea33('0x10b')](db[_0xea33('0xc1')],{'as':_0xea33('0x1bd'),'foreignKey':_0xea33('0x1b6')});db[_0xea33('0xc1')]['belongsTo'](db[_0xea33('0x90')],{'as':_0xea33('0x90'),'foreignKey':_0xea33('0x1bb')});db['FreshsalesAccount'][_0xea33('0x10b')](db[_0xea33('0xc4')],{'as':_0xea33('0x1b1'),'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1b7')});db[_0xea33('0xc4')]['hasMany'](db[_0xea33('0xc6')],{'as':'Subjects','foreignKey':'SubjectId'});db['FreshsalesConfiguration']['hasMany'](db[_0xea33('0xc6')],{'as':_0xea33('0x1b5'),'foreignKey':_0xea33('0x1ba')});db[_0xea33('0xc4')][_0xea33('0x10b')](db[_0xea33('0xc6')],{'as':_0xea33('0x1ad'),'foreignKey':'FieldId'});db[_0xea33('0xc4')][_0xea33('0x11a')](db['FreshsalesAccount'],{'as':_0xea33('0x169'),'foreignKey':'AccountId'});db[_0xea33('0xc6')][_0xea33('0x10b')](db[_0xea33('0xc6')],{'as':_0xea33('0x1b8'),'foreignKey':'SubjectId'});db[_0xea33('0xc6')]['hasMany'](db[_0xea33('0xc6')],{'as':_0xea33('0x1b9'),'foreignKey':'DescriptionId'});db[_0xea33('0xc6')][_0xea33('0x10b')](db['FreshsalesField'],{'as':'Field','foreignKey':_0xea33('0x1b6')});db['FreshsalesField'][_0xea33('0x11a')](db[_0xea33('0x90')],{'as':_0xea33('0x90'),'foreignKey':'VariableId'});db['ChatQueueReport']['belongsTo'](db[_0xea33('0x131')],{});db[_0xea33('0xca')][_0xea33('0x11a')](db[_0xea33('0xf2')],{'as':_0xea33('0x172'),'foreignKey':_0xea33('0x164')});db[_0xea33('0xca')][_0xea33('0x11a')](db[_0xea33('0x71')],{'as':_0xea33('0x15a'),'foreignKey':'ContactId'});db['ChatQueueReport']['belongsTo'](db[_0xea33('0x67')],{});db[_0xea33('0xca')][_0xea33('0x11a')](db['ChatMessage'],{});db[_0xea33('0xca')][_0xea33('0x11a')](db[_0xea33('0x10a')],{});db[_0xea33('0xca')][_0xea33('0x11a')](db['ChatQueue'],{});db[_0xea33('0xcc')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1c6')});db[_0xea33('0xcc')]['belongsTo'](db[_0xea33('0x10a')],{'onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x1c7')});db['JscriptySessionReport'][_0xea33('0x10b')](db[_0xea33('0xcf')],{'foreignKey':'SessionId','onDelete':_0xea33('0x109')});db[_0xea33('0xd1')][_0xea33('0x10b')](db[_0xea33('0x1c8')],{'foreignKey':_0xea33('0x1c9'),'onDelete':_0xea33('0x109')});db[_0xea33('0xd3')][_0xea33('0x11a')](db[_0xea33('0x17a')],{});db[_0xea33('0xd3')][_0xea33('0x11a')](db[_0xea33('0xf2')],{'as':_0xea33('0x172'),'foreignKey':_0xea33('0x164')});db[_0xea33('0xd3')][_0xea33('0x11a')](db['CmContact'],{'as':'Contact','foreignKey':_0xea33('0x15b')});db['SmsQueueReport'][_0xea33('0x11a')](db[_0xea33('0x113')],{});db[_0xea33('0xd3')][_0xea33('0x11a')](db['SmsMessage'],{});db[_0xea33('0xd3')][_0xea33('0x11a')](db[_0xea33('0x10a')],{});db[_0xea33('0xd3')][_0xea33('0x11a')](db['SmsQueue'],{});db['JscriptyProject'][_0xea33('0x10b')](db[_0xea33('0xd1')],{'foreignKey':_0xea33('0x1ca')});db['JscriptyProject'][_0xea33('0x10b')](db['JscriptyQuestionReport'],{'foreignKey':_0xea33('0x1ca')});db[_0xea33('0xd7')][_0xea33('0x10b')](db['JscriptyAnswerReport'],{'foreignKey':_0xea33('0x1ca')});db[_0xea33('0xdb')][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':'Users','through':_0xea33('0x13e')});db[_0xea33('0xe1')][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':'Agents','through':'user_has_teams'});db['Team'][_0xea33('0x120')](db[_0xea33('0x1a')],{'through':_0xea33('0x1cb'),'as':'VoiceQueues'});db[_0xea33('0xe1')][_0xea33('0x120')](db[_0xea33('0x12a')],{'through':_0xea33('0x1cc'),'as':_0xea33('0x1cd')});db[_0xea33('0xe1')][_0xea33('0x120')](db[_0xea33('0x6a')],{'through':_0xea33('0x18d'),'as':'ChatQueues'});db[_0xea33('0xe1')][_0xea33('0x120')](db[_0xea33('0x51')],{'through':'team_has_fax_queues','as':_0xea33('0x12c')});db['Team']['belongsToMany'](db['SmsQueue'],{'through':_0xea33('0x17f'),'as':_0xea33('0x1ce')});db[_0xea33('0xe1')]['belongsToMany'](db[_0xea33('0x60')],{'through':_0xea33('0x185'),'as':_0xea33('0x1cf')});db[_0xea33('0xe1')][_0xea33('0x120')](db[_0xea33('0x104')],{'through':'team_has_whatsapp_queues','as':'WhatsappQueues'});db[_0xea33('0x194')][_0xea33('0x10b')](db[_0xea33('0x73')],{'as':_0xea33('0x145'),'foreignKey':_0xea33('0x1d0')});db['Campaign'][_0xea33('0x10b')](db[_0xea33('0x147')],{'as':'HopperFinals','foreignKey':'CampaignId'});db[_0xea33('0x194')][_0xea33('0x10b')](db[_0xea33('0x77')],{'as':'HopperHistories','foreignKey':_0xea33('0x1d0')});db[_0xea33('0x194')][_0xea33('0x10b')](db['CmHopperBlack'],{'as':_0xea33('0x149'),'foreignKey':_0xea33('0x1d0')});db['Campaign'][_0xea33('0x11a')](db[_0xea33('0x2c')],{'as':'Trunk','foreignKey':_0xea33('0x14b')});db[_0xea33('0x194')][_0xea33('0x11a')](db[_0xea33('0x2c')],{'as':'TrunkBackup','foreignKey':_0xea33('0x14d')});db[_0xea33('0x194')][_0xea33('0x11a')](db[_0xea33('0x84')],{'as':_0xea33('0x84'),'foreignKey':'IntervalId'});db['Campaign']['belongsTo'](db[_0xea33('0xdb')],{'as':_0xea33('0xdb'),'foreignKey':_0xea33('0x1d1')});db[_0xea33('0x194')][_0xea33('0x120')](db['CmList'],{'as':_0xea33('0x11f'),'through':_0xea33('0x1d2')});db[_0xea33('0x194')][_0xea33('0x120')](db[_0xea33('0xf2')],{'as':_0xea33('0x1d3'),'through':'campaigns_has_cm_blacklists'});db[_0xea33('0xe7')]['belongsTo'](db[_0xea33('0x69')],{'as':'ChatOfflineMessage','foreignKey':_0xea33('0x170')});db[_0xea33('0xeb')][_0xea33('0x11a')](db[_0xea33('0x161')],{});db[_0xea33('0xeb')]['belongsTo'](db[_0xea33('0x43')],{});db[_0xea33('0xeb')][_0xea33('0x11a')](db[_0xea33('0x40')],{'foreignKey':'FromMailAccountId','as':_0xea33('0x1d4')});db[_0xea33('0xeb')][_0xea33('0x11a')](db['User'],{'foreignKey':_0xea33('0x1d5'),'as':_0xea33('0x1d6')});db[_0xea33('0xeb')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'foreignKey':_0xea33('0x1d7'),'as':'ToAgent'});db[_0xea33('0xeb')][_0xea33('0x11a')](db['MailQueue'],{'foreignKey':_0xea33('0x1d8'),'as':_0xea33('0x1d9')});db['MailTransferReport'][_0xea33('0x11a')](db[_0xea33('0x40')],{'foreignKey':_0xea33('0x1da'),'as':_0xea33('0x1db')});db[_0xea33('0xed')][_0xea33('0x11a')](db[_0xea33('0x18b')],{});db[_0xea33('0xed')][_0xea33('0x11a')](db[_0xea33('0x67')],{});db['ChatTransferReport'][_0xea33('0x11a')](db['ChatWebsite'],{'foreignKey':_0xea33('0x1dc'),'as':_0xea33('0x1d4')});db[_0xea33('0xed')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'foreignKey':'FromUserId','as':_0xea33('0x1d6')});db[_0xea33('0xed')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'foreignKey':_0xea33('0x1d7'),'as':_0xea33('0x1dd')});db['ChatTransferReport'][_0xea33('0x11a')](db[_0xea33('0x6a')],{'foreignKey':_0xea33('0x1de'),'as':_0xea33('0x1d9')});db[_0xea33('0xed')][_0xea33('0x11a')](db[_0xea33('0x131')],{'foreignKey':_0xea33('0x1df'),'as':_0xea33('0x1db')});db[_0xea33('0xee')][_0xea33('0x11a')](db[_0xea33('0x4f')],{});db['FaxTransferReport']['belongsTo'](db[_0xea33('0x4e')],{});db['FaxTransferReport']['belongsTo'](db[_0xea33('0x4b')],{'foreignKey':_0xea33('0x1e0'),'as':_0xea33('0x1d4')});db[_0xea33('0xee')]['belongsTo'](db[_0xea33('0x10a')],{'foreignKey':_0xea33('0x1d5'),'as':'FromAgent'});db['FaxTransferReport'][_0xea33('0x11a')](db[_0xea33('0x10a')],{'foreignKey':_0xea33('0x1d7'),'as':_0xea33('0x1dd')});db[_0xea33('0xee')][_0xea33('0x11a')](db[_0xea33('0x51')],{'foreignKey':_0xea33('0x1e1'),'as':'ToQueue'});db[_0xea33('0xee')][_0xea33('0x11a')](db[_0xea33('0x4b')],{'foreignKey':'ToFaxAccountId','as':_0xea33('0x1db')});db[_0xea33('0xf0')][_0xea33('0x11a')](db['OpenchannelMessage'],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0xea33('0xf0')]['belongsTo'](db[_0xea33('0x5c')],{'foreignKey':'FromOpenchannelAccountId','as':_0xea33('0x1d4')});db[_0xea33('0xf0')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'foreignKey':'FromUserId','as':_0xea33('0x1d6')});db[_0xea33('0xf0')]['belongsTo'](db['User'],{'foreignKey':_0xea33('0x1d7'),'as':_0xea33('0x1dd')});db['OpenchannelTransferReport'][_0xea33('0x11a')](db[_0xea33('0x60')],{'foreignKey':_0xea33('0x1e2'),'as':_0xea33('0x1d9')});db['OpenchannelTransferReport'][_0xea33('0x11a')](db[_0xea33('0x5c')],{'foreignKey':_0xea33('0x1e3'),'as':_0xea33('0x1db')});db[_0xea33('0xf1')][_0xea33('0x11a')](db[_0xea33('0x58')],{});db['SmsTransferReport'][_0xea33('0x11a')](db[_0xea33('0x113')],{});db[_0xea33('0xf1')][_0xea33('0x11a')](db['SmsAccount'],{'foreignKey':_0xea33('0x1e4'),'as':_0xea33('0x1d4')});db[_0xea33('0xf1')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'foreignKey':_0xea33('0x1d5'),'as':_0xea33('0x1d6')});db['SmsTransferReport'][_0xea33('0x11a')](db[_0xea33('0x10a')],{'foreignKey':_0xea33('0x1d7'),'as':_0xea33('0x1dd')});db['SmsTransferReport'][_0xea33('0x11a')](db[_0xea33('0x5a')],{'foreignKey':'ToSmsQueueId','as':_0xea33('0x1d9')});db[_0xea33('0xf1')][_0xea33('0x11a')](db[_0xea33('0x17a')],{'foreignKey':'ToSmsAccountId','as':_0xea33('0x1db')});db[_0xea33('0xf2')][_0xea33('0x10b')](db['Disposition'],{'as':_0xea33('0x15f'),'foreignKey':_0xea33('0x164'),'onDelete':'cascade'});db[_0xea33('0xf2')][_0xea33('0x10b')](db[_0xea33('0x7a')],{'as':_0xea33('0x1e5'),'foreignKey':_0xea33('0x164')});db['CmList'][_0xea33('0x10b')](db[_0xea33('0x71')],{'as':'Contacts','onDelete':_0xea33('0x109'),'foreignKey':_0xea33('0x164')});db[_0xea33('0xf2')][_0xea33('0x10b')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0xea33('0x164')});db[_0xea33('0xf2')][_0xea33('0x10b')](db[_0xea33('0x77')],{'as':_0xea33('0x1e6'),'foreignKey':'ListId'});db[_0xea33('0xf2')][_0xea33('0x10b')](db[_0xea33('0x79')],{'as':_0xea33('0x79'),'foreignKey':_0xea33('0x164')});db[_0xea33('0xf2')][_0xea33('0x120')](db[_0xea33('0x1a')],{'as':'Queues','through':_0xea33('0x150')});db[_0xea33('0xf2')]['belongsToMany'](db['User'],{'as':_0xea33('0x151'),'through':_0xea33('0x12e')});db['VoicePrefix'][_0xea33('0x10b')](db['VoiceExtension'],{'as':_0xea33('0x110'),'onDelete':'cascade'});db[_0xea33('0xf4')][_0xea33('0x120')](db['User'],{'as':'Agents','through':_0xea33('0x130')});db[_0xea33('0xf5')][_0xea33('0x10b')](db[_0xea33('0x10a')],{'as':_0xea33('0x16e'),'foreignKey':_0xea33('0x11b')});db[_0xea33('0xf5')][_0xea33('0x10b')](db[_0xea33('0xf6')],{'as':_0xea33('0x1e7'),'foreignKey':_0xea33('0x11b'),'onDelete':_0xea33('0x109')});db[_0xea33('0xf6')][_0xea33('0x10b')](db['UserProfileResource'],{'as':_0xea33('0x1e8'),'foreignKey':'sectionId','onDelete':_0xea33('0x109')});db[_0xea33('0x13a')][_0xea33('0x10b')](db[_0xea33('0x80')],{'as':'Dispositions','foreignKey':_0xea33('0x1e9'),'onDelete':_0xea33('0x109')});db[_0xea33('0x13a')]['hasMany'](db[_0xea33('0x7f')],{'as':'Answers','foreignKey':_0xea33('0x1e9')});db[_0xea33('0x13a')][_0xea33('0x10b')](db[_0xea33('0xfe')],{'as':_0xea33('0x167'),'foreignKey':_0xea33('0x1e9')});db['WhatsappAccount'][_0xea33('0x10b')](db[_0xea33('0x127')],{'as':'Interactions'});db[_0xea33('0x13a')][_0xea33('0x10b')](db[_0xea33('0xfc')],{'as':'Applications'});db[_0xea33('0x13a')][_0xea33('0x11a')](db[_0xea33('0xf2')],{'as':_0xea33('0x172'),'foreignKey':_0xea33('0x164')});db[_0xea33('0x13a')]['belongsTo'](db['Pause'],{'as':_0xea33('0x166'),'foreignKey':_0xea33('0x14f')});db[_0xea33('0x13a')][_0xea33('0x120')](db['User'],{'as':_0xea33('0x151'),'through':'user_has_whatsapp_accounts'});db[_0xea33('0xfc')][_0xea33('0x11a')](db['User'],{'onDelete':_0xea33('0x171')});db['WhatsappApplication'][_0xea33('0x11a')](db[_0xea33('0x104')],{'onDelete':_0xea33('0x171')});db[_0xea33('0xfc')][_0xea33('0x11a')](db[_0xea33('0x13a')],{'onDelete':_0xea33('0x171')});db[_0xea33('0xfc')][_0xea33('0x11a')](db[_0xea33('0x84')],{'onDelete':_0xea33('0x171'),'foreignKey':_0xea33('0x14e')});db[_0xea33('0xfc')][_0xea33('0x11a')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xea33('0x127')][_0xea33('0x10b')](db[_0xea33('0xfe')],{'as':_0xea33('0x167'),'onDelete':'cascade','foreignKey':_0xea33('0x1ea')});db[_0xea33('0x127')]['belongsTo'](db[_0xea33('0x13a')],{'as':_0xea33('0x169'),'foreignKey':_0xea33('0x1e9')});db[_0xea33('0x127')][_0xea33('0x11a')](db['CmContact'],{'as':'Contact','foreignKey':_0xea33('0x15b')});db[_0xea33('0x127')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'as':_0xea33('0x16a'),'foreignKey':'UserId'});db[_0xea33('0x127')][_0xea33('0x120')](db['Tag'],{'through':_0xea33('0x1a4'),'as':_0xea33('0x16c')});db[_0xea33('0x127')][_0xea33('0x120')](db[_0xea33('0x8d')],{'through':'whatsapp_interaction_has_tags','as':'ThroughTags'});db[_0xea33('0x127')][_0xea33('0x120')](db['User'],{'as':'Users','through':'user_has_whatsapp_interactions','foreignKey':_0xea33('0x1ea')});db[_0xea33('0xfe')][_0xea33('0x11a')](db['User'],{'as':_0xea33('0x10a')});db[_0xea33('0xfe')][_0xea33('0x11a')](db[_0xea33('0x71')],{'onDelete':_0xea33('0x109'),'as':_0xea33('0x15a')});db[_0xea33('0xfe')][_0xea33('0x11a')](db[_0xea33('0x127')],{'onDelete':'cascade','as':_0xea33('0x178'),'foreignKey':_0xea33('0x1ea')});db[_0xea33('0xfe')][_0xea33('0x11a')](db[_0xea33('0x13a')],{'as':'Account','foreignKey':_0xea33('0x1e9')});db[_0xea33('0x100')][_0xea33('0x11a')](db[_0xea33('0x13a')],{});db['WhatsappQueueReport'][_0xea33('0x11a')](db[_0xea33('0xf2')],{'as':_0xea33('0x172'),'foreignKey':_0xea33('0x164')});db[_0xea33('0x100')][_0xea33('0x11a')](db[_0xea33('0x71')],{'as':_0xea33('0x15a'),'foreignKey':'ContactId'});db[_0xea33('0x100')][_0xea33('0x11a')](db[_0xea33('0x127')],{});db['WhatsappQueueReport']['belongsTo'](db[_0xea33('0x104')],{});db[_0xea33('0x100')]['belongsTo'](db['WhatsappMessage'],{});db[_0xea33('0x100')][_0xea33('0x11a')](db[_0xea33('0x10a')],{});db[_0xea33('0x102')]['belongsTo'](db['WhatsappMessage'],{});db['WhatsappTransferReport'][_0xea33('0x11a')](db['WhatsappInteraction'],{});db[_0xea33('0x102')][_0xea33('0x11a')](db[_0xea33('0x13a')],{'foreignKey':_0xea33('0x1eb'),'as':'FromAccount'});db['WhatsappTransferReport'][_0xea33('0x11a')](db[_0xea33('0x13a')],{'foreignKey':_0xea33('0x1ec'),'as':_0xea33('0x1db')});db[_0xea33('0x102')][_0xea33('0x11a')](db[_0xea33('0x104')],{'foreignKey':_0xea33('0x1ed'),'as':_0xea33('0x1d9')});db[_0xea33('0x102')][_0xea33('0x11a')](db[_0xea33('0x10a')],{'foreignKey':_0xea33('0x1d5'),'as':_0xea33('0x1d6')});db[_0xea33('0x102')]['belongsTo'](db[_0xea33('0x10a')],{'foreignKey':_0xea33('0x1d7'),'as':_0xea33('0x1dd')});db[_0xea33('0x104')][_0xea33('0x120')](db[_0xea33('0x10a')],{'as':_0xea33('0x151'),'through':'UserWhatsappQueue','foreignKey':_0xea33('0x1ee')});db[_0xea33('0x104')][_0xea33('0x120')](db[_0xea33('0xe1')],{'through':'team_has_whatsapp_queues','as':_0xea33('0x152')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index 2019166..d8edbcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x004e=['./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','./api/intZohoField','./api/intZendeskAccount','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','./api/intFreshdeskField','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/fields','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','./api/intFreshsalesField','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','./api/jscriptySessionReport','/api/sms/reports/queue','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','./api/attachment','/api/plugins','/api/mail/reports/transfer','/api/fax/reports/transfer','./api/faxTransferReport','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileResource','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','/api/rpc','./api/rpc','./api/version','/api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/apidoc','root','/www','static','join','/demo','/snippet','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','appPath','/index.html','username','lastName','street','phone','mobile','email','clientSecret','securityToken','code','accessKey','tenantId','token','channelSecret','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','vidaooApiKey','clientEmail','privateKey','accesskeyid','key','accountSid','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray','isString','replace','@@{','includes','path','express','express-winston','util','./config/environment','./config/logger','api','default','use','logger','isEmpty','body','\x20body=%s','method','headers','x-forwarded-for','connection','url','statusCode','responseTime','user','name','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','agent_name','test','/api/users','./api/user','./api/voiceChanSpy','/api/voice/contexts','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','/api/voice/queues/reports','/api/trunks','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','/api/mail/interactions','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','/api/fax/applications','./api/faxApplication','/api/fax/interactions','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/smsAccount','/api/sms/applications','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','/api/sms/queues','./api/smsQueue','./api/openchannelAccount','/api/openchannel/applications','/api/openchannel/interactions','./api/openchannelInteraction','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','/api/chat/proactive_actions','./api/chatProactiveAction','/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/custom_fields','./api/cmCustomField','/api/actions','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','./api/condition','./api/interval','/api/pauses','./api/pause','/api/voiceQueuesLog','/api/schedules','/api/sounds','./api/sound','/api/tags','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','/api/integrations/reports','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x004e,0xad));var _0xe004=function(_0xa2f6d8,_0x586241){_0xa2f6d8=_0xa2f6d8-0x0;var _0x35c446=_0x004e[_0xa2f6d8];return _0x35c446;};'use strict';var _=require('lodash');var path=require(_0xe004('0x0'));var express=require(_0xe004('0x1'));var ewinston=require(_0xe004('0x2'));var util=require(_0xe004('0x3'));var errors=require('./errors');var config=require(_0xe004('0x4'));var logger=require(_0xe004('0x5'))(_0xe004('0x6'));var authLogger=require(_0xe004('0x5'))('auth');exports[_0xe004('0x7')]=function(_0xbfae69){_0xbfae69[_0xe004('0x8')](ewinston[_0xe004('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x3a76ac,_0x5b4118){var _0x1a4d51='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0xe004('0xa')](_0x3a76ac[_0xe004('0xb')])){_0x1a4d51+=_0xe004('0xc');var _0x5ae045=_0x3a76ac[_0xe004('0xb')];maskSensitiveData(_0x5ae045);}return util['format'](_0x1a4d51,_0x3a76ac[_0xe004('0xd')],_0x3a76ac[_0xe004('0xe')][_0xe004('0xf')]?_0x3a76ac[_0xe004('0xe')][_0xe004('0xf')]:_0x3a76ac[_0xe004('0x10')]['remoteAddress']||_0x3a76ac['ip'],_0x3a76ac[_0xe004('0x11')],_0x5b4118[_0xe004('0x12')],_0x5b4118[_0xe004('0x13')],_0x3a76ac[_0xe004('0x14')]?_0x3a76ac[_0xe004('0x14')]['id']:null,_0x3a76ac['user']?_0x3a76ac[_0xe004('0x14')][_0xe004('0x15')]:null,_0x3a76ac['user']?_0x3a76ac[_0xe004('0x14')][_0xe004('0x16')]:null,_0x5ae045?util[_0xe004('0x17')](_0x5ae045,![],null):'');}}));_0xbfae69[_0xe004('0x8')](ewinston[_0xe004('0x9')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x35c330,_0x285d61){var _0x2295d9=_0xe004('0x18');if(_0x35c330['body']&&_0x35c330[_0xe004('0xb')][_0xe004('0x19')]&&_0x35c330['body'][_0xe004('0x1a')]){_0x2295d9=_0xe004('0x1b');}return util[_0xe004('0x1c')](_0x2295d9,_0x35c330[_0xe004('0xd')],_0x35c330[_0xe004('0xe')]['x-forwarded-for']?_0x35c330[_0xe004('0xe')][_0xe004('0xf')]:_0x35c330[_0xe004('0x10')]['remoteAddress']||_0x35c330['ip'],_0x35c330[_0xe004('0x11')],_0x285d61[_0xe004('0x12')],_0x285d61[_0xe004('0x13')],_0x35c330['user']?_0x35c330[_0xe004('0x14')]['id']:null,_0x35c330[_0xe004('0x14')]?_0x35c330['user'][_0xe004('0x15')]:null,_0x35c330[_0xe004('0x14')]?_0x35c330[_0xe004('0x14')]['role']:null,_0x35c330[_0xe004('0xb')]&&_0x35c330['body'][_0xe004('0x19')]?_0x35c330[_0xe004('0xb')]['device']:'other',_0x35c330[_0xe004('0xb')]&&_0x35c330[_0xe004('0xb')]['agent_id']?_0x35c330[_0xe004('0xb')][_0xe004('0x1a')]:'',_0x35c330[_0xe004('0xb')]&&_0x35c330[_0xe004('0xb')]['agent_name']?_0x35c330[_0xe004('0xb')][_0xe004('0x1d')]:'');},'ignoreRoute':function(_0x4f901d){var _0x573b21=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x573b21[_0xe004('0x1e')](_0x4f901d[_0xe004('0x11')]);}}));_0xbfae69[_0xe004('0x8')](_0xe004('0x1f'),require(_0xe004('0x20')));_0xbfae69[_0xe004('0x8')]('/api/voice/chanspy',require(_0xe004('0x21')));_0xbfae69[_0xe004('0x8')](_0xe004('0x22'),require('./api/voiceContext'));_0xbfae69[_0xe004('0x8')](_0xe004('0x23'),require(_0xe004('0x24')));_0xbfae69[_0xe004('0x8')](_0xe004('0x25'),require(_0xe004('0x26')));_0xbfae69[_0xe004('0x8')](_0xe004('0x27'),require('./api/voiceQueue'));_0xbfae69[_0xe004('0x8')](_0xe004('0x28'),require(_0xe004('0x29')));_0xbfae69[_0xe004('0x8')](_0xe004('0x2a'),require(_0xe004('0x2b')));_0xbfae69[_0xe004('0x8')]('/api/voice/mails',require(_0xe004('0x2c')));_0xbfae69[_0xe004('0x8')](_0xe004('0x2d'),require(_0xe004('0x2e')));_0xbfae69[_0xe004('0x8')](_0xe004('0x2f'),require('./api/voiceCallReport'));_0xbfae69['use'](_0xe004('0x30'),require(_0xe004('0x31')));_0xbfae69['use'](_0xe004('0x32'),require('./api/voiceAgentReport'));_0xbfae69[_0xe004('0x8')](_0xe004('0x33'),require('./api/voiceQueueReport'));_0xbfae69[_0xe004('0x8')]('/api/members/reports',require('./api/memberReport'));_0xbfae69[_0xe004('0x8')](_0xe004('0x34'),require('./api/trunk'));_0xbfae69[_0xe004('0x8')](_0xe004('0x35'),require(_0xe004('0x36')));_0xbfae69[_0xe004('0x8')](_0xe004('0x37'),require(_0xe004('0x38')));_0xbfae69[_0xe004('0x8')]('/api/mail/accounts',require(_0xe004('0x39')));_0xbfae69[_0xe004('0x8')](_0xe004('0x3a'),require(_0xe004('0x3b')));_0xbfae69['use'](_0xe004('0x3c'),require('./api/mailSubstatus'));_0xbfae69[_0xe004('0x8')](_0xe004('0x3d'),require('./api/mailInteraction'));_0xbfae69[_0xe004('0x8')](_0xe004('0x3e'),require(_0xe004('0x3f')));_0xbfae69[_0xe004('0x8')](_0xe004('0x40'),require(_0xe004('0x41')));_0xbfae69[_0xe004('0x8')]('/api/mail/reports/queue',require(_0xe004('0x42')));_0xbfae69[_0xe004('0x8')](_0xe004('0x43'),require(_0xe004('0x44')));_0xbfae69[_0xe004('0x8')](_0xe004('0x45'),require(_0xe004('0x46')));_0xbfae69[_0xe004('0x8')](_0xe004('0x47'),require('./api/faxAccount'));_0xbfae69[_0xe004('0x8')](_0xe004('0x48'),require(_0xe004('0x49')));_0xbfae69['use'](_0xe004('0x4a'),require('./api/faxInteraction'));_0xbfae69[_0xe004('0x8')](_0xe004('0x4b'),require(_0xe004('0x4c')));_0xbfae69[_0xe004('0x8')](_0xe004('0x4d'),require(_0xe004('0x4e')));_0xbfae69[_0xe004('0x8')](_0xe004('0x4f'),require('./api/faxQueueReport'));_0xbfae69[_0xe004('0x8')]('/api/sms/accounts',require(_0xe004('0x50')));_0xbfae69[_0xe004('0x8')](_0xe004('0x51'),require('./api/smsApplication'));_0xbfae69['use'](_0xe004('0x52'),require(_0xe004('0x53')));_0xbfae69[_0xe004('0x8')](_0xe004('0x54'),require('./api/smsMessage'));_0xbfae69[_0xe004('0x8')](_0xe004('0x55'),require(_0xe004('0x56')));_0xbfae69[_0xe004('0x8')]('/api/openchannel/accounts',require(_0xe004('0x57')));_0xbfae69['use'](_0xe004('0x58'),require('./api/openchannelApplication'));_0xbfae69[_0xe004('0x8')](_0xe004('0x59'),require(_0xe004('0x5a')));_0xbfae69[_0xe004('0x8')]('/api/openchannel/messages',require(_0xe004('0x5b')));_0xbfae69[_0xe004('0x8')](_0xe004('0x5c'),require(_0xe004('0x5d')));_0xbfae69[_0xe004('0x8')](_0xe004('0x5e'),require('./api/chatWebsite'));_0xbfae69['use'](_0xe004('0x5f'),require(_0xe004('0x60')));_0xbfae69[_0xe004('0x8')](_0xe004('0x61'),require(_0xe004('0x62')));_0xbfae69[_0xe004('0x8')]('/api/chat/interactions',require(_0xe004('0x63')));_0xbfae69[_0xe004('0x8')](_0xe004('0x64'),require(_0xe004('0x65')));_0xbfae69[_0xe004('0x8')](_0xe004('0x66'),require(_0xe004('0x67')));_0xbfae69[_0xe004('0x8')](_0xe004('0x68'),require(_0xe004('0x69')));_0xbfae69['use'](_0xe004('0x6a'),require('./api/chatGroup'));_0xbfae69[_0xe004('0x8')](_0xe004('0x6b'),require(_0xe004('0x6c')));_0xbfae69['use'](_0xe004('0x6d'),require(_0xe004('0x6e')));_0xbfae69[_0xe004('0x8')](_0xe004('0x6f'),require('./api/cmContact'));_0xbfae69[_0xe004('0x8')](_0xe004('0x70'),require(_0xe004('0x71')));_0xbfae69[_0xe004('0x8')](_0xe004('0x72'),require(_0xe004('0x73')));_0xbfae69[_0xe004('0x8')](_0xe004('0x74'),require(_0xe004('0x75')));_0xbfae69[_0xe004('0x8')]('/api/cm/hopper_history',require('./api/cmHopperHistory'));_0xbfae69['use'](_0xe004('0x76'),require(_0xe004('0x77')));_0xbfae69[_0xe004('0x8')](_0xe004('0x78'),require('./api/action'));_0xbfae69[_0xe004('0x8')]('/api/automations',require(_0xe004('0x79')));_0xbfae69[_0xe004('0x8')](_0xe004('0x7a'),require(_0xe004('0x7b')));_0xbfae69[_0xe004('0x8')](_0xe004('0x7c'),require(_0xe004('0x7d')));_0xbfae69[_0xe004('0x8')]('/api/conditions',require(_0xe004('0x7e')));_0xbfae69[_0xe004('0x8')]('/api/intervals',require(_0xe004('0x7f')));_0xbfae69[_0xe004('0x8')](_0xe004('0x80'),require(_0xe004('0x81')));_0xbfae69[_0xe004('0x8')]('/api/cdr',require('./api/cdr'));_0xbfae69['use'](_0xe004('0x82'),require('./api/voiceQueuesLog'));_0xbfae69[_0xe004('0x8')](_0xe004('0x83'),require('./api/schedule'));_0xbfae69[_0xe004('0x8')](_0xe004('0x84'),require(_0xe004('0x85')));_0xbfae69[_0xe004('0x8')](_0xe004('0x86'),require('./api/tag'));_0xbfae69[_0xe004('0x8')](_0xe004('0x87'),require(_0xe004('0x88')));_0xbfae69[_0xe004('0x8')](_0xe004('0x89'),require(_0xe004('0x8a')));_0xbfae69[_0xe004('0x8')](_0xe004('0x8b'),require(_0xe004('0x8c')));_0xbfae69[_0xe004('0x8')](_0xe004('0x8d'),require('./api/integration'));_0xbfae69[_0xe004('0x8')](_0xe004('0x8e'),require('./api/integrationReport'));_0xbfae69[_0xe004('0x8')](_0xe004('0x8f'),require(_0xe004('0x90')));_0xbfae69[_0xe004('0x8')](_0xe004('0x91'),require(_0xe004('0x92')));_0xbfae69[_0xe004('0x8')](_0xe004('0x93'),require(_0xe004('0x94')));_0xbfae69[_0xe004('0x8')](_0xe004('0x95'),require(_0xe004('0x96')));_0xbfae69['use']('/api/analytics/field_reports',require(_0xe004('0x97')));_0xbfae69[_0xe004('0x8')](_0xe004('0x98'),require(_0xe004('0x99')));_0xbfae69[_0xe004('0x8')](_0xe004('0x9a'),require(_0xe004('0x9b')));_0xbfae69[_0xe004('0x8')]('/api/integrations/salesforce/configurations',require(_0xe004('0x9c')));_0xbfae69[_0xe004('0x8')](_0xe004('0x9d'),require('./api/intSalesforceField'));_0xbfae69[_0xe004('0x8')]('/api/integrations/sugarcrm/accounts',require(_0xe004('0x9e')));_0xbfae69['use'](_0xe004('0x9f'),require('./api/intSugarcrmConfiguration'));_0xbfae69[_0xe004('0x8')](_0xe004('0xa0'),require('./api/intSugarcrmField'));_0xbfae69['use'](_0xe004('0xa1'),require('./api/intDeskAccount'));_0xbfae69[_0xe004('0x8')]('/api/integrations/desk/configurations',require(_0xe004('0xa2')));_0xbfae69[_0xe004('0x8')](_0xe004('0xa3'),require(_0xe004('0xa4')));_0xbfae69['use']('/api/integrations/zoho/accounts',require(_0xe004('0xa5')));_0xbfae69[_0xe004('0x8')](_0xe004('0xa6'),require(_0xe004('0xa7')));_0xbfae69[_0xe004('0x8')]('/api/integrations/zoho/fields',require(_0xe004('0xa8')));_0xbfae69['use']('/api/integrations/zendesk/accounts',require(_0xe004('0xa9')));_0xbfae69['use'](_0xe004('0xaa'),require('./api/intZendeskConfiguration'));_0xbfae69[_0xe004('0x8')](_0xe004('0xab'),require(_0xe004('0xac')));_0xbfae69['use'](_0xe004('0xad'),require('./api/intFreshdeskAccount'));_0xbfae69[_0xe004('0x8')](_0xe004('0xae'),require(_0xe004('0xaf')));_0xbfae69[_0xe004('0x8')]('/api/integrations/freshdesk/fields',require(_0xe004('0xb0')));_0xbfae69[_0xe004('0x8')]('/api/integrations/vtiger/accounts',require('./api/intVtigerAccount'));_0xbfae69[_0xe004('0x8')](_0xe004('0xb1'),require(_0xe004('0xb2')));_0xbfae69[_0xe004('0x8')](_0xe004('0xb3'),require('./api/intVtigerField'));_0xbfae69[_0xe004('0x8')](_0xe004('0xb4'),require(_0xe004('0xb5')));_0xbfae69[_0xe004('0x8')](_0xe004('0xb6'),require(_0xe004('0xb7')));_0xbfae69[_0xe004('0x8')]('/api/integrations/servicenow/fields',require(_0xe004('0xb8')));_0xbfae69[_0xe004('0x8')](_0xe004('0xb9'),require(_0xe004('0xba')));_0xbfae69[_0xe004('0x8')]('/api/integrations/dynamics365/configurations',require('./api/intDynamics365Configuration'));_0xbfae69['use'](_0xe004('0xbb'),require('./api/intDynamics365Field'));_0xbfae69[_0xe004('0x8')]('/api/integrations/freshsales/accounts',require(_0xe004('0xbc')));_0xbfae69[_0xe004('0x8')](_0xe004('0xbd'),require(_0xe004('0xbe')));_0xbfae69[_0xe004('0x8')]('/api/integrations/freshsales/fields',require(_0xe004('0xbf')));_0xbfae69[_0xe004('0x8')]('/api/networks',require(_0xe004('0xc0')));_0xbfae69['use'](_0xe004('0xc1'),require(_0xe004('0xc2')));_0xbfae69[_0xe004('0x8')](_0xe004('0xc3'),require(_0xe004('0xc4')));_0xbfae69[_0xe004('0x8')](_0xe004('0xc5'),require(_0xe004('0xc6')));_0xbfae69[_0xe004('0x8')](_0xe004('0xc7'),require(_0xe004('0xc8')));_0xbfae69[_0xe004('0x8')]('/api/jscripty/sessions/reports',require(_0xe004('0xc9')));_0xbfae69[_0xe004('0x8')](_0xe004('0xca'),require('./api/smsQueueReport'));_0xbfae69[_0xe004('0x8')](_0xe004('0xcb'),require('./api/squareReport'));_0xbfae69[_0xe004('0x8')](_0xe004('0xcc'),require(_0xe004('0xcd')));_0xbfae69[_0xe004('0x8')](_0xe004('0xce'),require(_0xe004('0xcf')));_0xbfae69[_0xe004('0x8')](_0xe004('0xd0'),require(_0xe004('0xd1')));_0xbfae69[_0xe004('0x8')](_0xe004('0xd2'),require(_0xe004('0xd3')));_0xbfae69[_0xe004('0x8')](_0xe004('0xd4'),require(_0xe004('0xd5')));_0xbfae69[_0xe004('0x8')](_0xe004('0xd6'),require(_0xe004('0xd7')));_0xbfae69[_0xe004('0x8')](_0xe004('0xd8'),require('./api/squareMessage'));_0xbfae69[_0xe004('0x8')](_0xe004('0xd9'),require(_0xe004('0xda')));_0xbfae69[_0xe004('0x8')](_0xe004('0xdb'),require(_0xe004('0xdc')));_0xbfae69[_0xe004('0x8')](_0xe004('0xdd'),require(_0xe004('0xde')));_0xbfae69[_0xe004('0x8')](_0xe004('0xdf'),require(_0xe004('0xe0')));_0xbfae69[_0xe004('0x8')]('/api/attachments',require(_0xe004('0xe1')));_0xbfae69[_0xe004('0x8')](_0xe004('0xe2'),require('./api/plugin'));_0xbfae69[_0xe004('0x8')](_0xe004('0xe3'),require('./api/mailTransferReport'));_0xbfae69[_0xe004('0x8')]('/api/chat/reports/transfer',require('./api/chatTransferReport'));_0xbfae69[_0xe004('0x8')](_0xe004('0xe4'),require(_0xe004('0xe5')));_0xbfae69[_0xe004('0x8')]('/api/openchannel/reports/transfer',require(_0xe004('0xe6')));_0xbfae69['use'](_0xe004('0xe7'),require(_0xe004('0xe8')));_0xbfae69['use'](_0xe004('0xe9'),require(_0xe004('0xea')));_0xbfae69[_0xe004('0x8')](_0xe004('0xeb'),require('./api/voicePrefix'));_0xbfae69[_0xe004('0x8')](_0xe004('0xec'),require(_0xe004('0xed')));_0xbfae69[_0xe004('0x8')](_0xe004('0xee'),require('./api/userProfileSection'));_0xbfae69[_0xe004('0x8')]('/api/userProfile/resources',require(_0xe004('0xef')));_0xbfae69[_0xe004('0x8')]('/api/userNotifications',require(_0xe004('0xf0')));_0xbfae69[_0xe004('0x8')](_0xe004('0xf1'),require(_0xe004('0xf2')));_0xbfae69['use'](_0xe004('0xf3'),require('./api/whatsappApplication'));_0xbfae69['use'](_0xe004('0xf4'),require(_0xe004('0xf5')));_0xbfae69[_0xe004('0x8')](_0xe004('0xf6'),require(_0xe004('0xf7')));_0xbfae69[_0xe004('0x8')](_0xe004('0xf8'),require(_0xe004('0xf9')));_0xbfae69['use'](_0xe004('0xfa'),require(_0xe004('0xfb')));_0xbfae69['use'](_0xe004('0xfc'),require(_0xe004('0xfd')));_0xbfae69[_0xe004('0x8')]('/api/cloudProviders',require(_0xe004('0xfe')));_0xbfae69['use'](_0xe004('0xff'),require(_0xe004('0x100')));_0xbfae69[_0xe004('0x8')](_0xe004('0x101'),require(_0xe004('0x102')));_0xbfae69[_0xe004('0x8')](_0xe004('0x103'),require(_0xe004('0x104')));_0xbfae69[_0xe004('0x8')](_0xe004('0x105'),require(_0xe004('0x106')));_0xbfae69['use'](_0xe004('0x107'),require(_0xe004('0x108')));_0xbfae69[_0xe004('0x8')]('/api/version',require(_0xe004('0x109')));_0xbfae69[_0xe004('0x8')](_0xe004('0x10a'),require('./api/system'));_0xbfae69[_0xe004('0x8')](_0xe004('0x10b'),require(_0xe004('0x10c')));_0xbfae69['use'](_0xe004('0x10d'),require(_0xe004('0x10e')));_0xbfae69[_0xe004('0x8')](_0xe004('0x10f'),express['static'](path['join'](config[_0xe004('0x110')],_0xe004('0x10f'))));_0xbfae69[_0xe004('0x8')](_0xe004('0x111'),express[_0xe004('0x112')](path[_0xe004('0x113')](config[_0xe004('0x110')],_0xe004('0x111'))));_0xbfae69['use'](_0xe004('0x114'),express[_0xe004('0x112')](path[_0xe004('0x113')](config[_0xe004('0x110')],_0xe004('0x114'))));_0xbfae69[_0xe004('0x8')](_0xe004('0x115'),express['static'](path[_0xe004('0x113')](config[_0xe004('0x110')],_0xe004('0x116'),_0xe004('0x117'))));_0xbfae69['use'](_0xe004('0x118'),express[_0xe004('0x112')](path[_0xe004('0x113')](config[_0xe004('0x110')],_0xe004('0x119'))));_0xbfae69[_0xe004('0x11a')](_0xe004('0x11b'))[_0xe004('0x11c')](errors[0x194]);_0xbfae69[_0xe004('0x11a')]('/*')[_0xe004('0x11c')](function(_0x2b1730,_0x57a92d){_0x57a92d['sendFile'](path[_0xe004('0x11d')](_0xbfae69[_0xe004('0x11c')](_0xe004('0x11e'))+_0xe004('0x11f')));});};var sensitiveFields=[_0xe004('0x120'),'password','newPassword','apiKey','firstName',_0xe004('0x121'),_0xe004('0x122'),_0xe004('0x123'),_0xe004('0x124'),'fax',_0xe004('0x125'),'clientId',_0xe004('0x126'),_0xe004('0x127'),_0xe004('0x128'),_0xe004('0x129'),_0xe004('0x12a'),_0xe004('0x12b'),_0xe004('0x12c'),'accessToken',_0xe004('0x12d'),_0xe004('0x12e'),_0xe004('0x12f'),_0xe004('0x130'),_0xe004('0x131'),_0xe004('0x132'),'calleridnum','exten',_0xe004('0x133'),_0xe004('0x134'),_0xe004('0x135'),_0xe004('0x136'),'secretaccesskey',_0xe004('0x137'),_0xe004('0x14'),'pass',_0xe004('0x138'),_0xe004('0x139'),_0xe004('0x13a'),_0xe004('0x13b'),_0xe004('0x13c'),_0xe004('0x13d')];function maskSensitiveData(_0x49b7e6){var _0x361026=/(?!^)[\s\S](?!$)/g;if(!_[_0xe004('0x13e')](_0x49b7e6))return;for(var _0x468de4 in _0x49b7e6){if(_[_0xe004('0x13f')](_0x49b7e6[_0x468de4])){for(var _0x45d7e2=0x0;_0x45d7e2<_0x49b7e6[_0x468de4]['length'];_0x45d7e2++){maskSensitiveData(_0x49b7e6[_0x468de4][_0x45d7e2]);}}else if(_['isPlainObject'](_0x49b7e6[_0x468de4])){maskSensitiveData(_0x49b7e6[_0x468de4]);}else if(_[_0xe004('0x140')](_0x49b7e6[_0x468de4])){_0x49b7e6[_0x468de4]=_0x49b7e6[_0x468de4][_0xe004('0x141')](/{{{/g,_0xe004('0x142'))[_0xe004('0x141')](/}}}/g,'}@@')[_0xe004('0x141')](/{{/g,'@{')[_0xe004('0x141')](/}}/g,'}@');if(_[_0xe004('0x143')](sensitiveFields,_0x468de4)){_0x49b7e6[_0x468de4]=_0x49b7e6[_0x468de4][_0xe004('0x141')](_0x361026,'*');}}}}
\ No newline at end of file
+var _0xa531=['/api/dashboards/items','/api/fax/accounts','/api/fax/applications','./api/faxApplication','./api/faxInteraction','/api/fax/messages','/api/fax/queues','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/applications','./api/openchannelApplication','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','/api/chat/websites','./api/chatWebsite','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','./api/chatMessage','/api/chat/offline_messages','/api/chat/queues','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','./api/interval','/api/pauses','./api/pause','/api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/templates','./api/template','./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/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','/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/intFreshdeskField','/api/integrations/vtiger/accounts','./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/intServicenowConfiguration','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','./api/jscriptySessionReport','/api/square/reports','/api/square/details/reports','/api/settings','/api/square/odbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','/api/license','/api/campaigns','/api/migrations','./api/migration','/api/attachments','/api/plugins','./api/plugin','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','/api/openchannel/reports/transfer','./api/openchannelTransferReport','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','/api/whatsapp/applications','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','./api/authGoogle','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/system','/api/pm2','/api/webbar','/apidoc','join','root','/www','static','/snippet','snippet','/server/files/plugins','route','get','sendFile','resolve','appPath','/index.html','username','password','newPassword','firstName','lastName','street','phone','mobile','fax','email','clientId','clientSecret','securityToken','code','accessKey','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','calleridname','calleridnum','exten','vidaooApiKey','accesskeyid','secretaccesskey','key','pass','accountSid','dsn','registry','oldPassword','length','isPlainObject','isString','replace','includes','lodash','path','express','util','./errors','./config/environment','./config/logger','default','use','logger','isEmpty','\x20body=%s','body','format','method','headers','x-forwarded-for','connection','url','statusCode','responseTime','user','name','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','remoteAddress','other','agent_name','test','/api/users','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','/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/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard'];(function(_0x9a6812,_0x358b12){var _0xb4b6d3=function(_0x141d85){while(--_0x141d85){_0x9a6812['push'](_0x9a6812['shift']());}};_0xb4b6d3(++_0x358b12);}(_0xa531,0xfd));var _0x1a53=function(_0x5a5813,_0x32676f){_0x5a5813=_0x5a5813-0x0;var _0x3fd97f=_0xa531[_0x5a5813];return _0x3fd97f;};'use strict';var _=require(_0x1a53('0x0'));var path=require(_0x1a53('0x1'));var express=require(_0x1a53('0x2'));var ewinston=require('express-winston');var util=require(_0x1a53('0x3'));var errors=require(_0x1a53('0x4'));var config=require(_0x1a53('0x5'));var logger=require('./config/logger')('api');var authLogger=require(_0x1a53('0x6'))('auth');exports[_0x1a53('0x7')]=function(_0x44b96d){_0x44b96d[_0x1a53('0x8')](ewinston[_0x1a53('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x18f836,_0x4584c6){var _0x5cd7fe='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0x1a53('0xa')](_0x18f836['body'])){_0x5cd7fe+=_0x1a53('0xb');var _0x1cebc7=_0x18f836[_0x1a53('0xc')];maskSensitiveData(_0x1cebc7);}return util[_0x1a53('0xd')](_0x5cd7fe,_0x18f836[_0x1a53('0xe')],_0x18f836[_0x1a53('0xf')][_0x1a53('0x10')]?_0x18f836[_0x1a53('0xf')][_0x1a53('0x10')]:_0x18f836[_0x1a53('0x11')]['remoteAddress']||_0x18f836['ip'],_0x18f836[_0x1a53('0x12')],_0x4584c6[_0x1a53('0x13')],_0x4584c6[_0x1a53('0x14')],_0x18f836[_0x1a53('0x15')]?_0x18f836[_0x1a53('0x15')]['id']:null,_0x18f836['user']?_0x18f836[_0x1a53('0x15')][_0x1a53('0x16')]:null,_0x18f836[_0x1a53('0x15')]?_0x18f836[_0x1a53('0x15')][_0x1a53('0x17')]:null,_0x1cebc7?util[_0x1a53('0x18')](_0x1cebc7,![],null):'');}}));_0x44b96d['use'](ewinston[_0x1a53('0x9')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x58ef94,_0x2ac6be){var _0xad862c=_0x1a53('0x19');if(_0x58ef94[_0x1a53('0xc')]&&_0x58ef94[_0x1a53('0xc')][_0x1a53('0x1a')]&&_0x58ef94['body'][_0x1a53('0x1b')]){_0xad862c='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util['format'](_0xad862c,_0x58ef94[_0x1a53('0xe')],_0x58ef94[_0x1a53('0xf')][_0x1a53('0x10')]?_0x58ef94[_0x1a53('0xf')][_0x1a53('0x10')]:_0x58ef94['connection'][_0x1a53('0x1c')]||_0x58ef94['ip'],_0x58ef94[_0x1a53('0x12')],_0x2ac6be[_0x1a53('0x13')],_0x2ac6be[_0x1a53('0x14')],_0x58ef94[_0x1a53('0x15')]?_0x58ef94[_0x1a53('0x15')]['id']:null,_0x58ef94[_0x1a53('0x15')]?_0x58ef94[_0x1a53('0x15')][_0x1a53('0x16')]:null,_0x58ef94['user']?_0x58ef94[_0x1a53('0x15')][_0x1a53('0x17')]:null,_0x58ef94[_0x1a53('0xc')]&&_0x58ef94[_0x1a53('0xc')]['device']?_0x58ef94[_0x1a53('0xc')]['device']:_0x1a53('0x1d'),_0x58ef94[_0x1a53('0xc')]&&_0x58ef94['body'][_0x1a53('0x1b')]?_0x58ef94[_0x1a53('0xc')]['agent_id']:'',_0x58ef94[_0x1a53('0xc')]&&_0x58ef94[_0x1a53('0xc')][_0x1a53('0x1e')]?_0x58ef94['body'][_0x1a53('0x1e')]:'');},'ignoreRoute':function(_0x10a8bd){var _0x5a6171=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x5a6171[_0x1a53('0x1f')](_0x10a8bd[_0x1a53('0x12')]);}}));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x20'),require('./api/user'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x21'),require(_0x1a53('0x22')));_0x44b96d['use'](_0x1a53('0x23'),require('./api/voiceContext'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x24'),require(_0x1a53('0x25')));_0x44b96d['use'](_0x1a53('0x26'),require('./api/voiceMusicOnHold'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x27'),require(_0x1a53('0x28')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x29'),require(_0x1a53('0x2a')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x2b'),require(_0x1a53('0x2c')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x2d'),require(_0x1a53('0x2e')));_0x44b96d[_0x1a53('0x8')]('/api/voice/mails/messages',require(_0x1a53('0x2f')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x30'),require(_0x1a53('0x31')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x32'),require(_0x1a53('0x33')));_0x44b96d['use'](_0x1a53('0x34'),require(_0x1a53('0x35')));_0x44b96d[_0x1a53('0x8')]('/api/voice/queues/reports',require(_0x1a53('0x36')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x37'),require(_0x1a53('0x38')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x39'),require(_0x1a53('0x3a')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x3b'),require(_0x1a53('0x3c')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x3d'),require(_0x1a53('0x3e')));_0x44b96d['use'](_0x1a53('0x3f'),require(_0x1a53('0x40')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x41'),require('./api/mailQueue'));_0x44b96d[_0x1a53('0x8')]('/api/mail/substatuses',require(_0x1a53('0x42')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x43'),require(_0x1a53('0x44')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x45'),require(_0x1a53('0x46')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x47'),require(_0x1a53('0x48')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x49'),require(_0x1a53('0x4a')));_0x44b96d['use'](_0x1a53('0x4b'),require(_0x1a53('0x4c')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x4d'),require('./api/dashboardItem'));_0x44b96d['use'](_0x1a53('0x4e'),require('./api/faxAccount'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x4f'),require(_0x1a53('0x50')));_0x44b96d[_0x1a53('0x8')]('/api/fax/interactions',require(_0x1a53('0x51')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x52'),require('./api/faxMessage'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x53'),require('./api/faxQueue'));_0x44b96d['use'](_0x1a53('0x54'),require(_0x1a53('0x55')));_0x44b96d['use'](_0x1a53('0x56'),require(_0x1a53('0x57')));_0x44b96d['use']('/api/sms/applications',require(_0x1a53('0x58')));_0x44b96d['use']('/api/sms/interactions',require(_0x1a53('0x59')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x5a'),require(_0x1a53('0x5b')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x5c'),require(_0x1a53('0x5d')));_0x44b96d[_0x1a53('0x8')]('/api/openchannel/accounts',require('./api/openchannelAccount'));_0x44b96d['use'](_0x1a53('0x5e'),require(_0x1a53('0x5f')));_0x44b96d[_0x1a53('0x8')]('/api/openchannel/interactions',require(_0x1a53('0x60')));_0x44b96d['use'](_0x1a53('0x61'),require(_0x1a53('0x62')));_0x44b96d['use'](_0x1a53('0x63'),require('./api/openchannelQueue'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x64'),require(_0x1a53('0x65')));_0x44b96d[_0x1a53('0x8')]('/api/openchannel/reports/queue',require(_0x1a53('0x66')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x67'),require(_0x1a53('0x68')));_0x44b96d[_0x1a53('0x8')]('/api/chat/interactions',require('./api/chatInteraction'));_0x44b96d[_0x1a53('0x8')]('/api/chat/messages',require(_0x1a53('0x69')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x6a'),require('./api/chatOfflineMessage'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x6b'),require('./api/chatQueue'));_0x44b96d[_0x1a53('0x8')]('/api/chat/groups',require(_0x1a53('0x6c')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x6d'),require(_0x1a53('0x6e')));_0x44b96d[_0x1a53('0x8')]('/api/cm/companies',require(_0x1a53('0x6f')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x70'),require(_0x1a53('0x71')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x72'),require(_0x1a53('0x73')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x74'),require(_0x1a53('0x75')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x76'),require(_0x1a53('0x77')));_0x44b96d['use'](_0x1a53('0x78'),require(_0x1a53('0x79')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x7a'),require(_0x1a53('0x7b')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x7c'),require(_0x1a53('0x7d')));_0x44b96d[_0x1a53('0x8')]('/api/automations',require(_0x1a53('0x7e')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x7f'),require(_0x1a53('0x80')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x81'),require(_0x1a53('0x82')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x83'),require(_0x1a53('0x84')));_0x44b96d[_0x1a53('0x8')]('/api/intervals',require(_0x1a53('0x85')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x86'),require(_0x1a53('0x87')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x88'),require('./api/cdr'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x89'),require(_0x1a53('0x8a')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x8b'),require(_0x1a53('0x8c')));_0x44b96d['use'](_0x1a53('0x8d'),require(_0x1a53('0x8e')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x8f'),require(_0x1a53('0x90')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x91'),require(_0x1a53('0x92')));_0x44b96d[_0x1a53('0x8')]('/api/triggers',require(_0x1a53('0x93')));_0x44b96d['use'](_0x1a53('0x94'),require(_0x1a53('0x95')));_0x44b96d['use']('/api/integrations',require(_0x1a53('0x96')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x97'),require(_0x1a53('0x98')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x99'),require(_0x1a53('0x9a')));_0x44b96d['use'](_0x1a53('0x9b'),require(_0x1a53('0x9c')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x9d'),require('./api/analyticExtractedReport'));_0x44b96d['use']('/api/analytics/metrics',require(_0x1a53('0x9e')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x9f'),require(_0x1a53('0xa0')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xa1'),require('./api/analyticTreeReport'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xa2'),require(_0x1a53('0xa3')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xa4'),require(_0x1a53('0xa5')));_0x44b96d['use'](_0x1a53('0xa6'),require('./api/intSalesforceField'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xa7'),require(_0x1a53('0xa8')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xa9'),require('./api/intSugarcrmConfiguration'));_0x44b96d[_0x1a53('0x8')]('/api/integrations/sugarcrm/fields',require(_0x1a53('0xaa')));_0x44b96d['use'](_0x1a53('0xab'),require(_0x1a53('0xac')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xad'),require(_0x1a53('0xae')));_0x44b96d['use'](_0x1a53('0xaf'),require('./api/intDeskField'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xb0'),require(_0x1a53('0xb1')));_0x44b96d['use'](_0x1a53('0xb2'),require(_0x1a53('0xb3')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xb4'),require('./api/intZohoField'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xb5'),require(_0x1a53('0xb6')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xb7'),require(_0x1a53('0xb8')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xb9'),require('./api/intZendeskField'));_0x44b96d['use'](_0x1a53('0xba'),require(_0x1a53('0xbb')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xbc'),require('./api/intFreshdeskConfiguration'));_0x44b96d[_0x1a53('0x8')]('/api/integrations/freshdesk/fields',require(_0x1a53('0xbd')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xbe'),require(_0x1a53('0xbf')));_0x44b96d['use'](_0x1a53('0xc0'),require(_0x1a53('0xc1')));_0x44b96d['use'](_0x1a53('0xc2'),require(_0x1a53('0xc3')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xc4'),require(_0x1a53('0xc5')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xc6'),require(_0x1a53('0xc7')));_0x44b96d[_0x1a53('0x8')]('/api/integrations/servicenow/fields',require('./api/intServicenowField'));_0x44b96d[_0x1a53('0x8')]('/api/integrations/dynamics365/accounts',require(_0x1a53('0xc8')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xc9'),require(_0x1a53('0xca')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xcb'),require('./api/intDynamics365Field'));_0x44b96d['use'](_0x1a53('0xcc'),require(_0x1a53('0xcd')));_0x44b96d['use'](_0x1a53('0xce'),require(_0x1a53('0xcf')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xd0'),require(_0x1a53('0xd1')));_0x44b96d['use'](_0x1a53('0xd2'),require('./api/network'));_0x44b96d[_0x1a53('0x8')]('/api/chat/reports/queue',require(_0x1a53('0xd3')));_0x44b96d['use'](_0x1a53('0xd4'),require(_0x1a53('0xd5')));_0x44b96d['use']('/api/jscripty/answers/reports',require(_0x1a53('0xd6')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xd7'),require(_0x1a53('0xd8')));_0x44b96d['use']('/api/jscripty/sessions/reports',require(_0x1a53('0xd9')));_0x44b96d['use']('/api/sms/reports/queue',require('./api/smsQueueReport'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xda'),require('./api/squareReport'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xdb'),require('./api/squareReportDetail'));_0x44b96d[_0x1a53('0x8')]('/api/jscripty/projects',require('./api/jscriptyProject'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xdc'),require('./api/setting'));_0x44b96d['use'](_0x1a53('0xdd'),require('./api/squareOdbc'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xde'),require(_0x1a53('0xdf')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xe0'),require(_0x1a53('0xe1')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xe2'),require(_0x1a53('0xe3')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xe4'),require('./api/team'));_0x44b96d['use'](_0x1a53('0xe5'),require('./api/license'));_0x44b96d['use'](_0x1a53('0xe6'),require('./api/campaign'));_0x44b96d['use'](_0x1a53('0xe7'),require(_0x1a53('0xe8')));_0x44b96d['use'](_0x1a53('0xe9'),require('./api/attachment'));_0x44b96d['use'](_0x1a53('0xea'),require(_0x1a53('0xeb')));_0x44b96d['use']('/api/mail/reports/transfer',require('./api/mailTransferReport'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xec'),require(_0x1a53('0xed')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xee'),require('./api/faxTransferReport'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xef'),require(_0x1a53('0xf0')));_0x44b96d['use']('/api/sms/reports/transfer',require(_0x1a53('0xf1')));_0x44b96d['use'](_0x1a53('0xf2'),require(_0x1a53('0xf3')));_0x44b96d['use'](_0x1a53('0xf4'),require(_0x1a53('0xf5')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xf6'),require(_0x1a53('0xf7')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xf8'),require(_0x1a53('0xf9')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xfa'),require(_0x1a53('0xfb')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xfc'),require(_0x1a53('0xfd')));_0x44b96d['use'](_0x1a53('0xfe'),require('./api/whatsappAccount'));_0x44b96d[_0x1a53('0x8')](_0x1a53('0xff'),require('./api/whatsappApplication'));_0x44b96d['use']('/api/whatsapp/interactions',require(_0x1a53('0x100')));_0x44b96d['use'](_0x1a53('0x101'),require(_0x1a53('0x102')));_0x44b96d[_0x1a53('0x8')]('/api/whatsapp/reports/queue',require(_0x1a53('0x103')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x104'),require(_0x1a53('0x105')));_0x44b96d['use'](_0x1a53('0x106'),require(_0x1a53('0x107')));_0x44b96d[_0x1a53('0x8')]('/api/cloudProviders',require(_0x1a53('0x108')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x109'),require(_0x1a53('0x10a')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x10b'),require(_0x1a53('0x10c')));_0x44b96d[_0x1a53('0x8')]('/api/auth/google',require(_0x1a53('0x10d')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x10e'),require(_0x1a53('0x10f')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x110'),require(_0x1a53('0x111')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x112'),require('./api/version'));_0x44b96d[_0x1a53('0x8')]('/api/system',require(_0x1a53('0x113')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x114'),require('./api/pm2'));_0x44b96d['use'](_0x1a53('0x115'),require('./api/webbar'));_0x44b96d['use'](_0x1a53('0x116'),express['static'](path[_0x1a53('0x117')](config[_0x1a53('0x118')],_0x1a53('0x116'))));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x119'),express[_0x1a53('0x11a')](path[_0x1a53('0x117')](config['root'],'/www')));_0x44b96d[_0x1a53('0x8')]('/demo',express[_0x1a53('0x11a')](path['join'](config[_0x1a53('0x118')],'/demo')));_0x44b96d[_0x1a53('0x8')](_0x1a53('0x11b'),express[_0x1a53('0x11a')](path[_0x1a53('0x117')](config[_0x1a53('0x118')],_0x1a53('0x11c'),'3.0.0')));_0x44b96d[_0x1a53('0x8')]('/plugins',express[_0x1a53('0x11a')](path[_0x1a53('0x117')](config[_0x1a53('0x118')],_0x1a53('0x11d'))));_0x44b96d[_0x1a53('0x11e')]('/:url(api|auth|components|app|bower_components|assets)/*')[_0x1a53('0x11f')](errors[0x194]);_0x44b96d[_0x1a53('0x11e')]('/*')[_0x1a53('0x11f')](function(_0xec7062,_0x567ce9){_0x567ce9[_0x1a53('0x120')](path[_0x1a53('0x121')](_0x44b96d[_0x1a53('0x11f')](_0x1a53('0x122'))+_0x1a53('0x123')));});};var sensitiveFields=[_0x1a53('0x124'),_0x1a53('0x125'),_0x1a53('0x126'),'apiKey',_0x1a53('0x127'),_0x1a53('0x128'),_0x1a53('0x129'),_0x1a53('0x12a'),_0x1a53('0x12b'),_0x1a53('0x12c'),_0x1a53('0x12d'),_0x1a53('0x12e'),_0x1a53('0x12f'),_0x1a53('0x130'),_0x1a53('0x131'),_0x1a53('0x132'),'tenantId','token',_0x1a53('0x133'),_0x1a53('0x134'),_0x1a53('0x135'),_0x1a53('0x136'),_0x1a53('0x137'),_0x1a53('0x138'),'membername',_0x1a53('0x139'),_0x1a53('0x13a'),_0x1a53('0x13b'),_0x1a53('0x13c'),'clientEmail','privateKey',_0x1a53('0x13d'),_0x1a53('0x13e'),_0x1a53('0x13f'),'user',_0x1a53('0x140'),_0x1a53('0x141'),'localstationid',_0x1a53('0x142'),'secret',_0x1a53('0x143'),_0x1a53('0x144')];function maskSensitiveData(_0x5be9eb){var _0x1d644e=/(?!^)[\s\S](?!$)/g;if(!_['isPlainObject'](_0x5be9eb))return;for(var _0x3bed72 in _0x5be9eb){if(_['isArray'](_0x5be9eb[_0x3bed72])){for(var _0x122d60=0x0;_0x122d60<_0x5be9eb[_0x3bed72][_0x1a53('0x145')];_0x122d60++){maskSensitiveData(_0x5be9eb[_0x3bed72][_0x122d60]);}}else if(_[_0x1a53('0x146')](_0x5be9eb[_0x3bed72])){maskSensitiveData(_0x5be9eb[_0x3bed72]);}else if(_[_0x1a53('0x147')](_0x5be9eb[_0x3bed72])){_0x5be9eb[_0x3bed72]=_0x5be9eb[_0x3bed72][_0x1a53('0x148')](/{{{/g,'@@{')[_0x1a53('0x148')](/}}}/g,'}@@')[_0x1a53('0x148')](/{{/g,'@{')['replace'](/}}/g,'}@');if(_[_0x1a53('0x149')](sensitiveFields,_0x3bed72)){_0x5be9eb[_0x3bed72]=_0x5be9eb[_0x3bed72][_0x1a53('0x148')](_0x1d644e,'*');}}}}
\ No newline at end of file
index e5ca727..57af841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x213b=['../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.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/chatInteraction/chatInteraction.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.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/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','server','http','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','jayson/promise','bluebird','../config/environment','listen','merge'];(function(_0x237388,_0x5862eb){var _0x2332f4=function(_0x3e931d){while(--_0x3e931d){_0x237388['push'](_0x237388['shift']());}};_0x2332f4(++_0x5862eb);}(_0x213b,0xd3));var _0xb213=function(_0x242c42,_0x3df02a){_0x242c42=_0x242c42-0x0;var _0x15680b=_0x213b[_0x242c42];return _0x15680b;};'use strict';var jayson=require(_0xb213('0x0'));var BPromise=require(_0xb213('0x1'));var _=require('lodash');var config=require(_0xb213('0x2'));exports[_0xb213('0x3')]=function(){return new BPromise(function(_0x3d0c8a,_0x5e63b9){var _0x4d418b={};_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x5')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x6')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/voiceQueue/voiceQueue.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x7')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x8')));_0x4d418b=_['merge'](_0x4d418b,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x9')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0xa')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0xb')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/trunk/trunk.rpc'));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0xc')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0xd')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0xe')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0xf')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x10')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x11')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x12')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/mailApplication/mailApplication.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/faxAccount/faxAccount.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x13')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x14')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/faxMessage/faxMessage.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x15')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x16')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x17')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x18')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x19')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x1a')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x1b')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x1c')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x1d')));_0x4d418b=_['merge'](_0x4d418b,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x1e')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/chatMessage/chatMessage.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/chatQueue/chatQueue.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x1f')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/cmHopper/cmHopper.rpc'));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x20')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x21')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x22')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x23')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x24')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/sound/sound.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x25')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x26')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x27')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x28')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x29')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x2a')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x2b')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x2c')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x2d')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x2e')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x2f')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x30')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/squareReport/squareReport.rpc'));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x31')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x32')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x33')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x34')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x35')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x36')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x37')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x38')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x39')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x3a')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x3b')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require(_0xb213('0x3c')));_0x4d418b=_['merge'](_0x4d418b,require(_0xb213('0x3d')));_0x4d418b=_[_0xb213('0x4')](_0x4d418b,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0x1c8754=jayson[_0xb213('0x3e')](_0x4d418b)[_0xb213('0x3f')]();var _0x3245f9=config[_0xb213('0x40')]['port']||config[_0xb213('0x41')]+0x1;var _0xd06559=config['rpc']['ip']||_0xb213('0x42');_0x1c8754['on'](_0xb213('0x43'),function(_0x3a8500){return _0x5e63b9(_0x3a8500);});_0x1c8754[_0xb213('0x3')](_0x3245f9,_0xd06559,function(){console[_0xb213('0x44')](_0xb213('0x45'),_0xd06559,_0x3245f9);require(_0xb213('0x46'))[_0xb213('0x47')]();return _0x3d0c8a('RPC\x20listening\x20on\x20'+_0xd06559+':'+_0x3245f9);});});};
\ No newline at end of file
+var _0x8020=['../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.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/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.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/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareRecording/squareRecording.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','rpc','port','localhost','error','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','bluebird','listen','merge'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8020,0x18e));var _0x0802=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x8020[_0x1ac595];return _0x455fff;};'use strict';var jayson=require(_0x0802('0x0'));var BPromise=require(_0x0802('0x1'));var _=require('lodash');var config=require('../config/environment');exports[_0x0802('0x2')]=function(){return new BPromise(function(_0x3a6af3,_0x3b620a){var _0x2c07bd={};_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/user/user.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x4')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x5')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/voiceRecording/voiceRecording.rpc'));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x6')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x7')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x8')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x9')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0xa')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0xb')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0xc')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0xd')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0xe')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0xf')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x10')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x11')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x12')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x13')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x14')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x15')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/faxApplication/faxApplication.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x16')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x17')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x18')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x19')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/smsAccount/smsAccount.rpc'));_0x2c07bd=_['merge'](_0x2c07bd,require('../api/smsInteraction/smsInteraction.rpc'));_0x2c07bd=_['merge'](_0x2c07bd,require('../api/smsMessage/smsMessage.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/smsQueue/smsQueue.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x1a')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x1b')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x1c')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x1d')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/chatMessage/chatMessage.rpc'));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x1e')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x1f')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/cmHopper/cmHopper.rpc'));_0x2c07bd=_['merge'](_0x2c07bd,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x20')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x21')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x22')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x23')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x24')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x25')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x26')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x27')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x28')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x29')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x2a')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x2b')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x2c')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x2d')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x2e')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x2f')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x30')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x31')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x32')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x33')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x34')));_0x2c07bd=_['merge'](_0x2c07bd,require(_0x0802('0x35')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/squareOdbc/squareOdbc.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/squareProject/squareProject.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x36')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/squareMessage/squareMessage.rpc'));_0x2c07bd=_['merge'](_0x2c07bd,require('../api/campaign/campaign.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x37')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x38')));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x39')));_0x2c07bd=_['merge'](_0x2c07bd,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x2c07bd=_[_0x0802('0x3')](_0x2c07bd,require(_0x0802('0x3a')));var _0x4c558d=jayson[_0x0802('0x3b')](_0x2c07bd)['http']();var _0x332d0f=config[_0x0802('0x3c')][_0x0802('0x3d')]||config[_0x0802('0x3d')]+0x1;var _0x2e2905=config[_0x0802('0x3c')]['ip']||_0x0802('0x3e');_0x4c558d['on'](_0x0802('0x3f'),function(_0x25370f){return _0x3b620a(_0x25370f);});_0x4c558d[_0x0802('0x2')](_0x332d0f,_0x2e2905,function(){console['log']('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x2e2905,_0x332d0f);require(_0x0802('0x40'))[_0x0802('0x41')]();return _0x3a6af3(_0x0802('0x42')+_0x2e2905+':'+_0x332d0f);});});};
\ No newline at end of file
index 77e988b..64ebf34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e94=['replace','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setPriority','noop','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','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','exec','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','EventEmitter','./reply','./error','call','utf8','setEncoding','headers','emit','ready','line','toLowerCase','hangup','520-Invalid','search','520\x20End\x20of\x20proper','substring','no\x20code','result=','substr','indexOf','startsWith','split','length','match','error','code','close','E_AGI_SOCKET_CLOSE','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','sendRequest','ANSWER','getData','prototype','format','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','setVariable','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22'];(function(_0x500fee,_0xb36dd){var _0x4a5133=function(_0x2b176a){while(--_0x2b176a){_0x500fee['push'](_0x500fee['shift']());}};_0x4a5133(++_0xb36dd);}(_0x3e94,0x67));var _0x43e9=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x3e94[_0x3e5086];return _0xfeb102;};'use strict';var util=require(_0x43e9('0x0'));var _=require(_0x43e9('0x1'));var EventEmitter=require('events')[_0x43e9('0x2')];var AGIReply=require(_0x43e9('0x3'));var AGIError=require(_0x43e9('0x4'));function AGIChannel(_0x5a75f8){var _0x2e3b33=this,_0x42c806=new AGIReply(),_0x2fac0f=![],_0x50eacc={};EventEmitter[_0x43e9('0x5')](_0x2e3b33);_0x5a75f8['setEncoding'](_0x43e9('0x6'));_0x5a75f8['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x42c806[_0x43e9('0x7')](_0x43e9('0x6'));_0x42c806['on'](_0x43e9('0x8'),function(_0x510ee7){for(var _0x1cabf1 in _0x510ee7){_0x2e3b33[_0x1cabf1]=_0x510ee7[_0x1cabf1];}_0x2e3b33[_0x43e9('0x9')](_0x43e9('0xa'));});_0x42c806['on'](_0x43e9('0xb'),function(_0x3d2694){if(_0x3d2694[_0x43e9('0xc')]()==_0x43e9('0xd')){_0x2e3b33[_0x43e9('0x9')](_0x43e9('0xd'));return;}if(_0x3d2694['substring'](0x0,0xb)==_0x43e9('0xe')){_0x2fac0f=!![];}if(_0x2fac0f){_0x50eacc['rx']+=_0x3d2694+'\x0a';if(_0x3d2694[_0x43e9('0xf')](_0x43e9('0x10'))!=-0x1){_0x2fac0f=![];}}else{_0x50eacc['rx']=_0x3d2694;}if(_0x2fac0f){return;}if(typeof _0x50eacc['cb']=='function'){var _0xa95f9f=_0x50eacc['rx'][_0x43e9('0x11')](0x0,0x3),_0x46d512=null,_0x3ca672=null;_0xa95f9f=parseInt(_0xa95f9f);if(isNaN(_0xa95f9f)){_0x50eacc['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x43e9('0x12')});return;}if(_0xa95f9f!=0xc8){_0x50eacc['cb'](null,{'code':_0xa95f9f,'result':-0x1,'extra':'KO'});return;}_0x46d512=_0x50eacc['rx']['substring'](0x4)['replace'](_0x43e9('0x13'),'');if(_0x46d512['indexOf']('\x20')!=-0x1){_0x46d512=_0x46d512[_0x43e9('0x14')](0x0,_0x46d512[_0x43e9('0x15')]('\x20'));}if(_[_0x43e9('0x16')](_0x46d512,'-1')){_0x46d512=parseInt(_0x46d512);}_0x3ca672=_0x50eacc['rx'][_0x43e9('0x17')]('\x20');if(_0x3ca672[_0x43e9('0x18')]==0x3){_0x3ca672=_0x3ca672[0x2][_0x43e9('0x11')](0x1,_0x3ca672[0x2][_0x43e9('0x18')]-0x1);}else if(_0x3ca672[_0x43e9('0x18')]>0x3){var _0x3f7164=/\((.+)\)/;var _0x13ceac=_0x50eacc['rx'][_0x43e9('0x19')](_0x3f7164);if(_0x13ceac){_0x3ca672=_0x13ceac[0x1];}else{_0x3ca672=null;}}else{_0x3ca672=null;}_0x50eacc['cb'](null,{'code':_0xa95f9f,'result':_0x46d512,'extra':_0x3ca672});}});_0x5a75f8['on'](_0x43e9('0x1a'),function(_0x310476){_0x2e3b33[_0x43e9('0x9')]('error',new AGIError('E_AGI_SOCKET_ERROR',_0x310476[_0x43e9('0x1b')]));});_0x5a75f8['on'](_0x43e9('0x1c'),function(){_0x2e3b33[_0x43e9('0x9')](_0x43e9('0x1c'),new AGIError(_0x43e9('0x1d')));});_0x5a75f8['on']('timeout',function(){_0x2e3b33[_0x43e9('0x9')]('timeout',new AGIError(_0x43e9('0x1e')));_0x5a75f8[_0x43e9('0x1f')]();});_0x5a75f8[_0x43e9('0x20')](_0x42c806);this[_0x43e9('0x21')]=function(_0x448750,_0x536a70){var _0x448750=_0x448750||'',_0x536a70=typeof _0x536a70=='function'?_0x536a70:new Function();_0x50eacc={'tx':_0x448750,'rx':'','cb':_0x536a70};_0x5a75f8[_0x43e9('0x22')](_0x448750+'\x0a');},this[_0x43e9('0x1c')]=function(){_0x5a75f8[_0x43e9('0x1f')]();};}util[_0x43e9('0x23')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0x43e9('0x24')]=function(_0x4ba987){return this[_0x43e9('0x21')]['sync'](this,_0x4ba987);};AGIChannel['prototype']['answer']=function(){return this['sendRequest'](_0x43e9('0x25'));};AGIChannel['prototype'][_0x43e9('0x26')]=function(_0xf0dbbf,_0x393136,_0x55a298){_0xf0dbbf=_0xf0dbbf===undefined?'beep':_0xf0dbbf;_0x393136=_0x393136===undefined?'5':_0x393136;_0x55a298=_0x55a298===undefined?'1':_0x55a298;return this[_0x43e9('0x24')](util['format']('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0xf0dbbf,_0x393136*0x3e8,_0x55a298));};AGIChannel[_0x43e9('0x27')]['noop']=function(_0x502f88){_0x502f88=_0x502f88||'NO\x20MESSAGE';return this[_0x43e9('0x24')](util[_0x43e9('0x28')]('VERBOSE\x20\x22%s\x22',_0x502f88));};AGIChannel[_0x43e9('0x27')]['exec']=function(_0x4191ff,_0x5777a8){if(_[_0x43e9('0x29')](_0x5777a8)){return this['sendRequest'](util['format'](_0x43e9('0x2a'),_0x4191ff,_0x5777a8[_0x43e9('0x2b')](',')));}return this[_0x43e9('0x24')](util[_0x43e9('0x28')](_0x43e9('0x2a'),_0x4191ff,_0x5777a8));};AGIChannel['prototype'][_0x43e9('0x2c')]=function(_0x4bdded){return this['sendRequest'](util[_0x43e9('0x28')](_0x43e9('0x2d'),_0x4bdded));};AGIChannel[_0x43e9('0x27')][_0x43e9('0x2e')]=function(_0x5e88bb){return this[_0x43e9('0x24')](util[_0x43e9('0x28')](_0x43e9('0x2f'),_0x5e88bb));};AGIChannel[_0x43e9('0x27')]['setPriority']=function(_0x23cb79){return this[_0x43e9('0x24')](util[_0x43e9('0x28')](_0x43e9('0x30'),_0x23cb79));};AGIChannel[_0x43e9('0x27')][_0x43e9('0xd')]=function(){return this[_0x43e9('0x24')]('HANGUP');};AGIChannel[_0x43e9('0x27')][_0x43e9('0x31')]=function(_0x2038c9,_0x42b436){var _0x3036df=_['isBoolean'](_0x42b436)||_[_0x43e9('0x32')](_0x42b436)?_0x42b436[_0x43e9('0x33')]():_0x42b436;return this[_0x43e9('0x24')](util['format'](_0x43e9('0x34'),_0x2038c9,_0x3036df?_0x3036df[_0x43e9('0x33')]()[_0x43e9('0x35')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x43e9('0x27')][_0x43e9('0x36')]=function(_0x5a33e4,_0x10a4cc){return this[_0x43e9('0x24')](util[_0x43e9('0x28')](_0x43e9('0x37'),_0x5a33e4,_0x10a4cc));};AGIChannel[_0x43e9('0x27')][_0x43e9('0x38')]=function(_0xd5a134,_0x330820){return this[_0x43e9('0x24')](util[_0x43e9('0x28')](_0x43e9('0x39'),_0xd5a134,_0x330820));};AGIChannel[_0x43e9('0x27')][_0x43e9('0x3a')]=function(_0x1d5500,_0x59f3c1){return this[_0x43e9('0x24')](util[_0x43e9('0x28')](_0x43e9('0x3b'),_0x1d5500,_0x59f3c1));};AGIChannel['prototype'][_0x43e9('0x3c')]=function(_0x44f944,_0x192aca,_0x33d2e4){_0x192aca=_0x192aca||this[_0x43e9('0x3d')];_0x33d2e4=_0x33d2e4||0x1;this[_0x43e9('0x2c')](_0x44f944);this['setExtension'](_0x192aca);this[_0x43e9('0x3e')](_0x33d2e4);return this[_0x43e9('0x3f')](util[_0x43e9('0x28')](_0x43e9('0x40'),_0x44f944,_0x192aca,_0x33d2e4));};AGIChannel[_0x43e9('0x27')][_0x43e9('0x41')]=function(_0x44ae75){return this[_0x43e9('0x24')](util[_0x43e9('0x28')](_0x43e9('0x42'),_0x44ae75));};AGIChannel['prototype']['recordFile']=function(_0x31689f,_0x15d96b,_0x235236,_0x1a3156,_0x41f250,_0x2c2724){_0x15d96b=_0x15d96b||_0x43e9('0x43');_0x235236=_0x235236||'';_0x1a3156=_0x1a3156===undefined?-0x1:_0x1a3156==='-1'?-0x1:_0x1a3156*0x3e8;_0x41f250=_0x41f250===undefined?'':'s='+_0x41f250;_0x2c2724=_0x2c2724?'BEEP':'';return this[_0x43e9('0x24')](util['format'](_0x43e9('0x44'),_0x31689f,_0x15d96b,_0x235236,_0x1a3156,_0x2c2724,_0x41f250));};AGIChannel[_0x43e9('0x27')][_0x43e9('0x45')]=function(_0x18ee87,_0x8b0325){_0x8b0325=_0x8b0325||'';return this[_0x43e9('0x24')](util[_0x43e9('0x28')](_0x43e9('0x46'),_0x18ee87,_0x8b0325));};AGIChannel[_0x43e9('0x27')]['agi']=function(_0xd16b61){return this[_0x43e9('0x47')](_0x43e9('0x48'),_0xd16b61);};AGIChannel[_0x43e9('0x27')][_0x43e9('0x49')]=function(_0xa13c51){return this['exec'](_0x43e9('0x4a'),_0xa13c51);};AGIChannel[_0x43e9('0x27')]['error']=function(_0x3e132d,_0xac3308){this[_0x43e9('0x3f')](util[_0x43e9('0x28')](_0x43e9('0x4b'),_0x3e132d['id'],_0x3e132d[_0x43e9('0x4c')],_0xac3308));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x43e9('0x4d')]=AGIChannel;
\ No newline at end of file
+var _0xa4f1=['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','events','EventEmitter','./error','call','setEncoding','utf8','setTimeout','headers','emit','ready','line','toLowerCase','hangup','substring','search','function','no\x20code','result=','indexOf','startsWith','length','match','error','code','close','timeout','E_AGI_SOCKET_TIMEOUT','pipe','write','inherits','sendRequest','sync','prototype','answer','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','setVariable','isBoolean','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','extension','GOTO\x20%s\x20%s\x20%s','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP'];(function(_0x5cb8dd,_0x4187d1){var _0x522d55=function(_0x54d6ba){while(--_0x54d6ba){_0x5cb8dd['push'](_0x5cb8dd['shift']());}};_0x522d55(++_0x4187d1);}(_0xa4f1,0xe2));var _0x1a4f=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xa4f1[_0x263a74];return _0x2aa86c;};'use strict';var util=require('util');var _=require('lodash');var EventEmitter=require(_0x1a4f('0x0'))[_0x1a4f('0x1')];var AGIReply=require('./reply');var AGIError=require(_0x1a4f('0x2'));function AGIChannel(_0x56e0d3){var _0x439ad6=this,_0x18958d=new AGIReply(),_0x244608=![],_0x1a3989={};EventEmitter[_0x1a4f('0x3')](_0x439ad6);_0x56e0d3[_0x1a4f('0x4')](_0x1a4f('0x5'));_0x56e0d3[_0x1a4f('0x6')](0x8*0x3c*0x3c*0x3e8);_0x18958d[_0x1a4f('0x4')](_0x1a4f('0x5'));_0x18958d['on'](_0x1a4f('0x7'),function(_0x3accad){for(var _0x3c4305 in _0x3accad){_0x439ad6[_0x3c4305]=_0x3accad[_0x3c4305];}_0x439ad6[_0x1a4f('0x8')](_0x1a4f('0x9'));});_0x18958d['on'](_0x1a4f('0xa'),function(_0x5bb4c8){if(_0x5bb4c8[_0x1a4f('0xb')]()==_0x1a4f('0xc')){_0x439ad6[_0x1a4f('0x8')](_0x1a4f('0xc'));return;}if(_0x5bb4c8[_0x1a4f('0xd')](0x0,0xb)=='520-Invalid'){_0x244608=!![];}if(_0x244608){_0x1a3989['rx']+=_0x5bb4c8+'\x0a';if(_0x5bb4c8[_0x1a4f('0xe')]('520\x20End\x20of\x20proper')!=-0x1){_0x244608=![];}}else{_0x1a3989['rx']=_0x5bb4c8;}if(_0x244608){return;}if(typeof _0x1a3989['cb']==_0x1a4f('0xf')){var _0x1d95fe=_0x1a3989['rx']['substring'](0x0,0x3),_0x6741a1=null,_0x3604f8=null;_0x1d95fe=parseInt(_0x1d95fe);if(isNaN(_0x1d95fe)){_0x1a3989['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x1a4f('0x10')});return;}if(_0x1d95fe!=0xc8){_0x1a3989['cb'](null,{'code':_0x1d95fe,'result':-0x1,'extra':'KO'});return;}_0x6741a1=_0x1a3989['rx']['substring'](0x4)['replace'](_0x1a4f('0x11'),'');if(_0x6741a1[_0x1a4f('0x12')]('\x20')!=-0x1){_0x6741a1=_0x6741a1['substr'](0x0,_0x6741a1[_0x1a4f('0x12')]('\x20'));}if(_[_0x1a4f('0x13')](_0x6741a1,'-1')){_0x6741a1=parseInt(_0x6741a1);}_0x3604f8=_0x1a3989['rx']['split']('\x20');if(_0x3604f8[_0x1a4f('0x14')]==0x3){_0x3604f8=_0x3604f8[0x2]['substring'](0x1,_0x3604f8[0x2][_0x1a4f('0x14')]-0x1);}else if(_0x3604f8[_0x1a4f('0x14')]>0x3){var _0x51ead7=/\((.+)\)/;var _0x220524=_0x1a3989['rx'][_0x1a4f('0x15')](_0x51ead7);if(_0x220524){_0x3604f8=_0x220524[0x1];}else{_0x3604f8=null;}}else{_0x3604f8=null;}_0x1a3989['cb'](null,{'code':_0x1d95fe,'result':_0x6741a1,'extra':_0x3604f8});}});_0x56e0d3['on'](_0x1a4f('0x16'),function(_0x192b3c){_0x439ad6[_0x1a4f('0x8')](_0x1a4f('0x16'),new AGIError('E_AGI_SOCKET_ERROR',_0x192b3c[_0x1a4f('0x17')]));});_0x56e0d3['on'](_0x1a4f('0x18'),function(){_0x439ad6[_0x1a4f('0x8')](_0x1a4f('0x18'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x56e0d3['on'](_0x1a4f('0x19'),function(){_0x439ad6['emit']('timeout',new AGIError(_0x1a4f('0x1a')));_0x56e0d3['destroy']();});_0x56e0d3[_0x1a4f('0x1b')](_0x18958d);this['command']=function(_0x3f7918,_0x3754c5){var _0x3f7918=_0x3f7918||'',_0x3754c5=typeof _0x3754c5==_0x1a4f('0xf')?_0x3754c5:new Function();_0x1a3989={'tx':_0x3f7918,'rx':'','cb':_0x3754c5};_0x56e0d3[_0x1a4f('0x1c')](_0x3f7918+'\x0a');},this[_0x1a4f('0x18')]=function(){_0x56e0d3['destroy']();};}util[_0x1a4f('0x1d')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0x1a4f('0x1e')]=function(_0x3a23fb){return this['command'][_0x1a4f('0x1f')](this,_0x3a23fb);};AGIChannel[_0x1a4f('0x20')][_0x1a4f('0x21')]=function(){return this[_0x1a4f('0x1e')](_0x1a4f('0x22'));};AGIChannel['prototype'][_0x1a4f('0x23')]=function(_0x526147,_0x1c5ac6,_0x108fcf){_0x526147=_0x526147===undefined?_0x1a4f('0x24'):_0x526147;_0x1c5ac6=_0x1c5ac6===undefined?'5':_0x1c5ac6;_0x108fcf=_0x108fcf===undefined?'1':_0x108fcf;return this[_0x1a4f('0x1e')](util[_0x1a4f('0x25')](_0x1a4f('0x26'),_0x526147,_0x1c5ac6*0x3e8,_0x108fcf));};AGIChannel[_0x1a4f('0x20')][_0x1a4f('0x27')]=function(_0xa6b589){_0xa6b589=_0xa6b589||_0x1a4f('0x28');return this[_0x1a4f('0x1e')](util['format'](_0x1a4f('0x29'),_0xa6b589));};AGIChannel[_0x1a4f('0x20')][_0x1a4f('0x2a')]=function(_0x31456e,_0x3105da){if(_[_0x1a4f('0x2b')](_0x3105da)){return this[_0x1a4f('0x1e')](util['format'](_0x1a4f('0x2c'),_0x31456e,_0x3105da[_0x1a4f('0x2d')](',')));}return this[_0x1a4f('0x1e')](util['format'](_0x1a4f('0x2c'),_0x31456e,_0x3105da));};AGIChannel[_0x1a4f('0x20')][_0x1a4f('0x2e')]=function(_0x2697ee){return this[_0x1a4f('0x1e')](util[_0x1a4f('0x25')]('SET\x20CONTEXT\x20%s',_0x2697ee));};AGIChannel[_0x1a4f('0x20')][_0x1a4f('0x2f')]=function(_0x3f443a){return this[_0x1a4f('0x1e')](util['format'](_0x1a4f('0x30'),_0x3f443a));};AGIChannel[_0x1a4f('0x20')][_0x1a4f('0x31')]=function(_0x297fd7){return this['sendRequest'](util['format'](_0x1a4f('0x32'),_0x297fd7));};AGIChannel[_0x1a4f('0x20')][_0x1a4f('0xc')]=function(){return this[_0x1a4f('0x1e')]('HANGUP');};AGIChannel[_0x1a4f('0x20')][_0x1a4f('0x33')]=function(_0x19c902,_0x156e05){var _0x1a5afb=_[_0x1a4f('0x34')](_0x156e05)||_['isNumber'](_0x156e05)?_0x156e05[_0x1a4f('0x35')]():_0x156e05;return this[_0x1a4f('0x1e')](util[_0x1a4f('0x25')](_0x1a4f('0x36'),_0x19c902,_0x1a5afb?_0x1a5afb[_0x1a4f('0x35')]()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x1a4f('0x20')]['sayNumber']=function(_0x1fdbb1,_0x15a901){return this[_0x1a4f('0x1e')](util['format'](_0x1a4f('0x37'),_0x1fdbb1,_0x15a901));};AGIChannel[_0x1a4f('0x20')][_0x1a4f('0x38')]=function(_0xcc3caa,_0x2139c6){return this[_0x1a4f('0x1e')](util[_0x1a4f('0x25')](_0x1a4f('0x39'),_0xcc3caa,_0x2139c6));};AGIChannel[_0x1a4f('0x20')][_0x1a4f('0x3a')]=function(_0x3a0a95,_0xb0c5da){return this[_0x1a4f('0x1e')](util[_0x1a4f('0x25')](_0x1a4f('0x3b'),_0x3a0a95,_0xb0c5da));};AGIChannel[_0x1a4f('0x20')]['continueAt']=function(_0x13bcae,_0x4f5d05,_0x1b2e0c){_0x4f5d05=_0x4f5d05||this[_0x1a4f('0x3c')];_0x1b2e0c=_0x1b2e0c||0x1;this['setContext'](_0x13bcae);this['setExtension'](_0x4f5d05);this[_0x1a4f('0x31')](_0x1b2e0c);return this['noop'](util[_0x1a4f('0x25')](_0x1a4f('0x3d'),_0x13bcae,_0x4f5d05,_0x1b2e0c));};AGIChannel[_0x1a4f('0x20')]['getVariable']=function(_0x2b48f3){return this['sendRequest'](util['format'](_0x1a4f('0x3e'),_0x2b48f3));};AGIChannel['prototype'][_0x1a4f('0x3f')]=function(_0x2ea37f,_0xaf5e68,_0x389390,_0x260e17,_0x358b85,_0x34d04e){_0xaf5e68=_0xaf5e68||_0x1a4f('0x40');_0x389390=_0x389390||'';_0x260e17=_0x260e17===undefined?-0x1:_0x260e17==='-1'?-0x1:_0x260e17*0x3e8;_0x358b85=_0x358b85===undefined?'':'s='+_0x358b85;_0x34d04e=_0x34d04e?_0x1a4f('0x41'):'';return this[_0x1a4f('0x1e')](util[_0x1a4f('0x25')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x2ea37f,_0xaf5e68,_0x389390,_0x260e17,_0x34d04e,_0x358b85));};AGIChannel[_0x1a4f('0x20')]['streamFile']=function(_0x2c772f,_0x389af0){_0x389af0=_0x389af0||'';return this['sendRequest'](util[_0x1a4f('0x25')](_0x1a4f('0x42'),_0x2c772f,_0x389af0));};AGIChannel['prototype'][_0x1a4f('0x43')]=function(_0x1f2ad6){return this[_0x1a4f('0x2a')](_0x1a4f('0x44'),_0x1f2ad6);};AGIChannel['prototype'][_0x1a4f('0x45')]=function(_0x3e886d){return this[_0x1a4f('0x2a')](_0x1a4f('0x46'),_0x3e886d);};AGIChannel[_0x1a4f('0x20')]['error']=function(_0x59ed25,_0x5ee502){this['noop'](util[_0x1a4f('0x25')](_0x1a4f('0x47'),_0x59ed25['id'],_0x59ed25[_0x1a4f('0x48')],_0x5ee502));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index d5b5d6e..7cb4f23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x725e=['[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','push','apply','name','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.'];(function(_0x3e0d76,_0x45e005){var _0x42c91d=function(_0x29e0dd){while(--_0x29e0dd){_0x3e0d76['push'](_0x3e0d76['shift']());}};_0x42c91d(++_0x45e005);}(_0x725e,0x14b));var _0xe725=function(_0x2d87b9,_0x219dd8){_0x2d87b9=_0x2d87b9-0x0;var _0x1c6b78=_0x725e[_0x2d87b9];return _0x1c6b78;};'use strict';var util=require(_0xe725('0x0'));var error={'E_AGI_UNDEFINED':_0xe725('0x1'),'E_AGI_ARGUMENT_PORT':_0xe725('0x2'),'E_AGI_SERVER_ERROR':_0xe725('0x3'),'E_AGI_SERVER_CLOSE':_0xe725('0x4'),'E_AGI_SERVER_MAXCONNECTION':_0xe725('0x5'),'E_AGI_SERVER_VOICE_DISABLED':_0xe725('0x6'),'E_AGI_SOCKET_ERROR':_0xe725('0x7'),'E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0xe725('0x8'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xe725('0x9'),'E_AGI_IVR_ENTRY':_0xe725('0xa')};function AGIError(_0xb409c){var _0xb409c=_0xb409c||null,_0x5390d=_0x5390d||[],_0x13b624=0x1,_0x21841d='';if(!error[_0xb409c]){_0xb409c='E_AGI_UNDEFINED';}_0x5390d[_0xe725('0xb')](error[_0xb409c]);while(arguments[_0x13b624]){_0x5390d[_0xe725('0xb')](arguments[_0x13b624]);_0x13b624++;}_0x21841d=util['format'][_0xe725('0xc')](util,_0x5390d);this['message']=_0x21841d;this[_0xe725('0xd')]=_0xb409c;}module['exports']=AGIError;
\ No newline at end of file
+var _0x6372=['Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','message','name','exports','util','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.'];(function(_0x5a272c,_0x4432ff){var _0x3dab5a=function(_0xcf2a07){while(--_0xcf2a07){_0x5a272c['push'](_0x5a272c['shift']());}};_0x3dab5a(++_0x4432ff);}(_0x6372,0xf7));var _0x2637=function(_0x136bae,_0x2b13b8){_0x136bae=_0x136bae-0x0;var _0x653c8a=_0x6372[_0x136bae];return _0x653c8a;};'use strict';var util=require(_0x2637('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x2637('0x1'),'E_AGI_SOCKET_ERROR':_0x2637('0x2'),'E_AGI_SOCKET_CLOSE':_0x2637('0x3'),'E_AGI_SOCKET_TIMEOUT':_0x2637('0x4'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x2637('0x5'),'E_AGI_IVR_ENTRY':_0x2637('0x6')};function AGIError(_0x493c8d){var _0x493c8d=_0x493c8d||null,_0x3efbd3=_0x3efbd3||[],_0x12e719=0x1,_0x1495e8='';if(!error[_0x493c8d]){_0x493c8d=_0x2637('0x7');}_0x3efbd3['push'](error[_0x493c8d]);while(arguments[_0x12e719]){_0x3efbd3[_0x2637('0x8')](arguments[_0x12e719]);_0x12e719++;}_0x1495e8=util[_0x2637('0x9')][_0x2637('0xa')](util,_0x3efbd3);this[_0x2637('0xb')]=_0x1495e8;this[_0x2637('0xc')]=_0x493c8d;}module[_0x2637('0xd')]=AGIError;
\ No newline at end of file
index ba273ee..3581db1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x565e=['getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','push','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','default','target','invalid','agicommand','vswitch','includes','max\x20retry\x20reach','lodash','../../../config/logger','getdigits'];(function(_0x2fa486,_0x2ece19){var _0x4e7353=function(_0x24a65d){while(--_0x24a65d){_0x2fa486['push'](_0x2fa486['shift']());}};_0x4e7353(++_0x2ece19);}(_0x565e,0x126));var _0xe565=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x565e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe565('0x0'));var logger=require(_0xe565('0x1'))('agi');var verticesWithRetry=['menu',_0xe565('0x2'),_0xe565('0x3')];var Graph=function(){this[_0xe565('0x4')]={};this[_0xe565('0x5')]={};this[_0xe565('0x6')]=0x0;};Graph[_0xe565('0x7')][_0xe565('0x8')]=function(_0x256b65){this[_0xe565('0x4')][_0x256b65['id']]=_0x256b65;this[_0xe565('0x5')][_0x256b65['id']]=[];};Graph[_0xe565('0x7')]['addEdge']=function(_0xa1923d,_0xbfa24,_0x5ab9da){this[_0xe565('0x5')][_0xa1923d][_0xe565('0x9')]({'target':_0xbfa24,'condition':_0x5ab9da});this[_0xe565('0x6')]+=0x1;};Graph[_0xe565('0x7')]['size']=function(){return _['size'](this[_0xe565('0x4')]);};Graph[_0xe565('0x7')][_0xe565('0xa')]=function(){return this[_0xe565('0x6')];};Graph['prototype'][_0xe565('0xb')]=function(_0x13e61c){return this[_0xe565('0x4')][_0x13e61c];};Graph[_0xe565('0x7')][_0xe565('0xc')]=function(_0x5b29c1,_0x28f14d){if(!this['vertices'][_0x5b29c1]){return logger[_0xe565('0xd')](_0xe565('0xe'));}var _0x34d4b8=_0x28f14d(this[_0xe565('0x4')][_0x5b29c1]);if(!_0x34d4b8){return logger[_0xe565('0xd')](_0xe565('0xf'));}if(this[_0xe565('0x5')][_0x5b29c1][_0xe565('0x10')]===0x0){return logger[_0xe565('0xd')](_0xe565('0x11'));}for(var _0x451f44=0x0,_0x1e10ea=[],_0x24fbf7=![];_0x451f44<this['edges'][_0x5b29c1][_0xe565('0x10')];_0x451f44+=0x1){if(this[_0xe565('0x5')][_0x5b29c1][_0x451f44][_0xe565('0x12')]){_0x1e10ea=this['edges'][_0x5b29c1][_0x451f44][_0xe565('0x12')][_0xe565('0x13')](',');for(var _0x5b6264=0x0;_0x5b6264<_0x1e10ea['length'];_0x5b6264+=0x1){if(this['vertices'][_0x5b29c1]['agicommand']==='vswitch'&&_0x1e10ea[_0x5b6264]==='-'){_0x24fbf7=this[_0xe565('0x5')][_0x5b29c1][_0x451f44]['target'];logger[_0xe565('0xd')](_0xe565('0x14'),_0x1e10ea[_0x5b6264],this['edges'][_0x5b29c1][_0x451f44][_0xe565('0x15')]);}else if(this[_0xe565('0x4')][_0x5b29c1]['agicommand']==='menu'&&_0x1e10ea[_0x5b6264]==='i'){_0x24fbf7=this[_0xe565('0x5')][_0x5b29c1][_0x451f44]['target'];logger[_0xe565('0xd')](_0xe565('0x16'),_0x1e10ea[_0x5b6264],this[_0xe565('0x5')][_0x5b29c1][_0x451f44][_0xe565('0x15')]);}if(_0x1e10ea[_0x5b6264]===_0x34d4b8){return this['traverseBFS'](this[_0xe565('0x5')][_0x5b29c1][_0x451f44]['target'],_0x28f14d);}}}else{return this[_0xe565('0xc')](this[_0xe565('0x5')][_0x5b29c1][_0x451f44][_0xe565('0x15')],_0x28f14d);}}if(_0x1e10ea[_0xe565('0x10')]){if(this[_0xe565('0x4')][_0x5b29c1][_0xe565('0x17')]===_0xe565('0x18')){if(_0x24fbf7){return this[_0xe565('0xc')](_0x24fbf7,_0x28f14d);}return logger[_0xe565('0xd')]('default\x20on\x20switch\x20not\x20found');}else if(_[_0xe565('0x19')](verticesWithRetry,this[_0xe565('0x4')][_0x5b29c1][_0xe565('0x17')])){if(_0x34d4b8==='-'){return logger[_0xe565('0xd')](_0xe565('0x1a'));}if(_0x24fbf7&&_0x34d4b8!=='t'){return this[_0xe565('0xc')](_0x24fbf7,_0x28f14d);}return this[_0xe565('0xc')](_0x5b29c1,_0x28f14d);}return logger['info']('condition\x20not\x20found');}};module['exports']=Graph;
\ No newline at end of file
+var _0x2e2d=['exports','lodash','../../../config/logger','menu','vertices','edges','numberOfEdges','prototype','addVertex','addEdge','size','relations','getVertex','traverseBFS','no\x20vertex\x20found','stop\x20traverse','info','no\x20edge/s\x20available','length','condition','split','agicommand','vswitch','target','default','invalid','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach'];(function(_0x49807c,_0x3f49b3){var _0x1c115f=function(_0x18141b){while(--_0x18141b){_0x49807c['push'](_0x49807c['shift']());}};_0x1c115f(++_0x3f49b3);}(_0x2e2d,0x92));var _0xd2e2=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x2e2d[_0x2b4411];return _0x8e41ef;};'use strict';var _=require(_0xd2e2('0x0'));var logger=require(_0xd2e2('0x1'))('agi');var verticesWithRetry=[_0xd2e2('0x2'),'getdigits','getsecretdigits'];var Graph=function(){this[_0xd2e2('0x3')]={};this[_0xd2e2('0x4')]={};this[_0xd2e2('0x5')]=0x0;};Graph[_0xd2e2('0x6')][_0xd2e2('0x7')]=function(_0x37e7a9){this[_0xd2e2('0x3')][_0x37e7a9['id']]=_0x37e7a9;this[_0xd2e2('0x4')][_0x37e7a9['id']]=[];};Graph[_0xd2e2('0x6')][_0xd2e2('0x8')]=function(_0x22ba38,_0x467dff,_0x5cfd1d){this['edges'][_0x22ba38]['push']({'target':_0x467dff,'condition':_0x5cfd1d});this[_0xd2e2('0x5')]+=0x1;};Graph[_0xd2e2('0x6')][_0xd2e2('0x9')]=function(){return _[_0xd2e2('0x9')](this[_0xd2e2('0x3')]);};Graph['prototype'][_0xd2e2('0xa')]=function(){return this['numberOfEdges'];};Graph[_0xd2e2('0x6')][_0xd2e2('0xb')]=function(_0x290ce4){return this[_0xd2e2('0x3')][_0x290ce4];};Graph[_0xd2e2('0x6')][_0xd2e2('0xc')]=function(_0x26223c,_0x293ad3){if(!this[_0xd2e2('0x3')][_0x26223c]){return logger['info'](_0xd2e2('0xd'));}var _0x596baf=_0x293ad3(this[_0xd2e2('0x3')][_0x26223c]);if(!_0x596baf){return logger['info'](_0xd2e2('0xe'));}if(this[_0xd2e2('0x4')][_0x26223c]['length']===0x0){return logger[_0xd2e2('0xf')](_0xd2e2('0x10'));}for(var _0x1ed4f1=0x0,_0xf109c7=[],_0x2b34fa=![];_0x1ed4f1<this[_0xd2e2('0x4')][_0x26223c][_0xd2e2('0x11')];_0x1ed4f1+=0x1){if(this[_0xd2e2('0x4')][_0x26223c][_0x1ed4f1][_0xd2e2('0x12')]){_0xf109c7=this[_0xd2e2('0x4')][_0x26223c][_0x1ed4f1]['condition'][_0xd2e2('0x13')](',');for(var _0x4da844=0x0;_0x4da844<_0xf109c7[_0xd2e2('0x11')];_0x4da844+=0x1){if(this[_0xd2e2('0x3')][_0x26223c][_0xd2e2('0x14')]===_0xd2e2('0x15')&&_0xf109c7[_0x4da844]==='-'){_0x2b34fa=this['edges'][_0x26223c][_0x1ed4f1][_0xd2e2('0x16')];logger['info'](_0xd2e2('0x17'),_0xf109c7[_0x4da844],this[_0xd2e2('0x4')][_0x26223c][_0x1ed4f1]['target']);}else if(this[_0xd2e2('0x3')][_0x26223c][_0xd2e2('0x14')]===_0xd2e2('0x2')&&_0xf109c7[_0x4da844]==='i'){_0x2b34fa=this[_0xd2e2('0x4')][_0x26223c][_0x1ed4f1]['target'];logger[_0xd2e2('0xf')](_0xd2e2('0x18'),_0xf109c7[_0x4da844],this[_0xd2e2('0x4')][_0x26223c][_0x1ed4f1][_0xd2e2('0x16')]);}if(_0xf109c7[_0x4da844]===_0x596baf){return this['traverseBFS'](this[_0xd2e2('0x4')][_0x26223c][_0x1ed4f1][_0xd2e2('0x16')],_0x293ad3);}}}else{return this[_0xd2e2('0xc')](this[_0xd2e2('0x4')][_0x26223c][_0x1ed4f1][_0xd2e2('0x16')],_0x293ad3);}}if(_0xf109c7['length']){if(this[_0xd2e2('0x3')][_0x26223c][_0xd2e2('0x14')]==='vswitch'){if(_0x2b34fa){return this['traverseBFS'](_0x2b34fa,_0x293ad3);}return logger[_0xd2e2('0xf')](_0xd2e2('0x19'));}else if(_[_0xd2e2('0x1a')](verticesWithRetry,this[_0xd2e2('0x3')][_0x26223c]['agicommand'])){if(_0x596baf==='-'){return logger['info'](_0xd2e2('0x1b'));}if(_0x2b34fa&&_0x596baf!=='t'){return this[_0xd2e2('0xc')](_0x2b34fa,_0x293ad3);}return this[_0xd2e2('0xc')](_0x26223c,_0x293ad3);}return logger[_0xd2e2('0xf')]('condition\x20not\x20found');}};module[_0xd2e2('0x1c')]=Graph;
\ No newline at end of file
index d574f13..006eba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0597=['./rpc','./graph','./vertices','defaults','127.0.0.1','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','message','name','format','info','arg_1','callerid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','evtHangup','toJson','mxGraphModel','root','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','length','source','target','addEdge','getSquareProject','then','catch','indexOf','agi_','substring','inspect','debug','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','timeout','hangup','sync','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','[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','agicommand','response','code','result','isUndefined','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[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','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util'];(function(_0x46824f,_0x81b265){var _0x56f9b8=function(_0x246128){while(--_0x246128){_0x46824f['push'](_0x46824f['shift']());}};_0x56f9b8(++_0x81b265);}(_0x0597,0x10c));var _0x7059=function(_0x48ef4d,_0x43e3d4){_0x48ef4d=_0x48ef4d-0x0;var _0x1b04cd=_0x0597[_0x48ef4d];return _0x1b04cd;};'use strict';var parser=require('xml2json');var _=require(_0x7059('0x0'));var syncho=require(_0x7059('0x1'));var util=require(_0x7059('0x2'));var moment=require(_0x7059('0x3'));var config=require(_0x7059('0x4'));var logger=require(_0x7059('0x5'))(_0x7059('0x6'));var utilLicense=require(_0x7059('0x7'));var rpc=require(_0x7059('0x8'));var mailRpc=require('./mailRpc');var Graph=require(_0x7059('0x9'));var Vertices=require(_0x7059('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x7059('0x6')]=_[_0x7059('0xb')](config[_0x7059('0x6')],{'ip':_0x7059('0xc'),'port':0x11dd});function connectionHandler(_0xf0fef6){process[_0x7059('0xd')](function(){syncho(function(){try{setChannelVariables(_0xf0fef6);agiHandler(_0xf0fef6);}catch(_0x2a2a8a){logger[_0x7059('0xe')](_0x2a2a8a[_0x7059('0xf')]);}});});}function listeningHandler(){console[_0x7059('0x10')](_0x7059('0x11'),config[_0x7059('0x6')][_0x7059('0x12')]);logger['info'](util['format'](_0x7059('0x13'),config[_0x7059('0x6')]['ip'],config[_0x7059('0x6')][_0x7059('0x12')]));}function errorHandler(_0x2190cc){if(_0x2190cc&&_0x2190cc['name']&&_0x2190cc[_0x7059('0x14')]){logger[_0x7059('0xe')](util['format']('[%s]\x20%s',_0x2190cc[_0x7059('0x15')],_0x2190cc[_0x7059('0x14')]));}else{logger[_0x7059('0xe')](util[_0x7059('0x16')]('[ERROR]\x20%s',_0x2190cc[_0x7059('0xf')]));}}function closeHandler(){logger[_0x7059('0x17')](util[_0x7059('0x16')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x7059('0x18')],this['calleridname'],this[_0x7059('0x19')],this['dnid'],this['uniqueid']));try{createSquareReport(this);}catch(_0x4f3c40){logger['error'](_0x4f3c40[_0x7059('0xf')]);}}function timeoutHandler(){logger[_0x7059('0x17')](util[_0x7059('0x16')](_0x7059('0x1a'),this[_0x7059('0x18')],this['calleridname'],this[_0x7059('0x19')],this[_0x7059('0x1b')],this['uniqueid']));}function hangupHandler(){logger[_0x7059('0x17')](util[_0x7059('0x16')](_0x7059('0x1c'),this[_0x7059('0x18')],this['calleridname'],this['callerid'],this['dnid'],this[_0x7059('0x1d')]));this[_0x7059('0x1e')]=!![];}function getRoot(_0x749122){return parser[_0x7059('0x1f')](_0x749122,{'object':!![]})[_0x7059('0x20')][_0x7059('0x21')];}function addVertex(_0x5d2927,_0x4d173e,_0xbaa563){_0x4d173e['agicommand']=_0xbaa563;if(_0x4d173e[_0x7059('0x22')](_0x7059('0x23'))){_0x4d173e[_0x7059('0x24')]=parseInt(_0x4d173e[_0x7059('0x23')],0xa);}_0x5d2927[_0x7059('0x25')](_[_0x7059('0x26')](_0x4d173e,_0x7059('0x27')));}function initGraph(_0x2f89e4,_0x2195f9){var _0x13bacc=new Graph();for(var _0x2cec58 in _0x2f89e4){if(_0x2f89e4[_0x7059('0x22')](_0x2cec58)){if(_['isArray'](_0x2f89e4[_0x2cec58])){for(var _0x13731b=0x0;_0x13731b<_0x2f89e4[_0x2cec58]['length'];_0x13731b+=0x1){addVertex(_0x13bacc,_0x2f89e4[_0x2cec58][_0x13731b],_0x2cec58);}}else{addVertex(_0x13bacc,_0x2f89e4[_0x2cec58],_0x2cec58);}}}for(var _0x1a9f1c=0x0;_0x1a9f1c<_0x2195f9[_0x7059('0x28')];_0x1a9f1c+=0x1){if(_0x2195f9[_0x1a9f1c][_0x7059('0x29')]&&_0x2195f9[_0x1a9f1c][_0x7059('0x2a')]){_0x13bacc[_0x7059('0x2b')](_0x2195f9[_0x1a9f1c]['source'],_0x2195f9[_0x1a9f1c][_0x7059('0x2a')],_0x2195f9[_0x1a9f1c]['value']);}}return _0x13bacc;}function getSquareProject(_0x111ffe,_0x2130f1){rpc[_0x7059('0x2c')](_0x111ffe)[_0x7059('0x2d')](function(_0xc2157c){_0x2130f1(null,_0xc2157c);})[_0x7059('0x2e')](function(_0x28c86a){_0x2130f1(null,_0x28c86a);});}function createSquareReport(_0xe4b55e,_0x317c68){rpc['createSquareReport'](_0xe4b55e)[_0x7059('0x2d')](function(_0x769c1){if(_0x317c68){_0x317c68(null,_0x769c1);}})[_0x7059('0x2e')](function(_0x29e396){if(_0x317c68){_0x317c68(null,_0x29e396);}});}function setChannelVariables(_0x130cdf){for(var _0x5b779a in _0x130cdf){if(_0x130cdf[_0x7059('0x22')](_0x5b779a)){if(_0x5b779a[_0x7059('0x2f')](_0x7059('0x30'))===0x0){_0x130cdf[_0x5b779a[_0x7059('0x31')](0x4)]=_0x130cdf[_0x5b779a];delete _0x130cdf[_0x5b779a];}}}}function getLogFromObject(_0x3cd651){return util[_0x7059('0x32')](_0x3cd651,{'showHidden':![],'depth':null});}function agiHandler(_0x1112b6){var _0x1cb7de,_0x66e6ee,_0x5e4999,_0x41760d,_0x24bff2;logger[_0x7059('0x33')]('variables',JSON[_0x7059('0x34')](_0x1112b6,null,0x2));logger['info'](util[_0x7059('0x16')](_0x7059('0x35'),_0x1112b6[_0x7059('0x18')],_0x1112b6[_0x7059('0x36')],_0x1112b6['callerid'],_0x1112b6['dnid'],_0x1112b6['uniqueid']));_0x1112b6['on'](_0x7059('0xe'),errorHandler);_0x1112b6['on']('close',closeHandler);_0x1112b6['on'](_0x7059('0x37'),timeoutHandler);_0x1112b6[_0x7059('0x1e')]=![];_0x1112b6['on'](_0x7059('0x38'),hangupHandler);var _0x252c34=getSquareProject[_0x7059('0x39')](null,_0x1112b6['arg_1']);if(_0x252c34){if(_0x252c34['production']){_0x1cb7de=getRoot(_0x252c34[_0x7059('0x3a')]);if(_0x1cb7de&&_0x1cb7de[_0x7059('0x3b')]){logger[_0x7059('0x33')](_0x7059('0x21'),JSON[_0x7059('0x34')](_0x1cb7de,null,0x2));_0x1112b6[_0x7059('0x3c')]=moment()['format'](_0x7059('0x3d'));_0x66e6ee=initGraph(_[_0x7059('0x26')](_0x1cb7de,'mxCell'),_0x1cb7de['mxCell']);_0x5e4999=new Vertices(_0x1112b6,rpc,mailRpc);logger[_0x7059('0x17')](util[_0x7059('0x16')](_0x7059('0x3e'),_0x1112b6['arg_1'],_0x1112b6['calleridname'],_0x1112b6[_0x7059('0x19')],_0x1112b6[_0x7059('0x1b')],_0x1112b6[_0x7059('0x1d')]));_0x66e6ee[_0x7059('0x3f')](_0x1cb7de[_0x7059('0x3b')]['id'],function(_0x32793a){try{_0x32793a=_0x5e4999[_0x7059('0x40')](_0x32793a);logger[_0x7059('0x33')](_0x7059('0x41'),JSON['stringify'](_0x32793a,null,0x2));if(_0x32793a['agicommand']===_0x7059('0x42')){logger[_0x7059('0x17')](_0x7059('0x43'));_0x1112b6[_0x7059('0x44')]=_0x32793a['context']||_0x1112b6['context'];_0x1112b6[_0x7059('0x45')]=_0x32793a[_0x7059('0x45')];_0x1112b6[_0x7059('0x46')]=_0x32793a[_0x7059('0x46')]?_0x32793a[_0x7059('0x46')]-0x1:0x1;return null;}else if(_0x32793a&&_0x5e4999[_0x32793a[_0x7059('0x47')]]){_0x24bff2=_0x5e4999[_0x32793a[_0x7059('0x47')]](_0x32793a);logger[_0x7059('0x17')](_0x7059('0x48'),JSON[_0x7059('0x34')](_0x24bff2,null,0x2));if(_0x24bff2&&_0x24bff2[_0x7059('0x49')]===AGI_CODE_SUCCESS&&_0x24bff2[_0x7059('0x4a')]!==AGI_RESULT_ERROR&&!_0x1112b6['evtHangup']){logger[_0x7059('0x33')](_0x7059('0x48'),getLogFromObject(_0x24bff2));return _[_0x7059('0x4b')](_0x24bff2[_0x7059('0x4a')])?null:_0x24bff2['result'][_0x7059('0x4c')]();}else{logger[_0x7059('0xe')](_0x7059('0x48'),getLogFromObject(_0x24bff2));return null;}}else{logger[_0x7059('0xe')](_0x7059('0x4d'));return null;}}catch(_0x192778){logger[_0x7059('0xe')](_0x192778[_0x7059('0xf')]);return null;}});if(_0x1cb7de[_0x7059('0x4e')]){logger[_0x7059('0x17')](util[_0x7059('0x16')](_0x7059('0x4f'),_0x1112b6['arg_1'],_0x1112b6[_0x7059('0x36')],_0x1112b6['callerid'],_0x1112b6['dnid'],_0x1112b6['uniqueid']));_0x66e6ee['traverseBFS'](_0x1cb7de[_0x7059('0x4e')]['id'],function(_0x3f4322){try{_0x3f4322=_0x5e4999['clear'](_0x3f4322);logger[_0x7059('0x33')](_0x7059('0x41'),JSON['stringify'](_0x3f4322,null,0x2));if(_0x3f4322&&_0x5e4999[_0x3f4322[_0x7059('0x47')]]){_0x24bff2=_0x5e4999[_0x3f4322[_0x7059('0x47')]](_0x3f4322);if(_0x24bff2){logger[_0x7059('0x33')]('response',getLogFromObject(_0x24bff2));return _[_0x7059('0x4b')](_0x24bff2[_0x7059('0x4a')])?null:_0x24bff2[_0x7059('0x4a')]['toString']();}else{logger[_0x7059('0xe')]('response',getLogFromObject(_0x24bff2));return null;}}else{logger[_0x7059('0xe')](_0x7059('0x4d'));return null;}}catch(_0x149bdf){logger[_0x7059('0xe')](_0x149bdf[_0x7059('0xf')]);return null;}});}logger[_0x7059('0x17')](util[_0x7059('0x16')](_0x7059('0x50'),_0x1112b6[_0x7059('0x18')],_0x1112b6['calleridname'],_0x1112b6[_0x7059('0x19')],_0x1112b6[_0x7059('0x1b')],_0x1112b6['uniqueid']));logger[_0x7059('0x17')](util[_0x7059('0x16')](_0x7059('0x51'),_0x1112b6['context'],_0x1112b6[_0x7059('0x45')],parseInt(_0x1112b6[_0x7059('0x46')],0xa)+0x1));_0x1112b6[_0x7059('0x52')](_0x1112b6[_0x7059('0x44')],_0x1112b6[_0x7059('0x45')],parseInt(_0x1112b6[_0x7059('0x46')],0xa)+0x1);_0x1112b6[_0x7059('0x53')]();}}else{logger['error'](util[_0x7059('0x16')](_0x7059('0x54'),_0x1112b6[_0x7059('0x18')]));_0x1112b6[_0x7059('0x52')](_0x1112b6['context'],_0x1112b6['extension'],parseInt(_0x1112b6[_0x7059('0x46')],0xa)+0x1);_0x1112b6[_0x7059('0x53')]();}}else{logger[_0x7059('0xe')](util[_0x7059('0x16')](_0x7059('0x55'),_0x1112b6[_0x7059('0x18')]));_0x1112b6[_0x7059('0x52')](_0x1112b6[_0x7059('0x44')],_0x1112b6[_0x7059('0x45')],parseInt(_0x1112b6[_0x7059('0x46')],0xa)+0x1);_0x1112b6[_0x7059('0x53')]();}}function main(){var _0x4a663c;return utilLicense[_0x7059('0x56')]()[_0x7059('0x2d')](function(_0x5a9d52){if(_0x5a9d52){if(_0x5a9d52['voice']){if(_0x5a9d52['callysquare']&&_0x5a9d52[_0x7059('0x57')]>0x0){logger[_0x7059('0x17')](util[_0x7059('0x16')](_0x7059('0x58'),_0x5a9d52[_0x7059('0x57')]));_0x4a663c=_0x5a9d52['callysquare'];}else{logger[_0x7059('0x17')](_0x7059('0x59'));}}else{logger[_0x7059('0x17')](_0x7059('0x5a'));_0x4a663c=-0x1;}}})[_0x7059('0x2e')](function(_0x506680){logger[_0x7059('0xe')]('[LICENSE]',_0x506680[_0x7059('0xf')]);})[_0x7059('0x4e')](function(){var _0x54c82b=require(_0x7059('0x5b'))(config[_0x7059('0x6')][_0x7059('0x12')],config[_0x7059('0x6')]['ip'],_0x4a663c);_0x54c82b['on'](_0x7059('0xe'),errorHandler);_0x54c82b['on']('listening',listeningHandler);_0x54c82b['on']('connection',connectionHandler);_0x54c82b['on']('close',closeHandler);});}main();
\ No newline at end of file
+var _0xe07a=['code','result','isUndefined','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','toString','agicommand\x20not\x20found','[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\x20published','close','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','catch','[LICENSE]','./server','listening','connection','xml2json','syncho','util','../../config/environment','agi','./rpc','./mailRpc','./graph','./vertices','defaults','127.0.0.1','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','name','message','error','format','[%s]\x20%s','[ERROR]\x20%s','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','uniqueid','evtHangup','toJson','mxGraphModel','root','hasOwnProperty','retry','addVertex','omit','isArray','length','addEdge','source','target','getSquareProject','then','createSquareReport','indexOf','agi_','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','production','joinAt','YYYY-MM-DD\x20HH:mm:ss','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','start','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','agicommand','response'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0xe07a,0x1db));var _0xae07=function(_0x54a1cc,_0x4e57bd){_0x54a1cc=_0x54a1cc-0x0;var _0x3a12b1=_0xe07a[_0x54a1cc];return _0x3a12b1;};'use strict';var parser=require(_0xae07('0x0'));var _=require('lodash');var syncho=require(_0xae07('0x1'));var util=require(_0xae07('0x2'));var moment=require('moment');var config=require(_0xae07('0x3'));var logger=require('../../config/logger')(_0xae07('0x4'));var utilLicense=require('../../config/license/util');var rpc=require(_0xae07('0x5'));var mailRpc=require(_0xae07('0x6'));var Graph=require(_0xae07('0x7'));var Vertices=require(_0xae07('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0xae07('0x9')](config[_0xae07('0x4')],{'ip':_0xae07('0xa'),'port':0x11dd});function connectionHandler(_0x17667c){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x17667c);agiHandler(_0x17667c);}catch(_0x3849b5){logger['error'](_0x3849b5[_0xae07('0xb')]);}});});}function listeningHandler(){console[_0xae07('0xc')](_0xae07('0xd'),config[_0xae07('0x4')][_0xae07('0xe')]);logger[_0xae07('0xf')](util['format']('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0xae07('0x4')]['ip'],config[_0xae07('0x4')]['port']));}function errorHandler(_0x28efba){if(_0x28efba&&_0x28efba[_0xae07('0x10')]&&_0x28efba[_0xae07('0x11')]){logger[_0xae07('0x12')](util[_0xae07('0x13')](_0xae07('0x14'),_0x28efba[_0xae07('0x10')],_0x28efba[_0xae07('0x11')]));}else{logger[_0xae07('0x12')](util[_0xae07('0x13')](_0xae07('0x15'),_0x28efba['stack']));}}function closeHandler(){logger['info'](util[_0xae07('0x13')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this['calleridname'],this['callerid'],this[_0xae07('0x16')],this['uniqueid']));try{createSquareReport(this);}catch(_0x1f21c6){logger[_0xae07('0x12')](_0x1f21c6[_0xae07('0xb')]);}}function timeoutHandler(){logger[_0xae07('0xf')](util[_0xae07('0x13')](_0xae07('0x17'),this[_0xae07('0x18')],this[_0xae07('0x19')],this[_0xae07('0x1a')],this[_0xae07('0x16')],this[_0xae07('0x1b')]));}function hangupHandler(){logger[_0xae07('0xf')](util[_0xae07('0x13')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0xae07('0x19')],this[_0xae07('0x1a')],this[_0xae07('0x16')],this[_0xae07('0x1b')]));this[_0xae07('0x1c')]=!![];}function getRoot(_0xe701e1){return parser[_0xae07('0x1d')](_0xe701e1,{'object':!![]})[_0xae07('0x1e')][_0xae07('0x1f')];}function addVertex(_0x23582e,_0x1e603f,_0x50cc6a){_0x1e603f['agicommand']=_0x50cc6a;if(_0x1e603f[_0xae07('0x20')](_0xae07('0x21'))){_0x1e603f['maxRetry']=parseInt(_0x1e603f[_0xae07('0x21')],0xa);}_0x23582e[_0xae07('0x22')](_[_0xae07('0x23')](_0x1e603f,'mxCell'));}function initGraph(_0x57394f,_0xf3bfda){var _0x412ab=new Graph();for(var _0x6b40fd in _0x57394f){if(_0x57394f[_0xae07('0x20')](_0x6b40fd)){if(_[_0xae07('0x24')](_0x57394f[_0x6b40fd])){for(var _0xa847ff=0x0;_0xa847ff<_0x57394f[_0x6b40fd][_0xae07('0x25')];_0xa847ff+=0x1){addVertex(_0x412ab,_0x57394f[_0x6b40fd][_0xa847ff],_0x6b40fd);}}else{addVertex(_0x412ab,_0x57394f[_0x6b40fd],_0x6b40fd);}}}for(var _0x5485c6=0x0;_0x5485c6<_0xf3bfda[_0xae07('0x25')];_0x5485c6+=0x1){if(_0xf3bfda[_0x5485c6]['source']&&_0xf3bfda[_0x5485c6]['target']){_0x412ab[_0xae07('0x26')](_0xf3bfda[_0x5485c6][_0xae07('0x27')],_0xf3bfda[_0x5485c6][_0xae07('0x28')],_0xf3bfda[_0x5485c6]['value']);}}return _0x412ab;}function getSquareProject(_0x5adfb0,_0x3f22fe){rpc[_0xae07('0x29')](_0x5adfb0)[_0xae07('0x2a')](function(_0x17bd1c){_0x3f22fe(null,_0x17bd1c);})['catch'](function(_0x5c8258){_0x3f22fe(null,_0x5c8258);});}function createSquareReport(_0x2aacd8,_0x3b37e4){rpc[_0xae07('0x2b')](_0x2aacd8)[_0xae07('0x2a')](function(_0x3f43e2){if(_0x3b37e4){_0x3b37e4(null,_0x3f43e2);}})['catch'](function(_0x3adc88){if(_0x3b37e4){_0x3b37e4(null,_0x3adc88);}});}function setChannelVariables(_0x481849){for(var _0x2fea41 in _0x481849){if(_0x481849[_0xae07('0x20')](_0x2fea41)){if(_0x2fea41[_0xae07('0x2c')](_0xae07('0x2d'))===0x0){_0x481849[_0x2fea41[_0xae07('0x2e')](0x4)]=_0x481849[_0x2fea41];delete _0x481849[_0x2fea41];}}}}function getLogFromObject(_0x19b7d1){return util[_0xae07('0x2f')](_0x19b7d1,{'showHidden':![],'depth':null});}function agiHandler(_0x151ac8){var _0x25c4a1,_0x1589f8,_0x553314,_0x1d0108,_0x112919;logger[_0xae07('0x30')](_0xae07('0x31'),JSON[_0xae07('0x32')](_0x151ac8,null,0x2));logger[_0xae07('0xf')](util[_0xae07('0x13')](_0xae07('0x33'),_0x151ac8['arg_1'],_0x151ac8[_0xae07('0x19')],_0x151ac8['callerid'],_0x151ac8[_0xae07('0x16')],_0x151ac8[_0xae07('0x1b')]));_0x151ac8['on']('error',errorHandler);_0x151ac8['on']('close',closeHandler);_0x151ac8['on'](_0xae07('0x34'),timeoutHandler);_0x151ac8['evtHangup']=![];_0x151ac8['on']('hangup',hangupHandler);var _0x57446f=getSquareProject['sync'](null,_0x151ac8[_0xae07('0x18')]);if(_0x57446f){if(_0x57446f[_0xae07('0x35')]){_0x25c4a1=getRoot(_0x57446f[_0xae07('0x35')]);if(_0x25c4a1&&_0x25c4a1['start']){logger[_0xae07('0x30')](_0xae07('0x1f'),JSON[_0xae07('0x32')](_0x25c4a1,null,0x2));_0x151ac8[_0xae07('0x36')]=moment()[_0xae07('0x13')](_0xae07('0x37'));_0x1589f8=initGraph(_[_0xae07('0x23')](_0x25c4a1,_0xae07('0x38')),_0x25c4a1[_0xae07('0x38')]);_0x553314=new Vertices(_0x151ac8,rpc,mailRpc);logger[_0xae07('0xf')](util['format'](_0xae07('0x39'),_0x151ac8[_0xae07('0x18')],_0x151ac8[_0xae07('0x19')],_0x151ac8[_0xae07('0x1a')],_0x151ac8[_0xae07('0x16')],_0x151ac8['uniqueid']));_0x1589f8['traverseBFS'](_0x25c4a1[_0xae07('0x3a')]['id'],function(_0x1001fd){try{_0x1001fd=_0x553314['clear'](_0x1001fd);logger[_0xae07('0x30')]('vertex',JSON[_0xae07('0x32')](_0x1001fd,null,0x2));if(_0x1001fd['agicommand']==='gotoc'){logger[_0xae07('0xf')](_0xae07('0x3b'));_0x151ac8['context']=_0x1001fd['context']||_0x151ac8[_0xae07('0x3c')];_0x151ac8[_0xae07('0x3d')]=_0x1001fd['extension'];_0x151ac8['priority']=_0x1001fd[_0xae07('0x3e')]?_0x1001fd[_0xae07('0x3e')]-0x1:0x1;return null;}else if(_0x1001fd&&_0x553314[_0x1001fd[_0xae07('0x3f')]]){_0x112919=_0x553314[_0x1001fd[_0xae07('0x3f')]](_0x1001fd);logger['info'](_0xae07('0x40'),JSON[_0xae07('0x32')](_0x112919,null,0x2));if(_0x112919&&_0x112919[_0xae07('0x41')]===AGI_CODE_SUCCESS&&_0x112919[_0xae07('0x42')]!==AGI_RESULT_ERROR&&!_0x151ac8['evtHangup']){logger['debug']('response',getLogFromObject(_0x112919));return _[_0xae07('0x43')](_0x112919['result'])?null:_0x112919['result']['toString']();}else{logger[_0xae07('0x12')](_0xae07('0x40'),getLogFromObject(_0x112919));return null;}}else{logger[_0xae07('0x12')]('agicommand\x20not\x20found');return null;}}catch(_0x3a2545){logger[_0xae07('0x12')](_0x3a2545['stack']);return null;}});if(_0x25c4a1[_0xae07('0x44')]){logger['info'](util['format'](_0xae07('0x45'),_0x151ac8[_0xae07('0x18')],_0x151ac8[_0xae07('0x19')],_0x151ac8[_0xae07('0x1a')],_0x151ac8['dnid'],_0x151ac8[_0xae07('0x1b')]));_0x1589f8[_0xae07('0x46')](_0x25c4a1['finally']['id'],function(_0x2da19f){try{_0x2da19f=_0x553314[_0xae07('0x47')](_0x2da19f);logger[_0xae07('0x30')]('vertex',JSON[_0xae07('0x32')](_0x2da19f,null,0x2));if(_0x2da19f&&_0x553314[_0x2da19f[_0xae07('0x3f')]]){_0x112919=_0x553314[_0x2da19f[_0xae07('0x3f')]](_0x2da19f);if(_0x112919){logger[_0xae07('0x30')](_0xae07('0x40'),getLogFromObject(_0x112919));return _['isUndefined'](_0x112919[_0xae07('0x42')])?null:_0x112919[_0xae07('0x42')][_0xae07('0x48')]();}else{logger[_0xae07('0x12')]('response',getLogFromObject(_0x112919));return null;}}else{logger[_0xae07('0x12')](_0xae07('0x49'));return null;}}catch(_0x46d0dd){logger[_0xae07('0x12')](_0x46d0dd[_0xae07('0xb')]);return null;}});}logger[_0xae07('0xf')](util[_0xae07('0x13')](_0xae07('0x4a'),_0x151ac8['arg_1'],_0x151ac8['calleridname'],_0x151ac8[_0xae07('0x1a')],_0x151ac8['dnid'],_0x151ac8[_0xae07('0x1b')]));logger[_0xae07('0xf')](util[_0xae07('0x13')](_0xae07('0x4b'),_0x151ac8[_0xae07('0x3c')],_0x151ac8[_0xae07('0x3d')],parseInt(_0x151ac8[_0xae07('0x3e')],0xa)+0x1));_0x151ac8[_0xae07('0x4c')](_0x151ac8[_0xae07('0x3c')],_0x151ac8[_0xae07('0x3d')],parseInt(_0x151ac8[_0xae07('0x3e')],0xa)+0x1);_0x151ac8['close']();}}else{logger[_0xae07('0x12')](util['format'](_0xae07('0x4d'),_0x151ac8[_0xae07('0x18')]));_0x151ac8[_0xae07('0x4c')](_0x151ac8[_0xae07('0x3c')],_0x151ac8[_0xae07('0x3d')],parseInt(_0x151ac8['priority'],0xa)+0x1);_0x151ac8[_0xae07('0x4e')]();}}else{logger['error'](util[_0xae07('0x13')](_0xae07('0x4f'),_0x151ac8[_0xae07('0x18')]));_0x151ac8['continueAt'](_0x151ac8[_0xae07('0x3c')],_0x151ac8['extension'],parseInt(_0x151ac8[_0xae07('0x3e')],0xa)+0x1);_0x151ac8[_0xae07('0x4e')]();}}function main(){var _0x2685d8;return utilLicense[_0xae07('0x50')]()['then'](function(_0xcfea53){if(_0xcfea53){if(_0xcfea53[_0xae07('0x51')]){if(_0xcfea53[_0xae07('0x52')]&&_0xcfea53['callysquare']>0x0){logger[_0xae07('0xf')](util[_0xae07('0x13')]('[LICENSE]\x20CHANNELS:\x20%s',_0xcfea53[_0xae07('0x52')]));_0x2685d8=_0xcfea53['callysquare'];}else{logger[_0xae07('0xf')](_0xae07('0x53'));}}else{logger[_0xae07('0xf')](_0xae07('0x54'));_0x2685d8=-0x1;}}})[_0xae07('0x55')](function(_0x1eb5ce){logger[_0xae07('0x12')](_0xae07('0x56'),_0x1eb5ce[_0xae07('0xb')]);})['finally'](function(){var _0x2f93e=require(_0xae07('0x57'))(config[_0xae07('0x4')][_0xae07('0xe')],config[_0xae07('0x4')]['ip'],_0x2685d8);_0x2f93e['on'](_0xae07('0x12'),errorHandler);_0x2f93e['on'](_0xae07('0x58'),listeningHandler);_0x2f93e['on'](_0xae07('0x59'),connectionHandler);_0x2f93e['on'](_0xae07('0x4e'),closeHandler);});}main();
\ No newline at end of file
index ae11832..42b5ff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8260=['jayson/promise','client','then','message','result','catch','sendMailMessage','SendMail','bluebird'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x8260,0x10d));var _0x0826=function(_0x110e42,_0x134a3e){_0x110e42=_0x110e42-0x0;var _0x343f58=_0x8260[_0x110e42];return _0x343f58;};'use strict';var BPromise=require(_0x0826('0x0'));var jayson=require(_0x0826('0x1'));var client=jayson[_0x0826('0x2')]['http']({'port':0x232b});function request(_0x1bf2ba,_0x989d42){return new BPromise(function(_0x3afccb,_0x5833ce){return client['request'](_0x1bf2ba,_0x989d42)[_0x0826('0x3')](function(_0x1ab4bd){if(_0x1ab4bd['error']){return _0x5833ce(_0x1ab4bd['error'][_0x0826('0x4')]);}else{return _0x3afccb(_0x1ab4bd[_0x0826('0x5')]);}})[_0x0826('0x6')](function(_0x411824){return _0x5833ce(_0x411824);});});}exports[_0x0826('0x7')]=function(_0x150ed2,_0x3bb3bc){return request(_0x0826('0x8'),{'account':_0x150ed2,'message':_0x3bb3bc});};
\ No newline at end of file
+var _0x0b95=['message','result','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request','then','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0b95,0x125));var _0x50b9=function(_0x310be0,_0x8c5221){_0x310be0=_0x310be0-0x0;var _0x2721f2=_0x0b95[_0x310be0];return _0x2721f2;};'use strict';var BPromise=require(_0x50b9('0x0'));var jayson=require(_0x50b9('0x1'));var client=jayson[_0x50b9('0x2')][_0x50b9('0x3')]({'port':0x232b});function request(_0x448102,_0x48f8a3){return new BPromise(function(_0x489764,_0x2c4282){return client[_0x50b9('0x4')](_0x448102,_0x48f8a3)[_0x50b9('0x5')](function(_0x582f23){if(_0x582f23[_0x50b9('0x6')]){return _0x2c4282(_0x582f23[_0x50b9('0x6')][_0x50b9('0x7')]);}else{return _0x489764(_0x582f23[_0x50b9('0x8')]);}})[_0x50b9('0x9')](function(_0x555f9a){return _0x2c4282(_0x555f9a);});});}exports[_0x50b9('0xa')]=function(_0x375395,_0xe04be8){return request(_0x50b9('0xb'),{'account':_0x375395,'message':_0xe04be8});};
\ No newline at end of file
index e2e5d2c..c8701ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe132=['length','split','indexOf','trim','headers','emit','line','exports','stream','call','_localBuffer','prototype','_transform','toString','substring'];(function(_0x5345c1,_0xec8c14){var _0x4d9f61=function(_0x2aafa3){while(--_0x2aafa3){_0x5345c1['push'](_0x5345c1['shift']());}};_0x4d9f61(++_0xec8c14);}(_0xe132,0xbc));var _0x2e13=function(_0x5af09d,_0x2fb244){_0x5af09d=_0x5af09d-0x0;var _0x536ee1=_0xe132[_0x5af09d];return _0x536ee1;};'use strict';var util=require('util');var Transform=require(_0x2e13('0x0'))['Transform'];function AGIReply(_0x306a84){Transform[_0x2e13('0x1')](this,_0x306a84);this[_0x2e13('0x2')]='';this['_inBody']=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x2e13('0x3')][_0x2e13('0x4')]=function(_0x5386f1,_0x543e89,_0x5756f4){var _0x1d82a3='\x0a',_0x44e253=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x4349cd=-0x1,_0x3df3c3=-0x1,_0x1dded0='',_0x3a32e5=0x0,_0xd48bb2='',_0x5470c1='';this['_localBuffer']+=_0x5386f1[_0x2e13('0x5')]();_0xd48bb2=this[_0x2e13('0x2')];if(!this['_inBody']){_0x3a32e5=0x0;while(_0x44e253[_0x3a32e5]){while((_0x3df3c3=_0xd48bb2['indexOf'](_0x44e253[_0x3a32e5]))!=-0x1){_0x1dded0=_0x44e253[_0x3a32e5];_0x5470c1=_0xd48bb2[_0x2e13('0x6')](0x0,_0x3df3c3);_0xd48bb2=_0xd48bb2[_0x2e13('0x6')](_0x3df3c3+_0x1dded0[_0x2e13('0x7')]);var _0x1b1745=_0x5470c1[_0x2e13('0x8')](_0x1d82a3),_0x2b31d1=0x0,_0x17064e={},_0x41a751='',_0x54e956='',_0x26e491=-0x1;while(_0x1b1745[_0x2b31d1]){_0x26e491=_0x1b1745[_0x2b31d1][_0x2e13('0x9')](':');if(_0x26e491!=-0x1){_0x41a751=_0x1b1745[_0x2b31d1]['slice'](0x0,_0x26e491)[_0x2e13('0xa')]();_0x54e956=_0x1b1745[_0x2b31d1]['slice'](_0x26e491+0x1)['trim']();if(_0x41a751[_0x2e13('0x7')]>0x0){_0x17064e[_0x41a751]=_0x54e956;}}else{}_0x2b31d1++;}this['emit'](_0x2e13('0xb'),_0x17064e);this['_inBody']=!![];}_0x3a32e5++;}this[_0x2e13('0x2')]=_0xd48bb2;}else{while((_0x4349cd=_0xd48bb2[_0x2e13('0x9')](_0x1d82a3))!=-0x1){_0x5470c1=_0xd48bb2[_0x2e13('0x6')](0x0,_0x4349cd);this[_0x2e13('0xc')](_0x2e13('0xd'),_0x5470c1);_0xd48bb2=_0xd48bb2['substring'](_0x4349cd+_0x1d82a3[_0x2e13('0x7')]);}this[_0x2e13('0x2')]=_0xd48bb2;}_0x5756f4();};module[_0x2e13('0xe')]=AGIReply;
\ No newline at end of file
+var _0xfd8e=['line','exports','util','stream','Transform','call','_localBuffer','prototype','\x0d\x0a\x0d\x0a','toString','_inBody','indexOf','substring','length','split','slice','emit','headers'];(function(_0xc761b9,_0x2749c7){var _0x135d7f=function(_0x256278){while(--_0x256278){_0xc761b9['push'](_0xc761b9['shift']());}};_0x135d7f(++_0x2749c7);}(_0xfd8e,0xa4));var _0xefd8=function(_0x5e8559,_0x5afd3b){_0x5e8559=_0x5e8559-0x0;var _0x5e5d0e=_0xfd8e[_0x5e8559];return _0x5e5d0e;};'use strict';var util=require(_0xefd8('0x0'));var Transform=require(_0xefd8('0x1'))[_0xefd8('0x2')];function AGIReply(_0x3f533a){Transform[_0xefd8('0x3')](this,_0x3f533a);this[_0xefd8('0x4')]='';this['_inBody']=![];}util['inherits'](AGIReply,Transform);AGIReply[_0xefd8('0x5')]['_transform']=function(_0x4c8f29,_0x5ecc1b,_0x57b155){var _0xd31d77='\x0a',_0x112abd=['\x0a\x0a',_0xefd8('0x6')],_0x484397=-0x1,_0x389311=-0x1,_0x5aaf2e='',_0x667de6=0x0,_0x23b3e0='',_0x19b6f5='';this[_0xefd8('0x4')]+=_0x4c8f29[_0xefd8('0x7')]();_0x23b3e0=this[_0xefd8('0x4')];if(!this[_0xefd8('0x8')]){_0x667de6=0x0;while(_0x112abd[_0x667de6]){while((_0x389311=_0x23b3e0[_0xefd8('0x9')](_0x112abd[_0x667de6]))!=-0x1){_0x5aaf2e=_0x112abd[_0x667de6];_0x19b6f5=_0x23b3e0[_0xefd8('0xa')](0x0,_0x389311);_0x23b3e0=_0x23b3e0[_0xefd8('0xa')](_0x389311+_0x5aaf2e[_0xefd8('0xb')]);var _0x10ddb2=_0x19b6f5[_0xefd8('0xc')](_0xd31d77),_0x24bec4=0x0,_0x50e1a6={},_0x34fc25='',_0x16e160='',_0x56e05d=-0x1;while(_0x10ddb2[_0x24bec4]){_0x56e05d=_0x10ddb2[_0x24bec4][_0xefd8('0x9')](':');if(_0x56e05d!=-0x1){_0x34fc25=_0x10ddb2[_0x24bec4][_0xefd8('0xd')](0x0,_0x56e05d)['trim']();_0x16e160=_0x10ddb2[_0x24bec4]['slice'](_0x56e05d+0x1)['trim']();if(_0x34fc25[_0xefd8('0xb')]>0x0){_0x50e1a6[_0x34fc25]=_0x16e160;}}else{}_0x24bec4++;}this[_0xefd8('0xe')](_0xefd8('0xf'),_0x50e1a6);this[_0xefd8('0x8')]=!![];}_0x667de6++;}this[_0xefd8('0x4')]=_0x23b3e0;}else{while((_0x484397=_0x23b3e0[_0xefd8('0x9')](_0xd31d77))!=-0x1){_0x19b6f5=_0x23b3e0[_0xefd8('0xa')](0x0,_0x484397);this[_0xefd8('0xe')](_0xefd8('0x10'),_0x19b6f5);_0x23b3e0=_0x23b3e0['substring'](_0x484397+_0xd31d77[_0xefd8('0xb')]);}this['_localBuffer']=_0x23b3e0;}_0x57b155();};module[_0xefd8('0x11')]=AGIReply;
\ No newline at end of file
index a8201ba..3cbe54e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e8d=['createSmsMessage','CreateSmsMessage','createSquareDetailsReport','createSquareReport','merge','format','createSquareRecording','createSquareMessage','CreateSquareMessage','ShowCmHopper','phone','ListId','then','CreateCmContact','agentLogin','LoginUser','agentPause','PauseUser','UnpauseUser','agentLogout','bluebird','lodash','jayson/promise','client','http','request','error','message','result','catch','getSquareProject','Smtp','name','email','ShowSquareProject','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','Interval','Intervals','getSmsAccountById','ShowSmsAccount'];(function(_0x50efff,_0x16022a){var _0x337538=function(_0x39cb02){while(--_0x39cb02){_0x50efff['push'](_0x50efff['shift']());}};_0x337538(++_0x16022a);}(_0x3e8d,0xe8));var _0xd3e8=function(_0x38fd32,_0x479b30){_0x38fd32=_0x38fd32-0x0;var _0x11a906=_0x3e8d[_0x38fd32];return _0x11a906;};'use strict';var BPromise=require(_0xd3e8('0x0'));var moment=require('moment');var _=require(_0xd3e8('0x1'));var util=require('util');var jayson=require(_0xd3e8('0x2'));var client=jayson[_0xd3e8('0x3')][_0xd3e8('0x4')]({'port':0x2329});function request(_0x22e01d,_0x130160){return new BPromise(function(_0xc339fd,_0x80d1af){return client[_0xd3e8('0x5')](_0x22e01d,_0x130160)['then'](function(_0x583d39){if(_0x583d39[_0xd3e8('0x6')]){return _0x80d1af(_0x583d39[_0xd3e8('0x6')][_0xd3e8('0x7')]);}else{return _0xc339fd(_0x583d39[_0xd3e8('0x8')]);}})[_0xd3e8('0x9')](function(_0x12d883){return _0x80d1af(_0x12d883);});});}exports[_0xd3e8('0xa')]=function(_0x44e4d5){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x44e4d5},'attributes':['production']}});};exports['getMailAccountById']=function(_0x4323b8){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x4323b8},'include':[{'model':'MailServerOut','as':_0xd3e8('0xb')}],'attributes':['id',_0xd3e8('0xc'),_0xd3e8('0xd')]}});};exports['getSquareProjectById']=function(_0x5551a3){return request(_0xd3e8('0xe'),{'options':{'where':{'id':_0x5551a3},'attributes':[_0xd3e8('0xc')]}});};exports['getVoiceQueueById']=function(_0x222e69){return request(_0xd3e8('0xf'),{'options':{'where':{'id':_0x222e69},'attributes':[_0xd3e8('0xc')]}});};exports[_0xd3e8('0x10')]=function(_0x385d1a){return request(_0xd3e8('0x11'),{'options':{'where':{'id':_0x385d1a},'attributes':[_0xd3e8('0xc')]}});};exports[_0xd3e8('0x12')]=function(_0x25e1cf){return request(_0xd3e8('0x13'),{'options':{'where':{'id':_0x25e1cf},'attributes':[_0xd3e8('0x14')]}});};exports[_0xd3e8('0x15')]=function(_0x4e3eae){return request(_0xd3e8('0x16'),{'options':{'where':{'id':_0x4e3eae},'attributes':[_0xd3e8('0xc')]}});};exports[_0xd3e8('0x17')]=function(_0x15c83b){return request(_0xd3e8('0x18'),{'options':{'where':{'id':_0x15c83b},'attributes':[_0xd3e8('0xc')]}});};exports[_0xd3e8('0x19')]=function(_0x555119){return request(_0xd3e8('0x1a'),{'options':{'where':{'id':_0x555119},'attributes':[_0xd3e8('0x1b')]}});};exports[_0xd3e8('0x1c')]=function(_0x3c00aa){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x3c00aa},'include':[{'model':_0xd3e8('0x1d'),'as':_0xd3e8('0x1e')}]}});};exports[_0xd3e8('0x1f')]=function(_0x554594){return request(_0xd3e8('0x20'),{'options':{'where':{'id':_0x554594},'attributes':['id',_0xd3e8('0xc')]}});};exports[_0xd3e8('0x21')]=function(_0xc6b1b0){return request(_0xd3e8('0x22'),{'body':_0xc6b1b0});};exports[_0xd3e8('0x23')]=function(_0x335ed9){return request('CreateSquareDetailsReport',{'body':_0x335ed9});};exports[_0xd3e8('0x24')]=function(_0x3f0fb5){return request('CreateSquareReport',{'body':_[_0xd3e8('0x25')](_0x3f0fb5,{'project_name':_0x3f0fb5['arg_1'],'prev_project_name':_0x3f0fb5['arg_2']||'','is_subproject':_0x3f0fb5['arg_2']?!![]:![],'leaveAt':moment()[_0xd3e8('0x26')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0xd3e8('0x27')]=function(_0x45df52){return request('CreateSquareRecording',{'body':_0x45df52});};exports[_0xd3e8('0x28')]=function(_0xbaffed){return request(_0xd3e8('0x29'),{'body':_0xbaffed});};exports['createCmContact']=function(_0x3755ee){return request(_0xd3e8('0x2a'),{'options':{'raw':![],'where':{'phone':_0x3755ee[_0xd3e8('0x2b')],'ListId':_0x3755ee[_0xd3e8('0x2c')]}}})[_0xd3e8('0x2d')](function(_0x1553d0){if(_0x1553d0){return _0x1553d0;}return request(_0xd3e8('0x2e'),{'body':_0x3755ee});});};exports['getPauseById']=function(_0x159d14){return request('ShowPause',{'options':{'where':{'id':_0x159d14},'attributes':[_0xd3e8('0xc')]}});};exports[_0xd3e8('0x2f')]=function(_0x4cf7e8,_0x431476){return request(_0xd3e8('0x30'),{'body':{'interface':_0x431476},'options':{'where':_0x4cf7e8}});};exports[_0xd3e8('0x31')]=function(_0x1674c8,_0x4981bd,_0x3d9ecb){return request(_0xd3e8('0x32'),{'body':{'type':_0x4981bd,'uniqueid':_0x3d9ecb},'options':{'where':_0x1674c8}});};exports['agentUnpause']=function(_0x34f67f){return request(_0xd3e8('0x33'),{'body':{},'options':{'where':_0x34f67f}});};exports[_0xd3e8('0x34')]=function(_0x3b5c2b){return request('LogoutUser',{'body':{},'options':{'where':_0x3b5c2b}});};
\ No newline at end of file
+var _0xa2a9=['createCmContact','ShowCmHopper','phone','then','CreateCmContact','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','UnpauseUser','agentLogout','LogoutUser','bluebird','moment','util','jayson/promise','client','http','request','error','result','catch','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','email','getSquareProjectById','getVoiceQueueById','name','getVariableById','ShowVariable','ShowSquareOdbc','getUserById','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','getIntervalById','ShowInterval','Interval','createSmsMessage','CreateSmsMessage','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareMessage'];(function(_0x172d3e,_0x2e06a4){var _0x3edc3b=function(_0x3ab712){while(--_0x3ab712){_0x172d3e['push'](_0x172d3e['shift']());}};_0x3edc3b(++_0x2e06a4);}(_0xa2a9,0xbb));var _0x9a2a=function(_0xc6b449,_0x2f577b){_0xc6b449=_0xc6b449-0x0;var _0x2cc49e=_0xa2a9[_0xc6b449];return _0x2cc49e;};'use strict';var BPromise=require(_0x9a2a('0x0'));var moment=require(_0x9a2a('0x1'));var _=require('lodash');var util=require(_0x9a2a('0x2'));var jayson=require(_0x9a2a('0x3'));var client=jayson[_0x9a2a('0x4')][_0x9a2a('0x5')]({'port':0x2329});function request(_0x550a34,_0x153e6a){return new BPromise(function(_0x1fd59b,_0x4cda8f){return client[_0x9a2a('0x6')](_0x550a34,_0x153e6a)['then'](function(_0x2a26da){if(_0x2a26da[_0x9a2a('0x7')]){return _0x4cda8f(_0x2a26da[_0x9a2a('0x7')]['message']);}else{return _0x1fd59b(_0x2a26da[_0x9a2a('0x8')]);}})[_0x9a2a('0x9')](function(_0xa6aa99){return _0x4cda8f(_0xa6aa99);});});}exports[_0x9a2a('0xa')]=function(_0x134d07){return request(_0x9a2a('0xb'),{'options':{'raw':![],'where':{'name':_0x134d07},'attributes':[_0x9a2a('0xc')]}});};exports[_0x9a2a('0xd')]=function(_0x18f5eb){return request(_0x9a2a('0xe'),{'options':{'raw':![],'where':{'id':_0x18f5eb},'include':[{'model':_0x9a2a('0xf'),'as':_0x9a2a('0x10')}],'attributes':['id','name',_0x9a2a('0x11')]}});};exports[_0x9a2a('0x12')]=function(_0x336219){return request('ShowSquareProject',{'options':{'where':{'id':_0x336219},'attributes':['name']}});};exports[_0x9a2a('0x13')]=function(_0x11e984){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x11e984},'attributes':[_0x9a2a('0x14')]}});};exports[_0x9a2a('0x15')]=function(_0x3b3f33){return request(_0x9a2a('0x16'),{'options':{'where':{'id':_0x3b3f33},'attributes':[_0x9a2a('0x14')]}});};exports['getSquareOdbcById']=function(_0x3e42f6){return request(_0x9a2a('0x17'),{'options':{'where':{'id':_0x3e42f6},'attributes':['dsn']}});};exports[_0x9a2a('0x18')]=function(_0x5c0994){return request(_0x9a2a('0x19'),{'options':{'where':{'id':_0x5c0994},'attributes':[_0x9a2a('0x14')]}});};exports[_0x9a2a('0x1a')]=function(_0x507af5){return request(_0x9a2a('0x1b'),{'options':{'where':{'id':_0x507af5},'attributes':[_0x9a2a('0x14')]}});};exports[_0x9a2a('0x1c')]=function(_0x5bb01f){return request(_0x9a2a('0x1d'),{'options':{'where':{'id':_0x5bb01f},'attributes':['save_name']}});};exports[_0x9a2a('0x1e')]=function(_0x1d2132){return request(_0x9a2a('0x1f'),{'options':{'raw':![],'where':{'id':_0x1d2132},'include':[{'model':_0x9a2a('0x20'),'as':'Intervals'}]}});};exports['getSmsAccountById']=function(_0xe6ff1c){return request('ShowSmsAccount',{'options':{'where':{'id':_0xe6ff1c},'attributes':['id',_0x9a2a('0x14')]}});};exports[_0x9a2a('0x21')]=function(_0x5bf795){return request(_0x9a2a('0x22'),{'body':_0x5bf795});};exports['createSquareDetailsReport']=function(_0x5831ad){return request(_0x9a2a('0x23'),{'body':_0x5831ad});};exports[_0x9a2a('0x24')]=function(_0x1a3df2){return request(_0x9a2a('0x25'),{'body':_[_0x9a2a('0x26')](_0x1a3df2,{'project_name':_0x1a3df2[_0x9a2a('0x27')],'prev_project_name':_0x1a3df2['arg_2']||'','is_subproject':_0x1a3df2[_0x9a2a('0x28')]?!![]:![],'leaveAt':moment()[_0x9a2a('0x29')](_0x9a2a('0x2a'))})});};exports[_0x9a2a('0x2b')]=function(_0x4a7d05){return request('CreateSquareRecording',{'body':_0x4a7d05});};exports['createSquareMessage']=function(_0x3b94b5){return request(_0x9a2a('0x2c'),{'body':_0x3b94b5});};exports[_0x9a2a('0x2d')]=function(_0x312830){return request(_0x9a2a('0x2e'),{'options':{'raw':![],'where':{'phone':_0x312830[_0x9a2a('0x2f')],'ListId':_0x312830['ListId']}}})[_0x9a2a('0x30')](function(_0x405d73){if(_0x405d73){return _0x405d73;}return request(_0x9a2a('0x31'),{'body':_0x312830});});};exports['getPauseById']=function(_0x583175){return request(_0x9a2a('0x32'),{'options':{'where':{'id':_0x583175},'attributes':[_0x9a2a('0x14')]}});};exports[_0x9a2a('0x33')]=function(_0x47d0f4,_0x4da8ce){return request(_0x9a2a('0x34'),{'body':{'interface':_0x4da8ce},'options':{'where':_0x47d0f4}});};exports[_0x9a2a('0x35')]=function(_0x4c33dc,_0x1fa12a,_0x27404b){return request(_0x9a2a('0x36'),{'body':{'type':_0x1fa12a,'uniqueid':_0x27404b},'options':{'where':_0x4c33dc}});};exports['agentUnpause']=function(_0x43e3ae){return request(_0x9a2a('0x37'),{'body':{},'options':{'where':_0x43e3ae}});};exports[_0x9a2a('0x38')]=function(_0x30f6c9){return request(_0x9a2a('0x39'),{'body':{},'options':{'where':_0x30f6c9}});};
\ No newline at end of file
index c92cf26..4ba21ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6144=['./polly','./lex','exports'];(function(_0x4540c5,_0x2d1c1a){var _0x2ee268=function(_0x2b1661){while(--_0x2b1661){_0x4540c5['push'](_0x4540c5['shift']());}};_0x2ee268(++_0x2d1c1a);}(_0x6144,0x99));var _0x4614=function(_0x56d152,_0x70fee2){_0x56d152=_0x56d152-0x0;var _0x39a1b8=_0x6144[_0x56d152];return _0x39a1b8;};var polly=require(_0x4614('0x0'));var lex=require(_0x4614('0x1'));module[_0x4614('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x8d0a=['exports','./polly','./lex'];(function(_0x152678,_0x11e0ac){var _0x311a9=function(_0x4f5291){while(--_0x4f5291){_0x152678['push'](_0x152678['shift']());}};_0x311a9(++_0x11e0ac);}(_0x8d0a,0x172));var _0xa8d0=function(_0x279c2b,_0x86917d){_0x279c2b=_0x279c2b-0x0;var _0xfe3471=_0x8d0a[_0x279c2b];return _0xfe3471;};var polly=require(_0xa8d0('0x0'));var lex=require(_0xa8d0('0x1'));module[_0xa8d0('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index f7e3d56..29b8cf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c00=['./lib/api','exports'];(function(_0x4f7256,_0x181877){var _0x3a1058=function(_0x4bde88){while(--_0x4bde88){_0x4f7256['push'](_0x4f7256['shift']());}};_0x3a1058(++_0x181877);}(_0x5c00,0x17e));var _0x05c0=function(_0x2dc53c,_0x4a29ce){_0x2dc53c=_0x2dc53c-0x0;var _0x32ea88=_0x5c00[_0x2dc53c];return _0x32ea88;};'use strict';var lex=require(_0x05c0('0x0'));module[_0x05c0('0x1')]=function(_0x1c3b79,_0x4e54ec,_0x1e76da,_0x5859bc,_0x41c4b4,_0x25c3a9){return lex(_0x1c3b79,_0x4e54ec,_0x1e76da,_0x5859bc,_0x41c4b4,_0x25c3a9);};
\ No newline at end of file
+var _0x702d=['exports','./lib/api'];(function(_0x32fbe0,_0x5db116){var _0x1db2db=function(_0x484ad4){while(--_0x484ad4){_0x32fbe0['push'](_0x32fbe0['shift']());}};_0x1db2db(++_0x5db116);}(_0x702d,0x147));var _0xd702=function(_0x43ef27,_0x3f6bea){_0x43ef27=_0x43ef27-0x0;var _0x1766e2=_0x702d[_0x43ef27];return _0x1766e2;};'use strict';var lex=require(_0xd702('0x0'));module[_0xd702('0x1')]=function(_0x37c2c5,_0x33e7c5,_0x37ed5c,_0x5c2b9e,_0x20c11a,_0xebbd7c){return lex(_0x37c2c5,_0x33e7c5,_0x37ed5c,_0x5c2b9e,_0x20c11a,_0xebbd7c);};
\ No newline at end of file
index f82befb..30e3e3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x20ac05,_0x39f25c){var _0xcc9683=function(_0x19f423){while(--_0x19f423){_0x20ac05['push'](_0x20ac05['shift']());}};_0xcc9683(++_0x39f25c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'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(_0x405b17,_0x58a4c8){var _0x249642=function(_0x169578){while(--_0x169578){_0x405b17['push'](_0x405b17['shift']());}};_0x249642(++_0x58a4c8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'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 7dafccd..359ba29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf47b=['./lib/api','exports'];(function(_0x2493d5,_0x5e6fd9){var _0x2a0f23=function(_0x23b13c){while(--_0x23b13c){_0x2493d5['push'](_0x2493d5['shift']());}};_0x2a0f23(++_0x5e6fd9);}(_0xf47b,0xb6));var _0xbf47=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xf47b[_0x2b4411];return _0x8e41ef;};'use strict';var polly=require(_0xbf47('0x0'));module[_0xbf47('0x1')]=function(_0x286116,_0x4273c9,_0x364fb8,_0x59f2df,_0x3abb69,_0x5bebd8,_0x5adf84){return polly(_0x286116,_0x4273c9,_0x364fb8,_0x59f2df,_0x3abb69,_0x5bebd8,_0x5adf84);};
\ No newline at end of file
+var _0xef32=['./lib/api','exports'];(function(_0x5c961a,_0x549f69){var _0x19ca3c=function(_0x3ff954){while(--_0x3ff954){_0x5c961a['push'](_0x5c961a['shift']());}};_0x19ca3c(++_0x549f69);}(_0xef32,0x100));var _0x2ef3=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xef32[_0x618414];return _0x21c19a;};'use strict';var polly=require(_0x2ef3('0x0'));module[_0x2ef3('0x1')]=function(_0x2c3684,_0x50aae9,_0x3460ab,_0x4400d4,_0x599c9a,_0x36f331,_0x51abf8){return polly(_0x2c3684,_0x50aae9,_0x3460ab,_0x4400d4,_0x599c9a,_0x36f331,_0x51abf8);};
\ No newline at end of file
index 85ec35f..6ea1457 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0bb=['bluebird','synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','Polly','mp3'];(function(_0x2c570e,_0x54193d){var _0x7d031=function(_0x50f4b9){while(--_0x50f4b9){_0x2c570e['push'](_0x2c570e['shift']());}};_0x7d031(++_0x54193d);}(_0xb0bb,0x6c));var _0xbb0b=function(_0x1cacb1,_0xeb4784){_0x1cacb1=_0x1cacb1-0x0;var _0x25ee52=_0xb0bb[_0x1cacb1];return _0x25ee52;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0xbb0b('0x0'));var rs=require('randomstring');var AWS=require('aws-sdk');function pollyResult(_0x29e576,_0x180d14,_0x36398c){return new BPromise(function(_0x4af0ff,_0x4db3ea){_0x29e576[_0xbb0b('0x1')](_0x180d14,function(_0x1905a8,_0x4e0a79){if(_0x1905a8){_0x4db3ea(_0x1905a8);}else if(_0x4e0a79){if(_0x4e0a79[_0xbb0b('0x2')]instanceof Buffer){fs['writeFile'](_0x36398c,_0x4e0a79['AudioStream'],function(_0x1ca9f3){if(_0x1ca9f3){_0x4db3ea(_0x1ca9f3);}else{_0x4af0ff();}});}else{_0x4db3ea(new Error(_0xbb0b('0x3')));}}else{_0x4db3ea(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module['exports']=function(_0x349f25,_0x13ea9a,_0x293996,_0x1587f6,_0x520f3c,_0x5e8dfe,_0x4c1623){var _0xc535f1=new AWS[(_0xbb0b('0x4'))]({'accessKeyId':_0x349f25,'secretAccessKey':_0x13ea9a,'region':_0x293996});var _0x5f4ec6={'Text':_0x520f3c,'TextType':_0x5e8dfe||'text','OutputFormat':_0xbb0b('0x5'),'VoiceId':_0x1587f6};return pollyResult(_0xc535f1,_0x5f4ec6,_0x4c1623);};
\ No newline at end of file
+var _0x0f80=['mp3','path','randomstring','synthesizeSpeech','AudioStream','writeFile','No\x20data\x20response\x20from\x20aws\x20Polly!','Polly','text'];(function(_0x56a0ca,_0x3b4cc2){var _0x500af5=function(_0x1974f5){while(--_0x1974f5){_0x56a0ca['push'](_0x56a0ca['shift']());}};_0x500af5(++_0x3b4cc2);}(_0x0f80,0xbe));var _0x00f8=function(_0x4e9ff2,_0x469ad2){_0x4e9ff2=_0x4e9ff2-0x0;var _0x9d2a2d=_0x0f80[_0x4e9ff2];return _0x9d2a2d;};'use strict';var fs=require('fs');var path=require(_0x00f8('0x0'));var BPromise=require('bluebird');var rs=require(_0x00f8('0x1'));var AWS=require('aws-sdk');function pollyResult(_0x43c7b7,_0x16e7dc,_0x5484af){return new BPromise(function(_0x40f155,_0x5bae2d){_0x43c7b7[_0x00f8('0x2')](_0x16e7dc,function(_0x19ec07,_0x331d0a){if(_0x19ec07){_0x5bae2d(_0x19ec07);}else if(_0x331d0a){if(_0x331d0a[_0x00f8('0x3')]instanceof Buffer){fs[_0x00f8('0x4')](_0x5484af,_0x331d0a['AudioStream'],function(_0x812adc){if(_0x812adc){_0x5bae2d(_0x812adc);}else{_0x40f155();}});}else{_0x5bae2d(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x5bae2d(new Error(_0x00f8('0x5')));}});});}module['exports']=function(_0xe97335,_0x3c5416,_0x5b1f20,_0x536f2f,_0x1d0fe4,_0x6db3b5,_0x28c6b2){var _0x4695ac=new AWS[(_0x00f8('0x6'))]({'accessKeyId':_0xe97335,'secretAccessKey':_0x3c5416,'region':_0x5b1f20});var _0x4739cc={'Text':_0x1d0fe4,'TextType':_0x6db3b5||_0x00f8('0x7'),'OutputFormat':_0x00f8('0x8'),'VoiceId':_0x536f2f};return pollyResult(_0x4695ac,_0x4739cc,_0x28c6b2);};
\ No newline at end of file
index 37adc3f..611ab50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cec=['./lib/api'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x0cec,0x77));var _0xc0ce=function(_0x27e8e8,_0x16f16d){_0x27e8e8=_0x27e8e8-0x0;var _0x31a6a0=_0x0cec[_0x27e8e8];return _0x31a6a0;};'use strict';var asr=require(_0xc0ce('0x0'));module['exports']=function(_0x5d2342,_0x570783,_0x3775c5,_0x4925ab){return asr(_0x5d2342,_0x570783,_0x3775c5);};
\ No newline at end of file
+var _0xe934=['exports'];(function(_0x2ba58e,_0xce70df){var _0x42c5f9=function(_0x167bb9){while(--_0x167bb9){_0x2ba58e['push'](_0x2ba58e['shift']());}};_0x42c5f9(++_0xce70df);}(_0xe934,0x13d));var _0x4e93=function(_0x70cd0c,_0x385194){_0x70cd0c=_0x70cd0c-0x0;var _0x2effd5=_0xe934[_0x70cd0c];return _0x2effd5;};'use strict';var asr=require('./lib/api');module[_0x4e93('0x0')]=function(_0x353671,_0x2a7106,_0x38dc5a,_0x111f7c){return asr(_0x353671,_0x2a7106,_0x38dc5a);};
\ No newline at end of file
index b233ec1..68231aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae79=['readFileSync','toString','/v1/speech:recognize?key=','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string'];(function(_0x38854e,_0x23cbc9){var _0x3f8415=function(_0x4e493e){while(--_0x4e493e){_0x38854e['push'](_0x38854e['shift']());}};_0x3f8415(++_0x23cbc9);}(_0xae79,0x1d3));var _0x9ae7=function(_0x318269,_0x3ca8e7){_0x318269=_0x318269-0x0;var _0x2665fe=_0xae79[_0x318269];return _0x2665fe;};'use strict';var url=require(_0x9ae7('0x0'));var BPromise=require(_0x9ae7('0x1'));var fs=require('fs');var host=_0x9ae7('0x2');module[_0x9ae7('0x3')]=function(_0x1f75bc,_0x2cc556,_0x26b6a7){return new BPromise(function(_0x43f4d9,_0x988f5e){var _0x27817e;if(typeof _0x1f75bc!==_0x9ae7('0x4')||_0x1f75bc[_0x9ae7('0x5')]===0x0){return _0x988f5e(_0x9ae7('0x6'));}if(typeof _0x2cc556!==_0x9ae7('0x4')||_0x2cc556[_0x9ae7('0x5')]===0x0){return _0x988f5e('key\x20should\x20be\x20a\x20string');}if(typeof _0x26b6a7!==_0x9ae7('0x7')&&(typeof _0x26b6a7!==_0x9ae7('0x4')||_0x26b6a7[_0x9ae7('0x5')]===0x0)){return _0x988f5e(_0x9ae7('0x8'));}try{_0x27817e=fs[_0x9ae7('0x9')](_0x1f75bc)[_0x9ae7('0xa')]('base64');}catch(_0x410529){return _0x988f5e(_0x410529);}return _0x43f4d9({'method':'POST','uri':host+_0x9ae7('0xb')+_0x2cc556,'body':{'config':{'encoding':_0x9ae7('0xc'),'sampleRateHertz':_0x9ae7('0xd'),'languageCode':_0x26b6a7},'audio':{'content':_0x27817e}},'json':!![]});});};
\ No newline at end of file
+var _0x1e69=['POST','/v1/speech:recognize?key=','8000','bluebird','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','base64'];(function(_0x509e80,_0x1e2682){var _0x3e3a5f=function(_0x3e46a7){while(--_0x3e46a7){_0x509e80['push'](_0x509e80['shift']());}};_0x3e3a5f(++_0x1e2682);}(_0x1e69,0x85));var _0x91e6=function(_0x2e4ee7,_0x4bdc11){_0x2e4ee7=_0x2e4ee7-0x0;var _0x49e2e8=_0x1e69[_0x2e4ee7];return _0x49e2e8;};'use strict';var url=require('url');var BPromise=require(_0x91e6('0x0'));var fs=require('fs');var host=_0x91e6('0x1');module[_0x91e6('0x2')]=function(_0x3a523e,_0x4f5881,_0x537c0e){return new BPromise(function(_0x192f10,_0x351c1d){var _0x2b53b6;if(typeof _0x3a523e!==_0x91e6('0x3')||_0x3a523e[_0x91e6('0x4')]===0x0){return _0x351c1d(_0x91e6('0x5'));}if(typeof _0x4f5881!==_0x91e6('0x3')||_0x4f5881[_0x91e6('0x4')]===0x0){return _0x351c1d(_0x91e6('0x6'));}if(typeof _0x537c0e!==_0x91e6('0x7')&&(typeof _0x537c0e!==_0x91e6('0x3')||_0x537c0e[_0x91e6('0x4')]===0x0)){return _0x351c1d(_0x91e6('0x8'));}try{_0x2b53b6=fs['readFileSync'](_0x3a523e)['toString'](_0x91e6('0x9'));}catch(_0x260c4d){return _0x351c1d(_0x260c4d);}return _0x192f10({'method':_0x91e6('0xa'),'uri':host+_0x91e6('0xb')+_0x4f5881,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':_0x91e6('0xc'),'languageCode':_0x537c0e},'audio':{'content':_0x2b53b6}},'json':!![]});});};
\ No newline at end of file
index 9046e08..8e01ae4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe829=['exports'];(function(_0x3934d5,_0x490c81){var _0x41165a=function(_0x514ad1){while(--_0x514ad1){_0x3934d5['push'](_0x3934d5['shift']());}};_0x41165a(++_0x490c81);}(_0xe829,0x1ac));var _0x9e82=function(_0xfb3b3,_0x10db7a){_0xfb3b3=_0xfb3b3-0x0;var _0x36cae7=_0xe829[_0xfb3b3];return _0x36cae7;};var asr=require('./asr');module[_0x9e82('0x0')]={'asr':asr};
\ No newline at end of file
+var _0x6da8=['exports'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x6da8,0x173));var _0x86da=function(_0x413fbc,_0x2b8db1){_0x413fbc=_0x413fbc-0x0;var _0xec5e11=_0x6da8[_0x413fbc];return _0xec5e11;};var asr=require('./asr');module[_0x86da('0x0')]={'asr':asr};
\ No newline at end of file
index 2968103..e12f544 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x303c=['diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','name','displayName','intent','isFallback','languageCode','responseId','intentDetectionConfidence','awsPolly','polly','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','apiai-promise','bluebird','dialogflow','http','https','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./google','./sestek','./tilde','../../../config/logger','agi','protocol','https:','WHAT_EVER','get','statusCode','error','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','finish','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','host','data','transcode','wav','error\x20convert','start','resolve','tmp','generate','.wav','base64','then','chmodSync','777','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','MP3','text:synthesize','POST','from','audioContent','writeFile','split','googleTTS','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','stringify','null','generic','slice','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','writeFileSync','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20confidence','catch','[%s]\x20%s:%s','message','googleDialogflow','textRequest','source','resolvedQuery','result','action','actionIncomplete','fulfillment','speech','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult'];(function(_0x146dd7,_0x4d877d){var _0x2af0bb=function(_0x2327bc){while(--_0x2327bc){_0x146dd7['push'](_0x146dd7['shift']());}};_0x2af0bb(++_0x4d877d);}(_0x303c,0x1cb));var _0xc303=function(_0x3747ae,_0x408e61){_0x3747ae=_0x3747ae-0x0;var _0x339035=_0x303c[_0x3747ae];return _0x339035;};'use strict';var apiai=require(_0xc303('0x0'));var BPromise=require(_0xc303('0x1'));var dialogflow=require(_0xc303('0x2'));var fs=require('fs');var http=require(_0xc303('0x3'));var https=require(_0xc303('0x4'));var md5=require('md5');var path=require(_0xc303('0x5'));var querystring=require(_0xc303('0x6'));var rp=require(_0xc303('0x7'));var rs=require(_0xc303('0x8'));var sox=require(_0xc303('0x9'));var tts=require(_0xc303('0xa'));var urlParse=require(_0xc303('0xb'))[_0xc303('0xc')];var util=require(_0xc303('0xd'));var aws=require('./aws');var google=require(_0xc303('0xe'));var sestek=require(_0xc303('0xf'));var tilde=require(_0xc303('0x10'));var logger=require(_0xc303('0x11'))(_0xc303('0x12'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x3c525b,_0x140878){return new BPromise(function(_0x5f0387,_0x2bec91){var _0x4040d7=urlParse(_0x3c525b);var _0x566b98=_0x4040d7[_0xc303('0x13')]===_0xc303('0x14')?https:http;var _0xe2b389={'host':_0x4040d7['host'],'path':_0x4040d7[_0xc303('0x5')],'headers':{'user-agent':_0xc303('0x15')}};_0x566b98[_0xc303('0x16')](_0xe2b389,function(_0x3bb6a4){if(_0x3bb6a4[_0xc303('0x17')]!==0xc8){logger[_0xc303('0x18')](_0xc303('0x19')+_0x3c525b+'\x20failed,\x20status\x20code\x20=\x20'+_0x3bb6a4['statusCode']+'\x20('+_0x3bb6a4[_0xc303('0x1a')]+')');_0x2bec91(new Error(_0xc303('0x19')+_0x3c525b+_0xc303('0x1b')+_0x3bb6a4[_0xc303('0x17')]+'\x20('+_0x3bb6a4[_0xc303('0x1a')]+')'));return;}var _0x58e0df=fs['createWriteStream'](_0x140878);_0x58e0df['on'](_0xc303('0x1c'),function(){logger[_0xc303('0x1d')](_0xc303('0x1e'));_0x58e0df[_0xc303('0x1f')](_0x5f0387);});_0x58e0df['on'](_0xc303('0x18'),function(_0x39a915){fs[_0xc303('0x20')](_0x140878);logger[_0xc303('0x18')](_0xc303('0x21'),_0x39a915);_0x2bec91(_0x39a915);});_0x3bb6a4[_0xc303('0x22')](_0x58e0df);})['on']('error',function(_0x321602){logger[_0xc303('0x18')](_0x321602);_0x2bec91(_0x321602);})[_0xc303('0x23')]();});}function uploadFile(_0x3a47f5){return new BPromise(function(_0x32d1df,_0x1eede6){var _0x15dc8d=urlParse(_0x3a47f5);var _0x2769d7=_0x15dc8d[_0xc303('0x13')]==='https:'?https:http;var _0x129cee={'host':_0x15dc8d[_0xc303('0x24')],'path':_0x15dc8d['path'],'headers':{'user-agent':_0xc303('0x15')}};_0x2769d7[_0xc303('0x16')](_0x129cee,function(_0x4872da){if(_0x4872da[_0xc303('0x17')]!==0xc8){_0x1eede6(new Error('request\x20to\x20'+_0x3a47f5+_0xc303('0x1b')+_0x4872da['statusCode']+'\x20('+_0x4872da['statusMessage']+')'));return;}var _0x93458a='';_0x4872da['on'](_0xc303('0x25'),function(_0xba3293){_0x93458a+=_0xba3293;});_0x4872da['on'](_0xc303('0x23'),function(){_0x32d1df(_0x93458a);});})['on']('error',function(_0x465da8){_0x1eede6(_0x465da8);})[_0xc303('0x23')]();});}function convertFile(_0x1d2802,_0x23ed55){return new BPromise(function(_0xd3c480,_0x3927ce){var _0x59655e=sox[_0xc303('0x26')](_0x1d2802,_0x23ed55,{'sampleRate':0x1f40,'format':_0xc303('0x27'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x59655e['on'](_0xc303('0x18'),function(_0x186c8e){logger[_0xc303('0x18')](_0xc303('0x28'),_0x186c8e);_0x3927ce(_0x186c8e);});_0x59655e['on'](_0xc303('0x23'),function(){logger['info']('finish\x20to\x20convert');_0xd3c480();});_0x59655e[_0xc303('0x29')]();});}function base64Decode(_0x323b0b,_0x5b96bb){var _0x727ad=path[_0xc303('0x2a')](__dirname,_0xc303('0x2b'),rs[_0xc303('0x2c')](0x4)+_0xc303('0x2d'));fs['writeFileSync'](_0x727ad,_0x323b0b,_0xc303('0x2e'));return convertFile(_0x727ad,_0x5b96bb)[_0xc303('0x2f')](function(){try{fs[_0xc303('0x20')](_0x727ad);fs[_0xc303('0x30')](_0x5b96bb,_0xc303('0x31'));}catch(_0x2f310f){logger[_0xc303('0x18')](_0x2f310f);}return _0x5b96bb['split']('.')[0x0];});}function base64Encode(_0x6da70c){var _0x420653=fs[_0xc303('0x32')](_0x6da70c);return new Buffer(_0x420653)[_0xc303('0x33')](_0xc303('0x2e'));}exports[_0xc303('0x34')]=function(_0x5f1b00,_0x44172e,_0x4b5c06,_0x9d7a2a,_0x1ab3ba,_0x3218d3){var _0x3a0bcb,_0x31c37b;var _0x3c49aa=_0xc303('0x35');var _0x468b03=_0xc303('0x36')+_0x5f1b00;var _0x3f3bd6={};if(_0x44172e==='ssml'){_0x3f3bd6[_0xc303('0x37')]={'ssml':_0x4b5c06};}else{_0x3f3bd6[_0xc303('0x37')]={'text':_0x4b5c06};};_0x3f3bd6[_0xc303('0x38')]={'languageCode':_0x9d7a2a,'ssmlGender':_0x1ab3ba};_0x3f3bd6[_0xc303('0x39')]={'audioEncoding':_0xc303('0x3a'),'sampleRateHertz':0x1f40};var _0x107e09={'url':_0x3c49aa+_0xc303('0x3b')+_0x468b03,'method':_0xc303('0x3c'),'json':!![],'body':_0x3f3bd6};return rp(_0x107e09)[_0xc303('0x2f')](function(_0x1c86d2){return new BPromise(function(_0x9df2ed,_0x5e0f12){_0x3a0bcb=path[_0xc303('0x2a')](__dirname,_0xc303('0x2b'),rs[_0xc303('0x2c')](0x4)+'.mp3');var _0x2b335f=Buffer[_0xc303('0x3d')](_0x1c86d2[_0xc303('0x3e')],_0xc303('0x2e'));return fs[_0xc303('0x3f')](_0x3a0bcb,_0x2b335f,function(_0x1b8d65){_0x5e0f12(_0x1b8d65);},function(_0x4d8207){fs['chmodSync'](_0x3a0bcb,_0xc303('0x31'));_0x9df2ed(_0x4d8207);});});})[_0xc303('0x2f')](function(_0x9b0d01){_0x31c37b=path['resolve'](__dirname,_0xc303('0x2b'),rs[_0xc303('0x2c')](0x4)+_0xc303('0x2d'));return convertFile(_0x3a0bcb,_0x31c37b);})[_0xc303('0x2f')](function(){try{fs[_0xc303('0x20')](_0x3a0bcb);fs[_0xc303('0x30')](_0x31c37b,_0xc303('0x31'));}catch(_0x272d15){logger[_0xc303('0x18')](_0x272d15);}logger[_0xc303('0x1d')]('googleCloudTTS\x20path',_0x31c37b[_0xc303('0x40')]('.')[0x0]);return _0x31c37b[_0xc303('0x40')]('.')[0x0];});};exports[_0xc303('0x41')]=function(_0xb1547f,_0x9a15c8){var _0x3f4e77='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x57cf8b,_0x44bca6;var _0x14fe47;var _0x5ef13c={'encoding':_0xc303('0x42'),'method':_0xc303('0x3c'),'timeout':0x2710,'url':_0x3f4e77,'headers':{'Content-Type':_0xc303('0x43')},'body':_0xc303('0x44')+encodeURIComponent(JSON['stringify']([[[_0xc303('0x45'),JSON[_0xc303('0x46')]([_0xb1547f,_0x9a15c8||'en',![],_0xc303('0x47')]),null,_0xc303('0x48')]]]))};return rp(_0x5ef13c)['then'](function(_0x58c3eb){try{_0x14fe47=eval(_0x58c3eb[_0xc303('0x49')](0x5))[0x0][0x2];}catch(_0x1725fa){throw new Error('parse\x20response\x20failed:\x0a'+_0x58c3eb['data']);}if(!_0x14fe47){if(_0xb1547f[_0xc303('0x4a')]>0xc8){throw new Error(_0xc303('0x4b'));}else{throw new Error(_0xc303('0x4c')+_0x9a15c8+_0xc303('0x4d'));}}try{_0x14fe47=eval(_0x14fe47)[0x0];}catch(_0x213cd9){throw new Error('parse\x20response\x20failed:\x0a'+res[_0xc303('0x25')]);}const _0x51e06a=_0x14fe47;_0x57cf8b=path[_0xc303('0x2a')](__dirname,_0xc303('0x2b'),rs[_0xc303('0x2c')](0x4)+_0xc303('0x4e'));fs[_0xc303('0x4f')](_0x57cf8b,_0x14fe47,{'encoding':'base64'});_0x44bca6=path[_0xc303('0x2a')](__dirname,_0xc303('0x2b'),rs['generate'](0x4)+'.wav');return convertFile(_0x57cf8b,_0x44bca6);})[_0xc303('0x2f')](function(){try{fs[_0xc303('0x20')](_0x57cf8b);fs['chmodSync'](_0x44bca6,'777');}catch(_0x3af643){logger[_0xc303('0x18')](_0x3af643);}logger[_0xc303('0x1d')](_0xc303('0x50'),_0x44bca6[_0xc303('0x40')]('.')[0x0]);return _0x44bca6[_0xc303('0x40')]('.')[0x0];});};exports[_0xc303('0x51')]=function(_0x5011ec,_0x51d461,_0x14603e){return google[_0xc303('0x52')](_0x5011ec,_0x51d461,_0x14603e)[_0xc303('0x2f')](function(_0x35bcf4){logger[_0xc303('0x1d')](_0x35bcf4[_0xc303('0x53')]);return rp(_0x35bcf4);})[_0xc303('0x2f')](function(_0x4292fc){var _0x217646='';var _0x1fc1c1=0x0;try{fs[_0xc303('0x20')](_0x5011ec);}catch(_0x1d2c6b){logger[_0xc303('0x18')](_0x1d2c6b);}if(_0x4292fc&&_0x4292fc[_0xc303('0x54')]){_0x217646=_0x4292fc['results'][_0xc303('0x55')](function(_0xe22b1f){return _0xe22b1f&&_0xe22b1f[_0xc303('0x56')][0x0]&&_0xe22b1f[_0xc303('0x56')][0x0][_0xc303('0x57')]?_0xe22b1f[_0xc303('0x56')][0x0]['transcript']:'';})['join']('\x0a');_0x1fc1c1=_0x4292fc['results'][_0xc303('0x55')](function(_0x4e0de7){return _0x4e0de7&&_0x4e0de7[_0xc303('0x56')][0x0]&&_0x4e0de7[_0xc303('0x56')][0x0][_0xc303('0x58')]?_0x4e0de7[_0xc303('0x56')][0x0]['confidence']:0x0;})[_0xc303('0x59')]('\x0a');}logger[_0xc303('0x1d')]('googleASR\x20transcription',_0x217646);logger['info'](_0xc303('0x5a'),_0x1fc1c1);return{'transcript':_0x217646,'confidence':_0x1fc1c1};})[_0xc303('0x5b')](function(_0x11f9a5){logger[_0xc303('0x18')](_0xc303('0x5c'),_0x11f9a5[_0xc303('0x17')],_0x11f9a5['name'],_0x11f9a5[_0xc303('0x5d')]);});};exports[_0xc303('0x5e')]=function(_0x539a72,_0x4af50c,_0x4e90c0,_0xae764d){var _0xa660d9=apiai(_0x4af50c,{'language':_0xae764d||'en'});return _0xa660d9[_0xc303('0x5f')](_0x4e90c0,{'sessionId':md5(_0x539a72)})['then'](function(_0x3993a0){logger[_0xc303('0x1d')](JSON[_0xc303('0x46')](_0x3993a0));return{'source':_0x3993a0['result'][_0xc303('0x60')],'resolvedQuery':_0x3993a0['result'][_0xc303('0x61')],'action':_0x3993a0[_0xc303('0x62')][_0xc303('0x63')],'actionIncomplete':_0x3993a0[_0xc303('0x62')][_0xc303('0x64')],'speech':_0x3993a0['result'][_0xc303('0x65')][_0xc303('0x66')],'score':_0x3993a0['result']['score'],'statusCode':_0x3993a0['status']['code'],'endConversation':_0x3993a0[_0xc303('0x62')][_0xc303('0x67')][_0xc303('0x68')]||![],'isFallbackIntent':_0x3993a0['result'][_0xc303('0x67')][_0xc303('0x69')]};});};exports[_0xc303('0x6a')]=function(_0x2371f3,_0x2c5e91,_0x2dde59,_0x1ef511,_0x2501c1,_0x1ac891){var _0x4628bb=_0x1ef511[_0xc303('0x6b')](/\\n/g,'\x0a');var _0x1b7c65={'credentials':{'private_key':_0x4628bb,'client_email':_0x2dde59}};var _0x32b9db=new dialogflow[(_0xc303('0x6c'))](_0x1b7c65);var _0x54c2c7=_0x32b9db[_0xc303('0x6d')](_0x2c5e91,md5(_0x2371f3));var _0x4b596a={'session':_0x54c2c7,'queryInput':{'text':{'text':_0x2501c1,'languageCode':_0x1ac891}}};return _0x32b9db[_0xc303('0x6e')](_0x4b596a)[_0xc303('0x2f')](function(_0x51541b){if(_0x51541b&&_0x51541b[_0xc303('0x4a')]){logger[_0xc303('0x1d')](_0xc303('0x6f'),JSON['stringify'](_0x51541b));var _0x14a78d=_0x51541b[0x0];if(_0x14a78d){var _0x565dbd={'action':_0x14a78d[_0xc303('0x70')][_0xc303('0x63')],'allRequiredParamsPresent':_0x14a78d[_0xc303('0x70')]['allRequiredParamsPresent'],'endConversation':_0x14a78d['queryResult'][_0xc303('0x71')]&&_0x14a78d[_0xc303('0x70')][_0xc303('0x71')][_0xc303('0x72')]?_0x14a78d[_0xc303('0x70')][_0xc303('0x71')][_0xc303('0x72')][_0xc303('0x73')][_0xc303('0x74')]:![],'fulfillmentText':_0x14a78d[_0xc303('0x70')][_0xc303('0x75')],'intentName':_0x14a78d[_0xc303('0x70')]['intent'][_0xc303('0x76')],'intentDisplayName':_0x14a78d[_0xc303('0x70')]['intent'][_0xc303('0x77')],'isFallbackIntent':_0x14a78d[_0xc303('0x70')][_0xc303('0x78')][_0xc303('0x79')],'languageCode':_0x14a78d[_0xc303('0x70')][_0xc303('0x7a')],'queryText':_0x14a78d[_0xc303('0x70')]['queryText'],'responseId':_0x14a78d[_0xc303('0x7b')],'score':_0x14a78d[_0xc303('0x70')][_0xc303('0x7c')],'speech':_0x14a78d['queryResult'][_0xc303('0x75')],'providerResponse':JSON[_0xc303('0x46')](_0x51541b)};return _0x565dbd;}}});};exports['tildeASR']=function(_0x22c3e8,_0x43bbde,_0xa11c51,_0x3b3a49){return tilde[_0xc303('0x52')](_0x22c3e8,_0x43bbde,_0xa11c51,_0x3b3a49)[_0xc303('0x2f')](function(_0x7b58fd){try{fs[_0xc303('0x20')](_0x22c3e8);}catch(_0x5690e2){logger[_0xc303('0x18')](_0x5690e2);}logger[_0xc303('0x1d')]('Tilde\x20ASR\x20transcription',_0x7b58fd[_0xc303('0x57')]);logger['info']('Tilde\x20ASR\x20confidence',_0x7b58fd['confidence']);return _0x7b58fd;});};exports[_0xc303('0x7d')]=function(_0x238029,_0x46da16,_0x151b5a,_0x41171a,_0x225c99,_0x511616){var _0x266b05=path[_0xc303('0x2a')](__dirname,_0xc303('0x2b'),rs[_0xc303('0x2c')](0x4)+_0xc303('0x4e'));var _0x5bb849;return aws[_0xc303('0x7e')](_0x238029,_0x46da16,_0x151b5a,_0x41171a,_0x225c99,_0x511616,_0x266b05)['then'](function(){_0x5bb849=path[_0xc303('0x2a')](__dirname,_0xc303('0x2b'),rs[_0xc303('0x2c')](0x4)+_0xc303('0x2d'));return convertFile(_0x266b05,_0x5bb849);})[_0xc303('0x2f')](function(){try{fs[_0xc303('0x20')](_0x266b05);fs['chmodSync'](_0x5bb849,_0xc303('0x31'));}catch(_0x4c464a){logger['error'](_0x4c464a);}return _0x5bb849['split']('.')[0x0];});};exports[_0xc303('0x7f')]=function(_0x1066ea,_0xbd1153,_0x405dd0,_0x62cfba,_0x4632d6,_0x4aa113){return aws[_0xc303('0x80')](_0x1066ea,_0xbd1153,_0x405dd0,_0x62cfba,_0x4632d6,_0x4aa113)['then'](function(_0x2586b6){logger[_0xc303('0x1d')](JSON['stringify'](_0x2586b6));return _0x2586b6;});};exports[_0xc303('0x81')]=function(_0x5f408a,_0x2c46a8,_0x2f25d5,_0x2d13b5){var _0x4c3b74=util['format'](_0xc303('0x82'),ISPEECH_API,_0x5f408a,encodeURIComponent(_0x2c46a8),_0x2f25d5,_0x2d13b5);var _0x9b336b=path['resolve'](__dirname,_0xc303('0x2b'),rs[_0xc303('0x2c')](0x4)+_0xc303('0x4e'));var _0x2df232;return downloadFile(_0x4c3b74,_0x9b336b)[_0xc303('0x2f')](function(){_0x2df232=path[_0xc303('0x2a')](__dirname,_0xc303('0x2b'),rs[_0xc303('0x2c')](0x4)+'.wav');return convertFile(_0x9b336b,_0x2df232);})[_0xc303('0x2f')](function(){try{fs[_0xc303('0x20')](_0x9b336b);fs['chmodSync'](_0x2df232,_0xc303('0x31'));}catch(_0x5ab2fe){logger[_0xc303('0x18')](_0x5ab2fe);}return _0x2df232[_0xc303('0x40')]('.')[0x0];});};exports['ispeechASR']=function(_0x4293d2,_0x5262bb,_0x503198,_0x31f5ea){var _0x193b3f=util[_0xc303('0x83')](_0xc303('0x84'),ISPEECH_API,_0x5262bb,_0x503198,base64Encode(_0x4293d2),_0x31f5ea?util[_0xc303('0x83')](_0xc303('0x85'),encodeURIComponent(_0x31f5ea)):'freeform=3');return uploadFile(_0x193b3f)[_0xc303('0x2f')](function(_0x321916){return querystring['parse'](_0x321916);});};exports[_0xc303('0x86')]=function(_0x366037,_0x25d6ab){return sestek[_0xc303('0x87')](_0x366037,_0x25d6ab)[_0xc303('0x2f')](function(_0x17b00d){logger[_0xc303('0x1d')](JSON[_0xc303('0x46')](_0x17b00d));var _0x1ee4e8={'speech':_0x17b00d[_0xc303('0x88')],'action':_0x17b00d[_0xc303('0x89')]?_0x17b00d[_0xc303('0x89')][_0xc303('0x8a')]:undefined,'actiondata':_0x17b00d[_0xc303('0x89')]?_0x17b00d[_0xc303('0x89')][_0xc303('0x8b')]:undefined};if(_0x17b00d['channelData']&&_0x17b00d['channelData'][_0xc303('0x8c')]){return base64Decode(_0x17b00d[_0xc303('0x89')][_0xc303('0x8c')][_0xc303('0x8d')],path[_0xc303('0x2a')](__dirname,_0xc303('0x2b'),rs[_0xc303('0x2c')](0x4)+_0xc303('0x2d')))['then'](function(_0x5b883a){_0x1ee4e8[_0xc303('0x8e')]=_0x5b883a;return _0x1ee4e8;});}return _0x1ee4e8;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0x6acd=['ispeechTTS','format','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','text','channelData','CustomAction','AudioFromTts','Data','apiai-promise','bluebird','http','https','md5','querystring','request-promise','sox','parse','util','./aws','./google','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','path','WHAT_EVER','get','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','finish','info','finish\x20download\x20file','close','unlink','end','host','data','transcode','error\x20convert','start','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','.mp3','writeFile','resolve','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','stringify','generic','slice','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','goggleTTS\x20path','googleASR','asr','uri','results','alternatives','transcript','map','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','message','googleDialogflow','textRequest','source','resolvedQuery','action','actionIncomplete','fulfillment','result','score','code','metadata','endConversation','googleDialogflowV2','replace','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','end_conversation','fulfillmentText','name','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','awsLex','lex'];(function(_0x409353,_0xe9f04d){var _0x4f4b59=function(_0x64b587){while(--_0x64b587){_0x409353['push'](_0x409353['shift']());}};_0x4f4b59(++_0xe9f04d);}(_0x6acd,0x122));var _0xd6ac=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x6acd[_0x59ee6f];return _0x4c0979;};'use strict';var apiai=require(_0xd6ac('0x0'));var BPromise=require(_0xd6ac('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0xd6ac('0x2'));var https=require(_0xd6ac('0x3'));var md5=require(_0xd6ac('0x4'));var path=require('path');var querystring=require(_0xd6ac('0x5'));var rp=require(_0xd6ac('0x6'));var rs=require('randomstring');var sox=require(_0xd6ac('0x7'));var tts=require('google-tts-api');var urlParse=require('url')[_0xd6ac('0x8')];var util=require(_0xd6ac('0x9'));var aws=require(_0xd6ac('0xa'));var google=require(_0xd6ac('0xb'));var sestek=require('./sestek');var tilde=require(_0xd6ac('0xc'));var logger=require(_0xd6ac('0xd'))(_0xd6ac('0xe'));var ISPEECH_API=_0xd6ac('0xf');function downloadFile(_0x233bca,_0xb04e10){return new BPromise(function(_0x407ae3,_0xb6541d){var _0x43a3b5=urlParse(_0x233bca);var _0x3f5094=_0x43a3b5[_0xd6ac('0x10')]===_0xd6ac('0x11')?https:http;var _0x33b35c={'host':_0x43a3b5['host'],'path':_0x43a3b5[_0xd6ac('0x12')],'headers':{'user-agent':_0xd6ac('0x13')}};_0x3f5094[_0xd6ac('0x14')](_0x33b35c,function(_0x2e2840){if(_0x2e2840['statusCode']!==0xc8){logger[_0xd6ac('0x15')](_0xd6ac('0x16')+_0x233bca+_0xd6ac('0x17')+_0x2e2840[_0xd6ac('0x18')]+'\x20('+_0x2e2840[_0xd6ac('0x19')]+')');_0xb6541d(new Error(_0xd6ac('0x16')+_0x233bca+_0xd6ac('0x17')+_0x2e2840[_0xd6ac('0x18')]+'\x20('+_0x2e2840[_0xd6ac('0x19')]+')'));return;}var _0x36167b=fs['createWriteStream'](_0xb04e10);_0x36167b['on'](_0xd6ac('0x1a'),function(){logger[_0xd6ac('0x1b')](_0xd6ac('0x1c'));_0x36167b[_0xd6ac('0x1d')](_0x407ae3);});_0x36167b['on'](_0xd6ac('0x15'),function(_0x2ddb41){fs[_0xd6ac('0x1e')](_0xb04e10);logger['error']('download\x20error',_0x2ddb41);_0xb6541d(_0x2ddb41);});_0x2e2840['pipe'](_0x36167b);})['on']('error',function(_0x591e39){logger[_0xd6ac('0x15')](_0x591e39);_0xb6541d(_0x591e39);})[_0xd6ac('0x1f')]();});}function uploadFile(_0x40eba9){return new BPromise(function(_0x441f52,_0x2bac4d){var _0x5ae34a=urlParse(_0x40eba9);var _0x349483=_0x5ae34a[_0xd6ac('0x10')]===_0xd6ac('0x11')?https:http;var _0xdeedb8={'host':_0x5ae34a[_0xd6ac('0x20')],'path':_0x5ae34a[_0xd6ac('0x12')],'headers':{'user-agent':_0xd6ac('0x13')}};_0x349483[_0xd6ac('0x14')](_0xdeedb8,function(_0x2be6f7){if(_0x2be6f7[_0xd6ac('0x18')]!==0xc8){_0x2bac4d(new Error(_0xd6ac('0x16')+_0x40eba9+'\x20failed,\x20status\x20code\x20=\x20'+_0x2be6f7[_0xd6ac('0x18')]+'\x20('+_0x2be6f7[_0xd6ac('0x19')]+')'));return;}var _0x563502='';_0x2be6f7['on'](_0xd6ac('0x21'),function(_0x3110be){_0x563502+=_0x3110be;});_0x2be6f7['on'](_0xd6ac('0x1f'),function(){_0x441f52(_0x563502);});})['on'](_0xd6ac('0x15'),function(_0x4cb31b){_0x2bac4d(_0x4cb31b);})[_0xd6ac('0x1f')]();});}function convertFile(_0x1bc82e,_0x56f77e){return new BPromise(function(_0x15e903,_0x1012f8){var _0x470366=sox[_0xd6ac('0x22')](_0x1bc82e,_0x56f77e,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x470366['on']('error',function(_0xdbe77e){logger['error'](_0xd6ac('0x23'),_0xdbe77e);_0x1012f8(_0xdbe77e);});_0x470366['on'](_0xd6ac('0x1f'),function(){logger['info']('finish\x20to\x20convert');_0x15e903();});_0x470366[_0xd6ac('0x24')]();});}function base64Decode(_0x1080dc,_0x5b5b9f){var _0x4d35bf=path['resolve'](__dirname,_0xd6ac('0x25'),rs[_0xd6ac('0x26')](0x4)+_0xd6ac('0x27'));fs[_0xd6ac('0x28')](_0x4d35bf,_0x1080dc,_0xd6ac('0x29'));return convertFile(_0x4d35bf,_0x5b5b9f)[_0xd6ac('0x2a')](function(){try{fs[_0xd6ac('0x1e')](_0x4d35bf);fs[_0xd6ac('0x2b')](_0x5b5b9f,_0xd6ac('0x2c'));}catch(_0x15bf28){logger[_0xd6ac('0x15')](_0x15bf28);}return _0x5b5b9f[_0xd6ac('0x2d')]('.')[0x0];});}function base64Encode(_0x1f3f22){var _0x33ea2c=fs[_0xd6ac('0x2e')](_0x1f3f22);return new Buffer(_0x33ea2c)[_0xd6ac('0x2f')](_0xd6ac('0x29'));}exports[_0xd6ac('0x30')]=function(_0x5338cf,_0x4bc572,_0x367d04,_0x48ca25,_0x42c84a,_0x8e64e3){var _0x42552f,_0x483341;var _0x2726ce=_0xd6ac('0x31');var _0x313fb0=_0xd6ac('0x32')+_0x5338cf;var _0x2e6c08={};if(_0x4bc572===_0xd6ac('0x33')){_0x2e6c08['input']={'ssml':_0x367d04};}else{_0x2e6c08[_0xd6ac('0x34')]={'text':_0x367d04};};_0x2e6c08[_0xd6ac('0x35')]={'languageCode':_0x48ca25,'ssmlGender':_0x42c84a};_0x2e6c08[_0xd6ac('0x36')]={'audioEncoding':_0xd6ac('0x37'),'sampleRateHertz':0x1f40};var _0x2c7f48={'url':_0x2726ce+_0xd6ac('0x38')+_0x313fb0,'method':_0xd6ac('0x39'),'json':!![],'body':_0x2e6c08};return rp(_0x2c7f48)[_0xd6ac('0x2a')](function(_0x2123d7){return new BPromise(function(_0x1c88e4,_0x158275){_0x42552f=path['resolve'](__dirname,_0xd6ac('0x25'),rs['generate'](0x4)+_0xd6ac('0x3a'));var _0x2507da=Buffer['from'](_0x2123d7['audioContent'],_0xd6ac('0x29'));return fs[_0xd6ac('0x3b')](_0x42552f,_0x2507da,function(_0x2d8c1b){_0x158275(_0x2d8c1b);},function(_0x12f203){fs[_0xd6ac('0x2b')](_0x42552f,_0xd6ac('0x2c'));_0x1c88e4(_0x12f203);});});})['then'](function(_0x3e9b4f){_0x483341=path[_0xd6ac('0x3c')](__dirname,'tmp',rs[_0xd6ac('0x26')](0x4)+_0xd6ac('0x27'));return convertFile(_0x42552f,_0x483341);})['then'](function(){try{fs['unlink'](_0x42552f);fs['chmodSync'](_0x483341,_0xd6ac('0x2c'));}catch(_0xec9c71){logger[_0xd6ac('0x15')](_0xec9c71);}logger[_0xd6ac('0x1b')](_0xd6ac('0x3d'),_0x483341[_0xd6ac('0x2d')]('.')[0x0]);return _0x483341[_0xd6ac('0x2d')]('.')[0x0];});};exports[_0xd6ac('0x3e')]=function(_0xfce0cf,_0x26c76b){var _0x445a50=_0xd6ac('0x3f');var _0x464b4c,_0x14ac04;var _0x519d8c;var _0x2d6e6b={'encoding':_0xd6ac('0x40'),'method':_0xd6ac('0x39'),'timeout':0x2710,'url':_0x445a50,'headers':{'Content-Type':_0xd6ac('0x41')},'body':_0xd6ac('0x42')+encodeURIComponent(JSON['stringify']([[[_0xd6ac('0x43'),JSON[_0xd6ac('0x44')]([_0xfce0cf,_0x26c76b||'en',![],'null']),null,_0xd6ac('0x45')]]]))};return rp(_0x2d6e6b)[_0xd6ac('0x2a')](function(_0x415411){try{_0x519d8c=eval(_0x415411[_0xd6ac('0x46')](0x5))[0x0][0x2];}catch(_0x4dcbaa){throw new Error('parse\x20response\x20failed:\x0a'+_0x415411[_0xd6ac('0x21')]);}if(!_0x519d8c){if(_0xfce0cf['length']>0xc8){throw new Error(_0xd6ac('0x47'));}else{throw new Error(_0xd6ac('0x48')+_0x26c76b+_0xd6ac('0x49'));}}try{_0x519d8c=eval(_0x519d8c)[0x0];}catch(_0x62a6d9){throw new Error(_0xd6ac('0x4a')+res['data']);}const _0x139f5f=_0x519d8c;_0x464b4c=path['resolve'](__dirname,'tmp',rs[_0xd6ac('0x26')](0x4)+_0xd6ac('0x3a'));fs['writeFileSync'](_0x464b4c,_0x519d8c,{'encoding':'base64'});_0x14ac04=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0xd6ac('0x27'));return convertFile(_0x464b4c,_0x14ac04);})[_0xd6ac('0x2a')](function(){try{fs[_0xd6ac('0x1e')](_0x464b4c);fs['chmodSync'](_0x14ac04,_0xd6ac('0x2c'));}catch(_0x538f7f){logger[_0xd6ac('0x15')](_0x538f7f);}logger[_0xd6ac('0x1b')](_0xd6ac('0x4b'),_0x14ac04[_0xd6ac('0x2d')]('.')[0x0]);return _0x14ac04[_0xd6ac('0x2d')]('.')[0x0];});};exports[_0xd6ac('0x4c')]=function(_0x5a7d27,_0x20a1ea,_0x392bd9){return google[_0xd6ac('0x4d')](_0x5a7d27,_0x20a1ea,_0x392bd9)[_0xd6ac('0x2a')](function(_0x17abce){logger[_0xd6ac('0x1b')](_0x17abce[_0xd6ac('0x4e')]);return rp(_0x17abce);})[_0xd6ac('0x2a')](function(_0x35503a){var _0x79e30f='';var _0x3763af=0x0;try{fs[_0xd6ac('0x1e')](_0x5a7d27);}catch(_0x1042fd){logger[_0xd6ac('0x15')](_0x1042fd);}if(_0x35503a&&_0x35503a[_0xd6ac('0x4f')]){_0x79e30f=_0x35503a[_0xd6ac('0x4f')]['map'](function(_0x42eb7c){return _0x42eb7c&&_0x42eb7c[_0xd6ac('0x50')][0x0]&&_0x42eb7c[_0xd6ac('0x50')][0x0][_0xd6ac('0x51')]?_0x42eb7c[_0xd6ac('0x50')][0x0][_0xd6ac('0x51')]:'';})['join']('\x0a');_0x3763af=_0x35503a['results'][_0xd6ac('0x52')](function(_0xe6a7c1){return _0xe6a7c1&&_0xe6a7c1[_0xd6ac('0x50')][0x0]&&_0xe6a7c1[_0xd6ac('0x50')][0x0][_0xd6ac('0x53')]?_0xe6a7c1[_0xd6ac('0x50')][0x0][_0xd6ac('0x53')]:0x0;})[_0xd6ac('0x54')]('\x0a');}logger[_0xd6ac('0x1b')](_0xd6ac('0x55'),_0x79e30f);logger[_0xd6ac('0x1b')](_0xd6ac('0x56'),_0x3763af);return{'transcript':_0x79e30f,'confidence':_0x3763af};})[_0xd6ac('0x57')](function(_0x170571){logger[_0xd6ac('0x15')](_0xd6ac('0x58'),_0x170571[_0xd6ac('0x18')],_0x170571['name'],_0x170571[_0xd6ac('0x59')]);});};exports[_0xd6ac('0x5a')]=function(_0x4aa843,_0x3fa257,_0x1f2bd3,_0x28efbd){var _0x53527b=apiai(_0x3fa257,{'language':_0x28efbd||'en'});return _0x53527b[_0xd6ac('0x5b')](_0x1f2bd3,{'sessionId':md5(_0x4aa843)})[_0xd6ac('0x2a')](function(_0x4e15e6){logger[_0xd6ac('0x1b')](JSON['stringify'](_0x4e15e6));return{'source':_0x4e15e6['result'][_0xd6ac('0x5c')],'resolvedQuery':_0x4e15e6['result'][_0xd6ac('0x5d')],'action':_0x4e15e6['result'][_0xd6ac('0x5e')],'actionIncomplete':_0x4e15e6['result'][_0xd6ac('0x5f')],'speech':_0x4e15e6['result'][_0xd6ac('0x60')]['speech'],'score':_0x4e15e6[_0xd6ac('0x61')][_0xd6ac('0x62')],'statusCode':_0x4e15e6['status'][_0xd6ac('0x63')],'endConversation':_0x4e15e6[_0xd6ac('0x61')][_0xd6ac('0x64')][_0xd6ac('0x65')]||![],'isFallbackIntent':_0x4e15e6[_0xd6ac('0x61')][_0xd6ac('0x64')]['isFallbackIntent']};});};exports[_0xd6ac('0x66')]=function(_0x5c974f,_0x456dcf,_0x19f45d,_0x133d3a,_0x4b2b8a,_0x18337e){var _0x35bb73=_0x133d3a[_0xd6ac('0x67')](/\\n/g,'\x0a');var _0x548029={'credentials':{'private_key':_0x35bb73,'client_email':_0x19f45d}};var _0x483884=new dialogflow['SessionsClient'](_0x548029);var _0x231f2f=_0x483884[_0xd6ac('0x68')](_0x456dcf,md5(_0x5c974f));var _0xb79a44={'session':_0x231f2f,'queryInput':{'text':{'text':_0x4b2b8a,'languageCode':_0x18337e}}};return _0x483884[_0xd6ac('0x69')](_0xb79a44)[_0xd6ac('0x2a')](function(_0x34e4ba){if(_0x34e4ba&&_0x34e4ba[_0xd6ac('0x6a')]){logger[_0xd6ac('0x1b')](_0xd6ac('0x6b'),JSON['stringify'](_0x34e4ba));var _0x54ccd4=_0x34e4ba[0x0];if(_0x54ccd4){var _0x36ddaf={'action':_0x54ccd4[_0xd6ac('0x6c')]['action'],'allRequiredParamsPresent':_0x54ccd4[_0xd6ac('0x6c')][_0xd6ac('0x6d')],'endConversation':_0x54ccd4[_0xd6ac('0x6c')][_0xd6ac('0x6e')]&&_0x54ccd4[_0xd6ac('0x6c')]['diagnosticInfo']['fields']?_0x54ccd4[_0xd6ac('0x6c')]['diagnosticInfo']['fields'][_0xd6ac('0x6f')]['boolValue']:![],'fulfillmentText':_0x54ccd4[_0xd6ac('0x6c')][_0xd6ac('0x70')],'intentName':_0x54ccd4['queryResult']['intent'][_0xd6ac('0x71')],'intentDisplayName':_0x54ccd4[_0xd6ac('0x6c')][_0xd6ac('0x72')][_0xd6ac('0x73')],'isFallbackIntent':_0x54ccd4[_0xd6ac('0x6c')][_0xd6ac('0x72')][_0xd6ac('0x74')],'languageCode':_0x54ccd4[_0xd6ac('0x6c')][_0xd6ac('0x75')],'queryText':_0x54ccd4['queryResult'][_0xd6ac('0x76')],'responseId':_0x54ccd4[_0xd6ac('0x77')],'score':_0x54ccd4['queryResult'][_0xd6ac('0x78')],'speech':_0x54ccd4[_0xd6ac('0x6c')][_0xd6ac('0x70')],'providerResponse':JSON[_0xd6ac('0x44')](_0x34e4ba)};return _0x36ddaf;}}});};exports[_0xd6ac('0x79')]=function(_0x37979c,_0x23faac,_0x27ed81,_0x44f1f7){return tilde['asr'](_0x37979c,_0x23faac,_0x27ed81,_0x44f1f7)[_0xd6ac('0x2a')](function(_0x541f1c){try{fs[_0xd6ac('0x1e')](_0x37979c);}catch(_0x8b4ca2){logger['error'](_0x8b4ca2);}logger[_0xd6ac('0x1b')](_0xd6ac('0x7a'),_0x541f1c['transcript']);logger[_0xd6ac('0x1b')](_0xd6ac('0x7b'),_0x541f1c['confidence']);return _0x541f1c;});};exports['awsPolly']=function(_0x42812f,_0x43e405,_0x273cd7,_0x316200,_0x1747c6,_0x18a51d){var _0x41b447=path[_0xd6ac('0x3c')](__dirname,_0xd6ac('0x25'),rs[_0xd6ac('0x26')](0x4)+_0xd6ac('0x3a'));var _0x48517a;return aws[_0xd6ac('0x7c')](_0x42812f,_0x43e405,_0x273cd7,_0x316200,_0x1747c6,_0x18a51d,_0x41b447)['then'](function(){_0x48517a=path['resolve'](__dirname,_0xd6ac('0x25'),rs[_0xd6ac('0x26')](0x4)+'.wav');return convertFile(_0x41b447,_0x48517a);})[_0xd6ac('0x2a')](function(){try{fs['unlink'](_0x41b447);fs['chmodSync'](_0x48517a,_0xd6ac('0x2c'));}catch(_0x4e912b){logger[_0xd6ac('0x15')](_0x4e912b);}return _0x48517a[_0xd6ac('0x2d')]('.')[0x0];});};exports[_0xd6ac('0x7d')]=function(_0x19990a,_0x25eae2,_0x47e570,_0x589903,_0x335523,_0x2ee1ed){return aws[_0xd6ac('0x7e')](_0x19990a,_0x25eae2,_0x47e570,_0x589903,_0x335523,_0x2ee1ed)['then'](function(_0x4659a1){logger[_0xd6ac('0x1b')](JSON[_0xd6ac('0x44')](_0x4659a1));return _0x4659a1;});};exports[_0xd6ac('0x7f')]=function(_0xce0861,_0x31aabb,_0x5e4d57,_0x17f3a4){var _0x271cbf=util[_0xd6ac('0x80')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0xce0861,encodeURIComponent(_0x31aabb),_0x5e4d57,_0x17f3a4);var _0x1028a7=path[_0xd6ac('0x3c')](__dirname,'tmp',rs[_0xd6ac('0x26')](0x4)+'.mp3');var _0x5cae11;return downloadFile(_0x271cbf,_0x1028a7)[_0xd6ac('0x2a')](function(){_0x5cae11=path['resolve'](__dirname,_0xd6ac('0x25'),rs[_0xd6ac('0x26')](0x4)+_0xd6ac('0x27'));return convertFile(_0x1028a7,_0x5cae11);})['then'](function(){try{fs[_0xd6ac('0x1e')](_0x1028a7);fs['chmodSync'](_0x5cae11,_0xd6ac('0x2c'));}catch(_0xa02612){logger[_0xd6ac('0x15')](_0xa02612);}return _0x5cae11[_0xd6ac('0x2d')]('.')[0x0];});};exports[_0xd6ac('0x81')]=function(_0x3feec1,_0x1b0cf8,_0x21c36d,_0x20c5a5){var _0x731b8c=util[_0xd6ac('0x80')](_0xd6ac('0x82'),ISPEECH_API,_0x1b0cf8,_0x21c36d,base64Encode(_0x3feec1),_0x20c5a5?util['format'](_0xd6ac('0x83'),encodeURIComponent(_0x20c5a5)):_0xd6ac('0x84'));return uploadFile(_0x731b8c)[_0xd6ac('0x2a')](function(_0x2675d7){return querystring[_0xd6ac('0x8')](_0x2675d7);});};exports[_0xd6ac('0x85')]=function(_0x2ebb43,_0x28ccde){return sestek['nda'](_0x2ebb43,_0x28ccde)[_0xd6ac('0x2a')](function(_0xfc0e84){logger[_0xd6ac('0x1b')](JSON[_0xd6ac('0x44')](_0xfc0e84));var _0x105b35={'speech':_0xfc0e84[_0xd6ac('0x86')],'action':_0xfc0e84['channelData']?_0xfc0e84[_0xd6ac('0x87')][_0xd6ac('0x88')]:undefined,'actiondata':_0xfc0e84[_0xd6ac('0x87')]?_0xfc0e84['channelData']['CustomActionData']:undefined};if(_0xfc0e84[_0xd6ac('0x87')]&&_0xfc0e84[_0xd6ac('0x87')][_0xd6ac('0x89')]){return base64Decode(_0xfc0e84[_0xd6ac('0x87')][_0xd6ac('0x89')][_0xd6ac('0x8a')],path[_0xd6ac('0x3c')](__dirname,'tmp',rs['generate'](0x4)+'.wav'))[_0xd6ac('0x2a')](function(_0x1be651){_0x105b35['audiofile']=_0x1be651;return _0x105b35;});}return _0x105b35;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index 46a4150..aa6b27f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d6b=['exports','./nda'];(function(_0x4ee579,_0x2e2920){var _0x91668c=function(_0xffd753){while(--_0xffd753){_0x4ee579['push'](_0x4ee579['shift']());}};_0x91668c(++_0x2e2920);}(_0x6d6b,0x165));var _0xb6d6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6d6b[_0x14add3];return _0x4a174f;};var nda=require(_0xb6d6('0x0'));module[_0xb6d6('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x8872=['./nda'];(function(_0x552502,_0x597466){var _0x486f9c=function(_0x246a35){while(--_0x246a35){_0x552502['push'](_0x552502['shift']());}};_0x486f9c(++_0x597466);}(_0x8872,0x189));var _0x2887=function(_0x237299,_0x3a8fa2){_0x237299=_0x237299-0x0;var _0x3b67b3=_0x8872[_0x237299];return _0x3b67b3;};var nda=require(_0x2887('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
index 9d17632..bbb52c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f4=['POST','resolve','ndauth_url','password','username','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','Nda','uniqueid','callerid','dnid','extension','text','access_token','project','channelData','ProjectName','body','AudioOutputSettings','audio/wav','custom_action','custom_action_data','stringify','request-promise','url','agi','exports'];(function(_0x5009b9,_0x40bb46){var _0x3d2fe6=function(_0x1e5f5b){while(--_0x1e5f5b){_0x5009b9['push'](_0x5009b9['shift']());}};_0x3d2fe6(++_0x40bb46);}(_0x74f4,0xaa));var _0x474f=function(_0x4d4c6c,_0x552965){_0x4d4c6c=_0x4d4c6c-0x0;var _0x5497c4=_0x74f4[_0x4d4c6c];return _0x5497c4;};'use strict';var rp=require(_0x474f('0x0'));var url=require(_0x474f('0x1'));var logger=require('../../../../../config/logger')(_0x474f('0x2'));module[_0x474f('0x3')]=function(_0x5931b9,_0x23cf8d){var _0x47fa11={'method':_0x474f('0x4'),'uri':url[_0x474f('0x5')](_0x23cf8d[_0x474f('0x6')],'/token'),'form':{'grant_type':_0x474f('0x7'),'username':_0x23cf8d[_0x474f('0x8')],'password':_0x23cf8d[_0x474f('0x7')]},'json':!![]};return rp(_0x47fa11)[_0x474f('0x9')](function(_0x25e3f2){var _0x461707={'method':_0x474f('0x4'),'uri':url[_0x474f('0x5')](_0x23cf8d[_0x474f('0xa')],_0x474f('0xb')),'body':{'type':_0x23cf8d[_0x474f('0xc')]||'message','channelId':_0x474f('0xd'),'conversation':{'id':_0x5931b9[_0x474f('0xe')]},'from':{'id':_0x5931b9[_0x474f('0xf')],'name':_0x5931b9['calleridname']},'recipient':{'id':_0x5931b9[_0x474f('0x10')],'name':_0x5931b9[_0x474f('0x11')]},'text':_0x23cf8d[_0x474f('0x12')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x25e3f2[_0x474f('0x13')]},'json':!![]};if(_0x23cf8d[_0x474f('0x14')]){_0x461707['body'][_0x474f('0x15')][_0x474f('0x16')]=_0x23cf8d[_0x474f('0x14')];}if(_0x23cf8d['ndagenerate_audio']=='1'){_0x461707[_0x474f('0x17')][_0x474f('0x15')][_0x474f('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x474f('0x19')};}if(_0x23cf8d[_0x474f('0x1a')]){_0x461707[_0x474f('0x17')][_0x474f('0x15')]['CustomAction']=_0x23cf8d[_0x474f('0x1a')];if(_0x23cf8d['custom_action_data']){_0x461707[_0x474f('0x17')][_0x474f('0x15')]['CustomActionData']=_0x23cf8d[_0x474f('0x1b')];}}logger['info'](JSON[_0x474f('0x1c')](_0x461707));return rp(_0x461707);});};
\ No newline at end of file
+var _0x132f=['project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','custom_action','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST','resolve','ndauth_url','/token','username','password','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','calleridname','dnid','extension','text','Bearer\x20','access_token'];(function(_0x9a478a,_0x3b854f){var _0x5584ce=function(_0x3ddfd9){while(--_0x3ddfd9){_0x9a478a['push'](_0x9a478a['shift']());}};_0x5584ce(++_0x3b854f);}(_0x132f,0x182));var _0xf132=function(_0x48326a,_0x8cfa0c){_0x48326a=_0x48326a-0x0;var _0x466709=_0x132f[_0x48326a];return _0x466709;};'use strict';var rp=require(_0xf132('0x0'));var url=require(_0xf132('0x1'));var logger=require(_0xf132('0x2'))(_0xf132('0x3'));module[_0xf132('0x4')]=function(_0x424c89,_0x54a037){var _0x1405fc={'method':_0xf132('0x5'),'uri':url[_0xf132('0x6')](_0x54a037[_0xf132('0x7')],_0xf132('0x8')),'form':{'grant_type':'password','username':_0x54a037[_0xf132('0x9')],'password':_0x54a037[_0xf132('0xa')]},'json':!![]};return rp(_0x1405fc)['then'](function(_0xbbfdc7){var _0x58cdf9={'method':_0xf132('0x5'),'uri':url[_0xf132('0x6')](_0x54a037[_0xf132('0xb')],_0xf132('0xc')),'body':{'type':_0x54a037[_0xf132('0xd')]||_0xf132('0xe'),'channelId':_0xf132('0xf'),'conversation':{'id':_0x424c89['uniqueid']},'from':{'id':_0x424c89['callerid'],'name':_0x424c89[_0xf132('0x10')]},'recipient':{'id':_0x424c89[_0xf132('0x11')],'name':_0x424c89[_0xf132('0x12')]},'text':_0x54a037[_0xf132('0x13')],'channelData':{}},'headers':{'Authorization':_0xf132('0x14')+_0xbbfdc7[_0xf132('0x15')]},'json':!![]};if(_0x54a037[_0xf132('0x16')]){_0x58cdf9[_0xf132('0x17')][_0xf132('0x18')][_0xf132('0x19')]=_0x54a037[_0xf132('0x16')];}if(_0x54a037[_0xf132('0x1a')]=='1'){_0x58cdf9['body'][_0xf132('0x18')][_0xf132('0x1b')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x54a037[_0xf132('0x1c')]){_0x58cdf9['body']['channelData'][_0xf132('0x1d')]=_0x54a037[_0xf132('0x1c')];if(_0x54a037[_0xf132('0x1e')]){_0x58cdf9['body']['channelData'][_0xf132('0x1f')]=_0x54a037[_0xf132('0x1e')];}}logger[_0xf132('0x20')](JSON[_0xf132('0x21')](_0x58cdf9));return rp(_0x58cdf9);});};
\ No newline at end of file
index e3ae054..08cf384 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var asr=require('./lib/api');module['exports']=function(_0x580c7b,_0x1517a2,_0x32f928,_0x17f36b){return asr(_0x580c7b,_0x1517a2,_0x32f928,_0x17f36b);};
\ No newline at end of file
+var _0x1dde=['./lib/api','exports'];(function(_0x5d1d99,_0x10ca23){var _0x2957ec=function(_0x4f4ba){while(--_0x4f4ba){_0x5d1d99['push'](_0x5d1d99['shift']());}};_0x2957ec(++_0x10ca23);}(_0x1dde,0x186));var _0xe1dd=function(_0xb25ed9,_0xa50c85){_0xb25ed9=_0xb25ed9-0x0;var _0x5ac008=_0x1dde[_0xb25ed9];return _0x5ac008;};'use strict';var asr=require(_0xe1dd('0x0'));module[_0xe1dd('0x1')]=function(_0x1eaf39,_0x2569e4,_0x4c2371,_0x16c165){return asr(_0x1eaf39,_0x2569e4,_0x4c2371,_0x16c165);};
\ No newline at end of file
index 58ab0b6..e85bd1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe434=['update','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','data','close','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','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.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','message','error','bluebird','lodash','moment','crypto','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'];(function(_0x454564,_0x2a5ea6){var _0x3bdfea=function(_0x265436){while(--_0x265436){_0x454564['push'](_0x454564['shift']());}};_0x3bdfea(++_0x2a5ea6);}(_0xe434,0x15d));var _0x4e43=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xe434[_0x2160a9];return _0xa88cf7;};'use strict';var BPromise=require(_0x4e43('0x0'));var _=require(_0x4e43('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x4e43('0x2'));var crypto=require(_0x4e43('0x3'));var logger=require('../../../../../../config/logger')('agi');module[_0x4e43('0x4')]=function(_0x5ec94b,_0x324744,_0x3ede66,_0x14ae45){return new BPromise(function(_0x25b238,_0x4b17ad){logger[_0x4e43('0x5')](_0x4e43('0x6'),_0x14ae45||_0x4e43('0x7'));var _0x514f9c=new WebSocket(_0x14ae45||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x528b0d='';var _0x266c29='0';var _0x5b13fa='1';var _0x8be0d0=_0x4e43('0x8');function _0x165997(_0x1af1e8){var _0x425a9d=crypto[_0x4e43('0x9')](_0x4e43('0xa'));_0x425a9d[_0x4e43('0xb')](_0x1af1e8);return _0x425a9d['digest'](_0x4e43('0xc'));}function _0x3faa97(){try{logger[_0x4e43('0x5')](_0x4e43('0xd'));var _0x21fccb=moment()[_0x4e43('0xe')]();var _0x4a7803=_0x165997(_0x21fccb+_0x324744+_0x3ede66);_0x514f9c[_0x4e43('0xf')](JSON[_0x4e43('0x10')]({'appID':_0x324744,'timestamp':_0x21fccb,'appKey':_0x4a7803}));var _0xec1e3a=fs[_0x4e43('0x11')](_0x5ec94b);_0xec1e3a['on'](_0x4e43('0x12'),function(_0x5ede6a){_0x514f9c['send'](_0x5ede6a);});_0xec1e3a['on'](_0x4e43('0x13'),function(){_0x514f9c['send']('EOS');});}catch(_0x1fee75){logger['error'](_0x4e43('0x14'),JSON[_0x4e43('0x10')](_0x1fee75));_0x514f9c[_0x4e43('0x15')]();}}function _0x12ef37(_0x488cf5){try{if(_0x488cf5){var _0x61a649=JSON[_0x4e43('0x16')](_0x488cf5);switch(_0x61a649[_0x4e43('0x17')]){case 0x0:if(_0x61a649[_0x4e43('0x18')]){if(_0x61a649[_0x4e43('0x18')]['final']){logger[_0x4e43('0x5')](_0x4e43('0x19'),JSON['stringify'](_0x61a649[_0x4e43('0x18')][_0x4e43('0x1a')]));_0x528b0d=_0x61a649[_0x4e43('0x18')][_0x4e43('0x1a')][0x0][_0x4e43('0x1b')];_0x266c29=_0x61a649['result'][_0x4e43('0x1a')][0x0]['likelihood'];_0x5b13fa='0';_0x8be0d0=_0x4e43('0x1c');_0x514f9c[_0x4e43('0x15')]();}}break;case 0x1:logger[_0x4e43('0x5')](_0x4e43('0x8'));_0x5b13fa='1';_0x8be0d0=_0x4e43('0x8');break;case 0x2:logger['info']('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x5b13fa='2';_0x8be0d0=_0x4e43('0x1d');break;case 0x9:logger['info'](_0x4e43('0x1e'));_0x5b13fa='9';_0x8be0d0=_0x4e43('0x1e');break;case 0xa:logger['info'](_0x4e43('0x1f'));_0x5b13fa='10';_0x8be0d0=_0x4e43('0x1f');break;case 0xb:logger[_0x4e43('0x5')](_0x4e43('0x20'));_0x5b13fa='11';_0x8be0d0=_0x4e43('0x20');}}}catch(_0x9d6ec0){logger['error'](_0x4e43('0x21'),JSON[_0x4e43('0x10')](_0x9d6ec0));_0x514f9c[_0x4e43('0x15')]();}}function _0xf8327c(){logger[_0x4e43('0x5')](_0x4e43('0x22'));_0x25b238({'transcript':_0x528b0d,'confidence':_0x266c29,'status':_0x5b13fa,'status_message':_0x8be0d0});}function _0x299ab9(_0x3d0f1){logger['error'](_0x4e43('0x23'));if(!_[_0x4e43('0x24')](_0x3d0f1)){logger['error'](_[_0x4e43('0x25')](_0x3d0f1)?JSON[_0x4e43('0x10')](_0x3d0f1):_0x3d0f1);}}_0x514f9c['on']('open',_0x3faa97);_0x514f9c['on'](_0x4e43('0x26'),_0x12ef37);_0x514f9c['on']('close',_0xf8327c);_0x514f9c['on'](_0x4e43('0x27'),_0x299ab9);});};
\ No newline at end of file
+var _0x8561=['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','update','digest','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','data','close','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','lodash','moment','crypto','agi','exports'];(function(_0x546387,_0x1ac444){var _0x1102ba=function(_0x1cf29e){while(--_0x1cf29e){_0x546387['push'](_0x546387['shift']());}};_0x1102ba(++_0x1ac444);}(_0x8561,0x1cf));var _0x1856=function(_0x3ee1a1,_0x28152b){_0x3ee1a1=_0x3ee1a1-0x0;var _0x166cb1=_0x8561[_0x3ee1a1];return _0x166cb1;};'use strict';var BPromise=require('bluebird');var _=require(_0x1856('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x1856('0x1'));var crypto=require(_0x1856('0x2'));var logger=require('../../../../../../config/logger')(_0x1856('0x3'));module[_0x1856('0x4')]=function(_0x4c27bd,_0x3c3b48,_0x2ac03a,_0x1b2089){return new BPromise(function(_0x1e6d3d,_0x11feef){logger[_0x1856('0x5')](_0x1856('0x6'),_0x1b2089||_0x1856('0x7'));var _0x45f27e=new WebSocket(_0x1b2089||_0x1856('0x7'),{'perMessageDeflate':![]});var _0x8f2c97='';var _0x2e579b='0';var _0x270c9f='1';var _0x4046f1=_0x1856('0x8');function _0x2e1bc7(_0x10452){var _0x545c3f=crypto[_0x1856('0x9')]('sha1');_0x545c3f[_0x1856('0xa')](_0x10452);return _0x545c3f[_0x1856('0xb')]('hex');}function _0x450ce6(){try{logger[_0x1856('0x5')](_0x1856('0xc'));var _0x2091f7=moment()[_0x1856('0xd')]();var _0x239ff7=_0x2e1bc7(_0x2091f7+_0x3c3b48+_0x2ac03a);_0x45f27e[_0x1856('0xe')](JSON[_0x1856('0xf')]({'appID':_0x3c3b48,'timestamp':_0x2091f7,'appKey':_0x239ff7}));var _0x111db9=fs[_0x1856('0x10')](_0x4c27bd);_0x111db9['on'](_0x1856('0x11'),function(_0x2f20d9){_0x45f27e[_0x1856('0xe')](_0x2f20d9);});_0x111db9['on'](_0x1856('0x12'),function(){_0x45f27e['send']('EOS');});}catch(_0x7382a1){logger[_0x1856('0x13')](_0x1856('0x14'),JSON[_0x1856('0xf')](_0x7382a1));_0x45f27e[_0x1856('0x15')]();}}function _0x4f6e1f(_0x244ab2){try{if(_0x244ab2){var _0x5e66b0=JSON[_0x1856('0x16')](_0x244ab2);switch(_0x5e66b0[_0x1856('0x17')]){case 0x0:if(_0x5e66b0[_0x1856('0x18')]){if(_0x5e66b0[_0x1856('0x18')]['final']){logger[_0x1856('0x5')](_0x1856('0x19'),JSON['stringify'](_0x5e66b0[_0x1856('0x18')][_0x1856('0x1a')]));_0x8f2c97=_0x5e66b0['result']['hypotheses'][0x0][_0x1856('0x1b')];_0x2e579b=_0x5e66b0['result'][_0x1856('0x1a')][0x0][_0x1856('0x1c')];_0x270c9f='0';_0x4046f1=_0x1856('0x1d');_0x45f27e[_0x1856('0x15')]();}}break;case 0x1:logger[_0x1856('0x5')](_0x1856('0x8'));_0x270c9f='1';_0x4046f1=_0x1856('0x8');break;case 0x2:logger[_0x1856('0x5')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x270c9f='2';_0x4046f1='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x1856('0x5')](_0x1856('0x1e'));_0x270c9f='9';_0x4046f1=_0x1856('0x1e');break;case 0xa:logger[_0x1856('0x5')]('Authentication\x20failed.');_0x270c9f='10';_0x4046f1=_0x1856('0x1f');break;case 0xb:logger[_0x1856('0x5')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x270c9f='11';_0x4046f1=_0x1856('0x20');}}}catch(_0x492759){logger[_0x1856('0x13')](_0x1856('0x21'),JSON[_0x1856('0xf')](_0x492759));_0x45f27e[_0x1856('0x15')]();}}function _0x4fb143(){logger[_0x1856('0x5')]('Close\x20Tilde\x20ASR\x20socket');_0x1e6d3d({'transcript':_0x8f2c97,'confidence':_0x2e579b,'status':_0x270c9f,'status_message':_0x4046f1});}function _0x55bf93(_0x5f4617){logger[_0x1856('0x13')](_0x1856('0x22'));if(!_[_0x1856('0x23')](_0x5f4617)){logger[_0x1856('0x13')](_[_0x1856('0x24')](_0x5f4617)?JSON[_0x1856('0xf')](_0x5f4617):_0x5f4617);}}_0x45f27e['on'](_0x1856('0x25'),_0x450ce6);_0x45f27e['on'](_0x1856('0x26'),_0x4f6e1f);_0x45f27e['on']('close',_0x4fb143);_0x45f27e['on'](_0x1856('0x13'),_0x55bf93);});};
\ No newline at end of file
index c121e85..c083c5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97af=['exports'];(function(_0x22c833,_0xdbc462){var _0x56071a=function(_0x5282ed){while(--_0x5282ed){_0x22c833['push'](_0x22c833['shift']());}};_0x56071a(++_0xdbc462);}(_0x97af,0x137));var _0xf97a=function(_0x43e5ac,_0x2218d8){_0x43e5ac=_0x43e5ac-0x0;var _0x5b1e32=_0x97af[_0x43e5ac];return _0x5b1e32;};var asr=require('./asr');module[_0xf97a('0x0')]={'asr':asr};
\ No newline at end of file
+var _0xfd12=['./asr'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xfd12,0x1c8));var _0x2fd1=function(_0x5f08a6,_0x400121){_0x5f08a6=_0x5f08a6-0x0;var _0x5d0641=_0xfd12[_0x5f08a6];return _0x5d0641;};var asr=require(_0x2fd1('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index 09156b9..890118e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9efc=['getConnections','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','events','EventEmitter','./channel','127.0.0.1','emit','error','E_AGI_ARGUMENT_PORT','createServer','listening','connection'];(function(_0x77b766,_0x2c3445){var _0xe0eb06=function(_0x596252){while(--_0x596252){_0x77b766['push'](_0x77b766['shift']());}};_0xe0eb06(++_0x2c3445);}(_0x9efc,0xac));var _0xc9ef=function(_0x32e865,_0x317078){_0x32e865=_0x32e865-0x0;var _0x850461=_0x9efc[_0x32e865];return _0x850461;};'use strict';var util=require(_0xc9ef('0x0'));var net=require(_0xc9ef('0x1'));var EventEmitter=require(_0xc9ef('0x2'))[_0xc9ef('0x3')];var AGIError=require('./error');var AGIChannel=require(_0xc9ef('0x4'));var AGIServer=function(_0x37f50e,_0x534089,_0x39c7b1){var _0x2a0310=this,_0x37f50e=_0x37f50e||0x11dd,_0x534089=_0x534089||_0xc9ef('0x5'),_0x3980b7=null,_0x4192ec=0x0;EventEmitter['call'](_0x2a0310);function _0x2f278b(){if(!_0x37f50e){_0x2a0310[_0xc9ef('0x6')](_0xc9ef('0x7'),new AGIError(_0xc9ef('0x8')));return![];}_0x3980b7=net[_0xc9ef('0x9')]();_0x3980b7['listen'](_0x37f50e,_0x534089);_0x3980b7['on'](_0xc9ef('0xa'),function(){_0x2a0310[_0xc9ef('0x6')](_0xc9ef('0xa'));});_0x3980b7['on'](_0xc9ef('0xb'),function(_0x4c4956){_0x3980b7[_0xc9ef('0xc')](function(_0x1384fe,_0x2d5570){if(_0x1384fe){_0x2a0310[_0xc9ef('0x6')](_0xc9ef('0x7'),new AGIError(_0xc9ef('0xd'),_0x1384fe));}else if(_0x39c7b1&&_0x39c7b1<0x0){_0x2a0310[_0xc9ef('0x6')](_0xc9ef('0x7'),new AGIError(_0xc9ef('0xe')));_0x4c4956[_0xc9ef('0xf')]();}else if(_0x39c7b1&&_0x39c7b1>0x0&&_0x39c7b1<_0x2d5570){_0x4192ec+=0x1;_0x2a0310[_0xc9ef('0x6')](_0xc9ef('0x7'),new AGIError(_0xc9ef('0x10'),_0x4192ec));_0x4c4956['destroy']();}else{var _0xcf325c=new AGIChannel(_0x4c4956);_0xcf325c['on'](_0xc9ef('0x11'),function(){_0x2a0310[_0xc9ef('0x6')]('connection',_0xcf325c);});}});});_0x3980b7['on'](_0xc9ef('0x7'),function(_0x1b2501){_0x2a0310[_0xc9ef('0x6')](_0xc9ef('0x7'),new AGIError(_0xc9ef('0xd'),_0x1b2501[_0xc9ef('0x12')]));});_0x3980b7['on']('close',function(){_0x2a0310[_0xc9ef('0x6')](_0xc9ef('0x13'),new AGIError(_0xc9ef('0x14')));});}process[_0xc9ef('0x15')](function(){_0x2f278b();});};util['inherits'](AGIServer,EventEmitter);module[_0xc9ef('0x16')]=function(_0x1e11bc,_0x39a5a5,_0x52ef61){return new AGIServer(_0x1e11bc,_0x39a5a5,_0x52ef61);};
\ No newline at end of file
+var _0x1142=['destroy','ready','code','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','EventEmitter','./channel','call','emit','E_AGI_ARGUMENT_PORT','listening','connection','getConnections','E_AGI_SERVER_ERROR','error','E_AGI_SERVER_VOICE_DISABLED'];(function(_0x295801,_0x19cb49){var _0x41ba3d=function(_0x2d575c){while(--_0x2d575c){_0x295801['push'](_0x295801['shift']());}};_0x41ba3d(++_0x19cb49);}(_0x1142,0xa0));var _0x2114=function(_0x4a6cdf,_0x558f24){_0x4a6cdf=_0x4a6cdf-0x0;var _0x5b9d22=_0x1142[_0x4a6cdf];return _0x5b9d22;};'use strict';var util=require('util');var net=require('net');var EventEmitter=require('events')[_0x2114('0x0')];var AGIError=require('./error');var AGIChannel=require(_0x2114('0x1'));var AGIServer=function(_0x14060c,_0x2410cb,_0x4b4010){var _0x654998=this,_0x14060c=_0x14060c||0x11dd,_0x2410cb=_0x2410cb||'127.0.0.1',_0x343b43=null,_0x2e9cef=0x0;EventEmitter[_0x2114('0x2')](_0x654998);function _0x1cfaf2(){if(!_0x14060c){_0x654998[_0x2114('0x3')]('error',new AGIError(_0x2114('0x4')));return![];}_0x343b43=net['createServer']();_0x343b43['listen'](_0x14060c,_0x2410cb);_0x343b43['on'](_0x2114('0x5'),function(){_0x654998[_0x2114('0x3')](_0x2114('0x5'));});_0x343b43['on'](_0x2114('0x6'),function(_0x1626ac){_0x343b43[_0x2114('0x7')](function(_0x411e6a,_0x2927bb){if(_0x411e6a){_0x654998[_0x2114('0x3')]('error',new AGIError(_0x2114('0x8'),_0x411e6a));}else if(_0x4b4010&&_0x4b4010<0x0){_0x654998[_0x2114('0x3')](_0x2114('0x9'),new AGIError(_0x2114('0xa')));_0x1626ac['destroy']();}else if(_0x4b4010&&_0x4b4010>0x0&&_0x4b4010<_0x2927bb){_0x2e9cef+=0x1;_0x654998[_0x2114('0x3')]('error',new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x2e9cef));_0x1626ac[_0x2114('0xb')]();}else{var _0x50df84=new AGIChannel(_0x1626ac);_0x50df84['on'](_0x2114('0xc'),function(){_0x654998[_0x2114('0x3')](_0x2114('0x6'),_0x50df84);});}});});_0x343b43['on'](_0x2114('0x9'),function(_0x49756f){_0x654998[_0x2114('0x3')](_0x2114('0x9'),new AGIError(_0x2114('0x8'),_0x49756f[_0x2114('0xd')]));});_0x343b43['on'](_0x2114('0xe'),function(){_0x654998[_0x2114('0x3')]('close',new AGIError(_0x2114('0xf')));});}process[_0x2114('0x10')](function(){_0x1cfaf2();});};util[_0x2114('0x11')](AGIServer,EventEmitter);module[_0x2114('0x12')]=function(_0x59f361,_0x225534,_0x389d8b){return new AGIServer(_0x59f361,_0x225534,_0x389d8b);};
\ No newline at end of file
index 2340ac3..bd5f2e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f7c=['toString','callback_priority','getPauseById','agent','agentPause','agentUnpause','agentLogout','agentLogin','%s/%s@from-sip/n','LOCAL','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','url','method','timeout','number','includes','POST','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','statusCode','message','500\x20-\x20Internal\x20Server\x20Error','options','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','sestekNDA','ispeechTTS','ispeech_tts_language','ispeechASR','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','clone','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','hasOwnProperty','isPlainObject','isArray','length','isString','saveRestApiResult','%s.%s','setVariable','split','replaceAll','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','extra','maxRetry','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','no\x20text\x20configured','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','noop','no\x20grammar\x20configured','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','getAndSetVariable','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','delay','add','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','list_id','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','keys','forEach','%s[%s][%s]','%s_ROWS_COUNT','dial','debug','no\x20user\x20selected','sip_id','DIAL','SIP/%s','opts','Executed\x20command\x20%s','bot','Trying\x20Dialogflow:\x20%s','googleDialogflow','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20client_email\x20configured','no\x20private_key\x20configured','dialogflowV2_language','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','ndauth_url','username','no\x20username\x20configured','password','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','.wav','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','no\x20file\x20audio\x20selected','file_id','no\x20file\x20audio\x20found','getData','maxdigit','test','mindigit','hiddendigitsnum','hiddendigitspos','first','substr','generate','getsecretdigits','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','unlink','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','AWS_LEX_%s','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','no\x20key\x20configured','recordFile','google\x20%s\x20file\x20created','GoogleASR\x20Result\x20%s','tildeasr','appid','appsecret','no\x20appsecret\x20configured','wav','%s/recordings/%s','beep','NOBEEP','intKey','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','extension','priority','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','ispeech\x20%s\x20file\x20created','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','Enter\x20in\x20PAUSE\x20(%s)\x20block','getPause','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','%s_STATUS_MESSAGE','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','variable\x20%s\x20set','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','account_id','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','user','bcc','subject','service','Smtp','host','port','secure','authentication','pass','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','yes','Answer','Skipped\x20Answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','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\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','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','vswitch','exports','path','util','lodash','odbc','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment','./scripts','rawHeaders','rawBody','menu','getdigits','channel','rpc','prototype','getVariable','getVariableById','then','name','getVoiceQueue','getVoiceQueueById','catch','getSquareProject','getSquareProjectById','getSquareOdbc','dsn','getUser','getTrunk','getSound','getSoundById','getMailAccount','sendMailMessage','mailRpc','getIntervals','IntervalId','interval','map','getSoundPath','format','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Query\x20executed\x20correctly\x20%s','close','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','scheduledAt','callback','Callback\x20scheduled\x20at\x20'];(function(_0x40eec9,_0x817a67){var _0xfee890=function(_0x186640){while(--_0x186640){_0x40eec9['push'](_0x40eec9['shift']());}};_0xfee890(++_0x817a67);}(_0x3f7c,0x17a));var _0xc3f7=function(_0xf94630,_0x5d6de5){_0xf94630=_0xf94630-0x0;var _0x57f299=_0x3f7c[_0xf94630];return _0x57f299;};'use strict';var fs=require('fs');var path=require(_0xc3f7('0x0'));var util=require(_0xc3f7('0x1'));var _=require(_0xc3f7('0x2'));var sh=require('shelljs');var odbc=require(_0xc3f7('0x3'))();var rs=require(_0xc3f7('0x4'));var moment=require(_0xc3f7('0x5'));var Mustache=require(_0xc3f7('0x6'));var rp=require(_0xc3f7('0x7'));var logger=require(_0xc3f7('0x8'))(_0xc3f7('0x9'));var config=require(_0xc3f7('0xa'));var scripts=require(_0xc3f7('0xb'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0xc3f7('0xc'),_0xc3f7('0xd')];var verticesWithRetry=[_0xc3f7('0xe'),_0xc3f7('0xf'),'getsecretdigits'];var AGIVertices=function(_0x879379,_0x4d2c20,_0x850c16){this[_0xc3f7('0x10')]=_0x879379;this[_0xc3f7('0x11')]=_0x4d2c20;this['mailRpc']=_0x850c16;};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x13')]=function(_0x489b16,_0x5ad461){this['rpc'][_0xc3f7('0x14')](_0x489b16)[_0xc3f7('0x15')](function(_0x2799d9){_0x5ad461(null,_0x2799d9?_0x2799d9[_0xc3f7('0x16')]:![]);})['catch'](function(_0x57040f){_0x5ad461(_0x57040f);});};AGIVertices['prototype'][_0xc3f7('0x17')]=function(_0x409cb2,_0x199c03){this[_0xc3f7('0x11')][_0xc3f7('0x18')](_0x409cb2)[_0xc3f7('0x15')](function(_0x794eb0){_0x199c03(null,_0x794eb0?_0x794eb0[_0xc3f7('0x16')]:![]);})[_0xc3f7('0x19')](function(_0x339376){_0x199c03(_0x339376);});};AGIVertices['prototype'][_0xc3f7('0x1a')]=function(_0xc44352,_0x2a6217){this[_0xc3f7('0x11')][_0xc3f7('0x1b')](_0xc44352)[_0xc3f7('0x15')](function(_0x551220){_0x2a6217(null,_0x551220?_0x551220['name']:![]);})['catch'](function(_0x342c75){_0x2a6217(_0x342c75);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x1c')]=function(_0x5638b0,_0x4b7feb){this['rpc']['getSquareOdbcById'](_0x5638b0)[_0xc3f7('0x15')](function(_0x1fe3d7){_0x4b7feb(null,_0x1fe3d7?_0x1fe3d7[_0xc3f7('0x1d')]:![]);})[_0xc3f7('0x19')](function(_0x5c7bff){_0x4b7feb(_0x5c7bff);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x1e')]=function(_0x44b8f8,_0x38714e){this[_0xc3f7('0x11')]['getUserById'](_0x44b8f8)[_0xc3f7('0x15')](function(_0x1127b7){_0x38714e(null,_0x1127b7?_0x1127b7['name']:![]);})[_0xc3f7('0x19')](function(_0x225bcc){_0x38714e(_0x225bcc);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x1f')]=function(_0xed44d2,_0x547b96){this[_0xc3f7('0x11')]['getTrunkById'](_0xed44d2)[_0xc3f7('0x15')](function(_0x2a831c){_0x547b96(null,_0x2a831c?_0x2a831c[_0xc3f7('0x16')]:![]);})[_0xc3f7('0x19')](function(_0x3def34){_0x547b96(_0x3def34);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x20')]=function(_0x3f3957,_0x25c496){var _0x3c1b79=this;this[_0xc3f7('0x11')][_0xc3f7('0x21')](_0x3f3957)[_0xc3f7('0x15')](function(_0x3fe660){_0x25c496(null,_0x3fe660?_0x3c1b79['getSoundPath'](_0x3fe660['save_name']):![]);})[_0xc3f7('0x19')](function(_0x2c915f){_0x25c496(_0x2c915f);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x22')]=function(_0x52b40b,_0x3979db){this[_0xc3f7('0x11')]['getMailAccountById'](_0x52b40b)[_0xc3f7('0x15')](function(_0x52c261){_0x3979db(null,_0x52c261?_0x52c261:![]);})['catch'](function(_0x4e896b){_0x3979db(_0x4e896b);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x23')]=function(_0x1afa0a,_0x3343f2,_0x2d7158){this[_0xc3f7('0x24')][_0xc3f7('0x23')](_0x1afa0a,_0x3343f2)[_0xc3f7('0x15')](function(){_0x2d7158(null);})[_0xc3f7('0x19')](function(_0x48e8e4){_0x2d7158(_0x48e8e4);});};AGIVertices['prototype'][_0xc3f7('0x25')]=function(_0x2dc678,_0x585dd2){this[_0xc3f7('0x11')]['getIntervalById'](_0x2dc678)['then'](function(_0x10bfd5){if(_0x10bfd5){if(_0x10bfd5[_0xc3f7('0x26')]){_0x585dd2(null,[_0x10bfd5[_0xc3f7('0x27')]]);}else{_0x585dd2(null,_[_0xc3f7('0x28')](_0x10bfd5['Intervals'],'interval'));}}else{_0x585dd2(null,![]);}})[_0xc3f7('0x19')](function(_0x5c632d){_0x585dd2(_0x5c632d);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x29')]=function(_0x391fc1){return util[_0xc3f7('0x2a')](_0xc3f7('0x2b'),FILES_PATH,_0x391fc1);};AGIVertices['prototype'][_0xc3f7('0x2c')]=function(_0x5ad0e6,_0x5b3b91,_0x1be6b6){odbc[_0xc3f7('0x2d')](_0x5ad0e6,function(_0x559a43){if(_0x559a43){logger[_0xc3f7('0x2e')](_0xc3f7('0x2f'),_0x559a43);_0x1be6b6(_0x559a43);}else{logger[_0xc3f7('0x30')](_0xc3f7('0x31'));odbc[_0xc3f7('0x32')](_0x5b3b91,function(_0x53e075,_0x1f89e6){if(_0x53e075){logger[_0xc3f7('0x30')]('Error\x20executing\x20query\x20%s',_0x5b3b91);_0x1be6b6(_0x53e075);}else{logger['info'](_0xc3f7('0x33'),_0x5b3b91);odbc[_0xc3f7('0x34')](function(_0x54dc9c){if(_0x54dc9c){logger[_0xc3f7('0x2e')]('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x54dc9c);}_0x1be6b6(null,_0x1f89e6);});}});}});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x35')]=function(_0x4cdcf6,_0x279918){this[_0xc3f7('0x11')][_0xc3f7('0x36')](_0x4cdcf6)[_0xc3f7('0x15')](function(_0x397b58){_0x279918(null,_0x397b58?_0x397b58:![]);})['catch'](function(_0x55df16){_0x279918(_0x55df16);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x37')]=function(_0x5d3b01,_0x22298c){this[_0xc3f7('0x11')]['createSmsMessage'](_0x5d3b01)[_0xc3f7('0x15')](function(_0x4e273b){_0x22298c(null,_0x4e273b);})[_0xc3f7('0x19')](function(_0x28c307){_0x22298c(_0x28c307);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x38')]=function(_0x97cf4e,_0x239345,_0x1c38b4){this[_0xc3f7('0x11')][_0xc3f7('0x38')]({'uniqueid':this[_0xc3f7('0x10')][_0xc3f7('0x39')],'node':_0x97cf4e['label'],'application':_0x97cf4e[_0xc3f7('0x3a')],'data':_0x239345||null,'project_name':this[_0xc3f7('0x10')][_0xc3f7('0x3b')],'callerid':this[_0xc3f7('0x10')][_0xc3f7('0x3c')]})[_0xc3f7('0x15')](function(_0x453331){if(_0x1c38b4){_0x1c38b4(null,_0x453331);}})[_0xc3f7('0x19')](function(_0x569f68){if(_0x1c38b4){_0x1c38b4(_0x569f68);}});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x3d')]=function(_0x3e65aa,_0x3381a4,_0x363661,_0x50438e){this[_0xc3f7('0x11')][_0xc3f7('0x3d')]({'uniqueid':this[_0xc3f7('0x10')]['uniqueid'],'callerid':this[_0xc3f7('0x10')][_0xc3f7('0x3c')],'calleridname':this[_0xc3f7('0x10')][_0xc3f7('0x3e')],'context':this['channel'][_0xc3f7('0x3f')],'extension':this[_0xc3f7('0x10')]['extension'],'priority':this[_0xc3f7('0x10')]['priority'],'accountcode':this[_0xc3f7('0x10')][_0xc3f7('0x40')],'dnid':this[_0xc3f7('0x10')][_0xc3f7('0x41')],'projectName':this[_0xc3f7('0x10')]['arg_1'],'saveName':_0x3381a4,'filename':_0x3e65aa[_0xc3f7('0x42')]||_0x3381a4,'savePath':_0x363661})[_0xc3f7('0x15')](function(_0x46bb4f){_0x50438e(null,_0x46bb4f);})[_0xc3f7('0x19')](function(_0x39eb3c){_0x50438e(_0x39eb3c);});};AGIVertices[_0xc3f7('0x12')]['createSquareMessage']=function(_0x32a173,_0x24d9af,_0x5d43d0,_0x48015f,_0x527e3e){this[_0xc3f7('0x11')][_0xc3f7('0x43')]({'uniqueid':this[_0xc3f7('0x10')][_0xc3f7('0x39')],'body':_0x32a173,'direction':_0x24d9af,'providerName':_0x5d43d0,'providerResponse':_0x48015f})[_0xc3f7('0x15')](function(_0x129378){if(_0x527e3e){_0x527e3e(null,_0x129378);}})[_0xc3f7('0x19')](function(_0x31773a){if(_0x527e3e){_0x527e3e(_0x31773a);}});};AGIVertices['prototype']['createCmContact']=function(_0x2f9d37,_0x2d2371){this['rpc'][_0xc3f7('0x44')]({'firstName':_[_0xc3f7('0x45')](_0x2f9d37[_0xc3f7('0x16')])||_[_0xc3f7('0x46')](_0x2f9d37[_0xc3f7('0x16')])?_0xc3f7('0x47')+Math[_0xc3f7('0x48')]():_0x2f9d37[_0xc3f7('0x16')],'lastName':_['isEmpty'](_0x2f9d37['lastName'])||_[_0xc3f7('0x46')](_0x2f9d37['lastName'])?null:_0x2f9d37[_0xc3f7('0x49')],'phone':_0x2f9d37[_0xc3f7('0x4a')],'ListId':_0x2f9d37['list_id'],'scheduledat':_0x2f9d37[_0xc3f7('0x4b')],'callbackUniqueid':this[_0xc3f7('0x10')][_0xc3f7('0x39')],'tags':_0xc3f7('0x4c'),'description':_0xc3f7('0x4d')+_0x2f9d37[_0xc3f7('0x4b')][_0xc3f7('0x4e')](),'priority':_0x2f9d37[_0xc3f7('0x4f')]})[_0xc3f7('0x15')](function(_0x51104b){_0x2d2371(null,_0x51104b);})[_0xc3f7('0x19')](function(_0x24ae1d){_0x2d2371(_0x24ae1d);});};AGIVertices[_0xc3f7('0x12')]['getPause']=function(_0x421103,_0x29932a){this[_0xc3f7('0x11')][_0xc3f7('0x50')](_0x421103)['then'](function(_0x18e837){_0x29932a(null,_0x18e837?_0x18e837[_0xc3f7('0x16')]:![]);})[_0xc3f7('0x19')](function(_0x382cbf){_0x29932a(_0x382cbf);});};AGIVertices[_0xc3f7('0x12')]['agentPause']=function(_0x467d16,_0x647b7e,_0x14e0fd){var _0x32d8e8={'role':_0xc3f7('0x51')};_0x32d8e8[_0x467d16]=this[_0xc3f7('0x10')][_0xc3f7('0x3c')];this['rpc'][_0xc3f7('0x52')](_0x32d8e8,_0x647b7e,this[_0xc3f7('0x10')][_0xc3f7('0x39')])['then'](function(_0x15305d){_0x14e0fd(null,_[_0xc3f7('0x46')](_0x15305d)?![]:!![]);})[_0xc3f7('0x19')](function(_0x4d058e){logger[_0xc3f7('0x2e')](_0x4d058e);_0x14e0fd(null,![]);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x53')]=function(_0x4c2061,_0x29ac17){var _0x45f11c={'role':_0xc3f7('0x51')};_0x45f11c[_0x4c2061]=this[_0xc3f7('0x10')]['callerid'];this[_0xc3f7('0x11')][_0xc3f7('0x53')](_0x45f11c)['then'](function(_0x58f4aa){_0x29ac17(null,_[_0xc3f7('0x46')](_0x58f4aa)?![]:!![]);})[_0xc3f7('0x19')](function(_0x5dce47){logger[_0xc3f7('0x2e')](_0x5dce47);_0x29ac17(null,![]);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x54')]=function(_0x34dc4b,_0x58568c){var _0x2115e0={'role':'agent'};_0x2115e0[_0x34dc4b]=this[_0xc3f7('0x10')][_0xc3f7('0x3c')];this[_0xc3f7('0x11')]['agentLogout'](_0x2115e0)['then'](function(_0x4adb24){_0x58568c(null,_['isNil'](_0x4adb24)?![]:!![]);})[_0xc3f7('0x19')](function(_0x978e3){logger[_0xc3f7('0x2e')](_0x978e3);_0x58568c(null,![]);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x55')]=function(_0x29358b,_0x27a191){var _0x5e45a7={'role':'agent'};_0x5e45a7[_0x29358b]=this[_0xc3f7('0x10')][_0xc3f7('0x3c')];var _0x2579ab=_0x29358b!='internal'?util['format'](_0xc3f7('0x56'),_0xc3f7('0x57'),this['channel'][_0xc3f7('0x3c')]):undefined;this[_0xc3f7('0x11')][_0xc3f7('0x55')](_0x5e45a7,_0x2579ab)[_0xc3f7('0x15')](function(_0x31806f){_0x27a191(null,_['isNil'](_0x31806f)?![]:!![]);})[_0xc3f7('0x19')](function(_0x5c7889){logger[_0xc3f7('0x2e')](_0x5c7889);_0x27a191(null,![]);});};AGIVertices['prototype'][_0xc3f7('0x58')]=function(_0x428f96,_0x4fb214){sh[_0xc3f7('0x59')](_[_0xc3f7('0x5a')](_0x428f96),function(_0x35c9a5,_0xb29066){var _0x3c59dd=_0xb29066[_0xc3f7('0x5b')](/(\r\n|\n|\r)/gm,'');_0x4fb214(null,_0x3c59dd);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x5c')]=function(_0x1c83f0,_0x5353c6){scripts[_0xc3f7('0x5c')](_0x1c83f0[_0xc3f7('0x5d')],_0x1c83f0[_0xc3f7('0x5e')]||_0xc3f7('0x5f'),_0x1c83f0[_0xc3f7('0x5f')],_0x1c83f0[_0xc3f7('0x60')]||_0xc3f7('0x61'),_0x1c83f0['ssmlGender']||_0xc3f7('0x62'),_0x1c83f0[_0xc3f7('0x63')]||_0xc3f7('0x64'))[_0xc3f7('0x15')](function(_0x4df92f){_0x5353c6(null,_0x4df92f);})['catch'](function(_0x3d8e5a){_0x5353c6(_0x3d8e5a);});};AGIVertices[_0xc3f7('0x12')]['googleTTS']=function(_0x653934,_0x4c8084){scripts[_0xc3f7('0x65')](_0x653934[_0xc3f7('0x5f')],_0x653934[_0xc3f7('0x66')]||'en',0x1)[_0xc3f7('0x15')](function(_0x3c65ca){_0x4c8084(null,_0x3c65ca);})[_0xc3f7('0x19')](function(_0xe9b867){_0x4c8084(_0xe9b867);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x67')]=function(_0x342823,_0x1cb2ca){var _0x33204b={'uri':_0x342823[_0xc3f7('0x68')],'method':_0x342823[_0xc3f7('0x69')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x342823[_0xc3f7('0x6a')])===_0xc3f7('0x6b')&&parseInt(_0x342823[_0xc3f7('0x6a')])>=0x1?parseInt(_0x342823['timeout'])*0x3e8:0x5*0x3e8};if(_[_0xc3f7('0x6c')]([_0xc3f7('0x6d'),_0xc3f7('0x6e')],_0x33204b[_0xc3f7('0x69')][_0xc3f7('0x6f')]())){try{_0x33204b[_0xc3f7('0x70')]=_0x342823[_0xc3f7('0xd')]?JSON[_0xc3f7('0x71')](_0x342823[_0xc3f7('0xd')]):{};}catch(_0x52b795){logger[_0xc3f7('0x2e')](_0xc3f7('0x72'),_0x52b795);}}try{_0x33204b[_0xc3f7('0x73')]=_0x342823[_0xc3f7('0xc')]?JSON[_0xc3f7('0x71')](_0x342823[_0xc3f7('0xc')]):{};}catch(_0x252949){logger[_0xc3f7('0x2e')](_0xc3f7('0x74'),_0x252949);}if(_0x342823[_0xc3f7('0x75')]){try{var _0x3d6bbe=require(_0x342823[_0xc3f7('0x75')])[_0xc3f7('0x76')](this,_0x33204b);_0x33204b[_0xc3f7('0x77')]=Mustache[_0xc3f7('0x78')](_0x342823[_0xc3f7('0x68')],_0x3d6bbe,{},['$$','$$']);if(_0x33204b[_0xc3f7('0x73')]){_0x33204b[_0xc3f7('0x73')]=JSON[_0xc3f7('0x71')](Mustache[_0xc3f7('0x78')](JSON[_0xc3f7('0x79')](_0x33204b['headers']),_0x3d6bbe,{},['$$','$$']));}if(_0x33204b[_0xc3f7('0x70')]){_0x33204b[_0xc3f7('0x70')]=JSON[_0xc3f7('0x71')](Mustache[_0xc3f7('0x78')](JSON[_0xc3f7('0x79')](_0x33204b[_0xc3f7('0x70')]),_0x3d6bbe,{},['$$','$$']));}}catch(_0x5b9a9c){logger['error']('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x5b9a9c);}}rp(_0x33204b)[_0xc3f7('0x15')](function(_0x2c3283){var _0x5812ad={'statusCode':_0x2c3283[_0xc3f7('0x7a')]||0xc8,'statusMessage':_0x2c3283['statusMessage']||'OK','headers':_0x2c3283[_0xc3f7('0x73')]||{},'body':_0x2c3283[_0xc3f7('0x70')]||{}};_0x1cb2ca(null,_0x5812ad);})[_0xc3f7('0x19')](function(_0x26a363){var _0x26a502={'statusCode':_0x26a363[_0xc3f7('0x7a')]||0x1f4,'statusMessage':_0x26a363[_0xc3f7('0x7b')]||_0xc3f7('0x7c'),'headers':_0x26a363[_0xc3f7('0x7d')][_0xc3f7('0x73')]||{},'body':_0x26a363[_0xc3f7('0x7d')]['body']||{}};_0x1cb2ca(null,_0x26a502);});};AGIVertices[_0xc3f7('0x12')]['googleDialogflow']=function(_0x78db7a,_0x425b3c){scripts['googleDialogflow'](this[_0xc3f7('0x10')][_0xc3f7('0x39')],_0x78db7a[_0xc3f7('0x7e')],_0x78db7a[_0xc3f7('0x5f')],_0x78db7a[_0xc3f7('0x7f')]||'en')[_0xc3f7('0x15')](function(_0x2847e9){_0x425b3c(null,_0x2847e9);})[_0xc3f7('0x19')](function(_0x3e322a){_0x425b3c(_0x3e322a);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x80')]=function(_0x2c7971,_0x44b489){scripts['googleDialogflowV2'](this[_0xc3f7('0x10')][_0xc3f7('0x39')],_0x2c7971[_0xc3f7('0x81')],_0x2c7971[_0xc3f7('0x82')],_0x2c7971[_0xc3f7('0x83')],_0x2c7971[_0xc3f7('0x5f')],_0x2c7971['dialogflowV2_language']||'en')[_0xc3f7('0x15')](function(_0x2dd5d8){_0x44b489(null,_0x2dd5d8);})[_0xc3f7('0x19')](function(_0x260552){_0x44b489(_0x260552);});};AGIVertices[_0xc3f7('0x12')]['sestekNDA']=function(_0x48c1b3,_0x39804c){scripts[_0xc3f7('0x84')](this[_0xc3f7('0x10')],_0x48c1b3)['then'](function(_0x39408c){_0x39804c(null,_0x39408c);})['catch'](function(_0x4932b4){_0x39804c(_0x4932b4);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x85')]=function(_0x2f76df,_0xdaaf1c){scripts[_0xc3f7('0x85')](_0x2f76df['key'],_0x2f76df['text'],_0x2f76df[_0xc3f7('0x86')]||_0xc3f7('0x61'),_0x2f76df['speed'])[_0xc3f7('0x15')](function(_0xe69319){_0xdaaf1c(null,_0xe69319);})[_0xc3f7('0x19')](function(_0x1e539b){_0xdaaf1c(_0x1e539b);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x87')]=function(_0x952f59,_0x2f11cb,_0x16db5a){scripts[_0xc3f7('0x87')](_0x2f11cb,_0x952f59['key'],_0x952f59['ispeech_asr_language']||_0xc3f7('0x61'),this[_0xc3f7('0x88')](_0x952f59[_0xc3f7('0x89')])?_0x952f59['model']:undefined)['then'](function(_0x504ba4){_0x16db5a(null,_0x504ba4);})[_0xc3f7('0x19')](function(_0x3d0e75){_0x16db5a(_0x3d0e75);});};AGIVertices[_0xc3f7('0x12')]['awsPolly']=function(_0x2463a5,_0x9d3a6d){scripts[_0xc3f7('0x8a')](_0x2463a5[_0xc3f7('0x8b')],_0x2463a5[_0xc3f7('0x8c')],_0x2463a5[_0xc3f7('0x8d')],_0x2463a5[_0xc3f7('0x8e')]||_0xc3f7('0x8f'),_0x2463a5[_0xc3f7('0x5f')],_0x2463a5[_0xc3f7('0x90')]||_0xc3f7('0x5f'))[_0xc3f7('0x15')](function(_0x502591){_0x9d3a6d(null,_0x502591);})['catch'](function(_0x46d3a9){_0x9d3a6d(_0x46d3a9);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x91')]=function(_0x4e2476,_0x5e4953){scripts[_0xc3f7('0x91')](this['channel'][_0xc3f7('0x39')],_0x4e2476['aws_access_key_id'],_0x4e2476[_0xc3f7('0x8c')],_0x4e2476[_0xc3f7('0x92')],_0x4e2476[_0xc3f7('0x5f')],_0x4e2476[_0xc3f7('0x93')])[_0xc3f7('0x15')](function(_0x42081e){_0x5e4953(null,_0x42081e);})[_0xc3f7('0x19')](function(_0x39fa91){_0x5e4953(_0x39fa91);});};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x94')]=function(_0xd7a762,_0x95d4bf,_0x3771d3){scripts[_0xc3f7('0x94')](_0x95d4bf,_0xd7a762['key'],_0xd7a762[_0xc3f7('0x95')]||_0xc3f7('0x61'))[_0xc3f7('0x15')](function(_0x48b734){_0x3771d3(null,_0x48b734);})[_0xc3f7('0x19')](function(_0x57f4ac){_0x3771d3(_0x57f4ac);});};AGIVertices[_0xc3f7('0x12')]['tildeASR']=function(_0x5363fd,_0xbd6817,_0x20ca1a){scripts[_0xc3f7('0x96')](_0xbd6817,_0x5363fd['appid'],_0x5363fd['appsecret'],_0x5363fd[_0xc3f7('0x77')])[_0xc3f7('0x15')](function(_0x448a46){_0x20ca1a(null,_0x448a46);})[_0xc3f7('0x19')](function(_0x96bbae){_0x20ca1a(_0x96bbae);});};AGIVertices[_0xc3f7('0x12')]['clear']=function(_0x3be280){var _0x211d17=_['includes'](verticesWithRetry,_0x3be280[_0xc3f7('0x3a')])?_0x3be280:_[_0xc3f7('0x97')](_0x3be280);for(var _0x1d7ee7 in _0x211d17){if(_0x211d17['hasOwnProperty'](_0x1d7ee7)){if(_0x211d17[_0x1d7ee7]&&_['isString'](_0x211d17[_0x1d7ee7])){if(_['includes'](recursiveMapAttributes,_0x1d7ee7)){_0x211d17[_0x1d7ee7]=this[_0xc3f7('0x98')](_0x211d17[_0x1d7ee7]);}else{_0x211d17[_0x1d7ee7]=this[_0xc3f7('0x99')](_0x211d17[_0x1d7ee7]);}}}}return _0x211d17;};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x9a')]=function(_0x145d18){for(var _0x48ba2f in _0x145d18){if(_0x145d18[_0xc3f7('0x9b')](_0x48ba2f)){if(_[_0xc3f7('0x9c')](_0x145d18[_0x48ba2f])){this[_0xc3f7('0x9a')](_0x145d18[_0x48ba2f]);}else if(_[_0xc3f7('0x9d')](_0x145d18[_0x48ba2f])){for(var _0x353a6b=0x0;_0x353a6b<_0x145d18[_0x48ba2f][_0xc3f7('0x9e')];_0x353a6b++){this[_0xc3f7('0x9a')](_0x145d18[_0x48ba2f][_0x353a6b]);}}else if(_[_0xc3f7('0x9f')](_0x145d18[_0x48ba2f])){_0x145d18[_0x48ba2f]=this[_0xc3f7('0x99')](_0x145d18[_0x48ba2f]);}}}};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0xa0')]=function(_0x562ba2,_0x214c16){for(var _0x43e791 in _0x562ba2){if(_0x562ba2[_0xc3f7('0x9b')](_0x43e791)){if(_['isPlainObject'](_0x562ba2[_0x43e791])){if(!_['isEmpty'](_0x562ba2[_0x43e791])){this[_0xc3f7('0xa0')](_0x562ba2[_0x43e791],util['format'](_0xc3f7('0xa1'),_0x214c16,_0x43e791));}}else if(_[_0xc3f7('0x9d')](_0x562ba2[_0x43e791])){for(var _0x4b7eff=0x0;_0x4b7eff<_0x562ba2[_0x43e791]['length'];_0x4b7eff++){this[_0xc3f7('0xa0')](_0x562ba2[_0x43e791][_0x4b7eff],util[_0xc3f7('0x2a')](_0xc3f7('0xa1'),_0x214c16,_0x43e791+'['+_0x4b7eff+']'));}}else{if(!_[_0xc3f7('0x46')](_0x562ba2[_0x43e791])){this['channel'][_0xc3f7('0xa2')](util[_0xc3f7('0x2a')](_0xc3f7('0xa1'),_0x214c16,_0x43e791),_0x562ba2[_0x43e791]);}}}}};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x98')]=function(_0xa50834){try{var _0x42766f=JSON[_0xc3f7('0x71')](_0xa50834);this['recursiveNodeIndex'](_0x42766f);return JSON['stringify'](_0x42766f);}catch(_0x2da6e6){return this[_0xc3f7('0x99')](_0xa50834);}};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x99')]=function(_0x3b86e1){var _0xc74286=_0x3b86e1[_0xc3f7('0xa3')]('{');for(var _0x2fc181=0x1;_0x2fc181<_0xc74286['length'];_0x2fc181+=0x1){var _0x30ebe8=_0xc74286[_0x2fc181][_0xc3f7('0xa3')]('}');if(_0x30ebe8[_0xc3f7('0x9e')]>0x1){_0x3b86e1=_0x3b86e1[_0xc3f7('0xa4')]('{'+_0x30ebe8[0x0]+'}',this[_0xc3f7('0x10')]['getVariable'](_0x30ebe8[0x0])['extra']||_0x30ebe8[0x0]);}}if(_0xc74286['length']===0x1){return _0x3b86e1['toString']();}return this[_0xc3f7('0x99')](_0x3b86e1);};AGIVertices[_0xc3f7('0x12')]['getAndSetVariable']=function(_0x363a18,_0x5e189e){var _0x4e2507=this[_0xc3f7('0x10')][_0xc3f7('0x13')](_0x363a18);if(_0x4e2507[_0xc3f7('0xa5')]===-0x1){return _0x4e2507;}logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0xa6'),_0x5e189e,_0x4e2507[_0xc3f7('0xa7')]));return this[_0xc3f7('0x10')]['setVariable'](_0x5e189e,_0x4e2507[_0xc3f7('0xa7')]);};AGIVertices['prototype'][_0xc3f7('0x88')]=function(_0x2a2f75){return _0x2a2f75&&_0x2a2f75!=='0'&&_0x2a2f75!=='-1'&&_0x2a2f75!=='';};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0xa8')]=function(_0x882d25){this[_0xc3f7('0x38')][_0xc3f7('0x76')](this,_0x882d25,'-');_0x882d25[_0xc3f7('0xa9')]=_0x882d25[_0xc3f7('0xa8')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0xaa')]=function(_0x241649){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0xab'),_0x241649[_0xc3f7('0xac')]));if(!this['isConfigured'](_0x241649['text'])){return this['channel']['noop'](_0xc3f7('0xad'));}var _0x2f2bb9='\x22'+_0x241649['text']+'\x22';if(this[_0xc3f7('0x88')](_0x241649[_0xc3f7('0x7d')])){_0x2f2bb9+=','+_0x241649[_0xc3f7('0x7d')];}var _0x209486=this[_0xc3f7('0x10')][_0xc3f7('0x59')](_0xc3f7('0xae'),_0x2f2bb9);if(_0x209486[_0xc3f7('0xa5')]===-0x1){return _0x209486;}return this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0xaf'),_0x2f2bb9));};AGIVertices[_0xc3f7('0x12')]['mrcprecog']=function(_0x40f172){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0xb0'),_0x40f172[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x40f172['grammar'])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0xb2'));}var _0x34a210=_0x40f172[_0xc3f7('0xb3')];if(this[_0xc3f7('0x88')](_0x40f172['options'])){_0x34a210+=','+_0x40f172[_0xc3f7('0x7d')];}var _0x1aae86=this['channel']['exec'](_0xc3f7('0xb4'),_0x34a210);if(_0x1aae86[_0xc3f7('0xa5')]===-0x1){return _0x1aae86;}var _0x14a193=this['getAndSetVariable'](_0xc3f7('0xb5'),_0xc3f7('0xb6'));if(_0x14a193[_0xc3f7('0xa5')]===-0x1){return _0x14a193;}var _0x35d77e=this[_0xc3f7('0xb7')]('RECOG_INPUT()',_0xc3f7('0xb8'));if(_0x35d77e['result']===-0x1){return _0x35d77e;}var _0x180d8e=this[_0xc3f7('0xb7')](_0xc3f7('0xb9'),'MRCP_RECOG_INSTANCE');if(_0x180d8e[_0xc3f7('0xa5')]===-0x1){return _0x180d8e;}return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0xba'),_0x34a210));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x9')]=function(_0x501191){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0xbb'),_0x501191[_0xc3f7('0xac')]));return this[_0xc3f7('0x10')][_0xc3f7('0x9')]([_0x501191['command'],_0x501191[_0xc3f7('0xbc')]]);};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0xbd')]=function(_0x5a7d28){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0xbe'),_0x5a7d28[_0xc3f7('0xac')]));if(this[_0xc3f7('0x88')](_0x5a7d28[_0xc3f7('0x6a')])){logger['info'](util[_0xc3f7('0x2a')](_0xc3f7('0xbf'),_0x5a7d28[_0xc3f7('0x6a')]));var _0x5c3d78=this['channel'][_0xc3f7('0xc0')](_0x5a7d28[_0xc3f7('0x6a')]);if(_0x5c3d78[_0xc3f7('0xa5')]===-0x1){return _0x5c3d78;}}return this[_0xc3f7('0x10')]['answer']();};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x4c')]=function(_0x239ded){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0xc1'),_0x239ded[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x239ded['list_id'])){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x239ded,'no\x20list\x20selected');}_0x239ded[_0xc3f7('0x4b')]=moment();if(this[_0xc3f7('0x88')](_0x239ded[_0xc3f7('0xc2')])){_0x239ded[_0xc3f7('0x4b')]=moment()[_0xc3f7('0xc3')](_0x239ded['delay'],'minutes');}if(!this[_0xc3f7('0x88')](_0x239ded['callback_priority'])){_0x239ded[_0xc3f7('0x4f')]=0x2;}this[_0xc3f7('0x44')][_0xc3f7('0x76')](this,_0x239ded);return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0xc4'),_0x239ded[_0xc3f7('0x4a')],_0x239ded[_0xc3f7('0xc5')],_0x239ded[_0xc3f7('0x4b')]));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0xc6')]=function(_0x5deea5){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0xc7'),_0x5deea5['label']));var _0x3c10a4=this['channel'][_0xc3f7('0x59')](_0x5deea5[_0xc3f7('0xc8')],_0x5deea5[_0xc3f7('0x7d')]);if(_0x3c10a4['result']===-0x1){return _0x3c10a4;}return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0xc9'),_0x5deea5[_0xc3f7('0xc8')],_0x5deea5['options']));};AGIVertices['prototype']['lumenvoxtts']=function(_0x53a292){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0xca'),_0x53a292['label']));if(!this[_0xc3f7('0x88')](_0x53a292[_0xc3f7('0x5f')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0xad'));}var _0x2bfb0f='\x22'+_0x53a292[_0xc3f7('0x5f')]+'\x22';if(this[_0xc3f7('0x88')](_0x53a292[_0xc3f7('0x7d')])){_0x2bfb0f+=','+_0x53a292[_0xc3f7('0x7d')];}var _0x33bfc2=this[_0xc3f7('0x10')][_0xc3f7('0x59')](_0xc3f7('0xae'),_0x2bfb0f);if(_0x33bfc2['result']===-0x1){return _0x33bfc2;}return this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0xaf'),_0x2bfb0f));};AGIVertices['prototype']['sestektts']=function(_0x3ed569){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0xcb'),_0x3ed569[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x3ed569['text'])){return this['channel'][_0xc3f7('0xb1')](_0xc3f7('0xad'));}var _0x567e4d='\x22'+_0x3ed569[_0xc3f7('0x5f')]+'\x22';if(this[_0xc3f7('0x88')](_0x3ed569[_0xc3f7('0x7d')])){_0x567e4d+=','+_0x3ed569[_0xc3f7('0x7d')];}var _0x3d7b20=this[_0xc3f7('0x10')][_0xc3f7('0x59')](_0xc3f7('0xae'),_0x567e4d);if(_0x3d7b20[_0xc3f7('0xa5')]===-0x1){return _0x3d7b20;}return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')]('Executed\x20command\x20MRCPSynth\x20%s',_0x567e4d));};AGIVertices['prototype']['lumenvoxasr']=function(_0x39bacc){logger[_0xc3f7('0x30')](util['format']('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x39bacc[_0xc3f7('0xac')]));if(!this['isConfigured'](_0x39bacc['grammar'])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')]('no\x20grammar\x20configured');}var _0x15e082=_0x39bacc[_0xc3f7('0xb3')];if(this[_0xc3f7('0x88')](_0x39bacc[_0xc3f7('0x7d')])){_0x15e082+=','+_0x39bacc['options'];}var _0x19da84=this['channel'][_0xc3f7('0x59')]('MRCPRecog',_0x15e082);if(_0x19da84['result']===-0x1){return _0x19da84;}var _0x131d7a=this['getAndSetVariable'](_0xc3f7('0xb5'),_0xc3f7('0xcc'));if(_0x131d7a[_0xc3f7('0xa5')]===-0x1){return _0x131d7a;}var _0x127f46=this[_0xc3f7('0xb7')](_0xc3f7('0xcd'),_0xc3f7('0xce'));if(_0x127f46[_0xc3f7('0xa5')]===-0x1){return _0x127f46;}var _0x1a1d07=this[_0xc3f7('0xb7')]('RECOG_INSTANCE()',_0xc3f7('0xcf'));if(_0x1a1d07['result']===-0x1){return _0x1a1d07;}return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0xba'),_0x15e082));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0xd0')]=function(_0x5cd1c7){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0xd1'),_0x5cd1c7[_0xc3f7('0xac')]));if(!this['isConfigured'](_0x5cd1c7[_0xc3f7('0xb3')])){return this[_0xc3f7('0x10')]['noop']('no\x20grammar\x20configured');}var _0x4abc10=_0x5cd1c7[_0xc3f7('0xb3')];if(this['isConfigured'](_0x5cd1c7['options'])){_0x4abc10+=','+_0x5cd1c7[_0xc3f7('0x7d')];}var _0x509f4c=this[_0xc3f7('0x10')][_0xc3f7('0x59')](_0xc3f7('0xb4'),_0x4abc10);if(_0x509f4c['result']===-0x1){return _0x509f4c;}var _0x8abf2b=this['getAndSetVariable'](_0xc3f7('0xb5'),_0xc3f7('0xd2'));if(_0x8abf2b[_0xc3f7('0xa5')]===-0x1){return _0x8abf2b;}var _0x432d93=this[_0xc3f7('0xb7')](_0xc3f7('0xcd'),_0xc3f7('0xd3'));if(_0x432d93[_0xc3f7('0xa5')]===-0x1){return _0x432d93;}var _0x3f44b7=this[_0xc3f7('0xb7')](_0xc3f7('0xb9'),_0xc3f7('0xd4'));if(_0x3f44b7['result']===-0x1){return _0x3f44b7;}return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0xba'),_0x4abc10));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0xd5')]=function(_0x3e1b4e){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x3e1b4e[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x3e1b4e[_0xc3f7('0xd6')])){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x3e1b4e,'no\x20database\x20selected');}var _0x11c57a=this[_0xc3f7('0x1c')][_0xc3f7('0x76')](this,_0x3e1b4e['odbc_id']);if(!_0x11c57a){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x3e1b4e,_0xc3f7('0xd7'));}if(!this['isConfigured'](_0x3e1b4e[_0xc3f7('0x32')])){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x3e1b4e,_0xc3f7('0xd8'));}var _0xaf8b8=_0x3e1b4e[_0xc3f7('0x32')][_0xc3f7('0x5b')](/(\r\n|\n|\r)/gm,'\x20');this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0xd9'),_0xaf8b8));var _0x5d7a84=this[_0xc3f7('0x2c')][_0xc3f7('0x76')](this,_0x11c57a,_0xaf8b8);this[_0xc3f7('0x38')][_0xc3f7('0x76')](this,_0x3e1b4e,_0xaf8b8);if(!this[_0xc3f7('0x88')](_0x3e1b4e[_0xc3f7('0xda')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0xdb'));}var _0x4bbb85=this[_0xc3f7('0x13')]['sync'](this,_0x3e1b4e[_0xc3f7('0xda')]);if(!_0x4bbb85){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x3e1b4e,_0xc3f7('0xdc'));}var _0x5bd481=this;_0x5d7a84['forEach'](function(_0x47e055,_0x43ff15){Object[_0xc3f7('0xdd')](_0x47e055)[_0xc3f7('0xde')](function(_0x5b0b3c){_0x5bd481['channel'][_0xc3f7('0xa2')](util[_0xc3f7('0x2a')](_0xc3f7('0xdf'),_0x4bbb85,_0x43ff15,_0x5b0b3c),_0x47e055[_0x5b0b3c]);});});this[_0xc3f7('0x10')]['setVariable'](util[_0xc3f7('0x2a')](_0xc3f7('0xe0'),_0x4bbb85),_0x5d7a84[_0xc3f7('0x9e')]);return this['channel'][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')]('variable\x20%s\x20set',_0x4bbb85));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0xe1')]=function(_0x441ba1){logger[_0xc3f7('0xe2')](util[_0xc3f7('0x2a')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x441ba1['label']));if(!this[_0xc3f7('0x88')](_0x441ba1['sip_id'])){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x441ba1,_0xc3f7('0xe3'));}var _0xa888b5=this['getUser']['sync'](this,_0x441ba1[_0xc3f7('0xe4')]);if(!_0xa888b5){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x441ba1,'no\x20user\x20found');}var _0x3f9628=this[_0xc3f7('0x10')][_0xc3f7('0x59')](_0xc3f7('0xe5'),[util[_0xc3f7('0x2a')](_0xc3f7('0xe6'),_0xa888b5),_0x441ba1[_0xc3f7('0x6a')],_0x441ba1[_0xc3f7('0xe7')],_0x441ba1['url']]);if(_0x3f9628[_0xc3f7('0xa5')]===-0x1){return _0x3f9628;}return this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0xe8'),_0xc3f7('0xe5')));};AGIVertices[_0xc3f7('0x12')]['dialogflow']=function(_0x5d5b70){logger[_0xc3f7('0x30')](util['format']('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x5d5b70['label']));if(!this[_0xc3f7('0x88')](_0x5d5b70[_0xc3f7('0x7e')])){return this[_0xc3f7('0x10')]['noop']('no\x20key\x20configured');}if(!this['isConfigured'](_0x5d5b70[_0xc3f7('0x5f')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0xad'));}this[_0xc3f7('0x10')][_0xc3f7('0xe9')]=!![];this[_0xc3f7('0x38')](_0x5d5b70);this[_0xc3f7('0x43')](_0x5d5b70[_0xc3f7('0x5f')],'in','','');this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0xea'),_0x5d5b70[_0xc3f7('0x5f')]));var _0x18ff9e=this[_0xc3f7('0xeb')]['sync'](this,_0x5d5b70);if(_0x18ff9e){for(var _0x1e6335 in _0x18ff9e){if(_0x18ff9e[_0xc3f7('0x9b')](_0x1e6335)){this['channel'][_0xc3f7('0xa2')](util[_0xc3f7('0x2a')](_0xc3f7('0xec'),_0x1e6335[_0xc3f7('0x6f')]()),_0x18ff9e[_0x1e6335]);}}this[_0xc3f7('0x43')](_0x18ff9e[_0xc3f7('0xed')],_0xc3f7('0xee'),'dialogflow','');return this['channel'][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0xef'),_0x18ff9e[_0xc3f7('0xed')]));}return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x5d5b70,'Dialogflow\x20is\x20unreachable');};AGIVertices['prototype'][_0xc3f7('0xf0')]=function(_0x2abafe){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0xf1'),_0x2abafe[_0xc3f7('0xac')]));if(!this['isConfigured'](_0x2abafe[_0xc3f7('0x81')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')]('no\x20project_id\x20configured');}if(!this[_0xc3f7('0x88')](_0x2abafe[_0xc3f7('0x82')])){return this['channel']['noop'](_0xc3f7('0xf2'));}if(!this[_0xc3f7('0x88')](_0x2abafe['private_key'])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0xf3'));}if(!this['isConfigured'](_0x2abafe[_0xc3f7('0xf4')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0xf5'));}if(!this[_0xc3f7('0x88')](_0x2abafe[_0xc3f7('0x5f')])){return this[_0xc3f7('0x10')]['noop'](_0xc3f7('0xad'));}this[_0xc3f7('0x10')][_0xc3f7('0xe9')]=!![];this[_0xc3f7('0x38')](_0x2abafe);this[_0xc3f7('0x43')](_0x2abafe[_0xc3f7('0x5f')],'in','','');this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0xf6'),_0x2abafe[_0xc3f7('0x5f')]));var _0x3872fa=this['googleDialogflowV2'][_0xc3f7('0x76')](this,_0x2abafe);if(_0x3872fa){for(var _0x27438d in _0x3872fa){if(_0x3872fa['hasOwnProperty'](_0x27438d)){if(_0x27438d!==_0xc3f7('0xf7')){this[_0xc3f7('0x10')]['setVariable'](util[_0xc3f7('0x2a')]('DIALOGFLOW_%s',_0x27438d[_0xc3f7('0x6f')]()),_0x3872fa[_0x27438d]);}}}this[_0xc3f7('0x43')](_0x3872fa[_0xc3f7('0xed')],_0xc3f7('0xee'),_0xc3f7('0xf0'),_0x3872fa[_0xc3f7('0xf7')]);return this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0xf8'),_0x3872fa[_0xc3f7('0xed')]));}return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x2abafe,_0xc3f7('0xf9'));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0xfa')]=function(_0x5ada85){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')]('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x5ada85[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x5ada85[_0xc3f7('0xfb')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')]('no\x20ndauth\x20url\x20configured');}if(!this[_0xc3f7('0x88')](_0x5ada85[_0xc3f7('0xfc')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0xfd'));}if(!this['isConfigured'](_0x5ada85[_0xc3f7('0xfe')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')]('no\x20password\x20configured');}if(!this[_0xc3f7('0x88')](_0x5ada85[_0xc3f7('0xff')])){return this['channel'][_0xc3f7('0xb1')]('no\x20text\x20configured');}this[_0xc3f7('0x10')][_0xc3f7('0xe9')]=!![];this[_0xc3f7('0x38')](_0x5ada85);this[_0xc3f7('0x43')](_0x5ada85[_0xc3f7('0x5f')],'in','','');this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0x100'),_0x5ada85[_0xc3f7('0x5f')]));var _0x45b7ce=this['sestekNDA'][_0xc3f7('0x76')](this,_0x5ada85);if(_0x45b7ce){for(var _0x36d60d in _0x45b7ce){if(_0x45b7ce[_0xc3f7('0x9b')](_0x36d60d)){this['channel'][_0xc3f7('0xa2')](util[_0xc3f7('0x2a')](_0xc3f7('0x101'),_0x36d60d['toUpperCase']()),_0x45b7ce[_0x36d60d]);}}this[_0xc3f7('0x43')](_0x45b7ce[_0xc3f7('0xed')],_0xc3f7('0xee'),_0xc3f7('0xfa'),'');if(_0x45b7ce[_0xc3f7('0x102')]){this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0x103'),_0x45b7ce[_0xc3f7('0x102')]));var _0x287afc=this[_0xc3f7('0x10')][_0xc3f7('0x104')](_0x45b7ce['audiofile']);try{fs['unlink'](_0x45b7ce[_0xc3f7('0x102')]+_0xc3f7('0x105'));}catch(_0x31cc72){logger[_0xc3f7('0x2e')](_0x31cc72);}return _0x287afc;}else{return this['channel'][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')]('SestekNDA\x20Result\x20%s',_0x45b7ce['speech']));}}return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x5ada85,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x106')]=function(_0x338f99){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x107'),_0x338f99[_0xc3f7('0xac')]));return this['channel'][_0xc3f7('0xb1')](_0xc3f7('0x106'));};AGIVertices['prototype'][_0xc3f7('0x108')]=function(_0x1aed97){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x109'),_0x1aed97[_0xc3f7('0xac')]));var _0x5ecd13='';if(_0x1aed97[_0xc3f7('0x10a')]){if(!this[_0xc3f7('0x88')](_0x1aed97[_0xc3f7('0x10a')])){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x1aed97,_0xc3f7('0x10b'));}else{var _0x38c750=parseInt(_0x1aed97['trunk_id'],0xa);if(isNaN(_0x38c750)){_0x5ecd13=_0x1aed97[_0xc3f7('0x10a')];}else{_0x5ecd13=this[_0xc3f7('0x1f')][_0xc3f7('0x76')](this,_0x1aed97[_0xc3f7('0x10a')]);if(!_0x5ecd13){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x1aed97,_0xc3f7('0x10c'));}}}}else if(_0x1aed97[_0xc3f7('0x10d')]){_0x5ecd13=_0x1aed97[_0xc3f7('0x10d')];}else{return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x1aed97,_0xc3f7('0x10b'));}var _0x58b66b=this['channel'][_0xc3f7('0x59')](_0xc3f7('0xe5'),[util[_0xc3f7('0x2a')](_0xc3f7('0x10e'),_0x5ecd13,_0x1aed97[_0xc3f7('0x4a')]),_0x1aed97[_0xc3f7('0x6a')],_0x1aed97[_0xc3f7('0xe7')],_0x1aed97['url']]);if(_0x58b66b['result']===-0x1){return _0x58b66b;}return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0xe8'),'DIAL'));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x10f')]=function(_0xea84b0){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x110'),_0xea84b0[_0xc3f7('0xac')]));return this['channel'][_0xc3f7('0xb1')](_0xc3f7('0x10f'));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0xf')]=function(_0x4bba3b){logger[_0xc3f7('0x30')](util['format']('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x4bba3b[_0xc3f7('0xac')]));if(_0x4bba3b[_0xc3f7('0xa9')]===0x0){return this[_0xc3f7('0xa8')](_0x4bba3b);}_0x4bba3b['retry']-=0x1;if(!this[_0xc3f7('0x88')](_0x4bba3b['file_id'])){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x4bba3b,_0xc3f7('0x111'));}var _0x280757=this[_0xc3f7('0x20')][_0xc3f7('0x76')](this,_0x4bba3b[_0xc3f7('0x112')]);if(!_0x280757){return this['channel'][_0xc3f7('0x2e')](_0x4bba3b,_0xc3f7('0x113'));}if(!this[_0xc3f7('0x88')](_0x4bba3b[_0xc3f7('0xda')])){return this['channel'][_0xc3f7('0x2e')](_0xc3f7('0xdb'));}var _0x276856=this['channel'][_0xc3f7('0x114')](_0x280757,_0x4bba3b['response'],_0x4bba3b[_0xc3f7('0x115')]);var _0xf58e29=_0x276856[_0xc3f7('0xa5')]?_0x276856[_0xc3f7('0xa5')]['toString']():'';logger[_0xc3f7('0x30')](_0xc3f7('0x116'),JSON[_0xc3f7('0x79')](_0x276856));if(_0x276856[_0xc3f7('0xa5')]===-0x1){this[_0xc3f7('0x38')][_0xc3f7('0x76')](this,_0x4bba3b,_0xf58e29);return _0x276856;}else if(_0x276856[_0xc3f7('0xa7')]===_0xc3f7('0x6a')){_0x276856[_0xc3f7('0xa5')]=_0xf58e29[_0xc3f7('0x9e')]>=parseInt(_0x4bba3b['mindigit'])?'x':'i';}else{_0x276856[_0xc3f7('0xa5')]=_0xf58e29[_0xc3f7('0x9e')]>=parseInt(_0x4bba3b[_0xc3f7('0x117')])&&_0xf58e29[_0xc3f7('0x9e')]<=parseInt(_0x4bba3b['maxdigit'])?'x':'i';}var _0xda55b2=this['getVariable']['sync'](this,_0x4bba3b[_0xc3f7('0xda')]);if(!_0xda55b2){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x4bba3b,_0xc3f7('0xdc'));}this[_0xc3f7('0x10')][_0xc3f7('0xa2')](_0xda55b2,_0xf58e29);if(this[_0xc3f7('0x88')](_0x4bba3b[_0xc3f7('0x118')])){var _0x2f6df1=parseInt(_0x4bba3b[_0xc3f7('0x118')],0xa);var _0x2128a4=rs['generate']({'charset':'*','length':_0x2f6df1});var _0x4b9d27=_0xf58e29[_0xc3f7('0x9e')];if(_0x4b9d27>0x0){if(_0x4b9d27>_0x2f6df1){this[_0xc3f7('0x38')][_0xc3f7('0x76')](this,_0x4bba3b,_0x4bba3b[_0xc3f7('0x119')]===_0xc3f7('0x11a')?_0x2128a4+_0xf58e29[_0xc3f7('0x11b')](_0x2f6df1):_0xf58e29[_0xc3f7('0x11b')](0x0,_0x4b9d27-_0x2f6df1)+_0x2128a4);}else{this[_0xc3f7('0x38')][_0xc3f7('0x76')](this,_0x4bba3b,rs[_0xc3f7('0x11c')]({'charset':'*','length':_0x4b9d27}));}}else{this['createSquareDetailsReport']['sync'](this,_0x4bba3b,'');}}else{this[_0xc3f7('0x38')][_0xc3f7('0x76')](this,_0x4bba3b,_0xf58e29);}return _0x276856;};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x11d')]=function(_0x274b51){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')]('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x274b51[_0xc3f7('0xac')]));return this[_0xc3f7('0xf')](_0x274b51);};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x11e')]=function(_0x2acca5){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x11f'),_0x2acca5[_0xc3f7('0xac')]));this[_0xc3f7('0x38')][_0xc3f7('0x76')](this,_0x2acca5,_0x2acca5[_0xc3f7('0x120')]);return this['channel'][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x121'),_0x2acca5['goalname']));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x122')]=function(_0x446625){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x123'),_0x446625[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x446625[_0xc3f7('0x8b')])||!this['isConfigured'](_0x446625[_0xc3f7('0x8c')])){return this['channel'][_0xc3f7('0xb1')](_0xc3f7('0x124'));}if(!this[_0xc3f7('0x88')](_0x446625['text'])){return this[_0xc3f7('0x10')]['noop'](_0xc3f7('0xad'));}this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0x125'),_0x446625[_0xc3f7('0x5f')]));var _0x13f64b=this['awsPolly'][_0xc3f7('0x76')](this,_0x446625);if(_0x13f64b){this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x126'),_0x13f64b));var _0x4fce18=this[_0xc3f7('0x10')][_0xc3f7('0x104')](_0x13f64b);try{fs[_0xc3f7('0x127')](_0x13f64b+_0xc3f7('0x105'));}catch(_0x28da00){logger[_0xc3f7('0x2e')](_0x28da00);}return _0x4fce18;}return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x446625,_0xc3f7('0x128'));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x129')]=function(_0x599bc3){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x12a'),_0x599bc3[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x599bc3[_0xc3f7('0x8b')])||!this['isConfigured'](_0x599bc3[_0xc3f7('0x8c')])){return this['channel'][_0xc3f7('0xb1')](_0xc3f7('0x124'));}if(!this[_0xc3f7('0x88')](_0x599bc3[_0xc3f7('0x93')])){return this['channel'][_0xc3f7('0xb1')](_0xc3f7('0x12b'));}if(!this[_0xc3f7('0x88')](_0x599bc3[_0xc3f7('0x5f')])){return this['channel'][_0xc3f7('0xb1')](_0xc3f7('0xad'));}this[_0xc3f7('0x10')][_0xc3f7('0xe9')]=!![];this[_0xc3f7('0x38')](_0x599bc3);this[_0xc3f7('0x43')](_0x599bc3[_0xc3f7('0x5f')],'in','','');this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')]('Trying\x20Amazon\x20Lex:\x20%s',_0x599bc3[_0xc3f7('0x5f')]));var _0x2976e0=this[_0xc3f7('0x91')][_0xc3f7('0x76')](this,_0x599bc3);if(_0x2976e0){for(var _0x3f30ad in _0x2976e0){if(_0x2976e0[_0xc3f7('0x9b')](_0x3f30ad)&&_[_0xc3f7('0x9f')](_0x2976e0[_0x3f30ad])){this[_0xc3f7('0x10')][_0xc3f7('0xa2')](util[_0xc3f7('0x2a')](_0xc3f7('0x12c'),_0x3f30ad['toUpperCase']()),_0x2976e0[_0x3f30ad]);}}if(_[_0xc3f7('0x46')](_0x2976e0[_0xc3f7('0x7b')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this['createSquareMessage'](_0x2976e0[_0xc3f7('0x7b')],'out','amazonlex','');return this['channel'][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')]('Amazon\x20Lex\x20Result\x20%s',_0x2976e0[_0xc3f7('0x7b')]));}}return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x599bc3,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x12d')]=function(_0x1ef326){logger['info'](util[_0xc3f7('0x2a')](_0xc3f7('0x12e'),_0x1ef326[_0xc3f7('0xac')],_0x1ef326[_0xc3f7('0x6a')]));if(!this[_0xc3f7('0x88')](_0x1ef326[_0xc3f7('0x7e')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0x12f'));}var _0x1046a8='wav';var _0x12b54a=util[_0xc3f7('0x2a')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x5d1686=util[_0xc3f7('0x2a')](_0xc3f7('0xa1'),_0x12b54a,_0x1046a8);var _0x306c42=!![];if(_0x1ef326['beep']==='NOBEEP'){_0x306c42=![];}var _0x47a691=this['channel'][_0xc3f7('0x130')](_0x12b54a,_0x1046a8,_0x1ef326['intKey'],_0x1ef326[_0xc3f7('0x6a')],undefined,_0x306c42);if(_0x47a691[_0xc3f7('0xa5')]!==-0x1){this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x131'),_0x5d1686));var _0x13d4d1=this[_0xc3f7('0x94')][_0xc3f7('0x76')](this,_0x1ef326,_0x5d1686);if(_0x13d4d1){for(var _0x9648e in _0x13d4d1){if(_0x13d4d1[_0xc3f7('0x9b')](_0x9648e)){this[_0xc3f7('0x10')][_0xc3f7('0xa2')](util[_0xc3f7('0x2a')]('GOOGLE_ASR_%s',_0x9648e['toUpperCase']()),_0x13d4d1[_0x9648e]);}}return this['channel']['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0x132'),JSON[_0xc3f7('0x79')](_0x13d4d1)));}}return _0x47a691;};AGIVertices['prototype'][_0xc3f7('0x133')]=function(_0x47385e){logger['info'](util['format']('Enter\x20in\x20TILDEASR\x20(%s)\x20block',_0x47385e[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x47385e[_0xc3f7('0x134')])){return this[_0xc3f7('0x10')]['noop']('no\x20appid\x20configured');}if(!this[_0xc3f7('0x88')](_0x47385e[_0xc3f7('0x135')])){return this['channel'][_0xc3f7('0xb1')](_0xc3f7('0x136'));}var _0x469f6e=_0xc3f7('0x137');var _0x7dc173=util[_0xc3f7('0x2a')](_0xc3f7('0x138'),FILES_PATH,rs[_0xc3f7('0x11c')](0x4));var _0x2b5395=util[_0xc3f7('0x2a')]('%s.%s',_0x7dc173,_0x469f6e);var _0x34fc7c=!![];if(_0x47385e[_0xc3f7('0x139')]===_0xc3f7('0x13a')){_0x34fc7c=![];}var _0x2121b4=this[_0xc3f7('0x10')][_0xc3f7('0x130')](_0x7dc173,_0x469f6e,_0x47385e[_0xc3f7('0x13b')],_0x47385e[_0xc3f7('0x6a')],undefined,_0x34fc7c);if(_0x2121b4[_0xc3f7('0xa5')]!==-0x1){this['channel'][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x13c'),_0x2b5395));var _0x4aede2=this[_0xc3f7('0x96')][_0xc3f7('0x76')](this,_0x47385e,_0x2b5395);if(_0x4aede2){for(var _0x25fd91 in _0x4aede2){if(_0x4aede2[_0xc3f7('0x9b')](_0x25fd91)){this['channel'][_0xc3f7('0xa2')](util['format']('TILDE_ASR_%s',_0x25fd91[_0xc3f7('0x6f')]()),_0x4aede2[_0x25fd91]);}}return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x13d'),JSON[_0xc3f7('0x79')](_0x4aede2)));}}return _0x2121b4;};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x13e')]=function(_0x3f0de2){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x13f'),_0x3f0de2[_0xc3f7('0xac')]));return this[_0xc3f7('0x10')][_0xc3f7('0x140')](_0x3f0de2[_0xc3f7('0x3f')],_0x3f0de2[_0xc3f7('0x141')],_0x3f0de2[_0xc3f7('0x142')]);};AGIVertices[_0xc3f7('0x12')]['gotoif']=function(_0x134c3f){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x143'),_0x134c3f[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x134c3f[_0xc3f7('0x144')])){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x134c3f,_0xc3f7('0x145'));}try{var _0x1ddcac=eval(_0x134c3f[_0xc3f7('0x144')])?_0xc3f7('0x146'):_0xc3f7('0x147');this['channel'][_0xc3f7('0xb1')](util['format'](_0xc3f7('0x148'),_0x134c3f[_0xc3f7('0x144')],_0x1ddcac));return{'code':0xc8,'result':_0x1ddcac};}catch(_0xbf5964){return{'code':0xc8,'result':_0xc3f7('0x147')};}};AGIVertices['prototype'][_0xc3f7('0x149')]=function(_0x1c818e){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x14a'),_0x1c818e[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x1c818e[_0xc3f7('0x14b')])){return this['channel'][_0xc3f7('0x2e')](_0x1c818e,_0xc3f7('0x14c'));}var _0x2d88ea=this[_0xc3f7('0x25')][_0xc3f7('0x76')](this,_0x1c818e['interval_id']);if(!_0x2d88ea){return this[_0xc3f7('0x10')]['error'](_0x1c818e,_0xc3f7('0x14d'));}for(var _0x383f48=0x0;_0x383f48<_0x2d88ea[_0xc3f7('0x9e')];_0x383f48+=0x1){var _0x572c09=this['channel'][_0xc3f7('0x13')](util[_0xc3f7('0x2a')](_0xc3f7('0x14e'),_0x2d88ea[_0x383f48]));if(_0x572c09[_0xc3f7('0xa5')]===-0x1){return _0x572c09;}logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')]('IFTIME\x20%s\x20%s',_0x2d88ea[_0x383f48],_0x572c09[_0xc3f7('0xa7')]));if(_0x572c09['extra']===_0xc3f7('0x146')){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x14f'),_0x2d88ea[_0x383f48],_0xc3f7('0x146')));this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x14f'),_0x2d88ea[_0x383f48],_0xc3f7('0x146')));return{'code':0xc8,'result':_0xc3f7('0x146')};}else{logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x14f'),_0x2d88ea[_0x383f48],_0xc3f7('0x147')));this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x14f'),_0x2d88ea[_0x383f48],'false'));}}return{'code':0xc8,'result':_0xc3f7('0x147')};};AGIVertices['prototype'][_0xc3f7('0x150')]=function(_0x1360ef){logger['info'](util[_0xc3f7('0x2a')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x1360ef[_0xc3f7('0xac')]));return this[_0xc3f7('0x10')][_0xc3f7('0x150')]();};AGIVertices['prototype'][_0xc3f7('0x151')]=function(_0x261f0a){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')]('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x261f0a[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x261f0a[_0xc3f7('0x7e')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')]('no\x20key\x20configured');}var _0x2dc43c=_0xc3f7('0x137');var _0x337892=util[_0xc3f7('0x2a')](_0xc3f7('0x138'),FILES_PATH,rs[_0xc3f7('0x11c')](0x4));var _0x40e01b=util[_0xc3f7('0x2a')](_0xc3f7('0xa1'),_0x337892,_0x2dc43c);var _0x5f0d96=!![];if(_0x261f0a[_0xc3f7('0x139')]===_0xc3f7('0x13a')){_0x5f0d96=![];}var _0x127b5f=this[_0xc3f7('0x10')][_0xc3f7('0x130')](_0x337892,_0x2dc43c,_0x261f0a[_0xc3f7('0x13b')],_0x261f0a[_0xc3f7('0x6a')],undefined,_0x5f0d96);if(_0x127b5f['result']!==-0x1){this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util['format'](_0xc3f7('0x152'),_0x40e01b));var _0x201d17=this['ispeechASR'][_0xc3f7('0x76')](this,_0x261f0a,_0x40e01b);if(_0x201d17){for(var _0x242d66 in _0x201d17){if(_0x201d17['hasOwnProperty'](_0x242d66)){this[_0xc3f7('0x10')]['setVariable'](util[_0xc3f7('0x2a')]('ISPEECH_ASR_%s',_0x242d66[_0xc3f7('0x6f')]()),_0x201d17[_0x242d66]);}}return this['channel'][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')]('IspeechASR\x20Result\x20%s',JSON[_0xc3f7('0x79')](_0x201d17)));}}return _0x127b5f;};AGIVertices[_0xc3f7('0x12')]['ispeechtts']=function(_0x5f3cd9){logger['info'](util[_0xc3f7('0x2a')](_0xc3f7('0x153'),_0x5f3cd9[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x5f3cd9['key'])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0x12f'));}if(!this[_0xc3f7('0x88')](_0x5f3cd9[_0xc3f7('0x5f')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0xad'));}this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x154'),_0x5f3cd9['text']));var _0x13c933=this[_0xc3f7('0x85')][_0xc3f7('0x76')](this,_0x5f3cd9);if(_0x13c933){this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x152'),_0x13c933));var _0x414a0f=this[_0xc3f7('0x10')]['streamFile'](_0x13c933,_0x5f3cd9[_0xc3f7('0x13b')]);try{fs[_0xc3f7('0x127')](_0x13c933+'.wav');}catch(_0x2a6aaf){logger['error'](_0x2a6aaf);}return _0x414a0f;}return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x5f3cd9,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x155')]=function(_0x2d333c){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x156'),_0x2d333c[_0xc3f7('0xac')]));if(!this['isConfigured'](_0x2d333c[_0xc3f7('0x157')])){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x2d333c,_0xc3f7('0x158'));}logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x159'),this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x2d333c['findBy']));var _0x2ff32f=this['agentLogin']['sync'](this,_0x2d333c['findBy']);if(_0x2ff32f){logger['info'](util[_0xc3f7('0x2a')](_0xc3f7('0x15a'),this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x2d333c[_0xc3f7('0x157')]));this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0x15a'),this['channel'][_0xc3f7('0x3c')],_0x2d333c['findBy']));return{'code':0xc8,'result':_0xc3f7('0x15b')};}else{logger['info'](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x2d333c[_0xc3f7('0x157')]));this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util['format'](_0xc3f7('0x15c'),this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x2d333c[_0xc3f7('0x157')]));return{'code':0xc8,'result':_0xc3f7('0x15d')};}};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x15e')]=function(_0x53dfb4){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x15f'),_0x53dfb4[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x53dfb4['findBy'])){return this[_0xc3f7('0x10')]['error'](_0x53dfb4,_0xc3f7('0x158'));}logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x159'),this[_0xc3f7('0x10')]['callerid'],_0x53dfb4[_0xc3f7('0x157')]));var _0x2369bd=this[_0xc3f7('0x54')][_0xc3f7('0x76')](this,_0x53dfb4[_0xc3f7('0x157')]);if(_0x2369bd){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x15a'),this[_0xc3f7('0x10')]['callerid'],_0x53dfb4['findBy']));this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x15a'),this[_0xc3f7('0x10')]['callerid'],_0x53dfb4[_0xc3f7('0x157')]));return{'code':0xc8,'result':_0xc3f7('0x15b')};}else{logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x15c'),this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x53dfb4[_0xc3f7('0x157')]));this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0x15c'),this['channel'][_0xc3f7('0x3c')],_0x53dfb4['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x160')]=function(_0x12f4a7){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x161'),_0x12f4a7[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x12f4a7[_0xc3f7('0x162')])){return this['channel'][_0xc3f7('0x2e')](_0x12f4a7,_0xc3f7('0x163'));}this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util['format']('math\x20%s',_0x12f4a7[_0xc3f7('0x162')]));var _0x29a489=eval(_0x12f4a7[_0xc3f7('0x162')]);if(!this[_0xc3f7('0x88')](_0x12f4a7[_0xc3f7('0xda')])){return this['channel']['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x1bacd9=this[_0xc3f7('0x13')][_0xc3f7('0x76')](this,_0x12f4a7[_0xc3f7('0xda')]);if(!_0x1bacd9){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x12f4a7,_0xc3f7('0xdc'));}if(_['isArray'](_0x29a489)){var _0x34ef08=this;_0x29a489[_0xc3f7('0xde')](function(_0x580cc0,_0x40ab22){_0x34ef08['channel'][_0xc3f7('0xa2')](util[_0xc3f7('0x2a')](_0xc3f7('0x164'),_0x1bacd9,_0x40ab22),_0x580cc0);});return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x165'),_0x1bacd9));}else{return this[_0xc3f7('0x10')][_0xc3f7('0xa2')](_0x1bacd9,_0x29a489);}};AGIVertices[_0xc3f7('0x12')]['menu']=function(_0xd3def8){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x166'),_0xd3def8['label']));if(_0xd3def8[_0xc3f7('0xa9')]===0x0){return this['maxRetry'](_0xd3def8);}_0xd3def8[_0xc3f7('0xa9')]-=0x1;if(!this[_0xc3f7('0x88')](_0xd3def8[_0xc3f7('0x112')])){return this['channel'][_0xc3f7('0x2e')](_0xd3def8,_0xc3f7('0x111'));}var _0x2bc074=this[_0xc3f7('0x20')]['sync'](this,_0xd3def8[_0xc3f7('0x112')]);if(!_0x2bc074){return this[_0xc3f7('0x10')]['error'](_0xd3def8,_0xc3f7('0x113'));}var _0x1ed2d2=this[_0xc3f7('0x10')]['getData'](_0x2bc074,_0xd3def8['response'],_0xd3def8[_0xc3f7('0x167')]);var _0x547fbf=_0x1ed2d2['result'];if(_0x1ed2d2['result']===-0x1){this[_0xc3f7('0x38')]['sync'](this,_0xd3def8,'-1');return _0x1ed2d2;}else if(_0x1ed2d2[_0xc3f7('0xa7')]===_0xc3f7('0x6a')){_0x1ed2d2[_0xc3f7('0xa5')]=_0x1ed2d2[_0xc3f7('0xa5')][_0xc3f7('0x9e')]>0x0?_0x1ed2d2[_0xc3f7('0xa5')]:'t';}else if(_[_0xc3f7('0x45')](_0x1ed2d2[_0xc3f7('0xa5')])){_0x1ed2d2[_0xc3f7('0xa5')]='#';_0x547fbf='#';}if(!this['isConfigured'](_0xd3def8[_0xc3f7('0xda')])){this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0xdb'));}else{var _0x524a2a=this['getVariable'][_0xc3f7('0x76')](this,_0xd3def8['variable_id']);if(!_0x524a2a){return this['channel'][_0xc3f7('0x2e')](_0xd3def8,_0xc3f7('0xdc'));}this[_0xc3f7('0x10')][_0xc3f7('0xa2')](_0x524a2a,_0x547fbf);}this[_0xc3f7('0x38')]['sync'](this,_0xd3def8,_0x547fbf);return _0x1ed2d2;};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0xb1')]=function(_0x2f5f51){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x168'),_0x2f5f51[_0xc3f7('0xac')]));return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0x2f5f51[_0xc3f7('0x169')]||_0x2f5f51['label']);};AGIVertices[_0xc3f7('0x12')]['pause']=function(_0x19c5ff){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x16a'),_0x19c5ff[_0xc3f7('0xac')]));if(!this['isConfigured'](_0x19c5ff[_0xc3f7('0x157')])){return this['channel']['error'](_0x19c5ff,_0xc3f7('0x158'));}logger['info'](util[_0xc3f7('0x2a')](_0xc3f7('0x159'),this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x19c5ff[_0xc3f7('0x157')]));var _0x5a7692=this[_0xc3f7('0x16b')]['sync'](this,_0x19c5ff['pause_id']);var _0x2e3c0c=this[_0xc3f7('0x52')]['sync'](this,_0x19c5ff[_0xc3f7('0x157')],_0x5a7692);if(_0x2e3c0c){logger[_0xc3f7('0x30')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x19c5ff[_0xc3f7('0x157')]));this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x15a'),this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x19c5ff[_0xc3f7('0x157')]));return{'code':0xc8,'result':'success'};}else{logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x15c'),this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x19c5ff[_0xc3f7('0x157')]));this['channel'][_0xc3f7('0xb1')](util['format'](_0xc3f7('0x15a'),this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x19c5ff[_0xc3f7('0x157')]));return{'code':0xc8,'result':_0xc3f7('0x15d')};}};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x16c')]=function(_0x5482f1){logger['info'](util[_0xc3f7('0x2a')](_0xc3f7('0x16d'),_0x5482f1[_0xc3f7('0xac')]));if(!this['isConfigured'](_0x5482f1['file_id'])){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x5482f1,_0xc3f7('0x111'));}var _0x1a8113=this['getSound'][_0xc3f7('0x76')](this,_0x5482f1[_0xc3f7('0x112')]);if(!_0x1a8113){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x5482f1,_0xc3f7('0x113'));}var _0x3ab9da=this[_0xc3f7('0x10')][_0xc3f7('0x59')](_0xc3f7('0x16e'),[_0x1a8113,_0x5482f1[_0xc3f7('0xe7')]]);if(_0x3ab9da['result']===-0x1){return _0x3ab9da;}return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util['format'](_0xc3f7('0xc9'),_0xc3f7('0x16e'),_0x1a8113));};AGIVertices[_0xc3f7('0x12')]['queue']=function(_0x10f3da){logger['info'](util[_0xc3f7('0x2a')](_0xc3f7('0x16f'),_0x10f3da[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x10f3da[_0xc3f7('0x170')])){return this['channel'][_0xc3f7('0x2e')](_0x10f3da,_0xc3f7('0x171'));}var _0x204769='';var _0x3edd46=parseInt(_0x10f3da['queue_id'],0xa);if(isNaN(_0x3edd46)){_0x204769=_0x10f3da[_0xc3f7('0x170')];}else{_0x204769=this[_0xc3f7('0x17')]['sync'](this,_0x10f3da[_0xc3f7('0x170')]);if(!_0x204769){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x10f3da,'no\x20queue\x20found');}}var _0x43d086='';if(this[_0xc3f7('0x88')](_0x10f3da[_0xc3f7('0x112')])){var _0x15d301=this[_0xc3f7('0x20')][_0xc3f7('0x76')](this,_0x10f3da[_0xc3f7('0x112')]);if(_0x15d301){_0x43d086=_0x15d301;}}this[_0xc3f7('0x38')][_0xc3f7('0x76')](this,_0x10f3da,_0x204769);if(_0x10f3da[_0xc3f7('0xe7')]['indexOf']('x')<0x0){_0x10f3da[_0xc3f7('0xe7')]+='x';}if(_0x10f3da[_0xc3f7('0xe7')][_0xc3f7('0x172')]('X')<0x0){_0x10f3da[_0xc3f7('0xe7')]+='X';}this[_0xc3f7('0x10')][_0xc3f7('0xa2')](_0xc3f7('0x173'),_0x204769?_0x204769['toLowerCase']():'');var _0x5618dc=this[_0xc3f7('0x10')][_0xc3f7('0x59')](_0xc3f7('0x174'),[_0x204769,_0x10f3da[_0xc3f7('0xe7')],_0x10f3da['url'],_0x43d086,_0x10f3da[_0xc3f7('0x6a')],_0x10f3da[_0xc3f7('0x9')],_0x10f3da[_0xc3f7('0x175')],_0x10f3da[_0xc3f7('0x176')],'',_0x10f3da[_0xc3f7('0x177')]]);if(_0x5618dc[_0xc3f7('0xa5')]===-0x1){return _0x5618dc;}return this['channel']['noop'](util['format'](_0xc3f7('0xc9'),_0xc3f7('0x174'),_0x204769));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x178')]=function(_0x3ff0d4){logger['info'](util[_0xc3f7('0x2a')](_0xc3f7('0x179'),_0x3ff0d4[_0xc3f7('0xac')]));var _0x5ccb05=_0x3ff0d4[_0xc3f7('0x17a')]||_0xc3f7('0x137');var _0x21c0df=util[_0xc3f7('0x2a')](_0xc3f7('0x17b'),this[_0xc3f7('0x10')][_0xc3f7('0x39')],rs[_0xc3f7('0x11c')](0x5));var _0x8532a0=util[_0xc3f7('0x2a')](_0xc3f7('0x17c'),FILES_PATH,_0x21c0df,_0x5ccb05);var _0x4d9c2f=util[_0xc3f7('0x2a')](_0xc3f7('0x138'),FILES_PATH,_0x21c0df);this[_0xc3f7('0x3d')][_0xc3f7('0x76')](this,_0x3ff0d4,_0x21c0df,_0x8532a0);this['channel']['setVariable'](_0xc3f7('0x17d'),_0x21c0df);logger[_0xc3f7('0x30')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x4d9c2f,_0x5ccb05,_0x3ff0d4[_0xc3f7('0x17e')],_0x3ff0d4['timeout']);return this['channel'][_0xc3f7('0x130')](_0x4d9c2f,_0x5ccb05,_0x3ff0d4[_0xc3f7('0x17e')],_0x3ff0d4['timeout'],undefined,!![]);};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x17f')]=function(_0x1ae914){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x180'),_0x1ae914['label']));if(!this[_0xc3f7('0x88')](_0x1ae914[_0xc3f7('0x68')])){return this[_0xc3f7('0x10')]['noop'](_0xc3f7('0x181'));}var _0x2289ee=this[_0xc3f7('0x67')][_0xc3f7('0x76')](this,_0x1ae914);logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x182'),util[_0xc3f7('0x183')](_0x2289ee,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x1ae914['variable_id'])){return this['channel'][_0xc3f7('0xb1')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x53ad92=this[_0xc3f7('0x13')]['sync'](this,_0x1ae914[_0xc3f7('0xda')]);if(!_0x53ad92){return this['channel'][_0xc3f7('0x2e')](_0x1ae914,'no\x20variable\x20found');}this[_0xc3f7('0x10')][_0xc3f7('0xa2')](util[_0xc3f7('0x2a')]('%s_STATUS_CODE',_0x53ad92),_0x2289ee['statusCode']?_0x2289ee[_0xc3f7('0x7a')]:'200');this[_0xc3f7('0x10')][_0xc3f7('0xa2')](util['format'](_0xc3f7('0x184'),_0x53ad92),_0x2289ee[_0xc3f7('0x185')]?_0x2289ee[_0xc3f7('0x185')]:'OK');if(_0x2289ee[_0xc3f7('0x70')]){try{this['saveRestApiResult'](_0x2289ee[_0xc3f7('0x70')],_0x53ad92);}catch(_0x2d457){logger[_0xc3f7('0x2e')](util[_0xc3f7('0x2a')](_0xc3f7('0x186'),_0x53ad92));}}return this['channel'][_0xc3f7('0xb1')](util['format'](_0xc3f7('0x187'),_0x53ad92));};AGIVertices[_0xc3f7('0x12')]['saydigits']=function(_0x51c532){logger['info'](util[_0xc3f7('0x2a')](_0xc3f7('0x188'),_0x51c532[_0xc3f7('0xac')]));return this[_0xc3f7('0x10')]['sayDigits'](_0x51c532[_0xc3f7('0x189')][_0xc3f7('0x5b')](/\s+/g,''),_0x51c532['escape_digits']);};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x18a')]=function(_0x36aeff){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x18b'),_0x36aeff[_0xc3f7('0xac')]));return this[_0xc3f7('0x10')]['sayNumber'](_0x36aeff[_0xc3f7('0x6b')][_0xc3f7('0x5b')](/\s+/g,''),_0x36aeff['escape_digits']);};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x18c')]=function(_0x359482){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x18d'),_0x359482[_0xc3f7('0xac')]));return this[_0xc3f7('0x10')][_0xc3f7('0x18e')](_0x359482[_0xc3f7('0x5f')],_0x359482[_0xc3f7('0x17e')]);};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x18f')]=function(_0x14a1d8){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x14a1d8['label']));if(!this[_0xc3f7('0x88')](_0x14a1d8[_0xc3f7('0x190')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')]('no\x20mail\x20account\x20configured');}var _0xedec27=this[_0xc3f7('0x22')]['sync'](this,_0x14a1d8[_0xc3f7('0x190')]);if(!_0xedec27||!_0xedec27['Smtp']){return this[_0xc3f7('0x10')]['error'](_0x14a1d8,_0xc3f7('0x191'));}var _0x4f2445={'from':util[_0xc3f7('0x2a')](_0xc3f7('0x192'),_0xedec27[_0xc3f7('0x16')],_0xedec27['email']||_0xedec27['Smtp'][_0xc3f7('0x193')]),'to':_0x14a1d8['to']||'','cc':_0x14a1d8['cc']||'','bcc':_0x14a1d8[_0xc3f7('0x194')]||'','subject':_0x14a1d8[_0xc3f7('0x195')],'html':_0x14a1d8['text'],'text':_0x14a1d8['text']};var _0xc223ab={'tls':{'rejectUnauthorized':![]}};if(_0xedec27['Smtp'][_0xc3f7('0x196')]){_0xc223ab[_0xc3f7('0x196')]=_0xedec27[_0xc3f7('0x197')][_0xc3f7('0x196')];}else{_0xc223ab[_0xc3f7('0x198')]=_0xedec27[_0xc3f7('0x197')][_0xc3f7('0x198')];_0xc223ab['port']=_0xedec27['Smtp'][_0xc3f7('0x199')];_0xc223ab['secure']=_0xedec27[_0xc3f7('0x197')][_0xc3f7('0x19a')];}if(_0xedec27[_0xc3f7('0x197')][_0xc3f7('0x19b')]){_0xc223ab['auth']={'user':_0xedec27[_0xc3f7('0x197')][_0xc3f7('0x193')],'pass':_0xedec27[_0xc3f7('0x197')][_0xc3f7('0x19c')]};}if(this[_0xc3f7('0x88')](_0x14a1d8['template_id'])){}logger[_0xc3f7('0xe2')]('sendMail\x20message',JSON[_0xc3f7('0x79')](_0x4f2445));this[_0xc3f7('0x38')]['sync'](this,_0x14a1d8,_0x14a1d8[_0xc3f7('0x190')]);this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')]('Trying\x20SendMail\x20with\x20account\x20%s',_0xedec27[_0xc3f7('0x16')]));this[_0xc3f7('0x23')]['sync'](this,_0xc223ab,_0x4f2445);return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0x19d'));};AGIVertices['prototype'][_0xc3f7('0x19e')]=function(_0x6e453d){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x19f'),_0x6e453d[_0xc3f7('0xac')]));return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0x1a0'));};AGIVertices[_0xc3f7('0x12')]['sendSMS']=function(_0x49eda5){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x1a1'),_0x49eda5[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x49eda5[_0xc3f7('0x1a2')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0x1a3'));}var _0x14adff=this[_0xc3f7('0x35')][_0xc3f7('0x76')](this,_0x49eda5[_0xc3f7('0x1a2')]);if(!_0x14adff){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x49eda5,'no\x20sms\x20account\x20found');}var _0x4284e9={'body':_0x49eda5[_0xc3f7('0x1a4')],'phone':_0x49eda5['to']||'','SmsAccountId':_0x14adff['id']};logger[_0xc3f7('0xe2')](_0xc3f7('0x1a5'),JSON[_0xc3f7('0x79')](_0x4284e9));this[_0xc3f7('0x38')][_0xc3f7('0x76')](this,_0x49eda5,_0x49eda5[_0xc3f7('0x1a2')]);this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x1a6'),_0x14adff['name']));this[_0xc3f7('0x37')]['sync'](this,_0x4284e9);return this['channel'][_0xc3f7('0xb1')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x1a7')]=function(_0x1e0fd0){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x1a8'),_0x1e0fd0[_0xc3f7('0xac')]));if(!this['isConfigured'](_0x1e0fd0[_0xc3f7('0xda')])){return this[_0xc3f7('0x10')]['error'](_0x1e0fd0,_0xc3f7('0x1a9'));}var _0x1dcf4e=this[_0xc3f7('0x13')][_0xc3f7('0x76')](this,_0x1e0fd0[_0xc3f7('0xda')]);if(!_0x1dcf4e){return this[_0xc3f7('0x10')]['error'](_0x1e0fd0,_0xc3f7('0xdc'));}return this[_0xc3f7('0x10')][_0xc3f7('0xa2')](_0x1dcf4e,_0x1e0fd0[_0xc3f7('0x1aa')]);};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x1ab')]=function(_0x4587d3){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x1ac'),_0x4587d3[_0xc3f7('0xac')]));this[_0xc3f7('0x10')][_0xc3f7('0xb1')]('START\x20CALLY\x20SQUARE');if(_0x4587d3[_0xc3f7('0xbd')]===_0xc3f7('0x1ad')){this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0x1ae'));return this[_0xc3f7('0x10')][_0xc3f7('0xbd')]();}return this['channel'][_0xc3f7('0xb1')](_0xc3f7('0x1af'));};AGIVertices[_0xc3f7('0x12')]['subproject']=function(_0x3f2984){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x1b0'),_0x3f2984[_0xc3f7('0xac')]));if(!this[_0xc3f7('0x88')](_0x3f2984[_0xc3f7('0x1b1')])){return this['channel'][_0xc3f7('0x2e')](_0x3f2984,'no\x20subproject\x20selected');}var _0x3bf8a5=this[_0xc3f7('0x1a')][_0xc3f7('0x76')](this,_0x3f2984[_0xc3f7('0x1b1')]);if(!this[_0xc3f7('0x88')](_0x3bf8a5)){return this[_0xc3f7('0x10')]['error'](_0x3f2984,util['format']('no\x20subproject\x20found\x20with\x20id\x20%d',_0x3f2984[_0xc3f7('0x1b1')]));}if(_0x3bf8a5===this[_0xc3f7('0x10')][_0xc3f7('0x3b')]){return this['channel'][_0xc3f7('0x2e')](_0x3f2984,_0xc3f7('0x1b2'));}this[_0xc3f7('0x38')][_0xc3f7('0x76')](this,_0x3f2984,_0x3bf8a5);var _0x5cbcae=this[_0xc3f7('0x10')][_0xc3f7('0x59')](_0xc3f7('0x1b3'),util['format'](_0xc3f7('0x1b4'),config['agi'][_0xc3f7('0x198')]||_0xc3f7('0x1b5'),_0x3bf8a5,this[_0xc3f7('0x10')]['arg_1']));if(_0x5cbcae[_0xc3f7('0xa5')]===-0x1){return _0x5cbcae;}return this['channel'][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')]('Executed\x20command\x20%s\x20%s',_0xc3f7('0x1b3'),_0x3bf8a5));};AGIVertices[_0xc3f7('0x12')]['system']=function(_0x58d1f8){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')]('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x58d1f8[_0xc3f7('0xac')]));var _0xfc99e=this[_0xc3f7('0x58')][_0xc3f7('0x76')](this,_0x58d1f8[_0xc3f7('0x1b6')]);this['createSquareDetailsReport'][_0xc3f7('0x76')](this,_0x58d1f8,_0x58d1f8['command']);if(this['isConfigured'](_0x58d1f8[_0xc3f7('0xda')])){var _0x3492a8=this[_0xc3f7('0x13')]['sync'](this,_0x58d1f8['variable_id']);if(_0x3492a8){this[_0xc3f7('0x10')]['setVariable'](_0x3492a8,_0xfc99e);return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x58d1f8[_0xc3f7('0x1b6')],_0x3492a8));}}return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x1b7'),_0x58d1f8['command']));};AGIVertices['prototype'][_0xc3f7('0x1b8')]=function(_0x3a1c46){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x1b9'),_0x3a1c46[_0xc3f7('0xac')]));_0x3a1c46[_0xc3f7('0x5f')]=_0x3a1c46['text'][_0xc3f7('0x5b')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xc3f7('0x88')](_0x3a1c46[_0xc3f7('0x5d')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0x1ba'));}if(!this[_0xc3f7('0x88')](_0x3a1c46[_0xc3f7('0x5f')])){return this['channel']['noop']('no\x20text\x20configured');}this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x1bb'),_0x3a1c46[_0xc3f7('0x5f')]));var _0x45c661=this['googleCloudTTS'][_0xc3f7('0x76')](this,_0x3a1c46);if(_0x45c661){this[_0xc3f7('0x10')]['noop'](util[_0xc3f7('0x2a')](_0xc3f7('0x1bc'),_0x45c661));var _0xf7feb=this['channel'][_0xc3f7('0x104')](_0x45c661);try{fs['unlink'](_0x45c661+'.wav');}catch(_0x274585){logger[_0xc3f7('0x2e')](_0x274585);}return _0xf7feb;}return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x3a1c46,_0xc3f7('0x1bd'));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x1be')]=function(_0x12ed04){logger['info'](util[_0xc3f7('0x2a')](_0xc3f7('0x1bf'),_0x12ed04['label']));_0x12ed04[_0xc3f7('0x5f')]=_0x12ed04[_0xc3f7('0x5f')][_0xc3f7('0x5b')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xc3f7('0x88')](_0x12ed04[_0xc3f7('0x5f')])){return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](_0xc3f7('0xad'));}this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util[_0xc3f7('0x2a')](_0xc3f7('0x1c0'),_0x12ed04[_0xc3f7('0x5f')]));var _0x43ddc3=this['googleTTS'][_0xc3f7('0x76')](this,_0x12ed04);if(_0x43ddc3){this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util['format'](_0xc3f7('0x1c1'),_0x43ddc3));var _0x181f9=this['channel'][_0xc3f7('0x104')](_0x43ddc3);try{fs[_0xc3f7('0x127')](_0x43ddc3+_0xc3f7('0x105'));}catch(_0x3c0b40){logger['error'](_0x3c0b40);}return _0x181f9;}return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x12ed04,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x1c2')]=function(_0x9b12c3){logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x1c3'),_0x9b12c3['label']));if(!this[_0xc3f7('0x88')](_0x9b12c3[_0xc3f7('0x157')])){return this[_0xc3f7('0x10')]['error'](_0x9b12c3,_0xc3f7('0x158'));}logger['info'](util[_0xc3f7('0x2a')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x9b12c3[_0xc3f7('0x157')]));var _0x12d005=this[_0xc3f7('0x53')][_0xc3f7('0x76')](this,_0x9b12c3[_0xc3f7('0x157')]);if(_0x12d005){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x15a'),this[_0xc3f7('0x10')]['callerid'],_0x9b12c3[_0xc3f7('0x157')]));this['channel'][_0xc3f7('0xb1')](util['format'](_0xc3f7('0x15a'),this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x9b12c3[_0xc3f7('0x157')]));return{'code':0xc8,'result':_0xc3f7('0x15b')};}else{logger[_0xc3f7('0x30')](util['format'](_0xc3f7('0x15c'),this['channel']['callerid'],_0x9b12c3[_0xc3f7('0x157')]));this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util['format'](_0xc3f7('0x15c'),this[_0xc3f7('0x10')][_0xc3f7('0x3c')],_0x9b12c3[_0xc3f7('0x157')]));return{'code':0xc8,'result':_0xc3f7('0x15d')};}};AGIVertices[_0xc3f7('0x12')]['voicemail']=function(_0x507b86){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')](_0xc3f7('0x1c4'),_0x507b86[_0xc3f7('0xac')]));var _0x3568e4=this[_0xc3f7('0x10')][_0xc3f7('0x59')](_0xc3f7('0x1c5'),[_0x507b86['mailbox'],_0x507b86[_0xc3f7('0x7d')]]);if(_0x3568e4['result']===-0x1){return _0x3568e4;}return this[_0xc3f7('0x10')][_0xc3f7('0xb1')](util['format'](_0xc3f7('0xc9'),_0xc3f7('0x1c5'),_0x507b86['mailbox']));};AGIVertices[_0xc3f7('0x12')][_0xc3f7('0x1c6')]=function(_0x5de28f){logger[_0xc3f7('0x30')](util[_0xc3f7('0x2a')]('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x5de28f['label']));if(!this[_0xc3f7('0x88')](_0x5de28f['variable_id'])){return this['channel']['error'](_0x5de28f,_0xc3f7('0x1a9'));}var _0x52e566=this[_0xc3f7('0x13')][_0xc3f7('0x76')](this,_0x5de28f[_0xc3f7('0xda')]);if(!_0x52e566){return this[_0xc3f7('0x10')][_0xc3f7('0x2e')](_0x5de28f,_0xc3f7('0xdc'));}var _0x2c8c87=this[_0xc3f7('0x10')][_0xc3f7('0x13')](_0x52e566);return{'code':0xc8,'result':_0x2c8c87[_0xc3f7('0xa7')]?_0x2c8c87['extra']:'-'};};String['prototype'][_0xc3f7('0xa4')]=function(_0x4a893b,_0x2c4513){return this['split'](_0x4a893b)['join'](_0x2c4513);};module[_0xc3f7('0x1c7')]=AGIVertices;
\ No newline at end of file
+var _0x26b2=['ndassistant_url','SESTEK_NDA_%s','sesteknda','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','trunk_id','no\x20trunk\x20selected','trunk_name','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','maxRetry','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','GOAL\x20%s','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','amazonlex','Amazon\x20Lex\x20is\x20unreachable','googleasr','wav','%s/recordings/%s','NOBEEP','recordFile','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','intKey','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME\x20%s\x20%s','true','false','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','beep','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','playback','PLAYBACK','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','%s/recordings/%s.%s','escape_digits','restapi','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','sayDigits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','Smtp','user','bcc','service','host','port','secure','authentication','auth','template_id','sendMail\x20message','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','getSquareProject','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','system','shellCommand','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','googleCloudTTS','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','agentUnpause','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','replaceAll','join','path','util','lodash','odbc','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment','./scripts','rawHeaders','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueue','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','open','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','query','info','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','extension','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','callback_','lastName','isNil','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','error','agentLogout','internal','%s/%s@from-sip/n','LOCAL','agentLogin','exec','trim','replace','apiKey','google_cloud_tts_text_type','text','languageCode','ssmlGender','MALE','MP3','googleTTS','google_tts_language','restAPI','url','method','timeout','number','includes','POST','body','rawBody','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','computedVariables','uri','render','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','speed','ispeechASR','ispeech_asr_language','en-US','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_voice','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clone','hasOwnProperty','isString','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','length','saveRestApiResult','setVariable','%s.%s','stringify','split','extra','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','sync','retry','mrcpsynth','noop','no\x20text\x20configured','MRCPSynth','result','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','getAndSetVariable','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','Wait\x20%s\x20seconds\x20before\x20answer','wait','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','no\x20user\x20found','SIP/%s','opts','Executed\x20command\x20%s','DIAL','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','DIALOGFLOW_%s','toUpperCase','speech','out','dialogflowV2','no\x20project_id\x20configured','client_email','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','no\x20password\x20configured'];(function(_0xbf09ab,_0x251a19){var _0x2a9aef=function(_0x22d793){while(--_0x22d793){_0xbf09ab['push'](_0xbf09ab['shift']());}};_0x2a9aef(++_0x251a19);}(_0x26b2,0xc5));var _0x226b=function(_0x39871f,_0x3db2b8){_0x39871f=_0x39871f-0x0;var _0x1e0996=_0x26b2[_0x39871f];return _0x1e0996;};'use strict';var fs=require('fs');var path=require(_0x226b('0x0'));var util=require(_0x226b('0x1'));var _=require(_0x226b('0x2'));var sh=require('shelljs');var odbc=require(_0x226b('0x3'))();var rs=require(_0x226b('0x4'));var moment=require(_0x226b('0x5'));var Mustache=require(_0x226b('0x6'));var rp=require(_0x226b('0x7'));var logger=require(_0x226b('0x8'))(_0x226b('0x9'));var config=require(_0x226b('0xa'));var scripts=require(_0x226b('0xb'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0x226b('0xc'),'rawBody'];var verticesWithRetry=[_0x226b('0xd'),_0x226b('0xe'),_0x226b('0xf')];var AGIVertices=function(_0x596034,_0x51e258,_0x1fea7e){this[_0x226b('0x10')]=_0x596034;this[_0x226b('0x11')]=_0x51e258;this[_0x226b('0x12')]=_0x1fea7e;};AGIVertices[_0x226b('0x13')][_0x226b('0x14')]=function(_0x534a58,_0x3927c2){this['rpc'][_0x226b('0x15')](_0x534a58)[_0x226b('0x16')](function(_0x150a38){_0x3927c2(null,_0x150a38?_0x150a38[_0x226b('0x17')]:![]);})[_0x226b('0x18')](function(_0x3781a8){_0x3927c2(_0x3781a8);});};AGIVertices['prototype'][_0x226b('0x19')]=function(_0x443a7f,_0x3a5fa6){this[_0x226b('0x11')]['getVoiceQueueById'](_0x443a7f)[_0x226b('0x16')](function(_0x197d8e){_0x3a5fa6(null,_0x197d8e?_0x197d8e[_0x226b('0x17')]:![]);})[_0x226b('0x18')](function(_0x2a93f){_0x3a5fa6(_0x2a93f);});};AGIVertices[_0x226b('0x13')]['getSquareProject']=function(_0x3c1e31,_0xadda16){this[_0x226b('0x11')][_0x226b('0x1a')](_0x3c1e31)[_0x226b('0x16')](function(_0x407c9c){_0xadda16(null,_0x407c9c?_0x407c9c[_0x226b('0x17')]:![]);})['catch'](function(_0x15cb89){_0xadda16(_0x15cb89);});};AGIVertices[_0x226b('0x13')][_0x226b('0x1b')]=function(_0x48e978,_0x37e3a2){this['rpc'][_0x226b('0x1c')](_0x48e978)['then'](function(_0xd97c4b){_0x37e3a2(null,_0xd97c4b?_0xd97c4b[_0x226b('0x1d')]:![]);})['catch'](function(_0x985b6a){_0x37e3a2(_0x985b6a);});};AGIVertices[_0x226b('0x13')][_0x226b('0x1e')]=function(_0x229e4d,_0x1cdba9){this[_0x226b('0x11')][_0x226b('0x1f')](_0x229e4d)[_0x226b('0x16')](function(_0x46bdbc){_0x1cdba9(null,_0x46bdbc?_0x46bdbc[_0x226b('0x17')]:![]);})[_0x226b('0x18')](function(_0x43193d){_0x1cdba9(_0x43193d);});};AGIVertices[_0x226b('0x13')][_0x226b('0x20')]=function(_0x286a38,_0x5555a9){this[_0x226b('0x11')][_0x226b('0x21')](_0x286a38)['then'](function(_0x1e2053){_0x5555a9(null,_0x1e2053?_0x1e2053['name']:![]);})[_0x226b('0x18')](function(_0x11ae4f){_0x5555a9(_0x11ae4f);});};AGIVertices[_0x226b('0x13')][_0x226b('0x22')]=function(_0x2bc294,_0x5b51e0){var _0x42d4ed=this;this[_0x226b('0x11')][_0x226b('0x23')](_0x2bc294)[_0x226b('0x16')](function(_0x5859b5){_0x5b51e0(null,_0x5859b5?_0x42d4ed[_0x226b('0x24')](_0x5859b5[_0x226b('0x25')]):![]);})[_0x226b('0x18')](function(_0x304acc){_0x5b51e0(_0x304acc);});};AGIVertices['prototype'][_0x226b('0x26')]=function(_0x21f276,_0xfabd15){this['rpc'][_0x226b('0x27')](_0x21f276)[_0x226b('0x16')](function(_0x46ed3d){_0xfabd15(null,_0x46ed3d?_0x46ed3d:![]);})['catch'](function(_0x27dcca){_0xfabd15(_0x27dcca);});};AGIVertices[_0x226b('0x13')][_0x226b('0x28')]=function(_0xe274a8,_0x2a96de,_0x3e04f5){this[_0x226b('0x12')][_0x226b('0x28')](_0xe274a8,_0x2a96de)[_0x226b('0x16')](function(){_0x3e04f5(null);})[_0x226b('0x18')](function(_0xcf4063){_0x3e04f5(_0xcf4063);});};AGIVertices[_0x226b('0x13')][_0x226b('0x29')]=function(_0x50664d,_0x3fe01f){this[_0x226b('0x11')][_0x226b('0x2a')](_0x50664d)[_0x226b('0x16')](function(_0x589845){if(_0x589845){if(_0x589845[_0x226b('0x2b')]){_0x3fe01f(null,[_0x589845[_0x226b('0x2c')]]);}else{_0x3fe01f(null,_['map'](_0x589845[_0x226b('0x2d')],_0x226b('0x2c')));}}else{_0x3fe01f(null,![]);}})[_0x226b('0x18')](function(_0x95ed27){_0x3fe01f(_0x95ed27);});};AGIVertices[_0x226b('0x13')][_0x226b('0x24')]=function(_0x4cdf7c){return util[_0x226b('0x2e')](_0x226b('0x2f'),FILES_PATH,_0x4cdf7c);};AGIVertices['prototype'][_0x226b('0x30')]=function(_0x4c7f20,_0x42ec01,_0x989369){odbc[_0x226b('0x31')](_0x4c7f20,function(_0x30f30f){if(_0x30f30f){logger['error'](_0x226b('0x32'),_0x30f30f);_0x989369(_0x30f30f);}else{logger['info'](_0x226b('0x33'));odbc[_0x226b('0x34')](_0x42ec01,function(_0x3acf41,_0x590c20){if(_0x3acf41){logger[_0x226b('0x35')](_0x226b('0x36'),_0x42ec01);_0x989369(_0x3acf41);}else{logger['info'](_0x226b('0x37'),_0x42ec01);odbc['close'](function(_0x252ac7){if(_0x252ac7){logger['error'](_0x226b('0x38'),_0x252ac7);}_0x989369(null,_0x590c20);});}});}});};AGIVertices[_0x226b('0x13')][_0x226b('0x39')]=function(_0xcc4e95,_0x2b9974){this[_0x226b('0x11')][_0x226b('0x3a')](_0xcc4e95)[_0x226b('0x16')](function(_0x5ebd07){_0x2b9974(null,_0x5ebd07?_0x5ebd07:![]);})[_0x226b('0x18')](function(_0xd481f0){_0x2b9974(_0xd481f0);});};AGIVertices[_0x226b('0x13')][_0x226b('0x3b')]=function(_0xfc334a,_0x1b7354){this[_0x226b('0x11')]['createSmsMessage'](_0xfc334a)['then'](function(_0x303814){_0x1b7354(null,_0x303814);})[_0x226b('0x18')](function(_0x1b8b59){_0x1b7354(_0x1b8b59);});};AGIVertices[_0x226b('0x13')][_0x226b('0x3c')]=function(_0x890578,_0x2003a2,_0x5c4034){this['rpc'][_0x226b('0x3c')]({'uniqueid':this[_0x226b('0x10')][_0x226b('0x3d')],'node':_0x890578[_0x226b('0x3e')],'application':_0x890578[_0x226b('0x3f')],'data':_0x2003a2||null,'project_name':this['channel'][_0x226b('0x40')],'callerid':this[_0x226b('0x10')][_0x226b('0x41')]})[_0x226b('0x16')](function(_0x48c033){if(_0x5c4034){_0x5c4034(null,_0x48c033);}})[_0x226b('0x18')](function(_0x4adef0){if(_0x5c4034){_0x5c4034(_0x4adef0);}});};AGIVertices['prototype']['createSquareRecording']=function(_0x589280,_0x35de6e,_0x57d535,_0x4b5f0a){this[_0x226b('0x11')][_0x226b('0x42')]({'uniqueid':this['channel'][_0x226b('0x3d')],'callerid':this[_0x226b('0x10')][_0x226b('0x41')],'calleridname':this[_0x226b('0x10')][_0x226b('0x43')],'context':this['channel'][_0x226b('0x44')],'extension':this['channel'][_0x226b('0x45')],'priority':this['channel'][_0x226b('0x46')],'accountcode':this[_0x226b('0x10')][_0x226b('0x47')],'dnid':this[_0x226b('0x10')][_0x226b('0x48')],'projectName':this[_0x226b('0x10')][_0x226b('0x40')],'saveName':_0x35de6e,'filename':_0x589280[_0x226b('0x49')]||_0x35de6e,'savePath':_0x57d535})[_0x226b('0x16')](function(_0x4d9b36){_0x4b5f0a(null,_0x4d9b36);})[_0x226b('0x18')](function(_0x2f290e){_0x4b5f0a(_0x2f290e);});};AGIVertices['prototype'][_0x226b('0x4a')]=function(_0x33fcc7,_0x42e08f,_0x1c9ccc,_0x1be7d4,_0x506463){this[_0x226b('0x11')][_0x226b('0x4a')]({'uniqueid':this[_0x226b('0x10')][_0x226b('0x3d')],'body':_0x33fcc7,'direction':_0x42e08f,'providerName':_0x1c9ccc,'providerResponse':_0x1be7d4})[_0x226b('0x16')](function(_0x3e0bc3){if(_0x506463){_0x506463(null,_0x3e0bc3);}})[_0x226b('0x18')](function(_0x329dd0){if(_0x506463){_0x506463(_0x329dd0);}});};AGIVertices['prototype'][_0x226b('0x4b')]=function(_0x18bf37,_0x3c6758){this['rpc'][_0x226b('0x4b')]({'firstName':_[_0x226b('0x4c')](_0x18bf37[_0x226b('0x17')])||_['isNil'](_0x18bf37[_0x226b('0x17')])?_0x226b('0x4d')+Math['random']():_0x18bf37['name'],'lastName':_[_0x226b('0x4c')](_0x18bf37[_0x226b('0x4e')])||_[_0x226b('0x4f')](_0x18bf37[_0x226b('0x4e')])?null:_0x18bf37[_0x226b('0x4e')],'phone':_0x18bf37[_0x226b('0x50')],'ListId':_0x18bf37[_0x226b('0x51')],'scheduledat':_0x18bf37[_0x226b('0x52')],'callbackUniqueid':this['channel'][_0x226b('0x3d')],'tags':'callback','description':_0x226b('0x53')+_0x18bf37[_0x226b('0x52')][_0x226b('0x54')](),'priority':_0x18bf37[_0x226b('0x55')]})[_0x226b('0x16')](function(_0x3f6cea){_0x3c6758(null,_0x3f6cea);})[_0x226b('0x18')](function(_0x5dd864){_0x3c6758(_0x5dd864);});};AGIVertices[_0x226b('0x13')][_0x226b('0x56')]=function(_0x295e37,_0x140bfb){this['rpc'][_0x226b('0x57')](_0x295e37)['then'](function(_0x774284){_0x140bfb(null,_0x774284?_0x774284[_0x226b('0x17')]:![]);})['catch'](function(_0x30c46b){_0x140bfb(_0x30c46b);});};AGIVertices[_0x226b('0x13')][_0x226b('0x58')]=function(_0x204b2a,_0x531e94,_0x29a347){var _0x3ae39a={'role':'agent'};_0x3ae39a[_0x204b2a]=this[_0x226b('0x10')]['callerid'];this['rpc'][_0x226b('0x58')](_0x3ae39a,_0x531e94,this[_0x226b('0x10')][_0x226b('0x3d')])['then'](function(_0x6f9eac){_0x29a347(null,_['isNil'](_0x6f9eac)?![]:!![]);})[_0x226b('0x18')](function(_0x47bbdf){logger['error'](_0x47bbdf);_0x29a347(null,![]);});};AGIVertices['prototype']['agentUnpause']=function(_0x36895c,_0xce9821){var _0x122a05={'role':_0x226b('0x59')};_0x122a05[_0x36895c]=this[_0x226b('0x10')]['callerid'];this[_0x226b('0x11')]['agentUnpause'](_0x122a05)[_0x226b('0x16')](function(_0x2902b3){_0xce9821(null,_['isNil'](_0x2902b3)?![]:!![]);})[_0x226b('0x18')](function(_0x141c6d){logger[_0x226b('0x5a')](_0x141c6d);_0xce9821(null,![]);});};AGIVertices[_0x226b('0x13')][_0x226b('0x5b')]=function(_0x494826,_0x5dd0cb){var _0x553a9c={'role':_0x226b('0x59')};_0x553a9c[_0x494826]=this['channel'][_0x226b('0x41')];this['rpc'][_0x226b('0x5b')](_0x553a9c)[_0x226b('0x16')](function(_0x337627){_0x5dd0cb(null,_[_0x226b('0x4f')](_0x337627)?![]:!![]);})['catch'](function(_0x3302dc){logger[_0x226b('0x5a')](_0x3302dc);_0x5dd0cb(null,![]);});};AGIVertices[_0x226b('0x13')]['agentLogin']=function(_0x573e99,_0x8b132f){var _0x2b8e42={'role':_0x226b('0x59')};_0x2b8e42[_0x573e99]=this[_0x226b('0x10')][_0x226b('0x41')];var _0x514192=_0x573e99!=_0x226b('0x5c')?util['format'](_0x226b('0x5d'),_0x226b('0x5e'),this['channel']['callerid']):undefined;this[_0x226b('0x11')][_0x226b('0x5f')](_0x2b8e42,_0x514192)['then'](function(_0xfcc409){_0x8b132f(null,_['isNil'](_0xfcc409)?![]:!![]);})[_0x226b('0x18')](function(_0x3b6c87){logger['error'](_0x3b6c87);_0x8b132f(null,![]);});};AGIVertices[_0x226b('0x13')]['shellCommand']=function(_0xaef518,_0x5efe42){sh[_0x226b('0x60')](_[_0x226b('0x61')](_0xaef518),function(_0x4acf8a,_0x5c11f1){var _0x1c48b8=_0x5c11f1[_0x226b('0x62')](/(\r\n|\n|\r)/gm,'');_0x5efe42(null,_0x1c48b8);});};AGIVertices[_0x226b('0x13')]['googleCloudTTS']=function(_0x1598f7,_0x22430b){scripts['googleCloudTTS'](_0x1598f7[_0x226b('0x63')],_0x1598f7[_0x226b('0x64')]||_0x226b('0x65'),_0x1598f7[_0x226b('0x65')],_0x1598f7[_0x226b('0x66')]||'en-US',_0x1598f7[_0x226b('0x67')]||_0x226b('0x68'),_0x1598f7['audioEncoding']||_0x226b('0x69'))['then'](function(_0x126862){_0x22430b(null,_0x126862);})[_0x226b('0x18')](function(_0x525966){_0x22430b(_0x525966);});};AGIVertices[_0x226b('0x13')][_0x226b('0x6a')]=function(_0x500e2b,_0x4ab642){scripts['googleTTS'](_0x500e2b[_0x226b('0x65')],_0x500e2b[_0x226b('0x6b')]||'en',0x1)[_0x226b('0x16')](function(_0x2fd520){_0x4ab642(null,_0x2fd520);})[_0x226b('0x18')](function(_0x5203b8){_0x4ab642(_0x5203b8);});};AGIVertices['prototype'][_0x226b('0x6c')]=function(_0x39f9aa,_0x240dc5){var _0x1f8105={'uri':_0x39f9aa[_0x226b('0x6d')],'method':_0x39f9aa[_0x226b('0x6e')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x39f9aa[_0x226b('0x6f')])===_0x226b('0x70')&&parseInt(_0x39f9aa[_0x226b('0x6f')])>=0x1?parseInt(_0x39f9aa[_0x226b('0x6f')])*0x3e8:0x5*0x3e8};if(_[_0x226b('0x71')]([_0x226b('0x72'),'PUT'],_0x1f8105[_0x226b('0x6e')]['toUpperCase']())){try{_0x1f8105[_0x226b('0x73')]=_0x39f9aa[_0x226b('0x74')]?JSON[_0x226b('0x75')](_0x39f9aa['rawBody']):{};}catch(_0x2b8ca8){logger[_0x226b('0x5a')](_0x226b('0x76'),_0x2b8ca8);}}try{_0x1f8105[_0x226b('0x77')]=_0x39f9aa[_0x226b('0xc')]?JSON[_0x226b('0x75')](_0x39f9aa[_0x226b('0xc')]):{};}catch(_0x1d5211){logger[_0x226b('0x5a')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x1d5211);}if(_0x39f9aa[_0x226b('0x78')]){try{var _0x4e0533=require(_0x39f9aa[_0x226b('0x78')])['sync'](this,_0x1f8105);_0x1f8105[_0x226b('0x79')]=Mustache[_0x226b('0x7a')](_0x39f9aa[_0x226b('0x6d')],_0x4e0533,{},['$$','$$']);if(_0x1f8105['headers']){_0x1f8105[_0x226b('0x77')]=JSON[_0x226b('0x75')](Mustache[_0x226b('0x7a')](JSON['stringify'](_0x1f8105[_0x226b('0x77')]),_0x4e0533,{},['$$','$$']));}if(_0x1f8105['body']){_0x1f8105[_0x226b('0x73')]=JSON[_0x226b('0x75')](Mustache[_0x226b('0x7a')](JSON['stringify'](_0x1f8105[_0x226b('0x73')]),_0x4e0533,{},['$$','$$']));}}catch(_0x103b38){logger['error'](_0x226b('0x7b'),_0x103b38);}}rp(_0x1f8105)['then'](function(_0x21f022){var _0x33eea0={'statusCode':_0x21f022[_0x226b('0x7c')]||0xc8,'statusMessage':_0x21f022[_0x226b('0x7d')]||'OK','headers':_0x21f022['headers']||{},'body':_0x21f022[_0x226b('0x73')]||{}};_0x240dc5(null,_0x33eea0);})[_0x226b('0x18')](function(_0x55dd01){var _0x372042={'statusCode':_0x55dd01[_0x226b('0x7c')]||0x1f4,'statusMessage':_0x55dd01[_0x226b('0x7e')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x55dd01[_0x226b('0x7f')][_0x226b('0x77')]||{},'body':_0x55dd01[_0x226b('0x7f')][_0x226b('0x73')]||{}};_0x240dc5(null,_0x372042);});};AGIVertices[_0x226b('0x13')][_0x226b('0x80')]=function(_0x29031c,_0x373ad0){scripts['googleDialogflow'](this[_0x226b('0x10')][_0x226b('0x3d')],_0x29031c[_0x226b('0x81')],_0x29031c['text'],_0x29031c[_0x226b('0x82')]||'en')['then'](function(_0x5367ce){_0x373ad0(null,_0x5367ce);})['catch'](function(_0x4aa98f){_0x373ad0(_0x4aa98f);});};AGIVertices[_0x226b('0x13')][_0x226b('0x83')]=function(_0x406579,_0x4ed998){scripts[_0x226b('0x83')](this[_0x226b('0x10')][_0x226b('0x3d')],_0x406579[_0x226b('0x84')],_0x406579['client_email'],_0x406579[_0x226b('0x85')],_0x406579[_0x226b('0x65')],_0x406579[_0x226b('0x86')]||'en')[_0x226b('0x16')](function(_0x58848e){_0x4ed998(null,_0x58848e);})[_0x226b('0x18')](function(_0x554b43){_0x4ed998(_0x554b43);});};AGIVertices[_0x226b('0x13')][_0x226b('0x87')]=function(_0x218a77,_0x35c3c7){scripts[_0x226b('0x87')](this['channel'],_0x218a77)['then'](function(_0xc6ba85){_0x35c3c7(null,_0xc6ba85);})[_0x226b('0x18')](function(_0x2cfea1){_0x35c3c7(_0x2cfea1);});};AGIVertices[_0x226b('0x13')][_0x226b('0x88')]=function(_0x3ca2fa,_0x8134ca){scripts['ispeechTTS'](_0x3ca2fa[_0x226b('0x81')],_0x3ca2fa[_0x226b('0x65')],_0x3ca2fa['ispeech_tts_language']||'en-US',_0x3ca2fa[_0x226b('0x89')])[_0x226b('0x16')](function(_0x3ef69e){_0x8134ca(null,_0x3ef69e);})[_0x226b('0x18')](function(_0x25d0d6){_0x8134ca(_0x25d0d6);});};AGIVertices[_0x226b('0x13')][_0x226b('0x8a')]=function(_0x5a54e7,_0x183890,_0xf63de8){scripts[_0x226b('0x8a')](_0x183890,_0x5a54e7[_0x226b('0x81')],_0x5a54e7[_0x226b('0x8b')]||_0x226b('0x8c'),this['isConfigured'](_0x5a54e7['model'])?_0x5a54e7[_0x226b('0x8d')]:undefined)[_0x226b('0x16')](function(_0x49a03c){_0xf63de8(null,_0x49a03c);})[_0x226b('0x18')](function(_0x183c31){_0xf63de8(_0x183c31);});};AGIVertices[_0x226b('0x13')][_0x226b('0x8e')]=function(_0xa627a4,_0x31819a){scripts[_0x226b('0x8e')](_0xa627a4[_0x226b('0x8f')],_0xa627a4[_0x226b('0x90')],_0xa627a4['aws_polly_region'],_0xa627a4[_0x226b('0x91')]||'Amy',_0xa627a4[_0x226b('0x65')],_0xa627a4[_0x226b('0x92')]||_0x226b('0x65'))[_0x226b('0x16')](function(_0x20a955){_0x31819a(null,_0x20a955);})['catch'](function(_0x54929b){_0x31819a(_0x54929b);});};AGIVertices[_0x226b('0x13')]['awsLex']=function(_0x3b83b1,_0x53c6fe){scripts[_0x226b('0x93')](this[_0x226b('0x10')][_0x226b('0x3d')],_0x3b83b1[_0x226b('0x8f')],_0x3b83b1['aws_secret_access_key'],_0x3b83b1[_0x226b('0x94')],_0x3b83b1[_0x226b('0x65')],_0x3b83b1[_0x226b('0x95')])[_0x226b('0x16')](function(_0x391c9e){_0x53c6fe(null,_0x391c9e);})[_0x226b('0x18')](function(_0x4fbfc5){_0x53c6fe(_0x4fbfc5);});};AGIVertices[_0x226b('0x13')][_0x226b('0x96')]=function(_0x462c94,_0x184ca6,_0x4aae35){scripts[_0x226b('0x96')](_0x184ca6,_0x462c94[_0x226b('0x81')],_0x462c94[_0x226b('0x97')]||_0x226b('0x8c'))[_0x226b('0x16')](function(_0x407b16){_0x4aae35(null,_0x407b16);})[_0x226b('0x18')](function(_0x230b91){_0x4aae35(_0x230b91);});};AGIVertices[_0x226b('0x13')][_0x226b('0x98')]=function(_0x509deb,_0x2d420e,_0x4bbfc1){scripts[_0x226b('0x98')](_0x2d420e,_0x509deb[_0x226b('0x99')],_0x509deb[_0x226b('0x9a')],_0x509deb[_0x226b('0x79')])[_0x226b('0x16')](function(_0x4e9842){_0x4bbfc1(null,_0x4e9842);})[_0x226b('0x18')](function(_0x4e1547){_0x4bbfc1(_0x4e1547);});};AGIVertices['prototype']['clear']=function(_0x9d941c){var _0x2749e5=_[_0x226b('0x71')](verticesWithRetry,_0x9d941c['agicommand'])?_0x9d941c:_[_0x226b('0x9b')](_0x9d941c);for(var _0x8e6941 in _0x2749e5){if(_0x2749e5[_0x226b('0x9c')](_0x8e6941)){if(_0x2749e5[_0x8e6941]&&_[_0x226b('0x9d')](_0x2749e5[_0x8e6941])){if(_['includes'](recursiveMapAttributes,_0x8e6941)){_0x2749e5[_0x8e6941]=this['replaceObjectAllVariables'](_0x2749e5[_0x8e6941]);}else{_0x2749e5[_0x8e6941]=this[_0x226b('0x9e')](_0x2749e5[_0x8e6941]);}}}}return _0x2749e5;};AGIVertices[_0x226b('0x13')][_0x226b('0x9f')]=function(_0x5bb429){for(var _0x250189 in _0x5bb429){if(_0x5bb429['hasOwnProperty'](_0x250189)){if(_[_0x226b('0xa0')](_0x5bb429[_0x250189])){this[_0x226b('0x9f')](_0x5bb429[_0x250189]);}else if(_[_0x226b('0xa1')](_0x5bb429[_0x250189])){for(var _0x3bda7f=0x0;_0x3bda7f<_0x5bb429[_0x250189][_0x226b('0xa2')];_0x3bda7f++){this['recursiveNodeIndex'](_0x5bb429[_0x250189][_0x3bda7f]);}}else if(_['isString'](_0x5bb429[_0x250189])){_0x5bb429[_0x250189]=this['replaceAllVariables'](_0x5bb429[_0x250189]);}}}};AGIVertices[_0x226b('0x13')][_0x226b('0xa3')]=function(_0x148032,_0x4cbcf2){for(var _0x8718dd in _0x148032){if(_0x148032[_0x226b('0x9c')](_0x8718dd)){if(_['isPlainObject'](_0x148032[_0x8718dd])){if(!_['isEmpty'](_0x148032[_0x8718dd])){this['saveRestApiResult'](_0x148032[_0x8718dd],util['format']('%s.%s',_0x4cbcf2,_0x8718dd));}}else if(_[_0x226b('0xa1')](_0x148032[_0x8718dd])){for(var _0xcc919b=0x0;_0xcc919b<_0x148032[_0x8718dd][_0x226b('0xa2')];_0xcc919b++){this['saveRestApiResult'](_0x148032[_0x8718dd][_0xcc919b],util['format']('%s.%s',_0x4cbcf2,_0x8718dd+'['+_0xcc919b+']'));}}else{if(!_[_0x226b('0x4f')](_0x148032[_0x8718dd])){this['channel'][_0x226b('0xa4')](util[_0x226b('0x2e')](_0x226b('0xa5'),_0x4cbcf2,_0x8718dd),_0x148032[_0x8718dd]);}}}}};AGIVertices['prototype']['replaceObjectAllVariables']=function(_0x1530a9){try{var _0x242f24=JSON[_0x226b('0x75')](_0x1530a9);this[_0x226b('0x9f')](_0x242f24);return JSON[_0x226b('0xa6')](_0x242f24);}catch(_0x4cc8d9){return this[_0x226b('0x9e')](_0x1530a9);}};AGIVertices[_0x226b('0x13')][_0x226b('0x9e')]=function(_0x2a748d){var _0x3857b5=_0x2a748d[_0x226b('0xa7')]('{');for(var _0x3aff1b=0x1;_0x3aff1b<_0x3857b5['length'];_0x3aff1b+=0x1){var _0x27e2e=_0x3857b5[_0x3aff1b][_0x226b('0xa7')]('}');if(_0x27e2e['length']>0x1){_0x2a748d=_0x2a748d['replaceAll']('{'+_0x27e2e[0x0]+'}',this[_0x226b('0x10')]['getVariable'](_0x27e2e[0x0])[_0x226b('0xa8')]||_0x27e2e[0x0]);}}if(_0x3857b5[_0x226b('0xa2')]===0x1){return _0x2a748d[_0x226b('0x54')]();}return this[_0x226b('0x9e')](_0x2a748d);};AGIVertices[_0x226b('0x13')]['getAndSetVariable']=function(_0x2d6b28,_0x26a5d8){var _0x2710b3=this[_0x226b('0x10')][_0x226b('0x14')](_0x2d6b28);if(_0x2710b3['result']===-0x1){return _0x2710b3;}logger[_0x226b('0x35')](util['format'](_0x226b('0xa9'),_0x26a5d8,_0x2710b3['extra']));return this[_0x226b('0x10')][_0x226b('0xa4')](_0x26a5d8,_0x2710b3['extra']);};AGIVertices[_0x226b('0x13')][_0x226b('0xaa')]=function(_0x480663){return _0x480663&&_0x480663!=='0'&&_0x480663!=='-1'&&_0x480663!=='';};AGIVertices[_0x226b('0x13')]['maxRetry']=function(_0x5eecd0){this[_0x226b('0x3c')][_0x226b('0xab')](this,_0x5eecd0,'-');_0x5eecd0[_0x226b('0xac')]=_0x5eecd0['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0x226b('0x13')][_0x226b('0xad')]=function(_0x59b42a){logger[_0x226b('0x35')](util[_0x226b('0x2e')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x59b42a['label']));if(!this['isConfigured'](_0x59b42a[_0x226b('0x65')])){return this['channel'][_0x226b('0xae')](_0x226b('0xaf'));}var _0x3f392c='\x22'+_0x59b42a[_0x226b('0x65')]+'\x22';if(this['isConfigured'](_0x59b42a[_0x226b('0x7f')])){_0x3f392c+=','+_0x59b42a[_0x226b('0x7f')];}var _0x5bdec0=this[_0x226b('0x10')][_0x226b('0x60')](_0x226b('0xb0'),_0x3f392c);if(_0x5bdec0[_0x226b('0xb1')]===-0x1){return _0x5bdec0;}return this[_0x226b('0x10')][_0x226b('0xae')](util['format'](_0x226b('0xb2'),_0x3f392c));};AGIVertices['prototype'][_0x226b('0xb3')]=function(_0x102732){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0xb4'),_0x102732[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x102732['grammar'])){return this['channel'][_0x226b('0xae')](_0x226b('0xb5'));}var _0x47b7cc=_0x102732[_0x226b('0xb6')];if(this[_0x226b('0xaa')](_0x102732[_0x226b('0x7f')])){_0x47b7cc+=','+_0x102732['options'];}var _0x3a868f=this[_0x226b('0x10')]['exec'](_0x226b('0xb7'),_0x47b7cc);if(_0x3a868f[_0x226b('0xb1')]===-0x1){return _0x3a868f;}var _0x3e40d5=this['getAndSetVariable'](_0x226b('0xb8'),_0x226b('0xb9'));if(_0x3e40d5[_0x226b('0xb1')]===-0x1){return _0x3e40d5;}var _0x37658a=this[_0x226b('0xba')]('RECOG_INPUT()',_0x226b('0xbb'));if(_0x37658a[_0x226b('0xb1')]===-0x1){return _0x37658a;}var _0x5cd0c6=this['getAndSetVariable'](_0x226b('0xbc'),_0x226b('0xbd'));if(_0x5cd0c6[_0x226b('0xb1')]===-0x1){return _0x5cd0c6;}return this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0xbe'),_0x47b7cc));};AGIVertices[_0x226b('0x13')][_0x226b('0x9')]=function(_0x60d149){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0xbf'),_0x60d149[_0x226b('0x3e')]));return this[_0x226b('0x10')][_0x226b('0x9')]([_0x60d149[_0x226b('0xc0')],_0x60d149[_0x226b('0xc1')]]);};AGIVertices[_0x226b('0x13')]['answer']=function(_0x514d5b){logger[_0x226b('0x35')](util[_0x226b('0x2e')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x514d5b[_0x226b('0x3e')]));if(this[_0x226b('0xaa')](_0x514d5b[_0x226b('0x6f')])){logger[_0x226b('0x35')](util['format'](_0x226b('0xc2'),_0x514d5b[_0x226b('0x6f')]));var _0x5a78cf=this[_0x226b('0x10')][_0x226b('0xc3')](_0x514d5b[_0x226b('0x6f')]);if(_0x5a78cf[_0x226b('0xb1')]===-0x1){return _0x5a78cf;}}return this[_0x226b('0x10')]['answer']();};AGIVertices[_0x226b('0x13')][_0x226b('0xc4')]=function(_0x59bc50){logger['info'](util[_0x226b('0x2e')](_0x226b('0xc5'),_0x59bc50['label']));if(!this['isConfigured'](_0x59bc50[_0x226b('0x51')])){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x59bc50,_0x226b('0xc6'));}_0x59bc50[_0x226b('0x52')]=moment();if(this['isConfigured'](_0x59bc50[_0x226b('0xc7')])){_0x59bc50['scheduledAt']=moment()[_0x226b('0xc8')](_0x59bc50[_0x226b('0xc7')],'minutes');}if(!this[_0x226b('0xaa')](_0x59bc50['callback_priority'])){_0x59bc50[_0x226b('0x55')]=0x2;}this[_0x226b('0x4b')][_0x226b('0xab')](this,_0x59bc50);return this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0xc9'),_0x59bc50['phone'],_0x59bc50['list_id'],_0x59bc50[_0x226b('0x52')]));};AGIVertices[_0x226b('0x13')][_0x226b('0xca')]=function(_0x3ab286){logger[_0x226b('0x35')](util[_0x226b('0x2e')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x3ab286['label']));var _0x138e4c=this[_0x226b('0x10')][_0x226b('0x60')](_0x3ab286[_0x226b('0xcb')],_0x3ab286['options']);if(_0x138e4c[_0x226b('0xb1')]===-0x1){return _0x138e4c;}return this['channel'][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0xcc'),_0x3ab286[_0x226b('0xcb')],_0x3ab286[_0x226b('0x7f')]));};AGIVertices[_0x226b('0x13')][_0x226b('0xcd')]=function(_0x188934){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0xce'),_0x188934[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x188934[_0x226b('0x65')])){return this['channel'][_0x226b('0xae')](_0x226b('0xaf'));}var _0x4f8fa5='\x22'+_0x188934['text']+'\x22';if(this[_0x226b('0xaa')](_0x188934[_0x226b('0x7f')])){_0x4f8fa5+=','+_0x188934['options'];}var _0x5273e7=this[_0x226b('0x10')][_0x226b('0x60')](_0x226b('0xb0'),_0x4f8fa5);if(_0x5273e7[_0x226b('0xb1')]===-0x1){return _0x5273e7;}return this[_0x226b('0x10')][_0x226b('0xae')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x4f8fa5));};AGIVertices[_0x226b('0x13')][_0x226b('0xcf')]=function(_0x4c383e){logger['info'](util['format'](_0x226b('0xd0'),_0x4c383e[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x4c383e[_0x226b('0x65')])){return this[_0x226b('0x10')]['noop'](_0x226b('0xaf'));}var _0x791c62='\x22'+_0x4c383e['text']+'\x22';if(this['isConfigured'](_0x4c383e[_0x226b('0x7f')])){_0x791c62+=','+_0x4c383e[_0x226b('0x7f')];}var _0x40a3aa=this[_0x226b('0x10')][_0x226b('0x60')](_0x226b('0xb0'),_0x791c62);if(_0x40a3aa['result']===-0x1){return _0x40a3aa;}return this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0xb2'),_0x791c62));};AGIVertices[_0x226b('0x13')][_0x226b('0xd1')]=function(_0x1b7385){logger[_0x226b('0x35')](util['format'](_0x226b('0xd2'),_0x1b7385[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x1b7385[_0x226b('0xb6')])){return this[_0x226b('0x10')]['noop'](_0x226b('0xb5'));}var _0x294836=_0x1b7385['grammar'];if(this['isConfigured'](_0x1b7385['options'])){_0x294836+=','+_0x1b7385[_0x226b('0x7f')];}var _0x3e32e7=this['channel']['exec'](_0x226b('0xb7'),_0x294836);if(_0x3e32e7[_0x226b('0xb1')]===-0x1){return _0x3e32e7;}var _0x4bd22c=this[_0x226b('0xba')](_0x226b('0xb8'),_0x226b('0xd3'));if(_0x4bd22c[_0x226b('0xb1')]===-0x1){return _0x4bd22c;}var _0x14f85d=this['getAndSetVariable'](_0x226b('0xd4'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x14f85d[_0x226b('0xb1')]===-0x1){return _0x14f85d;}var _0xf28cdb=this[_0x226b('0xba')](_0x226b('0xbc'),_0x226b('0xd5'));if(_0xf28cdb[_0x226b('0xb1')]===-0x1){return _0xf28cdb;}return this[_0x226b('0x10')]['noop'](util[_0x226b('0x2e')](_0x226b('0xbe'),_0x294836));};AGIVertices['prototype'][_0x226b('0xd6')]=function(_0x5d3b5f){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0xd7'),_0x5d3b5f[_0x226b('0x3e')]));if(!this['isConfigured'](_0x5d3b5f[_0x226b('0xb6')])){return this[_0x226b('0x10')][_0x226b('0xae')]('no\x20grammar\x20configured');}var _0xf8ad33=_0x5d3b5f[_0x226b('0xb6')];if(this[_0x226b('0xaa')](_0x5d3b5f[_0x226b('0x7f')])){_0xf8ad33+=','+_0x5d3b5f[_0x226b('0x7f')];}var _0x2663bb=this['channel'][_0x226b('0x60')]('MRCPRecog',_0xf8ad33);if(_0x2663bb[_0x226b('0xb1')]===-0x1){return _0x2663bb;}var _0x24da99=this['getAndSetVariable'](_0x226b('0xb8'),_0x226b('0xd8'));if(_0x24da99['result']===-0x1){return _0x24da99;}var _0x5d4ea9=this['getAndSetVariable'](_0x226b('0xd4'),_0x226b('0xd9'));if(_0x5d4ea9[_0x226b('0xb1')]===-0x1){return _0x5d4ea9;}var _0x254b78=this[_0x226b('0xba')](_0x226b('0xbc'),_0x226b('0xda'));if(_0x254b78[_0x226b('0xb1')]===-0x1){return _0x254b78;}return this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')]('Executed\x20command\x20MRCPRecog\x20%s',_0xf8ad33));};AGIVertices[_0x226b('0x13')][_0x226b('0xdb')]=function(_0x414c95){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0xdc'),_0x414c95[_0x226b('0x3e')]));if(!this['isConfigured'](_0x414c95[_0x226b('0xdd')])){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x414c95,_0x226b('0xde'));}var _0x2d00c1=this[_0x226b('0x1b')][_0x226b('0xab')](this,_0x414c95[_0x226b('0xdd')]);if(!_0x2d00c1){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x414c95,_0x226b('0xdf'));}if(!this[_0x226b('0xaa')](_0x414c95['query'])){return this[_0x226b('0x10')]['error'](_0x414c95,_0x226b('0xe0'));}var _0x3e29ae=_0x414c95[_0x226b('0x34')][_0x226b('0x62')](/(\r\n|\n|\r)/gm,'\x20');this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0xe1'),_0x3e29ae));var _0x2e10a9=this[_0x226b('0x30')][_0x226b('0xab')](this,_0x2d00c1,_0x3e29ae);this['createSquareDetailsReport']['sync'](this,_0x414c95,_0x3e29ae);if(!this[_0x226b('0xaa')](_0x414c95['variable_id'])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xe2'));}var _0x3ff96e=this['getVariable'][_0x226b('0xab')](this,_0x414c95[_0x226b('0xe3')]);if(!_0x3ff96e){return this['channel'][_0x226b('0x5a')](_0x414c95,_0x226b('0xe4'));}var _0x453153=this;_0x2e10a9[_0x226b('0xe5')](function(_0x56539b,_0x2e5f61){Object[_0x226b('0xe6')](_0x56539b)['forEach'](function(_0x2357ef){_0x453153[_0x226b('0x10')][_0x226b('0xa4')](util['format'](_0x226b('0xe7'),_0x3ff96e,_0x2e5f61,_0x2357ef),_0x56539b[_0x2357ef]);});});this[_0x226b('0x10')][_0x226b('0xa4')](util[_0x226b('0x2e')](_0x226b('0xe8'),_0x3ff96e),_0x2e10a9['length']);return this['channel'][_0x226b('0xae')](util['format'](_0x226b('0xe9'),_0x3ff96e));};AGIVertices['prototype'][_0x226b('0xea')]=function(_0x3dffa3){logger[_0x226b('0xeb')](util['format'](_0x226b('0xec'),_0x3dffa3[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x3dffa3['sip_id'])){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x3dffa3,_0x226b('0xed'));}var _0x5c48d2=this[_0x226b('0x1e')][_0x226b('0xab')](this,_0x3dffa3[_0x226b('0xee')]);if(!_0x5c48d2){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x3dffa3,_0x226b('0xef'));}var _0x22b6f7=this[_0x226b('0x10')][_0x226b('0x60')]('DIAL',[util['format'](_0x226b('0xf0'),_0x5c48d2),_0x3dffa3[_0x226b('0x6f')],_0x3dffa3[_0x226b('0xf1')],_0x3dffa3[_0x226b('0x6d')]]);if(_0x22b6f7[_0x226b('0xb1')]===-0x1){return _0x22b6f7;}return this[_0x226b('0x10')]['noop'](util[_0x226b('0x2e')](_0x226b('0xf2'),_0x226b('0xf3')));};AGIVertices['prototype'][_0x226b('0xf4')]=function(_0x1f16fa){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0xf5'),_0x1f16fa[_0x226b('0x3e')]));if(!this['isConfigured'](_0x1f16fa['key'])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xf6'));}if(!this[_0x226b('0xaa')](_0x1f16fa[_0x226b('0x65')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xaf'));}this[_0x226b('0x10')][_0x226b('0xf7')]=!![];this[_0x226b('0x3c')](_0x1f16fa);this[_0x226b('0x4a')](_0x1f16fa['text'],'in','','');this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')]('Trying\x20Dialogflow:\x20%s',_0x1f16fa[_0x226b('0x65')]));var _0x571977=this[_0x226b('0x80')][_0x226b('0xab')](this,_0x1f16fa);if(_0x571977){for(var _0x4310aa in _0x571977){if(_0x571977[_0x226b('0x9c')](_0x4310aa)){this[_0x226b('0x10')]['setVariable'](util[_0x226b('0x2e')](_0x226b('0xf8'),_0x4310aa[_0x226b('0xf9')]()),_0x571977[_0x4310aa]);}}this[_0x226b('0x4a')](_0x571977[_0x226b('0xfa')],_0x226b('0xfb'),'dialogflow','');return this[_0x226b('0x10')]['noop'](util['format']('Dialogflow\x20Result\x20%s',_0x571977[_0x226b('0xfa')]));}return this['channel'][_0x226b('0x5a')](_0x1f16fa,'Dialogflow\x20is\x20unreachable');};AGIVertices['prototype'][_0x226b('0xfc')]=function(_0x1106ea){logger[_0x226b('0x35')](util['format']('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x1106ea['label']));if(!this[_0x226b('0xaa')](_0x1106ea[_0x226b('0x84')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xfd'));}if(!this[_0x226b('0xaa')](_0x1106ea[_0x226b('0xfe')])){return this[_0x226b('0x10')]['noop']('no\x20client_email\x20configured');}if(!this['isConfigured'](_0x1106ea[_0x226b('0x85')])){return this[_0x226b('0x10')]['noop']('no\x20private_key\x20configured');}if(!this[_0x226b('0xaa')](_0x1106ea[_0x226b('0x86')])){return this['channel'][_0x226b('0xae')](_0x226b('0xff'));}if(!this[_0x226b('0xaa')](_0x1106ea[_0x226b('0x65')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xaf'));}this['channel'][_0x226b('0xf7')]=!![];this[_0x226b('0x3c')](_0x1106ea);this['createSquareMessage'](_0x1106ea[_0x226b('0x65')],'in','','');this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x100'),_0x1106ea[_0x226b('0x65')]));var _0x3b0980=this[_0x226b('0x83')][_0x226b('0xab')](this,_0x1106ea);if(_0x3b0980){for(var _0xe1d78 in _0x3b0980){if(_0x3b0980[_0x226b('0x9c')](_0xe1d78)){if(_0xe1d78!==_0x226b('0x101')){this[_0x226b('0x10')][_0x226b('0xa4')](util[_0x226b('0x2e')]('DIALOGFLOW_%s',_0xe1d78['toUpperCase']()),_0x3b0980[_0xe1d78]);}}}this[_0x226b('0x4a')](_0x3b0980[_0x226b('0xfa')],_0x226b('0xfb'),_0x226b('0xfc'),_0x3b0980['providerResponse']);return this['channel'][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x102'),_0x3b0980[_0x226b('0xfa')]));}return this[_0x226b('0x10')][_0x226b('0x5a')](_0x1106ea,_0x226b('0x103'));};AGIVertices['prototype']['sesteknda']=function(_0x18c634){logger['info'](util['format']('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x18c634['label']));if(!this['isConfigured'](_0x18c634[_0x226b('0x104')])){return this['channel'][_0x226b('0xae')](_0x226b('0x105'));}if(!this[_0x226b('0xaa')](_0x18c634[_0x226b('0x106')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0x107'));}if(!this[_0x226b('0xaa')](_0x18c634['password'])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0x108'));}if(!this['isConfigured'](_0x18c634[_0x226b('0x109')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xaf'));}this[_0x226b('0x10')]['bot']=!![];this[_0x226b('0x3c')](_0x18c634);this[_0x226b('0x4a')](_0x18c634[_0x226b('0x65')],'in','','');this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')]('Trying\x20SestekNDA:\x20%s',_0x18c634[_0x226b('0x65')]));var _0x4aa8f2=this[_0x226b('0x87')]['sync'](this,_0x18c634);if(_0x4aa8f2){for(var _0x3b4de2 in _0x4aa8f2){if(_0x4aa8f2['hasOwnProperty'](_0x3b4de2)){this['channel'][_0x226b('0xa4')](util[_0x226b('0x2e')](_0x226b('0x10a'),_0x3b4de2[_0x226b('0xf9')]()),_0x4aa8f2[_0x3b4de2]);}}this['createSquareMessage'](_0x4aa8f2['speech'],_0x226b('0xfb'),_0x226b('0x10b'),'');if(_0x4aa8f2['audiofile']){this['channel'][_0x226b('0xae')](util[_0x226b('0x2e')]('Sestek\x20NDA\x20%s\x20file\x20created',_0x4aa8f2[_0x226b('0x10c')]));var _0x3fe4f7=this[_0x226b('0x10')][_0x226b('0x10d')](_0x4aa8f2[_0x226b('0x10c')]);try{fs[_0x226b('0x10e')](_0x4aa8f2[_0x226b('0x10c')]+_0x226b('0x10f'));}catch(_0x5aa13d){logger['error'](_0x5aa13d);}return _0x3fe4f7;}else{return this[_0x226b('0x10')]['noop'](util[_0x226b('0x2e')](_0x226b('0x110'),_0x4aa8f2['speech']));}}return this[_0x226b('0x10')]['error'](_0x18c634,_0x226b('0x111'));};AGIVertices[_0x226b('0x13')][_0x226b('0x112')]=function(_0x277357){logger['info'](util[_0x226b('0x2e')](_0x226b('0x113'),_0x277357[_0x226b('0x3e')]));return this['channel'][_0x226b('0xae')](_0x226b('0x112'));};AGIVertices[_0x226b('0x13')][_0x226b('0x114')]=function(_0x43c8ad){logger['info'](util[_0x226b('0x2e')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x43c8ad[_0x226b('0x3e')]));var _0x1ef3d2='';if(_0x43c8ad[_0x226b('0x115')]){if(!this[_0x226b('0xaa')](_0x43c8ad['trunk_id'])){return this[_0x226b('0x10')]['error'](_0x43c8ad,_0x226b('0x116'));}else{var _0x2829c2=parseInt(_0x43c8ad[_0x226b('0x115')],0xa);if(isNaN(_0x2829c2)){_0x1ef3d2=_0x43c8ad[_0x226b('0x115')];}else{_0x1ef3d2=this[_0x226b('0x20')][_0x226b('0xab')](this,_0x43c8ad[_0x226b('0x115')]);if(!_0x1ef3d2){return this[_0x226b('0x10')]['error'](_0x43c8ad,'no\x20trunk\x20found');}}}}else if(_0x43c8ad[_0x226b('0x117')]){_0x1ef3d2=_0x43c8ad['trunk_name'];}else{return this[_0x226b('0x10')][_0x226b('0x5a')](_0x43c8ad,'no\x20trunk\x20selected');}var _0x395a85=this[_0x226b('0x10')]['exec'](_0x226b('0xf3'),[util[_0x226b('0x2e')]('SIP/%s/%s',_0x1ef3d2,_0x43c8ad['phone']),_0x43c8ad[_0x226b('0x6f')],_0x43c8ad['opts'],_0x43c8ad['url']]);if(_0x395a85['result']===-0x1){return _0x395a85;}return this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')]('Executed\x20command\x20%s',_0x226b('0xf3')));};AGIVertices[_0x226b('0x13')][_0x226b('0x118')]=function(_0x187282){logger['info'](util[_0x226b('0x2e')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x187282['label']));return this['channel'][_0x226b('0xae')](_0x226b('0x118'));};AGIVertices['prototype'][_0x226b('0xe')]=function(_0x3fd40e){logger[_0x226b('0x35')](util['format'](_0x226b('0x119'),_0x3fd40e['label']));if(_0x3fd40e[_0x226b('0xac')]===0x0){return this[_0x226b('0x11a')](_0x3fd40e);}_0x3fd40e[_0x226b('0xac')]-=0x1;if(!this[_0x226b('0xaa')](_0x3fd40e[_0x226b('0x11b')])){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x3fd40e,_0x226b('0x11c'));}var _0x45bec1=this[_0x226b('0x22')][_0x226b('0xab')](this,_0x3fd40e[_0x226b('0x11b')]);if(!_0x45bec1){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x3fd40e,_0x226b('0x11d'));}if(!this[_0x226b('0xaa')](_0x3fd40e[_0x226b('0xe3')])){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x226b('0xe2'));}var _0x56d125=this['channel'][_0x226b('0x11e')](_0x45bec1,_0x3fd40e[_0x226b('0x11f')],_0x3fd40e[_0x226b('0x120')]);var _0x1438d9=_0x56d125[_0x226b('0xb1')]?_0x56d125[_0x226b('0xb1')]['toString']():'';logger[_0x226b('0x35')](_0x226b('0x121'),JSON[_0x226b('0xa6')](_0x56d125));if(_0x56d125[_0x226b('0xb1')]===-0x1){this[_0x226b('0x3c')][_0x226b('0xab')](this,_0x3fd40e,_0x1438d9);return _0x56d125;}else if(_0x56d125['extra']==='timeout'){_0x56d125[_0x226b('0xb1')]=_0x1438d9[_0x226b('0xa2')]>=parseInt(_0x3fd40e[_0x226b('0x122')])?'x':'i';}else{_0x56d125['result']=_0x1438d9[_0x226b('0xa2')]>=parseInt(_0x3fd40e[_0x226b('0x122')])&&_0x1438d9[_0x226b('0xa2')]<=parseInt(_0x3fd40e[_0x226b('0x120')])?'x':'i';}var _0xc4ed7f=this[_0x226b('0x14')][_0x226b('0xab')](this,_0x3fd40e['variable_id']);if(!_0xc4ed7f){return this[_0x226b('0x10')]['error'](_0x3fd40e,'no\x20variable\x20found');}this[_0x226b('0x10')][_0x226b('0xa4')](_0xc4ed7f,_0x1438d9);if(this[_0x226b('0xaa')](_0x3fd40e[_0x226b('0x123')])){var _0x1a7416=parseInt(_0x3fd40e['hiddendigitsnum'],0xa);var _0x57526e=rs[_0x226b('0x124')]({'charset':'*','length':_0x1a7416});var _0x3345bb=_0x1438d9[_0x226b('0xa2')];if(_0x3345bb>0x0){if(_0x3345bb>_0x1a7416){this[_0x226b('0x3c')][_0x226b('0xab')](this,_0x3fd40e,_0x3fd40e[_0x226b('0x125')]===_0x226b('0x126')?_0x57526e+_0x1438d9[_0x226b('0x127')](_0x1a7416):_0x1438d9[_0x226b('0x127')](0x0,_0x3345bb-_0x1a7416)+_0x57526e);}else{this['createSquareDetailsReport'][_0x226b('0xab')](this,_0x3fd40e,rs[_0x226b('0x124')]({'charset':'*','length':_0x3345bb}));}}else{this[_0x226b('0x3c')][_0x226b('0xab')](this,_0x3fd40e,'');}}else{this['createSquareDetailsReport'][_0x226b('0xab')](this,_0x3fd40e,_0x1438d9);}return _0x56d125;};AGIVertices[_0x226b('0x13')]['getsecretdigits']=function(_0x4f26de){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x128'),_0x4f26de[_0x226b('0x3e')]));return this[_0x226b('0xe')](_0x4f26de);};AGIVertices['prototype'][_0x226b('0x129')]=function(_0x380c12){logger[_0x226b('0x35')](util[_0x226b('0x2e')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x380c12['label']));this[_0x226b('0x3c')][_0x226b('0xab')](this,_0x380c12,_0x380c12[_0x226b('0x12a')]);return this[_0x226b('0x10')][_0x226b('0xae')](util['format'](_0x226b('0x12b'),_0x380c12['goalname']));};AGIVertices[_0x226b('0x13')]['awspolly']=function(_0x475538){logger[_0x226b('0x35')](util['format'](_0x226b('0x12c'),_0x475538['label']));if(!this[_0x226b('0xaa')](_0x475538[_0x226b('0x8f')])||!this[_0x226b('0xaa')](_0x475538[_0x226b('0x90')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0x12d'));}if(!this['isConfigured'](_0x475538[_0x226b('0x65')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xaf'));}this[_0x226b('0x10')]['noop'](util[_0x226b('0x2e')](_0x226b('0x12e'),_0x475538[_0x226b('0x65')]));var _0x1112d0=this['awsPolly'][_0x226b('0xab')](this,_0x475538);if(_0x1112d0){this[_0x226b('0x10')]['noop'](util['format'](_0x226b('0x12f'),_0x1112d0));var _0xb4d128=this[_0x226b('0x10')]['streamFile'](_0x1112d0);try{fs[_0x226b('0x10e')](_0x1112d0+_0x226b('0x10f'));}catch(_0x1eeade){logger[_0x226b('0x5a')](_0x1eeade);}return _0xb4d128;}return this['channel']['error'](_0x475538,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x226b('0x13')][_0x226b('0x130')]=function(_0x2b6c29){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x131'),_0x2b6c29[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x2b6c29[_0x226b('0x8f')])||!this['isConfigured'](_0x2b6c29[_0x226b('0x90')])){return this[_0x226b('0x10')][_0x226b('0xae')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x226b('0xaa')](_0x2b6c29['aws_bot_name'])){return this[_0x226b('0x10')]['noop'](_0x226b('0x132'));}if(!this[_0x226b('0xaa')](_0x2b6c29[_0x226b('0x65')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xaf'));}this[_0x226b('0x10')]['bot']=!![];this['createSquareDetailsReport'](_0x2b6c29);this[_0x226b('0x4a')](_0x2b6c29['text'],'in','','');this['channel'][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x133'),_0x2b6c29['text']));var _0x4faced=this[_0x226b('0x93')][_0x226b('0xab')](this,_0x2b6c29);if(_0x4faced){for(var _0x17aa2f in _0x4faced){if(_0x4faced[_0x226b('0x9c')](_0x17aa2f)&&_['isString'](_0x4faced[_0x17aa2f])){this[_0x226b('0x10')]['setVariable'](util[_0x226b('0x2e')]('AWS_LEX_%s',_0x17aa2f[_0x226b('0xf9')]()),_0x4faced[_0x17aa2f]);}}if(_['isNil'](_0x4faced[_0x226b('0x7e')])){return this[_0x226b('0x10')][_0x226b('0xae')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this['createSquareMessage'](_0x4faced['message'],_0x226b('0xfb'),_0x226b('0x134'),'');return this[_0x226b('0x10')]['noop'](util[_0x226b('0x2e')]('Amazon\x20Lex\x20Result\x20%s',_0x4faced['message']));}}return this[_0x226b('0x10')][_0x226b('0x5a')](_0x2b6c29,_0x226b('0x135'));};AGIVertices[_0x226b('0x13')][_0x226b('0x136')]=function(_0x3b2a94){logger[_0x226b('0x35')](util[_0x226b('0x2e')]('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x3b2a94['label'],_0x3b2a94[_0x226b('0x6f')]));if(!this['isConfigured'](_0x3b2a94[_0x226b('0x81')])){return this['channel'][_0x226b('0xae')](_0x226b('0xf6'));}var _0x306202=_0x226b('0x137');var _0x2697ea=util[_0x226b('0x2e')](_0x226b('0x138'),FILES_PATH,rs[_0x226b('0x124')](0x4));var _0x23bc5b=util['format']('%s.%s',_0x2697ea,_0x306202);var _0x184ca1=!![];if(_0x3b2a94['beep']===_0x226b('0x139')){_0x184ca1=![];}var _0x46a0f6=this[_0x226b('0x10')][_0x226b('0x13a')](_0x2697ea,_0x306202,_0x3b2a94['intKey'],_0x3b2a94['timeout'],undefined,_0x184ca1);if(_0x46a0f6[_0x226b('0xb1')]!==-0x1){this['channel'][_0x226b('0xae')](util['format'](_0x226b('0x13b'),_0x23bc5b));var _0x266b6e=this[_0x226b('0x96')][_0x226b('0xab')](this,_0x3b2a94,_0x23bc5b);if(_0x266b6e){for(var _0x4f2e7a in _0x266b6e){if(_0x266b6e[_0x226b('0x9c')](_0x4f2e7a)){this['channel'][_0x226b('0xa4')](util['format'](_0x226b('0x13c'),_0x4f2e7a[_0x226b('0xf9')]()),_0x266b6e[_0x4f2e7a]);}}return this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x13d'),JSON[_0x226b('0xa6')](_0x266b6e)));}}return _0x46a0f6;};AGIVertices[_0x226b('0x13')][_0x226b('0x13e')]=function(_0xbc3537){logger[_0x226b('0x35')](util['format'](_0x226b('0x13f'),_0xbc3537[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0xbc3537[_0x226b('0x99')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0x140'));}if(!this[_0x226b('0xaa')](_0xbc3537[_0x226b('0x9a')])){return this[_0x226b('0x10')]['noop']('no\x20appsecret\x20configured');}var _0x90aa0d=_0x226b('0x137');var _0x1050d7=util[_0x226b('0x2e')](_0x226b('0x138'),FILES_PATH,rs[_0x226b('0x124')](0x4));var _0x433ed1=util[_0x226b('0x2e')](_0x226b('0xa5'),_0x1050d7,_0x90aa0d);var _0x915450=!![];if(_0xbc3537['beep']==='NOBEEP'){_0x915450=![];}var _0x4c39cb=this[_0x226b('0x10')][_0x226b('0x13a')](_0x1050d7,_0x90aa0d,_0xbc3537[_0x226b('0x141')],_0xbc3537[_0x226b('0x6f')],undefined,_0x915450);if(_0x4c39cb[_0x226b('0xb1')]!==-0x1){this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x142'),_0x433ed1));var _0x2462b1=this[_0x226b('0x98')]['sync'](this,_0xbc3537,_0x433ed1);if(_0x2462b1){for(var _0x699429 in _0x2462b1){if(_0x2462b1['hasOwnProperty'](_0x699429)){this[_0x226b('0x10')][_0x226b('0xa4')](util[_0x226b('0x2e')](_0x226b('0x143'),_0x699429[_0x226b('0xf9')]()),_0x2462b1[_0x699429]);}}return this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x144'),JSON['stringify'](_0x2462b1)));}}return _0x4c39cb;};AGIVertices['prototype']['gotoc']=function(_0x309eb6){logger[_0x226b('0x35')](util['format'](_0x226b('0x145'),_0x309eb6[_0x226b('0x3e')]));return this[_0x226b('0x10')][_0x226b('0x146')](_0x309eb6[_0x226b('0x44')],_0x309eb6[_0x226b('0x45')],_0x309eb6[_0x226b('0x46')]);};AGIVertices[_0x226b('0x13')][_0x226b('0x147')]=function(_0x4a5512){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x148'),_0x4a5512[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x4a5512[_0x226b('0x149')])){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x4a5512,_0x226b('0x14a'));}try{var _0x40075c=eval(_0x4a5512['condition'])?'true':'false';this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x14b'),_0x4a5512[_0x226b('0x149')],_0x40075c));return{'code':0xc8,'result':_0x40075c};}catch(_0x51cf0e){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x226b('0x13')][_0x226b('0x14c')]=function(_0x271d36){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x14d'),_0x271d36[_0x226b('0x3e')]));if(!this['isConfigured'](_0x271d36['interval_id'])){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x271d36,_0x226b('0x14e'));}var _0x1ee632=this[_0x226b('0x29')][_0x226b('0xab')](this,_0x271d36['interval_id']);if(!_0x1ee632){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x271d36,_0x226b('0x14f'));}for(var _0x1123b4=0x0;_0x1123b4<_0x1ee632[_0x226b('0xa2')];_0x1123b4+=0x1){var _0xcac715=this['channel'][_0x226b('0x14')](util[_0x226b('0x2e')]('IFTIME(%s?true:false)',_0x1ee632[_0x1123b4]));if(_0xcac715[_0x226b('0xb1')]===-0x1){return _0xcac715;}logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x150'),_0x1ee632[_0x1123b4],_0xcac715[_0x226b('0xa8')]));if(_0xcac715['extra']===_0x226b('0x151')){logger[_0x226b('0x35')](util['format'](_0x226b('0x150'),_0x1ee632[_0x1123b4],'true'));this[_0x226b('0x10')]['noop'](util[_0x226b('0x2e')](_0x226b('0x150'),_0x1ee632[_0x1123b4],_0x226b('0x151')));return{'code':0xc8,'result':_0x226b('0x151')};}else{logger['info'](util[_0x226b('0x2e')]('IFTIME\x20%s\x20%s',_0x1ee632[_0x1123b4],_0x226b('0x152')));this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x150'),_0x1ee632[_0x1123b4],_0x226b('0x152')));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0x226b('0x13')]['hangup']=function(_0x2eb586){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x153'),_0x2eb586[_0x226b('0x3e')]));return this['channel']['hangup']();};AGIVertices[_0x226b('0x13')][_0x226b('0x154')]=function(_0x4b9975){logger['info'](util['format'](_0x226b('0x155'),_0x4b9975[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x4b9975[_0x226b('0x81')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xf6'));}var _0x49f22c=_0x226b('0x137');var _0x5158bc=util[_0x226b('0x2e')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x626cc3=util[_0x226b('0x2e')](_0x226b('0xa5'),_0x5158bc,_0x49f22c);var _0x3ec943=!![];if(_0x4b9975[_0x226b('0x156')]===_0x226b('0x139')){_0x3ec943=![];}var _0x52c22d=this[_0x226b('0x10')]['recordFile'](_0x5158bc,_0x49f22c,_0x4b9975['intKey'],_0x4b9975['timeout'],undefined,_0x3ec943);if(_0x52c22d[_0x226b('0xb1')]!==-0x1){this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x157'),_0x626cc3));var _0x17061f=this[_0x226b('0x8a')]['sync'](this,_0x4b9975,_0x626cc3);if(_0x17061f){for(var _0x5b0e6d in _0x17061f){if(_0x17061f[_0x226b('0x9c')](_0x5b0e6d)){this[_0x226b('0x10')]['setVariable'](util[_0x226b('0x2e')]('ISPEECH_ASR_%s',_0x5b0e6d[_0x226b('0xf9')]()),_0x17061f[_0x5b0e6d]);}}return this[_0x226b('0x10')]['noop'](util[_0x226b('0x2e')](_0x226b('0x158'),JSON['stringify'](_0x17061f)));}}return _0x52c22d;};AGIVertices[_0x226b('0x13')][_0x226b('0x159')]=function(_0x232e32){logger[_0x226b('0x35')](util['format'](_0x226b('0x15a'),_0x232e32[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x232e32[_0x226b('0x81')])){return this[_0x226b('0x10')]['noop']('no\x20key\x20configured');}if(!this['isConfigured'](_0x232e32[_0x226b('0x65')])){return this['channel'][_0x226b('0xae')](_0x226b('0xaf'));}this['channel']['noop'](util[_0x226b('0x2e')](_0x226b('0x15b'),_0x232e32[_0x226b('0x65')]));var _0x240890=this[_0x226b('0x88')][_0x226b('0xab')](this,_0x232e32);if(_0x240890){this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')]('ispeech\x20%s\x20file\x20created',_0x240890));var _0x355be2=this[_0x226b('0x10')][_0x226b('0x10d')](_0x240890,_0x232e32[_0x226b('0x141')]);try{fs['unlink'](_0x240890+_0x226b('0x10f'));}catch(_0x289d6c){logger['error'](_0x289d6c);}return _0x355be2;}return this[_0x226b('0x10')][_0x226b('0x5a')](_0x232e32,_0x226b('0x15c'));};AGIVertices[_0x226b('0x13')]['login']=function(_0x24862d){logger['info'](util[_0x226b('0x2e')](_0x226b('0x15d'),_0x24862d['label']));if(!this['isConfigured'](_0x24862d[_0x226b('0x15e')])){return this[_0x226b('0x10')]['error'](_0x24862d,'no\x20find\x20by\x20configured');}logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x15f'),this['channel']['callerid'],_0x24862d['findBy']));var _0xc0433a=this[_0x226b('0x5f')]['sync'](this,_0x24862d[_0x226b('0x15e')]);if(_0xc0433a){logger['info'](util[_0x226b('0x2e')](_0x226b('0x160'),this[_0x226b('0x10')][_0x226b('0x41')],_0x24862d[_0x226b('0x15e')]));this['channel']['noop'](util[_0x226b('0x2e')](_0x226b('0x160'),this[_0x226b('0x10')][_0x226b('0x41')],_0x24862d[_0x226b('0x15e')]));return{'code':0xc8,'result':_0x226b('0x161')};}else{logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x162'),this[_0x226b('0x10')][_0x226b('0x41')],_0x24862d[_0x226b('0x15e')]));this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x162'),this[_0x226b('0x10')][_0x226b('0x41')],_0x24862d[_0x226b('0x15e')]));return{'code':0xc8,'result':_0x226b('0x163')};}};AGIVertices['prototype'][_0x226b('0x164')]=function(_0x3a84c4){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x165'),_0x3a84c4[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x3a84c4[_0x226b('0x15e')])){return this[_0x226b('0x10')]['error'](_0x3a84c4,_0x226b('0x166'));}logger[_0x226b('0x35')](util[_0x226b('0x2e')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x226b('0x10')]['callerid'],_0x3a84c4['findBy']));var _0x5777d3=this[_0x226b('0x5b')]['sync'](this,_0x3a84c4['findBy']);if(_0x5777d3){logger['info'](util['format'](_0x226b('0x160'),this['channel'][_0x226b('0x41')],_0x3a84c4[_0x226b('0x15e')]));this[_0x226b('0x10')]['noop'](util[_0x226b('0x2e')](_0x226b('0x160'),this['channel'][_0x226b('0x41')],_0x3a84c4['findBy']));return{'code':0xc8,'result':_0x226b('0x161')};}else{logger[_0x226b('0x35')](util[_0x226b('0x2e')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x226b('0x10')][_0x226b('0x41')],_0x3a84c4[_0x226b('0x15e')]));this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x226b('0x10')][_0x226b('0x41')],_0x3a84c4[_0x226b('0x15e')]));return{'code':0xc8,'result':_0x226b('0x163')};}};AGIVertices[_0x226b('0x13')][_0x226b('0x167')]=function(_0x4e0110){logger[_0x226b('0x35')](util['format'](_0x226b('0x168'),_0x4e0110[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x4e0110[_0x226b('0x169')])){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x4e0110,'no\x20operation\x20configured');}this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')]('math\x20%s',_0x4e0110['operation']));var _0x56d7cc=eval(_0x4e0110['operation']);if(!this[_0x226b('0xaa')](_0x4e0110[_0x226b('0xe3')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xe2'));}var _0x5010ac=this['getVariable'][_0x226b('0xab')](this,_0x4e0110[_0x226b('0xe3')]);if(!_0x5010ac){return this['channel']['error'](_0x4e0110,_0x226b('0xe4'));}if(_[_0x226b('0xa1')](_0x56d7cc)){var _0x44c5ae=this;_0x56d7cc[_0x226b('0xe5')](function(_0x49f77b,_0x110666){_0x44c5ae[_0x226b('0x10')][_0x226b('0xa4')](util[_0x226b('0x2e')]('%s[%s]',_0x5010ac,_0x110666),_0x49f77b);});return this['channel'][_0x226b('0xae')](util['format'](_0x226b('0x16a'),_0x5010ac));}else{return this[_0x226b('0x10')]['setVariable'](_0x5010ac,_0x56d7cc);}};AGIVertices['prototype'][_0x226b('0xd')]=function(_0x25a097){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x16b'),_0x25a097[_0x226b('0x3e')]));if(_0x25a097[_0x226b('0xac')]===0x0){return this[_0x226b('0x11a')](_0x25a097);}_0x25a097['retry']-=0x1;if(!this['isConfigured'](_0x25a097[_0x226b('0x11b')])){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x25a097,_0x226b('0x11c'));}var _0x4aeca0=this[_0x226b('0x22')][_0x226b('0xab')](this,_0x25a097[_0x226b('0x11b')]);if(!_0x4aeca0){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x25a097,_0x226b('0x11d'));}var _0x47880b=this[_0x226b('0x10')]['getData'](_0x4aeca0,_0x25a097[_0x226b('0x11f')],_0x25a097['digit']);var _0x5dbe19=_0x47880b[_0x226b('0xb1')];if(_0x47880b[_0x226b('0xb1')]===-0x1){this[_0x226b('0x3c')]['sync'](this,_0x25a097,'-1');return _0x47880b;}else if(_0x47880b[_0x226b('0xa8')]==='timeout'){_0x47880b[_0x226b('0xb1')]=_0x47880b[_0x226b('0xb1')]['length']>0x0?_0x47880b[_0x226b('0xb1')]:'t';}else if(_[_0x226b('0x4c')](_0x47880b['result'])){_0x47880b[_0x226b('0xb1')]='#';_0x5dbe19='#';}if(!this[_0x226b('0xaa')](_0x25a097[_0x226b('0xe3')])){this[_0x226b('0x10')][_0x226b('0xae')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x51cb1c=this[_0x226b('0x14')][_0x226b('0xab')](this,_0x25a097[_0x226b('0xe3')]);if(!_0x51cb1c){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x25a097,_0x226b('0xe4'));}this['channel'][_0x226b('0xa4')](_0x51cb1c,_0x5dbe19);}this[_0x226b('0x3c')][_0x226b('0xab')](this,_0x25a097,_0x5dbe19);return _0x47880b;};AGIVertices[_0x226b('0x13')]['noop']=function(_0x370415){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x16c'),_0x370415[_0x226b('0x3e')]));return this[_0x226b('0x10')][_0x226b('0xae')](_0x370415[_0x226b('0x16d')]||_0x370415[_0x226b('0x3e')]);};AGIVertices[_0x226b('0x13')][_0x226b('0x16e')]=function(_0x4cfb3e){logger['info'](util[_0x226b('0x2e')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x4cfb3e[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x4cfb3e[_0x226b('0x15e')])){return this[_0x226b('0x10')]['error'](_0x4cfb3e,_0x226b('0x166'));}logger[_0x226b('0x35')](util[_0x226b('0x2e')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x226b('0x10')][_0x226b('0x41')],_0x4cfb3e['findBy']));var _0x4c4708=this['getPause'][_0x226b('0xab')](this,_0x4cfb3e['pause_id']);var _0x4a8d22=this[_0x226b('0x58')]['sync'](this,_0x4cfb3e[_0x226b('0x15e')],_0x4c4708);if(_0x4a8d22){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x160'),this['channel']['callerid'],_0x4cfb3e[_0x226b('0x15e')]));this[_0x226b('0x10')][_0x226b('0xae')](util['format'](_0x226b('0x160'),this[_0x226b('0x10')][_0x226b('0x41')],_0x4cfb3e[_0x226b('0x15e')]));return{'code':0xc8,'result':_0x226b('0x161')};}else{logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x162'),this[_0x226b('0x10')][_0x226b('0x41')],_0x4cfb3e['findBy']));this[_0x226b('0x10')][_0x226b('0xae')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x226b('0x41')],_0x4cfb3e[_0x226b('0x15e')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x226b('0x13')][_0x226b('0x16f')]=function(_0x128d50){logger[_0x226b('0x35')](util['format']('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0x128d50['label']));if(!this[_0x226b('0xaa')](_0x128d50[_0x226b('0x11b')])){return this['channel'][_0x226b('0x5a')](_0x128d50,_0x226b('0x11c'));}var _0x39da66=this[_0x226b('0x22')][_0x226b('0xab')](this,_0x128d50[_0x226b('0x11b')]);if(!_0x39da66){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x128d50,_0x226b('0x11d'));}var _0x3ea701=this[_0x226b('0x10')]['exec'](_0x226b('0x170'),[_0x39da66,_0x128d50[_0x226b('0xf1')]]);if(_0x3ea701[_0x226b('0xb1')]===-0x1){return _0x3ea701;}return this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0xcc'),'PLAYBACK',_0x39da66));};AGIVertices[_0x226b('0x13')]['queue']=function(_0xc1381e){logger['info'](util[_0x226b('0x2e')](_0x226b('0x171'),_0xc1381e[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0xc1381e['queue_id'])){return this[_0x226b('0x10')]['error'](_0xc1381e,'no\x20queue\x20selected');}var _0x49c224='';var _0x511617=parseInt(_0xc1381e[_0x226b('0x172')],0xa);if(isNaN(_0x511617)){_0x49c224=_0xc1381e[_0x226b('0x172')];}else{_0x49c224=this[_0x226b('0x19')][_0x226b('0xab')](this,_0xc1381e['queue_id']);if(!_0x49c224){return this['channel'][_0x226b('0x5a')](_0xc1381e,'no\x20queue\x20found');}}var _0x5b72a9='';if(this[_0x226b('0xaa')](_0xc1381e[_0x226b('0x11b')])){var _0x20bdff=this[_0x226b('0x22')]['sync'](this,_0xc1381e[_0x226b('0x11b')]);if(_0x20bdff){_0x5b72a9=_0x20bdff;}}this['createSquareDetailsReport'][_0x226b('0xab')](this,_0xc1381e,_0x49c224);if(_0xc1381e[_0x226b('0xf1')][_0x226b('0x173')]('x')<0x0){_0xc1381e[_0x226b('0xf1')]+='x';}if(_0xc1381e[_0x226b('0xf1')][_0x226b('0x173')]('X')<0x0){_0xc1381e['opts']+='X';}this[_0x226b('0x10')][_0x226b('0xa4')](_0x226b('0x174'),_0x49c224?_0x49c224[_0x226b('0x175')]():'');var _0xfa7a85=this[_0x226b('0x10')][_0x226b('0x60')](_0x226b('0x176'),[_0x49c224,_0xc1381e['opts'],_0xc1381e[_0x226b('0x6d')],_0x5b72a9,_0xc1381e[_0x226b('0x6f')],_0xc1381e[_0x226b('0x9')],_0xc1381e[_0x226b('0x177')],_0xc1381e['gosub'],'',_0xc1381e[_0x226b('0x178')]]);if(_0xfa7a85['result']===-0x1){return _0xfa7a85;}return this['channel'][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0xcc'),_0x226b('0x176'),_0x49c224));};AGIVertices[_0x226b('0x13')][_0x226b('0x179')]=function(_0x482189){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x17a'),_0x482189[_0x226b('0x3e')]));var _0x564112=_0x482189['recordingFormat']||'wav';var _0x11f265=util[_0x226b('0x2e')]('%s_%s',this[_0x226b('0x10')][_0x226b('0x3d')],rs['generate'](0x5));var _0xbacdab=util[_0x226b('0x2e')](_0x226b('0x17b'),FILES_PATH,_0x11f265,_0x564112);var _0x33ecdc=util[_0x226b('0x2e')](_0x226b('0x138'),FILES_PATH,_0x11f265);this[_0x226b('0x42')][_0x226b('0xab')](this,_0x482189,_0x11f265,_0xbacdab);this[_0x226b('0x10')][_0x226b('0xa4')]('RECORDING_SAVENAME',_0x11f265);logger[_0x226b('0x35')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x33ecdc,_0x564112,_0x482189[_0x226b('0x17c')],_0x482189[_0x226b('0x6f')]);return this[_0x226b('0x10')][_0x226b('0x13a')](_0x33ecdc,_0x564112,_0x482189[_0x226b('0x17c')],_0x482189[_0x226b('0x6f')],undefined,!![]);};AGIVertices[_0x226b('0x13')][_0x226b('0x17d')]=function(_0xe36ab8){logger[_0x226b('0x35')](util[_0x226b('0x2e')]('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0xe36ab8[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0xe36ab8[_0x226b('0x6d')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0x17e'));}var _0x29b356=this[_0x226b('0x6c')][_0x226b('0xab')](this,_0xe36ab8);logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x17f'),util[_0x226b('0x180')](_0x29b356,{'showHidden':![],'depth':null})));if(!this[_0x226b('0xaa')](_0xe36ab8[_0x226b('0xe3')])){return this['channel']['noop'](_0x226b('0x181'));}var _0x3cd037=this[_0x226b('0x14')]['sync'](this,_0xe36ab8[_0x226b('0xe3')]);if(!_0x3cd037){return this[_0x226b('0x10')][_0x226b('0x5a')](_0xe36ab8,_0x226b('0xe4'));}this['channel'][_0x226b('0xa4')](util[_0x226b('0x2e')]('%s_STATUS_CODE',_0x3cd037),_0x29b356[_0x226b('0x7c')]?_0x29b356[_0x226b('0x7c')]:_0x226b('0x182'));this[_0x226b('0x10')]['setVariable'](util[_0x226b('0x2e')](_0x226b('0x183'),_0x3cd037),_0x29b356['statusMessage']?_0x29b356[_0x226b('0x7d')]:'OK');if(_0x29b356[_0x226b('0x73')]){try{this['saveRestApiResult'](_0x29b356[_0x226b('0x73')],_0x3cd037);}catch(_0xa0d362){logger[_0x226b('0x5a')](util[_0x226b('0x2e')](_0x226b('0x184'),_0x3cd037));}}return this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0xe9'),_0x3cd037));};AGIVertices[_0x226b('0x13')][_0x226b('0x185')]=function(_0x7ab23b){logger[_0x226b('0x35')](util[_0x226b('0x2e')]('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x7ab23b[_0x226b('0x3e')]));return this[_0x226b('0x10')][_0x226b('0x186')](_0x7ab23b['digits'][_0x226b('0x62')](/\s+/g,''),_0x7ab23b['escape_digits']);};AGIVertices['prototype'][_0x226b('0x187')]=function(_0x449442){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x188'),_0x449442[_0x226b('0x3e')]));return this[_0x226b('0x10')][_0x226b('0x189')](_0x449442[_0x226b('0x70')]['replace'](/\s+/g,''),_0x449442[_0x226b('0x17c')]);};AGIVertices[_0x226b('0x13')]['sayphonetic']=function(_0x2f8619){logger['info'](util[_0x226b('0x2e')](_0x226b('0x18a'),_0x2f8619[_0x226b('0x3e')]));return this[_0x226b('0x10')]['sayPhonetic'](_0x2f8619[_0x226b('0x65')],_0x2f8619[_0x226b('0x17c')]);};AGIVertices[_0x226b('0x13')][_0x226b('0x18b')]=function(_0xb656c){logger['info'](util[_0x226b('0x2e')](_0x226b('0x18c'),_0xb656c[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0xb656c['account_id'])){return this[_0x226b('0x10')][_0x226b('0xae')]('no\x20mail\x20account\x20configured');}var _0xb79410=this[_0x226b('0x26')]['sync'](this,_0xb656c[_0x226b('0x18d')]);if(!_0xb79410||!_0xb79410['Smtp']){return this[_0x226b('0x10')][_0x226b('0x5a')](_0xb656c,_0x226b('0x18e'));}var _0x2b8459={'from':util[_0x226b('0x2e')](_0x226b('0x18f'),_0xb79410[_0x226b('0x17')],_0xb79410[_0x226b('0x190')]||_0xb79410[_0x226b('0x191')][_0x226b('0x192')]),'to':_0xb656c['to']||'','cc':_0xb656c['cc']||'','bcc':_0xb656c[_0x226b('0x193')]||'','subject':_0xb656c['subject'],'html':_0xb656c['text'],'text':_0xb656c[_0x226b('0x65')]};var _0x5cf73a={'tls':{'rejectUnauthorized':![]}};if(_0xb79410[_0x226b('0x191')][_0x226b('0x194')]){_0x5cf73a[_0x226b('0x194')]=_0xb79410[_0x226b('0x191')][_0x226b('0x194')];}else{_0x5cf73a['host']=_0xb79410['Smtp'][_0x226b('0x195')];_0x5cf73a[_0x226b('0x196')]=_0xb79410['Smtp']['port'];_0x5cf73a['secure']=_0xb79410[_0x226b('0x191')][_0x226b('0x197')];}if(_0xb79410['Smtp'][_0x226b('0x198')]){_0x5cf73a[_0x226b('0x199')]={'user':_0xb79410['Smtp'][_0x226b('0x192')],'pass':_0xb79410['Smtp']['pass']};}if(this['isConfigured'](_0xb656c[_0x226b('0x19a')])){}logger[_0x226b('0xeb')](_0x226b('0x19b'),JSON[_0x226b('0xa6')](_0x2b8459));this[_0x226b('0x3c')][_0x226b('0xab')](this,_0xb656c,_0xb656c['account_id']);this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')]('Trying\x20SendMail\x20with\x20account\x20%s',_0xb79410[_0x226b('0x17')]));this['sendMailMessage'][_0x226b('0xab')](this,_0x5cf73a,_0x2b8459);return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0x19c'));};AGIVertices[_0x226b('0x13')][_0x226b('0x19d')]=function(_0x29eec4){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x19e'),_0x29eec4['label']));return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0x19f'));};AGIVertices[_0x226b('0x13')][_0x226b('0x1a0')]=function(_0x4869f0){logger['info'](util[_0x226b('0x2e')](_0x226b('0x1a1'),_0x4869f0['label']));if(!this[_0x226b('0xaa')](_0x4869f0[_0x226b('0x1a2')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0x1a3'));}var _0x59f558=this[_0x226b('0x39')]['sync'](this,_0x4869f0[_0x226b('0x1a2')]);if(!_0x59f558){return this['channel']['error'](_0x4869f0,'no\x20sms\x20account\x20found');}var _0x31bb81={'body':_0x4869f0['sms_text'],'phone':_0x4869f0['to']||'','SmsAccountId':_0x59f558['id']};logger[_0x226b('0xeb')](_0x226b('0x1a4'),JSON['stringify'](_0x31bb81));this[_0x226b('0x3c')][_0x226b('0xab')](this,_0x4869f0,_0x4869f0[_0x226b('0x1a2')]);this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x1a5'),_0x59f558[_0x226b('0x17')]));this[_0x226b('0x3b')][_0x226b('0xab')](this,_0x31bb81);return this[_0x226b('0x10')]['noop'](_0x226b('0x1a6'));};AGIVertices['prototype'][_0x226b('0x1a7')]=function(_0x420358){logger[_0x226b('0x35')](util['format'](_0x226b('0x1a8'),_0x420358[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0x420358[_0x226b('0xe3')])){return this[_0x226b('0x10')]['error'](_0x420358,'no\x20variable\x20selected');}var _0x384186=this['getVariable']['sync'](this,_0x420358[_0x226b('0xe3')]);if(!_0x384186){return this[_0x226b('0x10')]['error'](_0x420358,_0x226b('0xe4'));}return this['channel'][_0x226b('0xa4')](_0x384186,_0x420358['variable_value']);};AGIVertices['prototype']['start']=function(_0x45db3e){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x1a9'),_0x45db3e[_0x226b('0x3e')]));this['channel']['noop'](_0x226b('0x1aa'));if(_0x45db3e['answer']==='yes'){this['channel'][_0x226b('0xae')](_0x226b('0x1ab'));return this[_0x226b('0x10')]['answer']();}return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0x1ac'));};AGIVertices[_0x226b('0x13')][_0x226b('0x1ad')]=function(_0x21072f){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x1ae'),_0x21072f['label']));if(!this[_0x226b('0xaa')](_0x21072f[_0x226b('0x1af')])){return this['channel'][_0x226b('0x5a')](_0x21072f,_0x226b('0x1b0'));}var _0x25149c=this[_0x226b('0x1b1')]['sync'](this,_0x21072f[_0x226b('0x1af')]);if(!this['isConfigured'](_0x25149c)){return this['channel'][_0x226b('0x5a')](_0x21072f,util[_0x226b('0x2e')](_0x226b('0x1b2'),_0x21072f[_0x226b('0x1af')]));}if(_0x25149c===this[_0x226b('0x10')][_0x226b('0x40')]){return this['channel'][_0x226b('0x5a')](_0x21072f,_0x226b('0x1b3'));}this[_0x226b('0x3c')][_0x226b('0xab')](this,_0x21072f,_0x25149c);var _0x383b02=this['channel'][_0x226b('0x60')](_0x226b('0x1b4'),util[_0x226b('0x2e')](_0x226b('0x1b5'),config[_0x226b('0x9')]['host']||'127.0.0.1',_0x25149c,this[_0x226b('0x10')]['arg_1']));if(_0x383b02[_0x226b('0xb1')]===-0x1){return _0x383b02;}return this['channel'][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0xcc'),'AGI',_0x25149c));};AGIVertices[_0x226b('0x13')][_0x226b('0x1b6')]=function(_0x3d5db6){logger['info'](util['format']('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x3d5db6[_0x226b('0x3e')]));var _0x1f9d04=this[_0x226b('0x1b7')][_0x226b('0xab')](this,_0x3d5db6[_0x226b('0xc0')]);this[_0x226b('0x3c')]['sync'](this,_0x3d5db6,_0x3d5db6[_0x226b('0xc0')]);if(this[_0x226b('0xaa')](_0x3d5db6[_0x226b('0xe3')])){var _0x1d8d92=this[_0x226b('0x14')][_0x226b('0xab')](this,_0x3d5db6[_0x226b('0xe3')]);if(_0x1d8d92){this['channel']['setVariable'](_0x1d8d92,_0x1f9d04);return this['channel'][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x1b8'),_0x3d5db6[_0x226b('0xc0')],_0x1d8d92));}}return this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x3d5db6[_0x226b('0xc0')]));};AGIVertices[_0x226b('0x13')][_0x226b('0x1b9')]=function(_0x471624){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x1ba'),_0x471624[_0x226b('0x3e')]));_0x471624[_0x226b('0x65')]=_0x471624[_0x226b('0x65')][_0x226b('0x62')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x226b('0xaa')](_0x471624['apiKey'])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0x1bb'));}if(!this['isConfigured'](_0x471624[_0x226b('0x65')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xaf'));}this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x471624[_0x226b('0x65')]));var _0x356ce0=this[_0x226b('0x1bc')]['sync'](this,_0x471624);if(_0x356ce0){this['channel']['noop'](util[_0x226b('0x2e')](_0x226b('0x1bd'),_0x356ce0));var _0x256061=this[_0x226b('0x10')][_0x226b('0x10d')](_0x356ce0);try{fs[_0x226b('0x10e')](_0x356ce0+_0x226b('0x10f'));}catch(_0x92bbc1){logger[_0x226b('0x5a')](_0x92bbc1);}return _0x256061;}return this[_0x226b('0x10')][_0x226b('0x5a')](_0x471624,_0x226b('0x1be'));};AGIVertices['prototype'][_0x226b('0x1bf')]=function(_0x1162a0){logger['info'](util[_0x226b('0x2e')](_0x226b('0x1c0'),_0x1162a0['label']));_0x1162a0['text']=_0x1162a0[_0x226b('0x65')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x1162a0[_0x226b('0x65')])){return this[_0x226b('0x10')][_0x226b('0xae')](_0x226b('0xaf'));}this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x1c1'),_0x1162a0[_0x226b('0x65')]));var _0x37ada0=this[_0x226b('0x6a')][_0x226b('0xab')](this,_0x1162a0);if(_0x37ada0){this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x1c2'),_0x37ada0));var _0x3057b6=this[_0x226b('0x10')][_0x226b('0x10d')](_0x37ada0);try{fs[_0x226b('0x10e')](_0x37ada0+_0x226b('0x10f'));}catch(_0x3e6d02){logger[_0x226b('0x5a')](_0x3e6d02);}return _0x3057b6;}return this[_0x226b('0x10')][_0x226b('0x5a')](_0x1162a0,_0x226b('0x1c3'));};AGIVertices[_0x226b('0x13')][_0x226b('0x1c4')]=function(_0xb16dd1){logger['info'](util[_0x226b('0x2e')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0xb16dd1[_0x226b('0x3e')]));if(!this[_0x226b('0xaa')](_0xb16dd1['findBy'])){return this[_0x226b('0x10')][_0x226b('0x5a')](_0xb16dd1,'no\x20find\x20by\x20configured');}logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x15f'),this['channel'][_0x226b('0x41')],_0xb16dd1['findBy']));var _0x397ae2=this[_0x226b('0x1c5')][_0x226b('0xab')](this,_0xb16dd1[_0x226b('0x15e')]);if(_0x397ae2){logger['info'](util['format'](_0x226b('0x160'),this[_0x226b('0x10')][_0x226b('0x41')],_0xb16dd1[_0x226b('0x15e')]));this[_0x226b('0x10')][_0x226b('0xae')](util[_0x226b('0x2e')](_0x226b('0x160'),this['channel']['callerid'],_0xb16dd1[_0x226b('0x15e')]));return{'code':0xc8,'result':_0x226b('0x161')};}else{logger[_0x226b('0x35')](util[_0x226b('0x2e')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x226b('0x10')]['callerid'],_0xb16dd1[_0x226b('0x15e')]));this['channel']['noop'](util[_0x226b('0x2e')](_0x226b('0x162'),this[_0x226b('0x10')][_0x226b('0x41')],_0xb16dd1[_0x226b('0x15e')]));return{'code':0xc8,'result':_0x226b('0x163')};}};AGIVertices[_0x226b('0x13')][_0x226b('0x1c6')]=function(_0x2ef482){logger['info'](util[_0x226b('0x2e')](_0x226b('0x1c7'),_0x2ef482[_0x226b('0x3e')]));var _0x23be90=this[_0x226b('0x10')][_0x226b('0x60')](_0x226b('0x1c8'),[_0x2ef482[_0x226b('0x1c9')],_0x2ef482[_0x226b('0x7f')]]);if(_0x23be90[_0x226b('0xb1')]===-0x1){return _0x23be90;}return this[_0x226b('0x10')]['noop'](util[_0x226b('0x2e')](_0x226b('0xcc'),_0x226b('0x1c8'),_0x2ef482[_0x226b('0x1c9')]));};AGIVertices['prototype'][_0x226b('0x1ca')]=function(_0x7438d6){logger[_0x226b('0x35')](util[_0x226b('0x2e')](_0x226b('0x1cb'),_0x7438d6['label']));if(!this[_0x226b('0xaa')](_0x7438d6[_0x226b('0xe3')])){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x7438d6,'no\x20variable\x20selected');}var _0x367012=this[_0x226b('0x14')]['sync'](this,_0x7438d6[_0x226b('0xe3')]);if(!_0x367012){return this[_0x226b('0x10')][_0x226b('0x5a')](_0x7438d6,_0x226b('0xe4'));}var _0x3a49e1=this[_0x226b('0x10')][_0x226b('0x14')](_0x367012);return{'code':0xc8,'result':_0x3a49e1[_0x226b('0xa8')]?_0x3a49e1[_0x226b('0xa8')]:'-'};};String[_0x226b('0x13')][_0x226b('0x1cc')]=function(_0x3fd27b,_0x27f3b9){return this[_0x226b('0xa7')](_0x3fd27b)[_0x226b('0x1cd')](_0x27f3b9);};module['exports']=AGIVertices;
\ No newline at end of file
index 4344885..e54736d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb324=['[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','update','catch','[%s][UPDATE][ERRORS:%s]','error','[ACW][START]\x20%s','message','prototype','queue','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][TIMERS]','[ACW][STOP]\x20%s','interface','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','util','lodash','moment','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','timers','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','startAcw','channels','mandatoryDisposition','mandatoryDispositionPause','name','Action','agents','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause'];(function(_0x18d6c7,_0x2f2fd4){var _0x5661cc=function(_0x1bef56){while(--_0x1bef56){_0x18d6c7['push'](_0x18d6c7['shift']());}};_0x5661cc(++_0x2f2fd4);}(_0xb324,0xd0));var _0x4b32=function(_0x44278e,_0xa37846){_0x44278e=_0x44278e-0x0;var _0x44200d=_0xb324[_0x44278e];return _0x44200d;};'use strict';var util=require(_0x4b32('0x0'));var _=require(_0x4b32('0x1'));var moment=require(_0x4b32('0x2'));var ami=require('../ami');var logger=require(_0x4b32('0x3'))(_0x4b32('0x4'));var RpcUser=require(_0x4b32('0x5'));var RpcVoiceAgentReport=require(_0x4b32('0x6'));function Acw(_0x3989a4){this[_0x4b32('0x7')]=_0x3989a4[_0x4b32('0x7')];this['agents']=_0x3989a4['agents'];this[_0x4b32('0x8')]=_0x3989a4[_0x4b32('0x8')];this['channels']={};ami['on']('agentconnect',this[_0x4b32('0x9')][_0x4b32('0xa')](this));ami['on'](_0x4b32('0xb'),this[_0x4b32('0xc')]['bind'](this));ami['on']('hangup',this[_0x4b32('0xd')]['bind'](this));ami['on']('agentringnoanswer',this[_0x4b32('0xe')][_0x4b32('0xa')](this));ami['on'](_0x4b32('0xf'),this[_0x4b32('0x10')][_0x4b32('0xa')](this));ami['on']('blindtransfer',this[_0x4b32('0x11')]['bind'](this));ami['on'](_0x4b32('0x12'),this[_0x4b32('0x13')][_0x4b32('0xa')](this));}function getDiff(_0x36e823){var _0x5dfb11=moment()[_0x4b32('0x14')](0x0);var _0x12e5d0=moment(_0x36e823)['milliseconds'](0x0);return _0x5dfb11['diff'](_0x12e5d0,'seconds');}Acw['prototype'][_0x4b32('0x15')]=function(_0x1e69c6){try{var _0x1faf82=this;var _0x58dedd=this[_0x4b32('0x16')][_0x1e69c6]['interface'];var _0x4fa862=this[_0x4b32('0x16')][_0x1e69c6]['queue'];var _0x1bac12=this['voiceQueues'][_0x4fa862];var _0x306bca=![];var _0x474171='ACW';if(_0x1bac12[_0x4b32('0x17')]){if(_0x1bac12[_0x4b32('0x18')][_0x4b32('0x19')]){_0x306bca=!![];_0x474171=_0x1bac12[_0x4b32('0x18')]['name'];}}ami[_0x4b32('0x1a')]({'action':'QueuePause','interface':_0x58dedd,'paused':!![],'reason':_0x474171})['then'](function(_0x1bedb1){if(_0x1faf82[_0x4b32('0x1b')][_0x58dedd]){return RpcUser['getAgent'](_0x1faf82[_0x4b32('0x1b')][_0x58dedd]['id'])[_0x4b32('0x1c')](function(_0x1ccc4c){if(_0x1ccc4c&&!_0x1ccc4c[_0x4b32('0x1d')]){logger[_0x4b32('0x1e')](_0x4b32('0x1f'),_0x1e69c6,_0x58dedd,_0x4fa862);var _0x579c62=_0x1faf82['channels'][_0x1e69c6][_0x4b32('0x20')]&&_0x1faf82['channels'][_0x1e69c6][_0x4b32('0x21')]?_0x1faf82[_0x4b32('0x16')][_0x1e69c6]['destlinkedid']:_0x1e69c6;return RpcUser[_0x4b32('0x22')](_0x1faf82[_0x4b32('0x1b')][_0x58dedd],_0x474171,_0x579c62)['then'](function(_0x561235){if(!_0x306bca){_0x1faf82[_0x4b32('0x8')][_0x58dedd]={};logger[_0x4b32('0x1e')](_0x4b32('0x23'),_0x1e69c6,_0x1faf82[_0x4b32('0x7')][_0x4fa862][_0x4b32('0x24')],_0x58dedd,_0x4fa862);_0x1faf82[_0x4b32('0x8')][_0x58dedd][_0x4b32('0x25')]=setTimeout(_0x1faf82[_0x4b32('0x26')][_0x4b32('0xa')](_0x1faf82,_0x58dedd),_0x1faf82[_0x4b32('0x7')][_0x4fa862][_0x4b32('0x24')]*0x3e8);_0x1faf82[_0x4b32('0x8')][_0x58dedd][_0x4b32('0x27')]=moment()[_0x4b32('0x28')](_0x4b32('0x29'));_0x1faf82['timers'][_0x58dedd][_0x4b32('0x2a')]=_0x1e69c6;_0x1faf82['timers'][_0x58dedd]['queue']=_0x4fa862;_0x1faf82[_0x4b32('0x8')][_0x58dedd]['updateAcw']=function(){var _0xa34031=getDiff(_0x1faf82[_0x4b32('0x8')][_0x58dedd][_0x4b32('0x27')]);clearTimeout(_0x1faf82['timers'][_0x58dedd]['timer']);_0x1faf82[_0x4b32('0x8')][_0x58dedd]['timer']=![];RpcVoiceAgentReport[_0x4b32('0x2b')]({'acwtime':_0xa34031},_0x1faf82['timers'][_0x58dedd][_0x4b32('0x2a')],_0x58dedd)[_0x4b32('0x1c')](function(_0xc6b99e){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x1e69c6,_0xa34031,_0xc6b99e);})[_0x4b32('0x2c')](function(_0x4cc20f){logger['error'](_0x4b32('0x2d'),_0x1e69c6,_0x4cc20f);});delete _0x1faf82[_0x4b32('0x8')][_0x58dedd];};}});}else{logger[_0x4b32('0x1e')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x1e69c6,_0x58dedd,_0x4fa862);}});}})['catch'](function(_0x3f6243){logger[_0x4b32('0x2e')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x1e69c6,_0x1faf82[_0x4b32('0x7')][_0x4fa862][_0x4b32('0x24')],_0x58dedd,_0x4fa862);})['finally'](function(){delete _0x1faf82[_0x4b32('0x16')][_0x1e69c6];});}catch(_0x50d7fa){logger[_0x4b32('0x2e')](_0x4b32('0x2f'),_0x50d7fa[_0x4b32('0x30')]);}};Acw[_0x4b32('0x31')][_0x4b32('0x26')]=function(_0x4bfb34){try{var _0x455a0=this;if(_0x455a0[_0x4b32('0x8')][_0x4bfb34]){_0x455a0[_0x4b32('0x8')][_0x4bfb34][_0x4b32('0x25')]=![];var _0x3309a6=_0x455a0['timers'][_0x4bfb34][_0x4b32('0x2a')];var _0x5b18e9=_0x455a0[_0x4b32('0x8')][_0x4bfb34][_0x4b32('0x32')];var _0x1ae317=_0x455a0['voiceQueues'][_0x5b18e9][_0x4b32('0x24')];logger[_0x4b32('0x1e')]('[%s][TIMER][STOP][AGENT:%s]',_0x3309a6,_0x4bfb34);RpcUser[_0x4b32('0x33')](this[_0x4b32('0x1b')][_0x4bfb34]);RpcVoiceAgentReport[_0x4b32('0x2b')]({'acwtime':_0x1ae317,'agentacw':!![]},_0x3309a6,_0x4bfb34)[_0x4b32('0x1c')](function(_0x42bc2d){logger[_0x4b32('0x1e')](_0x4b32('0x34'),_0x3309a6,_0x1ae317,_0x42bc2d);})[_0x4b32('0x2c')](function(_0xc49666){logger['error'](_0x4b32('0x2d'),_0x3309a6,_0xc49666);});}else{logger[_0x4b32('0x2e')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x4bfb34);if(_0x455a0['timers']){logger['info'](_0x4b32('0x35'),JSON['stringify'](_0x455a0['timers']));}}}catch(_0x13fc0e){logger[_0x4b32('0x2e')](_0x4b32('0x36'),_0x13fc0e[_0x4b32('0x30')]);}};Acw[_0x4b32('0x31')][_0x4b32('0x9')]=function(_0x17b7a7){try{if(this[_0x4b32('0x7')][_0x17b7a7[_0x4b32('0x32')]]&&(this['voiceQueues'][_0x17b7a7[_0x4b32('0x32')]][_0x4b32('0x4')]||this[_0x4b32('0x7')][_0x17b7a7[_0x4b32('0x32')]][_0x4b32('0x17')])){if(this[_0x4b32('0x1b')][_0x17b7a7[_0x4b32('0x37')]]){this[_0x4b32('0x16')][_0x17b7a7[_0x4b32('0x2a')]]={'queue':_0x17b7a7[_0x4b32('0x32')],'interface':_0x17b7a7['interface'],'destlinkedid':_0x17b7a7[_0x4b32('0x21')]};}}}catch(_0xb7105){logger[_0x4b32('0x2e')](_0x4b32('0x38'),_0xb7105[_0x4b32('0x30')]);}};Acw[_0x4b32('0x31')]['syncAgentConnectPreview']=function(_0x55d7da){try{if(this[_0x4b32('0x7')][_0x55d7da[_0x4b32('0x32')]]&&(this[_0x4b32('0x7')][_0x55d7da[_0x4b32('0x32')]]['acw']||this['voiceQueues'][_0x55d7da[_0x4b32('0x32')]][_0x4b32('0x17')])){if(this[_0x4b32('0x1b')][_0x55d7da[_0x4b32('0x37')]]){this['channels'][_0x55d7da[_0x4b32('0x2a')]]={'queue':_0x55d7da[_0x4b32('0x32')],'interface':_0x55d7da[_0x4b32('0x37')]};}}}catch(_0x28fa1e){logger[_0x4b32('0x2e')](_0x4b32('0x39'),_0x28fa1e[_0x4b32('0x30')]);}};Acw[_0x4b32('0x31')][_0x4b32('0xc')]=function(_0x2511b7){try{if(this[_0x4b32('0x16')][_0x2511b7[_0x4b32('0x2a')]]&&_[_0x4b32('0x3a')](this[_0x4b32('0x16')][_0x2511b7[_0x4b32('0x2a')]][_0x4b32('0x20')])){logger[_0x4b32('0x1e')](_0x4b32('0x3b'),_0x2511b7[_0x4b32('0x2a')]);this[_0x4b32('0x15')](_0x2511b7[_0x4b32('0x2a')]);}else if(this[_0x4b32('0x16')][_0x2511b7['linkedid']]&&_[_0x4b32('0x3a')](this['channels'][_0x2511b7[_0x4b32('0x3c')]][_0x4b32('0x20')])){logger[_0x4b32('0x1e')](_0x4b32('0x3d'),_0x2511b7[_0x4b32('0x3c')]);this[_0x4b32('0x15')](_0x2511b7['linkedid']);}}catch(_0x2e792f){logger['error'](_0x4b32('0x3e'),_0x2e792f[_0x4b32('0x30')]);}};Acw[_0x4b32('0x31')][_0x4b32('0xd')]=function(_0xb0b37e){try{if(this['channels'][_0xb0b37e['uniqueid']]&&this['channels'][_0xb0b37e['uniqueid']][_0x4b32('0x20')]){logger[_0x4b32('0x1e')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0xb0b37e[_0x4b32('0x2a')]);this['startAcw'](_0xb0b37e[_0x4b32('0x2a')]);}else if(this['channels'][_0xb0b37e[_0x4b32('0x3c')]]&&this[_0x4b32('0x16')][_0xb0b37e[_0x4b32('0x3c')]][_0x4b32('0x20')]){logger[_0x4b32('0x1e')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0xb0b37e[_0x4b32('0x3c')]);this['startAcw'](_0xb0b37e[_0x4b32('0x3c')]);}}catch(_0x1e6356){logger[_0x4b32('0x2e')](_0x4b32('0x3f'),_0x1e6356[_0x4b32('0x30')]);}};Acw[_0x4b32('0x31')][_0x4b32('0x10')]=function(_0x4ef5d0){try{if(!_['isNil'](this[_0x4b32('0x16')][_0x4ef5d0['transfereeuniqueid']])){this['startAcw'](_0x4ef5d0[_0x4b32('0x40')]);if(this['channels'][_0x4ef5d0[_0x4b32('0x41')]]){this[_0x4b32('0x16')][_0x4ef5d0['secondtransfereruniqueid']][_0x4b32('0x20')]=!![];this['channels'][_0x4ef5d0[_0x4b32('0x42')]]=this[_0x4b32('0x16')][_0x4ef5d0[_0x4b32('0x41')]];delete this[_0x4b32('0x16')][_0x4ef5d0['secondtransfereruniqueid']];}}else if(!_[_0x4b32('0x43')](this[_0x4b32('0x16')][_0x4ef5d0[_0x4b32('0x42')]])){this[_0x4b32('0x15')](_0x4ef5d0[_0x4b32('0x42')]);if(this[_0x4b32('0x16')][_0x4ef5d0[_0x4b32('0x44')]]){this[_0x4b32('0x16')][_0x4ef5d0['origtransfereruniqueid']][_0x4b32('0x20')]=!![];this[_0x4b32('0x16')][_0x4ef5d0[_0x4b32('0x40')]]=this['channels'][_0x4ef5d0[_0x4b32('0x44')]];delete this[_0x4b32('0x16')][_0x4ef5d0[_0x4b32('0x44')]];}}}catch(_0x3caf0b){logger[_0x4b32('0x2e')](_0x4b32('0x45'),_0x3caf0b['message']);}};Acw[_0x4b32('0x31')][_0x4b32('0x11')]=function(_0x3f7c67){try{if(this[_0x4b32('0x16')][_0x3f7c67[_0x4b32('0x46')]]){logger[_0x4b32('0x1e')](_0x4b32('0x47'),JSON[_0x4b32('0x48')](_0x3f7c67[_0x4b32('0x46')]));this[_0x4b32('0x15')](_0x3f7c67['transfereruniqueid']);}else if(this[_0x4b32('0x16')][_0x3f7c67[_0x4b32('0x49')]]){logger[_0x4b32('0x1e')](_0x4b32('0x4a'),JSON[_0x4b32('0x48')](_0x3f7c67['transfererlinkedid']));this['startAcw'](_0x3f7c67['transfererlinkedid']);}}catch(_0x5aca2e){logger[_0x4b32('0x2e')](_0x4b32('0x4b'),_0x5aca2e['message']);}};Acw[_0x4b32('0x31')][_0x4b32('0xe')]=function(_0x1f93a2){try{if(this[_0x4b32('0x7')][_0x1f93a2[_0x4b32('0x32')]]&&this[_0x4b32('0x7')][_0x1f93a2[_0x4b32('0x32')]][_0x4b32('0x4c')]===_0x4b32('0x4d')){if(this[_0x4b32('0x1b')][_0x1f93a2[_0x4b32('0x37')]]){logger[_0x4b32('0x1e')](_0x4b32('0x4e'),_0x1f93a2[_0x4b32('0x2a')],_0x1f93a2['interface'],_0x1f93a2[_0x4b32('0x32')]);return RpcUser[_0x4b32('0x22')](this['agents'][_0x1f93a2['interface']],_0x4b32('0x4f'),_0x1f93a2[_0x4b32('0x2a')]);}}}catch(_0x23f1c3){logger[_0x4b32('0x2e')](_0x4b32('0x50'),_0x23f1c3[_0x4b32('0x30')]);}};module['exports']=Acw;
\ No newline at end of file
+var _0xbbd1=['[ACW][TIMERS]','[ACW][STOP]\x20%s','message','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','isNil','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','stringify','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','hangup','syncHangup','agentringnoanswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','diff','startAcw','interface','queue','ACW','mandatoryDisposition','name','Action','QueuePause','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','lastPauseAt','format','uniqueid','update','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','catch','[ACW][START]\x20%s','prototype','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer'];(function(_0x27f06a,_0x13942e){var _0x5d8672=function(_0x3dac1d){while(--_0x3dac1d){_0x27f06a['push'](_0x27f06a['shift']());}};_0x5d8672(++_0x13942e);}(_0xbbd1,0x163));var _0x1bbd=function(_0x158e3b,_0x4534b){_0x158e3b=_0x158e3b-0x0;var _0x551a1d=_0xbbd1[_0x158e3b];return _0x551a1d;};'use strict';var util=require(_0x1bbd('0x0'));var _=require(_0x1bbd('0x1'));var moment=require(_0x1bbd('0x2'));var ami=require(_0x1bbd('0x3'));var logger=require(_0x1bbd('0x4'))(_0x1bbd('0x5'));var RpcUser=require(_0x1bbd('0x6'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x5d48cf){this[_0x1bbd('0x7')]=_0x5d48cf[_0x1bbd('0x7')];this[_0x1bbd('0x8')]=_0x5d48cf[_0x1bbd('0x8')];this[_0x1bbd('0x9')]=_0x5d48cf[_0x1bbd('0x9')];this[_0x1bbd('0xa')]={};ami['on'](_0x1bbd('0xb'),this[_0x1bbd('0xc')][_0x1bbd('0xd')](this));ami['on'](_0x1bbd('0xe'),this['syncHangupRequest'][_0x1bbd('0xd')](this));ami['on'](_0x1bbd('0xf'),this[_0x1bbd('0x10')]['bind'](this));ami['on'](_0x1bbd('0x11'),this['syncAgentRingNoAnswer']['bind'](this));ami['on'](_0x1bbd('0x12'),this[_0x1bbd('0x13')][_0x1bbd('0xd')](this));ami['on']('blindtransfer',this[_0x1bbd('0x14')][_0x1bbd('0xd')](this));ami['on'](_0x1bbd('0x15'),this['syncAgentConnectPreview'][_0x1bbd('0xd')](this));}function getDiff(_0x4d877b){var _0x3dedc8=moment()[_0x1bbd('0x16')](0x0);var _0xba7b56=moment(_0x4d877b)[_0x1bbd('0x16')](0x0);return _0x3dedc8[_0x1bbd('0x17')](_0xba7b56,'seconds');}Acw['prototype'][_0x1bbd('0x18')]=function(_0x57e867){try{var _0x428520=this;var _0x2c38f9=this[_0x1bbd('0xa')][_0x57e867][_0x1bbd('0x19')];var _0x26cd55=this[_0x1bbd('0xa')][_0x57e867][_0x1bbd('0x1a')];var _0x477b82=this[_0x1bbd('0x7')][_0x26cd55];var _0x12ba32=![];var _0x23e3a1=_0x1bbd('0x1b');if(_0x477b82[_0x1bbd('0x1c')]){if(_0x477b82['mandatoryDispositionPause'][_0x1bbd('0x1d')]){_0x12ba32=!![];_0x23e3a1=_0x477b82['mandatoryDispositionPause'][_0x1bbd('0x1d')];}}ami[_0x1bbd('0x1e')]({'action':_0x1bbd('0x1f'),'interface':_0x2c38f9,'paused':!![],'reason':_0x23e3a1})[_0x1bbd('0x20')](function(_0x475ffe){if(_0x428520['agents'][_0x2c38f9]){return RpcUser['getAgent'](_0x428520[_0x1bbd('0x8')][_0x2c38f9]['id'])[_0x1bbd('0x20')](function(_0x56dfe8){if(_0x56dfe8&&!_0x56dfe8[_0x1bbd('0x21')]){logger[_0x1bbd('0x22')](_0x1bbd('0x23'),_0x57e867,_0x2c38f9,_0x26cd55);var _0x58bde6=_0x428520[_0x1bbd('0xa')][_0x57e867][_0x1bbd('0x24')]&&_0x428520[_0x1bbd('0xa')][_0x57e867][_0x1bbd('0x25')]?_0x428520[_0x1bbd('0xa')][_0x57e867][_0x1bbd('0x25')]:_0x57e867;return RpcUser['savePause'](_0x428520[_0x1bbd('0x8')][_0x2c38f9],_0x23e3a1,_0x58bde6)[_0x1bbd('0x20')](function(_0x1eadbe){if(!_0x12ba32){_0x428520[_0x1bbd('0x9')][_0x2c38f9]={};logger['info'](_0x1bbd('0x26'),_0x57e867,_0x428520[_0x1bbd('0x7')][_0x26cd55][_0x1bbd('0x27')],_0x2c38f9,_0x26cd55);_0x428520['timers'][_0x2c38f9]['timer']=setTimeout(_0x428520[_0x1bbd('0x28')][_0x1bbd('0xd')](_0x428520,_0x2c38f9),_0x428520[_0x1bbd('0x7')][_0x26cd55][_0x1bbd('0x27')]*0x3e8);_0x428520[_0x1bbd('0x9')][_0x2c38f9][_0x1bbd('0x29')]=moment()[_0x1bbd('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');_0x428520[_0x1bbd('0x9')][_0x2c38f9][_0x1bbd('0x2b')]=_0x57e867;_0x428520['timers'][_0x2c38f9][_0x1bbd('0x1a')]=_0x26cd55;_0x428520[_0x1bbd('0x9')][_0x2c38f9]['updateAcw']=function(){var _0x131b70=getDiff(_0x428520['timers'][_0x2c38f9][_0x1bbd('0x29')]);clearTimeout(_0x428520[_0x1bbd('0x9')][_0x2c38f9]['timer']);_0x428520['timers'][_0x2c38f9]['timer']=![];RpcVoiceAgentReport[_0x1bbd('0x2c')]({'acwtime':_0x131b70},_0x428520[_0x1bbd('0x9')][_0x2c38f9]['uniqueid'],_0x2c38f9)[_0x1bbd('0x20')](function(_0x3179b1){logger[_0x1bbd('0x22')]('[%s][UPDATE][ACWTIME:%s]',_0x57e867,_0x131b70,_0x3179b1);})['catch'](function(_0x55e661){logger[_0x1bbd('0x2d')](_0x1bbd('0x2e'),_0x57e867,_0x55e661);});delete _0x428520[_0x1bbd('0x9')][_0x2c38f9];};}});}else{logger[_0x1bbd('0x22')](_0x1bbd('0x2f'),_0x57e867,_0x2c38f9,_0x26cd55);}});}})[_0x1bbd('0x30')](function(_0x4bd453){logger[_0x1bbd('0x2d')](_0x1bbd('0x26'),_0x57e867,_0x428520[_0x1bbd('0x7')][_0x26cd55][_0x1bbd('0x27')],_0x2c38f9,_0x26cd55);})['finally'](function(){delete _0x428520[_0x1bbd('0xa')][_0x57e867];});}catch(_0x10b860){logger[_0x1bbd('0x2d')](_0x1bbd('0x31'),_0x10b860['message']);}};Acw[_0x1bbd('0x32')]['stopAcw']=function(_0x4d8e3a){try{var _0x5154b1=this;if(_0x5154b1[_0x1bbd('0x9')][_0x4d8e3a]){_0x5154b1['timers'][_0x4d8e3a]['timer']=![];var _0x537e36=_0x5154b1[_0x1bbd('0x9')][_0x4d8e3a][_0x1bbd('0x2b')];var _0x350e7c=_0x5154b1[_0x1bbd('0x9')][_0x4d8e3a][_0x1bbd('0x1a')];var _0x369704=_0x5154b1['voiceQueues'][_0x350e7c][_0x1bbd('0x27')];logger[_0x1bbd('0x22')](_0x1bbd('0x33'),_0x537e36,_0x4d8e3a);RpcUser[_0x1bbd('0x34')](this[_0x1bbd('0x8')][_0x4d8e3a]);RpcVoiceAgentReport[_0x1bbd('0x2c')]({'acwtime':_0x369704,'agentacw':!![]},_0x537e36,_0x4d8e3a)[_0x1bbd('0x20')](function(_0x27981e){logger[_0x1bbd('0x22')](_0x1bbd('0x35'),_0x537e36,_0x369704,_0x27981e);})[_0x1bbd('0x30')](function(_0x1d2f80){logger[_0x1bbd('0x2d')](_0x1bbd('0x2e'),_0x537e36,_0x1d2f80);});}else{logger[_0x1bbd('0x2d')](_0x1bbd('0x36'),_0x4d8e3a);if(_0x5154b1[_0x1bbd('0x9')]){logger[_0x1bbd('0x22')](_0x1bbd('0x37'),JSON['stringify'](_0x5154b1[_0x1bbd('0x9')]));}}}catch(_0x58b1ce){logger[_0x1bbd('0x2d')](_0x1bbd('0x38'),_0x58b1ce[_0x1bbd('0x39')]);}};Acw[_0x1bbd('0x32')][_0x1bbd('0xc')]=function(_0x3cd776){try{if(this['voiceQueues'][_0x3cd776[_0x1bbd('0x1a')]]&&(this[_0x1bbd('0x7')][_0x3cd776['queue']][_0x1bbd('0x5')]||this[_0x1bbd('0x7')][_0x3cd776['queue']][_0x1bbd('0x1c')])){if(this[_0x1bbd('0x8')][_0x3cd776[_0x1bbd('0x19')]]){this[_0x1bbd('0xa')][_0x3cd776[_0x1bbd('0x2b')]]={'queue':_0x3cd776[_0x1bbd('0x1a')],'interface':_0x3cd776[_0x1bbd('0x19')],'destlinkedid':_0x3cd776[_0x1bbd('0x25')]};}}}catch(_0xaef647){logger[_0x1bbd('0x2d')](_0x1bbd('0x3a'),_0xaef647['message']);}};Acw[_0x1bbd('0x32')][_0x1bbd('0x3b')]=function(_0x825b0c){try{if(this[_0x1bbd('0x7')][_0x825b0c[_0x1bbd('0x1a')]]&&(this[_0x1bbd('0x7')][_0x825b0c[_0x1bbd('0x1a')]]['acw']||this['voiceQueues'][_0x825b0c[_0x1bbd('0x1a')]][_0x1bbd('0x1c')])){if(this[_0x1bbd('0x8')][_0x825b0c[_0x1bbd('0x19')]]){this['channels'][_0x825b0c[_0x1bbd('0x2b')]]={'queue':_0x825b0c['queue'],'interface':_0x825b0c['interface']};}}}catch(_0x1f2028){logger[_0x1bbd('0x2d')]('[ACW][syncAgentConnectPreview]\x20%s',_0x1f2028['message']);}};Acw['prototype']['syncHangupRequest']=function(_0xfafb88){try{if(this[_0x1bbd('0xa')][_0xfafb88[_0x1bbd('0x2b')]]&&_['isUndefined'](this[_0x1bbd('0xa')][_0xfafb88[_0x1bbd('0x2b')]]['attended'])){logger[_0x1bbd('0x22')]('[%s][HANGUP:UNIQUEID]',_0xfafb88[_0x1bbd('0x2b')]);this[_0x1bbd('0x18')](_0xfafb88[_0x1bbd('0x2b')]);}else if(this['channels'][_0xfafb88['linkedid']]&&_['isUndefined'](this[_0x1bbd('0xa')][_0xfafb88[_0x1bbd('0x3c')]]['attended'])){logger[_0x1bbd('0x22')](_0x1bbd('0x3d'),_0xfafb88[_0x1bbd('0x3c')]);this[_0x1bbd('0x18')](_0xfafb88[_0x1bbd('0x3c')]);}}catch(_0x107e49){logger[_0x1bbd('0x2d')](_0x1bbd('0x3e'),_0x107e49[_0x1bbd('0x39')]);}};Acw[_0x1bbd('0x32')]['syncHangup']=function(_0x5217b8){try{if(this[_0x1bbd('0xa')][_0x5217b8[_0x1bbd('0x2b')]]&&this[_0x1bbd('0xa')][_0x5217b8[_0x1bbd('0x2b')]][_0x1bbd('0x24')]){logger[_0x1bbd('0x22')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x5217b8[_0x1bbd('0x2b')]);this['startAcw'](_0x5217b8[_0x1bbd('0x2b')]);}else if(this[_0x1bbd('0xa')][_0x5217b8[_0x1bbd('0x3c')]]&&this[_0x1bbd('0xa')][_0x5217b8[_0x1bbd('0x3c')]][_0x1bbd('0x24')]){logger[_0x1bbd('0x22')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x5217b8[_0x1bbd('0x3c')]);this[_0x1bbd('0x18')](_0x5217b8[_0x1bbd('0x3c')]);}}catch(_0x5ee59d){logger[_0x1bbd('0x2d')](_0x1bbd('0x3f'),_0x5ee59d[_0x1bbd('0x39')]);}};Acw[_0x1bbd('0x32')][_0x1bbd('0x13')]=function(_0x448136){try{if(!_['isNil'](this[_0x1bbd('0xa')][_0x448136['transfereeuniqueid']])){this[_0x1bbd('0x18')](_0x448136[_0x1bbd('0x40')]);if(this['channels'][_0x448136['secondtransfereruniqueid']]){this['channels'][_0x448136[_0x1bbd('0x41')]][_0x1bbd('0x24')]=!![];this[_0x1bbd('0xa')][_0x448136['transfertargetuniqueid']]=this[_0x1bbd('0xa')][_0x448136[_0x1bbd('0x41')]];delete this['channels'][_0x448136[_0x1bbd('0x41')]];}}else if(!_[_0x1bbd('0x42')](this[_0x1bbd('0xa')][_0x448136[_0x1bbd('0x43')]])){this[_0x1bbd('0x18')](_0x448136[_0x1bbd('0x43')]);if(this[_0x1bbd('0xa')][_0x448136[_0x1bbd('0x44')]]){this[_0x1bbd('0xa')][_0x448136[_0x1bbd('0x44')]][_0x1bbd('0x24')]=!![];this[_0x1bbd('0xa')][_0x448136[_0x1bbd('0x40')]]=this[_0x1bbd('0xa')][_0x448136[_0x1bbd('0x44')]];delete this[_0x1bbd('0xa')][_0x448136['origtransfereruniqueid']];}}}catch(_0x3dbff1){logger[_0x1bbd('0x2d')](_0x1bbd('0x45'),_0x3dbff1[_0x1bbd('0x39')]);}};Acw['prototype'][_0x1bbd('0x14')]=function(_0x2fd284){try{if(this[_0x1bbd('0xa')][_0x2fd284[_0x1bbd('0x46')]]){logger['info'](_0x1bbd('0x47'),JSON['stringify'](_0x2fd284['transfereruniqueid']));this[_0x1bbd('0x18')](_0x2fd284['transfereruniqueid']);}else if(this[_0x1bbd('0xa')][_0x2fd284[_0x1bbd('0x48')]]){logger[_0x1bbd('0x22')](_0x1bbd('0x49'),JSON[_0x1bbd('0x4a')](_0x2fd284[_0x1bbd('0x48')]));this[_0x1bbd('0x18')](_0x2fd284[_0x1bbd('0x48')]);}}catch(_0x240953){logger[_0x1bbd('0x2d')](_0x1bbd('0x4b'),_0x240953[_0x1bbd('0x39')]);}};Acw[_0x1bbd('0x32')][_0x1bbd('0x4c')]=function(_0x436b05){try{if(this[_0x1bbd('0x7')][_0x436b05[_0x1bbd('0x1a')]]&&this[_0x1bbd('0x7')][_0x436b05[_0x1bbd('0x1a')]][_0x1bbd('0x4d')]==='all'){if(this[_0x1bbd('0x8')][_0x436b05[_0x1bbd('0x19')]]){logger[_0x1bbd('0x22')](_0x1bbd('0x4e'),_0x436b05[_0x1bbd('0x2b')],_0x436b05[_0x1bbd('0x19')],_0x436b05[_0x1bbd('0x1a')]);return RpcUser['savePause'](this[_0x1bbd('0x8')][_0x436b05['interface']],_0x1bbd('0x4f'),_0x436b05[_0x1bbd('0x2b')]);}}}catch(_0x1833b1){logger[_0x1bbd('0x2d')](_0x1bbd('0x50'),_0x1833b1['message']);}};module[_0x1bbd('0x51')]=Acw;
\ No newline at end of file
index 6652051..561b273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca18=['Action','promisify','action','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','error','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','info','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','username','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','catch','exports','asterisk-manager','bluebird','moment','asterisk','port','password','keepConnected'];(function(_0x2d5411,_0x1a439f){var _0x4f13d7=function(_0x2523c4){while(--_0x2523c4){_0x2d5411['push'](_0x2d5411['shift']());}};_0x4f13d7(++_0x1a439f);}(_0xca18,0x14f));var _0x8ca1=function(_0x34021d,_0x753aa6){_0x34021d=_0x34021d-0x0;var _0x16597b=_0xca18[_0x34021d];return _0x16597b;};'use strict';var Manager=require(_0x8ca1('0x0'));var BPromise=require(_0x8ca1('0x1'));var moment=require(_0x8ca1('0x2'));var util=require('util');var _=require('lodash');var logger=require('../../config/logger')('ami');var config=require('../../config/environment');var ami=new Manager(config[_0x8ca1('0x3')][_0x8ca1('0x4')],config[_0x8ca1('0x3')]['ip'],config[_0x8ca1('0x3')]['username'],config[_0x8ca1('0x3')][_0x8ca1('0x5')],!![]);ami[_0x8ca1('0x6')]();ami[_0x8ca1('0x7')]=BPromise[_0x8ca1('0x8')](ami[_0x8ca1('0x9')]);function error(_0xc99d28){logger['error'](util[_0x8ca1('0xa')](_0x8ca1('0xb'),config[_0x8ca1('0x3')]['username'],config[_0x8ca1('0x3')]['ip'],config['asterisk'][_0x8ca1('0x4')],util[_0x8ca1('0xc')](_0xc99d28,![],null)));}function close(){logger[_0x8ca1('0xd')](util[_0x8ca1('0xa')](_0x8ca1('0xe'),config['asterisk']['username'],config[_0x8ca1('0x3')]['ip'],config['asterisk'][_0x8ca1('0x4')]));}ami[_0x8ca1('0xf')]=function(){return function(){return ami[_0x8ca1('0x7')]({'action':_0x8ca1('0x10')});};};ami[_0x8ca1('0x11')]=function(){return function(){return ami[_0x8ca1('0x7')]({'action':_0x8ca1('0x12')});};};ami[_0x8ca1('0x13')]=function(){return function(){return ami[_0x8ca1('0x7')]({'action':_0x8ca1('0x14')});};};ami[_0x8ca1('0x15')]=function(){return function(){return ami[_0x8ca1('0x7')]({'action':_0x8ca1('0x16')});};};ami[_0x8ca1('0x17')]=function(){return function(){return ami[_0x8ca1('0x7')]({'action':'coreshowchannels'});};};function connect(_0x3c92ce){logger['info'](util[_0x8ca1('0xa')](_0x8ca1('0x18'),config[_0x8ca1('0x3')]['username'],config[_0x8ca1('0x3')]['ip'],config[_0x8ca1('0x3')][_0x8ca1('0x4')]));ami[_0x8ca1('0x19')](_0x8ca1('0xd'),error);ami[_0x8ca1('0x19')](_0x8ca1('0x1a'),close);}ami['on'](_0x8ca1('0x1b'),connect);ami['on'](_0x8ca1('0x1c'),function(_0x242940){logger[_0x8ca1('0x1d')](util['format'](_0x8ca1('0x1e'),config[_0x8ca1('0x3')][_0x8ca1('0x1f')],config[_0x8ca1('0x3')]['ip'],config[_0x8ca1('0x3')][_0x8ca1('0x4')],util['inspect'](_0x242940,![],null)));});ami['on'](_0x8ca1('0x20'),function(_0x2bd0ea){logger[_0x8ca1('0x1d')](util[_0x8ca1('0xa')](_0x8ca1('0x21'),config['asterisk'][_0x8ca1('0x1f')],config[_0x8ca1('0x3')]['ip'],config[_0x8ca1('0x3')]['port']));return BPromise[_0x8ca1('0x22')]()['then'](ami[_0x8ca1('0xf')]())[_0x8ca1('0x23')](ami[_0x8ca1('0x11')]())[_0x8ca1('0x23')](ami['actionSipPeerStatus']())[_0x8ca1('0x23')](ami[_0x8ca1('0x15')]())['then'](ami[_0x8ca1('0x17')]())[_0x8ca1('0x24')](function(_0xcca367){console['log'](_0xcca367);});});ami[_0x8ca1('0x19')]('error',error);ami[_0x8ca1('0x19')](_0x8ca1('0x1a'),close);module[_0x8ca1('0x25')]=ami;
\ No newline at end of file
+var _0xb016=['shutdown','fullybooted','resolve','then','catch','log','bluebird','moment','util','lodash','../../config/logger','../../config/environment','asterisk','port','username','keepConnected','Action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect'];(function(_0x20a34f,_0x2185b6){var _0x4c196e=function(_0x1d5046){while(--_0x1d5046){_0x20a34f['push'](_0x20a34f['shift']());}};_0x4c196e(++_0x2185b6);}(_0xb016,0x11e));var _0x6b01=function(_0x1a2c99,_0x526cde){_0x1a2c99=_0x1a2c99-0x0;var _0x3041f3=_0xb016[_0x1a2c99];return _0x3041f3;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0x6b01('0x0'));var moment=require(_0x6b01('0x1'));var util=require(_0x6b01('0x2'));var _=require(_0x6b01('0x3'));var logger=require(_0x6b01('0x4'))('ami');var config=require(_0x6b01('0x5'));var ami=new Manager(config[_0x6b01('0x6')][_0x6b01('0x7')],config['asterisk']['ip'],config[_0x6b01('0x6')][_0x6b01('0x8')],config[_0x6b01('0x6')]['password'],!![]);ami[_0x6b01('0x9')]();ami[_0x6b01('0xa')]=BPromise['promisify'](ami['action']);function error(_0x4811eb){logger[_0x6b01('0xb')](util['format'](_0x6b01('0xc'),config[_0x6b01('0x6')][_0x6b01('0x8')],config[_0x6b01('0x6')]['ip'],config[_0x6b01('0x6')]['port'],util[_0x6b01('0xd')](_0x4811eb,![],null)));}function close(){logger[_0x6b01('0xb')](util[_0x6b01('0xe')](_0x6b01('0xf'),config['asterisk']['username'],config[_0x6b01('0x6')]['ip'],config[_0x6b01('0x6')]['port']));}ami[_0x6b01('0x10')]=function(){return function(){return ami['Action']({'action':'sipshowregistry'});};};ami[_0x6b01('0x11')]=function(){return function(){return ami[_0x6b01('0xa')]({'action':_0x6b01('0x12')});};};ami[_0x6b01('0x13')]=function(){return function(){return ami[_0x6b01('0xa')]({'action':_0x6b01('0x14')});};};ami[_0x6b01('0x15')]=function(){return function(){return ami[_0x6b01('0xa')]({'action':'queuesummary'});};};ami[_0x6b01('0x16')]=function(){return function(){return ami[_0x6b01('0xa')]({'action':_0x6b01('0x17')});};};function connect(_0x1f1321){logger[_0x6b01('0x18')](util[_0x6b01('0xe')](_0x6b01('0x19'),config[_0x6b01('0x6')][_0x6b01('0x8')],config[_0x6b01('0x6')]['ip'],config[_0x6b01('0x6')]['port']));ami[_0x6b01('0x1a')]('error',error);ami[_0x6b01('0x1a')](_0x6b01('0x1b'),close);}ami['on'](_0x6b01('0x1c'),connect);ami['on'](_0x6b01('0x1d'),function(_0x44322a){logger[_0x6b01('0x18')](util[_0x6b01('0xe')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0x6b01('0x6')]['username'],config[_0x6b01('0x6')]['ip'],config[_0x6b01('0x6')][_0x6b01('0x7')],util['inspect'](_0x44322a,![],null)));});ami['on'](_0x6b01('0x1e'),function(_0x1b9557){logger[_0x6b01('0x18')](util[_0x6b01('0xe')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0x6b01('0x6')]['username'],config[_0x6b01('0x6')]['ip'],config[_0x6b01('0x6')][_0x6b01('0x7')]));return BPromise[_0x6b01('0x1f')]()[_0x6b01('0x20')](ami[_0x6b01('0x10')]())[_0x6b01('0x20')](ami[_0x6b01('0x11')]())['then'](ami[_0x6b01('0x13')]())[_0x6b01('0x20')](ami[_0x6b01('0x15')]())[_0x6b01('0x20')](ami['actionCoreShowChannels']())[_0x6b01('0x21')](function(_0x46b06e){console[_0x6b01('0x22')](_0x46b06e);});});ami[_0x6b01('0x1a')]('error',error);ami[_0x6b01('0x1a')]('close',close);module['exports']=ami;
\ No newline at end of file
index e84a240..0547080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['catch','exports','jayson/promise','bluebird','../../config/logger','http','Request','then','memberReport','error','rpc','message','result'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x70e0,0x17b));var _0x070e=function(_0x14e45e,_0x26598a){_0x14e45e=_0x14e45e-0x0;var _0x5a5f86=_0x70e0[_0x14e45e];return _0x5a5f86;};'use strict';var jayson=require(_0x070e('0x0'));var BPromise=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('ami');var client=jayson['client'][_0x070e('0x3')]({'port':0x2329});client[_0x070e('0x4')]=function(_0x277d32,_0x2593e5){return new BPromise(function(_0x5c90fc,_0x7bce9b){return client['request'](_0x277d32,_0x2593e5)[_0x070e('0x5')](function(_0x4b041d){logger['debug']('rpc',_0x070e('0x6'),_0x277d32,_0x2593e5,_0x4b041d);if(_0x4b041d[_0x070e('0x7')]){logger[_0x070e('0x7')](_0x070e('0x8'),_0x070e('0x6'),_0x277d32,_0x4b041d[_0x070e('0x7')][_0x070e('0x9')],_0x2593e5);return _0x7bce9b(_0x4b041d['error']['message']);}else{return _0x5c90fc(_0x4b041d[_0x070e('0xa')]);}})[_0x070e('0xb')](function(_0x12bb37){logger[_0x070e('0x7')](_0x070e('0x8'),_0x070e('0x6'),_0x277d32,_0x12bb37,_0x2593e5);return _0x7bce9b(_0x12bb37);});});};module[_0x070e('0xc')]=client;
\ No newline at end of file
+var _0xa9e0=['result','catch','exports','jayson/promise','bluebird','../../config/logger','http','request','debug','rpc','error','message'];(function(_0x3d8b1d,_0x1c0f88){var _0x2bb57a=function(_0x185f36){while(--_0x185f36){_0x3d8b1d['push'](_0x3d8b1d['shift']());}};_0x2bb57a(++_0x1c0f88);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('ami');var client=jayson['client'][_0x0a9e('0x3')]({'port':0x2329});client['Request']=function(_0x333808,_0x432180){return new BPromise(function(_0x2ab90b,_0x991246){return client[_0x0a9e('0x4')](_0x333808,_0x432180)['then'](function(_0x219af0){logger[_0x0a9e('0x5')](_0x0a9e('0x6'),'memberReport',_0x333808,_0x432180,_0x219af0);if(_0x219af0['error']){logger[_0x0a9e('0x7')]('rpc','memberReport',_0x333808,_0x219af0[_0x0a9e('0x7')][_0x0a9e('0x8')],_0x432180);return _0x991246(_0x219af0[_0x0a9e('0x7')][_0x0a9e('0x8')]);}else{return _0x2ab90b(_0x219af0[_0x0a9e('0x9')]);}})[_0x0a9e('0xa')](function(_0x4a4c56){logger['error']('rpc','memberReport',_0x333808,_0x4a4c56,_0x432180);return _0x991246(_0x4a4c56);});});};module[_0x0a9e('0xb')]=client;
\ No newline at end of file
index 1f8f9ec..1aacd0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd889=['queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','name','dialCutDigit','substring','exports','util','lodash','moment','isNil','string','voiceQueue','Contact','phone','firstName','lastName','number'];(function(_0x2ef7e0,_0x4266fa){var _0xf7228b=function(_0x28135d){while(--_0x28135d){_0x2ef7e0['push'](_0x2ef7e0['shift']());}};_0xf7228b(++_0x4266fa);}(_0xd889,0x178));var _0x9d88=function(_0x55ced4,_0x25c476){_0x55ced4=_0x55ced4-0x0;var _0x28b394=_0xd889[_0x55ced4];return _0x28b394;};'use strict';var util=require(_0x9d88('0x0'));var _=require(_0x9d88('0x1'));var moment=require(_0x9d88('0x2'));function checkNameSurname(_0x22c74e,_0xbd8a33,_0x5e090b){var _0x4841c4='';if(!_[_0x9d88('0x3')](_0xbd8a33)&&_0x9d88('0x4')===typeof _0xbd8a33){_0x4841c4+=_0xbd8a33;}if(!_['isNil'](_0x5e090b)&&'string'===typeof _0x5e090b){_0x4841c4+='\x20'+_0x5e090b;}if(_0x4841c4!==''){return _0x4841c4;}return _0x22c74e;}function Action(_0x1f1c93,_0x4e2692,_0x175545){this[_0x9d88('0x5')]=_0x1f1c93;this['uniqueid']=_0x175545||undefined;this['name']=checkNameSurname(_0x4e2692[_0x9d88('0x6')][_0x9d88('0x7')],_0x4e2692[_0x9d88('0x6')][_0x9d88('0x8')],_0x4e2692[_0x9d88('0x6')][_0x9d88('0x9')]);this[_0x9d88('0xa')]=_0x4e2692[_0x9d88('0x6')]['phone'];this[_0x9d88('0xb')]=_0x1f1c93['name'];this[_0x9d88('0xc')]=_0x4e2692['active']||![];this['type']=_0x1f1c93[_0x9d88('0xd')];this[_0x9d88('0xe')]=_0x1f1c93[_0x9d88('0xe')]||0x3;this[_0x9d88('0xf')]=_0x4e2692[_0x9d88('0xf')];this[_0x9d88('0x10')]=_0x4e2692[_0x9d88('0x10')];this[_0x9d88('0x11')]=_0x4e2692['countcongestionretry'];this[_0x9d88('0x12')]=_0x4e2692['countnoanswerretry'];this[_0x9d88('0x13')]=_0x4e2692[_0x9d88('0x13')];this[_0x9d88('0x14')]=_0x4e2692['countdropretry'];this['countabandonedretry']=_0x4e2692[_0x9d88('0x15')];this[_0x9d88('0x16')]=_0x4e2692[_0x9d88('0x16')];this[_0x9d88('0x17')]=_0x4e2692[_0x9d88('0x17')];this['ContactId']=_0x4e2692['ContactId'];this['ListId']=_0x4e2692['ListId'];this[_0x9d88('0x18')]=_0x4e2692[_0x9d88('0x18')];this['VoiceQueueId']=_0x4e2692[_0x9d88('0x19')];this[_0x9d88('0x1a')]=_0x4e2692[_0x9d88('0x1a')];this[_0x9d88('0x1b')]=_0x4e2692['id'];this[_0x9d88('0x1c')]=_0x4e2692['Contact']['firstName']||'';this['starttime']=moment()[_0x9d88('0x1d')](_0x9d88('0x1e'));this['callback']=_0x4e2692[_0x9d88('0x1f')];this['callbackuniqueid']=_0x4e2692['callbackuniqueid'];this[_0x9d88('0x20')]=_0x4e2692['callbackat'];this[_0x9d88('0x21')]=_0x4e2692['recallme'];this[_0x9d88('0x22')]='';this[_0x9d88('0x23')]='';}Action[_0x9d88('0x24')][_0x9d88('0x25')]=function(){return util[_0x9d88('0x1d')](_0x9d88('0x26'),this[_0x9d88('0x27')],this[_0x9d88('0x5')][_0x9d88('0x28')]>0x0?this[_0x9d88('0xa')][_0x9d88('0x29')](this[_0x9d88('0x5')]['dialCutDigit']):this[_0x9d88('0xa')]);};Action[_0x9d88('0x24')]['getQueue']=function(){return this['queue'];};module[_0x9d88('0x2a')]=Action;
\ No newline at end of file
+var _0x9fe0=['countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','format','\x22%s\x22\x20<%s>','voiceQueue','dialCutDigit','number','exports','lodash','moment','isNil','string','name','Contact','phone','firstName','lastName','queue','active','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry'];(function(_0x5e3107,_0x36b5d1){var _0x329158=function(_0xa21257){while(--_0xa21257){_0x5e3107['push'](_0x5e3107['shift']());}};_0x329158(++_0x36b5d1);}(_0x9fe0,0xcb));var _0x09fe=function(_0x5c682e,_0x198ae0){_0x5c682e=_0x5c682e-0x0;var _0x5b1b3f=_0x9fe0[_0x5c682e];return _0x5b1b3f;};'use strict';var util=require('util');var _=require(_0x09fe('0x0'));var moment=require(_0x09fe('0x1'));function checkNameSurname(_0x348c5a,_0x5deef8,_0x2fd246){var _0x3d43cd='';if(!_[_0x09fe('0x2')](_0x5deef8)&&_0x09fe('0x3')===typeof _0x5deef8){_0x3d43cd+=_0x5deef8;}if(!_[_0x09fe('0x2')](_0x2fd246)&&'string'===typeof _0x2fd246){_0x3d43cd+='\x20'+_0x2fd246;}if(_0x3d43cd!==''){return _0x3d43cd;}return _0x348c5a;}function Action(_0x251f04,_0x8b5572,_0x509091){this['voiceQueue']=_0x251f04;this['uniqueid']=_0x509091||undefined;this[_0x09fe('0x4')]=checkNameSurname(_0x8b5572[_0x09fe('0x5')][_0x09fe('0x6')],_0x8b5572[_0x09fe('0x5')][_0x09fe('0x7')],_0x8b5572[_0x09fe('0x5')][_0x09fe('0x8')]);this['number']=_0x8b5572[_0x09fe('0x5')]['phone'];this[_0x09fe('0x9')]=_0x251f04['name'];this[_0x09fe('0xa')]=_0x8b5572[_0x09fe('0xa')]||![];this['type']=_0x251f04['type'];this['dialQueueTimeout']=_0x251f04[_0x09fe('0xb')]||0x3;this['scheduledat']=_0x8b5572[_0x09fe('0xc')];this[_0x09fe('0xd')]=_0x8b5572[_0x09fe('0xd')];this[_0x09fe('0xe')]=_0x8b5572['countcongestionretry'];this[_0x09fe('0xf')]=_0x8b5572[_0x09fe('0xf')];this[_0x09fe('0x10')]=_0x8b5572['countnosuchnumberretry'];this['countdropretry']=_0x8b5572[_0x09fe('0x11')];this[_0x09fe('0x12')]=_0x8b5572[_0x09fe('0x12')];this[_0x09fe('0x13')]=_0x8b5572['countmachineretry'];this[_0x09fe('0x14')]=_0x8b5572['countagentrejectretry'];this[_0x09fe('0x15')]=_0x8b5572[_0x09fe('0x15')];this[_0x09fe('0x16')]=_0x8b5572[_0x09fe('0x16')];this[_0x09fe('0x17')]=_0x8b5572[_0x09fe('0x17')];this[_0x09fe('0x18')]=_0x8b5572[_0x09fe('0x18')];this['CampaignId']=_0x8b5572[_0x09fe('0x19')];this[_0x09fe('0x1a')]=_0x8b5572['id'];this[_0x09fe('0x1b')]=_0x8b5572[_0x09fe('0x5')][_0x09fe('0x7')]||'';this[_0x09fe('0x1c')]=moment()['format'](_0x09fe('0x1d'));this[_0x09fe('0x1e')]=_0x8b5572[_0x09fe('0x1e')];this[_0x09fe('0x1f')]=_0x8b5572[_0x09fe('0x1f')];this[_0x09fe('0x20')]=_0x8b5572[_0x09fe('0x20')];this[_0x09fe('0x21')]=_0x8b5572[_0x09fe('0x21')];this[_0x09fe('0x22')]='';this[_0x09fe('0x23')]='';}Action[_0x09fe('0x24')][_0x09fe('0x25')]=function(){return util[_0x09fe('0x26')](_0x09fe('0x27'),this['name'],this[_0x09fe('0x28')][_0x09fe('0x29')]>0x0?this[_0x09fe('0x2a')]['substring'](this[_0x09fe('0x28')][_0x09fe('0x29')]):this[_0x09fe('0x2a')]);};Action['prototype']['getQueue']=function(){return this[_0x09fe('0x9')];};module[_0x09fe('0x2b')]=Action;
\ No newline at end of file
index da22685..7b4fd74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd207=['reason','callback','callbackat','recallme','ContactId','ListId','UserId','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','state','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','talktime','membername'];(function(_0x539fd5,_0x48ba14){var _0x376ea4=function(_0x13c7b0){while(--_0x13c7b0){_0x539fd5['push'](_0x539fd5['shift']());}};_0x376ea4(++_0x48ba14);}(_0xd207,0x7e));var _0x7d20=function(_0x1beb9e,_0x436c8e){_0x1beb9e=_0x1beb9e-0x0;var _0x5cefe8=_0xd207[_0x1beb9e];return _0x5cefe8;};'use strict';var util=require(_0x7d20('0x0'));var _=require(_0x7d20('0x1'));var moment=require(_0x7d20('0x2'));function getSeconds(_0x566e97,_0x187397){var _0x90cc7c=moment(_0x566e97)[_0x7d20('0x3')](0x0);var _0x11d998=moment(_0x187397)[_0x7d20('0x3')](0x0);return _0x90cc7c['diff'](_0x11d998,_0x7d20('0x4'));}function AgentComplete(_0x40eb63,_0x4aeb49){this[_0x7d20('0x5')]=0x4;this['statedesc']='Answer';this[_0x7d20('0x6')]=_0x40eb63[_0x7d20('0x6')];this[_0x7d20('0x7')]=_0x40eb63[_0x7d20('0x7')];this['campaigntype']=_0x40eb63[_0x7d20('0x7')]==='outbound'?_0x7d20('0x8'):_0x40eb63['type'];this['countbusyretry']=_0x40eb63[_0x7d20('0x9')];this['countcongestionretry']=_0x40eb63[_0x7d20('0xa')];this['countnoanswerretry']=_0x40eb63[_0x7d20('0xb')];this['countglobal']=_0x40eb63['countbusyretry']+_0x40eb63['countcongestionretry']+_0x40eb63[_0x7d20('0xb')]+_0x40eb63[_0x7d20('0xc')]+_0x40eb63['countdropretry']+_0x40eb63[_0x7d20('0xd')]+_0x40eb63[_0x7d20('0xe')]+_0x40eb63[_0x7d20('0xf')];this[_0x7d20('0xc')]=_0x40eb63[_0x7d20('0xc')];this[_0x7d20('0x10')]=_0x40eb63[_0x7d20('0x10')];this[_0x7d20('0xd')]=_0x40eb63[_0x7d20('0xd')];this[_0x7d20('0xe')]=_0x40eb63[_0x7d20('0xe')];this[_0x7d20('0xf')]=_0x40eb63[_0x7d20('0xf')];this['uniqueid']=_0x4aeb49[_0x7d20('0x11')];this[_0x7d20('0x12')]=_0x40eb63[_0x7d20('0x13')];this[_0x7d20('0x14')]=_0x40eb63[_0x7d20('0x15')];this['starttime']=_0x40eb63[_0x7d20('0x16')];this[_0x7d20('0x17')]=_0x40eb63[_0x7d20('0x17')];this['answertime']=_0x40eb63[_0x7d20('0x18')];this[_0x7d20('0x19')]=moment()[_0x7d20('0x1a')](_0x7d20('0x1b'));this['ringtime']=getSeconds(_0x40eb63[_0x7d20('0x17')],_0x40eb63[_0x7d20('0x16')]);this['holdtime']=getSeconds(_0x40eb63['answertime'],_0x40eb63[_0x7d20('0x17')]);this[_0x7d20('0x1c')]=getSeconds(this['endtime'],_0x40eb63['answertime']);this[_0x7d20('0x8')]=_0x4aeb49[_0x7d20('0x8')];this[_0x7d20('0x1d')]=_0x4aeb49['membername'];this[_0x7d20('0x1e')]=_0x4aeb49[_0x7d20('0x1e')];this[_0x7d20('0x1f')]=_0x40eb63[_0x7d20('0x1f')];this['callbackuniqueid']=_0x40eb63['callbackuniqueid'];this[_0x7d20('0x20')]=_0x40eb63[_0x7d20('0x20')];this[_0x7d20('0x21')]=_0x40eb63[_0x7d20('0x21')];this[_0x7d20('0x22')]=_0x40eb63['ContactId'];this[_0x7d20('0x23')]=_0x40eb63['ListId'];this[_0x7d20('0x24')]=_0x40eb63[_0x7d20('0x24')];this['VoiceQueueId']=_0x40eb63['VoiceQueueId'];this['CampaignId']=_0x40eb63['CampaignId'];this['originatecalleridnum']=_0x40eb63['originatecalleridnum']||'';this['originatecalleridname']=_0x40eb63[_0x7d20('0x25')]||'';}module[_0x7d20('0x26')]=AgentComplete;
\ No newline at end of file
+var _0x20c5=['calleridname','calleridnum','starttime','answertime','endtime','ringtime','responsetime','holdtime','talktime','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid'];(function(_0x412203,_0xdb12b4){var _0xa1e84b=function(_0x533298){while(--_0x533298){_0x412203['push'](_0x412203['shift']());}};_0xa1e84b(++_0xdb12b4);}(_0x20c5,0x70));var _0x520c=function(_0x3a9891,_0x23d591){_0x3a9891=_0x3a9891-0x0;var _0x446aa7=_0x20c5[_0x3a9891];return _0x446aa7;};'use strict';var util=require(_0x520c('0x0'));var _=require(_0x520c('0x1'));var moment=require(_0x520c('0x2'));function getSeconds(_0x393051,_0x4cbcc6){var _0x35d184=moment(_0x393051)[_0x520c('0x3')](0x0);var _0x48215c=moment(_0x4cbcc6)[_0x520c('0x3')](0x0);return _0x35d184[_0x520c('0x4')](_0x48215c,_0x520c('0x5'));}function AgentComplete(_0x151eef,_0x1ad602){this[_0x520c('0x6')]=0x4;this[_0x520c('0x7')]=_0x520c('0x8');this[_0x520c('0x9')]=_0x151eef[_0x520c('0x9')];this[_0x520c('0xa')]=_0x151eef[_0x520c('0xa')];this[_0x520c('0xb')]=_0x151eef[_0x520c('0xa')]==='outbound'?_0x520c('0xc'):_0x151eef[_0x520c('0xa')];this[_0x520c('0xd')]=_0x151eef[_0x520c('0xd')];this[_0x520c('0xe')]=_0x151eef['countcongestionretry'];this['countnoanswerretry']=_0x151eef[_0x520c('0xf')];this[_0x520c('0x10')]=_0x151eef[_0x520c('0xd')]+_0x151eef[_0x520c('0xe')]+_0x151eef[_0x520c('0xf')]+_0x151eef[_0x520c('0x11')]+_0x151eef[_0x520c('0x12')]+_0x151eef[_0x520c('0x13')]+_0x151eef[_0x520c('0x14')]+_0x151eef[_0x520c('0x15')];this[_0x520c('0x11')]=_0x151eef[_0x520c('0x11')];this['countdropretry']=_0x151eef['countdropretry'];this[_0x520c('0x13')]=_0x151eef[_0x520c('0x13')];this[_0x520c('0x14')]=_0x151eef['countmachineretry'];this[_0x520c('0x15')]=_0x151eef[_0x520c('0x15')];this['uniqueid']=_0x1ad602[_0x520c('0x16')];this[_0x520c('0x17')]=_0x151eef['name'];this[_0x520c('0x18')]=_0x151eef['number'];this[_0x520c('0x19')]=_0x151eef['starttime'];this['responsetime']=_0x151eef['responsetime'];this[_0x520c('0x1a')]=_0x151eef['answertime'];this[_0x520c('0x1b')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x520c('0x1c')]=getSeconds(_0x151eef[_0x520c('0x1d')],_0x151eef[_0x520c('0x19')]);this[_0x520c('0x1e')]=getSeconds(_0x151eef['answertime'],_0x151eef[_0x520c('0x1d')]);this[_0x520c('0x1f')]=getSeconds(this[_0x520c('0x1b')],_0x151eef[_0x520c('0x1a')]);this[_0x520c('0xc')]=_0x1ad602[_0x520c('0xc')];this['membername']=_0x1ad602['membername'];this[_0x520c('0x20')]=_0x1ad602[_0x520c('0x20')];this[_0x520c('0x21')]=_0x151eef[_0x520c('0x21')];this[_0x520c('0x22')]=_0x151eef['callbackuniqueid'];this[_0x520c('0x23')]=_0x151eef[_0x520c('0x23')];this[_0x520c('0x24')]=_0x151eef[_0x520c('0x24')];this[_0x520c('0x25')]=_0x151eef[_0x520c('0x25')];this[_0x520c('0x26')]=_0x151eef[_0x520c('0x26')];this['UserId']=_0x151eef[_0x520c('0x27')];this[_0x520c('0x28')]=_0x151eef[_0x520c('0x28')];this['CampaignId']=_0x151eef[_0x520c('0x29')];this[_0x520c('0x2a')]=_0x151eef[_0x520c('0x2a')]||'';this[_0x520c('0x2b')]=_0x151eef[_0x520c('0x2b')]||'';}module[_0x520c('0x2c')]=AgentComplete;
\ No newline at end of file
index ac8cfc3..a48ea30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf006=['countabandonedretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','moment','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry'];(function(_0x539ab4,_0x36a0d0){var _0x30e81e=function(_0x2fa09b){while(--_0x2fa09b){_0x539ab4['push'](_0x539ab4['shift']());}};_0x30e81e(++_0x36a0d0);}(_0xf006,0x146));var _0x6f00=function(_0x38ad63,_0x5964f8){_0x38ad63=_0x38ad63-0x0;var _0x361415=_0xf006[_0x38ad63];return _0x361415;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x6f00('0x0'));function getSeconds(_0x281499,_0x5914f3){var _0xbab575=moment(_0x281499)['milliseconds'](0x0);var _0x1c7a9e=moment(_0x5914f3)['milliseconds'](0x0);return _0xbab575['diff'](_0x1c7a9e,_0x6f00('0x1'));}function Final(_0x402677){this[_0x6f00('0x2')]=_0x402677['uniqueid'];this[_0x6f00('0x3')]=_0x402677['scheduledat'];this[_0x6f00('0x4')]=_0x402677[_0x6f00('0x4')];this[_0x6f00('0x5')]=_0x402677[_0x6f00('0x4')]===_0x6f00('0x6')?_0x6f00('0x7'):_0x402677[_0x6f00('0x4')];this[_0x6f00('0x8')]=_0x402677[_0x6f00('0x8')];this[_0x6f00('0x9')]=_0x402677[_0x6f00('0x9')];this[_0x6f00('0xa')]=_0x402677[_0x6f00('0xa')];this['countglobal']=_0x402677[_0x6f00('0x8')]+_0x402677[_0x6f00('0x9')]+_0x402677[_0x6f00('0xa')]+_0x402677[_0x6f00('0xb')]+_0x402677[_0x6f00('0xc')]+_0x402677['countabandonedretry']+_0x402677[_0x6f00('0xd')]+_0x402677['countagentrejectretry'];this[_0x6f00('0xb')]=_0x402677['countnosuchnumberretry'];this[_0x6f00('0xc')]=_0x402677[_0x6f00('0xc')];this[_0x6f00('0xe')]=_0x402677[_0x6f00('0xe')];this[_0x6f00('0xd')]=_0x402677[_0x6f00('0xd')];this[_0x6f00('0xf')]=_0x402677[_0x6f00('0xf')];this[_0x6f00('0x7')]=_0x402677['queue'];this[_0x6f00('0x10')]=_0x402677['calleridname'];this['calleridnum']=_0x402677[_0x6f00('0x11')];this[_0x6f00('0x12')]=_0x402677[_0x6f00('0x12')];this[_0x6f00('0x13')]=_0x402677[_0x6f00('0x13')];this[_0x6f00('0x14')]=_0x402677[_0x6f00('0x13')];this[_0x6f00('0x15')]=_0x402677[_0x6f00('0x15')]||0x0;this[_0x6f00('0x16')]=_0x402677[_0x6f00('0x16')]||0x0;this[_0x6f00('0x17')]=_0x402677['talktime']||0x0;this['callback']=_0x402677['callback'];this[_0x6f00('0x18')]=_0x402677[_0x6f00('0x18')];this[_0x6f00('0x19')]=_0x402677['callbackat'];this[_0x6f00('0x1a')]=_0x402677[_0x6f00('0x1a')];this[_0x6f00('0x1b')]=_0x402677[_0x6f00('0x1b')];this[_0x6f00('0x1c')]=_0x402677[_0x6f00('0x1c')];this[_0x6f00('0x1d')]=_0x402677[_0x6f00('0x1d')];this['VoiceQueueId']=_0x402677[_0x6f00('0x1e')];this[_0x6f00('0x1f')]=_0x402677[_0x6f00('0x1f')];this['originatecalleridnum']=_0x402677[_0x6f00('0x20')]||'';this['originatecalleridname']=_0x402677[_0x6f00('0x21')]||'';}module['exports']=Final;
\ No newline at end of file
+var _0x31af=['uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','queue','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','util','lodash','moment','milliseconds','diff','seconds'];(function(_0x16df1c,_0x342c16){var _0x8e845b=function(_0x44bab2){while(--_0x44bab2){_0x16df1c['push'](_0x16df1c['shift']());}};_0x8e845b(++_0x342c16);}(_0x31af,0xde));var _0xf31a=function(_0x16c7bc,_0x1fa7e7){_0x16c7bc=_0x16c7bc-0x0;var _0x406b4f=_0x31af[_0x16c7bc];return _0x406b4f;};'use strict';var util=require(_0xf31a('0x0'));var _=require(_0xf31a('0x1'));var moment=require(_0xf31a('0x2'));function getSeconds(_0x4d5e50,_0x5f5639){var _0x4596f6=moment(_0x4d5e50)['milliseconds'](0x0);var _0x3b7976=moment(_0x5f5639)[_0xf31a('0x3')](0x0);return _0x4596f6[_0xf31a('0x4')](_0x3b7976,_0xf31a('0x5'));}function Final(_0x5ad096){this[_0xf31a('0x6')]=_0x5ad096[_0xf31a('0x6')];this[_0xf31a('0x7')]=_0x5ad096[_0xf31a('0x7')];this['type']=_0x5ad096[_0xf31a('0x8')];this[_0xf31a('0x9')]=_0x5ad096[_0xf31a('0x8')]===_0xf31a('0xa')?'queue':_0x5ad096[_0xf31a('0x8')];this[_0xf31a('0xb')]=_0x5ad096[_0xf31a('0xb')];this[_0xf31a('0xc')]=_0x5ad096[_0xf31a('0xc')];this['countnoanswerretry']=_0x5ad096[_0xf31a('0xd')];this[_0xf31a('0xe')]=_0x5ad096[_0xf31a('0xb')]+_0x5ad096[_0xf31a('0xc')]+_0x5ad096['countnoanswerretry']+_0x5ad096[_0xf31a('0xf')]+_0x5ad096[_0xf31a('0x10')]+_0x5ad096['countabandonedretry']+_0x5ad096[_0xf31a('0x11')]+_0x5ad096[_0xf31a('0x12')];this[_0xf31a('0xf')]=_0x5ad096[_0xf31a('0xf')];this[_0xf31a('0x10')]=_0x5ad096[_0xf31a('0x10')];this[_0xf31a('0x13')]=_0x5ad096[_0xf31a('0x13')];this[_0xf31a('0x11')]=_0x5ad096[_0xf31a('0x11')];this[_0xf31a('0x12')]=_0x5ad096[_0xf31a('0x12')];this[_0xf31a('0x14')]=_0x5ad096[_0xf31a('0x14')];this[_0xf31a('0x15')]=_0x5ad096['calleridname'];this[_0xf31a('0x16')]=_0x5ad096[_0xf31a('0x16')];this[_0xf31a('0x17')]=_0x5ad096[_0xf31a('0x17')];this['responsetime']=_0x5ad096[_0xf31a('0x18')];this[_0xf31a('0x19')]=_0x5ad096[_0xf31a('0x18')];this[_0xf31a('0x1a')]=_0x5ad096[_0xf31a('0x1a')]||0x0;this['holdtime']=_0x5ad096[_0xf31a('0x1b')]||0x0;this[_0xf31a('0x1c')]=_0x5ad096['talktime']||0x0;this[_0xf31a('0x1d')]=_0x5ad096[_0xf31a('0x1d')];this['callbackuniqueid']=_0x5ad096[_0xf31a('0x1e')];this[_0xf31a('0x1f')]=_0x5ad096['callbackat'];this['recallme']=_0x5ad096['recallme'];this[_0xf31a('0x20')]=_0x5ad096[_0xf31a('0x20')];this['ListId']=_0x5ad096[_0xf31a('0x21')];this[_0xf31a('0x22')]=_0x5ad096[_0xf31a('0x22')];this[_0xf31a('0x23')]=_0x5ad096['VoiceQueueId'];this['CampaignId']=_0x5ad096[_0xf31a('0x24')];this[_0xf31a('0x25')]=_0x5ad096['originatecalleridnum']||'';this['originatecalleridname']=_0x5ad096['originatecalleridname']||'';}module['exports']=Final;
\ No newline at end of file
index e6cba0c..4d38937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x765b=['queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','endtime','format','talktime','membername','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','exports','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','scheduledat','type','campaigntype','outbound'];(function(_0x4bad84,_0x418639){var _0x57c671=function(_0x3f842f){while(--_0x3f842f){_0x4bad84['push'](_0x4bad84['shift']());}};_0x57c671(++_0x418639);}(_0x765b,0x198));var _0xb765=function(_0x256d6a,_0x2f002f){_0x256d6a=_0x256d6a-0x0;var _0x460058=_0x765b[_0x256d6a];return _0x460058;};'use strict';var util=require(_0xb765('0x0'));var _=require(_0xb765('0x1'));var moment=require(_0xb765('0x2'));function getSeconds(_0x1b2752,_0x5c4fbf){var _0x1b0e0=moment(_0x1b2752)[_0xb765('0x3')](0x0);var _0x4003ac=moment(_0x5c4fbf)[_0xb765('0x3')](0x0);return _0x1b0e0[_0xb765('0x4')](_0x4003ac,_0xb765('0x5'));}function Hangup(_0x4023da,_0x539bf7){this[_0xb765('0x6')]=0x4;this[_0xb765('0x7')]='Answer';this[_0xb765('0x8')]=_0x4023da[_0xb765('0x8')];this['type']=_0x4023da[_0xb765('0x9')];this[_0xb765('0xa')]=_0x4023da[_0xb765('0x9')]===_0xb765('0xb')?_0xb765('0xc'):_0x4023da['type'];this[_0xb765('0xd')]=_0x4023da[_0xb765('0xd')];this[_0xb765('0xe')]=_0x4023da['countcongestionretry'];this[_0xb765('0xf')]=_0x4023da[_0xb765('0xf')];this['countglobal']=_0x4023da[_0xb765('0xd')]+_0x4023da['countcongestionretry']+_0x4023da['countnoanswerretry']+_0x4023da[_0xb765('0x10')]+_0x4023da[_0xb765('0x11')]+_0x4023da[_0xb765('0x12')]+_0x4023da[_0xb765('0x13')]+_0x4023da[_0xb765('0x14')];this[_0xb765('0x10')]=_0x4023da['countnosuchnumberretry'];this['countdropretry']=_0x4023da[_0xb765('0x11')];this[_0xb765('0x12')]=_0x4023da[_0xb765('0x12')];this[_0xb765('0x13')]=_0x4023da[_0xb765('0x13')];this[_0xb765('0x14')]=_0x4023da[_0xb765('0x14')];this[_0xb765('0x15')]=_0x539bf7[_0xb765('0x15')];this[_0xb765('0x16')]=_0x4023da[_0xb765('0x17')];this[_0xb765('0x18')]=_0x4023da['number'];this[_0xb765('0x19')]=_0x4023da[_0xb765('0x19')];this[_0xb765('0x1a')]=_0x4023da[_0xb765('0x1a')];this[_0xb765('0x1b')]=moment()[_0xb765('0x1c')]('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=getSeconds(_0x4023da[_0xb765('0x1a')],_0x4023da[_0xb765('0x19')]);this['holdtime']=0x0;this[_0xb765('0x1d')]=getSeconds(this['endtime'],_0x4023da[_0xb765('0x1a')]);this[_0xb765('0xc')]=_0x4023da['queue'];this[_0xb765('0x1e')]='IVR';this[_0xb765('0x1f')]=_0x539bf7[_0xb765('0x20')];this['callback']=_0x4023da[_0xb765('0x21')];this['callbackuniqueid']=_0x4023da[_0xb765('0x22')];this[_0xb765('0x23')]=_0x4023da[_0xb765('0x23')];this[_0xb765('0x24')]=_0x4023da[_0xb765('0x24')];this[_0xb765('0x25')]=_0x4023da['ContactId'];this['ListId']=_0x4023da[_0xb765('0x26')];this[_0xb765('0x27')]=_0x4023da[_0xb765('0x27')];this[_0xb765('0x28')]=_0x4023da[_0xb765('0x28')];this['CampaignId']=_0x4023da['CampaignId'];}module[_0xb765('0x29')]=Hangup;
\ No newline at end of file
+var _0x1b1d=['ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','milliseconds','diff','seconds','Answer','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countagentrejectretry','countdropretry','countmachineretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','queue','IVR','callback','callbackuniqueid','callbackat','recallme'];(function(_0xacf542,_0x12c8a8){var _0x13a503=function(_0x3a183a){while(--_0x3a183a){_0xacf542['push'](_0xacf542['shift']());}};_0x13a503(++_0x12c8a8);}(_0x1b1d,0xae));var _0xd1b1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1b1d[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xd1b1('0x0'));var _=require(_0xd1b1('0x1'));var moment=require('moment');function getSeconds(_0x451f18,_0x29d596){var _0x1cd6c6=moment(_0x451f18)[_0xd1b1('0x2')](0x0);var _0x4115dd=moment(_0x29d596)['milliseconds'](0x0);return _0x1cd6c6[_0xd1b1('0x3')](_0x4115dd,_0xd1b1('0x4'));}function Hangup(_0x197c2b,_0xbcb51f){this['state']=0x4;this['statedesc']=_0xd1b1('0x5');this[_0xd1b1('0x6')]=_0x197c2b[_0xd1b1('0x6')];this[_0xd1b1('0x7')]=_0x197c2b['type'];this[_0xd1b1('0x8')]=_0x197c2b[_0xd1b1('0x7')]===_0xd1b1('0x9')?'queue':_0x197c2b[_0xd1b1('0x7')];this[_0xd1b1('0xa')]=_0x197c2b[_0xd1b1('0xa')];this[_0xd1b1('0xb')]=_0x197c2b[_0xd1b1('0xb')];this[_0xd1b1('0xc')]=_0x197c2b[_0xd1b1('0xc')];this[_0xd1b1('0xd')]=_0x197c2b[_0xd1b1('0xa')]+_0x197c2b['countcongestionretry']+_0x197c2b['countnoanswerretry']+_0x197c2b[_0xd1b1('0xe')]+_0x197c2b['countdropretry']+_0x197c2b[_0xd1b1('0xf')]+_0x197c2b['countmachineretry']+_0x197c2b[_0xd1b1('0x10')];this[_0xd1b1('0xe')]=_0x197c2b[_0xd1b1('0xe')];this[_0xd1b1('0x11')]=_0x197c2b['countdropretry'];this['countabandonedretry']=_0x197c2b['countabandonedretry'];this[_0xd1b1('0x12')]=_0x197c2b[_0xd1b1('0x12')];this[_0xd1b1('0x10')]=_0x197c2b[_0xd1b1('0x10')];this['uniqueid']=_0xbcb51f[_0xd1b1('0x13')];this[_0xd1b1('0x14')]=_0x197c2b[_0xd1b1('0x15')];this[_0xd1b1('0x16')]=_0x197c2b['number'];this[_0xd1b1('0x17')]=_0x197c2b[_0xd1b1('0x17')];this[_0xd1b1('0x18')]=_0x197c2b['responsetime'];this[_0xd1b1('0x19')]=moment()[_0xd1b1('0x1a')](_0xd1b1('0x1b'));this['ringtime']=getSeconds(_0x197c2b[_0xd1b1('0x18')],_0x197c2b[_0xd1b1('0x17')]);this[_0xd1b1('0x1c')]=0x0;this[_0xd1b1('0x1d')]=getSeconds(this[_0xd1b1('0x19')],_0x197c2b[_0xd1b1('0x18')]);this[_0xd1b1('0x1e')]=_0x197c2b[_0xd1b1('0x1e')];this['membername']=_0xd1b1('0x1f');this['reason']=_0xbcb51f['cause-txt'];this[_0xd1b1('0x20')]=_0x197c2b[_0xd1b1('0x20')];this['callbackuniqueid']=_0x197c2b[_0xd1b1('0x21')];this[_0xd1b1('0x22')]=_0x197c2b[_0xd1b1('0x22')];this[_0xd1b1('0x23')]=_0x197c2b[_0xd1b1('0x23')];this[_0xd1b1('0x24')]=_0x197c2b[_0xd1b1('0x24')];this[_0xd1b1('0x25')]=_0x197c2b[_0xd1b1('0x25')];this['UserId']=_0x197c2b[_0xd1b1('0x26')];this[_0xd1b1('0x27')]=_0x197c2b[_0xd1b1('0x27')];this[_0xd1b1('0x28')]=_0x197c2b['CampaignId'];}module[_0xd1b1('0x29')]=Hangup;
\ No newline at end of file
index 2715a6a..258ffa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d81=['countabandonedretry','countagentrejectretry','countmachineretry','calleridname','calleridnum','number','starttime','responsetime','endtime','ringtime','talktime','callback','callbackuniqueid','recallme','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'];(function(_0x36ac36,_0x38a516){var _0x28fd5c=function(_0x87c433){while(--_0x87c433){_0x36ac36['push'](_0x36ac36['shift']());}};_0x28fd5c(++_0x38a516);}(_0x8d81,0xd8));var _0x18d8=function(_0x237408,_0x15ff98){_0x237408=_0x237408-0x0;var _0x1ba3e8=_0x8d81[_0x237408];return _0x1ba3e8;};'use strict';var util=require(_0x18d8('0x0'));var _=require(_0x18d8('0x1'));var moment=require(_0x18d8('0x2'));function getSeconds(_0x2b1eff,_0xf46ab){var _0x3edfda=moment(_0x2b1eff)[_0x18d8('0x3')](0x0);var _0x7545bb=moment(_0xf46ab)[_0x18d8('0x3')](0x0);return _0x3edfda[_0x18d8('0x4')](_0x7545bb,_0x18d8('0x5'));}function History(_0x3c411d){this[_0x18d8('0x6')]=_0x3c411d[_0x18d8('0x6')];this[_0x18d8('0x7')]=_0x3c411d[_0x18d8('0x7')]||undefined;this[_0x18d8('0x8')]=_0x3c411d[_0x18d8('0x8')];this[_0x18d8('0x9')]=_0x3c411d[_0x18d8('0x8')]===_0x18d8('0xa')?_0x18d8('0xb'):_0x3c411d[_0x18d8('0x8')];this[_0x18d8('0xc')]=_0x3c411d[_0x18d8('0xc')];this[_0x18d8('0xd')]=_0x3c411d[_0x18d8('0xd')];this[_0x18d8('0xe')]=_0x3c411d['countnoanswerretry'];this[_0x18d8('0xf')]=_0x3c411d[_0x18d8('0xc')]+_0x3c411d[_0x18d8('0xd')]+_0x3c411d[_0x18d8('0xe')]+_0x3c411d[_0x18d8('0x10')]+_0x3c411d[_0x18d8('0x11')]+_0x3c411d[_0x18d8('0x12')]+_0x3c411d['countmachineretry']+_0x3c411d[_0x18d8('0x13')];this[_0x18d8('0x10')]=_0x3c411d[_0x18d8('0x10')];this['countdropretry']=_0x3c411d[_0x18d8('0x11')];this['countabandonedretry']=_0x3c411d[_0x18d8('0x12')];this[_0x18d8('0x14')]=_0x3c411d['countmachineretry'];this[_0x18d8('0x13')]=_0x3c411d[_0x18d8('0x13')];this['queue']=_0x3c411d[_0x18d8('0xb')];this[_0x18d8('0x15')]=_0x3c411d['name'];this[_0x18d8('0x16')]=_0x3c411d[_0x18d8('0x17')];this[_0x18d8('0x18')]=_0x3c411d['starttime'];this[_0x18d8('0x19')]=_0x3c411d[_0x18d8('0x19')];this[_0x18d8('0x1a')]=_0x3c411d[_0x18d8('0x19')];this[_0x18d8('0x1b')]=getSeconds(_0x3c411d[_0x18d8('0x19')],_0x3c411d[_0x18d8('0x18')]);this['holdtime']=0x0;this[_0x18d8('0x1c')]=0x0;this[_0x18d8('0x1d')]=_0x3c411d[_0x18d8('0x1d')];this[_0x18d8('0x1e')]=_0x3c411d[_0x18d8('0x1e')];this['callbackat']=_0x3c411d['callbackat'];this[_0x18d8('0x1f')]=_0x3c411d[_0x18d8('0x1f')];this['ContactId']=_0x3c411d['ContactId'];this['ListId']=_0x3c411d[_0x18d8('0x20')];this[_0x18d8('0x21')]=_0x3c411d[_0x18d8('0x21')];this[_0x18d8('0x22')]=_0x3c411d['VoiceQueueId'];this[_0x18d8('0x23')]=_0x3c411d[_0x18d8('0x23')];this['originatecalleridnum']=_0x3c411d[_0x18d8('0x24')]||'';this[_0x18d8('0x25')]=_0x3c411d[_0x18d8('0x25')]||'';}module[_0x18d8('0x26')]=History;
\ No newline at end of file
+var _0xc43f=['countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime','talktime','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','uniqueid','scheduledat','type','queue','countbusyretry','countcongestionretry','countglobal','countnosuchnumberretry','countdropretry'];(function(_0x5192de,_0x4e91cd){var _0x4e287e=function(_0x3639bc){while(--_0x3639bc){_0x5192de['push'](_0x5192de['shift']());}};_0x4e287e(++_0x4e91cd);}(_0xc43f,0x1f2));var _0xfc43=function(_0x712c13,_0x24e8e0){_0x712c13=_0x712c13-0x0;var _0x4bdc9d=_0xc43f[_0x712c13];return _0x4bdc9d;};'use strict';var util=require(_0xfc43('0x0'));var _=require('lodash');var moment=require(_0xfc43('0x1'));function getSeconds(_0x44e273,_0x158210){var _0x495f87=moment(_0x44e273)[_0xfc43('0x2')](0x0);var _0x417b9c=moment(_0x158210)[_0xfc43('0x2')](0x0);return _0x495f87['diff'](_0x417b9c,'seconds');}function History(_0x3cb362){this[_0xfc43('0x3')]=_0x3cb362[_0xfc43('0x3')];this[_0xfc43('0x4')]=_0x3cb362[_0xfc43('0x4')]||undefined;this['type']=_0x3cb362[_0xfc43('0x5')];this['campaigntype']=_0x3cb362[_0xfc43('0x5')]==='outbound'?_0xfc43('0x6'):_0x3cb362['type'];this[_0xfc43('0x7')]=_0x3cb362['countbusyretry'];this['countcongestionretry']=_0x3cb362[_0xfc43('0x8')];this['countnoanswerretry']=_0x3cb362['countnoanswerretry'];this[_0xfc43('0x9')]=_0x3cb362[_0xfc43('0x7')]+_0x3cb362['countcongestionretry']+_0x3cb362['countnoanswerretry']+_0x3cb362[_0xfc43('0xa')]+_0x3cb362[_0xfc43('0xb')]+_0x3cb362[_0xfc43('0xc')]+_0x3cb362[_0xfc43('0xd')]+_0x3cb362['countagentrejectretry'];this['countnosuchnumberretry']=_0x3cb362[_0xfc43('0xa')];this[_0xfc43('0xb')]=_0x3cb362['countdropretry'];this[_0xfc43('0xc')]=_0x3cb362[_0xfc43('0xc')];this[_0xfc43('0xd')]=_0x3cb362[_0xfc43('0xd')];this[_0xfc43('0xe')]=_0x3cb362[_0xfc43('0xe')];this['queue']=_0x3cb362[_0xfc43('0x6')];this[_0xfc43('0xf')]=_0x3cb362[_0xfc43('0x10')];this[_0xfc43('0x11')]=_0x3cb362[_0xfc43('0x12')];this[_0xfc43('0x13')]=_0x3cb362['starttime'];this['responsetime']=_0x3cb362[_0xfc43('0x14')];this[_0xfc43('0x15')]=_0x3cb362[_0xfc43('0x14')];this[_0xfc43('0x16')]=getSeconds(_0x3cb362[_0xfc43('0x14')],_0x3cb362[_0xfc43('0x13')]);this['holdtime']=0x0;this[_0xfc43('0x17')]=0x0;this[_0xfc43('0x18')]=_0x3cb362[_0xfc43('0x18')];this[_0xfc43('0x19')]=_0x3cb362[_0xfc43('0x19')];this[_0xfc43('0x1a')]=_0x3cb362[_0xfc43('0x1a')];this['recallme']=_0x3cb362[_0xfc43('0x1b')];this['ContactId']=_0x3cb362['ContactId'];this[_0xfc43('0x1c')]=_0x3cb362[_0xfc43('0x1c')];this[_0xfc43('0x1d')]=_0x3cb362[_0xfc43('0x1d')];this['VoiceQueueId']=_0x3cb362[_0xfc43('0x1e')];this['CampaignId']=_0x3cb362['CampaignId'];this['originatecalleridnum']=_0x3cb362[_0xfc43('0x1f')]||'';this[_0xfc43('0x20')]=_0x3cb362[_0xfc43('0x20')]||'';}module[_0xfc43('0x21')]=History;
\ No newline at end of file
index 686d4d8..69babbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc576=['syncOriginateResponse','agentcomplete','syncQueueSummary','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Interval','Intervals','[ifTime][Action]','Error','stringify','diff','seconds','emit','outbound','strategy','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','callerid','md5','format','voice:queue:%s','type','ivr','campaign:save','isEmpty','info','-----\x20Stats\x20Predictive\x20---','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','---------------------------','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','erlangCallToSecond','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','merge','milliseconds','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','error','inspect','stack','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','AVAILABLE_CONTACTS_FINISHED','sendMessageOneNotActive','pTalking','available','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','endtime','clearZombieChannels','[uniqueid]','actions','[actions]','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','then','[countReScheduled]\x20','resolve','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','getContactDialer','temp','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','emptyContact','notFound','saveInDb','pick','ContactId','ListId','UserId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','reachable','SIP/%s','unmonitored','uniqueid','isNil','variable','amdstatus','xcally-motion-dialer','dialAMDActive','HANGUP','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','value','MACHINE','Machine','countmachineretry','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countagentrejectretry','dialGlobalMaxRetry','reason19\x20machine....','dialMachineMaxRetry','reason\x2019\x20machine....','add','minutes','YYYY-MM-DD\x20HH:mm:ss','VoiceQueueId','HangupInAMD','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','membername','countabandonedretry','stateGlobal','createStateFinal','dialMachineRetryFrequency','[rescheduleContact][Machine]','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','AnswerAGI','outboundUnknownCallsDay','syncAgentComplete','reason','agiafterat','syncAgentConnect','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','dropreason','dialQueueProject2','[rescheduleContact][Drop]','starttime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actionid','locked','paused','stateinterface','rrmemory','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','roundrobin','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','[booked][RR][finaly]','contactAgent-idHopper:\x20','[booked][unlock]','[booked][unlock2]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','Failure','\x20Intervals\x20is\x20null\x20','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','command','iftime\x20%s,%s','content','indexOf','true','all','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialTimezone','[syncQueueSummary]','checkIsTrunkReachable','dialGlobalInterval','[syncCampaigns]','pow','random','match','object','originate','Contact','phone','contact\x20is\x20undefine','getCaller','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','createdAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','countcongestionretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalMaxThreshold','round','predictiveIntervalMinThreshold','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','[startMethodPredictive][StartProgressive][Loop]','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dialPredictiveOptimization','Drop\x20in\x20this\x20interval','dialPredictiveInterval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','floor','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','Agent','voicePause','outboundReCallsDay','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','maxNumberOriginate','getContactDialerIvr','dialOrderByScheduledAt','[getContactCampaign2][Empty]','ivrTotalCallsDays','Contact.phone','loggerHandler','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','ACTIVE','RUNNING','[actionOriginate]\x20','checkIsBlackList','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\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','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','[busyFactor]','util','lodash','bluebird','uuid','moment','../preview/util/util','../../../config/logger','dialer','booked','predictive','../ami','redis','localhost','socket.io-emitter','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','channels','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','queueBooked','queueBookedRR','agentconnect','bind','queuecallerabandon','syncQueueCallerAbandon'];(function(_0x1265e4,_0x1e56c9){var _0x56c4cb=function(_0x40638a){while(--_0x40638a){_0x1265e4['push'](_0x1265e4['shift']());}};_0x56c4cb(++_0x1e56c9);}(_0xc576,0x1ea));var _0x6c57=function(_0x5401ae,_0x5e58ac){_0x5401ae=_0x5401ae-0x0;var _0x286068=_0xc576[_0x5401ae];return _0x286068;};'use strict';var util=require(_0x6c57('0x0'));var _=require(_0x6c57('0x1'));var BPromise=require(_0x6c57('0x2'));var uuid=require(_0x6c57('0x3'));var moment=require(_0x6c57('0x4'));var rr=require('rr');var md5=require('md5');var Redis=require('ioredis');var ut=require(_0x6c57('0x5'));var config=require('../../../config/environment/');var logger=require(_0x6c57('0x6'))(_0x6c57('0x7'));var loggerBooked=require('../../../config/logger')(_0x6c57('0x8'));var loggerPredictive=require('../../../config/logger')(_0x6c57('0x9'));var loggerPredictiveCalls=require(_0x6c57('0x6'))('predictiveCalls');var loggerSyncQueueSummary=require(_0x6c57('0x6'))('syncQueueSummary');var ami=require(_0x6c57('0xa'));config[_0x6c57('0xb')]=_['defaults'](config[_0x6c57('0xb')],{'host':_0x6c57('0xc'),'port':0x18eb});var io=require(_0x6c57('0xd'))(new Redis(config[_0x6c57('0xb')]));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0x6c57('0xe'));var cmHopperBlack=require(_0x6c57('0xf'));var voiceQueueRt=require(_0x6c57('0x10'));var Action=require(_0x6c57('0x11'));var History=require(_0x6c57('0x12'));var Final=require(_0x6c57('0x13'));var AgentComplete=require('./agentComplete');var QueueCallerAbandon=require(_0x6c57('0x14'));var Hangup=require(_0x6c57('0x15'));var ipAgi=process[_0x6c57('0x16')][_0x6c57('0x17')]||_0x6c57('0x18');var strategy={'rrmemory':'rrmemory','roundrobin':'roundrobin'};var Sequence=function(){};Sequence[_0x6c57('0x19')][_0x6c57('0x1a')]=function(_0xc4139b){this[_0x6c57('0x1b')]=this[_0x6c57('0x1b')]?this[_0x6c57('0x1b')][_0x6c57('0x1c')](_0xc4139b):_0xc4139b();};function Dialer(_0x2fa059,_0x3c4a2c){this[_0x6c57('0x1d')]=new Sequence();this[_0x6c57('0x1e')]=_0x3c4a2c;this[_0x6c57('0x1f')]=_0x2fa059[_0x6c57('0x1f')];this['campaigns']=_0x2fa059[_0x6c57('0x20')];this['agents']=_0x2fa059[_0x6c57('0x21')];this[_0x6c57('0x22')]=_0x2fa059[_0x6c57('0x22')];this['maxNumberOriginate']=config['maxNumberOriginate']||0x2;this[_0x6c57('0x23')]={};this['actions']={};this[_0x6c57('0x24')]={};this[_0x6c57('0x25')]={};this[_0x6c57('0x26')]={};this[_0x6c57('0x27')]={};this[_0x6c57('0x28')]={};this['ivrOriginated']={};this[_0x6c57('0x29')]={};this[_0x6c57('0x2a')]={};ami['on'](_0x6c57('0x2b'),this['syncAgentConnect'][_0x6c57('0x2c')](this));ami['on'](_0x6c57('0x2d'),this[_0x6c57('0x2e')][_0x6c57('0x2c')](this));ami['on']('originateresponse',this[_0x6c57('0x2f')]['bind'](this));ami['on'](_0x6c57('0x30'),this['syncAgentComplete'][_0x6c57('0x2c')](this));ami['on']('custom:queuesummary',this[_0x6c57('0x31')][_0x6c57('0x2c')](this));ami['on'](_0x6c57('0x32'),this[_0x6c57('0x33')][_0x6c57('0x2c')](this));ami['on'](_0x6c57('0x34'),this[_0x6c57('0x35')][_0x6c57('0x2c')](this));ami['on'](_0x6c57('0x36'),this[_0x6c57('0x37')][_0x6c57('0x2c')](this));ami['on'](_0x6c57('0x38'),this[_0x6c57('0x39')]['bind'](this));ami['on'](_0x6c57('0x3a'),this[_0x6c57('0x3b')]['bind'](this));this[_0x6c57('0x3c')]();this[_0x6c57('0x3d')]();}function isNotNull(_0x3d5d0f){return _0x3d5d0f!==null&&!_[_0x6c57('0x3e')](_0x3d5d0f);}function checkIsLoggedIn(_0xeef13c,_0x52a6dc){return function(){if(_0x52a6dc<=0x0){_0xeef13c[_0x6c57('0x3f')]=_0x6c57('0x40');throw _0xeef13c[_0x6c57('0x41')]+_0x6c57('0x42');}};}function isActive(_0x43ac10){return _0x43ac10;}function checkIsActive(_0x33d446,_0x4bd470){return function(){if(!isActive(_0x4bd470)){_0x33d446['message']=_0x6c57('0x43');throw _0x33d446[_0x6c57('0x41')]+_0x6c57('0x44');}};}function checkInterval(_0x4d596f){return function(){if(!isNotNull(_0x4d596f['Interval'])){_0x4d596f['message']=_0x6c57('0x45');throw _0x4d596f['name']+_0x6c57('0x46');}if(!isNotNull(_0x4d596f[_0x6c57('0x47')]['Intervals'])){_0x4d596f[_0x6c57('0x3f')]=_0x6c57('0x45');throw _0x4d596f[_0x6c57('0x41')]+_0x6c57('0x46');}if(!isNotNull(_['isEmpty'](_0x4d596f[_0x6c57('0x47')][_0x6c57('0x48')]))){_0x4d596f['message']=_0x6c57('0x45');throw _0x4d596f[_0x6c57('0x41')]+_0x6c57('0x46');}};}function msgResponse(_0x4e4ec0,_0x3538b7,_0x25bb4c){return{'action':_0x4e4ec0,'response':_0x3538b7,'message':_0x25bb4c,'stack':_0x25bb4c};}function myreject(_0x24b780){return function(_0x1ffb0b){return _0x24b780(msgResponse(_0x6c57('0x49'),_0x6c57('0x4a'),JSON[_0x6c57('0x4b')](_0x1ffb0b)));};}function getSeconds(_0x286c7a,_0x100f4b){var _0x4e1f95=moment(_0x286c7a)['milliseconds'](0x0);var _0x1e1a05=moment(_0x100f4b)['milliseconds'](0x0);return _0x4e1f95[_0x6c57('0x4c')](_0x1e1a05,_0x6c57('0x4d'));}function emit(_0x510945,_0x1fc0aa,_0x119367){io['to'](_0x510945)[_0x6c57('0x4e')](_0x1fc0aa,_0x119367);}function emitVoiceQueueSummary(_0x4fee13){if(_0x4fee13['type']===_0x6c57('0x4f')){var _0x143557={'id':_0x4fee13['id'],'name':_0x4fee13[_0x6c57('0x41')],'strategy':_0x4fee13[_0x6c57('0x50')],'answered':_0x4fee13['answered'],'available':_0x4fee13['available'],'loggedIn':_0x4fee13[_0x6c57('0x51')],'pTalking':_0x4fee13['pTalking'],'sumBillable':_0x4fee13[_0x6c57('0x52')],'sumDuration':_0x4fee13[_0x6c57('0x53')],'sumHoldTime':_0x4fee13[_0x6c57('0x54')]||0x0,'talking':_0x4fee13[_0x6c57('0x55')],'total':_0x4fee13['total'],'type':_0x4fee13['type'],'unmanaged':_0x4fee13[_0x6c57('0x56')],'abandoned':_0x4fee13[_0x6c57('0x57')],'waiting':_0x4fee13[_0x6c57('0x58')],'loggedInDb':_0x4fee13[_0x6c57('0x59')],'dialActive':_0x4fee13[_0x6c57('0x5a')],'dialMethod':_0x4fee13[_0x6c57('0x5b')],'dialOriginateCallerIdName':_0x4fee13[_0x6c57('0x5c')],'dialOriginateCallerIdNumber':_0x4fee13[_0x6c57('0x5d')],'dialOriginateTimeout':_0x4fee13[_0x6c57('0x5e')],'dialPrefix':_0x4fee13['dialPrefix'],'outboundAnswerAgiCallsDay':_0x4fee13[_0x6c57('0x5f')],'outboundAnswerCallsDay':_0x4fee13[_0x6c57('0x60')],'outboundBlacklistCallsDay':_0x4fee13['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x4fee13['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x4fee13[_0x6c57('0x61')],'outboundDropCallsDayACS':_0x4fee13['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x4fee13[_0x6c57('0x62')],'outboundDropCallsDayTimeout':_0x4fee13[_0x6c57('0x63')],'outboundNoAnswerCallsDay':_0x4fee13[_0x6c57('0x64')],'outboundNoSuchCallsDay':_0x4fee13[_0x6c57('0x65')],'outboundOriginateFailureCallsDay':_0x4fee13[_0x6c57('0x66')],'outboundReCallsDay':_0x4fee13['outboundReCallsDay'],'outboundRejectCallsDay':_0x4fee13['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x4fee13['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x4fee13[_0x6c57('0x67')],'predictiveIntervalAvgHoldtime':_0x4fee13[_0x6c57('0x68')],'predictiveIntervalAvgTalktime':_0x4fee13[_0x6c57('0x69')],'predictiveIntervalDroppedCallsCallersExit':_0x4fee13[_0x6c57('0x6a')],'predictiveIntervalDroppedCallsTimeout':_0x4fee13[_0x6c57('0x6b')],'predictiveIntervalErlangCalls':_0x4fee13[_0x6c57('0x6c')],'predictiveIntervalErlangCallsDroppedCalls':_0x4fee13[_0x6c57('0x6d')],'predictiveIntervalHitRate':_0x4fee13[_0x6c57('0x6e')],'predictiveIntervalMultiplicativeFactor':_0x4fee13[_0x6c57('0x6f')],'predictiveIntervalPauses':_0x4fee13[_0x6c57('0x70')],'predictiveIntervalAvailable':_0x4fee13[_0x6c57('0x71')],'predictiveIntervalTotalCalls':_0x4fee13[_0x6c57('0x72')],'message':_0x4fee13[_0x6c57('0x3f')],'originated':_0x4fee13[_0x6c57('0x73')],'erlangCalls':_0x4fee13[_0x6c57('0x74')],'erlangCallToSecond':_0x4fee13['erlangCallToSecond'],'erlangAbandonmentRate':_0x4fee13[_0x6c57('0x75')],'erlangBusyFactor':_0x4fee13[_0x6c57('0x76')],'startPredictive':_0x4fee13['startPredictive'],'startProgressive':_0x4fee13['startProgressive']};if(_0x4fee13['Trunk']){_0x143557['Trunk']={'id':_0x4fee13[_0x6c57('0x77')]['id'],'name':_0x4fee13[_0x6c57('0x77')][_0x6c57('0x41')],'active':_0x4fee13['Trunk'][_0x6c57('0x78')],'callerid':_0x4fee13[_0x6c57('0x77')][_0x6c57('0x79')]};}if(_0x4fee13[_0x6c57('0x47')]){_0x143557['Interval']={'id':_0x4fee13[_0x6c57('0x47')]['id'],'name':_0x4fee13[_0x6c57('0x47')]['name']};}var _0x5a6724=md5(JSON[_0x6c57('0x4b')](_0x143557));if(_0x4fee13['md5']!==_0x5a6724){_0x4fee13[_0x6c57('0x7a')]=_0x5a6724;emit(util[_0x6c57('0x7b')](_0x6c57('0x7c'),_0x143557[_0x6c57('0x41')]),'voice_queue:save',_0x143557);}}}function emitCampaignSummary(_0x49150d){if(_0x49150d[_0x6c57('0x7d')]===_0x6c57('0x7e')){emit(util['format']('campaign:ivr:%s',_0x49150d[_0x6c57('0x41')]),_0x6c57('0x7f'),_0x49150d);}}function checkGetDataPredictive(_0x58d064){if(isNotNull(_0x58d064)&&!_[_0x6c57('0x80')](_0x58d064)){loggerPredictive[_0x6c57('0x81')](_0x6c57('0x82'));loggerPredictive['info'](_0x6c57('0x83'),_0x58d064[_0x6c57('0x72')]);loggerPredictive[_0x6c57('0x81')](_0x6c57('0x84'),_0x58d064[_0x6c57('0x67')]);loggerPredictive[_0x6c57('0x81')](_0x6c57('0x85'),_0x58d064[_0x6c57('0x6b')]);loggerPredictive['info'](_0x6c57('0x86'),_0x58d064[_0x6c57('0x6a')]);loggerPredictive[_0x6c57('0x81')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x58d064[_0x6c57('0x68')]);loggerPredictive[_0x6c57('0x81')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x58d064[_0x6c57('0x69')]);loggerPredictive[_0x6c57('0x81')](_0x6c57('0x87'));if(_0x58d064[_0x6c57('0x72')]>0x0){if(!_[_0x6c57('0x3e')](_0x58d064['predictiveIntervalAvgTalktime'])&&_0x58d064[_0x6c57('0x69')]>0x0){return!![];}loggerPredictive[_0x6c57('0x81')]('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_['isUndefined'](_0x58d064[_0x6c57('0x68')])&&_0x58d064[_0x6c57('0x68')]>0x0){return!![];}loggerPredictive[_0x6c57('0x81')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive['info']('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0x6c57('0x81')](_0x6c57('0x88'));}return![];}function mergeDataErlangB(_0x26e961){return function(_0x9401b0){loggerPredictive[_0x6c57('0x81')](_0x6c57('0x89'));loggerPredictive[_0x6c57('0x81')](_0x6c57('0x8a'),_0x9401b0['erlangCalls']);loggerPredictive['info'](_0x6c57('0x8b'),_0x9401b0[_0x6c57('0x8c')]);loggerPredictive[_0x6c57('0x81')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x9401b0['erlangAbandonmentRate']);loggerPredictive[_0x6c57('0x81')](_0x6c57('0x8d'),_0x9401b0['erlangBusyFactor']);loggerPredictive[_0x6c57('0x81')](_0x6c57('0x8e'),_0x9401b0[_0x6c57('0x75')]);loggerPredictive[_0x6c57('0x81')]('---------------------------');_[_0x6c57('0x8f')](_0x26e961,_0x9401b0);};}function getDiff(_0x1c6c83){var _0x3c321e=moment()[_0x6c57('0x90')](0x0);var _0x31a603=moment(_0x1c6c83)[_0x6c57('0x90')](0x0);return _0x3c321e[_0x6c57('0x4c')](_0x31a603,'seconds');}function ifInterval(_0x40e8fa,_0xae6a20){if(_['isUndefined'](_0xae6a20)){return![];}return getDiff(_0xae6a20)<_0x40e8fa*0x3c;}function freeVariablesPredictive(_0x115c33){if(isNotNull(_0x115c33)){if(!_[_0x6c57('0x3e')](_0x115c33[_0x6c57('0x28')])){_0x115c33['startProgressive']=undefined;loggerPredictive['info'](_0x115c33[_0x6c57('0x41')],_0x6c57('0x91'));}if(!_[_0x6c57('0x3e')](_0x115c33[_0x6c57('0x27')])){_0x115c33['startPredictive']=undefined;loggerPredictive['info'](_0x115c33[_0x6c57('0x41')],_0x6c57('0x92'));}if(!_[_0x6c57('0x3e')](_0x115c33[_0x6c57('0x93')])){clearInterval(_0x115c33['handlePredictive']);_0x115c33[_0x6c57('0x93')]=undefined;loggerPredictive[_0x6c57('0x81')](_0x115c33[_0x6c57('0x41')],_0x6c57('0x94'));}}}function erlangb(_0x5ab87c,_0x1258ae){if(_0x1258ae===0x0){return 0x0;}var _0x176ba3=0x1;for(var _0x6c3d39=0x1;_0x6c3d39<=_0x1258ae;_0x6c3d39+=0x1){_0x176ba3=0x1+_0x176ba3*_0x6c3d39/_0x5ab87c;}return 0x1/_0x176ba3;}function isVoiceQueueOutbound(_0x40f0e8){return _0x40f0e8===_0x6c57('0x4f');}function isNotPreview(_0xbc8c44){return _0xbc8c44!==_0x6c57('0x1e');}function isCampaignIvr(_0x3f470f){return _0x3f470f===_0x6c57('0x7e');}function getCallerId(_0x12d4da,_0x1deea4,_0x5606e2){if(!_[_0x6c57('0x3e')](_0x5606e2)&&typeof _0x5606e2===_0x6c57('0x95')&&!_[_0x6c57('0x80')](_0x5606e2)){if(!_[_0x6c57('0x3e')](_0x1deea4)&&typeof _0x1deea4===_0x6c57('0x95')&&!_[_0x6c57('0x80')](_0x1deea4)){return util[_0x6c57('0x7b')]('\x22%s\x22\x20<%s>',_0x1deea4,_0x5606e2);}return util[_0x6c57('0x7b')](_0x6c57('0x96'),_0x5606e2,_0x5606e2);}if(!_[_0x6c57('0x3e')](_0x12d4da)&&typeof _0x12d4da==='string'&&!_['isEmpty'](_0x12d4da)){return _0x12d4da;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x967a8e,_0x1dbeb8){return function(_0xdfbaa1){freeVariablesPredictive(_0x1dbeb8);emitVoiceQueueSummary(_0x1dbeb8);emitCampaignSummary(_0x1dbeb8);loggerSyncQueueSummary[_0x6c57('0x97')](_0x967a8e,util[_0x6c57('0x98')](_0xdfbaa1,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x219aa0,_0x81c16b){return function(_0x590d74){loggerPredictive['error'](_0x81c16b[_0x6c57('0x41')],_0x219aa0);loggerPredictive[_0x6c57('0x97')](_0x590d74[_0x6c57('0x99')]);freeVariablesPredictive(_0x81c16b);};}function loggerCatch(_0x522320){return function(_0xab430e){logger[_0x6c57('0x97')](_0x522320,util[_0x6c57('0x98')](_0xab430e,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x362abf){return _0x362abf&&!_[_0x6c57('0x3e')](_0x362abf)&&_0x362abf[_0x6c57('0x9a')]>0x0;}function decremetOriginate(_0x1e7349){if(!_[_0x6c57('0x3e')](_0x1e7349)&&_0x1e7349!==null){if(typeof _0x1e7349[_0x6c57('0x73')]!==_0x6c57('0x9b')){if(_0x1e7349[_0x6c57('0x73')]>0x0){_0x1e7349[_0x6c57('0x73')]-=0x1;}else{logger[_0x6c57('0x97')](_0x6c57('0x9c'));}}}else{logger[_0x6c57('0x97')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x591b80,_0x23f2ae,_0x2c333f){if(_0x23f2ae>_0x2c333f){for(var _0x5fad07=0x0;_0x5fad07<_0x23f2ae-_0x2c333f;_0x5fad07+=0x1){decremetOriginate(_0x591b80);}}}function loggerGetContactDialer(_0x468571,_0x4bc32e,_0x486e5f){return function(_0x350336){checkContactLowerLimitOriginate(_0x4bc32e,_0x486e5f,0x0);logger[_0x6c57('0x97')](_0x468571,util[_0x6c57('0x98')](_0x350336,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0xd33c61){return function(_0x569c7f){if(isNotNull(_0x569c7f)&&isNotNull(_0x569c7f[0x0])){if(_0x569c7f[0x0][_0x6c57('0x9d')]>0x0){_0xd33c61[_0x6c57('0x3f')]=_0x6c57('0x9e');logger[_0x6c57('0x81')](_0x6c57('0x9f')+_0xd33c61[_0x6c57('0x41')],_0x569c7f[0x0][_0x6c57('0x9d')],'contacts');}else{_0xd33c61[_0x6c57('0x3f')]=_0x6c57('0xa0');logger[_0x6c57('0x81')]('[getContactDialer2][Empty]'+_0xd33c61[_0x6c57('0x41')]);}}};}function notSendMessagesQueue(_0x34bce8){if(_0x34bce8[_0x6c57('0xa1')]){freeVariablesPredictive(_0x34bce8);if(_0x34bce8[_0x6c57('0x73')]===0x0&&_0x34bce8[_0x6c57('0x55')]===0x0&&_0x34bce8[_0x6c57('0x58')]===0x0&&(_0x34bce8[_0x6c57('0xa2')]||0x0)===0x0){_0x34bce8[_0x6c57('0xa1')]=![];_0x34bce8[_0x6c57('0xa3')]=0x0;_0x34bce8[_0x6c57('0x3f')]=_0x6c57('0x43');loggerSyncQueueSummary['error'](_0x6c57('0xa4'),_0x34bce8[_0x6c57('0x41')],_0x6c57('0xa5'));}else{_0x34bce8[_0x6c57('0x3f')]=_0x6c57('0xa6');loggerSyncQueueSummary[_0x6c57('0x97')](_0x6c57('0xa4'),_0x34bce8[_0x6c57('0x41')],_0x6c57('0xa7'));}emitVoiceQueueSummary(_0x34bce8);}}function notSendMessagesCampaign(_0x56cf56){if(_0x56cf56[_0x6c57('0xa1')]){if(_0x56cf56[_0x6c57('0x73')]===0x0){_0x56cf56[_0x6c57('0xa1')]=![];_0x56cf56[_0x6c57('0x3f')]=_0x6c57('0x43');loggerSyncQueueSummary[_0x6c57('0x97')](_0x6c57('0xa8'),_0x56cf56[_0x6c57('0x41')],_0x6c57('0xa5'));}else{_0x56cf56['message']='IS_DISACTIVED';loggerSyncQueueSummary['error'](_0x6c57('0xa8'),_0x56cf56[_0x6c57('0x41')],_0x6c57('0xa7'));}emitCampaignSummary(_0x56cf56);}}function createObjHistory(_0x4aa969,_0x9bc14d,_0x3dad10,_0xe06b27,_0x3ffd57){_0x4aa969[_0x6c57('0x3f')]=_0x3dad10;var _0x33679c=new Action(_0x4aa969,_0x9bc14d);var _0x1589ce=new History(_0x33679c);_0x1589ce[_0x6c57('0xa9')]=_0xe06b27;_0x1589ce[_0x6c57('0xaa')]=_0x3ffd57;_0x1589ce[_0x6c57('0xab')]=_0x33679c['starttime'];return _0x1589ce;}Dialer[_0x6c57('0x19')][_0x6c57('0x3d')]=function(){var _0x3a2999=this;setInterval(function(){_0x3a2999[_0x6c57('0xac')](_0x3a2999[_0x6c57('0x25')],_0x6c57('0xad'));_0x3a2999['clearZombieChannels'](_0x3a2999[_0x6c57('0xae')],_0x6c57('0xaf'));},0x32c8);};Dialer[_0x6c57('0x19')]['clearZombieChannels']=function(_0x26ef17,_0x588b70){var _0xcb10c5=this;for(var _0x233a98 in _0x26ef17){if(typeof _0x26ef17[_0x233a98]!=='undefined'){this[_0x6c57('0x1d')][_0x6c57('0x1a')](function(){if(!_['isNil'](_0x26ef17[_0x233a98])){return ami[_0x6c57('0xb0')]({'action':_0x6c57('0xb1'),'channel':_0x26ef17[_0x233a98][_0x6c57('0xb2')]})[_0x6c57('0xb3')](function(_0x44d6bb){if(_0x44d6bb[_0x6c57('0x3f')]===_0x6c57('0xb4')){setTimeout(function(){if(_0x26ef17[_0x233a98]&&_0x26ef17[_0x233a98][_0x6c57('0x7d')]!==_0x6c57('0x7e')){_0xcb10c5[_0x6c57('0xb5')](_0xcb10c5[_0x6c57('0x1f')][_0x26ef17[_0x233a98][_0x6c57('0xb6')]]);logger[_0x6c57('0x97')](_0x6c57('0xb7'),_0x588b70,_0x233a98,_0x26ef17[_0x233a98][_0x6c57('0xb6')]);delete _0x26ef17[_0x233a98];}if(_0x26ef17[_0x233a98]&&_0x26ef17[_0x233a98][_0x6c57('0x7d')]===_0x6c57('0x7e')){_0xcb10c5[_0x6c57('0xb5')](_0xcb10c5[_0x6c57('0x20')][_0x26ef17[_0x233a98][_0x6c57('0xb6')]]);logger[_0x6c57('0x97')](_0x6c57('0xb8'),_0x588b70,_0x233a98,_0x26ef17[_0x233a98]['queue']);delete _0x26ef17[_0x233a98];}},0x2328);}});}});}}};Dialer[_0x6c57('0x19')][_0x6c57('0xb9')]=function(_0x5d4ad4){return BPromise['resolve']()[_0x6c57('0xba')](cmHopper[_0x6c57('0xb9')](_0x5d4ad4))[_0x6c57('0xb3')](loggerCatch(_0x6c57('0xbb')));};Dialer[_0x6c57('0x19')]['checkIsBlackList']=function(_0x3cc217){return BPromise[_0x6c57('0xbc')]()[_0x6c57('0xba')](cmHopperBlack['checkIsBlackList'](_0x3cc217))['catch'](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0x6c57('0x19')][_0x6c57('0xbd')]=function(_0x228516){return BPromise['resolve']()[_0x6c57('0xba')](cmHopperBlack[_0x6c57('0xbd')](_0x228516))['catch'](loggerCatch(_0x6c57('0xbe')));};Dialer['prototype'][_0x6c57('0xbf')]=function(_0x21b92b){return BPromise[_0x6c57('0xbc')]()['then'](cmHopperHistory['avgHandleTime'](_0x21b92b))[_0x6c57('0xb3')](loggerCatch(_0x6c57('0xc0')));};Dialer[_0x6c57('0x19')][_0x6c57('0xc1')]=function(_0x370f82){return BPromise[_0x6c57('0xbc')]()[_0x6c57('0xba')](cmHopper[_0x6c57('0xc1')](_0x370f82))[_0x6c57('0xb3')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x6c57('0x19')][_0x6c57('0xc2')]=function(_0x223416,_0x2387fc,_0x3f7f41){return BPromise['resolve']()['then'](cmHopper[_0x6c57('0xc2')](_0x223416,_0x2387fc,_0x3f7f41))[_0x6c57('0xb3')](loggerCatch('[unlockContact]\x20'));};Dialer[_0x6c57('0x19')][_0x6c57('0xc3')]=function(_0x83fecc,_0x53448a,_0x53c9be,_0x1d8eca,_0x3f4a95){return BPromise[_0x6c57('0xbc')]()[_0x6c57('0xba')](cmHopper[_0x6c57('0xc3')](_0x83fecc,_0x53448a,_0x53c9be,_0x1d8eca))[_0x6c57('0xb3')](function(_0x197137){_0x3f4a95['temp']-=_0x53c9be;_0x3f4a95[_0x6c57('0xc4')]=_0x3f4a95[_0x6c57('0xc4')]>0x0?_0x3f4a95[_0x6c57('0xc4')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x197137);});};Dialer[_0x6c57('0x19')]['getContactDialerIvr']=function(_0x45dc41,_0x3565e2,_0x40aebc,_0x354f1f){return BPromise[_0x6c57('0xbc')]()['then'](cmHopper['getContactDialerIvr'](_0x45dc41,_0x3565e2,_0x40aebc))[_0x6c57('0xb3')](function(_0x1ba7f5){_0x354f1f[_0x6c57('0xc4')]-=_0x3565e2;_0x354f1f['temp']=_0x354f1f[_0x6c57('0xc4')]>0x0?_0x354f1f[_0x6c57('0xc4')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x1ba7f5);});};Dialer['prototype'][_0x6c57('0xc5')]=function(_0x349ecd){return BPromise[_0x6c57('0xbc')]()[_0x6c57('0xba')](voiceQueueRt[_0x6c57('0xc5')](_0x349ecd))[_0x6c57('0xb3')](loggerCatch(_0x6c57('0xc6')));};Dialer[_0x6c57('0x19')][_0x6c57('0xc7')]=function(_0x57f77d){return BPromise[_0x6c57('0xbc')]()['then'](cmHopper[_0x6c57('0xc7')](_0x57f77d))[_0x6c57('0xb3')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer[_0x6c57('0x19')][_0x6c57('0xc8')]=function(_0x2cdcde){return BPromise[_0x6c57('0xbc')]()[_0x6c57('0xba')](cmHopperHistory[_0x6c57('0xc8')](_0x2cdcde))[_0x6c57('0xb3')](loggerCatch(_0x6c57('0xc9')));};Dialer[_0x6c57('0x19')][_0x6c57('0xb5')]=function(_0x5c08b6){if(!_[_0x6c57('0x3e')](_0x5c08b6)&&_0x5c08b6!==null){if(typeof _0x5c08b6[_0x6c57('0x73')]!==_0x6c57('0x9b')){if(_0x5c08b6['originated']>0x0){_0x5c08b6['originated']-=0x1;}else{logger[_0x6c57('0x97')](_0x6c57('0xca'));}}}else{logger[_0x6c57('0x97')](_0x6c57('0xcb'));}};Dialer[_0x6c57('0x19')]['loggerHandler']=function(_0x150397,_0x4a3e35){var _0x188922=this;return function(_0x4a8e3e){_0x188922[_0x6c57('0xb5')](_0x4a3e35);logger[_0x6c57('0x97')](_0x150397,util[_0x6c57('0x98')](_0x4a8e3e,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0x6c57('0xcc')]=function(_0x250d1e,_0x4cf5e3,_0x1ff334){var _0x26cb53={'state':0x19,'statedesc':_0x6c57('0xcd')};this[_0x6c57('0xb5')](_0x4cf5e3);this[_0x6c57('0xce')](_[_0x6c57('0x8f')](_0x26cb53,_[_0x6c57('0xcf')](_0x1ff334,[_0x6c57('0xd0'),_0x6c57('0xd1'),_0x6c57('0xd2'),'VoiceQueueId',_0x6c57('0xd3')])),_0x6c57('0xd4'),_0x6c57('0xd5'));logger[_0x6c57('0x97')](_0x250d1e);};Dialer[_0x6c57('0x19')][_0x6c57('0xd6')]=function(_0x576d51){return _0x576d51===_0x6c57('0xd7');};Dialer[_0x6c57('0x19')][_0x6c57('0xd8')]=function(_0x22035d){return!_['isUndefined'](_0x22035d)&&_0x22035d&&!_[_0x6c57('0x3e')](_0x22035d[_0x6c57('0x41')])&&!_[_0x6c57('0x3e')](_0x22035d['active'])&&_0x22035d[_0x6c57('0x78')]&&(this['trunks'][util[_0x6c57('0x7b')]('SIP/%s',_0x22035d[_0x6c57('0x41')])][_0x6c57('0xb1')]===_0x6c57('0xd9')||this[_0x6c57('0x22')][util[_0x6c57('0x7b')](_0x6c57('0xda'),_0x22035d[_0x6c57('0x41')])][_0x6c57('0xb1')]===_0x6c57('0xdb'));};Dialer['prototype'][_0x6c57('0xce')]=function(_0x4a06eb,_0x2460bc,_0x55b1cc){this[_0x6c57('0xc8')](_0x4a06eb)['catch'](loggerCatch(_0x2460bc));this[_0x6c57('0xc7')](_0x4a06eb)[_0x6c57('0xb3')](loggerCatch(_0x55b1cc));};Dialer[_0x6c57('0x19')]['syncVarSet']=function(_0x212cc0){var _0x6979ab=this[_0x6c57('0x25')][_0x212cc0[_0x6c57('0xdc')]];var _0x1b331f;if(!_[_0x6c57('0xdd')](_0x212cc0)&&!_[_0x6c57('0xdd')](_0x212cc0[_0x6c57('0xde')])&&!_['isNil'](_0x212cc0[_0x6c57('0xde')][_0x6c57('0xdf')])&&_0x212cc0['exten']===_0x6c57('0xe0')&&_0x6979ab){if(_0x6979ab[_0x6c57('0x7d')]!==_0x6c57('0x7e')&&this[_0x6c57('0x1f')][_0x6979ab[_0x6c57('0xb6')]][_0x6c57('0xe1')]&&_0x212cc0['value']===_0x6c57('0xe2')){delete this[_0x6c57('0x25')][_0x212cc0[_0x6c57('0xdc')]];this[_0x6c57('0xb5')](this[_0x6c57('0x1f')][_0x6979ab[_0x6c57('0xb6')]]);this[_0x6c57('0x1f')][_0x6979ab['queue']][_0x6c57('0x60')]+=0x1;this[_0x6c57('0x1f')][_0x6979ab['queue']][_0x6c57('0x5f')]+=0x1;_0x1b331f=new Hangup(_0x6979ab,_0x212cc0);_0x1b331f[_0x6c57('0xa9')]=0x12;_0x1b331f[_0x6c57('0xaa')]='HangupInAMD';_0x1b331f['membername']=_0x6c57('0xe3');ami[_0x6c57('0x4e')](_0x6c57('0xe4'),ut[_0x6c57('0xe5')](_0x1b331f,_0x6c57('0xe6')));this[_0x6c57('0xce')](_0x1b331f,_0x6c57('0xe7'),_0x6c57('0xe8'));}if(_0x6979ab[_0x6c57('0x7d')]!==_0x6c57('0x7e')&&this[_0x6c57('0x1f')][_0x6979ab['queue']][_0x6c57('0xe1')]&&_0x212cc0[_0x6c57('0xe9')]===_0x6c57('0xea')){var _0x399310=this;return new BPromise(function(_0x1684b3,_0x218c73){delete _0x399310['uniqueId'][_0x212cc0['uniqueid']];_0x399310[_0x6c57('0xb5')](_0x399310[_0x6c57('0x1f')][_0x6979ab['queue']]);_0x399310[_0x6c57('0x1f')][_0x6979ab['queue']][_0x6c57('0x60')]+=0x1;_0x399310[_0x6c57('0x1f')][_0x6979ab['queue']][_0x6c57('0x5f')]+=0x1;var _0x5aba31=_0x399310['voiceQueues'][_0x6979ab[_0x6c57('0xb6')]];var _0x126ad0=new Hangup(_0x6979ab,_0x212cc0);_0x126ad0[_0x6c57('0xa9')]=0x13;_0x126ad0[_0x6c57('0xaa')]=_0x6c57('0xeb');_0x126ad0['membername']=_0x6c57('0xe3');_0x126ad0[_0x6c57('0xec')]+=0x1;_0x126ad0[_0x6c57('0xed')]+=0x1;_0x126ad0[_0x6c57('0xe6')]=!![];ami['emit'](_0x6c57('0xe4'),ut[_0x6c57('0xe5')](_0x126ad0,_0x6c57('0xe6')));_0x399310['createHistory'](_0x126ad0)['catch'](loggerCatch(_0x6c57('0xee')));if(_0x126ad0[_0x6c57('0xef')]+_0x126ad0['countcongestionretry']+_0x126ad0[_0x6c57('0xf0')]+_0x126ad0[_0x6c57('0xf1')]+_0x126ad0[_0x6c57('0xf2')]+_0x126ad0['countabandonedretry']+_0x126ad0['countmachineretry']+_0x126ad0[_0x6c57('0xf3')]>=_0x5aba31[_0x6c57('0xf4')]){_0x399310['stateGlobal'](_0x126ad0,_0x1684b3,_0x218c73,_0x6c57('0xf5'));}else{if(_0x126ad0['countmachineretry']>=_0x5aba31[_0x6c57('0xf6')]){_0x399310['createStateFinal'](_0x126ad0,_0x1684b3,_0x218c73,_0x6c57('0xf7'));}else{_0x399310[_0x6c57('0xc1')]({'active':![],'countmachineretry':_0x126ad0[_0x6c57('0xec')],'scheduledat':moment()[_0x6c57('0xf8')](_0x5aba31['dialMachineRetryFrequency'],_0x6c57('0xf9'))[_0x6c57('0x7b')](_0x6c57('0xfa')),'ContactId':_0x126ad0[_0x6c57('0xd0')],'ListId':_0x126ad0['ListId'],'VoiceQueueId':_0x126ad0[_0x6c57('0xfb')]||undefined,'CampaignId':_0x126ad0[_0x6c57('0xd3')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));_0x1684b3({'reschedule':0x1});}}});}if(_0x6979ab[_0x6c57('0x7d')]===_0x6c57('0x7e')&&this[_0x6c57('0x20')][_0x6979ab[_0x6c57('0xb6')]][_0x6c57('0xe1')]&&_0x212cc0[_0x6c57('0xe9')]==='HANGUP'){delete this[_0x6c57('0x25')][_0x212cc0['uniqueid']];this['updateOriginated'](this[_0x6c57('0x20')][_0x6979ab[_0x6c57('0xb6')]]);_0x1b331f=new Hangup(_0x6979ab,_0x212cc0);_0x1b331f['state']=0x12;_0x1b331f[_0x6c57('0xaa')]=_0x6c57('0xfc');_0x1b331f['membername']=_0x6c57('0xe3');ami['emit']('custom:amd',ut[_0x6c57('0xe5')](_0x1b331f,_0x6c57('0xe6')));this[_0x6c57('0xce')](_0x1b331f,_0x6c57('0xfd'),_0x6c57('0xfe'));}if(_0x6979ab[_0x6c57('0x7d')]===_0x6c57('0x7e')&&this[_0x6c57('0x20')][_0x6979ab[_0x6c57('0xb6')]][_0x6c57('0xe1')]&&_0x212cc0[_0x6c57('0xe9')]===_0x6c57('0xea')){var _0x399310=this;return new BPromise(function(_0x179baf,_0xe0598d){delete _0x399310['uniqueId'][_0x212cc0[_0x6c57('0xdc')]];_0x399310[_0x6c57('0xb5')](_0x399310[_0x6c57('0x20')][_0x6979ab[_0x6c57('0xb6')]]);_0x399310[_0x6c57('0x20')][_0x6979ab[_0x6c57('0xb6')]][_0x6c57('0x60')]+=0x1;_0x399310[_0x6c57('0x20')][_0x6979ab[_0x6c57('0xb6')]][_0x6c57('0x5f')]+=0x1;var _0x733b0b=_0x399310[_0x6c57('0x20')][_0x6979ab[_0x6c57('0xb6')]];var _0x21ad79=new Hangup(_0x6979ab,_0x212cc0);_0x21ad79[_0x6c57('0xa9')]=0x13;_0x21ad79['statedesc']=_0x6c57('0xeb');_0x21ad79[_0x6c57('0xff')]='AMD';_0x21ad79[_0x6c57('0xec')]+=0x1;_0x21ad79[_0x6c57('0xed')]+=0x1;_0x21ad79[_0x6c57('0xe6')]=!![];ami[_0x6c57('0x4e')](_0x6c57('0xe4'),ut[_0x6c57('0xe5')](_0x21ad79,_0x6c57('0xe6')));_0x399310[_0x6c57('0xc8')](_0x21ad79)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0xee')));if(_0x21ad79[_0x6c57('0xef')]+_0x21ad79['countcongestionretry']+_0x21ad79[_0x6c57('0xf0')]+_0x21ad79['countnosuchnumberretry']+_0x21ad79[_0x6c57('0xf2')]+_0x21ad79[_0x6c57('0x100')]+_0x21ad79[_0x6c57('0xec')]+_0x21ad79['countagentrejectretry']>=_0x733b0b[_0x6c57('0xf4')]){_0x399310[_0x6c57('0x101')](_0x21ad79,_0x179baf,_0xe0598d,_0x6c57('0xf5'));}else{if(_0x21ad79[_0x6c57('0xec')]>=_0x733b0b[_0x6c57('0xf6')]){_0x399310[_0x6c57('0x102')](_0x21ad79,_0x179baf,_0xe0598d,_0x6c57('0xf7'));}else{_0x399310['rescheduleContact']({'active':![],'countmachineretry':_0x21ad79[_0x6c57('0xec')],'scheduledat':moment()[_0x6c57('0xf8')](_0x733b0b[_0x6c57('0x103')],'minutes')[_0x6c57('0x7b')](_0x6c57('0xfa')),'ContactId':_0x21ad79[_0x6c57('0xd0')],'ListId':_0x21ad79[_0x6c57('0xd1')],'VoiceQueueId':_0x21ad79[_0x6c57('0xfb')]||undefined,'CampaignId':_0x21ad79[_0x6c57('0xd3')]||undefined})[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x104')));_0x179baf({'reschedule':0x1});}}});}}};Dialer[_0x6c57('0x19')][_0x6c57('0x33')]=function(_0x14bc7a){var _0x3dcbe8=this[_0x6c57('0x25')][_0x14bc7a[_0x6c57('0xdc')]];var _0x5b097b=this;var _0xacac1d;if(_0x3dcbe8&&_0x3dcbe8[_0x6c57('0x7d')]==='ivr'){delete this[_0x6c57('0x25')][_0x14bc7a[_0x6c57('0xdc')]];this[_0x6c57('0xb5')](this[_0x6c57('0x20')][_0x3dcbe8[_0x6c57('0xb6')]]);this[_0x6c57('0x20')][_0x3dcbe8[_0x6c57('0xb6')]][_0x6c57('0x105')]+=0x1;_0xacac1d=new Hangup(_0x3dcbe8,_0x14bc7a);this[_0x6c57('0xc8')](_0xacac1d)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x106')));this[_0x6c57('0xc7')](_0xacac1d)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x107')));}if(_0x3dcbe8&&_0x3dcbe8[_0x6c57('0x7d')]!==_0x6c57('0x7e')&&isNotNull(this[_0x6c57('0x1f')][_0x3dcbe8[_0x6c57('0xb6')]]['dialQueueProject'])){delete this[_0x6c57('0x25')][_0x14bc7a[_0x6c57('0xdc')]];this['updateOriginated'](this[_0x6c57('0x1f')][_0x3dcbe8['queue']]);this['voiceQueues'][_0x3dcbe8[_0x6c57('0xb6')]]['outboundAnswerCallsDay']+=0x1;this[_0x6c57('0x1f')][_0x3dcbe8[_0x6c57('0xb6')]]['outboundAnswerAgiCallsDay']+=0x1;_0xacac1d=new Hangup(_0x3dcbe8,_0x14bc7a);_0xacac1d[_0x6c57('0xa9')]=0x10;_0xacac1d[_0x6c57('0xaa')]=_0x6c57('0x108');_0xacac1d[_0x6c57('0xff')]='AGI';this[_0x6c57('0xc8')](_0xacac1d)['catch'](loggerCatch(_0x6c57('0x106')));this[_0x6c57('0xc7')](_0xacac1d)[_0x6c57('0xb3')](loggerCatch('[syncHangupIvr]'));}if(_0x3dcbe8&&_0x3dcbe8[_0x6c57('0x7d')]!=='ivr'&&!isNotNull(this[_0x6c57('0x1f')][_0x3dcbe8[_0x6c57('0xb6')]]['dialQueueProject'])){delete this[_0x6c57('0x25')][_0x14bc7a[_0x6c57('0xdc')]];this[_0x6c57('0xb5')](this[_0x6c57('0x1f')][_0x3dcbe8[_0x6c57('0xb6')]]);this[_0x6c57('0x1f')][_0x3dcbe8[_0x6c57('0xb6')]][_0x6c57('0x109')]+=0x1;_0xacac1d=new Hangup(_0x3dcbe8,_0x14bc7a);_0xacac1d[_0x6c57('0xa9')]=0xc;_0xacac1d['statedesc']=_0x14bc7a['cause-txt'];_0xacac1d[_0x6c57('0xff')]='Unknow';this[_0x6c57('0xc8')](_0xacac1d)[_0x6c57('0xb3')](loggerCatch('[syncHangupIvr][createHistory]'));this['moveContactManagedDialer'](_0xacac1d)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x107')));}};Dialer[_0x6c57('0x19')][_0x6c57('0x10a')]=function(_0x4cae93){var _0x3ac624=this[_0x6c57('0x25')][_0x4cae93['uniqueid']];var _0x27d0ae=this;if(this[_0x6c57('0x1f')][_0x4cae93[_0x6c57('0xb6')]]){if(_0x3ac624&&_0x3ac624[_0x6c57('0x7d')]!=='ivr'){delete this[_0x6c57('0x25')][_0x4cae93[_0x6c57('0xdc')]];this[_0x6c57('0x1f')][_0x4cae93[_0x6c57('0xb6')]][_0x6c57('0x60')]+=0x1;var _0x2242b2=new AgentComplete(_0x3ac624,_0x4cae93);if(_0x4cae93[_0x6c57('0x10b')]==='agent'){_0x2242b2[_0x6c57('0x10c')]=this[_0x6c57('0x1f')][_0x4cae93['queue']]['dialQueueProject2']&&this[_0x6c57('0x1f')][_0x4cae93[_0x6c57('0xb6')]]['dialAgiAfterHangupAgent']?moment()[_0x6c57('0x7b')](_0x6c57('0xfa')):undefined;}this[_0x6c57('0xc8')](_0x2242b2)[_0x6c57('0xb3')](loggerCatch('[syncAgentComplete][createHistory]'));this[_0x6c57('0xc7')](_0x2242b2)[_0x6c57('0xb3')](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0x6c57('0x19')][_0x6c57('0x10d')]=function(_0x127f4a){if(this[_0x6c57('0x1f')][_0x127f4a[_0x6c57('0xb6')]]){if(this[_0x6c57('0x25')][_0x127f4a[_0x6c57('0xdc')]]&&this[_0x6c57('0x25')][_0x127f4a[_0x6c57('0xdc')]][_0x6c57('0x7d')]!==_0x6c57('0x7e')){this[_0x6c57('0xb5')](this[_0x6c57('0x1f')][_0x127f4a[_0x6c57('0xb6')]]);this[_0x6c57('0x25')][_0x127f4a['uniqueid']][_0x6c57('0x10e')]=moment()['format'](_0x6c57('0xfa'));}}};Dialer[_0x6c57('0x19')][_0x6c57('0x10f')]=function(_0x4114c7){this['createHistory'](_0x4114c7)[_0x6c57('0xb3')](loggerCatch('[syncAgentComplete][createHistory]'));this['moveContactManagedDialer'](_0x4114c7)['catch'](loggerCatch(_0x6c57('0x110')));};Dialer[_0x6c57('0x19')][_0x6c57('0x2e')]=function(_0x1c9066){var _0x2b0721=this[_0x6c57('0x25')][_0x1c9066['uniqueid']];var _0x56cb11=this;if(this[_0x6c57('0x1f')][_0x1c9066['queue']]){if(_0x2b0721&&_0x2b0721[_0x6c57('0x7d')]!==_0x6c57('0x7e')){delete this[_0x6c57('0x25')][_0x1c9066[_0x6c57('0xdc')]];this[_0x6c57('0xb5')](this[_0x6c57('0x1f')][_0x1c9066['queue']]);_0x2b0721['droptime']=moment()[_0x6c57('0x7b')](_0x6c57('0xfa'));var _0x1b4b49=new QueueCallerAbandon(_0x2b0721,_0x1c9066);if(getSeconds(_0x2b0721[_0x6c57('0x111')],_0x2b0721[_0x6c57('0x112')])>=_0x2b0721[_0x6c57('0x113')]){this[_0x6c57('0x1f')][_0x1c9066['queue']][_0x6c57('0x6b')]+=0x1;this[_0x6c57('0x1f')][_0x1c9066[_0x6c57('0xb6')]][_0x6c57('0x63')]+=0x1;this[_0x6c57('0x1f')][_0x1c9066[_0x6c57('0xb6')]][_0x6c57('0x6d')]+=0x1;_0x1b4b49[_0x6c57('0xa9')]=0xa;_0x1b4b49[_0x6c57('0xaa')]=_0x6c57('0x114');_0x1b4b49[_0x6c57('0x115')]='TIMEOUT';_0x1b4b49['agiafterat']=this[_0x6c57('0x1f')][_0x1c9066['queue']][_0x6c57('0x116')]?moment()['format'](_0x6c57('0xfa')):undefined;_0x1b4b49[_0x6c57('0xf2')]+=0x1;_0x1b4b49[_0x6c57('0xed')]+=0x1;if(_0x1b4b49[_0x6c57('0xf2')]>=this[_0x6c57('0x1f')][_0x1c9066['queue']]['dialDropMaxRetry']){this[_0x6c57('0x10f')](_0x1b4b49);}else{this[_0x6c57('0xc1')]({'active':![],'countdropretry':_0x1b4b49[_0x6c57('0xf2')],'scheduledat':moment()[_0x6c57('0xf8')](this[_0x6c57('0x1f')][_0x1c9066['queue']]['dialDropRetryFrequency'],_0x6c57('0xf9'))[_0x6c57('0x7b')](_0x6c57('0xfa')),'ContactId':_0x2b0721[_0x6c57('0xd0')],'ListId':_0x2b0721['ListId'],'VoiceQueueId':_0x2b0721[_0x6c57('0xfb')]||undefined,'CampaignId':_0x2b0721[_0x6c57('0xd3')]||undefined})[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x117')));var _0x3f3ba8=new History(_0x1b4b49);_0x3f3ba8[_0x6c57('0xa9')]=0xa;_0x3f3ba8['statedesc']=_0x6c57('0x114');_0x3f3ba8['starttime']=moment()[_0x6c57('0x7b')](_0x6c57('0xfa'));_0x3f3ba8[_0x6c57('0xab')]=_0x3f3ba8[_0x6c57('0x118')];_0x3f3ba8[_0x6c57('0x119')]=_0x1b4b49[_0x6c57('0x119')];_0x3f3ba8[_0x6c57('0x11a')]=_0x1b4b49['calleridnum'];this[_0x6c57('0xc8')](_0x3f3ba8)['catch'](loggerCatch(_0x6c57('0x11b')));}}else{this['voiceQueues'][_0x1c9066[_0x6c57('0xb6')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x6c57('0x1f')][_0x1c9066[_0x6c57('0xb6')]][_0x6c57('0x62')]+=0x1;_0x1b4b49[_0x6c57('0xa9')]=0xb;_0x1b4b49[_0x6c57('0xaa')]=_0x6c57('0x11c');_0x1b4b49[_0x6c57('0x115')]=_0x6c57('0x11d');_0x1b4b49[_0x6c57('0x100')]+=0x1;_0x1b4b49[_0x6c57('0xed')]+=0x1;if(_0x1b4b49[_0x6c57('0x100')]>=this['voiceQueues'][_0x1c9066['queue']]['dialAbandonedMaxRetry']){this['queueCallerAbandonCreateState'](_0x1b4b49);}else{this['rescheduleContact']({'active':![],'countabandonedretry':_0x1b4b49['countabandonedretry'],'scheduledat':moment()[_0x6c57('0xf8')](this[_0x6c57('0x1f')][_0x1c9066[_0x6c57('0xb6')]][_0x6c57('0x11e')],_0x6c57('0xf9'))[_0x6c57('0x7b')](_0x6c57('0xfa')),'ContactId':_0x2b0721['ContactId'],'ListId':_0x2b0721[_0x6c57('0xd1')],'VoiceQueueId':_0x2b0721[_0x6c57('0xfb')]||undefined,'CampaignId':_0x2b0721[_0x6c57('0xd3')]||undefined})[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x11f')));var _0x3f3ba8=new History(_0x1b4b49);_0x3f3ba8[_0x6c57('0xa9')]=0xb;_0x3f3ba8[_0x6c57('0xaa')]='Abandoned';_0x3f3ba8[_0x6c57('0x118')]=moment()[_0x6c57('0x7b')](_0x6c57('0xfa'));_0x3f3ba8['endtime']=_0x3f3ba8[_0x6c57('0x118')];_0x3f3ba8['calleridname']=_0x1b4b49[_0x6c57('0x119')];_0x3f3ba8['calleridnum']=_0x1b4b49[_0x6c57('0x11a')];this[_0x6c57('0xc8')](_0x3f3ba8)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x120')));}}}}};Dialer[_0x6c57('0x19')]['syncNewExten']=function(_0x42ffc6){if(this[_0x6c57('0xae')][_0x42ffc6[_0x6c57('0xdc')]]){this[_0x6c57('0xae')][_0x42ffc6['uniqueid']][_0x6c57('0xb2')]=_0x42ffc6[_0x6c57('0xb2')];}if(this[_0x6c57('0x25')][_0x42ffc6[_0x6c57('0xdc')]]){this['uniqueId'][_0x42ffc6[_0x6c57('0xdc')]][_0x6c57('0xb2')]=_0x42ffc6[_0x6c57('0xb2')];}};Dialer[_0x6c57('0x19')][_0x6c57('0x39')]=function(_0xc18905){if(strategy[this[_0x6c57('0x1f')][this['actions'][_0xc18905[_0x6c57('0x121')]]['queue']][_0x6c57('0x50')]]==='roundrobin'){if(this[_0x6c57('0xae')][_0xc18905[_0x6c57('0x121')]]&&_[_0x6c57('0xdd')](this[_0x6c57('0xae')][_0xc18905[_0x6c57('0x121')]][_0x6c57('0x122')])&&_0xc18905['status']==='1'&&_0xc18905[_0x6c57('0x123')]==='0'){if(this['agents'][_0xc18905[_0x6c57('0x124')]]){if(!this['agents'][_0xc18905[_0x6c57('0x124')]]['locked']){this[_0x6c57('0x21')][_0xc18905[_0x6c57('0x124')]][_0x6c57('0x122')]=!![];this['actions'][_0xc18905[_0x6c57('0x121')]]['locked']=!![];this[_0x6c57('0xae')][_0xc18905[_0x6c57('0x121')]][_0x6c57('0x124')]=_0xc18905[_0x6c57('0x124')];}}}}else if((strategy[this['voiceQueues'][this[_0x6c57('0xae')][_0xc18905[_0x6c57('0x121')]]['queue']][_0x6c57('0x50')]]||_0x6c57('0x125'))===_0x6c57('0x125')){if(this[_0x6c57('0xae')][_0xc18905[_0x6c57('0x121')]]){if(this[_0x6c57('0x21')][_0xc18905[_0x6c57('0x124')]]){this[_0x6c57('0xae')][_0xc18905[_0x6c57('0x121')]][_0x6c57('0x124')]=_0xc18905[_0x6c57('0x124')];if(_[_0x6c57('0xdd')](this[_0x6c57('0x29')][this[_0x6c57('0xae')][_0xc18905[_0x6c57('0x121')]][_0x6c57('0xb6')]])){this['queueBooked'][this['actions'][_0xc18905['actionid']][_0x6c57('0xb6')]]=[];}this['queueBooked'][this[_0x6c57('0xae')][_0xc18905[_0x6c57('0x121')]][_0x6c57('0xb6')]][_0x6c57('0x126')](_['merge'](_[_0x6c57('0xcf')](this[_0x6c57('0xae')][_0xc18905[_0x6c57('0x121')]],[_0x6c57('0x127'),'stateinterface']),{'status':_0xc18905['status'],'paused':_0xc18905[_0x6c57('0x123')]}));}}}};function unlockQueueStatus(_0x2e3270,_0x2f643f){setTimeout(function(){if(_['isUndefined'](_0x2e3270[_0x6c57('0x128')])){loggerBooked[_0x6c57('0x97')](_0x6c57('0x129'),_0x2f643f);}_0x2e3270[_0x6c57('0x128')]=!![];loggerBooked[_0x6c57('0x81')](_0x6c57('0x12a'),_0x2f643f,JSON[_0x6c57('0x4b')](_[_0x6c57('0xcf')](_0x2e3270,[_0x6c57('0x41'),_0x6c57('0x128')])));},0x1f3);}Dialer[_0x6c57('0x19')][_0x6c57('0x3b')]=function(_0x58299a){var _0x28a9b6=this;var _0x93e3e2=_0x28a9b6[_0x6c57('0x1f')][_0x28a9b6[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]];if(strategy[this['voiceQueues'][this['actions'][_0x58299a['actionid']][_0x6c57('0xb6')]]['strategy']]===_0x6c57('0x12b')){if(this['actions'][_0x58299a['actionid']]&&this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0x124')]){this['preview'][_0x6c57('0x12c')](this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0x127')],this['actions'][_0x58299a[_0x6c57('0x121')]][_0x6c57('0x124')])['catch'](function(_0xe0b222){logger[_0x6c57('0x97')](_0x6c57('0x12d'),util[_0x6c57('0x98')](_0xe0b222,{'showHidden':![],'depth':null}));})[_0x6c57('0x1c')](function(){_0x28a9b6[_0x6c57('0xb5')](_0x28a9b6[_0x6c57('0x1f')][_0x28a9b6[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]]);_0x28a9b6[_0x6c57('0x21')][_0x28a9b6[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0x124')]][_0x6c57('0x122')]=![];delete _0x28a9b6[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]];unlockQueueStatus(_0x93e3e2);});}else{this[_0x6c57('0xb5')](this[_0x6c57('0x1f')][this['actions'][_0x58299a['actionid']][_0x6c57('0xb6')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]]['ContactId'],'ListId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]]['ListId'],'VoiceQueueId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xfb')]||undefined,'CampaignId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xd3')]||undefined})['catch'](loggerCatch(_0x6c57('0x12e')));delete this['actions'][_0x58299a[_0x6c57('0x121')]];unlockQueueStatus(_0x93e3e2);}}else if((strategy[this[_0x6c57('0x1f')][this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]][_0x6c57('0x50')]]||'rrmemory')===_0x6c57('0x125')){var _0x2d89fc;if(this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]]&&!_[_0x6c57('0x80')](this['queueBooked'][this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]]['queue']])){if(this[_0x6c57('0x2a')][_0x28a9b6[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]]){this[_0x6c57('0x2a')][_0x28a9b6[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]]=this[_0x6c57('0x2a')][this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]]?this[_0x6c57('0x2a')][this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]]:this[_0x6c57('0x29')][this[_0x6c57('0xae')][_0x58299a['actionid']][_0x6c57('0xb6')]]?this[_0x6c57('0x29')][this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]][_0x6c57('0x12f')]||0x0:0x0;}this[_0x6c57('0x29')][this['actions'][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]]['_rr']=this[_0x6c57('0x2a')][this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]];for(var _0x48dd5d=0x0;_0x48dd5d<this[_0x6c57('0x29')][this['actions'][_0x58299a['actionid']]['queue']][_0x6c57('0x9a')];_0x48dd5d+=0x1){_0x2d89fc=rr(this[_0x6c57('0x29')][this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]]);this['queueBookedRR'][_0x28a9b6[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]]['queue']]=this[_0x6c57('0x29')][this[_0x6c57('0xae')][_0x58299a['actionid']]['queue']][_0x6c57('0x12f')];if(_0x2d89fc[_0x6c57('0xb1')]==='1'&&_0x2d89fc['paused']==='0'){break;}}if(!_[_0x6c57('0xdd')](_0x2d89fc)){this['agents'][_0x2d89fc[_0x6c57('0x124')]]['unlockRR']=_['isUndefined'](this['agents'][_0x2d89fc[_0x6c57('0x124')]][_0x6c57('0x130')])?!![]:this[_0x6c57('0x21')][_0x2d89fc[_0x6c57('0x124')]][_0x6c57('0x130')];}loggerBooked['info'](_0x6c57('0x131'),_0x58299a[_0x6c57('0x121')],_0x6c57('0x132'),JSON[_0x6c57('0x4b')](_[_0x6c57('0xcf')](this[_0x6c57('0x21')][_0x2d89fc[_0x6c57('0x124')]],[_0x6c57('0x41'),_0x6c57('0x130')])),'contactAgent-idHopper:\x20',JSON['stringify'](_0x2d89fc['idHopper']));if(!_[_0x6c57('0xdd')](_0x2d89fc)&&_0x2d89fc['status']==='1'&&_0x2d89fc[_0x6c57('0x123')]==='0'&&this[_0x6c57('0x21')][_0x2d89fc[_0x6c57('0x124')]][_0x6c57('0x130')]){this[_0x6c57('0x21')][_0x2d89fc[_0x6c57('0x124')]][_0x6c57('0x130')]=![];this['queueBooked'][_0x28a9b6[_0x6c57('0xae')][_0x58299a['actionid']]['queue']]=[];this[_0x6c57('0x1e')][_0x6c57('0x12c')](_0x2d89fc[_0x6c57('0x127')],_0x2d89fc[_0x6c57('0x124')])[_0x6c57('0xb3')](function(_0x49a145){logger[_0x6c57('0x97')](_0x6c57('0x12d'),util[_0x6c57('0x98')](_0x49a145,{'showHidden':![],'depth':null}));})[_0x6c57('0x1c')](function(){_0x28a9b6['updateOriginated'](_0x28a9b6['voiceQueues'][_0x28a9b6['actions'][_0x58299a[_0x6c57('0x121')]]['queue']]);setTimeout(function(){_0x28a9b6[_0x6c57('0x21')][_0x2d89fc[_0x6c57('0x124')]]['unlockRR']=!![];loggerBooked[_0x6c57('0x81')](_0x6c57('0x133'),_0x58299a[_0x6c57('0x121')],_0x6c57('0x132'),JSON['stringify'](_[_0x6c57('0xcf')](_0x28a9b6['agents'][_0x2d89fc[_0x6c57('0x124')]],[_0x6c57('0x41'),_0x6c57('0x130')])),_0x6c57('0x134'),JSON[_0x6c57('0x4b')](_0x2d89fc[_0x6c57('0x127')]));},0xc7);delete _0x28a9b6[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]];unlockQueueStatus(_0x93e3e2,_0x58299a[_0x6c57('0x121')]);});}else{loggerBooked[_0x6c57('0x81')](_0x6c57('0x135'));this[_0x6c57('0xb5')](this[_0x6c57('0x1f')][this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]]);this[_0x6c57('0xc1')]({'active':![],'ContactId':this['actions'][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xd0')],'ListId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xd1')],'VoiceQueueId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xfb')]||undefined,'CampaignId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]]['CampaignId']||undefined})['catch'](loggerCatch(_0x6c57('0x12e')));delete this['actions'][_0x58299a[_0x6c57('0x121')]];unlockQueueStatus(_0x93e3e2);}}else{loggerBooked[_0x6c57('0x81')](_0x6c57('0x136'));this[_0x6c57('0xb5')](this[_0x6c57('0x1f')][this['actions'][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xb6')]]);this[_0x6c57('0xc1')]({'active':![],'ContactId':this['actions'][_0x58299a['actionid']][_0x6c57('0xd0')],'ListId':this[_0x6c57('0xae')][_0x58299a['actionid']][_0x6c57('0xd1')],'VoiceQueueId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xfb')]||undefined,'CampaignId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]]['CampaignId']||undefined})[_0x6c57('0xb3')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this['actions'][_0x58299a[_0x6c57('0x121')]];unlockQueueStatus(_0x93e3e2);}}else{loggerBooked[_0x6c57('0x81')](_0x6c57('0x137'));this[_0x6c57('0xb5')](this['voiceQueues'][this[_0x6c57('0xae')][_0x58299a['actionid']]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xd0')],'ListId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xd1')],'VoiceQueueId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xfb')]||undefined,'CampaignId':this[_0x6c57('0xae')][_0x58299a[_0x6c57('0x121')]][_0x6c57('0xd3')]||undefined})['catch'](loggerCatch(_0x6c57('0x138')));delete this['actions'][_0x58299a[_0x6c57('0x121')]];unlockQueueStatus(_0x93e3e2);}};Dialer[_0x6c57('0x19')][_0x6c57('0x3c')]=function(){var _0x4c1a47=this;setInterval(function(){_0x4c1a47[_0x6c57('0x139')]();},0x3e8);};Dialer[_0x6c57('0x19')]['checkIsTrunkReachable']=function(_0x3c7c74){var _0x526f85=this;return function(){if(!_0x526f85['isTrunkReachable'](_0x3c7c74['Trunk'])){if(!_0x526f85[_0x6c57('0xd8')](_0x3c7c74[_0x6c57('0x13a')])){_0x3c7c74[_0x6c57('0x3f')]=_0x6c57('0x13b');throw _0x3c7c74[_0x6c57('0x41')]+_0x6c57('0x13c');}}};};Dialer[_0x6c57('0x19')][_0x6c57('0x13d')]=function(_0x16b6a9,_0x567515,_0x445499,_0x54857d){var _0x19c2cb=this;return function(){var _0x482ed9=!![];return _0x19c2cb['ifTime'](_0x16b6a9,_0x567515,_0x445499,_0x54857d,_0x482ed9);};};Dialer[_0x6c57('0x19')][_0x6c57('0x13e')]=function(_0x14e92a,_0x3727a5,_0x8c7149,_0x324a10){var _0x1d05e1=this;return function(){var _0x2d0108=![];return _0x1d05e1[_0x6c57('0x13f')](_0x14e92a['Intervals'],_0x3727a5,_0x8c7149,_0x324a10,_0x2d0108);};};Dialer[_0x6c57('0x19')][_0x6c57('0x13f')]=function(_0x3d2529,_0x362d4e,_0x3aea53,_0x3436ef,_0x24e754){var _0x48ae4f=[];return new BPromise(function(_0x5d5487,_0x5c9d89){if(!isNotNull(_0x3d2529)){_0x3436ef['message']=_0x6c57('0x45');return _0x5c9d89(msgResponse(_0x6c57('0x13f'),_0x6c57('0x140'),_0x3aea53+_0x6c57('0x141')));}if(_[_0x6c57('0x80')](_0x3d2529)){_0x3436ef[_0x6c57('0x3f')]='INTERVAL_IS_EMPTY';return _0x5c9d89(msgResponse(_0x6c57('0x13f'),_0x6c57('0x140'),_0x3aea53+_0x6c57('0x142')));}if(_0x362d4e&&_[_0x6c57('0x3e')](config[_0x6c57('0x143')][_0x362d4e])){_0x3436ef['message']=_0x6c57('0x144');return _0x5c9d89(msgResponse(_0x6c57('0x13f'),_0x6c57('0x140'),_0x3aea53+'\x20Timezone\x20unknow\x20'+_0x362d4e));}if(_['isArray'](_0x3d2529)){for(var _0x153186=0x0;_0x153186<_0x3d2529[_0x6c57('0x9a')];_0x153186+=0x1){_0x48ae4f[_0x6c57('0x126')](ami[_0x6c57('0xb0')]({'action':_0x6c57('0x145'),'command':util[_0x6c57('0x7b')](_0x6c57('0x146'),_0x3d2529[_0x153186]['interval'],!_[_0x6c57('0x3e')](config[_0x6c57('0x143')][_0x362d4e])?_0x362d4e:'')})[_0x6c57('0xba')](function(_0x27c0a5){return _0x27c0a5[_0x6c57('0x147')][_0x6c57('0x148')](_0x6c57('0x149'))>=0x0;})[_0x6c57('0xb3')](myreject(_0x5c9d89)));}}else{_0x48ae4f[_0x6c57('0x126')](ami['Action']({'action':'command','command':util[_0x6c57('0x7b')](_0x6c57('0x146'),_0x3d2529,!_[_0x6c57('0x3e')](config['timezones'][_0x362d4e])?_0x362d4e:'')})[_0x6c57('0xba')](function(_0x34fac8){return _0x34fac8[_0x6c57('0x147')][_0x6c57('0x148')](_0x6c57('0x149'))>=0x0;})[_0x6c57('0xb3')](myreject(_0x5c9d89)));}BPromise[_0x6c57('0x14a')](_0x48ae4f)['then'](function(_0x8cb19a){var _0x1bac65=_['some'](_0x8cb19a);if(_0x1bac65){return _0x5d5487(_0x1bac65);}else{_0x3436ef[_0x6c57('0x3f')]=_0x24e754?_0x6c57('0x14b'):_0x6c57('0x14c');return _0x5c9d89(msgResponse(_0x6c57('0x14d'),'Failure','Global:\x20'+_0x24e754+'\x20'+_0x3aea53+_0x6c57('0x14e')+util[_0x6c57('0x98')](_0x3d2529,{'showHidden':![],'depth':null})+_0x6c57('0x14f')+_0x362d4e));}})['catch'](function(_0x52ab19){return _0x5c9d89(msgResponse(_0x6c57('0x13f'),'Failure',JSON[_0x6c57('0x4b')](_0x52ab19)));});});};Dialer[_0x6c57('0x19')][_0x6c57('0x150')]=function(_0x9a1659){var _0x419662=this;return function(){switch(_0x9a1659['dialMethod']){case _0x6c57('0x151'):freeVariablesPredictive(_0x9a1659);_0x419662[_0x6c57('0x152')](_0x9a1659,0x1);break;case'power':freeVariablesPredictive(_0x9a1659);_0x419662[_0x6c57('0x152')](_0x9a1659,_0x9a1659[_0x6c57('0x153')]);break;case _0x6c57('0x9'):_0x419662[_0x6c57('0x9')](_0x9a1659);break;case _0x6c57('0x8'):freeVariablesPredictive(_0x9a1659);_0x419662[_0x6c57('0x152')](_0x9a1659,0x1);break;default:freeVariablesPredictive(_0x9a1659);logger['error'](_0x6c57('0x154'),_0x9a1659[_0x6c57('0x41')],_0x6c57('0x155'));}};};Dialer[_0x6c57('0x19')][_0x6c57('0x156')]=function(_0x11d17a){var _0x4e2721=this;return function(){_0x4e2721[_0x6c57('0x157')](_0x11d17a);};};Dialer[_0x6c57('0x19')]['syncQueueSummary']=function(_0x342522){var _0x545ed5=this;if(isNotPreview(_0x342522[_0x6c57('0x5b')])){if(isVoiceQueueOutbound(_0x342522[_0x6c57('0x7d')])&&isActive(_0x342522[_0x6c57('0x5a')])){_0x342522[_0x6c57('0xa1')]=!![];BPromise[_0x6c57('0xbc')]()['then'](checkIsLoggedIn(_0x342522,_0x342522['loggedIn']))[_0x6c57('0xba')](checkIsActive(_0x342522,_0x342522[_0x6c57('0x5a')]))[_0x6c57('0xba')](checkInterval(_0x342522))[_0x6c57('0xba')](_0x545ed5['checkIsTrunkReachable'](_0x342522))[_0x6c57('0xba')](_0x545ed5[_0x6c57('0x13d')](_0x342522['dialGlobalInterval'],_0x342522['dialTimezone'],_0x342522[_0x6c57('0x41')],_0x342522))['then'](_0x545ed5[_0x6c57('0x13e')](_0x342522[_0x6c57('0x47')],_0x342522[_0x6c57('0x158')],_0x342522[_0x6c57('0x41')],_0x342522))[_0x6c57('0xba')](_0x545ed5[_0x6c57('0x150')](_0x342522))[_0x6c57('0xb3')](loggerCatchQueueSummary(_0x6c57('0x159'),_0x342522));}else{notSendMessagesQueue(_0x342522);}}else{freeVariablesPredictive(_0x342522);}};Dialer['prototype'][_0x6c57('0x139')]=function(){var _0x208a94=this;var _0x208148;for(var _0x3c6bb5 in this['campaigns']){if(typeof this['campaigns'][_0x3c6bb5]!==_0x6c57('0x9b')){_0x208148=this[_0x6c57('0x20')][_0x3c6bb5];if(isCampaignIvr(_0x208148['type'])&&isActive(_0x208148[_0x6c57('0x78')])){_0x208148['sendMessageOneNotActive']=!![];BPromise[_0x6c57('0xbc')]()['then'](checkIsActive(_0x208148,_0x208148['active']))['then'](checkInterval(_0x208148))[_0x6c57('0xba')](_0x208a94[_0x6c57('0x15a')](_0x208148))[_0x6c57('0xba')](_0x208a94[_0x6c57('0x13d')](_0x208148[_0x6c57('0x15b')],_0x208148[_0x6c57('0x158')],_0x208148[_0x6c57('0x41')],_0x208148))[_0x6c57('0xba')](_0x208a94[_0x6c57('0x13e')](_0x208148['Interval'],_0x208148[_0x6c57('0x158')],_0x208148[_0x6c57('0x41')],_0x208148))[_0x6c57('0xba')](_0x208a94[_0x6c57('0x156')](_0x208148))[_0x6c57('0xb3')](loggerCatchQueueSummary(_0x6c57('0x15c'),_0x208148));}else{notSendMessagesCampaign(_0x208148);}}}};function getCallerIdRandom(_0x395612,_0x298b97){var _0x4f23ba;var _0x1b260a;var _0x2c6ea0;if(_0x298b97<=0x0){_0x298b97=0x1;}_0x4f23ba=new RegExp('\x5cw{0,'+_0x298b97+'}$');_0x1b260a=Math[_0x6c57('0x15d')](0xa,_0x298b97-0x1);_0x2c6ea0=Math[_0x6c57('0x15d')](0xa,_0x298b97)-0x1;return util[_0x6c57('0x7b')]('%s',_['replace'](_0x395612,_0x4f23ba,_[_0x6c57('0x15e')](_0x1b260a,_0x2c6ea0)));}function extractCalleridName(_0x59361a){var _0x1acf60=_0x59361a[_0x6c57('0x15f')](/"(.*?)"/);return _0x1acf60?_0x1acf60[0x1]:_0x59361a;}function extractCalleridNumber(_0xdeb23c){var _0x3df2fe=_0xdeb23c[_0x6c57('0x15f')](/<(.*?)>/);return _0x3df2fe?_0x3df2fe[0x1]:_0xdeb23c;}Dialer[_0x6c57('0x19')]['actionOriginate']=function(_0x2883b7,_0x343031){var _0x477642=this;var _0x101298=uuid['v4']();this['actions'][_0x101298]=new Action(_0x2883b7,_0x343031,_0x101298);return new BPromise(function(_0x4d380e,_0x5443b7){if(_[_0x6c57('0x3e')](_0x2883b7)&&typeof _0x2883b7!==_0x6c57('0x160')){return _0x5443b7(msgResponse(_0x6c57('0x161'),_0x6c57('0x140'),'voiceQueue\x20is\x20undefine'));}if(_[_0x6c57('0x3e')](_0x343031[_0x6c57('0x162')]['phone'])||_0x343031[_0x6c57('0x162')][_0x6c57('0x163')]===null){return _0x5443b7(msgResponse('originate',_0x6c57('0x140'),_0x6c57('0x164')));}var _0x123baf={'XMD-CALLERID':_0x477642[_0x6c57('0xae')][_0x101298][_0x6c57('0x165')](),'XMD-AGI':_0x2883b7[_0x6c57('0x166')]?util[_0x6c57('0x7b')](_0x6c57('0x167'),ipAgi,_0x2883b7[_0x6c57('0x166')]):_0x6c57('0x168'),'XMD-AGIAFTER':_0x2883b7['dialQueueProject2']?util[_0x6c57('0x7b')](_0x6c57('0x167'),ipAgi,_0x2883b7[_0x6c57('0x116')]):_0x6c57('0x168'),'XMD-QUEUE':_0x2883b7[_0x6c57('0x7d')]===_0x6c57('0x4f')?util[_0x6c57('0x7b')](_0x6c57('0x169'),_0x2883b7[_0x6c57('0x41')],_0x2883b7[_0x6c57('0x16a')]||'',_0x2883b7['dialAgiAfterHangupAgent']?'c':'',_0x2883b7[_0x6c57('0x113')]||0x3):_0x6c57('0x168'),'XMD-CONTACTID':_0x343031[_0x6c57('0xd0')],'XMD-CDRTYPE':_0x6c57('0x7'),'CALLERID(all)':_0x477642[_0x6c57('0xae')][_0x101298]['getCaller'](),'XMD-AMD':_0x2883b7[_0x6c57('0xe1')]?'ACTIVE':_0x6c57('0x168'),'XMD-DESTINATION':_0x6c57('0xe0')};if(_0x2883b7[_0x6c57('0xe1')]){_0x123baf['XMD-AMDINITIALSILENCE']=_0x2883b7[_0x6c57('0x16b')]||0x9c4;_0x123baf[_0x6c57('0x16c')]=_0x2883b7[_0x6c57('0x16d')]||0x5dc;_0x123baf[_0x6c57('0x16e')]=_0x2883b7['dialAMDAfterGreetingSilence']||0x320;_0x123baf[_0x6c57('0x16f')]=_0x2883b7[_0x6c57('0x170')]||0x1388;_0x123baf[_0x6c57('0x171')]=_0x2883b7[_0x6c57('0x172')]||0x64;_0x123baf[_0x6c57('0x173')]=_0x2883b7['dialAMDBetweenWordsSilence']||0x32;_0x123baf[_0x6c57('0x174')]=_0x2883b7[_0x6c57('0x175')]||0x3;_0x123baf[_0x6c57('0x176')]=_0x2883b7[_0x6c57('0x177')]||0x100;_0x123baf[_0x6c57('0x178')]=_0x2883b7[_0x6c57('0x179')]||0x1388;}if(_0x2883b7[_0x6c57('0x7d')]==='outbound'){_0x123baf[_0x6c57('0x17a')]=_0x343031[_0x6c57('0xfb')];}else{_0x123baf[_0x6c57('0x17b')]=_0x343031[_0x6c57('0xd3')];}for(var _0x5ec045 in _0x343031['Contact']){if(typeof _0x343031['Contact'][_0x5ec045]!==_0x6c57('0x9b')){if(isNotNull(_0x343031[_0x6c57('0x162')][_0x5ec045])&&_0x5ec045!=='id'&&_0x5ec045!=='tags'&&_0x5ec045!==_0x6c57('0x17c')&&_0x5ec045!=='updatedAt'){_0x123baf[util[_0x6c57('0x7b')](_0x6c57('0x17d'),_0x6c57('0x17e'),_[_0x6c57('0x17f')](_0x5ec045))]=_0x343031[_0x6c57('0x162')][_0x5ec045];}}}var _0x27ed87=_0x477642[_0x6c57('0xd8')](_0x2883b7['Trunk'])?getCallerId(_0x2883b7[_0x6c57('0x77')][_0x6c57('0x79')],_0x2883b7[_0x6c57('0x5c')],_0x2883b7['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x2883b7[_0x6c57('0x5d')],_0x2883b7[_0x6c57('0x180')]):_0x2883b7[_0x6c57('0x5d')]):getCallerId(_[_0x6c57('0xdd')](_0x2883b7['TrunkBackup'])?_0x2883b7[_0x6c57('0x77')][_0x6c57('0x79')]:_0x2883b7['TrunkBackup'][_0x6c57('0x79')],_0x2883b7[_0x6c57('0x5c')],_0x2883b7[_0x6c57('0x180')]>0x0?getCallerIdRandom(_0x2883b7[_0x6c57('0x5d')],_0x2883b7[_0x6c57('0x180')]):_0x2883b7[_0x6c57('0x5d')]);if(_0x27ed87){_0x123baf[_0x6c57('0x181')]=_0x477642[_0x6c57('0xae')][_0x101298][_0x6c57('0x182')]=extractCalleridName(_0x27ed87);_0x123baf[_0x6c57('0x183')]=_0x477642[_0x6c57('0xae')][_0x101298][_0x6c57('0x184')]=extractCalleridNumber(_0x27ed87);}return ami[_0x6c57('0xb0')]({'actionid':_0x101298,'action':_0x6c57('0x161'),'channel':_0x477642[_0x6c57('0xd8')](_0x2883b7[_0x6c57('0x77')])?util[_0x6c57('0x7b')](_0x6c57('0x185'),_0x2883b7[_0x6c57('0x77')]['name'],isNotNull(_0x2883b7[_0x6c57('0x186')])?_0x2883b7[_0x6c57('0x186')][_0x6c57('0x187')]()||'':'',_0x2883b7['dialCutDigit']>0x0?_0x343031[_0x6c57('0x162')]['phone']['substring'](_0x2883b7[_0x6c57('0x188')]):_0x343031['Contact'][_0x6c57('0x163')]):util[_0x6c57('0x7b')](_0x6c57('0x185'),_[_0x6c57('0xdd')](_0x2883b7[_0x6c57('0x13a')])?_0x2883b7[_0x6c57('0x77')][_0x6c57('0x41')]:_0x2883b7[_0x6c57('0x13a')]['name'],isNotNull(_0x2883b7[_0x6c57('0x186')])?_0x2883b7[_0x6c57('0x186')][_0x6c57('0x187')]()||'':'',_0x2883b7[_0x6c57('0x188')]>0x0?_0x343031[_0x6c57('0x162')][_0x6c57('0x163')][_0x6c57('0x189')](_0x2883b7['dialCutDigit']):_0x343031[_0x6c57('0x162')]['phone']),'callerid':_0x27ed87,'Exten':'xcally-motion-dialer','Context':'from-sip','Priority':'1','variable':_0x123baf,'timeout':(_0x2883b7[_0x6c57('0x5e')]||0x1e)*0x3e8,'async':!![],'channelid':_0x101298})[_0x6c57('0xba')](function(_0x537a43){return _0x4d380e(_0x537a43);})['catch'](function(_0x34f452){_0x2883b7[_0x6c57('0x66')]+=0x1;var _0x4550e2=new History(_0x477642[_0x6c57('0xae')][_0x101298]);logger[_0x6c57('0x97')](util[_0x6c57('0x7b')](_0x6c57('0x18a'),JSON[_0x6c57('0x4b')](_0x34f452)));_0x4550e2[_0x6c57('0xa9')]=0xe;_0x4550e2[_0x6c57('0xaa')]=_0x6c57('0x18b');_0x4550e2[_0x6c57('0x118')]=moment()[_0x6c57('0x7b')](_0x6c57('0xfa'));_0x4550e2[_0x6c57('0xab')]=_0x4550e2[_0x6c57('0x118')];_0x477642[_0x6c57('0xc8')](_0x4550e2)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x18c')));_0x477642[_0x6c57('0xc7')](_0x4550e2)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x18c')))['finally'](function(){delete _0x477642[_0x6c57('0xae')][_0x101298];return _0x5443b7(msgResponse('originate',_0x6c57('0x4a'),_0x6c57('0x18d')));});});});};Dialer[_0x6c57('0x19')]['syncOriginateResponse']=function(_0x143d7f){var _0x2f3d7c=this['actions'][_0x143d7f[_0x6c57('0x121')]];if(_0x2f3d7c){delete this[_0x6c57('0xae')][_0x143d7f[_0x6c57('0x121')]];_0x2f3d7c[_0x6c57('0x112')]=moment()[_0x6c57('0x7b')](_0x6c57('0xfa'));var _0x359bbb=_0x2f3d7c[_0x6c57('0x7d')]==='ivr'?this[_0x6c57('0x20')][_0x2f3d7c[_0x6c57('0xb6')]]:this[_0x6c57('0x1f')][_0x2f3d7c['getQueue']()];if(!this[_0x6c57('0xd6')](_0x143d7f[_0x6c57('0x18e')])){this[_0x6c57('0xb5')](_0x359bbb);return this[_0x6c57('0x18f')](_0x2f3d7c,_0x359bbb,_0x143d7f)['catch'](loggerCatch(_0x6c57('0x190')));}this[_0x6c57('0x25')][_0x143d7f[_0x6c57('0xdc')]]=_0x2f3d7c;}};Dialer['prototype'][_0x6c57('0x191')]=function(_0x3546ad,_0x597824,_0x45dc85){var _0x465c99=new History(_0x597824);if(_0x465c99[_0x6c57('0xef')]+_0x465c99[_0x6c57('0x192')]+_0x465c99[_0x6c57('0xf0')]+_0x465c99[_0x6c57('0xf1')]+_0x465c99[_0x6c57('0xf2')]+_0x465c99['countabandonedretry']+_0x465c99[_0x6c57('0xec')]+_0x465c99['countagentrejectretry']>=_0x45dc85['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x3546ad){case 0x3:if(_0x465c99[_0x6c57('0xf0')]>=_0x45dc85[_0x6c57('0x193')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x465c99[_0x6c57('0xf0')]+=0x1,'scheduledat':moment()[_0x6c57('0xf8')](_0x45dc85[_0x6c57('0x194')],_0x6c57('0xf9'))['format'](_0x6c57('0xfa')),'ContactId':_0x465c99[_0x6c57('0xd0')],'ListId':_0x465c99[_0x6c57('0xd1')],'VoiceQueueId':_0x465c99[_0x6c57('0xfb')]||undefined,'CampaignId':_0x465c99[_0x6c57('0xd3')]||undefined})[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x195')));break;case 0x5:if(_0x465c99[_0x6c57('0xef')]>=_0x45dc85[_0x6c57('0x196')]-0x1){return!![];}this[_0x6c57('0xc1')]({'active':![],'countbusyretry':_0x465c99[_0x6c57('0xef')]+=0x1,'scheduledat':moment()[_0x6c57('0xf8')](_0x45dc85['dialBusyRetryFrequency'],_0x6c57('0xf9'))[_0x6c57('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x465c99[_0x6c57('0xd0')],'ListId':_0x465c99['ListId'],'VoiceQueueId':_0x465c99['VoiceQueueId']||undefined,'CampaignId':_0x465c99['CampaignId']||undefined})[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x197')));break;case 0x8:if(_0x465c99[_0x6c57('0x192')]>=_0x45dc85[_0x6c57('0x198')]-0x1){return!![];}this[_0x6c57('0xc1')]({'active':![],'countcongestionretry':_0x465c99[_0x6c57('0x192')]+=0x1,'scheduledat':moment()['add'](_0x45dc85['dialCongestionRetryFrequency'],_0x6c57('0xf9'))[_0x6c57('0x7b')](_0x6c57('0xfa')),'ContactId':_0x465c99[_0x6c57('0xd0')],'ListId':_0x465c99[_0x6c57('0xd1')],'VoiceQueueId':_0x465c99[_0x6c57('0xfb')]||undefined,'CampaignId':_0x465c99[_0x6c57('0xd3')]||undefined})[_0x6c57('0xb3')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x465c99['countnosuchnumberretry']>=_0x45dc85[_0x6c57('0x199')]-0x1){return!![];}else{this[_0x6c57('0xc1')]({'active':![],'countnosuchnumberretry':_0x465c99[_0x6c57('0xf1')]+=0x1,'scheduledat':moment()[_0x6c57('0xf8')](_0x45dc85[_0x6c57('0x19a')],_0x6c57('0xf9'))[_0x6c57('0x7b')](_0x6c57('0xfa')),'ContactId':_0x465c99[_0x6c57('0xd0')],'ListId':_0x465c99['ListId'],'VoiceQueueId':_0x465c99[_0x6c57('0xfb')]||undefined,'CampaignId':_0x465c99['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x465c99['countdropretry']>=_0x45dc85[_0x6c57('0x19b')]-0x1){return!![];}this[_0x6c57('0xc1')]({'active':![],'countdropretry':_0x465c99['countdropretry']+=0x1,'scheduledat':moment()[_0x6c57('0xf8')](_0x45dc85[_0x6c57('0x19c')],_0x6c57('0xf9'))[_0x6c57('0x7b')](_0x6c57('0xfa')),'ContactId':_0x465c99[_0x6c57('0xd0')],'ListId':_0x465c99[_0x6c57('0xd1')],'VoiceQueueId':_0x465c99[_0x6c57('0xfb')]||undefined,'CampaignId':_0x465c99['CampaignId']||undefined})[_0x6c57('0xb3')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x465c99[_0x6c57('0x100')]>=_0x45dc85[_0x6c57('0x19d')]-0x1){return!![];}this[_0x6c57('0xc1')]({'active':![],'countabandonedretry':_0x465c99[_0x6c57('0x100')]+=0x1,'scheduledat':moment()[_0x6c57('0xf8')](_0x45dc85['dialAbandonedRetryFrequency'],_0x6c57('0xf9'))['format'](_0x6c57('0xfa')),'ContactId':_0x465c99[_0x6c57('0xd0')],'ListId':_0x465c99['ListId'],'VoiceQueueId':_0x465c99[_0x6c57('0xfb')]||undefined,'CampaignId':_0x465c99[_0x6c57('0xd3')]||undefined})[_0x6c57('0xb3')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x465c99[_0x6c57('0xec')]>=_0x45dc85['dialMachineMaxRetry']-0x1){return!![];}this[_0x6c57('0xc1')]({'active':![],'countmachineretry':_0x465c99[_0x6c57('0xec')]+=0x1,'scheduledat':moment()[_0x6c57('0xf8')](_0x45dc85[_0x6c57('0x103')],_0x6c57('0xf9'))['format'](_0x6c57('0xfa')),'ContactId':_0x465c99[_0x6c57('0xd0')],'ListId':_0x465c99[_0x6c57('0xd1')],'VoiceQueueId':_0x465c99[_0x6c57('0xfb')]||undefined,'CampaignId':_0x465c99[_0x6c57('0xd3')]||undefined})[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x104')));break;case 0x14:if(_0x465c99[_0x6c57('0xf3')]>=_0x45dc85[_0x6c57('0x19e')]-0x1){return!![];}this[_0x6c57('0xc1')]({'active':![],'countagentrejectretry':_0x465c99[_0x6c57('0xf3')]+=0x1,'scheduledat':moment()['add'](_0x45dc85[_0x6c57('0x19f')],_0x6c57('0xf9'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x465c99[_0x6c57('0xd0')],'ListId':_0x465c99[_0x6c57('0xd1')],'VoiceQueueId':_0x465c99['VoiceQueueId']||undefined,'CampaignId':_0x465c99['CampaignId']||undefined})[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x1a0')));break;default:return!![];}};Dialer[_0x6c57('0x19')]['callProgressDetecting']=function(_0xb1ed2a,_0x6c13aa,_0x465796){var _0x2789ea=this;var _0x3f071f=new History(_0xb1ed2a);return new BPromise(function(_0x21e8d4,_0x17c7b8){if(_[_0x6c57('0x3e')](_0x6c13aa)&&typeof _0x6c13aa!=='object'){return _0x17c7b8(msgResponse(_0x6c57('0x1a1'),'Failure',_0x6c57('0x1a2')));}if(_[_0x6c57('0x3e')](_0x465796)&&typeof _0x465796!==_0x6c57('0x160')){return _0x17c7b8(msgResponse(_0x6c57('0x1a1'),_0x6c57('0x140'),_0x6c57('0x1a3')));}switch(_0x465796[_0x6c57('0x10b')]){case'0':_0x6c13aa[_0x6c57('0x65')]+=0x1;_0x3f071f[_0x6c57('0xa9')]=0x0;_0x3f071f[_0x6c57('0xaa')]=_0x6c57('0x1a4');_0x3f071f[_0x6c57('0xf1')]+=0x1;_0x3f071f[_0x6c57('0xed')]+=0x1;ami[_0x6c57('0x4e')](_0x6c57('0x1a5'),ut[_0x6c57('0xe5')](_0xb1ed2a,_0x6c57('0x1a6')));_0x2789ea[_0x6c57('0xc8')](_0x3f071f)[_0x6c57('0xb3')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x2789ea[_0x6c57('0x191')](0x0,_0xb1ed2a,_0x6c13aa)){if(_0x3f071f[_0x6c57('0xf1')]>=_0x6c13aa[_0x6c57('0x199')]){_0x2789ea[_0x6c57('0x102')](_0x3f071f,_0x21e8d4,_0x17c7b8,'reason\x200\x20no\x20such\x20number....');}else{_0x2789ea[_0x6c57('0x101')](_0x3f071f,_0x21e8d4,_0x17c7b8,_0x6c57('0x1a7'));}}break;case'3':_0x6c13aa[_0x6c57('0x64')]+=0x1;_0x3f071f['state']=0x3;_0x3f071f[_0x6c57('0xaa')]=_0x6c57('0x1a8');_0x3f071f[_0x6c57('0xf0')]+=0x1;_0x3f071f['countglobal']+=0x1;ami['emit'](_0x6c57('0x1a9'),ut[_0x6c57('0xe5')](_0xb1ed2a,_0x6c57('0x1aa')));_0x2789ea[_0x6c57('0xc8')](_0x3f071f)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x1ab')));if(_0x2789ea['checkRetriveMax'](0x3,_0xb1ed2a,_0x6c13aa)){if(_0x3f071f[_0x6c57('0xf0')]>=_0x6c13aa['dialNoAnswerMaxRetry']){_0x2789ea[_0x6c57('0x102')](_0x3f071f,_0x21e8d4,_0x17c7b8,'reason\x203\x20ringing\x20no\x20answer');}else{_0x2789ea['stateGlobal'](_0x3f071f,_0x21e8d4,_0x17c7b8,_0x6c57('0x1ac'));}}break;case'5':_0x6c13aa[_0x6c57('0x1ad')]+=0x1;_0x3f071f[_0x6c57('0xa9')]=0x5;_0x3f071f['statedesc']=_0x6c57('0x1ae');_0x3f071f[_0x6c57('0xef')]+=0x1;_0x3f071f[_0x6c57('0xed')]+=0x1;ami[_0x6c57('0x4e')](_0x6c57('0x1af'),ut[_0x6c57('0xe5')](_0xb1ed2a,_0x6c57('0x1b0')));_0x2789ea['createHistory'](_0x3f071f)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x1b1')));if(_0x2789ea[_0x6c57('0x191')](0x5,_0xb1ed2a,_0x6c13aa)){if(_0x3f071f['countbusyretry']>=_0x6c13aa[_0x6c57('0x196')]){_0x2789ea[_0x6c57('0x102')](_0x3f071f,_0x21e8d4,_0x17c7b8,_0x6c57('0x1b2'));}else{_0x2789ea[_0x6c57('0x101')](_0x3f071f,_0x21e8d4,_0x17c7b8,_0x6c57('0x1b2'));}}break;case'8':_0x6c13aa[_0x6c57('0x61')]+=0x1;_0x3f071f[_0x6c57('0xa9')]=0x8;_0x3f071f[_0x6c57('0xaa')]=_0x6c57('0x1b3');_0x3f071f[_0x6c57('0x192')]+=0x1;_0x3f071f['countglobal']+=0x1;ami[_0x6c57('0x4e')](_0x6c57('0x1b4'),ut[_0x6c57('0xe5')](_0xb1ed2a,_0x6c57('0x1b5')));_0x2789ea[_0x6c57('0xc8')](_0x3f071f)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x1b6')));if(_0x2789ea[_0x6c57('0x191')](0x8,_0xb1ed2a,_0x6c13aa)){if(_0x3f071f[_0x6c57('0x192')]>=_0x6c13aa[_0x6c57('0x198')]){_0x2789ea[_0x6c57('0x102')](_0x3f071f,_0x21e8d4,_0x17c7b8,_0x6c57('0x1b7'));}else{_0x2789ea[_0x6c57('0x101')](_0x3f071f,_0x21e8d4,_0x17c7b8,'reason\x208\x20congestion');}}break;case'11':_0x6c13aa['outboundAbandonedCallsDay']+=0x1;_0x3f071f[_0x6c57('0xa9')]=0xb;_0x3f071f[_0x6c57('0xaa')]=_0x6c57('0x11c');_0x3f071f['countabandonedretry']+=0x1;_0x3f071f[_0x6c57('0xed')]+=0x1;_0x2789ea['createHistory'](_0x3f071f)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x120')));if(_0x2789ea[_0x6c57('0x191')](0xb,_0xb1ed2a,_0x6c13aa)){if(_0x3f071f['countabandonedretry']>=_0x6c13aa[_0x6c57('0x19d')]){_0x2789ea[_0x6c57('0x102')](_0x3f071f,_0x21e8d4,_0x17c7b8,_0x6c57('0x1b8'));}else{_0x2789ea[_0x6c57('0x101')](_0x3f071f,_0x21e8d4,_0x17c7b8,_0x6c57('0x1b8'));}}break;case'20':_0x6c13aa['outboundRejectCallsDay']+=0x1;_0x3f071f[_0x6c57('0xa9')]=0x14;_0x3f071f[_0x6c57('0xaa')]=_0x6c57('0x1b9');_0x3f071f['countagentrejectretry']+=0x1;_0x3f071f[_0x6c57('0xed')]+=0x1;ami[_0x6c57('0x4e')](_0x6c57('0x1ba'),ut[_0x6c57('0xe5')](_0xb1ed2a,_0x6c57('0x1bb')));_0x2789ea[_0x6c57('0xc8')](_0x3f071f)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x1bc')));if(_0x2789ea['checkRetriveMax'](0x14,_0xb1ed2a,_0x6c13aa)){if(_0x3f071f[_0x6c57('0xf3')]>=_0x6c13aa[_0x6c57('0x19e')]){_0x2789ea['createStateFinal'](_0x3f071f,_0x21e8d4,_0x17c7b8,_0x6c57('0x1bd'));}else{_0x2789ea[_0x6c57('0x101')](_0x3f071f,_0x21e8d4,_0x17c7b8,_0x6c57('0x1bd'));}}break;default:_0x6c13aa[_0x6c57('0x109')]+=0x1;_0x3f071f[_0x6c57('0xa9')]=0xc;_0x3f071f[_0x6c57('0xaa')]=_0x465796[_0x6c57('0x10b')];_0x2789ea[_0x6c57('0xc8')](_0x3f071f)[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x1be')));if(_0x2789ea['checkRetriveMax'](_0x465796['reason'],_0xb1ed2a,_0x6c13aa)){if(_0x3f071f[_0x6c57('0xef')]+_0x3f071f[_0x6c57('0x192')]+_0x3f071f[_0x6c57('0xf0')]+_0x3f071f['countnosuchnumberretry']+_0x3f071f['countdropretry']+_0x3f071f['countabandonedretry']+_0x3f071f[_0x6c57('0xec')]+_0x3f071f[_0x6c57('0xf3')]>=_0x6c13aa[_0x6c57('0xf4')]){_0x2789ea['stateGlobal'](_0x3f071f,_0x21e8d4,_0x17c7b8,_0x465796['reason']);}else{_0x2789ea['createStateFinal'](_0x3f071f,_0x21e8d4,_0x17c7b8,_0x465796['reason']);}}}});};Dialer[_0x6c57('0x19')][_0x6c57('0x101')]=function(_0x147ce2,_0x2fa2fa,_0x1fb466,_0x5d89b6){var _0x17ef33=new Final(_0x147ce2);_0x17ef33[_0x6c57('0xa9')]=0xf;_0x17ef33[_0x6c57('0xaa')]=_0x6c57('0x1bf');this['createStateFinal'](_0x17ef33,_0x2fa2fa,_0x1fb466,_0x5d89b6);};Dialer['prototype'][_0x6c57('0x102')]=function(_0x586d70,_0x457a45,_0x4494e8,_0x9fbe6e){this['moveContactManagedDialer'](_0x586d70)[_0x6c57('0xba')](function(){return _0x457a45(msgResponse(_0x6c57('0x1a1'),_0x6c57('0xd7'),_0x9fbe6e));})['catch'](function(){return _0x4494e8(msgResponse(_0x6c57('0x1c0'),_0x6c57('0x140'),_0x6c57('0x1c1')));});};Dialer[_0x6c57('0x19')]['predictive']=function(_0x1c60fe){var _0x11d5b4=_0x1c60fe[_0x6c57('0x1c2')]/0x64;var _0x521557=_0x1c60fe['outboundDropCallsDayTimeout']/(_0x1c60fe[_0x6c57('0x63')]+_0x1c60fe[_0x6c57('0x60')]);var _0x29d835=Math['round'](_0x1c60fe[_0x6c57('0x71')]*(_0x1c60fe[_0x6c57('0x1c3')]/0x64));var _0x2856a5=Math[_0x6c57('0x1c4')](_0x1c60fe[_0x6c57('0x71')]*(_0x1c60fe[_0x6c57('0x1c5')]/0x64));var _0x2adf6d=_0x1c60fe[_0x6c57('0xa3')]+_0x1c60fe[_0x6c57('0x55')];var _0x1fa705=Math['floor'](_0x1c60fe[_0x6c57('0x74')]*_0x1c60fe[_0x6c57('0x75')]*_0x1c60fe[_0x6c57('0x6e')]*_0x1c60fe[_0x6c57('0x6f')]);if(_[_0x6c57('0x3e')](_0x1c60fe[_0x6c57('0x28')])){if(!_[_0x6c57('0x3e')](_0x1c60fe['startPredictive'])){_0x1c60fe[_0x6c57('0x27')]=undefined;loggerPredictive[_0x6c57('0x97')](_0x6c57('0x1c6'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_[_0x6c57('0x3e')](_0x1c60fe[_0x6c57('0x93')])){loggerPredictive[_0x6c57('0x97')](_0x6c57('0x1c6'),_0x6c57('0x1c7'));clearInterval(_0x1c60fe[_0x6c57('0x93')]);_0x1c60fe[_0x6c57('0x93')]=undefined;}_0x1c60fe[_0x6c57('0x28')]=moment()[_0x6c57('0x7b')](_0x6c57('0xfa'));loggerPredictive['info'](_0x1c60fe[_0x6c57('0x41')],_0x6c57('0x1c8'),_0x1c60fe[_0x6c57('0x28')]);this[_0x6c57('0x152')](_0x1c60fe,0x1);}else if(ifInterval(_0x1c60fe['dialPredictiveInterval'],_0x1c60fe[_0x6c57('0x28')])){this[_0x6c57('0x152')](_0x1c60fe,0x1);loggerPredictiveCalls[_0x6c57('0x81')](_0x6c57('0x1c9'),_0x1c60fe['startProgressive'],_0x1c60fe[_0x6c57('0x41')]);_0x1c60fe[_0x6c57('0x74')]=0x0;_0x1c60fe['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x11d5b4<_0x521557&&_0x1c60fe['dialPredictiveOptimization']===_0x6c57('0x1ca')){freeVariablesPredictive(_0x1c60fe);loggerPredictive['info'](_0x6c57('0x1cb'),_0x6c57('0x1cc'),_0x521557,_0x6c57('0x28'),_0x1c60fe[_0x6c57('0x41')]);}else if(_0x1fa705<_0x1c60fe[_0x6c57('0x6d')]&&_0x1c60fe[_0x6c57('0x1cd')]==='dropRate'){freeVariablesPredictive(_0x1c60fe);loggerPredictive[_0x6c57('0x81')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20',_0x1fa705,_0x6c57('0x1ce'),_0x1c60fe[_0x6c57('0x6d')],_0x6c57('0x28'),_0x1c60fe[_0x6c57('0x41')]);}else if(!ifInterval(_0x1c60fe[_0x6c57('0x1cf')],_0x1c60fe[_0x6c57('0x28')])&&_[_0x6c57('0x3e')](_0x1c60fe[_0x6c57('0x27')])&&!_[_0x6c57('0x3e')](_0x1c60fe[_0x6c57('0x28')])){_0x1c60fe[_0x6c57('0x27')]=moment()[_0x6c57('0x7b')](_0x6c57('0xfa'));loggerPredictive[_0x6c57('0x81')](_0x1c60fe['name'],_0x6c57('0x1d0'),_0x1c60fe[_0x6c57('0x27')]);this[_0x6c57('0xbf')](_0x1c60fe['dialPredictiveInterval'])['then'](this[_0x6c57('0x1d1')](_0x1c60fe))[_0x6c57('0xba')](mergeDataErlangB(_0x1c60fe))['then'](this[_0x6c57('0x1d2')](_0x1c60fe))[_0x6c57('0xb3')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x1c60fe));}else if(!ifInterval(_0x1c60fe[_0x6c57('0x1cf')],_0x1c60fe[_0x6c57('0x27')])){_0x1c60fe[_0x6c57('0x6d')]=0x0;_0x1c60fe[_0x6c57('0x27')]=moment()[_0x6c57('0x7b')](_0x6c57('0xfa'));loggerPredictive['info'](_0x1c60fe['name'],_0x6c57('0x1d3'),_0x1c60fe['startPredictive']);clearInterval(_0x1c60fe[_0x6c57('0x93')]);_0x1c60fe[_0x6c57('0x93')]=undefined;this[_0x6c57('0xbf')](_0x1c60fe[_0x6c57('0x1cf')])[_0x6c57('0xba')](this[_0x6c57('0x1d1')](_0x1c60fe))['then'](mergeDataErlangB(_0x1c60fe))[_0x6c57('0xba')](this[_0x6c57('0x1d2')](_0x1c60fe))[_0x6c57('0xb3')](loggerCatchPredictive(_0x6c57('0x1d4'),_0x1c60fe));}else if(_0x1c60fe[_0x6c57('0x71')]&&_0x2adf6d<_0x1c60fe['predictiveIntervalAvailable']-_0x2856a5){freeVariablesPredictive(_0x1c60fe);loggerPredictive[_0x6c57('0x81')](_0x1c60fe[_0x6c57('0x41')],_0x6c57('0x1d5'),_0x2adf6d,_0x6c57('0x1d6'),_0x1c60fe['predictiveIntervalAvailable'],'-',_0x2856a5,'=',_0x1c60fe['predictiveIntervalAvailable']-_0x2856a5,')');}else if(_0x1c60fe['predictiveIntervalAvailable']&&_0x2adf6d>_0x1c60fe[_0x6c57('0x71')]+_0x29d835){freeVariablesPredictive(_0x1c60fe);loggerPredictive[_0x6c57('0x81')](_0x1c60fe[_0x6c57('0x41')],_0x6c57('0x1d5'),_0x2adf6d,_0x6c57('0x1d7'),_0x1c60fe['predictiveIntervalAvailable'],'+',_0x29d835,'=',_0x1c60fe[_0x6c57('0x71')]+_0x29d835,')');}};Dialer[_0x6c57('0x19')][_0x6c57('0x1d1')]=function(_0x4ffb53){var _0x2456d3=this;return function(_0x1ef285){return new BPromise(function(_0x4b7b5d,_0x958b2e){_[_0x6c57('0x8f')](_0x4ffb53,_0x1ef285[0x0]);if(checkGetDataPredictive(_0x1ef285[0x0])){var _0x391455=_0x4ffb53[_0x6c57('0x71')]=_0x4ffb53[_0x6c57('0x55')]+_0x4ffb53[_0x6c57('0xa3')];var _0xac9353=_0x4ffb53[_0x6c57('0x1cf')]*0x3c;var _0x3eecbc=_0x1ef285[0x0][_0x6c57('0x69')]+_0x1ef285[0x0]['predictiveIntervalAvgHoldtime'];var _0x18cddf=(_0x1ef285[0x0][_0x6c57('0x67')]+_0x1ef285[0x0][_0x6c57('0x6b')]+_0x1ef285[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x1ef285[0x0][_0x6c57('0x72')];_0x4ffb53[_0x6c57('0x6e')]=_0x18cddf>0x0?_0x18cddf:0x1;switch(_0x4ffb53[_0x6c57('0x1cd')]){case _0x6c57('0x1ca'):var _0x239b81=_0x4ffb53[_0x6c57('0x1c2')]/0x64;return _0x2456d3[_0x6c57('0x1d8')](_0x391455,_0xac9353,_0x3eecbc,_0x18cddf,_0x239b81)[_0x6c57('0xba')](function(_0x112abe){return _0x4b7b5d(_0x112abe);});case _0x6c57('0x1d9'):var _0x221a63=_0x4ffb53[_0x6c57('0x1c2')]/0x64;return _0x2456d3[_0x6c57('0x1da')](_0x391455,_0xac9353,_0x3eecbc,_0x18cddf,_0x221a63)['then'](function(_0x4babeb){return _0x4b7b5d(_0x4babeb);});default:return _0x958b2e(msgResponse(_0x6c57('0x1db'),_0x6c57('0x140'),_0x6c57('0x1dc')));}}else{return _0x958b2e(msgResponse(_0x6c57('0x1db'),'Failure',_0x6c57('0x1dd')));}});};};Dialer[_0x6c57('0x19')][_0x6c57('0x1de')]=function(_0x354119){var _0x3394ed=this;return function(_0xc93877){return new BPromise(function(_0x2bc629,_0x1d5593){_['merge'](_0x354119,_0xc93877[0x0]);if(checkGetDataPredictive(_0xc93877[0x0])){loggerPredictive[_0x6c57('0x81')](JSON['stringify'](_0xc93877[0x0]));if(_0x354119[_0x6c57('0x1cd')]===_0x6c57('0x1ca')){return _0x3394ed['getVoiceQueueRtPauses'](_0x354119['id'])['then'](function(_0x2258f0){var _0x231c39=_0x354119[_0x6c57('0x51')]-_0x2258f0[0x0][_0x6c57('0x1df')];var _0x2a57a4=_0x354119[_0x6c57('0x1cf')]*0x3c;var _0xcbbe0d=_0xc93877[0x0]['predictiveIntervalAvgTalktime']+_0xc93877[0x0][_0x6c57('0x68')];var _0x299300=(_0xc93877[0x0][_0x6c57('0x67')]+_0xc93877[0x0][_0x6c57('0x6b')]+_0xc93877[0x0][_0x6c57('0x6a')])/_0xc93877[0x0][_0x6c57('0x72')];var _0x3e08eb=_0x354119['dialPredictiveOptimizationPercentage']/0x64;_0x354119[_0x6c57('0x70')]=_0x2258f0[0x0][_0x6c57('0x1df')]||0x0;_0x354119[_0x6c57('0x6e')]=_0x299300>0x0?_0x299300:0x1;return _0x3394ed[_0x6c57('0x1d8')](_0x231c39,_0x2a57a4,_0xcbbe0d,_0x299300,_0x3e08eb);})[_0x6c57('0xba')](function(_0x1622f0){return _0x2bc629(_0x1622f0);})[_0x6c57('0xb3')](function(_0x2c15a7){return _0x1d5593(msgResponse('[CatchErlangB]','Failure',JSON[_0x6c57('0x4b')](_0x2c15a7)));});}if(_0x354119[_0x6c57('0x1cd')]===_0x6c57('0x1d9')){return _0x3394ed[_0x6c57('0xc5')](_0x354119['id'])['then'](function(_0x32baaa){var _0x2037ec=_0x354119[_0x6c57('0x51')]-_0x32baaa[0x0][_0x6c57('0x1df')];var _0x6ce49f=_0x354119[_0x6c57('0x1cf')]*0x3c;var _0x46f605=_0xc93877[0x0][_0x6c57('0x69')]+_0xc93877[0x0][_0x6c57('0x68')];var _0x4bf51c=(_0xc93877[0x0]['predictiveIntervalAnsweredCalls']+_0xc93877[0x0][_0x6c57('0x6b')]+_0xc93877[0x0][_0x6c57('0x6a')])/_0xc93877[0x0]['predictiveIntervalTotalCalls'];var _0x15ad23=_0x354119[_0x6c57('0x1c2')]/0x64;_0x354119['predictiveIntervalPauses']=_0x32baaa[0x0]['outboundQueuePauses']||0x0;_0x354119[_0x6c57('0x6e')]=_0x4bf51c>0x0?_0x4bf51c:0x1;return _0x3394ed[_0x6c57('0x1da')](_0x2037ec,_0x6ce49f,_0x46f605,_0x4bf51c,_0x15ad23);})[_0x6c57('0xba')](function(_0x568308){return _0x2bc629(_0x568308);})[_0x6c57('0xb3')](function(_0x4a61a3){return _0x1d5593(msgResponse(_0x6c57('0x1e0'),_0x6c57('0x140'),JSON['stringify'](_0x4a61a3)));});}}else{return _0x1d5593(msgResponse('[getDataPredictive]',_0x6c57('0x140'),'check\x20failure'));}});};};Dialer[_0x6c57('0x19')][_0x6c57('0x1d2')]=function(_0x1684bf){var _0xb0752b=this;return function(){var _0x2f9622=0x0;var _0x3ed094=Math[_0x6c57('0x1e1')](_0x1684bf[_0x6c57('0x8c')]*0x3e8);if(_0x3ed094>0x0){_0x3ed094=_0x3ed094<0x64?0x64:_0x3ed094;loggerPredictive[_0x6c57('0x81')](_0x1684bf['name'],'one\x20call\x20every:',_0x3ed094,_0x6c57('0x90'));_0x1684bf['handlePredictive']=setInterval(function(){_0xb0752b[_0x6c57('0x93')](_0x1684bf);loggerPredictiveCalls[_0x6c57('0x81')]('[handlePredictive]',_0x2f9622+=0x1);},_0x3ed094);}else{loggerPredictive['info'](_0x1684bf[_0x6c57('0x41')],_0x6c57('0x1e2'));}};};Dialer[_0x6c57('0x19')][_0x6c57('0x1e3')]=function(_0x445d9e,_0x1a610b){var _0x456ce4=this;return function(_0x895a51){if(_[_0x6c57('0x80')](_0x895a51)){if(_[_0x6c57('0xdd')](_0x1a610b['UserId'])||!_0x1a610b['recallme']){if(_0x445d9e[_0x6c57('0x5b')]===_0x6c57('0x8')){_0x445d9e[_0x6c57('0x128')]=_[_0x6c57('0x3e')](_0x445d9e[_0x6c57('0x128')])?!![]:_0x445d9e[_0x6c57('0x128')];var _0x1e51a3=uuid['v4']();_0x456ce4['actions'][_0x1e51a3]=new Action(_0x445d9e,_0x1a610b,_0x1e51a3);loggerBooked[_0x6c57('0x81')](_0x6c57('0x1e4'),_0x1e51a3,_0x6c57('0x1e5'),JSON[_0x6c57('0x4b')](_0x445d9e[_0x6c57('0x128')]),_0x6c57('0x1e6'),_0x445d9e[_0x6c57('0x41')]);if(_0x445d9e['queueStatusComplete']){_0x445d9e[_0x6c57('0x128')]=![];_0x456ce4[_0x6c57('0x29')][_0x456ce4[_0x6c57('0xae')][_0x1e51a3][_0x6c57('0xb6')]]=[];ami['Action']({'actionid':_0x1e51a3,'action':'queuestatus','queue':_0x445d9e['name']})[_0x6c57('0xb3')](function(){_0x456ce4[_0x6c57('0xb5')](_0x445d9e);_0x456ce4['rescheduleContact']({'active':![],'ContactId':_0x456ce4[_0x6c57('0xae')][_0x1e51a3][_0x6c57('0xd0')],'ListId':_0x456ce4[_0x6c57('0xae')][_0x1e51a3][_0x6c57('0xd1')],'VoiceQueueId':_0x456ce4[_0x6c57('0xae')][_0x1e51a3][_0x6c57('0xfb')]||undefined,'CampaignId':_0x456ce4[_0x6c57('0xae')][_0x1e51a3][_0x6c57('0xd3')]||undefined})[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x1e7')));delete _0x456ce4[_0x6c57('0xae')][_0x1e51a3];});}else{loggerBooked[_0x6c57('0x81')](_0x6c57('0x1e8'),JSON[_0x6c57('0x4b')](_0x445d9e['queueStatusComplete']),_0x6c57('0x1e6'),_0x445d9e[_0x6c57('0x41')]);_0x456ce4['updateOriginated'](_0x445d9e);_0x456ce4['rescheduleContact']({'active':![],'ContactId':_0x456ce4[_0x6c57('0xae')][_0x1e51a3]['ContactId'],'ListId':_0x456ce4['actions'][_0x1e51a3][_0x6c57('0xd1')],'VoiceQueueId':_0x456ce4[_0x6c57('0xae')][_0x1e51a3][_0x6c57('0xfb')]||undefined,'CampaignId':_0x456ce4[_0x6c57('0xae')][_0x1e51a3]['CampaignId']||undefined})['catch'](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x456ce4[_0x6c57('0xae')][_0x1e51a3];}}else{return _0x456ce4['actionOriginate'](_0x445d9e,_0x1a610b);}}else{if(getDiff(_0x1a610b[_0x6c57('0x1e9')])<_0x445d9e['dialRecallMeTimeout']*0x3c){if(_0x1a610b[_0x6c57('0x1ea')]&&!_0x1a610b[_0x6c57('0x1ea')][_0x6c57('0x1eb')]){_0x456ce4[_0x6c57('0x1e')][_0x6c57('0x12c')](_0x1a610b['id'])[_0x6c57('0x1c')](function(){_0x456ce4['updateOriginated'](_0x445d9e);});}else{_0x456ce4[_0x6c57('0xc2')]({'active':![]},_0x1a610b['id'],0x1)[_0x6c57('0x1c')](function(){_0x456ce4[_0x6c57('0xb5')](_0x445d9e);});}}else{_0x445d9e[_0x6c57('0x1ec')]+=0x1;_0x456ce4[_0x6c57('0xb5')](_0x445d9e);if(_0x445d9e[_0x6c57('0x1ed')]){_0x456ce4['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1a610b[_0x6c57('0xd0')],'ListId':_0x1a610b['ListId'],'VoiceQueueId':_0x1a610b[_0x6c57('0xfb')]||undefined,'CampaignId':_0x1a610b[_0x6c57('0xd3')]||undefined})[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x1ee')));_0x456ce4[_0x6c57('0xc8')](createObjHistory(_0x445d9e,_0x1a610b,'RECALLINQUEUE',0x17,_0x6c57('0x1ef')))[_0x6c57('0xb3')](loggerCatch(_0x6c57('0x1f0')));}else{_0x456ce4['saveInDb'](createObjHistory(_0x445d9e,_0x1a610b,_0x6c57('0x1f1'),0x16,_0x6c57('0x1f2')),_0x6c57('0x1f3'),_0x6c57('0x1f4'));}}}}else{_0x445d9e[_0x6c57('0x1f5')]+=0x1;_0x456ce4['saveInDb'](createObjHistory(_0x445d9e,_0x1a610b,'BLACKLIST',0xd,_0x6c57('0x1f6')),_0x6c57('0x1f7'),_0x6c57('0x1f8'));throw _0x6c57('0x1f9');}};};Dialer['prototype'][_0x6c57('0x157')]=function(_0x5eaf60){var _0x35f7bb=this;var _0x13a442=_0x5eaf60[_0x6c57('0x1fa')]-_0x5eaf60[_0x6c57('0x73')]-_0x5eaf60[_0x6c57('0xc4')];emitCampaignSummary(_0x5eaf60);if(_0x13a442>0x0){if(_0x13a442>this[_0x6c57('0x1fb')]){_0x13a442=this[_0x6c57('0x1fb')];}_0x5eaf60[_0x6c57('0xc4')]+=_0x13a442;this[_0x6c57('0x1fc')](_0x5eaf60['id'],_0x13a442,_0x5eaf60[_0x6c57('0x1fd')],_0x5eaf60)['then'](function(_0x228b9f){_0x5eaf60[_0x6c57('0xc4')]-=_0x13a442;_0x5eaf60[_0x6c57('0xc4')]=_0x5eaf60[_0x6c57('0xc4')]>0x0?_0x5eaf60[_0x6c57('0xc4')]:0x0;if(!checkContactEmpty(_0x228b9f)){_0x5eaf60[_0x6c57('0x3f')]=_0x6c57('0xa0');logger[_0x6c57('0x81')](_0x6c57('0x1fe')+_0x5eaf60[_0x6c57('0x41')]);}else{_0x5eaf60[_0x6c57('0x73')]+=_0x228b9f[_0x6c57('0x9a')];_0x5eaf60['message']='RUNNING';for(var _0x470974=0x0;_0x470974<_0x228b9f[_0x6c57('0x9a')];_0x470974+=0x1){_0x5eaf60[_0x6c57('0x1ff')]+=0x1;if(_[_0x6c57('0xdd')](_0x228b9f[_0x470974])||_[_0x6c57('0xdd')](_0x228b9f[_0x470974][_0x6c57('0x162')])||_[_0x6c57('0xdd')](_0x228b9f[_0x470974][_0x6c57('0x162')]['phone'])){_0x35f7bb['emptyContact']('[actionOriginate]\x20',_0x5eaf60,_0x228b9f[_0x470974]);}else{_0x35f7bb[_0x6c57('0xbd')](_[_0x6c57('0xcf')](_0x228b9f[_0x470974],[_0x6c57('0xd3'),_0x6c57('0x200')]))[_0x6c57('0xba')](_0x35f7bb['checkContactBlack'](_0x5eaf60,_0x228b9f[_0x470974]))['catch'](_0x35f7bb[_0x6c57('0x201')](_0x6c57('0x202'),_0x5eaf60));}}}})[_0x6c57('0xb3')](loggerGetContactDialer(_0x6c57('0x203'),_0x5eaf60,_0x13a442));}};Dialer[_0x6c57('0x19')][_0x6c57('0x152')]=function(_0x2058ed,_0x7c7268){var _0xddd0ec=this;var _0x43b791=[];var _0x4ddd83=_0x7c7268>=0x1?_0x7c7268:0x1;if(_0x2058ed['dialMethod']===_0x6c57('0x8')){_0x4ddd83=0x1;}var _0x146d4a=Math['floor'](_0x2058ed['available']*_0x4ddd83)-_0x2058ed[_0x6c57('0x73')]-_0x2058ed['temp'];emitVoiceQueueSummary(_0x2058ed);if(_0x2058ed[_0x6c57('0x204')]>0x0){var _0x5e6778=_0x2058ed[_0x6c57('0x204')]-_0x2058ed[_0x6c57('0x73')]-_0x2058ed[_0x6c57('0x55')]-_0x2058ed[_0x6c57('0xc4')]-_0x2058ed['pTalking'];if(_0x146d4a>_0x5e6778){_0x146d4a=_0x5e6778;}}if(_0x146d4a>0x0){if(_0x2058ed[_0x6c57('0x5b')]===_0x6c57('0x8')){_0x146d4a=0x1;}if(_0x146d4a>this[_0x6c57('0x1fb')]){_0x146d4a=this[_0x6c57('0x1fb')];}_0x2058ed[_0x6c57('0xc4')]+=_0x146d4a;for(var _0x48e678 in this['agents']){if(typeof this[_0x6c57('0x21')][_0x48e678]!==_0x6c57('0x9b')){if(this['agents'][_0x48e678][_0x6c57('0xa9')]===_0x6c57('0x205')&&this[_0x6c57('0x21')][_0x48e678][_0x6c57('0xb1')]===_0x6c57('0xd9')){_0x43b791['push'](this[_0x6c57('0x21')][_0x48e678]['id']);}}}this[_0x6c57('0xc3')](_0x2058ed['id'],_0x43b791,_0x146d4a,_0x2058ed[_0x6c57('0x1fd')],_0x2058ed)[_0x6c57('0xba')](function(_0x260140){_0x2058ed[_0x6c57('0xc4')]-=_0x146d4a;_0x2058ed['temp']=_0x2058ed[_0x6c57('0xc4')]>0x0?_0x2058ed[_0x6c57('0xc4')]:0x0;if(!checkContactEmpty(_0x260140)){_0xddd0ec[_0x6c57('0xb9')](_0x2058ed)[_0x6c57('0xba')](sendMessageReschedule(_0x2058ed))[_0x6c57('0xb3')](loggerCatch(_0x6c57('0xbb')));}else{_0x2058ed[_0x6c57('0x73')]+=_0x260140[_0x6c57('0x9a')];_0x2058ed['message']=_0x2058ed[_0x6c57('0x5b')]===_0x6c57('0x8')?_0x6c57('0x206'):_0x6c57('0x207');for(var _0x30b813=0x0;_0x30b813<_0x260140[_0x6c57('0x9a')];_0x30b813+=0x1){if(_[_0x6c57('0xdd')](_0x260140[_0x30b813])||_[_0x6c57('0xdd')](_0x260140[_0x30b813][_0x6c57('0x162')])||_['isNil'](_0x260140[_0x30b813]['Contact'][_0x6c57('0x163')])){_0xddd0ec[_0x6c57('0xcc')](_0x6c57('0x208'),_0x2058ed,_0x260140[_0x30b813]);}else{_0xddd0ec[_0x6c57('0x209')](_['pick'](_0x260140[_0x30b813],['VoiceQueueId',_0x6c57('0x200')]))[_0x6c57('0xba')](_0xddd0ec[_0x6c57('0x1e3')](_0x2058ed,_0x260140[_0x30b813]))[_0x6c57('0xb3')](_0xddd0ec[_0x6c57('0x201')](_0x6c57('0x208'),_0x2058ed));}}}})[_0x6c57('0xb3')](loggerGetContactDialer(_0x6c57('0x20a'),_0x2058ed,_0x146d4a));}};Dialer['prototype']['handlePredictive']=function(_0x279d37){if(_0x279d37[_0x6c57('0x204')]>0x0){var _0x2ccb33=_0x279d37[_0x6c57('0x204')]-_0x279d37[_0x6c57('0x73')]-_0x279d37[_0x6c57('0x55')];if(_0x2ccb33>0x0){this[_0x6c57('0x20b')](_0x279d37);}else{loggerPredictiveCalls[_0x6c57('0x81')](_0x6c57('0x20c'));}}else{this[_0x6c57('0x20b')](_0x279d37);}};Dialer[_0x6c57('0x19')][_0x6c57('0x20b')]=function(_0x525a15){var _0x19fb5b=this;var _0x1436d0=[];_0x525a15[_0x6c57('0x73')]+=0x1;for(var _0x2eae0c in this[_0x6c57('0x21')]){if(typeof this[_0x6c57('0x21')][_0x2eae0c]!=='undefined'){if(this['agents'][_0x2eae0c][_0x6c57('0xa9')]===_0x6c57('0x205')&&this[_0x6c57('0x21')][_0x2eae0c]['status']===_0x6c57('0xd9')){_0x1436d0['push'](this['agents'][_0x2eae0c]['id']);}}}this[_0x6c57('0xc3')](_0x525a15['id'],_0x1436d0,0x1,_0x525a15['dialOrderByScheduledAt'],_0x525a15)['then'](function(_0x231a54){if(!checkContactEmpty(_0x231a54)){checkContactLowerLimitOriginate(_0x525a15,0x1,0x0);_0x19fb5b[_0x6c57('0xb9')](_0x525a15)[_0x6c57('0xba')](sendMessageReschedule(_0x525a15))['catch'](loggerCatch(_0x6c57('0xbb')));}else{_0x525a15[_0x6c57('0x3f')]=_0x6c57('0x207');if(_['isNil'](_0x231a54[0x0])||_[_0x6c57('0xdd')](_0x231a54[0x0][_0x6c57('0x162')])||_[_0x6c57('0xdd')](_0x231a54[0x0]['Contact'][_0x6c57('0x163')])){_0x19fb5b[_0x6c57('0xcc')](_0x6c57('0x208'),_0x525a15,_0x231a54[0x0]);}else{_0x19fb5b[_0x6c57('0x209')](_[_0x6c57('0xcf')](_0x231a54[0x0],[_0x6c57('0xfb'),'Contact.phone']))[_0x6c57('0xba')](_0x19fb5b[_0x6c57('0x1e3')](_0x525a15,_0x231a54[0x0]))[_0x6c57('0xb3')](_0x19fb5b['loggerHandler'](_0x6c57('0x20d'),_0x525a15));}}})[_0x6c57('0xb3')](loggerGetContactDialer('[getContactDialerPredictive]',_0x525a15,0x1));emitVoiceQueueSummary(_0x525a15);};Dialer[_0x6c57('0x19')][_0x6c57('0x1d8')]=function(_0x528991,_0x5ef395,_0x5c3853,_0x289df3,_0x22a62c,_0x2c0f58){loggerPredictive['info']('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0x6c57('0x81')](_0x6c57('0x20e'),_0x528991);loggerPredictive[_0x6c57('0x81')](_0x6c57('0x20f'),_0x5ef395);loggerPredictive[_0x6c57('0x81')](_0x6c57('0x210'),_0x5c3853);loggerPredictive['info'](_0x6c57('0x211'),_0x289df3);loggerPredictive[_0x6c57('0x81')]('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x22a62c);loggerPredictive[_0x6c57('0x81')](_0x6c57('0x87'));return new BPromise(function(_0x1fbb61,_0x573aab){if(_0x528991<=0x0||isNaN(_0x528991)){return _0x573aab(msgResponse(_0x6c57('0x212'),'Error',_0x6c57('0x213')+_0x528991));}if(_0x5c3853<=0x0||isNaN(_0x5c3853)){return _0x573aab(msgResponse('[abandonmentRate]',_0x6c57('0x4a'),_0x6c57('0x214')+_0x5c3853));}if(_0x289df3<=0x0||isNaN(_0x289df3)){return _0x573aab(msgResponse(_0x6c57('0x212'),_0x6c57('0x4a'),_0x6c57('0x215')+_0x289df3));}if(_0x5ef395<=0x0||isNaN(_0x5ef395)){return _0x573aab(msgResponse('[abandonmentRate]',_0x6c57('0x4a'),_0x6c57('0x216')+_0x5ef395));}if(_0x22a62c<=0x0||isNaN(_0x22a62c)){return _0x573aab(msgResponse('[abandonmentRate]','Error',_0x6c57('0x217')+_0x22a62c));}_0x2c0f58=_0x2c0f58||0x0;var _0x46ecf0=0x1/_0x5c3853;var _0x3c305f=0x0;var _0x1bced0=0x0;var _0x5e8d2d=0x0;var _0x4e58ee=0x0;for(var _0x20fbea=0x0;_0x5e8d2d<_0x22a62c;_0x20fbea+=0x1){_0x1bced0=_0x20fbea/_0x5ef395;_0x3c305f=(_0x289df3*_0x1bced0+_0x2c0f58)/_0x46ecf0;_0x5e8d2d=erlangb(_0x3c305f,_0x528991);_0x4e58ee=_0x3c305f/_0x528991*(0x1-erlangb(_0x3c305f,_0x528991));}return _0x1fbb61({'erlangCalls':_0x20fbea,'erlangCallToSecond':_0x5ef395/_0x20fbea,'erlangAbandonmentRate':_0x5e8d2d,'erlangBusyFactor':_0x4e58ee});});};Dialer[_0x6c57('0x19')][_0x6c57('0x1da')]=function(_0x1fd8ab,_0x50687f,_0x207756,_0x590115,_0x5f12c5,_0x300b3b){loggerPredictive[_0x6c57('0x81')]('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive[_0x6c57('0x81')]('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',_0x1fd8ab);loggerPredictive[_0x6c57('0x81')](_0x6c57('0x20f'),_0x50687f);loggerPredictive['info'](_0x6c57('0x210'),_0x207756);loggerPredictive[_0x6c57('0x81')](_0x6c57('0x211'),_0x590115);loggerPredictive[_0x6c57('0x81')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5f12c5);loggerPredictive[_0x6c57('0x81')](_0x6c57('0x87'));return new BPromise(function(_0x3724ca,_0x141b3f){if(_0x1fd8ab<=0x0||isNaN(_0x1fd8ab)){return _0x141b3f(msgResponse(_0x6c57('0x218'),'Error',_0x6c57('0x213')+_0x1fd8ab));}if(_0x207756<=0x0||isNaN(_0x207756)){return _0x141b3f(msgResponse(_0x6c57('0x218'),'Error',_0x6c57('0x214')+_0x207756));}if(_0x590115<=0x0||isNaN(_0x590115)){return _0x141b3f(msgResponse(_0x6c57('0x218'),_0x6c57('0x4a'),'p\x20=\x20'+_0x590115));}if(_0x50687f<=0x0||isNaN(_0x50687f)){return _0x141b3f(msgResponse(_0x6c57('0x218'),_0x6c57('0x4a'),'interval\x20=\x20'+_0x50687f));}if(_0x5f12c5<=0x0||isNaN(_0x5f12c5)){return _0x141b3f(msgResponse(_0x6c57('0x218'),_0x6c57('0x4a'),'Umin\x20=\x20'+_0x5f12c5));}_0x300b3b=_0x300b3b||0x0;var _0x4186d3=0x1/_0x207756;var _0x4e5790=0x0;var _0xb70d1a=0x0;var _0x3e4a21=0x0;var _0x5627a0=0x0;for(var _0x1a85e8=0x0;_0x5627a0<_0x5f12c5;_0x1a85e8+=0x1){_0xb70d1a=_0x1a85e8/_0x50687f;_0x4e5790=(_0x590115*_0xb70d1a+_0x300b3b)/_0x4186d3;_0x3e4a21=erlangb(_0x4e5790,_0x1fd8ab);_0x5627a0=_0x4e5790/_0x1fd8ab*(0x1-erlangb(_0x4e5790,_0x1fd8ab));}return _0x3724ca({'erlangCalls':_0x1a85e8,'erlangCallToSecond':_0x50687f/_0x1a85e8,'erlangAbandonmentRate':_0x3e4a21,'erlangBusyFactor':_0x5627a0});});};module['exports']=Dialer;
\ No newline at end of file
+var _0x6ff1=['Unknow','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncAgentComplete][createHistory]','droptime','Drop','TIMEOUT','dialQueueProject2','countglobal','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','dropreason','dialAbandonedMaxRetry','Abandoned','[syncAgentComplete][createHistory][11]','actionid','strategy','locked','paused','stateinterface','push','[unlockQueueStatus][undefined]','queueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','Agent:\x20','idHopper','contactAgent-idHopper:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','content','indexOf','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','booked','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialGlobalInterval','dialTimezone','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','object','originate','Contact','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','XMD-AMDINITIALSILENCE','XMD-AMDGREETING','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','tags','createdAt','updatedAt','%s%s','toUpper','dialRandomLastDigitCallerIdNumber','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','dialCutDigit','substring','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','responsetime','getQueue','callProgressDetecting','checkRetriveMax','dialNoAnswerRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','entity\x20is\x20undefine','[callProgressDetecting]','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','dialNoAnswerMaxRetry','Busy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','predictive','dialPredictiveOptimizationPercentage','outboundDropCallsDayTimeout','predictiveIntervalMaxThreshold','round','predictiveIntervalMinThreshold','available','floor','[startMethodPredictive][StartProgressive]','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dropRate','Dropped\x20calls\x20day','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','averageHandleTime','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','agentBusyFactor','busyFactor','[CatchErlangB]','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','UserId','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','Agent','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RecallInQueue','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','inBlackList','limitCalls','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','emptyContact','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','[countReScheduled]\x20','[getContactDialer2]','[handlePredictive][limitChannel]','tryOriginatePredictive','[actionOriginatePredictive]\x20','--------\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','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','p\x20=\x20','interval\x20=\x20','Amax\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','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Ts\x20=\x20','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','ioredis','../../../config/environment/','../../../config/logger','dialer','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','127.0.0.1','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','optionPredictive','startProgressive','ivrOriginated','queueBooked','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','newexten','syncNewExten','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','isUndefined','message','AGENTS_NOT_LOGGED','name','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','Intervals','isEmpty','\x20INTERVAL_IS_NULL','[ifTime][Action]','Error','stringify','milliseconds','seconds','emit','type','outbound','answered','loggedIn','sumDuration','sumHoldTime','talking','unmanaged','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','callerid','md5','format','voice:queue:%s','ivr','campaign:save','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\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','---------------------------','predictiveIntervalTotalCalls','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---------','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','diff','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','inspect','error','stack','length','originated','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','pTalking','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','state','starttime','clearZombieChannels','[uniqueid]','[actions]','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel][ivr]','countReScheduled','checkIsBlackList','resolve','then','[checkIsBlackList]\x20','checkIsBlackListIvr','rescheduleContact','[rescheduleContact]\x20','unlockContact','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','notFound','saveInDb','pick','ContactId','VoiceQueueId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','active','reachable','SIP/%s','unmonitored','moveContactManagedDialer','uniqueid','isNil','variable','amdstatus','exten','xcally-motion-dialer','value','HANGUP','uniqueId','statedesc','HangupInAMD','AMD','custom:amd','buildObj','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','Machine','membername','amd','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','stateGlobal','createStateFinal','reason\x2019\x20machine....','add','minutes','YYYY-MM-DD\x20HH:mm:ss','ListId','CampaignId','[rescheduleContact][Machine]','dialAMDActive','[syncHangupInAMDIvr]','countbusyretry','countabandonedretry','dialGlobalMaxRetry','reason19\x20machine....','dialMachineMaxRetry','dialMachineRetryFrequency','syncHangup','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AGI','cause-txt'];(function(_0x26598e,_0x4274e1){var _0x1ca2b9=function(_0x2e684c){while(--_0x2e684c){_0x26598e['push'](_0x26598e['shift']());}};_0x1ca2b9(++_0x4274e1);}(_0x6ff1,0x10a));var _0x16ff=function(_0x4483a9,_0x47e582){_0x4483a9=_0x4483a9-0x0;var _0x5762e5=_0x6ff1[_0x4483a9];return _0x5762e5;};'use strict';var util=require(_0x16ff('0x0'));var _=require(_0x16ff('0x1'));var BPromise=require(_0x16ff('0x2'));var uuid=require(_0x16ff('0x3'));var moment=require('moment');var rr=require('rr');var md5=require('md5');var Redis=require(_0x16ff('0x4'));var ut=require('../preview/util/util');var config=require(_0x16ff('0x5'));var logger=require(_0x16ff('0x6'))(_0x16ff('0x7'));var loggerBooked=require(_0x16ff('0x6'))('booked');var loggerPredictive=require('../../../config/logger')('predictive');var loggerPredictiveCalls=require('../../../config/logger')(_0x16ff('0x8'));var loggerSyncQueueSummary=require(_0x16ff('0x6'))(_0x16ff('0x9'));var ami=require(_0x16ff('0xa'));config[_0x16ff('0xb')]=_[_0x16ff('0xc')](config[_0x16ff('0xb')],{'host':_0x16ff('0xd'),'port':0x18eb});var io=require(_0x16ff('0xe'))(new Redis(config[_0x16ff('0xb')]));var cmHopper=require(_0x16ff('0xf'));var cmHopperHistory=require(_0x16ff('0x10'));var cmHopperBlack=require(_0x16ff('0x11'));var voiceQueueRt=require(_0x16ff('0x12'));var Action=require(_0x16ff('0x13'));var History=require(_0x16ff('0x14'));var Final=require(_0x16ff('0x15'));var AgentComplete=require(_0x16ff('0x16'));var QueueCallerAbandon=require(_0x16ff('0x17'));var Hangup=require(_0x16ff('0x18'));var ipAgi=process['env']['XCALLY_IP_AGI']||_0x16ff('0x19');var strategy={'rrmemory':_0x16ff('0x1a'),'roundrobin':_0x16ff('0x1b')};var Sequence=function(){};Sequence[_0x16ff('0x1c')][_0x16ff('0x1d')]=function(_0xac9e12){this['tail']=this[_0x16ff('0x1e')]?this[_0x16ff('0x1e')][_0x16ff('0x1f')](_0xac9e12):_0xac9e12();};function Dialer(_0x5731d9,_0x1fb8cd){this[_0x16ff('0x20')]=new Sequence();this[_0x16ff('0x21')]=_0x1fb8cd;this['voiceQueues']=_0x5731d9[_0x16ff('0x22')];this[_0x16ff('0x23')]=_0x5731d9['campaigns'];this[_0x16ff('0x24')]=_0x5731d9['agents'];this[_0x16ff('0x25')]=_0x5731d9['trunks'];this[_0x16ff('0x26')]=config[_0x16ff('0x26')]||0x2;this[_0x16ff('0x27')]={};this[_0x16ff('0x28')]={};this[_0x16ff('0x29')]={};this['uniqueId']={};this[_0x16ff('0x2a')]={};this['startPredictive']={};this[_0x16ff('0x2b')]={};this[_0x16ff('0x2c')]={};this[_0x16ff('0x2d')]={};this['queueBookedRR']={};ami['on'](_0x16ff('0x2e'),this[_0x16ff('0x2f')][_0x16ff('0x30')](this));ami['on'](_0x16ff('0x31'),this[_0x16ff('0x32')][_0x16ff('0x30')](this));ami['on'](_0x16ff('0x33'),this[_0x16ff('0x34')][_0x16ff('0x30')](this));ami['on'](_0x16ff('0x35'),this[_0x16ff('0x36')]['bind'](this));ami['on'](_0x16ff('0x37'),this['syncQueueSummary'][_0x16ff('0x30')](this));ami['on'](_0x16ff('0x38'),this['syncHangup'][_0x16ff('0x30')](this));ami['on'](_0x16ff('0x39'),this[_0x16ff('0x3a')][_0x16ff('0x30')](this));ami['on']('varset',this[_0x16ff('0x3b')][_0x16ff('0x30')](this));ami['on'](_0x16ff('0x3c'),this[_0x16ff('0x3d')][_0x16ff('0x30')](this));ami['on'](_0x16ff('0x3e'),this[_0x16ff('0x3f')][_0x16ff('0x30')](this));this[_0x16ff('0x40')]();this['loopClearZombieChannels']();}function isNotNull(_0xde65e8){return _0xde65e8!==null&&!_[_0x16ff('0x41')](_0xde65e8);}function checkIsLoggedIn(_0x2e08d7,_0x160a6d){return function(){if(_0x160a6d<=0x0){_0x2e08d7[_0x16ff('0x42')]=_0x16ff('0x43');throw _0x2e08d7[_0x16ff('0x44')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x52e5ca){return _0x52e5ca;}function checkIsActive(_0x4ebafa,_0x17667c){return function(){if(!isActive(_0x17667c)){_0x4ebafa[_0x16ff('0x42')]=_0x16ff('0x45');throw _0x4ebafa[_0x16ff('0x44')]+_0x16ff('0x46');}};}function checkInterval(_0x2d247e){return function(){if(!isNotNull(_0x2d247e[_0x16ff('0x47')])){_0x2d247e[_0x16ff('0x42')]=_0x16ff('0x48');throw _0x2d247e[_0x16ff('0x44')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x2d247e[_0x16ff('0x47')][_0x16ff('0x49')])){_0x2d247e[_0x16ff('0x42')]='INTERVAL_IS_NULL';throw _0x2d247e['name']+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0x16ff('0x4a')](_0x2d247e[_0x16ff('0x47')][_0x16ff('0x49')]))){_0x2d247e[_0x16ff('0x42')]=_0x16ff('0x48');throw _0x2d247e['name']+_0x16ff('0x4b');}};}function msgResponse(_0x287593,_0x5cfbeb,_0x5e91ab){return{'action':_0x287593,'response':_0x5cfbeb,'message':_0x5e91ab,'stack':_0x5e91ab};}function myreject(_0x1ada91){return function(_0x285ff1){return _0x1ada91(msgResponse(_0x16ff('0x4c'),_0x16ff('0x4d'),JSON[_0x16ff('0x4e')](_0x285ff1)));};}function getSeconds(_0x4ba5d7,_0xfb0905){var _0x3b4d89=moment(_0x4ba5d7)[_0x16ff('0x4f')](0x0);var _0x55a150=moment(_0xfb0905)[_0x16ff('0x4f')](0x0);return _0x3b4d89['diff'](_0x55a150,_0x16ff('0x50'));}function emit(_0x53d5a1,_0x330897,_0x40aff9){io['to'](_0x53d5a1)[_0x16ff('0x51')](_0x330897,_0x40aff9);}function emitVoiceQueueSummary(_0x175514){if(_0x175514[_0x16ff('0x52')]===_0x16ff('0x53')){var _0x1aa914={'id':_0x175514['id'],'name':_0x175514[_0x16ff('0x44')],'strategy':_0x175514['strategy'],'answered':_0x175514[_0x16ff('0x54')],'available':_0x175514['available'],'loggedIn':_0x175514[_0x16ff('0x55')],'pTalking':_0x175514['pTalking'],'sumBillable':_0x175514['sumBillable'],'sumDuration':_0x175514[_0x16ff('0x56')],'sumHoldTime':_0x175514[_0x16ff('0x57')]||0x0,'talking':_0x175514[_0x16ff('0x58')],'total':_0x175514['total'],'type':_0x175514[_0x16ff('0x52')],'unmanaged':_0x175514[_0x16ff('0x59')],'abandoned':_0x175514['abandoned'],'waiting':_0x175514[_0x16ff('0x5a')],'loggedInDb':_0x175514[_0x16ff('0x5b')],'dialActive':_0x175514[_0x16ff('0x5c')],'dialMethod':_0x175514[_0x16ff('0x5d')],'dialOriginateCallerIdName':_0x175514[_0x16ff('0x5e')],'dialOriginateCallerIdNumber':_0x175514[_0x16ff('0x5f')],'dialOriginateTimeout':_0x175514[_0x16ff('0x60')],'dialPrefix':_0x175514[_0x16ff('0x61')],'outboundAnswerAgiCallsDay':_0x175514[_0x16ff('0x62')],'outboundAnswerCallsDay':_0x175514[_0x16ff('0x63')],'outboundBlacklistCallsDay':_0x175514[_0x16ff('0x64')],'outboundBusyCallsDay':_0x175514[_0x16ff('0x65')],'outboundCongestionCallsDay':_0x175514[_0x16ff('0x66')],'outboundDropCallsDayACS':_0x175514[_0x16ff('0x67')],'outboundDropCallsDayCallersExit':_0x175514['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x175514['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x175514['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x175514[_0x16ff('0x68')],'outboundOriginateFailureCallsDay':_0x175514[_0x16ff('0x69')],'outboundReCallsDay':_0x175514[_0x16ff('0x6a')],'outboundRejectCallsDay':_0x175514[_0x16ff('0x6b')],'outboundUnknownCallsDay':_0x175514[_0x16ff('0x6c')],'predictiveIntervalAnsweredCalls':_0x175514[_0x16ff('0x6d')],'predictiveIntervalAvgHoldtime':_0x175514['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x175514[_0x16ff('0x6e')],'predictiveIntervalDroppedCallsCallersExit':_0x175514[_0x16ff('0x6f')],'predictiveIntervalDroppedCallsTimeout':_0x175514[_0x16ff('0x70')],'predictiveIntervalErlangCalls':_0x175514[_0x16ff('0x71')],'predictiveIntervalErlangCallsDroppedCalls':_0x175514[_0x16ff('0x72')],'predictiveIntervalHitRate':_0x175514[_0x16ff('0x73')],'predictiveIntervalMultiplicativeFactor':_0x175514[_0x16ff('0x74')],'predictiveIntervalPauses':_0x175514[_0x16ff('0x75')],'predictiveIntervalAvailable':_0x175514[_0x16ff('0x76')],'predictiveIntervalTotalCalls':_0x175514['predictiveIntervalTotalCalls'],'message':_0x175514[_0x16ff('0x42')],'originated':_0x175514['originated'],'erlangCalls':_0x175514[_0x16ff('0x77')],'erlangCallToSecond':_0x175514['erlangCallToSecond'],'erlangAbandonmentRate':_0x175514[_0x16ff('0x78')],'erlangBusyFactor':_0x175514[_0x16ff('0x79')],'startPredictive':_0x175514[_0x16ff('0x7a')],'startProgressive':_0x175514[_0x16ff('0x2b')]};if(_0x175514[_0x16ff('0x7b')]){_0x1aa914[_0x16ff('0x7b')]={'id':_0x175514['Trunk']['id'],'name':_0x175514[_0x16ff('0x7b')][_0x16ff('0x44')],'active':_0x175514[_0x16ff('0x7b')]['active'],'callerid':_0x175514[_0x16ff('0x7b')][_0x16ff('0x7c')]};}if(_0x175514['Interval']){_0x1aa914[_0x16ff('0x47')]={'id':_0x175514[_0x16ff('0x47')]['id'],'name':_0x175514[_0x16ff('0x47')][_0x16ff('0x44')]};}var _0x3d52c1=md5(JSON[_0x16ff('0x4e')](_0x1aa914));if(_0x175514[_0x16ff('0x7d')]!==_0x3d52c1){_0x175514[_0x16ff('0x7d')]=_0x3d52c1;emit(util[_0x16ff('0x7e')](_0x16ff('0x7f'),_0x1aa914[_0x16ff('0x44')]),'voice_queue:save',_0x1aa914);}}}function emitCampaignSummary(_0x2734e7){if(_0x2734e7['type']===_0x16ff('0x80')){emit(util[_0x16ff('0x7e')]('campaign:ivr:%s',_0x2734e7[_0x16ff('0x44')]),_0x16ff('0x81'),_0x2734e7);}}function checkGetDataPredictive(_0x1c2f17){if(isNotNull(_0x1c2f17)&&!_[_0x16ff('0x4a')](_0x1c2f17)){loggerPredictive[_0x16ff('0x82')](_0x16ff('0x83'));loggerPredictive[_0x16ff('0x82')](_0x16ff('0x84'),_0x1c2f17['predictiveIntervalTotalCalls']);loggerPredictive[_0x16ff('0x82')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1c2f17[_0x16ff('0x6d')]);loggerPredictive['info']('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1c2f17['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0x16ff('0x82')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1c2f17['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x85'),_0x1c2f17[_0x16ff('0x86')]);loggerPredictive['info'](_0x16ff('0x87'),_0x1c2f17[_0x16ff('0x6e')]);loggerPredictive['info'](_0x16ff('0x88'));if(_0x1c2f17[_0x16ff('0x89')]>0x0){if(!_['isUndefined'](_0x1c2f17[_0x16ff('0x6e')])&&_0x1c2f17[_0x16ff('0x6e')]>0x0){return!![];}loggerPredictive[_0x16ff('0x82')](_0x16ff('0x8a'));if(!_[_0x16ff('0x41')](_0x1c2f17[_0x16ff('0x86')])&&_0x1c2f17[_0x16ff('0x86')]>0x0){return!![];}loggerPredictive['info'](_0x16ff('0x8b'));}else{loggerPredictive[_0x16ff('0x82')](_0x16ff('0x8c'));}}else{loggerPredictive[_0x16ff('0x82')](_0x16ff('0x8d'));}return![];}function mergeDataErlangB(_0x211ff2){return function(_0x1fc026){loggerPredictive[_0x16ff('0x82')](_0x16ff('0x8e'));loggerPredictive[_0x16ff('0x82')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1fc026['erlangCalls']);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x8f'),_0x1fc026[_0x16ff('0x90')]);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x91'),_0x1fc026[_0x16ff('0x78')]);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x92'),_0x1fc026[_0x16ff('0x79')]);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x91'),_0x1fc026['erlangAbandonmentRate']);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x88'));_[_0x16ff('0x93')](_0x211ff2,_0x1fc026);};}function getDiff(_0x451ccc){var _0x56896f=moment()['milliseconds'](0x0);var _0x30da38=moment(_0x451ccc)[_0x16ff('0x4f')](0x0);return _0x56896f[_0x16ff('0x94')](_0x30da38,_0x16ff('0x50'));}function ifInterval(_0x3d9ebc,_0xcfd012){if(_[_0x16ff('0x41')](_0xcfd012)){return![];}return getDiff(_0xcfd012)<_0x3d9ebc*0x3c;}function freeVariablesPredictive(_0x3a330a){if(isNotNull(_0x3a330a)){if(!_[_0x16ff('0x41')](_0x3a330a['startProgressive'])){_0x3a330a[_0x16ff('0x2b')]=undefined;loggerPredictive[_0x16ff('0x82')](_0x3a330a[_0x16ff('0x44')],_0x16ff('0x95'));}if(!_[_0x16ff('0x41')](_0x3a330a[_0x16ff('0x7a')])){_0x3a330a[_0x16ff('0x7a')]=undefined;loggerPredictive['info'](_0x3a330a[_0x16ff('0x44')],_0x16ff('0x96'));}if(!_[_0x16ff('0x41')](_0x3a330a[_0x16ff('0x97')])){clearInterval(_0x3a330a[_0x16ff('0x97')]);_0x3a330a[_0x16ff('0x97')]=undefined;loggerPredictive[_0x16ff('0x82')](_0x3a330a[_0x16ff('0x44')],_0x16ff('0x98'));}}}function erlangb(_0x2d88eb,_0x1c3077){if(_0x1c3077===0x0){return 0x0;}var _0x3191b0=0x1;for(var _0x1cc438=0x1;_0x1cc438<=_0x1c3077;_0x1cc438+=0x1){_0x3191b0=0x1+_0x3191b0*_0x1cc438/_0x2d88eb;}return 0x1/_0x3191b0;}function isVoiceQueueOutbound(_0x5e570a){return _0x5e570a==='outbound';}function isNotPreview(_0xaf808b){return _0xaf808b!==_0x16ff('0x21');}function isCampaignIvr(_0x9bc307){return _0x9bc307===_0x16ff('0x80');}function getCallerId(_0x557057,_0xed7b30,_0x4b110e){if(!_[_0x16ff('0x41')](_0x4b110e)&&typeof _0x4b110e===_0x16ff('0x99')&&!_['isEmpty'](_0x4b110e)){if(!_['isUndefined'](_0xed7b30)&&typeof _0xed7b30===_0x16ff('0x99')&&!_[_0x16ff('0x4a')](_0xed7b30)){return util[_0x16ff('0x7e')]('\x22%s\x22\x20<%s>',_0xed7b30,_0x4b110e);}return util[_0x16ff('0x7e')](_0x16ff('0x9a'),_0x4b110e,_0x4b110e);}if(!_[_0x16ff('0x41')](_0x557057)&&typeof _0x557057==='string'&&!_['isEmpty'](_0x557057)){return _0x557057;}return _0x16ff('0x9b');}function loggerCatchQueueSummary(_0x4c5a45,_0x504257){return function(_0x2abf45){freeVariablesPredictive(_0x504257);emitVoiceQueueSummary(_0x504257);emitCampaignSummary(_0x504257);loggerSyncQueueSummary['error'](_0x4c5a45,util[_0x16ff('0x9c')](_0x2abf45,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x123d9f,_0x2f0d2f){return function(_0x4aa48d){loggerPredictive[_0x16ff('0x9d')](_0x2f0d2f[_0x16ff('0x44')],_0x123d9f);loggerPredictive['error'](_0x4aa48d[_0x16ff('0x9e')]);freeVariablesPredictive(_0x2f0d2f);};}function loggerCatch(_0x15d0a3){return function(_0x10c1ba){logger[_0x16ff('0x9d')](_0x15d0a3,util[_0x16ff('0x9c')](_0x10c1ba,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x248ee7){return _0x248ee7&&!_[_0x16ff('0x41')](_0x248ee7)&&_0x248ee7[_0x16ff('0x9f')]>0x0;}function decremetOriginate(_0x474dce){if(!_['isUndefined'](_0x474dce)&&_0x474dce!==null){if(typeof _0x474dce[_0x16ff('0xa0')]!==_0x16ff('0xa1')){if(_0x474dce['originated']>0x0){_0x474dce['originated']-=0x1;}else{logger[_0x16ff('0x9d')](_0x16ff('0xa2'));}}}else{logger[_0x16ff('0x9d')](_0x16ff('0xa3'));}}function checkContactLowerLimitOriginate(_0x584c8c,_0x4b142d,_0x133bd5){if(_0x4b142d>_0x133bd5){for(var _0x5d92c3=0x0;_0x5d92c3<_0x4b142d-_0x133bd5;_0x5d92c3+=0x1){decremetOriginate(_0x584c8c);}}}function loggerGetContactDialer(_0x53b8a2,_0x48fc94,_0x15e8ca){return function(_0x3cd1f3){checkContactLowerLimitOriginate(_0x48fc94,_0x15e8ca,0x0);logger[_0x16ff('0x9d')](_0x53b8a2,util['inspect'](_0x3cd1f3,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x22092f){return function(_0x1be218){if(isNotNull(_0x1be218)&&isNotNull(_0x1be218[0x0])){if(_0x1be218[0x0][_0x16ff('0xa4')]>0x0){_0x22092f['message']=_0x16ff('0xa5');logger['info'](_0x16ff('0xa6')+_0x22092f[_0x16ff('0x44')],_0x1be218[0x0][_0x16ff('0xa4')],_0x16ff('0xa7'));}else{_0x22092f[_0x16ff('0x42')]=_0x16ff('0xa8');logger[_0x16ff('0x82')]('[getContactDialer2][Empty]'+_0x22092f['name']);}}};}function notSendMessagesQueue(_0x45dd34){if(_0x45dd34['sendMessageOneNotActive']){freeVariablesPredictive(_0x45dd34);if(_0x45dd34[_0x16ff('0xa0')]===0x0&&_0x45dd34['talking']===0x0&&_0x45dd34['waiting']===0x0&&(_0x45dd34[_0x16ff('0xa9')]||0x0)===0x0){_0x45dd34[_0x16ff('0xaa')]=![];_0x45dd34['available']=0x0;_0x45dd34[_0x16ff('0x42')]=_0x16ff('0x45');loggerSyncQueueSummary[_0x16ff('0x9d')](_0x16ff('0xab'),_0x45dd34[_0x16ff('0x44')],_0x16ff('0xac'));}else{_0x45dd34[_0x16ff('0x42')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x16ff('0x9d')](_0x16ff('0xab'),_0x45dd34['name'],'is\x20disactive');}emitVoiceQueueSummary(_0x45dd34);}}function notSendMessagesCampaign(_0x2e57ed){if(_0x2e57ed[_0x16ff('0xaa')]){if(_0x2e57ed[_0x16ff('0xa0')]===0x0){_0x2e57ed[_0x16ff('0xaa')]=![];_0x2e57ed[_0x16ff('0x42')]=_0x16ff('0x45');loggerSyncQueueSummary[_0x16ff('0x9d')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x2e57ed[_0x16ff('0x44')],_0x16ff('0xac'));}else{_0x2e57ed[_0x16ff('0x42')]=_0x16ff('0xad');loggerSyncQueueSummary[_0x16ff('0x9d')](_0x16ff('0xae'),_0x2e57ed['name'],_0x16ff('0xaf'));}emitCampaignSummary(_0x2e57ed);}}function createObjHistory(_0x38c89a,_0x30737f,_0x4dfd90,_0x460088,_0x4c1a32){_0x38c89a[_0x16ff('0x42')]=_0x4dfd90;var _0x17596b=new Action(_0x38c89a,_0x30737f);var _0x364de5=new History(_0x17596b);_0x364de5[_0x16ff('0xb0')]=_0x460088;_0x364de5['statedesc']=_0x4c1a32;_0x364de5['endtime']=_0x17596b[_0x16ff('0xb1')];return _0x364de5;}Dialer[_0x16ff('0x1c')]['loopClearZombieChannels']=function(){var _0x5aa53f=this;setInterval(function(){_0x5aa53f[_0x16ff('0xb2')](_0x5aa53f['uniqueId'],_0x16ff('0xb3'));_0x5aa53f[_0x16ff('0xb2')](_0x5aa53f['actions'],_0x16ff('0xb4'));},0x32c8);};Dialer[_0x16ff('0x1c')]['clearZombieChannels']=function(_0x7d4581,_0x2a09be){var _0x351dc0=this;for(var _0x3c8d79 in _0x7d4581){if(typeof _0x7d4581[_0x3c8d79]!==_0x16ff('0xa1')){this[_0x16ff('0x20')]['enqueue'](function(){if(!_['isNil'](_0x7d4581[_0x3c8d79])){return ami[_0x16ff('0xb5')]({'action':_0x16ff('0xb6'),'channel':_0x7d4581[_0x3c8d79][_0x16ff('0xb7')]})[_0x16ff('0xb8')](function(_0x4a70f6){if(_0x4a70f6[_0x16ff('0x42')]===_0x16ff('0xb9')){setTimeout(function(){if(_0x7d4581[_0x3c8d79]&&_0x7d4581[_0x3c8d79][_0x16ff('0x52')]!==_0x16ff('0x80')){_0x351dc0[_0x16ff('0xba')](_0x351dc0[_0x16ff('0x22')][_0x7d4581[_0x3c8d79][_0x16ff('0xbb')]]);logger['error']('[Dialer][checkChannel]',_0x2a09be,_0x3c8d79,_0x7d4581[_0x3c8d79]['queue']);delete _0x7d4581[_0x3c8d79];}if(_0x7d4581[_0x3c8d79]&&_0x7d4581[_0x3c8d79][_0x16ff('0x52')]===_0x16ff('0x80')){_0x351dc0['updateOriginated'](_0x351dc0[_0x16ff('0x23')][_0x7d4581[_0x3c8d79][_0x16ff('0xbb')]]);logger['error'](_0x16ff('0xbc'),_0x2a09be,_0x3c8d79,_0x7d4581[_0x3c8d79][_0x16ff('0xbb')]);delete _0x7d4581[_0x3c8d79];}},0x2328);}});}});}}};Dialer[_0x16ff('0x1c')][_0x16ff('0xbd')]=function(_0x2ed50e){return BPromise['resolve']()['then'](cmHopper[_0x16ff('0xbd')](_0x2ed50e))['catch'](loggerCatch('[countReScheduled]\x20'));};Dialer[_0x16ff('0x1c')][_0x16ff('0xbe')]=function(_0x12a612){return BPromise[_0x16ff('0xbf')]()[_0x16ff('0xc0')](cmHopperBlack[_0x16ff('0xbe')](_0x12a612))[_0x16ff('0xb8')](loggerCatch(_0x16ff('0xc1')));};Dialer[_0x16ff('0x1c')][_0x16ff('0xc2')]=function(_0x4792f6){return BPromise[_0x16ff('0xbf')]()[_0x16ff('0xc0')](cmHopperBlack[_0x16ff('0xc2')](_0x4792f6))[_0x16ff('0xb8')](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer['prototype']['averageHandleTime']=function(_0x1a1da0){return BPromise[_0x16ff('0xbf')]()['then'](cmHopperHistory['avgHandleTime'](_0x1a1da0))[_0x16ff('0xb8')](loggerCatch('[averageHandleTime]\x20'));};Dialer[_0x16ff('0x1c')][_0x16ff('0xc3')]=function(_0x28b3f4){return BPromise[_0x16ff('0xbf')]()[_0x16ff('0xc0')](cmHopper['rescheduleContact'](_0x28b3f4))[_0x16ff('0xb8')](loggerCatch(_0x16ff('0xc4')));};Dialer['prototype']['unlockContact']=function(_0xc58225,_0x3d8550,_0x115634){return BPromise[_0x16ff('0xbf')]()['then'](cmHopper[_0x16ff('0xc5')](_0xc58225,_0x3d8550,_0x115634))[_0x16ff('0xb8')](loggerCatch('[unlockContact]\x20'));};Dialer[_0x16ff('0x1c')][_0x16ff('0xc6')]=function(_0x2530eb,_0x1af5f2,_0x400087,_0x9bb3be,_0x12938f){return BPromise[_0x16ff('0xbf')]()[_0x16ff('0xc0')](cmHopper[_0x16ff('0xc6')](_0x2530eb,_0x1af5f2,_0x400087,_0x9bb3be))['catch'](function(_0x21e867){_0x12938f[_0x16ff('0xc7')]-=_0x400087;_0x12938f[_0x16ff('0xc7')]=_0x12938f['temp']>0x0?_0x12938f[_0x16ff('0xc7')]:0x0;loggerCatch(_0x16ff('0xc8'))(_0x21e867);});};Dialer[_0x16ff('0x1c')][_0x16ff('0xc9')]=function(_0x4dbcff,_0x4c4e04,_0xd34ac6,_0x3bacd1){return BPromise[_0x16ff('0xbf')]()[_0x16ff('0xc0')](cmHopper[_0x16ff('0xc9')](_0x4dbcff,_0x4c4e04,_0xd34ac6))[_0x16ff('0xb8')](function(_0x1f0bd8){_0x3bacd1[_0x16ff('0xc7')]-=_0x4c4e04;_0x3bacd1['temp']=_0x3bacd1[_0x16ff('0xc7')]>0x0?_0x3bacd1['temp']:0x0;loggerCatch(_0x16ff('0xca'))(_0x1f0bd8);});};Dialer[_0x16ff('0x1c')][_0x16ff('0xcb')]=function(_0x254ca0){return BPromise[_0x16ff('0xbf')]()[_0x16ff('0xc0')](voiceQueueRt['getVoiceQueueRtPauses'](_0x254ca0))[_0x16ff('0xb8')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer[_0x16ff('0x1c')]['moveContactManagedDialer']=function(_0x2f5ec1){return BPromise['resolve']()[_0x16ff('0xc0')](cmHopper['moveContactManagedDialer'](_0x2f5ec1))[_0x16ff('0xb8')](loggerCatch(_0x16ff('0xcc')));};Dialer['prototype']['createHistory']=function(_0x30fc44){return BPromise[_0x16ff('0xbf')]()[_0x16ff('0xc0')](cmHopperHistory[_0x16ff('0xcd')](_0x30fc44))['catch'](loggerCatch(_0x16ff('0xce')));};Dialer[_0x16ff('0x1c')][_0x16ff('0xba')]=function(_0x1bb2ec){if(!_[_0x16ff('0x41')](_0x1bb2ec)&&_0x1bb2ec!==null){if(typeof _0x1bb2ec[_0x16ff('0xa0')]!==_0x16ff('0xa1')){if(_0x1bb2ec['originated']>0x0){_0x1bb2ec[_0x16ff('0xa0')]-=0x1;}else{logger[_0x16ff('0x9d')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x16ff('0x9d')](_0x16ff('0xcf'));}};Dialer[_0x16ff('0x1c')][_0x16ff('0xd0')]=function(_0x1ca41d,_0x4af7dd){var _0x1963dd=this;return function(_0x4b55b2){_0x1963dd[_0x16ff('0xba')](_0x4af7dd);logger[_0x16ff('0x9d')](_0x1ca41d,util[_0x16ff('0x9c')](_0x4b55b2,{'showHidden':![],'depth':null}));};};Dialer[_0x16ff('0x1c')]['emptyContact']=function(_0xa010dd,_0xf1ff6,_0x254c8d){var _0x5c0f77={'state':0x19,'statedesc':_0x16ff('0xd1')};this[_0x16ff('0xba')](_0xf1ff6);this[_0x16ff('0xd2')](_['merge'](_0x5c0f77,_[_0x16ff('0xd3')](_0x254c8d,[_0x16ff('0xd4'),'ListId','UserId',_0x16ff('0xd5'),'CampaignId'])),_0x16ff('0xd6'),_0x16ff('0xd7'));logger['error'](_0xa010dd);};Dialer['prototype'][_0x16ff('0xd8')]=function(_0xe0f29f){return _0xe0f29f===_0x16ff('0xd9');};Dialer[_0x16ff('0x1c')][_0x16ff('0xda')]=function(_0x18afb4){return!_[_0x16ff('0x41')](_0x18afb4)&&_0x18afb4&&!_[_0x16ff('0x41')](_0x18afb4[_0x16ff('0x44')])&&!_['isUndefined'](_0x18afb4[_0x16ff('0xdb')])&&_0x18afb4['active']&&(this[_0x16ff('0x25')][util[_0x16ff('0x7e')]('SIP/%s',_0x18afb4[_0x16ff('0x44')])][_0x16ff('0xb6')]===_0x16ff('0xdc')||this[_0x16ff('0x25')][util[_0x16ff('0x7e')](_0x16ff('0xdd'),_0x18afb4['name'])][_0x16ff('0xb6')]===_0x16ff('0xde'));};Dialer[_0x16ff('0x1c')][_0x16ff('0xd2')]=function(_0x1b4a1e,_0x3aa5fa,_0x45097e){this['createHistory'](_0x1b4a1e)[_0x16ff('0xb8')](loggerCatch(_0x3aa5fa));this[_0x16ff('0xdf')](_0x1b4a1e)[_0x16ff('0xb8')](loggerCatch(_0x45097e));};Dialer['prototype']['syncVarSet']=function(_0x2632ce){var _0x2f9732=this['uniqueId'][_0x2632ce[_0x16ff('0xe0')]];var _0xc4c085;if(!_[_0x16ff('0xe1')](_0x2632ce)&&!_['isNil'](_0x2632ce['variable'])&&!_[_0x16ff('0xe1')](_0x2632ce[_0x16ff('0xe2')][_0x16ff('0xe3')])&&_0x2632ce[_0x16ff('0xe4')]===_0x16ff('0xe5')&&_0x2f9732){if(_0x2f9732[_0x16ff('0x52')]!==_0x16ff('0x80')&&this[_0x16ff('0x22')][_0x2f9732['queue']]['dialAMDActive']&&_0x2632ce[_0x16ff('0xe6')]===_0x16ff('0xe7')){delete this[_0x16ff('0xe8')][_0x2632ce[_0x16ff('0xe0')]];this[_0x16ff('0xba')](this[_0x16ff('0x22')][_0x2f9732['queue']]);this[_0x16ff('0x22')][_0x2f9732['queue']][_0x16ff('0x63')]+=0x1;this[_0x16ff('0x22')][_0x2f9732[_0x16ff('0xbb')]][_0x16ff('0x62')]+=0x1;_0xc4c085=new Hangup(_0x2f9732,_0x2632ce);_0xc4c085[_0x16ff('0xb0')]=0x12;_0xc4c085[_0x16ff('0xe9')]=_0x16ff('0xea');_0xc4c085['membername']=_0x16ff('0xeb');ami[_0x16ff('0x51')](_0x16ff('0xec'),ut[_0x16ff('0xed')](_0xc4c085,'amd'));this[_0x16ff('0xd2')](_0xc4c085,_0x16ff('0xee'),_0x16ff('0xef'));}if(_0x2f9732[_0x16ff('0x52')]!==_0x16ff('0x80')&&this[_0x16ff('0x22')][_0x2f9732[_0x16ff('0xbb')]]['dialAMDActive']&&_0x2632ce[_0x16ff('0xe6')]===_0x16ff('0xf0')){var _0x359a6e=this;return new BPromise(function(_0x4cd053,_0x4a4532){delete _0x359a6e['uniqueId'][_0x2632ce[_0x16ff('0xe0')]];_0x359a6e['updateOriginated'](_0x359a6e[_0x16ff('0x22')][_0x2f9732[_0x16ff('0xbb')]]);_0x359a6e[_0x16ff('0x22')][_0x2f9732[_0x16ff('0xbb')]][_0x16ff('0x63')]+=0x1;_0x359a6e['voiceQueues'][_0x2f9732[_0x16ff('0xbb')]][_0x16ff('0x62')]+=0x1;var _0x9c18b5=_0x359a6e[_0x16ff('0x22')][_0x2f9732[_0x16ff('0xbb')]];var _0x6431a0=new Hangup(_0x2f9732,_0x2632ce);_0x6431a0[_0x16ff('0xb0')]=0x13;_0x6431a0[_0x16ff('0xe9')]=_0x16ff('0xf1');_0x6431a0[_0x16ff('0xf2')]='AMD';_0x6431a0['countmachineretry']+=0x1;_0x6431a0['countglobal']+=0x1;_0x6431a0[_0x16ff('0xf3')]=!![];ami[_0x16ff('0x51')](_0x16ff('0xec'),ut[_0x16ff('0xed')](_0x6431a0,_0x16ff('0xf3')));_0x359a6e[_0x16ff('0xcd')](_0x6431a0)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0xf4')));if(_0x6431a0['countbusyretry']+_0x6431a0[_0x16ff('0xf5')]+_0x6431a0[_0x16ff('0xf6')]+_0x6431a0[_0x16ff('0xf7')]+_0x6431a0[_0x16ff('0xf8')]+_0x6431a0['countabandonedretry']+_0x6431a0[_0x16ff('0xf9')]+_0x6431a0[_0x16ff('0xfa')]>=_0x9c18b5['dialGlobalMaxRetry']){_0x359a6e[_0x16ff('0xfb')](_0x6431a0,_0x4cd053,_0x4a4532,'reason19\x20machine....');}else{if(_0x6431a0['countmachineretry']>=_0x9c18b5['dialMachineMaxRetry']){_0x359a6e[_0x16ff('0xfc')](_0x6431a0,_0x4cd053,_0x4a4532,_0x16ff('0xfd'));}else{_0x359a6e[_0x16ff('0xc3')]({'active':![],'countmachineretry':_0x6431a0[_0x16ff('0xf9')],'scheduledat':moment()[_0x16ff('0xfe')](_0x9c18b5['dialMachineRetryFrequency'],_0x16ff('0xff'))[_0x16ff('0x7e')](_0x16ff('0x100')),'ContactId':_0x6431a0[_0x16ff('0xd4')],'ListId':_0x6431a0[_0x16ff('0x101')],'VoiceQueueId':_0x6431a0[_0x16ff('0xd5')]||undefined,'CampaignId':_0x6431a0[_0x16ff('0x102')]||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x103')));_0x4cd053({'reschedule':0x1});}}});}if(_0x2f9732[_0x16ff('0x52')]==='ivr'&&this['campaigns'][_0x2f9732[_0x16ff('0xbb')]][_0x16ff('0x104')]&&_0x2632ce['value']==='HANGUP'){delete this['uniqueId'][_0x2632ce['uniqueid']];this['updateOriginated'](this[_0x16ff('0x23')][_0x2f9732[_0x16ff('0xbb')]]);_0xc4c085=new Hangup(_0x2f9732,_0x2632ce);_0xc4c085[_0x16ff('0xb0')]=0x12;_0xc4c085['statedesc']='HangupInAMD';_0xc4c085[_0x16ff('0xf2')]=_0x16ff('0xeb');ami[_0x16ff('0x51')]('custom:amd',ut[_0x16ff('0xed')](_0xc4c085,_0x16ff('0xf3')));this[_0x16ff('0xd2')](_0xc4c085,'[syncHangupInAMDIvr][createHistory]',_0x16ff('0x105'));}if(_0x2f9732[_0x16ff('0x52')]==='ivr'&&this[_0x16ff('0x23')][_0x2f9732[_0x16ff('0xbb')]][_0x16ff('0x104')]&&_0x2632ce[_0x16ff('0xe6')]===_0x16ff('0xf0')){var _0x359a6e=this;return new BPromise(function(_0x5a871d,_0x540157){delete _0x359a6e[_0x16ff('0xe8')][_0x2632ce[_0x16ff('0xe0')]];_0x359a6e[_0x16ff('0xba')](_0x359a6e[_0x16ff('0x23')][_0x2f9732['queue']]);_0x359a6e[_0x16ff('0x23')][_0x2f9732['queue']][_0x16ff('0x63')]+=0x1;_0x359a6e['campaigns'][_0x2f9732[_0x16ff('0xbb')]][_0x16ff('0x62')]+=0x1;var _0x596d97=_0x359a6e['campaigns'][_0x2f9732[_0x16ff('0xbb')]];var _0x38aae9=new Hangup(_0x2f9732,_0x2632ce);_0x38aae9['state']=0x13;_0x38aae9['statedesc']=_0x16ff('0xf1');_0x38aae9[_0x16ff('0xf2')]=_0x16ff('0xeb');_0x38aae9['countmachineretry']+=0x1;_0x38aae9['countglobal']+=0x1;_0x38aae9[_0x16ff('0xf3')]=!![];ami[_0x16ff('0x51')](_0x16ff('0xec'),ut[_0x16ff('0xed')](_0x38aae9,_0x16ff('0xf3')));_0x359a6e[_0x16ff('0xcd')](_0x38aae9)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0xf4')));if(_0x38aae9[_0x16ff('0x106')]+_0x38aae9[_0x16ff('0xf5')]+_0x38aae9[_0x16ff('0xf6')]+_0x38aae9[_0x16ff('0xf7')]+_0x38aae9['countdropretry']+_0x38aae9[_0x16ff('0x107')]+_0x38aae9[_0x16ff('0xf9')]+_0x38aae9[_0x16ff('0xfa')]>=_0x596d97[_0x16ff('0x108')]){_0x359a6e[_0x16ff('0xfb')](_0x38aae9,_0x5a871d,_0x540157,_0x16ff('0x109'));}else{if(_0x38aae9[_0x16ff('0xf9')]>=_0x596d97[_0x16ff('0x10a')]){_0x359a6e['createStateFinal'](_0x38aae9,_0x5a871d,_0x540157,_0x16ff('0xfd'));}else{_0x359a6e[_0x16ff('0xc3')]({'active':![],'countmachineretry':_0x38aae9[_0x16ff('0xf9')],'scheduledat':moment()[_0x16ff('0xfe')](_0x596d97[_0x16ff('0x10b')],_0x16ff('0xff'))[_0x16ff('0x7e')](_0x16ff('0x100')),'ContactId':_0x38aae9['ContactId'],'ListId':_0x38aae9['ListId'],'VoiceQueueId':_0x38aae9['VoiceQueueId']||undefined,'CampaignId':_0x38aae9['CampaignId']||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x103')));_0x5a871d({'reschedule':0x1});}}});}}};Dialer[_0x16ff('0x1c')][_0x16ff('0x10c')]=function(_0x50ea74){var _0x55dc06=this[_0x16ff('0xe8')][_0x50ea74['uniqueid']];var _0x5a05e2=this;var _0x4b4606;if(_0x55dc06&&_0x55dc06['type']==='ivr'){delete this[_0x16ff('0xe8')][_0x50ea74[_0x16ff('0xe0')]];this[_0x16ff('0xba')](this[_0x16ff('0x23')][_0x55dc06[_0x16ff('0xbb')]]);this[_0x16ff('0x23')][_0x55dc06['queue']]['ivrAnswerCallsDay']+=0x1;_0x4b4606=new Hangup(_0x55dc06,_0x50ea74);this[_0x16ff('0xcd')](_0x4b4606)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x10d')));this[_0x16ff('0xdf')](_0x4b4606)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x10e')));}if(_0x55dc06&&_0x55dc06[_0x16ff('0x52')]!==_0x16ff('0x80')&&isNotNull(this[_0x16ff('0x22')][_0x55dc06[_0x16ff('0xbb')]][_0x16ff('0x10f')])){delete this[_0x16ff('0xe8')][_0x50ea74['uniqueid']];this[_0x16ff('0xba')](this['voiceQueues'][_0x55dc06['queue']]);this['voiceQueues'][_0x55dc06[_0x16ff('0xbb')]]['outboundAnswerCallsDay']+=0x1;this[_0x16ff('0x22')][_0x55dc06[_0x16ff('0xbb')]][_0x16ff('0x62')]+=0x1;_0x4b4606=new Hangup(_0x55dc06,_0x50ea74);_0x4b4606['state']=0x10;_0x4b4606[_0x16ff('0xe9')]='AnswerAGI';_0x4b4606['membername']=_0x16ff('0x110');this[_0x16ff('0xcd')](_0x4b4606)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x10d')));this[_0x16ff('0xdf')](_0x4b4606)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x10e')));}if(_0x55dc06&&_0x55dc06['type']!=='ivr'&&!isNotNull(this['voiceQueues'][_0x55dc06[_0x16ff('0xbb')]][_0x16ff('0x10f')])){delete this[_0x16ff('0xe8')][_0x50ea74['uniqueid']];this[_0x16ff('0xba')](this[_0x16ff('0x22')][_0x55dc06[_0x16ff('0xbb')]]);this[_0x16ff('0x22')][_0x55dc06[_0x16ff('0xbb')]]['outboundUnknownCallsDay']+=0x1;_0x4b4606=new Hangup(_0x55dc06,_0x50ea74);_0x4b4606[_0x16ff('0xb0')]=0xc;_0x4b4606['statedesc']=_0x50ea74[_0x16ff('0x111')];_0x4b4606['membername']=_0x16ff('0x112');this[_0x16ff('0xcd')](_0x4b4606)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x10d')));this[_0x16ff('0xdf')](_0x4b4606)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x10e')));}};Dialer[_0x16ff('0x1c')][_0x16ff('0x36')]=function(_0x24ea7c){var _0x5d9077=this[_0x16ff('0xe8')][_0x24ea7c[_0x16ff('0xe0')]];var _0x2f5565=this;if(this['voiceQueues'][_0x24ea7c[_0x16ff('0xbb')]]){if(_0x5d9077&&_0x5d9077[_0x16ff('0x52')]!==_0x16ff('0x80')){delete this[_0x16ff('0xe8')][_0x24ea7c['uniqueid']];this[_0x16ff('0x22')][_0x24ea7c[_0x16ff('0xbb')]][_0x16ff('0x63')]+=0x1;var _0x192f18=new AgentComplete(_0x5d9077,_0x24ea7c);if(_0x24ea7c[_0x16ff('0x113')]===_0x16ff('0x114')){_0x192f18[_0x16ff('0x115')]=this[_0x16ff('0x22')][_0x24ea7c[_0x16ff('0xbb')]]['dialQueueProject2']&&this[_0x16ff('0x22')][_0x24ea7c[_0x16ff('0xbb')]][_0x16ff('0x116')]?moment()[_0x16ff('0x7e')](_0x16ff('0x100')):undefined;}this[_0x16ff('0xcd')](_0x192f18)[_0x16ff('0xb8')](loggerCatch('[syncAgentComplete][createHistory]'));this[_0x16ff('0xdf')](_0x192f18)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x117')));}}};Dialer[_0x16ff('0x1c')][_0x16ff('0x2f')]=function(_0x118689){if(this[_0x16ff('0x22')][_0x118689[_0x16ff('0xbb')]]){if(this[_0x16ff('0xe8')][_0x118689[_0x16ff('0xe0')]]&&this[_0x16ff('0xe8')][_0x118689[_0x16ff('0xe0')]][_0x16ff('0x52')]!==_0x16ff('0x80')){this[_0x16ff('0xba')](this['voiceQueues'][_0x118689['queue']]);this[_0x16ff('0xe8')][_0x118689[_0x16ff('0xe0')]][_0x16ff('0x118')]=moment()[_0x16ff('0x7e')](_0x16ff('0x100'));}}};Dialer[_0x16ff('0x1c')][_0x16ff('0x119')]=function(_0x271f58){this[_0x16ff('0xcd')](_0x271f58)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x11a')));this[_0x16ff('0xdf')](_0x271f58)[_0x16ff('0xb8')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer[_0x16ff('0x1c')][_0x16ff('0x32')]=function(_0x440fc5){var _0x2a685c=this[_0x16ff('0xe8')][_0x440fc5[_0x16ff('0xe0')]];var _0x5a359d=this;if(this['voiceQueues'][_0x440fc5[_0x16ff('0xbb')]]){if(_0x2a685c&&_0x2a685c[_0x16ff('0x52')]!=='ivr'){delete this['uniqueId'][_0x440fc5[_0x16ff('0xe0')]];this[_0x16ff('0xba')](this[_0x16ff('0x22')][_0x440fc5[_0x16ff('0xbb')]]);_0x2a685c[_0x16ff('0x11b')]=moment()[_0x16ff('0x7e')]('YYYY-MM-DD\x20HH:mm:ss');var _0x1d0bf3=new QueueCallerAbandon(_0x2a685c,_0x440fc5);if(getSeconds(_0x2a685c['droptime'],_0x2a685c['responsetime'])>=_0x2a685c['dialQueueTimeout']){this[_0x16ff('0x22')][_0x440fc5['queue']]['predictiveIntervalDroppedCallsTimeout']+=0x1;this[_0x16ff('0x22')][_0x440fc5[_0x16ff('0xbb')]]['outboundDropCallsDayTimeout']+=0x1;this[_0x16ff('0x22')][_0x440fc5[_0x16ff('0xbb')]][_0x16ff('0x72')]+=0x1;_0x1d0bf3[_0x16ff('0xb0')]=0xa;_0x1d0bf3['statedesc']=_0x16ff('0x11c');_0x1d0bf3['dropreason']=_0x16ff('0x11d');_0x1d0bf3[_0x16ff('0x115')]=this[_0x16ff('0x22')][_0x440fc5['queue']][_0x16ff('0x11e')]?moment()['format'](_0x16ff('0x100')):undefined;_0x1d0bf3[_0x16ff('0xf8')]+=0x1;_0x1d0bf3[_0x16ff('0x11f')]+=0x1;if(_0x1d0bf3[_0x16ff('0xf8')]>=this[_0x16ff('0x22')][_0x440fc5[_0x16ff('0xbb')]][_0x16ff('0x120')]){this[_0x16ff('0x119')](_0x1d0bf3);}else{this[_0x16ff('0xc3')]({'active':![],'countdropretry':_0x1d0bf3[_0x16ff('0xf8')],'scheduledat':moment()['add'](this['voiceQueues'][_0x440fc5['queue']][_0x16ff('0x121')],'minutes')[_0x16ff('0x7e')](_0x16ff('0x100')),'ContactId':_0x2a685c[_0x16ff('0xd4')],'ListId':_0x2a685c[_0x16ff('0x101')],'VoiceQueueId':_0x2a685c[_0x16ff('0xd5')]||undefined,'CampaignId':_0x2a685c[_0x16ff('0x102')]||undefined})['catch'](loggerCatch(_0x16ff('0x122')));var _0x4c3b3c=new History(_0x1d0bf3);_0x4c3b3c[_0x16ff('0xb0')]=0xa;_0x4c3b3c[_0x16ff('0xe9')]=_0x16ff('0x11c');_0x4c3b3c[_0x16ff('0xb1')]=moment()[_0x16ff('0x7e')](_0x16ff('0x100'));_0x4c3b3c[_0x16ff('0x123')]=_0x4c3b3c[_0x16ff('0xb1')];_0x4c3b3c[_0x16ff('0x124')]=_0x1d0bf3[_0x16ff('0x124')];_0x4c3b3c[_0x16ff('0x125')]=_0x1d0bf3['calleridnum'];this['createHistory'](_0x4c3b3c)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x126')));}}else{this[_0x16ff('0x22')][_0x440fc5[_0x16ff('0xbb')]][_0x16ff('0x6f')]+=0x1;this[_0x16ff('0x22')][_0x440fc5[_0x16ff('0xbb')]]['outboundDropCallsDayCallersExit']+=0x1;_0x1d0bf3['state']=0xb;_0x1d0bf3['statedesc']='Abandoned';_0x1d0bf3[_0x16ff('0x127')]='CALLEREXIT';_0x1d0bf3[_0x16ff('0x107')]+=0x1;_0x1d0bf3['countglobal']+=0x1;if(_0x1d0bf3[_0x16ff('0x107')]>=this[_0x16ff('0x22')][_0x440fc5[_0x16ff('0xbb')]][_0x16ff('0x128')]){this[_0x16ff('0x119')](_0x1d0bf3);}else{this[_0x16ff('0xc3')]({'active':![],'countabandonedretry':_0x1d0bf3['countabandonedretry'],'scheduledat':moment()[_0x16ff('0xfe')](this['voiceQueues'][_0x440fc5[_0x16ff('0xbb')]]['dialAbandonedRetryFrequency'],_0x16ff('0xff'))[_0x16ff('0x7e')](_0x16ff('0x100')),'ContactId':_0x2a685c[_0x16ff('0xd4')],'ListId':_0x2a685c['ListId'],'VoiceQueueId':_0x2a685c[_0x16ff('0xd5')]||undefined,'CampaignId':_0x2a685c[_0x16ff('0x102')]||undefined})['catch'](loggerCatch('[rescheduleContact][Abandoned]'));var _0x4c3b3c=new History(_0x1d0bf3);_0x4c3b3c[_0x16ff('0xb0')]=0xb;_0x4c3b3c[_0x16ff('0xe9')]=_0x16ff('0x129');_0x4c3b3c[_0x16ff('0xb1')]=moment()[_0x16ff('0x7e')](_0x16ff('0x100'));_0x4c3b3c[_0x16ff('0x123')]=_0x4c3b3c[_0x16ff('0xb1')];_0x4c3b3c[_0x16ff('0x124')]=_0x1d0bf3[_0x16ff('0x124')];_0x4c3b3c[_0x16ff('0x125')]=_0x1d0bf3[_0x16ff('0x125')];this['createHistory'](_0x4c3b3c)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x12a')));}}}}};Dialer[_0x16ff('0x1c')][_0x16ff('0x3a')]=function(_0x4a8ea9){if(this[_0x16ff('0x28')][_0x4a8ea9['uniqueid']]){this['actions'][_0x4a8ea9[_0x16ff('0xe0')]][_0x16ff('0xb7')]=_0x4a8ea9[_0x16ff('0xb7')];}if(this[_0x16ff('0xe8')][_0x4a8ea9[_0x16ff('0xe0')]]){this[_0x16ff('0xe8')][_0x4a8ea9[_0x16ff('0xe0')]][_0x16ff('0xb7')]=_0x4a8ea9[_0x16ff('0xb7')];}};Dialer[_0x16ff('0x1c')][_0x16ff('0x3d')]=function(_0x1a36b1){if(strategy[this['voiceQueues'][this['actions'][_0x1a36b1[_0x16ff('0x12b')]][_0x16ff('0xbb')]][_0x16ff('0x12c')]]===_0x16ff('0x1b')){if(this[_0x16ff('0x28')][_0x1a36b1[_0x16ff('0x12b')]]&&_[_0x16ff('0xe1')](this[_0x16ff('0x28')][_0x1a36b1[_0x16ff('0x12b')]][_0x16ff('0x12d')])&&_0x1a36b1[_0x16ff('0xb6')]==='1'&&_0x1a36b1[_0x16ff('0x12e')]==='0'){if(this[_0x16ff('0x24')][_0x1a36b1[_0x16ff('0x12f')]]){if(!this['agents'][_0x1a36b1['stateinterface']][_0x16ff('0x12d')]){this[_0x16ff('0x24')][_0x1a36b1[_0x16ff('0x12f')]]['locked']=!![];this[_0x16ff('0x28')][_0x1a36b1[_0x16ff('0x12b')]][_0x16ff('0x12d')]=!![];this['actions'][_0x1a36b1[_0x16ff('0x12b')]][_0x16ff('0x12f')]=_0x1a36b1[_0x16ff('0x12f')];}}}}else if((strategy[this[_0x16ff('0x22')][this[_0x16ff('0x28')][_0x1a36b1[_0x16ff('0x12b')]][_0x16ff('0xbb')]][_0x16ff('0x12c')]]||'rrmemory')===_0x16ff('0x1a')){if(this['actions'][_0x1a36b1[_0x16ff('0x12b')]]){if(this[_0x16ff('0x24')][_0x1a36b1['stateinterface']]){this['actions'][_0x1a36b1[_0x16ff('0x12b')]]['stateinterface']=_0x1a36b1[_0x16ff('0x12f')];if(_[_0x16ff('0xe1')](this[_0x16ff('0x2d')][this['actions'][_0x1a36b1['actionid']][_0x16ff('0xbb')]])){this[_0x16ff('0x2d')][this[_0x16ff('0x28')][_0x1a36b1[_0x16ff('0x12b')]][_0x16ff('0xbb')]]=[];}this[_0x16ff('0x2d')][this[_0x16ff('0x28')][_0x1a36b1[_0x16ff('0x12b')]][_0x16ff('0xbb')]][_0x16ff('0x130')](_['merge'](_['pick'](this[_0x16ff('0x28')][_0x1a36b1[_0x16ff('0x12b')]],['idHopper',_0x16ff('0x12f')]),{'status':_0x1a36b1[_0x16ff('0xb6')],'paused':_0x1a36b1[_0x16ff('0x12e')]}));}}}};function unlockQueueStatus(_0x5ea398,_0x579520){setTimeout(function(){if(_['isUndefined'](_0x5ea398['queueStatusComplete'])){loggerBooked['error'](_0x16ff('0x131'),_0x579520);}_0x5ea398[_0x16ff('0x132')]=!![];loggerBooked[_0x16ff('0x82')]('[booked][unlockQueueStatus]',_0x579520,JSON['stringify'](_[_0x16ff('0xd3')](_0x5ea398,['name','queueStatusComplete'])));},0x1f3);}Dialer[_0x16ff('0x1c')][_0x16ff('0x3f')]=function(_0x4f8e9d){var _0x5c8770=this;var _0xe25cbf=_0x5c8770[_0x16ff('0x22')][_0x5c8770[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]];if(strategy[this[_0x16ff('0x22')][this['actions'][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]]['strategy']]===_0x16ff('0x1b')){if(this[_0x16ff('0x28')][_0x4f8e9d['actionid']]&&this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0x12f')]){this[_0x16ff('0x21')][_0x16ff('0x133')](this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]]['idHopper'],this[_0x16ff('0x28')][_0x4f8e9d['actionid']]['stateinterface'])['catch'](function(_0x5d80d2){logger[_0x16ff('0x9d')](_0x16ff('0x134'),util[_0x16ff('0x9c')](_0x5d80d2,{'showHidden':![],'depth':null}));})[_0x16ff('0x1f')](function(){_0x5c8770[_0x16ff('0xba')](_0x5c8770['voiceQueues'][_0x5c8770[_0x16ff('0x28')][_0x4f8e9d['actionid']]['queue']]);_0x5c8770[_0x16ff('0x24')][_0x5c8770[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0x12f')]][_0x16ff('0x12d')]=![];delete _0x5c8770[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]];unlockQueueStatus(_0xe25cbf);});}else{this[_0x16ff('0xba')](this[_0x16ff('0x22')][this[_0x16ff('0x28')][_0x4f8e9d['actionid']][_0x16ff('0xbb')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x16ff('0x28')][_0x4f8e9d['actionid']][_0x16ff('0xd4')],'ListId':this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]]['ListId'],'VoiceQueueId':this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xd5')]||undefined,'CampaignId':this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]]['CampaignId']||undefined})[_0x16ff('0xb8')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]];unlockQueueStatus(_0xe25cbf);}}else if((strategy[this[_0x16ff('0x22')][this['actions'][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]]['strategy']]||'rrmemory')===_0x16ff('0x1a')){var _0x5406e4;if(this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]]&&!_[_0x16ff('0x4a')](this[_0x16ff('0x2d')][this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]]['queue']])){if(this['queueBookedRR'][_0x5c8770[_0x16ff('0x28')][_0x4f8e9d['actionid']]['queue']]){this['queueBookedRR'][_0x5c8770[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]]=this[_0x16ff('0x135')][this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]]?this[_0x16ff('0x135')][this[_0x16ff('0x28')][_0x4f8e9d['actionid']][_0x16ff('0xbb')]]:this[_0x16ff('0x2d')][this['actions'][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]]?this[_0x16ff('0x2d')][this[_0x16ff('0x28')][_0x4f8e9d['actionid']]['queue']][_0x16ff('0x136')]||0x0:0x0;}this[_0x16ff('0x2d')][this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]][_0x16ff('0x136')]=this['queueBookedRR'][this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]];for(var _0x408789=0x0;_0x408789<this['queueBooked'][this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]]['queue']][_0x16ff('0x9f')];_0x408789+=0x1){_0x5406e4=rr(this[_0x16ff('0x2d')][this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]]);this[_0x16ff('0x135')][_0x5c8770['actions'][_0x4f8e9d['actionid']][_0x16ff('0xbb')]]=this['queueBooked'][this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]]['_rr'];if(_0x5406e4[_0x16ff('0xb6')]==='1'&&_0x5406e4[_0x16ff('0x12e')]==='0'){break;}}if(!_[_0x16ff('0xe1')](_0x5406e4)){this['agents'][_0x5406e4[_0x16ff('0x12f')]][_0x16ff('0x137')]=_['isUndefined'](this['agents'][_0x5406e4['stateinterface']][_0x16ff('0x137')])?!![]:this[_0x16ff('0x24')][_0x5406e4[_0x16ff('0x12f')]][_0x16ff('0x137')];}loggerBooked[_0x16ff('0x82')]('[booked][RR]',_0x4f8e9d['actionid'],_0x16ff('0x138'),JSON[_0x16ff('0x4e')](_[_0x16ff('0xd3')](this[_0x16ff('0x24')][_0x5406e4[_0x16ff('0x12f')]],[_0x16ff('0x44'),_0x16ff('0x137')])),'contactAgent-idHopper:\x20',JSON[_0x16ff('0x4e')](_0x5406e4[_0x16ff('0x139')]));if(!_[_0x16ff('0xe1')](_0x5406e4)&&_0x5406e4['status']==='1'&&_0x5406e4['paused']==='0'&&this['agents'][_0x5406e4[_0x16ff('0x12f')]][_0x16ff('0x137')]){this['agents'][_0x5406e4['stateinterface']][_0x16ff('0x137')]=![];this[_0x16ff('0x2d')][_0x5c8770[_0x16ff('0x28')][_0x4f8e9d['actionid']]['queue']]=[];this['preview'][_0x16ff('0x133')](_0x5406e4[_0x16ff('0x139')],_0x5406e4[_0x16ff('0x12f')])[_0x16ff('0xb8')](function(_0x53187e){logger['error'](_0x16ff('0x134'),util[_0x16ff('0x9c')](_0x53187e,{'showHidden':![],'depth':null}));})[_0x16ff('0x1f')](function(){_0x5c8770[_0x16ff('0xba')](_0x5c8770[_0x16ff('0x22')][_0x5c8770[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]]);setTimeout(function(){_0x5c8770[_0x16ff('0x24')][_0x5406e4[_0x16ff('0x12f')]][_0x16ff('0x137')]=!![];loggerBooked[_0x16ff('0x82')]('[booked][RR][finaly]',_0x4f8e9d[_0x16ff('0x12b')],_0x16ff('0x138'),JSON[_0x16ff('0x4e')](_[_0x16ff('0xd3')](_0x5c8770['agents'][_0x5406e4['stateinterface']],[_0x16ff('0x44'),'unlockRR'])),_0x16ff('0x13a'),JSON['stringify'](_0x5406e4['idHopper']));},0xc7);delete _0x5c8770[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]];unlockQueueStatus(_0xe25cbf,_0x4f8e9d[_0x16ff('0x12b')]);});}else{loggerBooked[_0x16ff('0x82')](_0x16ff('0x13b'));this[_0x16ff('0xba')](this[_0x16ff('0x22')][this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x16ff('0x28')][_0x4f8e9d['actionid']][_0x16ff('0xd4')],'ListId':this[_0x16ff('0x28')][_0x4f8e9d['actionid']][_0x16ff('0x101')],'VoiceQueueId':this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xd5')]||undefined,'CampaignId':this['actions'][_0x4f8e9d[_0x16ff('0x12b')]]['CampaignId']||undefined})[_0x16ff('0xb8')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]];unlockQueueStatus(_0xe25cbf);}}else{loggerBooked[_0x16ff('0x82')](_0x16ff('0x13c'));this[_0x16ff('0xba')](this[_0x16ff('0x22')][this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]]['queue']]);this[_0x16ff('0xc3')]({'active':![],'ContactId':this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]]['ContactId'],'ListId':this['actions'][_0x4f8e9d['actionid']][_0x16ff('0x101')],'VoiceQueueId':this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xd5')]||undefined,'CampaignId':this['actions'][_0x4f8e9d[_0x16ff('0x12b')]]['CampaignId']||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x13d')));delete this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]];unlockQueueStatus(_0xe25cbf);}}else{loggerBooked[_0x16ff('0x82')](_0x16ff('0x13e'));this[_0x16ff('0xba')](this[_0x16ff('0x22')][this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xbb')]]);this[_0x16ff('0xc3')]({'active':![],'ContactId':this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xd4')],'ListId':this[_0x16ff('0x28')][_0x4f8e9d['actionid']][_0x16ff('0x101')],'VoiceQueueId':this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]][_0x16ff('0xd5')]||undefined,'CampaignId':this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]]['CampaignId']||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x13f')));delete this[_0x16ff('0x28')][_0x4f8e9d[_0x16ff('0x12b')]];unlockQueueStatus(_0xe25cbf);}};Dialer['prototype']['loopCampaigns']=function(){var _0x4c62a2=this;setInterval(function(){_0x4c62a2[_0x16ff('0x140')]();},0x3e8);};Dialer[_0x16ff('0x1c')][_0x16ff('0x141')]=function(_0x14b1f3){var _0x11b7f5=this;return function(){if(!_0x11b7f5['isTrunkReachable'](_0x14b1f3['Trunk'])){if(!_0x11b7f5[_0x16ff('0xda')](_0x14b1f3[_0x16ff('0x142')])){_0x14b1f3[_0x16ff('0x42')]=_0x16ff('0x143');throw _0x14b1f3[_0x16ff('0x44')]+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer[_0x16ff('0x1c')][_0x16ff('0x144')]=function(_0x1c7fd0,_0x5c4cde,_0x4fe9c8,_0x25df3e){var _0xcaf31c=this;return function(){var _0x1ac8d2=!![];return _0xcaf31c[_0x16ff('0x145')](_0x1c7fd0,_0x5c4cde,_0x4fe9c8,_0x25df3e,_0x1ac8d2);};};Dialer[_0x16ff('0x1c')][_0x16ff('0x146')]=function(_0x2041a4,_0x1663fe,_0x194c51,_0x501d50){var _0x290dda=this;return function(){var _0x2706c9=![];return _0x290dda[_0x16ff('0x145')](_0x2041a4[_0x16ff('0x49')],_0x1663fe,_0x194c51,_0x501d50,_0x2706c9);};};Dialer['prototype'][_0x16ff('0x145')]=function(_0x288b5a,_0x41ff58,_0x162286,_0x4091f7,_0x1a1a6f){var _0x2627ca=[];return new BPromise(function(_0x56abd9,_0x372682){if(!isNotNull(_0x288b5a)){_0x4091f7[_0x16ff('0x42')]=_0x16ff('0x48');return _0x372682(msgResponse(_0x16ff('0x145'),_0x16ff('0x147'),_0x162286+_0x16ff('0x148')));}if(_['isEmpty'](_0x288b5a)){_0x4091f7[_0x16ff('0x42')]=_0x16ff('0x149');return _0x372682(msgResponse(_0x16ff('0x145'),_0x16ff('0x147'),_0x162286+_0x16ff('0x14a')));}if(_0x41ff58&&_[_0x16ff('0x41')](config[_0x16ff('0x14b')][_0x41ff58])){_0x4091f7['message']='TIMEZONE_UNKNOW';return _0x372682(msgResponse('ifTime',_0x16ff('0x147'),_0x162286+_0x16ff('0x14c')+_0x41ff58));}if(_[_0x16ff('0x14d')](_0x288b5a)){for(var _0x4cfe00=0x0;_0x4cfe00<_0x288b5a[_0x16ff('0x9f')];_0x4cfe00+=0x1){_0x2627ca[_0x16ff('0x130')](ami[_0x16ff('0xb5')]({'action':_0x16ff('0x14e'),'command':util['format'](_0x16ff('0x14f'),_0x288b5a[_0x4cfe00][_0x16ff('0x150')],!_[_0x16ff('0x41')](config[_0x16ff('0x14b')][_0x41ff58])?_0x41ff58:'')})[_0x16ff('0xc0')](function(_0x1d536a){return _0x1d536a[_0x16ff('0x151')][_0x16ff('0x152')](_0x16ff('0x153'))>=0x0;})[_0x16ff('0xb8')](myreject(_0x372682)));}}else{_0x2627ca[_0x16ff('0x130')](ami[_0x16ff('0xb5')]({'action':_0x16ff('0x14e'),'command':util['format'](_0x16ff('0x14f'),_0x288b5a,!_[_0x16ff('0x41')](config[_0x16ff('0x14b')][_0x41ff58])?_0x41ff58:'')})['then'](function(_0x33bba8){return _0x33bba8['content'][_0x16ff('0x152')](_0x16ff('0x153'))>=0x0;})[_0x16ff('0xb8')](myreject(_0x372682)));}BPromise[_0x16ff('0x154')](_0x2627ca)[_0x16ff('0xc0')](function(_0x456f44){var _0x419959=_[_0x16ff('0x155')](_0x456f44);if(_0x419959){return _0x56abd9(_0x419959);}else{_0x4091f7[_0x16ff('0x42')]=_0x1a1a6f?_0x16ff('0x156'):'INTERVAL_IS_OVERTIME';return _0x372682(msgResponse(_0x16ff('0x157'),_0x16ff('0x147'),_0x16ff('0x158')+_0x1a1a6f+'\x20'+_0x162286+_0x16ff('0x159')+util[_0x16ff('0x9c')](_0x288b5a,{'showHidden':![],'depth':null})+_0x16ff('0x15a')+_0x41ff58));}})[_0x16ff('0xb8')](function(_0x2e2558){return _0x372682(msgResponse(_0x16ff('0x145'),_0x16ff('0x147'),JSON[_0x16ff('0x4e')](_0x2e2558)));});});};Dialer[_0x16ff('0x1c')][_0x16ff('0x15b')]=function(_0x4ea489){var _0x10e241=this;return function(){switch(_0x4ea489[_0x16ff('0x5d')]){case _0x16ff('0x15c'):freeVariablesPredictive(_0x4ea489);_0x10e241[_0x16ff('0x15d')](_0x4ea489,0x1);break;case _0x16ff('0x15e'):freeVariablesPredictive(_0x4ea489);_0x10e241['handlePower'](_0x4ea489,_0x4ea489[_0x16ff('0x15f')]);break;case'predictive':_0x10e241['predictive'](_0x4ea489);break;case _0x16ff('0x160'):freeVariablesPredictive(_0x4ea489);_0x10e241['handlePower'](_0x4ea489,0x1);break;default:freeVariablesPredictive(_0x4ea489);logger[_0x16ff('0x9d')](_0x16ff('0x161'),_0x4ea489[_0x16ff('0x44')],_0x16ff('0x162'));}};};Dialer[_0x16ff('0x1c')][_0x16ff('0x163')]=function(_0x4fed4c){var _0x86a9c3=this;return function(){_0x86a9c3[_0x16ff('0x164')](_0x4fed4c);};};Dialer['prototype'][_0x16ff('0x9')]=function(_0x3e8ee4){var _0x23ce2d=this;if(isNotPreview(_0x3e8ee4['dialMethod'])){if(isVoiceQueueOutbound(_0x3e8ee4['type'])&&isActive(_0x3e8ee4[_0x16ff('0x5c')])){_0x3e8ee4[_0x16ff('0xaa')]=!![];BPromise[_0x16ff('0xbf')]()[_0x16ff('0xc0')](checkIsLoggedIn(_0x3e8ee4,_0x3e8ee4[_0x16ff('0x55')]))[_0x16ff('0xc0')](checkIsActive(_0x3e8ee4,_0x3e8ee4['dialActive']))[_0x16ff('0xc0')](checkInterval(_0x3e8ee4))['then'](_0x23ce2d[_0x16ff('0x141')](_0x3e8ee4))['then'](_0x23ce2d[_0x16ff('0x144')](_0x3e8ee4[_0x16ff('0x165')],_0x3e8ee4[_0x16ff('0x166')],_0x3e8ee4['name'],_0x3e8ee4))['then'](_0x23ce2d[_0x16ff('0x146')](_0x3e8ee4[_0x16ff('0x47')],_0x3e8ee4[_0x16ff('0x166')],_0x3e8ee4[_0x16ff('0x44')],_0x3e8ee4))['then'](_0x23ce2d[_0x16ff('0x15b')](_0x3e8ee4))[_0x16ff('0xb8')](loggerCatchQueueSummary('[syncQueueSummary]',_0x3e8ee4));}else{notSendMessagesQueue(_0x3e8ee4);}}else{freeVariablesPredictive(_0x3e8ee4);}};Dialer[_0x16ff('0x1c')]['syncCampaigns']=function(){var _0x418cbb=this;var _0x318fe5;for(var _0x4c8e9f in this['campaigns']){if(typeof this[_0x16ff('0x23')][_0x4c8e9f]!==_0x16ff('0xa1')){_0x318fe5=this[_0x16ff('0x23')][_0x4c8e9f];if(isCampaignIvr(_0x318fe5[_0x16ff('0x52')])&&isActive(_0x318fe5[_0x16ff('0xdb')])){_0x318fe5[_0x16ff('0xaa')]=!![];BPromise[_0x16ff('0xbf')]()[_0x16ff('0xc0')](checkIsActive(_0x318fe5,_0x318fe5[_0x16ff('0xdb')]))['then'](checkInterval(_0x318fe5))[_0x16ff('0xc0')](_0x418cbb[_0x16ff('0x141')](_0x318fe5))[_0x16ff('0xc0')](_0x418cbb[_0x16ff('0x144')](_0x318fe5['dialGlobalInterval'],_0x318fe5[_0x16ff('0x166')],_0x318fe5[_0x16ff('0x44')],_0x318fe5))[_0x16ff('0xc0')](_0x418cbb[_0x16ff('0x146')](_0x318fe5[_0x16ff('0x47')],_0x318fe5[_0x16ff('0x166')],_0x318fe5['name'],_0x318fe5))[_0x16ff('0xc0')](_0x418cbb[_0x16ff('0x163')](_0x318fe5))[_0x16ff('0xb8')](loggerCatchQueueSummary(_0x16ff('0x167'),_0x318fe5));}else{notSendMessagesCampaign(_0x318fe5);}}}};function getCallerIdRandom(_0x8350f9,_0x409b04){var _0x48a86f;var _0x26f9d5;var _0x155806;if(_0x409b04<=0x0){_0x409b04=0x1;}_0x48a86f=new RegExp(_0x16ff('0x168')+_0x409b04+'}$');_0x26f9d5=Math[_0x16ff('0x169')](0xa,_0x409b04-0x1);_0x155806=Math['pow'](0xa,_0x409b04)-0x1;return util['format']('%s',_[_0x16ff('0x16a')](_0x8350f9,_0x48a86f,_[_0x16ff('0x16b')](_0x26f9d5,_0x155806)));}function extractCalleridName(_0x3435bd){var _0xc008dc=_0x3435bd[_0x16ff('0x16c')](/"(.*?)"/);return _0xc008dc?_0xc008dc[0x1]:_0x3435bd;}function extractCalleridNumber(_0x3d00ff){var _0x57f79f=_0x3d00ff['match'](/<(.*?)>/);return _0x57f79f?_0x57f79f[0x1]:_0x3d00ff;}Dialer[_0x16ff('0x1c')][_0x16ff('0x16d')]=function(_0x27951c,_0x2e225a){var _0x21cc01=this;var _0x3f26bc=uuid['v4']();this[_0x16ff('0x28')][_0x3f26bc]=new Action(_0x27951c,_0x2e225a,_0x3f26bc);return new BPromise(function(_0x59a959,_0x229c03){if(_['isUndefined'](_0x27951c)&&typeof _0x27951c!==_0x16ff('0x16e')){return _0x229c03(msgResponse(_0x16ff('0x16f'),_0x16ff('0x147'),'voiceQueue\x20is\x20undefine'));}if(_[_0x16ff('0x41')](_0x2e225a[_0x16ff('0x170')][_0x16ff('0x171')])||_0x2e225a[_0x16ff('0x170')][_0x16ff('0x171')]===null){return _0x229c03(msgResponse(_0x16ff('0x16f'),_0x16ff('0x147'),'contact\x20is\x20undefine'));}var _0x3b32f9={'XMD-CALLERID':_0x21cc01[_0x16ff('0x28')][_0x3f26bc][_0x16ff('0x172')](),'XMD-AGI':_0x27951c[_0x16ff('0x10f')]?util[_0x16ff('0x7e')](_0x16ff('0x173'),ipAgi,_0x27951c[_0x16ff('0x10f')]):_0x16ff('0x174'),'XMD-AGIAFTER':_0x27951c[_0x16ff('0x11e')]?util[_0x16ff('0x7e')](_0x16ff('0x173'),ipAgi,_0x27951c[_0x16ff('0x11e')]):_0x16ff('0x174'),'XMD-QUEUE':_0x27951c[_0x16ff('0x52')]===_0x16ff('0x53')?util['format'](_0x16ff('0x175'),_0x27951c[_0x16ff('0x44')],_0x27951c[_0x16ff('0x176')]||'',_0x27951c[_0x16ff('0x116')]?'c':'',_0x27951c['dialQueueTimeout']||0x3):_0x16ff('0x174'),'XMD-CONTACTID':_0x2e225a[_0x16ff('0xd4')],'XMD-CDRTYPE':_0x16ff('0x7'),'CALLERID(all)':_0x21cc01[_0x16ff('0x28')][_0x3f26bc][_0x16ff('0x172')](),'XMD-AMD':_0x27951c[_0x16ff('0x104')]?_0x16ff('0x177'):_0x16ff('0x174'),'XMD-DESTINATION':_0x16ff('0xe5')};if(_0x27951c[_0x16ff('0x104')]){_0x3b32f9[_0x16ff('0x178')]=_0x27951c['dialAMDInitialSilence']||0x9c4;_0x3b32f9[_0x16ff('0x179')]=_0x27951c['dialAMDGreeting']||0x5dc;_0x3b32f9[_0x16ff('0x17a')]=_0x27951c[_0x16ff('0x17b')]||0x320;_0x3b32f9[_0x16ff('0x17c')]=_0x27951c['dialAMDTotalAnalysisTime']||0x1388;_0x3b32f9[_0x16ff('0x17d')]=_0x27951c[_0x16ff('0x17e')]||0x64;_0x3b32f9['XMD-AMDBETWEENWORDSSILENCE']=_0x27951c['dialAMDBetweenWordsSilence']||0x32;_0x3b32f9['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x27951c['dialAMDMaximumNumberOfWords']||0x3;_0x3b32f9['XMD-AMDSILENCETHRESHOLD']=_0x27951c[_0x16ff('0x17f')]||0x100;_0x3b32f9[_0x16ff('0x180')]=_0x27951c['dialAMDMaximumWordLength']||0x1388;}if(_0x27951c[_0x16ff('0x52')]==='outbound'){_0x3b32f9[_0x16ff('0x181')]=_0x2e225a[_0x16ff('0xd5')];}else{_0x3b32f9['XMD-CAMPAIGNID']=_0x2e225a[_0x16ff('0x102')];}for(var _0x5f5d1a in _0x2e225a[_0x16ff('0x170')]){if(typeof _0x2e225a[_0x16ff('0x170')][_0x5f5d1a]!=='undefined'){if(isNotNull(_0x2e225a[_0x16ff('0x170')][_0x5f5d1a])&&_0x5f5d1a!=='id'&&_0x5f5d1a!==_0x16ff('0x182')&&_0x5f5d1a!==_0x16ff('0x183')&&_0x5f5d1a!==_0x16ff('0x184')){_0x3b32f9[util['format'](_0x16ff('0x185'),'XMD-',_[_0x16ff('0x186')](_0x5f5d1a))]=_0x2e225a[_0x16ff('0x170')][_0x5f5d1a];}}}var _0x58fd3b=_0x21cc01[_0x16ff('0xda')](_0x27951c[_0x16ff('0x7b')])?getCallerId(_0x27951c[_0x16ff('0x7b')][_0x16ff('0x7c')],_0x27951c['dialOriginateCallerIdName'],_0x27951c[_0x16ff('0x187')]>0x0?getCallerIdRandom(_0x27951c[_0x16ff('0x5f')],_0x27951c[_0x16ff('0x187')]):_0x27951c[_0x16ff('0x5f')]):getCallerId(_[_0x16ff('0xe1')](_0x27951c[_0x16ff('0x142')])?_0x27951c[_0x16ff('0x7b')]['callerid']:_0x27951c[_0x16ff('0x142')][_0x16ff('0x7c')],_0x27951c['dialOriginateCallerIdName'],_0x27951c['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x27951c[_0x16ff('0x5f')],_0x27951c[_0x16ff('0x187')]):_0x27951c[_0x16ff('0x5f')]);if(_0x58fd3b){_0x3b32f9['XMD-ORIGINATECALLERIDNAME']=_0x21cc01[_0x16ff('0x28')][_0x3f26bc][_0x16ff('0x188')]=extractCalleridName(_0x58fd3b);_0x3b32f9[_0x16ff('0x189')]=_0x21cc01[_0x16ff('0x28')][_0x3f26bc][_0x16ff('0x18a')]=extractCalleridNumber(_0x58fd3b);}return ami[_0x16ff('0xb5')]({'actionid':_0x3f26bc,'action':_0x16ff('0x16f'),'channel':_0x21cc01[_0x16ff('0xda')](_0x27951c[_0x16ff('0x7b')])?util['format'](_0x16ff('0x18b'),_0x27951c[_0x16ff('0x7b')][_0x16ff('0x44')],isNotNull(_0x27951c[_0x16ff('0x61')])?_0x27951c[_0x16ff('0x61')]['trim']()||'':'',_0x27951c[_0x16ff('0x18c')]>0x0?_0x2e225a[_0x16ff('0x170')][_0x16ff('0x171')][_0x16ff('0x18d')](_0x27951c['dialCutDigit']):_0x2e225a[_0x16ff('0x170')][_0x16ff('0x171')]):util[_0x16ff('0x7e')](_0x16ff('0x18b'),_[_0x16ff('0xe1')](_0x27951c[_0x16ff('0x142')])?_0x27951c[_0x16ff('0x7b')][_0x16ff('0x44')]:_0x27951c['TrunkBackup'][_0x16ff('0x44')],isNotNull(_0x27951c[_0x16ff('0x61')])?_0x27951c[_0x16ff('0x61')]['trim']()||'':'',_0x27951c[_0x16ff('0x18c')]>0x0?_0x2e225a[_0x16ff('0x170')][_0x16ff('0x171')][_0x16ff('0x18d')](_0x27951c[_0x16ff('0x18c')]):_0x2e225a[_0x16ff('0x170')]['phone']),'callerid':_0x58fd3b,'Exten':'xcally-motion-dialer','Context':_0x16ff('0x18e'),'Priority':'1','variable':_0x3b32f9,'timeout':(_0x27951c[_0x16ff('0x60')]||0x1e)*0x3e8,'async':!![],'channelid':_0x3f26bc})[_0x16ff('0xc0')](function(_0x5c871c){return _0x59a959(_0x5c871c);})[_0x16ff('0xb8')](function(_0x56bcd3){_0x27951c[_0x16ff('0x69')]+=0x1;var _0x429263=new History(_0x21cc01[_0x16ff('0x28')][_0x3f26bc]);logger[_0x16ff('0x9d')](util[_0x16ff('0x7e')](_0x16ff('0x18f'),JSON['stringify'](_0x56bcd3)));_0x429263[_0x16ff('0xb0')]=0xe;_0x429263[_0x16ff('0xe9')]=_0x16ff('0x190');_0x429263['starttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x429263[_0x16ff('0x123')]=_0x429263[_0x16ff('0xb1')];_0x21cc01[_0x16ff('0xcd')](_0x429263)['catch'](loggerCatch(_0x16ff('0x191')));_0x21cc01[_0x16ff('0xdf')](_0x429263)['catch'](loggerCatch(_0x16ff('0x191')))[_0x16ff('0x1f')](function(){delete _0x21cc01[_0x16ff('0x28')][_0x3f26bc];return _0x229c03(msgResponse(_0x16ff('0x16f'),_0x16ff('0x4d'),_0x16ff('0x192')));});});});};Dialer[_0x16ff('0x1c')][_0x16ff('0x34')]=function(_0x16777e){var _0x3fc263=this[_0x16ff('0x28')][_0x16777e[_0x16ff('0x12b')]];if(_0x3fc263){delete this['actions'][_0x16777e['actionid']];_0x3fc263[_0x16ff('0x193')]=moment()['format'](_0x16ff('0x100'));var _0x509ca2=_0x3fc263[_0x16ff('0x52')]===_0x16ff('0x80')?this[_0x16ff('0x23')][_0x3fc263[_0x16ff('0xbb')]]:this[_0x16ff('0x22')][_0x3fc263[_0x16ff('0x194')]()];if(!this[_0x16ff('0xd8')](_0x16777e['response'])){this[_0x16ff('0xba')](_0x509ca2);return this[_0x16ff('0x195')](_0x3fc263,_0x509ca2,_0x16777e)[_0x16ff('0xb8')](loggerCatch('[callProgressDetecting]\x20'));}this[_0x16ff('0xe8')][_0x16777e[_0x16ff('0xe0')]]=_0x3fc263;}};Dialer['prototype'][_0x16ff('0x196')]=function(_0x92c313,_0x12af51,_0x21da54){var _0x31abf4=new History(_0x12af51);if(_0x31abf4[_0x16ff('0x106')]+_0x31abf4[_0x16ff('0xf5')]+_0x31abf4[_0x16ff('0xf6')]+_0x31abf4[_0x16ff('0xf7')]+_0x31abf4['countdropretry']+_0x31abf4['countabandonedretry']+_0x31abf4[_0x16ff('0xf9')]+_0x31abf4['countagentrejectretry']>=_0x21da54[_0x16ff('0x108')]-0x1){return!![];}switch(_0x92c313){case 0x3:if(_0x31abf4['countnoanswerretry']>=_0x21da54['dialNoAnswerMaxRetry']-0x1){return!![];}this[_0x16ff('0xc3')]({'active':![],'countnoanswerretry':_0x31abf4['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x16ff('0xfe')](_0x21da54[_0x16ff('0x197')],_0x16ff('0xff'))[_0x16ff('0x7e')](_0x16ff('0x100')),'ContactId':_0x31abf4[_0x16ff('0xd4')],'ListId':_0x31abf4[_0x16ff('0x101')],'VoiceQueueId':_0x31abf4[_0x16ff('0xd5')]||undefined,'CampaignId':_0x31abf4[_0x16ff('0x102')]||undefined})[_0x16ff('0xb8')](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x31abf4['countbusyretry']>=_0x21da54[_0x16ff('0x198')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x31abf4[_0x16ff('0x106')]+=0x1,'scheduledat':moment()['add'](_0x21da54[_0x16ff('0x199')],'minutes')['format'](_0x16ff('0x100')),'ContactId':_0x31abf4['ContactId'],'ListId':_0x31abf4[_0x16ff('0x101')],'VoiceQueueId':_0x31abf4[_0x16ff('0xd5')]||undefined,'CampaignId':_0x31abf4[_0x16ff('0x102')]||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x19a')));break;case 0x8:if(_0x31abf4[_0x16ff('0xf5')]>=_0x21da54[_0x16ff('0x19b')]-0x1){return!![];}this[_0x16ff('0xc3')]({'active':![],'countcongestionretry':_0x31abf4[_0x16ff('0xf5')]+=0x1,'scheduledat':moment()[_0x16ff('0xfe')](_0x21da54[_0x16ff('0x19c')],_0x16ff('0xff'))[_0x16ff('0x7e')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x31abf4['ContactId'],'ListId':_0x31abf4[_0x16ff('0x101')],'VoiceQueueId':_0x31abf4[_0x16ff('0xd5')]||undefined,'CampaignId':_0x31abf4[_0x16ff('0x102')]||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x19d')));break;case 0x0:if(_0x31abf4[_0x16ff('0xf7')]>=_0x21da54[_0x16ff('0x19e')]-0x1){return!![];}else{this[_0x16ff('0xc3')]({'active':![],'countnosuchnumberretry':_0x31abf4[_0x16ff('0xf7')]+=0x1,'scheduledat':moment()[_0x16ff('0xfe')](_0x21da54[_0x16ff('0x19f')],_0x16ff('0xff'))[_0x16ff('0x7e')](_0x16ff('0x100')),'ContactId':_0x31abf4['ContactId'],'ListId':_0x31abf4[_0x16ff('0x101')],'VoiceQueueId':_0x31abf4[_0x16ff('0xd5')]||undefined,'CampaignId':_0x31abf4[_0x16ff('0x102')]||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x1a0')));}break;case 0xa:if(_0x31abf4[_0x16ff('0xf8')]>=_0x21da54['dialDropMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countdropretry':_0x31abf4[_0x16ff('0xf8')]+=0x1,'scheduledat':moment()[_0x16ff('0xfe')](_0x21da54[_0x16ff('0x121')],_0x16ff('0xff'))[_0x16ff('0x7e')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x31abf4[_0x16ff('0xd4')],'ListId':_0x31abf4[_0x16ff('0x101')],'VoiceQueueId':_0x31abf4[_0x16ff('0xd5')]||undefined,'CampaignId':_0x31abf4['CampaignId']||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x122')));break;case 0xb:if(_0x31abf4[_0x16ff('0x107')]>=_0x21da54[_0x16ff('0x128')]-0x1){return!![];}this[_0x16ff('0xc3')]({'active':![],'countabandonedretry':_0x31abf4[_0x16ff('0x107')]+=0x1,'scheduledat':moment()[_0x16ff('0xfe')](_0x21da54['dialAbandonedRetryFrequency'],_0x16ff('0xff'))[_0x16ff('0x7e')](_0x16ff('0x100')),'ContactId':_0x31abf4['ContactId'],'ListId':_0x31abf4[_0x16ff('0x101')],'VoiceQueueId':_0x31abf4[_0x16ff('0xd5')]||undefined,'CampaignId':_0x31abf4[_0x16ff('0x102')]||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x1a1')));break;case 0x13:if(_0x31abf4[_0x16ff('0xf9')]>=_0x21da54[_0x16ff('0x10a')]-0x1){return!![];}this[_0x16ff('0xc3')]({'active':![],'countmachineretry':_0x31abf4[_0x16ff('0xf9')]+=0x1,'scheduledat':moment()[_0x16ff('0xfe')](_0x21da54['dialMachineRetryFrequency'],'minutes')[_0x16ff('0x7e')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x31abf4[_0x16ff('0xd4')],'ListId':_0x31abf4[_0x16ff('0x101')],'VoiceQueueId':_0x31abf4[_0x16ff('0xd5')]||undefined,'CampaignId':_0x31abf4[_0x16ff('0x102')]||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x103')));break;case 0x14:if(_0x31abf4[_0x16ff('0xfa')]>=_0x21da54[_0x16ff('0x1a2')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x31abf4[_0x16ff('0xfa')]+=0x1,'scheduledat':moment()['add'](_0x21da54[_0x16ff('0x1a3')],_0x16ff('0xff'))['format'](_0x16ff('0x100')),'ContactId':_0x31abf4['ContactId'],'ListId':_0x31abf4[_0x16ff('0x101')],'VoiceQueueId':_0x31abf4[_0x16ff('0xd5')]||undefined,'CampaignId':_0x31abf4[_0x16ff('0x102')]||undefined})['catch'](loggerCatch(_0x16ff('0x1a4')));break;default:return!![];}};Dialer[_0x16ff('0x1c')]['callProgressDetecting']=function(_0xd5e078,_0x1d3e63,_0x11f6a0){var _0x1278bb=this;var _0x46cacb=new History(_0xd5e078);return new BPromise(function(_0x5214ab,_0xf31637){if(_[_0x16ff('0x41')](_0x1d3e63)&&typeof _0x1d3e63!==_0x16ff('0x16e')){return _0xf31637(msgResponse('[callProgressDetecting]','Failure',_0x16ff('0x1a5')));}if(_[_0x16ff('0x41')](_0x11f6a0)&&typeof _0x11f6a0!=='object'){return _0xf31637(msgResponse(_0x16ff('0x1a6'),_0x16ff('0x147'),_0x16ff('0x1a7')));}switch(_0x11f6a0[_0x16ff('0x113')]){case'0':_0x1d3e63[_0x16ff('0x68')]+=0x1;_0x46cacb[_0x16ff('0xb0')]=0x0;_0x46cacb[_0x16ff('0xe9')]=_0x16ff('0x1a8');_0x46cacb[_0x16ff('0xf7')]+=0x1;_0x46cacb[_0x16ff('0x11f')]+=0x1;ami[_0x16ff('0x51')](_0x16ff('0x1a9'),ut[_0x16ff('0xed')](_0xd5e078,_0x16ff('0x1aa')));_0x1278bb[_0x16ff('0xcd')](_0x46cacb)['catch'](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x1278bb[_0x16ff('0x196')](0x0,_0xd5e078,_0x1d3e63)){if(_0x46cacb[_0x16ff('0xf7')]>=_0x1d3e63[_0x16ff('0x19e')]){_0x1278bb[_0x16ff('0xfc')](_0x46cacb,_0x5214ab,_0xf31637,_0x16ff('0x1ab'));}else{_0x1278bb[_0x16ff('0xfb')](_0x46cacb,_0x5214ab,_0xf31637,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x1d3e63['outboundNoAnswerCallsDay']+=0x1;_0x46cacb['state']=0x3;_0x46cacb[_0x16ff('0xe9')]=_0x16ff('0x1ac');_0x46cacb[_0x16ff('0xf6')]+=0x1;_0x46cacb[_0x16ff('0x11f')]+=0x1;ami[_0x16ff('0x51')](_0x16ff('0x1ad'),ut[_0x16ff('0xed')](_0xd5e078,_0x16ff('0x1ae')));_0x1278bb[_0x16ff('0xcd')](_0x46cacb)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x1af')));if(_0x1278bb[_0x16ff('0x196')](0x3,_0xd5e078,_0x1d3e63)){if(_0x46cacb[_0x16ff('0xf6')]>=_0x1d3e63[_0x16ff('0x1b0')]){_0x1278bb[_0x16ff('0xfc')](_0x46cacb,_0x5214ab,_0xf31637,'reason\x203\x20ringing\x20no\x20answer');}else{_0x1278bb[_0x16ff('0xfb')](_0x46cacb,_0x5214ab,_0xf31637,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x1d3e63[_0x16ff('0x65')]+=0x1;_0x46cacb[_0x16ff('0xb0')]=0x5;_0x46cacb[_0x16ff('0xe9')]=_0x16ff('0x1b1');_0x46cacb['countbusyretry']+=0x1;_0x46cacb['countglobal']+=0x1;ami['emit']('custom:agentbusy',ut[_0x16ff('0xed')](_0xd5e078,_0x16ff('0x1b2')));_0x1278bb['createHistory'](_0x46cacb)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x1b3')));if(_0x1278bb[_0x16ff('0x196')](0x5,_0xd5e078,_0x1d3e63)){if(_0x46cacb[_0x16ff('0x106')]>=_0x1d3e63[_0x16ff('0x198')]){_0x1278bb[_0x16ff('0xfc')](_0x46cacb,_0x5214ab,_0xf31637,'reason\x205\x20busy');}else{_0x1278bb[_0x16ff('0xfb')](_0x46cacb,_0x5214ab,_0xf31637,_0x16ff('0x1b4'));}}break;case'8':_0x1d3e63[_0x16ff('0x66')]+=0x1;_0x46cacb[_0x16ff('0xb0')]=0x8;_0x46cacb[_0x16ff('0xe9')]=_0x16ff('0x1b5');_0x46cacb[_0x16ff('0xf5')]+=0x1;_0x46cacb[_0x16ff('0x11f')]+=0x1;ami[_0x16ff('0x51')](_0x16ff('0x1b6'),ut[_0x16ff('0xed')](_0xd5e078,_0x16ff('0x1b7')));_0x1278bb[_0x16ff('0xcd')](_0x46cacb)['catch'](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x1278bb[_0x16ff('0x196')](0x8,_0xd5e078,_0x1d3e63)){if(_0x46cacb['countcongestionretry']>=_0x1d3e63['dialCongestionMaxRetry']){_0x1278bb[_0x16ff('0xfc')](_0x46cacb,_0x5214ab,_0xf31637,_0x16ff('0x1b8'));}else{_0x1278bb[_0x16ff('0xfb')](_0x46cacb,_0x5214ab,_0xf31637,'reason\x208\x20congestion');}}break;case'11':_0x1d3e63[_0x16ff('0x1b9')]+=0x1;_0x46cacb[_0x16ff('0xb0')]=0xb;_0x46cacb['statedesc']=_0x16ff('0x129');_0x46cacb[_0x16ff('0x107')]+=0x1;_0x46cacb[_0x16ff('0x11f')]+=0x1;_0x1278bb['createHistory'](_0x46cacb)['catch'](loggerCatch(_0x16ff('0x12a')));if(_0x1278bb[_0x16ff('0x196')](0xb,_0xd5e078,_0x1d3e63)){if(_0x46cacb[_0x16ff('0x107')]>=_0x1d3e63[_0x16ff('0x128')]){_0x1278bb['createStateFinal'](_0x46cacb,_0x5214ab,_0xf31637,'reason\x2011\x20abandoned');}else{_0x1278bb[_0x16ff('0xfb')](_0x46cacb,_0x5214ab,_0xf31637,_0x16ff('0x1ba'));}}break;case'20':_0x1d3e63[_0x16ff('0x6b')]+=0x1;_0x46cacb[_0x16ff('0xb0')]=0x14;_0x46cacb[_0x16ff('0xe9')]=_0x16ff('0x1bb');_0x46cacb[_0x16ff('0xfa')]+=0x1;_0x46cacb[_0x16ff('0x11f')]+=0x1;ami[_0x16ff('0x51')](_0x16ff('0x1bc'),ut[_0x16ff('0xed')](_0xd5e078,_0x16ff('0x1bd')));_0x1278bb['createHistory'](_0x46cacb)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x1be')));if(_0x1278bb[_0x16ff('0x196')](0x14,_0xd5e078,_0x1d3e63)){if(_0x46cacb[_0x16ff('0xfa')]>=_0x1d3e63[_0x16ff('0x1a2')]){_0x1278bb[_0x16ff('0xfc')](_0x46cacb,_0x5214ab,_0xf31637,_0x16ff('0x1bf'));}else{_0x1278bb[_0x16ff('0xfb')](_0x46cacb,_0x5214ab,_0xf31637,'reason\x2020\x20agentreject');}}break;default:_0x1d3e63[_0x16ff('0x6c')]+=0x1;_0x46cacb['state']=0xc;_0x46cacb['statedesc']=_0x11f6a0[_0x16ff('0x113')];_0x1278bb[_0x16ff('0xcd')](_0x46cacb)[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x1c0')));if(_0x1278bb['checkRetriveMax'](_0x11f6a0[_0x16ff('0x113')],_0xd5e078,_0x1d3e63)){if(_0x46cacb[_0x16ff('0x106')]+_0x46cacb[_0x16ff('0xf5')]+_0x46cacb[_0x16ff('0xf6')]+_0x46cacb[_0x16ff('0xf7')]+_0x46cacb[_0x16ff('0xf8')]+_0x46cacb[_0x16ff('0x107')]+_0x46cacb[_0x16ff('0xf9')]+_0x46cacb[_0x16ff('0xfa')]>=_0x1d3e63[_0x16ff('0x108')]){_0x1278bb[_0x16ff('0xfb')](_0x46cacb,_0x5214ab,_0xf31637,_0x11f6a0['reason']);}else{_0x1278bb[_0x16ff('0xfc')](_0x46cacb,_0x5214ab,_0xf31637,_0x11f6a0['reason']);}}}});};Dialer['prototype']['stateGlobal']=function(_0x4aaf1c,_0x549389,_0x3edee4,_0x511ee5){var _0x958b1b=new Final(_0x4aaf1c);_0x958b1b[_0x16ff('0xb0')]=0xf;_0x958b1b[_0x16ff('0xe9')]=_0x16ff('0x1c1');this[_0x16ff('0xfc')](_0x958b1b,_0x549389,_0x3edee4,_0x511ee5);};Dialer[_0x16ff('0x1c')][_0x16ff('0xfc')]=function(_0x381bc1,_0x5c1150,_0x1e9f51,_0x50077e){this[_0x16ff('0xdf')](_0x381bc1)[_0x16ff('0xc0')](function(){return _0x5c1150(msgResponse('[callProgressDetecting]','Success',_0x50077e));})[_0x16ff('0xb8')](function(){return _0x1e9f51(msgResponse(_0x16ff('0x1c2'),_0x16ff('0x147'),_0x16ff('0x1c3')));});};Dialer['prototype'][_0x16ff('0x1c4')]=function(_0x5ac14e){var _0x757748=_0x5ac14e[_0x16ff('0x1c5')]/0x64;var _0x2930ec=_0x5ac14e[_0x16ff('0x1c6')]/(_0x5ac14e[_0x16ff('0x1c6')]+_0x5ac14e['outboundAnswerCallsDay']);var _0x336f8c=Math['round'](_0x5ac14e[_0x16ff('0x76')]*(_0x5ac14e[_0x16ff('0x1c7')]/0x64));var _0x24a8e2=Math[_0x16ff('0x1c8')](_0x5ac14e['predictiveIntervalAvailable']*(_0x5ac14e[_0x16ff('0x1c9')]/0x64));var _0x4cb220=_0x5ac14e[_0x16ff('0x1ca')]+_0x5ac14e[_0x16ff('0x58')];var _0x1a0577=Math[_0x16ff('0x1cb')](_0x5ac14e['erlangCalls']*_0x5ac14e[_0x16ff('0x78')]*_0x5ac14e[_0x16ff('0x73')]*_0x5ac14e[_0x16ff('0x74')]);if(_[_0x16ff('0x41')](_0x5ac14e[_0x16ff('0x2b')])){if(!_['isUndefined'](_0x5ac14e[_0x16ff('0x7a')])){_0x5ac14e[_0x16ff('0x7a')]=undefined;loggerPredictive[_0x16ff('0x9d')](_0x16ff('0x1cc'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_[_0x16ff('0x41')](_0x5ac14e[_0x16ff('0x97')])){loggerPredictive[_0x16ff('0x9d')](_0x16ff('0x1cc'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x5ac14e[_0x16ff('0x97')]);_0x5ac14e[_0x16ff('0x97')]=undefined;}_0x5ac14e[_0x16ff('0x2b')]=moment()[_0x16ff('0x7e')](_0x16ff('0x100'));loggerPredictive['info'](_0x5ac14e[_0x16ff('0x44')],'collection\x20data\x20in\x20progressive\x20at',_0x5ac14e[_0x16ff('0x2b')]);this['handlePower'](_0x5ac14e,0x1);}else if(ifInterval(_0x5ac14e[_0x16ff('0x1cd')],_0x5ac14e[_0x16ff('0x2b')])){this['handlePower'](_0x5ac14e,0x1);loggerPredictiveCalls[_0x16ff('0x82')](_0x16ff('0x1ce'),_0x5ac14e[_0x16ff('0x2b')],_0x5ac14e['name']);_0x5ac14e[_0x16ff('0x77')]=0x0;_0x5ac14e[_0x16ff('0x72')]=0x0;}else if(_0x757748<_0x2930ec&&_0x5ac14e['dialPredictiveOptimization']===_0x16ff('0x1cf')){freeVariablesPredictive(_0x5ac14e);loggerPredictive[_0x16ff('0x82')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0x16ff('0x1d0'),_0x2930ec,_0x16ff('0x2b'),_0x5ac14e['name']);}else if(_0x1a0577<_0x5ac14e['predictiveIntervalErlangCallsDroppedCalls']&&_0x5ac14e[_0x16ff('0x1d1')]===_0x16ff('0x1cf')){freeVariablesPredictive(_0x5ac14e);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x1d2'),_0x16ff('0x1d3'),_0x1a0577,'Drop\x20in\x20this\x20interval',_0x5ac14e[_0x16ff('0x72')],_0x16ff('0x2b'),_0x5ac14e[_0x16ff('0x44')]);}else if(!ifInterval(_0x5ac14e['dialPredictiveInterval'],_0x5ac14e[_0x16ff('0x2b')])&&_['isUndefined'](_0x5ac14e[_0x16ff('0x7a')])&&!_[_0x16ff('0x41')](_0x5ac14e[_0x16ff('0x2b')])){_0x5ac14e[_0x16ff('0x7a')]=moment()[_0x16ff('0x7e')](_0x16ff('0x100'));loggerPredictive[_0x16ff('0x82')](_0x5ac14e[_0x16ff('0x44')],'started\x20in\x20predictive\x20at',_0x5ac14e[_0x16ff('0x7a')]);this[_0x16ff('0x1d4')](_0x5ac14e[_0x16ff('0x1cd')])[_0x16ff('0xc0')](this[_0x16ff('0x1d5')](_0x5ac14e))['then'](mergeDataErlangB(_0x5ac14e))['then'](this[_0x16ff('0x1d6')](_0x5ac14e))[_0x16ff('0xb8')](loggerCatchPredictive(_0x16ff('0x1d7'),_0x5ac14e));}else if(!ifInterval(_0x5ac14e['dialPredictiveInterval'],_0x5ac14e['startPredictive'])){_0x5ac14e[_0x16ff('0x72')]=0x0;_0x5ac14e[_0x16ff('0x7a')]=moment()[_0x16ff('0x7e')](_0x16ff('0x100'));loggerPredictive[_0x16ff('0x82')](_0x5ac14e[_0x16ff('0x44')],_0x16ff('0x1d8'),_0x5ac14e[_0x16ff('0x7a')]);clearInterval(_0x5ac14e[_0x16ff('0x97')]);_0x5ac14e[_0x16ff('0x97')]=undefined;this[_0x16ff('0x1d4')](_0x5ac14e[_0x16ff('0x1cd')])[_0x16ff('0xc0')](this[_0x16ff('0x1d5')](_0x5ac14e))[_0x16ff('0xc0')](mergeDataErlangB(_0x5ac14e))[_0x16ff('0xc0')](this[_0x16ff('0x1d6')](_0x5ac14e))[_0x16ff('0xb8')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x5ac14e));}else if(_0x5ac14e[_0x16ff('0x76')]&&_0x4cb220<_0x5ac14e[_0x16ff('0x76')]-_0x24a8e2){freeVariablesPredictive(_0x5ac14e);loggerPredictive[_0x16ff('0x82')](_0x5ac14e[_0x16ff('0x44')],_0x16ff('0x1d9'),_0x4cb220,_0x16ff('0x1da'),_0x5ac14e[_0x16ff('0x76')],'-',_0x24a8e2,'=',_0x5ac14e[_0x16ff('0x76')]-_0x24a8e2,')');}else if(_0x5ac14e[_0x16ff('0x76')]&&_0x4cb220>_0x5ac14e['predictiveIntervalAvailable']+_0x336f8c){freeVariablesPredictive(_0x5ac14e);loggerPredictive[_0x16ff('0x82')](_0x5ac14e[_0x16ff('0x44')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x4cb220,_0x16ff('0x1db'),_0x5ac14e[_0x16ff('0x76')],'+',_0x336f8c,'=',_0x5ac14e[_0x16ff('0x76')]+_0x336f8c,')');}};Dialer['prototype']['getDataPredictive']=function(_0x27e2a6){var _0x2dc0fb=this;return function(_0xc98861){return new BPromise(function(_0x401284,_0x19e05f){_[_0x16ff('0x93')](_0x27e2a6,_0xc98861[0x0]);if(checkGetDataPredictive(_0xc98861[0x0])){var _0x2d0120=_0x27e2a6[_0x16ff('0x76')]=_0x27e2a6[_0x16ff('0x58')]+_0x27e2a6[_0x16ff('0x1ca')];var _0x391d6d=_0x27e2a6[_0x16ff('0x1cd')]*0x3c;var _0x5b4793=_0xc98861[0x0][_0x16ff('0x6e')]+_0xc98861[0x0][_0x16ff('0x86')];var _0x164a24=(_0xc98861[0x0][_0x16ff('0x6d')]+_0xc98861[0x0]['predictiveIntervalDroppedCallsTimeout']+_0xc98861[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0xc98861[0x0]['predictiveIntervalTotalCalls'];_0x27e2a6[_0x16ff('0x73')]=_0x164a24>0x0?_0x164a24:0x1;switch(_0x27e2a6['dialPredictiveOptimization']){case _0x16ff('0x1cf'):var _0x3fcedf=_0x27e2a6[_0x16ff('0x1c5')]/0x64;return _0x2dc0fb[_0x16ff('0x1dc')](_0x2d0120,_0x391d6d,_0x5b4793,_0x164a24,_0x3fcedf)[_0x16ff('0xc0')](function(_0x9a5936){return _0x401284(_0x9a5936);});case'agentBusyFactor':var _0x228713=_0x27e2a6['dialPredictiveOptimizationPercentage']/0x64;return _0x2dc0fb['busyFactor'](_0x2d0120,_0x391d6d,_0x5b4793,_0x164a24,_0x228713)[_0x16ff('0xc0')](function(_0x1cdaf9){return _0x401284(_0x1cdaf9);});default:return _0x19e05f(msgResponse(_0x16ff('0x1dd'),_0x16ff('0x147'),_0x16ff('0x1de')));}}else{return _0x19e05f(msgResponse(_0x16ff('0x1dd'),_0x16ff('0x147'),_0x16ff('0x1df')));}});};};Dialer[_0x16ff('0x1c')][_0x16ff('0x1e0')]=function(_0x5ae9db){var _0x5587e5=this;return function(_0x5e8fb7){return new BPromise(function(_0x2cf439,_0x55e796){_[_0x16ff('0x93')](_0x5ae9db,_0x5e8fb7[0x0]);if(checkGetDataPredictive(_0x5e8fb7[0x0])){loggerPredictive[_0x16ff('0x82')](JSON[_0x16ff('0x4e')](_0x5e8fb7[0x0]));if(_0x5ae9db[_0x16ff('0x1d1')]===_0x16ff('0x1cf')){return _0x5587e5[_0x16ff('0xcb')](_0x5ae9db['id'])[_0x16ff('0xc0')](function(_0x18ecd8){var _0x291653=_0x5ae9db[_0x16ff('0x55')]-_0x18ecd8[0x0]['outboundQueuePauses'];var _0x51fb38=_0x5ae9db[_0x16ff('0x1cd')]*0x3c;var _0x3ede40=_0x5e8fb7[0x0][_0x16ff('0x6e')]+_0x5e8fb7[0x0][_0x16ff('0x86')];var _0x54b278=(_0x5e8fb7[0x0][_0x16ff('0x6d')]+_0x5e8fb7[0x0][_0x16ff('0x70')]+_0x5e8fb7[0x0][_0x16ff('0x6f')])/_0x5e8fb7[0x0][_0x16ff('0x89')];var _0x511a20=_0x5ae9db[_0x16ff('0x1c5')]/0x64;_0x5ae9db[_0x16ff('0x75')]=_0x18ecd8[0x0][_0x16ff('0x1e1')]||0x0;_0x5ae9db['predictiveIntervalHitRate']=_0x54b278>0x0?_0x54b278:0x1;return _0x5587e5[_0x16ff('0x1dc')](_0x291653,_0x51fb38,_0x3ede40,_0x54b278,_0x511a20);})[_0x16ff('0xc0')](function(_0x4bcfc){return _0x2cf439(_0x4bcfc);})['catch'](function(_0x4dd530){return _0x55e796(msgResponse('[CatchErlangB]',_0x16ff('0x147'),JSON['stringify'](_0x4dd530)));});}if(_0x5ae9db['dialPredictiveOptimization']===_0x16ff('0x1e2')){return _0x5587e5[_0x16ff('0xcb')](_0x5ae9db['id'])[_0x16ff('0xc0')](function(_0x4feff8){var _0x2f9f4e=_0x5ae9db[_0x16ff('0x55')]-_0x4feff8[0x0]['outboundQueuePauses'];var _0x5bbc46=_0x5ae9db['dialPredictiveInterval']*0x3c;var _0x3ea813=_0x5e8fb7[0x0]['predictiveIntervalAvgTalktime']+_0x5e8fb7[0x0][_0x16ff('0x86')];var _0x2fd23f=(_0x5e8fb7[0x0][_0x16ff('0x6d')]+_0x5e8fb7[0x0][_0x16ff('0x70')]+_0x5e8fb7[0x0][_0x16ff('0x6f')])/_0x5e8fb7[0x0][_0x16ff('0x89')];var _0x1dc976=_0x5ae9db[_0x16ff('0x1c5')]/0x64;_0x5ae9db['predictiveIntervalPauses']=_0x4feff8[0x0][_0x16ff('0x1e1')]||0x0;_0x5ae9db[_0x16ff('0x73')]=_0x2fd23f>0x0?_0x2fd23f:0x1;return _0x5587e5[_0x16ff('0x1e3')](_0x2f9f4e,_0x5bbc46,_0x3ea813,_0x2fd23f,_0x1dc976);})[_0x16ff('0xc0')](function(_0x548a28){return _0x2cf439(_0x548a28);})['catch'](function(_0x2c7d65){return _0x55e796(msgResponse(_0x16ff('0x1e4'),_0x16ff('0x147'),JSON[_0x16ff('0x4e')](_0x2c7d65)));});}}else{return _0x55e796(msgResponse(_0x16ff('0x1dd'),'Failure','check\x20failure'));}});};};Dialer['prototype'][_0x16ff('0x1d6')]=function(_0x3cc657){var _0x847b36=this;return function(){var _0x19f8d9=0x0;var _0x23a2c6=Math[_0x16ff('0x1cb')](_0x3cc657[_0x16ff('0x90')]*0x3e8);if(_0x23a2c6>0x0){_0x23a2c6=_0x23a2c6<0x64?0x64:_0x23a2c6;loggerPredictive[_0x16ff('0x82')](_0x3cc657[_0x16ff('0x44')],_0x16ff('0x1e5'),_0x23a2c6,_0x16ff('0x4f'));_0x3cc657[_0x16ff('0x97')]=setInterval(function(){_0x847b36['handlePredictive'](_0x3cc657);loggerPredictiveCalls[_0x16ff('0x82')]('[handlePredictive]',_0x19f8d9+=0x1);},_0x23a2c6);}else{loggerPredictive[_0x16ff('0x82')](_0x3cc657['name'],_0x16ff('0x1e6'));}};};Dialer[_0x16ff('0x1c')][_0x16ff('0x1e7')]=function(_0x37c3c6,_0x5e0f03){var _0x4dd69=this;return function(_0x2023d7){if(_[_0x16ff('0x4a')](_0x2023d7)){if(_[_0x16ff('0xe1')](_0x5e0f03[_0x16ff('0x1e8')])||!_0x5e0f03[_0x16ff('0x1e9')]){if(_0x37c3c6[_0x16ff('0x5d')]===_0x16ff('0x160')){_0x37c3c6[_0x16ff('0x132')]=_['isUndefined'](_0x37c3c6['queueStatusComplete'])?!![]:_0x37c3c6[_0x16ff('0x132')];var _0x38270d=uuid['v4']();_0x4dd69[_0x16ff('0x28')][_0x38270d]=new Action(_0x37c3c6,_0x5e0f03,_0x38270d);loggerBooked['info'](_0x16ff('0x1ea'),_0x38270d,_0x16ff('0x1eb'),JSON[_0x16ff('0x4e')](_0x37c3c6[_0x16ff('0x132')]),_0x16ff('0x1ec'),_0x37c3c6[_0x16ff('0x44')]);if(_0x37c3c6['queueStatusComplete']){_0x37c3c6['queueStatusComplete']=![];_0x4dd69[_0x16ff('0x2d')][_0x4dd69[_0x16ff('0x28')][_0x38270d][_0x16ff('0xbb')]]=[];ami[_0x16ff('0xb5')]({'actionid':_0x38270d,'action':_0x16ff('0x1ed'),'queue':_0x37c3c6['name']})[_0x16ff('0xb8')](function(){_0x4dd69[_0x16ff('0xba')](_0x37c3c6);_0x4dd69['rescheduleContact']({'active':![],'ContactId':_0x4dd69[_0x16ff('0x28')][_0x38270d]['ContactId'],'ListId':_0x4dd69[_0x16ff('0x28')][_0x38270d][_0x16ff('0x101')],'VoiceQueueId':_0x4dd69[_0x16ff('0x28')][_0x38270d][_0x16ff('0xd5')]||undefined,'CampaignId':_0x4dd69[_0x16ff('0x28')][_0x38270d][_0x16ff('0x102')]||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x1ee')));delete _0x4dd69[_0x16ff('0x28')][_0x38270d];});}else{loggerBooked[_0x16ff('0x82')]('[booked][checkContactBlack][else]',JSON[_0x16ff('0x4e')](_0x37c3c6[_0x16ff('0x132')]),'Queue:\x20',_0x37c3c6[_0x16ff('0x44')]);_0x4dd69[_0x16ff('0xba')](_0x37c3c6);_0x4dd69[_0x16ff('0xc3')]({'active':![],'ContactId':_0x4dd69[_0x16ff('0x28')][_0x38270d]['ContactId'],'ListId':_0x4dd69[_0x16ff('0x28')][_0x38270d][_0x16ff('0x101')],'VoiceQueueId':_0x4dd69['actions'][_0x38270d][_0x16ff('0xd5')]||undefined,'CampaignId':_0x4dd69[_0x16ff('0x28')][_0x38270d][_0x16ff('0x102')]||undefined})['catch'](loggerCatch(_0x16ff('0x1ee')));delete _0x4dd69['actions'][_0x38270d];}}else{return _0x4dd69['actionOriginate'](_0x37c3c6,_0x5e0f03);}}else{if(getDiff(_0x5e0f03[_0x16ff('0x1ef')])<_0x37c3c6[_0x16ff('0x1f0')]*0x3c){if(_0x5e0f03['Agent']&&!_0x5e0f03[_0x16ff('0x1f1')]['voicePause']){_0x4dd69['preview'][_0x16ff('0x133')](_0x5e0f03['id'])[_0x16ff('0x1f')](function(){_0x4dd69['updateOriginated'](_0x37c3c6);});}else{_0x4dd69['unlockContact']({'active':![]},_0x5e0f03['id'],0x1)[_0x16ff('0x1f')](function(){_0x4dd69[_0x16ff('0xba')](_0x37c3c6);});}}else{_0x37c3c6[_0x16ff('0x6a')]+=0x1;_0x4dd69[_0x16ff('0xba')](_0x37c3c6);if(_0x37c3c6[_0x16ff('0x1f2')]){_0x4dd69[_0x16ff('0xc3')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x5e0f03[_0x16ff('0xd4')],'ListId':_0x5e0f03[_0x16ff('0x101')],'VoiceQueueId':_0x5e0f03[_0x16ff('0xd5')]||undefined,'CampaignId':_0x5e0f03[_0x16ff('0x102')]||undefined})[_0x16ff('0xb8')](loggerCatch(_0x16ff('0x1f3')));_0x4dd69[_0x16ff('0xcd')](createObjHistory(_0x37c3c6,_0x5e0f03,'RECALLINQUEUE',0x17,_0x16ff('0x1f4')))[_0x16ff('0xb8')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x4dd69[_0x16ff('0xd2')](createObjHistory(_0x37c3c6,_0x5e0f03,_0x16ff('0x1f5'),0x16,_0x16ff('0x1f6')),_0x16ff('0x1f7'),_0x16ff('0x1f8'));}}}}else{_0x37c3c6['outboundBlacklistCallsDay']+=0x1;_0x4dd69[_0x16ff('0xd2')](createObjHistory(_0x37c3c6,_0x5e0f03,_0x16ff('0x1f9'),0xd,_0x16ff('0x1fa')),'[Originate][historyBlacklist]','[Originate][MoveBlacklist]');throw _0x16ff('0x1fb');}};};Dialer['prototype'][_0x16ff('0x164')]=function(_0x3da415){var _0x5874db=this;var _0x1ac9f2=_0x3da415[_0x16ff('0x1fc')]-_0x3da415[_0x16ff('0xa0')]-_0x3da415['temp'];emitCampaignSummary(_0x3da415);if(_0x1ac9f2>0x0){if(_0x1ac9f2>this[_0x16ff('0x26')]){_0x1ac9f2=this[_0x16ff('0x26')];}_0x3da415[_0x16ff('0xc7')]+=_0x1ac9f2;this['getContactDialerIvr'](_0x3da415['id'],_0x1ac9f2,_0x3da415[_0x16ff('0x1fd')],_0x3da415)[_0x16ff('0xc0')](function(_0x3578af){_0x3da415['temp']-=_0x1ac9f2;_0x3da415[_0x16ff('0xc7')]=_0x3da415[_0x16ff('0xc7')]>0x0?_0x3da415[_0x16ff('0xc7')]:0x0;if(!checkContactEmpty(_0x3578af)){_0x3da415['message']='AVAILABLE_CONTACTS_FINISHED';logger[_0x16ff('0x82')]('[getContactCampaign2][Empty]'+_0x3da415[_0x16ff('0x44')]);}else{_0x3da415[_0x16ff('0xa0')]+=_0x3578af[_0x16ff('0x9f')];_0x3da415[_0x16ff('0x42')]=_0x16ff('0x1fe');for(var _0x15fee8=0x0;_0x15fee8<_0x3578af[_0x16ff('0x9f')];_0x15fee8+=0x1){_0x3da415[_0x16ff('0x1ff')]+=0x1;if(_[_0x16ff('0xe1')](_0x3578af[_0x15fee8])||_['isNil'](_0x3578af[_0x15fee8][_0x16ff('0x170')])||_['isNil'](_0x3578af[_0x15fee8]['Contact']['phone'])){_0x5874db[_0x16ff('0x200')](_0x16ff('0x201'),_0x3da415,_0x3578af[_0x15fee8]);}else{_0x5874db[_0x16ff('0xc2')](_[_0x16ff('0xd3')](_0x3578af[_0x15fee8],[_0x16ff('0x102'),_0x16ff('0x202')]))['then'](_0x5874db['checkContactBlack'](_0x3da415,_0x3578af[_0x15fee8]))[_0x16ff('0xb8')](_0x5874db[_0x16ff('0xd0')](_0x16ff('0x203'),_0x3da415));}}}})[_0x16ff('0xb8')](loggerGetContactDialer(_0x16ff('0x204'),_0x3da415,_0x1ac9f2));}};Dialer[_0x16ff('0x1c')][_0x16ff('0x15d')]=function(_0x56002f,_0x4c08e4){var _0xf50d0f=this;var _0x2bac18=[];var _0x1d5517=_0x4c08e4>=0x1?_0x4c08e4:0x1;if(_0x56002f[_0x16ff('0x5d')]===_0x16ff('0x160')){_0x1d5517=0x1;}var _0x55905c=Math[_0x16ff('0x1cb')](_0x56002f[_0x16ff('0x1ca')]*_0x1d5517)-_0x56002f[_0x16ff('0xa0')]-_0x56002f[_0x16ff('0xc7')];emitVoiceQueueSummary(_0x56002f);if(_0x56002f[_0x16ff('0x205')]>0x0){var _0x3eb71f=_0x56002f[_0x16ff('0x205')]-_0x56002f[_0x16ff('0xa0')]-_0x56002f[_0x16ff('0x58')]-_0x56002f[_0x16ff('0xc7')]-_0x56002f[_0x16ff('0xa9')];if(_0x55905c>_0x3eb71f){_0x55905c=_0x3eb71f;}}if(_0x55905c>0x0){if(_0x56002f['dialMethod']===_0x16ff('0x160')){_0x55905c=0x1;}if(_0x55905c>this[_0x16ff('0x26')]){_0x55905c=this[_0x16ff('0x26')];}_0x56002f[_0x16ff('0xc7')]+=_0x55905c;for(var _0x6b0871 in this[_0x16ff('0x24')]){if(typeof this[_0x16ff('0x24')][_0x6b0871]!==_0x16ff('0xa1')){if(this[_0x16ff('0x24')][_0x6b0871][_0x16ff('0xb0')]===_0x16ff('0x206')&&this[_0x16ff('0x24')][_0x6b0871]['status']==='reachable'){_0x2bac18['push'](this[_0x16ff('0x24')][_0x6b0871]['id']);}}}this['getContactDialer'](_0x56002f['id'],_0x2bac18,_0x55905c,_0x56002f[_0x16ff('0x1fd')],_0x56002f)[_0x16ff('0xc0')](function(_0xdf4e2f){_0x56002f[_0x16ff('0xc7')]-=_0x55905c;_0x56002f[_0x16ff('0xc7')]=_0x56002f['temp']>0x0?_0x56002f[_0x16ff('0xc7')]:0x0;if(!checkContactEmpty(_0xdf4e2f)){_0xf50d0f[_0x16ff('0xbd')](_0x56002f)['then'](sendMessageReschedule(_0x56002f))['catch'](loggerCatch(_0x16ff('0x207')));}else{_0x56002f[_0x16ff('0xa0')]+=_0xdf4e2f['length'];_0x56002f[_0x16ff('0x42')]=_0x56002f[_0x16ff('0x5d')]===_0x16ff('0x160')?_0x16ff('0x177'):_0x16ff('0x1fe');for(var _0x26a7f3=0x0;_0x26a7f3<_0xdf4e2f[_0x16ff('0x9f')];_0x26a7f3+=0x1){if(_[_0x16ff('0xe1')](_0xdf4e2f[_0x26a7f3])||_[_0x16ff('0xe1')](_0xdf4e2f[_0x26a7f3]['Contact'])||_['isNil'](_0xdf4e2f[_0x26a7f3][_0x16ff('0x170')][_0x16ff('0x171')])){_0xf50d0f[_0x16ff('0x200')](_0x16ff('0x201'),_0x56002f,_0xdf4e2f[_0x26a7f3]);}else{_0xf50d0f[_0x16ff('0xbe')](_[_0x16ff('0xd3')](_0xdf4e2f[_0x26a7f3],[_0x16ff('0xd5'),_0x16ff('0x202')]))[_0x16ff('0xc0')](_0xf50d0f['checkContactBlack'](_0x56002f,_0xdf4e2f[_0x26a7f3]))['catch'](_0xf50d0f[_0x16ff('0xd0')](_0x16ff('0x201'),_0x56002f));}}}})['catch'](loggerGetContactDialer(_0x16ff('0x208'),_0x56002f,_0x55905c));}};Dialer['prototype'][_0x16ff('0x97')]=function(_0x5dc2d5){if(_0x5dc2d5[_0x16ff('0x205')]>0x0){var _0x210d84=_0x5dc2d5[_0x16ff('0x205')]-_0x5dc2d5[_0x16ff('0xa0')]-_0x5dc2d5[_0x16ff('0x58')];if(_0x210d84>0x0){this['tryOriginatePredictive'](_0x5dc2d5);}else{loggerPredictiveCalls[_0x16ff('0x82')](_0x16ff('0x209'));}}else{this['tryOriginatePredictive'](_0x5dc2d5);}};Dialer[_0x16ff('0x1c')][_0x16ff('0x20a')]=function(_0x55c4a4){var _0x53ee26=this;var _0x5d6907=[];_0x55c4a4['originated']+=0x1;for(var _0x570874 in this[_0x16ff('0x24')]){if(typeof this[_0x16ff('0x24')][_0x570874]!==_0x16ff('0xa1')){if(this[_0x16ff('0x24')][_0x570874][_0x16ff('0xb0')]===_0x16ff('0x206')&&this[_0x16ff('0x24')][_0x570874][_0x16ff('0xb6')]===_0x16ff('0xdc')){_0x5d6907[_0x16ff('0x130')](this[_0x16ff('0x24')][_0x570874]['id']);}}}this['getContactDialer'](_0x55c4a4['id'],_0x5d6907,0x1,_0x55c4a4[_0x16ff('0x1fd')],_0x55c4a4)[_0x16ff('0xc0')](function(_0x2be693){if(!checkContactEmpty(_0x2be693)){checkContactLowerLimitOriginate(_0x55c4a4,0x1,0x0);_0x53ee26[_0x16ff('0xbd')](_0x55c4a4)[_0x16ff('0xc0')](sendMessageReschedule(_0x55c4a4))['catch'](loggerCatch(_0x16ff('0x207')));}else{_0x55c4a4[_0x16ff('0x42')]=_0x16ff('0x1fe');if(_[_0x16ff('0xe1')](_0x2be693[0x0])||_[_0x16ff('0xe1')](_0x2be693[0x0][_0x16ff('0x170')])||_['isNil'](_0x2be693[0x0][_0x16ff('0x170')][_0x16ff('0x171')])){_0x53ee26[_0x16ff('0x200')](_0x16ff('0x201'),_0x55c4a4,_0x2be693[0x0]);}else{_0x53ee26[_0x16ff('0xbe')](_[_0x16ff('0xd3')](_0x2be693[0x0],[_0x16ff('0xd5'),_0x16ff('0x202')]))[_0x16ff('0xc0')](_0x53ee26[_0x16ff('0x1e7')](_0x55c4a4,_0x2be693[0x0]))[_0x16ff('0xb8')](_0x53ee26[_0x16ff('0xd0')](_0x16ff('0x20b'),_0x55c4a4));}}})[_0x16ff('0xb8')](loggerGetContactDialer('[getContactDialerPredictive]',_0x55c4a4,0x1));emitVoiceQueueSummary(_0x55c4a4);};Dialer['prototype'][_0x16ff('0x1dc')]=function(_0x36f1e8,_0x20894d,_0x1d78de,_0x4fcae1,_0x7a7338,_0x4167ff){loggerPredictive[_0x16ff('0x82')](_0x16ff('0x20c'));loggerPredictive[_0x16ff('0x82')](_0x16ff('0x20d'),_0x36f1e8);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x20e'),_0x20894d);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x20f'),_0x1d78de);loggerPredictive[_0x16ff('0x82')]('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',_0x4fcae1);loggerPredictive['info'](_0x16ff('0x210'),_0x7a7338);loggerPredictive[_0x16ff('0x82')]('---------------------------');return new BPromise(function(_0x1f2c28,_0x71c9f5){if(_0x36f1e8<=0x0||isNaN(_0x36f1e8)){return _0x71c9f5(msgResponse(_0x16ff('0x211'),_0x16ff('0x4d'),_0x16ff('0x212')+_0x36f1e8));}if(_0x1d78de<=0x0||isNaN(_0x1d78de)){return _0x71c9f5(msgResponse(_0x16ff('0x211'),_0x16ff('0x4d'),'Ts\x20=\x20'+_0x1d78de));}if(_0x4fcae1<=0x0||isNaN(_0x4fcae1)){return _0x71c9f5(msgResponse(_0x16ff('0x211'),_0x16ff('0x4d'),_0x16ff('0x213')+_0x4fcae1));}if(_0x20894d<=0x0||isNaN(_0x20894d)){return _0x71c9f5(msgResponse(_0x16ff('0x211'),_0x16ff('0x4d'),_0x16ff('0x214')+_0x20894d));}if(_0x7a7338<=0x0||isNaN(_0x7a7338)){return _0x71c9f5(msgResponse(_0x16ff('0x211'),_0x16ff('0x4d'),_0x16ff('0x215')+_0x7a7338));}_0x4167ff=_0x4167ff||0x0;var _0x395f8d=0x1/_0x1d78de;var _0x43f6ee=0x0;var _0x1ef6b5=0x0;var _0x385026=0x0;var _0x3ae0fa=0x0;for(var _0x2973b0=0x0;_0x385026<_0x7a7338;_0x2973b0+=0x1){_0x1ef6b5=_0x2973b0/_0x20894d;_0x43f6ee=(_0x4fcae1*_0x1ef6b5+_0x4167ff)/_0x395f8d;_0x385026=erlangb(_0x43f6ee,_0x36f1e8);_0x3ae0fa=_0x43f6ee/_0x36f1e8*(0x1-erlangb(_0x43f6ee,_0x36f1e8));}return _0x1f2c28({'erlangCalls':_0x2973b0,'erlangCallToSecond':_0x20894d/_0x2973b0,'erlangAbandonmentRate':_0x385026,'erlangBusyFactor':_0x3ae0fa});});};Dialer[_0x16ff('0x1c')]['busyFactor']=function(_0x56c045,_0x54ee63,_0x1d12e1,_0x4550d3,_0x14cb92,_0x5f2e71){loggerPredictive[_0x16ff('0x82')]('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive[_0x16ff('0x82')](_0x16ff('0x20d'),_0x56c045);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x20e'),_0x54ee63);loggerPredictive['info'](_0x16ff('0x20f'),_0x1d12e1);loggerPredictive['info'](_0x16ff('0x216'),_0x4550d3);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x217'),_0x14cb92);loggerPredictive[_0x16ff('0x82')](_0x16ff('0x88'));return new BPromise(function(_0x5a2f14,_0x4a0c5a){if(_0x56c045<=0x0||isNaN(_0x56c045)){return _0x4a0c5a(msgResponse(_0x16ff('0x218'),_0x16ff('0x4d'),_0x16ff('0x212')+_0x56c045));}if(_0x1d12e1<=0x0||isNaN(_0x1d12e1)){return _0x4a0c5a(msgResponse('[busyFactor]',_0x16ff('0x4d'),_0x16ff('0x219')+_0x1d12e1));}if(_0x4550d3<=0x0||isNaN(_0x4550d3)){return _0x4a0c5a(msgResponse(_0x16ff('0x218'),'Error',_0x16ff('0x213')+_0x4550d3));}if(_0x54ee63<=0x0||isNaN(_0x54ee63)){return _0x4a0c5a(msgResponse(_0x16ff('0x218'),_0x16ff('0x4d'),_0x16ff('0x214')+_0x54ee63));}if(_0x14cb92<=0x0||isNaN(_0x14cb92)){return _0x4a0c5a(msgResponse(_0x16ff('0x218'),_0x16ff('0x4d'),_0x16ff('0x21a')+_0x14cb92));}_0x5f2e71=_0x5f2e71||0x0;var _0x19ef6c=0x1/_0x1d12e1;var _0x89e1d5=0x0;var _0x184f22=0x0;var _0x477787=0x0;var _0x5a4f45=0x0;for(var _0x56b871=0x0;_0x5a4f45<_0x14cb92;_0x56b871+=0x1){_0x184f22=_0x56b871/_0x54ee63;_0x89e1d5=(_0x4550d3*_0x184f22+_0x5f2e71)/_0x19ef6c;_0x477787=erlangb(_0x89e1d5,_0x56c045);_0x5a4f45=_0x89e1d5/_0x56c045*(0x1-erlangb(_0x89e1d5,_0x56c045));}return _0x5a2f14({'erlangCalls':_0x56b871,'erlangCallToSecond':_0x54ee63/_0x56b871,'erlangAbandonmentRate':_0x477787,'erlangBusyFactor':_0x5a4f45});});};module[_0x16ff('0x21b')]=Dialer;
\ No newline at end of file
index 0ecf0bc..bb7d1d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dc3=['countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','holdtime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal'];(function(_0x4ed7f9,_0x30604e){var _0x486cf6=function(_0x2a3e6a){while(--_0x2a3e6a){_0x4ed7f9['push'](_0x4ed7f9['shift']());}};_0x486cf6(++_0x30604e);}(_0x3dc3,0xea));var _0x33dc=function(_0x14b658,_0x3e3f45){_0x14b658=_0x14b658-0x0;var _0x4961fc=_0x3dc3[_0x14b658];return _0x4961fc;};'use strict';var util=require(_0x33dc('0x0'));var _=require('lodash');var moment=require(_0x33dc('0x1'));function getSeconds(_0x2985ee,_0x396b5a){var _0x884ccd=moment(_0x2985ee)[_0x33dc('0x2')](0x0);var _0x22f70c=moment(_0x396b5a)[_0x33dc('0x2')](0x0);return _0x884ccd[_0x33dc('0x3')](_0x22f70c,'seconds');}function QueueCallerAbandon(_0x512d90,_0x1a6d76){this[_0x33dc('0x4')]=_0x512d90[_0x33dc('0x4')];this[_0x33dc('0x5')]=_0x512d90[_0x33dc('0x5')];this[_0x33dc('0x6')]=_0x512d90[_0x33dc('0x5')]==='outbound'?_0x33dc('0x7'):_0x512d90[_0x33dc('0x5')];this[_0x33dc('0x8')]=_0x512d90['countbusyretry'];this[_0x33dc('0x9')]=_0x512d90[_0x33dc('0x9')];this[_0x33dc('0xa')]=_0x512d90['countnoanswerretry'];this[_0x33dc('0xb')]=_0x512d90[_0x33dc('0x8')]+_0x512d90['countcongestionretry']+_0x512d90['countnoanswerretry']+_0x512d90['countnosuchnumberretry']+_0x512d90[_0x33dc('0xc')]+_0x512d90[_0x33dc('0xd')]+_0x512d90[_0x33dc('0xe')]+_0x512d90[_0x33dc('0xf')];this[_0x33dc('0x10')]=_0x512d90['countnosuchnumberretry'];this[_0x33dc('0xc')]=_0x512d90['countdropretry'];this['countabandonedretry']=_0x512d90[_0x33dc('0xd')];this[_0x33dc('0xe')]=_0x512d90[_0x33dc('0xe')];this[_0x33dc('0xf')]=_0x512d90[_0x33dc('0xf')];this[_0x33dc('0x11')]=_0x1a6d76[_0x33dc('0x11')];this['calleridname']=_0x512d90['name'];this[_0x33dc('0x12')]=_0x512d90[_0x33dc('0x13')];this[_0x33dc('0x14')]=_0x512d90[_0x33dc('0x14')];this[_0x33dc('0x15')]=_0x512d90[_0x33dc('0x15')];this[_0x33dc('0x16')]=_0x512d90[_0x33dc('0x16')];this[_0x33dc('0x17')]=this[_0x33dc('0x16')];this[_0x33dc('0x18')]=getSeconds(_0x512d90[_0x33dc('0x15')],_0x512d90[_0x33dc('0x14')]);this[_0x33dc('0x19')]=getSeconds(this[_0x33dc('0x16')],_0x512d90[_0x33dc('0x15')]);this['talktime']=0x0;this['queue']=_0x1a6d76[_0x33dc('0x7')];this[_0x33dc('0x1a')]=_0x1a6d76[_0x33dc('0x1b')];this[_0x33dc('0x1c')]=_0x1a6d76[_0x33dc('0x1c')];this[_0x33dc('0x1d')]=_0x512d90[_0x33dc('0x1d')];this[_0x33dc('0x1e')]=_0x512d90[_0x33dc('0x1e')];this[_0x33dc('0x1f')]=_0x512d90[_0x33dc('0x1f')];this[_0x33dc('0x20')]=_0x512d90[_0x33dc('0x20')];this[_0x33dc('0x21')]=_0x512d90[_0x33dc('0x21')];this['ListId']=_0x512d90[_0x33dc('0x22')];this[_0x33dc('0x23')]=_0x512d90[_0x33dc('0x23')];this[_0x33dc('0x24')]=_0x512d90['VoiceQueueId'];this[_0x33dc('0x25')]=_0x512d90[_0x33dc('0x25')];this[_0x33dc('0x26')]=_0x512d90[_0x33dc('0x26')]||'';this[_0x33dc('0x27')]=_0x512d90['originatecalleridname']||'';}module[_0x33dc('0x28')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x9f2a=['scheduledat','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','talktime','queue','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','diff'];(function(_0x3968e2,_0x384b4f){var _0x14a327=function(_0x1956d6){while(--_0x1956d6){_0x3968e2['push'](_0x3968e2['shift']());}};_0x14a327(++_0x384b4f);}(_0x9f2a,0x196));var _0xa9f2=function(_0x729ffc,_0x18ae31){_0x729ffc=_0x729ffc-0x0;var _0x50d331=_0x9f2a[_0x729ffc];return _0x50d331;};'use strict';var util=require(_0xa9f2('0x0'));var _=require(_0xa9f2('0x1'));var moment=require(_0xa9f2('0x2'));function getSeconds(_0x3767b5,_0x4dd7b2){var _0x4f6201=moment(_0x3767b5)['milliseconds'](0x0);var _0x4047d8=moment(_0x4dd7b2)['milliseconds'](0x0);return _0x4f6201[_0xa9f2('0x3')](_0x4047d8,'seconds');}function QueueCallerAbandon(_0x511675,_0x19cd52){this[_0xa9f2('0x4')]=_0x511675[_0xa9f2('0x4')];this[_0xa9f2('0x5')]=_0x511675[_0xa9f2('0x5')];this['campaigntype']=_0x511675[_0xa9f2('0x5')]===_0xa9f2('0x6')?'queue':_0x511675[_0xa9f2('0x5')];this[_0xa9f2('0x7')]=_0x511675[_0xa9f2('0x7')];this['countcongestionretry']=_0x511675[_0xa9f2('0x8')];this[_0xa9f2('0x9')]=_0x511675[_0xa9f2('0x9')];this[_0xa9f2('0xa')]=_0x511675['countbusyretry']+_0x511675['countcongestionretry']+_0x511675[_0xa9f2('0x9')]+_0x511675[_0xa9f2('0xb')]+_0x511675[_0xa9f2('0xc')]+_0x511675[_0xa9f2('0xd')]+_0x511675[_0xa9f2('0xe')]+_0x511675[_0xa9f2('0xf')];this['countnosuchnumberretry']=_0x511675[_0xa9f2('0xb')];this['countdropretry']=_0x511675['countdropretry'];this[_0xa9f2('0xd')]=_0x511675[_0xa9f2('0xd')];this[_0xa9f2('0xe')]=_0x511675[_0xa9f2('0xe')];this[_0xa9f2('0xf')]=_0x511675[_0xa9f2('0xf')];this['uniqueid']=_0x19cd52[_0xa9f2('0x10')];this[_0xa9f2('0x11')]=_0x511675['name'];this[_0xa9f2('0x12')]=_0x511675[_0xa9f2('0x13')];this[_0xa9f2('0x14')]=_0x511675['starttime'];this[_0xa9f2('0x15')]=_0x511675[_0xa9f2('0x15')];this[_0xa9f2('0x16')]=_0x511675['droptime'];this[_0xa9f2('0x17')]=this[_0xa9f2('0x16')];this[_0xa9f2('0x18')]=getSeconds(_0x511675[_0xa9f2('0x15')],_0x511675[_0xa9f2('0x14')]);this['holdtime']=getSeconds(this[_0xa9f2('0x16')],_0x511675['responsetime']);this[_0xa9f2('0x19')]=0x0;this[_0xa9f2('0x1a')]=_0x19cd52['queue'];this['membername']=_0x19cd52[_0xa9f2('0x1b')];this['reason']=_0x19cd52[_0xa9f2('0x1c')];this[_0xa9f2('0x1d')]=_0x511675[_0xa9f2('0x1d')];this[_0xa9f2('0x1e')]=_0x511675[_0xa9f2('0x1e')];this['callbackat']=_0x511675[_0xa9f2('0x1f')];this[_0xa9f2('0x20')]=_0x511675[_0xa9f2('0x20')];this[_0xa9f2('0x21')]=_0x511675[_0xa9f2('0x21')];this[_0xa9f2('0x22')]=_0x511675[_0xa9f2('0x22')];this[_0xa9f2('0x23')]=_0x511675['UserId'];this[_0xa9f2('0x24')]=_0x511675[_0xa9f2('0x24')];this[_0xa9f2('0x25')]=_0x511675[_0xa9f2('0x25')];this['originatecalleridnum']=_0x511675[_0xa9f2('0x26')]||'';this[_0xa9f2('0x27')]=_0x511675['originatecalleridname']||'';}module[_0xa9f2('0x28')]=QueueCallerAbandon;
\ No newline at end of file
index 218675d..8e7896e 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(_0xaa2e14,_0x5e2b31){var _0x4ad550=function(_0x456199){while(--_0x456199){_0xaa2e14['push'](_0xaa2e14['shift']());}};_0x4ad550(++_0x5e2b31);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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(_0x50b984,_0x2f44cb){var _0x4301b6=function(_0x1f84b7){while(--_0x1f84b7){_0x50b984['push'](_0x50b984['shift']());}};_0x4301b6(++_0x2f44cb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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 d783d38..6ddb8c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaa4=['\x20result\x20conversion\x20file\x20','create','parse','.pdf','application/pdf','then','catch','error','stringify','response','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','execOriginate','FaxAccountId','[Fax][execOriginate][success]','message','Fax\x20received','checkTrunk','isValid','Trunk\x20Reachable','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','format','%s/%s.tif','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','bluebird','uuid','path','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','trunks','actions','syncNewchannel','varset','syncVarSet','syncNewState','newexten','syncNewExten','bind','faxstatus','syncFaxStatus','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','faxAccounts','localstationid','channels','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','hasOwnProperty','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','syncReceiveFax','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/'];(function(_0x29b13b,_0x1d9ae6){var _0x2b3041=function(_0x108049){while(--_0x108049){_0x29b13b['push'](_0x29b13b['shift']());}};_0x2b3041(++_0x1d9ae6);}(_0xbaa4,0xa9));var _0x4baa=function(_0x233010,_0x59db39){_0x233010=_0x233010-0x0;var _0x1011a6=_0xbaa4[_0x233010];return _0x1011a6;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0x4baa('0x0'));var uuid=require(_0x4baa('0x1'));var moment=require('moment');var path=require(_0x4baa('0x2'));var tiff2pdf=require('tiff2pdf');var gs=require(_0x4baa('0x3'));var logger=require(_0x4baa('0x4'))(_0x4baa('0x5'));var ami=require(_0x4baa('0x6'));var rpcDb=require(_0x4baa('0x7'));var Channel=require('./channel');var ut=require(_0x4baa('0x8'));var Action=require(_0x4baa('0x9'));var faxAccount=require(_0x4baa('0xa'));var attachment=require(_0x4baa('0xb'));var faxMessage=require(_0x4baa('0xc'));function Fax(_0x510ca8){this['channels']={};this['faxAccounts']=_0x510ca8['faxAccounts'];this[_0x4baa('0xd')]=_0x510ca8[_0x4baa('0xd')];this[_0x4baa('0xe')]={};ami['on']('newchannel',this[_0x4baa('0xf')]['bind'](this));ami['on'](_0x4baa('0x10'),this[_0x4baa('0x11')]['bind'](this));ami['on']('newstate',this[_0x4baa('0x12')]['bind'](this));ami['on'](_0x4baa('0x13'),this[_0x4baa('0x14')][_0x4baa('0x15')](this));ami['on'](_0x4baa('0x16'),this[_0x4baa('0x17')][_0x4baa('0x15')](this));ami['on']('receivefax',this['syncReceiveFax'][_0x4baa('0x15')](this));ami['on'](_0x4baa('0x18'),this[_0x4baa('0x19')][_0x4baa('0x15')](this));ami['on'](_0x4baa('0x1a'),this[_0x4baa('0x1b')][_0x4baa('0x15')](this));}Fax[_0x4baa('0x1c')][_0x4baa('0xf')]=function(_0x964b02){if(_0x964b02[_0x4baa('0x1d')]===_0x4baa('0x1e')){for(var _0x594e5c in this[_0x4baa('0x1f')]){if(this[_0x4baa('0x1f')]['hasOwnProperty'](_0x594e5c)){if(_0x964b02['exten']===this[_0x4baa('0x1f')][_0x594e5c][_0x4baa('0x20')]){this[_0x4baa('0x21')][_0x964b02[_0x4baa('0x22')]]={};this[_0x4baa('0x21')][_0x964b02[_0x4baa('0x22')]][_0x4baa('0x23')]=_0x964b02[_0x4baa('0x23')];this[_0x4baa('0x21')][_0x964b02['uniqueid']]['id']=this[_0x4baa('0x1f')][_0x594e5c]['id'];this['channels'][_0x964b02[_0x4baa('0x22')]][_0x4baa('0x24')]=this[_0x4baa('0x1f')][_0x594e5c][_0x4baa('0x24')];logger[_0x4baa('0x25')](_0x964b02[_0x4baa('0x22')],'\x20syncNewchannel\x20');}}}}if(this[_0x4baa('0xe')][_0x964b02[_0x4baa('0x22')]]){this[_0x4baa('0x21')][_0x964b02[_0x4baa('0x22')]]={};this[_0x4baa('0x21')][_0x964b02['uniqueid']][_0x4baa('0x23')]=_0x964b02[_0x4baa('0x23')];logger[_0x4baa('0x25')](_0x964b02[_0x4baa('0x22')],_0x4baa('0x26'));}};Fax[_0x4baa('0x1c')][_0x4baa('0x11')]=function(_0x5c8254){if(this[_0x4baa('0x21')][_0x5c8254[_0x4baa('0x22')]]){for(var _0x2e99e1 in _0x5c8254[_0x4baa('0x27')]){if(_0x5c8254[_0x4baa('0x27')][_0x4baa('0x28')](_0x2e99e1)){this['channels'][_0x5c8254[_0x4baa('0x22')]][_0x2e99e1]=_0x5c8254[_0x4baa('0x29')];}}}};Fax['prototype'][_0x4baa('0x12')]=function(_0x4cb1c3){if(this['channels'][_0x4cb1c3[_0x4baa('0x22')]]){this['channels'][_0x4cb1c3[_0x4baa('0x22')]][_0x4baa('0x2a')]=_0x4cb1c3[_0x4baa('0x2a')];this[_0x4baa('0x21')][_0x4cb1c3['uniqueid']]['channelstatedesc']=_0x4cb1c3[_0x4baa('0x2b')];}};Fax[_0x4baa('0x1c')][_0x4baa('0x14')]=function(_0x3706f6){if(this[_0x4baa('0x21')][_0x3706f6[_0x4baa('0x22')]]){for(var _0x3d7cce in _0x3706f6[_0x4baa('0x27')]){if(_0x3706f6[_0x4baa('0x27')][_0x4baa('0x28')](_0x3d7cce)){this[_0x4baa('0x21')][_0x3706f6[_0x4baa('0x22')]][_0x3d7cce]=_0x3706f6['value'];}}}};Fax['prototype'][_0x4baa('0x17')]=function(_0x49a607){if(this[_0x4baa('0x21')][_0x49a607[_0x4baa('0x22')]]){this[_0x4baa('0x21')][_0x49a607[_0x4baa('0x22')]][_0x4baa('0x2c')]=_0x49a607[_0x4baa('0x2c')];this[_0x4baa('0x21')][_0x49a607[_0x4baa('0x22')]][_0x4baa('0x2d')]=_0x49a607[_0x4baa('0x2d')];this['channels'][_0x49a607[_0x4baa('0x22')]][_0x4baa('0x20')]=_0x49a607['localstationid'];this[_0x4baa('0x21')][_0x49a607['uniqueid']][_0x4baa('0x2e')]=_0x49a607[_0x4baa('0x2e')];logger['info'](_0x49a607['uniqueid'],_0x4baa('0x2f'));}};Fax[_0x4baa('0x1c')][_0x4baa('0x30')]=function(_0x19b3c4){var _0x25f118=this;if(this[_0x4baa('0x21')][_0x19b3c4[_0x4baa('0x22')]]){var _0x1680a5=this[_0x4baa('0x21')][_0x19b3c4[_0x4baa('0x22')]]['id'];this[_0x4baa('0x21')][_0x19b3c4[_0x4baa('0x22')]][_0x4baa('0x31')]=_0x19b3c4[_0x4baa('0x31')];this[_0x4baa('0x21')][_0x19b3c4[_0x4baa('0x22')]][_0x4baa('0x32')]=_0x19b3c4[_0x4baa('0x32')];this[_0x4baa('0x21')][_0x19b3c4[_0x4baa('0x22')]][_0x4baa('0x20')]=_0x19b3c4[_0x4baa('0x20')];this[_0x4baa('0x21')][_0x19b3c4[_0x4baa('0x22')]][_0x4baa('0x33')]=_0x19b3c4[_0x4baa('0x33')];this[_0x4baa('0x21')][_0x19b3c4[_0x4baa('0x22')]][_0x4baa('0x34')]=_0x19b3c4[_0x4baa('0x34')];this[_0x4baa('0x21')][_0x19b3c4[_0x4baa('0x22')]]['filename']=_0x19b3c4[_0x4baa('0x2e')];this['channels'][_0x19b3c4[_0x4baa('0x22')]][_0x4baa('0x35')]=_0x19b3c4[_0x4baa('0x35')];if(this[_0x4baa('0x21')][_0x19b3c4[_0x4baa('0x22')]][_0x4baa('0x32')]>0x0){tiff2pdf(_0x19b3c4[_0x4baa('0x2e')],_0x4baa('0x36'),function(_0x1aefb2){logger[_0x4baa('0x25')](_0x19b3c4[_0x4baa('0x22')],_0x4baa('0x37'),_0x1aefb2['message']);attachment[_0x4baa('0x38')]({'name':path[_0x4baa('0x39')](_0x19b3c4['filename'])[_0x4baa('0x24')],'basename':path[_0x4baa('0x39')](_0x19b3c4[_0x4baa('0x2e')])[_0x4baa('0x24')]+_0x4baa('0x3a'),'type':_0x4baa('0x3b')})[_0x4baa('0x3c')](function(_0x13dda8){faxAccount['notify'](_0x1680a5,{'from':_0x19b3c4[_0x4baa('0x35')],'mapKey':_0x4baa('0x5'),'body':path[_0x4baa('0x39')](_0x19b3c4['filename'])[_0x4baa('0x24')]+_0x4baa('0x3a'),'AttachmentId':_0x13dda8['id']})[_0x4baa('0x3d')](function(_0x129a1e){logger[_0x4baa('0x3e')](_0x19b3c4[_0x4baa('0x22')],'\x20notify\x20',JSON[_0x4baa('0x3f')](_0x129a1e));});})['catch'](function(_0x3ac3cc){logger[_0x4baa('0x3e')](_0x19b3c4['uniqueid'],'\x20receiveFax\x20',JSON[_0x4baa('0x3f')](_0x3ac3cc));});});}logger[_0x4baa('0x25')](_0x19b3c4[_0x4baa('0x22')],'\x20receiveFax\x20');}};Fax[_0x4baa('0x1c')][_0x4baa('0x1b')]=function(_0x37e91c){if(this['actions'][_0x37e91c['uniqueid']]){_['merge'](this[_0x4baa('0x21')][_0x37e91c[_0x4baa('0x22')]],_['pick'](_0x37e91c,[_0x4baa('0x40'),'reason']));}};function updateStatus(_0x3231db){if(_0x3231db[_0x4baa('0x41')]){faxMessage[_0x4baa('0x42')](_0x3231db[_0x4baa('0x41')],{'failMessage':_0x4baa('0x43')})['then'](function(_0x8fef9c){ut[_0x4baa('0x44')](_0x4baa('0x45'),_0x8fef9c);})['catch'](function(_0xba34c){ut[_0x4baa('0x44')](_0x4baa('0x46'),_0xba34c);});}else{ut['logger'](_0x4baa('0x47'));}}Fax[_0x4baa('0x1c')][_0x4baa('0x48')]=function(_0x2176d5,_0x430a74,_0x2e512a){var _0x63d995=this;var _0x52ff4a={};if(_0x430a74){_0x52ff4a={'read':_0x430a74};}else{_0x52ff4a={'failMessage':_0x2e512a};}if(this[_0x4baa('0xe')][_0x2176d5][_0x4baa('0x41')]){faxMessage['update'](this[_0x4baa('0xe')][_0x2176d5][_0x4baa('0x41')],_0x52ff4a)['then'](function(_0x25b8cc){ut['logger'](_0x4baa('0x49'),_0x25b8cc);})['catch'](function(_0x50d1b2){ut[_0x4baa('0x44')]('[Fax][Message][NoUpdate1]',_0x50d1b2);})['finally'](function(){delete _0x63d995[_0x4baa('0x21')][_0x2176d5];delete _0x63d995[_0x4baa('0xe')][_0x2176d5];});}else{ut[_0x4baa('0x44')](_0x4baa('0x4a'));delete this[_0x4baa('0x21')][_0x2176d5];delete this['actions'][_0x2176d5];}};Fax[_0x4baa('0x1c')][_0x4baa('0x19')]=function(_0x302421){var _0x22ca7d=this;if(this['channels'][_0x302421[_0x4baa('0x22')]]){if(this['actions'][_0x302421[_0x4baa('0x22')]]){this[_0x4baa('0x21')][_0x302421[_0x4baa('0x22')]]['id']=this[_0x4baa('0xe')][_0x302421[_0x4baa('0x22')]]['id'];this['channels'][_0x302421[_0x4baa('0x22')]][_0x4baa('0x24')]=this[_0x4baa('0xe')][_0x302421[_0x4baa('0x22')]]['name'];}logger[_0x4baa('0x25')](_0x302421[_0x4baa('0x22')],this['actions'][_0x302421[_0x4baa('0x22')]]?_0x4baa('0x4b'):_0x4baa('0x4c'),JSON['stringify'](this[_0x4baa('0x21')][_0x302421[_0x4baa('0x22')]]));if(this[_0x4baa('0xe')][_0x302421['uniqueid']]){if(this[_0x4baa('0x21')][_0x302421[_0x4baa('0x22')]][_0x4baa('0x4d')]>0x0&&this[_0x4baa('0x21')][_0x302421[_0x4baa('0x22')]][_0x4baa('0x16')]===_0x4baa('0x4e')){this[_0x4baa('0x48')](_0x302421['uniqueid'],!![]);}else{this[_0x4baa('0x48')](_0x302421['uniqueid'],![],this[_0x4baa('0x21')][_0x302421[_0x4baa('0x22')]][_0x4baa('0x4f')]?_0x4baa('0x50')+this[_0x4baa('0x21')][_0x302421[_0x4baa('0x22')]][_0x4baa('0x4f')]:'SENDING\x20FAILED');}}}};Fax['prototype']['send']=function(_0x174be0){var _0x3e3efd=this;return new BPromise(function(_0x4a1ebd,_0x2b130a){_0x3e3efd[_0x4baa('0x51')](_0x174be0,_0x3e3efd['faxAccounts'][_0x174be0[_0x4baa('0x52')]])[_0x4baa('0x3c')](function(_0x121ff2){ut['logger'](_0x4baa('0x53'),_0x121ff2);_0x4a1ebd(ut[_0x4baa('0x54')](_0x4baa('0x55')));})['catch'](function(_0x2f4979){ut[_0x4baa('0x44')]('[Fax][execOriginate][failure]',_0x2f4979);updateStatus(_0x174be0);_0x2b130a(ut['message']('Fax\x20failed'));});});};Fax['prototype']['checkAfterSend']=function(_0x110512){var _0x4a8f5f=this;return new BPromise(function(_0x8763b9,_0x324247){var _0x1d4a27=_0x4a8f5f[_0x4baa('0x56')](_0x4a8f5f['faxAccounts'][_0x110512[_0x4baa('0x52')]]['Trunk'],_0x110512);if(_0x1d4a27[_0x4baa('0x57')]){_0x8763b9(ut[_0x4baa('0x54')](_0x4baa('0x58')));}else{_0x324247(ut[_0x4baa('0x54')](_0x1d4a27[_0x4baa('0x54')]));}});};function originate(_0x407009,_0x10420d,_0x1e2067){return new BPromise(function(_0x3a3a13,_0x234590){if(_0x1e2067){var _0x248055=util['format'](_0x4baa('0x59'),path[_0x4baa('0x39')](_0x407009['path'])[_0x4baa('0x24')],_0x407009[_0x4baa('0x2')]);gs[_0x4baa('0x5a')](_0x248055)[_0x4baa('0x3c')](function(){_0x407009[_0x4baa('0x2')]=util[_0x4baa('0x5b')](_0x4baa('0x5c'),path['parse'](_0x407009[_0x4baa('0x2')])['dir'],path['parse'](_0x407009[_0x4baa('0x2')])['name']);_0x10420d[_0x4baa('0x5d')]=_0x407009['path'];ut[_0x4baa('0x44')](_0x4baa('0x5e'),'');ami[_0x4baa('0x5f')](ut[_0x4baa('0x60')](_0x407009,_0x10420d))['then'](function(_0x44d523){_0x3a3a13(_0x44d523);})[_0x4baa('0x3d')](function(_0x112865){_0x234590(_0x112865);});})['catch'](function(_0x15fad0){_0x234590(_0x15fad0);});}else{ami[_0x4baa('0x5f')](ut['variablesAction'](_0x407009,_0x10420d))['then'](function(_0x331efa){_0x3a3a13(_0x331efa);})[_0x4baa('0x3d')](function(_0x5674b7){_0x234590(_0x5674b7);});}});}Fax[_0x4baa('0x1c')]['execOriginate']=function(_0x16c50c,_0x493913){var _0x529180=this;return new BPromise(function(_0xb57251,_0x3f972d){var _0x582c9f=uuid['v4']();var _0x35a99b=ut['addVariables'](_0x16c50c,_0x493913);_0x529180[_0x4baa('0xe')][_0x582c9f]=new Action(_0x582c9f,_0x493913,_0x16c50c);var _0x85d6dd=_0x529180[_0x4baa('0xe')][_0x582c9f];if(path[_0x4baa('0x39')](_0x16c50c['path'])[_0x4baa('0x61')]===_0x4baa('0x3a')){originate(_0x85d6dd,_0x35a99b,!![])[_0x4baa('0x3c')](function(_0x5768a7){_0xb57251(_0x5768a7);})[_0x4baa('0x3d')](function(_0x3f3150){_0x3f972d(_0x3f3150);});}else{originate(_0x85d6dd,_0x35a99b,![])[_0x4baa('0x3c')](function(_0x5335c6){_0xb57251(_0x5335c6);})[_0x4baa('0x3d')](function(_0x5ead89){_0x3f972d(_0x5ead89);});}});};Fax[_0x4baa('0x1c')][_0x4baa('0x62')]=function(_0x3ce6dc){return!_[_0x4baa('0x63')](_0x3ce6dc)&&!_[_0x4baa('0x63')](_0x3ce6dc['name'])&&!_[_0x4baa('0x63')](_0x3ce6dc[_0x4baa('0x64')])&&_0x3ce6dc[_0x4baa('0x64')]&&!_[_0x4baa('0x63')](this[_0x4baa('0xd')][util[_0x4baa('0x5b')](_0x4baa('0x65'),_0x3ce6dc[_0x4baa('0x24')])])&&!_[_0x4baa('0x63')](this[_0x4baa('0xd')][util[_0x4baa('0x5b')](_0x4baa('0x65'),_0x3ce6dc[_0x4baa('0x24')])][_0x4baa('0x2d')])&&(this[_0x4baa('0xd')][util[_0x4baa('0x5b')](_0x4baa('0x65'),_0x3ce6dc['name'])][_0x4baa('0x2d')]===_0x4baa('0x66')||this[_0x4baa('0xd')][util[_0x4baa('0x5b')]('SIP/%s',_0x3ce6dc[_0x4baa('0x24')])][_0x4baa('0x2d')]===_0x4baa('0x67'));};Fax[_0x4baa('0x1c')][_0x4baa('0x56')]=function(_0x951f84,_0x48765e){if(!this[_0x4baa('0x62')](_0x951f84)){ut[_0x4baa('0x44')](_0x4baa('0x68'),_[_0x4baa('0x63')](_0x951f84)?'':_0x951f84[_0x4baa('0x24')]+_0x4baa('0x69'));return{'isValid':![],'message':_0x4baa('0x6a')};}if(_[_0x4baa('0x63')](_0x48765e[_0x4baa('0x5')])){ut[_0x4baa('0x44')](_0x4baa('0x6b'),JSON['stringify'](_0x48765e));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0x4baa('0x63')](_0x48765e[_0x4baa('0x2')])){ut[_0x4baa('0x44')](_0x4baa('0x6c'),JSON[_0x4baa('0x3f')](_0x48765e));return{'isValid':![],'message':_0x4baa('0x6d')};}return{'isValid':!![],'message':_0x4baa('0x6e')};};module[_0x4baa('0x6f')]=Fax;
\ No newline at end of file
+var _0x395b=['channel','name','info','\x20syncNewchannel\x20','actions','variable','value','channelstate','channelstatedesc','operation','status','localstationid','filename','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','parse','then','notify','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','pick','response','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','path','execute','dir','Action','variablesAction','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','exports','moment','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/attachment','channels','faxAccounts','trunks','syncNewchannel','bind','varset','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','from-voip-provider','hasOwnProperty','uniqueid'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x395b,0xbc));var _0xb395=function(_0x4e8db9,_0x15ff81){_0x4e8db9=_0x4e8db9-0x0;var _0x1fc3be=_0x395b[_0x4e8db9];return _0x1fc3be;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require('bluebird');var uuid=require('uuid');var moment=require(_0xb395('0x0'));var path=require('path');var tiff2pdf=require('tiff2pdf');var gs=require(_0xb395('0x1'));var logger=require(_0xb395('0x2'))(_0xb395('0x3'));var ami=require(_0xb395('0x4'));var rpcDb=require(_0xb395('0x5'));var Channel=require(_0xb395('0x6'));var ut=require(_0xb395('0x7'));var Action=require(_0xb395('0x8'));var faxAccount=require('../rpc/faxAccount');var attachment=require(_0xb395('0x9'));var faxMessage=require('../rpc/faxMessage');function Fax(_0xf69473){this[_0xb395('0xa')]={};this['faxAccounts']=_0xf69473[_0xb395('0xb')];this['trunks']=_0xf69473[_0xb395('0xc')];this['actions']={};ami['on']('newchannel',this[_0xb395('0xd')][_0xb395('0xe')](this));ami['on'](_0xb395('0xf'),this['syncVarSet']['bind'](this));ami['on']('newstate',this[_0xb395('0x10')]['bind'](this));ami['on'](_0xb395('0x11'),this[_0xb395('0x12')][_0xb395('0xe')](this));ami['on'](_0xb395('0x13'),this[_0xb395('0x14')]['bind'](this));ami['on']('receivefax',this[_0xb395('0x15')][_0xb395('0xe')](this));ami['on'](_0xb395('0x16'),this[_0xb395('0x17')]['bind'](this));ami['on'](_0xb395('0x18'),this[_0xb395('0x19')][_0xb395('0xe')](this));}Fax[_0xb395('0x1a')][_0xb395('0xd')]=function(_0x4a8b2c){if(_0x4a8b2c['context']===_0xb395('0x1b')){for(var _0x528197 in this[_0xb395('0xb')]){if(this[_0xb395('0xb')][_0xb395('0x1c')](_0x528197)){if(_0x4a8b2c['exten']===this[_0xb395('0xb')][_0x528197]['localstationid']){this[_0xb395('0xa')][_0x4a8b2c[_0xb395('0x1d')]]={};this[_0xb395('0xa')][_0x4a8b2c[_0xb395('0x1d')]][_0xb395('0x1e')]=_0x4a8b2c['channel'];this[_0xb395('0xa')][_0x4a8b2c[_0xb395('0x1d')]]['id']=this[_0xb395('0xb')][_0x528197]['id'];this[_0xb395('0xa')][_0x4a8b2c['uniqueid']]['name']=this['faxAccounts'][_0x528197][_0xb395('0x1f')];logger[_0xb395('0x20')](_0x4a8b2c[_0xb395('0x1d')],_0xb395('0x21'));}}}}if(this[_0xb395('0x22')][_0x4a8b2c['uniqueid']]){this[_0xb395('0xa')][_0x4a8b2c[_0xb395('0x1d')]]={};this[_0xb395('0xa')][_0x4a8b2c['uniqueid']][_0xb395('0x1e')]=_0x4a8b2c[_0xb395('0x1e')];logger[_0xb395('0x20')](_0x4a8b2c[_0xb395('0x1d')],_0xb395('0x21'));}};Fax['prototype']['syncVarSet']=function(_0x27e6c9){if(this[_0xb395('0xa')][_0x27e6c9[_0xb395('0x1d')]]){for(var _0x2bfd40 in _0x27e6c9[_0xb395('0x23')]){if(_0x27e6c9['variable'][_0xb395('0x1c')](_0x2bfd40)){this['channels'][_0x27e6c9[_0xb395('0x1d')]][_0x2bfd40]=_0x27e6c9[_0xb395('0x24')];}}}};Fax[_0xb395('0x1a')][_0xb395('0x10')]=function(_0x4d4ae9){if(this[_0xb395('0xa')][_0x4d4ae9[_0xb395('0x1d')]]){this[_0xb395('0xa')][_0x4d4ae9[_0xb395('0x1d')]][_0xb395('0x25')]=_0x4d4ae9['channelstate'];this[_0xb395('0xa')][_0x4d4ae9['uniqueid']]['channelstatedesc']=_0x4d4ae9[_0xb395('0x26')];}};Fax[_0xb395('0x1a')][_0xb395('0x12')]=function(_0x2cdd85){if(this[_0xb395('0xa')][_0x2cdd85[_0xb395('0x1d')]]){for(var _0x105703 in _0x2cdd85[_0xb395('0x23')]){if(_0x2cdd85[_0xb395('0x23')]['hasOwnProperty'](_0x105703)){this[_0xb395('0xa')][_0x2cdd85[_0xb395('0x1d')]][_0x105703]=_0x2cdd85[_0xb395('0x24')];}}}};Fax['prototype'][_0xb395('0x14')]=function(_0x527c68){if(this['channels'][_0x527c68[_0xb395('0x1d')]]){this[_0xb395('0xa')][_0x527c68[_0xb395('0x1d')]][_0xb395('0x27')]=_0x527c68['operation'];this[_0xb395('0xa')][_0x527c68[_0xb395('0x1d')]][_0xb395('0x28')]=_0x527c68['status'];this[_0xb395('0xa')][_0x527c68[_0xb395('0x1d')]][_0xb395('0x29')]=_0x527c68['localstationid'];this[_0xb395('0xa')][_0x527c68[_0xb395('0x1d')]][_0xb395('0x2a')]=_0x527c68[_0xb395('0x2a')];logger[_0xb395('0x20')](_0x527c68[_0xb395('0x1d')],'\x20syncFaxStatus\x20');}};Fax[_0xb395('0x1a')][_0xb395('0x15')]=function(_0x52674e){var _0x55eb50=this;if(this['channels'][_0x52674e[_0xb395('0x1d')]]){var _0x29d985=this['channels'][_0x52674e[_0xb395('0x1d')]]['id'];this[_0xb395('0xa')][_0x52674e[_0xb395('0x1d')]][_0xb395('0x2b')]=_0x52674e[_0xb395('0x2b')];this[_0xb395('0xa')][_0x52674e[_0xb395('0x1d')]][_0xb395('0x2c')]=_0x52674e[_0xb395('0x2c')];this[_0xb395('0xa')][_0x52674e[_0xb395('0x1d')]][_0xb395('0x29')]=_0x52674e[_0xb395('0x29')];this[_0xb395('0xa')][_0x52674e[_0xb395('0x1d')]][_0xb395('0x2d')]=_0x52674e[_0xb395('0x2d')];this[_0xb395('0xa')][_0x52674e['uniqueid']][_0xb395('0x2e')]=_0x52674e[_0xb395('0x2e')];this[_0xb395('0xa')][_0x52674e['uniqueid']][_0xb395('0x2a')]=_0x52674e[_0xb395('0x2a')];this['channels'][_0x52674e[_0xb395('0x1d')]][_0xb395('0x2f')]=_0x52674e['calleridnum'];if(this[_0xb395('0xa')][_0x52674e[_0xb395('0x1d')]][_0xb395('0x2c')]>0x0){tiff2pdf(_0x52674e[_0xb395('0x2a')],_0xb395('0x30'),function(_0x232c3f){logger['info'](_0x52674e['uniqueid'],_0xb395('0x31'),_0x232c3f[_0xb395('0x32')]);attachment['create']({'name':path[_0xb395('0x33')](_0x52674e[_0xb395('0x2a')])['name'],'basename':path[_0xb395('0x33')](_0x52674e[_0xb395('0x2a')])[_0xb395('0x1f')]+'.pdf','type':'application/pdf'})[_0xb395('0x34')](function(_0x32af30){faxAccount[_0xb395('0x35')](_0x29d985,{'from':_0x52674e[_0xb395('0x2f')],'mapKey':_0xb395('0x3'),'body':path[_0xb395('0x33')](_0x52674e[_0xb395('0x2a')])[_0xb395('0x1f')]+'.pdf','AttachmentId':_0x32af30['id']})[_0xb395('0x36')](function(_0x2ac7ac){logger[_0xb395('0x37')](_0x52674e['uniqueid'],_0xb395('0x38'),JSON[_0xb395('0x39')](_0x2ac7ac));});})[_0xb395('0x36')](function(_0x185afd){logger[_0xb395('0x37')](_0x52674e[_0xb395('0x1d')],'\x20receiveFax\x20',JSON[_0xb395('0x39')](_0x185afd));});});}logger['info'](_0x52674e[_0xb395('0x1d')],_0xb395('0x3a'));}};Fax[_0xb395('0x1a')][_0xb395('0x19')]=function(_0x3d50c1){if(this[_0xb395('0x22')][_0x3d50c1[_0xb395('0x1d')]]){_[_0xb395('0x3b')](this[_0xb395('0xa')][_0x3d50c1['uniqueid']],_[_0xb395('0x3c')](_0x3d50c1,[_0xb395('0x3d'),'reason']));}};function updateStatus(_0x4dd146){if(_0x4dd146[_0xb395('0x3e')]){faxMessage[_0xb395('0x3f')](_0x4dd146[_0xb395('0x3e')],{'failMessage':_0xb395('0x40')})[_0xb395('0x34')](function(_0x37921e){ut[_0xb395('0x41')](_0xb395('0x42'),_0x37921e);})[_0xb395('0x36')](function(_0x3c059f){ut['logger'](_0xb395('0x43'),_0x3c059f);});}else{ut['logger'](_0xb395('0x44'));}}Fax[_0xb395('0x1a')][_0xb395('0x45')]=function(_0x4c87c3,_0x15c306,_0x152a03){var _0x5944ec=this;var _0x38063e={};if(_0x15c306){_0x38063e={'read':_0x15c306};}else{_0x38063e={'failMessage':_0x152a03};}if(this['actions'][_0x4c87c3][_0xb395('0x3e')]){faxMessage['update'](this[_0xb395('0x22')][_0x4c87c3][_0xb395('0x3e')],_0x38063e)['then'](function(_0x3acb10){ut['logger']('[Fax][Message][Updated]',_0x3acb10);})[_0xb395('0x36')](function(_0x232c85){ut[_0xb395('0x41')](_0xb395('0x46'),_0x232c85);})[_0xb395('0x47')](function(){delete _0x5944ec[_0xb395('0xa')][_0x4c87c3];delete _0x5944ec[_0xb395('0x22')][_0x4c87c3];});}else{ut[_0xb395('0x41')](_0xb395('0x48'));delete this[_0xb395('0xa')][_0x4c87c3];delete this[_0xb395('0x22')][_0x4c87c3];}};Fax[_0xb395('0x1a')]['syncHangup']=function(_0x157932){var _0x103e5f=this;if(this['channels'][_0x157932[_0xb395('0x1d')]]){if(this[_0xb395('0x22')][_0x157932['uniqueid']]){this['channels'][_0x157932[_0xb395('0x1d')]]['id']=this['actions'][_0x157932[_0xb395('0x1d')]]['id'];this[_0xb395('0xa')][_0x157932[_0xb395('0x1d')]][_0xb395('0x1f')]=this[_0xb395('0x22')][_0x157932['uniqueid']][_0xb395('0x1f')];}logger['info'](_0x157932[_0xb395('0x1d')],this[_0xb395('0x22')][_0x157932[_0xb395('0x1d')]]?'\x20hangup\x20sendFile\x20':_0xb395('0x49'),JSON[_0xb395('0x39')](this[_0xb395('0xa')][_0x157932[_0xb395('0x1d')]]));if(this['actions'][_0x157932[_0xb395('0x1d')]]){if(this['channels'][_0x157932['uniqueid']][_0xb395('0x4a')]>0x0&&this[_0xb395('0xa')][_0x157932['uniqueid']][_0xb395('0x13')]===_0xb395('0x4b')){this['updateStatus'](_0x157932[_0xb395('0x1d')],!![]);}else{this[_0xb395('0x45')](_0x157932[_0xb395('0x1d')],![],this[_0xb395('0xa')][_0x157932['uniqueid']][_0xb395('0x4c')]?_0xb395('0x4d')+this[_0xb395('0xa')][_0x157932[_0xb395('0x1d')]][_0xb395('0x4c')]:_0xb395('0x4e'));}}}};Fax[_0xb395('0x1a')][_0xb395('0x4f')]=function(_0x2754b7){var _0xb55fdd=this;return new BPromise(function(_0x11c453,_0x305356){_0xb55fdd[_0xb395('0x50')](_0x2754b7,_0xb55fdd[_0xb395('0xb')][_0x2754b7[_0xb395('0x51')]])[_0xb395('0x34')](function(_0x3f9917){ut['logger']('[Fax][execOriginate][success]',_0x3f9917);_0x11c453(ut[_0xb395('0x32')](_0xb395('0x52')));})[_0xb395('0x36')](function(_0x46be1d){ut['logger'](_0xb395('0x53'),_0x46be1d);updateStatus(_0x2754b7);_0x305356(ut[_0xb395('0x32')](_0xb395('0x54')));});});};Fax['prototype'][_0xb395('0x55')]=function(_0x15c9c5){var _0x3f1df6=this;return new BPromise(function(_0x532c46,_0x5dba76){var _0x185927=_0x3f1df6[_0xb395('0x56')](_0x3f1df6[_0xb395('0xb')][_0x15c9c5[_0xb395('0x51')]][_0xb395('0x57')],_0x15c9c5);if(_0x185927[_0xb395('0x58')]){_0x532c46(ut[_0xb395('0x32')](_0xb395('0x59')));}else{_0x5dba76(ut[_0xb395('0x32')](_0x185927['message']));}});};function originate(_0x29c619,_0x487b0c,_0x243993){return new BPromise(function(_0x9e04ac,_0x4a90e9){if(_0x243993){var _0x4e52f5=util[_0xb395('0x5a')](_0xb395('0x5b'),path[_0xb395('0x33')](_0x29c619[_0xb395('0x5c')])[_0xb395('0x1f')],_0x29c619['path']);gs[_0xb395('0x5d')](_0x4e52f5)[_0xb395('0x34')](function(){_0x29c619[_0xb395('0x5c')]=util['format']('%s/%s.tif',path['parse'](_0x29c619['path'])[_0xb395('0x5e')],path['parse'](_0x29c619[_0xb395('0x5c')])[_0xb395('0x1f')]);_0x487b0c['XMF-PATH']=_0x29c619[_0xb395('0x5c')];ut['logger']('Convert\x20pdf\x20to\x20tif','');ami[_0xb395('0x5f')](ut[_0xb395('0x60')](_0x29c619,_0x487b0c))['then'](function(_0x17ef47){_0x9e04ac(_0x17ef47);})['catch'](function(_0x2ff657){_0x4a90e9(_0x2ff657);});})[_0xb395('0x36')](function(_0x577d01){_0x4a90e9(_0x577d01);});}else{ami[_0xb395('0x5f')](ut[_0xb395('0x60')](_0x29c619,_0x487b0c))[_0xb395('0x34')](function(_0x5ec3b1){_0x9e04ac(_0x5ec3b1);})[_0xb395('0x36')](function(_0x17111d){_0x4a90e9(_0x17111d);});}});}Fax['prototype'][_0xb395('0x50')]=function(_0x573535,_0x268808){var _0x140876=this;return new BPromise(function(_0x2619f4,_0x233df7){var _0x696296=uuid['v4']();var _0x3ffbe7=ut['addVariables'](_0x573535,_0x268808);_0x140876['actions'][_0x696296]=new Action(_0x696296,_0x268808,_0x573535);var _0x5d4561=_0x140876[_0xb395('0x22')][_0x696296];if(path[_0xb395('0x33')](_0x573535['path'])[_0xb395('0x61')]==='.pdf'){originate(_0x5d4561,_0x3ffbe7,!![])['then'](function(_0x35f81d){_0x2619f4(_0x35f81d);})[_0xb395('0x36')](function(_0x130599){_0x233df7(_0x130599);});}else{originate(_0x5d4561,_0x3ffbe7,![])[_0xb395('0x34')](function(_0x4ea8c6){_0x2619f4(_0x4ea8c6);})[_0xb395('0x36')](function(_0x5d99ff){_0x233df7(_0x5d99ff);});}});};Fax['prototype'][_0xb395('0x62')]=function(_0x211361){return!_[_0xb395('0x63')](_0x211361)&&!_['isNil'](_0x211361[_0xb395('0x1f')])&&!_[_0xb395('0x63')](_0x211361[_0xb395('0x64')])&&_0x211361[_0xb395('0x64')]&&!_['isNil'](this[_0xb395('0xc')][util[_0xb395('0x5a')](_0xb395('0x65'),_0x211361[_0xb395('0x1f')])])&&!_[_0xb395('0x63')](this[_0xb395('0xc')][util[_0xb395('0x5a')]('SIP/%s',_0x211361['name'])][_0xb395('0x28')])&&(this[_0xb395('0xc')][util['format'](_0xb395('0x65'),_0x211361[_0xb395('0x1f')])][_0xb395('0x28')]===_0xb395('0x66')||this[_0xb395('0xc')][util['format'](_0xb395('0x65'),_0x211361[_0xb395('0x1f')])][_0xb395('0x28')]===_0xb395('0x67'));};Fax[_0xb395('0x1a')][_0xb395('0x56')]=function(_0x108f49,_0x2d0f28){if(!this[_0xb395('0x62')](_0x108f49)){ut[_0xb395('0x41')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_[_0xb395('0x63')](_0x108f49)?'':_0x108f49[_0xb395('0x1f')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0xb395('0x68')};}if(_[_0xb395('0x63')](_0x2d0f28['fax'])){ut[_0xb395('0x41')](_0xb395('0x69'),JSON['stringify'](_0x2d0f28));return{'isValid':![],'message':_0xb395('0x6a')};}if(_['isNil'](_0x2d0f28[_0xb395('0x5c')])){ut[_0xb395('0x41')](_0xb395('0x6b'),JSON[_0xb395('0x39')](_0x2d0f28));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0xb395('0x6c')]=Fax;
\ No newline at end of file
index bc8fce0..7e2349d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9030=['notify','then','catch','error'];(function(_0x43a58f,_0x53227c){var _0x27a009=function(_0x439b96){while(--_0x439b96){_0x43a58f['push'](_0x43a58f['shift']());}};_0x27a009(++_0x53227c);}(_0x9030,0x97));var _0x0903=function(_0x42817b,_0x1e923f){_0x42817b=_0x42817b-0x0;var _0x30f2b8=_0x9030[_0x42817b];return _0x30f2b8;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require('../../../config/logger')('preview');var _=require('lodash');var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x309e18){return function(_0x204d8f){logger[_0x0903('0x0')](_0x309e18,util['inspect'](_0x204d8f,{'showHidden':![],'depth':null}));};}exports[_0x0903('0x1')]=function(_0x6e9992,_0x3484ac){return BPromise['resolve']()[_0x0903('0x2')](faxAccount[_0x0903('0x1')](_0x6e9992,_0x3484ac))[_0x0903('0x3')](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
+var _0x6eb7=['lodash','error','inspect','notify','resolve','then','catch','[Notify]\x20','bluebird','preview'];(function(_0x48075c,_0x31e714){var _0x3e5977=function(_0x33e633){while(--_0x33e633){_0x48075c['push'](_0x48075c['shift']());}};_0x3e5977(++_0x31e714);}(_0x6eb7,0xee));var _0x76eb=function(_0x23a851,_0x48c13b){_0x23a851=_0x23a851-0x0;var _0x5b11fe=_0x6eb7[_0x23a851];return _0x5b11fe;};'use strict';var util=require('util');var BPromise=require(_0x76eb('0x0'));var logger=require('../../../config/logger')(_0x76eb('0x1'));var _=require(_0x76eb('0x2'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x33404c){return function(_0x3153fa){logger[_0x76eb('0x3')](_0x33404c,util[_0x76eb('0x4')](_0x3153fa,{'showHidden':![],'depth':null}));};}exports[_0x76eb('0x5')]=function(_0x3186bb,_0x1ee5b6){return BPromise[_0x76eb('0x6')]()[_0x76eb('0x7')](faxAccount['notify'](_0x3186bb,_0x1ee5b6))[_0x76eb('0x8')](loggerCatch(_0x76eb('0x9')));};
\ No newline at end of file
index 6b7b538..46fa0c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff15=['Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger','bluebird','child_process','exec','execute','info'];(function(_0x20e51b,_0x3e9eb6){var _0x4e12a8=function(_0x271b0d){while(--_0x271b0d){_0x20e51b['push'](_0x20e51b['shift']());}};_0x4e12a8(++_0x3e9eb6);}(_0xff15,0x1d9));var _0x5ff1=function(_0x2136a6,_0x35af63){_0x2136a6=_0x2136a6-0x0;var _0x55b948=_0xff15[_0x2136a6];return _0x55b948;};'use strict';var util=require(_0x5ff1('0x0'));var logger=require(_0x5ff1('0x1'))('fax');var BPromise=require(_0x5ff1('0x2'));var exec=require(_0x5ff1('0x3'))[_0x5ff1('0x4')];exports[_0x5ff1('0x5')]=function(_0x17a011){return new BPromise(function(_0x7493e3,_0xc890f){exec(_0x17a011,function(_0x416663,_0x425b6f,_0x5d35eb){logger['info']('Exec\x20gs',_0x425b6f);if(_0x416663){logger[_0x5ff1('0x6')](_0x5ff1('0x7'),_0x5ff1('0x8'),util[_0x5ff1('0x9')](_0x416663,{'showHidden':![],'depth':null}),_0x425b6f,_0x5d35eb);_0xc890f(_0x416663);}_0x7493e3(_0x425b6f);});});};
\ No newline at end of file
+var _0x3b76=['inspect','util','../../../../config/logger','fax','exec','Exec\x20gs','info','\x20Error\x20:'];(function(_0x276bd5,_0x390f28){var _0x236951=function(_0x3693ed){while(--_0x3693ed){_0x276bd5['push'](_0x276bd5['shift']());}};_0x236951(++_0x390f28);}(_0x3b76,0x111));var _0x63b7=function(_0x5d9a50,_0xf9283){_0x5d9a50=_0x5d9a50-0x0;var _0x17e4f4=_0x3b76[_0x5d9a50];return _0x17e4f4;};'use strict';var util=require(_0x63b7('0x0'));var logger=require(_0x63b7('0x1'))(_0x63b7('0x2'));var BPromise=require('bluebird');var exec=require('child_process')[_0x63b7('0x3')];exports['execute']=function(_0x363b61){return new BPromise(function(_0x18ba06,_0x49bd34){exec(_0x363b61,function(_0x27ebf7,_0x4dc582,_0x28b853){logger['info'](_0x63b7('0x4'),_0x4dc582);if(_0x27ebf7){logger[_0x63b7('0x5')](_0x63b7('0x4'),_0x63b7('0x6'),util[_0x63b7('0x7')](_0x27ebf7,{'showHidden':![],'depth':null}),_0x4dc582,_0x28b853);_0x49bd34(_0x27ebf7);}_0x18ba06(_0x4dc582);});});};
\ No newline at end of file
index 8071ed0..59c4430 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bdd=['ecm','headerinfo','minrate','format','\x22%s\x22','modem','faxdetect','t38timeout','path','variablesAction','uniqueid','originate','channel','xcally-motion-fax','localstationid','util','lodash','../../../../config/logger','fax','logger','info','inspect','addVariables'];(function(_0x5c9438,_0x55ed27){var _0x5d6761=function(_0x48b7f6){while(--_0x48b7f6){_0x5c9438['push'](_0x5c9438['shift']());}};_0x5d6761(++_0x55ed27);}(_0x1bdd,0x168));var _0xd1bd=function(_0x31eb67,_0x9bc8c0){_0x31eb67=_0x31eb67-0x0;var _0x2a8cb8=_0x1bdd[_0x31eb67];return _0x2a8cb8;};'use strict';var util=require(_0xd1bd('0x0'));var _=require(_0xd1bd('0x1'));var moment=require('moment');var logger=require(_0xd1bd('0x2'))(_0xd1bd('0x3'));exports['message']=function(_0x1af481){return{'message':_0x1af481};};exports[_0xd1bd('0x4')]=function(_0x3cea96,_0x2bb00f){logger[_0xd1bd('0x5')](_0x3cea96,util[_0xd1bd('0x6')](_0x2bb00f,{'showHidden':![],'depth':null}));};exports[_0xd1bd('0x7')]=function(_0x409a88,_0xed32b4){var _0x50955b={'XMF-ECM':_0xed32b4[_0xd1bd('0x8')],'XMF-HEADERINFO':_0xed32b4[_0xd1bd('0x9')],'XMF-MINRATE':_0xed32b4[_0xd1bd('0xa')],'XMF-MAXRATE':_0xed32b4['maxrate'],'XMF-MODEM':util[_0xd1bd('0xb')](_0xd1bd('0xc'),_0xed32b4[_0xd1bd('0xd')]),'XMF-GATEWAY':_0xed32b4['gateway'],'XMF-FAXDETECT':_0xed32b4[_0xd1bd('0xe')],'XMF-T38TIMEOUT':_0xed32b4[_0xd1bd('0xf')],'XMF-LOCALSTATIONID':_0xed32b4['localstationid'],'XMF-PATH':_0x409a88[_0xd1bd('0x10')]};return _0x50955b;};exports[_0xd1bd('0x11')]=function(_0x1c5345,_0xc29c0e){return{'actionid':_0x1c5345[_0xd1bd('0x12')],'action':_0xd1bd('0x13'),'channel':_0x1c5345[_0xd1bd('0x14')],'Exten':_0xd1bd('0x15'),'Context':'from-sip','Priority':'1','callerid':util['format']('\x22%s\x22\x20<%s>',_0x1c5345[_0xd1bd('0x9')]?_0x1c5345[_0xd1bd('0x9')]:'',_0x1c5345[_0xd1bd('0x16')]),'variable':_0xc29c0e,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x1c5345[_0xd1bd('0x12')]};};
\ No newline at end of file
+var _0xd2c7=['minrate','format','gateway','faxdetect','t38timeout','localstationid','path','variablesAction','uniqueid','originate','xcally-motion-fax','from-sip','headerinfo','fax','message','logger','info','inspect','addVariables','ecm'];(function(_0x5addf7,_0x50785e){var _0xb0746a=function(_0x2ee32b){while(--_0x2ee32b){_0x5addf7['push'](_0x5addf7['shift']());}};_0xb0746a(++_0x50785e);}(_0xd2c7,0x161));var _0x7d2c=function(_0x1bd5ca,_0x516492){_0x1bd5ca=_0x1bd5ca-0x0;var _0x17c956=_0xd2c7[_0x1bd5ca];return _0x17c956;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');var logger=require('../../../../config/logger')(_0x7d2c('0x0'));exports[_0x7d2c('0x1')]=function(_0x6676a0){return{'message':_0x6676a0};};exports[_0x7d2c('0x2')]=function(_0x1791d6,_0x4d95d4){logger[_0x7d2c('0x3')](_0x1791d6,util[_0x7d2c('0x4')](_0x4d95d4,{'showHidden':![],'depth':null}));};exports[_0x7d2c('0x5')]=function(_0x43948d,_0x6ec26c){var _0x46bd48={'XMF-ECM':_0x6ec26c[_0x7d2c('0x6')],'XMF-HEADERINFO':_0x6ec26c['headerinfo'],'XMF-MINRATE':_0x6ec26c[_0x7d2c('0x7')],'XMF-MAXRATE':_0x6ec26c['maxrate'],'XMF-MODEM':util[_0x7d2c('0x8')]('\x22%s\x22',_0x6ec26c['modem']),'XMF-GATEWAY':_0x6ec26c[_0x7d2c('0x9')],'XMF-FAXDETECT':_0x6ec26c[_0x7d2c('0xa')],'XMF-T38TIMEOUT':_0x6ec26c[_0x7d2c('0xb')],'XMF-LOCALSTATIONID':_0x6ec26c[_0x7d2c('0xc')],'XMF-PATH':_0x43948d[_0x7d2c('0xd')]};return _0x46bd48;};exports[_0x7d2c('0xe')]=function(_0x5c0d1e,_0x461f35){return{'actionid':_0x5c0d1e[_0x7d2c('0xf')],'action':_0x7d2c('0x10'),'channel':_0x5c0d1e['channel'],'Exten':_0x7d2c('0x11'),'Context':_0x7d2c('0x12'),'Priority':'1','callerid':util[_0x7d2c('0x8')]('\x22%s\x22\x20<%s>',_0x5c0d1e[_0x7d2c('0x13')]?_0x5c0d1e['headerinfo']:'',_0x5c0d1e[_0x7d2c('0xc')]),'variable':_0x461f35,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x5c0d1e['uniqueid']};};
\ No newline at end of file
index d1eef4f..c1f4f14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb6=['./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','resolve','then','getAgents','getTelephones','initTelephones','initTrunks','initVoiceQueues','initTriggers','getTemplates','initTemplates','getZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getFreshdeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','listen','sync','bluebird','util','moment','./server','./realtime','./report','./acw','./trigger','./dialer','./preview','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/campaign'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x0bb6,0xab));var _0x60bb=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0bb6[_0x321bb2];return _0x9c12ed;};'use strict';var BPromise=require(_0x60bb('0x0'));var util=require(_0x60bb('0x1'));var moment=require(_0x60bb('0x2'));var server=require(_0x60bb('0x3'));var Realtime=require(_0x60bb('0x4'));var Report=require(_0x60bb('0x5'));var Acw=require(_0x60bb('0x6'));var Trigger=require(_0x60bb('0x7'));var Dialer=require(_0x60bb('0x8'));var Preview=require(_0x60bb('0x9'));var Fax=require('./fax');var user=require('./rpc/user');var voiceQueue=require(_0x60bb('0xa'));var voiceQueueReport=require(_0x60bb('0xb'));var voiceCallReport=require(_0x60bb('0xc'));var trunk=require(_0x60bb('0xd'));var trigger=require('./rpc/trigger');var template=require('./rpc/template');var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x60bb('0xe'));var voiceExtension=require(_0x60bb('0xf'));var faxAccount=require(_0x60bb('0x10'));var zendesk=require('./rpc/integrations/zendesk');var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x60bb('0x11'));var freshdesk=require(_0x60bb('0x12'));var desk=require(_0x60bb('0x13'));var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x60bb('0x14'));var freshsales=require(_0x60bb('0x15'));var servicenow=require(_0x60bb('0x16'));var dynamics365=require(_0x60bb('0x17'));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()[_0x60bb('0x18')](_0x60bb('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x60bb('0x18')](_0x60bb('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x60bb('0x1a')]()[_0x60bb('0x1b')](user[_0x60bb('0x1c')]())[_0x60bb('0x1b')](realtime['initAgents']())[_0x60bb('0x1b')](user[_0x60bb('0x1d')]())[_0x60bb('0x1b')](realtime[_0x60bb('0x1e')]())['then'](trunk['getTrunks']())['then'](realtime[_0x60bb('0x1f')]())[_0x60bb('0x1b')](voiceQueue['getVoiceQueues']())[_0x60bb('0x1b')](realtime[_0x60bb('0x20')]())['then'](trigger['getTriggers']())['then'](realtime[_0x60bb('0x21')]())[_0x60bb('0x1b')](template[_0x60bb('0x22')]())[_0x60bb('0x1b')](realtime[_0x60bb('0x23')]())[_0x60bb('0x1b')](zendesk[_0x60bb('0x24')]())['then'](realtime['initZendeskAccounts']())[_0x60bb('0x1b')](salesforce[_0x60bb('0x25')]())[_0x60bb('0x1b')](realtime[_0x60bb('0x26')]())['then'](sugarcrm['getSugarcrmAccounts']())[_0x60bb('0x1b')](realtime['initSugarcrmAccounts']())[_0x60bb('0x1b')](freshdesk[_0x60bb('0x27')]())[_0x60bb('0x1b')](realtime['initFreshdeskAccounts']())[_0x60bb('0x1b')](desk['getDeskAccounts']())[_0x60bb('0x1b')](realtime['initDeskAccounts']())[_0x60bb('0x1b')](zoho[_0x60bb('0x28')]())['then'](realtime[_0x60bb('0x29')]())[_0x60bb('0x1b')](vtiger[_0x60bb('0x2a')]())[_0x60bb('0x1b')](realtime['initVtigerAccounts']())['then'](freshsales['getFreshsalesAccounts']())[_0x60bb('0x1b')](realtime['initFreshsalesAccounts']())[_0x60bb('0x1b')](servicenow[_0x60bb('0x2b')]())[_0x60bb('0x1b')](realtime['initServicenowAccounts']())[_0x60bb('0x1b')](dynamics365[_0x60bb('0x2c')]())[_0x60bb('0x1b')](realtime[_0x60bb('0x2d')]())[_0x60bb('0x1b')](campaign['getCampaigns']())['then'](realtime[_0x60bb('0x2e')]())[_0x60bb('0x1b')](voiceExtension[_0x60bb('0x2f')]())[_0x60bb('0x1b')](realtime[_0x60bb('0x30')]())['then'](faxAccount[_0x60bb('0x31')]())[_0x60bb('0x1b')](realtime[_0x60bb('0x32')]())[_0x60bb('0x1b')](function(){return realtime;});}function initParams(){return BPromise[_0x60bb('0x1a')]()['then'](voiceQueueReport['getVoiceQueueReports']())[_0x60bb('0x1b')](realtime[_0x60bb('0x33')]())[_0x60bb('0x1b')](cmHopperHistory[_0x60bb('0x34')]())[_0x60bb('0x1b')](realtime[_0x60bb('0x35')]())['then'](cmHopperHistory[_0x60bb('0x36')]())[_0x60bb('0x1b')](realtime[_0x60bb('0x37')]())['then'](voiceCallReport[_0x60bb('0x38')]())[_0x60bb('0x1b')](realtime[_0x60bb('0x39')]())[_0x60bb('0x1b')](function(_0x2b4a73){})[_0x60bb('0x3a')](function(_0x509a6a){console[_0x60bb('0x3b')](_0x509a6a);});}function main(){return server[_0x60bb('0x3c')](realtime,preview,fax)['then'](function(_0x20db13){return initRealtime();})[_0x60bb('0x1b')](function(){return initParams();})[_0x60bb('0x1b')](function(){report[_0x60bb('0x3d')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x294cd4){console['log'](_0x294cd4);});}main();
\ No newline at end of file
+var _0x13b7=['initZohoAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','initCampaigns','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','log','listen','bluebird','util','moment','./server','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','resolve','getAgents','then','initAgents','initTelephones','getTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts'];(function(_0x1132e4,_0xd3864a){var _0x176484=function(_0x514760){while(--_0x514760){_0x1132e4['push'](_0x1132e4['shift']());}};_0x176484(++_0xd3864a);}(_0x13b7,0x134));var _0x713b=function(_0x2551dd,_0x5ba066){_0x2551dd=_0x2551dd-0x0;var _0x905704=_0x13b7[_0x2551dd];return _0x905704;};'use strict';var BPromise=require(_0x713b('0x0'));var util=require(_0x713b('0x1'));var moment=require(_0x713b('0x2'));var server=require(_0x713b('0x3'));var Realtime=require(_0x713b('0x4'));var Report=require(_0x713b('0x5'));var Acw=require(_0x713b('0x6'));var Trigger=require(_0x713b('0x7'));var Dialer=require(_0x713b('0x8'));var Preview=require(_0x713b('0x9'));var Fax=require(_0x713b('0xa'));var user=require(_0x713b('0xb'));var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require(_0x713b('0xc'));var voiceCallReport=require(_0x713b('0xd'));var trunk=require(_0x713b('0xe'));var trigger=require(_0x713b('0xf'));var template=require(_0x713b('0x10'));var cmHopperHistory=require(_0x713b('0x11'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0x713b('0x12'));var faxAccount=require(_0x713b('0x13'));var zendesk=require(_0x713b('0x14'));var salesforce=require(_0x713b('0x15'));var sugarcrm=require(_0x713b('0x16'));var freshdesk=require(_0x713b('0x17'));var desk=require(_0x713b('0x18'));var zoho=require(_0x713b('0x19'));var vtiger=require(_0x713b('0x1a'));var freshsales=require(_0x713b('0x1b'));var servicenow=require(_0x713b('0x1c'));var dynamics365=require(_0x713b('0x1d'));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()[_0x713b('0x1e')](_0x713b('0x1f'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x713b('0x1f'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x713b('0x20')]()['then'](user[_0x713b('0x21')]())[_0x713b('0x22')](realtime[_0x713b('0x23')]())['then'](user['getTelephones']())[_0x713b('0x22')](realtime[_0x713b('0x24')]())[_0x713b('0x22')](trunk[_0x713b('0x25')]())[_0x713b('0x22')](realtime['initTrunks']())[_0x713b('0x22')](voiceQueue[_0x713b('0x26')]())[_0x713b('0x22')](realtime[_0x713b('0x27')]())['then'](trigger[_0x713b('0x28')]())[_0x713b('0x22')](realtime[_0x713b('0x29')]())[_0x713b('0x22')](template[_0x713b('0x2a')]())[_0x713b('0x22')](realtime[_0x713b('0x2b')]())[_0x713b('0x22')](zendesk[_0x713b('0x2c')]())['then'](realtime['initZendeskAccounts']())[_0x713b('0x22')](salesforce[_0x713b('0x2d')]())['then'](realtime[_0x713b('0x2e')]())[_0x713b('0x22')](sugarcrm['getSugarcrmAccounts']())[_0x713b('0x22')](realtime[_0x713b('0x2f')]())[_0x713b('0x22')](freshdesk[_0x713b('0x30')]())['then'](realtime[_0x713b('0x31')]())[_0x713b('0x22')](desk['getDeskAccounts']())[_0x713b('0x22')](realtime[_0x713b('0x32')]())[_0x713b('0x22')](zoho[_0x713b('0x33')]())[_0x713b('0x22')](realtime[_0x713b('0x34')]())[_0x713b('0x22')](vtiger['getVtigerAccounts']())['then'](realtime[_0x713b('0x35')]())[_0x713b('0x22')](freshsales[_0x713b('0x36')]())[_0x713b('0x22')](realtime[_0x713b('0x37')]())[_0x713b('0x22')](servicenow[_0x713b('0x38')]())[_0x713b('0x22')](realtime[_0x713b('0x39')]())[_0x713b('0x22')](dynamics365[_0x713b('0x3a')]())[_0x713b('0x22')](realtime[_0x713b('0x3b')]())['then'](campaign['getCampaigns']())[_0x713b('0x22')](realtime[_0x713b('0x3c')]())[_0x713b('0x22')](voiceExtension['getVoiceExtensions']())[_0x713b('0x22')](realtime['initVoiceExtensions']())[_0x713b('0x22')](faxAccount[_0x713b('0x3d')]())[_0x713b('0x22')](realtime[_0x713b('0x3e')]())['then'](function(){return realtime;});}function initParams(){return BPromise['resolve']()[_0x713b('0x22')](voiceQueueReport[_0x713b('0x3f')]())[_0x713b('0x22')](realtime[_0x713b('0x40')]())[_0x713b('0x22')](cmHopperHistory[_0x713b('0x41')]())[_0x713b('0x22')](realtime['initVoiceQueueHopperHistory']())[_0x713b('0x22')](cmHopperHistory[_0x713b('0x42')]())[_0x713b('0x22')](realtime[_0x713b('0x43')]())[_0x713b('0x22')](voiceCallReport[_0x713b('0x44')]())[_0x713b('0x22')](realtime[_0x713b('0x45')]())[_0x713b('0x22')](function(_0x3fd8c8){})['catch'](function(_0x16df77){console[_0x713b('0x46')](_0x16df77);});}function main(){return server[_0x713b('0x47')](realtime,preview,fax)[_0x713b('0x22')](function(_0x1a7e9b){return initRealtime();})[_0x713b('0x22')](function(){return initParams();})['then'](function(){report['sync']();setInterval(initRealtime,0x1388);})['catch'](function(_0x20f9ab){console[_0x713b('0x46')](_0x20f9ab);});}main();
\ No newline at end of file
index 355f01a..07778b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['idle','inuse','talking','voiceStatusTime','toNumber','format','voiceStatusQueue','stringify','user:%s','emit','user:save','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusCallerIdNumber','onhold','local','prototype','state','toLowerCase','not_inuse'];(function(_0x3b47a3,_0x509bf6){var _0x4a113e=function(_0x488fda){while(--_0x488fda){_0x3b47a3['push'](_0x3b47a3['shift']());}};_0x4a113e(++_0x509bf6);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var md5=require(_0x3071('0x1'));var Redis=require(_0x3071('0x2'));var config=require(_0x3071('0x3'));config[_0x3071('0x4')]=_['defaults'](config[_0x3071('0x4')],{'host':_0x3071('0x5'),'port':0x18eb});var io=require(_0x3071('0x6'))(new Redis(config[_0x3071('0x4')]));function Agent(_0xabd7b6){this['id']=_0xabd7b6['id']||0x0;this[_0x3071('0x7')]=_0xabd7b6[_0x3071('0x7')]||'';this[_0x3071('0x8')]=_0xabd7b6[_0x3071('0x8')]||'';this[_0x3071('0x9')]=_0xabd7b6[_0x3071('0x9')]||'';this[_0x3071('0xa')]=_0xabd7b6[_0x3071('0xa')]||'';this['state']=_0x3071('0xb');this[_0x3071('0xc')]=0x0;this[_0x3071('0xd')]=_0x3071('0xb');this[_0x3071('0xe')]='';this['phone']='';this[_0x3071('0xf')]='';this[_0x3071('0x10')]='';this[_0x3071('0x11')]=_0xabd7b6[_0x3071('0x11')]||![];this[_0x3071('0x12')]='unknown';this['voiceStatusTime']=0x0;this[_0x3071('0x13')]='';this['voiceStatusQueue']='';this[_0x3071('0x14')]=![];this[_0x3071('0x15')]=![];this['md5']='';}Agent[_0x3071('0x16')]['updateStatusRealtime']=function(_0x2fc15d){var _0x45c93b;if(_0x2fc15d&&_0x2fc15d[_0x3071('0x17')]){_0x45c93b=_0x2fc15d[_0x3071('0x17')][_0x3071('0x18')]();switch(_0x45c93b){case _0x3071('0x19'):_0x45c93b=_0x3071('0x1a');break;case _0x3071('0x1b'):_0x45c93b=_0x3071('0x1c');break;}}if(_0x45c93b&&this[_0x3071('0x12')]!==_0x45c93b||_0x2fc15d['statePause']){this[_0x3071('0x1d')]=_[_0x3071('0x1e')](moment()[_0x3071('0x1f')]('x'));}if(_0x45c93b){this[_0x3071('0x12')]=_0x45c93b;}var _0x3acf0e={'id':this['id'],'name':this[_0x3071('0x7')],'email':this[_0x3071('0x8')],'accountcode':this[_0x3071('0x9')],'fullname':this['fullname'],'state':this[_0x3071('0x17')],'stateTime':this[_0x3071('0xc')],'status':this[_0x3071('0xd')],'address':this['address'],'online':this[_0x3071('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x3071('0x1d')],'voiceStatusCallerIdNumber':this[_0x3071('0x13')],'voiceStatusQueue':this[_0x3071('0x20')],'interface':this[_0x3071('0x10')],'onhold':this[_0x3071('0x14')]};var _0x34c50e=md5(JSON[_0x3071('0x21')](_0x3acf0e));if(this[_0x3071('0x1')]!==_0x34c50e){this['md5']=_0x34c50e;io['to'](util['format'](_0x3071('0x22'),_0x3acf0e[_0x3071('0x7')]))[_0x3071('0x23')](_0x3071('0x24'),_0x3acf0e);io[_0x3071('0x23')](_0x3071('0x25'),_0x3acf0e);}};module[_0x3071('0x26')]=Agent;
\ No newline at end of file
+var _0x9c44=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','onhold','local','prototype','updateStatusRealtime','toLowerCase','not_inuse','idle','inuse','talking','statePause','stateTime','address','voiceStatusQueue','stringify','format','user:%s','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','state','status','unknown'];(function(_0x174bd5,_0xffd194){var _0x218719=function(_0xc49d8c){while(--_0xc49d8c){_0x174bd5['push'](_0x174bd5['shift']());}};_0x218719(++_0xffd194);}(_0x9c44,0x178));var _0x49c4=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x9c44[_0x550d12];return _0x12103d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var Redis=require(_0x49c4('0x2'));var config=require(_0x49c4('0x3'));config[_0x49c4('0x4')]=_[_0x49c4('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x49c4('0x6'))(new Redis(config['redis']));function Agent(_0xc1278f){this['id']=_0xc1278f['id']||0x0;this[_0x49c4('0x7')]=_0xc1278f[_0x49c4('0x7')]||'';this[_0x49c4('0x8')]=_0xc1278f[_0x49c4('0x8')]||'';this['accountcode']=_0xc1278f[_0x49c4('0x9')]||'';this[_0x49c4('0xa')]=_0xc1278f[_0x49c4('0xa')]||'';this[_0x49c4('0xb')]='unknown';this['stateTime']=0x0;this[_0x49c4('0xc')]=_0x49c4('0xd');this['address']='';this[_0x49c4('0xe')]='';this[_0x49c4('0xf')]='';this['interface']='';this['online']=_0xc1278f[_0x49c4('0x10')]||![];this[_0x49c4('0x11')]='unknown';this[_0x49c4('0x12')]=0x0;this[_0x49c4('0x13')]='';this['voiceStatusQueue']='';this[_0x49c4('0x14')]=![];this[_0x49c4('0x15')]=![];this[_0x49c4('0x1')]='';}Agent[_0x49c4('0x16')][_0x49c4('0x17')]=function(_0x18211c){var _0x75ea8;if(_0x18211c&&_0x18211c[_0x49c4('0xb')]){_0x75ea8=_0x18211c['state'][_0x49c4('0x18')]();switch(_0x75ea8){case _0x49c4('0x19'):_0x75ea8=_0x49c4('0x1a');break;case _0x49c4('0x1b'):_0x75ea8=_0x49c4('0x1c');break;}}if(_0x75ea8&&this['voiceStatus']!==_0x75ea8||_0x18211c[_0x49c4('0x1d')]){this[_0x49c4('0x12')]=_['toNumber'](moment()['format']('x'));}if(_0x75ea8){this[_0x49c4('0x11')]=_0x75ea8;}var _0x2f82d5={'id':this['id'],'name':this[_0x49c4('0x7')],'email':this['email'],'accountcode':this[_0x49c4('0x9')],'fullname':this['fullname'],'state':this[_0x49c4('0xb')],'stateTime':this[_0x49c4('0x1e')],'status':this[_0x49c4('0xc')],'address':this[_0x49c4('0x1f')],'online':this[_0x49c4('0x10')],'voiceStatus':this[_0x49c4('0x11')],'voiceStatusTime':this[_0x49c4('0x12')],'voiceStatusCallerIdNumber':this[_0x49c4('0x13')],'voiceStatusQueue':this[_0x49c4('0x20')],'interface':this['interface'],'onhold':this['onhold']};var _0x57f502=md5(JSON[_0x49c4('0x21')](_0x2f82d5));if(this['md5']!==_0x57f502){this['md5']=_0x57f502;io['to'](util[_0x49c4('0x22')](_0x49c4('0x23'),_0x2f82d5[_0x49c4('0x7')]))[_0x49c4('0x24')]('user:save',_0x2f82d5);io['emit'](_0x49c4('0x25'),_0x2f82d5);}};module[_0x49c4('0x26')]=Agent;
\ No newline at end of file
index 0dd2f9c..2f154c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02f1=['ivrAnswerCallsDay','ivrTotalCallsDays','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','campaign','originated'];(function(_0x174ffe,_0x4de73b){var _0x40c57e=function(_0x5b8741){while(--_0x5b8741){_0x174ffe['push'](_0x174ffe['shift']());}};_0x40c57e(++_0x4de73b);}(_0x02f1,0x11c));var _0x102f=function(_0x2d032d,_0x3a7a67){_0x2d032d=_0x2d032d-0x0;var _0x1624e7=_0x02f1[_0x2d032d];return _0x1624e7;};'use strict';function Campaign(_0x1ef6ec){this['id']=_0x1ef6ec['id']||0x0;this[_0x102f('0x0')]=_0x1ef6ec['name']||'';this['type']=_0x1ef6ec[_0x102f('0x1')]||_0x102f('0x2');this[_0x102f('0x3')]=0x0;this['temp']=0x0;this[_0x102f('0x4')]=0x0;this[_0x102f('0x5')]=0x0;this['message']='';this[_0x102f('0x6')]=!![];this['active']=_0x1ef6ec[_0x102f('0x7')];this[_0x102f('0x8')]=_0x1ef6ec[_0x102f('0x8')];this['dialTimezone']=_0x1ef6ec[_0x102f('0x9')]||null;this[_0x102f('0xa')]=_0x1ef6ec[_0x102f('0xa')]?_0x1ef6ec[_0x102f('0xa')]:null;this[_0x102f('0xb')]=_0x1ef6ec[_0x102f('0xb')];this[_0x102f('0xc')]=_0x1ef6ec[_0x102f('0xc')];this[_0x102f('0xd')]=_0x1ef6ec[_0x102f('0xd')]||0x1e;this[_0x102f('0xe')]=_0x1ef6ec[_0x102f('0xe')];this[_0x102f('0xf')]=_0x1ef6ec['dialCongestionRetryFrequency'];this[_0x102f('0x10')]=_0x1ef6ec[_0x102f('0x10')];this[_0x102f('0x11')]=_0x1ef6ec[_0x102f('0x11')];this[_0x102f('0x12')]=_0x1ef6ec['dialNoAnswerMaxRetry'];this[_0x102f('0x13')]=_0x1ef6ec['dialNoAnswerRetryFrequency'];this[_0x102f('0x14')]=_0x1ef6ec[_0x102f('0x14')];this['dialNoSuchNumberMaxRetry']=_0x1ef6ec['dialNoSuchNumberMaxRetry']||0x3;this['dialNoSuchNumberRetryFrequency']=_0x1ef6ec[_0x102f('0x15')]||0x96;this[_0x102f('0x16')]=_0x1ef6ec[_0x102f('0x16')]||0x3;this[_0x102f('0x17')]=_0x1ef6ec['dialDropRetryFrequency']||0x96;this[_0x102f('0x18')]=_0x1ef6ec[_0x102f('0x18')]||0x3;this[_0x102f('0x19')]=_0x1ef6ec[_0x102f('0x19')]||0x96;this[_0x102f('0x1a')]=_0x1ef6ec[_0x102f('0x1a')]||0x3;this[_0x102f('0x1b')]=_0x1ef6ec[_0x102f('0x1b')]||0x96;this[_0x102f('0x1c')]=_0x1ef6ec[_0x102f('0x1c')]||0x3;this[_0x102f('0x1d')]=_0x1ef6ec[_0x102f('0x1d')]||0x96;this['dialOrderByScheduledAt']=_0x1ef6ec[_0x102f('0x1e')]||_0x102f('0x1f');this['dialPrefix']=_0x1ef6ec[_0x102f('0x20')]||undefined;this[_0x102f('0x21')]=_0x1ef6ec[_0x102f('0x21')]||undefined;this[_0x102f('0x22')]=_0x1ef6ec[_0x102f('0x22')]||undefined;this[_0x102f('0x23')]=_0x1ef6ec[_0x102f('0x23')]?_0x1ef6ec[_0x102f('0x23')]:undefined;this['Trunk']=_0x1ef6ec[_0x102f('0x24')]?_0x1ef6ec[_0x102f('0x24')]:undefined;this['Interval']=_0x1ef6ec[_0x102f('0x25')]?_0x1ef6ec[_0x102f('0x25')]:undefined;this[_0x102f('0x26')]=_0x1ef6ec['SquareProject']?_0x1ef6ec[_0x102f('0x26')]:undefined;this[_0x102f('0x27')]=_0x1ef6ec['SquareProject']?_0x1ef6ec[_0x102f('0x26')]['name']:undefined;this['dialAMDActive']=_0x1ef6ec['dialAMDActive']||![];this['dialAMDInitialSilence']=_0x1ef6ec[_0x102f('0x28')];this[_0x102f('0x29')]=_0x1ef6ec[_0x102f('0x29')];this[_0x102f('0x2a')]=_0x1ef6ec[_0x102f('0x2a')];this[_0x102f('0x2b')]=_0x1ef6ec['dialAMDTotalAnalysisTime'];this[_0x102f('0x2c')]=_0x1ef6ec[_0x102f('0x2c')];this['dialAMDBetweenWordsSilence']=_0x1ef6ec['dialAMDBetweenWordsSilence'];this[_0x102f('0x2d')]=_0x1ef6ec[_0x102f('0x2d')];this[_0x102f('0x2e')]=_0x1ef6ec['dialAMDSilenceThreshold'];this[_0x102f('0x2f')]=_0x1ef6ec[_0x102f('0x2f')];}module['exports']=Campaign;
\ No newline at end of file
+var _0x3567=['dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','campaign','originated','temp','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x3567,0xd6));var _0x7356=function(_0x369ea1,_0x487dd8){_0x369ea1=_0x369ea1-0x0;var _0x1df445=_0x3567[_0x369ea1];return _0x1df445;};'use strict';function Campaign(_0x3bb0ce){this['id']=_0x3bb0ce['id']||0x0;this[_0x7356('0x0')]=_0x3bb0ce[_0x7356('0x0')]||'';this['type']=_0x3bb0ce['type']||_0x7356('0x1');this[_0x7356('0x2')]=0x0;this[_0x7356('0x3')]=0x0;this['ivrAnswerCallsDay']=0x0;this['ivrTotalCallsDays']=0x0;this['message']='';this[_0x7356('0x4')]=!![];this[_0x7356('0x5')]=_0x3bb0ce['active'];this[_0x7356('0x6')]=_0x3bb0ce[_0x7356('0x6')];this[_0x7356('0x7')]=_0x3bb0ce['dialTimezone']||null;this[_0x7356('0x8')]=_0x3bb0ce[_0x7356('0x8')]?_0x3bb0ce['dialGlobalInterval']:null;this['dialOriginateCallerIdName']=_0x3bb0ce[_0x7356('0x9')];this[_0x7356('0xa')]=_0x3bb0ce['dialOriginateCallerIdNumber'];this[_0x7356('0xb')]=_0x3bb0ce[_0x7356('0xb')]||0x1e;this[_0x7356('0xc')]=_0x3bb0ce[_0x7356('0xc')];this[_0x7356('0xd')]=_0x3bb0ce[_0x7356('0xd')];this['dialBusyMaxRetry']=_0x3bb0ce[_0x7356('0xe')];this['dialBusyRetryFrequency']=_0x3bb0ce[_0x7356('0xf')];this[_0x7356('0x10')]=_0x3bb0ce[_0x7356('0x10')];this[_0x7356('0x11')]=_0x3bb0ce['dialNoAnswerRetryFrequency'];this[_0x7356('0x12')]=_0x3bb0ce[_0x7356('0x12')];this[_0x7356('0x13')]=_0x3bb0ce[_0x7356('0x13')]||0x3;this[_0x7356('0x14')]=_0x3bb0ce[_0x7356('0x14')]||0x96;this[_0x7356('0x15')]=_0x3bb0ce[_0x7356('0x15')]||0x3;this['dialDropRetryFrequency']=_0x3bb0ce['dialDropRetryFrequency']||0x96;this[_0x7356('0x16')]=_0x3bb0ce['dialAbandonedMaxRetry']||0x3;this[_0x7356('0x17')]=_0x3bb0ce['dialAbandonedRetryFrequency']||0x96;this[_0x7356('0x18')]=_0x3bb0ce['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x3bb0ce[_0x7356('0x19')]||0x96;this[_0x7356('0x1a')]=_0x3bb0ce[_0x7356('0x1a')]||0x3;this['dialAgentRejectRetryFrequency']=_0x3bb0ce[_0x7356('0x1b')]||0x96;this[_0x7356('0x1c')]=_0x3bb0ce['dialOrderByScheduledAt']||'DESC';this[_0x7356('0x1d')]=_0x3bb0ce[_0x7356('0x1d')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x3bb0ce[_0x7356('0x1e')]||undefined;this['dialCutDigit']=_0x3bb0ce['dialCutDigit']||undefined;this[_0x7356('0x1f')]=_0x3bb0ce['TrunkBackup']?_0x3bb0ce[_0x7356('0x1f')]:undefined;this[_0x7356('0x20')]=_0x3bb0ce['Trunk']?_0x3bb0ce[_0x7356('0x20')]:undefined;this['Interval']=_0x3bb0ce[_0x7356('0x21')]?_0x3bb0ce[_0x7356('0x21')]:undefined;this[_0x7356('0x22')]=_0x3bb0ce[_0x7356('0x22')]?_0x3bb0ce[_0x7356('0x22')]:undefined;this[_0x7356('0x23')]=_0x3bb0ce[_0x7356('0x22')]?_0x3bb0ce['SquareProject']['name']:undefined;this[_0x7356('0x24')]=_0x3bb0ce['dialAMDActive']||![];this[_0x7356('0x25')]=_0x3bb0ce[_0x7356('0x25')];this[_0x7356('0x26')]=_0x3bb0ce[_0x7356('0x26')];this[_0x7356('0x27')]=_0x3bb0ce[_0x7356('0x27')];this[_0x7356('0x28')]=_0x3bb0ce[_0x7356('0x28')];this['dialAMDMinWordLength']=_0x3bb0ce[_0x7356('0x29')];this[_0x7356('0x2a')]=_0x3bb0ce[_0x7356('0x2a')];this[_0x7356('0x2b')]=_0x3bb0ce[_0x7356('0x2b')];this[_0x7356('0x2c')]=_0x3bb0ce[_0x7356('0x2c')];this[_0x7356('0x2d')]=_0x3bb0ce[_0x7356('0x2d')];}module[_0x7356('0x2e')]=Campaign;
\ No newline at end of file
index 96a02ca..ec5615c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1681=['answertime','endtime','abandoned','lastdata','duration','holdtime','type','disposition','monitor','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','linkedid','exten'];(function(_0x381954,_0x323506){var _0x34ebec=function(_0xc5753a){while(--_0xc5753a){_0x381954['push'](_0x381954['shift']());}};_0x34ebec(++_0x323506);}(_0x1681,0x12c));var _0x1168=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1681[_0x3dd15e];return _0x231fd0;};'use strict';function Channel(){this['starttime']=null;this['channel']='';this[_0x1168('0x0')]='';this[_0x1168('0x1')]=0x0;this[_0x1168('0x2')]='';this[_0x1168('0x3')]=undefined;this[_0x1168('0x4')]=undefined;this[_0x1168('0x5')]=0x0;this['context']='';this['uniqueid']=0x0;this[_0x1168('0x6')]=0x0;this[_0x1168('0x7')]=0x0;this['answered']=![];this[_0x1168('0x8')]=null;this[_0x1168('0x9')]=null;this['unmanaged']=![];this[_0x1168('0xa')]=![];this['lastapplication']='';this[_0x1168('0xb')]='';this[_0x1168('0xc')]=0x0;this['billableseconds']=0x0;this[_0x1168('0xd')]=0x0;this[_0x1168('0xe')]=null;this['tag']=null;this[_0x1168('0xf')]=null;this[_0x1168('0x10')]=![];this['monitorFilename']=null;this['queue']=null;this[_0x1168('0x11')]=[];this[_0x1168('0x12')]=undefined;this[_0x1168('0x13')]=undefined;this[_0x1168('0x14')]=undefined;this[_0x1168('0x15')]=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0xe98f=['queue','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','starttime','destinationchannel','calleridname','connectedlinenum','context','linkedid','exten','answertime','unmanaged','abandoned','lastapplication','duration','billableseconds','type','tag','disposition','monitor','monitorFilename'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0xe98f,0xde));var _0xfe98=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xe98f[_0x42cae2];return _0x5f256f;};'use strict';function Channel(){this[_0xfe98('0x0')]=null;this['channel']='';this[_0xfe98('0x1')]='';this['calleridnum']=0x0;this[_0xfe98('0x2')]='';this[_0xfe98('0x3')]=undefined;this['connectedlinename']=undefined;this['accountcode']=0x0;this[_0xfe98('0x4')]='';this['uniqueid']=0x0;this[_0xfe98('0x5')]=0x0;this[_0xfe98('0x6')]=0x0;this['answered']=![];this[_0xfe98('0x7')]=null;this['endtime']=null;this[_0xfe98('0x8')]=![];this[_0xfe98('0x9')]=![];this[_0xfe98('0xa')]='';this['lastdata']='';this[_0xfe98('0xb')]=0x0;this[_0xfe98('0xc')]=0x0;this['holdtime']=0x0;this[_0xfe98('0xd')]=null;this[_0xfe98('0xe')]=null;this[_0xfe98('0xf')]=null;this[_0xfe98('0x10')]=![];this[_0xfe98('0x11')]=null;this[_0xfe98('0x12')]=null;this['monitors']=[];this[_0xfe98('0x13')]=undefined;this[_0xfe98('0x14')]=undefined;this[_0xfe98('0x15')]=undefined;this[_0xfe98('0x16')]=0x0;}module[_0xfe98('0x17')]=Channel;
\ No newline at end of file
index c994bc5..bb9a049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x644c=['name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','Configurations','exports'];(function(_0x218994,_0x2cf487){var _0x3f350b=function(_0x2e2065){while(--_0x2e2065){_0x218994['push'](_0x218994['shift']());}};_0x3f350b(++_0x2cf487);}(_0x644c,0x150));var _0xc644=function(_0x38c1f6,_0x1a38c8){_0x38c1f6=_0x38c1f6-0x0;var _0x2e5044=_0x644c[_0x38c1f6];return _0x2e5044;};'use strict';function DeskAccount(_0x2d7e6e){this['id']=_0x2d7e6e['id']||0x0;this[_0xc644('0x0')]=_0x2d7e6e[_0xc644('0x0')]||'';this[_0xc644('0x1')]=_0x2d7e6e['username']||'';this['remoteUri']=_0x2d7e6e[_0xc644('0x2')]||'';this[_0xc644('0x3')]=_0x2d7e6e[_0xc644('0x3')]||'';this[_0xc644('0x4')]=_0x2d7e6e[_0xc644('0x4')]||'';this['consumerKey']=_0x2d7e6e[_0xc644('0x5')]||'';this[_0xc644('0x6')]=_0x2d7e6e[_0xc644('0x6')]||'';this[_0xc644('0x7')]=_0x2d7e6e['token']||'';this['tokenSecret']=_0x2d7e6e[_0xc644('0x8')]||'';this[_0xc644('0x9')]=_0x2d7e6e[_0xc644('0x9')]||'';this['serverUrl']=_0x2d7e6e['serverUrl']||'';this['Configurations']=_0x2d7e6e[_0xc644('0xa')]||{};}module[_0xc644('0xb')]=DeskAccount;
\ No newline at end of file
+var _0x3e3c=['serverUrl','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret'];(function(_0x5a6159,_0x21eb22){var _0x60d15c=function(_0x4aed5b){while(--_0x4aed5b){_0x5a6159['push'](_0x5a6159['shift']());}};_0x60d15c(++_0x21eb22);}(_0x3e3c,0xd3));var _0xc3e3=function(_0x5f57de,_0x4f0f15){_0x5f57de=_0x5f57de-0x0;var _0x465f50=_0x3e3c[_0x5f57de];return _0x465f50;};'use strict';function DeskAccount(_0x2f604e){this['id']=_0x2f604e['id']||0x0;this[_0xc3e3('0x0')]=_0x2f604e['name']||'';this[_0xc3e3('0x1')]=_0x2f604e[_0xc3e3('0x1')]||'';this[_0xc3e3('0x2')]=_0x2f604e[_0xc3e3('0x2')]||'';this[_0xc3e3('0x3')]=_0x2f604e['authType']||'';this[_0xc3e3('0x4')]=_0x2f604e['password']||'';this[_0xc3e3('0x5')]=_0x2f604e[_0xc3e3('0x5')]||'';this[_0xc3e3('0x6')]=_0x2f604e['consumerSecret']||'';this[_0xc3e3('0x7')]=_0x2f604e[_0xc3e3('0x7')]||'';this['tokenSecret']=_0x2f604e[_0xc3e3('0x8')]||'';this['type']=_0x2f604e['type']||'';this[_0xc3e3('0x9')]=_0x2f604e[_0xc3e3('0x9')]||'';this['Configurations']=_0x2f604e['Configurations']||{};}module[_0xc3e3('0xa')]=DeskAccount;
\ No newline at end of file
index a2d937a..dad553d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2750=['clientId','clientSecret','serverUrl','Configurations','exports','name','username','password','remoteUri','tenantId'];(function(_0x53bbdb,_0x3dc0ac){var _0x38ab88=function(_0x4faecd){while(--_0x4faecd){_0x53bbdb['push'](_0x53bbdb['shift']());}};_0x38ab88(++_0x3dc0ac);}(_0x2750,0x13b));var _0x0275=function(_0x4503ab,_0x47dd8e){_0x4503ab=_0x4503ab-0x0;var _0x1cd5db=_0x2750[_0x4503ab];return _0x1cd5db;};'use strict';function Dynamics365Account(_0x1c9f4d){this['id']=_0x1c9f4d['id']||0x0;this['name']=_0x1c9f4d[_0x0275('0x0')]||'';this[_0x0275('0x1')]=_0x1c9f4d[_0x0275('0x1')]||'';this[_0x0275('0x2')]=_0x1c9f4d[_0x0275('0x2')]||'';this[_0x0275('0x3')]=_0x1c9f4d[_0x0275('0x3')]||'';this[_0x0275('0x4')]=_0x1c9f4d[_0x0275('0x4')]||'';this[_0x0275('0x5')]=_0x1c9f4d['clientId']||'';this[_0x0275('0x6')]=_0x1c9f4d[_0x0275('0x6')]||{};this[_0x0275('0x7')]=_0x1c9f4d[_0x0275('0x7')]||'';this['Configurations']=_0x1c9f4d[_0x0275('0x8')]||{};}module[_0x0275('0x9')]=Dynamics365Account;
\ No newline at end of file
+var _0x2750=['clientId','clientSecret','serverUrl','Configurations','exports','name','username','password','remoteUri','tenantId'];(function(_0xd9bd4,_0x50f476){var _0xa57008=function(_0x11a592){while(--_0x11a592){_0xd9bd4['push'](_0xd9bd4['shift']());}};_0xa57008(++_0x50f476);}(_0x2750,0x13b));var _0x0275=function(_0xd5ff47,_0x44cc5b){_0xd5ff47=_0xd5ff47-0x0;var _0x31d514=_0x2750[_0xd5ff47];return _0x31d514;};'use strict';function Dynamics365Account(_0x1c9f4d){this['id']=_0x1c9f4d['id']||0x0;this['name']=_0x1c9f4d[_0x0275('0x0')]||'';this[_0x0275('0x1')]=_0x1c9f4d[_0x0275('0x1')]||'';this[_0x0275('0x2')]=_0x1c9f4d[_0x0275('0x2')]||'';this[_0x0275('0x3')]=_0x1c9f4d[_0x0275('0x3')]||'';this[_0x0275('0x4')]=_0x1c9f4d[_0x0275('0x4')]||'';this[_0x0275('0x5')]=_0x1c9f4d['clientId']||'';this[_0x0275('0x6')]=_0x1c9f4d[_0x0275('0x6')]||{};this[_0x0275('0x7')]=_0x1c9f4d[_0x0275('0x7')]||'';this['Configurations']=_0x1c9f4d[_0x0275('0x8')]||{};}module[_0x0275('0x9')]=Dynamics365Account;
\ No newline at end of file
index 16834c4..c558a07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5068=['ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect','t38timeout','tech','Trunk','ListId','key','name','description'];(function(_0x3641b7,_0x2d0761){var _0x25f65a=function(_0xa6014d){while(--_0xa6014d){_0x3641b7['push'](_0x3641b7['shift']());}};_0x25f65a(++_0x2d0761);}(_0x5068,0x166));var _0x8506=function(_0x2cfbb1,_0x3a2394){_0x2cfbb1=_0x2cfbb1-0x0;var _0x5deb98=_0x5068[_0x2cfbb1];return _0x5deb98;};'use strict';function FaxAccount(_0x31e96a){this['id']=_0x31e96a['id']||0x0;this[_0x8506('0x0')]=_0x31e96a['name']||'';this[_0x8506('0x1')]=_0x31e96a[_0x8506('0x1')];this[_0x8506('0x2')]=_0x31e96a[_0x8506('0x2')];this[_0x8506('0x3')]=_0x31e96a[_0x8506('0x3')];this['localstationid']=_0x31e96a[_0x8506('0x4')];this[_0x8506('0x5')]=_0x31e96a['minrate']||0x960;this[_0x8506('0x6')]=_0x31e96a[_0x8506('0x6')]||0x3840;this['modem']=_0x31e96a[_0x8506('0x7')]||'v17,v27,v29';this[_0x8506('0x8')]=_0x31e96a[_0x8506('0x8')]||'no';this['faxdetect']=_0x31e96a[_0x8506('0x9')]||'no';this[_0x8506('0xa')]=_0x31e96a[_0x8506('0xa')]||0x1388;this[_0x8506('0xb')]=_0x31e96a[_0x8506('0xb')]||'SIP';this['Trunk']=_0x31e96a[_0x8506('0xc')]?_0x31e96a['Trunk']:undefined;this[_0x8506('0xd')]=_0x31e96a[_0x8506('0xd')];this[_0x8506('0xe')]=_0x31e96a['key'];}module['exports']=FaxAccount;
\ No newline at end of file
+var _0xb032=['headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','Trunk','ListId','key','exports','name','description','ecm'];(function(_0x1b1659,_0x33b182){var _0x416532=function(_0x5c2b0d){while(--_0x5c2b0d){_0x1b1659['push'](_0x1b1659['shift']());}};_0x416532(++_0x33b182);}(_0xb032,0xeb));var _0x2b03=function(_0x46e182,_0x1046a8){_0x46e182=_0x46e182-0x0;var _0x42ade0=_0xb032[_0x46e182];return _0x42ade0;};'use strict';function FaxAccount(_0x4b816e){this['id']=_0x4b816e['id']||0x0;this[_0x2b03('0x0')]=_0x4b816e[_0x2b03('0x0')]||'';this[_0x2b03('0x1')]=_0x4b816e[_0x2b03('0x1')];this[_0x2b03('0x2')]=_0x4b816e['ecm'];this[_0x2b03('0x3')]=_0x4b816e['headerinfo'];this[_0x2b03('0x4')]=_0x4b816e[_0x2b03('0x4')];this[_0x2b03('0x5')]=_0x4b816e['minrate']||0x960;this['maxrate']=_0x4b816e[_0x2b03('0x6')]||0x3840;this[_0x2b03('0x7')]=_0x4b816e[_0x2b03('0x7')]||_0x2b03('0x8');this[_0x2b03('0x9')]=_0x4b816e['gateway']||'no';this[_0x2b03('0xa')]=_0x4b816e[_0x2b03('0xa')]||'no';this[_0x2b03('0xb')]=_0x4b816e[_0x2b03('0xb')]||0x1388;this[_0x2b03('0xc')]=_0x4b816e[_0x2b03('0xc')]||'SIP';this[_0x2b03('0xd')]=_0x4b816e['Trunk']?_0x4b816e['Trunk']:undefined;this[_0x2b03('0xe')]=_0x4b816e[_0x2b03('0xe')];this[_0x2b03('0xf')]=_0x4b816e[_0x2b03('0xf')];}module[_0x2b03('0x10')]=FaxAccount;
\ No newline at end of file
index ff47fd5..a059f82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70d3=['serverUrl','Configurations','exports','name','token','remoteUri'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x70d3,0x15f));var _0x370d=function(_0xba85b9,_0x5a8226){_0xba85b9=_0xba85b9-0x0;var _0xcecfa9=_0x70d3[_0xba85b9];return _0xcecfa9;};'use strict';function FreshdeskAccount(_0x229011){this['id']=_0x229011['id']||0x0;this[_0x370d('0x0')]=_0x229011[_0x370d('0x0')]||'';this['username']=_0x229011['username']||'';this['apiKey']=_0x229011[_0x370d('0x1')]||'';this['remoteUri']=_0x229011[_0x370d('0x2')]||'';this['serverUrl']=_0x229011[_0x370d('0x3')]||'';this[_0x370d('0x4')]=_0x229011[_0x370d('0x4')]||{};}module[_0x370d('0x5')]=FreshdeskAccount;
\ No newline at end of file
+var _0x9a99=['apiKey','token','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9a99,0xbe));var _0x99a9=function(_0x19e208,_0x3496d5){_0x19e208=_0x19e208-0x0;var _0x4f4b58=_0x9a99[_0x19e208];return _0x4f4b58;};'use strict';function FreshdeskAccount(_0x512c90){this['id']=_0x512c90['id']||0x0;this[_0x99a9('0x0')]=_0x512c90[_0x99a9('0x0')]||'';this[_0x99a9('0x1')]=_0x512c90[_0x99a9('0x1')]||'';this[_0x99a9('0x2')]=_0x512c90[_0x99a9('0x3')]||'';this[_0x99a9('0x4')]=_0x512c90[_0x99a9('0x4')]||'';this[_0x99a9('0x5')]=_0x512c90[_0x99a9('0x5')]||'';this[_0x99a9('0x6')]=_0x512c90['Configurations']||{};}module[_0x99a9('0x7')]=FreshdeskAccount;
\ No newline at end of file
index c133b56..bc21ffc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0a1=['username','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x43c978,_0x7d069e){var _0x19f759=function(_0x5a539d){while(--_0x5a539d){_0x43c978['push'](_0x43c978['shift']());}};_0x19f759(++_0x7d069e);}(_0xa0a1,0x15b));var _0x1a0a=function(_0x3edad8,_0x1beeee){_0x3edad8=_0x3edad8-0x0;var _0x5e4cee=_0xa0a1[_0x3edad8];return _0x5e4cee;};'use strict';function FreshsalesAccount(_0x5721e4){this['id']=_0x5721e4['id']||0x0;this['name']=_0x5721e4[_0x1a0a('0x0')]||'';this[_0x1a0a('0x1')]=_0x5721e4[_0x1a0a('0x1')]||'';this['apiKey']=_0x5721e4['token']||'';this[_0x1a0a('0x2')]=_0x5721e4[_0x1a0a('0x2')]||'';this['serverUrl']=_0x5721e4[_0x1a0a('0x3')]||'';this[_0x1a0a('0x4')]=_0x5721e4['Configurations']||{};}module[_0x1a0a('0x5')]=FreshsalesAccount;
\ No newline at end of file
+var _0x873a=['name','username','remoteUri','serverUrl','Configurations','exports'];(function(_0x4a101d,_0x15bbea){var _0x398a2e=function(_0x5876c4){while(--_0x5876c4){_0x4a101d['push'](_0x4a101d['shift']());}};_0x398a2e(++_0x15bbea);}(_0x873a,0x1c2));var _0xa873=function(_0xe5495c,_0x36b70e){_0xe5495c=_0xe5495c-0x0;var _0x52efc2=_0x873a[_0xe5495c];return _0x52efc2;};'use strict';function FreshsalesAccount(_0x4c8d3b){this['id']=_0x4c8d3b['id']||0x0;this[_0xa873('0x0')]=_0x4c8d3b[_0xa873('0x0')]||'';this['username']=_0x4c8d3b[_0xa873('0x1')]||'';this['apiKey']=_0x4c8d3b['token']||'';this[_0xa873('0x2')]=_0x4c8d3b[_0xa873('0x2')]||'';this['serverUrl']=_0x4c8d3b[_0xa873('0x3')]||'';this[_0xa873('0x4')]=_0x4c8d3b['Configurations']||{};}module[_0xa873('0x5')]=FreshsalesAccount;
\ No newline at end of file
index ce6fa7f..1f9f390 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bfd=['queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','assigned','mohtime','variables','exports','type','inbound','uniqueid','queue','queuecallerleaveAt','queuecallerabandon','queuecallerabandonAt','queuecallercompleteAt'];(function(_0x1d8627,_0x517694){var _0x56705f=function(_0x13b03d){while(--_0x13b03d){_0x1d8627['push'](_0x1d8627['shift']());}};_0x56705f(++_0x517694);}(_0x7bfd,0x138));var _0xd7bf=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x7bfd[_0x57b54c];return _0x59cc19;};'use strict';function QueueReport(){this[_0xd7bf('0x0')]=_0xd7bf('0x1');this[_0xd7bf('0x2')]='';this['calleridnum']='';this['calleridname']='';this[_0xd7bf('0x3')]='';this['queuecallerjoinAt']=null;this[_0xd7bf('0x4')]=null;this['position']=0x1;this['count']=0x1;this[_0xd7bf('0x5')]=![];this[_0xd7bf('0x6')]=null;this['queuecallercomplete']=![];this[_0xd7bf('0x7')]=null;this[_0xd7bf('0x8')]=![];this[_0xd7bf('0x9')]=null;this[_0xd7bf('0xa')]=0x1;this[_0xd7bf('0xb')]='';this[_0xd7bf('0xc')]='';this[_0xd7bf('0xd')]='';this[_0xd7bf('0xe')]='';this[_0xd7bf('0xf')]='';this['exten']='';this['priority']='';this['holdtime']=0x0;this[_0xd7bf('0x10')]=![];this['lastAssignedTo']='';this[_0xd7bf('0x11')]=0x0;this[_0xd7bf('0x12')]={};}module[_0xd7bf('0x13')]=QueueReport;
\ No newline at end of file
+var _0xfb00=['lastAssignedTo','motionChannel','voice','mohtime','variables','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','queuecallerabandon','queuecallerabandonAt','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','channel','connectedlinenum','connectedlinename','accountcode','exten','priority','holdtime','assigned'];(function(_0xfb5b41,_0x5cbf71){var _0x53b1d1=function(_0xa5f9ad){while(--_0xa5f9ad){_0xfb5b41['push'](_0xfb5b41['shift']());}};_0x53b1d1(++_0x5cbf71);}(_0xfb00,0xff));var _0x0fb0=function(_0x3a5d3d,_0x217931){_0x3a5d3d=_0x3a5d3d-0x0;var _0x27b36d=_0xfb00[_0x3a5d3d];return _0x27b36d;};'use strict';function QueueReport(){this['type']=_0x0fb0('0x0');this[_0x0fb0('0x1')]='';this[_0x0fb0('0x2')]='';this[_0x0fb0('0x3')]='';this[_0x0fb0('0x4')]='';this[_0x0fb0('0x5')]=null;this[_0x0fb0('0x6')]=null;this['position']=0x1;this['count']=0x1;this[_0x0fb0('0x7')]=![];this[_0x0fb0('0x8')]=null;this['queuecallercomplete']=![];this[_0x0fb0('0x9')]=null;this[_0x0fb0('0xa')]=![];this[_0x0fb0('0xb')]=null;this['originalposition']=0x1;this[_0x0fb0('0xc')]='';this[_0x0fb0('0xd')]='';this[_0x0fb0('0xe')]='';this[_0x0fb0('0xf')]='';this['context']='';this[_0x0fb0('0x10')]='';this[_0x0fb0('0x11')]='';this[_0x0fb0('0x12')]=0x0;this[_0x0fb0('0x13')]=![];this[_0x0fb0('0x14')]='';this[_0x0fb0('0x15')]=_0x0fb0('0x16');this[_0x0fb0('0x17')]=0x0;this[_0x0fb0('0x18')]={};}module['exports']=QueueReport;
\ No newline at end of file
index 3bd9287..f35214e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc2c=['serverUrl','Configurations','exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab'];(function(_0x4ca27e,_0x351cc7){var _0xdac4c1=function(_0x117ca0){while(--_0x117ca0){_0x4ca27e['push'](_0x4ca27e['shift']());}};_0xdac4c1(++_0x351cc7);}(_0xbc2c,0x123));var _0xcbc2=function(_0x9ca21f,_0x437553){_0x9ca21f=_0x9ca21f-0x0;var _0x9ef54b=_0xbc2c[_0x9ca21f];return _0x9ef54b;};'use strict';function SalesforceAccount(_0x1e7097){this['id']=_0x1e7097['id']||0x0;this[_0xcbc2('0x0')]=_0x1e7097[_0xcbc2('0x0')]||'';this[_0xcbc2('0x1')]=_0x1e7097['username']||'';this['remoteUri']=_0x1e7097[_0xcbc2('0x2')]||'';this[_0xcbc2('0x3')]=_0x1e7097[_0xcbc2('0x3')]||'';this[_0xcbc2('0x4')]=_0x1e7097[_0xcbc2('0x4')]||'';this[_0xcbc2('0x5')]=_0x1e7097['clientSecret']||'';this['securityToken']=_0x1e7097[_0xcbc2('0x6')]||'';this[_0xcbc2('0x7')]=_0x1e7097[_0xcbc2('0x7')]||_0xcbc2('0x8');this['serverUrl']=_0x1e7097[_0xcbc2('0x9')]||'';this[_0xcbc2('0xa')]=_0x1e7097[_0xcbc2('0xa')]||{};}module[_0xcbc2('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0xf3d0=['serverUrl','name','username','remoteUri','password','clientId','clientSecret','securityToken','type'];(function(_0x525665,_0x93bba){var _0x3ca665=function(_0x3205f3){while(--_0x3205f3){_0x525665['push'](_0x525665['shift']());}};_0x3ca665(++_0x93bba);}(_0xf3d0,0x160));var _0x0f3d=function(_0x3ad8eb,_0x5e030c){_0x3ad8eb=_0x3ad8eb-0x0;var _0x17c02e=_0xf3d0[_0x3ad8eb];return _0x17c02e;};'use strict';function SalesforceAccount(_0x1ca4af){this['id']=_0x1ca4af['id']||0x0;this[_0x0f3d('0x0')]=_0x1ca4af[_0x0f3d('0x0')]||'';this[_0x0f3d('0x1')]=_0x1ca4af['username']||'';this[_0x0f3d('0x2')]=_0x1ca4af[_0x0f3d('0x2')]||'';this[_0x0f3d('0x3')]=_0x1ca4af[_0x0f3d('0x3')]||'';this[_0x0f3d('0x4')]=_0x1ca4af['clientId']||'';this[_0x0f3d('0x5')]=_0x1ca4af['clientSecret']||'';this[_0x0f3d('0x6')]=_0x1ca4af[_0x0f3d('0x6')]||'';this['type']=_0x1ca4af[_0x0f3d('0x7')]||'integrationTab';this[_0x0f3d('0x8')]=_0x1ca4af['serverUrl']||'';this['Configurations']=_0x1ca4af['Configurations']||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index a9100c0..ccdd54e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf3=['Configurations','exports','name','username','password','remoteUri','serverUrl'];(function(_0x567d48,_0x4a6798){var _0x7af946=function(_0x249f14){while(--_0x249f14){_0x567d48['push'](_0x567d48['shift']());}};_0x7af946(++_0x4a6798);}(_0xecf3,0x14b));var _0x3ecf=function(_0x30c3dd,_0x1801fd){_0x30c3dd=_0x30c3dd-0x0;var _0x1a09ec=_0xecf3[_0x30c3dd];return _0x1a09ec;};'use strict';function ServicenowAccount(_0x41b180){this['id']=_0x41b180['id']||0x0;this[_0x3ecf('0x0')]=_0x41b180[_0x3ecf('0x0')]||'';this[_0x3ecf('0x1')]=_0x41b180[_0x3ecf('0x1')]||'';this[_0x3ecf('0x2')]=_0x41b180[_0x3ecf('0x2')]||'';this[_0x3ecf('0x3')]=_0x41b180[_0x3ecf('0x3')]||'';this[_0x3ecf('0x4')]=_0x41b180[_0x3ecf('0x4')]||'';this[_0x3ecf('0x5')]=_0x41b180['Configurations']||{};}module[_0x3ecf('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0xf77f=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x1c950d,_0x5aaf3a){var _0x577fb3=function(_0x2b7db1){while(--_0x2b7db1){_0x1c950d['push'](_0x1c950d['shift']());}};_0x577fb3(++_0x5aaf3a);}(_0xf77f,0xe4));var _0xff77=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xf77f[_0x2cfb58];return _0xd99951;};'use strict';function ServicenowAccount(_0x18afee){this['id']=_0x18afee['id']||0x0;this['name']=_0x18afee[_0xff77('0x0')]||'';this[_0xff77('0x1')]=_0x18afee['username']||'';this[_0xff77('0x2')]=_0x18afee[_0xff77('0x2')]||'';this[_0xff77('0x3')]=_0x18afee[_0xff77('0x3')]||'';this[_0xff77('0x4')]=_0x18afee[_0xff77('0x4')]||'';this[_0xff77('0x5')]=_0x18afee[_0xff77('0x5')]||{};}module[_0xff77('0x6')]=ServicenowAccount;
\ No newline at end of file
index dd9940b..d530600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc61d=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x38da42,_0x53fedb){var _0x58ea79=function(_0x174ccc){while(--_0x174ccc){_0x38da42['push'](_0x38da42['shift']());}};_0x58ea79(++_0x53fedb);}(_0xc61d,0x19a));var _0xdc61=function(_0x235a26,_0x19b391){_0x235a26=_0x235a26-0x0;var _0x2de83c=_0xc61d[_0x235a26];return _0x2de83c;};'use strict';function SugarcrmAccount(_0x58d463){this['id']=_0x58d463['id']||0x0;this['name']=_0x58d463[_0xdc61('0x0')]||'';this['username']=_0x58d463[_0xdc61('0x1')]||'';this['password']=_0x58d463[_0xdc61('0x2')]||'';this[_0xdc61('0x3')]=_0x58d463[_0xdc61('0x3')]||'';this[_0xdc61('0x4')]=_0x58d463[_0xdc61('0x4')]||'';this[_0xdc61('0x5')]=_0x58d463['Configurations']||{};}module[_0xdc61('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x5977=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x1275ee,_0x31680a){var _0x1cf171=function(_0x509ed2){while(--_0x509ed2){_0x1275ee['push'](_0x1275ee['shift']());}};_0x1cf171(++_0x31680a);}(_0x5977,0xe1));var _0x7597=function(_0x17ec26,_0xf21ae4){_0x17ec26=_0x17ec26-0x0;var _0x4c2101=_0x5977[_0x17ec26];return _0x4c2101;};'use strict';function SugarcrmAccount(_0x12a40b){this['id']=_0x12a40b['id']||0x0;this[_0x7597('0x0')]=_0x12a40b[_0x7597('0x0')]||'';this[_0x7597('0x1')]=_0x12a40b['username']||'';this[_0x7597('0x2')]=_0x12a40b[_0x7597('0x2')]||'';this[_0x7597('0x3')]=_0x12a40b['remoteUri']||'';this[_0x7597('0x4')]=_0x12a40b[_0x7597('0x4')]||'';this[_0x7597('0x5')]=_0x12a40b[_0x7597('0x5')]||{};}module[_0x7597('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 4124ffc..7add084 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c60=['address','exports','name','accountcode','status'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x3c60,0x14c));var _0x03c6=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x3c60[_0x15bc81];return _0x59440e;};'use strict';function Telephone(_0x596e01){this['id']=_0x596e01['id']||0x0;this[_0x03c6('0x0')]=_0x596e01[_0x03c6('0x0')]||'';this[_0x03c6('0x1')]=_0x596e01[_0x03c6('0x1')]||'';this['state']='unknown';this['stateTime']=0x0;this[_0x03c6('0x2')]='unknown';this[_0x03c6('0x3')]='';}module[_0x03c6('0x4')]=Telephone;
\ No newline at end of file
+var _0x9809=['state','unknown','stateTime','status','address','name','accountcode'];(function(_0x340389,_0xfef5a0){var _0x32162c=function(_0x1ac5a0){while(--_0x1ac5a0){_0x340389['push'](_0x340389['shift']());}};_0x32162c(++_0xfef5a0);}(_0x9809,0x1da));var _0x9980=function(_0x3bd24a,_0x581792){_0x3bd24a=_0x3bd24a-0x0;var _0x1a724c=_0x9809[_0x3bd24a];return _0x1a724c;};'use strict';function Telephone(_0x28f126){this['id']=_0x28f126['id']||0x0;this[_0x9980('0x0')]=_0x28f126[_0x9980('0x0')]||'';this[_0x9980('0x1')]=_0x28f126[_0x9980('0x1')]||'';this[_0x9980('0x2')]=_0x9980('0x3');this[_0x9980('0x4')]=0x0;this[_0x9980('0x5')]=_0x9980('0x3');this[_0x9980('0x6')]='';}module['exports']=Telephone;
\ No newline at end of file
index 7c7ed05..3492cd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x4b6b3d,_0x28cead){var _0x49791b=function(_0x1f7afe){while(--_0x1f7afe){_0x4b6b3d['push'](_0x4b6b3d['shift']());}};_0x49791b(++_0x28cead);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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(_0x1dcf6e,_0x4bc26b){var _0x3be720=function(_0x43c068){while(--_0x43c068){_0x1dcf6e['push'](_0x1dcf6e['shift']());}};_0x3be720(++_0x4bc26b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'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 8cce7f6..ee846ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['exports','name','channel','status','AllConditions','AnyConditions','Actions'];(function(_0x2b64c7,_0x169ef4){var _0x591633=function(_0x3c5723){while(--_0x3c5723){_0x2b64c7['push'](_0x2b64c7['shift']());}};_0x591633(++_0x169ef4);}(_0x8603,0x190));var _0x3860=function(_0x1654cd,_0x47919c){_0x1654cd=_0x1654cd-0x0;var _0x40668e=_0x8603[_0x1654cd];return _0x40668e;};'use strict';function Trigger(_0xba4b79){this['id']=_0xba4b79['id']||0x0;this[_0x3860('0x0')]=_0xba4b79[_0x3860('0x0')]||'';this[_0x3860('0x1')]=_0xba4b79['channel']||'voice';this[_0x3860('0x2')]=_0xba4b79[_0x3860('0x2')]||![];this[_0x3860('0x3')]=_0xba4b79['AllConditions']||[];this[_0x3860('0x4')]=_0xba4b79['AnyConditions']||[];this[_0x3860('0x5')]=_0xba4b79[_0x3860('0x5')]||[];}module[_0x3860('0x6')]=Trigger;
\ No newline at end of file
+var _0x1a85=['status','AllConditions','AnyConditions','Actions','name','channel'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x1a85,0x178));var _0x51a8=function(_0x2e0720,_0x2c3ea2){_0x2e0720=_0x2e0720-0x0;var _0xf36159=_0x1a85[_0x2e0720];return _0xf36159;};'use strict';function Trigger(_0x4570ac){this['id']=_0x4570ac['id']||0x0;this['name']=_0x4570ac[_0x51a8('0x0')]||'';this[_0x51a8('0x1')]=_0x4570ac[_0x51a8('0x1')]||'voice';this['status']=_0x4570ac[_0x51a8('0x2')]||![];this[_0x51a8('0x3')]=_0x4570ac[_0x51a8('0x3')]||[];this['AnyConditions']=_0x4570ac[_0x51a8('0x4')]||[];this['Actions']=_0x4570ac[_0x51a8('0x5')]||[];}module['exports']=Trigger;
\ No newline at end of file
index 2020999..a0ff299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc10b=['name','state','unknown','stateTime','status','registry','indexOf','split','host','port','domain','domainport','refresh','stateRegistry','registrationtime','address','active'];(function(_0x3f2ddb,_0x7bf076){var _0x2c5165=function(_0x8bd583){while(--_0x8bd583){_0x3f2ddb['push'](_0x3f2ddb['shift']());}};_0x2c5165(++_0x7bf076);}(_0xc10b,0x153));var _0xbc10=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0xc10b[_0x7e2eb0];return _0xd92de4;};'use strict';function Trunk(_0x15627e){this['id']=_0x15627e['id']||0x0;this[_0xbc10('0x0')]=_0x15627e[_0xbc10('0x0')]||![];this[_0xbc10('0x1')]=_0x15627e[_0xbc10('0x1')]||'';this[_0xbc10('0x2')]=_0xbc10('0x3');this[_0xbc10('0x4')]=0x0;this[_0xbc10('0x5')]='unknown';this['registry']=_0x15627e[_0xbc10('0x6')]&&_0x15627e[_0xbc10('0x6')][_0xbc10('0x7')](':')?_0x15627e[_0xbc10('0x6')][_0xbc10('0x8')](':')[0x0]:'';this[_0xbc10('0x9')]='';this[_0xbc10('0xa')]='';this[_0xbc10('0xb')]='';this[_0xbc10('0xc')]='';this[_0xbc10('0xd')]='';this[_0xbc10('0xe')]=_0xbc10('0x3');this[_0xbc10('0xf')]='';this[_0xbc10('0x10')]='';this['defaultuser']=_0x15627e['defaultuser']||'';}module['exports']=Trunk;
\ No newline at end of file
+var _0x34a4=['status','unknown','registry','indexOf','split','domain','refresh','stateRegistry','registrationtime','defaultuser','exports','active','name','state','stateTime'];(function(_0x166742,_0x55520c){var _0xb7814a=function(_0x18feaf){while(--_0x18feaf){_0x166742['push'](_0x166742['shift']());}};_0xb7814a(++_0x55520c);}(_0x34a4,0x65));var _0x434a=function(_0xa431ea,_0x2ecda5){_0xa431ea=_0xa431ea-0x0;var _0x44922d=_0x34a4[_0xa431ea];return _0x44922d;};'use strict';function Trunk(_0x27dd3a){this['id']=_0x27dd3a['id']||0x0;this[_0x434a('0x0')]=_0x27dd3a['active']||![];this[_0x434a('0x1')]=_0x27dd3a[_0x434a('0x1')]||'';this[_0x434a('0x2')]='unknown';this[_0x434a('0x3')]=0x0;this[_0x434a('0x4')]=_0x434a('0x5');this[_0x434a('0x6')]=_0x27dd3a[_0x434a('0x6')]&&_0x27dd3a[_0x434a('0x6')][_0x434a('0x7')](':')?_0x27dd3a['registry'][_0x434a('0x8')](':')[0x0]:'';this['host']='';this['port']='';this[_0x434a('0x9')]='';this['domainport']='';this[_0x434a('0xa')]='';this[_0x434a('0xb')]=_0x434a('0x5');this[_0x434a('0xc')]='';this['address']='';this[_0x434a('0xd')]=_0x27dd3a['defaultuser']||'';}module[_0x434a('0xe')]=Trunk;
\ No newline at end of file
index 1fa79cc..3a3f21b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b8=['exports','exten','recordingFormat','mandatoryDisposition'];(function(_0x279687,_0x29586f){var _0x24f20c=function(_0x135fa1){while(--_0x135fa1){_0x279687['push'](_0x279687['shift']());}};_0x24f20c(++_0x29586f);}(_0xa6b8,0x1bd));var _0x8a6b=function(_0x16e0a6,_0x18e7f6){_0x16e0a6=_0x16e0a6-0x0;var _0x5e15cf=_0xa6b8[_0x16e0a6];return _0x5e15cf;};'use strict';function voiceExtension(_0x8c792d){this['id']=_0x8c792d['id']||0x0;this[_0x8a6b('0x0')]=_0x8c792d[_0x8a6b('0x0')]||'';this[_0x8a6b('0x1')]=_0x8c792d[_0x8a6b('0x1')]||'none';this['mandatoryDisposition']=_0x8c792d[_0x8a6b('0x2')]||![];}module[_0x8a6b('0x3')]=voiceExtension;
\ No newline at end of file
+var _0xd82a=['mandatoryDisposition','exports','exten','recordingFormat'];(function(_0x466247,_0x5d69e3){var _0x4b352e=function(_0x58c71b){while(--_0x58c71b){_0x466247['push'](_0x466247['shift']());}};_0x4b352e(++_0x5d69e3);}(_0xd82a,0xe6));var _0xad82=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xd82a[_0x5f1391];return _0x50ebe3;};'use strict';function voiceExtension(_0x14858b){this['id']=_0x14858b['id']||0x0;this[_0xad82('0x0')]=_0x14858b[_0xad82('0x0')]||'';this[_0xad82('0x1')]=_0x14858b[_0xad82('0x1')]||'none';this[_0xad82('0x2')]=_0x14858b[_0xad82('0x2')]||![];}module[_0xad82('0x3')]=voiceExtension;
\ No newline at end of file
index 4fafa3e..5c7638b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb856=['sendMessageOneNotActive','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','erlangCalls','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','monitor_format','mandatoryDispositionPause','exports','unknown','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','wav','wav49','name','type','talking','total','sumDuration','sumHoldTime','sumBillable','loggedIn','acw','acwTimeout','autopause'];(function(_0x44c6ce,_0x2aff91){var _0x4da2c6=function(_0x29e84f){while(--_0x29e84f){_0x44c6ce['push'](_0x44c6ce['shift']());}};_0x4da2c6(++_0x2aff91);}(_0xb856,0xcf));var _0x6b85=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb856[_0x3dd15e];return _0x231fd0;};'use strict';var statusDesc=[_0x6b85('0x0'),'not_inuse',_0x6b85('0x1'),_0x6b85('0x2'),_0x6b85('0x3'),_0x6b85('0x4'),_0x6b85('0x5'),_0x6b85('0x6'),_0x6b85('0x7')];var monitorFormat={'wav':_0x6b85('0x8'),'wav49':_0x6b85('0x9'),'gsm':'gsm'};var strategy={'rrmemory':'rrmemory','roundrobin':'roundrobin'};function VoiceQueue(_0x41bc2e){this['id']=_0x41bc2e['id']||0x0;this[_0x6b85('0xa')]=_0x41bc2e[_0x6b85('0xa')]||'';this['monitor_format']=_0x41bc2e['monitor_format']||'';this['type']=_0x41bc2e[_0x6b85('0xb')]||'inbound';this['waiting']=0x0;this[_0x6b85('0xc')]=0x0;this[_0x6b85('0xd')]=0x0;this['answered']=0x0;this[_0x6b85('0xe')]=0x0;this[_0x6b85('0xf')]=0x0;this[_0x6b85('0x10')]=0x0;this['unmanaged']=0x0;this['abandoned']=0x0;this[_0x6b85('0x11')]=0x0;this['available']=0x0;this[_0x6b85('0x12')]=_0x41bc2e[_0x6b85('0x12')]||![];this[_0x6b85('0x13')]=_0x41bc2e[_0x6b85('0x13')]||0xa;this[_0x6b85('0x14')]=_0x41bc2e['autopause']||'no';this[_0x6b85('0x15')]=!![];this['message']='';this['originated']=0x0;this['temp']=0x0;this[_0x6b85('0x16')]=_0x41bc2e[_0x6b85('0x16')]||null;this['dialGlobalInterval']=_0x41bc2e[_0x6b85('0x17')]?_0x41bc2e['dialGlobalInterval']:null;this[_0x6b85('0x18')]=_0x41bc2e[_0x6b85('0x18')];this[_0x6b85('0x19')]=_0x41bc2e['dialMethod']||_0x6b85('0x1a');this[_0x6b85('0x1b')]=_0x41bc2e['dialLimitChannel']||0x0;this[_0x6b85('0x1c')]=_0x41bc2e[_0x6b85('0x1c')]||0x0;this[_0x6b85('0x1d')]=_0x41bc2e[_0x6b85('0x1d')]||0x1;this[_0x6b85('0x1e')]=_0x41bc2e[_0x6b85('0x1e')]||_0x6b85('0x1f');this['dialPredictiveOptimizationPercentage']=_0x41bc2e['dialPredictiveOptimizationPercentage']||0.03;this[_0x6b85('0x20')]=_0x41bc2e['dialPredictiveInterval']||0x258;this[_0x6b85('0x21')]=_0x41bc2e[_0x6b85('0x21')]||_0x6b85('0x22');this[_0x6b85('0x23')]=_0x41bc2e['dialOriginateCallerIdNumber']||'anonymous';this[_0x6b85('0x24')]=_0x41bc2e['dialOriginateTimeout']||0x1e;this['dialQueueOptions']=_0x41bc2e[_0x6b85('0x25')]||_0x6b85('0x26');this[_0x6b85('0x27')]=_0x41bc2e[_0x6b85('0x27')]||0x3;this[_0x6b85('0x28')]=_0x41bc2e[_0x6b85('0x28')]||undefined;this[_0x6b85('0x29')]=_0x41bc2e[_0x6b85('0x29')]||0x3;this[_0x6b85('0x2a')]=_0x41bc2e[_0x6b85('0x2a')]||0x96;this[_0x6b85('0x2b')]=_0x41bc2e[_0x6b85('0x2b')]||0x3;this['dialBusyRetryFrequency']=_0x41bc2e['dialBusyRetryFrequency']||0x96;this[_0x6b85('0x2c')]=_0x41bc2e[_0x6b85('0x2c')]||0x3;this[_0x6b85('0x2d')]=_0x41bc2e['dialNoAnswerRetryFrequency']||0x96;this['dialNoSuchNumberMaxRetry']=_0x41bc2e[_0x6b85('0x2e')]||0x3;this[_0x6b85('0x2f')]=_0x41bc2e[_0x6b85('0x2f')]||0x96;this[_0x6b85('0x30')]=_0x41bc2e['dialDropMaxRetry']||0x3;this[_0x6b85('0x31')]=_0x41bc2e[_0x6b85('0x31')]||0x96;this[_0x6b85('0x32')]=_0x41bc2e[_0x6b85('0x32')]||0x3;this[_0x6b85('0x33')]=_0x41bc2e[_0x6b85('0x33')]||0x96;this[_0x6b85('0x34')]=_0x41bc2e[_0x6b85('0x34')]||0x3;this[_0x6b85('0x35')]=_0x41bc2e[_0x6b85('0x35')]||0x96;this[_0x6b85('0x36')]=_0x41bc2e['dialAgentRejectMaxRetry']||0x3;this[_0x6b85('0x37')]=_0x41bc2e[_0x6b85('0x37')]||0x96;this[_0x6b85('0x38')]=_0x41bc2e['dialGlobalMaxRetry']||0x4;this['Trunk']=_0x41bc2e[_0x6b85('0x39')]?_0x41bc2e[_0x6b85('0x39')]:undefined;this[_0x6b85('0x3a')]=_0x41bc2e[_0x6b85('0x3a')]?_0x41bc2e[_0x6b85('0x3a')]:undefined;this[_0x6b85('0x3b')]=_0x41bc2e['dialPrefix']||undefined;this[_0x6b85('0x3c')]=_0x41bc2e['Interval']?_0x41bc2e['Interval']:undefined;this[_0x6b85('0x3d')]=_0x41bc2e[_0x6b85('0x3d')]||_0x6b85('0x3e');this[_0x6b85('0x3f')]=_0x41bc2e['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x6b85('0x40')]=_0x41bc2e[_0x6b85('0x40')]||undefined;this['strategy']=strategy[_0x41bc2e[_0x6b85('0x41')]]||'rrmemory';this[_0x6b85('0x42')]=!![];this['dialAMDActive']=_0x41bc2e['dialAMDActive']||![];this[_0x6b85('0x43')]=_0x41bc2e[_0x6b85('0x43')];this[_0x6b85('0x44')]=_0x41bc2e['dialAMDGreeting'];this[_0x6b85('0x45')]=_0x41bc2e['dialAMDAfterGreetingSilence'];this[_0x6b85('0x46')]=_0x41bc2e[_0x6b85('0x46')];this[_0x6b85('0x47')]=_0x41bc2e[_0x6b85('0x47')];this[_0x6b85('0x48')]=_0x41bc2e[_0x6b85('0x48')];this[_0x6b85('0x49')]=_0x41bc2e['dialAMDMaximumNumberOfWords'];this[_0x6b85('0x4a')]=_0x41bc2e[_0x6b85('0x4a')];this[_0x6b85('0x4b')]=_0x41bc2e[_0x6b85('0x4b')];this[_0x6b85('0x4c')]=0x0;this[_0x6b85('0x4d')]=0x0;this[_0x6b85('0x4e')]=_0x41bc2e[_0x6b85('0x4e')];this[_0x6b85('0x4f')]=0x0;this[_0x6b85('0x50')]=0x0;this[_0x6b85('0x51')]=0x0;this['outboundBusyCallsDay']=0x0;this[_0x6b85('0x52')]=0x0;this['outboundNoSuchCallsDay']=0x0;this[_0x6b85('0x53')]=0x0;this[_0x6b85('0x54')]=0x0;this[_0x6b85('0x55')]=0x0;this[_0x6b85('0x56')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0x6b85('0x57')]=0x0;this[_0x6b85('0x58')]=0x0;this[_0x6b85('0x59')]=0x0;this[_0x6b85('0x5a')]=undefined;this[_0x6b85('0x5b')]=undefined;this[_0x6b85('0x5c')]=undefined;this[_0x6b85('0x5d')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x6b85('0x5e')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0x6b85('0x5f')]=0x0;this[_0x6b85('0x60')]=0x0;this[_0x6b85('0x61')]=0x0;this[_0x6b85('0x62')]=0x0;this['predictiveIntervalAvailable']=0x0;this[_0x6b85('0x63')]=_0x41bc2e[_0x6b85('0x64')]||0x14;this[_0x6b85('0x65')]=_0x41bc2e['dialPredictiveIntervalMaxThreshold']||0xa;this[_0x6b85('0x66')]=0x0;this[_0x6b85('0x67')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0x6b85('0x68')]=0x0;this['erlangCallToSecond']=0x0;this[_0x6b85('0x69')]=0x0;this['erlangBusyFactor']=0x0;this[_0x6b85('0x6a')]=_0x41bc2e[_0x6b85('0x6a')]||0x1e;this[_0x6b85('0x6b')]=_0x41bc2e[_0x6b85('0x6b')]||![];this[_0x6b85('0x6c')]=_0x41bc2e[_0x6b85('0x6c')]||undefined;this[_0x6b85('0x6d')]=_0x41bc2e['dialAgiAfterHangupClient']||![];this[_0x6b85('0x6e')]=_0x41bc2e[_0x6b85('0x6e')]||![];this[_0x6b85('0x6f')]=monitorFormat[_0x41bc2e[_0x6b85('0x6f')]]?monitorFormat[_0x41bc2e['monitor_format']]:undefined;this['mandatoryDisposition']=_0x41bc2e['mandatoryDisposition']||![];this[_0x6b85('0x70')]=_0x41bc2e[_0x6b85('0x70')]?_0x41bc2e[_0x6b85('0x70')]:undefined;}module[_0x6b85('0x71')]=VoiceQueue;
\ No newline at end of file
+var _0x5b92=['erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','mandatoryDisposition','mandatoryDispositionPause','not_inuse','inuse','busy','invalid','onhold','wav','wav49','gsm','roundrobin','name','monitor_format','type','inbound','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','loggedIn','acw','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundAbandonedDay','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls'];(function(_0xdd2348,_0x5d3232){var _0x2e0a02=function(_0x38e687){while(--_0x38e687){_0xdd2348['push'](_0xdd2348['shift']());}};_0x2e0a02(++_0x5d3232);}(_0x5b92,0x1cd));var _0x25b9=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x5b92[_0xb0f7c3];return _0x28ea68;};'use strict';var statusDesc=['unknown',_0x25b9('0x0'),_0x25b9('0x1'),_0x25b9('0x2'),_0x25b9('0x3'),'unavailable','ringing','ringinuse',_0x25b9('0x4')];var monitorFormat={'wav':_0x25b9('0x5'),'wav49':_0x25b9('0x6'),'gsm':_0x25b9('0x7')};var strategy={'rrmemory':'rrmemory','roundrobin':_0x25b9('0x8')};function VoiceQueue(_0x2e61ba){this['id']=_0x2e61ba['id']||0x0;this[_0x25b9('0x9')]=_0x2e61ba[_0x25b9('0x9')]||'';this[_0x25b9('0xa')]=_0x2e61ba[_0x25b9('0xa')]||'';this['type']=_0x2e61ba[_0x25b9('0xb')]||_0x25b9('0xc');this['waiting']=0x0;this[_0x25b9('0xd')]=0x0;this[_0x25b9('0xe')]=0x0;this[_0x25b9('0xf')]=0x0;this[_0x25b9('0x10')]=0x0;this[_0x25b9('0x11')]=0x0;this[_0x25b9('0x12')]=0x0;this[_0x25b9('0x13')]=0x0;this['abandoned']=0x0;this[_0x25b9('0x14')]=0x0;this['available']=0x0;this[_0x25b9('0x15')]=_0x2e61ba[_0x25b9('0x15')]||![];this['acwTimeout']=_0x2e61ba['acwTimeout']||0xa;this[_0x25b9('0x16')]=_0x2e61ba[_0x25b9('0x16')]||'no';this[_0x25b9('0x17')]=!![];this['message']='';this[_0x25b9('0x18')]=0x0;this[_0x25b9('0x19')]=0x0;this[_0x25b9('0x1a')]=_0x2e61ba[_0x25b9('0x1a')]||null;this['dialGlobalInterval']=_0x2e61ba[_0x25b9('0x1b')]?_0x2e61ba[_0x25b9('0x1b')]:null;this[_0x25b9('0x1c')]=_0x2e61ba['dialActive'];this['dialMethod']=_0x2e61ba[_0x25b9('0x1d')]||_0x25b9('0x1e');this[_0x25b9('0x1f')]=_0x2e61ba[_0x25b9('0x1f')]||0x0;this['dialLimitQueue']=_0x2e61ba[_0x25b9('0x20')]||0x0;this[_0x25b9('0x21')]=_0x2e61ba[_0x25b9('0x21')]||0x1;this[_0x25b9('0x22')]=_0x2e61ba['dialPredictiveOptimization']||_0x25b9('0x23');this['dialPredictiveOptimizationPercentage']=_0x2e61ba[_0x25b9('0x24')]||0.03;this[_0x25b9('0x25')]=_0x2e61ba['dialPredictiveInterval']||0x258;this[_0x25b9('0x26')]=_0x2e61ba['dialOriginateCallerIdName']||_0x25b9('0x27');this[_0x25b9('0x28')]=_0x2e61ba[_0x25b9('0x28')]||'anonymous';this['dialOriginateTimeout']=_0x2e61ba[_0x25b9('0x29')]||0x1e;this[_0x25b9('0x2a')]=_0x2e61ba['dialQueueOptions']||_0x25b9('0x2b');this[_0x25b9('0x2c')]=_0x2e61ba['dialQueueTimeout']||0x3;this['dialQueueProject']=_0x2e61ba[_0x25b9('0x2d')]||undefined;this[_0x25b9('0x2e')]=_0x2e61ba['dialCongestionMaxRetry']||0x3;this[_0x25b9('0x2f')]=_0x2e61ba['dialCongestionRetryFrequency']||0x96;this['dialBusyMaxRetry']=_0x2e61ba[_0x25b9('0x30')]||0x3;this[_0x25b9('0x31')]=_0x2e61ba[_0x25b9('0x31')]||0x96;this['dialNoAnswerMaxRetry']=_0x2e61ba[_0x25b9('0x32')]||0x3;this['dialNoAnswerRetryFrequency']=_0x2e61ba['dialNoAnswerRetryFrequency']||0x96;this[_0x25b9('0x33')]=_0x2e61ba[_0x25b9('0x33')]||0x3;this[_0x25b9('0x34')]=_0x2e61ba['dialNoSuchNumberRetryFrequency']||0x96;this[_0x25b9('0x35')]=_0x2e61ba[_0x25b9('0x35')]||0x3;this[_0x25b9('0x36')]=_0x2e61ba['dialDropRetryFrequency']||0x96;this[_0x25b9('0x37')]=_0x2e61ba['dialAbandonedMaxRetry']||0x3;this[_0x25b9('0x38')]=_0x2e61ba[_0x25b9('0x38')]||0x96;this[_0x25b9('0x39')]=_0x2e61ba[_0x25b9('0x39')]||0x3;this[_0x25b9('0x3a')]=_0x2e61ba['dialMachineRetryFrequency']||0x96;this[_0x25b9('0x3b')]=_0x2e61ba[_0x25b9('0x3b')]||0x3;this[_0x25b9('0x3c')]=_0x2e61ba[_0x25b9('0x3c')]||0x96;this[_0x25b9('0x3d')]=_0x2e61ba[_0x25b9('0x3d')]||0x4;this[_0x25b9('0x3e')]=_0x2e61ba[_0x25b9('0x3e')]?_0x2e61ba[_0x25b9('0x3e')]:undefined;this[_0x25b9('0x3f')]=_0x2e61ba['TrunkBackup']?_0x2e61ba[_0x25b9('0x3f')]:undefined;this['dialPrefix']=_0x2e61ba['dialPrefix']||undefined;this['Interval']=_0x2e61ba[_0x25b9('0x40')]?_0x2e61ba['Interval']:undefined;this[_0x25b9('0x41')]=_0x2e61ba[_0x25b9('0x41')]||_0x25b9('0x42');this[_0x25b9('0x43')]=_0x2e61ba[_0x25b9('0x43')]||undefined;this['dialCutDigit']=_0x2e61ba[_0x25b9('0x44')]||undefined;this[_0x25b9('0x45')]=strategy[_0x2e61ba[_0x25b9('0x45')]]||_0x25b9('0x46');this[_0x25b9('0x47')]=!![];this[_0x25b9('0x48')]=_0x2e61ba[_0x25b9('0x48')]||![];this[_0x25b9('0x49')]=_0x2e61ba['dialAMDInitialSilence'];this['dialAMDGreeting']=_0x2e61ba['dialAMDGreeting'];this[_0x25b9('0x4a')]=_0x2e61ba['dialAMDAfterGreetingSilence'];this[_0x25b9('0x4b')]=_0x2e61ba[_0x25b9('0x4b')];this['dialAMDMinWordLength']=_0x2e61ba['dialAMDMinWordLength'];this[_0x25b9('0x4c')]=_0x2e61ba[_0x25b9('0x4c')];this[_0x25b9('0x4d')]=_0x2e61ba[_0x25b9('0x4d')];this[_0x25b9('0x4e')]=_0x2e61ba['dialAMDSilenceThreshold'];this['dialAMDMaximumWordLength']=_0x2e61ba[_0x25b9('0x4f')];this[_0x25b9('0x50')]=0x0;this[_0x25b9('0x51')]=0x0;this[_0x25b9('0x52')]=_0x2e61ba[_0x25b9('0x52')];this[_0x25b9('0x53')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0x25b9('0x54')]=0x0;this[_0x25b9('0x55')]=0x0;this[_0x25b9('0x56')]=0x0;this[_0x25b9('0x57')]=0x0;this[_0x25b9('0x58')]=0x0;this[_0x25b9('0x59')]=0x0;this[_0x25b9('0x5a')]=0x0;this[_0x25b9('0x5b')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this['outboundDropCallsDayACS']=0x0;this['outboundReCallsDay']=0x0;this[_0x25b9('0x5c')]=0x0;this['startProgressive']=undefined;this['startPredictive']=undefined;this[_0x25b9('0x5d')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x25b9('0x5e')]=0x0;this[_0x25b9('0x5f')]=0x0;this[_0x25b9('0x60')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x25b9('0x61')]=0x0;this[_0x25b9('0x62')]=0x0;this[_0x25b9('0x63')]=0x0;this[_0x25b9('0x64')]=0x0;this[_0x25b9('0x65')]=_0x2e61ba['dialPredictiveIntervalMaxThreshold']||0x14;this['predictiveIntervalMinThreshold']=_0x2e61ba['dialPredictiveIntervalMaxThreshold']||0xa;this[_0x25b9('0x66')]=0x0;this[_0x25b9('0x67')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0x25b9('0x68')]=0x0;this[_0x25b9('0x69')]=0x0;this[_0x25b9('0x6a')]=0x0;this[_0x25b9('0x6b')]=0x0;this[_0x25b9('0x6c')]=_0x2e61ba[_0x25b9('0x6c')]||0x1e;this[_0x25b9('0x6d')]=_0x2e61ba[_0x25b9('0x6d')]||![];this[_0x25b9('0x6e')]=_0x2e61ba['dialQueueProject2']||undefined;this['dialAgiAfterHangupClient']=_0x2e61ba['dialAgiAfterHangupClient']||![];this['dialAgiAfterHangupAgent']=_0x2e61ba['dialAgiAfterHangupAgent']||![];this[_0x25b9('0xa')]=monitorFormat[_0x2e61ba[_0x25b9('0xa')]]?monitorFormat[_0x2e61ba['monitor_format']]:undefined;this[_0x25b9('0x6f')]=_0x2e61ba[_0x25b9('0x6f')]||![];this[_0x25b9('0x70')]=_0x2e61ba[_0x25b9('0x70')]?_0x2e61ba[_0x25b9('0x70')]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
index e734bf1..23acc2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb08c=['Configurations','name','username','accessKey','remoteUri','serverUrl'];(function(_0x2dca5c,_0x2cca55){var _0x1f2533=function(_0x484a52){while(--_0x484a52){_0x2dca5c['push'](_0x2dca5c['shift']());}};_0x1f2533(++_0x2cca55);}(_0xb08c,0x181));var _0xcb08=function(_0x57b2a0,_0x2d6698){_0x57b2a0=_0x57b2a0-0x0;var _0x69b68b=_0xb08c[_0x57b2a0];return _0x69b68b;};'use strict';function VtigerAccount(_0x527ad6){this['id']=_0x527ad6['id']||0x0;this[_0xcb08('0x0')]=_0x527ad6[_0xcb08('0x0')]||'';this[_0xcb08('0x1')]=_0x527ad6[_0xcb08('0x1')]||'';this['accessKey']=_0x527ad6[_0xcb08('0x2')]||'';this[_0xcb08('0x3')]=_0x527ad6[_0xcb08('0x3')]||'';this[_0xcb08('0x4')]=_0x527ad6[_0xcb08('0x4')]||'';this[_0xcb08('0x5')]=_0x527ad6[_0xcb08('0x5')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
+var _0x47d7=['username','remoteUri','Configurations','exports','name'];(function(_0x396dc6,_0x529342){var _0x285078=function(_0x198a28){while(--_0x198a28){_0x396dc6['push'](_0x396dc6['shift']());}};_0x285078(++_0x529342);}(_0x47d7,0x9a));var _0x747d=function(_0xf33cb9,_0x19afa8){_0xf33cb9=_0xf33cb9-0x0;var _0x4d0153=_0x47d7[_0xf33cb9];return _0x4d0153;};'use strict';function VtigerAccount(_0x145fd4){this['id']=_0x145fd4['id']||0x0;this[_0x747d('0x0')]=_0x145fd4['name']||'';this[_0x747d('0x1')]=_0x145fd4[_0x747d('0x1')]||'';this['accessKey']=_0x145fd4['accessKey']||'';this['remoteUri']=_0x145fd4[_0x747d('0x2')]||'';this['serverUrl']=_0x145fd4['serverUrl']||'';this[_0x747d('0x3')]=_0x145fd4[_0x747d('0x3')]||{};}module[_0x747d('0x4')]=VtigerAccount;
\ No newline at end of file
index f41b009..bf314bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf480=['serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType','type'];(function(_0x166394,_0x206959){var _0x8b4360=function(_0x539e86){while(--_0x539e86){_0x166394['push'](_0x166394['shift']());}};_0x8b4360(++_0x206959);}(_0xf480,0x99));var _0x0f48=function(_0x329152,_0x5a5a37){_0x329152=_0x329152-0x0;var _0x2f4f27=_0xf480[_0x329152];return _0x2f4f27;};'use strict';function ZendeskAccount(_0x473e1d){this['id']=_0x473e1d['id']||0x0;this[_0x0f48('0x0')]=_0x473e1d[_0x0f48('0x0')]||'';this[_0x0f48('0x1')]=_0x473e1d[_0x0f48('0x1')]||'';this[_0x0f48('0x2')]=_0x473e1d[_0x0f48('0x2')]||'';this[_0x0f48('0x3')]=_0x473e1d[_0x0f48('0x3')]||'';this['remoteUri']=_0x473e1d[_0x0f48('0x4')]||'';this[_0x0f48('0x5')]=_0x473e1d[_0x0f48('0x5')]||'';this[_0x0f48('0x6')]=_0x473e1d[_0x0f48('0x6')]||'integrationTab';this['serverUrl']=_0x473e1d[_0x0f48('0x7')]||'';this[_0x0f48('0x8')]=_0x473e1d['Configurations']||{};}module[_0x0f48('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0xf8ba=['authType','integrationTab','serverUrl','Configurations','name','username','password','token','remoteUri'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf8ba,0x1bd));var _0xaf8b=function(_0x58816e,_0x222b7e){_0x58816e=_0x58816e-0x0;var _0x193e1f=_0xf8ba[_0x58816e];return _0x193e1f;};'use strict';function ZendeskAccount(_0x32d165){this['id']=_0x32d165['id']||0x0;this[_0xaf8b('0x0')]=_0x32d165[_0xaf8b('0x0')]||'';this[_0xaf8b('0x1')]=_0x32d165[_0xaf8b('0x1')]||'';this[_0xaf8b('0x2')]=_0x32d165['password']||'';this[_0xaf8b('0x3')]=_0x32d165[_0xaf8b('0x3')]||'';this[_0xaf8b('0x4')]=_0x32d165[_0xaf8b('0x4')]||'';this['authType']=_0x32d165[_0xaf8b('0x5')]||'';this['type']=_0x32d165['type']||_0xaf8b('0x6');this[_0xaf8b('0x7')]=_0x32d165[_0xaf8b('0x7')]||'';this[_0xaf8b('0x8')]=_0x32d165[_0xaf8b('0x8')]||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index 8946b86..c9ef069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeac=['Configurations','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken'];(function(_0x419e17,_0x7fe78c){var _0x1f2044=function(_0x3723e6){while(--_0x3723e6){_0x419e17['push'](_0x419e17['shift']());}};_0x1f2044(++_0x7fe78c);}(_0xeeac,0x169));var _0xceea=function(_0x5b7963,_0x10bff5){_0x5b7963=_0x5b7963-0x0;var _0x57f611=_0xeeac[_0x5b7963];return _0x57f611;};'use strict';function ZohoAccount(_0x27cd52){this['id']=_0x27cd52['id']||0x0;this[_0xceea('0x0')]=_0x27cd52['name']||'';this[_0xceea('0x1')]=_0x27cd52[_0xceea('0x1')]||'';this['host']=_0x27cd52[_0xceea('0x2')]||'';this[_0xceea('0x3')]=_0x27cd52[_0xceea('0x3')]||'';this[_0xceea('0x4')]=_0x27cd52['clientId']||'';this[_0xceea('0x5')]=_0x27cd52[_0xceea('0x5')]||'';this[_0xceea('0x6')]=_0x27cd52[_0xceea('0x6')]||'';this[_0xceea('0x7')]=_0x27cd52[_0xceea('0x7')]||'';this[_0xceea('0x8')]=_0x27cd52[_0xceea('0x8')]||'';this[_0xceea('0x9')]=_0x27cd52[_0xceea('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
+var _0x2b3d=['name','description','host','clientSecret','serverUrl','code','refreshToken','Configurations','exports'];(function(_0x3a3b9e,_0xc59037){var _0x148103=function(_0x406731){while(--_0x406731){_0x3a3b9e['push'](_0x3a3b9e['shift']());}};_0x148103(++_0xc59037);}(_0x2b3d,0x87));var _0xd2b3=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x2b3d[_0x57b54c];return _0x59cc19;};'use strict';function ZohoAccount(_0x76653a){this['id']=_0x76653a['id']||0x0;this['name']=_0x76653a[_0xd2b3('0x0')]||'';this[_0xd2b3('0x1')]=_0x76653a[_0xd2b3('0x1')]||'';this['host']=_0x76653a[_0xd2b3('0x2')]||'';this['zone']=_0x76653a['zone']||'';this['clientId']=_0x76653a['clientId']||'';this[_0xd2b3('0x3')]=_0x76653a[_0xd2b3('0x3')]||'';this['serverUrl']=_0x76653a[_0xd2b3('0x4')]||'';this[_0xd2b3('0x5')]=_0x76653a['code']||'';this[_0xd2b3('0x6')]=_0x76653a[_0xd2b3('0x6')]||'';this[_0xd2b3('0x7')]=_0x76653a[_0xd2b3('0x7')]||{};}module[_0xd2b3('0x8')]=ZohoAccount;
\ No newline at end of file
index 3c9a332..518be21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ea0=['membername','Agent','channelAgent','format','SIP/%s','calleridname','Contact','phone','lastName','active','scheduledat','countbusyretry','countglobal','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','countdropretry','countmachineretry','callback','callbackuniqueid','callbackat','ContactId','ListId','originatecalleridname','getCaller','\x22%s\x22\x20<%s>','number','util','lodash','isNil','string','uniqueid','queue','name','type','campaigntype'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x7ea0,0xfa));var _0x07ea=function(_0x4979dc,_0x57e0d3){_0x4979dc=_0x4979dc-0x0;var _0xe6f25d=_0x7ea0[_0x4979dc];return _0xe6f25d;};'use strict';var util=require(_0x07ea('0x0'));var _=require(_0x07ea('0x1'));var moment=require('moment');function checkNameSurname(_0x1bf2b2,_0x3bd60b,_0x362c7b){var _0x3ed999='';if(!_[_0x07ea('0x2')](_0x3bd60b)&&_0x07ea('0x3')===typeof _0x3bd60b){_0x3ed999+=_0x3bd60b;}if(!_[_0x07ea('0x2')](_0x362c7b)&&_0x07ea('0x3')===typeof _0x362c7b){_0x3ed999+='\x20'+_0x362c7b;}if(_0x3ed999!==''){return _0x3ed999;}return _0x1bf2b2;}function Action(_0x385f42,_0x3a6106,_0x32c751,_0x5e24a5,_0x179bdd){this[_0x07ea('0x4')]=_0x32c751||undefined;this['idContact']=_0x385f42['id'];this[_0x07ea('0x5')]=_0x3a6106[_0x07ea('0x6')];this[_0x07ea('0x7')]=_0x3a6106[_0x07ea('0x7')];this[_0x07ea('0x8')]=_0x07ea('0x5');this['dialAnswer']=![];this[_0x07ea('0x9')]=_[_0x07ea('0x2')](_0x385f42['Agent'])?undefined:_0x385f42[_0x07ea('0xa')][_0x07ea('0x6')];this[_0x07ea('0xb')]=this['membername']?util[_0x07ea('0xc')](_0x07ea('0xd'),this[_0x07ea('0x9')]):_0x5e24a5||undefined;this[_0x07ea('0xe')]=checkNameSurname(_0x385f42[_0x07ea('0xf')][_0x07ea('0x10')],_0x385f42[_0x07ea('0xf')]['firstName'],_0x385f42['Contact'][_0x07ea('0x11')]);this[_0x07ea('0x12')]=_0x385f42[_0x07ea('0x12')]||![];this['calleridnum']=_0x385f42[_0x07ea('0xf')]['phone'];this[_0x07ea('0x13')]=_0x385f42[_0x07ea('0x13')];this[_0x07ea('0x14')]=_0x385f42['countbusyretry']||0x0;this['countcongestionretry']=_0x385f42['countcongestionretry']||0x0;this['countnoanswerretry']=_0x385f42['countnoanswerretry']||0x0;this[_0x07ea('0x15')]=(_0x385f42[_0x07ea('0x14')]||0x0)+(_0x385f42['countcongestionretry']||0x0)+(_0x385f42[_0x07ea('0x16')]||0x0)+(_0x385f42[_0x07ea('0x17')]||0x0)+(_0x385f42['countdropretry']||0x0)+(_0x385f42[_0x07ea('0x18')]||0x0)+(_0x385f42['countmachineretry']||0x0)+(_0x385f42[_0x07ea('0x19')]||0x0);this[_0x07ea('0x17')]=_0x385f42[_0x07ea('0x17')]||0x0;this[_0x07ea('0x1a')]=_0x385f42[_0x07ea('0x1a')]||0x0;this['countabandonedretry']=_0x385f42[_0x07ea('0x18')]||0x0;this[_0x07ea('0x1b')]=_0x385f42['countmachineretry']||0x0;this[_0x07ea('0x19')]=_0x385f42[_0x07ea('0x19')]||0x0;this['callback']=_0x385f42[_0x07ea('0x1c')];this[_0x07ea('0x1d')]=_0x385f42[_0x07ea('0x1d')];this['callbackat']=_0x385f42[_0x07ea('0x1e')];this['recallme']=_0x385f42['recallme'];this[_0x07ea('0x1f')]=_0x385f42['ContactId'];this[_0x07ea('0x20')]=_0x385f42['ListId'];this['UserId']=_[_0x07ea('0x2')](_0x385f42['Agent'])?_0x385f42['UserId']:_0x385f42[_0x07ea('0xa')]['id'];this['VoiceQueueId']=_0x385f42['VoiceQueueId'];this['originatecalleridnum']='';this[_0x07ea('0x21')]='';}Action['prototype'][_0x07ea('0x22')]=function(){return util[_0x07ea('0xc')](_0x07ea('0x23'),this[_0x07ea('0xe')],this[_0x07ea('0x24')]);};module['exports']=Action;
\ No newline at end of file
+var _0xf515=['name','dialAnswer','channelAgent','membername','SIP/%s','calleridname','Contact','lastName','active','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','Agent','VoiceQueueId','originatecalleridnum','originatecalleridname','getCaller','format','\x22%s\x22\x20<%s>','number','exports','util','string','isNil','uniqueid','queue'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0xf515,0x1cf));var _0x5f51=function(_0xff14de,_0x187601){_0xff14de=_0xff14de-0x0;var _0x590da2=_0xf515[_0xff14de];return _0x590da2;};'use strict';var util=require(_0x5f51('0x0'));var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x221f93,_0x15b64c,_0x436e91){var _0x4c6dfb='';if(!_['isNil'](_0x15b64c)&&_0x5f51('0x1')===typeof _0x15b64c){_0x4c6dfb+=_0x15b64c;}if(!_[_0x5f51('0x2')](_0x436e91)&&_0x5f51('0x1')===typeof _0x436e91){_0x4c6dfb+='\x20'+_0x436e91;}if(_0x4c6dfb!==''){return _0x4c6dfb;}return _0x221f93;}function Action(_0x5dcb6e,_0x34bb8e,_0x31b7b7,_0x4969c2,_0x354acc){this[_0x5f51('0x3')]=_0x31b7b7||undefined;this['idContact']=_0x5dcb6e['id'];this[_0x5f51('0x4')]=_0x34bb8e[_0x5f51('0x5')];this['type']=_0x34bb8e['type'];this['campaigntype']=_0x5f51('0x4');this[_0x5f51('0x6')]=![];this['membername']=_['isNil'](_0x5dcb6e['Agent'])?undefined:_0x5dcb6e['Agent'][_0x5f51('0x5')];this[_0x5f51('0x7')]=this[_0x5f51('0x8')]?util['format'](_0x5f51('0x9'),this[_0x5f51('0x8')]):_0x4969c2||undefined;this[_0x5f51('0xa')]=checkNameSurname(_0x5dcb6e[_0x5f51('0xb')]['phone'],_0x5dcb6e['Contact']['firstName'],_0x5dcb6e[_0x5f51('0xb')][_0x5f51('0xc')]);this[_0x5f51('0xd')]=_0x5dcb6e[_0x5f51('0xd')]||![];this['calleridnum']=_0x5dcb6e['Contact'][_0x5f51('0xe')];this[_0x5f51('0xf')]=_0x5dcb6e[_0x5f51('0xf')];this[_0x5f51('0x10')]=_0x5dcb6e['countbusyretry']||0x0;this[_0x5f51('0x11')]=_0x5dcb6e[_0x5f51('0x11')]||0x0;this['countnoanswerretry']=_0x5dcb6e[_0x5f51('0x12')]||0x0;this['countglobal']=(_0x5dcb6e[_0x5f51('0x10')]||0x0)+(_0x5dcb6e['countcongestionretry']||0x0)+(_0x5dcb6e[_0x5f51('0x12')]||0x0)+(_0x5dcb6e[_0x5f51('0x13')]||0x0)+(_0x5dcb6e[_0x5f51('0x14')]||0x0)+(_0x5dcb6e[_0x5f51('0x15')]||0x0)+(_0x5dcb6e[_0x5f51('0x16')]||0x0)+(_0x5dcb6e[_0x5f51('0x17')]||0x0);this['countnosuchnumberretry']=_0x5dcb6e[_0x5f51('0x13')]||0x0;this[_0x5f51('0x14')]=_0x5dcb6e[_0x5f51('0x14')]||0x0;this[_0x5f51('0x15')]=_0x5dcb6e['countabandonedretry']||0x0;this[_0x5f51('0x16')]=_0x5dcb6e[_0x5f51('0x16')]||0x0;this[_0x5f51('0x17')]=_0x5dcb6e[_0x5f51('0x17')]||0x0;this['callback']=_0x5dcb6e[_0x5f51('0x18')];this[_0x5f51('0x19')]=_0x5dcb6e['callbackuniqueid'];this[_0x5f51('0x1a')]=_0x5dcb6e[_0x5f51('0x1a')];this[_0x5f51('0x1b')]=_0x5dcb6e[_0x5f51('0x1b')];this[_0x5f51('0x1c')]=_0x5dcb6e[_0x5f51('0x1c')];this[_0x5f51('0x1d')]=_0x5dcb6e['ListId'];this['UserId']=_[_0x5f51('0x2')](_0x5dcb6e[_0x5f51('0x1e')])?_0x5dcb6e['UserId']:_0x5dcb6e['Agent']['id'];this[_0x5f51('0x1f')]=_0x5dcb6e[_0x5f51('0x1f')];this[_0x5f51('0x20')]='';this[_0x5f51('0x21')]='';}Action['prototype'][_0x5f51('0x22')]=function(){return util[_0x5f51('0x23')](_0x5f51('0x24'),this['calleridname'],this[_0x5f51('0x25')]);};module[_0x5f51('0x26')]=Action;
\ No newline at end of file
index 7b152c5..ef84d76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbcf=['[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','dialPrefix','substring','getCallerId','callerid','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','extractCalleridNumber','addVariables','merge','toLowerVariables','variablesAction','[originated][increment]','OriginateError','syncNewExten','channel','logLookAgent','clone','isFailure','unlockContact','rejected','callProgressDetectingAgent','Answer','[callProgressDetectingAgent][logAnswer]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','isUndefined','transfer','[syncHangup][talking][transfer]','syncDialEnd','destuniqueid','variables','syncVarSet','filterKey','keys','addVariable','variable','value','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','lodash','uuid','md5','ioredis','../../../config/environment','../../../config/logger','actionPreview','./rpcDb','./util/util','defaults','redis','localhost','socket.io-emitter','enqueue','tail','finally','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','syncHangup','syncHangupRequest','dialend','newexten','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','outbound','name','answered','available','sumBillable','talking','total','abandoned','waiting','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startPredictive','startProgressive','Trunk','active','Interval','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','voice:queue:%s','sendMessageOneNotActive','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','prototype','syncCampaigns','preview','booked','type','clearZombieChannels','setMessage','recallMe','clearZombieChannel','sequence','isNil','[clearZombieChannels][talking]','queue','pTalking:\x20','dialAnswer','contactId','UserId','Action','status','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][Preview]','[action]','size','hasOwnProperty','getContactRecallMe','agentReadyId','then','length','getDiff','dialRecallMeTimeout','Agent','voicePause','logger2','[RecallMe]','catch','disableContact','starttime','format','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','createCustomerHistory','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','loggedIn','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countglobal','totalGlobal','NoSuchNumber','buildObj','[callProgressDetectingCustomer][logNoSuch]','Global','dialNoSuchNumberMaxRetry','[callProgressDetectingCustomer][logNoSuchGlobal]','activeContact','linkedid','ANSWER','responsetime','answertime','pTalking','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','acw','custom:agentConnectPreview','custom:agentcomplete','complete','outboundAnswerCallsDay','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','talktime','countbusyretry','Busy','dialGlobalMaxRetry','[callProgressDetectingCustomer][logBusyGlobal]','[callProgressDetectingCustomer][logBusy]','rescheduleContact','scheduledAt','dialBusyRetryFrequency','unlockAgent','NOANSWER','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','CONGESTION','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','[syncHangupRequest][logAgentReject]','cloneAction','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','outboundUnknownCallsDay','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','originated:\x20','destlinkedid','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','Contact','phone','VoiceQueueId','Contact\x20is\x20undefined','Queue','lookAgent','isEmpty','execCall','Queue:\x20','\x20IdHopper:\x20','idContact','called','Calling','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','run','execRun','unlock','pick','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','checkInBlack','[Preview][checkIsBlackList]','Call\x20unsuccessful'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xdbcf,0x190));var _0xfdbc=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xdbcf[_0x42cae2];return _0x5f256f;};'use strict';var util=require('util');var _=require(_0xfdbc('0x0'));var BPromise=require('bluebird');var uuid=require(_0xfdbc('0x1'));var moment=require('moment');var md5=require(_0xfdbc('0x2'));var Redis=require(_0xfdbc('0x3'));var config=require(_0xfdbc('0x4'));var logger=require(_0xfdbc('0x5'))('preview');var loggerAction=require(_0xfdbc('0x5'))(_0xfdbc('0x6'));var ami=require('../ami');var rpcDb=require(_0xfdbc('0x7'));var Action=require('./action');var ut=require(_0xfdbc('0x8'));config['redis']=_[_0xfdbc('0x9')](config[_0xfdbc('0xa')],{'host':_0xfdbc('0xb'),'port':0x18eb});var io=require(_0xfdbc('0xc'))(new Redis(config[_0xfdbc('0xa')]));var Sequence=function(){};Sequence['prototype'][_0xfdbc('0xd')]=function(_0x545a48){this[_0xfdbc('0xe')]=this[_0xfdbc('0xe')]?this[_0xfdbc('0xe')][_0xfdbc('0xf')](_0x545a48):_0x545a48();};function Preview(_0x22df32){this['sequence']=new Sequence();this[_0xfdbc('0x10')]=_0x22df32[_0xfdbc('0x11')];this[_0xfdbc('0x12')]=_0x22df32[_0xfdbc('0x12')];this[_0xfdbc('0x13')]={};this[_0xfdbc('0x14')]=_0x22df32[_0xfdbc('0x14')];this[_0xfdbc('0x15')]=0x0;ami['on'](_0xfdbc('0x16'),this[_0xfdbc('0x17')][_0xfdbc('0x18')](this));ami['on']('hangup',this[_0xfdbc('0x19')][_0xfdbc('0x18')](this));ami['on']('hanguprequest',this[_0xfdbc('0x1a')][_0xfdbc('0x18')](this));ami['on'](_0xfdbc('0x1b'),this['syncDialEnd'][_0xfdbc('0x18')](this));ami['on'](_0xfdbc('0x1c'),this['syncNewExten'][_0xfdbc('0x18')](this));ami['on']('varset',this['syncVarSet']['bind'](this));ami['on'](_0xfdbc('0x1d'),this[_0xfdbc('0x1e')]['bind'](this));ami['on'](_0xfdbc('0x1f'),this[_0xfdbc('0x20')][_0xfdbc('0x18')](this));this[_0xfdbc('0x21')](this['campaignsPreview']);}function emit(_0x496370,_0x58c83c,_0x3cc55f){io['to'](_0x496370)[_0xfdbc('0x22')](_0x58c83c,_0x3cc55f);}function emitCampaignPreview(_0x2b4624){if(_0x2b4624['type']===_0xfdbc('0x23')){var _0x48467d={'id':_0x2b4624['id'],'name':_0x2b4624[_0xfdbc('0x24')],'strategy':_0x2b4624['strategy'],'answered':_0x2b4624[_0xfdbc('0x25')],'available':_0x2b4624[_0xfdbc('0x26')],'loggedIn':_0x2b4624['loggedIn'],'pTalking':_0x2b4624['pTalking'],'sumBillable':_0x2b4624[_0xfdbc('0x27')],'sumDuration':_0x2b4624['sumDuration'],'sumHoldTime':_0x2b4624['sumHoldTime']||0x0,'talking':_0x2b4624[_0xfdbc('0x28')],'total':_0x2b4624[_0xfdbc('0x29')],'type':_0x2b4624['type'],'unmanaged':_0x2b4624['unmanaged'],'abandoned':_0x2b4624[_0xfdbc('0x2a')],'waiting':_0x2b4624[_0xfdbc('0x2b')],'loggedInDb':_0x2b4624['loggedInDb'],'dialActive':_0x2b4624[_0xfdbc('0x2c')],'dialMethod':_0x2b4624[_0xfdbc('0x2d')],'dialOriginateCallerIdName':_0x2b4624[_0xfdbc('0x2e')],'dialOriginateCallerIdNumber':_0x2b4624[_0xfdbc('0x2f')],'dialOriginateTimeout':_0x2b4624[_0xfdbc('0x30')],'dialPrefix':_0x2b4624['dialPrefix'],'outboundAnswerAgiCallsDay':_0x2b4624[_0xfdbc('0x31')],'outboundAnswerCallsDay':_0x2b4624['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x2b4624[_0xfdbc('0x32')],'outboundBusyCallsDay':_0x2b4624[_0xfdbc('0x33')],'outboundCongestionCallsDay':_0x2b4624['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x2b4624[_0xfdbc('0x34')],'outboundDropCallsDayCallersExit':_0x2b4624[_0xfdbc('0x35')],'outboundDropCallsDayTimeout':_0x2b4624[_0xfdbc('0x36')],'outboundNoAnswerCallsDay':_0x2b4624[_0xfdbc('0x37')],'outboundNoSuchCallsDay':_0x2b4624[_0xfdbc('0x38')],'outboundOriginateFailureCallsDay':_0x2b4624[_0xfdbc('0x39')],'outboundReCallsDay':_0x2b4624[_0xfdbc('0x3a')],'outboundRejectCallsDay':_0x2b4624[_0xfdbc('0x3b')],'outboundUnknownCallsDay':_0x2b4624['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x2b4624['outboundAbandonedCallsDay'],'predictiveIntervalAnsweredCalls':_0x2b4624[_0xfdbc('0x3c')],'predictiveIntervalAvgHoldtime':_0x2b4624[_0xfdbc('0x3d')],'predictiveIntervalAvgTalktime':_0x2b4624['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x2b4624[_0xfdbc('0x3e')],'predictiveIntervalDroppedCallsTimeout':_0x2b4624[_0xfdbc('0x3f')],'predictiveIntervalErlangCalls':_0x2b4624[_0xfdbc('0x40')],'predictiveIntervalErlangCallsDroppedCalls':_0x2b4624['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x2b4624[_0xfdbc('0x41')],'predictiveIntervalMultiplicativeFactor':_0x2b4624[_0xfdbc('0x42')],'predictiveIntervalPauses':_0x2b4624[_0xfdbc('0x43')],'predictiveIntervalAvailable':_0x2b4624[_0xfdbc('0x44')],'predictiveIntervalTotalCalls':_0x2b4624[_0xfdbc('0x45')],'message':_0x2b4624[_0xfdbc('0x46')],'originated':_0x2b4624[_0xfdbc('0x47')],'erlangCalls':_0x2b4624[_0xfdbc('0x48')],'erlangCallToSecond':_0x2b4624[_0xfdbc('0x49')],'erlangAbandonmentRate':_0x2b4624[_0xfdbc('0x4a')],'erlangBusyFactor':_0x2b4624['erlangBusyFactor'],'startPredictive':_0x2b4624[_0xfdbc('0x4b')],'startProgressive':_0x2b4624[_0xfdbc('0x4c')]};if(_0x2b4624[_0xfdbc('0x4d')]){_0x48467d[_0xfdbc('0x4d')]={'id':_0x2b4624[_0xfdbc('0x4d')]['id'],'name':_0x2b4624['Trunk'][_0xfdbc('0x24')],'active':_0x2b4624[_0xfdbc('0x4d')][_0xfdbc('0x4e')],'callerid':_0x2b4624['Trunk']['callerid']};}if(_0x2b4624['Interval']){_0x48467d[_0xfdbc('0x4f')]={'id':_0x2b4624['Interval']['id'],'name':_0x2b4624[_0xfdbc('0x4f')][_0xfdbc('0x24')]};}var _0x66ffa=md5(JSON['stringify'](_0x48467d));if(_0x2b4624[_0xfdbc('0x2')]!==_0x66ffa){_0x2b4624['md5']=_0x66ffa;emit(util['format']('voice:queue:%s',_0x48467d[_0xfdbc('0x24')]),_0xfdbc('0x50'),_0x48467d);}}}function emitVoiceQueueChannelRemove(_0x217541){logger[_0xfdbc('0x51')](_0xfdbc('0x52'),JSON[_0xfdbc('0x53')](_0x217541));emit(util['format'](_0xfdbc('0x54'),_0x217541[_0xfdbc('0x24')]),'voice_queue_channel:remove',_0x217541);io[_0xfdbc('0x22')]('voice_queue_presence:remove',_0x217541);}function notSendMessagesQueue(_0x56ab44){if(_0x56ab44[_0xfdbc('0x55')]){if(_0x56ab44['originated']===0x0&&_0x56ab44['pTalking']===0x0){_0x56ab44['sendMessageOneNotActive']=![];_0x56ab44[_0xfdbc('0x26')]=0x0;_0x56ab44[_0xfdbc('0x56')]=0x0;_0x56ab44[_0xfdbc('0x46')]=_0xfdbc('0x57');ut[_0xfdbc('0x58')](_0xfdbc('0x59'),_0x56ab44[_0xfdbc('0x24')]+_0xfdbc('0x5a'));}else{_0x56ab44[_0xfdbc('0x46')]='IS_DISACTIVED';ut[_0xfdbc('0x58')](_0xfdbc('0x59'),_0x56ab44['name']+'\x20is\x20disactive');}emitCampaignPreview(_0x56ab44);}}Preview[_0xfdbc('0x5b')]['loopCampaigns']=function(){var _0x22caf0=this;setInterval(function(){_0x22caf0[_0xfdbc('0x5c')]();},0x7cf);};Preview[_0xfdbc('0x5b')][_0xfdbc('0x5c')]=function(){var _0x234c4e=this[_0xfdbc('0x10')];this[_0xfdbc('0x15')]+=0x1;for(var _0x28f336 in _0x234c4e){if(_0x234c4e['hasOwnProperty'](_0x28f336)&&(_0x234c4e[_0x28f336][_0xfdbc('0x2d')]===_0xfdbc('0x5d')||_0x234c4e[_0x28f336][_0xfdbc('0x2d')]===_0xfdbc('0x5e'))&&_0x234c4e[_0x28f336][_0xfdbc('0x5f')]==='outbound'){if(this[_0xfdbc('0x15')]>0x7){this[_0xfdbc('0x15')]=0x0;this[_0xfdbc('0x60')]();}}if(_0x234c4e['hasOwnProperty'](_0x28f336)&&_0x234c4e[_0x28f336]['dialMethod']===_0xfdbc('0x5d')&&_0x234c4e[_0x28f336]['type']===_0xfdbc('0x23')){if(_0x234c4e[_0x28f336][_0xfdbc('0x2c')]){this[_0xfdbc('0x61')](_0x234c4e[_0x28f336]);this[_0xfdbc('0x62')](_0x234c4e[_0x28f336]);}else{notSendMessagesQueue(_0x234c4e[_0x28f336]);}}}};Preview[_0xfdbc('0x5b')][_0xfdbc('0x63')]=function(_0x38b7de){var _0x393bfa=this;this[_0xfdbc('0x64')][_0xfdbc('0xd')](function(){if(!_[_0xfdbc('0x65')](_0x393bfa['actions'][_0x38b7de])){loggerAction[_0xfdbc('0x51')](_0xfdbc('0x66'),_0x38b7de,'Queue',_0x393bfa[_0xfdbc('0x13')][_0x38b7de][_0xfdbc('0x67')],'originated:\x20',JSON[_0xfdbc('0x53')](_0x393bfa[_0xfdbc('0x10')][_0x393bfa['actions'][_0x38b7de][_0xfdbc('0x67')]][_0xfdbc('0x47')]),_0xfdbc('0x68'),JSON['stringify'](_0x393bfa['campaignsPreview'][_0x393bfa[_0xfdbc('0x13')][_0x38b7de][_0xfdbc('0x67')]]['pTalking']),JSON['stringify'](_0x393bfa[_0xfdbc('0x13')][_0x38b7de][_0xfdbc('0x69')]),JSON['stringify'](_['pick'](_0x393bfa[_0xfdbc('0x13')][_0x38b7de],[_0xfdbc('0x6a'),_0xfdbc('0x6b'),'VoiceQueueId','ListId'])));return ami[_0xfdbc('0x6c')]({'action':_0xfdbc('0x6d'),'channel':_0x393bfa[_0xfdbc('0x13')][_0x38b7de]['channel']})['catch'](function(_0x540b6c){if(_0x540b6c['message']===_0xfdbc('0x6e')){setTimeout(function(){if(_0x393bfa[_0xfdbc('0x13')][_0x38b7de]){ut[_0xfdbc('0x6f')](_0x393bfa[_0xfdbc('0x10')][_0x393bfa[_0xfdbc('0x13')][_0x38b7de][_0xfdbc('0x67')]],_0xfdbc('0x70'));if(_0x393bfa[_0xfdbc('0x13')][_0x38b7de][_0xfdbc('0x69')]===!![]){ut[_0xfdbc('0x71')](_0x393bfa[_0xfdbc('0x10')][_0x393bfa[_0xfdbc('0x13')][_0x38b7de][_0xfdbc('0x67')]],_0xfdbc('0x70'));ut[_0xfdbc('0x72')]('[Dialer][checkChannel][pTalking][Preview]'+_0x38b7de,_0x393bfa[_0xfdbc('0x13')][_0x38b7de][_0xfdbc('0x67')]);}ut['loggerError'](_0xfdbc('0x73')+_0x38b7de,_0x393bfa[_0xfdbc('0x13')][_0x38b7de]['queue']);delete _0x393bfa[_0xfdbc('0x13')][_0x38b7de];}},0x2328);}});}});};Preview[_0xfdbc('0x5b')][_0xfdbc('0x60')]=function(){var _0x21922d=this;loggerAction[_0xfdbc('0x51')](_0xfdbc('0x74'),_[_0xfdbc('0x75')](this['actions']));for(var _0x23f123 in this[_0xfdbc('0x13')]){if(_0x21922d[_0xfdbc('0x13')][_0xfdbc('0x76')](_0x23f123)){_0x21922d[_0xfdbc('0x63')](_0x23f123);}}};Preview[_0xfdbc('0x5b')][_0xfdbc('0x62')]=function(_0x389952){var _0x3a6e2c=this;rpcDb[_0xfdbc('0x77')](_0x389952['id'],ut[_0xfdbc('0x78')](this['agents']))[_0xfdbc('0x79')](function(_0x49bc2c){if(!_[_0xfdbc('0x65')](_0x49bc2c)){for(var _0x259ed5=0x0;_0x259ed5<_0x49bc2c[_0xfdbc('0x7a')];_0x259ed5+=0x1){if(ut[_0xfdbc('0x7b')](_0x49bc2c[_0x259ed5]['scheduledat'])<_0x389952[_0xfdbc('0x7c')]*0x3c){if(_0x49bc2c[_0x259ed5][_0xfdbc('0x7d')]&&!_0x49bc2c[_0x259ed5][_0xfdbc('0x7d')][_0xfdbc('0x7e')]){_0x3a6e2c['run'](_0x49bc2c[_0x259ed5]['id'])[_0xfdbc('0x79')](ut[_0xfdbc('0x7f')](_0xfdbc('0x80')))[_0xfdbc('0x81')](ut[_0xfdbc('0x7f')](_0xfdbc('0x80')));}else{rpcDb[_0xfdbc('0x82')](_0x49bc2c[_0x259ed5]['id']);}}else{var _0x4287e2=new Action(_0x49bc2c[_0x259ed5],_0x389952);_0x4287e2[_0xfdbc('0x83')]=moment()[_0xfdbc('0x84')](_0xfdbc('0x85'));_0x389952['outboundReCallsDay']+=0x1;ut[_0xfdbc('0x86')](_0x4287e2,0x17,_0xfdbc('0x87'));if(_0x389952[_0xfdbc('0x88')]){rpcDb[_0xfdbc('0x89')](ut['createBody'](_0x49bc2c[_0x259ed5]));rpcDb['createCustomerHistory'](_0x4287e2,_0xfdbc('0x8a'));}else{ut[_0xfdbc('0x86')](_0x4287e2,0x16,_0xfdbc('0x8b'));rpcDb[_0xfdbc('0x8c')](_0x4287e2,_0xfdbc('0x8d'));rpcDb[_0xfdbc('0x8e')](_0x4287e2,_0xfdbc('0x8d'));}}}}})[_0xfdbc('0x81')](ut[_0xfdbc('0x7f')](_0xfdbc('0x8f')));};Preview['prototype']['setMessage']=function(_0x3d0c60){_0x3d0c60['sendMessageOneNotActive']=!![];if(ut['IsNotLoggedIn'](_0x3d0c60[_0xfdbc('0x90')])){_0x3d0c60['message']='AGENTS_NOT_LOGGED';}else if(!ut[_0xfdbc('0x91')](_0x3d0c60[_0xfdbc('0x2c')])){_0x3d0c60[_0xfdbc('0x46')]=_0xfdbc('0x57');}else if(!this[_0xfdbc('0x92')](_0x3d0c60['Trunk'])){if(!this[_0xfdbc('0x92')](_0x3d0c60[_0xfdbc('0x93')])){_0x3d0c60[_0xfdbc('0x46')]=_0xfdbc('0x94');}else{_0x3d0c60['message']='ACTIVE';}}else{_0x3d0c60['message']=_0xfdbc('0x95');}emitCampaignPreview(_0x3d0c60);};Preview['prototype'][_0xfdbc('0x96')]=function(_0x13821d,_0x41c68a,_0x2af077){var _0x525e60=this;var _0x2887fa=this[_0xfdbc('0x13')][_0x41c68a];var _0x4ac656=this['campaignsPreview'][_0x2887fa[_0xfdbc('0x67')]];var _0x38ea6f;if(_0x4ac656){switch(_0x2af077){case'1':_0x4ac656[_0xfdbc('0x38')]+=0x1;_0x2887fa['countnosuchnumberretry']+=0x1;_0x2887fa[_0xfdbc('0x97')]=ut[_0xfdbc('0x98')](_0x2887fa);ut[_0xfdbc('0x86')](_0x2887fa,0x0,_0xfdbc('0x99'));ami['emit']('custom:agentnosuchnumber',ut[_0xfdbc('0x9a')](_0x2887fa,'nosuchnumber'));rpcDb[_0xfdbc('0x8c')](_0x2887fa,_0xfdbc('0x9b'));if(ut['totalGlobal'](_0x2887fa)>=_0x4ac656['dialGlobalMaxRetry']){_0x38ea6f=ut['cloneAction'](_0x2887fa,0xf,_0xfdbc('0x9c'));rpcDb[_0xfdbc('0x8e')](_0x38ea6f,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x2887fa['countnosuchnumberretry']>=_0x4ac656[_0xfdbc('0x9d')]){rpcDb[_0xfdbc('0x8e')](_0x2887fa,_0xfdbc('0x9e'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x2887fa,'countnosuchnumberretry',_0x4ac656['dialNoSuchNumberRetryFrequency']),_0x2887fa['unlockAgent'],_0x2887fa[_0xfdbc('0x9f')]);}}delete this[_0xfdbc('0x13')][_0x13821d[_0xfdbc('0xa0')]];break;case _0xfdbc('0xa1'):var _0x4f7447=moment()[_0xfdbc('0x84')](_0xfdbc('0x85'));_0x2887fa[_0xfdbc('0xa2')]=_0x4f7447;_0x2887fa[_0xfdbc('0xa3')]=_0x4f7447;_0x2887fa[_0xfdbc('0x69')]=!![];_0x4ac656[_0xfdbc('0xa4')]+=0x1;logger[_0xfdbc('0x51')](_0xfdbc('0xa5'),_0x2887fa[_0xfdbc('0xa6')],_0xfdbc('0xa7'),_0x4ac656[_0xfdbc('0x24')],_0xfdbc('0x68'),_0x4ac656[_0xfdbc('0xa4')]);ami['emit'](_0xfdbc('0xa8'),ut[_0xfdbc('0x9a')](_0x2887fa,_0xfdbc('0xa9'),this[_0xfdbc('0x10')][_0x2887fa['queue']]));if(_0x4ac656[_0xfdbc('0xaa')]){ami['emit'](_0xfdbc('0xab'),ut['buildAcw'](_0x2887fa));}break;case'16':ami['emit'](_0xfdbc('0xac'),ut[_0xfdbc('0x9a')](_0x2887fa,_0xfdbc('0xad'),this[_0xfdbc('0x10')][_0x2887fa[_0xfdbc('0x67')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x2887fa,_0xfdbc('0xad')));_0x4ac656[_0xfdbc('0xae')]+=0x1;_0x4ac656['total']+=0x1;_0x4ac656[_0xfdbc('0x25')]+=0x1;ut['decrementTalkink'](_0x4ac656,_0xfdbc('0xaf'));_0x2887fa[_0xfdbc('0x97')]=ut[_0xfdbc('0x98')](_0x2887fa);ut[_0xfdbc('0x86')](_0x2887fa,0x4,'Answer');rpcDb[_0xfdbc('0x8c')](_0x2887fa,_0xfdbc('0xb0'));rpcDb[_0xfdbc('0x8e')](_0x2887fa,_0xfdbc('0xb1'));rpcDb['crateCustomerReportQueue'](_0x2887fa);_0x4ac656['sumDuration']+=_0x2887fa['talktime'];_0x4ac656[_0xfdbc('0x27')]+=_0x2887fa[_0xfdbc('0xb2')];logger[_0xfdbc('0x51')]('[syncHangup][talking][decrement]',_0x2887fa[_0xfdbc('0xa6')],'\x20Queue',_0x4ac656[_0xfdbc('0x24')],_0xfdbc('0x68'),_0x4ac656[_0xfdbc('0xa4')]);delete this[_0xfdbc('0x13')][_0x13821d[_0xfdbc('0xa0')]];break;case'BUSY':_0x4ac656[_0xfdbc('0x33')]+=0x1;_0x2887fa[_0xfdbc('0xb3')]+=0x1;_0x2887fa[_0xfdbc('0x97')]=ut['totalGlobal'](_0x2887fa);ut[_0xfdbc('0x86')](_0x2887fa,0x5,_0xfdbc('0xb4'));ami[_0xfdbc('0x22')]('custom:agentbusy',ut[_0xfdbc('0x9a')](_0x2887fa,'busy'));rpcDb['createCustomerHistory'](_0x2887fa,'[callProgressDetectingCustomer][logBusy]');if(ut[_0xfdbc('0x98')](_0x2887fa)>=_0x4ac656[_0xfdbc('0xb5')]){_0x38ea6f=ut['cloneAction'](_0x2887fa,0xf,_0xfdbc('0x9c'));rpcDb[_0xfdbc('0x8e')](_0x38ea6f,_0xfdbc('0xb6'));}else{if(_0x2887fa[_0xfdbc('0xb3')]>=_0x4ac656['dialBusyMaxRetry']){rpcDb['createCustomerFinal'](_0x2887fa,_0xfdbc('0xb7'));}else{rpcDb[_0xfdbc('0xb8')](ut[_0xfdbc('0xb9')](_0x2887fa,_0xfdbc('0xb3'),_0x4ac656[_0xfdbc('0xba')]),_0x2887fa[_0xfdbc('0xbb')],_0x2887fa['activeContact']);}}break;case _0xfdbc('0xbc'):_0x4ac656['outboundNoAnswerCallsDay']+=0x1;_0x2887fa[_0xfdbc('0xbd')]+=0x1;_0x2887fa['countglobal']=ut[_0xfdbc('0x98')](_0x2887fa);ut[_0xfdbc('0x86')](_0x2887fa,0x3,_0xfdbc('0xbe'));ami[_0xfdbc('0x22')](_0xfdbc('0xbf'),ut[_0xfdbc('0x9a')](_0x2887fa,_0xfdbc('0xc0')));rpcDb[_0xfdbc('0x8c')](_0x2887fa,_0xfdbc('0xc1'));if(ut[_0xfdbc('0x98')](_0x2887fa)>=_0x4ac656[_0xfdbc('0xb5')]){_0x38ea6f=ut['cloneAction'](_0x2887fa,0xf,_0xfdbc('0x9c'));rpcDb[_0xfdbc('0x8e')](_0x38ea6f,_0xfdbc('0xc2'));}else{if(_0x2887fa['countnoanswerretry']>=_0x4ac656[_0xfdbc('0xc3')]){rpcDb[_0xfdbc('0x8e')](_0x2887fa,_0xfdbc('0xc1'));}else{rpcDb['rescheduleContact'](ut[_0xfdbc('0xb9')](_0x2887fa,_0xfdbc('0xbd'),_0x4ac656['dialNoAnswerRetryFrequency']),_0x2887fa[_0xfdbc('0xbb')],_0x2887fa[_0xfdbc('0x9f')]);}}break;case _0xfdbc('0xc4'):_0x4ac656['outboundCongestionCallsDay']+=0x1;_0x2887fa['countcongestionretry']+=0x1;_0x2887fa[_0xfdbc('0x97')]=ut[_0xfdbc('0x98')](_0x2887fa);ut['logCustomer'](_0x2887fa,0x8,_0xfdbc('0xc5'));ami[_0xfdbc('0x22')](_0xfdbc('0xc6'),ut[_0xfdbc('0x9a')](_0x2887fa,_0xfdbc('0xc7')));rpcDb[_0xfdbc('0x8c')](_0x2887fa,_0xfdbc('0xc8'));if(ut[_0xfdbc('0x98')](_0x2887fa)>=_0x4ac656[_0xfdbc('0xb5')]){_0x38ea6f=ut['cloneAction'](_0x2887fa,0xf,_0xfdbc('0x9c'));rpcDb[_0xfdbc('0x8e')](_0x38ea6f,_0xfdbc('0xc9'));}else{if(_0x2887fa[_0xfdbc('0xca')]>=_0x4ac656[_0xfdbc('0xcb')]){rpcDb[_0xfdbc('0x8e')](_0x2887fa,_0xfdbc('0xc8'));}else{rpcDb[_0xfdbc('0xb8')](ut[_0xfdbc('0xb9')](_0x2887fa,_0xfdbc('0xca'),_0x4ac656[_0xfdbc('0xba')]),_0x2887fa[_0xfdbc('0xbb')],_0x2887fa[_0xfdbc('0x9f')]);}}break;case _0xfdbc('0xcc'):_0x4ac656[_0xfdbc('0x3b')]+=0x1;_0x2887fa[_0xfdbc('0xcd')]+=0x1;_0x2887fa[_0xfdbc('0x97')]=ut['totalGlobal'](_0x2887fa);ut[_0xfdbc('0x86')](_0x2887fa,0x14,_0xfdbc('0xce'));ami[_0xfdbc('0x22')](_0xfdbc('0xcf'),ut['buildObj'](_0x2887fa,'agentreject'));rpcDb[_0xfdbc('0x8c')](_0x2887fa,_0xfdbc('0xd0'));if(ut[_0xfdbc('0x98')](_0x2887fa)>=_0x4ac656[_0xfdbc('0xb5')]){_0x38ea6f=ut[_0xfdbc('0xd1')](_0x2887fa,0x14,_0xfdbc('0xce'));rpcDb['createCustomerFinal'](_0x38ea6f,_0xfdbc('0xd2'));}else{if(_0x2887fa[_0xfdbc('0xcd')]>=_0x4ac656[_0xfdbc('0xd3')]){rpcDb[_0xfdbc('0x8e')](_0x2887fa,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb[_0xfdbc('0xb8')](ut[_0xfdbc('0xb9')](_0x2887fa,_0xfdbc('0xcd'),_0x4ac656[_0xfdbc('0xd4')]),_0x2887fa[_0xfdbc('0xbb')],_0x2887fa[_0xfdbc('0x9f')]);}}break;case _0xfdbc('0xd5'):_0x4ac656['outboundAbandonedCallsDay']+=0x1;_0x2887fa[_0xfdbc('0xd6')]+=0x1;_0x2887fa[_0xfdbc('0x97')]=ut[_0xfdbc('0x98')](_0x2887fa);ut['logCustomer'](_0x2887fa,0xb,_0xfdbc('0xd7'));rpcDb[_0xfdbc('0x8c')](_0x2887fa,_0xfdbc('0xd8'));if(ut[_0xfdbc('0x98')](_0x2887fa)>=_0x4ac656[_0xfdbc('0xb5')]){_0x38ea6f=ut[_0xfdbc('0xd1')](_0x2887fa,0xf,_0xfdbc('0x9c'));rpcDb[_0xfdbc('0x8e')](_0x38ea6f,_0xfdbc('0xd8'));}else{if(_0x2887fa[_0xfdbc('0xd9')]>=_0x4ac656['dialAbandonedMaxRety']){rpcDb['createCustomerFinal'](_0x2887fa,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb['rescheduleContact'](ut[_0xfdbc('0xb9')](_0x2887fa,_0xfdbc('0xd6'),_0x4ac656['dialAbandonedRetryFrequency']),_0x2887fa[_0xfdbc('0xbb')],_0x2887fa['activeContact']);}}break;case'18':_0x4ac656[_0xfdbc('0xda')]+=0x1;_0x2887fa[_0xfdbc('0xdb')]+=0x1;_0x2887fa[_0xfdbc('0x97')]=ut[_0xfdbc('0x98')](_0x2887fa);ut[_0xfdbc('0x86')](_0x2887fa,0x12,_0x13821d[_0xfdbc('0xdc')]||_0x13821d[_0xfdbc('0xdd')]);ami['emit'](_0xfdbc('0xde'),ut[_0xfdbc('0x9a')](_0x2887fa,_0xfdbc('0xdf')));rpcDb[_0xfdbc('0x8c')](_0x2887fa,'[callProgressDetectingCustomer][hangupInAMD]');if(ut[_0xfdbc('0x98')](_0x2887fa)>=_0x4ac656[_0xfdbc('0xb5')]){_0x38ea6f=ut[_0xfdbc('0xd1')](_0x2887fa,0xf,_0xfdbc('0x9c'));rpcDb[_0xfdbc('0x8e')](_0x38ea6f,_0xfdbc('0xe0'));}else{rpcDb[_0xfdbc('0x8e')](_0x2887fa,_0xfdbc('0xe0'));}delete this['actions'][_0x13821d[_0xfdbc('0xa0')]];break;case'19':_0x4ac656['outboundUnknownCallsDay']+=0x1;_0x2887fa[_0xfdbc('0x97')]=ut['totalGlobal'](_0x2887fa);ut[_0xfdbc('0x86')](_0x2887fa,0x13,_0x13821d[_0xfdbc('0xdc')]||_0x13821d['dialstatus']);ami[_0xfdbc('0x22')]('custom:amd',ut[_0xfdbc('0x9a')](_0x2887fa,_0xfdbc('0xdf')));rpcDb['createCustomerHistory'](_0x2887fa,_0xfdbc('0xe1'));if(ut[_0xfdbc('0x98')](_0x2887fa)>=_0x4ac656['dialGlobalMaxRetry']){_0x38ea6f=ut[_0xfdbc('0xd1')](_0x2887fa,0xf,_0xfdbc('0x9c'));rpcDb[_0xfdbc('0x8e')](_0x38ea6f,_0xfdbc('0xe1'));}else{rpcDb[_0xfdbc('0x8e')](_0x2887fa,_0xfdbc('0xe1'));}delete this[_0xfdbc('0x13')][_0x13821d['linkedid']];break;default:if(_0x2887fa[_0xfdbc('0x69')]){ut[_0xfdbc('0x71')](_0x4ac656,_0xfdbc('0xe2'));ut[_0xfdbc('0x72')](_0xfdbc('0xe3')+_0x4ac656['name'],_0x13821d);}_0x4ac656[_0xfdbc('0xda')]+=0x1;_0x2887fa[_0xfdbc('0x97')]=ut[_0xfdbc('0x98')](_0x2887fa);ut[_0xfdbc('0x86')](_0x2887fa,0xc,_0x13821d[_0xfdbc('0xdc')]||_0x13821d[_0xfdbc('0xdd')]);rpcDb[_0xfdbc('0x8c')](_0x2887fa,_0xfdbc('0xe4'));if(ut[_0xfdbc('0x98')](_0x2887fa)>=_0x4ac656[_0xfdbc('0xb5')]){_0x38ea6f=ut[_0xfdbc('0xd1')](_0x2887fa,0xf,'Global');rpcDb[_0xfdbc('0x8e')](_0x38ea6f,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0xfdbc('0x8e')](_0x2887fa,_0xfdbc('0xe5'));}delete this[_0xfdbc('0x13')][_0x13821d[_0xfdbc('0xa0')]];}if(!(_0x2887fa[_0xfdbc('0x69')]&&_0x2af077==='16')){ut[_0xfdbc('0x6f')](_0x4ac656,_0xfdbc('0xe6'));logger['info'](_0xfdbc('0xe7'),_0x2887fa['uniqueid'],_0xfdbc('0xa7'),_0x4ac656[_0xfdbc('0x24')],_0xfdbc('0xe8'),_0x4ac656[_0xfdbc('0x47')]);}if(_0x2af077!==_0xfdbc('0xa1')){delete this[_0xfdbc('0x13')][_0x13821d[_0xfdbc('0xa0')]];delete this[_0xfdbc('0x13')][_0x13821d[_0xfdbc('0xe9')]];}}};Preview[_0xfdbc('0x5b')]['callProgressDetectingAgent']=function(_0x273ab7,_0x2070f6,_0x826a09){if(_['isUndefined'](_0x2070f6)&&_0xfdbc('0xea')!==typeof _0x2070f6){return;}if(_['isUndefined'](_0x826a09)&&'object'!==typeof _0x826a09){return;}switch(_0x826a09[_0xfdbc('0xeb')]){case'0':ut[_0xfdbc('0xec')](_0x273ab7,0x0,_0xfdbc('0x99'));rpcDb[_0xfdbc('0xed')](_0x273ab7,_0xfdbc('0xee'));break;case'3':ut[_0xfdbc('0xec')](_0x273ab7,0x3,'NoAnswer');rpcDb[_0xfdbc('0xed')](_0x273ab7,_0xfdbc('0xef'));break;case'5':ut['logAgent'](_0x273ab7,0x5,_0xfdbc('0xb4'));rpcDb[_0xfdbc('0xed')](_0x273ab7,_0xfdbc('0xf0'));break;case'8':ut['logAgent'](_0x273ab7,0x8,'Congestion');rpcDb['createAgentHistory'](_0x273ab7,_0xfdbc('0xf1'));break;case'22':ut['logAgent'](_0x273ab7,0x16,_0xfdbc('0xf2'));rpcDb[_0xfdbc('0xed')](_0x273ab7,_0xfdbc('0xf3'));break;default:ut[_0xfdbc('0xec')](_0x273ab7,0xc,_0x826a09[_0xfdbc('0xeb')]);rpcDb['createAgentHistory'](_0x273ab7,_0xfdbc('0xf1'));}ut[_0xfdbc('0x6f')](_0x2070f6,_0xfdbc('0xf4'));logger[_0xfdbc('0x51')](_0xfdbc('0xf5'),_0x273ab7[_0xfdbc('0xa6')],_0xfdbc('0xa7'),_0x2070f6[_0xfdbc('0x24')],_0xfdbc('0xe8'),_0x2070f6['originated']);delete this[_0xfdbc('0x13')][_0x273ab7[_0xfdbc('0xa6')]];};Preview[_0xfdbc('0x5b')]['checkInBlack']=function(_0x4314e5,_0x38ff76,_0x3049b7,_0x4f00c8,_0x4f4f70){var _0x2297e4=this;return new BPromise(function(_0x9c1980,_0x5d8d85){if(_[_0xfdbc('0x65')](_0x38ff76)||_[_0xfdbc('0x65')](_0x38ff76['Contact'])||_[_0xfdbc('0x65')](_0x38ff76[_0xfdbc('0xf6')][_0xfdbc('0xf7')])||_[_0xfdbc('0x65')](_0x38ff76[_0xfdbc('0xf8')])){_0x5d8d85(ut[_0xfdbc('0x46')](_0xfdbc('0xf9'),_0x4f00c8,_0x4f4f70));return;}var _0x2e8f08=uuid['v4']();var _0x5b8e29=_0x2297e4[_0xfdbc('0x10')][_0x38ff76[_0xfdbc('0xfa')][_0xfdbc('0x24')]];var _0xc752ac=_0x3049b7?_0x2297e4['agents'][_0x3049b7]['id']:undefined;_0x2297e4['actions'][_0x2e8f08]=new Action(_0x38ff76,_0x5b8e29,_0x2e8f08,_0x3049b7,_0xc752ac);var _0x4b2a28=_0x2297e4[_0xfdbc('0x13')][_0x2e8f08];_0x4b2a28['unlockAgent']=_0x4f00c8;_0x4b2a28['activeContact']=_0x4f4f70;_0x4b2a28[_0xfdbc('0xfb')]=_0x3049b7;if(_[_0xfdbc('0xfc')](_0x4314e5)){_0x2297e4[_0xfdbc('0xfd')](_0x4b2a28,_0x5b8e29,_0x38ff76,_0x3049b7)[_0xfdbc('0x79')](function(_0x882df9){logger['info']('[Preview][execCall][success]',_0xfdbc('0xfe')+_0x4b2a28[_0xfdbc('0x67')]+_0xfdbc('0xff')+_0x4b2a28[_0xfdbc('0x100')],JSON[_0xfdbc('0x53')](_0x882df9));ami[_0xfdbc('0x22')]('custom:agentcalled',ut['buildObj'](_0x4b2a28,_0xfdbc('0x101'),_0x2297e4[_0xfdbc('0x10')][_0x4b2a28[_0xfdbc('0x67')]]));_0x9c1980(ut[_0xfdbc('0x46')](_0xfdbc('0x102')));})[_0xfdbc('0x81')](function(_0x4195cc){ut[_0xfdbc('0x58')]('[Preview][execCall][failure]',_0x4195cc);_0x5d8d85(ut['message'](_0xfdbc('0x103'),_0x4f00c8,_0x4f4f70));});}else{_0x5b8e29[_0xfdbc('0x32')]+=0x1;ut[_0xfdbc('0x104')](_0x4b2a28);rpcDb[_0xfdbc('0x105')](_0x4b2a28,_0xfdbc('0x106'));delete _0x2297e4[_0xfdbc('0x13')][_0x2e8f08];_0x5d8d85(ut[_0xfdbc('0x46')](_0xfdbc('0x107'),_0x4f00c8,_0x4f4f70));}});};Preview[_0xfdbc('0x5b')][_0xfdbc('0x92')]=function(_0x50deaa){return!_[_0xfdbc('0x65')](_0x50deaa)&&!_[_0xfdbc('0x65')](_0x50deaa[_0xfdbc('0x24')])&&!_[_0xfdbc('0x65')](_0x50deaa[_0xfdbc('0x4e')])&&_0x50deaa[_0xfdbc('0x4e')]&&!_[_0xfdbc('0x65')](this[_0xfdbc('0x12')][util[_0xfdbc('0x84')]('SIP/%s',_0x50deaa[_0xfdbc('0x24')])])&&!_[_0xfdbc('0x65')](this[_0xfdbc('0x12')][util[_0xfdbc('0x84')]('SIP/%s',_0x50deaa['name'])][_0xfdbc('0x6d')])&&(this[_0xfdbc('0x12')][util[_0xfdbc('0x84')](_0xfdbc('0x108'),_0x50deaa['name'])][_0xfdbc('0x6d')]===_0xfdbc('0x109')||this['trunks'][util[_0xfdbc('0x84')](_0xfdbc('0x108'),_0x50deaa[_0xfdbc('0x24')])][_0xfdbc('0x6d')]===_0xfdbc('0x10a'));};Preview[_0xfdbc('0x5b')][_0xfdbc('0x10b')]=function(_0x3a7070,_0x357dd1){var _0x1375ea=this;return new BPromise(function(_0x363b56,_0x6c051f){_0x1375ea[_0xfdbc('0x10c')](_0x3a7070,_0x357dd1)[_0xfdbc('0x79')](function(_0x2fbc9a){_0x363b56(_['pick'](_0x2fbc9a,[_0xfdbc('0x46')]));})[_0xfdbc('0x81')](function(_0x16c713){if(_0x16c713[_0xfdbc('0x10d')]){rpcDb['unlockContact'](_0x3a7070);}if(_0x16c713[_0xfdbc('0x4e')]){rpcDb[_0xfdbc('0x82')](_0x3a7070);}_0x6c051f(_[_0xfdbc('0x10e')](_0x16c713,[_0xfdbc('0x46')]));});});};Preview[_0xfdbc('0x5b')]['execRun']=function(_0x55d908,_0x22d1b4){var _0x49465f=this;return new BPromise(function(_0x103c1d,_0x12b510){var _0xa9d3a9,_0x11ad0d;rpcDb[_0xfdbc('0x10f')](_0x55d908)[_0xfdbc('0x79')](function(_0x3175ff){if(!_[_0xfdbc('0x65')](_0x3175ff[0x0])){_0x11ad0d=_0x3175ff[0x0][_0xfdbc('0x110')]?![]:!![];_0xa9d3a9=_0x3175ff[0x0][_0xfdbc('0x110')]?!![]:![];_0xa9d3a9=_0x22d1b4?!![]:_0xa9d3a9;}var _0xc0bc30=_0x49465f[_0xfdbc('0x111')](_0x3175ff);if(_0xc0bc30[_0xfdbc('0x112')]){rpcDb[_0xfdbc('0x113')](_[_0xfdbc('0x10e')](_0x3175ff[0x0],[_0xfdbc('0xf8'),_0xfdbc('0x114')]))['then'](function(_0x568bb2){_0x49465f[_0xfdbc('0x115')](_0x568bb2,_0x3175ff[0x0],_0x22d1b4,_0x11ad0d,_0xa9d3a9)[_0xfdbc('0x79')](function(_0x1fd07a){_0x103c1d(_0x1fd07a);})['catch'](function(_0x444dd3){_0x12b510(_0x444dd3);});})['catch'](function(_0x5e024d){ut[_0xfdbc('0x58')](_0xfdbc('0x116'),_0x5e024d);_0x12b510(ut[_0xfdbc('0x46')]('Call\x20unsuccessful',_0x11ad0d,_0xa9d3a9));});}else{_0x12b510(ut[_0xfdbc('0x46')](_0xc0bc30[_0xfdbc('0x46')],_0x11ad0d,_0xa9d3a9));}})[_0xfdbc('0x81')](function(_0x442c7a){ut[_0xfdbc('0x58')]('[Preview][getContactPreview]',_0x442c7a);_0x12b510(ut['message'](_0xfdbc('0x117'),![],!![]));});});};Preview['prototype'][_0xfdbc('0x111')]=function(_0x3da522){if(_[_0xfdbc('0x65')](_0x3da522)||_[_0xfdbc('0xfc')](_0x3da522)||!_[_0xfdbc('0x65')](_0x3da522[0x0]['Agent'])&&_['isNil'](_0x3da522[0x0][_0xfdbc('0x7d')][_0xfdbc('0x24')])){ut[_0xfdbc('0x58')](_0xfdbc('0x118'),_0x3da522);return{'isValid':![],'message':_0xfdbc('0x119')};}var _0x39a410=this[_0xfdbc('0x10')][_0x3da522[0x0][_0xfdbc('0xfa')][_0xfdbc('0x24')]];_0x39a410[_0xfdbc('0x46')]=_0xfdbc('0x95');if(_['isNil'](_0x39a410)){ut[_0xfdbc('0x58')](_0xfdbc('0x11a'),_0x39a410);return{'isValid':![],'message':_0xfdbc('0x11b')};}if(!this[_0xfdbc('0x92')](_0x39a410[_0xfdbc('0x4d')])){ut['logger'](_0xfdbc('0x11c'),_0xfdbc('0x11d')+_0x39a410['name']+'\x20Trunk\x20is\x20not\x20active');if(!this['isTrunkReachable'](_0x39a410[_0xfdbc('0x93')])){ut[_0xfdbc('0x58')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x39a410[_0xfdbc('0x24')]+_0xfdbc('0x11e'));return{'isValid':![],'message':_0xfdbc('0x11f')};}}if(!ut[_0xfdbc('0x91')](_0x39a410[_0xfdbc('0x2c')])){ut['logger']('[Preview][validateContact][Campaign\x20Active]',_0x39a410['name']+_0xfdbc('0x120'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x39a410[_0xfdbc('0x24')]+_0xfdbc('0x120')};}return{'isValid':!![],'message':_0xfdbc('0x121')};};Preview[_0xfdbc('0x5b')][_0xfdbc('0xfd')]=function(_0x1ab144,_0x1923dc,_0x27bac7,_0x304a16){var _0x5dc0a4=this;return new BPromise(function(_0xe7443e,_0x5bd056){var _0xc56ea0=_0x1ab144[_0xfdbc('0xa6')];var _0x31361=_0x5dc0a4[_0xfdbc('0x92')](_0x1923dc['Trunk'])?util[_0xfdbc('0x84')](_0xfdbc('0x122'),_0x1923dc[_0xfdbc('0x4d')][_0xfdbc('0x24')],_[_0xfdbc('0x65')](_0x1923dc['dialPrefix'])?'':_0x1923dc['dialPrefix'][_0xfdbc('0x123')]()||'',_0x1923dc[_0xfdbc('0x124')]>0x0?_0x27bac7[_0xfdbc('0xf6')]['phone']['substring'](_0x1923dc[_0xfdbc('0x124')]):_0x27bac7[_0xfdbc('0xf6')][_0xfdbc('0xf7')]):util['format']('SIP/%s/%s%s',_[_0xfdbc('0x65')](_0x1923dc['TrunkBackup'])?_0x1923dc[_0xfdbc('0x4d')][_0xfdbc('0x24')]:_0x1923dc[_0xfdbc('0x93')][_0xfdbc('0x24')],_[_0xfdbc('0x65')](_0x1923dc[_0xfdbc('0x125')])?'':_0x1923dc[_0xfdbc('0x125')]['trim']()||'',_0x1923dc[_0xfdbc('0x124')]>0x0?_0x27bac7[_0xfdbc('0xf6')]['phone'][_0xfdbc('0x126')](_0x1923dc[_0xfdbc('0x124')]):_0x27bac7['Contact'][_0xfdbc('0xf7')]);var _0x3c9001=_0x5dc0a4[_0xfdbc('0x92')](_0x1923dc[_0xfdbc('0x4d')])?ut[_0xfdbc('0x127')](_0x1923dc[_0xfdbc('0x4d')][_0xfdbc('0x128')],_0x1923dc[_0xfdbc('0x2e')],_0x1923dc[_0xfdbc('0x129')]>0x0?ut['getCallerIdRandom'](_0x1923dc['dialOriginateCallerIdNumber'],_0x1923dc[_0xfdbc('0x129')]):_0x1923dc[_0xfdbc('0x2f')]):ut[_0xfdbc('0x127')](_[_0xfdbc('0x65')](_0x1923dc[_0xfdbc('0x93')])?_0x1923dc['Trunk'][_0xfdbc('0x128')]:_0x1923dc['TrunkBackup'][_0xfdbc('0x128')],_0x1923dc[_0xfdbc('0x2e')],_0x1923dc['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0xfdbc('0x12a')](_0x1923dc[_0xfdbc('0x2f')],_0x1923dc[_0xfdbc('0x129')]):_0x1923dc[_0xfdbc('0x2f')]);if(_0x3c9001){_0x1ab144[_0xfdbc('0x12b')]=ut[_0xfdbc('0x12c')](_0x3c9001);_0x1ab144['originatecalleridnum']=ut[_0xfdbc('0x12d')](_0x3c9001);}var _0x438abf=ut[_0xfdbc('0x12e')](_0x1923dc,_0x27bac7,_0x31361,_0x3c9001,_0xc56ea0,_0x1ab144);_[_0xfdbc('0x12f')](_0x1ab144,ut[_0xfdbc('0x130')](_0x438abf));_0x1ab144[_0xfdbc('0x83')]=moment()[_0xfdbc('0x84')](_0xfdbc('0x85'));ami[_0xfdbc('0x6c')](ut[_0xfdbc('0x131')](_0x1ab144,_0x1923dc,_0x438abf,_0x1ab144[_0xfdbc('0x9f')],_0x304a16))[_0xfdbc('0x79')](function(_0x2c04cb){_0x1923dc[_0xfdbc('0x47')]+=0x1;logger[_0xfdbc('0x51')](_0xfdbc('0x132'),_0xc56ea0,_0xfdbc('0xa7'),_0x1923dc['name'],_0xfdbc('0xe8'),_0x1923dc[_0xfdbc('0x47')]);_0xe7443e(_0x2c04cb);})[_0xfdbc('0x81')](function(_0x2fa7e5){ut[_0xfdbc('0xec')](_0x1ab144,0xe,_0xfdbc('0x133'));rpcDb[_0xfdbc('0xed')](_0x1ab144,'[originateFailure][logOriginateFailure]');_0x5bd056(_0x2fa7e5);});});};Preview[_0xfdbc('0x5b')][_0xfdbc('0x134')]=function(_0x37054b){if(this['actions'][_0x37054b[_0xfdbc('0xa0')]]){this[_0xfdbc('0x13')][_0x37054b[_0xfdbc('0xa0')]]['channel']=_0x37054b[_0xfdbc('0x135')];}};Preview[_0xfdbc('0x5b')][_0xfdbc('0x17')]=function(_0x54b5a0){var _0x5cae69=this;var _0x16550e=this[_0xfdbc('0x13')][_0x54b5a0['actionid']];if(_0x16550e){if(_0x16550e[_0xfdbc('0xfb')]&&this[_0xfdbc('0x14')][_0x16550e[_0xfdbc('0xfb')]]){ut[_0xfdbc('0x136')](_0x16550e,this['agents'][_0x16550e[_0xfdbc('0xfb')]][_0xfdbc('0x24')],this[_0xfdbc('0x14')][_0x16550e[_0xfdbc('0xfb')]]['id']);}var _0x3116b9=_[_0xfdbc('0x137')](_0x16550e);_0x3116b9[_0xfdbc('0xa2')]=moment()[_0xfdbc('0x84')]('YYYY-MM-DD\x20HH:mm:ss');var _0x2681c0=_0x5cae69[_0xfdbc('0x10')][_0x16550e[_0xfdbc('0x67')]];if(ut[_0xfdbc('0x138')](_0x54b5a0['response'])){if(_0x16550e[_0xfdbc('0xbb')]){rpcDb[_0xfdbc('0x139')](_0x16550e[_0xfdbc('0x100')]);}if(_0x16550e[_0xfdbc('0x9f')]){rpcDb[_0xfdbc('0x82')](_0x16550e['idContact']);}ami[_0xfdbc('0x22')]('custom:agentringnoanswer',ut['buildObj'](_0x16550e,_0xfdbc('0x13a'),this[_0xfdbc('0x10')][_0x16550e[_0xfdbc('0x67')]]));this[_0xfdbc('0x13b')](_0x3116b9,_0x2681c0,_0x54b5a0);}else{_0x16550e[_0xfdbc('0x83')]=moment()[_0xfdbc('0x84')](_0xfdbc('0x85'));ut[_0xfdbc('0xec')](_0x3116b9,0x4,_0xfdbc('0x13c'));rpcDb[_0xfdbc('0xed')](_0x3116b9,_0xfdbc('0x13d'));}}};Preview['prototype']['syncHangup']=function(_0x259534){var _0x5aff49=this;var _0x559d62=this[_0xfdbc('0x13')][_0x259534[_0xfdbc('0xa0')]];var _0x184fc9;if(_0x559d62){_0x184fc9=this['campaignsPreview'][_0x559d62[_0xfdbc('0x67')]];logger['info']('[syncHangup][talking]',_0x259534[_0xfdbc('0xa0')],_0xfdbc('0xa7'),_0x184fc9['name'],'pTalking:\x20',_0x184fc9[_0xfdbc('0xa4')]);}if(this[_0xfdbc('0x13')][_0x259534[_0xfdbc('0xa0')]]&&_0x259534[_0xfdbc('0xa0')]!==_0x259534[_0xfdbc('0xa6')]){if(_0x259534[_0xfdbc('0x13e')]==='16'&&this['actions'][_0x259534[_0xfdbc('0xa0')]][_0xfdbc('0x69')]){this['callProgressDetectingCustomer'](_0x259534,_0x259534[_0xfdbc('0xa0')],_0x259534['cause']);}else if(this[_0xfdbc('0x13')][_0x259534[_0xfdbc('0xa0')]][_0xfdbc('0x69')]){logger[_0xfdbc('0x51')](_0xfdbc('0x13f'),_0x259534['linkedid'],_0x259534[_0xfdbc('0x13e')],_0xfdbc('0xa7'),_0x184fc9[_0xfdbc('0x24')],_0xfdbc('0x68'),_0x184fc9[_0xfdbc('0xa4')]);this['callProgressDetectingCustomer'](_0x259534,_0x259534[_0xfdbc('0xa0')],_0x259534[_0xfdbc('0x13e')]);}}else if(_0x559d62&&_['isNil'](_0x559d62[_0xfdbc('0x140')])&&_0x184fc9[_0xfdbc('0x141')]&&_0x259534[_0xfdbc('0xa0')]===_0x259534['uniqueid']&&_['isNil'](_0x259534[_0xfdbc('0xeb')])&&_0x259534[_0xfdbc('0x13e')]==='16'&&_0x259534[_0xfdbc('0x142')]==='6'&&_[_0xfdbc('0x143')](_0x559d62['transfer'])){if(_0x559d62[_0xfdbc('0xbb')]){rpcDb[_0xfdbc('0x139')](_0x559d62[_0xfdbc('0x100')]);}if(_0x559d62['activeContact']){rpcDb[_0xfdbc('0x82')](_0x559d62['idContact']);}_0x259534[_0xfdbc('0xeb')]='22';this[_0xfdbc('0x13b')](_0x559d62,_0x184fc9,_0x259534);}else if(_0x559d62&&_0x559d62[_0xfdbc('0x144')]){if(_0x259534[_0xfdbc('0x13e')]==='16'&&this[_0xfdbc('0x13')][_0x259534[_0xfdbc('0xa0')]][_0xfdbc('0x69')]){logger[_0xfdbc('0x51')](_0xfdbc('0x145'),_0x259534[_0xfdbc('0xa0')],_0x259534[_0xfdbc('0x13e')],_0xfdbc('0xa7'),_0x184fc9[_0xfdbc('0x24')],'pTalking:\x20',_0x184fc9['pTalking']);this[_0xfdbc('0x96')](_0x259534,_0x259534[_0xfdbc('0xa0')],_0x259534[_0xfdbc('0x13e')]);}else if(this[_0xfdbc('0x13')][_0x259534['linkedid']][_0xfdbc('0x69')]){logger[_0xfdbc('0x51')](_0xfdbc('0x13f'),_0x259534['linkedid'],_0x259534['cause'],_0xfdbc('0xa7'),_0x184fc9[_0xfdbc('0x24')],_0xfdbc('0x68'),_0x184fc9[_0xfdbc('0xa4')]);this[_0xfdbc('0x96')](_0x259534,_0x259534['linkedid'],_0x259534[_0xfdbc('0x13e')]);}}};Preview[_0xfdbc('0x5b')][_0xfdbc('0x146')]=function(_0x33c936){if(this[_0xfdbc('0x13')][_0x33c936[_0xfdbc('0xe9')]]&&_0x33c936[_0xfdbc('0xe9')]!==_0x33c936[_0xfdbc('0x147')]){this[_0xfdbc('0x96')](_0x33c936,_0x33c936[_0xfdbc('0xe9')],_0x33c936['dialstatus']);}};Preview[_0xfdbc('0x5b')][_0xfdbc('0x1a')]=function(_0x1b3e9d){if(this[_0xfdbc('0x13')][_0x1b3e9d[_0xfdbc('0xa0')]]&&_0x1b3e9d[_0xfdbc('0xa0')]!==_0x1b3e9d['uniqueid']&&!this[_0xfdbc('0x13')][_0x1b3e9d[_0xfdbc('0xa0')]][_0xfdbc('0x69')]){if(_0x1b3e9d[_0xfdbc('0x13e')]==='1'){this['callProgressDetectingCustomer'](_0x1b3e9d,_0x1b3e9d[_0xfdbc('0xa0')],_0x1b3e9d['cause']);}}};Preview[_0xfdbc('0x5b')]['addVariable']=function(_0x2127c2,_0x10a10b,_0x136856){if(this[_0xfdbc('0x13')][_0x2127c2]){if(_[_0xfdbc('0x65')](this[_0xfdbc('0x13')][_0x2127c2][_0xfdbc('0x148')])){this[_0xfdbc('0x13')][_0x2127c2]['variables']={};}this[_0xfdbc('0x13')][_0x2127c2][_0xfdbc('0x148')][_0x10a10b]=_0x136856;}};Preview['prototype'][_0xfdbc('0x149')]=function(_0x944b6c){try{if(!_[_0xfdbc('0x65')](_0x944b6c)){if(ut[_0xfdbc('0x14a')](_[_0xfdbc('0x14b')](_0x944b6c['variable'])[0x0])){this[_0xfdbc('0x14c')](_0x944b6c[_0xfdbc('0xa6')],_[_0xfdbc('0x14b')](_0x944b6c[_0xfdbc('0x14d')])[0x0],_0x944b6c[_0xfdbc('0x14e')]);}}}catch(_0x1e6bd9){logger['error'](_0xfdbc('0x14f'),util[_0xfdbc('0x150')](_0x1e6bd9,{'showHidden':![],'depth':null}));}};Preview[_0xfdbc('0x5b')][_0xfdbc('0x1e')]=function(_0x5dec28){if(_0x5dec28){if(this[_0xfdbc('0x13')][_0x5dec28[_0xfdbc('0x151')]]){this[_0xfdbc('0x13')][_0x5dec28['transfertargetlinkedid']]['transfer']=!![];}}};Preview[_0xfdbc('0x5b')]['syncBlindTransfer']=function(_0x301b80){if(_0x301b80){if(this['actions'][_0x301b80[_0xfdbc('0x152')]]){this[_0xfdbc('0x13')][_0x301b80[_0xfdbc('0x152')]][_0xfdbc('0x144')]=!![];}}};module[_0xfdbc('0x153')]=Preview;
\ No newline at end of file
+var _0x6a75=['[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','substring','dialCutDigit','SIP/%s/%s%s','trim','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','extractCalleridName','extractCalleridNumber','addVariables','merge','Action','destconnectedlinenum','user:%s','accountcode','calleridnum','[originated][increment]','syncNewExten','actionid','isFailure','response','unlockContact','custom:agentringnoanswer','[callProgressDetectingAgent][logAnswer]','syncHangup','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','addVariable','variables','filterKey','variable','keys','value','error','[syncVarSet][Preview]','inspect','transfererlinkedid','exports','util','lodash','bluebird','uuid','md5','ioredis','../../../config/environment','../../../config/logger','actionPreview','./rpcDb','./action','./util/util','redis','defaults','localhost','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','bind','hangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','type','outbound','name','strategy','answered','available','loggedIn','sumBillable','unmanaged','abandoned','waiting','loggedInDb','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','message','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startProgressive','Trunk','active','callerid','Interval','stringify','format','voice_queue:save','info','voice_queue_channel:remove','emit','sendMessageOneNotActive','originated','pTalking','paused','NOT_ACTIVE','logger','\x20is\x20not\x20active','[CampaignPreview]\x20Campaign\x20Queue:\x20','prototype','syncCampaigns','preview','clearZombieChannels','dialActive','setMessage','recallMe','clearZombieChannel','enqueue','[clearZombieChannels][talking]','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','UserId','VoiceQueueId','ListId','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','hasOwnProperty','getContactRecallMe','agentReadyId','then','isNil','length','getDiff','scheduledat','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','outboundReCallsDay','RecallInQueue','dialRecallInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','logCustomer','RecallFailedTimeout','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','dialNoSuchNumberMaxRetry','rescheduleContact','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','YYYY-MM-DD\x20HH:mm:ss','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','outboundAnswerCallsDay','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','sumDuration','talktime','[syncHangup][talking][decrement]','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','dialBusyMaxRetry','countnoanswerretry','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','scheduledAt','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialBusyRetryFrequency','CANCEL','AgentReject','agentreject','[syncHangupRequest][logAgentReject]','countagentrejectretry','dialAgentRejectMaxRetry','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency','ABANDONED','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedRetryFrequency','outboundUnknownCallsDay','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','cause-txt','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','ANSWER','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent][logCongestion]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','Queue','lookAgent','isEmpty','execCall','Queue:\x20','idContact','custom:agentcalled','called','Calling','[Preview][execCall][failure]','outboundBlacklistCallsDay','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','execRun','unlock','getContactPreview','recallme','validateContact','checkIsBlackList','Contact.phone'];(function(_0x2fd603,_0x552179){var _0x4e9c2b=function(_0x3004e9){while(--_0x3004e9){_0x2fd603['push'](_0x2fd603['shift']());}};_0x4e9c2b(++_0x552179);}(_0x6a75,0x18f));var _0x56a7=function(_0x3fba9f,_0x3b7b9b){_0x3fba9f=_0x3fba9f-0x0;var _0x192cf1=_0x6a75[_0x3fba9f];return _0x192cf1;};'use strict';var util=require(_0x56a7('0x0'));var _=require(_0x56a7('0x1'));var BPromise=require(_0x56a7('0x2'));var uuid=require(_0x56a7('0x3'));var moment=require('moment');var md5=require(_0x56a7('0x4'));var Redis=require(_0x56a7('0x5'));var config=require(_0x56a7('0x6'));var logger=require(_0x56a7('0x7'))('preview');var loggerAction=require('../../../config/logger')(_0x56a7('0x8'));var ami=require('../ami');var rpcDb=require(_0x56a7('0x9'));var Action=require(_0x56a7('0xa'));var ut=require(_0x56a7('0xb'));config[_0x56a7('0xc')]=_[_0x56a7('0xd')](config['redis'],{'host':_0x56a7('0xe'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x56a7('0xc')]));var Sequence=function(){};Sequence['prototype']['enqueue']=function(_0x50834b){this[_0x56a7('0xf')]=this[_0x56a7('0xf')]?this[_0x56a7('0xf')][_0x56a7('0x10')](_0x50834b):_0x50834b();};function Preview(_0x7febf){this[_0x56a7('0x11')]=new Sequence();this[_0x56a7('0x12')]=_0x7febf[_0x56a7('0x13')];this[_0x56a7('0x14')]=_0x7febf[_0x56a7('0x14')];this[_0x56a7('0x15')]={};this['agents']=_0x7febf[_0x56a7('0x16')];this[_0x56a7('0x17')]=0x0;ami['on'](_0x56a7('0x18'),this['syncOriginateResponse'][_0x56a7('0x19')](this));ami['on'](_0x56a7('0x1a'),this['syncHangup'][_0x56a7('0x19')](this));ami['on'](_0x56a7('0x1b'),this[_0x56a7('0x1c')][_0x56a7('0x19')](this));ami['on'](_0x56a7('0x1d'),this[_0x56a7('0x1e')][_0x56a7('0x19')](this));ami['on']('newexten',this['syncNewExten'][_0x56a7('0x19')](this));ami['on']('varset',this[_0x56a7('0x1f')][_0x56a7('0x19')](this));ami['on'](_0x56a7('0x20'),this[_0x56a7('0x21')][_0x56a7('0x19')](this));ami['on'](_0x56a7('0x22'),this[_0x56a7('0x23')][_0x56a7('0x19')](this));this[_0x56a7('0x24')](this[_0x56a7('0x12')]);}function emit(_0x4f755b,_0x4988f2,_0xb66af8){io['to'](_0x4f755b)['emit'](_0x4988f2,_0xb66af8);}function emitCampaignPreview(_0x32f93f){if(_0x32f93f[_0x56a7('0x25')]===_0x56a7('0x26')){var _0x4de3d9={'id':_0x32f93f['id'],'name':_0x32f93f[_0x56a7('0x27')],'strategy':_0x32f93f[_0x56a7('0x28')],'answered':_0x32f93f[_0x56a7('0x29')],'available':_0x32f93f[_0x56a7('0x2a')],'loggedIn':_0x32f93f[_0x56a7('0x2b')],'pTalking':_0x32f93f['pTalking'],'sumBillable':_0x32f93f[_0x56a7('0x2c')],'sumDuration':_0x32f93f['sumDuration'],'sumHoldTime':_0x32f93f['sumHoldTime']||0x0,'talking':_0x32f93f['talking'],'total':_0x32f93f['total'],'type':_0x32f93f[_0x56a7('0x25')],'unmanaged':_0x32f93f[_0x56a7('0x2d')],'abandoned':_0x32f93f[_0x56a7('0x2e')],'waiting':_0x32f93f[_0x56a7('0x2f')],'loggedInDb':_0x32f93f[_0x56a7('0x30')],'dialActive':_0x32f93f['dialActive'],'dialMethod':_0x32f93f[_0x56a7('0x31')],'dialOriginateCallerIdName':_0x32f93f[_0x56a7('0x32')],'dialOriginateCallerIdNumber':_0x32f93f['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x32f93f[_0x56a7('0x33')],'dialPrefix':_0x32f93f[_0x56a7('0x34')],'outboundAnswerAgiCallsDay':_0x32f93f[_0x56a7('0x35')],'outboundAnswerCallsDay':_0x32f93f['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x32f93f['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x32f93f[_0x56a7('0x36')],'outboundCongestionCallsDay':_0x32f93f[_0x56a7('0x37')],'outboundDropCallsDayACS':_0x32f93f['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x32f93f[_0x56a7('0x38')],'outboundDropCallsDayTimeout':_0x32f93f[_0x56a7('0x39')],'outboundNoAnswerCallsDay':_0x32f93f[_0x56a7('0x3a')],'outboundNoSuchCallsDay':_0x32f93f[_0x56a7('0x3b')],'outboundOriginateFailureCallsDay':_0x32f93f[_0x56a7('0x3c')],'outboundReCallsDay':_0x32f93f['outboundReCallsDay'],'outboundRejectCallsDay':_0x32f93f[_0x56a7('0x3d')],'outboundUnknownCallsDay':_0x32f93f['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x32f93f[_0x56a7('0x3e')],'predictiveIntervalAnsweredCalls':_0x32f93f['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x32f93f[_0x56a7('0x3f')],'predictiveIntervalAvgTalktime':_0x32f93f[_0x56a7('0x40')],'predictiveIntervalDroppedCallsCallersExit':_0x32f93f[_0x56a7('0x41')],'predictiveIntervalDroppedCallsTimeout':_0x32f93f[_0x56a7('0x42')],'predictiveIntervalErlangCalls':_0x32f93f[_0x56a7('0x43')],'predictiveIntervalErlangCallsDroppedCalls':_0x32f93f[_0x56a7('0x44')],'predictiveIntervalHitRate':_0x32f93f[_0x56a7('0x45')],'predictiveIntervalMultiplicativeFactor':_0x32f93f[_0x56a7('0x46')],'predictiveIntervalPauses':_0x32f93f[_0x56a7('0x47')],'predictiveIntervalAvailable':_0x32f93f['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x32f93f[_0x56a7('0x48')],'message':_0x32f93f[_0x56a7('0x49')],'originated':_0x32f93f['originated'],'erlangCalls':_0x32f93f[_0x56a7('0x4a')],'erlangCallToSecond':_0x32f93f[_0x56a7('0x4b')],'erlangAbandonmentRate':_0x32f93f[_0x56a7('0x4c')],'erlangBusyFactor':_0x32f93f['erlangBusyFactor'],'startPredictive':_0x32f93f['startPredictive'],'startProgressive':_0x32f93f[_0x56a7('0x4d')]};if(_0x32f93f[_0x56a7('0x4e')]){_0x4de3d9[_0x56a7('0x4e')]={'id':_0x32f93f[_0x56a7('0x4e')]['id'],'name':_0x32f93f[_0x56a7('0x4e')][_0x56a7('0x27')],'active':_0x32f93f['Trunk'][_0x56a7('0x4f')],'callerid':_0x32f93f[_0x56a7('0x4e')][_0x56a7('0x50')]};}if(_0x32f93f['Interval']){_0x4de3d9[_0x56a7('0x51')]={'id':_0x32f93f[_0x56a7('0x51')]['id'],'name':_0x32f93f[_0x56a7('0x51')][_0x56a7('0x27')]};}var _0x4c43dd=md5(JSON[_0x56a7('0x52')](_0x4de3d9));if(_0x32f93f[_0x56a7('0x4')]!==_0x4c43dd){_0x32f93f[_0x56a7('0x4')]=_0x4c43dd;emit(util[_0x56a7('0x53')]('voice:queue:%s',_0x4de3d9[_0x56a7('0x27')]),_0x56a7('0x54'),_0x4de3d9);}}}function emitVoiceQueueChannelRemove(_0x674169){logger[_0x56a7('0x55')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON[_0x56a7('0x52')](_0x674169));emit(util[_0x56a7('0x53')]('voice:queue:%s',_0x674169[_0x56a7('0x27')]),_0x56a7('0x56'),_0x674169);io[_0x56a7('0x57')]('voice_queue_presence:remove',_0x674169);}function notSendMessagesQueue(_0x137aaa){if(_0x137aaa[_0x56a7('0x58')]){if(_0x137aaa[_0x56a7('0x59')]===0x0&&_0x137aaa[_0x56a7('0x5a')]===0x0){_0x137aaa[_0x56a7('0x58')]=![];_0x137aaa['available']=0x0;_0x137aaa[_0x56a7('0x5b')]=0x0;_0x137aaa[_0x56a7('0x49')]=_0x56a7('0x5c');ut[_0x56a7('0x5d')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x137aaa[_0x56a7('0x27')]+_0x56a7('0x5e'));}else{_0x137aaa[_0x56a7('0x49')]='IS_DISACTIVED';ut[_0x56a7('0x5d')](_0x56a7('0x5f'),_0x137aaa['name']+'\x20is\x20disactive');}emitCampaignPreview(_0x137aaa);}}Preview[_0x56a7('0x60')][_0x56a7('0x24')]=function(){var _0x3ee0a8=this;setInterval(function(){_0x3ee0a8[_0x56a7('0x61')]();},0x7cf);};Preview[_0x56a7('0x60')][_0x56a7('0x61')]=function(){var _0x204c6c=this['campaignsPreview'];this[_0x56a7('0x17')]+=0x1;for(var _0x445494 in _0x204c6c){if(_0x204c6c['hasOwnProperty'](_0x445494)&&(_0x204c6c[_0x445494][_0x56a7('0x31')]===_0x56a7('0x62')||_0x204c6c[_0x445494][_0x56a7('0x31')]==='booked')&&_0x204c6c[_0x445494]['type']==='outbound'){if(this[_0x56a7('0x17')]>0x7){this[_0x56a7('0x17')]=0x0;this[_0x56a7('0x63')]();}}if(_0x204c6c['hasOwnProperty'](_0x445494)&&_0x204c6c[_0x445494][_0x56a7('0x31')]==='preview'&&_0x204c6c[_0x445494][_0x56a7('0x25')]==='outbound'){if(_0x204c6c[_0x445494][_0x56a7('0x64')]){this[_0x56a7('0x65')](_0x204c6c[_0x445494]);this[_0x56a7('0x66')](_0x204c6c[_0x445494]);}else{notSendMessagesQueue(_0x204c6c[_0x445494]);}}}};Preview[_0x56a7('0x60')][_0x56a7('0x67')]=function(_0x217cbb){var _0x593c53=this;this['sequence'][_0x56a7('0x68')](function(){if(!_['isNil'](_0x593c53[_0x56a7('0x15')][_0x217cbb])){loggerAction[_0x56a7('0x55')](_0x56a7('0x69'),_0x217cbb,'Queue',_0x593c53[_0x56a7('0x15')][_0x217cbb][_0x56a7('0x6a')],_0x56a7('0x6b'),JSON[_0x56a7('0x52')](_0x593c53[_0x56a7('0x12')][_0x593c53[_0x56a7('0x15')][_0x217cbb][_0x56a7('0x6a')]][_0x56a7('0x59')]),_0x56a7('0x6c'),JSON[_0x56a7('0x52')](_0x593c53[_0x56a7('0x12')][_0x593c53[_0x56a7('0x15')][_0x217cbb][_0x56a7('0x6a')]][_0x56a7('0x5a')]),JSON['stringify'](_0x593c53[_0x56a7('0x15')][_0x217cbb][_0x56a7('0x6d')]),JSON[_0x56a7('0x52')](_[_0x56a7('0x6e')](_0x593c53['actions'][_0x217cbb],['contactId',_0x56a7('0x6f'),_0x56a7('0x70'),_0x56a7('0x71')])));return ami['Action']({'action':_0x56a7('0x72'),'channel':_0x593c53[_0x56a7('0x15')][_0x217cbb][_0x56a7('0x73')]})[_0x56a7('0x74')](function(_0x42b9af){if(_0x42b9af[_0x56a7('0x49')]===_0x56a7('0x75')){setTimeout(function(){if(_0x593c53[_0x56a7('0x15')][_0x217cbb]){ut[_0x56a7('0x76')](_0x593c53['campaignsPreview'][_0x593c53[_0x56a7('0x15')][_0x217cbb][_0x56a7('0x6a')]],_0x56a7('0x77'));if(_0x593c53['actions'][_0x217cbb][_0x56a7('0x6d')]===!![]){ut[_0x56a7('0x78')](_0x593c53['campaignsPreview'][_0x593c53[_0x56a7('0x15')][_0x217cbb]['queue']],_0x56a7('0x77'));ut[_0x56a7('0x79')](_0x56a7('0x7a')+_0x217cbb,_0x593c53[_0x56a7('0x15')][_0x217cbb][_0x56a7('0x6a')]);}ut[_0x56a7('0x79')](_0x56a7('0x7b')+_0x217cbb,_0x593c53[_0x56a7('0x15')][_0x217cbb]['queue']);delete _0x593c53['actions'][_0x217cbb];}},0x2328);}});}});};Preview[_0x56a7('0x60')]['clearZombieChannels']=function(){var _0x554748=this;loggerAction[_0x56a7('0x55')](_0x56a7('0x7c'),_[_0x56a7('0x7d')](this['actions']));for(var _0x148380 in this[_0x56a7('0x15')]){if(_0x554748[_0x56a7('0x15')][_0x56a7('0x7e')](_0x148380)){_0x554748[_0x56a7('0x67')](_0x148380);}}};Preview[_0x56a7('0x60')][_0x56a7('0x66')]=function(_0x4402ae){var _0x3eb708=this;rpcDb[_0x56a7('0x7f')](_0x4402ae['id'],ut[_0x56a7('0x80')](this[_0x56a7('0x16')]))[_0x56a7('0x81')](function(_0x33a80a){if(!_[_0x56a7('0x82')](_0x33a80a)){for(var _0x40258c=0x0;_0x40258c<_0x33a80a[_0x56a7('0x83')];_0x40258c+=0x1){if(ut[_0x56a7('0x84')](_0x33a80a[_0x40258c][_0x56a7('0x85')])<_0x4402ae['dialRecallMeTimeout']*0x3c){if(_0x33a80a[_0x40258c][_0x56a7('0x86')]&&!_0x33a80a[_0x40258c][_0x56a7('0x86')][_0x56a7('0x87')]){_0x3eb708[_0x56a7('0x88')](_0x33a80a[_0x40258c]['id'])[_0x56a7('0x81')](ut[_0x56a7('0x89')](_0x56a7('0x8a')))[_0x56a7('0x74')](ut[_0x56a7('0x89')](_0x56a7('0x8a')));}else{rpcDb[_0x56a7('0x8b')](_0x33a80a[_0x40258c]['id']);}}else{var _0x3d57b2=new Action(_0x33a80a[_0x40258c],_0x4402ae);_0x3d57b2[_0x56a7('0x8c')]=moment()[_0x56a7('0x53')]('YYYY-MM-DD\x20HH:mm:ss');_0x4402ae[_0x56a7('0x8d')]+=0x1;ut['logCustomer'](_0x3d57b2,0x17,_0x56a7('0x8e'));if(_0x4402ae[_0x56a7('0x8f')]){rpcDb['rescheduleContactInQueue'](ut[_0x56a7('0x90')](_0x33a80a[_0x40258c]));rpcDb[_0x56a7('0x91')](_0x3d57b2,_0x56a7('0x92'));}else{ut[_0x56a7('0x93')](_0x3d57b2,0x16,_0x56a7('0x94'));rpcDb['createCustomerHistory'](_0x3d57b2,'[HistoryRecallClose]');rpcDb['createCustomerFinal'](_0x3d57b2,'[HistoryRecallClose]');}}}}})[_0x56a7('0x74')](ut[_0x56a7('0x89')]('[getContactRecallMe]'));};Preview['prototype']['setMessage']=function(_0x3790aa){_0x3790aa['sendMessageOneNotActive']=!![];if(ut[_0x56a7('0x95')](_0x3790aa['loggedIn'])){_0x3790aa[_0x56a7('0x49')]=_0x56a7('0x96');}else if(!ut[_0x56a7('0x97')](_0x3790aa[_0x56a7('0x64')])){_0x3790aa['message']='NOT_ACTIVE';}else if(!this[_0x56a7('0x98')](_0x3790aa[_0x56a7('0x4e')])){if(!this[_0x56a7('0x98')](_0x3790aa['TrunkBackup'])){_0x3790aa[_0x56a7('0x49')]=_0x56a7('0x99');}else{_0x3790aa[_0x56a7('0x49')]=_0x56a7('0x9a');}}else{_0x3790aa[_0x56a7('0x49')]='ACTIVE';}emitCampaignPreview(_0x3790aa);};Preview['prototype'][_0x56a7('0x9b')]=function(_0x41f066,_0x539ac1,_0x212053){var _0xa6e412=this;var _0x3c53aa=this[_0x56a7('0x15')][_0x539ac1];var _0xfaef54=this[_0x56a7('0x12')][_0x3c53aa[_0x56a7('0x6a')]];var _0x37de9b;if(_0xfaef54){switch(_0x212053){case'1':_0xfaef54['outboundNoSuchCallsDay']+=0x1;_0x3c53aa[_0x56a7('0x9c')]+=0x1;_0x3c53aa[_0x56a7('0x9d')]=ut[_0x56a7('0x9e')](_0x3c53aa);ut['logCustomer'](_0x3c53aa,0x0,_0x56a7('0x9f'));ami[_0x56a7('0x57')]('custom:agentnosuchnumber',ut[_0x56a7('0xa0')](_0x3c53aa,_0x56a7('0xa1')));rpcDb[_0x56a7('0x91')](_0x3c53aa,'[callProgressDetectingCustomer][logNoSuch]');if(ut['totalGlobal'](_0x3c53aa)>=_0xfaef54[_0x56a7('0xa2')]){_0x37de9b=ut[_0x56a7('0xa3')](_0x3c53aa,0xf,_0x56a7('0xa4'));rpcDb[_0x56a7('0xa5')](_0x37de9b,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x3c53aa[_0x56a7('0x9c')]>=_0xfaef54[_0x56a7('0xa6')]){rpcDb[_0x56a7('0xa5')](_0x3c53aa,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0x56a7('0xa7')](ut['scheduledAt'](_0x3c53aa,'countnosuchnumberretry',_0xfaef54[_0x56a7('0xa8')]),_0x3c53aa[_0x56a7('0xa9')],_0x3c53aa[_0x56a7('0xaa')]);}}delete this[_0x56a7('0x15')][_0x41f066[_0x56a7('0xab')]];break;case'ANSWER':var _0x959b2b=moment()[_0x56a7('0x53')](_0x56a7('0xac'));_0x3c53aa['responsetime']=_0x959b2b;_0x3c53aa[_0x56a7('0xad')]=_0x959b2b;_0x3c53aa[_0x56a7('0x6d')]=!![];_0xfaef54[_0x56a7('0x5a')]+=0x1;logger[_0x56a7('0x55')](_0x56a7('0xae'),_0x3c53aa[_0x56a7('0xaf')],_0x56a7('0xb0'),_0xfaef54[_0x56a7('0x27')],_0x56a7('0x6c'),_0xfaef54[_0x56a7('0x5a')]);ami['emit'](_0x56a7('0xb1'),ut[_0x56a7('0xa0')](_0x3c53aa,_0x56a7('0xb2'),this[_0x56a7('0x12')][_0x3c53aa[_0x56a7('0x6a')]]));if(_0xfaef54['acw']){ami[_0x56a7('0x57')](_0x56a7('0xb3'),ut[_0x56a7('0xb4')](_0x3c53aa));}break;case'16':ami[_0x56a7('0x57')](_0x56a7('0xb5'),ut[_0x56a7('0xa0')](_0x3c53aa,_0x56a7('0xb6'),this['campaignsPreview'][_0x3c53aa[_0x56a7('0x6a')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x3c53aa,_0x56a7('0xb6')));_0xfaef54[_0x56a7('0xb7')]+=0x1;_0xfaef54['total']+=0x1;_0xfaef54[_0x56a7('0x29')]+=0x1;ut[_0x56a7('0x78')](_0xfaef54,_0x56a7('0xb8'));_0x3c53aa[_0x56a7('0x9d')]=ut[_0x56a7('0x9e')](_0x3c53aa);ut[_0x56a7('0x93')](_0x3c53aa,0x4,_0x56a7('0xb9'));rpcDb[_0x56a7('0x91')](_0x3c53aa,_0x56a7('0xba'));rpcDb[_0x56a7('0xa5')](_0x3c53aa,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb['crateCustomerReportQueue'](_0x3c53aa);_0xfaef54[_0x56a7('0xbb')]+=_0x3c53aa[_0x56a7('0xbc')];_0xfaef54[_0x56a7('0x2c')]+=_0x3c53aa['talktime'];logger[_0x56a7('0x55')](_0x56a7('0xbd'),_0x3c53aa[_0x56a7('0xaf')],_0x56a7('0xb0'),_0xfaef54[_0x56a7('0x27')],_0x56a7('0x6c'),_0xfaef54[_0x56a7('0x5a')]);delete this['actions'][_0x41f066['linkedid']];break;case _0x56a7('0xbe'):_0xfaef54['outboundBusyCallsDay']+=0x1;_0x3c53aa[_0x56a7('0xbf')]+=0x1;_0x3c53aa['countglobal']=ut[_0x56a7('0x9e')](_0x3c53aa);ut[_0x56a7('0x93')](_0x3c53aa,0x5,_0x56a7('0xc0'));ami['emit'](_0x56a7('0xc1'),ut[_0x56a7('0xa0')](_0x3c53aa,_0x56a7('0xc2')));rpcDb[_0x56a7('0x91')](_0x3c53aa,_0x56a7('0xc3'));if(ut['totalGlobal'](_0x3c53aa)>=_0xfaef54['dialGlobalMaxRetry']){_0x37de9b=ut[_0x56a7('0xa3')](_0x3c53aa,0xf,_0x56a7('0xa4'));rpcDb[_0x56a7('0xa5')](_0x37de9b,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x3c53aa['countbusyretry']>=_0xfaef54[_0x56a7('0xc4')]){rpcDb[_0x56a7('0xa5')](_0x3c53aa,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0x56a7('0xa7')](ut['scheduledAt'](_0x3c53aa,_0x56a7('0xbf'),_0xfaef54['dialBusyRetryFrequency']),_0x3c53aa[_0x56a7('0xa9')],_0x3c53aa[_0x56a7('0xaa')]);}}break;case'NOANSWER':_0xfaef54[_0x56a7('0x3a')]+=0x1;_0x3c53aa[_0x56a7('0xc5')]+=0x1;_0x3c53aa[_0x56a7('0x9d')]=ut[_0x56a7('0x9e')](_0x3c53aa);ut[_0x56a7('0x93')](_0x3c53aa,0x3,'NoAnswer');ami['emit'](_0x56a7('0xc6'),ut[_0x56a7('0xa0')](_0x3c53aa,_0x56a7('0xc7')));rpcDb['createCustomerHistory'](_0x3c53aa,'[callProgressDetectingCustomer][logNoAnswer]');if(ut['totalGlobal'](_0x3c53aa)>=_0xfaef54[_0x56a7('0xa2')]){_0x37de9b=ut['cloneAction'](_0x3c53aa,0xf,_0x56a7('0xa4'));rpcDb[_0x56a7('0xa5')](_0x37de9b,_0x56a7('0xc8'));}else{if(_0x3c53aa['countnoanswerretry']>=_0xfaef54[_0x56a7('0xc9')]){rpcDb[_0x56a7('0xa5')](_0x3c53aa,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb['rescheduleContact'](ut[_0x56a7('0xca')](_0x3c53aa,_0x56a7('0xc5'),_0xfaef54[_0x56a7('0xcb')]),_0x3c53aa[_0x56a7('0xa9')],_0x3c53aa[_0x56a7('0xaa')]);}}break;case _0x56a7('0xcc'):_0xfaef54['outboundCongestionCallsDay']+=0x1;_0x3c53aa[_0x56a7('0xcd')]+=0x1;_0x3c53aa[_0x56a7('0x9d')]=ut[_0x56a7('0x9e')](_0x3c53aa);ut[_0x56a7('0x93')](_0x3c53aa,0x8,_0x56a7('0xce'));ami[_0x56a7('0x57')](_0x56a7('0xcf'),ut[_0x56a7('0xa0')](_0x3c53aa,_0x56a7('0xd0')));rpcDb[_0x56a7('0x91')](_0x3c53aa,_0x56a7('0xd1'));if(ut[_0x56a7('0x9e')](_0x3c53aa)>=_0xfaef54['dialGlobalMaxRetry']){_0x37de9b=ut[_0x56a7('0xa3')](_0x3c53aa,0xf,'Global');rpcDb[_0x56a7('0xa5')](_0x37de9b,_0x56a7('0xd2'));}else{if(_0x3c53aa[_0x56a7('0xcd')]>=_0xfaef54['dialCongestionMaxRetry']){rpcDb[_0x56a7('0xa5')](_0x3c53aa,_0x56a7('0xd1'));}else{rpcDb['rescheduleContact'](ut[_0x56a7('0xca')](_0x3c53aa,_0x56a7('0xcd'),_0xfaef54[_0x56a7('0xd3')]),_0x3c53aa[_0x56a7('0xa9')],_0x3c53aa[_0x56a7('0xaa')]);}}break;case _0x56a7('0xd4'):_0xfaef54[_0x56a7('0x3d')]+=0x1;_0x3c53aa['countagentrejectretry']+=0x1;_0x3c53aa[_0x56a7('0x9d')]=ut[_0x56a7('0x9e')](_0x3c53aa);ut['logCustomer'](_0x3c53aa,0x14,_0x56a7('0xd5'));ami['emit']('custom:agentreject',ut[_0x56a7('0xa0')](_0x3c53aa,_0x56a7('0xd6')));rpcDb['createCustomerHistory'](_0x3c53aa,_0x56a7('0xd7'));if(ut[_0x56a7('0x9e')](_0x3c53aa)>=_0xfaef54['dialGlobalMaxRetry']){_0x37de9b=ut[_0x56a7('0xa3')](_0x3c53aa,0x14,_0x56a7('0xd5'));rpcDb[_0x56a7('0xa5')](_0x37de9b,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x3c53aa[_0x56a7('0xd8')]>=_0xfaef54[_0x56a7('0xd9')]){rpcDb[_0x56a7('0xa5')](_0x3c53aa,_0x56a7('0xda'));}else{rpcDb[_0x56a7('0xa7')](ut[_0x56a7('0xca')](_0x3c53aa,'countagentrejectretry',_0xfaef54[_0x56a7('0xdb')]),_0x3c53aa[_0x56a7('0xa9')],_0x3c53aa['activeContact']);}}break;case _0x56a7('0xdc'):_0xfaef54[_0x56a7('0x3e')]+=0x1;_0x3c53aa['countabandonedretry']+=0x1;_0x3c53aa['countglobal']=ut[_0x56a7('0x9e')](_0x3c53aa);ut['logCustomer'](_0x3c53aa,0xb,_0x56a7('0xdd'));rpcDb[_0x56a7('0x91')](_0x3c53aa,_0x56a7('0xde'));if(ut['totalGlobal'](_0x3c53aa)>=_0xfaef54[_0x56a7('0xa2')]){_0x37de9b=ut[_0x56a7('0xa3')](_0x3c53aa,0xf,'Global');rpcDb[_0x56a7('0xa5')](_0x37de9b,_0x56a7('0xde'));}else{if(_0x3c53aa[_0x56a7('0xdf')]>=_0xfaef54['dialAbandonedMaxRety']){rpcDb[_0x56a7('0xa5')](_0x3c53aa,_0x56a7('0xde'));}else{rpcDb[_0x56a7('0xa7')](ut[_0x56a7('0xca')](_0x3c53aa,'countabandonedretry',_0xfaef54[_0x56a7('0xe0')]),_0x3c53aa[_0x56a7('0xa9')],_0x3c53aa[_0x56a7('0xaa')]);}}break;case'18':_0xfaef54[_0x56a7('0xe1')]+=0x1;_0x3c53aa['countmachineretry']+=0x1;_0x3c53aa['countglobal']=ut[_0x56a7('0x9e')](_0x3c53aa);ut['logCustomer'](_0x3c53aa,0x12,_0x41f066['cause-txt']||_0x41f066[_0x56a7('0xe2')]);ami[_0x56a7('0x57')](_0x56a7('0xe3'),ut['buildObj'](_0x3c53aa,_0x56a7('0xe4')));rpcDb['createCustomerHistory'](_0x3c53aa,_0x56a7('0xe5'));if(ut[_0x56a7('0x9e')](_0x3c53aa)>=_0xfaef54['dialGlobalMaxRetry']){_0x37de9b=ut['cloneAction'](_0x3c53aa,0xf,_0x56a7('0xa4'));rpcDb['createCustomerFinal'](_0x37de9b,_0x56a7('0xe5'));}else{rpcDb[_0x56a7('0xa5')](_0x3c53aa,'[callProgressDetectingCustomer][hangupInAMD]');}delete this[_0x56a7('0x15')][_0x41f066[_0x56a7('0xab')]];break;case'19':_0xfaef54[_0x56a7('0xe1')]+=0x1;_0x3c53aa[_0x56a7('0x9d')]=ut[_0x56a7('0x9e')](_0x3c53aa);ut[_0x56a7('0x93')](_0x3c53aa,0x13,_0x41f066['cause-txt']||_0x41f066[_0x56a7('0xe2')]);ami['emit'](_0x56a7('0xe3'),ut[_0x56a7('0xa0')](_0x3c53aa,'amd'));rpcDb[_0x56a7('0x91')](_0x3c53aa,_0x56a7('0xe6'));if(ut[_0x56a7('0x9e')](_0x3c53aa)>=_0xfaef54[_0x56a7('0xa2')]){_0x37de9b=ut[_0x56a7('0xa3')](_0x3c53aa,0xf,_0x56a7('0xa4'));rpcDb[_0x56a7('0xa5')](_0x37de9b,_0x56a7('0xe6'));}else{rpcDb['createCustomerFinal'](_0x3c53aa,_0x56a7('0xe6'));}delete this[_0x56a7('0x15')][_0x41f066[_0x56a7('0xab')]];break;default:if(_0x3c53aa[_0x56a7('0x6d')]){ut['decrementTalkink'](_0xfaef54,_0x56a7('0xe7'));ut[_0x56a7('0x79')](_0x56a7('0xe8')+_0xfaef54[_0x56a7('0x27')],_0x41f066);}_0xfaef54[_0x56a7('0xe1')]+=0x1;_0x3c53aa[_0x56a7('0x9d')]=ut[_0x56a7('0x9e')](_0x3c53aa);ut[_0x56a7('0x93')](_0x3c53aa,0xc,_0x41f066[_0x56a7('0xe9')]||_0x41f066[_0x56a7('0xe2')]);rpcDb[_0x56a7('0x91')](_0x3c53aa,'[callProgressDetectingCustomer][logUnknown]');if(ut['totalGlobal'](_0x3c53aa)>=_0xfaef54[_0x56a7('0xa2')]){_0x37de9b=ut[_0x56a7('0xa3')](_0x3c53aa,0xf,_0x56a7('0xa4'));rpcDb[_0x56a7('0xa5')](_0x37de9b,_0x56a7('0xea'));}else{rpcDb[_0x56a7('0xa5')](_0x3c53aa,_0x56a7('0xea'));}delete this[_0x56a7('0x15')][_0x41f066['linkedid']];}if(!(_0x3c53aa[_0x56a7('0x6d')]&&_0x212053==='16')){ut[_0x56a7('0x76')](_0xfaef54,_0x56a7('0xeb'));logger[_0x56a7('0x55')](_0x56a7('0xec'),_0x3c53aa[_0x56a7('0xaf')],_0x56a7('0xb0'),_0xfaef54[_0x56a7('0x27')],_0x56a7('0x6b'),_0xfaef54[_0x56a7('0x59')]);}if(_0x212053!==_0x56a7('0xed')){delete this['actions'][_0x41f066[_0x56a7('0xab')]];delete this['actions'][_0x41f066[_0x56a7('0xee')]];}}};Preview[_0x56a7('0x60')][_0x56a7('0xef')]=function(_0x38934d,_0x283063,_0x2fb75c){if(_['isUndefined'](_0x283063)&&'object'!==typeof _0x283063){return;}if(_[_0x56a7('0xf0')](_0x2fb75c)&&_0x56a7('0xf1')!==typeof _0x2fb75c){return;}switch(_0x2fb75c[_0x56a7('0xf2')]){case'0':ut[_0x56a7('0xf3')](_0x38934d,0x0,_0x56a7('0x9f'));rpcDb[_0x56a7('0xf4')](_0x38934d,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut['logAgent'](_0x38934d,0x3,_0x56a7('0xf5'));rpcDb[_0x56a7('0xf4')](_0x38934d,_0x56a7('0xf6'));break;case'5':ut[_0x56a7('0xf3')](_0x38934d,0x5,'Busy');rpcDb[_0x56a7('0xf4')](_0x38934d,_0x56a7('0xf7'));break;case'8':ut[_0x56a7('0xf3')](_0x38934d,0x8,_0x56a7('0xce'));rpcDb['createAgentHistory'](_0x38934d,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0x56a7('0xf3')](_0x38934d,0x16,'AnswerAGI');rpcDb[_0x56a7('0xf4')](_0x38934d,_0x56a7('0xf8'));break;default:ut[_0x56a7('0xf3')](_0x38934d,0xc,_0x2fb75c[_0x56a7('0xf2')]);rpcDb[_0x56a7('0xf4')](_0x38934d,_0x56a7('0xf9'));}ut['updateOriginated'](_0x283063,'[callProgressDetectingAgent]');logger[_0x56a7('0x55')](_0x56a7('0xfa'),_0x38934d['uniqueid'],_0x56a7('0xb0'),_0x283063[_0x56a7('0x27')],_0x56a7('0x6b'),_0x283063[_0x56a7('0x59')]);delete this['actions'][_0x38934d['uniqueid']];};Preview[_0x56a7('0x60')][_0x56a7('0xfb')]=function(_0x4d3ee7,_0x2b8a3f,_0x5f0e13,_0x4f4526,_0x3d9ec6){var _0x255211=this;return new BPromise(function(_0x5988fe,_0x4b16c7){if(_['isNil'](_0x2b8a3f)||_[_0x56a7('0x82')](_0x2b8a3f[_0x56a7('0xfc')])||_[_0x56a7('0x82')](_0x2b8a3f[_0x56a7('0xfc')][_0x56a7('0xfd')])||_[_0x56a7('0x82')](_0x2b8a3f[_0x56a7('0x70')])){_0x4b16c7(ut['message']('Contact\x20is\x20undefined',_0x4f4526,_0x3d9ec6));return;}var _0x503101=uuid['v4']();var _0x464f15=_0x255211[_0x56a7('0x12')][_0x2b8a3f[_0x56a7('0xfe')][_0x56a7('0x27')]];var _0x4e67d1=_0x5f0e13?_0x255211['agents'][_0x5f0e13]['id']:undefined;_0x255211['actions'][_0x503101]=new Action(_0x2b8a3f,_0x464f15,_0x503101,_0x5f0e13,_0x4e67d1);var _0x276dae=_0x255211[_0x56a7('0x15')][_0x503101];_0x276dae[_0x56a7('0xa9')]=_0x4f4526;_0x276dae[_0x56a7('0xaa')]=_0x3d9ec6;_0x276dae[_0x56a7('0xff')]=_0x5f0e13;if(_[_0x56a7('0x100')](_0x4d3ee7)){_0x255211[_0x56a7('0x101')](_0x276dae,_0x464f15,_0x2b8a3f,_0x5f0e13)[_0x56a7('0x81')](function(_0x4dfd36){logger[_0x56a7('0x55')]('[Preview][execCall][success]',_0x56a7('0x102')+_0x276dae[_0x56a7('0x6a')]+'\x20IdHopper:\x20'+_0x276dae[_0x56a7('0x103')],JSON['stringify'](_0x4dfd36));ami[_0x56a7('0x57')](_0x56a7('0x104'),ut[_0x56a7('0xa0')](_0x276dae,_0x56a7('0x105'),_0x255211[_0x56a7('0x12')][_0x276dae['queue']]));_0x5988fe(ut[_0x56a7('0x49')](_0x56a7('0x106')));})[_0x56a7('0x74')](function(_0x287d86){ut[_0x56a7('0x5d')](_0x56a7('0x107'),_0x287d86);_0x4b16c7(ut[_0x56a7('0x49')]('Call\x20failed',_0x4f4526,_0x3d9ec6));});}else{_0x464f15[_0x56a7('0x108')]+=0x1;ut[_0x56a7('0x109')](_0x276dae);rpcDb[_0x56a7('0x10a')](_0x276dae,_0x56a7('0x10b'));delete _0x255211[_0x56a7('0x15')][_0x503101];_0x4b16c7(ut['message'](_0x56a7('0x10c'),_0x4f4526,_0x3d9ec6));}});};Preview[_0x56a7('0x60')][_0x56a7('0x98')]=function(_0x491041){return!_[_0x56a7('0x82')](_0x491041)&&!_[_0x56a7('0x82')](_0x491041['name'])&&!_['isNil'](_0x491041['active'])&&_0x491041[_0x56a7('0x4f')]&&!_[_0x56a7('0x82')](this['trunks'][util[_0x56a7('0x53')]('SIP/%s',_0x491041[_0x56a7('0x27')])])&&!_[_0x56a7('0x82')](this['trunks'][util['format'](_0x56a7('0x10d'),_0x491041[_0x56a7('0x27')])]['status'])&&(this[_0x56a7('0x14')][util[_0x56a7('0x53')](_0x56a7('0x10d'),_0x491041[_0x56a7('0x27')])][_0x56a7('0x72')]===_0x56a7('0x10e')||this[_0x56a7('0x14')][util[_0x56a7('0x53')](_0x56a7('0x10d'),_0x491041[_0x56a7('0x27')])][_0x56a7('0x72')]===_0x56a7('0x10f'));};Preview[_0x56a7('0x60')][_0x56a7('0x88')]=function(_0x32f53e,_0x345f57){var _0x5ceb66=this;return new BPromise(function(_0x3ac765,_0x219b08){_0x5ceb66[_0x56a7('0x110')](_0x32f53e,_0x345f57)[_0x56a7('0x81')](function(_0x2b07d1){_0x3ac765(_[_0x56a7('0x6e')](_0x2b07d1,[_0x56a7('0x49')]));})[_0x56a7('0x74')](function(_0x7f271d){if(_0x7f271d[_0x56a7('0x111')]){rpcDb['unlockContact'](_0x32f53e);}if(_0x7f271d[_0x56a7('0x4f')]){rpcDb[_0x56a7('0x8b')](_0x32f53e);}_0x219b08(_[_0x56a7('0x6e')](_0x7f271d,[_0x56a7('0x49')]));});});};Preview['prototype'][_0x56a7('0x110')]=function(_0x454481,_0x3a19af){var _0x2f3f21=this;return new BPromise(function(_0x2984ff,_0x2318c3){var _0x3de349,_0x3a8df2;rpcDb[_0x56a7('0x112')](_0x454481)['then'](function(_0x12fafe){if(!_['isNil'](_0x12fafe[0x0])){_0x3a8df2=_0x12fafe[0x0]['recallme']?![]:!![];_0x3de349=_0x12fafe[0x0][_0x56a7('0x113')]?!![]:![];_0x3de349=_0x3a19af?!![]:_0x3de349;}var _0x3c0443=_0x2f3f21[_0x56a7('0x114')](_0x12fafe);if(_0x3c0443['isValid']){rpcDb[_0x56a7('0x115')](_[_0x56a7('0x6e')](_0x12fafe[0x0],['VoiceQueueId',_0x56a7('0x116')]))[_0x56a7('0x81')](function(_0x5755e7){_0x2f3f21[_0x56a7('0xfb')](_0x5755e7,_0x12fafe[0x0],_0x3a19af,_0x3a8df2,_0x3de349)[_0x56a7('0x81')](function(_0x36add2){_0x2984ff(_0x36add2);})[_0x56a7('0x74')](function(_0x4f169b){_0x2318c3(_0x4f169b);});})['catch'](function(_0x48122a){ut['logger'](_0x56a7('0x117'),_0x48122a);_0x2318c3(ut['message'](_0x56a7('0x118'),_0x3a8df2,_0x3de349));});}else{_0x2318c3(ut[_0x56a7('0x49')](_0x3c0443[_0x56a7('0x49')],_0x3a8df2,_0x3de349));}})[_0x56a7('0x74')](function(_0x231986){ut[_0x56a7('0x5d')](_0x56a7('0x119'),_0x231986);_0x2318c3(ut[_0x56a7('0x49')](_0x56a7('0x118'),![],!![]));});});};Preview[_0x56a7('0x60')][_0x56a7('0x114')]=function(_0x10c2d3){if(_[_0x56a7('0x82')](_0x10c2d3)||_['isEmpty'](_0x10c2d3)||!_[_0x56a7('0x82')](_0x10c2d3[0x0][_0x56a7('0x86')])&&_[_0x56a7('0x82')](_0x10c2d3[0x0][_0x56a7('0x86')][_0x56a7('0x27')])){ut[_0x56a7('0x5d')](_0x56a7('0x11a'),_0x10c2d3);return{'isValid':![],'message':_0x56a7('0x11b')};}var _0xb66460=this['campaignsPreview'][_0x10c2d3[0x0]['Queue'][_0x56a7('0x27')]];_0xb66460[_0x56a7('0x49')]=_0x56a7('0x9a');if(_[_0x56a7('0x82')](_0xb66460)){ut[_0x56a7('0x5d')](_0x56a7('0x11c'),_0xb66460);return{'isValid':![],'message':_0x56a7('0x11d')};}if(!this[_0x56a7('0x98')](_0xb66460[_0x56a7('0x4e')])){ut[_0x56a7('0x5d')](_0x56a7('0x11e'),_0x56a7('0x11f')+_0xb66460['name']+_0x56a7('0x120'));if(!this['isTrunkReachable'](_0xb66460[_0x56a7('0x121')])){ut[_0x56a7('0x5d')](_0x56a7('0x11e'),_0xb66460[_0x56a7('0x27')]+_0x56a7('0x122'));return{'isValid':![],'message':_0x56a7('0x123')};}}if(!ut[_0x56a7('0x97')](_0xb66460[_0x56a7('0x64')])){ut['logger'](_0x56a7('0x124'),_0xb66460[_0x56a7('0x27')]+_0x56a7('0x125'));return{'isValid':![],'message':_0x56a7('0x11f')+_0xb66460[_0x56a7('0x27')]+_0x56a7('0x125')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0x56a7('0x60')]['execCall']=function(_0x526dfb,_0x11f409,_0xa72b41,_0xe2d378){var _0xafbb35=this;return new BPromise(function(_0x53e285,_0x3f43ab){var _0x49d92b=_0x526dfb[_0x56a7('0xaf')];var _0x27fe43=_0xafbb35['isTrunkReachable'](_0x11f409[_0x56a7('0x4e')])?util[_0x56a7('0x53')]('SIP/%s/%s%s',_0x11f409[_0x56a7('0x4e')][_0x56a7('0x27')],_[_0x56a7('0x82')](_0x11f409[_0x56a7('0x34')])?'':_0x11f409[_0x56a7('0x34')]['trim']()||'',_0x11f409['dialCutDigit']>0x0?_0xa72b41['Contact'][_0x56a7('0xfd')][_0x56a7('0x126')](_0x11f409[_0x56a7('0x127')]):_0xa72b41[_0x56a7('0xfc')][_0x56a7('0xfd')]):util[_0x56a7('0x53')](_0x56a7('0x128'),_[_0x56a7('0x82')](_0x11f409[_0x56a7('0x121')])?_0x11f409['Trunk'][_0x56a7('0x27')]:_0x11f409[_0x56a7('0x121')]['name'],_[_0x56a7('0x82')](_0x11f409[_0x56a7('0x34')])?'':_0x11f409[_0x56a7('0x34')][_0x56a7('0x129')]()||'',_0x11f409[_0x56a7('0x127')]>0x0?_0xa72b41[_0x56a7('0xfc')][_0x56a7('0xfd')][_0x56a7('0x126')](_0x11f409[_0x56a7('0x127')]):_0xa72b41[_0x56a7('0xfc')]['phone']);var _0x3c9d83=_0xafbb35[_0x56a7('0x98')](_0x11f409[_0x56a7('0x4e')])?ut[_0x56a7('0x12a')](_0x11f409['Trunk'][_0x56a7('0x50')],_0x11f409[_0x56a7('0x32')],_0x11f409[_0x56a7('0x12b')]>0x0?ut[_0x56a7('0x12c')](_0x11f409['dialOriginateCallerIdNumber'],_0x11f409[_0x56a7('0x12b')]):_0x11f409['dialOriginateCallerIdNumber']):ut[_0x56a7('0x12a')](_[_0x56a7('0x82')](_0x11f409[_0x56a7('0x121')])?_0x11f409[_0x56a7('0x4e')]['callerid']:_0x11f409[_0x56a7('0x121')]['callerid'],_0x11f409[_0x56a7('0x32')],_0x11f409[_0x56a7('0x12b')]>0x0?ut[_0x56a7('0x12c')](_0x11f409['dialOriginateCallerIdNumber'],_0x11f409[_0x56a7('0x12b')]):_0x11f409[_0x56a7('0x12d')]);if(_0x3c9d83){_0x526dfb['originatecalleridname']=ut[_0x56a7('0x12e')](_0x3c9d83);_0x526dfb['originatecalleridnum']=ut[_0x56a7('0x12f')](_0x3c9d83);}var _0xe8bb44=ut[_0x56a7('0x130')](_0x11f409,_0xa72b41,_0x27fe43,_0x3c9d83,_0x49d92b,_0x526dfb);_[_0x56a7('0x131')](_0x526dfb,ut['toLowerVariables'](_0xe8bb44));_0x526dfb['starttime']=moment()['format'](_0x56a7('0xac'));ami[_0x56a7('0x132')](ut['variablesAction'](_0x526dfb,_0x11f409,_0xe8bb44,_0x526dfb[_0x56a7('0xaa')],_0xe2d378))[_0x56a7('0x81')](function(_0x38fc7e){var _0x4415d6=_0x526dfb['channelAgent'];if(!_[_0x56a7('0x82')](_0x4415d6)){if(!_[_0x56a7('0x82')](_0xafbb35[_0x56a7('0x16')][_0x4415d6])){_0xafbb35[_0x56a7('0x16')][_0x4415d6][_0x56a7('0x133')]=_0x526dfb['calleridnum'];emit(util['format'](_0x56a7('0x134'),_0xafbb35[_0x56a7('0x16')][_0x4415d6]['name']),'user:agentconnect',{'destaccountcode':_0xafbb35[_0x56a7('0x16')][_0x4415d6][_0x56a7('0x135')],'destconnectedlinenum':_0x526dfb[_0x56a7('0x136')]});}}_0x11f409[_0x56a7('0x59')]+=0x1;logger['info'](_0x56a7('0x137'),_0x49d92b,_0x56a7('0xb0'),_0x11f409[_0x56a7('0x27')],_0x56a7('0x6b'),_0x11f409['originated']);_0x53e285(_0x38fc7e);})[_0x56a7('0x74')](function(_0x3e4257){ut[_0x56a7('0xf3')](_0x526dfb,0xe,'OriginateError');rpcDb[_0x56a7('0xf4')](_0x526dfb,'[originateFailure][logOriginateFailure]');_0x3f43ab(_0x3e4257);});});};Preview[_0x56a7('0x60')][_0x56a7('0x138')]=function(_0x3db08f){if(this['actions'][_0x3db08f['linkedid']]){this[_0x56a7('0x15')][_0x3db08f[_0x56a7('0xab')]][_0x56a7('0x73')]=_0x3db08f[_0x56a7('0x73')];}};Preview[_0x56a7('0x60')]['syncOriginateResponse']=function(_0x3258cf){var _0x331f8a=this;var _0x1d453d=this[_0x56a7('0x15')][_0x3258cf[_0x56a7('0x139')]];if(_0x1d453d){if(_0x1d453d[_0x56a7('0xff')]&&this[_0x56a7('0x16')][_0x1d453d[_0x56a7('0xff')]]){ut['logLookAgent'](_0x1d453d,this[_0x56a7('0x16')][_0x1d453d[_0x56a7('0xff')]][_0x56a7('0x27')],this[_0x56a7('0x16')][_0x1d453d[_0x56a7('0xff')]]['id']);}var _0xa7a794=_['clone'](_0x1d453d);_0xa7a794['responsetime']=moment()[_0x56a7('0x53')](_0x56a7('0xac'));var _0x2fe555=_0x331f8a[_0x56a7('0x12')][_0x1d453d[_0x56a7('0x6a')]];if(ut[_0x56a7('0x13a')](_0x3258cf[_0x56a7('0x13b')])){if(_0x1d453d[_0x56a7('0xa9')]){rpcDb[_0x56a7('0x13c')](_0x1d453d[_0x56a7('0x103')]);}if(_0x1d453d[_0x56a7('0xaa')]){rpcDb[_0x56a7('0x8b')](_0x1d453d['idContact']);}ami[_0x56a7('0x57')](_0x56a7('0x13d'),ut['buildObj'](_0x1d453d,'rejected',this[_0x56a7('0x12')][_0x1d453d['queue']]));this[_0x56a7('0xef')](_0xa7a794,_0x2fe555,_0x3258cf);}else{_0x1d453d['starttime']=moment()['format'](_0x56a7('0xac'));ut[_0x56a7('0xf3')](_0xa7a794,0x4,_0x56a7('0xb9'));rpcDb[_0x56a7('0xf4')](_0xa7a794,_0x56a7('0x13e'));}}};Preview['prototype'][_0x56a7('0x13f')]=function(_0x304405){var _0x14c337=this;var _0x5a8a3f=this[_0x56a7('0x15')][_0x304405['linkedid']];var _0x1f58f7;if(_0x5a8a3f){_0x1f58f7=this['campaignsPreview'][_0x5a8a3f[_0x56a7('0x6a')]];logger[_0x56a7('0x55')]('[syncHangup][talking]',_0x304405[_0x56a7('0xab')],_0x56a7('0xb0'),_0x1f58f7[_0x56a7('0x27')],_0x56a7('0x6c'),_0x1f58f7[_0x56a7('0x5a')]);}if(this[_0x56a7('0x15')][_0x304405[_0x56a7('0xab')]]&&_0x304405[_0x56a7('0xab')]!==_0x304405[_0x56a7('0xaf')]){if(_0x304405['cause']==='16'&&this[_0x56a7('0x15')][_0x304405[_0x56a7('0xab')]]['dialAnswer']){this[_0x56a7('0x9b')](_0x304405,_0x304405[_0x56a7('0xab')],_0x304405[_0x56a7('0x140')]);}else if(this[_0x56a7('0x15')][_0x304405[_0x56a7('0xab')]][_0x56a7('0x6d')]){logger[_0x56a7('0x55')](_0x56a7('0x141'),_0x304405[_0x56a7('0xab')],_0x304405['cause'],_0x56a7('0xb0'),_0x1f58f7[_0x56a7('0x27')],_0x56a7('0x6c'),_0x1f58f7[_0x56a7('0x5a')]);this[_0x56a7('0x9b')](_0x304405,_0x304405[_0x56a7('0xab')],_0x304405[_0x56a7('0x140')]);}}else if(_0x5a8a3f&&_[_0x56a7('0x82')](_0x5a8a3f[_0x56a7('0x142')])&&_0x1f58f7[_0x56a7('0x143')]&&_0x304405[_0x56a7('0xab')]===_0x304405[_0x56a7('0xaf')]&&_[_0x56a7('0x82')](_0x304405[_0x56a7('0xf2')])&&_0x304405[_0x56a7('0x140')]==='16'&&_0x304405[_0x56a7('0x144')]==='6'&&_[_0x56a7('0xf0')](_0x5a8a3f[_0x56a7('0x145')])){if(_0x5a8a3f[_0x56a7('0xa9')]){rpcDb[_0x56a7('0x13c')](_0x5a8a3f['idContact']);}if(_0x5a8a3f[_0x56a7('0xaa')]){rpcDb['disableContact'](_0x5a8a3f['idContact']);}_0x304405['reason']='22';this[_0x56a7('0xef')](_0x5a8a3f,_0x1f58f7,_0x304405);}else if(_0x5a8a3f&&_0x5a8a3f['transfer']){if(_0x304405[_0x56a7('0x140')]==='16'&&this[_0x56a7('0x15')][_0x304405[_0x56a7('0xab')]]['dialAnswer']){logger['info'](_0x56a7('0x146'),_0x304405['linkedid'],_0x304405[_0x56a7('0x140')],_0x56a7('0xb0'),_0x1f58f7[_0x56a7('0x27')],'pTalking:\x20',_0x1f58f7[_0x56a7('0x5a')]);this[_0x56a7('0x9b')](_0x304405,_0x304405[_0x56a7('0xab')],_0x304405['cause']);}else if(this['actions'][_0x304405[_0x56a7('0xab')]][_0x56a7('0x6d')]){logger['info'](_0x56a7('0x141'),_0x304405['linkedid'],_0x304405['cause'],_0x56a7('0xb0'),_0x1f58f7['name'],_0x56a7('0x6c'),_0x1f58f7[_0x56a7('0x5a')]);this['callProgressDetectingCustomer'](_0x304405,_0x304405[_0x56a7('0xab')],_0x304405[_0x56a7('0x140')]);}}};Preview['prototype']['syncDialEnd']=function(_0x2e486c){if(this['actions'][_0x2e486c[_0x56a7('0xee')]]&&_0x2e486c[_0x56a7('0xee')]!==_0x2e486c[_0x56a7('0x147')]){this[_0x56a7('0x9b')](_0x2e486c,_0x2e486c[_0x56a7('0xee')],_0x2e486c[_0x56a7('0xe2')]);}};Preview[_0x56a7('0x60')][_0x56a7('0x1c')]=function(_0x4c8e6d){if(this[_0x56a7('0x15')][_0x4c8e6d[_0x56a7('0xab')]]&&_0x4c8e6d[_0x56a7('0xab')]!==_0x4c8e6d[_0x56a7('0xaf')]&&!this[_0x56a7('0x15')][_0x4c8e6d[_0x56a7('0xab')]][_0x56a7('0x6d')]){if(_0x4c8e6d[_0x56a7('0x140')]==='1'){this[_0x56a7('0x9b')](_0x4c8e6d,_0x4c8e6d[_0x56a7('0xab')],_0x4c8e6d[_0x56a7('0x140')]);}}};Preview[_0x56a7('0x60')][_0x56a7('0x148')]=function(_0x348209,_0x3aba92,_0xbe9378){if(this[_0x56a7('0x15')][_0x348209]){if(_[_0x56a7('0x82')](this[_0x56a7('0x15')][_0x348209][_0x56a7('0x149')])){this[_0x56a7('0x15')][_0x348209]['variables']={};}this[_0x56a7('0x15')][_0x348209][_0x56a7('0x149')][_0x3aba92]=_0xbe9378;}};Preview[_0x56a7('0x60')][_0x56a7('0x1f')]=function(_0x359e3a){try{if(!_[_0x56a7('0x82')](_0x359e3a)){if(ut[_0x56a7('0x14a')](_['keys'](_0x359e3a[_0x56a7('0x14b')])[0x0])){this[_0x56a7('0x148')](_0x359e3a[_0x56a7('0xaf')],_[_0x56a7('0x14c')](_0x359e3a[_0x56a7('0x14b')])[0x0],_0x359e3a[_0x56a7('0x14d')]);}}}catch(_0x23214e){logger[_0x56a7('0x14e')](_0x56a7('0x14f'),util[_0x56a7('0x150')](_0x23214e,{'showHidden':![],'depth':null}));}};Preview[_0x56a7('0x60')][_0x56a7('0x21')]=function(_0xb4c848){if(_0xb4c848){if(this[_0x56a7('0x15')][_0xb4c848['transfertargetlinkedid']]){this[_0x56a7('0x15')][_0xb4c848['transfertargetlinkedid']][_0x56a7('0x145')]=!![];}}};Preview[_0x56a7('0x60')][_0x56a7('0x23')]=function(_0x2106df){if(_0x2106df){if(this[_0x56a7('0x15')][_0x2106df[_0x56a7('0x151')]]){this[_0x56a7('0x15')][_0x2106df['transfererlinkedid']][_0x56a7('0x145')]=!![];}}};module[_0x56a7('0x152')]=Preview;
\ No newline at end of file
index 2eff5e0..6958d9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd648=['preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','[createHistory]\x20','moveContactManagedDialer','catch','checkIsBlackList','getContactPreview','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','queuecallercompleteAt','endtime','membername','context','from-sip','xcally-motion-preview','holdtime','queuecallerexitreason','COMPLETED','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xd648,0x17e));var _0x8d64=function(_0x1531dc,_0x172b13){_0x1531dc=_0x1531dc-0x0;var _0x301983=_0xd648[_0x1531dc];return _0x301983;};'use strict';var util=require(_0x8d64('0x0'));var BPromise=require(_0x8d64('0x1'));var logger=require(_0x8d64('0x2'))(_0x8d64('0x3'));var _=require(_0x8d64('0x4'));var cmHopper=require(_0x8d64('0x5'));var cmHopperFinal=require(_0x8d64('0x6'));var cmHopperHistory=require(_0x8d64('0x7'));var cmHopperBlack=require(_0x8d64('0x8'));var voiceQueueRt=require(_0x8d64('0x9'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require(_0x8d64('0xa'));function loggerCatch(_0x43f10e){return function(_0x1207d8){logger[_0x8d64('0xb')](_0x43f10e,util[_0x8d64('0xc')](_0x1207d8,{'showHidden':![],'depth':null}));};}function create(_0x4e4f4c){return BPromise[_0x8d64('0xd')]()[_0x8d64('0xe')](cmHopperHistory[_0x8d64('0xf')](_0x4e4f4c))['catch'](loggerCatch(_0x8d64('0x10')));}function createAgent(_0xeb2636){return BPromise[_0x8d64('0xd')]()['then'](agentReportPreview[_0x8d64('0xf')](_0xeb2636))['catch'](loggerCatch('[createHistory]\x20'));}function moveContact(_0x19296e){return BPromise[_0x8d64('0xd')]()[_0x8d64('0xe')](cmHopper[_0x8d64('0x11')](_0x19296e,!![]))[_0x8d64('0x12')](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0x8d64('0x13')]=function(_0x413cfc){return BPromise[_0x8d64('0xd')]()[_0x8d64('0xe')](cmHopperBlack[_0x8d64('0x13')](_0x413cfc))[_0x8d64('0x12')](loggerCatch('[checkIsBlackList]\x20'));};exports[_0x8d64('0x14')]=function(_0x211365){return BPromise[_0x8d64('0xd')]()[_0x8d64('0xe')](cmHopper[_0x8d64('0x14')](_0x211365))['catch'](loggerCatch('[getContactPreview]\x20'));};exports[_0x8d64('0xf')]=function(_0x53ff2b,_0x45021e){create(_0x53ff2b)[_0x8d64('0x12')](loggerCatch(_0x45021e));moveContact(_0x53ff2b)[_0x8d64('0x12')](loggerCatch(_0x45021e));};exports[_0x8d64('0x15')]=function(_0x3a409f,_0x3dd8c2){createAgent(_0x3a409f)[_0x8d64('0x12')](loggerCatch(_0x3dd8c2));};exports[_0x8d64('0x16')]=function(_0x1e3e46,_0x3e7b49){create(_0x1e3e46)[_0x8d64('0x12')](loggerCatch(_0x3e7b49));};exports[_0x8d64('0x17')]=function(_0x13e69a,_0x44afe3){moveContact(_0x13e69a)['catch'](loggerCatch(_0x44afe3));};exports[_0x8d64('0x18')]=function(_0x548874,_0x2c7871,_0xbe57da){if(_0x2c7871){_0x548874[_0x8d64('0x19')]=null;}if(_0xbe57da){_0x548874[_0x8d64('0x1a')]=![];}return BPromise[_0x8d64('0xd')]()[_0x8d64('0xe')](cmHopper['rescheduleContact'](_0x548874))[_0x8d64('0x12')](loggerCatch('[rescheduleContact]\x20'));};exports[_0x8d64('0x1b')]=function(_0x4e9627){return BPromise[_0x8d64('0xd')]()[_0x8d64('0xe')](cmHopper[_0x8d64('0x1b')](_0x4e9627))[_0x8d64('0x12')](loggerCatch(_0x8d64('0x1c')));};exports['unlockContact']=function(_0x1d10b4){return BPromise['resolve']()[_0x8d64('0xe')](cmHopper[_0x8d64('0x1d')]({'UserId':null},_0x1d10b4,0x1))[_0x8d64('0x12')](loggerCatch(_0x8d64('0x1e')));};exports[_0x8d64('0x1f')]=function(_0x41287f){return BPromise[_0x8d64('0xd')]()[_0x8d64('0xe')](cmHopper['unlockContact']({'active':![]},_0x41287f,0x1))[_0x8d64('0x12')](loggerCatch(_0x8d64('0x20')));};exports[_0x8d64('0x21')]=function(_0x46e4b8){var _0x3bccb1={};_0x3bccb1[_0x8d64('0x22')]=_0x46e4b8['type'];_0x3bccb1[_0x8d64('0x23')]=_0x46e4b8[_0x8d64('0x23')];_0x3bccb1[_0x8d64('0x24')]=_0x46e4b8['calleridnum'];_0x3bccb1[_0x8d64('0x25')]=_0x46e4b8[_0x8d64('0x25')];_0x3bccb1['queue']=_0x46e4b8[_0x8d64('0x26')];_0x3bccb1[_0x8d64('0x27')]=_0x46e4b8[_0x8d64('0x28')];_0x3bccb1['queuecallerleaveAt']=_0x46e4b8[_0x8d64('0x28')];_0x3bccb1[_0x8d64('0x29')]=0x1;_0x3bccb1[_0x8d64('0x2a')]=_0x46e4b8[_0x8d64('0x2b')];_0x3bccb1['connectedlinename']=_0x46e4b8[_0x8d64('0x2c')];_0x3bccb1[_0x8d64('0x2d')]=_0x8d64('0x2e');_0x3bccb1['exten']=_0x8d64('0x2f');_0x3bccb1[_0x8d64('0x30')]=0x0;_0x3bccb1['assigned']=0x1;_0x3bccb1['lastAssignedTo']=_0x46e4b8[_0x8d64('0x2c')];_0x3bccb1[_0x8d64('0x31')]=_0x8d64('0x32');return BPromise[_0x8d64('0xd')]()[_0x8d64('0xe')](voiceQueueReport['create'](_0x3bccb1))['catch'](loggerCatch('[voiceQueueReport]\x20'));};exports[_0x8d64('0x33')]=function(_0x4540b5,_0x2c6d00){return BPromise['resolve']()['then'](cmHopper[_0x8d64('0x33')](_0x4540b5,_0x2c6d00))[_0x8d64('0x12')](loggerCatch(_0x8d64('0x34')));};exports[_0x8d64('0x35')]=function(_0x3dcbf1){return BPromise[_0x8d64('0xd')]()[_0x8d64('0xe')](cmHopper['rescheduleContact'](_0x3dcbf1,!![],!![]))[_0x8d64('0x12')](loggerCatch(_0x8d64('0x36')));};
\ No newline at end of file
+var _0xa2de=['../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','catch','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerleaveAt','answertime','queuecallercomplete','endtime','membername','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperBlack'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xa2de,0x16d));var _0xea2d=function(_0x3f99d6,_0x134d85){_0x3f99d6=_0x3f99d6-0x0;var _0x33e2ad=_0xa2de[_0x3f99d6];return _0x33e2ad;};'use strict';var util=require(_0xea2d('0x0'));var BPromise=require(_0xea2d('0x1'));var logger=require(_0xea2d('0x2'))('preview');var _=require('lodash');var cmHopper=require(_0xea2d('0x3'));var cmHopperFinal=require(_0xea2d('0x4'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0xea2d('0x5'));var voiceQueueRt=require(_0xea2d('0x6'));var agentReportPreview=require(_0xea2d('0x7'));var voiceQueueReport=require(_0xea2d('0x8'));function loggerCatch(_0x3d780f){return function(_0x542b0a){logger[_0xea2d('0x9')](_0x3d780f,util[_0xea2d('0xa')](_0x542b0a,{'showHidden':![],'depth':null}));};}function create(_0x48ae58){return BPromise[_0xea2d('0xb')]()[_0xea2d('0xc')](cmHopperHistory[_0xea2d('0xd')](_0x48ae58))[_0xea2d('0xe')](loggerCatch(_0xea2d('0xf')));}function createAgent(_0x3c2bfb){return BPromise[_0xea2d('0xb')]()[_0xea2d('0xc')](agentReportPreview[_0xea2d('0xd')](_0x3c2bfb))[_0xea2d('0xe')](loggerCatch(_0xea2d('0xf')));}function moveContact(_0x4c0c47){return BPromise['resolve']()[_0xea2d('0xc')](cmHopper[_0xea2d('0x10')](_0x4c0c47,!![]))[_0xea2d('0xe')](loggerCatch(_0xea2d('0x11')));}exports['checkIsBlackList']=function(_0x51c1ea){return BPromise[_0xea2d('0xb')]()[_0xea2d('0xc')](cmHopperBlack['checkIsBlackList'](_0x51c1ea))[_0xea2d('0xe')](loggerCatch(_0xea2d('0x12')));};exports[_0xea2d('0x13')]=function(_0x157c14){return BPromise[_0xea2d('0xb')]()[_0xea2d('0xc')](cmHopper[_0xea2d('0x13')](_0x157c14))[_0xea2d('0xe')](loggerCatch(_0xea2d('0x14')));};exports['createHistory']=function(_0x39892a,_0x6d8393){create(_0x39892a)[_0xea2d('0xe')](loggerCatch(_0x6d8393));moveContact(_0x39892a)[_0xea2d('0xe')](loggerCatch(_0x6d8393));};exports['createAgentHistory']=function(_0x1fd335,_0x268ff8){createAgent(_0x1fd335)['catch'](loggerCatch(_0x268ff8));};exports['createCustomerHistory']=function(_0x481335,_0x421e56){create(_0x481335)[_0xea2d('0xe')](loggerCatch(_0x421e56));};exports[_0xea2d('0x15')]=function(_0x44f436,_0x18091a){moveContact(_0x44f436)['catch'](loggerCatch(_0x18091a));};exports[_0xea2d('0x16')]=function(_0x17d794,_0xcf94a3,_0x2cc4f5){if(_0xcf94a3){_0x17d794[_0xea2d('0x17')]=null;}if(_0x2cc4f5){_0x17d794[_0xea2d('0x18')]=![];}return BPromise['resolve']()['then'](cmHopper[_0xea2d('0x16')](_0x17d794))[_0xea2d('0xe')](loggerCatch(_0xea2d('0x19')));};exports['countReScheduled']=function(_0x198ecd){return BPromise[_0xea2d('0xb')]()[_0xea2d('0xc')](cmHopper['countReScheduled'](_0x198ecd))[_0xea2d('0xe')](loggerCatch(_0xea2d('0x1a')));};exports[_0xea2d('0x1b')]=function(_0x37dc22){return BPromise[_0xea2d('0xb')]()[_0xea2d('0xc')](cmHopper['unlockContact']({'UserId':null},_0x37dc22,0x1))[_0xea2d('0xe')](loggerCatch(_0xea2d('0x1c')));};exports[_0xea2d('0x1d')]=function(_0x141ecf){return BPromise[_0xea2d('0xb')]()[_0xea2d('0xc')](cmHopper[_0xea2d('0x1b')]({'active':![]},_0x141ecf,0x1))[_0xea2d('0xe')](loggerCatch('[activeContact]\x20'));};exports[_0xea2d('0x1e')]=function(_0x287e05){var _0x1a067c={};_0x1a067c[_0xea2d('0x1f')]=_0x287e05['type'];_0x1a067c[_0xea2d('0x20')]=_0x287e05[_0xea2d('0x20')];_0x1a067c[_0xea2d('0x21')]=_0x287e05['calleridnum'];_0x1a067c[_0xea2d('0x22')]=_0x287e05['calleridname'];_0x1a067c[_0xea2d('0x23')]=_0x287e05[_0xea2d('0x23')];_0x1a067c['queuecallerjoinAt']=_0x287e05['answertime'];_0x1a067c[_0xea2d('0x24')]=_0x287e05[_0xea2d('0x25')];_0x1a067c[_0xea2d('0x26')]=0x1;_0x1a067c['queuecallercompleteAt']=_0x287e05[_0xea2d('0x27')];_0x1a067c['connectedlinename']=_0x287e05[_0xea2d('0x28')];_0x1a067c['context']='from-sip';_0x1a067c[_0xea2d('0x29')]=_0xea2d('0x2a');_0x1a067c[_0xea2d('0x2b')]=0x0;_0x1a067c[_0xea2d('0x2c')]=0x1;_0x1a067c[_0xea2d('0x2d')]=_0x287e05[_0xea2d('0x28')];_0x1a067c['queuecallerexitreason']=_0xea2d('0x2e');return BPromise['resolve']()[_0xea2d('0xc')](voiceQueueReport[_0xea2d('0x2f')](_0x1a067c))[_0xea2d('0xe')](loggerCatch(_0xea2d('0x30')));};exports[_0xea2d('0x31')]=function(_0x3ee184,_0x2f4ec1){return BPromise[_0xea2d('0xb')]()[_0xea2d('0xc')](cmHopper[_0xea2d('0x31')](_0x3ee184,_0x2f4ec1))[_0xea2d('0xe')](loggerCatch(_0xea2d('0x32')));};exports[_0xea2d('0x33')]=function(_0x36dd95){return BPromise['resolve']()[_0xea2d('0xc')](cmHopper[_0xea2d('0x16')](_0x36dd95,!![],!![]))[_0xea2d('0xe')](loggerCatch(_0xea2d('0x34')));};
\ No newline at end of file
index 71ef1b8..a025565 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4249=['logLookAgent','membername','UserId','statedesc','talktime','answertime','variablesAction','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countbusyretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','active','minutes','ContactId','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','queue','mandatoryDisposition','buildAcw','interface','agentReadyId','status','reachable','push','getDiff','createBody','CampaignId','idContact','type','campaigntype','dialAnswer','countcongestionretry','countglobal','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-phone','xmd-dialurl','xmd-dialoptions','xmd-contactid','xmd-cdrtype','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosbridged','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','extractCalleridNumber','util','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','error','inspect','logger','info','loggerError','logger2','string','isEmpty','isUndefined','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','addVariables','Queue','name','calleridname','calleridnum','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','monitor_format','U(xcally-mixmonitor-context)','dialQueueProject','\x22agi://%s/square,%s\x22','dialQueueProject2','originatecalleridnum','originatecalleridname','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','isNil','tags','createdAt','updatedAt','XMD-','toUpper','toLowerVariables','updateOriginated','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','Blacklist','starttime','responsetime','endtime','logAgent','ringtime'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x4249,0x1dc));var _0x9424=function(_0x5919c7,_0x34071c){_0x5919c7=_0x5919c7-0x0;var _0x2224ab=_0x4249[_0x5919c7];return _0x2224ab;};'use strict';var util=require(_0x9424('0x0'));var _=require('lodash');var moment=require(_0x9424('0x1'));var logger=require(_0x9424('0x2'))(_0x9424('0x3'));var ipAgi=process[_0x9424('0x4')][_0x9424('0x5')]||_0x9424('0x6');function getSeconds(_0x3bab3b,_0x35bfb2){var _0x5575d6=moment(_0x3bab3b)[_0x9424('0x7')](0x0);var _0x1aef85=moment(_0x35bfb2)['milliseconds'](0x0);return _0x5575d6[_0x9424('0x8')](_0x1aef85,'seconds');}exports['loggerCatch']=function(_0x436a43){return function(_0x187723){logger[_0x9424('0x9')](_0x436a43,util[_0x9424('0xa')](_0x187723,{'showHidden':![],'depth':null}));};};exports[_0x9424('0xb')]=function(_0x5453a3,_0x1e0c72){logger[_0x9424('0xc')](_0x5453a3,util['inspect'](_0x1e0c72,{'showHidden':![],'depth':null}));};exports[_0x9424('0xd')]=function(_0x4e4734,_0x5cb981){logger[_0x9424('0x9')](_0x4e4734,util[_0x9424('0xa')](_0x5cb981,{'showHidden':![],'depth':null}));};exports[_0x9424('0xe')]=function(_0x55cb84){return function(_0x473ffd){logger[_0x9424('0xc')](_0x55cb84,util[_0x9424('0xa')](_0x473ffd,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x211e22,_0x1e6b61,_0x3dba61){return{'message':_0x211e22,'unlock':_0x1e6b61,'active':_0x3dba61};};exports['getCallerId']=function(_0x4d2c52,_0x4b91d6,_0x45babd){if(!_['isUndefined'](_0x45babd)&&_0x9424('0xf')===typeof _0x45babd&&!_[_0x9424('0x10')](_0x45babd)){if(!_[_0x9424('0x11')](_0x4b91d6)&&_0x9424('0xf')===typeof _0x4b91d6&&!_[_0x9424('0x10')](_0x4b91d6)){return util[_0x9424('0x12')]('\x22%s\x22\x20<%s>',_0x4b91d6,_0x45babd);}return util[_0x9424('0x12')](_0x9424('0x13'),_0x45babd,_0x45babd);}if(!_[_0x9424('0x11')](_0x4d2c52)&&'string'===typeof _0x4d2c52&&!_[_0x9424('0x10')](_0x4d2c52)){return _0x4d2c52;}return _0x9424('0x14');};exports[_0x9424('0x15')]=function(_0x18f8bb){if(_['isNil'](_0x18f8bb)){return![];}return _0x18f8bb;};exports[_0x9424('0x16')]=function(_0x496950,_0x1dc34d,_0x550d9d,_0x582d45,_0x5ab873,_0x13b093){var _0x2ec7a3={'XMD-QUEUE':_0x1dc34d[_0x9424('0x17')]?_0x1dc34d[_0x9424('0x17')][_0x9424('0x18')]:'','XMD-CALLERID':_0x582d45,'XMD-CALLERID-PREVIEW':_0x13b093?util[_0x9424('0x12')](_0x9424('0x13'),_0x13b093[_0x9424('0x19')],_0x13b093[_0x9424('0x1a')]):_0x582d45,'XMD-DIALID':_0x5ab873,'XMD-CONTACTID':_0x1dc34d['ContactId'],'XMD-CDRTYPE':_0x9424('0x1b'),'CALLERID(all)':_0x582d45,'XMD-VOICEQUEUEID':_0x1dc34d[_0x9424('0x1c')],'XMD-DIALCHANNEL':_0x550d9d,'XMD-DIALTIMEOUT':_0x496950['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0x9424('0x12')](_0x9424('0x1d'),_0x496950['dialQueueProject2']?'g':'',_[_0x9424('0x10')](_0x496950[_0x9424('0x1e')])?'':_0x9424('0x1f')),'XMD-DIALURL':_0x496950['dialPreviewUrl']||'','XMD-AGI':_0x496950[_0x9424('0x20')]?util[_0x9424('0x12')](_0x9424('0x21'),ipAgi,_0x496950[_0x9424('0x20')]):'NONE','XMD-AGIAFTER':_0x496950[_0x9424('0x22')]?util['format'](_0x9424('0x21'),ipAgi,_0x496950[_0x9424('0x22')]):'NONE','XMD-ORIGINATECALLERIDNUM':_0x13b093?_0x13b093[_0x9424('0x23')]:'','XMD-ORIGINATECALLERIDNAME':_0x13b093?_0x13b093[_0x9424('0x24')]:'','XMD-DESTINATION':'xcally-motion-preview'};if(!_[_0x9424('0x10')](_0x496950[_0x9424('0x1e')])){_0x2ec7a3[util['format']('%s',_0x9424('0x25'))]=_0x496950[_0x9424('0x1e')];_0x2ec7a3[util[_0x9424('0x12')]('%s',_0x9424('0x26'))]=_0x5ab873;}if(_0x1dc34d&&_0x1dc34d[_0x9424('0x27')]){for(var _0x13dc90 in _0x1dc34d[_0x9424('0x27')]){if(_0x1dc34d[_0x9424('0x27')][_0x9424('0x28')](_0x13dc90)){if(!_[_0x9424('0x29')](_0x1dc34d[_0x9424('0x27')][_0x13dc90])&&_0x13dc90!=='id'&&_0x13dc90!==_0x9424('0x2a')&&_0x13dc90!==_0x9424('0x2b')&&_0x13dc90!==_0x9424('0x2c')){_0x2ec7a3[util[_0x9424('0x12')]('%s%s',_0x9424('0x2d'),_[_0x9424('0x2e')](_0x13dc90))]=_0x1dc34d[_0x9424('0x27')][_0x13dc90];}}}}return _0x2ec7a3;};exports[_0x9424('0x2f')]=function(_0x5ba770){var _0xf83e68={};for(var _0x309673 in _0x5ba770){if(_0x5ba770[_0x9424('0x28')](_0x309673)){_0xf83e68[util[_0x9424('0x12')]('%s',_['toLower'](_0x309673))]=_0x5ba770[_0x309673];}}return{'variables':_0xf83e68};};exports[_0x9424('0x30')]=function(_0x272e24,_0xce7a37){if(!_[_0x9424('0x29')](_0x272e24)){if(_0x272e24[_0x9424('0x28')]('originated')){if(_0x272e24[_0x9424('0x31')]>0x0){_0x272e24[_0x9424('0x31')]-=0x1;}else{logger[_0x9424('0x9')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0xce7a37);}}}else{logger[_0x9424('0x9')](_0x9424('0x32'),_0xce7a37);}};exports[_0x9424('0x33')]=function(_0x3edbb0){var _0x3552aa=moment()[_0x9424('0x12')](_0x9424('0x34'));_0x3edbb0[_0x9424('0x35')]=0xd;_0x3edbb0['statedesc']=_0x9424('0x36');_0x3edbb0[_0x9424('0x37')]=_0x3552aa;_0x3edbb0[_0x9424('0x38')]=_0x3552aa;_0x3edbb0[_0x9424('0x39')]=_0x3552aa;};exports[_0x9424('0x3a')]=function(_0x4224c3,_0x2bb9a1,_0x5728b4){var _0x5c47b0=moment()[_0x9424('0x12')](_0x9424('0x34'));_0x4224c3[_0x9424('0x35')]=_0x2bb9a1;_0x4224c3['statedesc']=_0x5728b4;_0x4224c3[_0x9424('0x38')]=_0x5c47b0;_0x4224c3[_0x9424('0x3b')]=getSeconds(_0x4224c3['responsetime'],_0x4224c3['starttime']);};exports[_0x9424('0x3c')]=function(_0x5b070d,_0x56438e,_0xb5e2e9){_0x5b070d[_0x9424('0x3d')]=_0x56438e;_0x5b070d[_0x9424('0x3e')]=_0xb5e2e9;};exports['logCustomer']=function(_0x559d86,_0x492502,_0x13c147){var _0x980c41=moment()[_0x9424('0x12')](_0x9424('0x34'));_0x559d86[_0x9424('0x35')]=_0x492502;_0x559d86[_0x9424('0x3f')]=_0x13c147;_0x559d86[_0x9424('0x38')]=_0x559d86[_0x9424('0x38')]?_0x559d86['responsetime']:_0x980c41;_0x559d86[_0x9424('0x39')]=_0x559d86[_0x9424('0x39')]?_0x559d86['endtime']:_0x980c41;_0x559d86[_0x9424('0x3b')]=getSeconds(_0x559d86['responsetime']||0x0,_0x559d86[_0x9424('0x37')]||0x0);_0x559d86[_0x9424('0x40')]=_0x559d86[_0x9424('0x41')]?getSeconds(_0x559d86[_0x9424('0x39')],_0x559d86[_0x9424('0x41')]):0x0;};exports['isFailure']=function(_0x5dae8b){return _0x5dae8b==='Failure';};exports[_0x9424('0x42')]=function(_0x385e6e,_0x2ace7a,_0x549b1c,_0x4adbbe,_0x2f458e){var _0x144962=_0x4adbbe?'RECALL':_0x385e6e[_0x9424('0x19')];_0x144962=_0x2f458e?'BOOKED':_0x144962;return{'actionid':_0x385e6e[_0x9424('0x43')],'action':_0x9424('0x44'),'channel':_0x385e6e[_0x9424('0x45')],'callerid':util[_0x9424('0x12')](_0x9424('0x13'),_0x144962,_0x385e6e[_0x9424('0x1a')]),'Exten':'xcally-motion-preview','Context':_0x9424('0x46'),'Priority':'1','variable':_0x549b1c,'timeout':(_0x2ace7a[_0x9424('0x47')]||0x1e)*0x3e8,'async':!![],'channelid':_0x385e6e[_0x9424('0x43')]};};exports[_0x9424('0x48')]=function(_0x10514c){return _0x10514c[_0x9424('0x49')]+_0x10514c['countcongestionretry']+_0x10514c[_0x9424('0x4a')]+_0x10514c[_0x9424('0x4b')]+_0x10514c[_0x9424('0x4c')];};exports[_0x9424('0x4d')]=function(_0x574f88){var _0x4bf6e5=_[_0x9424('0x4e')](_0x574f88);_0x4bf6e5[_0x9424('0x35')]=0xf;_0x4bf6e5[_0x9424('0x3f')]=_0x9424('0x4f');return _0x4bf6e5;};exports[_0x9424('0x50')]=function(_0x500ca4,_0x4dceec,_0x53bffb){var _0x42a60c={};_0x42a60c[_0x4dceec]=_0x500ca4[_0x4dceec];_0x42a60c[_0x9424('0x51')]=![];_0x42a60c['scheduledat']=moment()['add'](_0x53bffb,_0x9424('0x52'))[_0x9424('0x12')]('YYYY-MM-DD\x20HH:mm:ss');_0x42a60c[_0x9424('0x53')]=_0x500ca4[_0x9424('0x53')];_0x42a60c[_0x9424('0x54')]=_0x500ca4[_0x9424('0x54')];_0x42a60c[_0x9424('0x1c')]=_0x500ca4['VoiceQueueId']||undefined;return _0x42a60c;};exports[_0x9424('0x55')]=function(_0x378dd9,_0x68ac12){if(!_[_0x9424('0x29')](_0x378dd9)){if(_0x378dd9[_0x9424('0x56')]>0x0){_0x378dd9[_0x9424('0x56')]-=0x1;}else{logger[_0x9424('0x9')](_0x68ac12,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger['error'](_0x68ac12,_0x9424('0x57'));}};exports[_0x9424('0x58')]=function(_0x1094c2){if(_0x1094c2<=0x0){return!![];}return![];};exports[_0x9424('0x59')]=function(_0x24f242,_0x5a8f27,_0x3a8559){_0x24f242[_0x9424('0x5a')]=_0x5a8f27;_0x24f242['name']=_0x24f242[_0x9424('0x5b')];_0x24f242['interface']=_0x24f242[_0x9424('0x45')];if(_0x3a8559){_0x24f242['mandatoryDisposition']=_0x3a8559[_0x9424('0x5c')];}return _0x24f242;};exports[_0x9424('0x5d')]=function(_0x57e6f5){var _0x1ddacc={};_0x1ddacc[_0x9424('0x5b')]=_0x57e6f5[_0x9424('0x5b')];_0x1ddacc[_0x9424('0x5e')]=_0x57e6f5[_0x9424('0x45')];_0x1ddacc['uniqueid']=_0x57e6f5[_0x9424('0x43')];return _0x1ddacc;};exports[_0x9424('0x5f')]=function(_0x5e72c2){var _0x37c2bc=[];for(var _0x2f58ae in _0x5e72c2){if(_0x5e72c2['hasOwnProperty'](_0x2f58ae)){if(!_[_0x9424('0x29')](_0x5e72c2[_0x2f58ae])&&_0x5e72c2[_0x2f58ae][_0x9424('0x35')]==='not_inuse'&&_0x5e72c2[_0x2f58ae][_0x9424('0x60')]===_0x9424('0x61')){_0x37c2bc[_0x9424('0x62')](_0x5e72c2[_0x2f58ae]['id']);}}}return _0x37c2bc;};exports[_0x9424('0x63')]=function(_0x1e16fe){var _0x2e34f3=moment()[_0x9424('0x7')](0x0);var _0x38cae7=moment(_0x1e16fe)['milliseconds'](0x0);return _0x2e34f3['diff'](_0x38cae7,'seconds');};exports[_0x9424('0x64')]=function(_0x4cfbfa){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x4cfbfa[_0x9424('0x53')],'ListId':_0x4cfbfa[_0x9424('0x54')],'VoiceQueueId':_0x4cfbfa[_0x9424('0x1c')]||undefined,'CampaignId':_0x4cfbfa[_0x9424('0x65')]||undefined};};exports['filterKey']=function(_0x2fb2da){if(_0x2fb2da===_0x9424('0x43')||_0x2fb2da===_0x9424('0x66')||_0x2fb2da===_0x9424('0x5b')||_0x2fb2da===_0x9424('0x67')||_0x2fb2da===_0x9424('0x68')||_0x2fb2da===_0x9424('0x69')||_0x2fb2da===_0x9424('0x3d')||_0x2fb2da===_0x9424('0x45')||_0x2fb2da==='calleridname'||_0x2fb2da==='active'||_0x2fb2da===_0x9424('0x1a')||_0x2fb2da==='scheduledat'||_0x2fb2da===_0x9424('0x49')||_0x2fb2da===_0x9424('0x6a')||_0x2fb2da==='countnoanswerretry'||_0x2fb2da===_0x9424('0x6b')||_0x2fb2da===_0x9424('0x6c')||_0x2fb2da===_0x9424('0x6d')||_0x2fb2da===_0x9424('0x6e')||_0x2fb2da===_0x9424('0x6f')||_0x2fb2da===_0x9424('0x53')||_0x2fb2da===_0x9424('0x54')||_0x2fb2da===_0x9424('0x3e')||_0x2fb2da===_0x9424('0x1c')||_0x2fb2da===_0x9424('0x70')||_0x2fb2da===_0x9424('0x71')||_0x2fb2da==='xmd-queue'||_0x2fb2da===_0x9424('0x72')||_0x2fb2da==='xmd-listid'||_0x2fb2da===_0x9424('0x73')||_0x2fb2da==='xmd-dialtimeout'||_0x2fb2da===_0x9424('0x74')||_0x2fb2da==='xmd-dialid'||_0x2fb2da==='xmd-dialchannel'||_0x2fb2da===_0x9424('0x75')||_0x2fb2da===_0x9424('0x76')||_0x2fb2da==='xmd-callerid'||_0x2fb2da==='xmd-agiafter'||_0x2fb2da==='xmd-agi'||_0x2fb2da==='rtpaudioqos'||_0x2fb2da==='rtpaudioqosbridged'||_0x2fb2da===_0x9424('0x77')||_0x2fb2da===_0x9424('0x78')||_0x2fb2da===_0x9424('0x79')||_0x2fb2da===_0x9424('0x7a')||_0x2fb2da===_0x9424('0x7b')||_0x2fb2da===_0x9424('0x7c')||_0x2fb2da==='rtpaudioqos'||_0x2fb2da===_0x9424('0x7d')||_0x2fb2da===_0x9424('0x77')||_0x2fb2da===_0x9424('0x78')||_0x2fb2da===_0x9424('0x79')||_0x2fb2da===_0x9424('0x7a')||_0x2fb2da===_0x9424('0x7b')||_0x2fb2da==='rtpaudioqosrttbridged'||_0x2fb2da==='bridgepeer'||_0x2fb2da===_0x9424('0x7e')||_0x2fb2da===_0x9424('0x35')||_0x2fb2da===_0x9424('0x3f')){return![];}return!![];};exports[_0x9424('0x7f')]=function(_0x2dfdd0,_0x3214f1){var _0x1dc9b8,_0x37dce6,_0x253e0b;if(_0x3214f1<=0x0){_0x3214f1=0x1;}_0x1dc9b8=new RegExp(_0x9424('0x80')+_0x3214f1+'}$');_0x37dce6=Math[_0x9424('0x81')](0xa,_0x3214f1-0x1);_0x253e0b=Math['pow'](0xa,_0x3214f1)-0x1;return util[_0x9424('0x12')]('%s',_[_0x9424('0x82')](_0x2dfdd0,_0x1dc9b8,_[_0x9424('0x83')](_0x37dce6,_0x253e0b)));};exports[_0x9424('0x84')]=function(_0x303f46){var _0x40787c=_0x303f46['match'](/"(.*?)"/);return _0x40787c?_0x40787c[0x1]:_0x303f46;};exports[_0x9424('0x85')]=function(_0x650dfd){var _0xc5a1b=_0x650dfd['match'](/<(.*?)>/);return _0xc5a1b?_0xc5a1b[0x1]:_0x650dfd;};
\ No newline at end of file
+var _0x4a86=['rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqosjitter','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','extractCalleridName','match','util','lodash','moment','../../../../config/logger','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','seconds','loggerCatch','error','logger','info','inspect','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','addVariables','Queue','name','calleridname','calleridnum','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','isNil','createdAt','updatedAt','%s%s','XMD-','toUpper','Contact','hasOwnProperty','toLower','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','ringtime','logLookAgent','membername','logCustomer','answertime','isFailure','BOOKED','originate','channelAgent','xcally-motion-preview','from-sip','uniqueid','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','clone','Global','scheduledAt','active','scheduledat','add','minutes','ContactId','ListId','decrementTalkink','[decrementTalkink]\x20is\x20null\x20or\x20undefined','buildObj','queue','interface','motionChannel','voice','mandatoryDisposition','buildAcw','agentReadyId','status','push','getDiff','createBody','filterKey','idContact','type','campaigntype','dialAnswer','countglobal','callback','callbackuniqueid','callbackat','recallme','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-contactid','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged'];(function(_0x13481e,_0x30a338){var _0x78577e=function(_0x489cd4){while(--_0x489cd4){_0x13481e['push'](_0x13481e['shift']());}};_0x78577e(++_0x30a338);}(_0x4a86,0x96));var _0x64a8=function(_0x1ac1a4,_0x438895){_0x1ac1a4=_0x1ac1a4-0x0;var _0x12bdf1=_0x4a86[_0x1ac1a4];return _0x12bdf1;};'use strict';var util=require(_0x64a8('0x0'));var _=require(_0x64a8('0x1'));var moment=require(_0x64a8('0x2'));var logger=require(_0x64a8('0x3'))('preview');var ipAgi=process[_0x64a8('0x4')][_0x64a8('0x5')]||_0x64a8('0x6');function getSeconds(_0x188e77,_0x375baf){var _0x305ac2=moment(_0x188e77)[_0x64a8('0x7')](0x0);var _0x551bac=moment(_0x375baf)[_0x64a8('0x7')](0x0);return _0x305ac2['diff'](_0x551bac,_0x64a8('0x8'));}exports[_0x64a8('0x9')]=function(_0x30ac8c){return function(_0x1db4c2){logger[_0x64a8('0xa')](_0x30ac8c,util['inspect'](_0x1db4c2,{'showHidden':![],'depth':null}));};};exports[_0x64a8('0xb')]=function(_0x11a8a2,_0x4218ee){logger[_0x64a8('0xc')](_0x11a8a2,util['inspect'](_0x4218ee,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0xb4ad47,_0x3c6a08){logger[_0x64a8('0xa')](_0xb4ad47,util[_0x64a8('0xd')](_0x3c6a08,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x3c0203){return function(_0x1e423b){logger['info'](_0x3c0203,util[_0x64a8('0xd')](_0x1e423b,{'showHidden':![],'depth':null}));};};exports[_0x64a8('0xe')]=function(_0x48a633,_0x61cf68,_0xefa30c){return{'message':_0x48a633,'unlock':_0x61cf68,'active':_0xefa30c};};exports[_0x64a8('0xf')]=function(_0xb77986,_0x817c34,_0x2660c9){if(!_[_0x64a8('0x10')](_0x2660c9)&&'string'===typeof _0x2660c9&&!_['isEmpty'](_0x2660c9)){if(!_[_0x64a8('0x10')](_0x817c34)&&_0x64a8('0x11')===typeof _0x817c34&&!_[_0x64a8('0x12')](_0x817c34)){return util[_0x64a8('0x13')]('\x22%s\x22\x20<%s>',_0x817c34,_0x2660c9);}return util['format'](_0x64a8('0x14'),_0x2660c9,_0x2660c9);}if(!_[_0x64a8('0x10')](_0xb77986)&&_0x64a8('0x11')===typeof _0xb77986&&!_[_0x64a8('0x12')](_0xb77986)){return _0xb77986;}return _0x64a8('0x15');};exports[_0x64a8('0x16')]=function(_0x3e88bf){if(_['isNil'](_0x3e88bf)){return![];}return _0x3e88bf;};exports[_0x64a8('0x17')]=function(_0x1ffbfc,_0xc99f05,_0x3b2a0e,_0x37fc05,_0x23a22a,_0x2413c5){var _0x2a039d={'XMD-QUEUE':_0xc99f05[_0x64a8('0x18')]?_0xc99f05[_0x64a8('0x18')][_0x64a8('0x19')]:'','XMD-CALLERID':_0x37fc05,'XMD-CALLERID-PREVIEW':_0x2413c5?util[_0x64a8('0x13')](_0x64a8('0x14'),_0x2413c5[_0x64a8('0x1a')],_0x2413c5[_0x64a8('0x1b')]):_0x37fc05,'XMD-DIALID':_0x23a22a,'XMD-CONTACTID':_0xc99f05['ContactId'],'XMD-CDRTYPE':_0x64a8('0x1c'),'CALLERID(all)':_0x37fc05,'XMD-VOICEQUEUEID':_0xc99f05[_0x64a8('0x1d')],'XMD-DIALCHANNEL':_0x3b2a0e,'XMD-DIALTIMEOUT':_0x1ffbfc[_0x64a8('0x1e')]||0x1e,'XMD-DIALOPTIONS':util['format'](_0x64a8('0x1f'),_0x1ffbfc[_0x64a8('0x20')]?'g':'',_[_0x64a8('0x12')](_0x1ffbfc[_0x64a8('0x21')])?'':_0x64a8('0x22')),'XMD-DIALURL':_0x1ffbfc[_0x64a8('0x23')]||'','XMD-AGI':_0x1ffbfc[_0x64a8('0x24')]?util[_0x64a8('0x13')](_0x64a8('0x25'),ipAgi,_0x1ffbfc[_0x64a8('0x24')]):'NONE','XMD-AGIAFTER':_0x1ffbfc['dialQueueProject2']?util['format'](_0x64a8('0x25'),ipAgi,_0x1ffbfc[_0x64a8('0x20')]):_0x64a8('0x26'),'XMD-ORIGINATECALLERIDNUM':_0x2413c5?_0x2413c5[_0x64a8('0x27')]:'','XMD-ORIGINATECALLERIDNAME':_0x2413c5?_0x2413c5[_0x64a8('0x28')]:'','XMD-DESTINATION':'xcally-motion-preview'};if(!_[_0x64a8('0x12')](_0x1ffbfc['monitor_format'])){_0x2a039d[util[_0x64a8('0x13')]('%s',_0x64a8('0x29'))]=_0x1ffbfc[_0x64a8('0x21')];_0x2a039d[util['format']('%s',_0x64a8('0x2a'))]=_0x23a22a;}if(_0xc99f05&&_0xc99f05['Contact']){for(var _0x320779 in _0xc99f05['Contact']){if(_0xc99f05['Contact']['hasOwnProperty'](_0x320779)){if(!_[_0x64a8('0x2b')](_0xc99f05['Contact'][_0x320779])&&_0x320779!=='id'&&_0x320779!=='tags'&&_0x320779!==_0x64a8('0x2c')&&_0x320779!==_0x64a8('0x2d')){_0x2a039d[util[_0x64a8('0x13')](_0x64a8('0x2e'),_0x64a8('0x2f'),_[_0x64a8('0x30')](_0x320779))]=_0xc99f05[_0x64a8('0x31')][_0x320779];}}}}return _0x2a039d;};exports['toLowerVariables']=function(_0x4e7172){var _0xe4edcd={};for(var _0x78beb2 in _0x4e7172){if(_0x4e7172[_0x64a8('0x32')](_0x78beb2)){_0xe4edcd[util[_0x64a8('0x13')]('%s',_[_0x64a8('0x33')](_0x78beb2))]=_0x4e7172[_0x78beb2];}}return{'variables':_0xe4edcd};};exports['updateOriginated']=function(_0x596ca8,_0x4715bb){if(!_[_0x64a8('0x2b')](_0x596ca8)){if(_0x596ca8[_0x64a8('0x32')]('originated')){if(_0x596ca8[_0x64a8('0x34')]>0x0){_0x596ca8[_0x64a8('0x34')]-=0x1;}else{logger[_0x64a8('0xa')](_0x64a8('0x35'),_0x4715bb);}}}else{logger[_0x64a8('0xa')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x4715bb);}};exports['logBlacklist']=function(_0x72f82e){var _0xac4dde=moment()[_0x64a8('0x13')](_0x64a8('0x36'));_0x72f82e[_0x64a8('0x37')]=0xd;_0x72f82e[_0x64a8('0x38')]=_0x64a8('0x39');_0x72f82e[_0x64a8('0x3a')]=_0xac4dde;_0x72f82e[_0x64a8('0x3b')]=_0xac4dde;_0x72f82e[_0x64a8('0x3c')]=_0xac4dde;};exports['logAgent']=function(_0x243da5,_0x53c14d,_0xb5d1ec){var _0x2b756f=moment()[_0x64a8('0x13')](_0x64a8('0x36'));_0x243da5[_0x64a8('0x37')]=_0x53c14d;_0x243da5[_0x64a8('0x38')]=_0xb5d1ec;_0x243da5[_0x64a8('0x3b')]=_0x2b756f;_0x243da5[_0x64a8('0x3d')]=getSeconds(_0x243da5[_0x64a8('0x3b')],_0x243da5['starttime']);};exports[_0x64a8('0x3e')]=function(_0x3be453,_0x347b83,_0x36d304){_0x3be453[_0x64a8('0x3f')]=_0x347b83;_0x3be453['UserId']=_0x36d304;};exports[_0x64a8('0x40')]=function(_0x17f9aa,_0x3f9998,_0x422ba6){var _0x45c15d=moment()[_0x64a8('0x13')](_0x64a8('0x36'));_0x17f9aa[_0x64a8('0x37')]=_0x3f9998;_0x17f9aa[_0x64a8('0x38')]=_0x422ba6;_0x17f9aa[_0x64a8('0x3b')]=_0x17f9aa[_0x64a8('0x3b')]?_0x17f9aa[_0x64a8('0x3b')]:_0x45c15d;_0x17f9aa[_0x64a8('0x3c')]=_0x17f9aa[_0x64a8('0x3c')]?_0x17f9aa['endtime']:_0x45c15d;_0x17f9aa[_0x64a8('0x3d')]=getSeconds(_0x17f9aa[_0x64a8('0x3b')]||0x0,_0x17f9aa[_0x64a8('0x3a')]||0x0);_0x17f9aa['talktime']=_0x17f9aa[_0x64a8('0x41')]?getSeconds(_0x17f9aa[_0x64a8('0x3c')],_0x17f9aa[_0x64a8('0x41')]):0x0;};exports[_0x64a8('0x42')]=function(_0x25ca9e){return _0x25ca9e==='Failure';};exports['variablesAction']=function(_0x2458eb,_0x14976b,_0x28460d,_0x305239,_0x53a9cc){var _0x1f864c=_0x305239?'RECALL':_0x2458eb[_0x64a8('0x1a')];_0x1f864c=_0x53a9cc?_0x64a8('0x43'):_0x1f864c;return{'actionid':_0x2458eb['uniqueid'],'action':_0x64a8('0x44'),'channel':_0x2458eb[_0x64a8('0x45')],'callerid':util[_0x64a8('0x13')]('\x22%s\x22\x20<%s>',_0x1f864c,_0x2458eb[_0x64a8('0x1b')]),'Exten':_0x64a8('0x46'),'Context':_0x64a8('0x47'),'Priority':'1','variable':_0x28460d,'timeout':(_0x14976b['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x2458eb[_0x64a8('0x48')]};};exports[_0x64a8('0x49')]=function(_0x22f1c7){return _0x22f1c7[_0x64a8('0x4a')]+_0x22f1c7[_0x64a8('0x4b')]+_0x22f1c7[_0x64a8('0x4c')]+_0x22f1c7['countagentrejectretry']+_0x22f1c7[_0x64a8('0x4d')];};exports['cloneAction']=function(_0x423fa8){var _0x1ca70f=_[_0x64a8('0x4e')](_0x423fa8);_0x1ca70f['state']=0xf;_0x1ca70f[_0x64a8('0x38')]=_0x64a8('0x4f');return _0x1ca70f;};exports[_0x64a8('0x50')]=function(_0x44191d,_0x5ca499,_0x109d32){var _0x25739d={};_0x25739d[_0x5ca499]=_0x44191d[_0x5ca499];_0x25739d[_0x64a8('0x51')]=![];_0x25739d[_0x64a8('0x52')]=moment()[_0x64a8('0x53')](_0x109d32,_0x64a8('0x54'))[_0x64a8('0x13')](_0x64a8('0x36'));_0x25739d[_0x64a8('0x55')]=_0x44191d[_0x64a8('0x55')];_0x25739d[_0x64a8('0x56')]=_0x44191d[_0x64a8('0x56')];_0x25739d[_0x64a8('0x1d')]=_0x44191d[_0x64a8('0x1d')]||undefined;return _0x25739d;};exports[_0x64a8('0x57')]=function(_0x3daf22,_0x45e9bf){if(!_['isNil'](_0x3daf22)){if(_0x3daf22['pTalking']>0x0){_0x3daf22['pTalking']-=0x1;}else{logger[_0x64a8('0xa')](_0x45e9bf,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0x64a8('0xa')](_0x45e9bf,_0x64a8('0x58'));}};exports['IsNotLoggedIn']=function(_0x398ab8){if(_0x398ab8<=0x0){return!![];}return![];};exports[_0x64a8('0x59')]=function(_0x27ea8b,_0x54d581,_0x5b33af){_0x27ea8b['lastevent']=_0x54d581;_0x27ea8b[_0x64a8('0x19')]=_0x27ea8b[_0x64a8('0x5a')];_0x27ea8b[_0x64a8('0x5b')]=_0x27ea8b[_0x64a8('0x45')];_0x27ea8b[_0x64a8('0x5c')]=_0x64a8('0x5d');if(_0x5b33af){_0x27ea8b[_0x64a8('0x5e')]=_0x5b33af[_0x64a8('0x5e')];}return _0x27ea8b;};exports[_0x64a8('0x5f')]=function(_0x11d2b8){var _0x2a2dfa={};_0x2a2dfa[_0x64a8('0x5a')]=_0x11d2b8[_0x64a8('0x5a')];_0x2a2dfa['interface']=_0x11d2b8['channelAgent'];_0x2a2dfa[_0x64a8('0x48')]=_0x11d2b8[_0x64a8('0x48')];return _0x2a2dfa;};exports[_0x64a8('0x60')]=function(_0x4ba5f0){var _0x1de8cf=[];for(var _0x58abfa in _0x4ba5f0){if(_0x4ba5f0[_0x64a8('0x32')](_0x58abfa)){if(!_[_0x64a8('0x2b')](_0x4ba5f0[_0x58abfa])&&_0x4ba5f0[_0x58abfa][_0x64a8('0x37')]==='not_inuse'&&_0x4ba5f0[_0x58abfa][_0x64a8('0x61')]==='reachable'){_0x1de8cf[_0x64a8('0x62')](_0x4ba5f0[_0x58abfa]['id']);}}}return _0x1de8cf;};exports[_0x64a8('0x63')]=function(_0x387b65){var _0x122220=moment()['milliseconds'](0x0);var _0x3fcd69=moment(_0x387b65)[_0x64a8('0x7')](0x0);return _0x122220['diff'](_0x3fcd69,_0x64a8('0x8'));};exports[_0x64a8('0x64')]=function(_0x2d1274){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x2d1274[_0x64a8('0x55')],'ListId':_0x2d1274[_0x64a8('0x56')],'VoiceQueueId':_0x2d1274[_0x64a8('0x1d')]||undefined,'CampaignId':_0x2d1274['CampaignId']||undefined};};exports[_0x64a8('0x65')]=function(_0x19492d){if(_0x19492d===_0x64a8('0x48')||_0x19492d===_0x64a8('0x66')||_0x19492d===_0x64a8('0x5a')||_0x19492d===_0x64a8('0x67')||_0x19492d===_0x64a8('0x68')||_0x19492d===_0x64a8('0x69')||_0x19492d===_0x64a8('0x3f')||_0x19492d===_0x64a8('0x45')||_0x19492d===_0x64a8('0x1a')||_0x19492d===_0x64a8('0x51')||_0x19492d===_0x64a8('0x1b')||_0x19492d==='scheduledat'||_0x19492d===_0x64a8('0x4a')||_0x19492d===_0x64a8('0x4b')||_0x19492d==='countnoanswerretry'||_0x19492d===_0x64a8('0x6a')||_0x19492d===_0x64a8('0x6b')||_0x19492d===_0x64a8('0x6c')||_0x19492d===_0x64a8('0x6d')||_0x19492d===_0x64a8('0x6e')||_0x19492d===_0x64a8('0x55')||_0x19492d==='ListId'||_0x19492d==='UserId'||_0x19492d===_0x64a8('0x1d')||_0x19492d==='sipcallid'||_0x19492d===_0x64a8('0x6f')||_0x19492d===_0x64a8('0x70')||_0x19492d==='xmd-phone'||_0x19492d===_0x64a8('0x71')||_0x19492d===_0x64a8('0x72')||_0x19492d===_0x64a8('0x73')||_0x19492d===_0x64a8('0x74')||_0x19492d===_0x64a8('0x75')||_0x19492d==='xmd-dialchannel'||_0x19492d===_0x64a8('0x76')||_0x19492d==='xmd-cdrtype'||_0x19492d===_0x64a8('0x77')||_0x19492d===_0x64a8('0x78')||_0x19492d===_0x64a8('0x79')||_0x19492d==='rtpaudioqos'||_0x19492d===_0x64a8('0x7a')||_0x19492d==='rtpaudioqosjitter'||_0x19492d===_0x64a8('0x7b')||_0x19492d===_0x64a8('0x7c')||_0x19492d===_0x64a8('0x7d')||_0x19492d===_0x64a8('0x7e')||_0x19492d===_0x64a8('0x7f')||_0x19492d===_0x64a8('0x80')||_0x19492d===_0x64a8('0x7a')||_0x19492d===_0x64a8('0x81')||_0x19492d===_0x64a8('0x7b')||_0x19492d==='rtpaudioqosloss'||_0x19492d===_0x64a8('0x7d')||_0x19492d===_0x64a8('0x7e')||_0x19492d===_0x64a8('0x7f')||_0x19492d===_0x64a8('0x82')||_0x19492d===_0x64a8('0x83')||_0x19492d===_0x64a8('0x37')||_0x19492d===_0x64a8('0x38')){return![];}return!![];};exports[_0x64a8('0x84')]=function(_0x5de9d0,_0x4c9704){var _0x430c17,_0x21c598,_0x58308f;if(_0x4c9704<=0x0){_0x4c9704=0x1;}_0x430c17=new RegExp(_0x64a8('0x85')+_0x4c9704+'}$');_0x21c598=Math[_0x64a8('0x86')](0xa,_0x4c9704-0x1);_0x58308f=Math[_0x64a8('0x86')](0xa,_0x4c9704)-0x1;return util[_0x64a8('0x13')]('%s',_[_0x64a8('0x87')](_0x5de9d0,_0x430c17,_['random'](_0x21c598,_0x58308f)));};exports[_0x64a8('0x88')]=function(_0x4a30a3){var _0x2c1692=_0x4a30a3[_0x64a8('0x89')](/"(.*?)"/);return _0x2c1692?_0x2c1692[0x1]:_0x4a30a3;};exports['extractCalleridNumber']=function(_0x50e234){var _0x2e239e=_0x50e234[_0x64a8('0x89')](/<(.*?)>/);return _0x2e239e?_0x2e239e[0x1]:_0x50e234;};
\ No newline at end of file
index 063615a..5d5d3df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb4e=['voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','boolean','queueremove','queuepause','reload'];(function(_0x2fd540,_0x2cdc12){var _0x105ae0=function(_0x465184){while(--_0x465184){_0x2fd540['push'](_0x2fd540['shift']());}};_0x105ae0(++_0x2cdc12);}(_0xbb4e,0x19b));var _0xebb4=function(_0x386c3e,_0x44a375){_0x386c3e=_0x386c3e-0x0;var _0x4b8e13=_0xbb4e[_0x386c3e];return _0x4b8e13;};'use strict';exports[_0xebb4('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0xebb4('0x1'),'required':!![]},'membername':{'type':_0xebb4('0x1'),'required':!![]},'penalty':{'type':_0xebb4('0x2'),'required':![]},'paused':{'type':_0xebb4('0x3'),'required':![]}};exports[_0xebb4('0x4')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0xebb4('0x1'),'required':!![]}};exports[_0xebb4('0x5')]={'interface':{'type':_0xebb4('0x1'),'required':!![]},'paused':{'type':_0xebb4('0x3')},'reason':{'type':_0xebb4('0x1'),'required':![]}};exports[_0xebb4('0x6')]={'module':{'type':_0xebb4('0x1'),'required':![]}};exports[_0xebb4('0x7')]={'uniqueid':{'type':_0xebb4('0x1'),'required':!![]}};exports[_0xebb4('0x8')]={'uniqueid':{'type':_0xebb4('0x1'),'required':!![]},'filename':{'type':_0xebb4('0x1')},'format':{'type':_0xebb4('0x1')},'mixmonitorid':{'type':_0xebb4('0x1')}};exports[_0xebb4('0x9')]={'uniqueid':{'type':_0xebb4('0x1'),'required':!![]}};exports[_0xebb4('0xa')]={'uniqueid':{'type':_0xebb4('0x1'),'required':!![]},'exten':{'type':_0xebb4('0x1'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
+var _0xc7ed=['string','number','boolean','queueremove','voicechannel'];(function(_0x280858,_0x45894b){var _0x39e0db=function(_0x1c282a){while(--_0x1c282a){_0x280858['push'](_0x280858['shift']());}};_0x39e0db(++_0x45894b);}(_0xc7ed,0xd7));var _0xdc7e=function(_0x39479f,_0x822ae4){_0x39479f=_0x39479f-0x0;var _0x4a6d96=_0xc7ed[_0x39479f];return _0x4a6d96;};'use strict';exports['queueadd']={'queue':{'type':_0xdc7e('0x0'),'required':!![]},'interface':{'type':_0xdc7e('0x0'),'required':!![]},'membername':{'type':_0xdc7e('0x0'),'required':!![]},'penalty':{'type':_0xdc7e('0x1'),'required':![]},'paused':{'type':_0xdc7e('0x2'),'required':![]}};exports[_0xdc7e('0x3')]={'queue':{'type':_0xdc7e('0x0'),'required':!![]},'interface':{'type':'string','required':!![]}};exports['queuepause']={'interface':{'type':_0xdc7e('0x0'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0xdc7e('0x0'),'required':![]}};exports['reload']={'module':{'type':_0xdc7e('0x0'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':'string','required':!![]}};exports[_0xdc7e('0x4')]={'uniqueid':{'type':_0xdc7e('0x0'),'required':!![]},'filename':{'type':'string'},'format':{'type':'string'},'mixmonitorid':{'type':_0xdc7e('0x0')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0xdc7e('0x0'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0xdc7e('0x0'),'required':!![]},'exten':{'type':_0xdc7e('0x0'),'required':!![]},'context':{'type':_0xdc7e('0x0')}};
\ No newline at end of file
index 449d638..2d43d73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b3a=['isUndefined','agents','mergeFromDatabase','initTelephones','trunks','initTriggers','initTemplates','templates','zendeskAccounts','initSalesforceAccounts','salesforceAccounts','initFreshdeskAccounts','initZohoAccounts','zohoAccounts','initDeskAccounts','deskAccounts','initSugarcrmAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','unmanaged','queuecallerabandon','queuecallerleaveAt','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','diff','seconds','sumDuration','duration','disposition','ANSWERED','billableseconds','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','bluebird','util','lodash','../model/agent','../model/voiceQueue','../model/trigger','../model/template','../model/voiceExtension','../model/zendeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/dynamics365Account','../model/freshsalesAccount','telephones','voiceQueues','triggers','campaigns','outbound','voiceExtensions','channels','outboundChannels','timers','sugarcrmAccounts','freshdeskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','total','answered','sumHoldTime','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','initAgents','length'];(function(_0x113d23,_0x1f3ea4){var _0x4c9e06=function(_0x159023){while(--_0x159023){_0x113d23['push'](_0x113d23['shift']());}};_0x4c9e06(++_0x1f3ea4);}(_0x2b3a,0x1c3));var _0xa2b3=function(_0x1ca3a0,_0x8c8db9){_0x1ca3a0=_0x1ca3a0-0x0;var _0x33da97=_0x2b3a[_0x1ca3a0];return _0x33da97;};'use strict';var BPromise=require(_0xa2b3('0x0'));var util=require(_0xa2b3('0x1'));var _=require(_0xa2b3('0x2'));var moment=require('moment');var Agent=require(_0xa2b3('0x3'));var Telephone=require('../model/telephone');var Trunk=require('../model/trunk');var VoiceQueue=require(_0xa2b3('0x4'));var Trigger=require(_0xa2b3('0x5'));var Template=require(_0xa2b3('0x6'));var Campaign=require('../model/campaign');var VoiceExtension=require(_0xa2b3('0x7'));var ZendeskAccount=require(_0xa2b3('0x8'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require(_0xa2b3('0x9'));var ZohoAccount=require(_0xa2b3('0xa'));var DeskAccount=require(_0xa2b3('0xb'));var VtigerAccount=require(_0xa2b3('0xc'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0xa2b3('0xd'));var FreshsalesAccount=require(_0xa2b3('0xe'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this['agents']={};this[_0xa2b3('0xf')]={};this['trunks']={};this[_0xa2b3('0x10')]={};this[_0xa2b3('0x11')]={};this[_0xa2b3('0x12')]={};this['templates']={};this[_0xa2b3('0x13')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xa2b3('0x14')]={};this[_0xa2b3('0x15')]={};this['queueChannels']={};this[_0xa2b3('0x16')]={};this[_0xa2b3('0x17')]={};this['settings']={};this['zendeskAccounts']={};this['salesforceAccounts']={};this[_0xa2b3('0x18')]={};this[_0xa2b3('0x19')]={};this['zohoAccounts']={};this['deskAccounts']={};this[_0xa2b3('0x1a')]={};this[_0xa2b3('0x1b')]={};this[_0xa2b3('0x1c')]={};this[_0xa2b3('0x1d')]={};this[_0xa2b3('0x1e')]={};};function freeIsNotKey(_0x37a704,_0x87bdc7,_0x550a2a){var _0x4c6d86=_[_0xa2b3('0x1f')](_0x37a704,function(_0x2ea435,_0x45450e){return _0x2ea435[_0x550a2a];});for(var _0x21a0f9 in _0x87bdc7){if(_0x87bdc7[_0xa2b3('0x20')](_0x21a0f9)){if(!_0x4c6d86[_0x21a0f9]){delete _0x87bdc7[_0x21a0f9];}}}}function freeIsNotKeySip(_0x14b6be,_0x50ae4f){var _0x5a3d1d=_[_0xa2b3('0x1f')](_0x14b6be,function(_0x2873e7,_0x32b660){return util[_0xa2b3('0x21')](_0xa2b3('0x22'),_0x2873e7[_0xa2b3('0x23')]);});for(var _0x5a695c in _0x50ae4f){if(_0x50ae4f[_0xa2b3('0x20')](_0x5a695c)){if(!_0x5a3d1d[_0x5a695c]){delete _0x50ae4f[_0x5a695c];}}}}function freeIsNotKeyAgent(_0x499224,_0x3abbfc){var _0x26f655=_[_0xa2b3('0x1f')](_0x499224,function(_0x294f32,_0x5bfbaf){var _0x4dd0e7=_[_0xa2b3('0x24')](_0x294f32[_0xa2b3('0x25')])?util[_0xa2b3('0x21')](_0xa2b3('0x22'),_0x294f32['name']):_0x294f32['interface'];return _0x4dd0e7;});for(var _0x9492c6 in _0x3abbfc){if(_0x3abbfc[_0xa2b3('0x20')](_0x9492c6)){if(!_0x26f655[_0x9492c6]){delete _0x3abbfc[_0x9492c6];}}}}function clearVoiceCallReports(_0x1e78b6){_0x1e78b6[_0xa2b3('0x26')]=0x0;_0x1e78b6[_0xa2b3('0x27')]=0x0;_0x1e78b6[_0xa2b3('0x28')]=0x0;_0x1e78b6['sumDuration']=0x0;_0x1e78b6[_0xa2b3('0x29')]=0x0;}function clearCampaigns(_0x288024){if(!_[_0xa2b3('0x2a')](_0x288024)){for(var _0x52432e in _0x288024){if(_0x288024['hasOwnProperty'](_0x52432e)){_0x288024[_0x52432e][_0xa2b3('0x2b')]=0x0;_0x288024[_0x52432e][_0xa2b3('0x2c')]=0x0;}}}}function clearVoiceQueues(_0x4ede1f){if(!_[_0xa2b3('0x2a')](_0x4ede1f)){for(var _0x4b7fea in _0x4ede1f){if(_0x4ede1f['hasOwnProperty'](_0x4b7fea)){_0x4ede1f[_0x4b7fea]['total']=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x27')]=0x0;_0x4ede1f[_0x4b7fea]['unmanaged']=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x2d')]=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x28')]=0x0;_0x4ede1f[_0x4b7fea]['sumDuration']=0x0;_0x4ede1f[_0x4b7fea]['sumBillable']=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x2e')]=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x2f')]=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x30')]=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x31')]=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x32')]=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x33')]=0x0;_0x4ede1f[_0x4b7fea]['outboundDropCallsDayTimeout']=0x0;_0x4ede1f[_0x4b7fea]['outboundDropCallsDayCallersExit']=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x34')]=0x0;_0x4ede1f[_0x4b7fea]['outboundOriginateFailureCallsDay']=0x0;_0x4ede1f[_0x4b7fea]['outboundRejectCallsDay']=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x35')]=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x2e')]=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x36')]=0x0;_0x4ede1f[_0x4b7fea][_0xa2b3('0x37')]=!![];}}}}Realtime[_0xa2b3('0x38')]['mergeFromDatabase']=function(_0x34cd99,_0x1364d3){for(var _0x2aa4a2 in _0x1364d3){if(_0x34cd99[_0xa2b3('0x20')](_0x2aa4a2)){_0x34cd99[_0x2aa4a2]=_0x1364d3[_0x2aa4a2];}}};Realtime[_0xa2b3('0x38')][_0xa2b3('0x39')]=function(){var _0x22bfdf=this;return function(_0x14e11f){if(_0x14e11f){freeIsNotKeyAgent(_0x14e11f,_0x22bfdf['agents']);for(var _0x1ce417=0x0,_0x22404f={},_0x3fc521={};_0x1ce417<_0x14e11f[_0xa2b3('0x3a')];_0x1ce417+=0x1){_0x22404f=_0x14e11f[_0x1ce417];var _0x17e73f=_[_0xa2b3('0x24')](_0x22404f[_0xa2b3('0x25')])?util[_0xa2b3('0x21')]('SIP/%s',_0x22404f['name']):_0x22404f[_0xa2b3('0x25')];if(_[_0xa2b3('0x3b')](_0x22bfdf[_0xa2b3('0x3c')][_0x17e73f])){_0x22bfdf[_0xa2b3('0x3c')][_0x17e73f]=new Agent(_0x22404f);}else{_0x22bfdf[_0xa2b3('0x3d')](_0x22bfdf['agents'][_0x17e73f],_0x22404f);}}}return _0x22bfdf[_0xa2b3('0x3c')];};};Realtime['prototype'][_0xa2b3('0x3e')]=function(){var _0x327bee=this;return function(_0x2d4cf0){if(_0x2d4cf0){freeIsNotKeySip(_0x2d4cf0,_0x327bee[_0xa2b3('0xf')]);for(var _0x58e00a=0x0,_0x1ecb94={},_0x9cae0c={};_0x58e00a<_0x2d4cf0[_0xa2b3('0x3a')];_0x58e00a+=0x1){_0x1ecb94=_0x2d4cf0[_0x58e00a];if(_[_0xa2b3('0x3b')](_0x327bee[_0xa2b3('0xf')][util[_0xa2b3('0x21')](_0xa2b3('0x22'),_0x1ecb94[_0xa2b3('0x23')])])){_0x327bee[_0xa2b3('0xf')][util[_0xa2b3('0x21')](_0xa2b3('0x22'),_0x1ecb94[_0xa2b3('0x23')])]=new Telephone(_0x1ecb94);}else{_0x327bee[_0xa2b3('0x3d')](_0x327bee[_0xa2b3('0xf')][util[_0xa2b3('0x21')](_0xa2b3('0x22'),_0x1ecb94[_0xa2b3('0x23')])],_0x1ecb94);}}}return _0x327bee[_0xa2b3('0xf')];};};Realtime[_0xa2b3('0x38')]['initTrunks']=function(){var _0x48bdcb=this;return function(_0x1da179){if(_0x1da179){freeIsNotKeySip(_0x1da179,_0x48bdcb[_0xa2b3('0x3f')]);for(var _0x3a2c56=0x0,_0x3f2693={},_0x4370d1={};_0x3a2c56<_0x1da179[_0xa2b3('0x3a')];_0x3a2c56+=0x1){_0x3f2693=_0x1da179[_0x3a2c56];if(_['isUndefined'](_0x48bdcb[_0xa2b3('0x3f')][util['format'](_0xa2b3('0x22'),_0x3f2693[_0xa2b3('0x23')])])){_0x48bdcb[_0xa2b3('0x3f')][util['format']('SIP/%s',_0x3f2693['name'])]=new Trunk(_0x3f2693);}else{_0x48bdcb[_0xa2b3('0x3d')](_0x48bdcb[_0xa2b3('0x3f')][util[_0xa2b3('0x21')](_0xa2b3('0x22'),_0x3f2693['name'])],_0x3f2693);}}}return _0x48bdcb[_0xa2b3('0x3f')];};};Realtime[_0xa2b3('0x38')]['initVoiceQueues']=function(){var _0x4b7efe=this;return function(_0x5aa782){if(_0x5aa782){freeIsNotKey(_0x5aa782,_0x4b7efe[_0xa2b3('0x10')],_0xa2b3('0x23'));for(var _0x730de3=0x0,_0x3ba792={},_0x2ebf13={};_0x730de3<_0x5aa782[_0xa2b3('0x3a')];_0x730de3+=0x1){_0x3ba792=_0x5aa782[_0x730de3];if(_['isUndefined'](_0x4b7efe[_0xa2b3('0x10')][_0x3ba792[_0xa2b3('0x23')]])){_0x4b7efe[_0xa2b3('0x10')][_0x3ba792[_0xa2b3('0x23')]]=new VoiceQueue(_0x3ba792);}else{_0x4b7efe[_0xa2b3('0x3d')](_0x4b7efe[_0xa2b3('0x10')][_0x3ba792[_0xa2b3('0x23')]],_0x3ba792);}}}return _0x4b7efe[_0xa2b3('0x10')];};};Realtime['prototype'][_0xa2b3('0x40')]=function(){var _0x53d208=this;return function(_0x37da93){if(_0x37da93){freeIsNotKey(_0x37da93,_0x53d208[_0xa2b3('0x11')],'id');for(var _0x413069=0x0,_0x562c3b={},_0x1fee49={};_0x413069<_0x37da93['length'];_0x413069+=0x1){_0x562c3b=_0x37da93[_0x413069];if(_[_0xa2b3('0x3b')](_0x53d208['triggers'][_0x562c3b['id']])){_0x53d208[_0xa2b3('0x11')][_0x562c3b['id']]=new Trigger(_0x562c3b);}else{_0x53d208[_0xa2b3('0x3d')](_0x53d208[_0xa2b3('0x11')][_0x562c3b['id']],_0x562c3b);}}}return _0x53d208[_0xa2b3('0x11')];};};Realtime[_0xa2b3('0x38')][_0xa2b3('0x41')]=function(){var _0x1ca8a3=this;return function(_0x2225fc){if(_0x2225fc){freeIsNotKey(_0x2225fc,_0x1ca8a3[_0xa2b3('0x42')],'id');for(var _0x4be9e2=0x0,_0x163ea5={},_0x54af9d={};_0x4be9e2<_0x2225fc['length'];_0x4be9e2+=0x1){_0x163ea5=_0x2225fc[_0x4be9e2];if(_[_0xa2b3('0x3b')](_0x1ca8a3['templates'][_0x163ea5['id']])){_0x1ca8a3['templates'][_0x163ea5['id']]=new Template(_0x163ea5);}else{_0x1ca8a3['mergeFromDatabase'](_0x1ca8a3[_0xa2b3('0x42')][_0x163ea5['id']],_0x163ea5);}}}return _0x1ca8a3[_0xa2b3('0x42')];};};Realtime[_0xa2b3('0x38')]['initZendeskAccounts']=function(){var _0x45d35f=this;return function(_0x301c72){if(_0x301c72){freeIsNotKey(_0x301c72,_0x45d35f[_0xa2b3('0x43')],'id');for(var _0x2ced78=0x0,_0x428f40={},_0xc953c8={};_0x2ced78<_0x301c72[_0xa2b3('0x3a')];_0x2ced78+=0x1){_0x428f40=_0x301c72[_0x2ced78];if(_[_0xa2b3('0x3b')](_0x45d35f[_0xa2b3('0x43')][_0x428f40['id']])){_0x45d35f[_0xa2b3('0x43')][_0x428f40['id']]=new ZendeskAccount(_0x428f40);}else{_0x45d35f['mergeFromDatabase'](_0x45d35f['zendeskAccounts'][_0x428f40['id']],_0x428f40);}}}return _0x45d35f[_0xa2b3('0x43')];};};Realtime[_0xa2b3('0x38')][_0xa2b3('0x44')]=function(){var _0x7939ce=this;return function(_0x564159){if(_0x564159){freeIsNotKey(_0x564159,_0x7939ce[_0xa2b3('0x45')],'id');for(var _0x18fc08=0x0,_0x50bf3e={},_0x1e0574={};_0x18fc08<_0x564159[_0xa2b3('0x3a')];_0x18fc08+=0x1){_0x50bf3e=_0x564159[_0x18fc08];if(_[_0xa2b3('0x3b')](_0x7939ce[_0xa2b3('0x45')][_0x50bf3e['id']])){_0x7939ce[_0xa2b3('0x45')][_0x50bf3e['id']]=new SalesforceAccount(_0x50bf3e);}else{_0x7939ce[_0xa2b3('0x3d')](_0x7939ce[_0xa2b3('0x45')][_0x50bf3e['id']],_0x50bf3e);}}}return _0x7939ce[_0xa2b3('0x45')];};};Realtime['prototype'][_0xa2b3('0x46')]=function(){var _0xb595fa=this;return function(_0x136713){if(_0x136713){freeIsNotKey(_0x136713,_0xb595fa[_0xa2b3('0x19')],'id');for(var _0x518f03=0x0,_0x48177f={},_0x422d34={};_0x518f03<_0x136713['length'];_0x518f03+=0x1){_0x48177f=_0x136713[_0x518f03];if(_[_0xa2b3('0x3b')](_0xb595fa[_0xa2b3('0x19')][_0x48177f['id']])){_0xb595fa[_0xa2b3('0x19')][_0x48177f['id']]=new FreshdeskAccount(_0x48177f);}else{_0xb595fa['mergeFromDatabase'](_0xb595fa[_0xa2b3('0x19')][_0x48177f['id']],_0x48177f);}}}return _0xb595fa[_0xa2b3('0x19')];};};Realtime['prototype'][_0xa2b3('0x47')]=function(){var _0x334e48=this;return function(_0x312506){if(_0x312506){freeIsNotKey(_0x312506,_0x334e48['zohoAccounts'],'id');for(var _0x4fefd3=0x0,_0xb53db3={},_0x5d6eac={};_0x4fefd3<_0x312506[_0xa2b3('0x3a')];_0x4fefd3+=0x1){_0xb53db3=_0x312506[_0x4fefd3];if(_[_0xa2b3('0x3b')](_0x334e48[_0xa2b3('0x48')][_0xb53db3['id']])){_0x334e48[_0xa2b3('0x48')][_0xb53db3['id']]=new ZohoAccount(_0xb53db3);}else{_0x334e48[_0xa2b3('0x3d')](_0x334e48[_0xa2b3('0x48')][_0xb53db3['id']],_0xb53db3);}}}return _0x334e48[_0xa2b3('0x48')];};};Realtime[_0xa2b3('0x38')][_0xa2b3('0x49')]=function(){var _0x2a3b75=this;return function(_0x5d1513){if(_0x5d1513){freeIsNotKey(_0x5d1513,_0x2a3b75['deskAccounts'],'id');for(var _0x2e3241=0x0,_0x461cae={},_0x5812a6={};_0x2e3241<_0x5d1513[_0xa2b3('0x3a')];_0x2e3241+=0x1){_0x461cae=_0x5d1513[_0x2e3241];if(_['isUndefined'](_0x2a3b75[_0xa2b3('0x4a')][_0x461cae['id']])){_0x2a3b75['deskAccounts'][_0x461cae['id']]=new DeskAccount(_0x461cae);}else{_0x2a3b75['mergeFromDatabase'](_0x2a3b75[_0xa2b3('0x4a')][_0x461cae['id']],_0x461cae);}}}return _0x2a3b75[_0xa2b3('0x4a')];};};Realtime[_0xa2b3('0x38')][_0xa2b3('0x4b')]=function(){var _0x10ed9f=this;return function(_0x513545){if(_0x513545){freeIsNotKey(_0x513545,_0x10ed9f[_0xa2b3('0x18')],'id');for(var _0x30f831=0x0,_0x5d6ae2={},_0x3794cc={};_0x30f831<_0x513545['length'];_0x30f831+=0x1){_0x5d6ae2=_0x513545[_0x30f831];if(_[_0xa2b3('0x3b')](_0x10ed9f[_0xa2b3('0x18')][_0x5d6ae2['id']])){_0x10ed9f[_0xa2b3('0x18')][_0x5d6ae2['id']]=new SugarcrmAccount(_0x5d6ae2);}else{_0x10ed9f['mergeFromDatabase'](_0x10ed9f[_0xa2b3('0x18')][_0x5d6ae2['id']],_0x5d6ae2);}}}return _0x10ed9f[_0xa2b3('0x18')];};};Realtime[_0xa2b3('0x38')]['initVtigerAccounts']=function(){var _0x4ea6ea=this;return function(_0x3c7820){if(_0x3c7820){freeIsNotKey(_0x3c7820,_0x4ea6ea['vtigerAccounts'],'id');for(var _0x2fc50d=0x0,_0x30e17c={},_0x4bc413={};_0x2fc50d<_0x3c7820[_0xa2b3('0x3a')];_0x2fc50d+=0x1){_0x30e17c=_0x3c7820[_0x2fc50d];if(_['isUndefined'](_0x4ea6ea[_0xa2b3('0x1a')][_0x30e17c['id']])){_0x4ea6ea[_0xa2b3('0x1a')][_0x30e17c['id']]=new VtigerAccount(_0x30e17c);}else{_0x4ea6ea[_0xa2b3('0x3d')](_0x4ea6ea['vtigerAccounts'][_0x30e17c['id']],_0x30e17c);}}}return _0x4ea6ea['vtigerAccounts'];};};Realtime[_0xa2b3('0x38')][_0xa2b3('0x4c')]=function(){var _0xe33df9=this;return function(_0x42bc19){if(_0x42bc19){freeIsNotKey(_0x42bc19,_0xe33df9[_0xa2b3('0x1b')],'id');for(var _0x5e92bd=0x0,_0x42e401={},_0x2ec07d={};_0x5e92bd<_0x42bc19[_0xa2b3('0x3a')];_0x5e92bd+=0x1){_0x42e401=_0x42bc19[_0x5e92bd];if(_['isUndefined'](_0xe33df9[_0xa2b3('0x1b')][_0x42e401['id']])){_0xe33df9[_0xa2b3('0x1b')][_0x42e401['id']]=new ServicenowAccount(_0x42e401);}else{_0xe33df9[_0xa2b3('0x3d')](_0xe33df9['servicenowAccounts'][_0x42e401['id']],_0x42e401);}}}return _0xe33df9[_0xa2b3('0x1b')];};};Realtime[_0xa2b3('0x38')][_0xa2b3('0x4d')]=function(){var _0x469626=this;return function(_0x3b8517){if(_0x3b8517){freeIsNotKey(_0x3b8517,_0x469626[_0xa2b3('0x1c')],'id');for(var _0x2a95c6=0x0,_0x3850c7={},_0x10e05f={};_0x2a95c6<_0x3b8517['length'];_0x2a95c6+=0x1){_0x3850c7=_0x3b8517[_0x2a95c6];if(_[_0xa2b3('0x3b')](_0x469626[_0xa2b3('0x1c')][_0x3850c7['id']])){_0x469626[_0xa2b3('0x1c')][_0x3850c7['id']]=new Dynamics365Account(_0x3850c7);}else{_0x469626['mergeFromDatabase'](_0x469626['dynamics365Accounts'][_0x3850c7['id']],_0x3850c7);}}}return _0x469626[_0xa2b3('0x1c')];};};Realtime['prototype'][_0xa2b3('0x4e')]=function(){var _0x223e26=this;return function(_0x5de6ee){if(_0x5de6ee){freeIsNotKey(_0x5de6ee,_0x223e26[_0xa2b3('0x1d')],'id');for(var _0x3280bc=0x0,_0x15f027={},_0x352787={};_0x3280bc<_0x5de6ee[_0xa2b3('0x3a')];_0x3280bc+=0x1){_0x15f027=_0x5de6ee[_0x3280bc];if(_['isUndefined'](_0x223e26[_0xa2b3('0x1d')][_0x15f027['id']])){_0x223e26[_0xa2b3('0x1d')][_0x15f027['id']]=new FreshsalesAccount(_0x15f027);}else{_0x223e26[_0xa2b3('0x3d')](_0x223e26[_0xa2b3('0x1d')][_0x15f027['id']],_0x15f027);}}}return _0x223e26[_0xa2b3('0x1d')];};};Realtime['prototype']['initVoiceQueueHopperHistory']=function(){var _0x102b1c=this;return function(_0x3d7e5f){for(var _0x479668=0x0;_0x479668<_0x3d7e5f[_0xa2b3('0x3a')];_0x479668+=0x1){_[_0xa2b3('0x4f')](_0x102b1c[_0xa2b3('0x10')][_0x3d7e5f[_0x479668]['name']],_0x3d7e5f[_0x479668]);}return _0x102b1c['voiceQueues'];};};Realtime[_0xa2b3('0x38')][_0xa2b3('0x50')]=function(){var _0x4c3179=this;return function(_0x6c63c0){clearVoiceQueues(_0x4c3179[_0xa2b3('0x10')]);if(_0x6c63c0){_0x6c63c0=_[_0xa2b3('0x51')](_0x6c63c0,_0xa2b3('0x52'));for(var _0x7eff0a in _0x6c63c0){if(_0x6c63c0[_0xa2b3('0x20')](_0x7eff0a)){var _0x5dabd4={};for(var _0x4c0f16=0x0;_0x4c0f16<_0x6c63c0[_0x7eff0a]['length'];_0x4c0f16+=0x1){var _0x460829=_0x6c63c0[_0x7eff0a][_0x4c0f16][_0xa2b3('0x53')];if(_0x4c3179[_0xa2b3('0x10')][_0x460829]){if(_0x6c63c0[_0x7eff0a][_0x4c0f16][_0xa2b3('0x54')]){_0x4c3179[_0xa2b3('0x10')][_0x460829][_0xa2b3('0x55')]+=0x1;}if(_0x6c63c0[_0x7eff0a][_0x4c0f16][_0xa2b3('0x56')]){_0x4c3179[_0xa2b3('0x10')][_0x460829][_0xa2b3('0x2d')]+=0x1;}_0x4c3179['voiceQueues'][_0x460829][_0xa2b3('0x28')]+=moment(_0x6c63c0[_0x7eff0a][_0x4c0f16][_0xa2b3('0x57')])['diff'](moment(_0x6c63c0[_0x7eff0a][_0x4c0f16][_0xa2b3('0x58')]),'seconds')||0x0;if(_0x4c0f16===_0x6c63c0[_0x7eff0a][_0xa2b3('0x3a')]-0x1){_0x4c3179[_0xa2b3('0x10')][_0x460829]['sumDuration']+=moment(_0x6c63c0[_0x7eff0a][_0x4c0f16][_0xa2b3('0x59')]||_0x6c63c0[_0x7eff0a][_0x4c0f16][_0xa2b3('0x5a')]||_0x6c63c0[_0x7eff0a][_0x4c0f16]['queuecallerexitAt'])[_0xa2b3('0x5b')](moment(_0x6c63c0[_0x7eff0a][_0x4c0f16]['queuecallerjoinAt']),'seconds')||0x0;_0x4c3179[_0xa2b3('0x10')][_0x460829][_0xa2b3('0x26')]+=0x1;if(_0x6c63c0[_0x7eff0a][_0x4c0f16]['queuecallercomplete']){_0x4c3179[_0xa2b3('0x10')][_0x460829][_0xa2b3('0x27')]+=0x1;_0x4c3179[_0xa2b3('0x10')][_0x460829]['sumBillable']+=moment(_0x6c63c0[_0x7eff0a][_0x4c0f16]['queuecallercompleteAt'])[_0xa2b3('0x5b')](moment(_0x6c63c0[_0x7eff0a][_0x4c0f16][_0xa2b3('0x57')]),_0xa2b3('0x5c'))||0x0;}}else{_0x4c3179[_0xa2b3('0x10')][_0x460829][_0xa2b3('0x5d')]+=_0x4c3179[_0xa2b3('0x10')][_0x460829][_0xa2b3('0x28')]||0x0;}}}}}}return _0x4c3179['voiceQueues'];};};Realtime['prototype']['initVoiceCallReports']=function(){var _0x12065d=this;return function(_0x227a86){clearVoiceCallReports(_0x12065d[_0xa2b3('0x13')]);if(_0x227a86){for(var _0x5d935a=0x0;_0x5d935a<_0x227a86[_0xa2b3('0x3a')];_0x5d935a+=0x1){_0x12065d[_0xa2b3('0x13')][_0xa2b3('0x26')]+=0x1;_0x12065d[_0xa2b3('0x13')][_0xa2b3('0x5d')]+=_0x227a86[_0x5d935a][_0xa2b3('0x5e')];if(_0x227a86[_0x5d935a][_0xa2b3('0x5f')]===_0xa2b3('0x60')){_0x12065d[_0xa2b3('0x13')]['answered']+=0x1;_0x12065d[_0xa2b3('0x13')][_0xa2b3('0x28')]+=_0x227a86[_0x5d935a]['duration']-_0x227a86[_0x5d935a][_0xa2b3('0x61')]||0x0;_0x12065d[_0xa2b3('0x13')][_0xa2b3('0x29')]+=_0x227a86[_0x5d935a][_0xa2b3('0x61')];}}}return _0x12065d['outbound'];};};Realtime[_0xa2b3('0x38')]['initCampaigns']=function(){var _0x213060=this;return function(_0x2d45ee){if(_0x2d45ee){freeIsNotKey(_0x2d45ee,_0x213060['campaigns'],_0xa2b3('0x23'));for(var _0x389dd8=0x0,_0x2c63eb={};_0x389dd8<_0x2d45ee[_0xa2b3('0x3a')];_0x389dd8+=0x1){_0x2c63eb=_0x2d45ee[_0x389dd8];if(_[_0xa2b3('0x3b')](_0x213060[_0xa2b3('0x12')][_0x2c63eb[_0xa2b3('0x23')]])){_0x213060[_0xa2b3('0x12')][_0x2c63eb[_0xa2b3('0x23')]]=new Campaign(_0x2c63eb);}else{_0x213060['mergeFromDatabase'](_0x213060[_0xa2b3('0x12')][_0x2c63eb['name']],_0x2c63eb);_0x213060[_0xa2b3('0x12')][_0x2c63eb[_0xa2b3('0x23')]][_0xa2b3('0x62')]=_0x2c63eb['SquareProject']?_0x2c63eb[_0xa2b3('0x63')][_0xa2b3('0x23')]:undefined;}}}return _0x213060['campaigns'];};};Realtime['prototype'][_0xa2b3('0x64')]=function(){var _0x45e87a=this;return function(_0x5d1586){if(_0x5d1586){freeIsNotKey(_0x5d1586,_0x45e87a[_0xa2b3('0x14')],'id');for(var _0xc92aef=0x0,_0x49c3c9={};_0xc92aef<_0x5d1586[_0xa2b3('0x3a')];_0xc92aef+=0x1){_0x49c3c9=_0x5d1586[_0xc92aef];if(_[_0xa2b3('0x3b')](_0x45e87a[_0xa2b3('0x14')][_0x49c3c9['id']])){_0x45e87a[_0xa2b3('0x14')][_0x49c3c9['id']]=new VoiceExtension(_0x49c3c9);}else{_0x45e87a[_0xa2b3('0x3d')](_0x45e87a[_0xa2b3('0x14')][_0x49c3c9['id']],_0x49c3c9);}}}return _0x45e87a[_0xa2b3('0x14')];};};Realtime['prototype'][_0xa2b3('0x65')]=function(){var _0x244526=this;return function(_0x585c7a){clearCampaigns(_0x244526[_0xa2b3('0x12')]);for(var _0x5eac8e=0x0;_0x5eac8e<_0x585c7a[_0xa2b3('0x3a')];_0x5eac8e+=0x1){_[_0xa2b3('0x4f')](_0x244526[_0xa2b3('0x12')][_0x585c7a[_0x5eac8e]['name']],_0x585c7a[_0x5eac8e]);}return _0x244526[_0xa2b3('0x12')];};};Realtime[_0xa2b3('0x38')]['initFaxAccounts']=function(){var _0x4b79d3=this;return function(_0x4ad08b){if(_0x4ad08b){freeIsNotKey(_0x4ad08b,_0x4b79d3[_0xa2b3('0x1e')],'id');for(var _0x1ac079=0x0,_0x5aef2d={},_0x59ef7b={};_0x1ac079<_0x4ad08b[_0xa2b3('0x3a')];_0x1ac079+=0x1){_0x5aef2d=_0x4ad08b[_0x1ac079];if(_[_0xa2b3('0x3b')](_0x4b79d3[_0xa2b3('0x1e')][_0x5aef2d['id']])){_0x4b79d3[_0xa2b3('0x1e')][_0x5aef2d['id']]=new FaxAccount(_0x5aef2d);}else{_0x4b79d3[_0xa2b3('0x3d')](_0x4b79d3[_0xa2b3('0x1e')][_0x5aef2d['id']],_0x5aef2d);}}}return _0x4b79d3['faxAccounts'];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x8164=['initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initServicenowAccounts','servicenowAccounts','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerabandon','queuecallerleaveAt','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallercomplete','diff','duration','disposition','billableseconds','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','util','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','telephones','trunks','voiceQueues','campaigns','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','total','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','unmanaged','abandoned','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundAnswerAgiCallsDay','queueStatusComplete','mergeFromDatabase','prototype','initAgents','length','isUndefined','initTelephones','initTrunks','initVoiceQueues','initTriggers','triggers','initTemplates','templates'];(function(_0x168127,_0x59cea1){var _0x4c99ad=function(_0x4ab3f2){while(--_0x4ab3f2){_0x168127['push'](_0x168127['shift']());}};_0x4c99ad(++_0x59cea1);}(_0x8164,0x1d3));var _0x4816=function(_0x1dbbce,_0x48410a){_0x1dbbce=_0x1dbbce-0x0;var _0x30b20d=_0x8164[_0x1dbbce];return _0x30b20d;};'use strict';var BPromise=require('bluebird');var util=require(_0x4816('0x0'));var _=require('lodash');var moment=require(_0x4816('0x1'));var Agent=require(_0x4816('0x2'));var Telephone=require(_0x4816('0x3'));var Trunk=require(_0x4816('0x4'));var VoiceQueue=require(_0x4816('0x5'));var Trigger=require(_0x4816('0x6'));var Template=require(_0x4816('0x7'));var Campaign=require('../model/campaign');var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x4816('0x8'));var SalesforceAccount=require(_0x4816('0x9'));var FreshdeskAccount=require(_0x4816('0xa'));var SugarcrmAccount=require(_0x4816('0xb'));var ZohoAccount=require(_0x4816('0xc'));var DeskAccount=require(_0x4816('0xd'));var VtigerAccount=require(_0x4816('0xe'));var ServicenowAccount=require(_0x4816('0xf'));var Dynamics365Account=require(_0x4816('0x10'));var FreshsalesAccount=require(_0x4816('0x11'));var FaxAccount=require(_0x4816('0x12'));var Realtime=function(){this[_0x4816('0x13')]={};this[_0x4816('0x14')]={};this[_0x4816('0x15')]={};this[_0x4816('0x16')]={};this['triggers']={};this[_0x4816('0x17')]={};this['templates']={};this[_0x4816('0x18')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x4816('0x19')]={};this[_0x4816('0x1a')]={};this[_0x4816('0x1b')]={};this[_0x4816('0x1c')]={};this[_0x4816('0x1d')]={};this['settings']={};this[_0x4816('0x1e')]={};this[_0x4816('0x1f')]={};this[_0x4816('0x20')]={};this[_0x4816('0x21')]={};this[_0x4816('0x22')]={};this[_0x4816('0x23')]={};this['vtigerAccounts']={};this['servicenowAccounts']={};this[_0x4816('0x24')]={};this[_0x4816('0x25')]={};this[_0x4816('0x26')]={};};function freeIsNotKey(_0x14988c,_0x59f9e8,_0x26c2ee){var _0x351a52=_[_0x4816('0x27')](_0x14988c,function(_0x5ecb14,_0x4aab87){return _0x5ecb14[_0x26c2ee];});for(var _0x353f69 in _0x59f9e8){if(_0x59f9e8[_0x4816('0x28')](_0x353f69)){if(!_0x351a52[_0x353f69]){delete _0x59f9e8[_0x353f69];}}}}function freeIsNotKeySip(_0x421cd6,_0x45c5be){var _0x157d95=_[_0x4816('0x27')](_0x421cd6,function(_0xeb7096,_0x5c2a62){return util[_0x4816('0x29')](_0x4816('0x2a'),_0xeb7096[_0x4816('0x2b')]);});for(var _0x55fd49 in _0x45c5be){if(_0x45c5be[_0x4816('0x28')](_0x55fd49)){if(!_0x157d95[_0x55fd49]){delete _0x45c5be[_0x55fd49];}}}}function freeIsNotKeyAgent(_0x27ec05,_0x3c20dd){var _0x50d94f=_[_0x4816('0x27')](_0x27ec05,function(_0x40f2a6,_0x20a3d4){var _0x526e99=_[_0x4816('0x2c')](_0x40f2a6[_0x4816('0x2d')])?util[_0x4816('0x29')](_0x4816('0x2a'),_0x40f2a6[_0x4816('0x2b')]):_0x40f2a6['interface'];return _0x526e99;});for(var _0x40e973 in _0x3c20dd){if(_0x3c20dd[_0x4816('0x28')](_0x40e973)){if(!_0x50d94f[_0x40e973]){delete _0x3c20dd[_0x40e973];}}}}function clearVoiceCallReports(_0x1d3850){_0x1d3850[_0x4816('0x2e')]=0x0;_0x1d3850[_0x4816('0x2f')]=0x0;_0x1d3850[_0x4816('0x30')]=0x0;_0x1d3850[_0x4816('0x31')]=0x0;_0x1d3850[_0x4816('0x32')]=0x0;}function clearCampaigns(_0x3c20ca){if(!_[_0x4816('0x33')](_0x3c20ca)){for(var _0x581f7e in _0x3c20ca){if(_0x3c20ca['hasOwnProperty'](_0x581f7e)){_0x3c20ca[_0x581f7e][_0x4816('0x34')]=0x0;_0x3c20ca[_0x581f7e][_0x4816('0x35')]=0x0;}}}}function clearVoiceQueues(_0x3bf9da){if(!_['isEmpty'](_0x3bf9da)){for(var _0x256e10 in _0x3bf9da){if(_0x3bf9da[_0x4816('0x28')](_0x256e10)){_0x3bf9da[_0x256e10]['total']=0x0;_0x3bf9da[_0x256e10]['answered']=0x0;_0x3bf9da[_0x256e10][_0x4816('0x36')]=0x0;_0x3bf9da[_0x256e10][_0x4816('0x37')]=0x0;_0x3bf9da[_0x256e10][_0x4816('0x30')]=0x0;_0x3bf9da[_0x256e10]['sumDuration']=0x0;_0x3bf9da[_0x256e10][_0x4816('0x32')]=0x0;_0x3bf9da[_0x256e10]['outboundAnswerAgiCallsDay']=0x0;_0x3bf9da[_0x256e10][_0x4816('0x38')]=0x0;_0x3bf9da[_0x256e10]['outboundBusyCallsDay']=0x0;_0x3bf9da[_0x256e10][_0x4816('0x39')]=0x0;_0x3bf9da[_0x256e10][_0x4816('0x3a')]=0x0;_0x3bf9da[_0x256e10]['outboundUnknownCallsDay']=0x0;_0x3bf9da[_0x256e10][_0x4816('0x3b')]=0x0;_0x3bf9da[_0x256e10][_0x4816('0x3c')]=0x0;_0x3bf9da[_0x256e10][_0x4816('0x3d')]=0x0;_0x3bf9da[_0x256e10][_0x4816('0x3e')]=0x0;_0x3bf9da[_0x256e10]['outboundRejectCallsDay']=0x0;_0x3bf9da[_0x256e10][_0x4816('0x3f')]=0x0;_0x3bf9da[_0x256e10][_0x4816('0x40')]=0x0;_0x3bf9da[_0x256e10]['outboundAnswerCallsDay']=0x0;_0x3bf9da[_0x256e10][_0x4816('0x41')]=!![];}}}}Realtime['prototype'][_0x4816('0x42')]=function(_0x89e41c,_0x519bc1){for(var _0x4cf4e6 in _0x519bc1){if(_0x89e41c[_0x4816('0x28')](_0x4cf4e6)){_0x89e41c[_0x4cf4e6]=_0x519bc1[_0x4cf4e6];}}};Realtime[_0x4816('0x43')][_0x4816('0x44')]=function(){var _0x33d4ea=this;return function(_0x3ad6ce){if(_0x3ad6ce){freeIsNotKeyAgent(_0x3ad6ce,_0x33d4ea['agents']);for(var _0x1e6a44=0x0,_0x2fd480={},_0x343cf7={};_0x1e6a44<_0x3ad6ce[_0x4816('0x45')];_0x1e6a44+=0x1){_0x2fd480=_0x3ad6ce[_0x1e6a44];var _0x3b0594=_['isNil'](_0x2fd480[_0x4816('0x2d')])?util['format'](_0x4816('0x2a'),_0x2fd480[_0x4816('0x2b')]):_0x2fd480[_0x4816('0x2d')];if(_[_0x4816('0x46')](_0x33d4ea['agents'][_0x3b0594])){_0x33d4ea[_0x4816('0x13')][_0x3b0594]=new Agent(_0x2fd480);}else{_0x33d4ea[_0x4816('0x42')](_0x33d4ea[_0x4816('0x13')][_0x3b0594],_0x2fd480);}}}return _0x33d4ea['agents'];};};Realtime['prototype'][_0x4816('0x47')]=function(){var _0x4c0783=this;return function(_0x577df5){if(_0x577df5){freeIsNotKeySip(_0x577df5,_0x4c0783['telephones']);for(var _0x5f43da=0x0,_0x5da33c={},_0x10c14a={};_0x5f43da<_0x577df5[_0x4816('0x45')];_0x5f43da+=0x1){_0x5da33c=_0x577df5[_0x5f43da];if(_[_0x4816('0x46')](_0x4c0783[_0x4816('0x14')][util[_0x4816('0x29')](_0x4816('0x2a'),_0x5da33c['name'])])){_0x4c0783[_0x4816('0x14')][util[_0x4816('0x29')]('SIP/%s',_0x5da33c[_0x4816('0x2b')])]=new Telephone(_0x5da33c);}else{_0x4c0783[_0x4816('0x42')](_0x4c0783[_0x4816('0x14')][util[_0x4816('0x29')]('SIP/%s',_0x5da33c['name'])],_0x5da33c);}}}return _0x4c0783[_0x4816('0x14')];};};Realtime[_0x4816('0x43')][_0x4816('0x48')]=function(){var _0x3982e4=this;return function(_0x39e980){if(_0x39e980){freeIsNotKeySip(_0x39e980,_0x3982e4[_0x4816('0x15')]);for(var _0x1495cb=0x0,_0x33bb8d={},_0x2abbdd={};_0x1495cb<_0x39e980[_0x4816('0x45')];_0x1495cb+=0x1){_0x33bb8d=_0x39e980[_0x1495cb];if(_[_0x4816('0x46')](_0x3982e4[_0x4816('0x15')][util['format'](_0x4816('0x2a'),_0x33bb8d['name'])])){_0x3982e4['trunks'][util[_0x4816('0x29')](_0x4816('0x2a'),_0x33bb8d[_0x4816('0x2b')])]=new Trunk(_0x33bb8d);}else{_0x3982e4['mergeFromDatabase'](_0x3982e4['trunks'][util[_0x4816('0x29')](_0x4816('0x2a'),_0x33bb8d[_0x4816('0x2b')])],_0x33bb8d);}}}return _0x3982e4[_0x4816('0x15')];};};Realtime['prototype'][_0x4816('0x49')]=function(){var _0x5d215c=this;return function(_0x6827ad){if(_0x6827ad){freeIsNotKey(_0x6827ad,_0x5d215c['voiceQueues'],_0x4816('0x2b'));for(var _0xe13c76=0x0,_0xc42c31={},_0x4f222c={};_0xe13c76<_0x6827ad[_0x4816('0x45')];_0xe13c76+=0x1){_0xc42c31=_0x6827ad[_0xe13c76];if(_['isUndefined'](_0x5d215c[_0x4816('0x16')][_0xc42c31[_0x4816('0x2b')]])){_0x5d215c['voiceQueues'][_0xc42c31[_0x4816('0x2b')]]=new VoiceQueue(_0xc42c31);}else{_0x5d215c['mergeFromDatabase'](_0x5d215c[_0x4816('0x16')][_0xc42c31[_0x4816('0x2b')]],_0xc42c31);}}}return _0x5d215c[_0x4816('0x16')];};};Realtime[_0x4816('0x43')][_0x4816('0x4a')]=function(){var _0x2a07d0=this;return function(_0xf123fb){if(_0xf123fb){freeIsNotKey(_0xf123fb,_0x2a07d0[_0x4816('0x4b')],'id');for(var _0x475c1b=0x0,_0x2d0214={},_0x975fa4={};_0x475c1b<_0xf123fb['length'];_0x475c1b+=0x1){_0x2d0214=_0xf123fb[_0x475c1b];if(_[_0x4816('0x46')](_0x2a07d0[_0x4816('0x4b')][_0x2d0214['id']])){_0x2a07d0['triggers'][_0x2d0214['id']]=new Trigger(_0x2d0214);}else{_0x2a07d0[_0x4816('0x42')](_0x2a07d0[_0x4816('0x4b')][_0x2d0214['id']],_0x2d0214);}}}return _0x2a07d0[_0x4816('0x4b')];};};Realtime[_0x4816('0x43')][_0x4816('0x4c')]=function(){var _0x4d8797=this;return function(_0x5d74d3){if(_0x5d74d3){freeIsNotKey(_0x5d74d3,_0x4d8797[_0x4816('0x4d')],'id');for(var _0x557687=0x0,_0x52d6b1={},_0x581e26={};_0x557687<_0x5d74d3[_0x4816('0x45')];_0x557687+=0x1){_0x52d6b1=_0x5d74d3[_0x557687];if(_['isUndefined'](_0x4d8797[_0x4816('0x4d')][_0x52d6b1['id']])){_0x4d8797[_0x4816('0x4d')][_0x52d6b1['id']]=new Template(_0x52d6b1);}else{_0x4d8797[_0x4816('0x42')](_0x4d8797['templates'][_0x52d6b1['id']],_0x52d6b1);}}}return _0x4d8797[_0x4816('0x4d')];};};Realtime['prototype']['initZendeskAccounts']=function(){var _0x6d1b2d=this;return function(_0x257b87){if(_0x257b87){freeIsNotKey(_0x257b87,_0x6d1b2d[_0x4816('0x1e')],'id');for(var _0x161f5a=0x0,_0xa74b0b={},_0x2031e2={};_0x161f5a<_0x257b87['length'];_0x161f5a+=0x1){_0xa74b0b=_0x257b87[_0x161f5a];if(_['isUndefined'](_0x6d1b2d[_0x4816('0x1e')][_0xa74b0b['id']])){_0x6d1b2d['zendeskAccounts'][_0xa74b0b['id']]=new ZendeskAccount(_0xa74b0b);}else{_0x6d1b2d[_0x4816('0x42')](_0x6d1b2d[_0x4816('0x1e')][_0xa74b0b['id']],_0xa74b0b);}}}return _0x6d1b2d[_0x4816('0x1e')];};};Realtime[_0x4816('0x43')][_0x4816('0x4e')]=function(){var _0x15c806=this;return function(_0x45f78a){if(_0x45f78a){freeIsNotKey(_0x45f78a,_0x15c806[_0x4816('0x1f')],'id');for(var _0x4068ea=0x0,_0xc110a3={},_0xbd8496={};_0x4068ea<_0x45f78a[_0x4816('0x45')];_0x4068ea+=0x1){_0xc110a3=_0x45f78a[_0x4068ea];if(_[_0x4816('0x46')](_0x15c806['salesforceAccounts'][_0xc110a3['id']])){_0x15c806['salesforceAccounts'][_0xc110a3['id']]=new SalesforceAccount(_0xc110a3);}else{_0x15c806['mergeFromDatabase'](_0x15c806[_0x4816('0x1f')][_0xc110a3['id']],_0xc110a3);}}}return _0x15c806[_0x4816('0x1f')];};};Realtime['prototype'][_0x4816('0x4f')]=function(){var _0x5bff43=this;return function(_0x486bd4){if(_0x486bd4){freeIsNotKey(_0x486bd4,_0x5bff43[_0x4816('0x21')],'id');for(var _0x23aa64=0x0,_0x9d219d={},_0x4efc60={};_0x23aa64<_0x486bd4[_0x4816('0x45')];_0x23aa64+=0x1){_0x9d219d=_0x486bd4[_0x23aa64];if(_['isUndefined'](_0x5bff43[_0x4816('0x21')][_0x9d219d['id']])){_0x5bff43[_0x4816('0x21')][_0x9d219d['id']]=new FreshdeskAccount(_0x9d219d);}else{_0x5bff43[_0x4816('0x42')](_0x5bff43[_0x4816('0x21')][_0x9d219d['id']],_0x9d219d);}}}return _0x5bff43[_0x4816('0x21')];};};Realtime['prototype'][_0x4816('0x50')]=function(){var _0x16d4f8=this;return function(_0x44003f){if(_0x44003f){freeIsNotKey(_0x44003f,_0x16d4f8['zohoAccounts'],'id');for(var _0x44597d=0x0,_0x2a8784={},_0x5a5630={};_0x44597d<_0x44003f[_0x4816('0x45')];_0x44597d+=0x1){_0x2a8784=_0x44003f[_0x44597d];if(_['isUndefined'](_0x16d4f8['zohoAccounts'][_0x2a8784['id']])){_0x16d4f8[_0x4816('0x22')][_0x2a8784['id']]=new ZohoAccount(_0x2a8784);}else{_0x16d4f8[_0x4816('0x42')](_0x16d4f8[_0x4816('0x22')][_0x2a8784['id']],_0x2a8784);}}}return _0x16d4f8[_0x4816('0x22')];};};Realtime[_0x4816('0x43')][_0x4816('0x51')]=function(){var _0x25491f=this;return function(_0x258e1e){if(_0x258e1e){freeIsNotKey(_0x258e1e,_0x25491f[_0x4816('0x23')],'id');for(var _0x4ffc75=0x0,_0x23a909={},_0x1a01af={};_0x4ffc75<_0x258e1e[_0x4816('0x45')];_0x4ffc75+=0x1){_0x23a909=_0x258e1e[_0x4ffc75];if(_['isUndefined'](_0x25491f['deskAccounts'][_0x23a909['id']])){_0x25491f[_0x4816('0x23')][_0x23a909['id']]=new DeskAccount(_0x23a909);}else{_0x25491f[_0x4816('0x42')](_0x25491f[_0x4816('0x23')][_0x23a909['id']],_0x23a909);}}}return _0x25491f['deskAccounts'];};};Realtime[_0x4816('0x43')][_0x4816('0x52')]=function(){var _0x11cb24=this;return function(_0x5e95c4){if(_0x5e95c4){freeIsNotKey(_0x5e95c4,_0x11cb24[_0x4816('0x20')],'id');for(var _0x212422=0x0,_0x52a273={},_0x46bce4={};_0x212422<_0x5e95c4[_0x4816('0x45')];_0x212422+=0x1){_0x52a273=_0x5e95c4[_0x212422];if(_['isUndefined'](_0x11cb24[_0x4816('0x20')][_0x52a273['id']])){_0x11cb24[_0x4816('0x20')][_0x52a273['id']]=new SugarcrmAccount(_0x52a273);}else{_0x11cb24[_0x4816('0x42')](_0x11cb24[_0x4816('0x20')][_0x52a273['id']],_0x52a273);}}}return _0x11cb24[_0x4816('0x20')];};};Realtime['prototype'][_0x4816('0x53')]=function(){var _0x3f2568=this;return function(_0xf95de){if(_0xf95de){freeIsNotKey(_0xf95de,_0x3f2568[_0x4816('0x54')],'id');for(var _0x4b1d69=0x0,_0xa8778b={},_0x35d6bb={};_0x4b1d69<_0xf95de[_0x4816('0x45')];_0x4b1d69+=0x1){_0xa8778b=_0xf95de[_0x4b1d69];if(_[_0x4816('0x46')](_0x3f2568[_0x4816('0x54')][_0xa8778b['id']])){_0x3f2568[_0x4816('0x54')][_0xa8778b['id']]=new VtigerAccount(_0xa8778b);}else{_0x3f2568['mergeFromDatabase'](_0x3f2568[_0x4816('0x54')][_0xa8778b['id']],_0xa8778b);}}}return _0x3f2568['vtigerAccounts'];};};Realtime['prototype'][_0x4816('0x55')]=function(){var _0x47f088=this;return function(_0x178c54){if(_0x178c54){freeIsNotKey(_0x178c54,_0x47f088['servicenowAccounts'],'id');for(var _0x4d737d=0x0,_0x2774b2={},_0x554d1b={};_0x4d737d<_0x178c54['length'];_0x4d737d+=0x1){_0x2774b2=_0x178c54[_0x4d737d];if(_[_0x4816('0x46')](_0x47f088['servicenowAccounts'][_0x2774b2['id']])){_0x47f088[_0x4816('0x56')][_0x2774b2['id']]=new ServicenowAccount(_0x2774b2);}else{_0x47f088['mergeFromDatabase'](_0x47f088[_0x4816('0x56')][_0x2774b2['id']],_0x2774b2);}}}return _0x47f088[_0x4816('0x56')];};};Realtime[_0x4816('0x43')]['initDynamics365Accounts']=function(){var _0x423980=this;return function(_0x3af0eb){if(_0x3af0eb){freeIsNotKey(_0x3af0eb,_0x423980['dynamics365Accounts'],'id');for(var _0x42e3ad=0x0,_0x2702ec={},_0x39b298={};_0x42e3ad<_0x3af0eb['length'];_0x42e3ad+=0x1){_0x2702ec=_0x3af0eb[_0x42e3ad];if(_[_0x4816('0x46')](_0x423980[_0x4816('0x24')][_0x2702ec['id']])){_0x423980[_0x4816('0x24')][_0x2702ec['id']]=new Dynamics365Account(_0x2702ec);}else{_0x423980[_0x4816('0x42')](_0x423980[_0x4816('0x24')][_0x2702ec['id']],_0x2702ec);}}}return _0x423980['dynamics365Accounts'];};};Realtime[_0x4816('0x43')]['initFreshsalesAccounts']=function(){var _0x4d022e=this;return function(_0x1c6a29){if(_0x1c6a29){freeIsNotKey(_0x1c6a29,_0x4d022e[_0x4816('0x25')],'id');for(var _0x3e67d5=0x0,_0x28c420={},_0x4e8d2d={};_0x3e67d5<_0x1c6a29[_0x4816('0x45')];_0x3e67d5+=0x1){_0x28c420=_0x1c6a29[_0x3e67d5];if(_[_0x4816('0x46')](_0x4d022e[_0x4816('0x25')][_0x28c420['id']])){_0x4d022e[_0x4816('0x25')][_0x28c420['id']]=new FreshsalesAccount(_0x28c420);}else{_0x4d022e[_0x4816('0x42')](_0x4d022e['freshsalesAccounts'][_0x28c420['id']],_0x28c420);}}}return _0x4d022e['freshsalesAccounts'];};};Realtime[_0x4816('0x43')]['initVoiceQueueHopperHistory']=function(){var _0x177aef=this;return function(_0x53b61c){for(var _0x3b02da=0x0;_0x3b02da<_0x53b61c['length'];_0x3b02da+=0x1){_[_0x4816('0x57')](_0x177aef[_0x4816('0x16')][_0x53b61c[_0x3b02da][_0x4816('0x2b')]],_0x53b61c[_0x3b02da]);}return _0x177aef[_0x4816('0x16')];};};Realtime[_0x4816('0x43')][_0x4816('0x58')]=function(){var _0x292da5=this;return function(_0x269c30){clearVoiceQueues(_0x292da5[_0x4816('0x16')]);if(_0x269c30){_0x269c30=_[_0x4816('0x59')](_0x269c30,_0x4816('0x5a'));for(var _0x53dac8 in _0x269c30){if(_0x269c30[_0x4816('0x28')](_0x53dac8)){var _0x446d52={};for(var _0x3145f4=0x0;_0x3145f4<_0x269c30[_0x53dac8][_0x4816('0x45')];_0x3145f4+=0x1){var _0x223e1f=_0x269c30[_0x53dac8][_0x3145f4][_0x4816('0x5b')];if(_0x292da5['voiceQueues'][_0x223e1f]){if(_0x269c30[_0x53dac8][_0x3145f4]['queuecallerexit']){_0x292da5['voiceQueues'][_0x223e1f][_0x4816('0x36')]+=0x1;}if(_0x269c30[_0x53dac8][_0x3145f4][_0x4816('0x5c')]){_0x292da5[_0x4816('0x16')][_0x223e1f][_0x4816('0x37')]+=0x1;}_0x292da5[_0x4816('0x16')][_0x223e1f][_0x4816('0x30')]+=moment(_0x269c30[_0x53dac8][_0x3145f4][_0x4816('0x5d')])['diff'](moment(_0x269c30[_0x53dac8][_0x3145f4][_0x4816('0x5e')]),_0x4816('0x5f'))||0x0;if(_0x3145f4===_0x269c30[_0x53dac8][_0x4816('0x45')]-0x1){_0x292da5['voiceQueues'][_0x223e1f][_0x4816('0x31')]+=moment(_0x269c30[_0x53dac8][_0x3145f4][_0x4816('0x60')]||_0x269c30[_0x53dac8][_0x3145f4][_0x4816('0x61')]||_0x269c30[_0x53dac8][_0x3145f4]['queuecallerexitAt'])['diff'](moment(_0x269c30[_0x53dac8][_0x3145f4][_0x4816('0x5e')]),_0x4816('0x5f'))||0x0;_0x292da5[_0x4816('0x16')][_0x223e1f][_0x4816('0x2e')]+=0x1;if(_0x269c30[_0x53dac8][_0x3145f4][_0x4816('0x62')]){_0x292da5[_0x4816('0x16')][_0x223e1f][_0x4816('0x2f')]+=0x1;_0x292da5[_0x4816('0x16')][_0x223e1f][_0x4816('0x32')]+=moment(_0x269c30[_0x53dac8][_0x3145f4][_0x4816('0x60')])[_0x4816('0x63')](moment(_0x269c30[_0x53dac8][_0x3145f4][_0x4816('0x5d')]),_0x4816('0x5f'))||0x0;}}else{_0x292da5[_0x4816('0x16')][_0x223e1f]['sumDuration']+=_0x292da5[_0x4816('0x16')][_0x223e1f][_0x4816('0x30')]||0x0;}}}}}}return _0x292da5['voiceQueues'];};};Realtime[_0x4816('0x43')]['initVoiceCallReports']=function(){var _0xf62be9=this;return function(_0x1767ad){clearVoiceCallReports(_0xf62be9['outbound']);if(_0x1767ad){for(var _0x2d16b7=0x0;_0x2d16b7<_0x1767ad[_0x4816('0x45')];_0x2d16b7+=0x1){_0xf62be9[_0x4816('0x18')][_0x4816('0x2e')]+=0x1;_0xf62be9['outbound'][_0x4816('0x31')]+=_0x1767ad[_0x2d16b7][_0x4816('0x64')];if(_0x1767ad[_0x2d16b7][_0x4816('0x65')]==='ANSWERED'){_0xf62be9[_0x4816('0x18')][_0x4816('0x2f')]+=0x1;_0xf62be9[_0x4816('0x18')][_0x4816('0x30')]+=_0x1767ad[_0x2d16b7][_0x4816('0x64')]-_0x1767ad[_0x2d16b7][_0x4816('0x66')]||0x0;_0xf62be9[_0x4816('0x18')][_0x4816('0x32')]+=_0x1767ad[_0x2d16b7][_0x4816('0x66')];}}}return _0xf62be9['outbound'];};};Realtime['prototype']['initCampaigns']=function(){var _0x15355d=this;return function(_0x2968ea){if(_0x2968ea){freeIsNotKey(_0x2968ea,_0x15355d[_0x4816('0x17')],_0x4816('0x2b'));for(var _0x4ddfb0=0x0,_0x55bea6={};_0x4ddfb0<_0x2968ea[_0x4816('0x45')];_0x4ddfb0+=0x1){_0x55bea6=_0x2968ea[_0x4ddfb0];if(_['isUndefined'](_0x15355d[_0x4816('0x17')][_0x55bea6[_0x4816('0x2b')]])){_0x15355d[_0x4816('0x17')][_0x55bea6[_0x4816('0x2b')]]=new Campaign(_0x55bea6);}else{_0x15355d[_0x4816('0x42')](_0x15355d[_0x4816('0x17')][_0x55bea6[_0x4816('0x2b')]],_0x55bea6);_0x15355d[_0x4816('0x17')][_0x55bea6[_0x4816('0x2b')]][_0x4816('0x67')]=_0x55bea6[_0x4816('0x68')]?_0x55bea6['SquareProject'][_0x4816('0x2b')]:undefined;}}}return _0x15355d['campaigns'];};};Realtime['prototype'][_0x4816('0x69')]=function(){var _0x4a71de=this;return function(_0x126d69){if(_0x126d69){freeIsNotKey(_0x126d69,_0x4a71de[_0x4816('0x19')],'id');for(var _0x2c3694=0x0,_0x2bc8ee={};_0x2c3694<_0x126d69[_0x4816('0x45')];_0x2c3694+=0x1){_0x2bc8ee=_0x126d69[_0x2c3694];if(_[_0x4816('0x46')](_0x4a71de[_0x4816('0x19')][_0x2bc8ee['id']])){_0x4a71de[_0x4816('0x19')][_0x2bc8ee['id']]=new VoiceExtension(_0x2bc8ee);}else{_0x4a71de['mergeFromDatabase'](_0x4a71de[_0x4816('0x19')][_0x2bc8ee['id']],_0x2bc8ee);}}}return _0x4a71de[_0x4816('0x19')];};};Realtime[_0x4816('0x43')][_0x4816('0x6a')]=function(){var _0x59cd22=this;return function(_0x1708a9){clearCampaigns(_0x59cd22[_0x4816('0x17')]);for(var _0x1486a4=0x0;_0x1486a4<_0x1708a9[_0x4816('0x45')];_0x1486a4+=0x1){_[_0x4816('0x57')](_0x59cd22[_0x4816('0x17')][_0x1708a9[_0x1486a4][_0x4816('0x2b')]],_0x1708a9[_0x1486a4]);}return _0x59cd22[_0x4816('0x17')];};};Realtime['prototype'][_0x4816('0x6b')]=function(){var _0x16cae7=this;return function(_0x50d822){if(_0x50d822){freeIsNotKey(_0x50d822,_0x16cae7[_0x4816('0x26')],'id');for(var _0x28b733=0x0,_0x15e108={},_0x87f0e9={};_0x28b733<_0x50d822[_0x4816('0x45')];_0x28b733+=0x1){_0x15e108=_0x50d822[_0x28b733];if(_[_0x4816('0x46')](_0x16cae7[_0x4816('0x26')][_0x15e108['id']])){_0x16cae7[_0x4816('0x26')][_0x15e108['id']]=new FaxAccount(_0x15e108);}else{_0x16cae7[_0x4816('0x42')](_0x16cae7[_0x4816('0x26')][_0x15e108['id']],_0x15e108);}}}return _0x16cae7[_0x4816('0x26')];};};module[_0x4816('0x6c')]=Realtime;
\ No newline at end of file
index 73fe2d6..e6648b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85a7=['type','dialer','lastapplication','queue','lastdata','from-voip-provider','callerid','context','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','channel','disposition','connectedlinenum','transfers','linkedid','transfereelinkedid','uniqueid','monitor','monitors','filename','createdAt','connectedlinename','membername','xcally-motion-dialer','isArray','voiceDialReport','startsWith','indexOf','mobile','phone','substring','lastIndexOf','transfererlinkedid','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceCallReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','disabled','bind','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','find','accountcode','name','isNil','format','SIP/%s','voiceQueueReport','length','findAgent','assigned','lastAssignedTo','interface','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitAt','create','match','destination','exten'];(function(_0x37023c,_0x298013){var _0x108052=function(_0x8b2037){while(--_0x8b2037){_0x37023c['push'](_0x37023c['shift']());}};_0x108052(++_0x298013);}(_0x85a7,0x11d));var _0x785a=function(_0x5af30c,_0x2c43df){_0x5af30c=_0x5af30c-0x0;var _0x39a5b4=_0x85a7[_0x5af30c];return _0x39a5b4;};'use strict';var _=require(_0x785a('0x0'));var moment=require(_0x785a('0x1'));var util=require(_0x785a('0x2'));var config=require(_0x785a('0x3'));var ami=require(_0x785a('0x4'));var RpcVoiceAgentReport=require(_0x785a('0x5'));var RpcVoiceCallReport=require(_0x785a('0x6'));var RpcVoiceDialReport=require(_0x785a('0x7'));var RpcMemberReport=require(_0x785a('0x8'));var RpcVoiceQueueReport=require(_0x785a('0x9'));var RpcVoiceRecording=require(_0x785a('0xa'));var RpcVoiceTransferReport=require(_0x785a('0xb'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require(_0x785a('0xc'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0x785a('0xd'));function Report(_0x4e928a){this[_0x785a('0xe')]=_0x4e928a;this['agents']=_0x4e928a[_0x785a('0xf')];this[_0x785a('0x10')]=_0x4e928a['telephones'];}Report[_0x785a('0x11')][_0x785a('0x12')]=function(_0x5dcbbe){var _0x4136d9=new VoiceQueueReport(this[_0x785a('0xe')]);var _0x36da17=new VoiceAgentReport(this['realtime']);var _0x5e6af0=new VoiceDialReport(this[_0x785a('0xe')]);var _0x1c81cf=new VoiceCallReport(this[_0x785a('0xe')]);var _0x7acda5=new UserReport(this[_0x785a('0xe')]);if(config[_0x785a('0x13')]&&config[_0x785a('0x13')][_0x785a('0x14')]){ami['on']('custom:voiceQueueReport',this['voiceQueueReport'][_0x785a('0x15')](this));ami['on']('custom:voiceCallReport',this['voiceCallReport']['bind'](this));ami['on'](_0x785a('0x16'),this[_0x785a('0x17')][_0x785a('0x15')](this));ami['on'](_0x785a('0x18'),this['voiceDialReport'][_0x785a('0x15')](this));ami['on'](_0x785a('0x19'),this[_0x785a('0x1a')][_0x785a('0x15')](this));ami['on'](_0x785a('0x1b'),this[_0x785a('0x1c')]['bind'](this));}};Report[_0x785a('0x11')]['findAgent']=function(_0x4aadc2){var _0x4e10d6;_0x4e10d6=_[_0x785a('0x1d')](this['agents'],function(_0x73e737){return _0x73e737[_0x785a('0x1e')]==_0x4aadc2||_0x73e737[_0x785a('0x1f')]==_0x4aadc2;});if(_[_0x785a('0x20')](_0x4e10d6)){var _0x1451e5=_[_0x785a('0x1d')](this['telephones'],function(_0x43677f){return _0x43677f[_0x785a('0x1e')]==_0x4aadc2||_0x43677f[_0x785a('0x1f')]==_0x4aadc2;});if(_0x1451e5){_0x4e10d6=_[_0x785a('0x1d')](this[_0x785a('0xf')],function(_0x5a490b){return _0x5a490b['interface']==util[_0x785a('0x21')](_0x785a('0x22'),_0x1451e5[_0x785a('0x1f')]);});}}return _0x4e10d6;};Report[_0x785a('0x11')][_0x785a('0x23')]=function(_0x5c77a5){for(var _0x1bb9a3=0x0;_0x1bb9a3<_0x5c77a5[_0x785a('0x24')];_0x1bb9a3+=0x1){var _0x1f7bbe=this[_0x785a('0x25')](_0x5c77a5[_0x1bb9a3]['connectedlinenum']);if(_0x1f7bbe){_0x5c77a5[_0x1bb9a3][_0x785a('0x1e')]=_0x1f7bbe[_0x785a('0x1e')];_0x5c77a5[_0x1bb9a3][_0x785a('0x26')]=!![];_0x5c77a5[_0x1bb9a3][_0x785a('0x27')]=_0x1f7bbe[_0x785a('0x1f')];_0x5c77a5[_0x1bb9a3]['interface']=_[_0x785a('0x20')](_0x1f7bbe[_0x785a('0x28')])?util[_0x785a('0x21')](_0x785a('0x22'),_0x1f7bbe[_0x785a('0x1f')]):_0x1f7bbe['interface'];if(_0x5c77a5[_0x1bb9a3]['queuecallercomplete']){_0x5c77a5[_0x1bb9a3]['queuecallercompleteAt']=moment()['format'](_0x785a('0x29'));}if(_0x5c77a5[_0x1bb9a3]['queuecallerexit']){_0x5c77a5[_0x1bb9a3][_0x785a('0x2a')]=moment()[_0x785a('0x21')](_0x785a('0x29'));}RpcMemberReport[_0x785a('0x23')](_0x5c77a5[_0x1bb9a3]);}RpcVoiceQueueReport[_0x785a('0x2b')](_0x5c77a5[_0x1bb9a3]);}};function extractCalleridNumber(_0x52999c){var _0x3e1ceb=_0x52999c[_0x785a('0x2c')](/<(.*?)>/);return _0x3e1ceb?_0x3e1ceb[0x1]:_0x52999c;}Report['prototype']['voiceCallReport']=function(_0x266c9f){_0x266c9f[_0x785a('0x2d')]=_0x266c9f['destination']||_0x266c9f[_0x785a('0x2e')];if(_0x266c9f[_0x785a('0x2f')]==_0x785a('0x30')){_0x266c9f[_0x785a('0x31')]=_0x785a('0x32');_0x266c9f[_0x785a('0x33')]=_0x266c9f[_0x785a('0x32')];if(_0x266c9f['context']==_0x785a('0x34')){_0x266c9f[_0x785a('0x1e')]='';_0x266c9f['destination']=extractCalleridNumber(_0x266c9f[_0x785a('0x35')]);}else if(_0x266c9f[_0x785a('0x36')]=='from-sip'){if(_0x266c9f['destination']==_0x785a('0x37')){_0x266c9f[_0x785a('0x2d')]=extractCalleridNumber(_0x266c9f[_0x785a('0x38')]);_0x266c9f[_0x785a('0x39')]=_0x266c9f[_0x785a('0x3a')];_0x266c9f[_0x785a('0x3b')]=[_0x266c9f[_0x785a('0x3c')],_0x266c9f[_0x785a('0x3c')]=_0x266c9f[_0x785a('0x3b')]][0x0];_0x266c9f[_0x785a('0x35')]=_0x266c9f['calleridpreview'];}else{_0x266c9f['destination']=_0x266c9f['calleridnum'];_0x266c9f[_0x785a('0x39')]=_0x266c9f[_0x785a('0x3a')];if(_0x266c9f[_0x785a('0x3d')]=='ANSWERED'){_0x266c9f['accountcode']=_0x266c9f[_0x785a('0x3e')];}else{_0x266c9f[_0x785a('0x1e')]='';}}}}else{_0x266c9f[_0x785a('0x35')]=util[_0x785a('0x21')]('\x22%s\x22\x20<%s>',_0x266c9f['calleridname'],_0x266c9f[_0x785a('0x39')]);}if(RpcVoiceTransferReport[_0x785a('0x3f')][_0x266c9f[_0x785a('0x40')]]){var _0x502a0a=RpcVoiceTransferReport[_0x785a('0x3f')][_0x266c9f[_0x785a('0x40')]];_0x502a0a[_0x785a('0x41')]=_0x266c9f[_0x785a('0x42')];RpcVoiceTransferReport[_0x785a('0x1a')](_0x502a0a);delete RpcVoiceTransferReport['transfers'][_0x266c9f[_0x785a('0x40')]];}RpcVoiceCallReport[_0x785a('0x2b')](_0x266c9f);if(_0x266c9f[_0x785a('0x43')]){for(var _0x5ebcb8=0x0;_0x5ebcb8<_0x266c9f[_0x785a('0x44')][_0x785a('0x24')];_0x5ebcb8+=0x1){_0x266c9f['monitorFilename']=_0x266c9f[_0x785a('0x44')][_0x5ebcb8][_0x785a('0x45')];_0x266c9f[_0x785a('0x46')]=_0x266c9f[_0x785a('0x44')][_0x5ebcb8][_0x785a('0x46')];if(_0x266c9f[_0x785a('0x2e')]==_0x785a('0x37')){_0x266c9f[_0x785a('0x39')]=_0x266c9f['connectedlinenum'];_0x266c9f['calleridname']=_0x266c9f[_0x785a('0x47')];_0x266c9f['connectedlinenum']=_0x266c9f[_0x785a('0x1e')];_0x266c9f[_0x785a('0x47')]=_0x266c9f[_0x785a('0x48')];_0x266c9f[_0x785a('0x2e')]=_0x266c9f[_0x785a('0x3a')];}else if(_0x266c9f[_0x785a('0x2e')]==_0x785a('0x49')){_0x266c9f['calleridnum']=_0x266c9f[_0x785a('0x2d')];_0x266c9f[_0x785a('0x2e')]=_0x266c9f[_0x785a('0x3a')];}RpcVoiceRecording[_0x785a('0x2b')](_0x266c9f);}}};Report[_0x785a('0x11')][_0x785a('0x17')]=function(_0x1463a9){if(_[_0x785a('0x4a')](_0x1463a9)){_0x1463a9['forEach'](function(_0x418cab){RpcVoiceAgentReport[_0x785a('0x2b')](_0x418cab);});}else{RpcVoiceAgentReport[_0x785a('0x2b')](_0x1463a9);}};Report[_0x785a('0x11')][_0x785a('0x4b')]=function(_0x23ce04){RpcVoiceDialReport[_0x785a('0x2b')](_0x23ce04);var _0x5850fb;var _0x350fdf;var _0xbb1589=_0x23ce04['channel'];if(_[_0x785a('0x4c')](_0xbb1589,'Local')){_0x350fdf=_0xbb1589['substring'](_0xbb1589[_0x785a('0x4d')]('/')+0x1,_0xbb1589[_0x785a('0x4d')]('@'));_0x5850fb=_['find'](this[_0x785a('0xf')],function(_0x200faa){return _0x200faa[_0x785a('0x4e')]==_0x350fdf||_0x200faa[_0x785a('0x4f')]==_0x350fdf||_0x200faa[_0x785a('0x1e')]==_0x350fdf;});}else{_0x350fdf=_0xbb1589[_0x785a('0x50')](_0xbb1589[_0x785a('0x4d')]('/')+0x1,_0xbb1589[_0x785a('0x51')]('-'));_0x5850fb=this['findAgent'](_0x350fdf);}if(_0x5850fb){_0x23ce04[_0x785a('0x28')]=_[_0x785a('0x20')](_0x5850fb[_0x785a('0x28')])?util[_0x785a('0x21')](_0x785a('0x22'),_0x5850fb[_0x785a('0x1f')]):_0x5850fb[_0x785a('0x28')];_0x23ce04[_0x785a('0x48')]=_0x5850fb[_0x785a('0x1f')];_0x23ce04[_0x785a('0x1e')]=_0x5850fb['accountcode'];RpcMemberReport[_0x785a('0x4b')](_0x23ce04);}};Report[_0x785a('0x11')][_0x785a('0x1a')]=function(_0xc81687){RpcVoiceTransferReport['transfers'][_0xc81687[_0x785a('0x52')]]=_0xc81687;};Report[_0x785a('0x11')][_0x785a('0x1c')]=function(_0x5bf3c5){RpcVoiceTransferReport[_0x785a('0x1c')](_0x5bf3c5);};module['exports']=Report;
\ No newline at end of file
+var _0x2c12=['voiceDialReport','attendedTransfer','exports','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','realtime','agents','telephones','xdr','custom:voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','blindtransfer','blindTransfer','attendedtransfer','find','accountcode','isNil','name','interface','format','SIP/%s','voiceQueueReport','length','findAgent','connectedlinenum','assigned','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','prototype','destination','dialer','lastapplication','lastdata','queue','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','channel','callerid','disposition','ANSWERED','calleridname','linkedid','transfers','transfereelinkedid','monitor','monitorFilename','createdAt','exten','connectedlinename','membername','xcally-motion-dialer','isArray','forEach','startsWith','Local','indexOf','mobile','phone','substring','lastIndexOf'];(function(_0xa7d195,_0x325794){var _0x31ec88=function(_0x2f33b0){while(--_0x2f33b0){_0xa7d195['push'](_0xa7d195['shift']());}};_0x31ec88(++_0x325794);}(_0x2c12,0x1a2));var _0x22c1=function(_0x2d344f,_0x25fa84){_0x2d344f=_0x2d344f-0x0;var _0x2e796b=_0x2c12[_0x2d344f];return _0x2e796b;};'use strict';var _=require('lodash');var moment=require(_0x22c1('0x0'));var util=require(_0x22c1('0x1'));var config=require(_0x22c1('0x2'));var ami=require(_0x22c1('0x3'));var RpcVoiceAgentReport=require(_0x22c1('0x4'));var RpcVoiceCallReport=require(_0x22c1('0x5'));var RpcVoiceDialReport=require(_0x22c1('0x6'));var RpcMemberReport=require(_0x22c1('0x7'));var RpcVoiceQueueReport=require(_0x22c1('0x8'));var RpcVoiceRecording=require(_0x22c1('0x9'));var RpcVoiceTransferReport=require(_0x22c1('0xa'));var VoiceQueueReport=require(_0x22c1('0xb'));var VoiceCallReport=require(_0x22c1('0xc'));var VoiceAgentReport=require(_0x22c1('0xd'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require('./userReport');function Report(_0x524f94){this[_0x22c1('0xe')]=_0x524f94;this[_0x22c1('0xf')]=_0x524f94[_0x22c1('0xf')];this[_0x22c1('0x10')]=_0x524f94[_0x22c1('0x10')];}Report['prototype']['sync']=function(_0x2100c8){var _0x5812c9=new VoiceQueueReport(this[_0x22c1('0xe')]);var _0x37bbe8=new VoiceAgentReport(this[_0x22c1('0xe')]);var _0x112f9f=new VoiceDialReport(this[_0x22c1('0xe')]);var _0x927e62=new VoiceCallReport(this[_0x22c1('0xe')]);var _0xfd6d3b=new UserReport(this['realtime']);if(config[_0x22c1('0x11')]&&config[_0x22c1('0x11')]['disabled']){ami['on'](_0x22c1('0x12'),this['voiceQueueReport'][_0x22c1('0x13')](this));ami['on'](_0x22c1('0x14'),this[_0x22c1('0x15')][_0x22c1('0x13')](this));ami['on'](_0x22c1('0x16'),this[_0x22c1('0x17')]['bind'](this));ami['on']('custom:voiceDialReport',this['voiceDialReport'][_0x22c1('0x13')](this));ami['on'](_0x22c1('0x18'),this[_0x22c1('0x19')][_0x22c1('0x13')](this));ami['on'](_0x22c1('0x1a'),this['attendedTransfer'][_0x22c1('0x13')](this));}};Report['prototype']['findAgent']=function(_0x531c6f){var _0x47769c;_0x47769c=_[_0x22c1('0x1b')](this['agents'],function(_0x49a7f5){return _0x49a7f5[_0x22c1('0x1c')]==_0x531c6f||_0x49a7f5['name']==_0x531c6f;});if(_[_0x22c1('0x1d')](_0x47769c)){var _0x172d69=_['find'](this['telephones'],function(_0x4094f9){return _0x4094f9['accountcode']==_0x531c6f||_0x4094f9[_0x22c1('0x1e')]==_0x531c6f;});if(_0x172d69){_0x47769c=_['find'](this[_0x22c1('0xf')],function(_0x5db59b){return _0x5db59b[_0x22c1('0x1f')]==util[_0x22c1('0x20')](_0x22c1('0x21'),_0x172d69['name']);});}}return _0x47769c;};Report['prototype'][_0x22c1('0x22')]=function(_0x3ccc60){for(var _0x51b4ed=0x0;_0x51b4ed<_0x3ccc60[_0x22c1('0x23')];_0x51b4ed+=0x1){var _0x5d87a8=this[_0x22c1('0x24')](_0x3ccc60[_0x51b4ed][_0x22c1('0x25')]);if(_0x5d87a8){_0x3ccc60[_0x51b4ed][_0x22c1('0x1c')]=_0x5d87a8[_0x22c1('0x1c')];_0x3ccc60[_0x51b4ed][_0x22c1('0x26')]=!![];_0x3ccc60[_0x51b4ed]['lastAssignedTo']=_0x5d87a8['name'];_0x3ccc60[_0x51b4ed][_0x22c1('0x1f')]=_['isNil'](_0x5d87a8['interface'])?util[_0x22c1('0x20')](_0x22c1('0x21'),_0x5d87a8[_0x22c1('0x1e')]):_0x5d87a8[_0x22c1('0x1f')];if(_0x3ccc60[_0x51b4ed][_0x22c1('0x27')]){_0x3ccc60[_0x51b4ed][_0x22c1('0x28')]=moment()['format'](_0x22c1('0x29'));}if(_0x3ccc60[_0x51b4ed][_0x22c1('0x2a')]){_0x3ccc60[_0x51b4ed][_0x22c1('0x2b')]=moment()[_0x22c1('0x20')](_0x22c1('0x29'));}RpcMemberReport[_0x22c1('0x22')](_0x3ccc60[_0x51b4ed]);}RpcVoiceQueueReport[_0x22c1('0x2c')](_0x3ccc60[_0x51b4ed]);}};function extractCalleridNumber(_0x479d5e){var _0xe637e9=_0x479d5e[_0x22c1('0x2d')](/<(.*?)>/);return _0xe637e9?_0xe637e9[0x1]:_0x479d5e;}Report[_0x22c1('0x2e')][_0x22c1('0x15')]=function(_0x58e53){_0x58e53['destination']=_0x58e53[_0x22c1('0x2f')]||_0x58e53['exten'];if(_0x58e53['type']==_0x22c1('0x30')){_0x58e53[_0x22c1('0x31')]='queue';_0x58e53[_0x22c1('0x32')]=_0x58e53[_0x22c1('0x33')];if(_0x58e53['context']=='from-voip-provider'){_0x58e53[_0x22c1('0x1c')]='';_0x58e53[_0x22c1('0x2f')]=extractCalleridNumber(_0x58e53['callerid']);}else if(_0x58e53['context']=='from-sip'){if(_0x58e53[_0x22c1('0x2f')]=='xcally-motion-preview'){_0x58e53[_0x22c1('0x2f')]=extractCalleridNumber(_0x58e53[_0x22c1('0x34')]);_0x58e53[_0x22c1('0x35')]=_0x58e53[_0x22c1('0x36')];_0x58e53[_0x22c1('0x37')]=[_0x58e53[_0x22c1('0x38')],_0x58e53['channel']=_0x58e53[_0x22c1('0x37')]][0x0];_0x58e53[_0x22c1('0x39')]=_0x58e53['calleridpreview'];}else{_0x58e53[_0x22c1('0x2f')]=_0x58e53[_0x22c1('0x35')];_0x58e53[_0x22c1('0x35')]=_0x58e53[_0x22c1('0x36')];if(_0x58e53[_0x22c1('0x3a')]==_0x22c1('0x3b')){_0x58e53[_0x22c1('0x1c')]=_0x58e53[_0x22c1('0x25')];}else{_0x58e53[_0x22c1('0x1c')]='';}}}}else{_0x58e53[_0x22c1('0x39')]=util[_0x22c1('0x20')]('\x22%s\x22\x20<%s>',_0x58e53[_0x22c1('0x3c')],_0x58e53['calleridnum']);}if(RpcVoiceTransferReport['transfers'][_0x58e53[_0x22c1('0x3d')]]){var _0x3a068e=RpcVoiceTransferReport[_0x22c1('0x3e')][_0x58e53['linkedid']];_0x3a068e[_0x22c1('0x3f')]=_0x58e53['uniqueid'];RpcVoiceTransferReport[_0x22c1('0x19')](_0x3a068e);delete RpcVoiceTransferReport[_0x22c1('0x3e')][_0x58e53[_0x22c1('0x3d')]];}RpcVoiceCallReport[_0x22c1('0x2c')](_0x58e53);if(_0x58e53[_0x22c1('0x40')]){for(var _0x85cbd0=0x0;_0x85cbd0<_0x58e53['monitors'][_0x22c1('0x23')];_0x85cbd0+=0x1){_0x58e53[_0x22c1('0x41')]=_0x58e53['monitors'][_0x85cbd0]['filename'];_0x58e53[_0x22c1('0x42')]=_0x58e53['monitors'][_0x85cbd0]['createdAt'];if(_0x58e53[_0x22c1('0x43')]=='xcally-motion-preview'){_0x58e53[_0x22c1('0x35')]=_0x58e53[_0x22c1('0x25')];_0x58e53[_0x22c1('0x3c')]=_0x58e53[_0x22c1('0x44')];_0x58e53[_0x22c1('0x25')]=_0x58e53[_0x22c1('0x1c')];_0x58e53[_0x22c1('0x44')]=_0x58e53[_0x22c1('0x45')];_0x58e53[_0x22c1('0x43')]=_0x58e53['originatecalleridnum'];}else if(_0x58e53[_0x22c1('0x43')]==_0x22c1('0x46')){_0x58e53[_0x22c1('0x35')]=_0x58e53[_0x22c1('0x2f')];_0x58e53[_0x22c1('0x43')]=_0x58e53[_0x22c1('0x36')];}RpcVoiceRecording[_0x22c1('0x2c')](_0x58e53);}}};Report[_0x22c1('0x2e')][_0x22c1('0x17')]=function(_0x1ff5ac){if(_[_0x22c1('0x47')](_0x1ff5ac)){_0x1ff5ac[_0x22c1('0x48')](function(_0x2d5aa4){RpcVoiceAgentReport[_0x22c1('0x2c')](_0x2d5aa4);});}else{RpcVoiceAgentReport[_0x22c1('0x2c')](_0x1ff5ac);}};Report['prototype']['voiceDialReport']=function(_0x22610d){RpcVoiceDialReport[_0x22c1('0x2c')](_0x22610d);var _0x2ca9be;var _0xde17c7;var _0x1950c3=_0x22610d[_0x22c1('0x38')];if(_[_0x22c1('0x49')](_0x1950c3,_0x22c1('0x4a'))){_0xde17c7=_0x1950c3['substring'](_0x1950c3[_0x22c1('0x4b')]('/')+0x1,_0x1950c3[_0x22c1('0x4b')]('@'));_0x2ca9be=_[_0x22c1('0x1b')](this[_0x22c1('0xf')],function(_0x360bf4){return _0x360bf4[_0x22c1('0x4c')]==_0xde17c7||_0x360bf4[_0x22c1('0x4d')]==_0xde17c7||_0x360bf4[_0x22c1('0x1c')]==_0xde17c7;});}else{_0xde17c7=_0x1950c3[_0x22c1('0x4e')](_0x1950c3[_0x22c1('0x4b')]('/')+0x1,_0x1950c3[_0x22c1('0x4f')]('-'));_0x2ca9be=this[_0x22c1('0x24')](_0xde17c7);}if(_0x2ca9be){_0x22610d[_0x22c1('0x1f')]=_[_0x22c1('0x1d')](_0x2ca9be[_0x22c1('0x1f')])?util[_0x22c1('0x20')](_0x22c1('0x21'),_0x2ca9be[_0x22c1('0x1e')]):_0x2ca9be[_0x22c1('0x1f')];_0x22610d['membername']=_0x2ca9be['name'];_0x22610d[_0x22c1('0x1c')]=_0x2ca9be[_0x22c1('0x1c')];RpcMemberReport[_0x22c1('0x50')](_0x22610d);}};Report['prototype']['blindTransfer']=function(_0x5ae1d2){RpcVoiceTransferReport[_0x22c1('0x3e')][_0x5ae1d2['transfererlinkedid']]=_0x5ae1d2;};Report[_0x22c1('0x2e')]['attendedTransfer']=function(_0x235b04){RpcVoiceTransferReport[_0x22c1('0x51')](_0x235b04);};module[_0x22c1('0x52')]=Report;
\ No newline at end of file
index 85fc96c..ba92d10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda24=['peerstatus','syncRealtimeShow','resolve','then','catch','error','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','find','username','stateRegistry','merge','omit','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][registry]','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','agents','local','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','Local','indexOf','mobile','phone','accountcode','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','bluebird','ami','../ami','defaults','redis','trunks','telephones','syncRegistry','bind','registry','devicestatechange','syncDeviceState'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xda24,0x1f0));var _0x4da2=function(_0x6a7421,_0x20b4f5){_0x6a7421=_0x6a7421-0x0;var _0x33f5d1=_0xda24[_0x6a7421];return _0x33f5d1;};'use strict';var _=require(_0x4da2('0x0'));var moment=require(_0x4da2('0x1'));var util=require(_0x4da2('0x2'));var Redis=require('ioredis');var BPromise=require(_0x4da2('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x4da2('0x4'));var ami=require(_0x4da2('0x5'));config['redis']=_[_0x4da2('0x6')](config[_0x4da2('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4da2('0x7')]));function UserReport(_0x90f20){this[_0x4da2('0x8')]=_0x90f20[_0x4da2('0x8')];this['agents']=_0x90f20['agents'];this[_0x4da2('0x9')]=_0x90f20[_0x4da2('0x9')];ami['on']('registryentry',this[_0x4da2('0xa')][_0x4da2('0xb')](this));ami['on'](_0x4da2('0xc'),this[_0x4da2('0xa')][_0x4da2('0xb')](this));ami['on'](_0x4da2('0xd'),this[_0x4da2('0xe')][_0x4da2('0xb')](this));ami['on'](_0x4da2('0xf'),this['syncPeerStatus'][_0x4da2('0xb')](this));return this[_0x4da2('0x10')]();}function showSipRegistrations(){Promise[_0x4da2('0x11')]()[_0x4da2('0x12')](ami['actionSipShowRegistry']())[_0x4da2('0x13')](function(_0x11e44f){logger[_0x4da2('0x14')]('[userReport][sipshowregistry]',util[_0x4da2('0x15')](_0x11e44f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()['then'](ami[_0x4da2('0x16')]())['catch'](function(_0xa0a213){logger[_0x4da2('0x14')](_0x4da2('0x17'),util['inspect'](_0xa0a213,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x4da2('0x11')]()[_0x4da2('0x12')](ami[_0x4da2('0x18')]())['catch'](function(_0x35c5d4){logger[_0x4da2('0x14')](_0x4da2('0x19'),util[_0x4da2('0x15')](_0x35c5d4,{'showHidden':![],'depth':null}));});}UserReport[_0x4da2('0x1a')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x4da2('0x11')]()[_0x4da2('0x12')](showSipRegistrations())[_0x4da2('0x12')](listDeviceStates())[_0x4da2('0x12')](showPeersStatus());},0x32c8);};UserReport[_0x4da2('0x1a')][_0x4da2('0x1b')]=function(_0x1a2d0b){return _0x1a2d0b!==null&&!_[_0x4da2('0x1c')](_0x1a2d0b);};UserReport[_0x4da2('0x1a')][_0x4da2('0x1d')]=function(_0xa4eed2,_0x1bf97e,_0x15ae1d){io['to'](_0xa4eed2)['emit'](_0x1bf97e,_0x15ae1d);};UserReport['prototype'][_0x4da2('0xa')]=function(_0x544f58){try{if(this[_0x4da2('0x1b')](_0x544f58)){logger[_0x4da2('0x1e')](_0x4da2('0x1f'),_0x544f58['username'],_0x544f58[_0x4da2('0x20')]);logger[_0x4da2('0x21')]('[userReport][registry]',util[_0x4da2('0x15')](_0x544f58,{'showHidden':![],'depth':null}));var _0xac8191=_[_0x4da2('0x22')](this[_0x4da2('0x8')],{'defaultuser':_0x544f58[_0x4da2('0x23')]});if(_0xac8191){_0x544f58[_0x4da2('0x24')]=_0x544f58[_0x4da2('0x20')];_[_0x4da2('0x25')](_0xac8191,_[_0x4da2('0x26')](_0x544f58,['event','actionid',_0x4da2('0x23'),_0x4da2('0x20')]));logger['debug'](_0x4da2('0x27'),util['inspect'](_0xac8191,{'showHidden':![],'depth':null}));this[_0x4da2('0x1d')](util[_0x4da2('0x28')](_0x4da2('0x29'),_0xac8191[_0x4da2('0x2a')]),'trunk:save',_0xac8191);}}}catch(_0x31659b){logger[_0x4da2('0x14')](_0x4da2('0x2b'),util[_0x4da2('0x15')](_0x31659b,{'showHidden':![],'depth':null}));}};UserReport[_0x4da2('0x1a')][_0x4da2('0xe')]=function(_0xc9dd14){try{if(this[_0x4da2('0x1b')](_0xc9dd14)){logger[_0x4da2('0x1e')](_0x4da2('0x2c'),_0xc9dd14['device'],_0xc9dd14[_0x4da2('0x20')]);logger['debug'](_0x4da2('0x2d'),util[_0x4da2('0x15')](_0xc9dd14,{'showHidden':![],'depth':null}));if(this['agents'][_0xc9dd14[_0x4da2('0x2e')]]){if(!this[_0x4da2('0x2f')][_0xc9dd14[_0x4da2('0x2e')]][_0x4da2('0x30')]||_0xc9dd14['state'][_0x4da2('0x31')]()==_0x4da2('0x32')){this['agents'][_0xc9dd14[_0x4da2('0x2e')]]['local']=![];if(this[_0x4da2('0x2f')][_0xc9dd14['device']][_0x4da2('0x20')]!==_0xc9dd14['state']['toLowerCase']()){this[_0x4da2('0x2f')][_0xc9dd14[_0x4da2('0x2e')]][_0x4da2('0x33')]=_[_0x4da2('0x34')](moment()[_0x4da2('0x28')]('x'));}this[_0x4da2('0x2f')][_0xc9dd14[_0x4da2('0x2e')]][_0x4da2('0x20')]=_0xc9dd14[_0x4da2('0x20')]['toLowerCase']();this[_0x4da2('0x2f')][_0xc9dd14[_0x4da2('0x2e')]][_0x4da2('0x35')](_0xc9dd14);}}else if(this[_0x4da2('0x9')][_0xc9dd14[_0x4da2('0x2e')]]){if(this[_0x4da2('0x9')][_0xc9dd14['device']][_0x4da2('0x20')]!==_0xc9dd14[_0x4da2('0x20')]['toLowerCase']()){this[_0x4da2('0x9')][_0xc9dd14[_0x4da2('0x2e')]][_0x4da2('0x33')]=_[_0x4da2('0x34')](moment()[_0x4da2('0x28')]('x'));}this[_0x4da2('0x9')][_0xc9dd14[_0x4da2('0x2e')]][_0x4da2('0x20')]=_0xc9dd14[_0x4da2('0x20')][_0x4da2('0x31')]();logger['debug'](_0x4da2('0x36'),util[_0x4da2('0x15')](this[_0x4da2('0x9')][_0xc9dd14[_0x4da2('0x2e')]],{'showHidden':![],'depth':null}));this[_0x4da2('0x1d')](util['format'](_0x4da2('0x37'),this[_0x4da2('0x9')][_0xc9dd14['device']][_0x4da2('0x2a')]),_0x4da2('0x38'),this['telephones'][_0xc9dd14[_0x4da2('0x2e')]]);}else if(this[_0x4da2('0x8')][_0xc9dd14[_0x4da2('0x2e')]]){if(this['trunks'][_0xc9dd14[_0x4da2('0x2e')]][_0x4da2('0x20')]!==_0xc9dd14[_0x4da2('0x20')]['toLowerCase']()){this[_0x4da2('0x8')][_0xc9dd14[_0x4da2('0x2e')]][_0x4da2('0x33')]=_[_0x4da2('0x34')](moment()[_0x4da2('0x28')]('x'));}this['trunks'][_0xc9dd14[_0x4da2('0x2e')]][_0x4da2('0x20')]=_0xc9dd14[_0x4da2('0x20')][_0x4da2('0x31')]();logger['debug'](_0x4da2('0x39'),util[_0x4da2('0x15')](this['trunks'][_0xc9dd14['device']],{'showHidden':![],'depth':null}));this['emit'](util['format']('trunk:%s',this[_0x4da2('0x8')][_0xc9dd14['device']][_0x4da2('0x2a')]),_0x4da2('0x3a'),this['trunks'][_0xc9dd14[_0x4da2('0x2e')]]);}else if(_[_0x4da2('0x3b')](_0xc9dd14[_0x4da2('0x2e')],_0x4da2('0x3c'))){var _0x6d6374=_0xc9dd14[_0x4da2('0x2e')];var _0x2c163a=_0x6d6374['substring'](_0x6d6374[_0x4da2('0x3d')]('/')+0x1,_0x6d6374[_0x4da2('0x3d')]('@'));var _0x429a00=_[_0x4da2('0x22')](this[_0x4da2('0x2f')],function(_0x1ad40e){return _0x1ad40e[_0x4da2('0x3e')]==_0x2c163a||_0x1ad40e[_0x4da2('0x3f')]==_0x2c163a||_0x1ad40e[_0x4da2('0x40')]==_0x2c163a;});if(_0x429a00){if(_0x429a00[_0x4da2('0x20')]!==_0xc9dd14[_0x4da2('0x20')][_0x4da2('0x31')]()){_0x429a00[_0x4da2('0x33')]=_['toNumber'](moment()[_0x4da2('0x28')]('x'));}_0x429a00[_0x4da2('0x20')]=_0xc9dd14[_0x4da2('0x20')][_0x4da2('0x31')]();_0x429a00[_0x4da2('0x30')]=!![];_0x429a00['updateStatusRealtime'](_0xc9dd14);}}}}catch(_0x1650e4){logger[_0x4da2('0x14')](_0x4da2('0x2d'),util[_0x4da2('0x15')](_0x1650e4,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x4da2('0x41')]=function(_0x3a8433){try{if(this[_0x4da2('0x1b')](_0x3a8433)&&this[_0x4da2('0x1b')](_0x3a8433[_0x4da2('0xf')])){logger[_0x4da2('0x1e')](_0x4da2('0x42'),_0x3a8433[_0x4da2('0x43')],_0x3a8433[_0x4da2('0x44')],_0x3a8433[_0x4da2('0xf')]);logger[_0x4da2('0x21')](_0x4da2('0x45'),util[_0x4da2('0x15')](_0x3a8433,{'showHidden':![],'depth':null}));if(this[_0x4da2('0x2f')][_0x3a8433['peer']]){if(!this[_0x4da2('0x2f')][_0x3a8433[_0x4da2('0x43')]][_0x4da2('0x30')]||_0x3a8433[_0x4da2('0xf')][_0x4da2('0x31')]()=='registered'){this[_0x4da2('0x2f')][_0x3a8433[_0x4da2('0x43')]][_0x4da2('0x30')]=![];this[_0x4da2('0x2f')][_0x3a8433['peer']][_0x4da2('0x46')]=_0x3a8433[_0x4da2('0xf')][_0x4da2('0x31')]();this[_0x4da2('0x2f')][_0x3a8433[_0x4da2('0x43')]][_0x4da2('0x44')]=_0x3a8433[_0x4da2('0x44')];this['agents'][_0x3a8433['peer']][_0x4da2('0x35')](_0x3a8433);}}else if(this[_0x4da2('0x9')][_0x3a8433['peer']]){this[_0x4da2('0x9')][_0x3a8433[_0x4da2('0x43')]]['status']=_0x3a8433[_0x4da2('0xf')][_0x4da2('0x31')]();this[_0x4da2('0x9')][_0x3a8433[_0x4da2('0x43')]][_0x4da2('0x44')]=_0x3a8433[_0x4da2('0x44')];logger[_0x4da2('0x21')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x4da2('0x15')](this[_0x4da2('0x9')][_0x3a8433[_0x4da2('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x4da2('0x37'),this['telephones'][_0x3a8433[_0x4da2('0x43')]][_0x4da2('0x2a')]),_0x4da2('0x38'),this[_0x4da2('0x9')][_0x3a8433[_0x4da2('0x43')]]);}else if(this['trunks'][_0x3a8433[_0x4da2('0x43')]]){this[_0x4da2('0x8')][_0x3a8433['peer']][_0x4da2('0x46')]=_0x3a8433[_0x4da2('0xf')][_0x4da2('0x31')]();this[_0x4da2('0x8')][_0x3a8433['peer']][_0x4da2('0x44')]=_0x3a8433[_0x4da2('0x44')];logger[_0x4da2('0x21')](_0x4da2('0x47'),util[_0x4da2('0x15')](this[_0x4da2('0x8')][_0x3a8433[_0x4da2('0x43')]],{'showHidden':![],'depth':null}));this[_0x4da2('0x1d')](util[_0x4da2('0x28')]('trunk:%s',this[_0x4da2('0x8')][_0x3a8433[_0x4da2('0x43')]][_0x4da2('0x2a')]),_0x4da2('0x3a'),this[_0x4da2('0x8')][_0x3a8433['peer']]);}}}catch(_0x3a0e73){logger[_0x4da2('0x14')](_0x4da2('0x45'),util['inspect'](_0x3a0e73,{'showHidden':![],'depth':null}));}};module[_0x4da2('0x48')]=UserReport;
\ No newline at end of file
+var _0x88fe=['find','stateRegistry','merge','omit','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','debug','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','substring','indexOf','mobile','phone','accountcode','updateStatusRealtime','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','../../../config/logger','../ami','defaults','localhost','trunks','agents','telephones','registryentry','syncRegistry','registry','bind','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','resolve','catch','error','[userReport][sipshowregistry]','actionDeviceStateList','[userReport][devicestatelist]','inspect','then','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','[userReport][registry]'];(function(_0x465e1c,_0xdff365){var _0xb35dda=function(_0x496535){while(--_0x496535){_0x465e1c['push'](_0x465e1c['shift']());}};_0xb35dda(++_0xdff365);}(_0x88fe,0x71));var _0xe88f=function(_0x25efdf,_0x521462){_0x25efdf=_0x25efdf-0x0;var _0x22c495=_0x88fe[_0x25efdf];return _0x22c495;};'use strict';var _=require(_0xe88f('0x0'));var moment=require(_0xe88f('0x1'));var util=require(_0xe88f('0x2'));var Redis=require('ioredis');var BPromise=require('bluebird');var config=require('../../../config/environment');var logger=require(_0xe88f('0x3'))('ami');var ami=require(_0xe88f('0x4'));config['redis']=_[_0xe88f('0x5')](config['redis'],{'host':_0xe88f('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function UserReport(_0x37f38f){this[_0xe88f('0x7')]=_0x37f38f['trunks'];this[_0xe88f('0x8')]=_0x37f38f['agents'];this[_0xe88f('0x9')]=_0x37f38f[_0xe88f('0x9')];ami['on'](_0xe88f('0xa'),this[_0xe88f('0xb')]['bind'](this));ami['on'](_0xe88f('0xc'),this['syncRegistry'][_0xe88f('0xd')](this));ami['on'](_0xe88f('0xe'),this[_0xe88f('0xf')][_0xe88f('0xd')](this));ami['on']('peerstatus',this[_0xe88f('0x10')][_0xe88f('0xd')](this));return this[_0xe88f('0x11')]();}function showSipRegistrations(){Promise[_0xe88f('0x12')]()['then'](ami['actionSipShowRegistry']())[_0xe88f('0x13')](function(_0x33faea){logger[_0xe88f('0x14')](_0xe88f('0x15'),util['inspect'](_0x33faea,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xe88f('0x12')]()['then'](ami[_0xe88f('0x16')]())[_0xe88f('0x13')](function(_0x7a23ed){logger[_0xe88f('0x14')](_0xe88f('0x17'),util[_0xe88f('0x18')](_0x7a23ed,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xe88f('0x12')]()[_0xe88f('0x19')](ami[_0xe88f('0x1a')]())[_0xe88f('0x13')](function(_0x5bc7dc){logger[_0xe88f('0x14')](_0xe88f('0x1b'),util[_0xe88f('0x18')](_0x5bc7dc,{'showHidden':![],'depth':null}));});}UserReport[_0xe88f('0x1c')][_0xe88f('0x11')]=function(){setInterval(function(){BPromise['resolve']()['then'](showSipRegistrations())[_0xe88f('0x19')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype'][_0xe88f('0x1d')]=function(_0x2cdbdd){return _0x2cdbdd!==null&&!_[_0xe88f('0x1e')](_0x2cdbdd);};UserReport['prototype']['emit']=function(_0x411366,_0x1c63d2,_0xcd5f94){io['to'](_0x411366)[_0xe88f('0x1f')](_0x1c63d2,_0xcd5f94);};UserReport[_0xe88f('0x1c')][_0xe88f('0xb')]=function(_0x2401dc){try{if(this[_0xe88f('0x1d')](_0x2401dc)){logger[_0xe88f('0x20')](_0xe88f('0x21'),_0x2401dc[_0xe88f('0x22')],_0x2401dc[_0xe88f('0x23')]);logger['debug'](_0xe88f('0x24'),util[_0xe88f('0x18')](_0x2401dc,{'showHidden':![],'depth':null}));var _0x2a18c4=_[_0xe88f('0x25')](this['trunks'],{'defaultuser':_0x2401dc[_0xe88f('0x22')]});if(_0x2a18c4){_0x2401dc[_0xe88f('0x26')]=_0x2401dc[_0xe88f('0x23')];_[_0xe88f('0x27')](_0x2a18c4,_[_0xe88f('0x28')](_0x2401dc,[_0xe88f('0x29'),'actionid',_0xe88f('0x22'),_0xe88f('0x23')]));logger['debug'](_0xe88f('0x2a'),util['inspect'](_0x2a18c4,{'showHidden':![],'depth':null}));this[_0xe88f('0x1f')](util[_0xe88f('0x2b')](_0xe88f('0x2c'),_0x2a18c4[_0xe88f('0x2d')]),'trunk:save',_0x2a18c4);}}}catch(_0x249fb7){logger['error'](_0xe88f('0x24'),util[_0xe88f('0x18')](_0x249fb7,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xe88f('0xf')]=function(_0xecf0ac){try{if(this[_0xe88f('0x1d')](_0xecf0ac)){logger[_0xe88f('0x20')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0xecf0ac[_0xe88f('0x2e')],_0xecf0ac[_0xe88f('0x23')]);logger['debug'](_0xe88f('0x2f'),util[_0xe88f('0x18')](_0xecf0ac,{'showHidden':![],'depth':null}));if(this['agents'][_0xecf0ac[_0xe88f('0x2e')]]){if(!this['agents'][_0xecf0ac[_0xe88f('0x2e')]][_0xe88f('0x30')]||_0xecf0ac[_0xe88f('0x23')][_0xe88f('0x31')]()==_0xe88f('0x32')){this['agents'][_0xecf0ac[_0xe88f('0x2e')]][_0xe88f('0x30')]=![];if(this[_0xe88f('0x8')][_0xecf0ac['device']][_0xe88f('0x23')]!==_0xecf0ac[_0xe88f('0x23')][_0xe88f('0x31')]()){this['agents'][_0xecf0ac[_0xe88f('0x2e')]]['stateTime']=_['toNumber'](moment()[_0xe88f('0x2b')]('x'));}this[_0xe88f('0x8')][_0xecf0ac[_0xe88f('0x2e')]][_0xe88f('0x23')]=_0xecf0ac['state'][_0xe88f('0x31')]();this[_0xe88f('0x8')][_0xecf0ac['device']]['updateStatusRealtime'](_0xecf0ac);}}else if(this[_0xe88f('0x9')][_0xecf0ac[_0xe88f('0x2e')]]){if(this[_0xe88f('0x9')][_0xecf0ac[_0xe88f('0x2e')]][_0xe88f('0x23')]!==_0xecf0ac[_0xe88f('0x23')][_0xe88f('0x31')]()){this[_0xe88f('0x9')][_0xecf0ac[_0xe88f('0x2e')]][_0xe88f('0x33')]=_[_0xe88f('0x34')](moment()['format']('x'));}this['telephones'][_0xecf0ac['device']][_0xe88f('0x23')]=_0xecf0ac['state']['toLowerCase']();logger[_0xe88f('0x35')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0xe88f('0x18')](this[_0xe88f('0x9')][_0xecf0ac[_0xe88f('0x2e')]],{'showHidden':![],'depth':null}));this[_0xe88f('0x1f')](util[_0xe88f('0x2b')](_0xe88f('0x36'),this[_0xe88f('0x9')][_0xecf0ac[_0xe88f('0x2e')]]['name']),_0xe88f('0x37'),this[_0xe88f('0x9')][_0xecf0ac[_0xe88f('0x2e')]]);}else if(this[_0xe88f('0x7')][_0xecf0ac['device']]){if(this[_0xe88f('0x7')][_0xecf0ac[_0xe88f('0x2e')]]['state']!==_0xecf0ac['state'][_0xe88f('0x31')]()){this[_0xe88f('0x7')][_0xecf0ac[_0xe88f('0x2e')]]['stateTime']=_['toNumber'](moment()[_0xe88f('0x2b')]('x'));}this['trunks'][_0xecf0ac[_0xe88f('0x2e')]][_0xe88f('0x23')]=_0xecf0ac[_0xe88f('0x23')][_0xe88f('0x31')]();logger['debug'](_0xe88f('0x38'),util[_0xe88f('0x18')](this['trunks'][_0xecf0ac[_0xe88f('0x2e')]],{'showHidden':![],'depth':null}));this[_0xe88f('0x1f')](util[_0xe88f('0x2b')](_0xe88f('0x2c'),this[_0xe88f('0x7')][_0xecf0ac[_0xe88f('0x2e')]][_0xe88f('0x2d')]),_0xe88f('0x39'),this[_0xe88f('0x7')][_0xecf0ac[_0xe88f('0x2e')]]);}else if(_[_0xe88f('0x3a')](_0xecf0ac[_0xe88f('0x2e')],'Local')){var _0x550f59=_0xecf0ac[_0xe88f('0x2e')];var _0x57d66e=_0x550f59[_0xe88f('0x3b')](_0x550f59[_0xe88f('0x3c')]('/')+0x1,_0x550f59[_0xe88f('0x3c')]('@'));var _0x4c11c2=_['find'](this[_0xe88f('0x8')],function(_0xbcc461){return _0xbcc461[_0xe88f('0x3d')]==_0x57d66e||_0xbcc461[_0xe88f('0x3e')]==_0x57d66e||_0xbcc461[_0xe88f('0x3f')]==_0x57d66e;});if(_0x4c11c2){if(_0x4c11c2[_0xe88f('0x23')]!==_0xecf0ac[_0xe88f('0x23')][_0xe88f('0x31')]()){_0x4c11c2[_0xe88f('0x33')]=_[_0xe88f('0x34')](moment()[_0xe88f('0x2b')]('x'));}_0x4c11c2[_0xe88f('0x23')]=_0xecf0ac[_0xe88f('0x23')][_0xe88f('0x31')]();_0x4c11c2[_0xe88f('0x30')]=!![];_0x4c11c2[_0xe88f('0x40')](_0xecf0ac);}}}}catch(_0x3804a6){logger[_0xe88f('0x14')]('[userReport][devicestatechange]',util['inspect'](_0x3804a6,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xe88f('0x10')]=function(_0x184c93){try{if(this[_0xe88f('0x1d')](_0x184c93)&&this[_0xe88f('0x1d')](_0x184c93[_0xe88f('0x41')])){logger['info'](_0xe88f('0x42'),_0x184c93[_0xe88f('0x43')],_0x184c93[_0xe88f('0x44')],_0x184c93['peerstatus']);logger[_0xe88f('0x35')](_0xe88f('0x45'),util['inspect'](_0x184c93,{'showHidden':![],'depth':null}));if(this['agents'][_0x184c93[_0xe88f('0x43')]]){if(!this[_0xe88f('0x8')][_0x184c93['peer']]['local']||_0x184c93['peerstatus']['toLowerCase']()==_0xe88f('0x46')){this[_0xe88f('0x8')][_0x184c93[_0xe88f('0x43')]]['local']=![];this[_0xe88f('0x8')][_0x184c93[_0xe88f('0x43')]]['status']=_0x184c93[_0xe88f('0x41')]['toLowerCase']();this[_0xe88f('0x8')][_0x184c93[_0xe88f('0x43')]][_0xe88f('0x44')]=_0x184c93[_0xe88f('0x44')];this[_0xe88f('0x8')][_0x184c93[_0xe88f('0x43')]]['updateStatusRealtime'](_0x184c93);}}else if(this[_0xe88f('0x9')][_0x184c93[_0xe88f('0x43')]]){this['telephones'][_0x184c93[_0xe88f('0x43')]]['status']=_0x184c93[_0xe88f('0x41')][_0xe88f('0x31')]();this[_0xe88f('0x9')][_0x184c93[_0xe88f('0x43')]][_0xe88f('0x44')]=_0x184c93['address'];logger[_0xe88f('0x35')](_0xe88f('0x47'),util[_0xe88f('0x18')](this[_0xe88f('0x9')][_0x184c93[_0xe88f('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xe88f('0x2b')](_0xe88f('0x36'),this[_0xe88f('0x9')][_0x184c93[_0xe88f('0x43')]][_0xe88f('0x2d')]),_0xe88f('0x37'),this[_0xe88f('0x9')][_0x184c93[_0xe88f('0x43')]]);}else if(this[_0xe88f('0x7')][_0x184c93[_0xe88f('0x43')]]){this[_0xe88f('0x7')][_0x184c93[_0xe88f('0x43')]][_0xe88f('0x48')]=_0x184c93[_0xe88f('0x41')][_0xe88f('0x31')]();this[_0xe88f('0x7')][_0x184c93[_0xe88f('0x43')]][_0xe88f('0x44')]=_0x184c93[_0xe88f('0x44')];logger[_0xe88f('0x35')](_0xe88f('0x49'),util['inspect'](this[_0xe88f('0x7')][_0x184c93[_0xe88f('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xe88f('0x2b')](_0xe88f('0x2c'),this[_0xe88f('0x7')][_0x184c93[_0xe88f('0x43')]][_0xe88f('0x2d')]),'trunk:save',this['trunks'][_0x184c93[_0xe88f('0x43')]]);}}}catch(_0x378757){logger[_0xe88f('0x14')](_0xe88f('0x45'),util[_0xe88f('0x18')](_0x378757,{'showHidden':![],'depth':null}));}};module[_0xe88f('0x4a')]=UserReport;
\ No newline at end of file
index ca8208f..df62ad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4404=['membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','transfereeuniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','util','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceQueues','agents','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','isUndefined','YYYY-MM-DD\x20HH:mm:ss','called','queue','type','inbound','merge','omit','privilege','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','user:%s','membername','user:called','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','lastevent','interface','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','error','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','talktime','acw','acwtime','acwTimeout','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','keys','variable','variables','[%s][voiceAgentReport][varset]','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0x4404,0x1ef));var _0x4440=function(_0xb6e1b4,_0x3808c8){_0xb6e1b4=_0xb6e1b4-0x0;var _0xa10683=_0x4404[_0xb6e1b4];return _0xa10683;};'use strict';var _=require(_0x4440('0x0'));var moment=require('moment');var util=require(_0x4440('0x1'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x4440('0x2'))(_0x4440('0x3'));var ami=require(_0x4440('0x4'));config[_0x4440('0x5')]=_[_0x4440('0x6')](config[_0x4440('0x5')],{'host':_0x4440('0x7'),'port':0x18eb});var io=require(_0x4440('0x8'))(new Redis(config['redis']));function VoiceAgentReport(_0x3758e7){this[_0x4440('0x9')]={};this[_0x4440('0xa')]=_0x3758e7[_0x4440('0xa')];this['agents']=_0x3758e7[_0x4440('0xb')];this['variables']={};ami['on'](_0x4440('0xc'),this[_0x4440('0xd')][_0x4440('0xe')](this));ami['on'](_0x4440('0xf'),this[_0x4440('0x10')][_0x4440('0xe')](this));ami['on'](_0x4440('0x11'),this[_0x4440('0x12')][_0x4440('0xe')](this));ami['on'](_0x4440('0x13'),this[_0x4440('0x14')][_0x4440('0xe')](this));ami['on'](_0x4440('0x15'),this[_0x4440('0x16')][_0x4440('0xe')](this));ami['on']('varset',this[_0x4440('0x17')]['bind'](this));ami['on'](_0x4440('0x18'),this[_0x4440('0x19')][_0x4440('0xe')](this));ami['on'](_0x4440('0x1a'),this[_0x4440('0x1b')]['bind'](this));ami['on'](_0x4440('0x1c'),this[_0x4440('0x1d')][_0x4440('0xe')](this));ami['on'](_0x4440('0x1e'),this['syncAttendedTransfer'][_0x4440('0xe')](this));ami['on'](_0x4440('0x1f'),this[_0x4440('0x20')]['bind'](this));}VoiceAgentReport[_0x4440('0x21')][_0x4440('0x22')]=function(_0x5779c4,_0x3c6fc1,_0x4ed2b2){io['to'](_0x5779c4)[_0x4440('0x22')](_0x3c6fc1,_0x4ed2b2);};VoiceAgentReport[_0x4440('0x21')][_0x4440('0x23')]=function(_0x448321){return _0x448321!==null&&!_['isUndefined'](_0x448321);};VoiceAgentReport[_0x4440('0x21')][_0x4440('0xd')]=function(_0x26908b){try{if(this[_0x4440('0x23')](_0x26908b)){logger[_0x4440('0x24')](_0x4440('0x25'),_0x26908b[_0x4440('0x26')],_0x26908b['membername'],_0x26908b[_0x4440('0x27')]);logger[_0x4440('0x28')](_0x4440('0x29'),_0x26908b['uniqueid'],util[_0x4440('0x2a')](_0x26908b,{'showHidden':![],'depth':null}));if(_[_0x4440('0x2b')](this[_0x4440('0x9')][_0x26908b[_0x4440('0x26')]])){this[_0x4440('0x9')][_0x26908b[_0x4440('0x26')]]={};}if(_[_0x4440('0x2b')](this[_0x4440('0x9')][_0x26908b[_0x4440('0x26')]][_0x26908b[_0x4440('0x27')]])){this[_0x4440('0x9')][_0x26908b['uniqueid']][_0x26908b[_0x4440('0x27')]]={'agentcalledAt':moment()['format'](_0x4440('0x2c')),'lastevent':_0x4440('0x2d'),'mandatoryDisposition':this[_0x4440('0xa')][_0x26908b['queue']]?this[_0x4440('0xa')][_0x26908b['queue']]['mandatoryDisposition']||![]:![],'type':this[_0x4440('0xa')][_0x26908b[_0x4440('0x2e')]]?this[_0x4440('0xa')][_0x26908b[_0x4440('0x2e')]][_0x4440('0x2f')]||'inbound':_0x4440('0x30'),'variables':this['variables'][_0x26908b[_0x4440('0x26')]]};}_[_0x4440('0x31')](this[_0x4440('0x9')][_0x26908b[_0x4440('0x26')]][_0x26908b['destuniqueid']],_[_0x4440('0x32')](_0x26908b,['event',_0x4440('0x33')]));logger[_0x4440('0x28')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x26908b[_0x4440('0x26')],util['inspect'](this[_0x4440('0x9')][_0x26908b[_0x4440('0x26')]][_0x26908b[_0x4440('0x27')]],{'showHidden':![],'depth':null}));ami[_0x4440('0x22')](_0x4440('0x34'),this[_0x4440('0x9')][_0x26908b['uniqueid']][_0x26908b[_0x4440('0x27')]]);logger[_0x4440('0x28')](_0x4440('0x35'),_0x26908b[_0x4440('0x26')],util[_0x4440('0x2a')](this['channels'][_0x26908b[_0x4440('0x26')]][_0x26908b[_0x4440('0x27')]],{'showHidden':![],'depth':null}));this[_0x4440('0x22')](util[_0x4440('0x36')](_0x4440('0x37'),_0x26908b[_0x4440('0x38')]),_0x4440('0x39'),this[_0x4440('0x9')][_0x26908b[_0x4440('0x26')]][_0x26908b[_0x4440('0x27')]]);}}catch(_0x20dc8b){logger['error']('[%s][voiceAgentReport][agentcalled]',_0x26908b[_0x4440('0x26')],util[_0x4440('0x2a')](_0x20dc8b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4440('0x21')]['syncAgentConnect']=function(_0x5deed9){try{if(this['isNotNull'](_0x5deed9)){if(this[_0x4440('0x9')][_0x5deed9[_0x4440('0x26')]]){logger[_0x4440('0x28')](_0x4440('0x3a'),_0x5deed9[_0x4440('0x26')],util[_0x4440('0x2a')](_0x5deed9,{'showHidden':![],'depth':null}));for(var _0x568914 in this['channels'][_0x5deed9[_0x4440('0x26')]]){if(this['channels'][_0x5deed9[_0x4440('0x26')]][_0x4440('0x3b')](_0x568914)){if(_0x5deed9[_0x4440('0x27')]===_0x568914){logger[_0x4440('0x24')](_0x4440('0x3c'),_0x5deed9[_0x4440('0x26')],_0x5deed9['membername'],_0x5deed9[_0x4440('0x27')]);this[_0x4440('0x9')][_0x5deed9[_0x4440('0x26')]][_0x568914][_0x4440('0x3d')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x4440('0x9')][_0x5deed9['uniqueid']][_0x568914][_0x4440('0x3e')]=_0x5deed9[_0x4440('0x3e')];this[_0x4440('0x9')][_0x5deed9[_0x4440('0x26')]][_0x568914][_0x4440('0x3f')]=_0x5deed9['connectedlinenum'];this['channels'][_0x5deed9[_0x4440('0x26')]][_0x568914][_0x4440('0x40')]=_0x5deed9[_0x4440('0x40')];this[_0x4440('0x9')][_0x5deed9['uniqueid']][_0x568914]['destchannelstatedesc']=_0x5deed9[_0x4440('0x41')];this['channels'][_0x5deed9['uniqueid']][_0x568914]['holdtime']=_0x5deed9['holdtime'];this[_0x4440('0x9')][_0x5deed9['uniqueid']][_0x568914][_0x4440('0x42')]='connect';_[_0x4440('0x31')](this[_0x4440('0xb')][_0x5deed9[_0x4440('0x43')]],_[_0x4440('0x44')](_0x5deed9,[_0x4440('0x2e'),_0x4440('0x45')]));logger[_0x4440('0x28')](_0x4440('0x46'),_0x5deed9[_0x4440('0x26')],util[_0x4440('0x2a')](this['channels'][_0x5deed9[_0x4440('0x26')]][_0x5deed9[_0x4440('0x27')]],{'showHidden':![],'depth':null}));ami['emit'](_0x4440('0x47'),this[_0x4440('0x9')][_0x5deed9['uniqueid']][_0x5deed9[_0x4440('0x27')]]);logger[_0x4440('0x28')](_0x4440('0x48'),_0x5deed9[_0x4440('0x26')],util[_0x4440('0x2a')](this['channels'][_0x5deed9[_0x4440('0x26')]][_0x5deed9[_0x4440('0x27')]],{'showHidden':![],'depth':null}));this[_0x4440('0x22')](util[_0x4440('0x36')](_0x4440('0x37'),_0x5deed9['membername']),'user:agentconnect',this[_0x4440('0x9')][_0x5deed9[_0x4440('0x26')]][_0x5deed9[_0x4440('0x27')]]);}else if(!this[_0x4440('0x9')][_0x5deed9['uniqueid']][_0x568914][_0x4440('0x11')]&&!this['channels'][_0x5deed9[_0x4440('0x26')]][_0x568914]['agentcomplete']){logger[_0x4440('0x24')](_0x4440('0x49'),_0x5deed9[_0x4440('0x26')],this['channels'][_0x5deed9[_0x4440('0x26')]][_0x568914]['membername'],_0x568914);this[_0x4440('0x9')][_0x5deed9[_0x4440('0x26')]][_0x568914][_0x4440('0x11')]=!![];this[_0x4440('0x9')][_0x5deed9[_0x4440('0x26')]][_0x568914][_0x4440('0x4a')]=moment()[_0x4440('0x36')](_0x4440('0x2c'));this[_0x4440('0x9')][_0x5deed9[_0x4440('0x26')]][_0x568914][_0x4440('0x4b')]=_0x5deed9[_0x4440('0x27')];this[_0x4440('0x9')][_0x5deed9[_0x4440('0x26')]][_0x568914][_0x4440('0x4c')]=_0x5deed9['membername'];this['channels'][_0x5deed9[_0x4440('0x26')]][_0x568914][_0x4440('0x42')]=_0x4440('0x4d');this[_0x4440('0x9')][_0x5deed9[_0x4440('0x26')]][_0x568914][_0x4440('0x4e')]=_0x4440('0x4d');logger[_0x4440('0x28')](_0x4440('0x4f'),_0x5deed9[_0x4440('0x26')],util[_0x4440('0x2a')](this[_0x4440('0x9')][_0x5deed9[_0x4440('0x26')]][_0x568914],{'showHidden':![],'depth':null}));ami[_0x4440('0x22')](_0x4440('0x50'),this['channels'][_0x5deed9[_0x4440('0x26')]][_0x568914]);}}}}}}catch(_0x2bf9d7){logger[_0x4440('0x51')](_0x4440('0x52'),_0x5deed9[_0x4440('0x26')],util[_0x4440('0x2a')](_0x2bf9d7,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4440('0x21')][_0x4440('0x12')]=function(_0x306bda){try{if(this[_0x4440('0x23')](_0x306bda)){logger[_0x4440('0x28')](_0x4440('0x53'),_0x306bda[_0x4440('0x26')],util[_0x4440('0x2a')](_0x306bda,{'showHidden':![],'depth':null}));if(this[_0x4440('0x9')][_0x306bda[_0x4440('0x26')]]&&this[_0x4440('0x9')][_0x306bda[_0x4440('0x26')]][_0x306bda['destuniqueid']]){logger[_0x4440('0x24')](_0x4440('0x54'),_0x306bda['uniqueid'],_0x306bda[_0x4440('0x38')],_0x306bda[_0x4440('0x27')]);this['channels'][_0x306bda[_0x4440('0x26')]][_0x306bda[_0x4440('0x27')]][_0x4440('0x11')]=!![];this[_0x4440('0x9')][_0x306bda[_0x4440('0x26')]][_0x306bda[_0x4440('0x27')]][_0x4440('0x4a')]=moment()[_0x4440('0x36')](_0x4440('0x2c'));this[_0x4440('0x9')][_0x306bda[_0x4440('0x26')]][_0x306bda['destuniqueid']][_0x4440('0x42')]=_0x4440('0x55');this['channels'][_0x306bda[_0x4440('0x26')]][_0x306bda[_0x4440('0x27')]][_0x4440('0x4e')]=_0x4440('0x55');logger[_0x4440('0x28')](_0x4440('0x56'),_0x306bda[_0x4440('0x26')],util['inspect'](this['channels'][_0x306bda[_0x4440('0x26')]][_0x306bda[_0x4440('0x27')]],{'showHidden':![],'depth':null}));ami['emit']('custom:agentringnoanswer',this[_0x4440('0x9')][_0x306bda[_0x4440('0x26')]][_0x306bda['destuniqueid']]);}}}catch(_0x5835be){logger[_0x4440('0x51')]('[%s][voiceAgentReport][agentringnoanswer]',_0x306bda[_0x4440('0x26')],util[_0x4440('0x2a')](_0x5835be,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4440('0x21')][_0x4440('0x14')]=function(_0x1ba60c){try{if(this[_0x4440('0x23')](_0x1ba60c)){logger[_0x4440('0x28')](_0x4440('0x57'),_0x1ba60c[_0x4440('0x26')],util[_0x4440('0x2a')](_0x1ba60c,{'showHidden':![],'depth':null}));if(this[_0x4440('0x9')][_0x1ba60c['uniqueid']]){for(var _0x43d0cd in this[_0x4440('0x9')][_0x1ba60c[_0x4440('0x26')]]){if(this[_0x4440('0x9')][_0x1ba60c[_0x4440('0x26')]][_0x4440('0x3b')](_0x43d0cd)&&!this[_0x4440('0x9')][_0x1ba60c[_0x4440('0x26')]][_0x43d0cd]['agentringnoanswer']&&!this[_0x4440('0x9')][_0x1ba60c[_0x4440('0x26')]][_0x43d0cd][_0x4440('0x15')]){logger[_0x4440('0x24')](_0x4440('0x58'),_0x1ba60c[_0x4440('0x26')],this[_0x4440('0x9')][_0x1ba60c[_0x4440('0x26')]][_0x43d0cd]['membername'],_0x43d0cd);this[_0x4440('0x9')][_0x1ba60c[_0x4440('0x26')]][_0x43d0cd]['agentringnoanswer']=!![];this[_0x4440('0x9')][_0x1ba60c[_0x4440('0x26')]][_0x43d0cd][_0x4440('0x4a')]=moment()['format'](_0x4440('0x2c'));this['channels'][_0x1ba60c[_0x4440('0x26')]][_0x43d0cd][_0x4440('0x42')]='abandoned';this[_0x4440('0x9')][_0x1ba60c['uniqueid']][_0x43d0cd][_0x4440('0x4e')]='abandoned';logger['debug'](_0x4440('0x59'),_0x1ba60c[_0x4440('0x26')],util[_0x4440('0x2a')](this['channels'][_0x1ba60c[_0x4440('0x26')]][_0x43d0cd],{'showHidden':![],'depth':null}));ami[_0x4440('0x22')](_0x4440('0x5a'),this[_0x4440('0x9')][_0x1ba60c[_0x4440('0x26')]][_0x43d0cd]);}}}}}catch(_0x505790){logger[_0x4440('0x51')]('[%s][voiceAgentReport][queuecallerabandon]',_0x1ba60c[_0x4440('0x26')],util[_0x4440('0x2a')](_0x505790,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4440('0x21')][_0x4440('0x16')]=function(_0x329542){try{if(this[_0x4440('0x23')](_0x329542)){logger['debug'](_0x4440('0x5b'),_0x329542[_0x4440('0x26')],util[_0x4440('0x2a')](_0x329542,{'showHidden':![],'depth':null}));if(this['channels'][_0x329542[_0x4440('0x26')]]){for(var _0x406fce in this[_0x4440('0x9')][_0x329542[_0x4440('0x26')]]){if(this['channels'][_0x329542[_0x4440('0x26')]][_0x4440('0x3b')](_0x406fce)){if(this[_0x4440('0x9')][_0x329542['uniqueid']][_0x406fce][_0x4440('0x3d')]&&!this['channels'][_0x329542[_0x4440('0x26')]][_0x406fce][_0x4440('0x15')]){logger[_0x4440('0x24')](_0x4440('0x5c'),_0x329542[_0x4440('0x26')],this['channels'][_0x329542[_0x4440('0x26')]][_0x406fce]['membername'],_0x406fce);this[_0x4440('0x9')][_0x329542[_0x4440('0x26')]][_0x406fce][_0x4440('0x15')]=!![];this['channels'][_0x329542[_0x4440('0x26')]][_0x406fce][_0x4440('0x5d')]=moment()[_0x4440('0x36')](_0x4440('0x2c'));this['channels'][_0x329542[_0x4440('0x26')]][_0x406fce][_0x4440('0x42')]=_0x4440('0x5e');this[_0x4440('0x9')][_0x329542['uniqueid']][_0x406fce][_0x4440('0x4e')]=_0x329542['reason']==_0x4440('0x5f')?'agent':_0x329542['reason'];this[_0x4440('0x9')][_0x329542[_0x4440('0x26')]][_0x406fce]['talktime']=_0x329542[_0x4440('0x60')];if(this[_0x4440('0xa')][_0x329542[_0x4440('0x2e')]]&&this[_0x4440('0xa')][_0x329542[_0x4440('0x2e')]][_0x4440('0x61')]){this[_0x4440('0x9')][_0x329542[_0x4440('0x26')]][_0x406fce][_0x4440('0x62')]=this[_0x4440('0xa')][_0x329542[_0x4440('0x2e')]][_0x4440('0x63')];this['channels'][_0x329542[_0x4440('0x26')]][_0x406fce][_0x4440('0x64')]=!![];}this[_0x4440('0xb')][_0x329542[_0x4440('0x43')]]=_[_0x4440('0x32')](this['agents'][_0x329542[_0x4440('0x43')]],[_0x4440('0x2e'),'destconnectedlinenum']);logger[_0x4440('0x28')](_0x4440('0x65'),_0x329542[_0x4440('0x26')],util[_0x4440('0x2a')](this[_0x4440('0x9')][_0x329542[_0x4440('0x26')]][_0x406fce],{'showHidden':![],'depth':null}));ami['emit'](_0x4440('0x66'),this['channels'][_0x329542[_0x4440('0x26')]][_0x406fce]);logger[_0x4440('0x28')](_0x4440('0x67'),_0x329542[_0x4440('0x26')],util[_0x4440('0x2a')](this[_0x4440('0x9')][_0x329542[_0x4440('0x26')]][_0x406fce],{'showHidden':![],'depth':null}));this[_0x4440('0x22')](util[_0x4440('0x36')](_0x4440('0x37'),_0x329542['membername']),'user:agentcomplete',this[_0x4440('0x9')][_0x329542[_0x4440('0x26')]][_0x406fce]);}}}}}}catch(_0x14013c){logger[_0x4440('0x51')](_0x4440('0x68'),_0x329542['uniqueid'],util[_0x4440('0x2a')](_0x14013c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4440('0x21')][_0x4440('0x17')]=function(_0x5af59f){try{if(this[_0x4440('0x23')](_0x5af59f)){logger[_0x4440('0x28')](_0x4440('0x69'),_0x5af59f[_0x4440('0x26')],util['inspect'](_0x5af59f,{'showHidden':![],'depth':null}));this[_0x4440('0x6a')](_0x5af59f[_0x4440('0x26')],_['keys'](_0x5af59f['variable'])[0x0],_0x5af59f[_0x4440('0x6b')]);if(this[_0x4440('0x9')][_0x5af59f[_0x4440('0x26')]]){for(var _0x42b9a1 in this[_0x4440('0x9')][_0x5af59f['uniqueid']]){if(this[_0x4440('0x9')][_0x5af59f['uniqueid']][_0x4440('0x3b')](_0x42b9a1)){logger[_0x4440('0x24')](_0x4440('0x6c'),_0x5af59f[_0x4440('0x26')],_0x42b9a1,_[_0x4440('0x6d')](_0x5af59f[_0x4440('0x6e')])[0x0],_0x5af59f[_0x4440('0x6b')]);if(_[_0x4440('0x2b')](this['channels'][_0x5af59f[_0x4440('0x26')]][_0x42b9a1][_0x4440('0x6f')])){this['channels'][_0x5af59f[_0x4440('0x26')]][_0x42b9a1][_0x4440('0x6f')]={};}this[_0x4440('0x9')][_0x5af59f['uniqueid']][_0x42b9a1][_0x4440('0x6f')]=this['variables'][_0x5af59f[_0x4440('0x26')]];}}}}}catch(_0x3f21df){logger[_0x4440('0x51')](_0x4440('0x70'),_0x5af59f[_0x4440('0x26')],util['inspect'](_0x3f21df,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x4440('0x6a')]=function(_0xf2256f,_0x276dde,_0x30ac9e){var _0x330da0=['rtpaudioqos','rtpaudioqosbridged',_0x4440('0x71'),_0x4440('0x72'),'rtpaudioqosloss',_0x4440('0x73'),_0x4440('0x74'),_0x4440('0x75'),_0x4440('0x76'),_0x4440('0x77'),_0x4440('0x78'),'bridgepvtcallid',_0x4440('0x79'),_0x4440('0x7a'),_0x4440('0x7b'),_0x4440('0x7c'),_0x4440('0x38'),'memberpenalty',_0x4440('0x7d')];if(!_[_0x4440('0x7e')](_0x276dde)&&!_[_0x4440('0x7f')](_0x330da0,_0x276dde)){if(_[_0x4440('0x2b')](this[_0x4440('0x6f')][_0xf2256f])){this['variables'][_0xf2256f]={};}this[_0x4440('0x6f')][_0xf2256f][_0x276dde]=_0x30ac9e;}};VoiceAgentReport[_0x4440('0x21')][_0x4440('0x19')]=function(_0xe1e451){try{if(this['isNotNull'](_0xe1e451)){logger[_0x4440('0x28')](_0x4440('0x80'),_0xe1e451['uniqueid'],util[_0x4440('0x2a')](_0xe1e451,{'showHidden':![],'depth':null}));if(this[_0x4440('0x9')][_0xe1e451[_0x4440('0x26')]]){for(var _0x59b1a0 in this['channels'][_0xe1e451[_0x4440('0x26')]]){if(this['channels'][_0xe1e451[_0x4440('0x26')]][_0x4440('0x3b')](_0x59b1a0)){if(this[_0x4440('0x9')][_0xe1e451[_0x4440('0x26')]][_0x59b1a0][_0x4440('0x4e')]==_0x4440('0x5f')&&this[_0x4440('0x9')][_0xe1e451[_0x4440('0x26')]][_0x59b1a0]['agentcomplete']){logger[_0x4440('0x24')](_0x4440('0x81'),_0xe1e451['uniqueid'],_0x59b1a0);this[_0x4440('0x9')][_0xe1e451[_0x4440('0x26')]][_0x59b1a0][_0x4440('0x5d')]=moment()[_0x4440('0x36')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x4440('0x28')](_0x4440('0x82'),_0xe1e451[_0x4440('0x26')],util[_0x4440('0x2a')](_[_0x4440('0x83')](this[_0x4440('0x9')][_0xe1e451['uniqueid']]),{'showHidden':![],'depth':null}));ami['emit'](_0x4440('0x84'),_[_0x4440('0x83')](this['channels'][_0xe1e451[_0x4440('0x26')]]));delete this[_0x4440('0x9')][_0xe1e451[_0x4440('0x26')]];}if(this[_0x4440('0x6f')][_0xe1e451[_0x4440('0x26')]]){delete this[_0x4440('0x6f')][_0xe1e451[_0x4440('0x26')]];}}}catch(_0x52ae3e){logger[_0x4440('0x51')](_0x4440('0x85'),_0xe1e451[_0x4440('0x26')],util[_0x4440('0x2a')](_0x52ae3e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4440('0x21')][_0x4440('0x86')]=function(_0x29d62b){try{if(this[_0x4440('0x23')](_0x29d62b)){logger[_0x4440('0x28')]('[%s][voiceAgentReport][attendedtransfer]\x20event:',_0x29d62b['uniqueid'],util[_0x4440('0x2a')](_0x29d62b,{'showHidden':![],'depth':null}));if(this['channels'][_0x29d62b[_0x4440('0x87')]]){for(var _0x3096cf in this[_0x4440('0x9')][_0x29d62b[_0x4440('0x87')]]){if(this[_0x4440('0x9')][_0x29d62b[_0x4440('0x87')]][_0x4440('0x3b')](_0x3096cf)){if(_0x29d62b['origtransfereruniqueid']===_0x3096cf){logger['info'](_0x4440('0x88'),_0x29d62b[_0x4440('0x26')],this['channels'][_0x29d62b[_0x4440('0x87')]][_0x3096cf][_0x4440('0x38')],_0x3096cf);var _0x427582=moment();this[_0x4440('0x9')][_0x29d62b[_0x4440('0x87')]][_0x3096cf]['agentcomplete']=!![];this[_0x4440('0x9')][_0x29d62b[_0x4440('0x87')]][_0x3096cf][_0x4440('0x5d')]=moment()['format'](_0x4440('0x2c'));this[_0x4440('0x9')][_0x29d62b['transfereeuniqueid']][_0x3096cf]['lastevent']=_0x4440('0x5e');this[_0x4440('0x9')][_0x29d62b[_0x4440('0x87')]][_0x3096cf][_0x4440('0x4e')]='transfer';this[_0x4440('0x9')][_0x29d62b[_0x4440('0x87')]][_0x3096cf][_0x4440('0x60')]=_0x427582[_0x4440('0x89')](this[_0x4440('0x9')][_0x29d62b[_0x4440('0x87')]][_0x3096cf][_0x4440('0x3d')],_0x4440('0x8a'));}}}}if(this[_0x4440('0x9')][_0x29d62b[_0x4440('0x8b')]]){var _0x2de8f0=this[_0x4440('0x9')][_0x29d62b[_0x4440('0x8b')]];this[_0x4440('0x9')][_0x29d62b['secondtransfereruniqueid']]=this[_0x4440('0x9')][_0x29d62b[_0x4440('0x87')]];this[_0x4440('0x9')][_0x29d62b[_0x4440('0x87')]]=_0x2de8f0;}}}catch(_0xa77e12){logger[_0x4440('0x51')](_0x4440('0x8c'),_0x29d62b[_0x4440('0x26')],util['inspect'](_0xa77e12,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4440('0x21')][_0x4440('0x20')]=function(_0x2fe25e){try{if(this[_0x4440('0x23')](_0x2fe25e)){logger[_0x4440('0x28')](_0x4440('0x8d'),_0x2fe25e['uniqueid'],util[_0x4440('0x2a')](_0x2fe25e,{'showHidden':![],'depth':null}));if(this['channels'][_0x2fe25e[_0x4440('0x87')]]){for(var _0x4e6684 in this['channels'][_0x2fe25e[_0x4440('0x87')]]){if(this[_0x4440('0x9')][_0x2fe25e[_0x4440('0x87')]][_0x4440('0x3b')](_0x4e6684)){if(_0x2fe25e[_0x4440('0x8e')]===_0x4e6684){logger[_0x4440('0x24')]('[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x2fe25e['uniqueid'],this[_0x4440('0x9')][_0x2fe25e['transfereeuniqueid']][_0x4e6684][_0x4440('0x38')],_0x4e6684);var _0x37eeb4=moment();this[_0x4440('0x9')][_0x2fe25e[_0x4440('0x87')]][_0x4e6684][_0x4440('0x15')]=!![];this[_0x4440('0x9')][_0x2fe25e[_0x4440('0x87')]][_0x4e6684][_0x4440('0x5d')]=_0x37eeb4;this[_0x4440('0x9')][_0x2fe25e[_0x4440('0x87')]][_0x4e6684][_0x4440('0x42')]=_0x4440('0x5e');this[_0x4440('0x9')][_0x2fe25e[_0x4440('0x87')]][_0x4e6684]['reason']=_0x4440('0x5f');this[_0x4440('0x9')][_0x2fe25e[_0x4440('0x87')]][_0x4e6684][_0x4440('0x60')]=_0x37eeb4[_0x4440('0x89')](this[_0x4440('0x9')][_0x2fe25e[_0x4440('0x87')]][_0x4e6684][_0x4440('0x3d')],_0x4440('0x8a'));}}}}}}catch(_0x374119){logger[_0x4440('0x51')](_0x4440('0x8f'),_0x2fe25e['uniqueid'],util[_0x4440('0x2a')](_0x374119,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4440('0x21')][_0x4440('0x1b')]=function(_0x54bdeb){var _0x45e206='';try{if(this['isNotNull'](_0x54bdeb)){logger[_0x4440('0x28')](_0x4440('0x90'),_0x54bdeb[_0x4440('0x26')],util[_0x4440('0x2a')](_0x54bdeb,{'showHidden':![],'depth':null}));if(_0x54bdeb[_0x4440('0x91')]){_0x45e206=_0x54bdeb[_0x4440('0x91')][_0x4440('0x92')](0x0,_0x54bdeb[_0x4440('0x91')][_0x4440('0x93')]('-'));if(this[_0x4440('0xb')][_0x45e206]){logger['info']('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0x54bdeb[_0x4440('0x26')],_0x45e206);this[_0x4440('0xb')][_0x45e206][_0x4440('0x94')]=!![];}}}}catch(_0x171142){logger[_0x4440('0x51')](_0x4440('0x95'),_0x54bdeb[_0x4440('0x26')],util[_0x4440('0x2a')](_0x171142,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x4440('0x21')][_0x4440('0x1d')]=function(_0x525950){var _0x481387='';try{if(this['isNotNull'](_0x525950)){logger[_0x4440('0x28')](_0x4440('0x96'),_0x525950[_0x4440('0x26')],util['inspect'](_0x525950,{'showHidden':![],'depth':null}));if(_0x525950[_0x4440('0x91')]){_0x481387=_0x525950[_0x4440('0x91')][_0x4440('0x92')](0x0,_0x525950['channel']['lastIndexOf']('-'));if(this[_0x4440('0xb')][_0x481387]){logger['info'](_0x4440('0x97'),_0x525950[_0x4440('0x26')],_0x481387);this[_0x4440('0xb')][_0x481387][_0x4440('0x94')]=![];}}}}catch(_0x1823e9){logger[_0x4440('0x51')](_0x4440('0x98'),_0x525950['uniqueid'],util['inspect'](_0x1823e9,{'showHidden':![],'depth':null}));}};module[_0x4440('0x99')]=VoiceAgentReport;
\ No newline at end of file
+var _0xed95=['rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','diff','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','syncBlindTransfer','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','channels','voiceChannels','voiceQueues','variables','agentcalled','syncAgentCalled','bind','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','agentcomplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','syncMusicOnHoldStop','syncAttendedTransfer','emit','prototype','isNotNull','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','isUndefined','destuniqueid','YYYY-MM-DD\x20HH:mm:ss','called','queue','mandatoryDisposition','inbound','voice','merge','event','privilege','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','user:%s','user:called','[%s][voiceAgentReport][agentconnect]\x20event:','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','interface','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','reason','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','error','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','agentconnectAt','agentcompleteAt','complete','transfer','agent','talktime','acw','acwTimeout','agentacw','agents','omit','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xed95,0xb9));var _0x5ed9=function(_0x199d40,_0x2bd51d){_0x199d40=_0x199d40-0x0;var _0x1e01a5=_0xed95[_0x199d40];return _0x1e01a5;};'use strict';var _=require(_0x5ed9('0x0'));var moment=require(_0x5ed9('0x1'));var util=require(_0x5ed9('0x2'));var Redis=require(_0x5ed9('0x3'));var config=require(_0x5ed9('0x4'));var logger=require(_0x5ed9('0x5'))(_0x5ed9('0x6'));var ami=require(_0x5ed9('0x7'));config[_0x5ed9('0x8')]=_[_0x5ed9('0x9')](config[_0x5ed9('0x8')],{'host':_0x5ed9('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function VoiceAgentReport(_0x2612a8){this[_0x5ed9('0xb')]={};this[_0x5ed9('0xc')]=_0x2612a8[_0x5ed9('0xb')];this[_0x5ed9('0xd')]=_0x2612a8[_0x5ed9('0xd')];this['agents']=_0x2612a8['agents'];this[_0x5ed9('0xe')]={};ami['on'](_0x5ed9('0xf'),this[_0x5ed9('0x10')][_0x5ed9('0x11')](this));ami['on']('agentconnect',this['syncAgentConnect'][_0x5ed9('0x11')](this));ami['on'](_0x5ed9('0x12'),this[_0x5ed9('0x13')][_0x5ed9('0x11')](this));ami['on']('queuecallerabandon',this[_0x5ed9('0x14')][_0x5ed9('0x11')](this));ami['on'](_0x5ed9('0x15'),this['syncAgentComplete']['bind'](this));ami['on'](_0x5ed9('0x16'),this[_0x5ed9('0x17')]['bind'](this));ami['on'](_0x5ed9('0x18'),this[_0x5ed9('0x19')]['bind'](this));ami['on']('musiconholdstart',this[_0x5ed9('0x1a')][_0x5ed9('0x11')](this));ami['on']('musiconholdstop',this[_0x5ed9('0x1b')][_0x5ed9('0x11')](this));ami['on']('attendedtransfer',this[_0x5ed9('0x1c')][_0x5ed9('0x11')](this));ami['on']('blindtransfer',this['syncBlindTransfer']['bind'](this));}VoiceAgentReport['prototype'][_0x5ed9('0x1d')]=function(_0x409a26,_0x3892d8,_0x44b8ca){io['to'](_0x409a26)['emit'](_0x3892d8,_0x44b8ca);};VoiceAgentReport[_0x5ed9('0x1e')][_0x5ed9('0x1f')]=function(_0x5cb2c1){return _0x5cb2c1!==null&&!_['isUndefined'](_0x5cb2c1);};VoiceAgentReport['prototype'][_0x5ed9('0x10')]=function(_0x26a3c8){try{if(this['isNotNull'](_0x26a3c8)){logger[_0x5ed9('0x20')](_0x5ed9('0x21'),_0x26a3c8[_0x5ed9('0x22')],_0x26a3c8[_0x5ed9('0x23')],_0x26a3c8['destuniqueid']);logger[_0x5ed9('0x24')](_0x5ed9('0x25'),_0x26a3c8[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_0x26a3c8,{'showHidden':![],'depth':null}));if(_[_0x5ed9('0x27')](this[_0x5ed9('0xb')][_0x26a3c8['uniqueid']])){this['channels'][_0x26a3c8[_0x5ed9('0x22')]]={};}if(_[_0x5ed9('0x27')](this[_0x5ed9('0xb')][_0x26a3c8['uniqueid']][_0x26a3c8['destuniqueid']])){this[_0x5ed9('0xb')][_0x26a3c8[_0x5ed9('0x22')]][_0x26a3c8[_0x5ed9('0x28')]]={'agentcalledAt':moment()['format'](_0x5ed9('0x29')),'lastevent':_0x5ed9('0x2a'),'mandatoryDisposition':this[_0x5ed9('0xd')][_0x26a3c8['queue']]?this[_0x5ed9('0xd')][_0x26a3c8[_0x5ed9('0x2b')]][_0x5ed9('0x2c')]||![]:![],'type':this[_0x5ed9('0xd')][_0x26a3c8['queue']]?this['voiceQueues'][_0x26a3c8[_0x5ed9('0x2b')]]['type']||_0x5ed9('0x2d'):_0x5ed9('0x2d'),'variables':this[_0x5ed9('0xe')][_0x26a3c8[_0x5ed9('0x22')]],'motionChannel':_0x5ed9('0x2e')};}_[_0x5ed9('0x2f')](this[_0x5ed9('0xb')][_0x26a3c8['uniqueid']][_0x26a3c8['destuniqueid']],_['omit'](_0x26a3c8,[_0x5ed9('0x30'),_0x5ed9('0x31')]));logger[_0x5ed9('0x24')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x26a3c8[_0x5ed9('0x22')],util['inspect'](this[_0x5ed9('0xb')][_0x26a3c8[_0x5ed9('0x22')]][_0x26a3c8[_0x5ed9('0x28')]],{'showHidden':![],'depth':null}));ami[_0x5ed9('0x1d')](_0x5ed9('0x32'),this[_0x5ed9('0xb')][_0x26a3c8['uniqueid']][_0x26a3c8[_0x5ed9('0x28')]]);logger[_0x5ed9('0x24')](_0x5ed9('0x33'),_0x26a3c8['uniqueid'],util['inspect'](this[_0x5ed9('0xb')][_0x26a3c8[_0x5ed9('0x22')]][_0x26a3c8['destuniqueid']],{'showHidden':![],'depth':null}));this['emit'](util[_0x5ed9('0x34')](_0x5ed9('0x35'),_0x26a3c8[_0x5ed9('0x23')]),_0x5ed9('0x36'),this[_0x5ed9('0xb')][_0x26a3c8[_0x5ed9('0x22')]][_0x26a3c8[_0x5ed9('0x28')]]);}}catch(_0x9521c8){logger['error']('[%s][voiceAgentReport][agentcalled]',_0x26a3c8['uniqueid'],util[_0x5ed9('0x26')](_0x9521c8,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5ed9('0x1e')]['syncAgentConnect']=function(_0x34725e){try{if(this[_0x5ed9('0x1f')](_0x34725e)){if(this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]]){logger['debug'](_0x5ed9('0x37'),_0x34725e[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_0x34725e,{'showHidden':![],'depth':null}));for(var _0x45534b in this[_0x5ed9('0xb')][_0x34725e['uniqueid']]){if(this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]]['hasOwnProperty'](_0x45534b)){if(_0x34725e['destuniqueid']===_0x45534b){logger[_0x5ed9('0x20')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x34725e['uniqueid'],_0x34725e['membername'],_0x34725e[_0x5ed9('0x28')]);this[_0x5ed9('0xb')][_0x34725e['uniqueid']][_0x45534b]['agentconnectAt']=moment()[_0x5ed9('0x34')](_0x5ed9('0x29'));this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x38')]=_0x34725e[_0x5ed9('0x38')];this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x39')]=_0x34725e[_0x5ed9('0x39')];this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x3a')]=_0x34725e[_0x5ed9('0x3a')];this['channels'][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x3b')]=_0x34725e[_0x5ed9('0x3b')];this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x45534b]['holdtime']=_0x34725e[_0x5ed9('0x3c')];this['channels'][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x3d')]=_0x5ed9('0x3e');if(this[_0x5ed9('0xc')][this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x22')]]){var _0x53c64f=this['voiceChannels'][this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x45534b]['uniqueid']][_0x5ed9('0x3f')];this[_0x5ed9('0xb')][_0x34725e['uniqueid']][_0x45534b]['routealias']=_0x53c64f;_0x34725e[_0x5ed9('0x3f')]=_0x53c64f;}_[_0x5ed9('0x2f')](this['agents'][_0x34725e[_0x5ed9('0x40')]],_[_0x5ed9('0x41')](_0x34725e,[_0x5ed9('0x2b'),_0x5ed9('0x42'),_0x5ed9('0x3f')]));logger[_0x5ed9('0x24')](_0x5ed9('0x43'),_0x34725e[_0x5ed9('0x22')],util[_0x5ed9('0x26')](this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x34725e[_0x5ed9('0x28')]],{'showHidden':![],'depth':null}));ami[_0x5ed9('0x1d')]('custom:agentconnect',this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x34725e[_0x5ed9('0x28')]]);logger['debug'](_0x5ed9('0x44'),_0x34725e['uniqueid'],util[_0x5ed9('0x26')](this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x34725e[_0x5ed9('0x28')]],{'showHidden':![],'depth':null}));this[_0x5ed9('0x1d')](util[_0x5ed9('0x34')](_0x5ed9('0x35'),_0x34725e[_0x5ed9('0x23')]),_0x5ed9('0x45'),this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x34725e[_0x5ed9('0x28')]]);}else if(!this['channels'][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x12')]&&!this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x15')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x34725e['uniqueid'],this['channels'][_0x34725e['uniqueid']][_0x45534b][_0x5ed9('0x23')],_0x45534b);this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x12')]=!![];this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x46')]=moment()[_0x5ed9('0x34')](_0x5ed9('0x29'));this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x47')]=_0x34725e[_0x5ed9('0x28')];this[_0x5ed9('0xb')][_0x34725e['uniqueid']][_0x45534b][_0x5ed9('0x48')]=_0x34725e[_0x5ed9('0x23')];this[_0x5ed9('0xb')][_0x34725e[_0x5ed9('0x22')]][_0x45534b][_0x5ed9('0x3d')]=_0x5ed9('0x49');this['channels'][_0x34725e[_0x5ed9('0x22')]][_0x45534b]['reason']='answered_elsewhere';logger[_0x5ed9('0x24')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x34725e[_0x5ed9('0x22')],util[_0x5ed9('0x26')](this['channels'][_0x34725e[_0x5ed9('0x22')]][_0x45534b],{'showHidden':![],'depth':null}));ami[_0x5ed9('0x1d')](_0x5ed9('0x4a'),this[_0x5ed9('0xb')][_0x34725e['uniqueid']][_0x45534b]);}}}}}}catch(_0x4bed33){logger['error'](_0x5ed9('0x4b'),_0x34725e[_0x5ed9('0x22')],util['inspect'](_0x4bed33,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5ed9('0x1e')][_0x5ed9('0x13')]=function(_0x5d3306){try{if(this[_0x5ed9('0x1f')](_0x5d3306)){logger[_0x5ed9('0x24')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5d3306[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_0x5d3306,{'showHidden':![],'depth':null}));if(this[_0x5ed9('0xb')][_0x5d3306['uniqueid']]&&this[_0x5ed9('0xb')][_0x5d3306[_0x5ed9('0x22')]][_0x5d3306[_0x5ed9('0x28')]]){logger[_0x5ed9('0x20')](_0x5ed9('0x4c'),_0x5d3306[_0x5ed9('0x22')],_0x5d3306[_0x5ed9('0x23')],_0x5d3306[_0x5ed9('0x28')]);this['channels'][_0x5d3306[_0x5ed9('0x22')]][_0x5d3306[_0x5ed9('0x28')]][_0x5ed9('0x12')]=!![];this[_0x5ed9('0xb')][_0x5d3306[_0x5ed9('0x22')]][_0x5d3306[_0x5ed9('0x28')]][_0x5ed9('0x46')]=moment()[_0x5ed9('0x34')](_0x5ed9('0x29'));this[_0x5ed9('0xb')][_0x5d3306[_0x5ed9('0x22')]][_0x5d3306[_0x5ed9('0x28')]][_0x5ed9('0x3d')]=_0x5ed9('0x4d');this[_0x5ed9('0xb')][_0x5d3306[_0x5ed9('0x22')]][_0x5d3306['destuniqueid']][_0x5ed9('0x4e')]=_0x5ed9('0x4d');logger['debug'](_0x5ed9('0x4f'),_0x5d3306[_0x5ed9('0x22')],util[_0x5ed9('0x26')](this[_0x5ed9('0xb')][_0x5d3306[_0x5ed9('0x22')]][_0x5d3306[_0x5ed9('0x28')]],{'showHidden':![],'depth':null}));ami[_0x5ed9('0x1d')](_0x5ed9('0x50'),this['channels'][_0x5d3306[_0x5ed9('0x22')]][_0x5d3306['destuniqueid']]);}}}catch(_0x510c19){logger[_0x5ed9('0x51')](_0x5ed9('0x52'),_0x5d3306[_0x5ed9('0x22')],util['inspect'](_0x510c19,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5ed9('0x1e')][_0x5ed9('0x14')]=function(_0x13c9e2){try{if(this[_0x5ed9('0x1f')](_0x13c9e2)){logger[_0x5ed9('0x24')](_0x5ed9('0x53'),_0x13c9e2[_0x5ed9('0x22')],util['inspect'](_0x13c9e2,{'showHidden':![],'depth':null}));if(this['channels'][_0x13c9e2['uniqueid']]){for(var _0x2b2251 in this[_0x5ed9('0xb')][_0x13c9e2['uniqueid']]){if(this[_0x5ed9('0xb')][_0x13c9e2[_0x5ed9('0x22')]][_0x5ed9('0x54')](_0x2b2251)&&!this[_0x5ed9('0xb')][_0x13c9e2[_0x5ed9('0x22')]][_0x2b2251][_0x5ed9('0x12')]&&!this[_0x5ed9('0xb')][_0x13c9e2[_0x5ed9('0x22')]][_0x2b2251][_0x5ed9('0x15')]){logger[_0x5ed9('0x20')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x13c9e2[_0x5ed9('0x22')],this[_0x5ed9('0xb')][_0x13c9e2[_0x5ed9('0x22')]][_0x2b2251][_0x5ed9('0x23')],_0x2b2251);this[_0x5ed9('0xb')][_0x13c9e2[_0x5ed9('0x22')]][_0x2b2251][_0x5ed9('0x12')]=!![];this[_0x5ed9('0xb')][_0x13c9e2[_0x5ed9('0x22')]][_0x2b2251][_0x5ed9('0x46')]=moment()[_0x5ed9('0x34')](_0x5ed9('0x29'));this[_0x5ed9('0xb')][_0x13c9e2['uniqueid']][_0x2b2251][_0x5ed9('0x3d')]='abandoned';this[_0x5ed9('0xb')][_0x13c9e2[_0x5ed9('0x22')]][_0x2b2251]['reason']='abandoned';logger['debug'](_0x5ed9('0x55'),_0x13c9e2[_0x5ed9('0x22')],util[_0x5ed9('0x26')](this[_0x5ed9('0xb')][_0x13c9e2[_0x5ed9('0x22')]][_0x2b2251],{'showHidden':![],'depth':null}));ami['emit']('custom:agentqueuecallerabandon',this[_0x5ed9('0xb')][_0x13c9e2[_0x5ed9('0x22')]][_0x2b2251]);}}}}}catch(_0x2aaa14){logger[_0x5ed9('0x51')]('[%s][voiceAgentReport][queuecallerabandon]',_0x13c9e2['uniqueid'],util[_0x5ed9('0x26')](_0x2aaa14,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAgentComplete']=function(_0x195940){try{if(this[_0x5ed9('0x1f')](_0x195940)){logger[_0x5ed9('0x24')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x195940[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_0x195940,{'showHidden':![],'depth':null}));if(this['channels'][_0x195940[_0x5ed9('0x22')]]){for(var _0x18e7a1 in this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]]){if(this['channels'][_0x195940[_0x5ed9('0x22')]]['hasOwnProperty'](_0x18e7a1)){if(this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1][_0x5ed9('0x56')]&&!this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1]['agentcomplete']){logger['info']('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x195940['uniqueid'],this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1][_0x5ed9('0x23')],_0x18e7a1);this[_0x5ed9('0xb')][_0x195940['uniqueid']][_0x18e7a1][_0x5ed9('0x15')]=!![];this[_0x5ed9('0xb')][_0x195940['uniqueid']][_0x18e7a1][_0x5ed9('0x57')]=moment()[_0x5ed9('0x34')](_0x5ed9('0x29'));this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1]['lastevent']=_0x5ed9('0x58');this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1][_0x5ed9('0x4e')]=_0x195940[_0x5ed9('0x4e')]==_0x5ed9('0x59')?_0x5ed9('0x5a'):_0x195940['reason'];this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1][_0x5ed9('0x5b')]=_0x195940[_0x5ed9('0x5b')];if(this[_0x5ed9('0xd')][_0x195940[_0x5ed9('0x2b')]]&&this['voiceQueues'][_0x195940[_0x5ed9('0x2b')]][_0x5ed9('0x5c')]){this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1]['acwtime']=this[_0x5ed9('0xd')][_0x195940['queue']][_0x5ed9('0x5d')];this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1][_0x5ed9('0x5e')]=!![];}this[_0x5ed9('0x5f')][_0x195940['interface']]=_[_0x5ed9('0x60')](this[_0x5ed9('0x5f')][_0x195940[_0x5ed9('0x40')]],[_0x5ed9('0x2b'),'destconnectedlinenum']);logger[_0x5ed9('0x24')](_0x5ed9('0x61'),_0x195940[_0x5ed9('0x22')],util['inspect'](this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1],{'showHidden':![],'depth':null}));ami['emit'](_0x5ed9('0x62'),this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1]);logger['debug'](_0x5ed9('0x63'),_0x195940[_0x5ed9('0x22')],util[_0x5ed9('0x26')](this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1],{'showHidden':![],'depth':null}));this[_0x5ed9('0x1d')](util[_0x5ed9('0x34')](_0x5ed9('0x35'),_0x195940[_0x5ed9('0x23')]),_0x5ed9('0x64'),this[_0x5ed9('0xb')][_0x195940[_0x5ed9('0x22')]][_0x18e7a1]);}}}}}}catch(_0x3d28ba){logger['error'](_0x5ed9('0x65'),_0x195940[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_0x3d28ba,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5ed9('0x1e')]['syncVarSet']=function(_0x580f71){try{if(this[_0x5ed9('0x1f')](_0x580f71)){logger[_0x5ed9('0x24')]('[%s][voiceAgentReport][varset]\x20event:',_0x580f71['uniqueid'],util[_0x5ed9('0x26')](_0x580f71,{'showHidden':![],'depth':null}));this['addVariable'](_0x580f71[_0x5ed9('0x22')],_[_0x5ed9('0x66')](_0x580f71[_0x5ed9('0x67')])[0x0],_0x580f71[_0x5ed9('0x68')]);if(this[_0x5ed9('0xb')][_0x580f71[_0x5ed9('0x22')]]){for(var _0x5d5d10 in this['channels'][_0x580f71[_0x5ed9('0x22')]]){if(this[_0x5ed9('0xb')][_0x580f71[_0x5ed9('0x22')]][_0x5ed9('0x54')](_0x5d5d10)){logger['info'](_0x5ed9('0x69'),_0x580f71['uniqueid'],_0x5d5d10,_[_0x5ed9('0x66')](_0x580f71[_0x5ed9('0x67')])[0x0],_0x580f71[_0x5ed9('0x68')]);if(_[_0x5ed9('0x27')](this[_0x5ed9('0xb')][_0x580f71['uniqueid']][_0x5d5d10][_0x5ed9('0xe')])){this[_0x5ed9('0xb')][_0x580f71[_0x5ed9('0x22')]][_0x5d5d10][_0x5ed9('0xe')]={};}this['channels'][_0x580f71['uniqueid']][_0x5d5d10][_0x5ed9('0xe')]=this['variables'][_0x580f71[_0x5ed9('0x22')]];}}}}}catch(_0x450147){logger['error']('[%s][voiceAgentReport][varset]',_0x580f71['uniqueid'],util[_0x5ed9('0x26')](_0x450147,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5ed9('0x1e')][_0x5ed9('0x6a')]=function(_0x4d1500,_0xccab0e,_0x4d438e){var _0x1dda51=[_0x5ed9('0x6b'),_0x5ed9('0x6c'),'rtpaudioqosjitter',_0x5ed9('0x6d'),_0x5ed9('0x6e'),_0x5ed9('0x6f'),_0x5ed9('0x70'),_0x5ed9('0x71'),_0x5ed9('0x72'),_0x5ed9('0x73'),_0x5ed9('0x74'),_0x5ed9('0x75'),_0x5ed9('0x76'),_0x5ed9('0x77'),_0x5ed9('0x78'),_0x5ed9('0x79'),_0x5ed9('0x23'),_0x5ed9('0x7a'),'memberrealtime'];if(!_[_0x5ed9('0x7b')](_0xccab0e)&&!_[_0x5ed9('0x7c')](_0x1dda51,_0xccab0e)){if(_['isUndefined'](this[_0x5ed9('0xe')][_0x4d1500])){this[_0x5ed9('0xe')][_0x4d1500]={};}this['variables'][_0x4d1500][_0xccab0e]=_0x4d438e;}};VoiceAgentReport[_0x5ed9('0x1e')]['syncHangup']=function(_0x28a050){try{if(this[_0x5ed9('0x1f')](_0x28a050)){logger[_0x5ed9('0x24')](_0x5ed9('0x7d'),_0x28a050['uniqueid'],util[_0x5ed9('0x26')](_0x28a050,{'showHidden':![],'depth':null}));if(this['channels'][_0x28a050[_0x5ed9('0x22')]]){for(var _0x2a8f4b in this[_0x5ed9('0xb')][_0x28a050[_0x5ed9('0x22')]]){if(this[_0x5ed9('0xb')][_0x28a050[_0x5ed9('0x22')]][_0x5ed9('0x54')](_0x2a8f4b)){if(this[_0x5ed9('0xb')][_0x28a050[_0x5ed9('0x22')]][_0x2a8f4b][_0x5ed9('0x4e')]=='transfer'&&this[_0x5ed9('0xb')][_0x28a050[_0x5ed9('0x22')]][_0x2a8f4b][_0x5ed9('0x15')]){logger[_0x5ed9('0x20')]('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x28a050['uniqueid'],_0x2a8f4b);this[_0x5ed9('0xb')][_0x28a050['uniqueid']][_0x2a8f4b][_0x5ed9('0x57')]=moment()['format'](_0x5ed9('0x29'));}}}logger['debug'](_0x5ed9('0x7e'),_0x28a050[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_[_0x5ed9('0x7f')](this['channels'][_0x28a050['uniqueid']]),{'showHidden':![],'depth':null}));ami[_0x5ed9('0x1d')]('custom:voiceAgentReport',_[_0x5ed9('0x7f')](this[_0x5ed9('0xb')][_0x28a050[_0x5ed9('0x22')]]));delete this[_0x5ed9('0xb')][_0x28a050[_0x5ed9('0x22')]];}if(this[_0x5ed9('0xe')][_0x28a050[_0x5ed9('0x22')]]){delete this[_0x5ed9('0xe')][_0x28a050[_0x5ed9('0x22')]];}}}catch(_0x230ec7){logger[_0x5ed9('0x51')](_0x5ed9('0x80'),_0x28a050[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_0x230ec7,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5ed9('0x1e')][_0x5ed9('0x1c')]=function(_0xc7e0ae){try{if(this[_0x5ed9('0x1f')](_0xc7e0ae)){logger[_0x5ed9('0x24')](_0x5ed9('0x81'),_0xc7e0ae['uniqueid'],util[_0x5ed9('0x26')](_0xc7e0ae,{'showHidden':![],'depth':null}));if(this['channels'][_0xc7e0ae[_0x5ed9('0x82')]]){for(var _0x1213d5 in this[_0x5ed9('0xb')][_0xc7e0ae[_0x5ed9('0x82')]]){if(this[_0x5ed9('0xb')][_0xc7e0ae[_0x5ed9('0x82')]][_0x5ed9('0x54')](_0x1213d5)){if(_0xc7e0ae[_0x5ed9('0x83')]===_0x1213d5){logger['info']('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0xc7e0ae['uniqueid'],this[_0x5ed9('0xb')][_0xc7e0ae[_0x5ed9('0x82')]][_0x1213d5][_0x5ed9('0x23')],_0x1213d5);var _0x776c98=moment();this[_0x5ed9('0xb')][_0xc7e0ae[_0x5ed9('0x82')]][_0x1213d5][_0x5ed9('0x15')]=!![];this[_0x5ed9('0xb')][_0xc7e0ae[_0x5ed9('0x82')]][_0x1213d5]['agentcompleteAt']=moment()[_0x5ed9('0x34')](_0x5ed9('0x29'));this[_0x5ed9('0xb')][_0xc7e0ae[_0x5ed9('0x82')]][_0x1213d5][_0x5ed9('0x3d')]=_0x5ed9('0x58');this[_0x5ed9('0xb')][_0xc7e0ae['transfereeuniqueid']][_0x1213d5][_0x5ed9('0x4e')]=_0x5ed9('0x59');this[_0x5ed9('0xb')][_0xc7e0ae['transfereeuniqueid']][_0x1213d5]['talktime']=_0x776c98[_0x5ed9('0x84')](this[_0x5ed9('0xb')][_0xc7e0ae[_0x5ed9('0x82')]][_0x1213d5]['agentconnectAt'],'seconds');}}}}if(this['channels'][_0xc7e0ae[_0x5ed9('0x85')]]){var _0x127872=this[_0x5ed9('0xb')][_0xc7e0ae[_0x5ed9('0x85')]];this['channels'][_0xc7e0ae['secondtransfereruniqueid']]=this['channels'][_0xc7e0ae[_0x5ed9('0x82')]];this['channels'][_0xc7e0ae[_0x5ed9('0x82')]]=_0x127872;}}}catch(_0x1c3d06){logger['error'](_0x5ed9('0x86'),_0xc7e0ae[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_0x1c3d06,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5ed9('0x1e')][_0x5ed9('0x87')]=function(_0xf1d2b6){try{if(this[_0x5ed9('0x1f')](_0xf1d2b6)){logger[_0x5ed9('0x24')](_0x5ed9('0x88'),_0xf1d2b6[_0x5ed9('0x22')],util['inspect'](_0xf1d2b6,{'showHidden':![],'depth':null}));if(this[_0x5ed9('0xb')][_0xf1d2b6[_0x5ed9('0x82')]]){for(var _0x112853 in this[_0x5ed9('0xb')][_0xf1d2b6[_0x5ed9('0x82')]]){if(this[_0x5ed9('0xb')][_0xf1d2b6['transfereeuniqueid']][_0x5ed9('0x54')](_0x112853)){if(_0xf1d2b6[_0x5ed9('0x89')]===_0x112853){logger[_0x5ed9('0x20')]('[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0xf1d2b6[_0x5ed9('0x22')],this[_0x5ed9('0xb')][_0xf1d2b6[_0x5ed9('0x82')]][_0x112853][_0x5ed9('0x23')],_0x112853);var _0xd8a164=moment();this[_0x5ed9('0xb')][_0xf1d2b6[_0x5ed9('0x82')]][_0x112853]['agentcomplete']=!![];this[_0x5ed9('0xb')][_0xf1d2b6[_0x5ed9('0x82')]][_0x112853][_0x5ed9('0x57')]=_0xd8a164;this[_0x5ed9('0xb')][_0xf1d2b6[_0x5ed9('0x82')]][_0x112853][_0x5ed9('0x3d')]=_0x5ed9('0x58');this[_0x5ed9('0xb')][_0xf1d2b6[_0x5ed9('0x82')]][_0x112853]['reason']=_0x5ed9('0x59');this['channels'][_0xf1d2b6['transfereeuniqueid']][_0x112853][_0x5ed9('0x5b')]=_0xd8a164['diff'](this['channels'][_0xf1d2b6[_0x5ed9('0x82')]][_0x112853][_0x5ed9('0x56')],'seconds');}}}}}}catch(_0x1cdbbc){logger['error'](_0x5ed9('0x8a'),_0xf1d2b6[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_0x1cdbbc,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncMusicOnHoldStart']=function(_0x4b6fbd){var _0x44fbdd='';try{if(this['isNotNull'](_0x4b6fbd)){logger['debug']('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x4b6fbd['uniqueid'],util[_0x5ed9('0x26')](_0x4b6fbd,{'showHidden':![],'depth':null}));if(_0x4b6fbd[_0x5ed9('0x8b')]){_0x44fbdd=_0x4b6fbd[_0x5ed9('0x8b')][_0x5ed9('0x8c')](0x0,_0x4b6fbd[_0x5ed9('0x8b')][_0x5ed9('0x8d')]('-'));if(this['agents'][_0x44fbdd]){logger[_0x5ed9('0x20')](_0x5ed9('0x8e'),_0x4b6fbd[_0x5ed9('0x22')],_0x44fbdd);this[_0x5ed9('0x5f')][_0x44fbdd][_0x5ed9('0x8f')]=!![];}}}}catch(_0x1e8ad3){logger[_0x5ed9('0x51')](_0x5ed9('0x90'),_0x4b6fbd[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_0x1e8ad3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5ed9('0x1e')][_0x5ed9('0x1b')]=function(_0x42468e){var _0x1dcc51='';try{if(this[_0x5ed9('0x1f')](_0x42468e)){logger[_0x5ed9('0x24')](_0x5ed9('0x91'),_0x42468e[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_0x42468e,{'showHidden':![],'depth':null}));if(_0x42468e['channel']){_0x1dcc51=_0x42468e[_0x5ed9('0x8b')]['substring'](0x0,_0x42468e[_0x5ed9('0x8b')][_0x5ed9('0x8d')]('-'));if(this[_0x5ed9('0x5f')][_0x1dcc51]){logger[_0x5ed9('0x20')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x42468e['uniqueid'],_0x1dcc51);this[_0x5ed9('0x5f')][_0x1dcc51]['onhold']=![];}}}}catch(_0x55399f){logger[_0x5ed9('0x51')](_0x5ed9('0x92'),_0x42468e[_0x5ed9('0x22')],util[_0x5ed9('0x26')](_0x55399f,{'showHidden':![],'depth':null}));}};module[_0x5ed9('0x93')]=VoiceAgentReport;
\ No newline at end of file
index 1fb0546..1882987 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79e5=['exten','format','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','merge','keys','from-sip','split','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','accountcode','user:%s','name','user:agentconnect','[%s][voiceCallReport][newchannel]','OutgoingSpoolFailed','application','toLowerCase','applicationdata','appdata','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','starttime','duration','subtract','seconds','includes','lastapplication','match','[%s][voiceCallReport][newexten]','answered','answertime','holdtime','diff','connectedlinenum','destinationchannel','UserId','membername','[%s][voiceCallReport][newstate]','monitor','endsWith','.wav49','replace','.WAV','find','monitors','isNil','push','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','value','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','sipcallid','sipcalllinkedid','[%s][voiceCallReport][hangup]\x20event:','cause-txt','endtime','billableseconds','destconnectedlinenum','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','resolve','then','transferType','undefined','isEmpty','getSettings','stopRecordingOnTransfer','Action','catch','BlindTransfer','blindTransfers','type','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','some','origtransfererlinkedid','outbound','routeid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','[%s][voiceCallReport][blindtransfer]\x20event:','transfercalleridnum','extension','BLIND','transfererchannel','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','bluebird','lodash','moment','path','ioredis','../../../config/environment','../ami','inuse','busy','invalid','unavailable','ringinuse','onhold','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','defaults','localhost','socket.io-emitter','agents','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','syncNewState','syncVarSet','hangup','syncHangup','newcallerid','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','info','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','emit','syncNewCallerId','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','channels','pick','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','channel','isUndefined','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','context'];(function(_0x492d28,_0x3e24ba){var _0x2aae48=function(_0x304b1f){while(--_0x304b1f){_0x492d28['push'](_0x492d28['shift']());}};_0x2aae48(++_0x3e24ba);}(_0x79e5,0x79));var _0x579e=function(_0x58402d,_0x34204a){_0x58402d=_0x58402d-0x0;var _0x2f48ed=_0x79e5[_0x58402d];return _0x2f48ed;};'use strict';var BPromise=require(_0x579e('0x0'));var _=require(_0x579e('0x1'));var moment=require(_0x579e('0x2'));var util=require('util');var path=require(_0x579e('0x3'));var Redis=require(_0x579e('0x4'));var config=require(_0x579e('0x5'));var logger=require('../../../config/logger')('ami');var ami=require(_0x579e('0x6'));var Channel=require('../model/channel');var RpcSetting=require('../rpc/setting');var statusDesc=['unknown','not_inuse',_0x579e('0x7'),_0x579e('0x8'),_0x579e('0x9'),_0x579e('0xa'),'ringing',_0x579e('0xb'),_0x579e('0xc')];var applications=['set',_0x579e('0xd'),_0x579e('0xe'),_0x579e('0xf'),_0x579e('0x10'),_0x579e('0x11')];var dispositions=[_0x579e('0x12'),_0x579e('0x13'),_0x579e('0x13'),_0x579e('0x12'),_0x579e('0x12'),_0x579e('0x12'),_0x579e('0x14'),_0x579e('0x15'),_0x579e('0x13'),_0x579e('0x13'),_0x579e('0x13')];var actions={};config[_0x579e('0x16')]=_[_0x579e('0x17')](config[_0x579e('0x16')],{'host':_0x579e('0x18'),'port':0x18eb});var io=require(_0x579e('0x19'))(new Redis(config['redis']));function VoiceCallReport(_0x54c456){this['channels']=_0x54c456['channels'];this[_0x579e('0x1a')]=_0x54c456['agents'];this['blindTransfers']={};ami['on'](_0x579e('0x1b'),this[_0x579e('0x1c')][_0x579e('0x1d')](this));ami['on'](_0x579e('0x1e'),this[_0x579e('0x1c')][_0x579e('0x1d')](this));ami['on'](_0x579e('0x1f'),this[_0x579e('0x20')]['bind'](this));ami['on'](_0x579e('0x21'),this[_0x579e('0x22')]['bind'](this));ami['on']('varset',this[_0x579e('0x23')][_0x579e('0x1d')](this));ami['on'](_0x579e('0x24'),this[_0x579e('0x25')][_0x579e('0x1d')](this));ami['on'](_0x579e('0x26'),this['syncNewCallerId'][_0x579e('0x1d')](this));ami['on'](_0x579e('0x27'),this[_0x579e('0x28')]['bind'](this));ami['on']('blindtransfer',this[_0x579e('0x29')][_0x579e('0x1d')](this));ami['on'](_0x579e('0x2a'),this[_0x579e('0x2b')]['bind'](this));ami['on'](_0x579e('0x2c'),this['syncMusicOnHoldStop'][_0x579e('0x1d')](this));try{logger[_0x579e('0x2d')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0x579e('0x2e')]();}catch(_0x229007){logger[_0x579e('0x2f')](_0x579e('0x30'),util[_0x579e('0x31')](_0x229007,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x579e('0x32')][_0x579e('0x33')]=function(_0x33cfb7){return _0x33cfb7!==null&&!_['isUndefined'](_0x33cfb7);};VoiceCallReport[_0x579e('0x32')][_0x579e('0x34')]=function(_0x2da33b,_0x6b26d8,_0xf91d53){io['to'](_0x2da33b)[_0x579e('0x34')](_0x6b26d8,_0xf91d53);};VoiceCallReport[_0x579e('0x32')][_0x579e('0x35')]=function(_0x4e42c0){try{if(this[_0x579e('0x33')](_0x4e42c0)){logger['info'](_0x579e('0x36'),_0x4e42c0[_0x579e('0x37')],_0x4e42c0[_0x579e('0x38')],_0x4e42c0[_0x579e('0x39')]);logger[_0x579e('0x3a')](_0x579e('0x3b'),_0x4e42c0[_0x579e('0x37')],util['inspect'](_0x4e42c0,{'showHidden':![],'depth':null}));if(_0x4e42c0[_0x579e('0x37')]===_0x4e42c0[_0x579e('0x3c')]){if(!_['isUndefined'](this[_0x579e('0x3d')][_0x4e42c0[_0x579e('0x37')]])){_['merge'](this[_0x579e('0x3d')][_0x4e42c0[_0x579e('0x37')]],_[_0x579e('0x3e')](_0x4e42c0,_['keys'](this['channels'][_0x4e42c0[_0x579e('0x37')]])));}}}}catch(_0x555f01){logger[_0x579e('0x2f')](_0x579e('0x3f'),_0x4e42c0[_0x579e('0x37')],util[_0x579e('0x31')](_0x555f01,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x579e('0x32')]['syncNewChannel']=function(_0x9f9562){try{if(this[_0x579e('0x33')](_0x9f9562)){logger[_0x579e('0x3a')](_0x579e('0x40'),_0x9f9562[_0x579e('0x37')],util[_0x579e('0x31')](_0x9f9562,{'showHidden':![],'depth':null}));if(_0x9f9562[_0x579e('0x37')]===_0x9f9562[_0x579e('0x3c')]&&_0x9f9562[_0x579e('0x41')]!='OutgoingSpoolFailed'){if(_[_0x579e('0x42')](this[_0x579e('0x3d')][_0x9f9562[_0x579e('0x37')]])){logger[_0x579e('0x2d')](_0x579e('0x43'),_0x9f9562[_0x579e('0x37')],_0x9f9562[_0x579e('0x44')],_0x9f9562[_0x579e('0x45')]);this[_0x579e('0x3d')][_0x9f9562['uniqueid']]=new Channel();this[_0x579e('0x3d')][_0x9f9562[_0x579e('0x37')]]['starttime']=moment()[_0x579e('0x46')](_0x579e('0x47'));this['channels'][_0x9f9562[_0x579e('0x37')]][_0x579e('0x48')]=dispositions[_[_0x579e('0x49')](_0x9f9562[_0x579e('0x4a')])];_[_0x579e('0x4b')](this[_0x579e('0x3d')][_0x9f9562[_0x579e('0x37')]],_[_0x579e('0x3e')](_0x9f9562,_[_0x579e('0x4c')](this[_0x579e('0x3d')][_0x9f9562[_0x579e('0x37')]])));if(_0x9f9562[_0x579e('0x44')]===_0x579e('0x4d')){if(this['agents'][_0x9f9562[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]]){this[_0x579e('0x1a')][_0x9f9562['channel'][_0x579e('0x4e')]('-')[0x0]]['destconnectedlinenum']=_0x9f9562[_0x579e('0x45')];logger[_0x579e('0x3a')](_0x579e('0x4f'),_0x9f9562[_0x579e('0x37')],util[_0x579e('0x31')]({'id':this['agents'][_0x9f9562[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]]['id'],'destaccountcode':this[_0x579e('0x1a')][_0x9f9562[_0x579e('0x41')]['split']('-')[0x0]][_0x579e('0x50')],'destconnectedlinenum':_0x9f9562[_0x579e('0x45')]},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x579e('0x51'),this[_0x579e('0x1a')][_0x9f9562[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]][_0x579e('0x52')]),_0x579e('0x53'),{'id':this[_0x579e('0x1a')][_0x9f9562['channel'][_0x579e('0x4e')]('-')[0x0]]['id'],'destaccountcode':this[_0x579e('0x1a')][_0x9f9562[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]][_0x579e('0x50')],'destconnectedlinenum':_0x9f9562[_0x579e('0x45')]});}}}}}}catch(_0x833c3d){logger[_0x579e('0x2f')](_0x579e('0x54'),_0x9f9562[_0x579e('0x37')],util[_0x579e('0x31')](_0x833c3d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x579e('0x32')][_0x579e('0x1c')]=function(_0x1522e8){try{if(this['isNotNull'](_0x1522e8)){logger[_0x579e('0x3a')]('[%s][voiceCallReport][newexten]\x20event:',_0x1522e8[_0x579e('0x37')],util['inspect'](_0x1522e8,{'showHidden':![],'depth':null}));if(_0x1522e8[_0x579e('0x37')]===_0x1522e8[_0x579e('0x3c')]&&_0x1522e8[_0x579e('0x45')]!='h'&&_0x1522e8[_0x579e('0x41')]!=_0x579e('0x55')){_0x1522e8[_0x579e('0x56')]=_0x1522e8[_0x579e('0x56')][_0x579e('0x57')]();_0x1522e8[_0x579e('0x58')]=(_0x1522e8[_0x579e('0x59')]||_0x1522e8[_0x579e('0x58')])[_0x579e('0x57')]();logger[_0x579e('0x2d')](_0x579e('0x5a'),_0x1522e8[_0x579e('0x37')],_0x1522e8[_0x579e('0x56')],_0x1522e8[_0x579e('0x58')]);if(_[_0x579e('0x42')](this[_0x579e('0x3d')][_0x1522e8['uniqueid']])){this[_0x579e('0x3d')][_0x1522e8['uniqueid']]=new Channel();this[_0x579e('0x3d')][_0x1522e8[_0x579e('0x37')]][_0x579e('0x5b')]=_0x1522e8[_0x579e('0x5c')]?moment()[_0x579e('0x5d')](moment[_0x579e('0x5c')](_0x1522e8[_0x579e('0x5c')])[_0x579e('0x5e')](),_0x579e('0x5e'))[_0x579e('0x46')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0x579e('0x46')](_0x579e('0x47'));this[_0x579e('0x3d')][_0x1522e8[_0x579e('0x37')]][_0x579e('0x48')]=_0x579e('0x12');}_[_0x579e('0x4b')](this[_0x579e('0x3d')][_0x1522e8[_0x579e('0x37')]],_[_0x579e('0x3e')](_0x1522e8,_['keys'](this[_0x579e('0x3d')][_0x1522e8[_0x579e('0x37')]])));if(_[_0x579e('0x5f')](applications,_0x1522e8['application'])){this[_0x579e('0x3d')][_0x1522e8[_0x579e('0x37')]][_0x579e('0x60')]=_0x1522e8['application'];this['channels'][_0x1522e8[_0x579e('0x37')]]['lastdata']=_0x1522e8[_0x579e('0x58')];if(_0x1522e8['application']==='set'&&_['startsWith'](_0x1522e8[_0x579e('0x58')],'cdr(')){var _0x2950ce=_0x1522e8[_0x579e('0x58')][_0x579e('0x4e')]('=');var _0x236b83=_0x2950ce[0x0][_0x579e('0x61')](/cdr\((.*)\)/);if(_0x236b83){this['channels'][_0x1522e8[_0x579e('0x37')]][_0x236b83[0x1]]=_0x2950ce[0x1];}}else if(_0x1522e8[_0x579e('0x56')]==='queue'){this[_0x579e('0x3d')][_0x1522e8[_0x579e('0x37')]][_0x579e('0xd')]=_0x1522e8[_0x579e('0x58')][_0x579e('0x4e')](',')[0x0];}}}}}catch(_0x22e73b){logger[_0x579e('0x2f')](_0x579e('0x62'),_0x1522e8[_0x579e('0x37')],util[_0x579e('0x31')](_0x22e73b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x579e('0x32')][_0x579e('0x22')]=function(_0x4fc389){try{if(this['isNotNull'](_0x4fc389)){logger[_0x579e('0x2d')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x4fc389[_0x579e('0x37')],_0x4fc389[_0x579e('0x3c')],_0x4fc389[_0x579e('0x38')],_0x4fc389[_0x579e('0x39')]);logger[_0x579e('0x3a')]('[%s][voiceCallReport][newstate]\x20event:',_0x4fc389[_0x579e('0x37')],util['inspect'](_0x4fc389,{'showHidden':![],'depth':null}));if(_0x4fc389['uniqueid']!==_0x4fc389[_0x579e('0x3c')]){if(this['channels'][_0x4fc389[_0x579e('0x3c')]]){if(_0x4fc389['channelstate']==='6'){if(!this['channels'][_0x4fc389['linkedid']][_0x579e('0x63')]){var _0x46d446=moment();this[_0x579e('0x3d')][_0x4fc389[_0x579e('0x3c')]][_0x579e('0x63')]=!![];this['channels'][_0x4fc389['linkedid']][_0x579e('0x64')]=_0x46d446[_0x579e('0x46')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x579e('0x3d')][_0x4fc389['linkedid']][_0x579e('0x5b')]){this[_0x579e('0x3d')][_0x4fc389[_0x579e('0x3c')]][_0x579e('0x65')]=_0x46d446[_0x579e('0x66')](this['channels'][_0x4fc389[_0x579e('0x3c')]][_0x579e('0x5b')],_0x579e('0x5e'));}}this[_0x579e('0x3d')][_0x4fc389[_0x579e('0x3c')]][_0x579e('0x3c')]=_0x4fc389[_0x579e('0x37')];if(_0x4fc389['calleridnum']!=='xcally-motion-preview'){this[_0x579e('0x3d')][_0x4fc389[_0x579e('0x3c')]][_0x579e('0x67')]=_0x4fc389[_0x579e('0x39')];}this[_0x579e('0x3d')][_0x4fc389[_0x579e('0x3c')]]['connectedlinename']=_0x4fc389[_0x579e('0x38')];this[_0x579e('0x3d')][_0x4fc389[_0x579e('0x3c')]][_0x579e('0x68')]=_0x4fc389['channel'];this['channels'][_0x4fc389[_0x579e('0x3c')]][_0x579e('0x48')]=dispositions[_[_0x579e('0x49')](_0x4fc389[_0x579e('0x4a')])];if(this[_0x579e('0x1a')][_0x4fc389['channel']['split']('-')[0x0]]){this[_0x579e('0x3d')][_0x4fc389[_0x579e('0x3c')]][_0x579e('0x69')]=this[_0x579e('0x1a')][_0x4fc389[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]]['id'];this[_0x579e('0x3d')][_0x4fc389['linkedid']]['membername']=this[_0x579e('0x1a')][_0x4fc389[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]][_0x579e('0x52')];}}}}else{if(this['channels'][_0x4fc389[_0x579e('0x37')]]){if(_0x4fc389[_0x579e('0x4a')]==='6'){if(this[_0x579e('0x1a')][_0x4fc389[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]]){this[_0x579e('0x3d')][_0x4fc389['uniqueid']][_0x579e('0x69')]=this[_0x579e('0x1a')][_0x4fc389['channel'][_0x579e('0x4e')]('-')[0x0]]['id'];this['channels'][_0x4fc389[_0x579e('0x37')]][_0x579e('0x6a')]=this[_0x579e('0x1a')][_0x4fc389[_0x579e('0x41')]['split']('-')[0x0]][_0x579e('0x52')];}}}}}}catch(_0x24ab79){logger[_0x579e('0x2f')](_0x579e('0x6b'),_0x4fc389[_0x579e('0x37')],util['inspect'](_0x24ab79,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncMixMonitorFilename']=function(_0x3cf810,_0x1802cc){try{if(this['channels'][_0x3cf810]){logger[_0x579e('0x2d')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x3cf810,_0x1802cc);this[_0x579e('0x3d')][_0x3cf810][_0x579e('0x6c')]=!![];if(_[_0x579e('0x6d')](_0x1802cc,_0x579e('0x6e'))){_0x1802cc=_0x1802cc[_0x579e('0x6f')](_0x579e('0x6e'),_0x579e('0x70'));}this[_0x579e('0x3d')][_0x3cf810]['monitorFilename']=_0x1802cc;var _0x2893e1=_[_0x579e('0x71')](this['channels'][_0x3cf810][_0x579e('0x72')],{'filename':_0x1802cc});if(_[_0x579e('0x73')](_0x2893e1)){this[_0x579e('0x3d')][_0x3cf810][_0x579e('0x72')][_0x579e('0x74')]({'filename':_0x1802cc,'createdAt':moment()[_0x579e('0x46')](_0x579e('0x47')),'mixmonitorid':'','status':'rec'});}}}catch(_0x2c6e60){logger[_0x579e('0x2f')](_0x579e('0x75'),_0x3cf810,util[_0x579e('0x31')](_0x2c6e60,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x579e('0x32')]['syncVarSet']=function(_0x71a277){try{if(this['isNotNull'](_0x71a277)){logger[_0x579e('0x3a')](_0x579e('0x76'),_0x71a277[_0x579e('0x37')],util[_0x579e('0x31')](_0x71a277,{'showHidden':![],'depth':null}));if(this[_0x579e('0x3d')][_0x71a277[_0x579e('0x37')]]&&_0x71a277[_0x579e('0x41')]!='OutgoingSpoolFailed'){if(this[_0x579e('0x33')](_0x71a277['variable'])){if(this['isNotNull'](_0x71a277[_0x579e('0x77')]['mixmonitor_filename'])){logger[_0x579e('0x2d')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x71a277[_0x579e('0x37')],_0x71a277[_0x579e('0x78')]);this['syncMixMonitorFilename'](_0x71a277['uniqueid'],_0x71a277['value']);}else if(this[_0x579e('0x33')](_0x71a277[_0x579e('0x77')]['xmd-phone'])){logger['info'](_0x579e('0x79'),_0x71a277[_0x579e('0x37')],_0x71a277['value']);this[_0x579e('0x3d')][_0x71a277['uniqueid']][_0x579e('0x39')]=_0x71a277[_0x579e('0x78')];}else if(this[_0x579e('0x33')](_0x71a277['variable'][_0x579e('0x7a')])){logger[_0x579e('0x2d')](_0x579e('0x7b'),_0x71a277[_0x579e('0x37')],_0x71a277[_0x579e('0x78')]);this[_0x579e('0x3d')][_0x71a277[_0x579e('0x37')]][_0x579e('0x7c')]=_0x71a277[_0x579e('0x78')];}else if(this[_0x579e('0x33')](_0x71a277['variable'][_0x579e('0x7d')])){logger['info'](_0x579e('0x7e'),_0x71a277['uniqueid'],_0x71a277[_0x579e('0x78')]);this[_0x579e('0x3d')][_0x71a277[_0x579e('0x37')]]['type']=_0x71a277[_0x579e('0x78')];}else if(this[_0x579e('0x33')](_0x71a277[_0x579e('0x77')]['xmd-queue'])){logger[_0x579e('0x2d')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x71a277[_0x579e('0x37')],_0x71a277[_0x579e('0x78')]['split'](',')[0x0]);this['channels'][_0x71a277[_0x579e('0x37')]][_0x579e('0xd')]=_0x71a277[_0x579e('0x78')][_0x579e('0x4e')](',')[0x0];}else if(this[_0x579e('0x33')](_0x71a277[_0x579e('0x77')][_0x579e('0x7f')])){logger[_0x579e('0x2d')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x71a277['uniqueid'],_0x71a277[_0x579e('0x78')]);this[_0x579e('0x3d')][_0x71a277[_0x579e('0x37')]]['originatecalleridnum']=_0x71a277[_0x579e('0x78')];}else if(this[_0x579e('0x33')](_0x71a277[_0x579e('0x77')][_0x579e('0x80')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x71a277[_0x579e('0x37')],_0x71a277[_0x579e('0x78')]);this[_0x579e('0x3d')][_0x71a277[_0x579e('0x37')]]['destination']=_0x71a277[_0x579e('0x78')];}else if(this[_0x579e('0x33')](_0x71a277[_0x579e('0x77')]['xmd-callerid-preview'])){logger[_0x579e('0x2d')](_0x579e('0x81'),_0x71a277['uniqueid'],_0x71a277['value']);this[_0x579e('0x3d')][_0x71a277[_0x579e('0x37')]][_0x579e('0x82')]=_0x71a277['value'];}else if(this['isNotNull'](_0x71a277['variable']['xmcs-queue'])){logger['info'](_0x579e('0x83'),_0x71a277['uniqueid'],_0x71a277[_0x579e('0x78')]);this[_0x579e('0x3d')][_0x71a277['uniqueid']][_0x579e('0xd')]=_0x71a277[_0x579e('0x78')];}else if(this[_0x579e('0x33')](_0x71a277[_0x579e('0x77')]['sipcallid'])){logger[_0x579e('0x2d')](_0x579e('0x84'),_0x71a277[_0x579e('0x37')],_0x71a277[_0x579e('0x78')]);this['channels'][_0x71a277[_0x579e('0x37')]][_0x579e('0x85')]=_0x71a277[_0x579e('0x78')];}}}else if(this['isNotNull'](_0x71a277[_0x579e('0x77')][_0x579e('0x86')])){if(_0x71a277[_0x579e('0x78')]){var _0xb70f38=path['parse'](_0x71a277[_0x579e('0x78')])[_0x579e('0x52')];logger[_0x579e('0x2d')](_0x579e('0x87'),_0xb70f38,_0x71a277[_0x579e('0x78')]);this['syncMixMonitorFilename'](_0xb70f38,_0x71a277[_0x579e('0x78')]);}}else if(this['channels'][_0x71a277[_0x579e('0x3c')]]){if(this[_0x579e('0x33')](_0x71a277['variable'])){if(this[_0x579e('0x33')](_0x71a277[_0x579e('0x77')][_0x579e('0x88')])){logger[_0x579e('0x2d')](_0x579e('0x84'),_0x71a277[_0x579e('0x3c')],_0x71a277['value']);this[_0x579e('0x3d')][_0x71a277[_0x579e('0x3c')]][_0x579e('0x89')]=_0x71a277[_0x579e('0x78')];}}}}}catch(_0x24fe5d){logger[_0x579e('0x2f')]('[%s][voiceCallReport][varset]',_0x71a277[_0x579e('0x37')],util['inspect'](_0x24fe5d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x579e('0x32')][_0x579e('0x25')]=function(_0x51906e){try{if(this[_0x579e('0x33')](_0x51906e)){logger['debug'](_0x579e('0x8a'),_0x51906e[_0x579e('0x37')],util[_0x579e('0x31')](_0x51906e,{'showHidden':![],'depth':null}));if(this[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]]){logger[_0x579e('0x2d')]('[%s][voiceCallReport][hangup]\x20reason:%s',_0x51906e['uniqueid'],_0x51906e[_0x579e('0x8b')]);var _0x3fa526=moment();this['channels'][_0x51906e[_0x579e('0x37')]][_0x579e('0x8c')]=_0x3fa526['format'](_0x579e('0x47'));this[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]][_0x579e('0x5c')]=_0x3fa526['diff'](this['channels'][_0x51906e[_0x579e('0x37')]][_0x579e('0x5b')],_0x579e('0x5e'));if(this[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]][_0x579e('0x63')]){this[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]][_0x579e('0x8d')]=_0x3fa526[_0x579e('0x66')](this['channels'][_0x51906e[_0x579e('0x37')]][_0x579e('0x64')],_0x579e('0x5e'));this['channels'][_0x51906e['uniqueid']][_0x579e('0x65')]=this[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]][_0x579e('0x5c')]-this[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]][_0x579e('0x8d')];}if(_0x51906e[_0x579e('0x44')]==='from-sip'){if(this['agents'][_0x51906e[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]]){this[_0x579e('0x1a')][_0x51906e[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]]=_['omit'](this[_0x579e('0x1a')][_0x51906e['channel'][_0x579e('0x4e')]('-')[0x0]],[_0x579e('0x8e')]);logger[_0x579e('0x3a')](_0x579e('0x8f'),_0x51906e['uniqueid'],util[_0x579e('0x31')]({'id':this[_0x579e('0x1a')][_0x51906e[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]]['id'],'destaccountcode':this[_0x579e('0x1a')][_0x51906e[_0x579e('0x41')]['split']('-')[0x0]][_0x579e('0x50')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x579e('0x46')](_0x579e('0x51'),this[_0x579e('0x1a')][_0x51906e[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]]['name']),_0x579e('0x90'),{'id':this[_0x579e('0x1a')][_0x51906e[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]]['id'],'destaccountcode':this[_0x579e('0x1a')][_0x51906e[_0x579e('0x41')][_0x579e('0x4e')]('-')[0x0]]['accountcode']});}}var _0x556902=this;Promise[_0x579e('0x91')]()[_0x579e('0x92')](function(){var _0x4cc3ae=_0x556902[_0x579e('0x3d')][_0x51906e['uniqueid']];if(typeof _0x4cc3ae[_0x579e('0x93')]===_0x579e('0x94'))return;if(_[_0x579e('0x95')](_0x4cc3ae[_0x579e('0x72')]))return;return RpcSetting[_0x579e('0x96')]()[_0x579e('0x92')](function(_0x26fd05){if(!_0x26fd05[_0x579e('0x97')])return;return Promise[_0x579e('0x91')]()[_0x579e('0x92')](function(){return ami[_0x579e('0x98')]({'action':'StopMixMonitor','channel':_0x4cc3ae[_0x579e('0x41')]})['catch'](function(){});})['then'](function(){return ami[_0x579e('0x98')]({'action':'StopMixMonitor','channel':_0x4cc3ae['destinationchannel']})[_0x579e('0x99')](function(){})['finally'](function(){var _0x44241e=_0x556902[_0x579e('0x1a')][_0x4cc3ae[_0x579e('0x68')]['split']('-')[0x0]];if(!_0x44241e)return;io['emit']('webbar:stopmonitors',{'agentId':_0x44241e['id'],'uniqueid':_0x4cc3ae[_0x579e('0x37')]});});});});})[_0x579e('0x92')](function(){if(_0x51906e['event']===_0x579e('0x9a')){_0x556902[_0x579e('0x9b')][_0x51906e[_0x579e('0x37')]]=_0x556902[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]];}else{if(_0x556902[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]][_0x579e('0x9c')]==='outbound'&&_0x556902[_0x579e('0x9b')][_0x51906e['uniqueid']]){_0x556902[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]]['uniqueid']=[_0x556902['channels'][_0x51906e['uniqueid']][_0x579e('0x3c')],_0x556902[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]][_0x579e('0x3c')]=_0x556902[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]][_0x579e('0x37')]][0x0];delete _0x556902['blindTransfers'][_0x51906e['uniqueid']];}}logger['debug'](_0x579e('0x9d'),_0x51906e[_0x579e('0x37')],util[_0x579e('0x31')](_0x556902[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]],{'showHidden':![],'depth':null}));ami[_0x579e('0x34')](_0x579e('0x9e'),_0x556902[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]]);delete _0x556902[_0x579e('0x3d')][_0x51906e[_0x579e('0x37')]];});}}}catch(_0x19be62){logger['error'](_0x579e('0x9f'),_0x51906e['uniqueid'],util[_0x579e('0x31')](_0x19be62,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x579e('0x32')][_0x579e('0x28')]=function(_0x2d9fa0){try{if(this[_0x579e('0x33')](_0x2d9fa0)){logger[_0x579e('0x2d')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x2d9fa0['uniqueid'],_0x2d9fa0[_0x579e('0xa0')],_0x2d9fa0[_0x579e('0xa1')]);logger[_0x579e('0x3a')](_0x579e('0xa2'),_0x2d9fa0[_0x579e('0x37')],util[_0x579e('0x31')](_0x2d9fa0,{'showHidden':![],'depth':null}));if(this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa3')]]){this[_0x579e('0x3d')][_0x2d9fa0['transfereeuniqueid']]['transfercalleridnum']=_0x2d9fa0['origtransferercalleridnum'];this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa3')]][_0x579e('0xa4')]=_0x2d9fa0[_0x579e('0xa1')];if(this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa5')]]){var _0x3835ae=this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa5')]];this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa5')]]=this[_0x579e('0x3d')][_0x2d9fa0['transfereeuniqueid']];this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa3')]]=_0x3835ae;}}else if(this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa6')]]){this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa6')]]['transfercalleridnum']=_0x2d9fa0[_0x579e('0xa0')];this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa6')]]['transferconnectedlinenum']=_0x2d9fa0[_0x579e('0xa1')];if(this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa7')]]){var _0x3835ae=this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa7')]];this[_0x579e('0x3d')][_0x2d9fa0['origtransfereruniqueid']]=this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa6')]];this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa6')]]=_0x3835ae;}}if((this[_0x579e('0x3d')][_0x2d9fa0['origtransfereruniqueid']]||this[_0x579e('0x3d')][_0x2d9fa0['origtransfererlinkedid']])&&this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa5')]]){var _0x3d1a0e=_[_0x579e('0xa8')]([this[_0x579e('0x3d')][_0x2d9fa0['origtransfereruniqueid']],this['channels'][_0x2d9fa0[_0x579e('0xa9')]],this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa5')]]],function(_0x5b8eda){return _0x5b8eda&&_0x5b8eda[_0x579e('0x9c')]===_0x579e('0xaa')&&_0x5b8eda[_0x579e('0xab')];});if(_0x3d1a0e){if(this[_0x579e('0x3d')][_0x2d9fa0['origtransfereruniqueid']])this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa7')]]['transferType']=_0x579e('0xac');if(this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa9')]])this[_0x579e('0x3d')][_0x2d9fa0[_0x579e('0xa9')]]['transferType']=_0x579e('0xac');this['channels'][_0x2d9fa0[_0x579e('0xa5')]][_0x579e('0x93')]=_0x579e('0xac');}}}}catch(_0x27449b){logger[_0x579e('0x2f')](_0x579e('0xad'),_0x2d9fa0[_0x579e('0x37')],util[_0x579e('0x31')](_0x27449b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x579e('0x32')][_0x579e('0x29')]=function(_0x3c0ecf){try{if(this[_0x579e('0x33')](_0x3c0ecf)){logger[_0x579e('0x2d')](_0x579e('0xae'),_0x3c0ecf['uniqueid'],_0x3c0ecf[_0x579e('0xaf')],_0x3c0ecf['extension']);logger[_0x579e('0x3a')](_0x579e('0xb0'),_0x3c0ecf[_0x579e('0x37')],util[_0x579e('0x31')](_0x3c0ecf,{'showHidden':![],'depth':null}));if(this[_0x579e('0x3d')][_0x3c0ecf[_0x579e('0xa3')]]){this[_0x579e('0x3d')][_0x3c0ecf['transfereeuniqueid']][_0x579e('0xb1')]=_0x3c0ecf[_0x579e('0xaf')];this[_0x579e('0x3d')][_0x3c0ecf[_0x579e('0xa3')]]['transferconnectedlinenum']=_0x3c0ecf[_0x579e('0xb2')];this[_0x579e('0x3d')][_0x3c0ecf[_0x579e('0xa3')]][_0x579e('0x93')]=_0x579e('0xb3');this['syncHangup']({'event':_0x579e('0x9a'),'uniqueid':_0x3c0ecf[_0x579e('0xa3')],'context':_0x3c0ecf[_0x579e('0x44')],'channel':_0x3c0ecf[_0x579e('0xb4')]});}else{this['channels'][_0x3c0ecf['transfereruniqueid']][_0x579e('0x93')]=_0x579e('0xb3');}}}catch(_0x40a40a){logger[_0x579e('0x2f')]('[%s][voiceCallReport][blindtransfer]',_0x3c0ecf[_0x579e('0x37')],util[_0x579e('0x31')](_0x40a40a,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x579e('0x2b')]=function(_0x3c945a){try{if(this[_0x579e('0x33')](_0x3c945a)){logger[_0x579e('0x3a')](_0x579e('0xb5'),_0x3c945a[_0x579e('0x37')],util[_0x579e('0x31')](_0x3c945a,{'showHidden':![],'depth':null}));if(this[_0x579e('0x3d')][_0x3c945a[_0x579e('0x37')]]){if(!_[_0x579e('0x73')](this['channels'][_0x3c945a[_0x579e('0x37')]][_0x579e('0x64')])){this[_0x579e('0x3d')][_0x3c945a[_0x579e('0x37')]][_0x579e('0xb6')]=moment()['format'](_0x579e('0x47'));logger[_0x579e('0x2d')](_0x579e('0xb7'),_0x3c945a['uniqueid'],this[_0x579e('0x3d')][_0x3c945a[_0x579e('0x37')]][_0x579e('0xb6')]);}}}}catch(_0x54d429){logger['error'](_0x579e('0xb8'),_0x3c945a['uniqueid'],util[_0x579e('0x31')](_0x54d429,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x579e('0xb9')]=function(_0x50f5fb){try{if(this[_0x579e('0x33')](_0x50f5fb)){logger['debug'](_0x579e('0xba'),_0x50f5fb[_0x579e('0x37')],util['inspect'](_0x50f5fb,{'showHidden':![],'depth':null}));if(this[_0x579e('0x3d')][_0x50f5fb[_0x579e('0x37')]]){if(!_[_0x579e('0x73')](this[_0x579e('0x3d')][_0x50f5fb[_0x579e('0x37')]][_0x579e('0xb6')])){this[_0x579e('0x3d')][_0x50f5fb[_0x579e('0x37')]]['mohtime']+=moment()['milliseconds'](0x0)[_0x579e('0x66')](this['channels'][_0x50f5fb['uniqueid']][_0x579e('0xb6')],_0x579e('0x5e'));logger[_0x579e('0x2d')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x50f5fb[_0x579e('0x37')],this[_0x579e('0x3d')][_0x50f5fb[_0x579e('0x37')]][_0x579e('0xbb')]);delete this['channels'][_0x50f5fb[_0x579e('0x37')]][_0x579e('0xb6')];}}}}catch(_0x33f58e){logger[_0x579e('0x2f')](_0x579e('0xbc'),_0x50f5fb[_0x579e('0x37')],util[_0x579e('0x31')](_0x33f58e,{'showHidden':![],'depth':null}));}};module[_0x579e('0xbd')]=VoiceCallReport;
\ No newline at end of file
+var _0x2c0a=['endtime','diff','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','resolve','transferType','undefined','getSettings','then','stopRecordingOnTransfer','Action','StopMixMonitor','finally','webbar:stopmonitors','event','outbound','[%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','routeid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','[%s][voiceCallReport][blindtransfer]\x20event:','transfereecalleridnum','extension','transfererchannel','transfereruniqueid','BLIND','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','isNil','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','util','path','ioredis','../../../config/environment','ami','../ami','set','queue','agi','dial','voicemail','NO\x20ANSWER','FAILED','defaults','localhost','redis','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','newstate','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncMusicOnHoldStart','musiconholdstop','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','isUndefined','prototype','emit','syncNewCallerId','isNotNull','info','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','uniqueid','merge','pick','context','channel','split','exten','xcally-motion-preview','destconnectedlinenum','user:%s','name','accountcode','connectedlinenum','[%s][voiceCallReport][newchannel]\x20event:','linkedid','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','format','toNumber','channelstate','keys','from-sip','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','application','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','disposition','lastapplication','cdr(','match','[%s][voiceCallReport][newexten]','calleridname','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','endsWith','.wav49','replace','.WAV','monitorFilename','find','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','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','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','sipcalluniqueid','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt'];(function(_0x1c8c28,_0x3ee093){var _0x1f59b4=function(_0x29bcc0){while(--_0x29bcc0){_0x1c8c28['push'](_0x1c8c28['shift']());}};_0x1f59b4(++_0x3ee093);}(_0x2c0a,0x1c5));var _0xa2c0=function(_0x32d414,_0x4d23da){_0x32d414=_0x32d414-0x0;var _0x4e0bca=_0x2c0a[_0x32d414];return _0x4e0bca;};'use strict';var _=require(_0xa2c0('0x0'));var moment=require(_0xa2c0('0x1'));var util=require(_0xa2c0('0x2'));var path=require(_0xa2c0('0x3'));var Redis=require(_0xa2c0('0x4'));var config=require(_0xa2c0('0x5'));var logger=require('../../../config/logger')(_0xa2c0('0x6'));var ami=require(_0xa2c0('0x7'));var Channel=require('../model/channel');var RpcSetting=require('../rpc/setting');var applications=[_0xa2c0('0x8'),_0xa2c0('0x9'),_0xa2c0('0xa'),_0xa2c0('0xb'),'playback',_0xa2c0('0xc')];var dispositions=[_0xa2c0('0xd'),_0xa2c0('0xe'),_0xa2c0('0xe'),_0xa2c0('0xd'),_0xa2c0('0xd'),_0xa2c0('0xd'),'ANSWERED','BUSY',_0xa2c0('0xe'),'FAILED','FAILED'];config['redis']=_[_0xa2c0('0xf')](config['redis'],{'host':_0xa2c0('0x10'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa2c0('0x11')]));function VoiceCallReport(_0x502814){this[_0xa2c0('0x12')]=_0x502814[_0xa2c0('0x12')];this[_0xa2c0('0x13')]=_0x502814[_0xa2c0('0x13')];this[_0xa2c0('0x14')]={};ami['on'](_0xa2c0('0x15'),this[_0xa2c0('0x16')][_0xa2c0('0x17')](this));ami['on'](_0xa2c0('0x18'),this[_0xa2c0('0x16')]['bind'](this));ami['on'](_0xa2c0('0x19'),this['syncNewChannel'][_0xa2c0('0x17')](this));ami['on'](_0xa2c0('0x1a'),this[_0xa2c0('0x1b')][_0xa2c0('0x17')](this));ami['on'](_0xa2c0('0x1c'),this[_0xa2c0('0x1d')]['bind'](this));ami['on'](_0xa2c0('0x1e'),this[_0xa2c0('0x1f')][_0xa2c0('0x17')](this));ami['on'](_0xa2c0('0x20'),this['syncNewCallerId'][_0xa2c0('0x17')](this));ami['on']('attendedtransfer',this[_0xa2c0('0x21')][_0xa2c0('0x17')](this));ami['on'](_0xa2c0('0x22'),this[_0xa2c0('0x23')][_0xa2c0('0x17')](this));ami['on']('musiconholdstart',this[_0xa2c0('0x24')]['bind'](this));ami['on'](_0xa2c0('0x25'),this['syncMusicOnHoldStop'][_0xa2c0('0x17')](this));try{logger['info']('[voiceCallReport][coreshowchannels]\x20started');ami[_0xa2c0('0x26')]();}catch(_0x244452){logger[_0xa2c0('0x27')](_0xa2c0('0x28'),util[_0xa2c0('0x29')](_0x244452,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype']['isNotNull']=function(_0x29893b){return _0x29893b!==null&&!_[_0xa2c0('0x2a')](_0x29893b);};VoiceCallReport[_0xa2c0('0x2b')]['emit']=function(_0xffac65,_0x2f5c47,_0x1cdb6b){io['to'](_0xffac65)[_0xa2c0('0x2c')](_0x2f5c47,_0x1cdb6b);};VoiceCallReport['prototype'][_0xa2c0('0x2d')]=function(_0x37757e){try{if(this[_0xa2c0('0x2e')](_0x37757e)){logger[_0xa2c0('0x2f')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x37757e['uniqueid'],_0x37757e['calleridname'],_0x37757e[_0xa2c0('0x30')]);logger[_0xa2c0('0x31')](_0xa2c0('0x32'),_0x37757e[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x37757e,{'showHidden':![],'depth':null}));if(_0x37757e['uniqueid']===_0x37757e['linkedid']){if(!_[_0xa2c0('0x2a')](this['channels'][_0x37757e['uniqueid']])){_[_0xa2c0('0x34')](this['channels'][_0x37757e['uniqueid']],_[_0xa2c0('0x35')](_0x37757e,_['keys'](this['channels'][_0x37757e['uniqueid']])));}}if(_0x37757e[_0xa2c0('0x36')]==='from-sip'){if(this[_0xa2c0('0x13')][_0x37757e[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]]){if(_0x37757e[_0xa2c0('0x39')]==_0xa2c0('0x3a')){this[_0xa2c0('0x13')][_0x37757e[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3b')]=_0x37757e['connectedlinenum'];this['emit'](util['format'](_0xa2c0('0x3c'),this[_0xa2c0('0x13')][_0x37757e[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3d')]),'user:agentconnect',{'destaccountcode':this['agents'][_0x37757e[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3e')],'destconnectedlinenum':_0x37757e[_0xa2c0('0x3f')]});}}}}}catch(_0x264ebe){logger[_0xa2c0('0x27')]('[%s][voiceCallReport][newcallerid]',_0x37757e[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x264ebe,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa2c0('0x2b')]['syncNewChannel']=function(_0x11560c){try{if(this[_0xa2c0('0x2e')](_0x11560c)){logger[_0xa2c0('0x31')](_0xa2c0('0x40'),_0x11560c[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x11560c,{'showHidden':![],'depth':null}));if(_0x11560c[_0xa2c0('0x33')]===_0x11560c[_0xa2c0('0x41')]&&_0x11560c[_0xa2c0('0x37')]!=_0xa2c0('0x42')){if(_['isUndefined'](this[_0xa2c0('0x12')][_0x11560c[_0xa2c0('0x33')]])){logger[_0xa2c0('0x2f')](_0xa2c0('0x43'),_0x11560c[_0xa2c0('0x33')],_0x11560c['context'],_0x11560c[_0xa2c0('0x39')]);this['channels'][_0x11560c[_0xa2c0('0x33')]]=new Channel();this['channels'][_0x11560c['uniqueid']][_0xa2c0('0x44')]=moment()[_0xa2c0('0x45')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xa2c0('0x12')][_0x11560c[_0xa2c0('0x33')]]['disposition']=dispositions[_[_0xa2c0('0x46')](_0x11560c[_0xa2c0('0x47')])];_['merge'](this[_0xa2c0('0x12')][_0x11560c[_0xa2c0('0x33')]],_[_0xa2c0('0x35')](_0x11560c,_[_0xa2c0('0x48')](this['channels'][_0x11560c[_0xa2c0('0x33')]])));if(_0x11560c[_0xa2c0('0x36')]===_0xa2c0('0x49')){if(this[_0xa2c0('0x13')][_0x11560c[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]]){if(_[_0xa2c0('0x2a')](this[_0xa2c0('0x13')][_0x11560c[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3b')])){this[_0xa2c0('0x13')][_0x11560c[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3b')]=_0x11560c[_0xa2c0('0x39')];logger['debug'](_0xa2c0('0x4a'),_0x11560c[_0xa2c0('0x33')],util['inspect']({'id':this[_0xa2c0('0x13')][_0x11560c['channel'][_0xa2c0('0x38')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x11560c[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3e')],'destconnectedlinenum':_0x11560c[_0xa2c0('0x39')]},{'showHidden':![],'depth':null}));this[_0xa2c0('0x2c')](util['format']('user:%s',this[_0xa2c0('0x13')][_0x11560c['channel']['split']('-')[0x0]][_0xa2c0('0x3d')]),_0xa2c0('0x4b'),{'id':this['agents'][_0x11560c[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]]['id'],'destaccountcode':this[_0xa2c0('0x13')][_0x11560c[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3e')],'destconnectedlinenum':_0x11560c[_0xa2c0('0x39')]});}}}}}}}catch(_0x175dc1){logger['error']('[%s][voiceCallReport][newchannel]',_0x11560c[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x175dc1,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa2c0('0x2b')][_0xa2c0('0x16')]=function(_0x3f824c){try{if(this[_0xa2c0('0x2e')](_0x3f824c)){logger[_0xa2c0('0x31')]('[%s][voiceCallReport][newexten]\x20event:',_0x3f824c['uniqueid'],util[_0xa2c0('0x29')](_0x3f824c,{'showHidden':![],'depth':null}));if(_0x3f824c['uniqueid']===_0x3f824c[_0xa2c0('0x41')]&&_0x3f824c[_0xa2c0('0x39')]!='h'&&_0x3f824c[_0xa2c0('0x37')]!=_0xa2c0('0x42')){_0x3f824c['application']=_0x3f824c['application'][_0xa2c0('0x4c')]();_0x3f824c[_0xa2c0('0x4d')]=_0x3f824c[_0xa2c0('0x4e')]&&_0x3f824c[_0xa2c0('0x4e')][_0xa2c0('0x4f')](_0xa2c0('0x50'))?_0x3f824c[_0xa2c0('0x4e')]:(_0x3f824c[_0xa2c0('0x4e')]||_0x3f824c[_0xa2c0('0x4d')])[_0xa2c0('0x4c')]();logger[_0xa2c0('0x2f')](_0xa2c0('0x51'),_0x3f824c['uniqueid'],_0x3f824c[_0xa2c0('0x52')],_0x3f824c[_0xa2c0('0x4d')]);if(_[_0xa2c0('0x2a')](this[_0xa2c0('0x12')][_0x3f824c[_0xa2c0('0x33')]])){this['channels'][_0x3f824c[_0xa2c0('0x33')]]=new Channel();this[_0xa2c0('0x12')][_0x3f824c[_0xa2c0('0x33')]]['starttime']=_0x3f824c[_0xa2c0('0x53')]?moment()['subtract'](moment[_0xa2c0('0x53')](_0x3f824c['duration'])[_0xa2c0('0x54')](),_0xa2c0('0x54'))[_0xa2c0('0x45')](_0xa2c0('0x55')):moment()[_0xa2c0('0x45')](_0xa2c0('0x55'));this[_0xa2c0('0x12')][_0x3f824c[_0xa2c0('0x33')]][_0xa2c0('0x56')]=_0xa2c0('0xd');}_[_0xa2c0('0x34')](this['channels'][_0x3f824c[_0xa2c0('0x33')]],_[_0xa2c0('0x35')](_0x3f824c,_['keys'](this['channels'][_0x3f824c[_0xa2c0('0x33')]])));if(_['includes'](applications,_0x3f824c[_0xa2c0('0x52')])){this[_0xa2c0('0x12')][_0x3f824c[_0xa2c0('0x33')]][_0xa2c0('0x57')]=_0x3f824c[_0xa2c0('0x52')];this[_0xa2c0('0x12')][_0x3f824c[_0xa2c0('0x33')]]['lastdata']=_0x3f824c['applicationdata'];if(_0x3f824c[_0xa2c0('0x52')]===_0xa2c0('0x8')&&_[_0xa2c0('0x4f')](_0x3f824c[_0xa2c0('0x4d')][_0xa2c0('0x4c')](),_0xa2c0('0x58'))){var _0xc918ce=_0x3f824c[_0xa2c0('0x4d')][_0xa2c0('0x38')]('=');var _0x14b4c8=_0xc918ce[0x0][_0xa2c0('0x4c')]()[_0xa2c0('0x59')](/cdr\((.*)\)/);if(_0x14b4c8){this[_0xa2c0('0x12')][_0x3f824c[_0xa2c0('0x33')]][_0x14b4c8[0x1]]=_0xc918ce[0x1];}}else if(_0x3f824c[_0xa2c0('0x52')]==='queue'){this[_0xa2c0('0x12')][_0x3f824c['uniqueid']][_0xa2c0('0x9')]=_0x3f824c[_0xa2c0('0x4d')][_0xa2c0('0x38')](',')[0x0];}}}}}catch(_0x250077){logger[_0xa2c0('0x27')](_0xa2c0('0x5a'),_0x3f824c[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x250077,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa2c0('0x2b')]['syncNewState']=function(_0x5d5b26){try{if(this[_0xa2c0('0x2e')](_0x5d5b26)){logger[_0xa2c0('0x2f')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x5d5b26[_0xa2c0('0x33')],_0x5d5b26[_0xa2c0('0x41')],_0x5d5b26[_0xa2c0('0x5b')],_0x5d5b26[_0xa2c0('0x30')]);logger['debug'](_0xa2c0('0x5c'),_0x5d5b26[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x5d5b26,{'showHidden':![],'depth':null}));if(_0x5d5b26[_0xa2c0('0x33')]!==_0x5d5b26[_0xa2c0('0x41')]){if(this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x41')]]){if(_0x5d5b26['channelstate']==='6'){if(!this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x41')]][_0xa2c0('0x5d')]){var _0x14d32c=moment();this['channels'][_0x5d5b26['linkedid']]['answered']=!![];this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x41')]][_0xa2c0('0x5e')]=_0x14d32c[_0xa2c0('0x45')](_0xa2c0('0x55'));if(this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x41')]][_0xa2c0('0x44')]){this['channels'][_0x5d5b26[_0xa2c0('0x41')]][_0xa2c0('0x5f')]=_0x14d32c['diff'](this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x41')]][_0xa2c0('0x44')],_0xa2c0('0x54'));}}this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x41')]][_0xa2c0('0x41')]=_0x5d5b26[_0xa2c0('0x33')];if(_0x5d5b26[_0xa2c0('0x30')]!==_0xa2c0('0x3a')){this['channels'][_0x5d5b26[_0xa2c0('0x41')]]['connectedlinenum']=_0x5d5b26['calleridnum'];}this['channels'][_0x5d5b26[_0xa2c0('0x41')]][_0xa2c0('0x60')]=_0x5d5b26[_0xa2c0('0x5b')];this['channels'][_0x5d5b26[_0xa2c0('0x41')]][_0xa2c0('0x61')]=_0x5d5b26[_0xa2c0('0x37')];this['channels'][_0x5d5b26[_0xa2c0('0x41')]][_0xa2c0('0x56')]=dispositions[_['toNumber'](_0x5d5b26[_0xa2c0('0x47')])];if(this[_0xa2c0('0x13')][_0x5d5b26['channel'][_0xa2c0('0x38')]('-')[0x0]]){this['channels'][_0x5d5b26[_0xa2c0('0x41')]][_0xa2c0('0x62')]=this['agents'][_0x5d5b26[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]]['id'];this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x41')]]['membername']=this[_0xa2c0('0x13')][_0x5d5b26[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3d')];}}}}else{if(this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x33')]]){if(_0x5d5b26[_0xa2c0('0x47')]==='6'){if(this[_0xa2c0('0x13')][_0x5d5b26[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]]){this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x33')]][_0xa2c0('0x62')]=this[_0xa2c0('0x13')][_0x5d5b26['channel'][_0xa2c0('0x38')]('-')[0x0]]['id'];this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x33')]][_0xa2c0('0x63')]=this[_0xa2c0('0x13')][_0x5d5b26[_0xa2c0('0x37')]['split']('-')[0x0]][_0xa2c0('0x3d')];}}}}if(_0x5d5b26[_0xa2c0('0x47')]==='6'&&_0x5d5b26[_0xa2c0('0x36')]===_0xa2c0('0x49')){if(this[_0xa2c0('0x13')][_0x5d5b26[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]]){this[_0xa2c0('0x13')][_0x5d5b26[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3b')]=_0x5d5b26[_0xa2c0('0x39')];var _0x3397c3;if(this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x33')]])_0x3397c3=this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x33')]][_0xa2c0('0x64')];else if(this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x41')]])_0x3397c3=this[_0xa2c0('0x12')][_0x5d5b26[_0xa2c0('0x41')]][_0xa2c0('0x64')];logger[_0xa2c0('0x31')](_0xa2c0('0x65'),_0x5d5b26[_0xa2c0('0x33')],util[_0xa2c0('0x29')]({'id':this['agents'][_0x5d5b26['channel'][_0xa2c0('0x38')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x5d5b26['channel'][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3e')],'destconnectedlinenum':_0x5d5b26[_0xa2c0('0x39')],'routealias':_0x3397c3},{'showHidden':![],'depth':null}));this['emit'](util['format']('user:%s',this[_0xa2c0('0x13')][_0x5d5b26['channel'][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3d')]),_0xa2c0('0x4b'),{'id':this[_0xa2c0('0x13')][_0x5d5b26['channel']['split']('-')[0x0]]['id'],'destaccountcode':this[_0xa2c0('0x13')][_0x5d5b26[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3e')],'destconnectedlinenum':_0x5d5b26['exten'],'routealias':_0x3397c3});}}}}catch(_0x58a554){logger[_0xa2c0('0x27')](_0xa2c0('0x66'),_0x5d5b26[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x58a554,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xa2c0('0x67')]=function(_0x429687,_0x3c90d0){try{if(this[_0xa2c0('0x12')][_0x429687]){logger['info'](_0xa2c0('0x68'),_0x429687,_0x3c90d0);this[_0xa2c0('0x12')][_0x429687]['monitor']=!![];if(_[_0xa2c0('0x69')](_0x3c90d0,_0xa2c0('0x6a'))){_0x3c90d0=_0x3c90d0[_0xa2c0('0x6b')](_0xa2c0('0x6a'),_0xa2c0('0x6c'));}this[_0xa2c0('0x12')][_0x429687][_0xa2c0('0x6d')]=_0x3c90d0;var _0xa45de6=_[_0xa2c0('0x6e')](this[_0xa2c0('0x12')][_0x429687][_0xa2c0('0x6f')],{'filename':_0x3c90d0});if(_['isNil'](_0xa45de6)){this[_0xa2c0('0x12')][_0x429687]['monitors'][_0xa2c0('0x70')]({'filename':_0x3c90d0,'createdAt':moment()[_0xa2c0('0x45')](_0xa2c0('0x55')),'mixmonitorid':'','status':_0xa2c0('0x71')});}}}catch(_0x121ce4){logger[_0xa2c0('0x27')](_0xa2c0('0x72'),_0x429687,util[_0xa2c0('0x29')](_0x121ce4,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa2c0('0x2b')][_0xa2c0('0x1d')]=function(_0x1a699b){try{if(this[_0xa2c0('0x2e')](_0x1a699b)){logger[_0xa2c0('0x31')](_0xa2c0('0x73'),_0x1a699b[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x1a699b,{'showHidden':![],'depth':null}));if(this[_0xa2c0('0x12')][_0x1a699b[_0xa2c0('0x33')]]&&_0x1a699b[_0xa2c0('0x37')]!=_0xa2c0('0x42')){if(this[_0xa2c0('0x2e')](_0x1a699b[_0xa2c0('0x74')])){if(this['isNotNull'](_0x1a699b['variable'][_0xa2c0('0x75')])){logger[_0xa2c0('0x2f')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x1a699b[_0xa2c0('0x33')],_0x1a699b['value']);this[_0xa2c0('0x67')](_0x1a699b[_0xa2c0('0x33')],_0x1a699b[_0xa2c0('0x76')]);}else if(this['isNotNull'](_0x1a699b[_0xa2c0('0x74')][_0xa2c0('0x77')])){logger[_0xa2c0('0x2f')](_0xa2c0('0x78'),_0x1a699b[_0xa2c0('0x33')],_0x1a699b[_0xa2c0('0x76')]);this['channels'][_0x1a699b['uniqueid']]['calleridnum']=_0x1a699b['value'];}else if(this[_0xa2c0('0x2e')](_0x1a699b['variable']['xmd-callerid'])){logger[_0xa2c0('0x2f')](_0xa2c0('0x79'),_0x1a699b[_0xa2c0('0x33')],_0x1a699b[_0xa2c0('0x76')]);this['channels'][_0x1a699b[_0xa2c0('0x33')]][_0xa2c0('0x7a')]=_0x1a699b['value'];}else if(this[_0xa2c0('0x2e')](_0x1a699b[_0xa2c0('0x74')][_0xa2c0('0x7b')])){logger[_0xa2c0('0x2f')](_0xa2c0('0x7c'),_0x1a699b['uniqueid'],_0x1a699b['value']);this[_0xa2c0('0x12')][_0x1a699b['uniqueid']][_0xa2c0('0x7d')]=_0x1a699b[_0xa2c0('0x76')];}else if(this[_0xa2c0('0x2e')](_0x1a699b[_0xa2c0('0x74')]['xmd-queue'])){logger[_0xa2c0('0x2f')](_0xa2c0('0x7e'),_0x1a699b[_0xa2c0('0x33')],_0x1a699b[_0xa2c0('0x76')][_0xa2c0('0x38')](',')[0x0]);this[_0xa2c0('0x12')][_0x1a699b[_0xa2c0('0x33')]]['queue']=_0x1a699b[_0xa2c0('0x76')]['split'](',')[0x0];}else if(this[_0xa2c0('0x2e')](_0x1a699b['variable'][_0xa2c0('0x7f')])){logger[_0xa2c0('0x2f')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x1a699b[_0xa2c0('0x33')],_0x1a699b[_0xa2c0('0x76')]);this[_0xa2c0('0x12')][_0x1a699b[_0xa2c0('0x33')]][_0xa2c0('0x80')]=_0x1a699b['value'];}else if(this[_0xa2c0('0x2e')](_0x1a699b[_0xa2c0('0x74')][_0xa2c0('0x81')])){logger[_0xa2c0('0x2f')](_0xa2c0('0x82'),_0x1a699b[_0xa2c0('0x33')],_0x1a699b[_0xa2c0('0x76')]);this[_0xa2c0('0x12')][_0x1a699b[_0xa2c0('0x33')]][_0xa2c0('0x83')]=_0x1a699b[_0xa2c0('0x76')];}else if(this[_0xa2c0('0x2e')](_0x1a699b[_0xa2c0('0x74')][_0xa2c0('0x84')])){logger['info'](_0xa2c0('0x85'),_0x1a699b[_0xa2c0('0x33')],_0x1a699b['value']);this[_0xa2c0('0x12')][_0x1a699b['uniqueid']][_0xa2c0('0x86')]=_0x1a699b[_0xa2c0('0x76')];}else if(this['isNotNull'](_0x1a699b[_0xa2c0('0x74')]['xmcs-queue'])){logger[_0xa2c0('0x2f')](_0xa2c0('0x87'),_0x1a699b[_0xa2c0('0x33')],_0x1a699b[_0xa2c0('0x76')]);this[_0xa2c0('0x12')][_0x1a699b[_0xa2c0('0x33')]][_0xa2c0('0x9')]=_0x1a699b['value'];}else if(this[_0xa2c0('0x2e')](_0x1a699b[_0xa2c0('0x74')][_0xa2c0('0x88')])){logger[_0xa2c0('0x2f')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x1a699b[_0xa2c0('0x33')],_0x1a699b[_0xa2c0('0x76')]);this[_0xa2c0('0x12')][_0x1a699b[_0xa2c0('0x33')]][_0xa2c0('0x89')]=_0x1a699b[_0xa2c0('0x76')];}}}else if(this[_0xa2c0('0x2e')](_0x1a699b[_0xa2c0('0x74')][_0xa2c0('0x75')])){if(_0x1a699b[_0xa2c0('0x76')]){var _0xf1333b=path['parse'](_0x1a699b[_0xa2c0('0x76')])[_0xa2c0('0x3d')];logger[_0xa2c0('0x2f')](_0xa2c0('0x8a'),_0xf1333b,_0x1a699b['value']);this[_0xa2c0('0x67')](_0xf1333b,_0x1a699b[_0xa2c0('0x76')]);}}else if(this[_0xa2c0('0x12')][_0x1a699b['linkedid']]){if(this[_0xa2c0('0x2e')](_0x1a699b[_0xa2c0('0x74')])){if(this[_0xa2c0('0x2e')](_0x1a699b['variable'][_0xa2c0('0x88')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x1a699b[_0xa2c0('0x41')],_0x1a699b[_0xa2c0('0x76')]);this[_0xa2c0('0x12')][_0x1a699b['linkedid']][_0xa2c0('0x8b')]=_0x1a699b[_0xa2c0('0x76')];}}}}}catch(_0x532d9d){logger[_0xa2c0('0x27')](_0xa2c0('0x8c'),_0x1a699b[_0xa2c0('0x33')],util['inspect'](_0x532d9d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa2c0('0x2b')]['syncHangup']=function(_0x26a189){try{if(this[_0xa2c0('0x2e')](_0x26a189)){logger['debug'](_0xa2c0('0x8d'),_0x26a189[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x26a189,{'showHidden':![],'depth':null}));if(this[_0xa2c0('0x12')][_0x26a189[_0xa2c0('0x33')]]){logger['info'](_0xa2c0('0x8e'),_0x26a189[_0xa2c0('0x33')],_0x26a189[_0xa2c0('0x8f')]);var _0x27e323=moment();this[_0xa2c0('0x12')][_0x26a189[_0xa2c0('0x33')]][_0xa2c0('0x90')]=_0x27e323[_0xa2c0('0x45')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xa2c0('0x12')][_0x26a189[_0xa2c0('0x33')]][_0xa2c0('0x53')]=_0x27e323[_0xa2c0('0x91')](this[_0xa2c0('0x12')][_0x26a189['uniqueid']]['starttime'],'seconds');if(this[_0xa2c0('0x12')][_0x26a189['uniqueid']]['answered']){this[_0xa2c0('0x12')][_0x26a189[_0xa2c0('0x33')]][_0xa2c0('0x92')]=_0x27e323[_0xa2c0('0x91')](this[_0xa2c0('0x12')][_0x26a189['uniqueid']][_0xa2c0('0x5e')],_0xa2c0('0x54'));this[_0xa2c0('0x12')][_0x26a189['uniqueid']]['holdtime']=this['channels'][_0x26a189[_0xa2c0('0x33')]][_0xa2c0('0x53')]-this[_0xa2c0('0x12')][_0x26a189[_0xa2c0('0x33')]][_0xa2c0('0x92')];}if(_0x26a189[_0xa2c0('0x36')]===_0xa2c0('0x49')){if(this['agents'][_0x26a189['channel'][_0xa2c0('0x38')]('-')[0x0]]){this[_0xa2c0('0x13')][_0x26a189[_0xa2c0('0x37')]['split']('-')[0x0]]=_[_0xa2c0('0x93')](this[_0xa2c0('0x13')][_0x26a189[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]],[_0xa2c0('0x3b')]);logger[_0xa2c0('0x31')](_0xa2c0('0x94'),_0x26a189[_0xa2c0('0x33')],util['inspect']({'id':this[_0xa2c0('0x13')][_0x26a189[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]]['id'],'destaccountcode':this[_0xa2c0('0x13')][_0x26a189[_0xa2c0('0x37')]['split']('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0xa2c0('0x2c')](util['format'](_0xa2c0('0x3c'),this[_0xa2c0('0x13')][_0x26a189[_0xa2c0('0x37')][_0xa2c0('0x38')]('-')[0x0]][_0xa2c0('0x3d')]),_0xa2c0('0x95'),{'id':this[_0xa2c0('0x13')][_0x26a189['channel'][_0xa2c0('0x38')]('-')[0x0]]['id'],'destaccountcode':this[_0xa2c0('0x13')][_0x26a189[_0xa2c0('0x37')]['split']('-')[0x0]]['accountcode']});for(var _0x1c0151=0x0;_0x1c0151<Object[_0xa2c0('0x48')](this[_0xa2c0('0x13')])[_0xa2c0('0x96')];_0x1c0151++){var _0x19dff1=Object[_0xa2c0('0x48')](this[_0xa2c0('0x13')])[_0x1c0151];var _0x29596e=this[_0xa2c0('0x13')][_0x19dff1];if(_0x29596e['accountcode']===Number(_0x26a189['connectedlinenum'])){this[_0xa2c0('0x2c')](util[_0xa2c0('0x45')]('user:%s',_0x29596e[_0xa2c0('0x3d')]),_0xa2c0('0x95'),{'id':_0x29596e['id'],'destaccountcode':_0x29596e['accountcode']});break;}}}}var _0x5c701f=this;Promise[_0xa2c0('0x97')]()['then'](function(){var _0x2731de=_0x5c701f[_0xa2c0('0x12')][_0x26a189[_0xa2c0('0x33')]];if(typeof _0x2731de[_0xa2c0('0x98')]===_0xa2c0('0x99'))return;if(_['isEmpty'](_0x2731de[_0xa2c0('0x6f')]))return;return RpcSetting[_0xa2c0('0x9a')]()[_0xa2c0('0x9b')](function(_0x4d4f29){if(!_0x4d4f29[_0xa2c0('0x9c')])return;return Promise['resolve']()[_0xa2c0('0x9b')](function(){return ami[_0xa2c0('0x9d')]({'action':'StopMixMonitor','channel':_0x2731de[_0xa2c0('0x37')]})['catch'](function(){});})[_0xa2c0('0x9b')](function(){return ami[_0xa2c0('0x9d')]({'action':_0xa2c0('0x9e'),'channel':_0x2731de[_0xa2c0('0x61')]})['catch'](function(){})[_0xa2c0('0x9f')](function(){var _0x4e68f0=_0x5c701f[_0xa2c0('0x13')][_0x2731de[_0xa2c0('0x61')][_0xa2c0('0x38')]('-')[0x0]];if(!_0x4e68f0)return;io[_0xa2c0('0x2c')](_0xa2c0('0xa0'),{'agentId':_0x4e68f0['id'],'uniqueid':_0x2731de[_0xa2c0('0x33')]});});});});})[_0xa2c0('0x9b')](function(){if(_0x26a189[_0xa2c0('0xa1')]==='BlindTransfer'){_0x5c701f['blindTransfers'][_0x26a189['uniqueid']]=_0x5c701f[_0xa2c0('0x12')][_0x26a189[_0xa2c0('0x33')]];}else{if(_0x5c701f[_0xa2c0('0x12')][_0x26a189['uniqueid']]['type']===_0xa2c0('0xa2')&&_0x5c701f[_0xa2c0('0x14')][_0x26a189[_0xa2c0('0x33')]]){_0x5c701f[_0xa2c0('0x12')][_0x26a189['uniqueid']][_0xa2c0('0x33')]=[_0x5c701f[_0xa2c0('0x12')][_0x26a189[_0xa2c0('0x33')]][_0xa2c0('0x41')],_0x5c701f['channels'][_0x26a189['uniqueid']][_0xa2c0('0x41')]=_0x5c701f[_0xa2c0('0x12')][_0x26a189['uniqueid']][_0xa2c0('0x33')]][0x0];delete _0x5c701f[_0xa2c0('0x14')][_0x26a189[_0xa2c0('0x33')]];}}logger['debug'](_0xa2c0('0xa3'),_0x26a189[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x5c701f['channels'][_0x26a189['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xa2c0('0x2c')](_0xa2c0('0xa4'),_0x5c701f[_0xa2c0('0x12')][_0x26a189[_0xa2c0('0x33')]]);delete _0x5c701f[_0xa2c0('0x12')][_0x26a189[_0xa2c0('0x33')]];});}}}catch(_0x579d0e){logger['error'](_0xa2c0('0xa5'),_0x26a189[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x579d0e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa2c0('0x2b')]['syncAttendedTransfer']=function(_0x5761ac){try{if(this[_0xa2c0('0x2e')](_0x5761ac)){logger[_0xa2c0('0x2f')](_0xa2c0('0xa6'),_0x5761ac[_0xa2c0('0x33')],_0x5761ac[_0xa2c0('0xa7')],_0x5761ac[_0xa2c0('0xa8')]);logger[_0xa2c0('0x31')](_0xa2c0('0xa9'),_0x5761ac['uniqueid'],util[_0xa2c0('0x29')](_0x5761ac,{'showHidden':![],'depth':null}));if(this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xaa')]]){this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xaa')]][_0xa2c0('0xab')]=_0x5761ac['origtransferercalleridnum'];this['channels'][_0x5761ac[_0xa2c0('0xaa')]]['transferconnectedlinenum']=_0x5761ac['transfertargetcalleridnum'];if(this[_0xa2c0('0x12')][_0x5761ac['secondtransfereruniqueid']]){var _0x3beb54=this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xac')]];this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xac')]]=this[_0xa2c0('0x12')][_0x5761ac['transfereeuniqueid']];this['channels'][_0x5761ac['transfereeuniqueid']]=_0x3beb54;}}else if(this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xad')]]){this[_0xa2c0('0x12')][_0x5761ac['transfertargetuniqueid']]['transfercalleridnum']=_0x5761ac['origtransferercalleridnum'];this['channels'][_0x5761ac[_0xa2c0('0xad')]][_0xa2c0('0xae')]=_0x5761ac[_0xa2c0('0xa8')];if(this['channels'][_0x5761ac[_0xa2c0('0xaf')]]){var _0x3beb54=this[_0xa2c0('0x12')][_0x5761ac['origtransfereruniqueid']];this['channels'][_0x5761ac[_0xa2c0('0xaf')]]=this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xad')]];this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xad')]]=_0x3beb54;}}if((this['channels'][_0x5761ac[_0xa2c0('0xaf')]]||this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xb0')]])&&this['channels'][_0x5761ac[_0xa2c0('0xac')]]){var _0x3a080d=_['some']([this[_0xa2c0('0x12')][_0x5761ac['origtransfereruniqueid']],this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xb0')]],this[_0xa2c0('0x12')][_0x5761ac['secondtransfereruniqueid']]],function(_0x1a917e){return _0x1a917e&&_0x1a917e[_0xa2c0('0x7d')]==='outbound'&&_0x1a917e[_0xa2c0('0xb1')];});if(_0x3a080d){if(this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xaf')]])this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xaf')]][_0xa2c0('0x98')]='ATTENDED';if(this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xb0')]])this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xb0')]]['transferType']=_0xa2c0('0xb2');this[_0xa2c0('0x12')][_0x5761ac[_0xa2c0('0xac')]][_0xa2c0('0x98')]=_0xa2c0('0xb2');}}}}catch(_0x120510){logger[_0xa2c0('0x27')](_0xa2c0('0xb3'),_0x5761ac[_0xa2c0('0x33')],util['inspect'](_0x120510,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa2c0('0x2b')][_0xa2c0('0x23')]=function(_0x22695a){try{if(this[_0xa2c0('0x2e')](_0x22695a)){logger[_0xa2c0('0x2f')](_0xa2c0('0xb4'),_0x22695a[_0xa2c0('0x33')],_0x22695a['transfereecalleridnum'],_0x22695a['extension']);logger[_0xa2c0('0x31')](_0xa2c0('0xb5'),_0x22695a[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x22695a,{'showHidden':![],'depth':null}));if(this[_0xa2c0('0x12')][_0x22695a[_0xa2c0('0xaa')]]){this[_0xa2c0('0x12')][_0x22695a['transfereeuniqueid']][_0xa2c0('0xab')]=_0x22695a[_0xa2c0('0xb6')];this[_0xa2c0('0x12')][_0x22695a[_0xa2c0('0xaa')]]['transferconnectedlinenum']=_0x22695a[_0xa2c0('0xb7')];this[_0xa2c0('0x12')][_0x22695a[_0xa2c0('0xaa')]][_0xa2c0('0x98')]='BLIND';this[_0xa2c0('0x1f')]({'event':'BlindTransfer','uniqueid':_0x22695a[_0xa2c0('0xaa')],'context':_0x22695a[_0xa2c0('0x36')],'channel':_0x22695a[_0xa2c0('0xb8')]});}else{this[_0xa2c0('0x12')][_0x22695a[_0xa2c0('0xb9')]][_0xa2c0('0x98')]=_0xa2c0('0xba');}}}catch(_0x344e43){logger[_0xa2c0('0x27')](_0xa2c0('0xbb'),_0x22695a[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x344e43,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa2c0('0x2b')][_0xa2c0('0x24')]=function(_0x51972d){try{if(this[_0xa2c0('0x2e')](_0x51972d)){logger[_0xa2c0('0x31')](_0xa2c0('0xbc'),_0x51972d[_0xa2c0('0x33')],util['inspect'](_0x51972d,{'showHidden':![],'depth':null}));if(this[_0xa2c0('0x12')][_0x51972d[_0xa2c0('0x33')]]){if(!_['isNil'](this['channels'][_0x51972d['uniqueid']][_0xa2c0('0x5e')])){this[_0xa2c0('0x12')][_0x51972d[_0xa2c0('0x33')]]['mohstarttime']=moment()[_0xa2c0('0x45')](_0xa2c0('0x55'));logger[_0xa2c0('0x2f')](_0xa2c0('0xbd'),_0x51972d['uniqueid'],this[_0xa2c0('0x12')][_0x51972d['uniqueid']][_0xa2c0('0xbe')]);}}}}catch(_0xfdf57f){logger[_0xa2c0('0x27')](_0xa2c0('0xbf'),_0x51972d[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0xfdf57f,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncMusicOnHoldStop']=function(_0x42b1b3){try{if(this[_0xa2c0('0x2e')](_0x42b1b3)){logger[_0xa2c0('0x31')](_0xa2c0('0xc0'),_0x42b1b3[_0xa2c0('0x33')],util[_0xa2c0('0x29')](_0x42b1b3,{'showHidden':![],'depth':null}));if(this[_0xa2c0('0x12')][_0x42b1b3[_0xa2c0('0x33')]]){if(!_[_0xa2c0('0xc1')](this[_0xa2c0('0x12')][_0x42b1b3[_0xa2c0('0x33')]][_0xa2c0('0xbe')])){this[_0xa2c0('0x12')][_0x42b1b3['uniqueid']]['mohtime']+=moment()[_0xa2c0('0xc2')](0x0)[_0xa2c0('0x91')](this['channels'][_0x42b1b3[_0xa2c0('0x33')]][_0xa2c0('0xbe')],'seconds');logger['info'](_0xa2c0('0xc3'),_0x42b1b3[_0xa2c0('0x33')],this[_0xa2c0('0x12')][_0x42b1b3[_0xa2c0('0x33')]][_0xa2c0('0xc4')]);delete this['channels'][_0x42b1b3[_0xa2c0('0x33')]][_0xa2c0('0xbe')];}}}}catch(_0xa28928){logger[_0xa2c0('0x27')](_0xa2c0('0xc5'),_0x42b1b3['uniqueid'],util[_0xa2c0('0x29')](_0xa28928,{'showHidden':![],'depth':null}));}};module[_0xa2c0('0xc6')]=VoiceCallReport;
\ No newline at end of file
index 6da403d..bd55265 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44ee=['[%s][voiceDialReport][hangup]','exports','lodash','moment','util','ioredis','../ami','defaults','redis','localhost','variables','dialbegin','syncDialBegin','bind','dialend','varset','syncVarSet','hangup','syncHangup','prototype','isNotNull','emit','inspect','channels','uniqueid','format','YYYY-MM-DD\x20HH:mm:ss','channel','lastIndexOf','substring','omit','event','privilege','interface','debug','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','info','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','addVariable','value','variable','outboundrouteid','isUndefined','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','membername','isNil','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','endtime','duration','starttime','seconds','complete','outbound','total','answered','holdtime','diff','billableseconds','sumHoldTime','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','linkedid','destuniqueid'];(function(_0x342841,_0x22eb36){var _0x2efe99=function(_0x4c97de){while(--_0x4c97de){_0x342841['push'](_0x342841['shift']());}};_0x2efe99(++_0x22eb36);}(_0x44ee,0x66));var _0xe44e=function(_0x3bf3c9,_0x3a69fc){_0x3bf3c9=_0x3bf3c9-0x0;var _0x59fcec=_0x44ee[_0x3bf3c9];return _0x59fcec;};'use strict';var _=require(_0xe44e('0x0'));var moment=require(_0xe44e('0x1'));var util=require(_0xe44e('0x2'));var Redis=require(_0xe44e('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')('ami');var ami=require(_0xe44e('0x4'));config['redis']=_[_0xe44e('0x5')](config[_0xe44e('0x6')],{'host':_0xe44e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function VoiceDialReport(_0x4948c1){this['channels']=_0x4948c1['outboundChannels'];this['outbound']=_0x4948c1['outbound'];this[_0xe44e('0x8')]={};ami['on'](_0xe44e('0x9'),this[_0xe44e('0xa')][_0xe44e('0xb')](this));ami['on'](_0xe44e('0xc'),this['syncDialEnd']['bind'](this));ami['on'](_0xe44e('0xd'),this[_0xe44e('0xe')][_0xe44e('0xb')](this));ami['on'](_0xe44e('0xf'),this[_0xe44e('0x10')][_0xe44e('0xb')](this));}VoiceDialReport[_0xe44e('0x11')][_0xe44e('0x12')]=function(_0x38e776){return _0x38e776!==null&&!_['isUndefined'](_0x38e776);};VoiceDialReport['prototype'][_0xe44e('0x13')]=function(_0x5be501,_0x4c086d,_0x41e2fa){io['to'](_0x5be501)['emit'](_0x4c086d,_0x41e2fa);};VoiceDialReport[_0xe44e('0x11')][_0xe44e('0xa')]=function(_0x1e65eb){try{if(this['isNotNull'](_0x1e65eb)){logger['debug']('[%s][voiceDialReport][dialbegin]\x20event:',_0x1e65eb['uniqueid'],util[_0xe44e('0x14')](_0x1e65eb,{'showHidden':![],'depth':null}));if(this[_0xe44e('0x15')][_0x1e65eb[_0xe44e('0x16')]]){_['merge'](this[_0xe44e('0x15')][_0x1e65eb['uniqueid']],{'starttime':moment()[_0xe44e('0x17')](_0xe44e('0x18')),'lastevent':'called','interface':_0x1e65eb[_0xe44e('0x19')]['substring'](0x0,_0x1e65eb[_0xe44e('0x19')][_0xe44e('0x1a')]('-')),'membername':_0x1e65eb[_0xe44e('0x19')][_0xe44e('0x1b')](_0x1e65eb[_0xe44e('0x19')][_0xe44e('0x1a')]('/')+0x1,_0x1e65eb[_0xe44e('0x19')]['lastIndexOf']('-'))},_[_0xe44e('0x1c')](_0x1e65eb,[_0xe44e('0x1d'),_0xe44e('0x1e')]));logger['info']('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x1e65eb[_0xe44e('0x16')],this[_0xe44e('0x15')][_0x1e65eb[_0xe44e('0x16')]]['membername'],this['channels'][_0x1e65eb['uniqueid']][_0xe44e('0x1f')]);logger[_0xe44e('0x20')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x1e65eb[_0xe44e('0x16')],util['inspect'](this[_0xe44e('0x15')][_0x1e65eb[_0xe44e('0x16')]],{'showHidden':![],'depth':null}));this[_0xe44e('0x13')](_0xe44e('0x21'),_0xe44e('0x22'),this[_0xe44e('0x15')][_0x1e65eb['uniqueid']]);logger[_0xe44e('0x20')](_0xe44e('0x23'),_0x1e65eb[_0xe44e('0x16')],util[_0xe44e('0x14')](this[_0xe44e('0x15')][_0x1e65eb['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xe44e('0x13')](_0xe44e('0x24'),this[_0xe44e('0x15')][_0x1e65eb['uniqueid']]);}}}catch(_0x50269e){logger[_0xe44e('0x25')](_0xe44e('0x26'),_0x1e65eb['uniqueid'],util['inspect'](_0x50269e,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xe44e('0x11')][_0xe44e('0x27')]=function(_0x43435a){try{if(this[_0xe44e('0x12')](_0x43435a)){logger['debug'](_0xe44e('0x28'),_0x43435a[_0xe44e('0x16')],util[_0xe44e('0x14')](_0x43435a,{'showHidden':![],'depth':null}));if(this['channels'][_0x43435a[_0xe44e('0x16')]]){this[_0xe44e('0x15')][_0x43435a[_0xe44e('0x16')]][_0xe44e('0x29')]=_0x43435a[_0xe44e('0x29')];if(_0x43435a[_0xe44e('0x29')]===_0xe44e('0x2a')){this['channels'][_0x43435a[_0xe44e('0x16')]][_0xe44e('0x2b')]=_0x43435a[_0xe44e('0x2b')];this[_0xe44e('0x15')][_0x43435a[_0xe44e('0x16')]][_0xe44e('0x2c')]=_0x43435a[_0xe44e('0x2c')];this[_0xe44e('0x15')][_0x43435a[_0xe44e('0x16')]][_0xe44e('0x2d')]=moment()[_0xe44e('0x17')](_0xe44e('0x18'));this[_0xe44e('0x15')][_0x43435a[_0xe44e('0x16')]][_0xe44e('0x2e')]=_0xe44e('0x2f');logger[_0xe44e('0x30')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x43435a['uniqueid'],_0x43435a['channel'][_0xe44e('0x1b')](_0x43435a[_0xe44e('0x19')][_0xe44e('0x1a')]('/')+0x1,_0x43435a[_0xe44e('0x19')]['lastIndexOf']('-')));logger[_0xe44e('0x20')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x43435a['uniqueid'],util[_0xe44e('0x14')](this[_0xe44e('0x15')][_0x43435a[_0xe44e('0x16')]],{'showHidden':![],'depth':null}));ami['emit'](_0xe44e('0x31'),this[_0xe44e('0x15')][_0x43435a[_0xe44e('0x16')]]);}logger[_0xe44e('0x20')](_0xe44e('0x32'),_0x43435a[_0xe44e('0x16')],util[_0xe44e('0x14')](this[_0xe44e('0x15')][_0x43435a[_0xe44e('0x16')]],{'showHidden':![],'depth':null}));this[_0xe44e('0x13')](_0xe44e('0x21'),'voice_outbound_channel:save',this[_0xe44e('0x15')][_0x43435a[_0xe44e('0x16')]]);}}}catch(_0x353648){logger[_0xe44e('0x25')](_0xe44e('0x33'),_0x43435a[_0xe44e('0x16')],util[_0xe44e('0x14')](_0x353648,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xe44e('0x11')][_0xe44e('0xe')]=function(_0x25ac9f){try{if(this[_0xe44e('0x12')](_0x25ac9f)){logger[_0xe44e('0x20')]('[%s][voiceDialReport][varset]\x20event:',_0x25ac9f['uniqueid'],util['inspect'](_0x25ac9f,{'showHidden':![],'depth':null}));this[_0xe44e('0x34')](_0x25ac9f[_0xe44e('0x16')],_['keys'](_0x25ac9f['variable'])[0x0],_0x25ac9f[_0xe44e('0x35')]);if(this[_0xe44e('0x12')](_0x25ac9f[_0xe44e('0x36')])&&this['isNotNull'](_0x25ac9f[_0xe44e('0x36')][_0xe44e('0x37')])){if(_[_0xe44e('0x38')](this['channels'][_0x25ac9f['uniqueid']])){this[_0xe44e('0x15')][_0x25ac9f[_0xe44e('0x16')]]={'routeId':_0x25ac9f[_0xe44e('0x35')],'variables':this['variables'][_0x25ac9f['uniqueid']]};logger[_0xe44e('0x30')](_0xe44e('0x39'),_0x25ac9f[_0xe44e('0x16')],_0x25ac9f[_0xe44e('0x36')]['outboundrouteid'],_['keys'](_0x25ac9f[_0xe44e('0x36')])[0x0],_0x25ac9f[_0xe44e('0x35')]);logger[_0xe44e('0x20')](_0xe44e('0x3a'),_0x25ac9f[_0xe44e('0x16')],util[_0xe44e('0x14')](this[_0xe44e('0x15')][_0x25ac9f[_0xe44e('0x16')]],{'showHidden':![],'depth':null}));this[_0xe44e('0x13')](_0xe44e('0x21'),'voice_outbound_channel:save',this[_0xe44e('0x15')][_0x25ac9f[_0xe44e('0x16')]]);}}}}catch(_0x213620){logger['error']('[%s][voiceDialReport][varset]',_0x25ac9f[_0xe44e('0x16')],util[_0xe44e('0x14')](_0x213620,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xe44e('0x11')][_0xe44e('0x34')]=function(_0x207658,_0x3d9fbf,_0x2dd606){var _0x484d47=[_0xe44e('0x3b'),_0xe44e('0x3c'),_0xe44e('0x3d'),_0xe44e('0x3e'),_0xe44e('0x3f'),_0xe44e('0x40'),'rtpaudioqosrtt',_0xe44e('0x41'),_0xe44e('0x42'),_0xe44e('0x43'),'bridgepeer',_0xe44e('0x44'),'membercalls',_0xe44e('0x45'),_0xe44e('0x46'),_0xe44e('0x47'),_0xe44e('0x48'),'memberpenalty','memberrealtime'];if(!_[_0xe44e('0x49')](_0x3d9fbf)&&!_[_0xe44e('0x4a')](_0x484d47,_0x3d9fbf)){if(_['isUndefined'](this[_0xe44e('0x8')][_0x207658])){this[_0xe44e('0x8')][_0x207658]={};}this[_0xe44e('0x8')][_0x207658][_0x3d9fbf]=_0x2dd606;}};VoiceDialReport[_0xe44e('0x11')][_0xe44e('0x10')]=function(_0x4efedf){try{if(this[_0xe44e('0x12')](_0x4efedf)){logger[_0xe44e('0x20')]('[%s][voiceDialReport][hangup]\x20event:',_0x4efedf[_0xe44e('0x16')],util[_0xe44e('0x14')](_0x4efedf,{'showHidden':![],'depth':null}));if(this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]]){logger['info'](_0xe44e('0x4b'),_0x4efedf[_0xe44e('0x16')],_0x4efedf['cause-txt']);this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]][_0xe44e('0x4c')]=moment()[_0xe44e('0x17')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xe44e('0x15')][_0x4efedf['uniqueid']][_0xe44e('0x4d')]=moment(this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]][_0xe44e('0x4c')])['diff'](this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]][_0xe44e('0x4e')],_0xe44e('0x4f'));this['channels'][_0x4efedf['uniqueid']][_0xe44e('0x2e')]=_0xe44e('0x50');this[_0xe44e('0x51')][_0xe44e('0x52')]+=0x1;if(this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]][_0xe44e('0x2d')]){this[_0xe44e('0x51')][_0xe44e('0x53')]+=0x1;this['channels'][_0x4efedf[_0xe44e('0x16')]][_0xe44e('0x54')]=moment(this[_0xe44e('0x15')][_0x4efedf['uniqueid']]['answertime'])[_0xe44e('0x55')](this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]]['starttime'],_0xe44e('0x4f'));this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]][_0xe44e('0x56')]=moment(this[_0xe44e('0x15')][_0x4efedf['uniqueid']][_0xe44e('0x4c')])[_0xe44e('0x55')](this['channels'][_0x4efedf[_0xe44e('0x16')]][_0xe44e('0x2d')],'seconds');this[_0xe44e('0x51')][_0xe44e('0x57')]+=this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]]['holdtime']||0x0;this[_0xe44e('0x51')]['sumBillable']+=this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]][_0xe44e('0x56')];}this['outbound'][_0xe44e('0x58')]+=this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]][_0xe44e('0x4d')];logger[_0xe44e('0x20')](_0xe44e('0x59'),_0x4efedf[_0xe44e('0x16')],util['inspect'](this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]],{'showHidden':![],'depth':null}));ami[_0xe44e('0x13')](_0xe44e('0x5a'),this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]]);logger[_0xe44e('0x20')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x4efedf[_0xe44e('0x16')],util[_0xe44e('0x14')](this[_0xe44e('0x15')][_0x4efedf['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xe44e('0x13')](_0xe44e('0x5b'),this[_0xe44e('0x15')][_0x4efedf['uniqueid']]);logger[_0xe44e('0x20')](_0xe44e('0x5c'),_0x4efedf[_0xe44e('0x16')],util[_0xe44e('0x14')](this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]],{'showHidden':![],'depth':null}));this['emit'](_0xe44e('0x21'),_0xe44e('0x5d'),this[_0xe44e('0x51')]);logger[_0xe44e('0x30')](_0xe44e('0x5e'),JSON['stringify'](this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]]));logger[_0xe44e('0x20')](_0xe44e('0x5f'),_0x4efedf[_0xe44e('0x16')],util[_0xe44e('0x14')](this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x16')]],{'showHidden':![],'depth':null}));this[_0xe44e('0x13')](_0xe44e('0x21'),'voice_outbound_channel:remove',this['channels'][_0x4efedf[_0xe44e('0x16')]]);delete this[_0xe44e('0x15')][_0x4efedf['uniqueid']];}else if(this[_0xe44e('0x15')][_0x4efedf['linkedid']]){this[_0xe44e('0x15')][_0x4efedf[_0xe44e('0x60')]][_0xe44e('0x16')]=this['channels'][_0x4efedf[_0xe44e('0x60')]][_0xe44e('0x61')];}if(this[_0xe44e('0x8')][_0x4efedf[_0xe44e('0x16')]]){delete this['variables'][_0x4efedf[_0xe44e('0x16')]];}}}catch(_0x3c81d3){logger['error'](_0xe44e('0x62'),_0x4efedf[_0xe44e('0x16')],util[_0xe44e('0x14')](_0x3c81d3,{'showHidden':![],'depth':null}));}};module[_0xe44e('0x63')]=VoiceDialReport;
\ No newline at end of file
+var _0x6eaf=['rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceDialReport][hangup]\x20event:','cause-txt','endtime','diff','seconds','complete','total','answered','starttime','billableseconds','holdtime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','appdata','applicationdata','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','newexten','syncNewExten','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','uniqueid','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','substring','lastIndexOf','channel','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','error','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter'];(function(_0x20dfb0,_0x2d5131){var _0x1155ad=function(_0x2a169e){while(--_0x2a169e){_0x20dfb0['push'](_0x20dfb0['shift']());}};_0x1155ad(++_0x2d5131);}(_0x6eaf,0xa7));var _0xf6ea=function(_0x304f0e,_0x26e4cc){_0x304f0e=_0x304f0e-0x0;var _0x544435=_0x6eaf[_0x304f0e];return _0x544435;};'use strict';var _=require(_0xf6ea('0x0'));var moment=require(_0xf6ea('0x1'));var util=require(_0xf6ea('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0xf6ea('0x3'))(_0xf6ea('0x4'));var ami=require(_0xf6ea('0x5'));config[_0xf6ea('0x6')]=_[_0xf6ea('0x7')](config['redis'],{'host':_0xf6ea('0x8'),'port':0x18eb});var io=require(_0xf6ea('0x9'))(new Redis(config['redis']));function VoiceDialReport(_0x4b9ef7){this[_0xf6ea('0xa')]=_0x4b9ef7[_0xf6ea('0xb')];this[_0xf6ea('0xc')]=_0x4b9ef7['outbound'];this[_0xf6ea('0xd')]={};this[_0xf6ea('0xe')]={};ami['on'](_0xf6ea('0xf'),this[_0xf6ea('0x10')][_0xf6ea('0x11')](this));ami['on'](_0xf6ea('0x12'),this[_0xf6ea('0x13')][_0xf6ea('0x11')](this));ami['on'](_0xf6ea('0x14'),this[_0xf6ea('0x15')]['bind'](this));ami['on'](_0xf6ea('0x16'),this[_0xf6ea('0x17')]['bind'](this));ami['on'](_0xf6ea('0x18'),this[_0xf6ea('0x19')][_0xf6ea('0x11')](this));}VoiceDialReport[_0xf6ea('0x1a')][_0xf6ea('0x1b')]=function(_0x7a748){return _0x7a748!==null&&!_[_0xf6ea('0x1c')](_0x7a748);};VoiceDialReport[_0xf6ea('0x1a')][_0xf6ea('0x1d')]=function(_0x187bba,_0x6cc6fc,_0x12bf3b){io['to'](_0x187bba)[_0xf6ea('0x1d')](_0x6cc6fc,_0x12bf3b);};VoiceDialReport['prototype'][_0xf6ea('0x10')]=function(_0x1ee258){try{if(this['isNotNull'](_0x1ee258)){logger['debug']('[%s][voiceDialReport][dialbegin]\x20event:',_0x1ee258[_0xf6ea('0x1e')],util['inspect'](_0x1ee258,{'showHidden':![],'depth':null}));if(this[_0xf6ea('0xa')][_0x1ee258[_0xf6ea('0x1e')]]){_[_0xf6ea('0x1f')](this[_0xf6ea('0xa')][_0x1ee258[_0xf6ea('0x1e')]],{'starttime':moment()[_0xf6ea('0x20')](_0xf6ea('0x21')),'lastevent':_0xf6ea('0x22'),'interface':_0x1ee258['channel'][_0xf6ea('0x23')](0x0,_0x1ee258['channel'][_0xf6ea('0x24')]('-')),'membername':_0x1ee258[_0xf6ea('0x25')]['substring'](_0x1ee258[_0xf6ea('0x25')]['lastIndexOf']('/')+0x1,_0x1ee258[_0xf6ea('0x25')][_0xf6ea('0x24')]('-'))},_[_0xf6ea('0x26')](_0x1ee258,[_0xf6ea('0x27'),_0xf6ea('0x28')]));logger[_0xf6ea('0x29')](_0xf6ea('0x2a'),_0x1ee258[_0xf6ea('0x1e')],this['channels'][_0x1ee258[_0xf6ea('0x1e')]][_0xf6ea('0x2b')],this[_0xf6ea('0xa')][_0x1ee258[_0xf6ea('0x1e')]][_0xf6ea('0x2c')]);logger[_0xf6ea('0x2d')](_0xf6ea('0x2e'),_0x1ee258[_0xf6ea('0x1e')],util[_0xf6ea('0x2f')](this[_0xf6ea('0xa')][_0x1ee258['uniqueid']],{'showHidden':![],'depth':null}));if(this[_0xf6ea('0xd')][_0x1ee258[_0xf6ea('0x1e')]])_[_0xf6ea('0x1f')](this['channels'][_0x1ee258[_0xf6ea('0x1e')]],this['applications'][_0x1ee258[_0xf6ea('0x1e')]]);this[_0xf6ea('0x1d')](_0xf6ea('0x30'),_0xf6ea('0x31'),this['channels'][_0x1ee258[_0xf6ea('0x1e')]]);logger[_0xf6ea('0x2d')](_0xf6ea('0x32'),_0x1ee258['uniqueid'],util[_0xf6ea('0x2f')](this[_0xf6ea('0xa')][_0x1ee258[_0xf6ea('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xf6ea('0x1d')](_0xf6ea('0x33'),this[_0xf6ea('0xa')][_0x1ee258[_0xf6ea('0x1e')]]);}}}catch(_0x4ec6d7){logger['error'](_0xf6ea('0x34'),_0x1ee258['uniqueid'],util[_0xf6ea('0x2f')](_0x4ec6d7,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xf6ea('0x13')]=function(_0x269497){try{if(this[_0xf6ea('0x1b')](_0x269497)){logger['debug'](_0xf6ea('0x35'),_0x269497[_0xf6ea('0x1e')],util[_0xf6ea('0x2f')](_0x269497,{'showHidden':![],'depth':null}));if(this[_0xf6ea('0xa')][_0x269497[_0xf6ea('0x1e')]]){this[_0xf6ea('0xa')][_0x269497[_0xf6ea('0x1e')]]['dialstatus']=_0x269497[_0xf6ea('0x36')];if(_0x269497[_0xf6ea('0x36')]===_0xf6ea('0x37')){this[_0xf6ea('0xa')][_0x269497[_0xf6ea('0x1e')]][_0xf6ea('0x38')]=_0x269497[_0xf6ea('0x38')];this['channels'][_0x269497[_0xf6ea('0x1e')]]['connectedlinename']=_0x269497[_0xf6ea('0x39')];this['channels'][_0x269497[_0xf6ea('0x1e')]][_0xf6ea('0x3a')]=moment()[_0xf6ea('0x20')](_0xf6ea('0x21'));this['channels'][_0x269497[_0xf6ea('0x1e')]][_0xf6ea('0x3b')]=_0xf6ea('0x3c');logger[_0xf6ea('0x29')](_0xf6ea('0x3d'),_0x269497[_0xf6ea('0x1e')],_0x269497['channel'][_0xf6ea('0x23')](_0x269497[_0xf6ea('0x25')][_0xf6ea('0x24')]('/')+0x1,_0x269497['channel'][_0xf6ea('0x24')]('-')));logger[_0xf6ea('0x2d')](_0xf6ea('0x3e'),_0x269497[_0xf6ea('0x1e')],util[_0xf6ea('0x2f')](this[_0xf6ea('0xa')][_0x269497['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xf6ea('0x1d')]('custom:dialconnect',this[_0xf6ea('0xa')][_0x269497[_0xf6ea('0x1e')]]);}logger['debug']('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x269497[_0xf6ea('0x1e')],util[_0xf6ea('0x2f')](this[_0xf6ea('0xa')][_0x269497[_0xf6ea('0x1e')]],{'showHidden':![],'depth':null}));this[_0xf6ea('0x1d')](_0xf6ea('0x30'),'voice_outbound_channel:save',this[_0xf6ea('0xa')][_0x269497[_0xf6ea('0x1e')]]);}}}catch(_0x44ab3f){logger[_0xf6ea('0x3f')](_0xf6ea('0x40'),_0x269497['uniqueid'],util[_0xf6ea('0x2f')](_0x44ab3f,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xf6ea('0x15')]=function(_0x56d596){try{if(this['isNotNull'](_0x56d596)){logger[_0xf6ea('0x2d')](_0xf6ea('0x41'),_0x56d596[_0xf6ea('0x1e')],util['inspect'](_0x56d596,{'showHidden':![],'depth':null}));this[_0xf6ea('0x42')](_0x56d596[_0xf6ea('0x1e')],_['keys'](_0x56d596[_0xf6ea('0x43')])[0x0],_0x56d596[_0xf6ea('0x44')]);if(this[_0xf6ea('0x1b')](_0x56d596[_0xf6ea('0x43')])&&this['isNotNull'](_0x56d596[_0xf6ea('0x43')]['outboundrouteid'])){if(_[_0xf6ea('0x1c')](this[_0xf6ea('0xa')][_0x56d596[_0xf6ea('0x1e')]])){this[_0xf6ea('0xa')][_0x56d596['uniqueid']]={'routeId':_0x56d596[_0xf6ea('0x44')],'variables':this[_0xf6ea('0xe')][_0x56d596[_0xf6ea('0x1e')]],'motionChannel':_0xf6ea('0x45')};logger[_0xf6ea('0x29')](_0xf6ea('0x46'),_0x56d596['uniqueid'],_0x56d596[_0xf6ea('0x43')][_0xf6ea('0x47')],_[_0xf6ea('0x48')](_0x56d596[_0xf6ea('0x43')])[0x0],_0x56d596[_0xf6ea('0x44')]);logger[_0xf6ea('0x2d')](_0xf6ea('0x49'),_0x56d596[_0xf6ea('0x1e')],util['inspect'](this[_0xf6ea('0xa')][_0x56d596[_0xf6ea('0x1e')]],{'showHidden':![],'depth':null}));this[_0xf6ea('0x1d')](_0xf6ea('0x30'),'voice_outbound_channel:save',this['channels'][_0x56d596[_0xf6ea('0x1e')]]);}}}}catch(_0x2fb2fe){logger[_0xf6ea('0x3f')]('[%s][voiceDialReport][varset]',_0x56d596[_0xf6ea('0x1e')],util[_0xf6ea('0x2f')](_0x2fb2fe,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xf6ea('0x42')]=function(_0x6b3eab,_0x5733f3,_0xf71278){var _0x16bda0=[_0xf6ea('0x4a'),_0xf6ea('0x4b'),_0xf6ea('0x4c'),_0xf6ea('0x4d'),_0xf6ea('0x4e'),_0xf6ea('0x4f'),_0xf6ea('0x50'),_0xf6ea('0x51'),_0xf6ea('0x52'),'sipuri',_0xf6ea('0x53'),'bridgepvtcallid',_0xf6ea('0x54'),_0xf6ea('0x55'),'memberinterface',_0xf6ea('0x56'),_0xf6ea('0x2b'),_0xf6ea('0x57'),_0xf6ea('0x58')];if(!_['isNil'](_0x5733f3)&&!_[_0xf6ea('0x59')](_0x16bda0,_0x5733f3)){if(_[_0xf6ea('0x1c')](this[_0xf6ea('0xe')][_0x6b3eab])){this[_0xf6ea('0xe')][_0x6b3eab]={};}this[_0xf6ea('0xe')][_0x6b3eab][_0x5733f3]=_0xf71278;}};VoiceDialReport[_0xf6ea('0x1a')]['syncHangup']=function(_0x4f3bb1){try{if(this[_0xf6ea('0x1b')](_0x4f3bb1)){logger['debug'](_0xf6ea('0x5a'),_0x4f3bb1[_0xf6ea('0x1e')],util[_0xf6ea('0x2f')](_0x4f3bb1,{'showHidden':![],'depth':null}));if(this[_0xf6ea('0xa')][_0x4f3bb1['uniqueid']]){logger['info']('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x4f3bb1[_0xf6ea('0x1e')],_0x4f3bb1[_0xf6ea('0x5b')]);this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]][_0xf6ea('0x5c')]=moment()[_0xf6ea('0x20')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]]['duration']=moment(this[_0xf6ea('0xa')][_0x4f3bb1['uniqueid']][_0xf6ea('0x5c')])[_0xf6ea('0x5d')](this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]]['starttime'],_0xf6ea('0x5e'));this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]][_0xf6ea('0x3b')]=_0xf6ea('0x5f');this['outbound'][_0xf6ea('0x60')]+=0x1;if(this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]][_0xf6ea('0x3a')]){this[_0xf6ea('0xc')][_0xf6ea('0x61')]+=0x1;this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]]['holdtime']=moment(this[_0xf6ea('0xa')][_0x4f3bb1['uniqueid']][_0xf6ea('0x3a')])[_0xf6ea('0x5d')](this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]][_0xf6ea('0x62')],_0xf6ea('0x5e'));this['channels'][_0x4f3bb1[_0xf6ea('0x1e')]][_0xf6ea('0x63')]=moment(this[_0xf6ea('0xa')][_0x4f3bb1['uniqueid']][_0xf6ea('0x5c')])[_0xf6ea('0x5d')](this['channels'][_0x4f3bb1[_0xf6ea('0x1e')]]['answertime'],_0xf6ea('0x5e'));this[_0xf6ea('0xc')]['sumHoldTime']+=this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]][_0xf6ea('0x64')]||0x0;this[_0xf6ea('0xc')][_0xf6ea('0x65')]+=this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]][_0xf6ea('0x63')];}this['outbound'][_0xf6ea('0x66')]+=this[_0xf6ea('0xa')][_0x4f3bb1['uniqueid']]['duration'];logger[_0xf6ea('0x2d')](_0xf6ea('0x67'),_0x4f3bb1[_0xf6ea('0x1e')],util[_0xf6ea('0x2f')](this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xf6ea('0x1d')]('custom:voiceDialReport',this[_0xf6ea('0xa')][_0x4f3bb1['uniqueid']]);logger[_0xf6ea('0x2d')](_0xf6ea('0x68'),_0x4f3bb1[_0xf6ea('0x1e')],util[_0xf6ea('0x2f')](this[_0xf6ea('0xa')][_0x4f3bb1['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xf6ea('0x1d')](_0xf6ea('0x69'),this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]]);logger[_0xf6ea('0x2d')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x4f3bb1['uniqueid'],util[_0xf6ea('0x2f')](this[_0xf6ea('0xa')][_0x4f3bb1['uniqueid']],{'showHidden':![],'depth':null}));this[_0xf6ea('0x1d')](_0xf6ea('0x30'),_0xf6ea('0x6a'),this[_0xf6ea('0xc')]);logger[_0xf6ea('0x29')](_0xf6ea('0x6b'),JSON['stringify'](this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]]));logger[_0xf6ea('0x2d')](_0xf6ea('0x6c'),_0x4f3bb1[_0xf6ea('0x1e')],util[_0xf6ea('0x2f')](this['channels'][_0x4f3bb1[_0xf6ea('0x1e')]],{'showHidden':![],'depth':null}));this[_0xf6ea('0x1d')](_0xf6ea('0x30'),_0xf6ea('0x6d'),this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]]);delete this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x1e')]];}else if(this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x6e')]]){this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x6e')]][_0xf6ea('0x1e')]=this[_0xf6ea('0xa')][_0x4f3bb1[_0xf6ea('0x6e')]]['destuniqueid'];}if(this['variables'][_0x4f3bb1[_0xf6ea('0x1e')]]){delete this[_0xf6ea('0xe')][_0x4f3bb1[_0xf6ea('0x1e')]];}}}catch(_0x419b13){logger[_0xf6ea('0x3f')](_0xf6ea('0x6f'),_0x4f3bb1[_0xf6ea('0x1e')],util['inspect'](_0x419b13,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xf6ea('0x1a')][_0xf6ea('0x17')]=function(_0x359a7a){try{if(this[_0xf6ea('0x1b')](_0x359a7a)){logger[_0xf6ea('0x2d')](_0xf6ea('0x70'),_0x359a7a[_0xf6ea('0x1e')],util[_0xf6ea('0x2f')](_0x359a7a,{'showHidden':![],'depth':null}));if(_0x359a7a[_0xf6ea('0x71')][_0xf6ea('0x72')]()==='set'){_0x359a7a['applicationdata']=(_0x359a7a[_0xf6ea('0x73')]||_0x359a7a[_0xf6ea('0x74')])['toLowerCase']();if(_['startsWith'](_0x359a7a['applicationdata'],_0xf6ea('0x75'))){if(_['isUndefined'](this['applications'][_0x359a7a['uniqueid']]))this[_0xf6ea('0xd')][_0x359a7a['uniqueid']]={};logger[_0xf6ea('0x29')](_0xf6ea('0x76'),_0x359a7a[_0xf6ea('0x1e')],_0x359a7a[_0xf6ea('0x71')],_0x359a7a[_0xf6ea('0x74')]);var _0x26d33c=_0x359a7a[_0xf6ea('0x74')][_0xf6ea('0x77')]('=');var _0x44b1e6=_0x26d33c[0x0]['match'](/cdr\((.*)\)/);if(_0x44b1e6)this[_0xf6ea('0xd')][_0x359a7a[_0xf6ea('0x1e')]][_0x44b1e6[0x1]]=_0x26d33c[0x1];}}}}catch(_0x18f00e){logger['error'](_0xf6ea('0x78'),_0x359a7a[_0xf6ea('0x1e')],util[_0xf6ea('0x2f')](_0x18f00e,{'showHidden':![],'depth':null}));}};module[_0xf6ea('0x79')]=VoiceDialReport;
\ No newline at end of file
index f16ee57..a4c1176 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4890=['loggedIn','sumBillable','sumHoldTime','total','type','unmanaged','abandoned','Trunk','callerid','Interval','[voiceQueueReport][','voice_queue:save','isNotNull','isUndefined','clearZombieChannels','queues','[voiceQueueReport][queues]','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','queuecallerjoin','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','assigned','membername','queuecallerexit','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','queuecallerexitAt','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','reason','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][agentcomplete]','[%s][voiceQueueReport][varset]','addVariable','variable','value','queuestatus','CONTINUE','TIMEOUT','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosrttbridged','sipcallid','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','includes','[%s][voiceQueueReport][hangup]','length','diff','milliseconds','answered','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','sumDuration','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','transferuniqueid','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','origtransfererexten','origtransfereruniqueid','ATTENDEDTRANSFER','transfertargetuniqueid','switch','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','transfererchannel','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][musiconholdstop]','exports','lodash','moment','util','md5','../../../config/environment','../ami','defaults','redis','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','queuesummarycomplete','bind','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','unlockRR','isNil','Action','status','channel','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_presence:save','[%s][voiceQueueReport][','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','inbound','strategy','available'];(function(_0x137e04,_0x3c0799){var _0x4c6762=function(_0x45f489){while(--_0x45f489){_0x137e04['push'](_0x137e04['shift']());}};_0x4c6762(++_0x3c0799);}(_0x4890,0x91));var _0x0489=function(_0x3d9176,_0x399d6f){_0x3d9176=_0x3d9176-0x0;var _0x12adc5=_0x4890[_0x3d9176];return _0x12adc5;};'use strict';var _=require(_0x0489('0x0'));var moment=require(_0x0489('0x1'));var util=require(_0x0489('0x2'));var md5=require(_0x0489('0x3'));var Redis=require('ioredis');var config=require(_0x0489('0x4'));var logger=require('../../../config/logger')('ami');var ami=require(_0x0489('0x5'));var QueueReport=require('../model/queueReport');config['redis']=_[_0x0489('0x6')](config[_0x0489('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x0489('0x8'))(new Redis(config[_0x0489('0x7')]));var Sequence=function(){};Sequence[_0x0489('0x9')][_0x0489('0xa')]=function(_0x3117de){this[_0x0489('0xb')]=this[_0x0489('0xb')]?this[_0x0489('0xb')][_0x0489('0xc')](_0x3117de):_0x3117de();};function VoiceQueueReport(_0x4c7ced){this[_0x0489('0xd')]=new Sequence();this[_0x0489('0xe')]={};this[_0x0489('0xf')]=_0x4c7ced[_0x0489('0xf')];this[_0x0489('0x10')]=_0x4c7ced[_0x0489('0x11')];this[_0x0489('0x12')]=_0x4c7ced[_0x0489('0x12')];this[_0x0489('0x13')]=!![];this[_0x0489('0x14')]=_0x4c7ced[_0x0489('0x14')];this[_0x0489('0x15')]={};ami['on'](_0x0489('0x16'),this['syncQueueSummary']['bind'](this));ami['on'](_0x0489('0x17'),this['syncQueueSummaryComplete'][_0x0489('0x18')](this));ami['on']('queuecallerjoin',this['syncQueueCallerJoin'][_0x0489('0x18')](this));ami['on'](_0x0489('0x19'),this[_0x0489('0x1a')][_0x0489('0x18')](this));ami['on'](_0x0489('0x1b'),this[_0x0489('0x1c')]['bind'](this));ami['on'](_0x0489('0x1d'),this[_0x0489('0x1e')][_0x0489('0x18')](this));ami['on'](_0x0489('0x1f'),this[_0x0489('0x20')][_0x0489('0x18')](this));ami['on'](_0x0489('0x21'),this[_0x0489('0x22')][_0x0489('0x18')](this));ami['on'](_0x0489('0x23'),this[_0x0489('0x24')]['bind'](this));ami['on'](_0x0489('0x25'),this[_0x0489('0x26')][_0x0489('0x18')](this));ami['on'](_0x0489('0x27'),this[_0x0489('0x28')][_0x0489('0x18')](this));ami['on'](_0x0489('0x29'),this[_0x0489('0x2a')][_0x0489('0x18')](this));ami['on'](_0x0489('0x2b'),this[_0x0489('0x2c')]['bind'](this));ami['on']('blindtransfer',this[_0x0489('0x2d')]['bind'](this));this[_0x0489('0x2e')]();this[_0x0489('0x2f')]();}function clearChannels(_0x36919d){if(!_[_0x0489('0x30')](_0x36919d)){for(var _0x3445b7 in _0x36919d){if(_0x36919d[_0x0489('0x31')](_0x3445b7)){delete _0x36919d[_0x3445b7];}}}}function clearCampaigns(_0x43d1c8){if(!_[_0x0489('0x30')](_0x43d1c8)){for(var _0x109aa4 in _0x43d1c8){if(_0x43d1c8[_0x0489('0x31')](_0x109aa4)){_0x43d1c8[_0x109aa4][_0x0489('0x32')]=0x0;}}}}function clearVoiceQueues(_0x3f8915){if(!_[_0x0489('0x30')](_0x3f8915)){for(var _0x5f2216 in _0x3f8915){if(_0x3f8915[_0x0489('0x31')](_0x5f2216)){_0x3f8915[_0x5f2216][_0x0489('0x32')]=0x0;_0x3f8915[_0x5f2216][_0x0489('0x33')]=0x0;_0x3f8915[_0x5f2216][_0x0489('0x34')]=0x0;_0x3f8915[_0x5f2216][_0x0489('0x35')]=0x0;_0x3f8915[_0x5f2216]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x2c9bb3){if(!_['isEmpty'](_0x2c9bb3)){for(var _0x52937f in _0x2c9bb3){if(_0x2c9bb3['hasOwnProperty'](_0x52937f)){_0x2c9bb3[_0x52937f][_0x0489('0x36')]=!![];}}}}VoiceQueueReport[_0x0489('0x9')]['clearZombieChannels']=function(){var _0x24b52b=this;for(var _0x29ae76 in this[_0x0489('0x10')]){if(this[_0x0489('0x10')]['hasOwnProperty'](_0x29ae76)&&!this[_0x0489('0x10')][_0x29ae76]['switch']){this[_0x0489('0xd')][_0x0489('0xa')](function(){if(!_[_0x0489('0x37')](_0x24b52b[_0x0489('0x10')][_0x29ae76])){return ami[_0x0489('0x38')]({'action':_0x0489('0x39'),'channel':_0x24b52b[_0x0489('0x10')][_0x29ae76][_0x0489('0x3a')]})[_0x0489('0x3b')](function(_0x4ffa40){if(_0x4ffa40[_0x0489('0x3c')]===_0x0489('0x3d')){setTimeout(function(){if(_0x24b52b['channels'][_0x29ae76]){delete _0x24b52b[_0x0489('0x10')][_0x29ae76];logger[_0x0489('0x3e')](_0x0489('0x3f'),_0x29ae76,util[_0x0489('0x40')](_0x4ffa40,{'showHidden':![],'depth':null}));}if(_0x24b52b[_0x0489('0xe')][_0x29ae76]){delete _0x24b52b[_0x0489('0xe')][_0x29ae76];logger[_0x0489('0x3e')](_0x0489('0x41'),_0x29ae76,util[_0x0489('0x40')](_0x4ffa40,{'showHidden':![],'depth':null}));}if(_0x24b52b[_0x0489('0x15')][_0x29ae76]){delete _0x24b52b[_0x0489('0x15')][_0x29ae76];logger[_0x0489('0x3e')](_0x0489('0x42'),_0x29ae76,util['inspect'](_0x4ffa40,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x0489('0x9')]['syncFullyBooted']=function(){logger[_0x0489('0x3e')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0x0489('0x10')]);this[_0x0489('0x43')](this['queueReports']);clearAgentBooked(this[_0x0489('0xf')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x0489('0x14')]);};VoiceQueueReport[_0x0489('0x9')]['clearQueueReport']=function(_0x36ca58){var _0x2b178e=this;if(!_[_0x0489('0x30')](_0x36ca58)){for(var _0x1caf6a in _0x36ca58){if(_0x36ca58[_0x0489('0x31')](_0x1caf6a)){_0x2b178e[_0x0489('0x44')](_0x36ca58[_0x1caf6a],_0x0489('0x45'));delete _0x36ca58[_0x1caf6a];}}}};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x46')]=function(_0x4cb86e,_0xce698e,_0x268c59){io['to'](_0x4cb86e)['emit'](_0xce698e,_0x268c59);};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x47')]=function(_0x241a86,_0x4c4abc){logger[_0x0489('0x48')]('[%s][voiceQueueReport]['+_0x4c4abc+_0x0489('0x49'),_0x241a86[_0x0489('0x4a')],util[_0x0489('0x40')](_0x241a86,{'showHidden':![],'depth':null}));this[_0x0489('0x46')](util[_0x0489('0x4b')](_0x0489('0x4c'),_0x241a86[_0x0489('0x4d')]),'voice_queue_channel:save',_0x241a86);io[_0x0489('0x46')](_0x0489('0x4e'),_0x241a86);};VoiceQueueReport[_0x0489('0x9')]['emitVoiceQueueChannelRemove']=function(_0x400332,_0x59d6e5){logger[_0x0489('0x48')](_0x0489('0x4f')+_0x59d6e5+']\x20sending\x20voice_queue_channel:remove\x20event:',_0x400332[_0x0489('0x4a')],util[_0x0489('0x40')](_0x400332,{'showHidden':![],'depth':null}));this['emit'](util[_0x0489('0x4b')](_0x0489('0x4c'),_0x400332[_0x0489('0x4d')]),_0x0489('0x50'),_0x400332);io[_0x0489('0x46')](_0x0489('0x51'),_0x400332);};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x52')]=function(_0x4410f7,_0x60ca45){if(_0x4410f7['type']===_0x0489('0x53')){var _0x11b95d={'id':_0x4410f7['id'],'name':_0x4410f7[_0x0489('0x4d')],'strategy':_0x4410f7[_0x0489('0x54')],'answered':_0x4410f7['answered'],'available':_0x4410f7[_0x0489('0x55')],'loggedIn':_0x4410f7[_0x0489('0x56')],'pTalking':_0x4410f7[_0x0489('0x34')],'sumBillable':_0x4410f7[_0x0489('0x57')],'sumDuration':_0x4410f7['sumDuration'],'sumHoldTime':_0x4410f7[_0x0489('0x58')]||0x0,'talking':_0x4410f7['talking'],'total':_0x4410f7[_0x0489('0x59')],'type':_0x4410f7[_0x0489('0x5a')],'unmanaged':_0x4410f7[_0x0489('0x5b')],'abandoned':_0x4410f7[_0x0489('0x5c')],'waiting':_0x4410f7[_0x0489('0x35')]};if(_0x4410f7[_0x0489('0x5d')]){_0x11b95d[_0x0489('0x5d')]={'id':_0x4410f7['Trunk']['id'],'name':_0x4410f7[_0x0489('0x5d')][_0x0489('0x4d')],'active':_0x4410f7[_0x0489('0x5d')]['active'],'callerid':_0x4410f7['Trunk'][_0x0489('0x5e')]};}if(_0x4410f7[_0x0489('0x5f')]){_0x11b95d[_0x0489('0x5f')]={'id':_0x4410f7[_0x0489('0x5f')]['id'],'name':_0x4410f7[_0x0489('0x5f')][_0x0489('0x4d')]};}var _0x1bb027=md5(JSON['stringify'](_0x11b95d));if(_0x4410f7[_0x0489('0x3')]!==_0x1bb027){_0x4410f7[_0x0489('0x3')]=_0x1bb027;logger[_0x0489('0x48')](_0x0489('0x60')+_0x60ca45+']\x20sending\x20voice_queue:save\x20event:',util[_0x0489('0x40')](_0x11b95d,{'showHidden':![],'depth':null}));this[_0x0489('0x46')](util[_0x0489('0x4b')](_0x0489('0x4c'),_0x11b95d[_0x0489('0x4d')]),_0x0489('0x61'),_0x11b95d);}}};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x62')]=function(_0x118dc1){return _0x118dc1!==null&&!_[_0x0489('0x63')](_0x118dc1);};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x2f')]=function(){var _0x404c99=this;setInterval(function(){_0x404c99[_0x0489('0x64')]();ami[_0x0489('0x38')]({'action':_0x0489('0x65')})[_0x0489('0x3b')](function(_0x567c82){logger[_0x0489('0x3e')](_0x0489('0x66'),util['inspect'](_0x567c82,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x2e')]=function(){var _0x4b5860=this;setInterval(function(){if(_0x4b5860[_0x0489('0x13')]){return ami[_0x0489('0x38')]({'action':'queuesummary'})['then'](function(_0x2c24f6){_0x4b5860[_0x0489('0x13')]=![];})[_0x0489('0x3b')](function(_0x276b2f){logger[_0x0489('0x3e')](_0x0489('0x67'),util[_0x0489('0x40')](_0x276b2f,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x0489('0x9')]['syncQueueSummary']=function(_0x5e3d3f){try{if(this[_0x0489('0x62')](_0x5e3d3f)&&this[_0x0489('0x62')](_0x5e3d3f['queue'])){logger[_0x0489('0x48')]('[voiceQueueReport][queuesummary]\x20event:',util[_0x0489('0x40')](_0x5e3d3f,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x5e3d3f[_0x0489('0x68')]]){logger['info'](_0x0489('0x69'),_0x5e3d3f['queue']);var _0x16cfb5=_[_0x0489('0x6a')](this[_0x0489('0x10')],_0x0489('0x68'))[_0x5e3d3f[_0x0489('0x68')]]||0x0;var _0x23375d=_0x16cfb5-_0x5e3d3f[_0x0489('0x6b')];if(this[_0x0489('0x12')][_0x5e3d3f[_0x0489('0x68')]][_0x0489('0x35')]!==_[_0x0489('0x6c')](_0x5e3d3f['callers'])||this[_0x0489('0x12')][_0x5e3d3f['queue']][_0x0489('0x56')]!==_[_0x0489('0x6c')](_0x5e3d3f['loggedin'])||this[_0x0489('0x12')][_0x5e3d3f[_0x0489('0x68')]]['available']!==_['toNumber'](_0x5e3d3f[_0x0489('0x55')])||this['voiceQueues'][_0x5e3d3f[_0x0489('0x68')]][_0x0489('0x33')]!==_0x23375d){this[_0x0489('0x12')][_0x5e3d3f[_0x0489('0x68')]][_0x0489('0x35')]=_[_0x0489('0x6c')](_0x5e3d3f[_0x0489('0x6b')]);this[_0x0489('0x12')][_0x5e3d3f[_0x0489('0x68')]][_0x0489('0x56')]=_['toNumber'](_0x5e3d3f[_0x0489('0x6d')]);this['voiceQueues'][_0x5e3d3f['queue']][_0x0489('0x55')]=_['toNumber'](_0x5e3d3f['available']);this['voiceQueues'][_0x5e3d3f['queue']][_0x0489('0x33')]=_0x23375d>0x0?_0x23375d:0x0;this['voiceQueues'][_0x5e3d3f[_0x0489('0x68')]][_0x0489('0x33')]=this['voiceQueues'][_0x5e3d3f[_0x0489('0x68')]][_0x0489('0x33')]>_[_0x0489('0x6c')](_0x5e3d3f[_0x0489('0x6d')])?_['toNumber'](_0x5e3d3f[_0x0489('0x6d')]):this[_0x0489('0x12')][_0x5e3d3f[_0x0489('0x68')]][_0x0489('0x33')];this[_0x0489('0x52')](this[_0x0489('0x12')][_0x5e3d3f[_0x0489('0x68')]],_0x0489('0x16'));}logger[_0x0489('0x48')](_0x0489('0x6e'),util[_0x0489('0x40')](this[_0x0489('0x12')][_0x5e3d3f[_0x0489('0x68')]],{'showHidden':![],'depth':null}));ami[_0x0489('0x46')](_0x0489('0x6f'),this[_0x0489('0x12')][_0x5e3d3f[_0x0489('0x68')]]);}}}catch(_0x480691){logger[_0x0489('0x3e')](_0x0489('0x67'),util['inspect'](_0x480691,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x70')]=function(_0x4e71cb){logger[_0x0489('0x48')](_0x0489('0x71'),util[_0x0489('0x40')](_0x4e71cb,{'showHidden':![],'depth':null}));this[_0x0489('0x13')]=!![];};VoiceQueueReport[_0x0489('0x9')]['syncQueueCallerJoin']=function(_0x14f0b7){try{if(this[_0x0489('0x62')](_0x14f0b7)){logger['debug'](_0x0489('0x72'),_0x14f0b7[_0x0489('0x4a')],util[_0x0489('0x40')](_0x14f0b7,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x0489('0xe')][_0x14f0b7[_0x0489('0x4a')]])){this[_0x0489('0xe')][_0x14f0b7[_0x0489('0x4a')]]=[];this[_0x0489('0x10')][_0x14f0b7[_0x0489('0x4a')]]={};}var _0x2afa00=new QueueReport();_0x2afa00['name']=_0x14f0b7['queue'];_0x2afa00[_0x0489('0x5a')]=this[_0x0489('0x12')][_0x2afa00[_0x0489('0x4d')]]&&this[_0x0489('0x12')][_0x2afa00['name']]['type']?this['voiceQueues'][_0x2afa00[_0x0489('0x4d')]][_0x0489('0x5a')]||'inbound':'inbound';_0x2afa00[_0x0489('0x68')]=_0x14f0b7['queue'];_0x2afa00[_0x0489('0x73')]=moment()[_0x0489('0x4b')](_0x0489('0x74'));_0x2afa00[_0x0489('0x75')]=_0x14f0b7['position'];_0x2afa00[_0x0489('0x76')]=_0x14f0b7[_0x0489('0x76')];_0x2afa00[_0x0489('0x4a')]=_0x14f0b7['uniqueid'];logger[_0x0489('0x77')](_0x0489('0x78'),_0x2afa00[_0x0489('0x4d')],_0x2afa00[_0x0489('0x5a')]);_[_0x0489('0x79')](_0x2afa00,_[_0x0489('0x7a')](_0x14f0b7,_[_0x0489('0x7b')](_0x2afa00)));this[_0x0489('0xe')][_0x14f0b7[_0x0489('0x4a')]][_0x0489('0x7c')](_0x2afa00);this['channels'][_0x14f0b7[_0x0489('0x4a')]]=_0x2afa00;this[_0x0489('0x47')](_0x2afa00,_0x0489('0x7d'));}}catch(_0x5c5982){logger[_0x0489('0x3e')]('[%s][voiceQueueReport][queuecallerjoin]',_0x14f0b7[_0x0489('0x4a')],util[_0x0489('0x40')](_0x5c5982,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x1a')]=function(_0x198142){try{if(this[_0x0489('0x62')](_0x198142)){logger['debug'](_0x0489('0x7e'),_0x198142[_0x0489('0x4a')],util['inspect'](_0x198142,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x198142[_0x0489('0x4a')]]){var _0x392fce=_[_0x0489('0x7f')](this[_0x0489('0xe')][_0x198142[_0x0489('0x4a')]]);_0x392fce[_0x0489('0x80')]=![];_0x392fce[_0x0489('0x81')]=null;_0x392fce[_0x0489('0x82')]=_0x198142[_0x0489('0x82')];_0x392fce[_0x0489('0x83')]=_0x198142['originalposition'];_0x392fce[_0x0489('0x19')]=!![];_0x392fce[_0x0489('0x84')]=moment()[_0x0489('0x4b')](_0x0489('0x74'));_0x392fce[_0x0489('0x85')]=_0x0489('0x86');_0x392fce[_0x0489('0x87')]=null;logger[_0x0489('0x77')](_0x0489('0x88'),_0x392fce[_0x0489('0x4d')],_0x392fce[_0x0489('0x5a')]);this[_0x0489('0x10')][_0x198142['uniqueid']]=_0x392fce;this[_0x0489('0x44')](_0x392fce,_0x0489('0x19'));}}}catch(_0x5e28b3){logger[_0x0489('0x3e')](_0x0489('0x7e'),_0x198142[_0x0489('0x4a')],util[_0x0489('0x40')](_0x5e28b3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x1c')]=function(_0x304738){try{if(this[_0x0489('0x62')](_0x304738)){logger[_0x0489('0x48')](_0x0489('0x89'),_0x304738[_0x0489('0x4a')],util[_0x0489('0x40')](_0x304738,{'showHidden':![],'depth':null}));if(this[_0x0489('0xe')][_0x304738[_0x0489('0x4a')]]){var _0x2ad100=_[_0x0489('0x7f')](this[_0x0489('0xe')][_0x304738['uniqueid']]);_0x2ad100[_0x0489('0x8a')]=moment()[_0x0489('0x4b')](_0x0489('0x74'));_0x2ad100['connectedlinenum']=_0x304738['connectedlinenum'];_0x2ad100[_0x0489('0x8b')]=_0x304738[_0x0489('0x8b')];logger[_0x0489('0x77')](_0x0489('0x8c'),_0x2ad100['name'],_0x2ad100[_0x0489('0x5a')],_0x304738[_0x0489('0x8d')],_0x304738[_0x0489('0x8b')]);this[_0x0489('0x10')][_0x304738[_0x0489('0x4a')]]=_0x2ad100;this[_0x0489('0x47')](_0x2ad100,_0x0489('0x1b'));}}}catch(_0x1a8d45){logger[_0x0489('0x3e')](_0x0489('0x89'),_0x304738[_0x0489('0x4a')],util[_0x0489('0x40')](_0x1a8d45,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x20')]=function(_0x295764){try{if(this['isNotNull'](_0x295764)){logger[_0x0489('0x48')](_0x0489('0x8e'),_0x295764[_0x0489('0x4a')],util[_0x0489('0x40')](_0x295764,{'showHidden':![],'depth':null}));if(this[_0x0489('0xe')][_0x295764[_0x0489('0x4a')]]){var _0x55762c=_[_0x0489('0x7f')](this[_0x0489('0xe')][_0x295764[_0x0489('0x4a')]]);_0x55762c['queuecallercomplete']=!![];_0x55762c[_0x0489('0x85')]=_0x0489('0x8f');logger[_0x0489('0x77')](_0x0489('0x90'),_0x55762c[_0x0489('0x4d')],_0x55762c[_0x0489('0x5a')]);}}}catch(_0x276d91){logger['error'](_0x0489('0x8e'),_0x295764['uniqueid'],util[_0x0489('0x40')](_0x276d91,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x0489('0x1e')]=function(_0x41b3e5){try{if(this[_0x0489('0x62')](_0x41b3e5)){logger[_0x0489('0x48')]('[%s][voiceQueueReport][agentcomplete]',_0x41b3e5[_0x0489('0x4a')],util['inspect'](_0x41b3e5,{'showHidden':![],'depth':null}));if(this[_0x0489('0xe')][_0x41b3e5[_0x0489('0x4a')]]){var _0x4dd871=_['last'](this[_0x0489('0xe')][_0x41b3e5['uniqueid']]);_0x4dd871[_0x0489('0x19')]=![];_0x4dd871[_0x0489('0x84')]=null;_0x4dd871[_0x0489('0x91')]=!![];_0x4dd871['lastAssignedTo']=_0x41b3e5[_0x0489('0x92')];_0x4dd871[_0x0489('0x82')]=_0x41b3e5[_0x0489('0x82')];_0x4dd871[_0x0489('0x80')]=!![];_0x4dd871[_0x0489('0x93')]=![];_0x4dd871['queuecallerexitAt']=null;if(!_0x4dd871[_0x0489('0x94')]){if(_0x41b3e5['reason']=='transfer'){_0x4dd871['queuecallerexitreason']=_0x0489('0x95');logger['info'](_0x0489('0x96'),_0x4dd871[_0x0489('0x4d')],_0x4dd871[_0x0489('0x5a')]);}else{if(_[_0x0489('0x97')](_0x41b3e5[_0x0489('0x3a')][_0x0489('0x98')](),_0x0489('0x99'))){if(this[_0x0489('0xe')][_0x41b3e5['linkedid']]){var _0x2bad1b=_[_0x0489('0x7f')](this[_0x0489('0xe')][_0x41b3e5[_0x0489('0x9a')]]);_0x2bad1b[_0x0489('0x80')]=![];_0x2bad1b[_0x0489('0x93')]=!![];_0x2bad1b[_0x0489('0x9b')]=moment(_0x4dd871[_0x0489('0x73')])[_0x0489('0x9c')](_0x41b3e5[_0x0489('0x82')],_0x0489('0x9d'))[_0x0489('0x4b')](_0x0489('0x74'));_0x2bad1b[_0x0489('0x85')]=_0x0489('0x9e');_0x2bad1b['transfer']=!![];_0x2bad1b[_0x0489('0x9f')]=_0x0489('0xa0');_0x2bad1b[_0x0489('0xa1')]=_0x41b3e5[_0x0489('0xa2')];_0x2bad1b['transferuniqueid']=_0x41b3e5['uniqueid'];logger[_0x0489('0x77')](_0x0489('0xa3'),_0x2bad1b[_0x0489('0x4d')],_0x2bad1b[_0x0489('0x5a')]);var _0x581490=this[_0x0489('0xe')][_0x41b3e5[_0x0489('0x9a')]];this[_0x0489('0xe')][_0x41b3e5[_0x0489('0x9a')]]=this[_0x0489('0xe')][_0x41b3e5[_0x0489('0x4a')]];this['queueReports'][_0x41b3e5[_0x0489('0x4a')]]=_0x581490;}}else{_0x4dd871[_0x0489('0x85')]='COMPLETEDBY'+_0x41b3e5[_0x0489('0xa4')][_0x0489('0xa5')]();logger[_0x0489('0x77')](_0x0489('0xa6'),_0x4dd871[_0x0489('0x4d')],_0x4dd871['type'],_0x4dd871[_0x0489('0x85')]);}}}this[_0x0489('0x10')][_0x41b3e5['uniqueid']]=_0x4dd871;this[_0x0489('0x44')](_0x4dd871,_0x0489('0x1d'));}}}catch(_0x573863){logger[_0x0489('0x3e')](_0x0489('0xa7'),_0x41b3e5[_0x0489('0x4a')],util['inspect'](_0x573863,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x22')]=function(_0xcbd539){try{if(this[_0x0489('0x62')](_0xcbd539)){logger[_0x0489('0x48')](_0x0489('0xa8'),_0xcbd539['uniqueid'],util[_0x0489('0x40')](_0xcbd539,{'showHidden':![],'depth':null}));this[_0x0489('0xa9')](_0xcbd539[_0x0489('0x4a')],_[_0x0489('0x7b')](_0xcbd539[_0x0489('0xaa')])[0x0],_0xcbd539[_0x0489('0xab')]);if(this[_0x0489('0xe')][_0xcbd539[_0x0489('0x4a')]]){var _0x44c786=_[_0x0489('0x7f')](this['queueReports'][_0xcbd539['uniqueid']]);if(_0x44c786){if(this['isNotNull'](_0xcbd539[_0x0489('0xaa')])&&this[_0x0489('0x62')](_0xcbd539[_0x0489('0xaa')][_0x0489('0xac')])){switch(_0xcbd539['value']){case _0x0489('0xad'):_0x44c786[_0x0489('0x93')]=![];_0x44c786[_0x0489('0x9b')]=null;break;case _0x0489('0xae'):_0x44c786['lastevent']=_0x0489('0xaf');_0x44c786[_0x0489('0x93')]=!![];_0x44c786[_0x0489('0x9b')]=moment()[_0x0489('0x4b')](_0x0489('0x74'));_0x44c786[_0x0489('0x8a')]=moment()[_0x0489('0x4b')](_0x0489('0x74'));logger['debug'](_0x0489('0xb0'),_0xcbd539[_0x0489('0x4a')],util['inspect'](_0x44c786,{'showHidden':![],'depth':null}));ami[_0x0489('0x46')](_0x0489('0xb1'),_0x44c786);break;default:_0x44c786['queuecallerexit']=!![];_0x44c786[_0x0489('0x9b')]=moment()[_0x0489('0x4b')](_0x0489('0x74'));_0x44c786[_0x0489('0x8a')]=moment()[_0x0489('0x4b')](_0x0489('0x74'));}_0x44c786[_0x0489('0x19')]=![];_0x44c786['queuecallerabandonAt']=null;_0x44c786['queuecallerexitreason']=_0xcbd539[_0x0489('0xab')];this[_0x0489('0x10')][_0xcbd539['uniqueid']]=_0x44c786;this[_0x0489('0x44')](_0x44c786,_0x0489('0x21'));}else if(this[_0x0489('0x62')](_0xcbd539['variable'])&&this['isNotNull'](_0xcbd539[_0x0489('0xaa')][_0x0489('0xb2')])){if(!_0x44c786[_0x0489('0x19')]){_0x44c786[_0x0489('0x93')]=!![];_0x44c786['queuecallerexitAt']=moment()[_0x0489('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');_0x44c786[_0x0489('0x85')]=_0x0489('0xb3');_0x44c786[_0x0489('0x8a')]=moment()[_0x0489('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0xcbd539[_0x0489('0x4a')]]=_0x44c786;}}logger[_0x0489('0x77')](_0x0489('0xb4'),_0xcbd539[_0x0489('0x4a')],_0x44c786['name'],_0x44c786[_0x0489('0x5a')],_[_0x0489('0x7b')](_0xcbd539[_0x0489('0xaa')])[0x0],_0xcbd539['value']);_0x44c786[_0x0489('0x15')]=this['variables'][_0xcbd539[_0x0489('0x4a')]];}}}}catch(_0x401c71){logger['error'](_0x0489('0xa8'),_0xcbd539[_0x0489('0x4a')],util[_0x0489('0x40')](_0x401c71,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0489('0x9')][_0x0489('0xa9')]=function(_0x4286e1,_0xc61cb,_0x5ac2c1){var _0x3824fe=[_0x0489('0xb5'),_0x0489('0xb6'),'rtpaudioqosjitter',_0x0489('0xb7'),'rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt',_0x0489('0xb8'),_0x0489('0xb9'),'sipuri','bridgepeer',_0x0489('0xba'),_0x0489('0xbb'),_0x0489('0xbc'),_0x0489('0xbd'),_0x0489('0xbe'),_0x0489('0x92'),_0x0489('0xbf'),'memberrealtime'];if(!_[_0x0489('0x37')](_0xc61cb)&&!_[_0x0489('0xc0')](_0x3824fe,_0xc61cb)){if(_[_0x0489('0x63')](this[_0x0489('0x15')][_0x4286e1])){this['variables'][_0x4286e1]={};}this[_0x0489('0x15')][_0x4286e1][_0xc61cb]=_0x5ac2c1;}};VoiceQueueReport['prototype']['syncHangup']=function(_0x25bed4){try{if(this[_0x0489('0x62')](_0x25bed4)){logger[_0x0489('0x48')](_0x0489('0xc1'),_0x25bed4[_0x0489('0x4a')],util['inspect'](_0x25bed4,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x25bed4[_0x0489('0x4a')]]){for(var _0x20fcd9=0x0,_0xf6d4e6={};_0x20fcd9<this['queueReports'][_0x25bed4['uniqueid']][_0x0489('0xc2')];_0x20fcd9+=0x1){_0xf6d4e6=this[_0x0489('0xe')][_0x25bed4['uniqueid']][_0x20fcd9];if(this[_0x0489('0x12')][_0xf6d4e6[_0x0489('0x68')]]){if(_0xf6d4e6[_0x0489('0x93')]&&_0xf6d4e6[_0x0489('0x94')]!=!![]){this['voiceQueues'][_0xf6d4e6[_0x0489('0x68')]][_0x0489('0x5b')]+=0x1;}if(_0xf6d4e6[_0x0489('0x19')]){this[_0x0489('0x12')][_0xf6d4e6[_0x0489('0x68')]][_0x0489('0x5c')]+=0x1;}this['voiceQueues'][_0xf6d4e6[_0x0489('0x68')]][_0x0489('0x58')]+=moment(_0xf6d4e6[_0x0489('0x8a')])[_0x0489('0xc3')](_0xf6d4e6[_0x0489('0x73')],_0x0489('0x9d'))||0x0;if(_0x20fcd9===this['queueReports'][_0x25bed4[_0x0489('0x4a')]][_0x0489('0xc2')]-0x1){this[_0x0489('0x12')][_0xf6d4e6[_0x0489('0x68')]]['sumDuration']+=moment()[_0x0489('0xc4')](0x0)[_0x0489('0xc3')](_0xf6d4e6['queuecallerjoinAt'],_0x0489('0x9d'));this[_0x0489('0x12')][_0xf6d4e6['queue']][_0x0489('0x59')]+=0x1;if(_0xf6d4e6[_0x0489('0x80')]){this[_0x0489('0x12')][_0xf6d4e6['queue']][_0x0489('0xc5')]+=0x1;this[_0x0489('0x12')][_0xf6d4e6[_0x0489('0x68')]]['sumBillable']+=moment()[_0x0489('0xc4')](0x0)[_0x0489('0xc3')](_0xf6d4e6[_0x0489('0x8a')],_0x0489('0x9d'));_0xf6d4e6[_0x0489('0x81')]=moment()[_0x0489('0x4b')](_0x0489('0x74'));_0xf6d4e6[_0x0489('0x93')]=![];_0xf6d4e6[_0x0489('0x9b')]=null;}if(_0xf6d4e6[_0x0489('0x93')]&&_0xf6d4e6[_0x0489('0x94')]!=!![]){_0xf6d4e6['lastevent']='unmanaged';logger[_0x0489('0x48')](_0x0489('0xc6'),_0x25bed4[_0x0489('0x4a')],util[_0x0489('0x40')](_0xf6d4e6,{'showHidden':![],'depth':null}));ami[_0x0489('0x46')]('custom:queuecallerunmanaged',_0xf6d4e6);}if(_0xf6d4e6[_0x0489('0x19')]){_0xf6d4e6['lastevent']=_0x0489('0x5c');logger['debug'](_0x0489('0xc7'),_0x25bed4[_0x0489('0x4a')],util[_0x0489('0x40')](_0xf6d4e6,{'showHidden':![],'depth':null}));ami[_0x0489('0x46')](_0x0489('0xc8'),_0xf6d4e6);}}else{this['voiceQueues'][_0xf6d4e6[_0x0489('0x68')]][_0x0489('0xc9')]+=this[_0x0489('0x12')][_0xf6d4e6[_0x0489('0x68')]][_0x0489('0x58')];}logger[_0x0489('0x77')](_0x0489('0xca'),_0x25bed4[_0x0489('0x4a')],_0xf6d4e6[_0x0489('0x4d')],_0xf6d4e6['type'],_0x25bed4[_0x0489('0xcb')]);this['channels'][_0x25bed4[_0x0489('0x4a')]]=_0xf6d4e6;this['emitVoiceQueueChannelRemove'](_0xf6d4e6,_0x0489('0x23'));this[_0x0489('0x52')](this[_0x0489('0x12')][_0xf6d4e6['queue']],'hangup');}}logger['debug'](_0x0489('0xcc'),_0x25bed4['uniqueid'],util['inspect'](this[_0x0489('0xe')][_0x25bed4[_0x0489('0x4a')]],{'showHidden':![],'depth':null}));ami[_0x0489('0x46')](_0x0489('0xcd'),this[_0x0489('0xe')][_0x25bed4['uniqueid']]);delete this['queueReports'][_0x25bed4[_0x0489('0x4a')]];delete this['channels'][_0x25bed4[_0x0489('0x4a')]];}if(this[_0x0489('0x15')][_0x25bed4[_0x0489('0x4a')]]){delete this['variables'][_0x25bed4[_0x0489('0x4a')]];}}}catch(_0x4359c){logger['error'](_0x0489('0xc1'),_0x25bed4['uniqueid'],util[_0x0489('0x40')](_0x4359c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x2c')]=function(_0x522dac){try{if(this[_0x0489('0x62')](_0x522dac)){logger[_0x0489('0x48')](_0x0489('0xce'),_0x522dac[_0x0489('0x4a')],util['inspect'](_0x522dac,{'showHidden':![],'depth':null}));var _0x3e2073;if(this[_0x0489('0xe')][_0x522dac['transfereeuniqueid']]){_0x3e2073=_[_0x0489('0x7f')](this[_0x0489('0xe')][_0x522dac[_0x0489('0xcf')]]);_0x3e2073[_0x0489('0xa1')]=_0x522dac[_0x0489('0xd0')];_0x3e2073[_0x0489('0xd1')]=_0x522dac[_0x0489('0xd2')];_0x3e2073[_0x0489('0x85')]='ATTENDEDTRANSFER';_0x3e2073[_0x0489('0x94')]=!![];_0x3e2073[_0x0489('0x9f')]=_0x0489('0xd3');if(this[_0x0489('0xe')][_0x522dac[_0x0489('0xd2')]]){var _0x3b137=this[_0x0489('0xe')][_0x522dac[_0x0489('0xd2')]];this['queueReports'][_0x522dac[_0x0489('0xd2')]]=this[_0x0489('0xe')][_0x522dac[_0x0489('0xcf')]];this[_0x0489('0xe')][_0x522dac[_0x0489('0xcf')]]=_0x3b137;var _0x201a35=_[_0x0489('0x7f')](this['queueReports'][_0x522dac[_0x0489('0xcf')]]);_0x201a35['switch']=!![];}logger[_0x0489('0x77')](_0x0489('0xd4'),_0x522dac[_0x0489('0x4a')],_0x3e2073[_0x0489('0x4d')],_0x3e2073[_0x0489('0x5a')],_0x3e2073[_0x0489('0xa1')],_0x3e2073[_0x0489('0xd1')]);}else if(this[_0x0489('0xe')][_0x522dac['transfertargetuniqueid']]){_0x3e2073=_[_0x0489('0x7f')](this[_0x0489('0xe')][_0x522dac['transfertargetuniqueid']]);_0x3e2073['transferexten']=_0x522dac[_0x0489('0xd5')];_0x3e2073['transferuniqueid']=_0x522dac[_0x0489('0xd6')];_0x3e2073[_0x0489('0x85')]=_0x0489('0xd7');_0x3e2073[_0x0489('0x94')]=!![];_0x3e2073['transfertype']='ATTENDED';if(this[_0x0489('0xe')][_0x522dac[_0x0489('0xd6')]]){var _0x3b137=this[_0x0489('0xe')][_0x522dac['origtransfereruniqueid']];this[_0x0489('0xe')][_0x522dac[_0x0489('0xd6')]]=this['queueReports'][_0x522dac['transfertargetuniqueid']];this[_0x0489('0xe')][_0x522dac[_0x0489('0xd8')]]=_0x3b137;var _0x201a35=_[_0x0489('0x7f')](this[_0x0489('0xe')][_0x522dac[_0x0489('0xd8')]]);_0x201a35[_0x0489('0xd9')]=!![];}logger[_0x0489('0x77')](_0x0489('0xd4'),_0x522dac[_0x0489('0x4a')],_0x3e2073['name'],_0x3e2073['type'],_0x3e2073['transferexten'],_0x3e2073[_0x0489('0xd1')]);}}}catch(_0xa9b72b){logger['error'](_0x0489('0xce'),_0x522dac[_0x0489('0x4a')],util[_0x0489('0x40')](_0xa9b72b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x2d')]=function(_0x31e1fc){try{if(this[_0x0489('0x62')](_0x31e1fc)){logger['debug'](_0x0489('0xda'),_0x31e1fc[_0x0489('0x4a')],util[_0x0489('0x40')](_0x31e1fc,{'showHidden':![],'depth':null}));if(this[_0x0489('0xe')][_0x31e1fc[_0x0489('0xcf')]]){var _0x1c9e64=_[_0x0489('0x7f')](this[_0x0489('0xe')][_0x31e1fc[_0x0489('0xcf')]]);_0x1c9e64[_0x0489('0x85')]=_0x0489('0xdb');_0x1c9e64[_0x0489('0x94')]=!![];_0x1c9e64[_0x0489('0x9f')]=_0x0489('0xdc');_0x1c9e64[_0x0489('0xa1')]=_0x31e1fc[_0x0489('0xdd')];_0x1c9e64[_0x0489('0xd1')]=_0x31e1fc['transfereeuniqueid'];logger[_0x0489('0x77')](_0x0489('0xde'),_0x31e1fc['uniqueid'],_0x1c9e64['name'],_0x1c9e64['type'],_0x1c9e64['transferexten'],_0x1c9e64[_0x0489('0xd1')]);this[_0x0489('0x24')]({'event':_0x0489('0xdf'),'uniqueid':_0x31e1fc[_0x0489('0xcf')],'context':_0x31e1fc['context'],'channel':_0x31e1fc[_0x0489('0xe0')]});}}}catch(_0x406ac6){logger[_0x0489('0x3e')](_0x0489('0xda'),_0x31e1fc[_0x0489('0x4a')],util[_0x0489('0x40')](_0x406ac6,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStart']=function(_0x247f81){try{if(this[_0x0489('0x62')](_0x247f81)){logger[_0x0489('0x48')]('[%s][voiceQueueReport][musiconholdstart]',_0x247f81['uniqueid'],util['inspect'](_0x247f81,{'showHidden':![],'depth':null}));if(this[_0x0489('0xe')][_0x247f81['uniqueid']]){var _0xe1d3cf=_[_0x0489('0x7f')](this[_0x0489('0xe')][_0x247f81[_0x0489('0x4a')]]);if(!_[_0x0489('0x37')](_0xe1d3cf['queuecallerleaveAt'])){_0xe1d3cf[_0x0489('0xe1')]=moment()['format'](_0x0489('0x74'));logger[_0x0489('0x77')](_0x0489('0xe2'),_0x247f81['uniqueid'],_0xe1d3cf[_0x0489('0xe1')]);}}}}catch(_0x55b424){logger[_0x0489('0x3e')](_0x0489('0xe3'),_0x247f81['uniqueid'],util[_0x0489('0x40')](_0x55b424,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0489('0x9')][_0x0489('0x2a')]=function(_0xe913f5){try{if(this[_0x0489('0x62')](_0xe913f5)){logger[_0x0489('0x48')]('[%s][voiceQueueReport][musiconholdstop]',_0xe913f5[_0x0489('0x4a')],util['inspect'](_0xe913f5,{'showHidden':![],'depth':null}));if(this[_0x0489('0xe')][_0xe913f5[_0x0489('0x4a')]]){var _0x1d97b9=_[_0x0489('0x7f')](this[_0x0489('0xe')][_0xe913f5[_0x0489('0x4a')]]);if(!_[_0x0489('0x37')](_0x1d97b9['mohstarttime'])){_0x1d97b9['mohtime']+=moment()[_0x0489('0xc4')](0x0)[_0x0489('0xc3')](_0x1d97b9[_0x0489('0xe1')],_0x0489('0x9d'));logger[_0x0489('0x77')](_0x0489('0xe4'),_0xe913f5[_0x0489('0x4a')],_0x1d97b9['mohtime']);delete _0x1d97b9[_0x0489('0xe1')];}}}}catch(_0x51ad1e){logger[_0x0489('0x3e')](_0x0489('0xe5'),_0xe913f5[_0x0489('0x4a')],util[_0x0489('0x40')](_0x51ad1e,{'showHidden':![],'depth':null}));}};module[_0x0489('0xe6')]=VoiceQueueReport;
\ No newline at end of file
+var _0x4ded=['ATTENDED','secondtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','application','applicationdata','appdata','CDR(routeAlias)','toLowerCase','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','sequence','queueReports','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','syncVarSet','syncHangup','fullybooted','syncFullyBooted','newexten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','talking','pTalking','waiting','unlockRR','channels','switch','isNil','status','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','[%s][voiceQueueReport][checkQueueReport]','inspect','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','agents','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save','debug',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','answered','available','sumBillable','sumDuration','sumHoldTime','total','unmanaged','abandoned','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','format','voice_queue:save','isUndefined','clearZombieChannels','Action','queues','catch','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','isNotNull','[voiceQueueReport][queuesummary]\x20event:','queue','countBy','callers','toNumber','loggedIn','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','syncQueueCallerLeave','[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleave','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','linkedid','add','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','COMPLETEDBY','toUpperCase','[%s][voiceQueueReport][varset]','variable','queuestatus','CONTINUE','TIMEOUT','lastevent','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queuecallerleaveAt','varset','queueposition','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','length','diff','seconds','milliseconds','queuecallercompleteAt','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','ATTENDEDTRANSFER'];(function(_0x4fdb3d,_0x42d9d4){var _0x40dbee=function(_0x32a20c){while(--_0x32a20c){_0x4fdb3d['push'](_0x4fdb3d['shift']());}};_0x40dbee(++_0x42d9d4);}(_0x4ded,0x116));var _0xd4de=function(_0x300482,_0x30c2bf){_0x300482=_0x300482-0x0;var _0x25e088=_0x4ded[_0x300482];return _0x25e088;};'use strict';var _=require(_0xd4de('0x0'));var moment=require(_0xd4de('0x1'));var util=require(_0xd4de('0x2'));var md5=require(_0xd4de('0x3'));var Redis=require(_0xd4de('0x4'));var config=require(_0xd4de('0x5'));var logger=require(_0xd4de('0x6'))(_0xd4de('0x7'));var ami=require(_0xd4de('0x8'));var QueueReport=require(_0xd4de('0x9'));config[_0xd4de('0xa')]=_[_0xd4de('0xb')](config['redis'],{'host':_0xd4de('0xc'),'port':0x18eb});var io=require(_0xd4de('0xd'))(new Redis(config[_0xd4de('0xa')]));var Sequence=function(){};Sequence[_0xd4de('0xe')][_0xd4de('0xf')]=function(_0x1e8c35){this['tail']=this[_0xd4de('0x10')]?this['tail']['finally'](_0x1e8c35):_0x1e8c35();};function VoiceQueueReport(_0x4b0876){this[_0xd4de('0x11')]=new Sequence();this[_0xd4de('0x12')]={};this['agents']=_0x4b0876['agents'];this['channels']=_0x4b0876[_0xd4de('0x13')];this['voiceQueues']=_0x4b0876[_0xd4de('0x14')];this[_0xd4de('0x15')]=!![];this[_0xd4de('0x16')]=_0x4b0876[_0xd4de('0x16')];this[_0xd4de('0x17')]={};ami['on'](_0xd4de('0x18'),this[_0xd4de('0x19')][_0xd4de('0x1a')](this));ami['on'](_0xd4de('0x1b'),this[_0xd4de('0x1c')][_0xd4de('0x1a')](this));ami['on'](_0xd4de('0x1d'),this[_0xd4de('0x1e')][_0xd4de('0x1a')](this));ami['on'](_0xd4de('0x1f'),this[_0xd4de('0x20')][_0xd4de('0x1a')](this));ami['on']('queuecallerleave',this['syncQueueCallerLeave'][_0xd4de('0x1a')](this));ami['on'](_0xd4de('0x21'),this[_0xd4de('0x22')][_0xd4de('0x1a')](this));ami['on']('agentconnect',this['syncAgentConnect'][_0xd4de('0x1a')](this));ami['on']('varset',this[_0xd4de('0x23')][_0xd4de('0x1a')](this));ami['on']('hangup',this[_0xd4de('0x24')]['bind'](this));ami['on'](_0xd4de('0x25'),this[_0xd4de('0x26')][_0xd4de('0x1a')](this));ami['on'](_0xd4de('0x27'),this['syncNewExten'][_0xd4de('0x1a')](this));ami['on'](_0xd4de('0x28'),this[_0xd4de('0x29')][_0xd4de('0x1a')](this));ami['on'](_0xd4de('0x2a'),this[_0xd4de('0x2b')][_0xd4de('0x1a')](this));ami['on'](_0xd4de('0x2c'),this[_0xd4de('0x2d')][_0xd4de('0x1a')](this));ami['on']('blindtransfer',this[_0xd4de('0x2e')][_0xd4de('0x1a')](this));this[_0xd4de('0x2f')]();this[_0xd4de('0x30')]();}function clearChannels(_0x2dad88){if(!_[_0xd4de('0x31')](_0x2dad88)){for(var _0xffe1cc in _0x2dad88){if(_0x2dad88[_0xd4de('0x32')](_0xffe1cc)){delete _0x2dad88[_0xffe1cc];}}}}function clearCampaigns(_0x2aa82a){if(!_[_0xd4de('0x31')](_0x2aa82a)){for(var _0x2ea712 in _0x2aa82a){if(_0x2aa82a[_0xd4de('0x32')](_0x2ea712)){_0x2aa82a[_0x2ea712]['originated']=0x0;}}}}function clearVoiceQueues(_0xe64e4e){if(!_[_0xd4de('0x31')](_0xe64e4e)){for(var _0x5005b0 in _0xe64e4e){if(_0xe64e4e[_0xd4de('0x32')](_0x5005b0)){_0xe64e4e[_0x5005b0]['originated']=0x0;_0xe64e4e[_0x5005b0][_0xd4de('0x33')]=0x0;_0xe64e4e[_0x5005b0][_0xd4de('0x34')]=0x0;_0xe64e4e[_0x5005b0][_0xd4de('0x35')]=0x0;_0xe64e4e[_0x5005b0]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0xd4de93){if(!_[_0xd4de('0x31')](_0xd4de93)){for(var _0x17f0a in _0xd4de93){if(_0xd4de93['hasOwnProperty'](_0x17f0a)){_0xd4de93[_0x17f0a][_0xd4de('0x36')]=!![];}}}}VoiceQueueReport[_0xd4de('0xe')]['clearZombieChannels']=function(){var _0x5103b5=this;for(var _0x5706fe in this[_0xd4de('0x37')]){if(this['channels'][_0xd4de('0x32')](_0x5706fe)&&!this[_0xd4de('0x37')][_0x5706fe][_0xd4de('0x38')]){this[_0xd4de('0x11')]['enqueue'](function(){if(!_[_0xd4de('0x39')](_0x5103b5[_0xd4de('0x37')][_0x5706fe])){return ami['Action']({'action':_0xd4de('0x3a'),'channel':_0x5103b5[_0xd4de('0x37')][_0x5706fe]['channel']})['catch'](function(_0x16e7a9){if(_0x16e7a9[_0xd4de('0x3b')]===_0xd4de('0x3c')){setTimeout(function(){if(_0x5103b5[_0xd4de('0x37')][_0x5706fe]){delete _0x5103b5['channels'][_0x5706fe];logger[_0xd4de('0x3d')](_0xd4de('0x3e'),_0x5706fe,util['inspect'](_0x16e7a9,{'showHidden':![],'depth':null}));}if(_0x5103b5[_0xd4de('0x12')][_0x5706fe]){delete _0x5103b5[_0xd4de('0x12')][_0x5706fe];logger[_0xd4de('0x3d')](_0xd4de('0x3f'),_0x5706fe,util[_0xd4de('0x40')](_0x16e7a9,{'showHidden':![],'depth':null}));}if(_0x5103b5[_0xd4de('0x17')][_0x5706fe]){delete _0x5103b5['variables'][_0x5706fe];logger['error'](_0xd4de('0x41'),_0x5706fe,util[_0xd4de('0x40')](_0x16e7a9,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xd4de('0xe')]['syncFullyBooted']=function(){logger[_0xd4de('0x3d')](_0xd4de('0x42'));clearChannels(this['channels']);this[_0xd4de('0x43')](this[_0xd4de('0x12')]);clearAgentBooked(this[_0xd4de('0x44')]);clearVoiceQueues(this[_0xd4de('0x14')]);clearCampaigns(this['campaigns']);};VoiceQueueReport['prototype'][_0xd4de('0x43')]=function(_0x541777){var _0x3e5e34=this;if(!_['isEmpty'](_0x541777)){for(var _0x97c0ab in _0x541777){if(_0x541777[_0xd4de('0x32')](_0x97c0ab)){_0x3e5e34[_0xd4de('0x45')](_0x541777[_0x97c0ab],_0xd4de('0x46'));delete _0x541777[_0x97c0ab];}}}};VoiceQueueReport['prototype'][_0xd4de('0x47')]=function(_0x4bd6ed,_0xbee33,_0x280f76){io['to'](_0x4bd6ed)[_0xd4de('0x47')](_0xbee33,_0x280f76);};VoiceQueueReport[_0xd4de('0xe')][_0xd4de('0x48')]=function(_0x13c256,_0x3e8ae0){logger['debug'](_0xd4de('0x49')+_0x3e8ae0+_0xd4de('0x4a'),_0x13c256[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x13c256,{'showHidden':![],'depth':null}));this[_0xd4de('0x47')](util['format'](_0xd4de('0x4c'),_0x13c256[_0xd4de('0x4d')]),_0xd4de('0x4e'),_0x13c256);io['emit'](_0xd4de('0x4f'),_0x13c256);};VoiceQueueReport[_0xd4de('0xe')][_0xd4de('0x45')]=function(_0x516542,_0x3b9026){logger[_0xd4de('0x50')](_0xd4de('0x49')+_0x3b9026+_0xd4de('0x51'),_0x516542[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x516542,{'showHidden':![],'depth':null}));this[_0xd4de('0x47')](util['format'](_0xd4de('0x4c'),_0x516542[_0xd4de('0x4d')]),_0xd4de('0x52'),_0x516542);io['emit'](_0xd4de('0x53'),_0x516542);};VoiceQueueReport[_0xd4de('0xe')][_0xd4de('0x54')]=function(_0x550464,_0x5c704a){if(_0x550464[_0xd4de('0x55')]===_0xd4de('0x56')){var _0x5a2b3e={'id':_0x550464['id'],'name':_0x550464[_0xd4de('0x4d')],'strategy':_0x550464[_0xd4de('0x57')],'answered':_0x550464[_0xd4de('0x58')],'available':_0x550464[_0xd4de('0x59')],'loggedIn':_0x550464['loggedIn'],'pTalking':_0x550464[_0xd4de('0x34')],'sumBillable':_0x550464[_0xd4de('0x5a')],'sumDuration':_0x550464[_0xd4de('0x5b')],'sumHoldTime':_0x550464[_0xd4de('0x5c')]||0x0,'talking':_0x550464[_0xd4de('0x33')],'total':_0x550464[_0xd4de('0x5d')],'type':_0x550464['type'],'unmanaged':_0x550464[_0xd4de('0x5e')],'abandoned':_0x550464[_0xd4de('0x5f')],'waiting':_0x550464[_0xd4de('0x35')]};if(_0x550464[_0xd4de('0x60')]){_0x5a2b3e[_0xd4de('0x60')]={'id':_0x550464[_0xd4de('0x60')]['id'],'name':_0x550464[_0xd4de('0x60')][_0xd4de('0x4d')],'active':_0x550464[_0xd4de('0x60')][_0xd4de('0x61')],'callerid':_0x550464['Trunk'][_0xd4de('0x62')]};}if(_0x550464[_0xd4de('0x63')]){_0x5a2b3e[_0xd4de('0x63')]={'id':_0x550464['Interval']['id'],'name':_0x550464[_0xd4de('0x63')][_0xd4de('0x4d')]};}var _0x299bf3=md5(JSON[_0xd4de('0x64')](_0x5a2b3e));if(_0x550464[_0xd4de('0x3')]!==_0x299bf3){_0x550464[_0xd4de('0x3')]=_0x299bf3;logger[_0xd4de('0x50')](_0xd4de('0x65')+_0x5c704a+_0xd4de('0x66'),util[_0xd4de('0x40')](_0x5a2b3e,{'showHidden':![],'depth':null}));this['emit'](util[_0xd4de('0x67')](_0xd4de('0x4c'),_0x5a2b3e[_0xd4de('0x4d')]),_0xd4de('0x68'),_0x5a2b3e);}}};VoiceQueueReport[_0xd4de('0xe')]['isNotNull']=function(_0x5a4602){return _0x5a4602!==null&&!_[_0xd4de('0x69')](_0x5a4602);};VoiceQueueReport[_0xd4de('0xe')]['loopQueueShow']=function(){var _0x48cb7d=this;setInterval(function(){_0x48cb7d[_0xd4de('0x6a')]();ami[_0xd4de('0x6b')]({'action':_0xd4de('0x6c')})[_0xd4de('0x6d')](function(_0x34d772){logger[_0xd4de('0x3d')](_0xd4de('0x6e'),util[_0xd4de('0x40')](_0x34d772,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xd4de('0xe')][_0xd4de('0x2f')]=function(){var _0x3be8c2=this;setInterval(function(){if(_0x3be8c2[_0xd4de('0x15')]){return ami['Action']({'action':_0xd4de('0x18')})[_0xd4de('0x6f')](function(_0x45a7b7){_0x3be8c2[_0xd4de('0x15')]=![];})[_0xd4de('0x6d')](function(_0x176025){logger['error'](_0xd4de('0x70'),util['inspect'](_0x176025,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0xd4de('0x19')]=function(_0xd79781){try{if(this[_0xd4de('0x71')](_0xd79781)&&this[_0xd4de('0x71')](_0xd79781['queue'])){logger[_0xd4de('0x50')](_0xd4de('0x72'),util[_0xd4de('0x40')](_0xd79781,{'showHidden':![],'depth':null}));if(this[_0xd4de('0x14')][_0xd79781[_0xd4de('0x73')]]){logger['info']('[voiceQueueReport][queuesummary]\x20name:%s',_0xd79781['queue']);var _0x3f6d8c=_[_0xd4de('0x74')](this[_0xd4de('0x37')],_0xd4de('0x73'))[_0xd79781['queue']]||0x0;var _0x35ba6f=_0x3f6d8c-_0xd79781[_0xd4de('0x75')];if(this[_0xd4de('0x14')][_0xd79781[_0xd4de('0x73')]]['waiting']!==_[_0xd4de('0x76')](_0xd79781[_0xd4de('0x75')])||this[_0xd4de('0x14')][_0xd79781[_0xd4de('0x73')]]['loggedIn']!==_['toNumber'](_0xd79781['loggedin'])||this[_0xd4de('0x14')][_0xd79781[_0xd4de('0x73')]][_0xd4de('0x59')]!==_['toNumber'](_0xd79781[_0xd4de('0x59')])||this[_0xd4de('0x14')][_0xd79781[_0xd4de('0x73')]]['talking']!==_0x35ba6f){this[_0xd4de('0x14')][_0xd79781['queue']][_0xd4de('0x35')]=_[_0xd4de('0x76')](_0xd79781[_0xd4de('0x75')]);this[_0xd4de('0x14')][_0xd79781[_0xd4de('0x73')]][_0xd4de('0x77')]=_[_0xd4de('0x76')](_0xd79781[_0xd4de('0x78')]);this['voiceQueues'][_0xd79781[_0xd4de('0x73')]]['available']=_[_0xd4de('0x76')](_0xd79781[_0xd4de('0x59')]);this['voiceQueues'][_0xd79781[_0xd4de('0x73')]][_0xd4de('0x33')]=_0x35ba6f>0x0?_0x35ba6f:0x0;this[_0xd4de('0x14')][_0xd79781[_0xd4de('0x73')]][_0xd4de('0x33')]=this[_0xd4de('0x14')][_0xd79781[_0xd4de('0x73')]][_0xd4de('0x33')]>_[_0xd4de('0x76')](_0xd79781[_0xd4de('0x78')])?_[_0xd4de('0x76')](_0xd79781[_0xd4de('0x78')]):this[_0xd4de('0x14')][_0xd79781['queue']][_0xd4de('0x33')];this[_0xd4de('0x54')](this[_0xd4de('0x14')][_0xd79781[_0xd4de('0x73')]],_0xd4de('0x18'));}logger[_0xd4de('0x50')](_0xd4de('0x79'),util[_0xd4de('0x40')](this['voiceQueues'][_0xd79781[_0xd4de('0x73')]],{'showHidden':![],'depth':null}));ami['emit']('custom:queuesummary',this['voiceQueues'][_0xd79781[_0xd4de('0x73')]]);}}}catch(_0x41b3ec){logger['error']('[voiceQueueReport][queuesummary]',util['inspect'](_0x41b3ec,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xd4de('0x1c')]=function(_0x502b2e){logger[_0xd4de('0x50')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0xd4de('0x40')](_0x502b2e,{'showHidden':![],'depth':null}));this[_0xd4de('0x15')]=!![];};VoiceQueueReport['prototype']['syncQueueCallerJoin']=function(_0x561e52){try{if(this['isNotNull'](_0x561e52)){logger[_0xd4de('0x50')](_0xd4de('0x7a'),_0x561e52[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x561e52,{'showHidden':![],'depth':null}));if(_[_0xd4de('0x69')](this[_0xd4de('0x12')][_0x561e52['uniqueid']]))this['queueReports'][_0x561e52['uniqueid']]=[];if(_[_0xd4de('0x69')](this[_0xd4de('0x37')][_0x561e52['uniqueid']]))this[_0xd4de('0x37')][_0x561e52['uniqueid']]={};var _0x1bc101=new QueueReport();_0x1bc101['name']=_0x561e52[_0xd4de('0x73')];_0x1bc101[_0xd4de('0x55')]=this['voiceQueues'][_0x1bc101[_0xd4de('0x4d')]]&&this['voiceQueues'][_0x1bc101[_0xd4de('0x4d')]][_0xd4de('0x55')]?this[_0xd4de('0x14')][_0x1bc101[_0xd4de('0x4d')]]['type']||_0xd4de('0x56'):_0xd4de('0x56');_0x1bc101[_0xd4de('0x73')]=_0x561e52[_0xd4de('0x73')];_0x1bc101[_0xd4de('0x7b')]=moment()[_0xd4de('0x67')](_0xd4de('0x7c'));_0x1bc101[_0xd4de('0x7d')]=_0x561e52[_0xd4de('0x7d')];_0x1bc101[_0xd4de('0x7e')]=_0x561e52[_0xd4de('0x7e')];_0x1bc101[_0xd4de('0x4b')]=_0x561e52[_0xd4de('0x4b')];_0x1bc101['routealias']=this[_0xd4de('0x37')][_0x561e52['uniqueid']]['routealias'];logger[_0xd4de('0x7f')](_0xd4de('0x80'),_0x1bc101['name'],_0x1bc101[_0xd4de('0x55')]);_[_0xd4de('0x81')](_0x1bc101,_[_0xd4de('0x82')](_0x561e52,_[_0xd4de('0x83')](_0x1bc101)));this['queueReports'][_0x561e52[_0xd4de('0x4b')]][_0xd4de('0x84')](_0x1bc101);this[_0xd4de('0x37')][_0x561e52[_0xd4de('0x4b')]]=_0x1bc101;this[_0xd4de('0x48')](_0x1bc101,'queuecallerjoin');}}catch(_0x559a87){logger['error']('[%s][voiceQueueReport][queuecallerjoin]',_0x561e52[_0xd4de('0x4b')],util['inspect'](_0x559a87,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd4de('0xe')]['syncQueueCallerAbandon']=function(_0x2ec967){try{if(this[_0xd4de('0x71')](_0x2ec967)){logger[_0xd4de('0x50')](_0xd4de('0x85'),_0x2ec967[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x2ec967,{'showHidden':![],'depth':null}));if(this[_0xd4de('0x12')][_0x2ec967[_0xd4de('0x4b')]]){var _0x5a270a=_[_0xd4de('0x86')](this[_0xd4de('0x12')][_0x2ec967[_0xd4de('0x4b')]]);_0x5a270a[_0xd4de('0x87')]=![];_0x5a270a['queuecallercompleteAt']=null;_0x5a270a[_0xd4de('0x88')]=_0x2ec967[_0xd4de('0x88')];_0x5a270a['originalposition']=_0x2ec967[_0xd4de('0x89')];_0x5a270a[_0xd4de('0x1f')]=!![];_0x5a270a[_0xd4de('0x8a')]=moment()[_0xd4de('0x67')](_0xd4de('0x7c'));_0x5a270a[_0xd4de('0x8b')]=_0xd4de('0x8c');_0x5a270a[_0xd4de('0x8d')]=null;logger[_0xd4de('0x7f')](_0xd4de('0x8e'),_0x5a270a[_0xd4de('0x4d')],_0x5a270a['type']);this[_0xd4de('0x37')][_0x2ec967['uniqueid']]=_0x5a270a;this[_0xd4de('0x45')](_0x5a270a,_0xd4de('0x1f'));}}}catch(_0x19541b){logger['error'](_0xd4de('0x85'),_0x2ec967[_0xd4de('0x4b')],util['inspect'](_0x19541b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd4de('0xe')][_0xd4de('0x8f')]=function(_0x46d4cb){try{if(this[_0xd4de('0x71')](_0x46d4cb)){logger[_0xd4de('0x50')](_0xd4de('0x90'),_0x46d4cb['uniqueid'],util[_0xd4de('0x40')](_0x46d4cb,{'showHidden':![],'depth':null}));if(this[_0xd4de('0x12')][_0x46d4cb['uniqueid']]){var _0x2f4183=_[_0xd4de('0x86')](this[_0xd4de('0x12')][_0x46d4cb[_0xd4de('0x4b')]]);_0x2f4183['queuecallerleaveAt']=moment()['format'](_0xd4de('0x7c'));_0x2f4183[_0xd4de('0x91')]=_0x46d4cb[_0xd4de('0x91')];_0x2f4183[_0xd4de('0x92')]=_0x46d4cb['connectedlinename'];logger[_0xd4de('0x7f')](_0xd4de('0x93'),_0x2f4183[_0xd4de('0x4d')],_0x2f4183[_0xd4de('0x55')],_0x46d4cb['connectedlinenum'],_0x46d4cb['connectedlinename']);this[_0xd4de('0x37')][_0x46d4cb['uniqueid']]=_0x2f4183;this[_0xd4de('0x48')](_0x2f4183,_0xd4de('0x94'));}}}catch(_0x2cb193){logger[_0xd4de('0x3d')]('[%s][voiceQueueReport][queuecallerleave]',_0x46d4cb['uniqueid'],util[_0xd4de('0x40')](_0x2cb193,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd4de('0xe')]['syncAgentConnect']=function(_0x553684){try{if(this[_0xd4de('0x71')](_0x553684)){logger[_0xd4de('0x50')](_0xd4de('0x95'),_0x553684['uniqueid'],util[_0xd4de('0x40')](_0x553684,{'showHidden':![],'depth':null}));if(this[_0xd4de('0x12')][_0x553684['uniqueid']]){var _0x882208=_['last'](this[_0xd4de('0x12')][_0x553684[_0xd4de('0x4b')]]);_0x882208['queuecallercomplete']=!![];_0x882208[_0xd4de('0x8b')]=_0xd4de('0x96');logger[_0xd4de('0x7f')](_0xd4de('0x97'),_0x882208[_0xd4de('0x4d')],_0x882208[_0xd4de('0x55')]);}}}catch(_0x4b758a){logger[_0xd4de('0x3d')](_0xd4de('0x95'),_0x553684[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x4b758a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd4de('0xe')][_0xd4de('0x22')]=function(_0x4c4de9){try{if(this[_0xd4de('0x71')](_0x4c4de9)){logger['debug'](_0xd4de('0x98'),_0x4c4de9[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x4c4de9,{'showHidden':![],'depth':null}));if(this[_0xd4de('0x12')][_0x4c4de9[_0xd4de('0x4b')]]){var _0x4cea38=_[_0xd4de('0x86')](this[_0xd4de('0x12')][_0x4c4de9[_0xd4de('0x4b')]]);_0x4cea38[_0xd4de('0x1f')]=![];_0x4cea38[_0xd4de('0x8a')]=null;_0x4cea38[_0xd4de('0x99')]=!![];_0x4cea38[_0xd4de('0x8d')]=_0x4c4de9[_0xd4de('0x9a')];_0x4cea38['holdtime']=_0x4c4de9[_0xd4de('0x88')];_0x4cea38[_0xd4de('0x87')]=!![];_0x4cea38[_0xd4de('0x9b')]=![];_0x4cea38[_0xd4de('0x9c')]=null;if(!_0x4cea38[_0xd4de('0x9d')]){if(_0x4c4de9[_0xd4de('0x9e')]=='transfer'){_0x4cea38[_0xd4de('0x8b')]=_0xd4de('0x9f');logger[_0xd4de('0x7f')](_0xd4de('0xa0'),_0x4cea38['name'],_0x4cea38['type']);}else{if(_[_0xd4de('0xa1')](_0x4c4de9['channel']['toLowerCase'](),'local/')){if(this['queueReports'][_0x4c4de9['linkedid']]){var _0x5f48f5=_['last'](this[_0xd4de('0x12')][_0x4c4de9[_0xd4de('0xa2')]]);_0x5f48f5[_0xd4de('0x87')]=![];_0x5f48f5['queuecallerexit']=!![];_0x5f48f5[_0xd4de('0x9c')]=moment(_0x4cea38[_0xd4de('0x7b')])[_0xd4de('0xa3')](_0x4c4de9[_0xd4de('0x88')],'seconds')[_0xd4de('0x67')](_0xd4de('0x7c'));_0x5f48f5['queuecallerexitreason']=_0xd4de('0xa4');_0x5f48f5[_0xd4de('0x9d')]=!![];_0x5f48f5[_0xd4de('0xa5')]=_0xd4de('0xa6');_0x5f48f5[_0xd4de('0xa7')]=_0x4c4de9[_0xd4de('0xa8')];_0x5f48f5[_0xd4de('0xa9')]=_0x4c4de9[_0xd4de('0x4b')];logger[_0xd4de('0x7f')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x5f48f5[_0xd4de('0x4d')],_0x5f48f5[_0xd4de('0x55')]);var _0xf657e9=this[_0xd4de('0x12')][_0x4c4de9[_0xd4de('0xa2')]];this[_0xd4de('0x12')][_0x4c4de9[_0xd4de('0xa2')]]=this[_0xd4de('0x12')][_0x4c4de9[_0xd4de('0x4b')]];this[_0xd4de('0x12')][_0x4c4de9[_0xd4de('0x4b')]]=_0xf657e9;}}else{_0x4cea38['queuecallerexitreason']=_0xd4de('0xaa')+_0x4c4de9['reason'][_0xd4de('0xab')]();logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x4cea38['name'],_0x4cea38[_0xd4de('0x55')],_0x4cea38[_0xd4de('0x8b')]);}}}this[_0xd4de('0x37')][_0x4c4de9['uniqueid']]=_0x4cea38;this[_0xd4de('0x45')](_0x4cea38,_0xd4de('0x21'));}}}catch(_0x20defa){logger['error'](_0xd4de('0x98'),_0x4c4de9[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x20defa,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncVarSet']=function(_0x14b539){try{if(this['isNotNull'](_0x14b539)){logger['debug'](_0xd4de('0xac'),_0x14b539[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x14b539,{'showHidden':![],'depth':null}));this['addVariable'](_0x14b539['uniqueid'],_[_0xd4de('0x83')](_0x14b539['variable'])[0x0],_0x14b539['value']);if(this[_0xd4de('0x12')][_0x14b539[_0xd4de('0x4b')]]){var _0xd3edb2=_[_0xd4de('0x86')](this[_0xd4de('0x12')][_0x14b539[_0xd4de('0x4b')]]);if(_0xd3edb2){if(this[_0xd4de('0x71')](_0x14b539[_0xd4de('0xad')])&&this[_0xd4de('0x71')](_0x14b539['variable'][_0xd4de('0xae')])){switch(_0x14b539['value']){case _0xd4de('0xaf'):_0xd3edb2[_0xd4de('0x9b')]=![];_0xd3edb2[_0xd4de('0x9c')]=null;break;case _0xd4de('0xb0'):_0xd3edb2[_0xd4de('0xb1')]='timeout';_0xd3edb2['queuecallerexit']=!![];_0xd3edb2['queuecallerexitAt']=moment()[_0xd4de('0x67')]('YYYY-MM-DD\x20HH:mm:ss');_0xd3edb2['queuecallerleaveAt']=moment()[_0xd4de('0x67')]('YYYY-MM-DD\x20HH:mm:ss');logger['debug'](_0xd4de('0xb2'),_0x14b539[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0xd3edb2,{'showHidden':![],'depth':null}));ami[_0xd4de('0x47')](_0xd4de('0xb3'),_0xd3edb2);break;default:_0xd3edb2[_0xd4de('0x9b')]=!![];_0xd3edb2['queuecallerexitAt']=moment()[_0xd4de('0x67')](_0xd4de('0x7c'));_0xd3edb2[_0xd4de('0xb4')]=moment()[_0xd4de('0x67')]('YYYY-MM-DD\x20HH:mm:ss');}_0xd3edb2[_0xd4de('0x1f')]=![];_0xd3edb2[_0xd4de('0x8a')]=null;_0xd3edb2[_0xd4de('0x8b')]=_0x14b539['value'];this['channels'][_0x14b539[_0xd4de('0x4b')]]=_0xd3edb2;this[_0xd4de('0x45')](_0xd3edb2,_0xd4de('0xb5'));}else if(this[_0xd4de('0x71')](_0x14b539[_0xd4de('0xad')])&&this['isNotNull'](_0x14b539['variable'][_0xd4de('0xb6')])){if(!_0xd3edb2['queuecallerabandon']){_0xd3edb2[_0xd4de('0x9b')]=!![];_0xd3edb2[_0xd4de('0x9c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xd3edb2[_0xd4de('0x8b')]='EXITWITHKEY';_0xd3edb2['queuecallerleaveAt']=moment()[_0xd4de('0x67')](_0xd4de('0x7c'));this[_0xd4de('0x37')][_0x14b539['uniqueid']]=_0xd3edb2;}}logger[_0xd4de('0x7f')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x14b539[_0xd4de('0x4b')],_0xd3edb2['name'],_0xd3edb2[_0xd4de('0x55')],_['keys'](_0x14b539['variable'])[0x0],_0x14b539['value']);_0xd3edb2['variables']=this[_0xd4de('0x17')][_0x14b539['uniqueid']];}}}}catch(_0x4f57b6){logger[_0xd4de('0x3d')](_0xd4de('0xac'),_0x14b539[_0xd4de('0x4b')],util['inspect'](_0x4f57b6,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xd4de('0xb7')]=function(_0x3157d5,_0x4a5191,_0x336602){var _0x1ea9e3=[_0xd4de('0xb8'),_0xd4de('0xb9'),'rtpaudioqosjitter',_0xd4de('0xba'),_0xd4de('0xbb'),_0xd4de('0xbc'),_0xd4de('0xbd'),_0xd4de('0xbe'),_0xd4de('0xbf'),_0xd4de('0xc0'),_0xd4de('0xc1'),_0xd4de('0xc2'),_0xd4de('0xc3'),_0xd4de('0xc4'),_0xd4de('0xc5'),_0xd4de('0xc6'),'membername',_0xd4de('0xc7'),_0xd4de('0xc8')];if(!_[_0xd4de('0x39')](_0x4a5191)&&!_[_0xd4de('0xc9')](_0x1ea9e3,_0x4a5191)){if(_['isUndefined'](this[_0xd4de('0x17')][_0x3157d5])){this[_0xd4de('0x17')][_0x3157d5]={};}this[_0xd4de('0x17')][_0x3157d5][_0x4a5191]=_0x336602;}};VoiceQueueReport[_0xd4de('0xe')]['syncHangup']=function(_0x311473){try{if(this[_0xd4de('0x71')](_0x311473)){logger[_0xd4de('0x50')]('[%s][voiceQueueReport][hangup]',_0x311473[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x311473,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x311473[_0xd4de('0x4b')]]){for(var _0x1eb7e2=0x0,_0x3c7335={};_0x1eb7e2<this['queueReports'][_0x311473[_0xd4de('0x4b')]][_0xd4de('0xca')];_0x1eb7e2+=0x1){_0x3c7335=this[_0xd4de('0x12')][_0x311473[_0xd4de('0x4b')]][_0x1eb7e2];if(this[_0xd4de('0x14')][_0x3c7335[_0xd4de('0x73')]]){if(_0x3c7335[_0xd4de('0x9b')]&&_0x3c7335['transfer']!=!![]){this[_0xd4de('0x14')][_0x3c7335[_0xd4de('0x73')]][_0xd4de('0x5e')]+=0x1;}if(_0x3c7335[_0xd4de('0x1f')]){this[_0xd4de('0x14')][_0x3c7335['queue']][_0xd4de('0x5f')]+=0x1;}this[_0xd4de('0x14')][_0x3c7335['queue']][_0xd4de('0x5c')]+=moment(_0x3c7335[_0xd4de('0xb4')])[_0xd4de('0xcb')](_0x3c7335[_0xd4de('0x7b')],_0xd4de('0xcc'))||0x0;if(_0x1eb7e2===this[_0xd4de('0x12')][_0x311473[_0xd4de('0x4b')]][_0xd4de('0xca')]-0x1){this['voiceQueues'][_0x3c7335[_0xd4de('0x73')]][_0xd4de('0x5b')]+=moment()['milliseconds'](0x0)[_0xd4de('0xcb')](_0x3c7335['queuecallerjoinAt'],'seconds');this['voiceQueues'][_0x3c7335[_0xd4de('0x73')]][_0xd4de('0x5d')]+=0x1;if(_0x3c7335['queuecallercomplete']){this['voiceQueues'][_0x3c7335[_0xd4de('0x73')]][_0xd4de('0x58')]+=0x1;this['voiceQueues'][_0x3c7335[_0xd4de('0x73')]][_0xd4de('0x5a')]+=moment()[_0xd4de('0xcd')](0x0)[_0xd4de('0xcb')](_0x3c7335[_0xd4de('0xb4')],_0xd4de('0xcc'));_0x3c7335[_0xd4de('0xce')]=moment()[_0xd4de('0x67')]('YYYY-MM-DD\x20HH:mm:ss');_0x3c7335[_0xd4de('0x9b')]=![];_0x3c7335[_0xd4de('0x9c')]=null;}if(_0x3c7335[_0xd4de('0x9b')]&&_0x3c7335['transfer']!=!![]){_0x3c7335['lastevent']='unmanaged';logger[_0xd4de('0x50')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x311473[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x3c7335,{'showHidden':![],'depth':null}));ami['emit']('custom:queuecallerunmanaged',_0x3c7335);}if(_0x3c7335[_0xd4de('0x1f')]){_0x3c7335[_0xd4de('0xb1')]=_0xd4de('0x5f');logger[_0xd4de('0x50')](_0xd4de('0xcf'),_0x311473[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x3c7335,{'showHidden':![],'depth':null}));ami[_0xd4de('0x47')]('custom:queuecallerabandon',_0x3c7335);}}else{this[_0xd4de('0x14')][_0x3c7335['queue']][_0xd4de('0x5b')]+=this[_0xd4de('0x14')][_0x3c7335[_0xd4de('0x73')]][_0xd4de('0x5c')];}logger[_0xd4de('0x7f')](_0xd4de('0xd0'),_0x311473[_0xd4de('0x4b')],_0x3c7335[_0xd4de('0x4d')],_0x3c7335[_0xd4de('0x55')],_0x311473[_0xd4de('0xd1')]);this[_0xd4de('0x37')][_0x311473[_0xd4de('0x4b')]]=_0x3c7335;this[_0xd4de('0x45')](_0x3c7335,_0xd4de('0xd2'));this[_0xd4de('0x54')](this[_0xd4de('0x14')][_0x3c7335[_0xd4de('0x73')]],_0xd4de('0xd2'));}}logger[_0xd4de('0x50')](_0xd4de('0xd3'),_0x311473[_0xd4de('0x4b')],util[_0xd4de('0x40')](this[_0xd4de('0x12')][_0x311473[_0xd4de('0x4b')]],{'showHidden':![],'depth':null}));ami[_0xd4de('0x47')](_0xd4de('0xd4'),this[_0xd4de('0x12')][_0x311473[_0xd4de('0x4b')]]);delete this['queueReports'][_0x311473[_0xd4de('0x4b')]];delete this[_0xd4de('0x37')][_0x311473[_0xd4de('0x4b')]];}if(this[_0xd4de('0x17')][_0x311473['uniqueid']]){delete this[_0xd4de('0x17')][_0x311473['uniqueid']];}}}catch(_0x465548){logger[_0xd4de('0x3d')](_0xd4de('0xd5'),_0x311473[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x465548,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd4de('0xe')][_0xd4de('0x2d')]=function(_0x2d60b0){try{if(this[_0xd4de('0x71')](_0x2d60b0)){logger[_0xd4de('0x50')](_0xd4de('0xd6'),_0x2d60b0[_0xd4de('0x4b')],util['inspect'](_0x2d60b0,{'showHidden':![],'depth':null}));var _0x3fb3e6;if(this['queueReports'][_0x2d60b0[_0xd4de('0xd7')]]){_0x3fb3e6=_['last'](this[_0xd4de('0x12')][_0x2d60b0[_0xd4de('0xd7')]]);_0x3fb3e6[_0xd4de('0xa7')]=_0x2d60b0[_0xd4de('0xd8')];_0x3fb3e6['transferuniqueid']=_0x2d60b0['secondtransfereruniqueid'];_0x3fb3e6[_0xd4de('0x8b')]=_0xd4de('0xd9');_0x3fb3e6[_0xd4de('0x9d')]=!![];_0x3fb3e6[_0xd4de('0xa5')]=_0xd4de('0xda');if(this['queueReports'][_0x2d60b0['secondtransfereruniqueid']]){var _0x960a5c=this[_0xd4de('0x12')][_0x2d60b0[_0xd4de('0xdb')]];this[_0xd4de('0x12')][_0x2d60b0[_0xd4de('0xdb')]]=this[_0xd4de('0x12')][_0x2d60b0[_0xd4de('0xd7')]];this['queueReports'][_0x2d60b0[_0xd4de('0xd7')]]=_0x960a5c;var _0x3f35d7=_[_0xd4de('0x86')](this[_0xd4de('0x12')][_0x2d60b0['transfereeuniqueid']]);_0x3f35d7['switch']=!![];}logger[_0xd4de('0x7f')](_0xd4de('0xdc'),_0x2d60b0['uniqueid'],_0x3fb3e6['name'],_0x3fb3e6[_0xd4de('0x55')],_0x3fb3e6['transferexten'],_0x3fb3e6['transferuniqueid']);}else if(this[_0xd4de('0x12')][_0x2d60b0[_0xd4de('0xdd')]]){_0x3fb3e6=_['last'](this[_0xd4de('0x12')][_0x2d60b0[_0xd4de('0xdd')]]);_0x3fb3e6[_0xd4de('0xa7')]=_0x2d60b0[_0xd4de('0xde')];_0x3fb3e6[_0xd4de('0xa9')]=_0x2d60b0['origtransfereruniqueid'];_0x3fb3e6[_0xd4de('0x8b')]=_0xd4de('0xd9');_0x3fb3e6[_0xd4de('0x9d')]=!![];_0x3fb3e6[_0xd4de('0xa5')]=_0xd4de('0xda');if(this[_0xd4de('0x12')][_0x2d60b0[_0xd4de('0xdf')]]){var _0x960a5c=this['queueReports'][_0x2d60b0['origtransfereruniqueid']];this[_0xd4de('0x12')][_0x2d60b0['origtransfereruniqueid']]=this['queueReports'][_0x2d60b0[_0xd4de('0xdd')]];this[_0xd4de('0x12')][_0x2d60b0[_0xd4de('0xdd')]]=_0x960a5c;var _0x3f35d7=_[_0xd4de('0x86')](this[_0xd4de('0x12')][_0x2d60b0[_0xd4de('0xdd')]]);_0x3f35d7['switch']=!![];}logger[_0xd4de('0x7f')](_0xd4de('0xdc'),_0x2d60b0[_0xd4de('0x4b')],_0x3fb3e6[_0xd4de('0x4d')],_0x3fb3e6[_0xd4de('0x55')],_0x3fb3e6[_0xd4de('0xa7')],_0x3fb3e6[_0xd4de('0xa9')]);}}}catch(_0x245d69){logger[_0xd4de('0x3d')](_0xd4de('0xd6'),_0x2d60b0[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x245d69,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd4de('0xe')][_0xd4de('0x2e')]=function(_0x299dbc){try{if(this[_0xd4de('0x71')](_0x299dbc)){logger['debug'](_0xd4de('0xe0'),_0x299dbc[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x299dbc,{'showHidden':![],'depth':null}));if(this[_0xd4de('0x12')][_0x299dbc['transfereeuniqueid']]){var _0x53aab6=_['last'](this[_0xd4de('0x12')][_0x299dbc[_0xd4de('0xd7')]]);_0x53aab6[_0xd4de('0x8b')]=_0xd4de('0xe1');_0x53aab6[_0xd4de('0x9d')]=!![];_0x53aab6['transfertype']=_0xd4de('0xe2');_0x53aab6['transferexten']=_0x299dbc[_0xd4de('0xe3')];_0x53aab6[_0xd4de('0xa9')]=_0x299dbc['transfereeuniqueid'];logger['info'](_0xd4de('0xe4'),_0x299dbc['uniqueid'],_0x53aab6[_0xd4de('0x4d')],_0x53aab6[_0xd4de('0x55')],_0x53aab6[_0xd4de('0xa7')],_0x53aab6[_0xd4de('0xa9')]);this[_0xd4de('0x24')]({'event':_0xd4de('0xe5'),'uniqueid':_0x299dbc[_0xd4de('0xd7')],'context':_0x299dbc[_0xd4de('0xe6')],'channel':_0x299dbc[_0xd4de('0xe7')]});}}}catch(_0x10a103){logger['error'](_0xd4de('0xe0'),_0x299dbc[_0xd4de('0x4b')],util['inspect'](_0x10a103,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd4de('0xe')]['syncMusicOnHoldStart']=function(_0x5b8f34){try{if(this[_0xd4de('0x71')](_0x5b8f34)){logger[_0xd4de('0x50')]('[%s][voiceQueueReport][musiconholdstart]',_0x5b8f34[_0xd4de('0x4b')],util['inspect'](_0x5b8f34,{'showHidden':![],'depth':null}));if(this[_0xd4de('0x12')][_0x5b8f34[_0xd4de('0x4b')]]){var _0x4cc3db=_[_0xd4de('0x86')](this[_0xd4de('0x12')][_0x5b8f34[_0xd4de('0x4b')]]);if(!_[_0xd4de('0x39')](_0x4cc3db[_0xd4de('0xb4')])){_0x4cc3db['mohstarttime']=moment()[_0xd4de('0x67')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0xd4de('0x7f')](_0xd4de('0xe8'),_0x5b8f34[_0xd4de('0x4b')],_0x4cc3db[_0xd4de('0xe9')]);}}}}catch(_0x4f911b){logger[_0xd4de('0x3d')](_0xd4de('0xea'),_0x5b8f34[_0xd4de('0x4b')],util['inspect'](_0x4f911b,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xd4de('0x2b')]=function(_0x275e90){try{if(this['isNotNull'](_0x275e90)){logger[_0xd4de('0x50')](_0xd4de('0xeb'),_0x275e90['uniqueid'],util[_0xd4de('0x40')](_0x275e90,{'showHidden':![],'depth':null}));if(this[_0xd4de('0x12')][_0x275e90['uniqueid']]){var _0x228718=_[_0xd4de('0x86')](this[_0xd4de('0x12')][_0x275e90[_0xd4de('0x4b')]]);if(!_['isNil'](_0x228718[_0xd4de('0xe9')])){_0x228718[_0xd4de('0xec')]+=moment()['milliseconds'](0x0)[_0xd4de('0xcb')](_0x228718[_0xd4de('0xe9')],'seconds');logger[_0xd4de('0x7f')](_0xd4de('0xed'),_0x275e90[_0xd4de('0x4b')],_0x228718['mohtime']);delete _0x228718[_0xd4de('0xe9')];}}}}catch(_0x9aec87){logger[_0xd4de('0x3d')](_0xd4de('0xeb'),_0x275e90[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x9aec87,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xd4de('0xe')][_0xd4de('0xee')]=function(_0x13e3e1){try{if(this['isNotNull'](_0x13e3e1)){logger['debug']('[%s][voiceQueueReport][newexten]\x20event:',_0x13e3e1[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x13e3e1,{'showHidden':![],'depth':null}));if(_0x13e3e1[_0xd4de('0xef')]['toLowerCase']()==='set'){_0x13e3e1[_0xd4de('0xf0')]=_0x13e3e1[_0xd4de('0xf1')]&&_0x13e3e1['appdata'][_0xd4de('0xa1')](_0xd4de('0xf2'))?_0x13e3e1['appdata']:(_0x13e3e1[_0xd4de('0xf1')]||_0x13e3e1[_0xd4de('0xf0')])[_0xd4de('0xf3')]();if(_[_0xd4de('0xa1')](_0x13e3e1[_0xd4de('0xf0')][_0xd4de('0xf3')](),'cdr(')){logger[_0xd4de('0x7f')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x13e3e1[_0xd4de('0x4b')],_0x13e3e1[_0xd4de('0xef')],_0x13e3e1[_0xd4de('0xf0')]);if(_[_0xd4de('0x69')](this[_0xd4de('0x37')][_0x13e3e1[_0xd4de('0x4b')]]))this[_0xd4de('0x37')][_0x13e3e1[_0xd4de('0x4b')]]={};var _0x488589=_0x13e3e1['applicationdata'][_0xd4de('0xf4')]('=');var _0x5d6c2e=_0x488589[0x0][_0xd4de('0xf3')]()[_0xd4de('0xf5')](/cdr\((.*)\)/);if(_0x5d6c2e)this[_0xd4de('0x37')][_0x13e3e1[_0xd4de('0x4b')]][_0x5d6c2e[0x1]]=_0x488589[0x1];}}}}catch(_0x5b4dd9){logger['error'](_0xd4de('0xf6'),_0x13e3e1[_0xd4de('0x4b')],util[_0xd4de('0x40')](_0x5b4dd9,{'showHidden':![],'depth':null}));}};module[_0xd4de('0xf7')]=VoiceQueueReport;
\ No newline at end of file
index 4db931c..19f5547 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc966=['CreateReportAgentPreview','../client','createHistory'];(function(_0x14e3f4,_0x5d577a){var _0x448a3a=function(_0x40796d){while(--_0x40796d){_0x14e3f4['push'](_0x14e3f4['shift']());}};_0x448a3a(++_0x5d577a);}(_0xc966,0x1c0));var _0x6c96=function(_0x4be634,_0x2b1a67){_0x4be634=_0x4be634-0x0;var _0x2df900=_0xc966[_0x4be634];return _0x2df900;};'use strict';var client=require(_0x6c96('0x0'));exports[_0x6c96('0x1')]=function(_0x30df9c){return function(){_0x30df9c['campaign']=_0x30df9c['queue'];return client['Request'](_0x6c96('0x2'),{'body':_0x30df9c,'log':_0x6c96('0x2')});};};
\ No newline at end of file
+var _0x6447=['../client','campaign','queue'];(function(_0x2fac81,_0x36b3a0){var _0x16e0b2=function(_0x51067e){while(--_0x51067e){_0x2fac81['push'](_0x2fac81['shift']());}};_0x16e0b2(++_0x36b3a0);}(_0x6447,0x144));var _0x7644=function(_0x59d0cc,_0xa7c52b){_0x59d0cc=_0x59d0cc-0x0;var _0x2ae79f=_0x6447[_0x59d0cc];return _0x2ae79f;};'use strict';var client=require(_0x7644('0x0'));exports['createHistory']=function(_0x46e5ed){return function(){_0x46e5ed[_0x7644('0x1')]=_0x46e5ed[_0x7644('0x2')];return client['Request']('CreateReportAgentPreview',{'body':_0x46e5ed,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index 4cebd7d..7442da3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3077=['../client','CreateAttachment'];(function(_0x11f8c9,_0x2cc97e){var _0x30a656=function(_0x3359f2){while(--_0x3359f2){_0x11f8c9['push'](_0x11f8c9['shift']());}};_0x30a656(++_0x2cc97e);}(_0x3077,0x144));var _0x7307=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0x3077[_0x1c546c];return _0x2cc384;};'use strict';var client=require(_0x7307('0x0'));exports['create']=function(_0x13e3e1){return client['Request'](_0x7307('0x1'),{'body':_0x13e3e1,'log':'CreateAttachment'});};
\ No newline at end of file
+var _0x93e9=['../client','create','Request','CreateAttachment'];(function(_0x437a31,_0x19f8eb){var _0x374e83=function(_0x30eaa4){while(--_0x30eaa4){_0x437a31['push'](_0x437a31['shift']());}};_0x374e83(++_0x19f8eb);}(_0x93e9,0xcc));var _0x993e=function(_0x4ebc2a,_0x3e9a27){_0x4ebc2a=_0x4ebc2a-0x0;var _0x5a083a=_0x93e9[_0x4ebc2a];return _0x5a083a;};'use strict';var client=require(_0x993e('0x0'));exports[_0x993e('0x1')]=function(_0x444623){return client[_0x993e('0x2')](_0x993e('0x3'),{'body':_0x444623,'log':_0x993e('0x3')});};
\ No newline at end of file
index 1be554d..6eee0ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0x493677,_0x43f6f2){var _0x338d02=function(_0x4a4b31){while(--_0x4a4b31){_0x493677['push'](_0x493677['shift']());}};_0x338d02(++_0x43f6f2);}(_0x1261,0x144));var _0x1126=function(_0x786e9,_0x1a029){_0x786e9=_0x786e9-0x0;var _0x1f891b=_0x1261[_0x786e9];return _0x1f891b;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
+var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0x1a364b,_0x108159){var _0x156b78=function(_0x335c0a){while(--_0x335c0a){_0x1a364b['push'](_0x1a364b['shift']());}};_0x156b78(++_0x108159);}(_0x1261,0x144));var _0x1126=function(_0x326b39,_0x4143c9){_0x326b39=_0x326b39-0x0;var _0x5b62d1=_0x1261[_0x326b39];return _0x5b62d1;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
index 55e8734..5abfd52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64d3=['GetCmContact','createContact','Request','CreateCmContact','getContacts'];(function(_0x15e67d,_0x355e47){var _0x36dd8c=function(_0x194dc5){while(--_0x194dc5){_0x15e67d['push'](_0x15e67d['shift']());}};_0x36dd8c(++_0x355e47);}(_0x64d3,0x1a0));var _0x364d=function(_0x26ac69,_0x305ae3){_0x26ac69=_0x26ac69-0x0;var _0x46a53b=_0x64d3[_0x26ac69];return _0x46a53b;};'use strict';var client=require('../client');exports[_0x364d('0x0')]=function(_0x2c9429){return function(){return client[_0x364d('0x1')](_0x364d('0x2'),{'body':_0x2c9429,'log':_0x364d('0x2')});};};exports[_0x364d('0x3')]=function(_0x247272){return function(){return client[_0x364d('0x1')](_0x364d('0x4'),{'options':_0x247272,'log':_0x364d('0x4')});};};
\ No newline at end of file
+var _0x7ff4=['CreateCmContact','getContacts','Request','GetCmContact'];(function(_0x59ca90,_0x1fd39e){var _0x874ceb=function(_0x4c90c1){while(--_0x4c90c1){_0x59ca90['push'](_0x59ca90['shift']());}};_0x874ceb(++_0x1fd39e);}(_0x7ff4,0x134));var _0x47ff=function(_0x4bf22b,_0x219784){_0x4bf22b=_0x4bf22b-0x0;var _0x920aef=_0x7ff4[_0x4bf22b];return _0x920aef;};'use strict';var client=require('../client');exports['createContact']=function(_0x16f613){return function(){return client['Request'](_0x47ff('0x0'),{'body':_0x16f613,'log':_0x47ff('0x0')});};};exports[_0x47ff('0x1')]=function(_0x50868c){return function(){return client[_0x47ff('0x2')](_0x47ff('0x3'),{'options':_0x50868c,'log':_0x47ff('0x3')});};};
\ No newline at end of file
index 6f22cc9..16bd1a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbf7=['moveContactManagedDialer','campaign','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','VoiceQueue','unlockContact','getContactRecallMe','GetContactRecallMe','name','voicePause','db.CmHopper.UserId','moment','lodash','getContacts','Request','CmContact','Contact','getCmHopper','updateContacts','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','UpdateCmHopper','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','priority','ASC','GetContactDialer','getContactDialerIvr','DESC','scheduledat'];(function(_0x589c0e,_0x4e9b0b){var _0x1d6e4f=function(_0x480a4e){while(--_0x480a4e){_0x589c0e['push'](_0x589c0e['shift']());}};_0x1d6e4f(++_0x4e9b0b);}(_0xbbf7,0xb0));var _0x7bbf=function(_0x1bf7ad,_0x2f9b40){_0x1bf7ad=_0x1bf7ad-0x0;var _0x3d497c=_0xbbf7[_0x1bf7ad];return _0x3d497c;};'use strict';var client=require('../client');var moment=require(_0x7bbf('0x0'));var _=require(_0x7bbf('0x1'));exports[_0x7bbf('0x2')]=function(_0x42eb7e,_0x169885){return function(){return client[_0x7bbf('0x3')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x42eb7e},'include':[{'model':_0x7bbf('0x4'),'as':_0x7bbf('0x5')}],'limit':_0x169885,'raw':![]},'log':_0x7bbf('0x6')});};};exports[_0x7bbf('0x7')]=function(_0x536390,_0x2ba09f,_0x5621a9){return function(){return client[_0x7bbf('0x3')]('UpdateCmHopper',{'body':_0x536390,'options':{'where':{'VoiceQueueId':_0x2ba09f,'scheduledat':{'$lte':moment()[_0x7bbf('0x8')](_0x7bbf('0x9'))}},'limit':_0x5621a9},'log':'UpdateCmHopper'});};};exports[_0x7bbf('0xa')]=function(_0xcb3da3){return function(){return client['Request'](_0x7bbf('0xb'),{'body':_0xcb3da3,'options':{'where':{'ContactId':_0xcb3da3['ContactId'],'ListId':_0xcb3da3[_0x7bbf('0xc')],'VoiceQueueId':_0xcb3da3[_0x7bbf('0xd')],'CampaignId':_0xcb3da3[_0x7bbf('0xe')]}},'log':_0x7bbf('0xa')});};};exports[_0x7bbf('0xf')]=function(_0x366ce2,_0x3af431,_0x17252d){return function(){return client[_0x7bbf('0x3')](_0x7bbf('0x10'),{'options':{'where':{'VoiceQueueId':_0x366ce2,'ListId':_0x3af431,'ContactId':_0x17252d}},'log':_0x7bbf('0x10')});};};exports[_0x7bbf('0x11')]=function(_0x3541ca,_0x3fa06,_0x2026c0,_0x37687a){return function(){return client[_0x7bbf('0x3')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3541ca,'active':![],'scheduledat':{'$lte':moment()[_0x7bbf('0x8')](_0x7bbf('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x3fa06}}]},'order':[[_0x7bbf('0x12'),'DESC'],['scheduledat',_0x37687a],['id',_0x7bbf('0x13')]],'raw':!![],'limit':_0x2026c0},'log':_0x7bbf('0x14')});};};exports[_0x7bbf('0x15')]=function(_0x545f14,_0x59a0ac,_0x24d9bf){return function(){return client['Request'](_0x7bbf('0x14'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x545f14,'active':![],'scheduledat':{'$lte':moment()[_0x7bbf('0x8')](_0x7bbf('0x9'))}},'include':[{'model':'CmContact','as':'Contact'}],'order':[[_0x7bbf('0x12'),_0x7bbf('0x16')],[_0x7bbf('0x17'),_0x24d9bf],['id',_0x7bbf('0x13')]],'raw':!![],'limit':_0x59a0ac},'log':'GetContactDialerIvr'});};};exports[_0x7bbf('0x18')]=function(_0x24187b,_0xaeca4b){return function(){_0x24187b[_0x7bbf('0x19')]=_0x24187b['queue'];return client[_0x7bbf('0x3')](_0x7bbf('0x1a'),{'body':_0x24187b,'options':{'where':{'ContactId':_0x24187b['ContactId'],'ListId':_0x24187b[_0x7bbf('0xc')],'VoiceQueueId':_0x24187b[_0x7bbf('0xd')],'CampaignId':_0x24187b[_0x7bbf('0xe')],'active':_0xaeca4b?undefined:!![]}},'log':_0x7bbf('0x1a')});};};exports[_0x7bbf('0x1b')]=function(_0x141fae){return function(){return client[_0x7bbf('0x3')](_0x7bbf('0x1c'),{'options':{'where':{'VoiceQueueId':_0x141fae['id']?_0x141fae['id']||null:null}},'log':_0x7bbf('0x1b')});};};exports[_0x7bbf('0x1d')]=function(_0x4d86c3){return function(){return client[_0x7bbf('0x3')](_0x7bbf('0x1e'),{'options':{'where':{'id':_0x4d86c3},'include':[{'model':_0x7bbf('0x4'),'as':'Contact'},{'model':_0x7bbf('0x1f'),'as':_0x7bbf('0x20'),'attributes':['id','name']},{'model':_0x7bbf('0x21'),'as':'Queue','attributes':['id','name']}],'raw':!![]},'log':_0x7bbf('0x6')});};};exports[_0x7bbf('0x22')]=function(_0x32761d,_0x4e1ba3,_0x39290c){return function(){return client[_0x7bbf('0x3')](_0x7bbf('0xb'),{'body':_0x32761d,'options':{'where':{'id':_0x4e1ba3},'limit':_0x39290c},'log':_0x7bbf('0xb')});};};exports[_0x7bbf('0x23')]=function(_0x498812,_0x4b7de7){return function(){return client[_0x7bbf('0x3')](_0x7bbf('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x498812,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x7bbf('0x8')](_0x7bbf('0x9'))},'UserId':{'$in':_0x4b7de7}},'order':[[_0x7bbf('0x12'),_0x7bbf('0x16')],[_0x7bbf('0x17'),_0x7bbf('0x16')],['id','ASC']],'include':[{'model':_0x7bbf('0x4'),'as':_0x7bbf('0x5')},{'model':_0x7bbf('0x1f'),'as':_0x7bbf('0x20'),'attributes':['id',_0x7bbf('0x25'),_0x7bbf('0x26')]}],'group':_0x7bbf('0x27'),'raw':!![]},'log':'GetContactDialer'});};};
\ No newline at end of file
+var _0xffa8=['db.CmHopper.UserId','moment','lodash','getContacts','Request','CmContact','Contact','updateContacts','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','DestroyCmHopper','getContactDialer','priority','DESC','scheduledat','ASC','GetContactDialer','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','getCmHopper','unlockContact','getContactRecallMe','voicePause'];(function(_0x23889c,_0x32dbfd){var _0x47f191=function(_0x42d299){while(--_0x42d299){_0x23889c['push'](_0x23889c['shift']());}};_0x47f191(++_0x32dbfd);}(_0xffa8,0x7c));var _0x8ffa=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xffa8[_0x397e5f];return _0x5302b8;};'use strict';var client=require('../client');var moment=require(_0x8ffa('0x0'));var _=require(_0x8ffa('0x1'));exports[_0x8ffa('0x2')]=function(_0x19f911,_0x463f0d){return function(){return client[_0x8ffa('0x3')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x19f911},'include':[{'model':_0x8ffa('0x4'),'as':_0x8ffa('0x5')}],'limit':_0x463f0d,'raw':![]},'log':'getCmHopper'});};};exports[_0x8ffa('0x6')]=function(_0x41cc41,_0x4668d0,_0x3d60c4){return function(){return client[_0x8ffa('0x3')](_0x8ffa('0x7'),{'body':_0x41cc41,'options':{'where':{'VoiceQueueId':_0x4668d0,'scheduledat':{'$lte':moment()[_0x8ffa('0x8')](_0x8ffa('0x9'))}},'limit':_0x3d60c4},'log':_0x8ffa('0x7')});};};exports[_0x8ffa('0xa')]=function(_0x4ece46){return function(){return client[_0x8ffa('0x3')]('UpdateCmHopper',{'body':_0x4ece46,'options':{'where':{'ContactId':_0x4ece46[_0x8ffa('0xb')],'ListId':_0x4ece46[_0x8ffa('0xc')],'VoiceQueueId':_0x4ece46[_0x8ffa('0xd')],'CampaignId':_0x4ece46[_0x8ffa('0xe')]}},'log':_0x8ffa('0xa')});};};exports['destroyContact']=function(_0x21a157,_0x444dab,_0x3ac36d){return function(){return client['Request']('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x21a157,'ListId':_0x444dab,'ContactId':_0x3ac36d}},'log':_0x8ffa('0xf')});};};exports[_0x8ffa('0x10')]=function(_0x26695b,_0x3f685e,_0x12ae07,_0x488cfa){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x26695b,'active':![],'scheduledat':{'$lte':moment()[_0x8ffa('0x8')](_0x8ffa('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x3f685e}}]},'order':[[_0x8ffa('0x11'),_0x8ffa('0x12')],[_0x8ffa('0x13'),_0x488cfa],['id',_0x8ffa('0x14')]],'raw':!![],'limit':_0x12ae07},'log':'GetContactDialer'});};};exports['getContactDialerIvr']=function(_0x45f816,_0xd79563,_0x97b728){return function(){return client[_0x8ffa('0x3')](_0x8ffa('0x15'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x45f816,'active':![],'scheduledat':{'$lte':moment()['format'](_0x8ffa('0x9'))}},'include':[{'model':_0x8ffa('0x4'),'as':_0x8ffa('0x5')}],'order':[[_0x8ffa('0x11'),_0x8ffa('0x12')],['scheduledat',_0x97b728],['id','ASC']],'raw':!![],'limit':_0xd79563},'log':_0x8ffa('0x16')});};};exports[_0x8ffa('0x17')]=function(_0x2ea2e3,_0x2d5c85){return function(){_0x2ea2e3[_0x8ffa('0x18')]=_0x2ea2e3[_0x8ffa('0x19')];return client[_0x8ffa('0x3')]('MoveContactManagedDialer',{'body':_0x2ea2e3,'options':{'where':{'ContactId':_0x2ea2e3[_0x8ffa('0xb')],'ListId':_0x2ea2e3[_0x8ffa('0xc')],'VoiceQueueId':_0x2ea2e3[_0x8ffa('0xd')],'CampaignId':_0x2ea2e3['CampaignId'],'active':_0x2d5c85?undefined:!![]}},'log':_0x8ffa('0x1a')});};};exports[_0x8ffa('0x1b')]=function(_0x3665e6){return function(){return client[_0x8ffa('0x3')](_0x8ffa('0x1c'),{'options':{'where':{'VoiceQueueId':_0x3665e6['id']?_0x3665e6['id']||null:null}},'log':'countReScheduled'});};};exports[_0x8ffa('0x1d')]=function(_0x22232d){return function(){return client[_0x8ffa('0x3')](_0x8ffa('0x1e'),{'options':{'where':{'id':_0x22232d},'include':[{'model':_0x8ffa('0x4'),'as':_0x8ffa('0x5')},{'model':_0x8ffa('0x1f'),'as':_0x8ffa('0x20'),'attributes':['id',_0x8ffa('0x21')]},{'model':_0x8ffa('0x22'),'as':_0x8ffa('0x23'),'attributes':['id',_0x8ffa('0x21')]}],'raw':!![]},'log':_0x8ffa('0x24')});};};exports[_0x8ffa('0x25')]=function(_0x310914,_0x318906,_0x3800cf){return function(){return client[_0x8ffa('0x3')](_0x8ffa('0x7'),{'body':_0x310914,'options':{'where':{'id':_0x318906},'limit':_0x3800cf},'log':_0x8ffa('0x7')});};};exports[_0x8ffa('0x26')]=function(_0x348432,_0x2fc6a2){return function(){return client[_0x8ffa('0x3')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x348432,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x8ffa('0x8')](_0x8ffa('0x9'))},'UserId':{'$in':_0x2fc6a2}},'order':[[_0x8ffa('0x11'),_0x8ffa('0x12')],[_0x8ffa('0x13'),_0x8ffa('0x12')],['id',_0x8ffa('0x14')]],'include':[{'model':_0x8ffa('0x4'),'as':_0x8ffa('0x5')},{'model':_0x8ffa('0x1f'),'as':_0x8ffa('0x20'),'attributes':['id','name',_0x8ffa('0x27')]}],'group':_0x8ffa('0x28'),'raw':!![]},'log':_0x8ffa('0x15')});};};
\ No newline at end of file
index 17916aa..5962be0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c81=['Contact','phone','../client','checkIsBlackList','Request','GetCmHopperBlack','checkIsBlackListIvr','CampaignId'];(function(_0x585306,_0x30c349){var _0x2ec430=function(_0x57f229){while(--_0x57f229){_0x585306['push'](_0x585306['shift']());}};_0x2ec430(++_0x30c349);}(_0x3c81,0x102));var _0x13c8=function(_0x161fbe,_0x393042){_0x161fbe=_0x161fbe-0x0;var _0x444b1b=_0x3c81[_0x161fbe];return _0x444b1b;};'use strict';var client=require(_0x13c8('0x0'));exports[_0x13c8('0x1')]=function(_0x48c35b){return function(){return client[_0x13c8('0x2')](_0x13c8('0x3'),{'options':{'where':{'VoiceQueueId':_0x48c35b['VoiceQueueId'],'phone':_0x48c35b['Contact']['phone']},'raw':![]},'log':'GetCmHopperBlack'});};};exports[_0x13c8('0x4')]=function(_0x3ec886){return function(){return client[_0x13c8('0x2')](_0x13c8('0x3'),{'options':{'where':{'CampaignId':_0x3ec886[_0x13c8('0x5')],'phone':_0x3ec886[_0x13c8('0x6')][_0x13c8('0x7')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
+var _0x0fd9=['GetCmHopperBlack','phone','checkIsBlackListIvr','checkIsBlackList','Request'];(function(_0x18bcf0,_0x3f41b4){var _0x52a3a8=function(_0x337f2c){while(--_0x337f2c){_0x18bcf0['push'](_0x18bcf0['shift']());}};_0x52a3a8(++_0x3f41b4);}(_0x0fd9,0xa3));var _0x90fd=function(_0x802997,_0x5534a2){_0x802997=_0x802997-0x0;var _0x35c641=_0x0fd9[_0x802997];return _0x35c641;};'use strict';var client=require('../client');exports[_0x90fd('0x0')]=function(_0x4380e6){return function(){return client[_0x90fd('0x1')](_0x90fd('0x2'),{'options':{'where':{'VoiceQueueId':_0x4380e6['VoiceQueueId'],'phone':_0x4380e6['Contact'][_0x90fd('0x3')]},'raw':![]},'log':_0x90fd('0x2')});};};exports[_0x90fd('0x4')]=function(_0x37a8be){return function(){return client[_0x90fd('0x1')](_0x90fd('0x2'),{'options':{'where':{'CampaignId':_0x37a8be['CampaignId'],'phone':_0x37a8be['Contact'][_0x90fd('0x3')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index 2b9c057..ae77099 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc292=['queue','Request','CreateCmHopperFinal','createContact','campaign'];(function(_0x3b660f,_0x45c3db){var _0x187a29=function(_0x11cedf){while(--_0x11cedf){_0x3b660f['push'](_0x3b660f['shift']());}};_0x187a29(++_0x45c3db);}(_0xc292,0x1c0));var _0x2c29=function(_0x2998db,_0x3424f1){_0x2998db=_0x2998db-0x0;var _0x115fea=_0xc292[_0x2998db];return _0x115fea;};'use strict';var client=require('../client');exports[_0x2c29('0x0')]=function(_0x3af512){return function(){_0x3af512[_0x2c29('0x1')]=_0x3af512[_0x2c29('0x2')];return client[_0x2c29('0x3')](_0x2c29('0x4'),{'body':_0x3af512,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0x2669=['queue','Request','../client','createContact','campaign'];(function(_0xeb31d6,_0x36dda8){var _0x2f7189=function(_0x5dd436){while(--_0x5dd436){_0xeb31d6['push'](_0xeb31d6['shift']());}};_0x2f7189(++_0x36dda8);}(_0x2669,0xfc));var _0x9266=function(_0x39ec06,_0xa5e032){_0x39ec06=_0x39ec06-0x0;var _0x43c12f=_0x2669[_0x39ec06];return _0x43c12f;};'use strict';var client=require(_0x9266('0x0'));exports[_0x9266('0x1')]=function(_0x17ae74){return function(){_0x17ae74[_0x9266('0x2')]=_0x17ae74[_0x9266('0x3')];return client[_0x9266('0x4')]('CreateCmHopperFinal',{'body':_0x17ae74,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
index 5b328fc..30960d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1e8=['getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','endOf','day','getCampaignHopperHistory','ivr','GetCampaignHopperHistory','../client','createHistory','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','minutes','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x176f6b,_0x38b1a5){var _0x3d3ce1=function(_0x1a4cb6){while(--_0x1a4cb6){_0x176f6b['push'](_0x176f6b['shift']());}};_0x3d3ce1(++_0x38b1a5);}(_0xa1e8,0x8d));var _0x8a1e=function(_0x4f41fb,_0x252161){_0x4f41fb=_0x4f41fb-0x0;var _0x333d7a=_0xa1e8[_0x4f41fb];return _0x333d7a;};'use strict';var client=require(_0x8a1e('0x0'));var moment=require('moment');exports[_0x8a1e('0x1')]=function(_0x1f4963){return function(){_0x1f4963[_0x8a1e('0x2')]=_0x1f4963[_0x8a1e('0x3')];return client[_0x8a1e('0x4')](_0x8a1e('0x5'),{'body':_0x1f4963,'log':_0x8a1e('0x5')});};};exports[_0x8a1e('0x6')]=function(_0x3023f3){return function(){return client[_0x8a1e('0x4')](_0x8a1e('0x7'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x3023f3,_0x8a1e('0x8'))[_0x8a1e('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['format'](_0x8a1e('0xa'))]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0x8a1e('0xb')]=function(_0x40bac3){return function(){return client['Request'](_0x8a1e('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x8a1e('0xd')]('day')[_0x8a1e('0x9')](_0x8a1e('0xa')),moment()[_0x8a1e('0xe')](_0x8a1e('0xf'))['format']('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x8a1e('0x3')},'raw':![]},'log':_0x8a1e('0xc')});};};exports[_0x8a1e('0x10')]=function(_0x279889){return function(){return client[_0x8a1e('0x4')]('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x8a1e('0xd')](_0x8a1e('0xf'))[_0x8a1e('0x9')](_0x8a1e('0xa')),moment()['endOf']('day')[_0x8a1e('0x9')](_0x8a1e('0xa'))]},'campaigntype':_0x8a1e('0x11')},'raw':![]},'log':_0x8a1e('0x12')});};};
\ No newline at end of file
+var _0x1bcc=['AvgHandleTime','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','day','GetVoiceQueueHopperHistory','getCampaignHopperHistory','GetCampaignHopperHistory','startOf','ivr','../client','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime'];(function(_0x57e00e,_0x36e79a){var _0x415e60=function(_0x5cd7fa){while(--_0x5cd7fa){_0x57e00e['push'](_0x57e00e['shift']());}};_0x415e60(++_0x36e79a);}(_0x1bcc,0xe8));var _0xc1bc=function(_0x11f1fd,_0xce95a8){_0x11f1fd=_0x11f1fd-0x0;var _0x2d1215=_0x1bcc[_0x11f1fd];return _0x2d1215;};'use strict';var client=require(_0xc1bc('0x0'));var moment=require('moment');exports['createHistory']=function(_0x4a7240){return function(){_0x4a7240[_0xc1bc('0x1')]=_0x4a7240[_0xc1bc('0x2')];return client[_0xc1bc('0x3')](_0xc1bc('0x4'),{'body':_0x4a7240,'log':_0xc1bc('0x4')});};};exports[_0xc1bc('0x5')]=function(_0x532fa0){return function(){return client['Request'](_0xc1bc('0x6'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x532fa0,_0xc1bc('0x7'))[_0xc1bc('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xc1bc('0x8')](_0xc1bc('0x9'))]}},'raw':![]},'log':_0xc1bc('0xa')});};};exports['getVoiceQueueHopperHistory']=function(_0x2fac41){return function(){return client[_0xc1bc('0x3')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0xc1bc('0xb'))[_0xc1bc('0x8')](_0xc1bc('0x9')),moment()['endOf'](_0xc1bc('0xb'))[_0xc1bc('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0xc1bc('0x2')},'raw':![]},'log':_0xc1bc('0xc')});};};exports[_0xc1bc('0xd')]=function(_0x5576db){return function(){return client['Request'](_0xc1bc('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xc1bc('0xf')](_0xc1bc('0xb'))[_0xc1bc('0x8')](_0xc1bc('0x9')),moment()['endOf']('day')[_0xc1bc('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0xc1bc('0x10')},'raw':![]},'log':_0xc1bc('0xe')});};};
\ No newline at end of file
index 599ba0e..e861120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e63=['description','ecm','headerinfo','localstationid','minrate','maxrate','modem','faxdetect','t38timeout','tech','ListId','key','Trunk','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','name'];(function(_0x478ed1,_0x343f87){var _0x246b6b=function(_0x2b389a){while(--_0x2b389a){_0x478ed1['push'](_0x478ed1['shift']());}};_0x246b6b(++_0x343f87);}(_0x9e63,0x65));var _0x39e6=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0x9e63[_0x3899d1];return _0xeb4a7d;};'use strict';var client=require(_0x39e6('0x0'));exports[_0x39e6('0x1')]=function(){return function(){return client[_0x39e6('0x2')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0x39e6('0x3'),_0x39e6('0x4'),_0x39e6('0x5'),_0x39e6('0x6'),_0x39e6('0x7'),_0x39e6('0x8'),_0x39e6('0x9'),_0x39e6('0xa'),'gateway',_0x39e6('0xb'),_0x39e6('0xc'),_0x39e6('0xd'),'TrunkId',_0x39e6('0xe'),_0x39e6('0xf')],'include':[{'model':'Trunk','as':_0x39e6('0x10'),'attributes':['id','name','callerid',_0x39e6('0x11')]}]},'log':_0x39e6('0x12')});};};exports[_0x39e6('0x13')]=function(_0x2d4acf,_0xdd06f0){return client['Request']('NotifyFaxAccount',{'account':{'id':_0x2d4acf},'body':_0xdd06f0,'log':_0x39e6('0x14')});};
\ No newline at end of file
+var _0xee87=['active','getFaxAccount','notify','getFaxAccounts','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','minrate','maxrate','gateway','t38timeout','tech','TrunkId','ListId','key'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0xee87,0x10d));var _0x7ee8=function(_0x31751f,_0x46a83e){_0x31751f=_0x31751f-0x0;var _0x3eed14=_0xee87[_0x31751f];return _0x3eed14;};'use strict';var client=require('../client');exports[_0x7ee8('0x0')]=function(){return function(){return client[_0x7ee8('0x1')](_0x7ee8('0x2'),{'options':{'raw':![],'attributes':['id',_0x7ee8('0x3'),_0x7ee8('0x4'),_0x7ee8('0x5'),_0x7ee8('0x6'),_0x7ee8('0x7'),_0x7ee8('0x8'),_0x7ee8('0x9'),'modem',_0x7ee8('0xa'),'faxdetect',_0x7ee8('0xb'),_0x7ee8('0xc'),_0x7ee8('0xd'),_0x7ee8('0xe'),_0x7ee8('0xf')],'include':[{'model':'Trunk','as':'Trunk','attributes':['id',_0x7ee8('0x3'),'callerid',_0x7ee8('0x10')]}]},'log':_0x7ee8('0x11')});};};exports[_0x7ee8('0x12')]=function(_0x2edb4a,_0x12af61){return client[_0x7ee8('0x1')]('NotifyFaxAccount',{'account':{'id':_0x2edb4a},'body':_0x12af61,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index cc01ff4..9f82fa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x555e=['UpdateFaxMessage','update'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x555e,0xe5));var _0xe555=function(_0x28854d,_0x279ef0){_0x28854d=_0x28854d-0x0;var _0x3a2291=_0x555e[_0x28854d];return _0x3a2291;};'use strict';var client=require('../client');exports[_0xe555('0x0')]=function(_0x34088d,_0x7494b4){return client['Request'](_0xe555('0x1'),{'body':_0x7494b4,'options':{'where':{'AttachmentId':_0x34088d}},'log':_0xe555('0x1')});};
\ No newline at end of file
+var _0x0af4=['Request','UpdateFaxMessage'];(function(_0x4ca745,_0x17763e){var _0x568cf5=function(_0x1cac0b){while(--_0x1cac0b){_0x4ca745['push'](_0x4ca745['shift']());}};_0x568cf5(++_0x17763e);}(_0x0af4,0x1c4));var _0x40af=function(_0x57a21a,_0x26b592){_0x57a21a=_0x57a21a-0x0;var _0x563f1b=_0x0af4[_0x57a21a];return _0x563f1b;};'use strict';var client=require('../client');exports['update']=function(_0x20f78b,_0x46059c){return client[_0x40af('0x0')](_0x40af('0x1'),{'body':_0x46059c,'options':{'where':{'AttachmentId':_0x20f78b}},'log':_0x40af('0x1')});};
\ No newline at end of file
index 92b0e2a..0dd8b52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16c3=['content','variableName','Variable','Descriptions','keyType','keyContent','Fields','nameField','customField','Tags','getDeskAccounts','Request','GetDeskAccount','username','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','name','DeskField','Subjects'];(function(_0x3aad05,_0x58ff83){var _0x26bc65=function(_0x5d0a56){while(--_0x5d0a56){_0x3aad05['push'](_0x3aad05['shift']());}};_0x26bc65(++_0x58ff83);}(_0x16c3,0x135));var _0x316c=function(_0xcbb721,_0x3ff842){_0xcbb721=_0xcbb721-0x0;var _0x434bdb=_0x16c3[_0xcbb721];return _0x434bdb;};'use strict';var client=require('../../client');exports[_0x316c('0x0')]=function(){return function(_0x25253a){return client[_0x316c('0x1')](_0x316c('0x2'),{'options':{'raw':![],'attributes':['id','name','description',_0x316c('0x3'),'password',_0x316c('0x4'),_0x316c('0x5'),_0x316c('0x6'),_0x316c('0x7')],'include':[{'model':_0x316c('0x8'),'as':_0x316c('0x9'),'attributes':['id',_0x316c('0xa')],'include':[{'model':_0x316c('0xb'),'as':_0x316c('0xc'),'attributes':['id',_0x316c('0x6'),_0x316c('0xd'),_0x316c('0xe')],'include':[{'model':_0x316c('0xf'),'as':_0x316c('0xf'),'attributes':['id',_0x316c('0xa')]}]},{'model':_0x316c('0xb'),'as':_0x316c('0x10'),'attributes':['id',_0x316c('0x6'),_0x316c('0xd'),'key',_0x316c('0x11'),_0x316c('0x12'),_0x316c('0xe')],'include':[{'model':_0x316c('0xf'),'as':_0x316c('0xf'),'attributes':['id','name']}]},{'model':_0x316c('0xb'),'as':_0x316c('0x13'),'attributes':['id',_0x316c('0x6'),_0x316c('0xd'),'idField',_0x316c('0x14'),_0x316c('0x15'),'variableName'],'include':[{'model':_0x316c('0xf'),'as':_0x316c('0xf'),'attributes':['id',_0x316c('0xa')]}]},{'model':'Tag','as':_0x316c('0x16'),'attributes':['id',_0x316c('0xa')]}]}]},'log':_0x316c('0x2')});};};
\ No newline at end of file
+var _0xc5af=['serverUrl','DeskConfiguration','Subjects','content','Variable','Descriptions','key','keyType','keyContent','variableName','Fields','idField','nameField','customField','Tag','Tags','../../client','getDeskAccounts','Request','GetDeskAccount','name','description','username','password','authType','type'];(function(_0x1a3f15,_0x5a3b76){var _0x34d4db=function(_0xab2fc5){while(--_0xab2fc5){_0x1a3f15['push'](_0x1a3f15['shift']());}};_0x34d4db(++_0x5a3b76);}(_0xc5af,0xfa));var _0xfc5a=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0xc5af[_0x2112d4];return _0x434972;};'use strict';var client=require(_0xfc5a('0x0'));exports[_0xfc5a('0x1')]=function(){return function(_0x20198e){return client[_0xfc5a('0x2')](_0xfc5a('0x3'),{'options':{'raw':![],'attributes':['id',_0xfc5a('0x4'),_0xfc5a('0x5'),_0xfc5a('0x6'),_0xfc5a('0x7'),'remoteUri',_0xfc5a('0x8'),_0xfc5a('0x9'),_0xfc5a('0xa')],'include':[{'model':_0xfc5a('0xb'),'as':'Configurations','attributes':['id',_0xfc5a('0x4')],'include':[{'model':'DeskField','as':_0xfc5a('0xc'),'attributes':['id',_0xfc5a('0x9'),_0xfc5a('0xd'),'variableName'],'include':[{'model':_0xfc5a('0xe'),'as':_0xfc5a('0xe'),'attributes':['id','name']}]},{'model':'DeskField','as':_0xfc5a('0xf'),'attributes':['id',_0xfc5a('0x9'),'content',_0xfc5a('0x10'),_0xfc5a('0x11'),_0xfc5a('0x12'),_0xfc5a('0x13')],'include':[{'model':_0xfc5a('0xe'),'as':_0xfc5a('0xe'),'attributes':['id',_0xfc5a('0x4')]}]},{'model':'DeskField','as':_0xfc5a('0x14'),'attributes':['id',_0xfc5a('0x9'),'content',_0xfc5a('0x15'),_0xfc5a('0x16'),_0xfc5a('0x17'),_0xfc5a('0x13')],'include':[{'model':_0xfc5a('0xe'),'as':_0xfc5a('0xe'),'attributes':['id','name']}]},{'model':_0xfc5a('0x18'),'as':_0xfc5a('0x19'),'attributes':['id',_0xfc5a('0x4')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
index fd51bc5..5b4ecce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa703=['getDynamics365Accounts','GetDynamics365Account','password','tenantId','clientId','serverUrl','description','Dynamics365Configuration','name','ticketType','Dynamics365Field','Subjects','type','content','Variable','Descriptions','key','keyType','keyContent','variableName','Fields','idField','nameField','customField','../../client'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0xa703,0x12b));var _0x3a70=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa703[_0x4c7fb5];return _0x2e10ac;};'use strict';var client=require(_0x3a70('0x0'));exports[_0x3a70('0x1')]=function(){return function(_0x542d1a){return client['Request'](_0x3a70('0x2'),{'options':{'raw':![],'attributes':['id','name','username',_0x3a70('0x3'),'remoteUri',_0x3a70('0x4'),_0x3a70('0x5'),'clientSecret',_0x3a70('0x6'),_0x3a70('0x7')],'include':[{'model':_0x3a70('0x8'),'as':'Configurations','attributes':['id',_0x3a70('0x9'),_0x3a70('0xa')],'include':[{'model':_0x3a70('0xb'),'as':_0x3a70('0xc'),'attributes':['id',_0x3a70('0xd'),_0x3a70('0xe'),'variableName'],'include':[{'model':_0x3a70('0xf'),'as':_0x3a70('0xf'),'attributes':['id',_0x3a70('0x9')]}]},{'model':_0x3a70('0xb'),'as':_0x3a70('0x10'),'attributes':['id',_0x3a70('0xd'),'content',_0x3a70('0x11'),_0x3a70('0x12'),_0x3a70('0x13'),_0x3a70('0x14')],'include':[{'model':'Variable','as':_0x3a70('0xf'),'attributes':['id',_0x3a70('0x9')]}]},{'model':'Dynamics365Field','as':_0x3a70('0x15'),'attributes':['id','type','content',_0x3a70('0x16'),_0x3a70('0x17'),_0x3a70('0x18'),_0x3a70('0x14')],'include':[{'model':'Variable','as':_0x3a70('0xf'),'attributes':['id','name']}]}]}]},'log':_0x3a70('0x2')});};};
\ No newline at end of file
+var _0x0f5f=['../../client','getDynamics365Accounts','Request','username','password','remoteUri','tenantId','clientId','serverUrl','Dynamics365Configuration','Configurations','name','ticketType','Subjects','type','Variable','Dynamics365Field','content','key','keyType','keyContent','idField','customField','variableName','GetDynamics365Account'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x0f5f,0xe1));var _0xf0f5=function(_0x43283d,_0x5dc2fd){_0x43283d=_0x43283d-0x0;var _0x1d7c3a=_0x0f5f[_0x43283d];return _0x1d7c3a;};'use strict';var client=require(_0xf0f5('0x0'));exports[_0xf0f5('0x1')]=function(){return function(_0x1f3545){return client[_0xf0f5('0x2')]('GetDynamics365Account',{'options':{'raw':![],'attributes':['id','name',_0xf0f5('0x3'),_0xf0f5('0x4'),_0xf0f5('0x5'),_0xf0f5('0x6'),_0xf0f5('0x7'),'clientSecret',_0xf0f5('0x8'),'description'],'include':[{'model':_0xf0f5('0x9'),'as':_0xf0f5('0xa'),'attributes':['id',_0xf0f5('0xb'),_0xf0f5('0xc')],'include':[{'model':'Dynamics365Field','as':_0xf0f5('0xd'),'attributes':['id',_0xf0f5('0xe'),'content','variableName'],'include':[{'model':_0xf0f5('0xf'),'as':_0xf0f5('0xf'),'attributes':['id',_0xf0f5('0xb')]}]},{'model':_0xf0f5('0x10'),'as':'Descriptions','attributes':['id',_0xf0f5('0xe'),_0xf0f5('0x11'),_0xf0f5('0x12'),_0xf0f5('0x13'),_0xf0f5('0x14'),'variableName'],'include':[{'model':_0xf0f5('0xf'),'as':_0xf0f5('0xf'),'attributes':['id',_0xf0f5('0xb')]}]},{'model':_0xf0f5('0x10'),'as':'Fields','attributes':['id',_0xf0f5('0xe'),_0xf0f5('0x11'),_0xf0f5('0x15'),'nameField',_0xf0f5('0x16'),_0xf0f5('0x17')],'include':[{'model':_0xf0f5('0xf'),'as':_0xf0f5('0xf'),'attributes':['id',_0xf0f5('0xb')]}]}]}]},'log':_0xf0f5('0x18')});};};
\ No newline at end of file
index 41f69cf..f6c265b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd10f=['FreshdeskConfiguration','Configurations','name','Tag','FreshdeskField','Subjects','type','variableName','Variable','Descriptions','keyType','keyContent','Fields','content','idField','nameField','customField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','username','apiKey'];(function(_0x18c0ca,_0x1f4c22){var _0x2e9c71=function(_0x42ab40){while(--_0x42ab40){_0x18c0ca['push'](_0x18c0ca['shift']());}};_0x2e9c71(++_0x1f4c22);}(_0xd10f,0x198));var _0xfd10=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xd10f[_0x5b644e];return _0x49c6bf;};'use strict';var client=require(_0xfd10('0x0'));exports[_0xfd10('0x1')]=function(){return function(_0xf78fea){return client[_0xfd10('0x2')](_0xfd10('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xfd10('0x4'),_0xfd10('0x5'),'remoteUri','serverUrl'],'include':[{'model':_0xfd10('0x6'),'as':_0xfd10('0x7'),'attributes':['id',_0xfd10('0x8')],'include':[{'model':_0xfd10('0x9'),'attributes':['id',_0xfd10('0x8')]},{'model':_0xfd10('0xa'),'as':_0xfd10('0xb'),'attributes':['id',_0xfd10('0xc'),'content',_0xfd10('0xd')],'include':[{'model':_0xfd10('0xe'),'as':'Variable','attributes':['id',_0xfd10('0x8')]}]},{'model':_0xfd10('0xa'),'as':_0xfd10('0xf'),'attributes':['id',_0xfd10('0xc'),'content','key',_0xfd10('0x10'),_0xfd10('0x11'),'variableName'],'include':[{'model':_0xfd10('0xe'),'as':_0xfd10('0xe'),'attributes':['id',_0xfd10('0x8')]}]},{'model':_0xfd10('0xa'),'as':_0xfd10('0x12'),'attributes':['id',_0xfd10('0xc'),_0xfd10('0x13'),_0xfd10('0x14'),_0xfd10('0x15'),_0xfd10('0x16'),_0xfd10('0xd')],'include':[{'model':_0xfd10('0xe'),'as':_0xfd10('0xe'),'attributes':['id',_0xfd10('0x8')]}]}]}]},'log':_0xfd10('0x3')});};};
\ No newline at end of file
+var _0x38d0=['key','keyType','keyContent','Fields','idField','nameField','getFreshdeskAccounts','Request','name','username','serverUrl','Configurations','FreshdeskField','Subjects','type','content','variableName','Variable','Descriptions'];(function(_0x253c11,_0x30efe4){var _0x2e5844=function(_0x3dcd41){while(--_0x3dcd41){_0x253c11['push'](_0x253c11['shift']());}};_0x2e5844(++_0x30efe4);}(_0x38d0,0x123));var _0x038d=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x38d0[_0x68c979];return _0x4f0001;};'use strict';var client=require('../../client');exports[_0x038d('0x0')]=function(){return function(_0x327d9d){return client[_0x038d('0x1')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x038d('0x2'),_0x038d('0x3'),'apiKey','remoteUri',_0x038d('0x4')],'include':[{'model':'FreshdeskConfiguration','as':_0x038d('0x5'),'attributes':['id',_0x038d('0x2')],'include':[{'model':'Tag','attributes':['id',_0x038d('0x2')]},{'model':_0x038d('0x6'),'as':_0x038d('0x7'),'attributes':['id',_0x038d('0x8'),_0x038d('0x9'),_0x038d('0xa')],'include':[{'model':_0x038d('0xb'),'as':_0x038d('0xb'),'attributes':['id',_0x038d('0x2')]}]},{'model':_0x038d('0x6'),'as':_0x038d('0xc'),'attributes':['id',_0x038d('0x8'),'content',_0x038d('0xd'),_0x038d('0xe'),_0x038d('0xf'),'variableName'],'include':[{'model':_0x038d('0xb'),'as':_0x038d('0xb'),'attributes':['id',_0x038d('0x2')]}]},{'model':_0x038d('0x6'),'as':_0x038d('0x10'),'attributes':['id',_0x038d('0x8'),_0x038d('0x9'),_0x038d('0x11'),_0x038d('0x12'),'customField','variableName'],'include':[{'model':'Variable','as':_0x038d('0xb'),'attributes':['id',_0x038d('0x2')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
index 6ee0504..1abe6f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbb1=['key','keyType','keyContent','variableName','name','../../client','GetFreshsalesAccount','apiKey','serverUrl','FreshsalesConfiguration','FreshsalesField','Subjects','type','content','Variable','Descriptions'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdbb1,0x105));var _0x1dbb=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xdbb1[_0x21549c];return _0x426cbd;};'use strict';var client=require(_0x1dbb('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x53f27d){return client['Request'](_0x1dbb('0x1'),{'options':{'raw':![],'attributes':['id','name','username',_0x1dbb('0x2'),'remoteUri',_0x1dbb('0x3')],'include':[{'model':_0x1dbb('0x4'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x1dbb('0x5'),'as':_0x1dbb('0x6'),'attributes':['id',_0x1dbb('0x7'),_0x1dbb('0x8'),'variableName'],'include':[{'model':_0x1dbb('0x9'),'as':_0x1dbb('0x9'),'attributes':['id','name']}]},{'model':_0x1dbb('0x5'),'as':_0x1dbb('0xa'),'attributes':['id',_0x1dbb('0x7'),_0x1dbb('0x8'),_0x1dbb('0xb'),_0x1dbb('0xc'),_0x1dbb('0xd'),_0x1dbb('0xe')],'include':[{'model':_0x1dbb('0x9'),'as':_0x1dbb('0x9'),'attributes':['id',_0x1dbb('0xf')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
+var _0x1224=['type','content','variableName','Variable','Descriptions','key','keyType','keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','apiKey','remoteUri','serverUrl','Configurations','FreshsalesField','Subjects'];(function(_0x189d3c,_0x5efebf){var _0x485959=function(_0x1161da){while(--_0x1161da){_0x189d3c['push'](_0x189d3c['shift']());}};_0x485959(++_0x5efebf);}(_0x1224,0x10d));var _0x4122=function(_0x383875,_0x45b02b){_0x383875=_0x383875-0x0;var _0x128fc2=_0x1224[_0x383875];return _0x128fc2;};'use strict';var client=require(_0x4122('0x0'));exports[_0x4122('0x1')]=function(){return function(_0x23c391){return client[_0x4122('0x2')](_0x4122('0x3'),{'options':{'raw':![],'attributes':['id',_0x4122('0x4'),'username',_0x4122('0x5'),_0x4122('0x6'),_0x4122('0x7')],'include':[{'model':'FreshsalesConfiguration','as':_0x4122('0x8'),'attributes':['id',_0x4122('0x4')],'include':[{'model':_0x4122('0x9'),'as':_0x4122('0xa'),'attributes':['id',_0x4122('0xb'),_0x4122('0xc'),_0x4122('0xd')],'include':[{'model':_0x4122('0xe'),'as':_0x4122('0xe'),'attributes':['id',_0x4122('0x4')]}]},{'model':_0x4122('0x9'),'as':_0x4122('0xf'),'attributes':['id',_0x4122('0xb'),_0x4122('0xc'),_0x4122('0x10'),_0x4122('0x11'),_0x4122('0x12'),_0x4122('0xd')],'include':[{'model':_0x4122('0xe'),'as':_0x4122('0xe'),'attributes':['id',_0x4122('0x4')]}]}]}]},'log':_0x4122('0x13')});};};
\ No newline at end of file
index 045b0cf..ce66f30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56bd=['type','SalesforceConfiguration','Configurations','moduleCreate','ticketType','leadId','additionalSearchAccount','SalesforceField','Subjects','Variable','Descriptions','Fields','GetSalesforceAccount','getSalesforceAccounts','Request','name','username','password','remoteUri','clientSecret','securityToken','serverUrl'];(function(_0x5bd8f8,_0xb864d7){var _0x51914f=function(_0x40859f){while(--_0x40859f){_0x5bd8f8['push'](_0x5bd8f8['shift']());}};_0x51914f(++_0xb864d7);}(_0x56bd,0xe9));var _0xd56b=function(_0x467c40,_0x201f83){_0x467c40=_0x467c40-0x0;var _0xa9b7ff=_0x56bd[_0x467c40];return _0xa9b7ff;};'use strict';var client=require('../../client');exports[_0xd56b('0x0')]=function(){return function(_0x2535c1){return client[_0xd56b('0x1')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0xd56b('0x2'),_0xd56b('0x3'),_0xd56b('0x4'),_0xd56b('0x5'),'clientId',_0xd56b('0x6'),_0xd56b('0x7'),_0xd56b('0x8'),_0xd56b('0x9')],'include':[{'model':_0xd56b('0xa'),'as':_0xd56b('0xb'),'attributes':['id',_0xd56b('0x2'),'moduleSearch',_0xd56b('0xc'),_0xd56b('0xd'),_0xd56b('0xe'),_0xd56b('0xf'),'additionalSearchContact','additionalSearchLead'],'include':[{'model':_0xd56b('0x10'),'as':_0xd56b('0x11'),'include':[{'model':'Variable','as':_0xd56b('0x12'),'attributes':['id',_0xd56b('0x2')]}]},{'model':_0xd56b('0x10'),'as':_0xd56b('0x13'),'include':[{'model':_0xd56b('0x12'),'as':_0xd56b('0x12'),'attributes':['id',_0xd56b('0x2')]}]},{'model':_0xd56b('0x10'),'as':_0xd56b('0x14'),'include':[{'model':_0xd56b('0x12'),'as':_0xd56b('0x12'),'attributes':['id',_0xd56b('0x2')]}]}]}]},'log':_0xd56b('0x15')});};};
\ No newline at end of file
+var _0xabad=['type','SalesforceConfiguration','Configurations','name','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','Fields','../../client','Request','GetSalesforceAccount','username','password','clientId','clientSecret','securityToken','serverUrl'];(function(_0x2508fd,_0xa8375b){var _0x3ce952=function(_0x168476){while(--_0x168476){_0x2508fd['push'](_0x2508fd['shift']());}};_0x3ce952(++_0xa8375b);}(_0xabad,0x150));var _0xdaba=function(_0x27889f,_0x4809b9){_0x27889f=_0x27889f-0x0;var _0x201713=_0xabad[_0x27889f];return _0x201713;};'use strict';var client=require(_0xdaba('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x251dba){return client[_0xdaba('0x1')](_0xdaba('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xdaba('0x3'),_0xdaba('0x4'),'remoteUri',_0xdaba('0x5'),_0xdaba('0x6'),_0xdaba('0x7'),_0xdaba('0x8'),_0xdaba('0x9')],'include':[{'model':_0xdaba('0xa'),'as':_0xdaba('0xb'),'attributes':['id',_0xdaba('0xc'),'moduleSearch',_0xdaba('0xd'),_0xdaba('0xe'),_0xdaba('0xf'),_0xdaba('0x10'),'additionalSearchContact',_0xdaba('0x11')],'include':[{'model':_0xdaba('0x12'),'as':_0xdaba('0x13'),'include':[{'model':_0xdaba('0x14'),'as':_0xdaba('0x14'),'attributes':['id',_0xdaba('0xc')]}]},{'model':_0xdaba('0x12'),'as':_0xdaba('0x15'),'include':[{'model':_0xdaba('0x14'),'as':'Variable','attributes':['id',_0xdaba('0xc')]}]},{'model':'SalesforceField','as':_0xdaba('0x16'),'include':[{'model':_0xdaba('0x14'),'as':_0xdaba('0x14'),'attributes':['id',_0xdaba('0xc')]}]}]}]},'log':_0xdaba('0x2')});};};
\ No newline at end of file
index d9f2932..68fda6e 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(_0x238f26,_0x317421){_0x238f26=_0x238f26-0x0;var _0x7798e7=_0xda19[_0x238f26];return _0x7798e7;};'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 _0xadb5=['keyContent','Fields','nameField','customField','GetServicenowkAccount','getServicenowAccounts','Request','GetServicenowAccount','name','username','password','email','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType'];(function(_0x36b484,_0x227e2a){var _0x4d8f18=function(_0x49e50c){while(--_0x49e50c){_0x36b484['push'](_0x36b484['shift']());}};_0x4d8f18(++_0x227e2a);}(_0xadb5,0xad));var _0x5adb=function(_0x24bcd7,_0x3a0c7e){_0x24bcd7=_0x24bcd7-0x0;var _0x473726=_0xadb5[_0x24bcd7];return _0x473726;};'use strict';var client=require('../../client');exports[_0x5adb('0x0')]=function(){return function(_0x49fc17){return client[_0x5adb('0x1')](_0x5adb('0x2'),{'options':{'raw':![],'attributes':['id',_0x5adb('0x3'),'description',_0x5adb('0x4'),_0x5adb('0x5'),_0x5adb('0x6'),'remoteUri',_0x5adb('0x7')],'include':[{'model':_0x5adb('0x8'),'as':_0x5adb('0x9'),'attributes':['id',_0x5adb('0x3')],'include':[{'model':_0x5adb('0xa'),'as':_0x5adb('0xb'),'attributes':['id',_0x5adb('0xc'),_0x5adb('0xd'),_0x5adb('0xe')],'include':[{'model':_0x5adb('0xf'),'as':_0x5adb('0xf'),'attributes':['id',_0x5adb('0x3')]}]},{'model':_0x5adb('0xa'),'as':_0x5adb('0x10'),'attributes':['id','type','content',_0x5adb('0x11'),_0x5adb('0x12'),_0x5adb('0x13'),'variableName'],'include':[{'model':_0x5adb('0xf'),'as':'Variable','attributes':['id',_0x5adb('0x3')]}]},{'model':'ServicenowField','as':_0x5adb('0x14'),'attributes':['id',_0x5adb('0xc'),_0x5adb('0xd'),'idField',_0x5adb('0x15'),_0x5adb('0x16'),_0x5adb('0xe')],'include':[{'model':'Variable','as':_0x5adb('0xf'),'attributes':['id','name']}]}]}]},'log':_0x5adb('0x17')});};};
\ No newline at end of file
index 9df65b3..59844c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['serverUrl','SugarcrmConfiguration','SugarcrmField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','remoteUri'];(function(_0x4a3acd,_0x5240e0){var _0x1c7a15=function(_0x56cb08){while(--_0x56cb08){_0x4a3acd['push'](_0x4a3acd['shift']());}};_0x1c7a15(++_0x5240e0);}(_0x1967,0x173));var _0x7196=function(_0x4c3aec,_0x4900e3){_0x4c3aec=_0x4c3aec-0x0;var _0x461d62=_0x1967[_0x4c3aec];return _0x461d62;};'use strict';var client=require('../../client');exports[_0x7196('0x0')]=function(){return function(_0xdb72bb){return client[_0x7196('0x1')](_0x7196('0x2'),{'options':{'raw':![],'attributes':['id',_0x7196('0x3'),_0x7196('0x4'),_0x7196('0x5'),_0x7196('0x6'),_0x7196('0x7')],'include':[{'model':_0x7196('0x8'),'as':'Configurations','attributes':['id',_0x7196('0x3')],'include':[{'model':_0x7196('0x9'),'as':_0x7196('0xa'),'attributes':['id',_0x7196('0xb'),_0x7196('0xc'),_0x7196('0xd')],'include':[{'model':'Variable','as':_0x7196('0xe'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0x9'),'as':_0x7196('0xf'),'attributes':['id',_0x7196('0xb'),'content','key',_0x7196('0x10'),_0x7196('0x11'),_0x7196('0xd')],'include':[{'model':_0x7196('0xe'),'as':_0x7196('0xe'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0x9'),'as':_0x7196('0x12'),'attributes':['id',_0x7196('0xb'),_0x7196('0xc'),_0x7196('0x13'),'nameField',_0x7196('0x14'),_0x7196('0xd')],'include':[{'model':_0x7196('0xe'),'as':_0x7196('0xe'),'attributes':['id','name']}]}]}]},'log':_0x7196('0x2')});};};
\ No newline at end of file
+var _0xda2d=['Subjects','type','content','variableName','Variable','key','keyType','keyContent','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','serverUrl','SugarcrmConfiguration','Configurations','SugarcrmField'];(function(_0x37ae2e,_0x35be3a){var _0x19c50f=function(_0x49732a){while(--_0x49732a){_0x37ae2e['push'](_0x37ae2e['shift']());}};_0x19c50f(++_0x35be3a);}(_0xda2d,0x102));var _0xdda2=function(_0x46c580,_0x39414a){_0x46c580=_0x46c580-0x0;var _0x396ff5=_0xda2d[_0x46c580];return _0x396ff5;};'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
index a6c69b5..6d61895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf105=['Variable','key','keyType','keyContent','Fields','idField','nameField','customField','variableName','../../client','Request','GetVtigerAccount','name','description','username','accessKey','serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content'];(function(_0x1b0bdb,_0x4040f5){var _0x2e0a48=function(_0x344c54){while(--_0x344c54){_0x1b0bdb['push'](_0x1b0bdb['shift']());}};_0x2e0a48(++_0x4040f5);}(_0xf105,0x134));var _0x5f10=function(_0x1635e9,_0x3588b3){_0x1635e9=_0x1635e9-0x0;var _0x33ed2a=_0xf105[_0x1635e9];return _0x33ed2a;};'use strict';var client=require(_0x5f10('0x0'));exports['getVtigerAccounts']=function(){return function(_0x54c124){return client[_0x5f10('0x1')](_0x5f10('0x2'),{'options':{'raw':![],'attributes':['id',_0x5f10('0x3'),_0x5f10('0x4'),_0x5f10('0x5'),_0x5f10('0x6'),'remoteUri',_0x5f10('0x7')],'include':[{'model':_0x5f10('0x8'),'as':_0x5f10('0x9'),'attributes':['id',_0x5f10('0x3')],'include':[{'model':_0x5f10('0xa'),'as':_0x5f10('0xb'),'attributes':['id',_0x5f10('0xc'),_0x5f10('0xd'),'variableName'],'include':[{'model':_0x5f10('0xe'),'as':_0x5f10('0xe'),'attributes':['id',_0x5f10('0x3')]}]},{'model':_0x5f10('0xa'),'as':'Descriptions','attributes':['id',_0x5f10('0xc'),_0x5f10('0xd'),_0x5f10('0xf'),_0x5f10('0x10'),_0x5f10('0x11'),'variableName'],'include':[{'model':'Variable','as':_0x5f10('0xe'),'attributes':['id','name']}]},{'model':_0x5f10('0xa'),'as':_0x5f10('0x12'),'attributes':['id',_0x5f10('0xc'),'content',_0x5f10('0x13'),_0x5f10('0x14'),_0x5f10('0x15'),_0x5f10('0x16')],'include':[{'model':'Variable','as':_0x5f10('0xe'),'attributes':['id',_0x5f10('0x3')]}]}]}]},'log':_0x5f10('0x2')});};};
\ No newline at end of file
+var _0x2c5c=['username','remoteUri','serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','nameField','customField','../../client','getVtigerAccounts','GetVtigerAccount','name'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x2c5c,0x80));var _0xc2c5=function(_0x36e37c,_0x234700){_0x36e37c=_0x36e37c-0x0;var _0x198565=_0x2c5c[_0x36e37c];return _0x198565;};'use strict';var client=require(_0xc2c5('0x0'));exports[_0xc2c5('0x1')]=function(){return function(_0x485793){return client['Request'](_0xc2c5('0x2'),{'options':{'raw':![],'attributes':['id',_0xc2c5('0x3'),'description',_0xc2c5('0x4'),'accessKey',_0xc2c5('0x5'),_0xc2c5('0x6')],'include':[{'model':_0xc2c5('0x7'),'as':_0xc2c5('0x8'),'attributes':['id',_0xc2c5('0x3')],'include':[{'model':_0xc2c5('0x9'),'as':_0xc2c5('0xa'),'attributes':['id',_0xc2c5('0xb'),_0xc2c5('0xc'),_0xc2c5('0xd')],'include':[{'model':_0xc2c5('0xe'),'as':_0xc2c5('0xe'),'attributes':['id',_0xc2c5('0x3')]}]},{'model':_0xc2c5('0x9'),'as':_0xc2c5('0xf'),'attributes':['id',_0xc2c5('0xb'),_0xc2c5('0xc'),'key',_0xc2c5('0x10'),_0xc2c5('0x11'),_0xc2c5('0xd')],'include':[{'model':_0xc2c5('0xe'),'as':'Variable','attributes':['id',_0xc2c5('0x3')]}]},{'model':_0xc2c5('0x9'),'as':_0xc2c5('0x12'),'attributes':['id',_0xc2c5('0xb'),'content',_0xc2c5('0x13'),_0xc2c5('0x14'),_0xc2c5('0x15'),_0xc2c5('0xd')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xc2c5('0x3')]}]}]}]},'log':_0xc2c5('0x2')});};};
\ No newline at end of file
index 2eeed16..ab508fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6923=['nameField','customField','../../client','getZendeskAccounts','GetZendeskAccount','username','password','token','authType','serverUrl','Configurations','name','Tag','ZendeskField','Subjects','type','variableName','Variable','Descriptions','content','keyType','Fields'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6923,0x162));var _0x3692=function(_0x2c9656,_0x54775e){_0x2c9656=_0x2c9656-0x0;var _0x4b5e75=_0x6923[_0x2c9656];return _0x4b5e75;};'use strict';var client=require(_0x3692('0x0'));exports[_0x3692('0x1')]=function(){return function(_0x4c872a){return client['Request'](_0x3692('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x3692('0x3'),_0x3692('0x4'),_0x3692('0x5'),'remoteUri',_0x3692('0x6'),_0x3692('0x7'),'type'],'include':[{'model':'ZendeskConfiguration','as':_0x3692('0x8'),'attributes':['id',_0x3692('0x9')],'include':[{'model':_0x3692('0xa'),'attributes':['id',_0x3692('0x9')]},{'model':_0x3692('0xb'),'as':_0x3692('0xc'),'attributes':['id',_0x3692('0xd'),'content',_0x3692('0xe')],'include':[{'model':_0x3692('0xf'),'as':_0x3692('0xf'),'attributes':['id','name']}]},{'model':_0x3692('0xb'),'as':_0x3692('0x10'),'attributes':['id','type',_0x3692('0x11'),'key',_0x3692('0x12'),'keyContent',_0x3692('0xe')],'include':[{'model':_0x3692('0xf'),'as':_0x3692('0xf'),'attributes':['id',_0x3692('0x9')]}]},{'model':_0x3692('0xb'),'as':_0x3692('0x13'),'attributes':['id','type',_0x3692('0x11'),'idField',_0x3692('0x14'),_0x3692('0x15'),_0x3692('0xe')],'include':[{'model':'Variable','as':_0x3692('0xf'),'attributes':['id',_0x3692('0x9')]}]}]}]},'log':_0x3692('0x2')});};};
\ No newline at end of file
+var _0xdd1e=['token','remoteUri','authType','serverUrl','ZendeskConfiguration','Configurations','Tag','Subjects','type','variableName','Variable','ZendeskField','Descriptions','content','key','keyContent','Fields','idField','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','password'];(function(_0x231a47,_0x46a963){var _0x48d7c9=function(_0x1e69b1){while(--_0x1e69b1){_0x231a47['push'](_0x231a47['shift']());}};_0x48d7c9(++_0x46a963);}(_0xdd1e,0xe4));var _0xedd1=function(_0x5ddfcf,_0x811639){_0x5ddfcf=_0x5ddfcf-0x0;var _0x4adf02=_0xdd1e[_0x5ddfcf];return _0x4adf02;};'use strict';var client=require(_0xedd1('0x0'));exports[_0xedd1('0x1')]=function(){return function(_0x25bf67){return client[_0xedd1('0x2')](_0xedd1('0x3'),{'options':{'raw':![],'attributes':['id',_0xedd1('0x4'),'username',_0xedd1('0x5'),_0xedd1('0x6'),_0xedd1('0x7'),_0xedd1('0x8'),_0xedd1('0x9'),'type'],'include':[{'model':_0xedd1('0xa'),'as':_0xedd1('0xb'),'attributes':['id',_0xedd1('0x4')],'include':[{'model':_0xedd1('0xc'),'attributes':['id',_0xedd1('0x4')]},{'model':'ZendeskField','as':_0xedd1('0xd'),'attributes':['id',_0xedd1('0xe'),'content',_0xedd1('0xf')],'include':[{'model':_0xedd1('0x10'),'as':_0xedd1('0x10'),'attributes':['id',_0xedd1('0x4')]}]},{'model':_0xedd1('0x11'),'as':_0xedd1('0x12'),'attributes':['id',_0xedd1('0xe'),_0xedd1('0x13'),_0xedd1('0x14'),'keyType',_0xedd1('0x15'),_0xedd1('0xf')],'include':[{'model':_0xedd1('0x10'),'as':_0xedd1('0x10'),'attributes':['id',_0xedd1('0x4')]}]},{'model':_0xedd1('0x11'),'as':_0xedd1('0x16'),'attributes':['id',_0xedd1('0xe'),_0xedd1('0x13'),_0xedd1('0x17'),_0xedd1('0x18'),_0xedd1('0x19'),_0xedd1('0xf')],'include':[{'model':_0xedd1('0x10'),'as':_0xedd1('0x10'),'attributes':['id',_0xedd1('0x4')]}]}]}]},'log':_0xedd1('0x3')});};};
\ No newline at end of file
index f892514..8ced6dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdf5=['ZohoConfiguration','Configurations','moduleCreate','ZohoField','type','content','variableName','Variable','keyType','keyContent','idField','nameField','../../client','getZohoAccounts','Request','GetZohoAccount','name','description','zone','clientId','serverUrl','refreshToken'];(function(_0x19d61a,_0x17bdf7){var _0xc03e90=function(_0x228466){while(--_0x228466){_0x19d61a['push'](_0x19d61a['shift']());}};_0xc03e90(++_0x17bdf7);}(_0xfdf5,0x1c4));var _0x5fdf=function(_0x21e05a,_0x51a593){_0x21e05a=_0x21e05a-0x0;var _0x577de8=_0xfdf5[_0x21e05a];return _0x577de8;};'use strict';var client=require(_0x5fdf('0x0'));exports[_0x5fdf('0x1')]=function(){return function(_0x3725a5){return client[_0x5fdf('0x2')](_0x5fdf('0x3'),{'options':{'raw':![],'attributes':['id',_0x5fdf('0x4'),_0x5fdf('0x5'),'host',_0x5fdf('0x6'),_0x5fdf('0x7'),'clientSecret',_0x5fdf('0x8'),'code',_0x5fdf('0x9')],'include':[{'model':_0x5fdf('0xa'),'as':_0x5fdf('0xb'),'attributes':['id','name',_0x5fdf('0xc'),'moduleSearch',_0x5fdf('0x5')],'include':[{'model':_0x5fdf('0xd'),'as':'Subjects','attributes':['id',_0x5fdf('0xe'),_0x5fdf('0xf'),_0x5fdf('0x10')],'include':[{'model':_0x5fdf('0x11'),'as':'Variable','attributes':['id','name']}]},{'model':'ZohoField','as':'Descriptions','attributes':['id',_0x5fdf('0xe'),'content','key',_0x5fdf('0x12'),_0x5fdf('0x13'),_0x5fdf('0x10')],'include':[{'model':_0x5fdf('0x11'),'as':_0x5fdf('0x11'),'attributes':['id',_0x5fdf('0x4')]}]},{'model':_0x5fdf('0xd'),'as':'Fields','attributes':['id',_0x5fdf('0xe'),_0x5fdf('0xf'),_0x5fdf('0x14'),_0x5fdf('0x15'),'customField','variableName'],'include':[{'model':_0x5fdf('0x11'),'as':_0x5fdf('0x11'),'attributes':['id',_0x5fdf('0x4')]}]}]}]},'log':_0x5fdf('0x3')});};};
\ No newline at end of file
+var _0xe6c9=['code','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','description','Subjects','type','variableName','Variable','Descriptions','content','key','keyType','keyContent','ZohoField','Fields','idField','nameField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','host','clientId','serverUrl'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xe6c9,0x1f0));var _0x9e6c=function(_0x1b78ed,_0x268a26){_0x1b78ed=_0x1b78ed-0x0;var _0x5df795=_0xe6c9[_0x1b78ed];return _0x5df795;};'use strict';var client=require(_0x9e6c('0x0'));exports[_0x9e6c('0x1')]=function(){return function(_0x44f676){return client[_0x9e6c('0x2')](_0x9e6c('0x3'),{'options':{'raw':![],'attributes':['id',_0x9e6c('0x4'),'description',_0x9e6c('0x5'),'zone',_0x9e6c('0x6'),'clientSecret',_0x9e6c('0x7'),_0x9e6c('0x8'),'refreshToken'],'include':[{'model':_0x9e6c('0x9'),'as':_0x9e6c('0xa'),'attributes':['id',_0x9e6c('0x4'),_0x9e6c('0xb'),_0x9e6c('0xc'),_0x9e6c('0xd')],'include':[{'model':'ZohoField','as':_0x9e6c('0xe'),'attributes':['id',_0x9e6c('0xf'),'content',_0x9e6c('0x10')],'include':[{'model':_0x9e6c('0x11'),'as':'Variable','attributes':['id',_0x9e6c('0x4')]}]},{'model':'ZohoField','as':_0x9e6c('0x12'),'attributes':['id','type',_0x9e6c('0x13'),_0x9e6c('0x14'),_0x9e6c('0x15'),_0x9e6c('0x16'),_0x9e6c('0x10')],'include':[{'model':'Variable','as':_0x9e6c('0x11'),'attributes':['id',_0x9e6c('0x4')]}]},{'model':_0x9e6c('0x17'),'as':_0x9e6c('0x18'),'attributes':['id',_0x9e6c('0xf'),_0x9e6c('0x13'),_0x9e6c('0x19'),_0x9e6c('0x1a'),_0x9e6c('0x1b'),_0x9e6c('0x10')],'include':[{'model':_0x9e6c('0x11'),'as':_0x9e6c('0x11'),'attributes':['id',_0x9e6c('0x4')]}]}]}]},'log':_0x9e6c('0x3')});};};
\ No newline at end of file
index bb7f09d..99521bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9769=['voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','diff','seconds','queue','agent','accountcode','membername','starttime','outbound','exten','uniqueid','CreateMemberReport','moment','lodash','util','../client','Request'];(function(_0x259a6f,_0x2696b1){var _0x191ecf=function(_0x2a4798){while(--_0x2a4798){_0x259a6f['push'](_0x259a6f['shift']());}};_0x191ecf(++_0x2696b1);}(_0x9769,0xa3));var _0x9976=function(_0x11fbd3,_0x25b4a2){_0x11fbd3=_0x11fbd3-0x0;var _0x42ce85=_0x9769[_0x11fbd3];return _0x42ce85;};'use strict';var moment=require(_0x9976('0x0'));var _=require(_0x9976('0x1'));var util=require(_0x9976('0x2'));var client=require(_0x9976('0x3'));exports['voiceQueueReport']=function(_0x5bcedc){var _0x566c11=_0x5bcedc['queuecallercompleteAt']||_0x5bcedc['queuecallerexitAt'];return client[_0x9976('0x4')]('CreateMemberReport',{'body':{'channel':_0x9976('0x5'),'membername':_0x5bcedc[_0x9976('0x6')],'interface':_[_0x9976('0x7')](_0x5bcedc[_0x9976('0x8')])?util[_0x9976('0x9')](_0x9976('0xa'),_0x5bcedc[_0x9976('0x6')]):_0x5bcedc[_0x9976('0x8')],'type':_0x9976('0xb'),'enterAt':_0x5bcedc[_0x9976('0xc')],'exitAt':_0x566c11,'duration':moment(_0x566c11)[_0x9976('0xd')](_0x5bcedc['queuecallerleaveAt'],_0x9976('0xe')),'data1':'inbound','data2':_0x5bcedc['calleridnum'],'data3':_0x5bcedc['exten'],'data4':null,'data5':_0x5bcedc[_0x9976('0xf')],'role':_0x9976('0x10'),'internal':_0x5bcedc[_0x9976('0x11')]?_['toNumber'](_0x5bcedc[_0x9976('0x11')]):undefined,'uniqueid':_0x5bcedc['uniqueid']},'log':'CreateMemberReport'});};exports['voiceDialReport']=function(_0x3f42f0){return client[_0x9976('0x4')]('CreateMemberReport',{'body':{'channel':_0x9976('0x5'),'membername':_0x3f42f0[_0x9976('0x12')],'interface':_0x3f42f0['interface'],'type':_0x9976('0xb'),'enterAt':_0x3f42f0[_0x9976('0x13')],'exitAt':_0x3f42f0['endtime'],'duration':moment(_0x3f42f0['endtime'])[_0x9976('0xd')](_0x3f42f0[_0x9976('0x13')],_0x9976('0xe'))>=0x0?moment(_0x3f42f0['endtime'])[_0x9976('0xd')](_0x3f42f0[_0x9976('0x13')],_0x9976('0xe')):null,'data1':_0x9976('0x14'),'data2':_0x3f42f0[_0x9976('0x11')],'data3':_0x3f42f0[_0x9976('0x15')],'data4':_0x3f42f0['dialstring']||null,'role':_0x9976('0x10'),'internal':_0x3f42f0[_0x9976('0x11')]?_['toNumber'](_0x3f42f0[_0x9976('0x11')]):undefined,'uniqueid':_0x3f42f0[_0x9976('0x16')]},'log':_0x9976('0x17')});};
\ No newline at end of file
+var _0x71bc=['inbound','exten','queue','agent','accountcode','toNumber','uniqueid','voiceDialReport','membername','starttime','endtime','seconds','outbound','dialstring','moment','lodash','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','diff','queuecallerleaveAt'];(function(_0x47d493,_0x3bedfb){var _0x50242a=function(_0x473bd6){while(--_0x473bd6){_0x47d493['push'](_0x47d493['shift']());}};_0x50242a(++_0x3bedfb);}(_0x71bc,0x1df));var _0xc71b=function(_0x47b0db,_0x50b794){_0x47b0db=_0x47b0db-0x0;var _0x189b90=_0x71bc[_0x47b0db];return _0x189b90;};'use strict';var moment=require(_0xc71b('0x0'));var _=require(_0xc71b('0x1'));var util=require('util');var client=require(_0xc71b('0x2'));exports[_0xc71b('0x3')]=function(_0x542e07){var _0x5d8e71=_0x542e07[_0xc71b('0x4')]||_0x542e07[_0xc71b('0x5')];return client[_0xc71b('0x6')](_0xc71b('0x7'),{'body':{'channel':_0xc71b('0x8'),'membername':_0x542e07[_0xc71b('0x9')],'interface':_[_0xc71b('0xa')](_0x542e07[_0xc71b('0xb')])?util[_0xc71b('0xc')](_0xc71b('0xd'),_0x542e07['lastAssignedTo']):_0x542e07[_0xc71b('0xb')],'type':_0xc71b('0xe'),'enterAt':_0x542e07['queuecallerleaveAt'],'exitAt':_0x5d8e71,'duration':moment(_0x5d8e71)[_0xc71b('0xf')](_0x542e07[_0xc71b('0x10')],'seconds'),'data1':_0xc71b('0x11'),'data2':_0x542e07['calleridnum'],'data3':_0x542e07[_0xc71b('0x12')],'data4':null,'data5':_0x542e07[_0xc71b('0x13')],'role':_0xc71b('0x14'),'internal':_0x542e07[_0xc71b('0x15')]?_[_0xc71b('0x16')](_0x542e07[_0xc71b('0x15')]):undefined,'uniqueid':_0x542e07[_0xc71b('0x17')]},'log':_0xc71b('0x7')});};exports[_0xc71b('0x18')]=function(_0x440491){return client[_0xc71b('0x6')](_0xc71b('0x7'),{'body':{'channel':_0xc71b('0x8'),'membername':_0x440491[_0xc71b('0x19')],'interface':_0x440491[_0xc71b('0xb')],'type':_0xc71b('0xe'),'enterAt':_0x440491[_0xc71b('0x1a')],'exitAt':_0x440491[_0xc71b('0x1b')],'duration':moment(_0x440491[_0xc71b('0x1b')])[_0xc71b('0xf')](_0x440491[_0xc71b('0x1a')],_0xc71b('0x1c'))>=0x0?moment(_0x440491[_0xc71b('0x1b')])[_0xc71b('0xf')](_0x440491['starttime'],_0xc71b('0x1c')):null,'data1':_0xc71b('0x1d'),'data2':_0x440491[_0xc71b('0x15')],'data3':_0x440491[_0xc71b('0x12')],'data4':_0x440491[_0xc71b('0x1e')]||null,'role':_0xc71b('0x14'),'internal':_0x440491[_0xc71b('0x15')]?_[_0xc71b('0x16')](_0x440491[_0xc71b('0x15')]):undefined,'uniqueid':_0x440491[_0xc71b('0x17')]},'log':_0xc71b('0x7')});};
\ No newline at end of file
index 37e76bd..b2e7849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91ff=['stopRecordingOnTransfer','Request'];(function(_0x27fd7d,_0x753c58){var _0x10bfde=function(_0x3032a2){while(--_0x3032a2){_0x27fd7d['push'](_0x27fd7d['shift']());}};_0x10bfde(++_0x753c58);}(_0x91ff,0x15b));var _0xf91f=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0x91ff[_0x34843e];return _0x598f7f;};'use strict';var client=require('../client');exports['getSettings']=function(){return client[_0xf91f('0x0')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xf91f('0x1')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0xc7a7=['getSettings','Request','stopRecordingOnTransfer','GetSettings','../client'];(function(_0x3dfea6,_0x5cd685){var _0x567aca=function(_0x100a5f){while(--_0x100a5f){_0x3dfea6['push'](_0x3dfea6['shift']());}};_0x567aca(++_0x5cd685);}(_0xc7a7,0x171));var _0x7c7a=function(_0x3f575f,_0x21395a){_0x3f575f=_0x3f575f-0x0;var _0x2c6d28=_0xc7a7[_0x3f575f];return _0x2c6d28;};'use strict';var client=require(_0x7c7a('0x0'));exports[_0x7c7a('0x1')]=function(){return client[_0x7c7a('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x7c7a('0x3')]},'log':_0x7c7a('0x4')});};
\ No newline at end of file
index 883192b..65559b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc113=['html','../client','getTemplates','Request','GetTemplate','name'];(function(_0x5a78d9,_0x4d2108){var _0x5b1b0f=function(_0x3cc522){while(--_0x3cc522){_0x5a78d9['push'](_0x5a78d9['shift']());}};_0x5b1b0f(++_0x4d2108);}(_0xc113,0x1ab));var _0x3c11=function(_0x575bf9,_0x5298fe){_0x575bf9=_0x575bf9-0x0;var _0x4ec71f=_0xc113[_0x575bf9];return _0x4ec71f;};'use strict';var client=require(_0x3c11('0x0'));exports[_0x3c11('0x1')]=function(_0x38620a){return function(_0x35905c){return client[_0x3c11('0x2')](_0x3c11('0x3'),{'options':{'raw':!![],'attributes':['id',_0x3c11('0x4'),_0x3c11('0x5')]},'log':_0x3c11('0x3')});};};
\ No newline at end of file
+var _0xf603=['html','../client','getTemplates','Request','GetTemplate','name'];(function(_0x487aac,_0x21a413){var _0xa2a676=function(_0x3ad73f){while(--_0x3ad73f){_0x487aac['push'](_0x487aac['shift']());}};_0xa2a676(++_0x21a413);}(_0xf603,0xeb));var _0x3f60=function(_0xa069a6,_0x9f76ff){_0xa069a6=_0xa069a6-0x0;var _0x5794c0=_0xf603[_0xa069a6];return _0x5794c0;};'use strict';var client=require(_0x3f60('0x0'));exports[_0x3f60('0x1')]=function(_0x2352b6){return function(_0x5a9fe7){return client[_0x3f60('0x2')](_0x3f60('0x3'),{'options':{'raw':!![],'attributes':['id',_0x3f60('0x4'),_0x3f60('0x5')]},'log':_0x3f60('0x3')});};};
\ No newline at end of file
index 98330bd..0e4e3cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9a0=['Condition','AllConditions','field','operator','AnyConditions','value','Actions','action','data1','data2','data3','data6','getTriggers','Request','GetTrigger','name','status'];(function(_0x1a416d,_0x6b32fe){var _0x1e3acf=function(_0xee395c){while(--_0xee395c){_0x1a416d['push'](_0x1a416d['shift']());}};_0x1e3acf(++_0x6b32fe);}(_0xc9a0,0x10b));var _0x0c9a=function(_0x41d961,_0x58911d){_0x41d961=_0x41d961-0x0;var _0x1d200c=_0xc9a0[_0x41d961];return _0x1d200c;};'use strict';var client=require('../client');exports[_0x0c9a('0x0')]=function(_0xa2e11a){return function(_0x39451f){return client[_0x0c9a('0x1')](_0x0c9a('0x2'),{'options':{'raw':![],'attributes':['id',_0x0c9a('0x3'),'channel',_0x0c9a('0x4')],'include':[{'model':_0x0c9a('0x5'),'as':_0x0c9a('0x6'),'attributes':['id',_0x0c9a('0x7'),_0x0c9a('0x8'),'value']},{'model':'Condition','as':_0x0c9a('0x9'),'attributes':['id','field','operator',_0x0c9a('0xa')]},{'model':'Action','as':_0x0c9a('0xb'),'attributes':['id',_0x0c9a('0xc'),_0x0c9a('0xd'),_0x0c9a('0xe'),_0x0c9a('0xf'),'data4','data5',_0x0c9a('0x10'),'data7']}]},'log':_0x0c9a('0x2')});};};
\ No newline at end of file
+var _0x3c9a=['status','field','Condition','AnyConditions','operator','value','Actions','data1','data3','data4','data6','data7','../client','name'];(function(_0x4eb8e1,_0x52fb85){var _0x3a9f0a=function(_0x3b07fe){while(--_0x3b07fe){_0x4eb8e1['push'](_0x4eb8e1['shift']());}};_0x3a9f0a(++_0x52fb85);}(_0x3c9a,0x15c));var _0xa3c9=function(_0x2e09cf,_0x3e042f){_0x2e09cf=_0x2e09cf-0x0;var _0x251a4f=_0x3c9a[_0x2e09cf];return _0x251a4f;};'use strict';var client=require(_0xa3c9('0x0'));exports['getTriggers']=function(_0x4641a6){return function(_0x3e28f7){return client['Request']('GetTrigger',{'options':{'raw':![],'attributes':['id',_0xa3c9('0x1'),'channel',_0xa3c9('0x2')],'include':[{'model':'Condition','as':'AllConditions','attributes':['id',_0xa3c9('0x3'),'operator','value']},{'model':_0xa3c9('0x4'),'as':_0xa3c9('0x5'),'attributes':['id','field',_0xa3c9('0x6'),_0xa3c9('0x7')]},{'model':'Action','as':_0xa3c9('0x8'),'attributes':['id','action',_0xa3c9('0x9'),'data2',_0xa3c9('0xa'),_0xa3c9('0xb'),'data5',_0xa3c9('0xc'),_0xa3c9('0xd')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
index f84cb06..2144672 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaeab=['defaultuser','../client','Request','GetTrunk','name','registry'];(function(_0x556e75,_0x11a6ee){var _0x18f6e9=function(_0x6e3610){while(--_0x6e3610){_0x556e75['push'](_0x556e75['shift']());}};_0x18f6e9(++_0x11a6ee);}(_0xaeab,0x91));var _0xbaea=function(_0x41c15d,_0x25e188){_0x41c15d=_0x41c15d-0x0;var _0x5c5953=_0xaeab[_0x41c15d];return _0x5c5953;};'use strict';var client=require(_0xbaea('0x0'));exports['getTrunks']=function(_0x4aa896){return function(_0x5e8f3a){return client[_0xbaea('0x1')](_0xbaea('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xbaea('0x3'),_0xbaea('0x4'),_0xbaea('0x5')]},'log':_0xbaea('0x2')});};};
\ No newline at end of file
+var _0x3c48=['Request','GetTrunk','name','../client','getTrunks'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3c48,0x152));var _0x83c4=function(_0x1451f3,_0x441da9){_0x1451f3=_0x1451f3-0x0;var _0x232596=_0x3c48[_0x1451f3];return _0x232596;};'use strict';var client=require(_0x83c4('0x0'));exports[_0x83c4('0x1')]=function(_0x1cf8c4){return function(_0x96234b){return client[_0x83c4('0x2')](_0x83c4('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x83c4('0x4'),'registry','defaultuser']},'log':_0x83c4('0x3')});};};
\ No newline at end of file
index 07c5a32..9224585 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['agent','lastPauseAt','interface','../client','getAgents','Request','name','accountcode','fullname','online','lastLoginAt','pauseType','voicePause','phone','mobile','getTelephones','telephone','internal','savePause','PauseUser','saveUnpause','UnpauseUser','getAgent','ShowUser'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'lastPauseAt',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'interface']},'log':'getAgents'});};};exports[_0x0a9e('0xc')]=function(){return function(){return client['Request']('GetUser',{'options':{'raw':!![],'where':{'role':_0x0a9e('0xd')},'attributes':['id',_0x0a9e('0x3'),_0x0a9e('0x4'),_0x0a9e('0xe')]},'log':_0x0a9e('0xc')});};};exports[_0x0a9e('0xf')]=function(_0x4a4c56,_0x50dfb2,_0x527cdd){return client['Request'](_0x0a9e('0x10'),{'body':{'type':_0x50dfb2,'uniqueid':_0x527cdd},'options':{'where':{'id':_0x4a4c56['id']}},'log':_0x0a9e('0xf')});};exports[_0x0a9e('0x11')]=function(_0x26d672){return client[_0x0a9e('0x2')](_0x0a9e('0x12'),{'body':{},'options':{'where':{'id':_0x26d672['id']}},'log':'savePause'});};exports[_0x0a9e('0x13')]=function(_0x239b12){return client[_0x0a9e('0x2')](_0x0a9e('0x14'),{'options':{'raw':![],'where':{'role':_0x0a9e('0x15'),'id':_0x239b12},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),'fullname',_0x0a9e('0x6'),'lastLoginAt',_0x0a9e('0x8'),_0x0a9e('0x16'),'voicePause',_0x0a9e('0x17')]},'log':'getAgent'});};
\ No newline at end of file
+var _0x70e0=['getAgents','Request','name','email','accountcode','fullname','lastLoginAt','lastPauseAt','interface','getTelephones','GetUser','telephone','savePause','PauseUser','saveUnpause','getAgent','agent','online','pauseType','../client'];(function(_0xe7cf68,_0x205ead){var _0xc4b175=function(_0x312901){while(--_0x312901){_0xe7cf68['push'](_0xe7cf68['shift']());}};_0xc4b175(++_0x205ead);}(_0x70e0,0x17b));var _0x070e=function(_0x3f2713,_0x2c2a39){_0x3f2713=_0x3f2713-0x0;var _0x5b1fd8=_0x70e0[_0x3f2713];return _0x5b1fd8;};'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
index 2bb3373..921423a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x575a=['Request','update','UpdateVoiceAgentReport','../client','create'];(function(_0x4da078,_0x236aa5){var _0x582a1b=function(_0x1959b1){while(--_0x1959b1){_0x4da078['push'](_0x4da078['shift']());}};_0x582a1b(++_0x236aa5);}(_0x575a,0x1ca));var _0xa575=function(_0x5f0501,_0x19196e){_0x5f0501=_0x5f0501-0x0;var _0x3c2c45=_0x575a[_0x5f0501];return _0x3c2c45;};'use strict';var client=require(_0xa575('0x0'));exports[_0xa575('0x1')]=function(_0x3c209b){return client[_0xa575('0x2')]('CreateVoiceAgentReport',{'body':_0x3c209b,'log':'CreateVoiceAgentReport'});};exports[_0xa575('0x3')]=function(_0x274614,_0x50f5aa,_0x94a0c3){return client['Request'](_0xa575('0x4'),{'body':_0x274614,'options':{'where':{'uniqueid':_0x50f5aa,'interface':_0x94a0c3,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0x338b=['Request','UpdateVoiceAgentReport','../client','create','CreateVoiceAgentReport','update'];(function(_0x1d8ac4,_0x5bd597){var _0x17d3de=function(_0x3a93e0){while(--_0x3a93e0){_0x1d8ac4['push'](_0x1d8ac4['shift']());}};_0x17d3de(++_0x5bd597);}(_0x338b,0xb6));var _0xb338=function(_0x3b17c0,_0xa2595){_0x3b17c0=_0x3b17c0-0x0;var _0x2df069=_0x338b[_0x3b17c0];return _0x2df069;};'use strict';var client=require(_0xb338('0x0'));exports[_0xb338('0x1')]=function(_0x177193){return client['Request'](_0xb338('0x2'),{'body':_0x177193,'log':_0xb338('0x2')});};exports[_0xb338('0x3')]=function(_0x53ea85,_0x4327c3,_0x534b9d){return client[_0xb338('0x4')](_0xb338('0x5'),{'body':_0x53ea85,'options':{'where':{'uniqueid':_0x4327c3,'interface':_0x534b9d,'agentcomplete':!![]}},'log':_0xb338('0x5')});};
\ No newline at end of file
index f6046ba..e7d38d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1504=['YYYY-MM-DD\x20HH:mm:ss','billableseconds','GetVoiceCallReports','util','lodash','../client','merge','context','CreateVoiceCallReport','getVoiceCallReports','Request','GetVoiceCallReport','outbound','day','format'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x1504,0x7b));var _0x4150=function(_0x1ff804,_0x263135){_0x1ff804=_0x1ff804-0x0;var _0x3454b8=_0x1504[_0x1ff804];return _0x3454b8;};'use strict';var moment=require('moment');var util=require(_0x4150('0x0'));var _=require(_0x4150('0x1'));var client=require(_0x4150('0x2'));exports['create']=function(_0x54b180){return client['Request']('CreateVoiceCallReport',{'body':_[_0x4150('0x3')](_0x54b180,{'source':_0x54b180['calleridnum'],'destinationcontext':_0x54b180[_0x4150('0x4')],'callerid':_0x54b180['callerid'],'amaflags':'DOCUMENTATION'}),'log':_0x4150('0x5')});};exports[_0x4150('0x6')]=function(){return function(){return client[_0x4150('0x7')](_0x4150('0x8'),{'options':{'where':{'type':[_0x4150('0x9')],'createdAt':{'$between':[moment()['startOf'](_0x4150('0xa'))[_0x4150('0xb')](_0x4150('0xc')),moment()['endOf']('day')[_0x4150('0xb')](_0x4150('0xc'))]}},'attributes':['type','disposition','duration',_0x4150('0xd')]},'log':_0x4150('0xe')});};};
\ No newline at end of file
+var _0xe60d=['CreateVoiceCallReport','merge','calleridnum','context','callerid','getVoiceCallReports','Request','GetVoiceCallReport','outbound','day','endOf','format','YYYY-MM-DD\x20HH:mm:ss','type','GetVoiceCallReports','moment','util','lodash','../client','create'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0xe60d,0xaf));var _0xde60=function(_0x37a3bd,_0x14bc19){_0x37a3bd=_0x37a3bd-0x0;var _0x40811d=_0xe60d[_0x37a3bd];return _0x40811d;};'use strict';var moment=require(_0xde60('0x0'));var util=require(_0xde60('0x1'));var _=require(_0xde60('0x2'));var client=require(_0xde60('0x3'));exports[_0xde60('0x4')]=function(_0x540fd8){return client['Request'](_0xde60('0x5'),{'body':_[_0xde60('0x6')](_0x540fd8,{'source':_0x540fd8[_0xde60('0x7')],'destinationcontext':_0x540fd8[_0xde60('0x8')],'callerid':_0x540fd8[_0xde60('0x9')],'amaflags':'DOCUMENTATION'}),'log':_0xde60('0x5')});};exports[_0xde60('0xa')]=function(){return function(){return client[_0xde60('0xb')](_0xde60('0xc'),{'options':{'where':{'type':[_0xde60('0xd')],'createdAt':{'$between':[moment()['startOf'](_0xde60('0xe'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xde60('0xf')](_0xde60('0xe'))[_0xde60('0x10')](_0xde60('0x11'))]}},'attributes':[_0xde60('0x12'),'disposition','duration','billableseconds']},'log':_0xde60('0x13')});};};
\ No newline at end of file
index e868138..7aa0931 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x609b=['CreateVoiceDialReport','../client','create'];(function(_0x56ee80,_0x484051){var _0x4a6381=function(_0x28b3fa){while(--_0x28b3fa){_0x56ee80['push'](_0x56ee80['shift']());}};_0x4a6381(++_0x484051);}(_0x609b,0x1d5));var _0xb609=function(_0xae460,_0x95fb98){_0xae460=_0xae460-0x0;var _0x512da4=_0x609b[_0xae460];return _0x512da4;};'use strict';var client=require(_0xb609('0x0'));exports[_0xb609('0x1')]=function(_0xd07a7){return client['Request'](_0xb609('0x2'),{'body':_0xd07a7,'log':_0xb609('0x2')});};
\ No newline at end of file
+var _0x2bd4=['create','Request','CreateVoiceDialReport','../client'];(function(_0x9a0d0b,_0x40512d){var _0x4d33bc=function(_0x27270f){while(--_0x27270f){_0x9a0d0b['push'](_0x9a0d0b['shift']());}};_0x4d33bc(++_0x40512d);}(_0x2bd4,0x153));var _0x42bd=function(_0x43189b,_0x3a1bce){_0x43189b=_0x43189b-0x0;var _0x232f64=_0x2bd4[_0x43189b];return _0x232f64;};'use strict';var client=require(_0x42bd('0x0'));exports[_0x42bd('0x1')]=function(_0x4539e3){return client[_0x42bd('0x2')](_0x42bd('0x3'),{'body':_0x4539e3,'log':_0x42bd('0x3')});};
\ No newline at end of file
index e724a38..85c6a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9086=['exten','recordingFormat','../client','getVoiceExtensions','GetVoiceExtension'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x9086,0x10b));var _0x6908=function(_0x35f035,_0x4e66c6){_0x35f035=_0x35f035-0x0;var _0x1b4ef3=_0x9086[_0x35f035];return _0x1b4ef3;};'use strict';var client=require(_0x6908('0x0'));exports[_0x6908('0x1')]=function(){return function(){return client['Request'](_0x6908('0x2'),{'options':{'raw':!![],'attributes':['id',_0x6908('0x3'),_0x6908('0x4')],'where':{'VoiceExtensionId':null}},'log':_0x6908('0x1')});};};
\ No newline at end of file
+var _0x823c=['Request','GetVoiceExtension','exten','recordingFormat','getVoiceExtensions','../client'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x823c,0x143));var _0xc823=function(_0x3423b7,_0x219a86){_0x3423b7=_0x3423b7-0x0;var _0x4310da=_0x823c[_0x3423b7];return _0x4310da;};'use strict';var client=require(_0xc823('0x0'));exports['getVoiceExtensions']=function(){return function(){return client[_0xc823('0x1')](_0xc823('0x2'),{'options':{'raw':!![],'attributes':['id',_0xc823('0x3'),_0xc823('0x4')],'where':{'VoiceExtensionId':null}},'log':_0xc823('0x5')});};};
\ No newline at end of file
index f4d3c64..2098bb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1035=['dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','callerid','active','Pause','TrunkBackup','Interval','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialQueueOptions','dialQueueProject','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','strategy','dialRandomLastDigitCallerIdNumber','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency'];(function(_0x1b1a3b,_0x52a88a){var _0x385347=function(_0x4ca60a){while(--_0x4ca60a){_0x1b1a3b['push'](_0x1b1a3b['shift']());}};_0x385347(++_0x52a88a);}(_0x1035,0x1c8));var _0x5103=function(_0x12aaee,_0x5bf50c){_0x12aaee=_0x12aaee-0x0;var _0x37c350=_0x1035[_0x12aaee];return _0x37c350;};'use strict';var client=require(_0x5103('0x0'));exports[_0x5103('0x1')]=function(){return function(){return client[_0x5103('0x2')](_0x5103('0x3'),{'options':{'raw':![],'attributes':['id',_0x5103('0x4'),_0x5103('0x5'),_0x5103('0x6'),_0x5103('0x7'),_0x5103('0x8'),_0x5103('0x9'),_0x5103('0xa'),_0x5103('0xb'),_0x5103('0xc'),_0x5103('0xd'),_0x5103('0xe'),_0x5103('0xf'),_0x5103('0x10'),_0x5103('0x11'),_0x5103('0x12'),_0x5103('0x13'),'dialOriginateTimeout',_0x5103('0x14'),'dialQueueTimeout',_0x5103('0x15'),'dialCongestionMaxRetry',_0x5103('0x16'),'dialBusyMaxRetry',_0x5103('0x17'),'dialNoAnswerMaxRetry',_0x5103('0x18'),_0x5103('0x19'),_0x5103('0x1a'),_0x5103('0x1b'),_0x5103('0x1c'),_0x5103('0x1d'),'dialAMDActive',_0x5103('0x1e'),'dialAMDGreeting',_0x5103('0x1f'),_0x5103('0x20'),_0x5103('0x21'),_0x5103('0x22'),_0x5103('0x23'),_0x5103('0x24'),_0x5103('0x25'),_0x5103('0x26'),_0x5103('0x27'),'dialRecallInQueue',_0x5103('0x28'),_0x5103('0x29'),'dialAgiAfterHangupClient','dialQueueProject2',_0x5103('0x8'),_0x5103('0x2a'),_0x5103('0x2b'),'dialCutDigit',_0x5103('0x2c'),_0x5103('0x2d'),_0x5103('0x2e'),_0x5103('0x2f'),'dialAbandonedMaxRetry',_0x5103('0x30'),_0x5103('0x31'),_0x5103('0x32'),_0x5103('0x33'),_0x5103('0x34'),_0x5103('0x35'),_0x5103('0x36'),_0x5103('0x37')],'include':[{'model':_0x5103('0x38'),'as':_0x5103('0x38'),'attributes':['id',_0x5103('0x4'),_0x5103('0x39'),_0x5103('0x3a')]},{'model':_0x5103('0x3b'),'as':'mandatoryDispositionPause','attributes':['id',_0x5103('0x4')]},{'model':_0x5103('0x38'),'as':_0x5103('0x3c'),'attributes':['id',_0x5103('0x4'),_0x5103('0x39'),_0x5103('0x3a')]},{'model':_0x5103('0x3d'),'as':_0x5103('0x3d'),'attributes':['id',_0x5103('0x4')],'include':[{'model':_0x5103('0x3d'),'as':'Intervals','attributes':['id',_0x5103('0x4'),_0x5103('0x3e')]}]}]},'log':_0x5103('0x1')});};};
\ No newline at end of file
+var _0x3e2f=['dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMinThreshold','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request','name','acw','acwTimeout','autopause','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRecallMeTimeout'];(function(_0x125cf9,_0xafd980){var _0x4e5287=function(_0x727218){while(--_0x727218){_0x125cf9['push'](_0x125cf9['shift']());}};_0x4e5287(++_0xafd980);}(_0x3e2f,0x1cb));var _0xf3e2=function(_0x20fb02,_0x96c029){_0x20fb02=_0x20fb02-0x0;var _0x24a33e=_0x3e2f[_0x20fb02];return _0x24a33e;};'use strict';var client=require(_0xf3e2('0x0'));exports[_0xf3e2('0x1')]=function(){return function(){return client[_0xf3e2('0x2')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0xf3e2('0x3'),_0xf3e2('0x4'),_0xf3e2('0x5'),_0xf3e2('0x6'),'monitor_format',_0xf3e2('0x7'),_0xf3e2('0x8'),_0xf3e2('0x9'),_0xf3e2('0xa'),_0xf3e2('0xb'),_0xf3e2('0xc'),_0xf3e2('0xd'),_0xf3e2('0xe'),'dialPredictiveInterval',_0xf3e2('0xf'),_0xf3e2('0x10'),_0xf3e2('0x11'),_0xf3e2('0x12'),_0xf3e2('0x13'),_0xf3e2('0x14'),'dialCongestionMaxRetry',_0xf3e2('0x15'),_0xf3e2('0x16'),_0xf3e2('0x17'),_0xf3e2('0x18'),_0xf3e2('0x19'),_0xf3e2('0x1a'),'dialTimezone','dialGlobalInterval',_0xf3e2('0x1b'),'dialCheckDuplicateType',_0xf3e2('0x1c'),_0xf3e2('0x1d'),_0xf3e2('0x1e'),_0xf3e2('0x1f'),'dialAMDTotalAnalysisTime',_0xf3e2('0x20'),'dialAMDBetweenWordsSilence',_0xf3e2('0x21'),_0xf3e2('0x22'),_0xf3e2('0x23'),'timeout',_0xf3e2('0x24'),'dialRecallInQueue',_0xf3e2('0x25'),_0xf3e2('0x26'),_0xf3e2('0x27'),_0xf3e2('0x28'),'monitor_format','strategy',_0xf3e2('0x29'),_0xf3e2('0x2a'),_0xf3e2('0x2b'),_0xf3e2('0x2c'),_0xf3e2('0x2d'),'dialDropRetryFrequency',_0xf3e2('0x2e'),'dialAbandonedRetryFrequency',_0xf3e2('0x2f'),_0xf3e2('0x30'),_0xf3e2('0x31'),_0xf3e2('0x32'),_0xf3e2('0x33'),'dialPredictiveIntervalMaxThreshold',_0xf3e2('0x34')],'include':[{'model':_0xf3e2('0x35'),'as':'Trunk','attributes':['id',_0xf3e2('0x3'),_0xf3e2('0x36'),_0xf3e2('0x37')]},{'model':_0xf3e2('0x38'),'as':_0xf3e2('0x39'),'attributes':['id','name']},{'model':'Trunk','as':_0xf3e2('0x3a'),'attributes':['id',_0xf3e2('0x3'),_0xf3e2('0x36'),_0xf3e2('0x37')]},{'model':_0xf3e2('0x3b'),'as':_0xf3e2('0x3b'),'attributes':['id',_0xf3e2('0x3')],'include':[{'model':_0xf3e2('0x3b'),'as':_0xf3e2('0x3c'),'attributes':['id',_0xf3e2('0x3'),_0xf3e2('0x3d')]}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
index be7e9ff..be0986a 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(_0x1e9487,_0x4f5e1f){var _0x308290=function(_0x2b75b8){while(--_0x2b75b8){_0x1e9487['push'](_0x1e9487['shift']());}};_0x308290(++_0x4f5e1f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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(_0x32226e,_0x399b40){var _0x6c2cdc=function(_0x6ba0a8){while(--_0x6ba0a8){_0x32226e['push'](_0x32226e['shift']());}};_0x6c2cdc(++_0x399b40);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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 f6298cc..b057bc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x383d=['GetVoiceQueueRtPauses','Request'];(function(_0xf000b4,_0x558f29){var _0x4f4e00=function(_0x305199){while(--_0x305199){_0xf000b4['push'](_0xf000b4['shift']());}};_0x4f4e00(++_0x558f29);}(_0x383d,0xd3));var _0xd383=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x383d[_0x14add3];return _0x4a174f;};'use strict';var client=require('../client');exports['getVoiceQueueRtPauses']=function(_0x3180f1){return function(){return client[_0xd383('0x0')](_0xd383('0x1'),{'options':{'where':{'VoiceQueueId':_0x3180f1,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
+var _0x8356=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses','../client'];(function(_0x145774,_0x54c2c5){var _0x10d23f=function(_0x1e31f5){while(--_0x1e31f5){_0x145774['push'](_0x145774['shift']());}};_0x10d23f(++_0x54c2c5);}(_0x8356,0x1db));var _0x6835=function(_0x41d684,_0x52f976){_0x41d684=_0x41d684-0x0;var _0x83b011=_0x8356[_0x41d684];return _0x83b011;};'use strict';var client=require(_0x6835('0x0'));exports[_0x6835('0x1')]=function(_0x14a609){return function(){return client[_0x6835('0x2')](_0x6835('0x3'),{'options':{'where':{'VoiceQueueId':_0x14a609,'paused':!![]},'raw':!![]},'log':_0x6835('0x1')});};};
\ No newline at end of file
index 607e18b..4174380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x4696cd,_0x27d29a){var _0xe32859=function(_0x9dc5a6){while(--_0x9dc5a6){_0x4696cd['push'](_0x4696cd['shift']());}};_0xe32859(++_0x27d29a);}(_0x7a54,0x106));var _0x47a5=function(_0x299909,_0x16791b){_0x299909=_0x299909-0x0;var _0x5e690c=_0x7a54[_0x299909];return _0x5e690c;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x29bb4a,_0x3dece0){var _0x2e095e=function(_0x3bf9cb){while(--_0x3bf9cb){_0x29bb4a['push'](_0x29bb4a['shift']());}};_0x2e095e(++_0x3dece0);}(_0x7a54,0x106));var _0x47a5=function(_0x118b8e,_0x3bc102){_0x118b8e=_0x118b8e-0x0;var _0x2694db=_0x7a54[_0x118b8e];return _0x2694db;};'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 a428688..1be40e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f55=['transfertargetexten','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereecontext','transfereelinkedid','isexternal','context','extension','blind','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetaccountcode','transfertargetcontext'];(function(_0x5643fc,_0xc7d223){var _0x10a3f2=function(_0x3a48ca){while(--_0x3a48ca){_0x5643fc['push'](_0x5643fc['shift']());}};_0x10a3f2(++_0xc7d223);}(_0x2f55,0x85));var _0x52f5=function(_0x66cbd9,_0x2a6844){_0x66cbd9=_0x66cbd9-0x0;var _0x19a47c=_0x2f55[_0x66cbd9];return _0x19a47c;};'use strict';var client=require(_0x52f5('0x0'));exports[_0x52f5('0x1')]={};exports[_0x52f5('0x2')]=function(_0x1b3e5c){return client[_0x52f5('0x3')](_0x52f5('0x4'),{'body':{'result':_0x1b3e5c[_0x52f5('0x5')],'transfererchannel':_0x1b3e5c[_0x52f5('0x6')],'transferercalleridnum':_0x1b3e5c[_0x52f5('0x7')],'transferercalleridname':_0x1b3e5c[_0x52f5('0x8')],'transfererconnectedlinenum':_0x1b3e5c[_0x52f5('0x9')],'transfererconnectedlinename':_0x1b3e5c[_0x52f5('0xa')],'transfereraccountcode':_0x1b3e5c[_0x52f5('0xb')],'transferercontext':_0x1b3e5c['transferercontext'],'transfererexten':_0x1b3e5c[_0x52f5('0xc')],'transfererlinkedid':_0x1b3e5c[_0x52f5('0xd')],'transfereechannel':_0x1b3e5c[_0x52f5('0xe')],'transfereecalleridnum':_0x1b3e5c[_0x52f5('0xf')],'transfereecalleridname':_0x1b3e5c[_0x52f5('0x10')],'transfereeconnectedlinenum':_0x1b3e5c[_0x52f5('0x11')],'transfereeconnectedlinename':_0x1b3e5c[_0x52f5('0x12')],'transfereeaccountcode':_0x1b3e5c['transfereeaccountcode'],'transfereecontext':_0x1b3e5c[_0x52f5('0x13')],'transfereeexten':_0x1b3e5c['transfereeexten'],'transfereelinkedid':_0x1b3e5c[_0x52f5('0x14')],'isexternal':_0x1b3e5c[_0x52f5('0x15')],'context':_0x1b3e5c[_0x52f5('0x16')],'extension':_0x1b3e5c[_0x52f5('0x17')],'type':_0x52f5('0x18')},'log':_0x52f5('0x4')});};exports[_0x52f5('0x19')]=function(_0x3ccfb8){return client[_0x52f5('0x3')](_0x52f5('0x4'),{'body':{'result':_0x3ccfb8[_0x52f5('0x5')],'transfererchannel':_0x3ccfb8[_0x52f5('0x1a')],'transferercalleridnum':_0x3ccfb8[_0x52f5('0x1b')],'transferercalleridname':_0x3ccfb8[_0x52f5('0x1c')],'transfererconnectedlinenum':_0x3ccfb8['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x3ccfb8[_0x52f5('0x1d')],'transfereraccountcode':_0x3ccfb8[_0x52f5('0x1e')],'transferercontext':_0x3ccfb8[_0x52f5('0x1f')],'transfererexten':_0x3ccfb8[_0x52f5('0x20')],'transfererlinkedid':_0x3ccfb8[_0x52f5('0x21')],'transfereechannel':_0x3ccfb8[_0x52f5('0x22')],'transfereecalleridnum':_0x3ccfb8[_0x52f5('0x23')],'transfereecalleridname':_0x3ccfb8[_0x52f5('0x24')],'transfereeconnectedlinenum':_0x3ccfb8['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x3ccfb8['transfertargetconnectedlinename'],'transfereeaccountcode':_0x3ccfb8[_0x52f5('0x25')],'transfereecontext':_0x3ccfb8[_0x52f5('0x26')],'transfereeexten':_0x3ccfb8[_0x52f5('0x27')],'transfereelinkedid':_0x3ccfb8['transfertargetlinkedid'],'isexternal':_0x3ccfb8['isexternal'],'context':_0x3ccfb8[_0x52f5('0x28')],'extension':_0x3ccfb8[_0x52f5('0x29')],'type':_0x52f5('0x2a')},'log':_0x52f5('0x4')});};
\ No newline at end of file
+var _0x9a98=['secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','../client','transfers','blindTransfer','Request','result','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereelinkedid','isexternal','context','extension','blind','CreateVoiceTransferReport','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext'];(function(_0x10dc60,_0x2fcce1){var _0x47dec5=function(_0x24b5e4){while(--_0x24b5e4){_0x10dc60['push'](_0x10dc60['shift']());}};_0x47dec5(++_0x2fcce1);}(_0x9a98,0xbd));var _0x89a9=function(_0x3865b2,_0x18835e){_0x3865b2=_0x3865b2-0x0;var _0x492515=_0x9a98[_0x3865b2];return _0x492515;};'use strict';var client=require(_0x89a9('0x0'));exports[_0x89a9('0x1')]={};exports[_0x89a9('0x2')]=function(_0x182c8c){return client[_0x89a9('0x3')]('CreateVoiceTransferReport',{'body':{'result':_0x182c8c[_0x89a9('0x4')],'transfererchannel':_0x182c8c['transfererchannel'],'transferercalleridnum':_0x182c8c[_0x89a9('0x5')],'transferercalleridname':_0x182c8c[_0x89a9('0x6')],'transfererconnectedlinenum':_0x182c8c[_0x89a9('0x7')],'transfererconnectedlinename':_0x182c8c[_0x89a9('0x8')],'transfereraccountcode':_0x182c8c['transfereraccountcode'],'transferercontext':_0x182c8c['transferercontext'],'transfererexten':_0x182c8c[_0x89a9('0x9')],'transfererlinkedid':_0x182c8c[_0x89a9('0xa')],'transfereechannel':_0x182c8c[_0x89a9('0xb')],'transfereecalleridnum':_0x182c8c[_0x89a9('0xc')],'transfereecalleridname':_0x182c8c[_0x89a9('0xd')],'transfereeconnectedlinenum':_0x182c8c[_0x89a9('0xe')],'transfereeconnectedlinename':_0x182c8c[_0x89a9('0xf')],'transfereeaccountcode':_0x182c8c[_0x89a9('0x10')],'transfereecontext':_0x182c8c[_0x89a9('0x11')],'transfereeexten':_0x182c8c['transfereeexten'],'transfereelinkedid':_0x182c8c[_0x89a9('0x12')],'isexternal':_0x182c8c[_0x89a9('0x13')],'context':_0x182c8c[_0x89a9('0x14')],'extension':_0x182c8c[_0x89a9('0x15')],'type':_0x89a9('0x16')},'log':_0x89a9('0x17')});};exports[_0x89a9('0x18')]=function(_0x2b5b89){return client['Request'](_0x89a9('0x17'),{'body':{'result':_0x2b5b89['result'],'transfererchannel':_0x2b5b89[_0x89a9('0x19')],'transferercalleridnum':_0x2b5b89[_0x89a9('0x1a')],'transferercalleridname':_0x2b5b89[_0x89a9('0x1b')],'transfererconnectedlinenum':_0x2b5b89['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x2b5b89[_0x89a9('0x1c')],'transfereraccountcode':_0x2b5b89[_0x89a9('0x1d')],'transferercontext':_0x2b5b89[_0x89a9('0x1e')],'transfererexten':_0x2b5b89[_0x89a9('0x1f')],'transfererlinkedid':_0x2b5b89[_0x89a9('0x20')],'transfereechannel':_0x2b5b89[_0x89a9('0x21')],'transfereecalleridnum':_0x2b5b89[_0x89a9('0x22')],'transfereecalleridname':_0x2b5b89[_0x89a9('0x23')],'transfereeconnectedlinenum':_0x2b5b89[_0x89a9('0x24')],'transfereeconnectedlinename':_0x2b5b89[_0x89a9('0x25')],'transfereeaccountcode':_0x2b5b89[_0x89a9('0x26')],'transfereecontext':_0x2b5b89[_0x89a9('0x27')],'transfereeexten':_0x2b5b89[_0x89a9('0x28')],'transfereelinkedid':_0x2b5b89[_0x89a9('0x29')],'isexternal':_0x2b5b89[_0x89a9('0x13')],'context':_0x2b5b89[_0x89a9('0x2a')],'extension':_0x2b5b89[_0x89a9('0x2b')],'type':'attended'},'log':_0x89a9('0x17')});};
\ No newline at end of file
index 127443e..649c80c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfa0=['then','message','catch','voiceQueues','name','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','type','unmanaged','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdNumber','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','length','find','omit','undefined','values','channels','voicechannel','uniqueid','channel','%s.%s','wav','MixMonitor','ai(mixmonitorid)','/var/spool/asterisk/monitor/','toLowerCase','isNil','push','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','map','resolve','StopMixMonitor','monitors','stop','filename','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','voicequeuechannelredirect','Redirect','exten','context','telephones','outboundChannels','campaigns','run','event','emit','custom:','send','checkAfterSend','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','jayson/promise','validate','moment','../../../config/environment','../properties','listen','format','%s/%s','SIP','timers','timer','agents','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action'];(function(_0x196ddc,_0x514491){var _0x5d15f2=function(_0x5bcf05){while(--_0x5bcf05){_0x196ddc['push'](_0x196ddc['shift']());}};_0x5d15f2(++_0x514491);}(_0xdfa0,0x69));var _0x0dfa=function(_0x3a54a2,_0x3f1799){_0x3a54a2=_0x3a54a2-0x0;var _0x2e2df7=_0xdfa0[_0x3a54a2];return _0x2e2df7;};'use strict';var _=require(_0x0dfa('0x0'));var util=require('util');var jayson=require(_0x0dfa('0x1'));var schema=require(_0x0dfa('0x2'));var BPromise=require('bluebird');var moment=require(_0x0dfa('0x3'));var config=require(_0x0dfa('0x4'));var properties=require(_0x0dfa('0x5'));var ami=require('../ami');exports[_0x0dfa('0x6')]=function(_0x50b91e,_0x2f60d7,_0x2efe20){return new BPromise(function(_0x4830b6,_0x417f7a){var _0x29ca78={'QueuePause':function(_0x32280b){return new Promise(function(_0x16070c,_0x3b6881){var _0x4c7be0=util[_0x0dfa('0x7')](_0x0dfa('0x8'),_0x0dfa('0x9'),_0x32280b['name']);if(_0x50b91e[_0x0dfa('0xa')]&&_0x50b91e['timers'][_0x4c7be0]&&_0x50b91e[_0x0dfa('0xa')][_0x4c7be0][_0x0dfa('0xb')]){_0x50b91e[_0x0dfa('0xa')][_0x4c7be0]['updateAcw']();}if(_0x50b91e[_0x0dfa('0xc')][_0x4c7be0]){_0x50b91e[_0x0dfa('0xc')][_0x4c7be0]['updateStatusRealtime']({'statePause':_0x32280b[_0x0dfa('0xd')]?!![]:![]});}_0x16070c({'code':0xc8,'message':_0x0dfa('0xe')});});},'Reload':function(_0x47c37c){var _0x4162e1=this;return new Promise(function(_0x1e5532,_0x4215fd){if(ami[_0x0dfa('0xf')]()==![]){return _0x4215fd(_0x4162e1[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config['asterisk'][_0x0dfa('0x12')],_0x0dfa('0x13')][_0x0dfa('0x14')]('\x20')));}_0x47c37c=_[_0x0dfa('0x15')](_0x47c37c,_[_0x0dfa('0x16')](properties[_0x0dfa('0x17')]));_0x47c37c[_0x0dfa('0x18')]=_0x0dfa('0x19');return ami[_0x0dfa('0x1a')](_0x47c37c)[_0x0dfa('0x1b')](function(_0xc524fe){_0x1e5532({'code':0xc8,'message':_0xc524fe[_0x0dfa('0x1c')]});})[_0x0dfa('0x1d')](function(_0x208c0b){_0x4215fd(_0x4162e1[_0x0dfa('0x10')](0x1f5,_0x208c0b['message']));});});},'Command':function(_0xd21935){var _0x22ff4e=this;return new Promise(function(_0x263d6c,_0x1bb2a){if(ami[_0x0dfa('0xf')]()==![]){return _0x1bb2a(_0x22ff4e['error'](0x1f4,[config['asterisk']['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')]['join']('\x20')));}_0xd21935=_[_0x0dfa('0x15')](_0xd21935,'command');_0xd21935[_0x0dfa('0x18')]='Command';return ami[_0x0dfa('0x1a')](_0xd21935)[_0x0dfa('0x1b')](function(_0x43f048){_0x263d6c({'code':0xc8,'message':_0x43f048['content']});})[_0x0dfa('0x1d')](function(_0x70ff72){_0x1bb2a(_0x22ff4e[_0x0dfa('0x10')](0x1f5,_0x70ff72[_0x0dfa('0x1c')]));});});},'VoiceQueues':function(_0x1dfbea){return new Promise(function(_0x12bd2a,_0x13005a){var _0x3f40e4=[];for(var _0x2e4523 in _0x50b91e[_0x0dfa('0x1e')]){if(_0x50b91e['voiceQueues']['hasOwnProperty'](_0x2e4523)){var _0x4084c6=_0x50b91e[_0x0dfa('0x1e')][_0x2e4523];var _0x4992b8={'id':_0x4084c6['id'],'name':_0x4084c6[_0x0dfa('0x1f')],'strategy':_0x4084c6[_0x0dfa('0x20')],'answered':_0x4084c6[_0x0dfa('0x21')],'available':_0x4084c6['available'],'loggedIn':_0x4084c6[_0x0dfa('0x22')],'pTalking':_0x4084c6[_0x0dfa('0x23')],'sumBillable':_0x4084c6[_0x0dfa('0x24')],'sumDuration':_0x4084c6[_0x0dfa('0x25')],'sumHoldTime':_0x4084c6[_0x0dfa('0x26')]||0x0,'talking':_0x4084c6[_0x0dfa('0x27')],'total':_0x4084c6['total'],'type':_0x4084c6[_0x0dfa('0x28')],'unmanaged':_0x4084c6[_0x0dfa('0x29')],'abandoned':_0x4084c6['abandoned'],'waiting':_0x4084c6[_0x0dfa('0x2a')],'loggedInDb':_0x4084c6[_0x0dfa('0x2b')]};if(_0x4084c6[_0x0dfa('0x28')]===_0x0dfa('0x2c')){_0x4992b8['dialActive']=_0x4084c6[_0x0dfa('0x2d')];_0x4992b8[_0x0dfa('0x2e')]=_0x4084c6[_0x0dfa('0x2e')];_0x4992b8['dialOriginateCallerIdName']=_0x4084c6['dialOriginateCallerIdName'];_0x4992b8[_0x0dfa('0x2f')]=_0x4084c6[_0x0dfa('0x2f')];_0x4992b8['dialOriginateTimeout']=_0x4084c6['dialOriginateTimeout'];_0x4992b8['dialPrefix']=_0x4084c6[_0x0dfa('0x30')];_0x4992b8[_0x0dfa('0x31')]=_0x4084c6[_0x0dfa('0x31')];_0x4992b8[_0x0dfa('0x32')]=_0x4084c6['outboundAnswerAgiCallsDay'];_0x4992b8[_0x0dfa('0x33')]=_0x4084c6[_0x0dfa('0x33')];_0x4992b8[_0x0dfa('0x34')]=_0x4084c6[_0x0dfa('0x34')];_0x4992b8[_0x0dfa('0x35')]=_0x4084c6[_0x0dfa('0x35')];_0x4992b8[_0x0dfa('0x36')]=_0x4084c6[_0x0dfa('0x36')];_0x4992b8[_0x0dfa('0x37')]=_0x4084c6[_0x0dfa('0x37')];_0x4992b8['outboundDropCallsDayCallersExit']=_0x4084c6['outboundDropCallsDayCallersExit'];_0x4992b8[_0x0dfa('0x38')]=_0x4084c6[_0x0dfa('0x38')];_0x4992b8[_0x0dfa('0x39')]=_0x4084c6[_0x0dfa('0x39')];_0x4992b8[_0x0dfa('0x3a')]=_0x4084c6['outboundNoSuchCallsDay'];_0x4992b8[_0x0dfa('0x3b')]=_0x4084c6['outboundOriginateFailureCallsDay'];_0x4992b8[_0x0dfa('0x3c')]=_0x4084c6[_0x0dfa('0x3c')];_0x4992b8[_0x0dfa('0x3d')]=_0x4084c6['outboundRejectCallsDay'];_0x4992b8['outboundUnknownCallsDay']=_0x4084c6[_0x0dfa('0x3e')];_0x4992b8[_0x0dfa('0x3f')]=_0x4084c6[_0x0dfa('0x3f')];_0x4992b8['predictiveIntervalAvgHoldtime']=_0x4084c6[_0x0dfa('0x40')];_0x4992b8['predictiveIntervalAvgTalktime']=_0x4084c6[_0x0dfa('0x41')];_0x4992b8[_0x0dfa('0x42')]=_0x4084c6['predictiveIntervalDroppedCallsCallersExit'];_0x4992b8[_0x0dfa('0x43')]=_0x4084c6[_0x0dfa('0x43')];_0x4992b8[_0x0dfa('0x44')]=_0x4084c6[_0x0dfa('0x44')];_0x4992b8[_0x0dfa('0x45')]=_0x4084c6[_0x0dfa('0x45')];_0x4992b8['predictiveIntervalHitRate']=_0x4084c6[_0x0dfa('0x46')];_0x4992b8[_0x0dfa('0x47')]=_0x4084c6[_0x0dfa('0x47')];_0x4992b8[_0x0dfa('0x48')]=_0x4084c6[_0x0dfa('0x48')];_0x4992b8[_0x0dfa('0x49')]=_0x4084c6[_0x0dfa('0x49')];_0x4992b8[_0x0dfa('0x4a')]=_0x4084c6[_0x0dfa('0x4a')];_0x4992b8[_0x0dfa('0x1c')]=_0x4084c6[_0x0dfa('0x1c')];_0x4992b8['originated']=_0x4084c6['originated'];_0x4992b8[_0x0dfa('0x4b')]=_0x4084c6[_0x0dfa('0x4b')];_0x4992b8['erlangCallToSecond']=_0x4084c6['erlangCallToSecond'];_0x4992b8['erlangAbandonmentRate']=_0x4084c6[_0x0dfa('0x4c')];_0x4992b8['erlangBusyFactor']=_0x4084c6[_0x0dfa('0x4d')];_0x4992b8[_0x0dfa('0x4e')]=_0x4084c6[_0x0dfa('0x4e')];_0x4992b8[_0x0dfa('0x4f')]=_0x4084c6[_0x0dfa('0x4f')];}if(_0x4084c6[_0x0dfa('0x50')]){_0x4992b8[_0x0dfa('0x50')]={'id':_0x4084c6[_0x0dfa('0x50')]['id'],'name':_0x4084c6['Trunk'][_0x0dfa('0x1f')],'active':_0x4084c6[_0x0dfa('0x50')]['active'],'callerid':_0x4084c6[_0x0dfa('0x50')][_0x0dfa('0x51')]};}if(_0x4084c6['Interval']){_0x4992b8[_0x0dfa('0x52')]={'id':_0x4084c6[_0x0dfa('0x52')]['id'],'name':_0x4084c6[_0x0dfa('0x52')][_0x0dfa('0x1f')]};}_0x3f40e4['push'](_0x4992b8);}}_0x12bd2a({'count':_0x3f40e4[_0x0dfa('0x53')],'rows':_0x3f40e4});});},'UpdateVoiceQueue':function(_0x2617b1){return new Promise(function(_0x483630,_0x3fc10d){var _0x13c4ad=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x1e')],{'id':parseInt(_0x2617b1['id'])});var _0x1f31b7=_[_0x0dfa('0x55')](_0x2617b1,['id']);if(_0x13c4ad){for(var _0x33c17b in _0x1f31b7){if(typeof _0x1f31b7[_0x33c17b]!==_0x0dfa('0x56')&&typeof _0x13c4ad[_0x33c17b]!==_0x0dfa('0x56')){_0x13c4ad[_0x33c17b]=_0x1f31b7[_0x33c17b];}}_0x483630(_0x13c4ad);}else{_0x3fc10d();}});},'VoiceChannels':function(_0x5bb41a){return new Promise(function(_0x28573d,_0x326433){var _0x48de6c=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x58')]);_0x28573d({'count':_0x48de6c[_0x0dfa('0x53')],'rows':_0x48de6c});});},'VoiceChannelMixMonitor':function(_0xa676cc){var _0x560dfe=this;return new Promise(function(_0x5df0e8,_0x5f4572){if(ami[_0x0dfa('0xf')]()==![]){return _0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')]['join']('\x20')));}var _0x595ba5=schema(properties[_0x0dfa('0x59')])[_0x0dfa('0x2')](_0xa676cc);if(_0x595ba5[_0x0dfa('0x53')]>0x0){return _0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f4,_['map'](_0x595ba5,'message')['join'](',\x20')));}var _0x2f018c=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x58')],{'uniqueid':_0xa676cc[_0x0dfa('0x5a')]});if(_0x2f018c&&_0x2f018c[_0x0dfa('0x5b')]){var _0x16b025=util[_0x0dfa('0x7')](_0x0dfa('0x5c'),_0xa676cc['filename']||_0xa676cc['uniqueid'],_0xa676cc['format']||_0x0dfa('0x5d'));return ami['Action']({'action':_0x0dfa('0x5e'),'channel':_0x2f018c[_0x0dfa('0x5b')],'file':_0x16b025,'options':_0x0dfa('0x5f')})[_0x0dfa('0x1b')](function(_0x748132){var _0x31f272=_['find'](_0x2f018c['monitors'],{'filename':_0x0dfa('0x60')+_0x16b025[_0x0dfa('0x61')]()});if(_[_0x0dfa('0x62')](_0x31f272)){_0x2f018c['monitors'][_0x0dfa('0x63')]({'filename':_0x0dfa('0x60')+_0x16b025[_0x0dfa('0x61')](),'createdAt':moment()[_0x0dfa('0x7')](_0x0dfa('0x64')),'mixmonitorid':_0x748132[_0x0dfa('0x65')],'status':_0x0dfa('0x66')});}else{_0x31f272[_0x0dfa('0x65')]=_0x748132['mixmonitorid'];_0x31f272[_0x0dfa('0x67')]=_0x0dfa('0x66');}_0x5df0e8({'code':0xc8,'message':[_0xa676cc[_0x0dfa('0x5a')],_0x0dfa('0x68'),_0x748132[_0x0dfa('0x65')]]['join']('\x20'),'mixmonitorid':_0x748132['mixmonitorid']});})[_0x0dfa('0x1d')](function(_0x5389d6){_0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f5,[_0xa676cc[_0x0dfa('0x5a')],_0x5389d6[_0x0dfa('0x1c')]['toLowerCase']()][_0x0dfa('0x14')]('\x20')));});}else{return _0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'VoiceChannelStopMixMonitor':function(_0x417ee1){var _0x1dddca=this;return new Promise(function(_0x598888,_0x4b4b04){if(ami['isConnected']()==![]){return _0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')][_0x0dfa('0x14')]('\x20')));}var _0x56e483=schema(properties[_0x0dfa('0x59')])[_0x0dfa('0x2')](_0x417ee1);if(_0x56e483[_0x0dfa('0x53')]>0x0){return _0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f4,_[_0x0dfa('0x6a')](_0x56e483,_0x0dfa('0x1c'))['join'](',\x20')));}var _0x34d1e1=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x58')],{'uniqueid':_0x417ee1['uniqueid']});if(_0x34d1e1){return BPromise[_0x0dfa('0x6b')]()[_0x0dfa('0x1b')](function(){if(_0x34d1e1[_0x0dfa('0x5b')]){return ami[_0x0dfa('0x1a')]({'action':_0x0dfa('0x6c'),'channel':_0x34d1e1[_0x0dfa('0x5b')],'mixmonitorid':_0x417ee1[_0x0dfa('0x65')]})[_0x0dfa('0x1d')](function(_0x4a1c24){});}})[_0x0dfa('0x1b')](function(){if(_0x34d1e1['destinationchannel']){return ami['Action']({'action':_0x0dfa('0x6c'),'channel':_0x34d1e1['destinationchannel'],'mixmonitorid':_0x417ee1[_0x0dfa('0x65')]})[_0x0dfa('0x1d')](function(_0x34107a){});}})['then'](function(_0x20217b){var _0x2b0b2d=_['find'](_0x34d1e1[_0x0dfa('0x6d')],{'mixmonitorid':_0x417ee1[_0x0dfa('0x65')]});if(_0x2b0b2d){_0x2b0b2d[_0x0dfa('0x67')]=_0x0dfa('0x6e');}})[_0x0dfa('0x1b')](function(){var _0x36c123=util[_0x0dfa('0x7')]('%s.%s',_0x417ee1[_0x0dfa('0x6f')]||_0x417ee1['uniqueid'],_0x417ee1[_0x0dfa('0x7')]||_0x0dfa('0x5d'));var _0x4a96b3=_['find'](_0x34d1e1['monitors'],{'filename':_0x0dfa('0x60')+_0x36c123['toLowerCase']()});if(_0x4a96b3){_0x4a96b3['status']=_0x0dfa('0x6e');}})[_0x0dfa('0x1b')](function(){_0x598888({'code':0xc8,'message':[_0x417ee1[_0x0dfa('0x5a')],_0x0dfa('0x70')][_0x0dfa('0x14')]('\x20')});})[_0x0dfa('0x1d')](function(_0x3b1c93){_0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f5,[_0x417ee1[_0x0dfa('0x5a')],_0x3b1c93[_0x0dfa('0x1c')]['toLowerCase']()][_0x0dfa('0x14')]('\x20')));});}else{return _0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'VoiceQueuesChannels':function(_0x478b01){return new Promise(function(_0x212c43,_0x4132b5){var _0x230333=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x71')]);_0x212c43({'count':_0x230333[_0x0dfa('0x53')],'rows':_0x230333});});},'VoiceQueuesChannel':function(_0x2e5d85){var _0x1c1e49=this;return new Promise(function(_0x1b3c5c,_0x321219){var _0x311560=schema(properties[_0x0dfa('0x72')])['validate'](_0x2e5d85);if(_0x311560['length']>0x0){return _0x321219(_0x1c1e49[_0x0dfa('0x10')](0x1f4,_['map'](_0x311560,_0x0dfa('0x1c'))[_0x0dfa('0x14')](',\x20')));}var _0x44e3d3=_['find'](_0x50b91e[_0x0dfa('0x71')],{'uniqueid':_0x2e5d85[_0x0dfa('0x5a')]});if(_0x44e3d3){_0x1b3c5c(_0x44e3d3);}else{return _0x321219(_0x1c1e49['error'](0x1f5,_0x0dfa('0x69')));}});},'VoiceQueuesChannelHangup':function(_0x2d10ba){var _0xbf4253=this;return new Promise(function(_0x1e66ed,_0x48930b){if(ami[_0x0dfa('0xf')]()==![]){return _0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')]['join']('\x20')));}var _0x21828e=schema(properties[_0x0dfa('0x73')])[_0x0dfa('0x2')](_0x2d10ba);if(_0x21828e[_0x0dfa('0x53')]>0x0){return _0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f4,_[_0x0dfa('0x6a')](_0x21828e,_0x0dfa('0x1c'))[_0x0dfa('0x14')](',\x20')));}var _0x460210=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x71')],{'uniqueid':_0x2d10ba[_0x0dfa('0x5a')]});if(_0x460210&&_0x460210[_0x0dfa('0x5b')]){return ami[_0x0dfa('0x1a')]({'action':'Hangup','channel':_0x460210['channel']})[_0x0dfa('0x1b')](function(_0x4e3d5c){_0x1e66ed({'code':0xc8,'message':[_0x2d10ba[_0x0dfa('0x5a')],_0x4e3d5c[_0x0dfa('0x1c')][_0x0dfa('0x61')]()]['join']('\x20')});})[_0x0dfa('0x1d')](function(_0x57cf28){_0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f5,[_0x2d10ba[_0x0dfa('0x5a')],_0x57cf28[_0x0dfa('0x1c')][_0x0dfa('0x61')]()][_0x0dfa('0x14')]('\x20')));});}else{return _0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'VoiceQueuesChannelRedirect':function(_0x5b013d){var _0x47221a=this;return new Promise(function(_0x2e32eb,_0x13f23d){if(ami[_0x0dfa('0xf')]()==![]){return _0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')]['username'],'ami\x20disconnected'][_0x0dfa('0x14')]('\x20')));}var _0x47ef36=schema(properties[_0x0dfa('0x74')])[_0x0dfa('0x2')](_0x5b013d);if(_0x47ef36[_0x0dfa('0x53')]>0x0){return _0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f4,_[_0x0dfa('0x6a')](_0x47ef36,_0x0dfa('0x1c'))[_0x0dfa('0x14')](',\x20')));}var _0x5d757c=_['find'](_0x50b91e[_0x0dfa('0x71')],{'uniqueid':_0x5b013d[_0x0dfa('0x5a')]});if(_0x5d757c&&_0x5d757c[_0x0dfa('0x5b')]){return ami[_0x0dfa('0x1a')]({'action':_0x0dfa('0x75'),'channel':_0x5d757c[_0x0dfa('0x5b')],'exten':_0x5b013d[_0x0dfa('0x76')],'context':_0x5b013d[_0x0dfa('0x77')]||_0x5d757c[_0x0dfa('0x77')],'priority':0x1})['then'](function(_0x1b3e83){_0x2e32eb({'code':0xc8,'message':[_0x5b013d[_0x0dfa('0x5a')],_0x1b3e83[_0x0dfa('0x1c')][_0x0dfa('0x61')]()][_0x0dfa('0x14')]('\x20')});})[_0x0dfa('0x1d')](function(_0x3c8641){_0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f5,[_0x5b013d[_0x0dfa('0x5a')],_0x3c8641[_0x0dfa('0x1c')]['toLowerCase']()][_0x0dfa('0x14')]('\x20')));});}else{return _0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'Agents':function(_0xd61f76){return new Promise(function(_0x1541b0,_0x55571d){var _0x4d917b=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0xc')]);_0x1541b0({'count':_0x4d917b['length'],'rows':_0x4d917b});});},'Telephones':function(_0x207a7e){return new Promise(function(_0x49c24e,_0x22b554){var _0x31ad4b=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x78')]);_0x49c24e({'count':_0x31ad4b[_0x0dfa('0x53')],'rows':_0x31ad4b});});},'Trunks':function(_0x1dfe90){return new Promise(function(_0x25c249,_0x300cf3){var _0xe5c893=_[_0x0dfa('0x57')](_0x50b91e['trunks']);_0x25c249({'count':_0xe5c893[_0x0dfa('0x53')],'rows':_0xe5c893});});},'OutboundChannels':function(_0x5cbd8c){return new Promise(function(_0x4060df,_0x10d2bb){var _0x5ccf40=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x79')]);_0x4060df({'count':_0x5ccf40[_0x0dfa('0x53')],'rows':_0x5ccf40});});},'Outbound':function(_0x215164){return new Promise(function(_0x595432,_0x220503){_0x595432(_0x50b91e['outbound']);});},'Campaigns':function(_0x3293af){return new Promise(function(_0x457a6e,_0x235d55){var _0x246ec7=_['values'](_0x50b91e[_0x0dfa('0x7a')]);_0x457a6e({'count':_0x246ec7[_0x0dfa('0x53')],'rows':_0x246ec7});});},'VoiceQueuesPreview':function(_0x2fabad){var _0x1940c3=this;return new Promise(function(_0x43ed92,_0x9a23ac){_0x2f60d7[_0x0dfa('0x7b')](_0x2fabad['id'])['then'](function(_0x1422e3){_0x43ed92({'code':0xc8,'message':_0x1422e3[_0x0dfa('0x1c')]});})[_0x0dfa('0x1d')](function(_0x149c42){_0x9a23ac(_0x1940c3[_0x0dfa('0x10')](0x1f4,_0x149c42[_0x0dfa('0x1c')]));});});},'EventManager':function(_0xa31f6d){var _0x24b545=this;return new Promise(function(_0x1aaec4,_0x2d10fe){if(!_0xa31f6d[_0x0dfa('0x7c')]){return _0x2d10fe(_0x24b545['error'](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x0dfa('0x7d')](_0x0dfa('0x7e')+_0xa31f6d[_0x0dfa('0x7c')],_0xa31f6d[_0x0dfa('0x1c')]);_0x1aaec4({'code':0xc8,'message':_0xa31f6d});});},'FaxAccounts':function(_0xf1a314){return new Promise(function(_0x415311,_0x5962b0){var _0x106093=_[_0x0dfa('0x57')](_0x50b91e['faxAccounts']);_0x415311({'count':_0x106093[_0x0dfa('0x53')],'rows':_0x106093});});},'SendFax':function(_0x4ec4e6){var _0x5bd9ca=this;return new Promise(function(_0x2160d8,_0x4ea5f9){_0x2efe20[_0x0dfa('0x7f')](_0x4ec4e6)[_0x0dfa('0x1b')](function(_0x279182){_0x2160d8({'code':0xc8,'message':_0x279182[_0x0dfa('0x1c')]});})['catch'](function(_0x588d9a){_0x4ea5f9(_0x5bd9ca[_0x0dfa('0x10')](0x1f4,_0x588d9a[_0x0dfa('0x1c')]));});});},'CheckAfterSend':function(_0x31c7e8){var _0x1fed70=this;return new Promise(function(_0x17c14f,_0x371df9){_0x2efe20[_0x0dfa('0x80')](_0x31c7e8)[_0x0dfa('0x1b')](function(_0x5a8633){_0x17c14f({'code':0xc8,'message':_0x5a8633[_0x0dfa('0x1c')]});})[_0x0dfa('0x1d')](function(_0x383be1){_0x371df9(_0x1fed70['error'](0x1f4,_0x383be1[_0x0dfa('0x1c')]));});});}};var _0xbe1c53=jayson['server'](_0x29ca78)['http']();_0xbe1c53['on'](_0x0dfa('0x10'),function(_0x464bc1){return _0x417f7a(_0x464bc1);});_0xbe1c53['listen'](0x232a,_0x0dfa('0x81'),function(){console[_0x0dfa('0x82')](_0x0dfa('0x83'),0x232a);return _0x4830b6('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
+var _0x1751=['ami\x20disconnected','pick','keys','module','action','Action','then','catch','message','isConnected','join','command','Command','content','voiceQueues','pTalking','sumBillable','sumDuration','sumHoldTime','type','unmanaged','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','length','find','omit','undefined','values','channels','username','voicechannel','map','uniqueid','%s.%s','filename','wav','channel','ai(mixmonitorid)','monitors','isNil','push','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','resolve','StopMixMonitor','destinationchannel','stop','StopMixMonitor\x20Success','voicequeuechannel','Channel\x20doesn\x27t\x20exist','voicequeuechannelhangup','queueChannels','Hangup','Redirect','exten','context','telephones','trunks','outboundChannels','run','event','Event\x20name\x20mandatory','emit','custom:','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','validate','moment','../../../config/environment','../properties','../ami','listen','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','pause','QueuePause','error','asterisk'];(function(_0x4ba41d,_0x16d140){var _0x3ef863=function(_0x53f210){while(--_0x53f210){_0x4ba41d['push'](_0x4ba41d['shift']());}};_0x3ef863(++_0x16d140);}(_0x1751,0x76));var _0x1175=function(_0x4dcb93,_0x3f7595){_0x4dcb93=_0x4dcb93-0x0;var _0x42b17a=_0x1751[_0x4dcb93];return _0x42b17a;};'use strict';var _=require(_0x1175('0x0'));var util=require(_0x1175('0x1'));var jayson=require(_0x1175('0x2'));var schema=require(_0x1175('0x3'));var BPromise=require('bluebird');var moment=require(_0x1175('0x4'));var config=require(_0x1175('0x5'));var properties=require(_0x1175('0x6'));var ami=require(_0x1175('0x7'));exports[_0x1175('0x8')]=function(_0xfd3308,_0x2950d9,_0x171756){return new BPromise(function(_0x3f99ca,_0x3300e9){var _0x403f1a={'QueuePause':function(_0x37c744){return new Promise(function(_0x434f79,_0xf4d43d){var _0x224074=util[_0x1175('0x9')](_0x1175('0xa'),_0x1175('0xb'),_0x37c744[_0x1175('0xc')]);if(_0xfd3308[_0x1175('0xd')]&&_0xfd3308[_0x1175('0xd')][_0x224074]&&_0xfd3308[_0x1175('0xd')][_0x224074][_0x1175('0xe')]){_0xfd3308[_0x1175('0xd')][_0x224074][_0x1175('0xf')]();}if(_0xfd3308[_0x1175('0x10')][_0x224074]){_0xfd3308['agents'][_0x224074]['updateStatusRealtime']({'statePause':_0x37c744[_0x1175('0x11')]?!![]:![]});}_0x434f79({'code':0xc8,'message':_0x1175('0x12')});});},'Reload':function(_0x53dbb4){var _0x354601=this;return new Promise(function(_0x3bf8d2,_0x18c21b){if(ami['isConnected']()==![]){return _0x18c21b(_0x354601[_0x1175('0x13')](0x1f4,[config[_0x1175('0x14')]['ip'],config[_0x1175('0x14')]['username'],_0x1175('0x15')]['join']('\x20')));}_0x53dbb4=_[_0x1175('0x16')](_0x53dbb4,_[_0x1175('0x17')](properties[_0x1175('0x18')]));_0x53dbb4[_0x1175('0x19')]='Reload';return ami[_0x1175('0x1a')](_0x53dbb4)[_0x1175('0x1b')](function(_0x5e64c5){_0x3bf8d2({'code':0xc8,'message':_0x5e64c5['message']});})[_0x1175('0x1c')](function(_0x5eee28){_0x18c21b(_0x354601[_0x1175('0x13')](0x1f5,_0x5eee28[_0x1175('0x1d')]));});});},'Command':function(_0x1a4ad9){var _0x59b5b8=this;return new Promise(function(_0xd7e14,_0x3ae698){if(ami[_0x1175('0x1e')]()==![]){return _0x3ae698(_0x59b5b8[_0x1175('0x13')](0x1f4,[config[_0x1175('0x14')]['ip'],config[_0x1175('0x14')]['username'],'ami\x20disconnected'][_0x1175('0x1f')]('\x20')));}_0x1a4ad9=_[_0x1175('0x16')](_0x1a4ad9,_0x1175('0x20'));_0x1a4ad9[_0x1175('0x19')]=_0x1175('0x21');return ami[_0x1175('0x1a')](_0x1a4ad9)[_0x1175('0x1b')](function(_0x4bd6cd){_0xd7e14({'code':0xc8,'message':_0x4bd6cd[_0x1175('0x22')]});})[_0x1175('0x1c')](function(_0x15d346){_0x3ae698(_0x59b5b8[_0x1175('0x13')](0x1f5,_0x15d346[_0x1175('0x1d')]));});});},'VoiceQueues':function(_0x24f13d){return new Promise(function(_0x1110f2,_0x5a3dc9){var _0x9d3b8=[];for(var _0x383ba5 in _0xfd3308[_0x1175('0x23')]){if(_0xfd3308['voiceQueues']['hasOwnProperty'](_0x383ba5)){var _0x5c8ff6=_0xfd3308[_0x1175('0x23')][_0x383ba5];var _0x2e4682={'id':_0x5c8ff6['id'],'name':_0x5c8ff6[_0x1175('0xc')],'strategy':_0x5c8ff6['strategy'],'answered':_0x5c8ff6['answered'],'available':_0x5c8ff6['available'],'loggedIn':_0x5c8ff6['loggedIn'],'pTalking':_0x5c8ff6[_0x1175('0x24')],'sumBillable':_0x5c8ff6[_0x1175('0x25')],'sumDuration':_0x5c8ff6[_0x1175('0x26')],'sumHoldTime':_0x5c8ff6[_0x1175('0x27')]||0x0,'talking':_0x5c8ff6['talking'],'total':_0x5c8ff6['total'],'type':_0x5c8ff6[_0x1175('0x28')],'unmanaged':_0x5c8ff6[_0x1175('0x29')],'abandoned':_0x5c8ff6['abandoned'],'waiting':_0x5c8ff6['waiting'],'loggedInDb':_0x5c8ff6['loggedInDb']};if(_0x5c8ff6[_0x1175('0x28')]===_0x1175('0x2a')){_0x2e4682['dialActive']=_0x5c8ff6[_0x1175('0x2b')];_0x2e4682[_0x1175('0x2c')]=_0x5c8ff6[_0x1175('0x2c')];_0x2e4682[_0x1175('0x2d')]=_0x5c8ff6[_0x1175('0x2d')];_0x2e4682[_0x1175('0x2e')]=_0x5c8ff6['dialOriginateCallerIdNumber'];_0x2e4682[_0x1175('0x2f')]=_0x5c8ff6[_0x1175('0x2f')];_0x2e4682[_0x1175('0x30')]=_0x5c8ff6[_0x1175('0x30')];_0x2e4682['temp']=_0x5c8ff6[_0x1175('0x31')];_0x2e4682['outboundAnswerAgiCallsDay']=_0x5c8ff6[_0x1175('0x32')];_0x2e4682[_0x1175('0x33')]=_0x5c8ff6[_0x1175('0x33')];_0x2e4682[_0x1175('0x34')]=_0x5c8ff6[_0x1175('0x34')];_0x2e4682[_0x1175('0x35')]=_0x5c8ff6['outboundBusyCallsDay'];_0x2e4682['outboundCongestionCallsDay']=_0x5c8ff6['outboundCongestionCallsDay'];_0x2e4682[_0x1175('0x36')]=_0x5c8ff6[_0x1175('0x36')];_0x2e4682[_0x1175('0x37')]=_0x5c8ff6[_0x1175('0x37')];_0x2e4682[_0x1175('0x38')]=_0x5c8ff6[_0x1175('0x38')];_0x2e4682['outboundNoAnswerCallsDay']=_0x5c8ff6['outboundNoAnswerCallsDay'];_0x2e4682[_0x1175('0x39')]=_0x5c8ff6[_0x1175('0x39')];_0x2e4682[_0x1175('0x3a')]=_0x5c8ff6['outboundOriginateFailureCallsDay'];_0x2e4682[_0x1175('0x3b')]=_0x5c8ff6[_0x1175('0x3b')];_0x2e4682[_0x1175('0x3c')]=_0x5c8ff6['outboundRejectCallsDay'];_0x2e4682['outboundUnknownCallsDay']=_0x5c8ff6[_0x1175('0x3d')];_0x2e4682[_0x1175('0x3e')]=_0x5c8ff6['predictiveIntervalAnsweredCalls'];_0x2e4682[_0x1175('0x3f')]=_0x5c8ff6[_0x1175('0x3f')];_0x2e4682[_0x1175('0x40')]=_0x5c8ff6[_0x1175('0x40')];_0x2e4682[_0x1175('0x41')]=_0x5c8ff6[_0x1175('0x41')];_0x2e4682[_0x1175('0x42')]=_0x5c8ff6[_0x1175('0x42')];_0x2e4682[_0x1175('0x43')]=_0x5c8ff6[_0x1175('0x43')];_0x2e4682[_0x1175('0x44')]=_0x5c8ff6[_0x1175('0x44')];_0x2e4682[_0x1175('0x45')]=_0x5c8ff6[_0x1175('0x45')];_0x2e4682[_0x1175('0x46')]=_0x5c8ff6[_0x1175('0x46')];_0x2e4682['predictiveIntervalPauses']=_0x5c8ff6[_0x1175('0x47')];_0x2e4682[_0x1175('0x48')]=_0x5c8ff6[_0x1175('0x48')];_0x2e4682['predictiveIntervalTotalCalls']=_0x5c8ff6[_0x1175('0x49')];_0x2e4682[_0x1175('0x1d')]=_0x5c8ff6[_0x1175('0x1d')];_0x2e4682[_0x1175('0x4a')]=_0x5c8ff6[_0x1175('0x4a')];_0x2e4682['erlangCalls']=_0x5c8ff6[_0x1175('0x4b')];_0x2e4682[_0x1175('0x4c')]=_0x5c8ff6[_0x1175('0x4c')];_0x2e4682[_0x1175('0x4d')]=_0x5c8ff6['erlangAbandonmentRate'];_0x2e4682[_0x1175('0x4e')]=_0x5c8ff6[_0x1175('0x4e')];_0x2e4682[_0x1175('0x4f')]=_0x5c8ff6['startPredictive'];_0x2e4682[_0x1175('0x50')]=_0x5c8ff6['startProgressive'];}if(_0x5c8ff6[_0x1175('0x51')]){_0x2e4682[_0x1175('0x51')]={'id':_0x5c8ff6[_0x1175('0x51')]['id'],'name':_0x5c8ff6[_0x1175('0x51')][_0x1175('0xc')],'active':_0x5c8ff6[_0x1175('0x51')][_0x1175('0x52')],'callerid':_0x5c8ff6[_0x1175('0x51')][_0x1175('0x53')]};}if(_0x5c8ff6[_0x1175('0x54')]){_0x2e4682['Interval']={'id':_0x5c8ff6['Interval']['id'],'name':_0x5c8ff6[_0x1175('0x54')][_0x1175('0xc')]};}_0x9d3b8['push'](_0x2e4682);}}_0x1110f2({'count':_0x9d3b8[_0x1175('0x55')],'rows':_0x9d3b8});});},'UpdateVoiceQueue':function(_0xc5b284){return new Promise(function(_0x50d78e,_0x193952){var _0x1ed96f=_[_0x1175('0x56')](_0xfd3308[_0x1175('0x23')],{'id':parseInt(_0xc5b284['id'])});var _0x18e8d5=_[_0x1175('0x57')](_0xc5b284,['id']);if(_0x1ed96f){for(var _0x2acc28 in _0x18e8d5){if(typeof _0x18e8d5[_0x2acc28]!==_0x1175('0x58')&&typeof _0x1ed96f[_0x2acc28]!==_0x1175('0x58')){_0x1ed96f[_0x2acc28]=_0x18e8d5[_0x2acc28];}}_0x50d78e(_0x1ed96f);}else{_0x193952();}});},'VoiceChannels':function(_0x36da8f){return new Promise(function(_0x2e49d9,_0x33599){var _0x46f717=_[_0x1175('0x59')](_0xfd3308[_0x1175('0x5a')]);_0x2e49d9({'count':_0x46f717[_0x1175('0x55')],'rows':_0x46f717});});},'VoiceChannelMixMonitor':function(_0x2224b9){var _0x481ec8=this;return new Promise(function(_0x59b43a,_0x3342fc){if(ami[_0x1175('0x1e')]()==![]){return _0x3342fc(_0x481ec8[_0x1175('0x13')](0x1f4,[config['asterisk']['ip'],config[_0x1175('0x14')][_0x1175('0x5b')],_0x1175('0x15')][_0x1175('0x1f')]('\x20')));}var _0x434252=schema(properties[_0x1175('0x5c')])['validate'](_0x2224b9);if(_0x434252[_0x1175('0x55')]>0x0){return _0x3342fc(_0x481ec8[_0x1175('0x13')](0x1f4,_[_0x1175('0x5d')](_0x434252,_0x1175('0x1d'))[_0x1175('0x1f')](',\x20')));}var _0x394e09=_[_0x1175('0x56')](_0xfd3308[_0x1175('0x5a')],{'uniqueid':_0x2224b9[_0x1175('0x5e')]});if(_0x394e09&&_0x394e09['channel']){var _0x4bf7bf=util[_0x1175('0x9')](_0x1175('0x5f'),_0x2224b9[_0x1175('0x60')]||_0x2224b9[_0x1175('0x5e')],_0x2224b9['format']||_0x1175('0x61'));return ami['Action']({'action':'MixMonitor','channel':_0x394e09[_0x1175('0x62')],'file':_0x4bf7bf,'options':_0x1175('0x63')})[_0x1175('0x1b')](function(_0x5cdedb){var _0x38d9b4=_[_0x1175('0x56')](_0x394e09[_0x1175('0x64')],{'filename':'/var/spool/asterisk/monitor/'+_0x4bf7bf['toLowerCase']()});if(_[_0x1175('0x65')](_0x38d9b4)){_0x394e09[_0x1175('0x64')][_0x1175('0x66')]({'filename':_0x1175('0x67')+_0x4bf7bf[_0x1175('0x68')](),'createdAt':moment()[_0x1175('0x9')](_0x1175('0x69')),'mixmonitorid':_0x5cdedb[_0x1175('0x6a')],'status':_0x1175('0x6b')});}else{_0x38d9b4[_0x1175('0x6a')]=_0x5cdedb[_0x1175('0x6a')];_0x38d9b4[_0x1175('0x6c')]='rec';}_0x59b43a({'code':0xc8,'message':[_0x2224b9['uniqueid'],_0x1175('0x6d'),_0x5cdedb[_0x1175('0x6a')]]['join']('\x20'),'mixmonitorid':_0x5cdedb[_0x1175('0x6a')]});})['catch'](function(_0x478c45){_0x3342fc(_0x481ec8[_0x1175('0x13')](0x1f5,[_0x2224b9[_0x1175('0x5e')],_0x478c45[_0x1175('0x1d')][_0x1175('0x68')]()][_0x1175('0x1f')]('\x20')));});}else{return _0x3342fc(_0x481ec8['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x52b6fb){var _0x48b258=this;return new Promise(function(_0x3070b7,_0x2e2654){if(ami['isConnected']()==![]){return _0x2e2654(_0x48b258[_0x1175('0x13')](0x1f4,[config[_0x1175('0x14')]['ip'],config[_0x1175('0x14')][_0x1175('0x5b')],_0x1175('0x15')][_0x1175('0x1f')]('\x20')));}var _0x12d02d=schema(properties[_0x1175('0x5c')])[_0x1175('0x3')](_0x52b6fb);if(_0x12d02d[_0x1175('0x55')]>0x0){return _0x2e2654(_0x48b258['error'](0x1f4,_[_0x1175('0x5d')](_0x12d02d,_0x1175('0x1d'))['join'](',\x20')));}var _0x35886f=_[_0x1175('0x56')](_0xfd3308[_0x1175('0x5a')],{'uniqueid':_0x52b6fb[_0x1175('0x5e')]});if(_0x35886f){return BPromise[_0x1175('0x6e')]()[_0x1175('0x1b')](function(){if(_0x35886f[_0x1175('0x62')]){return ami['Action']({'action':_0x1175('0x6f'),'channel':_0x35886f[_0x1175('0x62')],'mixmonitorid':_0x52b6fb['mixmonitorid']})[_0x1175('0x1c')](function(_0x2469cb){});}})[_0x1175('0x1b')](function(){if(_0x35886f[_0x1175('0x70')]){return ami[_0x1175('0x1a')]({'action':'StopMixMonitor','channel':_0x35886f['destinationchannel'],'mixmonitorid':_0x52b6fb[_0x1175('0x6a')]})[_0x1175('0x1c')](function(_0x579d6a){});}})[_0x1175('0x1b')](function(_0x5ba37c){var _0x580c4d=_[_0x1175('0x56')](_0x35886f[_0x1175('0x64')],{'mixmonitorid':_0x52b6fb['mixmonitorid']});if(_0x580c4d){_0x580c4d[_0x1175('0x6c')]=_0x1175('0x71');}})[_0x1175('0x1b')](function(){var _0x672bb8=util[_0x1175('0x9')](_0x1175('0x5f'),_0x52b6fb[_0x1175('0x60')]||_0x52b6fb[_0x1175('0x5e')],_0x52b6fb['format']||'wav');var _0x2bc197=_['find'](_0x35886f[_0x1175('0x64')],{'filename':_0x1175('0x67')+_0x672bb8[_0x1175('0x68')]()});if(_0x2bc197){_0x2bc197['status']=_0x1175('0x71');}})['then'](function(){_0x3070b7({'code':0xc8,'message':[_0x52b6fb['uniqueid'],_0x1175('0x72')][_0x1175('0x1f')]('\x20')});})[_0x1175('0x1c')](function(_0x3b7914){_0x2e2654(_0x48b258['error'](0x1f5,[_0x52b6fb['uniqueid'],_0x3b7914[_0x1175('0x1d')][_0x1175('0x68')]()]['join']('\x20')));});}else{return _0x2e2654(_0x48b258[_0x1175('0x13')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x2ffb1e){return new Promise(function(_0x145aea,_0x59b9f4){var _0x498659=_[_0x1175('0x59')](_0xfd3308['queueChannels']);_0x145aea({'count':_0x498659[_0x1175('0x55')],'rows':_0x498659});});},'VoiceQueuesChannel':function(_0x27ab44){var _0x3f7b68=this;return new Promise(function(_0x2a4926,_0x1425dc){var _0x2b03d2=schema(properties[_0x1175('0x73')])[_0x1175('0x3')](_0x27ab44);if(_0x2b03d2[_0x1175('0x55')]>0x0){return _0x1425dc(_0x3f7b68[_0x1175('0x13')](0x1f4,_[_0x1175('0x5d')](_0x2b03d2,_0x1175('0x1d'))['join'](',\x20')));}var _0x5086fd=_[_0x1175('0x56')](_0xfd3308['queueChannels'],{'uniqueid':_0x27ab44[_0x1175('0x5e')]});if(_0x5086fd){_0x2a4926(_0x5086fd);}else{return _0x1425dc(_0x3f7b68['error'](0x1f5,_0x1175('0x74')));}});},'VoiceQueuesChannelHangup':function(_0x15e081){var _0x337d6e=this;return new Promise(function(_0x246417,_0x2e1153){if(ami[_0x1175('0x1e')]()==![]){return _0x2e1153(_0x337d6e[_0x1175('0x13')](0x1f4,[config[_0x1175('0x14')]['ip'],config['asterisk'][_0x1175('0x5b')],_0x1175('0x15')]['join']('\x20')));}var _0x1a4241=schema(properties[_0x1175('0x75')])['validate'](_0x15e081);if(_0x1a4241[_0x1175('0x55')]>0x0){return _0x2e1153(_0x337d6e[_0x1175('0x13')](0x1f4,_[_0x1175('0x5d')](_0x1a4241,_0x1175('0x1d'))[_0x1175('0x1f')](',\x20')));}var _0x36842b=_[_0x1175('0x56')](_0xfd3308[_0x1175('0x76')],{'uniqueid':_0x15e081['uniqueid']});if(_0x36842b&&_0x36842b['channel']){return ami[_0x1175('0x1a')]({'action':_0x1175('0x77'),'channel':_0x36842b[_0x1175('0x62')]})[_0x1175('0x1b')](function(_0x38a283){_0x246417({'code':0xc8,'message':[_0x15e081[_0x1175('0x5e')],_0x38a283[_0x1175('0x1d')][_0x1175('0x68')]()][_0x1175('0x1f')]('\x20')});})['catch'](function(_0x58de1f){_0x2e1153(_0x337d6e[_0x1175('0x13')](0x1f5,[_0x15e081[_0x1175('0x5e')],_0x58de1f['message'][_0x1175('0x68')]()][_0x1175('0x1f')]('\x20')));});}else{return _0x2e1153(_0x337d6e[_0x1175('0x13')](0x1f5,_0x1175('0x74')));}});},'VoiceQueuesChannelRedirect':function(_0x4251f9){var _0x593109=this;return new Promise(function(_0x2ac4e2,_0x30e4a7){if(ami[_0x1175('0x1e')]()==![]){return _0x30e4a7(_0x593109[_0x1175('0x13')](0x1f4,[config[_0x1175('0x14')]['ip'],config[_0x1175('0x14')][_0x1175('0x5b')],_0x1175('0x15')][_0x1175('0x1f')]('\x20')));}var _0x2ccbb2=schema(properties['voicequeuechannelredirect'])['validate'](_0x4251f9);if(_0x2ccbb2['length']>0x0){return _0x30e4a7(_0x593109[_0x1175('0x13')](0x1f4,_[_0x1175('0x5d')](_0x2ccbb2,_0x1175('0x1d'))['join'](',\x20')));}var _0x5db634=_[_0x1175('0x56')](_0xfd3308[_0x1175('0x76')],{'uniqueid':_0x4251f9[_0x1175('0x5e')]});if(_0x5db634&&_0x5db634['channel']){return ami[_0x1175('0x1a')]({'action':_0x1175('0x78'),'channel':_0x5db634[_0x1175('0x62')],'exten':_0x4251f9[_0x1175('0x79')],'context':_0x4251f9['context']||_0x5db634[_0x1175('0x7a')],'priority':0x1})[_0x1175('0x1b')](function(_0x51de8b){_0x2ac4e2({'code':0xc8,'message':[_0x4251f9['uniqueid'],_0x51de8b['message'][_0x1175('0x68')]()][_0x1175('0x1f')]('\x20')});})['catch'](function(_0x4ec661){_0x30e4a7(_0x593109['error'](0x1f5,[_0x4251f9[_0x1175('0x5e')],_0x4ec661['message']['toLowerCase']()]['join']('\x20')));});}else{return _0x30e4a7(_0x593109[_0x1175('0x13')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x38fdd8){return new Promise(function(_0xf28135,_0x365dc9){var _0x25a7c5=_[_0x1175('0x59')](_0xfd3308[_0x1175('0x10')]);_0xf28135({'count':_0x25a7c5[_0x1175('0x55')],'rows':_0x25a7c5});});},'Telephones':function(_0x4fc716){return new Promise(function(_0x5aeede,_0x2c6bf8){var _0x52cac1=_[_0x1175('0x59')](_0xfd3308[_0x1175('0x7b')]);_0x5aeede({'count':_0x52cac1[_0x1175('0x55')],'rows':_0x52cac1});});},'Trunks':function(_0x196f82){return new Promise(function(_0x5bd8a0,_0x25b7a2){var _0x90288d=_['values'](_0xfd3308[_0x1175('0x7c')]);_0x5bd8a0({'count':_0x90288d['length'],'rows':_0x90288d});});},'OutboundChannels':function(_0x1cae54){return new Promise(function(_0x15c197,_0x564fa4){var _0x1889f9=_[_0x1175('0x59')](_0xfd3308[_0x1175('0x7d')]);_0x15c197({'count':_0x1889f9[_0x1175('0x55')],'rows':_0x1889f9});});},'Outbound':function(_0x231645){return new Promise(function(_0x1820d5,_0x38e33f){_0x1820d5(_0xfd3308['outbound']);});},'Campaigns':function(_0xd482e){return new Promise(function(_0x2d533d,_0x37d3a3){var _0x571596=_[_0x1175('0x59')](_0xfd3308['campaigns']);_0x2d533d({'count':_0x571596[_0x1175('0x55')],'rows':_0x571596});});},'VoiceQueuesPreview':function(_0x2e4536){var _0x412da3=this;return new Promise(function(_0x36076d,_0x3eb1fd){_0x2950d9[_0x1175('0x7e')](_0x2e4536['id'])[_0x1175('0x1b')](function(_0x2f45e0){_0x36076d({'code':0xc8,'message':_0x2f45e0[_0x1175('0x1d')]});})['catch'](function(_0x1b28d9){_0x3eb1fd(_0x412da3[_0x1175('0x13')](0x1f4,_0x1b28d9[_0x1175('0x1d')]));});});},'EventManager':function(_0x8cada0){var _0x576390=this;return new Promise(function(_0x249343,_0x4ca66f){if(!_0x8cada0[_0x1175('0x7f')]){return _0x4ca66f(_0x576390[_0x1175('0x13')](0x1f4,_0x1175('0x80')));}ami[_0x1175('0x81')](_0x1175('0x82')+_0x8cada0[_0x1175('0x7f')],_0x8cada0[_0x1175('0x1d')]);_0x249343({'code':0xc8,'message':_0x8cada0});});},'FaxAccounts':function(_0xeef26d){return new Promise(function(_0x8ddf2c,_0x22246a){var _0x26e640=_[_0x1175('0x59')](_0xfd3308[_0x1175('0x83')]);_0x8ddf2c({'count':_0x26e640[_0x1175('0x55')],'rows':_0x26e640});});},'SendFax':function(_0x535b7f){var _0x47fcc1=this;return new Promise(function(_0x35fc5b,_0x353c0e){_0x171756[_0x1175('0x84')](_0x535b7f)[_0x1175('0x1b')](function(_0x42c052){_0x35fc5b({'code':0xc8,'message':_0x42c052[_0x1175('0x1d')]});})[_0x1175('0x1c')](function(_0x5e652){_0x353c0e(_0x47fcc1[_0x1175('0x13')](0x1f4,_0x5e652[_0x1175('0x1d')]));});});},'CheckAfterSend':function(_0x3ef879){var _0x52b90d=this;return new Promise(function(_0x3fc7d8,_0x5c1ffb){_0x171756[_0x1175('0x85')](_0x3ef879)[_0x1175('0x1b')](function(_0x1d68cb){_0x3fc7d8({'code':0xc8,'message':_0x1d68cb[_0x1175('0x1d')]});})[_0x1175('0x1c')](function(_0x101174){_0x5c1ffb(_0x52b90d[_0x1175('0x13')](0x1f4,_0x101174[_0x1175('0x1d')]));});});}};var _0x3e6ae7=jayson[_0x1175('0x86')](_0x403f1a)[_0x1175('0x87')]();_0x3e6ae7['on']('error',function(_0x5a1172){return _0x3300e9(_0x5a1172);});_0x3e6ae7[_0x1175('0x8')](0x232a,_0x1175('0x88'),function(){console[_0x1175('0x89')](_0x1175('0x8a'),0x232a);return _0x3f99ca('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index 2b4de2d..0c26b54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9cf=['[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','calleridnum','format','user:%s','name','action','merge','lodash','bluebird','../../../../config/environment','trigger','../../rpc/cmContact','redis','localhost','[CM][%s][%s]','stringify','emit','exec','data1','data2','xmd-contactid','ListId','data3','split','phone','$or','map','routeId','destcalleridnum','firstName','lastName','mobile','fax','createdAt','updatedAt','union','then','getContacts','length','info','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','calleridname','Unknown','destcalleridname','<unknown>','resolve','push'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xe9cf,0x111));var _0xfe9c=function(_0x5ee89d,_0x1a7c29){_0x5ee89d=_0x5ee89d-0x0;var _0x3fa4cc=_0xe9cf[_0x5ee89d];return _0x3fa4cc;};'use strict';var _=require(_0xfe9c('0x0'));var BPromise=require(_0xfe9c('0x1'));var Redis=require('ioredis');var util=require('util');var config=require(_0xfe9c('0x2'));var logger=require('../../../../config/logger')(_0xfe9c('0x3'));var cmContactRpc=require(_0xfe9c('0x4'));config[_0xfe9c('0x5')]=_['defaults'](config[_0xfe9c('0x5')],{'host':_0xfe9c('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xfe9c('0x5')]));function emit(_0x33763f,_0x59b1ab,_0x5b2a85,_0x3d2c11,_0x5799ac){logger['info'](_0xfe9c('0x7'),_0x33763f,_0x59b1ab['id'],_0x5b2a85,_0x3d2c11,JSON[_0xfe9c('0x8')](_0x5799ac));io['to'](_0x5b2a85)[_0xfe9c('0x9')](_0x3d2c11,_0x5799ac);}exports[_0xfe9c('0xa')]=function(_0x458c11,_0x231465,_0x373793,_0x20aac3){var _0x29909e,_0x19c2eb;var _0x400981={};var _0x10b152=Number(_0x373793[_0xfe9c('0xb')]);var _0x2adf61=_0x373793['data2']?Boolean(Number(_0x373793[_0xfe9c('0xc')])):![];var _0x45722c;if(_0x20aac3[_0xfe9c('0xd')]){_0x400981['id']=_0x20aac3[_0xfe9c('0xd')];}if(!_0x400981['id']){_0x400981[_0xfe9c('0xe')]=_0x10b152;_0x45722c=_0x373793['data3']&&_0x373793[_0xfe9c('0xf')]!=='0'?_0x373793[_0xfe9c('0xf')][_0xfe9c('0x10')](','):[_0xfe9c('0x11')];_0x400981[_0xfe9c('0x12')]=_[_0xfe9c('0x13')](_0x45722c,function(_0x4fe21b){var _0x52bd91={};_0x52bd91[_0x4fe21b]=_0x20aac3[_0xfe9c('0x14')]?_0x20aac3[_0xfe9c('0x15')]:_0x20aac3['calleridnum'];return _0x52bd91;});}var _0x4e4531=['id',_0xfe9c('0x16'),_0xfe9c('0x17'),_0xfe9c('0x11'),_0xfe9c('0x18'),_0xfe9c('0x19'),_0xfe9c('0xe'),_0xfe9c('0x1a'),'scheduledAt',_0xfe9c('0x1b')];var _0x2e4bf8=_[_0xfe9c('0x1c')](_0x4e4531,_0x45722c);BPromise['resolve']()[_0xfe9c('0x1d')](cmContactRpc[_0xfe9c('0x1e')]({'attributes':_0x2e4bf8,'where':_0x400981}))[_0xfe9c('0x1d')](function(_0x4b1600){_0x19c2eb=_0x4b1600;if(!_['isEmpty'](_0x19c2eb)){if(_0x19c2eb[_0xfe9c('0x1f')]===0x1){_0x29909e=_0x19c2eb[0x0];logger[_0xfe9c('0x20')](_0xfe9c('0x21'),_0x20aac3[_0xfe9c('0x22')],_0x231465['id'],_0x29909e['id']);}else{logger[_0xfe9c('0x20')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x20aac3[_0xfe9c('0x22')],_0x231465['id'],_[_0xfe9c('0x13')](_0x19c2eb,'id')[_0xfe9c('0x23')](','));}return;}else{logger[_0xfe9c('0x20')]('[CM][%s][%s]\x20Contact\x20not\x20found',_0x20aac3['uniqueid'],_0x231465['id']);var _0x33d59d={'ListId':_0x10b152};var _0x2a8f42=_0x373793['data4']&&_0x373793[_0xfe9c('0x24')]!=='0'?_0x373793[_0xfe9c('0x24')]:'phone';if(_0x2adf61){logger[_0xfe9c('0x20')](_0xfe9c('0x25'),_0x20aac3['uniqueid'],_0x231465['id']);_0x33d59d[_0x2a8f42]=_['isNil'](_0x20aac3[_0xfe9c('0x14')])?_0x20aac3['calleridnum']:_0x20aac3['destcalleridnum'];if(_[_0xfe9c('0x26')](_0x20aac3[_0xfe9c('0x14')])){_0x33d59d[_0xfe9c('0x16')]=_0x20aac3[_0xfe9c('0x27')]&&_0x20aac3['calleridname']!=='<unknown>'?_0x20aac3[_0xfe9c('0x27')]:_0xfe9c('0x28');}else{_0x33d59d['firstName']=_0x20aac3['destcalleridname']&&_0x20aac3[_0xfe9c('0x29')]!==_0xfe9c('0x2a')?_0x20aac3['destcalleridname']:_0xfe9c('0x28');}return BPromise[_0xfe9c('0x2b')]()['then'](cmContactRpc['createContact'](_0x33d59d))[_0xfe9c('0x1d')](function(_0x50d7be){_0x29909e=_0x50d7be;_0x19c2eb[_0xfe9c('0x2c')](_0x50d7be);if(_0x29909e){logger[_0xfe9c('0x20')](_0xfe9c('0x2d'),_0x20aac3[_0xfe9c('0x22')],_0x231465['id'],_0x29909e['id']);}return;});}else{logger[_0xfe9c('0x20')](_0xfe9c('0x2e'),_0x20aac3[_0xfe9c('0x22')],_0x231465['id']);_0x33d59d[_0x2a8f42]=_['isNil'](_0x20aac3['routeId'])?_0x20aac3[_0xfe9c('0x2f')]:_0x20aac3[_0xfe9c('0x15')];if(_[_0xfe9c('0x26')](_0x20aac3[_0xfe9c('0x14')])){_0x33d59d['firstName']=_0x20aac3[_0xfe9c('0x27')]&&_0x20aac3[_0xfe9c('0x27')]!=='<unknown>'?_0x20aac3['calleridname']:_0xfe9c('0x28');}else{_0x33d59d['firstName']=_0x20aac3[_0xfe9c('0x29')]&&_0x20aac3[_0xfe9c('0x29')]!==_0xfe9c('0x2a')?_0x20aac3[_0xfe9c('0x29')]:_0xfe9c('0x28');}_0x29909e=_0x33d59d;_0x19c2eb['push'](_0x33d59d);return;}}})['then'](function(){if(_0x458c11){emit(_0x20aac3[_0xfe9c('0x22')],_0x231465,util[_0xfe9c('0x30')](_0xfe9c('0x31'),_0x458c11[_0xfe9c('0x32')]),util[_0xfe9c('0x30')]('trigger:%s',_0x373793[_0xfe9c('0x33')]['toLowerCase']()),{'evt':_[_0xfe9c('0x34')](_0x20aac3,{'autoCreate':_0x2adf61}),'contact':_0x29909e===undefined?{}:_0x29909e,'contacts':_0x19c2eb[_0xfe9c('0x1f')]===0x0?undefined:_0x19c2eb});}});};
\ No newline at end of file
+var _0x778f=['../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','data1','data2','xmd-contactid','ListId','data3','split','phone','map','destcalleridnum','firstName','lastName','fax','createdAt','scheduledAt','updatedAt','union','resolve','then','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','routeId','calleridnum','calleridname','<unknown>','Unknown','destcalleridname','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s','format','trigger:%s','action','toLowerCase','merge','lodash','bluebird','ioredis','util','../../../../config/environment'];(function(_0x221d0b,_0x2e2219){var _0x1df1bf=function(_0x48c352){while(--_0x48c352){_0x221d0b['push'](_0x221d0b['shift']());}};_0x1df1bf(++_0x2e2219);}(_0x778f,0x6f));var _0xf778=function(_0x4ed520,_0x21be63){_0x4ed520=_0x4ed520-0x0;var _0x4415a6=_0x778f[_0x4ed520];return _0x4415a6;};'use strict';var _=require(_0xf778('0x0'));var BPromise=require(_0xf778('0x1'));var Redis=require(_0xf778('0x2'));var util=require(_0xf778('0x3'));var config=require(_0xf778('0x4'));var logger=require(_0xf778('0x5'))(_0xf778('0x6'));var cmContactRpc=require(_0xf778('0x7'));config[_0xf778('0x8')]=_[_0xf778('0x9')](config[_0xf778('0x8')],{'host':_0xf778('0xa'),'port':0x18eb});var io=require(_0xf778('0xb'))(new Redis(config[_0xf778('0x8')]));function emit(_0x1a7dfa,_0x1b506b,_0x528dd6,_0x13a05c,_0x21b682){logger[_0xf778('0xc')](_0xf778('0xd'),_0x1a7dfa,_0x1b506b['id'],_0x528dd6,_0x13a05c,JSON[_0xf778('0xe')](_0x21b682));io['to'](_0x528dd6)[_0xf778('0xf')](_0x13a05c,_0x21b682);}exports['exec']=function(_0x53eecd,_0x372aa9,_0x2e63ca,_0x4baa5d){var _0x32bb9b,_0x51e1df;var _0x4fc53b={};var _0x173905=Number(_0x2e63ca[_0xf778('0x10')]);var _0x258cc7=_0x2e63ca[_0xf778('0x11')]?Boolean(Number(_0x2e63ca[_0xf778('0x11')])):![];var _0x46f6c4;if(_0x4baa5d[_0xf778('0x12')]){_0x4fc53b['id']=_0x4baa5d['xmd-contactid'];}if(!_0x4fc53b['id']){_0x4fc53b[_0xf778('0x13')]=_0x173905;_0x46f6c4=_0x2e63ca['data3']&&_0x2e63ca[_0xf778('0x14')]!=='0'?_0x2e63ca['data3'][_0xf778('0x15')](','):[_0xf778('0x16')];_0x4fc53b['$or']=_[_0xf778('0x17')](_0x46f6c4,function(_0x5a4ae9){var _0x3e59a4={};_0x3e59a4[_0x5a4ae9]=_0x4baa5d['routeId']?_0x4baa5d[_0xf778('0x18')]:_0x4baa5d['calleridnum'];return _0x3e59a4;});}var _0x36c502=['id',_0xf778('0x19'),_0xf778('0x1a'),_0xf778('0x16'),'mobile',_0xf778('0x1b'),_0xf778('0x13'),_0xf778('0x1c'),_0xf778('0x1d'),_0xf778('0x1e')];var _0xe8d118=_[_0xf778('0x1f')](_0x36c502,_0x46f6c4);BPromise[_0xf778('0x20')]()[_0xf778('0x21')](cmContactRpc['getContacts']({'attributes':_0xe8d118,'where':_0x4fc53b}))['then'](function(_0x264835){_0x51e1df=_0x264835;if(!_[_0xf778('0x22')](_0x51e1df)){if(_0x51e1df[_0xf778('0x23')]===0x1){_0x32bb9b=_0x51e1df[0x0];logger[_0xf778('0xc')](_0xf778('0x24'),_0x4baa5d['uniqueid'],_0x372aa9['id'],_0x32bb9b['id']);}else{logger[_0xf778('0xc')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x4baa5d[_0xf778('0x25')],_0x372aa9['id'],_[_0xf778('0x17')](_0x51e1df,'id')[_0xf778('0x26')](','));}return;}else{logger[_0xf778('0xc')](_0xf778('0x27'),_0x4baa5d[_0xf778('0x25')],_0x372aa9['id']);var _0x3d63f7={'ListId':_0x173905};var _0x390215=_0x2e63ca['data4']&&_0x2e63ca['data4']!=='0'?_0x2e63ca['data4']:_0xf778('0x16');if(_0x258cc7){logger[_0xf778('0xc')](_0xf778('0x28'),_0x4baa5d['uniqueid'],_0x372aa9['id']);_0x3d63f7[_0x390215]=_[_0xf778('0x29')](_0x4baa5d[_0xf778('0x2a')])?_0x4baa5d[_0xf778('0x2b')]:_0x4baa5d[_0xf778('0x18')];if(_[_0xf778('0x29')](_0x4baa5d[_0xf778('0x2a')])){_0x3d63f7[_0xf778('0x19')]=_0x4baa5d['calleridname']&&_0x4baa5d[_0xf778('0x2c')]!==_0xf778('0x2d')?_0x4baa5d[_0xf778('0x2c')]:_0xf778('0x2e');}else{_0x3d63f7[_0xf778('0x19')]=_0x4baa5d[_0xf778('0x2f')]&&_0x4baa5d[_0xf778('0x2f')]!==_0xf778('0x2d')?_0x4baa5d[_0xf778('0x2f')]:_0xf778('0x2e');}return BPromise[_0xf778('0x20')]()[_0xf778('0x21')](cmContactRpc[_0xf778('0x30')](_0x3d63f7))['then'](function(_0x44a08b){_0x32bb9b=_0x44a08b;_0x51e1df[_0xf778('0x31')](_0x44a08b);if(_0x32bb9b){logger['info'](_0xf778('0x32'),_0x4baa5d[_0xf778('0x25')],_0x372aa9['id'],_0x32bb9b['id']);}return;});}else{logger[_0xf778('0xc')](_0xf778('0x33'),_0x4baa5d[_0xf778('0x25')],_0x372aa9['id']);_0x3d63f7[_0x390215]=_[_0xf778('0x29')](_0x4baa5d['routeId'])?_0x4baa5d[_0xf778('0x2b')]:_0x4baa5d['destcalleridnum'];if(_[_0xf778('0x29')](_0x4baa5d[_0xf778('0x2a')])){_0x3d63f7[_0xf778('0x19')]=_0x4baa5d[_0xf778('0x2c')]&&_0x4baa5d[_0xf778('0x2c')]!==_0xf778('0x2d')?_0x4baa5d[_0xf778('0x2c')]:_0xf778('0x2e');}else{_0x3d63f7['firstName']=_0x4baa5d['destcalleridname']&&_0x4baa5d['destcalleridname']!=='<unknown>'?_0x4baa5d[_0xf778('0x2f')]:_0xf778('0x2e');}_0x32bb9b=_0x3d63f7;_0x51e1df[_0xf778('0x31')](_0x3d63f7);return;}}})['then'](function(){if(_0x53eecd){emit(_0x4baa5d[_0xf778('0x25')],_0x372aa9,util['format'](_0xf778('0x34'),_0x53eecd['name']),util[_0xf778('0x35')](_0xf778('0x36'),_0x2e63ca[_0xf778('0x37')][_0xf778('0x38')]()),{'evt':_[_0xf778('0x39')](_0x4baa5d,{'autoCreate':_0x258cc7}),'contact':_0x32bb9b===undefined?{}:_0x32bb9b,'contacts':_0x51e1df[_0xf778('0x23')]===0x0?undefined:_0x51e1df});}});};
\ No newline at end of file
index dbe5202..d02e6f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3511=['some','AnyConditions','field','account','chat','ChatWebsiteId','value','AccountId','operator','interaction','event','membername','lastevent','util','lodash','url','mustache','ioredis','./urlforward','./integration','./script','../../../config/environment','../../../config/logger','redis','defaults','localhost','popup','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','deskAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialend','custom:newinteraction','custom:incomingmessage','custom:outgoingmessage','custom:rejectmessage','prototype','emit','info','stringify','clone','checkTriggers','triggers','hasOwnProperty','status','merge','variables','Actions','length','interface','action','contactmanager','motionbar','browser','data1','TemplateId','data2','html','render','uri','buildUri','isNil','data3','data4','location','windowWidth','data5','800','windowHeight','data6','600','winapp','winApplication','winArguments','format','user:%s','name','trigger:%s','toLowerCase','exec','integration','queue','routeId','urlforward','script','parse','query','search','replace','checkTrigger','every','checkConditions','channel'];(function(_0x7a4c03,_0x2c502a){var _0x5ca3ae=function(_0x11420f){while(--_0x11420f){_0x7a4c03['push'](_0x7a4c03['shift']());}};_0x5ca3ae(++_0x2c502a);}(_0x3511,0x1e1));var _0x1351=function(_0x542d6b,_0x1615bd){_0x542d6b=_0x542d6b-0x0;var _0x22d616=_0x3511[_0x542d6b];return _0x22d616;};'use strict';var util=require(_0x1351('0x0'));var _=require(_0x1351('0x1'));var url=require(_0x1351('0x2'));var Mustache=require(_0x1351('0x3'));var Redis=require(_0x1351('0x4'));var urlforward=require(_0x1351('0x5'));var integration=require(_0x1351('0x6'));var cmContact=require('./cmContact');var script=require(_0x1351('0x7'));var config=require(_0x1351('0x8'));var logger=require(_0x1351('0x9'))('trigger');var ami=require('../ami');config[_0x1351('0xa')]=_[_0x1351('0xb')](config[_0x1351('0xa')],{'host':_0x1351('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1351('0xa')]));var operators={'equals':function(_0xc862a8,_0x462d5b){return _0xc862a8==_0x462d5b;},'not_equals':function(_0xb0405,_0x74e4b6){return _0xb0405!=_0x74e4b6;}};var barAndWebActions=[_0x1351('0xd'),_0x1351('0x2'),'winapp'];function Trigger(_0x4ae63a){this['triggers']=_0x4ae63a['triggers'];this[_0x1351('0xe')]=_0x4ae63a[_0x1351('0xe')];this[_0x1351('0xf')]=_0x4ae63a[_0x1351('0xf')];this[_0x1351('0x10')]=_0x4ae63a[_0x1351('0x10')];this['voiceExtensions']=_0x4ae63a[_0x1351('0x11')];this['zendeskAccounts']=_0x4ae63a[_0x1351('0x12')];this['freshdeskAccounts']=_0x4ae63a['freshdeskAccounts'];this['salesforceAccounts']=_0x4ae63a[_0x1351('0x13')];this[_0x1351('0x14')]=_0x4ae63a[_0x1351('0x14')];this['zohoAccounts']=_0x4ae63a[_0x1351('0x15')];this['deskAccounts']=_0x4ae63a['deskAccounts'];this['vtigerAccounts']=_0x4ae63a[_0x1351('0x16')];this[_0x1351('0x17')]=_0x4ae63a['servicenowAccounts'];this[_0x1351('0x18')]=_0x4ae63a[_0x1351('0x18')];this[_0x1351('0x19')]=_0x4ae63a[_0x1351('0x19')];this[_0x1351('0x1a')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x1351('0x13')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x1351('0x14')],'zoho':this['zohoAccounts'],'desk':this[_0x1351('0x1b')],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0x1351('0x18')],'freshsales':this[_0x1351('0x19')],'servicenow':this['servicenowAccounts']};ami['on'](_0x1351('0x1c'),this[_0x1351('0x1d')][_0x1351('0x1e')](this));ami['on']('custom:agentconnect',this['syncCustomEvent']['bind'](this));ami['on'](_0x1351('0x1f'),this[_0x1351('0x1d')][_0x1351('0x1e')](this));ami['on'](_0x1351('0x20'),this[_0x1351('0x1d')][_0x1351('0x1e')](this));ami['on'](_0x1351('0x21'),this[_0x1351('0x1d')][_0x1351('0x1e')](this));ami['on'](_0x1351('0x22'),this[_0x1351('0x1d')][_0x1351('0x1e')](this));ami['on']('custom:agentbusy',this['syncCustomEvent'][_0x1351('0x1e')](this));ami['on'](_0x1351('0x23'),this[_0x1351('0x1d')]['bind'](this));ami['on'](_0x1351('0x24'),this['syncCustomEvent'][_0x1351('0x1e')](this));ami['on'](_0x1351('0x25'),this[_0x1351('0x1d')]['bind'](this));ami['on'](_0x1351('0x26'),this[_0x1351('0x1d')]['bind'](this));ami['on'](_0x1351('0x27'),this[_0x1351('0x1d')]['bind'](this));ami['on'](_0x1351('0x28'),this[_0x1351('0x29')]['bind'](this));ami['on']('custom:dialconnect',this[_0x1351('0x29')][_0x1351('0x1e')](this));ami['on'](_0x1351('0x2a'),this[_0x1351('0x29')]['bind'](this));ami['on'](_0x1351('0x2b'),this[_0x1351('0x1d')][_0x1351('0x1e')](this));ami['on']('custom:closedinteraction',this['syncCustomEvent'][_0x1351('0x1e')](this));ami['on'](_0x1351('0x2c'),this['syncCustomEvent'][_0x1351('0x1e')](this));ami['on'](_0x1351('0x2d'),this['syncCustomEvent']['bind'](this));ami['on']('custom:acceptmessage',this[_0x1351('0x1d')][_0x1351('0x1e')](this));ami['on'](_0x1351('0x2e'),this[_0x1351('0x1d')][_0x1351('0x1e')](this));}Trigger[_0x1351('0x2f')][_0x1351('0x30')]=function(_0x3a6c96,_0x474448,_0x4cadaf){logger[_0x1351('0x31')](_0x3a6c96,_0x474448,JSON[_0x1351('0x32')](_0x4cadaf));io['to'](_0x3a6c96)['emit'](_0x474448,_0x4cadaf);};Trigger[_0x1351('0x2f')][_0x1351('0x1d')]=function(_0x8d2d9f){var _0x5e8d9b=_[_0x1351('0x33')](_0x8d2d9f);this[_0x1351('0x34')](_0x5e8d9b);};Trigger[_0x1351('0x2f')]['syncAgentDial']=function(_0xc9f63b){if(this[_0x1351('0xe')][_0xc9f63b['interface']]){this['syncCustomEvent'](_0xc9f63b);}};Trigger['prototype'][_0x1351('0x34')]=function(_0x1f2b5a){var _0x51f6dc;for(var _0x425b74 in this[_0x1351('0x35')]){if(this[_0x1351('0x35')][_0x1351('0x36')](_0x425b74)){if(this['triggers'][_0x425b74][_0x1351('0x37')]){_0x51f6dc=this['checkTrigger'](this[_0x1351('0x35')][_0x425b74],_0x1f2b5a);if(_0x51f6dc){_[_0x1351('0x38')](_0x1f2b5a,_0x1f2b5a[_0x1351('0x39')]);for(var _0x26b600=0x0,_0x407a37,_0x1a621c,_0x160db8;_0x26b600<this[_0x1351('0x35')][_0x425b74][_0x1351('0x3a')][_0x1351('0x3b')];_0x26b600+=0x1){_0x407a37=this[_0x1351('0x35')][_0x425b74]['Actions'][_0x26b600];if(this[_0x1351('0xe')][_0x1f2b5a[_0x1351('0x3c')]]){switch(_0x407a37[_0x1351('0x3d')]['toLowerCase']()){case _0x1351('0x3e'):break;case _0x1351('0x3f'):case _0x1351('0x40'):var _0x186f55={};switch(barAndWebActions[_0x407a37[_0x1351('0x41')]]){case _0x1351('0xd'):_0x186f55[_0x1351('0x42')]=_0x407a37[_0x1351('0x43')];_0x186f55[_0x1351('0x44')]=this[_0x1351('0x10')][_0x407a37['data2']]?Mustache[_0x1351('0x45')](this[_0x1351('0x10')][_0x407a37[_0x1351('0x43')]][_0x1351('0x44')],_0x1f2b5a):'template\x20not\x20found';break;case _0x1351('0x2'):_0x186f55[_0x1351('0x46')]=this[_0x1351('0x47')](_0x407a37[_0x1351('0x43')],_0x1f2b5a,_[_0x1351('0x48')](_0x407a37[_0x1351('0x49')])?!![]:parseInt(_0x407a37[_0x1351('0x49')],0xa));if(_[_0x1351('0x48')](_0x407a37[_0x1351('0x4a')])){_0x186f55[_0x1351('0x4b')]='0';}else{_0x186f55['uriLocation']=_0x407a37[_0x1351('0x4a')];_0x186f55[_0x1351('0x4c')]=_['isNil'](_0x407a37[_0x1351('0x4d')])?_0x1351('0x4e'):_0x407a37[_0x1351('0x4d')];_0x186f55[_0x1351('0x4f')]=_[_0x1351('0x48')](_0x407a37[_0x1351('0x50')])?_0x1351('0x51'):_0x407a37[_0x1351('0x50')];}break;case _0x1351('0x52'):_0x186f55[_0x1351('0x53')]=_0x407a37['data2']?Mustache[_0x1351('0x45')](_0x407a37['data2'],_0x1f2b5a):'';_0x186f55[_0x1351('0x54')]=_0x407a37[_0x1351('0x49')]?Mustache[_0x1351('0x45')](_0x407a37[_0x1351('0x49')],_0x1f2b5a):'';break;}this[_0x1351('0x30')](util[_0x1351('0x55')]('user:%s',this[_0x1351('0xe')][_0x1f2b5a[_0x1351('0x3c')]]['name']),util[_0x1351('0x55')]('trigger:%s:%s',_0x407a37[_0x1351('0x3d')]['toLowerCase'](),barAndWebActions[_0x407a37[_0x1351('0x41')]]),_[_0x1351('0x38')](_0x186f55,_0x1f2b5a));break;case'jscripty':this['emit'](util[_0x1351('0x55')](_0x1351('0x56'),this[_0x1351('0xe')][_0x1f2b5a[_0x1351('0x3c')]][_0x1351('0x57')]),util[_0x1351('0x55')](_0x1351('0x58'),_0x407a37[_0x1351('0x3d')][_0x1351('0x59')]()),_[_0x1351('0x38')]({'ProjectId':parseInt(_0x407a37['data1'],0xa)},_0x1f2b5a));break;default:this[_0x1351('0x30')](util[_0x1351('0x55')](_0x1351('0x56'),this['agents'][_0x1f2b5a[_0x1351('0x3c')]]['name']),util['format'](_0x1351('0x58'),_0x407a37['action'][_0x1351('0x59')]()),_[_0x1351('0x38')]({},_0x407a37,_0x1f2b5a));}}switch(_0x407a37[_0x1351('0x3d')][_0x1351('0x59')]()){case _0x1351('0x3e'):cmContact[_0x1351('0x5a')](this[_0x1351('0xe')][_0x1f2b5a['interface']],this[_0x1351('0x35')][_0x425b74],_0x407a37,_0x1f2b5a);break;case _0x1351('0x5b'):integration[_0x1351('0x5a')](_0x407a37,_0x1f2b5a,this[_0x1351('0x1a')],this[_0x1351('0xe')][_0x1f2b5a[_0x1351('0x3c')]],this[_0x1351('0xf')][_0x1f2b5a[_0x1351('0x5c')]],this[_0x1351('0x11')][_0x1f2b5a[_0x1351('0x5d')]]);break;case _0x1351('0x5e'):urlforward[_0x1351('0x5a')](_0x407a37,_0x1f2b5a);break;case _0x1351('0x5f'):script[_0x1351('0x5a')](_0x407a37,_0x1f2b5a);break;}}}}}}};Trigger['prototype']['buildUri']=function(_0x59a5d5,_0x1fcf9b,_0x36b53a){var _0x3c8dcd=url[_0x1351('0x60')](Mustache[_0x1351('0x45')](_0x59a5d5,_0x1fcf9b),!![]);if(_0x36b53a){_[_0x1351('0x38')](_0x3c8dcd[_0x1351('0x61')],_0x1fcf9b);}delete _0x3c8dcd[_0x1351('0x62')];var _0x12dde8=url[_0x1351('0x55')](_0x3c8dcd);_0x12dde8=_0x12dde8[_0x1351('0x63')](/\/\?/g,'?');return _0x12dde8;};Trigger[_0x1351('0x2f')][_0x1351('0x64')]=function(_0x951d19,_0x127596){var _0x4d3fff=!![],_0x49ca53=!![];if(_0x951d19['AllConditions']['length']){_0x4d3fff=_[_0x1351('0x65')](_0x951d19['AllConditions'],this[_0x1351('0x66')](_0x127596,_0x951d19[_0x1351('0x67')]));}if(_0x951d19['AnyConditions'][_0x1351('0x3b')]){_0x49ca53=_[_0x1351('0x68')](_0x951d19[_0x1351('0x69')],this['checkConditions'](_0x127596,_0x951d19[_0x1351('0x67')]));}return _0x4d3fff&&_0x49ca53;};Trigger[_0x1351('0x2f')][_0x1351('0x66')]=function(_0xac8b49,_0xe88168){return function(_0xf8008d){switch(_0xf8008d[_0x1351('0x6a')]){case _0x1351('0x6b'):if(_0xac8b49[_0x1351('0x67')]===_0xe88168){if(_0xe88168===_0x1351('0x6c')){return _0xac8b49[_0x1351('0x6d')]?operators[_0xf8008d['operator']](Number(_0xf8008d[_0x1351('0x6e')]),_0xac8b49[_0x1351('0x6d')]):![];}else{return _0xac8b49[_['upperFirst'](_0xe88168)+_0x1351('0x6f')]?operators[_0xf8008d[_0x1351('0x70')]](Number(_0xf8008d['value']),_0xac8b49[_['upperFirst'](_0xe88168)+_0x1351('0x6f')]):![];}}break;case _0x1351('0x71'):case'message':if(_0xac8b49[_0x1351('0x67')]===_0xe88168){return _0xac8b49[_0x1351('0x72')]?operators[_0xf8008d[_0x1351('0x70')]](_0xf8008d[_0x1351('0x6e')],_0xac8b49[_0x1351('0x72')]):![];}break;case _0x1351('0x5c'):return _0xac8b49['queue']?operators[_0xf8008d['operator']](_0xf8008d[_0x1351('0x6e')],_0xac8b49['queue']):![];case'agent':return _0xac8b49[_0x1351('0x73')]?operators[_0xf8008d[_0x1351('0x70')]](_0xf8008d[_0x1351('0x6e')],_0xac8b49[_0x1351('0x73')]):![];case'lastevent':return _0xac8b49['lastevent']?operators[_0xf8008d[_0x1351('0x70')]](_0xf8008d['value'],_0xac8b49[_0x1351('0x74')]):![];case _0x1351('0x5d'):return _0xac8b49[_0x1351('0x5d')]?operators[_0xf8008d['operator']](_0xf8008d[_0x1351('0x6e')],_0xac8b49['routeId']):![];}return![];};};module['exports']=Trigger;
\ No newline at end of file
+var _0x332f=['prototype','info','stringify','motionChannel','undefined','voice','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','variables','length','Actions','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','data2','html','template\x20not\x20found','uri','isNil','data3','data4','location','uriLocation','data5','windowHeight','data6','600','winApplication','render','winArguments','emit','format','user:%s','jscripty','name','trigger:%s','integration','exec','queue','urlforward','script','parse','query','search','channel','AllConditions','every','AnyConditions','some','checkConditions','field','account','chat','ChatWebsiteId','value','upperFirst','AccountId','operator','interaction','event','membername','lastevent','routeId','exports','util','lodash','ioredis','./integration','./cmContact','../../../config/environment','../../../config/logger','trigger','../ami','redis','localhost','socket.io-emitter','popup','url','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','bind','custom:agentconnect','syncCustomEvent','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentcongestion','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:rejectmessage'];(function(_0x571e53,_0x3cc029){var _0x21343a=function(_0x442785){while(--_0x442785){_0x571e53['push'](_0x571e53['shift']());}};_0x21343a(++_0x3cc029);}(_0x332f,0x1aa));var _0xf332=function(_0x25f000,_0x390309){_0x25f000=_0x25f000-0x0;var _0x6b6acd=_0x332f[_0x25f000];return _0x6b6acd;};'use strict';var util=require(_0xf332('0x0'));var _=require(_0xf332('0x1'));var url=require('url');var Mustache=require('mustache');var Redis=require(_0xf332('0x2'));var urlforward=require('./urlforward');var integration=require(_0xf332('0x3'));var cmContact=require(_0xf332('0x4'));var script=require('./script');var config=require(_0xf332('0x5'));var logger=require(_0xf332('0x6'))(_0xf332('0x7'));var ami=require(_0xf332('0x8'));config[_0xf332('0x9')]=_['defaults'](config['redis'],{'host':_0xf332('0xa'),'port':0x18eb});var io=require(_0xf332('0xb'))(new Redis(config[_0xf332('0x9')]));var operators={'equals':function(_0x4a5586,_0x249d62){return _0x4a5586==_0x249d62;},'not_equals':function(_0xa0fc8d,_0x22f39d){return _0xa0fc8d!=_0x22f39d;}};var barAndWebActions=[_0xf332('0xc'),_0xf332('0xd'),'winapp'];function Trigger(_0x84ca77){this[_0xf332('0xe')]=_0x84ca77[_0xf332('0xe')];this[_0xf332('0xf')]=_0x84ca77[_0xf332('0xf')];this['voiceQueues']=_0x84ca77[_0xf332('0x10')];this[_0xf332('0x11')]=_0x84ca77[_0xf332('0x11')];this[_0xf332('0x12')]=_0x84ca77['voiceExtensions'];this[_0xf332('0x13')]=_0x84ca77[_0xf332('0x13')];this['freshdeskAccounts']=_0x84ca77[_0xf332('0x14')];this[_0xf332('0x15')]=_0x84ca77[_0xf332('0x15')];this['sugarcrmAccounts']=_0x84ca77['sugarcrmAccounts'];this['zohoAccounts']=_0x84ca77[_0xf332('0x16')];this[_0xf332('0x17')]=_0x84ca77[_0xf332('0x17')];this[_0xf332('0x18')]=_0x84ca77[_0xf332('0x18')];this['servicenowAccounts']=_0x84ca77[_0xf332('0x19')];this[_0xf332('0x1a')]=_0x84ca77[_0xf332('0x1a')];this[_0xf332('0x1b')]=_0x84ca77[_0xf332('0x1b')];this[_0xf332('0x1c')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0xf332('0x15')],'freshdesk':this[_0xf332('0x14')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0xf332('0x16')],'desk':this[_0xf332('0x17')],'vtiger':this[_0xf332('0x18')],'dynamics365':this[_0xf332('0x1a')],'freshsales':this[_0xf332('0x1b')],'servicenow':this[_0xf332('0x19')]};ami['on']('custom:agentcalled',this['syncCustomEvent'][_0xf332('0x1d')](this));ami['on'](_0xf332('0x1e'),this[_0xf332('0x1f')][_0xf332('0x1d')](this));ami['on'](_0xf332('0x20'),this[_0xf332('0x1f')][_0xf332('0x1d')](this));ami['on'](_0xf332('0x21'),this[_0xf332('0x1f')]['bind'](this));ami['on'](_0xf332('0x22'),this[_0xf332('0x1f')][_0xf332('0x1d')](this));ami['on'](_0xf332('0x23'),this[_0xf332('0x1f')][_0xf332('0x1d')](this));ami['on']('custom:agentbusy',this[_0xf332('0x1f')][_0xf332('0x1d')](this));ami['on'](_0xf332('0x24'),this[_0xf332('0x1f')][_0xf332('0x1d')](this));ami['on']('custom:agentreject',this[_0xf332('0x1f')][_0xf332('0x1d')](this));ami['on'](_0xf332('0x25'),this[_0xf332('0x1f')][_0xf332('0x1d')](this));ami['on']('custom:queuecallerabandon',this[_0xf332('0x1f')]['bind'](this));ami['on'](_0xf332('0x26'),this['syncCustomEvent'][_0xf332('0x1d')](this));ami['on'](_0xf332('0x27'),this[_0xf332('0x28')][_0xf332('0x1d')](this));ami['on'](_0xf332('0x29'),this['syncAgentDial'][_0xf332('0x1d')](this));ami['on']('custom:dialend',this[_0xf332('0x28')]['bind'](this));ami['on'](_0xf332('0x2a'),this[_0xf332('0x1f')][_0xf332('0x1d')](this));ami['on'](_0xf332('0x2b'),this['syncCustomEvent'][_0xf332('0x1d')](this));ami['on'](_0xf332('0x2c'),this[_0xf332('0x1f')][_0xf332('0x1d')](this));ami['on']('custom:outgoingmessage',this[_0xf332('0x1f')]['bind'](this));ami['on']('custom:acceptmessage',this['syncCustomEvent'][_0xf332('0x1d')](this));ami['on'](_0xf332('0x2d'),this[_0xf332('0x1f')][_0xf332('0x1d')](this));}Trigger[_0xf332('0x2e')]['emit']=function(_0x5a398d,_0x23c2c0,_0x4bec32){logger[_0xf332('0x2f')](_0x5a398d,_0x23c2c0,JSON[_0xf332('0x30')](_0x4bec32));io['to'](_0x5a398d)['emit'](_0x23c2c0,_0x4bec32);};Trigger['prototype'][_0xf332('0x1f')]=function(_0x1d7ca0){var _0x335ff7=_['clone'](_0x1d7ca0);if(typeof _0x335ff7[_0xf332('0x31')]===_0xf332('0x32')){_0x335ff7[_0xf332('0x31')]=_0xf332('0x33');}this[_0xf332('0x34')](_0x335ff7);};Trigger[_0xf332('0x2e')]['syncAgentDial']=function(_0x516000){if(this['agents'][_0x516000[_0xf332('0x35')]]){this[_0xf332('0x1f')](_0x516000);}};Trigger[_0xf332('0x2e')]['checkTriggers']=function(_0x48e06f){var _0x2f509d;for(var _0x27f98b in this[_0xf332('0xe')]){if(this[_0xf332('0xe')][_0xf332('0x36')](_0x27f98b)){if(this[_0xf332('0xe')][_0x27f98b][_0xf332('0x37')]){_0x2f509d=this[_0xf332('0x38')](this[_0xf332('0xe')][_0x27f98b],_0x48e06f);if(_0x2f509d){_[_0xf332('0x39')](_0x48e06f,_0x48e06f[_0xf332('0x3a')]);for(var _0xf28350=0x0,_0x178391,_0x1df83d,_0x2354cc;_0xf28350<this[_0xf332('0xe')][_0x27f98b]['Actions'][_0xf332('0x3b')];_0xf28350+=0x1){_0x178391=this[_0xf332('0xe')][_0x27f98b][_0xf332('0x3c')][_0xf28350];if(this[_0xf332('0xf')][_0x48e06f[_0xf332('0x35')]]){switch(_0x178391[_0xf332('0x3d')][_0xf332('0x3e')]()){case _0xf332('0x3f'):break;case _0xf332('0x40'):case _0xf332('0x41'):var _0x21ad33={};switch(barAndWebActions[_0x178391[_0xf332('0x42')]]){case _0xf332('0xc'):_0x21ad33[_0xf332('0x43')]=_0x178391[_0xf332('0x44')];_0x21ad33[_0xf332('0x45')]=this[_0xf332('0x11')][_0x178391[_0xf332('0x44')]]?Mustache['render'](this[_0xf332('0x11')][_0x178391[_0xf332('0x44')]]['html'],_0x48e06f):_0xf332('0x46');break;case _0xf332('0xd'):_0x21ad33[_0xf332('0x47')]=this['buildUri'](_0x178391['data2'],_0x48e06f,_[_0xf332('0x48')](_0x178391[_0xf332('0x49')])?!![]:parseInt(_0x178391[_0xf332('0x49')],0xa));if(_[_0xf332('0x48')](_0x178391[_0xf332('0x4a')])){_0x21ad33[_0xf332('0x4b')]='0';}else{_0x21ad33[_0xf332('0x4c')]=_0x178391[_0xf332('0x4a')];_0x21ad33['windowWidth']=_[_0xf332('0x48')](_0x178391[_0xf332('0x4d')])?'800':_0x178391['data5'];_0x21ad33[_0xf332('0x4e')]=_['isNil'](_0x178391[_0xf332('0x4f')])?_0xf332('0x50'):_0x178391[_0xf332('0x4f')];}break;case'winapp':_0x21ad33[_0xf332('0x51')]=_0x178391['data2']?Mustache[_0xf332('0x52')](_0x178391[_0xf332('0x44')],_0x48e06f):'';_0x21ad33[_0xf332('0x53')]=_0x178391[_0xf332('0x49')]?Mustache[_0xf332('0x52')](_0x178391['data3'],_0x48e06f):'';break;}this[_0xf332('0x54')](util[_0xf332('0x55')](_0xf332('0x56'),this['agents'][_0x48e06f[_0xf332('0x35')]]['name']),util['format']('trigger:%s:%s',_0x178391[_0xf332('0x3d')][_0xf332('0x3e')](),barAndWebActions[_0x178391[_0xf332('0x42')]]),_[_0xf332('0x39')](_0x21ad33,_0x48e06f));break;case _0xf332('0x57'):this[_0xf332('0x54')](util[_0xf332('0x55')](_0xf332('0x56'),this['agents'][_0x48e06f[_0xf332('0x35')]][_0xf332('0x58')]),util[_0xf332('0x55')]('trigger:%s',_0x178391['action'][_0xf332('0x3e')]()),_[_0xf332('0x39')]({'ProjectId':parseInt(_0x178391[_0xf332('0x42')],0xa)},_0x48e06f));break;default:this[_0xf332('0x54')](util[_0xf332('0x55')](_0xf332('0x56'),this['agents'][_0x48e06f[_0xf332('0x35')]]['name']),util['format'](_0xf332('0x59'),_0x178391[_0xf332('0x3d')]['toLowerCase']()),_[_0xf332('0x39')]({},_0x178391,_0x48e06f));}}switch(_0x178391[_0xf332('0x3d')]['toLowerCase']()){case _0xf332('0x3f'):cmContact['exec'](this[_0xf332('0xf')][_0x48e06f[_0xf332('0x35')]],this[_0xf332('0xe')][_0x27f98b],_0x178391,_0x48e06f);break;case _0xf332('0x5a'):integration[_0xf332('0x5b')](_0x178391,_0x48e06f,this[_0xf332('0x1c')],this[_0xf332('0xf')][_0x48e06f[_0xf332('0x35')]],this[_0xf332('0x10')][_0x48e06f[_0xf332('0x5c')]],this[_0xf332('0x12')][_0x48e06f['routeId']]);break;case _0xf332('0x5d'):urlforward[_0xf332('0x5b')](_0x178391,_0x48e06f);break;case _0xf332('0x5e'):script[_0xf332('0x5b')](_0x178391,_0x48e06f);break;}}}}}}};Trigger[_0xf332('0x2e')]['buildUri']=function(_0x19c934,_0x4d6991,_0x3d36ed){var _0x103a51=url[_0xf332('0x5f')](Mustache[_0xf332('0x52')](_0x19c934,_0x4d6991),!![]);if(_0x3d36ed){_[_0xf332('0x39')](_0x103a51[_0xf332('0x60')],_0x4d6991);}delete _0x103a51[_0xf332('0x61')];var _0x4e1c5e=url[_0xf332('0x55')](_0x103a51);_0x4e1c5e=_0x4e1c5e['replace'](/\/\?/g,'?');return _0x4e1c5e;};Trigger[_0xf332('0x2e')][_0xf332('0x38')]=function(_0x4aa70b,_0x2af279){var _0x79b33=!![];var _0x23829c=!![];var _0xfb0439=![];if(_0x4aa70b[_0xf332('0x62')]===_0x2af279[_0xf332('0x31')]){_0xfb0439=!![];}if(_0x4aa70b[_0xf332('0x63')]['length']){_0x79b33=_[_0xf332('0x64')](_0x4aa70b[_0xf332('0x63')],this['checkConditions'](_0x2af279,_0x4aa70b[_0xf332('0x62')]));}if(_0x4aa70b[_0xf332('0x65')]['length']){_0x23829c=_[_0xf332('0x66')](_0x4aa70b[_0xf332('0x65')],this[_0xf332('0x67')](_0x2af279,_0x4aa70b[_0xf332('0x62')]));}return _0xfb0439&&_0x79b33&&_0x23829c;};Trigger[_0xf332('0x2e')]['checkConditions']=function(_0x3e53f6,_0xf5f0b6){return function(_0x3465e8){switch(_0x3465e8[_0xf332('0x68')]){case _0xf332('0x69'):if(_0x3e53f6[_0xf332('0x62')]===_0xf5f0b6){if(_0xf5f0b6===_0xf332('0x6a')){return _0x3e53f6[_0xf332('0x6b')]?operators[_0x3465e8['operator']](Number(_0x3465e8[_0xf332('0x6c')]),_0x3e53f6['ChatWebsiteId']):![];}else{return _0x3e53f6[_[_0xf332('0x6d')](_0xf5f0b6)+_0xf332('0x6e')]?operators[_0x3465e8[_0xf332('0x6f')]](Number(_0x3465e8[_0xf332('0x6c')]),_0x3e53f6[_[_0xf332('0x6d')](_0xf5f0b6)+_0xf332('0x6e')]):![];}}break;case _0xf332('0x70'):case'message':if(_0x3e53f6[_0xf332('0x62')]===_0xf5f0b6){return _0x3e53f6[_0xf332('0x71')]?operators[_0x3465e8['operator']](_0x3465e8[_0xf332('0x6c')],_0x3e53f6[_0xf332('0x71')]):![];}break;case'queue':return _0x3e53f6['queue']?operators[_0x3465e8['operator']](_0x3465e8['value'],_0x3e53f6[_0xf332('0x5c')]):![];case'agent':return _0x3e53f6[_0xf332('0x72')]?operators[_0x3465e8[_0xf332('0x6f')]](_0x3465e8['value'],_0x3e53f6[_0xf332('0x72')]):![];case _0xf332('0x73'):return _0x3e53f6[_0xf332('0x73')]?operators[_0x3465e8[_0xf332('0x6f')]](_0x3465e8[_0xf332('0x6c')],_0x3e53f6['lastevent']):![];case _0xf332('0x74'):return _0x3e53f6[_0xf332('0x74')]?operators[_0x3465e8[_0xf332('0x6f')]](_0x3465e8['value'],_0x3e53f6[_0xf332('0x74')]):![];}return![];};};module[_0xf332('0x75')]=Trigger;
\ No newline at end of file
index 6c42f6c..3a9f487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['map','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','type','custom_fields','variable','variableName','idField','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','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','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','recordingURL','The\x20User\x20ID\x20is:','destcalleridnum','Ticket\x20created!','[OUTBOUND]','unmanaged','lastevent','Recording\x20is\x20enabled!','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','remoteUri','total_entries','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','%s/users/me','debug','stringify','authType','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','then','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1f83a5,_0x59843f){_0x1f83a5=_0x1f83a5-0x0;var _0x45edf0=_0x5fc3[_0x1f83a5];return _0x45edf0;};'use strict';var _=require(_0x35fc('0x0'));var rp=require(_0x35fc('0x1'));var md5=require('md5');var util=require(_0x35fc('0x2'));var Redis=require(_0x35fc('0x3'));var intUtil=require(_0x35fc('0x4'));var config=require(_0x35fc('0x5'));var logger=require(_0x35fc('0x6'))('desk');config[_0x35fc('0x7')]=_[_0x35fc('0x8')](config[_0x35fc('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x35fc('0x7')]));function emit(_0x508b32,_0x16e153,_0x27524f){io['to'](_0x508b32)[_0x35fc('0x9')](_0x16e153,_0x27524f);}var headers={'Content-Type':_0x35fc('0xa'),'Accept':_0x35fc('0xa')};function getUser(_0xf9d3a6,_0x2051ab){if(intUtil['validateEmail'](_0x2051ab)===!![]){logger[_0x35fc('0xb')](_0x35fc('0xc'),_0x2051ab);return request({'uri':util['format'](_0x35fc('0xd'),_0xf9d3a6[_0x35fc('0xe')])})['then'](function(_0xda83fb){if(_0xda83fb[_0x35fc('0xf')]){return _['find'](_0xda83fb['_embedded'][_0x35fc('0x10')],{'email':_0x2051ab});}})['then'](function(_0x397738){if(_0x397738){logger[_0x35fc('0xb')](_0x35fc('0x11'));return _0x397738;}else{logger[_0x35fc('0xb')](_0x35fc('0x12'));return request({'uri':util['format']('%s/users/me',_0xf9d3a6['remoteUri'])});}});}else{logger['info'](_0x35fc('0x13'));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x15'),_0xf9d3a6[_0x35fc('0xe')])});}}function request(_0x227a49){logger[_0x35fc('0x16')]('[HTTP]',JSON[_0x35fc('0x17')](_0x227a49));return rp(_[_0x35fc('0x8')](_0x227a49,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x41e165){var _0x363e47;if(_0x41e165[_0x35fc('0x18')]==='basic'){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x19'),_0x41e165[_0x35fc('0x1a')],_0x41e165['password']);}else if(_0x41e165[_0x35fc('0x18')]===_0x35fc('0x1b')){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x1c'),_0x41e165[_0x35fc('0x1a')],_0x41e165[_0x35fc('0x1b')]);}return util[_0x35fc('0x14')](_0x35fc('0x1d'),new Buffer(_0x363e47)[_0x35fc('0x1e')](_0x35fc('0x1f')));}function getEndUser(_0x5bd2b8,_0x323aee,_0xd5399f){logger[_0x35fc('0xb')](_0x35fc('0x20'),_0xd5399f);return request({'uri':util[_0x35fc('0x14')]('%s/customers/search',_0x5bd2b8[_0x35fc('0xe')]),'qs':{'phone':_0xd5399f}})[_0x35fc('0x21')](function(_0x561bf8){if(_0x561bf8[_0x35fc('0xf')]){logger[_0x35fc('0xb')](_0x35fc('0x22'));return _0x561bf8['_embedded'][_0x35fc('0x10')][0x0];}else{logger['info'](_0x35fc('0x23'));return request({'uri':util[_0x35fc('0x14')]('%s/customers',_0x5bd2b8['remoteUri']),'method':_0x35fc('0x24'),'body':{'first_name':_0x323aee,'title':_0x323aee,'phone_numbers':[{'type':'work','value':_0xd5399f}]}});}});}function getTags(_0x274208,_0x1a5d92){var _0x57001c=[];if(_0x274208&&_0x274208[_0x35fc('0x25')]>0x0){_0x57001c=_[_0x35fc('0x26')](_0x274208,_0x1a5d92);}return _0x57001c;}function getCustomFields(_0x383837,_0x9f3c8a){var _0x3735da=[];var _0x134dfa={'custom_fields':{}};if(_0x383837[_0x35fc('0x25')]>0x0){_[_0x35fc('0x27')](_0x383837,function(_0x54aedc){if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc['type'])&&_0x54aedc[_0x35fc('0x2b')]&&!_0x54aedc[_0x35fc('0x2c')]){_0x134dfa[_0x54aedc[_0x35fc('0x2b')][_0x35fc('0x2d')]()]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc[_0x35fc('0x2f')])&&_0x54aedc['idField']&&_0x54aedc['customField']){_0x134dfa[_0x35fc('0x30')][_0x54aedc['idField']]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_0x54aedc[_0x35fc('0x2f')]===_0x35fc('0x31')&&_0x54aedc[_0x35fc('0x32')]&&_0x54aedc[_0x35fc('0x33')]&&_0x54aedc['customField']){_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]][_0x35fc('0x1e')]());}else if(_0x54aedc[_0x35fc('0x2f')]==='customVariable'&&_0x54aedc[_0x35fc('0x34')]&&_0x54aedc[_0x35fc('0x34')][_0x35fc('0x35')]&&_0x54aedc['idField']&&_0x54aedc[_0x35fc('0x2c')]){_0x9f3c8a[_0x54aedc['Variable'][_0x35fc('0x35')][_0x35fc('0x2d')]()]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc['Variable']['name']['toLowerCase']()][_0x35fc('0x1e')]());}});}if(_0x134dfa['priority']){_0x134dfa[_0x35fc('0x36')]=Number(_0x134dfa['priority']);}return _0x134dfa;}function getTicket(_0x9c6b65,_0x1f2d66,_0x2ca9ac,_0x22b724,_0x1c10e0){logger[_0x35fc('0xb')](_0x35fc('0x37'));var _0x4ec0dc=_[_0x35fc('0x38')]({'subject':intUtil[_0x35fc('0x39')](_0x22b724['Subjects'],_0x1c10e0,'\x20'),'type':_0x35fc('0x3a'),'status':_0x35fc('0x3b'),'labels':[_0x35fc('0x3c'),_0x35fc('0x3d'),_0x35fc('0x3e')][_0x35fc('0x3f')](getTags(_0x22b724['Tags'],_0x35fc('0x35'))),'description':intUtil[_0x35fc('0x39')](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0x35fc('0x41'),_0x1f2d66['id']),'class':_0x35fc('0x42')}},'message':{'direction':'in','body':intUtil['getString'](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a')}},getCustomFields(_0x22b724[_0x35fc('0x43')],_0x1c10e0));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x44'),_0x9c6b65[_0x35fc('0xe')],_0x2ca9ac['id']),'method':_0x35fc('0x24'),'body':_0x4ec0dc});}exports[_0x35fc('0x45')]=function(_0x3ec51f,_0x5a7e9e,_0x596e83,_0x210d5d,_0x36fcf9,_0x4fdc6d){var _0x5c2e5c,_0x4ff202;_0x4fdc6d[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x4fdc6d['remoteUri']);_0x4fdc6d[_0x35fc('0x47')]=intUtil[_0x35fc('0x46')](_0x4fdc6d[_0x35fc('0x47')]);if(_0x36fcf9&&_0x36fcf9[_0x35fc('0x48')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x5a7e9e['recordingURL']=util['format'](_0x35fc('0x49'),_0x4fdc6d[_0x35fc('0x47')],_0x5a7e9e['uniqueid'],md5(_0x5a7e9e[_0x35fc('0x4a')]));}else{_0x5a7e9e['recordingURL']='';}headers[_0x35fc('0x4b')]=getAuth(_0x4fdc6d);return getUser(_0x4fdc6d,_0x210d5d[_0x35fc('0x4c')])[_0x35fc('0x21')](function(_0x2de5d1){_0x5c2e5c=_0x2de5d1;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x5c2e5c['id']);return getEndUser(_0x4fdc6d,_0x5a7e9e[_0x35fc('0x4d')],_0x5a7e9e[_0x35fc('0x4e')]);})['then'](function(_0x18181b){_0x4ff202=_0x18181b;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x4ff202['id']);return getTicket(_0x4fdc6d,_0x5c2e5c,_0x4ff202,_0x596e83,_0x5a7e9e);})[_0x35fc('0x21')](function(_0x5bc8c3){if(_0x5bc8c3){logger[_0x35fc('0xb')]('Ticket\x20created!');logger['info'](_0x35fc('0x50'),_0x5bc8c3['id']);switch(_0x4fdc6d[_0x35fc('0x2f')]){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x53'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d['name']),_0x35fc('0x55'),{'recordId':_0x5bc8c3['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d[_0x35fc('0x35')]),_0x35fc('0x58'),{'uri':util[_0x35fc('0x14')](_0x35fc('0x59'),_0x5bc8c3['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x52'),_0x35fc('0x5b'));}}})['catch'](function(_0x553ed6){console[_0x35fc('0x5a')](_0x553ed6);logger[_0x35fc('0x5a')](_0x35fc('0x52'),JSON[_0x35fc('0x17')](_0x553ed6));});};exports[_0x35fc('0x5c')]=function(_0x3e6494,_0x4a4798,_0x4f024c,_0x388521,_0x19b2ce,_0x395d63,_0x38bc78){var _0x5b2595,_0x467980;_0x395d63[_0x35fc('0xe')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0xe')]);_0x395d63[_0x35fc('0x47')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0x47')]);if(_0x38bc78&&_0x38bc78[_0x35fc('0x5d')]&&_0x38bc78[_0x35fc('0x5d')]!==_0x35fc('0x5e')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x4a4798[_0x35fc('0x5f')]=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x395d63[_0x35fc('0x47')],_0x4a4798[_0x35fc('0x4a')],md5(_0x4a4798[_0x35fc('0x4a')]));}headers[_0x35fc('0x4b')]=getAuth(_0x395d63);return getUser(_0x395d63,_0x388521[_0x35fc('0x4c')])['then'](function(_0x2d9d45){_0x5b2595=_0x2d9d45;logger[_0x35fc('0xb')](_0x35fc('0x60'),_0x5b2595['id']);return getEndUser(_0x395d63,_0x4a4798['destcalleridname'],_0x4a4798[_0x35fc('0x61')]);})[_0x35fc('0x21')](function(_0x47fb1a){_0x467980=_0x47fb1a;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x467980['id']);return getTicket(_0x395d63,_0x5b2595,_0x467980,_0x4f024c,_0x4a4798);})[_0x35fc('0x21')](function(_0x1c4c33){if(_0x1c4c33){logger[_0x35fc('0xb')](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x1c4c33['id']);switch(_0x395d63['type']){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:desk:display',{'recordId':_0x1c4c33['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x395d63[_0x35fc('0xe')],_0x1c4c33['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x63'),_0x35fc('0x5b'));}}})['catch'](function(_0x458eb8){logger[_0x35fc('0x5a')](_0x35fc('0x63'),JSON[_0x35fc('0x17')](_0x458eb8));});};exports[_0x35fc('0x64')]=function(_0x1d0e53,_0x27071b,_0x2127e0,_0x462ceb,_0x4c3ace,_0x35d7c8){var _0x47c75f,_0xfbd737;_0x35d7c8[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x35d7c8[_0x35fc('0xe')]);_0x35d7c8['serverUrl']=intUtil[_0x35fc('0x46')](_0x35d7c8['serverUrl']);if(_0x4c3ace&&_0x4c3ace['monitor_format']){logger['info']('['+_0x27071b[_0x35fc('0x65')]['toUpperCase']()+']',_0x35fc('0x66'));_0x27071b['recordingURL']=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x35d7c8[_0x35fc('0x47')],_0x27071b[_0x35fc('0x4a')],md5(_0x27071b[_0x35fc('0x4a')]));}else{_0x27071b[_0x35fc('0x5f')]='';}headers['Authorization']=getAuth(_0x35d7c8);return getUser(_0x35d7c8)[_0x35fc('0x21')](function(_0x1e2214){_0x47c75f=_0x1e2214;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x47c75f['id']);return getEndUser(_0x35d7c8,_0x27071b[_0x35fc('0x4d')],_0x27071b[_0x35fc('0x4e')]);})[_0x35fc('0x21')](function(_0x3c1b56){_0xfbd737=_0x3c1b56;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0xfbd737['id']);return getTicket(_0x35d7c8,_0x47c75f,_0xfbd737,_0x2127e0,_0x27071b);})[_0x35fc('0x21')](function(_0x4464d5){if(_0x4464d5){logger['info'](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x4464d5['id']);}})['catch'](function(_0x1c88d8){logger[_0x35fc('0x5a')]('['+_0x27071b['lastevent']['toUpperCase']()+']',JSON[_0x35fc('0x17')](_0x1c88d8));});};
\ No newline at end of file
+var _0x55ca=['debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','token','%s/token:%s','toString','base64','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','_embedded','entries','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','length','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','custom_fields','variable','variableName','customVariable','Variable','name','priority','merge','xCALLY','Motion','CTI','concat','Tags','getString','Descriptions','/api/v2/users/%d','user','Fields','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','./util','../../../../config/environment','desk','redis','defaults','localhost','socket.io-emitter','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','remoteUri','then','total_entries','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me'];(function(_0x1f88b7,_0x2b6465){var _0x33000a=function(_0x2b38b9){while(--_0x2b38b9){_0x1f88b7['push'](_0x1f88b7['shift']());}};_0x33000a(++_0x2b6465);}(_0x55ca,0x126));var _0xa55c=function(_0x43de93,_0x5daf15){_0x43de93=_0x43de93-0x0;var _0x168e48=_0x55ca[_0x43de93];return _0x168e48;};'use strict';var _=require(_0xa55c('0x0'));var rp=require(_0xa55c('0x1'));var md5=require('md5');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xa55c('0x2'));var config=require(_0xa55c('0x3'));var logger=require('../../../../config/logger')(_0xa55c('0x4'));config[_0xa55c('0x5')]=_[_0xa55c('0x6')](config[_0xa55c('0x5')],{'host':_0xa55c('0x7'),'port':0x18eb});var io=require(_0xa55c('0x8'))(new Redis(config[_0xa55c('0x5')]));function emit(_0x4d0624,_0x2121fd,_0x2537f0){io['to'](_0x4d0624)['emit'](_0x2121fd,_0x2537f0);}var headers={'Content-Type':_0xa55c('0x9'),'Accept':_0xa55c('0x9')};function getUser(_0x52a3bc,_0x5849ad){if(intUtil[_0xa55c('0xa')](_0x5849ad)===!![]){logger[_0xa55c('0xb')](_0xa55c('0xc'),_0x5849ad);return request({'uri':util[_0xa55c('0xd')](_0xa55c('0xe'),_0x52a3bc[_0xa55c('0xf')])})[_0xa55c('0x10')](function(_0x70c2de){if(_0x70c2de[_0xa55c('0x11')]){return _[_0xa55c('0x12')](_0x70c2de['_embedded']['entries'],{'email':_0x5849ad});}})[_0xa55c('0x10')](function(_0x576044){if(_0x576044){logger['info']('Agent\x20found!');return _0x576044;}else{logger[_0xa55c('0xb')](_0xa55c('0x13'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}});}else{logger[_0xa55c('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}}function request(_0x31e10d){logger[_0xa55c('0x15')](_0xa55c('0x16'),JSON[_0xa55c('0x17')](_0x31e10d));return rp(_[_0xa55c('0x6')](_0x31e10d,{'method':_0xa55c('0x18'),'headers':headers,'json':!![]}));}function getAuth(_0x4cee3c){var _0x3d4c9e;if(_0x4cee3c[_0xa55c('0x19')]===_0xa55c('0x1a')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1b'),_0x4cee3c[_0xa55c('0x1c')],_0x4cee3c['password']);}else if(_0x4cee3c['authType']===_0xa55c('0x1d')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1e'),_0x4cee3c['username'],_0x4cee3c[_0xa55c('0x1d')]);}return util[_0xa55c('0xd')]('Basic\x20%s',new Buffer(_0x3d4c9e)[_0xa55c('0x1f')](_0xa55c('0x20')));}function getEndUser(_0x940f28,_0x1965f1,_0x234372){logger['info'](_0xa55c('0x21'),_0x234372);return request({'uri':util['format']('%s/customers/search',_0x940f28['remoteUri']),'qs':{'phone':_0x234372}})[_0xa55c('0x10')](function(_0x54b038){if(_0x54b038[_0xa55c('0x11')]){logger[_0xa55c('0xb')](_0xa55c('0x22'));return _0x54b038[_0xa55c('0x23')][_0xa55c('0x24')][0x0];}else{logger[_0xa55c('0xb')](_0xa55c('0x25'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x26'),_0x940f28[_0xa55c('0xf')]),'method':_0xa55c('0x27'),'body':{'first_name':_0x1965f1,'title':_0x1965f1,'phone_numbers':[{'type':'work','value':_0x234372}]}});}});}function getTags(_0x430d55,_0x28814f){var _0x1c9f6b=[];if(_0x430d55&&_0x430d55[_0xa55c('0x28')]>0x0){_0x1c9f6b=_['map'](_0x430d55,_0x28814f);}return _0x1c9f6b;}function getCustomFields(_0x1377b0,_0x22f6b6){var _0x1b8388=[];var _0x201941={'custom_fields':{}};if(_0x1377b0[_0xa55c('0x28')]>0x0){_[_0xa55c('0x29')](_0x1377b0,function(_0x52d37f){if(_[_0xa55c('0x2a')](['string',_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x2d')]&&!_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0x52d37f['nameField'][_0xa55c('0x2f')]()]=_0x52d37f[_0xa55c('0x30')][_0xa55c('0x1f')]();}else if(_[_0xa55c('0x2a')]([_0xa55c('0x31'),_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x52d37f['content']['toString']();}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x34')&&_0x52d37f['variableName']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x35')]]&&(_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f[_0xa55c('0x35')]][_0xa55c('0x1f')]());}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x36')&&_0x52d37f['Variable']&&_0x52d37f['Variable']['name']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x37')]['name'][_0xa55c('0x2f')]()]&&(_0x201941['custom_fields'][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f['Variable'][_0xa55c('0x38')][_0xa55c('0x2f')]()][_0xa55c('0x1f')]());}});}if(_0x201941['priority']){_0x201941[_0xa55c('0x39')]=Number(_0x201941[_0xa55c('0x39')]);}return _0x201941;}function getTicket(_0x47e93c,_0x6f9c4c,_0x194e78,_0x4d9083,_0x529ff8){logger[_0xa55c('0xb')]('Creating\x20new\x20ticket...');var _0x1e75dc=_[_0xa55c('0x3a')]({'subject':intUtil['getString'](_0x4d9083['Subjects'],_0x529ff8,'\x20'),'type':'phone','status':'new','labels':[_0xa55c('0x3b'),_0xa55c('0x3c'),_0xa55c('0x3d')][_0xa55c('0x3e')](getTags(_0x4d9083[_0xa55c('0x3f')],'name')),'description':intUtil[_0xa55c('0x40')](_0x4d9083[_0xa55c('0x41')],_0x529ff8,'\x0a'),'_links':{'assigned_user':{'href':util[_0xa55c('0xd')](_0xa55c('0x42'),_0x6f9c4c['id']),'class':_0xa55c('0x43')}},'message':{'direction':'in','body':intUtil[_0xa55c('0x40')](_0x4d9083['Descriptions'],_0x529ff8,'\x0a')}},getCustomFields(_0x4d9083[_0xa55c('0x44')],_0x529ff8));return request({'uri':util['format']('%s/customers/%d/cases',_0x47e93c[_0xa55c('0xf')],_0x194e78['id']),'method':_0xa55c('0x27'),'body':_0x1e75dc});}exports['queue']=function(_0x2bd98b,_0x508bd3,_0x5f25f7,_0x2f8449,_0x3fea03,_0x1630ac){var _0x540337,_0x1b2708;_0x1630ac[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1630ac[_0xa55c('0xf')]);_0x1630ac['serverUrl']=intUtil[_0xa55c('0x45')](_0x1630ac[_0xa55c('0x46')]);if(_0x3fea03&&_0x3fea03['monitor_format']){logger[_0xa55c('0xb')](_0xa55c('0x47'),'Recording\x20is\x20enabled!');_0x508bd3[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1630ac['serverUrl'],_0x508bd3[_0xa55c('0x4a')],md5(_0x508bd3['uniqueid']));}else{_0x508bd3[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1630ac);return getUser(_0x1630ac,_0x2f8449[_0xa55c('0x4c')])['then'](function(_0x41eab1){_0x540337=_0x41eab1;logger[_0xa55c('0xb')]('The\x20User\x20ID\x20is:',_0x540337['id']);return getEndUser(_0x1630ac,_0x508bd3[_0xa55c('0x4d')],_0x508bd3[_0xa55c('0x4e')]);})['then'](function(_0x11ff1d){_0x1b2708=_0x11ff1d;logger[_0xa55c('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1b2708['id']);return getTicket(_0x1630ac,_0x540337,_0x1b2708,_0x5f25f7,_0x508bd3);})[_0xa55c('0x10')](function(_0x81cee8){if(_0x81cee8){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger['info'](_0xa55c('0x50'),_0x81cee8['id']);switch(_0x1630ac['type']){case _0xa55c('0x51'):logger[_0xa55c('0xb')](_0xa55c('0x47'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449['name']),_0xa55c('0x53'),{'recordId':_0x81cee8['id']});break;case _0xa55c('0x54'):logger[_0xa55c('0xb')](_0xa55c('0x47'),_0xa55c('0x55'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449[_0xa55c('0x38')]),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')]('https://xcally.desk.com/web/agent/case/%d',_0x81cee8['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x47'),_0xa55c('0x58'));}}})['catch'](function(_0x4c3095){console[_0xa55c('0x57')](_0x4c3095);logger['error'](_0xa55c('0x47'),JSON['stringify'](_0x4c3095));});};exports[_0xa55c('0x59')]=function(_0x228df4,_0x181802,_0x3f9313,_0x2ecf79,_0x5b1cf3,_0x44b7c1,_0x4607ca){var _0x4b85cc,_0x3929a6;_0x44b7c1[_0xa55c('0xf')]=intUtil[_0xa55c('0x45')](_0x44b7c1[_0xa55c('0xf')]);_0x44b7c1['serverUrl']=intUtil['stripTrailingSlash'](_0x44b7c1[_0xa55c('0x46')]);if(_0x4607ca&&_0x4607ca[_0xa55c('0x5a')]&&_0x4607ca[_0xa55c('0x5a')]!==_0xa55c('0x5b')){logger['info'](_0xa55c('0x5c'),'Recording\x20is\x20enabled!');_0x181802[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x44b7c1[_0xa55c('0x46')],_0x181802[_0xa55c('0x4a')],md5(_0x181802['uniqueid']));}headers[_0xa55c('0x4b')]=getAuth(_0x44b7c1);return getUser(_0x44b7c1,_0x2ecf79['email'])[_0xa55c('0x10')](function(_0x157afe){_0x4b85cc=_0x157afe;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0x4b85cc['id']);return getEndUser(_0x44b7c1,_0x181802[_0xa55c('0x5e')],_0x181802[_0xa55c('0x5f')]);})[_0xa55c('0x10')](function(_0x53e2be){_0x3929a6=_0x53e2be;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3929a6['id']);return getTicket(_0x44b7c1,_0x4b85cc,_0x3929a6,_0x3f9313,_0x181802);})[_0xa55c('0x10')](function(_0x23a30e){if(_0x23a30e){logger[_0xa55c('0xb')]('Ticket\x20created!');logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x23a30e['id']);switch(_0x44b7c1[_0xa55c('0x2c')]){case _0xa55c('0x51'):logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x61'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2ecf79[_0xa55c('0x38')]),_0xa55c('0x53'),{'recordId':_0x23a30e['id']});break;case'newTab':logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x55'));emit(util['format'](_0xa55c('0x52'),_0x2ecf79['name']),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')](_0xa55c('0x62'),_0x44b7c1[_0xa55c('0xf')],_0x23a30e['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x5c'),_0xa55c('0x58'));}}})[_0xa55c('0x63')](function(_0x14b515){logger[_0xa55c('0x57')]('[OUTBOUND]',JSON[_0xa55c('0x17')](_0x14b515));});};exports[_0xa55c('0x64')]=function(_0x4ef914,_0x18b928,_0x2b8b88,_0x3e3b4b,_0x9fe234,_0x1b8b06){var _0xa38271,_0x3cef1f;_0x1b8b06[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1b8b06[_0xa55c('0xf')]);_0x1b8b06[_0xa55c('0x46')]=intUtil[_0xa55c('0x45')](_0x1b8b06[_0xa55c('0x46')]);if(_0x9fe234&&_0x9fe234[_0xa55c('0x65')]){logger[_0xa55c('0xb')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',_0xa55c('0x68'));_0x18b928['recordingURL']=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1b8b06[_0xa55c('0x46')],_0x18b928[_0xa55c('0x4a')],md5(_0x18b928[_0xa55c('0x4a')]));}else{_0x18b928[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1b8b06);return getUser(_0x1b8b06)[_0xa55c('0x10')](function(_0x2e4cf7){_0xa38271=_0x2e4cf7;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0xa38271['id']);return getEndUser(_0x1b8b06,_0x18b928['calleridname'],_0x18b928[_0xa55c('0x4e')]);})['then'](function(_0x1228a4){_0x3cef1f=_0x1228a4;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3cef1f['id']);return getTicket(_0x1b8b06,_0xa38271,_0x3cef1f,_0x2b8b88,_0x18b928);})['then'](function(_0x4d9722){if(_0x4d9722){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x4d9722['id']);}})['catch'](function(_0x149cb9){logger[_0xa55c('0x57')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',JSON[_0xa55c('0x17')](_0x149cb9));});};
\ No newline at end of file
index aa5f746..2ad029e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3095=[']\x20Enduser\x20Created!','forEach','includes','picklist','customField','idField','substring','indexOf','incidents','assign','getString','Subjects','Descriptions','Fields','ticketType','phonecall','callDirection','queue','/contacts(','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','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','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','remoteUri','name','ticketId',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','request-promise','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','POST','clientId','username','password','clientSecret','then','access_token','catch','error','toUpperCase','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','email','length','internalemailaddress','isdisabled',']\x20Agent\x20found\x20','systemuserid','userId','info',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','message','toLowerCase','outbound','destcalleridnum','contacts','/systemusers(','headers','odata-entityid','lastIndexOf','contacts?$select=telephone1','calleridnum','telephone1','contactid',']\x20Enduser\x20created!','enduserId'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x3095,0x158));var _0x5309=function(_0x761b6d,_0x7c7fa8){_0x761b6d=_0x761b6d-0x0;var _0x3a1639=_0x3095[_0x761b6d];return _0x3a1639;};'use strict';var _=require(_0x5309('0x0'));var BPromise=require(_0x5309('0x1'));var rp=require(_0x5309('0x2'));var util=require('util');var intUtil=require('./util');var md5=require(_0x5309('0x3'));var Redis=require(_0x5309('0x4'));var logger=require(_0x5309('0x5'))(_0x5309('0x6'));var config=require(_0x5309('0x7'));config[_0x5309('0x8')]=_[_0x5309('0x9')](config[_0x5309('0x8')],{'host':_0x5309('0xa'),'port':0x18eb});var io=require(_0x5309('0xb'))(new Redis(config[_0x5309('0x8')]));function getAuthToken(_0x40c392,_0x4e522f,_0x384b6e){var _0x1078d7={'method':_0x5309('0xc'),'uri':_0x4e522f,'form':{'client_id':_0x40c392[_0x5309('0xd')],'resource':_0x40c392['remoteUri'],'username':_0x40c392[_0x5309('0xe')],'password':_0x40c392[_0x5309('0xf')],'grant_type':_0x5309('0xf'),'client_secret':_0x40c392[_0x5309('0x10')]},'json':!![]};return rp(_0x1078d7)[_0x5309('0x11')](function(_0x19b5fe){return _0x19b5fe[_0x5309('0x12')];})[_0x5309('0x13')](function(_0xc7e98d){logger[_0x5309('0x14')]('['+[_0x384b6e[_0x5309('0x15')]()]+']\x20Wrong\x20credentials!');return _0xc7e98d['message'];});}function getUser(_0x6526f8,_0x516f44,_0x4cb644,_0x3bc3d8,_0x3dda22,_0x1b6410){return new BPromise(function(_0x525216,_0x321bc4){return getAuthToken(_0x516f44,_0x3bc3d8,_0x1b6410)['then'](function(_0x55ceea){var _0xde3215={'method':_0x5309('0x16'),'uri':_0x3dda22+_0x5309('0x17'),'headers':{'Authorization':_0x5309('0x18')+_0x55ceea,'OData-Version':_0x5309('0x19')},'json':!![]};return rp(_0xde3215);})['then'](function(_0x5d8ee0){var _0x3b763a=_0x5d8ee0[_0x5309('0x1a')];var _0x4cd49d=![];var _0x319a0b=null;if(!_[_0x5309('0x1b')](_0x4cb644)){if(intUtil['validateEmail'](_0x4cb644[_0x5309('0x1c')])){_0x6526f8['userEmail']=_0x4cb644[_0x5309('0x1c')];for(_0x319a0b=0x0;_0x319a0b<_0x3b763a[_0x5309('0x1d')];_0x319a0b++){if(_0x3b763a[_0x319a0b][_0x5309('0x1e')]===_0x4cb644[_0x5309('0x1c')]&&!_0x3b763a[_0x319a0b][_0x5309('0x1f')]){_0x4cd49d=!![];logger['info']('['+[_0x1b6410[_0x5309('0x15')]()]+_0x5309('0x20')+_0x3b763a[_0x319a0b][_0x5309('0x21')]+'!');_0x6526f8[_0x5309('0x22')]=_0x3b763a[_0x319a0b][_0x5309('0x21')];}}}}if(!_0x4cd49d){logger[_0x5309('0x23')]('['+[_0x1b6410[_0x5309('0x15')]()]+_0x5309('0x24'));_0x6526f8['userEmail']=_0x516f44[_0x5309('0xe')];for(_0x319a0b=0x0;_0x319a0b<_0x3b763a['length'];_0x319a0b++){if(_0x3b763a[_0x319a0b][_0x5309('0x1e')]===_0x516f44[_0x5309('0xe')]){_0x6526f8[_0x5309('0x22')]=_0x3b763a[_0x319a0b][_0x5309('0x21')];}}}_0x525216(_0x6526f8);})[_0x5309('0x13')](function(_0x259c38){_0x321bc4(_0x259c38[_0x5309('0x25')]);});});}function createEndUser(_0x271633,_0x35afe1,_0x3bd46a,_0x1c2e95,_0x1d640a,_0x474a75){return new BPromise(function(_0x37dbe5,_0x489cac){return getAuthToken(_0x35afe1,_0x3bd46a,_0x474a75)[_0x5309('0x11')](function(_0x284c94){var _0x137dff=_0x474a75[_0x5309('0x26')]()===_0x5309('0x27')?_0x1d640a[_0x5309('0x28')]:_0x1d640a['calleridnum'];var _0x32af40={'method':_0x5309('0xc'),'uri':_0x1c2e95+_0x5309('0x29'),'body':{'telephone1':_0x137dff,'fullname':_0x137dff,'firstname':_0x137dff,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x5309('0x2a')+_0x271633[_0x5309('0x22')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x284c94,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x32af40);})[_0x5309('0x11')](function(_0x4e6f42){var _0x86aa18=_0x4e6f42[_0x5309('0x2b')][_0x5309('0x2c')];var _0x3d8dbe=_0x86aa18['substring'](_0x86aa18[_0x5309('0x2d')]('(')+0x1,_0x86aa18['lastIndexOf'](')'));_0x271633['enduserId']=_0x3d8dbe;_0x37dbe5(_0x271633);})['catch'](function(_0x581395){_0x489cac(_0x581395[_0x5309('0x25')]);});});}function getEndUser(_0x371292,_0x348933,_0x53bdd0,_0x5d9314,_0x49b283,_0x246b2f){return new BPromise(function(_0x24fef0,_0x3afe2f){return getAuthToken(_0x348933,_0x53bdd0,_0x246b2f)[_0x5309('0x11')](function(_0x269622){var _0x2bd5d3={'method':'GET','uri':_0x5d9314+_0x5309('0x2e'),'headers':{'Authorization':'Bearer\x20'+_0x269622,'If-None-Match':null,'OData-Version':_0x5309('0x19')},'json':!![]};return rp(_0x2bd5d3);})[_0x5309('0x11')](function(_0x58711d){var _0x3cf627=null;if(_0x58711d){var _0x10ba63=_0x58711d[_0x5309('0x1a')];var _0x4051c8=![];for(_0x3cf627=0x0;_0x3cf627<_0x10ba63[_0x5309('0x1d')];_0x3cf627++){var _0x21f26f=_0x246b2f[_0x5309('0x26')]()===_0x5309('0x27')?_0x49b283['destcalleridnum']:_0x49b283[_0x5309('0x2f')];if(_0x10ba63[_0x3cf627][_0x5309('0x30')]===_0x21f26f){_0x4051c8=!![];_0x371292['enduserId']=_0x10ba63[_0x3cf627][_0x5309('0x31')];}}if(_0x4051c8){_0x24fef0(_0x371292);}else{return createEndUser(_0x371292,_0x348933,_0x53bdd0,_0x5d9314,_0x49b283,_0x246b2f)[_0x5309('0x11')](function(_0x56e02f){logger['info']('['+[_0x246b2f[_0x5309('0x15')]()]+_0x5309('0x32'),_0x56e02f[_0x5309('0x33')]);_0x24fef0(_0x56e02f);});}}else{return createEndUser(_0x371292,_0x348933,_0x53bdd0,_0x5d9314,_0x49b283,_0x246b2f)['then'](function(_0x5ab97f){logger[_0x5309('0x23')]('['+[_0x246b2f['toUpperCase']()]+_0x5309('0x34'),_0x5ab97f[_0x5309('0x33')]);_0x24fef0(_0x5ab97f);});}});});}function getCustomFields(_0x1c4333,_0x2cf3a8,_0x4c4c3c){var _0x4a147e={};if(_0x1c4333[_0x5309('0x1d')]>0x0){_[_0x5309('0x35')](_0x1c4333,function(_0x41161d){if(_[_0x5309('0x36')](['string',_0x5309('0x37')],_0x41161d['type'])&&_0x41161d['nameField']&&!_0x41161d[_0x5309('0x38')]){var _0x34c28b=_0x41161d[_0x5309('0x39')][_0x5309('0x26')]();var _0x11cd5f=_0x34c28b[_0x5309('0x3a')](0x0,_0x34c28b[_0x5309('0x3b')]('_'));var _0x21098f=_0x34c28b[_0x5309('0x3a')](_0x34c28b[_0x5309('0x3b')]('_')+0x1);if(_0x11cd5f===_0x4c4c3c){_0x4a147e[_0x21098f]=_0x41161d['content'];}}});}return _0x4a147e;}function getTicket(_0x890fdb,_0x27fc33,_0x3af032,_0x5e91af,_0x3f1747,_0x32e43e,_0xf031bc){return new BPromise(function(_0x4c32ce,_0x3177f6){var _0x5e0066;return getAuthToken(_0x27fc33,_0x3af032,_0xf031bc)[_0x5309('0x11')](function(_0x41ab5c){if(_0x32e43e['ticketType']==='incident'){_0x5e0066={'method':_0x5309('0xc'),'uri':_0x5e91af+_0x5309('0x3c'),'body':Object[_0x5309('0x3d')]({},{'title':intUtil[_0x5309('0x3e')](_0x32e43e[_0x5309('0x3f')],_0x3f1747,'\x20'),'description':intUtil[_0x5309('0x3e')](_0x32e43e[_0x5309('0x40')],_0x3f1747,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x890fdb['enduserId']+')','ownerid@odata.bind':_0x5309('0x2a')+_0x890fdb[_0x5309('0x22')]+')','caseorigincode':'1'},getCustomFields(_0x32e43e[_0x5309('0x41')],_0x3f1747,_0x32e43e[_0x5309('0x42')])),'headers':{'Authorization':_0x5309('0x18')+_0x41ab5c,'OData-Version':_0x5309('0x19')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x32e43e[_0x5309('0x42')]===_0x5309('0x43')){_0x5e0066={'method':'POST','uri':_0x5e91af+'phonecalls','body':Object[_0x5309('0x3d')]({},{'subject':intUtil[_0x5309('0x3e')](_0x32e43e[_0x5309('0x3f')],_0x3f1747,'\x20'),'phonenumber':String(_0x3f1747[_0x5309('0x2f')]),'description':intUtil[_0x5309('0x3e')](_0x32e43e[_0x5309('0x40')],_0x3f1747,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x890fdb[_0x5309('0x33')]+')','ownerid@odata.bind':'/systemusers('+_0x890fdb[_0x5309('0x22')]+')','directioncode':_0x890fdb[_0x5309('0x44')]===_0x5309('0x45')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x890fdb[_0x5309('0x22')]+')','participationtypemask':_0x890fdb[_0x5309('0x44')]===_0x5309('0x45')?0x2:0x1},{'partyid_contact@odata.bind':_0x5309('0x46')+_0x890fdb['enduserId']+')','participationtypemask':_0x890fdb[_0x5309('0x44')]==='queue'?0x1:0x2}]},getCustomFields(_0x32e43e[_0x5309('0x41')],_0x3f1747,_0x32e43e[_0x5309('0x42')])),'headers':{'Authorization':_0x5309('0x18')+_0x41ab5c,'OData-Version':_0x5309('0x19')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x5e0066);})[_0x5309('0x11')](function(_0x61f5cd){var _0x51c32d=_0x61f5cd[_0x5309('0x2b')][_0x5309('0x2c')];var _0x5142df=_0x51c32d[_0x5309('0x3a')](_0x51c32d[_0x5309('0x2d')]('(')+0x1,_0x51c32d[_0x5309('0x2d')](')'));_0x890fdb['ticketId']=_0x5142df;_0x4c32ce(_0x890fdb);})[_0x5309('0x13')](function(_0x3859ff){_0x3177f6(_0x3859ff['message']);});});}function emit(_0x27274e,_0x42d42a,_0x3f6743,_0x54ba18){var _0x439995={'uri':util[_0x5309('0x47')](_0x5309('0x48'),_0x27274e,_0x3f6743,_0x54ba18)};io['to'](util['format'](_0x5309('0x49'),_0x42d42a))[_0x5309('0x4a')](_0x5309('0x4b'),_0x439995);}exports['cs']=function(_0x54b8e7,_0x3fbb21,_0x15ba57,_0x4b5e3d,_0x8f8667,_0x26292c,_0x31d309,_0x3d9c66){var _0x442773={};_0x26292c['remoteUri']=intUtil[_0x5309('0x4c')](_0x26292c['remoteUri']);_0x26292c[_0x5309('0x4d')]=intUtil[_0x5309('0x4c')](_0x26292c[_0x5309('0x4d')]);_0x442773[_0x5309('0x44')]=_0x3d9c66===_0x5309('0x45')||_0x3d9c66==='unmanaged'?_0x5309('0x45'):_0x5309('0x27');var _0x2bb97=util[_0x5309('0x47')](_0x5309('0x4e'),_0x26292c['remoteUri']);var _0x2af694=util[_0x5309('0x47')](_0x5309('0x4f'),_0x26292c[_0x5309('0x50')]);var _0x557ee6=util[_0x5309('0x47')](_0x5309('0x51'),_0x26292c[_0x5309('0x4d')],_0x3fbb21[_0x5309('0x52')],md5(_0x3fbb21[_0x5309('0x52')]));if(_0x8f8667&&_0x8f8667[_0x5309('0x53')]){logger['info'](_0x5309('0x54'),'Recording\x20is\x20enabled!');_0x3fbb21[_0x5309('0x55')]=_0x557ee6;}else if(_0x31d309&&_0x31d309[_0x5309('0x56')]&&_0x31d309[_0x5309('0x56')]!==_0x5309('0x57')){logger[_0x5309('0x23')](_0x5309('0x58'),'Recording\x20is\x20enabled!');_0x3fbb21[_0x5309('0x55')]=_0x557ee6;}else{_0x3fbb21[_0x5309('0x55')]='';}return getUser(_0x442773,_0x26292c,_0x4b5e3d,_0x2af694,_0x2bb97,_0x3d9c66)[_0x5309('0x11')](function(_0x4f0e81){logger['info']('['+_0x3d9c66['toUpperCase']()+']\x20The\x20User\x20ID\x20is:',_0x4f0e81['userId']);logger[_0x5309('0x23')]('['+_0x3d9c66[_0x5309('0x15')]()+_0x5309('0x59'),_0x4f0e81['userEmail']);return getEndUser(_0x4f0e81,_0x26292c,_0x2af694,_0x2bb97,_0x3fbb21,_0x3d9c66);})[_0x5309('0x11')](function(_0x5cb8e9){logger[_0x5309('0x23')]('['+_0x3d9c66['toUpperCase']()+_0x5309('0x5a'),_0x5cb8e9[_0x5309('0x33')]);logger['info']('['+_0x3d9c66[_0x5309('0x15')]()+_0x5309('0x5b'),_0x3fbb21[_0x5309('0x2f')]);return getTicket(_0x5cb8e9,_0x26292c,_0x2af694,_0x2bb97,_0x3fbb21,_0x15ba57,_0x3d9c66);})[_0x5309('0x11')](function(_0x56f838){logger['info'](util['format']('['+_0x3d9c66[_0x5309('0x15')]()+_0x5309('0x5c'),_0x15ba57['ticketType'],_0x56f838['ticketId']));logger[_0x5309('0x23')](util['format']('['+_0x3d9c66[_0x5309('0x15')]()+_0x5309('0x5d'),_0x3d9c66));if(_0x3d9c66!=='unmanaged'){logger[_0x5309('0x23')]('['+_0x3d9c66[_0x5309('0x15')]()+']',_0x5309('0x5e'));emit(_0x26292c[_0x5309('0x5f')],_0x4b5e3d[_0x5309('0x60')],_0x15ba57[_0x5309('0x42')],_0x56f838[_0x5309('0x61')]);}})['catch'](function(_0x52c56f){logger['error']('['+_0x3d9c66['toUpperCase']()+_0x5309('0x62'),util['inspect'](_0x52c56f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xdd05=['indexOf','substring','incident','incidents','assign','Subjects','getString','/contacts(','userId','phonecalls','Descriptions','queue','callDirection','ticketId','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','format','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:','ticketType',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','inspect','lodash','bluebird','request-promise','util','./util','md5','ioredis','../../../../config/environment','redis','defaults','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','toUpperCase',']\x20Wrong\x20credentials!','message','GET','Bearer\x20','4.0','isNil','validateEmail','email','userEmail','length','internalemailaddress','info',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','odata-entityid','lastIndexOf','enduserId','%2b','value','telephone1',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','string','type','nameField','customField'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xdd05,0x1a8));var _0x5dd0=function(_0x45556d,_0x25e55d){_0x45556d=_0x45556d-0x0;var _0x6a3aa3=_0xdd05[_0x45556d];return _0x6a3aa3;};'use strict';var _=require(_0x5dd0('0x0'));var BPromise=require(_0x5dd0('0x1'));var rp=require(_0x5dd0('0x2'));var util=require(_0x5dd0('0x3'));var intUtil=require(_0x5dd0('0x4'));var md5=require(_0x5dd0('0x5'));var Redis=require(_0x5dd0('0x6'));var logger=require('../../../../config/logger')('dynamics365');var config=require(_0x5dd0('0x7'));config[_0x5dd0('0x8')]=_[_0x5dd0('0x9')](config[_0x5dd0('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x5dd0('0xa'))(new Redis(config[_0x5dd0('0x8')]));function getAuthToken(_0x1ba6c9,_0x1120af,_0x145528){var _0x15a391={'method':_0x5dd0('0xb'),'uri':_0x1120af,'form':{'client_id':_0x1ba6c9[_0x5dd0('0xc')],'resource':_0x1ba6c9[_0x5dd0('0xd')],'username':_0x1ba6c9[_0x5dd0('0xe')],'password':_0x1ba6c9[_0x5dd0('0xf')],'grant_type':_0x5dd0('0xf'),'client_secret':_0x1ba6c9[_0x5dd0('0x10')]},'json':!![]};return rp(_0x15a391)[_0x5dd0('0x11')](function(_0x113e98){return _0x113e98[_0x5dd0('0x12')];})[_0x5dd0('0x13')](function(_0x59171e){logger['error']('['+[_0x145528[_0x5dd0('0x14')]()]+_0x5dd0('0x15'));return _0x59171e[_0x5dd0('0x16')];});}function getUser(_0x9a19f8,_0x3ef54c,_0x5aa86b,_0x57dfca,_0x212967,_0x481a1d){return new BPromise(function(_0x12fcc0,_0x1b0492){return getAuthToken(_0x3ef54c,_0x57dfca,_0x481a1d)[_0x5dd0('0x11')](function(_0x3ba34f){var _0x138ff0={'method':_0x5dd0('0x17'),'uri':_0x212967+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x5dd0('0x18')+_0x3ba34f,'OData-Version':_0x5dd0('0x19')},'json':!![]};return rp(_0x138ff0);})[_0x5dd0('0x11')](function(_0x3159d6){var _0x42bdb2=_0x3159d6['value'];var _0x1b3449=![];var _0x35bf74=null;if(!_[_0x5dd0('0x1a')](_0x5aa86b)){if(intUtil[_0x5dd0('0x1b')](_0x5aa86b[_0x5dd0('0x1c')])){_0x9a19f8[_0x5dd0('0x1d')]=_0x5aa86b['email'];for(_0x35bf74=0x0;_0x35bf74<_0x42bdb2[_0x5dd0('0x1e')];_0x35bf74++){if(_0x42bdb2[_0x35bf74][_0x5dd0('0x1f')]===_0x5aa86b[_0x5dd0('0x1c')]&&!_0x42bdb2[_0x35bf74]['isdisabled']){_0x1b3449=!![];logger[_0x5dd0('0x20')]('['+[_0x481a1d[_0x5dd0('0x14')]()]+_0x5dd0('0x21')+_0x42bdb2[_0x35bf74][_0x5dd0('0x22')]+'!');_0x9a19f8['userId']=_0x42bdb2[_0x35bf74][_0x5dd0('0x22')];}}}}if(!_0x1b3449){logger[_0x5dd0('0x20')]('['+[_0x481a1d['toUpperCase']()]+_0x5dd0('0x23'));_0x9a19f8['userEmail']=_0x3ef54c['username'];for(_0x35bf74=0x0;_0x35bf74<_0x42bdb2[_0x5dd0('0x1e')];_0x35bf74++){if(_0x42bdb2[_0x35bf74]['internalemailaddress']===_0x3ef54c[_0x5dd0('0xe')]){_0x9a19f8['userId']=_0x42bdb2[_0x35bf74]['systemuserid'];}}}_0x12fcc0(_0x9a19f8);})[_0x5dd0('0x13')](function(_0x36ee6e){_0x1b0492(_0x36ee6e[_0x5dd0('0x16')]);});});}function createEndUser(_0xa3023c,_0x31b158,_0x4a5d12,_0x55d758,_0x5972f9,_0x3e311a){return new BPromise(function(_0x171f4b,_0x5a177f){return getAuthToken(_0x31b158,_0x4a5d12,_0x3e311a)[_0x5dd0('0x11')](function(_0x3db0c5){var _0x3f12c6=_0x3e311a[_0x5dd0('0x24')]()===_0x5dd0('0x25')?_0x5972f9[_0x5dd0('0x26')]:_0x5972f9[_0x5dd0('0x27')];var _0x340779={'method':'POST','uri':_0x55d758+_0x5dd0('0x28'),'body':{'telephone1':_0x3f12c6,'fullname':_0x3f12c6,'firstname':_0x3f12c6,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x5dd0('0x29')+_0xa3023c['userId']+')'},'headers':{'Authorization':_0x5dd0('0x18')+_0x3db0c5,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x340779);})[_0x5dd0('0x11')](function(_0x8600ca){var _0x32fd7e=_0x8600ca['headers'][_0x5dd0('0x2a')];var _0x354b06=_0x32fd7e['substring'](_0x32fd7e[_0x5dd0('0x2b')]('(')+0x1,_0x32fd7e['lastIndexOf'](')'));_0xa3023c[_0x5dd0('0x2c')]=_0x354b06;_0x171f4b(_0xa3023c);})[_0x5dd0('0x13')](function(_0x25ee3c){_0x5a177f(_0x25ee3c[_0x5dd0('0x16')]);});});}function getEndUser(_0x6183f3,_0x1a957b,_0x8f5869,_0x588fde,_0x1ba99a,_0x55c3e8){return new BPromise(function(_0x6e9e03,_0x4956d7){var _0x576e1d=_0x55c3e8[_0x5dd0('0x24')]()==='outbound'?_0x1ba99a['destcalleridnum']:_0x1ba99a[_0x5dd0('0x27')];return getAuthToken(_0x1a957b,_0x8f5869,_0x55c3e8)[_0x5dd0('0x11')](function(_0x388b24){var _0x3cbf94={'method':_0x5dd0('0x17'),'uri':_0x588fde+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x576e1d['replace']('+',_0x5dd0('0x2d'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x388b24,'If-None-Match':null,'OData-Version':_0x5dd0('0x19')},'json':!![]};return rp(_0x3cbf94);})[_0x5dd0('0x11')](function(_0x39e506){var _0x50c97e=null;if(_0x39e506){var _0x58e118=_0x39e506[_0x5dd0('0x2e')];var _0x5e597b=![];for(_0x50c97e=0x0;_0x50c97e<_0x58e118[_0x5dd0('0x1e')];_0x50c97e++){if(_0x58e118[_0x50c97e][_0x5dd0('0x2f')]===_0x576e1d){_0x5e597b=!![];_0x6183f3['enduserId']=_0x58e118[_0x50c97e]['contactid'];}}if(_0x5e597b){_0x6e9e03(_0x6183f3);}else{return createEndUser(_0x6183f3,_0x1a957b,_0x8f5869,_0x588fde,_0x1ba99a,_0x55c3e8)[_0x5dd0('0x11')](function(_0x383ddc){logger[_0x5dd0('0x20')]('['+[_0x55c3e8[_0x5dd0('0x14')]()]+_0x5dd0('0x30'),_0x383ddc['enduserId']);_0x6e9e03(_0x383ddc);});}}else{return createEndUser(_0x6183f3,_0x1a957b,_0x8f5869,_0x588fde,_0x1ba99a,_0x55c3e8)[_0x5dd0('0x11')](function(_0x550eac){logger[_0x5dd0('0x20')]('['+[_0x55c3e8[_0x5dd0('0x14')]()]+_0x5dd0('0x31'),_0x550eac[_0x5dd0('0x2c')]);_0x6e9e03(_0x550eac);});}});});}function getCustomFields(_0xd44912,_0x5731ba,_0x298d57){var _0x1b2b4b={};if(_0xd44912['length']>0x0){_[_0x5dd0('0x32')](_0xd44912,function(_0x357d56){if(_[_0x5dd0('0x33')]([_0x5dd0('0x34'),'picklist'],_0x357d56[_0x5dd0('0x35')])&&_0x357d56[_0x5dd0('0x36')]&&!_0x357d56[_0x5dd0('0x37')]){var _0x2a5a8b=_0x357d56['idField'][_0x5dd0('0x24')]();var _0x4f4885=_0x2a5a8b['substring'](0x0,_0x2a5a8b[_0x5dd0('0x38')]('_'));var _0xcf0dbb=_0x2a5a8b[_0x5dd0('0x39')](_0x2a5a8b['indexOf']('_')+0x1);if(_0x4f4885===_0x298d57){_0x1b2b4b[_0xcf0dbb]=_0x357d56['content'];}}});}return _0x1b2b4b;}function getTicket(_0x394dcd,_0x51aa3b,_0x5a46b6,_0x155b17,_0x4ac0be,_0x304e33,_0x453537){return new BPromise(function(_0x1d42cf,_0x5f1f01){var _0x1bebdd;return getAuthToken(_0x51aa3b,_0x5a46b6,_0x453537)['then'](function(_0x3b190c){if(_0x304e33['ticketType']===_0x5dd0('0x3a')){_0x1bebdd={'method':'POST','uri':_0x155b17+_0x5dd0('0x3b'),'body':Object[_0x5dd0('0x3c')]({},{'title':intUtil['getString'](_0x304e33[_0x5dd0('0x3d')],_0x4ac0be,'\x20'),'description':intUtil[_0x5dd0('0x3e')](_0x304e33['Descriptions'],_0x4ac0be,'\x0a'),'customerid_contact@odata.bind':_0x5dd0('0x3f')+_0x394dcd[_0x5dd0('0x2c')]+')','ownerid@odata.bind':_0x5dd0('0x29')+_0x394dcd[_0x5dd0('0x40')]+')','caseorigincode':'1'},getCustomFields(_0x304e33['Fields'],_0x4ac0be,_0x304e33['ticketType'])),'headers':{'Authorization':_0x5dd0('0x18')+_0x3b190c,'OData-Version':_0x5dd0('0x19')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x304e33['ticketType']==='phonecall'){_0x1bebdd={'method':_0x5dd0('0xb'),'uri':_0x155b17+_0x5dd0('0x41'),'body':Object[_0x5dd0('0x3c')]({},{'subject':intUtil['getString'](_0x304e33['Subjects'],_0x4ac0be,'\x20'),'phonenumber':String(_0x4ac0be[_0x5dd0('0x27')]),'description':intUtil[_0x5dd0('0x3e')](_0x304e33[_0x5dd0('0x42')],_0x4ac0be,'\x0a'),'regardingobjectid_contact@odata.bind':_0x5dd0('0x3f')+_0x394dcd[_0x5dd0('0x2c')]+')','ownerid@odata.bind':_0x5dd0('0x29')+_0x394dcd['userId']+')','directioncode':_0x394dcd['callDirection']===_0x5dd0('0x43')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x5dd0('0x29')+_0x394dcd['userId']+')','participationtypemask':_0x394dcd[_0x5dd0('0x44')]===_0x5dd0('0x43')?0x2:0x1},{'partyid_contact@odata.bind':_0x5dd0('0x3f')+_0x394dcd[_0x5dd0('0x2c')]+')','participationtypemask':_0x394dcd[_0x5dd0('0x44')]==='queue'?0x1:0x2}]},getCustomFields(_0x304e33['Fields'],_0x4ac0be,_0x304e33['ticketType'])),'headers':{'Authorization':_0x5dd0('0x18')+_0x3b190c,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1bebdd);})[_0x5dd0('0x11')](function(_0x32a0e5){var _0x2a3d1c=_0x32a0e5['headers'][_0x5dd0('0x2a')];var _0x24b047=_0x2a3d1c[_0x5dd0('0x39')](_0x2a3d1c['lastIndexOf']('(')+0x1,_0x2a3d1c['lastIndexOf'](')'));_0x394dcd[_0x5dd0('0x45')]=_0x24b047;_0x1d42cf(_0x394dcd);})[_0x5dd0('0x13')](function(_0x2fe8d6){_0x5f1f01(_0x2fe8d6['message']);});});}function emit(_0x2a8e8f,_0x49733d,_0x3b732c,_0x49283e){var _0x3fee66={'uri':util['format']('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x2a8e8f,_0x3b732c,_0x49283e)};io['to'](util['format'](_0x5dd0('0x46'),_0x49733d))[_0x5dd0('0x47')](_0x5dd0('0x48'),_0x3fee66);}exports['cs']=function(_0x259208,_0x300756,_0x3202fb,_0x3acdbf,_0xae58e9,_0x5e929f,_0x5329ac,_0x981ff4){var _0x1fc8d6={};_0x5e929f[_0x5dd0('0xd')]=intUtil[_0x5dd0('0x49')](_0x5e929f['remoteUri']);_0x5e929f[_0x5dd0('0x4a')]=intUtil['stripTrailingSlash'](_0x5e929f[_0x5dd0('0x4a')]);_0x1fc8d6[_0x5dd0('0x44')]=_0x981ff4===_0x5dd0('0x43')||_0x981ff4===_0x5dd0('0x4b')?_0x5dd0('0x43'):_0x5dd0('0x25');var _0x1bd441=util[_0x5dd0('0x4c')]('%s/api/data/v9.0/',_0x5e929f[_0x5dd0('0xd')]);var _0xdf6cc3=util[_0x5dd0('0x4c')](_0x5dd0('0x4d'),_0x5e929f[_0x5dd0('0x4e')]);var _0x342b1b=util[_0x5dd0('0x4c')](_0x5dd0('0x4f'),_0x5e929f['serverUrl'],_0x300756[_0x5dd0('0x50')],md5(_0x300756[_0x5dd0('0x50')]));if(_0xae58e9&&_0xae58e9[_0x5dd0('0x51')]){logger[_0x5dd0('0x20')](_0x5dd0('0x52'),_0x5dd0('0x53'));_0x300756[_0x5dd0('0x54')]=_0x342b1b;}else if(_0x5329ac&&_0x5329ac[_0x5dd0('0x55')]&&_0x5329ac[_0x5dd0('0x55')]!==_0x5dd0('0x56')){logger[_0x5dd0('0x20')](_0x5dd0('0x57'),'Recording\x20is\x20enabled!');_0x300756[_0x5dd0('0x54')]=_0x342b1b;}else{_0x300756[_0x5dd0('0x54')]='';}return getUser(_0x1fc8d6,_0x5e929f,_0x3acdbf,_0xdf6cc3,_0x1bd441,_0x981ff4)['then'](function(_0x2ef904){logger[_0x5dd0('0x20')]('['+_0x981ff4[_0x5dd0('0x14')]()+_0x5dd0('0x58'),_0x2ef904['userId']);logger[_0x5dd0('0x20')]('['+_0x981ff4[_0x5dd0('0x14')]()+_0x5dd0('0x59'),_0x2ef904[_0x5dd0('0x1d')]);return getEndUser(_0x2ef904,_0x5e929f,_0xdf6cc3,_0x1bd441,_0x300756,_0x981ff4);})['then'](function(_0x3d18c7){logger['info']('['+_0x981ff4['toUpperCase']()+_0x5dd0('0x5a'),_0x3d18c7[_0x5dd0('0x2c')]);logger['info']('['+_0x981ff4[_0x5dd0('0x14')]()+_0x5dd0('0x5b'),_0x300756[_0x5dd0('0x27')]);return getTicket(_0x3d18c7,_0x5e929f,_0xdf6cc3,_0x1bd441,_0x300756,_0x3202fb,_0x981ff4);})[_0x5dd0('0x11')](function(_0xc4bd5a){logger['info'](util[_0x5dd0('0x4c')]('['+_0x981ff4['toUpperCase']()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x3202fb[_0x5dd0('0x5c')],_0xc4bd5a['ticketId']));logger[_0x5dd0('0x20')](util[_0x5dd0('0x4c')]('['+_0x981ff4[_0x5dd0('0x14')]()+_0x5dd0('0x5d'),_0x981ff4));if(_0x981ff4!=='unmanaged'){logger[_0x5dd0('0x20')]('['+_0x981ff4[_0x5dd0('0x14')]()+']',_0x5dd0('0x5e'));emit(_0x5e929f[_0x5dd0('0xd')],_0x3acdbf['name'],_0x3202fb[_0x5dd0('0x5c')],_0xc4bd5a['ticketId']);}})[_0x5dd0('0x13')](function(_0xbaf3f0){logger['error']('['+_0x981ff4[_0x5dd0('0x14')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util[_0x5dd0('0x5f')](_0xbaf3f0,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index d26ecde..1159444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x280b=['%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','apiKey','toString','[HTTP]','stringify','GET','map','forEach','includes','picklist','type','customField','nameField','toLowerCase','string','idField','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','user:%s','trigger:browser:url','catch','error','outbound','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','unmanaged','toUpperCase','lastevent','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','calleridnum','getString','Descriptions','Tags','name','Fields','custom_fields','keyBy','format','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail'];(function(_0x26cd65,_0x3e6b6f){var _0x51c930=function(_0x48a242){while(--_0x48a242){_0x26cd65['push'](_0x26cd65['shift']());}};_0x51c930(++_0x3e6b6f);}(_0x280b,0x1f0));var _0xb280=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x280b[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require('lodash');var rp=require(_0xb280('0x0'));var md5=require(_0xb280('0x1'));var util=require(_0xb280('0x2'));var Redis=require('ioredis');var intUtil=require(_0xb280('0x3'));var config=require(_0xb280('0x4'));var logger=require(_0xb280('0x5'))('freshdesk');config['redis']=_[_0xb280('0x6')](config[_0xb280('0x7')],{'host':_0xb280('0x8'),'port':0x18eb});var io=require(_0xb280('0x9'))(new Redis(config[_0xb280('0x7')]));var headers={'Content-Type':_0xb280('0xa'),'Accept':_0xb280('0xa')};function emit(_0x4d3915,_0x18478e,_0xbd7e76){io['to'](_0x4d3915)[_0xb280('0xb')](_0x18478e,_0xbd7e76);}function getTicket(_0x15dddc,_0x90f13c,_0x322c9a,_0x29a752,_0x17da6a){logger[_0xb280('0xc')](_0xb280('0xd'));var _0x4f01ee=_[_0xb280('0xe')]({'responder_id':_0x90f13c['id'],'requester_id':_0x322c9a['id'],'name':util['format'](_0xb280('0xf'),_0x17da6a[_0xb280('0x10')]),'phone':_0x17da6a[_0xb280('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xb280('0x12')](_0x29a752['Subjects'],_0x17da6a,'\x20'),'description':intUtil[_0xb280('0x12')](_0x29a752[_0xb280('0x13')],_0x17da6a,'<br>'),'tags':getTags(_0x29a752[_0xb280('0x14')],_0xb280('0x15'))},getCustomFields(_0x29a752[_0xb280('0x16')],_0x17da6a));_0x4f01ee[_0xb280('0x17')]=_['mapValues'](_[_0xb280('0x18')](_0x4f01ee[_0xb280('0x17')],'id'),'value');return request({'uri':util[_0xb280('0x19')](_0xb280('0x1a'),_0x15dddc[_0xb280('0x1b')]),'method':_0xb280('0x1c'),'body':_0x4f01ee})[_0xb280('0x1d')](function(_0x5a09ae){logger[_0xb280('0xc')](_0xb280('0x1e'));return _0x5a09ae;});}function getUser(_0x2ba2de,_0x2602b5){if(intUtil[_0xb280('0x1f')](_0x2602b5)){return request({'uri':util[_0xb280('0x19')](_0xb280('0x20'),_0x2ba2de[_0xb280('0x1b')]),'qs':{'email':_0x2602b5}})[_0xb280('0x1d')](function(_0xf4f25d){if(_0xf4f25d[_0xb280('0x21')]){logger['info'](_0xb280('0x22'));return _[_0xb280('0x23')](_0xf4f25d,function(_0x485738){return _0x485738[_0xb280('0x24')][_0xb280('0x25')]===_0x2602b5;});}else{logger[_0xb280('0xc')](_0xb280('0x26'));return request({'uri':util[_0xb280('0x19')]('%s/api/v2/agents/me',_0x2ba2de[_0xb280('0x1b')])})[_0xb280('0x1d')](function(_0x5f398a){logger['info']('Admin\x20account\x20selected.');return _0x5f398a;});}});}else{logger[_0xb280('0xc')](_0xb280('0x27'));return request({'uri':util[_0xb280('0x19')]('%s/api/v2/agents/me',_0x2ba2de[_0xb280('0x1b')])})[_0xb280('0x1d')](function(_0x55c62c){logger[_0xb280('0xc')]('Admin\x20account\x20selected.');return _0x55c62c;});}}function getEndUser(_0x84f2b0,_0x1637d2,_0x2b77cd){logger[_0xb280('0xc')]('Searching\x20enduser\x20with\x20phone',_0x2b77cd);return request({'uri':util['format'](_0xb280('0x28'),_0x84f2b0[_0xb280('0x1b')]),'qs':{'phone':_0x2b77cd}})[_0xb280('0x1d')](function(_0x505a50){if(_0x505a50[_0xb280('0x21')]){logger[_0xb280('0xc')]('Enduser\x20found!');return _['find'](_0x505a50,{'phone':_0x2b77cd});}else{logger[_0xb280('0xc')](_0xb280('0x29'));return request({'uri':util[_0xb280('0x19')](_0xb280('0x28'),_0x84f2b0[_0xb280('0x1b')]),'method':_0xb280('0x1c'),'body':{'name':_0x1637d2,'phone':_0x2b77cd}})[_0xb280('0x1d')](function(_0x58c550){logger['info'](_0xb280('0x2a'));return _0x58c550;});}});}function getAuth(_0x3181b3){return util['format']('Basic\x20%s',new Buffer(_0x3181b3[_0xb280('0x2b')]+':X')[_0xb280('0x2c')]('base64'));}function request(_0x2bb59a){logger['debug'](_0xb280('0x2d'),JSON[_0xb280('0x2e')](_0x2bb59a));return rp(_[_0xb280('0x6')](_0x2bb59a,{'method':_0xb280('0x2f'),'headers':headers,'json':!![]}));}function getTags(_0x59ecd5,_0x2ea39c){var _0x1d91f7=[];if(_0x59ecd5&&_0x59ecd5[_0xb280('0x21')]>0x0){_0x1d91f7=_[_0xb280('0x30')](_0x59ecd5,_0x2ea39c);}return _0x1d91f7;}function getCustomFields(_0x31231e,_0x35d370){var _0x3722e4=[];var _0x48c2e4={'custom_fields':[]};if(_0x31231e['length']>0x0){_[_0xb280('0x31')](_0x31231e,function(_0x4024a9){if(_[_0xb280('0x32')](['string',_0xb280('0x33')],_0x4024a9[_0xb280('0x34')])&&_0x4024a9['nameField']&&!_0x4024a9[_0xb280('0x35')]){_0x48c2e4[_0x4024a9[_0xb280('0x36')][_0xb280('0x37')]()]=_0x4024a9['content'][_0xb280('0x2c')]();}else if(_[_0xb280('0x32')]([_0xb280('0x38'),'picklist'],_0x4024a9[_0xb280('0x34')])&&_0x4024a9[_0xb280('0x39')]&&_0x4024a9[_0xb280('0x35')]){_0x48c2e4[_0xb280('0x17')][_0xb280('0x3a')]({'id':_0x4024a9[_0xb280('0x39')],'value':_0x4024a9['content'][_0xb280('0x2c')]()});}else if(_0x4024a9['type']===_0xb280('0x3b')&&_0x4024a9['variableName']&&_0x4024a9[_0xb280('0x39')]&&_0x4024a9['customField']){_0x35d370[_0x4024a9[_0xb280('0x3c')]]&&_0x48c2e4['custom_fields'][_0xb280('0x3a')]({'id':_0x4024a9[_0xb280('0x39')],'value':_0x35d370[_0x4024a9[_0xb280('0x3c')]][_0xb280('0x2c')]()});}else if(_0x4024a9[_0xb280('0x34')]===_0xb280('0x3d')&&_0x4024a9[_0xb280('0x3e')]&&_0x4024a9[_0xb280('0x3e')][_0xb280('0x15')]&&_0x4024a9['idField']&&_0x4024a9[_0xb280('0x35')]){_0x35d370[_0x4024a9[_0xb280('0x3e')][_0xb280('0x15')]['toLowerCase']()]&&_0x48c2e4[_0xb280('0x17')][_0xb280('0x3a')]({'id':_0x4024a9[_0xb280('0x39')],'value':_0x35d370[_0x4024a9[_0xb280('0x3e')][_0xb280('0x15')]['toLowerCase']()][_0xb280('0x2c')]()});}});}return _0x48c2e4;}exports[_0xb280('0x3f')]=function(_0x58c307,_0x1cd126,_0x256603,_0x17598f,_0x225c3c,_0xffb8cd){var _0x27ac8c,_0x130ea8;_0xffb8cd[_0xb280('0x1b')]=intUtil[_0xb280('0x40')](_0xffb8cd[_0xb280('0x1b')]);_0xffb8cd['serverUrl']=intUtil['stripTrailingSlash'](_0xffb8cd[_0xb280('0x41')]);if(_0x225c3c&&_0x225c3c[_0xb280('0x42')]){logger[_0xb280('0xc')]('[QUEUE]',_0xb280('0x43'));_0x1cd126[_0xb280('0x44')]=util['format'](_0xb280('0x45'),_0xffb8cd[_0xb280('0x41')],_0x1cd126[_0xb280('0x46')],md5(_0x1cd126['uniqueid']));}else{_0x1cd126[_0xb280('0x44')]='';}headers[_0xb280('0x47')]=getAuth(_0xffb8cd);return getUser(_0xffb8cd,_0x17598f[_0xb280('0x25')])[_0xb280('0x1d')](function(_0x3ad041){_0x27ac8c=_0x3ad041;logger[_0xb280('0xc')](_0xb280('0x48'),_0x27ac8c['id']);return getEndUser(_0xffb8cd,_0x1cd126['calleridname'],_0x1cd126['calleridnum']);})[_0xb280('0x1d')](function(_0x3e40e2){_0x130ea8=_0x3e40e2;logger[_0xb280('0xc')]('The\x20Enduser\x20ID\x20is:',_0x130ea8['id']);return getTicket(_0xffb8cd,_0x27ac8c,_0x130ea8,_0x256603,_0x1cd126);})['then'](function(_0x396e94){if(_0x396e94&&_0x396e94['id']){logger[_0xb280('0xc')]('Ticket\x20created!');logger[_0xb280('0xc')](_0xb280('0x49'),_0x396e94['id']);logger['info'](_0xb280('0x4a'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb280('0x19')](_0xb280('0x4b'),_0x17598f[_0xb280('0x15')]),_0xb280('0x4c'),{'uri':util[_0xb280('0x19')]('%s/helpdesk/tickets/%d',_0xffb8cd[_0xb280('0x1b')],_0x396e94['id'])});}})[_0xb280('0x4d')](function(_0x11be83){logger[_0xb280('0x4e')]('[QUEUE]',JSON[_0xb280('0x2e')](_0x11be83));});};exports[_0xb280('0x4f')]=function(_0x15a4ec,_0x525f4d,_0x38f1e8,_0x2c20f1,_0x4105b8,_0x1a3002,_0x2d85ec){var _0x88e547,_0x5f06b2;_0x1a3002['remoteUri']=intUtil[_0xb280('0x40')](_0x1a3002['remoteUri']);_0x1a3002[_0xb280('0x41')]=intUtil[_0xb280('0x40')](_0x1a3002['serverUrl']);if(_0x2d85ec&&_0x2d85ec['recordingFormat']&&_0x2d85ec['recordingFormat']!==_0xb280('0x50')){logger[_0xb280('0xc')](_0xb280('0x51'),_0xb280('0x43'));_0x525f4d[_0xb280('0x44')]=util[_0xb280('0x19')](_0xb280('0x45'),_0x1a3002[_0xb280('0x41')],_0x525f4d[_0xb280('0x46')],md5(_0x525f4d[_0xb280('0x46')]));}headers[_0xb280('0x47')]=getAuth(_0x1a3002);return getUser(_0x1a3002,_0x2c20f1[_0xb280('0x25')])['then'](function(_0x1bc3ea){_0x88e547=_0x1bc3ea;logger[_0xb280('0xc')](_0xb280('0x48'),_0x88e547['id']);return getEndUser(_0x1a3002,_0x525f4d[_0xb280('0x52')],_0x525f4d[_0xb280('0x53')]);})['then'](function(_0x1b4475){_0x5f06b2=_0x1b4475;logger[_0xb280('0xc')](_0xb280('0x54'),_0x5f06b2['id']);return getTicket(_0x1a3002,_0x88e547,_0x5f06b2,_0x38f1e8,_0x525f4d);})[_0xb280('0x1d')](function(_0x34de50){if(_0x34de50&&_0x34de50['id']){logger['info']('Ticket\x20created!');logger['info'](_0xb280('0x49'),_0x34de50['id']);logger['info'](_0xb280('0x51'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb280('0x19')](_0xb280('0x4b'),_0x2c20f1[_0xb280('0x15')]),_0xb280('0x4c'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x1a3002[_0xb280('0x1b')],_0x34de50['id'])});}})[_0xb280('0x4d')](function(_0x2e49a6){logger[_0xb280('0x4e')](_0xb280('0x51'),JSON[_0xb280('0x2e')](_0x2e49a6));});};exports[_0xb280('0x55')]=function(_0x226123,_0x5d306b,_0x3a8b11,_0x46c558,_0x1d0b2c,_0x262206){var _0x294842,_0x2339f5;_0x262206[_0xb280('0x1b')]=intUtil[_0xb280('0x40')](_0x262206['remoteUri']);_0x262206[_0xb280('0x41')]=intUtil[_0xb280('0x40')](_0x262206['serverUrl']);if(_0x1d0b2c&&_0x1d0b2c[_0xb280('0x42')]){logger[_0xb280('0xc')]('['+_0x5d306b['lastevent'][_0xb280('0x56')]()+']',_0xb280('0x43'));_0x5d306b[_0xb280('0x44')]=util[_0xb280('0x19')](_0xb280('0x45'),_0x262206[_0xb280('0x41')],_0x5d306b[_0xb280('0x46')],md5(_0x5d306b[_0xb280('0x46')]));}else{_0x5d306b[_0xb280('0x44')]='';}headers['Authorization']=getAuth(_0x262206);return getUser(_0x262206,'')['then'](function(_0x5c7439){_0x294842=_0x5c7439;logger[_0xb280('0xc')]('The\x20User\x20ID\x20is:',_0x294842['id']);return getEndUser(_0x262206,_0x5d306b['calleridname'],_0x5d306b[_0xb280('0x11')]);})['then'](function(_0x387dd4){_0x2339f5=_0x387dd4;logger[_0xb280('0xc')]('The\x20Enduser\x20ID\x20is:',_0x2339f5['id']);return getTicket(_0x262206,_0x294842,_0x2339f5,_0x3a8b11,_0x5d306b);})['then'](function(_0x204192){if(_0x204192){logger[_0xb280('0xc')](_0xb280('0x1e'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x204192['id']);}})[_0xb280('0x4d')](function(_0x23877a){logger['error']('['+_0x5d306b[_0xb280('0x57')]['toUpperCase']()+']',JSON[_0xb280('0x2e')](_0x23877a));});};
\ No newline at end of file
+var _0xc020=['Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','recordingFormat','uniqueid','destcalleridname','destcalleridnum','[OUTBOUND]','unmanaged','monitor_format','toUpperCase','catch','util','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','application/json','emit','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','calleridnum','Descriptions','<br>','name','Fields','custom_fields','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','length','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','apiKey','toString','debug','[HTTP]','stringify','GET','map','includes','string','picklist','type','nameField','customField','toLowerCase','content','push','idField','variable','variableName','Variable','stripTrailingSlash','[QUEUE]'];(function(_0x4aa662,_0x1cc90c){var _0x336478=function(_0x18b6ef){while(--_0x18b6ef){_0x4aa662['push'](_0x4aa662['shift']());}};_0x336478(++_0x1cc90c);}(_0xc020,0x6b));var _0x0c02=function(_0x33c70e,_0xd8cb0b){_0x33c70e=_0x33c70e-0x0;var _0x5a33e5=_0xc020[_0x33c70e];return _0x5a33e5;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require('md5');var util=require(_0x0c02('0x0'));var Redis=require('ioredis');var intUtil=require(_0x0c02('0x1'));var config=require(_0x0c02('0x2'));var logger=require(_0x0c02('0x3'))(_0x0c02('0x4'));config[_0x0c02('0x5')]=_[_0x0c02('0x6')](config[_0x0c02('0x5')],{'host':_0x0c02('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0c02('0x5')]));var headers={'Content-Type':'application/json','Accept':_0x0c02('0x8')};function emit(_0x2e1739,_0x2c780b,_0x3cef66){io['to'](_0x2e1739)[_0x0c02('0x9')](_0x2c780b,_0x3cef66);}function getTicket(_0x244374,_0x34ff44,_0x391f6c,_0x1d37cd,_0x259fc1){logger[_0x0c02('0xa')](_0x0c02('0xb'));var _0x2d3cc9=_['merge']({'responder_id':_0x34ff44['id'],'requester_id':_0x391f6c['id'],'name':util[_0x0c02('0xc')](_0x0c02('0xd'),_0x259fc1[_0x0c02('0xe')]),'phone':_0x259fc1[_0x0c02('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x1d37cd['Subjects'],_0x259fc1,'\x20'),'description':intUtil['getString'](_0x1d37cd[_0x0c02('0x10')],_0x259fc1,_0x0c02('0x11')),'tags':getTags(_0x1d37cd['Tags'],_0x0c02('0x12'))},getCustomFields(_0x1d37cd[_0x0c02('0x13')],_0x259fc1));_0x2d3cc9[_0x0c02('0x14')]=_['mapValues'](_[_0x0c02('0x15')](_0x2d3cc9['custom_fields'],'id'),_0x0c02('0x16'));return request({'uri':util[_0x0c02('0xc')](_0x0c02('0x17'),_0x244374[_0x0c02('0x18')]),'method':_0x0c02('0x19'),'body':_0x2d3cc9})[_0x0c02('0x1a')](function(_0x423cd2){logger[_0x0c02('0xa')](_0x0c02('0x1b'));return _0x423cd2;});}function getUser(_0x1db60f,_0x7b1e1){if(intUtil[_0x0c02('0x1c')](_0x7b1e1)){return request({'uri':util[_0x0c02('0xc')]('%s/api/v2/agents',_0x1db60f[_0x0c02('0x18')]),'qs':{'email':_0x7b1e1}})[_0x0c02('0x1a')](function(_0x408dae){if(_0x408dae[_0x0c02('0x1d')]){logger[_0x0c02('0xa')](_0x0c02('0x1e'));return _['find'](_0x408dae,function(_0x148590){return _0x148590['contact']['email']===_0x7b1e1;});}else{logger[_0x0c02('0xa')](_0x0c02('0x1f'));return request({'uri':util[_0x0c02('0xc')](_0x0c02('0x20'),_0x1db60f[_0x0c02('0x18')])})['then'](function(_0x25a608){logger['info']('Admin\x20account\x20selected.');return _0x25a608;});}});}else{logger[_0x0c02('0xa')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x0c02('0xc')](_0x0c02('0x20'),_0x1db60f[_0x0c02('0x18')])})['then'](function(_0x46cdae){logger[_0x0c02('0xa')](_0x0c02('0x21'));return _0x46cdae;});}}function getEndUser(_0x6e3abf,_0xb5b10f,_0x572975){logger[_0x0c02('0xa')](_0x0c02('0x22'),_0x572975);return request({'uri':util['format'](_0x0c02('0x23'),_0x6e3abf[_0x0c02('0x18')]),'qs':{'phone':_0x572975}})[_0x0c02('0x1a')](function(_0x5648c9){if(_0x5648c9[_0x0c02('0x1d')]){logger[_0x0c02('0xa')](_0x0c02('0x24'));return _[_0x0c02('0x25')](_0x5648c9,{'phone':_0x572975});}else{logger[_0x0c02('0xa')](_0x0c02('0x26'));return request({'uri':util[_0x0c02('0xc')](_0x0c02('0x23'),_0x6e3abf[_0x0c02('0x18')]),'method':_0x0c02('0x19'),'body':{'name':_0xb5b10f,'phone':_0x572975}})['then'](function(_0x7ba9be){logger['info']('Enduser\x20created.');return _0x7ba9be;});}});}function getAuth(_0x5e69ae){return util['format']('Basic\x20%s',new Buffer(_0x5e69ae[_0x0c02('0x27')]+':X')[_0x0c02('0x28')]('base64'));}function request(_0x245606){logger[_0x0c02('0x29')](_0x0c02('0x2a'),JSON[_0x0c02('0x2b')](_0x245606));return rp(_[_0x0c02('0x6')](_0x245606,{'method':_0x0c02('0x2c'),'headers':headers,'json':!![]}));}function getTags(_0x1e4f7f,_0x313679){var _0x27fa3b=[];if(_0x1e4f7f&&_0x1e4f7f['length']>0x0){_0x27fa3b=_[_0x0c02('0x2d')](_0x1e4f7f,_0x313679);}return _0x27fa3b;}function getCustomFields(_0x2d9ab3,_0x11dc17){var _0x3d6ef0=[];var _0x51a5f0={'custom_fields':[]};if(_0x2d9ab3[_0x0c02('0x1d')]>0x0){_['forEach'](_0x2d9ab3,function(_0x329867){if(_[_0x0c02('0x2e')]([_0x0c02('0x2f'),_0x0c02('0x30')],_0x329867[_0x0c02('0x31')])&&_0x329867[_0x0c02('0x32')]&&!_0x329867[_0x0c02('0x33')]){_0x51a5f0[_0x329867[_0x0c02('0x32')][_0x0c02('0x34')]()]=_0x329867[_0x0c02('0x35')][_0x0c02('0x28')]();}else if(_[_0x0c02('0x2e')]([_0x0c02('0x2f'),_0x0c02('0x30')],_0x329867[_0x0c02('0x31')])&&_0x329867['idField']&&_0x329867[_0x0c02('0x33')]){_0x51a5f0[_0x0c02('0x14')][_0x0c02('0x36')]({'id':_0x329867[_0x0c02('0x37')],'value':_0x329867[_0x0c02('0x35')][_0x0c02('0x28')]()});}else if(_0x329867['type']===_0x0c02('0x38')&&_0x329867['variableName']&&_0x329867[_0x0c02('0x37')]&&_0x329867[_0x0c02('0x33')]){_0x11dc17[_0x329867['variableName']]&&_0x51a5f0[_0x0c02('0x14')][_0x0c02('0x36')]({'id':_0x329867['idField'],'value':_0x11dc17[_0x329867[_0x0c02('0x39')]]['toString']()});}else if(_0x329867[_0x0c02('0x31')]==='customVariable'&&_0x329867['Variable']&&_0x329867[_0x0c02('0x3a')][_0x0c02('0x12')]&&_0x329867[_0x0c02('0x37')]&&_0x329867[_0x0c02('0x33')]){_0x11dc17[_0x329867[_0x0c02('0x3a')][_0x0c02('0x12')][_0x0c02('0x34')]()]&&_0x51a5f0[_0x0c02('0x14')][_0x0c02('0x36')]({'id':_0x329867[_0x0c02('0x37')],'value':_0x11dc17[_0x329867['Variable'][_0x0c02('0x12')][_0x0c02('0x34')]()]['toString']()});}});}return _0x51a5f0;}exports['queue']=function(_0x56f10a,_0x13f34c,_0x41d8cb,_0x347b3c,_0x2cde9a,_0x5b802c){var _0x5de455,_0x59b379;_0x5b802c[_0x0c02('0x18')]=intUtil[_0x0c02('0x3b')](_0x5b802c[_0x0c02('0x18')]);_0x5b802c['serverUrl']=intUtil[_0x0c02('0x3b')](_0x5b802c['serverUrl']);if(_0x2cde9a&&_0x2cde9a['monitor_format']){logger['info'](_0x0c02('0x3c'),_0x0c02('0x3d'));_0x13f34c[_0x0c02('0x3e')]=util['format'](_0x0c02('0x3f'),_0x5b802c[_0x0c02('0x40')],_0x13f34c['uniqueid'],md5(_0x13f34c['uniqueid']));}else{_0x13f34c['recordingURL']='';}headers[_0x0c02('0x41')]=getAuth(_0x5b802c);return getUser(_0x5b802c,_0x347b3c[_0x0c02('0x42')])['then'](function(_0x4215d5){_0x5de455=_0x4215d5;logger[_0x0c02('0xa')](_0x0c02('0x43'),_0x5de455['id']);return getEndUser(_0x5b802c,_0x13f34c[_0x0c02('0xe')],_0x13f34c[_0x0c02('0xf')]);})['then'](function(_0x1a36f9){_0x59b379=_0x1a36f9;logger[_0x0c02('0xa')](_0x0c02('0x44'),_0x59b379['id']);return getTicket(_0x5b802c,_0x5de455,_0x59b379,_0x41d8cb,_0x13f34c);})[_0x0c02('0x1a')](function(_0x47ec25){if(_0x47ec25&&_0x47ec25['id']){logger[_0x0c02('0xa')]('Ticket\x20created!');logger[_0x0c02('0xa')](_0x0c02('0x45'),_0x47ec25['id']);logger['info'](_0x0c02('0x3c'),_0x0c02('0x46'));emit(util[_0x0c02('0xc')](_0x0c02('0x47'),_0x347b3c[_0x0c02('0x12')]),_0x0c02('0x48'),{'uri':util['format'](_0x0c02('0x49'),_0x5b802c[_0x0c02('0x18')],_0x47ec25['id'])});}})['catch'](function(_0x310863){logger[_0x0c02('0x4a')](_0x0c02('0x3c'),JSON[_0x0c02('0x2b')](_0x310863));});};exports['outbound']=function(_0x1566e6,_0x484e6e,_0x449911,_0x6008c6,_0x2393ee,_0x323825,_0x337c09){var _0x4ae76b,_0x86ca95;_0x323825[_0x0c02('0x18')]=intUtil[_0x0c02('0x3b')](_0x323825[_0x0c02('0x18')]);_0x323825[_0x0c02('0x40')]=intUtil[_0x0c02('0x3b')](_0x323825[_0x0c02('0x40')]);if(_0x337c09&&_0x337c09[_0x0c02('0x4b')]&&_0x337c09[_0x0c02('0x4b')]!=='none'){logger['info']('[OUTBOUND]',_0x0c02('0x3d'));_0x484e6e['recordingURL']=util[_0x0c02('0xc')](_0x0c02('0x3f'),_0x323825['serverUrl'],_0x484e6e[_0x0c02('0x4c')],md5(_0x484e6e[_0x0c02('0x4c')]));}headers[_0x0c02('0x41')]=getAuth(_0x323825);return getUser(_0x323825,_0x6008c6[_0x0c02('0x42')])[_0x0c02('0x1a')](function(_0x2d0c01){_0x4ae76b=_0x2d0c01;logger[_0x0c02('0xa')](_0x0c02('0x43'),_0x4ae76b['id']);return getEndUser(_0x323825,_0x484e6e[_0x0c02('0x4d')],_0x484e6e[_0x0c02('0x4e')]);})[_0x0c02('0x1a')](function(_0x24e3f4){_0x86ca95=_0x24e3f4;logger[_0x0c02('0xa')](_0x0c02('0x44'),_0x86ca95['id']);return getTicket(_0x323825,_0x4ae76b,_0x86ca95,_0x449911,_0x484e6e);})['then'](function(_0x171972){if(_0x171972&&_0x171972['id']){logger[_0x0c02('0xa')](_0x0c02('0x1b'));logger[_0x0c02('0xa')]('The\x20Ticket\x20ID\x20is:',_0x171972['id']);logger['info'](_0x0c02('0x4f'),_0x0c02('0x46'));emit(util['format'](_0x0c02('0x47'),_0x6008c6[_0x0c02('0x12')]),_0x0c02('0x48'),{'uri':util['format'](_0x0c02('0x49'),_0x323825[_0x0c02('0x18')],_0x171972['id'])});}})['catch'](function(_0x145068){logger[_0x0c02('0x4a')]('[OUTBOUND]',JSON[_0x0c02('0x2b')](_0x145068));});};exports[_0x0c02('0x50')]=function(_0x186519,_0x132768,_0x1c4667,_0x4be46d,_0x32e7bd,_0x36039e){var _0x37d88f,_0x30157d;_0x36039e[_0x0c02('0x18')]=intUtil[_0x0c02('0x3b')](_0x36039e[_0x0c02('0x18')]);_0x36039e[_0x0c02('0x40')]=intUtil[_0x0c02('0x3b')](_0x36039e['serverUrl']);if(_0x32e7bd&&_0x32e7bd[_0x0c02('0x51')]){logger[_0x0c02('0xa')]('['+_0x132768['lastevent'][_0x0c02('0x52')]()+']',_0x0c02('0x3d'));_0x132768[_0x0c02('0x3e')]=util[_0x0c02('0xc')](_0x0c02('0x3f'),_0x36039e[_0x0c02('0x40')],_0x132768['uniqueid'],md5(_0x132768[_0x0c02('0x4c')]));}else{_0x132768[_0x0c02('0x3e')]='';}headers[_0x0c02('0x41')]=getAuth(_0x36039e);return getUser(_0x36039e,'')['then'](function(_0x276632){_0x37d88f=_0x276632;logger[_0x0c02('0xa')](_0x0c02('0x43'),_0x37d88f['id']);return getEndUser(_0x36039e,_0x132768[_0x0c02('0xe')],_0x132768[_0x0c02('0xf')]);})[_0x0c02('0x1a')](function(_0x31c2ac){_0x30157d=_0x31c2ac;logger[_0x0c02('0xa')]('The\x20Enduser\x20ID\x20is:',_0x30157d['id']);return getTicket(_0x36039e,_0x37d88f,_0x30157d,_0x1c4667,_0x132768);})[_0x0c02('0x1a')](function(_0x1e17e5){if(_0x1e17e5){logger[_0x0c02('0xa')](_0x0c02('0x1b'));logger[_0x0c02('0xa')](_0x0c02('0x45'),_0x1e17e5['id']);}})[_0x0c02('0x53')](function(_0x111cf8){logger[_0x0c02('0x4a')]('['+_0x132768['lastevent'][_0x0c02('0x52')]()+']',JSON['stringify'](_0x111cf8));});};
\ No newline at end of file
index f280b1a..9aa73d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b31=['calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','md5','bluebird','ioredis','./util','../../../../config/environment','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','users','length','adminId','Requested\x20Resource\x20not\x20Found','toUpperCase','message','headers','then','agentEmail','Getting\x20user\x20with\x20email','userEmail','email','userId','catch','error','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','contact','Creating\x20new\x20task','getString','Subjects','Descriptions','Contact','ticketId','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','adminEmail','username','toLowerCase','outbound'];(function(_0x48d36c,_0x2baeab){var _0x3051c3=function(_0x10e4cd){while(--_0x10e4cd){_0x48d36c['push'](_0x48d36c['shift']());}};_0x3051c3(++_0x2baeab);}(_0x7b31,0xb0));var _0x17b3=function(_0x1a557a,_0x2db5ce){_0x1a557a=_0x1a557a-0x0;var _0x47f18f=_0x7b31[_0x1a557a];return _0x47f18f;};'use strict';var _=require(_0x17b3('0x0'));var rp=require(_0x17b3('0x1'));var md5=require(_0x17b3('0x2'));var util=require('util');var moment=require('moment');var Promise=require(_0x17b3('0x3'));var Redis=require(_0x17b3('0x4'));var intUtil=require(_0x17b3('0x5'));var config=require(_0x17b3('0x6'));var logger=require('../../../../config/logger')(_0x17b3('0x7'));config[_0x17b3('0x8')]=_[_0x17b3('0x9')](config[_0x17b3('0x8')],{'host':_0x17b3('0xa'),'port':0x18eb});var io=require(_0x17b3('0xb'))(new Redis(config['redis']));function getAdminId(_0x330e8f,_0x2b5521,_0x3b5017,_0x2a4deb){return new Promise(function(_0x2402c9,_0x21b0e2){var _0x1216f1=![];var _0x3b2a99={'method':_0x17b3('0xc'),'uri':_0x2a4deb+_0x17b3('0xd'),'json':!![]};_0x3b2a99['headers']=_0x3b5017;logger[_0x17b3('0xe')](_0x17b3('0xf'));return rp(_0x3b2a99)['then'](function(_0x19c1ed){if(_0x19c1ed){var _0x5730ca=_0x19c1ed[_0x17b3('0x10')];var _0x1110ea=null;for(_0x1110ea=0x0;_0x1110ea<_0x5730ca[_0x17b3('0x11')];_0x1110ea++){if(_0x5730ca[_0x1110ea]['email']===_0x330e8f['adminEmail']){_0x330e8f[_0x17b3('0x12')]=_0x5730ca[_0x1110ea]['id'];_0x1216f1=!![];}}if(_0x1216f1){logger['info']('Admin\x20found:',_0x330e8f[_0x17b3('0x12')]);_0x2402c9(_0x330e8f);}else{_0x21b0e2({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x21b0e2({'statusCode':0x194,'message':_0x17b3('0x13')});}})['catch'](function(_0xc0ea65){logger['error']('['+[_0x2b5521[_0x17b3('0x14')]()]+']',_0xc0ea65[_0x17b3('0x15')]);_0x21b0e2(_0xc0ea65);});});}function getUser(_0x4f5614,_0xe5af5,_0xd541b8){return function(_0x461873){return new Promise(function(_0x260e31,_0x484bb5){var _0x2823ec={'method':_0x17b3('0xc'),'uri':_0xd541b8+'/api/selector/owners','json':!![]};_0x2823ec[_0x17b3('0x16')]=_0xe5af5;logger[_0x17b3('0xe')]('Getting\x20user\x20list');return rp(_0x2823ec)[_0x17b3('0x17')](function(_0x2fa450){if(_0x2fa450){var _0x35509b=_0x2fa450[_0x17b3('0x10')];var _0x527217=![];var _0x24c4f1=null;if(_0x461873[_0x17b3('0x18')]!==null){logger[_0x17b3('0xe')](_0x17b3('0x19'),_0x461873[_0x17b3('0x18')]);_0x461873[_0x17b3('0x1a')]=_0x461873[_0x17b3('0x18')];for(_0x24c4f1=0x0;_0x24c4f1<_0x35509b['length'];_0x24c4f1++){if(_0x35509b[_0x24c4f1][_0x17b3('0x1b')]===_0x461873['agentEmail']){_0x527217=!![];_0x461873['userId']=_0x35509b[_0x24c4f1]['id'];logger[_0x17b3('0xe')]('User\x20found:',_0x461873[_0x17b3('0x1c')]);}}}if(!_0x527217){logger[_0x17b3('0xe')]('Admin\x20selected');_0x461873['userEmail']=_0x461873['adminEmail'];_0x461873[_0x17b3('0x1c')]=_0x461873[_0x17b3('0x12')];_0x527217=!![];}if(_0x527217){_0x260e31(_0x461873);}else{_0x484bb5({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x484bb5({'statusCode':0x194,'message':_0x17b3('0x13')});}})[_0x17b3('0x1d')](function(_0x342ec0){logger[_0x17b3('0x1e')]('['+[_0x4f5614[_0x17b3('0x14')]()]+']',_0x342ec0[_0x17b3('0x15')]);_0x484bb5(_0x342ec0);});});};}function searchContact(_0x54f2e0,_0x5747e7,_0x2d11c6,_0x2c4525){return new Promise(function(_0x19f6aa,_0x16b412){var _0x5cce8d={'method':_0x17b3('0xc'),'headers':_0x5747e7,'uri':_0x54f2e0+_0x17b3('0x1f')+_0x2c4525+_0x17b3('0x20')+_0x2d11c6+_0x17b3('0x21'),'json':!![]};rp(_0x5cce8d)[_0x17b3('0x17')](function(_0x5572cf){var _0x5c1529=_[_0x17b3('0x22')](_0x5572cf[_0x17b3('0x23')]['contacts'],[_0x2d11c6,_0x2c4525]);_0x19f6aa(_0x5c1529);})[_0x17b3('0x1d')](function(_0x2cfc73){_0x16b412(_0x2cfc73);});});}function getEndUser(_0x54fe05,_0x1e3739,_0x31068f){return function(_0xed9dfe){return new Promise(function(_0x178019,_0x2ab15d){logger['info'](util[_0x17b3('0x24')](_0x17b3('0x25'),_0xed9dfe[_0x17b3('0x26')]));searchContact(_0x31068f,_0x1e3739,_0x17b3('0x27'),_0xed9dfe['contactNumber'])[_0x17b3('0x17')](function(_0x49a175){if(_0x49a175){_0xed9dfe[_0x17b3('0x28')]=_0x49a175['id'];logger[_0x17b3('0xe')]('Contact\x20found\x20mobile_number:',_0xed9dfe[_0x17b3('0x28')]);return _0x178019(_0xed9dfe);}searchContact(_0x31068f,_0x1e3739,_0x17b3('0x29'),_0xed9dfe[_0x17b3('0x26')])[_0x17b3('0x17')](function(_0x21c4d8){if(_0x21c4d8){_0xed9dfe[_0x17b3('0x28')]=_0x21c4d8['id'];logger[_0x17b3('0xe')](_0x17b3('0x2a'),_0xed9dfe[_0x17b3('0x28')]);return _0x178019(_0xed9dfe);}createEndUser(_0xed9dfe,_0x54fe05,_0x1e3739,_0x31068f)[_0x17b3('0x17')](function(_0x5c5c25){logger['info'](_0x17b3('0x2b'),_0x5c5c25[_0x17b3('0x28')]);return _0x178019(_0x5c5c25);});});})[_0x17b3('0x1d')](function(_0x10e5f3){_0x2ab15d(_0x10e5f3);});});};}function createEndUser(_0x13f652,_0x1e53e2,_0x310f39,_0x10d4a6){return new Promise(function(_0x2f3e27,_0x1e66fd){var _0x34226b=moment();var _0x11aa16={'method':_0x17b3('0x2c'),'uri':_0x10d4a6+_0x17b3('0x2d'),'body':{'contact':{'last_name':_0x13f652['contactNumber'],'work_number':_0x13f652[_0x17b3('0x26')],'mobile_number':_0x13f652[_0x17b3('0x26')],'owner_id':_0x13f652[_0x17b3('0x1c')],'created_at':_0x34226b[_0x17b3('0x24')](_0x17b3('0x2e'))}},'json':!![]};_0x11aa16[_0x17b3('0x16')]=_0x310f39;logger[_0x17b3('0xe')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x11aa16)['then'](function(_0x342468){_0x13f652[_0x17b3('0x28')]=_0x342468[_0x17b3('0x2f')]['id'];_0x2f3e27(_0x13f652);})[_0x17b3('0x1d')](function(_0x132709){logger[_0x17b3('0x1e')]('['+[_0x1e53e2[_0x17b3('0x14')]()]+']',_0x132709['message']);_0x1e66fd(_0x132709[_0x17b3('0x15')]);});});}function getTicket(_0x55c699,_0x1bdaca,_0x21836b,_0x4b1b6a,_0x329445){return function(_0x4fe886){logger[_0x17b3('0xe')](_0x17b3('0x30'));return new Promise(function(_0x31e180,_0x35fd14){var _0x293de3=moment();var _0x37ccb7={'method':_0x17b3('0x2c'),'uri':_0x21836b+'/api/tasks','body':{'title':intUtil[_0x17b3('0x31')](_0x4b1b6a[_0x17b3('0x32')],_0x329445,'\x20'),'description':intUtil[_0x17b3('0x31')](_0x4b1b6a[_0x17b3('0x33')],_0x329445,'\x0a'),'owner_id':_0x4fe886[_0x17b3('0x1c')],'creater_id':_0x4fe886[_0x17b3('0x12')],'targetable_id':_0x4fe886[_0x17b3('0x28')],'targetable_type':_0x17b3('0x34'),'created_at':_0x293de3[_0x17b3('0x24')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x293de3['add'](0x1e,'m')[_0x17b3('0x24')](_0x17b3('0x2e'))},'json':!![]};_0x37ccb7[_0x17b3('0x16')]=_0x1bdaca;return rp(_0x37ccb7)[_0x17b3('0x17')](function(_0x25f0ee){_0x4fe886[_0x17b3('0x35')]=_0x25f0ee['task']['id'];logger[_0x17b3('0xe')](_0x17b3('0x36'),_0x4fe886['ticketId']);_0x31e180(_0x4fe886);})[_0x17b3('0x1d')](function(_0x231872){logger[_0x17b3('0x1e')]('['+[_0x55c699[_0x17b3('0x14')]()]+']',_0x231872[_0x17b3('0x15')]);_0x35fd14(_0x231872[_0x17b3('0x15')]);});});};}function emit(_0x34e874,_0x439f8f,_0x358f65){var _0xfd7179={'uri':_0x34e874+_0x17b3('0x37')+_0x358f65};io['to'](util[_0x17b3('0x24')](_0x17b3('0x38'),_0x439f8f))[_0x17b3('0x39')](_0x17b3('0x3a'),_0xfd7179);}exports['cs']=function(_0x2258df,_0xe8df43,_0x58121c,_0x450544,_0x36ca43,_0x45a1c1,_0x5aa6a6,_0x5021f2){var _0x3a47dc={};var _0x35c8bf={'Authorization':'Token\x20token='+_0x45a1c1[_0x17b3('0x3b')]};_0x45a1c1[_0x17b3('0x3c')]=intUtil[_0x17b3('0x3d')](_0x45a1c1[_0x17b3('0x3c')]);_0x45a1c1['serverUrl']=intUtil[_0x17b3('0x3d')](_0x45a1c1[_0x17b3('0x3e')]);var _0x51b593=_0x45a1c1['remoteUri'];_0x3a47dc[_0x17b3('0x3f')]=_0x45a1c1[_0x17b3('0x40')];_0x3a47dc[_0x17b3('0x26')]=_0x5021f2[_0x17b3('0x41')]()===_0x17b3('0x42')?_0xe8df43['destcalleridnum']:_0xe8df43[_0x17b3('0x43')];_0x3a47dc[_0x17b3('0x44')]=_0x5021f2===_0x17b3('0x45')||_0x5021f2===_0x17b3('0x46')?_0x17b3('0x45'):'outbound';if(_0x450544){_0x3a47dc[_0x17b3('0x18')]=_0x450544[_0x17b3('0x1b')];}var _0x1fe72b=util[_0x17b3('0x24')](_0x17b3('0x47'),_0x45a1c1[_0x17b3('0x3e')],_0xe8df43[_0x17b3('0x48')],md5(_0xe8df43['uniqueid']));if(_0x36ca43&&_0x36ca43['monitor_format']){logger[_0x17b3('0xe')](_0x17b3('0x49'),_0x17b3('0x4a'));_0xe8df43['recordingURL']=_0x1fe72b;}else if(_0x5aa6a6&&_0x5aa6a6[_0x17b3('0x4b')]&&_0x5aa6a6[_0x17b3('0x4b')]!==_0x17b3('0x4c')){logger[_0x17b3('0xe')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0xe8df43[_0x17b3('0x4d')]=_0x1fe72b;}else{_0xe8df43[_0x17b3('0x4d')]='';}return getAdminId(_0x3a47dc,_0x5021f2,_0x35c8bf,_0x51b593)[_0x17b3('0x17')](getUser(_0x5021f2,_0x35c8bf,_0x51b593))['then'](getEndUser(_0x5021f2,_0x35c8bf,_0x51b593))[_0x17b3('0x17')](getTicket(_0x5021f2,_0x35c8bf,_0x51b593,_0x58121c,_0xe8df43))[_0x17b3('0x17')](function(_0x33c837){logger[_0x17b3('0xe')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x33c837[_0x17b3('0x35')]));if(_0x5021f2!==_0x17b3('0x46')){logger[_0x17b3('0xe')]('['+[_0x5021f2[_0x17b3('0x14')]()]+']',_0x17b3('0x4e'));emit(_0x51b593,_0x450544[_0x17b3('0x4f')],_0x33c837[_0x17b3('0x28')]);}})[_0x17b3('0x1d')](function(_0x509841){logger[_0x17b3('0x1e')]('['+[_0x5021f2['toUpperCase']()]+_0x17b3('0x50'),util['inspect'](_0x509841,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x9591=['&entities=contact','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','Contact\x20found\x20mobile_number:','endUserId','contactNumber','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','format','YYYY-MM-DDTHH:mm:ss','contact','Creating\x20new\x20task','/api/tasks','getString','Descriptions','Contact','add','task','Task\x20created:','ticketId','user:%s','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','util','moment','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','headers','info','Getting\x20admin\x20information','then','users','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','/api/selector/owners','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','length','User\x20found:','userId','Admin\x20selected','catch','&f='];(function(_0x573770,_0x4422e6){var _0x21f568=function(_0x3249f7){while(--_0x3249f7){_0x573770['push'](_0x573770['shift']());}};_0x21f568(++_0x4422e6);}(_0x9591,0xe0));var _0x1959=function(_0x2e3648,_0x34aa0e){_0x2e3648=_0x2e3648-0x0;var _0xbbad0f=_0x9591[_0x2e3648];return _0xbbad0f;};'use strict';var _=require(_0x1959('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x1959('0x1'));var moment=require(_0x1959('0x2'));var Promise=require('bluebird');var Redis=require(_0x1959('0x3'));var intUtil=require(_0x1959('0x4'));var config=require(_0x1959('0x5'));var logger=require(_0x1959('0x6'))(_0x1959('0x7'));config[_0x1959('0x8')]=_[_0x1959('0x9')](config['redis'],{'host':_0x1959('0xa'),'port':0x18eb});var io=require(_0x1959('0xb'))(new Redis(config[_0x1959('0x8')]));function getAdminId(_0x75c8e1,_0x375721,_0x2d6574,_0x376c48){return new Promise(function(_0x4519d6,_0x47ff57){var _0xf2effa=![];var _0x30b1e1={'method':_0x1959('0xc'),'uri':_0x376c48+'/api/selector/owners','json':!![]};_0x30b1e1[_0x1959('0xd')]=_0x2d6574;logger[_0x1959('0xe')](_0x1959('0xf'));return rp(_0x30b1e1)[_0x1959('0x10')](function(_0x271ae1){if(_0x271ae1){var _0x89653=_0x271ae1[_0x1959('0x11')];var _0x4d52aa=null;for(_0x4d52aa=0x0;_0x4d52aa<_0x89653['length'];_0x4d52aa++){if(_0x89653[_0x4d52aa][_0x1959('0x12')]===_0x75c8e1[_0x1959('0x13')]){_0x75c8e1[_0x1959('0x14')]=_0x89653[_0x4d52aa]['id'];_0xf2effa=!![];}}if(_0xf2effa){logger[_0x1959('0xe')](_0x1959('0x15'),_0x75c8e1['adminId']);_0x4519d6(_0x75c8e1);}else{_0x47ff57({'statusCode':0x194,'message':_0x1959('0x16')});}}else{_0x47ff57({'statusCode':0x194,'message':_0x1959('0x16')});}})['catch'](function(_0x4c7948){logger[_0x1959('0x17')]('['+[_0x375721[_0x1959('0x18')]()]+']',_0x4c7948[_0x1959('0x19')]);_0x47ff57(_0x4c7948);});});}function getUser(_0x459e3f,_0x150a2d,_0x2ed9c6){return function(_0xee6960){return new Promise(function(_0xc961af,_0x308db6){var _0x5eca6c={'method':_0x1959('0xc'),'uri':_0x2ed9c6+_0x1959('0x1a'),'json':!![]};_0x5eca6c['headers']=_0x150a2d;logger[_0x1959('0xe')](_0x1959('0x1b'));return rp(_0x5eca6c)[_0x1959('0x10')](function(_0xe1cfb7){if(_0xe1cfb7){var _0x161d7d=_0xe1cfb7['users'];var _0x34ca28=![];var _0x368baf=null;if(_0xee6960[_0x1959('0x1c')]!==null){logger[_0x1959('0xe')](_0x1959('0x1d'),_0xee6960['agentEmail']);_0xee6960[_0x1959('0x1e')]=_0xee6960[_0x1959('0x1c')];for(_0x368baf=0x0;_0x368baf<_0x161d7d[_0x1959('0x1f')];_0x368baf++){if(_0x161d7d[_0x368baf][_0x1959('0x12')]===_0xee6960[_0x1959('0x1c')]){_0x34ca28=!![];_0xee6960['userId']=_0x161d7d[_0x368baf]['id'];logger[_0x1959('0xe')](_0x1959('0x20'),_0xee6960[_0x1959('0x21')]);}}}if(!_0x34ca28){logger['info'](_0x1959('0x22'));_0xee6960[_0x1959('0x1e')]=_0xee6960[_0x1959('0x13')];_0xee6960[_0x1959('0x21')]=_0xee6960['adminId'];_0x34ca28=!![];}if(_0x34ca28){_0xc961af(_0xee6960);}else{_0x308db6({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x308db6({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x1959('0x23')](function(_0x93b99e){logger['error']('['+[_0x459e3f['toUpperCase']()]+']',_0x93b99e[_0x1959('0x19')]);_0x308db6(_0x93b99e);});});};}function searchContact(_0x55ef26,_0xdfc4ba,_0x4f2e3e,_0x147412){return new Promise(function(_0x7a43fb,_0x2d7ec2){var _0x5b8277={'method':_0x1959('0xc'),'headers':_0xdfc4ba,'uri':_0x55ef26+'/api/lookup?q='+_0x147412+_0x1959('0x24')+_0x4f2e3e+_0x1959('0x25'),'json':!![]};rp(_0x5b8277)[_0x1959('0x10')](function(_0xa16f80){var _0x4f1716=_[_0x1959('0x26')](_0xa16f80['contacts'][_0x1959('0x27')],[_0x4f2e3e,_0x147412]);_0x7a43fb(_0x4f1716);})['catch'](function(_0x5dfcbf){_0x2d7ec2(_0x5dfcbf);});});}function getEndUser(_0x3d55e3,_0x20fae3,_0x20940c){return function(_0x594e90){return new Promise(function(_0x3c191c,_0x4fbabc){logger[_0x1959('0xe')](util['format'](_0x1959('0x28'),_0x594e90['contactNumber']));searchContact(_0x20940c,_0x20fae3,'mobile_number',_0x594e90['contactNumber'])[_0x1959('0x10')](function(_0x5b1a10){if(_0x5b1a10){_0x594e90['endUserId']=_0x5b1a10['id'];logger[_0x1959('0xe')](_0x1959('0x29'),_0x594e90[_0x1959('0x2a')]);return _0x3c191c(_0x594e90);}searchContact(_0x20940c,_0x20fae3,'work_number',_0x594e90[_0x1959('0x2b')])[_0x1959('0x10')](function(_0x4c3ebc){if(_0x4c3ebc){_0x594e90['endUserId']=_0x4c3ebc['id'];logger[_0x1959('0xe')](_0x1959('0x2c'),_0x594e90[_0x1959('0x2a')]);return _0x3c191c(_0x594e90);}createEndUser(_0x594e90,_0x3d55e3,_0x20fae3,_0x20940c)['then'](function(_0x5d9ea7){logger[_0x1959('0xe')](_0x1959('0x2d'),_0x5d9ea7[_0x1959('0x2a')]);return _0x3c191c(_0x5d9ea7);});});})[_0x1959('0x23')](function(_0x48716f){_0x4fbabc(_0x48716f);});});};}function createEndUser(_0x52edce,_0x2b8e46,_0x13162e,_0x39a69b){return new Promise(function(_0x4bdd1a,_0x5bc28a){var _0x276f58=moment();var _0x57d314={'method':_0x1959('0x2e'),'uri':_0x39a69b+_0x1959('0x2f'),'body':{'contact':{'last_name':_0x52edce[_0x1959('0x2b')],'work_number':_0x52edce[_0x1959('0x2b')],'mobile_number':_0x52edce[_0x1959('0x2b')],'owner_id':_0x52edce[_0x1959('0x21')],'created_at':_0x276f58[_0x1959('0x30')](_0x1959('0x31'))}},'json':!![]};_0x57d314[_0x1959('0xd')]=_0x13162e;logger[_0x1959('0xe')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x57d314)[_0x1959('0x10')](function(_0x3c900a){_0x52edce['endUserId']=_0x3c900a[_0x1959('0x32')]['id'];_0x4bdd1a(_0x52edce);})[_0x1959('0x23')](function(_0x3f1b3b){logger['error']('['+[_0x2b8e46[_0x1959('0x18')]()]+']',_0x3f1b3b['message']);_0x5bc28a(_0x3f1b3b[_0x1959('0x19')]);});});}function getTicket(_0x3a7c58,_0x28cf52,_0x5755e3,_0x3ea522,_0x4d133e){return function(_0x38f4b6){logger[_0x1959('0xe')](_0x1959('0x33'));return new Promise(function(_0x47153a,_0x5a4aa8){var _0xa410f=moment();var _0x356d39={'method':_0x1959('0x2e'),'uri':_0x5755e3+_0x1959('0x34'),'body':{'title':intUtil[_0x1959('0x35')](_0x3ea522['Subjects'],_0x4d133e,'\x20'),'description':intUtil['getString'](_0x3ea522[_0x1959('0x36')],_0x4d133e,'\x0a'),'owner_id':_0x38f4b6[_0x1959('0x21')],'creater_id':_0x38f4b6['adminId'],'targetable_id':_0x38f4b6[_0x1959('0x2a')],'targetable_type':_0x1959('0x37'),'created_at':_0xa410f['format'](_0x1959('0x31')),'due_date':_0xa410f[_0x1959('0x38')](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x356d39[_0x1959('0xd')]=_0x28cf52;return rp(_0x356d39)[_0x1959('0x10')](function(_0x507e98){_0x38f4b6['ticketId']=_0x507e98[_0x1959('0x39')]['id'];logger[_0x1959('0xe')](_0x1959('0x3a'),_0x38f4b6[_0x1959('0x3b')]);_0x47153a(_0x38f4b6);})[_0x1959('0x23')](function(_0x48548e){logger[_0x1959('0x17')]('['+[_0x3a7c58[_0x1959('0x18')]()]+']',_0x48548e['message']);_0x5a4aa8(_0x48548e['message']);});});};}function emit(_0x3ce24e,_0x4bdddd,_0x5c2bfc){var _0x5020d3={'uri':_0x3ce24e+'/contacts/'+_0x5c2bfc};io['to'](util['format'](_0x1959('0x3c'),_0x4bdddd))['emit'](_0x1959('0x3d'),_0x5020d3);}exports['cs']=function(_0x447f79,_0x1df6fe,_0x1f24a7,_0x46b952,_0x5be48c,_0xac0463,_0x1363f3,_0x3a431d){var _0x55454e={};var _0x46402c={'Authorization':_0x1959('0x3e')+_0xac0463[_0x1959('0x3f')]};_0xac0463[_0x1959('0x40')]=intUtil[_0x1959('0x41')](_0xac0463[_0x1959('0x40')]);_0xac0463[_0x1959('0x42')]=intUtil[_0x1959('0x41')](_0xac0463[_0x1959('0x42')]);var _0x942b42=_0xac0463[_0x1959('0x40')];_0x55454e[_0x1959('0x13')]=_0xac0463[_0x1959('0x43')];_0x55454e[_0x1959('0x2b')]=_0x3a431d[_0x1959('0x44')]()===_0x1959('0x45')?_0x1df6fe[_0x1959('0x46')]:_0x1df6fe[_0x1959('0x47')];_0x55454e[_0x1959('0x48')]=_0x3a431d===_0x1959('0x49')||_0x3a431d==='unmanaged'?'queue':_0x1959('0x45');if(_0x46b952){_0x55454e[_0x1959('0x1c')]=_0x46b952[_0x1959('0x12')];}var _0x5dd65c=util['format'](_0x1959('0x4a'),_0xac0463[_0x1959('0x42')],_0x1df6fe[_0x1959('0x4b')],md5(_0x1df6fe[_0x1959('0x4b')]));if(_0x5be48c&&_0x5be48c[_0x1959('0x4c')]){logger[_0x1959('0xe')](_0x1959('0x4d'),_0x1959('0x4e'));_0x1df6fe[_0x1959('0x4f')]=_0x5dd65c;}else if(_0x1363f3&&_0x1363f3[_0x1959('0x50')]&&_0x1363f3[_0x1959('0x50')]!==_0x1959('0x51')){logger[_0x1959('0xe')](_0x1959('0x52'),_0x1959('0x4e'));_0x1df6fe['recordingURL']=_0x5dd65c;}else{_0x1df6fe[_0x1959('0x4f')]='';}return getAdminId(_0x55454e,_0x3a431d,_0x46402c,_0x942b42)['then'](getUser(_0x3a431d,_0x46402c,_0x942b42))[_0x1959('0x10')](getEndUser(_0x3a431d,_0x46402c,_0x942b42))[_0x1959('0x10')](getTicket(_0x3a431d,_0x46402c,_0x942b42,_0x1f24a7,_0x1df6fe))[_0x1959('0x10')](function(_0x3c4792){logger[_0x1959('0xe')](util[_0x1959('0x30')](_0x1959('0x53'),_0x3c4792[_0x1959('0x3b')]));if(_0x3a431d!==_0x1959('0x54')){logger[_0x1959('0xe')]('['+[_0x3a431d[_0x1959('0x18')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x942b42,_0x46b952[_0x1959('0x55')],_0x3c4792['endUserId']);}})[_0x1959('0x23')](function(_0x22d131){logger[_0x1959('0x17')]('['+[_0x3a431d[_0x1959('0x18')]()]+_0x1959('0x56'),util['inspect'](_0x22d131,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 842944a..0171125 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1f2=['Configurations','queue','routeId','outbound','log','unmanaged','servicenow','dynamics365','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','data3','lodash','util','./sugarcrm','./vtiger','./servicenow','./dynamics365','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','vtiger','freshsales','exec','includes','data1','toLowerCase','data2'];(function(_0x4599b6,_0x40c254){var _0x2e014c=function(_0x3c4d90){while(--_0x3c4d90){_0x4599b6['push'](_0x4599b6['shift']());}};_0x2e014c(++_0x40c254);}(_0xc1f2,0x1c9));var _0x2c1f=function(_0x45d0c6,_0x13f497){_0x45d0c6=_0x45d0c6-0x0;var _0x1be8e7=_0xc1f2[_0x45d0c6];return _0x1be8e7;};'use strict';var _=require(_0x2c1f('0x0'));var util=require(_0x2c1f('0x1'));var zendesk=require('./zendesk');var salesforce=require('./salesforce');var sugarcrm=require(_0x2c1f('0x2'));var freshdesk=require('./freshdesk');var zoho=require('./zoho');var desk=require('./desk');var vtiger=require(_0x2c1f('0x3'));var servicenow=require(_0x2c1f('0x4'));var dynamics365=require(_0x2c1f('0x5'));var freshsales=require('./freshsales');var integrations=[_0x2c1f('0x6'),_0x2c1f('0x7'),_0x2c1f('0x8'),_0x2c1f('0x9'),_0x2c1f('0xa'),_0x2c1f('0xb'),_0x2c1f('0xc'),'dynamics365',_0x2c1f('0xd'),'servicenow'];exports[_0x2c1f('0xe')]=function(_0xe4d29e,_0x47a765,_0x4e67cb,_0x4bd4cd,_0x488544,_0x360d08){if(_0x4e67cb){if(_[_0x2c1f('0xf')](integrations,_0xe4d29e[_0x2c1f('0x10')][_0x2c1f('0x11')]())){try{var _0x18524f=null;var _0x4c4ac8='';var _0x342ec5=_0x4e67cb[_0xe4d29e[_0x2c1f('0x10')][_0x2c1f('0x11')]()];if(_0x342ec5){var _0x477d83=_0x342ec5[_0xe4d29e[_0x2c1f('0x12')]];if(_0x477d83){var _0x17bd1f=_['find'](_0x477d83[_0x2c1f('0x13')],{'id':parseInt(_0xe4d29e['data3'],0xa)});if(_0x17bd1f){if(_0x4bd4cd){if(_0x488544&&_0x47a765[_0x2c1f('0x14')]){_0x4c4ac8=_0x2c1f('0x14');}else if(_0x47a765[_0x2c1f('0x15')]){_0x4c4ac8=_0x2c1f('0x16');}else{console[_0x2c1f('0x17')]('EVENT\x20UNKNOWN',_0x47a765);}}else{_0x4c4ac8=_0x2c1f('0x18');}switch(_0xe4d29e[_0x2c1f('0x10')][_0x2c1f('0x11')]()){case'zendesk':zendesk[_0x4c4ac8](_0xe4d29e,_0x47a765,_0x17bd1f,_0x4bd4cd,_0x488544,_0x477d83,_0x360d08);break;case _0x2c1f('0x7'):salesforce[_0x4c4ac8](_0xe4d29e,_0x47a765,_0x17bd1f,_0x4bd4cd,_0x488544,_0x477d83,_0x360d08);break;case'sugarcrm':sugarcrm[_0x4c4ac8](_0xe4d29e,_0x47a765,_0x17bd1f,_0x4bd4cd,_0x488544,_0x477d83,_0x360d08);break;case _0x2c1f('0x9'):freshdesk[_0x4c4ac8](_0xe4d29e,_0x47a765,_0x17bd1f,_0x4bd4cd,_0x488544,_0x477d83,_0x360d08);break;case _0x2c1f('0xa'):zoho[_0x4c4ac8](_0xe4d29e,_0x47a765,_0x17bd1f,_0x4bd4cd,_0x488544,_0x477d83,_0x360d08);break;case'desk':desk[_0x4c4ac8](_0xe4d29e,_0x47a765,_0x17bd1f,_0x4bd4cd,_0x488544,_0x477d83,_0x360d08);break;case _0x2c1f('0xc'):vtiger[_0x4c4ac8](_0xe4d29e,_0x47a765,_0x17bd1f,_0x4bd4cd,_0x488544,_0x477d83,_0x360d08);break;case'freshsales':freshsales['cs'](_0xe4d29e,_0x47a765,_0x17bd1f,_0x4bd4cd,_0x488544,_0x477d83,_0x360d08,_0x4c4ac8);break;case _0x2c1f('0x19'):servicenow['cs'](_0xe4d29e,_0x47a765,_0x17bd1f,_0x4bd4cd,_0x488544,_0x477d83,_0x360d08,_0x4c4ac8);break;case _0x2c1f('0x1a'):dynamics365['cs'](_0xe4d29e,_0x47a765,_0x17bd1f,_0x4bd4cd,_0x488544,_0x477d83,_0x360d08,_0x4c4ac8);break;default:console[_0x2c1f('0x17')](_0x2c1f('0x1b'));}}else{_0x18524f=require(_0x2c1f('0x1c'))(_0xe4d29e[_0x2c1f('0x10')][_0x2c1f('0x11')]());_0x18524f[_0x2c1f('0x1d')](_0x2c1f('0x1e'),util[_0x2c1f('0x1f')](_0x2c1f('0x20'),_0xe4d29e['data1'][_0x2c1f('0x11')](),_0xe4d29e[_0x2c1f('0x21')]));}}else{_0x18524f=require(_0x2c1f('0x1c'))(_0xe4d29e['data1'][_0x2c1f('0x11')]());_0x18524f[_0x2c1f('0x1d')]('[EXEC]',util[_0x2c1f('0x1f')]('%s\x20account\x20#%s\x20not\x20found',_0xe4d29e['data1'][_0x2c1f('0x11')](),_0xe4d29e[_0x2c1f('0x12')]));}}else{}}catch(_0x324e8d){console[_0x2c1f('0x1d')](_0x324e8d);}}}};
\ No newline at end of file
+var _0xe2bf=['find','Configurations','data3','queue','routeId','log','EVENT\x20UNKNOWN','salesforce','vtiger','dynamics365','unknown\x20integration','../../../../config/logger','error','%s\x20configuration\x20#%s\x20not\x20found','[EXEC]','lodash','util','./zendesk','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./freshsales','zendesk','sugarcrm','freshdesk','zoho','desk','freshsales','servicenow','exec','includes','data1','toLowerCase'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xe2bf,0x1bf));var _0xfe2b=function(_0x126607,_0x23bd54){_0x126607=_0x126607-0x0;var _0x155d4e=_0xe2bf[_0x126607];return _0x155d4e;};'use strict';var _=require(_0xfe2b('0x0'));var util=require(_0xfe2b('0x1'));var zendesk=require(_0xfe2b('0x2'));var salesforce=require('./salesforce');var sugarcrm=require(_0xfe2b('0x3'));var freshdesk=require(_0xfe2b('0x4'));var zoho=require(_0xfe2b('0x5'));var desk=require(_0xfe2b('0x6'));var vtiger=require(_0xfe2b('0x7'));var servicenow=require(_0xfe2b('0x8'));var dynamics365=require('./dynamics365');var freshsales=require(_0xfe2b('0x9'));var integrations=[_0xfe2b('0xa'),'salesforce',_0xfe2b('0xb'),_0xfe2b('0xc'),_0xfe2b('0xd'),_0xfe2b('0xe'),'vtiger','dynamics365',_0xfe2b('0xf'),_0xfe2b('0x10')];exports[_0xfe2b('0x11')]=function(_0x50ead3,_0x464d48,_0x11a60b,_0x1ed677,_0x267844,_0x579197){if(_0x11a60b){if(_[_0xfe2b('0x12')](integrations,_0x50ead3[_0xfe2b('0x13')][_0xfe2b('0x14')]())){try{var _0x263760=null;var _0x125a0d='';var _0x5753c6=_0x11a60b[_0x50ead3[_0xfe2b('0x13')][_0xfe2b('0x14')]()];if(_0x5753c6){var _0x5f4996=_0x5753c6[_0x50ead3['data2']];if(_0x5f4996){var _0x42b4e8=_[_0xfe2b('0x15')](_0x5f4996[_0xfe2b('0x16')],{'id':parseInt(_0x50ead3[_0xfe2b('0x17')],0xa)});if(_0x42b4e8){if(_0x1ed677){if(_0x267844&&_0x464d48[_0xfe2b('0x18')]){_0x125a0d=_0xfe2b('0x18');}else if(_0x464d48[_0xfe2b('0x19')]){_0x125a0d='outbound';}else{console[_0xfe2b('0x1a')](_0xfe2b('0x1b'),_0x464d48);}}else{_0x125a0d='unmanaged';}switch(_0x50ead3[_0xfe2b('0x13')][_0xfe2b('0x14')]()){case _0xfe2b('0xa'):zendesk[_0x125a0d](_0x50ead3,_0x464d48,_0x42b4e8,_0x1ed677,_0x267844,_0x5f4996,_0x579197);break;case _0xfe2b('0x1c'):salesforce[_0x125a0d](_0x50ead3,_0x464d48,_0x42b4e8,_0x1ed677,_0x267844,_0x5f4996,_0x579197);break;case _0xfe2b('0xb'):sugarcrm[_0x125a0d](_0x50ead3,_0x464d48,_0x42b4e8,_0x1ed677,_0x267844,_0x5f4996,_0x579197);break;case _0xfe2b('0xc'):freshdesk[_0x125a0d](_0x50ead3,_0x464d48,_0x42b4e8,_0x1ed677,_0x267844,_0x5f4996,_0x579197);break;case'zoho':zoho[_0x125a0d](_0x50ead3,_0x464d48,_0x42b4e8,_0x1ed677,_0x267844,_0x5f4996,_0x579197);break;case _0xfe2b('0xe'):desk[_0x125a0d](_0x50ead3,_0x464d48,_0x42b4e8,_0x1ed677,_0x267844,_0x5f4996,_0x579197);break;case _0xfe2b('0x1d'):vtiger[_0x125a0d](_0x50ead3,_0x464d48,_0x42b4e8,_0x1ed677,_0x267844,_0x5f4996,_0x579197);break;case'freshsales':freshsales['cs'](_0x50ead3,_0x464d48,_0x42b4e8,_0x1ed677,_0x267844,_0x5f4996,_0x579197,_0x125a0d);break;case'servicenow':servicenow['cs'](_0x50ead3,_0x464d48,_0x42b4e8,_0x1ed677,_0x267844,_0x5f4996,_0x579197,_0x125a0d);break;case _0xfe2b('0x1e'):dynamics365['cs'](_0x50ead3,_0x464d48,_0x42b4e8,_0x1ed677,_0x267844,_0x5f4996,_0x579197,_0x125a0d);break;default:console[_0xfe2b('0x1a')](_0xfe2b('0x1f'));}}else{_0x263760=require(_0xfe2b('0x20'))(_0x50ead3[_0xfe2b('0x13')][_0xfe2b('0x14')]());_0x263760[_0xfe2b('0x21')]('[EXEC]',util['format'](_0xfe2b('0x22'),_0x50ead3['data1'][_0xfe2b('0x14')](),_0x50ead3[_0xfe2b('0x17')]));}}else{_0x263760=require(_0xfe2b('0x20'))(_0x50ead3['data1']['toLowerCase']());_0x263760[_0xfe2b('0x21')](_0xfe2b('0x23'),util['format']('%s\x20account\x20#%s\x20not\x20found',_0x50ead3[_0xfe2b('0x13')]['toLowerCase'](),_0x50ead3['data2']));}}else{}}catch(_0x1c7c5){console[_0xfe2b('0x21')](_0x1c7c5);}}}};
\ No newline at end of file
index be9e21c..398033d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x297f=['format','Caller\x20-\x20%s','moduleCreate','Company','upperFirst','create','forEach','includes','string','picklist','idField','content','toString','variableName','name','Variable','password','concat','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','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','newTab','trigger:browser:url','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','error','outbound','recordingFormat','[OUTBOUND]','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','integrationTab','%s/%s/e','catch','unmanaged','lastevent','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','jsforce','util','ioredis','./util','../../../../config/environment','redis','defaults','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','ticketType','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','lead','WhoId','account','WhatId','Case','contact','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','isNil','validateEmail','execute','then','find','Email','Agent\x20%s\x20found.','resolve','user_id','display_name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','$or','Contact','length','additionalSearchLead','merge','Lead','account_contact_lead','cloneDeep','additionalSearchAccount','Account','additionalSearchContact','first','Name','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>'];(function(_0x40e0ea,_0x49d5cf){var _0x5c32bc=function(_0x535083){while(--_0x535083){_0x40e0ea['push'](_0x40e0ea['shift']());}};_0x5c32bc(++_0x49d5cf);}(_0x297f,0x132));var _0xf297=function(_0x18c512,_0x1e0278){_0x18c512=_0x18c512-0x0;var _0x3dd20e=_0x297f[_0x18c512];return _0x3dd20e;};'use strict';var _=require(_0xf297('0x0'));var rp=require(_0xf297('0x1'));var moment=require(_0xf297('0x2'));var BPromise=require('bluebird');var md5=require('md5');var jsforce=require(_0xf297('0x3'));var util=require(_0xf297('0x4'));var Redis=require(_0xf297('0x5'));var intUtil=require(_0xf297('0x6'));var config=require(_0xf297('0x7'));var logger=require('../../../../config/logger')('salesforce');config[_0xf297('0x8')]=_[_0xf297('0x9')](config[_0xf297('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xf297('0xa'))(new Redis(config['redis']));function emit(_0x342d3e,_0x52763e,_0x3e7f51){io['to'](_0x342d3e)[_0xf297('0xb')](_0x52763e,_0x3e7f51);}function getTicket(_0x4879d0,_0x337533,_0x25e86b,_0xd6de56,_0x459fc5,_0x46f020,_0x592119,_0x5422f4){var _0x2785eb=Object[_0xf297('0xc')]({},{'OwnerId':_0x337533['id'],'Subject':intUtil[_0xf297('0xd')](_0xd6de56[_0xf297('0xe')],_0x459fc5,'\x20'),'Description':intUtil[_0xf297('0xd')](_0xd6de56[_0xf297('0xf')],_0x459fc5,'\x0a')},getCustomFields(_0x46f020,_0x459fc5));if(_0x25e86b){if(_0xd6de56[_0xf297('0x10')]==='Task'){_0x2785eb[_0xf297('0x11')]=moment[_0xf297('0x12')]();_0x2785eb[_0xf297('0x13')]=![];_0x2785eb[_0xf297('0x14')]=![];if(_0x25e86b[_0xf297('0x15')]==='contact'||_0x25e86b[_0xf297('0x15')]===_0xf297('0x16')){_0x2785eb[_0xf297('0x17')]=_0x25e86b['id'];}else if(_0x25e86b['endUserType']===_0xf297('0x18')){_0x2785eb[_0xf297('0x19')]=_0x25e86b['id'];}}else if(_0xd6de56[_0xf297('0x10')]===_0xf297('0x1a')){if(_0x25e86b[_0xf297('0x15')]===_0xf297('0x1b')){_0x2785eb[_0xf297('0x1c')]=_0x25e86b['id'];}else if(_0x25e86b[_0xf297('0x15')]===_0xf297('0x18')){_0x2785eb[_0xf297('0x1d')]=_0x25e86b['id'];}else if(_0x25e86b[_0xf297('0x15')]===_0xf297('0x16')&&_0xd6de56['leadId']){_0x2785eb[_0xd6de56[_0xf297('0x1e')]]=_0x25e86b['id'];}else{logger[_0xf297('0x1f')](_0xf297('0x20'));}}}return _0x592119[_0xf297('0x21')](_0xd6de56['ticketType'])['create'](_0x2785eb);}function getUser(_0x4eb4a4,_0x293d4e,_0x4f1885){if(!_[_0xf297('0x22')](_0x293d4e)&&intUtil[_0xf297('0x23')](_0x293d4e)){var _0x216c86={'Email':_0x293d4e};var _0x211e2d={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4f1885[_0xf297('0x21')]('User')['find'](_0x216c86,_0x211e2d)[_0xf297('0x24')]()[_0xf297('0x25')](function(_0x40657b){if(_0x40657b['length']){var _0x177933=_[_0xf297('0x26')](_0x40657b,function(_0x10604d){return _0x10604d[_0xf297('0x27')]===_0x293d4e;});if(_0x177933){logger[_0xf297('0x1f')](_0xf297('0x28'),_0x293d4e);return BPromise[_0xf297('0x29')]({'id':_0x177933['Id'],'name':_0x177933['Name']});}}else{logger[_0xf297('0x1f')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x293d4e);return _0x4f1885['identity']()[_0xf297('0x25')](function(_0x5e2008){return BPromise[_0xf297('0x29')]({'id':_0x5e2008[_0xf297('0x2a')],'name':_0x5e2008[_0xf297('0x2b')]});});}});}else{logger[_0xf297('0x1f')](_0xf297('0x2c'),_0x293d4e);return _0x4f1885[_0xf297('0x2d')]()[_0xf297('0x25')](function(_0x2032f8){return BPromise[_0xf297('0x29')]({'id':_0x2032f8[_0xf297('0x2a')],'name':_0x2032f8[_0xf297('0x2b')]});});}}function getEndUser(_0x3b7647,_0x582b47,_0x4e55b7,_0x44be91,_0x50e9f6){var _0xfc3679={'$or':{'Phone':_0x44be91}};var _0x5bf2e4={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xf297('0x29')]()[_0xf297('0x25')](function(){logger['info'](_0xf297('0x2e'),_0x44be91,_0x582b47['moduleSearch']);switch(_0x582b47['moduleSearch']){case'contact_lead':var _0xd1b4c1=_['cloneDeep'](_0xfc3679);if(_0x582b47['additionalSearchContact']){var _0x25f135={};_0x25f135[_0x582b47['additionalSearchContact']]=_0x44be91;_['merge'](_0xd1b4c1[_0xf297('0x2f')],_0x25f135);}return _0x50e9f6['sobject'](_0xf297('0x30'))[_0xf297('0x26')](_0xd1b4c1,_0x5bf2e4)[_0xf297('0x24')]()[_0xf297('0x25')](function(_0x28402b){if(_0x28402b&&_0x28402b[_0xf297('0x31')]){return _0x28402b;}else{var _0x1ab9e4=_['cloneDeep'](_0xfc3679);if(_0x582b47[_0xf297('0x32')]){var _0x55b68c={};_0x55b68c[_0x582b47[_0xf297('0x32')]]=_0x44be91;_[_0xf297('0x33')](_0x1ab9e4[_0xf297('0x2f')],_0x55b68c);}return _0x50e9f6['sobject'](_0xf297('0x34'))[_0xf297('0x26')](_0x1ab9e4,_0x5bf2e4);}});case _0xf297('0x35'):var _0x8cc296=_[_0xf297('0x36')](_0xfc3679);if(_0x582b47[_0xf297('0x37')]){var _0x25f135={};_0x25f135[_0x582b47['additionalSearchAccount']]=_0x44be91;_[_0xf297('0x33')](_0x8cc296['$or'],_0x25f135);}return _0x50e9f6[_0xf297('0x21')](_0xf297('0x38'))['find'](_0x8cc296,_0x5bf2e4)['execute']()[_0xf297('0x25')](function(_0x29ec18){if(_0x29ec18&&_0x29ec18[_0xf297('0x31')]){return _0x29ec18;}else{var _0x522beb=_[_0xf297('0x36')](_0xfc3679);if(_0x582b47[_0xf297('0x39')]){var _0x2ba026={};_0x2ba026[_0x582b47[_0xf297('0x39')]]=_0x44be91;_[_0xf297('0x33')](_0x522beb[_0xf297('0x2f')],_0x2ba026);}return _0x50e9f6[_0xf297('0x21')](_0xf297('0x30'))[_0xf297('0x26')](_0x522beb,_0x5bf2e4)[_0xf297('0x25')](function(_0x20ff6a){if(_0x20ff6a&&_0x20ff6a['length']){return _0x20ff6a;}else{var _0x2d41d0=_[_0xf297('0x36')](_0xfc3679);if(_0x582b47[_0xf297('0x32')]){var _0x1a55ae={};_0x1a55ae[_0x582b47[_0xf297('0x32')]]=_0x44be91;_[_0xf297('0x33')](_0x2d41d0[_0xf297('0x2f')],_0x1a55ae);}return _0x50e9f6['sobject'](_0xf297('0x34'))[_0xf297('0x26')](_0x2d41d0,_0x5bf2e4);}});}});case _0xf297('0x1b'):var _0xd1b4c1=_[_0xf297('0x36')](_0xfc3679);if(_0x582b47['additionalSearchContact']){var _0x25f135={};_0x25f135[_0x582b47['additionalSearchContact']]=_0x44be91;_['merge'](_0xd1b4c1[_0xf297('0x2f')],_0x25f135);}return _0x50e9f6[_0xf297('0x21')]('Contact')[_0xf297('0x26')](_0xd1b4c1,_0x5bf2e4)[_0xf297('0x24')]();case _0xf297('0x16'):var _0x2aaca9=_[_0xf297('0x36')](_0xfc3679);if(_0x582b47[_0xf297('0x32')]){var _0x25f135={};_0x25f135[_0x582b47[_0xf297('0x32')]]=_0x44be91;_['merge'](_0x2aaca9[_0xf297('0x2f')],_0x25f135);}return _0x50e9f6['sobject'](_0xf297('0x34'))[_0xf297('0x26')](_0x2aaca9,_0x5bf2e4);case _0xf297('0x18'):var _0x8cc296=_[_0xf297('0x36')](_0xfc3679);if(_0x582b47['additionalSearchAccount']){var _0x25f135={};_0x25f135[_0x582b47[_0xf297('0x37')]]=_0x44be91;_[_0xf297('0x33')](_0x8cc296[_0xf297('0x2f')],_0x25f135);}return _0x50e9f6[_0xf297('0x21')]('Account')[_0xf297('0x26')](_0x8cc296,_0x5bf2e4);default:return null;}})[_0xf297('0x25')](function(_0x38a7df){if(_0x38a7df&&_0x38a7df[_0xf297('0x31')]){var _0x38fcfc=_[_0xf297('0x3a')](_0x38a7df);if(_0x38fcfc){return BPromise['resolve']({'id':_0x38fcfc['Id'],'name':_0x38fcfc[_0xf297('0x3b')],'phone':_0x38fcfc[_0xf297('0x3c')],'endUserType':_0x38fcfc[_0xf297('0x3d')][_0xf297('0x3e')][_0xf297('0x3f')]()});}}})[_0xf297('0x25')](function(_0x47f4df){if(_0x47f4df){logger[_0xf297('0x1f')](_0xf297('0x40'),_0x47f4df[_0xf297('0x15')],_0x44be91);return BPromise[_0xf297('0x29')](_0x47f4df);}else{logger['info'](_0xf297('0x41'),_0x44be91);var _0x2a096c={'Phone':_0x44be91};if(_0x582b47['moduleCreate']){if(_0x582b47['moduleCreate']==='contact'){logger[_0xf297('0x1f')](_0xf297('0x42'),_0x44be91,_0x582b47['moduleCreate']);_0x2a096c[_0xf297('0x43')]=_0x4e55b7!==_0xf297('0x44')?_0x4e55b7:util[_0xf297('0x45')](_0xf297('0x46'),_0x44be91);}else if(_0x582b47[_0xf297('0x47')]===_0xf297('0x16')){logger[_0xf297('0x1f')](_0xf297('0x42'),_0x44be91,_0x582b47[_0xf297('0x47')]);_0x2a096c['LastName']=_0x4e55b7!=='<unknown>'?_0x4e55b7:util[_0xf297('0x45')](_0xf297('0x46'),_0x44be91);_0x2a096c[_0xf297('0x48')]='No\x20Company';}else if(_0x582b47[_0xf297('0x47')]==='account'){logger[_0xf297('0x1f')](_0xf297('0x42'),_0x44be91,_0x582b47[_0xf297('0x47')]);_0x2a096c[_0xf297('0x3b')]=_0x4e55b7!==_0xf297('0x44')?_0x4e55b7:util[_0xf297('0x45')](_0xf297('0x46'),_0x44be91);}else{return null;}}return _0x50e9f6[_0xf297('0x21')](_[_0xf297('0x49')](_0x582b47['moduleCreate']))[_0xf297('0x4a')](_0x2a096c)[_0xf297('0x25')](function(_0x1dd217){return BPromise[_0xf297('0x29')]({'id':_0x1dd217['id'],'endUserType':_0x582b47['moduleCreate']});});}});}function getCustomFields(_0x264372,_0x5b66ad){var _0x36bfbd={};if(_0x264372[_0xf297('0x31')]>0x0){_[_0xf297('0x4b')](_0x264372,function(_0x5baf45){if(_[_0xf297('0x4c')]([_0xf297('0x4d'),_0xf297('0x4e')],_0x5baf45['type'])&&_0x5baf45[_0xf297('0x4f')]){_0x36bfbd[_0x5baf45['idField']]=_0x5baf45[_0xf297('0x50')][_0xf297('0x51')]();}else if(_0x5baf45['type']==='variable'&&_0x5baf45['variableName']&&_0x5baf45['idField']){_0x5b66ad[_0x5baf45[_0xf297('0x52')]]&&(_0x36bfbd[_0x5baf45[_0xf297('0x4f')]]=_0x5b66ad[_0x5baf45[_0xf297('0x52')]][_0xf297('0x51')]());}else if(_0x5baf45[_0xf297('0x3e')]==='customVariable'&&_0x5baf45['Variable']&&_0x5baf45['Variable'][_0xf297('0x53')]&&_0x5baf45[_0xf297('0x4f')]){_0x5b66ad[_0x5baf45['Variable']['name'][_0xf297('0x3f')]()]&&(_0x36bfbd[_0x5baf45['idField']]=_0x5b66ad[_0x5baf45[_0xf297('0x54')][_0xf297('0x53')][_0xf297('0x3f')]()][_0xf297('0x51')]());}});}return _0x36bfbd;}function getConnection(_0x38f5b7){var _0x509e8c=_0x38f5b7[_0xf297('0x55')][_0xf297('0x56')](_0x38f5b7['securityToken']);var _0x27aeb3=new jsforce[(_0xf297('0x57'))]({'oauth2':{'loginUrl':_0x38f5b7[_0xf297('0x58')]||_0xf297('0x59'),'clientId':_0x38f5b7[_0xf297('0x5a')],'clientSecret':_0x38f5b7[_0xf297('0x5b')]}});return _0x27aeb3[_0xf297('0x5c')](_0x38f5b7[_0xf297('0x5d')],_0x509e8c)[_0xf297('0x25')](function(){logger['info'](_0xf297('0x5e'));return _0x27aeb3;});}exports[_0xf297('0x5f')]=function(_0x1b99c5,_0x52101d,_0x26a836,_0x44cfcc,_0x21bd49,_0x2cc216){var _0x391350,_0x74b8e7,_0xbcc0b4,_0x58353e;_0x2cc216[_0xf297('0x60')]=intUtil[_0xf297('0x61')](_0x2cc216[_0xf297('0x60')]);_0x2cc216[_0xf297('0x58')]=intUtil[_0xf297('0x61')](_0x2cc216[_0xf297('0x58')]);if(_0x21bd49&&_0x21bd49[_0xf297('0x62')]){logger[_0xf297('0x1f')]('[QUEUE]',_0xf297('0x63'));_0x52101d[_0xf297('0x64')]=util[_0xf297('0x45')](_0xf297('0x65'),_0x2cc216[_0xf297('0x60')],_0x52101d[_0xf297('0x66')],md5(_0x52101d[_0xf297('0x66')]));}else{_0x52101d[_0xf297('0x64')]='';}return getConnection(_0x2cc216)[_0xf297('0x25')](function(_0x551384){_0x58353e=_0x551384;return getUser(_0x2cc216,_0x44cfcc[_0xf297('0x67')],_0x58353e);})['then'](function(_0x313206){_0x391350=_0x313206;return getEndUser(_0x2cc216,_0x26a836,_0x52101d['calleridname'],_0x52101d[_0xf297('0x68')],_0x58353e);})[_0xf297('0x25')](function(_0x42b339){_0x74b8e7=_0x42b339;return getTicket(_0x2cc216,_0x391350,_0x74b8e7,_0x26a836,_0x52101d,_0x26a836['Fields'],_0x58353e,_0xf297('0x5f'));})['then'](function(_0x26b1f1){_0xbcc0b4=_0x26b1f1;logger[_0xf297('0x1f')](_0xf297('0x69'),_0xbcc0b4['id']);logger[_0xf297('0x1f')](_0xf297('0x6a'),_0xbcc0b4['id'],_0x44cfcc[_0xf297('0x53')],_0x2cc216['type']);switch(_0x2cc216[_0xf297('0x3e')]){case'integrationTab':emit(util[_0xf297('0x45')](_0xf297('0x6b'),_0x44cfcc[_0xf297('0x53')]),_0xf297('0x6c'),{'recordId':_0xbcc0b4['id']});break;case _0xf297('0x6d'):emit(util[_0xf297('0x45')](_0xf297('0x6b'),_0x44cfcc['name']),_0xf297('0x6e'),{'uri':util[_0xf297('0x45')]('%s/%s/e',_0x58353e['instanceUrl'],_0xbcc0b4['id'])});break;default:logger['error'](_0xf297('0x6f'));}})['catch'](function(_0x5f8931){logger[_0xf297('0x70')]('[QUEUE]',_0x5f8931);});};exports[_0xf297('0x71')]=function(_0x29156f,_0x24ae7b,_0x161486,_0x392d3b,_0x299a6b,_0x4b3608,_0x175642){var _0x5beab2,_0x5e76a0,_0x19aa77,_0x19725d;_0x4b3608['serverUrl']=intUtil[_0xf297('0x61')](_0x4b3608[_0xf297('0x60')]);_0x4b3608[_0xf297('0x58')]=intUtil['stripTrailingSlash'](_0x4b3608[_0xf297('0x58')]);if(_0x175642&&_0x175642[_0xf297('0x72')]&&_0x175642[_0xf297('0x72')]!=='none'){logger['info'](_0xf297('0x73'),_0xf297('0x63'));_0x24ae7b[_0xf297('0x64')]=util[_0xf297('0x45')](_0xf297('0x65'),_0x4b3608[_0xf297('0x60')],_0x24ae7b['uniqueid'],md5(_0x24ae7b['uniqueid']));}return getConnection(_0x4b3608)['then'](function(_0x4e3b89){_0x19725d=_0x4e3b89;return getUser(_0x4b3608,_0x392d3b['email'],_0x19725d);})[_0xf297('0x25')](function(_0x18469a){_0x5beab2=_0x18469a;return getEndUser(_0x4b3608,_0x161486,_0x24ae7b['destcalleridname'],_0x24ae7b['destcalleridnum'],_0x19725d);})[_0xf297('0x25')](function(_0x38e5f3){_0x5e76a0=_0x38e5f3;return getTicket(_0x4b3608,_0x5beab2,_0x5e76a0,_0x161486,_0x24ae7b,_0x161486[_0xf297('0x74')],_0x19725d,_0xf297('0x71'));})[_0xf297('0x25')](function(_0x345720){_0x19aa77=_0x345720;logger[_0xf297('0x1f')](_0xf297('0x75'),_0x19aa77['id']);logger[_0xf297('0x1f')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x19aa77['id'],_0x392d3b[_0xf297('0x53')],_0x4b3608[_0xf297('0x3e')]);switch(_0x4b3608[_0xf297('0x3e')]){case _0xf297('0x76'):emit(util[_0xf297('0x45')](_0xf297('0x6b'),_0x392d3b[_0xf297('0x53')]),_0xf297('0x6c'),{'recordId':_0x19aa77['id']});break;case _0xf297('0x6d'):emit(util[_0xf297('0x45')](_0xf297('0x6b'),_0x392d3b['name']),_0xf297('0x6e'),{'uri':util[_0xf297('0x45')](_0xf297('0x77'),_0x19725d['instanceUrl'],_0x19aa77['id'])});break;default:logger['error'](_0xf297('0x73'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0xf297('0x78')](function(_0x54d697){logger['error'](_0xf297('0x73'),_0x54d697);});};exports[_0xf297('0x79')]=function(_0x4028c9,_0x8b4ee4,_0xe05efd,_0x3712eb,_0x1f8ac2,_0x1f16f4){var _0x30ea87,_0xe16aa7,_0x42311f,_0x273251;_0x1f16f4[_0xf297('0x60')]=intUtil[_0xf297('0x61')](_0x1f16f4[_0xf297('0x60')]);_0x1f16f4[_0xf297('0x58')]=intUtil[_0xf297('0x61')](_0x1f16f4['remoteUri']);if(_0x1f8ac2&&_0x1f8ac2[_0xf297('0x62')]){logger[_0xf297('0x1f')]('['+_0x8b4ee4[_0xf297('0x7a')][_0xf297('0x7b')]()+']',_0xf297('0x63'));_0x8b4ee4[_0xf297('0x64')]=util[_0xf297('0x45')](_0xf297('0x65'),_0x1f16f4[_0xf297('0x60')],_0x8b4ee4[_0xf297('0x66')],md5(_0x8b4ee4[_0xf297('0x66')]));}else{_0x8b4ee4['recordingURL']='';}return getConnection(_0x1f16f4)[_0xf297('0x25')](function(_0x442d87){_0x273251=_0x442d87;if(!_[_0xf297('0x22')](_0x3712eb)){return getUser(_0x1f16f4,_0x3712eb[_0xf297('0x53')],_0x273251);}else{return getUser(_0x1f16f4,null,_0x273251);}})['then'](function(_0x2ea407){_0x30ea87=_0x2ea407;return getEndUser(_0x1f16f4,_0xe05efd,_0x8b4ee4['calleridname'],_0x8b4ee4[_0xf297('0x68')],_0x273251);})[_0xf297('0x25')](function(_0x1f1242){_0xe16aa7=_0x1f1242;return getTicket(_0x1f16f4,_0x30ea87,_0xe16aa7,_0xe05efd,_0x8b4ee4,_0xe05efd[_0xf297('0x74')],_0x273251);})[_0xf297('0x25')](function(_0x53c894){_0x42311f=_0x53c894;logger[_0xf297('0x1f')]('['+_0x8b4ee4['lastevent'][_0xf297('0x7b')]()+']\x20Ticket\x20%s\x20created.',_0x42311f['id']);logger[_0xf297('0x1f')]('['+_0x8b4ee4[_0xf297('0x7a')][_0xf297('0x7b')]()+_0xf297('0x7c'),_0x1f16f4['type']);})[_0xf297('0x78')](function(_0x4aa042){logger[_0xf297('0x70')]('['+_0x8b4ee4[_0xf297('0x7a')]['toUpperCase']()+']',_0x4aa042);});};
\ No newline at end of file
+var _0x9c06=['upperFirst','forEach','includes','idField','content','toString','variable','variableName','customVariable','Variable','name','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','username','Connection\x20established.','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','queue','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','[QUEUE]','outbound','recordingFormat','none','destcalleridname','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','Salesforce\x20account\x20type\x20not\x20recognized','[OUTBOUND]','unmanaged','lastevent','calleridname','calleridnum','Fields','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','emit','assign','Subjects','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsRecurrence','endUserType','contact','lead','WhoId','Case','ContactId','account','leadId','info','sobject','create','isNil','validateEmail','User','find','execute','then','length','Email','identity','resolve','user_id','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Contact','Account','first','Name','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x9c06,0x136));var _0x69c0=function(_0x26f107,_0xc0cb96){_0x26f107=_0x26f107-0x0;var _0x4f6db0=_0x9c06[_0x26f107];return _0x4f6db0;};'use strict';var _=require(_0x69c0('0x0'));var rp=require(_0x69c0('0x1'));var moment=require(_0x69c0('0x2'));var BPromise=require('bluebird');var md5=require('md5');var jsforce=require('jsforce');var util=require(_0x69c0('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x69c0('0x4'));var logger=require(_0x69c0('0x5'))(_0x69c0('0x6'));config[_0x69c0('0x7')]=_[_0x69c0('0x8')](config['redis'],{'host':_0x69c0('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x69c0('0x7')]));function emit(_0x190bf9,_0x150182,_0x290e14){io['to'](_0x190bf9)[_0x69c0('0xa')](_0x150182,_0x290e14);}function getTicket(_0x1291c2,_0x26fc71,_0x1b5719,_0x4e2183,_0x1c2bb9,_0x441b2e,_0x16bcb8,_0x4c8a59){var _0x1d6360=Object[_0x69c0('0xb')]({},{'OwnerId':_0x26fc71['id'],'Subject':intUtil['getString'](_0x4e2183[_0x69c0('0xc')],_0x1c2bb9,'\x20'),'Description':intUtil[_0x69c0('0xd')](_0x4e2183[_0x69c0('0xe')],_0x1c2bb9,'\x0a')},getCustomFields(_0x441b2e,_0x1c2bb9));if(_0x1b5719){if(_0x4e2183[_0x69c0('0xf')]===_0x69c0('0x10')){_0x1d6360[_0x69c0('0x11')]=moment[_0x69c0('0x12')]();_0x1d6360['IsReminderSet']=![];_0x1d6360[_0x69c0('0x13')]=![];if(_0x1b5719[_0x69c0('0x14')]===_0x69c0('0x15')||_0x1b5719['endUserType']===_0x69c0('0x16')){_0x1d6360[_0x69c0('0x17')]=_0x1b5719['id'];}else if(_0x1b5719['endUserType']==='account'){_0x1d6360['WhatId']=_0x1b5719['id'];}}else if(_0x4e2183[_0x69c0('0xf')]===_0x69c0('0x18')){if(_0x1b5719[_0x69c0('0x14')]==='contact'){_0x1d6360[_0x69c0('0x19')]=_0x1b5719['id'];}else if(_0x1b5719[_0x69c0('0x14')]===_0x69c0('0x1a')){_0x1d6360['AccountId']=_0x1b5719['id'];}else if(_0x1b5719[_0x69c0('0x14')]===_0x69c0('0x16')&&_0x4e2183['leadId']){_0x1d6360[_0x4e2183[_0x69c0('0x1b')]]=_0x1b5719['id'];}else{logger[_0x69c0('0x1c')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x16bcb8[_0x69c0('0x1d')](_0x4e2183[_0x69c0('0xf')])[_0x69c0('0x1e')](_0x1d6360);}function getUser(_0xe249d1,_0x36a746,_0x91122f){if(!_[_0x69c0('0x1f')](_0x36a746)&&intUtil[_0x69c0('0x20')](_0x36a746)){var _0x5c2c78={'Email':_0x36a746};var _0x144e97={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x91122f[_0x69c0('0x1d')](_0x69c0('0x21'))[_0x69c0('0x22')](_0x5c2c78,_0x144e97)[_0x69c0('0x23')]()[_0x69c0('0x24')](function(_0x354e94){if(_0x354e94[_0x69c0('0x25')]){var _0xd726c0=_[_0x69c0('0x22')](_0x354e94,function(_0x2a8d92){return _0x2a8d92[_0x69c0('0x26')]===_0x36a746;});if(_0xd726c0){logger[_0x69c0('0x1c')]('Agent\x20%s\x20found.',_0x36a746);return BPromise['resolve']({'id':_0xd726c0['Id'],'name':_0xd726c0['Name']});}}else{logger[_0x69c0('0x1c')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x36a746);return _0x91122f[_0x69c0('0x27')]()[_0x69c0('0x24')](function(_0x50bd8a){return BPromise[_0x69c0('0x28')]({'id':_0x50bd8a[_0x69c0('0x29')],'name':_0x50bd8a['display_name']});});}});}else{logger['info']('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x36a746);return _0x91122f['identity']()[_0x69c0('0x24')](function(_0x4a78ea){return BPromise[_0x69c0('0x28')]({'id':_0x4a78ea[_0x69c0('0x29')],'name':_0x4a78ea['display_name']});});}}function getEndUser(_0x389566,_0xe6c2ac,_0x317290,_0x4e741e,_0x24ed15){var _0x7d06d8={'$or':{'Phone':_0x4e741e}};var _0x242fb3={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x69c0('0x28')]()[_0x69c0('0x24')](function(){logger[_0x69c0('0x1c')](_0x69c0('0x2a'),_0x4e741e,_0xe6c2ac[_0x69c0('0x2b')]);switch(_0xe6c2ac['moduleSearch']){case _0x69c0('0x2c'):var _0x4dd100=_[_0x69c0('0x2d')](_0x7d06d8);if(_0xe6c2ac['additionalSearchContact']){var _0x1c1029={};_0x1c1029[_0xe6c2ac[_0x69c0('0x2e')]]=_0x4e741e;_[_0x69c0('0x2f')](_0x4dd100[_0x69c0('0x30')],_0x1c1029);}return _0x24ed15['sobject']('Contact')[_0x69c0('0x22')](_0x4dd100,_0x242fb3)['execute']()[_0x69c0('0x24')](function(_0x5d2583){if(_0x5d2583&&_0x5d2583[_0x69c0('0x25')]){return _0x5d2583;}else{var _0x5c3f0e=_[_0x69c0('0x2d')](_0x7d06d8);if(_0xe6c2ac['additionalSearchLead']){var _0x1688cf={};_0x1688cf[_0xe6c2ac[_0x69c0('0x31')]]=_0x4e741e;_[_0x69c0('0x2f')](_0x5c3f0e[_0x69c0('0x30')],_0x1688cf);}return _0x24ed15[_0x69c0('0x1d')](_0x69c0('0x32'))[_0x69c0('0x22')](_0x5c3f0e,_0x242fb3);}});case _0x69c0('0x33'):var _0x362496=_[_0x69c0('0x2d')](_0x7d06d8);if(_0xe6c2ac[_0x69c0('0x34')]){var _0x1c1029={};_0x1c1029[_0xe6c2ac['additionalSearchAccount']]=_0x4e741e;_[_0x69c0('0x2f')](_0x362496[_0x69c0('0x30')],_0x1c1029);}return _0x24ed15[_0x69c0('0x1d')]('Account')['find'](_0x362496,_0x242fb3)[_0x69c0('0x23')]()[_0x69c0('0x24')](function(_0x210017){if(_0x210017&&_0x210017[_0x69c0('0x25')]){return _0x210017;}else{var _0x5bd671=_[_0x69c0('0x2d')](_0x7d06d8);if(_0xe6c2ac['additionalSearchContact']){var _0x5b0fbe={};_0x5b0fbe[_0xe6c2ac['additionalSearchContact']]=_0x4e741e;_[_0x69c0('0x2f')](_0x5bd671[_0x69c0('0x30')],_0x5b0fbe);}return _0x24ed15[_0x69c0('0x1d')](_0x69c0('0x35'))['find'](_0x5bd671,_0x242fb3)[_0x69c0('0x24')](function(_0x1c5ba4){if(_0x1c5ba4&&_0x1c5ba4[_0x69c0('0x25')]){return _0x1c5ba4;}else{var _0x1bb61d=_[_0x69c0('0x2d')](_0x7d06d8);if(_0xe6c2ac[_0x69c0('0x31')]){var _0x2b90a9={};_0x2b90a9[_0xe6c2ac[_0x69c0('0x31')]]=_0x4e741e;_[_0x69c0('0x2f')](_0x1bb61d[_0x69c0('0x30')],_0x2b90a9);}return _0x24ed15[_0x69c0('0x1d')](_0x69c0('0x32'))['find'](_0x1bb61d,_0x242fb3);}});}});case _0x69c0('0x15'):var _0x4dd100=_['cloneDeep'](_0x7d06d8);if(_0xe6c2ac[_0x69c0('0x2e')]){var _0x1c1029={};_0x1c1029[_0xe6c2ac[_0x69c0('0x2e')]]=_0x4e741e;_[_0x69c0('0x2f')](_0x4dd100['$or'],_0x1c1029);}return _0x24ed15[_0x69c0('0x1d')](_0x69c0('0x35'))[_0x69c0('0x22')](_0x4dd100,_0x242fb3)['execute']();case _0x69c0('0x16'):var _0x3b641d=_[_0x69c0('0x2d')](_0x7d06d8);if(_0xe6c2ac[_0x69c0('0x31')]){var _0x1c1029={};_0x1c1029[_0xe6c2ac[_0x69c0('0x31')]]=_0x4e741e;_[_0x69c0('0x2f')](_0x3b641d[_0x69c0('0x30')],_0x1c1029);}return _0x24ed15[_0x69c0('0x1d')](_0x69c0('0x32'))['find'](_0x3b641d,_0x242fb3);case _0x69c0('0x1a'):var _0x362496=_[_0x69c0('0x2d')](_0x7d06d8);if(_0xe6c2ac[_0x69c0('0x34')]){var _0x1c1029={};_0x1c1029[_0xe6c2ac[_0x69c0('0x34')]]=_0x4e741e;_['merge'](_0x362496[_0x69c0('0x30')],_0x1c1029);}return _0x24ed15[_0x69c0('0x1d')](_0x69c0('0x36'))[_0x69c0('0x22')](_0x362496,_0x242fb3);default:return null;}})['then'](function(_0xbbe9e2){if(_0xbbe9e2&&_0xbbe9e2[_0x69c0('0x25')]){var _0x5a51a3=_[_0x69c0('0x37')](_0xbbe9e2);if(_0x5a51a3){return BPromise[_0x69c0('0x28')]({'id':_0x5a51a3['Id'],'name':_0x5a51a3[_0x69c0('0x38')],'phone':_0x5a51a3['Phone'],'endUserType':_0x5a51a3[_0x69c0('0x39')][_0x69c0('0x3a')][_0x69c0('0x3b')]()});}}})[_0x69c0('0x24')](function(_0x2adf25){if(_0x2adf25){logger[_0x69c0('0x1c')](_0x69c0('0x3c'),_0x2adf25['endUserType'],_0x4e741e);return BPromise[_0x69c0('0x28')](_0x2adf25);}else{logger['info']('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x4e741e);var _0xf22e34={'Phone':_0x4e741e};if(_0xe6c2ac['moduleCreate']){if(_0xe6c2ac['moduleCreate']===_0x69c0('0x15')){logger[_0x69c0('0x1c')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4e741e,_0xe6c2ac[_0x69c0('0x3d')]);_0xf22e34[_0x69c0('0x3e')]=_0x317290!==_0x69c0('0x3f')?_0x317290:util[_0x69c0('0x40')]('Caller\x20-\x20%s',_0x4e741e);}else if(_0xe6c2ac[_0x69c0('0x3d')]===_0x69c0('0x16')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4e741e,_0xe6c2ac[_0x69c0('0x3d')]);_0xf22e34['LastName']=_0x317290!=='<unknown>'?_0x317290:util['format'](_0x69c0('0x41'),_0x4e741e);_0xf22e34[_0x69c0('0x42')]=_0x69c0('0x43');}else if(_0xe6c2ac['moduleCreate']==='account'){logger[_0x69c0('0x1c')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4e741e,_0xe6c2ac[_0x69c0('0x3d')]);_0xf22e34[_0x69c0('0x38')]=_0x317290!==_0x69c0('0x3f')?_0x317290:util[_0x69c0('0x40')](_0x69c0('0x41'),_0x4e741e);}else{return null;}}return _0x24ed15[_0x69c0('0x1d')](_[_0x69c0('0x44')](_0xe6c2ac[_0x69c0('0x3d')]))[_0x69c0('0x1e')](_0xf22e34)['then'](function(_0x5545ed){return BPromise[_0x69c0('0x28')]({'id':_0x5545ed['id'],'endUserType':_0xe6c2ac['moduleCreate']});});}});}function getCustomFields(_0x33a54f,_0x3c4ac4){var _0x2d158d={};if(_0x33a54f[_0x69c0('0x25')]>0x0){_[_0x69c0('0x45')](_0x33a54f,function(_0x27791b){if(_[_0x69c0('0x46')](['string','picklist'],_0x27791b[_0x69c0('0x3a')])&&_0x27791b[_0x69c0('0x47')]){_0x2d158d[_0x27791b[_0x69c0('0x47')]]=_0x27791b[_0x69c0('0x48')][_0x69c0('0x49')]();}else if(_0x27791b['type']===_0x69c0('0x4a')&&_0x27791b['variableName']&&_0x27791b[_0x69c0('0x47')]){_0x3c4ac4[_0x27791b['variableName']]&&(_0x2d158d[_0x27791b[_0x69c0('0x47')]]=_0x3c4ac4[_0x27791b[_0x69c0('0x4b')]][_0x69c0('0x49')]());}else if(_0x27791b[_0x69c0('0x3a')]===_0x69c0('0x4c')&&_0x27791b[_0x69c0('0x4d')]&&_0x27791b['Variable']['name']&&_0x27791b[_0x69c0('0x47')]){_0x3c4ac4[_0x27791b['Variable'][_0x69c0('0x4e')][_0x69c0('0x3b')]()]&&(_0x2d158d[_0x27791b[_0x69c0('0x47')]]=_0x3c4ac4[_0x27791b[_0x69c0('0x4d')]['name'][_0x69c0('0x3b')]()][_0x69c0('0x49')]());}});}return _0x2d158d;}function getConnection(_0x2bbccf){var _0x365754=_0x2bbccf['password'][_0x69c0('0x4f')](_0x2bbccf[_0x69c0('0x50')]);var _0x5d26dc=new jsforce[(_0x69c0('0x51'))]({'oauth2':{'loginUrl':_0x2bbccf[_0x69c0('0x52')]||_0x69c0('0x53'),'clientId':_0x2bbccf[_0x69c0('0x54')],'clientSecret':_0x2bbccf[_0x69c0('0x55')]}});return _0x5d26dc['login'](_0x2bbccf[_0x69c0('0x56')],_0x365754)[_0x69c0('0x24')](function(){logger[_0x69c0('0x1c')](_0x69c0('0x57'));return _0x5d26dc;});}exports['queue']=function(_0x405ce7,_0x3021d4,_0x2914d8,_0x1b4476,_0x1f7f33,_0x1a730a){var _0xf41266,_0x187b75,_0x5a9c67,_0x26ab7b;_0x1a730a[_0x69c0('0x58')]=intUtil[_0x69c0('0x59')](_0x1a730a['serverUrl']);_0x1a730a[_0x69c0('0x52')]=intUtil['stripTrailingSlash'](_0x1a730a[_0x69c0('0x52')]);if(_0x1f7f33&&_0x1f7f33[_0x69c0('0x5a')]){logger['info']('[QUEUE]',_0x69c0('0x5b'));_0x3021d4[_0x69c0('0x5c')]=util['format'](_0x69c0('0x5d'),_0x1a730a['serverUrl'],_0x3021d4[_0x69c0('0x5e')],md5(_0x3021d4['uniqueid']));}else{_0x3021d4[_0x69c0('0x5c')]='';}return getConnection(_0x1a730a)['then'](function(_0xd784f){_0x26ab7b=_0xd784f;return getUser(_0x1a730a,_0x1b4476[_0x69c0('0x5f')],_0x26ab7b);})[_0x69c0('0x24')](function(_0x5b04f6){_0xf41266=_0x5b04f6;return getEndUser(_0x1a730a,_0x2914d8,_0x3021d4['calleridname'],_0x3021d4['calleridnum'],_0x26ab7b);})['then'](function(_0x3345e2){_0x187b75=_0x3345e2;return getTicket(_0x1a730a,_0xf41266,_0x187b75,_0x2914d8,_0x3021d4,_0x2914d8['Fields'],_0x26ab7b,_0x69c0('0x60'));})['then'](function(_0x19ccb3){_0x5a9c67=_0x19ccb3;logger[_0x69c0('0x1c')](_0x69c0('0x61'),_0x5a9c67['id']);logger[_0x69c0('0x1c')](_0x69c0('0x62'),_0x5a9c67['id'],_0x1b4476[_0x69c0('0x4e')],_0x1a730a[_0x69c0('0x3a')]);switch(_0x1a730a['type']){case _0x69c0('0x63'):emit(util[_0x69c0('0x40')](_0x69c0('0x64'),_0x1b4476[_0x69c0('0x4e')]),_0x69c0('0x65'),{'recordId':_0x5a9c67['id']});break;case _0x69c0('0x66'):emit(util['format'](_0x69c0('0x64'),_0x1b4476['name']),_0x69c0('0x67'),{'uri':util[_0x69c0('0x40')](_0x69c0('0x68'),_0x26ab7b[_0x69c0('0x69')],_0x5a9c67['id'])});break;default:logger[_0x69c0('0x6a')](_0x69c0('0x6b'));}})[_0x69c0('0x6c')](function(_0xd6b932){logger[_0x69c0('0x6a')](_0x69c0('0x6d'),_0xd6b932);});};exports[_0x69c0('0x6e')]=function(_0x11e697,_0xa4df9,_0x45c8d3,_0x5b2679,_0x32f0c0,_0x2a390c,_0xac9f2e){var _0x36b77d,_0x3334a1,_0x407ab7,_0x1a2f85;_0x2a390c['serverUrl']=intUtil[_0x69c0('0x59')](_0x2a390c['serverUrl']);_0x2a390c[_0x69c0('0x52')]=intUtil[_0x69c0('0x59')](_0x2a390c[_0x69c0('0x52')]);if(_0xac9f2e&&_0xac9f2e[_0x69c0('0x6f')]&&_0xac9f2e[_0x69c0('0x6f')]!==_0x69c0('0x70')){logger[_0x69c0('0x1c')]('[OUTBOUND]',_0x69c0('0x5b'));_0xa4df9[_0x69c0('0x5c')]=util[_0x69c0('0x40')](_0x69c0('0x5d'),_0x2a390c[_0x69c0('0x58')],_0xa4df9['uniqueid'],md5(_0xa4df9[_0x69c0('0x5e')]));}return getConnection(_0x2a390c)[_0x69c0('0x24')](function(_0x4839bd){_0x1a2f85=_0x4839bd;return getUser(_0x2a390c,_0x5b2679[_0x69c0('0x5f')],_0x1a2f85);})[_0x69c0('0x24')](function(_0x3ca5f9){_0x36b77d=_0x3ca5f9;return getEndUser(_0x2a390c,_0x45c8d3,_0xa4df9[_0x69c0('0x71')],_0xa4df9['destcalleridnum'],_0x1a2f85);})[_0x69c0('0x24')](function(_0x1981f4){_0x3334a1=_0x1981f4;return getTicket(_0x2a390c,_0x36b77d,_0x3334a1,_0x45c8d3,_0xa4df9,_0x45c8d3['Fields'],_0x1a2f85,_0x69c0('0x6e'));})[_0x69c0('0x24')](function(_0x3424da){_0x407ab7=_0x3424da;logger[_0x69c0('0x1c')](_0x69c0('0x72'),_0x407ab7['id']);logger['info'](_0x69c0('0x73'),_0x407ab7['id'],_0x5b2679['name'],_0x2a390c[_0x69c0('0x3a')]);switch(_0x2a390c[_0x69c0('0x3a')]){case'integrationTab':emit(util['format'](_0x69c0('0x64'),_0x5b2679[_0x69c0('0x4e')]),_0x69c0('0x65'),{'recordId':_0x407ab7['id']});break;case _0x69c0('0x66'):emit(util[_0x69c0('0x40')](_0x69c0('0x64'),_0x5b2679[_0x69c0('0x4e')]),_0x69c0('0x67'),{'uri':util[_0x69c0('0x40')](_0x69c0('0x68'),_0x1a2f85[_0x69c0('0x69')],_0x407ab7['id'])});break;default:logger[_0x69c0('0x6a')]('[OUTBOUND]',_0x69c0('0x74'));}})['catch'](function(_0x231f34){logger['error'](_0x69c0('0x75'),_0x231f34);});};exports[_0x69c0('0x76')]=function(_0x151057,_0x2601c9,_0xcb5484,_0x332c61,_0x243f79,_0x3b305d){var _0x524921,_0x33e4c9,_0x10ac69,_0x10ef2d;_0x3b305d['serverUrl']=intUtil[_0x69c0('0x59')](_0x3b305d[_0x69c0('0x58')]);_0x3b305d[_0x69c0('0x52')]=intUtil[_0x69c0('0x59')](_0x3b305d[_0x69c0('0x52')]);if(_0x243f79&&_0x243f79[_0x69c0('0x5a')]){logger['info']('['+_0x2601c9[_0x69c0('0x77')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x2601c9[_0x69c0('0x5c')]=util[_0x69c0('0x40')](_0x69c0('0x5d'),_0x3b305d['serverUrl'],_0x2601c9['uniqueid'],md5(_0x2601c9[_0x69c0('0x5e')]));}else{_0x2601c9[_0x69c0('0x5c')]='';}return getConnection(_0x3b305d)[_0x69c0('0x24')](function(_0x230b88){_0x10ef2d=_0x230b88;if(!_['isNil'](_0x332c61)){return getUser(_0x3b305d,_0x332c61[_0x69c0('0x4e')],_0x10ef2d);}else{return getUser(_0x3b305d,null,_0x10ef2d);}})[_0x69c0('0x24')](function(_0x3dbc55){_0x524921=_0x3dbc55;return getEndUser(_0x3b305d,_0xcb5484,_0x2601c9[_0x69c0('0x78')],_0x2601c9[_0x69c0('0x79')],_0x10ef2d);})[_0x69c0('0x24')](function(_0x1aa056){_0x33e4c9=_0x1aa056;return getTicket(_0x3b305d,_0x524921,_0x33e4c9,_0xcb5484,_0x2601c9,_0xcb5484[_0x69c0('0x7a')],_0x10ef2d);})[_0x69c0('0x24')](function(_0x4236db){_0x10ac69=_0x4236db;logger['info']('['+_0x2601c9[_0x69c0('0x77')][_0x69c0('0x7b')]()+_0x69c0('0x7c'),_0x10ac69['id']);logger[_0x69c0('0x1c')]('['+_0x2601c9[_0x69c0('0x77')]['toUpperCase']()+_0x69c0('0x7d'),_0x3b305d['type']);})['catch'](function(_0x49b3bf){logger[_0x69c0('0x6a')]('['+_0x2601c9[_0x69c0('0x77')][_0x69c0('0x7b')]()+']',_0x49b3bf);});};
\ No newline at end of file
index c0c5aff..4314717 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd05=['unmanaged','format','serverUrl','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','util','md5','./util','../../../../config/logger','defaults','redis','localhost','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','message','],\x20getUser\x20input\x20crm','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','length','active','userId','adminEmail','],\x20getUser\x20crm','error','adminId','POST','endUserNumber','user','true','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20getEndUser\x20crm','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','toString','type','idField','variable','variableName','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','ticketId','Incident\x20-\x20','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','Tags','map','%26sysparm_record_target%3Dincident','user:%s','emit','trigger:browser:url','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','isNil','email','destcalleridnum','calleridnum','callDirection','queue'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcd05,0x1aa));var _0x5cd0=function(_0x50cfc3,_0x526cc6){_0x50cfc3=_0x50cfc3-0x0;var _0x5c11ef=_0xcd05[_0x50cfc3];return _0x5c11ef;};'use strict';var _=require(_0x5cd0('0x0'));var Promise=require('bluebird');var rp=require('request-promise');var util=require(_0x5cd0('0x1'));var md5=require(_0x5cd0('0x2'));var Redis=require('ioredis');var intUtil=require(_0x5cd0('0x3'));var config=require('../../../../config/environment');var logger=require(_0x5cd0('0x4'))('servicenow');config['redis']=_[_0x5cd0('0x5')](config[_0x5cd0('0x6')],{'host':_0x5cd0('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5cd0('0x6')]));function getAdminUser(_0x31a950,_0x491fa2,_0x5ec2ff,_0x518b9c,_0x456f1b,_0x36843f){return new Promise(function(_0x20a944,_0x261aa8){var _0x126af8={'method':_0x5cd0('0x8'),'uri':_0x518b9c+_0x5cd0('0x9')+'&'+_0x456f1b+'&'+_0x36843f,'auth':_0x491fa2,'json':!![]};return rp(_0x126af8)[_0x5cd0('0xa')](function(_0x339bb6){if(_0x339bb6[_0x5cd0('0xb')]['length']>0x0){_0x5ec2ff['adminId']=_0x339bb6[_0x5cd0('0xb')][0x0][_0x5cd0('0xc')];}logger[_0x5cd0('0xd')]('['+[_0x31a950[_0x5cd0('0xe')]()]+_0x5cd0('0xf'),_0x5ec2ff);_0x20a944(_0x5ec2ff);})[_0x5cd0('0x10')](function(_0x28b67a){logger['error']('['+[_0x31a950[_0x5cd0('0xe')]()]+']',_0x28b67a['message']);_0x261aa8(_0x28b67a[_0x5cd0('0x11')]);});});}function getUser(_0x265ca2,_0xd314d5,_0x3de865,_0x299583,_0x3736f0){return function(_0x4594cd){logger[_0x5cd0('0xd')]('['+[_0x265ca2['toUpperCase']()]+_0x5cd0('0x12'),_0x4594cd);return new Promise(function(_0x2ffd7c,_0x2466b1){if(intUtil['validateEmail'](_0x4594cd[_0x5cd0('0x13')])){var _0x1b5e0e={'method':'GET','uri':_0x3de865+_0x5cd0('0x14')+_0x4594cd[_0x5cd0('0x13')]+'&'+_0x299583+'&'+_0x3736f0,'auth':_0xd314d5,'json':!![]};logger[_0x5cd0('0xd')]('['+[_0x265ca2[_0x5cd0('0xe')]()]+'],\x20getUser\x20rp\x20obj',_0x1b5e0e);return rp(_0x1b5e0e)[_0x5cd0('0xa')](function(_0x27d75b){logger[_0x5cd0('0xd')]('['+[_0x265ca2[_0x5cd0('0xe')]()]+_0x5cd0('0x15'),_0x27d75b);if(_0x27d75b[_0x5cd0('0xb')][_0x5cd0('0x16')]>0x0&&String(_0x27d75b['result'][0x0][_0x5cd0('0x17')])==='true'){_0x4594cd[_0x5cd0('0x18')]=_0x27d75b['result'][0x0][_0x5cd0('0xc')];}else{_0x4594cd[_0x5cd0('0x18')]=_0x4594cd['adminId'];_0x4594cd[_0x5cd0('0x13')]=_0x4594cd[_0x5cd0('0x19')];}logger[_0x5cd0('0xd')]('['+[_0x265ca2[_0x5cd0('0xe')]()]+_0x5cd0('0x1a'),_0x4594cd);_0x2ffd7c(_0x4594cd);})[_0x5cd0('0x10')](function(_0x3e94f3){logger[_0x5cd0('0x1b')]('['+[_0x265ca2[_0x5cd0('0xe')]()]+']',_0x3e94f3[_0x5cd0('0x11')]);_0x2466b1(_0x3e94f3[_0x5cd0('0x11')]);});}else{logger[_0x5cd0('0xd')]('['+[_0x265ca2[_0x5cd0('0xe')]()]+']\x20using\x20admin\x20profile');_0x4594cd[_0x5cd0('0x18')]=_0x4594cd[_0x5cd0('0x1c')];_0x4594cd['userEmail']=_0x4594cd[_0x5cd0('0x19')];_0x2ffd7c(_0x4594cd);}});};}function createEndUser(_0xfd1865,_0x43a49f,_0x4a225f,_0x101c40,_0x41a5f6){logger['info']('['+[_0xfd1865[_0x5cd0('0xe')]()]+'],\x20createEndUser\x20input\x20crm',_0x4a225f);return new Promise(function(_0x55d643,_0x1beb6e){var _0x3b69e0={'method':_0x5cd0('0x1d'),'uri':_0x101c40+'sys_user?'+_0x41a5f6,'body':{'user_name':_0x4a225f[_0x5cd0('0x1e')],'roles':_0x5cd0('0x1f'),'first_name':_0x4a225f[_0x5cd0('0x1e')],'active':_0x5cd0('0x20'),'date_format':'System','phone':_0x4a225f[_0x5cd0('0x1e')]},'auth':_0x43a49f,'json':!![]};return rp(_0x3b69e0)[_0x5cd0('0xa')](function(_0x59af22){logger[_0x5cd0('0xd')]('['+[_0xfd1865[_0x5cd0('0xe')]()]+_0x5cd0('0x21'),_0x59af22[_0x5cd0('0xb')]);_0x4a225f['endUserId']=_0x59af22[_0x5cd0('0xb')][_0x5cd0('0xc')];_0x55d643(_0x4a225f);})['catch'](function(_0x386073){logger[_0x5cd0('0x1b')]('['+[_0xfd1865[_0x5cd0('0xe')]()]+']',_0x386073[_0x5cd0('0x11')]);_0x1beb6e(_0x386073[_0x5cd0('0x11')]);});});}function getEndUser(_0x1bd116,_0x59211d,_0x14f400,_0x342518,_0x3e1328){return function(_0x319460){logger[_0x5cd0('0xd')]('['+[_0x1bd116[_0x5cd0('0xe')]()]+_0x5cd0('0x22'),_0x319460);return new Promise(function(_0xc6de1d,_0x41bb94){var _0x27ce52={'method':_0x5cd0('0x8'),'uri':_0x14f400+_0x5cd0('0x23')+_0x319460[_0x5cd0('0x1e')]+'&'+_0x342518+'&'+_0x3e1328,'auth':_0x59211d,'json':!![]};return rp(_0x27ce52)[_0x5cd0('0xa')](function(_0x11bc92){if(_0x11bc92['result'][_0x5cd0('0x16')]>0x0){_0x319460[_0x5cd0('0x24')]=_0x11bc92[_0x5cd0('0xb')][0x0][_0x5cd0('0xc')];logger[_0x5cd0('0xd')]('['+[_0x1bd116[_0x5cd0('0xe')]()]+_0x5cd0('0x25'),_0x319460);_0xc6de1d(_0x319460);}else{return createEndUser(_0x1bd116,_0x59211d,_0x319460,_0x14f400,_0x342518)['then'](function(_0x54aa70){logger[_0x5cd0('0xd')]('['+[_0x1bd116['toUpperCase']()]+'],\x20createEndUser\x20crm',_0x54aa70);_0xc6de1d(_0x54aa70);});}})[_0x5cd0('0x10')](function(_0xceb4f){logger['error']('['+[_0x1bd116[_0x5cd0('0xe')]()]+']',_0xceb4f[_0x5cd0('0x11')]);_0x41bb94(_0xceb4f['message']);});});};}function getCustomFields(_0x375ba7,_0x18a2a9){var _0x24492b={};if(_0x375ba7[_0x5cd0('0x16')]>0x0){_[_0x5cd0('0x26')](_0x375ba7,function(_0x2948af){if(_[_0x5cd0('0x27')]([_0x5cd0('0x28'),_0x5cd0('0x29')],_0x2948af['type'])&&_0x2948af[_0x5cd0('0x2a')]&&!_0x2948af[_0x5cd0('0x2b')]){_0x24492b[_0x2948af[_0x5cd0('0x2a')][_0x5cd0('0x2c')]()]=_0x2948af[_0x5cd0('0x2d')][_0x5cd0('0x2e')]();}else if(_['includes']([_0x5cd0('0x28'),'picklist'],_0x2948af[_0x5cd0('0x2f')])&&_0x2948af[_0x5cd0('0x30')]&&_0x2948af['customField']){_0x24492b[_0x2948af['idField']['toLowerCase']()]=_0x2948af[_0x5cd0('0x2d')][_0x5cd0('0x2e')]();}else if(_0x2948af[_0x5cd0('0x2f')]===_0x5cd0('0x31')&&_0x2948af[_0x5cd0('0x32')]&&_0x2948af[_0x5cd0('0x30')]&&_0x2948af[_0x5cd0('0x2b')]){_0x24492b[_0x2948af['idField']['toLowerCase']()]=_0x18a2a9[_0x2948af[_0x5cd0('0x32')]][_0x5cd0('0x2e')]();}else if(_0x2948af[_0x5cd0('0x2f')]==='customVariable'&&_0x2948af[_0x5cd0('0x33')]&&_0x2948af[_0x5cd0('0x33')][_0x5cd0('0x34')]&&_0x2948af['idField']&&_0x2948af[_0x5cd0('0x2b')]){_0x24492b[_0x2948af['idField']['toLowerCase']()]=_0x18a2a9[_0x2948af[_0x5cd0('0x33')][_0x5cd0('0x34')][_0x5cd0('0x2c')]()][_0x5cd0('0x2e')]();}});}return _0x24492b;}function getTicket(_0x422397,_0x1dfe70,_0x126754,_0x28eb1c,_0x581357,_0x5d1ee2){return function(_0x1a184c){logger[_0x5cd0('0xd')]('['+[_0x422397[_0x5cd0('0xe')]()]+_0x5cd0('0x35'),_0x1a184c);return new Promise(function(_0x40646d,_0x348dff){var _0x461efa=_0x422397['toLowerCase']()===_0x5cd0('0x36')?_0x1a184c['userId']:_0x1a184c[_0x5cd0('0x24')];var _0x1fd5c5={'method':_0x5cd0('0x1d'),'uri':_0x126754+_0x5cd0('0x37')+'?'+_0x5d1ee2,'body':Object['assign']({},{'active':'true','caller_id':_0x461efa,'assigned_to':_0x1a184c[_0x5cd0('0x18')],'short_description':intUtil[_0x5cd0('0x38')](_0x28eb1c[_0x5cd0('0x39')],_0x581357,'\x20'),'description':intUtil[_0x5cd0('0x38')](_0x28eb1c[_0x5cd0('0x3a')],_0x581357,'\x0a')},getCustomFields(_0x28eb1c[_0x5cd0('0x3b')],_0x581357)),'auth':_0x1dfe70,'json':!![]};return rp(_0x1fd5c5)['then'](function(_0x3e1d7d){logger['info']('['+[_0x422397['toUpperCase']()]+_0x5cd0('0x3c'),_0x3e1d7d[_0x5cd0('0xb')]);_0x1a184c['ticketId']=_0x3e1d7d[_0x5cd0('0xb')][_0x5cd0('0xc')];_0x1a184c[_0x5cd0('0x3d')]=_0x3e1d7d['result'][_0x5cd0('0x3e')];logger[_0x5cd0('0xd')]('['+[_0x422397[_0x5cd0('0xe')]()]+_0x5cd0('0x3f'),_0x1a184c);_0x40646d(_0x1a184c);})[_0x5cd0('0x10')](function(_0x2284ec){logger[_0x5cd0('0x1b')]('['+[_0x422397[_0x5cd0('0xe')]()]+']',_0x2284ec[_0x5cd0('0x11')]);_0x348dff(_0x2284ec[_0x5cd0('0x11')]);});});};}function createRemoteTag(_0x4c4b16,_0x324e33,_0x4153e5,_0x674273){return new Promise(function(_0x2a4e59,_0x4074f4){var _0x2ad74c={'method':_0x5cd0('0x1d'),'uri':_0x4153e5+_0x5cd0('0x40')+'?'+_0x674273,'body':{'short_description':_0x4c4b16,'global':!![],'active':!![],'name':_0x4c4b16},'auth':_0x324e33,'json':!![]};return rp(_0x2ad74c)['then'](function(_0x3f01df){var _0x1eaefc=_0x3f01df[_0x5cd0('0xb')][_0x5cd0('0xc')];_0x2a4e59(_0x1eaefc);});});}function getRemoteTag(_0x2f8ced,_0x52743a,_0x3ecf06,_0x3b2440,_0x48f95d){return new Promise(function(_0x4d1405,_0x5d51fd){var _0x35ce10={'method':_0x5cd0('0x8'),'uri':_0x3ecf06+_0x5cd0('0x40')+_0x5cd0('0x41')+_0x2f8ced+'&'+_0x3b2440,'auth':_0x52743a,'json':!![]};return rp(_0x35ce10)['then'](function(_0x519f36){if(_0x519f36[_0x5cd0('0xb')]['length']>0x0){var _0x1f57aa=_0x519f36[_0x5cd0('0xb')][0x0][_0x5cd0('0xc')];_0x4d1405(_0x1f57aa);}else{return createRemoteTag(_0x2f8ced,_0x52743a,_0x3ecf06,_0x3b2440)[_0x5cd0('0xa')](function(_0x2fb8e1){_0x4d1405(_0x2fb8e1);});}});});}function assignTagToIncident(_0x258127,_0x1797a8,_0x25a1c4,_0x506604,_0x5d710){return new Promise(function(_0x2f5c24,_0xbc9012){var _0x1533fa={'method':'POST','uri':_0x25a1c4+_0x5cd0('0x42')+'?'+_0x5d710,'body':{'label':_0x258127,'table':_0x5cd0('0x37'),'id_type':'Incident','table_key':_0x506604[_0x5cd0('0x43')],'title':_0x5cd0('0x44')+_0x506604[_0x5cd0('0x3d')],'id_display':_0x506604[_0x5cd0('0x3d')]},'auth':_0x1797a8,'json':!![]};return rp(_0x1533fa)[_0x5cd0('0xa')](function(_0x3e62fb){_0x2f5c24();})[_0x5cd0('0x10')](function(){_0x2f5c24();});});}function manageTags(_0xda401d,_0x3e6f9d,_0x524997,_0x236501,_0x35d960,_0x516958,_0x22f54e){return new Promise(function(_0x41e324,_0x105e89){var _0x2aed58=[];_0x3e6f9d[_0x5cd0('0x26')](function(_0x4784d9){_0x2aed58['push'](getRemoteTag(_0x4784d9,_0x524997,_0x236501,_0x516958,_0x22f54e));});return Promise[_0x5cd0('0x45')](_0x2aed58)[_0x5cd0('0xa')](function(_0x3c2578){if(_0x3c2578[_0x5cd0('0x16')]){logger[_0x5cd0('0xd')]('['+[_0xda401d['toUpperCase']()]+_0x5cd0('0x46'),_0x3c2578);var _0x41f183=[];_0x3c2578[_0x5cd0('0x26')](function(_0x2027ce){_0x41f183[_0x5cd0('0x47')](assignTagToIncident(_0x2027ce,_0x524997,_0x236501,_0x35d960,_0x516958));});return Promise['all'](_0x41f183)[_0x5cd0('0xa')](function(){_0x41e324();})[_0x5cd0('0x10')](function(){_0x41e324();});}else{_0x41e324();}});});}function getTags(_0x22f8c1,_0xa139f8,_0xb9b662,_0x176466,_0x68eb70,_0xdc72b4){return function(_0x71eb82){return new Promise(function(_0x29998b,_0x1290db){var _0x5cd93b=[];var _0x6e6aee=_0x176466[_0x5cd0('0x48')];if(_0x6e6aee&&_0x6e6aee[_0x5cd0('0x16')]>0x0){_0x5cd93b=_[_0x5cd0('0x49')](_0x6e6aee,_0x5cd0('0x34'));}if(_0x5cd93b[_0x5cd0('0x16')]>0x0){return manageTags(_0x22f8c1,_0x5cd93b,_0xa139f8,_0xb9b662,_0x71eb82,_0x68eb70,_0xdc72b4)[_0x5cd0('0xa')](function(){_0x29998b(_0x71eb82);});}else{_0x29998b(_0x71eb82);}});};}function emit(_0x146a29,_0x1edbb5,_0x24ce4b){var _0x471689=_0x5cd0('0x4a')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+'%26sysparm_record_list%3Dactive%253Dtrue'+'%255EORDERBYDESCnumber';var _0x1132ff={'uri':_0x146a29+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x24ce4b+_0x471689};io['to'](util['format'](_0x5cd0('0x4b'),_0x1edbb5))[_0x5cd0('0x4c')](_0x5cd0('0x4d'),_0x1132ff);}exports['cs']=function(_0x3c4646,_0x75937c,_0x55ea7b,_0x43ed4d,_0x3b04ca,_0x1f3fdf,_0xb51f51,_0x45117b){var _0x469b57={};var _0x484708={'user':_0x1f3fdf['username'],'pass':_0x1f3fdf[_0x5cd0('0x4e')]};var _0x497f83=_0x5cd0('0x4f');var _0x2a6436=_0x5cd0('0x50');_0x1f3fdf[_0x5cd0('0x51')]=intUtil[_0x5cd0('0x52')](_0x1f3fdf['remoteUri']);_0x1f3fdf['serverUrl']=intUtil[_0x5cd0('0x52')](_0x1f3fdf['serverUrl']);var _0x421ae1=util['format']('%s/api/now/table/',_0x1f3fdf['remoteUri']);_0x469b57[_0x5cd0('0x13')]=!_[_0x5cd0('0x53')](_0x43ed4d)?_0x43ed4d[_0x5cd0('0x54')]:null;_0x469b57['adminEmail']=_0x1f3fdf[_0x5cd0('0x54')];_0x469b57['endUserNumber']=_0x45117b[_0x5cd0('0x2c')]()===_0x5cd0('0x36')?_0x75937c[_0x5cd0('0x55')]:_0x75937c[_0x5cd0('0x56')];_0x469b57[_0x5cd0('0x57')]=_0x45117b===_0x5cd0('0x58')||_0x45117b===_0x5cd0('0x59')?_0x5cd0('0x58'):_0x5cd0('0x36');var _0x597562=util[_0x5cd0('0x5a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1f3fdf[_0x5cd0('0x5b')],_0x75937c[_0x5cd0('0x5c')],md5(_0x75937c[_0x5cd0('0x5c')]));if(_0x3b04ca&&_0x3b04ca[_0x5cd0('0x5d')]){logger['info'](_0x5cd0('0x5e'),_0x5cd0('0x5f'));_0x75937c['recordingURL']=_0x597562;}else if(_0xb51f51&&_0xb51f51[_0x5cd0('0x60')]&&_0xb51f51[_0x5cd0('0x60')]!=='none'){logger[_0x5cd0('0xd')](_0x5cd0('0x61'),'Recording\x20is\x20enabled!');_0x75937c[_0x5cd0('0x62')]=_0x597562;}else{_0x75937c['recordingURL']='';}return getAdminUser(_0x45117b,_0x484708,_0x469b57,_0x421ae1,_0x2a6436,_0x497f83)[_0x5cd0('0xa')](getUser(_0x45117b,_0x484708,_0x421ae1,_0x2a6436,_0x497f83))[_0x5cd0('0xa')](getEndUser(_0x45117b,_0x484708,_0x421ae1,_0x2a6436,_0x497f83))[_0x5cd0('0xa')](getTicket(_0x45117b,_0x484708,_0x421ae1,_0x55ea7b,_0x75937c,_0x2a6436))[_0x5cd0('0xa')](function(_0x60c045){logger[_0x5cd0('0xd')](util[_0x5cd0('0x5a')](_0x5cd0('0x63'),_0x60c045['ticketId']));logger[_0x5cd0('0xd')](util[_0x5cd0('0x5a')](_0x5cd0('0x64'),_0x45117b));if(_0x45117b!==_0x5cd0('0x59')){logger[_0x5cd0('0xd')]('['+[_0x45117b[_0x5cd0('0xe')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x1f3fdf[_0x5cd0('0x51')],_0x43ed4d[_0x5cd0('0x34')],_0x60c045[_0x5cd0('0x43')]);}})['catch'](function(_0x4b67db){logger[_0x5cd0('0x1b')]('['+[_0x45117b[_0x5cd0('0xe')]()]+_0x5cd0('0x65'),util[_0x5cd0('0x66')](_0x4b67db,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x29f1=['type','customField','nameField','toLowerCase','content','idField','variable','variableName','toString','Variable','name',']\x20getTicket\x20input\x20crm','outbound','POST','assign','getString','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','incident','Incident\x20-\x20','ticketNumber','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','all','Tags','map','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','password','remoteUri','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','request-promise','util','md5','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','adminId','result','sys_id','info','catch','message','toUpperCase','userEmail','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','length','active','true','userId','adminEmail','],\x20getUser\x20crm','error',']\x20using\x20admin\x20profile','sys_user?','user','System','endUserNumber','],\x20EndUser\x20schema','sys_user?sysparm_query=phone%3D','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist'];(function(_0x4a83f4,_0x50f589){var _0x1fc810=function(_0xc651f9){while(--_0xc651f9){_0x4a83f4['push'](_0x4a83f4['shift']());}};_0x1fc810(++_0x50f589);}(_0x29f1,0x1d6));var _0x129f=function(_0x33b85e,_0x9ab507){_0x33b85e=_0x33b85e-0x0;var _0x4d222e=_0x29f1[_0x33b85e];return _0x4d222e;};'use strict';var _=require(_0x129f('0x0'));var Promise=require('bluebird');var rp=require(_0x129f('0x1'));var util=require(_0x129f('0x2'));var md5=require(_0x129f('0x3'));var Redis=require('ioredis');var intUtil=require(_0x129f('0x4'));var config=require(_0x129f('0x5'));var logger=require(_0x129f('0x6'))('servicenow');config[_0x129f('0x7')]=_[_0x129f('0x8')](config['redis'],{'host':_0x129f('0x9'),'port':0x18eb});var io=require(_0x129f('0xa'))(new Redis(config['redis']));function getAdminUser(_0x365ad0,_0x203953,_0xd9eca,_0x1bc706,_0x45bd38,_0x2b5ac2){return new Promise(function(_0xa267a9,_0x3fca41){var _0x5cc709={'method':_0x129f('0xb'),'uri':_0x1bc706+_0x129f('0xc')+'&'+_0x45bd38+'&'+_0x2b5ac2,'auth':_0x203953,'json':!![]};return rp(_0x5cc709)[_0x129f('0xd')](function(_0x29d228){if(_0x29d228['result']['length']>0x0){_0xd9eca[_0x129f('0xe')]=_0x29d228[_0x129f('0xf')][0x0][_0x129f('0x10')];}logger[_0x129f('0x11')]('['+[_0x365ad0['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0xd9eca);_0xa267a9(_0xd9eca);})[_0x129f('0x12')](function(_0x28d983){logger['error']('['+[_0x365ad0['toUpperCase']()]+']',_0x28d983[_0x129f('0x13')]);_0x3fca41(_0x28d983[_0x129f('0x13')]);});});}function getUser(_0x1845d4,_0x425d07,_0xe74e22,_0x547e05,_0x318a2f){return function(_0x43ed0c){logger[_0x129f('0x11')]('['+[_0x1845d4[_0x129f('0x14')]()]+'],\x20getUser\x20input\x20crm',_0x43ed0c);return new Promise(function(_0x51a80a,_0x5ac107){if(intUtil['validateEmail'](_0x43ed0c[_0x129f('0x15')])){var _0x47e32b={'method':_0x129f('0xb'),'uri':_0xe74e22+'sys_user?sysparm_query=email%3D'+_0x43ed0c['userEmail']+'&'+_0x547e05+'&'+_0x318a2f,'auth':_0x425d07,'json':!![]};logger[_0x129f('0x11')]('['+[_0x1845d4[_0x129f('0x14')]()]+_0x129f('0x16'),_0x47e32b);return rp(_0x47e32b)[_0x129f('0xd')](function(_0x421c2c){logger[_0x129f('0x11')]('['+[_0x1845d4['toUpperCase']()]+_0x129f('0x17'),_0x421c2c);if(_0x421c2c[_0x129f('0xf')][_0x129f('0x18')]>0x0&&String(_0x421c2c[_0x129f('0xf')][0x0][_0x129f('0x19')])===_0x129f('0x1a')){_0x43ed0c['userId']=_0x421c2c[_0x129f('0xf')][0x0][_0x129f('0x10')];}else{_0x43ed0c[_0x129f('0x1b')]=_0x43ed0c[_0x129f('0xe')];_0x43ed0c[_0x129f('0x15')]=_0x43ed0c[_0x129f('0x1c')];}logger[_0x129f('0x11')]('['+[_0x1845d4[_0x129f('0x14')]()]+_0x129f('0x1d'),_0x43ed0c);_0x51a80a(_0x43ed0c);})[_0x129f('0x12')](function(_0x4c25da){logger[_0x129f('0x1e')]('['+[_0x1845d4[_0x129f('0x14')]()]+']',_0x4c25da[_0x129f('0x13')]);_0x5ac107(_0x4c25da[_0x129f('0x13')]);});}else{logger[_0x129f('0x11')]('['+[_0x1845d4[_0x129f('0x14')]()]+_0x129f('0x1f'));_0x43ed0c[_0x129f('0x1b')]=_0x43ed0c[_0x129f('0xe')];_0x43ed0c[_0x129f('0x15')]=_0x43ed0c[_0x129f('0x1c')];_0x51a80a(_0x43ed0c);}});};}function createEndUser(_0x53d76c,_0x5eb85b,_0x1b9bbf,_0x57a1c5,_0x447725){logger[_0x129f('0x11')]('['+[_0x53d76c[_0x129f('0x14')]()]+'],\x20createEndUser\x20input\x20crm',_0x1b9bbf);return new Promise(function(_0x4474fe,_0x1106e2){var _0x584e2e={'method':'POST','uri':_0x57a1c5+_0x129f('0x20')+_0x447725,'body':{'user_name':_0x1b9bbf['endUserNumber'],'roles':_0x129f('0x21'),'first_name':_0x1b9bbf['endUserNumber'],'active':_0x129f('0x1a'),'date_format':_0x129f('0x22'),'phone':_0x1b9bbf[_0x129f('0x23')]},'auth':_0x5eb85b,'json':!![]};return rp(_0x584e2e)['then'](function(_0x36f694){logger[_0x129f('0x11')]('['+[_0x53d76c['toUpperCase']()]+_0x129f('0x24'),_0x36f694[_0x129f('0xf')]);_0x1b9bbf['endUserId']=_0x36f694[_0x129f('0xf')][_0x129f('0x10')];_0x4474fe(_0x1b9bbf);})[_0x129f('0x12')](function(_0x156f16){logger[_0x129f('0x1e')]('['+[_0x53d76c[_0x129f('0x14')]()]+']',_0x156f16[_0x129f('0x13')]);_0x1106e2(_0x156f16[_0x129f('0x13')]);});});}function getEndUser(_0x220145,_0x4bea99,_0x2d0223,_0x327c85,_0xd978a3){return function(_0x469696){logger['info']('['+[_0x220145[_0x129f('0x14')]()]+'],\x20getEndUser\x20input\x20crm',_0x469696);return new Promise(function(_0x34b9c6,_0x396388){var _0x5bcb66={'method':_0x129f('0xb'),'uri':_0x2d0223+_0x129f('0x25')+_0x469696[_0x129f('0x23')]+'&'+_0x327c85+'&'+_0xd978a3,'auth':_0x4bea99,'json':!![]};return rp(_0x5bcb66)[_0x129f('0xd')](function(_0x57a306){if(_0x57a306[_0x129f('0xf')]['length']>0x0){_0x469696[_0x129f('0x26')]=_0x57a306[_0x129f('0xf')][0x0][_0x129f('0x10')];logger[_0x129f('0x11')]('['+[_0x220145[_0x129f('0x14')]()]+_0x129f('0x27'),_0x469696);_0x34b9c6(_0x469696);}else{return createEndUser(_0x220145,_0x4bea99,_0x469696,_0x2d0223,_0x327c85)[_0x129f('0xd')](function(_0x48ea64){logger[_0x129f('0x11')]('['+[_0x220145[_0x129f('0x14')]()]+_0x129f('0x28'),_0x48ea64);_0x34b9c6(_0x48ea64);});}})['catch'](function(_0x55a870){logger[_0x129f('0x1e')]('['+[_0x220145[_0x129f('0x14')]()]+']',_0x55a870[_0x129f('0x13')]);_0x396388(_0x55a870[_0x129f('0x13')]);});});};}function getCustomFields(_0x250e9c,_0x2f8a2c){var _0x20db84={};if(_0x250e9c[_0x129f('0x18')]>0x0){_[_0x129f('0x29')](_0x250e9c,function(_0x59f20e){if(_[_0x129f('0x2a')]([_0x129f('0x2b'),_0x129f('0x2c')],_0x59f20e[_0x129f('0x2d')])&&_0x59f20e['nameField']&&!_0x59f20e[_0x129f('0x2e')]){_0x20db84[_0x59f20e[_0x129f('0x2f')][_0x129f('0x30')]()]=_0x59f20e[_0x129f('0x31')]['toString']();}else if(_['includes']([_0x129f('0x2b'),_0x129f('0x2c')],_0x59f20e[_0x129f('0x2d')])&&_0x59f20e[_0x129f('0x32')]&&_0x59f20e[_0x129f('0x2e')]){_0x20db84[_0x59f20e[_0x129f('0x32')][_0x129f('0x30')]()]=_0x59f20e['content']['toString']();}else if(_0x59f20e[_0x129f('0x2d')]===_0x129f('0x33')&&_0x59f20e[_0x129f('0x34')]&&_0x59f20e[_0x129f('0x32')]&&_0x59f20e['customField']){_0x20db84[_0x59f20e[_0x129f('0x32')]['toLowerCase']()]=_0x2f8a2c[_0x59f20e['variableName']][_0x129f('0x35')]();}else if(_0x59f20e['type']==='customVariable'&&_0x59f20e[_0x129f('0x36')]&&_0x59f20e[_0x129f('0x36')][_0x129f('0x37')]&&_0x59f20e[_0x129f('0x32')]&&_0x59f20e[_0x129f('0x2e')]){_0x20db84[_0x59f20e['idField'][_0x129f('0x30')]()]=_0x2f8a2c[_0x59f20e['Variable'][_0x129f('0x37')][_0x129f('0x30')]()]['toString']();}});}return _0x20db84;}function getTicket(_0x13af1b,_0x149aab,_0x16bdac,_0x1b1319,_0x2de73b,_0x50ea7b){return function(_0x251ad8){logger[_0x129f('0x11')]('['+[_0x13af1b[_0x129f('0x14')]()]+_0x129f('0x38'),_0x251ad8);return new Promise(function(_0x3418ee,_0x410994){var _0x545e34=_0x13af1b[_0x129f('0x30')]()===_0x129f('0x39')?_0x251ad8[_0x129f('0x1b')]:_0x251ad8[_0x129f('0x26')];var _0x5dfe30={'method':_0x129f('0x3a'),'uri':_0x16bdac+'incident'+'?'+_0x50ea7b,'body':Object[_0x129f('0x3b')]({},{'active':_0x129f('0x1a'),'caller_id':_0x545e34,'assigned_to':_0x251ad8[_0x129f('0x1b')],'short_description':intUtil[_0x129f('0x3c')](_0x1b1319['Subjects'],_0x2de73b,'\x20'),'description':intUtil[_0x129f('0x3c')](_0x1b1319[_0x129f('0x3d')],_0x2de73b,'\x0a')},getCustomFields(_0x1b1319['Fields'],_0x2de73b)),'auth':_0x149aab,'json':!![]};return rp(_0x5dfe30)['then'](function(_0x9a0b8b){logger['info']('['+[_0x13af1b[_0x129f('0x14')]()]+_0x129f('0x3e'),_0x9a0b8b['result']);_0x251ad8[_0x129f('0x3f')]=_0x9a0b8b[_0x129f('0xf')][_0x129f('0x10')];_0x251ad8['ticketNumber']=_0x9a0b8b[_0x129f('0xf')]['number'];logger[_0x129f('0x11')]('['+[_0x13af1b['toUpperCase']()]+_0x129f('0x40'),_0x251ad8);_0x3418ee(_0x251ad8);})[_0x129f('0x12')](function(_0x61db80){logger[_0x129f('0x1e')]('['+[_0x13af1b['toUpperCase']()]+']',_0x61db80[_0x129f('0x13')]);_0x410994(_0x61db80[_0x129f('0x13')]);});});};}function createRemoteTag(_0x50f54a,_0x5669c1,_0xfd3851,_0x2dc510){return new Promise(function(_0x348d58,_0x58c39c){var _0xa9c802={'method':'POST','uri':_0xfd3851+_0x129f('0x41')+'?'+_0x2dc510,'body':{'short_description':_0x50f54a,'global':!![],'active':!![],'name':_0x50f54a},'auth':_0x5669c1,'json':!![]};return rp(_0xa9c802)[_0x129f('0xd')](function(_0x423630){var _0x1a5408=_0x423630[_0x129f('0xf')][_0x129f('0x10')];_0x348d58(_0x1a5408);});});}function getRemoteTag(_0x4e1ae4,_0x583316,_0x3b4a13,_0x4f3af9,_0x31aa28){return new Promise(function(_0x56c96a,_0x1ab11a){var _0x3b4a77={'method':_0x129f('0xb'),'uri':_0x3b4a13+'label'+_0x129f('0x42')+_0x4e1ae4+'&'+_0x4f3af9,'auth':_0x583316,'json':!![]};return rp(_0x3b4a77)[_0x129f('0xd')](function(_0x40e139){if(_0x40e139[_0x129f('0xf')][_0x129f('0x18')]>0x0){var _0x57e440=_0x40e139['result'][0x0][_0x129f('0x10')];_0x56c96a(_0x57e440);}else{return createRemoteTag(_0x4e1ae4,_0x583316,_0x3b4a13,_0x4f3af9)[_0x129f('0xd')](function(_0x57d6b8){_0x56c96a(_0x57d6b8);});}});});}function assignTagToIncident(_0xba7b11,_0x1c7633,_0xbae0f3,_0x172c33,_0x279c8c){return new Promise(function(_0x45560c,_0x3083aa){var _0x39a09c={'method':_0x129f('0x3a'),'uri':_0xbae0f3+_0x129f('0x43')+'?'+_0x279c8c,'body':{'label':_0xba7b11,'table':_0x129f('0x44'),'id_type':'Incident','table_key':_0x172c33['ticketId'],'title':_0x129f('0x45')+_0x172c33[_0x129f('0x46')],'id_display':_0x172c33[_0x129f('0x46')]},'auth':_0x1c7633,'json':!![]};return rp(_0x39a09c)[_0x129f('0xd')](function(_0x2ee34e){_0x45560c();})[_0x129f('0x12')](function(){_0x45560c();});});}function manageTags(_0x21eee1,_0x13ba3e,_0x9d6844,_0x306ab1,_0x575643,_0x175178,_0x1ac683){return new Promise(function(_0x38ec1d,_0x409954){var _0x37ee78=[];_0x13ba3e[_0x129f('0x29')](function(_0x4f7583){_0x37ee78[_0x129f('0x47')](getRemoteTag(_0x4f7583,_0x9d6844,_0x306ab1,_0x175178,_0x1ac683));});return Promise['all'](_0x37ee78)[_0x129f('0xd')](function(_0x506374){if(_0x506374['length']){logger[_0x129f('0x11')]('['+[_0x21eee1['toUpperCase']()]+_0x129f('0x48'),_0x506374);var _0x4cdfa6=[];_0x506374[_0x129f('0x29')](function(_0x47e444){_0x4cdfa6[_0x129f('0x47')](assignTagToIncident(_0x47e444,_0x9d6844,_0x306ab1,_0x575643,_0x175178));});return Promise[_0x129f('0x49')](_0x4cdfa6)[_0x129f('0xd')](function(){_0x38ec1d();})[_0x129f('0x12')](function(){_0x38ec1d();});}else{_0x38ec1d();}});});}function getTags(_0x291e03,_0x80af13,_0x40a942,_0x31262f,_0xf17d06,_0x343d77){return function(_0x5dfb50){return new Promise(function(_0x5ef581,_0x1d96cc){var _0x381292=[];var _0xc460d1=_0x31262f[_0x129f('0x4a')];if(_0xc460d1&&_0xc460d1[_0x129f('0x18')]>0x0){_0x381292=_[_0x129f('0x4b')](_0xc460d1,_0x129f('0x37'));}if(_0x381292[_0x129f('0x18')]>0x0){return manageTags(_0x291e03,_0x381292,_0x80af13,_0x40a942,_0x5dfb50,_0xf17d06,_0x343d77)[_0x129f('0xd')](function(){_0x5ef581(_0x5dfb50);});}else{_0x5ef581(_0x5dfb50);}});};}function emit(_0x49ac34,_0x5142f1,_0x2abbb8){var _0x1ad0ed='%26sysparm_record_target%3Dincident'+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x129f('0x4c')+'%255EORDERBYDESCnumber';var _0x3c1136={'uri':_0x49ac34+_0x129f('0x4d')+_0x2abbb8+_0x1ad0ed};io['to'](util[_0x129f('0x4e')](_0x129f('0x4f'),_0x5142f1))[_0x129f('0x50')]('trigger:browser:url',_0x3c1136);}exports['cs']=function(_0x2d0a7d,_0x3deb57,_0x545463,_0xbb24a0,_0x56e0f5,_0x4eab1c,_0x40bb86,_0x380e8d){var _0x1a5863={};var _0x1dc990={'user':_0x4eab1c['username'],'pass':_0x4eab1c[_0x129f('0x51')]};var _0x4d047c='sysparm_limit=1';var _0x245f4d='sysparm_display_value=true';_0x4eab1c[_0x129f('0x52')]=intUtil['stripTrailingSlash'](_0x4eab1c['remoteUri']);_0x4eab1c[_0x129f('0x53')]=intUtil['stripTrailingSlash'](_0x4eab1c['serverUrl']);var _0x19d70e=util[_0x129f('0x4e')](_0x129f('0x54'),_0x4eab1c['remoteUri']);_0x1a5863['userEmail']=!_[_0x129f('0x55')](_0xbb24a0)?_0xbb24a0[_0x129f('0x56')]:null;_0x1a5863[_0x129f('0x1c')]=_0x4eab1c[_0x129f('0x56')];_0x1a5863[_0x129f('0x23')]=_0x380e8d[_0x129f('0x30')]()===_0x129f('0x39')?_0x3deb57[_0x129f('0x57')]:_0x3deb57[_0x129f('0x58')];_0x1a5863[_0x129f('0x59')]=_0x380e8d==='queue'||_0x380e8d===_0x129f('0x5a')?'queue':_0x129f('0x39');var _0x15a641=util[_0x129f('0x4e')](_0x129f('0x5b'),_0x4eab1c[_0x129f('0x53')],_0x3deb57[_0x129f('0x5c')],md5(_0x3deb57['uniqueid']));if(_0x56e0f5&&_0x56e0f5[_0x129f('0x5d')]){logger[_0x129f('0x11')]('[QUEUE]',_0x129f('0x5e'));_0x3deb57[_0x129f('0x5f')]=_0x15a641;}else if(_0x40bb86&&_0x40bb86[_0x129f('0x60')]&&_0x40bb86['recordingFormat']!==_0x129f('0x61')){logger[_0x129f('0x11')](_0x129f('0x62'),'Recording\x20is\x20enabled!');_0x3deb57[_0x129f('0x5f')]=_0x15a641;}else{_0x3deb57['recordingURL']='';}return getAdminUser(_0x380e8d,_0x1dc990,_0x1a5863,_0x19d70e,_0x245f4d,_0x4d047c)['then'](getUser(_0x380e8d,_0x1dc990,_0x19d70e,_0x245f4d,_0x4d047c))['then'](getEndUser(_0x380e8d,_0x1dc990,_0x19d70e,_0x245f4d,_0x4d047c))['then'](getTicket(_0x380e8d,_0x1dc990,_0x19d70e,_0x545463,_0x3deb57,_0x245f4d))[_0x129f('0xd')](function(_0x50dd82){logger[_0x129f('0x11')](util[_0x129f('0x4e')](_0x129f('0x63'),_0x50dd82[_0x129f('0x3f')]));logger[_0x129f('0x11')](util['format']('call\x20direction:\x20%s',_0x380e8d));if(_0x380e8d!==_0x129f('0x5a')){logger[_0x129f('0x11')]('['+[_0x380e8d[_0x129f('0x14')]()]+']',_0x129f('0x64'));emit(_0x4eab1c[_0x129f('0x52')],_0xbb24a0[_0x129f('0x37')],_0x50dd82[_0x129f('0x3f')]);}})[_0x129f('0x12')](function(_0x3495ff){logger[_0x129f('0x1e')]('['+[_0x380e8d['toUpperCase']()]+_0x129f('0x65'),util[_0x129f('0x66')](_0x3495ff,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index c02f3cc..ed2797a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe616=['remoteUri','stripTrailingSlash','uri','%s/service/v4_1/rest.php','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','Fields','The\x20Ticket\x20ID\x20is:','users','version','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','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','outbound','recordingFormat','[OUTBOUND]','recordingURL','destcalleridname','destcalleridnum','Ticket\x20created!','contacts','trigger:browser:url','error','monitor_format','lastevent','toUpperCase','The\x20Enduser\x20ID\x20is:','lodash','request-promise','bluebird','md5','util','ioredis','../../../../config/environment','../../../../config/logger','sugarcrm','redis','localhost','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','description','Descriptions','date_start','toISOString','slice','replace','duration_hours','parent_id','parent_type','parent_name','direction','length','forEach','variableName','push','idField','set_entry','JSON','stringify','Calls','apiKey','toString','get_server_info','isNil','Employees','format','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','name_value_list','value','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','resolve','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','get_entry_list','Contacts','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','first_name','<unknown>','Enduser\x20created.','debug','[HTTP]','merge','map','nameField','customField','toLowerCase','content','type','string','variable','custom_fields','customVariable','Variable','login','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue'];(function(_0x2da61b,_0xd52a4c){var _0x3e01fc=function(_0x593e34){while(--_0x593e34){_0x2da61b['push'](_0x2da61b['shift']());}};_0x3e01fc(++_0xd52a4c);}(_0xe616,0x194));var _0x6e61=function(_0x4a3dab,_0xe0b63c){_0x4a3dab=_0x4a3dab-0x0;var _0x41dac5=_0xe616[_0x4a3dab];return _0x41dac5;};'use strict';var _=require(_0x6e61('0x0'));var rp=require(_0x6e61('0x1'));var BPromise=require(_0x6e61('0x2'));var md5=require(_0x6e61('0x3'));var util=require(_0x6e61('0x4'));var Redis=require(_0x6e61('0x5'));var intUtil=require('./util');var config=require(_0x6e61('0x6'));var logger=require(_0x6e61('0x7'))(_0x6e61('0x8'));config['redis']=_['defaults'](config[_0x6e61('0x9')],{'host':_0x6e61('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6e61('0x9')]));var def={'method':_0x6e61('0xb'),'json':!![]};function emit(_0x303364,_0x4d4a33,_0x16b0bf){io['to'](_0x303364)[_0x6e61('0xc')](_0x4d4a33,_0x16b0bf);}function getTicket(_0x560933,_0x54da58,_0x25dfc4,_0x4189df,_0x8901a0,_0x58d1b0,_0xe94520,_0x2770ed){logger[_0x6e61('0xd')](_0x6e61('0xe'));var _0x61e1ac=new Date();var _0x450e7e=[{'name':_0x6e61('0xf'),'value':intUtil[_0x6e61('0x10')](_0x4189df[_0x6e61('0x11')],_0x8901a0,'\x20')},{'name':'assigned_user_id','value':_0x54da58['id']},{'name':_0x6e61('0x12'),'value':_0x54da58['id']},{'name':_0x6e61('0x13'),'value':intUtil[_0x6e61('0x10')](_0x4189df[_0x6e61('0x14')],_0x8901a0,'\x0a')},{'name':_0x6e61('0x15'),'value':_0x61e1ac[_0x6e61('0x16')]()[_0x6e61('0x17')](0x0,0x13)[_0x6e61('0x18')]('T','\x20')},{'name':_0x6e61('0x19'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':_0x6e61('0x1a'),'value':_0x25dfc4['id']},{'name':_0x6e61('0x1b'),'value':'Contacts'},{'name':_0x6e61('0x1c'),'value':_0x25dfc4[_0x6e61('0xf')]},{'name':_0x6e61('0x1d'),'value':_0x2770ed}];if(_0x58d1b0[_0x6e61('0x1e')]){_[_0x6e61('0x1f')](_0x58d1b0,function(_0x517908){if(_0x8901a0[_0x517908[_0x6e61('0x20')]]){_0x450e7e[_0x6e61('0x21')]({'name':_0x517908[_0x6e61('0x22')],'value':_0x8901a0[_0x517908['variableName']]});}});}return request({'form':{'method':_0x6e61('0x23'),'input_type':_0x6e61('0x24'),'response_type':'JSON','rest_data':JSON[_0x6e61('0x25')]({'session':_0xe94520['id'],'module_name':_0x6e61('0x26'),'name_value_list':_0x450e7e})}});}function getAuth(_0x441862){return util['format']('Basic\x20%s',new Buffer(_0x441862[_0x6e61('0x27')]+':X')[_0x6e61('0x28')]('base64'));}function getServerInfo(_0x985532){return request({'form':{'method':_0x6e61('0x29'),'input_type':_0x6e61('0x24'),'response_type':_0x6e61('0x24'),'rest_data':JSON[_0x6e61('0x25')]({'session':_0x985532['id']})}});}function getUser(_0x5e9a63,_0x56964c,_0x5ecca3){if(!_[_0x6e61('0x2a')](_0x56964c)){logger[_0x6e61('0xd')]('Getting\x20agent\x20with\x20name',_0x56964c);return request({'form':{'method':'get_entry_list','input_type':_0x6e61('0x24'),'response_type':_0x6e61('0x24'),'rest_data':JSON[_0x6e61('0x25')]({'session':_0x5ecca3['id'],'module_name':_0x6e61('0x2b'),'query':util[_0x6e61('0x2c')](_0x6e61('0x2d'),_0x56964c),'order_by':'','offset':'0','select_fields':['id',_0x6e61('0xf'),_0x6e61('0x2e')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x6e61('0x2f')](function(_0xe4e812){if(_0xe4e812[_0x6e61('0x30')][_0x6e61('0x1e')]){var _0xe3d1c3=_[_0x6e61('0x31')](_0xe4e812['entry_list'],function(_0x3f94a2){return _0x3f94a2[_0x6e61('0x32')]['user_name'][_0x6e61('0x33')]===_0x56964c;});if(_0xe3d1c3){logger['info'](_0x6e61('0x34'));return BPromise['resolve']({'id':_0xe3d1c3[_0x6e61('0x32')]['id'][_0x6e61('0x33')],'name':_0xe3d1c3[_0x6e61('0x32')][_0x6e61('0xf')][_0x6e61('0x33')]});}}logger[_0x6e61('0xd')](_0x6e61('0x35'));return BPromise[_0x6e61('0x36')]({'id':_0x5ecca3[_0x6e61('0x32')][_0x6e61('0x37')]['value'],'name':_0x5ecca3['name_value_list'][_0x6e61('0x2e')][_0x6e61('0x33')]});});}else{logger[_0x6e61('0xd')](_0x6e61('0x38'));return BPromise['resolve']({'id':_0x5ecca3[_0x6e61('0x32')][_0x6e61('0x37')]['value'],'name':_0x5ecca3['name_value_list'][_0x6e61('0x2e')]['value']});}}function getEndUser(_0x1c7e03,_0x4b2dc8,_0x473a57,_0x1fb314){logger[_0x6e61('0xd')](_0x6e61('0x39'),_0x473a57);return request({'form':{'method':_0x6e61('0x3a'),'input_type':_0x6e61('0x24'),'response_type':'JSON','rest_data':JSON[_0x6e61('0x25')]({'session':_0x1fb314['id'],'module_name':_0x6e61('0x3b'),'query':util[_0x6e61('0x2c')](_0x6e61('0x3c'),_0x473a57),'order_by':'','offset':'0','select_fields':['id',_0x6e61('0xf'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x4783be){if(_0x4783be[_0x6e61('0x30')][_0x6e61('0x1e')]){var _0x212bff=_[_0x6e61('0x31')](_0x4783be[_0x6e61('0x30')],function(_0x4b3d0b){return _0x4b3d0b[_0x6e61('0x32')][_0x6e61('0x3d')][_0x6e61('0x33')]===_0x473a57;});if(_0x212bff){logger[_0x6e61('0xd')](_0x6e61('0x3e'));return BPromise[_0x6e61('0x36')]({'id':_0x212bff['name_value_list']['id'][_0x6e61('0x33')],'name':_0x212bff[_0x6e61('0x32')]['name']['value'],'phone':_0x212bff[_0x6e61('0x32')][_0x6e61('0x3d')][_0x6e61('0x33')]});}}else{logger[_0x6e61('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':'set_entry','input_type':_0x6e61('0x24'),'response_type':'JSON','rest_data':JSON[_0x6e61('0x25')]({'session':_0x1fb314['id'],'module_name':_0x6e61('0x3b'),'name_value_list':[{'name':_0x6e61('0x3f'),'value':_0x4b2dc8!==_0x6e61('0x40')?_0x4b2dc8:util[_0x6e61('0x2c')]('Caller\x20-\x20%s',_0x473a57)},{'name':'phone_home','value':_0x473a57}]})}})[_0x6e61('0x2f')](function(_0x18c7c3){logger[_0x6e61('0xd')](_0x6e61('0x41'));return BPromise[_0x6e61('0x36')]({'id':_0x18c7c3['id'],'name':_0x18c7c3[_0x6e61('0x30')][_0x6e61('0x3f')][_0x6e61('0x33')],'phone':_0x18c7c3[_0x6e61('0x30')][_0x6e61('0x3d')][_0x6e61('0x33')]});});}});}function request(_0x291cb2){logger[_0x6e61('0x42')](_0x6e61('0x43'),JSON[_0x6e61('0x25')](_0x291cb2));return rp(_[_0x6e61('0x44')](def,_0x291cb2));}function getTags(_0x22fca6,_0x306bda){var _0x1d6175=[];if(_0x22fca6&&_0x22fca6[_0x6e61('0x1e')]>0x0){_0x1d6175=_[_0x6e61('0x45')](_0x22fca6,_0x306bda);}return _0x1d6175;}function getCustomFields(_0x48200b,_0x172f5d){var _0x28196c=[];var _0x1b9411={'custom_fields':[]};if(_0x48200b['length']>0x0){_['forEach'](_0x48200b,function(_0x5cf8a9){if(_0x5cf8a9['type']==='string'&&_0x5cf8a9[_0x6e61('0x46')]&&!_0x5cf8a9[_0x6e61('0x47')]){_0x1b9411[_0x5cf8a9[_0x6e61('0x46')][_0x6e61('0x48')]()]=_0x5cf8a9[_0x6e61('0x49')][_0x6e61('0x28')]();}else if(_0x5cf8a9[_0x6e61('0x4a')]===_0x6e61('0x4b')&&_0x5cf8a9[_0x6e61('0x22')]&&_0x5cf8a9[_0x6e61('0x47')]){_0x1b9411['custom_fields']['push']({'id':_0x5cf8a9[_0x6e61('0x22')],'value':_0x5cf8a9[_0x6e61('0x49')]['toString']()});}else if(_0x5cf8a9['type']===_0x6e61('0x4c')&&_0x5cf8a9['variableName']&&_0x5cf8a9[_0x6e61('0x22')]&&_0x5cf8a9[_0x6e61('0x47')]){_0x172f5d[_0x5cf8a9[_0x6e61('0x20')]]&&_0x1b9411[_0x6e61('0x4d')][_0x6e61('0x21')]({'id':_0x5cf8a9[_0x6e61('0x22')],'value':_0x172f5d[_0x5cf8a9['variableName']][_0x6e61('0x28')]()});}else if(_0x5cf8a9[_0x6e61('0x4a')]===_0x6e61('0x4e')&&_0x5cf8a9[_0x6e61('0x4f')]&&_0x5cf8a9[_0x6e61('0x4f')][_0x6e61('0xf')]&&_0x5cf8a9['idField']&&_0x5cf8a9[_0x6e61('0x47')]){_0x172f5d[_0x5cf8a9['Variable']['name'][_0x6e61('0x48')]()]&&_0x1b9411[_0x6e61('0x4d')][_0x6e61('0x21')]({'id':_0x5cf8a9['idField'],'value':_0x172f5d[_0x5cf8a9[_0x6e61('0x4f')][_0x6e61('0xf')]['toLowerCase']()][_0x6e61('0x28')]()});}});}return _0x1b9411;}function getConnection(_0x51dd59){return request({'method':'POST','form':{'method':_0x6e61('0x50'),'input_type':_0x6e61('0x24'),'response_type':'JSON','rest_data':JSON['stringify']({'user_auth':{'user_name':_0x51dd59['username'],'password':_0x51dd59[_0x6e61('0x51')],'encryption':_0x6e61('0x52')},'application':_0x6e61('0x53')})}})['then'](function(_0x3d61cd){var _0x407cbe=_0x3d61cd;if(_0x407cbe['id']){def[_0x6e61('0x54')]=_0x407cbe['id'];return BPromise[_0x6e61('0x36')](_0x407cbe);}else{throw new Error(util[_0x6e61('0x2c')](_0x6e61('0x55'),_0x51dd59['id']));}});}function setRelationship(_0x52b6df,_0x180910,_0x38a1db,_0x5d6242){return request({'form':{'method':_0x6e61('0x56'),'input_type':'JSON','response_type':_0x6e61('0x24'),'rest_data':JSON[_0x6e61('0x25')]({'session':_0x52b6df['id'],'module_name':'Calls','module_id':_0x38a1db['id'],'link_field_name':_0x5d6242,'related_ids':[_0x180910['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x6e61('0x57')]=function(_0xc43111,_0x44e388,_0x44bbe0,_0x484837,_0x40cda9,_0x159a99){var _0x44c28f,_0x5e3c74,_0xc78eea,_0x3bb4e2;_0x159a99[_0x6e61('0x58')]=intUtil['stripTrailingSlash'](_0x159a99['remoteUri']);_0x159a99['serverUrl']=intUtil[_0x6e61('0x59')](_0x159a99['serverUrl']);def[_0x6e61('0x5a')]=util[_0x6e61('0x2c')](_0x6e61('0x5b'),_0x159a99['remoteUri']);if(_0x40cda9&&_0x40cda9['monitor_format']){logger[_0x6e61('0xd')](_0x6e61('0x5c'),_0x6e61('0x5d'));_0x44e388['recordingURL']=util['format'](_0x6e61('0x5e'),_0x159a99[_0x6e61('0x5f')],_0x44e388[_0x6e61('0x60')],md5(_0x44e388[_0x6e61('0x60')]));}else{_0x44e388['recordingURL']='';}return getConnection(_0x159a99)[_0x6e61('0x2f')](function(_0x175420){_0x3bb4e2=_0x175420;return getUser(_0x159a99,_0x484837[_0x6e61('0xf')],_0x3bb4e2);})[_0x6e61('0x2f')](function(_0x366348){_0x44c28f=_0x366348;logger[_0x6e61('0xd')](_0x6e61('0x61'),_0x44c28f['id']);return getEndUser(_0x159a99,_0x44e388[_0x6e61('0x62')],_0x44e388[_0x6e61('0x63')],_0x3bb4e2);})[_0x6e61('0x2f')](function(_0x18e8d1){_0x5e3c74=_0x18e8d1;logger[_0x6e61('0xd')]('The\x20Enduser\x20ID\x20is:',_0x5e3c74['id']);return getTicket(_0x159a99,_0x44c28f,_0x5e3c74,_0x44bbe0,_0x44e388,_0x44bbe0[_0x6e61('0x64')],_0x3bb4e2,'Inbound');})[_0x6e61('0x2f')](function(_0x2aa820){_0xc78eea=_0x2aa820;logger[_0x6e61('0xd')]('Ticket\x20created!');logger[_0x6e61('0xd')](_0x6e61('0x65'),_0xc78eea['id']);return setRelationship(_0x3bb4e2,_0x44c28f,_0xc78eea,_0x6e61('0x66'));})[_0x6e61('0x2f')](function(){return setRelationship(_0x3bb4e2,_0x5e3c74,_0xc78eea,'contacts');})['then'](function(){return getServerInfo(_0x3bb4e2);})[_0x6e61('0x2f')](function(_0xa7bec4){var _0x599b4f=parseInt(_0xa7bec4[_0x6e61('0x67')][_0x6e61('0x68')](0x0));var _0x53b201=util[_0x6e61('0x2c')](_0x6e61('0x69'),_0x159a99['remoteUri'],_0xc78eea['id']);if(_0x599b4f>0x6){_0x53b201=util[_0x6e61('0x2c')](_0x6e61('0x6a'),_0x159a99[_0x6e61('0x58')],_0xc78eea['id']);}logger[_0x6e61('0xd')](_0x6e61('0x5c'),_0x6e61('0x6b'));emit(util[_0x6e61('0x2c')]('user:%s',_0x484837[_0x6e61('0xf')]),'trigger:browser:url',{'uri':_0x53b201});})[_0x6e61('0x6c')](function(_0x50c7af){logger['error'](_0x6e61('0x5c'),JSON[_0x6e61('0x25')](_0x50c7af));});};exports[_0x6e61('0x6d')]=function(_0x720ed6,_0x4c5ab4,_0x5dd909,_0x41017d,_0x184069,_0x4ba649,_0x3b6d84){var _0x111c24,_0x57946b,_0x577f6c,_0x30dbd6;_0x4ba649[_0x6e61('0x58')]=intUtil[_0x6e61('0x59')](_0x4ba649[_0x6e61('0x58')]);_0x4ba649['serverUrl']=intUtil[_0x6e61('0x59')](_0x4ba649[_0x6e61('0x5f')]);def[_0x6e61('0x5a')]=util['format'](_0x6e61('0x5b'),_0x4ba649[_0x6e61('0x58')]);if(_0x3b6d84&&_0x3b6d84[_0x6e61('0x6e')]&&_0x3b6d84['recordingFormat']!=='none'){logger[_0x6e61('0xd')](_0x6e61('0x6f'),'Recording\x20is\x20enabled!');_0x4c5ab4[_0x6e61('0x70')]=util[_0x6e61('0x2c')](_0x6e61('0x5e'),_0x4ba649[_0x6e61('0x5f')],_0x4c5ab4[_0x6e61('0x60')],md5(_0x4c5ab4[_0x6e61('0x60')]));}return getConnection(_0x4ba649)[_0x6e61('0x2f')](function(_0x5a397d){_0x30dbd6=_0x5a397d;return getUser(_0x4ba649,_0x41017d['name'],_0x30dbd6);})[_0x6e61('0x2f')](function(_0x4f6e40){_0x111c24=_0x4f6e40;logger[_0x6e61('0xd')](_0x6e61('0x61'),_0x111c24['id']);return getEndUser(_0x4ba649,_0x4c5ab4[_0x6e61('0x71')],_0x4c5ab4[_0x6e61('0x72')],_0x30dbd6);})['then'](function(_0x43791f){_0x57946b=_0x43791f;logger[_0x6e61('0xd')]('The\x20Enduser\x20ID\x20is:',_0x57946b['id']);return getTicket(_0x4ba649,_0x111c24,_0x57946b,_0x5dd909,_0x4c5ab4,_0x5dd909[_0x6e61('0x64')],_0x30dbd6,'Outbound');})[_0x6e61('0x2f')](function(_0x571b5c){_0x577f6c=_0x571b5c;logger[_0x6e61('0xd')](_0x6e61('0x73'));logger['info'](_0x6e61('0x65'),_0x577f6c['id']);return setRelationship(_0x30dbd6,_0x111c24,_0x577f6c,_0x6e61('0x66'));})[_0x6e61('0x2f')](function(){return setRelationship(_0x30dbd6,_0x57946b,_0x577f6c,_0x6e61('0x74'));})[_0x6e61('0x2f')](function(){return getServerInfo(_0x30dbd6);})[_0x6e61('0x2f')](function(_0x2ab9f4){var _0x1c47a0=parseInt(_0x2ab9f4[_0x6e61('0x67')]['charAt'](0x0));var _0x45ba10=util['format'](_0x6e61('0x69'),_0x4ba649[_0x6e61('0x58')],_0x577f6c['id']);if(_0x1c47a0>0x6){_0x45ba10=util['format'](_0x6e61('0x6a'),_0x4ba649[_0x6e61('0x58')],_0x577f6c['id']);}logger['info'](_0x6e61('0x6f'),_0x6e61('0x6b'));emit(util[_0x6e61('0x2c')]('user:%s',_0x41017d[_0x6e61('0xf')]),_0x6e61('0x75'),{'uri':_0x45ba10});})[_0x6e61('0x6c')](function(_0x480578){logger[_0x6e61('0x76')](_0x6e61('0x6f'),JSON[_0x6e61('0x25')](_0x480578));});};exports['unmanaged']=function(_0xaeeeec,_0x7325c1,_0x299dfd,_0x3dc2e1,_0x39bcea,_0x38b647){var _0x146009,_0x35bd4a,_0x233c38,_0x591efc;_0x38b647[_0x6e61('0x58')]=intUtil[_0x6e61('0x59')](_0x38b647['remoteUri']);_0x38b647[_0x6e61('0x5f')]=intUtil[_0x6e61('0x59')](_0x38b647[_0x6e61('0x5f')]);def[_0x6e61('0x5a')]=util[_0x6e61('0x2c')](_0x6e61('0x5b'),_0x38b647['remoteUri']);if(_0x39bcea&&_0x39bcea[_0x6e61('0x77')]){logger[_0x6e61('0xd')]('['+_0x7325c1[_0x6e61('0x78')][_0x6e61('0x79')]()+']','Recording\x20is\x20enabled!');_0x7325c1[_0x6e61('0x70')]=util['format'](_0x6e61('0x5e'),_0x38b647[_0x6e61('0x5f')],_0x7325c1[_0x6e61('0x60')],md5(_0x7325c1[_0x6e61('0x60')]));}else{_0x7325c1[_0x6e61('0x70')]='';}return getConnection(_0x38b647)[_0x6e61('0x2f')](function(_0x2b521b){_0x591efc=_0x2b521b;if(!_['isNil'](_0x3dc2e1)){return getUser(_0x38b647,_0x3dc2e1['name'],_0x591efc);}else{return getUser(_0x38b647,null,_0x591efc);}})[_0x6e61('0x2f')](function(_0x2c5b15){_0x146009=_0x2c5b15;logger[_0x6e61('0xd')](_0x6e61('0x61'),_0x146009['id']);return getEndUser(_0x38b647,_0x7325c1[_0x6e61('0x62')],_0x7325c1[_0x6e61('0x63')],_0x591efc);})[_0x6e61('0x2f')](function(_0xb7d2c9){_0x35bd4a=_0xb7d2c9;logger[_0x6e61('0xd')](_0x6e61('0x7a'),_0x35bd4a['id']);return getTicket(_0x38b647,_0x146009,_0x35bd4a,_0x299dfd,_0x7325c1,_0x299dfd['Fields'],_0x591efc,'Inbound');})[_0x6e61('0x2f')](function(_0x1ec564){_0x233c38=_0x1ec564;logger[_0x6e61('0xd')]('Ticket\x20created!');logger['info'](_0x6e61('0x65'),_0x233c38['id']);return setRelationship(_0x591efc,_0x146009,_0x233c38,_0x6e61('0x66'));})[_0x6e61('0x2f')](function(){return setRelationship(_0x591efc,_0x35bd4a,_0x233c38,'contacts');})['then'](function(){return getServerInfo(_0x591efc);})[_0x6e61('0x6c')](function(_0x11b8a5){logger[_0x6e61('0x76')]('['+_0x7325c1[_0x6e61('0x78')]['toUpperCase']()+']',JSON[_0x6e61('0x25')](_0x11b8a5));});};
\ No newline at end of file
+var _0x4454=['getString','Subjects','created_by','description','Descriptions','toISOString','slice','replace','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','length','forEach','variableName','push','idField','JSON','Calls','Basic\x20%s','apiKey','toString','get_server_info','stringify','isNil','Employees','format','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','entry_list','find','name_value_list','value','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','get_entry_list','contacts.phone_home\x20=\x20\x22%s\x22','then','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','set_entry','<unknown>','Caller\x20-\x20%s','phone_home','Enduser\x20created.','first_name','debug','merge','map','string','nameField','customField','toLowerCase','content','type','customVariable','Variable','custom_fields','login','PLAIN','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','stripTrailingSlash','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','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','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','outbound','recordingFormat','none','[OUTBOUND]','recordingURL','destcalleridname','Outbound','error','unmanaged','lastevent','toUpperCase','calleridname','Inbound','lodash','md5','ioredis','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name'];(function(_0x569245,_0x1c56bd){var _0x1d6508=function(_0x34cc92){while(--_0x34cc92){_0x569245['push'](_0x569245['shift']());}};_0x1d6508(++_0x1c56bd);}(_0x4454,0x1d2));var _0x4445=function(_0x1aed1,_0x565afc){_0x1aed1=_0x1aed1-0x0;var _0x43e560=_0x4454[_0x1aed1];return _0x43e560;};'use strict';var _=require(_0x4445('0x0'));var rp=require('request-promise');var BPromise=require('bluebird');var md5=require(_0x4445('0x1'));var util=require('util');var Redis=require(_0x4445('0x2'));var intUtil=require('./util');var config=require(_0x4445('0x3'));var logger=require(_0x4445('0x4'))(_0x4445('0x5'));config[_0x4445('0x6')]=_[_0x4445('0x7')](config[_0x4445('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x4445('0x8'))(new Redis(config[_0x4445('0x6')]));var def={'method':_0x4445('0x9'),'json':!![]};function emit(_0x511321,_0x20da0f,_0x54505f){io['to'](_0x511321)[_0x4445('0xa')](_0x20da0f,_0x54505f);}function getTicket(_0x4e6ab8,_0x157bde,_0x303cf4,_0x3e3e6f,_0x3f0413,_0x11f35b,_0xaa0b9,_0x4cd5dd){logger[_0x4445('0xb')](_0x4445('0xc'));var _0x4e033f=new Date();var _0x550987=[{'name':_0x4445('0xd'),'value':intUtil[_0x4445('0xe')](_0x3e3e6f[_0x4445('0xf')],_0x3f0413,'\x20')},{'name':'assigned_user_id','value':_0x157bde['id']},{'name':_0x4445('0x10'),'value':_0x157bde['id']},{'name':_0x4445('0x11'),'value':intUtil[_0x4445('0xe')](_0x3e3e6f[_0x4445('0x12')],_0x3f0413,'\x0a')},{'name':'date_start','value':_0x4e033f[_0x4445('0x13')]()[_0x4445('0x14')](0x0,0x13)[_0x4445('0x15')]('T','\x20')},{'name':'duration_hours','value':'0'},{'name':_0x4445('0x16'),'value':'15'},{'name':_0x4445('0x17'),'value':_0x303cf4['id']},{'name':_0x4445('0x18'),'value':_0x4445('0x19')},{'name':_0x4445('0x1a'),'value':_0x303cf4[_0x4445('0xd')]},{'name':_0x4445('0x1b'),'value':_0x4cd5dd}];if(_0x11f35b[_0x4445('0x1c')]){_[_0x4445('0x1d')](_0x11f35b,function(_0x5933d9){if(_0x3f0413[_0x5933d9[_0x4445('0x1e')]]){_0x550987[_0x4445('0x1f')]({'name':_0x5933d9[_0x4445('0x20')],'value':_0x3f0413[_0x5933d9[_0x4445('0x1e')]]});}});}return request({'form':{'method':'set_entry','input_type':_0x4445('0x21'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0xaa0b9['id'],'module_name':_0x4445('0x22'),'name_value_list':_0x550987})}});}function getAuth(_0xd888e6){return util['format'](_0x4445('0x23'),new Buffer(_0xd888e6[_0x4445('0x24')]+':X')[_0x4445('0x25')]('base64'));}function getServerInfo(_0xd43625){return request({'form':{'method':_0x4445('0x26'),'input_type':'JSON','response_type':_0x4445('0x21'),'rest_data':JSON[_0x4445('0x27')]({'session':_0xd43625['id']})}});}function getUser(_0x3cd771,_0x4bc67f,_0x425e91){if(!_[_0x4445('0x28')](_0x4bc67f)){logger['info']('Getting\x20agent\x20with\x20name',_0x4bc67f);return request({'form':{'method':'get_entry_list','input_type':_0x4445('0x21'),'response_type':'JSON','rest_data':JSON[_0x4445('0x27')]({'session':_0x425e91['id'],'module_name':_0x4445('0x29'),'query':util[_0x4445('0x2a')](_0x4445('0x2b'),_0x4bc67f),'order_by':'','offset':'0','select_fields':['id',_0x4445('0xd'),_0x4445('0x2c')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x3fc953){if(_0x3fc953[_0x4445('0x2d')][_0x4445('0x1c')]){var _0x4440d8=_[_0x4445('0x2e')](_0x3fc953[_0x4445('0x2d')],function(_0x1ffa53){return _0x1ffa53[_0x4445('0x2f')][_0x4445('0x2c')][_0x4445('0x30')]===_0x4bc67f;});if(_0x4440d8){logger[_0x4445('0xb')]('Agent\x20found!');return BPromise[_0x4445('0x31')]({'id':_0x4440d8[_0x4445('0x2f')]['id'][_0x4445('0x30')],'name':_0x4440d8[_0x4445('0x2f')][_0x4445('0xd')][_0x4445('0x30')]});}}logger[_0x4445('0xb')](_0x4445('0x32'));return BPromise['resolve']({'id':_0x425e91[_0x4445('0x2f')][_0x4445('0x33')][_0x4445('0x30')],'name':_0x425e91[_0x4445('0x2f')][_0x4445('0x2c')][_0x4445('0x30')]});});}else{logger['info']('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise['resolve']({'id':_0x425e91[_0x4445('0x2f')][_0x4445('0x33')][_0x4445('0x30')],'name':_0x425e91['name_value_list'][_0x4445('0x2c')][_0x4445('0x30')]});}}function getEndUser(_0x2347ce,_0x41a89a,_0x105380,_0x3be2d6){logger[_0x4445('0xb')](_0x4445('0x34'),_0x105380);return request({'form':{'method':_0x4445('0x35'),'input_type':'JSON','response_type':_0x4445('0x21'),'rest_data':JSON[_0x4445('0x27')]({'session':_0x3be2d6['id'],'module_name':_0x4445('0x19'),'query':util['format'](_0x4445('0x36'),_0x105380),'order_by':'','offset':'0','select_fields':['id','name','phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x4445('0x37')](function(_0x546040){if(_0x546040[_0x4445('0x2d')]['length']){var _0x14049e=_[_0x4445('0x2e')](_0x546040['entry_list'],function(_0xfc7f6b){return _0xfc7f6b[_0x4445('0x2f')]['phone_home']['value']===_0x105380;});if(_0x14049e){logger[_0x4445('0xb')](_0x4445('0x38'));return BPromise[_0x4445('0x31')]({'id':_0x14049e[_0x4445('0x2f')]['id'][_0x4445('0x30')],'name':_0x14049e[_0x4445('0x2f')][_0x4445('0xd')]['value'],'phone':_0x14049e[_0x4445('0x2f')]['phone_home'][_0x4445('0x30')]});}}else{logger['info'](_0x4445('0x39'));return request({'form':{'method':_0x4445('0x3a'),'input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0x3be2d6['id'],'module_name':'Contacts','name_value_list':[{'name':'first_name','value':_0x41a89a!==_0x4445('0x3b')?_0x41a89a:util[_0x4445('0x2a')](_0x4445('0x3c'),_0x105380)},{'name':_0x4445('0x3d'),'value':_0x105380}]})}})[_0x4445('0x37')](function(_0x590277){logger[_0x4445('0xb')](_0x4445('0x3e'));return BPromise['resolve']({'id':_0x590277['id'],'name':_0x590277[_0x4445('0x2d')][_0x4445('0x3f')][_0x4445('0x30')],'phone':_0x590277['entry_list'][_0x4445('0x3d')][_0x4445('0x30')]});});}});}function request(_0x4f266a){logger[_0x4445('0x40')]('[HTTP]',JSON['stringify'](_0x4f266a));return rp(_[_0x4445('0x41')](def,_0x4f266a));}function getTags(_0x8a8e4f,_0x293228){var _0x1cc255=[];if(_0x8a8e4f&&_0x8a8e4f[_0x4445('0x1c')]>0x0){_0x1cc255=_[_0x4445('0x42')](_0x8a8e4f,_0x293228);}return _0x1cc255;}function getCustomFields(_0x4f8097,_0xc3922d){var _0x505f2a=[];var _0x458254={'custom_fields':[]};if(_0x4f8097[_0x4445('0x1c')]>0x0){_[_0x4445('0x1d')](_0x4f8097,function(_0x51af3c){if(_0x51af3c['type']===_0x4445('0x43')&&_0x51af3c[_0x4445('0x44')]&&!_0x51af3c[_0x4445('0x45')]){_0x458254[_0x51af3c[_0x4445('0x44')][_0x4445('0x46')]()]=_0x51af3c[_0x4445('0x47')][_0x4445('0x25')]();}else if(_0x51af3c['type']==='string'&&_0x51af3c[_0x4445('0x20')]&&_0x51af3c[_0x4445('0x45')]){_0x458254['custom_fields'][_0x4445('0x1f')]({'id':_0x51af3c['idField'],'value':_0x51af3c[_0x4445('0x47')][_0x4445('0x25')]()});}else if(_0x51af3c[_0x4445('0x48')]==='variable'&&_0x51af3c['variableName']&&_0x51af3c['idField']&&_0x51af3c[_0x4445('0x45')]){_0xc3922d[_0x51af3c[_0x4445('0x1e')]]&&_0x458254['custom_fields'][_0x4445('0x1f')]({'id':_0x51af3c['idField'],'value':_0xc3922d[_0x51af3c[_0x4445('0x1e')]][_0x4445('0x25')]()});}else if(_0x51af3c[_0x4445('0x48')]===_0x4445('0x49')&&_0x51af3c['Variable']&&_0x51af3c[_0x4445('0x4a')][_0x4445('0xd')]&&_0x51af3c[_0x4445('0x20')]&&_0x51af3c['customField']){_0xc3922d[_0x51af3c[_0x4445('0x4a')][_0x4445('0xd')][_0x4445('0x46')]()]&&_0x458254[_0x4445('0x4b')]['push']({'id':_0x51af3c[_0x4445('0x20')],'value':_0xc3922d[_0x51af3c['Variable'][_0x4445('0xd')]['toLowerCase']()]['toString']()});}});}return _0x458254;}function getConnection(_0x1d1c52){return request({'method':'POST','form':{'method':_0x4445('0x4c'),'input_type':_0x4445('0x21'),'response_type':_0x4445('0x21'),'rest_data':JSON[_0x4445('0x27')]({'user_auth':{'user_name':_0x1d1c52['username'],'password':_0x1d1c52['password'],'encryption':_0x4445('0x4d')},'application':'xCALLY\x20Motion\x20integration'})}})[_0x4445('0x37')](function(_0x7d6d11){var _0xf3b58c=_0x7d6d11;if(_0xf3b58c['id']){def[_0x4445('0x4e')]=_0xf3b58c['id'];return BPromise['resolve'](_0xf3b58c);}else{throw new Error(util['format'](_0x4445('0x4f'),_0x1d1c52['id']));}});}function setRelationship(_0x23cc6b,_0x43437d,_0x275183,_0x337131){return request({'form':{'method':_0x4445('0x50'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x4445('0x27')]({'session':_0x23cc6b['id'],'module_name':'Calls','module_id':_0x275183['id'],'link_field_name':_0x337131,'related_ids':[_0x43437d['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x45e7c4,_0x82b91b,_0x31f5ca,_0x336c91,_0x57a9d4,_0x58868c){var _0x3252c7,_0x154f46,_0x5b1667,_0x282b72;_0x58868c[_0x4445('0x51')]=intUtil[_0x4445('0x52')](_0x58868c[_0x4445('0x51')]);_0x58868c['serverUrl']=intUtil[_0x4445('0x52')](_0x58868c['serverUrl']);def[_0x4445('0x53')]=util[_0x4445('0x2a')](_0x4445('0x54'),_0x58868c[_0x4445('0x51')]);if(_0x57a9d4&&_0x57a9d4[_0x4445('0x55')]){logger[_0x4445('0xb')](_0x4445('0x56'),_0x4445('0x57'));_0x82b91b['recordingURL']=util[_0x4445('0x2a')](_0x4445('0x58'),_0x58868c[_0x4445('0x59')],_0x82b91b[_0x4445('0x5a')],md5(_0x82b91b[_0x4445('0x5a')]));}else{_0x82b91b['recordingURL']='';}return getConnection(_0x58868c)[_0x4445('0x37')](function(_0x294785){_0x282b72=_0x294785;return getUser(_0x58868c,_0x336c91[_0x4445('0xd')],_0x282b72);})[_0x4445('0x37')](function(_0x49e79e){_0x3252c7=_0x49e79e;logger[_0x4445('0xb')](_0x4445('0x5b'),_0x3252c7['id']);return getEndUser(_0x58868c,_0x82b91b['calleridname'],_0x82b91b[_0x4445('0x5c')],_0x282b72);})[_0x4445('0x37')](function(_0x44f4c4){_0x154f46=_0x44f4c4;logger[_0x4445('0xb')](_0x4445('0x5d'),_0x154f46['id']);return getTicket(_0x58868c,_0x3252c7,_0x154f46,_0x31f5ca,_0x82b91b,_0x31f5ca[_0x4445('0x5e')],_0x282b72,'Inbound');})[_0x4445('0x37')](function(_0x315550){_0x5b1667=_0x315550;logger[_0x4445('0xb')](_0x4445('0x5f'));logger[_0x4445('0xb')](_0x4445('0x60'),_0x5b1667['id']);return setRelationship(_0x282b72,_0x3252c7,_0x5b1667,_0x4445('0x61'));})['then'](function(){return setRelationship(_0x282b72,_0x154f46,_0x5b1667,_0x4445('0x62'));})[_0x4445('0x37')](function(){return getServerInfo(_0x282b72);})[_0x4445('0x37')](function(_0x168a44){var _0x1d94c1=parseInt(_0x168a44[_0x4445('0x63')][_0x4445('0x64')](0x0));var _0x1d779a=util[_0x4445('0x2a')](_0x4445('0x65'),_0x58868c[_0x4445('0x51')],_0x5b1667['id']);if(_0x1d94c1>0x6){_0x1d779a=util[_0x4445('0x2a')](_0x4445('0x66'),_0x58868c[_0x4445('0x51')],_0x5b1667['id']);}logger['info'](_0x4445('0x56'),_0x4445('0x67'));emit(util[_0x4445('0x2a')](_0x4445('0x68'),_0x336c91[_0x4445('0xd')]),_0x4445('0x69'),{'uri':_0x1d779a});})[_0x4445('0x6a')](function(_0x2905fd){logger['error'](_0x4445('0x56'),JSON[_0x4445('0x27')](_0x2905fd));});};exports[_0x4445('0x6b')]=function(_0x489a82,_0x37d03b,_0x231159,_0x47a850,_0x34acf4,_0x21b681,_0x5491ae){var _0xb2f014,_0x193082,_0x230a02,_0x5166ea;_0x21b681['remoteUri']=intUtil[_0x4445('0x52')](_0x21b681[_0x4445('0x51')]);_0x21b681['serverUrl']=intUtil[_0x4445('0x52')](_0x21b681['serverUrl']);def[_0x4445('0x53')]=util[_0x4445('0x2a')]('%s/service/v4_1/rest.php',_0x21b681[_0x4445('0x51')]);if(_0x5491ae&&_0x5491ae[_0x4445('0x6c')]&&_0x5491ae[_0x4445('0x6c')]!==_0x4445('0x6d')){logger[_0x4445('0xb')](_0x4445('0x6e'),_0x4445('0x57'));_0x37d03b[_0x4445('0x6f')]=util[_0x4445('0x2a')](_0x4445('0x58'),_0x21b681[_0x4445('0x59')],_0x37d03b[_0x4445('0x5a')],md5(_0x37d03b[_0x4445('0x5a')]));}return getConnection(_0x21b681)[_0x4445('0x37')](function(_0x2e0ac7){_0x5166ea=_0x2e0ac7;return getUser(_0x21b681,_0x47a850[_0x4445('0xd')],_0x5166ea);})[_0x4445('0x37')](function(_0x54a155){_0xb2f014=_0x54a155;logger[_0x4445('0xb')](_0x4445('0x5b'),_0xb2f014['id']);return getEndUser(_0x21b681,_0x37d03b[_0x4445('0x70')],_0x37d03b['destcalleridnum'],_0x5166ea);})[_0x4445('0x37')](function(_0x3ab60d){_0x193082=_0x3ab60d;logger[_0x4445('0xb')](_0x4445('0x5d'),_0x193082['id']);return getTicket(_0x21b681,_0xb2f014,_0x193082,_0x231159,_0x37d03b,_0x231159['Fields'],_0x5166ea,_0x4445('0x71'));})[_0x4445('0x37')](function(_0x2cb28a){_0x230a02=_0x2cb28a;logger[_0x4445('0xb')](_0x4445('0x5f'));logger[_0x4445('0xb')](_0x4445('0x60'),_0x230a02['id']);return setRelationship(_0x5166ea,_0xb2f014,_0x230a02,'users');})[_0x4445('0x37')](function(){return setRelationship(_0x5166ea,_0x193082,_0x230a02,'contacts');})[_0x4445('0x37')](function(){return getServerInfo(_0x5166ea);})[_0x4445('0x37')](function(_0x595f47){var _0x4854a5=parseInt(_0x595f47['version']['charAt'](0x0));var _0x509f80=util[_0x4445('0x2a')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x21b681[_0x4445('0x51')],_0x230a02['id']);if(_0x4854a5>0x6){_0x509f80=util[_0x4445('0x2a')](_0x4445('0x66'),_0x21b681['remoteUri'],_0x230a02['id']);}logger['info'](_0x4445('0x6e'),_0x4445('0x67'));emit(util[_0x4445('0x2a')](_0x4445('0x68'),_0x47a850['name']),_0x4445('0x69'),{'uri':_0x509f80});})[_0x4445('0x6a')](function(_0x5ebd46){logger[_0x4445('0x72')](_0x4445('0x6e'),JSON['stringify'](_0x5ebd46));});};exports[_0x4445('0x73')]=function(_0x17711b,_0x14a011,_0x19d3ac,_0x6060ee,_0x459706,_0x562bf8){var _0x4488c6,_0xf6b526,_0x768dfd,_0x1da3e1;_0x562bf8[_0x4445('0x51')]=intUtil[_0x4445('0x52')](_0x562bf8[_0x4445('0x51')]);_0x562bf8[_0x4445('0x59')]=intUtil['stripTrailingSlash'](_0x562bf8[_0x4445('0x59')]);def[_0x4445('0x53')]=util[_0x4445('0x2a')](_0x4445('0x54'),_0x562bf8[_0x4445('0x51')]);if(_0x459706&&_0x459706[_0x4445('0x55')]){logger['info']('['+_0x14a011[_0x4445('0x74')][_0x4445('0x75')]()+']','Recording\x20is\x20enabled!');_0x14a011[_0x4445('0x6f')]=util[_0x4445('0x2a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x562bf8[_0x4445('0x59')],_0x14a011[_0x4445('0x5a')],md5(_0x14a011['uniqueid']));}else{_0x14a011[_0x4445('0x6f')]='';}return getConnection(_0x562bf8)['then'](function(_0x500784){_0x1da3e1=_0x500784;if(!_['isNil'](_0x6060ee)){return getUser(_0x562bf8,_0x6060ee[_0x4445('0xd')],_0x1da3e1);}else{return getUser(_0x562bf8,null,_0x1da3e1);}})[_0x4445('0x37')](function(_0x4aa8e7){_0x4488c6=_0x4aa8e7;logger[_0x4445('0xb')](_0x4445('0x5b'),_0x4488c6['id']);return getEndUser(_0x562bf8,_0x14a011[_0x4445('0x76')],_0x14a011[_0x4445('0x5c')],_0x1da3e1);})[_0x4445('0x37')](function(_0x1a7020){_0xf6b526=_0x1a7020;logger[_0x4445('0xb')](_0x4445('0x5d'),_0xf6b526['id']);return getTicket(_0x562bf8,_0x4488c6,_0xf6b526,_0x19d3ac,_0x14a011,_0x19d3ac[_0x4445('0x5e')],_0x1da3e1,_0x4445('0x77'));})[_0x4445('0x37')](function(_0x2e8b95){_0x768dfd=_0x2e8b95;logger['info'](_0x4445('0x5f'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x768dfd['id']);return setRelationship(_0x1da3e1,_0x4488c6,_0x768dfd,_0x4445('0x61'));})[_0x4445('0x37')](function(){return setRelationship(_0x1da3e1,_0xf6b526,_0x768dfd,_0x4445('0x62'));})[_0x4445('0x37')](function(){return getServerInfo(_0x1da3e1);})[_0x4445('0x6a')](function(_0x264546){logger[_0x4445('0x72')]('['+_0x14a011[_0x4445('0x74')][_0x4445('0x75')]()+']',JSON[_0x4445('0x27')](_0x264546));});};
\ No newline at end of file
index 9e067fc..51404f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x227d=['push','variable','variableName','customVariable','Variable','name','toLowerCase','toString','keyValue','keyType','string','key','format','%s:\x20%s','keyContent','join','stripTrailingSlash','substring','lastIndexOf','validateEmail','isNil','test','lodash','util','getString','length','sortBy','type'];(function(_0x574f9e,_0x25a52e){var _0x6fe996=function(_0x31c62a){while(--_0x31c62a){_0x574f9e['push'](_0x574f9e['shift']());}};_0x6fe996(++_0x25a52e);}(_0x227d,0x86));var _0xd227=function(_0x478c8a,_0x9afc92){_0x478c8a=_0x478c8a-0x0;var _0x3b6b3e=_0x227d[_0x478c8a];return _0x3b6b3e;};'use strict';var _=require(_0xd227('0x0'));var util=require(_0xd227('0x1'));exports[_0xd227('0x2')]=function(_0x465eea,_0x190a19,_0x1d09fb){var _0x1e78d3=[];if(_0x465eea[_0xd227('0x3')]>0x0){var _0x5af2ac=_[_0xd227('0x4')](_0x465eea,['id']);for(var _0x1ec7f2=0x0;_0x1ec7f2<_0x5af2ac[_0xd227('0x3')];_0x1ec7f2++){var _0x5ee977=_0x5af2ac[_0x1ec7f2];if(_0x5ee977[_0xd227('0x5')]==='string'){_0x1e78d3[_0xd227('0x6')](_0x5ee977['content']);}else if(_0x5ee977['type']===_0xd227('0x7')&&_0x5ee977[_0xd227('0x8')]){_0x190a19[_0x5ee977[_0xd227('0x8')]]&&_0x1e78d3[_0xd227('0x6')](_0x190a19[_0x5ee977['variableName']]['toString']());}else if(_0x5ee977['type']===_0xd227('0x9')&&_0x5ee977[_0xd227('0xa')]&&_0x5ee977[_0xd227('0xa')]['name']){_0x190a19[_0x5ee977[_0xd227('0xa')][_0xd227('0xb')][_0xd227('0xc')]()]&&_0x1e78d3[_0xd227('0x6')](_0x190a19[_0x5ee977[_0xd227('0xa')][_0xd227('0xb')][_0xd227('0xc')]()][_0xd227('0xd')]());}else if(_0x5ee977[_0xd227('0x5')]===_0xd227('0xe')){if(_0x5ee977[_0xd227('0xf')]===_0xd227('0x10')&&_0x5ee977[_0xd227('0x11')]){_0x1e78d3[_0xd227('0x6')](util[_0xd227('0x12')](_0xd227('0x13'),_0x5ee977['key'],_0x5ee977[_0xd227('0x14')]));}else if(_0x5ee977[_0xd227('0xf')]===_0xd227('0x7')&&_0x5ee977[_0xd227('0x8')]&&_0x5ee977[_0xd227('0x11')]){_0x190a19[_0x5ee977[_0xd227('0x8')]]&&_0x1e78d3[_0xd227('0x6')](util[_0xd227('0x12')]('%s:\x20%s',_0x5ee977[_0xd227('0x11')],_0x190a19[_0x5ee977['variableName']]));}else if(_0x5ee977['keyType']===_0xd227('0x9')&&_0x5ee977['Variable']&&_0x5ee977[_0xd227('0xa')]['name']&&_0x5ee977['key']){_0x190a19[_0x5ee977[_0xd227('0xa')][_0xd227('0xb')][_0xd227('0xc')]()]&&_0x1e78d3[_0xd227('0x6')](util['format'](_0xd227('0x13'),_0x5ee977['key'],_0x190a19[_0x5ee977[_0xd227('0xa')][_0xd227('0xb')][_0xd227('0xc')]()]));}}}}return _0x1e78d3[_0xd227('0x15')](_0x1d09fb);};exports[_0xd227('0x16')]=function(_0x40d43b){var _0x5f4cd1=_0x40d43b['slice'](-0x1);if(_0x5f4cd1==='/'){_0x40d43b=_0x40d43b[_0xd227('0x17')](0x0,_0x40d43b[_0xd227('0x18')](_0x5f4cd1));}return _0x40d43b;};exports[_0xd227('0x19')]=function(_0x4656e0){if(!_[_0xd227('0x1a')](_0x4656e0)&&_0x4656e0!==''){var _0x2c06f1=/^(([^<>()\[\]\\.,;:\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 _0x2c06f1[_0xd227('0x1b')](String(_0x4656e0)[_0xd227('0xc')]());}else{return![];}};
\ No newline at end of file
+var _0x9bab=['slice','substring','lastIndexOf','validateEmail','isNil','test','lodash','util','getString','length','sortBy','type','push','content','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','string','key','keyContent','variable','format','%s:\x20%s','join','stripTrailingSlash'];(function(_0x719386,_0x159d97){var _0x596448=function(_0x91df0a){while(--_0x91df0a){_0x719386['push'](_0x719386['shift']());}};_0x596448(++_0x159d97);}(_0x9bab,0x18c));var _0xb9ba=function(_0x3de4f7,_0x517696){_0x3de4f7=_0x3de4f7-0x0;var _0x11e5b4=_0x9bab[_0x3de4f7];return _0x11e5b4;};'use strict';var _=require(_0xb9ba('0x0'));var util=require(_0xb9ba('0x1'));exports[_0xb9ba('0x2')]=function(_0x156757,_0x1a755d,_0x29b547){var _0x37edac=[];if(_0x156757[_0xb9ba('0x3')]>0x0){var _0x4bf359=_[_0xb9ba('0x4')](_0x156757,['id']);for(var _0xaee4db=0x0;_0xaee4db<_0x4bf359[_0xb9ba('0x3')];_0xaee4db++){var _0x122cb0=_0x4bf359[_0xaee4db];if(_0x122cb0[_0xb9ba('0x5')]==='string'){_0x37edac[_0xb9ba('0x6')](_0x122cb0[_0xb9ba('0x7')]);}else if(_0x122cb0[_0xb9ba('0x5')]==='variable'&&_0x122cb0[_0xb9ba('0x8')]){_0x1a755d[_0x122cb0[_0xb9ba('0x8')]]&&_0x37edac[_0xb9ba('0x6')](_0x1a755d[_0x122cb0[_0xb9ba('0x8')]][_0xb9ba('0x9')]());}else if(_0x122cb0[_0xb9ba('0x5')]===_0xb9ba('0xa')&&_0x122cb0[_0xb9ba('0xb')]&&_0x122cb0[_0xb9ba('0xb')][_0xb9ba('0xc')]){_0x1a755d[_0x122cb0[_0xb9ba('0xb')]['name'][_0xb9ba('0xd')]()]&&_0x37edac[_0xb9ba('0x6')](_0x1a755d[_0x122cb0[_0xb9ba('0xb')][_0xb9ba('0xc')][_0xb9ba('0xd')]()]['toString']());}else if(_0x122cb0[_0xb9ba('0x5')]===_0xb9ba('0xe')){if(_0x122cb0[_0xb9ba('0xf')]===_0xb9ba('0x10')&&_0x122cb0[_0xb9ba('0x11')]){_0x37edac['push'](util['format']('%s:\x20%s',_0x122cb0[_0xb9ba('0x11')],_0x122cb0[_0xb9ba('0x12')]));}else if(_0x122cb0[_0xb9ba('0xf')]===_0xb9ba('0x13')&&_0x122cb0[_0xb9ba('0x8')]&&_0x122cb0[_0xb9ba('0x11')]){_0x1a755d[_0x122cb0['variableName']]&&_0x37edac[_0xb9ba('0x6')](util[_0xb9ba('0x14')](_0xb9ba('0x15'),_0x122cb0['key'],_0x1a755d[_0x122cb0['variableName']]));}else if(_0x122cb0[_0xb9ba('0xf')]===_0xb9ba('0xa')&&_0x122cb0[_0xb9ba('0xb')]&&_0x122cb0[_0xb9ba('0xb')]['name']&&_0x122cb0['key']){_0x1a755d[_0x122cb0[_0xb9ba('0xb')][_0xb9ba('0xc')]['toLowerCase']()]&&_0x37edac[_0xb9ba('0x6')](util['format'](_0xb9ba('0x15'),_0x122cb0[_0xb9ba('0x11')],_0x1a755d[_0x122cb0[_0xb9ba('0xb')][_0xb9ba('0xc')][_0xb9ba('0xd')]()]));}}}}return _0x37edac[_0xb9ba('0x16')](_0x29b547);};exports[_0xb9ba('0x17')]=function(_0x2683b0){var _0x597c43=_0x2683b0[_0xb9ba('0x18')](-0x1);if(_0x597c43==='/'){_0x2683b0=_0x2683b0[_0xb9ba('0x19')](0x0,_0x2683b0[_0xb9ba('0x1a')](_0x597c43));}return _0x2683b0;};exports[_0xb9ba('0x1b')]=function(_0x4707aa){if(!_[_0xb9ba('0x1c')](_0x4707aa)&&_0x4707aa!==''){var _0x1a87f5=/^(([^<>()\[\]\\.,;:\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 _0x1a87f5[_0xb9ba('0x1d')](String(_0x4707aa)[_0xb9ba('0xd')]());}else{return![];}};
\ No newline at end of file
index 3078065..17ab86a 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(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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 _0x34e8=['redis','defaults','localhost','emit','length','forEach','includes','string','picklist','type','idField','toString','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','getString','Subjects','POST','format','remoteUri','create','sessionName','HelpDesk','stringify','success','error','catch','statusCode','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','query','username','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','resolve','email1','first_name','last_name','userId','[vTiger],\x20%s,\x20%s,\x20%s','getUser','admin','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','phone','getEndUser','accessKey','getchallenge','then','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','split','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger'];(function(_0x5572b2,_0x43c2f8){var _0x36ca46=function(_0x54e149){while(--_0x54e149){_0x5572b2['push'](_0x5572b2['shift']());}};_0x36ca46(++_0x43c2f8);}(_0x34e8,0x12c));var _0x834e=function(_0x4fc45d,_0x332e88){_0x4fc45d=_0x4fc45d-0x0;var _0x387219=_0x34e8[_0x4fc45d];return _0x387219;};'use strict';var _=require(_0x834e('0x0'));var rp=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var md5=require(_0x834e('0x3'));var util=require('util');var Redis=require(_0x834e('0x4'));var intUtil=require(_0x834e('0x5'));var config=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));config[_0x834e('0x9')]=_[_0x834e('0xa')](config['redis'],{'host':_0x834e('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x834e('0x9')]));function emit(_0x3cc2e3,_0x3a3ef6,_0x2e69e2){io['to'](_0x3cc2e3)[_0x834e('0xc')](_0x3a3ef6,_0x2e69e2);}function getCustomFields(_0x23501c,_0x363786){var _0x1af45a={};if(_0x23501c[_0x834e('0xd')]>0x0){_[_0x834e('0xe')](_0x23501c,function(_0x1e41fe){if(_[_0x834e('0xf')]([_0x834e('0x10'),_0x834e('0x11')],_0x1e41fe[_0x834e('0x12')])&&_0x1e41fe[_0x834e('0x13')]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x1e41fe['content'][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='variable'&&_0x1e41fe[_0x834e('0x15')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe[_0x834e('0x15')]]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['variableName']][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='customVariable'&&_0x1e41fe[_0x834e('0x16')]&&_0x1e41fe['Variable'][_0x834e('0x17')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()][_0x834e('0x14')]();}});}return _0x1af45a;}function createTicket(_0xb993a1,_0x237947,_0x254677,_0x1dd214,_0x595515,_0x2545b4,_0x1fd2c6){logger[_0x834e('0x19')](_0x834e('0x1a'));var _0x4ab05d=_[_0x834e('0x1b')]({'parent_id':'','assigned_user_id':_0x237947['id'],'ticketpriorities':_0x834e('0x1c'),'ticketstatus':'Open','ticket_title':intUtil[_0x834e('0x1d')](_0x1dd214[_0x834e('0x1e')],_0x595515,'\x20'),'description':intUtil[_0x834e('0x1d')](_0x1dd214['Descriptions'],_0x595515,'\x0a'),'contact_id':_0x254677['id']},getCustomFields(_0x2545b4,_0x595515));var _0x4e3f48={'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0xb993a1[_0x834e('0x21')]),'form':{'operation':_0x834e('0x22'),'username':_0xb993a1['username'],'sessionName':_0x1fd2c6[_0x834e('0x23')],'elementType':_0x834e('0x24'),'element':JSON[_0x834e('0x25')](_0x4ab05d)},'json':!![]};return request(_0x4e3f48)['then'](function(_0x24fcf7){if(_0x24fcf7[_0x834e('0x26')]){return BPromise['resolve']({'id':_0x24fcf7['result']['id']});}else{throw new Error(util[_0x834e('0x20')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x834e('0x25')](_0x24fcf7[_0x834e('0x27')])));}})[_0x834e('0x28')](function(_0x2cc2eb){var _0x3cd928=_0x2cc2eb[_0x834e('0x29')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','createTicket',_0x3cd928,JSON['stringify'](_0x2cc2eb));});}function getUser(_0x2c7a8d,_0x567cea,_0x106d6a){if(intUtil['validateEmail'](_0x567cea)){logger[_0x834e('0x19')](_0x834e('0x2a'),_0x567cea);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x2c7a8d[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x2c7a8d[_0x834e('0x2e')],'sessionName':_0x106d6a[_0x834e('0x23')],'query':util['format'](_0x834e('0x2f'),_0x567cea)},'json':!![]})['then'](function(_0x2c75c2){if(_0x2c75c2[_0x834e('0x26')]&&_0x2c75c2[_0x834e('0x30')][_0x834e('0xd')]){logger[_0x834e('0x19')](_0x834e('0x31'));return BPromise[_0x834e('0x32')]({'id':_0x2c75c2[_0x834e('0x30')][0x0]['id'],'email':_0x2c75c2[_0x834e('0x30')][0x0][_0x834e('0x33')],'name':_0x2c75c2['result'][0x0][_0x834e('0x34')]+'\x20'+_0x2c75c2[_0x834e('0x30')][_0x834e('0x35')]});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':'admin'});}})['catch'](function(_0x3e58fa){var _0x41bf4d=_0x3e58fa[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x41bf4d,JSON['stringify'](_0x3e58fa));});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':_0x834e('0x39')})[_0x834e('0x28')](function(_0x491c28){var _0x481f70=_0x491c28[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x481f70,JSON[_0x834e('0x25')](_0x491c28));});}}function getEndUser(_0x4ca43c,_0x1c5ed6,_0x548d1d,_0x50c243){logger[_0x834e('0x19')]('Searching\x20end\x20user\x20with\x20phone',_0x548d1d);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x4ca43c[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x4ca43c['username'],'sessionName':_0x50c243[_0x834e('0x23')],'query':util[_0x834e('0x20')](_0x834e('0x3a'),_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d)},'json':!![]})['then'](function(_0x35380e){if(_0x35380e[_0x834e('0x26')]&&_0x35380e['result'][_0x834e('0xd')]){logger['info'](_0x834e('0x3b'));return BPromise[_0x834e('0x32')]({'id':_0x35380e['result'][0x0]['id'],'name':_0x35380e['result'][0x0][_0x834e('0x3c')]+'\x20'+_0x35380e[_0x834e('0x30')][0x0][_0x834e('0x3d')],'phone':_0x548d1d});}else{logger[_0x834e('0x19')](_0x834e('0x3e'));return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0x4ca43c[_0x834e('0x21')]),'form':{'operation':'create','sessionName':_0x50c243[_0x834e('0x23')],'elementType':'Contacts','element':JSON[_0x834e('0x25')]({'lastname':_0x1c5ed6,'phone':_0x548d1d,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0x361f60){logger[_0x834e('0x19')]('Enduser\x20created.');return BPromise[_0x834e('0x32')]({'id':_0x361f60[_0x834e('0x30')]['id'],'name':_0x361f60[_0x834e('0x30')][_0x834e('0x3d')],'phone':_0x361f60[_0x834e('0x30')][_0x834e('0x3f')]});})[_0x834e('0x28')](function(_0x3ccd8e){var _0x5dc63b=_0x3ccd8e[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x40'),_0x5dc63b,JSON['stringify'](_0x3ccd8e));});}});}function getConnection(_0x112306){var _0x42fd90=_0x112306[_0x834e('0x2e')];var _0x2112d5=_0x112306[_0x834e('0x41')];return request({'method':_0x834e('0x2b'),'uri':util['format']('%s/webservice.php',_0x112306[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x42'),'username':_0x42fd90},'json':!![]})[_0x834e('0x43')](function(_0x40ff5a){if(_0x40ff5a[_0x834e('0x26')]){return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x112306[_0x834e('0x21')]),'form':{'operation':_0x834e('0x44'),'username':_0x42fd90,'accessKey':md5(_0x40ff5a[_0x834e('0x30')][_0x834e('0x45')]+_0x2112d5)},'json':!![]});}})[_0x834e('0x43')](function(_0x1a3237){if(_0x1a3237[_0x834e('0x26')]){return BPromise[_0x834e('0x32')](_0x1a3237[_0x834e('0x30')]);}else{throw new Error(util[_0x834e('0x20')](_0x834e('0x46'),_0x112306['id']));}})[_0x834e('0x28')](function(_0x4cfacd){var _0x1cc0b8=_0x4cfacd[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x47'),_0x1cc0b8,JSON['stringify'](_0x4cfacd));});}function request(_0x3dcca3){logger[_0x834e('0x19')](_0x834e('0x48'),JSON[_0x834e('0x25')](_0x3dcca3));return rp(_0x3dcca3);}exports[_0x834e('0x49')]=function(_0xb77aab,_0x4549ba,_0x4a8b32,_0x1ad7fe,_0x8bc6c6,_0x3e0550){var _0x363675,_0x86ad2b,_0x396bbe,_0x344b51;_0x3e0550[_0x834e('0x21')]=intUtil['stripTrailingSlash'](_0x3e0550[_0x834e('0x21')]);if(_0x8bc6c6&&_0x8bc6c6['monitor_format']){logger[_0x834e('0x19')]('[QUEUE]',_0x834e('0x4a'));_0x4549ba['recordingURL']=util['format'](_0x834e('0x4b'),_0x3e0550[_0x834e('0x4c')],_0x4549ba['uniqueid'],md5(_0x4549ba['uniqueid']));}else{_0x4549ba[_0x834e('0x4d')]='';}return getConnection(_0x3e0550)[_0x834e('0x43')](function(_0x138ed2){_0x344b51=_0x138ed2;return getUser(_0x3e0550,_0x1ad7fe[_0x834e('0x4e')],_0x344b51);})[_0x834e('0x43')](function(_0x315858){_0x363675=_0x315858;logger[_0x834e('0x19')](_0x834e('0x4f'),_0x363675['id']);return getEndUser(_0x3e0550,_0x4549ba['calleridname'],_0x4549ba[_0x834e('0x50')],_0x344b51);})[_0x834e('0x43')](function(_0x5d5ac2){_0x86ad2b=_0x5d5ac2;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x86ad2b['id']);return createTicket(_0x3e0550,_0x363675,_0x86ad2b,_0x4a8b32,_0x4549ba,_0x4a8b32[_0x834e('0x51')],_0x344b51);})[_0x834e('0x43')](function(_0x5160c4){_0x396bbe=_0x5160c4;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x396bbe['id']);var _0x5a2924=util[_0x834e('0x20')](_0x834e('0x54'),_0x3e0550[_0x834e('0x21')],_['split'](_0x396bbe['id'],'x')[0x1]);logger[_0x834e('0x19')](_0x834e('0x55'),_0x834e('0x56'));emit(util[_0x834e('0x20')](_0x834e('0x57'),_0x1ad7fe[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5a2924});})[_0x834e('0x28')](function(_0x208c21){logger[_0x834e('0x27')](_0x834e('0x55'),JSON[_0x834e('0x25')](_0x208c21));});};exports[_0x834e('0x59')]=function(_0x1659c8,_0x460a7a,_0x17b8e3,_0x297cce,_0x14ed83,_0x193a15,_0x3e3467){var _0xed4081,_0x2cb233,_0x5c83eb,_0x2145cf;_0x193a15[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x193a15[_0x834e('0x21')]);_0x193a15['serverUrl']=intUtil[_0x834e('0x5a')](_0x193a15['serverUrl']);if(_0x3e3467&&_0x3e3467['recordingFormat']&&_0x3e3467[_0x834e('0x5b')]!==_0x834e('0x5c')){logger[_0x834e('0x19')](_0x834e('0x5d'),_0x834e('0x4a'));_0x460a7a[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x193a15['serverUrl'],_0x460a7a[_0x834e('0x5e')],md5(_0x460a7a['uniqueid']));}return getConnection(_0x193a15)[_0x834e('0x43')](function(_0xd35dda){_0x2145cf=_0xd35dda;return getUser(_0x193a15,_0x297cce['email'],_0x2145cf);})['then'](function(_0x4a4def){_0xed4081=_0x4a4def;logger[_0x834e('0x19')](_0x834e('0x4f'),_0xed4081['id']);return getEndUser(_0x193a15,_0x460a7a[_0x834e('0x5f')],_0x460a7a[_0x834e('0x60')],_0x2145cf);})['then'](function(_0x2b0d93){_0x2cb233=_0x2b0d93;logger[_0x834e('0x19')](_0x834e('0x61'),_0x2cb233['id']);return createTicket(_0x193a15,_0xed4081,_0x2cb233,_0x17b8e3,_0x460a7a,_0x17b8e3[_0x834e('0x51')],_0x2145cf);})[_0x834e('0x43')](function(_0x28b5c9){_0x5c83eb=_0x28b5c9;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x5c83eb['id']);var _0x5b2bf6=util[_0x834e('0x20')](_0x834e('0x54'),_0x193a15[_0x834e('0x21')],_[_0x834e('0x62')](_0x5c83eb['id'],'x')[0x1]);logger['info'](_0x834e('0x5d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x297cce[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5b2bf6});})['catch'](function(_0x2645df){logger[_0x834e('0x27')]('[OUTBOUND]',JSON[_0x834e('0x25')](_0x2645df));});};exports[_0x834e('0x63')]=function(_0x4b88e7,_0x5df169,_0x346be5,_0x2a42a3,_0x8bc7d9,_0x44c909){var _0x1d8e7,_0x493239,_0x264a6f,_0x520367;_0x44c909[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x21')]);_0x44c909['serverUrl']=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x4c')]);if(_0x8bc7d9&&_0x8bc7d9['monitor_format']){logger[_0x834e('0x19')]('['+_0x5df169[_0x834e('0x64')][_0x834e('0x65')]()+']','Recording\x20is\x20enabled!');_0x5df169[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x44c909[_0x834e('0x4c')],_0x5df169[_0x834e('0x5e')],md5(_0x5df169[_0x834e('0x5e')]));}else{_0x5df169[_0x834e('0x4d')]='';}return getConnection(_0x44c909)[_0x834e('0x43')](function(_0xd49002){_0x520367=_0xd49002;return getUser(_0x44c909,'',_0x520367);})[_0x834e('0x43')](function(_0x57d898){_0x1d8e7=_0x57d898;logger['info']('The\x20User\x20ID\x20is:',_0x1d8e7['id']);return getEndUser(_0x44c909,_0x5df169[_0x834e('0x66')],_0x5df169[_0x834e('0x50')],_0x520367);})[_0x834e('0x43')](function(_0x37fa2c){_0x493239=_0x37fa2c;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x493239['id']);return createTicket(_0x44c909,_0x1d8e7,_0x493239,_0x346be5,_0x5df169,_0x346be5['Fields'],_0x520367);})[_0x834e('0x43')](function(_0x1ad428){_0x264a6f=_0x1ad428;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')]('The\x20Ticket\x20ID\x20is:',_0x264a6f['id']);})[_0x834e('0x28')](function(_0x2b162a){logger[_0x834e('0x27')]('['+_0x5df169['lastevent'][_0x834e('0x65')]()+']',JSON[_0x834e('0x25')](_0x2b162a));});};
\ No newline at end of file
index f33e3ab..6cc87d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d3b=['%s:%s','username','authType','token','Basic\x20%s','base64','debug','[HTTP]','stringify','GET','forEach','includes','picklist','type','customField','nameField','toLowerCase','content','toString','string','idField','custom_fields','push','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','email','calleridname','calleridnum','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/agent/tickets/%s','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','recordingURL','uniqueid','The\x20User\x20ID\x20is:','destcalleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','/api/v2','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','Tags','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','%s/users/me.json','type:user\x20role:end-user\x20phone:%s','length','results','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','user','password'];(function(_0x3cb4ea,_0x1be099){var _0xa64c17=function(_0xd1d57b){while(--_0xd1d57b){_0x3cb4ea['push'](_0x3cb4ea['shift']());}};_0xa64c17(++_0x1be099);}(_0x9d3b,0xaf));var _0xb9d3=function(_0x238671,_0x34aea0){_0x238671=_0x238671-0x0;var _0x474844=_0x9d3b[_0x238671];return _0x474844;};'use strict';var _=require(_0xb9d3('0x0'));var rp=require(_0xb9d3('0x1'));var md5=require(_0xb9d3('0x2'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xb9d3('0x3'));var config=require(_0xb9d3('0x4'));var logger=require(_0xb9d3('0x5'))(_0xb9d3('0x6'));config[_0xb9d3('0x7')]=_[_0xb9d3('0x8')](config['redis'],{'host':_0xb9d3('0x9'),'port':0x18eb});var io=require(_0xb9d3('0xa'))(new Redis(config[_0xb9d3('0x7')]));function emit(_0x234736,_0x5d253d,_0x26d3ba){io['to'](_0x234736)[_0xb9d3('0xb')](_0x5d253d,_0x26d3ba);}var headers={'Content-Type':'application/json','Accept':_0xb9d3('0xc')};function getTicket(_0x40d4e6,_0x536f08,_0x24255b,_0x426b1b,_0x52c9a0){logger[_0xb9d3('0xd')](_0xb9d3('0xe'));return request({'uri':util[_0xb9d3('0xf')](_0xb9d3('0x10'),_0x40d4e6[_0xb9d3('0x11')]),'method':_0xb9d3('0x12'),'body':{'ticket':_['merge']({'requester_id':_0x24255b['id'],'submitter_id':_0x536f08?_0x536f08['id']:undefined,'assignee_id':_0x536f08?_0x536f08['id']:undefined,'tags':getTags(_0x426b1b[_0xb9d3('0x13')],_0xb9d3('0x14')),'subject':intUtil[_0xb9d3('0x15')](_0x426b1b[_0xb9d3('0x16')],_0x52c9a0,'\x20'),'description':intUtil[_0xb9d3('0x15')](_0x426b1b[_0xb9d3('0x17')],_0x52c9a0,'\x0a'),'comment':{'public':![],'body':intUtil[_0xb9d3('0x15')](_0x426b1b['Descriptions'],_0x52c9a0,'\x0a')}},getCustomFields(_0x426b1b[_0xb9d3('0x18')],_0x52c9a0))}})[_0xb9d3('0x19')](function(_0x5a9b51){logger[_0xb9d3('0xd')](_0xb9d3('0x1a'));return _0x5a9b51[_0xb9d3('0x1b')];});}function getUser(_0x4ebb30,_0x1235bb){if(intUtil[_0xb9d3('0x1c')](_0x1235bb)){logger[_0xb9d3('0xd')](_0xb9d3('0x1d'),_0x1235bb);return request({'uri':util[_0xb9d3('0xf')](_0xb9d3('0x1e'),_0x4ebb30[_0xb9d3('0x11')]),'qs':{'query':util['format'](_0xb9d3('0x1f'),_0x1235bb)}})[_0xb9d3('0x19')](function(_0x48d909){if(_0x48d909[_0xb9d3('0x20')]){logger[_0xb9d3('0xd')](_0xb9d3('0x21'));return _[_0xb9d3('0x22')](_0x48d909['results'],{'email':_0x1235bb,'role':_0xb9d3('0x23')});}else{logger['info'](_0xb9d3('0x24'));return request({'uri':util['format']('%s/users/me.json',_0x4ebb30[_0xb9d3('0x11')])})[_0xb9d3('0x19')](function(_0x4b53b5){logger[_0xb9d3('0xd')](_0xb9d3('0x25'));return _0x4b53b5['user'];});}});}else{logger[_0xb9d3('0xd')](_0xb9d3('0x24'));return request({'uri':util[_0xb9d3('0xf')](_0xb9d3('0x26'),_0x4ebb30[_0xb9d3('0x11')])})[_0xb9d3('0x19')](function(_0x1634e3){logger[_0xb9d3('0xd')]('Admin\x20account\x20selected.');return _0x1634e3['user'];});}}function getEndUser(_0x2cb178,_0x215d67,_0x36f177){logger[_0xb9d3('0xd')]('Searching\x20enduser\x20with\x20phone',_0x36f177);return request({'uri':util[_0xb9d3('0xf')](_0xb9d3('0x1e'),_0x2cb178[_0xb9d3('0x11')]),'qs':{'query':util[_0xb9d3('0xf')](_0xb9d3('0x27'),_0x36f177)}})['then'](function(_0x1626d3){var _0x8838b8;if(_0x1626d3['results'][_0xb9d3('0x28')]){_0x1626d3['results']=_['filter'](_0x1626d3[_0xb9d3('0x29')],{'suspended':![],'role':_0xb9d3('0x2a')});if(_0x1626d3['results'][_0xb9d3('0x28')]){_0x8838b8=_[_0xb9d3('0x2b')](_0x1626d3[_0xb9d3('0x29')]);}}if(_0x8838b8){logger[_0xb9d3('0xd')](_0xb9d3('0x2c'));return _0x8838b8;}else{logger['info'](_0xb9d3('0x2d'));return request({'uri':util[_0xb9d3('0xf')](_0xb9d3('0x2e'),_0x2cb178[_0xb9d3('0x11')]),'method':_0xb9d3('0x12'),'body':{'user':{'role':'end-user','name':util[_0xb9d3('0xf')](_0xb9d3('0x2f'),_0x215d67||_0x36f177),'phone':_0x36f177}}})[_0xb9d3('0x19')](function(_0x5110a6){logger['info'](_0xb9d3('0x30'));return _0x5110a6[_0xb9d3('0x31')];});}});}function getAuth(_0x1ecccb){var _0x35b945;if(_0x1ecccb['authType']===_0xb9d3('0x32')){_0x35b945=util['format'](_0xb9d3('0x33'),_0x1ecccb[_0xb9d3('0x34')],_0x1ecccb[_0xb9d3('0x32')]);}else if(_0x1ecccb[_0xb9d3('0x35')]===_0xb9d3('0x36')){_0x35b945=util['format']('%s/token:%s',_0x1ecccb['username'],_0x1ecccb['token']);}return util['format'](_0xb9d3('0x37'),new Buffer(_0x35b945)['toString'](_0xb9d3('0x38')));}function request(_0x43a880){logger[_0xb9d3('0x39')](_0xb9d3('0x3a'),JSON[_0xb9d3('0x3b')](_0x43a880));return rp(_[_0xb9d3('0x8')](_0x43a880,{'method':_0xb9d3('0x3c'),'headers':headers,'json':!![]}));}function getTags(_0xf8e0be,_0x21458a){var _0x5d8002=[];if(_0xf8e0be&&_0xf8e0be[_0xb9d3('0x28')]>0x0){_0x5d8002=_['map'](_0xf8e0be,_0x21458a);}return _0x5d8002;}function getCustomFields(_0x5d1e8d,_0x59fde1){var _0x318d7c=[];var _0x39a39c={'custom_fields':[]};if(_0x5d1e8d[_0xb9d3('0x28')]>0x0){_[_0xb9d3('0x3d')](_0x5d1e8d,function(_0x5e73f8){if(_[_0xb9d3('0x3e')](['string',_0xb9d3('0x3f')],_0x5e73f8[_0xb9d3('0x40')])&&_0x5e73f8['nameField']&&!_0x5e73f8[_0xb9d3('0x41')]){_0x39a39c[_0x5e73f8[_0xb9d3('0x42')][_0xb9d3('0x43')]()]=_0x5e73f8[_0xb9d3('0x44')][_0xb9d3('0x45')]();}else if(_[_0xb9d3('0x3e')]([_0xb9d3('0x46'),_0xb9d3('0x3f')],_0x5e73f8[_0xb9d3('0x40')])&&_0x5e73f8[_0xb9d3('0x47')]&&_0x5e73f8[_0xb9d3('0x41')]){_0x39a39c[_0xb9d3('0x48')][_0xb9d3('0x49')]({'id':_0x5e73f8[_0xb9d3('0x47')],'value':_0x5e73f8['content'][_0xb9d3('0x45')]()});}else if(_0x5e73f8[_0xb9d3('0x40')]==='variable'&&_0x5e73f8[_0xb9d3('0x4a')]&&_0x5e73f8[_0xb9d3('0x47')]&&_0x5e73f8[_0xb9d3('0x41')]){_0x59fde1[_0x5e73f8['variableName']]&&_0x39a39c[_0xb9d3('0x48')][_0xb9d3('0x49')]({'id':_0x5e73f8[_0xb9d3('0x47')],'value':_0x59fde1[_0x5e73f8[_0xb9d3('0x4a')]][_0xb9d3('0x45')]()});}else if(_0x5e73f8[_0xb9d3('0x40')]==='customVariable'&&_0x5e73f8[_0xb9d3('0x4b')]&&_0x5e73f8['Variable'][_0xb9d3('0x14')]&&_0x5e73f8[_0xb9d3('0x47')]&&_0x5e73f8[_0xb9d3('0x41')]){_0x59fde1[_0x5e73f8[_0xb9d3('0x4b')][_0xb9d3('0x14')][_0xb9d3('0x43')]()]&&_0x39a39c[_0xb9d3('0x48')][_0xb9d3('0x49')]({'id':_0x5e73f8[_0xb9d3('0x47')],'value':_0x59fde1[_0x5e73f8[_0xb9d3('0x4b')][_0xb9d3('0x14')]['toLowerCase']()][_0xb9d3('0x45')]()});}});}return _0x39a39c;}exports[_0xb9d3('0x4c')]=function(_0x8a160a,_0x12c8ab,_0x344dc3,_0x25a93b,_0x5f13a9,_0x40bd48){var _0x317f09,_0x16a937;_0x40bd48[_0xb9d3('0x11')]=intUtil[_0xb9d3('0x4d')](_0x40bd48[_0xb9d3('0x11')]);_0x40bd48[_0xb9d3('0x4e')]=intUtil['stripTrailingSlash'](_0x40bd48[_0xb9d3('0x4e')]);if(_0x5f13a9&&_0x5f13a9[_0xb9d3('0x4f')]){logger[_0xb9d3('0xd')](_0xb9d3('0x50'),_0xb9d3('0x51'));_0x12c8ab['recordingURL']=util['format'](_0xb9d3('0x52'),_0x40bd48['serverUrl'],_0x12c8ab['uniqueid'],md5(_0x12c8ab['uniqueid']));}else{_0x12c8ab['recordingURL']='';}headers[_0xb9d3('0x53')]=getAuth(_0x40bd48);return getUser(_0x40bd48,_0x25a93b[_0xb9d3('0x54')])[_0xb9d3('0x19')](function(_0x36f913){_0x317f09=_0x36f913;logger['info']('The\x20User\x20ID\x20is:',_0x317f09['id']);return getEndUser(_0x40bd48,_0x12c8ab[_0xb9d3('0x55')],_0x12c8ab[_0xb9d3('0x56')]);})[_0xb9d3('0x19')](function(_0xe3df45){_0x16a937=_0xe3df45;logger[_0xb9d3('0xd')]('The\x20Enduser\x20ID\x20is:',_0x16a937['id']);return getTicket(_0x40bd48,_0x317f09,_0x16a937,_0x344dc3,_0x12c8ab);})['then'](function(_0x3b51bd){if(_0x3b51bd){logger[_0xb9d3('0xd')]('The\x20Ticket\x20ID\x20is:',_0x3b51bd['id']);switch(_0x40bd48[_0xb9d3('0x40')]){case'integrationTab':logger[_0xb9d3('0xd')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xb9d3('0xf')](_0xb9d3('0x57'),_0x40bd48[_0xb9d3('0x11')],_0x317f09['id'],_0x3b51bd['id']),'method':_0xb9d3('0x12')});case _0xb9d3('0x58'):logger[_0xb9d3('0xd')](_0xb9d3('0x50'),_0xb9d3('0x59'));emit(util[_0xb9d3('0xf')]('user:%s',_0x25a93b[_0xb9d3('0x14')]),'trigger:browser:url',{'uri':util[_0xb9d3('0xf')](_0xb9d3('0x5a'),_0x40bd48[_0xb9d3('0x11')][_0xb9d3('0x5b')]('/api/v2',''),_0x3b51bd['id'])});break;default:logger[_0xb9d3('0x5c')](_0xb9d3('0x50'),_0xb9d3('0x5d'));}}})[_0xb9d3('0x5e')](function(_0x19cd96){logger['error']('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x19cd96,{'showHidden':!![],'depth':null}));});};exports[_0xb9d3('0x5f')]=function(_0x21969c,_0x2f547c,_0xce31,_0x49cbdb,_0x1a0541,_0x257082,_0x5b5899){var _0x44c011,_0xb1bfb8;_0x257082[_0xb9d3('0x11')]=intUtil[_0xb9d3('0x4d')](_0x257082[_0xb9d3('0x11')]);_0x257082['serverUrl']=intUtil[_0xb9d3('0x4d')](_0x257082[_0xb9d3('0x4e')]);if(_0x5b5899&&_0x5b5899[_0xb9d3('0x60')]&&_0x5b5899[_0xb9d3('0x60')]!==_0xb9d3('0x61')){logger['info'](_0xb9d3('0x62'),'Recording\x20is\x20enabled!');_0x2f547c[_0xb9d3('0x63')]=util['format'](_0xb9d3('0x52'),_0x257082[_0xb9d3('0x4e')],_0x2f547c[_0xb9d3('0x64')],md5(_0x2f547c['uniqueid']));}headers['Authorization']=getAuth(_0x257082);return getUser(_0x257082,_0x49cbdb[_0xb9d3('0x54')])[_0xb9d3('0x19')](function(_0x55a70d){_0x44c011=_0x55a70d;logger[_0xb9d3('0xd')](_0xb9d3('0x65'),_0x44c011['id']);return getEndUser(_0x257082,_0x2f547c['destcalleridname'],_0x2f547c[_0xb9d3('0x66')]);})[_0xb9d3('0x19')](function(_0x3abd0b){_0xb1bfb8=_0x3abd0b;logger[_0xb9d3('0xd')](_0xb9d3('0x67'),_0xb1bfb8['id']);return getTicket(_0x257082,_0x44c011,_0xb1bfb8,_0xce31,_0x2f547c);})[_0xb9d3('0x19')](function(_0x1bfb99){if(_0x1bfb99){logger['info'](_0xb9d3('0x68'),_0x1bfb99['id']);switch(_0x257082[_0xb9d3('0x40')]){case _0xb9d3('0x69'):logger[_0xb9d3('0xd')]('[OUTBOUND]',_0xb9d3('0x6a'));return request({'uri':util[_0xb9d3('0xf')](_0xb9d3('0x57'),_0x257082['remoteUri'],_0x44c011['id'],_0x1bfb99['id']),'method':_0xb9d3('0x12')});case'newTab':logger[_0xb9d3('0xd')](_0xb9d3('0x62'),_0xb9d3('0x59'));emit(util[_0xb9d3('0xf')]('user:%s',_0x49cbdb['name']),'trigger:browser:url',{'uri':util[_0xb9d3('0xf')](_0xb9d3('0x5a'),_0x257082[_0xb9d3('0x11')][_0xb9d3('0x5b')](_0xb9d3('0x6b'),''),_0x1bfb99['id'])});break;default:logger[_0xb9d3('0x5c')](_0xb9d3('0x62'),_0xb9d3('0x5d'));}}})[_0xb9d3('0x5e')](function(_0x29628f){logger[_0xb9d3('0x5c')](_0xb9d3('0x6c'),util[_0xb9d3('0x6d')](_0x29628f,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x480172,_0x53f21a,_0x52ccf2,_0x2a97df,_0x5d246e,_0x11dcc6){var _0x5c0d00,_0x2a8c97;_0x11dcc6[_0xb9d3('0x11')]=intUtil['stripTrailingSlash'](_0x11dcc6['remoteUri']);_0x11dcc6[_0xb9d3('0x4e')]=intUtil[_0xb9d3('0x4d')](_0x11dcc6[_0xb9d3('0x4e')]);if(_0x5d246e&&_0x5d246e['monitor_format']){logger[_0xb9d3('0xd')]('['+_0x53f21a[_0xb9d3('0x6e')][_0xb9d3('0x6f')]()+']',_0xb9d3('0x51'));_0x53f21a['recordingURL']=util[_0xb9d3('0xf')](_0xb9d3('0x52'),_0x11dcc6[_0xb9d3('0x4e')],_0x53f21a['uniqueid'],md5(_0x53f21a['uniqueid']));}else{_0x53f21a[_0xb9d3('0x63')]='';}headers[_0xb9d3('0x53')]=getAuth(_0x11dcc6);return getUser(_0x11dcc6)[_0xb9d3('0x19')](function(_0x2b3425){_0x5c0d00=_0x2b3425;logger[_0xb9d3('0xd')](_0xb9d3('0x65'),_0x5c0d00['id']);return getEndUser(_0x11dcc6,_0x53f21a[_0xb9d3('0x55')],_0x53f21a[_0xb9d3('0x56')]);})[_0xb9d3('0x19')](function(_0x345508){_0x2a8c97=_0x345508;logger[_0xb9d3('0xd')]('The\x20Enduser\x20ID\x20is:',_0x2a8c97['id']);return getTicket(_0x11dcc6,_0x5c0d00,_0x2a8c97,_0x52ccf2,_0x53f21a);})['then'](function(_0x693782){if(_0x693782){logger[_0xb9d3('0xd')]('The\x20Ticket\x20ID\x20is:',_0x693782['id']);}})['catch'](function(_0x1a18ef){logger[_0xb9d3('0x5c')]('['+_0x53f21a['lastevent'][_0xb9d3('0x6f')]()+']'+_0xb9d3('0x70'),util['inspect'](_0x1a18ef,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xc855=['error','recordingFormat','none','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','[OUTBOUND]','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','monitor_format','toUpperCase','calleridname','\x20Error\x20running\x20Zendesk\x20integration','inspect','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','ticket','info','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','%s/users/me.json','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','idField','custom_fields','push','content','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','user:%s','trigger:browser:url','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','catch'];(function(_0x1b72c7,_0x2dac06){var _0x1c1f20=function(_0x5bdd56){while(--_0x5bdd56){_0x1b72c7['push'](_0x1b72c7['shift']());}};_0x1c1f20(++_0x2dac06);}(_0xc855,0x1cf));var _0x5c85=function(_0x9fb2f3,_0x289daf){_0x9fb2f3=_0x9fb2f3-0x0;var _0x1f245c=_0xc855[_0x9fb2f3];return _0x1f245c;};'use strict';var _=require('lodash');var rp=require(_0x5c85('0x0'));var md5=require(_0x5c85('0x1'));var util=require(_0x5c85('0x2'));var Redis=require('ioredis');var intUtil=require(_0x5c85('0x3'));var config=require(_0x5c85('0x4'));var logger=require(_0x5c85('0x5'))('zendesk');config[_0x5c85('0x6')]=_[_0x5c85('0x7')](config[_0x5c85('0x6')],{'host':_0x5c85('0x8'),'port':0x18eb});var io=require(_0x5c85('0x9'))(new Redis(config[_0x5c85('0x6')]));function emit(_0x3a436d,_0x2c6e5b,_0x4d318d){io['to'](_0x3a436d)[_0x5c85('0xa')](_0x2c6e5b,_0x4d318d);}var headers={'Content-Type':'application/json','Accept':'application/json'};function getTicket(_0x374389,_0x5e33d0,_0x1bf9f6,_0x298d7c,_0x466432){logger['info'](_0x5c85('0xb'));return request({'uri':util[_0x5c85('0xc')](_0x5c85('0xd'),_0x374389[_0x5c85('0xe')]),'method':_0x5c85('0xf'),'body':{'ticket':_[_0x5c85('0x10')]({'requester_id':_0x1bf9f6['id'],'submitter_id':_0x5e33d0?_0x5e33d0['id']:undefined,'assignee_id':_0x5e33d0?_0x5e33d0['id']:undefined,'tags':getTags(_0x298d7c[_0x5c85('0x11')],_0x5c85('0x12')),'subject':intUtil[_0x5c85('0x13')](_0x298d7c[_0x5c85('0x14')],_0x466432,'\x20'),'description':intUtil[_0x5c85('0x13')](_0x298d7c[_0x5c85('0x15')],_0x466432,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x298d7c[_0x5c85('0x15')],_0x466432,'\x0a')}},getCustomFields(_0x298d7c[_0x5c85('0x16')],_0x466432))}})[_0x5c85('0x17')](function(_0x5da9d0){logger['info']('Ticket\x20created!');return _0x5da9d0[_0x5c85('0x18')];});}function getUser(_0x3faa21,_0x473579){if(intUtil['validateEmail'](_0x473579)){logger[_0x5c85('0x19')]('Getting\x20agent\x20with\x20email',_0x473579);return request({'uri':util[_0x5c85('0xc')](_0x5c85('0x1a'),_0x3faa21[_0x5c85('0xe')]),'qs':{'query':util[_0x5c85('0xc')](_0x5c85('0x1b'),_0x473579)}})[_0x5c85('0x17')](function(_0xa0fbf0){if(_0xa0fbf0[_0x5c85('0x1c')]){logger['info'](_0x5c85('0x1d'));return _[_0x5c85('0x1e')](_0xa0fbf0[_0x5c85('0x1f')],{'email':_0x473579,'role':_0x5c85('0x20')});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x5c85('0x21'),_0x3faa21[_0x5c85('0xe')])})[_0x5c85('0x17')](function(_0x4308a2){logger[_0x5c85('0x19')](_0x5c85('0x22'));return _0x4308a2[_0x5c85('0x23')];});}});}else{logger[_0x5c85('0x19')](_0x5c85('0x24'));return request({'uri':util[_0x5c85('0xc')](_0x5c85('0x21'),_0x3faa21[_0x5c85('0xe')])})[_0x5c85('0x17')](function(_0x161c40){logger['info'](_0x5c85('0x22'));return _0x161c40[_0x5c85('0x23')];});}}function getEndUser(_0x4fd749,_0x5e45f6,_0x1dee45){logger[_0x5c85('0x19')](_0x5c85('0x25'),_0x1dee45);return request({'uri':util[_0x5c85('0xc')](_0x5c85('0x1a'),_0x4fd749[_0x5c85('0xe')]),'qs':{'query':util[_0x5c85('0xc')](_0x5c85('0x26'),_0x1dee45)}})['then'](function(_0x59ff7f){var _0x56094c;if(_0x59ff7f[_0x5c85('0x1f')][_0x5c85('0x27')]){_0x59ff7f[_0x5c85('0x1f')]=_[_0x5c85('0x28')](_0x59ff7f[_0x5c85('0x1f')],{'suspended':![],'role':_0x5c85('0x29')});if(_0x59ff7f[_0x5c85('0x1f')]['length']){_0x56094c=_['first'](_0x59ff7f[_0x5c85('0x1f')]);}}if(_0x56094c){logger['info'](_0x5c85('0x2a'));return _0x56094c;}else{logger[_0x5c85('0x19')](_0x5c85('0x2b'));return request({'uri':util[_0x5c85('0xc')](_0x5c85('0x2c'),_0x4fd749['remoteUri']),'method':_0x5c85('0xf'),'body':{'user':{'role':_0x5c85('0x29'),'name':util['format'](_0x5c85('0x2d'),_0x5e45f6||_0x1dee45),'phone':_0x1dee45}}})[_0x5c85('0x17')](function(_0x233c31){logger[_0x5c85('0x19')](_0x5c85('0x2e'));return _0x233c31['user'];});}});}function getAuth(_0x2ee344){var _0x306e3b;if(_0x2ee344[_0x5c85('0x2f')]===_0x5c85('0x30')){_0x306e3b=util[_0x5c85('0xc')](_0x5c85('0x31'),_0x2ee344[_0x5c85('0x32')],_0x2ee344['password']);}else if(_0x2ee344[_0x5c85('0x2f')]==='token'){_0x306e3b=util[_0x5c85('0xc')]('%s/token:%s',_0x2ee344[_0x5c85('0x32')],_0x2ee344[_0x5c85('0x33')]);}return util[_0x5c85('0xc')](_0x5c85('0x34'),new Buffer(_0x306e3b)[_0x5c85('0x35')](_0x5c85('0x36')));}function request(_0x4b016f){logger[_0x5c85('0x37')](_0x5c85('0x38'),JSON[_0x5c85('0x39')](_0x4b016f));return rp(_[_0x5c85('0x7')](_0x4b016f,{'method':_0x5c85('0x3a'),'headers':headers,'json':!![]}));}function getTags(_0x3b1ef0,_0x41a9fd){var _0x7d8137=[];if(_0x3b1ef0&&_0x3b1ef0[_0x5c85('0x27')]>0x0){_0x7d8137=_[_0x5c85('0x3b')](_0x3b1ef0,_0x41a9fd);}return _0x7d8137;}function getCustomFields(_0xb0fdc4,_0x28ab4){var _0x512815=[];var _0x15446c={'custom_fields':[]};if(_0xb0fdc4['length']>0x0){_[_0x5c85('0x3c')](_0xb0fdc4,function(_0x10891b){if(_[_0x5c85('0x3d')]([_0x5c85('0x3e'),_0x5c85('0x3f')],_0x10891b[_0x5c85('0x40')])&&_0x10891b[_0x5c85('0x41')]&&!_0x10891b[_0x5c85('0x42')]){_0x15446c[_0x10891b['nameField'][_0x5c85('0x43')]()]=_0x10891b['content'][_0x5c85('0x35')]();}else if(_['includes'](['string',_0x5c85('0x3f')],_0x10891b[_0x5c85('0x40')])&&_0x10891b[_0x5c85('0x44')]&&_0x10891b[_0x5c85('0x42')]){_0x15446c[_0x5c85('0x45')][_0x5c85('0x46')]({'id':_0x10891b['idField'],'value':_0x10891b[_0x5c85('0x47')][_0x5c85('0x35')]()});}else if(_0x10891b[_0x5c85('0x40')]===_0x5c85('0x48')&&_0x10891b['variableName']&&_0x10891b[_0x5c85('0x44')]&&_0x10891b['customField']){_0x28ab4[_0x10891b[_0x5c85('0x49')]]&&_0x15446c['custom_fields'][_0x5c85('0x46')]({'id':_0x10891b[_0x5c85('0x44')],'value':_0x28ab4[_0x10891b[_0x5c85('0x49')]][_0x5c85('0x35')]()});}else if(_0x10891b[_0x5c85('0x40')]===_0x5c85('0x4a')&&_0x10891b[_0x5c85('0x4b')]&&_0x10891b[_0x5c85('0x4b')][_0x5c85('0x12')]&&_0x10891b[_0x5c85('0x44')]&&_0x10891b[_0x5c85('0x42')]){_0x28ab4[_0x10891b[_0x5c85('0x4b')][_0x5c85('0x12')][_0x5c85('0x43')]()]&&_0x15446c[_0x5c85('0x45')][_0x5c85('0x46')]({'id':_0x10891b[_0x5c85('0x44')],'value':_0x28ab4[_0x10891b[_0x5c85('0x4b')][_0x5c85('0x12')][_0x5c85('0x43')]()]['toString']()});}});}return _0x15446c;}exports[_0x5c85('0x4c')]=function(_0x1f58ce,_0x3269eb,_0x37c3d8,_0xfb36c7,_0x56e3f3,_0x5a9aa8){var _0x121e27,_0x41d061;_0x5a9aa8['remoteUri']=intUtil[_0x5c85('0x4d')](_0x5a9aa8[_0x5c85('0xe')]);_0x5a9aa8[_0x5c85('0x4e')]=intUtil[_0x5c85('0x4d')](_0x5a9aa8[_0x5c85('0x4e')]);if(_0x56e3f3&&_0x56e3f3['monitor_format']){logger['info'](_0x5c85('0x4f'),_0x5c85('0x50'));_0x3269eb['recordingURL']=util[_0x5c85('0xc')](_0x5c85('0x51'),_0x5a9aa8['serverUrl'],_0x3269eb[_0x5c85('0x52')],md5(_0x3269eb['uniqueid']));}else{_0x3269eb[_0x5c85('0x53')]='';}headers[_0x5c85('0x54')]=getAuth(_0x5a9aa8);return getUser(_0x5a9aa8,_0xfb36c7[_0x5c85('0x55')])['then'](function(_0xe3e21d){_0x121e27=_0xe3e21d;logger[_0x5c85('0x19')](_0x5c85('0x56'),_0x121e27['id']);return getEndUser(_0x5a9aa8,_0x3269eb['calleridname'],_0x3269eb[_0x5c85('0x57')]);})[_0x5c85('0x17')](function(_0x5cd7df){_0x41d061=_0x5cd7df;logger[_0x5c85('0x19')]('The\x20Enduser\x20ID\x20is:',_0x41d061['id']);return getTicket(_0x5a9aa8,_0x121e27,_0x41d061,_0x37c3d8,_0x3269eb);})[_0x5c85('0x17')](function(_0x444a2e){if(_0x444a2e){logger[_0x5c85('0x19')](_0x5c85('0x58'),_0x444a2e['id']);switch(_0x5a9aa8[_0x5c85('0x40')]){case _0x5c85('0x59'):logger[_0x5c85('0x19')](_0x5c85('0x4f'),_0x5c85('0x5a'));return request({'uri':util[_0x5c85('0xc')](_0x5c85('0x5b'),_0x5a9aa8[_0x5c85('0xe')],_0x121e27['id'],_0x444a2e['id']),'method':_0x5c85('0xf')});case'newTab':logger[_0x5c85('0x19')](_0x5c85('0x4f'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x5c85('0xc')](_0x5c85('0x5c'),_0xfb36c7[_0x5c85('0x12')]),_0x5c85('0x5d'),{'uri':util['format']('%s/agent/tickets/%s',_0x5a9aa8[_0x5c85('0xe')]['replace'](_0x5c85('0x5e'),''),_0x444a2e['id'])});break;default:logger['error'](_0x5c85('0x4f'),_0x5c85('0x5f'));}}})[_0x5c85('0x60')](function(_0x57f795){logger[_0x5c85('0x61')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x57f795,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x208233,_0x4806ac,_0x504753,_0x4484d6,_0x2223ab,_0x39309b,_0x3bfe87){var _0x47478c,_0x227e54;_0x39309b[_0x5c85('0xe')]=intUtil[_0x5c85('0x4d')](_0x39309b[_0x5c85('0xe')]);_0x39309b[_0x5c85('0x4e')]=intUtil[_0x5c85('0x4d')](_0x39309b[_0x5c85('0x4e')]);if(_0x3bfe87&&_0x3bfe87['recordingFormat']&&_0x3bfe87[_0x5c85('0x62')]!==_0x5c85('0x63')){logger['info']('[OUTBOUND]',_0x5c85('0x50'));_0x4806ac[_0x5c85('0x53')]=util[_0x5c85('0xc')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x39309b['serverUrl'],_0x4806ac[_0x5c85('0x52')],md5(_0x4806ac[_0x5c85('0x52')]));}headers[_0x5c85('0x54')]=getAuth(_0x39309b);return getUser(_0x39309b,_0x4484d6['email'])[_0x5c85('0x17')](function(_0x245181){_0x47478c=_0x245181;logger[_0x5c85('0x19')](_0x5c85('0x56'),_0x47478c['id']);return getEndUser(_0x39309b,_0x4806ac[_0x5c85('0x64')],_0x4806ac[_0x5c85('0x65')]);})['then'](function(_0x3d5962){_0x227e54=_0x3d5962;logger['info'](_0x5c85('0x66'),_0x227e54['id']);return getTicket(_0x39309b,_0x47478c,_0x227e54,_0x504753,_0x4806ac);})[_0x5c85('0x17')](function(_0x8abe55){if(_0x8abe55){logger[_0x5c85('0x19')](_0x5c85('0x58'),_0x8abe55['id']);switch(_0x39309b[_0x5c85('0x40')]){case _0x5c85('0x59'):logger[_0x5c85('0x19')](_0x5c85('0x67'),_0x5c85('0x5a'));return request({'uri':util[_0x5c85('0xc')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x39309b[_0x5c85('0xe')],_0x47478c['id'],_0x8abe55['id']),'method':_0x5c85('0xf')});case _0x5c85('0x68'):logger[_0x5c85('0x19')](_0x5c85('0x67'),_0x5c85('0x69'));emit(util[_0x5c85('0xc')](_0x5c85('0x5c'),_0x4484d6[_0x5c85('0x12')]),_0x5c85('0x5d'),{'uri':util['format']('%s/agent/tickets/%s',_0x39309b[_0x5c85('0xe')]['replace']('/api/v2',''),_0x8abe55['id'])});break;default:logger['error']('[OUTBOUND]',_0x5c85('0x5f'));}}})[_0x5c85('0x60')](function(_0x5a3f04){logger[_0x5c85('0x61')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x5a3f04,{'showHidden':!![],'depth':null}));});};exports[_0x5c85('0x6a')]=function(_0x27527d,_0x34ab5d,_0x3fd7b7,_0x3aed05,_0x4bc9e8,_0x98721c){var _0x143900,_0x775f80;_0x98721c[_0x5c85('0xe')]=intUtil['stripTrailingSlash'](_0x98721c[_0x5c85('0xe')]);_0x98721c[_0x5c85('0x4e')]=intUtil[_0x5c85('0x4d')](_0x98721c[_0x5c85('0x4e')]);if(_0x4bc9e8&&_0x4bc9e8[_0x5c85('0x6b')]){logger[_0x5c85('0x19')]('['+_0x34ab5d['lastevent'][_0x5c85('0x6c')]()+']',_0x5c85('0x50'));_0x34ab5d[_0x5c85('0x53')]=util[_0x5c85('0xc')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x98721c[_0x5c85('0x4e')],_0x34ab5d[_0x5c85('0x52')],md5(_0x34ab5d[_0x5c85('0x52')]));}else{_0x34ab5d[_0x5c85('0x53')]='';}headers[_0x5c85('0x54')]=getAuth(_0x98721c);return getUser(_0x98721c)[_0x5c85('0x17')](function(_0x449ab0){_0x143900=_0x449ab0;logger[_0x5c85('0x19')](_0x5c85('0x56'),_0x143900['id']);return getEndUser(_0x98721c,_0x34ab5d[_0x5c85('0x6d')],_0x34ab5d['calleridnum']);})[_0x5c85('0x17')](function(_0x5b5daf){_0x775f80=_0x5b5daf;logger[_0x5c85('0x19')]('The\x20Enduser\x20ID\x20is:',_0x775f80['id']);return getTicket(_0x98721c,_0x143900,_0x775f80,_0x3fd7b7,_0x34ab5d);})['then'](function(_0x209561){if(_0x209561){logger[_0x5c85('0x19')](_0x5c85('0x58'),_0x209561['id']);}})[_0x5c85('0x60')](function(_0x122d6a){logger[_0x5c85('0x61')]('['+_0x34ab5d['lastevent'][_0x5c85('0x6c')]()+']'+_0x5c85('0x6e'),util[_0x5c85('0x6f')](_0x122d6a,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 9e6a6a9..dfc09f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dc8=['recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','/api/voice/recordings/','zoho.eu','com','destcalleridname','destcalleridnum','Outbound','unmanaged','toUpperCase','request-promise','md5','./util','moment','ioredis','../../../../config/environment','../../../../config/logger','zoho','defaults','redis','localhost','socket.io-emitter','debug','stringify','forEach','includes','string','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientId','clientSecret','refresh_token','then','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','info','Agent\x20found!','Administrator','user','profile','Using\x20the\x20admin\x20account!','The\x20failing\x20result\x20is','data','enduserType','moduleCreate','role','first_name','last_name','SUCCESS','details','startCase','Error:\x20','log','moduleSearch','contact_lead','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','Leads','contact','Contacts','nothing','lead','/crm/v2/Leads/search?criteria=((Phone:equals:','Creating\x20new\x20call...','administrator','Subject','getString','Descriptions','Full_Name','First_Name','What_Id','Last_Name','talktime','Call_Duration','answertime','endtime','utc','YYYY-MM-DDTHH:mm:ss','diff','starttime','mm:ss','lastevent','called','Call_Result','Called','connect','Answered','rejected','abandoned','Abandoned','timeout','Timeout','outbound','agentcalledAt','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','Call\x20created!','err','queue','stripTrailingSlash','host','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','/downloads?type=uniqueid&token='];(function(_0x3c8b0b,_0x2712df){var _0x58e5a5=function(_0x3fc1b9){while(--_0x3fc1b9){_0x3c8b0b['push'](_0x3c8b0b['shift']());}};_0x58e5a5(++_0x2712df);}(_0x3dc8,0x148));var _0x83dc=function(_0x1927e0,_0x22e246){_0x1927e0=_0x1927e0-0x0;var _0x290094=_0x3dc8[_0x1927e0];return _0x290094;};'use strict';var _=require('lodash');var rp=require(_0x83dc('0x0'));var md5=require(_0x83dc('0x1'));var util=require('util');var intUtil=require(_0x83dc('0x2'));var moment=require(_0x83dc('0x3'));var Redis=require(_0x83dc('0x4'));var BPromise=require('bluebird');var config=require(_0x83dc('0x5'));var logger=require(_0x83dc('0x6'))(_0x83dc('0x7'));config['redis']=_[_0x83dc('0x8')](config[_0x83dc('0x9')],{'host':_0x83dc('0xa'),'port':0x18eb});var io=require(_0x83dc('0xb'))(new Redis(config['redis']));function emit(_0x5962f2,_0xe237f7,_0x17f885){io['to'](_0x5962f2)['emit'](_0xe237f7,_0x17f885);}function request(_0x8c626a){logger[_0x83dc('0xc')]('[HTTP]',JSON[_0x83dc('0xd')](_0x8c626a));return rp(_0x8c626a);}function getCustomFields(_0x3fdaa6,_0x364049){var _0x3d5faa={};if(_0x3fdaa6['length']>0x0){_[_0x83dc('0xe')](_0x3fdaa6,function(_0x5a25c3){if(_[_0x83dc('0xf')]([_0x83dc('0x10'),_0x83dc('0x11')],_0x5a25c3['type'])&&_0x5a25c3[_0x83dc('0x12')]){_0x3d5faa[_0x5a25c3[_0x83dc('0x12')]]=_0x5a25c3[_0x83dc('0x13')][_0x83dc('0x14')]();}else if(_0x5a25c3['type']===_0x83dc('0x15')&&_0x5a25c3[_0x83dc('0x16')]&&_0x5a25c3['idField']&&_0x364049[_0x5a25c3['variableName']]){_0x3d5faa[_0x5a25c3['idField']]=_0x364049[_0x5a25c3['variableName']]['toString']();}else if(_0x5a25c3['type']===_0x83dc('0x17')&&_0x5a25c3[_0x83dc('0x18')]&&_0x5a25c3[_0x83dc('0x18')][_0x83dc('0x19')]&&_0x5a25c3[_0x83dc('0x12')]&&_0x364049[_0x5a25c3[_0x83dc('0x18')]['name'][_0x83dc('0x1a')]()]){_0x3d5faa[_0x5a25c3[_0x83dc('0x12')]]=_0x364049[_0x5a25c3[_0x83dc('0x18')]['name'][_0x83dc('0x1a')]()]['toString']();}});}return _0x3d5faa;}function getName(_0x211652){if(_0x211652[_0x83dc('0x1b')]('\x20')>0x0){var _0x92950d=_0x211652[_0x83dc('0x1c')](/ (.+)/);if(_0x92950d[0x1]){return _0x92950d;}}return[_0x211652,_0x211652];}var accountsTokens={};function getAccessToken(_0x90d42b){return new Promise(function(_0xd122f4,_0x40cdf4){if(!_[_0x83dc('0x1d')](accountsTokens[_0x90d42b['id']])&&!_['isNil'](accountsTokens[_0x90d42b['id']][_0x83dc('0x1e')])){if(moment()[_0x83dc('0x1f')](accountsTokens[_0x90d42b['id']][_0x83dc('0x20')])){_0xd122f4(accountsTokens[_0x90d42b['id']][_0x83dc('0x1e')]);}}var _0x206200;switch(_0x90d42b['zone']){case'US':_0x206200=_0x83dc('0x21');break;case'AU':_0x206200=_0x83dc('0x22');break;case'EU':_0x206200=_0x83dc('0x23');break;case'IN':_0x206200='https://accounts.zoho.in';break;case'CN':_0x206200=_0x83dc('0x24');break;default:_0x206200=_0x83dc('0x23');break;}var _0x350201={'method':_0x83dc('0x25'),'uri':_0x206200+_0x83dc('0x26'),'qs':{'refresh_token':_0x90d42b['refreshToken'],'client_id':_0x90d42b[_0x83dc('0x27')],'client_secret':_0x90d42b[_0x83dc('0x28')],'grant_type':_0x83dc('0x29')},'json':!![]};return rp(_0x350201)[_0x83dc('0x2a')](function(_0x576672){accountsTokens[_0x90d42b['id']]={'access_token':_0x576672[_0x83dc('0x1e')],'expires_in':moment()[_0x83dc('0x2b')](_0x576672[_0x83dc('0x20')],_0x83dc('0x2c'))};_0xd122f4(_0x576672[_0x83dc('0x1e')]);})[_0x83dc('0x2d')](function(_0x29f7b8){logger[_0x83dc('0x2e')](_0x83dc('0x2f'),_0x29f7b8[_0x83dc('0x30')]);_0x40cdf4(_0x29f7b8);});});}function getUser(_0x1a71a5,_0x2a7c85,_0x9be13d,_0x2a73ee){logger['info']('Search\x20user');return request({'method':_0x83dc('0x31'),'uri':util[_0x83dc('0x32')](_0x83dc('0x33'),_0x2a7c85),'qs':{'type':_0x83dc('0x34')},'headers':{'Authorization':_0x83dc('0x35')+_0x1a71a5},'json':!![]})[_0x83dc('0x2a')](function(_0x19257d){if(_0x19257d[_0x83dc('0x36')]){var _0x1150db=-0x1;if(_[_0x83dc('0x37')](_0x19257d[_0x83dc('0x36')])){if(!_[_0x83dc('0x1d')](_0x2a73ee)){_0x1150db=_[_0x83dc('0x38')](_0x19257d['users'],function(_0x2f8110){return _0x2f8110[_0x83dc('0x39')]===_0x2a73ee;});}if(_0x1150db>=0x0){logger[_0x83dc('0x3a')](_0x83dc('0x3b'));}else{logger[_0x83dc('0x3a')]('Using\x20the\x20admin\x20account!');_0x1150db=_['findIndex'](_0x19257d['users'],function(_0x1021ad){return _0x1021ad['profile'][_0x83dc('0x19')]===_0x83dc('0x3c');});}return _0x19257d[_0x83dc('0x36')][_0x1150db];}else{if(_0x19257d[_0x83dc('0x3d')][_0x83dc('0x3e')][_0x83dc('0x19')]===_0x83dc('0x3c')){logger[_0x83dc('0x3a')](_0x83dc('0x3f'));user=_0x19257d[_0x83dc('0x3d')];return user;}else{logger[_0x83dc('0x2e')](_0x83dc('0x40'),JSON[_0x83dc('0xd')](_0x19257d));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x83dc('0xd')](_0x19257d));}}}else{logger[_0x83dc('0x2e')](_0x83dc('0x40'),JSON[_0x83dc('0xd')](_0x19257d));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x83dc('0xd')](_0x19257d));}})['catch'](function(_0x3e00e8){console[_0x83dc('0x2e')](_0x3e00e8);});}function getZohoUser(_0x1ca216,_0x4ffda4){return new BPromise(function(_0x4bb611,_0x4b8897){request(_0x1ca216)[_0x83dc('0x2a')](function(_0xfc0840){var _0x4d9f98=null;if(_0xfc0840){_0x4d9f98=_0xfc0840[_0x83dc('0x41')][0x0];_0x4d9f98[_0x83dc('0x42')]=_0x4ffda4;}_0x4bb611(_0x4d9f98);})['catch'](function(_0x4892fd){_0x4b8897(_0x4892fd);});});}function createEndUser(_0x1c1d10,_0x4ae190,_0x2967ee,_0x287002,_0x37ce0a,_0x2234c4){var _0x2967ee=getName(_0x2967ee);return request({'method':_0x83dc('0x25'),'uri':'https://www.zohoapis.'+_0x4ae190+'/crm/v2/'+_['startCase'](_0x2234c4[_0x83dc('0x43')])+'s','body':{'data':[{'Last_Name':_0x2967ee[0x1],'First_Name':_0x2967ee[0x0],'Phone':_0x287002,'Owner':{'name':!_[_0x83dc('0x1d')](_0x37ce0a[_0x83dc('0x44')][_0x83dc('0x19')])?_0x37ce0a[_0x83dc('0x44')][_0x83dc('0x19')]:!_[_0x83dc('0x1d')](_0x37ce0a[_0x83dc('0x45')])?_0x37ce0a[_0x83dc('0x45')]+'\x20'+_0x37ce0a[_0x83dc('0x46')]:_0x37ce0a['last_name'],'id':_0x37ce0a['id']}}]},'headers':{'Authorization':_0x83dc('0x35')+_0x1c1d10},'json':!![]})[_0x83dc('0x2a')](function(_0x58eb1a){if(_0x58eb1a&&_0x58eb1a['data'][0x0]['code']===_0x83dc('0x47')){var _0x3dab0f=_0x58eb1a['data'][0x0][_0x83dc('0x48')];_0x3dab0f[_0x83dc('0x42')]=_[_0x83dc('0x49')](_0x2234c4[_0x83dc('0x43')])+'s';return _0x3dab0f;}logger[_0x83dc('0x2e')](_0x83dc('0x40'),JSON[_0x83dc('0xd')](data));throw new Error(_0x83dc('0x4a')+JSON['stringify'](data));})['catch'](function(_0x2f49a0){console[_0x83dc('0x4b')]('CREATE\x20ERROR',_0x2f49a0);});}function getEndUser(_0x21d288,_0x5b6b9d,_0x953cdc,_0x1b1f3f,_0x1c41c3,_0x4e0672,_0x2dfb15){var _0x338cb5={'method':_0x83dc('0x31'),'uri':'','headers':{'Authorization':_0x83dc('0x35')+_0x21d288},'json':!![]};switch(_0x2dfb15[_0x83dc('0x4c')]){case _0x83dc('0x4d'):_0x338cb5[_0x83dc('0x4e')]=_0x83dc('0x4f')+_0x5b6b9d+_0x83dc('0x50')+_0x1c41c3+'))';return getZohoUser(_0x338cb5,'Contacts')[_0x83dc('0x2a')](function(_0x1e95be){if(_0x1e95be)return _0x1e95be;_0x338cb5[_0x83dc('0x4e')]='https://www.zohoapis.'+_0x5b6b9d+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x1c41c3+'))';return getZohoUser(_0x338cb5,_0x83dc('0x51'))['then'](function(_0x3ccb51){if(_0x3ccb51)return _0x3ccb51;if(_0x2dfb15[_0x83dc('0x43')]!='nothing'){return createEndUser(_0x21d288,_0x5b6b9d,_0x1b1f3f,_0x1c41c3,_0x4e0672,_0x2dfb15);}else{return{};}});});break;case _0x83dc('0x52'):_0x338cb5[_0x83dc('0x4e')]=_0x83dc('0x4f')+_0x5b6b9d+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x1c41c3+'))';return getZohoUser(_0x338cb5,_0x83dc('0x53'))['then'](function(_0x571fdb){if(_0x571fdb)return _0x571fdb;if(_0x2dfb15[_0x83dc('0x43')]!=_0x83dc('0x54')){return createEndUser(_0x21d288,_0x5b6b9d,_0x1b1f3f,_0x1c41c3,_0x4e0672,_0x2dfb15);}else{return{};}});break;case _0x83dc('0x55'):_0x338cb5[_0x83dc('0x4e')]=_0x83dc('0x4f')+_0x5b6b9d+_0x83dc('0x56')+_0x1c41c3+'))';return getZohoUser(_0x338cb5,_0x83dc('0x51'))[_0x83dc('0x2a')](function(_0x17bb07){if(_0x17bb07)return _0x17bb07;if(_0x2dfb15[_0x83dc('0x43')]!=_0x83dc('0x54')){return createEndUser(_0x21d288,_0x5b6b9d,_0x1b1f3f,_0x1c41c3,_0x4e0672,_0x2dfb15);}else{return{};}});break;}}function getCall(_0x3f36bc,_0x56dd53,_0x4d5bb6,_0x58732d,_0x56421f,_0x7dd286,_0x167229,_0x74deab){logger[_0x83dc('0x3a')](_0x83dc('0x57'));var _0x18f5cb={};_0x18f5cb['Owner']={'name':!_[_0x83dc('0x1d')](_0x58732d['role'][_0x83dc('0x19')])&&!_[_0x83dc('0x1d')](_0x58732d['profile']['name'])&&_0x58732d[_0x83dc('0x3e')][_0x83dc('0x19')]===_0x83dc('0x58')?_0x58732d[_0x83dc('0x44')][_0x83dc('0x19')]:!_[_0x83dc('0x1d')](_0x58732d[_0x83dc('0x45')])?_0x58732d[_0x83dc('0x45')]+'\x20'+_0x58732d[_0x83dc('0x46')]:_0x58732d['last_name'],'id':_0x58732d['id']};_0x18f5cb[_0x83dc('0x59')]=intUtil[_0x83dc('0x5a')](_0x7dd286['Subjects'],_0x167229,'\x20');_0x18f5cb['Description']=intUtil['getString'](_0x7dd286[_0x83dc('0x5b')],_0x167229,'\x0a');if(_0x56421f[_0x83dc('0x42')]===_0x83dc('0x53')){_0x18f5cb['Who_Id']={'name':!_[_0x83dc('0x1d')](_0x56421f[_0x83dc('0x5c')])?_0x56421f[_0x83dc('0x5c')]:!_[_0x83dc('0x1d')](_0x56421f[_0x83dc('0x5d')])?_0x56421f[_0x83dc('0x5d')]+'\x20'+_0x56421f['Last_Name']:_0x56421f['Last_Name'],'id':_0x56421f['id']};}if(_0x56421f[_0x83dc('0x42')]===_0x83dc('0x51')){_0x18f5cb[_0x83dc('0x5e')]={'name':!_['isNil'](_0x56421f[_0x83dc('0x5c')])?_0x56421f[_0x83dc('0x5c')]:!_[_0x83dc('0x1d')](_0x56421f[_0x83dc('0x5d')])?_0x56421f['First_Name']+'\x20'+_0x56421f[_0x83dc('0x5f')]:_0x56421f['Last_Name'],'id':_0x56421f['id']};_0x18f5cb['$se_module']=_[_0x83dc('0x49')](_0x56421f['enduserType']);}if(_0x167229[_0x83dc('0x60')]){_0x18f5cb[_0x83dc('0x61')]=moment['utc'](parseInt(_0x167229['talktime'])*0x3e8)[_0x83dc('0x32')]('mm:ss');}else if(_0x167229[_0x83dc('0x62')]&&_0x167229[_0x83dc('0x63')]){_0x18f5cb['Call_Duration']=moment[_0x83dc('0x64')](moment(_0x167229['endtime'],_0x83dc('0x65'))[_0x83dc('0x66')](moment(_0x167229[_0x83dc('0x67')],'YYYY-MM-DDTHH:mm:ss')))[_0x83dc('0x32')](_0x83dc('0x68'));}switch(_0x167229[_0x83dc('0x69')]){case _0x83dc('0x6a'):_0x18f5cb[_0x83dc('0x6b')]=_0x83dc('0x6c');break;case'complete':case _0x83dc('0x6d'):_0x18f5cb[_0x83dc('0x6b')]=_0x83dc('0x6e');break;case _0x83dc('0x6f'):_0x18f5cb['Call_Result']='Rejected';break;case _0x83dc('0x70'):_0x18f5cb['Call_Result']=_0x83dc('0x71');break;case _0x83dc('0x72'):_0x18f5cb[_0x83dc('0x6b')]=_0x83dc('0x73');default:}_0x18f5cb['Call_Start_Time']=(_0x74deab===_0x83dc('0x74')?moment(_0x167229[_0x83dc('0x67')])['format']('YYYY-MM-DDTHH:mm:ss'):moment(_0x167229[_0x83dc('0x75')])[_0x83dc('0x32')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x83dc('0x32')](_0x83dc('0x65'));_0x18f5cb[_0x83dc('0x76')]=_0x74deab||_0x83dc('0x77');_0x18f5cb=_[_0x83dc('0x78')](_0x18f5cb,getCustomFields(_0x7dd286[_0x83dc('0x79')],_0x167229));return request({'method':_0x83dc('0x25'),'uri':_0x83dc('0x4f')+_0x56dd53+_0x83dc('0x7a'),'headers':{'Authorization':_0x83dc('0x35')+_0x3f36bc},'body':{'data':[_0x18f5cb]},'json':!![]})['then'](function(_0x3ca2dc){if(_0x3ca2dc&&_0x3ca2dc[_0x83dc('0x41')][0x0]['code']===_0x83dc('0x47')){logger['info'](_0x83dc('0x7b'));return{'id':_0x3ca2dc['data'][0x0][_0x83dc('0x48')]['id']};}})['catch'](function(_0x5ce958){logger[_0x83dc('0x3a')](_0x83dc('0x7c'),_0x5ce958[_0x83dc('0x30')]);console[_0x83dc('0x4b')](_0x83dc('0x7c'),_0x5ce958);});}exports[_0x83dc('0x7d')]=function(_0x102bc9,_0x2f8ae6,_0x1579cb,_0x145b00,_0x59ddeb,_0x1aea38){var _0x39c8f0,_0x2b1de8,_0x72c398;_0x1aea38['host']=intUtil[_0x83dc('0x7e')](_0x1aea38[_0x83dc('0x7f')]);_0x1aea38[_0x83dc('0x80')]=intUtil['stripTrailingSlash'](_0x1aea38[_0x83dc('0x80')]);if(_0x59ddeb&&_0x59ddeb[_0x83dc('0x81')]){logger[_0x83dc('0x3a')](_0x83dc('0x82'),_0x83dc('0x83'));_0x2f8ae6['recordingURL']=_0x1aea38['serverUrl']+'/api/voice/recordings/'+_0x2f8ae6[_0x83dc('0x84')]+_0x83dc('0x85')+md5(_0x2f8ae6[_0x83dc('0x84')]);}else{_0x2f8ae6[_0x83dc('0x86')]='';}var _0x2808b6=_0x1aea38[_0x83dc('0x7f')]==='zoho.eu'?'eu':'com';return getAccessToken(_0x1aea38)['then'](function(_0x16380b){_0x72c398=_0x16380b;return getUser(_0x72c398,_0x2808b6,_0x1aea38,_0x145b00['email']);})['then'](function(_0x190cce){_0x39c8f0=_0x190cce;logger[_0x83dc('0x3a')](_0x83dc('0x87'),_0x39c8f0['id']);return getEndUser(_0x72c398,_0x2808b6,_0x1aea38,_0x2f8ae6['calleridname'],_0x2f8ae6[_0x83dc('0x88')],_0x39c8f0,_0x1579cb);})[_0x83dc('0x2a')](function(_0x595094){_0x2b1de8=_0x595094;return getCall(_0x72c398,_0x2808b6,_0x1aea38,_0x39c8f0,_0x2b1de8,_0x1579cb,_0x2f8ae6,_0x83dc('0x77'));})['then'](function(_0x2088e5){if(_0x2088e5){logger[_0x83dc('0x3a')](_0x83dc('0x89'),_0x2088e5['id']);logger[_0x83dc('0x3a')](_0x83dc('0x82'),_0x83dc('0x8a'));emit(util['format'](_0x83dc('0x8b'),_0x145b00['name']),_0x83dc('0x8c'),{'uri':_0x83dc('0x8d')+_0x1aea38[_0x83dc('0x7f')]+_0x83dc('0x8e')+_0x2088e5['id']});}})[_0x83dc('0x2d')](function(_0x507fc3){logger[_0x83dc('0x2e')]('[QUEUE]',JSON[_0x83dc('0xd')](_0x507fc3));});};exports[_0x83dc('0x74')]=function(_0x348167,_0x4137d4,_0x46c39a,_0x32bd9e,_0x620268,_0x56ae60,_0x55a311){var _0x29f1a1,_0x5601dc,_0x1a959e;_0x56ae60[_0x83dc('0x7f')]=intUtil[_0x83dc('0x7e')](_0x56ae60[_0x83dc('0x7f')]);_0x56ae60['serverUrl']=intUtil['stripTrailingSlash'](_0x56ae60[_0x83dc('0x80')]);if(_0x55a311&&_0x55a311['recordingFormat']&&_0x55a311[_0x83dc('0x8f')]!==_0x83dc('0x90')){logger['info'](_0x83dc('0x91'),_0x83dc('0x83'));_0x4137d4[_0x83dc('0x86')]=_0x56ae60[_0x83dc('0x80')]+_0x83dc('0x92')+_0x4137d4['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x4137d4[_0x83dc('0x84')]);}var _0x3b7e15=_0x56ae60[_0x83dc('0x7f')]===_0x83dc('0x93')?'eu':_0x83dc('0x94');return getAccessToken(_0x56ae60)['then'](function(_0x5a4ae8){_0x1a959e=_0x5a4ae8;return getUser(_0x1a959e,_0x3b7e15,_0x56ae60,_0x32bd9e[_0x83dc('0x39')]);})[_0x83dc('0x2a')](function(_0x4c8029){_0x29f1a1=_0x4c8029;logger[_0x83dc('0x3a')]('The\x20User\x20ID\x20is:',_0x29f1a1['id']);return getEndUser(_0x1a959e,_0x3b7e15,_0x56ae60,_0x4137d4[_0x83dc('0x95')],_0x4137d4[_0x83dc('0x96')],_0x29f1a1,_0x46c39a);})[_0x83dc('0x2a')](function(_0x44cc8a){_0x5601dc=_0x44cc8a;return getCall(_0x1a959e,_0x3b7e15,_0x56ae60,_0x29f1a1,_0x5601dc,_0x46c39a,_0x4137d4,_0x83dc('0x97'));})[_0x83dc('0x2a')](function(_0x33f662){if(_0x33f662){logger[_0x83dc('0x3a')]('The\x20Call\x20ID\x20is:',_0x33f662['id']);logger[_0x83dc('0x3a')](_0x83dc('0x91'),_0x83dc('0x8a'));emit(util[_0x83dc('0x32')](_0x83dc('0x8b'),_0x32bd9e[_0x83dc('0x19')]),_0x83dc('0x8c'),{'uri':_0x83dc('0x8d')+_0x56ae60['host']+'/crm/EntityInfo.do?module=Calls&id='+_0x33f662['id']});}})['catch'](function(_0x43632d){logger[_0x83dc('0x2e')]('[OUTBOUND]',JSON[_0x83dc('0xd')](_0x43632d));});};exports[_0x83dc('0x98')]=function(_0x474252,_0x54ec9b,_0x1ac527,_0x2de14c,_0x22f23b,_0x1f7e27){var _0x3ffb44,_0x45381a,_0x2f88aa;_0x1f7e27[_0x83dc('0x7f')]=intUtil[_0x83dc('0x7e')](_0x1f7e27['host']);_0x1f7e27[_0x83dc('0x80')]=intUtil[_0x83dc('0x7e')](_0x1f7e27[_0x83dc('0x80')]);if(_0x22f23b&&_0x22f23b[_0x83dc('0x81')]){logger[_0x83dc('0x3a')]('['+_0x54ec9b[_0x83dc('0x69')][_0x83dc('0x99')]()+']',_0x83dc('0x83'));_0x54ec9b[_0x83dc('0x86')]=_0x1f7e27[_0x83dc('0x80')]+'/api/voice/recordings/'+_0x54ec9b[_0x83dc('0x84')]+'/downloads?type=uniqueid&token='+md5(_0x54ec9b[_0x83dc('0x84')]);}else{_0x54ec9b[_0x83dc('0x86')]='';}var _0x34b4de=_0x1f7e27[_0x83dc('0x7f')]==='zoho.eu'?'eu':'com';return getAccessToken(_0x1f7e27)[_0x83dc('0x2a')](function(_0x5577d7){_0x2f88aa=_0x5577d7;return getUser(_0x2f88aa,_0x34b4de,_0x1f7e27);})[_0x83dc('0x2a')](function(_0x5b6bc4){_0x3ffb44=_0x5b6bc4;logger[_0x83dc('0x3a')](_0x83dc('0x87'),_0x3ffb44['id']);return getEndUser(_0x2f88aa,_0x34b4de,_0x1f7e27,_0x54ec9b['calleridname'],_0x54ec9b[_0x83dc('0x88')],_0x3ffb44,_0x1ac527);})[_0x83dc('0x2a')](function(_0x426660){_0x45381a=_0x426660;return getCall(_0x2f88aa,_0x34b4de,_0x1f7e27,_0x3ffb44,_0x45381a,_0x1ac527,_0x54ec9b,_0x83dc('0x77'));})['then'](function(_0x1571da){if(_0x1571da){logger[_0x83dc('0x3a')](_0x83dc('0x89'),_0x1571da['id']);}})['catch'](function(_0x40e5f7){logger[_0x83dc('0x2e')]('['+_0x54ec9b[_0x83dc('0x69')][_0x83dc('0x99')]()+']',JSON[_0x83dc('0xd')](_0x40e5f7));});};
\ No newline at end of file
+var _0x6315=['https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','data','details','Error:\x20','log','CREATE\x20ERROR','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','Leads','nothing','contact','lead','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Description','Descriptions','Full_Name','First_Name','Last_Name','$se_module','talktime','utc','endtime','Call_Duration','YYYY-MM-DDTHH:mm:ss','starttime','mm:ss','lastevent','called','Call_Result','Called','Answered','rejected','Rejected','abandoned','Abandoned','timeout','Timeout','Call_Start_Time','agentcalledAt','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','SUCCESS','Call\x20created!','err','stack','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','outbound','recordingFormat','[OUTBOUND]','/api/voice/recordings/','destcalleridname','destcalleridnum','Outbound','The\x20Call\x20ID\x20is:','toUpperCase','calleridnum','request-promise','util','./util','moment','bluebird','../../../../config/environment','zoho','redis','localhost','socket.io-emitter','debug','[HTTP]','stringify','length','picklist','type','toString','variable','idField','variableName','Variable','name','toLowerCase','indexOf','isNil','access_token','isBefore','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientId','clientSecret','refresh_token','then','add','expires_in','seconds','catch','error','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','users','isArrayLikeObject','email','info','Using\x20the\x20admin\x20account!','findIndex','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','enduserType'];(function(_0x361bb2,_0x23d8a7){var _0x28b85a=function(_0x2155b3){while(--_0x2155b3){_0x361bb2['push'](_0x361bb2['shift']());}};_0x28b85a(++_0x23d8a7);}(_0x6315,0x185));var _0x5631=function(_0x5021f0,_0xd1f75e){_0x5021f0=_0x5021f0-0x0;var _0x57e099=_0x6315[_0x5021f0];return _0x57e099;};'use strict';var _=require('lodash');var rp=require(_0x5631('0x0'));var md5=require('md5');var util=require(_0x5631('0x1'));var intUtil=require(_0x5631('0x2'));var moment=require(_0x5631('0x3'));var Redis=require('ioredis');var BPromise=require(_0x5631('0x4'));var config=require(_0x5631('0x5'));var logger=require('../../../../config/logger')(_0x5631('0x6'));config['redis']=_['defaults'](config[_0x5631('0x7')],{'host':_0x5631('0x8'),'port':0x18eb});var io=require(_0x5631('0x9'))(new Redis(config['redis']));function emit(_0x192fe3,_0x28b4d6,_0x45c9c5){io['to'](_0x192fe3)['emit'](_0x28b4d6,_0x45c9c5);}function request(_0x336627){logger[_0x5631('0xa')](_0x5631('0xb'),JSON[_0x5631('0xc')](_0x336627));return rp(_0x336627);}function getCustomFields(_0x1df229,_0xcbadf1){var _0x54c127={};if(_0x1df229[_0x5631('0xd')]>0x0){_['forEach'](_0x1df229,function(_0x34e6a9){if(_['includes'](['string',_0x5631('0xe')],_0x34e6a9[_0x5631('0xf')])&&_0x34e6a9['idField']){_0x54c127[_0x34e6a9['idField']]=_0x34e6a9['content'][_0x5631('0x10')]();}else if(_0x34e6a9[_0x5631('0xf')]===_0x5631('0x11')&&_0x34e6a9['variableName']&&_0x34e6a9[_0x5631('0x12')]&&_0xcbadf1[_0x34e6a9[_0x5631('0x13')]]){_0x54c127[_0x34e6a9[_0x5631('0x12')]]=_0xcbadf1[_0x34e6a9[_0x5631('0x13')]][_0x5631('0x10')]();}else if(_0x34e6a9[_0x5631('0xf')]==='customVariable'&&_0x34e6a9['Variable']&&_0x34e6a9[_0x5631('0x14')]['name']&&_0x34e6a9[_0x5631('0x12')]&&_0xcbadf1[_0x34e6a9['Variable'][_0x5631('0x15')][_0x5631('0x16')]()]){_0x54c127[_0x34e6a9[_0x5631('0x12')]]=_0xcbadf1[_0x34e6a9[_0x5631('0x14')][_0x5631('0x15')][_0x5631('0x16')]()]['toString']();}});}return _0x54c127;}function getName(_0x54aeb9){if(_0x54aeb9[_0x5631('0x17')]('\x20')>0x0){var _0x3b2e1d=_0x54aeb9['split'](/ (.+)/);if(_0x3b2e1d[0x1]){return _0x3b2e1d;}}return[_0x54aeb9,_0x54aeb9];}var accountsTokens={};function getAccessToken(_0x51765d){return new Promise(function(_0x57b488,_0x49dec1){if(!_[_0x5631('0x18')](accountsTokens[_0x51765d['id']])&&!_[_0x5631('0x18')](accountsTokens[_0x51765d['id']][_0x5631('0x19')])){if(moment()[_0x5631('0x1a')](accountsTokens[_0x51765d['id']]['expires_in'])){_0x57b488(accountsTokens[_0x51765d['id']][_0x5631('0x19')]);}}var _0x4d78eb;switch(_0x51765d[_0x5631('0x1b')]){case'US':_0x4d78eb=_0x5631('0x1c');break;case'AU':_0x4d78eb=_0x5631('0x1d');break;case'EU':_0x4d78eb=_0x5631('0x1e');break;case'IN':_0x4d78eb=_0x5631('0x1f');break;case'CN':_0x4d78eb=_0x5631('0x20');break;default:_0x4d78eb='https://accounts.zoho.eu';break;}var _0x7d073b={'method':_0x5631('0x21'),'uri':_0x4d78eb+'/oauth/v2/token','qs':{'refresh_token':_0x51765d[_0x5631('0x22')],'client_id':_0x51765d[_0x5631('0x23')],'client_secret':_0x51765d[_0x5631('0x24')],'grant_type':_0x5631('0x25')},'json':!![]};return rp(_0x7d073b)[_0x5631('0x26')](function(_0x58a193){accountsTokens[_0x51765d['id']]={'access_token':_0x58a193[_0x5631('0x19')],'expires_in':moment()[_0x5631('0x27')](_0x58a193[_0x5631('0x28')],_0x5631('0x29'))};_0x57b488(_0x58a193[_0x5631('0x19')]);})[_0x5631('0x2a')](function(_0x346e4a){logger[_0x5631('0x2b')]('Failing\x20creating\x20the\x20access_token',_0x346e4a['stack']);_0x49dec1(_0x346e4a);});});}function getUser(_0x5e2722,_0x58cb7b,_0x295b35,_0x144d9c){logger['info'](_0x5631('0x2c'));return request({'method':_0x5631('0x2d'),'uri':util[_0x5631('0x2e')](_0x5631('0x2f'),_0x58cb7b),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x5631('0x30')+_0x5e2722},'json':!![]})['then'](function(_0x9d6f3e){if(_0x9d6f3e[_0x5631('0x31')]){var _0x838311=-0x1;if(_[_0x5631('0x32')](_0x9d6f3e[_0x5631('0x31')])){if(!_[_0x5631('0x18')](_0x144d9c)){_0x838311=_['findIndex'](_0x9d6f3e[_0x5631('0x31')],function(_0x52c23){return _0x52c23[_0x5631('0x33')]===_0x144d9c;});}if(_0x838311>=0x0){logger[_0x5631('0x34')]('Agent\x20found!');}else{logger['info'](_0x5631('0x35'));_0x838311=_[_0x5631('0x36')](_0x9d6f3e[_0x5631('0x31')],function(_0x5b85b1){return _0x5b85b1[_0x5631('0x37')][_0x5631('0x15')]===_0x5631('0x38');});}return _0x9d6f3e[_0x5631('0x31')][_0x838311];}else{if(_0x9d6f3e[_0x5631('0x39')]['profile'][_0x5631('0x15')]===_0x5631('0x38')){logger[_0x5631('0x34')]('Using\x20the\x20admin\x20account!');user=_0x9d6f3e[_0x5631('0x39')];return user;}else{logger['error'](_0x5631('0x3a'),JSON[_0x5631('0xc')](_0x9d6f3e));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x5631('0xc')](_0x9d6f3e));}}}else{logger[_0x5631('0x2b')]('The\x20failing\x20result\x20is',JSON[_0x5631('0xc')](_0x9d6f3e));throw new Error(_0x5631('0x3b')+JSON[_0x5631('0xc')](_0x9d6f3e));}})['catch'](function(_0xa030f){console[_0x5631('0x2b')](_0xa030f);});}function getZohoUser(_0x475bb1,_0x3f11c3){return new BPromise(function(_0x3f9378,_0x282499){request(_0x475bb1)[_0x5631('0x26')](function(_0x478312){var _0x50f5f9=null;if(_0x478312){_0x50f5f9=_0x478312['data'][0x0];_0x50f5f9[_0x5631('0x3c')]=_0x3f11c3;}_0x3f9378(_0x50f5f9);})[_0x5631('0x2a')](function(_0x4801be){_0x282499(_0x4801be);});});}function createEndUser(_0x1dec65,_0x1359ac,_0x1f3ca4,_0x442e7e,_0x544c54,_0x47a16b){var _0x1f3ca4=getName(_0x1f3ca4);return request({'method':_0x5631('0x21'),'uri':_0x5631('0x3d')+_0x1359ac+_0x5631('0x3e')+_[_0x5631('0x3f')](_0x47a16b[_0x5631('0x40')])+'s','body':{'data':[{'Last_Name':_0x1f3ca4[0x1],'First_Name':_0x1f3ca4[0x0],'Phone':_0x442e7e,'Owner':{'name':!_[_0x5631('0x18')](_0x544c54['role'][_0x5631('0x15')])?_0x544c54[_0x5631('0x41')][_0x5631('0x15')]:!_['isNil'](_0x544c54['first_name'])?_0x544c54[_0x5631('0x42')]+'\x20'+_0x544c54[_0x5631('0x43')]:_0x544c54['last_name'],'id':_0x544c54['id']}}]},'headers':{'Authorization':_0x5631('0x30')+_0x1dec65},'json':!![]})[_0x5631('0x26')](function(_0x3d6c0c){if(_0x3d6c0c&&_0x3d6c0c['data'][0x0][_0x5631('0x44')]==='SUCCESS'){var _0x2d3b4c=_0x3d6c0c[_0x5631('0x45')][0x0][_0x5631('0x46')];_0x2d3b4c['enduserType']=_['startCase'](_0x47a16b[_0x5631('0x40')])+'s';return _0x2d3b4c;}logger[_0x5631('0x2b')]('The\x20failing\x20result\x20is',JSON[_0x5631('0xc')](data));throw new Error(_0x5631('0x47')+JSON[_0x5631('0xc')](data));})[_0x5631('0x2a')](function(_0x36b039){console[_0x5631('0x48')](_0x5631('0x49'),_0x36b039);});}function getEndUser(_0x2ca4ed,_0xd2e2f0,_0xcd7884,_0x19a04c,_0x1612de,_0x4b1ad9,_0x424357){var _0x3bc9a7={'method':_0x5631('0x2d'),'uri':'','headers':{'Authorization':_0x5631('0x30')+_0x2ca4ed},'json':!![]};switch(_0x424357['moduleSearch']){case'contact_lead':_0x3bc9a7[_0x5631('0x4a')]='https://www.zohoapis.'+_0xd2e2f0+_0x5631('0x4b')+_0x1612de+'))';return getZohoUser(_0x3bc9a7,_0x5631('0x4c'))[_0x5631('0x26')](function(_0x4ad55a){if(_0x4ad55a)return _0x4ad55a;_0x3bc9a7[_0x5631('0x4a')]=_0x5631('0x3d')+_0xd2e2f0+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x1612de+'))';return getZohoUser(_0x3bc9a7,_0x5631('0x4d'))[_0x5631('0x26')](function(_0x2516ef){if(_0x2516ef)return _0x2516ef;if(_0x424357['moduleCreate']!=_0x5631('0x4e')){return createEndUser(_0x2ca4ed,_0xd2e2f0,_0x19a04c,_0x1612de,_0x4b1ad9,_0x424357);}else{return{};}});});break;case _0x5631('0x4f'):_0x3bc9a7[_0x5631('0x4a')]='https://www.zohoapis.'+_0xd2e2f0+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x1612de+'))';return getZohoUser(_0x3bc9a7,_0x5631('0x4c'))[_0x5631('0x26')](function(_0x202b7d){if(_0x202b7d)return _0x202b7d;if(_0x424357[_0x5631('0x40')]!=_0x5631('0x4e')){return createEndUser(_0x2ca4ed,_0xd2e2f0,_0x19a04c,_0x1612de,_0x4b1ad9,_0x424357);}else{return{};}});break;case _0x5631('0x50'):_0x3bc9a7[_0x5631('0x4a')]='https://www.zohoapis.'+_0xd2e2f0+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x1612de+'))';return getZohoUser(_0x3bc9a7,'Leads')[_0x5631('0x26')](function(_0x422b2c){if(_0x422b2c)return _0x422b2c;if(_0x424357[_0x5631('0x40')]!='nothing'){return createEndUser(_0x2ca4ed,_0xd2e2f0,_0x19a04c,_0x1612de,_0x4b1ad9,_0x424357);}else{return{};}});break;}}function getCall(_0x5dbbe9,_0x591cf0,_0x1dd3c2,_0x1a71a4,_0x1cbaea,_0x250539,_0x238ba6,_0x15e1ef){logger[_0x5631('0x34')](_0x5631('0x51'));var _0x1970ac={};_0x1970ac[_0x5631('0x52')]={'name':!_[_0x5631('0x18')](_0x1a71a4[_0x5631('0x41')][_0x5631('0x15')])&&!_[_0x5631('0x18')](_0x1a71a4[_0x5631('0x37')]['name'])&&_0x1a71a4[_0x5631('0x37')][_0x5631('0x15')]===_0x5631('0x53')?_0x1a71a4[_0x5631('0x41')][_0x5631('0x15')]:!_[_0x5631('0x18')](_0x1a71a4[_0x5631('0x42')])?_0x1a71a4[_0x5631('0x42')]+'\x20'+_0x1a71a4[_0x5631('0x43')]:_0x1a71a4[_0x5631('0x43')],'id':_0x1a71a4['id']};_0x1970ac[_0x5631('0x54')]=intUtil[_0x5631('0x55')](_0x250539['Subjects'],_0x238ba6,'\x20');_0x1970ac[_0x5631('0x56')]=intUtil[_0x5631('0x55')](_0x250539[_0x5631('0x57')],_0x238ba6,'\x0a');if(_0x1cbaea['enduserType']==='Contacts'){_0x1970ac['Who_Id']={'name':!_['isNil'](_0x1cbaea[_0x5631('0x58')])?_0x1cbaea[_0x5631('0x58')]:!_['isNil'](_0x1cbaea['First_Name'])?_0x1cbaea[_0x5631('0x59')]+'\x20'+_0x1cbaea[_0x5631('0x5a')]:_0x1cbaea[_0x5631('0x5a')],'id':_0x1cbaea['id']};}if(_0x1cbaea['enduserType']===_0x5631('0x4d')){_0x1970ac['What_Id']={'name':!_[_0x5631('0x18')](_0x1cbaea['Full_Name'])?_0x1cbaea['Full_Name']:!_[_0x5631('0x18')](_0x1cbaea['First_Name'])?_0x1cbaea[_0x5631('0x59')]+'\x20'+_0x1cbaea[_0x5631('0x5a')]:_0x1cbaea[_0x5631('0x5a')],'id':_0x1cbaea['id']};_0x1970ac[_0x5631('0x5b')]=_[_0x5631('0x3f')](_0x1cbaea[_0x5631('0x3c')]);}if(_0x238ba6[_0x5631('0x5c')]){_0x1970ac['Call_Duration']=moment[_0x5631('0x5d')](parseInt(_0x238ba6[_0x5631('0x5c')])*0x3e8)[_0x5631('0x2e')]('mm:ss');}else if(_0x238ba6['answertime']&&_0x238ba6[_0x5631('0x5e')]){_0x1970ac[_0x5631('0x5f')]=moment[_0x5631('0x5d')](moment(_0x238ba6[_0x5631('0x5e')],_0x5631('0x60'))['diff'](moment(_0x238ba6[_0x5631('0x61')],_0x5631('0x60'))))['format'](_0x5631('0x62'));}switch(_0x238ba6[_0x5631('0x63')]){case _0x5631('0x64'):_0x1970ac[_0x5631('0x65')]=_0x5631('0x66');break;case'complete':case'connect':_0x1970ac['Call_Result']=_0x5631('0x67');break;case _0x5631('0x68'):_0x1970ac[_0x5631('0x65')]=_0x5631('0x69');break;case _0x5631('0x6a'):_0x1970ac[_0x5631('0x65')]=_0x5631('0x6b');break;case _0x5631('0x6c'):_0x1970ac['Call_Result']=_0x5631('0x6d');default:}_0x1970ac[_0x5631('0x6e')]=(_0x15e1ef==='outbound'?moment(_0x238ba6[_0x5631('0x61')])[_0x5631('0x2e')](_0x5631('0x60')):moment(_0x238ba6[_0x5631('0x6f')])[_0x5631('0x2e')](_0x5631('0x60')))||moment()[_0x5631('0x2e')]('YYYY-MM-DDTHH:mm:ss');_0x1970ac[_0x5631('0x70')]=_0x15e1ef||_0x5631('0x71');_0x1970ac=_[_0x5631('0x72')](_0x1970ac,getCustomFields(_0x250539[_0x5631('0x73')],_0x238ba6));return request({'method':_0x5631('0x21'),'uri':_0x5631('0x3d')+_0x591cf0+_0x5631('0x74'),'headers':{'Authorization':_0x5631('0x30')+_0x5dbbe9},'body':{'data':[_0x1970ac]},'json':!![]})['then'](function(_0x275461){if(_0x275461&&_0x275461[_0x5631('0x45')][0x0]['code']===_0x5631('0x75')){logger[_0x5631('0x34')](_0x5631('0x76'));return{'id':_0x275461[_0x5631('0x45')][0x0][_0x5631('0x46')]['id']};}})[_0x5631('0x2a')](function(_0x512f6b){logger[_0x5631('0x34')](_0x5631('0x77'),_0x512f6b[_0x5631('0x78')]);console[_0x5631('0x48')]('err',_0x512f6b);});}exports[_0x5631('0x79')]=function(_0x296c67,_0x518760,_0x137e77,_0x212973,_0x3d539c,_0x53b8cd){var _0x5b8c6e,_0x4bd2b7,_0x196108;_0x53b8cd[_0x5631('0x7a')]=intUtil[_0x5631('0x7b')](_0x53b8cd[_0x5631('0x7a')]);_0x53b8cd[_0x5631('0x7c')]=intUtil[_0x5631('0x7b')](_0x53b8cd[_0x5631('0x7c')]);if(_0x3d539c&&_0x3d539c[_0x5631('0x7d')]){logger[_0x5631('0x34')](_0x5631('0x7e'),_0x5631('0x7f'));_0x518760[_0x5631('0x80')]=_0x53b8cd[_0x5631('0x7c')]+'/api/voice/recordings/'+_0x518760[_0x5631('0x81')]+_0x5631('0x82')+md5(_0x518760[_0x5631('0x81')]);}else{_0x518760[_0x5631('0x80')]='';}var _0x3da00e=_0x53b8cd['host']===_0x5631('0x83')?'eu':_0x5631('0x84');return getAccessToken(_0x53b8cd)[_0x5631('0x26')](function(_0x1abe14){_0x196108=_0x1abe14;return getUser(_0x196108,_0x3da00e,_0x53b8cd,_0x212973[_0x5631('0x33')]);})[_0x5631('0x26')](function(_0x1b80bf){_0x5b8c6e=_0x1b80bf;logger[_0x5631('0x34')](_0x5631('0x85'),_0x5b8c6e['id']);return getEndUser(_0x196108,_0x3da00e,_0x53b8cd,_0x518760[_0x5631('0x86')],_0x518760['calleridnum'],_0x5b8c6e,_0x137e77);})['then'](function(_0x39c143){_0x4bd2b7=_0x39c143;return getCall(_0x196108,_0x3da00e,_0x53b8cd,_0x5b8c6e,_0x4bd2b7,_0x137e77,_0x518760,_0x5631('0x71'));})[_0x5631('0x26')](function(_0x183f37){if(_0x183f37){logger['info']('The\x20Call\x20ID\x20is:',_0x183f37['id']);logger[_0x5631('0x34')](_0x5631('0x7e'),_0x5631('0x87'));emit(util[_0x5631('0x2e')](_0x5631('0x88'),_0x212973['name']),_0x5631('0x89'),{'uri':_0x5631('0x8a')+_0x53b8cd['host']+_0x5631('0x8b')+_0x183f37['id']});}})['catch'](function(_0x1335b2){logger['error'](_0x5631('0x7e'),JSON[_0x5631('0xc')](_0x1335b2));});};exports[_0x5631('0x8c')]=function(_0x3e3081,_0x177183,_0x2612cc,_0x128d2a,_0x886875,_0x141617,_0x12cec3){var _0x2d9e06,_0x490c56,_0x409fa8;_0x141617[_0x5631('0x7a')]=intUtil[_0x5631('0x7b')](_0x141617[_0x5631('0x7a')]);_0x141617['serverUrl']=intUtil[_0x5631('0x7b')](_0x141617[_0x5631('0x7c')]);if(_0x12cec3&&_0x12cec3['recordingFormat']&&_0x12cec3[_0x5631('0x8d')]!=='none'){logger['info'](_0x5631('0x8e'),_0x5631('0x7f'));_0x177183[_0x5631('0x80')]=_0x141617[_0x5631('0x7c')]+_0x5631('0x8f')+_0x177183['uniqueid']+_0x5631('0x82')+md5(_0x177183['uniqueid']);}var _0x17e0fb=_0x141617[_0x5631('0x7a')]===_0x5631('0x83')?'eu':'com';return getAccessToken(_0x141617)[_0x5631('0x26')](function(_0xf3212a){_0x409fa8=_0xf3212a;return getUser(_0x409fa8,_0x17e0fb,_0x141617,_0x128d2a[_0x5631('0x33')]);})[_0x5631('0x26')](function(_0x5267f1){_0x2d9e06=_0x5267f1;logger[_0x5631('0x34')](_0x5631('0x85'),_0x2d9e06['id']);return getEndUser(_0x409fa8,_0x17e0fb,_0x141617,_0x177183[_0x5631('0x90')],_0x177183[_0x5631('0x91')],_0x2d9e06,_0x2612cc);})[_0x5631('0x26')](function(_0x33a260){_0x490c56=_0x33a260;return getCall(_0x409fa8,_0x17e0fb,_0x141617,_0x2d9e06,_0x490c56,_0x2612cc,_0x177183,_0x5631('0x92'));})[_0x5631('0x26')](function(_0x56e05f){if(_0x56e05f){logger[_0x5631('0x34')](_0x5631('0x93'),_0x56e05f['id']);logger[_0x5631('0x34')](_0x5631('0x8e'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x128d2a['name']),_0x5631('0x89'),{'uri':_0x5631('0x8a')+_0x141617[_0x5631('0x7a')]+_0x5631('0x8b')+_0x56e05f['id']});}})['catch'](function(_0x20e6cc){logger[_0x5631('0x2b')](_0x5631('0x8e'),JSON[_0x5631('0xc')](_0x20e6cc));});};exports['unmanaged']=function(_0x119cc5,_0x51fe9b,_0x4bfd19,_0x4cf39a,_0x3dfea0,_0x3542e3){var _0xd06f00,_0x5f4973,_0x2eebcd;_0x3542e3[_0x5631('0x7a')]=intUtil[_0x5631('0x7b')](_0x3542e3[_0x5631('0x7a')]);_0x3542e3[_0x5631('0x7c')]=intUtil[_0x5631('0x7b')](_0x3542e3[_0x5631('0x7c')]);if(_0x3dfea0&&_0x3dfea0[_0x5631('0x7d')]){logger[_0x5631('0x34')]('['+_0x51fe9b[_0x5631('0x63')][_0x5631('0x94')]()+']','Recording\x20is\x20enabled!');_0x51fe9b[_0x5631('0x80')]=_0x3542e3[_0x5631('0x7c')]+'/api/voice/recordings/'+_0x51fe9b[_0x5631('0x81')]+'/downloads?type=uniqueid&token='+md5(_0x51fe9b[_0x5631('0x81')]);}else{_0x51fe9b['recordingURL']='';}var _0x43a45e=_0x3542e3['host']==='zoho.eu'?'eu':'com';return getAccessToken(_0x3542e3)[_0x5631('0x26')](function(_0xf492ce){_0x2eebcd=_0xf492ce;return getUser(_0x2eebcd,_0x43a45e,_0x3542e3);})[_0x5631('0x26')](function(_0x3e656f){_0xd06f00=_0x3e656f;logger[_0x5631('0x34')](_0x5631('0x85'),_0xd06f00['id']);return getEndUser(_0x2eebcd,_0x43a45e,_0x3542e3,_0x51fe9b[_0x5631('0x86')],_0x51fe9b[_0x5631('0x95')],_0xd06f00,_0x4bfd19);})['then'](function(_0x2aed3f){_0x5f4973=_0x2aed3f;return getCall(_0x2eebcd,_0x43a45e,_0x3542e3,_0xd06f00,_0x5f4973,_0x4bfd19,_0x51fe9b,'Inbound');})[_0x5631('0x26')](function(_0x144dd5){if(_0x144dd5){logger[_0x5631('0x34')]('The\x20Call\x20ID\x20is:',_0x144dd5['id']);}})[_0x5631('0x2a')](function(_0x56911e){logger[_0x5631('0x2b')]('['+_0x51fe9b['lastevent'][_0x5631('0x94')]()+']',JSON['stringify'](_0x56911e));});};
\ No newline at end of file
index e02aaae..6b660b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf964=['trigger','exec','data2','Script','data3','render','format','info','util','shelljs','../../../../config/logger'];(function(_0x4c5013,_0x4198a1){var _0x2d1a74=function(_0x6dd2a){while(--_0x6dd2a){_0x4c5013['push'](_0x4c5013['shift']());}};_0x2d1a74(++_0x4198a1);}(_0xf964,0x194));var _0x4f96=function(_0x581c4a,_0x20ab18){_0x581c4a=_0x581c4a-0x0;var _0x19af22=_0xf964[_0x581c4a];return _0x19af22;};'use strict';var util=require(_0x4f96('0x0'));var sh=require(_0x4f96('0x1'));var Mustache=require('mustache');var logger=require(_0x4f96('0x2'))(_0x4f96('0x3'));exports[_0x4f96('0x4')]=function(_0x5d99dc,_0x3d8a9d){var _0x338b62=_0x5d99dc['data2']?_0x5d99dc[_0x4f96('0x5')]:_0x4f96('0x6');var _0x2cafa7=_0x5d99dc[_0x4f96('0x7')]?Mustache[_0x4f96('0x8')](_0x5d99dc[_0x4f96('0x7')],_0x3d8a9d):_0x3d8a9d;sh[_0x4f96('0x4')](_0x2cafa7,function(_0x254a45,_0x3f6379,_0x66c3e8){if(_0x254a45!==0x0){logger['error'](util[_0x4f96('0x9')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x338b62,_0x2cafa7,_0x254a45,_0x66c3e8));}else{logger[_0x4f96('0xa')](util['format']('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x338b62,_0x2cafa7,_0x3f6379));}});};
\ No newline at end of file
+var _0x74f1=['../../../../config/logger','trigger','exec','data2','Script','data3','render','error','format','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','mustache'];(function(_0x5515a7,_0x2c4af1){var _0x43f4bf=function(_0x3d519d){while(--_0x3d519d){_0x5515a7['push'](_0x5515a7['shift']());}};_0x43f4bf(++_0x2c4af1);}(_0x74f1,0xbe));var _0x174f=function(_0x5426d0,_0x4a4f10){_0x5426d0=_0x5426d0-0x0;var _0x37be89=_0x74f1[_0x5426d0];return _0x37be89;};'use strict';var util=require(_0x174f('0x0'));var sh=require('shelljs');var Mustache=require(_0x174f('0x1'));var logger=require(_0x174f('0x2'))(_0x174f('0x3'));exports[_0x174f('0x4')]=function(_0x27c578,_0x4bf11b){var _0x9e701f=_0x27c578[_0x174f('0x5')]?_0x27c578[_0x174f('0x5')]:_0x174f('0x6');var _0x4b7342=_0x27c578[_0x174f('0x7')]?Mustache[_0x174f('0x8')](_0x27c578[_0x174f('0x7')],_0x4bf11b):_0x4bf11b;sh[_0x174f('0x4')](_0x4b7342,function(_0x3b86b8,_0x3577b3,_0x5be615){if(_0x3b86b8!==0x0){logger[_0x174f('0x9')](util[_0x174f('0xa')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x9e701f,_0x4b7342,_0x3b86b8,_0x5be615));}else{logger['info'](util[_0x174f('0xa')](_0x174f('0xb'),_0x9e701f,_0x4b7342,_0x3577b3));}});};
\ No newline at end of file
index 67a6791..bcdeb8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x091b=['stack','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','body','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','isNil',',\x20request\x20body:\x20','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','message','request-promise','lodash','mustache','toUpperCase','render','data2','data5','number','headers','data6','parse','error','data1','GET','DELETE','POST','PUT','data7'];(function(_0x5c5a71,_0x2e8e35){var _0x221053=function(_0x383a27){while(--_0x383a27){_0x5c5a71['push'](_0x5c5a71['shift']());}};_0x221053(++_0x2e8e35);}(_0x091b,0x8e));var _0xb091=function(_0x2c0989,_0x8ca502){_0x2c0989=_0x2c0989-0x0;var _0x53f766=_0x091b[_0x2c0989];return _0x53f766;};'use strict';var rp=require(_0xb091('0x0'));var util=require('util');var _=require(_0xb091('0x1'));var Mustache=require(_0xb091('0x2'));var logger=require('../../../../config/logger')('trigger');exports['exec']=function(_0x37a043,_0x3a81d8){var _0x2c855e,_0x177be4;var _0x4e56c2={'method':_0x37a043['data1'][_0xb091('0x3')](),'uri':Mustache[_0xb091('0x4')](_0x37a043[_0xb091('0x5')],_0x3a81d8),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x37a043[_0xb091('0x6')])===_0xb091('0x7')&&parseInt(_0x37a043[_0xb091('0x6')])>=0x1&&parseInt(_0x37a043['data5'])<=0xa?parseInt(_0x37a043[_0xb091('0x6')])*0x3e8:0x5*0x3e8};try{_0x4e56c2[_0xb091('0x8')]=_0x37a043[_0xb091('0x9')]?JSON[_0xb091('0xa')](Mustache[_0xb091('0x4')](_0x37a043[_0xb091('0x9')],_0x3a81d8)):{};}catch(_0x44cca8){logger[_0xb091('0xb')](_0x44cca8['stack']);}switch(_0x37a043[_0xb091('0xc')]['toUpperCase']()){case _0xb091('0xd'):case _0xb091('0xe'):_0x2c855e=null;_0x4e56c2['qs']=_0x3a81d8;break;case _0xb091('0xf'):case _0xb091('0x10'):if(_0x37a043[_0xb091('0x11')]){try{_0x2c855e=JSON[_0xb091('0xa')](Mustache[_0xb091('0x4')](_0x37a043[_0xb091('0x11')],_0x3a81d8));_0x4e56c2['body']=_0x2c855e;}catch(_0x155f4b){logger[_0xb091('0xb')](_0x155f4b[_0xb091('0x12')]);logger[_0xb091('0xb')](_0xb091('0x13'));}}else{_0x2c855e=_0x3a81d8;_0x4e56c2[_0xb091('0x14')]=_0x2c855e;}break;}logger[_0xb091('0x15')](util[_0xb091('0x16')](_0xb091('0x17'),_0x37a043[_0xb091('0xc')],_0x37a043[_0xb091('0x5')],JSON[_0xb091('0x18')](_0x4e56c2)));rp(_0x4e56c2)['then'](function(_0x3e09b2){_0x2c855e=!_[_0xb091('0x19')](_0x2c855e)?_0xb091('0x1a')+_0x2c855e:'';_0x177be4=typeof _0x3e09b2['body']===_0xb091('0x1b')?JSON[_0xb091('0x18')](_0x3e09b2[_0xb091('0x14')]):_0x3e09b2[_0xb091('0x14')];logger['info'](util[_0xb091('0x16')](_0xb091('0x1c'),_0x37a043['data1'],_0x37a043['data2'],_0x3e09b2[_0xb091('0x1d')],_0x177be4));})['catch'](function(_0xb5e238){logger[_0xb091('0xb')](util[_0xb091('0x16')](_0xb091('0x1e'),_0x37a043[_0xb091('0xc')],_0x37a043[_0xb091('0x5')],_0xb5e238[_0xb091('0x1d')],_0xb5e238['name'],_0xb5e238[_0xb091('0x1f')]));});};
\ No newline at end of file
+var _0x747f=['render','error','stack','GET','DELETE','PUT','data7','body','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify',',\x20request\x20body:\x20','object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','message','request-promise','util','lodash','mustache','trigger','data1','toUpperCase','data2','data5','data6','parse'];(function(_0x2365e6,_0x519c34){var _0x40d88c=function(_0x3d76bd){while(--_0x3d76bd){_0x2365e6['push'](_0x2365e6['shift']());}};_0x40d88c(++_0x519c34);}(_0x747f,0x16e));var _0xf747=function(_0x4dd762,_0x44689b){_0x4dd762=_0x4dd762-0x0;var _0x22f5c8=_0x747f[_0x4dd762];return _0x22f5c8;};'use strict';var rp=require(_0xf747('0x0'));var util=require(_0xf747('0x1'));var _=require(_0xf747('0x2'));var Mustache=require(_0xf747('0x3'));var logger=require('../../../../config/logger')(_0xf747('0x4'));exports['exec']=function(_0x669933,_0x1ac572){var _0x14fc4b,_0x3ae028;var _0x39396b={'method':_0x669933[_0xf747('0x5')][_0xf747('0x6')](),'uri':Mustache['render'](_0x669933[_0xf747('0x7')],_0x1ac572),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x669933[_0xf747('0x8')])==='number'&&parseInt(_0x669933['data5'])>=0x1&&parseInt(_0x669933['data5'])<=0xa?parseInt(_0x669933[_0xf747('0x8')])*0x3e8:0x5*0x3e8};try{_0x39396b['headers']=_0x669933[_0xf747('0x9')]?JSON[_0xf747('0xa')](Mustache[_0xf747('0xb')](_0x669933['data6'],_0x1ac572)):{};}catch(_0x386e14){logger[_0xf747('0xc')](_0x386e14[_0xf747('0xd')]);}switch(_0x669933[_0xf747('0x5')][_0xf747('0x6')]()){case _0xf747('0xe'):case _0xf747('0xf'):_0x14fc4b=null;_0x39396b['qs']=_0x1ac572;break;case'POST':case _0xf747('0x10'):if(_0x669933[_0xf747('0x11')]){try{_0x14fc4b=JSON['parse'](Mustache[_0xf747('0xb')](_0x669933[_0xf747('0x11')],_0x1ac572));_0x39396b['body']=_0x14fc4b;}catch(_0x5c17de){logger[_0xf747('0xc')](_0x5c17de[_0xf747('0xd')]);logger[_0xf747('0xc')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x14fc4b=_0x1ac572;_0x39396b[_0xf747('0x12')]=_0x14fc4b;}break;}logger[_0xf747('0x13')](util[_0xf747('0x14')](_0xf747('0x15'),_0x669933[_0xf747('0x5')],_0x669933[_0xf747('0x7')],JSON[_0xf747('0x16')](_0x39396b)));rp(_0x39396b)['then'](function(_0x1fdcdb){_0x14fc4b=!_['isNil'](_0x14fc4b)?_0xf747('0x17')+_0x14fc4b:'';_0x3ae028=typeof _0x1fdcdb[_0xf747('0x12')]===_0xf747('0x18')?JSON['stringify'](_0x1fdcdb[_0xf747('0x12')]):_0x1fdcdb[_0xf747('0x12')];logger[_0xf747('0x13')](util[_0xf747('0x14')](_0xf747('0x19'),_0x669933['data1'],_0x669933['data2'],_0x1fdcdb[_0xf747('0x1a')],_0x3ae028));})[_0xf747('0x1b')](function(_0x46f1d1){logger[_0xf747('0xc')](util[_0xf747('0x14')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x669933[_0xf747('0x5')],_0x669933['data2'],_0x46f1d1[_0xf747('0x1a')],_0x46f1d1['name'],_0x46f1d1[_0xf747('0x1c')]));});};
\ No newline at end of file
index fdeb372..f66e6a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6d0=['request','then','debug','routing','error','message','catch','rpc','jayson/promise','bluebird','../../config/logger','http'];(function(_0x54f8cd,_0x355bc5){var _0x28e589=function(_0x2f3049){while(--_0x2f3049){_0x54f8cd['push'](_0x54f8cd['shift']());}};_0x28e589(++_0x355bc5);}(_0xe6d0,0xbc));var _0x0e6d=function(_0x4be497,_0x57b16d){_0x4be497=_0x4be497-0x0;var _0x272931=_0xe6d0[_0x4be497];return _0x272931;};'use strict';var jayson=require(_0x0e6d('0x0'));var BPromise=require(_0x0e6d('0x1'));var logger=require(_0x0e6d('0x2'))('routing');var client=jayson['client'][_0x0e6d('0x3')]({'port':0x2329});client['Request']=function(_0xa4e59c,_0x3b4d13){return new BPromise(function(_0x449785,_0x1bac11){return client[_0x0e6d('0x4')](_0xa4e59c,_0x3b4d13)[_0x0e6d('0x5')](function(_0x174316){logger[_0x0e6d('0x6')]('rpc',_0x0e6d('0x7'),_0xa4e59c,_0x3b4d13,_0x174316);if(_0x174316[_0x0e6d('0x8')]){logger[_0x0e6d('0x8')]('rpc',_0x0e6d('0x7'),_0xa4e59c,_0x174316[_0x0e6d('0x8')]['message'],_0x3b4d13);return _0x1bac11(_0x174316[_0x0e6d('0x8')][_0x0e6d('0x9')]);}else{return _0x449785(_0x174316['result']);}})[_0x0e6d('0xa')](function(_0x2d6942){logger[_0x0e6d('0x8')](_0x0e6d('0xb'),_0x0e6d('0x7'),_0xa4e59c,_0x2d6942,_0x3b4d13);return _0x1bac11(_0x2d6942);});});};module['exports']=client;
\ No newline at end of file
+var _0xab0c=['jayson/promise','../../config/logger','client','Request','request','then','debug','rpc','routing','error','message','result','catch'];(function(_0x37de50,_0x27f82a){var _0x2c37dc=function(_0x325186){while(--_0x325186){_0x37de50['push'](_0x37de50['shift']());}};_0x2c37dc(++_0x27f82a);}(_0xab0c,0x1a0));var _0xcab0=function(_0x20a719,_0x3ac77c){_0x20a719=_0x20a719-0x0;var _0x228342=_0xab0c[_0x20a719];return _0x228342;};'use strict';var jayson=require(_0xcab0('0x0'));var BPromise=require('bluebird');var logger=require(_0xcab0('0x1'))('routing');var client=jayson[_0xcab0('0x2')]['http']({'port':0x2329});client[_0xcab0('0x3')]=function(_0xba70cf,_0x1e8c72){return new BPromise(function(_0x3dbfd7,_0x462fb2){return client[_0xcab0('0x4')](_0xba70cf,_0x1e8c72)[_0xcab0('0x5')](function(_0x31e821){logger[_0xcab0('0x6')](_0xcab0('0x7'),_0xcab0('0x8'),_0xba70cf,_0x1e8c72,_0x31e821);if(_0x31e821[_0xcab0('0x9')]){logger[_0xcab0('0x9')](_0xcab0('0x7'),_0xcab0('0x8'),_0xba70cf,_0x31e821[_0xcab0('0x9')][_0xcab0('0xa')],_0x1e8c72);return _0x462fb2(_0x31e821['error'][_0xcab0('0xa')]);}else{return _0x3dbfd7(_0x31e821[_0xcab0('0xb')]);}})[_0xcab0('0xc')](function(_0x58250a){logger[_0xcab0('0x9')](_0xcab0('0x7'),_0xcab0('0x8'),_0xba70cf,_0x58250a,_0x1e8c72);return _0x462fb2(_0x58250a);});});};module['exports']=client;
\ No newline at end of file
index d954876..997b408 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f4d=['mailAccounts','listen','loginMailFrequency','catch','log','bluebird','./server','./realtime','./rpc/mailAccount','./rpc/setting','getMailAccounts','initMailAccounts','then','refresh'];(function(_0x2fc1ac,_0x4e36de){var _0x27c5c5=function(_0x1b4924){while(--_0x1b4924){_0x2fc1ac['push'](_0x2fc1ac['shift']());}};_0x27c5c5(++_0x4e36de);}(_0x5f4d,0x91));var _0xd5f4=function(_0x2c9be1,_0x4c45ce){_0x2c9be1=_0x2c9be1-0x0;var _0x389601=_0x5f4d[_0x2c9be1];return _0x389601;};'use strict';var BPromise=require(_0xd5f4('0x0'));var server=require(_0xd5f4('0x1'));var Realtime=require(_0xd5f4('0x2'));var EmailChannel=require('./lib/email');var mailAccount=require(_0xd5f4('0x3'));var setting=require(_0xd5f4('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise['resolve']()['then'](mailAccount[_0xd5f4('0x5')]())['then'](realtime[_0xd5f4('0x6')]())[_0xd5f4('0x7')](function(){email[_0xd5f4('0x8')](realtime[_0xd5f4('0x9')]);return realtime;});}function main(){return server[_0xd5f4('0xa')](realtime,email)[_0xd5f4('0x7')](function(){return initRealtime();})[_0xd5f4('0x7')](function(){return setting['getSettings']();})[_0xd5f4('0x7')](function(_0x4471ad){return setInterval(initRealtime,_0x4471ad[_0xd5f4('0xb')]*0x3e8);})[_0xd5f4('0xc')](function(_0x504af0){console[_0xd5f4('0xd')](_0x504af0);});}main();
\ No newline at end of file
+var _0x3e5b=['./realtime','./lib/email','./rpc/mailAccount','resolve','then','initMailAccounts','refresh','mailAccounts','listen','getSettings','loginMailFrequency','catch','log','./server'];(function(_0x437fc9,_0x479cfb){var _0xe5832d=function(_0x106023){while(--_0x106023){_0x437fc9['push'](_0x437fc9['shift']());}};_0xe5832d(++_0x479cfb);}(_0x3e5b,0x1e9));var _0xb3e5=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x3e5b[_0x5b644e];return _0x49c6bf;};'use strict';var BPromise=require('bluebird');var server=require(_0xb3e5('0x0'));var Realtime=require(_0xb3e5('0x1'));var EmailChannel=require(_0xb3e5('0x2'));var mailAccount=require(_0xb3e5('0x3'));var setting=require('./rpc/setting');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xb3e5('0x4')]()[_0xb3e5('0x5')](mailAccount['getMailAccounts']())[_0xb3e5('0x5')](realtime[_0xb3e5('0x6')]())['then'](function(){email[_0xb3e5('0x7')](realtime[_0xb3e5('0x8')]);return realtime;});}function main(){return server[_0xb3e5('0x9')](realtime,email)[_0xb3e5('0x5')](function(){return initRealtime();})[_0xb3e5('0x5')](function(){return setting[_0xb3e5('0xa')]();})[_0xb3e5('0x5')](function(_0x25717a){return setInterval(initRealtime,_0x25717a[_0xb3e5('0xb')]*0x3e8);})[_0xb3e5('0xc')](function(_0x4bfebf){console[_0xb3e5('0xd')](_0x4bfebf);});}main();
\ No newline at end of file
index 383cf34..9c42789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3d4=['lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','lastSync','sendMail','verifySmtp','Smtp','lodash','bluebird','ioredis','../../../config/environment','../../../config/logger','email','defaults','redis','localhost','socket.io-emitter','./imap','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','active','Imap','status','total','isNil','stringify','md5','refresh','hasOwnProperty','bind','end','handleImapEnd','error','handleImapError','disabled','messageStatus','handleImapBox','connected','messages','handleImapEmail','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName'];(function(_0x4e50ff,_0x3659dc){var _0x4bb018=function(_0x1f7fa2){while(--_0x1f7fa2){_0x4e50ff['push'](_0x4e50ff['shift']());}};_0x4bb018(++_0x3659dc);}(_0xa3d4,0xde));var _0x4a3d=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xa3d4[_0x1d1779];return _0x2377e9;};'use strict';var _=require(_0x4a3d('0x0'));var moment=require('moment');var BPromise=require(_0x4a3d('0x1'));var md5=require('md5');var Redis=require(_0x4a3d('0x2'));var config=require(_0x4a3d('0x3'));var logger=require(_0x4a3d('0x4'))(_0x4a3d('0x5'));config['redis']=_[_0x4a3d('0x6')](config[_0x4a3d('0x7')],{'host':_0x4a3d('0x8'),'port':0x18eb});var io=require(_0x4a3d('0x9'))(new Redis(config[_0x4a3d('0x7')]));var EmailImap=require(_0x4a3d('0xa'));var EmailSmtp=require('./smtp');var mailAccount=require(_0x4a3d('0xb'));var md5Accounts={};function EmailChannel(_0x97f299){logger[_0x4a3d('0xc')](_0x4a3d('0xd'));this[_0x4a3d('0xe')]=_0x97f299[_0x4a3d('0xe')];this[_0x4a3d('0xf')]={};this[_0x4a3d('0x10')]=new EmailSmtp();}EmailChannel[_0x4a3d('0x11')][_0x4a3d('0x12')]=function(_0x7fca52){var _0x1705c1=this[_0x4a3d('0xe')][_0x7fca52];var _0x3fb276={'id':_0x1705c1['id'],'name':_0x1705c1[_0x4a3d('0x13')],'key':_0x1705c1[_0x4a3d('0x14')],'active':_0x1705c1[_0x4a3d('0x15')],'Imap':{'status':_0x1705c1[_0x4a3d('0x16')][_0x4a3d('0x17')],'messageStatus':_0x1705c1[_0x4a3d('0x16')]['messageStatus'],'total':_0x1705c1[_0x4a3d('0x16')][_0x4a3d('0x18')]}};if(_[_0x4a3d('0x19')](md5Accounts[_0x7fca52])){md5Accounts[_0x7fca52]={};}var _0x5a7e57=md5(JSON[_0x4a3d('0x1a')](_0x3fb276));if(md5Accounts[_0x7fca52][_0x4a3d('0x1b')]!==_0x5a7e57){md5Accounts[_0x7fca52][_0x4a3d('0x1b')]=_0x5a7e57;io['emit']('mailAccount:update',_0x3fb276);}};EmailChannel['prototype'][_0x4a3d('0x1c')]=function(_0x3b9983){for(var _0x160a88 in _0x3b9983){if(_0x3b9983[_0x4a3d('0x1d')](_0x160a88)){if(_0x3b9983[_0x160a88]['Imap']&&_0x3b9983[_0x160a88][_0x4a3d('0x15')]){var _0x18cbf2=_0x3b9983[_0x160a88][_0x4a3d('0x16')];if(!this['imapAccounts'][_0x4a3d('0x1d')](_0x18cbf2['id'])){this['imapAccounts'][_0x18cbf2['id']]=new EmailImap(_0x18cbf2,_0x3b9983[_0x160a88][_0x4a3d('0x5')]);this[_0x4a3d('0xf')][_0x18cbf2['id']]['on']('box',this['handleImapBox'][_0x4a3d('0x1e')](this,_0x160a88));this[_0x4a3d('0xf')][_0x18cbf2['id']]['on'](_0x4a3d('0x5'),this['handleImapEmail'][_0x4a3d('0x1e')](this,_0x160a88));this[_0x4a3d('0xf')][_0x18cbf2['id']]['on'](_0x4a3d('0x1f'),this[_0x4a3d('0x20')]['bind'](this,_0x160a88));this[_0x4a3d('0xf')][_0x18cbf2['id']]['on'](_0x4a3d('0x21'),this[_0x4a3d('0x22')]['bind'](this,_0x160a88));}}else{if(_[_0x4a3d('0x19')](this[_0x4a3d('0xe')][_0x160a88][_0x4a3d('0x16')])){this[_0x4a3d('0xe')][_0x160a88][_0x4a3d('0x16')]={};}this[_0x4a3d('0xe')][_0x160a88]['Imap'][_0x4a3d('0x17')]=_0x4a3d('0x23');this[_0x4a3d('0xe')][_0x160a88][_0x4a3d('0x16')][_0x4a3d('0x24')]='';this[_0x4a3d('0x12')](_0x160a88);}}}};EmailChannel['prototype'][_0x4a3d('0x25')]=function(_0x225a63,_0x329eb){if(this[_0x4a3d('0xe')][_0x225a63]){this[_0x4a3d('0xe')][_0x225a63]['Imap'][_0x4a3d('0x17')]=_0x4a3d('0x26');this[_0x4a3d('0xe')][_0x225a63][_0x4a3d('0x16')][_0x4a3d('0x24')]=_0x329eb['name'];if(_0x329eb[_0x4a3d('0x27')]){this['mailAccounts'][_0x225a63]['Imap'][_0x4a3d('0x18')]=_0x329eb[_0x4a3d('0x27')]['total'];}return this[_0x4a3d('0x12')](_0x225a63);}};EmailChannel[_0x4a3d('0x11')][_0x4a3d('0x28')]=function(_0x869774,_0x35101c){logger['info'](_0x4a3d('0x29'),_0x35101c[_0x4a3d('0x2a')],_0x35101c[_0x4a3d('0x2b')],_0x35101c[_0x4a3d('0x2c')],_0x869774);if(this[_0x4a3d('0xe')][_0x869774]){return mailAccount[_0x4a3d('0x2d')](_0x869774,_0x35101c)[_0x4a3d('0x2e')](function(_0x357a6d){if(_0x357a6d){logger[_0x4a3d('0xc')](_0x4a3d('0x2f'));}})[_0x4a3d('0x30')](function(_0x39a705){logger[_0x4a3d('0x21')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x4a3d('0x1a')](_0x39a705));});}};EmailChannel[_0x4a3d('0x11')][_0x4a3d('0x20')]=function(_0x538908){if(this['mailAccounts'][_0x538908]&&this[_0x4a3d('0xe')][_0x538908]['Imap']){if(this[_0x4a3d('0xf')][this[_0x4a3d('0xe')][_0x538908][_0x4a3d('0x16')]['id']]){delete this[_0x4a3d('0xf')][this['mailAccounts'][_0x538908][_0x4a3d('0x16')]['id']];}this[_0x4a3d('0xe')][_0x538908]['Imap'][_0x4a3d('0x31')]=moment();this[_0x4a3d('0x12')](_0x538908);}};EmailChannel[_0x4a3d('0x11')][_0x4a3d('0x22')]=function(_0x3ad944,_0x2a2945){if(this[_0x4a3d('0xe')][_0x3ad944]){this[_0x4a3d('0xe')][_0x3ad944][_0x4a3d('0x16')][_0x4a3d('0x17')]=_0x4a3d('0x21');this[_0x4a3d('0xe')][_0x3ad944]['Imap'][_0x4a3d('0x24')]=_0x2a2945;return this[_0x4a3d('0x12')](_0x3ad944);}};EmailChannel[_0x4a3d('0x11')][_0x4a3d('0x32')]=function(_0xaf8771,_0x5d6efd){return this[_0x4a3d('0x10')]['send'](_0xaf8771,_0x5d6efd);};EmailChannel['prototype'][_0x4a3d('0x33')]=function(_0x542e74){var _0x388e2a=this;if(this[_0x4a3d('0xe')][_0x542e74['id']]){if(_[_0x4a3d('0x19')](this['mailAccounts'][_0x542e74['id']][_0x4a3d('0x34')])){this['mailAccounts'][_0x542e74['id']][_0x4a3d('0x34')]={};}this[_0x4a3d('0xe')][_0x542e74['id']][_0x4a3d('0x34')][_0x4a3d('0x31')]=moment();return new BPromise(function(_0x486291,_0x1832c3){return _0x388e2a[_0x4a3d('0x10')]['verify'](_0x542e74)[_0x4a3d('0x2e')](function(_0x4dbfca){_0x388e2a[_0x4a3d('0xe')][_0x542e74['id']][_0x4a3d('0x34')][_0x4a3d('0x17')]='verified';_0x388e2a[_0x4a3d('0xe')][_0x542e74['id']][_0x4a3d('0x34')][_0x4a3d('0x24')]='';_0x388e2a[_0x4a3d('0x12')](_0x542e74['id']);_0x486291(_0x4dbfca);})[_0x4a3d('0x30')](function(_0x3b85a5){_0x388e2a['mailAccounts'][_0x542e74['id']]['Smtp'][_0x4a3d('0x17')]=_0x4a3d('0x21');_0x388e2a[_0x4a3d('0xe')][_0x542e74['id']]['Smtp']['messageStatus']=_0x3b85a5;_0x388e2a['emit'](_0x542e74['id']);_0x1832c3(_0x3b85a5);});});}return this[_0x4a3d('0x10')]['verify'](_0x542e74);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0x64fb=['messageStatus','total','isNil','stringify','md5','prototype','refresh','hasOwnProperty','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','disabled','connected','messages','firstName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','sendMail','send','Smtp','verified','verify','exports','moment','bluebird','../../../config/logger','email','defaults','redis','localhost','socket.io-emitter','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','smtp','emit','name','active','Imap','status'];(function(_0x3acb12,_0x2c288b){var _0xc7f9ba=function(_0xa7628f){while(--_0xa7628f){_0x3acb12['push'](_0x3acb12['shift']());}};_0xc7f9ba(++_0x2c288b);}(_0x64fb,0x185));var _0xb64f=function(_0x2cbba4,_0x2cbf96){_0x2cbba4=_0x2cbba4-0x0;var _0x20f93a=_0x64fb[_0x2cbba4];return _0x20f93a;};'use strict';var _=require('lodash');var moment=require(_0xb64f('0x0'));var BPromise=require(_0xb64f('0x1'));var md5=require('md5');var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0xb64f('0x2'))(_0xb64f('0x3'));config['redis']=_[_0xb64f('0x4')](config[_0xb64f('0x5')],{'host':_0xb64f('0x6'),'port':0x18eb});var io=require(_0xb64f('0x7'))(new Redis(config[_0xb64f('0x5')]));var EmailImap=require('./imap');var EmailSmtp=require(_0xb64f('0x8'));var mailAccount=require(_0xb64f('0x9'));var md5Accounts={};function EmailChannel(_0x298b9b){logger[_0xb64f('0xa')]('start\x20email\x20channel');this[_0xb64f('0xb')]=_0x298b9b[_0xb64f('0xb')];this[_0xb64f('0xc')]={};this[_0xb64f('0xd')]=new EmailSmtp();}EmailChannel['prototype'][_0xb64f('0xe')]=function(_0x4e9990){var _0x44e263=this[_0xb64f('0xb')][_0x4e9990];var _0x13a042={'id':_0x44e263['id'],'name':_0x44e263[_0xb64f('0xf')],'key':_0x44e263['key'],'active':_0x44e263[_0xb64f('0x10')],'Imap':{'status':_0x44e263[_0xb64f('0x11')][_0xb64f('0x12')],'messageStatus':_0x44e263[_0xb64f('0x11')][_0xb64f('0x13')],'total':_0x44e263[_0xb64f('0x11')][_0xb64f('0x14')]}};if(_[_0xb64f('0x15')](md5Accounts[_0x4e9990])){md5Accounts[_0x4e9990]={};}var _0x1f0092=md5(JSON[_0xb64f('0x16')](_0x13a042));if(md5Accounts[_0x4e9990][_0xb64f('0x17')]!==_0x1f0092){md5Accounts[_0x4e9990][_0xb64f('0x17')]=_0x1f0092;io[_0xb64f('0xe')]('mailAccount:update',_0x13a042);}};EmailChannel[_0xb64f('0x18')][_0xb64f('0x19')]=function(_0xa23e21){for(var _0x560322 in _0xa23e21){if(_0xa23e21[_0xb64f('0x1a')](_0x560322)){if(_0xa23e21[_0x560322][_0xb64f('0x11')]&&_0xa23e21[_0x560322][_0xb64f('0x10')]){var _0x46eabf=_0xa23e21[_0x560322][_0xb64f('0x11')];if(!this[_0xb64f('0xc')][_0xb64f('0x1a')](_0x46eabf['id'])){this[_0xb64f('0xc')][_0x46eabf['id']]=new EmailImap(_0x46eabf,_0xa23e21[_0x560322]['email']);this[_0xb64f('0xc')][_0x46eabf['id']]['on'](_0xb64f('0x1b'),this[_0xb64f('0x1c')][_0xb64f('0x1d')](this,_0x560322));this[_0xb64f('0xc')][_0x46eabf['id']]['on'](_0xb64f('0x3'),this[_0xb64f('0x1e')][_0xb64f('0x1d')](this,_0x560322));this[_0xb64f('0xc')][_0x46eabf['id']]['on'](_0xb64f('0x1f'),this[_0xb64f('0x20')]['bind'](this,_0x560322));this[_0xb64f('0xc')][_0x46eabf['id']]['on'](_0xb64f('0x21'),this[_0xb64f('0x22')]['bind'](this,_0x560322));}}else{if(_[_0xb64f('0x15')](this['mailAccounts'][_0x560322][_0xb64f('0x11')])){this['mailAccounts'][_0x560322][_0xb64f('0x11')]={};}this[_0xb64f('0xb')][_0x560322][_0xb64f('0x11')]['status']=_0xb64f('0x23');this[_0xb64f('0xb')][_0x560322][_0xb64f('0x11')][_0xb64f('0x13')]='';this[_0xb64f('0xe')](_0x560322);}}}};EmailChannel[_0xb64f('0x18')]['handleImapBox']=function(_0x357e51,_0x293625){if(this[_0xb64f('0xb')][_0x357e51]){this['mailAccounts'][_0x357e51][_0xb64f('0x11')][_0xb64f('0x12')]=_0xb64f('0x24');this[_0xb64f('0xb')][_0x357e51][_0xb64f('0x11')][_0xb64f('0x13')]=_0x293625[_0xb64f('0xf')];if(_0x293625['messages']){this[_0xb64f('0xb')][_0x357e51][_0xb64f('0x11')][_0xb64f('0x14')]=_0x293625[_0xb64f('0x25')][_0xb64f('0x14')];}return this['emit'](_0x357e51);}};EmailChannel['prototype'][_0xb64f('0x1e')]=function(_0x4226fa,_0x4b9e3d){logger[_0xb64f('0xa')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x4b9e3d[_0xb64f('0x26')],_0x4b9e3d['lastName'],_0x4b9e3d[_0xb64f('0x27')],_0x4226fa);if(this[_0xb64f('0xb')][_0x4226fa]){return mailAccount[_0xb64f('0x28')](_0x4226fa,_0x4b9e3d)[_0xb64f('0x29')](function(_0x19697a){if(_0x19697a){logger['info'](_0xb64f('0x2a'));}})[_0xb64f('0x2b')](function(_0x287a4c){logger['error'](_0xb64f('0x2c'),JSON['stringify'](_0x287a4c));});}};EmailChannel[_0xb64f('0x18')][_0xb64f('0x20')]=function(_0x5299d2){if(this['mailAccounts'][_0x5299d2]&&this[_0xb64f('0xb')][_0x5299d2][_0xb64f('0x11')]){if(this[_0xb64f('0xc')][this['mailAccounts'][_0x5299d2][_0xb64f('0x11')]['id']]){delete this[_0xb64f('0xc')][this[_0xb64f('0xb')][_0x5299d2][_0xb64f('0x11')]['id']];}this[_0xb64f('0xb')][_0x5299d2][_0xb64f('0x11')]['lastSync']=moment();this['emit'](_0x5299d2);}};EmailChannel[_0xb64f('0x18')][_0xb64f('0x22')]=function(_0x5209df,_0x3f079d){if(this[_0xb64f('0xb')][_0x5209df]){this['mailAccounts'][_0x5209df]['Imap'][_0xb64f('0x12')]=_0xb64f('0x21');this['mailAccounts'][_0x5209df][_0xb64f('0x11')][_0xb64f('0x13')]=_0x3f079d;return this[_0xb64f('0xe')](_0x5209df);}};EmailChannel[_0xb64f('0x18')][_0xb64f('0x2d')]=function(_0x154bd3,_0x5be9c8){return this[_0xb64f('0xd')][_0xb64f('0x2e')](_0x154bd3,_0x5be9c8);};EmailChannel[_0xb64f('0x18')]['verifySmtp']=function(_0x5de31a){var _0x43c4ce=this;if(this['mailAccounts'][_0x5de31a['id']]){if(_[_0xb64f('0x15')](this[_0xb64f('0xb')][_0x5de31a['id']][_0xb64f('0x2f')])){this['mailAccounts'][_0x5de31a['id']][_0xb64f('0x2f')]={};}this[_0xb64f('0xb')][_0x5de31a['id']][_0xb64f('0x2f')]['lastSync']=moment();return new BPromise(function(_0x3d4ec1,_0xe3f49){return _0x43c4ce[_0xb64f('0xd')]['verify'](_0x5de31a)[_0xb64f('0x29')](function(_0x4a1f9a){_0x43c4ce[_0xb64f('0xb')][_0x5de31a['id']][_0xb64f('0x2f')][_0xb64f('0x12')]=_0xb64f('0x30');_0x43c4ce[_0xb64f('0xb')][_0x5de31a['id']][_0xb64f('0x2f')][_0xb64f('0x13')]='';_0x43c4ce[_0xb64f('0xe')](_0x5de31a['id']);_0x3d4ec1(_0x4a1f9a);})[_0xb64f('0x2b')](function(_0x5a78aa){_0x43c4ce[_0xb64f('0xb')][_0x5de31a['id']]['Smtp'][_0xb64f('0x12')]=_0xb64f('0x21');_0x43c4ce[_0xb64f('0xb')][_0x5de31a['id']][_0xb64f('0x2f')][_0xb64f('0x13')]=_0x5a78aa;_0x43c4ce[_0xb64f('0xe')](_0x5de31a['id']);_0xe3f49(_0x5a78aa);});});}return this[_0xb64f('0xd')][_0xb64f('0x31')](_0x5de31a);};module[_0xb64f('0x32')]=EmailChannel;
\ No newline at end of file
index 6580d0b..131c2f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f7f=['user','password','host','port','tls','autotls','required','getHost','anonymous@xcally.com','handleReady','handleOpenBox','prototype','emit','box','readUnseen','handleCloseBox','search','fetch','handleFetchMessage','error','handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','textCode','hasOwnProperty','exports','util','imap','lodash','randomstring','mailparser','iconv','events','EventEmitter','./utils','email','mailbox','INBOX','account','getAccount','bind','once','end','handleEnd','handleError','connect','connTimeout','authTimeout','isNil','authentication'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x6f7f,0x177));var _0xf6f7=function(_0x5e36ec,_0x3f3133){_0x5e36ec=_0x5e36ec-0x0;var _0x269e29=_0x6f7f[_0x5e36ec];return _0x269e29;};'use strict';var fs=require('fs');var path=require('path');var util=require(_0xf6f7('0x0'));var Imap=require(_0xf6f7('0x1'));var _=require(_0xf6f7('0x2'));var rs=require(_0xf6f7('0x3'));var simpleParser=require(_0xf6f7('0x4'))['simpleParser'];var Iconv=require(_0xf6f7('0x5'))['Iconv'];var EventEmitter=require(_0xf6f7('0x6'))[_0xf6f7('0x7')];var utils=require(_0xf6f7('0x8'));var logger=require('../../../config/logger')(_0xf6f7('0x9'));function EmailImap(_0x543eb3,_0x33a2b2){this[_0xf6f7('0xa')]=_0xf6f7('0xb');this[_0xf6f7('0xc')]=this[_0xf6f7('0xd')](_0x543eb3,_0x33a2b2);this[_0xf6f7('0x1')]=new Imap(this['account']);this[_0xf6f7('0x1')]['once']('ready',this['handleReady'][_0xf6f7('0xe')](this));this[_0xf6f7('0x1')][_0xf6f7('0xf')](_0xf6f7('0x10'),this[_0xf6f7('0x11')][_0xf6f7('0xe')](this));this['imap']['on']('error',this[_0xf6f7('0x12')][_0xf6f7('0xe')](this));this[_0xf6f7('0x1')][_0xf6f7('0x13')]();}util['inherits'](EmailImap,EventEmitter);EmailImap['prototype'][_0xf6f7('0xd')]=function(_0x4f8d9b,_0x87ae1a){var _0x57c323={'connTimeout':_0x4f8d9b[_0xf6f7('0x14')]?_0x4f8d9b[_0xf6f7('0x14')]*0x3e8:0x2710,'authTimeout':_0x4f8d9b[_0xf6f7('0x15')]?_0x4f8d9b[_0xf6f7('0x15')]*0x3e8:0x1388};if(_[_0xf6f7('0x16')](_0x4f8d9b['service'])){if(_0x4f8d9b[_0xf6f7('0x17')]){_0x57c323[_0xf6f7('0x18')]=_0x4f8d9b['user'];_0x57c323[_0xf6f7('0x19')]=_0x4f8d9b[_0xf6f7('0x19')];}_0x57c323[_0xf6f7('0x1a')]=_0x4f8d9b[_0xf6f7('0x1a')];_0x57c323['port']=_0x4f8d9b[_0xf6f7('0x1b')]||0x3e1;if(_0x4f8d9b[_0xf6f7('0x1c')]){_0x57c323['tls']=!![];}else{_0x57c323[_0xf6f7('0x1c')]=![];_0x57c323[_0xf6f7('0x1d')]=_0xf6f7('0x1e');}}else{_0x57c323[_0xf6f7('0x18')]=_0x4f8d9b[_0xf6f7('0x18')];_0x57c323[_0xf6f7('0x19')]=_0x4f8d9b[_0xf6f7('0x19')];_0x57c323['host']=utils[_0xf6f7('0x1f')](_0x4f8d9b['service']);_0x57c323['port']=0x3e1;_0x57c323[_0xf6f7('0x1c')]=!![];}_0x57c323['email']=_0x87ae1a||_0x4f8d9b[_0xf6f7('0x18')]||_0xf6f7('0x20');return _0x57c323;};EmailImap['prototype'][_0xf6f7('0x21')]=function(){this['imap']['openBox'](this[_0xf6f7('0xa')],![],this[_0xf6f7('0x22')][_0xf6f7('0xe')](this));};EmailImap[_0xf6f7('0x23')][_0xf6f7('0x22')]=function(_0x5d3370,_0x4c1ecd){if(_0x5d3370){this[_0xf6f7('0x12')](_0x5d3370,!![]);}else{this[_0xf6f7('0x24')](_0xf6f7('0x25'),_0x4c1ecd);this[_0xf6f7('0x26')]();}};EmailImap[_0xf6f7('0x23')][_0xf6f7('0x27')]=function(_0x4b6e82){if(_0x4b6e82){this[_0xf6f7('0x12')](_0x4b6e82,!![]);}else{this[_0xf6f7('0x1')][_0xf6f7('0x10')]();}};EmailImap[_0xf6f7('0x23')][_0xf6f7('0x26')]=function(){this[_0xf6f7('0x1')][_0xf6f7('0x28')](['UNSEEN'],this['handleReadUnseen']['bind'](this));};EmailImap[_0xf6f7('0x23')]['handleReadUnseen']=function(_0x29661e,_0x35b586){if(_0x29661e){this['handleError'](_0x29661e,!![]);}else{if(_0x35b586['length']){try{var _0x3b85db=this[_0xf6f7('0x1')][_0xf6f7('0x29')](_0x35b586,{'bodies':'','markSeen':!![]});_0x3b85db['on']('message',this[_0xf6f7('0x2a')]['bind'](this));_0x3b85db[_0xf6f7('0xf')](_0xf6f7('0x2b'),this[_0xf6f7('0x2c')][_0xf6f7('0xe')](this));_0x3b85db[_0xf6f7('0xf')](_0xf6f7('0x10'),this[_0xf6f7('0x2d')][_0xf6f7('0xe')](this));}catch(_0x3fbbf2){logger[_0xf6f7('0x2b')](_0x3fbbf2);}}else{this[_0xf6f7('0x1')][_0xf6f7('0x2e')](!![],this['handleCloseBox'][_0xf6f7('0xe')](this));}}};EmailImap['prototype'][_0xf6f7('0x2a')]=function(_0x4704d5,_0x2b5f41){_0x4704d5['on'](_0xf6f7('0x2f'),this[_0xf6f7('0x30')][_0xf6f7('0xe')](this));_0x4704d5[_0xf6f7('0xf')](_0xf6f7('0x31'),this[_0xf6f7('0x32')]['bind'](this));_0x4704d5['once'](_0xf6f7('0x10'),this[_0xf6f7('0x33')][_0xf6f7('0xe')](this));};EmailImap[_0xf6f7('0x23')][_0xf6f7('0x30')]=function(_0x41975f,_0x15d21b){simpleParser(_0x41975f,{'Iconv':Iconv},this[_0xf6f7('0x34')][_0xf6f7('0xe')](this));};EmailImap[_0xf6f7('0x23')][_0xf6f7('0x32')]=function(_0x427115){};EmailImap[_0xf6f7('0x23')][_0xf6f7('0x33')]=function(){};EmailImap[_0xf6f7('0x23')][_0xf6f7('0x34')]=function(_0x4cd474,_0x4d4f3d){if(_0x4cd474){logger[_0xf6f7('0x2b')](_0x4cd474);}else{var _0x1de44f=this;utils[_0xf6f7('0x35')](this[_0xf6f7('0xc')],_0x4d4f3d,function(_0x2e712c){_0x1de44f[_0xf6f7('0x24')]('email',_0x2e712c);});}};EmailImap[_0xf6f7('0x23')][_0xf6f7('0x2d')]=function(){this[_0xf6f7('0x1')][_0xf6f7('0x2e')](!![],this['handleCloseBox']['bind'](this));};EmailImap[_0xf6f7('0x23')]['handleFetchError']=function(_0x5b75ec){this[_0xf6f7('0x12')](_0x5b75ec);this[_0xf6f7('0x1')][_0xf6f7('0x2e')](!![],this['handleCloseBox'][_0xf6f7('0xe')](this));};EmailImap[_0xf6f7('0x23')][_0xf6f7('0x11')]=function(){this[_0xf6f7('0x24')]('end');};EmailImap[_0xf6f7('0x23')][_0xf6f7('0x12')]=function(_0x49bfca,_0x4788f0){logger[_0xf6f7('0x2b')]('handleError',this[_0xf6f7('0xc')]['email'],JSON['stringify'](_0x49bfca));var _0x5007f6='';if(_0x49bfca){if(_0x49bfca[_0xf6f7('0x36')]){_0x5007f6=_0x49bfca[_0xf6f7('0x36')];}else{for(var _0x160bbd in _0x49bfca){if(_0x49bfca[_0xf6f7('0x37')](_0x160bbd)){_0x5007f6+=_['upperFirst'](_0x160bbd)+':\x20'+_0x49bfca[_0x160bbd]+'\x0a';}}}}if(_0x4788f0){this[_0xf6f7('0x1')]['end']();}else{this[_0xf6f7('0x24')]('error',_0x5007f6);this['emit'](_0xf6f7('0x10'));}};module[_0xf6f7('0x38')]=EmailImap;
\ No newline at end of file
+var _0xb761=['length','handleFetchError','end','error','closeBox','handleFetchMessage','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','emit','handleFetchEnd','stringify','textCode','hasOwnProperty','upperFirst','exports','path','util','imap','lodash','mailparser','simpleParser','iconv','events','./utils','email','mailbox','INBOX','account','getAccount','once','ready','handleReady','bind','handleEnd','handleError','connect','inherits','prototype','connTimeout','authTimeout','service','authentication','user','password','host','port','tls','getHost','handleOpenBox','box','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen'];(function(_0xdcb269,_0xacf104){var _0x238778=function(_0x1c5e9e){while(--_0x1c5e9e){_0xdcb269['push'](_0xdcb269['shift']());}};_0x238778(++_0xacf104);}(_0xb761,0x1b8));var _0x1b76=function(_0x51639a,_0x35f006){_0x51639a=_0x51639a-0x0;var _0x3abae4=_0xb761[_0x51639a];return _0x3abae4;};'use strict';var fs=require('fs');var path=require(_0x1b76('0x0'));var util=require(_0x1b76('0x1'));var Imap=require(_0x1b76('0x2'));var _=require(_0x1b76('0x3'));var rs=require('randomstring');var simpleParser=require(_0x1b76('0x4'))[_0x1b76('0x5')];var Iconv=require(_0x1b76('0x6'))['Iconv'];var EventEmitter=require(_0x1b76('0x7'))['EventEmitter'];var utils=require(_0x1b76('0x8'));var logger=require('../../../config/logger')(_0x1b76('0x9'));function EmailImap(_0x4806ff,_0x4d19b6){this[_0x1b76('0xa')]=_0x1b76('0xb');this[_0x1b76('0xc')]=this[_0x1b76('0xd')](_0x4806ff,_0x4d19b6);this[_0x1b76('0x2')]=new Imap(this[_0x1b76('0xc')]);this[_0x1b76('0x2')][_0x1b76('0xe')](_0x1b76('0xf'),this[_0x1b76('0x10')][_0x1b76('0x11')](this));this[_0x1b76('0x2')][_0x1b76('0xe')]('end',this[_0x1b76('0x12')][_0x1b76('0x11')](this));this[_0x1b76('0x2')]['on']('error',this[_0x1b76('0x13')][_0x1b76('0x11')](this));this['imap'][_0x1b76('0x14')]();}util[_0x1b76('0x15')](EmailImap,EventEmitter);EmailImap[_0x1b76('0x16')][_0x1b76('0xd')]=function(_0x10b49b,_0x28eeb4){var _0x483cd4={'connTimeout':_0x10b49b[_0x1b76('0x17')]?_0x10b49b[_0x1b76('0x17')]*0x3e8:0x2710,'authTimeout':_0x10b49b[_0x1b76('0x18')]?_0x10b49b[_0x1b76('0x18')]*0x3e8:0x1388};if(_['isNil'](_0x10b49b[_0x1b76('0x19')])){if(_0x10b49b[_0x1b76('0x1a')]){_0x483cd4[_0x1b76('0x1b')]=_0x10b49b['user'];_0x483cd4[_0x1b76('0x1c')]=_0x10b49b[_0x1b76('0x1c')];}_0x483cd4['host']=_0x10b49b[_0x1b76('0x1d')];_0x483cd4[_0x1b76('0x1e')]=_0x10b49b[_0x1b76('0x1e')]||0x3e1;if(_0x10b49b[_0x1b76('0x1f')]){_0x483cd4[_0x1b76('0x1f')]=!![];}else{_0x483cd4[_0x1b76('0x1f')]=![];_0x483cd4['autotls']='required';}}else{_0x483cd4[_0x1b76('0x1b')]=_0x10b49b['user'];_0x483cd4[_0x1b76('0x1c')]=_0x10b49b[_0x1b76('0x1c')];_0x483cd4['host']=utils[_0x1b76('0x20')](_0x10b49b['service']);_0x483cd4[_0x1b76('0x1e')]=0x3e1;_0x483cd4[_0x1b76('0x1f')]=!![];}_0x483cd4[_0x1b76('0x9')]=_0x28eeb4||_0x10b49b[_0x1b76('0x1b')]||'anonymous@xcally.com';return _0x483cd4;};EmailImap[_0x1b76('0x16')]['handleReady']=function(){this['imap']['openBox'](this[_0x1b76('0xa')],![],this['handleOpenBox'][_0x1b76('0x11')](this));};EmailImap[_0x1b76('0x16')][_0x1b76('0x21')]=function(_0x1ff0ee,_0x219a88){if(_0x1ff0ee){this[_0x1b76('0x13')](_0x1ff0ee,!![]);}else{this['emit'](_0x1b76('0x22'),_0x219a88);this[_0x1b76('0x23')]();}};EmailImap['prototype'][_0x1b76('0x24')]=function(_0x23473f){if(_0x23473f){this[_0x1b76('0x13')](_0x23473f,!![]);}else{this['imap']['end']();}};EmailImap[_0x1b76('0x16')][_0x1b76('0x23')]=function(){this['imap'][_0x1b76('0x25')]([_0x1b76('0x26')],this[_0x1b76('0x27')][_0x1b76('0x11')](this));};EmailImap[_0x1b76('0x16')][_0x1b76('0x27')]=function(_0x45de6b,_0x36e93e){if(_0x45de6b){this[_0x1b76('0x13')](_0x45de6b,!![]);}else{if(_0x36e93e[_0x1b76('0x28')]){try{var _0x4f6509=this['imap']['fetch'](_0x36e93e,{'bodies':'','markSeen':!![]});_0x4f6509['on']('message',this['handleFetchMessage'][_0x1b76('0x11')](this));_0x4f6509[_0x1b76('0xe')]('error',this[_0x1b76('0x29')][_0x1b76('0x11')](this));_0x4f6509[_0x1b76('0xe')](_0x1b76('0x2a'),this['handleFetchEnd'][_0x1b76('0x11')](this));}catch(_0x10a65c){logger[_0x1b76('0x2b')](_0x10a65c);}}else{this['imap'][_0x1b76('0x2c')](!![],this[_0x1b76('0x24')][_0x1b76('0x11')](this));}}};EmailImap[_0x1b76('0x16')][_0x1b76('0x2d')]=function(_0x4e38e2,_0x553e43){_0x4e38e2['on'](_0x1b76('0x2e'),this[_0x1b76('0x2f')]['bind'](this));_0x4e38e2['once'](_0x1b76('0x30'),this[_0x1b76('0x31')][_0x1b76('0x11')](this));_0x4e38e2[_0x1b76('0xe')]('end',this['handleMessageEnd'][_0x1b76('0x11')](this));};EmailImap[_0x1b76('0x16')][_0x1b76('0x2f')]=function(_0x594831,_0x24cfde){simpleParser(_0x594831,{'Iconv':Iconv},this['handleSimpleParser'][_0x1b76('0x11')](this));};EmailImap['prototype'][_0x1b76('0x31')]=function(_0xc8d422){};EmailImap[_0x1b76('0x16')][_0x1b76('0x32')]=function(){};EmailImap[_0x1b76('0x16')][_0x1b76('0x33')]=function(_0x2ec8d6,_0x566988){if(_0x2ec8d6){logger[_0x1b76('0x2b')](_0x2ec8d6);}else{var _0x580a37=this;utils[_0x1b76('0x34')](this[_0x1b76('0xc')],_0x566988,function(_0x123f95){_0x580a37[_0x1b76('0x35')]('email',_0x123f95);});}};EmailImap[_0x1b76('0x16')][_0x1b76('0x36')]=function(){this['imap'][_0x1b76('0x2c')](!![],this[_0x1b76('0x24')]['bind'](this));};EmailImap[_0x1b76('0x16')][_0x1b76('0x29')]=function(_0x231521){this[_0x1b76('0x13')](_0x231521);this[_0x1b76('0x2')][_0x1b76('0x2c')](!![],this['handleCloseBox'][_0x1b76('0x11')](this));};EmailImap['prototype'][_0x1b76('0x12')]=function(){this[_0x1b76('0x35')]('end');};EmailImap[_0x1b76('0x16')][_0x1b76('0x13')]=function(_0x45a0d8,_0x2e5514){logger[_0x1b76('0x2b')](_0x1b76('0x13'),this[_0x1b76('0xc')][_0x1b76('0x9')],JSON[_0x1b76('0x37')](_0x45a0d8));var _0x53311d='';if(_0x45a0d8){if(_0x45a0d8['textCode']){_0x53311d=_0x45a0d8[_0x1b76('0x38')];}else{for(var _0x984e23 in _0x45a0d8){if(_0x45a0d8[_0x1b76('0x39')](_0x984e23)){_0x53311d+=_[_0x1b76('0x3a')](_0x984e23)+':\x20'+_0x45a0d8[_0x984e23]+'\x0a';}}}}if(_0x2e5514){this[_0x1b76('0x2')][_0x1b76('0x2a')]();}else{this[_0x1b76('0x35')](_0x1b76('0x2b'),_0x53311d);this[_0x1b76('0x35')](_0x1b76('0x2a'));}};module[_0x1b76('0x3b')]=EmailImap;
\ No newline at end of file
index 778a0ca..b6503c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf625=['verify','Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile','sendMail','toString'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xf625,0xac));var _0x5f62=function(_0x19ccea,_0x5056b2){_0x19ccea=_0x19ccea-0x0;var _0x149dd4=_0xf625[_0x19ccea];return _0x149dd4;};'use strict';var nodemailer=require(_0x5f62('0x0'));var BPromise=require(_0x5f62('0x1'));var inlineBase64=require(_0x5f62('0x2'));function EmailSmtp(){}EmailSmtp[_0x5f62('0x3')][_0x5f62('0x4')]=function(_0x4233a4,_0x35bdb7){return new BPromise(function(_0x3875aa,_0x35aebc){var _0xca5e79=nodemailer[_0x5f62('0x5')](_0x4233a4);_0xca5e79[_0x5f62('0x6')](_0x5f62('0x7'),inlineBase64());_0xca5e79[_0x5f62('0x8')](_0x35bdb7,function(_0x3e0932,_0x4819f9){if(_0x3e0932){_0x35aebc(_0x3e0932[_0x5f62('0x9')]());}else{_0x3875aa(_0x4819f9);}});});};EmailSmtp[_0x5f62('0x3')][_0x5f62('0xa')]=function(_0x38f3b3){return new BPromise(function(_0x5a21c2,_0x13a231){var _0x247575=nodemailer[_0x5f62('0x5')](_0x38f3b3);_0x247575[_0x5f62('0xa')](function(_0x16b67d,_0x5c246a){if(_0x16b67d){_0x13a231(_0x16b67d['toString']());}else{if(_0x5c246a){_0x5a21c2(_0x5c246a);}else{_0x13a231(_0x5f62('0xb'));}}});});};module[_0x5f62('0xc')]=EmailSmtp;
\ No newline at end of file
+var _0x7b14=['createTransport','compile','verify','toString','Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64','prototype'];(function(_0x1680d3,_0x54186f){var _0x3ecd9a=function(_0x3e638a){while(--_0x3e638a){_0x1680d3['push'](_0x1680d3['shift']());}};_0x3ecd9a(++_0x54186f);}(_0x7b14,0x16e));var _0x47b1=function(_0x3b0ed2,_0x4c1066){_0x3b0ed2=_0x3b0ed2-0x0;var _0x1d70e0=_0x7b14[_0x3b0ed2];return _0x1d70e0;};'use strict';var nodemailer=require(_0x47b1('0x0'));var BPromise=require(_0x47b1('0x1'));var inlineBase64=require(_0x47b1('0x2'));function EmailSmtp(){}EmailSmtp[_0x47b1('0x3')]['send']=function(_0x578090,_0x2cff55){return new BPromise(function(_0x22e8bb,_0x59bd0f){var _0x52cd02=nodemailer[_0x47b1('0x4')](_0x578090);_0x52cd02['use'](_0x47b1('0x5'),inlineBase64());_0x52cd02['sendMail'](_0x2cff55,function(_0x331b74,_0x1bb13d){if(_0x331b74){_0x59bd0f(_0x331b74['toString']());}else{_0x22e8bb(_0x1bb13d);}});});};EmailSmtp['prototype'][_0x47b1('0x6')]=function(_0x12578f){return new BPromise(function(_0xa16277,_0x11e8e7){var _0x24f6fe=nodemailer[_0x47b1('0x4')](_0x12578f);_0x24f6fe['verify'](function(_0x37021,_0x2b4041){if(_0x37021){_0x11e8e7(_0x37021[_0x47b1('0x7')]());}else{if(_0x2b4041){_0xa16277(_0x2b4041);}else{_0x11e8e7(_0x47b1('0x8'));}}});});};module[_0x47b1('0x9')]=EmailSmtp;
\ No newline at end of file
index 266a63a..822ffab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4024=['moment','path','util','../../../config/logger','../../../config/environment','value','address','generate','name','length','join','head','split','pop','isEmpty','anonymous','@xcally.com','test','html','replace','<img','attachments','forEach','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','message','originTo','email','originCc','includes','attach','type','%s-%s','now','root','content','contentType','parser','from','messageId','inReplyTo','date','format','textAsHtml','filter','application/ms-tnef','info','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','imap.gmail.com','yahoo','hotmail','outlook365','outlook.office365.com','lodash'];(function(_0x1b526f,_0x2bfa2a){var _0x4f3a52=function(_0xaf8e5e){while(--_0xaf8e5e){_0x1b526f['push'](_0x1b526f['shift']());}};_0x4f3a52(++_0x2bfa2a);}(_0x4024,0x89));var _0x4402=function(_0x1140fd,_0x3e531b){_0x1140fd=_0x1140fd-0x0;var _0xa52806=_0x4024[_0x1140fd];return _0xa52806;};'use strict';var _=require(_0x4402('0x0'));var moment=require(_0x4402('0x1'));var random=require('randomstring');var fs=require('fs');var path=require(_0x4402('0x2'));var util=require(_0x4402('0x3'));var tnef=require('node-tnef');var logger=require(_0x4402('0x4'))('email');var config=require(_0x4402('0x5'));function getAddress(_0x117f90){var _0x5bdb3f=_['head'](_0x117f90[_0x4402('0x6')]);return _0x5bdb3f&&_0x5bdb3f[_0x4402('0x7')]?_0x5bdb3f[_0x4402('0x7')]:'anonymous'+random[_0x4402('0x8')](0x6)+'@xcally.com';}function getFirstName(_0x5c0b70){var _0x734aae=_['head'](_0x5c0b70['value']);if(_0x734aae&&_0x734aae[_0x4402('0x9')]){var _0x4f56aa=_0x734aae[_0x4402('0x9')]['split'](/\s+/);return _0x4f56aa[_0x4402('0xa')]?_0x4f56aa['slice'](0x0,-0x1)[_0x4402('0xb')]('\x20'):_0x734aae[_0x4402('0x9')];}return'Anonymous';}function getLastName(_0x949ab7){var _0x302c4d=_[_0x4402('0xc')](_0x949ab7['value']);if(_0x302c4d&&_0x302c4d[_0x4402('0x9')]){var _0x34d952=_0x302c4d[_0x4402('0x9')][_0x4402('0xd')](/\s+/);return _0x34d952[_0x4402('0xa')]>0x1?_0x34d952[_0x4402('0xe')]():'';}return'';}function getMails(_0x18c7a8,_0x3c7dd2){var _0x295ac5='';for(var _0x263a57=0x0;_0x263a57<_0x3c7dd2[_0x4402('0x6')][_0x4402('0xa')];_0x263a57+=0x1){if(_0x3c7dd2[_0x4402('0x6')][_0x263a57][_0x4402('0x7')]!==_0x18c7a8){if(!_[_0x4402('0xf')](_0x295ac5)){_0x295ac5+=',';}_0x295ac5+=_0x3c7dd2[_0x4402('0x6')][_0x263a57][_0x4402('0x9')]||_0x3c7dd2[_0x4402('0x6')][_0x263a57][_0x4402('0x7')]||'';_0x295ac5+='\x20<';_0x295ac5+=_0x3c7dd2[_0x4402('0x6')][_0x263a57]['address']?_0x3c7dd2['value'][_0x263a57][_0x4402('0x7')]:_0x4402('0x10')+random['generate'](0x6)+_0x4402('0x11');_0x295ac5+='>';}}return _0x295ac5;}function parseEmail(_0x192855,_0x5cb0c5,_0x38b459){if(_0x5cb0c5['html']){var _0x55cc8c=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x55cc8c[_0x4402('0x12')](_0x5cb0c5[_0x4402('0x13')])){_0x5cb0c5[_0x4402('0x13')]=_0x5cb0c5['html'][_0x4402('0x14')](_0x55cc8c,'');}if(_0x5cb0c5['html']['includes'](_0x4402('0x15'))){var _0x275c70=[];_0x5cb0c5[_0x4402('0x16')][_0x4402('0x17')](_0x258d10=>{_0x275c70[_0x4402('0x18')](_0x258d10[_0x4402('0x19')]);});var _0x6b1fc5=/<img.*? _SRC(.*?)[^\>]+>/g;var _0x24a9b8=/src=\"data:image\/([a-zA-Z]*);base64,([^\"]*)\"/g;var _0x4d6846=_0x5cb0c5[_0x4402('0x13')]['replace'](_0x24a9b8,_0x4402('0x1a'));var _0x5ab28d=_0x4d6846[_0x4402('0x14')](_0x6b1fc5,_0x4402('0x1b'));for(let _0x5a43d0=0x0;_0x5a43d0<_0x275c70[_0x4402('0xa')];_0x5a43d0++){var _0x4e9cb5=_0x5ab28d['replace'](_0x4402('0x1b'),_0x4402('0x1c')+_0x275c70[_0x5a43d0]+_0x4402('0x1d'));_0x5ab28d=_0x4e9cb5;}_0x5cb0c5[_0x4402('0x13')]=_0x5ab28d;}_0x38b459[_0x4402('0x1e')]=_0x5cb0c5['html'];}else{_0x38b459[_0x4402('0x1e')]=_0x5cb0c5['textAsHtml'];}if(_0x38b459[_0x4402('0x1e')]){_0x38b459[_0x4402('0x1e')]=_0x38b459[_0x4402('0x1e')]['replace'](/<a\s+/gi,_0x4402('0x1f'));}if(_0x5cb0c5['to']){_0x38b459[_0x4402('0x20')][_0x4402('0x21')]=getMails(null,_0x5cb0c5['to']);var _0x3f4bcb=getMails(_0x192855[_0x4402('0x22')],_0x5cb0c5['to']);if(!_[_0x4402('0xf')](_0x3f4bcb)){_0x38b459[_0x4402('0x20')]['cc']+=_0x3f4bcb;}}if(_0x5cb0c5['cc']){_0x38b459[_0x4402('0x20')][_0x4402('0x23')]=getMails(null,_0x5cb0c5['cc']);var _0xd46d0=getMails(_0x192855[_0x4402('0x22')],_0x5cb0c5['cc']);if(!_['isEmpty'](_0xd46d0)){if(!_[_0x4402('0xf')](_0x38b459['message']['cc'])){_0x38b459[_0x4402('0x20')]['cc']+=',';}_0x38b459['message']['cc']+=_0xd46d0;}}if(!_[_0x4402('0x24')](_0x38b459[_0x4402('0x20')][_0x4402('0x21')],_0x192855[_0x4402('0x22')])&&!_[_0x4402('0x24')](_0x38b459['message'][_0x4402('0x23')],_0x192855[_0x4402('0x22')])){_0x38b459[_0x4402('0x20')]['bcc']=_0x192855[_0x4402('0x22')];}if(_0x5cb0c5[_0x4402('0x16')]&&_0x5cb0c5['attachments'][_0x4402('0xa')]){_0x38b459[_0x4402('0x20')][_0x4402('0x25')]=_0x5cb0c5[_0x4402('0x16')][_0x4402('0xa')];for(var _0x235f30=0x0,_0x1e67ac,_0x6e9fb7,_0xd66864;_0x235f30<_0x5cb0c5['attachments'][_0x4402('0xa')];_0x235f30+=0x1){if(_0x5cb0c5[_0x4402('0x16')][_0x235f30][_0x4402('0x26')]==='attachment'){_0xd66864=_0x5cb0c5[_0x4402('0x16')][_0x235f30][_0x4402('0x19')]||'attachment-'+_0x235f30;_0x1e67ac=util['format'](_0x4402('0x27'),Date[_0x4402('0x28')](),_0xd66864);_0x6e9fb7=path[_0x4402('0xb')](config[_0x4402('0x29')],'server/files/attachments/',_0x1e67ac);fs['writeFileSync'](_0x6e9fb7,_0x5cb0c5['attachments'][_0x235f30][_0x4402('0x2a')]);_0x38b459[_0x4402('0x20')][_0x4402('0x16')][_0x4402('0x18')]({'name':_0xd66864,'basename':_0x1e67ac,'type':_0x5cb0c5['attachments'][_0x235f30][_0x4402('0x2b')],'filepath':_0x6e9fb7});}}}return _0x38b459;}exports[_0x4402('0x2c')]=function(_0x35f877,_0x57843d,_0x2b92b7){var _0x5aca7b={'from':getAddress(_0x57843d[_0x4402('0x2d')]),'firstName':getFirstName(_0x57843d[_0x4402('0x2d')]),'lastName':getLastName(_0x57843d['from']),'mapKey':_0x4402('0x22'),'message':{'from':getMails(_0x35f877['email'],_0x57843d[_0x4402('0x2d')]),'to':_0x35f877[_0x4402('0x22')],'cc':'','subject':_0x57843d['subject']||'','messageId':_0x57843d[_0x4402('0x2e')],'inReplyTo':_0x57843d[_0x4402('0x2f')],'sentAt':moment(_0x57843d[_0x4402('0x30')])[_0x4402('0x31')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x57843d['html']&&!_0x57843d[_0x4402('0x32')]){var _0x47a3a3=_[_0x4402('0x33')](_0x57843d[_0x4402('0x16')],{'contentType':_0x4402('0x34')});if(_0x47a3a3[_0x4402('0xa')]){logger[_0x4402('0x35')](util[_0x4402('0x31')](_0x4402('0x36'),_0x57843d[_0x4402('0x2e')]));tnef[_0x4402('0x37')](_[_0x4402('0x38')](_0x47a3a3)['content'],function(_0x14b94b,_0x3236fc){if(_0x3236fc){_0x57843d['html']=_0x3236fc[_0x4402('0x39')]||_0x4402('0x3a');if(_0x3236fc['Attachments']){for(var _0x4115d6=0x0;_0x4115d6<_0x3236fc[_0x4402('0x3b')][_0x4402('0xa')];_0x4115d6++){var _0x3278fc=_0x3236fc[_0x4402('0x3b')][_0x4115d6];_0x5aca7b['message'][_0x4402('0x16')][_0x4402('0x18')]({'filename':_0x3278fc[_0x4402('0x3c')],'content':new Buffer(_0x3278fc[_0x4402('0x3d')])});}}}_0x2b92b7(parseEmail(_0x35f877,_0x57843d,_0x5aca7b));});}else{_0x57843d[_0x4402('0x13')]=_0x4402('0x3a');_0x2b92b7(parseEmail(_0x35f877,_0x57843d,_0x5aca7b));}}else{_0x2b92b7(parseEmail(_0x35f877,_0x57843d,_0x5aca7b));}};exports[_0x4402('0x3e')]=function(_0x136c9c){switch(_0x136c9c){case _0x4402('0x3f'):return _0x4402('0x40');case _0x4402('0x41'):return'imap.mail.yahoo.com';case _0x4402('0x42'):return'imap-mail.outlook.com';case _0x4402('0x43'):return _0x4402('0x44');}return'127.0.0.1';};
\ No newline at end of file
+var _0xfb0b=['join','Anonymous','pop','isEmpty','generate','html','test','replace','includes','<img','attachments','forEach','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','message','originTo','email','originCc','bcc','attach','type','attachment','format','%s-%s','root','server/files/attachments/','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','indexOf','line','isAutoreply','parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','content','BodyHTML','<p>Empty\x20message</p>','Attachments','push','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','moment','randomstring','util','node-tnef','../../../config/environment','head','value','address','anonymous','@xcally.com','name','substring','split','length','slice'];(function(_0x59a1ce,_0x529ec9){var _0x5b773f=function(_0x435f17){while(--_0x435f17){_0x59a1ce['push'](_0x59a1ce['shift']());}};_0x5b773f(++_0x529ec9);}(_0xfb0b,0x94));var _0xbfb0=function(_0x5baf26,_0x4bd2b9){_0x5baf26=_0x5baf26-0x0;var _0x109667=_0xfb0b[_0x5baf26];return _0x109667;};'use strict';var _=require(_0xbfb0('0x0'));var moment=require(_0xbfb0('0x1'));var random=require(_0xbfb0('0x2'));var fs=require('fs');var path=require('path');var util=require(_0xbfb0('0x3'));var tnef=require(_0xbfb0('0x4'));var logger=require('../../../config/logger')('email');var config=require(_0xbfb0('0x5'));function getAddress(_0x4ac75d){var _0x238a87=_[_0xbfb0('0x6')](_0x4ac75d[_0xbfb0('0x7')]);return _0x238a87&&_0x238a87[_0xbfb0('0x8')]?_0x238a87[_0xbfb0('0x8')]:_0xbfb0('0x9')+random['generate'](0x6)+_0xbfb0('0xa');}function getFirstName(_0x1afe32){var _0x373a86=_[_0xbfb0('0x6')](_0x1afe32['value']);if(_0x373a86&&_0x373a86['name']){if(_0x373a86['name']==_0x373a86['address']){return _0x373a86[_0xbfb0('0xb')][_0xbfb0('0xc')](0x0,_0x373a86[_0xbfb0('0xb')]['indexOf']('@'));}var _0x26b1bd=_0x373a86['name'][_0xbfb0('0xd')](/\s+/);return _0x26b1bd[_0xbfb0('0xe')]>0x1?_0x26b1bd[_0xbfb0('0xf')](0x0,-0x1)[_0xbfb0('0x10')]('\x20'):_0x373a86[_0xbfb0('0xb')];}return _0xbfb0('0x11');}function getLastName(_0x5c7ce7){var _0x1883ec=_['head'](_0x5c7ce7['value']);if(_0x1883ec&&_0x1883ec['name']){var _0x141e62=_0x1883ec[_0xbfb0('0xb')][_0xbfb0('0xd')](/\s+/);return _0x141e62[_0xbfb0('0xe')]>0x1?_0x141e62[_0xbfb0('0x12')]():'';}return'';}function getMails(_0x213994,_0x2470cf){var _0x2d8773='';for(var _0x315b80=0x0;_0x315b80<_0x2470cf[_0xbfb0('0x7')][_0xbfb0('0xe')];_0x315b80+=0x1){if(_0x2470cf['value'][_0x315b80]['address']!==_0x213994){if(!_[_0xbfb0('0x13')](_0x2d8773)){_0x2d8773+=',';}_0x2d8773+=_0x2470cf[_0xbfb0('0x7')][_0x315b80]['name']||_0x2470cf[_0xbfb0('0x7')][_0x315b80][_0xbfb0('0x8')]||'';_0x2d8773+='\x20<';_0x2d8773+=_0x2470cf['value'][_0x315b80][_0xbfb0('0x8')]?_0x2470cf['value'][_0x315b80][_0xbfb0('0x8')]:_0xbfb0('0x9')+random[_0xbfb0('0x14')](0x6)+_0xbfb0('0xa');_0x2d8773+='>';}}return _0x2d8773;}function parseEmail(_0x57f0f5,_0x31c2eb,_0x5219c3){if(_0x31c2eb[_0xbfb0('0x15')]){var _0x5317fe=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x5317fe[_0xbfb0('0x16')](_0x31c2eb['html'])){_0x31c2eb[_0xbfb0('0x15')]=_0x31c2eb['html'][_0xbfb0('0x17')](_0x5317fe,'');}if(_0x31c2eb[_0xbfb0('0x15')][_0xbfb0('0x18')](_0xbfb0('0x19'))){var _0x515d0f=[];_0x31c2eb[_0xbfb0('0x1a')][_0xbfb0('0x1b')](_0x4b174f=>{_0x515d0f['push'](_0x4b174f[_0xbfb0('0x1c')]);});var _0x1e4a2e=/<img.*? _SRC(.*?)[^>]+>/g;var _0x39c5f8=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x52e7e5=_0x31c2eb[_0xbfb0('0x15')]['replace'](_0x39c5f8,_0xbfb0('0x1d'));var _0x46dac3=_0x52e7e5[_0xbfb0('0x17')](_0x1e4a2e,_0xbfb0('0x1e'));for(let _0x1ecd46=0x0;_0x1ecd46<_0x515d0f[_0xbfb0('0xe')];_0x1ecd46++){var _0xb41263=_0x46dac3['replace'](_0xbfb0('0x1e'),_0xbfb0('0x1f')+_0x515d0f[_0x1ecd46]+_0xbfb0('0x20'));_0x46dac3=_0xb41263;}_0x31c2eb[_0xbfb0('0x15')]=_0x46dac3;}_0x5219c3['body']=_0x31c2eb[_0xbfb0('0x15')];}else{_0x5219c3[_0xbfb0('0x21')]=_0x31c2eb['textAsHtml'];}if(_0x5219c3[_0xbfb0('0x21')]){_0x5219c3[_0xbfb0('0x21')]=_0x5219c3[_0xbfb0('0x21')][_0xbfb0('0x17')](/<a\s+/gi,_0xbfb0('0x22'));}if(_0x31c2eb['to']){_0x5219c3[_0xbfb0('0x23')][_0xbfb0('0x24')]=getMails(null,_0x31c2eb['to']);var _0x1a9fe2=getMails(_0x57f0f5[_0xbfb0('0x25')],_0x31c2eb['to']);if(!_[_0xbfb0('0x13')](_0x1a9fe2)){_0x5219c3[_0xbfb0('0x23')]['cc']+=_0x1a9fe2;}}if(_0x31c2eb['cc']){_0x5219c3[_0xbfb0('0x23')]['originCc']=getMails(null,_0x31c2eb['cc']);var _0x5e43f0=getMails(_0x57f0f5['email'],_0x31c2eb['cc']);if(!_[_0xbfb0('0x13')](_0x5e43f0)){if(!_[_0xbfb0('0x13')](_0x5219c3[_0xbfb0('0x23')]['cc'])){_0x5219c3[_0xbfb0('0x23')]['cc']+=',';}_0x5219c3[_0xbfb0('0x23')]['cc']+=_0x5e43f0;}}if(!_[_0xbfb0('0x18')](_0x5219c3[_0xbfb0('0x23')][_0xbfb0('0x24')],_0x57f0f5['email'])&&!_['includes'](_0x5219c3['message'][_0xbfb0('0x26')],_0x57f0f5[_0xbfb0('0x25')])){_0x5219c3[_0xbfb0('0x23')][_0xbfb0('0x27')]=_0x57f0f5[_0xbfb0('0x25')];}if(_0x31c2eb['attachments']&&_0x31c2eb['attachments'][_0xbfb0('0xe')]){_0x5219c3[_0xbfb0('0x23')][_0xbfb0('0x28')]=_0x31c2eb[_0xbfb0('0x1a')][_0xbfb0('0xe')];for(var _0x6665a0=0x0,_0x434703,_0x269f1a,_0x1b9438;_0x6665a0<_0x31c2eb[_0xbfb0('0x1a')]['length'];_0x6665a0+=0x1){if(_0x31c2eb['attachments'][_0x6665a0][_0xbfb0('0x29')]===_0xbfb0('0x2a')){_0x1b9438=_0x31c2eb['attachments'][_0x6665a0][_0xbfb0('0x1c')]||'attachment-'+_0x6665a0;_0x434703=util[_0xbfb0('0x2b')](_0xbfb0('0x2c'),Date['now'](),_0x1b9438);_0x269f1a=path['join'](config[_0xbfb0('0x2d')],_0xbfb0('0x2e'),_0x434703);fs['writeFileSync'](_0x269f1a,_0x31c2eb[_0xbfb0('0x1a')][_0x6665a0]['content']);_0x5219c3[_0xbfb0('0x23')]['attachments']['push']({'name':_0x1b9438,'basename':_0x434703,'type':_0x31c2eb[_0xbfb0('0x1a')][_0x6665a0][_0xbfb0('0x2f')],'filepath':_0x269f1a});}}}if(_0x31c2eb[_0xbfb0('0x30')]&&_0x31c2eb[_0xbfb0('0x30')][_0xbfb0('0xe')]>0x0){var _0x58fa70=[_0xbfb0('0x31'),_0xbfb0('0x32'),_0xbfb0('0x33')];for(var _0x3958c8=0x0;_0x3958c8<_0x31c2eb[_0xbfb0('0x30')][_0xbfb0('0xe')];_0x3958c8++){var _0x14c3bf=_[_0xbfb0('0x34')](_0x58fa70,_0x31c2eb[_0xbfb0('0x30')][_0x3958c8][_0xbfb0('0x35')]);if(_0x14c3bf>=0x0){_0x5219c3[_0xbfb0('0x36')]=!![];}}}return _0x5219c3;}exports[_0xbfb0('0x37')]=function(_0x43859e,_0x3caaf3,_0x374175){var _0x11804d={'from':getAddress(_0x3caaf3[_0xbfb0('0x38')]),'firstName':getFirstName(_0x3caaf3[_0xbfb0('0x38')]),'lastName':getLastName(_0x3caaf3['from']),'mapKey':_0xbfb0('0x25'),'message':{'from':getMails(_0x43859e[_0xbfb0('0x25')],_0x3caaf3[_0xbfb0('0x38')]),'to':_0x43859e[_0xbfb0('0x25')],'cc':'','subject':_0x3caaf3[_0xbfb0('0x39')]||'','messageId':_0x3caaf3[_0xbfb0('0x3a')],'inReplyTo':_0x3caaf3[_0xbfb0('0x3b')],'sentAt':moment(_0x3caaf3[_0xbfb0('0x3c')])[_0xbfb0('0x2b')](_0xbfb0('0x3d')),'attach':![],'attachments':[]}};if(!_0x3caaf3['html']&&!_0x3caaf3['textAsHtml']){var _0xd7a3ff=_[_0xbfb0('0x3e')](_0x3caaf3['attachments'],{'contentType':'application/ms-tnef'});if(_0xd7a3ff[_0xbfb0('0xe')]){logger[_0xbfb0('0x3f')](util[_0xbfb0('0x2b')](_0xbfb0('0x40'),_0x3caaf3[_0xbfb0('0x3a')]));tnef[_0xbfb0('0x41')](_['first'](_0xd7a3ff)[_0xbfb0('0x42')],function(_0x373e03,_0x13d881){if(_0x13d881){_0x3caaf3[_0xbfb0('0x15')]=_0x13d881[_0xbfb0('0x43')]||_0xbfb0('0x44');if(_0x13d881[_0xbfb0('0x45')]){for(var _0x8887b0=0x0;_0x8887b0<_0x13d881[_0xbfb0('0x45')][_0xbfb0('0xe')];_0x8887b0++){var _0x28342a=_0x13d881[_0xbfb0('0x45')][_0x8887b0];_0x11804d[_0xbfb0('0x23')][_0xbfb0('0x1a')][_0xbfb0('0x46')]({'filename':_0x28342a[_0xbfb0('0x47')],'content':Buffer[_0xbfb0('0x38')](_0x28342a[_0xbfb0('0x48')])});}}}_0x374175(parseEmail(_0x43859e,_0x3caaf3,_0x11804d));});}else{_0x3caaf3[_0xbfb0('0x15')]=_0xbfb0('0x44');_0x374175(parseEmail(_0x43859e,_0x3caaf3,_0x11804d));}}else{_0x374175(parseEmail(_0x43859e,_0x3caaf3,_0x11804d));}};exports[_0xbfb0('0x49')]=function(_0xa45778){switch(_0xa45778){case _0xbfb0('0x4a'):return _0xbfb0('0x4b');case'yahoo':return _0xbfb0('0x4c');case _0xbfb0('0x4d'):return _0xbfb0('0x4e');case _0xbfb0('0x4f'):return _0xbfb0('0x50');}return _0xbfb0('0x51');};
\ No newline at end of file
index f71c1a6..543b875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9a6=['Imap','Smtp','exports','name','Service','key','SERV','active'];(function(_0x566634,_0x5bc92e){var _0xfddd27=function(_0x2c953f){while(--_0x2c953f){_0x566634['push'](_0x566634['shift']());}};_0xfddd27(++_0x5bc92e);}(_0xf9a6,0x1ab));var _0x6f9a=function(_0xc2a63d,_0x360376){_0xc2a63d=_0xc2a63d-0x0;var _0x2e06e6=_0xf9a6[_0xc2a63d];return _0x2e06e6;};'use strict';var _=require('lodash');function MailAccount(_0x19eb48){this['id']=_0x19eb48['id']||0x0;this['name']=_0x19eb48[_0x6f9a('0x0')]||_0x6f9a('0x1');this[_0x6f9a('0x2')]=_0x19eb48[_0x6f9a('0x2')]||_0x6f9a('0x3');this[_0x6f9a('0x4')]=_0x19eb48['active']||![];this[_0x6f9a('0x5')]=_0x19eb48[_0x6f9a('0x5')]||[];this[_0x6f9a('0x6')]=_0x19eb48[_0x6f9a('0x6')]||[];}module[_0x6f9a('0x7')]=MailAccount;
\ No newline at end of file
+var _0x16aa=['lodash','name','Service','key','SERV','active','Imap','Smtp'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x16aa,0x140));var _0xa16a=function(_0x5a6cb1,_0x4f3a1a){_0x5a6cb1=_0x5a6cb1-0x0;var _0x40425b=_0x16aa[_0x5a6cb1];return _0x40425b;};'use strict';var _=require(_0xa16a('0x0'));function MailAccount(_0x6ddff8){this['id']=_0x6ddff8['id']||0x0;this[_0xa16a('0x1')]=_0x6ddff8['name']||_0xa16a('0x2');this[_0xa16a('0x3')]=_0x6ddff8[_0xa16a('0x3')]||_0xa16a('0x4');this[_0xa16a('0x5')]=_0x6ddff8[_0xa16a('0x5')]||![];this['Imap']=_0x6ddff8[_0xa16a('0x6')]||[];this[_0xa16a('0x7')]=_0x6ddff8['Smtp']||[];}module['exports']=MailAccount;
\ No newline at end of file
index 7ba7d15..7072bbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af2=['merge','exports','lodash','mailAccounts','prototype','mergeFromDatabase','hasOwnProperty','initMailAccounts','length','isUndefined'];(function(_0xebf8d2,_0x45d866){var _0x25af21=function(_0x483a6c){while(--_0x483a6c){_0xebf8d2['push'](_0xebf8d2['shift']());}};_0x25af21(++_0x45d866);}(_0x1af2,0x110));var _0x21af=function(_0x12c66e,_0xea7b4){_0x12c66e=_0x12c66e-0x0;var _0x19481a=_0x1af2[_0x12c66e];return _0x19481a;};'use strict';var _=require(_0x21af('0x0'));var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0x21af('0x1')]={};};function freeIsNotKey(_0x369e74,_0x4ee043,_0x2e0dc8){var _0xf9873b=_['mapKeys'](_0x369e74,function(_0x5a871c,_0x548757){return _0x5a871c[_0x2e0dc8];});for(var _0x5b403e in _0x4ee043){if(_0x4ee043['hasOwnProperty'](_0x5b403e)){if(!_0xf9873b[_0x5b403e]){delete _0x4ee043[_0x5b403e];}}}}Realtime[_0x21af('0x2')][_0x21af('0x3')]=function(_0x5ceae3,_0x4cfe22){for(var _0x2cf8e9 in _0x4cfe22){if(_0x5ceae3[_0x21af('0x4')](_0x2cf8e9)){_0x5ceae3[_0x2cf8e9]=_0x4cfe22[_0x2cf8e9];}}};Realtime['prototype'][_0x21af('0x5')]=function(){var _0x4071ad=this;return function(_0x1886a1){if(_0x1886a1){freeIsNotKey(_0x1886a1,_0x4071ad[_0x21af('0x1')],'id');for(var _0x365a1c=0x0,_0x20868a={},_0x3172ac={};_0x365a1c<_0x1886a1[_0x21af('0x6')];_0x365a1c+=0x1){_0x20868a=_0x1886a1[_0x365a1c];if(_[_0x21af('0x7')](_0x4071ad[_0x21af('0x1')][_0x20868a['id']])){_0x4071ad[_0x21af('0x1')][_0x20868a['id']]=new MailAccount(_0x20868a);}else{_[_0x21af('0x8')](_0x4071ad[_0x21af('0x1')][_0x20868a['id']],_0x20868a);}}}return _0x4071ad[_0x21af('0x1')];};};module[_0x21af('0x9')]=Realtime;
\ No newline at end of file
+var _0x2752=['merge','exports','lodash','mailAccounts','hasOwnProperty','prototype','mergeFromDatabase','length','isUndefined'];(function(_0x4cb587,_0x596bcd){var _0x39871d=function(_0x3c445e){while(--_0x3c445e){_0x4cb587['push'](_0x4cb587['shift']());}};_0x39871d(++_0x596bcd);}(_0x2752,0x12b));var _0x2275=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2752[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x2275('0x0'));var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0x2275('0x1')]={};};function freeIsNotKey(_0x51435b,_0x1ed869,_0x21d56c){var _0x3bec2b=_['mapKeys'](_0x51435b,function(_0x99bef9,_0x1819c1){return _0x99bef9[_0x21d56c];});for(var _0x45e9ca in _0x1ed869){if(_0x1ed869[_0x2275('0x2')](_0x45e9ca)){if(!_0x3bec2b[_0x45e9ca]){delete _0x1ed869[_0x45e9ca];}}}}Realtime[_0x2275('0x3')][_0x2275('0x4')]=function(_0x48e596,_0x1ef09f){for(var _0x4ec32f in _0x1ef09f){if(_0x48e596['hasOwnProperty'](_0x4ec32f)){_0x48e596[_0x4ec32f]=_0x1ef09f[_0x4ec32f];}}};Realtime[_0x2275('0x3')]['initMailAccounts']=function(){var _0x1858e2=this;return function(_0x8e8c7f){if(_0x8e8c7f){freeIsNotKey(_0x8e8c7f,_0x1858e2[_0x2275('0x1')],'id');for(var _0x96970=0x0,_0x18fd04={},_0x4dc9ae={};_0x96970<_0x8e8c7f[_0x2275('0x5')];_0x96970+=0x1){_0x18fd04=_0x8e8c7f[_0x96970];if(_[_0x2275('0x6')](_0x1858e2[_0x2275('0x1')][_0x18fd04['id']])){_0x1858e2[_0x2275('0x1')][_0x18fd04['id']]=new MailAccount(_0x18fd04);}else{_[_0x2275('0x7')](_0x1858e2[_0x2275('0x1')][_0x18fd04['id']],_0x18fd04);}}}return _0x1858e2['mailAccounts'];};};module[_0x2275('0x8')]=Realtime;
\ No newline at end of file
index 4168410..cab1013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bb4=['../client','getMailAccounts','Request','GetMailAccount','name','email','key','TemplateId','Imap','MailServerOut','Smtp','notify','NotifyMailAccount'];(function(_0x1df7b8,_0x2fe5e5){var _0x29d911=function(_0x340121){while(--_0x340121){_0x1df7b8['push'](_0x1df7b8['shift']());}};_0x29d911(++_0x2fe5e5);}(_0x1bb4,0x1c7));var _0x41bb=function(_0x58825b,_0x8e3bd2){_0x58825b=_0x58825b-0x0;var _0x4f576b=_0x1bb4[_0x58825b];return _0x4f576b;};'use strict';var client=require(_0x41bb('0x0'));exports[_0x41bb('0x1')]=function(){return function(){return client[_0x41bb('0x2')](_0x41bb('0x3'),{'options':{'attributes':['id',_0x41bb('0x4'),'service',_0x41bb('0x5'),'active',_0x41bb('0x6'),'ListId',_0x41bb('0x7')],'raw':![],'include':[{'model':'MailServerIn','as':_0x41bb('0x8')},{'model':_0x41bb('0x9'),'as':_0x41bb('0xa')}]},'log':'getMailAccount'});};};exports[_0x41bb('0xb')]=function(_0x3dc644,_0x4af8b1){return client[_0x41bb('0x2')](_0x41bb('0xc'),{'account':{'id':_0x3dc644},'body':_0x4af8b1,'log':_0x41bb('0xc')});};
\ No newline at end of file
+var _0x9d56=['notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','service','email','active','key','ListId','MailServerIn','Imap','MailServerOut','Smtp','getMailAccount'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x9d56,0x122));var _0x69d5=function(_0x3d7243,_0x33ca72){_0x3d7243=_0x3d7243-0x0;var _0x4012be=_0x9d56[_0x3d7243];return _0x4012be;};'use strict';var client=require(_0x69d5('0x0'));exports[_0x69d5('0x1')]=function(){return function(){return client[_0x69d5('0x2')](_0x69d5('0x3'),{'options':{'attributes':['id','name',_0x69d5('0x4'),_0x69d5('0x5'),_0x69d5('0x6'),_0x69d5('0x7'),_0x69d5('0x8'),'TemplateId'],'raw':![],'include':[{'model':_0x69d5('0x9'),'as':_0x69d5('0xa')},{'model':_0x69d5('0xb'),'as':_0x69d5('0xc')}]},'log':_0x69d5('0xd')});};};exports[_0x69d5('0xe')]=function(_0x825bb5,_0xa9dc3c){return client[_0x69d5('0x2')](_0x69d5('0xf'),{'account':{'id':_0x825bb5},'body':_0xa9dc3c,'log':_0x69d5('0xf')});};
\ No newline at end of file
index 0473f84..826b5fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe768=['../client','ShowSetting','loginMailFrequency'];(function(_0xeec5a4,_0x363f51){var _0x5aab50=function(_0x1923cf){while(--_0x1923cf){_0xeec5a4['push'](_0xeec5a4['shift']());}};_0x5aab50(++_0x363f51);}(_0xe768,0xd5));var _0x8e76=function(_0x1c31c7,_0x477bb9){_0x1c31c7=_0x1c31c7-0x0;var _0x5c62c9=_0xe768[_0x1c31c7];return _0x5c62c9;};'use strict';var client=require(_0x8e76('0x0'));exports['getSettings']=function(){return client['Request'](_0x8e76('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x8e76('0x2')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0xe099=['../client','ShowSetting','loginMailFrequency','GetSettings'];(function(_0x1665a8,_0x18bdea){var _0x511fa1=function(_0x25e67a){while(--_0x25e67a){_0x1665a8['push'](_0x1665a8['shift']());}};_0x511fa1(++_0x18bdea);}(_0xe099,0x110));var _0x9e09=function(_0x47dec8,_0x3ebc87){_0x47dec8=_0x47dec8-0x0;var _0x17cd5d=_0xe099[_0x47dec8];return _0x17cd5d;};'use strict';var client=require(_0x9e09('0x0'));exports['getSettings']=function(){return client['Request'](_0x9e09('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x9e09('0x2')]},'log':_0x9e09('0x3')});};
\ No newline at end of file
index ce01d3a..81cb75b 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'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 a53d108..4576d37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd46=['sticky-session','../../config/environment','createServer','listen','port','socket.io','polling','redis','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','once','listening','exports','lodash','http','express'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0xfd46,0xba));var _0x6fd4=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xfd46[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0x6fd4('0x0'));var http=require(_0x6fd4('0x1'));var express=require(_0x6fd4('0x2'));var sticky=require(_0x6fd4('0x3'));var Redis=require('ioredis');var config=require(_0x6fd4('0x4'));var app=express();var server=http[_0x6fd4('0x5')](app);server['timeout']=0xdbba0;if(sticky[_0x6fd4('0x6')](server,config[_0x6fd4('0x7')])){var socketio=require(_0x6fd4('0x8'))(server,{'transports':['websocket',_0x6fd4('0x9')]});config['redis']=_['defaults'](config[_0x6fd4('0xa')],{'host':_0x6fd4('0xb'),'port':0x18eb});socketio[_0x6fd4('0xc')](require(_0x6fd4('0xd'))({'pubClient':new Redis(config[_0x6fd4('0xa')]),'subClient':new Redis(config['redis'])}));require(_0x6fd4('0xe'))[_0x6fd4('0xf')]();require(_0x6fd4('0x10'))[_0x6fd4('0xf')](socketio);require(_0x6fd4('0x11'))[_0x6fd4('0xf')](app);require('../../routes')[_0x6fd4('0xf')](app);}else{server[_0x6fd4('0x12')](_0x6fd4('0x13'),function(){console['log']('Express\x20server\x20listening\x20on\x20port\x20%d!',config['port']);});}exports=module[_0x6fd4('0x14')]=app;
\ No newline at end of file
+var _0x9971=['../../config/socketio','default','../../config/express','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','express','../../config/environment','createServer','listen','socket.io','polling','redis','defaults','localhost','adapter','socket.io-redis'];(function(_0x107f10,_0x5529f2){var _0x811cab=function(_0xc160ea){while(--_0xc160ea){_0x107f10['push'](_0x107f10['shift']());}};_0x811cab(++_0x5529f2);}(_0x9971,0x153));var _0x1997=function(_0x5e5352,_0x20545f){_0x5e5352=_0x5e5352-0x0;var _0x59bbc6=_0x9971[_0x5e5352];return _0x59bbc6;};'use strict';var _=require(_0x1997('0x0'));var http=require(_0x1997('0x1'));var express=require(_0x1997('0x2'));var sticky=require('sticky-session');var Redis=require('ioredis');var config=require(_0x1997('0x3'));var app=express();var server=http[_0x1997('0x4')](app);server['timeout']=0xdbba0;if(sticky[_0x1997('0x5')](server,config['port'])){var socketio=require(_0x1997('0x6'))(server,{'transports':['websocket',_0x1997('0x7')]});config[_0x1997('0x8')]=_[_0x1997('0x9')](config[_0x1997('0x8')],{'host':_0x1997('0xa'),'port':0x18eb});socketio[_0x1997('0xb')](require(_0x1997('0xc'))({'pubClient':new Redis(config['redis']),'subClient':new Redis(config[_0x1997('0x8')])}));require('../../config/triggers')['default']();require(_0x1997('0xd'))[_0x1997('0xe')](socketio);require(_0x1997('0xf'))['default'](app);require(_0x1997('0x10'))[_0x1997('0xe')](app);}else{server[_0x1997('0x11')](_0x1997('0x12'),function(){console[_0x1997('0x13')](_0x1997('0x14'),config['port']);});}exports=module[_0x1997('0x15')]=app;
\ No newline at end of file
index 06549e4..671d6c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0cb=['client','request','debug','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing'];(function(_0x402567,_0x17b634){var _0x5e0aac=function(_0x1a2393){while(--_0x1a2393){_0x402567['push'](_0x402567['shift']());}};_0x5e0aac(++_0x17b634);}(_0xd0cb,0x1b8));var _0xbd0c=function(_0x43c031,_0x571716){_0x43c031=_0x43c031-0x0;var _0x53aa5b=_0xd0cb[_0x43c031];return _0x53aa5b;};'use strict';var jayson=require(_0xbd0c('0x0'));var BPromise=require(_0xbd0c('0x1'));var logger=require(_0xbd0c('0x2'))(_0xbd0c('0x3'));var client=jayson[_0xbd0c('0x4')]['http']({'port':0x2329});client['Request']=function(_0xffbbd4,_0xdd149d){return new BPromise(function(_0x57b5ed,_0x28b201){return client[_0xbd0c('0x5')](_0xffbbd4,_0xdd149d)['then'](function(_0x19b5e3){logger[_0xbd0c('0x6')]('rpc','routing',_0xffbbd4,_0xdd149d,_0x19b5e3);if(_0x19b5e3[_0xbd0c('0x7')]){logger[_0xbd0c('0x7')]('rpc',_0xbd0c('0x3'),_0xffbbd4,_0x19b5e3['error']['message'],_0xdd149d);return _0x28b201(_0x19b5e3[_0xbd0c('0x7')][_0xbd0c('0x8')]);}else{return _0x57b5ed(_0x19b5e3[_0xbd0c('0x9')]);}})[_0xbd0c('0xa')](function(_0x187b28){logger[_0xbd0c('0x7')]('rpc',_0xbd0c('0x3'),_0xffbbd4,_0x187b28,_0xdd149d);return _0x28b201(_0x187b28);});});};module[_0xbd0c('0xb')]=client;
\ No newline at end of file
+var _0x177a=['request','debug','error','rpc','message','result','exports','jayson/promise','bluebird','../../config/logger','routing','http','Request'];(function(_0x23a0b6,_0x1625ed){var _0x276250=function(_0x5bfd35){while(--_0x5bfd35){_0x23a0b6['push'](_0x23a0b6['shift']());}};_0x276250(++_0x1625ed);}(_0x177a,0x1e8));var _0xa177=function(_0x349d9b,_0x114c2d){_0x349d9b=_0x349d9b-0x0;var _0x48933c=_0x177a[_0x349d9b];return _0x48933c;};'use strict';var jayson=require(_0xa177('0x0'));var BPromise=require(_0xa177('0x1'));var logger=require(_0xa177('0x2'))(_0xa177('0x3'));var client=jayson['client'][_0xa177('0x4')]({'port':0x2329});client[_0xa177('0x5')]=function(_0x232f6e,_0x75b174){return new BPromise(function(_0x269282,_0x123134){return client[_0xa177('0x6')](_0x232f6e,_0x75b174)['then'](function(_0x53fa5c){logger[_0xa177('0x7')]('rpc',_0xa177('0x3'),_0x232f6e,_0x75b174,_0x53fa5c);if(_0x53fa5c[_0xa177('0x8')]){logger[_0xa177('0x8')](_0xa177('0x9'),_0xa177('0x3'),_0x232f6e,_0x53fa5c[_0xa177('0x8')][_0xa177('0xa')],_0x75b174);return _0x123134(_0x53fa5c[_0xa177('0x8')][_0xa177('0xa')]);}else{return _0x269282(_0x53fa5c[_0xa177('0xb')]);}})['catch'](function(_0x33b276){logger[_0xa177('0x8')](_0xa177('0x9'),'routing',_0x232f6e,_0x33b276,_0x75b174);return _0x123134(_0x33b276);});});};module[_0xa177('0xc')]=client;
\ No newline at end of file
index b1e1b57..03a4430 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5d9=['getIntervals','initOpenchannelQueues','getChatQueues','initChatQueues','initSmsQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','listen','catch','log','bluebird','./server','./realtime','./rpc/user','./rpc/interval','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents'];(function(_0x22ec10,_0x11c591){var _0x11f230=function(_0x62602c){while(--_0x62602c){_0x22ec10['push'](_0x22ec10['shift']());}};_0x11f230(++_0x11c591);}(_0xf5d9,0x19c));var _0x9f5d=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xf5d9[_0x4d613c];return _0x301fe3;};'use strict';var BPromise=require(_0x9f5d('0x0'));var server=require(_0x9f5d('0x1'));var Realtime=require(_0x9f5d('0x2'));var user=require(_0x9f5d('0x3'));var interval=require(_0x9f5d('0x4'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x9f5d('0x5'));var smsQueue=require(_0x9f5d('0x6'));var mailQueue=require(_0x9f5d('0x7'));var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x9f5d('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x9f5d('0x9')]()[_0x9f5d('0xa')](user[_0x9f5d('0xb')]())[_0x9f5d('0xa')](realtime[_0x9f5d('0xc')]())[_0x9f5d('0xa')](interval[_0x9f5d('0xd')]())[_0x9f5d('0xa')](realtime['initIntervals']())[_0x9f5d('0xa')](openchannelQueue['getOpenchannelQueues']())[_0x9f5d('0xa')](realtime[_0x9f5d('0xe')]())[_0x9f5d('0xa')](chatQueue[_0x9f5d('0xf')]())['then'](realtime[_0x9f5d('0x10')]())['then'](smsQueue['getSmsQueues']())['then'](realtime[_0x9f5d('0x11')]())[_0x9f5d('0xa')](mailQueue['getMailQueues']())['then'](realtime[_0x9f5d('0x12')]())['then'](faxQueue[_0x9f5d('0x13')]())[_0x9f5d('0xa')](realtime[_0x9f5d('0x14')]())[_0x9f5d('0xa')](whatsappQueue[_0x9f5d('0x15')]())[_0x9f5d('0xa')](realtime['initWhatsappQueues']())[_0x9f5d('0xa')](function(){return realtime;});}function main(){return server[_0x9f5d('0x16')](realtime)[_0x9f5d('0xa')](function(_0x8aea67){return initRealtime();})['then'](function(_0x378a1c){return setInterval(initRealtime,0x1388);})[_0x9f5d('0x17')](function(_0x2463da){console[_0x9f5d('0x18')](_0x2463da);});}main();
\ No newline at end of file
+var _0x1a96=['getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/faxQueue','resolve','then','getAgents','getIntervals','initIntervals','getOpenchannelQueues','getChatQueues','initChatQueues'];(function(_0x371401,_0x446d6b){var _0x1424c5=function(_0x26397e){while(--_0x26397e){_0x371401['push'](_0x371401['shift']());}};_0x1424c5(++_0x446d6b);}(_0x1a96,0x10f));var _0x61a9=function(_0x410f9c,_0x282481){_0x410f9c=_0x410f9c-0x0;var _0x12bac6=_0x1a96[_0x410f9c];return _0x12bac6;};'use strict';var BPromise=require('bluebird');var server=require(_0x61a9('0x0'));var Realtime=require(_0x61a9('0x1'));var user=require(_0x61a9('0x2'));var interval=require(_0x61a9('0x3'));var openchannelQueue=require(_0x61a9('0x4'));var chatQueue=require(_0x61a9('0x5'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x61a9('0x6'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0x61a9('0x7')]()[_0x61a9('0x8')](user[_0x61a9('0x9')]())[_0x61a9('0x8')](realtime['initAgents']())[_0x61a9('0x8')](interval[_0x61a9('0xa')]())['then'](realtime[_0x61a9('0xb')]())[_0x61a9('0x8')](openchannelQueue[_0x61a9('0xc')]())[_0x61a9('0x8')](realtime['initOpenchannelQueues']())[_0x61a9('0x8')](chatQueue[_0x61a9('0xd')]())[_0x61a9('0x8')](realtime[_0x61a9('0xe')]())['then'](smsQueue[_0x61a9('0xf')]())[_0x61a9('0x8')](realtime[_0x61a9('0x10')]())[_0x61a9('0x8')](mailQueue[_0x61a9('0x11')]())['then'](realtime[_0x61a9('0x12')]())[_0x61a9('0x8')](faxQueue[_0x61a9('0x13')]())[_0x61a9('0x8')](realtime[_0x61a9('0x14')]())['then'](whatsappQueue[_0x61a9('0x15')]())[_0x61a9('0x8')](realtime[_0x61a9('0x16')]())[_0x61a9('0x8')](function(){return realtime;});}function main(){return server[_0x61a9('0x17')](realtime)[_0x61a9('0x8')](function(_0xdac18c){return initRealtime();})['then'](function(_0x444ade){return setInterval(initRealtime,0x1388);})[_0x61a9('0x18')](function(_0x1e260d){console[_0x61a9('0x19')](_0x1e260d);});}main();
\ No newline at end of file
index 6e2166d..915871a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['lodash','util','EventEmitter','init','isNil','ignoreFactChanges','inherits','activeRules','prototype','register','isArray','rules','isObject','sync','orderBy','asc','execute','clone','ruleRef','name','index_','push','call','nextTick','next','isEqual','restart','length','condition','matchPath','noop','findRules','filter','prioritize','priority','toJSON','map','consequence','toString','fromJSON','isString','parse'];(function(_0x1d6f1e,_0x22a3f2){var _0xc74a85=function(_0x442e97){while(--_0x442e97){_0x1d6f1e['push'](_0x1d6f1e['shift']());}};_0xc74a85(++_0x22a3f2);}(_0x5fc3,0xa8));var _0x35fc=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x5fc3[_0xdea41a];return _0x15d0d8;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var EventEmitter=require('events')[_0x35fc('0x2')];function RuleEngine(_0x2ac6da,_0x196bc2){this[_0x35fc('0x3')]();if(!_[_0x35fc('0x4')](_0x2ac6da)){this['register'](_0x2ac6da);}if(_0x196bc2){this[_0x35fc('0x5')]=_0x196bc2[_0x35fc('0x5')];}return this;}util[_0x35fc('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype']['init']=function(_0x19a0d1){this['rules']=[];this[_0x35fc('0x7')]=[];};RuleEngine[_0x35fc('0x8')][_0x35fc('0x9')]=function(_0x1e5f90){if(Array[_0x35fc('0xa')](_0x1e5f90)){this[_0x35fc('0xb')]=this[_0x35fc('0xb')]['concat'](_0x1e5f90);}else if(_0x1e5f90!==null&&_[_0x35fc('0xc')](_0x1e5f90)){this[_0x35fc('0xb')]['push'](_0x1e5f90);}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')]['sync']=function(){this[_0x35fc('0x7')]=this[_0x35fc('0xb')]['filter'](function(_0x4cbe74){if(_[_0x35fc('0x4')](_0x4cbe74['on'])){_0x4cbe74['on']=!![];}if(_0x4cbe74['on']===!![]){return _0x4cbe74;}});this['activeRules']=_[_0x35fc('0xe')](this[_0x35fc('0x7')],['p'],[_0x35fc('0xf')]);};RuleEngine[_0x35fc('0x8')][_0x35fc('0x10')]=function(_0x5cfe94,_0x59507a){var _0x5eac0f=![];_0x5cfe94['result']=!![];var _0x398b67=_[_0x35fc('0x11')](_0x5cfe94);var _0x53b898=_[_0x35fc('0x11')](_0x5cfe94);var _0x227a49=this[_0x35fc('0x7')];var _0x480851=[];var _0x26ba54=this[_0x35fc('0x5')];(function FnRuleLoop(_0x553677){var _0x41e165={'rules':function(){return _0x227a49;},'rule':function(){return _0x227a49[_0x553677];},'when':function(_0x363e47){if(_0x363e47){var _0x2e513b=_0x227a49[_0x553677]['consequence'];_0x2e513b[_0x35fc('0x12')]=_0x227a49[_0x553677]['id']||_0x227a49[_0x553677][_0x35fc('0x13')]||_0x35fc('0x14')+_0x553677;process['nextTick'](function(){_0x480851[_0x35fc('0x15')](_0x2e513b[_0x35fc('0x12')]);_0x2e513b[_0x35fc('0x16')](_0x398b67,_0x41e165);});}else{process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x18')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x5eac0f=!![];return FnRuleLoop(0x0);},'next':function(_0x21f1a9){if(!_0x26ba54&&!_[_0x35fc('0x19')](_0x53b898,_0x398b67)){_0x53b898=_[_0x35fc('0x11')](_0x398b67);process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x1a')]();});}else{process['nextTick'](function(){if(_[_0x35fc('0x4')](_0x21f1a9)){return FnRuleLoop(_0x553677+0x1);}else{return FnRuleLoop(_0x21f1a9);}});}}};if(_0x553677<_0x227a49[_0x35fc('0x1b')]&&_0x5eac0f===![]){var _0x257719=_0x227a49[_0x553677][_0x35fc('0x1c')];_0x257719[_0x35fc('0x16')](_0x398b67,_0x41e165);}else{process['nextTick'](function(){_0x398b67[_0x35fc('0x1d')]=_0x480851;return _0x59507a?_0x59507a(_0x398b67):_[_0x35fc('0x1e')]();});}}(0x0));};RuleEngine['prototype'][_0x35fc('0x1f')]=function(_0x5a93df){if(_[_0x35fc('0x4')](_0x5a93df)){return this['rules'];}else{var _0x4086e9=_['matches'](_0x5a93df);return _[_0x35fc('0x20')](this[_0x35fc('0xb')],_0x4086e9);}};RuleEngine['prototype']['turn']=function(_0x47774c,_0x58edb6){var _0x274208=_0x47774c==='on'||_0x47774c==='ON'?!![]:![];var _0x1a5d92=this['findRules'](_0x58edb6);for(var _0x26b7cb=0x0,_0x645eac=_0x1a5d92[_0x35fc('0x1b')];_0x26b7cb<_0x645eac;_0x26b7cb+=0x1){_0x1a5d92[_0x26b7cb]['on']=_0x274208;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x21')]=function(_0x11ccdb,_0x451f0c){_0x11ccdb=parseInt(_0x11ccdb,0xa);var _0x54aedc=this[_0x35fc('0x1f')](_0x451f0c);for(var _0x220931=0x0,_0x22af18=_0x54aedc['length'];_0x220931<_0x22af18;_0x220931+=0x1){_0x54aedc[_0x220931][_0x35fc('0x22')]=_0x11ccdb;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x23')]=function(){var _0xd8a4ca=this[_0x35fc('0xb')];if(_0xd8a4ca instanceof Array){_0xd8a4ca=_0xd8a4ca[_0x35fc('0x24')](function(_0x37b435){_0x37b435[_0x35fc('0x1c')]=_0x37b435[_0x35fc('0x1c')]['toString']();_0x37b435['consequence']=_0x37b435[_0x35fc('0x25')]['toString']();return _0x37b435;});}else if(!_[_0x35fc('0x4')](_0xd8a4ca)){_0xd8a4ca[_0x35fc('0x1c')]=_0xd8a4ca[_0x35fc('0x1c')][_0x35fc('0x26')]();_0xd8a4ca[_0x35fc('0x25')]=_0xd8a4ca[_0x35fc('0x25')]['toString']();}return _0xd8a4ca;};RuleEngine[_0x35fc('0x8')][_0x35fc('0x27')]=function(_0x46b9ef){this[_0x35fc('0x3')]();if(_[_0x35fc('0x28')](_0x46b9ef)){_0x46b9ef=JSON[_0x35fc('0x29')](_0x46b9ef);}if(_0x46b9ef instanceof Array){_0x46b9ef=_0x46b9ef['map'](function(_0x2483be){_0x2483be[_0x35fc('0x1c')]=eval('('+_0x2483be[_0x35fc('0x1c')]+')');_0x2483be['consequence']=eval('('+_0x2483be[_0x35fc('0x25')]+')');return _0x2483be;});}else if(_0x46b9ef!==null&&typeof _0x46b9ef=='object'){_0x46b9ef[_0x35fc('0x1c')]=eval('('+_0x46b9ef[_0x35fc('0x1c')]+')');_0x46b9ef[_0x35fc('0x25')]=eval('('+_0x46b9ef[_0x35fc('0x25')]+')');}this['register'](_0x46b9ef);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0x326f=['orderBy','asc','result','clone','consequence','nextTick','push','isEqual','condition','call','matchPath','noop','matches','filter','turn','length','prioritize','findRules','priority','toJSON','map','toString','fromJSON','isString','lodash','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules','activeRules','concat','isObject','sync'];(function(_0x23e4b4,_0x132419){var _0x3bc471=function(_0x1f4d12){while(--_0x1f4d12){_0x23e4b4['push'](_0x23e4b4['shift']());}};_0x3bc471(++_0x132419);}(_0x326f,0xd1));var _0xf326=function(_0x1a456e,_0x140ed8){_0x1a456e=_0x1a456e-0x0;var _0xa8deb9=_0x326f[_0x1a456e];return _0xa8deb9;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var EventEmitter=require('events')[_0xf326('0x1')];function RuleEngine(_0x330ddb,_0x22aabf){this[_0xf326('0x2')]();if(!_[_0xf326('0x3')](_0x330ddb)){this[_0xf326('0x4')](_0x330ddb);}if(_0x22aabf){this[_0xf326('0x5')]=_0x22aabf[_0xf326('0x5')];}return this;}util[_0xf326('0x6')](RuleEngine,EventEmitter);RuleEngine[_0xf326('0x7')]['init']=function(_0x3c254d){this[_0xf326('0x8')]=[];this[_0xf326('0x9')]=[];};RuleEngine[_0xf326('0x7')]['register']=function(_0x4c206c){if(Array['isArray'](_0x4c206c)){this[_0xf326('0x8')]=this[_0xf326('0x8')][_0xf326('0xa')](_0x4c206c);}else if(_0x4c206c!==null&&_[_0xf326('0xb')](_0x4c206c)){this[_0xf326('0x8')]['push'](_0x4c206c);}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0xc')]=function(){this['activeRules']=this[_0xf326('0x8')]['filter'](function(_0x3162f9){if(_[_0xf326('0x3')](_0x3162f9['on'])){_0x3162f9['on']=!![];}if(_0x3162f9['on']===!![]){return _0x3162f9;}});this['activeRules']=_[_0xf326('0xd')](this[_0xf326('0x9')],['p'],[_0xf326('0xe')]);};RuleEngine[_0xf326('0x7')]['execute']=function(_0x45c1b6,_0x5204ee){var _0x54bd1a=![];_0x45c1b6[_0xf326('0xf')]=!![];var _0x11f6d2=_[_0xf326('0x10')](_0x45c1b6);var _0xa63d1a=_[_0xf326('0x10')](_0x45c1b6);var _0x287a2a=this[_0xf326('0x9')];var _0x2cf2ca=[];var _0x5a682a=this[_0xf326('0x5')];(function FnRuleLoop(_0x453100){var _0x18bee3={'rules':function(){return _0x287a2a;},'rule':function(){return _0x287a2a[_0x453100];},'when':function(_0x31ffb9){if(_0x31ffb9){var _0xcef2b5=_0x287a2a[_0x453100][_0xf326('0x11')];_0xcef2b5['ruleRef']=_0x287a2a[_0x453100]['id']||_0x287a2a[_0x453100]['name']||'index_'+_0x453100;process[_0xf326('0x12')](function(){_0x2cf2ca[_0xf326('0x13')](_0xcef2b5['ruleRef']);_0xcef2b5['call'](_0x11f6d2,_0x18bee3);});}else{process[_0xf326('0x12')](function(){_0x18bee3['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x54bd1a=!![];return FnRuleLoop(0x0);},'next':function(_0x5b6d3c){if(!_0x5a682a&&!_[_0xf326('0x14')](_0xa63d1a,_0x11f6d2)){_0xa63d1a=_[_0xf326('0x10')](_0x11f6d2);process['nextTick'](function(){_0x18bee3['restart']();});}else{process[_0xf326('0x12')](function(){if(_[_0xf326('0x3')](_0x5b6d3c)){return FnRuleLoop(_0x453100+0x1);}else{return FnRuleLoop(_0x5b6d3c);}});}}};if(_0x453100<_0x287a2a['length']&&_0x54bd1a===![]){var _0x337ed5=_0x287a2a[_0x453100][_0xf326('0x15')];_0x337ed5[_0xf326('0x16')](_0x11f6d2,_0x18bee3);}else{process[_0xf326('0x12')](function(){_0x11f6d2[_0xf326('0x17')]=_0x2cf2ca;return _0x5204ee?_0x5204ee(_0x11f6d2):_[_0xf326('0x18')]();});}}(0x0));};RuleEngine['prototype']['findRules']=function(_0x4f31f6){if(_[_0xf326('0x3')](_0x4f31f6)){return this[_0xf326('0x8')];}else{var _0x2cd45a=_[_0xf326('0x19')](_0x4f31f6);return _[_0xf326('0x1a')](this[_0xf326('0x8')],_0x2cd45a);}};RuleEngine['prototype'][_0xf326('0x1b')]=function(_0xa3c0b,_0x212d5d){var _0x581531=_0xa3c0b==='on'||_0xa3c0b==='ON'?!![]:![];var _0x1617d2=this['findRules'](_0x212d5d);for(var _0x4a9abf=0x0,_0x6a8e89=_0x1617d2[_0xf326('0x1c')];_0x4a9abf<_0x6a8e89;_0x4a9abf+=0x1){_0x1617d2[_0x4a9abf]['on']=_0x581531;}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0x1d')]=function(_0x292500,_0x55790d){_0x292500=parseInt(_0x292500,0xa);var _0x225776=this[_0xf326('0x1e')](_0x55790d);for(var _0xd77aba=0x0,_0x18d110=_0x225776[_0xf326('0x1c')];_0xd77aba<_0x18d110;_0xd77aba+=0x1){_0x225776[_0xd77aba][_0xf326('0x1f')]=_0x292500;}this[_0xf326('0xc')]();};RuleEngine[_0xf326('0x7')][_0xf326('0x20')]=function(){var _0x349a03=this['rules'];if(_0x349a03 instanceof Array){_0x349a03=_0x349a03[_0xf326('0x21')](function(_0x424104){_0x424104[_0xf326('0x15')]=_0x424104['condition'][_0xf326('0x22')]();_0x424104[_0xf326('0x11')]=_0x424104[_0xf326('0x11')]['toString']();return _0x424104;});}else if(!_['isNil'](_0x349a03)){_0x349a03[_0xf326('0x15')]=_0x349a03[_0xf326('0x15')][_0xf326('0x22')]();_0x349a03[_0xf326('0x11')]=_0x349a03[_0xf326('0x11')][_0xf326('0x22')]();}return _0x349a03;};RuleEngine[_0xf326('0x7')][_0xf326('0x23')]=function(_0x580374){this[_0xf326('0x2')]();if(_[_0xf326('0x24')](_0x580374)){_0x580374=JSON['parse'](_0x580374);}if(_0x580374 instanceof Array){_0x580374=_0x580374[_0xf326('0x21')](function(_0x4e5d7c){_0x4e5d7c[_0xf326('0x15')]=eval('('+_0x4e5d7c['condition']+')');_0x4e5d7c['consequence']=eval('('+_0x4e5d7c[_0xf326('0x11')]+')');return _0x4e5d7c;});}else if(_0x580374!==null&&typeof _0x580374=='object'){_0x580374[_0xf326('0x15')]=eval('('+_0x580374['condition']+')');_0x580374[_0xf326('0x11')]=eval('('+_0x580374[_0xf326('0x11')]+')');}this[_0xf326('0x4')](_0x580374);};module['exports']=RuleEngine;
\ No newline at end of file
index 9ba11df..fb31f80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2d6=['client','http','request','then','error','message','catch','SendMail','jayson/promise'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0xb2d6,0x1d3));var _0x6b2d=function(_0x3e223b,_0x407ced){_0x3e223b=_0x3e223b-0x0;var _0x2b2d3d=_0xb2d6[_0x3e223b];return _0x2b2d3d;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x6b2d('0x0'));var client=jayson[_0x6b2d('0x1')][_0x6b2d('0x2')]({'port':0x232b});function request(_0x341c00,_0x1c9e00){return new BPromise(function(_0x565979,_0x5d0eba){return client[_0x6b2d('0x3')](_0x341c00,_0x1c9e00)[_0x6b2d('0x4')](function(_0x169d1e){if(_0x169d1e[_0x6b2d('0x5')]){return _0x5d0eba(_0x169d1e[_0x6b2d('0x5')][_0x6b2d('0x6')]);}else{return _0x565979(_0x169d1e['result']);}})[_0x6b2d('0x7')](function(_0x16ab38){return _0x5d0eba(_0x16ab38);});});}exports['sendMailMessage']=function(_0x19f530,_0x337736){return request(_0x6b2d('0x8'),{'account':_0x19f530,'message':_0x337736});};
\ No newline at end of file
+var _0x0e8e=['jayson/promise','client','http','request','then','error','message','catch','SendMail'];(function(_0x267945,_0xb6ac48){var _0x18e6c1=function(_0x5bc4dd){while(--_0x5bc4dd){_0x267945['push'](_0x267945['shift']());}};_0x18e6c1(++_0xb6ac48);}(_0x0e8e,0x1c2));var _0xe0e8=function(_0x5378e0,_0x351d39){_0x5378e0=_0x5378e0-0x0;var _0x3e41a4=_0x0e8e[_0x5378e0];return _0x3e41a4;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xe0e8('0x0'));var client=jayson[_0xe0e8('0x1')][_0xe0e8('0x2')]({'port':0x232b});function request(_0x33d474,_0x147338){return new BPromise(function(_0x26ab08,_0x444ad3){return client[_0xe0e8('0x3')](_0x33d474,_0x147338)[_0xe0e8('0x4')](function(_0x183549){if(_0x183549[_0xe0e8('0x5')]){return _0x444ad3(_0x183549['error'][_0xe0e8('0x6')]);}else{return _0x26ab08(_0x183549['result']);}})[_0xe0e8('0x7')](function(_0x5def53){return _0x444ad3(_0x5def53);});});}exports['sendMailMessage']=function(_0x5388f5,_0x5c2fda){return request(_0xe0e8('0x8'),{'account':_0x5388f5,'message':_0x5c2fda});};
\ No newline at end of file
index 4181ddb..fc51f48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fd4=['openchannelCapacity','busy','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','working','mail','openchannel','fax','sms','whatsapp','length','Status','StatusTime','toNumber','format','mailPause','smsCurrentCapacity','openchannelStatusTime','openchannelCurrentCapacity','busyQueue','stringify','emit','user:save','exports','lodash','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','online','voicePause','chatPause','faxPause','openchannelPause','chatStatus','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus'];(function(_0x5be469,_0x36246c){var _0x35cddb=function(_0x1f58cf){while(--_0x1f58cf){_0x5be469['push'](_0x5be469['shift']());}};_0x35cddb(++_0x36246c);}(_0x4fd4,0x183));var _0x44fd=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x4fd4[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x44fd('0x0'));var moment=require('moment');var md5=require(_0x44fd('0x1'));var Redis=require(_0x44fd('0x2'));var config=require(_0x44fd('0x3'));config[_0x44fd('0x4')]=_['defaults'](config[_0x44fd('0x4')],{'host':_0x44fd('0x5'),'port':0x18eb});var io=require(_0x44fd('0x6'))(new Redis(config['redis']));function Agent(_0x1e04ec){this['id']=_0x1e04ec['id']||0x0;this[_0x44fd('0x7')]=_0x1e04ec[_0x44fd('0x7')]||'';this[_0x44fd('0x8')]=_0x1e04ec[_0x44fd('0x8')]||!![];this[_0x44fd('0x9')]=_0x1e04ec[_0x44fd('0x9')]||![];this[_0x44fd('0xa')]=_0x1e04ec['chatPause']||![];this['mailPause']=_0x1e04ec['mailPause']||![];this[_0x44fd('0xb')]=_0x1e04ec[_0x44fd('0xb')]||![];this['smsPause']=_0x1e04ec['smsPause']||![];this['openchannelPause']=_0x1e04ec[_0x44fd('0xc')]||![];this[_0x44fd('0xd')]='unknown';this[_0x44fd('0xe')]=0x0;this['chatCapacity']=_0x1e04ec[_0x44fd('0xf')]||0x0;this[_0x44fd('0x10')]=0x0;this[_0x44fd('0x11')]=_0x44fd('0x12');this[_0x44fd('0x13')]=0x0;this[_0x44fd('0x14')]=_0x1e04ec[_0x44fd('0x14')]||0x0;this['mailCurrentCapacity']=0x0;this[_0x44fd('0x15')]=_0x44fd('0x12');this[_0x44fd('0x16')]=0x0;this[_0x44fd('0x17')]=_0x1e04ec['faxCapacity']||0x0;this[_0x44fd('0x18')]=0x0;this[_0x44fd('0x19')]=_0x44fd('0x12');this[_0x44fd('0x1a')]=0x0;this[_0x44fd('0x1b')]=_0x1e04ec['smsCapacity']||0x0;this['smsCurrentCapacity']=0x0;this[_0x44fd('0x1c')]=_0x44fd('0x12');this[_0x44fd('0x1d')]=0x0;this['whatsappCapacity']=_0x1e04ec[_0x44fd('0x1e')]||0x0;this[_0x44fd('0x1f')]=0x0;this[_0x44fd('0x20')]=_0x44fd('0x12');this['openchannelStatusTime']=0x0;this['openchannelCapacity']=_0x1e04ec[_0x44fd('0x21')]||0x0;this['openchannelCurrentCapacity']=0x0;this[_0x44fd('0x22')]=![];this['busyQueue']=undefined;this[_0x44fd('0x1')]='';this[_0x44fd('0x23')]();}Agent[_0x44fd('0x24')][_0x44fd('0x25')]=function(_0x19d455){if(this[_0x19d455+_0x44fd('0x26')]>0x0){if(this[_0x19d455+_0x44fd('0x27')]>0x0&&this[_0x19d455+_0x44fd('0x26')]>=this[_0x19d455+_0x44fd('0x27')]){return'maxcapacity';}else{return _0x44fd('0x28');}}else{return'idle';}};Agent[_0x44fd('0x24')][_0x44fd('0x23')]=function(){var _0x48101=[_0x44fd('0x29'),'chat',_0x44fd('0x2a'),_0x44fd('0x2b'),_0x44fd('0x2c'),_0x44fd('0x2d')];for(var _0x3bfd97=0x0;_0x3bfd97<_0x48101[_0x44fd('0x2e')];_0x3bfd97+=0x1){var _0x2d5e14=this[_0x44fd('0x25')](_0x48101[_0x3bfd97]);if(this[_0x48101[_0x3bfd97]+_0x44fd('0x2f')]!==_0x2d5e14){this[_0x48101[_0x3bfd97]+_0x44fd('0x30')]=_[_0x44fd('0x31')](moment()[_0x44fd('0x32')]('x'));}this[_0x48101[_0x3bfd97]+_0x44fd('0x2f')]=_0x2d5e14;}var _0x12881d={'id':this['id'],'name':this[_0x44fd('0x7')],'online':this[_0x44fd('0x8')],'voicePause':this[_0x44fd('0x9')],'chatPause':this[_0x44fd('0xa')],'mailPause':this[_0x44fd('0x33')],'smsPause':this['smsPause'],'faxPause':this[_0x44fd('0xb')],'openchannelPause':this[_0x44fd('0xc')],'chatStatus':this[_0x44fd('0xd')],'chatStatusTime':this[_0x44fd('0xe')],'chatCapacity':this[_0x44fd('0xf')],'chatCurrentCapacity':this[_0x44fd('0x10')],'mailStatus':this[_0x44fd('0x11')],'mailStatusTime':this[_0x44fd('0x13')],'mailCapacity':this[_0x44fd('0x14')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x44fd('0x15')],'faxStatusTime':this[_0x44fd('0x16')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0x44fd('0x18')],'smsStatus':this['smsStatus'],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this[_0x44fd('0x1b')],'smsCurrentCapacity':this[_0x44fd('0x34')],'whatsappStatus':this[_0x44fd('0x1c')],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x44fd('0x1f')],'openchannelStatus':this[_0x44fd('0x20')],'openchannelStatusTime':this[_0x44fd('0x35')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x44fd('0x36')],'busy':this['busy'],'busyQueue':this[_0x44fd('0x37')]};var _0x294aee=md5(JSON[_0x44fd('0x38')](_0x12881d));if(this[_0x44fd('0x1')]!==_0x294aee){this[_0x44fd('0x1')]=_0x294aee;io[_0x44fd('0x39')](_0x44fd('0x3a'),_0x12881d);}};module[_0x44fd('0x3b')]=Agent;
\ No newline at end of file
+var _0x6351=['emit','user:save','exports','lodash','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','online','voicePause','mailPause','faxPause','smsPause','openchannelPause','chatCapacity','chatCurrentCapacity','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','unknown','faxStatusTime','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busyQueue','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','updateRealtime','mail','chat','openchannel','fax','whatsapp','length','toNumber','Status','chatPause','chatStatusTime','mailStatus','faxCapacity','smsStatusTime','busy','stringify'];(function(_0x1dd5ff,_0x1f83c9){var _0x2f4cf3=function(_0x917df9){while(--_0x917df9){_0x1dd5ff['push'](_0x1dd5ff['shift']());}};_0x2f4cf3(++_0x1f83c9);}(_0x6351,0x12f));var _0x1635=function(_0x296453,_0x219c2a){_0x296453=_0x296453-0x0;var _0x37b596=_0x6351[_0x296453];return _0x37b596;};'use strict';var _=require(_0x1635('0x0'));var moment=require(_0x1635('0x1'));var md5=require(_0x1635('0x2'));var Redis=require(_0x1635('0x3'));var config=require(_0x1635('0x4'));config[_0x1635('0x5')]=_['defaults'](config[_0x1635('0x5')],{'host':_0x1635('0x6'),'port':0x18eb});var io=require(_0x1635('0x7'))(new Redis(config[_0x1635('0x5')]));function Agent(_0x44b820){this['id']=_0x44b820['id']||0x0;this[_0x1635('0x8')]=_0x44b820[_0x1635('0x8')]||'';this[_0x1635('0x9')]=_0x44b820['online']||!![];this[_0x1635('0xa')]=_0x44b820[_0x1635('0xa')]||![];this['chatPause']=_0x44b820['chatPause']||![];this[_0x1635('0xb')]=_0x44b820['mailPause']||![];this[_0x1635('0xc')]=_0x44b820[_0x1635('0xc')]||![];this['smsPause']=_0x44b820[_0x1635('0xd')]||![];this[_0x1635('0xe')]=_0x44b820[_0x1635('0xe')]||![];this['chatStatus']='unknown';this['chatStatusTime']=0x0;this[_0x1635('0xf')]=_0x44b820[_0x1635('0xf')]||0x0;this[_0x1635('0x10')]=0x0;this['mailStatus']='unknown';this[_0x1635('0x11')]=0x0;this['mailCapacity']=_0x44b820[_0x1635('0x12')]||0x0;this[_0x1635('0x13')]=0x0;this[_0x1635('0x14')]=_0x1635('0x15');this[_0x1635('0x16')]=0x0;this['faxCapacity']=_0x44b820['faxCapacity']||0x0;this[_0x1635('0x17')]=0x0;this[_0x1635('0x18')]='unknown';this['smsStatusTime']=0x0;this[_0x1635('0x19')]=_0x44b820[_0x1635('0x19')]||0x0;this[_0x1635('0x1a')]=0x0;this[_0x1635('0x1b')]=_0x1635('0x15');this[_0x1635('0x1c')]=0x0;this[_0x1635('0x1d')]=_0x44b820[_0x1635('0x1d')]||0x0;this[_0x1635('0x1e')]=0x0;this['openchannelStatus']=_0x1635('0x15');this[_0x1635('0x1f')]=0x0;this[_0x1635('0x20')]=_0x44b820['openchannelCapacity']||0x0;this[_0x1635('0x21')]=0x0;this['busy']=![];this[_0x1635('0x22')]=undefined;this[_0x1635('0x2')]='';this['updateRealtime']();}Agent['prototype'][_0x1635('0x23')]=function(_0x57a8d0){if(this[_0x57a8d0+'CurrentCapacity']>0x0){if(this[_0x57a8d0+'Capacity']>0x0&&this[_0x57a8d0+_0x1635('0x24')]>=this[_0x57a8d0+_0x1635('0x25')]){return _0x1635('0x26');}else{return _0x1635('0x27');}}else{return _0x1635('0x28');}};Agent['prototype'][_0x1635('0x29')]=function(){var _0x1bedbf=[_0x1635('0x2a'),_0x1635('0x2b'),_0x1635('0x2c'),_0x1635('0x2d'),'sms',_0x1635('0x2e')];for(var _0x4d0483=0x0;_0x4d0483<_0x1bedbf[_0x1635('0x2f')];_0x4d0483+=0x1){var _0xfa7c11=this[_0x1635('0x23')](_0x1bedbf[_0x4d0483]);if(this[_0x1bedbf[_0x4d0483]+'Status']!==_0xfa7c11){this[_0x1bedbf[_0x4d0483]+'StatusTime']=_[_0x1635('0x30')](moment()['format']('x'));}this[_0x1bedbf[_0x4d0483]+_0x1635('0x31')]=_0xfa7c11;}var _0x44c8f3={'id':this['id'],'name':this[_0x1635('0x8')],'online':this[_0x1635('0x9')],'voicePause':this[_0x1635('0xa')],'chatPause':this[_0x1635('0x32')],'mailPause':this[_0x1635('0xb')],'smsPause':this['smsPause'],'faxPause':this[_0x1635('0xc')],'openchannelPause':this['openchannelPause'],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x1635('0x33')],'chatCapacity':this[_0x1635('0xf')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0x1635('0x34')],'mailStatusTime':this[_0x1635('0x11')],'mailCapacity':this[_0x1635('0x12')],'mailCurrentCapacity':this[_0x1635('0x13')],'faxStatus':this[_0x1635('0x14')],'faxStatusTime':this[_0x1635('0x16')],'faxCapacity':this[_0x1635('0x35')],'faxCurrentCapacity':this[_0x1635('0x17')],'smsStatus':this[_0x1635('0x18')],'smsStatusTime':this[_0x1635('0x36')],'smsCapacity':this[_0x1635('0x19')],'smsCurrentCapacity':this[_0x1635('0x1a')],'whatsappStatus':this[_0x1635('0x1b')],'whatsappStatusTime':this[_0x1635('0x1c')],'whatsappCapacity':this[_0x1635('0x1d')],'whatsappCurrentCapacity':this[_0x1635('0x1e')],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0x1635('0x1f')],'openchannelCapacity':this[_0x1635('0x20')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this[_0x1635('0x37')],'busyQueue':this[_0x1635('0x22')]};var _0x46fb3f=md5(JSON[_0x1635('0x38')](_0x44c8f3));if(this[_0x1635('0x2')]!==_0x46fb3f){this[_0x1635('0x2')]=_0x46fb3f;io[_0x1635('0x39')](_0x1635('0x3a'),_0x44c8f3);}};module[_0x1635('0x3b')]=Agent;
\ No newline at end of file
index d2fec81..98c078f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x476b=['localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRealtime','prototype','updateRouting','_rr','map','paused','length','loggedIn','available','stringify','format','chat:queue:%s','emit','chat_queue:save','exports','lodash','util','../../../config/environment','redis','defaults'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x476b,0x109));var _0xb476=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x476b[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xb476('0x0'));var md5=require('md5');var util=require(_0xb476('0x1'));var Redis=require('ioredis');var config=require(_0xb476('0x2'));config[_0xb476('0x3')]=_[_0xb476('0x4')](config[_0xb476('0x3')],{'host':_0xb476('0x5'),'port':0x18eb});var io=require(_0xb476('0x6'))(new Redis(config[_0xb476('0x3')]));function ChatQueue(_0x542a96){this['id']=_0x542a96['id']||0x0;this[_0xb476('0x7')]=_0x542a96['name']||'';this['timeout']=_0x542a96[_0xb476('0x8')]||0xa;this[_0xb476('0x9')]=_0x542a96['strategy']||_0xb476('0xa');this['Agents']=_0x542a96[_0xb476('0xb')];this[_0xb476('0xc')]={};this[_0xb476('0xd')]=0x0;this[_0xb476('0xe')]='';this['updateRouting']();this[_0xb476('0xf')]();}ChatQueue[_0xb476('0x10')][_0xb476('0x11')]=function(){var _0x3f3738=this['mapAgentsId'][_0xb476('0x12')];this[_0xb476('0xc')]=_[_0xb476('0x13')](this[_0xb476('0xb')],'id');this['mapAgentsId']['_rr']=_0x3f3738;};ChatQueue[_0xb476('0x10')][_0xb476('0xf')]=function(){this['loggedIn']=0x0;this[_0xb476('0x14')]=0x0;for(var _0x1c158b=0x0;_0x1c158b<this[_0xb476('0xb')][_0xb476('0x15')];_0x1c158b+=0x1){if(this['Agents'][_0x1c158b]['online']){this[_0xb476('0x16')]+=0x1;}if(this[_0xb476('0xb')][_0x1c158b]['chatPause']){this[_0xb476('0x14')]+=0x1;}}this[_0xb476('0x17')]=this['loggedIn']-this[_0xb476('0x14')];this[_0xb476('0x17')]=this[_0xb476('0x17')]>=0x0?this['available']:0x0;var _0x178532={'id':this['id'],'available':this['available'],'loggedIn':this[_0xb476('0x16')],'name':this['name'],'paused':this[_0xb476('0x14')],'waiting':this['waiting']};var _0x44c3d6=md5(JSON[_0xb476('0x18')](_0x178532));if(this[_0xb476('0xe')]!==_0x44c3d6){this[_0xb476('0xe')]=_0x44c3d6;io['to'](util[_0xb476('0x19')](_0xb476('0x1a'),_0x178532['name']))[_0xb476('0x1b')](_0xb476('0x1c'),_0x178532);}};module[_0xb476('0x1d')]=ChatQueue;
\ No newline at end of file
+var _0x97b6=['timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','prototype','map','_rr','updateRealtime','loggedIn','paused','length','online','chatPause','available','stringify','format','emit','chat_queue:save','exports','lodash','md5','util','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name'];(function(_0x3b11d1,_0x4e1d11){var _0x53fc70=function(_0x29b2d6){while(--_0x29b2d6){_0x3b11d1['push'](_0x3b11d1['shift']());}};_0x53fc70(++_0x4e1d11);}(_0x97b6,0x16b));var _0x697b=function(_0x416928,_0x1078dc){_0x416928=_0x416928-0x0;var _0x21f8d6=_0x97b6[_0x416928];return _0x21f8d6;};'use strict';var _=require(_0x697b('0x0'));var md5=require(_0x697b('0x1'));var util=require(_0x697b('0x2'));var Redis=require('ioredis');var config=require(_0x697b('0x3'));config['redis']=_[_0x697b('0x4')](config[_0x697b('0x5')],{'host':_0x697b('0x6'),'port':0x18eb});var io=require(_0x697b('0x7'))(new Redis(config['redis']));function ChatQueue(_0x42c7a9){this['id']=_0x42c7a9['id']||0x0;this[_0x697b('0x8')]=_0x42c7a9[_0x697b('0x8')]||'';this['timeout']=_0x42c7a9[_0x697b('0x9')]||0xa;this[_0x697b('0xa')]=_0x42c7a9['strategy']||_0x697b('0xb');this[_0x697b('0xc')]=_0x42c7a9[_0x697b('0xc')];this[_0x697b('0xd')]={};this[_0x697b('0xe')]=0x0;this['md5']='';this[_0x697b('0xf')]();this['updateRealtime']();}ChatQueue[_0x697b('0x10')]['updateRouting']=function(){var _0x17abc2=this['mapAgentsId']['_rr'];this[_0x697b('0xd')]=_[_0x697b('0x11')](this[_0x697b('0xc')],'id');this[_0x697b('0xd')][_0x697b('0x12')]=_0x17abc2;};ChatQueue[_0x697b('0x10')][_0x697b('0x13')]=function(){this[_0x697b('0x14')]=0x0;this[_0x697b('0x15')]=0x0;for(var _0x3b0155=0x0;_0x3b0155<this[_0x697b('0xc')][_0x697b('0x16')];_0x3b0155+=0x1){if(this[_0x697b('0xc')][_0x3b0155][_0x697b('0x17')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x3b0155][_0x697b('0x18')]){this[_0x697b('0x15')]+=0x1;}}this[_0x697b('0x19')]=this[_0x697b('0x14')]-this[_0x697b('0x15')];this['available']=this[_0x697b('0x19')]>=0x0?this[_0x697b('0x19')]:0x0;var _0x3546f5={'id':this['id'],'available':this[_0x697b('0x19')],'loggedIn':this[_0x697b('0x14')],'name':this[_0x697b('0x8')],'paused':this[_0x697b('0x15')],'waiting':this[_0x697b('0xe')]};var _0xdd128b=md5(JSON[_0x697b('0x1a')](_0x3546f5));if(this['md5']!==_0xdd128b){this[_0x697b('0x1')]=_0xdd128b;io['to'](util[_0x697b('0x1b')]('chat:queue:%s',_0x3546f5['name']))[_0x697b('0x1c')](_0x697b('0x1d'),_0x3546f5);}};module[_0x697b('0x1e')]=ChatQueue;
\ No newline at end of file
index 54634b1..17b1fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe83a=['beepall','Agents','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn','paused','length','online','available','waiting','format','name','emit','lodash','md5','util','ioredis','../../../config/environment','defaults','redis','localhost','socket.io-emitter','timeout'];(function(_0x463f89,_0xf317cf){var _0x1e0849=function(_0x1cd10b){while(--_0x1cd10b){_0x463f89['push'](_0x463f89['shift']());}};_0x1e0849(++_0xf317cf);}(_0xe83a,0x1e4));var _0xae83=function(_0x1ca91c,_0x131938){_0x1ca91c=_0x1ca91c-0x0;var _0x5e858f=_0xe83a[_0x1ca91c];return _0x5e858f;};'use strict';var _=require(_0xae83('0x0'));var md5=require(_0xae83('0x1'));var util=require(_0xae83('0x2'));var Redis=require(_0xae83('0x3'));var config=require(_0xae83('0x4'));config['redis']=_[_0xae83('0x5')](config[_0xae83('0x6')],{'host':_0xae83('0x7'),'port':0x18eb});var io=require(_0xae83('0x8'))(new Redis(config[_0xae83('0x6')]));function FaxQueue(_0xa49249){this['id']=_0xa49249['id']||0x0;this['name']=_0xa49249['name']||'';this[_0xae83('0x9')]=_0xa49249[_0xae83('0x9')]||0xa;this['strategy']=_0xa49249['strategy']||_0xae83('0xa');this[_0xae83('0xb')]=_0xa49249[_0xae83('0xb')];this['mapAgentsId']={};this['waiting']=0x0;this[_0xae83('0x1')]='';this['updateRouting']();this[_0xae83('0xc')]();}FaxQueue[_0xae83('0xd')]['updateRouting']=function(){var _0x41d0e8=this[_0xae83('0xe')][_0xae83('0xf')];this[_0xae83('0xe')]=_[_0xae83('0x10')](this[_0xae83('0xb')],'id');this[_0xae83('0xe')][_0xae83('0xf')]=_0x41d0e8;};FaxQueue['prototype'][_0xae83('0xc')]=function(){this[_0xae83('0x11')]=0x0;this[_0xae83('0x12')]=0x0;for(var _0x4e6a0b=0x0;_0x4e6a0b<this['Agents'][_0xae83('0x13')];_0x4e6a0b+=0x1){if(this[_0xae83('0xb')][_0x4e6a0b][_0xae83('0x14')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x4e6a0b]['faxPause']){this[_0xae83('0x12')]+=0x1;}}this['available']=this[_0xae83('0x11')]-this[_0xae83('0x12')];this[_0xae83('0x15')]=this[_0xae83('0x15')]>=0x0?this[_0xae83('0x15')]:0x0;var _0x5cd40a={'id':this['id'],'available':this[_0xae83('0x15')],'loggedIn':this[_0xae83('0x11')],'name':this['name'],'paused':this[_0xae83('0x12')],'waiting':this[_0xae83('0x16')]};var _0x453ac9=md5(JSON['stringify'](_0x5cd40a));if(this[_0xae83('0x1')]!==_0x453ac9){this[_0xae83('0x1')]=_0x453ac9;io['to'](util[_0xae83('0x17')]('fax:queue:%s',_0x5cd40a[_0xae83('0x18')]))[_0xae83('0x19')]('fax_queue:save',_0x5cd40a);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0x4b67=['faxPause','available','name','stringify','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','util','../../../config/environment','redis','defaults','localhost','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','map','loggedIn','paused','length'];(function(_0x3ad5fe,_0x4b57bc){var _0x186865=function(_0x1faddc){while(--_0x1faddc){_0x3ad5fe['push'](_0x3ad5fe['shift']());}};_0x186865(++_0x4b57bc);}(_0x4b67,0x14c));var _0x74b6=function(_0x3190ac,_0x4050ba){_0x3190ac=_0x3190ac-0x0;var _0x1f0503=_0x4b67[_0x3190ac];return _0x1f0503;};'use strict';var _=require(_0x74b6('0x0'));var md5=require(_0x74b6('0x1'));var util=require(_0x74b6('0x2'));var Redis=require('ioredis');var config=require(_0x74b6('0x3'));config[_0x74b6('0x4')]=_[_0x74b6('0x5')](config['redis'],{'host':_0x74b6('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x74b6('0x4')]));function FaxQueue(_0x2ab835){this['id']=_0x2ab835['id']||0x0;this['name']=_0x2ab835['name']||'';this[_0x74b6('0x7')]=_0x2ab835[_0x74b6('0x7')]||0xa;this[_0x74b6('0x8')]=_0x2ab835[_0x74b6('0x8')]||'beepall';this[_0x74b6('0x9')]=_0x2ab835[_0x74b6('0x9')];this[_0x74b6('0xa')]={};this[_0x74b6('0xb')]=0x0;this[_0x74b6('0x1')]='';this[_0x74b6('0xc')]();this[_0x74b6('0xd')]();}FaxQueue['prototype'][_0x74b6('0xc')]=function(){var _0x163dd6=this[_0x74b6('0xa')][_0x74b6('0xe')];this[_0x74b6('0xa')]=_[_0x74b6('0xf')](this[_0x74b6('0x9')],'id');this['mapAgentsId'][_0x74b6('0xe')]=_0x163dd6;};FaxQueue['prototype']['updateRealtime']=function(){this[_0x74b6('0x10')]=0x0;this[_0x74b6('0x11')]=0x0;for(var _0x4ac88d=0x0;_0x4ac88d<this[_0x74b6('0x9')][_0x74b6('0x12')];_0x4ac88d+=0x1){if(this[_0x74b6('0x9')][_0x4ac88d]['online']){this[_0x74b6('0x10')]+=0x1;}if(this['Agents'][_0x4ac88d][_0x74b6('0x13')]){this['paused']+=0x1;}}this['available']=this[_0x74b6('0x10')]-this[_0x74b6('0x11')];this[_0x74b6('0x14')]=this[_0x74b6('0x14')]>=0x0?this[_0x74b6('0x14')]:0x0;var _0x27f087={'id':this['id'],'available':this[_0x74b6('0x14')],'loggedIn':this[_0x74b6('0x10')],'name':this[_0x74b6('0x15')],'paused':this['paused'],'waiting':this[_0x74b6('0xb')]};var _0x456420=md5(JSON[_0x74b6('0x16')](_0x27f087));if(this[_0x74b6('0x1')]!==_0x456420){this[_0x74b6('0x1')]=_0x456420;io['to'](util['format'](_0x74b6('0x17'),_0x27f087[_0x74b6('0x15')]))[_0x74b6('0x18')](_0x74b6('0x19'),_0x27f087);}};module[_0x74b6('0x1a')]=FaxQueue;
\ No newline at end of file
index b8a8c6f..d599230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8c8=['Intervals','exports','name'];(function(_0x158e3b,_0x4534b){var _0x551a1d=function(_0x629c21){while(--_0x629c21){_0x158e3b['push'](_0x158e3b['shift']());}};_0x551a1d(++_0x4534b);}(_0xe8c8,0xda));var _0x8e8c=function(_0x2282a9,_0x102db8){_0x2282a9=_0x2282a9-0x0;var _0x31aa76=_0xe8c8[_0x2282a9];return _0x31aa76;};'use strict';function Interval(_0x335c47){this['id']=_0x335c47['id']||0x0;this[_0x8e8c('0x0')]=_0x335c47[_0x8e8c('0x0')]||'';this[_0x8e8c('0x1')]=_0x335c47['Intervals']||{};}module[_0x8e8c('0x2')]=Interval;
\ No newline at end of file
+var _0x3dc2=['name','Intervals','exports'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x3dc2,0x1a1));var _0x23dc=function(_0x351ac3,_0x6c1359){_0x351ac3=_0x351ac3-0x0;var _0x4ccef1=_0x3dc2[_0x351ac3];return _0x4ccef1;};'use strict';function Interval(_0x1a8c9c){this['id']=_0x1a8c9c['id']||0x0;this[_0x23dc('0x0')]=_0x1a8c9c['name']||'';this['Intervals']=_0x1a8c9c[_0x23dc('0x1')]||{};}module[_0x23dc('0x2')]=Interval;
\ No newline at end of file
index c8bc929..8dadc19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x764f=['updateRealtime','prototype','_rr','map','loggedIn','paused','online','mailPause','available','md5','mail:queue:%s','mail_queue:save','exports','lodash','util','../../../config/environment','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting'];(function(_0x4e3d61,_0x445ce6){var _0x404b86=function(_0x368609){while(--_0x368609){_0x4e3d61['push'](_0x4e3d61['shift']());}};_0x404b86(++_0x445ce6);}(_0x764f,0xdd));var _0xf764=function(_0x3bbc58,_0x900969){_0x3bbc58=_0x3bbc58-0x0;var _0xaeef47=_0x764f[_0x3bbc58];return _0xaeef47;};'use strict';var _=require(_0xf764('0x0'));var md5=require('md5');var util=require(_0xf764('0x1'));var Redis=require('ioredis');var config=require(_0xf764('0x2'));config[_0xf764('0x3')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xf764('0x4'))(new Redis(config[_0xf764('0x3')]));function MailQueue(_0x295f78){this['id']=_0x295f78['id']||0x0;this['name']=_0x295f78[_0xf764('0x5')]||'';this['timeout']=_0x295f78[_0xf764('0x6')]||0xa;this[_0xf764('0x7')]=_0x295f78[_0xf764('0x7')]||_0xf764('0x8');this[_0xf764('0x9')]=_0x295f78[_0xf764('0x9')];this[_0xf764('0xa')]={};this[_0xf764('0xb')]=0x0;this['md5']='';this[_0xf764('0xc')]();this[_0xf764('0xd')]();}MailQueue[_0xf764('0xe')][_0xf764('0xc')]=function(){var _0x519aac=this[_0xf764('0xa')][_0xf764('0xf')];this['mapAgentsId']=_[_0xf764('0x10')](this[_0xf764('0x9')],'id');this[_0xf764('0xa')][_0xf764('0xf')]=_0x519aac;};MailQueue['prototype'][_0xf764('0xd')]=function(){this[_0xf764('0x11')]=0x0;this[_0xf764('0x12')]=0x0;for(var _0x1623f7=0x0;_0x1623f7<this[_0xf764('0x9')]['length'];_0x1623f7+=0x1){if(this[_0xf764('0x9')][_0x1623f7][_0xf764('0x13')]){this[_0xf764('0x11')]+=0x1;}if(this[_0xf764('0x9')][_0x1623f7][_0xf764('0x14')]){this['paused']+=0x1;}}this[_0xf764('0x15')]=this[_0xf764('0x11')]-this['paused'];this['available']=this['available']>=0x0?this[_0xf764('0x15')]:0x0;var _0x114060={'id':this['id'],'available':this[_0xf764('0x15')],'loggedIn':this[_0xf764('0x11')],'name':this[_0xf764('0x5')],'paused':this[_0xf764('0x12')],'waiting':this[_0xf764('0xb')]};var _0x1bd632=md5(JSON['stringify'](_0x114060));if(this[_0xf764('0x16')]!==_0x1bd632){this['md5']=_0x1bd632;io['to'](util['format'](_0xf764('0x17'),_0x114060[_0xf764('0x5')]))['emit'](_0xf764('0x18'),_0x114060);}};module[_0xf764('0x19')]=MailQueue;
\ No newline at end of file
+var _0x5e85=['mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','util','ioredis','redis','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','updateRouting','updateRealtime','_rr','map','prototype','paused','length','online','loggedIn','available','waiting','stringify','format'];(function(_0x5815ae,_0x16c900){var _0x5ef7f7=function(_0x535f87){while(--_0x535f87){_0x5815ae['push'](_0x5815ae['shift']());}};_0x5ef7f7(++_0x16c900);}(_0x5e85,0x1c4));var _0x55e8=function(_0x278333,_0x567f09){_0x278333=_0x278333-0x0;var _0x412415=_0x5e85[_0x278333];return _0x412415;};'use strict';var _=require(_0x55e8('0x0'));var md5=require(_0x55e8('0x1'));var util=require(_0x55e8('0x2'));var Redis=require(_0x55e8('0x3'));var config=require('../../../config/environment');config[_0x55e8('0x4')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x55e8('0x5'))(new Redis(config[_0x55e8('0x4')]));function MailQueue(_0x2686c6){this['id']=_0x2686c6['id']||0x0;this['name']=_0x2686c6[_0x55e8('0x6')]||'';this[_0x55e8('0x7')]=_0x2686c6[_0x55e8('0x7')]||0xa;this[_0x55e8('0x8')]=_0x2686c6['strategy']||'beepall';this[_0x55e8('0x9')]=_0x2686c6[_0x55e8('0x9')];this[_0x55e8('0xa')]={};this['waiting']=0x0;this[_0x55e8('0x1')]='';this[_0x55e8('0xb')]();this[_0x55e8('0xc')]();}MailQueue['prototype']['updateRouting']=function(){var _0x529040=this['mapAgentsId'][_0x55e8('0xd')];this[_0x55e8('0xa')]=_[_0x55e8('0xe')](this[_0x55e8('0x9')],'id');this['mapAgentsId'][_0x55e8('0xd')]=_0x529040;};MailQueue[_0x55e8('0xf')][_0x55e8('0xc')]=function(){this['loggedIn']=0x0;this[_0x55e8('0x10')]=0x0;for(var _0xde1fe0=0x0;_0xde1fe0<this[_0x55e8('0x9')][_0x55e8('0x11')];_0xde1fe0+=0x1){if(this[_0x55e8('0x9')][_0xde1fe0][_0x55e8('0x12')]){this[_0x55e8('0x13')]+=0x1;}if(this['Agents'][_0xde1fe0]['mailPause']){this[_0x55e8('0x10')]+=0x1;}}this['available']=this[_0x55e8('0x13')]-this[_0x55e8('0x10')];this[_0x55e8('0x14')]=this['available']>=0x0?this['available']:0x0;var _0xf55e24={'id':this['id'],'available':this[_0x55e8('0x14')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0x55e8('0x10')],'waiting':this[_0x55e8('0x15')]};var _0x59c21a=md5(JSON[_0x55e8('0x16')](_0xf55e24));if(this['md5']!==_0x59c21a){this[_0x55e8('0x1')]=_0x59c21a;io['to'](util[_0x55e8('0x17')](_0x55e8('0x18'),_0xf55e24[_0x55e8('0x6')]))[_0x55e8('0x19')](_0x55e8('0x1a'),_0xf55e24);}};module[_0x55e8('0x1b')]=MailQueue;
\ No newline at end of file
index 3c4adf8..a5a24ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['exports','lodash','md5','util','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','waiting','updateRealtime','mapAgentsId','_rr','map','Agents','prototype','loggedIn','paused','length','openchannelPause','available','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x7a54,0x106));var _0x47a5=function(_0x54560f,_0x4511df){_0x54560f=_0x54560f-0x0;var _0x22ae0a=_0x7a54[_0x54560f];return _0x22ae0a;};'use strict';var _=require(_0x47a5('0x0'));var md5=require(_0x47a5('0x1'));var util=require(_0x47a5('0x2'));var Redis=require('ioredis');var config=require(_0x47a5('0x3'));config[_0x47a5('0x4')]=_['defaults'](config[_0x47a5('0x4')],{'host':_0x47a5('0x5'),'port':0x18eb});var io=require(_0x47a5('0x6'))(new Redis(config[_0x47a5('0x4')]));function OpenchannelQueue(_0xfdf934){this['id']=_0xfdf934['id']||0x0;this['name']=_0xfdf934[_0x47a5('0x7')]||'';this['timeout']=_0xfdf934[_0x47a5('0x8')]||0xa;this[_0x47a5('0x9')]=_0xfdf934['strategy']||_0x47a5('0xa');this['Agents']=_0xfdf934['Agents'];this['mapAgentsId']={};this[_0x47a5('0xb')]=0x0;this[_0x47a5('0x1')]='';this['updateRouting']();this[_0x47a5('0xc')]();}OpenchannelQueue['prototype']['updateRouting']=function(){var _0x1f47f4=this[_0x47a5('0xd')][_0x47a5('0xe')];this[_0x47a5('0xd')]=_[_0x47a5('0xf')](this[_0x47a5('0x10')],'id');this[_0x47a5('0xd')]['_rr']=_0x1f47f4;};OpenchannelQueue[_0x47a5('0x11')][_0x47a5('0xc')]=function(){this[_0x47a5('0x12')]=0x0;this[_0x47a5('0x13')]=0x0;for(var _0x139f25=0x0;_0x139f25<this[_0x47a5('0x10')][_0x47a5('0x14')];_0x139f25+=0x1){if(this[_0x47a5('0x10')][_0x139f25]['online']){this[_0x47a5('0x12')]+=0x1;}if(this[_0x47a5('0x10')][_0x139f25][_0x47a5('0x15')]){this[_0x47a5('0x13')]+=0x1;}}this[_0x47a5('0x16')]=this['loggedIn']-this['paused'];this[_0x47a5('0x16')]=this['available']>=0x0?this['available']:0x0;var _0x423a81={'id':this['id'],'available':this[_0x47a5('0x16')],'loggedIn':this[_0x47a5('0x12')],'name':this[_0x47a5('0x7')],'paused':this[_0x47a5('0x13')],'waiting':this[_0x47a5('0xb')]};var _0x2763d6=md5(JSON[_0x47a5('0x17')](_0x423a81));if(this[_0x47a5('0x1')]!==_0x2763d6){this['md5']=_0x2763d6;io['to'](util[_0x47a5('0x18')](_0x47a5('0x19'),_0x423a81['name']))[_0x47a5('0x1a')](_0x47a5('0x1b'),_0x423a81);}};module[_0x47a5('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _0xc4aa=['strategy','Agents','mapAgentsId','updateRouting','updateRealtime','map','_rr','prototype','loggedIn','paused','length','online','available','waiting','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0xc4aa[_0x342baa];return _0x1208f3;};'use strict';var _=require(_0xac4a('0x0'));var md5=require(_0xac4a('0x1'));var util=require(_0xac4a('0x2'));var Redis=require(_0xac4a('0x3'));var config=require(_0xac4a('0x4'));config[_0xac4a('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xac4a('0x6'))(new Redis(config[_0xac4a('0x5')]));function OpenchannelQueue(_0x730a38){this['id']=_0x730a38['id']||0x0;this[_0xac4a('0x7')]=_0x730a38[_0xac4a('0x7')]||'';this[_0xac4a('0x8')]=_0x730a38[_0xac4a('0x8')]||0xa;this[_0xac4a('0x9')]=_0x730a38['strategy']||'beepall';this[_0xac4a('0xa')]=_0x730a38[_0xac4a('0xa')];this[_0xac4a('0xb')]={};this['waiting']=0x0;this[_0xac4a('0x1')]='';this[_0xac4a('0xc')]();this[_0xac4a('0xd')]();}OpenchannelQueue['prototype'][_0xac4a('0xc')]=function(){var _0x488e3c=this[_0xac4a('0xb')]['_rr'];this[_0xac4a('0xb')]=_[_0xac4a('0xe')](this[_0xac4a('0xa')],'id');this['mapAgentsId'][_0xac4a('0xf')]=_0x488e3c;};OpenchannelQueue[_0xac4a('0x10')][_0xac4a('0xd')]=function(){this[_0xac4a('0x11')]=0x0;this[_0xac4a('0x12')]=0x0;for(var _0x3b71c0=0x0;_0x3b71c0<this[_0xac4a('0xa')][_0xac4a('0x13')];_0x3b71c0+=0x1){if(this[_0xac4a('0xa')][_0x3b71c0][_0xac4a('0x14')]){this[_0xac4a('0x11')]+=0x1;}if(this[_0xac4a('0xa')][_0x3b71c0]['openchannelPause']){this[_0xac4a('0x12')]+=0x1;}}this[_0xac4a('0x15')]=this[_0xac4a('0x11')]-this[_0xac4a('0x12')];this[_0xac4a('0x15')]=this[_0xac4a('0x15')]>=0x0?this[_0xac4a('0x15')]:0x0;var _0x44ec59={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0xac4a('0x7')],'paused':this[_0xac4a('0x12')],'waiting':this[_0xac4a('0x16')]};var _0x4d837c=md5(JSON[_0xac4a('0x17')](_0x44ec59));if(this[_0xac4a('0x1')]!==_0x4d837c){this[_0xac4a('0x1')]=_0x4d837c;io['to'](util[_0xac4a('0x18')](_0xac4a('0x19'),_0x44ec59[_0xac4a('0x7')]))[_0xac4a('0x1a')](_0xac4a('0x1b'),_0x44ec59);}};module['exports']=OpenchannelQueue;
\ No newline at end of file
index b189bfe..a44404f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf194=['stringify','format','sms:queue:%s','sms_queue:save','exports','lodash','md5','util','ioredis','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','paused','length','loggedIn','smsPause','available'];(function(_0xb34472,_0x37a2bc){var _0x221cc2=function(_0x5edae1){while(--_0x5edae1){_0xb34472['push'](_0xb34472['shift']());}};_0x221cc2(++_0x37a2bc);}(_0xf194,0x91));var _0x4f19=function(_0x4b9371,_0x5039af){_0x4b9371=_0x4b9371-0x0;var _0x171629=_0xf194[_0x4b9371];return _0x171629;};'use strict';var _=require(_0x4f19('0x0'));var md5=require(_0x4f19('0x1'));var util=require(_0x4f19('0x2'));var Redis=require(_0x4f19('0x3'));var config=require('../../../config/environment');config[_0x4f19('0x4')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x4f19('0x5'))(new Redis(config[_0x4f19('0x4')]));function SmsQueue(_0x13ddda){this['id']=_0x13ddda['id']||0x0;this['name']=_0x13ddda[_0x4f19('0x6')]||'';this[_0x4f19('0x7')]=_0x13ddda['timeout']||0xa;this['strategy']=_0x13ddda[_0x4f19('0x8')]||_0x4f19('0x9');this[_0x4f19('0xa')]=_0x13ddda[_0x4f19('0xa')];this['mapAgentsId']={};this[_0x4f19('0xb')]=0x0;this[_0x4f19('0x1')]='';this[_0x4f19('0xc')]();this[_0x4f19('0xd')]();}SmsQueue[_0x4f19('0xe')][_0x4f19('0xc')]=function(){var _0x57b5e9=this['mapAgentsId']['_rr'];this[_0x4f19('0xf')]=_[_0x4f19('0x10')](this['Agents'],'id');this[_0x4f19('0xf')][_0x4f19('0x11')]=_0x57b5e9;};SmsQueue[_0x4f19('0xe')][_0x4f19('0xd')]=function(){this['loggedIn']=0x0;this[_0x4f19('0x12')]=0x0;for(var _0x25e5ce=0x0;_0x25e5ce<this['Agents'][_0x4f19('0x13')];_0x25e5ce+=0x1){if(this[_0x4f19('0xa')][_0x25e5ce]['online']){this[_0x4f19('0x14')]+=0x1;}if(this['Agents'][_0x25e5ce][_0x4f19('0x15')]){this[_0x4f19('0x12')]+=0x1;}}this['available']=this['loggedIn']-this[_0x4f19('0x12')];this[_0x4f19('0x16')]=this[_0x4f19('0x16')]>=0x0?this['available']:0x0;var _0x1d9bf3={'id':this['id'],'available':this[_0x4f19('0x16')],'loggedIn':this[_0x4f19('0x14')],'name':this[_0x4f19('0x6')],'paused':this[_0x4f19('0x12')],'waiting':this['waiting']};var _0xf401d7=md5(JSON[_0x4f19('0x17')](_0x1d9bf3));if(this['md5']!==_0xf401d7){this[_0x4f19('0x1')]=_0xf401d7;io['to'](util[_0x4f19('0x18')](_0x4f19('0x19'),_0x1d9bf3[_0x4f19('0x6')]))['emit'](_0x4f19('0x1a'),_0x1d9bf3);}};module[_0x4f19('0x1b')]=SmsQueue;
\ No newline at end of file
+var _0xdb4b=['_rr','map','loggedIn','paused','online','smsPause','available','stringify','format','sms:queue:%s','emit','exports','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xdb4b,0xd7));var _0xbdb4=function(_0x5e54ea,_0x27a035){_0x5e54ea=_0x5e54ea-0x0;var _0x5ebbfb=_0xdb4b[_0x5e54ea];return _0x5ebbfb;};'use strict';var _=require('lodash');var md5=require(_0xbdb4('0x0'));var util=require('util');var Redis=require(_0xbdb4('0x1'));var config=require(_0xbdb4('0x2'));config[_0xbdb4('0x3')]=_[_0xbdb4('0x4')](config['redis'],{'host':_0xbdb4('0x5'),'port':0x18eb});var io=require(_0xbdb4('0x6'))(new Redis(config[_0xbdb4('0x3')]));function SmsQueue(_0xf0cf67){this['id']=_0xf0cf67['id']||0x0;this[_0xbdb4('0x7')]=_0xf0cf67[_0xbdb4('0x7')]||'';this[_0xbdb4('0x8')]=_0xf0cf67['timeout']||0xa;this['strategy']=_0xf0cf67[_0xbdb4('0x9')]||_0xbdb4('0xa');this[_0xbdb4('0xb')]=_0xf0cf67[_0xbdb4('0xb')];this['mapAgentsId']={};this[_0xbdb4('0xc')]=0x0;this['md5']='';this[_0xbdb4('0xd')]();this[_0xbdb4('0xe')]();}SmsQueue[_0xbdb4('0xf')]['updateRouting']=function(){var _0x5b4412=this[_0xbdb4('0x10')][_0xbdb4('0x11')];this[_0xbdb4('0x10')]=_[_0xbdb4('0x12')](this['Agents'],'id');this['mapAgentsId'][_0xbdb4('0x11')]=_0x5b4412;};SmsQueue[_0xbdb4('0xf')][_0xbdb4('0xe')]=function(){this[_0xbdb4('0x13')]=0x0;this[_0xbdb4('0x14')]=0x0;for(var _0x310780=0x0;_0x310780<this['Agents']['length'];_0x310780+=0x1){if(this[_0xbdb4('0xb')][_0x310780][_0xbdb4('0x15')]){this['loggedIn']+=0x1;}if(this[_0xbdb4('0xb')][_0x310780][_0xbdb4('0x16')]){this['paused']+=0x1;}}this['available']=this[_0xbdb4('0x13')]-this[_0xbdb4('0x14')];this['available']=this[_0xbdb4('0x17')]>=0x0?this[_0xbdb4('0x17')]:0x0;var _0x4a180b={'id':this['id'],'available':this[_0xbdb4('0x17')],'loggedIn':this[_0xbdb4('0x13')],'name':this[_0xbdb4('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x995070=md5(JSON[_0xbdb4('0x18')](_0x4a180b));if(this['md5']!==_0x995070){this[_0xbdb4('0x0')]=_0x995070;io['to'](util[_0xbdb4('0x19')](_0xbdb4('0x1a'),_0x4a180b['name']))[_0xbdb4('0x1b')]('sms_queue:save',_0x4a180b);}};module[_0xbdb4('0x1c')]=SmsQueue;
\ No newline at end of file
index 93ad1c5..55d1c6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6b2=['redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRealtime','prototype','_rr','map','loggedIn','paused','length','whatsappPause','available','stringify','format','whatsapp:queue:%s','whatsapp_queue:save','exports','lodash','md5','util','../../../config/environment'];(function(_0x525e58,_0x245928){var _0x4a44f3=function(_0xa4fd13){while(--_0xa4fd13){_0x525e58['push'](_0x525e58['shift']());}};_0x4a44f3(++_0x245928);}(_0xb6b2,0x1e2));var _0x2b6b=function(_0x5d66ec,_0x17f77b){_0x5d66ec=_0x5d66ec-0x0;var _0x3089d=_0xb6b2[_0x5d66ec];return _0x3089d;};'use strict';var _=require(_0x2b6b('0x0'));var md5=require(_0x2b6b('0x1'));var util=require(_0x2b6b('0x2'));var Redis=require('ioredis');var config=require(_0x2b6b('0x3'));config['redis']=_['defaults'](config[_0x2b6b('0x4')],{'host':_0x2b6b('0x5'),'port':0x18eb});var io=require(_0x2b6b('0x6'))(new Redis(config[_0x2b6b('0x4')]));function WhatsappQueue(_0x88fe9d){this['id']=_0x88fe9d['id']||0x0;this['name']=_0x88fe9d[_0x2b6b('0x7')]||'';this[_0x2b6b('0x8')]=_0x88fe9d['timeout']||0xa;this[_0x2b6b('0x9')]=_0x88fe9d[_0x2b6b('0x9')]||_0x2b6b('0xa');this[_0x2b6b('0xb')]=_0x88fe9d[_0x2b6b('0xb')];this[_0x2b6b('0xc')]={};this['waiting']=0x0;this['md5']='';this['updateRouting']();this[_0x2b6b('0xd')]();}WhatsappQueue[_0x2b6b('0xe')]['updateRouting']=function(){var _0x178423=this['mapAgentsId'][_0x2b6b('0xf')];this[_0x2b6b('0xc')]=_[_0x2b6b('0x10')](this[_0x2b6b('0xb')],'id');this[_0x2b6b('0xc')][_0x2b6b('0xf')]=_0x178423;};WhatsappQueue['prototype']['updateRealtime']=function(){this[_0x2b6b('0x11')]=0x0;this[_0x2b6b('0x12')]=0x0;for(var _0x4d9d27=0x0;_0x4d9d27<this[_0x2b6b('0xb')][_0x2b6b('0x13')];_0x4d9d27+=0x1){if(this['Agents'][_0x4d9d27]['online']){this[_0x2b6b('0x11')]+=0x1;}if(this[_0x2b6b('0xb')][_0x4d9d27][_0x2b6b('0x14')]){this[_0x2b6b('0x12')]+=0x1;}}this[_0x2b6b('0x15')]=this[_0x2b6b('0x11')]-this['paused'];this[_0x2b6b('0x15')]=this[_0x2b6b('0x15')]>=0x0?this[_0x2b6b('0x15')]:0x0;var _0x48656a={'id':this['id'],'available':this['available'],'loggedIn':this[_0x2b6b('0x11')],'name':this[_0x2b6b('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x17f12c=md5(JSON[_0x2b6b('0x16')](_0x48656a));if(this['md5']!==_0x17f12c){this[_0x2b6b('0x1')]=_0x17f12c;io['to'](util[_0x2b6b('0x17')](_0x2b6b('0x18'),_0x48656a[_0x2b6b('0x7')]))['emit'](_0x2b6b('0x19'),_0x48656a);}};module[_0x2b6b('0x1a')]=WhatsappQueue;
\ No newline at end of file
+var _0x3b9b=['exports','lodash','util','ioredis','../../../config/environment','socket.io-emitter','redis','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRouting','prototype','_rr','map','updateRealtime','paused','online','loggedIn','available','stringify','whatsapp:queue:%s','emit','whatsapp_queue:save'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x3b9b,0x1c1));var _0xb3b9=function(_0x4a3de6,_0x597fe8){_0x4a3de6=_0x4a3de6-0x0;var _0x448a86=_0x3b9b[_0x4a3de6];return _0x448a86;};'use strict';var _=require(_0xb3b9('0x0'));var md5=require('md5');var util=require(_0xb3b9('0x1'));var Redis=require(_0xb3b9('0x2'));var config=require(_0xb3b9('0x3'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xb3b9('0x4'))(new Redis(config[_0xb3b9('0x5')]));function WhatsappQueue(_0xa2d7b7){this['id']=_0xa2d7b7['id']||0x0;this['name']=_0xa2d7b7[_0xb3b9('0x6')]||'';this[_0xb3b9('0x7')]=_0xa2d7b7[_0xb3b9('0x7')]||0xa;this[_0xb3b9('0x8')]=_0xa2d7b7[_0xb3b9('0x8')]||_0xb3b9('0x9');this[_0xb3b9('0xa')]=_0xa2d7b7[_0xb3b9('0xa')];this[_0xb3b9('0xb')]={};this[_0xb3b9('0xc')]=0x0;this[_0xb3b9('0xd')]='';this[_0xb3b9('0xe')]();this['updateRealtime']();}WhatsappQueue[_0xb3b9('0xf')]['updateRouting']=function(){var _0x25ef6e=this[_0xb3b9('0xb')][_0xb3b9('0x10')];this[_0xb3b9('0xb')]=_[_0xb3b9('0x11')](this[_0xb3b9('0xa')],'id');this[_0xb3b9('0xb')][_0xb3b9('0x10')]=_0x25ef6e;};WhatsappQueue[_0xb3b9('0xf')][_0xb3b9('0x12')]=function(){this['loggedIn']=0x0;this[_0xb3b9('0x13')]=0x0;for(var _0x3b6611=0x0;_0x3b6611<this[_0xb3b9('0xa')]['length'];_0x3b6611+=0x1){if(this[_0xb3b9('0xa')][_0x3b6611][_0xb3b9('0x14')]){this[_0xb3b9('0x15')]+=0x1;}if(this[_0xb3b9('0xa')][_0x3b6611]['whatsappPause']){this[_0xb3b9('0x13')]+=0x1;}}this['available']=this['loggedIn']-this['paused'];this['available']=this[_0xb3b9('0x16')]>=0x0?this[_0xb3b9('0x16')]:0x0;var _0x274bd1={'id':this['id'],'available':this[_0xb3b9('0x16')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this['waiting']};var _0x3ff52e=md5(JSON[_0xb3b9('0x17')](_0x274bd1));if(this['md5']!==_0x3ff52e){this[_0xb3b9('0xd')]=_0x3ff52e;io['to'](util['format'](_0xb3b9('0x18'),_0x274bd1[_0xb3b9('0x6')]))[_0xb3b9('0x19')](_0xb3b9('0x1a'),_0x274bd1);}};module[_0xb3b9('0x1b')]=WhatsappQueue;
\ No newline at end of file
index 84feb51..22e2fbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9e0[_0x14add3];return _0x4a174f;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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 55fc1d7..140e45d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fb3=['AddTagsToChatInteraction','addTagsToChatInteraction','../client','update','Request','UpdateChatInteraction','updateChatInteraction','addTags'];(function(_0x2f8b3a,_0x3dcb42){var _0x23fb19=function(_0x5edaaa){while(--_0x5edaaa){_0x2f8b3a['push'](_0x2f8b3a['shift']());}};_0x23fb19(++_0x3dcb42);}(_0x6fb3,0x6a));var _0x36fb=function(_0x2abc17,_0x4a52c9){_0x2abc17=_0x2abc17-0x0;var _0x662d5=_0x6fb3[_0x2abc17];return _0x662d5;};'use strict';var client=require(_0x36fb('0x0'));exports[_0x36fb('0x1')]=function(_0x107d7f,_0x1e7943){return client[_0x36fb('0x2')](_0x36fb('0x3'),{'body':_0x1e7943,'options':{'where':{'id':_0x107d7f}},'log':_0x36fb('0x4')});};exports[_0x36fb('0x5')]=function(_0x477b1c,_0x2307e5){return client['Request'](_0x36fb('0x6'),{'body':_0x2307e5,'options':{'where':{'id':_0x477b1c}},'log':_0x36fb('0x7')});};
\ No newline at end of file
+var _0x02a5=['addTagsToChatInteraction','../client','Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction'];(function(_0x116702,_0x155044){var _0x292625=function(_0x4770ce){while(--_0x4770ce){_0x116702['push'](_0x116702['shift']());}};_0x292625(++_0x155044);}(_0x02a5,0xcc));var _0x502a=function(_0x487702,_0x49f5d4){_0x487702=_0x487702-0x0;var _0x5e7150=_0x02a5[_0x487702];return _0x5e7150;};'use strict';var client=require(_0x502a('0x0'));exports['update']=function(_0x85a71a,_0x5b11a3){return client[_0x502a('0x1')](_0x502a('0x2'),{'body':_0x5b11a3,'options':{'where':{'id':_0x85a71a}},'log':_0x502a('0x3')});};exports[_0x502a('0x4')]=function(_0x2e45e4,_0x2c8232){return client['Request'](_0x502a('0x5'),{'body':_0x2c8232,'options':{'where':{'id':_0x2e45e4}},'log':_0x502a('0x6')});};
\ No newline at end of file
index 7279b3c..f11a375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02b3=['CreateChatMessage','createChatMessage','../client'];(function(_0x5970fc,_0x22f9a1){var _0xe4a709=function(_0x54edb6){while(--_0x54edb6){_0x5970fc['push'](_0x5970fc['shift']());}};_0xe4a709(++_0x22f9a1);}(_0x02b3,0x19d));var _0x302b=function(_0x193e28,_0x3dac1d){_0x193e28=_0x193e28-0x0;var _0x20ef59=_0x02b3[_0x193e28];return _0x20ef59;};'use strict';var client=require(_0x302b('0x0'));exports['create']=function(_0x27f128){return client['Request'](_0x302b('0x1'),{'body':_0x27f128,'log':_0x302b('0x2')});};
\ No newline at end of file
+var _0x2ce3=['createChatMessage','../client','create','Request','CreateChatMessage'];(function(_0x4897b0,_0x27dc25){var _0x5e99bb=function(_0x382603){while(--_0x382603){_0x4897b0['push'](_0x4897b0['shift']());}};_0x5e99bb(++_0x27dc25);}(_0x2ce3,0xf6));var _0x32ce=function(_0x651740,_0x124986){_0x651740=_0x651740-0x0;var _0x561701=_0x2ce3[_0x651740];return _0x561701;};'use strict';var client=require(_0x32ce('0x0'));exports[_0x32ce('0x1')]=function(_0x58dc6c){return client[_0x32ce('0x2')](_0x32ce('0x3'),{'body':_0x58dc6c,'log':_0x32ce('0x4')});};
\ No newline at end of file
index cc63fef..6ea86e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ba0=['name','User','Agents','online','chatPause','../client','getChatQueues','Request','GetChatQueue'];(function(_0x18fb16,_0x45edbc){var _0x147b0d=function(_0x5b1b00){while(--_0x5b1b00){_0x18fb16['push'](_0x18fb16['shift']());}};_0x147b0d(++_0x45edbc);}(_0x8ba0,0x1c7));var _0x08ba=function(_0x39f21e,_0x2b2496){_0x39f21e=_0x39f21e-0x0;var _0x51331b=_0x8ba0[_0x39f21e];return _0x51331b;};'use strict';var client=require(_0x08ba('0x0'));exports[_0x08ba('0x1')]=function(){return function(){return client[_0x08ba('0x2')](_0x08ba('0x3'),{'options':{'raw':![],'attributes':['id',_0x08ba('0x4'),'timeout','strategy'],'include':[{'model':_0x08ba('0x5'),'as':_0x08ba('0x6'),'attributes':['id',_0x08ba('0x4'),_0x08ba('0x7'),_0x08ba('0x8')]}]},'log':_0x08ba('0x1')});};};
\ No newline at end of file
+var _0x9957=['GetChatQueue','timeout','strategy','User','Agents','online','chatPause','../client','getChatQueues','Request'];(function(_0x20210e,_0x1603f6){var _0x439c00=function(_0x5b4cc2){while(--_0x5b4cc2){_0x20210e['push'](_0x20210e['shift']());}};_0x439c00(++_0x1603f6);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(){return function(){return client[_0x7995('0x2')](_0x7995('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x7995('0x4'),_0x7995('0x5')],'include':[{'model':_0x7995('0x6'),'as':_0x7995('0x7'),'attributes':['id','name',_0x7995('0x8'),_0x7995('0x9')]}]},'log':_0x7995('0x1')});};};
\ No newline at end of file
index 573e8c6..fead6ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe600=['update','UpdateChatQueueReport','DESC','create','Request','CreateChatQueueReport'];(function(_0x528c26,_0x40cc85){var _0x43bbd1=function(_0x252a07){while(--_0x252a07){_0x528c26['push'](_0x528c26['shift']());}};_0x43bbd1(++_0x40cc85);}(_0xe600,0x159));var _0x0e60=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xe600[_0x2641f9];return _0x585741;};'use strict';var client=require('../client');exports[_0x0e60('0x0')]=function(_0x4f3586){return client[_0x0e60('0x1')](_0x0e60('0x2'),{'body':_0x4f3586,'log':_0x0e60('0x2')});};exports[_0x0e60('0x3')]=function(_0x3c7873,_0x276bdb){return client[_0x0e60('0x1')](_0x0e60('0x4'),{'body':_0x276bdb,'options':{'where':{'uniqueid':_0x3c7873},'order':[['id',_0x0e60('0x5')]],'limit':0x1},'log':_0x0e60('0x4')});};
\ No newline at end of file
+var _0xe41f=['Request','UpdateChatQueueReport','../client','create'];(function(_0x312947,_0x3eb15c){var _0x2ca0d0=function(_0x1bc9fa){while(--_0x1bc9fa){_0x312947['push'](_0x312947['shift']());}};_0x2ca0d0(++_0x3eb15c);}(_0xe41f,0x13e));var _0xfe41=function(_0x1def81,_0x535c58){_0x1def81=_0x1def81-0x0;var _0xcaace=_0xe41f[_0x1def81];return _0xcaace;};'use strict';var client=require(_0xfe41('0x0'));exports[_0xfe41('0x1')]=function(_0x286c6e){return client[_0xfe41('0x2')]('CreateChatQueueReport',{'body':_0x286c6e,'log':'CreateChatQueueReport'});};exports['update']=function(_0x196b31,_0x67a2d3){return client[_0xfe41('0x2')](_0xfe41('0x3'),{'body':_0x67a2d3,'options':{'where':{'uniqueid':_0x196b31},'order':[['id','DESC']],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
index d547e54..a0bd111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x5c4f6b,_0x2cdfce){var _0x104c4e=function(_0x31171b){while(--_0x31171b){_0x5c4f6b['push'](_0x5c4f6b['shift']());}};_0x104c4e(++_0x2cdfce);}(_0x7a54,0x106));var _0x47a5=function(_0x4d407f,_0x3c461e){_0x4d407f=_0x4d407f-0x0;var _0x2672e8=_0x7a54[_0x4d407f];return _0x2672e8;};'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 _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x18afca,_0x4219d9){var _0x11603f=function(_0x21d5d1){while(--_0x21d5d1){_0x18afca['push'](_0x18afca['shift']());}};_0x11603f(++_0x4219d9);}(_0x7a54,0x106));var _0x47a5=function(_0x3c4512,_0x3d867c){_0x3c4512=_0x3c4512-0x0;var _0x11e9c1=_0x7a54[_0x3c4512];return _0x11e9c1;};'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
index 1b9eb4d..f8182ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d94=['../client','Request','CreateFaxMessage','createFaxMessage'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x8d94,0x1c0));var _0x48d9=function(_0x525842,_0x266be6){_0x525842=_0x525842-0x0;var _0xcc268=_0x8d94[_0x525842];return _0xcc268;};'use strict';var client=require(_0x48d9('0x0'));exports['create']=function(_0x203a27){return client[_0x48d9('0x1')](_0x48d9('0x2'),{'body':_0x203a27,'log':_0x48d9('0x3')});};
\ No newline at end of file
+var _0x25af=['create','Request','CreateFaxMessage','createFaxMessage'];(function(_0x375703,_0x570ae6){var _0xbffae5=function(_0x3b4f8f){while(--_0x3b4f8f){_0x375703['push'](_0x375703['shift']());}};_0xbffae5(++_0x570ae6);}(_0x25af,0x150));var _0xf25a=function(_0xbf26c3,_0xaddf2f){_0xbf26c3=_0xbf26c3-0x0;var _0x25717b=_0x25af[_0xbf26c3];return _0x25717b;};'use strict';var client=require('../client');exports[_0xf25a('0x0')]=function(_0x554f9f){return client[_0xf25a('0x1')](_0xf25a('0x2'),{'body':_0x554f9f,'log':_0xf25a('0x3')});};
\ No newline at end of file
index bb6d833..5a51e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9040=['name','timeout','strategy','User','Agents','faxPause','getFaxQueues','Request','GetFaxQueue'];(function(_0xa1bb3b,_0x1faa37){var _0x54e78f=function(_0x3846f7){while(--_0x3846f7){_0xa1bb3b['push'](_0xa1bb3b['shift']());}};_0x54e78f(++_0x1faa37);}(_0x9040,0x7b));var _0x0904=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9040[_0x6c993a];return _0x27f547;};'use strict';var client=require('../client');exports[_0x0904('0x0')]=function(){return function(){return client[_0x0904('0x1')](_0x0904('0x2'),{'options':{'raw':![],'attributes':['id',_0x0904('0x3'),_0x0904('0x4'),_0x0904('0x5')],'include':[{'model':_0x0904('0x6'),'as':_0x0904('0x7'),'attributes':['id',_0x0904('0x3'),'online',_0x0904('0x8')]}]},'log':_0x0904('0x0')});};};
\ No newline at end of file
+var _0x7515=['timeout','strategy','User','../client','Request','name'];(function(_0x218f4f,_0x5bd075){var _0x5ce4fe=function(_0x138c85){while(--_0x138c85){_0x218f4f['push'](_0x218f4f['shift']());}};_0x5ce4fe(++_0x5bd075);}(_0x7515,0x8d));var _0x5751=function(_0x2c7c6a,_0x292ecf){_0x2c7c6a=_0x2c7c6a-0x0;var _0x2c4e43=_0x7515[_0x2c7c6a];return _0x2c4e43;};'use strict';var client=require(_0x5751('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0x5751('0x1')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0x5751('0x2'),_0x5751('0x3'),_0x5751('0x4')],'include':[{'model':_0x5751('0x5'),'as':'Agents','attributes':['id','name','online','faxPause']}]},'log':'getFaxQueues'});};};
\ No newline at end of file
index 5759e03..2e875ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x946b=['DESC','../client','create','Request','CreateFaxQueueReport','UpdateFaxQueueReport'];(function(_0x35dca8,_0x2e6bb8){var _0x423cd8=function(_0x5e0ddb){while(--_0x5e0ddb){_0x35dca8['push'](_0x35dca8['shift']());}};_0x423cd8(++_0x2e6bb8);}(_0x946b,0x1a5));var _0xb946=function(_0x1298d5,_0x445186){_0x1298d5=_0x1298d5-0x0;var _0x2c71d2=_0x946b[_0x1298d5];return _0x2c71d2;};'use strict';var client=require(_0xb946('0x0'));exports[_0xb946('0x1')]=function(_0x591ccd){return client[_0xb946('0x2')](_0xb946('0x3'),{'body':_0x591ccd,'log':_0xb946('0x3')});};exports['update']=function(_0x4256de,_0x3e3d32){return client['Request'](_0xb946('0x4'),{'body':_0x3e3d32,'options':{'where':{'uniqueid':_0x4256de},'order':[['id',_0xb946('0x5')]],'limit':0x1},'log':_0xb946('0x4')});};
\ No newline at end of file
+var _0x99ff=['Request','UpdateFaxQueueReport','DESC','../client','create','CreateFaxQueueReport','update'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x99ff,0x88));var _0xf99f=function(_0x2749b8,_0x570e1c){_0x2749b8=_0x2749b8-0x0;var _0x589657=_0x99ff[_0x2749b8];return _0x589657;};'use strict';var client=require(_0xf99f('0x0'));exports[_0xf99f('0x1')]=function(_0x27d630){return client['Request'](_0xf99f('0x2'),{'body':_0x27d630,'log':_0xf99f('0x2')});};exports[_0xf99f('0x3')]=function(_0x5a29df,_0x3bb1b3){return client[_0xf99f('0x4')](_0xf99f('0x5'),{'body':_0x3bb1b3,'options':{'where':{'uniqueid':_0x5a29df},'order':[['id',_0xf99f('0x6')]],'limit':0x1},'log':_0xf99f('0x5')});};
\ No newline at end of file
index 54992da..efa3bcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7682=['GetInterval','name','Interval','getIntervals','../client'];(function(_0x29de86,_0x1427d5){var _0x25d145=function(_0x1c7a8b){while(--_0x1c7a8b){_0x29de86['push'](_0x29de86['shift']());}};_0x25d145(++_0x1427d5);}(_0x7682,0xb8));var _0x2768=function(_0x5c8a86,_0x5dc2f0){_0x5c8a86=_0x5c8a86-0x0;var _0x4aa0e8=_0x7682[_0x5c8a86];return _0x4aa0e8;};'use strict';var client=require(_0x2768('0x0'));exports['getIntervals']=function(){return function(){return client['Request'](_0x2768('0x1'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x2768('0x2')],'include':[{'model':_0x2768('0x3'),'as':'Intervals','attributes':['id','name','interval']}]},'log':_0x2768('0x4')});};};
\ No newline at end of file
+var _0x62db=['GetInterval','Interval','Intervals','name','interval','getIntervals','Request'];(function(_0x4e4714,_0x338c46){var _0x22f92e=function(_0x33cdcf){while(--_0x33cdcf){_0x4e4714['push'](_0x4e4714['shift']());}};_0x22f92e(++_0x338c46);}(_0x62db,0xa6));var _0xb62d=function(_0x5e1f25,_0x34f649){_0x5e1f25=_0x5e1f25-0x0;var _0x193b14=_0x62db[_0x5e1f25];return _0x193b14;};'use strict';var client=require('../client');exports[_0xb62d('0x0')]=function(){return function(){return client[_0xb62d('0x1')](_0xb62d('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':_0xb62d('0x3'),'as':_0xb62d('0x4'),'attributes':['id',_0xb62d('0x5'),_0xb62d('0x6')]}]},'log':'getIntervals'});};};
\ No newline at end of file
index c06aca3..597bfbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c9a=['updateMailInteraction','AddTagsToMailInteraction','../client','Request','UpdateMailInteraction'];(function(_0xc5c9ac,_0x57c492){var _0x3f4606=function(_0x2aa448){while(--_0x2aa448){_0xc5c9ac['push'](_0xc5c9ac['shift']());}};_0x3f4606(++_0x57c492);}(_0x1c9a,0x98));var _0xa1c9=function(_0x37f3e1,_0x5c48e9){_0x37f3e1=_0x37f3e1-0x0;var _0x5d4d40=_0x1c9a[_0x37f3e1];return _0x5d4d40;};'use strict';var client=require(_0xa1c9('0x0'));exports['update']=function(_0x470dcd,_0x5c45c5){return client[_0xa1c9('0x1')](_0xa1c9('0x2'),{'body':_0x5c45c5,'options':{'where':{'id':_0x470dcd}},'log':_0xa1c9('0x3')});};exports['addTags']=function(_0x21c0fc,_0x45d1f7){return client[_0xa1c9('0x1')](_0xa1c9('0x4'),{'body':_0x45d1f7,'options':{'where':{'id':_0x21c0fc}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x4325=['update','Request','UpdateMailInteraction','addTagsToChatInteraction','../client'];(function(_0x5afbd5,_0x48a693){var _0x298511=function(_0x2f4262){while(--_0x2f4262){_0x5afbd5['push'](_0x5afbd5['shift']());}};_0x298511(++_0x48a693);}(_0x4325,0x1da));var _0x5432=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x4325[_0x3ab51d];return _0x29a04e;};'use strict';var client=require(_0x5432('0x0'));exports[_0x5432('0x1')]=function(_0x5aa4b8,_0x3f491f){return client[_0x5432('0x2')](_0x5432('0x3'),{'body':_0x3f491f,'options':{'where':{'id':_0x5aa4b8}},'log':'updateMailInteraction'});};exports['addTags']=function(_0x20f704,_0x36ce53){return client[_0x5432('0x2')]('AddTagsToMailInteraction',{'body':_0x36ce53,'options':{'where':{'id':_0x20f704}},'log':_0x5432('0x4')});};
\ No newline at end of file
index d9538bd..b98c477 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x607c=['createMailMessage','../client','create','Request','CreateMailMessage'];(function(_0x2f6452,_0x2b6930){var _0x188753=function(_0x332323){while(--_0x332323){_0x2f6452['push'](_0x2f6452['shift']());}};_0x188753(++_0x2b6930);}(_0x607c,0x13c));var _0xc607=function(_0x5a5f95,_0x53284b){_0x5a5f95=_0x5a5f95-0x0;var _0x316159=_0x607c[_0x5a5f95];return _0x316159;};'use strict';var client=require(_0xc607('0x0'));exports[_0xc607('0x1')]=function(_0x4e1d3a){return client[_0xc607('0x2')](_0xc607('0x3'),{'body':_0x4e1d3a,'log':_0xc607('0x4')});};
\ No newline at end of file
+var _0x9878=['create','Request','CreateMailMessage','../client'];(function(_0x38051b,_0x46cf1e){var _0x349422=function(_0x49b26e){while(--_0x49b26e){_0x38051b['push'](_0x38051b['shift']());}};_0x349422(++_0x46cf1e);}(_0x9878,0x6b));var _0x8987=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9878[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x8987('0x0'));exports[_0x8987('0x1')]=function(_0x208d20){return client[_0x8987('0x2')](_0x8987('0x3'),{'body':_0x208d20,'log':'createMailMessage'});};
\ No newline at end of file
index 14030e5..efdcab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdfb=['strategy','Agents','online','../client','getMailQueues','Request','name','timeout'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xcdfb,0xa3));var _0xbcdf=function(_0xc92331,_0xd332e4){_0xc92331=_0xc92331-0x0;var _0x41794d=_0xcdfb[_0xc92331];return _0x41794d;};'use strict';var client=require(_0xbcdf('0x0'));exports[_0xbcdf('0x1')]=function(){return function(){return client[_0xbcdf('0x2')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0xbcdf('0x3'),_0xbcdf('0x4'),_0xbcdf('0x5')],'include':[{'model':'User','as':_0xbcdf('0x6'),'attributes':['id',_0xbcdf('0x3'),_0xbcdf('0x7'),'mailPause']}]},'log':'getMailQueues'});};};
\ No newline at end of file
+var _0xcd6f=['Request','GetMailQueue','timeout','User','Agents','name','online','getMailQueues','../client'];(function(_0x4b373e,_0x58438d){var _0x531441=function(_0x546e5a){while(--_0x546e5a){_0x4b373e['push'](_0x4b373e['shift']());}};_0x531441(++_0x58438d);}(_0xcd6f,0x7d));var _0xfcd6=function(_0x57cd5f,_0x30ac5d){_0x57cd5f=_0x57cd5f-0x0;var _0x29fc64=_0xcd6f[_0x57cd5f];return _0x29fc64;};'use strict';var client=require(_0xfcd6('0x0'));exports['getMailQueues']=function(){return function(){return client[_0xfcd6('0x1')](_0xfcd6('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xfcd6('0x3'),'strategy'],'include':[{'model':_0xfcd6('0x4'),'as':_0xfcd6('0x5'),'attributes':['id',_0xfcd6('0x6'),_0xfcd6('0x7'),'mailPause']}]},'log':_0xfcd6('0x8')});};};
\ No newline at end of file
index 487b212..d9289df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78f3=['UpdateMailQueueReport','DESC','../client','Request','CreateMailQueueReport'];(function(_0x4629ed,_0x59ef85){var _0x52ca04=function(_0x59dc63){while(--_0x59dc63){_0x4629ed['push'](_0x4629ed['shift']());}};_0x52ca04(++_0x59ef85);}(_0x78f3,0xfc));var _0x378f=function(_0x2e64bc,_0x572a25){_0x2e64bc=_0x2e64bc-0x0;var _0x1fc752=_0x78f3[_0x2e64bc];return _0x1fc752;};'use strict';var client=require(_0x378f('0x0'));exports['create']=function(_0x1ba9d0){return client[_0x378f('0x1')]('CreateMailQueueReport',{'body':_0x1ba9d0,'log':_0x378f('0x2')});};exports['update']=function(_0x4d3016,_0x332090){return client[_0x378f('0x1')](_0x378f('0x3'),{'body':_0x332090,'options':{'where':{'uniqueid':_0x4d3016},'order':[['id',_0x378f('0x4')]],'limit':0x1},'log':_0x378f('0x3')});};
\ No newline at end of file
+var _0x2edc=['DESC','../client','create','Request','CreateMailQueueReport','update','UpdateMailQueueReport'];(function(_0x5918f5,_0x5826aa){var _0x23896b=function(_0x259f12){while(--_0x259f12){_0x5918f5['push'](_0x5918f5['shift']());}};_0x23896b(++_0x5826aa);}(_0x2edc,0x14a));var _0xc2ed=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2edc[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xc2ed('0x0'));exports[_0xc2ed('0x1')]=function(_0xee421c){return client[_0xc2ed('0x2')](_0xc2ed('0x3'),{'body':_0xee421c,'log':_0xc2ed('0x3')});};exports[_0xc2ed('0x4')]=function(_0x3e9ecf,_0x1e3082){return client[_0xc2ed('0x2')](_0xc2ed('0x5'),{'body':_0x1e3082,'options':{'where':{'uniqueid':_0x3e9ecf},'order':[['id',_0xc2ed('0x6')]],'limit':0x1},'log':_0xc2ed('0x5')});};
\ No newline at end of file
index e769ea1..c5ea613 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ea6=['Request','addTagsToChatInteraction','../client','update','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags'];(function(_0x37c07d,_0xdbdb5f){var _0x10dadc=function(_0x2bafb7){while(--_0x2bafb7){_0x37c07d['push'](_0x37c07d['shift']());}};_0x10dadc(++_0xdbdb5f);}(_0x5ea6,0x160));var _0x65ea=function(_0x1f8921,_0x38bd21){_0x1f8921=_0x1f8921-0x0;var _0x2c2f34=_0x5ea6[_0x1f8921];return _0x2c2f34;};'use strict';var client=require(_0x65ea('0x0'));exports[_0x65ea('0x1')]=function(_0x60b070,_0x36e8e8){return client['Request'](_0x65ea('0x2'),{'body':_0x36e8e8,'options':{'where':{'id':_0x60b070}},'log':_0x65ea('0x3')});};exports[_0x65ea('0x4')]=function(_0x4323e7,_0x21adcf){return client[_0x65ea('0x5')]('AddTagsToOpenchannelInteraction',{'body':_0x21adcf,'options':{'where':{'id':_0x4323e7}},'log':_0x65ea('0x6')});};
\ No newline at end of file
+var _0x0e5e=['UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','../client','update','Request'];(function(_0x73b1cd,_0x176535){var _0x243426=function(_0x1ee7c0){while(--_0x1ee7c0){_0x73b1cd['push'](_0x73b1cd['shift']());}};_0x243426(++_0x176535);}(_0x0e5e,0x1e7));var _0xe0e5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0e5e[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xe0e5('0x0'));exports[_0xe0e5('0x1')]=function(_0x1b8ffd,_0xe8d24d){return client[_0xe0e5('0x2')](_0xe0e5('0x3'),{'body':_0xe8d24d,'options':{'where':{'id':_0x1b8ffd}},'log':_0xe0e5('0x4')});};exports[_0xe0e5('0x5')]=function(_0x1979dd,_0x33df80){return client[_0xe0e5('0x2')](_0xe0e5('0x6'),{'body':_0x33df80,'options':{'where':{'id':_0x1979dd}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 8a6b6dd..4d60358 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f6c=['Request','CreateOpenchannelMessage','createOpenchannelMessage','../client','create'];(function(_0x1acc2d,_0x597696){var _0xabfa6d=function(_0x41e83c){while(--_0x41e83c){_0x1acc2d['push'](_0x1acc2d['shift']());}};_0xabfa6d(++_0x597696);}(_0x4f6c,0x1ed));var _0xc4f6=function(_0x420bb8,_0x22f47a){_0x420bb8=_0x420bb8-0x0;var _0x2902ca=_0x4f6c[_0x420bb8];return _0x2902ca;};'use strict';var client=require(_0xc4f6('0x0'));exports[_0xc4f6('0x1')]=function(_0x3e9533){return client[_0xc4f6('0x2')](_0xc4f6('0x3'),{'body':_0x3e9533,'log':_0xc4f6('0x4')});};
\ No newline at end of file
+var _0xf4f3=['Request','createOpenchannelMessage','../client','create'];(function(_0x21e7a3,_0xfa4277){var _0x473056=function(_0x4ad419){while(--_0x4ad419){_0x21e7a3['push'](_0x21e7a3['shift']());}};_0x473056(++_0xfa4277);}(_0xf4f3,0x72));var _0x3f4f=function(_0x45330f,_0x1c9bb9){_0x45330f=_0x45330f-0x0;var _0x184bb5=_0xf4f3[_0x45330f];return _0x184bb5;};'use strict';var client=require(_0x3f4f('0x0'));exports[_0x3f4f('0x1')]=function(_0x43c747){return client[_0x3f4f('0x2')]('CreateOpenchannelMessage',{'body':_0x43c747,'log':_0x3f4f('0x3')});};
\ No newline at end of file
index d79f0c5..ab51d48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f19=['openchannelPause','../client','getOpenchannelQueues','GetOpenchannelQueue','timeout','strategy','User','Agents','name','online'];(function(_0x3460e3,_0x23d874){var _0x22a450=function(_0x2c1038){while(--_0x2c1038){_0x3460e3['push'](_0x3460e3['shift']());}};_0x22a450(++_0x23d874);}(_0x3f19,0x155));var _0x93f1=function(_0x309385,_0x3ab38f){_0x309385=_0x309385-0x0;var _0x45b0f5=_0x3f19[_0x309385];return _0x45b0f5;};'use strict';var client=require(_0x93f1('0x0'));exports[_0x93f1('0x1')]=function(){return function(){return client['Request'](_0x93f1('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x93f1('0x3'),_0x93f1('0x4')],'include':[{'model':_0x93f1('0x5'),'as':_0x93f1('0x6'),'attributes':['id',_0x93f1('0x7'),_0x93f1('0x8'),_0x93f1('0x9')]}]},'log':_0x93f1('0x1')});};};
\ No newline at end of file
+var _0x2ad9=['Agents','online','openchannelPause','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout'];(function(_0x2e1401,_0x10a112){var _0x53d4c5=function(_0x4134fc){while(--_0x4134fc){_0x2e1401['push'](_0x2e1401['shift']());}};_0x53d4c5(++_0x10a112);}(_0x2ad9,0x74));var _0x92ad=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x2ad9[_0x2dafbe];return _0x58a45a;};'use strict';var client=require('../client');exports['getOpenchannelQueues']=function(){return function(){return client[_0x92ad('0x0')](_0x92ad('0x1'),{'options':{'raw':![],'attributes':['id',_0x92ad('0x2'),_0x92ad('0x3'),'strategy'],'include':[{'model':'User','as':_0x92ad('0x4'),'attributes':['id',_0x92ad('0x2'),_0x92ad('0x5'),_0x92ad('0x6')]}]},'log':_0x92ad('0x7')});};};
\ No newline at end of file
index 54cb52c..b348502 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x593e=['../client','create','Request','CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC'];(function(_0x75caa,_0x390e63){var _0x8c7804=function(_0x1e152b){while(--_0x1e152b){_0x75caa['push'](_0x75caa['shift']());}};_0x8c7804(++_0x390e63);}(_0x593e,0xcb));var _0xe593=function(_0x23e718,_0x269076){_0x23e718=_0x23e718-0x0;var _0x2032f5=_0x593e[_0x23e718];return _0x2032f5;};'use strict';var client=require(_0xe593('0x0'));exports[_0xe593('0x1')]=function(_0x12f6de){return client[_0xe593('0x2')](_0xe593('0x3'),{'body':_0x12f6de,'log':_0xe593('0x3')});};exports[_0xe593('0x4')]=function(_0x2fa3a7,_0x550574){return client[_0xe593('0x2')](_0xe593('0x5'),{'body':_0x550574,'options':{'where':{'uniqueid':_0x2fa3a7},'order':[['id',_0xe593('0x6')]],'limit':0x1},'log':_0xe593('0x5')});};
\ No newline at end of file
+var _0x56e4=['UpdateOpenchannelQueueReport','DESC','create','CreateOpenchannelQueueReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x56e4,0x92));var _0x456e=function(_0x583efb,_0x24a3a7){_0x583efb=_0x583efb-0x0;var _0x5c3204=_0x56e4[_0x583efb];return _0x5c3204;};'use strict';var client=require('../client');exports[_0x456e('0x0')]=function(_0x26c587){return client['Request']('CreateOpenchannelQueueReport',{'body':_0x26c587,'log':_0x456e('0x1')});};exports['update']=function(_0xce755e,_0x19cbfc){return client['Request'](_0x456e('0x2'),{'body':_0x19cbfc,'options':{'where':{'uniqueid':_0xce755e},'order':[['id',_0x456e('0x3')]],'limit':0x1},'log':_0x456e('0x2')});};
\ No newline at end of file
index a40ca35..086e349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b1=['addTags','../client','update','Request','updateSmsInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd8b1,0x105));var _0x1d8b=function(_0x52d859,_0x586b81){_0x52d859=_0x52d859-0x0;var _0x7cf2db=_0xd8b1[_0x52d859];return _0x7cf2db;};'use strict';var client=require(_0x1d8b('0x0'));exports[_0x1d8b('0x1')]=function(_0x2e0722,_0x5c8d8a){return client[_0x1d8b('0x2')]('UpdateSmsInteraction',{'body':_0x5c8d8a,'options':{'where':{'id':_0x2e0722}},'log':_0x1d8b('0x3')});};exports[_0x1d8b('0x4')]=function(_0x531170,_0xad218){return client['Request']('AddTagsToSmsInteraction',{'body':_0xad218,'options':{'where':{'id':_0x531170}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
+var _0x0689=['addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','update','Request','UpdateSmsInteraction','updateSmsInteraction'];(function(_0x314408,_0x4b1016){var _0x30dda0=function(_0x464e1c){while(--_0x464e1c){_0x314408['push'](_0x314408['shift']());}};_0x30dda0(++_0x4b1016);}(_0x0689,0x161));var _0x9068=function(_0x405ac9,_0x2c795c){_0x405ac9=_0x405ac9-0x0;var _0x2d200f=_0x0689[_0x405ac9];return _0x2d200f;};'use strict';var client=require('../client');exports[_0x9068('0x0')]=function(_0x4e98d1,_0x1834da){return client[_0x9068('0x1')](_0x9068('0x2'),{'body':_0x1834da,'options':{'where':{'id':_0x4e98d1}},'log':_0x9068('0x3')});};exports[_0x9068('0x4')]=function(_0x1c35ba,_0x3b12f4){return client[_0x9068('0x1')](_0x9068('0x5'),{'body':_0x3b12f4,'options':{'where':{'id':_0x1c35ba}},'log':_0x9068('0x6')});};
\ No newline at end of file
index b179f6d..eee2525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe41=['createSmsMessage','../client','create','Request','CreateSmsMessage'];(function(_0xe8c02e,_0x5db88f){var _0x1acd8e=function(_0x43dba1){while(--_0x43dba1){_0xe8c02e['push'](_0xe8c02e['shift']());}};_0x1acd8e(++_0x5db88f);}(_0xbe41,0x6a));var _0x1be4=function(_0x29c02f,_0x3caa81){_0x29c02f=_0x29c02f-0x0;var _0x40d362=_0xbe41[_0x29c02f];return _0x40d362;};'use strict';var client=require(_0x1be4('0x0'));exports[_0x1be4('0x1')]=function(_0x53d0ab){return client[_0x1be4('0x2')](_0x1be4('0x3'),{'body':_0x53d0ab,'log':_0x1be4('0x4')});};
\ No newline at end of file
+var _0xa789=['create','Request','CreateSmsMessage'];(function(_0xcf16a9,_0x8b4e22){var _0x4d4609=function(_0x14cf33){while(--_0x14cf33){_0xcf16a9['push'](_0xcf16a9['shift']());}};_0x4d4609(++_0x8b4e22);}(_0xa789,0x1a4));var _0x9a78=function(_0x25f456,_0x2d0c63){_0x25f456=_0x25f456-0x0;var _0x259ada=_0xa789[_0x25f456];return _0x259ada;};'use strict';var client=require('../client');exports[_0x9a78('0x0')]=function(_0x3aea86){return client[_0x9a78('0x1')](_0x9a78('0x2'),{'body':_0x3aea86,'log':'createSmsMessage'});};
\ No newline at end of file
index 0468158..1e1b83d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['timeout','strategy','User','Agents','name','../client','getSmsQueues'];(function(_0x3b3dcc,_0x31d242){var _0x12a8a6=function(_0x176089){while(--_0x176089){_0x3b3dcc['push'](_0x3b3dcc['shift']());}};_0x12a8a6(++_0x31d242);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var client=require(_0x0d8b('0x0'));exports[_0x0d8b('0x1')]=function(){return function(){return client['Request']('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0d8b('0x2'),_0x0d8b('0x3')],'include':[{'model':_0x0d8b('0x4'),'as':_0x0d8b('0x5'),'attributes':['id',_0x0d8b('0x6'),'online','smsPause']}]},'log':_0x0d8b('0x1')});};};
\ No newline at end of file
+var _0x70e0=['User','Agents','online','../client','getSmsQueues','Request','timeout','strategy'];(function(_0x88875c,_0x3bf314){var _0x35c960=function(_0x5f320a){while(--_0x5f320a){_0x88875c['push'](_0x88875c['shift']());}};_0x35c960(++_0x3bf314);}(_0x70e0,0x17b));var _0x070e=function(_0x3b2265,_0x59184d){_0x3b2265=_0x3b2265-0x0;var _0x5e9022=_0x70e0[_0x3b2265];return _0x5e9022;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x070e('0x3'),_0x070e('0x4')],'include':[{'model':_0x070e('0x5'),'as':_0x070e('0x6'),'attributes':['id','name',_0x070e('0x7'),'smsPause']}]},'log':_0x070e('0x1')});};};
\ No newline at end of file
index 2460997..3034e86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x50bf5a,_0x807bba){var _0x4ddc1d=function(_0x349a61){while(--_0x349a61){_0x50bf5a['push'](_0x50bf5a['shift']());}};_0x4ddc1d(++_0x807bba);}(_0xedd9,0xfc));var _0x9edd=function(_0x3a0ebd,_0x47f368){_0x3a0ebd=_0x3a0ebd-0x0;var _0x51a660=_0xedd9[_0x3a0ebd];return _0x51a660;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(_0x2d7989){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'body':_0x2d7989,'log':_0x9edd('0x2')});};exports[_0x9edd('0x3')]=function(_0x3e6d3a,_0x36b53f){return client['Request'](_0x9edd('0x4'),{'body':_0x36b53f,'options':{'where':{'uniqueid':_0x3e6d3a},'order':[['id',_0x9edd('0x5')]],'limit':0x1},'log':_0x9edd('0x4')});};
\ No newline at end of file
+var _0x9957=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x5e0615,_0xb4d057){var _0x1c016e=function(_0x5b7b47){while(--_0x5b7b47){_0x5e0615['push'](_0x5e0615['shift']());}};_0x1c016e(++_0xb4d057);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'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
index de031e0..c8aea93 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(_0x256465,_0x4cca46){var _0x3e09c4=function(_0x4c7e1b){while(--_0x4c7e1b){_0x256465['push'](_0x256465['shift']());}};_0x3e09c4(++_0x4cca46);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'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(_0x57d8b1,_0x102b40){var _0x489ef1=function(_0x1a48a5){while(--_0x1a48a5){_0x57d8b1['push'](_0x57d8b1['shift']());}};_0x489ef1(++_0x102b40);}(_0xa9e0,0x123));var _0x0a9e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xa9e0[_0x501510];return _0x1e6ee5;};'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 b392479..43ab9c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0958=['update','Request','UpdateWhatsappInteraction','addTagsToWhatsappInteraction','../client'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0958,0x7c));var _0x8095=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0958[_0x122ef9];return _0x42fba0;};'use strict';var client=require(_0x8095('0x0'));exports[_0x8095('0x1')]=function(_0xd53ca7,_0x5e3ac5){return client[_0x8095('0x2')](_0x8095('0x3'),{'body':_0x5e3ac5,'options':{'where':{'id':_0xd53ca7}},'log':'updateWhatsappInteraction'});};exports['addTags']=function(_0x4625ee,_0x3da09b){return client['Request']('AddTagsToWhatsappInteraction',{'body':_0x3da09b,'options':{'where':{'id':_0x4625ee}},'log':_0x8095('0x4')});};
\ No newline at end of file
+var _0x3831=['../client','Request','UpdateWhatsappInteraction','updateWhatsappInteraction'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x3831,0x14c));var _0x1383=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x3831[_0x413feb];return _0x40ee88;};'use strict';var client=require(_0x1383('0x0'));exports['update']=function(_0x1c3e35,_0x42a46a){return client[_0x1383('0x1')](_0x1383('0x2'),{'body':_0x42a46a,'options':{'where':{'id':_0x1c3e35}},'log':_0x1383('0x3')});};exports['addTags']=function(_0x2fdf72,_0x573874){return client[_0x1383('0x1')]('AddTagsToWhatsappInteraction',{'body':_0x573874,'options':{'where':{'id':_0x2fdf72}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index e4d9f53..a37e844 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07c2=['../client','Request','CreateWhatsappMessage'];(function(_0x5bda3b,_0x41160f){var _0x431bb9=function(_0x160122){while(--_0x160122){_0x5bda3b['push'](_0x5bda3b['shift']());}};_0x431bb9(++_0x41160f);}(_0x07c2,0x75));var _0x207c=function(_0x4f13f8,_0x5e13c5){_0x4f13f8=_0x4f13f8-0x0;var _0x1e6b83=_0x07c2[_0x4f13f8];return _0x1e6b83;};'use strict';var client=require(_0x207c('0x0'));exports['create']=function(_0x3ec476){return client[_0x207c('0x1')](_0x207c('0x2'),{'body':_0x3ec476,'log':'createWhatsappMessage'});};
\ No newline at end of file
+var _0x3773=['createWhatsappMessage','../client','create','Request','CreateWhatsappMessage'];(function(_0x429e0,_0x2a9e95){var _0x28b518=function(_0x18dd5f){while(--_0x18dd5f){_0x429e0['push'](_0x429e0['shift']());}};_0x28b518(++_0x2a9e95);}(_0x3773,0x1d2));var _0x3377=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x3773[_0x1928c9];return _0x51b5fb;};'use strict';var client=require(_0x3377('0x0'));exports[_0x3377('0x1')]=function(_0x49ce78){return client[_0x3377('0x2')](_0x3377('0x3'),{'body':_0x49ce78,'log':_0x3377('0x4')});};
\ No newline at end of file
index f4d2c7b..0589d55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4584=['timeout','User','Agents','online','whatsappPause','Request','GetWhatsappQueue','name'];(function(_0xe2ebaa,_0x138483){var _0x563838=function(_0x542a4c){while(--_0x542a4c){_0xe2ebaa['push'](_0xe2ebaa['shift']());}};_0x563838(++_0x138483);}(_0x4584,0x75));var _0x4458=function(_0x3a8114,_0x549ce8){_0x3a8114=_0x3a8114-0x0;var _0x4ebb2f=_0x4584[_0x3a8114];return _0x4ebb2f;};'use strict';var client=require('../client');exports['getWhatsappQueues']=function(){return function(){return client[_0x4458('0x0')](_0x4458('0x1'),{'options':{'raw':![],'attributes':['id',_0x4458('0x2'),_0x4458('0x3'),'strategy'],'include':[{'model':_0x4458('0x4'),'as':_0x4458('0x5'),'attributes':['id','name',_0x4458('0x6'),_0x4458('0x7')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
+var _0xe878=['whatsappPause','../client','getWhatsappQueues','GetWhatsappQueue','name','timeout','Agents','online'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xe878,0x1a1));var _0x8e87=function(_0x511907,_0x4ae413){_0x511907=_0x511907-0x0;var _0x5e58e6=_0xe878[_0x511907];return _0x5e58e6;};'use strict';var client=require(_0x8e87('0x0'));exports[_0x8e87('0x1')]=function(){return function(){return client['Request'](_0x8e87('0x2'),{'options':{'raw':![],'attributes':['id',_0x8e87('0x3'),_0x8e87('0x4'),'strategy'],'include':[{'model':'User','as':_0x8e87('0x5'),'attributes':['id','name',_0x8e87('0x6'),_0x8e87('0x7')]}]},'log':_0x8e87('0x1')});};};
\ No newline at end of file
index e68fac5..0c20086 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5dc=['update','UpdateWhatsappQueueReport','DESC','../client','create','Request','CreateWhatsappQueueReport'];(function(_0x197ed9,_0x502493){var _0x573ff1=function(_0x581ef1){while(--_0x581ef1){_0x197ed9['push'](_0x197ed9['shift']());}};_0x573ff1(++_0x502493);}(_0xf5dc,0xdc));var _0xcf5d=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xf5dc[_0x42cae2];return _0x5f256f;};'use strict';var client=require(_0xcf5d('0x0'));exports[_0xcf5d('0x1')]=function(_0x1dc071){return client[_0xcf5d('0x2')]('CreateWhatsappQueueReport',{'body':_0x1dc071,'log':_0xcf5d('0x3')});};exports[_0xcf5d('0x4')]=function(_0x212246,_0xaa17e3){return client['Request'](_0xcf5d('0x5'),{'body':_0xaa17e3,'options':{'where':{'uniqueid':_0x212246},'order':[['id',_0xcf5d('0x6')]],'limit':0x1},'log':_0xcf5d('0x5')});};
\ No newline at end of file
+var _0x15eb=['UpdateWhatsappQueueReport','DESC','../client','CreateWhatsappQueueReport','Request'];(function(_0x4c4a8b,_0x402020){var _0x20fa14=function(_0xbe8c84){while(--_0xbe8c84){_0x4c4a8b['push'](_0x4c4a8b['shift']());}};_0x20fa14(++_0x402020);}(_0x15eb,0xb1));var _0xb15e=function(_0x1dfef9,_0x2f9407){_0x1dfef9=_0x1dfef9-0x0;var _0x532254=_0x15eb[_0x1dfef9];return _0x532254;};'use strict';var client=require(_0xb15e('0x0'));exports['create']=function(_0x27cadc){return client['Request'](_0xb15e('0x1'),{'body':_0x27cadc,'log':_0xb15e('0x1')});};exports['update']=function(_0x66e297,_0x11ff3f){return client[_0xb15e('0x2')](_0xb15e('0x3'),{'body':_0x11ff3f,'options':{'where':{'uniqueid':_0x66e297},'order':[['id',_0xb15e('0x4')]],'limit':0x1},'log':_0xb15e('0x3')});};
\ No newline at end of file
index 0e824de..27598a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1bb=['[%s][AGENT]\x20ROUTING\x20END','next','stack','lodash','util','seq-queue','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','validate','length','error','[%s][AGENT]\x20%s','message','join','stop','find','agents','timeout','createQueue','atimeout','channel','START:%s','rules','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete'];(function(_0x1a794f,_0x41aebc){var _0x36e80b=function(_0x272180){while(--_0x272180){_0x1a794f['push'](_0x1a794f['shift']());}};_0x36e80b(++_0x41aebc);}(_0xa1bb,0x69));var _0xba1b=function(_0x316ec8,_0x2102df){_0x316ec8=_0x316ec8-0x0;var _0x40319b=_0xa1bb[_0x316ec8];return _0x40319b;};'use strict';var schema=require('validate');var _=require(_0xba1b('0x0'));var util=require(_0xba1b('0x1'));var seqqueue=require(_0xba1b('0x2'));var logger=require('../../../../config/logger')(_0xba1b('0x3'));var strategy=require(_0xba1b('0x4'));var queue=schema({'name':{'type':_0xba1b('0x5'),'required':!![],'message':_0xba1b('0x6')},'timeout':{'type':_0xba1b('0x7'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x5cd548,_0x1d0ff0,_0x113d19){return logger[_0xba1b('0x8')](util[_0xba1b('0x9')](_0xba1b('0xa'),_0x5cd548,_0x1d0ff0[_0xba1b('0xb')],_0x113d19));}function handleFindAgent(_0x567457){return function(_0x417fcc){return _0x417fcc[_0xba1b('0xb')][_0xba1b('0xc')]()===_0x567457['toLowerCase']();};}exports['consequence']=function(_0x569c95,_0x3eb998,_0x1445f4,_0x1a3a68){return function(_0x1f53dc){try{var _0x1b6446={'name':_0x3eb998[0x0],'timeout':_0x3eb998[0x1]};var _0x4912d6=queue[_0xba1b('0xd')](_0x1b6446,{'typecast':!![]});if(_0x4912d6[_0xba1b('0xe')]){logger[_0xba1b('0xf')](_0xba1b('0x10'),_0x569c95,_['map'](_0x4912d6,_0xba1b('0x11'))[_0xba1b('0x12')](',\x20'));_0x1f53dc[_0xba1b('0x13')]();}else{var _0xb1aad7=_[_0xba1b('0x14')](_0x1445f4[_0xba1b('0x15')],handleFindAgent(_0x1b6446[_0xba1b('0xb')]));if(_0xb1aad7){var _0x2e6135=(_0x1b6446[_0xba1b('0x16')]||0xa)*0x3e8;var _0x559b25,_0x4e8258;var _0x524518=seqqueue[_0xba1b('0x17')](_0x2e6135);_0x524518['id']=_0x569c95;_0x524518[_0xba1b('0x18')]=_0x2e6135;_0x524518['channel']=_0x1a3a68[_0xba1b('0x19')];writeLog(_0x569c95,_0xb1aad7,util[_0xba1b('0x9')](_0xba1b('0x1a'),_0x2e6135));_0x1445f4[_0xba1b('0x1b')][_0x569c95]['on']('end',function(){logger['info'](_0xba1b('0x1c'),_0x569c95);clearTimeout(_0x4e8258);_0x4e8258=undefined;_0x524518[_0xba1b('0x1d')]();if(_0x1445f4[_0xba1b('0x1b')][_0x569c95]){delete _0x1445f4[_0xba1b('0x1b')][_0x569c95];}_0x1f53dc[_0xba1b('0x13')]();});_0x1445f4[_0xba1b('0x1b')][_0x569c95]['on'](_0xba1b('0x1e'),function(){if(_0x1445f4[_0xba1b('0x1b')][_0x569c95]){delete _0x1445f4[_0xba1b('0x1b')][_0x569c95];}});_0x4e8258=setTimeout(function(){logger[_0xba1b('0x8')](_0xba1b('0x1f'),_0x569c95);clearTimeout(_0x4e8258);_0x524518['close']();_0x1f53dc[_0xba1b('0x20')]();},_0x2e6135);strategy['agent'](_0x524518,_0xb1aad7,_0x1445f4,_0x1a3a68);}else{logger[_0xba1b('0xf')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x569c95,_0x1b6446[_0xba1b('0xb')]);_0x1f53dc['stop']();}}}catch(_0x27a6a0){console['log'](_0x27a6a0);logger[_0xba1b('0xf')]('[%s][QUEUE]\x20%s',_0x569c95,_0x27a6a0[_0xba1b('0x21')]);_0x1f53dc[_0xba1b('0x13')]();}};};
\ No newline at end of file
+var _0xd25f=['join','stop','find','agents','timeout','createQueue','atimeout','channel','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','rules','complete','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','validate','lodash','util','routing','./strategy','string','number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','message'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd25f,0xdc));var _0xfd25=function(_0x4333c0,_0x1b8b7d){_0x4333c0=_0x4333c0-0x0;var _0x1ea60b=_0xd25f[_0x4333c0];return _0x1ea60b;};'use strict';var schema=require(_0xfd25('0x0'));var _=require(_0xfd25('0x1'));var util=require(_0xfd25('0x2'));var seqqueue=require('seq-queue');var logger=require('../../../../config/logger')(_0xfd25('0x3'));var strategy=require(_0xfd25('0x4'));var queue=schema({'name':{'type':_0xfd25('0x5'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xfd25('0x6'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x11ad0b,_0x31bc4b,_0x4f48ca){return logger[_0xfd25('0x7')](util[_0xfd25('0x8')](_0xfd25('0x9'),_0x11ad0b,_0x31bc4b[_0xfd25('0xa')],_0x4f48ca));}function handleFindAgent(_0x3cbf18){return function(_0x1c6836){return _0x1c6836[_0xfd25('0xa')][_0xfd25('0xb')]()===_0x3cbf18[_0xfd25('0xb')]();};}exports[_0xfd25('0xc')]=function(_0x2614fc,_0x565286,_0x3cbd8d,_0x1ea17d){return function(_0x2a3a83){try{var _0x50ef52={'name':_0x565286[0x0],'timeout':_0x565286[0x1]};var _0x12d9a2=queue[_0xfd25('0x0')](_0x50ef52,{'typecast':!![]});if(_0x12d9a2[_0xfd25('0xd')]){logger[_0xfd25('0xe')](_0xfd25('0xf'),_0x2614fc,_[_0xfd25('0x10')](_0x12d9a2,_0xfd25('0x11'))[_0xfd25('0x12')](',\x20'));_0x2a3a83[_0xfd25('0x13')]();}else{var _0x28efd4=_[_0xfd25('0x14')](_0x3cbd8d[_0xfd25('0x15')],handleFindAgent(_0x50ef52[_0xfd25('0xa')]));if(_0x28efd4){var _0x2dfa32=(_0x50ef52[_0xfd25('0x16')]||0xa)*0x3e8;var _0x2ebb73,_0x535933;var _0x1cfa74=seqqueue[_0xfd25('0x17')](_0x2dfa32);_0x1cfa74['id']=_0x2614fc;_0x1cfa74[_0xfd25('0x18')]=_0x2dfa32;_0x1cfa74[_0xfd25('0x19')]=_0x1ea17d[_0xfd25('0x19')];writeLog(_0x2614fc,_0x28efd4,util[_0xfd25('0x8')]('START:%s',_0x2dfa32));_0x3cbd8d['rules'][_0x2614fc]['on'](_0xfd25('0x1a'),function(){logger['info'](_0xfd25('0x1b'),_0x2614fc);clearTimeout(_0x535933);_0x535933=undefined;_0x1cfa74[_0xfd25('0x1c')]();if(_0x3cbd8d[_0xfd25('0x1d')][_0x2614fc]){delete _0x3cbd8d[_0xfd25('0x1d')][_0x2614fc];}_0x2a3a83['stop']();});_0x3cbd8d[_0xfd25('0x1d')][_0x2614fc]['on'](_0xfd25('0x1e'),function(){if(_0x3cbd8d[_0xfd25('0x1d')][_0x2614fc]){delete _0x3cbd8d[_0xfd25('0x1d')][_0x2614fc];}});_0x535933=setTimeout(function(){logger[_0xfd25('0x7')]('[%s][AGENT]\x20ROUTING\x20END',_0x2614fc);clearTimeout(_0x535933);_0x1cfa74[_0xfd25('0x1c')]();_0x2a3a83['next']();},_0x2dfa32);strategy[_0xfd25('0x1f')](_0x1cfa74,_0x28efd4,_0x3cbd8d,_0x1ea17d);}else{logger[_0xfd25('0xe')](_0xfd25('0x20'),_0x2614fc,_0x50ef52[_0xfd25('0xa')]);_0x2a3a83[_0xfd25('0x13')]();}}}catch(_0x45b57a){console[_0xfd25('0x21')](_0x45b57a);logger[_0xfd25('0xe')]('[%s][QUEUE]\x20%s',_0x2614fc,_0x45b57a['stack']);_0x2a3a83[_0xfd25('0x13')]();}};};
\ No newline at end of file
index 1faba56..8258464 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb17a=['getMustacheRender','Message','create','body','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','message','toString','amazonlex','providerName','providerResponse','then','dialogState','Failed','lodash','moment','aws-sdk','./utils','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','isNil','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','sms','whatsapp','phone','chat','upperFirst','AccountId','account','created','isEmpty'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xb17a,0x104));var _0xab17=function(_0x499be4,_0x14a46c){_0x499be4=_0x499be4-0x0;var _0x840cb5=_0xb17a[_0x499be4];return _0x840cb5;};'use strict';var _=require(_0xab17('0x0'));var moment=require(_0xab17('0x1'));var AWS=require(_0xab17('0x2'));var utils=require(_0xab17('0x3'));var logger=require('../../../../config/logger')(_0xab17('0x4'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xab17('0x5')),'mailMessage':require(_0xab17('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xab17('0x7'))};exports['consequence']=function(_0x36c590,_0x3bb2ed){return function(_0x7e6203){try{if(!_[_0xab17('0x8')](this[_0xab17('0x9')][_0xab17('0xa')])){logger[_0xab17('0xb')](_0xab17('0xc'),_0x36c590,_0xab17('0xd'));return _0x7e6203[_0xab17('0xe')]();}var _0x38feeb={'ContactId':this[_0xab17('0xf')]['id'],'sentAt':moment()[_0xab17('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xab17('0x11')};if(this[_0xab17('0x12')]===_0xab17('0x13')||this[_0xab17('0x12')]===_0xab17('0x14')){_0x38feeb[_0xab17('0x15')]=this[_0xab17('0x9')][_0xab17('0x15')];}var _0x2ab816=this['channel'];if(_0x2ab816===_0xab17('0x16')){_0x38feeb['ChatWebsiteId']=this['account']['id'];}else{_0x38feeb[_[_0xab17('0x17')](_0x2ab816)+_0xab17('0x18')]=this[_0xab17('0x19')]['id'];}_0x38feeb[_[_0xab17('0x17')](_0x2ab816)+'InteractionId']=this['interaction']['id'];if(this['interaction'][_0xab17('0x1a')]){var _0x480ee5=_0x3bb2ed[0x4];if(!_[_0xab17('0x1b')](_0x480ee5)){_0x38feeb['body']=utils[_0xab17('0x1c')](_0x480ee5,this);return rpc[_0x2ab816+_0xab17('0x1d')][_0xab17('0x1e')](_0x38feeb)['then'](function(_0x1e9d6b){logger[_0xab17('0xb')]('[%s][AMAZONLEX]\x20%s',_0x36c590,_0x38feeb[_0xab17('0x1f')]);})[_0xab17('0x20')](function(_0x2399a3){logger[_0xab17('0x21')](_0xab17('0xc'),_0x36c590,JSON[_0xab17('0x22')](_0x2399a3));})[_0xab17('0x23')](function(){logger[_0xab17('0xb')](_0xab17('0x24'),_0x36c590);_0x7e6203[_0xab17('0x25')]();});}else{logger[_0xab17('0xb')](_0xab17('0x26'),_0x36c590);_0x7e6203[_0xab17('0x25')]();}}else{var _0x5564f6=this;var _0x365a8b=new AWS[(_0xab17('0x27'))]({'accessKeyId':_0x3bb2ed[0x0],'secretAccessKey':_0x3bb2ed[0x1],'region':_0x3bb2ed[0x2]});var _0x5e7134={'botAlias':'$LATEST','botName':_0x3bb2ed[0x3],'inputText':this[_0xab17('0x28')][_0xab17('0x1f')],'userId':this[_0xab17('0x12')]+':'+this[_0xab17('0x9')]['id'][_0xab17('0x29')]()};_0x365a8b['postText'](_0x5e7134,function(_0x3bff33,_0x3f0793){if(_0x3bff33){logger[_0xab17('0x21')]('[%s][AMAZONLEX]\x20%s',_0x36c590,_0x3bff33[_0xab17('0x28')]);_0x7e6203[_0xab17('0xe')]();}else if(_0x3f0793&&_0x3f0793['message']){_0x5564f6['body'][_0xab17('0x2a')]=_0x3f0793;_0x38feeb[_0xab17('0x1f')]=_0x3f0793[_0xab17('0x28')];_0x38feeb[_0xab17('0x2b')]=_0xab17('0x2a');_0x38feeb[_0xab17('0x2c')]=JSON[_0xab17('0x22')](_0x3f0793);return rpc[_0x2ab816+'Message'][_0xab17('0x1e')](_0x38feeb)[_0xab17('0x2d')](function(_0x4d4caa){logger[_0xab17('0xb')]('[%s][AMAZONLEX]\x20%s',_0x36c590,_0x38feeb[_0xab17('0x1f')]);if(_0x3f0793[_0xab17('0x2e')]==_0xab17('0x2f')){_0x7e6203[_0xab17('0xe')]();}else{_0x7e6203[_0xab17('0x25')]();}})[_0xab17('0x20')](function(_0x53f398){logger[_0xab17('0x21')](_0xab17('0xc'),_0x36c590,JSON[_0xab17('0x22')](_0x53f398));_0x7e6203[_0xab17('0xe')]();});}else{_0x7e6203[_0xab17('0xe')]();}});}}catch(_0x5e6955){logger[_0xab17('0x21')](_0xab17('0xc'),_0x36c590,JSON[_0xab17('0x22')](_0x5e6955));_0x7e6203[_0xab17('0x25')]();}};};
\ No newline at end of file
+var _0x2825=['chat','ChatWebsiteId','account','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','Message','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','message','next','providerName','create','dialogState','Failed','lodash','moment','aws-sdk','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','interaction','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','phone'];(function(_0x5f1013,_0x4f03d4){var _0x20a5bc=function(_0x5e6066){while(--_0x5e6066){_0x5f1013['push'](_0x5f1013['shift']());}};_0x20a5bc(++_0x4f03d4);}(_0x2825,0x73));var _0x5282=function(_0x275544,_0x1098f6){_0x275544=_0x275544-0x0;var _0x2dcee5=_0x2825[_0x275544];return _0x2dcee5;};'use strict';var _=require(_0x5282('0x0'));var moment=require(_0x5282('0x1'));var AWS=require(_0x5282('0x2'));var utils=require(_0x5282('0x3'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x5282('0x4')),'openchannelMessage':require(_0x5282('0x5')),'mailMessage':require(_0x5282('0x6')),'smsMessage':require(_0x5282('0x7')),'faxMessage':require(_0x5282('0x8')),'whatsappMessage':require(_0x5282('0x9'))};exports[_0x5282('0xa')]=function(_0x518370,_0x15d6dd){return function(_0xb17ceb){try{if(!_['isNil'](this[_0x5282('0xb')]['UserId'])){logger[_0x5282('0xc')](_0x5282('0xd'),_0x518370,_0x5282('0xe'));return _0xb17ceb['next']();}var _0x1cfe12={'ContactId':this[_0x5282('0xf')]['id'],'sentAt':moment()[_0x5282('0x10')](_0x5282('0x11')),'direction':_0x5282('0x12')};if(this['channel']===_0x5282('0x13')||this[_0x5282('0x14')]===_0x5282('0x15')){_0x1cfe12['phone']=this[_0x5282('0xb')][_0x5282('0x16')];}var _0x3cb87d=this[_0x5282('0x14')];if(_0x3cb87d===_0x5282('0x17')){_0x1cfe12[_0x5282('0x18')]=this[_0x5282('0x19')]['id'];}else{_0x1cfe12[_['upperFirst'](_0x3cb87d)+_0x5282('0x1a')]=this[_0x5282('0x19')]['id'];}_0x1cfe12[_['upperFirst'](_0x3cb87d)+_0x5282('0x1b')]=this[_0x5282('0xb')]['id'];if(this[_0x5282('0xb')][_0x5282('0x1c')]){var _0x29c65a=_0x15d6dd[0x4];if(!_[_0x5282('0x1d')](_0x29c65a)){_0x1cfe12[_0x5282('0x1e')]=utils[_0x5282('0x1f')](_0x29c65a,this);return rpc[_0x3cb87d+_0x5282('0x20')]['create'](_0x1cfe12)['then'](function(_0xf96a94){logger[_0x5282('0xc')]('[%s][AMAZONLEX]\x20%s',_0x518370,_0x1cfe12[_0x5282('0x1e')]);})[_0x5282('0x21')](function(_0x335fa6){logger[_0x5282('0x22')](_0x5282('0xd'),_0x518370,JSON[_0x5282('0x23')](_0x335fa6));})[_0x5282('0x24')](function(){logger[_0x5282('0xc')](_0x5282('0x25'),_0x518370);_0xb17ceb[_0x5282('0x26')]();});}else{logger[_0x5282('0xc')](_0x5282('0x27'),_0x518370);_0xb17ceb[_0x5282('0x26')]();}}else{var _0x3e63ad=this;var _0x5b1274=new AWS['LexRuntime']({'accessKeyId':_0x15d6dd[0x0],'secretAccessKey':_0x15d6dd[0x1],'region':_0x15d6dd[0x2]});var _0x3451d7={'botAlias':'$LATEST','botName':_0x15d6dd[0x3],'inputText':this[_0x5282('0x28')][_0x5282('0x1e')],'userId':this[_0x5282('0x14')]+':'+this[_0x5282('0xb')]['id']['toString']()};_0x5b1274['postText'](_0x3451d7,function(_0x3f1d18,_0x35f395){if(_0x3f1d18){logger[_0x5282('0x22')]('[%s][AMAZONLEX]\x20%s',_0x518370,_0x3f1d18[_0x5282('0x28')]);_0xb17ceb[_0x5282('0x29')]();}else if(_0x35f395&&_0x35f395[_0x5282('0x28')]){_0x3e63ad[_0x5282('0x1e')]['amazonlex']=_0x35f395;_0x1cfe12[_0x5282('0x1e')]=_0x35f395['message'];_0x1cfe12[_0x5282('0x2a')]='amazonlex';_0x1cfe12['providerResponse']=JSON[_0x5282('0x23')](_0x35f395);return rpc[_0x3cb87d+_0x5282('0x20')][_0x5282('0x2b')](_0x1cfe12)['then'](function(_0x155a98){logger['info'](_0x5282('0xd'),_0x518370,_0x1cfe12['body']);if(_0x35f395[_0x5282('0x2c')]==_0x5282('0x2d')){_0xb17ceb[_0x5282('0x29')]();}else{_0xb17ceb[_0x5282('0x26')]();}})['catch'](function(_0x497e17){logger[_0x5282('0x22')]('[%s][AMAZONLEX]\x20%s',_0x518370,JSON['stringify'](_0x497e17));_0xb17ceb[_0x5282('0x29')]();});}else{_0xb17ceb['next']();}});}}catch(_0x5c55bb){logger[_0x5282('0x22')](_0x5282('0xd'),_0x518370,JSON[_0x5282('0x23')](_0x5c55bb));_0xb17ceb['stop']();}};};
\ No newline at end of file
index fbc7a9e..01dbe6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x598d=['create','[%s][AUTOREPLY]\x20%s','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','autoreplyExecuted','Interaction','update','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','interaction','created','info','Autoreply\x20already\x20sent','One\x20Time\x20already\x20sent','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','mail','getMustacheRender','body','message','from','phone','read','subject','Re:','Re:\x20','account','upperFirst','AccountId','Smtp','service','host','port','secure','auth','user','pass','inReplyTo','messageId','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','Message'];(function(_0x746bb6,_0x323470){var _0x4cf954=function(_0x3ab970){while(--_0x3ab970){_0x746bb6['push'](_0x746bb6['shift']());}};_0x4cf954(++_0x323470);}(_0x598d,0xa0));var _0xd598=function(_0x362655,_0x2ddd0a){_0x362655=_0x362655-0x0;var _0x119bfe=_0x598d[_0x362655];return _0x119bfe;};'use strict';var _=require(_0xd598('0x0'));var moment=require('moment');var utils=require('./utils');var logger=require(_0xd598('0x1'))(_0xd598('0x2'));var rpc={'chatMessage':require(_0xd598('0x3')),'openchannelMessage':require(_0xd598('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xd598('0x5')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xd598('0x6')),'chatInteraction':require(_0xd598('0x7')),'openchannelInteraction':require(_0xd598('0x8')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0xd598('0x9')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xd598('0xa'))};var mailRpc=require(_0xd598('0xb'));exports[_0xd598('0xc')]=function(_0xad99ab,_0x533da3){return function(_0x1b28db){try{if(_0x533da3[0x0]==='1'&&(_['isNil'](this[_0xd598('0xd')][_0xd598('0xe')])||!this[_0xd598('0xd')][_0xd598('0xe')])){logger[_0xd598('0xf')]('[%s][AUTOREPLY]\x20%s',_0xad99ab,_0xd598('0x10'));return _0x1b28db['next']();}if(_0x533da3[0x0]==='2'&&this[_0xd598('0xd')]['autoreplyExecuted']){logger[_0xd598('0xf')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0xad99ab,_0xd598('0x11'));return _0x1b28db[_0xd598('0x12')]();}var _0x1f4a65=this['channel'];var _0x44e04c={'ContactId':this[_0xd598('0x13')]['id'],'sentAt':moment()[_0xd598('0x14')](_0xd598('0x15')),'direction':_0xd598('0x16')};if(this[_0xd598('0x17')]===_0xd598('0x18')){_0x44e04c['body']=utils[_0xd598('0x19')](_0x533da3[0x2],this);}else{_0x44e04c[_0xd598('0x1a')]=utils[_0xd598('0x19')](_0x533da3[0x1],this);}if(this[_0xd598('0x1b')]){_0x44e04c['to']=this[_0xd598('0x1b')][_0xd598('0x1c')]||'';if(this[_0xd598('0x17')]===_0xd598('0x18')&&_0x533da3[0x1]==='1'){_0x44e04c['cc']=this[_0xd598('0x1b')]['cc']||'';}_0x44e04c[_0xd598('0x1c')]=this[_0xd598('0x1b')]['to']||'';_0x44e04c[_0xd598('0x1d')]=this[_0xd598('0x1b')][_0xd598('0x1d')]||'';_0x44e04c[_0xd598('0x1e')]=!![];if(this[_0xd598('0x1b')][_0xd598('0x1f')]){_0x44e04c['subject']='';_0x44e04c['subject']+=_['startsWith'](this['message'][_0xd598('0x1f')],_0xd598('0x20'))?'':_0xd598('0x21');_0x44e04c[_0xd598('0x1f')]+=this[_0xd598('0x1b')][_0xd598('0x1f')];}}if(this[_0xd598('0x17')]==='chat'){_0x44e04c['ChatWebsiteId']=this[_0xd598('0x22')]['id'];}else{_0x44e04c[_[_0xd598('0x23')](this[_0xd598('0x17')])+_0xd598('0x24')]=this[_0xd598('0x22')]['id'];}_0x44e04c[_['upperFirst'](this[_0xd598('0x17')])+'InteractionId']=this[_0xd598('0xd')]['id'];var _0x5bece8=this[_0xd598('0xd')];if(rpc[this['channel']+'Message']){if(this[_0xd598('0x17')]===_0xd598('0x18')){var _0x76496f={'tls':{'rejectUnauthorized':![]}};if(this[_0xd598('0x22')][_0xd598('0x25')][_0xd598('0x26')]){_0x76496f[_0xd598('0x26')]=this[_0xd598('0x22')]['Smtp'][_0xd598('0x26')];}else{_0x76496f[_0xd598('0x27')]=this[_0xd598('0x22')][_0xd598('0x25')][_0xd598('0x27')];_0x76496f[_0xd598('0x28')]=this['account'][_0xd598('0x25')][_0xd598('0x28')];_0x76496f[_0xd598('0x29')]=this[_0xd598('0x22')][_0xd598('0x25')][_0xd598('0x29')];}if(this[_0xd598('0x22')][_0xd598('0x25')]['authentication']){_0x76496f[_0xd598('0x2a')]={'user':this['account'][_0xd598('0x25')][_0xd598('0x2b')],'pass':this[_0xd598('0x22')][_0xd598('0x25')][_0xd598('0x2c')]};}_0x44e04c[_0xd598('0x2d')]=this[_0xd598('0x1b')][_0xd598('0x2e')];_0x44e04c['html']='<div\x20id=\x22xm-mail-content\x22>'+_[_0xd598('0x2f')](_0x44e04c[_0xd598('0x1a')],_0xd598('0x30'),_0xd598('0x31'))+_0xd598('0x32');_0x44e04c[_0xd598('0x33')]={'Auto-Submitted':_0xd598('0x34'),'X-Auto-Response-Suppress':_0xd598('0x35'),'Precedence':_0xd598('0x36')};return mailRpc[_0xd598('0x37')](_0x76496f,_0x44e04c)[_0xd598('0x38')](function(_0x4bb3a1){logger['info'](_0xd598('0x39'),_0xad99ab);_0x44e04c[_0xd598('0x2e')]=_0x4bb3a1[_0xd598('0x1b')][_0xd598('0x2e')];return rpc[_0x1f4a65+_0xd598('0x3a')][_0xd598('0x3b')](_0x44e04c);})[_0xd598('0x38')](function(_0x43607e){logger['info'](_0xd598('0x3c'),_0xad99ab,JSON[_0xd598('0x3d')](_0x43607e));})[_0xd598('0x3e')](function(_0x152e19){logger['error'](_0xd598('0x3f'),_0xad99ab,JSON['stringify'](_0x152e19));})[_0xd598('0x40')](function(){Promise[_0xd598('0x41')]()[_0xd598('0x38')](function(){if(_0x533da3[0x0]!=='2'||_0x5bece8[_0xd598('0x42')])return;return rpc[_0x1f4a65+_0xd598('0x43')][_0xd598('0x44')](_0x5bece8['id'],{'autoreplyExecuted':!![]})[_0xd598('0x38')](function(_0x3a5321){logger[_0xd598('0xf')](_0xd598('0x45'),_0xad99ab,JSON[_0xd598('0x3d')](_0x3a5321));})[_0xd598('0x3e')](function(_0x4d0f0f){logger[_0xd598('0x46')](_0xd598('0x47'),_0xad99ab,JSON['stringify'](_0x4d0f0f));});})[_0xd598('0x38')](function(){_0x1b28db['next']();});});}else{return rpc[this[_0xd598('0x17')]+_0xd598('0x3a')][_0xd598('0x3b')](_0x44e04c)[_0xd598('0x38')](function(_0x5454de){logger['info'](_0xd598('0x3c'),_0xad99ab,_0x44e04c[_0xd598('0x1a')]);})[_0xd598('0x3e')](function(_0x4e4ea7){logger[_0xd598('0x46')](_0xd598('0x3c'),_0xad99ab,JSON[_0xd598('0x3d')](_0x4e4ea7));})[_0xd598('0x40')](function(){Promise[_0xd598('0x41')]()[_0xd598('0x38')](function(){if(_0x533da3[0x0]!=='2'||_0x5bece8[_0xd598('0x42')])return;return rpc[_0x1f4a65+_0xd598('0x43')][_0xd598('0x44')](_0x5bece8['id'],{'autoreplyExecuted':!![]})['then'](function(_0x129ccf){logger[_0xd598('0xf')](_0xd598('0x45'),_0xad99ab,JSON[_0xd598('0x3d')](_0x129ccf));})[_0xd598('0x3e')](function(_0x3e6ac7){logger['error'](_0xd598('0x47'),_0xad99ab,JSON[_0xd598('0x3d')](_0x3e6ac7));});})[_0xd598('0x38')](function(){_0x1b28db[_0xd598('0x12')]();});});}}}catch(_0xf00449){logger[_0xd598('0x46')](_0xd598('0x3c'),_0xad99ab,JSON[_0xd598('0x3d')](_0xf00449));_0x1b28db[_0xd598('0x48')]();}};};
\ No newline at end of file
+var _0x2d2b=['Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment','./utils','routing','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','isAutoreply','[%s][AUTOREPLY]\x20%s','isNil','interaction','created','Autoreply\x20already\x20sent','next','autoreplyExecuted','info','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','YYYY-MM-DD\x20HH:mm:ss','out','message','from','phone','read','subject','startsWith','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','Smtp','service','host','port','secure','authentication','user','inReplyTo','messageId','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','All','create','then','stringify','catch','error','finally','resolve'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0x2d2b,0x8e));var _0xb2d2=function(_0x4eae26,_0x41c659){_0x4eae26=_0x4eae26-0x0;var _0x3fcfe3=_0x2d2b[_0x4eae26];return _0x3fcfe3;};'use strict';var _=require(_0xb2d2('0x0'));var moment=require(_0xb2d2('0x1'));var utils=require(_0xb2d2('0x2'));var logger=require('../../../../config/logger')(_0xb2d2('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xb2d2('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xb2d2('0x5')),'whatsappMessage':require(_0xb2d2('0x6')),'chatInteraction':require(_0xb2d2('0x7')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0xb2d2('0x8')),'smsInteraction':require(_0xb2d2('0x9')),'faxInteraction':require(_0xb2d2('0xa')),'whatsappInteraction':require(_0xb2d2('0xb'))};var mailRpc=require(_0xb2d2('0xc'));exports[_0xb2d2('0xd')]=function(_0x5e46e3,_0x47f816,_0x18e2e7,_0x10f0e6){return function(_0x2d5a58){try{var _0x1b5e03=this[_0xb2d2('0xe')];if(_0x1b5e03===_0xb2d2('0xf')&&_0x10f0e6[_0xb2d2('0x10')][_0xb2d2('0x11')]){logger['info'](_0xb2d2('0x12'),_0x5e46e3,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x2d5a58['next']();}if(_0x47f816[0x0]==='1'&&(_[_0xb2d2('0x13')](this[_0xb2d2('0x14')][_0xb2d2('0x15')])||!this['interaction'][_0xb2d2('0x15')])){logger['info'](_0xb2d2('0x12'),_0x5e46e3,_0xb2d2('0x16'));return _0x2d5a58[_0xb2d2('0x17')]();}if(_0x47f816[0x0]==='2'&&this['interaction'][_0xb2d2('0x18')]){logger[_0xb2d2('0x19')](_0xb2d2('0x1a'),_0x5e46e3,_0xb2d2('0x1b'));return _0x2d5a58[_0xb2d2('0x17')]();}var _0x191fe6={'ContactId':this['contact']['id'],'sentAt':moment()['format'](_0xb2d2('0x1c')),'direction':_0xb2d2('0x1d')};if(this[_0xb2d2('0xe')]===_0xb2d2('0xf')){_0x191fe6['body']=utils['getMustacheRender'](_0x47f816[0x2],this);}else{_0x191fe6[_0xb2d2('0x10')]=utils['getMustacheRender'](_0x47f816[0x1],this);}if(this[_0xb2d2('0x1e')]){_0x191fe6['to']=this[_0xb2d2('0x1e')]['from']||'';if(this[_0xb2d2('0xe')]===_0xb2d2('0xf')&&_0x47f816[0x1]==='1'){_0x191fe6['cc']=this[_0xb2d2('0x1e')]['cc']||'';}_0x191fe6[_0xb2d2('0x1f')]=this[_0xb2d2('0x1e')]['to']||'';_0x191fe6[_0xb2d2('0x20')]=this[_0xb2d2('0x1e')][_0xb2d2('0x20')]||'';_0x191fe6[_0xb2d2('0x21')]=!![];if(this[_0xb2d2('0x1e')]['subject']){_0x191fe6[_0xb2d2('0x22')]='';_0x191fe6[_0xb2d2('0x22')]+=_[_0xb2d2('0x23')](this[_0xb2d2('0x1e')]['subject'],'Re:')?'':'Re:\x20';_0x191fe6[_0xb2d2('0x22')]+=this[_0xb2d2('0x1e')][_0xb2d2('0x22')];}}if(this[_0xb2d2('0xe')]==='chat'){_0x191fe6[_0xb2d2('0x24')]=this[_0xb2d2('0x25')]['id'];}else{_0x191fe6[_[_0xb2d2('0x26')](this['channel'])+_0xb2d2('0x27')]=this[_0xb2d2('0x25')]['id'];}_0x191fe6[_[_0xb2d2('0x26')](this['channel'])+_0xb2d2('0x28')]=this[_0xb2d2('0x14')]['id'];var _0x2a9c20=this['interaction'];if(rpc[this[_0xb2d2('0xe')]+_0xb2d2('0x29')]){if(this['channel']===_0xb2d2('0xf')){var _0x4d3493={'tls':{'rejectUnauthorized':![]}};if(this[_0xb2d2('0x25')][_0xb2d2('0x2a')][_0xb2d2('0x2b')]){_0x4d3493[_0xb2d2('0x2b')]=this[_0xb2d2('0x25')][_0xb2d2('0x2a')]['service'];}else{_0x4d3493[_0xb2d2('0x2c')]=this['account'][_0xb2d2('0x2a')][_0xb2d2('0x2c')];_0x4d3493[_0xb2d2('0x2d')]=this[_0xb2d2('0x25')]['Smtp']['port'];_0x4d3493[_0xb2d2('0x2e')]=this['account'][_0xb2d2('0x2a')][_0xb2d2('0x2e')];}if(this[_0xb2d2('0x25')][_0xb2d2('0x2a')][_0xb2d2('0x2f')]){_0x4d3493['auth']={'user':this[_0xb2d2('0x25')][_0xb2d2('0x2a')][_0xb2d2('0x30')],'pass':this[_0xb2d2('0x25')]['Smtp']['pass']};}_0x191fe6[_0xb2d2('0x31')]=this[_0xb2d2('0x1e')][_0xb2d2('0x32')];_0x191fe6['html']=_0xb2d2('0x33')+_[_0xb2d2('0x34')](_0x191fe6[_0xb2d2('0x10')],_0xb2d2('0x35'),_0xb2d2('0x36'))+_0xb2d2('0x37');_0x191fe6[_0xb2d2('0x38')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0xb2d2('0x39'),'Precedence':'auto_reply'};return mailRpc['sendMailMessage'](_0x4d3493,_0x191fe6)['then'](function(_0x378e88){logger[_0xb2d2('0x19')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x5e46e3);_0x191fe6[_0xb2d2('0x32')]=_0x378e88[_0xb2d2('0x1e')][_0xb2d2('0x32')];return rpc[_0x1b5e03+_0xb2d2('0x29')][_0xb2d2('0x3a')](_0x191fe6);})[_0xb2d2('0x3b')](function(_0x817fa8){logger[_0xb2d2('0x19')](_0xb2d2('0x12'),_0x5e46e3,JSON[_0xb2d2('0x3c')](_0x817fa8));})[_0xb2d2('0x3d')](function(_0x190540){logger[_0xb2d2('0x3e')]('[RPC][%s][AUTOREPLY]\x20%s',_0x5e46e3,JSON['stringify'](_0x190540));})[_0xb2d2('0x3f')](function(){Promise[_0xb2d2('0x40')]()[_0xb2d2('0x3b')](function(){if(_0x47f816[0x0]!=='2'||_0x2a9c20['autoreplyExecuted'])return;return rpc[_0x1b5e03+_0xb2d2('0x41')][_0xb2d2('0x42')](_0x2a9c20['id'],{'autoreplyExecuted':!![]})[_0xb2d2('0x3b')](function(_0x23c9d8){logger[_0xb2d2('0x19')](_0xb2d2('0x1a'),_0x5e46e3,JSON['stringify'](_0x23c9d8));})[_0xb2d2('0x3d')](function(_0x4e1d2d){logger[_0xb2d2('0x3e')](_0xb2d2('0x43'),_0x5e46e3,JSON[_0xb2d2('0x3c')](_0x4e1d2d));});})[_0xb2d2('0x3b')](function(){_0x2d5a58[_0xb2d2('0x17')]();});});}else{return rpc[this[_0xb2d2('0xe')]+_0xb2d2('0x29')][_0xb2d2('0x3a')](_0x191fe6)['then'](function(_0x1f152e){logger[_0xb2d2('0x19')](_0xb2d2('0x12'),_0x5e46e3,_0x191fe6['body']);})[_0xb2d2('0x3d')](function(_0x40349b){logger[_0xb2d2('0x3e')](_0xb2d2('0x12'),_0x5e46e3,JSON[_0xb2d2('0x3c')](_0x40349b));})[_0xb2d2('0x3f')](function(){Promise[_0xb2d2('0x40')]()['then'](function(){if(_0x47f816[0x0]!=='2'||_0x2a9c20[_0xb2d2('0x18')])return;return rpc[_0x1b5e03+_0xb2d2('0x41')][_0xb2d2('0x42')](_0x2a9c20['id'],{'autoreplyExecuted':!![]})[_0xb2d2('0x3b')](function(_0x100c4d){logger[_0xb2d2('0x19')](_0xb2d2('0x1a'),_0x5e46e3,JSON['stringify'](_0x100c4d));})[_0xb2d2('0x3d')](function(_0x1d8af9){logger[_0xb2d2('0x3e')](_0xb2d2('0x43'),_0x5e46e3,JSON[_0xb2d2('0x3c')](_0x1d8af9));});})[_0xb2d2('0x3b')](function(){_0x2d5a58['next']();});});}}}catch(_0x49ccfb){logger[_0xb2d2('0x3e')]('[%s][AUTOREPLY]\x20%s',_0x5e46e3,JSON[_0xb2d2('0x3c')](_0x49ccfb));_0x2d5a58[_0xb2d2('0x44')]();}};};
\ No newline at end of file
index 708291a..bc604ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9755=['../../../../config/logger','routing','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','finally','stop','stringify'];(function(_0x15f3c0,_0x165a64){var _0x1adfe0=function(_0x212cfc){while(--_0x212cfc){_0x15f3c0['push'](_0x15f3c0['shift']());}};_0x1adfe0(++_0x165a64);}(_0x9755,0x1c8));var _0x5975=function(_0x32a884,_0x183853){_0x32a884=_0x32a884-0x0;var _0x242f9b=_0x9755[_0x32a884];return _0x242f9b;};'use strict';var moment=require('moment');var logger=require(_0x5975('0x0'))(_0x5975('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x5975('0x2')),'smsInteraction':require(_0x5975('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x5975('0x4')),'whatsappInteraction':require(_0x5975('0x5'))};exports[_0x5975('0x6')]=function(_0x18a232,_0x52bc43,_0x1cb665,_0x6101bc){return function(_0x10a1a9){try{logger[_0x5975('0x7')](_0x5975('0x8'),_0x18a232,_0x52bc43[0x0]);var _0x50c0b8={'closed':0x1,'closedAt':moment()[_0x5975('0x9')](_0x5975('0xa')),'closeReason':_0x5975('0xb'),'disposition':_0x52bc43[0x0]};if(rpc[_0x6101bc[_0x5975('0xc')]+'Interaction']){rpc[_0x6101bc['channel']+_0x5975('0xd')][_0x5975('0xe')](_0x6101bc[_0x5975('0xf')]['id'],_0x50c0b8)[_0x5975('0x10')](function(_0x3b9b31){logger[_0x5975('0x7')](_0x5975('0x11'),_0x18a232,_0x6101bc[_0x5975('0xf')]['id']);})[_0x5975('0x12')](function(_0x26e96f){logger[_0x5975('0x13')](_0x5975('0x14'),_0x18a232,JSON['stringify'](_0x26e96f));})[_0x5975('0x15')](function(){_0x10a1a9[_0x5975('0x16')]();});}}catch(_0x2b624b){logger[_0x5975('0x13')](_0x5975('0x14'),_0x18a232,JSON[_0x5975('0x17')](_0x2b624b));_0x10a1a9['stop']();}};};
\ No newline at end of file
+var _0x0a7f=['consequence','info','[%s][CLOSE]\x20reason\x20%s','YYYY-MM-DD\x20HH:mm:ss','system','Interaction','channel','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','stringify','finally','stop','error','[%s][CLOSE]\x20%s','moment','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x0a7f,0x1b5));var _0xf0a7=function(_0x73740d,_0x49a324){_0x73740d=_0x73740d-0x0;var _0x3eecfe=_0x0a7f[_0x73740d];return _0x3eecfe;};'use strict';var moment=require(_0xf0a7('0x0'));var logger=require('../../../../config/logger')('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xf0a7('0x1')),'smsInteraction':require(_0xf0a7('0x2')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xf0a7('0x3'))};exports[_0xf0a7('0x4')]=function(_0x41c5d2,_0x3ab8bf,_0x57c3da,_0xaebbd4){return function(_0x1ec8f3){try{logger[_0xf0a7('0x5')](_0xf0a7('0x6'),_0x41c5d2,_0x3ab8bf[0x0]);var _0x3131ec={'closed':0x1,'closedAt':moment()['format'](_0xf0a7('0x7')),'closeReason':_0xf0a7('0x8'),'disposition':_0x3ab8bf[0x0]};if(rpc[_0xaebbd4['channel']+_0xf0a7('0x9')]){rpc[_0xaebbd4[_0xf0a7('0xa')]+_0xf0a7('0x9')][_0xf0a7('0xb')](_0xaebbd4[_0xf0a7('0xc')]['id'],_0x3131ec)[_0xf0a7('0xd')](function(_0x1c15dc){logger['info'](_0xf0a7('0xe'),_0x41c5d2,_0xaebbd4[_0xf0a7('0xc')]['id']);})[_0xf0a7('0xf')](function(_0x48a4fe){logger['error']('[%s][CLOSE]\x20%s',_0x41c5d2,JSON[_0xf0a7('0x10')](_0x48a4fe));})[_0xf0a7('0x11')](function(){_0x1ec8f3[_0xf0a7('0x12')]();});}}catch(_0x1d49da){logger[_0xf0a7('0x13')](_0xf0a7('0x14'),_0x41c5d2,JSON['stringify'](_0x1d49da));_0x1ec8f3[_0xf0a7('0x12')]();}};};
\ No newline at end of file
index 86efac3..810b49e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ce=['../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','phone','ChatWebsiteId','upperFirst','AccountId','InteractionId','created','isEmpty','Message','create','then','body','catch','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','dialogflow','speech','providerName','providerResponse','result','metadata','endConversation','error','lodash','moment','apiai-promise','md5','routing'];(function(_0x37820d,_0x19111a){var _0x32ffe5=function(_0xa7c52d){while(--_0xa7c52d){_0x37820d['push'](_0x37820d['shift']());}};_0x32ffe5(++_0x19111a);}(_0xd7ce,0x16b));var _0xed7c=function(_0x246115,_0x398123){_0x246115=_0x246115-0x0;var _0x385878=_0xd7ce[_0x246115];return _0x385878;};'use strict';var _=require(_0xed7c('0x0'));var moment=require(_0xed7c('0x1'));var apiai=require(_0xed7c('0x2'));var md5=require(_0xed7c('0x3'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0xed7c('0x4'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xed7c('0x5')),'faxMessage':require(_0xed7c('0x6')),'whatsappMessage':require(_0xed7c('0x7'))};exports[_0xed7c('0x8')]=function(_0x34bbd7,_0x43a9e7){return function(_0x41afb9){try{if(!_[_0xed7c('0x9')](this[_0xed7c('0xa')][_0xed7c('0xb')])){logger[_0xed7c('0xc')](_0xed7c('0xd'),_0x34bbd7,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x41afb9[_0xed7c('0xe')]();}var _0x1e337e={'ContactId':this[_0xed7c('0xf')]['id'],'sentAt':moment()[_0xed7c('0x10')](_0xed7c('0x11')),'direction':_0xed7c('0x12')};if(this['channel']===_0xed7c('0x13')||this['channel']==='whatsapp'){_0x1e337e['phone']=this[_0xed7c('0xa')][_0xed7c('0x14')];}var _0x52cf82=this['channel'];if(_0x52cf82==='chat'){_0x1e337e[_0xed7c('0x15')]=this['account']['id'];}else{_0x1e337e[_[_0xed7c('0x16')](_0x52cf82)+_0xed7c('0x17')]=this['account']['id'];}_0x1e337e[_[_0xed7c('0x16')](_0x52cf82)+_0xed7c('0x18')]=this['interaction']['id'];if(this['interaction'][_0xed7c('0x19')]){var _0x28d260=_0x43a9e7[0x2];if(!_[_0xed7c('0x1a')](_0x28d260)){_0x1e337e['body']=utils['getMustacheRender'](_0x28d260,this);return rpc[_0x52cf82+_0xed7c('0x1b')][_0xed7c('0x1c')](_0x1e337e)[_0xed7c('0x1d')](function(_0x1be073){logger[_0xed7c('0xc')](_0xed7c('0xd'),_0x34bbd7,_0x1e337e[_0xed7c('0x1e')]);})[_0xed7c('0x1f')](function(_0x2500be){logger['error']('[%s][DIALOGFLOW]\x20%s',_0x34bbd7,JSON[_0xed7c('0x20')](_0x2500be));})['finally'](function(){logger[_0xed7c('0xc')](_0xed7c('0x21'),_0x34bbd7);_0x41afb9[_0xed7c('0x22')]();});}else{logger['info'](_0xed7c('0x23'),_0x34bbd7);_0x41afb9[_0xed7c('0x22')]();}}else{var _0x2b4043=this;var _0x177cdf=apiai(_0x43a9e7[0x0],{'language':_0x43a9e7[0x1]||'en'});return _0x177cdf[_0xed7c('0x24')](this[_0xed7c('0x25')][_0xed7c('0x1e')],{'sessionId':md5(this[_0xed7c('0xa')]['id'])})[_0xed7c('0x1d')](function(_0x10e1e1){_0x2b4043[_0xed7c('0x1e')][_0xed7c('0x26')]=_0x10e1e1;_0x1e337e['body']=_0x10e1e1['result']['fulfillment'][_0xed7c('0x27')];_0x1e337e[_0xed7c('0x28')]=_0xed7c('0x26');_0x1e337e[_0xed7c('0x29')]=JSON[_0xed7c('0x20')](_0x10e1e1);return rpc[_0x52cf82+_0xed7c('0x1b')][_0xed7c('0x1c')](_0x1e337e)[_0xed7c('0x1d')](function(_0x183874){logger[_0xed7c('0xc')](_0xed7c('0xd'),_0x34bbd7,_0x1e337e['body']);if(_0x10e1e1[_0xed7c('0x2a')][_0xed7c('0x2b')][_0xed7c('0x2c')]){_0x41afb9[_0xed7c('0xe')]();}else{_0x41afb9[_0xed7c('0x22')]();}})['catch'](function(_0x5301fb){logger[_0xed7c('0x2d')](_0xed7c('0xd'),_0x34bbd7,JSON['stringify'](_0x5301fb));_0x41afb9[_0xed7c('0xe')]();});})[_0xed7c('0x1f')](function(_0x4c8d17){logger['error'](_0xed7c('0xd'),_0x34bbd7,_0x4c8d17[_0xed7c('0x25')]);_0x41afb9[_0xed7c('0xe')]();});}}catch(_0x540a82){logger[_0xed7c('0x2d')]('[%s][DIALOGFLOW]\x20%s',_0x34bbd7,JSON[_0xed7c('0x20')](_0x540a82));_0x41afb9[_0xed7c('0x22')]();}};};
\ No newline at end of file
+var _0xa786=['catch','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','textRequest','message','dialogflow','result','fulfillment','providerName','providerResponse','Message','metadata','error','lodash','moment','apiai-promise','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','isEmpty','body','getMustacheRender','then'];(function(_0x2426e6,_0x2d8f7b){var _0x54301e=function(_0x5ae2ec){while(--_0x5ae2ec){_0x2426e6['push'](_0x2426e6['shift']());}};_0x54301e(++_0x2d8f7b);}(_0xa786,0x71));var _0x6a78=function(_0x1c5613,_0x37c983){_0x1c5613=_0x1c5613-0x0;var _0x15496c=_0xa786[_0x1c5613];return _0x15496c;};'use strict';var _=require(_0x6a78('0x0'));var moment=require(_0x6a78('0x1'));var apiai=require(_0x6a78('0x2'));var md5=require('md5');var utils=require(_0x6a78('0x3'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x6a78('0x4')),'openchannelMessage':require(_0x6a78('0x5')),'mailMessage':require(_0x6a78('0x6')),'smsMessage':require(_0x6a78('0x7')),'faxMessage':require(_0x6a78('0x8')),'whatsappMessage':require(_0x6a78('0x9'))};exports[_0x6a78('0xa')]=function(_0x4dd11b,_0xcd6019){return function(_0x103f4a){try{if(!_[_0x6a78('0xb')](this[_0x6a78('0xc')][_0x6a78('0xd')])){logger[_0x6a78('0xe')](_0x6a78('0xf'),_0x4dd11b,_0x6a78('0x10'));return _0x103f4a[_0x6a78('0x11')]();}var _0x5dd2d2={'ContactId':this[_0x6a78('0x12')]['id'],'sentAt':moment()[_0x6a78('0x13')](_0x6a78('0x14')),'direction':'out'};if(this[_0x6a78('0x15')]===_0x6a78('0x16')||this[_0x6a78('0x15')]===_0x6a78('0x17')){_0x5dd2d2[_0x6a78('0x18')]=this['interaction'][_0x6a78('0x18')];}var _0xb88919=this[_0x6a78('0x15')];if(_0xb88919==='chat'){_0x5dd2d2[_0x6a78('0x19')]=this[_0x6a78('0x1a')]['id'];}else{_0x5dd2d2[_['upperFirst'](_0xb88919)+_0x6a78('0x1b')]=this[_0x6a78('0x1a')]['id'];}_0x5dd2d2[_[_0x6a78('0x1c')](_0xb88919)+_0x6a78('0x1d')]=this[_0x6a78('0xc')]['id'];if(this[_0x6a78('0xc')]['created']){var _0x27d687=_0xcd6019[0x2];if(!_[_0x6a78('0x1e')](_0x27d687)){_0x5dd2d2[_0x6a78('0x1f')]=utils[_0x6a78('0x20')](_0x27d687,this);return rpc[_0xb88919+'Message']['create'](_0x5dd2d2)[_0x6a78('0x21')](function(_0x585917){logger['info']('[%s][DIALOGFLOW]\x20%s',_0x4dd11b,_0x5dd2d2[_0x6a78('0x1f')]);})[_0x6a78('0x22')](function(_0x8006f3){logger['error']('[%s][DIALOGFLOW]\x20%s',_0x4dd11b,JSON[_0x6a78('0x23')](_0x8006f3));})[_0x6a78('0x24')](function(){logger[_0x6a78('0xe')](_0x6a78('0x25'),_0x4dd11b);_0x103f4a['stop']();});}else{logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x4dd11b);_0x103f4a[_0x6a78('0x26')]();}}else{var _0x5869fd=this;var _0xd938cd=apiai(_0xcd6019[0x0],{'language':_0xcd6019[0x1]||'en'});return _0xd938cd[_0x6a78('0x27')](this[_0x6a78('0x28')]['body'],{'sessionId':md5(this[_0x6a78('0xc')]['id'])})[_0x6a78('0x21')](function(_0x89fd2b){_0x5869fd[_0x6a78('0x1f')][_0x6a78('0x29')]=_0x89fd2b;_0x5dd2d2[_0x6a78('0x1f')]=_0x89fd2b[_0x6a78('0x2a')][_0x6a78('0x2b')]['speech'];_0x5dd2d2[_0x6a78('0x2c')]=_0x6a78('0x29');_0x5dd2d2[_0x6a78('0x2d')]=JSON['stringify'](_0x89fd2b);return rpc[_0xb88919+_0x6a78('0x2e')]['create'](_0x5dd2d2)[_0x6a78('0x21')](function(_0x196b81){logger['info'](_0x6a78('0xf'),_0x4dd11b,_0x5dd2d2[_0x6a78('0x1f')]);if(_0x89fd2b[_0x6a78('0x2a')][_0x6a78('0x2f')]['endConversation']){_0x103f4a[_0x6a78('0x11')]();}else{_0x103f4a[_0x6a78('0x26')]();}})[_0x6a78('0x22')](function(_0x12e0c5){logger['error'](_0x6a78('0xf'),_0x4dd11b,JSON[_0x6a78('0x23')](_0x12e0c5));_0x103f4a[_0x6a78('0x11')]();});})['catch'](function(_0x118f6c){logger[_0x6a78('0x30')]('[%s][DIALOGFLOW]\x20%s',_0x4dd11b,_0x118f6c[_0x6a78('0x28')]);_0x103f4a[_0x6a78('0x11')]();});}}catch(_0x232c1c){logger[_0x6a78('0x30')](_0x6a78('0xf'),_0x4dd11b,JSON['stringify'](_0x232c1c));_0x103f4a[_0x6a78('0x26')]();}};};
\ No newline at end of file
index a115780..e5a201c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3506=['info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','phone','channel','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','create','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','sessionPath','message','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','length','push','fulfillmentText','all','next','lodash','md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','clone','body','Message','then'];(function(_0xd580aa,_0x876b1){var _0xb1fbe5=function(_0xc39ee){while(--_0xc39ee){_0xd580aa['push'](_0xd580aa['shift']());}};_0xb1fbe5(++_0x876b1);}(_0x3506,0x86));var _0x6350=function(_0x575ee3,_0x31b44a){_0x575ee3=_0x575ee3-0x0;var _0x185eba=_0x3506[_0x575ee3];return _0x185eba;};'use strict';var _=require(_0x6350('0x0'));var dialogflow=require('dialogflow');var md5=require(_0x6350('0x1'));var moment=require(_0x6350('0x2'));var Promise=require(_0x6350('0x3'));var logger=require(_0x6350('0x4'))(_0x6350('0x5'));var utils=require(_0x6350('0x6'));var rpc={'chatMessage':require(_0x6350('0x7')),'openchannelMessage':require(_0x6350('0x8')),'mailMessage':require(_0x6350('0x9')),'smsMessage':require(_0x6350('0xa')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x6350('0xb'))};function createMessage(_0x1d46bb,_0x4883d9,_0x2815f8,_0x164bf2){return new Promise(function(_0x50cc9b,_0xf529b1){var _0x1617d7=_[_0x6350('0xc')](_0x2815f8);_0x1617d7[_0x6350('0xd')]=_0x164bf2;return rpc[_0x4883d9+_0x6350('0xe')]['create'](_0x1617d7)[_0x6350('0xf')](function(){logger[_0x6350('0x10')](_0x6350('0x11'),_0x1d46bb,_0x1617d7[_0x6350('0xd')]);_0x50cc9b();})[_0x6350('0x12')](function(_0x1c46fc){logger[_0x6350('0x13')](_0x6350('0x11'),_0x1d46bb,JSON[_0x6350('0x14')](_0x1c46fc));_0xf529b1(_0x1c46fc);});});}exports[_0x6350('0x15')]=function(_0x5102d4,_0x5dc68e){return function(_0x50f11b){try{if(!_[_0x6350('0x16')](this[_0x6350('0x17')][_0x6350('0x18')])){logger[_0x6350('0x10')](_0x6350('0x11'),_0x5102d4,_0x6350('0x19'));return _0x50f11b['next']();}var _0x4ae8ad={'ContactId':this[_0x6350('0x1a')]['id'],'sentAt':moment()[_0x6350('0x1b')](_0x6350('0x1c')),'direction':_0x6350('0x1d')};if(this['channel']===_0x6350('0x1e')||this['channel']==='whatsapp'){_0x4ae8ad[_0x6350('0x1f')]=this[_0x6350('0x17')][_0x6350('0x1f')];}var _0x27f2e6=this[_0x6350('0x20')];if(_0x27f2e6==='chat'){_0x4ae8ad[_0x6350('0x21')]=this[_0x6350('0x22')]['id'];}else{_0x4ae8ad[_[_0x6350('0x23')](_0x27f2e6)+_0x6350('0x24')]=this[_0x6350('0x22')]['id'];}_0x4ae8ad[_['upperFirst'](_0x27f2e6)+_0x6350('0x25')]=this[_0x6350('0x17')]['id'];if(this[_0x6350('0x17')][_0x6350('0x26')]){var _0xbca724=_0x5dc68e[0x4];if(!_[_0x6350('0x27')](_0xbca724)){_0x4ae8ad[_0x6350('0xd')]=utils['getMustacheRender'](_0xbca724,this);return rpc[_0x27f2e6+'Message'][_0x6350('0x28')](_0x4ae8ad)[_0x6350('0xf')](function(_0x5d4098){logger[_0x6350('0x10')](_0x6350('0x11'),_0x5102d4,_0x4ae8ad[_0x6350('0xd')]);})['catch'](function(_0x17791e){logger[_0x6350('0x13')](_0x6350('0x11'),_0x5102d4,JSON[_0x6350('0x14')](_0x17791e));})['finally'](function(){logger[_0x6350('0x10')](_0x6350('0x29'),_0x5102d4);_0x50f11b[_0x6350('0x2a')]();});}else{logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x5102d4);_0x50f11b[_0x6350('0x2a')]();}}else{var _0x2a23bc=this;var _0x299a8d=_0x5dc68e[0x2][_0x6350('0x2b')](/\\n/g,'\x0a');var _0x26cdee={'credentials':{'private_key':_0x299a8d,'client_email':_0x5dc68e[0x1]}};var _0x9fbaba=new dialogflow[(_0x6350('0x2c'))](_0x26cdee);var _0x2b1ec7=_0x9fbaba[_0x6350('0x2d')](_0x5dc68e[0x0],md5(_0x2a23bc[_0x6350('0x17')]['id']));var _0x95746b={'session':_0x2b1ec7,'queryInput':{'text':{'text':_0x2a23bc[_0x6350('0x2e')][_0x6350('0xd')],'languageCode':_0x5dc68e[0x3]||'en'}}};return _0x9fbaba['detectIntent'](_0x95746b)[_0x6350('0xf')](function(_0x599cb1){if(_0x599cb1&&_0x599cb1['length']){_0x2a23bc['body'][_0x6350('0x2f')]=_0x599cb1;var _0x516d21=_0x599cb1[0x0];var _0x11095f=_0x516d21[_0x6350('0x30')]['diagnosticInfo']&&_0x516d21['queryResult'][_0x6350('0x31')][_0x6350('0x32')]?_0x516d21[_0x6350('0x30')][_0x6350('0x31')][_0x6350('0x32')][_0x6350('0x33')][_0x6350('0x34')]:![];_0x2a23bc[_0x6350('0xd')]['DIALOGFLOWV2_ACTION']=_0x516d21[_0x6350('0x30')][_0x6350('0x35')];_0x2a23bc[_0x6350('0xd')][_0x6350('0x36')]=_0x516d21[_0x6350('0x30')][_0x6350('0x37')];_0x2a23bc[_0x6350('0xd')][_0x6350('0x38')]=_0x516d21[_0x6350('0x30')]['diagnosticInfo']&&_0x516d21[_0x6350('0x30')]['diagnosticInfo']['fields']?_0x516d21[_0x6350('0x30')][_0x6350('0x31')]['fields'][_0x6350('0x33')][_0x6350('0x34')]:![];_0x2a23bc[_0x6350('0xd')][_0x6350('0x39')]=_0x516d21[_0x6350('0x30')][_0x6350('0x3a')][_0x6350('0x3b')];_0x2a23bc['body']['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x516d21['queryResult'][_0x6350('0x3a')][_0x6350('0x3c')];_0x2a23bc['body'][_0x6350('0x3d')]=_0x516d21[_0x6350('0x30')][_0x6350('0x3a')][_0x6350('0x3e')];_0x2a23bc[_0x6350('0xd')][_0x6350('0x3f')]=_0x516d21[_0x6350('0x30')][_0x6350('0x40')];_0x2a23bc[_0x6350('0xd')][_0x6350('0x41')]=_0x516d21[_0x6350('0x30')][_0x6350('0x42')];_0x2a23bc['body'][_0x6350('0x43')]=_0x516d21['queryResult'][_0x6350('0x44')];_0x4ae8ad[_0x6350('0x45')]='dialogflowV2';_0x4ae8ad['providerResponse']=JSON[_0x6350('0x14')](_0x599cb1);var _0xf1b67d=[];for(var _0x4ab109=0x0;_0x4ab109<_0x599cb1[_0x6350('0x46')];_0x4ab109++){var _0x2550a7=_0x599cb1[_0x4ab109];if(_0x2550a7&&_0x2550a7[_0x6350('0x30')]&&_0x2550a7[_0x6350('0x30')]['fulfillmentText']){_0xf1b67d[_0x6350('0x47')](createMessage(_0x5102d4,_0x27f2e6,_0x4ae8ad,_0x2550a7[_0x6350('0x30')][_0x6350('0x48')]));}}return Promise[_0x6350('0x49')](_0xf1b67d)[_0x6350('0xf')](function(){if(_0x11095f){_0x50f11b[_0x6350('0x4a')]();}else{_0x50f11b['stop']();}})['catch'](function(_0x2e12c0){logger['error'](_0x6350('0x11'),_0x5102d4,JSON[_0x6350('0x14')](_0x2e12c0));_0x50f11b[_0x6350('0x4a')]();});}})['catch'](function(_0x475177){logger[_0x6350('0x13')](_0x6350('0x11'),_0x5102d4,_0x475177['message']);_0x50f11b['next']();});}}catch(_0x1554ca){logger['error'](_0x6350('0x11'),_0x5102d4,JSON[_0x6350('0x14')](_0x1554ca));_0x50f11b[_0x6350('0x2a')]();}};};
\ No newline at end of file
+var _0x5a4a=['created','isEmpty','getMustacheRender','Message','stringify','finally','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','DIALOGFLOWV2_ENDCONVERSATION','end_conversation','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','languageCode','queryText','intentDetectionConfidence','providerName','providerResponse','push','fulfillmentText','all','next','lodash','dialogflow','md5','moment','bluebird','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','clone','body','create','then','info','catch','error','[%s][DIALOGFLOWV2]\x20%s','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x5a4a,0x100));var _0xa5a4=function(_0x2de9c0,_0x2ae1f2){_0x2de9c0=_0x2de9c0-0x0;var _0x1c4daa=_0x5a4a[_0x2de9c0];return _0x1c4daa;};'use strict';var _=require(_0xa5a4('0x0'));var dialogflow=require(_0xa5a4('0x1'));var md5=require(_0xa5a4('0x2'));var moment=require(_0xa5a4('0x3'));var Promise=require(_0xa5a4('0x4'));var logger=require('../../../../config/logger')(_0xa5a4('0x5'));var utils=require('./utils');var rpc={'chatMessage':require(_0xa5a4('0x6')),'openchannelMessage':require(_0xa5a4('0x7')),'mailMessage':require(_0xa5a4('0x8')),'smsMessage':require(_0xa5a4('0x9')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xa5a4('0xa'))};function createMessage(_0x31076c,_0x33d8b0,_0x5b7611,_0x4717ef){return new Promise(function(_0x1040e4,_0x163182){var _0xce290b=_[_0xa5a4('0xb')](_0x5b7611);_0xce290b[_0xa5a4('0xc')]=_0x4717ef;return rpc[_0x33d8b0+'Message'][_0xa5a4('0xd')](_0xce290b)[_0xa5a4('0xe')](function(){logger[_0xa5a4('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x31076c,_0xce290b['body']);_0x1040e4();})[_0xa5a4('0x10')](function(_0x2d8a7f){logger[_0xa5a4('0x11')](_0xa5a4('0x12'),_0x31076c,JSON['stringify'](_0x2d8a7f));_0x163182(_0x2d8a7f);});});}exports['consequence']=function(_0x1325e5,_0xefd38b){return function(_0x933180){try{if(!_[_0xa5a4('0x13')](this[_0xa5a4('0x14')][_0xa5a4('0x15')])){logger[_0xa5a4('0xf')](_0xa5a4('0x12'),_0x1325e5,_0xa5a4('0x16'));return _0x933180['next']();}var _0x234831={'ContactId':this[_0xa5a4('0x17')]['id'],'sentAt':moment()[_0xa5a4('0x18')](_0xa5a4('0x19')),'direction':_0xa5a4('0x1a')};if(this[_0xa5a4('0x1b')]===_0xa5a4('0x1c')||this[_0xa5a4('0x1b')]==='whatsapp'){_0x234831[_0xa5a4('0x1d')]=this[_0xa5a4('0x14')][_0xa5a4('0x1d')];}var _0x396ae6=this[_0xa5a4('0x1b')];if(_0x396ae6===_0xa5a4('0x1e')){_0x234831[_0xa5a4('0x1f')]=this[_0xa5a4('0x20')]['id'];}else{_0x234831[_['upperFirst'](_0x396ae6)+_0xa5a4('0x21')]=this[_0xa5a4('0x20')]['id'];}_0x234831[_[_0xa5a4('0x22')](_0x396ae6)+_0xa5a4('0x23')]=this[_0xa5a4('0x14')]['id'];if(this['interaction'][_0xa5a4('0x24')]){var _0x352138=_0xefd38b[0x4];if(!_[_0xa5a4('0x25')](_0x352138)){_0x234831['body']=utils[_0xa5a4('0x26')](_0x352138,this);return rpc[_0x396ae6+_0xa5a4('0x27')][_0xa5a4('0xd')](_0x234831)[_0xa5a4('0xe')](function(_0x2c08cc){logger[_0xa5a4('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x1325e5,_0x234831[_0xa5a4('0xc')]);})[_0xa5a4('0x10')](function(_0x39398c){logger[_0xa5a4('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x1325e5,JSON[_0xa5a4('0x28')](_0x39398c));})[_0xa5a4('0x29')](function(){logger[_0xa5a4('0xf')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x1325e5);_0x933180[_0xa5a4('0x2a')]();});}else{logger['info'](_0xa5a4('0x2b'),_0x1325e5);_0x933180[_0xa5a4('0x2a')]();}}else{var _0x531ee4=this;var _0x5ac9f8=_0xefd38b[0x2][_0xa5a4('0x2c')](/\\n/g,'\x0a');var _0x1192fc={'credentials':{'private_key':_0x5ac9f8,'client_email':_0xefd38b[0x1]}};var _0x128f3d=new dialogflow['SessionsClient'](_0x1192fc);var _0x3eba54=_0x128f3d['sessionPath'](_0xefd38b[0x0],md5(_0x531ee4[_0xa5a4('0x14')]['id']));var _0x1b5ac4={'session':_0x3eba54,'queryInput':{'text':{'text':_0x531ee4[_0xa5a4('0x2d')][_0xa5a4('0xc')],'languageCode':_0xefd38b[0x3]||'en'}}};return _0x128f3d[_0xa5a4('0x2e')](_0x1b5ac4)['then'](function(_0x274923){if(_0x274923&&_0x274923[_0xa5a4('0x2f')]){_0x531ee4[_0xa5a4('0xc')][_0xa5a4('0x30')]=_0x274923;var _0x23daa6=_0x274923[0x0];var _0x104657=_0x23daa6[_0xa5a4('0x31')][_0xa5a4('0x32')]&&_0x23daa6[_0xa5a4('0x31')]['diagnosticInfo']['fields']?_0x23daa6[_0xa5a4('0x31')]['diagnosticInfo'][_0xa5a4('0x33')]['end_conversation'][_0xa5a4('0x34')]:![];_0x531ee4['body'][_0xa5a4('0x35')]=_0x23daa6[_0xa5a4('0x31')]['action'];_0x531ee4['body'][_0xa5a4('0x36')]=_0x23daa6[_0xa5a4('0x31')]['allRequiredParamsPresent'];_0x531ee4[_0xa5a4('0xc')][_0xa5a4('0x37')]=_0x23daa6[_0xa5a4('0x31')][_0xa5a4('0x32')]&&_0x23daa6['queryResult'][_0xa5a4('0x32')][_0xa5a4('0x33')]?_0x23daa6[_0xa5a4('0x31')][_0xa5a4('0x32')]['fields'][_0xa5a4('0x38')]['boolValue']:![];_0x531ee4['body'][_0xa5a4('0x39')]=_0x23daa6[_0xa5a4('0x31')][_0xa5a4('0x3a')][_0xa5a4('0x3b')];_0x531ee4['body'][_0xa5a4('0x3c')]=_0x23daa6['queryResult'][_0xa5a4('0x3a')][_0xa5a4('0x3d')];_0x531ee4[_0xa5a4('0xc')][_0xa5a4('0x3e')]=_0x23daa6[_0xa5a4('0x31')][_0xa5a4('0x3a')][_0xa5a4('0x3f')];_0x531ee4[_0xa5a4('0xc')]['DIALOGFLOWV2_LANGUAGECODE']=_0x23daa6[_0xa5a4('0x31')][_0xa5a4('0x40')];_0x531ee4[_0xa5a4('0xc')]['DIALOGFLOWV2_QUERYTEXT']=_0x23daa6[_0xa5a4('0x31')][_0xa5a4('0x41')];_0x531ee4[_0xa5a4('0xc')]['DIALOGFLOWV2_SCORE']=_0x23daa6[_0xa5a4('0x31')][_0xa5a4('0x42')];_0x234831[_0xa5a4('0x43')]='dialogflowV2';_0x234831[_0xa5a4('0x44')]=JSON[_0xa5a4('0x28')](_0x274923);var _0x2fa58c=[];for(var _0x366d5b=0x0;_0x366d5b<_0x274923[_0xa5a4('0x2f')];_0x366d5b++){var _0x178d57=_0x274923[_0x366d5b];if(_0x178d57&&_0x178d57['queryResult']&&_0x178d57['queryResult']['fulfillmentText']){_0x2fa58c[_0xa5a4('0x45')](createMessage(_0x1325e5,_0x396ae6,_0x234831,_0x178d57[_0xa5a4('0x31')][_0xa5a4('0x46')]));}}return Promise[_0xa5a4('0x47')](_0x2fa58c)['then'](function(){if(_0x104657){_0x933180[_0xa5a4('0x48')]();}else{_0x933180[_0xa5a4('0x2a')]();}})[_0xa5a4('0x10')](function(_0x32317d){logger[_0xa5a4('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x1325e5,JSON[_0xa5a4('0x28')](_0x32317d));_0x933180['next']();});}})['catch'](function(_0x12ddc1){logger[_0xa5a4('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x1325e5,_0x12ddc1[_0xa5a4('0x2d')]);_0x933180[_0xa5a4('0x48')]();});}}catch(_0x2c84f1){logger[_0xa5a4('0x11')](_0xa5a4('0x12'),_0x1325e5,JSON[_0xa5a4('0x28')](_0x2c84f1));_0x933180['stop']();}};};
\ No newline at end of file
index 75cd740..5fd5d6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd94=['length','map','message','join','stop','condition','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','[%s][GOTOIF]\x20%s','validate','lodash','html-to-text','./utils','../../../../config/logger','string','priority\x20true\x20is\x20a\x20number','number','consequence','fromString','getMustacheRender','replace'];(function(_0x414dc7,_0x2bd872){var _0x544b04=function(_0x2eecd5){while(--_0x2eecd5){_0x414dc7['push'](_0x414dc7['shift']());}};_0x544b04(++_0x2bd872);}(_0xfd94,0x189));var _0x4fd9=function(_0x2d83c3,_0x564ad7){_0x2d83c3=_0x2d83c3-0x0;var _0x6832f3=_0xfd94[_0x2d83c3];return _0x6832f3;};'use strict';var schema=require(_0x4fd9('0x0'));var _=require(_0x4fd9('0x1'));var htmlToText=require(_0x4fd9('0x2'));var utils=require(_0x4fd9('0x3'));var logger=require(_0x4fd9('0x4'))('routing');var gotoif=schema({'condition':{'type':_0x4fd9('0x5'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':'number','message':_0x4fd9('0x6')},'priorityFalse':{'type':_0x4fd9('0x7'),'message':'priority\x20false\x20is\x20a\x20number'}});exports[_0x4fd9('0x8')]=function(_0x4d0632,_0x58f856){return function(_0x18b585){try{var _0x5ea71f={'condition':htmlToText[_0x4fd9('0x9')](utils[_0x4fd9('0xa')](_0x58f856[0x0],this),{'wordwrap':![]})[_0x4fd9('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x58f856[0x1],'priorityFalse':_0x58f856[0x2]};var _0x2a0196=gotoif[_0x4fd9('0x0')](_0x5ea71f,{'typecast':!![]});if(_0x2a0196[_0x4fd9('0xc')]){logger['error']('[%s][GOTOIF]\x20%s',_0x4d0632,_[_0x4fd9('0xd')](_0x2a0196,_0x4fd9('0xe'))[_0x4fd9('0xf')](',\x20'));_0x18b585[_0x4fd9('0x10')]();}else{try{var _0x533efa=eval('('+_0x5ea71f[_0x4fd9('0x11')]+')');var _0x161eae=_0x533efa?_0x5ea71f['priorityTrue']:_0x5ea71f[_0x4fd9('0x12')];logger[_0x4fd9('0x13')](_0x4fd9('0x14'),_0x4d0632,_0x5ea71f['condition'],_0x533efa,_0x161eae||_0x4fd9('0x15'));if(_0x161eae){var _0x353c37=_[_0x4fd9('0x16')](_0x18b585['rules'](),{'p':_0x161eae});if(_0x353c37>=0x0){logger[_0x4fd9('0x13')](_0x4fd9('0x17'),_0x4d0632,_0x161eae||_0x4fd9('0x15'),_0x353c37);_0x18b585['next'](_0x353c37);}else{logger[_0x4fd9('0x13')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x4d0632,_0x161eae||_0x4fd9('0x15'));_0x18b585[_0x4fd9('0x10')]();}}else{_0x18b585[_0x4fd9('0x15')]();}}catch(_0x70a042){logger[_0x4fd9('0x18')](_0x4fd9('0x19'),_0x4d0632,_0x70a042[_0x4fd9('0xe')]);_0x18b585[_0x4fd9('0x10')]();}}}catch(_0x5ab196){logger['error'](_0x4fd9('0x1a'),_0x4d0632,JSON['stringify'](_0x5ab196));_0x18b585[_0x4fd9('0x10')]();}};};
\ No newline at end of file
+var _0xc7d0=['error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','priorityFalse','info','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stringify','validate','html-to-text','./utils','../../../../config/logger','string','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','replace','length'];(function(_0x1c8d09,_0x3bd5c4){var _0x4a7a64=function(_0x2b517e){while(--_0x2b517e){_0x1c8d09['push'](_0x1c8d09['shift']());}};_0x4a7a64(++_0x3bd5c4);}(_0xc7d0,0xd4));var _0x0c7d=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xc7d0[_0x42cae2];return _0x5f256f;};'use strict';var schema=require(_0x0c7d('0x0'));var _=require('lodash');var htmlToText=require(_0x0c7d('0x1'));var utils=require(_0x0c7d('0x2'));var logger=require(_0x0c7d('0x3'))('routing');var gotoif=schema({'condition':{'type':_0x0c7d('0x4'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':_0x0c7d('0x5'),'message':_0x0c7d('0x6')},'priorityFalse':{'type':_0x0c7d('0x5'),'message':_0x0c7d('0x7')}});exports[_0x0c7d('0x8')]=function(_0x5e4fe4,_0x52437c){return function(_0xc3a4c7){try{var _0x15e96c={'condition':htmlToText[_0x0c7d('0x9')](utils['getMustacheRender'](_0x52437c[0x0],this),{'wordwrap':![]})[_0x0c7d('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x52437c[0x1],'priorityFalse':_0x52437c[0x2]};var _0x1f23bf=gotoif[_0x0c7d('0x0')](_0x15e96c,{'typecast':!![]});if(_0x1f23bf[_0x0c7d('0xb')]){logger[_0x0c7d('0xc')](_0x0c7d('0xd'),_0x5e4fe4,_[_0x0c7d('0xe')](_0x1f23bf,_0x0c7d('0xf'))[_0x0c7d('0x10')](',\x20'));_0xc3a4c7[_0x0c7d('0x11')]();}else{try{var _0x21074b=eval('('+_0x15e96c[_0x0c7d('0x12')]+')');var _0x326b0b=_0x21074b?_0x15e96c[_0x0c7d('0x13')]:_0x15e96c[_0x0c7d('0x14')];logger[_0x0c7d('0x15')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x5e4fe4,_0x15e96c[_0x0c7d('0x12')],_0x21074b,_0x326b0b||_0x0c7d('0x16'));if(_0x326b0b){var _0x4eea71=_[_0x0c7d('0x17')](_0xc3a4c7[_0x0c7d('0x18')](),{'p':_0x326b0b});if(_0x4eea71>=0x0){logger[_0x0c7d('0x15')](_0x0c7d('0x19'),_0x5e4fe4,_0x326b0b||_0x0c7d('0x16'),_0x4eea71);_0xc3a4c7[_0x0c7d('0x16')](_0x4eea71);}else{logger[_0x0c7d('0x15')](_0x0c7d('0x1a'),_0x5e4fe4,_0x326b0b||'next');_0xc3a4c7[_0x0c7d('0x11')]();}}else{_0xc3a4c7['next']();}}catch(_0x305dd3){logger[_0x0c7d('0xc')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x5e4fe4,_0x305dd3[_0x0c7d('0xf')]);_0xc3a4c7[_0x0c7d('0x11')]();}}}catch(_0x2a6bc2){logger[_0x0c7d('0xc')](_0x0c7d('0xd'),_0x5e4fe4,JSON[_0x0c7d('0x1b')](_0x2a6bc2));_0xc3a4c7[_0x0c7d('0x11')]();}};};
\ No newline at end of file
index 18bf8b0..e62fb24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb7=['findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','length','error','map','message','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0x4fb7,0x1d2));var _0x74fb=function(_0x5740be,_0x1f85e1){_0x5740be=_0x5740be-0x0;var _0x208aaf=_0x4fb7[_0x5740be];return _0x208aaf;};'use strict';var schema=require(_0x74fb('0x0'));var _=require(_0x74fb('0x1'));var logger=require(_0x74fb('0x2'))(_0x74fb('0x3'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x74fb('0x4')}});exports['consequence']=function(_0x2d07dc,_0x1fcb86){return function(_0x3f244d){try{var _0x198117={'priority':_0x1fcb86[0x0]};var _0x4ab284=gotop['validate'](_0x198117,{'typecast':!![]});if(_0x4ab284[_0x74fb('0x5')]){logger[_0x74fb('0x6')]('[%s][GOTOP]\x20%s',_0x2d07dc,_[_0x74fb('0x7')](_0x4ab284,_0x74fb('0x8'))[_0x74fb('0x9')](',\x20'));_0x3f244d[_0x74fb('0xa')]();}else{logger[_0x74fb('0xb')](_0x74fb('0xc'),_0x2d07dc,_0x198117[_0x74fb('0xd')]);if(_0x198117[_0x74fb('0xd')]){var _0xe1601a=_[_0x74fb('0xe')](_0x3f244d[_0x74fb('0xf')](),{'p':_0x198117[_0x74fb('0xd')]});if(_0xe1601a>=0x0){logger[_0x74fb('0xb')](_0x74fb('0x10'),_0x2d07dc,_0x198117[_0x74fb('0xd')]||_0x74fb('0x11'),_0xe1601a);_0x3f244d[_0x74fb('0x11')](_0xe1601a);}else{logger['info'](_0x74fb('0x12'),_0x2d07dc,_0x198117['priority']||_0x74fb('0x11'));_0x3f244d[_0x74fb('0xa')]();}}else{_0x3f244d[_0x74fb('0x11')]();}}}catch(_0x1c7956){logger['error']('[%s][GOTOP]\x20%s',_0x2d07dc,JSON[_0x74fb('0x13')](_0x1c7956));_0x3f244d[_0x74fb('0xa')]();}};};
\ No newline at end of file
+var _0xaf3e=['[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','lodash','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','validate','length','error','[%s][GOTOP]\x20%s','map','message','join','stop','info','priority','findIndex'];(function(_0x1e507f,_0x1b9c7a){var _0x2a78cd=function(_0x30c615){while(--_0x30c615){_0x1e507f['push'](_0x1e507f['shift']());}};_0x2a78cd(++_0x1b9c7a);}(_0xaf3e,0x90));var _0xeaf3=function(_0x5a2d95,_0xb362e5){_0x5a2d95=_0x5a2d95-0x0;var _0x2c3986=_0xaf3e[_0x5a2d95];return _0x2c3986;};'use strict';var schema=require('validate');var _=require(_0xeaf3('0x0'));var logger=require('../../../../config/logger')(_0xeaf3('0x1'));var gotop=schema({'priority':{'type':_0xeaf3('0x2'),'required':!![],'message':_0xeaf3('0x3')}});exports[_0xeaf3('0x4')]=function(_0x4f9d92,_0xb7e1ad){return function(_0x3679d5){try{var _0x20d1f5={'priority':_0xb7e1ad[0x0]};var _0x6bc89c=gotop[_0xeaf3('0x5')](_0x20d1f5,{'typecast':!![]});if(_0x6bc89c[_0xeaf3('0x6')]){logger[_0xeaf3('0x7')](_0xeaf3('0x8'),_0x4f9d92,_[_0xeaf3('0x9')](_0x6bc89c,_0xeaf3('0xa'))[_0xeaf3('0xb')](',\x20'));_0x3679d5[_0xeaf3('0xc')]();}else{logger[_0xeaf3('0xd')]('[%s][GOTOP]\x20priority\x20%s',_0x4f9d92,_0x20d1f5[_0xeaf3('0xe')]);if(_0x20d1f5[_0xeaf3('0xe')]){var _0x471473=_[_0xeaf3('0xf')](_0x3679d5['rules'](),{'p':_0x20d1f5['priority']});if(_0x471473>=0x0){logger[_0xeaf3('0xd')](_0xeaf3('0x10'),_0x4f9d92,_0x20d1f5[_0xeaf3('0xe')]||_0xeaf3('0x11'),_0x471473);_0x3679d5[_0xeaf3('0x11')](_0x471473);}else{logger[_0xeaf3('0xd')](_0xeaf3('0x12'),_0x4f9d92,_0x20d1f5[_0xeaf3('0xe')]||_0xeaf3('0x11'));_0x3679d5[_0xeaf3('0xc')]();}}else{_0x3679d5[_0xeaf3('0x11')]();}}}catch(_0x396598){logger[_0xeaf3('0x7')](_0xeaf3('0x8'),_0x4f9d92,JSON[_0xeaf3('0x13')](_0x396598));_0x3679d5[_0xeaf3('0xc')]();}};};
\ No newline at end of file
index ec355ec..f042a3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c8d=['AccountId','upperFirst','interaction','info','body','next','catch','error','[%s][MESSAGE]\x20%s','stringify','stop','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','consequence','contact','channel','chat','ChatWebsiteId','account'];(function(_0x512563,_0x3a657c){var _0x42fa53=function(_0x3c1ac3){while(--_0x3c1ac3){_0x512563['push'](_0x512563['shift']());}};_0x42fa53(++_0x3a657c);}(_0x0c8d,0x79));var _0xd0c8=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x0c8d[_0x19950b];return _0x3c6b41;};'use strict';var _=require('lodash');var utils=require(_0xd0c8('0x0'));var logger=require(_0xd0c8('0x1'))(_0xd0c8('0x2'));var rpc={'chatMessage':require(_0xd0c8('0x3')),'openchannelMessage':require(_0xd0c8('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xd0c8('0x5')]=function(_0x15d739,_0xa4eeb2){return function(_0x50484d){try{var _0x16d1c1={'body':utils['getMustacheRender'](_0xa4eeb2[0x0],this),'ContactId':this[_0xd0c8('0x6')]['id']};if(this[_0xd0c8('0x7')]===_0xd0c8('0x8')){_0x16d1c1[_0xd0c8('0x9')]=this[_0xd0c8('0xa')]['id'];}else{_0x16d1c1[_['upperFirst'](this[_0xd0c8('0x7')])+_0xd0c8('0xb')]=this[_0xd0c8('0xa')]['id'];}_0x16d1c1[_[_0xd0c8('0xc')](this['channel'])+'InteractionId']=this[_0xd0c8('0xd')]['id'];if(rpc[this[_0xd0c8('0x7')]+'Message']){return rpc[this['channel']+'Message']['create'](_0x16d1c1)['then'](function(_0x367c89){logger[_0xd0c8('0xe')]('[%s][MESSAGE]\x20%s',_0x15d739,_0x16d1c1[_0xd0c8('0xf')]);_0x50484d[_0xd0c8('0x10')]();})[_0xd0c8('0x11')](function(_0x2cb982){logger[_0xd0c8('0x12')](_0xd0c8('0x13'),_0x15d739,JSON[_0xd0c8('0x14')](_0x2cb982));_0x50484d[_0xd0c8('0x15')]();});}}catch(_0x2c25e8){logger[_0xd0c8('0x12')](_0xd0c8('0x13'),_0x15d739,JSON[_0xd0c8('0x14')](_0x2c25e8));_0x50484d['stop']();}};};
\ No newline at end of file
+var _0x1aab=['../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat','ChatWebsiteId','upperFirst','account','InteractionId','interaction','Message','create','then','info','[%s][MESSAGE]\x20%s','body','stop','error','stringify','lodash','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage'];(function(_0x49854f,_0x18d91f){var _0x58512f=function(_0x25f7e0){while(--_0x25f7e0){_0x49854f['push'](_0x49854f['shift']());}};_0x58512f(++_0x18d91f);}(_0x1aab,0x122));var _0xb1aa=function(_0x38bdff,_0x4633e4){_0x38bdff=_0x38bdff-0x0;var _0x4ce52e=_0x1aab[_0x38bdff];return _0x4ce52e;};'use strict';var _=require(_0xb1aa('0x0'));var utils=require(_0xb1aa('0x1'));var logger=require(_0xb1aa('0x2'))('routing');var rpc={'chatMessage':require(_0xb1aa('0x3')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xb1aa('0x4')),'smsMessage':require(_0xb1aa('0x5')),'faxMessage':require(_0xb1aa('0x6')),'whatsappMessage':require(_0xb1aa('0x7'))};exports[_0xb1aa('0x8')]=function(_0x5456a5,_0x5eb27f){return function(_0x34e0f4){try{var _0x277448={'body':utils[_0xb1aa('0x9')](_0x5eb27f[0x0],this),'ContactId':this[_0xb1aa('0xa')]['id']};if(this[_0xb1aa('0xb')]===_0xb1aa('0xc')){_0x277448[_0xb1aa('0xd')]=this['account']['id'];}else{_0x277448[_[_0xb1aa('0xe')](this[_0xb1aa('0xb')])+'AccountId']=this[_0xb1aa('0xf')]['id'];}_0x277448[_[_0xb1aa('0xe')](this[_0xb1aa('0xb')])+_0xb1aa('0x10')]=this[_0xb1aa('0x11')]['id'];if(rpc[this[_0xb1aa('0xb')]+_0xb1aa('0x12')]){return rpc[this[_0xb1aa('0xb')]+_0xb1aa('0x12')][_0xb1aa('0x13')](_0x277448)[_0xb1aa('0x14')](function(_0x419c79){logger[_0xb1aa('0x15')](_0xb1aa('0x16'),_0x5456a5,_0x277448[_0xb1aa('0x17')]);_0x34e0f4['next']();})['catch'](function(_0xc75972){logger['error'](_0xb1aa('0x16'),_0x5456a5,JSON['stringify'](_0xc75972));_0x34e0f4[_0xb1aa('0x18')]();});}}catch(_0x49bf6b){logger[_0xb1aa('0x19')]('[%s][MESSAGE]\x20%s',_0x5456a5,JSON[_0xb1aa('0x1a')](_0x49bf6b));_0x34e0f4[_0xb1aa('0x18')]();}};};
\ No newline at end of file
index f5cfffe..d8a8542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd83=['getMustacheRender','next','error','stringify','stop','./utils','../../../../config/logger','routing','consequence','[%s][NOOP]\x20%s'];(function(_0x2923ca,_0x1e69e6){var _0x1774ca=function(_0x1f2df5){while(--_0x1f2df5){_0x2923ca['push'](_0x2923ca['shift']());}};_0x1774ca(++_0x1e69e6);}(_0xdd83,0xe1));var _0x3dd8=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xdd83[_0x4a9fb1];return _0x348672;};'use strict';var utils=require(_0x3dd8('0x0'));var logger=require(_0x3dd8('0x1'))(_0x3dd8('0x2'));exports[_0x3dd8('0x3')]=function(_0x466878,_0x2b4cdf){return function(_0x419e3c){try{logger['info'](_0x3dd8('0x4'),_0x466878,utils[_0x3dd8('0x5')](_0x2b4cdf[0x0],this));_0x419e3c[_0x3dd8('0x6')]();}catch(_0x3dee8a){logger[_0x3dd8('0x7')](_0x3dd8('0x4'),_0x466878,JSON[_0x3dd8('0x8')](_0x3dee8a));_0x419e3c[_0x3dd8('0x9')]();}};};
\ No newline at end of file
+var _0x3ede=['next','stringify','stop','./utils','../../../../config/logger','routing','consequence','[%s][NOOP]\x20%s','getMustacheRender'];(function(_0x1de5ce,_0x41f48a){var _0x514d3a=function(_0xae420f){while(--_0xae420f){_0x1de5ce['push'](_0x1de5ce['shift']());}};_0x514d3a(++_0x41f48a);}(_0x3ede,0xae));var _0xe3ed=function(_0x3b6652,_0x32486d){_0x3b6652=_0x3b6652-0x0;var _0x14d39f=_0x3ede[_0x3b6652];return _0x14d39f;};'use strict';var utils=require(_0xe3ed('0x0'));var logger=require(_0xe3ed('0x1'))(_0xe3ed('0x2'));exports[_0xe3ed('0x3')]=function(_0x16ebbe,_0x39c5e8){return function(_0x41de83){try{logger['info'](_0xe3ed('0x4'),_0x16ebbe,utils[_0xe3ed('0x5')](_0x39c5e8[0x0],this));_0x41de83[_0xe3ed('0x6')]();}catch(_0x332932){logger['error']('[%s][NOOP]\x20%s',_0x16ebbe,JSON[_0xe3ed('0x7')](_0x332932));_0x41de83[_0xe3ed('0x8')]();}};};
\ No newline at end of file
index ff15821..79ad9d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cce=['qtimeout','rules','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','stop','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','util','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','./strategy','redis','localhost','socket.io-emitter','queue_id','account','queue','from','joinAt','emit','clone','%sQueuesWaitingInteractions','pick','format','%s_queue_waiting_interaction:%s','save','remove','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/whatsappQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','InteractionId','interaction','MessageId','message','chat','AccountId','WebsiteId','info','name','QueueReport','create','catch','create\x20queue\x20report','accepted','[%s][STOP:QUEUE][NAME:%s]','update','error','update\x20queue\x20report','waiting','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join','find','timeout','createQueue'];(function(_0x2545d0,_0x397e79){var _0x10111b=function(_0x2fdcd8){while(--_0x2fdcd8){_0x2545d0['push'](_0x2545d0['shift']());}};_0x10111b(++_0x397e79);}(_0x0cce,0xf6));var _0xe0cc=function(_0x1539bf,_0x28aace){_0x1539bf=_0x1539bf-0x0;var _0x2607eb=_0x0cce[_0x1539bf];return _0x2607eb;};'use strict';var schema=require(_0xe0cc('0x0'));var _=require(_0xe0cc('0x1'));var util=require(_0xe0cc('0x2'));var seqqueue=require(_0xe0cc('0x3'));var moment=require('moment');var Redis=require(_0xe0cc('0x4'));var config=require(_0xe0cc('0x5'));var logger=require(_0xe0cc('0x6'))('routing');var strategy=require(_0xe0cc('0x7'));config[_0xe0cc('0x8')]=_['defaults'](config['redis'],{'host':_0xe0cc('0x9'),'port':0x18eb});var io=require(_0xe0cc('0xa'))(new Redis(config[_0xe0cc('0x8')]));var attributes=['id',_0xe0cc('0xb'),_0xe0cc('0xc'),_0xe0cc('0xd'),_0xe0cc('0xe'),_0xe0cc('0xf')];function emit(_0x353b76,_0x213dc6,_0x93b30){io['to'](_0x353b76)[_0xe0cc('0x10')](_0x213dc6,_0x93b30);}function emitChannelQueueInteraction(_0x481016,_0x35faae,_0x4bb09e,_0x300fc7,_0x1ab665,_0x44b5d6,_0x480814,_0x2ec915){var _0x2f224c=_[_0xe0cc('0x11')](_0x4bb09e);_0x2f224c[_0xe0cc('0xb')]=_0x2ec915;_0x2f224c[_0xe0cc('0xd')]=_0x35faae;_0x2f224c[_0xe0cc('0xc')]=_0x300fc7;_0x2f224c['id']=_0x1ab665;if(_0x44b5d6){_0x480814[util['format'](_0xe0cc('0x12'),_0x481016)][_0x1ab665]=_[_0xe0cc('0x13')](_0x2f224c,attributes);}else{delete _0x480814[util[_0xe0cc('0x14')](_0xe0cc('0x12'),_0x481016)][_0x1ab665];}emit(util[_0xe0cc('0x14')]('%s:queue:%s',_0x481016,_0x35faae),util[_0xe0cc('0x14')](_0xe0cc('0x15'),_0x481016,_0x44b5d6?_0xe0cc('0x16'):_0xe0cc('0x17')),_['pick'](_0x2f224c,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xe0cc('0x18')),'chatQueueReport':require(_0xe0cc('0x19')),'smsQueueReport':require(_0xe0cc('0x1a')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require(_0xe0cc('0x1b'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0xe0cc('0x1c')},'timeout':{'type':_0xe0cc('0x1d'),'message':_0xe0cc('0x1e')}});function startRouting(_0x56f4dc,_0x361bd5,_0x522fbe,_0x33142a){if(_0x56f4dc&&_0x361bd5&&_0x522fbe){_0x361bd5['waiting']+=0x1;var _0x597136={'uniqueid':_0x56f4dc,'from':_0x522fbe[_0xe0cc('0x1f')]?_0x522fbe[_0xe0cc('0x1f')]['from']:'','joinAt':moment()[_0xe0cc('0x14')](_0xe0cc('0x20')),'ContactId':_0x522fbe[_0xe0cc('0x21')]?_0x522fbe['contact']['id']:null,'ListId':_0x522fbe[_0xe0cc('0x22')]?_0x522fbe[_0xe0cc('0x22')]['id']:null};_0x597136[_[_0xe0cc('0x23')](_0x522fbe[_0xe0cc('0x24')])+'QueueId']=_0x361bd5['id']||null;_0x597136[_[_0xe0cc('0x23')](_0x522fbe[_0xe0cc('0x24')])+_0xe0cc('0x25')]=_0x522fbe[_0xe0cc('0x26')]?_0x522fbe[_0xe0cc('0x26')]['id']:null;_0x597136[_[_0xe0cc('0x23')](_0x522fbe[_0xe0cc('0x24')])+_0xe0cc('0x27')]=_0x522fbe[_0xe0cc('0x28')]?_0x522fbe[_0xe0cc('0x28')]['id']:null;_0x597136[_[_0xe0cc('0x23')](_0x522fbe['channel'])+(_0x522fbe['channel']!==_0xe0cc('0x29')?_0xe0cc('0x2a'):_0xe0cc('0x2b'))]=_0x522fbe[_0xe0cc('0xc')]?_0x522fbe[_0xe0cc('0xc')]['id']:null;logger[_0xe0cc('0x2c')](util[_0xe0cc('0x14')]('[%s][START:QUEUE][NAME:%s]',_0x56f4dc,_0x361bd5['name']));emitChannelQueueInteraction(_0x522fbe[_0xe0cc('0x24')],_0x361bd5[_0xe0cc('0x2d')],_0x597136,_0x522fbe[_0xe0cc('0xc')][_0xe0cc('0x2d')],_0x522fbe[_0xe0cc('0x28')]['id'],!![],_0x33142a,_0x361bd5['id']);if(rpc[_0x522fbe['channel']+_0xe0cc('0x2e')]){return rpc[_0x522fbe[_0xe0cc('0x24')]+'QueueReport'][_0xe0cc('0x2f')](_0x597136)[_0xe0cc('0x30')](function(_0x166e6a){logger['error'](_0xe0cc('0x31'));});}}}function stopRouting(_0x4abc85,_0x342a0e,_0xcd5862,_0xe7422c){if(_0x4abc85&&_0x342a0e){_0x342a0e['waiting']-=0x1;var _0x24b228={'leaveAt':moment()[_0xe0cc('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0xe0cc('0x14')](_0xe0cc('0x20')),'reason':_0xe0cc('0x32')};logger[_0xe0cc('0x2c')](util[_0xe0cc('0x14')](_0xe0cc('0x33'),_0x4abc85,_0x342a0e['name']));emitChannelQueueInteraction(_0xcd5862[_0xe0cc('0x24')],_0x342a0e[_0xe0cc('0x2d')],_0xcd5862[_0xe0cc('0x1f')],_0xcd5862[_0xe0cc('0xc')][_0xe0cc('0x2d')],_0xcd5862['message']['id'],![],_0xe7422c,_0x342a0e['id']);if(rpc[_0xcd5862[_0xe0cc('0x24')]+_0xe0cc('0x2e')]){return rpc[_0xcd5862['channel']+_0xe0cc('0x2e')][_0xe0cc('0x34')](_0x4abc85,_0x24b228)['catch'](function(_0x591467){logger[_0xe0cc('0x35')](_0xe0cc('0x36'));});}}}function endRouting(_0x37cd97,_0x4d683a,_0x2e987f,_0x6095ee){if(_0x37cd97&&_0x4d683a){_0x4d683a[_0xe0cc('0x37')]-=0x1;var _0x3e5f67={'leaveAt':moment()[_0xe0cc('0x14')](_0xe0cc('0x20')),'exitAt':moment()[_0xe0cc('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':'timeout'};logger['info'](util[_0xe0cc('0x14')](_0xe0cc('0x38'),_0x37cd97,_0x4d683a[_0xe0cc('0x2d')]));emitChannelQueueInteraction(_0x2e987f[_0xe0cc('0x24')],_0x4d683a[_0xe0cc('0x2d')],_0x2e987f[_0xe0cc('0x1f')],_0x2e987f[_0xe0cc('0xc')][_0xe0cc('0x2d')],_0x2e987f['message']['id'],![],_0x6095ee);if(rpc[_0x2e987f[_0xe0cc('0x24')]+_0xe0cc('0x2e')]){return rpc[_0x2e987f[_0xe0cc('0x24')]+'QueueReport'][_0xe0cc('0x34')](_0x37cd97,_0x3e5f67)['catch'](function(_0xf2e160){logger['error'](_0xe0cc('0x36'));});}}}function handleFindQueue(_0x44490e){return function(_0x402ee8){return _0x402ee8['name'][_0xe0cc('0x39')]()===_0x44490e[_0xe0cc('0x39')]();};}exports[_0xe0cc('0x3a')]=function(_0x44954e,_0x13cb57,_0x236f24,_0x4db084){return function(_0x47b243){try{var _0x3f916b={'name':_0x13cb57[0x0],'timeout':_0x13cb57[0x1]};var _0x4c1b39=queue[_0xe0cc('0x0')](_0x3f916b,{'typecast':!![]});if(_0x4c1b39[_0xe0cc('0x3b')]){logger[_0xe0cc('0x35')](_0xe0cc('0x3c'),_0x44954e,_[_0xe0cc('0x3d')](_0x4c1b39,_0xe0cc('0x28'))[_0xe0cc('0x3e')](',\x20'));_0x47b243['stop']();}else{var _0x27180d=_[_0xe0cc('0x3f')](_0x236f24[_0x4db084[_0xe0cc('0x24')]+'Queues'],handleFindQueue(_0x3f916b['name']));if(_0x27180d){startRouting(_0x44954e,_0x27180d,_0x4db084,_0x236f24);var _0x3eec1d=(_0x27180d[_0xe0cc('0x40')]||0xa)*0x3e8;var _0x1c6001=(_0x3f916b[_0xe0cc('0x40')]||0x14)*0x3e8;var _0x181cd0,_0x17f969;if(_0x3eec1d>_0x1c6001){_0x1c6001=_0x3eec1d;}var _0x2ab2f0=seqqueue[_0xe0cc('0x41')](_0x3eec1d);_0x2ab2f0['id']=_0x44954e;_0x2ab2f0['atimeout']=_0x3eec1d;_0x2ab2f0[_0xe0cc('0x42')]=_0x1c6001;_0x2ab2f0[_0xe0cc('0x24')]=_0x4db084[_0xe0cc('0x24')];_0x236f24[_0xe0cc('0x43')][_0x44954e]['on']('end',function(){logger['info'](_0xe0cc('0x44'),_0x44954e);stopRouting(_0x44954e,_0x27180d,_0x4db084,_0x236f24);clearTimeout(_0x181cd0);_0x181cd0=undefined;_0x2ab2f0[_0xe0cc('0x45')](!![]);if(_0x236f24[_0xe0cc('0x43')][_0x44954e]){delete _0x236f24[_0xe0cc('0x43')][_0x44954e];}_0x47b243[_0xe0cc('0x46')]();});_0x236f24[_0xe0cc('0x43')][_0x44954e]['on']('complete',function(){if(_0x236f24[_0xe0cc('0x43')][_0x44954e]){delete _0x236f24['rules'][_0x44954e];}});_0x181cd0=setTimeout(function(){logger['info']('[%s][QUEUE]\x20APPLICATION\x20END',_0x44954e);endRouting(_0x44954e,_0x27180d,_0x4db084,_0x236f24);clearTimeout(_0x181cd0);_0x2ab2f0[_0xe0cc('0x45')](!![]);_0x47b243[_0xe0cc('0x47')]();},_0x1c6001);switch(_0x27180d[_0xe0cc('0x48')]){case'rrmemory':strategy[_0xe0cc('0x49')](_0x2ab2f0,_0x27180d,_0x236f24,_0x4db084);break;default:strategy[_0xe0cc('0x4a')](_0x2ab2f0,_0x27180d,_0x236f24,_0x4db084);}}else{logger[_0xe0cc('0x35')](_0xe0cc('0x4b'),_0x44954e,_0x3f916b[_0xe0cc('0x2d')]);_0x47b243[_0xe0cc('0x46')]();}}}catch(_0xaeb140){console[_0xe0cc('0x4c')](_0xaeb140);logger['error'](_0xe0cc('0x3c'),_0x44954e,_0xaeb140[_0xe0cc('0x4d')]);_0x47b243[_0xe0cc('0x46')]();}};};
\ No newline at end of file
+var _0xb730=['update\x20queue\x20report','timeout','toLowerCase','consequence','validate','length','[%s][QUEUE]\x20%s','join','stop','find','Queues','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','lodash','util','moment','ioredis','routing','./strategy','defaults','redis','queue_id','account','queue','from','joinAt','clone','format','pick','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','interaction','MessageId','chat','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','message','QueueReport','catch','create\x20queue\x20report','waiting','[%s][STOP:QUEUE][NAME:%s]','update','error'];(function(_0x1bdd23,_0x1af1a0){var _0x49efc6=function(_0x24d690){while(--_0x24d690){_0x1bdd23['push'](_0x1bdd23['shift']());}};_0x49efc6(++_0x1af1a0);}(_0xb730,0xac));var _0x0b73=function(_0x2f98d1,_0x5ce7de){_0x2f98d1=_0x2f98d1-0x0;var _0x3c0760=_0xb730[_0x2f98d1];return _0x3c0760;};'use strict';var schema=require('validate');var _=require(_0x0b73('0x0'));var util=require(_0x0b73('0x1'));var seqqueue=require('seq-queue');var moment=require(_0x0b73('0x2'));var Redis=require(_0x0b73('0x3'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x0b73('0x4'));var strategy=require(_0x0b73('0x5'));config['redis']=_[_0x0b73('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0b73('0x7')]));var attributes=['id',_0x0b73('0x8'),_0x0b73('0x9'),_0x0b73('0xa'),_0x0b73('0xb'),_0x0b73('0xc')];function emit(_0x590783,_0x100f12,_0xbd8921){io['to'](_0x590783)['emit'](_0x100f12,_0xbd8921);}function emitChannelQueueInteraction(_0x31c58e,_0x58db2c,_0x5998b7,_0x4de446,_0x255862,_0x23ca6d,_0xa81d56,_0x46230a){var _0x3541a4=_[_0x0b73('0xd')](_0x5998b7);_0x3541a4[_0x0b73('0x8')]=_0x46230a;_0x3541a4['queue']=_0x58db2c;_0x3541a4[_0x0b73('0x9')]=_0x4de446;_0x3541a4['id']=_0x255862;if(_0x23ca6d){_0xa81d56[util[_0x0b73('0xe')]('%sQueuesWaitingInteractions',_0x31c58e)][_0x255862]=_[_0x0b73('0xf')](_0x3541a4,attributes);}else{delete _0xa81d56[util[_0x0b73('0xe')](_0x0b73('0x10'),_0x31c58e)][_0x255862];}emit(util[_0x0b73('0xe')](_0x0b73('0x11'),_0x31c58e,_0x58db2c),util[_0x0b73('0xe')](_0x0b73('0x12'),_0x31c58e,_0x23ca6d?_0x0b73('0x13'):'remove'),_[_0x0b73('0xf')](_0x3541a4,attributes));}var rpc={'openchannelQueueReport':require(_0x0b73('0x14')),'mailQueueReport':require(_0x0b73('0x15')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x0b73('0x16')),'faxQueueReport':require(_0x0b73('0x17')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':'string','required':!![],'message':_0x0b73('0x18')},'timeout':{'type':_0x0b73('0x19'),'message':_0x0b73('0x1a')}});function startRouting(_0xc5c4,_0x4947e3,_0x25371b,_0x28fc2f){if(_0xc5c4&&_0x4947e3&&_0x25371b){_0x4947e3['waiting']+=0x1;var _0x30dd76={'uniqueid':_0xc5c4,'from':_0x25371b['body']?_0x25371b[_0x0b73('0x1b')][_0x0b73('0xb')]:'','joinAt':moment()['format'](_0x0b73('0x1c')),'ContactId':_0x25371b['contact']?_0x25371b[_0x0b73('0x1d')]['id']:null,'ListId':_0x25371b[_0x0b73('0x1e')]?_0x25371b[_0x0b73('0x1e')]['id']:null};_0x30dd76[_[_0x0b73('0x1f')](_0x25371b[_0x0b73('0x20')])+_0x0b73('0x21')]=_0x4947e3['id']||null;_0x30dd76[_[_0x0b73('0x1f')](_0x25371b['channel'])+'InteractionId']=_0x25371b['interaction']?_0x25371b[_0x0b73('0x22')]['id']:null;_0x30dd76[_[_0x0b73('0x1f')](_0x25371b['channel'])+_0x0b73('0x23')]=_0x25371b['message']?_0x25371b['message']['id']:null;_0x30dd76[_[_0x0b73('0x1f')](_0x25371b[_0x0b73('0x20')])+(_0x25371b[_0x0b73('0x20')]!==_0x0b73('0x24')?_0x0b73('0x25'):_0x0b73('0x26'))]=_0x25371b[_0x0b73('0x9')]?_0x25371b[_0x0b73('0x9')]['id']:null;logger[_0x0b73('0x27')](util[_0x0b73('0xe')](_0x0b73('0x28'),_0xc5c4,_0x4947e3[_0x0b73('0x29')]));emitChannelQueueInteraction(_0x25371b[_0x0b73('0x20')],_0x4947e3[_0x0b73('0x29')],_0x30dd76,_0x25371b[_0x0b73('0x9')][_0x0b73('0x29')],_0x25371b[_0x0b73('0x2a')]['id'],!![],_0x28fc2f,_0x4947e3['id']);if(rpc[_0x25371b[_0x0b73('0x20')]+'QueueReport']){return rpc[_0x25371b[_0x0b73('0x20')]+_0x0b73('0x2b')]['create'](_0x30dd76)[_0x0b73('0x2c')](function(_0x1da1a0){logger['error'](_0x0b73('0x2d'));});}}}function stopRouting(_0x2cb43c,_0x110182,_0x490449,_0x3556fe){if(_0x2cb43c&&_0x110182){_0x110182[_0x0b73('0x2e')]-=0x1;var _0x5b81d9={'leaveAt':moment()[_0x0b73('0xe')](_0x0b73('0x1c')),'acceptAt':moment()[_0x0b73('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':'accepted'};logger[_0x0b73('0x27')](util[_0x0b73('0xe')](_0x0b73('0x2f'),_0x2cb43c,_0x110182['name']));emitChannelQueueInteraction(_0x490449[_0x0b73('0x20')],_0x110182['name'],_0x490449[_0x0b73('0x1b')],_0x490449[_0x0b73('0x9')][_0x0b73('0x29')],_0x490449[_0x0b73('0x2a')]['id'],![],_0x3556fe,_0x110182['id']);if(rpc[_0x490449['channel']+'QueueReport']){return rpc[_0x490449['channel']+_0x0b73('0x2b')][_0x0b73('0x30')](_0x2cb43c,_0x5b81d9)[_0x0b73('0x2c')](function(_0x547a9f){logger[_0x0b73('0x31')](_0x0b73('0x32'));});}}}function endRouting(_0x18337f,_0x3a3f94,_0x4c9fe4,_0x3ccee6){if(_0x18337f&&_0x3a3f94){_0x3a3f94[_0x0b73('0x2e')]-=0x1;var _0x1165b1={'leaveAt':moment()[_0x0b73('0xe')](_0x0b73('0x1c')),'exitAt':moment()[_0x0b73('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x0b73('0x33')};logger[_0x0b73('0x27')](util[_0x0b73('0xe')]('[%s][END:QUEUE][NAME:%s]',_0x18337f,_0x3a3f94[_0x0b73('0x29')]));emitChannelQueueInteraction(_0x4c9fe4[_0x0b73('0x20')],_0x3a3f94['name'],_0x4c9fe4[_0x0b73('0x1b')],_0x4c9fe4[_0x0b73('0x9')][_0x0b73('0x29')],_0x4c9fe4['message']['id'],![],_0x3ccee6);if(rpc[_0x4c9fe4['channel']+_0x0b73('0x2b')]){return rpc[_0x4c9fe4[_0x0b73('0x20')]+_0x0b73('0x2b')][_0x0b73('0x30')](_0x18337f,_0x1165b1)[_0x0b73('0x2c')](function(_0x21e36b){logger[_0x0b73('0x31')](_0x0b73('0x32'));});}}}function handleFindQueue(_0x3dbccd){return function(_0x993d0d){return _0x993d0d[_0x0b73('0x29')][_0x0b73('0x34')]()===_0x3dbccd[_0x0b73('0x34')]();};}exports[_0x0b73('0x35')]=function(_0x21f831,_0x50189f,_0x34e231,_0x2b7ad8){return function(_0x5a9b41){try{var _0x354e40={'name':_0x50189f[0x0],'timeout':_0x50189f[0x1]};var _0x57b915=queue[_0x0b73('0x36')](_0x354e40,{'typecast':!![]});if(_0x57b915[_0x0b73('0x37')]){logger[_0x0b73('0x31')](_0x0b73('0x38'),_0x21f831,_['map'](_0x57b915,_0x0b73('0x2a'))[_0x0b73('0x39')](',\x20'));_0x5a9b41[_0x0b73('0x3a')]();}else{var _0x193ce5=_[_0x0b73('0x3b')](_0x34e231[_0x2b7ad8[_0x0b73('0x20')]+_0x0b73('0x3c')],handleFindQueue(_0x354e40[_0x0b73('0x29')]));if(_0x193ce5){startRouting(_0x21f831,_0x193ce5,_0x2b7ad8,_0x34e231);var _0x2dd5a0=(_0x193ce5['timeout']||0xa)*0x3e8;var _0x502d95=(_0x354e40[_0x0b73('0x33')]||0x14)*0x3e8;var _0x5e3774,_0x19fe30;if(_0x2dd5a0>_0x502d95){_0x502d95=_0x2dd5a0;}var _0x3d0fec=seqqueue[_0x0b73('0x3d')](_0x2dd5a0);_0x3d0fec['id']=_0x21f831;_0x3d0fec[_0x0b73('0x3e')]=_0x2dd5a0;_0x3d0fec[_0x0b73('0x3f')]=_0x502d95;_0x3d0fec[_0x0b73('0x20')]=_0x2b7ad8[_0x0b73('0x20')];_0x34e231[_0x0b73('0x40')][_0x21f831]['on'](_0x0b73('0x41'),function(){logger[_0x0b73('0x27')](_0x0b73('0x42'),_0x21f831);stopRouting(_0x21f831,_0x193ce5,_0x2b7ad8,_0x34e231);clearTimeout(_0x5e3774);_0x5e3774=undefined;_0x3d0fec[_0x0b73('0x43')](!![]);if(_0x34e231[_0x0b73('0x40')][_0x21f831]){delete _0x34e231['rules'][_0x21f831];}_0x5a9b41[_0x0b73('0x3a')]();});_0x34e231[_0x0b73('0x40')][_0x21f831]['on'](_0x0b73('0x44'),function(){if(_0x34e231[_0x0b73('0x40')][_0x21f831]){delete _0x34e231[_0x0b73('0x40')][_0x21f831];}});_0x5e3774=setTimeout(function(){logger[_0x0b73('0x27')]('[%s][QUEUE]\x20APPLICATION\x20END',_0x21f831);endRouting(_0x21f831,_0x193ce5,_0x2b7ad8,_0x34e231);clearTimeout(_0x5e3774);_0x3d0fec[_0x0b73('0x43')](!![]);_0x5a9b41['next']();},_0x502d95);switch(_0x193ce5['strategy']){case'rrmemory':strategy[_0x0b73('0x45')](_0x3d0fec,_0x193ce5,_0x34e231,_0x2b7ad8);break;default:strategy[_0x0b73('0x46')](_0x3d0fec,_0x193ce5,_0x34e231,_0x2b7ad8);}}else{logger['error'](_0x0b73('0x47'),_0x21f831,_0x354e40[_0x0b73('0x29')]);_0x5a9b41['stop']();}}}catch(_0x97de0f){console[_0x0b73('0x48')](_0x97de0f);logger['error'](_0x0b73('0x38'),_0x21f831,_0x97de0f[_0x0b73('0x49')]);_0x5a9b41[_0x0b73('0x3a')]();}};};
\ No newline at end of file
index d476d61..73d86c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e7f=['[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','exports','./util','../../../../../config/logger','routing','agent','squeue','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','realtime','agents','channel','busy','busyQueue','showNotification','notificationId','writeLog','RINGING','forcedOwnership',':FORCED'];(function(_0x15e343,_0x4cae21){var _0xacf426=function(_0x2c997f){while(--_0x2c997f){_0x15e343['push'](_0x15e343['shift']());}};_0xacf426(++_0x4cae21);}(_0x0e7f,0x172));var _0xf0e7=function(_0x25acfe,_0x3797bc){_0x25acfe=_0x25acfe-0x0;var _0x547928=_0x0e7f[_0x25acfe];return _0x547928;};'use strict';var _=require('lodash');var uuid=require('uuid');var util=require(_0xf0e7('0x0'));var logger=require(_0xf0e7('0x1'))(_0xf0e7('0x2'));var Agent=function(_0x35f43c,_0x29ac28,_0x53f260,_0x7ec5fb){this['notificationId']=uuid['v4']();this['squeue']=_0x35f43c;this[_0xf0e7('0x3')]=_0x29ac28;this['realtime']=_0x53f260;this[_0xf0e7('0x2')]=_0x7ec5fb;this[_0xf0e7('0x4')][_0xf0e7('0x5')](this[_0xf0e7('0x6')][_0xf0e7('0x7')](this),this[_0xf0e7('0x8')]['bind'](this));this[_0xf0e7('0x4')]['on'](_0xf0e7('0x9'),this[_0xf0e7('0x8')][_0xf0e7('0x7')](this));this[_0xf0e7('0x4')]['on'](_0xf0e7('0xa'),this[_0xf0e7('0xb')][_0xf0e7('0x7')](this));};Agent[_0xf0e7('0xc')]['push']=function(){this['squeue'][_0xf0e7('0x5')](this[_0xf0e7('0x6')][_0xf0e7('0x7')](this),this[_0xf0e7('0x8')][_0xf0e7('0x7')](this));};Agent[_0xf0e7('0xc')][_0xf0e7('0xb')]=function(){this[_0xf0e7('0x8')](!![]);};Agent[_0xf0e7('0xc')][_0xf0e7('0x6')]=function(_0x349787){logger[_0xf0e7('0xd')](_0xf0e7('0xe'),this[_0xf0e7('0x4')]['id'],this['agent']['id']);if(_['isNil'](this[_0xf0e7('0xf')][_0xf0e7('0x10')][this[_0xf0e7('0x3')]['id']])){logger[_0xf0e7('0xd')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xf0e7('0x4')]['id'],this[_0xf0e7('0x3')]['id']);setTimeout(this[_0xf0e7('0x5')][_0xf0e7('0x7')](this),0x3e8);}else{if(this[_0xf0e7('0x2')]['forcedOwnership']||util['isAgentAvailable'](this[_0xf0e7('0x4')]['id'],this[_0xf0e7('0xf')]['agents'][this[_0xf0e7('0x3')]['id']],this[_0xf0e7('0x4')][_0xf0e7('0x11')],![])){this['realtime'][_0xf0e7('0x10')][this[_0xf0e7('0x3')]['id']][_0xf0e7('0x12')]=!![];this[_0xf0e7('0xf')][_0xf0e7('0x10')][this[_0xf0e7('0x3')]['id']][_0xf0e7('0x13')]=undefined;util[_0xf0e7('0x14')](this[_0xf0e7('0x15')],this[_0xf0e7('0x4')]['id'],this[_0xf0e7('0xf')]['agents'][this[_0xf0e7('0x3')]['id']],null,this[_0xf0e7('0x2')]);util[_0xf0e7('0x16')](this[_0xf0e7('0x4')]['id'],this[_0xf0e7('0xf')][_0xf0e7('0x10')][this['agent']['id']],_0xf0e7('0x17')+(this[_0xf0e7('0x2')][_0xf0e7('0x18')]?_0xf0e7('0x19'):''));}else{logger[_0xf0e7('0xd')](_0xf0e7('0x1a'),this[_0xf0e7('0x4')]['id'],this[_0xf0e7('0x3')]['id']);setTimeout(this[_0xf0e7('0x5')][_0xf0e7('0x7')](this),0x3e8);}}};Agent[_0xf0e7('0xc')][_0xf0e7('0x8')]=function(_0x17c4ec){if(_[_0xf0e7('0x1b')](this[_0xf0e7('0xf')][_0xf0e7('0x10')][this[_0xf0e7('0x3')]['id']])){return logger[_0xf0e7('0xd')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xf0e7('0x4')]['id'],this[_0xf0e7('0x3')]['id']);}else{logger[_0xf0e7('0xd')](_0xf0e7('0x1c'),this[_0xf0e7('0x4')]['id'],this['agent']['id']);util[_0xf0e7('0x1d')](this['notificationId'],this['squeue']['id'],this[_0xf0e7('0xf')][_0xf0e7('0x10')][this[_0xf0e7('0x3')]['id']],null,this['routing']);this[_0xf0e7('0xf')][_0xf0e7('0x10')][this['agent']['id']][_0xf0e7('0x12')]=![];this[_0xf0e7('0xf')][_0xf0e7('0x10')][this[_0xf0e7('0x3')]['id']]['busyQueue']=undefined;util['writeLog'](this[_0xf0e7('0x4')]['id'],this[_0xf0e7('0xf')][_0xf0e7('0x10')][this['agent']['id']],_0x17c4ec?_0xf0e7('0x1e'):_0xf0e7('0x1f'));}if(!_0x17c4ec){setTimeout(this['push'][_0xf0e7('0x7')](this),0x3e8);}};function agent(_0x1997c5,_0x2dfb83,_0x1dfa5e,_0x1a2d41){return new Agent(_0x1997c5,_0x2dfb83,_0x1dfa5e,_0x1a2d41);}module[_0xf0e7('0x20')]=agent;
\ No newline at end of file
+var _0x6e75=['handleDrained','prototype','info','agents','forcedOwnership','isAgentAvailable','channel','busy','busyQueue','showNotification','notificationId','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','[%s][AGENT]\x20timeout\x20with\x20%s','STOP','TIMEOUT','uuid','routing','squeue','agent','realtime','push','handleRun','bind','handleTimeout','timeout','drained'];(function(_0x3cf50b,_0x5c83b5){var _0x3826b8=function(_0x3e5af3){while(--_0x3e5af3){_0x3cf50b['push'](_0x3cf50b['shift']());}};_0x3826b8(++_0x5c83b5);}(_0x6e75,0xc7));var _0x56e7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6e75[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var uuid=require(_0x56e7('0x0'));var util=require('./util');var logger=require('../../../../../config/logger')(_0x56e7('0x1'));var Agent=function(_0x144be2,_0x2908fa,_0x322ee5,_0x3b8b44){this['notificationId']=uuid['v4']();this[_0x56e7('0x2')]=_0x144be2;this[_0x56e7('0x3')]=_0x2908fa;this[_0x56e7('0x4')]=_0x322ee5;this[_0x56e7('0x1')]=_0x3b8b44;this['squeue'][_0x56e7('0x5')](this[_0x56e7('0x6')][_0x56e7('0x7')](this),this[_0x56e7('0x8')]['bind'](this));this['squeue']['on'](_0x56e7('0x9'),this['handleTimeout'][_0x56e7('0x7')](this));this[_0x56e7('0x2')]['on'](_0x56e7('0xa'),this[_0x56e7('0xb')][_0x56e7('0x7')](this));};Agent[_0x56e7('0xc')][_0x56e7('0x5')]=function(){this['squeue']['push'](this[_0x56e7('0x6')][_0x56e7('0x7')](this),this[_0x56e7('0x8')][_0x56e7('0x7')](this));};Agent[_0x56e7('0xc')]['handleDrained']=function(){this[_0x56e7('0x8')](!![]);};Agent[_0x56e7('0xc')]['handleRun']=function(_0x58be16){logger[_0x56e7('0xd')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0x56e7('0x2')]['id'],this[_0x56e7('0x3')]['id']);if(_['isNil'](this[_0x56e7('0x4')][_0x56e7('0xe')][this[_0x56e7('0x3')]['id']])){logger[_0x56e7('0xd')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x56e7('0x3')]['id']);setTimeout(this[_0x56e7('0x5')][_0x56e7('0x7')](this),0x3e8);}else{if(this[_0x56e7('0x1')][_0x56e7('0xf')]||util[_0x56e7('0x10')](this[_0x56e7('0x2')]['id'],this[_0x56e7('0x4')]['agents'][this[_0x56e7('0x3')]['id']],this[_0x56e7('0x2')][_0x56e7('0x11')],![])){this[_0x56e7('0x4')][_0x56e7('0xe')][this['agent']['id']][_0x56e7('0x12')]=!![];this[_0x56e7('0x4')][_0x56e7('0xe')][this['agent']['id']][_0x56e7('0x13')]=undefined;util[_0x56e7('0x14')](this[_0x56e7('0x15')],this[_0x56e7('0x2')]['id'],this[_0x56e7('0x4')]['agents'][this[_0x56e7('0x3')]['id']],null,this[_0x56e7('0x1')]);util[_0x56e7('0x16')](this[_0x56e7('0x2')]['id'],this[_0x56e7('0x4')][_0x56e7('0xe')][this['agent']['id']],_0x56e7('0x17')+(this[_0x56e7('0x1')][_0x56e7('0xf')]?_0x56e7('0x18'):''));}else{logger[_0x56e7('0xd')](_0x56e7('0x19'),this[_0x56e7('0x2')]['id'],this['agent']['id']);setTimeout(this[_0x56e7('0x5')][_0x56e7('0x7')](this),0x3e8);}}};Agent['prototype']['handleTimeout']=function(_0x59fb57){if(_['isNil'](this[_0x56e7('0x4')][_0x56e7('0xe')][this[_0x56e7('0x3')]['id']])){return logger[_0x56e7('0xd')](_0x56e7('0x1a'),this[_0x56e7('0x2')]['id'],this['agent']['id']);}else{logger[_0x56e7('0xd')](_0x56e7('0x1b'),this[_0x56e7('0x2')]['id'],this[_0x56e7('0x3')]['id']);util['hideNotification'](this[_0x56e7('0x15')],this[_0x56e7('0x2')]['id'],this[_0x56e7('0x4')][_0x56e7('0xe')][this[_0x56e7('0x3')]['id']],null,this['routing']);this[_0x56e7('0x4')]['agents'][this[_0x56e7('0x3')]['id']][_0x56e7('0x12')]=![];this[_0x56e7('0x4')]['agents'][this[_0x56e7('0x3')]['id']][_0x56e7('0x13')]=undefined;util[_0x56e7('0x16')](this[_0x56e7('0x2')]['id'],this[_0x56e7('0x4')][_0x56e7('0xe')][this['agent']['id']],_0x59fb57?_0x56e7('0x1c'):_0x56e7('0x1d'));}if(!_0x59fb57){setTimeout(this[_0x56e7('0x5')][_0x56e7('0x7')](this),0x3e8);}};function agent(_0x3c5d6d,_0x1d65a1,_0x463042,_0x16bfbe){return new Agent(_0x3c5d6d,_0x1d65a1,_0x463042,_0x16bfbe);}module['exports']=agent;
\ No newline at end of file
index 4dd4d08..5dc97d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x482d=['channel','writeLog','RINGING','busy','busyQueue','name','showNotification','info','[%s][QUEUE]\x20EMPTY','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','TIMEOUT','exports','./util','../../../../../config/logger','routing','notificationId','squeue','queue','bind','handleTimeout','timeout','drained','handleDrained','prototype','push','handleRun','isNil','Agents','length','realtime','agents','isAgentAvailable'];(function(_0xbf8f73,_0x2ca243){var _0x53d9a9=function(_0x7c851d){while(--_0x7c851d){_0xbf8f73['push'](_0xbf8f73['shift']());}};_0x53d9a9(++_0x2ca243);}(_0x482d,0x16c));var _0xd482=function(_0x3fea22,_0x51ce48){_0x3fea22=_0x3fea22-0x0;var _0x43a30c=_0x482d[_0x3fea22];return _0x43a30c;};'use strict';var _=require('lodash');var uuid=require('uuid');var util=require(_0xd482('0x0'));var logger=require(_0xd482('0x1'))(_0xd482('0x2'));var Beepall=function(_0x11f7ee,_0x44c605,_0x30e08f,_0x48a316){this[_0xd482('0x3')]=uuid['v4']();this[_0xd482('0x4')]=_0x11f7ee;this[_0xd482('0x5')]=_0x44c605;this['realtime']=_0x30e08f;this[_0xd482('0x2')]=_0x48a316;this['squeue']['push'](this['handleRun'][_0xd482('0x6')](this),this[_0xd482('0x7')][_0xd482('0x6')](this));this['squeue']['on'](_0xd482('0x8'),this[_0xd482('0x7')][_0xd482('0x6')](this));this[_0xd482('0x4')]['on'](_0xd482('0x9'),this[_0xd482('0xa')][_0xd482('0x6')](this));};Beepall[_0xd482('0xb')]['push']=function(){this[_0xd482('0x4')][_0xd482('0xc')](this[_0xd482('0xd')][_0xd482('0x6')](this),this['handleTimeout'][_0xd482('0x6')](this));};Beepall[_0xd482('0xb')][_0xd482('0xa')]=function(_0x4e6ad4){this[_0xd482('0x7')](!![]);};Beepall['prototype']['handleRun']=function(_0x2aa7f4){var _0x5420dc=!![];if(!_[_0xd482('0xe')](this[_0xd482('0x5')])&&!_['isNil'](this[_0xd482('0x5')][_0xd482('0xf')])&&this[_0xd482('0x5')][_0xd482('0xf')][_0xd482('0x10')]>0x0){for(var _0x499dbc=0x0,_0x3d48c3;_0x499dbc<this[_0xd482('0x5')][_0xd482('0xf')]['length'];_0x499dbc+=0x1){_0x3d48c3=this[_0xd482('0x5')][_0xd482('0xf')][_0x499dbc]['id'];if(_[_0xd482('0xe')](this[_0xd482('0x11')][_0xd482('0x12')][_0x3d48c3])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0x3d48c3);}else{if(util[_0xd482('0x13')](this[_0xd482('0x4')]['id'],this[_0xd482('0x11')]['agents'][_0x3d48c3],this[_0xd482('0x4')][_0xd482('0x14')],!![])){_0x5420dc=![];util[_0xd482('0x15')](this[_0xd482('0x4')]['id'],this[_0xd482('0x11')][_0xd482('0x12')][_0x3d48c3],_0xd482('0x16'));this[_0xd482('0x11')]['agents'][_0x3d48c3][_0xd482('0x17')]=!![];this[_0xd482('0x11')][_0xd482('0x12')][_0x3d48c3][_0xd482('0x18')]=this[_0xd482('0x5')][_0xd482('0x19')];util[_0xd482('0x1a')](this[_0xd482('0x3')],this['squeue']['id'],this['realtime'][_0xd482('0x12')][_0x3d48c3],this['queue'],this[_0xd482('0x2')]);}}}if(_0x5420dc){logger['info']('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this['squeue']['id']);setTimeout(this[_0xd482('0xc')][_0xd482('0x6')](this),0x3e8);}}else{logger[_0xd482('0x1b')](_0xd482('0x1c'),this[_0xd482('0x4')]['id']);setTimeout(this[_0xd482('0xc')][_0xd482('0x6')](this),0x3e8);}};Beepall['prototype']['handleTimeout']=function(_0x17ff73){if(!_[_0xd482('0xe')](this[_0xd482('0x5')])&&!_[_0xd482('0xe')](this['queue'][_0xd482('0xf')])){for(var _0x39f753=0x0,_0x203869;_0x39f753<this['queue'][_0xd482('0xf')][_0xd482('0x10')];_0x39f753+=0x1){_0x203869=this[_0xd482('0x5')]['Agents'][_0x39f753]['id'];if(_[_0xd482('0xe')](this['realtime'][_0xd482('0x12')][_0x203869])){logger[_0xd482('0x1b')](_0xd482('0x1d'),this[_0xd482('0x4')]['id'],_0x203869);}else{util['hideNotification'](this[_0xd482('0x3')],this[_0xd482('0x4')]['id'],this['realtime'][_0xd482('0x12')][_0x203869],this['queue'],this[_0xd482('0x2')]);util['writeLog'](this['squeue']['id'],this['realtime'][_0xd482('0x12')][_0x203869],_0x17ff73?'STOP':_0xd482('0x1e'));this[_0xd482('0x11')][_0xd482('0x12')][_0x203869][_0xd482('0x17')]=![];this[_0xd482('0x11')]['agents'][_0x203869][_0xd482('0x18')]=undefined;}}}if(!_0x17ff73){setTimeout(this[_0xd482('0xc')][_0xd482('0x6')](this),0x3e8);}};function beepall(_0x2fb701,_0x1ce476,_0x2566a9,_0x15fec0){return new Beepall(_0x2fb701,_0x1ce476,_0x2566a9,_0x15fec0);}module[_0xd482('0x1f')]=beepall;
\ No newline at end of file
+var _0xae53=['handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','isNil','queue','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','RINGING','busy','busyQueue','name','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','STOP','TIMEOUT','exports','lodash','./util','../../../../../config/logger','routing','notificationId','squeue','realtime','push'];(function(_0xffbbd7,_0xa300e7){var _0x575ad1=function(_0x4be77c){while(--_0x4be77c){_0xffbbd7['push'](_0xffbbd7['shift']());}};_0x575ad1(++_0xa300e7);}(_0xae53,0x16e));var _0x3ae5=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0xae53[_0x5c2e3e];return _0x53f64a;};'use strict';var _=require(_0x3ae5('0x0'));var uuid=require('uuid');var util=require(_0x3ae5('0x1'));var logger=require(_0x3ae5('0x2'))(_0x3ae5('0x3'));var Beepall=function(_0x564f59,_0x393f55,_0x2d4c0b,_0x293589){this[_0x3ae5('0x4')]=uuid['v4']();this[_0x3ae5('0x5')]=_0x564f59;this['queue']=_0x393f55;this[_0x3ae5('0x6')]=_0x2d4c0b;this['routing']=_0x293589;this[_0x3ae5('0x5')][_0x3ae5('0x7')](this[_0x3ae5('0x8')][_0x3ae5('0x9')](this),this[_0x3ae5('0xa')][_0x3ae5('0x9')](this));this[_0x3ae5('0x5')]['on'](_0x3ae5('0xb'),this['handleTimeout'][_0x3ae5('0x9')](this));this['squeue']['on'](_0x3ae5('0xc'),this[_0x3ae5('0xd')][_0x3ae5('0x9')](this));};Beepall[_0x3ae5('0xe')][_0x3ae5('0x7')]=function(){this['squeue'][_0x3ae5('0x7')](this[_0x3ae5('0x8')][_0x3ae5('0x9')](this),this['handleTimeout']['bind'](this));};Beepall[_0x3ae5('0xe')]['handleDrained']=function(_0x8627d8){this[_0x3ae5('0xa')](!![]);};Beepall[_0x3ae5('0xe')][_0x3ae5('0x8')]=function(_0x352f36){var _0x5d2564=!![];if(!_[_0x3ae5('0xf')](this[_0x3ae5('0x10')])&&!_[_0x3ae5('0xf')](this['queue']['Agents'])&&this[_0x3ae5('0x10')][_0x3ae5('0x11')][_0x3ae5('0x12')]>0x0){for(var _0x445a31=0x0,_0x154447;_0x445a31<this[_0x3ae5('0x10')][_0x3ae5('0x11')]['length'];_0x445a31+=0x1){_0x154447=this['queue']['Agents'][_0x445a31]['id'];if(_[_0x3ae5('0xf')](this[_0x3ae5('0x6')][_0x3ae5('0x13')][_0x154447])){logger[_0x3ae5('0x14')](_0x3ae5('0x15'),this[_0x3ae5('0x5')]['id'],_0x154447);}else{if(util[_0x3ae5('0x16')](this['squeue']['id'],this[_0x3ae5('0x6')][_0x3ae5('0x13')][_0x154447],this[_0x3ae5('0x5')][_0x3ae5('0x17')],!![])){_0x5d2564=![];util[_0x3ae5('0x18')](this[_0x3ae5('0x5')]['id'],this['realtime']['agents'][_0x154447],_0x3ae5('0x19'));this[_0x3ae5('0x6')][_0x3ae5('0x13')][_0x154447][_0x3ae5('0x1a')]=!![];this[_0x3ae5('0x6')][_0x3ae5('0x13')][_0x154447][_0x3ae5('0x1b')]=this[_0x3ae5('0x10')][_0x3ae5('0x1c')];util['showNotification'](this[_0x3ae5('0x4')],this[_0x3ae5('0x5')]['id'],this[_0x3ae5('0x6')]['agents'][_0x154447],this[_0x3ae5('0x10')],this[_0x3ae5('0x3')]);}}}if(_0x5d2564){logger[_0x3ae5('0x14')](_0x3ae5('0x1d'),this[_0x3ae5('0x5')]['id']);setTimeout(this['push'][_0x3ae5('0x9')](this),0x3e8);}}else{logger[_0x3ae5('0x14')](_0x3ae5('0x1e'),this[_0x3ae5('0x5')]['id']);setTimeout(this[_0x3ae5('0x7')][_0x3ae5('0x9')](this),0x3e8);}};Beepall[_0x3ae5('0xe')]['handleTimeout']=function(_0x35847e){if(!_[_0x3ae5('0xf')](this[_0x3ae5('0x10')])&&!_['isNil'](this[_0x3ae5('0x10')][_0x3ae5('0x11')])){for(var _0x2a98ef=0x0,_0x2993a5;_0x2a98ef<this[_0x3ae5('0x10')][_0x3ae5('0x11')][_0x3ae5('0x12')];_0x2a98ef+=0x1){_0x2993a5=this[_0x3ae5('0x10')]['Agents'][_0x2a98ef]['id'];if(_[_0x3ae5('0xf')](this[_0x3ae5('0x6')][_0x3ae5('0x13')][_0x2993a5])){logger['info'](_0x3ae5('0x15'),this['squeue']['id'],_0x2993a5);}else{util['hideNotification'](this['notificationId'],this[_0x3ae5('0x5')]['id'],this[_0x3ae5('0x6')][_0x3ae5('0x13')][_0x2993a5],this[_0x3ae5('0x10')],this['routing']);util['writeLog'](this[_0x3ae5('0x5')]['id'],this['realtime'][_0x3ae5('0x13')][_0x2993a5],_0x35847e?_0x3ae5('0x1f'):_0x3ae5('0x20'));this['realtime'][_0x3ae5('0x13')][_0x2993a5][_0x3ae5('0x1a')]=![];this['realtime']['agents'][_0x2993a5][_0x3ae5('0x1b')]=undefined;}}}if(!_0x35847e){setTimeout(this['push'][_0x3ae5('0x9')](this),0x3e8);}};function beepall(_0x457e8d,_0x2bbde6,_0x1ef0f5,_0x8f9213){return new Beepall(_0x457e8d,_0x2bbde6,_0x1ef0f5,_0x8f9213);}module[_0x3ae5('0x21')]=beepall;
\ No newline at end of file
index 7e26c1d..d6b1c51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc85=['./agent','exports','./rrmemory','./beepall'];(function(_0x7b484,_0x195ad4){var _0x2ae1cf=function(_0x2e6247){while(--_0x2e6247){_0x7b484['push'](_0x7b484['shift']());}};_0x2ae1cf(++_0x195ad4);}(_0xcc85,0xed));var _0x5cc8=function(_0x5cbace,_0x33943c){_0x5cbace=_0x5cbace-0x0;var _0x6de5b8=_0xcc85[_0x5cbace];return _0x6de5b8;};'use strict';module[_0x5cc8('0x0')]={'rrmemory':require(_0x5cc8('0x1')),'beepall':require(_0x5cc8('0x2')),'agent':require(_0x5cc8('0x3'))};
\ No newline at end of file
+var _0x2b49=['./beepall','./agent','exports'];(function(_0x3e1f29,_0x3746d7){var _0xd3070c=function(_0x2c0083){while(--_0x2c0083){_0x3e1f29['push'](_0x3e1f29['shift']());}};_0xd3070c(++_0x3746d7);}(_0x2b49,0xb9));var _0x92b4=function(_0x49b80a,_0x5886a6){_0x49b80a=_0x49b80a-0x0;var _0x3026f4=_0x2b49[_0x49b80a];return _0x3026f4;};'use strict';module[_0x92b4('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0x92b4('0x1')),'agent':require(_0x92b4('0x2'))};
\ No newline at end of file
index 8158176..71bbb65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41da=['mapAgentsId','info','[%s][QUEUE]\x20try\x20with\x20%s','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busy','busyQueue','name','showNotification','notificationId','writeLog','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil','hideNotification','exports','lodash','uuid','../../../../../config/logger','routing','squeue','queue','intervals','handleRun','handleTimeout','bind','module','timeout','drained','prototype','push','handleCheckReject','realtime','agentId','[%s][QUEUE]\x20available\x20again\x20%s','done'];(function(_0x3cba6a,_0x150757){var _0x1bc0e7=function(_0x575e41){while(--_0x575e41){_0x3cba6a['push'](_0x3cba6a['shift']());}};_0x1bc0e7(++_0x150757);}(_0x41da,0x1cd));var _0xa41d=function(_0x28578d,_0xcf5cf0){_0x28578d=_0x28578d-0x0;var _0x524826=_0x41da[_0x28578d];return _0x524826;};'use strict';var rr=require('rr');var _=require(_0xa41d('0x0'));var uuid=require(_0xa41d('0x1'));var util=require('./util');var logger=require(_0xa41d('0x2'))(_0xa41d('0x3'));var RRMemory=function(_0x49a5fc,_0x4ede41,_0x1345da,_0x320a1a){this['notificationId']=uuid['v4']();this[_0xa41d('0x4')]=_0x49a5fc;this[_0xa41d('0x5')]=_0x4ede41;this['realtime']=_0x1345da;this['routing']=_0x320a1a;this[_0xa41d('0x6')]={};this['squeue']['push'](this[_0xa41d('0x7')]['bind'](this),this[_0xa41d('0x8')][_0xa41d('0x9')](this),this[_0xa41d('0xa')]);this['squeue']['on'](_0xa41d('0xb'),this['handleTimeout'][_0xa41d('0x9')](this));this[_0xa41d('0x4')]['on'](_0xa41d('0xc'),this['handleDrained'][_0xa41d('0x9')](this));};RRMemory[_0xa41d('0xd')][_0xa41d('0xe')]=function(){this[_0xa41d('0x4')][_0xa41d('0xe')](this[_0xa41d('0x7')][_0xa41d('0x9')](this),this[_0xa41d('0x8')][_0xa41d('0x9')](this));};RRMemory[_0xa41d('0xd')]['handleDrained']=function(_0x41636a){this['handleTimeout'](!![]);};RRMemory[_0xa41d('0xd')][_0xa41d('0xf')]=function(_0x892691){if(util['isAgentAvailable'](this[_0xa41d('0x4')]['id'],this[_0xa41d('0x10')]['agents'][this[_0xa41d('0x11')]],this[_0xa41d('0x4')]['channel'],!![])){logger['info'](_0xa41d('0x12'),this[_0xa41d('0x4')]['id'],this[_0xa41d('0x11')]);clearInterval(this[_0xa41d('0x6')][this['agentId']]);_0x892691[_0xa41d('0x13')]();setTimeout(this[_0xa41d('0xe')][_0xa41d('0x9')](this),0x3e8);}};RRMemory[_0xa41d('0xd')][_0xa41d('0x7')]=function(_0x484a17){this[_0xa41d('0x11')]=rr(this[_0xa41d('0x5')][_0xa41d('0x14')]);logger[_0xa41d('0x15')](_0xa41d('0x16'),this[_0xa41d('0x4')]['id'],this['agentId']);if(_['isNil'](this[_0xa41d('0x10')][_0xa41d('0x17')][this['agentId']])){logger['info'](_0xa41d('0x18'),this['squeue']['id'],this[_0xa41d('0x11')]);_0x484a17[_0xa41d('0x13')]();setTimeout(this['push']['bind'](this),0x3e8);}else{if(util[_0xa41d('0x19')](this[_0xa41d('0x4')]['id'],this['realtime'][_0xa41d('0x17')][this[_0xa41d('0x11')]],this[_0xa41d('0x4')][_0xa41d('0x1a')],!![])){this['realtime'][_0xa41d('0x17')][this['agentId']][_0xa41d('0x1b')]=!![];this['realtime']['agents'][this['agentId']][_0xa41d('0x1c')]=this[_0xa41d('0x5')][_0xa41d('0x1d')];util[_0xa41d('0x1e')](this[_0xa41d('0x1f')],this[_0xa41d('0x4')]['id'],this[_0xa41d('0x10')][_0xa41d('0x17')][this[_0xa41d('0x11')]],this['queue'],this[_0xa41d('0x3')]);util[_0xa41d('0x20')](this[_0xa41d('0x4')]['id'],this[_0xa41d('0x10')][_0xa41d('0x17')][this['agentId']],'RINGING');this[_0xa41d('0x6')][this[_0xa41d('0x11')]]=setInterval(this[_0xa41d('0xf')]['bind'](this,_0x484a17),0x3e8);}else{logger[_0xa41d('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xa41d('0x4')]['id'],this[_0xa41d('0x11')]);_0x484a17[_0xa41d('0x13')]();setTimeout(this['push'][_0xa41d('0x9')](this),0x3e8);}}};RRMemory[_0xa41d('0xd')][_0xa41d('0x8')]=function(_0x311b83){logger['info'](_0xa41d('0x21'),this[_0xa41d('0x4')]['id'],this[_0xa41d('0x11')]);if(_[_0xa41d('0x22')](this[_0xa41d('0x10')]['agents'][this[_0xa41d('0x11')]])){logger[_0xa41d('0x15')](_0xa41d('0x18'),this[_0xa41d('0x4')]['id'],this[_0xa41d('0x11')]);}else{clearInterval(this[_0xa41d('0x6')][this[_0xa41d('0x11')]]);util[_0xa41d('0x23')](this['notificationId'],this[_0xa41d('0x4')]['id'],this['realtime']['agents'][this[_0xa41d('0x11')]],this[_0xa41d('0x5')],this[_0xa41d('0x3')]);util[_0xa41d('0x20')](this['squeue']['id'],this[_0xa41d('0x10')]['agents'][this[_0xa41d('0x11')]],'TIMEOUT');this[_0xa41d('0x10')]['agents'][this['agentId']]['busy']=![];this['realtime']['agents'][this[_0xa41d('0x11')]][_0xa41d('0x1c')]=undefined;}if(!_0x311b83){setTimeout(this[_0xa41d('0xe')][_0xa41d('0x9')](this),0x3e8);}};function rrmemory(_0x39e093,_0x5b0289,_0x36c07f,_0x21de8d){return new RRMemory(_0x39e093,_0x5b0289,_0x36c07f,_0x21de8d);}module[_0xa41d('0x24')]=rrmemory;
\ No newline at end of file
+var _0x11e0=['busy','lodash','uuid','routing','notificationId','queue','realtime','squeue','push','handleRun','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','handleCheckReject','agents','agentId','intervals','done','info','[%s][QUEUE]\x20try\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busyQueue','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil','hideNotification'];(function(_0x2aba0e,_0x1872be){var _0x3f277e=function(_0x15df31){while(--_0x15df31){_0x2aba0e['push'](_0x2aba0e['shift']());}};_0x3f277e(++_0x1872be);}(_0x11e0,0x1bb));var _0x011e=function(_0x1426e2,_0x5ee71c){_0x1426e2=_0x1426e2-0x0;var _0x2e87c7=_0x11e0[_0x1426e2];return _0x2e87c7;};'use strict';var rr=require('rr');var _=require(_0x011e('0x0'));var uuid=require(_0x011e('0x1'));var util=require('./util');var logger=require('../../../../../config/logger')(_0x011e('0x2'));var RRMemory=function(_0x25120a,_0x321ee4,_0x3ceb7d,_0x2de11e){this[_0x011e('0x3')]=uuid['v4']();this['squeue']=_0x25120a;this[_0x011e('0x4')]=_0x321ee4;this[_0x011e('0x5')]=_0x3ceb7d;this['routing']=_0x2de11e;this['intervals']={};this[_0x011e('0x6')][_0x011e('0x7')](this[_0x011e('0x8')][_0x011e('0x9')](this),this[_0x011e('0xa')]['bind'](this),this[_0x011e('0xb')]);this['squeue']['on'](_0x011e('0xc'),this[_0x011e('0xa')][_0x011e('0x9')](this));this['squeue']['on'](_0x011e('0xd'),this[_0x011e('0xe')][_0x011e('0x9')](this));};RRMemory[_0x011e('0xf')][_0x011e('0x7')]=function(){this[_0x011e('0x6')][_0x011e('0x7')](this[_0x011e('0x8')]['bind'](this),this['handleTimeout'][_0x011e('0x9')](this));};RRMemory[_0x011e('0xf')]['handleDrained']=function(_0x56ad55){this[_0x011e('0xa')](!![]);};RRMemory[_0x011e('0xf')][_0x011e('0x10')]=function(_0x5adf03){if(util['isAgentAvailable'](this[_0x011e('0x6')]['id'],this[_0x011e('0x5')][_0x011e('0x11')][this[_0x011e('0x12')]],this['squeue']['channel'],!![])){logger['info']('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x011e('0x6')]['id'],this[_0x011e('0x12')]);clearInterval(this[_0x011e('0x13')][this['agentId']]);_0x5adf03[_0x011e('0x14')]();setTimeout(this[_0x011e('0x7')][_0x011e('0x9')](this),0x3e8);}};RRMemory['prototype'][_0x011e('0x8')]=function(_0x5ed850){this['agentId']=rr(this[_0x011e('0x4')]['mapAgentsId']);logger[_0x011e('0x15')](_0x011e('0x16'),this[_0x011e('0x6')]['id'],this[_0x011e('0x12')]);if(_['isNil'](this['realtime']['agents'][this['agentId']])){logger['info'](_0x011e('0x17'),this['squeue']['id'],this[_0x011e('0x12')]);_0x5ed850['done']();setTimeout(this[_0x011e('0x7')][_0x011e('0x9')](this),0x3e8);}else{if(util[_0x011e('0x18')](this[_0x011e('0x6')]['id'],this[_0x011e('0x5')]['agents'][this[_0x011e('0x12')]],this['squeue'][_0x011e('0x19')],!![])){this['realtime'][_0x011e('0x11')][this[_0x011e('0x12')]]['busy']=!![];this[_0x011e('0x5')][_0x011e('0x11')][this['agentId']][_0x011e('0x1a')]=this[_0x011e('0x4')]['name'];util['showNotification'](this[_0x011e('0x3')],this['squeue']['id'],this[_0x011e('0x5')]['agents'][this['agentId']],this[_0x011e('0x4')],this[_0x011e('0x2')]);util[_0x011e('0x1b')](this[_0x011e('0x6')]['id'],this[_0x011e('0x5')][_0x011e('0x11')][this[_0x011e('0x12')]],_0x011e('0x1c'));this[_0x011e('0x13')][this['agentId']]=setInterval(this[_0x011e('0x10')][_0x011e('0x9')](this,_0x5ed850),0x3e8);}else{logger[_0x011e('0x15')](_0x011e('0x1d'),this['squeue']['id'],this['agentId']);_0x5ed850[_0x011e('0x14')]();setTimeout(this[_0x011e('0x7')][_0x011e('0x9')](this),0x3e8);}}};RRMemory[_0x011e('0xf')][_0x011e('0xa')]=function(_0x453937){logger[_0x011e('0x15')](_0x011e('0x1e'),this[_0x011e('0x6')]['id'],this['agentId']);if(_[_0x011e('0x1f')](this[_0x011e('0x5')][_0x011e('0x11')][this['agentId']])){logger[_0x011e('0x15')](_0x011e('0x17'),this['squeue']['id'],this['agentId']);}else{clearInterval(this[_0x011e('0x13')][this['agentId']]);util[_0x011e('0x20')](this['notificationId'],this[_0x011e('0x6')]['id'],this[_0x011e('0x5')][_0x011e('0x11')][this[_0x011e('0x12')]],this['queue'],this[_0x011e('0x2')]);util[_0x011e('0x1b')](this['squeue']['id'],this[_0x011e('0x5')][_0x011e('0x11')][this[_0x011e('0x12')]],'TIMEOUT');this[_0x011e('0x5')][_0x011e('0x11')][this[_0x011e('0x12')]][_0x011e('0x21')]=![];this['realtime'][_0x011e('0x11')][this[_0x011e('0x12')]][_0x011e('0x1a')]=undefined;}if(!_0x453937){setTimeout(this[_0x011e('0x7')]['bind'](this),0x3e8);}};function rrmemory(_0x1ef767,_0x3c1348,_0x212dd7,_0x398484){return new RRMemory(_0x1ef767,_0x3c1348,_0x212dd7,_0x398484);}module['exports']=rrmemory;
\ No newline at end of file
index eed7978..a3fdf2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffd6=['routing','defaults','redis','localhost','socket.io-emitter','emit','format','user:%s','name','user:save','split','account','notificationSound','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','notification:%s','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','online','OFFLINE','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','showNotification','writeLog','lodash','util','../utils','../../../../../config/environment','../../../../../config/logger'];(function(_0x26f39,_0x5acefd){var _0x419e4e=function(_0x46a733){while(--_0x46a733){_0x26f39['push'](_0x26f39['shift']());}};_0x419e4e(++_0x5acefd);}(_0xffd6,0x97));var _0x6ffd=function(_0x2bcddb,_0x3eaf37){_0x2bcddb=_0x2bcddb-0x0;var _0x12a9e8=_0xffd6[_0x2bcddb];return _0x12a9e8;};'use strict';var _=require(_0x6ffd('0x0'));var util=require(_0x6ffd('0x1'));var utils=require(_0x6ffd('0x2'));var Mustache=require('mustache');var Redis=require('ioredis');var config=require(_0x6ffd('0x3'));var logger=require(_0x6ffd('0x4'))(_0x6ffd('0x5'));config['redis']=_[_0x6ffd('0x6')](config[_0x6ffd('0x7')],{'host':_0x6ffd('0x8'),'port':0x18eb});var io=require(_0x6ffd('0x9'))(new Redis(config['redis']));function emit(_0x122b71,_0xeefe34,_0x2445a0){io['to'](_0x122b71)[_0x6ffd('0xa')](_0xeefe34,_0x2445a0);}function sendNotification(_0x1d8b50,_0x4a9f85,_0x455dda,_0x417f34,_0x4e57f5,_0x469d0d){io['to'](util[_0x6ffd('0xb')](_0x6ffd('0xc'),_0x417f34[_0x6ffd('0xd')]))[_0x6ffd('0xa')](_0x6ffd('0xe'),_0x417f34);var _0x836501=_0x469d0d||{};var _0x5892e1=_0x455dda[_0x6ffd('0xf')]('.');var _0x46936d={'uniqueid':_0x4a9f85,'channel':_0x5892e1[0x0],'id':_0x5892e1[0x1],'title':_0x5892e1[0x0]+'\x20interaction','interactionId':_0x5892e1[0x2],'queue':_0x4e57f5?_0x4e57f5[_0x6ffd('0xd')]:null,'sound':_0x836501[_0x6ffd('0x10')][_0x6ffd('0x11')],'shake':_0x836501[_0x6ffd('0x10')]['notificationShake']};try{if(!_0x836501[_0x6ffd('0x12')]){_0x836501['body']={};}if(_0x4e57f5){_0x836501[_0x6ffd('0x12')]['queue']=_0x4e57f5;}else if(_0x836501[_0x6ffd('0x12')][_0x6ffd('0x13')]){delete _0x836501[_0x6ffd('0x12')]['queue'];}_0x46936d[_0x6ffd('0x14')]=utils[_0x6ffd('0x15')](_0x836501[_0x6ffd('0x10')][_0x6ffd('0x16')],_0x836501);}catch(_0x29293a){_0x46936d[_0x6ffd('0x14')]=_0x6ffd('0x17');logger[_0x6ffd('0x18')](util['format'](_0x6ffd('0x19'),_0x4a9f85,_0x29293a['message']));}io['to'](util['format'](_0x6ffd('0xc'),_0x417f34[_0x6ffd('0xd')]))['emit'](util[_0x6ffd('0xb')](_0x6ffd('0x1a'),_0x1d8b50?'save':'remove'),_0x46936d);}function writeLog(_0x465971,_0x1c9d19,_0x4dcc50){return logger[_0x6ffd('0x1b')](util[_0x6ffd('0xb')](_0x6ffd('0x1c'),_0x465971,_0x1c9d19['name'],_0x4dcc50));}exports[_0x6ffd('0x1d')]=function(_0x2efeb5,_0x50896b,_0x356c9c,_0x438d1a){if(_0x50896b['busy']){writeLog(_0x2efeb5,_0x50896b,_0x6ffd('0x1e'));return![];}if(!_0x50896b[_0x6ffd('0x1f')]){writeLog(_0x2efeb5,_0x50896b,_0x6ffd('0x20'));return![];}if(_0x50896b[_0x356c9c+'Pause']){writeLog(_0x2efeb5,_0x50896b,_0x6ffd('0x21'));return![];}if(_0x438d1a&&_0x50896b[_0x6ffd('0x22')](_0x356c9c+_0x6ffd('0x23'))&&_0x50896b['hasOwnProperty'](_0x356c9c+_0x6ffd('0x24'))){if(_0x50896b[_0x356c9c+'Capacity']>0x0&&_0x50896b[_0x356c9c+_0x6ffd('0x24')]>=_0x50896b[_0x356c9c+_0x6ffd('0x23')]){writeLog(_0x2efeb5,_0x50896b,_0x356c9c['toUpperCase']()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x6ffd('0x25')]=function(_0x2a0391,_0x1934d4,_0x5e24de,_0x534139,_0x32c399){return sendNotification(!![],_0x2a0391,_0x1934d4,_0x5e24de,_0x534139,_0x32c399);};exports['hideNotification']=function(_0x470021,_0x20c007,_0x51fdb6,_0x6b5aba,_0xc790b2){return sendNotification(![],_0x470021,_0x20c007,_0x51fdb6,_0x6b5aba,_0xc790b2);};exports[_0x6ffd('0x26')]=writeLog;
\ No newline at end of file
+var _0xeda8=['OFFLINE','Pause','hasOwnProperty','Capacity','CurrentCapacity','\x20MAXCAPACITY','showNotification','writeLog','lodash','util','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','emit','format','user:%s','name','user:save','split','\x20interaction','account','notificationSound','body','queue','msg','I\x20can\x27t\x20render\x20your\x20template','error','message','notification:%s','save','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY'];(function(_0x44389c,_0x73f05e){var _0x329b1b=function(_0x18aab4){while(--_0x18aab4){_0x44389c['push'](_0x44389c['shift']());}};_0x329b1b(++_0x73f05e);}(_0xeda8,0x104));var _0x8eda=function(_0x548045,_0xb9f932){_0x548045=_0x548045-0x0;var _0x54fdfc=_0xeda8[_0x548045];return _0x54fdfc;};'use strict';var _=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var utils=require('../utils');var Mustache=require(_0x8eda('0x2'));var Redis=require(_0x8eda('0x3'));var config=require(_0x8eda('0x4'));var logger=require(_0x8eda('0x5'))(_0x8eda('0x6'));config[_0x8eda('0x7')]=_[_0x8eda('0x8')](config[_0x8eda('0x7')],{'host':_0x8eda('0x9'),'port':0x18eb});var io=require(_0x8eda('0xa'))(new Redis(config[_0x8eda('0x7')]));function emit(_0x32abe8,_0x4e2ebb,_0x28b721){io['to'](_0x32abe8)[_0x8eda('0xb')](_0x4e2ebb,_0x28b721);}function sendNotification(_0x5aa93d,_0x6b544f,_0x4be9df,_0x4f7893,_0x488849,_0x4fbf0a){io['to'](util[_0x8eda('0xc')](_0x8eda('0xd'),_0x4f7893[_0x8eda('0xe')]))['emit'](_0x8eda('0xf'),_0x4f7893);var _0x5a80ca=_0x4fbf0a||{};var _0x3f34c=_0x4be9df[_0x8eda('0x10')]('.');var _0x2fdec0={'uniqueid':_0x6b544f,'channel':_0x3f34c[0x0],'id':_0x3f34c[0x1],'title':_0x3f34c[0x0]+_0x8eda('0x11'),'interactionId':_0x3f34c[0x2],'queue':_0x488849?_0x488849[_0x8eda('0xe')]:null,'sound':_0x5a80ca[_0x8eda('0x12')][_0x8eda('0x13')],'shake':_0x5a80ca[_0x8eda('0x12')]['notificationShake']};try{if(!_0x5a80ca['body']){_0x5a80ca[_0x8eda('0x14')]={};}if(_0x488849){_0x5a80ca[_0x8eda('0x14')]['queue']=_0x488849;}else if(_0x5a80ca[_0x8eda('0x14')][_0x8eda('0x15')]){delete _0x5a80ca[_0x8eda('0x14')]['queue'];}_0x2fdec0[_0x8eda('0x16')]=utils['getMustacheRender'](_0x5a80ca[_0x8eda('0x12')]['notificationTemplate'],_0x5a80ca);}catch(_0x24aed4){_0x2fdec0['msg']=_0x8eda('0x17');logger[_0x8eda('0x18')](util['format']('[%s][QUEUE]\x20%s',_0x6b544f,_0x24aed4[_0x8eda('0x19')]));}io['to'](util[_0x8eda('0xc')](_0x8eda('0xd'),_0x4f7893[_0x8eda('0xe')]))[_0x8eda('0xb')](util[_0x8eda('0xc')](_0x8eda('0x1a'),_0x5aa93d?_0x8eda('0x1b'):_0x8eda('0x1c')),_0x2fdec0);}function writeLog(_0x232786,_0x279ade,_0x57f336){return logger[_0x8eda('0x1d')](util['format'](_0x8eda('0x1e'),_0x232786,_0x279ade['name'],_0x57f336));}exports[_0x8eda('0x1f')]=function(_0x2dab25,_0x4f3e0a,_0x58e54b,_0x56dba4){if(_0x4f3e0a[_0x8eda('0x20')]){writeLog(_0x2dab25,_0x4f3e0a,_0x8eda('0x21'));return![];}if(!_0x4f3e0a['online']){writeLog(_0x2dab25,_0x4f3e0a,_0x8eda('0x22'));return![];}if(_0x4f3e0a[_0x58e54b+_0x8eda('0x23')]){writeLog(_0x2dab25,_0x4f3e0a,'PAUSE');return![];}if(_0x56dba4&&_0x4f3e0a[_0x8eda('0x24')](_0x58e54b+_0x8eda('0x25'))&&_0x4f3e0a[_0x8eda('0x24')](_0x58e54b+_0x8eda('0x26'))){if(_0x4f3e0a[_0x58e54b+_0x8eda('0x25')]>0x0&&_0x4f3e0a[_0x58e54b+'CurrentCapacity']>=_0x4f3e0a[_0x58e54b+_0x8eda('0x25')]){writeLog(_0x2dab25,_0x4f3e0a,_0x58e54b['toUpperCase']()+_0x8eda('0x27'));return![];}}return!![];};exports[_0x8eda('0x28')]=function(_0x8337b4,_0x567f69,_0x23e892,_0x244400,_0x1dd12){return sendNotification(!![],_0x8337b4,_0x567f69,_0x23e892,_0x244400,_0x1dd12);};exports['hideNotification']=function(_0x1616ea,_0x11a999,_0x5dd315,_0x27d2ce,_0x29e6f4){return sendNotification(![],_0x1616ea,_0x11a999,_0x5dd315,_0x27d2ce,_0x29e6f4);};exports[_0x8eda('0x29')]=writeLog;
\ No newline at end of file
index b44d78c..dacb691 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57c8=['consequence','length','error','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','stringify','validate','lodash','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0x3522c8,_0x1e7c82){var _0x22f498=function(_0x5bf143){while(--_0x5bf143){_0x3522c8['push'](_0x3522c8['shift']());}};_0x22f498(++_0x1e7c82);}(_0x57c8,0xa9));var _0x857c=function(_0x3da3b6,_0x1dddad){_0x3da3b6=_0x3da3b6-0x0;var _0x1bae9f=_0x57c8[_0x3da3b6];return _0x1bae9f;};'use strict';var schema=require(_0x857c('0x0'));var sh=require('shelljs');var _=require(_0x857c('0x1'));var utils=require('./utils');var logger=require(_0x857c('0x2'))(_0x857c('0x3'));var system=schema({'command':{'type':_0x857c('0x4'),'required':!![],'message':_0x857c('0x5')}});exports[_0x857c('0x6')]=function(_0x5ec3fb,_0x26c7a4){return function(_0x1b697d){try{var _0x3d33b6={'command':_0x26c7a4[0x0]};var _0x475d4c=system[_0x857c('0x0')](_0x3d33b6,{'typecast':!![]});if(_0x475d4c[_0x857c('0x7')]){logger[_0x857c('0x8')](_0x857c('0x9'),_0x5ec3fb,_[_0x857c('0xa')](_0x475d4c,_0x857c('0xb'))[_0x857c('0xc')](',\x20'));logger[_0x857c('0xd')](_0x857c('0xe'),_0x5ec3fb);_0x1b697d[_0x857c('0xf')]();}else{var _0x52375d=this;var _0x585d6c=utils[_0x857c('0x10')](_0x26c7a4[0x0],this);logger[_0x857c('0xd')](_0x857c('0x11'),_0x5ec3fb,_0x585d6c);sh['exec'](_['trim'](_0x585d6c),function(_0x5be39f,_0x352505){logger[_0x857c('0xd')](_0x857c('0x12'),_0x5ec3fb,_0x5be39f);if(_0x5be39f==0x0){var _0xb43429=_0x352505[_0x857c('0x13')](/(\r\n|\n|\r)/gm,'');if(_[_0x857c('0x14')](_0x26c7a4[0x1])||_[_0x857c('0x15')](_0x26c7a4[0x1])){logger[_0x857c('0xd')](_0x857c('0x16'),_0x5ec3fb);_0x52375d['body'][_0x26c7a4[0x1]]=_0xb43429;}else{logger['info']('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x5ec3fb,_0x26c7a4[0x1],_0xb43429);_0x52375d[_0x857c('0x17')][_0x26c7a4[0x1]]=_0xb43429;}}_0x1b697d['next']();});}}catch(_0xd41dce){logger[_0x857c('0x8')](_0x857c('0x9'),_0x5ec3fb,_['isObject'](_0xd41dce)?JSON[_0x857c('0x18')](_0xd41dce):_0xd41dce);logger[_0x857c('0xd')](_0x857c('0xe'),_0x5ec3fb);_0x1b697d[_0x857c('0xf')]();}};};
\ No newline at end of file
+var _0xcd57=['isEmpty','[%s][SYSTEM]\x20no\x20variable','body','error','stringify','shelljs','lodash','./utils','../../../../config/logger','routing','string','consequence','validate','length','[%s][SYSTEM]\x20%s','map','message','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','[%s][SYSTEM]\x20commnad:\x20%s','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil'];(function(_0xfb9c03,_0x13e480){var _0x555d8d=function(_0x3579a1){while(--_0x3579a1){_0xfb9c03['push'](_0xfb9c03['shift']());}};_0x555d8d(++_0x13e480);}(_0xcd57,0x1ae));var _0x7cd5=function(_0x3422bf,_0x21b1da){_0x3422bf=_0x3422bf-0x0;var _0x4de668=_0xcd57[_0x3422bf];return _0x4de668;};'use strict';var schema=require('validate');var sh=require(_0x7cd5('0x0'));var _=require(_0x7cd5('0x1'));var utils=require(_0x7cd5('0x2'));var logger=require(_0x7cd5('0x3'))(_0x7cd5('0x4'));var system=schema({'command':{'type':_0x7cd5('0x5'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x7cd5('0x6')]=function(_0x5ab381,_0x580cfe){return function(_0x3e0410){try{var _0x3c2bcb={'command':_0x580cfe[0x0]};var _0x1d746f=system[_0x7cd5('0x7')](_0x3c2bcb,{'typecast':!![]});if(_0x1d746f[_0x7cd5('0x8')]){logger['error'](_0x7cd5('0x9'),_0x5ab381,_[_0x7cd5('0xa')](_0x1d746f,_0x7cd5('0xb'))['join'](',\x20'));logger[_0x7cd5('0xc')](_0x7cd5('0xd'),_0x5ab381);_0x3e0410[_0x7cd5('0xe')]();}else{var _0x44803f=this;var _0xa38836=utils['getMustacheRender'](_0x580cfe[0x0],this);logger[_0x7cd5('0xc')](_0x7cd5('0xf'),_0x5ab381,_0xa38836);sh['exec'](_[_0x7cd5('0x10')](_0xa38836),function(_0x1fc755,_0x5654a6){logger[_0x7cd5('0xc')](_0x7cd5('0x11'),_0x5ab381,_0x1fc755);if(_0x1fc755==0x0){var _0x7d6675=_0x5654a6[_0x7cd5('0x12')](/(\r\n|\n|\r)/gm,'');if(_[_0x7cd5('0x13')](_0x580cfe[0x1])||_[_0x7cd5('0x14')](_0x580cfe[0x1])){logger[_0x7cd5('0xc')](_0x7cd5('0x15'),_0x5ab381);_0x44803f[_0x7cd5('0x16')][_0x580cfe[0x1]]=_0x7d6675;}else{logger[_0x7cd5('0xc')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x5ab381,_0x580cfe[0x1],_0x7d6675);_0x44803f[_0x7cd5('0x16')][_0x580cfe[0x1]]=_0x7d6675;}}_0x3e0410[_0x7cd5('0xe')]();});}}catch(_0x282ccb){logger[_0x7cd5('0x17')](_0x7cd5('0x9'),_0x5ab381,_['isObject'](_0x282ccb)?JSON[_0x7cd5('0x18')](_0x282ccb):_0x282ccb);logger[_0x7cd5('0xc')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x5ab381);_0x3e0410[_0x7cd5('0xe')]();}};};
\ No newline at end of file
index be5c79c..cbdf29b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75cb=['error','map','message','join','info','next','channel','Interaction','addTags','interaction','then','catch','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','[%s][TAG]\x20%s','validate','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length'];(function(_0x2c2e27,_0x19510b){var _0x2d61a5=function(_0x3e865e){while(--_0x3e865e){_0x2c2e27['push'](_0x2c2e27['shift']());}};_0x2d61a5(++_0x19510b);}(_0x75cb,0x97));var _0xb75c=function(_0x28ab95,_0x5e5670){_0x28ab95=_0x28ab95-0x0;var _0x369b86=_0x75cb[_0x28ab95];return _0x369b86;};'use strict';var schema=require(_0xb75c('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0xb75c('0x1')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0xb75c('0x2')),'mailInteraction':require(_0xb75c('0x3')),'faxInteraction':require(_0xb75c('0x4')),'whatsappInteraction':require(_0xb75c('0x5'))};var logger=require(_0xb75c('0x6'))(_0xb75c('0x7'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0xb75c('0x8')}});exports[_0xb75c('0x9')]=function(_0x17906d,_0x249dcf,_0x53c124,_0x2a46e1){return function(_0x1b69a5){try{var _0x1a3977={'tag':_0x249dcf[0x0]};var _0x154fa8=tag[_0xb75c('0x0')](_0x1a3977,{'typecast':!![]});if(_0x154fa8[_0xb75c('0xa')]){logger[_0xb75c('0xb')]('[%s][TAG]\x20%s',_0x17906d,_[_0xb75c('0xc')](_0x154fa8,_0xb75c('0xd'))[_0xb75c('0xe')](',\x20'));logger[_0xb75c('0xf')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x17906d);_0x1b69a5[_0xb75c('0x10')]();}else{var _0x4a584d={'ids':[_0x249dcf[0x0]]};if(rpc[_0x2a46e1[_0xb75c('0x11')]+_0xb75c('0x12')]){rpc[_0x2a46e1['channel']+_0xb75c('0x12')][_0xb75c('0x13')](_0x2a46e1[_0xb75c('0x14')]['id'],_0x4a584d)[_0xb75c('0x15')](function(_0x992d43){logger['info']('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0x17906d,_0x249dcf[0x1],_0x2a46e1[_0xb75c('0x11')],_0x2a46e1[_0xb75c('0x14')]['id']);})[_0xb75c('0x16')](function(_0x5ecdad){logger[_0xb75c('0xb')]('[%s][TAG]\x20%s',_0x17906d,JSON[_0xb75c('0x17')](_0x5ecdad));logger['info'](_0xb75c('0x18'),_0x17906d);})[_0xb75c('0x19')](function(){_0x1b69a5[_0xb75c('0x10')]();});}}}catch(_0x468efd){logger[_0xb75c('0xb')](_0xb75c('0x1a'),_0x17906d,_['isObject'](_0x468efd)?JSON[_0xb75c('0x17')](_0x468efd):_0x468efd);logger[_0xb75c('0xf')](_0xb75c('0x18'),_0x17906d);_0x1b69a5[_0xb75c('0x10')]();}};};
\ No newline at end of file
+var _0x5672=['../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','isObject','lodash'];(function(_0x3a0da4,_0x521c7f){var _0x36883f=function(_0x5c516d){while(--_0x5c516d){_0x3a0da4['push'](_0x3a0da4['shift']());}};_0x36883f(++_0x521c7f);}(_0x5672,0xf9));var _0x2567=function(_0x2a18b7,_0x5041c8){_0x2a18b7=_0x2a18b7-0x0;var _0x45e74e=_0x5672[_0x2a18b7];return _0x45e74e;};'use strict';var schema=require('validate');var _=require(_0x2567('0x0'));var rpc={'chatInteraction':require(_0x2567('0x1')),'openchannelInteraction':require(_0x2567('0x2')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x2567('0x3')),'whatsappInteraction':require(_0x2567('0x4'))};var logger=require('../../../../config/logger')(_0x2567('0x5'));var tag=schema({'tag':{'type':_0x2567('0x6'),'required':!![],'message':_0x2567('0x7')}});exports[_0x2567('0x8')]=function(_0x375130,_0x26b229,_0x4e8b80,_0x144f4f){return function(_0x4db9d0){try{var _0x3e3722={'tag':_0x26b229[0x0]};var _0x4f0830=tag['validate'](_0x3e3722,{'typecast':!![]});if(_0x4f0830[_0x2567('0x9')]){logger['error'](_0x2567('0xa'),_0x375130,_[_0x2567('0xb')](_0x4f0830,_0x2567('0xc'))[_0x2567('0xd')](',\x20'));logger[_0x2567('0xe')](_0x2567('0xf'),_0x375130);_0x4db9d0[_0x2567('0x10')]();}else{var _0x3c04ca={'ids':[_0x26b229[0x0]]};if(rpc[_0x144f4f['channel']+'Interaction']){rpc[_0x144f4f[_0x2567('0x11')]+_0x2567('0x12')]['addTags'](_0x144f4f[_0x2567('0x13')]['id'],_0x3c04ca)[_0x2567('0x14')](function(_0x3bc156){logger[_0x2567('0xe')](_0x2567('0x15'),_0x375130,_0x26b229[0x1],_0x144f4f[_0x2567('0x11')],_0x144f4f[_0x2567('0x13')]['id']);})[_0x2567('0x16')](function(_0x1503dc){logger['error']('[%s][TAG]\x20%s',_0x375130,JSON[_0x2567('0x17')](_0x1503dc));logger[_0x2567('0xe')](_0x2567('0xf'),_0x375130);})['finally'](function(){_0x4db9d0[_0x2567('0x10')]();});}}}catch(_0x46ad41){logger['error'](_0x2567('0xa'),_0x375130,_[_0x2567('0x18')](_0x46ad41)?JSON[_0x2567('0x17')](_0x46ad41):_0x46ad41);logger['info'](_0x2567('0xf'),_0x375130);_0x4db9d0[_0x2567('0x10')]();}};};
\ No newline at end of file
index a9b7bad..da0be14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x1a98de,_0x565cc0){var _0x3ba2e5=function(_0x3375a9){while(--_0x3375a9){_0x1a98de['push'](_0x1a98de['shift']());}};_0x3ba2e5(++_0x565cc0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0xa9e0[_0x5037ab];return _0x512adb;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
+var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x428e76,_0x40f349){var _0x1dcfaa=function(_0x378f25){while(--_0x378f25){_0x428e76['push'](_0x428e76['shift']());}};_0x1dcfaa(++_0x40f349);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
index f7c245f..6456a93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c12=['interval','message','applications','isArray','length','existsSync','join','app','toLowerCase','autoreply','appdata','split','channel','mail','push','slice','dialogflow','amazonlex','tag','%s:%s:%s','./interval','condition','intervals','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','.js','rules','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','error','stack','routing\x20is\x20empty','agent','agents','busyQueue','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busy','interaction','end','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','path','jayson/promise','bluebird','uuid','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','format','isNil','IntervalId','Intervals','map'];(function(_0x97bba6,_0x4662ee){var _0x1299f7=function(_0x372fc6){while(--_0x372fc6){_0x97bba6['push'](_0x97bba6['shift']());}};_0x1299f7(++_0x4662ee);}(_0x5c12,0xac));var _0x25c1=function(_0x1d2bbb,_0x202267){_0x1d2bbb=_0x1d2bbb-0x0;var _0x38082b=_0x5c12[_0x1d2bbb];return _0x38082b;};'use strict';var _=require('lodash');var util=require(_0x25c1('0x0'));var path=require(_0x25c1('0x1'));var fs=require('fs');var jayson=require(_0x25c1('0x2'));var BPromise=require(_0x25c1('0x3'));var uuid=require(_0x25c1('0x4'));var config=require('../../../config/environment');var logger=require(_0x25c1('0x5'))(_0x25c1('0x6'));var rpc={'openchannelQueueReport':require(_0x25c1('0x7')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0x25c1('0x8')),'smsQueueReport':require(_0x25c1('0x9')),'faxQueueReport':require(_0x25c1('0xa')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require('../lib/rule-engine');function getId(_0x4600be,_0x58a64e,_0x452b01){return util[_0x25c1('0xb')]('%s.%s.%s',_0x4600be,_0x58a64e||0x0,_0x452b01||0x0);}function getIntervals(_0x5df8e3,_0x5ed3f1){var _0x15a6ad=[];if(!_[_0x25c1('0xc')](_0x5ed3f1[_0x25c1('0xd')])&&!_[_0x25c1('0xc')](_0x5df8e3[_0x5ed3f1[_0x25c1('0xd')]])&&!_[_0x25c1('0xc')](_0x5df8e3[_0x5ed3f1['IntervalId']][_0x25c1('0xe')])){_0x15a6ad=_[_0x25c1('0xf')](_0x5df8e3[_0x5ed3f1['IntervalId']]['Intervals'],'interval');}else if(!_[_0x25c1('0xc')](_0x5ed3f1['interval'])){_0x15a6ad=[_0x5ed3f1[_0x25c1('0x10')]];}return _0x15a6ad;}exports['listen']=function(_0x4c99c7){_0x4c99c7['rules']={};return new BPromise(function(_0x150671,_0x41b2a5){var _0x1fc251={'Start':function(_0x41ce80){var _0x389c87=this;return new Promise(function(_0x1adb68,_0x3c7d80){if(_0x41ce80){try{var _0x2a413f=[];var _0x5a599d=getId(_0x41ce80['channel'],_0x41ce80[_0x25c1('0x11')]?_0x41ce80['message']['id']:0x0,_0x41ce80['interaction']?_0x41ce80['interaction']['id']:0x0);if(_0x41ce80[_0x25c1('0x12')]&&_[_0x25c1('0x13')](_0x41ce80['applications'])&&_0x41ce80[_0x25c1('0x12')][_0x25c1('0x14')]){for(var _0x330952=0x0;_0x330952<_0x41ce80[_0x25c1('0x12')][_0x25c1('0x14')];_0x330952+=0x1){var _0xd974cf=_0x41ce80['applications'][_0x330952];if(fs[_0x25c1('0x15')](path[_0x25c1('0x16')](__dirname,_0x25c1('0x12'),_0xd974cf[_0x25c1('0x17')]+'.js'))){var _0x370b78=[];switch(_0xd974cf['app'][_0x25c1('0x18')]()){case _0x25c1('0x19'):var _0x5a7f23=_0xd974cf[_0x25c1('0x1a')][_0x25c1('0x1b')](',');if(_0x41ce80[_0x25c1('0x1c')]===_0x25c1('0x1d')){_0x370b78['push'](_0x5a7f23[0x0]);_0x370b78[_0x25c1('0x1e')](_0x5a7f23[0x1]);_0x370b78[_0x25c1('0x1e')](_0x5a7f23[_0x25c1('0x1f')](0x2,_0x5a7f23[_0x25c1('0x14')])[_0x25c1('0x16')](','));}else{_0x370b78[_0x25c1('0x1e')](_0x5a7f23[0x0]);_0x370b78[_0x25c1('0x1e')](_0x5a7f23['slice'](0x1,_0x5a7f23[_0x25c1('0x14')])[_0x25c1('0x16')](','));}break;case _0x25c1('0x20'):var _0x942cf4=_0xd974cf[_0x25c1('0x1a')]['split'](',');_0x370b78['push'](_0x942cf4[0x0]);_0x370b78[_0x25c1('0x1e')](_0x942cf4[0x1]);_0x370b78['push'](_0x942cf4[_0x25c1('0x1f')](0x2,_0x942cf4['length'])[_0x25c1('0x16')](','));break;case'dialogflowv2':var _0x569de5=_0xd974cf['appdata'][_0x25c1('0x1b')](',');_0x370b78[_0x25c1('0x1e')](_0x569de5[0x0]);_0x370b78['push'](_0x569de5[0x1]);_0x370b78[_0x25c1('0x1e')](_0x569de5[0x2]);_0x370b78[_0x25c1('0x1e')](_0x569de5[0x3]);_0x370b78['push'](_0x569de5[_0x25c1('0x1f')](0x4,_0x569de5[_0x25c1('0x14')])[_0x25c1('0x16')](','));break;case _0x25c1('0x21'):var _0x2b9858=_0xd974cf[_0x25c1('0x1a')][_0x25c1('0x1b')](',');_0x370b78[_0x25c1('0x1e')](_0x2b9858[0x0]);_0x370b78[_0x25c1('0x1e')](_0x2b9858[0x1]);_0x370b78['push'](_0x2b9858[0x2]);_0x370b78[_0x25c1('0x1e')](_0x2b9858[0x3]);_0x370b78[_0x25c1('0x1e')](_0x2b9858[_0x25c1('0x1f')](0x4,_0x2b9858['length'])[_0x25c1('0x16')](','));break;case _0x25c1('0x11'):_0x370b78[_0x25c1('0x1e')](_0xd974cf['appdata']);break;case _0x25c1('0x22'):_0x370b78[_0x25c1('0x1e')](_0xd974cf['TagId']);_0x370b78['push'](_0xd974cf[_0x25c1('0x1a')]);break;default:_0x370b78=_[_0x25c1('0xc')](_0xd974cf[_0x25c1('0x1a')])?[]:_0xd974cf[_0x25c1('0x1a')][_0x25c1('0x1b')](',');}var _0x5e507b={'id':util['format'](_0x25c1('0x23'),_0x5a599d,_0xd974cf['id'],_0xd974cf[_0x25c1('0x17')]),'condition':require(_0x25c1('0x24'))[_0x25c1('0x25')](_0x5a599d,getIntervals(_0x4c99c7[_0x25c1('0x26')],_0xd974cf),_0x4c99c7),'consequence':require('./applications/'+_0xd974cf['app'])[_0x25c1('0x27')](_0x5a599d,_0x370b78,_0x4c99c7,_0x41ce80),'p':_0xd974cf[_0x25c1('0x28')]||0x0};logger[_0x25c1('0x29')](_0x25c1('0x2a'),_0x5e507b['id'],_0x25c1('0x2b'),getIntervals(_0x4c99c7[_0x25c1('0x26')],_0xd974cf)[_0x25c1('0x16')](_0x25c1('0x2c')));_0x2a413f[_0x25c1('0x1e')](_0x5e507b);}else{logger['error']('Please\x20create\x20a\x20new\x20file\x20under',path[_0x25c1('0x16')](__dirname,_0x25c1('0x12'),_0xd974cf[_0x25c1('0x17')]+_0x25c1('0x2d')));}}_0x4c99c7['rules'][_0x5a599d]=new RuleEngine(_0x2a413f);_0x4c99c7[_0x25c1('0x2e')][_0x5a599d]['execute'](_0x41ce80,function(_0x171d79){logger[_0x25c1('0x29')](_0x25c1('0x2f'),JSON[_0x25c1('0x30')](_0x171d79[_0x25c1('0x31')]));if(_0x4c99c7[_0x25c1('0x2e')][_0x5a599d]){_0x4c99c7['rules'][_0x5a599d][_0x25c1('0x32')](_0x25c1('0x33'));}});return _0x1adb68({'code':0xc8,'message':_0x41ce80});}else{logger[_0x25c1('0x29')](_0x25c1('0x34'));return _0x1adb68({'code':0xc8,'message':_0x41ce80});}}catch(_0x4c1ab3){logger[_0x25c1('0x35')](_0x4c1ab3[_0x25c1('0x36')]);return _0x3c7d80(_0x389c87[_0x25c1('0x35')](0x1f4,_0x4c1ab3));}}return _0x3c7d80(_0x25c1('0x37'));});},'AcceptMessage':function(_0x10a320){var _0x4013fa=this;return new Promise(function(_0x5316b5,_0x5d87dc){if(_0x10a320[_0x25c1('0x38')]&&_0x10a320[_0x25c1('0x38')]['id']){if(_0x4c99c7['agents'][_0x10a320[_0x25c1('0x38')]['id']]){_0x4c99c7[_0x25c1('0x39')][_0x10a320['agent']['id']]['busy']=![];_0x4c99c7[_0x25c1('0x39')][_0x10a320['agent']['id']][_0x25c1('0x3a')]=undefined;}}if(_0x10a320[_0x25c1('0x11')]&&_0x10a320[_0x25c1('0x11')]['id']){try{var _0x3c1c77=getId(_0x10a320[_0x25c1('0x1c')],_0x10a320[_0x25c1('0x11')]?_0x10a320[_0x25c1('0x11')]['id']:0x0,_0x10a320['interaction']?_0x10a320['interaction']['id']:0x0);if(_0x4c99c7[_0x25c1('0x2e')][_0x3c1c77]){_0x4c99c7[_0x25c1('0x2e')][_0x3c1c77][_0x25c1('0x32')]('end');if(rpc[_0x10a320[_0x25c1('0x1c')]+_0x25c1('0x3b')]){rpc[_0x10a320[_0x25c1('0x1c')]+_0x25c1('0x3b')][_0x25c1('0x3c')](_0x3c1c77,{'UserId':_0x10a320[_0x25c1('0x11')][_0x25c1('0x3d')]})[_0x25c1('0x3e')](function(_0x4006a6){logger[_0x25c1('0x35')](_0x25c1('0x3f'));});}}return _0x5316b5({'code':0xc8,'message':_0x10a320});}catch(_0xecb47d){logger[_0x25c1('0x35')](_0xecb47d[_0x25c1('0x36')]);return _0x5d87dc(_0x4013fa[_0x25c1('0x35')](0x1f4,_0xecb47d));}}logger[_0x25c1('0x35')](_0x25c1('0x40'));return _0x5d87dc(_0x4013fa['error'](0x1f4,_0x25c1('0x40')));});},'RejectMessage':function(_0x3aedc1){var _0x4ddc71=this;return new Promise(function(_0x554768,_0x4d2513){if(_0x3aedc1[_0x25c1('0x38')]&&_0x3aedc1[_0x25c1('0x38')]['id']){try{if(_0x4c99c7[_0x25c1('0x39')][_0x3aedc1[_0x25c1('0x38')]['id']]){_0x4c99c7['agents'][_0x3aedc1['agent']['id']][_0x25c1('0x41')]=![];_0x4c99c7[_0x25c1('0x39')][_0x3aedc1[_0x25c1('0x38')]['id']][_0x25c1('0x3a')]=undefined;}return _0x554768({'code':0xc8,'message':_0x3aedc1});}catch(_0x1b8df7){logger[_0x25c1('0x35')](_0x1b8df7[_0x25c1('0x36')]);return _0x4d2513(_0x4ddc71[_0x25c1('0x35')](0x1f4,_0x1b8df7));}}logger[_0x25c1('0x35')](_0x25c1('0x40'));return _0x4d2513(_0x4ddc71['error'](0x1f4,_0x25c1('0x40')));});},'AbandonInteraction':function(_0x496c9c){var _0x4bbf3d=this;return new Promise(function(_0x439a1a,_0x403ae2){if(_0x496c9c['channel']&&_0x496c9c['interaction']&&_0x496c9c[_0x25c1('0x42')]['id']){try{var _0x16623a=getId(_0x496c9c['channel'],_0x496c9c['message']?_0x496c9c[_0x25c1('0x11')]['id']:0x0,_0x496c9c['interaction']?_0x496c9c[_0x25c1('0x42')]['id']:0x0);if(_0x4c99c7[_0x25c1('0x2e')][_0x16623a]){_0x4c99c7[_0x25c1('0x2e')][_0x16623a][_0x25c1('0x32')](_0x25c1('0x43'));}return _0x439a1a({'code':0xc8,'message':_0x496c9c});}catch(_0x898030){logger[_0x25c1('0x35')](_0x898030[_0x25c1('0x36')]);return _0x403ae2(_0x4bbf3d[_0x25c1('0x35')](0x1f4,_0x898030));}}logger['error'](_0x25c1('0x40'));return _0x403ae2(_0x4bbf3d[_0x25c1('0x35')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x1c77a4){var _0x4fe050=this;return new Promise(function(_0x2c0841,_0xe6e8d8){if(_0x4c99c7[_0x25c1('0x39')][_0x25c1('0x44')](_0x1c77a4['id'])){for(var _0x1c5588 in _0x1c77a4[_0x25c1('0x45')]){if(_0x1c77a4[_0x25c1('0x45')][_0x25c1('0x44')](_0x1c5588)){if(_0x4c99c7[_0x25c1('0x39')][_0x1c77a4['id']][_0x25c1('0x44')](_0x1c5588+'CurrentCapacity')){_0x4c99c7[_0x25c1('0x39')][_0x1c77a4['id']][_0x1c5588+_0x25c1('0x46')]=parseInt(_0x1c77a4['capacity'][_0x1c5588],0xa);}}}_0x4c99c7[_0x25c1('0x39')][_0x1c77a4['id']][_0x25c1('0x47')]();return _0x2c0841({'code':0xc8,'message':_0x4c99c7[_0x25c1('0x39')][_0x1c77a4['id']]});}else{return _0xe6e8d8(_0x4fe050[_0x25c1('0x35')](0x1f4,_0x25c1('0x48')));}});},'Agents':function(_0x41b34c){return new Promise(function(_0x3aa983,_0x34edfe){var _0x22f6a2=_[_0x25c1('0x49')](_0x4c99c7[_0x25c1('0x39')]);_0x3aa983({'count':_0x22f6a2['length'],'rows':_0x22f6a2});});},'ChatQueues':function(_0x20b8b5){return new Promise(function(_0x2c1ab6,_0x147f3){var _0x1ad6a9=[];for(var _0x173af7 in _0x4c99c7[_0x25c1('0x4a')]){if(_0x4c99c7[_0x25c1('0x4a')]['hasOwnProperty'](_0x173af7)){var _0x4ec730=_0x4c99c7[_0x25c1('0x4a')][_0x173af7];var _0x324350={'id':_0x4ec730['id'],'available':_0x4ec730[_0x25c1('0x4b')],'loggedIn':_0x4ec730[_0x25c1('0x4c')],'name':_0x4ec730[_0x25c1('0x4d')],'paused':_0x4ec730[_0x25c1('0x4e')],'waiting':_0x4ec730[_0x25c1('0x4f')]};_0x1ad6a9['push'](_0x324350);}}_0x2c1ab6({'count':_0x1ad6a9[_0x25c1('0x14')],'rows':_0x1ad6a9});});},'MailQueues':function(_0x5164d3){return new Promise(function(_0x2557a3,_0x37325b){var _0x22043b=[];for(var _0x4d0adf in _0x4c99c7['mailQueues']){if(_0x4c99c7[_0x25c1('0x50')][_0x25c1('0x44')](_0x4d0adf)){var _0x2a6a74=_0x4c99c7['mailQueues'][_0x4d0adf];var _0x74527e={'id':_0x2a6a74['id'],'available':_0x2a6a74['available'],'loggedIn':_0x2a6a74[_0x25c1('0x4c')],'name':_0x2a6a74[_0x25c1('0x4d')],'paused':_0x2a6a74[_0x25c1('0x4e')],'waiting':_0x2a6a74[_0x25c1('0x4f')]};_0x22043b['push'](_0x74527e);}}_0x2557a3({'count':_0x22043b[_0x25c1('0x14')],'rows':_0x22043b});});},'OpenchannelQueues':function(_0x2e54e5){return new Promise(function(_0x7c25b,_0x182111){var _0x279502=[];for(var _0x1cab04 in _0x4c99c7[_0x25c1('0x51')]){if(_0x4c99c7[_0x25c1('0x51')]['hasOwnProperty'](_0x1cab04)){var _0xfd6aac=_0x4c99c7[_0x25c1('0x51')][_0x1cab04];var _0x316361={'id':_0xfd6aac['id'],'available':_0xfd6aac[_0x25c1('0x4b')],'loggedIn':_0xfd6aac[_0x25c1('0x4c')],'name':_0xfd6aac[_0x25c1('0x4d')],'paused':_0xfd6aac[_0x25c1('0x4e')],'waiting':_0xfd6aac[_0x25c1('0x4f')]};_0x279502[_0x25c1('0x1e')](_0x316361);}}_0x7c25b({'count':_0x279502[_0x25c1('0x14')],'rows':_0x279502});});},'SmsQueues':function(_0x480939){return new Promise(function(_0x50b927,_0x4d7775){var _0x211682=[];for(var _0x231417 in _0x4c99c7[_0x25c1('0x52')]){if(_0x4c99c7[_0x25c1('0x52')][_0x25c1('0x44')](_0x231417)){var _0x5f3726=_0x4c99c7[_0x25c1('0x52')][_0x231417];var _0x3694cf={'id':_0x5f3726['id'],'available':_0x5f3726[_0x25c1('0x4b')],'loggedIn':_0x5f3726['loggedIn'],'name':_0x5f3726[_0x25c1('0x4d')],'paused':_0x5f3726[_0x25c1('0x4e')],'waiting':_0x5f3726[_0x25c1('0x4f')]};_0x211682['push'](_0x3694cf);}}_0x50b927({'count':_0x211682[_0x25c1('0x14')],'rows':_0x211682});});},'FaxQueues':function(_0xaf7f9){return new Promise(function(_0x5ce31d,_0x27ebcd){var _0x319c02=[];for(var _0xa4afda in _0x4c99c7[_0x25c1('0x53')]){if(_0x4c99c7[_0x25c1('0x53')][_0x25c1('0x44')](_0xa4afda)){var _0x4ab31f=_0x4c99c7[_0x25c1('0x53')][_0xa4afda];var _0x115a1d={'id':_0x4ab31f['id'],'available':_0x4ab31f['available'],'loggedIn':_0x4ab31f[_0x25c1('0x4c')],'name':_0x4ab31f[_0x25c1('0x4d')],'paused':_0x4ab31f[_0x25c1('0x4e')],'waiting':_0x4ab31f[_0x25c1('0x4f')]};_0x319c02['push'](_0x115a1d);}}_0x5ce31d({'count':_0x319c02[_0x25c1('0x14')],'rows':_0x319c02});});},'WhatsappQueues':function(_0xd3158a){return new Promise(function(_0x55dab3,_0x3cac78){var _0xcb9bfd=[];for(var _0x2c439f in _0x4c99c7[_0x25c1('0x54')]){if(_0x4c99c7[_0x25c1('0x54')][_0x25c1('0x44')](_0x2c439f)){var _0x1f454b=_0x4c99c7[_0x25c1('0x54')][_0x2c439f];var _0x5f0531={'id':_0x1f454b['id'],'available':_0x1f454b[_0x25c1('0x4b')],'loggedIn':_0x1f454b['loggedIn'],'name':_0x1f454b['name'],'paused':_0x1f454b[_0x25c1('0x4e')],'waiting':_0x1f454b[_0x25c1('0x4f')]};_0xcb9bfd[_0x25c1('0x1e')](_0x5f0531);}}_0x55dab3({'count':_0xcb9bfd[_0x25c1('0x14')],'rows':_0xcb9bfd});});},'ChatQueuesWaitingInteractions':function(_0x2fa247){return new Promise(function(_0x19b6f5,_0x5a1769){var _0x1570fe=_[_0x25c1('0x49')](_0x4c99c7[_0x25c1('0x55')]);_0x19b6f5({'count':_0x1570fe[_0x25c1('0x14')],'rows':_0x1570fe});});},'MailQueuesWaitingInteractions':function(_0x5dc8fa){return new Promise(function(_0x235b7d,_0x507cba){var _0x5295a1=_[_0x25c1('0x49')](_0x4c99c7[_0x25c1('0x56')]);_0x235b7d({'count':_0x5295a1[_0x25c1('0x14')],'rows':_0x5295a1});});},'OpenchannelQueuesWaitingInteractions':function(_0x4dd6fc){return new Promise(function(_0x4afa5c,_0xbc6aca){var _0xa286d1=_[_0x25c1('0x49')](_0x4c99c7['openchannelQueuesWaitingInteractions']);_0x4afa5c({'count':_0xa286d1[_0x25c1('0x14')],'rows':_0xa286d1});});},'SmsQueuesWaitingInteractions':function(_0x37051c){return new Promise(function(_0x55f72c,_0x3fc97c){var _0x24c4ac=_['values'](_0x4c99c7[_0x25c1('0x57')]);_0x55f72c({'count':_0x24c4ac[_0x25c1('0x14')],'rows':_0x24c4ac});});},'FaxQueuesWaitingInteractions':function(_0x1e0bb9){return new Promise(function(_0x1845cc,_0x5efa4b){var _0x4ce407=_[_0x25c1('0x49')](_0x4c99c7['faxQueuesWaitingInteractions']);_0x1845cc({'count':_0x4ce407['length'],'rows':_0x4ce407});});},'WhatsappQueuesWaitingInteractions':function(_0x19b654){return new Promise(function(_0x108f81,_0x3afda1){var _0x3f6684=_[_0x25c1('0x49')](_0x4c99c7[_0x25c1('0x58')]);_0x108f81({'count':_0x3f6684[_0x25c1('0x14')],'rows':_0x3f6684});});}};var _0x3a75d3=jayson[_0x25c1('0x59')](_0x1fc251)['http']();_0x3a75d3['on'](_0x25c1('0x35'),function(_0x30dd00){logger['error'](JSON['stringify'](_0x30dd00));return _0x41b2a5(_0x30dd00);});_0x3a75d3['listen'](0x232c,_0x25c1('0x5a'),function(){console[_0x25c1('0x5b')](_0x25c1('0x5c'),0x232c);return _0x150671(_0x25c1('0x5d')+0x232c);});});};
\ No newline at end of file
+var _0x7dae=['jayson/promise','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','interaction','applications','isArray','length','existsSync','join','app','toLowerCase','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','message','tag','TagId','format','./interval','intervals','./applications/','consequence','priority','info','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','.js','Applications\x20executed','stringify','emit','complete','routing\x20is\x20empty','agent','agents','busyQueue','end','QueueReport','update','UserId','error\x20update\x20queue\x20report','stack','busy','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','chatQueues','available','loggedIn','paused','waiting','mailQueues','name','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','path'];(function(_0x46800a,_0x44ce25){var _0x2b07d9=function(_0x7ba74){while(--_0x7ba74){_0x46800a['push'](_0x46800a['shift']());}};_0x2b07d9(++_0x44ce25);}(_0x7dae,0x17d));var _0xe7da=function(_0x417a81,_0x46c895){_0x417a81=_0x417a81-0x0;var _0x45d75d=_0x7dae[_0x417a81];return _0x45d75d;};'use strict';var _=require(_0xe7da('0x0'));var util=require(_0xe7da('0x1'));var path=require(_0xe7da('0x2'));var fs=require('fs');var jayson=require(_0xe7da('0x3'));var BPromise=require('bluebird');var uuid=require(_0xe7da('0x4'));var config=require(_0xe7da('0x5'));var logger=require(_0xe7da('0x6'))(_0xe7da('0x7'));var rpc={'openchannelQueueReport':require(_0xe7da('0x8')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0xe7da('0x9')),'smsQueueReport':require(_0xe7da('0xa')),'faxQueueReport':require(_0xe7da('0xb')),'whatsappQueueReport':require(_0xe7da('0xc'))};var RuleEngine=require(_0xe7da('0xd'));function getId(_0x3d2820,_0x4b7d03,_0xe5631c){return util['format'](_0xe7da('0xe'),_0x3d2820,_0x4b7d03||0x0,_0xe5631c||0x0);}function getIntervals(_0x2d5f82,_0x418c21){var _0x1ff82e=[];if(!_[_0xe7da('0xf')](_0x418c21['IntervalId'])&&!_[_0xe7da('0xf')](_0x2d5f82[_0x418c21[_0xe7da('0x10')]])&&!_[_0xe7da('0xf')](_0x2d5f82[_0x418c21[_0xe7da('0x10')]][_0xe7da('0x11')])){_0x1ff82e=_[_0xe7da('0x12')](_0x2d5f82[_0x418c21[_0xe7da('0x10')]][_0xe7da('0x11')],'interval');}else if(!_[_0xe7da('0xf')](_0x418c21[_0xe7da('0x13')])){_0x1ff82e=[_0x418c21[_0xe7da('0x13')]];}return _0x1ff82e;}exports[_0xe7da('0x14')]=function(_0xcbb472){_0xcbb472[_0xe7da('0x15')]={};return new BPromise(function(_0x1cf4f5,_0x18982f){var _0x1b1b1d={'Start':function(_0x4cfd5f){var _0x8af351=this;return new Promise(function(_0x12daec,_0x6e3403){if(_0x4cfd5f){try{var _0x1e57b7=[];var _0x4a8c04=getId(_0x4cfd5f[_0xe7da('0x16')],_0x4cfd5f['message']?_0x4cfd5f['message']['id']:0x0,_0x4cfd5f[_0xe7da('0x17')]?_0x4cfd5f[_0xe7da('0x17')]['id']:0x0);if(_0x4cfd5f[_0xe7da('0x18')]&&_[_0xe7da('0x19')](_0x4cfd5f['applications'])&&_0x4cfd5f[_0xe7da('0x18')]['length']){for(var _0xbe5eb9=0x0;_0xbe5eb9<_0x4cfd5f[_0xe7da('0x18')][_0xe7da('0x1a')];_0xbe5eb9+=0x1){var _0x432754=_0x4cfd5f['applications'][_0xbe5eb9];if(fs[_0xe7da('0x1b')](path[_0xe7da('0x1c')](__dirname,_0xe7da('0x18'),_0x432754[_0xe7da('0x1d')]+'.js'))){var _0xf8aefd=[];switch(_0x432754[_0xe7da('0x1d')][_0xe7da('0x1e')]()){case _0xe7da('0x1f'):var _0x25c091=_0x432754[_0xe7da('0x20')][_0xe7da('0x21')](',');if(_0x4cfd5f['channel']===_0xe7da('0x22')){_0xf8aefd[_0xe7da('0x23')](_0x25c091[0x0]);_0xf8aefd[_0xe7da('0x23')](_0x25c091[0x1]);_0xf8aefd[_0xe7da('0x23')](_0x25c091[_0xe7da('0x24')](0x2,_0x25c091[_0xe7da('0x1a')])[_0xe7da('0x1c')](','));}else{_0xf8aefd[_0xe7da('0x23')](_0x25c091[0x0]);_0xf8aefd[_0xe7da('0x23')](_0x25c091[_0xe7da('0x24')](0x1,_0x25c091['length'])['join'](','));}break;case _0xe7da('0x25'):var _0x37f280=_0x432754['appdata'][_0xe7da('0x21')](',');_0xf8aefd[_0xe7da('0x23')](_0x37f280[0x0]);_0xf8aefd['push'](_0x37f280[0x1]);_0xf8aefd['push'](_0x37f280['slice'](0x2,_0x37f280[_0xe7da('0x1a')])[_0xe7da('0x1c')](','));break;case _0xe7da('0x26'):var _0x5db511=_0x432754[_0xe7da('0x20')][_0xe7da('0x21')](',');_0xf8aefd[_0xe7da('0x23')](_0x5db511[0x0]);_0xf8aefd[_0xe7da('0x23')](_0x5db511[0x1]);_0xf8aefd['push'](_0x5db511[0x2]);_0xf8aefd[_0xe7da('0x23')](_0x5db511[0x3]);_0xf8aefd[_0xe7da('0x23')](_0x5db511['slice'](0x4,_0x5db511[_0xe7da('0x1a')])[_0xe7da('0x1c')](','));break;case _0xe7da('0x27'):var _0x11007a=_0x432754[_0xe7da('0x20')][_0xe7da('0x21')](',');_0xf8aefd[_0xe7da('0x23')](_0x11007a[0x0]);_0xf8aefd[_0xe7da('0x23')](_0x11007a[0x1]);_0xf8aefd['push'](_0x11007a[0x2]);_0xf8aefd[_0xe7da('0x23')](_0x11007a[0x3]);_0xf8aefd[_0xe7da('0x23')](_0x11007a[_0xe7da('0x24')](0x4,_0x11007a['length'])[_0xe7da('0x1c')](','));break;case _0xe7da('0x28'):_0xf8aefd[_0xe7da('0x23')](_0x432754[_0xe7da('0x20')]);break;case _0xe7da('0x29'):_0xf8aefd[_0xe7da('0x23')](_0x432754[_0xe7da('0x2a')]);_0xf8aefd['push'](_0x432754['appdata']);break;default:_0xf8aefd=_['isNil'](_0x432754[_0xe7da('0x20')])?[]:_0x432754[_0xe7da('0x20')][_0xe7da('0x21')](',');}var _0x464d09={'id':util[_0xe7da('0x2b')]('%s:%s:%s',_0x4a8c04,_0x432754['id'],_0x432754['app']),'condition':require(_0xe7da('0x2c'))['condition'](_0x4a8c04,getIntervals(_0xcbb472[_0xe7da('0x2d')],_0x432754),_0xcbb472),'consequence':require(_0xe7da('0x2e')+_0x432754[_0xe7da('0x1d')])[_0xe7da('0x2f')](_0x4a8c04,_0xf8aefd,_0xcbb472,_0x4cfd5f),'p':_0x432754[_0xe7da('0x30')]||0x0};logger[_0xe7da('0x31')]('Push\x20new\x20rule',_0x464d09['id'],_0xe7da('0x32'),getIntervals(_0xcbb472[_0xe7da('0x2d')],_0x432754)[_0xe7da('0x1c')](_0xe7da('0x33')));_0x1e57b7[_0xe7da('0x23')](_0x464d09);}else{logger[_0xe7da('0x34')](_0xe7da('0x35'),path[_0xe7da('0x1c')](__dirname,_0xe7da('0x18'),_0x432754['app']+_0xe7da('0x36')));}}_0xcbb472[_0xe7da('0x15')][_0x4a8c04]=new RuleEngine(_0x1e57b7);_0xcbb472['rules'][_0x4a8c04]['execute'](_0x4cfd5f,function(_0x3c86d1){logger['info'](_0xe7da('0x37'),JSON[_0xe7da('0x38')](_0x3c86d1['matchPath']));if(_0xcbb472['rules'][_0x4a8c04]){_0xcbb472[_0xe7da('0x15')][_0x4a8c04][_0xe7da('0x39')](_0xe7da('0x3a'));}});return _0x12daec({'code':0xc8,'message':_0x4cfd5f});}else{logger[_0xe7da('0x31')]('No\x20applications\x20to\x20execute');return _0x12daec({'code':0xc8,'message':_0x4cfd5f});}}catch(_0x1503bd){logger[_0xe7da('0x34')](_0x1503bd['stack']);return _0x6e3403(_0x8af351[_0xe7da('0x34')](0x1f4,_0x1503bd));}}return _0x6e3403(_0xe7da('0x3b'));});},'AcceptMessage':function(_0x224f44){var _0x3fc254=this;return new Promise(function(_0x1b24e2,_0x6168a1){if(_0x224f44['agent']&&_0x224f44[_0xe7da('0x3c')]['id']){if(_0xcbb472[_0xe7da('0x3d')][_0x224f44['agent']['id']]){_0xcbb472[_0xe7da('0x3d')][_0x224f44[_0xe7da('0x3c')]['id']]['busy']=![];_0xcbb472[_0xe7da('0x3d')][_0x224f44[_0xe7da('0x3c')]['id']][_0xe7da('0x3e')]=undefined;}}if(_0x224f44[_0xe7da('0x28')]&&_0x224f44[_0xe7da('0x28')]['id']){try{var _0x39cee4=getId(_0x224f44[_0xe7da('0x16')],_0x224f44[_0xe7da('0x28')]?_0x224f44[_0xe7da('0x28')]['id']:0x0,_0x224f44['interaction']?_0x224f44[_0xe7da('0x17')]['id']:0x0);if(_0xcbb472[_0xe7da('0x15')][_0x39cee4]){_0xcbb472['rules'][_0x39cee4]['emit'](_0xe7da('0x3f'));if(rpc[_0x224f44[_0xe7da('0x16')]+_0xe7da('0x40')]){rpc[_0x224f44[_0xe7da('0x16')]+_0xe7da('0x40')][_0xe7da('0x41')](_0x39cee4,{'UserId':_0x224f44[_0xe7da('0x28')][_0xe7da('0x42')]})['catch'](function(_0x2f03fb){logger[_0xe7da('0x34')](_0xe7da('0x43'));});}}return _0x1b24e2({'code':0xc8,'message':_0x224f44});}catch(_0x121685){logger[_0xe7da('0x34')](_0x121685[_0xe7da('0x44')]);return _0x6168a1(_0x3fc254[_0xe7da('0x34')](0x1f4,_0x121685));}}logger['error']('message\x20is\x20empty');return _0x6168a1(_0x3fc254['error'](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x128440){var _0x403ed6=this;return new Promise(function(_0x58ee13,_0x261e8c){if(_0x128440[_0xe7da('0x3c')]&&_0x128440[_0xe7da('0x3c')]['id']){try{if(_0xcbb472[_0xe7da('0x3d')][_0x128440['agent']['id']]){_0xcbb472[_0xe7da('0x3d')][_0x128440['agent']['id']][_0xe7da('0x45')]=![];_0xcbb472[_0xe7da('0x3d')][_0x128440[_0xe7da('0x3c')]['id']]['busyQueue']=undefined;}return _0x58ee13({'code':0xc8,'message':_0x128440});}catch(_0x2f6736){logger[_0xe7da('0x34')](_0x2f6736[_0xe7da('0x44')]);return _0x261e8c(_0x403ed6[_0xe7da('0x34')](0x1f4,_0x2f6736));}}logger[_0xe7da('0x34')](_0xe7da('0x46'));return _0x261e8c(_0x403ed6['error'](0x1f4,_0xe7da('0x46')));});},'AbandonInteraction':function(_0x405a71){var _0xd40259=this;return new Promise(function(_0x8c79e7,_0x222e20){if(_0x405a71['channel']&&_0x405a71[_0xe7da('0x17')]&&_0x405a71[_0xe7da('0x17')]['id']){try{var _0x2911cb=getId(_0x405a71[_0xe7da('0x16')],_0x405a71[_0xe7da('0x28')]?_0x405a71[_0xe7da('0x28')]['id']:0x0,_0x405a71[_0xe7da('0x17')]?_0x405a71[_0xe7da('0x17')]['id']:0x0);if(_0xcbb472['rules'][_0x2911cb]){_0xcbb472[_0xe7da('0x15')][_0x2911cb][_0xe7da('0x39')](_0xe7da('0x3f'));}return _0x8c79e7({'code':0xc8,'message':_0x405a71});}catch(_0x83914d){logger[_0xe7da('0x34')](_0x83914d[_0xe7da('0x44')]);return _0x222e20(_0xd40259[_0xe7da('0x34')](0x1f4,_0x83914d));}}logger[_0xe7da('0x34')](_0xe7da('0x46'));return _0x222e20(_0xd40259[_0xe7da('0x34')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x1d47a6){var _0xf6f87e=this;return new Promise(function(_0x5eb8ff,_0x5bb462){if(_0xcbb472[_0xe7da('0x3d')][_0xe7da('0x47')](_0x1d47a6['id'])){for(var _0x23c793 in _0x1d47a6[_0xe7da('0x48')]){if(_0x1d47a6['capacity'][_0xe7da('0x47')](_0x23c793)){if(_0xcbb472[_0xe7da('0x3d')][_0x1d47a6['id']][_0xe7da('0x47')](_0x23c793+_0xe7da('0x49'))){_0xcbb472['agents'][_0x1d47a6['id']][_0x23c793+_0xe7da('0x49')]=parseInt(_0x1d47a6[_0xe7da('0x48')][_0x23c793],0xa);}}}_0xcbb472[_0xe7da('0x3d')][_0x1d47a6['id']][_0xe7da('0x4a')]();return _0x5eb8ff({'code':0xc8,'message':_0xcbb472[_0xe7da('0x3d')][_0x1d47a6['id']]});}else{return _0x5bb462(_0xf6f87e['error'](0x1f4,_0xe7da('0x4b')));}});},'Agents':function(_0xc4ad0d){return new Promise(function(_0x4c7ee4,_0x4abecf){var _0x2e1511=_['values'](_0xcbb472[_0xe7da('0x3d')]);_0x4c7ee4({'count':_0x2e1511[_0xe7da('0x1a')],'rows':_0x2e1511});});},'ChatQueues':function(_0x2fa1f1){return new Promise(function(_0x1940dc,_0x17fa1d){var _0x4987da=[];for(var _0x419ef2 in _0xcbb472[_0xe7da('0x4c')]){if(_0xcbb472[_0xe7da('0x4c')]['hasOwnProperty'](_0x419ef2)){var _0x5f2598=_0xcbb472[_0xe7da('0x4c')][_0x419ef2];var _0x10785e={'id':_0x5f2598['id'],'available':_0x5f2598[_0xe7da('0x4d')],'loggedIn':_0x5f2598[_0xe7da('0x4e')],'name':_0x5f2598['name'],'paused':_0x5f2598[_0xe7da('0x4f')],'waiting':_0x5f2598[_0xe7da('0x50')]};_0x4987da['push'](_0x10785e);}}_0x1940dc({'count':_0x4987da[_0xe7da('0x1a')],'rows':_0x4987da});});},'MailQueues':function(_0x374f22){return new Promise(function(_0x10402f,_0x591dfd){var _0x195116=[];for(var _0x3383f6 in _0xcbb472[_0xe7da('0x51')]){if(_0xcbb472[_0xe7da('0x51')][_0xe7da('0x47')](_0x3383f6)){var _0xafd76a=_0xcbb472[_0xe7da('0x51')][_0x3383f6];var _0x24727f={'id':_0xafd76a['id'],'available':_0xafd76a[_0xe7da('0x4d')],'loggedIn':_0xafd76a['loggedIn'],'name':_0xafd76a[_0xe7da('0x52')],'paused':_0xafd76a[_0xe7da('0x4f')],'waiting':_0xafd76a[_0xe7da('0x50')]};_0x195116[_0xe7da('0x23')](_0x24727f);}}_0x10402f({'count':_0x195116['length'],'rows':_0x195116});});},'OpenchannelQueues':function(_0x24f161){return new Promise(function(_0x12d5a3,_0x4d4dd1){var _0xcee704=[];for(var _0x5712cd in _0xcbb472[_0xe7da('0x53')]){if(_0xcbb472[_0xe7da('0x53')][_0xe7da('0x47')](_0x5712cd)){var _0x3465ee=_0xcbb472[_0xe7da('0x53')][_0x5712cd];var _0x18516d={'id':_0x3465ee['id'],'available':_0x3465ee[_0xe7da('0x4d')],'loggedIn':_0x3465ee[_0xe7da('0x4e')],'name':_0x3465ee[_0xe7da('0x52')],'paused':_0x3465ee[_0xe7da('0x4f')],'waiting':_0x3465ee['waiting']};_0xcee704[_0xe7da('0x23')](_0x18516d);}}_0x12d5a3({'count':_0xcee704[_0xe7da('0x1a')],'rows':_0xcee704});});},'SmsQueues':function(_0x4a95e9){return new Promise(function(_0x4ed8a3,_0x2e2733){var _0x4c9e71=[];for(var _0x184a39 in _0xcbb472[_0xe7da('0x54')]){if(_0xcbb472[_0xe7da('0x54')]['hasOwnProperty'](_0x184a39)){var _0x54ab54=_0xcbb472[_0xe7da('0x54')][_0x184a39];var _0x5a69bf={'id':_0x54ab54['id'],'available':_0x54ab54[_0xe7da('0x4d')],'loggedIn':_0x54ab54[_0xe7da('0x4e')],'name':_0x54ab54[_0xe7da('0x52')],'paused':_0x54ab54['paused'],'waiting':_0x54ab54[_0xe7da('0x50')]};_0x4c9e71[_0xe7da('0x23')](_0x5a69bf);}}_0x4ed8a3({'count':_0x4c9e71[_0xe7da('0x1a')],'rows':_0x4c9e71});});},'FaxQueues':function(_0x323265){return new Promise(function(_0x3009a9,_0x35fb1c){var _0x4060d6=[];for(var _0x556f25 in _0xcbb472[_0xe7da('0x55')]){if(_0xcbb472[_0xe7da('0x55')][_0xe7da('0x47')](_0x556f25)){var _0x3c884c=_0xcbb472['faxQueues'][_0x556f25];var _0x24df94={'id':_0x3c884c['id'],'available':_0x3c884c['available'],'loggedIn':_0x3c884c['loggedIn'],'name':_0x3c884c[_0xe7da('0x52')],'paused':_0x3c884c[_0xe7da('0x4f')],'waiting':_0x3c884c['waiting']};_0x4060d6[_0xe7da('0x23')](_0x24df94);}}_0x3009a9({'count':_0x4060d6[_0xe7da('0x1a')],'rows':_0x4060d6});});},'WhatsappQueues':function(_0x25addc){return new Promise(function(_0x473987,_0x55aee8){var _0x5b1228=[];for(var _0x16b1c9 in _0xcbb472[_0xe7da('0x56')]){if(_0xcbb472[_0xe7da('0x56')][_0xe7da('0x47')](_0x16b1c9)){var _0x245967=_0xcbb472[_0xe7da('0x56')][_0x16b1c9];var _0x39b5cb={'id':_0x245967['id'],'available':_0x245967[_0xe7da('0x4d')],'loggedIn':_0x245967[_0xe7da('0x4e')],'name':_0x245967[_0xe7da('0x52')],'paused':_0x245967['paused'],'waiting':_0x245967[_0xe7da('0x50')]};_0x5b1228[_0xe7da('0x23')](_0x39b5cb);}}_0x473987({'count':_0x5b1228[_0xe7da('0x1a')],'rows':_0x5b1228});});},'ChatQueuesWaitingInteractions':function(_0x36572c){return new Promise(function(_0xe213f4,_0x459230){var _0x5daae8=_[_0xe7da('0x57')](_0xcbb472[_0xe7da('0x58')]);_0xe213f4({'count':_0x5daae8[_0xe7da('0x1a')],'rows':_0x5daae8});});},'MailQueuesWaitingInteractions':function(_0x59043d){return new Promise(function(_0x35d752,_0x3ccd1e){var _0x412965=_[_0xe7da('0x57')](_0xcbb472['mailQueuesWaitingInteractions']);_0x35d752({'count':_0x412965[_0xe7da('0x1a')],'rows':_0x412965});});},'OpenchannelQueuesWaitingInteractions':function(_0x19dbfa){return new Promise(function(_0x3d1a55,_0x5208e4){var _0x39fcc4=_['values'](_0xcbb472['openchannelQueuesWaitingInteractions']);_0x3d1a55({'count':_0x39fcc4[_0xe7da('0x1a')],'rows':_0x39fcc4});});},'SmsQueuesWaitingInteractions':function(_0x254e4e){return new Promise(function(_0x40474c,_0x5b5efd){var _0x738982=_['values'](_0xcbb472[_0xe7da('0x59')]);_0x40474c({'count':_0x738982[_0xe7da('0x1a')],'rows':_0x738982});});},'FaxQueuesWaitingInteractions':function(_0x4a466d){return new Promise(function(_0x330d18,_0x62f4d2){var _0x177123=_['values'](_0xcbb472[_0xe7da('0x5a')]);_0x330d18({'count':_0x177123[_0xe7da('0x1a')],'rows':_0x177123});});},'WhatsappQueuesWaitingInteractions':function(_0x589536){return new Promise(function(_0x7ae7f8,_0x5ce98c){var _0x1cb283=_[_0xe7da('0x57')](_0xcbb472[_0xe7da('0x5b')]);_0x7ae7f8({'count':_0x1cb283['length'],'rows':_0x1cb283});});}};var _0x583eff=jayson[_0xe7da('0x5c')](_0x1b1b1d)['http']();_0x583eff['on']('error',function(_0x49a352){logger['error'](JSON[_0xe7da('0x38')](_0x49a352));return _0x18982f(_0x49a352);});_0x583eff[_0xe7da('0x14')](0x232c,_0xe7da('0x5d'),function(){console[_0xe7da('0x5e')](_0xe7da('0x5f'),0x232c);return _0x1cf4f5('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
index 16b4f42..255d7e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf56d=['http','request','error','catch','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','Command','format','iftime\x20%s','then','message','indexOf','true','[%s][INTERVAL]\x20%s','all','[%s][INTERVAL]\x20%s\x20%s','when','stack','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','client'];(function(_0x407a4d,_0x428623){var _0x216346=function(_0x53b62b){while(--_0x53b62b){_0x407a4d['push'](_0x407a4d['shift']());}};_0x216346(++_0x428623);}(_0xf56d,0xf5));var _0xdf56=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf56d[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xdf56('0x0'));var BPromise=require(_0xdf56('0x1'));var jayson=require(_0xdf56('0x2'));var _=require(_0xdf56('0x3'));var logger=require(_0xdf56('0x4'))(_0xdf56('0x5'));var client=jayson[_0xdf56('0x6')][_0xdf56('0x7')]({'port':0x232a});function request(_0x1ce6ae,_0x52bafb){return new BPromise(function(_0x5783a3,_0xd3711f){return client[_0xdf56('0x8')](_0x1ce6ae,_0x52bafb)['then'](function(_0x1b9eb3){if(_0x1b9eb3[_0xdf56('0x9')]){return _0xd3711f(_0x1b9eb3[_0xdf56('0x9')]['message']);}else{return _0x5783a3(_0x1b9eb3['result']);}})[_0xdf56('0xa')](function(_0x1da13b){return _0xd3711f(_0x1da13b);});});}exports['condition']=function(_0x127ad7,_0x3c100a,_0x2cd6fd){return function(_0x2ec77a){if(_0x2cd6fd[_0xdf56('0xb')]&&!_0x2cd6fd['rules'][_0x127ad7]){logger[_0xdf56('0xc')](_0xdf56('0xd'),_0x127ad7);return _0x2ec77a[_0xdf56('0xe')]();}var _0x319e8a=[];for(var _0x2f4335=0x0;_0x2f4335<_0x3c100a[_0xdf56('0xf')];_0x2f4335+=0x1){_0x319e8a['push'](request(_0xdf56('0x10'),{'command':util[_0xdf56('0x11')](_0xdf56('0x12'),_0x3c100a[_0x2f4335])})[_0xdf56('0x13')](function(_0x390cdd){return _0x390cdd&&_0x390cdd[_0xdf56('0x14')]&&_0x390cdd[_0xdf56('0x14')][_0xdf56('0x15')](_0xdf56('0x16'))>=0x0?!![]:![];})[_0xdf56('0xa')](function(_0x3cb2fe){logger[_0xdf56('0x9')](_0xdf56('0x17'),_0x127ad7,_0x3c100a[_0x2f4335]);}));}BPromise[_0xdf56('0x18')](_0x319e8a)['then'](function(_0x6bcaa5){var _0x4de63d=_['some'](_0x6bcaa5);logger[_0xdf56('0xc')](_0xdf56('0x19'),_0x127ad7,_0x3c100a['join']('\x20|\x20'),_0x4de63d);_0x2ec77a[_0xdf56('0x1a')](_0x4de63d);})['catch'](function(_0x5bae63){console['log'](_0x5bae63);logger[_0xdf56('0x9')](_0xdf56('0x19'),_0x127ad7,_0x3c100a['join']('\x20|\x20'),_0x5bae63[_0xdf56('0x1b')]);_0x2ec77a[_0xdf56('0xe')]();});};};
\ No newline at end of file
+var _0x2384=['iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','log','stack','jayson/promise','lodash','../../../config/logger','client','http','request','then','error','message','result','catch','condition','rules','info','stop','length','push','format'];(function(_0xa30766,_0x6f613e){var _0x24e780=function(_0x3d58fb){while(--_0x3d58fb){_0xa30766['push'](_0xa30766['shift']());}};_0x24e780(++_0x6f613e);}(_0x2384,0x1be));var _0x4238=function(_0xf44187,_0x4a9c62){_0xf44187=_0xf44187-0x0;var _0x3de8c1=_0x2384[_0xf44187];return _0x3de8c1;};'use strict';var util=require('util');var BPromise=require('bluebird');var jayson=require(_0x4238('0x0'));var _=require(_0x4238('0x1'));var logger=require(_0x4238('0x2'))('routing');var client=jayson[_0x4238('0x3')][_0x4238('0x4')]({'port':0x232a});function request(_0x4b247a,_0x26c7df){return new BPromise(function(_0x59a4ef,_0x56e4ba){return client[_0x4238('0x5')](_0x4b247a,_0x26c7df)[_0x4238('0x6')](function(_0x9be9ec){if(_0x9be9ec[_0x4238('0x7')]){return _0x56e4ba(_0x9be9ec[_0x4238('0x7')][_0x4238('0x8')]);}else{return _0x59a4ef(_0x9be9ec[_0x4238('0x9')]);}})[_0x4238('0xa')](function(_0x5bb69a){return _0x56e4ba(_0x5bb69a);});});}exports[_0x4238('0xb')]=function(_0x110b35,_0x222a10,_0x5bf4db){return function(_0x3826b8){if(_0x5bf4db[_0x4238('0xc')]&&!_0x5bf4db[_0x4238('0xc')][_0x110b35]){logger[_0x4238('0xd')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x110b35);return _0x3826b8[_0x4238('0xe')]();}var _0x9cf185=[];for(var _0xe18606=0x0;_0xe18606<_0x222a10[_0x4238('0xf')];_0xe18606+=0x1){_0x9cf185[_0x4238('0x10')](request('Command',{'command':util[_0x4238('0x11')](_0x4238('0x12'),_0x222a10[_0xe18606])})['then'](function(_0x14b727){return _0x14b727&&_0x14b727['message']&&_0x14b727[_0x4238('0x8')][_0x4238('0x13')](_0x4238('0x14'))>=0x0?!![]:![];})[_0x4238('0xa')](function(_0x43d3f4){logger[_0x4238('0x7')](_0x4238('0x15'),_0x110b35,_0x222a10[_0xe18606]);}));}BPromise[_0x4238('0x16')](_0x9cf185)['then'](function(_0xf2083f){var _0x5d865a=_[_0x4238('0x17')](_0xf2083f);logger[_0x4238('0xd')](_0x4238('0x18'),_0x110b35,_0x222a10[_0x4238('0x19')](_0x4238('0x1a')),_0x5d865a);_0x3826b8['when'](_0x5d865a);})[_0x4238('0xa')](function(_0x41b321){console[_0x4238('0x1b')](_0x41b321);logger['error'](_0x4238('0x18'),_0x110b35,_0x222a10[_0x4238('0x19')]('\x20|\x20'),_0x41b321[_0x4238('0x1c')]);_0x3826b8['stop']();});};};
\ No newline at end of file
index 18c126e..4e5d560 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','complete','./utils','info','format','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','agentcalled','debug','destuniqueid','agentcalledAt','now','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','ringtime','talktime','push','forIn','includes','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','answered_elsewhere','[%s][agents][agentcomplete]','diffTime','agentcompleteAt','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','origtransfereruniqueid','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]'];(function(_0x4b1314,_0xbdac65){var _0x3a25ca=function(_0x2be3b0){while(--_0x2be3b0){_0x4b1314['push'](_0x4b1314['shift']());}};_0x3a25ca(++_0xbdac65);}(_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 utils=require(_0x3071('0x0'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x2afa91,_0x27405a){utils[_0x3071('0x1')](util[_0x3071('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x2afa91[_0x3071('0x3')],_0x2afa91[_0x3071('0x4')],_0x2afa91[_0x3071('0x5')],_0x2afa91[_0x3071('0x6')],_0x2afa91[_0x3071('0x7')],_0x2afa91[_0x3071('0x8')],_0x2afa91[_0x3071('0x9')],_0x2afa91[_0x3071('0xa')]));if(_0x2afa91[_0x3071('0x5')]){utils[_0x3071('0xb')](_0x2afa91[_0x3071('0x5')])[_0x3071('0xc')](function(_0x1a868e){if(_0x1a868e){_0x2afa91['type']=_0x1a868e[_0x3071('0xd')];_0x2afa91[_0x3071('0xe')]=_0x2afa91[_0x3071('0xf')]?_0x1a868e[_0x3071('0x10')]:![];_0x2afa91[_0x3071('0x11')]=_0x2afa91['agentacw']?_0x1a868e[_0x3071('0x12')]:0x0;}utils[_0x3071('0x13')](_0x3071('0x14'),_0x2afa91);});}else{utils[_0x3071('0x13')](_0x3071('0x14'),_0x2afa91);}if(_0x27405a){delete transfers[_0x2afa91['uniqueid']];}else{delete agents[_0x2afa91['destuniqueid']];}}exports[_0x3071('0x15')]=function(_0x5dc13b){try{utils[_0x3071('0x16')](util[_0x3071('0x2')]('[%s][agents][agentcalled]',_0x5dc13b[_0x3071('0x3')]),_0x5dc13b);agents[_0x5dc13b['destuniqueid']]=_0x5dc13b;agents[_0x5dc13b[_0x3071('0x17')]][_0x3071('0x18')]=utils[_0x3071('0x19')]();agents[_0x5dc13b[_0x3071('0x17')]][_0x3071('0xa')]=_0x3071('0x1a');agents[_0x5dc13b[_0x3071('0x17')]][_0x3071('0x9')]=null;agents[_0x5dc13b[_0x3071('0x17')]][_0x3071('0x1b')]=null;utils['info'](util[_0x3071('0x2')](_0x3071('0x1c'),_0x5dc13b[_0x3071('0x3')],agents[_0x5dc13b[_0x3071('0x17')]][_0x3071('0x6')],_0x5dc13b[_0x3071('0x17')]));}catch(_0x105bbb){utils[_0x3071('0x1d')](util['format'](_0x3071('0x1e'),_0x5dc13b[_0x3071('0x3')]),_0x105bbb);}};exports[_0x3071('0x1f')]=function(_0x56c267){try{if(!_[_0x3071('0x20')](agents[_0x56c267['destuniqueid']])){utils[_0x3071('0x16')](util[_0x3071('0x2')](_0x3071('0x21'),_0x56c267[_0x3071('0x3')]),_0x56c267);utils[_0x3071('0x1')](util[_0x3071('0x2')](_0x3071('0x22'),_0x56c267[_0x3071('0x3')],agents[_0x56c267['destuniqueid']]['membername'],_0x56c267[_0x3071('0x17')]));agents[_0x56c267[_0x3071('0x17')]][_0x3071('0x1f')]=!![];agents[_0x56c267[_0x3071('0x17')]][_0x3071('0x23')]=utils[_0x3071('0x19')]();agents[_0x56c267[_0x3071('0x17')]][_0x3071('0xa')]=_0x3071('0x24');agents[_0x56c267['destuniqueid']][_0x3071('0x25')]=_0x3071('0x24');agents[_0x56c267[_0x3071('0x17')]]['holdtime']=_0x56c267[_0x3071('0x26')]?parseInt(_0x56c267[_0x3071('0x26')])/0x3e8:0x0;agents[_0x56c267[_0x3071('0x17')]][_0x3071('0x27')]=0x0;unanswered[_0x3071('0x28')](_0x56c267[_0x3071('0x17')]);}}catch(_0x177b5f){utils[_0x3071('0x1d')](util[_0x3071('0x2')](_0x3071('0x21'),_0x56c267[_0x3071('0x3')]),_0x177b5f);}};exports['queuecallerabandon']=function(_0x4f1484){try{_[_0x3071('0x29')](agents,function(_0x149e0d,_0x6ddf96){if(_0x149e0d[_0x3071('0x3')]==_0x4f1484[_0x3071('0x3')]&&!_[_0x3071('0x2a')](unanswered,_0x149e0d[_0x3071('0x17')])){utils[_0x3071('0x16')](util['format']('[%s][agents][queuecallerabandon]',_0x4f1484['uniqueid']),_0x4f1484);utils[_0x3071('0x1')](util[_0x3071('0x2')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x4f1484[_0x3071('0x3')],_0x149e0d[_0x3071('0x6')],_0x149e0d[_0x3071('0x17')]));_0x149e0d[_0x3071('0x1f')]=!![];_0x149e0d['agentringnoanswerAt']=utils[_0x3071('0x19')]();_0x149e0d[_0x3071('0xa')]=_0x3071('0x2b');_0x149e0d[_0x3071('0x25')]=_0x3071('0x2b');_0x149e0d[_0x3071('0x2c')]=_0x4f1484[_0x3071('0x2c')];_0x149e0d[_0x3071('0x27')]=0x0;writeDB(_0x149e0d);}});}catch(_0x596cc3){utils[_0x3071('0x1d')](util['format']('[%s][agents][queuecallerabandon]',_0x4f1484[_0x3071('0x3')]),_0x596cc3);}};exports[_0x3071('0x2d')]=function(_0x54d9c3){try{if(agents[_0x54d9c3[_0x3071('0x17')]]){utils[_0x3071('0x16')](util[_0x3071('0x2')](_0x3071('0x2e'),_0x54d9c3[_0x3071('0x3')]),_0x54d9c3);utils[_0x3071('0x1')](util['format'](_0x3071('0x2f'),_0x54d9c3[_0x3071('0x3')],agents[_0x54d9c3['destuniqueid']][_0x3071('0x6')],_0x54d9c3['destuniqueid']));agents[_0x54d9c3[_0x3071('0x17')]][_0x3071('0x30')]=utils['now']();agents[_0x54d9c3['destuniqueid']][_0x3071('0x9')]=_0x54d9c3[_0x3071('0x9')];agents[_0x54d9c3[_0x3071('0x17')]]['connectedlinename']=_0x54d9c3[_0x3071('0x1b')];agents[_0x54d9c3['destuniqueid']][_0x3071('0x2c')]=_0x54d9c3['ringtime'];agents[_0x54d9c3[_0x3071('0x17')]][_0x3071('0xa')]=_0x3071('0x31');_[_0x3071('0x29')](agents,function(_0x30ab68,_0x593c9c){if(_0x30ab68['destuniqueid']!=_0x54d9c3[_0x3071('0x17')]&&_0x30ab68[_0x3071('0x3')]==_0x54d9c3[_0x3071('0x3')]){_0x30ab68[_0x3071('0x27')]=0x0;_0x30ab68['holdtime']=_0x54d9c3[_0x3071('0x26')];_0x30ab68[_0x3071('0x1f')]=!![];_0x30ab68[_0x3071('0x23')]=utils[_0x3071('0x19')]();_0x30ab68[_0x3071('0xa')]=_0x3071('0x32');_0x30ab68['reason']=_0x3071('0x32');_0x30ab68['answeredelsewheredestinationuniqueid']=_0x54d9c3['destuniqueid'];_0x30ab68['answeredelsewheremembername']=_0x54d9c3['membername'];writeDB(_0x30ab68);}});}}catch(_0x2992e6){utils[_0x3071('0x1d')](util[_0x3071('0x2')](_0x3071('0x2e'),_0x54d9c3[_0x3071('0x3')]),_0x2992e6);}};exports[_0x3071('0xf')]=function(_0xa711b5){try{if(!_[_0x3071('0x20')](agents[_0xa711b5['destuniqueid']])){utils[_0x3071('0x16')](util[_0x3071('0x2')](_0x3071('0x33'),_0xa711b5[_0x3071('0x3')]),_0xa711b5);utils[_0x3071('0x1')](util['format']('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0xa711b5[_0x3071('0x3')],agents[_0xa711b5[_0x3071('0x17')]][_0x3071('0x6')],_0xa711b5[_0x3071('0x17')]));agents[_0xa711b5[_0x3071('0x17')]]['agentcomplete']=!![];agents[_0xa711b5[_0x3071('0x17')]]['agentcompleteAt']=utils[_0x3071('0x19')]();agents[_0xa711b5['destuniqueid']]['talktime']=utils[_0x3071('0x34')](agents[_0xa711b5['destuniqueid']][_0x3071('0x35')],agents[_0xa711b5['destuniqueid']][_0x3071('0x30')]);agents[_0xa711b5[_0x3071('0x17')]][_0x3071('0x25')]=_0xa711b5[_0x3071('0x25')];agents[_0xa711b5['destuniqueid']][_0x3071('0xa')]='complete';writeDB(agents[_0xa711b5[_0x3071('0x17')]]);}}catch(_0x4b6bbb){utils[_0x3071('0x1d')](util[_0x3071('0x2')]('[%s][agents][agentcomplete]',_0xa711b5[_0x3071('0x3')]),_0x4b6bbb);}};exports[_0x3071('0x36')]=function(_0x224a70){try{if(!_[_0x3071('0x20')](agents[_0x224a70[_0x3071('0x37')]])){utils[_0x3071('0x16')](util[_0x3071('0x2')]('[%s][agents][blindtransfer]',_0x224a70[_0x3071('0x3')]),_0x224a70);utils[_0x3071('0x1')](util[_0x3071('0x2')](_0x3071('0x38'),_0x224a70['uniqueid'],agents[_0x224a70[_0x3071('0x37')]][_0x3071('0x6')],agents[_0x224a70[_0x3071('0x37')]][_0x3071('0x3')]));agents[_0x224a70[_0x3071('0x37')]][_0x3071('0x39')]=!![];agents[_0x224a70[_0x3071('0x37')]][_0x3071('0x3a')]=_0x3071('0x3b');agents[_0x224a70[_0x3071('0x37')]][_0x3071('0x3c')]=_0x224a70[_0x3071('0x3d')];agents[_0x224a70[_0x3071('0x37')]][_0x3071('0x3e')]=agents[_0x224a70[_0x3071('0x37')]][_0x3071('0x3')];}}catch(_0x596cdd){utils['error'](util[_0x3071('0x2')]('[%s][agents][blindtransfer]',_0x224a70[_0x3071('0x3')]),_0x596cdd);}};exports[_0x3071('0x3f')]=function(_0x15c6f8){try{utils['debug'](util[_0x3071('0x2')](_0x3071('0x40'),_0x15c6f8['origtransfereruniqueid']),_0x15c6f8);if(_0x15c6f8['origtransfereruniqueid']==_0x15c6f8[_0x3071('0x41')]){if(!_[_0x3071('0x20')](agents[_0x15c6f8[_0x3071('0x42')]])){utils[_0x3071('0x1')](util['format'](_0x3071('0x43'),_0x15c6f8[_0x3071('0x44')],agents[_0x15c6f8[_0x3071('0x42')]][_0x3071('0x6')]));agents[_0x15c6f8[_0x3071('0x42')]]['transfer']=!![];agents[_0x15c6f8[_0x3071('0x42')]][_0x3071('0x3a')]=_0x3071('0x45');agents[_0x15c6f8[_0x3071('0x42')]][_0x3071('0x3c')]=_0x15c6f8[_0x3071('0x46')];agents[_0x15c6f8[_0x3071('0x42')]]['transferuniqueid']=_0x15c6f8['origtransfereruniqueid'];}if(_0x15c6f8[_0x3071('0x47')]&&agents[_0x15c6f8['transfereeuniqueid']]){agents[_0x15c6f8[_0x3071('0x47')]][_0x3071('0x48')]=0x1;transfers[_0x15c6f8['transfereeuniqueid']]=_[_0x3071('0x49')](agents[_0x15c6f8[_0x3071('0x47')]]);transfers[_0x15c6f8['transfereeuniqueid']][_0x3071('0x8')]=agents[_0x15c6f8[_0x3071('0x42')]][_0x3071('0x8')];transfers[_0x15c6f8[_0x3071('0x47')]][_0x3071('0x4a')]=agents[_0x15c6f8['secondtransfereruniqueid']][_0x3071('0x4a')];transfers[_0x15c6f8[_0x3071('0x47')]][_0x3071('0x18')]=utils['now']();transfers[_0x15c6f8[_0x3071('0x47')]][_0x3071('0x30')]=utils[_0x3071('0x19')]();transfers[_0x15c6f8[_0x3071('0x47')]][_0x3071('0x2c')]=0x0;transfers[_0x15c6f8[_0x3071('0x47')]][_0x3071('0x48')]=0x2;}}else if(_0x15c6f8[_0x3071('0x42')]==_0x15c6f8[_0x3071('0x4b')]){if(!_['isNil'](agents[_0x15c6f8[_0x3071('0x44')]])){utils[_0x3071('0x1')](util[_0x3071('0x2')](_0x3071('0x43'),_0x15c6f8[_0x3071('0x44')],agents[_0x15c6f8[_0x3071('0x44')]][_0x3071('0x6')]));agents[_0x15c6f8[_0x3071('0x44')]][_0x3071('0x39')]=!![];agents[_0x15c6f8[_0x3071('0x44')]][_0x3071('0x3a')]='ATTENDED';agents[_0x15c6f8[_0x3071('0x44')]][_0x3071('0x3c')]=_0x15c6f8[_0x3071('0x4c')];agents[_0x15c6f8[_0x3071('0x44')]][_0x3071('0x3e')]=_0x15c6f8[_0x3071('0x42')];}if(_0x15c6f8[_0x3071('0x4d')]&&agents[_0x15c6f8[_0x3071('0x4d')]]){agents[_0x15c6f8['transfertargetuniqueid']][_0x3071('0x48')]=0x1;transfers[_0x15c6f8[_0x3071('0x4d')]]=_['clone'](agents[_0x15c6f8['transfertargetuniqueid']]);transfers[_0x15c6f8[_0x3071('0x4d')]][_0x3071('0x8')]=agents[_0x15c6f8[_0x3071('0x44')]][_0x3071('0x8')];transfers[_0x15c6f8['transfertargetuniqueid']]['calleridname']=agents[_0x15c6f8[_0x3071('0x44')]]['calleridname'];transfers[_0x15c6f8['transfertargetuniqueid']]['agentcalledAt']=utils['now']();transfers[_0x15c6f8[_0x3071('0x4d')]][_0x3071('0x30')]=utils[_0x3071('0x19')]();transfers[_0x15c6f8['transfertargetuniqueid']][_0x3071('0x2c')]=0x0;transfers[_0x15c6f8[_0x3071('0x4d')]][_0x3071('0x48')]=0x2;}}}catch(_0x19a03d){utils['error'](util[_0x3071('0x2')](_0x3071('0x40'),_0x15c6f8['origtransfereruniqueid']),_0x19a03d);}};exports[_0x3071('0x4e')]=function(_0x29ee70){try{utils[_0x3071('0x16')](util[_0x3071('0x2')](_0x3071('0x4f'),_0x29ee70[_0x3071('0x3')]),_0x29ee70);if(agents[_0x29ee70[_0x3071('0x3')]]&&agents[_0x29ee70['uniqueid']]['reason']===_0x3071('0x24')){if(_0x29ee70[_0x3071('0x50')]==='21'){agents[_0x29ee70[_0x3071('0x3')]]['reason']='rejected';agents[_0x29ee70[_0x3071('0x3')]][_0x3071('0xa')]=_0x3071('0x51');}utils[_0x3071('0x1')](util[_0x3071('0x2')](_0x3071('0x52'),_0x29ee70[_0x3071('0x3')],agents[_0x29ee70[_0x3071('0x3')]]['membername'],agents[_0x29ee70[_0x3071('0x3')]]['reason'],agents[_0x29ee70[_0x3071('0x3')]][_0x3071('0xa')]));writeDB(agents[_0x29ee70[_0x3071('0x3')]]);var _0x2fbac7=unanswered[_0x3071('0x53')](_0x29ee70[_0x3071('0x3')]);if(_0x2fbac7>-0x1){unanswered[_0x3071('0x54')](_0x2fbac7,0x1);}}if(transfers[_0x29ee70[_0x3071('0x3')]]){transfers[_0x29ee70['uniqueid']][_0x3071('0xf')]=!![];transfers[_0x29ee70[_0x3071('0x3')]][_0x3071('0x35')]=utils['now']();transfers[_0x29ee70[_0x3071('0x3')]][_0x3071('0x27')]=utils[_0x3071('0x34')](transfers[_0x29ee70['uniqueid']]['agentcompleteAt'],transfers[_0x29ee70[_0x3071('0x3')]]['agentconnectAt']);transfers[_0x29ee70[_0x3071('0x3')]][_0x3071('0x25')]=_0x3071('0x55');transfers[_0x29ee70[_0x3071('0x3')]][_0x3071('0xa')]=_0x3071('0x56');utils[_0x3071('0x1')](util['format'](_0x3071('0x52'),_0x29ee70[_0x3071('0x3')],transfers[_0x29ee70[_0x3071('0x3')]][_0x3071('0x6')],transfers[_0x29ee70[_0x3071('0x3')]][_0x3071('0x25')],transfers[_0x29ee70[_0x3071('0x3')]][_0x3071('0xa')]));writeDB(transfers[_0x29ee70['uniqueid']],!![]);}if(agents[_0x29ee70[_0x3071('0x3')]]&&agents[_0x29ee70['uniqueid']][_0x3071('0x30')]){agents[_0x29ee70[_0x3071('0x3')]][_0x3071('0xf')]=!![];agents[_0x29ee70[_0x3071('0x3')]][_0x3071('0x35')]=utils[_0x3071('0x19')]();agents[_0x29ee70[_0x3071('0x3')]][_0x3071('0x27')]=utils[_0x3071('0x34')](agents[_0x29ee70[_0x3071('0x3')]]['agentcompleteAt'],agents[_0x29ee70[_0x3071('0x3')]][_0x3071('0x30')]);agents[_0x29ee70['uniqueid']][_0x3071('0x25')]=agents[_0x29ee70[_0x3071('0x3')]][_0x3071('0x39')]?_0x3071('0x39'):_0x3071('0x55');agents[_0x29ee70['uniqueid']]['lastevent']=_0x3071('0x56');utils['info'](util[_0x3071('0x2')](_0x3071('0x52'),_0x29ee70[_0x3071('0x3')],agents[_0x29ee70[_0x3071('0x3')]][_0x3071('0x6')],agents[_0x29ee70[_0x3071('0x3')]]['reason'],agents[_0x29ee70[_0x3071('0x3')]][_0x3071('0xa')]));writeDB(agents[_0x29ee70[_0x3071('0x3')]]);}}catch(_0x291bb9){utils['error'](util[_0x3071('0x2')](_0x3071('0x4f'),_0x29ee70['uniqueid']),_0x291bb9);}};
\ No newline at end of file
+var _0x4ded=['agentcompleteAt','agentconnectAt','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','blind','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','transfertype','ATTENDED','transferexten','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfererexten','transfertargetuniqueid','hangup','cause','rejected','indexOf','splice','agent','lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','agentcomplete','acw','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','ringtime','talktime','error','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','[%s][agents][agentcomplete]','diffTime'];(function(_0x13aba3,_0x4812fa){var _0x35bd21=function(_0x4da062){while(--_0x4da062){_0x13aba3['push'](_0x13aba3['shift']());}};_0x35bd21(++_0x4812fa);}(_0x4ded,0x116));var _0xd4de=function(_0x180b8f,_0x3da161){_0x180b8f=_0x180b8f-0x0;var _0x1a2e57=_0x4ded[_0x180b8f];return _0x1a2e57;};'use strict';var _=require(_0xd4de('0x0'));var util=require(_0xd4de('0x1'));var utils=require(_0xd4de('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x1fa334,_0x2349f5){utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x5'),_0x1fa334[_0xd4de('0x6')],_0x1fa334[_0xd4de('0x7')],_0x1fa334[_0xd4de('0x8')],_0x1fa334[_0xd4de('0x9')],_0x1fa334['interface'],_0x1fa334[_0xd4de('0xa')],_0x1fa334[_0xd4de('0xb')],_0x1fa334[_0xd4de('0xc')]));if(_0x1fa334[_0xd4de('0x8')]){utils[_0xd4de('0xd')](_0x1fa334[_0xd4de('0x8')])['then'](function(_0xb7e8cf){if(_0xb7e8cf){_0x1fa334['type']=_0xb7e8cf['type'];_0x1fa334['agentacw']=_0x1fa334[_0xd4de('0xe')]?_0xb7e8cf[_0xd4de('0xf')]:![];_0x1fa334['acwtime']=_0x1fa334['agentacw']?_0xb7e8cf['acwTimeout']:0x0;}utils[_0xd4de('0x10')]('CreateVoiceAgentReport',_0x1fa334);});}else{utils[_0xd4de('0x10')](_0xd4de('0x11'),_0x1fa334);}if(_0x2349f5){delete transfers[_0x1fa334[_0xd4de('0x6')]];}else{delete agents[_0x1fa334[_0xd4de('0x12')]];}}exports[_0xd4de('0x13')]=function(_0x3af6e0){try{utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x15'),_0x3af6e0[_0xd4de('0x6')]),_0x3af6e0);agents[_0x3af6e0[_0xd4de('0x12')]]=_0x3af6e0;agents[_0x3af6e0[_0xd4de('0x12')]][_0xd4de('0x16')]=utils[_0xd4de('0x17')]();agents[_0x3af6e0[_0xd4de('0x12')]][_0xd4de('0xc')]=_0xd4de('0x18');agents[_0x3af6e0['destuniqueid']]['connectedlinenum']=null;agents[_0x3af6e0[_0xd4de('0x12')]][_0xd4de('0x19')]=null;utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x3af6e0['uniqueid'],agents[_0x3af6e0[_0xd4de('0x12')]]['membername'],_0x3af6e0[_0xd4de('0x12')]));}catch(_0x29c028){utils['error'](util[_0xd4de('0x4')]('[%s][agents][agentcalled]',_0x3af6e0[_0xd4de('0x6')]),_0x29c028);}};exports[_0xd4de('0x1a')]=function(_0x2bad14){try{if(!_[_0xd4de('0x1b')](agents[_0x2bad14['destuniqueid']])){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x1c'),_0x2bad14[_0xd4de('0x6')]),_0x2bad14);utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x1d'),_0x2bad14[_0xd4de('0x6')],agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x9')],_0x2bad14['destuniqueid']));agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x1a')]=!![];agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x1e')]=utils[_0xd4de('0x17')]();agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0xc')]=_0xd4de('0x1f');agents[_0x2bad14[_0xd4de('0x12')]][_0xd4de('0x20')]=_0xd4de('0x1f');agents[_0x2bad14[_0xd4de('0x12')]]['holdtime']=_0x2bad14[_0xd4de('0x21')]?parseInt(_0x2bad14[_0xd4de('0x21')])/0x3e8:0x0;agents[_0x2bad14['destuniqueid']][_0xd4de('0x22')]=0x0;unanswered['push'](_0x2bad14[_0xd4de('0x12')]);}}catch(_0x32e407){utils[_0xd4de('0x23')](util['format'](_0xd4de('0x1c'),_0x2bad14[_0xd4de('0x6')]),_0x32e407);}};exports[_0xd4de('0x24')]=function(_0x50cb73){try{_[_0xd4de('0x25')](agents,function(_0x1804c7,_0x55f9f9){if(_0x1804c7['uniqueid']==_0x50cb73['uniqueid']&&!_[_0xd4de('0x26')](unanswered,_0x1804c7['destuniqueid'])){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x27'),_0x50cb73[_0xd4de('0x6')]),_0x50cb73);utils['info'](util[_0xd4de('0x4')](_0xd4de('0x28'),_0x50cb73['uniqueid'],_0x1804c7[_0xd4de('0x9')],_0x1804c7[_0xd4de('0x12')]));_0x1804c7['agentringnoanswer']=!![];_0x1804c7['agentringnoanswerAt']=utils[_0xd4de('0x17')]();_0x1804c7[_0xd4de('0xc')]=_0xd4de('0x29');_0x1804c7[_0xd4de('0x20')]='abandoned';_0x1804c7[_0xd4de('0x2a')]=_0x50cb73[_0xd4de('0x2a')];_0x1804c7['talktime']=0x0;writeDB(_0x1804c7);}});}catch(_0x329d49){utils[_0xd4de('0x23')](util[_0xd4de('0x4')](_0xd4de('0x27'),_0x50cb73[_0xd4de('0x6')]),_0x329d49);}};exports[_0xd4de('0x2b')]=function(_0x53441c){try{if(agents[_0x53441c['destuniqueid']]){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x2c'),_0x53441c['uniqueid']),_0x53441c);utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x53441c[_0xd4de('0x6')],agents[_0x53441c[_0xd4de('0x12')]][_0xd4de('0x9')],_0x53441c[_0xd4de('0x12')]));agents[_0x53441c['destuniqueid']]['agentconnectAt']=utils[_0xd4de('0x17')]();agents[_0x53441c['destuniqueid']][_0xd4de('0xb')]=_0x53441c['connectedlinenum'];agents[_0x53441c[_0xd4de('0x12')]][_0xd4de('0x19')]=_0x53441c[_0xd4de('0x19')];agents[_0x53441c[_0xd4de('0x12')]]['holdtime']=_0x53441c[_0xd4de('0x21')];agents[_0x53441c['destuniqueid']][_0xd4de('0xc')]=_0xd4de('0x2d');_[_0xd4de('0x25')](agents,function(_0x4517a6,_0x349c5f){if(_0x4517a6[_0xd4de('0x12')]!=_0x53441c[_0xd4de('0x12')]&&_0x4517a6['uniqueid']==_0x53441c[_0xd4de('0x6')]){_0x4517a6[_0xd4de('0x22')]=0x0;_0x4517a6[_0xd4de('0x2a')]=_0x53441c[_0xd4de('0x21')];_0x4517a6[_0xd4de('0x1a')]=!![];_0x4517a6['agentringnoanswerAt']=utils[_0xd4de('0x17')]();_0x4517a6[_0xd4de('0xc')]=_0xd4de('0x2e');_0x4517a6['reason']=_0xd4de('0x2e');_0x4517a6[_0xd4de('0x2f')]=_0x53441c[_0xd4de('0x12')];_0x4517a6['answeredelsewheremembername']=_0x53441c[_0xd4de('0x9')];writeDB(_0x4517a6);}});}}catch(_0x10a42c){utils[_0xd4de('0x23')](util[_0xd4de('0x4')](_0xd4de('0x2c'),_0x53441c[_0xd4de('0x6')]),_0x10a42c);}};exports[_0xd4de('0xe')]=function(_0x5ecbbd){try{if(!_[_0xd4de('0x1b')](agents[_0x5ecbbd[_0xd4de('0x12')]])){utils[_0xd4de('0x14')](util['format'](_0xd4de('0x30'),_0x5ecbbd[_0xd4de('0x6')]),_0x5ecbbd);utils[_0xd4de('0x3')](util['format']('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x5ecbbd[_0xd4de('0x6')],agents[_0x5ecbbd[_0xd4de('0x12')]]['membername'],_0x5ecbbd[_0xd4de('0x12')]));agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0xe')]=!![];agents[_0x5ecbbd[_0xd4de('0x12')]]['agentcompleteAt']=utils[_0xd4de('0x17')]();agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0x22')]=utils[_0xd4de('0x31')](agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0x32')],agents[_0x5ecbbd['destuniqueid']][_0xd4de('0x33')]);agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0x20')]=_0x5ecbbd[_0xd4de('0x20')];agents[_0x5ecbbd[_0xd4de('0x12')]][_0xd4de('0xc')]=_0xd4de('0x34');writeDB(agents[_0x5ecbbd[_0xd4de('0x12')]]);}}catch(_0xaf442c){utils[_0xd4de('0x23')](util['format'](_0xd4de('0x30'),_0x5ecbbd[_0xd4de('0x6')]),_0xaf442c);}};exports[_0xd4de('0x35')]=function(_0x518bfe){try{if(!_[_0xd4de('0x1b')](agents[_0x518bfe[_0xd4de('0x36')]])){utils[_0xd4de('0x14')](util[_0xd4de('0x4')](_0xd4de('0x37'),_0x518bfe[_0xd4de('0x6')]),_0x518bfe);utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x38'),_0x518bfe[_0xd4de('0x6')],agents[_0x518bfe['transfereruniqueid']][_0xd4de('0x9')],agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x6')]));agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x39')]=!![];agents[_0x518bfe['transfereruniqueid']]['transfertype']=_0xd4de('0x3a');agents[_0x518bfe[_0xd4de('0x36')]]['transferexten']=_0x518bfe['extension'];agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x3b')]=agents[_0x518bfe[_0xd4de('0x36')]][_0xd4de('0x6')];}}catch(_0x34d772){utils[_0xd4de('0x23')](util[_0xd4de('0x4')](_0xd4de('0x37'),_0x518bfe[_0xd4de('0x6')]),_0x34d772);}};exports[_0xd4de('0x3c')]=function(_0x3be8c2){try{utils[_0xd4de('0x14')](util['format'](_0xd4de('0x3d'),_0x3be8c2[_0xd4de('0x3e')]),_0x3be8c2);if(_0x3be8c2[_0xd4de('0x3e')]==_0x3be8c2[_0xd4de('0x3f')]){if(!_[_0xd4de('0x1b')](agents[_0x3be8c2[_0xd4de('0x40')]])){utils['info'](util[_0xd4de('0x4')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x3be8c2['origtransfereruniqueid'],agents[_0x3be8c2[_0xd4de('0x40')]][_0xd4de('0x9')]));agents[_0x3be8c2[_0xd4de('0x40')]][_0xd4de('0x39')]=!![];agents[_0x3be8c2['secondtransfereruniqueid']][_0xd4de('0x41')]=_0xd4de('0x42');agents[_0x3be8c2[_0xd4de('0x40')]][_0xd4de('0x43')]=_0x3be8c2[_0xd4de('0x44')];agents[_0x3be8c2['secondtransfereruniqueid']]['transferuniqueid']=_0x3be8c2['origtransfereruniqueid'];}if(_0x3be8c2[_0xd4de('0x45')]&&agents[_0x3be8c2[_0xd4de('0x45')]]){agents[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x46')]=0x1;transfers[_0x3be8c2['transfereeuniqueid']]=_[_0xd4de('0x47')](agents[_0x3be8c2[_0xd4de('0x45')]]);transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0xa')]=agents[_0x3be8c2['secondtransfereruniqueid']][_0xd4de('0xa')];transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x48')]=agents[_0x3be8c2[_0xd4de('0x40')]]['calleridname'];transfers[_0x3be8c2['transfereeuniqueid']]['agentcalledAt']=utils[_0xd4de('0x17')]();transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x33')]=utils['now']();transfers[_0x3be8c2[_0xd4de('0x45')]][_0xd4de('0x2a')]=0x0;transfers[_0x3be8c2[_0xd4de('0x45')]]['agententerreason']=0x2;}}else if(_0x3be8c2[_0xd4de('0x40')]==_0x3be8c2['secondtransfererlinkedid']){if(!_[_0xd4de('0x1b')](agents[_0x3be8c2[_0xd4de('0x3e')]])){utils[_0xd4de('0x3')](util[_0xd4de('0x4')](_0xd4de('0x49'),_0x3be8c2[_0xd4de('0x3e')],agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0x9')]));agents[_0x3be8c2['origtransfereruniqueid']][_0xd4de('0x39')]=!![];agents[_0x3be8c2['origtransfereruniqueid']][_0xd4de('0x41')]=_0xd4de('0x42');agents[_0x3be8c2['origtransfereruniqueid']][_0xd4de('0x43')]=_0x3be8c2[_0xd4de('0x4a')];agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0x3b')]=_0x3be8c2[_0xd4de('0x40')];}if(_0x3be8c2[_0xd4de('0x4b')]&&agents[_0x3be8c2[_0xd4de('0x4b')]]){agents[_0x3be8c2[_0xd4de('0x4b')]][_0xd4de('0x46')]=0x1;transfers[_0x3be8c2[_0xd4de('0x4b')]]=_[_0xd4de('0x47')](agents[_0x3be8c2[_0xd4de('0x4b')]]);transfers[_0x3be8c2[_0xd4de('0x4b')]]['calleridnum']=agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0xa')];transfers[_0x3be8c2[_0xd4de('0x4b')]][_0xd4de('0x48')]=agents[_0x3be8c2[_0xd4de('0x3e')]][_0xd4de('0x48')];transfers[_0x3be8c2[_0xd4de('0x4b')]][_0xd4de('0x16')]=utils['now']();transfers[_0x3be8c2[_0xd4de('0x4b')]]['agentconnectAt']=utils['now']();transfers[_0x3be8c2['transfertargetuniqueid']][_0xd4de('0x2a')]=0x0;transfers[_0x3be8c2[_0xd4de('0x4b')]]['agententerreason']=0x2;}}}catch(_0x4a06b2){utils['error'](util['format'](_0xd4de('0x3d'),_0x3be8c2['origtransfereruniqueid']),_0x4a06b2);}};exports[_0xd4de('0x4c')]=function(_0x5ddba5){try{utils[_0xd4de('0x14')](util[_0xd4de('0x4')]('[%s][agents][hangup]',_0x5ddba5['uniqueid']),_0x5ddba5);if(agents[_0x5ddba5['uniqueid']]&&agents[_0x5ddba5['uniqueid']][_0xd4de('0x20')]===_0xd4de('0x1f')){if(_0x5ddba5[_0xd4de('0x4d')]==='21'){agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')]=_0xd4de('0x4e');agents[_0x5ddba5['uniqueid']]['lastevent']='rejected';}utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5ddba5[_0xd4de('0x6')],agents[_0x5ddba5['uniqueid']][_0xd4de('0x9')],agents[_0x5ddba5['uniqueid']][_0xd4de('0x20')],agents[_0x5ddba5[_0xd4de('0x6')]]['lastevent']));writeDB(agents[_0x5ddba5[_0xd4de('0x6')]]);var _0x5a4882=unanswered[_0xd4de('0x4f')](_0x5ddba5[_0xd4de('0x6')]);if(_0x5a4882>-0x1){unanswered[_0xd4de('0x50')](_0x5a4882,0x1);}}if(transfers[_0x5ddba5[_0xd4de('0x6')]]){transfers[_0x5ddba5['uniqueid']][_0xd4de('0xe')]=!![];transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x32')]=utils[_0xd4de('0x17')]();transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x22')]=utils[_0xd4de('0x31')](transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x32')],transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x33')]);transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')]='agent';transfers[_0x5ddba5[_0xd4de('0x6')]]['lastevent']='complete';utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5ddba5[_0xd4de('0x6')],transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x9')],transfers[_0x5ddba5[_0xd4de('0x6')]]['reason'],transfers[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0xc')]));writeDB(transfers[_0x5ddba5[_0xd4de('0x6')]],!![]);}if(agents[_0x5ddba5[_0xd4de('0x6')]]&&agents[_0x5ddba5[_0xd4de('0x6')]]['agentconnectAt']){agents[_0x5ddba5['uniqueid']]['agentcomplete']=!![];agents[_0x5ddba5['uniqueid']][_0xd4de('0x32')]=utils['now']();agents[_0x5ddba5[_0xd4de('0x6')]]['talktime']=utils[_0xd4de('0x31')](agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x32')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x33')]);agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')]=agents[_0x5ddba5[_0xd4de('0x6')]]['transfer']?_0xd4de('0x39'):_0xd4de('0x51');agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0xc')]='complete';utils[_0xd4de('0x3')](util[_0xd4de('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5ddba5[_0xd4de('0x6')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x9')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0x20')],agents[_0x5ddba5[_0xd4de('0x6')]][_0xd4de('0xc')]));writeDB(agents[_0x5ddba5[_0xd4de('0x6')]]);}}catch(_0x27fd09){utils[_0xd4de('0x23')](util[_0xd4de('0x4')]('[%s][agents][hangup]',_0x5ddba5[_0xd4de('0x6')]),_0x27fd09);}};
\ No newline at end of file
index 22d4077..e2b0fb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ac6=['exten','accountcode','calleridnum','context','channel','error','newstate','[%s][calls][newstate]','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','now','isNil','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','disposition','toNumber','ANSWERED','hangup','[%s][calls][hangup]','callerid','cause-txt','diffTime','endtime','answertime','attendedtransfer','[%s][calls][attendedtransfer]','localtwolinkedid','transfereechannel','origtransfereruniqueid','secondtransfererchannel','userfield','_attended','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','xmd-originatecalleridnum','source','value','variable','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmcs-queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','xmd-cdrtype','type','outboundrouteid','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','startsWith','toLowerCase','cdr','split','substring','lastIndexOf','noop','execif','set','lastapplication','util','NO\x20ANSWER','FAILED','blinds','uniqueid','transfereeuniqueid','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','lastevent','getUserByInternal','then','UserId','request','CreateVoiceCallReport','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','info','format','[%s][calls][newchannel]\x20context:%s\x20exten:%s'];(function(_0xcfe8cc,_0xb83aeb){var _0x55ac53=function(_0x4067d4){while(--_0x4067d4){_0xcfe8cc['push'](_0xcfe8cc['shift']());}};_0x55ac53(++_0xb83aeb);}(_0x5ac6,0x11b));var _0x65ac=function(_0x63e4c,_0x2b8b13){_0x63e4c=_0x63e4c-0x0;var _0x4ad933=_0x5ac6[_0x63e4c];return _0x4ad933;};'use strict';var _=require('lodash');var util=require(_0x65ac('0x0'));var utils=require('./utils');var transfers=require('./transfers.controller');var dispositions=[_0x65ac('0x1'),_0x65ac('0x2'),_0x65ac('0x2'),_0x65ac('0x1'),_0x65ac('0x1'),'NO\x20ANSWER','ANSWERED','BUSY',_0x65ac('0x2'),'FAILED',_0x65ac('0x2')];var channels={};function writeDB(_0x70893){var _0x321228;if(transfers[_0x65ac('0x3')][_0x70893[_0x65ac('0x4')]]){_0x321228=_0x70893[_0x65ac('0x4')];_0x70893[_0x65ac('0x4')]=transfers[_0x65ac('0x3')][_0x70893['uniqueid']][_0x65ac('0x5')];}utils['info'](util['format'](_0x65ac('0x6'),_0x70893[_0x65ac('0x4')],_0x70893['channel'],_0x70893[_0x65ac('0x7')],_0x70893[_0x65ac('0x8')],_0x70893[_0x65ac('0x9')],_0x70893['calleridnum'],_0x70893['connectedlinenum'],_0x70893[_0x65ac('0xa')]));if(_0x70893['accountcode']){utils[_0x65ac('0xb')](_0x70893['accountcode'])[_0x65ac('0xc')](function(_0x5e5133){if(_0x5e5133){_0x70893[_0x65ac('0xd')]=_0x5e5133['id'];}utils[_0x65ac('0xe')](_0x65ac('0xf'),_0x70893);});}else{utils[_0x65ac('0xe')](_0x65ac('0xf'),_0x70893);}if(channels[_0x70893[_0x65ac('0x4')]]){delete channels[_0x70893[_0x65ac('0x4')]];}else if(_0x321228&&channels[_0x321228]){delete transfers[_0x65ac('0x3')][_0x321228];delete channels[_0x321228];}}exports['newchannel']=function(_0x463505){try{utils[_0x65ac('0x10')](util['format'](_0x65ac('0x11'),_0x463505[_0x65ac('0x4')]),_0x463505);if(_0x463505[_0x65ac('0x4')]==_0x463505[_0x65ac('0x12')]&&_0x463505['channel']!=_0x65ac('0x13')){utils[_0x65ac('0x14')](util[_0x65ac('0x15')](_0x65ac('0x16'),_0x463505[_0x65ac('0x4')],_0x463505['context'],_0x463505[_0x65ac('0x17')]));channels[_0x463505[_0x65ac('0x4')]]={'uniqueid':_0x463505['uniqueid'],'accountcode':_0x463505[_0x65ac('0x18')],'source':_0x463505[_0x65ac('0x19')],'destination':_0x463505['exten'],'destinationcontext':_0x463505[_0x65ac('0x1a')],'channel':_0x463505[_0x65ac('0x1b')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x65ac('0x1'),'amaflags':'DOCUMENTATION'};}}catch(_0xa93ba2){utils[_0x65ac('0x1c')](util[_0x65ac('0x15')](_0x65ac('0x11'),_0x463505[_0x65ac('0x4')]),_0xa93ba2);}};exports[_0x65ac('0x1d')]=function(_0x1a969e){try{utils[_0x65ac('0x10')](util[_0x65ac('0x15')](_0x65ac('0x1e'),_0x1a969e[_0x65ac('0x4')]),_0x1a969e);if(!_['isNil'](channels[_0x1a969e[_0x65ac('0x4')]])&&_0x1a969e[_0x65ac('0x1f')]==0x6){utils[_0x65ac('0x14')](util[_0x65ac('0x15')](_0x65ac('0x20'),_0x1a969e[_0x65ac('0x4')],_0x1a969e[_0x65ac('0x1a')],_0x1a969e[_0x65ac('0x1b')]));if(_['isNil'](channels[_0x1a969e[_0x65ac('0x4')]]['systemanswertime'])){channels[_0x1a969e[_0x65ac('0x4')]][_0x65ac('0x21')]=utils[_0x65ac('0x22')]();}}else if(!_[_0x65ac('0x23')](channels[_0x1a969e[_0x65ac('0x12')]])&&_0x1a969e[_0x65ac('0x1f')]==0x6&&_0x1a969e['context']!=_0x65ac('0x24')){utils[_0x65ac('0x14')](util[_0x65ac('0x15')](_0x65ac('0x25'),_0x1a969e[_0x65ac('0x4')],_0x1a969e['linkedid'],_0x1a969e['context'],_0x1a969e[_0x65ac('0x1b')]));channels[_0x1a969e[_0x65ac('0x12')]][_0x65ac('0x18')]=_0x1a969e[_0x65ac('0x18')];channels[_0x1a969e[_0x65ac('0x12')]][_0x65ac('0x26')]=_0x1a969e[_0x65ac('0x1b')];if(_[_0x65ac('0x23')](channels[_0x1a969e[_0x65ac('0x12')]]['answertime'])){channels[_0x1a969e['linkedid']]['answertime']=utils[_0x65ac('0x22')]();}channels[_0x1a969e[_0x65ac('0x12')]][_0x65ac('0x27')]=dispositions[_[_0x65ac('0x28')](_0x1a969e[_0x65ac('0x1f')])]||_0x65ac('0x29');}}catch(_0x24d647){utils[_0x65ac('0x1c')](util[_0x65ac('0x15')](_0x65ac('0x1e'),_0x1a969e[_0x65ac('0x4')]),_0x24d647);}};exports[_0x65ac('0x2a')]=function(_0x2f7df0){try{if(!_[_0x65ac('0x23')](channels[_0x2f7df0[_0x65ac('0x4')]])){utils[_0x65ac('0x10')](util[_0x65ac('0x15')](_0x65ac('0x2b'),_0x2f7df0[_0x65ac('0x4')]),_0x2f7df0);if(_[_0x65ac('0x23')](channels[_0x2f7df0[_0x65ac('0x4')]][_0x65ac('0x2c')])){channels[_0x2f7df0['uniqueid']][_0x65ac('0x2c')]=_0x2f7df0['calleridname']+'\x20<'+_0x2f7df0[_0x65ac('0x19')]+'>';}utils[_0x65ac('0x14')](util['format']('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x2f7df0[_0x65ac('0x4')],channels[_0x2f7df0[_0x65ac('0x4')]][_0x65ac('0x2c')],_0x2f7df0[_0x65ac('0x2d')]));channels[_0x2f7df0[_0x65ac('0x4')]]['endtime']=utils[_0x65ac('0x22')]();channels[_0x2f7df0[_0x65ac('0x4')]]['duration']=utils[_0x65ac('0x2e')](channels[_0x2f7df0[_0x65ac('0x4')]][_0x65ac('0x2f')],channels[_0x2f7df0[_0x65ac('0x4')]]['starttime']);channels[_0x2f7df0[_0x65ac('0x4')]]['billableseconds']=channels[_0x2f7df0['uniqueid']]['answertime']?utils[_0x65ac('0x2e')](channels[_0x2f7df0['uniqueid']][_0x65ac('0x2f')],channels[_0x2f7df0[_0x65ac('0x4')]][_0x65ac('0x30')]):0x0;writeDB(channels[_0x2f7df0['uniqueid']]);}}catch(_0x18b120){utils['error'](util['format'](_0x65ac('0x2b'),_0x2f7df0[_0x65ac('0x4')]),_0x18b120);}};exports[_0x65ac('0x31')]=function(_0x48f8f1){try{if(!_[_0x65ac('0x23')](channels[_0x48f8f1['localtwolinkedid']])){utils[_0x65ac('0x10')](util[_0x65ac('0x15')](_0x65ac('0x32'),_0x48f8f1['origtransfereruniqueid']),_0x48f8f1);if(channels[_0x48f8f1[_0x65ac('0x33')]][_0x65ac('0x1b')]==_0x48f8f1[_0x65ac('0x34')]){utils[_0x65ac('0x14')](util[_0x65ac('0x15')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x48f8f1[_0x65ac('0x35')],_0x48f8f1[_0x65ac('0x33')],_0x48f8f1[_0x65ac('0x36')]));channels[_0x48f8f1[_0x65ac('0x33')]][_0x65ac('0x26')]=_0x48f8f1[_0x65ac('0x36')];channels[_0x48f8f1[_0x65ac('0x33')]][_0x65ac('0x37')]=_0x65ac('0x38');}else if(channels[_0x48f8f1['localtwolinkedid']][_0x65ac('0x1b')]=_0x48f8f1['transfertargetchannel']){utils[_0x65ac('0x14')](util[_0x65ac('0x15')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x48f8f1[_0x65ac('0x35')],_0x48f8f1[_0x65ac('0x33')],_0x48f8f1[_0x65ac('0x39')]));channels[_0x48f8f1[_0x65ac('0x33')]][_0x65ac('0x26')]=_0x48f8f1[_0x65ac('0x39')];channels[_0x48f8f1[_0x65ac('0x33')]][_0x65ac('0x37')]=_0x65ac('0x38');}}}catch(_0x5b09c5){utils[_0x65ac('0x1c')](util['format']('[%s][calls][attendedtransfer]',_0x48f8f1[_0x65ac('0x35')]),_0x5b09c5);}};exports[_0x65ac('0x3a')]=function(_0x593267){try{if(!_[_0x65ac('0x23')](channels[_0x593267['uniqueid']])){utils[_0x65ac('0x10')](util[_0x65ac('0x15')](_0x65ac('0x3b'),_0x593267[_0x65ac('0x4')]),_0x593267);channels[_0x593267['uniqueid']][_0x65ac('0x3c')]=utils[_0x65ac('0x22')]();utils[_0x65ac('0x14')](util['format'](_0x65ac('0x3d'),_0x593267['uniqueid'],channels[_0x593267[_0x65ac('0x4')]][_0x65ac('0x3c')]));}}catch(_0x5d091b){utils['error'](util['format'](_0x65ac('0x3b'),_0x593267[_0x65ac('0x4')]),_0x5d091b);}};exports[_0x65ac('0x3e')]=function(_0x45d346){try{if(!_[_0x65ac('0x23')](channels[_0x45d346[_0x65ac('0x4')]])){utils['debug'](util[_0x65ac('0x15')](_0x65ac('0x3f'),_0x45d346['uniqueid']),_0x45d346);if(!_[_0x65ac('0x23')](channels[_0x45d346[_0x65ac('0x4')]]['musiconholdstartAt'])){channels[_0x45d346['uniqueid']][_0x65ac('0x40')]+=utils[_0x65ac('0x2e')](utils[_0x65ac('0x22')](),channels[_0x45d346[_0x65ac('0x4')]][_0x65ac('0x3c')]);utils[_0x65ac('0x14')](util['format'](_0x65ac('0x41'),_0x45d346[_0x65ac('0x4')],channels[_0x45d346[_0x65ac('0x4')]]['mohtime']));delete channels[_0x45d346[_0x65ac('0x4')]][_0x65ac('0x3c')];}}}catch(_0xb3beb1){utils[_0x65ac('0x1c')](util[_0x65ac('0x15')](_0x65ac('0x3f'),_0x45d346[_0x65ac('0x4')]),_0xb3beb1);}};exports[_0x65ac('0x42')]=function(_0x2b8203){try{if(!_[_0x65ac('0x23')](channels[_0x2b8203['uniqueid']])){utils[_0x65ac('0x10')](util[_0x65ac('0x15')](_0x65ac('0x43'),_0x2b8203[_0x65ac('0x4')]),_0x2b8203);if(!_['isNil'](_0x2b8203['variable'][_0x65ac('0x44')])){utils[_0x65ac('0x14')](util[_0x65ac('0x15')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x2b8203[_0x65ac('0x4')],_0x2b8203['value']));channels[_0x2b8203[_0x65ac('0x4')]][_0x65ac('0x45')]=_0x2b8203[_0x65ac('0x46')];}if(!_[_0x65ac('0x23')](_0x2b8203[_0x65ac('0x47')][_0x65ac('0x48')])){utils[_0x65ac('0x14')](util[_0x65ac('0x15')](_0x65ac('0x49'),_0x2b8203[_0x65ac('0x4')],_0x2b8203['value']));channels[_0x2b8203['uniqueid']][_0x65ac('0x4a')]=_0x2b8203[_0x65ac('0x46')];channels[_0x2b8203[_0x65ac('0x4')]][_0x65ac('0x2c')]='\x22'+_0x2b8203[_0x65ac('0x46')]+_0x65ac('0x4b')+_0x2b8203[_0x65ac('0x46')]+'>';}if(!_['isNil'](_0x2b8203[_0x65ac('0x47')][_0x65ac('0x4c')])||!_[_0x65ac('0x23')](_0x2b8203[_0x65ac('0x47')][_0x65ac('0x4d')])){utils['info'](util[_0x65ac('0x15')](_0x65ac('0x4e'),_0x2b8203[_0x65ac('0x4')],!_[_0x65ac('0x23')](_0x2b8203[_0x65ac('0x47')]['xmd-callerid-preview'])?_0x65ac('0x4c'):_0x65ac('0x4d'),_0x2b8203[_0x65ac('0x46')]));channels[_0x2b8203[_0x65ac('0x4')]][_0x65ac('0x2c')]=_0x2b8203['value'];}if(!_['isNil'](_0x2b8203['variable']['xmd-queue'])||!_[_0x65ac('0x23')](_0x2b8203[_0x65ac('0x47')]['xmcs-queue'])){utils[_0x65ac('0x14')](util[_0x65ac('0x15')](_0x65ac('0x4e'),_0x2b8203['uniqueid'],!_['isNil'](_0x2b8203[_0x65ac('0x47')]['xmd-queue'])?'xmd-queue':_0x65ac('0x4f'),_0x2b8203[_0x65ac('0x46')]));channels[_0x2b8203[_0x65ac('0x4')]]['lastapplication']='Queue';channels[_0x2b8203[_0x65ac('0x4')]][_0x65ac('0x50')]=_0x2b8203[_0x65ac('0x46')];channels[_0x2b8203['uniqueid']][_0x65ac('0x7')]=!![];}if(!_[_0x65ac('0x23')](_0x2b8203[_0x65ac('0x47')][_0x65ac('0x51')])){utils[_0x65ac('0x14')](util['format'](_0x65ac('0x52'),_0x2b8203['uniqueid'],_0x2b8203[_0x65ac('0x46')]));channels[_0x2b8203[_0x65ac('0x4')]]['ContactId']=_0x2b8203[_0x65ac('0x46')];}if(!_['isNil'](_0x2b8203[_0x65ac('0x47')][_0x65ac('0x53')])){utils[_0x65ac('0x14')](util[_0x65ac('0x15')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x2b8203[_0x65ac('0x4')],_0x2b8203['value']));channels[_0x2b8203['uniqueid']][_0x65ac('0x54')]=_0x2b8203[_0x65ac('0x46')];}if(!_[_0x65ac('0x23')](_0x2b8203[_0x65ac('0x47')][_0x65ac('0x55')])){utils[_0x65ac('0x14')](util[_0x65ac('0x15')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x2b8203[_0x65ac('0x4')],_0x2b8203[_0x65ac('0x46')]));channels[_0x2b8203[_0x65ac('0x4')]]['routeid']=_0x2b8203[_0x65ac('0x46')];}if(!_['isNil'](_0x2b8203[_0x65ac('0x47')][_0x65ac('0x56')])){utils[_0x65ac('0x14')](util[_0x65ac('0x15')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x2b8203[_0x65ac('0x4')],_0x2b8203[_0x65ac('0x46')]));channels[_0x2b8203[_0x65ac('0x4')]][_0x65ac('0x56')]=_0x2b8203[_0x65ac('0x46')];}}}catch(_0x2e8f2b){utils[_0x65ac('0x1c')](util[_0x65ac('0x15')](_0x65ac('0x43'),_0x2b8203[_0x65ac('0x4')]),_0x2e8f2b);}};exports[_0x65ac('0x57')]=function(_0x34d311){try{if(!_[_0x65ac('0x23')](channels[_0x34d311[_0x65ac('0x4')]])){utils[_0x65ac('0x10')](util[_0x65ac('0x15')](_0x65ac('0x58'),_0x34d311[_0x65ac('0x4')]),_0x34d311);utils[_0x65ac('0x14')](util[_0x65ac('0x15')](_0x65ac('0x59'),_0x34d311[_0x65ac('0x4')],_0x34d311[_0x65ac('0x5a')],_0x34d311[_0x65ac('0x5b')]));if(_0x34d311[_0x65ac('0x5a')]['toLowerCase']()=='set'&&_[_0x65ac('0x5c')](_0x34d311[_0x65ac('0x5b')][_0x65ac('0x5d')](),_0x65ac('0x5e'))){var _0x100375=_0x34d311[_0x65ac('0x5b')][_0x65ac('0x5f')]('=');var _0x2b0758=_0x100375[0x0][_0x65ac('0x60')](_0x100375[0x0]['lastIndexOf']('(')+0x1,_0x100375[0x0][_0x65ac('0x61')](')'));var _0x248fd8=_0x100375[0x1];channels[_0x34d311[_0x65ac('0x4')]][_0x2b0758]=_0x248fd8;}if(!_['includes']([_0x65ac('0x2a'),_0x65ac('0x62'),_0x65ac('0x63'),_0x65ac('0x64'),'gotoif'],_0x34d311[_0x65ac('0x5a')]['toLowerCase']())){channels[_0x34d311['uniqueid']][_0x65ac('0x65')]=_0x34d311['application'];channels[_0x34d311['uniqueid']][_0x65ac('0x50')]=_0x34d311['appdata'];}}}catch(_0x17d8ae){utils[_0x65ac('0x1c')](util[_0x65ac('0x15')](_0x65ac('0x58'),_0x34d311[_0x65ac('0x4')]),_0x17d8ae);}};
\ No newline at end of file
+var _0x1daa=['[%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','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','newexten','[%s][calls][newexten]','application','appdata','toLowerCase','cdr','substring','lastIndexOf','hangup','noop','execif','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','interface','accountcode','getUserByInternal','then','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','channel','OutgoingSpoolFailed','context','exten','now','DOCUMENTATION','error','newstate','systemanswertime','isNil','channelstate','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','[%s][calls][newstate]','calleridname','callerid','endtime','duration','diffTime','billableseconds','[%s][calls][hangup]','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','[%s][calls][varset]','variable','xmd-originatecalleridnum','value','xmd-phone','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid'];(function(_0x432169,_0x7ffbe9){var _0x28e745=function(_0x810c68){while(--_0x810c68){_0x432169['push'](_0x432169['shift']());}};_0x28e745(++_0x7ffbe9);}(_0x1daa,0x14c));var _0xa1da=function(_0x480f72,_0xe80949){_0x480f72=_0x480f72-0x0;var _0x26578d=_0x1daa[_0x480f72];return _0x26578d;};'use strict';var _=require(_0xa1da('0x0'));var util=require(_0xa1da('0x1'));var utils=require(_0xa1da('0x2'));var transfers=require(_0xa1da('0x3'));var dispositions=[_0xa1da('0x4'),_0xa1da('0x5'),_0xa1da('0x5'),_0xa1da('0x4'),'NO\x20ANSWER',_0xa1da('0x4'),_0xa1da('0x6'),_0xa1da('0x7'),_0xa1da('0x5'),_0xa1da('0x5'),'FAILED'];var channels={};function writeDB(_0x49b852){var _0x5edfa0;if(transfers[_0xa1da('0x8')][_0x49b852[_0xa1da('0x9')]]){_0x5edfa0=_0x49b852[_0xa1da('0x9')];_0x49b852[_0xa1da('0x9')]=transfers[_0xa1da('0x8')][_0x49b852['uniqueid']][_0xa1da('0xa')];}utils[_0xa1da('0xb')](util[_0xa1da('0xc')](_0xa1da('0xd'),_0x49b852[_0xa1da('0x9')],_0x49b852['channel'],_0x49b852[_0xa1da('0xe')],_0x49b852['membername'],_0x49b852[_0xa1da('0xf')],_0x49b852['calleridnum'],_0x49b852['connectedlinenum'],_0x49b852['lastevent']));if(_0x49b852[_0xa1da('0x10')]){utils[_0xa1da('0x11')](_0x49b852['accountcode'])[_0xa1da('0x12')](function(_0x5eb59e){if(_0x5eb59e){_0x49b852['UserId']=_0x5eb59e['id'];}utils[_0xa1da('0x13')](_0xa1da('0x14'),_0x49b852);});}else{utils['request']('CreateVoiceCallReport',_0x49b852);}if(channels[_0x49b852[_0xa1da('0x9')]]){delete channels[_0x49b852[_0xa1da('0x9')]];}else if(_0x5edfa0&&channels[_0x5edfa0]){delete transfers[_0xa1da('0x8')][_0x5edfa0];delete channels[_0x5edfa0];}}exports[_0xa1da('0x15')]=function(_0x246cdf){try{utils[_0xa1da('0x16')](util['format'](_0xa1da('0x17'),_0x246cdf[_0xa1da('0x9')]),_0x246cdf);if(_0x246cdf['uniqueid']==_0x246cdf[_0xa1da('0x18')]&&_0x246cdf[_0xa1da('0x19')]!=_0xa1da('0x1a')){utils[_0xa1da('0xb')](util[_0xa1da('0xc')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x246cdf[_0xa1da('0x9')],_0x246cdf[_0xa1da('0x1b')],_0x246cdf[_0xa1da('0x1c')]));channels[_0x246cdf['uniqueid']]={'uniqueid':_0x246cdf['uniqueid'],'accountcode':_0x246cdf[_0xa1da('0x10')],'source':_0x246cdf['calleridnum'],'destination':_0x246cdf[_0xa1da('0x1c')],'destinationcontext':_0x246cdf[_0xa1da('0x1b')],'channel':_0x246cdf[_0xa1da('0x19')],'starttime':utils[_0xa1da('0x1d')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0xa1da('0x1e')};}}catch(_0x1e40e6){utils[_0xa1da('0x1f')](util['format'](_0xa1da('0x17'),_0x246cdf[_0xa1da('0x9')]),_0x1e40e6);}};exports[_0xa1da('0x20')]=function(_0x15ae1a){try{utils[_0xa1da('0x16')](util[_0xa1da('0xc')]('[%s][calls][newstate]',_0x15ae1a[_0xa1da('0x9')]),_0x15ae1a);if(!_['isNil'](channels[_0x15ae1a[_0xa1da('0x9')]])&&_0x15ae1a['channelstate']==0x6){utils[_0xa1da('0xb')](util[_0xa1da('0xc')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x15ae1a[_0xa1da('0x9')],_0x15ae1a[_0xa1da('0x1b')],_0x15ae1a[_0xa1da('0x19')]));if(_['isNil'](channels[_0x15ae1a['uniqueid']][_0xa1da('0x21')])){channels[_0x15ae1a['uniqueid']]['systemanswertime']=utils[_0xa1da('0x1d')]();}}else if(!_[_0xa1da('0x22')](channels[_0x15ae1a[_0xa1da('0x18')]])&&_0x15ae1a[_0xa1da('0x23')]==0x6&&_0x15ae1a[_0xa1da('0x1b')]!=_0xa1da('0x24')){utils[_0xa1da('0xb')](util[_0xa1da('0xc')](_0xa1da('0x25'),_0x15ae1a[_0xa1da('0x9')],_0x15ae1a[_0xa1da('0x18')],_0x15ae1a[_0xa1da('0x1b')],_0x15ae1a['channel']));channels[_0x15ae1a[_0xa1da('0x18')]][_0xa1da('0x10')]=_0x15ae1a[_0xa1da('0x10')];channels[_0x15ae1a[_0xa1da('0x18')]][_0xa1da('0x26')]=_0x15ae1a['channel'];if(_['isNil'](channels[_0x15ae1a[_0xa1da('0x18')]][_0xa1da('0x27')])){channels[_0x15ae1a[_0xa1da('0x18')]]['answertime']=utils[_0xa1da('0x1d')]();}channels[_0x15ae1a[_0xa1da('0x18')]][_0xa1da('0x28')]=dispositions[_['toNumber'](_0x15ae1a[_0xa1da('0x23')])]||_0xa1da('0x6');}}catch(_0xc10bf9){utils[_0xa1da('0x1f')](util[_0xa1da('0xc')](_0xa1da('0x29'),_0x15ae1a[_0xa1da('0x9')]),_0xc10bf9);}};exports['hangup']=function(_0x39d3fa){try{if(!_['isNil'](channels[_0x39d3fa[_0xa1da('0x9')]])){utils[_0xa1da('0x16')](util[_0xa1da('0xc')]('[%s][calls][hangup]',_0x39d3fa[_0xa1da('0x9')]),_0x39d3fa);if(_[_0xa1da('0x22')](channels[_0x39d3fa[_0xa1da('0x9')]]['callerid'])){channels[_0x39d3fa[_0xa1da('0x9')]]['callerid']=_0x39d3fa[_0xa1da('0x2a')]+'\x20<'+_0x39d3fa['calleridnum']+'>';}utils[_0xa1da('0xb')](util['format']('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x39d3fa[_0xa1da('0x9')],channels[_0x39d3fa[_0xa1da('0x9')]][_0xa1da('0x2b')],_0x39d3fa['cause-txt']));channels[_0x39d3fa[_0xa1da('0x9')]][_0xa1da('0x2c')]=utils[_0xa1da('0x1d')]();channels[_0x39d3fa['uniqueid']][_0xa1da('0x2d')]=utils[_0xa1da('0x2e')](channels[_0x39d3fa[_0xa1da('0x9')]][_0xa1da('0x2c')],channels[_0x39d3fa['uniqueid']]['starttime']);channels[_0x39d3fa[_0xa1da('0x9')]][_0xa1da('0x2f')]=channels[_0x39d3fa[_0xa1da('0x9')]][_0xa1da('0x27')]?utils[_0xa1da('0x2e')](channels[_0x39d3fa[_0xa1da('0x9')]]['endtime'],channels[_0x39d3fa[_0xa1da('0x9')]][_0xa1da('0x27')]):0x0;writeDB(channels[_0x39d3fa['uniqueid']]);}}catch(_0xd12cdb){utils[_0xa1da('0x1f')](util[_0xa1da('0xc')](_0xa1da('0x30'),_0x39d3fa[_0xa1da('0x9')]),_0xd12cdb);}};exports[_0xa1da('0x31')]=function(_0x41eea7){try{if(!_[_0xa1da('0x22')](channels[_0x41eea7[_0xa1da('0x32')]])){utils[_0xa1da('0x16')](util[_0xa1da('0xc')](_0xa1da('0x33'),_0x41eea7[_0xa1da('0x34')]),_0x41eea7);if(channels[_0x41eea7[_0xa1da('0x32')]][_0xa1da('0x19')]==_0x41eea7[_0xa1da('0x35')]){utils[_0xa1da('0xb')](util[_0xa1da('0xc')](_0xa1da('0x36'),_0x41eea7['origtransfereruniqueid'],_0x41eea7[_0xa1da('0x32')],_0x41eea7[_0xa1da('0x37')]));channels[_0x41eea7[_0xa1da('0x32')]][_0xa1da('0x26')]=_0x41eea7['secondtransfererchannel'];channels[_0x41eea7['localtwolinkedid']][_0xa1da('0x38')]=_0xa1da('0x39');}else if(channels[_0x41eea7[_0xa1da('0x32')]][_0xa1da('0x19')]=_0x41eea7['transfertargetchannel']){utils[_0xa1da('0xb')](util[_0xa1da('0xc')](_0xa1da('0x36'),_0x41eea7[_0xa1da('0x34')],_0x41eea7[_0xa1da('0x32')],_0x41eea7[_0xa1da('0x3a')]));channels[_0x41eea7[_0xa1da('0x32')]][_0xa1da('0x26')]=_0x41eea7[_0xa1da('0x3a')];channels[_0x41eea7[_0xa1da('0x32')]][_0xa1da('0x38')]=_0xa1da('0x39');}}}catch(_0x39f44f){utils[_0xa1da('0x1f')](util[_0xa1da('0xc')](_0xa1da('0x33'),_0x41eea7[_0xa1da('0x34')]),_0x39f44f);}};exports[_0xa1da('0x3b')]=function(_0x160801){try{if(!_[_0xa1da('0x22')](channels[_0x160801[_0xa1da('0x9')]])){utils['debug'](util['format'](_0xa1da('0x3c'),_0x160801['uniqueid']),_0x160801);channels[_0x160801['uniqueid']]['musiconholdstartAt']=utils[_0xa1da('0x1d')]();utils[_0xa1da('0xb')](util[_0xa1da('0xc')](_0xa1da('0x3d'),_0x160801[_0xa1da('0x9')],channels[_0x160801[_0xa1da('0x9')]][_0xa1da('0x3e')]));}}catch(_0x1db97c){utils[_0xa1da('0x1f')](util[_0xa1da('0xc')](_0xa1da('0x3c'),_0x160801[_0xa1da('0x9')]),_0x1db97c);}};exports[_0xa1da('0x3f')]=function(_0x3262bc){try{if(!_[_0xa1da('0x22')](channels[_0x3262bc[_0xa1da('0x9')]])){utils['debug'](util[_0xa1da('0xc')](_0xa1da('0x40'),_0x3262bc[_0xa1da('0x9')]),_0x3262bc);if(!_[_0xa1da('0x22')](channels[_0x3262bc[_0xa1da('0x9')]][_0xa1da('0x3e')])){channels[_0x3262bc['uniqueid']]['mohtime']+=utils[_0xa1da('0x2e')](utils[_0xa1da('0x1d')](),channels[_0x3262bc[_0xa1da('0x9')]][_0xa1da('0x3e')]);utils[_0xa1da('0xb')](util['format'](_0xa1da('0x41'),_0x3262bc[_0xa1da('0x9')],channels[_0x3262bc['uniqueid']][_0xa1da('0x42')]));delete channels[_0x3262bc[_0xa1da('0x9')]][_0xa1da('0x3e')];}}}catch(_0xdc8966){utils['error'](util[_0xa1da('0xc')](_0xa1da('0x40'),_0x3262bc[_0xa1da('0x9')]),_0xdc8966);}};exports['varset']=function(_0x3baf4c){try{if(!_[_0xa1da('0x22')](channels[_0x3baf4c['uniqueid']])){utils[_0xa1da('0x16')](util[_0xa1da('0xc')](_0xa1da('0x43'),_0x3baf4c['uniqueid']),_0x3baf4c);if(!_['isNil'](_0x3baf4c[_0xa1da('0x44')][_0xa1da('0x45')])){utils['info'](util[_0xa1da('0xc')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x3baf4c[_0xa1da('0x9')],_0x3baf4c['value']));channels[_0x3baf4c['uniqueid']]['source']=_0x3baf4c[_0xa1da('0x46')];}if(!_[_0xa1da('0x22')](_0x3baf4c[_0xa1da('0x44')][_0xa1da('0x47')])){utils[_0xa1da('0xb')](util[_0xa1da('0xc')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x3baf4c[_0xa1da('0x9')],_0x3baf4c['value']));channels[_0x3baf4c['uniqueid']][_0xa1da('0x48')]=_0x3baf4c[_0xa1da('0x46')];channels[_0x3baf4c['uniqueid']][_0xa1da('0x2b')]='\x22'+_0x3baf4c['value']+_0xa1da('0x49')+_0x3baf4c[_0xa1da('0x46')]+'>';}if(!_['isNil'](_0x3baf4c[_0xa1da('0x44')][_0xa1da('0x4a')])||!_[_0xa1da('0x22')](_0x3baf4c[_0xa1da('0x44')][_0xa1da('0x4b')])){utils[_0xa1da('0xb')](util[_0xa1da('0xc')](_0xa1da('0x4c'),_0x3baf4c[_0xa1da('0x9')],!_['isNil'](_0x3baf4c[_0xa1da('0x44')]['xmd-callerid-preview'])?'xmd-callerid-preview':_0xa1da('0x4b'),_0x3baf4c[_0xa1da('0x46')]));channels[_0x3baf4c['uniqueid']]['callerid']=_0x3baf4c['value'];}if(!_[_0xa1da('0x22')](_0x3baf4c['variable'][_0xa1da('0x4d')])||!_['isNil'](_0x3baf4c['variable'][_0xa1da('0x4e')])){utils[_0xa1da('0xb')](util[_0xa1da('0xc')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x3baf4c['uniqueid'],!_[_0xa1da('0x22')](_0x3baf4c[_0xa1da('0x44')][_0xa1da('0x4d')])?'xmd-queue':'xmcs-queue',_0x3baf4c['value']));channels[_0x3baf4c[_0xa1da('0x9')]][_0xa1da('0x4f')]=_0xa1da('0x50');channels[_0x3baf4c[_0xa1da('0x9')]][_0xa1da('0x51')]=_0x3baf4c['value'];channels[_0x3baf4c[_0xa1da('0x9')]][_0xa1da('0xe')]=!![];}if(!_['isNil'](_0x3baf4c[_0xa1da('0x44')][_0xa1da('0x52')])){utils['info'](util[_0xa1da('0xc')](_0xa1da('0x53'),_0x3baf4c[_0xa1da('0x9')],_0x3baf4c[_0xa1da('0x46')]));channels[_0x3baf4c[_0xa1da('0x9')]][_0xa1da('0x54')]=_0x3baf4c[_0xa1da('0x46')];}if(!_['isNil'](_0x3baf4c[_0xa1da('0x44')][_0xa1da('0x55')])){utils[_0xa1da('0xb')](util['format'](_0xa1da('0x56'),_0x3baf4c['uniqueid'],_0x3baf4c['value']));channels[_0x3baf4c[_0xa1da('0x9')]][_0xa1da('0x57')]=_0x3baf4c['value'];}if(!_[_0xa1da('0x22')](_0x3baf4c[_0xa1da('0x44')][_0xa1da('0x58')])){utils[_0xa1da('0xb')](util[_0xa1da('0xc')](_0xa1da('0x59'),_0x3baf4c[_0xa1da('0x9')],_0x3baf4c[_0xa1da('0x46')]));channels[_0x3baf4c[_0xa1da('0x9')]]['routeid']=_0x3baf4c[_0xa1da('0x46')];}if(!_[_0xa1da('0x22')](_0x3baf4c[_0xa1da('0x44')]['sipcallid'])){utils[_0xa1da('0xb')](util[_0xa1da('0xc')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x3baf4c[_0xa1da('0x9')],_0x3baf4c[_0xa1da('0x46')]));channels[_0x3baf4c[_0xa1da('0x9')]][_0xa1da('0x5a')]=_0x3baf4c[_0xa1da('0x46')];}}}catch(_0xf7b7c8){utils[_0xa1da('0x1f')](util[_0xa1da('0xc')](_0xa1da('0x43'),_0x3baf4c['uniqueid']),_0xf7b7c8);}};exports[_0xa1da('0x5b')]=function(_0x5f3b3b){try{if(!_[_0xa1da('0x22')](channels[_0x5f3b3b[_0xa1da('0x9')]])){utils[_0xa1da('0x16')](util[_0xa1da('0xc')](_0xa1da('0x5c'),_0x5f3b3b['uniqueid']),_0x5f3b3b);utils[_0xa1da('0xb')](util[_0xa1da('0xc')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x5f3b3b['uniqueid'],_0x5f3b3b[_0xa1da('0x5d')],_0x5f3b3b[_0xa1da('0x5e')]));if(_0x5f3b3b[_0xa1da('0x5d')][_0xa1da('0x5f')]()=='set'&&_['startsWith'](_0x5f3b3b[_0xa1da('0x5e')]['toLowerCase'](),_0xa1da('0x60'))){var _0x458ebe=_0x5f3b3b['appdata']['split']('=');var _0xbd97a8=_0x458ebe[0x0][_0xa1da('0x61')](_0x458ebe[0x0][_0xa1da('0x62')]('(')+0x1,_0x458ebe[0x0][_0xa1da('0x62')](')'));var _0x522995=_0x458ebe[0x1];channels[_0x5f3b3b[_0xa1da('0x9')]][_0xbd97a8]=_0x522995;}if(!_['includes']([_0xa1da('0x63'),_0xa1da('0x64'),_0xa1da('0x65'),'set','gotoif'],_0x5f3b3b[_0xa1da('0x5d')][_0xa1da('0x5f')]())){channels[_0x5f3b3b[_0xa1da('0x9')]][_0xa1da('0x4f')]=_0x5f3b3b['application'];channels[_0x5f3b3b['uniqueid']][_0xa1da('0x51')]=_0x5f3b3b['appdata'];}}}catch(_0x1024da){utils[_0xa1da('0x1f')](util[_0xa1da('0xc')](_0xa1da('0x5c'),_0x5f3b3b[_0xa1da('0x9')]),_0x1024da);}};
\ No newline at end of file
index 2ecae41..10ecb7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe58b=['error','[core]\x20error','close','[core]\x20close','managerevent','connect','info','[core]\x20connected','shutdown','[core]\x20shutdown','[core]\x20fullybooted'];(function(_0x30f3b6,_0x42de8d){var _0x33dbb2=function(_0x545991){while(--_0x545991){_0x30f3b6['push'](_0x30f3b6['shift']());}};_0x33dbb2(++_0x42de8d);}(_0xe58b,0x17b));var _0xbe58=function(_0x325064,_0x35482f){_0x325064=_0x325064-0x0;var _0x5d9b73=_0xe58b[_0x325064];return _0x5d9b73;};'use strict';var utils=require('./utils');exports[_0xbe58('0x0')]=function(){utils[_0xbe58('0x1')](_0xbe58('0x2'));};exports[_0xbe58('0x3')]=function(){utils[_0xbe58('0x1')](_0xbe58('0x4'));};exports['fullybooted']=function(){utils[_0xbe58('0x1')](_0xbe58('0x5'));};exports[_0xbe58('0x6')]=function(_0x1a40c2){utils[_0xbe58('0x6')](_0xbe58('0x7'),_0x1a40c2);};exports[_0xbe58('0x8')]=function(){utils[_0xbe58('0x1')](_0xbe58('0x9'));};exports[_0xbe58('0xa')]=function(_0x1a5632){};
\ No newline at end of file
+var _0x8f12=['fullybooted','[core]\x20fullybooted','error','[core]\x20error','close','[core]\x20close','connect','[core]\x20connected','shutdown','info'];(function(_0x3bac72,_0x1b787d){var _0x930c56=function(_0x3ef56){while(--_0x3ef56){_0x3bac72['push'](_0x3bac72['shift']());}};_0x930c56(++_0x1b787d);}(_0x8f12,0x196));var _0x28f1=function(_0x50f0e9,_0x2f9300){_0x50f0e9=_0x50f0e9-0x0;var _0x12dae4=_0x8f12[_0x50f0e9];return _0x12dae4;};'use strict';var utils=require('./utils');exports[_0x28f1('0x0')]=function(){utils['info'](_0x28f1('0x1'));};exports[_0x28f1('0x2')]=function(){utils[_0x28f1('0x3')]('[core]\x20shutdown');};exports[_0x28f1('0x4')]=function(){utils[_0x28f1('0x3')](_0x28f1('0x5'));};exports[_0x28f1('0x6')]=function(_0x289f50){utils[_0x28f1('0x6')](_0x28f1('0x7'),_0x289f50);};exports[_0x28f1('0x8')]=function(){utils[_0x28f1('0x3')](_0x28f1('0x9'));};exports['managerevent']=function(_0x378593){};
\ No newline at end of file
index ecad359..771700d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x110a=['varset','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','[%s][dials][varset]','[%s][dials][dialbegin]','assign','starttime','now','called','dialend','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridnum','cause-txt','duration','diffTime','endtime','holdtime','billableseconds','lodash','./utils','info','format','uniqueid','channel','connectedlinenum','dialstatus','newexten','debug','[%s][dials][newexten]','application','toLowerCase','set','startsWith','cdr(routeid)','appdata','split'];(function(_0x26917f,_0x31b43b){var _0x38d00c=function(_0x4a03f3){while(--_0x4a03f3){_0x26917f['push'](_0x26917f['shift']());}};_0x38d00c(++_0x31b43b);}(_0x110a,0x15e));var _0xa110=function(_0x4b5aed,_0x3b6d4f){_0x4b5aed=_0x4b5aed-0x0;var _0x17a5ce=_0x110a[_0x4b5aed];return _0x17a5ce;};'use strict';var _=require(_0xa110('0x0'));var util=require('util');var utils=require(_0xa110('0x1'));var dials={};function writeDB(_0x1ee500){utils[_0xa110('0x2')](util[_0xa110('0x3')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x1ee500[_0xa110('0x4')],_0x1ee500[_0xa110('0x5')],_0x1ee500['dialstring'],_0x1ee500['calleridnum'],_0x1ee500[_0xa110('0x6')],_0x1ee500[_0xa110('0x7')]));utils['request']('CreateVoiceDialReport',_0x1ee500);delete dials[_0x1ee500[_0xa110('0x4')]];}exports[_0xa110('0x8')]=function(_0x5ad972){try{utils[_0xa110('0x9')](util['format'](_0xa110('0xa'),_0x5ad972['uniqueid']),_0x5ad972);utils[_0xa110('0x2')](util[_0xa110('0x3')]('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x5ad972[_0xa110('0x4')],_0x5ad972['application'],_0x5ad972['appdata']));if(_0x5ad972[_0xa110('0xb')][_0xa110('0xc')]()==_0xa110('0xd')&&_[_0xa110('0xe')](_0x5ad972['appdata'][_0xa110('0xc')](),_0xa110('0xf'))){var _0x265822=_0x5ad972[_0xa110('0x10')][_0xa110('0x11')]('=');dials[_0x5ad972[_0xa110('0x4')]]={'routeId':_0x265822[0x1]};}}catch(_0x433499){utils['error'](util['format'](_0xa110('0xa'),_0x5ad972['uniqueid']),_0x433499);}};exports[_0xa110('0x12')]=function(_0x3b3dbb){try{utils[_0xa110('0x9')](util[_0xa110('0x3')]('[%s][dials][varset]',_0x3b3dbb[_0xa110('0x4')]),_0x3b3dbb);if(!_[_0xa110('0x13')](_0x3b3dbb[_0xa110('0x14')][_0xa110('0x15')])){utils[_0xa110('0x2')](util['format'](_0xa110('0x16'),_0x3b3dbb['uniqueid'],_0x3b3dbb[_0xa110('0x17')]));dials[_0x3b3dbb[_0xa110('0x4')]]={'routeId':_0x3b3dbb['value']};}}catch(_0x36fbe0){utils[_0xa110('0x18')](util[_0xa110('0x3')](_0xa110('0x19'),_0x3b3dbb['uniqueid']),_0x36fbe0);}};exports['dialbegin']=function(_0x2f7600){try{if(!_[_0xa110('0x13')](dials[_0x2f7600[_0xa110('0x4')]])){utils[_0xa110('0x9')](util[_0xa110('0x3')](_0xa110('0x1a'),_0x2f7600['uniqueid']),_0x2f7600);dials[_0x2f7600[_0xa110('0x4')]]=_[_0xa110('0x1b')](dials[_0x2f7600[_0xa110('0x4')]],_0x2f7600);dials[_0x2f7600[_0xa110('0x4')]][_0xa110('0x1c')]=utils[_0xa110('0x1d')]();dials[_0x2f7600['uniqueid']]['lastevent']=_0xa110('0x1e');utils['info'](util[_0xa110('0x3')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x2f7600[_0xa110('0x4')],dials[_0x2f7600['uniqueid']]['starttime']));}}catch(_0x5c7a91){utils['error'](util['format']('[%s][dials][dialbegin]',_0x2f7600['uniqueid']),_0x5c7a91);}};exports[_0xa110('0x1f')]=function(_0x29cac2){try{if(!_['isNil'](dials[_0x29cac2[_0xa110('0x4')]])){utils['debug'](util[_0xa110('0x3')]('[%s][dials][dialend]',_0x29cac2[_0xa110('0x4')]),_0x29cac2);dials[_0x29cac2['uniqueid']]['dialstatus']=_0x29cac2[_0xa110('0x7')];if(_0x29cac2[_0xa110('0x7')]=='ANSWER'){dials[_0x29cac2['uniqueid']]=_[_0xa110('0x1b')](dials[_0x29cac2['uniqueid']],_0x29cac2);dials[_0x29cac2['uniqueid']][_0xa110('0x20')]=utils[_0xa110('0x1d')]();dials[_0x29cac2[_0xa110('0x4')]]['lastevent']=_0xa110('0x21');utils[_0xa110('0x2')](util[_0xa110('0x3')](_0xa110('0x22'),_0x29cac2[_0xa110('0x4')],_0x29cac2[_0xa110('0x7')],dials[_0x29cac2[_0xa110('0x4')]][_0xa110('0x20')]));}else{utils[_0xa110('0x2')](util['format']('[%s][dials][dialend]\x20dialstatus:%s',_0x29cac2[_0xa110('0x4')],_0x29cac2[_0xa110('0x7')]));}}}catch(_0x57d0c4){utils[_0xa110('0x18')](util['format'](_0xa110('0x23'),_0x29cac2[_0xa110('0x4')]),_0x57d0c4);}};exports[_0xa110('0x24')]=function(_0x4f1bca){try{if(!_[_0xa110('0x13')](dials[_0x4f1bca[_0xa110('0x4')]])){utils['debug'](util[_0xa110('0x3')](_0xa110('0x25'),_0x4f1bca[_0xa110('0x4')]),_0x4f1bca);utils[_0xa110('0x2')](util['format'](_0xa110('0x26'),_0x4f1bca[_0xa110('0x4')],_0x4f1bca[_0xa110('0x27')],_0x4f1bca['calleridname'],_0x4f1bca[_0xa110('0x28')]));dials[_0x4f1bca[_0xa110('0x4')]]=_['assign'](dials[_0x4f1bca[_0xa110('0x4')]],{'endtime':utils[_0xa110('0x1d')](),'lastevent':'complete'});dials[_0x4f1bca[_0xa110('0x4')]][_0xa110('0x29')]=utils[_0xa110('0x2a')](dials[_0x4f1bca[_0xa110('0x4')]][_0xa110('0x2b')],dials[_0x4f1bca[_0xa110('0x4')]][_0xa110('0x1c')]);dials[_0x4f1bca[_0xa110('0x4')]][_0xa110('0x2c')]=utils['diffTime'](dials[_0x4f1bca['uniqueid']][_0xa110('0x20')]||dials[_0x4f1bca[_0xa110('0x4')]]['endtime'],dials[_0x4f1bca[_0xa110('0x4')]][_0xa110('0x1c')]);dials[_0x4f1bca[_0xa110('0x4')]][_0xa110('0x2d')]=dials[_0x4f1bca[_0xa110('0x4')]][_0xa110('0x20')]?utils[_0xa110('0x2a')](dials[_0x4f1bca[_0xa110('0x4')]][_0xa110('0x2b')],dials[_0x4f1bca['uniqueid']]['answertime']):0x0;writeDB(dials[_0x4f1bca['uniqueid']]);}}catch(_0x5897f6){utils[_0xa110('0x18')](util[_0xa110('0x3')](_0xa110('0x25'),_0x4f1bca['uniqueid']),_0x5897f6);}};
\ No newline at end of file
+var _0x9331=['util','./utils','info','format','uniqueid','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten','[%s][dials][newexten]','application','appdata','set','startsWith','toLowerCase','cdr(routeid)','split','error','debug','[%s][dials][varset]','isNil','variable','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','assign','starttime','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','[%s][dials][dialbegin]','dialend','ANSWER','answertime','now','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','complete','duration','diffTime','endtime'];(function(_0x1a80b1,_0x4fd59d){var _0x4eca1e=function(_0x4d68cc){while(--_0x4d68cc){_0x1a80b1['push'](_0x1a80b1['shift']());}};_0x4eca1e(++_0x4fd59d);}(_0x9331,0x1ea));var _0x1933=function(_0x5e6515,_0x2954b1){_0x5e6515=_0x5e6515-0x0;var _0xd33ce2=_0x9331[_0x5e6515];return _0xd33ce2;};'use strict';var _=require('lodash');var util=require(_0x1933('0x0'));var utils=require(_0x1933('0x1'));var dials={};function writeDB(_0x4b370a){utils[_0x1933('0x2')](util[_0x1933('0x3')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x4b370a[_0x1933('0x4')],_0x4b370a['channel'],_0x4b370a[_0x1933('0x5')],_0x4b370a[_0x1933('0x6')],_0x4b370a[_0x1933('0x7')],_0x4b370a[_0x1933('0x8')]));utils[_0x1933('0x9')](_0x1933('0xa'),_0x4b370a);delete dials[_0x4b370a[_0x1933('0x4')]];}exports[_0x1933('0xb')]=function(_0x26c561){try{utils['debug'](util[_0x1933('0x3')](_0x1933('0xc'),_0x26c561['uniqueid']),_0x26c561);utils[_0x1933('0x2')](util['format']('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x26c561[_0x1933('0x4')],_0x26c561[_0x1933('0xd')],_0x26c561[_0x1933('0xe')]));if(_0x26c561[_0x1933('0xd')]['toLowerCase']()==_0x1933('0xf')&&_[_0x1933('0x10')](_0x26c561[_0x1933('0xe')][_0x1933('0x11')](),_0x1933('0x12'))){var _0x49b208=_0x26c561['appdata'][_0x1933('0x13')]('=');dials[_0x26c561['uniqueid']]={'routeId':_0x49b208[0x1]};}}catch(_0x346ed0){utils[_0x1933('0x14')](util[_0x1933('0x3')]('[%s][dials][newexten]',_0x26c561[_0x1933('0x4')]),_0x346ed0);}};exports['varset']=function(_0x5d68b1){try{utils[_0x1933('0x15')](util[_0x1933('0x3')](_0x1933('0x16'),_0x5d68b1['uniqueid']),_0x5d68b1);if(!_[_0x1933('0x17')](_0x5d68b1[_0x1933('0x18')]['outboundrouteid'])){utils['info'](util[_0x1933('0x3')](_0x1933('0x19'),_0x5d68b1[_0x1933('0x4')],_0x5d68b1[_0x1933('0x1a')]));dials[_0x5d68b1[_0x1933('0x4')]]={'routeId':_0x5d68b1[_0x1933('0x1a')]};}}catch(_0xe9597c){utils['error'](util[_0x1933('0x3')](_0x1933('0x16'),_0x5d68b1[_0x1933('0x4')]),_0xe9597c);}};exports[_0x1933('0x1b')]=function(_0x885d22){try{if(!_['isNil'](dials[_0x885d22[_0x1933('0x4')]])){utils['debug'](util[_0x1933('0x3')]('[%s][dials][dialbegin]',_0x885d22['uniqueid']),_0x885d22);dials[_0x885d22['uniqueid']]=_[_0x1933('0x1c')](dials[_0x885d22['uniqueid']],_0x885d22);dials[_0x885d22[_0x1933('0x4')]][_0x1933('0x1d')]=utils['now']();dials[_0x885d22['uniqueid']][_0x1933('0x1e')]='called';utils[_0x1933('0x2')](util['format'](_0x1933('0x1f'),_0x885d22[_0x1933('0x4')],dials[_0x885d22[_0x1933('0x4')]][_0x1933('0x1d')]));}}catch(_0x2512d8){utils[_0x1933('0x14')](util[_0x1933('0x3')](_0x1933('0x20'),_0x885d22['uniqueid']),_0x2512d8);}};exports[_0x1933('0x21')]=function(_0x4705ce){try{if(!_[_0x1933('0x17')](dials[_0x4705ce['uniqueid']])){utils[_0x1933('0x15')](util[_0x1933('0x3')]('[%s][dials][dialend]',_0x4705ce['uniqueid']),_0x4705ce);dials[_0x4705ce[_0x1933('0x4')]]['dialstatus']=_0x4705ce[_0x1933('0x8')];if(_0x4705ce[_0x1933('0x8')]==_0x1933('0x22')){dials[_0x4705ce[_0x1933('0x4')]]=_['assign'](dials[_0x4705ce[_0x1933('0x4')]],_0x4705ce);dials[_0x4705ce[_0x1933('0x4')]][_0x1933('0x23')]=utils[_0x1933('0x24')]();dials[_0x4705ce['uniqueid']][_0x1933('0x1e')]=_0x1933('0x25');utils[_0x1933('0x2')](util[_0x1933('0x3')](_0x1933('0x26'),_0x4705ce[_0x1933('0x4')],_0x4705ce[_0x1933('0x8')],dials[_0x4705ce[_0x1933('0x4')]]['answertime']));}else{utils[_0x1933('0x2')](util['format'](_0x1933('0x27'),_0x4705ce[_0x1933('0x4')],_0x4705ce[_0x1933('0x8')]));}}}catch(_0x824d39){utils[_0x1933('0x14')](util[_0x1933('0x3')](_0x1933('0x28'),_0x4705ce[_0x1933('0x4')]),_0x824d39);}};exports[_0x1933('0x29')]=function(_0x12ffe3){try{if(!_[_0x1933('0x17')](dials[_0x12ffe3[_0x1933('0x4')]])){utils['debug'](util[_0x1933('0x3')](_0x1933('0x2a'),_0x12ffe3[_0x1933('0x4')]),_0x12ffe3);utils[_0x1933('0x2')](util[_0x1933('0x3')](_0x1933('0x2b'),_0x12ffe3[_0x1933('0x4')],_0x12ffe3[_0x1933('0x6')],_0x12ffe3[_0x1933('0x2c')],_0x12ffe3['cause-txt']));dials[_0x12ffe3[_0x1933('0x4')]]=_[_0x1933('0x1c')](dials[_0x12ffe3[_0x1933('0x4')]],{'endtime':utils[_0x1933('0x24')](),'lastevent':_0x1933('0x2d')});dials[_0x12ffe3[_0x1933('0x4')]][_0x1933('0x2e')]=utils[_0x1933('0x2f')](dials[_0x12ffe3[_0x1933('0x4')]][_0x1933('0x30')],dials[_0x12ffe3['uniqueid']]['starttime']);dials[_0x12ffe3['uniqueid']]['holdtime']=utils[_0x1933('0x2f')](dials[_0x12ffe3[_0x1933('0x4')]][_0x1933('0x23')]||dials[_0x12ffe3[_0x1933('0x4')]]['endtime'],dials[_0x12ffe3[_0x1933('0x4')]][_0x1933('0x1d')]);dials[_0x12ffe3[_0x1933('0x4')]]['billableseconds']=dials[_0x12ffe3[_0x1933('0x4')]][_0x1933('0x23')]?utils[_0x1933('0x2f')](dials[_0x12ffe3[_0x1933('0x4')]][_0x1933('0x30')],dials[_0x12ffe3[_0x1933('0x4')]]['answertime']):0x0;writeDB(dials[_0x12ffe3[_0x1933('0x4')]]);}}catch(_0x409278){utils[_0x1933('0x14')](util[_0x1933('0x3')](_0x1933('0x2a'),_0x12ffe3['uniqueid']),_0x409278);}};
\ No newline at end of file
index d1963e3..966a24b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x248c=['../../config/environment','./utils','util','asterisk','port','username','xdr','disabled','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','device','[%s][index][devicestatechange]','agentcalled','[%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]','hangup','[%s][index][hangup]','[%s][index][cdr]','cdr','blindtransfer','[%s][index][blindtransfer]','[%s][index][attendedtransfer]','attendedtransfer','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','[%s][index][dialend]','dialend','asterisk-manager'];(function(_0x174d7b,_0x50f7ab){var _0x506f7a=function(_0x5a2f14){while(--_0x5a2f14){_0x174d7b['push'](_0x174d7b['shift']());}};_0x506f7a(++_0x50f7ab);}(_0x248c,0x113));var _0xc248=function(_0x7eb73d,_0x598d0c){_0x7eb73d=_0x7eb73d-0x0;var _0x18bfc4=_0x248c[_0x7eb73d];return _0x18bfc4;};var AsteriskManager=require(_0xc248('0x0'));var config=require(_0xc248('0x1'));var utils=require(_0xc248('0x2'));var util=require(_0xc248('0x3'));var ami=new AsteriskManager(config[_0xc248('0x4')][_0xc248('0x5')],config['asterisk']['ip'],config[_0xc248('0x4')][_0xc248('0x6')],config[_0xc248('0x4')]['password'],!![]);ami['keepConnected']();if(config[_0xc248('0x7')]&&config[_0xc248('0x7')][_0xc248('0x8')]){utils['info'](_0xc248('0x9'));}else{var agents=require(_0xc248('0xa'));var calls=require(_0xc248('0xb'));var queues=require(_0xc248('0xc'));var recordings=require(_0xc248('0xd'));var members=require(_0xc248('0xe'));var dials=require(_0xc248('0xf'));var transfers=require('./transfers.controller');var core=require(_0xc248('0x10'));ami['on'](_0xc248('0x11'),core[_0xc248('0x11')]);ami['on'](_0xc248('0x12'),core[_0xc248('0x12')]);ami['on']('fullybooted',core[_0xc248('0x13')]);ami['on'](_0xc248('0x14'),core['error']);ami['on']('close',core[_0xc248('0x15')]);ami['on'](_0xc248('0x16'),core['managerevent']);ami['on'](_0xc248('0x17'),function(_0x5db016){try{utils[_0xc248('0x18')](util[_0xc248('0x19')]('[%s][index][devicestatechange]',_0x5db016[_0xc248('0x1a')]),_0x5db016);members['devicestatechange'](_0x5db016);}catch(_0xd35a79){utils['error'](util['format'](_0xc248('0x1b'),_0x5db016[_0xc248('0x1a')]),_0xd35a79);}});ami['on'](_0xc248('0x1c'),function(_0x1b87a6){try{utils['debug'](util[_0xc248('0x19')](_0xc248('0x1d'),_0x1b87a6['uniqueid']),_0x1b87a6);agents[_0xc248('0x1c')](_0x1b87a6);}catch(_0x40a208){utils[_0xc248('0x14')](util[_0xc248('0x19')](_0xc248('0x1d'),_0x1b87a6[_0xc248('0x1e')]),_0x40a208);}});ami['on']('agentringnoanswer',function(_0x3f89a3){try{utils[_0xc248('0x18')](util[_0xc248('0x19')]('[%s][index][agentringnoanswer]',_0x3f89a3[_0xc248('0x1e')]),_0x3f89a3);agents[_0xc248('0x1f')](_0x3f89a3);}catch(_0x11352a){utils['error'](util[_0xc248('0x19')](_0xc248('0x20'),_0x3f89a3[_0xc248('0x1e')]),_0x11352a);}});ami['on'](_0xc248('0x21'),function(_0x8ffdf8){try{utils[_0xc248('0x18')](util[_0xc248('0x19')]('[%s][index][agentconnect]',_0x8ffdf8['uniqueid']),_0x8ffdf8);agents[_0xc248('0x21')](_0x8ffdf8);queues[_0xc248('0x21')](_0x8ffdf8);}catch(_0x345835){utils[_0xc248('0x14')](util[_0xc248('0x19')](_0xc248('0x22'),_0x8ffdf8[_0xc248('0x1e')]),_0x345835);}});ami['on'](_0xc248('0x23'),function(_0x5a3997){try{utils[_0xc248('0x18')](util[_0xc248('0x19')](_0xc248('0x24'),_0x5a3997['uniqueid']),_0x5a3997);agents[_0xc248('0x23')](_0x5a3997);queues['agentcomplete'](_0x5a3997);members[_0xc248('0x23')](_0x5a3997);}catch(_0xac8170){utils['error'](util[_0xc248('0x19')](_0xc248('0x24'),_0x5a3997[_0xc248('0x1e')]),_0xac8170);}});ami['on'](_0xc248('0x25'),function(_0x123289){try{utils['debug'](util[_0xc248('0x19')](_0xc248('0x26'),_0x123289[_0xc248('0x1e')]),_0x123289);agents['queuecallerabandon'](_0x123289);queues[_0xc248('0x25')](_0x123289);}catch(_0x4c5121){utils['error'](util['format'](_0xc248('0x26'),_0x123289['uniqueid']),_0x4c5121);}});ami['on'](_0xc248('0x27'),function(_0x3255fb){try{utils[_0xc248('0x18')](util[_0xc248('0x19')](_0xc248('0x28'),_0x3255fb[_0xc248('0x1e')]),_0x3255fb);queues[_0xc248('0x27')](_0x3255fb);recordings[_0xc248('0x27')](_0x3255fb);}catch(_0x4c8db3){utils[_0xc248('0x14')](util[_0xc248('0x19')](_0xc248('0x28'),_0x3255fb[_0xc248('0x1e')]),_0x4c8db3);}});ami['on'](_0xc248('0x29'),function(_0x436321){try{utils[_0xc248('0x18')](util[_0xc248('0x19')](_0xc248('0x2a'),_0x436321['uniqueid']),_0x436321);queues[_0xc248('0x29')](_0x436321);}catch(_0x2205ce){utils[_0xc248('0x14')](util[_0xc248('0x19')]('[%s][index][queuecallerleave]',_0x436321[_0xc248('0x1e')]),_0x2205ce);}});ami['on'](_0xc248('0x2b'),function(_0x38eb65){try{utils['debug'](util['format'](_0xc248('0x2c'),_0x38eb65['uniqueid']),_0x38eb65);queues[_0xc248('0x2b')](_0x38eb65);calls[_0xc248('0x2b')](_0x38eb65);}catch(_0x21f6e8){utils[_0xc248('0x14')](util[_0xc248('0x19')]('[%s][index][musiconholdstart]',_0x38eb65[_0xc248('0x1e')]),_0x21f6e8);}});ami['on'](_0xc248('0x2d'),function(_0x5e0a01){try{utils[_0xc248('0x18')](util['format'](_0xc248('0x2e'),_0x5e0a01[_0xc248('0x1e')]),_0x5e0a01);queues[_0xc248('0x2d')](_0x5e0a01);calls[_0xc248('0x2d')](_0x5e0a01);}catch(_0x2e951e){utils[_0xc248('0x14')](util[_0xc248('0x19')](_0xc248('0x2e'),_0x5e0a01[_0xc248('0x1e')]),_0x2e951e);}});ami['on'](_0xc248('0x2f'),function(_0xc07c0b){try{utils['debug'](util[_0xc248('0x19')](_0xc248('0x30'),_0xc07c0b['uniqueid']),_0xc07c0b);calls['newstate'](_0xc07c0b);recordings[_0xc248('0x2f')](_0xc07c0b);}catch(_0x257e33){utils[_0xc248('0x14')](util['format'](_0xc248('0x30'),_0xc07c0b[_0xc248('0x1e')]),_0x257e33);}});ami['on'](_0xc248('0x31'),function(_0x3beb4a){try{utils[_0xc248('0x18')](util['format'](_0xc248('0x32'),_0x3beb4a[_0xc248('0x1e')]),_0x3beb4a);calls[_0xc248('0x31')](_0x3beb4a);recordings[_0xc248('0x31')](_0x3beb4a);dials[_0xc248('0x31')](_0x3beb4a);agents[_0xc248('0x31')](_0x3beb4a);queues[_0xc248('0x31')](_0x3beb4a);}catch(_0x2127a5){utils[_0xc248('0x14')](util[_0xc248('0x19')](_0xc248('0x32'),_0x3beb4a['uniqueid']),_0x2127a5);}});ami['on']('cdr',function(_0x6b3c01){try{utils[_0xc248('0x18')](util[_0xc248('0x19')](_0xc248('0x33'),_0x6b3c01[_0xc248('0x1e')]),_0x6b3c01);members[_0xc248('0x34')](_0x6b3c01);}catch(_0xee858a){utils[_0xc248('0x14')](util[_0xc248('0x19')](_0xc248('0x33'),_0x6b3c01[_0xc248('0x1e')]),_0xee858a);}});ami['on'](_0xc248('0x35'),function(_0x68aa7d){try{utils[_0xc248('0x18')](util[_0xc248('0x19')](_0xc248('0x36'),_0x68aa7d[_0xc248('0x1e')]),_0x68aa7d);queues['blindtransfer'](_0x68aa7d);agents[_0xc248('0x35')](_0x68aa7d);transfers[_0xc248('0x35')](_0x68aa7d);}catch(_0x1d19c0){utils[_0xc248('0x14')](util[_0xc248('0x19')](_0xc248('0x36'),_0x68aa7d['uniqueid']),_0x1d19c0);}});ami['on']('attendedtransfer',function(_0x12822e){try{utils[_0xc248('0x18')](util[_0xc248('0x19')](_0xc248('0x37'),_0x12822e['origtransfereruniqueid']),_0x12822e);queues[_0xc248('0x38')](_0x12822e);transfers['attendedtransfer'](_0x12822e);agents[_0xc248('0x38')](_0x12822e);calls[_0xc248('0x38')](_0x12822e);}catch(_0xb3d330){utils['error'](util[_0xc248('0x19')](_0xc248('0x37'),_0x12822e[_0xc248('0x39')]),_0xb3d330);}});ami['on'](_0xc248('0x3a'),function(_0x3ed137){try{utils[_0xc248('0x18')](util[_0xc248('0x19')](_0xc248('0x3b'),_0x3ed137[_0xc248('0x1e')]),_0x3ed137);queues[_0xc248('0x3a')](_0x3ed137);recordings[_0xc248('0x3a')](_0x3ed137);calls[_0xc248('0x3a')](_0x3ed137);dials[_0xc248('0x3a')](_0x3ed137);}catch(_0x453a94){utils[_0xc248('0x14')](util[_0xc248('0x19')]('[%s][index][varset]',_0x3ed137['uniqueid']),_0x453a94);}});ami['on'](_0xc248('0x3c'),function(_0xe7333a){try{utils['debug'](util['format'](_0xc248('0x3d'),_0xe7333a[_0xc248('0x1e')]),_0xe7333a);calls['newexten'](_0xe7333a);recordings['newexten'](_0xe7333a);dials[_0xc248('0x3c')](_0xe7333a);}catch(_0x310751){utils[_0xc248('0x14')](util[_0xc248('0x19')](_0xc248('0x3d'),_0xe7333a[_0xc248('0x1e')]),_0x310751);}});ami['on'](_0xc248('0x3e'),function(_0x4d76fb){try{utils[_0xc248('0x18')](util[_0xc248('0x19')]('[%s][index][newchannel]',_0x4d76fb[_0xc248('0x1e')]),_0x4d76fb);calls[_0xc248('0x3e')](_0x4d76fb);recordings[_0xc248('0x3e')](_0x4d76fb);}catch(_0x2f3d7b){utils[_0xc248('0x14')](util[_0xc248('0x19')](_0xc248('0x3f'),_0x4d76fb[_0xc248('0x1e')]),_0x2f3d7b);}});ami['on'](_0xc248('0x40'),function(_0x9b339a){try{utils[_0xc248('0x18')](util['format'](_0xc248('0x41'),_0x9b339a[_0xc248('0x1e')]),_0x9b339a);dials[_0xc248('0x40')](_0x9b339a);}catch(_0x5405d4){utils['error'](util[_0xc248('0x19')](_0xc248('0x42'),_0x9b339a[_0xc248('0x1e')]),_0x5405d4);}});ami['on']('dialend',function(_0x10db6f){try{utils['debug'](util['format'](_0xc248('0x43'),_0x10db6f[_0xc248('0x1e')]),_0x10db6f);dials[_0xc248('0x44')](_0x10db6f);}catch(_0x5a1578){utils[_0xc248('0x14')](util[_0xc248('0x19')](_0xc248('0x43'),_0x10db6f['uniqueid']),_0x5a1578);}});}
\ No newline at end of file
+var _0x5355=['[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','hangup','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','asterisk','port','password','keepConnected','xdr','disabled','info','./calls.controller','./queues.controller','./members.controller','./dials.controller','./core.controller','connect','shutdown','fullybooted','error','managerevent','devicestatechange','debug','device','format','agentcalled','[%s][index][agentcalled]','uniqueid','[%s][index][agentringnoanswer]','agentringnoanswer','[%s][index][agentconnect]','agentconnect','[%s][index][agentcomplete]','agentcomplete','[%s][index][queuecallerabandon]','queuecallerabandon','queuecallerjoin'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x5355,0x15b));var _0x5535=function(_0x1fd4d7,_0x2feafd){_0x1fd4d7=_0x1fd4d7-0x0;var _0x7efe8a=_0x5355[_0x1fd4d7];return _0x7efe8a;};var AsteriskManager=require(_0x5535('0x0'));var config=require(_0x5535('0x1'));var utils=require(_0x5535('0x2'));var util=require(_0x5535('0x3'));var ami=new AsteriskManager(config[_0x5535('0x4')][_0x5535('0x5')],config[_0x5535('0x4')]['ip'],config[_0x5535('0x4')]['username'],config[_0x5535('0x4')][_0x5535('0x6')],!![]);ami[_0x5535('0x7')]();if(config[_0x5535('0x8')]&&config[_0x5535('0x8')][_0x5535('0x9')]){utils[_0x5535('0xa')]('XDR\x20DISABLED');}else{var agents=require('./agents.controller');var calls=require(_0x5535('0xb'));var queues=require(_0x5535('0xc'));var recordings=require('./recordings.controller');var members=require(_0x5535('0xd'));var dials=require(_0x5535('0xe'));var transfers=require('./transfers.controller');var core=require(_0x5535('0xf'));ami['on']('connect',core[_0x5535('0x10')]);ami['on'](_0x5535('0x11'),core[_0x5535('0x11')]);ami['on'](_0x5535('0x12'),core[_0x5535('0x12')]);ami['on'](_0x5535('0x13'),core[_0x5535('0x13')]);ami['on']('close',core['close']);ami['on']('managerevent',core[_0x5535('0x14')]);ami['on'](_0x5535('0x15'),function(_0xc9a4cb){try{utils[_0x5535('0x16')](util['format']('[%s][index][devicestatechange]',_0xc9a4cb[_0x5535('0x17')]),_0xc9a4cb);members['devicestatechange'](_0xc9a4cb);}catch(_0x311036){utils['error'](util[_0x5535('0x18')]('[%s][index][devicestatechange]',_0xc9a4cb[_0x5535('0x17')]),_0x311036);}});ami['on'](_0x5535('0x19'),function(_0x23d042){try{utils[_0x5535('0x16')](util['format'](_0x5535('0x1a'),_0x23d042[_0x5535('0x1b')]),_0x23d042);agents[_0x5535('0x19')](_0x23d042);}catch(_0xba194){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x1a'),_0x23d042[_0x5535('0x1b')]),_0xba194);}});ami['on']('agentringnoanswer',function(_0x223820){try{utils[_0x5535('0x16')](util[_0x5535('0x18')](_0x5535('0x1c'),_0x223820['uniqueid']),_0x223820);agents[_0x5535('0x1d')](_0x223820);}catch(_0x16f8e0){utils['error'](util[_0x5535('0x18')](_0x5535('0x1c'),_0x223820[_0x5535('0x1b')]),_0x16f8e0);}});ami['on']('agentconnect',function(_0x2e12b4){try{utils[_0x5535('0x16')](util['format'](_0x5535('0x1e'),_0x2e12b4[_0x5535('0x1b')]),_0x2e12b4);agents[_0x5535('0x1f')](_0x2e12b4);queues['agentconnect'](_0x2e12b4);}catch(_0x13027e){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x1e'),_0x2e12b4[_0x5535('0x1b')]),_0x13027e);}});ami['on']('agentcomplete',function(_0x309711){try{utils[_0x5535('0x16')](util[_0x5535('0x18')](_0x5535('0x20'),_0x309711[_0x5535('0x1b')]),_0x309711);agents[_0x5535('0x21')](_0x309711);queues[_0x5535('0x21')](_0x309711);members['agentcomplete'](_0x309711);}catch(_0x6df989){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x20'),_0x309711[_0x5535('0x1b')]),_0x6df989);}});ami['on']('queuecallerabandon',function(_0x4692c2){try{utils[_0x5535('0x16')](util[_0x5535('0x18')](_0x5535('0x22'),_0x4692c2['uniqueid']),_0x4692c2);agents['queuecallerabandon'](_0x4692c2);queues[_0x5535('0x23')](_0x4692c2);}catch(_0x27a663){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x22'),_0x4692c2[_0x5535('0x1b')]),_0x27a663);}});ami['on'](_0x5535('0x24'),function(_0x29790b){try{utils[_0x5535('0x16')](util[_0x5535('0x18')]('[%s][index][queuecallerjoin]',_0x29790b[_0x5535('0x1b')]),_0x29790b);queues[_0x5535('0x24')](_0x29790b);recordings[_0x5535('0x24')](_0x29790b);}catch(_0x52b4fa){utils['error'](util[_0x5535('0x18')](_0x5535('0x25'),_0x29790b[_0x5535('0x1b')]),_0x52b4fa);}});ami['on'](_0x5535('0x26'),function(_0x4865b2){try{utils['debug'](util['format'](_0x5535('0x27'),_0x4865b2[_0x5535('0x1b')]),_0x4865b2);queues[_0x5535('0x26')](_0x4865b2);}catch(_0x38180f){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x27'),_0x4865b2['uniqueid']),_0x38180f);}});ami['on']('musiconholdstart',function(_0x144f44){try{utils[_0x5535('0x16')](util[_0x5535('0x18')]('[%s][index][musiconholdstart]',_0x144f44['uniqueid']),_0x144f44);queues['musiconholdstart'](_0x144f44);calls[_0x5535('0x28')](_0x144f44);}catch(_0x33aa08){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x29'),_0x144f44['uniqueid']),_0x33aa08);}});ami['on'](_0x5535('0x2a'),function(_0x3d4c32){try{utils[_0x5535('0x16')](util['format'](_0x5535('0x2b'),_0x3d4c32[_0x5535('0x1b')]),_0x3d4c32);queues[_0x5535('0x2a')](_0x3d4c32);calls[_0x5535('0x2a')](_0x3d4c32);}catch(_0x1b62d9){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x2b'),_0x3d4c32['uniqueid']),_0x1b62d9);}});ami['on']('newstate',function(_0x432ab7){try{utils[_0x5535('0x16')](util[_0x5535('0x18')](_0x5535('0x2c'),_0x432ab7[_0x5535('0x1b')]),_0x432ab7);calls['newstate'](_0x432ab7);recordings[_0x5535('0x2d')](_0x432ab7);}catch(_0x1fe7f7){utils[_0x5535('0x13')](util['format'](_0x5535('0x2c'),_0x432ab7[_0x5535('0x1b')]),_0x1fe7f7);}});ami['on'](_0x5535('0x2e'),function(_0xc8494){try{utils['debug'](util[_0x5535('0x18')]('[%s][index][hangup]',_0xc8494[_0x5535('0x1b')]),_0xc8494);calls[_0x5535('0x2e')](_0xc8494);recordings[_0x5535('0x2e')](_0xc8494);dials[_0x5535('0x2e')](_0xc8494);agents[_0x5535('0x2e')](_0xc8494);queues['hangup'](_0xc8494);}catch(_0xb666ee){utils[_0x5535('0x13')](util[_0x5535('0x18')]('[%s][index][hangup]',_0xc8494[_0x5535('0x1b')]),_0xb666ee);}});ami['on'](_0x5535('0x2f'),function(_0x22763b){try{utils['debug'](util[_0x5535('0x18')](_0x5535('0x30'),_0x22763b[_0x5535('0x1b')]),_0x22763b);members[_0x5535('0x2f')](_0x22763b);}catch(_0x175c22){utils[_0x5535('0x13')](util['format']('[%s][index][cdr]',_0x22763b['uniqueid']),_0x175c22);}});ami['on'](_0x5535('0x31'),function(_0x267fbd){try{utils[_0x5535('0x16')](util[_0x5535('0x18')](_0x5535('0x32'),_0x267fbd[_0x5535('0x1b')]),_0x267fbd);queues[_0x5535('0x31')](_0x267fbd);agents[_0x5535('0x31')](_0x267fbd);transfers[_0x5535('0x31')](_0x267fbd);}catch(_0x4afd56){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x32'),_0x267fbd[_0x5535('0x1b')]),_0x4afd56);}});ami['on'](_0x5535('0x33'),function(_0x4e0143){try{utils['debug'](util['format'](_0x5535('0x34'),_0x4e0143['origtransfereruniqueid']),_0x4e0143);queues[_0x5535('0x33')](_0x4e0143);transfers[_0x5535('0x33')](_0x4e0143);agents[_0x5535('0x33')](_0x4e0143);calls[_0x5535('0x33')](_0x4e0143);}catch(_0x4efbd7){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x34'),_0x4e0143[_0x5535('0x35')]),_0x4efbd7);}});ami['on'](_0x5535('0x36'),function(_0x16e564){try{utils['debug'](util[_0x5535('0x18')]('[%s][index][varset]',_0x16e564[_0x5535('0x1b')]),_0x16e564);queues[_0x5535('0x36')](_0x16e564);recordings[_0x5535('0x36')](_0x16e564);calls['varset'](_0x16e564);dials[_0x5535('0x36')](_0x16e564);}catch(_0x5ea71c){utils['error'](util[_0x5535('0x18')](_0x5535('0x37'),_0x16e564[_0x5535('0x1b')]),_0x5ea71c);}});ami['on'](_0x5535('0x38'),function(_0x39265f){try{utils['debug'](util[_0x5535('0x18')](_0x5535('0x39'),_0x39265f['uniqueid']),_0x39265f);calls['newexten'](_0x39265f);recordings[_0x5535('0x38')](_0x39265f);dials[_0x5535('0x38')](_0x39265f);}catch(_0x4865e8){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x39'),_0x39265f['uniqueid']),_0x4865e8);}});ami['on'](_0x5535('0x3a'),function(_0x8b0de){try{utils[_0x5535('0x16')](util[_0x5535('0x18')](_0x5535('0x3b'),_0x8b0de['uniqueid']),_0x8b0de);calls['newchannel'](_0x8b0de);recordings[_0x5535('0x3a')](_0x8b0de);}catch(_0x3e11e4){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x3b'),_0x8b0de[_0x5535('0x1b')]),_0x3e11e4);}});ami['on'](_0x5535('0x3c'),function(_0x7b68f4){try{utils[_0x5535('0x16')](util[_0x5535('0x18')](_0x5535('0x3d'),_0x7b68f4[_0x5535('0x1b')]),_0x7b68f4);dials[_0x5535('0x3c')](_0x7b68f4);}catch(_0x5ac474){utils[_0x5535('0x13')](util['format']('[%s]dialbegin',_0x7b68f4[_0x5535('0x1b')]),_0x5ac474);}});ami['on'](_0x5535('0x3e'),function(_0x3a442f){try{utils[_0x5535('0x16')](util['format'](_0x5535('0x3f'),_0x3a442f[_0x5535('0x1b')]),_0x3a442f);dials[_0x5535('0x3e')](_0x3a442f);}catch(_0x32e14c){utils[_0x5535('0x13')](util[_0x5535('0x18')](_0x5535('0x3f'),_0x3a442f[_0x5535('0x1b')]),_0x32e14c);}});}
\ No newline at end of file
index 66c4ed5..ace5eab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03bc=['internal','request','CreateMemberReport','catch','some','startsWith','debug','[%s][members][devicestatechange]','device','info','state','INUSE','BUSY','voice','now','agent','NOT_INUSE','isNil','duration','diffTime','exitAt','enterAt','agentcomplete','[%s][members][agentcomplete]','queue','assign','error','split','data1','type','data2','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','[%s][members][cdr]','lodash','./utils','Local/_attended@transfer','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','membername','getUserByInterface','then','name'];(function(_0x128450,_0x5869ba){var _0x4d80ed=function(_0x4a2da3){while(--_0x4a2da3){_0x128450['push'](_0x128450['shift']());}};_0x4d80ed(++_0x5869ba);}(_0x03bc,0xb8));var _0xc03b=function(_0x4ab531,_0x536e84){_0x4ab531=_0x4ab531-0x0;var _0x54ca3c=_0x03bc[_0x4ab531];return _0x54ca3c;};'use strict';var _=require(_0xc03b('0x0'));var util=require('util');var utils=require(_0xc03b('0x1'));var members={};var exclude=[_0xc03b('0x2'),'Queue:'];function writeDB(_0x5f8f09){utils['info'](util[_0xc03b('0x3')](_0xc03b('0x4'),_0x5f8f09[_0xc03b('0x5')],_0x5f8f09[_0xc03b('0x6')],_0x5f8f09[_0xc03b('0x7')],_0x5f8f09['data2'],_0x5f8f09[_0xc03b('0x8')],_0x5f8f09['type']));if(_0x5f8f09[_0xc03b('0x6')]){utils[_0xc03b('0x9')](_0x5f8f09[_0xc03b('0x6')])[_0xc03b('0xa')](function(_0x26cbb8){if(_0x26cbb8){_0x5f8f09[_0xc03b('0x8')]=_0x26cbb8[_0xc03b('0xb')];_0x5f8f09[_0xc03b('0xc')]=_0x26cbb8['internal'];utils[_0xc03b('0xd')]('CreateMemberReport',_0x5f8f09);}else{utils['getUserByName'](_0x5f8f09['interface']['split']('/')[0x1])[_0xc03b('0xa')](function(_0x5e1e2b){if(_0x5e1e2b){_0x5f8f09['membername']=_0x5e1e2b['name'];_0x5f8f09['internal']=_0x5e1e2b[_0xc03b('0xc')];utils[_0xc03b('0xd')](_0xc03b('0xe'),_0x5f8f09);}});}})[_0xc03b('0xf')](function(_0x42332b){utils['error'](util[_0xc03b('0x3')]('[%s][members][writeDB]',_0x5f8f09['uniqueid']),_0x42332b);});}delete members[_0x5f8f09['interface']];}function startsWith(_0x11374d,_0xcd680b){return _[_0xc03b('0x10')](_0x11374d,function(_0x45c890){return _[_0xc03b('0x11')](_0xcd680b,_0x45c890);});}exports['devicestatechange']=function(_0x519a8f){try{utils[_0xc03b('0x12')](util[_0xc03b('0x3')](_0xc03b('0x13'),members[_0x519a8f[_0xc03b('0x14')]]?members[_0x519a8f['device']][_0xc03b('0x5')]:_0x519a8f[_0xc03b('0x14')]),_0x519a8f);utils[_0xc03b('0x15')](util['format']('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x519a8f[_0xc03b('0x14')]]?members[_0x519a8f[_0xc03b('0x14')]][_0xc03b('0x5')]:_0x519a8f[_0xc03b('0x14')],_0x519a8f[_0xc03b('0x16')],_0x519a8f[_0xc03b('0x14')]));switch(_0x519a8f['state']){case _0xc03b('0x17'):case _0xc03b('0x18'):if(!startsWith(exclude,_0x519a8f['device'])){members[_0x519a8f[_0xc03b('0x14')]]={'channel':_0xc03b('0x19'),'interface':_0x519a8f[_0xc03b('0x14')],'type':'TALKING','enterAt':utils[_0xc03b('0x1a')](),'role':_0xc03b('0x1b')};}break;case _0xc03b('0x1c'):if(!_[_0xc03b('0x1d')](members[_0x519a8f[_0xc03b('0x14')]])){members[_0x519a8f[_0xc03b('0x14')]]['exitAt']=utils['now']();members[_0x519a8f[_0xc03b('0x14')]][_0xc03b('0x1e')]=utils[_0xc03b('0x1f')](members[_0x519a8f[_0xc03b('0x14')]][_0xc03b('0x20')],members[_0x519a8f[_0xc03b('0x14')]][_0xc03b('0x21')]);if(members[_0x519a8f['device']][_0xc03b('0x5')]){writeDB(members[_0x519a8f[_0xc03b('0x14')]]);}}break;default:break;}}catch(_0x50e5a5){utils['error'](util[_0xc03b('0x3')]('[%s][members][devicestatechange]',members[_0x519a8f[_0xc03b('0x14')]]?members[_0x519a8f[_0xc03b('0x14')]][_0xc03b('0x5')]:_0x519a8f[_0xc03b('0x14')]),_0x50e5a5);}};exports[_0xc03b('0x22')]=function(_0x1dd14d){try{if(!_[_0xc03b('0x1d')](members[_0x1dd14d[_0xc03b('0x6')]])){utils[_0xc03b('0x12')](util[_0xc03b('0x3')](_0xc03b('0x23'),_0x1dd14d[_0xc03b('0x5')]),_0x1dd14d);utils[_0xc03b('0x15')](util[_0xc03b('0x3')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x1dd14d[_0xc03b('0x5')],_0x1dd14d[_0xc03b('0x6')],_0x1dd14d[_0xc03b('0x24')]));members[_0x1dd14d[_0xc03b('0x6')]]=_[_0xc03b('0x25')](members[_0x1dd14d[_0xc03b('0x6')]],{'data4':_0x1dd14d[_0xc03b('0x24')],'uniqueid':_0x1dd14d[_0xc03b('0x5')]});}}catch(_0x305301){utils[_0xc03b('0x26')](util[_0xc03b('0x3')]('[%s][members][agentcomplete]',_0x1dd14d[_0xc03b('0x5')]),_0x305301);}};exports['cdr']=function(_0x61d710){try{utils['debug'](util[_0xc03b('0x3')]('[%s][members][cdr]',_0x61d710['uniqueid']),_0x61d710);if(_0x61d710[_0xc03b('0x7')]){var _0x52e89a=_0x61d710[_0xc03b('0x7')][_0xc03b('0x27')]('-')[0x0];if(!_[_0xc03b('0x1d')](members[_0x52e89a])){members[_0x52e89a]=_[_0xc03b('0x25')](members[_0x52e89a],{'data1':members[_0x52e89a][_0xc03b('0x28')]||_0x61d710[_0xc03b('0x29')],'data2':members[_0x52e89a][_0xc03b('0x2a')]||_0x61d710[_0xc03b('0x2b')],'data3':members[_0x52e89a][_0xc03b('0x2c')]||_0x61d710[_0xc03b('0x2d')],'uniqueid':members[_0x52e89a][_0xc03b('0x5')]||_0x61d710[_0xc03b('0x5')]});utils[_0xc03b('0x15')](util[_0xc03b('0x3')](_0xc03b('0x2e'),_0x61d710[_0xc03b('0x5')],members[_0x52e89a]['data1'],members[_0x52e89a]['data2'],members[_0x52e89a][_0xc03b('0x2c')]));if(members[_0x52e89a]['exitAt']){writeDB(members[_0x52e89a]);}}}if(_0x61d710[_0xc03b('0x2f')]){var _0x2e311c=_0x61d710[_0xc03b('0x2f')][_0xc03b('0x27')]('-')[0x0];if(!_[_0xc03b('0x1d')](members[_0x2e311c])){members[_0x2e311c]=_[_0xc03b('0x25')](members[_0x2e311c],{'data1':members[_0x2e311c][_0xc03b('0x28')]||_0x61d710[_0xc03b('0x29')],'data2':members[_0x2e311c][_0xc03b('0x2a')]||_0x61d710['source'],'data3':members[_0x2e311c][_0xc03b('0x2c')]||_0x61d710['destination'],'uniqueid':members[_0x2e311c][_0xc03b('0x5')]||_0x61d710[_0xc03b('0x5')]});utils[_0xc03b('0x15')](util['format'](_0xc03b('0x2e'),_0x61d710[_0xc03b('0x5')],members[_0x2e311c][_0xc03b('0x28')],members[_0x2e311c][_0xc03b('0x2a')],members[_0x2e311c][_0xc03b('0x2c')]));if(members[_0x2e311c][_0xc03b('0x20')]){writeDB(members[_0x2e311c]);}}}}catch(_0x12d426){utils[_0xc03b('0x26')](util['format'](_0xc03b('0x30'),_0x61d710[_0xc03b('0x5')]),_0x12d426);}};
\ No newline at end of file
+var _0x3238=['exitAt','duration','enterAt','agentcomplete','debug','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','assign','queue','cdr','[%s][members][cdr]','channel','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','lodash','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','data2','membername','type','interface','name','internal','request','CreateMemberReport','getUserByName','split','then','catch','error','[%s][members][writeDB]','startsWith','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','BUSY','TALKING','now','agent','NOT_INUSE','isNil'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3238,0x13e));var _0x8323=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3238[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x8323('0x0'));var util=require('util');var utils=require(_0x8323('0x1'));var members={};var exclude=[_0x8323('0x2'),_0x8323('0x3')];function writeDB(_0x5ef9f4){utils[_0x8323('0x4')](util[_0x8323('0x5')](_0x8323('0x6'),_0x5ef9f4[_0x8323('0x7')],_0x5ef9f4['interface'],_0x5ef9f4['channel'],_0x5ef9f4[_0x8323('0x8')],_0x5ef9f4[_0x8323('0x9')],_0x5ef9f4[_0x8323('0xa')]));if(_0x5ef9f4[_0x8323('0xb')]){utils['getUserByInterface'](_0x5ef9f4[_0x8323('0xb')])['then'](function(_0x216dc5){if(_0x216dc5){_0x5ef9f4[_0x8323('0x9')]=_0x216dc5[_0x8323('0xc')];_0x5ef9f4[_0x8323('0xd')]=_0x216dc5[_0x8323('0xd')];utils[_0x8323('0xe')](_0x8323('0xf'),_0x5ef9f4);}else{utils[_0x8323('0x10')](_0x5ef9f4['interface'][_0x8323('0x11')]('/')[0x1])[_0x8323('0x12')](function(_0x3c043a){if(_0x3c043a){_0x5ef9f4['membername']=_0x3c043a[_0x8323('0xc')];_0x5ef9f4[_0x8323('0xd')]=_0x3c043a[_0x8323('0xd')];utils[_0x8323('0xe')](_0x8323('0xf'),_0x5ef9f4);}});}})[_0x8323('0x13')](function(_0x325a18){utils[_0x8323('0x14')](util[_0x8323('0x5')](_0x8323('0x15'),_0x5ef9f4[_0x8323('0x7')]),_0x325a18);});}delete members[_0x5ef9f4[_0x8323('0xb')]];}function startsWith(_0x277363,_0x3505f6){return _['some'](_0x277363,function(_0x639383){return _[_0x8323('0x16')](_0x3505f6,_0x639383);});}exports['devicestatechange']=function(_0x320e7f){try{utils['debug'](util['format'](_0x8323('0x17'),members[_0x320e7f[_0x8323('0x18')]]?members[_0x320e7f[_0x8323('0x18')]][_0x8323('0x7')]:_0x320e7f[_0x8323('0x18')]),_0x320e7f);utils[_0x8323('0x4')](util['format'](_0x8323('0x19'),members[_0x320e7f['device']]?members[_0x320e7f[_0x8323('0x18')]][_0x8323('0x7')]:_0x320e7f[_0x8323('0x18')],_0x320e7f['state'],_0x320e7f[_0x8323('0x18')]));switch(_0x320e7f['state']){case'INUSE':case _0x8323('0x1a'):if(!startsWith(exclude,_0x320e7f[_0x8323('0x18')])){members[_0x320e7f[_0x8323('0x18')]]={'channel':'voice','interface':_0x320e7f['device'],'type':_0x8323('0x1b'),'enterAt':utils[_0x8323('0x1c')](),'role':_0x8323('0x1d')};}break;case _0x8323('0x1e'):if(!_[_0x8323('0x1f')](members[_0x320e7f[_0x8323('0x18')]])){members[_0x320e7f[_0x8323('0x18')]][_0x8323('0x20')]=utils[_0x8323('0x1c')]();members[_0x320e7f['device']][_0x8323('0x21')]=utils['diffTime'](members[_0x320e7f['device']]['exitAt'],members[_0x320e7f[_0x8323('0x18')]][_0x8323('0x22')]);if(members[_0x320e7f[_0x8323('0x18')]][_0x8323('0x7')]){writeDB(members[_0x320e7f['device']]);}}break;default:break;}}catch(_0x21273e){utils[_0x8323('0x14')](util['format'](_0x8323('0x17'),members[_0x320e7f[_0x8323('0x18')]]?members[_0x320e7f[_0x8323('0x18')]][_0x8323('0x7')]:_0x320e7f[_0x8323('0x18')]),_0x21273e);}};exports[_0x8323('0x23')]=function(_0x3db881){try{if(!_['isNil'](members[_0x3db881[_0x8323('0xb')]])){utils[_0x8323('0x24')](util['format'](_0x8323('0x25'),_0x3db881[_0x8323('0x7')]),_0x3db881);utils[_0x8323('0x4')](util[_0x8323('0x5')](_0x8323('0x26'),_0x3db881['uniqueid'],_0x3db881['interface'],_0x3db881['queue']));members[_0x3db881['interface']]=_[_0x8323('0x27')](members[_0x3db881[_0x8323('0xb')]],{'data4':_0x3db881[_0x8323('0x28')],'uniqueid':_0x3db881['uniqueid']});}}catch(_0x4c9269){utils[_0x8323('0x14')](util[_0x8323('0x5')](_0x8323('0x25'),_0x3db881[_0x8323('0x7')]),_0x4c9269);}};exports[_0x8323('0x29')]=function(_0x2a3b05){try{utils[_0x8323('0x24')](util['format'](_0x8323('0x2a'),_0x2a3b05[_0x8323('0x7')]),_0x2a3b05);if(_0x2a3b05['channel']){var _0x20a582=_0x2a3b05[_0x8323('0x2b')][_0x8323('0x11')]('-')[0x0];if(!_[_0x8323('0x1f')](members[_0x20a582])){members[_0x20a582]=_[_0x8323('0x27')](members[_0x20a582],{'data1':members[_0x20a582][_0x8323('0x2c')]||_0x2a3b05[_0x8323('0xa')],'data2':members[_0x20a582]['data2']||_0x2a3b05[_0x8323('0x2d')],'data3':members[_0x20a582][_0x8323('0x2e')]||_0x2a3b05[_0x8323('0x2f')],'uniqueid':members[_0x20a582][_0x8323('0x7')]||_0x2a3b05[_0x8323('0x7')]});utils['info'](util['format'](_0x8323('0x30'),_0x2a3b05[_0x8323('0x7')],members[_0x20a582][_0x8323('0x2c')],members[_0x20a582][_0x8323('0x8')],members[_0x20a582][_0x8323('0x2e')]));if(members[_0x20a582][_0x8323('0x20')]){writeDB(members[_0x20a582]);}}}if(_0x2a3b05['destinationchannel']){var _0x1ab996=_0x2a3b05[_0x8323('0x31')]['split']('-')[0x0];if(!_[_0x8323('0x1f')](members[_0x1ab996])){members[_0x1ab996]=_[_0x8323('0x27')](members[_0x1ab996],{'data1':members[_0x1ab996][_0x8323('0x2c')]||_0x2a3b05[_0x8323('0xa')],'data2':members[_0x1ab996][_0x8323('0x8')]||_0x2a3b05['source'],'data3':members[_0x1ab996]['data3']||_0x2a3b05[_0x8323('0x2f')],'uniqueid':members[_0x1ab996][_0x8323('0x7')]||_0x2a3b05['uniqueid']});utils[_0x8323('0x4')](util[_0x8323('0x5')](_0x8323('0x30'),_0x2a3b05[_0x8323('0x7')],members[_0x1ab996][_0x8323('0x2c')],members[_0x1ab996][_0x8323('0x8')],members[_0x1ab996][_0x8323('0x2e')]));if(members[_0x1ab996]['exitAt']){writeDB(members[_0x1ab996]);}}}}catch(_0x3d42db){utils[_0x8323('0x14')](util[_0x8323('0x5')](_0x8323('0x2a'),_0x2a3b05['uniqueid']),_0x3d42db);}};
\ No newline at end of file
index 14d21ff..a5c916c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3210=['[%s][queues][varset]','queuestatus','value','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','variable','queuecallerabandon','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','connectedlinename','queuecallerleaveAt','diffTime','queuecallerjoinAt','count','connectedlinenum','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','agentcomplete','[%s][queues][agentcomplete]','assigned','reason','transfer','TRANSFER','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','transfereeuniqueid','transfertype','BLIND','transferexten','extension','[%s][queues][blindtransfer]','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','ATTENDED','origtransfererexten','transfereelinkedid','clone','transfertargetuniqueid','calleridnum','calleridname','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','ATTENDEDTRANSFER','transfertargetlinkedid','holdtime','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][musiconholdstart]','musiconholdstop','[%s][queues][musiconholdstop]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','util','./utils','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','lastAssignedTo','accountcode','queuecallerexitreason','getVoiceQueueByName','queue','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','error','format','hangup','isNil','debug','queuecallerexit','queuecallercomplete','now','info','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','queuecallerenterreason','[%s][queues][hangup]','varset'];(function(_0x274063,_0x373368){var _0x261d25=function(_0x486b7c){while(--_0x486b7c){_0x274063['push'](_0x274063['shift']());}};_0x261d25(++_0x373368);}(_0x3210,0x1ce));var _0x0321=function(_0x1e3e9f,_0x5e5658){_0x1e3e9f=_0x1e3e9f-0x0;var _0x3bf4aa=_0x3210[_0x1e3e9f];return _0x3bf4aa;};'use strict';var _=require('lodash');var util=require(_0x0321('0x0'));var utils=require(_0x0321('0x1'));var queues={};function writeDB(_0x5259e7){utils['info'](util['format'](_0x0321('0x2'),_0x5259e7[_0x0321('0x3')],_0x5259e7[_0x0321('0x4')],_0x5259e7['queue'],_0x5259e7[_0x0321('0x5')],_0x5259e7['calleridnum'],_0x5259e7[_0x0321('0x6')],_0x5259e7[_0x0321('0x7')]));if(_0x5259e7['queue']){utils[_0x0321('0x8')](_0x5259e7[_0x0321('0x9')])[_0x0321('0xa')](function(_0x9f15c1){if(_0x9f15c1){_0x5259e7[_0x0321('0xb')]=_0x9f15c1[_0x0321('0xb')];}utils[_0x0321('0xc')](_0x0321('0xd'),_0x5259e7);});}else{utils['request'](_0x0321('0xd'),_0x5259e7);}if(_0x5259e7[_0x0321('0xe')]){delete queues[_0x5259e7['transfereduniqueid']];}else{delete queues[_0x5259e7[_0x0321('0x3')]];}}exports[_0x0321('0xf')]=function(_0x3d05c2){try{utils['debug'](util['format']('[%s][queues][queuecallerjoin]',_0x3d05c2[_0x0321('0x3')]),_0x3d05c2);utils['info'](util['format'](_0x0321('0x10'),_0x3d05c2['uniqueid'],_0x3d05c2[_0x0321('0x9')],_0x3d05c2[_0x0321('0x11')]));queues[_0x3d05c2['uniqueid']]=_[_0x0321('0x12')](_0x3d05c2,{'originalposition':_0x3d05c2[_0x0321('0x11')],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0x3a64bc){utils[_0x0321('0x13')](util[_0x0321('0x14')]('[%s][queues][queuecallerjoin]',_0x3d05c2[_0x0321('0x3')]),_0x3a64bc);}};exports[_0x0321('0x15')]=function(_0x521a29){try{if(!_[_0x0321('0x16')](queues[_0x521a29[_0x0321('0x3')]])){utils[_0x0321('0x17')](util['format']('[%s][queues][hangup]',_0x521a29[_0x0321('0x3')]),_0x521a29);if(queues[_0x521a29[_0x0321('0x3')]]['queuecallerleaveAt']){if(!queues[_0x521a29['uniqueid']]['queuecallerabandon']&&!queues[_0x521a29[_0x0321('0x3')]][_0x0321('0x18')]){queues[_0x521a29[_0x0321('0x3')]][_0x0321('0x19')]=!![];queues[_0x521a29['uniqueid']]['queuecallercompleteAt']=utils[_0x0321('0x1a')]();queues[_0x521a29[_0x0321('0x3')]][_0x0321('0x7')]='COMPLETEDBYAGENT';}utils[_0x0321('0x1b')](util['format']('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x521a29['uniqueid'],queues[_0x521a29[_0x0321('0x3')]]['name'],queues[_0x521a29['uniqueid']][_0x0321('0x7')]));writeDB(queues[_0x521a29[_0x0321('0x3')]]);}else if(queues[_0x521a29[_0x0321('0x3')]][_0x0321('0xe')]){utils[_0x0321('0x1b')](util[_0x0321('0x14')](_0x0321('0x1c'),_0x521a29[_0x0321('0x3')],queues[_0x521a29[_0x0321('0x3')]][_0x0321('0x1d')],queues[_0x521a29[_0x0321('0x3')]][_0x0321('0xe')]));queues[queues[_0x521a29['uniqueid']][_0x0321('0xe')]]=queues[_0x521a29['uniqueid']];queues[queues[_0x521a29[_0x0321('0x3')]][_0x0321('0xe')]][_0x0321('0x1e')]=0x2;delete queues[_0x521a29[_0x0321('0x3')]];}}}catch(_0xbd764a){utils[_0x0321('0x13')](util['format'](_0x0321('0x1f'),_0x521a29[_0x0321('0x3')]),_0xbd764a);}};exports[_0x0321('0x20')]=function(_0x417db2){try{utils[_0x0321('0x17')](util[_0x0321('0x14')](_0x0321('0x21'),_0x417db2['uniqueid']),_0x417db2);if(!_[_0x0321('0x16')](_0x417db2['variable'][_0x0321('0x22')])&&_0x417db2[_0x0321('0x23')][_0x0321('0x24')]()!==_0x0321('0x25')){if(!_['isNil'](queues[_0x417db2['uniqueid']])){queues[_0x417db2[_0x0321('0x3')]]['queuecallerabandon']=![];queues[_0x417db2['uniqueid']][_0x0321('0x26')]=null;queues[_0x417db2[_0x0321('0x3')]][_0x0321('0x18')]=!![];queues[_0x417db2[_0x0321('0x3')]][_0x0321('0x27')]=utils[_0x0321('0x1a')]();queues[_0x417db2[_0x0321('0x3')]][_0x0321('0x7')]=_0x417db2[_0x0321('0x23')][_0x0321('0x24')]();utils[_0x0321('0x1b')](util[_0x0321('0x14')](_0x0321('0x28'),_0x417db2['uniqueid'],queues[_0x417db2[_0x0321('0x3')]][_0x0321('0x1d')],_0x417db2[_0x0321('0x23')],queues[_0x417db2[_0x0321('0x3')]][_0x0321('0x7')]));writeDB(queues[_0x417db2['uniqueid']]);}}else if(!_[_0x0321('0x16')](_0x417db2[_0x0321('0x29')]['queueposition'])){if(!_[_0x0321('0x16')](queues[_0x417db2[_0x0321('0x3')]])&&!queues[_0x417db2['uniqueid']][_0x0321('0x2a')]){queues[_0x417db2[_0x0321('0x3')]][_0x0321('0x2a')]=![];queues[_0x417db2['uniqueid']]['queuecallerabandonAt']=null;queues[_0x417db2[_0x0321('0x3')]]['queuecallerexit']=!![];queues[_0x417db2[_0x0321('0x3')]]['queuecallerexitAt']=utils[_0x0321('0x1a')]();queues[_0x417db2[_0x0321('0x3')]][_0x0321('0x7')]=_0x0321('0x2b');utils[_0x0321('0x1b')](util[_0x0321('0x14')](_0x0321('0x2c'),_0x417db2['uniqueid'],queues[_0x417db2[_0x0321('0x3')]][_0x0321('0x1d')],_0x417db2['value'],queues[_0x417db2[_0x0321('0x3')]][_0x0321('0x7')]));}}}catch(_0x5bd36a){utils['error'](util['format']('[%s][queues][varset]',_0x417db2['uniqueid']),_0x5bd36a);}};exports['queuecallerabandon']=function(_0x43abfd){try{if(!_[_0x0321('0x16')](queues[_0x43abfd[_0x0321('0x3')]])){utils[_0x0321('0x17')](util[_0x0321('0x14')](_0x0321('0x2d'),_0x43abfd['uniqueid']),_0x43abfd);queues[_0x43abfd['uniqueid']][_0x0321('0x18')]=![];queues[_0x43abfd['uniqueid']]['queuecallerexitAt']=null;queues[_0x43abfd[_0x0321('0x3')]]['queuecallerabandon']=!![];queues[_0x43abfd['uniqueid']][_0x0321('0x26')]=utils[_0x0321('0x1a')]();queues[_0x43abfd[_0x0321('0x3')]][_0x0321('0x7')]=_0x0321('0x2e');utils[_0x0321('0x1b')](util[_0x0321('0x14')](_0x0321('0x2f'),_0x43abfd[_0x0321('0x3')],queues[_0x43abfd[_0x0321('0x3')]][_0x0321('0x1d')],queues[_0x43abfd[_0x0321('0x3')]][_0x0321('0x7')]));}}catch(_0x2b0079){utils[_0x0321('0x13')](util[_0x0321('0x14')](_0x0321('0x2d'),_0x43abfd[_0x0321('0x3')]),_0x2b0079);}};exports[_0x0321('0x30')]=function(_0xbcefe6){try{if(!_[_0x0321('0x16')](queues[_0xbcefe6[_0x0321('0x3')]])){utils[_0x0321('0x17')](util[_0x0321('0x14')](_0x0321('0x31'),_0xbcefe6[_0x0321('0x3')]),_0xbcefe6);utils[_0x0321('0x1b')](util[_0x0321('0x14')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0xbcefe6[_0x0321('0x3')],queues[_0xbcefe6[_0x0321('0x3')]][_0x0321('0x1d')],_0xbcefe6['connectedlinenum'],_0xbcefe6[_0x0321('0x32')]));queues[_0xbcefe6['uniqueid']][_0x0321('0x30')]=!![];queues[_0xbcefe6[_0x0321('0x3')]][_0x0321('0x33')]=utils[_0x0321('0x1a')]();queues[_0xbcefe6['uniqueid']]['holdtime']=utils[_0x0321('0x34')](queues[_0xbcefe6[_0x0321('0x3')]][_0x0321('0x33')],queues[_0xbcefe6[_0x0321('0x3')]][_0x0321('0x35')]);queues[_0xbcefe6[_0x0321('0x3')]]['position']=_0xbcefe6['position'];queues[_0xbcefe6[_0x0321('0x3')]][_0x0321('0x36')]=_0xbcefe6['count'];queues[_0xbcefe6['uniqueid']][_0x0321('0x37')]=_0xbcefe6['connectedlinenum'];queues[_0xbcefe6[_0x0321('0x3')]][_0x0321('0x32')]=_0xbcefe6[_0x0321('0x32')];}}catch(_0xdc08a3){utils[_0x0321('0x13')](util['format']('[%s][queues][queuecallerleave]',_0xbcefe6[_0x0321('0x3')]),_0xdc08a3);}};exports[_0x0321('0x38')]=function(_0x3d8a4a){try{if(!_[_0x0321('0x16')](queues[_0x3d8a4a['uniqueid']])){utils['debug'](util['format'](_0x0321('0x39'),_0x3d8a4a[_0x0321('0x3')]),_0x3d8a4a);utils[_0x0321('0x1b')](util['format'](_0x0321('0x3a'),_0x3d8a4a[_0x0321('0x3')],queues[_0x3d8a4a['uniqueid']]['name'],_0x3d8a4a[_0x0321('0x3b')],_0x3d8a4a['destaccountcode']));queues[_0x3d8a4a[_0x0321('0x3')]][_0x0321('0x2a')]=![];queues[_0x3d8a4a[_0x0321('0x3')]]['queuecallerabandon']=![];queues[_0x3d8a4a[_0x0321('0x3')]]['queuecallerabandonAt']=null;queues[_0x3d8a4a[_0x0321('0x3')]][_0x0321('0x18')]=![];queues[_0x3d8a4a[_0x0321('0x3')]]['queuecallerexitreason']=null;queues[_0x3d8a4a[_0x0321('0x3')]][_0x0321('0x27')]=null;queues[_0x3d8a4a[_0x0321('0x3')]]['assigned']=!![];queues[_0x3d8a4a[_0x0321('0x3')]][_0x0321('0x6')]=_0x3d8a4a['destaccountcode'];queues[_0x3d8a4a[_0x0321('0x3')]]['lastAssignedTo']=_0x3d8a4a['membername'];}}catch(_0x4034f0){utils['error'](util[_0x0321('0x14')](_0x0321('0x39'),_0x3d8a4a[_0x0321('0x3')]),_0x4034f0);}};exports[_0x0321('0x3c')]=function(_0x26fb0f){try{if(!_[_0x0321('0x16')](queues[_0x26fb0f['uniqueid']])){if(queues[_0x26fb0f[_0x0321('0x3')]]['queuecallerleaveAt']){utils[_0x0321('0x17')](util[_0x0321('0x14')](_0x0321('0x3d'),_0x26fb0f[_0x0321('0x3')]),_0x26fb0f);queues[_0x26fb0f[_0x0321('0x3')]][_0x0321('0x2a')]=![];queues[_0x26fb0f[_0x0321('0x3')]][_0x0321('0x2a')]=![];queues[_0x26fb0f[_0x0321('0x3')]][_0x0321('0x26')]=null;queues[_0x26fb0f['uniqueid']][_0x0321('0x18')]=![];queues[_0x26fb0f[_0x0321('0x3')]][_0x0321('0x27')]=null;queues[_0x26fb0f[_0x0321('0x3')]][_0x0321('0x3e')]=!![];queues[_0x26fb0f[_0x0321('0x3')]][_0x0321('0x5')]=_0x26fb0f['membername'];queues[_0x26fb0f['uniqueid']][_0x0321('0x19')]=!![];queues[_0x26fb0f[_0x0321('0x3')]]['queuecallercompleteAt']=utils[_0x0321('0x1a')]();if(_0x26fb0f[_0x0321('0x3f')]=='transfer'){if(!queues[_0x26fb0f[_0x0321('0x3')]][_0x0321('0x40')]){queues[_0x26fb0f['uniqueid']]['queuecallerexitreason']=_0x0321('0x41');}}else{queues[_0x26fb0f[_0x0321('0x3')]]['queuecallerexitreason']='COMPLETEDBY'+_0x26fb0f[_0x0321('0x3f')][_0x0321('0x24')]();}utils['info'](util[_0x0321('0x14')](_0x0321('0x42'),_0x26fb0f[_0x0321('0x3')],queues[_0x26fb0f[_0x0321('0x3')]][_0x0321('0x1d')],_0x26fb0f[_0x0321('0x3b')],queues[_0x26fb0f[_0x0321('0x3')]][_0x0321('0x7')]));writeDB(queues[_0x26fb0f['uniqueid']]);}}}catch(_0x26ed1b){utils[_0x0321('0x13')](util[_0x0321('0x14')](_0x0321('0x3d'),_0x26fb0f[_0x0321('0x3')]),_0x26ed1b);}};exports['blindtransfer']=function(_0x429ce9){try{if(!_[_0x0321('0x16')](queues[_0x429ce9[_0x0321('0x43')]])){utils[_0x0321('0x17')](util[_0x0321('0x14')]('[%s][queues][blindtransfer]',_0x429ce9[_0x0321('0x3')]),_0x429ce9);queues[_0x429ce9[_0x0321('0x43')]][_0x0321('0x40')]=!![];queues[_0x429ce9['transfereeuniqueid']][_0x0321('0x44')]=_0x0321('0x45');queues[_0x429ce9[_0x0321('0x43')]][_0x0321('0x46')]=_0x429ce9[_0x0321('0x47')];queues[_0x429ce9[_0x0321('0x43')]]['transferuniqueid']=_0x429ce9[_0x0321('0x43')];queues[_0x429ce9[_0x0321('0x43')]][_0x0321('0x7')]='BLINDTRANSFER';utils[_0x0321('0x1b')](util[_0x0321('0x14')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x429ce9[_0x0321('0x3')],queues[_0x429ce9[_0x0321('0x43')]]['name'],_0x429ce9[_0x0321('0x43')],_0x429ce9['extension']));}}catch(_0x31580f){utils[_0x0321('0x13')](util[_0x0321('0x14')](_0x0321('0x48'),_0x429ce9[_0x0321('0x3')]),_0x31580f);}};exports[_0x0321('0x49')]=function(_0x4c7b6f){try{utils[_0x0321('0x17')](util[_0x0321('0x14')](_0x0321('0x4a'),_0x4c7b6f[_0x0321('0x4b')]),_0x4c7b6f);if(_0x4c7b6f[_0x0321('0x4b')]==_0x4c7b6f[_0x0321('0x4c')]){if(!_['isNil'](queues[_0x4c7b6f['secondtransfererlinkedid']])){utils[_0x0321('0x1b')](util[_0x0321('0x14')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x4c7b6f[_0x0321('0x4b')],queues[_0x4c7b6f[_0x0321('0x4d')]][_0x0321('0x1d')],_0x4c7b6f['origtransfererexten']));queues[_0x4c7b6f['secondtransfererlinkedid']][_0x0321('0x40')]=!![];queues[_0x4c7b6f[_0x0321('0x4d')]]['transfertype']=_0x0321('0x4e');queues[_0x4c7b6f['secondtransfererlinkedid']][_0x0321('0x46')]=_0x4c7b6f[_0x0321('0x4f')];queues[_0x4c7b6f['secondtransfererlinkedid']]['transferuniqueid']=_0x4c7b6f['origtransfereruniqueid'];queues[_0x4c7b6f[_0x0321('0x4d')]][_0x0321('0x7')]='ATTENDEDTRANSFER';}if(!_[_0x0321('0x16')](queues[_0x4c7b6f[_0x0321('0x4c')]])){if(_0x4c7b6f[_0x0321('0x50')]&&queues[_0x4c7b6f[_0x0321('0x50')]]){queues[_0x4c7b6f[_0x0321('0x50')]]['queuecallerenterreason']=0x1;queues[_0x4c7b6f['transfereeuniqueid']]=_[_0x0321('0x51')](queues[_0x4c7b6f[_0x0321('0x50')]]);queues[_0x4c7b6f[_0x0321('0x43')]]['transfereduniqueid']=_0x4c7b6f[_0x0321('0x52')];queues[_0x4c7b6f[_0x0321('0x43')]][_0x0321('0x1e')]=0x2;queues[_0x4c7b6f[_0x0321('0x43')]][_0x0321('0x53')]=queues[_0x4c7b6f[_0x0321('0x4d')]]['calleridnum'];queues[_0x4c7b6f[_0x0321('0x43')]][_0x0321('0x54')]=queues[_0x4c7b6f[_0x0321('0x4d')]][_0x0321('0x54')];queues[_0x4c7b6f[_0x0321('0x43')]][_0x0321('0x35')]=utils[_0x0321('0x1a')]();queues[_0x4c7b6f[_0x0321('0x43')]][_0x0321('0x33')]=utils[_0x0321('0x1a')]();queues[_0x4c7b6f[_0x0321('0x43')]]['holdtime']=0x0;queues[_0x4c7b6f[_0x0321('0x43')]]['mohtime']=0x0;utils[_0x0321('0x1b')](util[_0x0321('0x14')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x4c7b6f['origtransfereruniqueid'],queues[_0x4c7b6f[_0x0321('0x43')]][_0x0321('0x1d')],queues[_0x4c7b6f['transfereeuniqueid']][_0x0321('0x53')],queues[_0x4c7b6f[_0x0321('0x43')]]['calleridname']));}else{utils[_0x0321('0x1b')](util[_0x0321('0x14')](_0x0321('0x55'),_0x4c7b6f[_0x0321('0x4b')],queues[_0x4c7b6f[_0x0321('0x4c')]][_0x0321('0x1d')],_0x4c7b6f[_0x0321('0x4d')]));queues[_0x4c7b6f[_0x0321('0x4c')]][_0x0321('0xe')]=_0x4c7b6f[_0x0321('0x4d')];}}}else if(_0x4c7b6f[_0x0321('0x56')]==_0x4c7b6f['secondtransfererlinkedid']){if(!_['isNil'](queues[_0x4c7b6f[_0x0321('0x4c')]])){utils[_0x0321('0x1b')](util[_0x0321('0x14')](_0x0321('0x57'),_0x4c7b6f[_0x0321('0x4b')],queues[_0x4c7b6f['origtransfererlinkedid']][_0x0321('0x1d')],_0x4c7b6f[_0x0321('0x56')],_0x4c7b6f[_0x0321('0x58')]));queues[_0x4c7b6f[_0x0321('0x4c')]]['transfer']=!![];queues[_0x4c7b6f[_0x0321('0x4c')]][_0x0321('0x44')]=_0x0321('0x4e');queues[_0x4c7b6f[_0x0321('0x4c')]][_0x0321('0x46')]=_0x4c7b6f[_0x0321('0x58')];queues[_0x4c7b6f['origtransfererlinkedid']]['transferuniqueid']=_0x4c7b6f['secondtransfereruniqueid'];queues[_0x4c7b6f[_0x0321('0x4c')]][_0x0321('0x7')]=_0x0321('0x59');}if(!_[_0x0321('0x16')](queues[_0x4c7b6f['secondtransfererlinkedid']])){if(_0x4c7b6f[_0x0321('0x5a')]&&queues[_0x4c7b6f[_0x0321('0x5a')]]){queues[_0x4c7b6f['transfertargetlinkedid']][_0x0321('0x1e')]=0x1;queues[_0x4c7b6f[_0x0321('0x52')]]=_[_0x0321('0x51')](queues[_0x4c7b6f[_0x0321('0x5a')]]);queues[_0x4c7b6f[_0x0321('0x52')]]['transfereduniqueid']=_0x4c7b6f[_0x0321('0x52')];queues[_0x4c7b6f['transfertargetuniqueid']][_0x0321('0x1e')]=0x2;queues[_0x4c7b6f[_0x0321('0x52')]][_0x0321('0x53')]=queues[_0x4c7b6f['origtransfererlinkedid']][_0x0321('0x53')];queues[_0x4c7b6f[_0x0321('0x52')]]['calleridname']=queues[_0x4c7b6f[_0x0321('0x4c')]][_0x0321('0x54')];queues[_0x4c7b6f['transfertargetuniqueid']][_0x0321('0x35')]=utils[_0x0321('0x1a')]();queues[_0x4c7b6f[_0x0321('0x52')]][_0x0321('0x33')]=utils[_0x0321('0x1a')]();queues[_0x4c7b6f[_0x0321('0x52')]][_0x0321('0x5b')]=0x0;queues[_0x4c7b6f[_0x0321('0x52')]][_0x0321('0x5c')]=0x0;utils[_0x0321('0x1b')](util[_0x0321('0x14')](_0x0321('0x5d'),_0x4c7b6f[_0x0321('0x4b')],queues[_0x4c7b6f['transfertargetuniqueid']][_0x0321('0x1d')],queues[_0x4c7b6f[_0x0321('0x52')]][_0x0321('0xe')],queues[_0x4c7b6f[_0x0321('0x52')]][_0x0321('0x53')],queues[_0x4c7b6f[_0x0321('0x52')]][_0x0321('0x54')]));}else{utils[_0x0321('0x1b')](util['format'](_0x0321('0x55'),_0x4c7b6f[_0x0321('0x4b')],queues[_0x4c7b6f[_0x0321('0x4d')]][_0x0321('0x1d')],_0x4c7b6f['origtransfererlinkedid']));queues[_0x4c7b6f[_0x0321('0x4d')]][_0x0321('0xe')]=_0x4c7b6f[_0x0321('0x4c')];}}}}catch(_0x231d6e){utils[_0x0321('0x13')](util[_0x0321('0x14')](_0x0321('0x4a'),_0x4c7b6f[_0x0321('0x4b')]),_0x231d6e);}};exports['musiconholdstart']=function(_0x389295){try{if(!_[_0x0321('0x16')](queues[_0x389295[_0x0321('0x3')]])){utils[_0x0321('0x17')](util[_0x0321('0x14')]('[%s][queues][musiconholdstart]',_0x389295[_0x0321('0x3')]),_0x389295);queues[_0x389295['uniqueid']]['musiconholdstartAt']=utils['now']();utils['info'](util[_0x0321('0x14')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x389295[_0x0321('0x3')],queues[_0x389295[_0x0321('0x3')]]['name'],queues[_0x389295[_0x0321('0x3')]]['musiconholdstartAt']));}}catch(_0x5e0af8){utils[_0x0321('0x13')](util[_0x0321('0x14')](_0x0321('0x5e'),_0x389295[_0x0321('0x3')]),_0x5e0af8);}};exports[_0x0321('0x5f')]=function(_0x2724a0){try{if(!_[_0x0321('0x16')](queues[_0x2724a0[_0x0321('0x3')]])){if(!_['isNil'](queues[_0x2724a0[_0x0321('0x3')]]['musiconholdstartAt'])){utils['debug'](util[_0x0321('0x14')](_0x0321('0x60'),_0x2724a0[_0x0321('0x3')]),_0x2724a0);queues[_0x2724a0[_0x0321('0x3')]][_0x0321('0x5c')]+=utils['diffTime'](utils[_0x0321('0x1a')](),queues[_0x2724a0[_0x0321('0x3')]][_0x0321('0x61')]);utils['info'](util['format'](_0x0321('0x62'),_0x2724a0[_0x0321('0x3')],queues[_0x2724a0[_0x0321('0x3')]][_0x0321('0x1d')],queues[_0x2724a0['uniqueid']][_0x0321('0x5c')]));delete queues[_0x2724a0[_0x0321('0x3')]][_0x0321('0x61')];}}}catch(_0x5b1e1a){utils[_0x0321('0x13')](util['format'](_0x0321('0x60'),_0x2724a0[_0x0321('0x3')]),_0x5b1e1a);}};
\ No newline at end of file
+var _0x16ae=['origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','origtransfererexten','ATTENDED','transfereelinkedid','clone','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfereruniqueid','secondtransfererexten','ATTENDEDTRANSFER','transfertargetlinkedid','transfertargetuniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','util','./utils','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','accountcode','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','format','[%s][queues][queuecallerjoin]','info','position','now','error','hangup','isNil','[%s][queues][hangup]','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallerexitreason','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','[%s][queues][varset]','variable','toUpperCase','CONTINUE','queuecallerabandonAt','value','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','queuecallerleaveAt','holdtime','diffTime','queuecallerjoinAt','count','connectedlinename','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','destaccountcode','lastAssignedTo','reason','transfer','TRANSFER','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','transfertype','BLIND','transferexten','extension','transferuniqueid','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][blindtransfer]','attendedtransfer','[%s][queues][attendedtransfer]'];(function(_0x2a53ad,_0x234135){var _0x31b3b6=function(_0x141ec6){while(--_0x141ec6){_0x2a53ad['push'](_0x2a53ad['shift']());}};_0x31b3b6(++_0x234135);}(_0x16ae,0x14d));var _0xe16a=function(_0x7a2877,_0x30db8a){_0x7a2877=_0x7a2877-0x0;var _0x60d19e=_0x16ae[_0x7a2877];return _0x60d19e;};'use strict';var _=require('lodash');var util=require(_0xe16a('0x0'));var utils=require(_0xe16a('0x1'));var queues={};function writeDB(_0x231cb5){utils['info'](util['format'](_0xe16a('0x2'),_0x231cb5[_0xe16a('0x3')],_0x231cb5[_0xe16a('0x4')],_0x231cb5[_0xe16a('0x5')],_0x231cb5['lastAssignedTo'],_0x231cb5['calleridnum'],_0x231cb5[_0xe16a('0x6')],_0x231cb5['queuecallerexitreason']));if(_0x231cb5[_0xe16a('0x5')]){utils[_0xe16a('0x7')](_0x231cb5['queue'])[_0xe16a('0x8')](function(_0x187914){if(_0x187914){_0x231cb5[_0xe16a('0x9')]=_0x187914[_0xe16a('0x9')];}utils[_0xe16a('0xa')]('CreateVoiceQueueReport',_0x231cb5);});}else{utils[_0xe16a('0xa')](_0xe16a('0xb'),_0x231cb5);}if(_0x231cb5['transfereduniqueid']){delete queues[_0x231cb5[_0xe16a('0xc')]];}else{delete queues[_0x231cb5[_0xe16a('0x3')]];}}exports[_0xe16a('0xd')]=function(_0x3efc41){try{utils[_0xe16a('0xe')](util[_0xe16a('0xf')](_0xe16a('0x10'),_0x3efc41['uniqueid']),_0x3efc41);utils[_0xe16a('0x11')](util[_0xe16a('0xf')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x3efc41[_0xe16a('0x3')],_0x3efc41[_0xe16a('0x5')],_0x3efc41[_0xe16a('0x12')]));queues[_0x3efc41[_0xe16a('0x3')]]=_['assign'](_0x3efc41,{'originalposition':_0x3efc41[_0xe16a('0x12')],'queuecallerjoinAt':utils[_0xe16a('0x13')](),'mohtime':0x0});}catch(_0x57c80a){utils[_0xe16a('0x14')](util[_0xe16a('0xf')](_0xe16a('0x10'),_0x3efc41[_0xe16a('0x3')]),_0x57c80a);}};exports[_0xe16a('0x15')]=function(_0x2eff76){try{if(!_[_0xe16a('0x16')](queues[_0x2eff76[_0xe16a('0x3')]])){utils['debug'](util[_0xe16a('0xf')](_0xe16a('0x17'),_0x2eff76[_0xe16a('0x3')]),_0x2eff76);if(queues[_0x2eff76[_0xe16a('0x3')]]['queuecallerleaveAt']){if(!queues[_0x2eff76[_0xe16a('0x3')]][_0xe16a('0x18')]&&!queues[_0x2eff76[_0xe16a('0x3')]][_0xe16a('0x19')]){queues[_0x2eff76['uniqueid']][_0xe16a('0x1a')]=!![];queues[_0x2eff76[_0xe16a('0x3')]]['queuecallercompleteAt']=utils[_0xe16a('0x13')]();queues[_0x2eff76[_0xe16a('0x3')]][_0xe16a('0x1b')]=_0xe16a('0x1c');}utils[_0xe16a('0x11')](util[_0xe16a('0xf')](_0xe16a('0x1d'),_0x2eff76['uniqueid'],queues[_0x2eff76[_0xe16a('0x3')]][_0xe16a('0x1e')],queues[_0x2eff76['uniqueid']][_0xe16a('0x1b')]));writeDB(queues[_0x2eff76[_0xe16a('0x3')]]);}else if(queues[_0x2eff76['uniqueid']]['transfereduniqueid']){utils[_0xe16a('0x11')](util[_0xe16a('0xf')](_0xe16a('0x1f'),_0x2eff76['uniqueid'],queues[_0x2eff76[_0xe16a('0x3')]][_0xe16a('0x1e')],queues[_0x2eff76[_0xe16a('0x3')]][_0xe16a('0xc')]));queues[queues[_0x2eff76['uniqueid']]['transfereduniqueid']]=queues[_0x2eff76[_0xe16a('0x3')]];queues[queues[_0x2eff76[_0xe16a('0x3')]][_0xe16a('0xc')]][_0xe16a('0x20')]=0x2;delete queues[_0x2eff76[_0xe16a('0x3')]];}}}catch(_0x49dfe1){utils[_0xe16a('0x14')](util['format'](_0xe16a('0x17'),_0x2eff76[_0xe16a('0x3')]),_0x49dfe1);}};exports[_0xe16a('0x21')]=function(_0x2f78cd){try{utils['debug'](util[_0xe16a('0xf')](_0xe16a('0x22'),_0x2f78cd[_0xe16a('0x3')]),_0x2f78cd);if(!_['isNil'](_0x2f78cd[_0xe16a('0x23')]['queuestatus'])&&_0x2f78cd['value'][_0xe16a('0x24')]()!==_0xe16a('0x25')){if(!_['isNil'](queues[_0x2f78cd[_0xe16a('0x3')]])){queues[_0x2f78cd[_0xe16a('0x3')]][_0xe16a('0x18')]=![];queues[_0x2f78cd[_0xe16a('0x3')]][_0xe16a('0x26')]=null;queues[_0x2f78cd[_0xe16a('0x3')]][_0xe16a('0x19')]=!![];queues[_0x2f78cd[_0xe16a('0x3')]]['queuecallerexitAt']=utils[_0xe16a('0x13')]();queues[_0x2f78cd['uniqueid']][_0xe16a('0x1b')]=_0x2f78cd[_0xe16a('0x27')][_0xe16a('0x24')]();utils['info'](util[_0xe16a('0xf')](_0xe16a('0x28'),_0x2f78cd[_0xe16a('0x3')],queues[_0x2f78cd[_0xe16a('0x3')]]['name'],_0x2f78cd[_0xe16a('0x27')],queues[_0x2f78cd[_0xe16a('0x3')]][_0xe16a('0x1b')]));writeDB(queues[_0x2f78cd[_0xe16a('0x3')]]);}}else if(!_[_0xe16a('0x16')](_0x2f78cd['variable'][_0xe16a('0x29')])){if(!_[_0xe16a('0x16')](queues[_0x2f78cd['uniqueid']])&&!queues[_0x2f78cd[_0xe16a('0x3')]][_0xe16a('0x18')]){queues[_0x2f78cd[_0xe16a('0x3')]][_0xe16a('0x18')]=![];queues[_0x2f78cd[_0xe16a('0x3')]][_0xe16a('0x26')]=null;queues[_0x2f78cd[_0xe16a('0x3')]]['queuecallerexit']=!![];queues[_0x2f78cd[_0xe16a('0x3')]][_0xe16a('0x2a')]=utils['now']();queues[_0x2f78cd['uniqueid']][_0xe16a('0x1b')]='EXITWITHKEY';utils[_0xe16a('0x11')](util[_0xe16a('0xf')](_0xe16a('0x2b'),_0x2f78cd[_0xe16a('0x3')],queues[_0x2f78cd[_0xe16a('0x3')]][_0xe16a('0x1e')],_0x2f78cd[_0xe16a('0x27')],queues[_0x2f78cd[_0xe16a('0x3')]][_0xe16a('0x1b')]));}}}catch(_0x3d2b03){utils['error'](util[_0xe16a('0xf')](_0xe16a('0x22'),_0x2f78cd[_0xe16a('0x3')]),_0x3d2b03);}};exports[_0xe16a('0x18')]=function(_0x3127c7){try{if(!_[_0xe16a('0x16')](queues[_0x3127c7[_0xe16a('0x3')]])){utils['debug'](util[_0xe16a('0xf')](_0xe16a('0x2c'),_0x3127c7['uniqueid']),_0x3127c7);queues[_0x3127c7[_0xe16a('0x3')]]['queuecallerexit']=![];queues[_0x3127c7['uniqueid']]['queuecallerexitAt']=null;queues[_0x3127c7[_0xe16a('0x3')]][_0xe16a('0x18')]=!![];queues[_0x3127c7['uniqueid']][_0xe16a('0x26')]=utils['now']();queues[_0x3127c7['uniqueid']][_0xe16a('0x1b')]=_0xe16a('0x2d');utils['info'](util[_0xe16a('0xf')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x3127c7[_0xe16a('0x3')],queues[_0x3127c7[_0xe16a('0x3')]][_0xe16a('0x1e')],queues[_0x3127c7[_0xe16a('0x3')]][_0xe16a('0x1b')]));}}catch(_0x52ff94){utils[_0xe16a('0x14')](util[_0xe16a('0xf')](_0xe16a('0x2c'),_0x3127c7['uniqueid']),_0x52ff94);}};exports[_0xe16a('0x2e')]=function(_0x14b09d){try{if(!_[_0xe16a('0x16')](queues[_0x14b09d['uniqueid']])){utils['debug'](util[_0xe16a('0xf')]('[%s][queues][queuecallerleave]',_0x14b09d[_0xe16a('0x3')]),_0x14b09d);utils['info'](util['format'](_0xe16a('0x2f'),_0x14b09d['uniqueid'],queues[_0x14b09d[_0xe16a('0x3')]][_0xe16a('0x1e')],_0x14b09d[_0xe16a('0x30')],_0x14b09d['connectedlinename']));queues[_0x14b09d[_0xe16a('0x3')]][_0xe16a('0x2e')]=!![];queues[_0x14b09d[_0xe16a('0x3')]][_0xe16a('0x31')]=utils['now']();queues[_0x14b09d['uniqueid']][_0xe16a('0x32')]=utils[_0xe16a('0x33')](queues[_0x14b09d[_0xe16a('0x3')]][_0xe16a('0x31')],queues[_0x14b09d[_0xe16a('0x3')]][_0xe16a('0x34')]);queues[_0x14b09d[_0xe16a('0x3')]][_0xe16a('0x12')]=_0x14b09d[_0xe16a('0x12')];queues[_0x14b09d[_0xe16a('0x3')]][_0xe16a('0x35')]=_0x14b09d[_0xe16a('0x35')];queues[_0x14b09d['uniqueid']][_0xe16a('0x30')]=_0x14b09d['connectedlinenum'];queues[_0x14b09d[_0xe16a('0x3')]][_0xe16a('0x36')]=_0x14b09d[_0xe16a('0x36')];}}catch(_0xa33038){utils[_0xe16a('0x14')](util[_0xe16a('0xf')](_0xe16a('0x37'),_0x14b09d[_0xe16a('0x3')]),_0xa33038);}};exports[_0xe16a('0x38')]=function(_0x5c0eb0){try{if(!_[_0xe16a('0x16')](queues[_0x5c0eb0[_0xe16a('0x3')]])){utils[_0xe16a('0xe')](util[_0xe16a('0xf')](_0xe16a('0x39'),_0x5c0eb0[_0xe16a('0x3')]),_0x5c0eb0);utils[_0xe16a('0x11')](util[_0xe16a('0xf')](_0xe16a('0x3a'),_0x5c0eb0[_0xe16a('0x3')],queues[_0x5c0eb0[_0xe16a('0x3')]][_0xe16a('0x1e')],_0x5c0eb0[_0xe16a('0x3b')],_0x5c0eb0['destaccountcode']));queues[_0x5c0eb0[_0xe16a('0x3')]][_0xe16a('0x18')]=![];queues[_0x5c0eb0[_0xe16a('0x3')]][_0xe16a('0x18')]=![];queues[_0x5c0eb0[_0xe16a('0x3')]]['queuecallerabandonAt']=null;queues[_0x5c0eb0[_0xe16a('0x3')]]['queuecallerexit']=![];queues[_0x5c0eb0['uniqueid']]['queuecallerexitreason']=null;queues[_0x5c0eb0[_0xe16a('0x3')]][_0xe16a('0x2a')]=null;queues[_0x5c0eb0[_0xe16a('0x3')]][_0xe16a('0x3c')]=!![];queues[_0x5c0eb0[_0xe16a('0x3')]][_0xe16a('0x6')]=_0x5c0eb0[_0xe16a('0x3d')];queues[_0x5c0eb0['uniqueid']][_0xe16a('0x3e')]=_0x5c0eb0['membername'];}}catch(_0x5c7d9d){utils[_0xe16a('0x14')](util['format'](_0xe16a('0x39'),_0x5c0eb0[_0xe16a('0x3')]),_0x5c7d9d);}};exports['agentcomplete']=function(_0x50332d){try{if(!_[_0xe16a('0x16')](queues[_0x50332d[_0xe16a('0x3')]])){if(queues[_0x50332d[_0xe16a('0x3')]][_0xe16a('0x31')]){utils['debug'](util[_0xe16a('0xf')]('[%s][queues][agentcomplete]',_0x50332d[_0xe16a('0x3')]),_0x50332d);queues[_0x50332d['uniqueid']][_0xe16a('0x18')]=![];queues[_0x50332d[_0xe16a('0x3')]][_0xe16a('0x18')]=![];queues[_0x50332d['uniqueid']][_0xe16a('0x26')]=null;queues[_0x50332d[_0xe16a('0x3')]][_0xe16a('0x19')]=![];queues[_0x50332d[_0xe16a('0x3')]][_0xe16a('0x2a')]=null;queues[_0x50332d[_0xe16a('0x3')]]['assigned']=!![];queues[_0x50332d['uniqueid']][_0xe16a('0x3e')]=_0x50332d[_0xe16a('0x3b')];queues[_0x50332d[_0xe16a('0x3')]]['queuecallercomplete']=!![];queues[_0x50332d['uniqueid']]['queuecallercompleteAt']=utils[_0xe16a('0x13')]();if(_0x50332d[_0xe16a('0x3f')]==_0xe16a('0x40')){if(!queues[_0x50332d[_0xe16a('0x3')]][_0xe16a('0x40')]){queues[_0x50332d[_0xe16a('0x3')]][_0xe16a('0x1b')]=_0xe16a('0x41');}}else{queues[_0x50332d['uniqueid']][_0xe16a('0x1b')]='COMPLETEDBY'+_0x50332d['reason'][_0xe16a('0x24')]();}utils[_0xe16a('0x11')](util[_0xe16a('0xf')](_0xe16a('0x42'),_0x50332d[_0xe16a('0x3')],queues[_0x50332d[_0xe16a('0x3')]]['name'],_0x50332d[_0xe16a('0x3b')],queues[_0x50332d[_0xe16a('0x3')]][_0xe16a('0x1b')]));writeDB(queues[_0x50332d['uniqueid']]);}}}catch(_0x507f13){utils[_0xe16a('0x14')](util['format'](_0xe16a('0x43'),_0x50332d[_0xe16a('0x3')]),_0x507f13);}};exports[_0xe16a('0x44')]=function(_0x509630){try{if(!_[_0xe16a('0x16')](queues[_0x509630[_0xe16a('0x45')]])){utils[_0xe16a('0xe')](util['format']('[%s][queues][blindtransfer]',_0x509630[_0xe16a('0x3')]),_0x509630);queues[_0x509630['transfereeuniqueid']][_0xe16a('0x40')]=!![];queues[_0x509630['transfereeuniqueid']][_0xe16a('0x46')]=_0xe16a('0x47');queues[_0x509630[_0xe16a('0x45')]][_0xe16a('0x48')]=_0x509630[_0xe16a('0x49')];queues[_0x509630[_0xe16a('0x45')]][_0xe16a('0x4a')]=_0x509630['transfereeuniqueid'];queues[_0x509630[_0xe16a('0x45')]][_0xe16a('0x1b')]='BLINDTRANSFER';utils[_0xe16a('0x11')](util['format'](_0xe16a('0x4b'),_0x509630[_0xe16a('0x3')],queues[_0x509630[_0xe16a('0x45')]]['name'],_0x509630[_0xe16a('0x45')],_0x509630[_0xe16a('0x49')]));}}catch(_0x4bdcae){utils[_0xe16a('0x14')](util[_0xe16a('0xf')](_0xe16a('0x4c'),_0x509630[_0xe16a('0x3')]),_0x4bdcae);}};exports[_0xe16a('0x4d')]=function(_0x1165a0){try{utils[_0xe16a('0xe')](util[_0xe16a('0xf')](_0xe16a('0x4e'),_0x1165a0[_0xe16a('0x4f')]),_0x1165a0);if(_0x1165a0['origtransfereruniqueid']==_0x1165a0[_0xe16a('0x50')]){if(!_[_0xe16a('0x16')](queues[_0x1165a0['secondtransfererlinkedid']])){utils[_0xe16a('0x11')](util[_0xe16a('0xf')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x1165a0['origtransfereruniqueid'],queues[_0x1165a0[_0xe16a('0x51')]][_0xe16a('0x1e')],_0x1165a0[_0xe16a('0x52')]));queues[_0x1165a0['secondtransfererlinkedid']][_0xe16a('0x40')]=!![];queues[_0x1165a0['secondtransfererlinkedid']][_0xe16a('0x46')]=_0xe16a('0x53');queues[_0x1165a0['secondtransfererlinkedid']]['transferexten']=_0x1165a0[_0xe16a('0x52')];queues[_0x1165a0[_0xe16a('0x51')]][_0xe16a('0x4a')]=_0x1165a0[_0xe16a('0x4f')];queues[_0x1165a0[_0xe16a('0x51')]][_0xe16a('0x1b')]='ATTENDEDTRANSFER';}if(!_[_0xe16a('0x16')](queues[_0x1165a0[_0xe16a('0x50')]])){if(_0x1165a0[_0xe16a('0x54')]&&queues[_0x1165a0['transfereelinkedid']]){queues[_0x1165a0[_0xe16a('0x54')]][_0xe16a('0x20')]=0x1;queues[_0x1165a0[_0xe16a('0x45')]]=_[_0xe16a('0x55')](queues[_0x1165a0['transfereelinkedid']]);queues[_0x1165a0[_0xe16a('0x45')]]['transfereduniqueid']=_0x1165a0['transfertargetuniqueid'];queues[_0x1165a0[_0xe16a('0x45')]]['queuecallerenterreason']=0x2;queues[_0x1165a0['transfereeuniqueid']][_0xe16a('0x56')]=queues[_0x1165a0['secondtransfererlinkedid']][_0xe16a('0x56')];queues[_0x1165a0[_0xe16a('0x45')]][_0xe16a('0x57')]=queues[_0x1165a0[_0xe16a('0x51')]][_0xe16a('0x57')];queues[_0x1165a0['transfereeuniqueid']][_0xe16a('0x34')]=utils[_0xe16a('0x13')]();queues[_0x1165a0[_0xe16a('0x45')]]['queuecallerleaveAt']=utils['now']();queues[_0x1165a0[_0xe16a('0x45')]][_0xe16a('0x32')]=0x0;queues[_0x1165a0[_0xe16a('0x45')]][_0xe16a('0x58')]=0x0;utils['info'](util[_0xe16a('0xf')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x1165a0['origtransfereruniqueid'],queues[_0x1165a0[_0xe16a('0x45')]][_0xe16a('0x1e')],queues[_0x1165a0[_0xe16a('0x45')]]['calleridnum'],queues[_0x1165a0[_0xe16a('0x45')]]['calleridname']));}else{utils['info'](util[_0xe16a('0xf')](_0xe16a('0x59'),_0x1165a0[_0xe16a('0x4f')],queues[_0x1165a0[_0xe16a('0x50')]][_0xe16a('0x1e')],_0x1165a0[_0xe16a('0x51')]));queues[_0x1165a0[_0xe16a('0x50')]][_0xe16a('0xc')]=_0x1165a0['secondtransfererlinkedid'];}}}else if(_0x1165a0['secondtransfereruniqueid']==_0x1165a0[_0xe16a('0x51')]){if(!_[_0xe16a('0x16')](queues[_0x1165a0[_0xe16a('0x50')]])){utils[_0xe16a('0x11')](util[_0xe16a('0xf')](_0xe16a('0x5a'),_0x1165a0['origtransfereruniqueid'],queues[_0x1165a0[_0xe16a('0x50')]][_0xe16a('0x1e')],_0x1165a0[_0xe16a('0x5b')],_0x1165a0[_0xe16a('0x5c')]));queues[_0x1165a0[_0xe16a('0x50')]][_0xe16a('0x40')]=!![];queues[_0x1165a0[_0xe16a('0x50')]][_0xe16a('0x46')]='ATTENDED';queues[_0x1165a0[_0xe16a('0x50')]][_0xe16a('0x48')]=_0x1165a0[_0xe16a('0x5c')];queues[_0x1165a0[_0xe16a('0x50')]]['transferuniqueid']=_0x1165a0[_0xe16a('0x5b')];queues[_0x1165a0['origtransfererlinkedid']][_0xe16a('0x1b')]=_0xe16a('0x5d');}if(!_[_0xe16a('0x16')](queues[_0x1165a0['secondtransfererlinkedid']])){if(_0x1165a0[_0xe16a('0x5e')]&&queues[_0x1165a0[_0xe16a('0x5e')]]){queues[_0x1165a0['transfertargetlinkedid']][_0xe16a('0x20')]=0x1;queues[_0x1165a0[_0xe16a('0x5f')]]=_[_0xe16a('0x55')](queues[_0x1165a0[_0xe16a('0x5e')]]);queues[_0x1165a0[_0xe16a('0x5f')]][_0xe16a('0xc')]=_0x1165a0[_0xe16a('0x5f')];queues[_0x1165a0['transfertargetuniqueid']][_0xe16a('0x20')]=0x2;queues[_0x1165a0[_0xe16a('0x5f')]][_0xe16a('0x56')]=queues[_0x1165a0[_0xe16a('0x50')]][_0xe16a('0x56')];queues[_0x1165a0[_0xe16a('0x5f')]][_0xe16a('0x57')]=queues[_0x1165a0[_0xe16a('0x50')]][_0xe16a('0x57')];queues[_0x1165a0[_0xe16a('0x5f')]][_0xe16a('0x34')]=utils[_0xe16a('0x13')]();queues[_0x1165a0[_0xe16a('0x5f')]][_0xe16a('0x31')]=utils[_0xe16a('0x13')]();queues[_0x1165a0['transfertargetuniqueid']]['holdtime']=0x0;queues[_0x1165a0[_0xe16a('0x5f')]][_0xe16a('0x58')]=0x0;utils[_0xe16a('0x11')](util['format'](_0xe16a('0x60'),_0x1165a0[_0xe16a('0x4f')],queues[_0x1165a0[_0xe16a('0x5f')]][_0xe16a('0x1e')],queues[_0x1165a0[_0xe16a('0x5f')]]['transfereduniqueid'],queues[_0x1165a0[_0xe16a('0x5f')]][_0xe16a('0x56')],queues[_0x1165a0[_0xe16a('0x5f')]]['calleridname']));}else{utils['info'](util[_0xe16a('0xf')](_0xe16a('0x59'),_0x1165a0['origtransfereruniqueid'],queues[_0x1165a0[_0xe16a('0x51')]][_0xe16a('0x1e')],_0x1165a0[_0xe16a('0x50')]));queues[_0x1165a0['secondtransfererlinkedid']][_0xe16a('0xc')]=_0x1165a0['origtransfererlinkedid'];}}}}catch(_0xc25d6e){utils[_0xe16a('0x14')](util[_0xe16a('0xf')]('[%s][queues][attendedtransfer]',_0x1165a0[_0xe16a('0x4f')]),_0xc25d6e);}};exports[_0xe16a('0x61')]=function(_0x2232f1){try{if(!_[_0xe16a('0x16')](queues[_0x2232f1[_0xe16a('0x3')]])){utils[_0xe16a('0xe')](util[_0xe16a('0xf')](_0xe16a('0x62'),_0x2232f1['uniqueid']),_0x2232f1);queues[_0x2232f1[_0xe16a('0x3')]][_0xe16a('0x63')]=utils[_0xe16a('0x13')]();utils[_0xe16a('0x11')](util[_0xe16a('0xf')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x2232f1[_0xe16a('0x3')],queues[_0x2232f1[_0xe16a('0x3')]][_0xe16a('0x1e')],queues[_0x2232f1[_0xe16a('0x3')]]['musiconholdstartAt']));}}catch(_0x2b9208){utils['error'](util[_0xe16a('0xf')](_0xe16a('0x62'),_0x2232f1[_0xe16a('0x3')]),_0x2b9208);}};exports[_0xe16a('0x64')]=function(_0x3f9e72){try{if(!_[_0xe16a('0x16')](queues[_0x3f9e72[_0xe16a('0x3')]])){if(!_[_0xe16a('0x16')](queues[_0x3f9e72[_0xe16a('0x3')]][_0xe16a('0x63')])){utils[_0xe16a('0xe')](util[_0xe16a('0xf')](_0xe16a('0x65'),_0x3f9e72[_0xe16a('0x3')]),_0x3f9e72);queues[_0x3f9e72[_0xe16a('0x3')]][_0xe16a('0x58')]+=utils['diffTime'](utils['now'](),queues[_0x3f9e72[_0xe16a('0x3')]][_0xe16a('0x63')]);utils['info'](util['format'](_0xe16a('0x66'),_0x3f9e72[_0xe16a('0x3')],queues[_0x3f9e72[_0xe16a('0x3')]][_0xe16a('0x1e')],queues[_0x3f9e72['uniqueid']][_0xe16a('0x58')]));delete queues[_0x3f9e72[_0xe16a('0x3')]][_0xe16a('0x63')];}}}catch(_0x2b6403){utils[_0xe16a('0x14')](util[_0xe16a('0xf')](_0xe16a('0x65'),_0x3f9e72[_0xe16a('0x3')]),_0x2b6403);}};
\ No newline at end of file
index ee8d636..7874b68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cff=['[%s][recordings][queuecallerjoin]','queue','lodash','info','format','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then','membername','name','CreateVoiceRecording','newchannel','debug','linkedid','context','exten','channel','[%s][recordings][newchannel]','[%s][recordings][newstate]','isNil','[%s][recordings][newstate]\x20context:%s\x20channel:%s','channelstate','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','value','.wav49','replace','.WAV','find','monitors','error','[%s][recordings][varset]','hangup','[%s][recordings][hangup]','calleridnum','cause-txt','calleridname','connectedlinenum','type','outbound','connectedlinename','forEach','clone','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','queuecallerjoin'];(function(_0x4247e5,_0x30b7bb){var _0x5ee3d5=function(_0x5056cd){while(--_0x5056cd){_0x4247e5['push'](_0x4247e5['shift']());}};_0x5ee3d5(++_0x30b7bb);}(_0x5cff,0x133));var _0xf5cf=function(_0x33f841,_0x2f5b6b){_0x33f841=_0x33f841-0x0;var _0x446e55=_0x5cff[_0x33f841];return _0x446e55;};'use strict';var _=require(_0xf5cf('0x0'));var util=require('util');var utils=require('./utils');var recordings={};function writeDB(_0x3400e6){utils[_0xf5cf('0x1')](util[_0xf5cf('0x2')](_0xf5cf('0x3'),_0x3400e6[_0xf5cf('0x4')]));if(_0x3400e6[_0xf5cf('0x5')]){utils[_0xf5cf('0x6')](_0x3400e6[_0xf5cf('0x5')])[_0xf5cf('0x7')](function(_0x8ea0ab){if(_0x8ea0ab){_0x3400e6[_0xf5cf('0x8')]=_0x8ea0ab[_0xf5cf('0x9')];_0x3400e6['UserId']=_0x8ea0ab['id'];}utils['request'](_0xf5cf('0xa'),_0x3400e6);});}else{utils['request']('CreateVoiceRecording',_0x3400e6);}}exports[_0xf5cf('0xb')]=function(_0x5278bb){try{utils[_0xf5cf('0xc')](util['format']('[%s][recordings][newchannel]',_0x5278bb[_0xf5cf('0x4')]),_0x5278bb);if(_0x5278bb[_0xf5cf('0x4')]==_0x5278bb[_0xf5cf('0xd')]){utils['info'](util[_0xf5cf('0x2')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x5278bb[_0xf5cf('0x4')],_0x5278bb[_0xf5cf('0xe')],_0x5278bb[_0xf5cf('0xf')]));recordings[_0x5278bb[_0xf5cf('0x4')]]={'uniqueid':_0x5278bb[_0xf5cf('0x4')],'accountcode':_0x5278bb[_0xf5cf('0x5')],'exten':_0x5278bb[_0xf5cf('0xf')],'context':_0x5278bb[_0xf5cf('0xe')],'channel':_0x5278bb[_0xf5cf('0x10')],'monitors':[]};}}catch(_0x17b075){utils['error'](util[_0xf5cf('0x2')](_0xf5cf('0x11'),_0x5278bb['uniqueid']),_0x17b075);}};exports['newstate']=function(_0x4ded65){try{utils[_0xf5cf('0xc')](util[_0xf5cf('0x2')](_0xf5cf('0x12'),_0x4ded65[_0xf5cf('0x4')]),_0x4ded65);if(!_[_0xf5cf('0x13')](recordings[_0x4ded65[_0xf5cf('0x4')]])&&_0x4ded65['channelstate']==0x6){utils[_0xf5cf('0x1')](util[_0xf5cf('0x2')](_0xf5cf('0x14'),_0x4ded65[_0xf5cf('0x4')],_0x4ded65[_0xf5cf('0xe')],_0x4ded65[_0xf5cf('0x10')]));}else if(!_[_0xf5cf('0x13')](recordings[_0x4ded65[_0xf5cf('0xd')]])&&_0x4ded65[_0xf5cf('0x15')]==0x6&&_0x4ded65[_0xf5cf('0xe')]!=_0xf5cf('0x16')){utils[_0xf5cf('0x1')](util[_0xf5cf('0x2')](_0xf5cf('0x17'),_0x4ded65['uniqueid'],_0x4ded65['linkedid'],_0x4ded65[_0xf5cf('0xe')],_0x4ded65[_0xf5cf('0x10')]));recordings[_0x4ded65[_0xf5cf('0xd')]][_0xf5cf('0x5')]=_0x4ded65[_0xf5cf('0x5')];}}catch(_0x5e8049){utils['error'](util[_0xf5cf('0x2')](_0xf5cf('0x12'),_0x4ded65[_0xf5cf('0x4')]),_0x5e8049);}};exports[_0xf5cf('0x18')]=function(_0x5a9784){try{if(!_[_0xf5cf('0x13')](_0x5a9784['variable'])&&!_['isNil'](_0x5a9784[_0xf5cf('0x19')][_0xf5cf('0x1a')])){utils['debug'](util[_0xf5cf('0x2')]('[%s][recordings][varset]',_0x5a9784['uniqueid']),_0x5a9784);utils[_0xf5cf('0x1')](util[_0xf5cf('0x2')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x5a9784[_0xf5cf('0x4')],_0x5a9784[_0xf5cf('0x19')],_0x5a9784[_0xf5cf('0x1b')]));if(_['endsWith'](_0x5a9784[_0xf5cf('0x1b')],_0xf5cf('0x1c'))){_0x5a9784[_0xf5cf('0x1b')]=_0x5a9784['value'][_0xf5cf('0x1d')](_0xf5cf('0x1c'),_0xf5cf('0x1e'));}if(recordings[_0x5a9784['linkedid']]){var _0x439c3a=_[_0xf5cf('0x1f')](recordings[_0x5a9784['linkedid']][_0xf5cf('0x20')],{'value':_0x5a9784['value']});if(_[_0xf5cf('0x13')](_0x439c3a)){recordings[_0x5a9784[_0xf5cf('0xd')]][_0xf5cf('0x20')]['push']({'value':_0x5a9784[_0xf5cf('0x1b')]});}}}}catch(_0x589f47){utils[_0xf5cf('0x21')](util[_0xf5cf('0x2')](_0xf5cf('0x22'),_0x5a9784[_0xf5cf('0x4')]),_0x589f47);}};exports[_0xf5cf('0x23')]=function(_0x1ee892){try{if(!_[_0xf5cf('0x13')](recordings[_0x1ee892[_0xf5cf('0x4')]])){utils[_0xf5cf('0xc')](util[_0xf5cf('0x2')](_0xf5cf('0x24'),_0x1ee892[_0xf5cf('0x4')]),_0x1ee892);utils[_0xf5cf('0x1')](util['format']('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x1ee892[_0xf5cf('0x4')],_0x1ee892[_0xf5cf('0x25')],_0x1ee892['calleridname'],_0x1ee892[_0xf5cf('0x26')]));recordings[_0x1ee892[_0xf5cf('0x4')]][_0xf5cf('0x25')]=_0x1ee892[_0xf5cf('0x25')];recordings[_0x1ee892[_0xf5cf('0x4')]][_0xf5cf('0x27')]=_0x1ee892[_0xf5cf('0x27')];recordings[_0x1ee892[_0xf5cf('0x4')]][_0xf5cf('0x28')]=_0x1ee892['connectedlinenum'];recordings[_0x1ee892[_0xf5cf('0x4')]]['connectedlinename']=_0x1ee892['connectedlinename'];if(recordings[_0x1ee892[_0xf5cf('0x4')]][_0xf5cf('0x29')]==_0xf5cf('0x2a')&&recordings[_0x1ee892[_0xf5cf('0x4')]][_0xf5cf('0x5')]){recordings[_0x1ee892[_0xf5cf('0x4')]][_0xf5cf('0x28')]=recordings[_0x1ee892[_0xf5cf('0x4')]][_0xf5cf('0x5')];recordings[_0x1ee892[_0xf5cf('0x4')]][_0xf5cf('0x2b')]='';}recordings[_0x1ee892['uniqueid']][_0xf5cf('0x20')][_0xf5cf('0x2c')](function(_0x385d0f){var _0xa3f8b=_[_0xf5cf('0x2d')](recordings[_0x1ee892[_0xf5cf('0x4')]]);_0xa3f8b[_0xf5cf('0x1b')]=_0x385d0f[_0xf5cf('0x1b')];writeDB(_0xa3f8b);});delete recordings[_0x1ee892[_0xf5cf('0x4')]];}}catch(_0x11b9c0){utils[_0xf5cf('0x21')](util['format'](_0xf5cf('0x24'),_0x1ee892['uniqueid']),_0x11b9c0);}};exports[_0xf5cf('0x2e')]=function(_0x2abdcb){try{if(!_[_0xf5cf('0x13')](recordings[_0x2abdcb[_0xf5cf('0x4')]])){utils['debug'](util[_0xf5cf('0x2')](_0xf5cf('0x2f'),_0x2abdcb[_0xf5cf('0x4')]),_0x2abdcb);utils['info'](util[_0xf5cf('0x2')](_0xf5cf('0x30'),_0x2abdcb[_0xf5cf('0x4')],_0x2abdcb[_0xf5cf('0x31')],_0x2abdcb[_0xf5cf('0x32')]));if(_0x2abdcb[_0xf5cf('0x31')][_0xf5cf('0x33')]()==_0xf5cf('0x34')&&_[_0xf5cf('0x35')](_0x2abdcb[_0xf5cf('0x32')][_0xf5cf('0x33')](),_0xf5cf('0x36'))){var _0x5f511a=_0x2abdcb[_0xf5cf('0x32')][_0xf5cf('0x37')]('=');var _0x42e42b=_0x5f511a[0x0][_0xf5cf('0x38')](_0x5f511a[0x0][_0xf5cf('0x39')]('(')+0x1,_0x5f511a[0x0][_0xf5cf('0x39')](')'));var _0x5ab191=_0x5f511a[0x1];recordings[_0x2abdcb[_0xf5cf('0x4')]][_0x42e42b]=_0x5ab191;}}}catch(_0x57d297){utils[_0xf5cf('0x21')](util['format'](_0xf5cf('0x2f'),_0x2abdcb[_0xf5cf('0x4')]),_0x57d297);}};exports[_0xf5cf('0x3a')]=function(_0x59aef8){try{if(!_['isNil'](recordings[_0x59aef8[_0xf5cf('0x4')]])){utils[_0xf5cf('0xc')](util[_0xf5cf('0x2')](_0xf5cf('0x3b'),_0x59aef8[_0xf5cf('0x4')]),_0x59aef8);utils[_0xf5cf('0x1')](util[_0xf5cf('0x2')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x59aef8[_0xf5cf('0x4')],_0x59aef8[_0xf5cf('0x3c')]));recordings[_0x59aef8[_0xf5cf('0x4')]][_0xf5cf('0x3c')]=_0x59aef8[_0xf5cf('0x3c')];}}catch(_0x4c0cb6){utils[_0xf5cf('0x21')](util['format'](_0xf5cf('0x3b'),_0x59aef8['uniqueid']),_0x4c0cb6);}};
\ No newline at end of file
+var _0x74fd=['CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','accountcode','channel','error','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','linkedid','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','monitors','push','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridname','calleridnum','connectedlinenum','connectedlinename','type','forEach','newexten','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','startsWith','toLowerCase','cdr','split','substring','lastIndexOf','[%s][recordings][newexten]','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','lodash','util','./utils','format','uniqueid','getUserByInternal','then','membername','name','UserId','request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x74fd,0x12b));var _0xd74f=function(_0x3ceb54,_0x5bddfd){_0x3ceb54=_0x3ceb54-0x0;var _0x26d8a6=_0x74fd[_0x3ceb54];return _0x26d8a6;};'use strict';var _=require(_0xd74f('0x0'));var util=require(_0xd74f('0x1'));var utils=require(_0xd74f('0x2'));var recordings={};function writeDB(_0x2d2953){utils['info'](util[_0xd74f('0x3')]('[%s][recordings][writeDB]',_0x2d2953[_0xd74f('0x4')]));if(_0x2d2953['accountcode']){utils[_0xd74f('0x5')](_0x2d2953['accountcode'])[_0xd74f('0x6')](function(_0x3323c2){if(_0x3323c2){_0x2d2953[_0xd74f('0x7')]=_0x3323c2[_0xd74f('0x8')];_0x2d2953[_0xd74f('0x9')]=_0x3323c2['id'];}utils[_0xd74f('0xa')](_0xd74f('0xb'),_0x2d2953);});}else{utils[_0xd74f('0xa')](_0xd74f('0xb'),_0x2d2953);}}exports[_0xd74f('0xc')]=function(_0x1d92a9){try{utils[_0xd74f('0xd')](util[_0xd74f('0x3')](_0xd74f('0xe'),_0x1d92a9[_0xd74f('0x4')]),_0x1d92a9);if(_0x1d92a9[_0xd74f('0x4')]==_0x1d92a9['linkedid']){utils[_0xd74f('0xf')](util[_0xd74f('0x3')](_0xd74f('0x10'),_0x1d92a9[_0xd74f('0x4')],_0x1d92a9[_0xd74f('0x11')],_0x1d92a9[_0xd74f('0x12')]));recordings[_0x1d92a9[_0xd74f('0x4')]]={'uniqueid':_0x1d92a9[_0xd74f('0x4')],'accountcode':_0x1d92a9[_0xd74f('0x13')],'exten':_0x1d92a9[_0xd74f('0x12')],'context':_0x1d92a9[_0xd74f('0x11')],'channel':_0x1d92a9[_0xd74f('0x14')],'monitors':[]};}}catch(_0x35fdba){utils[_0xd74f('0x15')](util[_0xd74f('0x3')](_0xd74f('0xe'),_0x1d92a9['uniqueid']),_0x35fdba);}};exports['newstate']=function(_0x4563ed){try{utils[_0xd74f('0xd')](util[_0xd74f('0x3')](_0xd74f('0x16'),_0x4563ed[_0xd74f('0x4')]),_0x4563ed);if(!_[_0xd74f('0x17')](recordings[_0x4563ed[_0xd74f('0x4')]])&&_0x4563ed[_0xd74f('0x18')]==0x6){utils['info'](util[_0xd74f('0x3')](_0xd74f('0x19'),_0x4563ed[_0xd74f('0x4')],_0x4563ed[_0xd74f('0x11')],_0x4563ed[_0xd74f('0x14')]));}else if(!_[_0xd74f('0x17')](recordings[_0x4563ed[_0xd74f('0x1a')]])&&_0x4563ed[_0xd74f('0x18')]==0x6&&_0x4563ed[_0xd74f('0x11')]!='transfer'){utils[_0xd74f('0xf')](util[_0xd74f('0x3')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x4563ed[_0xd74f('0x4')],_0x4563ed[_0xd74f('0x1a')],_0x4563ed['context'],_0x4563ed[_0xd74f('0x14')]));recordings[_0x4563ed[_0xd74f('0x1a')]][_0xd74f('0x13')]=_0x4563ed['accountcode'];}}catch(_0x201279){utils[_0xd74f('0x15')](util['format']('[%s][recordings][newstate]',_0x4563ed[_0xd74f('0x4')]),_0x201279);}};exports[_0xd74f('0x1b')]=function(_0x17338c){try{if(!_[_0xd74f('0x17')](_0x17338c['variable'])&&!_['isNil'](_0x17338c[_0xd74f('0x1c')][_0xd74f('0x1d')])){utils[_0xd74f('0xd')](util[_0xd74f('0x3')](_0xd74f('0x1e'),_0x17338c[_0xd74f('0x4')]),_0x17338c);utils[_0xd74f('0xf')](util[_0xd74f('0x3')](_0xd74f('0x1f'),_0x17338c[_0xd74f('0x4')],_0x17338c[_0xd74f('0x1c')],_0x17338c[_0xd74f('0x20')]));if(_[_0xd74f('0x21')](_0x17338c[_0xd74f('0x20')],_0xd74f('0x22'))){_0x17338c[_0xd74f('0x20')]=_0x17338c['value'][_0xd74f('0x23')](_0xd74f('0x22'),'.WAV');}if(recordings[_0x17338c['linkedid']]){var _0x5af685=_['find'](recordings[_0x17338c['linkedid']]['monitors'],{'value':_0x17338c['value']});if(_[_0xd74f('0x17')](_0x5af685)){recordings[_0x17338c[_0xd74f('0x1a')]][_0xd74f('0x24')][_0xd74f('0x25')]({'value':_0x17338c[_0xd74f('0x20')]});}}}}catch(_0x1ba704){utils[_0xd74f('0x15')](util[_0xd74f('0x3')]('[%s][recordings][varset]',_0x17338c[_0xd74f('0x4')]),_0x1ba704);}};exports['hangup']=function(_0x55e953){try{if(!_[_0xd74f('0x17')](recordings[_0x55e953[_0xd74f('0x4')]])){utils[_0xd74f('0xd')](util['format'](_0xd74f('0x26'),_0x55e953[_0xd74f('0x4')]),_0x55e953);utils[_0xd74f('0xf')](util[_0xd74f('0x3')](_0xd74f('0x27'),_0x55e953['uniqueid'],_0x55e953['calleridnum'],_0x55e953[_0xd74f('0x28')],_0x55e953['cause-txt']));recordings[_0x55e953['uniqueid']][_0xd74f('0x29')]=_0x55e953['calleridnum'];recordings[_0x55e953[_0xd74f('0x4')]][_0xd74f('0x28')]=_0x55e953[_0xd74f('0x28')];recordings[_0x55e953[_0xd74f('0x4')]][_0xd74f('0x2a')]=_0x55e953['connectedlinenum'];recordings[_0x55e953['uniqueid']][_0xd74f('0x2b')]=_0x55e953[_0xd74f('0x2b')];if(recordings[_0x55e953[_0xd74f('0x4')]][_0xd74f('0x2c')]=='outbound'&&recordings[_0x55e953['uniqueid']][_0xd74f('0x13')]){recordings[_0x55e953[_0xd74f('0x4')]][_0xd74f('0x2a')]=recordings[_0x55e953['uniqueid']][_0xd74f('0x13')];recordings[_0x55e953['uniqueid']][_0xd74f('0x2b')]='';}recordings[_0x55e953[_0xd74f('0x4')]]['monitors'][_0xd74f('0x2d')](function(_0x82e607){var _0x1315bb=_['clone'](recordings[_0x55e953[_0xd74f('0x4')]]);_0x1315bb[_0xd74f('0x20')]=_0x82e607[_0xd74f('0x20')];writeDB(_0x1315bb);});delete recordings[_0x55e953[_0xd74f('0x4')]];}}catch(_0x2f2807){utils['error'](util[_0xd74f('0x3')](_0xd74f('0x26'),_0x55e953[_0xd74f('0x4')]),_0x2f2807);}};exports[_0xd74f('0x2e')]=function(_0x2db1bf){try{if(!_[_0xd74f('0x17')](recordings[_0x2db1bf[_0xd74f('0x4')]])){utils[_0xd74f('0xd')](util[_0xd74f('0x3')]('[%s][recordings][newexten]',_0x2db1bf[_0xd74f('0x4')]),_0x2db1bf);utils['info'](util[_0xd74f('0x3')](_0xd74f('0x2f'),_0x2db1bf['uniqueid'],_0x2db1bf[_0xd74f('0x30')],_0x2db1bf[_0xd74f('0x31')]));if(_0x2db1bf['application']['toLowerCase']()==_0xd74f('0x32')&&_[_0xd74f('0x33')](_0x2db1bf[_0xd74f('0x31')][_0xd74f('0x34')](),_0xd74f('0x35'))){var _0x4c6430=_0x2db1bf[_0xd74f('0x31')][_0xd74f('0x36')]('=');var _0x5160a4=_0x4c6430[0x0][_0xd74f('0x37')](_0x4c6430[0x0][_0xd74f('0x38')]('(')+0x1,_0x4c6430[0x0][_0xd74f('0x38')](')'));var _0x4522ad=_0x4c6430[0x1];recordings[_0x2db1bf[_0xd74f('0x4')]][_0x5160a4]=_0x4522ad;}}}catch(_0x24f5a8){utils['error'](util[_0xd74f('0x3')](_0xd74f('0x39'),_0x2db1bf['uniqueid']),_0x24f5a8);}};exports[_0xd74f('0x3a')]=function(_0x4a7458){try{if(!_[_0xd74f('0x17')](recordings[_0x4a7458[_0xd74f('0x4')]])){utils['debug'](util[_0xd74f('0x3')](_0xd74f('0x3b'),_0x4a7458['uniqueid']),_0x4a7458);utils[_0xd74f('0xf')](util[_0xd74f('0x3')](_0xd74f('0x3c'),_0x4a7458[_0xd74f('0x4')],_0x4a7458[_0xd74f('0x3d')]));recordings[_0x4a7458[_0xd74f('0x4')]][_0xd74f('0x3d')]=_0x4a7458[_0xd74f('0x3d')];}}catch(_0x3e7ec9){utils[_0xd74f('0x15')](util['format']('[%s][recordings][queuecallerjoin]',_0x4a7458[_0xd74f('0x4')]),_0x3e7ec9);}};
\ No newline at end of file
index 956a7dc..4f6e02a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfee7=['[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','assign','secondtransfererconnectedlinenum','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','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','transferercalleridname','transfereecalleridnum','blind','transfereruniqueid','error','debug'];(function(_0x26bbba,_0x5480d5){var _0x5d9aad=function(_0x149887){while(--_0x149887){_0x26bbba['push'](_0x26bbba['shift']());}};_0x5d9aad(++_0x5480d5);}(_0xfee7,0x1bf));var _0x7fee=function(_0x55d2fd,_0x4ab1bf){_0x55d2fd=_0x55d2fd-0x0;var _0x48a013=_0xfee7[_0x55d2fd];return _0x48a013;};'use strict';var _=require(_0x7fee('0x0'));var util=require(_0x7fee('0x1'));var utils=require('./utils');function writeDB(_0x3bac59){utils[_0x7fee('0x2')](util[_0x7fee('0x3')](_0x7fee('0x4'),_0x3bac59[_0x7fee('0x5')]===_0x7fee('0x6')?_0x3bac59[_0x7fee('0x7')]:_0x3bac59['uniqueid'],_0x3bac59[_0x7fee('0x5')]));utils[_0x7fee('0x8')](_0x7fee('0x9'),_0x3bac59);}exports[_0x7fee('0xa')]={};exports['blindtransfer']=function(_0x10aeb2){try{utils['debug'](util[_0x7fee('0x3')](_0x7fee('0xb'),_0x10aeb2[_0x7fee('0xc')]),_0x10aeb2);utils[_0x7fee('0x2')](util[_0x7fee('0x3')](_0x7fee('0xd'),_0x10aeb2[_0x7fee('0xc')],_0x10aeb2[_0x7fee('0xe')],_0x10aeb2[_0x7fee('0xf')],_0x10aeb2[_0x7fee('0x10')],_0x10aeb2['transfereecalleridname']));_0x10aeb2[_0x7fee('0x5')]=_0x7fee('0x11');exports['blinds'][_0x10aeb2[_0x7fee('0x12')]]=_0x10aeb2;writeDB(_0x10aeb2);}catch(_0x1de45b){utils[_0x7fee('0x13')](util[_0x7fee('0x3')](_0x7fee('0xb'),_0x10aeb2[_0x7fee('0xc')]),_0x1de45b);}};exports['attendedtransfer']=function(_0x26815c){try{utils[_0x7fee('0x14')](util['format'](_0x7fee('0x15'),_0x26815c[_0x7fee('0x7')]),_0x26815c);utils[_0x7fee('0x2')](util[_0x7fee('0x3')](_0x7fee('0x16'),_0x26815c['origtransfereruniqueid'],_0x26815c[_0x7fee('0x17')],_0x26815c[_0x7fee('0x18')],_0x26815c[_0x7fee('0x19')],_0x26815c['transfertargetcalleridname']));_0x26815c=_[_0x7fee('0x1a')](_0x26815c,{'transfererchannel':_0x26815c['origtransfererchannel'],'transferercalleridnum':_0x26815c[_0x7fee('0x17')],'transferercalleridname':_0x26815c[_0x7fee('0x18')],'transfererconnectedlinenum':_0x26815c[_0x7fee('0x1b')],'transfererconnectedlinename':_0x26815c['secondtransfererconnectedlinename'],'transfereraccountcode':_0x26815c['origtransfereraccountcode'],'transferercontext':_0x26815c[_0x7fee('0x1c')],'transfererexten':_0x26815c[_0x7fee('0x1d')],'transfererlinkedid':_0x26815c[_0x7fee('0x1e')],'context':_0x26815c[_0x7fee('0x1f')],'extension':_0x26815c[_0x7fee('0x20')],'type':_0x7fee('0x6')});if(_['isNil'](_0x26815c['transfereechannel'])){_0x26815c=_['assign'](_0x26815c,{'transfereechannel':_0x26815c[_0x7fee('0x21')],'transfereecalleridnum':_0x26815c['transfertargetcalleridnum'],'transfereecalleridname':_0x26815c['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x26815c[_0x7fee('0x22')],'transfereeconnectedlinename':_0x26815c[_0x7fee('0x23')],'transfereeaccountcode':_0x26815c['transfertargetaccountcode'],'transfereecontext':_0x26815c[_0x7fee('0x24')],'transfereeexten':_0x26815c[_0x7fee('0x25')],'transfereelinkedid':_0x26815c[_0x7fee('0x26')]});}writeDB(_0x26815c);}catch(_0x379edc){utils[_0x7fee('0x13')](util[_0x7fee('0x3')](_0x7fee('0x15'),_0x26815c[_0x7fee('0x7')]),_0x379edc);}};
\ No newline at end of file
+var _0x8ef0=['blindtransfer','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','error','attendedtransfer','debug','[%s][transfers][attendedtransfer]','origtransfereruniqueid','info','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransferercontext','origtransfererexten','attended','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','util','./utils','format','[%s][transfers][writeDB]\x20type:%s','type','uniqueid','blinds'];(function(_0x221a72,_0x4c437f){var _0x1b269d=function(_0x4c39ac){while(--_0x4c39ac){_0x221a72['push'](_0x221a72['shift']());}};_0x1b269d(++_0x4c437f);}(_0x8ef0,0x8c));var _0x08ef=function(_0x1203d7,_0x41c078){_0x1203d7=_0x1203d7-0x0;var _0x3af28b=_0x8ef0[_0x1203d7];return _0x3af28b;};'use strict';var _=require(_0x08ef('0x0'));var util=require(_0x08ef('0x1'));var utils=require(_0x08ef('0x2'));function writeDB(_0x2b3680){utils['info'](util[_0x08ef('0x3')](_0x08ef('0x4'),_0x2b3680[_0x08ef('0x5')]==='attended'?_0x2b3680['origtransfereruniqueid']:_0x2b3680[_0x08ef('0x6')],_0x2b3680[_0x08ef('0x5')]));utils['request']('CreateVoiceTransferReport',_0x2b3680);}exports[_0x08ef('0x7')]={};exports[_0x08ef('0x8')]=function(_0x37a63f){try{utils['debug'](util['format'](_0x08ef('0x9'),_0x37a63f[_0x08ef('0x6')]),_0x37a63f);utils['info'](util[_0x08ef('0x3')](_0x08ef('0xa'),_0x37a63f['uniqueid'],_0x37a63f[_0x08ef('0xb')],_0x37a63f[_0x08ef('0xc')],_0x37a63f[_0x08ef('0xd')],_0x37a63f['transfereecalleridname']));_0x37a63f['type']='blind';exports[_0x08ef('0x7')][_0x37a63f['transfereruniqueid']]=_0x37a63f;writeDB(_0x37a63f);}catch(_0xdf50d8){utils[_0x08ef('0xe')](util[_0x08ef('0x3')](_0x08ef('0x9'),_0x37a63f[_0x08ef('0x6')]),_0xdf50d8);}};exports[_0x08ef('0xf')]=function(_0x3ee9f1){try{utils[_0x08ef('0x10')](util['format'](_0x08ef('0x11'),_0x3ee9f1[_0x08ef('0x12')]),_0x3ee9f1);utils[_0x08ef('0x13')](util['format'](_0x08ef('0x14'),_0x3ee9f1[_0x08ef('0x12')],_0x3ee9f1[_0x08ef('0x15')],_0x3ee9f1[_0x08ef('0x16')],_0x3ee9f1[_0x08ef('0x17')],_0x3ee9f1['transfertargetcalleridname']));_0x3ee9f1=_['assign'](_0x3ee9f1,{'transfererchannel':_0x3ee9f1[_0x08ef('0x18')],'transferercalleridnum':_0x3ee9f1[_0x08ef('0x15')],'transferercalleridname':_0x3ee9f1['origtransferercalleridname'],'transfererconnectedlinenum':_0x3ee9f1[_0x08ef('0x19')],'transfererconnectedlinename':_0x3ee9f1[_0x08ef('0x1a')],'transfereraccountcode':_0x3ee9f1['origtransfereraccountcode'],'transferercontext':_0x3ee9f1[_0x08ef('0x1b')],'transfererexten':_0x3ee9f1[_0x08ef('0x1c')],'transfererlinkedid':_0x3ee9f1['origtransfererlinkedid'],'context':_0x3ee9f1[_0x08ef('0x1d')],'extension':_0x3ee9f1[_0x08ef('0x1e')],'type':_0x08ef('0x1f')});if(_['isNil'](_0x3ee9f1['transfereechannel'])){_0x3ee9f1=_['assign'](_0x3ee9f1,{'transfereechannel':_0x3ee9f1['transfertargetchannel'],'transfereecalleridnum':_0x3ee9f1[_0x08ef('0x17')],'transfereecalleridname':_0x3ee9f1[_0x08ef('0x20')],'transfereeconnectedlinenum':_0x3ee9f1[_0x08ef('0x21')],'transfereeconnectedlinename':_0x3ee9f1['transfertargetconnectedlinename'],'transfereeaccountcode':_0x3ee9f1['transfertargetaccountcode'],'transfereecontext':_0x3ee9f1[_0x08ef('0x22')],'transfereeexten':_0x3ee9f1[_0x08ef('0x23')],'transfereelinkedid':_0x3ee9f1[_0x08ef('0x24')]});}writeDB(_0x3ee9f1);}catch(_0x1a3060){utils['error'](util['format'](_0x08ef('0x11'),_0x3ee9f1[_0x08ef('0x12')]),_0x1a3060);}};
\ No newline at end of file
index 2f2bb81..e12edf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d5a=['type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','length','addTime','add','seconds','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','format','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','http','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','internal','name','[utils][getUser]\x20where:%s','stringify','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','catch','[utils][getUserByInternal]','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue'];(function(_0x53d729,_0x1a2198){var _0x568f90=function(_0x48bd5b){while(--_0x48bd5b){_0x53d729['push'](_0x53d729['shift']());}};_0x568f90(++_0x1a2198);}(_0x8d5a,0x9f));var _0xa8d5=function(_0x468b0f,_0x408566){_0x468b0f=_0x468b0f-0x0;var _0x3e74d9=_0x8d5a[_0x468b0f];return _0x3e74d9;};'use strict';var BPromise=require(_0xa8d5('0x0'));var jayson=require(_0xa8d5('0x1'));var moment=require(_0xa8d5('0x2'));var util=require(_0xa8d5('0x3'));var client=jayson['client'][_0xa8d5('0x4')]({'port':0x2329});var logger=require('../../config/logger')('xdr');exports['info']=function(_0x12caf6,_0x7ec367){logger[_0xa8d5('0x5')](_0x12caf6,_0x7ec367?util[_0xa8d5('0x6')](_0x7ec367,{'showHidden':![],'depth':null}):'');};exports[_0xa8d5('0x7')]=function(_0x10fce4,_0x3858cc){logger[_0xa8d5('0x7')](_0x10fce4,_0x3858cc?util[_0xa8d5('0x6')](_0x3858cc,{'showHidden':![],'depth':null}):'');};exports[_0xa8d5('0x8')]=function(_0x31f4ba,_0x269d2c){logger[_0xa8d5('0x8')](_0x31f4ba,_0x269d2c?util[_0xa8d5('0x6')](_0x269d2c,{'showHidden':![],'depth':null}):'');};exports[_0xa8d5('0x9')]=function(_0x471e83,_0x47938f){return client[_0xa8d5('0x9')](_0x471e83,{'body':_0x47938f})[_0xa8d5('0xa')](function(_0x566020){logger[_0xa8d5('0x7')](_0xa8d5('0xb'),_0x471e83,_0x566020?util[_0xa8d5('0x6')](_0x566020,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x4c960b){logger[_0xa8d5('0x8')]('[utils][request]\x20name:%s',_0x471e83,_0x4c960b?util[_0xa8d5('0x6')](_0x4c960b,{'showHidden':![],'depth':null}):'');});};function getUser(_0xa4afa1){return client['request']('GetUser',{'options':{'raw':!![],'attributes':['id',_0xa8d5('0xc'),_0xa8d5('0xd'),'interface'],'where':_0xa4afa1,'limit':0x1}})[_0xa8d5('0xa')](function(_0x4fcb29){logger['debug'](_0xa8d5('0xe'),JSON[_0xa8d5('0xf')](_0xa4afa1),_0x4fcb29?util[_0xa8d5('0x6')](_0x4fcb29,{'showHidden':![],'depth':null}):'');return _0x4fcb29[_0xa8d5('0x10')]['length']?_0x4fcb29['result'][0x0]:null;});}exports[_0xa8d5('0x11')]=function(_0xd11cf0){return new BPromise(function(_0x109d9d,_0x37da48){if(_0xd11cf0){return getUser({'internal':_0xd11cf0})['then'](function(_0xef1bbd){logger['info'](_0xa8d5('0x12'),_0xd11cf0,_0xef1bbd?_0xa8d5('0x13'):_0xa8d5('0x14'));return _0x109d9d(_0xef1bbd);})[_0xa8d5('0x15')](function(_0x28b45c){logger['error'](_0xa8d5('0x16'),_0x28b45c?util[_0xa8d5('0x6')](_0x28b45c,{'showHidden':![],'depth':null}):'');return _0x109d9d(null);});}return _0x109d9d(null);});};exports['getUserByInterface']=function(_0x61ea2b){return new BPromise(function(_0x29fe80,_0x4e81e2){if(_0x61ea2b){return getUser({'interface':_0x61ea2b})[_0xa8d5('0xa')](function(_0x43fecd){logger[_0xa8d5('0x5')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x61ea2b,_0x43fecd?'found':_0xa8d5('0x14'));return _0x29fe80(_0x43fecd);})[_0xa8d5('0x15')](function(_0x242433){logger['error'](_0xa8d5('0x17'),_0x242433?util[_0xa8d5('0x6')](_0x242433,{'showHidden':![],'depth':null}):'');return _0x29fe80(null);});}return _0x29fe80(null);});};exports[_0xa8d5('0x18')]=function(_0x33d6f4){return new BPromise(function(_0x4ae549,_0x502095){if(_0x33d6f4){return getUser({'name':_0x33d6f4})[_0xa8d5('0xa')](function(_0x759fe8){logger[_0xa8d5('0x5')](_0xa8d5('0x19'),_0x33d6f4,_0x759fe8?_0xa8d5('0x13'):_0xa8d5('0x14'));return _0x4ae549(_0x759fe8);})['catch'](function(_0x2a429b){logger[_0xa8d5('0x8')](_0xa8d5('0x1a'),_0x2a429b?util[_0xa8d5('0x6')](_0x2a429b,{'showHidden':![],'depth':null}):'');return _0x4ae549(null);});}return _0x4ae549(null);});};exports[_0xa8d5('0x1b')]=function(_0x4e792f){return new BPromise(function(_0x13fcb3,_0x467055){if(_0x4e792f){return client[_0xa8d5('0x9')](_0xa8d5('0x1c'),{'options':{'raw':!![],'attributes':['id',_0xa8d5('0xd'),_0xa8d5('0x1d'),'acw',_0xa8d5('0x1e')],'where':{'name':_0x4e792f},'limit':0x1}})['then'](function(_0x160b68){logger[_0xa8d5('0x7')](_0xa8d5('0x1f'),_0x4e792f,_0x160b68?util['inspect'](_0x160b68,{'showHidden':![],'depth':null}):'');logger[_0xa8d5('0x5')](_0xa8d5('0x20'),_0x4e792f,_0x160b68?_0xa8d5('0x13'):_0xa8d5('0x14'));return _0x13fcb3(_0x160b68[_0xa8d5('0x10')][_0xa8d5('0x21')]?_0x160b68[_0xa8d5('0x10')][0x0]:null);})['catch'](function(_0x45cb69){logger[_0xa8d5('0x8')]('[utils][getVoiceQueueByName]',_0x45cb69?util['inspect'](_0x45cb69,{'showHidden':![],'depth':null}):'');return _0x13fcb3(null);});}return _0x13fcb3(null);});};exports[_0xa8d5('0x22')]=function(_0x459592,_0xbbfe00){return moment(_0x459592)[_0xa8d5('0x23')](_0xbbfe00,_0xa8d5('0x24'))['format'](_0xa8d5('0x25'));};exports[_0xa8d5('0x26')]=function(_0x347d5c,_0x7662de){return moment(_0x347d5c)[_0xa8d5('0x27')](_0x7662de,_0xa8d5('0x24'))[_0xa8d5('0x28')](_0xa8d5('0x25'));};exports[_0xa8d5('0x29')]=function(_0x3da44f,_0x5dafba){return moment(_0x3da44f)[_0xa8d5('0x2a')](moment(_0x5dafba),_0xa8d5('0x24'));};exports[_0xa8d5('0x2b')]=function(_0x2fa7ca,_0x8ad1ca){return parseInt(_0x2fa7ca,0xa)+parseInt(_0x8ad1ca,0xa);};exports[_0xa8d5('0x2c')]=function(){return moment()['format'](_0xa8d5('0x25'));};exports[_0xa8d5('0x2d')]=function(_0x6fac6b,_0x3cefbe){if(_0x3cefbe){return moment(_0x6fac6b)[_0xa8d5('0x2d')](_0x3cefbe);}return!![];};exports[_0xa8d5('0x2e')]=function(_0x1e3f4a,_0x4ba45c){if(_0x4ba45c){return moment(_0x1e3f4a)[_0xa8d5('0x2e')](_0x4ba45c);}else if(_0x1e3f4a){return!![];}return![];};
\ No newline at end of file
+var _0xabe7=['catch','error','GetUser','interface','[utils][getUser]\x20where:%s','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInterface]\x20interface:%s\x20%s','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','name','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','length','[utils][getVoiceQueueByName]','add','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','seconds','diffTime','now','isAfter','bluebird','jayson/promise','moment','client','../../config/logger','xdr','info','inspect','debug','request','then','[utils][request]\x20name:%s'];(function(_0x54d4fe,_0x55e869){var _0x1ab5bb=function(_0x5b1af2){while(--_0x5b1af2){_0x54d4fe['push'](_0x54d4fe['shift']());}};_0x1ab5bb(++_0x55e869);}(_0xabe7,0xc6));var _0x7abe=function(_0x2ab6fb,_0x5b2098){_0x2ab6fb=_0x2ab6fb-0x0;var _0x346591=_0xabe7[_0x2ab6fb];return _0x346591;};'use strict';var BPromise=require(_0x7abe('0x0'));var jayson=require(_0x7abe('0x1'));var moment=require(_0x7abe('0x2'));var util=require('util');var client=jayson[_0x7abe('0x3')]['http']({'port':0x2329});var logger=require(_0x7abe('0x4'))(_0x7abe('0x5'));exports[_0x7abe('0x6')]=function(_0x4b4c13,_0x1fedff){logger['info'](_0x4b4c13,_0x1fedff?util[_0x7abe('0x7')](_0x1fedff,{'showHidden':![],'depth':null}):'');};exports[_0x7abe('0x8')]=function(_0x245638,_0x33a0fe){logger[_0x7abe('0x8')](_0x245638,_0x33a0fe?util[_0x7abe('0x7')](_0x33a0fe,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x5e4182,_0x49945f){logger['error'](_0x5e4182,_0x49945f?util[_0x7abe('0x7')](_0x49945f,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x297de7,_0x18068e){return client[_0x7abe('0x9')](_0x297de7,{'body':_0x18068e})[_0x7abe('0xa')](function(_0x381795){logger['debug'](_0x7abe('0xb'),_0x297de7,_0x381795?util['inspect'](_0x381795,{'showHidden':![],'depth':null}):'');})[_0x7abe('0xc')](function(_0x40ebfd){logger[_0x7abe('0xd')]('[utils][request]\x20name:%s',_0x297de7,_0x40ebfd?util[_0x7abe('0x7')](_0x40ebfd,{'showHidden':![],'depth':null}):'');});};function getUser(_0x2ad225){return client[_0x7abe('0x9')](_0x7abe('0xe'),{'options':{'raw':!![],'attributes':['id','internal','name',_0x7abe('0xf')],'where':_0x2ad225,'limit':0x1}})['then'](function(_0x41b4cd){logger[_0x7abe('0x8')](_0x7abe('0x10'),JSON['stringify'](_0x2ad225),_0x41b4cd?util[_0x7abe('0x7')](_0x41b4cd,{'showHidden':![],'depth':null}):'');return _0x41b4cd['result']['length']?_0x41b4cd[_0x7abe('0x11')][0x0]:null;});}exports[_0x7abe('0x12')]=function(_0x2a623c){return new BPromise(function(_0x40952d,_0x4693bd){if(_0x2a623c){return getUser({'internal':_0x2a623c})[_0x7abe('0xa')](function(_0x1ce9a8){logger['info'](_0x7abe('0x13'),_0x2a623c,_0x1ce9a8?_0x7abe('0x14'):_0x7abe('0x15'));return _0x40952d(_0x1ce9a8);})[_0x7abe('0xc')](function(_0x55c5ef){logger['error']('[utils][getUserByInternal]',_0x55c5ef?util[_0x7abe('0x7')](_0x55c5ef,{'showHidden':![],'depth':null}):'');return _0x40952d(null);});}return _0x40952d(null);});};exports['getUserByInterface']=function(_0xbc8dec){return new BPromise(function(_0x22a2c9,_0x59f197){if(_0xbc8dec){return getUser({'interface':_0xbc8dec})[_0x7abe('0xa')](function(_0xb6403f){logger[_0x7abe('0x6')](_0x7abe('0x16'),_0xbc8dec,_0xb6403f?_0x7abe('0x14'):_0x7abe('0x15'));return _0x22a2c9(_0xb6403f);})[_0x7abe('0xc')](function(_0x2b1c5d){logger[_0x7abe('0xd')]('[utils][getUserByInterface]',_0x2b1c5d?util['inspect'](_0x2b1c5d,{'showHidden':![],'depth':null}):'');return _0x22a2c9(null);});}return _0x22a2c9(null);});};exports[_0x7abe('0x17')]=function(_0xbead9f){return new BPromise(function(_0x11b032,_0x53e308){if(_0xbead9f){return getUser({'name':_0xbead9f})[_0x7abe('0xa')](function(_0x50b06f){logger[_0x7abe('0x6')](_0x7abe('0x18'),_0xbead9f,_0x50b06f?_0x7abe('0x14'):_0x7abe('0x15'));return _0x11b032(_0x50b06f);})[_0x7abe('0xc')](function(_0x5506fc){logger[_0x7abe('0xd')](_0x7abe('0x19'),_0x5506fc?util['inspect'](_0x5506fc,{'showHidden':![],'depth':null}):'');return _0x11b032(null);});}return _0x11b032(null);});};exports[_0x7abe('0x1a')]=function(_0x1c39d3){return new BPromise(function(_0x9709e9,_0xbb0388){if(_0x1c39d3){return client[_0x7abe('0x9')]('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id',_0x7abe('0x1b'),_0x7abe('0x1c'),_0x7abe('0x1d'),_0x7abe('0x1e')],'where':{'name':_0x1c39d3},'limit':0x1}})[_0x7abe('0xa')](function(_0x8a15e6){logger[_0x7abe('0x8')](_0x7abe('0x1f'),_0x1c39d3,_0x8a15e6?util['inspect'](_0x8a15e6,{'showHidden':![],'depth':null}):'');logger[_0x7abe('0x6')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x1c39d3,_0x8a15e6?_0x7abe('0x14'):'notfound');return _0x9709e9(_0x8a15e6[_0x7abe('0x11')][_0x7abe('0x20')]?_0x8a15e6['result'][0x0]:null);})[_0x7abe('0xc')](function(_0x32e30c){logger[_0x7abe('0xd')](_0x7abe('0x21'),_0x32e30c?util[_0x7abe('0x7')](_0x32e30c,{'showHidden':![],'depth':null}):'');return _0x9709e9(null);});}return _0x9709e9(null);});};exports['addTime']=function(_0x5384b7,_0x436ed0){return moment(_0x5384b7)[_0x7abe('0x22')](_0x436ed0,'seconds')['format'](_0x7abe('0x23'));};exports[_0x7abe('0x24')]=function(_0x26aac4,_0x2face2){return moment(_0x26aac4)[_0x7abe('0x25')](_0x2face2,_0x7abe('0x26'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x7abe('0x27')]=function(_0x2846b0,_0x1ca29e){return moment(_0x2846b0)['diff'](moment(_0x1ca29e),_0x7abe('0x26'));};exports['sumTime']=function(_0x207087,_0x3e4df4){return parseInt(_0x207087,0xa)+parseInt(_0x3e4df4,0xa);};exports[_0x7abe('0x28')]=function(){return moment()['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x7abe('0x29')]=function(_0x1a0aff,_0x3ca782){if(_0x3ca782){return moment(_0x1a0aff)[_0x7abe('0x29')](_0x3ca782);}return!![];};exports['isBefore']=function(_0x2567cb,_0x444a65){if(_0x444a65){return moment(_0x2567cb)['isBefore'](_0x444a65);}else if(_0x2567cb){return!![];}return![];};
\ No newline at end of file